{"version":3,"file":"show-modal-BfK3yOFo.js","sources":["../../../app/assets/javascripts/app/modal/dismiss_modal.html._tpl","../../../app/assets/javascripts/app/modal/custom_modal.html._tpl","../../../app/assets/javascripts/app/modal/show-modal.ts"],"sourcesContent":["
\n\t
\n\t\t\n\t
\n\t
\n\t\t<%= content %>\n\t
\n
\n","
\n\t<%= content %>\n
\n","\nimport { EventEmitter } from \"events\"\nimport $ from \"jquery\"\nimport \"bootstrap-transition\"\nimport \"bootstrap-modal\"\nimport \"bootstrap-modalmanager\"\nimport _template from \"lodash/template\"\n\nimport dismiss_modal from \"./dismiss_modal.html._tpl\"\nimport custom_modal from \"./custom_modal.html._tpl\"\nconst dismiss_modal_tmpl = _template(dismiss_modal)\nconst custom_modal_tmpl = _template(custom_modal)\n\ninterface ModalOptionsStrict {\n customContent: boolean\n hideOverflowMobileFixClass: boolean\n class: string\n DoOverrideClass: boolean\n disableBackgroundScrolling: boolean\n keepCurrentScrollTop: boolean\n}\ntype ModalOptions = Partial\n\nclass ModalClass extends EventEmitter {\n /**\n * @param container_or_content [jQueryObject, HTML] The container or content to be displayed\n * @param options [Object] Options to use\n * @param options.customContent [Boolean] If true, no wrapper like `.modal-header` and `.modal-body` will be added\n * This is set to true when container_or_content has only one top node and\n * has `.modal-header` and `.modal-body` already\n */\n public showModalWithContent(container_or_content: string | JQuery, options: ModalOptions = {}): JQuery {\n const opts = Object.assign({\n customContent: false,\n hideOverflowMobileFixClass: false,\n class: \"\",\n DoOverrideClass: false,\n disableBackgroundScrolling: false,\n keepCurrentScrollTop: false,\n }, options)\n const $container_or_content = $(container_or_content)\n let $container\n let content\n const currentScrollTop = $(window).scrollTop() || 0\n\n if ( opts.disableBackgroundScrolling ) {\n $(\"html\").css({\"overflow\": \"hidden\", \"height\": \"100vh\"})\n // https://stackoverflow.com/a/44853591, fix safari \"overflow: hidden\" not working issue\n $(\"body\").css({\"touch-action\": \"none\", \"height\": \"100vh\"})\n }\n\n if ($container_or_content.length === 1){\n // Is container\n $container = $container_or_content\n content = $container.html()\n }\n else {\n // Is content\n $container = $() // Empty\n content = container_or_content as string\n }\n\n if ($container.children(\".modal-header\").length > 0 && $container.children(\".modal-body\").length > 0){\n opts.customContent = true\n }\n\n // Always add container classes\n const containerClasses = $container.attr(\"class\")\n if (containerClasses && containerClasses.length > 0){\n opts.class = [opts.class].concat(containerClasses.split(\" \")).join(\" \")\n }\n\n return this.createModal($container, content, opts, currentScrollTop)\n }\n\n public createModal($container: JQuery, content: string, opts: ModalOptionsStrict, currentScrollTop: number): JQuery {\n let modal\n let $modal = $(\"div\")\n const {\n customContent,\n hideOverflowMobileFixClass,\n class: extra_class,\n DoOverrideClass,\n } = opts\n if ( customContent ){\n modal = custom_modal_tmpl({content})\n }\n else{\n modal = dismiss_modal_tmpl({content})\n }\n\n $modal = $(modal)\n\n if ( !hideOverflowMobileFixClass ){\n $modal.addClass(\"modal-overflow-mobile-fix\")\n }\n\n if ( customContent && DoOverrideClass ) {\n $modal.addClass(extra_class)\n }\n else if ( customContent ) {\n // Add default classes\n $modal.addClass(\"hide fade\")\n $modal.addClass(extra_class)\n }\n else {\n $modal.addClass(extra_class)\n }\n\n // Always add container data\n $modal.data($container.data())\n\n $modal.modal()\n\n this.emit(\"modal_shown\")\n $modal.trigger(\"shown.bs.modal\")\n\n $modal.on(\"hide\", () => {\n $modal.trigger(\"hidden.bs.modal\")\n\n if ( opts.disableBackgroundScrolling ) {\n $(\"html\").css({\"overflow\": \"\", \"height\": \"\"})\n $(\"body\").css({\"touch-action\": \"\", \"height\": \"\"})\n }\n\n if ( opts.keepCurrentScrollTop ) {\n $(window).scrollTop(currentScrollTop)\n }\n })\n\n return $modal\n }\n\n public create(content: string, extra_class = \"\"){\n const modal = custom_modal_tmpl({content})\n\n const $modal = $(modal)\n $modal.modal()\n $modal.addClass(\"modal-overflow-mobile-fix\")\n $modal.addClass(extra_class)\n\n $modal.trigger(\"shown.bs.modal\")\n return $modal\n }\n\n public showModalWithSelector(selector: string, options = {}){\n const $el = $(selector)\n if ($el.length === 0) { return }\n return this.showModalWithContent(selector, options)\n }\n\n public hideTopModal(){\n $(\".modal:last\").modal(\"hide\")\n }\n\n public hideAllModals(){\n $(\".modal\").modal(\"hide\")\n }\n\n public showLoadingIndicator() {\n const $body = $(\"body\")\n $body.addClass(\"modal-loading\")\n $body.modalmanager(\"loading\")\n }\n public hideLoadingIndicator() {\n const $body = $(\"body\")\n $body.modalmanager(\"removeLoading\")\n $body.removeClass(\"modal-loading\")\n }\n}\n\nconst Modal = new ModalClass()\n\nexport default Modal\n"],"names":["plainText","dismiss_modal_tmpl","_template","dismiss_modal","custom_modal_tmpl","custom_modal","ModalClass","EventEmitter","container_or_content","options","opts","$container_or_content","$","$container","content","currentScrollTop","containerClasses","modal","$modal","customContent","hideOverflowMobileFixClass","extra_class","DoOverrideClass","selector","$body","Modal"],"mappings":"ivBAAA,MAAAA,EAAA,wMCAAA,EAAA,iDCUMC,EAAqBC,EAAUC,CAAa,EAC5CC,EAAoBF,EAAUG,CAAY,EAYhD,MAAMC,UAAmBC,EAAAA,YAAa,CAQ7B,qBAAqBC,EAAuCC,EAAwB,GAAY,CAC/F,MAAAC,EAAO,OAAO,OAAO,CACzB,cAA4B,GAC5B,2BAA4B,GAC5B,MAA4B,GAC5B,gBAA4B,GAC5B,2BAA4B,GAC5B,qBAA4B,IAC3BD,CAAO,EACJE,EAAwBC,EAAEJ,CAAoB,EAChD,IAAAK,EACAC,EACJ,MAAMC,EAAmBH,EAAE,MAAM,EAAE,UAAe,GAAA,EAE7CF,EAAK,6BACNE,EAAA,MAAM,EAAE,IAAI,CAAC,SAAY,SAAU,OAAU,QAAQ,EAErDA,EAAA,MAAM,EAAE,IAAI,CAAC,eAAgB,OAAQ,OAAU,QAAQ,GAGvDD,EAAsB,SAAW,GAEtBE,EAAAF,EACbG,EAAUD,EAAW,KAAK,IAI1BA,EAAaD,EAAE,EACLE,EAAAN,GAGRK,EAAW,SAAS,eAAe,EAAE,OAAS,GAAKA,EAAW,SAAS,aAAa,EAAE,OAAS,IACjGH,EAAK,cAAgB,IAIjB,MAAAM,EAAmBH,EAAW,KAAK,OAAO,EAC5C,OAAAG,GAAoBA,EAAiB,OAAS,IAChDN,EAAK,MAAQ,CAACA,EAAK,KAAK,EAAE,OAAOM,EAAiB,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,GAGjE,KAAK,YAAYH,EAAYC,EAASJ,EAAMK,CAAgB,CAAA,CAG9D,YAAYF,EAAoBC,EAAiBJ,EAA0BK,EAAkC,CAC9G,IAAAE,EACAC,EAASN,EAAE,KAAK,EACd,KAAA,CACJ,cAAAO,EACA,2BAAAC,EACA,MAAOC,EACP,gBAAAC,CAAA,EACEZ,EACJ,OAAKS,EACKF,EAAAb,EAAkB,CAAC,QAAAU,EAAQ,EAG3BG,EAAAhB,EAAmB,CAAC,QAAAa,EAAQ,EAGtCI,EAASN,EAAEK,CAAK,EAEVG,GACJF,EAAO,SAAS,2BAA2B,EAGxCC,GAAiBG,GAGZH,GAERD,EAAO,SAAS,WAAW,EAC3BA,EAAO,SAASG,CAAW,EAOtBH,EAAA,KAAKL,EAAW,MAAM,EAE7BK,EAAO,MAAM,EAEb,KAAK,KAAK,aAAa,EACvBA,EAAO,QAAQ,gBAAgB,EAExBA,EAAA,GAAG,OAAQ,IAAM,CACtBA,EAAO,QAAQ,iBAAiB,EAE3BR,EAAK,6BACNE,EAAA,MAAM,EAAE,IAAI,CAAC,SAAY,GAAI,OAAU,GAAG,EAC1CA,EAAA,MAAM,EAAE,IAAI,CAAC,eAAgB,GAAI,OAAU,GAAG,GAG7CF,EAAK,sBACNE,EAAA,MAAM,EAAE,UAAUG,CAAgB,CACtC,CACD,EAEMG,CAAA,CAGF,OAAOJ,EAAiBO,EAAc,GAAG,CAC9C,MAAMJ,EAAQb,EAAkB,CAAC,QAAAU,EAAQ,EAEnCI,EAASN,EAAEK,CAAK,EACtB,OAAAC,EAAO,MAAM,EACbA,EAAO,SAAS,2BAA2B,EAC3CA,EAAO,SAASG,CAAW,EAE3BH,EAAO,QAAQ,gBAAgB,EACxBA,CAAA,CAGF,sBAAsBK,EAAkBd,EAAU,GAAG,CAEtD,GADQG,EAAEW,CAAQ,EACd,SAAW,EACZ,OAAA,KAAK,qBAAqBA,EAAUd,CAAO,CAAA,CAG7C,cAAc,CACjBG,EAAA,aAAa,EAAE,MAAM,MAAM,CAAA,CAGxB,eAAe,CAClBA,EAAA,QAAQ,EAAE,MAAM,MAAM,CAAA,CAGnB,sBAAuB,CACtB,MAAAY,EAAQZ,EAAE,MAAM,EACtBY,EAAM,SAAS,eAAe,EAC9BA,EAAM,aAAa,SAAS,CAAA,CAEvB,sBAAuB,CACtB,MAAAA,EAAQZ,EAAE,MAAM,EACtBY,EAAM,aAAa,eAAe,EAClCA,EAAM,YAAY,eAAe,CAAA,CAErC,CAEM,MAAAC,EAAQ,IAAInB"}