UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 14.3 kB
{"version":3,"file":"dropdown2.mjs","sources":["../../../../../../packages/components/dropdown/src/dropdown.vue"],"sourcesContent":["<template>\n <div :class=\"[ns.b(), ns.is('disabled', disabled)]\">\n <el-tooltip\n ref=\"popperRef\"\n :role=\"role\"\n :effect=\"effect\"\n :fallback-placements=\"['bottom', 'top']\"\n :popper-options=\"popperOptions\"\n :gpu-acceleration=\"false\"\n :placement=\"placement\"\n :popper-class=\"[ns.e('popper'), popperClass!]\"\n :popper-style=\"popperStyle\"\n :trigger=\"trigger\"\n :trigger-keys=\"triggerKeys\"\n :trigger-target-el=\"contentRef\"\n :show-arrow=\"showArrow\"\n :show-after=\"trigger === 'hover' ? showTimeout : 0\"\n :hide-after=\"trigger === 'hover' ? hideTimeout : 0\"\n :virtual-ref=\"virtualRef ?? triggeringElementRef\"\n :virtual-triggering=\"virtualTriggering || splitButton\"\n :disabled=\"disabled\"\n :transition=\"`${ns.namespace.value}-zoom-in-top`\"\n :teleported=\"teleported\"\n :append-to=\"appendTo\"\n pure\n focus-on-target\n :persistent=\"persistent\"\n @before-show=\"handleBeforeShowTooltip\"\n @show=\"handleShowTooltip\"\n @before-hide=\"handleBeforeHideTooltip\"\n >\n <template #content>\n <el-scrollbar\n ref=\"scrollbar\"\n :wrap-style=\"wrapStyle\"\n tag=\"div\"\n :view-class=\"ns.e('list')\"\n >\n <el-roving-focus-group\n :loop=\"loop\"\n :current-tab-id=\"currentTabId\"\n orientation=\"horizontal\"\n @current-tab-id-change=\"handleCurrentTabIdChange\"\n >\n <slot name=\"dropdown\" />\n </el-roving-focus-group>\n </el-scrollbar>\n </template>\n <template v-if=\"!splitButton\" #default>\n <el-only-child\n :id=\"triggerId\"\n ref=\"triggeringElementRef\"\n role=\"button\"\n :tabindex=\"tabindex\"\n >\n <slot name=\"default\" />\n </el-only-child>\n </template>\n </el-tooltip>\n <template v-if=\"splitButton\">\n <el-button-group>\n <el-button\n ref=\"referenceElementRef\"\n v-bind=\"buttonProps\"\n :size=\"dropdownSize\"\n :type=\"type\"\n :disabled=\"disabled\"\n :tabindex=\"tabindex\"\n @click=\"handlerMainButtonClick\"\n >\n <slot name=\"default\" />\n </el-button>\n <el-button\n :id=\"triggerId\"\n ref=\"triggeringElementRef\"\n v-bind=\"buttonProps\"\n role=\"button\"\n :size=\"dropdownSize\"\n :type=\"type\"\n :class=\"ns.e('caret-button')\"\n :disabled=\"disabled\"\n :tabindex=\"tabindex\"\n :aria-label=\"t('el.dropdown.toggleDropdown')\"\n >\n <el-icon :class=\"ns.e('icon')\"><arrow-down /></el-icon>\n </el-button>\n </el-button-group>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n computed,\n defineComponent,\n getCurrentInstance,\n provide,\n ref,\n toRef,\n unref,\n} from 'vue'\nimport ElButton from '@element-plus/components/button'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport ElScrollbar from '@element-plus/components/scrollbar'\nimport ElIcon from '@element-plus/components/icon'\nimport ElRovingFocusGroup from '@element-plus/components/roving-focus-group'\nimport { ElOnlyChild } from '@element-plus/components/slot'\nimport { useFormSize } from '@element-plus/components/form'\nimport { addUnit, ensureArray } from '@element-plus/utils'\nimport { ArrowDown } from '@element-plus/icons-vue'\nimport { useId, useLocale, useNamespace } from '@element-plus/hooks'\nimport { dropdownProps } from './dropdown'\nimport {\n DROPDOWN_INJECTION_KEY,\n DROPDOWN_INSTANCE_INJECTION_KEY,\n} from './tokens'\n\nimport type { TooltipInstance } from '@element-plus/components/tooltip'\nimport type { CSSProperties } from 'vue'\n\nconst { ButtonGroup: ElButtonGroup } = ElButton\n\nexport default defineComponent({\n name: 'ElDropdown',\n components: {\n ElButton,\n ElButtonGroup,\n ElScrollbar,\n ElTooltip,\n ElRovingFocusGroup,\n ElOnlyChild,\n ElIcon,\n ArrowDown,\n },\n props: dropdownProps,\n emits: ['visible-change', 'click', 'command'],\n setup(props, { emit }) {\n const _instance = getCurrentInstance()\n const ns = useNamespace('dropdown')\n const { t } = useLocale()\n\n const triggeringElementRef = ref()\n const referenceElementRef = ref()\n const popperRef = ref<TooltipInstance>()\n const contentRef = ref<HTMLElement>()\n const scrollbar = ref(null)\n const currentTabId = ref<string | null>(null)\n const isUsingKeyboard = ref(false)\n\n const wrapStyle = computed<CSSProperties>(() => ({\n maxHeight: addUnit(props.maxHeight),\n }))\n const dropdownTriggerKls = computed(() => [ns.m(dropdownSize.value)])\n const trigger = computed(() => ensureArray(props.trigger))\n\n const defaultTriggerId = useId().value\n const triggerId = computed<string>(() => props.id || defaultTriggerId)\n\n function handleClick() {\n popperRef.value?.onClose(undefined, 0)\n }\n\n function handleClose() {\n popperRef.value?.onClose()\n }\n\n function handleOpen() {\n popperRef.value?.onOpen()\n }\n\n const dropdownSize = useFormSize()\n\n function commandHandler(...args: any[]) {\n emit('command', ...args)\n }\n\n function onItemEnter() {\n // NOOP for now\n }\n\n function onItemLeave() {\n const contentEl = unref(contentRef)\n\n trigger.value.includes('hover') &&\n contentEl?.focus({\n preventScroll: true,\n })\n currentTabId.value = null\n }\n\n function handleCurrentTabIdChange(id: string) {\n currentTabId.value = id\n }\n\n function handleBeforeShowTooltip() {\n emit('visible-change', true)\n }\n\n function handleShowTooltip(event?: Event) {\n isUsingKeyboard.value = event?.type === 'keydown'\n contentRef.value?.focus()\n }\n\n function handleBeforeHideTooltip() {\n emit('visible-change', false)\n }\n\n provide(DROPDOWN_INJECTION_KEY, {\n contentRef,\n role: computed(() => props.role),\n triggerId,\n isUsingKeyboard,\n onItemEnter,\n onItemLeave,\n handleClose,\n })\n\n provide(DROPDOWN_INSTANCE_INJECTION_KEY, {\n instance: _instance,\n dropdownSize,\n handleClick,\n commandHandler,\n trigger: toRef(props, 'trigger'),\n hideOnClick: toRef(props, 'hideOnClick'),\n })\n\n const handlerMainButtonClick = (event: MouseEvent) => {\n emit('click', event)\n }\n\n return {\n t,\n ns,\n scrollbar,\n wrapStyle,\n dropdownTriggerKls,\n dropdownSize,\n triggerId,\n currentTabId,\n handleCurrentTabIdChange,\n handlerMainButtonClick,\n handleClose,\n handleOpen,\n handleBeforeShowTooltip,\n handleShowTooltip,\n handleBeforeHideTooltip,\n popperRef,\n contentRef,\n triggeringElementRef,\n referenceElementRef,\n }\n },\n})\n</script>\n"],"names":["ElOnlyChild","ensureArray","_openBlock","_createElementBlock","_normalizeClass","_createVNode","_createSlots","_withCtx","_renderSlot","_createBlock","_mergeProps"],"mappings":"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"}