Browse Source

Add `form` validation for `doctrines#modal_form`

pull/106/head
alexdbondoc17 4 years ago
parent
commit
ed3fd52c8f
  1. 9
      app/components/doctrine_modal_form_component/doctrine_modal_form_component.html.erb
  2. 15
      app/javascript/controllers/doctrines_controller.js

9
app/components/doctrine_modal_form_component/doctrine_modal_form_component.html.erb

@ -11,7 +11,8 @@
<label for="subject-name" class="col-form-label"> Subjects </label>
<%= hidden_field_tag :document_id, nil, data: { target: "doctrines.document_id" } %>
<%= hidden_field_tag :doctrine_id, nil, data: { target: "doctrines.doctrine_id" } %>
<select class="form-control subject-ids-selectize ps-0" name="subject_ids[]" id="subject_ids_" multiple="true"> </select>
<select class="form-control subject-ids-selectize ps-0" name="subject_ids[]" id="subject_ids_" multiple="true" required> </select>
<div class="invalid-feedback" id="subjects-blank-message"> Subject/s cannot be blank. </div>
</div>
<div class="mb-3" id="doctine_content_suggestions_div">
@ -21,12 +22,14 @@
<div class="mb-3">
<label for="subject-name" class="col-form-label">Head Note</label>
<%= text_field_tag :headnote, nil, class: "form-control", placeholder: "Head note", data: { target: "doctrines.headnote" } %>
<%= text_field_tag :headnote, nil, class: "form-control", placeholder: "Head note", required: true, data: { target: "doctrines.headnote" } %>
<div class="invalid-feedback" id="headnote-blank-message"> Headnote cannot be blank. </div>
</div>
<div class="mb-3">
<label for="subject-name" class="col-form-label">Content</label>
<%= rich_text_area_tag :content, nil, placeholder: "Doctrine Content", data: { target: "doctrines.content" } %>
<%= rich_text_area_tag :content, nil, placeholder: "Doctrine Content", required: true, data: { target: "doctrines.content" } %>
<div class="invalid-feedback" id="content-blank-message"> Content cannot be blank. </div>
</div>
</div>
<div class="modal-footer">

15
app/javascript/controllers/doctrines_controller.js

@ -53,6 +53,20 @@ export default class extends ApplicationController {
var params = { subject_ids: $modal.find("select[name='subject_ids[]']").val(), headnote: this.headnoteTarget.value,
content: this.contentTarget.value }
if (!params.subject_ids.length) {
$("#subjects-blank-message").show()
}
if (!params.headnote.length) {
$("#headnote-blank-message").show()
}
if (!params.content.length) {
$("#content-blank-message").show()
}
if (params.subject_ids.length && params.headnote.length && params.content.length) {
if (doctrine_id !== null && doctrine_id !== undefined && doctrine_id !== "") {
$.ajax({
url: "/api/doctrines/" + doctrine_id,
@ -70,6 +84,7 @@ export default class extends ApplicationController {
})
}
}
}
delete(ev) {
var doctrine_id = this.element.dataset["doctrineId"], document_id = this.element.dataset["documentId"]

Loading…
Cancel
Save