{"version":3,"file":"index-DDxxNSyN.js","sources":["../../../app/assets/javascripts/components/bootstrap3-like-dropdown/index.ts"],"sourcesContent":["\n\nimport u from \"umbrellajs\"\nimport {\n onClickOutside,\n} from \"plugins/vanilla-clickout\"\nimport _merge from \"lodash/merge\"\n\n// For Bootstrap 3 like dropdown\n// DOM Structure should be like\n// https://getbootstrap.com/docs/3.3/components/#dropdowns\n\ninterface InputSelectors {\n scope: string | HTMLElement,\n dropdown_container?: string,\n dropdown_toggle?: string | JQuery,\n}\n\ninterface CompleteSelectors {\n scope: string | HTMLElement,\n dropdown_container: string,\n dropdown_toggle: string,\n}\n\nconst DEFAULT_SELECTORS = {\n // Must be provided, or refuse to init\n scope: \"invalid\",\n dropdown_container: \".dropdown\",\n dropdown_toggle: \".dropdown-toggle\",\n}\n\nconst DropdownInitDoneClass = \"js--dropdown-toggle-init-done\"\n\nconst init = (selectors: InputSelectors) => {\n // Ideally the dropdown from different components should be init\n // in different JS files\n // Do that later z_z\n\n if (selectors.scope === DEFAULT_SELECTORS.scope) {\n throw new Error(\"scope not provided in components/bootstrap3-like-dropdown\")\n }\n\n const merged_selectors: CompleteSelectors = _merge({}, DEFAULT_SELECTORS, selectors)\n\n let $scope = u(\".just-placeholder\")\n if (typeof merged_selectors.scope === \"string\") {\n $scope = u(merged_selectors.scope)\n }\n else {\n // HTMLElement\n $scope = u(merged_selectors.scope)\n }\n\n $scope.find(merged_selectors.dropdown_toggle).each(( el) => {\n const $el = u(el)\n\n if ($el.hasClass(DropdownInitDoneClass)) { return }\n $el.addClass(DropdownInitDoneClass)\n\n // Hardcoded, not sure how to extract yet\n if ($el.closest(\".bootstrap-select\").length > 0) {\n // do nothing\n return\n }\n\n const $closest_dropdown_container = $el.closest(merged_selectors.dropdown_container)\n $el.on(\"click\", (e) => {\n e.preventDefault()\n $closest_dropdown_container.toggleClass(\"open\")\n })\n\n onClickOutside(el, () => {\n $closest_dropdown_container.removeClass(\"open\")\n })\n })\n}\n\nexport default {\n init,\n}\n"],"names":["DEFAULT_SELECTORS","DropdownInitDoneClass","init","selectors","merged_selectors","_merge","$scope","u","el","$el","$closest_dropdown_container","e","onClickOutside","BS3_Dropdown"],"mappings":"iIAwBA,MAAMA,EAAoB,CAExB,MAAoB,UACpB,mBAAoB,YACpB,gBAAoB,kBACtB,EAEMC,EAAwB,gCAExBC,EAAQC,GAA8B,CAKtC,GAAAA,EAAU,QAAUH,EAAkB,MAClC,MAAA,IAAI,MAAM,2DAA2D,EAG7E,MAAMI,EAAsCC,EAAO,GAAIL,EAAmBG,CAAS,EAE/E,IAAAG,EAASC,EAAE,mBAAmB,EAC9B,OAAOH,EAAiB,OAAU,SAC3BE,EAAAC,EAAEH,EAAiB,KAAK,EAIxBE,EAAAC,EAAEH,EAAiB,KAAK,EAGnCE,EAAO,KAAKF,EAAiB,eAAe,EAAE,KAAOI,GAAO,CACpD,MAAAC,EAAMF,EAAEC,CAAE,EAMhB,GAJIC,EAAI,SAASR,CAAqB,IACtCQ,EAAI,SAASR,CAAqB,EAG9BQ,EAAI,QAAQ,mBAAmB,EAAE,OAAS,GAE5C,OAGF,MAAMC,EAA8BD,EAAI,QAAQL,EAAiB,kBAAkB,EAC/EK,EAAA,GAAG,QAAUE,GAAM,CACrBA,EAAE,eAAe,EACjBD,EAA4B,YAAY,MAAM,CAAA,CAC/C,EAEDE,EAAeJ,EAAI,IAAM,CACvBE,EAA4B,YAAY,MAAM,CAAA,CAC/C,CAAA,CACF,CACH,EAEeG,EAAA,CACb,KAAAX,CACF"}