fix: [js:bootstrap-helper] Make sure button exists

pull/40/head
mokaddem 2021-03-10 09:24:39 +01:00
parent 008c674f4d
commit 8f1a17142b
1 changed files with 29 additions and 26 deletions

View File

@ -48,6 +48,7 @@ class UIFactory {
/** /**
* Creates and displays a modal where the modal's content is fetched from the provided URL. Reloads the table after a successful operation and handles displayOnSuccess option * Creates and displays a modal where the modal's content is fetched from the provided URL. Reloads the table after a successful operation and handles displayOnSuccess option
* @param {string} url - The URL from which the modal's content should be fetched * @param {string} url - The URL from which the modal's content should be fetched
* @param {string} reloadUrl - The URL from which the data should be fetched after confirming
* @param {string} tableId - The table ID which should be reloaded on success * @param {string} tableId - The table ID which should be reloaded on success
* @return {Promise<Object>} Promise object resolving to the ModalFactory object * @return {Promise<Object>} Promise object resolving to the ModalFactory object
*/ */
@ -588,33 +589,35 @@ class ModalFactory {
/** Attach the submission click listener for modals that have been generated by raw HTML */ /** Attach the submission click listener for modals that have been generated by raw HTML */
findSubmitButtonAndAddListener(clearOnclick=true) { findSubmitButtonAndAddListener(clearOnclick=true) {
const $submitButton = this.$modal.find('.modal-footer #submitButton') const $submitButton = this.$modal.find('.modal-footer #submitButton')
const formID = $submitButton.data('form-id') if ($submitButton[0]) {
let $form const formID = $submitButton.data('form-id')
if (formID) { let $form
$form = $(formID) if (formID) {
} else { $form = $(formID)
$form = this.$modal.find('form') } else {
} $form = this.$modal.find('form')
if (clearOnclick) { }
$submitButton[0].removeAttribute('onclick') if (clearOnclick) {
} $submitButton[0].removeAttribute('onclick')
}
this.options.APIConfirm = (tmpApi) => { this.options.APIConfirm = (tmpApi) => {
return tmpApi.postForm($form[0]) return tmpApi.postForm($form[0])
.then((data) => { .then((data) => {
if (data.success) { if (data.success) {
this.options.POSTSuccessCallback(data) this.options.POSTSuccessCallback(data)
} else { // Validation error } else { // Validation error
this.injectFormValidationFeedback(form, data.errors) this.injectFormValidationFeedback(form, data.errors)
return Promise.reject('Validation error'); return Promise.reject('Validation error');
} }
}) })
.catch((errorMessage) => { .catch((errorMessage) => {
this.options.POSTFailCallback(errorMessage) this.options.POSTFailCallback(errorMessage)
return Promise.reject(errorMessage); return Promise.reject(errorMessage);
}) })
}
$submitButton.click(this.getConfirmationHandlerFunction())
} }
$submitButton.click(this.getConfirmationHandlerFunction())
} }
} }