{"version":3,"file":"modal.min.js","sources":["https:\/\/edu.betha.com.br\/theme\/smart\/amd\/src\/bootstrap\/modal.js"],"sourcesContent":["\/**\r\n * --------------------------------------------------------------------------\r\n * Bootstrap (v4.6.2): modal.js\r\n * Licensed under MIT (https:\/\/github.com\/twbs\/bootstrap\/blob\/main\/LICENSE)\r\n * --------------------------------------------------------------------------\r\n *\/\r\n\r\nimport $ from 'jquery'\r\nimport Util from '.\/util'\r\n\r\n\/**\r\n * Constants\r\n *\/\r\n\r\nconst NAME = 'modal'\r\nconst VERSION = '4.6.2'\r\nconst DATA_KEY = 'bs.modal'\r\nconst EVENT_KEY = `.${DATA_KEY}`\r\nconst DATA_API_KEY = '.data-api'\r\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\r\nconst ESCAPE_KEYCODE = 27 \/\/ KeyboardEvent.which value for Escape (Esc) key\r\n\r\nconst CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable'\r\nconst CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'\r\nconst CLASS_NAME_BACKDROP = 'modal-backdrop'\r\nconst CLASS_NAME_OPEN = 'modal-open'\r\nconst CLASS_NAME_FADE = 'fade'\r\nconst CLASS_NAME_SHOW = 'show'\r\nconst CLASS_NAME_STATIC = 'modal-static'\r\n\r\nconst EVENT_HIDE = `hide${EVENT_KEY}`\r\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\r\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\r\nconst EVENT_SHOW = `show${EVENT_KEY}`\r\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\r\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\r\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\r\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\r\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\r\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\r\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\r\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\r\n\r\nconst SELECTOR_DIALOG = '.modal-dialog'\r\nconst SELECTOR_MODAL_BODY = '.modal-body'\r\nconst SELECTOR_DATA_TOGGLE = '[data-toggle=\"modal\"]'\r\nconst SELECTOR_DATA_DISMISS = '[data-dismiss=\"modal\"]'\r\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\r\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\r\n\r\nconst Default = {\r\n backdrop: true,\r\n keyboard: true,\r\n focus: true,\r\n show: true\r\n}\r\n\r\nconst DefaultType = {\r\n backdrop: '(boolean|string)',\r\n keyboard: 'boolean',\r\n focus: 'boolean',\r\n show: 'boolean'\r\n}\r\n\r\n\/**\r\n * Class definition\r\n *\/\r\n\r\nclass Modal {\r\n constructor(element, config) {\r\n this._config = this._getConfig(config)\r\n this._element = element\r\n this._dialog = element.querySelector(SELECTOR_DIALOG)\r\n this._backdrop = null\r\n this._isShown = false\r\n this._isBodyOverflowing = false\r\n this._ignoreBackdropClick = false\r\n this._isTransitioning = false\r\n this._scrollbarWidth = 0\r\n }\r\n\r\n \/\/ Getters\r\n static get VERSION() {\r\n return VERSION\r\n }\r\n\r\n static get Default() {\r\n return Default\r\n }\r\n\r\n \/\/ Public\r\n toggle(relatedTarget) {\r\n return this._isShown ? this.hide() : this.show(relatedTarget)\r\n }\r\n\r\n show(relatedTarget) {\r\n if (this._isShown || this._isTransitioning) {\r\n return\r\n }\r\n\r\n const showEvent = $.Event(EVENT_SHOW, {\r\n relatedTarget\r\n })\r\n\r\n $(this._element).trigger(showEvent)\r\n\r\n if (showEvent.isDefaultPrevented()) {\r\n return\r\n }\r\n\r\n this._isShown = true\r\n\r\n if ($(this._element).hasClass(CLASS_NAME_FADE)) {\r\n this._isTransitioning = true\r\n }\r\n\r\n this._checkScrollbar()\r\n this._setScrollbar()\r\n\r\n this._adjustDialog()\r\n\r\n this._setEscapeEvent()\r\n this._setResizeEvent()\r\n\r\n $(this._element).on(\r\n EVENT_CLICK_DISMISS,\r\n SELECTOR_DATA_DISMISS,\r\n event => this.hide(event)\r\n )\r\n\r\n $(this._dialog).on(EVENT_MOUSEDOWN_DISMISS, () => {\r\n $(this._element).one(EVENT_MOUSEUP_DISMISS, event => {\r\n if ($(event.target).is(this._element)) {\r\n this._ignoreBackdropClick = true\r\n }\r\n })\r\n })\r\n\r\n this._showBackdrop(() => this._showElement(relatedTarget))\r\n }\r\n\r\n hide(event) {\r\n if (event) {\r\n event.preventDefault()\r\n }\r\n\r\n if (!this._isShown || this._isTransitioning) {\r\n return\r\n }\r\n\r\n const hideEvent = $.Event(EVENT_HIDE)\r\n\r\n $(this._element).trigger(hideEvent)\r\n\r\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\r\n return\r\n }\r\n\r\n this._isShown = false\r\n const transition = $(this._element).hasClass(CLASS_NAME_FADE)\r\n\r\n if (transition) {\r\n this._isTransitioning = true\r\n }\r\n\r\n this._setEscapeEvent()\r\n this._setResizeEvent()\r\n\r\n $(document).off(EVENT_FOCUSIN)\r\n\r\n $(this._element).removeClass(CLASS_NAME_SHOW)\r\n\r\n $(this._element).off(EVENT_CLICK_DISMISS)\r\n $(this._dialog).off(EVENT_MOUSEDOWN_DISMISS)\r\n\r\n if (transition) {\r\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\r\n\r\n $(this._element)\r\n .one(Util.TRANSITION_END, event => this._hideModal(event))\r\n .emulateTransitionEnd(transitionDuration)\r\n } else {\r\n this._hideModal()\r\n }\r\n }\r\n\r\n dispose() {\r\n [window, this._element, this._dialog]\r\n .forEach(htmlElement => $(htmlElement).off(EVENT_KEY))\r\n\r\n \/**\r\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\r\n * Do not move `document` in `htmlElements` array\r\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\r\n *\/\r\n $(document).off(EVENT_FOCUSIN)\r\n\r\n $.removeData(this._element, DATA_KEY)\r\n\r\n this._config = null\r\n this._element = null\r\n this._dialog = null\r\n this._backdrop = null\r\n this._isShown = null\r\n this._isBodyOverflowing = null\r\n this._ignoreBackdropClick = null\r\n this._isTransitioning = null\r\n this._scrollbarWidth = null\r\n }\r\n\r\n handleUpdate() {\r\n this._adjustDialog()\r\n }\r\n\r\n \/\/ Private\r\n _getConfig(config) {\r\n config = {\r\n ...Default,\r\n ...config\r\n }\r\n Util.typeCheckConfig(NAME, config, DefaultType)\r\n return config\r\n }\r\n\r\n _triggerBackdropTransition() {\r\n const hideEventPrevented = $.Event(EVENT_HIDE_PREVENTED)\r\n\r\n $(this._element).trigger(hideEventPrevented)\r\n if (hideEventPrevented.isDefaultPrevented()) {\r\n return\r\n }\r\n\r\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\r\n\r\n if (!isModalOverflowing) {\r\n this._element.style.overflowY = 'hidden'\r\n }\r\n\r\n this._element.classList.add(CLASS_NAME_STATIC)\r\n\r\n const modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog)\r\n $(this._element).off(Util.TRANSITION_END)\r\n\r\n $(this._element).one(Util.TRANSITION_END, () => {\r\n this._element.classList.remove(CLASS_NAME_STATIC)\r\n if (!isModalOverflowing) {\r\n $(this._element).one(Util.TRANSITION_END, () => {\r\n this._element.style.overflowY = ''\r\n })\r\n .emulateTransitionEnd(this._element, modalTransitionDuration)\r\n }\r\n })\r\n .emulateTransitionEnd(modalTransitionDuration)\r\n this._element.focus()\r\n }\r\n\r\n _showElement(relatedTarget) {\r\n const transition = $(this._element).hasClass(CLASS_NAME_FADE)\r\n const modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null\r\n\r\n if (!this._element.parentNode ||\r\n this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\r\n \/\/ Don't move modal's DOM position\r\n document.body.appendChild(this._element)\r\n }\r\n\r\n this._element.style.display = 'block'\r\n this._element.removeAttribute('aria-hidden')\r\n this._element.setAttribute('aria-modal', true)\r\n this._element.setAttribute('role', 'dialog')\r\n\r\n if ($(this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {\r\n modalBody.scrollTop = 0\r\n } else {\r\n this._element.scrollTop = 0\r\n }\r\n\r\n if (transition) {\r\n Util.reflow(this._element)\r\n }\r\n\r\n $(this._element).addClass(CLASS_NAME_SHOW)\r\n\r\n if (this._config.focus) {\r\n this._enforceFocus()\r\n }\r\n\r\n const shownEvent = $.Event(EVENT_SHOWN, {\r\n relatedTarget\r\n })\r\n\r\n const transitionComplete = () => {\r\n if (this._config.focus) {\r\n this._element.focus()\r\n }\r\n\r\n this._isTransitioning = false\r\n $(this._element).trigger(shownEvent)\r\n }\r\n\r\n if (transition) {\r\n const transitionDuration = Util.getTransitionDurationFromElement(this._dialog)\r\n\r\n $(this._dialog)\r\n .one(Util.TRANSITION_END, transitionComplete)\r\n .emulateTransitionEnd(transitionDuration)\r\n } else {\r\n transitionComplete()\r\n }\r\n }\r\n\r\n _enforceFocus() {\r\n $(document)\r\n .off(EVENT_FOCUSIN) \/\/ Guard against infinite focus loop\r\n .on(EVENT_FOCUSIN, event => {\r\n if (document !== event.target &&\r\n this._element !== event.target &&\r\n $(this._element).has(event.target).length === 0) {\r\n this._element.focus()\r\n }\r\n })\r\n }\r\n\r\n _setEscapeEvent() {\r\n if (this._isShown) {\r\n $(this._element).on(EVENT_KEYDOWN_DISMISS, event => {\r\n if (this._config.keyboard && event.which === ESCAPE_KEYCODE) {\r\n event.preventDefault()\r\n this.hide()\r\n } else if (!this._config.keyboard && event.which === ESCAPE_KEYCODE) {\r\n this._triggerBackdropTransition()\r\n }\r\n })\r\n } else if (!this._isShown) {\r\n $(this._element).off(EVENT_KEYDOWN_DISMISS)\r\n }\r\n }\r\n\r\n _setResizeEvent() {\r\n if (this._isShown) {\r\n $(window).on(EVENT_RESIZE, event => this.handleUpdate(event))\r\n } else {\r\n $(window).off(EVENT_RESIZE)\r\n }\r\n }\r\n\r\n _hideModal() {\r\n this._element.style.display = 'none'\r\n this._element.setAttribute('aria-hidden', true)\r\n this._element.removeAttribute('aria-modal')\r\n this._element.removeAttribute('role')\r\n this._isTransitioning = false\r\n this._showBackdrop(() => {\r\n $(document.body).removeClass(CLASS_NAME_OPEN)\r\n this._resetAdjustments()\r\n this._resetScrollbar()\r\n $(this._element).trigger(EVENT_HIDDEN)\r\n })\r\n }\r\n\r\n _removeBackdrop() {\r\n if (this._backdrop) {\r\n $(this._backdrop).remove()\r\n this._backdrop = null\r\n }\r\n }\r\n\r\n _showBackdrop(callback) {\r\n const animate = $(this._element).hasClass(CLASS_NAME_FADE) ?\r\n CLASS_NAME_FADE : ''\r\n\r\n if (this._isShown && this._config.backdrop) {\r\n this._backdrop = document.createElement('div')\r\n this._backdrop.className = CLASS_NAME_BACKDROP\r\n\r\n if (animate) {\r\n this._backdrop.classList.add(animate)\r\n }\r\n\r\n $(this._backdrop).appendTo(document.body)\r\n\r\n $(this._element).on(EVENT_CLICK_DISMISS, event => {\r\n if (this._ignoreBackdropClick) {\r\n this._ignoreBackdropClick = false\r\n return\r\n }\r\n\r\n if (event.target !== event.currentTarget) {\r\n return\r\n }\r\n\r\n if (this._config.backdrop === 'static') {\r\n this._triggerBackdropTransition()\r\n } else {\r\n this.hide()\r\n }\r\n })\r\n\r\n if (animate) {\r\n Util.reflow(this._backdrop)\r\n }\r\n\r\n $(this._backdrop).addClass(CLASS_NAME_SHOW)\r\n\r\n if (!callback) {\r\n return\r\n }\r\n\r\n if (!animate) {\r\n callback()\r\n return\r\n }\r\n\r\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\r\n\r\n $(this._backdrop)\r\n .one(Util.TRANSITION_END, callback)\r\n .emulateTransitionEnd(backdropTransitionDuration)\r\n } else if (!this._isShown && this._backdrop) {\r\n $(this._backdrop).removeClass(CLASS_NAME_SHOW)\r\n\r\n const callbackRemove = () => {\r\n this._removeBackdrop()\r\n if (callback) {\r\n callback()\r\n }\r\n }\r\n\r\n if ($(this._element).hasClass(CLASS_NAME_FADE)) {\r\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\r\n\r\n $(this._backdrop)\r\n .one(Util.TRANSITION_END, callbackRemove)\r\n .emulateTransitionEnd(backdropTransitionDuration)\r\n } else {\r\n callbackRemove()\r\n }\r\n } else if (callback) {\r\n callback()\r\n }\r\n }\r\n\r\n \/\/ ----------------------------------------------------------------------\r\n \/\/ the following methods are used to handle overflowing modals\r\n \/\/ todo (fat): these should probably be refactored out of modal.js\r\n \/\/ ----------------------------------------------------------------------\r\n\r\n _adjustDialog() {\r\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\r\n\r\n if (!this._isBodyOverflowing && isModalOverflowing) {\r\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\r\n }\r\n\r\n if (this._isBodyOverflowing && !isModalOverflowing) {\r\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\r\n }\r\n }\r\n\r\n _resetAdjustments() {\r\n this._element.style.paddingLeft = ''\r\n this._element.style.paddingRight = ''\r\n }\r\n\r\n _checkScrollbar() {\r\n const rect = document.body.getBoundingClientRect()\r\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth\r\n this._scrollbarWidth = this._getScrollbarWidth()\r\n }\r\n\r\n _setScrollbar() {\r\n if (this._isBodyOverflowing) {\r\n \/\/ Note: DOMNode.style.paddingRight returns the actual value or '' if not set\r\n \/\/ while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\r\n const fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT))\r\n const stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT))\r\n\r\n \/\/ Adjust fixed content padding\r\n $(fixedContent).each((index, element) => {\r\n const actualPadding = element.style.paddingRight\r\n const calculatedPadding = $(element).css('padding-right')\r\n $(element)\r\n .data('padding-right', actualPadding)\r\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\r\n })\r\n\r\n \/\/ Adjust sticky content margin\r\n $(stickyContent).each((index, element) => {\r\n const actualMargin = element.style.marginRight\r\n const calculatedMargin = $(element).css('margin-right')\r\n $(element)\r\n .data('margin-right', actualMargin)\r\n .css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\r\n })\r\n\r\n \/\/ Adjust body padding\r\n const actualPadding = document.body.style.paddingRight\r\n const calculatedPadding = $(document.body).css('padding-right')\r\n $(document.body)\r\n .data('padding-right', actualPadding)\r\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\r\n }\r\n\r\n $(document.body).addClass(CLASS_NAME_OPEN)\r\n }\r\n\r\n _resetScrollbar() {\r\n \/\/ Restore fixed content padding\r\n const fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT))\r\n $(fixedContent).each((index, element) => {\r\n const padding = $(element).data('padding-right')\r\n $(element).removeData('padding-right')\r\n element.style.paddingRight = padding ? padding : ''\r\n })\r\n\r\n \/\/ Restore sticky content\r\n const elements = [].slice.call(document.querySelectorAll(`${SELECTOR_STICKY_CONTENT}`))\r\n $(elements).each((index, element) => {\r\n const margin = $(element).data('margin-right')\r\n if (typeof margin !== 'undefined') {\r\n $(element).css('margin-right', margin).removeData('margin-right')\r\n }\r\n })\r\n\r\n \/\/ Restore body padding\r\n const padding = $(document.body).data('padding-right')\r\n $(document.body).removeData('padding-right')\r\n document.body.style.paddingRight = padding ? padding : ''\r\n }\r\n\r\n _getScrollbarWidth() { \/\/ thx d.walsh\r\n const scrollDiv = document.createElement('div')\r\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER\r\n document.body.appendChild(scrollDiv)\r\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\r\n document.body.removeChild(scrollDiv)\r\n return scrollbarWidth\r\n }\r\n\r\n \/\/ Static\r\n static _jQueryInterface(config, relatedTarget) {\r\n return this.each(function () {\r\n let data = $(this).data(DATA_KEY)\r\n const _config = {\r\n ...Default,\r\n ...$(this).data(),\r\n ...(typeof config === 'object' && config ? config : {})\r\n }\r\n\r\n if (!data) {\r\n data = new Modal(this, _config)\r\n $(this).data(DATA_KEY, data)\r\n }\r\n\r\n if (typeof config === 'string') {\r\n if (typeof data[config] === 'undefined') {\r\n throw new TypeError(`No method named \"${config}\"`)\r\n }\r\n\r\n data[config](relatedTarget)\r\n } else if (_config.show) {\r\n data.show(relatedTarget)\r\n }\r\n })\r\n }\r\n}\r\n\r\n\/**\r\n * Data API implementation\r\n *\/\r\n\r\n$(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\r\n let target\r\n const selector = Util.getSelectorFromElement(this)\r\n\r\n if (selector) {\r\n target = document.querySelector(selector)\r\n }\r\n\r\n const config = $(target).data(DATA_KEY) ?\r\n 'toggle' : {\r\n ...$(target).data(),\r\n ...$(this).data()\r\n }\r\n\r\n if (this.tagName === 'A' || this.tagName === 'AREA') {\r\n event.preventDefault()\r\n }\r\n\r\n const $target = $(target).one(EVENT_SHOW, showEvent => {\r\n if (showEvent.isDefaultPrevented()) {\r\n \/\/ Only register focus restorer if modal will actually get shown\r\n return\r\n }\r\n\r\n $target.one(EVENT_HIDDEN, () => {\r\n if ($(this).is(':visible')) {\r\n this.focus()\r\n }\r\n })\r\n })\r\n\r\n Modal._jQueryInterface.call($(target), config, this)\r\n})\r\n\r\n\/**\r\n * jQuery\r\n *\/\r\n\r\n$.fn[NAME] = Modal._jQueryInterface\r\n$.fn[NAME].Constructor = Modal\r\n$.fn[NAME].noConflict = () => {\r\n $.fn[NAME] = JQUERY_NO_CONFLICT\r\n return Modal._jQueryInterface\r\n}\r\n\r\nexport default Modal\r\n"],"names":["NAME","EVENT_KEY","JQUERY_NO_CONFLICT","$","fn","EVENT_HIDE","EVENT_HIDE_PREVENTED","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","EVENT_FOCUSIN","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEUP_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_CLICK_DATA_API","Default","backdrop","keyboard","focus","show","DefaultType","Modal","constructor","element","config","_config","this","_getConfig","_element","_dialog","querySelector","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_isTransitioning","_scrollbarWidth","VERSION","toggle","relatedTarget","hide","showEvent","Event","trigger","isDefaultPrevented","hasClass","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","on","event","one","target","is","_showBackdrop","_showElement","preventDefault","hideEvent","transition","document","off","removeClass","transitionDuration","Util","getTransitionDurationFromElement","TRANSITION_END","_hideModal","emulateTransitionEnd","dispose","window","forEach","htmlElement","removeData","handleUpdate","typeCheckConfig","_triggerBackdropTransition","hideEventPrevented","isModalOverflowing","scrollHeight","documentElement","clientHeight","style","overflowY","classList","add","modalTransitionDuration","remove","modalBody","parentNode","nodeType","Node","ELEMENT_NODE","body","appendChild","display","removeAttribute","setAttribute","scrollTop","reflow","addClass","_enforceFocus","shownEvent","transitionComplete","has","length","which","_resetAdjustments","_resetScrollbar","_removeBackdrop","callback","animate","createElement","className","appendTo","currentTarget","backdropTransitionDuration","callbackRemove","paddingLeft","paddingRight","rect","getBoundingClientRect","Math","round","left","right","innerWidth","_getScrollbarWidth","fixedContent","slice","call","querySelectorAll","stickyContent","each","index","actualPadding","calculatedPadding","css","data","parseFloat","actualMargin","marginRight","calculatedMargin","padding","elements","margin","scrollDiv","scrollbarWidth","width","clientWidth","removeChild","TypeError","selector","getSelectorFromElement","tagName","$target","_jQueryInterface","Constructor","noConflict"],"mappings":"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"}