@vue-interface/btn-dropdown 2.0.0-beta.9 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/README.md +35 -0
- package/dist/btn-dropdown.js +267 -1822
- package/dist/btn-dropdown.js.map +1 -0
- package/dist/btn-dropdown.umd.cjs +2 -5
- package/dist/btn-dropdown.umd.cjs.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/src/BtnDropdown.vue.d.ts +42 -9
- package/index.css +3 -0
- package/package.json +26 -43
- package/dist/src/BtnDropdownAction.vue.d.ts +0 -43
- package/dist/src/BtnDropdownSingle.vue.d.ts +0 -236
- package/dist/src/BtnDropdownSplit.vue.d.ts +0 -238
- package/dist/src/DropdownHandler.d.ts +0 -463
- package/dist/style.css +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"btn-dropdown.js","sources":["../src/useDropdownHandler.ts","../src/BtnDropdownSingle.vue","../src/BtnDropdownSplit.vue","../src/BtnDropdown.vue"],"sourcesContent":["import { flip, offset, Placement, type Alignment, type Middleware, type OffsetOptions, type Side } from '@floating-ui/dom';\nimport { useFloating } from '@floating-ui/vue';\nimport { DropdownMenu } from '@vue-interface/dropdown-menu';\nimport { computed, ref, watchEffect, type EmitFn, type HTMLAttributes } from 'vue';\n\ntype LiteralUnion<T extends U, U = string> = T | (U & Record<never, never>);\n\nexport type BtnGroupSizes = 'btn-group-xs'\n | 'btn-group-sm' \n | 'btn-group-md'\n | 'btn-group-lg'\n | 'btn-group-xl'\n | 'btn-group-2xl'\n | 'btn-group-3xl'\n | 'btn-group-4xl';\n\nexport type BtnDropdownProps = {\n align?: Alignment;\n block?: boolean;\n buttonClass?: HTMLAttributes['class'],\n caret?: boolean;\n dropup?: boolean;\n dropright?: boolean;\n dropleft?: boolean;\n label?: string;\n offset?: OffsetOptions,\n middleware?: Middleware[],\n side?: Side;\n size?: LiteralUnion<BtnGroupSizes>;\n split?: boolean;\n variant?: string;\n}\n\nexport type BtnDropdownEvents = {\n click: [event: MouseEvent];\n clickToggle: [event: MouseEvent];\n show: [],\n hide: []\n}\n\nexport function useDropdownHandler(props: BtnDropdownProps, emit: EmitFn<BtnDropdownEvents>) {\n const target = ref<HTMLElement>();\n const menu = ref<InstanceType<typeof DropdownMenu>>();\n const expanded = ref(false);\n\n\n const alignment = computed<Alignment>(() => props.align ?? 'start');\n\n const side = computed<Side>(() => {\n if(props.dropup) {\n return 'top';\n }\n\n if(props.dropleft) {\n return 'left';\n }\n\n if(props.dropright) {\n return 'right';\n }\n\n return 'bottom';\n });\n\n const placement = computed<Placement>(() => `${side.value}-${alignment.value}`);\n\n const classes = computed(() => ({\n 'dropdown': props.dropup && props.dropright && props.dropleft,\n 'dropup': props.dropup,\n 'dropright': props.dropright,\n 'dropleft': props.dropleft,\n 'expanded': expanded.value,\n [props.size ?? '']: !!props.size,\n }));\n \n const buttonClasses = computed(() => {\n const classes = {\n btn: true,\n [props.variant ?? '']: !!props.variant,\n 'btn-block': !!props.block,\n 'no-caret': !props.caret\n };\n \n if(typeof props.buttonClass === 'string') {\n classes[props.buttonClass] = true;\n }\n else if(Array.isArray(props.buttonClass)) {\n for(const value of props.buttonClass) {\n classes[value] = true;\n }\n }\n else if(props.buttonClass) {\n Object.assign(classes, props.buttonClass);\n }\n\n return classes;\n });\n\n const { floatingStyles, update } = useFloating(target, menu, {\n placement: placement,\n middleware: props.middleware ?? [\n offset(props.offset ?? 5),\n flip()\n ]\n });\n\n function show() {\n expanded.value = true;\n\n if(!target.value || !menu.value) {\n return;\n }\n\n update();\n\n emit('show');\n }\n\n function hide() {\n expanded.value = false;\n\n target.value?.blur();\n\n emit('hide');\n }\n\n function toggle() {\n if(!expanded.value) {\n show();\n }\n else {\n hide();\n }\n }\n\n function isFocusable(element: HTMLElement) {\n const nodes = Array.from(menu.value?.$el.querySelectorAll('label, input, select, textarea') ?? []);\n\n for(const i in nodes) {\n if(element === nodes[i]) {\n return true;\n }\n }\n\n return false;\n }\n \n function onBlur(e: FocusEvent) {\n if(!(e.relatedTarget instanceof HTMLElement)) {\n hide();\n \n return;\n }\n \n if(menu.value && !menu.value?.$el.contains(e.relatedTarget) || !target.value?.contains(e.relatedTarget)) {\n hide();\n }\n }\n\n function onClick(e: MouseEvent) {\n emit('click', e);\n }\n\n function onClickToggle(e: MouseEvent) {\n e.target?.dispatchEvent(new Event('focus', e));\n \n emit('clickToggle', e);\n\n if(!e.defaultPrevented) {\n toggle();\n }\n }\n\n function onClickItem(e: PointerEvent) {\n if(!(e.target instanceof HTMLElement)) {\n hide();\n\n return;\n }\n\n if(!isFocusable(e.target) && !e.defaultPrevented) {\n hide();\n }\n }\n\n watchEffect(() => {\n if(expanded.value) {\n window.addEventListener('resize', update);\n }\n else {\n window.removeEventListener('resize', update);\n }\n });\n\n return {\n target,\n menu,\n alignment,\n expanded,\n floatingStyles,\n placement,\n side,\n classes,\n buttonClasses,\n show,\n hide,\n toggle,\n onBlur,\n onClick,\n onClickToggle,\n onClickItem\n };\n}","<script setup lang=\"ts\">\nimport { DropdownMenu } from '@vue-interface/dropdown-menu';\nimport { BtnDropdownEvents, BtnDropdownProps, useDropdownHandler } from './useDropdownHandler';\n\nconst props = withDefaults(defineProps<BtnDropdownProps>(), {\n caret: true,\n variant: 'btn-primary'\n});\n\nconst emit = defineEmits<BtnDropdownEvents>();\n\nconst {\n target,\n menu,\n buttonClasses,\n classes,\n expanded,\n floatingStyles,\n onBlur,\n onClickToggle,\n onClickItem\n} = useDropdownHandler(props, emit);\n</script>\n\n<template>\n <div\n class=\"btn-group\"\n :class=\"classes\">\n <slot\n name=\"button\"\n v-bind=\"{ target: (el: HTMLElement) => target = el, expanded, onBlur, onClickToggle }\">\n <button\n ref=\"target\"\n type=\"button\"\n :class=\"{...buttonClasses, ['dropdown-toggle']: true}\"\n aria-haspopup=\"true\"\n :aria-expanded=\"expanded\"\n @blur=\"onBlur\"\n @click=\"onClickToggle\">\n {{ label }}\n </button>\n </slot>\n <DropdownMenu\n ref=\"menu\"\n :class=\"{\n 'show': expanded\n }\"\n :style=\"floatingStyles\"\n @blur=\"onBlur\"\n @click=\"onClickItem\"\n @mousedown.prevent>\n <slot />\n </DropdownMenu>\n </div>\n</template>","<script setup lang=\"ts\">\nimport { DropdownMenu } from '@vue-interface/dropdown-menu';\nimport { BtnDropdownEvents, BtnDropdownProps, useDropdownHandler } from './useDropdownHandler';\n\nconst props = withDefaults(defineProps<BtnDropdownProps>(), {\n caret: true,\n variant: 'btn-primary'\n});\n\nconst emit = defineEmits<BtnDropdownEvents>();\n\nconst {\n target,\n menu,\n buttonClasses,\n classes,\n expanded,\n floatingStyles,\n onBlur,\n onClick,\n onClickToggle,\n onClickItem\n} = useDropdownHandler(props, emit);\n</script>\n\n<template>\n <div\n class=\"btn-group btn-dropdown-split\"\n :class=\"classes\">\n <slot\n v-if=\"!dropleft\"\n name=\"button\"\n v-bind=\"{ expanded, onBlur, onClickToggle }\">\n <button\n type=\"button\"\n :class=\"buttonClasses\"\n aria-haspopup=\"true\"\n :aria-expanded=\"expanded\"\n @blur=\"onBlur\"\n @click=\"onClick\">\n {{ label }}\n </button>\n </slot>\n <div class=\"btn-group\">\n <slot\n name=\"toggle\"\n v-bind=\"{ target: (el: HTMLElement) => target = el, expanded, onBlur, onClickToggle }\">\n <button\n ref=\"target\"\n type=\"button\"\n aria-haspopup=\"true\"\n :aria-expanded=\"expanded\"\n :class=\"{...buttonClasses, 'dropdown-toggle': true, 'dropdown-toggle-split': split}\"\n @blur=\"onBlur\"\n @click=\"onClickToggle\" />\n </slot>\n <DropdownMenu\n ref=\"menu\"\n :class=\"{\n 'show': expanded\n }\"\n :style=\"floatingStyles\"\n @blur=\"onBlur\"\n @click=\"onClickItem\"\n @mousedown.prevent>\n <slot />\n </DropdownMenu>\n </div>\n <slot\n v-if=\"dropleft\"\n name=\"button\"\n v-bind=\"{ expanded, onBlur, onClickToggle }\">\n <button\n type=\"button\"\n :class=\"buttonClasses\"\n aria-haspopup=\"true\"\n :aria-expanded=\"expanded\"\n @blur=\"onBlur\"\n @click=\"onClick\">\n {{ label }}\n </button>\n </slot>\n </div>\n</template>","<script setup lang=\"ts\">\nimport BtnDropdownSingle from './BtnDropdownSingle.vue';\nimport BtnDropdownSplit from './BtnDropdownSplit.vue';\nimport { BtnDropdownEvents, BtnDropdownProps } from './useDropdownHandler';\n\nconst props = withDefaults(defineProps<{\n split?: boolean\n} & BtnDropdownProps>(), {\n split: false,\n caret: true\n});\n\nconst emit = defineEmits<BtnDropdownEvents>();\n</script>\n\n<template>\n <Component\n :is=\"!split ? BtnDropdownSingle : BtnDropdownSplit\"\n v-bind=\"props\"\n @click=\"(...args) => emit('click', ...args)\"\n @click-toggle=\"(...args) => emit('clickToggle', ...args)\"\n @show=\"(...args) => emit('show', ...args)\"\n @hide=\"(...args) => emit('hide', ...args)\">\n <template #button=\"slot\">\n <slot\n name=\"button\"\n v-bind=\"slot\" />\n </template>\n <template #toggle=\"slot\">\n <slot\n name=\"toggle\"\n v-bind=\"slot\" />\n </template>\n <template #split=\"slot\">\n <slot\n name=\"split\"\n v-bind=\"slot\" />\n </template>\n <slot />\n </Component>\n</template>"],"names":["useDropdownHandler","props","emit","target","ref","menu","expanded","alignment","computed","side","placement","classes","buttonClasses","value","floatingStyles","update","useFloating","offset","flip","show","hide","toggle","isFocusable","element","nodes","i","onBlur","e","onClick","onClickToggle","onClickItem","watchEffect","__props","__emit","_createElementBlock","_normalizeClass","_unref","_renderSlot","_ctx","_normalizeProps","_guardReactiveProps","el","_createElementVNode","_cache","args","_hoisted_1","_createVNode","DropdownMenu","_hoisted_2","_hoisted_4","_createBlock","_resolveDynamicComponent","BtnDropdownSplit","BtnDropdownSingle","_mergeProps","_withCtx","slot"],"mappings":";;;;AAwCO,SAASA,EAAmBC,GAAyBC,GAAiC;AACzF,QAAMC,IAASC,EAAA,GACTC,IAAOD,EAAA,GACPE,IAAWF,EAAI,EAAK,GAGpBG,IAAYC,EAAoB,MAAMP,EAAM,SAAS,OAAO,GAE5DQ,IAAOD,EAAe,MACrBP,EAAM,SACE,QAGRA,EAAM,WACE,SAGRA,EAAM,YACE,UAGJ,QACV,GAEKS,IAAYF,EAAoB,MAAM,GAAGC,EAAK,KAAK,IAAIF,EAAU,KAAK,EAAE,GAExEI,IAAUH,EAAS,OAAO;AAAA,IAC5B,UAAYP,EAAM,UAAUA,EAAM,aAAaA,EAAM;AAAA,IACrD,QAAUA,EAAM;AAAA,IAChB,WAAaA,EAAM;AAAA,IACnB,UAAYA,EAAM;AAAA,IAClB,UAAYK,EAAS;AAAA,IACrB,CAACL,EAAM,QAAQ,EAAE,GAAG,CAAC,CAACA,EAAM;AAAA,EAAA,EAC9B,GAEIW,IAAgBJ,EAAS,MAAM;AACjC,UAAMG,IAAU;AAAA,MACZ,KAAK;AAAA,MACL,CAACV,EAAM,WAAW,EAAE,GAAG,CAAC,CAACA,EAAM;AAAA,MAC/B,aAAa,CAAC,CAACA,EAAM;AAAA,MACrB,YAAY,CAACA,EAAM;AAAA,IAAA;AAGvB,QAAG,OAAOA,EAAM,eAAgB;AAC5BU,MAAAA,EAAQV,EAAM,WAAW,IAAI;AAAA,aAEzB,MAAM,QAAQA,EAAM,WAAW;AACnC,iBAAUY,KAASZ,EAAM;AACrBU,QAAAA,EAAQE,CAAK,IAAI;AAAA,QAEzB,CACQZ,EAAM,eACV,OAAO,OAAOU,GAASV,EAAM,WAAW;AAG5C,WAAOU;AAAAA,EACX,CAAC,GAEK,EAAE,gBAAAG,GAAgB,QAAAC,EAAA,IAAWC,EAAYb,GAAQE,GAAM;AAAA,IACzD,WAAAK;AAAA,IACA,YAAYT,EAAM,cAAc;AAAA,MAC5BgB,EAAOhB,EAAM,UAAU,CAAC;AAAA,MACxBiB,EAAA;AAAA,IAAK;AAAA,EACT,CACH;AAED,WAASC,IAAO;AAGZ,IAFAb,EAAS,QAAQ,IAEd,GAACH,EAAO,SAAS,CAACE,EAAK,WAI1BU,EAAA,GAEAb,EAAK,MAAM;AAAA,EACf;AAEA,WAASkB,IAAO;AACZ,IAAAd,EAAS,QAAQ,IAEjBH,EAAO,OAAO,KAAA,GAEdD,EAAK,MAAM;AAAA,EACf;AAEA,WAASmB,IAAS;AACd,IAAIf,EAAS,QAITc,EAAA,IAHAD,EAAA;AAAA,EAKR;AAEA,WAASG,EAAYC,GAAsB;AACvC,UAAMC,IAAQ,MAAM,KAAKnB,EAAK,OAAO,IAAI,iBAAiB,gCAAgC,KAAK,EAAE;AAEjG,eAAUoB,KAAKD;AACX,UAAGD,MAAYC,EAAMC,CAAC;AAClB,eAAO;AAIf,WAAO;AAAA,EACX;AAEA,WAASC,EAAOC,GAAe;AAC3B,QAAG,EAAEA,EAAE,yBAAyB,cAAc;AAC1C,MAAAP,EAAA;AAEA;AAAA,IACJ;AAEA,KAAGf,EAAK,SAAS,CAACA,EAAK,OAAO,IAAI,SAASsB,EAAE,aAAa,KAAK,CAACxB,EAAO,OAAO,SAASwB,EAAE,aAAa,MAClGP,EAAA;AAAA,EAER;AAEA,WAASQ,EAAQD,GAAe;AAC5B,IAAAzB,EAAK,SAASyB,CAAC;AAAA,EACnB;AAEA,WAASE,EAAcF,GAAe;AAClC,IAAAA,EAAE,QAAQ,cAAc,IAAI,MAAM,SAASA,CAAC,CAAC,GAE7CzB,EAAK,eAAeyB,CAAC,GAEjBA,EAAE,oBACFN,EAAA;AAAA,EAER;AAEA,WAASS,EAAYH,GAAiB;AAClC,QAAG,EAAEA,EAAE,kBAAkB,cAAc;AACnC,MAAAP,EAAA;AAEA;AAAA,IACJ;AAEA,IAAG,CAACE,EAAYK,EAAE,MAAM,KAAK,CAACA,EAAE,oBAC5BP,EAAA;AAAA,EAER;AAEA,SAAAW,EAAY,MAAM;AACd,IAAGzB,EAAS,QACR,OAAO,iBAAiB,UAAUS,CAAM,IAGxC,OAAO,oBAAoB,UAAUA,CAAM;AAAA,EAEnD,CAAC,GAEM;AAAA,IACH,QAAAZ;AAAA,IACA,MAAAE;AAAA,IACA,WAAAE;AAAA,IACA,UAAAD;AAAA,IACA,gBAAAQ;AAAA,IACA,WAAAJ;AAAA,IACA,MAAAD;AAAA,IACA,SAAAE;AAAA,IACA,eAAAC;AAAA,IACA,MAAAO;AAAA,IACA,MAAAC;AAAA,IACA,QAAAC;AAAA,IACA,QAAAK;AAAA,IACA,SAAAE;AAAA,IACA,eAAAC;AAAA,IACA,aAAAC;AAAA,EAAA;AAER;;;;;;;;;;;;;;;;;;;;;AChNA,UAAM7B,IAAQ+B,GAKR9B,IAAO+B,GAEP;AAAA,MACF,QAAA9B;AAAA,MACA,MAAAE;AAAA,MACA,eAAAO;AAAA,MACA,SAAAD;AAAA,MACA,UAAAL;AAAA,MACA,gBAAAQ;AAAA,MACA,QAAAY;AAAA,MACA,eAAAG;AAAA,MACA,aAAAC;AAAA,IAAA,IACA9B,EAAmBC,GAAOC,CAAI;2BAI9BgC,EA4BM,OAAA;AAAA,MA3BF,OAAKC,EAAA,CAAC,aACEC,EAAAzB,CAAA,CAAO,CAAA;AAAA,IAAA;MACf0B,EAaOC,EAAA,QAAA,UAAAC,EAAAC,EAAA,EAAA,QAAA,CAXgBC,MAAoBtC,EAAA,QAASsC,GAAE,UAAEL,EAAA9B,CAAA,GAAQ,QAAE8B,EAAAV,CAAA,GAAM,eAAEU,EAAAP,CAAA,EAAA,KAF1E,MAaO;AAAA,QAVHa,EASS,UAAA;AAAA,mBARD;AAAA,UAAJ,KAAIvC;AAAA,UACJ,MAAK;AAAA,UACJ,cAAWiC,EAAAxB,CAAA,GAAa,mBAAA,IAAA;AAAA,UACzB,iBAAc;AAAA,UACb,iBAAewB,EAAA9B,CAAA;AAAA,UACf,QAAIqC,EAAA,CAAA,MAAAA,EAAA,CAAA;AAAA,oBAAEP,EAAAV,CAAA,KAAAU,EAAAV,CAAA,EAAA,GAAAkB,CAAA;AAAA,UACN,SAAKD,EAAA,CAAA,MAAAA,EAAA,CAAA;AAAA,oBAAEP,EAAAP,CAAA,KAAAO,EAAAP,CAAA,EAAA,GAAAe,CAAA;AAAA,QAAA,KACLZ,EAAA,KAAK,GAAA,IAAAa,CAAA;AAAA,MAAA;MAGhBC,EAUeV,EAAAW,CAAA,GAAA;AAAA,iBATP;AAAA,QAAJ,KAAI1C;AAAA,QACH,OAAK8B,EAAA;AAAA,gBAA4BC,EAAA9B,CAAA;AAAA,QAAA;QAGjC,SAAO8B,EAAAtB,CAAA,CAAc;AAAA,QACrB,QAAMsB,EAAAV,CAAA;AAAA,QACN,SAAOU,EAAAN,CAAA;AAAA,QACP,+BAAD,MAAA;AAAA,QAAA,GAAkB,CAAA,SAAA,CAAA;AAAA,MAAA;mBAClB,MAAQ;AAAA,UAARO,EAAQC,EAAA,QAAA,SAAA;AAAA,QAAA;;;;;;;;;;;;;;;;;;;;;;;;;AC/CpB,UAAMrC,IAAQ+B,GAKR9B,IAAO+B,GAEP;AAAA,MACF,QAAA9B;AAAA,MACA,MAAAE;AAAA,MACA,eAAAO;AAAA,MACA,SAAAD;AAAA,MACA,UAAAL;AAAA,MACA,gBAAAQ;AAAA,MACA,QAAAY;AAAA,MACA,SAAAE;AAAA,MACA,eAAAC;AAAA,MACA,aAAAC;AAAA,IAAA,IACA9B,EAAmBC,GAAOC,CAAI;2BAI9BgC,EAwDM,OAAA;AAAA,MAvDF,OAAKC,EAAA,CAAC,gCACEC,EAAAzB,CAAA,CAAO,CAAA;AAAA,IAAA;MAEJqB,EAAA,uBADXK,EAaOC,gDAVOF,EAAA9B,CAAA,GAAQ,QAAE8B,MAAM,eAAEA,EAAAP,CAAA,EAAA,KAHhC,MAaO;AAAA,QATHa,EAQS,UAAA;AAAA,UAPL,MAAK;AAAA,UACJ,SAAON,EAAAxB,CAAA,CAAa;AAAA,UACrB,iBAAc;AAAA,UACb,iBAAewB,EAAA9B,CAAA;AAAA,UACf,QAAIqC,EAAA,CAAA,MAAAA,EAAA,CAAA;AAAA,oBAAEP,EAAAV,CAAA,KAAAU,EAAAV,CAAA,EAAA,GAAAkB,CAAA;AAAA,UACN,SAAKD,EAAA,CAAA,MAAAA,EAAA,CAAA;AAAA,oBAAEP,EAAAR,CAAA,KAAAQ,EAAAR,CAAA,EAAA,GAAAgB,CAAA;AAAA,QAAA,KACLZ,EAAA,KAAK,GAAA,IAAAa,CAAA;AAAA,MAAA;MAGhBH,EAwBM,OAxBNM,GAwBM;AAAA,QAvBFX,EAWOC,EAAA,QAAA,UAAAC,EAAAC,EAAA,EAAA,QAAA,CATgBC,MAAoBtC,EAAA,QAASsC,GAAE,UAAEL,EAAA9B,CAAA,GAAQ,QAAE8B,EAAAV,CAAA,GAAM,eAAEU,EAAAP,CAAA,EAAA,KAF1E,MAWO;AAAA,UARHa,EAO6B,UAAA;AAAA,qBANrB;AAAA,YAAJ,KAAIvC;AAAA,YACJ,MAAK;AAAA,YACL,iBAAc;AAAA,YACb,iBAAeiC,EAAA9B,CAAA;AAAA,YACf,OAAK6B,EAAA,EAAA,GAAMC,EAAAxB,CAAA,GAAa,mBAAA,IAAA,yBAAoDoB,EAAA,MAAA,CAAK;AAAA,YACjF,QAAIW,EAAA,CAAA,MAAAA,EAAA,CAAA;AAAA,sBAAEP,EAAAV,CAAA,KAAAU,EAAAV,CAAA,EAAA,GAAAkB,CAAA;AAAA,YACN,SAAKD,EAAA,CAAA,MAAAA,EAAA,CAAA;AAAA,sBAAEP,EAAAP,CAAA,KAAAO,EAAAP,CAAA,EAAA,GAAAe,CAAA;AAAA,UAAA;;QAEhBE,EAUeV,EAAAW,CAAA,GAAA;AAAA,mBATP;AAAA,UAAJ,KAAI1C;AAAA,UACH,OAAK8B,EAAA;AAAA,kBAAgCC,EAAA9B,CAAA;AAAA,UAAA;UAGrC,SAAO8B,EAAAtB,CAAA,CAAc;AAAA,UACrB,QAAMsB,EAAAV,CAAA;AAAA,UACN,SAAOU,EAAAN,CAAA;AAAA,UACP,+BAAD,MAAA;AAAA,UAAA,GAAkB,CAAA,SAAA,CAAA;AAAA,QAAA;qBAClB,MAAQ;AAAA,YAARO,EAAQC,EAAA,QAAA,SAAA;AAAA,UAAA;;;;MAINN,EAAA,WADVK,EAaOC,gDAVOF,EAAA9B,CAAA,GAAQ,QAAE8B,MAAM,eAAEA,EAAAP,CAAA,EAAA,KAHhC,MAaO;AAAA,QATHa,EAQS,UAAA;AAAA,UAPL,MAAK;AAAA,UACJ,SAAON,EAAAxB,CAAA,CAAa;AAAA,UACrB,iBAAc;AAAA,UACb,iBAAewB,EAAA9B,CAAA;AAAA,UACf,QAAIqC,EAAA,CAAA,MAAAA,EAAA,CAAA;AAAA,oBAAEP,EAAAV,CAAA,KAAAU,EAAAV,CAAA,EAAA,GAAAkB,CAAA;AAAA,UACN,SAAKD,EAAA,CAAA,MAAAA,EAAA,CAAA;AAAA,oBAAEP,EAAAR,CAAA,KAAAQ,EAAAR,CAAA,EAAA,GAAAgB,CAAA;AAAA,QAAA,KACLZ,EAAA,KAAK,GAAA,IAAAiB,EAAA;AAAA,MAAA;;;;;;;;;;;;;;;;;;;;;;;AC1ExB,UAAMhD,IAAQ+B,GAOR9B,IAAO+B;2BAITiB,EAuBYC,EAtBFnB,UAA4BoB,KAApBC,CAAoC,GADtDC,EAuBYrD,GArBK;AAAA,MACZ,SAAK0C,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,IAAMC,MAAS1C,cAAiB0C,CAAI;AAAA,MACzC,eAAYD,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,IAAMC,MAAS1C,oBAAuB0C,CAAI;AAAA,MACtD,QAAID,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,IAAMC,MAAS1C,aAAgB0C,CAAI;AAAA,MACvC,QAAID,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,IAAMC,MAAS1C,aAAgB0C,CAAI;AAAA,IAAA;MAC7B,QAAMW,EACb,CAEoBC,MAHD;AAAA,QACnBnB,EAEoBC,wBAARkB,CAAI,CAAA,CAAA;AAAA,MAAA;MAET,QAAMD,EACb,CAEoBC,MAHD;AAAA,QACnBnB,EAEoBC,wBAARkB,CAAI,CAAA,CAAA;AAAA,MAAA;MAET,OAAKD,EACZ,CAEoBC,MAHF;AAAA,QAClBnB,EAEoBC,uBAARkB,CAAI,CAAA,CAAA;AAAA,MAAA;iBAEpB,MAAQ;AAAA,QAARnB,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;;"}
|
|
@@ -1,5 +1,2 @@
|
|
|
1
|
-
(function(
|
|
2
|
-
|
|
3
|
-
`,'Disable the "computeStyles" modifier\'s `adaptive` option to allow',"for smooth transitions, or remove these properties from the CSS","transition declaration on the popper element if only transitioning","opacity or background-color for example.",`
|
|
4
|
-
|
|
5
|
-
`,"We recommend using the popper element as a wrapper around an inner","element that can have any CSS property transitioned for animations."].join(" "))}var f={placement:M(t.placement),variation:ne(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,Ke(Object.assign({},f,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:l})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,Ke(Object.assign({},f,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}const It={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Lt,data:{}};var ge={passive:!0};function qt(e){var t=e.state,r=e.instance,n=e.options,o=n.scroll,a=o===void 0?!0:o,s=n.resize,p=s===void 0?!0:s,l=V(t.elements.popper),d=[].concat(t.scrollParents.reference,t.scrollParents.popper);return a&&d.forEach(function(f){f.addEventListener("scroll",r.update,ge)}),p&&l.addEventListener("resize",r.update,ge),function(){a&&d.forEach(function(f){f.removeEventListener("scroll",r.update,ge)}),p&&l.removeEventListener("resize",r.update,ge)}}const Ft={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:qt,data:{}};var Wt={left:"right",right:"left",bottom:"top",top:"bottom"};function be(e){return e.replace(/left|right|bottom|top/g,function(t){return Wt[t]})}var Ht={start:"end",end:"start"};function Ge(e){return e.replace(/start|end/g,function(t){return Ht[t]})}function De(e){var t=V(e),r=t.pageXOffset,n=t.pageYOffset;return{scrollLeft:r,scrollTop:n}}function Ae(e){return re(F(e)).left+De(e).scrollLeft}function Ut(e,t){var r=V(e),n=F(e),o=r.visualViewport,a=n.clientWidth,s=n.clientHeight,p=0,l=0;if(o){a=o.width,s=o.height;var d=Fe();(d||!d&&t==="fixed")&&(p=o.offsetLeft,l=o.offsetTop)}return{width:a,height:s,x:p+Ae(e),y:l}}function Xt(e){var t,r=F(e),n=De(e),o=(t=e.ownerDocument)==null?void 0:t.body,a=Y(r.scrollWidth,r.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=Y(r.scrollHeight,r.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),p=-n.scrollLeft+Ae(e),l=-n.scrollTop;return L(o||r).direction==="rtl"&&(p+=Y(r.clientWidth,o?o.clientWidth:0)-a),{width:a,height:s,x:p,y:l}}function ze(e){var t=L(e),r=t.overflow,n=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(r+o+n)}function Je(e){return["html","body","#document"].indexOf(q(e))>=0?e.ownerDocument.body:R(e)&&ze(e)?e:Je(ve(e))}function fe(e,t){var r;t===void 0&&(t=[]);var n=Je(e),o=n===((r=e.ownerDocument)==null?void 0:r.body),a=V(n),s=o?[a].concat(a.visualViewport||[],ze(n)?n:[]):n,p=t.concat(s);return o?p:p.concat(fe(ve(s)))}function Re(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function Yt(e,t){var r=re(e,!1,t==="fixed");return r.top=r.top+e.clientTop,r.left=r.left+e.clientLeft,r.bottom=r.top+e.clientHeight,r.right=r.left+e.clientWidth,r.width=e.clientWidth,r.height=e.clientHeight,r.x=r.left,r.y=r.top,r}function Qe(e,t,r){return t===Le?Re(Ut(e,r)):X(t)?Yt(t,r):Re(Xt(F(e)))}function Kt(e){var t=fe(ve(e)),r=["absolute","fixed"].indexOf(L(e).position)>=0,n=r&&R(e)?le(e):e;return X(n)?t.filter(function(o){return X(o)&&We(o,n)&&q(o)!=="body"}):[]}function Gt(e,t,r,n){var o=t==="clippingParents"?Kt(e):[].concat(t),a=[].concat(o,[r]),s=a[0],p=a.reduce(function(l,d){var f=Qe(e,d,n);return l.top=Y(f.top,l.top),l.right=me(f.right,l.right),l.bottom=me(f.bottom,l.bottom),l.left=Y(f.left,l.left),l},Qe(e,s,n));return p.width=p.right-p.left,p.height=p.bottom-p.top,p.x=p.left,p.y=p.top,p}function Ze(e){var t=e.reference,r=e.element,n=e.placement,o=n?M(n):null,a=n?ne(n):null,s=t.x+t.width/2-r.width/2,p=t.y+t.height/2-r.height/2,l;switch(o){case A:l={x:s,y:t.y-r.height};break;case j:l={x:s,y:t.y+t.height};break;case N:l={x:t.x+t.width,y:p};break;case z:l={x:t.x-r.width,y:p};break;default:l={x:t.x,y:t.y}}var d=o?Be(o):null;if(d!=null){var f=d==="y"?"height":"width";switch(a){case ee:l[d]=l[d]-(t[f]/2-r[f]/2);break;case ae:l[d]=l[d]+(t[f]/2-r[f]/2);break}}return l}function de(e,t){t===void 0&&(t={});var r=t,n=r.placement,o=n===void 0?e.placement:n,a=r.strategy,s=a===void 0?e.strategy:a,p=r.boundary,l=p===void 0?vt:p,d=r.rootBoundary,f=d===void 0?Le:d,v=r.elementContext,w=v===void 0?se:v,c=r.altBoundary,x=c===void 0?!1:c,g=r.padding,m=g===void 0?0:g,C=Xe(typeof m!="number"?m:Ye(m,ie)),S=w===se?gt:se,$=e.rects.popper,u=e.elements[x?S:w],b=Gt(X(u)?u:u.contextElement||F(e.elements.popper),l,f,s),h=re(e.elements.reference),O=Ze({reference:h,element:$,strategy:"absolute",placement:o}),P=Re(Object.assign({},$,O)),k=w===se?P:h,E={top:b.top-k.top+C.top,bottom:k.bottom-b.bottom+C.bottom,left:b.left-k.left+C.left,right:k.right-b.right+C.right},y=e.modifiersData.offset;if(w===se&&y){var B=y[o];Object.keys(E).forEach(function(D){var G=[N,j].indexOf(D)>=0?1:-1,J=[A,j].indexOf(D)>=0?"y":"x";E[D]+=B[J]*G})}return E}function Jt(e,t){t===void 0&&(t={});var r=t,n=r.placement,o=r.boundary,a=r.rootBoundary,s=r.padding,p=r.flipVariations,l=r.allowedAutoPlacements,d=l===void 0?qe:l,f=ne(n),v=f?p?Ie:Ie.filter(function(x){return ne(x)===f}):ie,w=v.filter(function(x){return d.indexOf(x)>=0});w.length===0&&(w=v,process.env.NODE_ENV!=="production"&&console.error(["Popper: The `allowedAutoPlacements` option did not allow any","placements. Ensure the `placement` option matches the variation","of the allowed placements.",'For example, "auto" cannot be used to allow "bottom-start".','Use "auto-start" instead.'].join(" ")));var c=w.reduce(function(x,g){return x[g]=de(e,{placement:g,boundary:o,rootBoundary:a,padding:s})[M(g)],x},{});return Object.keys(c).sort(function(x,g){return c[x]-c[g]})}function Qt(e){if(M(e)===he)return[];var t=be(e);return[Ge(e),t,Ge(t)]}function Zt(e){var t=e.state,r=e.options,n=e.name;if(!t.modifiersData[n]._skip){for(var o=r.mainAxis,a=o===void 0?!0:o,s=r.altAxis,p=s===void 0?!0:s,l=r.fallbackPlacements,d=r.padding,f=r.boundary,v=r.rootBoundary,w=r.altBoundary,c=r.flipVariations,x=c===void 0?!0:c,g=r.allowedAutoPlacements,m=t.options.placement,C=M(m),S=C===m,$=l||(S||!x?[be(m)]:Qt(m)),u=[m].concat($).reduce(function(oe,H){return oe.concat(M(H)===he?Jt(t,{placement:H,boundary:f,rootBoundary:v,padding:d,flipVariations:x,allowedAutoPlacements:g}):H)},[]),b=t.rects.reference,h=t.rects.popper,O=new Map,P=!0,k=u[0],E=0;E<u.length;E++){var y=u[E],B=M(y),D=ne(y)===ee,G=[A,j].indexOf(B)>=0,J=G?"width":"height",T=de(t,{placement:y,boundary:f,rootBoundary:v,altBoundary:w,padding:d}),I=G?D?N:z:D?j:A;b[J]>h[J]&&(I=be(I));var we=be(I),Q=[];if(a&&Q.push(T[B]<=0),p&&Q.push(T[I]<=0,T[we]<=0),Q.every(function(oe){return oe})){k=y,P=!1;break}O.set(y,Q)}if(P)for(var Ce=x?3:1,je=function(H){var ue=u.find(function(Oe){var Z=O.get(Oe);if(Z)return Z.slice(0,H).every(function(Ne){return Ne})});if(ue)return k=ue,"break"},ce=Ce;ce>0;ce--){var xe=je(ce);if(xe==="break")break}t.placement!==k&&(t.modifiersData[n]._skip=!0,t.placement=k,t.reset=!0)}}const _t={name:"flip",enabled:!0,phase:"main",fn:Zt,requiresIfExists:["offset"],data:{_skip:!1}};function _e(e,t,r){return r===void 0&&(r={x:0,y:0}),{top:e.top-t.height-r.y,right:e.right-t.width+r.x,bottom:e.bottom-t.height+r.y,left:e.left-t.width-r.x}}function et(e){return[A,N,j,z].some(function(t){return e[t]>=0})}function er(e){var t=e.state,r=e.name,n=t.rects.reference,o=t.rects.popper,a=t.modifiersData.preventOverflow,s=de(t,{elementContext:"reference"}),p=de(t,{altBoundary:!0}),l=_e(s,n),d=_e(p,o,a),f=et(l),v=et(d);t.modifiersData[r]={referenceClippingOffsets:l,popperEscapeOffsets:d,isReferenceHidden:f,hasPopperEscaped:v},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":f,"data-popper-escaped":v})}const tr={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:er};function rr(e,t,r){var n=M(e),o=[z,A].indexOf(n)>=0?-1:1,a=typeof r=="function"?r(Object.assign({},t,{placement:e})):r,s=a[0],p=a[1];return s=s||0,p=(p||0)*o,[z,N].indexOf(n)>=0?{x:p,y:s}:{x:s,y:p}}function nr(e){var t=e.state,r=e.options,n=e.name,o=r.offset,a=o===void 0?[0,0]:o,s=qe.reduce(function(f,v){return f[v]=rr(v,t.rects,a),f},{}),p=s[t.placement],l=p.x,d=p.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=d),t.modifiersData[n]=s}const or={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:nr};function ir(e){var t=e.state,r=e.name;t.modifiersData[r]=Ze({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}const ar={name:"popperOffsets",enabled:!0,phase:"read",fn:ir,data:{}};function sr(e){return e==="x"?"y":"x"}function lr(e){var t=e.state,r=e.options,n=e.name,o=r.mainAxis,a=o===void 0?!0:o,s=r.altAxis,p=s===void 0?!1:s,l=r.boundary,d=r.rootBoundary,f=r.altBoundary,v=r.padding,w=r.tether,c=w===void 0?!0:w,x=r.tetherOffset,g=x===void 0?0:x,m=de(t,{boundary:l,rootBoundary:d,padding:v,altBoundary:f}),C=M(t.placement),S=ne(t.placement),$=!S,u=Be(C),b=sr(u),h=t.modifiersData.popperOffsets,O=t.rects.reference,P=t.rects.popper,k=typeof g=="function"?g(Object.assign({},t.rects,{placement:t.placement})):g,E=typeof k=="number"?{mainAxis:k,altAxis:k}:Object.assign({mainAxis:0,altAxis:0},k),y=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,B={x:0,y:0};if(h){if(a){var D,G=u==="y"?A:z,J=u==="y"?j:N,T=u==="y"?"height":"width",I=h[u],we=I+m[G],Q=I-m[J],Ce=c?-P[T]/2:0,je=S===ee?O[T]:P[T],ce=S===ee?-P[T]:-O[T],xe=t.elements.arrow,oe=c&&xe?Ee(xe):{width:0,height:0},H=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:Ue(),ue=H[G],Oe=H[J],Z=pe(0,O[T],oe[T]),Ne=$?O[T]/2-Ce-Z-ue-E.mainAxis:je-Z-ue-E.mainAxis,rn=$?-O[T]/2+Ce+Z+Oe+E.mainAxis:ce+Z+Oe+E.mainAxis,Ve=t.elements.arrow&&le(t.elements.arrow),nn=Ve?u==="y"?Ve.clientTop||0:Ve.clientLeft||0:0,st=(D=y==null?void 0:y[u])!=null?D:0,on=I+Ne-st-nn,an=I+rn-st,lt=pe(c?me(we,on):we,I,c?Y(Q,an):Q);h[u]=lt,B[u]=lt-I}if(p){var pt,sn=u==="x"?A:z,ln=u==="x"?j:N,_=h[b],$e=b==="y"?"height":"width",ft=_+m[sn],dt=_-m[ln],Me=[A,z].indexOf(C)!==-1,ct=(pt=y==null?void 0:y[b])!=null?pt:0,ut=Me?ft:_-O[$e]-P[$e]-ct+E.altAxis,ht=Me?_+O[$e]+P[$e]-ct-E.altAxis:dt,mt=c&&Me?zt(ut,_,ht):pe(c?ut:ft,_,c?ht:dt);h[b]=mt,B[b]=mt-_}t.modifiersData[n]=B}}const pr={name:"preventOverflow",enabled:!0,phase:"main",fn:lr,requiresIfExists:["offset"]};function fr(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function dr(e){return e===V(e)||!R(e)?De(e):fr(e)}function cr(e){var t=e.getBoundingClientRect(),r=te(t.width)/e.offsetWidth||1,n=te(t.height)/e.offsetHeight||1;return r!==1||n!==1}function ur(e,t,r){r===void 0&&(r=!1);var n=R(t),o=R(t)&&cr(t),a=F(t),s=re(e,o,r),p={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(n||!n&&!r)&&((q(t)!=="body"||ze(a))&&(p=dr(t)),R(t)?(l=re(t,!0),l.x+=t.clientLeft,l.y+=t.clientTop):a&&(l.x=Ae(a))),{x:s.left+p.scrollLeft-l.x,y:s.top+p.scrollTop-l.y,width:s.width,height:s.height}}function hr(e){var t=new Map,r=new Set,n=[];e.forEach(function(a){t.set(a.name,a)});function o(a){r.add(a.name);var s=[].concat(a.requires||[],a.requiresIfExists||[]);s.forEach(function(p){if(!r.has(p)){var l=t.get(p);l&&o(l)}}),n.push(a)}return e.forEach(function(a){r.has(a.name)||o(a)}),n}function mr(e){var t=hr(e);return Se.reduce(function(r,n){return r.concat(t.filter(function(o){return o.phase===n}))},[])}function vr(e){var t;return function(){return t||(t=new Promise(function(r){Promise.resolve().then(function(){t=void 0,r(e())})})),t}}function W(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return[].concat(r).reduce(function(o,a){return o.replace(/%s/,a)},e)}var K='Popper: modifier "%s" provided an invalid %s property, expected %s but got %s',gr='Popper: modifier "%s" requires "%s", but "%s" modifier is not available',tt=["name","enabled","phase","fn","effect","requires","options"];function br(e){e.forEach(function(t){[].concat(Object.keys(t),tt).filter(function(r,n,o){return o.indexOf(r)===n}).forEach(function(r){switch(r){case"name":typeof t.name!="string"&&console.error(W(K,String(t.name),'"name"','"string"','"'+String(t.name)+'"'));break;case"enabled":typeof t.enabled!="boolean"&&console.error(W(K,t.name,'"enabled"','"boolean"','"'+String(t.enabled)+'"'));break;case"phase":Se.indexOf(t.phase)<0&&console.error(W(K,t.name,'"phase"',"either "+Se.join(", "),'"'+String(t.phase)+'"'));break;case"fn":typeof t.fn!="function"&&console.error(W(K,t.name,'"fn"','"function"','"'+String(t.fn)+'"'));break;case"effect":t.effect!=null&&typeof t.effect!="function"&&console.error(W(K,t.name,'"effect"','"function"','"'+String(t.fn)+'"'));break;case"requires":t.requires!=null&&!Array.isArray(t.requires)&&console.error(W(K,t.name,'"requires"','"array"','"'+String(t.requires)+'"'));break;case"requiresIfExists":Array.isArray(t.requiresIfExists)||console.error(W(K,t.name,'"requiresIfExists"','"array"','"'+String(t.requiresIfExists)+'"'));break;case"options":case"data":break;default:console.error('PopperJS: an invalid property has been provided to the "'+t.name+'" modifier, valid properties are '+tt.map(function(n){return'"'+n+'"'}).join(", ")+'; but "'+r+'" was provided.')}t.requires&&t.requires.forEach(function(n){e.find(function(o){return o.name===n})==null&&console.error(W(gr,String(t.name),n,n))})})})}function yr(e,t){var r=new Set;return e.filter(function(n){var o=t(n);if(!r.has(o))return r.add(o),!0})}function wr(e){var t=e.reduce(function(r,n){var o=r[n.name];return r[n.name]=o?Object.assign({},o,n,{options:Object.assign({},o.options,n.options),data:Object.assign({},o.data,n.data)}):n,r},{});return Object.keys(t).map(function(r){return t[r]})}var rt="Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.",Cr="Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.",nt={placement:"bottom",modifiers:[],strategy:"absolute"};function ot(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return!t.some(function(n){return!(n&&typeof n.getBoundingClientRect=="function")})}function xr(e){e===void 0&&(e={});var t=e,r=t.defaultModifiers,n=r===void 0?[]:r,o=t.defaultOptions,a=o===void 0?nt:o;return function(p,l,d){d===void 0&&(d=a);var f={placement:"bottom",orderedModifiers:[],options:Object.assign({},nt,a),modifiersData:{},elements:{reference:p,popper:l},attributes:{},styles:{}},v=[],w=!1,c={state:f,setOptions:function(C){var S=typeof C=="function"?C(f.options):C;g(),f.options=Object.assign({},a,f.options,S),f.scrollParents={reference:X(p)?fe(p):p.contextElement?fe(p.contextElement):[],popper:fe(l)};var $=mr(wr([].concat(n,f.options.modifiers)));if(f.orderedModifiers=$.filter(function(y){return y.enabled}),process.env.NODE_ENV!=="production"){var u=yr([].concat($,f.options.modifiers),function(y){var B=y.name;return B});if(br(u),M(f.options.placement)===he){var b=f.orderedModifiers.find(function(y){var B=y.name;return B==="flip"});b||console.error(['Popper: "auto" placements require the "flip" modifier be',"present and enabled to work."].join(" "))}var h=L(l),O=h.marginTop,P=h.marginRight,k=h.marginBottom,E=h.marginLeft;[O,P,k,E].some(function(y){return parseFloat(y)})&&console.warn(['Popper: CSS "margin" styles cannot be used to apply padding',"between the popper and its reference element or boundary.","To replicate margin, use the `offset` modifier, as well as","the `padding` option in the `preventOverflow` and `flip`","modifiers."].join(" "))}return x(),c.update()},forceUpdate:function(){if(!w){var C=f.elements,S=C.reference,$=C.popper;if(!ot(S,$)){process.env.NODE_ENV!=="production"&&console.error(rt);return}f.rects={reference:ur(S,le($),f.options.strategy==="fixed"),popper:Ee($)},f.reset=!1,f.placement=f.options.placement,f.orderedModifiers.forEach(function(y){return f.modifiersData[y.name]=Object.assign({},y.data)});for(var u=0,b=0;b<f.orderedModifiers.length;b++){if(process.env.NODE_ENV!=="production"&&(u+=1,u>100)){console.error(Cr);break}if(f.reset===!0){f.reset=!1,b=-1;continue}var h=f.orderedModifiers[b],O=h.fn,P=h.options,k=P===void 0?{}:P,E=h.name;typeof O=="function"&&(f=O({state:f,options:k,name:E,instance:c})||f)}}},update:vr(function(){return new Promise(function(m){c.forceUpdate(),m(f)})}),destroy:function(){g(),w=!0}};if(!ot(p,l))return process.env.NODE_ENV!=="production"&&console.error(rt),c;c.setOptions(d).then(function(m){!w&&d.onFirstUpdate&&d.onFirstUpdate(m)});function x(){f.orderedModifiers.forEach(function(m){var C=m.name,S=m.options,$=S===void 0?{}:S,u=m.effect;if(typeof u=="function"){var b=u({state:f,name:C,instance:c,options:$}),h=function(){};v.push(b||h)}})}function g(){v.forEach(function(m){return m()}),v=[]}return c}}var Or=[Ft,ar,It,Bt,or,_t,pr,Nt,tr],$r=xr({defaultModifiers:Or});const Sr=i.defineComponent({props:{componentPrefix:String,size:String,sizePrefix:String},computed:{sizeableClassPrefix(){return this.sizePrefix||this.componentPrefix},hasSizeablePrefix(){return this.size===void 0?!1:!!this.size.match(new RegExp(`^${this.sizeableClassPrefix}`))},sizeableClass(){return this.size?!this.sizeableClassPrefix||this.hasSizeablePrefix?this.size:`${this.sizeableClassPrefix}-${this.size}`:""}}}),Pr={props:{componentPrefix:String,variant:String,variantPrefix:String},computed:{variantClassPrefix(){return this.variantPrefix||this.componentPrefix},hasVariantPrefix(){return this.variant===void 0?!1:!!this.variant.match(new RegExp(`^${this.variantClassPrefix}`))},variantClass(){return this.variant?!this.variantClassPrefix||this.hasVariantPrefix?this.variant:`${this.variantClassPrefix}-${this.variant}`:""}}},kr=i.defineComponent({mixins:[Sr,Pr],props:{active:Boolean,block:Boolean,componentPrefix:{type:String,default:"btn"},disabled:Boolean,label:String,outline:Boolean,tag:String,variant:{type:String,default:"primary"}},computed:{classes(){return["btn",this.variantClass,this.sizeableClass,this.active&&"active",this.block&&"btn-block",this.disabled&&"disabled"]},component(){return this.tag?this.tag:this.$attrs.href?"a":"button"},variantClassPrefix(){return(this.variantPrefix||this.componentPrefix)+(this.outline?"-outline":"")}}}),Er=(e,t)=>{const r=e.__vccOpts||e;for(const[n,o]of t)r[n]=o;return r};function Br(e,t,r,n,o,a){return i.openBlock(),i.createBlock(i.resolveDynamicComponent(e.component),i.mergeProps(e.$attrs,{disabled:e.disabled,class:e.classes,role:"button"}),{default:i.withCtx(()=>[i.renderSlot(e.$slots,"default",{},()=>[i.createTextVNode(i.toDisplayString(e.label),1)])]),_:3},16,["disabled","class"])}const Dr=Er(kr,[["render",Br]]),Ar=i.defineComponent({props:{componentPrefix:String,size:String,sizePrefix:String},computed:{sizeableClassPrefix(){return this.sizePrefix||this.componentPrefix},hasSizeablePrefix(){return this.size===void 0?!1:!!this.size.match(new RegExp(`^${this.sizeableClassPrefix}`))},sizeableClass(){return this.size?!this.sizeableClassPrefix||this.hasSizeablePrefix?this.size:`${this.sizeableClassPrefix}-${this.size}`:""}}}),zr=i.defineComponent({name:"BtnGroup",mixins:[Ar],props:{sizePrefix:{type:String,default(){return"btn-group"}},toggle:Boolean,vertical:Boolean},computed:{classes(){return{"btn-group":!this.vertical,"btn-group-toggle":this.toggle,"btn-group-vertical":this.vertical,[this.sizeableClass]:!!this.size}}}}),Rr=(e,t)=>{const r=e.__vccOpts||e;for(const[n,o]of t)r[n]=o;return r},Tr=["data-toggle"];function jr(e,t,r,n,o,a){return i.openBlock(),i.createElementBlock("div",{class:i.normalizeClass(e.classes),"data-toggle":e.toggle?"buttons":!1,role:"group"},[i.renderSlot(e.$slots,"default")],10,Tr)}const Nr=Rr(zr,[["render",jr]]);i.defineComponent({name:"BtnGroupToggle"});function Te(e,t){e.props.class=`${e.props.class||""} ${t}`.trim()}function it(e){for(const t of e){t.type===i.Fragment&&it(t.children),t.props=Object.assign({class:void 0},t.props),t.attrs=Object.assign({},t.attrs),t.attrs.on||(t.attrs.on={});const r=t.props.class&&t.props.class.match(/dropdown-item/),n=t.props.class&&t.props.class.match(/dropdown-divider/);typeof t.type=="string"&&t.type.match(/^h\d$/)?Te(t,"dropdown-header"):t.type==="hr"&&!n?(t.type="div",Te(t,"dropdown-divider")):!r&&!n&&Te(t,"dropdown-item")}return e}const Vr=(e,t)=>i.h("div",{},it(t.slots.default())),Mr=i.defineComponent({name:"DropdownMenu",components:{DropdownMenuItems:Vr},props:{align:{type:String,default:"left",validate(e){return["left","right"].indexOf(e.toLowerCase())!==-1}},show:Boolean}}),Lr=(e,t)=>{const r=e.__vccOpts||e;for(const[n,o]of t)r[n]=o;return r},Ir=["aria-labelledby"];function qr(e,t,r,n,o,a){const s=i.resolveComponent("dropdown-menu-items");return i.openBlock(),i.createElementBlock("div",{class:i.normalizeClass(["dropdown-menu",{"dropdown-menu-left":e.align==="left","dropdown-menu-right":e.align==="right",show:e.show}]),"aria-labelledby":e.$attrs.id},[i.createVNode(s,null,{default:i.withCtx(()=>[i.renderSlot(e.$slots,"default")]),_:3})],10,Ir)}const Fr=Lr(Mr,[["render",qr]]),Wr=i.defineComponent({props:{expanded:{type:Boolean,default:!1},id:{type:String,default:void 0},href:{type:String,default:void 0},to:{type:[String,Object],default:void 0}},computed:{is(){return this.to?"router-link":this.href?"a":"button"}}}),ye=(e,t)=>{const r=e.__vccOpts||e;for(const[n,o]of t)r[n]=o;return r};function Hr(e,t,r,n,o,a){return i.openBlock(),i.createBlock(i.resolveDynamicComponent(e.is),i.mergeProps({id:e.id},e.to?{to:e.to}:{href:e.href},{"aria-haspopup":"true","aria-expanded":e.expanded,type:e.is==="button"?"button":void 0}),{default:i.withCtx(()=>[i.renderSlot(e.$slots,"default")]),_:3},16,["id","aria-expanded","type"])}const Ur=ye(Wr,[["render",Hr]]),at=i.defineComponent({components:{BtnDropdownAction:Ur,BtnGroup:Nr,DropdownMenu:Fr},extends:Dr,props:{align:{type:String,default:"left",validate(e){return["left","right"].indexOf(e.toLowerCase())!==-1}},animated:{type:Boolean,default:!0},buttonClass:[Object,String],caret:{type:Boolean,default:!0},dropup:{type:Boolean,default:!1},dropright:{type:Boolean,default:!1},dropleft:{type:Boolean,default:!1},height:String,href:String,nav:Boolean,label:String,offset:{type:Number,default:5},rotate:{type:Boolean,default:!1},split:{type:Boolean,default:!1},to:[String,Object],type:{type:String,default:"button"},width:String},emits:["click-toggle","show","hide","toggle"],data(){return{popper:null,triggerAnimation:!1,expanded:!1}},computed:{scope(){return{placement:this.placement,variantClassPrefix:this.variantClassPrefix,sizeableClassPrefix:this.sizeableClassPrefix,classes:this.classes,actionClasses:this.actionClasses,toggleStyle:this.toggleStyle,toggleClasses:this.toggleClasses,focus:this.focus,queryFocusable:this.queryFocusable,isFocusable:this.isFocusable,toggle:this.toggle,show:this.show,hide:this.hide,onBlur:this.onBlur,onClickItem:this.onClickItem,onClickToggle:this.onClickToggle,expanded:this.expanded}},placement(){return this.dropup?"top":this.dropleft?"left":this.dropright?"right":"bottom"},variantClassPrefix(){return"btn"+(this.outline?"-outline":"")},sizeableClassPrefix(){return"btn"},classes(){return{dropdown:this.dropup&&this.dropright&&this.dropleft,dropup:this.dropup,dropright:this.dropright,dropleft:this.dropleft,"icon-only":!this.nav&&!this.split&&!!this.$slots.icon&&!this.$slots.label,"hide-caret":!this.caret,expanded:this.expanded,"rotate-90":!this.nav&&this.split&&this.rotate&&this.expanded}},actionClasses(){return Object.assign({btn:!this.nav,[this.variantClass]:!this.nav&&!!this.variant,[this.sizeableClass]:!!this.size},typeof this.buttonClass=="object"?this.buttonClass:{[this.buttonClass]:!!this.buttonClass})},toggleStyle(){return{width:this.width,height:this.height}},toggleClasses(){return Object.assign({active:this.active,btn:!this.nav,"btn-block":!!this.block,"nav-link":!!this.nav,"rotate-90":!this.split&&this.rotate&&this.expanded,"dropdown-toggle":!0,"dropdown-toggle-split":!this.nav&&this.split,[this.variantClass]:!this.nav&&!!this.variant,[this.sizeableClass]:!!this.size},typeof this.buttonClass=="object"?this.buttonClass:{[this.buttonClass]:!!this.buttonClass})}},watch:{expanded(e){this.$nextTick(()=>{this.$emit(e?"show":"hide"),this.$emit("toggle",e)}),setTimeout(()=>{e?document.addEventListener("click",this.onClickDocument):document.removeEventListener("click",this.onClickDocument)})}},beforeUnmount(){this.popper&&this.popper.destroy()},methods:{focus(){var e;(e=this.$el)==null||e.querySelector(".dropdown-toggle").focus()},queryFocusable(){var e;return(e=this.$el)==null?void 0:e.querySelector(".dropdown-menu").querySelectorAll('label, input, select, textarea, [tabindex]:not([tabindex="-1"])')},isFocusable(e){const t=this.queryFocusable();for(const r in t)if(e===t[r])return!0;return!1},toggle(){this.expanded?this.hide():this.show()},show(){var t,r;this.expanded=!0;const e=this.$refs.split&&((t=this.$refs.split)==null?void 0:t.$el)||this.$el;!this.nav&&!this.popper?this.popper=$r(e,(r=this.$refs.menu)==null?void 0:r.$el,{placement:`${this.placement}-${this.align==="left"?"start":"end"}`,onFirstUpdate:()=>{this.triggerAnimation=this.animated},modifiers:[{name:"offset",options:{offset:[0,this.nav?1:this.offset]}}]}):this.popper&&this.popper.update()},hide(){this.expanded=!1},onBlur(e){var t;(this.$refs.menu&&!((t=this.$refs.menu)!=null&&t.$el.contains(e.relatedTarget))||!(this!=null&&this.$el.contains(e.relatedTarget)))&&this.hide()},onClickDocument(e){this!=null&&this.$el.contains(e.target)||this.hide()},onClickItem(e){this.isFocusable(e.target)||this.hide()},onClickToggle(e){e.target.dispatchEvent(new Event("focus",e)),this.$emit("click-toggle",e),e.defaultPrevented||this.toggle()},onKeydown(e){e.target.parentElement.lastElementChild===e.target&&this.hide()}}}),Xr=i.defineComponent({mixins:[at]});function Yr(e,t,r,n,o,a){const s=i.resolveComponent("btn-dropdown-action"),p=i.resolveComponent("dropdown-menu"),l=i.resolveComponent("btn-group");return i.openBlock(),i.createBlock(l,{class:i.normalizeClass(e.classes)},{default:i.withCtx(()=>[i.renderSlot(e.$slots,"button",i.normalizeProps(i.guardReactiveProps(e.scope)),()=>[i.createVNode(s,{id:e.$attrs.id,ref:"button",expanded:e.expanded,href:e.href,to:e.to,style:i.normalizeStyle(e.toggleStyle),class:i.normalizeClass(e.toggleClasses),onBlur:e.onBlur,onClick:e.onClickToggle},{default:i.withCtx(()=>[i.renderSlot(e.$slots,"icon"),i.renderSlot(e.$slots,"label",{},()=>[i.createTextVNode(i.toDisplayString(e.label),1)])]),_:3},8,["id","expanded","href","to","style","class","onBlur","onClick"])]),i.createVNode(p,{id:e.$attrs.id,ref:"menu",align:e.align,show:e.expanded,class:i.normalizeClass({animated:e.triggerAnimation}),onBlur:e.onBlur,onClick:e.onClickItem,onKeydown:i.withKeys(e.onKeydown,["tab"]),onMousedown:t[0]||(t[0]=i.withModifiers(()=>{},["prevent"]))},{default:i.withCtx(()=>[i.renderSlot(e.$slots,"default")]),_:3},8,["id","align","show","class","onBlur","onClick","onKeydown"])]),_:3},8,["class"])}const Kr=ye(Xr,[["render",Yr]]),Gr=i.defineComponent({mixins:[at],emits:["click"]}),Jr=["id","aria-expanded"];function Qr(e,t,r,n,o,a){const s=i.resolveComponent("btn-dropdown-action"),p=i.resolveComponent("dropdown-menu"),l=i.resolveComponent("btn-group");return i.openBlock(),i.createBlock(l,{class:i.normalizeClass([e.classes,"btn-dropdown-split"])},{default:i.withCtx(()=>[e.dropleft?i.createCommentVNode("",!0):i.renderSlot(e.$slots,"button",i.normalizeProps(i.mergeProps({key:0},e.scope)),()=>[e.dropleft?i.createCommentVNode("",!0):(i.openBlock(),i.createBlock(s,{key:0,id:e.$attrs.id,ref:"button",expanded:e.expanded,href:e.href,to:e.to,class:i.normalizeClass(e.actionClasses),onClick:t[0]||(t[0]=d=>e.$emit("click",d))},{default:i.withCtx(()=>[i.renderSlot(e.$slots,"icon"),i.renderSlot(e.$slots,"label",{},()=>[i.createTextVNode(i.toDisplayString(e.label),1)])]),_:3},8,["id","expanded","href","to","class"]))]),i.createVNode(l,{ref:"split"},{default:i.withCtx(()=>[i.renderSlot(e.$slots,"split",i.normalizeProps(i.guardReactiveProps(e.scope)),()=>[e.split?(i.openBlock(),i.createElementBlock("button",{key:0,id:e.$attrs.id,type:"button","aria-haspopup":"true","aria-expanded":e.expanded,class:i.normalizeClass(e.toggleClasses),onBlur:t[1]||(t[1]=(...d)=>e.onBlur&&e.onBlur(...d)),onClick:t[2]||(t[2]=(...d)=>e.onClickToggle&&e.onClickToggle(...d))},null,42,Jr)):i.createCommentVNode("",!0)]),i.createVNode(p,{id:e.$attrs.id,ref:"menu",align:e.align,show:e.expanded,class:i.normalizeClass({animated:e.triggerAnimation}),onBlur:e.onBlur,onClick:e.onClickItem,onKeydown:i.withKeys(e.onKeydown,["tab"]),onMousedown:t[3]||(t[3]=i.withModifiers(()=>{},["prevent"]))},{default:i.withCtx(()=>[i.renderSlot(e.$slots,"default")]),_:3},8,["id","align","show","class","onBlur","onClick","onKeydown"])]),_:3},512),e.dropleft?i.renderSlot(e.$slots,"button",i.normalizeProps(i.mergeProps({key:1},e.scope)),()=>[e.dropleft?(i.openBlock(),i.createBlock(s,{key:0,id:e.$attrs.id,ref:"button",expanded:e.expanded,href:e.href,to:e.to,class:i.normalizeClass(e.actionClasses),onClick:t[4]||(t[4]=d=>e.$emit("click",d))},{default:i.withCtx(()=>[i.renderSlot(e.$slots,"icon"),i.renderSlot(e.$slots,"label",{},()=>[i.createTextVNode(i.toDisplayString(e.label),1)])]),_:3},8,["id","expanded","href","to","class"])):i.createCommentVNode("",!0)]):i.createCommentVNode("",!0)]),_:3},8,["class"])}const Zr=ye(Gr,[["render",Qr]]),_r=i.defineComponent({name:"BtnDropdown",components:{BtnDropdownSplit:Zr,BtnDropdownSingle:Kr},inheritAttrs:!1,emits:["click","click-toggle","dropdown","show","hide","toggle"]}),pn="";function en(e,t,r,n,o,a){return i.openBlock(),i.createBlock(i.resolveDynamicComponent(e.$attrs.split===void 0||e.$attrs.nav?"btn-dropdown-single":"btn-dropdown-split"),i.mergeProps({class:"btn-dropdown"},e.$attrs,{onClick:t[0]||(t[0]=(...s)=>e.$emit("click",...s)),onClickToggle:t[1]||(t[1]=(...s)=>e.$emit("click-toggle",...s)),onDropdown:t[2]||(t[2]=(...s)=>e.$emit("dropdown",...s)),onShow:t[3]||(t[3]=(...s)=>e.$emit("show",...s)),onHide:t[4]||(t[4]=(...s)=>e.$emit("hide",...s)),onToggle:t[5]||(t[5]=(...s)=>e.$emit("toggle",...s))}),i.createSlots({icon:i.withCtx(()=>[i.renderSlot(e.$slots,"icon")]),button:i.withCtx(s=>[i.renderSlot(e.$slots,"button",i.normalizeProps(i.guardReactiveProps(s)))]),split:i.withCtx(s=>[i.renderSlot(e.$slots,"split",i.normalizeProps(i.guardReactiveProps(s)))]),default:i.withCtx(()=>[i.renderSlot(e.$slots,"default")]),_:2},[e.$attrs.label||e.$slots.label?{name:"label",fn:i.withCtx(()=>[i.renderSlot(e.$slots,"label",{},()=>[i.createTextVNode(i.toDisplayString(e.$attrs.label),1)])]),key:"0"}:void 0]),1040)}const tn=ye(_r,[["render",en]]);U.BtnDropdown=tn,Object.defineProperty(U,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
(function(m,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("@vue-interface/dropdown-menu"),require("@floating-ui/dom"),require("@floating-ui/vue")):typeof define=="function"&&define.amd?define(["exports","vue","@vue-interface/dropdown-menu","@floating-ui/dom","@floating-ui/vue"],e):(m=typeof globalThis<"u"?globalThis:m||self,e(m.BtnDropdown={},m.Vue,m.VueInterfaceDropdownMenu,m.FloatingUiDom,m.FloatingUiVue))})(this,(function(m,e,B,z,T){"use strict";function S(t,C){const c=e.ref(),a=e.ref(),l=e.ref(!1),s=e.computed(()=>t.align??"start"),n=e.computed(()=>t.dropup?"top":t.dropleft?"left":t.dropright?"right":"bottom"),k=e.computed(()=>`${n.value}-${s.value}`),u=e.computed(()=>({dropdown:t.dropup&&t.dropright&&t.dropleft,dropup:t.dropup,dropright:t.dropright,dropleft:t.dropleft,expanded:l.value,[t.size??""]:!!t.size})),b=e.computed(()=>{const r={btn:!0,[t.variant??""]:!!t.variant,"btn-block":!!t.block,"no-caret":!t.caret};if(typeof t.buttonClass=="string")r[t.buttonClass]=!0;else if(Array.isArray(t.buttonClass))for(const w of t.buttonClass)r[w]=!0;else t.buttonClass&&Object.assign(r,t.buttonClass);return r}),{floatingStyles:i,update:p}=T.useFloating(c,a,{placement:k,middleware:t.middleware??[z.offset(t.offset??5),z.flip()]});function y(){l.value=!0,!(!c.value||!a.value)&&(p(),C("show"))}function g(){l.value=!1,c.value?.blur(),C("hide")}function f(){l.value?g():y()}function o(r){const w=Array.from(a.value?.$el.querySelectorAll("label, input, select, textarea")??[]);for(const A in w)if(r===w[A])return!0;return!1}function d(r){if(!(r.relatedTarget instanceof HTMLElement)){g();return}(a.value&&!a.value?.$el.contains(r.relatedTarget)||!c.value?.contains(r.relatedTarget))&&g()}function N(r){C("click",r)}function q(r){r.target?.dispatchEvent(new Event("focus",r)),C("clickToggle",r),r.defaultPrevented||f()}function R(r){if(!(r.target instanceof HTMLElement)){g();return}!o(r.target)&&!r.defaultPrevented&&g()}return e.watchEffect(()=>{l.value?window.addEventListener("resize",p):window.removeEventListener("resize",p)}),{target:c,menu:a,alignment:s,expanded:l,floatingStyles:i,placement:k,side:n,classes:u,buttonClasses:b,show:y,hide:g,toggle:f,onBlur:d,onClick:N,onClickToggle:q,onClickItem:R}}const h=["aria-expanded"],x=e.defineComponent({__name:"BtnDropdownSingle",props:{align:{},block:{type:Boolean},buttonClass:{},caret:{type:Boolean,default:!0},dropup:{type:Boolean},dropright:{type:Boolean},dropleft:{type:Boolean},label:{},offset:{},middleware:{},side:{},size:{},split:{type:Boolean},variant:{default:"btn-primary"}},emits:["click","clickToggle","show","hide"],setup(t,{emit:C}){const c=t,a=C,{target:l,menu:s,buttonClasses:n,classes:k,expanded:u,floatingStyles:b,onBlur:i,onClickToggle:p,onClickItem:y}=S(c,a);return(g,f)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["btn-group",e.unref(k)])},[e.renderSlot(g.$slots,"button",e.normalizeProps(e.guardReactiveProps({target:o=>l.value=o,expanded:e.unref(u),onBlur:e.unref(i),onClickToggle:e.unref(p)})),()=>[e.createElementVNode("button",{ref_key:"target",ref:l,type:"button",class:e.normalizeClass({...e.unref(n),"dropdown-toggle":!0}),"aria-haspopup":"true","aria-expanded":e.unref(u),onBlur:f[0]||(f[0]=(...o)=>e.unref(i)&&e.unref(i)(...o)),onClick:f[1]||(f[1]=(...o)=>e.unref(p)&&e.unref(p)(...o))},e.toDisplayString(t.label),43,h)]),e.createVNode(e.unref(B.DropdownMenu),{ref_key:"menu",ref:s,class:e.normalizeClass({show:e.unref(u)}),style:e.normalizeStyle(e.unref(b)),onBlur:e.unref(i),onClick:e.unref(y),onMousedown:f[2]||(f[2]=e.withModifiers(()=>{},["prevent"]))},{default:e.withCtx(()=>[e.renderSlot(g.$slots,"default")]),_:3},8,["class","style","onBlur","onClick"])],2))}}),P=["aria-expanded"],$={class:"btn-group"},D=["aria-expanded"],E=["aria-expanded"],V=e.defineComponent({__name:"BtnDropdownSplit",props:{align:{},block:{type:Boolean},buttonClass:{},caret:{type:Boolean,default:!0},dropup:{type:Boolean},dropright:{type:Boolean},dropleft:{type:Boolean},label:{},offset:{},middleware:{},side:{},size:{},split:{type:Boolean},variant:{default:"btn-primary"}},emits:["click","clickToggle","show","hide"],setup(t,{emit:C}){const c=t,a=C,{target:l,menu:s,buttonClasses:n,classes:k,expanded:u,floatingStyles:b,onBlur:i,onClick:p,onClickToggle:y,onClickItem:g}=S(c,a);return(f,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["btn-group btn-dropdown-split",e.unref(k)])},[t.dropleft?e.createCommentVNode("",!0):e.renderSlot(f.$slots,"button",e.normalizeProps(e.mergeProps({key:0},{expanded:e.unref(u),onBlur:e.unref(i),onClickToggle:e.unref(y)})),()=>[e.createElementVNode("button",{type:"button",class:e.normalizeClass(e.unref(n)),"aria-haspopup":"true","aria-expanded":e.unref(u),onBlur:o[0]||(o[0]=(...d)=>e.unref(i)&&e.unref(i)(...d)),onClick:o[1]||(o[1]=(...d)=>e.unref(p)&&e.unref(p)(...d))},e.toDisplayString(t.label),43,P)]),e.createElementVNode("div",$,[e.renderSlot(f.$slots,"toggle",e.normalizeProps(e.guardReactiveProps({target:d=>l.value=d,expanded:e.unref(u),onBlur:e.unref(i),onClickToggle:e.unref(y)})),()=>[e.createElementVNode("button",{ref_key:"target",ref:l,type:"button","aria-haspopup":"true","aria-expanded":e.unref(u),class:e.normalizeClass({...e.unref(n),"dropdown-toggle":!0,"dropdown-toggle-split":t.split}),onBlur:o[2]||(o[2]=(...d)=>e.unref(i)&&e.unref(i)(...d)),onClick:o[3]||(o[3]=(...d)=>e.unref(y)&&e.unref(y)(...d))},null,42,D)]),e.createVNode(e.unref(B.DropdownMenu),{ref_key:"menu",ref:s,class:e.normalizeClass({show:e.unref(u)}),style:e.normalizeStyle(e.unref(b)),onBlur:e.unref(i),onClick:e.unref(g),onMousedown:o[4]||(o[4]=e.withModifiers(()=>{},["prevent"]))},{default:e.withCtx(()=>[e.renderSlot(f.$slots,"default")]),_:3},8,["class","style","onBlur","onClick"])]),t.dropleft?e.renderSlot(f.$slots,"button",e.normalizeProps(e.mergeProps({key:1},{expanded:e.unref(u),onBlur:e.unref(i),onClickToggle:e.unref(y)})),()=>[e.createElementVNode("button",{type:"button",class:e.normalizeClass(e.unref(n)),"aria-haspopup":"true","aria-expanded":e.unref(u),onBlur:o[5]||(o[5]=(...d)=>e.unref(i)&&e.unref(i)(...d)),onClick:o[6]||(o[6]=(...d)=>e.unref(p)&&e.unref(p)(...d))},e.toDisplayString(t.label),43,E)]):e.createCommentVNode("",!0)],2))}}),M=e.defineComponent({__name:"BtnDropdown",props:{split:{type:Boolean,default:!1},align:{},block:{type:Boolean},buttonClass:{},caret:{type:Boolean,default:!0},dropup:{type:Boolean},dropright:{type:Boolean},dropleft:{type:Boolean},label:{},offset:{},middleware:{},side:{},size:{},variant:{}},emits:["click","clickToggle","show","hide"],setup(t,{emit:C}){const c=t,a=C;return(l,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.split?V:x),e.mergeProps(c,{onClick:s[0]||(s[0]=(...n)=>a("click",...n)),onClickToggle:s[1]||(s[1]=(...n)=>a("clickToggle",...n)),onShow:s[2]||(s[2]=(...n)=>a("show",...n)),onHide:s[3]||(s[3]=(...n)=>a("hide",...n))}),{button:e.withCtx(n=>[e.renderSlot(l.$slots,"button",e.normalizeProps(e.guardReactiveProps(n)))]),toggle:e.withCtx(n=>[e.renderSlot(l.$slots,"toggle",e.normalizeProps(e.guardReactiveProps(n)))]),split:e.withCtx(n=>[e.renderSlot(l.$slots,"split",e.normalizeProps(e.guardReactiveProps(n)))]),default:e.withCtx(()=>[e.renderSlot(l.$slots,"default")]),_:3},16))}});m.BtnDropdown=M,Object.defineProperty(m,Symbol.toStringTag,{value:"Module"})}));
|
|
2
|
+
//# sourceMappingURL=btn-dropdown.umd.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"btn-dropdown.umd.cjs","sources":["../src/useDropdownHandler.ts","../src/BtnDropdownSingle.vue","../src/BtnDropdownSplit.vue","../src/BtnDropdown.vue"],"sourcesContent":["import { flip, offset, Placement, type Alignment, type Middleware, type OffsetOptions, type Side } from '@floating-ui/dom';\nimport { useFloating } from '@floating-ui/vue';\nimport { DropdownMenu } from '@vue-interface/dropdown-menu';\nimport { computed, ref, watchEffect, type EmitFn, type HTMLAttributes } from 'vue';\n\ntype LiteralUnion<T extends U, U = string> = T | (U & Record<never, never>);\n\nexport type BtnGroupSizes = 'btn-group-xs'\n | 'btn-group-sm' \n | 'btn-group-md'\n | 'btn-group-lg'\n | 'btn-group-xl'\n | 'btn-group-2xl'\n | 'btn-group-3xl'\n | 'btn-group-4xl';\n\nexport type BtnDropdownProps = {\n align?: Alignment;\n block?: boolean;\n buttonClass?: HTMLAttributes['class'],\n caret?: boolean;\n dropup?: boolean;\n dropright?: boolean;\n dropleft?: boolean;\n label?: string;\n offset?: OffsetOptions,\n middleware?: Middleware[],\n side?: Side;\n size?: LiteralUnion<BtnGroupSizes>;\n split?: boolean;\n variant?: string;\n}\n\nexport type BtnDropdownEvents = {\n click: [event: MouseEvent];\n clickToggle: [event: MouseEvent];\n show: [],\n hide: []\n}\n\nexport function useDropdownHandler(props: BtnDropdownProps, emit: EmitFn<BtnDropdownEvents>) {\n const target = ref<HTMLElement>();\n const menu = ref<InstanceType<typeof DropdownMenu>>();\n const expanded = ref(false);\n\n\n const alignment = computed<Alignment>(() => props.align ?? 'start');\n\n const side = computed<Side>(() => {\n if(props.dropup) {\n return 'top';\n }\n\n if(props.dropleft) {\n return 'left';\n }\n\n if(props.dropright) {\n return 'right';\n }\n\n return 'bottom';\n });\n\n const placement = computed<Placement>(() => `${side.value}-${alignment.value}`);\n\n const classes = computed(() => ({\n 'dropdown': props.dropup && props.dropright && props.dropleft,\n 'dropup': props.dropup,\n 'dropright': props.dropright,\n 'dropleft': props.dropleft,\n 'expanded': expanded.value,\n [props.size ?? '']: !!props.size,\n }));\n \n const buttonClasses = computed(() => {\n const classes = {\n btn: true,\n [props.variant ?? '']: !!props.variant,\n 'btn-block': !!props.block,\n 'no-caret': !props.caret\n };\n \n if(typeof props.buttonClass === 'string') {\n classes[props.buttonClass] = true;\n }\n else if(Array.isArray(props.buttonClass)) {\n for(const value of props.buttonClass) {\n classes[value] = true;\n }\n }\n else if(props.buttonClass) {\n Object.assign(classes, props.buttonClass);\n }\n\n return classes;\n });\n\n const { floatingStyles, update } = useFloating(target, menu, {\n placement: placement,\n middleware: props.middleware ?? [\n offset(props.offset ?? 5),\n flip()\n ]\n });\n\n function show() {\n expanded.value = true;\n\n if(!target.value || !menu.value) {\n return;\n }\n\n update();\n\n emit('show');\n }\n\n function hide() {\n expanded.value = false;\n\n target.value?.blur();\n\n emit('hide');\n }\n\n function toggle() {\n if(!expanded.value) {\n show();\n }\n else {\n hide();\n }\n }\n\n function isFocusable(element: HTMLElement) {\n const nodes = Array.from(menu.value?.$el.querySelectorAll('label, input, select, textarea') ?? []);\n\n for(const i in nodes) {\n if(element === nodes[i]) {\n return true;\n }\n }\n\n return false;\n }\n \n function onBlur(e: FocusEvent) {\n if(!(e.relatedTarget instanceof HTMLElement)) {\n hide();\n \n return;\n }\n \n if(menu.value && !menu.value?.$el.contains(e.relatedTarget) || !target.value?.contains(e.relatedTarget)) {\n hide();\n }\n }\n\n function onClick(e: MouseEvent) {\n emit('click', e);\n }\n\n function onClickToggle(e: MouseEvent) {\n e.target?.dispatchEvent(new Event('focus', e));\n \n emit('clickToggle', e);\n\n if(!e.defaultPrevented) {\n toggle();\n }\n }\n\n function onClickItem(e: PointerEvent) {\n if(!(e.target instanceof HTMLElement)) {\n hide();\n\n return;\n }\n\n if(!isFocusable(e.target) && !e.defaultPrevented) {\n hide();\n }\n }\n\n watchEffect(() => {\n if(expanded.value) {\n window.addEventListener('resize', update);\n }\n else {\n window.removeEventListener('resize', update);\n }\n });\n\n return {\n target,\n menu,\n alignment,\n expanded,\n floatingStyles,\n placement,\n side,\n classes,\n buttonClasses,\n show,\n hide,\n toggle,\n onBlur,\n onClick,\n onClickToggle,\n onClickItem\n };\n}","<script setup lang=\"ts\">\nimport { DropdownMenu } from '@vue-interface/dropdown-menu';\nimport { BtnDropdownEvents, BtnDropdownProps, useDropdownHandler } from './useDropdownHandler';\n\nconst props = withDefaults(defineProps<BtnDropdownProps>(), {\n caret: true,\n variant: 'btn-primary'\n});\n\nconst emit = defineEmits<BtnDropdownEvents>();\n\nconst {\n target,\n menu,\n buttonClasses,\n classes,\n expanded,\n floatingStyles,\n onBlur,\n onClickToggle,\n onClickItem\n} = useDropdownHandler(props, emit);\n</script>\n\n<template>\n <div\n class=\"btn-group\"\n :class=\"classes\">\n <slot\n name=\"button\"\n v-bind=\"{ target: (el: HTMLElement) => target = el, expanded, onBlur, onClickToggle }\">\n <button\n ref=\"target\"\n type=\"button\"\n :class=\"{...buttonClasses, ['dropdown-toggle']: true}\"\n aria-haspopup=\"true\"\n :aria-expanded=\"expanded\"\n @blur=\"onBlur\"\n @click=\"onClickToggle\">\n {{ label }}\n </button>\n </slot>\n <DropdownMenu\n ref=\"menu\"\n :class=\"{\n 'show': expanded\n }\"\n :style=\"floatingStyles\"\n @blur=\"onBlur\"\n @click=\"onClickItem\"\n @mousedown.prevent>\n <slot />\n </DropdownMenu>\n </div>\n</template>","<script setup lang=\"ts\">\nimport { DropdownMenu } from '@vue-interface/dropdown-menu';\nimport { BtnDropdownEvents, BtnDropdownProps, useDropdownHandler } from './useDropdownHandler';\n\nconst props = withDefaults(defineProps<BtnDropdownProps>(), {\n caret: true,\n variant: 'btn-primary'\n});\n\nconst emit = defineEmits<BtnDropdownEvents>();\n\nconst {\n target,\n menu,\n buttonClasses,\n classes,\n expanded,\n floatingStyles,\n onBlur,\n onClick,\n onClickToggle,\n onClickItem\n} = useDropdownHandler(props, emit);\n</script>\n\n<template>\n <div\n class=\"btn-group btn-dropdown-split\"\n :class=\"classes\">\n <slot\n v-if=\"!dropleft\"\n name=\"button\"\n v-bind=\"{ expanded, onBlur, onClickToggle }\">\n <button\n type=\"button\"\n :class=\"buttonClasses\"\n aria-haspopup=\"true\"\n :aria-expanded=\"expanded\"\n @blur=\"onBlur\"\n @click=\"onClick\">\n {{ label }}\n </button>\n </slot>\n <div class=\"btn-group\">\n <slot\n name=\"toggle\"\n v-bind=\"{ target: (el: HTMLElement) => target = el, expanded, onBlur, onClickToggle }\">\n <button\n ref=\"target\"\n type=\"button\"\n aria-haspopup=\"true\"\n :aria-expanded=\"expanded\"\n :class=\"{...buttonClasses, 'dropdown-toggle': true, 'dropdown-toggle-split': split}\"\n @blur=\"onBlur\"\n @click=\"onClickToggle\" />\n </slot>\n <DropdownMenu\n ref=\"menu\"\n :class=\"{\n 'show': expanded\n }\"\n :style=\"floatingStyles\"\n @blur=\"onBlur\"\n @click=\"onClickItem\"\n @mousedown.prevent>\n <slot />\n </DropdownMenu>\n </div>\n <slot\n v-if=\"dropleft\"\n name=\"button\"\n v-bind=\"{ expanded, onBlur, onClickToggle }\">\n <button\n type=\"button\"\n :class=\"buttonClasses\"\n aria-haspopup=\"true\"\n :aria-expanded=\"expanded\"\n @blur=\"onBlur\"\n @click=\"onClick\">\n {{ label }}\n </button>\n </slot>\n </div>\n</template>","<script setup lang=\"ts\">\nimport BtnDropdownSingle from './BtnDropdownSingle.vue';\nimport BtnDropdownSplit from './BtnDropdownSplit.vue';\nimport { BtnDropdownEvents, BtnDropdownProps } from './useDropdownHandler';\n\nconst props = withDefaults(defineProps<{\n split?: boolean\n} & BtnDropdownProps>(), {\n split: false,\n caret: true\n});\n\nconst emit = defineEmits<BtnDropdownEvents>();\n</script>\n\n<template>\n <Component\n :is=\"!split ? BtnDropdownSingle : BtnDropdownSplit\"\n v-bind=\"props\"\n @click=\"(...args) => emit('click', ...args)\"\n @click-toggle=\"(...args) => emit('clickToggle', ...args)\"\n @show=\"(...args) => emit('show', ...args)\"\n @hide=\"(...args) => emit('hide', ...args)\">\n <template #button=\"slot\">\n <slot\n name=\"button\"\n v-bind=\"slot\" />\n </template>\n <template #toggle=\"slot\">\n <slot\n name=\"toggle\"\n v-bind=\"slot\" />\n </template>\n <template #split=\"slot\">\n <slot\n name=\"split\"\n v-bind=\"slot\" />\n </template>\n <slot />\n </Component>\n</template>"],"names":["useDropdownHandler","props","emit","target","ref","menu","expanded","alignment","computed","side","placement","classes","buttonClasses","value","floatingStyles","update","useFloating","offset","flip","show","hide","toggle","isFocusable","element","nodes","i","onBlur","e","onClick","onClickToggle","onClickItem","watchEffect","__props","__emit","_createElementBlock","_normalizeClass","_unref","_renderSlot","_ctx","_normalizeProps","_guardReactiveProps","el","_createElementVNode","_cache","args","_hoisted_1","_createVNode","DropdownMenu","_hoisted_2","_hoisted_4","_createBlock","_resolveDynamicComponent","BtnDropdownSplit","BtnDropdownSingle","_mergeProps","_withCtx","slot"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import BtnDropdown from './src/BtnDropdown.vue';
|
|
1
|
+
import { default as BtnDropdown } from './src/BtnDropdown.vue';
|
|
2
2
|
export { BtnDropdown };
|
|
@@ -1,9 +1,42 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { BtnDropdownProps } from './useDropdownHandler';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
split?: boolean;
|
|
4
|
+
} & BtnDropdownProps;
|
|
5
|
+
declare function __VLS_template(): {
|
|
6
|
+
attrs: Partial<{}>;
|
|
7
|
+
slots: {
|
|
8
|
+
button?(_: {
|
|
9
|
+
target: (el: HTMLElement) => HTMLElement;
|
|
10
|
+
expanded: boolean;
|
|
11
|
+
onBlur: (e: FocusEvent) => void;
|
|
12
|
+
onClickToggle: (e: MouseEvent) => void;
|
|
13
|
+
}): any;
|
|
14
|
+
toggle?(_: any): any;
|
|
15
|
+
split?(_: any): any;
|
|
16
|
+
default?(_: {}): any;
|
|
17
|
+
};
|
|
18
|
+
refs: {};
|
|
19
|
+
rootEl: HTMLDivElement;
|
|
20
|
+
};
|
|
21
|
+
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
22
|
+
declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
23
|
+
show: () => any;
|
|
24
|
+
click: (event: MouseEvent) => any;
|
|
25
|
+
clickToggle: (event: MouseEvent) => any;
|
|
26
|
+
hide: () => any;
|
|
27
|
+
}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
28
|
+
onShow?: (() => any) | undefined;
|
|
29
|
+
onClick?: ((event: MouseEvent) => any) | undefined;
|
|
30
|
+
onClickToggle?: ((event: MouseEvent) => any) | undefined;
|
|
31
|
+
onHide?: (() => any) | undefined;
|
|
32
|
+
}>, {
|
|
33
|
+
split: boolean;
|
|
34
|
+
caret: boolean;
|
|
35
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
36
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
37
|
+
export default _default;
|
|
38
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
39
|
+
new (): {
|
|
40
|
+
$slots: S;
|
|
41
|
+
};
|
|
42
|
+
};
|
package/index.css
ADDED
package/package.json
CHANGED
|
@@ -1,36 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vue-interface/btn-dropdown",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.1",
|
|
4
4
|
"description": "A Vue button dropdown component.",
|
|
5
|
-
"files": [
|
|
6
|
-
"dist"
|
|
7
|
-
],
|
|
8
5
|
"type": "module",
|
|
9
6
|
"main": "./dist/btn-dropdown.umd.js",
|
|
10
7
|
"module": "./dist/btn-dropdown.js",
|
|
11
8
|
"types": "./dist/index.d.ts",
|
|
12
9
|
"exports": {
|
|
13
10
|
".": {
|
|
11
|
+
"source": "./index.ts",
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
14
13
|
"import": "./dist/btn-dropdown.js",
|
|
15
|
-
"require": "./dist/btn-dropdown.umd.js"
|
|
16
|
-
|
|
17
|
-
},
|
|
18
|
-
"./dist/style.css": "./dist/style.css"
|
|
14
|
+
"require": "./dist/btn-dropdown.umd.js"
|
|
15
|
+
}
|
|
19
16
|
},
|
|
20
17
|
"browserslist": "last 2 versions, > 0.5%, ie >= 11",
|
|
21
|
-
"scripts": {
|
|
22
|
-
"dev": "vite",
|
|
23
|
-
"build": "vite build",
|
|
24
|
-
"preview": "vite preview",
|
|
25
|
-
"pre-release": "npm run build; git add . -A; git commit -m 'pre-release commit'",
|
|
26
|
-
"release-patch": "npm run pre-release && npm version patch -m \"%s\" && npm run release;",
|
|
27
|
-
"release-minor": "npm run pre-release && npm version minor -m \"%s\" && npm run release;",
|
|
28
|
-
"release-major": "npm run pre-release && npm version major -m \"%s\" && npm run release;",
|
|
29
|
-
"release": "git add . -A; git commit; git push --tags origin; npm publish;"
|
|
30
|
-
},
|
|
31
18
|
"repository": {
|
|
32
19
|
"type": "git",
|
|
33
|
-
"url": "git+https://github.com/vue-interface/
|
|
20
|
+
"url": "git+https://github.com/vue-interface/vue-interface.github.io"
|
|
34
21
|
},
|
|
35
22
|
"keywords": [
|
|
36
23
|
"Button",
|
|
@@ -42,32 +29,28 @@
|
|
|
42
29
|
"Bootstrap"
|
|
43
30
|
],
|
|
44
31
|
"author": "Justin Kimbrell",
|
|
45
|
-
"license": "
|
|
32
|
+
"license": "MIT",
|
|
46
33
|
"bugs": {
|
|
47
|
-
"url": "https://github.com/vue-interface/
|
|
48
|
-
},
|
|
49
|
-
"homepage": "https://github.com/vue-interface/btn-dropdown/docs",
|
|
50
|
-
"dependencies": {
|
|
51
|
-
"@popperjs/core": "^2.11.2",
|
|
52
|
-
"@vue-interface/btn": "^3.0.0-beta.1",
|
|
53
|
-
"@vue-interface/btn-group": "^2.0.0-beta.4",
|
|
54
|
-
"@vue-interface/dropdown-menu": "^2.0.0-beta.8"
|
|
34
|
+
"url": "https://github.com/vue-interface/vue-interface.github.io"
|
|
55
35
|
},
|
|
36
|
+
"homepage": "https://github.com/vue-interface/vue-interface",
|
|
37
|
+
"readme": "README.md",
|
|
38
|
+
"files": [
|
|
39
|
+
"dist",
|
|
40
|
+
"index.css",
|
|
41
|
+
"README.md",
|
|
42
|
+
"LICENSE"
|
|
43
|
+
],
|
|
56
44
|
"peerDependencies": {
|
|
57
|
-
"
|
|
45
|
+
"@floating-ui/dom": "^1.7.1",
|
|
46
|
+
"@floating-ui/vue": "^1.1.6",
|
|
47
|
+
"vue": "^3.3.4",
|
|
48
|
+
"@vue-interface/btn": "4.0.1",
|
|
49
|
+
"@vue-interface/dropdown-menu": "3.0.1"
|
|
58
50
|
},
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
"change-case": "^4.1.2",
|
|
64
|
-
"eslint": "^8.25.0",
|
|
65
|
-
"pascalcase": "^2.0.0",
|
|
66
|
-
"postcss": "^8.4.6",
|
|
67
|
-
"tailwindcss": "^3.1.0",
|
|
68
|
-
"typescript": "^4.9.4",
|
|
69
|
-
"vite": "^4.0.0",
|
|
70
|
-
"vite-plugin-dts": "^1.7.1",
|
|
71
|
-
"vue": "^3.2.41"
|
|
51
|
+
"scripts": {
|
|
52
|
+
"dev": "vite",
|
|
53
|
+
"build": "vite build",
|
|
54
|
+
"preview": "vite preview"
|
|
72
55
|
}
|
|
73
|
-
}
|
|
56
|
+
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
declare const _sfc_main: import("vue").DefineComponent<{
|
|
2
|
-
expanded: {
|
|
3
|
-
type: BooleanConstructor;
|
|
4
|
-
default: boolean;
|
|
5
|
-
};
|
|
6
|
-
id: {
|
|
7
|
-
type: StringConstructor;
|
|
8
|
-
default: undefined;
|
|
9
|
-
};
|
|
10
|
-
href: {
|
|
11
|
-
type: StringConstructor;
|
|
12
|
-
default: undefined;
|
|
13
|
-
};
|
|
14
|
-
to: {
|
|
15
|
-
type: (StringConstructor | ObjectConstructor)[];
|
|
16
|
-
default: undefined;
|
|
17
|
-
};
|
|
18
|
-
}, unknown, unknown, {
|
|
19
|
-
is(): "button" | "router-link" | "a";
|
|
20
|
-
}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
21
|
-
expanded: {
|
|
22
|
-
type: BooleanConstructor;
|
|
23
|
-
default: boolean;
|
|
24
|
-
};
|
|
25
|
-
id: {
|
|
26
|
-
type: StringConstructor;
|
|
27
|
-
default: undefined;
|
|
28
|
-
};
|
|
29
|
-
href: {
|
|
30
|
-
type: StringConstructor;
|
|
31
|
-
default: undefined;
|
|
32
|
-
};
|
|
33
|
-
to: {
|
|
34
|
-
type: (StringConstructor | ObjectConstructor)[];
|
|
35
|
-
default: undefined;
|
|
36
|
-
};
|
|
37
|
-
}>>, {
|
|
38
|
-
expanded: boolean;
|
|
39
|
-
id: string;
|
|
40
|
-
href: string;
|
|
41
|
-
to: string | Record<string, any>;
|
|
42
|
-
}>;
|
|
43
|
-
export default _sfc_main;
|