1441 |
ariadna |
1 |
{"version":3,"file":"backdrop.min.js","sources":["../../../src/bootstrap/util/backdrop.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport Config from './config'\nimport {\n execute, executeAfterTransition, getElement, reflow\n} from './index'\n\n/**\n * Constants\n */\n\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nconst Default = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body' // give the choice to place backdrop under different elements\n}\n\nconst DefaultType = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)'\n}\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n this._isAppended = false\n this._element = null\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._append()\n\n const element = this._getElement()\n if (this._config.isAnimated) {\n reflow(element)\n }\n\n element.classList.add(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n execute(callback)\n })\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n this.dispose()\n execute(callback)\n })\n }\n\n dispose() {\n if (!this._isAppended) {\n return\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n this._element.remove()\n this._isAppended = false\n }\n\n // Private\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div')\n backdrop.className = this._config.className\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE)\n }\n\n this._element = backdrop\n }\n\n return this._element\n }\n\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement)\n return config\n }\n\n _append() {\n if (this._isAppended) {\n return\n }\n\n const element = this._getElement()\n this._config.rootElement.append(element)\n\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback)\n })\n\n this._isAppended = true\n }\n\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n }\n}\n\nexport default Backdrop\n"],"names":["EVENT_MOUSEDOWN","Default","className","clickCallback","isAnimated","isVisible","rootElement","DefaultType","Backdrop","Config","constructor","config","_config","this","_getConfig","_isAppended","_element","NAME","show","callback","_append","element","_getElement","classList","add","_emulateAnimation","hide","remove","dispose","off","backdrop","document","createElement","_configAfterMerge","append","on"],"mappings":"0ZAoBMA,uCAHO,YAKPC,QAAU,CACdC,UAAW,iBACXC,cAAe,KACfC,YAAY,EACZC,WAAW,EACXC,YAAa,QAGTC,YAAc,CAClBL,UAAW,SACXC,cAAe,kBACfC,WAAY,UACZC,UAAW,UACXC,YAAa,0BAOTE,iBAAiBC,gBACrBC,YAAYC,qBAELC,QAAUC,KAAKC,WAAWH,aAC1BI,aAAc,OACdC,SAAW,KAIPf,4BACFA,QAGEM,gCACFA,YAGEU,wBA1CA,WA+CXC,KAAKC,cACEN,KAAKD,QAAQP,wCACRc,eAILC,gBAECC,QAAUR,KAAKS,cACjBT,KAAKD,QAAQR,8BACRiB,SAGTA,QAAQE,UAAUC,IA1DE,aA4DfC,mBAAkB,wBACbN,aAIZO,KAAKP,UACEN,KAAKD,QAAQP,gBAKbiB,cAAcC,UAAUI,OAvET,aAyEfF,mBAAkB,UAChBG,6BACGT,iCARAA,UAYZS,UACOf,KAAKE,oCAIGc,IAAIhB,KAAKG,SAAUhB,sBAE3BgB,SAASW,cACTZ,aAAc,GAIrBO,kBACOT,KAAKG,SAAU,OACZc,SAAWC,SAASC,cAAc,OACxCF,SAAS5B,UAAYW,KAAKD,QAAQV,UAC9BW,KAAKD,QAAQR,YACf0B,SAASP,UAAUC,IAjGH,aAoGbR,SAAWc,gBAGXjB,KAAKG,SAGdiB,kBAAkBtB,eAEhBA,OAAOL,aAAc,qBAAWK,OAAOL,aAChCK,OAGTS,aACMP,KAAKE,yBAIHM,QAAUR,KAAKS,mBAChBV,QAAQN,YAAY4B,OAAOb,+BAEnBc,GAAGd,QAASrB,iBAAiB,wBAChCa,KAAKD,QAAQT,uBAGlBY,aAAc,EAGrBU,kBAAkBN,4CACOA,SAAUN,KAAKS,cAAeT,KAAKD,QAAQR,0BAIvDI"}
|