diff --git a/docs/en-US/component/dropdown.md b/docs/en-US/component/dropdown.md index 44db6f9999..cdfb696d06 100644 --- a/docs/en-US/component/dropdown.md +++ b/docs/en-US/component/dropdown.md @@ -92,7 +92,7 @@ dropdown/sizes ### Dropdown Attributes | Name | Description | Type | Default | -| -------------------- | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------- | +| -------------------- |-----------------------------------------------------------------------------------------------------------------------| ------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------- | | type | menu button type, refer to `Button` Component, only works when `split-button` is true | ^[enum]`'' \| 'default' \| 'primary' \| 'success' \| 'warning' \| 'info' \| 'danger' \| 'text' (deprecated)` | '' | | size | menu size, also works on the split button | ^[enum]`'' \| 'large' \| 'default' \| 'small'` | '' | | max-height | the max height of menu | ^[string] / ^[number] | '' | @@ -100,6 +100,7 @@ dropdown/sizes | disabled | whether to disable | ^[boolean] | false | | placement | placement of pop menu | ^[enum]`'top' \| 'top-start' \| 'top-end' \| 'bottom' \| 'bottom-start' \| 'bottom-end'` | bottom | | trigger | how to trigger | ^[enum]`'hover' \| 'click' \| 'contextmenu'` | hover | +| triggerKeys ^(2.9.1) | specify whick keys on the keyboard can trigger when pressed | ^[array]`string[]` | `['Enter', 'Space', 'ArrowDown', 'NumpadEnter']` | hide-on-click | whether to hide menu after clicking menu-item | ^[boolean] | true | | show-timeout | delay time before show a dropdown (only works when trigger is `hover`) | ^[number] | 150 | | hide-timeout | delay time before hide a dropdown (only works when trigger is `hover`) | ^[number] | 150 | diff --git a/packages/components/dropdown/src/dropdown.ts b/packages/components/dropdown/src/dropdown.ts index 8621416856..d73a1b51a5 100644 --- a/packages/components/dropdown/src/dropdown.ts +++ b/packages/components/dropdown/src/dropdown.ts @@ -30,6 +30,15 @@ export const dropdownProps = buildProps({ * @description how to trigger */ trigger: useTooltipTriggerProps.trigger, + triggerKeys: { + type: definePropType(Array), + default: () => [ + EVENT_CODE.enter, + EVENT_CODE.numpadEnter, + EVENT_CODE.space, + EVENT_CODE.down, + ], + }, effect: { ...useTooltipContentProps.effect, default: 'light', diff --git a/packages/components/dropdown/src/dropdown.vue b/packages/components/dropdown/src/dropdown.vue index 2a2cb0a96a..f81f29a0de 100644 --- a/packages/components/dropdown/src/dropdown.vue +++ b/packages/components/dropdown/src/dropdown.vue @@ -112,7 +112,6 @@ import { ElOnlyChild } from '@element-plus/components/slot' import { useFormSize } from '@element-plus/components/form' import { addUnit, ensureArray } from '@element-plus/utils' import { ArrowDown } from '@element-plus/icons-vue' -import { EVENT_CODE } from '@element-plus/constants' import { useId, useLocale, useNamespace } from '@element-plus/hooks' import { ElCollection as ElDropdownCollection, dropdownProps } from './dropdown' import { DROPDOWN_INJECTION_KEY } from './tokens' @@ -148,12 +147,6 @@ export default defineComponent({ const scrollbar = ref(null) const currentTabId = ref(null) const isUsingKeyboard = ref(false) - const triggerKeys = [ - EVENT_CODE.enter, - EVENT_CODE.numpadEnter, - EVENT_CODE.space, - EVENT_CODE.down, - ] const wrapStyle = computed(() => ({ maxHeight: addUnit(props.maxHeight), @@ -300,7 +293,6 @@ export default defineComponent({ dropdownTriggerKls, dropdownSize, triggerId, - triggerKeys, currentTabId, handleCurrentTabIdChange, handlerMainButtonClick,