This commit is contained in:
2025-09-19 14:25:20 +08:00
parent 269893a435
commit fbf3f77229
24949 changed files with 2839404 additions and 0 deletions

View File

@@ -0,0 +1,14 @@
import Dropdown from './src/dropdown.vue';
import DropdownItem from './src/dropdown-item.vue';
import DropdownMenu from './src/dropdown-menu.vue';
import type { SFCWithInstall } from 'element-plus/es/utils';
export declare const ElDropdown: SFCWithInstall<typeof Dropdown> & {
DropdownItem: typeof DropdownItem;
DropdownMenu: typeof DropdownMenu;
};
export default ElDropdown;
export declare const ElDropdownItem: SFCWithInstall<typeof DropdownItem>;
export declare const ElDropdownMenu: SFCWithInstall<typeof DropdownMenu>;
export * from './src/dropdown';
export * from './src/instance';
export * from './src/tokens';

View File

@@ -0,0 +1,35 @@
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var dropdown$1 = require('./src/dropdown2.js');
var dropdownItem = require('./src/dropdown-item.js');
var dropdownMenu = require('./src/dropdown-menu.js');
var dropdown = require('./src/dropdown.js');
var tokens = require('./src/tokens.js');
var install = require('../../utils/vue/install.js');
const ElDropdown = install.withInstall(dropdown$1["default"], {
DropdownItem: dropdownItem["default"],
DropdownMenu: dropdownMenu["default"]
});
const ElDropdownItem = install.withNoopInstall(dropdownItem["default"]);
const ElDropdownMenu = install.withNoopInstall(dropdownMenu["default"]);
exports.DROPDOWN_COLLECTION_INJECTION_KEY = dropdown.DROPDOWN_COLLECTION_INJECTION_KEY;
exports.DROPDOWN_COLLECTION_ITEM_INJECTION_KEY = dropdown.DROPDOWN_COLLECTION_ITEM_INJECTION_KEY;
exports.ElCollection = dropdown.ElCollection;
exports.ElCollectionItem = dropdown.ElCollectionItem;
exports.FIRST_KEYS = dropdown.FIRST_KEYS;
exports.FIRST_LAST_KEYS = dropdown.FIRST_LAST_KEYS;
exports.LAST_KEYS = dropdown.LAST_KEYS;
exports.dropdownItemProps = dropdown.dropdownItemProps;
exports.dropdownMenuProps = dropdown.dropdownMenuProps;
exports.dropdownProps = dropdown.dropdownProps;
exports.DROPDOWN_INJECTION_KEY = tokens.DROPDOWN_INJECTION_KEY;
exports.DROPDOWN_INSTANCE_INJECTION_KEY = tokens.DROPDOWN_INSTANCE_INJECTION_KEY;
exports.ElDropdown = ElDropdown;
exports.ElDropdownItem = ElDropdownItem;
exports.ElDropdownMenu = ElDropdownMenu;
exports["default"] = ElDropdown;
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.js","sources":["../../../../../packages/components/dropdown/index.ts"],"sourcesContent":["import { withInstall, withNoopInstall } from '@element-plus/utils'\nimport Dropdown from './src/dropdown.vue'\nimport DropdownItem from './src/dropdown-item.vue'\nimport DropdownMenu from './src/dropdown-menu.vue'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElDropdown: SFCWithInstall<typeof Dropdown> & {\n DropdownItem: typeof DropdownItem\n DropdownMenu: typeof DropdownMenu\n} = withInstall(Dropdown, {\n DropdownItem,\n DropdownMenu,\n})\nexport default ElDropdown\nexport const ElDropdownItem: SFCWithInstall<typeof DropdownItem> =\n withNoopInstall(DropdownItem)\nexport const ElDropdownMenu: SFCWithInstall<typeof DropdownMenu> =\n withNoopInstall(DropdownMenu)\nexport * from './src/dropdown'\nexport * from './src/instance'\nexport * from './src/tokens'\n"],"names":["withInstall","Dropdown","DropdownItem","DropdownMenu","withNoopInstall"],"mappings":";;;;;;;;;;;AAIY,MAAC,UAAU,GAAGA,mBAAW,CAACC,qBAAQ,EAAE;AAChD,gBAAEC,uBAAY;AACd,gBAAEC,uBAAY;AACd,CAAC,EAAE;AAES,MAAC,cAAc,GAAGC,uBAAe,CAACF,uBAAY,EAAE;AAChD,MAAC,cAAc,GAAGE,uBAAe,CAACD,uBAAY;;;;;;;;;;;;;;;;;;;"}

View File

