@vue-interface/btn-dropdown 4.1.1 → 4.1.3
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/dist/btn-dropdown.js +171 -154
- package/dist/btn-dropdown.js.map +1 -1
- package/dist/btn-dropdown.umd.cjs +1 -1
- package/dist/btn-dropdown.umd.cjs.map +1 -1
- package/dist/src/BtnDropdown.vue.d.ts +326 -14
- package/dist/src/BtnDropdownSingle.vue.d.ts +156 -0
- package/dist/src/BtnDropdownSplit.vue.d.ts +166 -0
- package/dist/src/useDropdownHandler.d.ts +8 -2
- package/package.json +5 -2
- package/src/BtnDropdown.vue +19 -1
- package/src/BtnDropdownSingle.vue +13 -2
- package/src/BtnDropdownSplit.vue +18 -2
- package/src/useDropdownHandler.ts +14 -5
|
@@ -1 +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, UseFloatingReturn } from '@floating-ui/vue';\nimport { DropdownMenu } from '@vue-interface/dropdown-menu';\nimport { computed, ComputedRef, Ref, 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 type UseDropdownHandler = {\n target: Ref<HTMLElement|undefined>;\n menu: Ref<InstanceType<typeof DropdownMenu>|undefined>;\n alignment: ComputedRef<Alignment>;\n expanded: Ref<boolean>;\n floatingStyles: UseFloatingReturn['floatingStyles'];\n placement: ComputedRef<Placement>;\n side: ComputedRef<Side>;\n classes: ComputedRef<Record<string, boolean|undefined>>;\n buttonClasses: ComputedRef<Record<string, boolean>>;\n show: () => void;\n hide: () => void;\n toggle: () => void;\n onBlur: (e: FocusEvent) => void;\n onClick: (e: MouseEvent) => void;\n onClickToggle: (e: MouseEvent) => void;\n onClickItem: (e: PointerEvent) => void;\n}\n\nexport function useDropdownHandler(props: BtnDropdownProps, emit: EmitFn<BtnDropdownEvents>): UseDropdownHandler {\n const target = ref<HTMLElement>();\n const menu = ref<InstanceType<typeof DropdownMenu>>();\n const expanded = ref(false);\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<Record<string,boolean|undefined>>(() => ({\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 show,\n hide,\n toggle,\n onBlur,\n onClickToggle,\n onClickItem\n} = useDropdownHandler(props, emit);\n\ndefineExpose({\n show,\n hide,\n toggle,\n});\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 show,\n hide,\n toggle,\n onBlur,\n onClickToggle,\n onClickItem\n} = useDropdownHandler(props, emit);\n\ndefineExpose({\n show,\n hide,\n toggle,\n});\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=\"(e: MouseEvent) => emit('click', e)\"\n @click-toggle=\"(e: MouseEvent) => emit('clickToggle', e)\"\n @show=\"() => emit('show')\"\n @hide=\"() => emit('hide')\">\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","__expose","_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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"}
|
|
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, UseFloatingReturn } from '@floating-ui/vue';\nimport { DropdownMenu } from '@vue-interface/dropdown-menu';\nimport { ComponentPublicInstance, computed, ComputedRef, Ref, 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 type BtnDropdownSlotProps = { \n target: (el: Element | ComponentPublicInstance | null) => void;\n expanded: boolean;\n onBlur: (e: FocusEvent) => void;\n onClickToggle: (e: MouseEvent) => void;\n};\n\nexport type UseDropdownHandler = {\n target: Ref<Element|ComponentPublicInstance|null>;\n menu: Ref<InstanceType<typeof DropdownMenu>|undefined>;\n alignment: ComputedRef<Alignment>;\n expanded: Ref<boolean>;\n floatingStyles: UseFloatingReturn['floatingStyles'];\n placement: ComputedRef<Placement>;\n side: ComputedRef<Side>;\n classes: ComputedRef<Record<string, boolean|undefined>>;\n buttonClasses: ComputedRef<Record<string, boolean>>;\n show: () => void;\n hide: () => void;\n toggle: () => void;\n onBlur: (e: FocusEvent) => void;\n onClick: (e: MouseEvent) => void;\n onClickToggle: (e: MouseEvent) => void;\n onClickItem: (e: PointerEvent) => void;\n}\n\nexport function useDropdownHandler(props: BtnDropdownProps, emit: EmitFn<BtnDropdownEvents>): UseDropdownHandler {\n const target = ref<Element|ComponentPublicInstance|null>(null);\n const menu = ref<InstanceType<typeof DropdownMenu>>();\n const expanded = ref(false);\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<Record<string,boolean|undefined>>(() => ({\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 if(target.value instanceof HTMLElement) {\n target.value?.blur();\n }\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) || !(target.value instanceof Element)) {\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 { ComponentPublicInstance } from 'vue';\nimport { BtnDropdownEvents, BtnDropdownProps, BtnDropdownSlotProps, 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 show,\n hide,\n toggle,\n onBlur,\n onClickToggle,\n onClickItem\n} = useDropdownHandler(props, emit);\n\ndefineExpose({\n show,\n hide,\n toggle,\n});\n\ndefineSlots<{\n button(props: BtnDropdownSlotProps): any;\n default(): any;\n}>();\n</script>\n\n<template>\n <div\n class=\"btn-group\"\n :class=\"classes\">\n <slot\n name=\"button\"\n v-bind=\"{\n target: (el: Element | ComponentPublicInstance | null) => target = el,\n expanded,\n onBlur,\n onClickToggle\n }\">\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 { ComponentPublicInstance } from 'vue';\nimport { BtnDropdownEvents, BtnDropdownProps, BtnDropdownSlotProps, 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 show,\n hide,\n toggle,\n onBlur,\n onClickToggle,\n onClickItem\n} = useDropdownHandler(props, emit);\n\ndefineExpose({\n show,\n hide,\n toggle,\n});\n\ndefineSlots<{\n button(props: {\n expanded: BtnDropdownSlotProps['expanded'],\n onBlur: BtnDropdownSlotProps['onBlur'],\n onClickToggle: BtnDropdownSlotProps['onClickToggle']\n }): any;\n toggle(props: BtnDropdownSlotProps): any;\n default(): any;\n}>();\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=\"{\n target: (el: Element | ComponentPublicInstance | null) => target = el,\n expanded,\n onBlur,\n onClickToggle\n }\">\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 { useTemplateRef } from 'vue';\nimport { type ComponentExposed } from 'vue-component-type-helpers';\nimport BtnDropdownSingle from './BtnDropdownSingle.vue';\nimport BtnDropdownSplit from './BtnDropdownSplit.vue';\nimport { BtnDropdownEvents, BtnDropdownProps, BtnDropdownSlotProps } 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\nconst el = useTemplateRef<ComponentExposed<typeof BtnDropdownSingle | typeof BtnDropdownSplit>>('el');\n\ndefineExpose({\n hide: () => el.value?.hide(),\n show: () => el.value?.show(),\n toggle: () => el.value?.toggle(),\n});\n\ndefineSlots<{\n button(props: BtnDropdownSlotProps): any;\n toggle(props: BtnDropdownSlotProps): any;\n split(props: BtnDropdownSlotProps): any;\n default(): any;\n}>();\n</script>\n\n<template>\n <Component\n ref=\"el\"\n :is=\"!split ? BtnDropdownSingle : BtnDropdownSplit\"\n v-bind=\"props\"\n @click=\"(e: MouseEvent) => emit('click', e)\"\n @click-toggle=\"(e: MouseEvent) => emit('clickToggle', e)\"\n @show=\"() => emit('show')\"\n @hide=\"() => emit('hide')\">\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","__expose","_createElementBlock","_normalizeClass","_unref","_renderSlot","_ctx","_normalizeProps","_guardReactiveProps","el","_createElementVNode","_cache","args","_hoisted_1","_createVNode","DropdownMenu","_hoisted_2","_hoisted_4","useTemplateRef","_openBlock","_createBlock","_resolveDynamicComponent","BtnDropdownSplit","BtnDropdownSingle","_mergeProps","_withCtx","slot"],"mappings":"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"}
|
|
@@ -1,25 +1,183 @@
|
|
|
1
|
-
import { BtnDropdownProps } from './useDropdownHandler';
|
|
1
|
+
import { BtnDropdownProps, BtnDropdownSlotProps } from './useDropdownHandler';
|
|
2
2
|
type __VLS_Props = {
|
|
3
3
|
split?: boolean;
|
|
4
4
|
} & BtnDropdownProps;
|
|
5
5
|
declare function __VLS_template(): {
|
|
6
6
|
attrs: Partial<{}>;
|
|
7
|
-
slots: {
|
|
8
|
-
button
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
toggle
|
|
15
|
-
split
|
|
16
|
-
default
|
|
7
|
+
slots: Readonly<{
|
|
8
|
+
button(props: BtnDropdownSlotProps): any;
|
|
9
|
+
toggle(props: BtnDropdownSlotProps): any;
|
|
10
|
+
split(props: BtnDropdownSlotProps): any;
|
|
11
|
+
default(): any;
|
|
12
|
+
}> & {
|
|
13
|
+
button(props: BtnDropdownSlotProps): any;
|
|
14
|
+
toggle(props: BtnDropdownSlotProps): any;
|
|
15
|
+
split(props: BtnDropdownSlotProps): any;
|
|
16
|
+
default(): any;
|
|
17
|
+
};
|
|
18
|
+
refs: {
|
|
19
|
+
el: ({
|
|
20
|
+
$: import('vue').ComponentInternalInstance;
|
|
21
|
+
$data: {};
|
|
22
|
+
$props: {
|
|
23
|
+
readonly align?: import('@floating-ui/dom').Alignment | undefined;
|
|
24
|
+
readonly block?: boolean | undefined;
|
|
25
|
+
readonly buttonClass?: import('vue').HTMLAttributes["class"];
|
|
26
|
+
readonly caret?: boolean | undefined;
|
|
27
|
+
readonly dropup?: boolean | undefined;
|
|
28
|
+
readonly dropright?: boolean | undefined;
|
|
29
|
+
readonly dropleft?: boolean | undefined;
|
|
30
|
+
readonly label?: string | undefined;
|
|
31
|
+
readonly offset?: import('@floating-ui/dom').OffsetOptions | undefined;
|
|
32
|
+
readonly middleware?: import('@floating-ui/dom').Middleware[] | undefined;
|
|
33
|
+
readonly side?: import('@floating-ui/dom').Side | undefined;
|
|
34
|
+
readonly size?: (import('./useDropdownHandler').BtnGroupSizes | (string & Record<never, never>)) | undefined;
|
|
35
|
+
readonly split?: boolean | undefined;
|
|
36
|
+
readonly variant?: string | undefined;
|
|
37
|
+
readonly onShow?: (() => any) | undefined;
|
|
38
|
+
readonly onClick?: ((event: MouseEvent) => any) | undefined;
|
|
39
|
+
readonly onClickToggle?: ((event: MouseEvent) => any) | undefined;
|
|
40
|
+
readonly onHide?: (() => any) | undefined;
|
|
41
|
+
} & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps;
|
|
42
|
+
$attrs: {
|
|
43
|
+
[x: string]: unknown;
|
|
44
|
+
};
|
|
45
|
+
$refs: {
|
|
46
|
+
[x: string]: unknown;
|
|
47
|
+
} & {
|
|
48
|
+
target: HTMLButtonElement;
|
|
49
|
+
menu: ({
|
|
50
|
+
$: import('vue').ComponentInternalInstance;
|
|
51
|
+
$data: {};
|
|
52
|
+
$props: {
|
|
53
|
+
readonly align?: "left" | "right" | undefined;
|
|
54
|
+
readonly show?: boolean | undefined;
|
|
55
|
+
} & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps;
|
|
56
|
+
$attrs: {
|
|
57
|
+
[x: string]: unknown;
|
|
58
|
+
};
|
|
59
|
+
$refs: {
|
|
60
|
+
[x: string]: unknown;
|
|
61
|
+
};
|
|
62
|
+
$slots: Readonly<{
|
|
63
|
+
[name: string]: import('vue').Slot<any> | undefined;
|
|
64
|
+
}>;
|
|
65
|
+
$root: import('vue').ComponentPublicInstance | null;
|
|
66
|
+
$parent: import('vue').ComponentPublicInstance | null;
|
|
67
|
+
$host: Element | null;
|
|
68
|
+
$emit: (event: string, ...args: any[]) => void;
|
|
69
|
+
$el: HTMLDivElement;
|
|
70
|
+
$options: import('vue').ComponentOptionsBase<Readonly<{
|
|
71
|
+
align?: "left" | "right";
|
|
72
|
+
show?: boolean;
|
|
73
|
+
}> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, {
|
|
74
|
+
align: "left" | "right";
|
|
75
|
+
}, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & {
|
|
76
|
+
beforeCreate?: (() => void) | (() => void)[];
|
|
77
|
+
created?: (() => void) | (() => void)[];
|
|
78
|
+
beforeMount?: (() => void) | (() => void)[];
|
|
79
|
+
mounted?: (() => void) | (() => void)[];
|
|
80
|
+
beforeUpdate?: (() => void) | (() => void)[];
|
|
81
|
+
updated?: (() => void) | (() => void)[];
|
|
82
|
+
activated?: (() => void) | (() => void)[];
|
|
83
|
+
deactivated?: (() => void) | (() => void)[];
|
|
84
|
+
beforeDestroy?: (() => void) | (() => void)[];
|
|
85
|
+
beforeUnmount?: (() => void) | (() => void)[];
|
|
86
|
+
destroyed?: (() => void) | (() => void)[];
|
|
87
|
+
unmounted?: (() => void) | (() => void)[];
|
|
88
|
+
renderTracked?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
|
|
89
|
+
renderTriggered?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
|
|
90
|
+
errorCaptured?: ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void)[];
|
|
91
|
+
};
|
|
92
|
+
$forceUpdate: () => void;
|
|
93
|
+
$nextTick: typeof import('vue').nextTick;
|
|
94
|
+
$watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import('@vue/reactivity').OnCleanup]) => any : (...args: [any, any, import('@vue/reactivity').OnCleanup]) => any, options?: import('vue').WatchOptions): import('vue').WatchStopHandle;
|
|
95
|
+
} & Readonly<{
|
|
96
|
+
align: "left" | "right";
|
|
97
|
+
}> & Omit<Readonly<{
|
|
98
|
+
align?: "left" | "right";
|
|
99
|
+
show?: boolean;
|
|
100
|
+
}> & Readonly<{}>, "align"> & import('vue').ShallowUnwrapRef<{}> & {} & import('vue').ComponentCustomProperties & {} & {
|
|
101
|
+
$slots: {
|
|
102
|
+
default?(_: {}): any;
|
|
103
|
+
};
|
|
104
|
+
}) | null;
|
|
105
|
+
};
|
|
106
|
+
$slots: Readonly<{
|
|
107
|
+
[name: string]: import('vue').Slot<any> | undefined;
|
|
108
|
+
}>;
|
|
109
|
+
$root: import('vue').ComponentPublicInstance | null;
|
|
110
|
+
$parent: import('vue').ComponentPublicInstance | null;
|
|
111
|
+
$host: Element | null;
|
|
112
|
+
$emit: ((event: "show") => void) & ((event: "click", event: MouseEvent) => void) & ((event: "clickToggle", event: MouseEvent) => void) & ((event: "hide") => void);
|
|
113
|
+
$el: HTMLDivElement;
|
|
114
|
+
$options: import('vue').ComponentOptionsBase<Readonly<BtnDropdownProps> & Readonly<{
|
|
115
|
+
onShow?: (() => any) | undefined;
|
|
116
|
+
onClick?: ((event: MouseEvent) => any) | undefined;
|
|
117
|
+
onClickToggle?: ((event: MouseEvent) => any) | undefined;
|
|
118
|
+
onHide?: (() => any) | undefined;
|
|
119
|
+
}>, {
|
|
120
|
+
show: () => void;
|
|
121
|
+
hide: () => void;
|
|
122
|
+
toggle: () => void;
|
|
123
|
+
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
124
|
+
show: () => any;
|
|
125
|
+
click: (event: MouseEvent) => any;
|
|
126
|
+
clickToggle: (event: MouseEvent) => any;
|
|
127
|
+
hide: () => any;
|
|
128
|
+
}, string, {
|
|
129
|
+
caret: boolean;
|
|
130
|
+
variant: string;
|
|
131
|
+
}, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & {
|
|
132
|
+
beforeCreate?: (() => void) | (() => void)[];
|
|
133
|
+
created?: (() => void) | (() => void)[];
|
|
134
|
+
beforeMount?: (() => void) | (() => void)[];
|
|
135
|
+
mounted?: (() => void) | (() => void)[];
|
|
136
|
+
beforeUpdate?: (() => void) | (() => void)[];
|
|
137
|
+
updated?: (() => void) | (() => void)[];
|
|
138
|
+
activated?: (() => void) | (() => void)[];
|
|
139
|
+
deactivated?: (() => void) | (() => void)[];
|
|
140
|
+
beforeDestroy?: (() => void) | (() => void)[];
|
|
141
|
+
beforeUnmount?: (() => void) | (() => void)[];
|
|
142
|
+
destroyed?: (() => void) | (() => void)[];
|
|
143
|
+
unmounted?: (() => void) | (() => void)[];
|
|
144
|
+
renderTracked?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
|
|
145
|
+
renderTriggered?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
|
|
146
|
+
errorCaptured?: ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void)[];
|
|
147
|
+
};
|
|
148
|
+
$forceUpdate: () => void;
|
|
149
|
+
$nextTick: typeof import('vue').nextTick;
|
|
150
|
+
$watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import('@vue/reactivity').OnCleanup]) => any : (...args: [any, any, import('@vue/reactivity').OnCleanup]) => any, options?: import('vue').WatchOptions): import('vue').WatchStopHandle;
|
|
151
|
+
} & Readonly<{
|
|
152
|
+
caret: boolean;
|
|
153
|
+
variant: string;
|
|
154
|
+
}> & Omit<Readonly<BtnDropdownProps> & Readonly<{
|
|
155
|
+
onShow?: (() => any) | undefined;
|
|
156
|
+
onClick?: ((event: MouseEvent) => any) | undefined;
|
|
157
|
+
onClickToggle?: ((event: MouseEvent) => any) | undefined;
|
|
158
|
+
onHide?: (() => any) | undefined;
|
|
159
|
+
}>, "show" | "hide" | "toggle" | ("caret" | "variant")> & import('vue').ShallowUnwrapRef<{
|
|
160
|
+
show: () => void;
|
|
161
|
+
hide: () => void;
|
|
162
|
+
toggle: () => void;
|
|
163
|
+
}> & {} & import('vue').ComponentCustomProperties & {} & {
|
|
164
|
+
$slots: Readonly<{
|
|
165
|
+
button(props: BtnDropdownSlotProps): any;
|
|
166
|
+
default(): any;
|
|
167
|
+
}> & {
|
|
168
|
+
button(props: BtnDropdownSlotProps): any;
|
|
169
|
+
default(): any;
|
|
170
|
+
};
|
|
171
|
+
}) | null;
|
|
17
172
|
};
|
|
18
|
-
refs: {};
|
|
19
173
|
rootEl: HTMLDivElement;
|
|
20
174
|
};
|
|
21
175
|
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
22
|
-
declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {
|
|
176
|
+
declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {
|
|
177
|
+
hide: () => void | undefined;
|
|
178
|
+
show: () => void | undefined;
|
|
179
|
+
toggle: () => void | undefined;
|
|
180
|
+
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
23
181
|
show: () => any;
|
|
24
182
|
click: (event: MouseEvent) => any;
|
|
25
183
|
clickToggle: (event: MouseEvent) => any;
|
|
@@ -32,7 +190,161 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}
|
|
|
32
190
|
}>, {
|
|
33
191
|
split: boolean;
|
|
34
192
|
caret: boolean;
|
|
35
|
-
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
193
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
194
|
+
el: ({
|
|
195
|
+
$: import('vue').ComponentInternalInstance;
|
|
196
|
+
$data: {};
|
|
197
|
+
$props: {
|
|
198
|
+
readonly align?: import('@floating-ui/dom').Alignment | undefined;
|
|
199
|
+
readonly block?: boolean | undefined;
|
|
200
|
+
readonly buttonClass?: import('vue').HTMLAttributes["class"];
|
|
201
|
+
readonly caret?: boolean | undefined;
|
|
202
|
+
readonly dropup?: boolean | undefined;
|
|
203
|
+
readonly dropright?: boolean | undefined;
|
|
204
|
+
readonly dropleft?: boolean | undefined;
|
|
205
|
+
readonly label?: string | undefined;
|
|
206
|
+
readonly offset?: import('@floating-ui/dom').OffsetOptions | undefined;
|
|
207
|
+
readonly middleware?: import('@floating-ui/dom').Middleware[] | undefined;
|
|
208
|
+
readonly side?: import('@floating-ui/dom').Side | undefined;
|
|
209
|
+
readonly size?: (import('./useDropdownHandler').BtnGroupSizes | (string & Record<never, never>)) | undefined;
|
|
210
|
+
readonly split?: boolean | undefined;
|
|
211
|
+
readonly variant?: string | undefined;
|
|
212
|
+
readonly onShow?: (() => any) | undefined;
|
|
213
|
+
readonly onClick?: ((event: MouseEvent) => any) | undefined;
|
|
214
|
+
readonly onClickToggle?: ((event: MouseEvent) => any) | undefined;
|
|
215
|
+
readonly onHide?: (() => any) | undefined;
|
|
216
|
+
} & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps;
|
|
217
|
+
$attrs: {
|
|
218
|
+
[x: string]: unknown;
|
|
219
|
+
};
|
|
220
|
+
$refs: {
|
|
221
|
+
[x: string]: unknown;
|
|
222
|
+
} & {
|
|
223
|
+
target: HTMLButtonElement;
|
|
224
|
+
menu: ({
|
|
225
|
+
$: import('vue').ComponentInternalInstance;
|
|
226
|
+
$data: {};
|
|
227
|
+
$props: {
|
|
228
|
+
readonly align?: "left" | "right" | undefined;
|
|
229
|
+
readonly show?: boolean | undefined;
|
|
230
|
+
} & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps;
|
|
231
|
+
$attrs: {
|
|
232
|
+
[x: string]: unknown;
|
|
233
|
+
};
|
|
234
|
+
$refs: {
|
|
235
|
+
[x: string]: unknown;
|
|
236
|
+
};
|
|
237
|
+
$slots: Readonly<{
|
|
238
|
+
[name: string]: import('vue').Slot<any> | undefined;
|
|
239
|
+
}>;
|
|
240
|
+
$root: import('vue').ComponentPublicInstance | null;
|
|
241
|
+
$parent: import('vue').ComponentPublicInstance | null;
|
|
242
|
+
$host: Element | null;
|
|
243
|
+
$emit: (event: string, ...args: any[]) => void;
|
|
244
|
+
$el: HTMLDivElement;
|
|
245
|
+
$options: import('vue').ComponentOptionsBase<Readonly<{
|
|
246
|
+
align?: "left" | "right";
|
|
247
|
+
show?: boolean;
|
|
248
|
+
}> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, {
|
|
249
|
+
align: "left" | "right";
|
|
250
|
+
}, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & {
|
|
251
|
+
beforeCreate?: (() => void) | (() => void)[];
|
|
252
|
+
created?: (() => void) | (() => void)[];
|
|
253
|
+
beforeMount?: (() => void) | (() => void)[];
|
|
254
|
+
mounted?: (() => void) | (() => void)[];
|
|
255
|
+
beforeUpdate?: (() => void) | (() => void)[];
|
|
256
|
+
updated?: (() => void) | (() => void)[];
|
|
257
|
+
activated?: (() => void) | (() => void)[];
|
|
258
|
+
deactivated?: (() => void) | (() => void)[];
|
|
259
|
+
beforeDestroy?: (() => void) | (() => void)[];
|
|
260
|
+
beforeUnmount?: (() => void) | (() => void)[];
|
|
261
|
+
destroyed?: (() => void) | (() => void)[];
|
|
262
|
+
unmounted?: (() => void) | (() => void)[];
|
|
263
|
+
renderTracked?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
|
|
264
|
+
renderTriggered?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
|
|
265
|
+
errorCaptured?: ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void)[];
|
|
266
|
+
};
|
|
267
|
+
$forceUpdate: () => void;
|
|
268
|
+
$nextTick: typeof import('vue').nextTick;
|
|
269
|
+
$watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import('@vue/reactivity').OnCleanup]) => any : (...args: [any, any, import('@vue/reactivity').OnCleanup]) => any, options?: import('vue').WatchOptions): import('vue').WatchStopHandle;
|
|
270
|
+
} & Readonly<{
|
|
271
|
+
align: "left" | "right";
|
|
272
|
+
}> & Omit<Readonly<{
|
|
273
|
+
align?: "left" | "right";
|
|
274
|
+
show?: boolean;
|
|
275
|
+
}> & Readonly<{}>, "align"> & import('vue').ShallowUnwrapRef<{}> & {} & import('vue').ComponentCustomProperties & {} & {
|
|
276
|
+
$slots: {
|
|
277
|
+
default?(_: {}): any;
|
|
278
|
+
};
|
|
279
|
+
}) | null;
|
|
280
|
+
};
|
|
281
|
+
$slots: Readonly<{
|
|
282
|
+
[name: string]: import('vue').Slot<any> | undefined;
|
|
283
|
+
}>;
|
|
284
|
+
$root: import('vue').ComponentPublicInstance | null;
|
|
285
|
+
$parent: import('vue').ComponentPublicInstance | null;
|
|
286
|
+
$host: Element | null;
|
|
287
|
+
$emit: ((event: "show") => void) & ((event: "click", event: MouseEvent) => void) & ((event: "clickToggle", event: MouseEvent) => void) & ((event: "hide") => void);
|
|
288
|
+
$el: HTMLDivElement;
|
|
289
|
+
$options: import('vue').ComponentOptionsBase<Readonly<BtnDropdownProps> & Readonly<{
|
|
290
|
+
onShow?: (() => any) | undefined;
|
|
291
|
+
onClick?: ((event: MouseEvent) => any) | undefined;
|
|
292
|
+
onClickToggle?: ((event: MouseEvent) => any) | undefined;
|
|
293
|
+
onHide?: (() => any) | undefined;
|
|
294
|
+
}>, {
|
|
295
|
+
show: () => void;
|
|
296
|
+
hide: () => void;
|
|
297
|
+
toggle: () => void;
|
|
298
|
+
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
299
|
+
show: () => any;
|
|
300
|
+
click: (event: MouseEvent) => any;
|
|
301
|
+
clickToggle: (event: MouseEvent) => any;
|
|
302
|
+
hide: () => any;
|
|
303
|
+
}, string, {
|
|
304
|
+
caret: boolean;
|
|
305
|
+
variant: string;
|
|
306
|
+
}, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & {
|
|
307
|
+
beforeCreate?: (() => void) | (() => void)[];
|
|
308
|
+
created?: (() => void) | (() => void)[];
|
|
309
|
+
beforeMount?: (() => void) | (() => void)[];
|
|
310
|
+
mounted?: (() => void) | (() => void)[];
|
|
311
|
+
beforeUpdate?: (() => void) | (() => void)[];
|
|
312
|
+
updated?: (() => void) | (() => void)[];
|
|
313
|
+
activated?: (() => void) | (() => void)[];
|
|
314
|
+
deactivated?: (() => void) | (() => void)[];
|
|
315
|
+
beforeDestroy?: (() => void) | (() => void)[];
|
|
316
|
+
beforeUnmount?: (() => void) | (() => void)[];
|
|
317
|
+
destroyed?: (() => void) | (() => void)[];
|
|
318
|
+
unmounted?: (() => void) | (() => void)[];
|
|
319
|
+
renderTracked?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
|
|
320
|
+
renderTriggered?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
|
|
321
|
+
errorCaptured?: ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void)[];
|
|
322
|
+
};
|
|
323
|
+
$forceUpdate: () => void;
|
|
324
|
+
$nextTick: typeof import('vue').nextTick;
|
|
325
|
+
$watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import('@vue/reactivity').OnCleanup]) => any : (...args: [any, any, import('@vue/reactivity').OnCleanup]) => any, options?: import('vue').WatchOptions): import('vue').WatchStopHandle;
|
|
326
|
+
} & Readonly<{
|
|
327
|
+
caret: boolean;
|
|
328
|
+
variant: string;
|
|
329
|
+
}> & Omit<Readonly<BtnDropdownProps> & Readonly<{
|
|
330
|
+
onShow?: (() => any) | undefined;
|
|
331
|
+
onClick?: ((event: MouseEvent) => any) | undefined;
|
|
332
|
+
onClickToggle?: ((event: MouseEvent) => any) | undefined;
|
|
333
|
+
onHide?: (() => any) | undefined;
|
|
334
|
+
}>, "show" | "hide" | "toggle" | ("caret" | "variant")> & import('vue').ShallowUnwrapRef<{
|
|
335
|
+
show: () => void;
|
|
336
|
+
hide: () => void;
|
|
337
|
+
toggle: () => void;
|
|
338
|
+
}> & {} & import('vue').ComponentCustomProperties & {} & {
|
|
339
|
+
$slots: Readonly<{
|
|
340
|
+
button(props: BtnDropdownSlotProps): any;
|
|
341
|
+
default(): any;
|
|
342
|
+
}> & {
|
|
343
|
+
button(props: BtnDropdownSlotProps): any;
|
|
344
|
+
default(): any;
|
|
345
|
+
};
|
|
346
|
+
}) | null;
|
|
347
|
+
}, HTMLDivElement>;
|
|
36
348
|
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
37
349
|
export default _default;
|
|
38
350
|
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { ComponentPublicInstance } from 'vue';
|
|
2
|
+
import { BtnDropdownProps, BtnDropdownSlotProps } from './useDropdownHandler';
|
|
3
|
+
declare function __VLS_template(): {
|
|
4
|
+
attrs: Partial<{}>;
|
|
5
|
+
slots: Readonly<{
|
|
6
|
+
button(props: BtnDropdownSlotProps): any;
|
|
7
|
+
default(): any;
|
|
8
|
+
}> & {
|
|
9
|
+
button(props: BtnDropdownSlotProps): any;
|
|
10
|
+
default(): any;
|
|
11
|
+
};
|
|
12
|
+
refs: {
|
|
13
|
+
target: HTMLButtonElement;
|
|
14
|
+
menu: ({
|
|
15
|
+
$: import('vue').ComponentInternalInstance;
|
|
16
|
+
$data: {};
|
|
17
|
+
$props: {
|
|
18
|
+
readonly align?: "left" | "right" | undefined;
|
|
19
|
+
readonly show?: boolean | undefined;
|
|
20
|
+
} & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps;
|
|
21
|
+
$attrs: {
|
|
22
|
+
[x: string]: unknown;
|
|
23
|
+
};
|
|
24
|
+
$refs: {
|
|
25
|
+
[x: string]: unknown;
|
|
26
|
+
};
|
|
27
|
+
$slots: Readonly<{
|
|
28
|
+
[name: string]: import('vue').Slot<any> | undefined;
|
|
29
|
+
}>;
|
|
30
|
+
$root: ComponentPublicInstance | null;
|
|
31
|
+
$parent: ComponentPublicInstance | null;
|
|
32
|
+
$host: Element | null;
|
|
33
|
+
$emit: (event: string, ...args: any[]) => void;
|
|
34
|
+
$el: HTMLDivElement;
|
|
35
|
+
$options: import('vue').ComponentOptionsBase<Readonly<{
|
|
36
|
+
align?: "left" | "right";
|
|
37
|
+
show?: boolean;
|
|
38
|
+
}> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, {
|
|
39
|
+
align: "left" | "right";
|
|
40
|
+
}, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & {
|
|
41
|
+
beforeCreate?: (() => void) | (() => void)[];
|
|
42
|
+
created?: (() => void) | (() => void)[];
|
|
43
|
+
beforeMount?: (() => void) | (() => void)[];
|
|
44
|
+
mounted?: (() => void) | (() => void)[];
|
|
45
|
+
beforeUpdate?: (() => void) | (() => void)[];
|
|
46
|
+
updated?: (() => void) | (() => void)[];
|
|
47
|
+
activated?: (() => void) | (() => void)[];
|
|
48
|
+
deactivated?: (() => void) | (() => void)[];
|
|
49
|
+
beforeDestroy?: (() => void) | (() => void)[];
|
|
50
|
+
beforeUnmount?: (() => void) | (() => void)[];
|
|
51
|
+
destroyed?: (() => void) | (() => void)[];
|
|
52
|
+
unmounted?: (() => void) | (() => void)[];
|
|
53
|
+
renderTracked?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
|
|
54
|
+
renderTriggered?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
|
|
55
|
+
errorCaptured?: ((err: unknown, instance: ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: ComponentPublicInstance | null, info: string) => boolean | void)[];
|
|
56
|
+
};
|
|
57
|
+
$forceUpdate: () => void;
|
|
58
|
+
$nextTick: typeof import('vue').nextTick;
|
|
59
|
+
$watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import('@vue/reactivity').OnCleanup]) => any : (...args: [any, any, import('@vue/reactivity').OnCleanup]) => any, options?: import('vue').WatchOptions): import('vue').WatchStopHandle;
|
|
60
|
+
} & Readonly<{
|
|
61
|
+
align: "left" | "right";
|
|
62
|
+
}> & Omit<Readonly<{
|
|
63
|
+
align?: "left" | "right";
|
|
64
|
+
show?: boolean;
|
|
65
|
+
}> & Readonly<{}>, "align"> & import('vue').ShallowUnwrapRef<{}> & {} & import('vue').ComponentCustomProperties & {} & {
|
|
66
|
+
$slots: {
|
|
67
|
+
default?(_: {}): any;
|
|
68
|
+
};
|
|
69
|
+
}) | null;
|
|
70
|
+
};
|
|
71
|
+
rootEl: HTMLDivElement;
|
|
72
|
+
};
|
|
73
|
+
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
74
|
+
declare const __VLS_component: import('vue').DefineComponent<BtnDropdownProps, {
|
|
75
|
+
show: () => void;
|
|
76
|
+
hide: () => void;
|
|
77
|
+
toggle: () => void;
|
|
78
|
+
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
79
|
+
show: () => any;
|
|
80
|
+
click: (event: MouseEvent) => any;
|
|
81
|
+
clickToggle: (event: MouseEvent) => any;
|
|
82
|
+
hide: () => any;
|
|
83
|
+
}, string, import('vue').PublicProps, Readonly<BtnDropdownProps> & Readonly<{
|
|
84
|
+
onShow?: (() => any) | undefined;
|
|
85
|
+
onClick?: ((event: MouseEvent) => any) | undefined;
|
|
86
|
+
onClickToggle?: ((event: MouseEvent) => any) | undefined;
|
|
87
|
+
onHide?: (() => any) | undefined;
|
|
88
|
+
}>, {
|
|
89
|
+
caret: boolean;
|
|
90
|
+
variant: string;
|
|
91
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
92
|
+
target: HTMLButtonElement;
|
|
93
|
+
menu: ({
|
|
94
|
+
$: import('vue').ComponentInternalInstance;
|
|
95
|
+
$data: {};
|
|
96
|
+
$props: {
|
|
97
|
+
readonly align?: "left" | "right" | undefined;
|
|
98
|
+
readonly show?: boolean | undefined;
|
|
99
|
+
} & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps;
|
|
100
|
+
$attrs: {
|
|
101
|
+
[x: string]: unknown;
|
|
102
|
+
};
|
|
103
|
+
$refs: {
|
|
104
|
+
[x: string]: unknown;
|
|
105
|
+
};
|
|
106
|
+
$slots: Readonly<{
|
|
107
|
+
[name: string]: import('vue').Slot<any> | undefined;
|
|
108
|
+
}>;
|
|
109
|
+
$root: ComponentPublicInstance | null;
|
|
110
|
+
$parent: ComponentPublicInstance | null;
|
|
111
|
+
$host: Element | null;
|
|
112
|
+
$emit: (event: string, ...args: any[]) => void;
|
|
113
|
+
$el: HTMLDivElement;
|
|
114
|
+
$options: import('vue').ComponentOptionsBase<Readonly<{
|
|
115
|
+
align?: "left" | "right";
|
|
116
|
+
show?: boolean;
|
|
117
|
+
}> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, {
|
|
118
|
+
align: "left" | "right";
|
|
119
|
+
}, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & {
|
|
120
|
+
beforeCreate?: (() => void) | (() => void)[];
|
|
121
|
+
created?: (() => void) | (() => void)[];
|
|
122
|
+
beforeMount?: (() => void) | (() => void)[];
|
|
123
|
+
mounted?: (() => void) | (() => void)[];
|
|
124
|
+
beforeUpdate?: (() => void) | (() => void)[];
|
|
125
|
+
updated?: (() => void) | (() => void)[];
|
|
126
|
+
activated?: (() => void) | (() => void)[];
|
|
127
|
+
deactivated?: (() => void) | (() => void)[];
|
|
128
|
+
beforeDestroy?: (() => void) | (() => void)[];
|
|
129
|
+
beforeUnmount?: (() => void) | (() => void)[];
|
|
130
|
+
destroyed?: (() => void) | (() => void)[];
|
|
131
|
+
unmounted?: (() => void) | (() => void)[];
|
|
132
|
+
renderTracked?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
|
|
133
|
+
renderTriggered?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
|
|
134
|
+
errorCaptured?: ((err: unknown, instance: ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: ComponentPublicInstance | null, info: string) => boolean | void)[];
|
|
135
|
+
};
|
|
136
|
+
$forceUpdate: () => void;
|
|
137
|
+
$nextTick: typeof import('vue').nextTick;
|
|
138
|
+
$watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import('@vue/reactivity').OnCleanup]) => any : (...args: [any, any, import('@vue/reactivity').OnCleanup]) => any, options?: import('vue').WatchOptions): import('vue').WatchStopHandle;
|
|
139
|
+
} & Readonly<{
|
|
140
|
+
align: "left" | "right";
|
|
141
|
+
}> & Omit<Readonly<{
|
|
142
|
+
align?: "left" | "right";
|
|
143
|
+
show?: boolean;
|
|
144
|
+
}> & Readonly<{}>, "align"> & import('vue').ShallowUnwrapRef<{}> & {} & import('vue').ComponentCustomProperties & {} & {
|
|
145
|
+
$slots: {
|
|
146
|
+
default?(_: {}): any;
|
|
147
|
+
};
|
|
148
|
+
}) | null;
|
|
149
|
+
}, HTMLDivElement>;
|
|
150
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
151
|
+
export default _default;
|
|
152
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
153
|
+
new (): {
|
|
154
|
+
$slots: S;
|
|
155
|
+
};
|
|
156
|
+
};
|