{"version":3,"sources":["modal-helper.js"],"names":["disableButtons","e","console","log","form","$","this","data","btns","valid","attr","removeAttr","checkIfModalHasAnUploadZoneAndInit","modal","find","autoInit","Space1","UI","uploaderSas","Util","UploadZone","checkModalInputStatus","submitButton","checkModal","disableStatusCheckFor","on","setTimeout","atLeastOneEditableInput","length","foundSelectorAgainstValidation","some","selectorAgainstValidation","id","isModalInputCheckable","prop","dirty","preventLeaving","options","backdrop","keyboard","off","escape","one","preventDefault","submit","globalModalLoadAnimation","document","ready","resizeModalLoadAnimation","loadAnim","modalContentHeight","height","vars","$container","style","modalInit","eventTrigger","$modal","selectpicker","each","hasAttribute","validator","unobtrusive","parse","bind","Modal","initFullscreenButtons","colorPicker","newFactory","initTooltips","vTabs","initListeners","Tabs","initAnchorNavigation","initScrollableTabs","DateTimePicker","newPicker","addModalToStack","videoPlayer","pauseAll","remove","hasClass","stop","start","addClass","removeClass","stopImmediatePropagation","removeModalFromStack","removeData","undefined","destroy","summernote","children"],"mappings":"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","file":"modal-helper.min.js","sourcesContent":["Space1.UI.globalModalLoadAnimation = null;\nSpace1.UI.uploaderSas = null;\n$(document).ready(function () {\n function resizeModalLoadAnimation(modal, loadAnim) {\n const $modal = $(modal);\n const modalContentHeight = $modal.find('.modal-content').height();\n loadAnim.vars.$container[0].style.height = modalContentHeight + 'px';\n }\n\n function modalInit(modal, eventTrigger) {\n const $modal = $(modal);\n\n $('.selectpicker').selectpicker();\n\n $(\"form\").each(function () {\n if (!this.hasAttribute('novalidate')) {\n $.validator.unobtrusive.parse($(this));\n $(this).bind(\"submit\", disableButtons);\n }\n });\n\n //upload-zone\n checkIfModalHasAnUploadZoneAndInit(modal);\n\n Space1.UI.Modal.initFullscreenButtons(modal);\n\n Space1.UI.colorPicker.newFactory('.sp-color-picker');\n\n Space1.UI.initTooltips();\n\n Space1.UI.vTabs.initListeners();\n Space1.UI.Tabs.initAnchorNavigation();\n Space1.UI.Tabs.initScrollableTabs();\n\n Space1.UI.DateTimePicker.newPicker(`#${$modal.attr('id')} [data-datetime-input]`, $modal[0]);\n Space1.UI.DateTimePicker.newPicker(`#${$modal.attr('id')} input[type=time]`, $modal[0]);\n //Space1.UI.initDateTimePicker('#' + $modal.attr('id') +' input[type=date]', $modal[0]);\n }\n\n $(\".modal\").on('show.bs.modal', function (e) {\n let modal = this;\n let $modal = $(modal);\n\n Space1.UI.Modal.addModalToStack($(this).attr(\"id\"));\n\n Space1.UI.videoPlayer.pauseAll();\n\n $modal.find(\".modal-dialog .overlay-loader\").remove();\n\n if (!$modal.hasClass('js-no-load-animation')) {\n Space1.UI.globalModalLoadAnimation.start();\n } else {\n Space1.UI.globalModalLoadAnimation.stop();\n }\n\n }).on('loaded.bs.modal', function (e) {\n modalInit(this, e);\n Space1.UI.globalModalLoadAnimation.stop();\n resizeModalLoadAnimation(this, Space1.UI.globalModalLoadAnimation);\n\n Space1.UI.globalModalLoadAnimation.vars.$container.on('progress', () => {\n $(this).addClass('not-closable', false);\n });\n\n Space1.UI.globalModalLoadAnimation.vars.$container.on('start', () => {\n resizeModalLoadAnimation(this, Space1.UI.globalModalLoadAnimation);\n });\n\n Space1.UI.globalModalLoadAnimation.vars.$container.on('stop', () => {\n $(this).removeClass('not-closable');\n });\n\n }).on('reloaded.bs.modal', function (e) {\n modalInit(this, e);\n\n }).on('hide.bs.modal', function (e) {\n if ($(this).hasClass('not-closable')) {\n e.preventDefault();\n e.stopImmediatePropagation();\n } else {\n Space1.UI.Modal.removeModalFromStack($(this).attr(\"id\"));\n $(this).find('.bootstrap-select.open').find('.selectpicker').selectpicker('toggle');\n }\n }).on('hidden.bs.modal', function (e) {\n\n if (!$(this).hasClass('js-disable-modal-destroy')) {\n $(this).removeData('bs.modal');\n if (Space1.UI.globalModalLoadAnimation !== undefined && Space1.UI.globalModalLoadAnimation !== null) {\n Space1.UI.globalModalLoadAnimation.destroy();\n }\n setTimeout(() => {\n $(this).find('.summernote').summernote('destroy');\n $(this).find('.modal-content:not(.js-modal-content)').children().remove();\n }, 100);\n\n $(this).find(\"*\").off();\n }\n\n Space1.UI.videoPlayer.pauseAll();\n\n if (Space1.UI.uploaderSas != null) {\n Space1.UI.uploaderSas.destroy();\n Space1.UI.uploaderSas = null;\n }\n });\n});\n\nfunction disableButtons(e) {\n console.log(e);\n const form = $(this);\n if (form.data(\"uploadzone\"))\n return;\n\n const btns = $(\"button:submit\", form);\n\n if (!form.valid()) {\n // allow user to correct validation errors and re-submit\n btns.removeAttr(\"disabled\");\n } else {\n btns.attr(\"disabled\", \"disabled\");\n }\n}\n\n/**\n * If Modal Has UploadZone data attribute =true\n * Init the upload-zone helper\n *\n * @param {any} modal\n */\nfunction checkIfModalHasAnUploadZoneAndInit(modal) {\n const form = $(modal).find(\"form\");\n const autoInit = $(form).data(\"uploadzoneAutoInit\");\n\n if ($(form).data(\"uploadzone\") == true && autoInit != false) {\n Space1.UI.uploaderSas = new Space1.Util.UploadZone({\n form: form[0]\n });\n }\n}\n\n/* Check if input has changed inside modals\n* Enable submit button only when there's a change in the inputs\n* */\nfunction checkModalInputStatus(modal) {\n let submitButton, form, checkModal;\n\n /* add to this list selectors of elements that should disable the input checking */\n const disableStatusCheckFor = [\n \"#additional-fields-form\",\n \".no-modal-status-check\",\n \"#openSearch\",\n \".dropzone\",\n \".upload-zone\",\n \"#btnChooseFailureTarget\",\n \"#btnChooseSuccessTarget\",\n \"#disableModalCheck\",\n \"#add_edit_webhookconfiguration\",\n \"#manage-user-license\",\n \"#showimagedetails\"\n ];\n\n function isModalInputCheckable() {\n let atLeastOneEditableInput = modal.find(\"input:not([type=hidden])\").length > 0;\n let foundSelectorAgainstValidation = disableStatusCheckFor.some(selectorAgainstValidation => {\n if (modal.find(selectorAgainstValidation).length > 0) {\n console.log(`Found selector ${selectorAgainstValidation} against modal input change check in ${modal[0].id}`);\n return true;\n } else {\n return false;\n }\n });\n\n if (atLeastOneEditableInput && !foundSelectorAgainstValidation) {\n console.log(\"Enabled modal input change check\");\n return true;\n } else {\n console.log(\"Disabled modal input change check\");\n return false;\n }\n }\n\n modal.on('loaded.bs.modal', function (e) {\n setTimeout(function () {\n form = modal.find(\"form\");\n submitButton = modal.find(\"#btn-submit\");\n checkModal = isModalInputCheckable();\n\n if (checkModal && form && submitButton) {\n\n submitButton.prop(\"disabled\", true);\n\n form.dirty({\n preventLeaving: false\n }).on(\"dirty\", function () {\n\n submitButton.prop(\"disabled\", false);\n modal.data(\"bs.modal\").options.backdrop = 'static';\n modal.data(\"bs.modal\").options.keyboard = false;\n modal.off('keydown.dismiss.bs.modal');\n console.log(\"Modal input is dirty.\");\n\n }).on(\"clean\", function () {\n\n submitButton.prop(\"disabled\", true);\n modal.data(\"bs.modal\").options.backdrop = true;\n modal.data(\"bs.modal\").options.keyboard = true;\n modal.data(\"bs.modal\").escape();\n console.log(\"Modal input is clean.\");\n\n });\n\n // disable dirrty checks when submit is managed by other scripts\n submitButton.one('click', function (e) {\n e.preventDefault();\n form.dirty(\"setAsClean\");\n $(this).submit();\n });\n\n }\n }, 250);\n\n }).on('hide.bs.modal', function (e) {\n if (checkModal) {\n //form.dirty(\"setClean\");\n }\n });\n}\n"]}