@@ -0,0 +1,101 @@
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
var index = require('../../icon/index.js');
var dropdown = require('./dropdown.js');
var tokens = require('./tokens.js');
var pluginVue_exportHelper = require('../../../_virtual/plugin-vue_export-helper.js');
var rovingFocusGroup = require('../../roving-focus-group/src/roving-focus-group.js');
var tokens$1 = require('../../roving-focus-group/src/tokens.js');
var collection = require('../../collection/src/collection.js');
var index$1 = require('../../../hooks/use-namespace/index.js');
var refs = require('../../../utils/vue/refs.js');
var event = require('../../../utils/dom/event.js');
var aria = require('../../../constants/aria.js');
const _sfc_main = vue.defineComponent({
name: "DropdownItemImpl",
components: {
ElIcon: index.ElIcon
},
props: dropdown.dropdownItemProps,
emits: ["pointermove", "pointerleave", "click", "clickimpl"],
setup(_, { emit }) {
const ns = index$1.useNamespace("dropdown");
const { role: menuRole } = vue.inject(tokens.DROPDOWN_INJECTION_KEY, void 0);
const { collectionItemRef: dropdownCollectionItemRef } = vue.inject(dropdown.DROPDOWN_COLLECTION_ITEM_INJECTION_KEY, void 0);
const { collectionItemRef: rovingFocusCollectionItemRef } = vue.inject(rovingFocusGroup.ROVING_FOCUS_ITEM_COLLECTION_INJECTION_KEY, void 0);
const {
rovingFocusGroupItemRef,
tabIndex,
handleFocus,
handleKeydown: handleItemKeydown,
handleMousedown
} = vue.inject(tokens$1.ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY, void 0);
const itemRef = refs.composeRefs(dropdownCollectionItemRef, rovingFocusCollectionItemRef, rovingFocusGroupItemRef);
const role = vue.computed(() => {
if (menuRole.value === "menu") {
return "menuitem";
} else if (menuRole.value === "navigation") {
return "link";
}
return "button";
});
const handleKeydown = event.composeEventHandlers((e) => {
if ([aria.EVENT_CODE.enter, aria.EVENT_CODE.numpadEnter, aria.EVENT_CODE.space].includes(e.code)) {
e.preventDefault();
e.stopImmediatePropagation();
emit("clickimpl", e);
return true;
}
}, handleItemKeydown);
return {
ns,
itemRef,
dataset: {
[collection.COLLECTION_ITEM_SIGN]: ""
},
role,
tabIndex,
handleFocus,
handleKeydown,
handleMousedown
};
}
});
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_el_icon = vue.resolveComponent("el-icon");
return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
_ctx.divided ? (vue.openBlock(), vue.createElementBlock("li", {
key: 0,
role: "separator",
class: vue.normalizeClass(_ctx.ns.bem("menu", "item", "divided"))
}, null, 2)) : vue.createCommentVNode("v-if", true),
vue.createElementVNode("li", vue.mergeProps({ ref: _ctx.itemRef }, { ..._ctx.dataset, ..._ctx.$attrs }, {
"aria-disabled": _ctx.disabled,
class: [_ctx.ns.be("menu", "item"), _ctx.ns.is("disabled", _ctx.disabled)],
tabindex: _ctx.tabIndex,
role: _ctx.role,
onClick: (e) => _ctx.$emit("clickimpl", e),
onFocus: _ctx.handleFocus,
onKeydown: vue.withModifiers(_ctx.handleKeydown, ["self"]),
onMousedown: _ctx.handleMousedown,
onPointermove: (e) => _ctx.$emit("pointermove", e),
onPointerleave: (e) => _ctx.$emit("pointerleave", e)
}), [
_ctx.icon ? (vue.openBlock(), vue.createBlock(_component_el_icon, { key: 0 }, {
default: vue.withCtx(() => [
(vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.icon)))
]),
_: 1
})) : vue.createCommentVNode("v-if", true),
vue.renderSlot(_ctx.$slots, "default")
], 16, ["aria-disabled", "tabindex", "role", "onClick", "onFocus", "onKeydown", "onMousedown", "onPointermove", "onPointerleave"])
], 64);
}
var ElDropdownItemImpl = /* @__PURE__ */ pluginVue_exportHelper["default"](_sfc_main, [["render", _sfc_render], ["__file", "dropdown-item-impl.vue"]]);
exports["default"] = ElDropdownItemImpl;
//# sourceMappingURL=dropdown-item-impl.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,61 @@
declare const _default: import("vue").DefineComponent<{
readonly command: import("element-plus/es/utils").EpPropFinalized<readonly [ObjectConstructor, StringConstructor, NumberConstructor], unknown, unknown, () => {}, boolean>;
readonly disabled: BooleanConstructor;
readonly divided: BooleanConstructor;
readonly textValue: StringConstructor;
readonly icon: {
readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => (string | import("vue").Component) & {}) | (() => string | import("vue").Component) | ((new (...args: any[]) => (string | import("vue").Component) & {}) | (() => string | import("vue").Component))[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
}, {
ns: {
namespace: import("vue").ComputedRef<string>;
b: (blockSuffix?: string) => string;
e: (element?: string) => string;
m: (modifier?: string) => string;
be: (blockSuffix?: string, element?: string) => string;
em: (element?: string, modifier?: string) => string;
bm: (blockSuffix?: string, modifier?: string) => string;
bem: (blockSuffix?: string, element?: string, modifier?: string) => string;
is: {
(name: string, state: boolean | undefined): string;
(name: string): string;
};
cssVar: (object: Record<string, string>) => Record<string, string>;
cssVarName: (name: string) => string;
cssVarBlock: (object: Record<string, string>) => Record<string, string>;
cssVarBlockName: (name: string) => string;
};
itemRef: (el: Element | import("vue").ComponentPublicInstance | null) => void;
dataset: {
"data-el-collection-item": string;
};
role: import("vue").ComputedRef<string>;
tabIndex: import("vue").Ref<number>;
handleFocus: (e: Event) => void;
handleKeydown: (event: KeyboardEvent) => void;
handleMousedown: (e: Event) => void;
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("click" | "pointerleave" | "pointermove" | "clickimpl")[], "click" | "pointerleave" | "pointermove" | "clickimpl", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
readonly command: import("element-plus/es/utils").EpPropFinalized<readonly [ObjectConstructor, StringConstructor, NumberConstructor], unknown, unknown, () => {}, boolean>;
readonly disabled: BooleanConstructor;
readonly divided: BooleanConstructor;
readonly textValue: StringConstructor;
readonly icon: {
readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => (string | import("vue").Component) & {}) | (() => string | import("vue").Component) | ((new (...args: any[]) => (string | import("vue").Component) & {}) | (() => string | import("vue").Component))[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
}>> & {
onClick?: ((...args: any[]) => any) | undefined;
onPointermove?: ((...args: any[]) => any) | undefined;
onPointerleave?: ((...args: any[]) => any) | undefined;
onClickimpl?: ((...args: any[]) => any) | undefined;
}, {
readonly disabled: boolean;
readonly command: import("element-plus/es/utils").EpPropMergeType<readonly [ObjectConstructor, StringConstructor, NumberConstructor], unknown, unknown>;
readonly divided: boolean;
}>;
export default _default;

View File

@@ -0,0 +1,117 @@
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
var rovingFocusItem = require('../../roving-focus-group/src/roving-focus-item.js');
var dropdownItemImpl = require('./dropdown-item-impl.js');
var useDropdown = require('./useDropdown.js');
var dropdown = require('./dropdown.js');
var tokens = require('./tokens.js');
var pluginVue_exportHelper = require('../../../_virtual/plugin-vue_export-helper.js');
var event = require('../../../utils/dom/event.js');
const _sfc_main = vue.defineComponent({
name: "ElDropdownItem",
components: {
ElDropdownCollectionItem: dropdown.ElCollectionItem,
ElRovingFocusItem: rovingFocusItem["default"],
ElDropdownItemImpl: dropdownItemImpl["default"]
},
inheritAttrs: false,
props: dropdown.dropdownItemProps,
emits: ["pointermove", "pointerleave", "click"],
setup(props, { emit, attrs }) {
const { elDropdown } = useDropdown.useDropdown();
const _instance = vue.getCurrentInstance();
const itemRef = vue.ref(null);
const textContent = vue.computed(() => {
var _a, _b;
return (_b = (_a = vue.unref(itemRef)) == null ? void 0 : _a.textContent) != null ? _b : "";
});
const { onItemEnter, onItemLeave } = vue.inject(tokens.DROPDOWN_INJECTION_KEY, void 0);
const handlePointerMove = event.composeEventHandlers((e) => {
emit("pointermove", e);
return e.defaultPrevented;
}, event.whenMouse((e) => {
if (props.disabled) {
onItemLeave(e);
return;
}
const target = e.currentTarget;
if (target === document.activeElement || target.contains(document.activeElement)) {
return;
}
onItemEnter(e);
if (!e.defaultPrevented) {
target == null ? void 0 : target.focus({
preventScroll: true
});
}
}));
const handlePointerLeave = event.composeEventHandlers((e) => {
emit("pointerleave", e);
return e.defaultPrevented;
}, event.whenMouse(onItemLeave));
const handleClick = event.composeEventHandlers((e) => {
if (props.disabled) {
return;
}
emit("click", e);
return e.type !== "keydown" && e.defaultPrevented;
}, (e) => {
var _a, _b, _c;
if (props.disabled) {
e.stopImmediatePropagation();
return;
}
if ((_a = elDropdown == null ? void 0 : elDropdown.hideOnClick) == null ? void 0 : _a.value) {
(_b = elDropdown.handleClick) == null ? void 0 : _b.call(elDropdown);
}
(_c = elDropdown.commandHandler) == null ? void 0 : _c.call(elDropdown, props.command, _instance, e);
});
const propsAndAttrs = vue.computed(() => ({ ...props, ...attrs }));
return {
handleClick,
handlePointerMove,
handlePointerLeave,
textContent,
propsAndAttrs
};
}
});
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
var _a;
const _component_el_dropdown_item_impl = vue.resolveComponent("el-dropdown-item-impl");
const _component_el_roving_focus_item = vue.resolveComponent("el-roving-focus-item");
const _component_el_dropdown_collection_item = vue.resolveComponent("el-dropdown-collection-item");
return vue.openBlock(), vue.createBlock(_component_el_dropdown_collection_item, {
disabled: _ctx.disabled,
"text-value": (_a = _ctx.textValue) != null ? _a : _ctx.textContent
}, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_roving_focus_item, {
focusable: !_ctx.disabled
}, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_dropdown_item_impl, vue.mergeProps(_ctx.propsAndAttrs, {
onPointerleave: _ctx.handlePointerLeave,
onPointermove: _ctx.handlePointerMove,
onClickimpl: _ctx.handleClick
}), {
default: vue.withCtx(() => [
vue.renderSlot(_ctx.$slots, "default")
]),
_: 3
}, 16, ["onPointerleave", "onPointermove", "onClickimpl"])
]),
_: 3
}, 8, ["focusable"])
]),
_: 3
}, 8, ["disabled", "text-value"]);
}
var DropdownItem = /* @__PURE__ */ pluginVue_exportHelper["default"](_sfc_main, [["render", _sfc_render], ["__file", "dropdown-item.vue"]]);
exports["default"] = DropdownItem;
//# sourceMappingURL=dropdown-item.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,47 @@
declare const _default: import("vue").DefineComponent<{
readonly command: import("element-plus/es/utils").EpPropFinalized<readonly [ObjectConstructor, StringConstructor, NumberConstructor], unknown, unknown, () => {}, boolean>;
readonly disabled: BooleanConstructor;
readonly divided: BooleanConstructor;
readonly textValue: StringConstructor;
readonly icon: {
readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => (string | import("vue").Component) & {}) | (() => string | import("vue").Component) | ((new (...args: any[]) => (string | import("vue").Component) & {}) | (() => string | import("vue").Component))[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
}, {
handleClick: (event: PointerEvent) => void;
handlePointerMove: (event: PointerEvent) => void;
handlePointerLeave: (event: PointerEvent) => void;
textContent: import("vue").ComputedRef<string>;
propsAndAttrs: import("vue").ComputedRef<{
disabled: boolean;
icon: import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => (string | import("vue").Component) & {}) | (() => string | import("vue").Component) | ((new (...args: any[]) => (string | import("vue").Component) & {}) | (() => string | import("vue").Component))[], unknown, unknown> | undefined;
onClick: ((...args: any[]) => any) | undefined;
onPointermove: ((...args: any[]) => any) | undefined;
onPointerleave: ((...args: any[]) => any) | undefined;
command: import("element-plus/es/utils").EpPropMergeType<readonly [ObjectConstructor, StringConstructor, NumberConstructor], unknown, unknown>;
divided: boolean;
textValue: string | undefined;
}>;
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("click" | "pointerleave" | "pointermove")[], "click" | "pointerleave" | "pointermove", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
readonly command: import("element-plus/es/utils").EpPropFinalized<readonly [ObjectConstructor, StringConstructor, NumberConstructor], unknown, unknown, () => {}, boolean>;
readonly disabled: BooleanConstructor;
readonly divided: BooleanConstructor;
readonly textValue: StringConstructor;
readonly icon: {
readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => (string | import("vue").Component) & {}) | (() => string | import("vue").Component) | ((new (...args: any[]) => (string | import("vue").Component) & {}) | (() => string | import("vue").Component))[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
}>> & {
onClick?: ((...args: any[]) => any) | undefined;
onPointermove?: ((...args: any[]) => any) | undefined;
onPointerleave?: ((...args: any[]) => any) | undefined;
}, {
readonly disabled: boolean;
readonly command: import("element-plus/es/utils").EpPropMergeType<readonly [ObjectConstructor, StringConstructor, NumberConstructor], unknown, unknown>;
readonly divided: boolean;
}>;
export default _default;

View File

@@ -0,0 +1,99 @@
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
var tokens$1 = require('./tokens.js');
var dropdown = require('./dropdown.js');
var useDropdown = require('./useDropdown.js');
var pluginVue_exportHelper = require('../../../_virtual/plugin-vue_export-helper.js');
var tokens$2 = require('../../roving-focus-group/src/tokens.js');
var rovingFocusGroup = require('../../roving-focus-group/src/roving-focus-group.js');
var utils = require('../../roving-focus-group/src/utils.js');
var index = require('../../../hooks/use-namespace/index.js');
var tokens = require('../../focus-trap/src/tokens.js');
var refs = require('../../../utils/vue/refs.js');
var event = require('../../../utils/dom/event.js');
var aria = require('../../../constants/aria.js');
const _sfc_main = vue.defineComponent({
name: "ElDropdownMenu",
props: dropdown.dropdownMenuProps,
setup(props) {
const ns = index.useNamespace("dropdown");
const { _elDropdownSize } = useDropdown.useDropdown();
const size = _elDropdownSize.value;
const { focusTrapRef, onKeydown } = vue.inject(tokens.FOCUS_TRAP_INJECTION_KEY, void 0);
const { contentRef, role, triggerId } = vue.inject(tokens$1.DROPDOWN_INJECTION_KEY, void 0);
const { collectionRef: dropdownCollectionRef, getItems } = vue.inject(dropdown.DROPDOWN_COLLECTION_INJECTION_KEY, void 0);
const {
rovingFocusGroupRef,
rovingFocusGroupRootStyle,
tabIndex,
onBlur,
onFocus,
onMousedown
} = vue.inject(tokens$2.ROVING_FOCUS_GROUP_INJECTION_KEY, void 0);
const { collectionRef: rovingFocusGroupCollectionRef } = vue.inject(rovingFocusGroup.ROVING_FOCUS_COLLECTION_INJECTION_KEY, void 0);
const dropdownKls = vue.computed(() => {
return [ns.b("menu"), ns.bm("menu", size == null ? void 0 : size.value)];
});
const dropdownListWrapperRef = refs.composeRefs(contentRef, dropdownCollectionRef, focusTrapRef, rovingFocusGroupRef, rovingFocusGroupCollectionRef);
const composedKeydown = event.composeEventHandlers((e) => {
var _a;
(_a = props.onKeydown) == null ? void 0 : _a.call(props, e);
}, (e) => {
const { currentTarget, code, target } = e;
currentTarget.contains(target);
if (aria.EVENT_CODE.tab === code) {
e.stopImmediatePropagation();
}
e.preventDefault();
if (target !== vue.unref(contentRef) || !dropdown.FIRST_LAST_KEYS.includes(code))
return;
const items = getItems().filter((item) => !item.disabled);
const targets = items.map((item) => item.ref);
if (dropdown.LAST_KEYS.includes(code)) {
targets.reverse();
}
utils.focusFirst(targets);
});
const handleKeydown = (e) => {
composedKeydown(e);
onKeydown(e);
};
return {
size,
rovingFocusGroupRootStyle,
tabIndex,
dropdownKls,
role,
triggerId,
dropdownListWrapperRef,
handleKeydown,
onBlur,
onFocus,
onMousedown
};
}
});
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createElementBlock("ul", {
ref: _ctx.dropdownListWrapperRef,
class: vue.normalizeClass(_ctx.dropdownKls),
style: vue.normalizeStyle(_ctx.rovingFocusGroupRootStyle),
tabindex: -1,
role: _ctx.role,
"aria-labelledby": _ctx.triggerId,
onBlur: _ctx.onBlur,
onFocus: _ctx.onFocus,
onKeydown: vue.withModifiers(_ctx.handleKeydown, ["self"]),
onMousedown: vue.withModifiers(_ctx.onMousedown, ["self"])
}, [
vue.renderSlot(_ctx.$slots, "default")
], 46, ["role", "aria-labelledby", "onBlur", "onFocus", "onKeydown", "onMousedown"]);
}
var DropdownMenu = /* @__PURE__ */ pluginVue_exportHelper["default"](_sfc_main, [["render", _sfc_render], ["__file", "dropdown-menu.vue"]]);
exports["default"] = DropdownMenu;
//# sourceMappingURL=dropdown-menu.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,28 @@
declare const _default: import("vue").DefineComponent<{
onKeydown: {
readonly type: import("vue").PropType<(e: KeyboardEvent) => void>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
}, {
size: import("vue").ComputedRef<string> | undefined;
rovingFocusGroupRootStyle: import("vue").Ref<import("vue").StyleValue>;
tabIndex: import("vue").Ref<number>;
dropdownKls: import("vue").ComputedRef<string[]>;
role: import("vue").ComputedRef<import("element-plus/es/utils").EpPropMergeType<StringConstructor, "dialog" | "menu" | "grid" | "listbox" | "tooltip" | "tree" | "group" | "navigation", unknown>>;
triggerId: import("vue").ComputedRef<string>;
dropdownListWrapperRef: (el: Element | import("vue").ComponentPublicInstance | null) => void;
handleKeydown: (e: KeyboardEvent) => void;
onBlur: (e: Event) => void;
onFocus: (e: FocusEvent) => void;
onMousedown: (e: Event) => void;
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
onKeydown: {
readonly type: import("vue").PropType<(e: KeyboardEvent) => void>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
}>>, {}>;
export default _default;

View File

@@ -0,0 +1,274 @@
import type { Placement } from 'element-plus/es/components/popper';
import type { Options } from '@popperjs/core';
import type { ButtonProps } from 'element-plus/es/components/button';
import type { ComponentInternalInstance, ComputedRef } from 'vue';
import type { Nullable } from 'element-plus/es/utils';
export interface IElDropdownInstance {
instance?: ComponentInternalInstance;
dropdownSize?: ComputedRef<string>;
handleClick?: () => void;
commandHandler?: (...arg: any[]) => void;
show?: () => void;
hide?: () => void;
trigger?: ComputedRef<string>;
hideOnClick?: ComputedRef<boolean>;
triggerElm?: ComputedRef<Nullable<HTMLButtonElement>>;
}
export declare const dropdownProps: {
readonly trigger: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => "click" | "focus" | "contextmenu" | "hover" | import("element-plus/es/components/tooltip").TooltipTriggerType[]) | (() => import("element-plus/es/utils").Arrayable<import("element-plus/es/components/tooltip").TooltipTriggerType>) | ((new (...args: any[]) => "click" | "focus" | "contextmenu" | "hover" | import("element-plus/es/components/tooltip").TooltipTriggerType[]) | (() => import("element-plus/es/utils").Arrayable<import("element-plus/es/components/tooltip").TooltipTriggerType>))[], unknown, unknown, "hover", boolean>;
readonly triggerKeys: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => string[]) | (() => string[]) | ((new (...args: any[]) => string[]) | (() => string[]))[], unknown, unknown, () => string[], boolean>;
readonly virtualTriggering: BooleanConstructor;
readonly virtualRef: {
readonly type: import("vue").PropType<import("element-plus/es/components/popper").Measurable>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly effect: {
readonly default: "light";
readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => string) | (() => import("element-plus/es/components/popper").PopperEffect) | ((new (...args: any[]) => string) | (() => import("element-plus/es/components/popper").PopperEffect))[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
readonly __epPropKey: true;
};
readonly type: {
readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => "" | "text" | "default" | "primary" | "success" | "warning" | "info" | "danger") | (() => import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "text" | "default" | "primary" | "success" | "warning" | "info" | "danger", unknown>) | ((new (...args: any[]) => "" | "text" | "default" | "primary" | "success" | "warning" | "info" | "danger") | (() => import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "text" | "default" | "primary" | "success" | "warning" | "info" | "danger", unknown>))[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly placement: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => "top" | "bottom" | "left" | "right" | "auto" | "auto-start" | "auto-end" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right-start" | "right-end" | "left-start" | "left-end") | (() => Placement) | ((new (...args: any[]) => "top" | "bottom" | "left" | "right" | "auto" | "auto-start" | "auto-end" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right-start" | "right-end" | "left-start" | "left-end") | (() => Placement))[], unknown, unknown, "bottom", boolean>;
readonly popperOptions: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => Partial<Options>) | (() => Partial<Options>) | ((new (...args: any[]) => Partial<Options>) | (() => Partial<Options>))[], unknown, unknown, () => {}, boolean>;
readonly id: StringConstructor;
readonly size: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
readonly splitButton: BooleanConstructor;
readonly hideOnClick: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly loop: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly showArrow: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly showTimeout: import("element-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 150, boolean>;
readonly hideTimeout: import("element-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 150, boolean>;
readonly tabindex: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => string | number) | (() => string | number) | ((new (...args: any[]) => string | number) | (() => string | number))[], unknown, unknown, 0, boolean>;
readonly maxHeight: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => string | number) | (() => string | number) | ((new (...args: any[]) => string | number) | (() => string | number))[], unknown, unknown, "", boolean>;
readonly popperClass: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
readonly disabled: BooleanConstructor;
readonly role: import("element-plus/es/utils").EpPropFinalized<StringConstructor, "dialog" | "menu" | "grid" | "listbox" | "tooltip" | "tree" | "group" | "navigation", unknown, "menu", boolean>;
readonly buttonProps: {
readonly type: import("vue").PropType<Partial<ButtonProps>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly teleported: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly persistent: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
};
export declare const dropdownItemProps: {
readonly command: import("element-plus/es/utils").EpPropFinalized<readonly [ObjectConstructor, StringConstructor, NumberConstructor], unknown, unknown, () => {}, boolean>;
readonly disabled: BooleanConstructor;
readonly divided: BooleanConstructor;
readonly textValue: StringConstructor;
readonly icon: {
readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => (string | import("vue").Component) & {}) | (() => string | import("vue").Component) | ((new (...args: any[]) => (string | import("vue").Component) & {}) | (() => string | import("vue").Component))[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
};
export declare const dropdownMenuProps: {
onKeydown: {
readonly type: import("vue").PropType<(e: KeyboardEvent) => void>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
};
export declare const FIRST_KEYS: string[];
export declare const LAST_KEYS: string[];
export declare const FIRST_LAST_KEYS: string[];
declare const ElCollection: {
name: string;
setup(): void;
__isFragment?: never;
__isTeleport?: never;
__isSuspense?: never;
template?: string | object;
render?: Function;
components?: Record<string, import("vue").Component>;
directives?: Record<string, import("vue").Directive>;
inheritAttrs?: boolean;
emits?: (import("vue").EmitsOptions & ThisType<void>) | undefined;
expose?: string[];
serverPrefetch?(): Promise<any>;
compilerOptions?: import("vue").RuntimeCompilerOptions;
call?: (this: unknown, ...args: unknown[]) => never;
__defaults?: {} | undefined;
compatConfig?: Partial<Record<import("vue").DeprecationTypes, boolean | "suppress-warning">> & {
MODE?: 2 | 3 | ((comp: import("vue").Component | null) => 2 | 3);
};
data?: ((this: import("vue").CreateComponentPublicInstance<Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}, {}, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, Readonly<import("vue").ExtractPropTypes<{}>>, {}, false, {
P: {};
B: {};
D: {};
C: {};
M: {};
Defaults: {};
}, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}, {}, import("vue").MethodOptions, {}>, vm: import("vue").CreateComponentPublicInstance<Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}, {}, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, Readonly<import("vue").ExtractPropTypes<{}>>, {}, false, {
P: {};
B: {};
D: {};
C: {};
M: {};
Defaults: {};
}, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}, {}, import("vue").MethodOptions, {}>) => {}) | undefined;
computed?: {} | undefined;
methods?: {} | undefined;
watch?: {
[x: string]: (string | import("vue").WatchCallback<any, any> | ({
handler: import("vue").WatchCallback | string;
} & import("vue").WatchOptions<boolean>)) | (string | import("vue").WatchCallback<any, any> | ({
handler: import("vue").WatchCallback | string;
} & import("vue").WatchOptions<boolean>))[];
};
provide?: import("vue").ComponentProvideOptions;
inject?: string[] | {
[x: string]: string | symbol | {
from?: string | symbol;
default?: unknown;
};
[x: symbol]: string | symbol | {
from?: string | symbol;
default?: unknown;
};
};
filters?: Record<string, Function>;
mixins?: import("vue").ComponentOptionsMixin[] | undefined;
extends?: import("vue").ComponentOptionsMixin | undefined;
beforeCreate?(): void;
created?(): void;
beforeMount?(): void;
mounted?(): void;
beforeUpdate?(): void;
updated?(): void;
activated?(): void;
deactivated?(): void;
beforeDestroy?(): void;
beforeUnmount?(): void;
destroyed?(): void;
unmounted?(): void;
renderTracked?: (e: import("vue").DebuggerEvent) => void;
renderTriggered?: (e: import("vue").DebuggerEvent) => void;
errorCaptured?: (err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void;
delimiters?: [string, string];
__differentiator?: undefined;
__isBuiltIn?: boolean;
__file?: string;
__name?: string;
beforeRouteEnter?: import("vue-router").NavigationGuardWithThis<undefined>;
beforeRouteUpdate?: import("vue-router").NavigationGuard;
beforeRouteLeave?: import("vue-router").NavigationGuard;
key?: string | number | symbol;
ref?: import("vue").VNodeRef;
ref_for?: boolean;
ref_key?: string;
onVnodeBeforeMount?: ((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[];
onVnodeMounted?: ((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[];
onVnodeBeforeUpdate?: ((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void) | ((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void)[];
onVnodeUpdated?: ((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void) | ((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void)[];
onVnodeBeforeUnmount?: ((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[];
onVnodeUnmounted?: ((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[];
class?: unknown;
style?: unknown;
}, ElCollectionItem: {
name: string;
setup(_: unknown, { attrs }: import("vue").SetupContext): void;
__isFragment?: never;
__isTeleport?: never;
__isSuspense?: never;
template?: string | object;
render?: Function;
components?: Record<string, import("vue").Component>;
directives?: Record<string, import("vue").Directive>;
inheritAttrs?: boolean;
emits?: (import("vue").EmitsOptions & ThisType<void>) | undefined;
expose?: string[];
serverPrefetch?(): Promise<any>;
compilerOptions?: import("vue").RuntimeCompilerOptions;
call?: (this: unknown, ...args: unknown[]) => never;
__defaults?: {} | undefined;
compatConfig?: Partial<Record<import("vue").DeprecationTypes, boolean | "suppress-warning">> & {
MODE?: 2 | 3 | ((comp: import("vue").Component | null) => 2 | 3);
};
data?: ((this: import("vue").CreateComponentPublicInstance<Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}, {}, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, Readonly<import("vue").ExtractPropTypes<{}>>, {}, false, {
P: {};
B: {};
D: {};
C: {};
M: {};
Defaults: {};
}, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}, {}, import("vue").MethodOptions, {}>, vm: import("vue").CreateComponentPublicInstance<Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}, {}, import("vue").MethodOptions, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, Readonly<import("vue").ExtractPropTypes<{}>>, {}, false, {
P: {};
B: {};
D: {};
C: {};
M: {};
Defaults: {};
}, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}, {}, import("vue").MethodOptions, {}>) => {}) | undefined;
computed?: {} | undefined;
methods?: {} | undefined;
watch?: {
[x: string]: (string | import("vue").WatchCallback<any, any> | ({
handler: import("vue").WatchCallback | string;
} & import("vue").WatchOptions<boolean>)) | (string | import("vue").WatchCallback<any, any> | ({
handler: import("vue").WatchCallback | string;
} & import("vue").WatchOptions<boolean>))[];
};
provide?: import("vue").ComponentProvideOptions;
inject?: string[] | {
[x: string]: string | symbol | {
from?: string | symbol;
default?: unknown;
};
[x: symbol]: string | symbol | {
from?: string | symbol;
default?: unknown;
};
};
filters?: Record<string, Function>;
mixins?: import("vue").ComponentOptionsMixin[] | undefined;
extends?: import("vue").ComponentOptionsMixin | undefined;
beforeCreate?(): void;
created?(): void;
beforeMount?(): void;
mounted?(): void;
beforeUpdate?(): void;
updated?(): void;
activated?(): void;
deactivated?(): void;
beforeDestroy?(): void;
beforeUnmount?(): void;
destroyed?(): void;
unmounted?(): void;
renderTracked?: (e: import("vue").DebuggerEvent) => void;
renderTriggered?: (e: import("vue").DebuggerEvent) => void;
errorCaptured?: (err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void;
delimiters?: [string, string];
__differentiator?: undefined;
__isBuiltIn?: boolean;
__file?: string;
__name?: string;
beforeRouteEnter?: import("vue-router").NavigationGuardWithThis<undefined>;
beforeRouteUpdate?: import("vue-router").NavigationGuard;
beforeRouteLeave?: import("vue-router").NavigationGuard;
key?: string | number | symbol;
ref?: import("vue").VNodeRef;
ref_for?: boolean;
ref_key?: string;
onVnodeBeforeMount?: ((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[];
onVnodeMounted?: ((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[];
onVnodeBeforeUpdate?: ((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void) | ((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void)[];
onVnodeUpdated?: ((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void) | ((vnode: import("vue").VNode, oldVNode: import("vue").VNode) => void)[];
onVnodeBeforeUnmount?: ((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[];
onVnodeUnmounted?: ((vnode: import("vue").VNode) => void) | ((vnode: import("vue").VNode) => void)[];
class?: unknown;
style?: unknown;
}, COLLECTION_INJECTION_KEY: import("vue").InjectionKey<import("element-plus/es/components/collection").ElCollectionInjectionContext>, COLLECTION_ITEM_INJECTION_KEY: import("vue").InjectionKey<import("element-plus/es/components/collection").ElCollectionItemInjectionContext>;
export { ElCollection, ElCollectionItem, COLLECTION_INJECTION_KEY as DROPDOWN_COLLECTION_INJECTION_KEY, COLLECTION_ITEM_INJECTION_KEY as DROPDOWN_COLLECTION_ITEM_INJECTION_KEY, };

View File

@@ -0,0 +1,133 @@
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var trigger = require('../../tooltip/src/trigger.js');
var popper = require('../../popper/src/popper.js');
var runtime = require('../../../utils/vue/props/runtime.js');
var aria = require('../../../constants/aria.js');
var content = require('../../tooltip/src/content.js');
var icon = require('../../../utils/vue/icon.js');
var collection = require('../../collection/src/collection.js');
const dropdownProps = runtime.buildProps({
trigger: trigger.useTooltipTriggerProps.trigger,
triggerKeys: {
type: runtime.definePropType(Array),
default: () => [
aria.EVENT_CODE.enter,
aria.EVENT_CODE.numpadEnter,
aria.EVENT_CODE.space,
aria.EVENT_CODE.down
]
},
virtualTriggering: trigger.useTooltipTriggerProps.virtualTriggering,
virtualRef: trigger.useTooltipTriggerProps.virtualRef,
effect: {
...content.useTooltipContentProps.effect,
default: "light"
},
type: {
type: runtime.definePropType(String)
},
placement: {
type: runtime.definePropType(String),
default: "bottom"
},
popperOptions: {
type: runtime.definePropType(Object),
default: () => ({})
},
id: String,
size: {
type: String,
default: ""
},
splitButton: Boolean,
hideOnClick: {
type: Boolean,
default: true
},
loop: {
type: Boolean,
default: true
},
showArrow: {
type: Boolean,
default: true
},
showTimeout: {
type: Number,
default: 150
},
hideTimeout: {
type: Number,
default: 150
},
tabindex: {
type: runtime.definePropType([Number, String]),
default: 0
},
maxHeight: {
type: runtime.definePropType([Number, String]),
default: ""
},
popperClass: {
type: String,
default: ""
},
disabled: Boolean,
role: {
type: String,
values: popper.roleTypes,
default: "menu"
},
buttonProps: {
type: runtime.definePropType(Object)
},
teleported: content.useTooltipContentProps.teleported,
persistent: {
type: Boolean,
default: true
}
});
const dropdownItemProps = runtime.buildProps({
command: {
type: [Object, String, Number],
default: () => ({})
},
disabled: Boolean,
divided: Boolean,
textValue: String,
icon: {
type: icon.iconPropType
}
});
const dropdownMenuProps = runtime.buildProps({
onKeydown: { type: runtime.definePropType(Function) }
});
const FIRST_KEYS = [
aria.EVENT_CODE.down,
aria.EVENT_CODE.pageDown,
aria.EVENT_CODE.home
];
const LAST_KEYS = [aria.EVENT_CODE.up, aria.EVENT_CODE.pageUp, aria.EVENT_CODE.end];
const FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS];
const {
ElCollection,
ElCollectionItem,
COLLECTION_INJECTION_KEY,
COLLECTION_ITEM_INJECTION_KEY
} = collection.createCollectionWithScope("Dropdown");
exports.DROPDOWN_COLLECTION_INJECTION_KEY = COLLECTION_INJECTION_KEY;
exports.DROPDOWN_COLLECTION_ITEM_INJECTION_KEY = COLLECTION_ITEM_INJECTION_KEY;
exports.ElCollection = ElCollection;
exports.ElCollectionItem = ElCollectionItem;
exports.FIRST_KEYS = FIRST_KEYS;
exports.FIRST_LAST_KEYS = FIRST_LAST_KEYS;
exports.LAST_KEYS = LAST_KEYS;
exports.dropdownItemProps = dropdownItemProps;
exports.dropdownMenuProps = dropdownMenuProps;
exports.dropdownProps = dropdownProps;
//# sourceMappingURL=dropdown.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,160 @@
import type { TooltipInstance } from 'element-plus/es/components/tooltip';
import type { CSSProperties } from 'vue';
declare const _default: import("vue").DefineComponent<{
readonly trigger: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => "click" | "focus" | "contextmenu" | "hover" | import("element-plus/es/components/tooltip").TooltipTriggerType[]) | (() => import("element-plus/es/utils").Arrayable<import("element-plus/es/components/tooltip").TooltipTriggerType>) | ((new (...args: any[]) => "click" | "focus" | "contextmenu" | "hover" | import("element-plus/es/components/tooltip").TooltipTriggerType[]) | (() => import("element-plus/es/utils").Arrayable<import("element-plus/es/components/tooltip").TooltipTriggerType>))[], unknown, unknown, "hover", boolean>;
readonly triggerKeys: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => string[]) | (() => string[]) | ((new (...args: any[]) => string[]) | (() => string[]))[], unknown, unknown, () => string[], boolean>;
readonly virtualTriggering: BooleanConstructor;
readonly virtualRef: {
readonly type: import("vue").PropType<import("element-plus").Measurable>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly effect: {
readonly default: "light";
readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => string) | (() => import("element-plus").PopperEffect) | ((new (...args: any[]) => string) | (() => import("element-plus").PopperEffect))[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
readonly __epPropKey: true;
};
readonly type: {
readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => "" | "text" | "default" | "primary" | "success" | "warning" | "info" | "danger") | (() => import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "text" | "default" | "primary" | "success" | "warning" | "info" | "danger", unknown>) | ((new (...args: any[]) => "" | "text" | "default" | "primary" | "success" | "warning" | "info" | "danger") | (() => import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "text" | "default" | "primary" | "success" | "warning" | "info" | "danger", unknown>))[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly placement: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => "top" | "bottom" | "left" | "right" | "auto" | "auto-start" | "auto-end" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("element-plus").Placement) | ((new (...args: any[]) => "top" | "bottom" | "left" | "right" | "auto" | "auto-start" | "auto-end" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("element-plus").Placement))[], unknown, unknown, "bottom", boolean>;
readonly popperOptions: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => Partial<import("element-plus").Options>) | (() => Partial<import("element-plus").Options>) | ((new (...args: any[]) => Partial<import("element-plus").Options>) | (() => Partial<import("element-plus").Options>))[], unknown, unknown, () => {}, boolean>;
readonly id: StringConstructor;
readonly size: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
readonly splitButton: BooleanConstructor;
readonly hideOnClick: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly loop: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly showArrow: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly showTimeout: import("element-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 150, boolean>;
readonly hideTimeout: import("element-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 150, boolean>;
readonly tabindex: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => string | number) | (() => string | number) | ((new (...args: any[]) => string | number) | (() => string | number))[], unknown, unknown, 0, boolean>;
readonly maxHeight: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => string | number) | (() => string | number) | ((new (...args: any[]) => string | number) | (() => string | number))[], unknown, unknown, "", boolean>;
readonly popperClass: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
readonly disabled: BooleanConstructor;
readonly role: import("element-plus/es/utils").EpPropFinalized<StringConstructor, "dialog" | "menu" | "grid" | "listbox" | "tooltip" | "tree" | "group" | "navigation", unknown, "menu", boolean>;
readonly buttonProps: {
readonly type: import("vue").PropType<Partial<import("element-plus/es/components/button").ButtonProps>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly teleported: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly persistent: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
}, {
t: import("element-plus/es/hooks").Translator;
ns: {
namespace: import("vue").ComputedRef<string>;
b: (blockSuffix?: string) => string;
e: (element?: string) => string;
m: (modifier?: string) => string;
be: (blockSuffix?: string, element?: string) => string;
em: (element?: string, modifier?: string) => string;
bm: (blockSuffix?: string, modifier?: string) => string;
bem: (blockSuffix?: string, element?: string, modifier?: string) => string;
is: {
(name: string, state: boolean | undefined): string;
(name: string): string;
};
cssVar: (object: Record<string, string>) => Record<string, string>;
cssVarName: (name: string) => string;
cssVarBlock: (object: Record<string, string>) => Record<string, string>;
cssVarBlockName: (name: string) => string;
};
scrollbar: import("vue").Ref<null>;
wrapStyle: import("vue").ComputedRef<CSSProperties>;
dropdownTriggerKls: import("vue").ComputedRef<string[]>;
dropdownSize: import("vue").ComputedRef<"" | "small" | "default" | "large">;
triggerId: import("vue").ComputedRef<string>;
currentTabId: import("vue").Ref<string | null>;
handleCurrentTabIdChange: (id: string) => void;
handlerMainButtonClick: (event: MouseEvent) => void;
handleEntryFocus: (e: Event) => void;
handleClose: () => void;
handleOpen: () => void;
handleBeforeShowTooltip: () => void;
handleShowTooltip: (event?: Event) => void;
handleBeforeHideTooltip: () => void;
onFocusAfterTrapped: (e: Event) => void;
popperRef: import("vue").Ref<TooltipInstance | undefined>;
contentRef: import("vue").Ref<HTMLElement | undefined>;
triggeringElementRef: import("vue").Ref<any>;
referenceElementRef: import("vue").Ref<any>;
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("click" | "visible-change" | "command")[], "click" | "visible-change" | "command", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
readonly trigger: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => "click" | "focus" | "contextmenu" | "hover" | import("element-plus/es/components/tooltip").TooltipTriggerType[]) | (() => import("element-plus/es/utils").Arrayable<import("element-plus/es/components/tooltip").TooltipTriggerType>) | ((new (...args: any[]) => "click" | "focus" | "contextmenu" | "hover" | import("element-plus/es/components/tooltip").TooltipTriggerType[]) | (() => import("element-plus/es/utils").Arrayable<import("element-plus/es/components/tooltip").TooltipTriggerType>))[], unknown, unknown, "hover", boolean>;
readonly triggerKeys: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => string[]) | (() => string[]) | ((new (...args: any[]) => string[]) | (() => string[]))[], unknown, unknown, () => string[], boolean>;
readonly virtualTriggering: BooleanConstructor;
readonly virtualRef: {
readonly type: import("vue").PropType<import("element-plus").Measurable>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly effect: {
readonly default: "light";
readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => string) | (() => import("element-plus").PopperEffect) | ((new (...args: any[]) => string) | (() => import("element-plus").PopperEffect))[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
readonly __epPropKey: true;
};
readonly type: {
readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => "" | "text" | "default" | "primary" | "success" | "warning" | "info" | "danger") | (() => import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "text" | "default" | "primary" | "success" | "warning" | "info" | "danger", unknown>) | ((new (...args: any[]) => "" | "text" | "default" | "primary" | "success" | "warning" | "info" | "danger") | (() => import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "text" | "default" | "primary" | "success" | "warning" | "info" | "danger", unknown>))[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly placement: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => "top" | "bottom" | "left" | "right" | "auto" | "auto-start" | "auto-end" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("element-plus").Placement) | ((new (...args: any[]) => "top" | "bottom" | "left" | "right" | "auto" | "auto-start" | "auto-end" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("element-plus").Placement))[], unknown, unknown, "bottom", boolean>;
readonly popperOptions: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => Partial<import("element-plus").Options>) | (() => Partial<import("element-plus").Options>) | ((new (...args: any[]) => Partial<import("element-plus").Options>) | (() => Partial<import("element-plus").Options>))[], unknown, unknown, () => {}, boolean>;
readonly id: StringConstructor;
readonly size: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
readonly splitButton: BooleanConstructor;
readonly hideOnClick: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly loop: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly showArrow: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly showTimeout: import("element-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 150, boolean>;
readonly hideTimeout: import("element-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 150, boolean>;
readonly tabindex: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => string | number) | (() => string | number) | ((new (...args: any[]) => string | number) | (() => string | number))[], unknown, unknown, 0, boolean>;
readonly maxHeight: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => string | number) | (() => string | number) | ((new (...args: any[]) => string | number) | (() => string | number))[], unknown, unknown, "", boolean>;
readonly popperClass: import("element-plus/es/utils").EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
readonly disabled: BooleanConstructor;
readonly role: import("element-plus/es/utils").EpPropFinalized<StringConstructor, "dialog" | "menu" | "grid" | "listbox" | "tooltip" | "tree" | "group" | "navigation", unknown, "menu", boolean>;
readonly buttonProps: {
readonly type: import("vue").PropType<Partial<import("element-plus/es/components/button").ButtonProps>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly teleported: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly persistent: import("element-plus/es/utils").EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
}>> & {
onClick?: ((...args: any[]) => any) | undefined;
"onVisible-change"?: ((...args: any[]) => any) | undefined;
onCommand?: ((...args: any[]) => any) | undefined;
}, {
readonly disabled: boolean;
readonly tabindex: import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => string | number) | (() => string | number) | ((new (...args: any[]) => string | number) | (() => string | number))[], unknown, unknown>;
readonly maxHeight: import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => string | number) | (() => string | number) | ((new (...args: any[]) => string | number) | (() => string | number))[], unknown, unknown>;
readonly size: string;
readonly placement: import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => "top" | "bottom" | "left" | "right" | "auto" | "auto-start" | "auto-end" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("element-plus").Placement) | ((new (...args: any[]) => "top" | "bottom" | "left" | "right" | "auto" | "auto-start" | "auto-end" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("element-plus").Placement))[], unknown, unknown>;
readonly effect: import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => string) | (() => import("element-plus").PopperEffect) | ((new (...args: any[]) => string) | (() => import("element-plus").PopperEffect))[], unknown, unknown>;
readonly role: import("element-plus/es/utils").EpPropMergeType<StringConstructor, "dialog" | "menu" | "grid" | "listbox" | "tooltip" | "tree" | "group" | "navigation", unknown>;
readonly trigger: import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => "click" | "focus" | "contextmenu" | "hover" | import("element-plus/es/components/tooltip").TooltipTriggerType[]) | (() => import("element-plus/es/utils").Arrayable<import("element-plus/es/components/tooltip").TooltipTriggerType>) | ((new (...args: any[]) => "click" | "focus" | "contextmenu" | "hover" | import("element-plus/es/components/tooltip").TooltipTriggerType[]) | (() => import("element-plus/es/utils").Arrayable<import("element-plus/es/components/tooltip").TooltipTriggerType>))[], unknown, unknown>;
readonly virtualTriggering: boolean;
readonly loop: import("element-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
readonly popperOptions: Partial<import("element-plus").Options>;
readonly popperClass: string;
readonly triggerKeys: string[];
readonly teleported: import("element-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
readonly persistent: import("element-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
readonly showArrow: import("element-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
readonly hideOnClick: import("element-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>;
readonly showTimeout: number;
readonly hideTimeout: number;
readonly splitButton: boolean;
}>;
export default _default;

View File

@@ -0,0 +1,292 @@
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
var index = require('../../button/index.js');
var index$2 = require('../../tooltip/index.js');
var index$1 = require('../../scrollbar/index.js');
var index$3 = require('../../icon/index.js');
var rovingFocusGroup = require('../../roving-focus-group/src/roving-focus-group2.js');
var iconsVue = require('@element-plus/icons-vue');
var dropdown = require('./dropdown.js');
var tokens = require('./tokens.js');
var pluginVue_exportHelper = require('../../../_virtual/plugin-vue_export-helper.js');
var onlyChild = require('../../slot/src/only-child.js');
var index$4 = require('../../../hooks/use-namespace/index.js');
var index$5 = require('../../../hooks/use-locale/index.js');
var style = require('../../../utils/dom/style.js');
var lodashUnified = require('lodash-unified');
var index$6 = require('../../../hooks/use-id/index.js');
var useFormCommonProps = require('../../form/src/hooks/use-form-common-props.js');
const { ButtonGroup: ElButtonGroup } = index.ElButton;
const _sfc_main = vue.defineComponent({
name: "ElDropdown",
components: {
ElButton: index.ElButton,
ElButtonGroup,
ElScrollbar: index$1.ElScrollbar,
ElDropdownCollection: dropdown.ElCollection,
ElTooltip: index$2.ElTooltip,
ElRovingFocusGroup: rovingFocusGroup["default"],
ElOnlyChild: onlyChild.OnlyChild,
ElIcon: index$3.ElIcon,
ArrowDown: iconsVue.ArrowDown
},
props: dropdown.dropdownProps,
emits: ["visible-change", "click", "command"],
setup(props, { emit }) {
const _instance = vue.getCurrentInstance();
const ns = index$4.useNamespace("dropdown");
const { t } = index$5.useLocale();
const triggeringElementRef = vue.ref();
const referenceElementRef = vue.ref();
const popperRef = vue.ref();
const contentRef = vue.ref();
const scrollbar = vue.ref(null);
const currentTabId = vue.ref(null);
const isUsingKeyboard = vue.ref(false);
const wrapStyle = vue.computed(() => ({
maxHeight: style.addUnit(props.maxHeight)
}));
const dropdownTriggerKls = vue.computed(() => [ns.m(dropdownSize.value)]);
const trigger = vue.computed(() => lodashUnified.castArray(props.trigger));
const defaultTriggerId = index$6.useId().value;
const triggerId = vue.computed(() => props.id || defaultTriggerId);
function handleClick() {
var _a;
(_a = popperRef.value) == null ? void 0 : _a.onClose(void 0, 0);
}
function handleClose() {
var _a;
(_a = popperRef.value) == null ? void 0 : _a.onClose();
}
function handleOpen() {
var _a;
(_a = popperRef.value) == null ? void 0 : _a.onOpen();
}
const dropdownSize = useFormCommonProps.useFormSize();
function commandHandler(...args) {
emit("command", ...args);
}
function onItemEnter() {
}
function onItemLeave() {
const contentEl = vue.unref(contentRef);
trigger.value.includes("hover") && (contentEl == null ? void 0 : contentEl.focus({
preventScroll: true
}));
currentTabId.value = null;
}
function handleCurrentTabIdChange(id) {
currentTabId.value = id;
}
function handleEntryFocus(e) {
if (!isUsingKeyboard.value) {
e.preventDefault();
e.stopImmediatePropagation();
}
}
function handleBeforeShowTooltip() {
emit("visible-change", true);
}
function handleShowTooltip(event) {
var _a;
if ((event == null ? void 0 : event.type) === "keydown") {
(_a = contentRef.value) == null ? void 0 : _a.focus();
}
}
function handleBeforeHideTooltip() {
emit("visible-change", false);
}
vue.provide(tokens.DROPDOWN_INJECTION_KEY, {
contentRef,
role: vue.computed(() => props.role),
triggerId,
isUsingKeyboard,
onItemEnter,
onItemLeave
});
vue.provide(tokens.DROPDOWN_INSTANCE_INJECTION_KEY, {
instance: _instance,
dropdownSize,
handleClick,
commandHandler,
trigger: vue.toRef(props, "trigger"),
hideOnClick: vue.toRef(props, "hideOnClick")
});
const onFocusAfterTrapped = (e) => {
var _a, _b;
e.preventDefault();
(_b = (_a = contentRef.value) == null ? void 0 : _a.focus) == null ? void 0 : _b.call(_a, {
preventScroll: true
});
};
const handlerMainButtonClick = (event) => {
emit("click", event);
};
return {
t,
ns,
scrollbar,
wrapStyle,
dropdownTriggerKls,
dropdownSize,
triggerId,
currentTabId,
handleCurrentTabIdChange,
handlerMainButtonClick,
handleEntryFocus,
handleClose,
handleOpen,
handleBeforeShowTooltip,
handleShowTooltip,
handleBeforeHideTooltip,
onFocusAfterTrapped,
popperRef,
contentRef,
triggeringElementRef,
referenceElementRef
};
}
});
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
var _a, _b;
const _component_el_dropdown_collection = vue.resolveComponent("el-dropdown-collection");
const _component_el_roving_focus_group = vue.resolveComponent("el-roving-focus-group");
const _component_el_scrollbar = vue.resolveComponent("el-scrollbar");
const _component_el_only_child = vue.resolveComponent("el-only-child");
const _component_el_tooltip = vue.resolveComponent("el-tooltip");
const _component_el_button = vue.resolveComponent("el-button");
const _component_arrow_down = vue.resolveComponent("arrow-down");
const _component_el_icon = vue.resolveComponent("el-icon");
const _component_el_button_group = vue.resolveComponent("el-button-group");
return vue.openBlock(), vue.createElementBlock("div", {
class: vue.normalizeClass([_ctx.ns.b(), _ctx.ns.is("disabled", _ctx.disabled)])
}, [
vue.createVNode(_component_el_tooltip, {
ref: "popperRef",
role: _ctx.role,
effect: _ctx.effect,
"fallback-placements": ["bottom", "top"],
"popper-options": _ctx.popperOptions,
"gpu-acceleration": false,
"manual-mode": true,
placement: _ctx.placement,
"popper-class": [_ctx.ns.e("popper"), _ctx.popperClass],
"reference-element": (_a = _ctx.referenceElementRef) == null ? void 0 : _a.$el,
trigger: _ctx.trigger,
"trigger-keys": _ctx.triggerKeys,
"trigger-target-el": _ctx.contentRef,
"show-arrow": _ctx.showArrow,
"show-after": _ctx.trigger === "hover" ? _ctx.showTimeout : 0,
"hide-after": _ctx.trigger === "hover" ? _ctx.hideTimeout : 0,
"stop-popper-mouse-event": false,
"virtual-ref": (_b = _ctx.virtualRef) != null ? _b : _ctx.triggeringElementRef,
"virtual-triggering": _ctx.virtualTriggering || _ctx.splitButton,
disabled: _ctx.disabled,
transition: `${_ctx.ns.namespace.value}-zoom-in-top`,
teleported: _ctx.teleported,
pure: "",
"focus-on-target": "",
persistent: _ctx.persistent,
onBeforeShow: _ctx.handleBeforeShowTooltip,
onShow: _ctx.handleShowTooltip,
onBeforeHide: _ctx.handleBeforeHideTooltip
}, vue.createSlots({
content: vue.withCtx(() => [
vue.createVNode(_component_el_scrollbar, {
ref: "scrollbar",
"wrap-style": _ctx.wrapStyle,
tag: "div",
"view-class": _ctx.ns.e("list")
}, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_roving_focus_group, {
loop: _ctx.loop,
"current-tab-id": _ctx.currentTabId,
orientation: "horizontal",
onCurrentTabIdChange: _ctx.handleCurrentTabIdChange,
onEntryFocus: _ctx.handleEntryFocus
}, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_dropdown_collection, null, {
default: vue.withCtx(() => [
vue.renderSlot(_ctx.$slots, "dropdown")
]),
_: 3
})
]),
_: 3
}, 8, ["loop", "current-tab-id", "onCurrentTabIdChange", "onEntryFocus"])
]),
_: 3
}, 8, ["wrap-style", "view-class"])
]),
_: 2
}, [
!_ctx.splitButton ? {
name: "default",
fn: vue.withCtx(() => [
vue.createVNode(_component_el_only_child, {
id: _ctx.triggerId,
ref: "triggeringElementRef",
role: "button",
tabindex: _ctx.tabindex
}, {
default: vue.withCtx(() => [
vue.renderSlot(_ctx.$slots, "default")
]),
_: 3
}, 8, ["id", "tabindex"])
])
} : void 0
]), 1032, ["role", "effect", "popper-options", "placement", "popper-class", "reference-element", "trigger", "trigger-keys", "trigger-target-el", "show-arrow", "show-after", "hide-after", "virtual-ref", "virtual-triggering", "disabled", "transition", "teleported", "persistent", "onBeforeShow", "onShow", "onBeforeHide"]),
_ctx.splitButton ? (vue.openBlock(), vue.createBlock(_component_el_button_group, { key: 0 }, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_button, vue.mergeProps({ ref: "referenceElementRef" }, _ctx.buttonProps, {
size: _ctx.dropdownSize,
type: _ctx.type,
disabled: _ctx.disabled,
tabindex: _ctx.tabindex,
onClick: _ctx.handlerMainButtonClick
}), {
default: vue.withCtx(() => [
vue.renderSlot(_ctx.$slots, "default")
]),
_: 3
}, 16, ["size", "type", "disabled", "tabindex", "onClick"]),
vue.createVNode(_component_el_button, vue.mergeProps({
id: _ctx.triggerId,
ref: "triggeringElementRef"
}, _ctx.buttonProps, {
role: "button",
size: _ctx.dropdownSize,
type: _ctx.type,
class: _ctx.ns.e("caret-button"),
disabled: _ctx.disabled,
tabindex: _ctx.tabindex,
"aria-label": _ctx.t("el.dropdown.toggleDropdown")
}), {
default: vue.withCtx(() => [
vue.createVNode(_component_el_icon, {
class: vue.normalizeClass(_ctx.ns.e("icon"))
}, {
default: vue.withCtx(() => [
vue.createVNode(_component_arrow_down)
]),
_: 1
}, 8, ["class"])
]),
_: 1
}, 16, ["id", "size", "type", "class", "disabled", "tabindex", "aria-label"])
]),
_: 3
})) : vue.createCommentVNode("v-if", true)
], 2);
}
var Dropdown = /* @__PURE__ */ pluginVue_exportHelper["default"](_sfc_main, [["render", _sfc_render], ["__file", "dropdown.vue"]]);
exports["default"] = Dropdown;
//# sourceMappingURL=dropdown2.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,2 @@
import type Dropdown from './dropdown.vue';
export type DropdownInstance = InstanceType<typeof Dropdown> & unknown;

View File

@@ -0,0 +1,3 @@
'use strict';
//# sourceMappingURL=instance.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"instance.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}

View File

@@ -0,0 +1,12 @@
import type { PopperProps } from 'element-plus/es/components/popper';
import type { ComputedRef, InjectionKey, Ref } from 'vue';
export type ElDropdownInjectionContext = {
contentRef: Ref<HTMLElement | undefined>;
role: ComputedRef<PopperProps['role']>;
triggerId: ComputedRef<string>;
isUsingKeyboard: Ref<boolean>;
onItemLeave: (e: PointerEvent) => void;
onItemEnter: (e: PointerEvent) => void;
};
export declare const DROPDOWN_INJECTION_KEY: InjectionKey<ElDropdownInjectionContext>;
export declare const DROPDOWN_INSTANCE_INJECTION_KEY = "elDropdown";

View File

@@ -0,0 +1,10 @@
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
const DROPDOWN_INJECTION_KEY = Symbol("elDropdown");
const DROPDOWN_INSTANCE_INJECTION_KEY = "elDropdown";
exports.DROPDOWN_INJECTION_KEY = DROPDOWN_INJECTION_KEY;
exports.DROPDOWN_INSTANCE_INJECTION_KEY = DROPDOWN_INSTANCE_INJECTION_KEY;
//# sourceMappingURL=tokens.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"tokens.js","sources":["../../../../../../packages/components/dropdown/src/tokens.ts"],"sourcesContent":["import type { PopperProps } from '@element-plus/components/popper'\nimport type { ComputedRef, InjectionKey, Ref } from 'vue'\n\nexport type ElDropdownInjectionContext = {\n contentRef: Ref<HTMLElement | undefined>\n role: ComputedRef<PopperProps['role']>\n triggerId: ComputedRef<string>\n isUsingKeyboard: Ref<boolean>\n onItemLeave: (e: PointerEvent) => void\n onItemEnter: (e: PointerEvent) => void\n}\n\nexport const DROPDOWN_INJECTION_KEY: InjectionKey<ElDropdownInjectionContext> =\n Symbol('elDropdown')\n\nexport const DROPDOWN_INSTANCE_INJECTION_KEY = 'elDropdown'\n"],"names":[],"mappings":";;;;AAAY,MAAC,sBAAsB,GAAG,MAAM,CAAC,YAAY,EAAE;AAC/C,MAAC,+BAA+B,GAAG;;;;;"}

View File

@@ -0,0 +1,5 @@
import type { IElDropdownInstance } from './dropdown';
export declare const useDropdown: () => {
elDropdown: IElDropdownInstance;
_elDropdownSize: import("vue").ComputedRef<import("vue").ComputedRef<string> | undefined>;
};

View File

@@ -0,0 +1,18 @@
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
var tokens = require('./tokens.js');
const useDropdown = () => {
const elDropdown = vue.inject(tokens.DROPDOWN_INSTANCE_INJECTION_KEY, {});
const _elDropdownSize = vue.computed(() => elDropdown == null ? void 0 : elDropdown.dropdownSize);
return {
elDropdown,
_elDropdownSize
};
};
exports.useDropdown = useDropdown;
//# sourceMappingURL=useDropdown.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"useDropdown.js","sources":["../../../../../../packages/components/dropdown/src/useDropdown.ts"],"sourcesContent":["import { computed, inject } from 'vue'\nimport { DROPDOWN_INSTANCE_INJECTION_KEY } from './tokens'\n\nimport type { IElDropdownInstance } from './dropdown'\n\nexport const useDropdown = () => {\n const elDropdown = inject<IElDropdownInstance>(\n DROPDOWN_INSTANCE_INJECTION_KEY,\n {}\n )\n const _elDropdownSize = computed(() => elDropdown?.dropdownSize)\n\n return {\n elDropdown,\n _elDropdownSize,\n }\n}\n"],"names":["inject","DROPDOWN_INSTANCE_INJECTION_KEY","computed"],"mappings":";;;;;;;AAEY,MAAC,WAAW,GAAG,MAAM;AACjC,EAAE,MAAM,UAAU,GAAGA,UAAM,CAACC,sCAA+B,EAAE,EAAE,CAAC,CAAC;AACjE,EAAE,MAAM,eAAe,GAAGC,YAAQ,CAAC,MAAM,UAAU,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;AAChG,EAAE,OAAO;AACT,IAAI,UAAU;AACd,IAAI,eAAe;AACnB,GAAG,CAAC;AACJ;;;;"}

View File

@@ -0,0 +1,6 @@
import 'element-plus/es/components/base/style/css';
import 'element-plus/es/components/button/style/css';
import 'element-plus/es/components/button-group/style/css';
import 'element-plus/es/components/popper/style/css';
import 'element-plus/es/components/scrollbar/style/css';
import 'element-plus/theme-chalk/el-dropdown.css';

View File

@@ -0,0 +1,10 @@
'use strict';
require('../../base/style/css.js');
require('../../button/style/css.js');
require('../../button-group/style/css.js');
require('../../popper/style/css.js');
require('../../scrollbar/style/css.js');
require('element-plus/theme-chalk/el-dropdown.css');
//# sourceMappingURL=css.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}

View File

@@ -0,0 +1,6 @@
import 'element-plus/es/components/base/style';
import 'element-plus/es/components/button/style';
import 'element-plus/es/components/button-group/style';
import 'element-plus/es/components/popper/style';
import 'element-plus/es/components/scrollbar/style';
import 'element-plus/theme-chalk/src/dropdown.scss';

View File

@@ -0,0 +1,10 @@
'use strict';
require('../../base/style/index.js');
require('../../button/style/index.js');
require('../../button-group/style/index.js');
require('../../popper/style/index.js');
require('../../scrollbar/style/index.js');
require('element-plus/theme-chalk/src/dropdown.scss');
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}