element-plus
Version:
A Component Library for Vue 3
1 lines • 13.2 kB
Source Map (JSON)
{"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 :effect=\"effect\"\n :fallback-placements=\"['bottom', 'top']\"\n :popper-options=\"popperOptions\"\n :gpu-acceleration=\"false\"\n :hide-after=\"trigger === 'hover' ? hideTimeout : 0\"\n :manual-mode=\"true\"\n :placement=\"placement\"\n :popper-class=\"[ns.e('popper'), popperClass]\"\n :reference-element=\"referenceElementRef?.$el\"\n :trigger=\"trigger\"\n :show-after=\"trigger === 'hover' ? showTimeout : 0\"\n :stop-popper-mouse-event=\"false\"\n :virtual-ref=\"triggeringElementRef\"\n :virtual-triggering=\"splitButton\"\n :disabled=\"disabled\"\n append-to-body\n pure\n :transition=\"`${ns.namespace.value}-zoom-in-top`\"\n persistent\n @show=\"$emit('visible-change', true)\"\n @hide=\"$emit('visible-change', false)\"\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-focus-trap trapped @mount-on-focus=\"onMountOnFocus\">\n <el-roving-focus-group\n :loop=\"loop\"\n :current-tab-id=\"currentTabId\"\n orientation=\"horizontal\"\n @current-tab-id-change=\"handleCurrentTabIdChange\"\n @entry-focus=\"handleEntryFocus\"\n >\n <el-dropdown-collection>\n <slot name=\"dropdown\" />\n </el-dropdown-collection>\n </el-roving-focus-group>\n </el-focus-trap>\n </el-scrollbar>\n </template>\n <template v-if=\"!splitButton\" #default>\n <div :class=\"dropdownTriggerKls\">\n <slot name=\"default\" />\n </div>\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 @click=\"handlerMainButtonClick\"\n >\n <slot name=\"default\" />\n </el-button>\n <el-button\n ref=\"triggeringElementRef\"\n v-bind=\"buttonProps\"\n :size=\"dropdownSize\"\n :type=\"type\"\n :class=\"ns.e('caret-button')\"\n :disabled=\"disabled\"\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<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 ElFocusTrap from '@element-plus/components/focus-trap'\nimport ElRovingFocusGroup from '@element-plus/components/roving-focus-group'\nimport { addUnit } from '@element-plus/utils'\nimport { ArrowDown } from '@element-plus/icons-vue'\nimport { useNamespace, useSize } from '@element-plus/hooks'\nimport { ElCollection as ElDropdownCollection, dropdownProps } from './dropdown'\nimport { DROPDOWN_INJECTION_KEY } from './tokens'\n\nimport type { CSSProperties } from 'vue'\n\nconst { ButtonGroup: ElButtonGroup } = ElButton\n\nexport default defineComponent({\n name: 'ElDropdown',\n components: {\n ElButton,\n ElFocusTrap,\n ElButtonGroup,\n ElScrollbar,\n ElDropdownCollection,\n ElTooltip,\n ElRovingFocusGroup,\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\n const triggeringElementRef = ref()\n const referenceElementRef = ref()\n const popperRef = ref<InstanceType<typeof ElTooltip> | null>(null)\n const contentRef = ref<HTMLElement | null>(null)\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\n function handleClick() {\n handleClose()\n }\n\n function handleClose() {\n popperRef.value?.onClose()\n }\n\n function handleOpen() {\n popperRef.value?.onOpen()\n }\n\n const dropdownSize = useSize()\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 contentEl?.focus()\n currentTabId.value = null\n }\n\n function handleCurrentTabIdChange(id: string) {\n currentTabId.value = id\n }\n\n function handleEntryFocus(e: Event) {\n if (!isUsingKeyboard.value) {\n e.preventDefault()\n e.stopImmediatePropagation()\n }\n }\n\n provide(DROPDOWN_INJECTION_KEY, {\n contentRef,\n isUsingKeyboard,\n onItemEnter,\n onItemLeave,\n })\n\n provide('elDropdown', {\n instance: _instance,\n dropdownSize,\n handleClick,\n commandHandler,\n trigger: toRef(props, 'trigger'),\n hideOnClick: toRef(props, 'hideOnClick'),\n })\n\n const onMountOnFocus = (e: Event) => {\n e.preventDefault()\n contentRef.value?.focus?.({\n preventScroll: true,\n })\n }\n\n const handlerMainButtonClick = (event: MouseEvent) => {\n emit('click', event)\n }\n\n return {\n ns,\n scrollbar,\n wrapStyle,\n dropdownTriggerKls,\n dropdownSize,\n currentTabId,\n handleCurrentTabIdChange,\n handlerMainButtonClick,\n handleEntryFocus,\n handleClose,\n handleOpen,\n onMountOnFocus,\n popperRef,\n triggeringElementRef,\n referenceElementRef,\n }\n },\n})\n</script>\n"],"names":["ElDropdownCollection","_resolveComponent","_openBlock","_createElementBlock","_normalizeClass","_createVNode","_createSlots","_withCtx","_createElementVNode","_createBlock","_mergeProps","_renderSlot"],"mappings":"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"}