@element-plus/nightly 0.0.20221012 → 0.0.20221013
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/index.full.js +135 -42
- package/dist/index.full.min.js +18 -18
- package/dist/index.full.min.js.map +1 -1
- package/dist/index.full.min.mjs +16 -16
- package/dist/index.full.min.mjs.map +1 -1
- package/dist/index.full.mjs +135 -42
- package/dist/locale/af.js +1 -1
- package/dist/locale/af.min.js +1 -1
- package/dist/locale/af.min.mjs +1 -1
- package/dist/locale/af.mjs +1 -1
- package/dist/locale/ar.js +1 -1
- package/dist/locale/ar.min.js +1 -1
- package/dist/locale/ar.min.mjs +1 -1
- package/dist/locale/ar.mjs +1 -1
- package/dist/locale/az.js +1 -1
- package/dist/locale/az.min.js +1 -1
- package/dist/locale/az.min.mjs +1 -1
- package/dist/locale/az.mjs +1 -1
- package/dist/locale/bg.js +1 -1
- package/dist/locale/bg.min.js +1 -1
- package/dist/locale/bg.min.mjs +1 -1
- package/dist/locale/bg.mjs +1 -1
- package/dist/locale/bn.js +1 -1
- package/dist/locale/bn.min.js +1 -1
- package/dist/locale/bn.min.mjs +1 -1
- package/dist/locale/bn.mjs +1 -1
- package/dist/locale/ca.js +1 -1
- package/dist/locale/ca.min.js +1 -1
- package/dist/locale/ca.min.mjs +1 -1
- package/dist/locale/ca.mjs +1 -1
- package/dist/locale/cs.js +1 -1
- package/dist/locale/cs.min.js +1 -1
- package/dist/locale/cs.min.mjs +1 -1
- package/dist/locale/cs.mjs +1 -1
- package/dist/locale/da.js +1 -1
- package/dist/locale/da.min.js +1 -1
- package/dist/locale/da.min.mjs +1 -1
- package/dist/locale/da.mjs +1 -1
- package/dist/locale/de.js +1 -1
- package/dist/locale/de.min.js +1 -1
- package/dist/locale/de.min.mjs +1 -1
- package/dist/locale/de.mjs +1 -1
- package/dist/locale/el.js +1 -1
- package/dist/locale/el.min.js +1 -1
- package/dist/locale/el.min.mjs +1 -1
- package/dist/locale/el.mjs +1 -1
- package/dist/locale/en.js +1 -1
- package/dist/locale/en.min.js +1 -1
- package/dist/locale/en.min.mjs +1 -1
- package/dist/locale/en.mjs +1 -1
- package/dist/locale/eo.js +1 -1
- package/dist/locale/eo.min.js +1 -1
- package/dist/locale/eo.min.mjs +1 -1
- package/dist/locale/eo.mjs +1 -1
- package/dist/locale/es.js +1 -1
- package/dist/locale/es.min.js +1 -1
- package/dist/locale/es.min.mjs +1 -1
- package/dist/locale/es.mjs +1 -1
- package/dist/locale/et.js +1 -1
- package/dist/locale/et.min.js +1 -1
- package/dist/locale/et.min.mjs +1 -1
- package/dist/locale/et.mjs +1 -1
- package/dist/locale/eu.js +1 -1
- package/dist/locale/eu.min.js +1 -1
- package/dist/locale/eu.min.mjs +1 -1
- package/dist/locale/eu.mjs +1 -1
- package/dist/locale/fa.js +1 -1
- package/dist/locale/fa.min.js +1 -1
- package/dist/locale/fa.min.mjs +1 -1
- package/dist/locale/fa.mjs +1 -1
- package/dist/locale/fi.js +1 -1
- package/dist/locale/fi.min.js +1 -1
- package/dist/locale/fi.min.mjs +1 -1
- package/dist/locale/fi.mjs +1 -1
- package/dist/locale/fr.js +1 -1
- package/dist/locale/fr.min.js +1 -1
- package/dist/locale/fr.min.mjs +1 -1
- package/dist/locale/fr.mjs +1 -1
- package/dist/locale/he.js +1 -1
- package/dist/locale/he.min.js +1 -1
- package/dist/locale/he.min.mjs +1 -1
- package/dist/locale/he.mjs +1 -1
- package/dist/locale/hr.js +1 -1
- package/dist/locale/hr.min.js +1 -1
- package/dist/locale/hr.min.mjs +1 -1
- package/dist/locale/hr.mjs +1 -1
- package/dist/locale/hu.js +1 -1
- package/dist/locale/hu.min.js +1 -1
- package/dist/locale/hu.min.mjs +1 -1
- package/dist/locale/hu.mjs +1 -1
- package/dist/locale/hy-am.js +1 -1
- package/dist/locale/hy-am.min.js +1 -1
- package/dist/locale/hy-am.min.mjs +1 -1
- package/dist/locale/hy-am.mjs +1 -1
- package/dist/locale/id.js +1 -1
- package/dist/locale/id.min.js +1 -1
- package/dist/locale/id.min.mjs +1 -1
- package/dist/locale/id.mjs +1 -1
- package/dist/locale/it.js +1 -1
- package/dist/locale/it.min.js +1 -1
- package/dist/locale/it.min.mjs +1 -1
- package/dist/locale/it.mjs +1 -1
- package/dist/locale/ja.js +1 -1
- package/dist/locale/ja.min.js +1 -1
- package/dist/locale/ja.min.mjs +1 -1
- package/dist/locale/ja.mjs +1 -1
- package/dist/locale/kk.js +1 -1
- package/dist/locale/kk.min.js +1 -1
- package/dist/locale/kk.min.mjs +1 -1
- package/dist/locale/kk.mjs +1 -1
- package/dist/locale/km.js +1 -1
- package/dist/locale/km.min.js +1 -1
- package/dist/locale/km.min.mjs +1 -1
- package/dist/locale/km.mjs +1 -1
- package/dist/locale/ko.js +1 -1
- package/dist/locale/ko.min.js +1 -1
- package/dist/locale/ko.min.mjs +1 -1
- package/dist/locale/ko.mjs +1 -1
- package/dist/locale/ku.js +1 -1
- package/dist/locale/ku.min.js +1 -1
- package/dist/locale/ku.min.mjs +1 -1
- package/dist/locale/ku.mjs +1 -1
- package/dist/locale/ky.js +1 -1
- package/dist/locale/ky.min.js +1 -1
- package/dist/locale/ky.min.mjs +1 -1
- package/dist/locale/ky.mjs +1 -1
- package/dist/locale/lt.js +1 -1
- package/dist/locale/lt.min.js +1 -1
- package/dist/locale/lt.min.mjs +1 -1
- package/dist/locale/lt.mjs +1 -1
- package/dist/locale/lv.js +1 -1
- package/dist/locale/lv.min.js +1 -1
- package/dist/locale/lv.min.mjs +1 -1
- package/dist/locale/lv.mjs +1 -1
- package/dist/locale/mg.js +1 -1
- package/dist/locale/mg.min.js +1 -1
- package/dist/locale/mg.min.mjs +1 -1
- package/dist/locale/mg.mjs +1 -1
- package/dist/locale/mn.js +1 -1
- package/dist/locale/mn.min.js +1 -1
- package/dist/locale/mn.min.mjs +1 -1
- package/dist/locale/mn.mjs +1 -1
- package/dist/locale/nb-no.js +1 -1
- package/dist/locale/nb-no.min.js +1 -1
- package/dist/locale/nb-no.min.mjs +1 -1
- package/dist/locale/nb-no.mjs +1 -1
- package/dist/locale/nl.js +1 -1
- package/dist/locale/nl.min.js +1 -1
- package/dist/locale/nl.min.mjs +1 -1
- package/dist/locale/nl.mjs +1 -1
- package/dist/locale/pa.js +1 -1
- package/dist/locale/pa.min.js +1 -1
- package/dist/locale/pa.min.mjs +1 -1
- package/dist/locale/pa.mjs +1 -1
- package/dist/locale/pl.js +1 -1
- package/dist/locale/pl.min.js +1 -1
- package/dist/locale/pl.min.mjs +1 -1
- package/dist/locale/pl.mjs +1 -1
- package/dist/locale/pt-br.js +1 -1
- package/dist/locale/pt-br.min.js +1 -1
- package/dist/locale/pt-br.min.mjs +1 -1
- package/dist/locale/pt-br.mjs +1 -1
- package/dist/locale/pt.js +1 -1
- package/dist/locale/pt.min.js +1 -1
- package/dist/locale/pt.min.mjs +1 -1
- package/dist/locale/pt.mjs +1 -1
- package/dist/locale/ro.js +1 -1
- package/dist/locale/ro.min.js +1 -1
- package/dist/locale/ro.min.mjs +1 -1
- package/dist/locale/ro.mjs +1 -1
- package/dist/locale/ru.js +1 -1
- package/dist/locale/ru.min.js +1 -1
- package/dist/locale/ru.min.mjs +1 -1
- package/dist/locale/ru.mjs +1 -1
- package/dist/locale/sk.js +1 -1
- package/dist/locale/sk.min.js +1 -1
- package/dist/locale/sk.min.mjs +1 -1
- package/dist/locale/sk.mjs +1 -1
- package/dist/locale/sl.js +1 -1
- package/dist/locale/sl.min.js +1 -1
- package/dist/locale/sl.min.mjs +1 -1
- package/dist/locale/sl.mjs +1 -1
- package/dist/locale/sr.js +1 -1
- package/dist/locale/sr.min.js +1 -1
- package/dist/locale/sr.min.mjs +1 -1
- package/dist/locale/sr.mjs +1 -1
- package/dist/locale/sv.js +1 -1
- package/dist/locale/sv.min.js +1 -1
- package/dist/locale/sv.min.mjs +1 -1
- package/dist/locale/sv.mjs +1 -1
- package/dist/locale/ta.js +1 -1
- package/dist/locale/ta.min.js +1 -1
- package/dist/locale/ta.min.mjs +1 -1
- package/dist/locale/ta.mjs +1 -1
- package/dist/locale/th.js +1 -1
- package/dist/locale/th.min.js +1 -1
- package/dist/locale/th.min.mjs +1 -1
- package/dist/locale/th.mjs +1 -1
- package/dist/locale/tk.js +1 -1
- package/dist/locale/tk.min.js +1 -1
- package/dist/locale/tk.min.mjs +1 -1
- package/dist/locale/tk.mjs +1 -1
- package/dist/locale/tr.js +1 -1
- package/dist/locale/tr.min.js +1 -1
- package/dist/locale/tr.min.mjs +1 -1
- package/dist/locale/tr.mjs +1 -1
- package/dist/locale/ug-cn.js +1 -1
- package/dist/locale/ug-cn.min.js +1 -1
- package/dist/locale/ug-cn.min.mjs +1 -1
- package/dist/locale/ug-cn.mjs +1 -1
- package/dist/locale/uk.js +1 -1
- package/dist/locale/uk.min.js +1 -1
- package/dist/locale/uk.min.mjs +1 -1
- package/dist/locale/uk.mjs +1 -1
- package/dist/locale/uz-uz.js +1 -1
- package/dist/locale/uz-uz.min.js +1 -1
- package/dist/locale/uz-uz.min.mjs +1 -1
- package/dist/locale/uz-uz.mjs +1 -1
- package/dist/locale/vi.js +1 -1
- package/dist/locale/vi.min.js +1 -1
- package/dist/locale/vi.min.mjs +1 -1
- package/dist/locale/vi.mjs +1 -1
- package/dist/locale/zh-cn.js +1 -1
- package/dist/locale/zh-cn.min.js +1 -1
- package/dist/locale/zh-cn.min.mjs +1 -1
- package/dist/locale/zh-cn.mjs +1 -1
- package/dist/locale/zh-tw.js +1 -1
- package/dist/locale/zh-tw.min.js +1 -1
- package/dist/locale/zh-tw.min.mjs +1 -1
- package/dist/locale/zh-tw.mjs +1 -1
- package/es/components/autocomplete/index.d.ts +6 -6
- package/es/components/autocomplete/src/autocomplete.vue.d.ts +6 -6
- package/es/components/cascader/index.d.ts +8 -8
- package/es/components/cascader/src/index.mjs +1 -1
- package/es/components/cascader/src/index.mjs.map +1 -1
- package/es/components/cascader/src/index.vue.d.ts +4 -4
- package/es/components/color-picker/index.d.ts +6 -6
- package/es/components/color-picker/src/color-picker.vue.d.ts +6 -6
- package/es/components/dropdown/index.d.ts +4 -4
- package/es/components/dropdown/src/dropdown.vue.d.ts +4 -4
- package/es/components/focus-trap/index.mjs +2 -2
- package/es/components/focus-trap/src/focus-trap.mjs +49 -15
- package/es/components/focus-trap/src/focus-trap.mjs.map +1 -1
- package/es/components/focus-trap/src/tokens.d.ts +2 -0
- package/es/components/focus-trap/src/tokens.mjs +6 -1
- package/es/components/focus-trap/src/tokens.mjs.map +1 -1
- package/es/components/focus-trap/src/utils.d.ts +11 -0
- package/es/components/focus-trap/src/utils.mjs +49 -1
- package/es/components/focus-trap/src/utils.mjs.map +1 -1
- package/es/components/pagination/src/components/sizes.vue.d.ts +4 -4
- package/es/components/popconfirm/index.d.ts +6 -6
- package/es/components/popconfirm/src/popconfirm.vue.d.ts +6 -6
- package/es/components/popover/index.d.ts +6 -6
- package/es/components/popover/src/popover.vue.d.ts +6 -6
- package/es/components/popper/src/content.vue.d.ts +2 -2
- package/es/components/popper/src/content2.mjs +10 -9
- package/es/components/popper/src/content2.mjs.map +1 -1
- package/es/components/select/index.d.ts +4 -4
- package/es/components/select/src/select.vue.d.ts +4 -4
- package/es/components/select/src/useSelect.d.ts +4 -4
- package/es/components/select/src/useSelect.mjs +3 -1
- package/es/components/select/src/useSelect.mjs.map +1 -1
- package/es/components/select-v2/index.d.ts +8 -8
- package/es/components/select-v2/src/select.vue.d.ts +4 -4
- package/es/components/select-v2/src/useSelect.d.ts +4 -4
- package/es/components/slider/index.d.ts +10 -10
- package/es/components/slider/src/button.vue.d.ts +2 -2
- package/es/components/slider/src/composables/use-slide.d.ts +8 -8
- package/es/components/slider/src/slider.vue.d.ts +10 -10
- package/es/components/table/index.d.ts +4 -0
- package/es/components/table/index.mjs.map +1 -1
- package/es/components/table/src/filter-panel.vue.d.ts +4 -4
- package/es/components/tabs/index.d.ts +17 -17
- package/es/components/tabs/src/tab-nav.d.ts +4 -4
- package/es/components/tabs/src/tab-nav.mjs.map +1 -1
- package/es/components/tabs/src/tabs.d.ts +26 -26
- package/es/components/tabs/src/tabs.mjs +4 -4
- package/es/components/tabs/src/tabs.mjs.map +1 -1
- package/es/components/time-picker/src/common/picker.mjs +9 -4
- package/es/components/time-picker/src/common/picker.mjs.map +1 -1
- package/es/components/time-picker/src/common/picker.vue.d.ts +6 -6
- package/es/components/time-select/index.d.ts +16 -16
- package/es/components/time-select/src/time-select.vue.d.ts +8 -8
- package/es/components/tooltip/index.d.ts +2 -2
- package/es/components/tooltip/src/content.vue.d.ts +2 -2
- package/es/components/tooltip/src/tooltip.vue.d.ts +2 -2
- package/es/version.d.ts +1 -1
- package/es/version.mjs +1 -1
- package/es/version.mjs.map +1 -1
- package/lib/components/autocomplete/index.d.ts +6 -6
- package/lib/components/autocomplete/src/autocomplete.vue.d.ts +6 -6
- package/lib/components/cascader/index.d.ts +8 -8
- package/lib/components/cascader/src/index.js +1 -1
- package/lib/components/cascader/src/index.js.map +1 -1
- package/lib/components/cascader/src/index.vue.d.ts +4 -4
- package/lib/components/color-picker/index.d.ts +6 -6
- package/lib/components/color-picker/src/color-picker.vue.d.ts +6 -6
- package/lib/components/dropdown/index.d.ts +4 -4
- package/lib/components/dropdown/src/dropdown.vue.d.ts +4 -4
- package/lib/components/focus-trap/index.js +5 -0
- package/lib/components/focus-trap/index.js.map +1 -1
- package/lib/components/focus-trap/src/focus-trap.js +48 -14
- package/lib/components/focus-trap/src/focus-trap.js.map +1 -1
- package/lib/components/focus-trap/src/tokens.d.ts +2 -0
- package/lib/components/focus-trap/src/tokens.js +7 -0
- package/lib/components/focus-trap/src/tokens.js.map +1 -1
- package/lib/components/focus-trap/src/utils.d.ts +11 -0
- package/lib/components/focus-trap/src/utils.js +51 -0
- package/lib/components/focus-trap/src/utils.js.map +1 -1
- package/lib/components/pagination/src/components/sizes.vue.d.ts +4 -4
- package/lib/components/popconfirm/index.d.ts +6 -6
- package/lib/components/popconfirm/src/popconfirm.vue.d.ts +6 -6
- package/lib/components/popover/index.d.ts +6 -6
- package/lib/components/popover/src/popover.vue.d.ts +6 -6
- package/lib/components/popper/src/content.vue.d.ts +2 -2
- package/lib/components/popper/src/content2.js +10 -9
- package/lib/components/popper/src/content2.js.map +1 -1
- package/lib/components/select/index.d.ts +4 -4
- package/lib/components/select/src/select.vue.d.ts +4 -4
- package/lib/components/select/src/useSelect.d.ts +4 -4
- package/lib/components/select/src/useSelect.js +3 -1
- package/lib/components/select/src/useSelect.js.map +1 -1
- package/lib/components/select-v2/index.d.ts +8 -8
- package/lib/components/select-v2/src/select.vue.d.ts +4 -4
- package/lib/components/select-v2/src/useSelect.d.ts +4 -4
- package/lib/components/slider/index.d.ts +10 -10
- package/lib/components/slider/src/button.vue.d.ts +2 -2
- package/lib/components/slider/src/composables/use-slide.d.ts +8 -8
- package/lib/components/slider/src/slider.vue.d.ts +10 -10
- package/lib/components/table/index.d.ts +4 -0
- package/lib/components/table/index.js.map +1 -1
- package/lib/components/table/src/filter-panel.vue.d.ts +4 -4
- package/lib/components/tabs/index.d.ts +17 -17
- package/lib/components/tabs/src/tab-nav.d.ts +4 -4
- package/lib/components/tabs/src/tab-nav.js.map +1 -1
- package/lib/components/tabs/src/tabs.d.ts +26 -26
- package/lib/components/tabs/src/tabs.js +4 -4
- package/lib/components/tabs/src/tabs.js.map +1 -1
- package/lib/components/time-picker/src/common/picker.js +8 -3
- package/lib/components/time-picker/src/common/picker.js.map +1 -1
- package/lib/components/time-picker/src/common/picker.vue.d.ts +6 -6
- package/lib/components/time-select/index.d.ts +16 -16
- package/lib/components/time-select/src/time-select.vue.d.ts +8 -8
- package/lib/components/tooltip/index.d.ts +2 -2
- package/lib/components/tooltip/src/content.vue.d.ts +2 -2
- package/lib/components/tooltip/src/tooltip.vue.d.ts +2 -2
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -1
- package/package.json +2 -2
- package/web-types.json +1 -1
|
@@ -16,18 +16,18 @@ export declare const ElTabs: import("element-plus/es/utils").SFCWithInstall<impo
|
|
|
16
16
|
};
|
|
17
17
|
readonly editable: BooleanConstructor;
|
|
18
18
|
readonly tabPosition: import("element-plus/es/utils").EpPropFinalized<StringConstructor, "left" | "right" | "top" | "bottom", unknown, "top", boolean>;
|
|
19
|
-
readonly beforeLeave: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (newName: import("./src/tabs").
|
|
20
|
-
(): (newName: import("./src/tabs").
|
|
19
|
+
readonly beforeLeave: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (newName: import("./src/tabs").TabPaneName, oldName: import("./src/tabs").TabPaneName) => import("element-plus/es/utils").Awaitable<boolean | void>) | (() => (newName: import("./src/tabs").TabPaneName, oldName: import("./src/tabs").TabPaneName) => import("element-plus/es/utils").Awaitable<boolean | void>) | {
|
|
20
|
+
(): (newName: import("./src/tabs").TabPaneName, oldName: import("./src/tabs").TabPaneName) => import("element-plus/es/utils").Awaitable<boolean | void>;
|
|
21
21
|
new (): any;
|
|
22
22
|
readonly prototype: any;
|
|
23
|
-
} | ((new (...args: any[]) => (newName: import("./src/tabs").
|
|
24
|
-
(): (newName: import("./src/tabs").
|
|
23
|
+
} | ((new (...args: any[]) => (newName: import("./src/tabs").TabPaneName, oldName: import("./src/tabs").TabPaneName) => import("element-plus/es/utils").Awaitable<boolean | void>) | (() => (newName: import("./src/tabs").TabPaneName, oldName: import("./src/tabs").TabPaneName) => import("element-plus/es/utils").Awaitable<boolean | void>) | {
|
|
24
|
+
(): (newName: import("./src/tabs").TabPaneName, oldName: import("./src/tabs").TabPaneName) => import("element-plus/es/utils").Awaitable<boolean | void>;
|
|
25
25
|
new (): any;
|
|
26
26
|
readonly prototype: any;
|
|
27
27
|
})[], unknown, unknown, () => true, boolean>;
|
|
28
28
|
readonly stretch: BooleanConstructor;
|
|
29
29
|
}, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
30
|
-
"update:modelValue": (name: import("./src/tabs").
|
|
30
|
+
"update:modelValue": (name: import("./src/tabs").TabPaneName) => boolean;
|
|
31
31
|
tabClick: (pane: {
|
|
32
32
|
uid: number;
|
|
33
33
|
slots: Readonly<{
|
|
@@ -45,9 +45,9 @@ export declare const ElTabs: import("element-plus/es/utils").SFCWithInstall<impo
|
|
|
45
45
|
index: string | undefined;
|
|
46
46
|
isClosable: boolean;
|
|
47
47
|
}, ev: Event) => boolean;
|
|
48
|
-
tabChange: (name: import("./src/tabs").
|
|
49
|
-
edit: (paneName: import("./src/tabs").
|
|
50
|
-
tabRemove: (name: import("./src/tabs").
|
|
48
|
+
tabChange: (name: import("./src/tabs").TabPaneName) => boolean;
|
|
49
|
+
edit: (paneName: import("./src/tabs").TabPaneName | undefined, action: "add" | "remove") => boolean;
|
|
50
|
+
tabRemove: (name: import("./src/tabs").TabPaneName) => boolean;
|
|
51
51
|
tabAdd: () => boolean;
|
|
52
52
|
}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
53
53
|
readonly type: import("element-plus/es/utils").EpPropFinalized<StringConstructor, "" | "card" | "border-card", unknown, "", boolean>;
|
|
@@ -67,18 +67,18 @@ export declare const ElTabs: import("element-plus/es/utils").SFCWithInstall<impo
|
|
|
67
67
|
};
|
|
68
68
|
readonly editable: BooleanConstructor;
|
|
69
69
|
readonly tabPosition: import("element-plus/es/utils").EpPropFinalized<StringConstructor, "left" | "right" | "top" | "bottom", unknown, "top", boolean>;
|
|
70
|
-
readonly beforeLeave: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (newName: import("./src/tabs").
|
|
71
|
-
(): (newName: import("./src/tabs").
|
|
70
|
+
readonly beforeLeave: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (newName: import("./src/tabs").TabPaneName, oldName: import("./src/tabs").TabPaneName) => import("element-plus/es/utils").Awaitable<boolean | void>) | (() => (newName: import("./src/tabs").TabPaneName, oldName: import("./src/tabs").TabPaneName) => import("element-plus/es/utils").Awaitable<boolean | void>) | {
|
|
71
|
+
(): (newName: import("./src/tabs").TabPaneName, oldName: import("./src/tabs").TabPaneName) => import("element-plus/es/utils").Awaitable<boolean | void>;
|
|
72
72
|
new (): any;
|
|
73
73
|
readonly prototype: any;
|
|
74
|
-
} | ((new (...args: any[]) => (newName: import("./src/tabs").
|
|
75
|
-
(): (newName: import("./src/tabs").
|
|
74
|
+
} | ((new (...args: any[]) => (newName: import("./src/tabs").TabPaneName, oldName: import("./src/tabs").TabPaneName) => import("element-plus/es/utils").Awaitable<boolean | void>) | (() => (newName: import("./src/tabs").TabPaneName, oldName: import("./src/tabs").TabPaneName) => import("element-plus/es/utils").Awaitable<boolean | void>) | {
|
|
75
|
+
(): (newName: import("./src/tabs").TabPaneName, oldName: import("./src/tabs").TabPaneName) => import("element-plus/es/utils").Awaitable<boolean | void>;
|
|
76
76
|
new (): any;
|
|
77
77
|
readonly prototype: any;
|
|
78
78
|
})[], unknown, unknown, () => true, boolean>;
|
|
79
79
|
readonly stretch: BooleanConstructor;
|
|
80
80
|
}>> & {
|
|
81
|
-
"onUpdate:modelValue"?: ((name: import("./src/tabs").
|
|
81
|
+
"onUpdate:modelValue"?: ((name: import("./src/tabs").TabPaneName) => any) | undefined;
|
|
82
82
|
onTabClick?: ((pane: {
|
|
83
83
|
uid: number;
|
|
84
84
|
slots: Readonly<{
|
|
@@ -96,15 +96,15 @@ export declare const ElTabs: import("element-plus/es/utils").SFCWithInstall<impo
|
|
|
96
96
|
index: string | undefined;
|
|
97
97
|
isClosable: boolean;
|
|
98
98
|
}, ev: Event) => any) | undefined;
|
|
99
|
-
onTabChange?: ((name: import("./src/tabs").
|
|
100
|
-
onEdit?: ((paneName: import("./src/tabs").
|
|
101
|
-
onTabRemove?: ((name: import("./src/tabs").
|
|
99
|
+
onTabChange?: ((name: import("./src/tabs").TabPaneName) => any) | undefined;
|
|
100
|
+
onEdit?: ((paneName: import("./src/tabs").TabPaneName | undefined, action: "add" | "remove") => any) | undefined;
|
|
101
|
+
onTabRemove?: ((name: import("./src/tabs").TabPaneName) => any) | undefined;
|
|
102
102
|
onTabAdd?: (() => any) | undefined;
|
|
103
103
|
}, {
|
|
104
104
|
readonly type: import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "card" | "border-card", unknown>;
|
|
105
105
|
readonly closable: boolean;
|
|
106
106
|
readonly tabPosition: import("element-plus/es/utils").EpPropMergeType<StringConstructor, "left" | "right" | "top" | "bottom", unknown>;
|
|
107
|
-
readonly beforeLeave: (newName: import("./src/tabs").
|
|
107
|
+
readonly beforeLeave: (newName: import("./src/tabs").TabPaneName, oldName: import("./src/tabs").TabPaneName) => import("element-plus/es/utils").Awaitable<boolean | void>;
|
|
108
108
|
readonly addable: boolean;
|
|
109
109
|
readonly editable: boolean;
|
|
110
110
|
readonly stretch: boolean;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ExtractPropTypes } from 'vue';
|
|
2
2
|
import type { TabsPaneContext } from 'element-plus/es/tokens';
|
|
3
|
-
import type {
|
|
3
|
+
import type { TabPaneName } from './tabs';
|
|
4
4
|
export declare const tabNavProps: {
|
|
5
5
|
readonly panes: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => {
|
|
6
6
|
uid: number;
|
|
@@ -73,7 +73,7 @@ export declare const tabNavProps: {
|
|
|
73
73
|
readonly stretch: BooleanConstructor;
|
|
74
74
|
};
|
|
75
75
|
export declare const tabNavEmits: {
|
|
76
|
-
tabClick: (tab: TabsPaneContext, tabName:
|
|
76
|
+
tabClick: (tab: TabsPaneContext, tabName: TabPaneName, ev: Event) => boolean;
|
|
77
77
|
tabRemove: (tab: TabsPaneContext, ev: Event) => boolean;
|
|
78
78
|
};
|
|
79
79
|
export declare type TabNavProps = ExtractPropTypes<typeof tabNavProps>;
|
|
@@ -149,7 +149,7 @@ declare const TabNav: import("vue").DefineComponent<{
|
|
|
149
149
|
readonly type: import("element-plus/es/utils").EpPropFinalized<StringConstructor, "" | "card" | "border-card", unknown, "", boolean>;
|
|
150
150
|
readonly stretch: BooleanConstructor;
|
|
151
151
|
}, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
152
|
-
tabClick: (tab: TabsPaneContext, tabName:
|
|
152
|
+
tabClick: (tab: TabsPaneContext, tabName: TabPaneName, ev: Event) => boolean;
|
|
153
153
|
tabRemove: (tab: TabsPaneContext, ev: Event) => boolean;
|
|
154
154
|
}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
|
|
155
155
|
readonly panes: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => {
|
|
@@ -238,7 +238,7 @@ declare const TabNav: import("vue").DefineComponent<{
|
|
|
238
238
|
active: boolean;
|
|
239
239
|
index: string | undefined;
|
|
240
240
|
isClosable: boolean;
|
|
241
|
-
}, tabName:
|
|
241
|
+
}, tabName: TabPaneName, ev: Event) => any) | undefined;
|
|
242
242
|
onTabRemove?: ((tab: {
|
|
243
243
|
uid: number;
|
|
244
244
|
slots: Readonly<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tab-nav.mjs","sources":["../../../../../../packages/components/tabs/src/tab-nav.tsx"],"sourcesContent":["import {\n computed,\n defineComponent,\n getCurrentInstance,\n inject,\n nextTick,\n onMounted,\n onUpdated,\n ref,\n watch,\n} from 'vue'\nimport {\n useDocumentVisibility,\n useResizeObserver,\n useWindowFocus,\n} from '@vueuse/core'\nimport {\n buildProps,\n capitalize,\n definePropType,\n mutable,\n throwError,\n} from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { ArrowLeft, ArrowRight, Close } from '@element-plus/icons-vue'\nimport { tabsRootContextKey } from '@element-plus/tokens'\nimport { useNamespace } from '@element-plus/hooks'\nimport TabBar from './tab-bar.vue'\nimport type { CSSProperties, ExtractPropTypes } from 'vue'\nimport type { TabsPaneContext } from '@element-plus/tokens'\nimport type { TabPanelName } from './tabs'\n\ninterface Scrollable {\n next?: boolean\n prev?: number\n}\n\nexport const tabNavProps = buildProps({\n panes: {\n type: definePropType<TabsPaneContext[]>(Array),\n default: () => mutable([] as const),\n },\n currentName: {\n type: [String, Number],\n default: '',\n },\n editable: Boolean,\n type: {\n type: String,\n values: ['card', 'border-card', ''],\n default: '',\n },\n stretch: Boolean,\n} as const)\n\nexport const tabNavEmits = {\n tabClick: (tab: TabsPaneContext, tabName: TabPanelName, ev: Event) =>\n ev instanceof Event,\n tabRemove: (tab: TabsPaneContext, ev: Event) => ev instanceof Event,\n}\n\nexport type TabNavProps = ExtractPropTypes<typeof tabNavProps>\nexport type TabNavEmits = typeof tabNavEmits\n\nconst COMPONENT_NAME = 'ElTabNav'\nconst TabNav = defineComponent({\n name: COMPONENT_NAME,\n props: tabNavProps,\n emits: tabNavEmits,\n setup(props, { expose, emit }) {\n const vm = getCurrentInstance()!\n\n const rootTabs = inject(tabsRootContextKey)\n if (!rootTabs) throwError(COMPONENT_NAME, `<el-tabs><tab-nav /></el-tabs>`)\n\n const ns = useNamespace('tabs')\n const visibility = useDocumentVisibility()\n const focused = useWindowFocus()\n\n const navScroll$ = ref<HTMLDivElement>()\n const nav$ = ref<HTMLDivElement>()\n const el$ = ref<HTMLDivElement>()\n\n const scrollable = ref<false | Scrollable>(false)\n const navOffset = ref(0)\n const isFocus = ref(false)\n const focusable = ref(true)\n\n const sizeName = computed(() =>\n ['top', 'bottom'].includes(rootTabs.props.tabPosition)\n ? 'width'\n : 'height'\n )\n const navStyle = computed<CSSProperties>(() => {\n const dir = sizeName.value === 'width' ? 'X' : 'Y'\n return {\n transform: `translate${dir}(-${navOffset.value}px)`,\n }\n })\n\n const scrollPrev = () => {\n if (!navScroll$.value) return\n\n const containerSize =\n navScroll$.value[`offset${capitalize(sizeName.value)}`]\n const currentOffset = navOffset.value\n\n if (!currentOffset) return\n\n const newOffset =\n currentOffset > containerSize ? currentOffset - containerSize : 0\n\n navOffset.value = newOffset\n }\n\n const scrollNext = () => {\n if (!navScroll$.value || !nav$.value) return\n\n const navSize = nav$.value[`offset${capitalize(sizeName.value)}`]\n const containerSize =\n navScroll$.value[`offset${capitalize(sizeName.value)}`]\n const currentOffset = navOffset.value\n\n if (navSize - currentOffset <= containerSize) return\n\n const newOffset =\n navSize - currentOffset > containerSize * 2\n ? currentOffset + containerSize\n : navSize - containerSize\n\n navOffset.value = newOffset\n }\n\n const scrollToActiveTab = async () => {\n const nav = nav$.value\n if (!scrollable.value || !el$.value || !navScroll$.value || !nav) return\n\n await nextTick()\n\n const activeTab = el$.value.querySelector('.is-active')\n if (!activeTab) return\n\n const navScroll = navScroll$.value\n const isHorizontal = ['top', 'bottom'].includes(\n rootTabs.props.tabPosition\n )\n const activeTabBounding = activeTab.getBoundingClientRect()\n const navScrollBounding = navScroll.getBoundingClientRect()\n const maxOffset = isHorizontal\n ? nav.offsetWidth - navScrollBounding.width\n : nav.offsetHeight - navScrollBounding.height\n const currentOffset = navOffset.value\n let newOffset = currentOffset\n\n if (isHorizontal) {\n if (activeTabBounding.left < navScrollBounding.left) {\n newOffset =\n currentOffset - (navScrollBounding.left - activeTabBounding.left)\n }\n if (activeTabBounding.right > navScrollBounding.right) {\n newOffset =\n currentOffset + activeTabBounding.right - navScrollBounding.right\n }\n } else {\n if (activeTabBounding.top < navScrollBounding.top) {\n newOffset =\n currentOffset - (navScrollBounding.top - activeTabBounding.top)\n }\n if (activeTabBounding.bottom > navScrollBounding.bottom) {\n newOffset =\n currentOffset +\n (activeTabBounding.bottom - navScrollBounding.bottom)\n }\n }\n newOffset = Math.max(newOffset, 0)\n navOffset.value = Math.min(newOffset, maxOffset)\n }\n\n const update = () => {\n if (!nav$.value || !navScroll$.value) return\n\n const navSize = nav$.value[`offset${capitalize(sizeName.value)}`]\n const containerSize =\n navScroll$.value[`offset${capitalize(sizeName.value)}`]\n const currentOffset = navOffset.value\n\n if (containerSize < navSize) {\n const currentOffset = navOffset.value\n scrollable.value = scrollable.value || {}\n scrollable.value.prev = currentOffset\n scrollable.value.next = currentOffset + containerSize < navSize\n if (navSize - currentOffset < containerSize) {\n navOffset.value = navSize - containerSize\n }\n } else {\n scrollable.value = false\n if (currentOffset > 0) {\n navOffset.value = 0\n }\n }\n }\n\n const changeTab = (e: KeyboardEvent) => {\n const code = e.code\n\n const { up, down, left, right } = EVENT_CODE\n if (![up, down, left, right].includes(code)) return\n\n // 左右上下键更换tab\n const tabList = Array.from(\n (e.currentTarget as HTMLDivElement).querySelectorAll<HTMLDivElement>(\n '[role=tab]:not(.is-disabled)'\n )\n )\n const currentIndex = tabList.indexOf(e.target as HTMLDivElement)\n\n let nextIndex: number\n if (code === left || code === up) {\n // left\n if (currentIndex === 0) {\n // first\n nextIndex = tabList.length - 1\n } else {\n nextIndex = currentIndex - 1\n }\n } else {\n // right\n if (currentIndex < tabList.length - 1) {\n // not last\n nextIndex = currentIndex + 1\n } else {\n nextIndex = 0\n }\n }\n tabList[nextIndex].focus({ preventScroll: true }) // 改变焦点元素\n tabList[nextIndex].click() // 选中下一个tab\n setFocus()\n }\n\n const setFocus = () => {\n if (focusable.value) isFocus.value = true\n }\n const removeFocus = () => (isFocus.value = false)\n\n watch(visibility, (visibility) => {\n if (visibility === 'hidden') {\n focusable.value = false\n } else if (visibility === 'visible') {\n setTimeout(() => (focusable.value = true), 50)\n }\n })\n watch(focused, (focused) => {\n if (focused) {\n setTimeout(() => (focusable.value = true), 50)\n } else {\n focusable.value = false\n }\n })\n\n useResizeObserver(el$, update)\n\n onMounted(() => setTimeout(() => scrollToActiveTab(), 0))\n onUpdated(() => update())\n\n expose({\n scrollToActiveTab,\n removeFocus,\n })\n\n watch(\n () => props.panes,\n () => vm.update(),\n { flush: 'post' }\n )\n\n return () => {\n const scrollBtn = scrollable.value\n ? [\n <span\n class={[\n ns.e('nav-prev'),\n ns.is('disabled', !scrollable.value.prev),\n ]}\n onClick={scrollPrev}\n >\n <ElIcon>\n <ArrowLeft />\n </ElIcon>\n </span>,\n <span\n class={[\n ns.e('nav-next'),\n ns.is('disabled', !scrollable.value.next),\n ]}\n onClick={scrollNext}\n >\n <ElIcon>\n <ArrowRight />\n </ElIcon>\n </span>,\n ]\n : null\n\n const tabs = props.panes.map((pane, index) => {\n const uid = pane.uid\n const disabled = pane.props.disabled\n const tabName = pane.props.name ?? pane.index ?? `${index}`\n const closable = !disabled && (pane.isClosable || props.editable)\n pane.index = `${index}`\n\n const btnClose = closable ? (\n <ElIcon\n class=\"is-icon-close\"\n // `onClick` not exist when generate dts\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n onClick={(ev: MouseEvent) => emit('tabRemove', pane, ev)}\n >\n <Close />\n </ElIcon>\n ) : null\n\n const tabLabelContent = pane.slots.label?.() || pane.props.label\n const tabindex = !disabled && pane.active ? 0 : -1\n\n return (\n <div\n ref={`tab-${uid}`}\n class={[\n ns.e('item'),\n ns.is(rootTabs.props.tabPosition),\n ns.is('active', pane.active),\n ns.is('disabled', disabled),\n ns.is('closable', closable),\n ns.is('focus', isFocus.value),\n ]}\n id={`tab-${tabName}`}\n key={`tab-${uid}`}\n aria-controls={`pane-${tabName}`}\n role=\"tab\"\n aria-selected={pane.active}\n tabindex={tabindex}\n onFocus={() => setFocus()}\n onBlur={() => removeFocus()}\n onClick={(ev: MouseEvent) => {\n removeFocus()\n emit('tabClick', pane, tabName, ev)\n }}\n onKeydown={(ev: KeyboardEvent) => {\n if (\n closable &&\n (ev.code === EVENT_CODE.delete ||\n ev.code === EVENT_CODE.backspace)\n ) {\n emit('tabRemove', pane, ev)\n }\n }}\n >\n {...[tabLabelContent, btnClose]}\n </div>\n )\n })\n\n return (\n <div\n ref={el$}\n class={[\n ns.e('nav-wrap'),\n ns.is('scrollable', !!scrollable.value),\n ns.is(rootTabs.props.tabPosition),\n ]}\n >\n {scrollBtn}\n <div class={ns.e('nav-scroll')} ref={navScroll$}>\n <div\n class={[\n ns.e('nav'),\n ns.is(rootTabs.props.tabPosition),\n ns.is(\n 'stretch',\n props.stretch &&\n ['top', 'bottom'].includes(rootTabs.props.tabPosition)\n ),\n ]}\n ref={nav$}\n style={navStyle.value}\n role=\"tablist\"\n onKeydown={changeTab}\n >\n {...[\n !props.type ? <TabBar tabs={[...props.panes]} /> : null,\n tabs,\n ]}\n </div>\n </div>\n </div>\n )\n }\n },\n})\n\nexport type TabNavInstance = InstanceType<typeof TabNav>\nexport default TabNav\n"],"names":["tabNavProps","buildProps","panes","type","definePropType","Array","default","mutable","currentName","String","Number","editable","Boolean","values","stretch","tabNavEmits","tabClick","tab","tabName","ev","Event","tabRemove","COMPONENT_NAME","TabNav","defineComponent","name","props","emits","expose","emit","vm","getCurrentInstance","ns","useNamespace","visibility","useDocumentVisibility","focused","useWindowFocus","navScroll$","ref","nav$","el$","scrollable","navOffset","isFocus","focusable","sizeName","computed","includes","rootTabs","tabPosition","navStyle","dir","value","transform","scrollPrev","containerSize","capitalize","currentOffset","newOffset","scrollNext","scrollToActiveTab","activeTab","navScroll","navScrollBounding","maxOffset","isHorizontal","offsetWidth","activeTabBounding","right","top","bottom","max","update","navSize","next","changeTab","down","EVENT_CODE","currentTarget","currentIndex","nextIndex","tabList","preventScroll","click","setFocus","watch","_createVNode","useResizeObserver","setTimeout","onUpdated","removeFocus","flush","is","prev","pane","disabled","btnClose","active","uid","tabLabelContent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tab-nav.mjs","sources":["../../../../../../packages/components/tabs/src/tab-nav.tsx"],"sourcesContent":["import {\n computed,\n defineComponent,\n getCurrentInstance,\n inject,\n nextTick,\n onMounted,\n onUpdated,\n ref,\n watch,\n} from 'vue'\nimport {\n useDocumentVisibility,\n useResizeObserver,\n useWindowFocus,\n} from '@vueuse/core'\nimport {\n buildProps,\n capitalize,\n definePropType,\n mutable,\n throwError,\n} from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { ArrowLeft, ArrowRight, Close } from '@element-plus/icons-vue'\nimport { tabsRootContextKey } from '@element-plus/tokens'\nimport { useNamespace } from '@element-plus/hooks'\nimport TabBar from './tab-bar.vue'\nimport type { CSSProperties, ExtractPropTypes } from 'vue'\nimport type { TabsPaneContext } from '@element-plus/tokens'\nimport type { TabPaneName } from './tabs'\n\ninterface Scrollable {\n next?: boolean\n prev?: number\n}\n\nexport const tabNavProps = buildProps({\n panes: {\n type: definePropType<TabsPaneContext[]>(Array),\n default: () => mutable([] as const),\n },\n currentName: {\n type: [String, Number],\n default: '',\n },\n editable: Boolean,\n type: {\n type: String,\n values: ['card', 'border-card', ''],\n default: '',\n },\n stretch: Boolean,\n} as const)\n\nexport const tabNavEmits = {\n tabClick: (tab: TabsPaneContext, tabName: TabPaneName, ev: Event) =>\n ev instanceof Event,\n tabRemove: (tab: TabsPaneContext, ev: Event) => ev instanceof Event,\n}\n\nexport type TabNavProps = ExtractPropTypes<typeof tabNavProps>\nexport type TabNavEmits = typeof tabNavEmits\n\nconst COMPONENT_NAME = 'ElTabNav'\nconst TabNav = defineComponent({\n name: COMPONENT_NAME,\n props: tabNavProps,\n emits: tabNavEmits,\n setup(props, { expose, emit }) {\n const vm = getCurrentInstance()!\n\n const rootTabs = inject(tabsRootContextKey)\n if (!rootTabs) throwError(COMPONENT_NAME, `<el-tabs><tab-nav /></el-tabs>`)\n\n const ns = useNamespace('tabs')\n const visibility = useDocumentVisibility()\n const focused = useWindowFocus()\n\n const navScroll$ = ref<HTMLDivElement>()\n const nav$ = ref<HTMLDivElement>()\n const el$ = ref<HTMLDivElement>()\n\n const scrollable = ref<false | Scrollable>(false)\n const navOffset = ref(0)\n const isFocus = ref(false)\n const focusable = ref(true)\n\n const sizeName = computed(() =>\n ['top', 'bottom'].includes(rootTabs.props.tabPosition)\n ? 'width'\n : 'height'\n )\n const navStyle = computed<CSSProperties>(() => {\n const dir = sizeName.value === 'width' ? 'X' : 'Y'\n return {\n transform: `translate${dir}(-${navOffset.value}px)`,\n }\n })\n\n const scrollPrev = () => {\n if (!navScroll$.value) return\n\n const containerSize =\n navScroll$.value[`offset${capitalize(sizeName.value)}`]\n const currentOffset = navOffset.value\n\n if (!currentOffset) return\n\n const newOffset =\n currentOffset > containerSize ? currentOffset - containerSize : 0\n\n navOffset.value = newOffset\n }\n\n const scrollNext = () => {\n if (!navScroll$.value || !nav$.value) return\n\n const navSize = nav$.value[`offset${capitalize(sizeName.value)}`]\n const containerSize =\n navScroll$.value[`offset${capitalize(sizeName.value)}`]\n const currentOffset = navOffset.value\n\n if (navSize - currentOffset <= containerSize) return\n\n const newOffset =\n navSize - currentOffset > containerSize * 2\n ? currentOffset + containerSize\n : navSize - containerSize\n\n navOffset.value = newOffset\n }\n\n const scrollToActiveTab = async () => {\n const nav = nav$.value\n if (!scrollable.value || !el$.value || !navScroll$.value || !nav) return\n\n await nextTick()\n\n const activeTab = el$.value.querySelector('.is-active')\n if (!activeTab) return\n\n const navScroll = navScroll$.value\n const isHorizontal = ['top', 'bottom'].includes(\n rootTabs.props.tabPosition\n )\n const activeTabBounding = activeTab.getBoundingClientRect()\n const navScrollBounding = navScroll.getBoundingClientRect()\n const maxOffset = isHorizontal\n ? nav.offsetWidth - navScrollBounding.width\n : nav.offsetHeight - navScrollBounding.height\n const currentOffset = navOffset.value\n let newOffset = currentOffset\n\n if (isHorizontal) {\n if (activeTabBounding.left < navScrollBounding.left) {\n newOffset =\n currentOffset - (navScrollBounding.left - activeTabBounding.left)\n }\n if (activeTabBounding.right > navScrollBounding.right) {\n newOffset =\n currentOffset + activeTabBounding.right - navScrollBounding.right\n }\n } else {\n if (activeTabBounding.top < navScrollBounding.top) {\n newOffset =\n currentOffset - (navScrollBounding.top - activeTabBounding.top)\n }\n if (activeTabBounding.bottom > navScrollBounding.bottom) {\n newOffset =\n currentOffset +\n (activeTabBounding.bottom - navScrollBounding.bottom)\n }\n }\n newOffset = Math.max(newOffset, 0)\n navOffset.value = Math.min(newOffset, maxOffset)\n }\n\n const update = () => {\n if (!nav$.value || !navScroll$.value) return\n\n const navSize = nav$.value[`offset${capitalize(sizeName.value)}`]\n const containerSize =\n navScroll$.value[`offset${capitalize(sizeName.value)}`]\n const currentOffset = navOffset.value\n\n if (containerSize < navSize) {\n const currentOffset = navOffset.value\n scrollable.value = scrollable.value || {}\n scrollable.value.prev = currentOffset\n scrollable.value.next = currentOffset + containerSize < navSize\n if (navSize - currentOffset < containerSize) {\n navOffset.value = navSize - containerSize\n }\n } else {\n scrollable.value = false\n if (currentOffset > 0) {\n navOffset.value = 0\n }\n }\n }\n\n const changeTab = (e: KeyboardEvent) => {\n const code = e.code\n\n const { up, down, left, right } = EVENT_CODE\n if (![up, down, left, right].includes(code)) return\n\n // 左右上下键更换tab\n const tabList = Array.from(\n (e.currentTarget as HTMLDivElement).querySelectorAll<HTMLDivElement>(\n '[role=tab]:not(.is-disabled)'\n )\n )\n const currentIndex = tabList.indexOf(e.target as HTMLDivElement)\n\n let nextIndex: number\n if (code === left || code === up) {\n // left\n if (currentIndex === 0) {\n // first\n nextIndex = tabList.length - 1\n } else {\n nextIndex = currentIndex - 1\n }\n } else {\n // right\n if (currentIndex < tabList.length - 1) {\n // not last\n nextIndex = currentIndex + 1\n } else {\n nextIndex = 0\n }\n }\n tabList[nextIndex].focus({ preventScroll: true }) // 改变焦点元素\n tabList[nextIndex].click() // 选中下一个tab\n setFocus()\n }\n\n const setFocus = () => {\n if (focusable.value) isFocus.value = true\n }\n const removeFocus = () => (isFocus.value = false)\n\n watch(visibility, (visibility) => {\n if (visibility === 'hidden') {\n focusable.value = false\n } else if (visibility === 'visible') {\n setTimeout(() => (focusable.value = true), 50)\n }\n })\n watch(focused, (focused) => {\n if (focused) {\n setTimeout(() => (focusable.value = true), 50)\n } else {\n focusable.value = false\n }\n })\n\n useResizeObserver(el$, update)\n\n onMounted(() => setTimeout(() => scrollToActiveTab(), 0))\n onUpdated(() => update())\n\n expose({\n scrollToActiveTab,\n removeFocus,\n })\n\n watch(\n () => props.panes,\n () => vm.update(),\n { flush: 'post' }\n )\n\n return () => {\n const scrollBtn = scrollable.value\n ? [\n <span\n class={[\n ns.e('nav-prev'),\n ns.is('disabled', !scrollable.value.prev),\n ]}\n onClick={scrollPrev}\n >\n <ElIcon>\n <ArrowLeft />\n </ElIcon>\n </span>,\n <span\n class={[\n ns.e('nav-next'),\n ns.is('disabled', !scrollable.value.next),\n ]}\n onClick={scrollNext}\n >\n <ElIcon>\n <ArrowRight />\n </ElIcon>\n </span>,\n ]\n : null\n\n const tabs = props.panes.map((pane, index) => {\n const uid = pane.uid\n const disabled = pane.props.disabled\n const tabName = pane.props.name ?? pane.index ?? `${index}`\n const closable = !disabled && (pane.isClosable || props.editable)\n pane.index = `${index}`\n\n const btnClose = closable ? (\n <ElIcon\n class=\"is-icon-close\"\n // `onClick` not exist when generate dts\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n onClick={(ev: MouseEvent) => emit('tabRemove', pane, ev)}\n >\n <Close />\n </ElIcon>\n ) : null\n\n const tabLabelContent = pane.slots.label?.() || pane.props.label\n const tabindex = !disabled && pane.active ? 0 : -1\n\n return (\n <div\n ref={`tab-${uid}`}\n class={[\n ns.e('item'),\n ns.is(rootTabs.props.tabPosition),\n ns.is('active', pane.active),\n ns.is('disabled', disabled),\n ns.is('closable', closable),\n ns.is('focus', isFocus.value),\n ]}\n id={`tab-${tabName}`}\n key={`tab-${uid}`}\n aria-controls={`pane-${tabName}`}\n role=\"tab\"\n aria-selected={pane.active}\n tabindex={tabindex}\n onFocus={() => setFocus()}\n onBlur={() => removeFocus()}\n onClick={(ev: MouseEvent) => {\n removeFocus()\n emit('tabClick', pane, tabName, ev)\n }}\n onKeydown={(ev: KeyboardEvent) => {\n if (\n closable &&\n (ev.code === EVENT_CODE.delete ||\n ev.code === EVENT_CODE.backspace)\n ) {\n emit('tabRemove', pane, ev)\n }\n }}\n >\n {...[tabLabelContent, btnClose]}\n </div>\n )\n })\n\n return (\n <div\n ref={el$}\n class={[\n ns.e('nav-wrap'),\n ns.is('scrollable', !!scrollable.value),\n ns.is(rootTabs.props.tabPosition),\n ]}\n >\n {scrollBtn}\n <div class={ns.e('nav-scroll')} ref={navScroll$}>\n <div\n class={[\n ns.e('nav'),\n ns.is(rootTabs.props.tabPosition),\n ns.is(\n 'stretch',\n props.stretch &&\n ['top', 'bottom'].includes(rootTabs.props.tabPosition)\n ),\n ]}\n ref={nav$}\n style={navStyle.value}\n role=\"tablist\"\n onKeydown={changeTab}\n >\n {...[\n !props.type ? <TabBar tabs={[...props.panes]} /> : null,\n tabs,\n ]}\n </div>\n </div>\n </div>\n )\n }\n },\n})\n\nexport type TabNavInstance = InstanceType<typeof TabNav>\nexport default TabNav\n"],"names":["tabNavProps","buildProps","panes","type","definePropType","Array","default","mutable","currentName","String","Number","editable","Boolean","values","stretch","tabNavEmits","tabClick","tab","tabName","ev","Event","tabRemove","COMPONENT_NAME","TabNav","defineComponent","name","props","emits","expose","emit","vm","getCurrentInstance","ns","useNamespace","visibility","useDocumentVisibility","focused","useWindowFocus","navScroll$","ref","nav$","el$","scrollable","navOffset","isFocus","focusable","sizeName","computed","includes","rootTabs","tabPosition","navStyle","dir","value","transform","scrollPrev","containerSize","capitalize","currentOffset","newOffset","scrollNext","scrollToActiveTab","activeTab","navScroll","navScrollBounding","maxOffset","isHorizontal","offsetWidth","activeTabBounding","right","top","bottom","max","update","navSize","next","changeTab","down","EVENT_CODE","currentTarget","currentIndex","nextIndex","tabList","preventScroll","click","setFocus","watch","_createVNode","useResizeObserver","setTimeout","onUpdated","removeFocus","flush","is","prev","pane","disabled","btnClose","active","uid","tabLabelContent"],"mappings":";;;;;;;;;;;;;;;;;AAsCaA,MAAAA,WAAW,GAAGC,UAAU,CAAC;AACpCC,EAAAA,KAAK,EAAE;AACLC,IAAAA,IAAI,EAAEC,cAAc,CAAoBC,KAApB,CADf;AAELC,IAAAA,OAAO,EAAE,MAAMC,OAAO,CAAC,EAAD,CAAA;GAHY;AAKpCC,EAAAA,WAAW,EAAE;AACXL,IAAAA,IAAI,EAAE,CAACM,MAAD,EAASC,MAAT,CADK;AAEXJ,IAAAA,OAAO,EAAE,EAAA;GAPyB;AASpCK,EAAAA,QAAQ,EAAEC,OAT0B;AAUpCT,EAAAA,IAAI,EAAE;AACJA,IAAAA,IAAI,EAAEM,MADF;AAEJI,IAAAA,MAAM,EAAE,CAAC,MAAD,EAAS,aAAT,EAAwB,EAAxB,CAFJ;AAGJP,IAAAA,OAAO,EAAE,EAAA;GAbyB;AAepCQ,EAAAA,OAAO,EAAEF,OAAAA;AAf2B,CAAD,EAA9B;AAkBA,MAAMG,WAAW,GAAG;EACzBC,QAAQ,EAAE,CAACC,GAAD,EAAuBC,OAAvB,EAA6CC,EAA7C,KACRA,EAAE,YAAYC,KAFS;AAGzBC,EAAAA,SAAS,EAAE,CAACJ,GAAD,EAAuBE,EAAvB,KAAqCA,EAAE,YAAYC,KAAAA;AAHrC,EAApB;AASP,MAAME,cAAc,GAAG,UAAvB,CAAA;AACMC,MAAAA,MAAM,GAAGC,eAAe,CAAC;AAC7BC,EAAAA,IAAI,EAAEH,cADuB;AAE7BI,EAAAA,KAAK,EAAE1B,WAFsB;AAG7B2B,EAAAA,KAAK,EAAEZ,WAHsB;;IAIxB;IAAUa,IAAF;AAAUC,GAAAA,EAAAA;AAAV,IAAkB,MAAA,EAAA,GAAA,kBAAA,EAAA,CAAA;IAC7B,MAAMC,QAAKC,GAAAA,MAAAA,CAAAA,kBAAX,CAAA,CAAA;AAEA,IAAA,IAAA,CAAA,QAAc;MACV,WAAJ,cAAyB,EAAA,CAAA;AAEzB,IAAA,MAAMC,EAAE,GAAGC,YAAY,CAAC,MAAD,CAAvB,CAAA;IACA,MAAMC,UAAU,GAAGC,qBAAqB,EAAxC,CAAA;IACA,MAAMC,OAAO,GAAGC,cAAc,EAA9B,CAAA;IAEA,MAAMC,UAAU,GAAGC,GAAG,EAAtB,CAAA;IACA,MAAMC,IAAI,GAAGD,GAAG,EAAhB,CAAA;IACA,MAAME,GAAG,GAAGF,GAAG,EAAf,CAAA;AAEA,IAAA,MAAMG,UAAU,GAAGH,GAAG,CAAqB,KAArB,CAAtB,CAAA;AACA,IAAA,MAAMI,SAAS,GAAGJ,GAAG,CAAC,CAAD,CAArB,CAAA;AACA,IAAA,MAAMK,OAAO,GAAGL,GAAG,CAAC,KAAD,CAAnB,CAAA;AACA,IAAA,MAAMM,SAAS,GAAGN,GAAG,CAAC,IAAD,CAArB,CAAA;IAEA,MAAMO,QAAQ,GAAGC,QAAQ,CAAC,MACxB,CAAC,KAAD,EAAQ,QAAR,CAAA,CAAkBC,QAAlB,CAA2BC,QAAQ,CAACvB,KAAT,CAAewB,WAA1C,CACI,GAAA,OADJ,GAEI,QAHmB,CAAzB,CAAA;AAKA,IAAA,MAAMC,QAAQ,GAAGJ,QAAQ,CAAgB,MAAM;MAC7C,MAAMK,GAAG,GAAGN,QAAQ,CAACO,KAAT,KAAmB,OAAnB,GAA6B,GAA7B,GAAmC,GAA/C,CAAA;MACA,OAAO;AACLC,QAAAA,SAAS,EAAG,CAAWF,SAAAA,EAAAA,GAAI,CAAIT,EAAAA,EAAAA,SAAS,CAACU,KAAM,CAAA,GAAA,CAAA;OADjD,CAAA;AAGD,KALwB,CAAzB,CAAA;;MAOME,IAAAA,CAAAA,gBAAmB;AACvB,QAAA,OAAKjB;AAEL,MAAA,MAAMkB,aAAa,GACjBlB,UAAU,CAACe,KAAX,CAAkB,CAAA,MAAA,EAAQI,UAAU,CAACX,QAAQ,CAACO,KAAV,CAAiB,EAArD,CADF,CAAA;AAEA,MAAA,MAAMK,aAAa,GAAGf,SAAS,CAACU,KAAhC,CAAA;MAEA,IAAI,CAACK,aAAL;QAEMC,OAAAA;MAGNhB,MAAS,SAAT,GAAkBgB,aAAlB,GAAA,aAAA,GAAA,aAAA,GAAA,aAAA,GAAA,CAAA,CAAA;MAZF,SAAA,CAAA,KAAA,GAAA,SAAA,CAAA;;IAeA,MAAMC,UAAU,GAAG,MAAM;MACvB,IAAI,CAACtB,UAAU,CAACe,KAAZ,IAAqB,CAACb,IAAI,CAACa,KAA/B;AAEA,QAAA,OAAa;AACb,MAAA,MAAMG,OAAa,GAAA,IAAA,CAAA,KACP,CAAA,CAAA,kBAAQ,CAAA,QAAkB,CAAA,KAAS,CAAA,CAAA,CAAA,CAAA,CAAA;AAC/C,MAAA,MAAME,aAAa,GAAGf,UAAUU,CAAhC,KAAA,CAAA,CAAA,MAAA,EAAA,UAAA,CAAA,QAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEA,MAAA,MAAW,aAAP,GAAA,SAA2BG;AAE/B,MAAA,IAAA,uBACYE,IAAAA,aAAgBF;QAInB,OAAA;MAfX,MAAA,SAAA,GAAA,OAAA,GAAA,aAAA,GAAA,aAAA,GAAA,CAAA,GAAA,aAAA,GAAA,aAAA,GAAA,OAAA,GAAA,aAAA,CAAA;;KAkBMK,CAAAA;AACJ,IAAA,MAAA,iBAAA,GAAA,YAAA;AACA,MAAA,MAAe,GAAA,GAAA,IAACR,CAAZ,KAAA,CAAA;AAEJ,MAAA,IAAA,CAAA,UAAA,CAAA,KAAA,IAAA,CAAA,GAAA,CAAA,KAAA,IAAA,CAAA,UAAA,CAAA,KAAA,IAAA,CAAA,GAAA;QAEMS,OAAAA;MACN,cAAA,EAAgB,CAAA;AAEhB,MAAA,MAAMC,SAAS,GAAGzB,GAAU,CAAA,KAAA,CAAA,aAA5B,CAAA,YAAA,CAAA,CAAA;AACA,MAAA,IAAA,CAAA,SAAkB;AAGlB,QAAA,OAAuB;AACvB,MAAA,MAAM0B,SAAiB,GAAA,UAAY,CAAA,KAAA,CAAA;AACnC,MAAA,MAAMC,YAAYC,GAAAA,CAAAA,KAAAA,EAAAA,QACVC,WAAJ,QAAkBH,CAAAA,KAAAA,CAAAA,WADQ;AAG9B,MAAA,MAAMN,iBAAyB,GAAA,SAA/B,CAAA,qBAAA,EAAA,CAAA;MACA,MAAIC,iBAAJ,GAAA,SAAA,CAAA,qBAAA,EAAA,CAAA;;AAEA,MAAA,mBAAkB,GAAA,SAAA,CAAA,KAAA,CAAA;AAChB,MAAA,IAAA;UACEA,YACED,EAAa;AAChB,QAAA,IAAA,iBAAA,CAAA,IAAA,GAAA,iBAAA,CAAA,IAAA,EAAA;;AACD,SAAA;YACW,uBACM,GAAGU,iBAAiB,CAACC,KAAlC,EAAA;AACH,UAAA,SAAA,GAAA,aAAA,GAAA,iBAAA,CAAA,KAAA,GAAA,iBAAA,CAAA,KAAA,CAAA;AACF,SAAM;AACL,OAAA;YACW,iBACM,CAAA,GAAA,GAAA,iBAAqB,CAAA,GAACC;AACtC,UAAA,SAAA,GAAA,aAAA,IAAA,iBAAA,CAAA,GAAA,GAAA,iBAAA,CAAA,GAAA,CAAA,CAAA;;AACD,QAAA,IAAIF,iBAAiB,CAACG,MAAlB,GAA2BP,iBAAiB,CAACO,MAAjD,EAAyD;UACvDZ,SAAS,GACPD,aAAa,IACZU,iBAAiB,CAACG,MAAlB,GAA2BP,iBAAiB,CAACO,MADjC,CADf,CAAA;AAGD,SAAA;AACF,OAAA;;MACDZ,SAAS,CAAA,QAAQa,IAAL,CAAA,GAAA,CAAA,SAAZ,EAAA,SAAA,CAAA,CAAA;MACA7B;IACD,MA3CD,MAAA,GAAA,MAAA;;QA6CM8B,OAAAA;MACJ,aAAUpB,OAAUf,CAAAA,KAAAA,CAAAA,CAAAA,MAAWe,EAA/B,UAAsC,CAAA,QAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEtC,MAAA,MAAMqB,aAAc,aAAQ,CAAA,KAAkB,CAAA,CAAA,MAAA,EAAS,UAAT,CAAA,QAA9C,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACA,MAAA,MAAMlB,aAAa,GACjBlB,SAAU,CAAA,MAAV;AACF,MAAA,IAAA,aAAmB,GAAA,OAAY,EAAA;;QAE3BkB,UAAAA,CAAAA,KAAgBkB,GAAAA,UAAS,CAAA,KAAA,IAAA,EAAA,CAAA;AAC3B,QAAA,UAAmB,CAAA,KAAA,CAAA,IAAA,GAAY,cAA/B,CAAA;AACAhC,QAAAA,UAAU,CAACW,KAAX,CAAA,wBAAA,aAAA,GAAA,OAAA,CAAA;AACAX,QAAAA,IAAAA,OAAWW,GAAAA,cAAX,GAAA,aAAA,EAAA;UACU,SAACA,MAAMsB,GAAAA,OAAoB,GAAA,aAAb,CAAA;;AACxB,OAAA,MAAW;AACThC,QAAAA,UAAAA,CAAS,KAACU,GAAQqB,KAAAA,CAAAA;AACnB,QAAA,IAAA,aAAA,GAAA,CAAA,EAAA;AACF,UAAM,SAAA,CAAA,KAAA,GAAA,CAAA,CAAA;SACK;;;UAER/B,SAAS,GAAT,CAAA,CAAA,KAAA;AACD,MAAA,MAAA,IAAA,GAAA,CAAA,CAAA,IAAA,CAAA;AACF,MAAA,MAAA;QArBH,EAAA;;QAwBMiC,IAAAA;AACJ,QAAA,KAAU;OAEJ,GAAA,UAAA,CAAA;UAAA,CAAA,CAAA,EAAA,EAAA,IAAA,EAAA,IAAA,EAAA,KAAA,CAAA,CAAA,QAAA,CAAA,IAAA,CAAA;QAAMC,OAAN;YAAA,OAAA,GAAA,KAAA,CAAA,IAAA,CAAA,CAAA,CAAA,aAAA,CAAA,gBAAA,CAAA,8BAAA,CAAA,CAAA,CAAA;AAAkBR,MAAAA,MAAAA,YAAAA,GAAAA,OAAAA,CAAAA,OAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAAA,CAAAA;AAAlB,MAAA,IAA4BS,SAAlC,CAAA;AACA,MAAA,IAAI,IAAC,KAAKD,IAAL,IAAA,IAAA;;AAGL,UAAA,SAAa,GAAGxE,cACX0E,GAAAA,CAAAA,CAAAA;SAICC,MAAAA;AAEN,UAAIC,SAAJ,GAAA,YAAA,GAAA,CAAA,CAAA;;AACA,OAAA;AACE,QAAA,IAAA,YAAA,GAAA,OAAA,CAAA,MAAA,GAAA,CAAA,EAAA;UACID,SAAAA,GAAAA,YAAoB,GAAA,CAAA,CAAA;AACtB,SAAA,MAAA;AACAC,UAAAA,SAAS,GAAGC,CAAAA,CAAAA;AACb,SAHD;;AAKC,MAAA,OAAA,CAAA,SAAA,CAAA,CAAA,KAAA,CAAA;AACF,QAAM,aAAA,EAAA,IAAA;AACL,OAAA,CAAA,CAAA;AACA,MAAA,kBAAgB,CAAGA,KAAAA,EAAAA,CAAAA;AACjB,MAAA,QAAA,EAAA,CAAA;;AAED,IAAA,MAAM,QAAA,GAAA,MAAA;AACLD,MAAAA,IAAAA,SAAS,MAAT;AACD,QAAA,OAAA,CAAA,KAAA,GAAA,IAAA,CAAA;AACF,KAAA,CAAA;;AACDC,IAAAA,KAAAA,CAAAA,UAAQD,EAAAA,CAAD,WAAkB,KAAA;AAAEE,MAAAA,IAAAA,WAAa,KAAE,QAAA,EAAA;AAAjB,iBAAyB,CAAA,KAAA,GAAA,KAAA,CAAA;;AAClDD,QAAAA,UAAO,CAAA,MAAYE,SAAQ,CAAA,KAAA,GAAA,IAAA,EAAA,EAAA,CAAA,CAAA;;MAC3BC,CAAQ;IACT,KAnCD,CAAA,OAAA,EAAA,CAAA,QAAA,KAAA;;QAqCMA,UAAQ,OAAS,SAAA,CAAA,KAAA,GAAA,IAAA,EAAA,EAAA,CAAA,CAAA;OACjBxC,MAAAA;QADN,SAAA,CAAA,KAAA,GAAA,KAAA,CAAA;;AAGA,KAAA,CAAA,CAAA;;AAEAyC,IAAAA,SAAMpD,CAAAA,MAAD,UAAcA,CAAAA,MAAe,iBAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA;aAC5BA,CAAAA,MAAU,MAAK,EAAA,CAAA,CAAA;UACR,CAAA;AACV,MAAA,iBAAoB;iBACT;AACX,KAAA,CAAA,CAAA;AACF,IAAA,KAND,CAAA,MAAA,KAAA,CAAA,KAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,EAAA;AAOAoD,MAAAA,KAAMlD,EAAAA,MAAUA;AACd,KAAA,CAAA,CAAA;WACY,MAAA;AACX,MAAA,MAAM,SAAA,GAAA,UAAA,CAAA,KAAA,GAAA,CAAAmD,WAAA,CAAA,MAAA,EAAA;QACL1C,OAAS,EAAA,CAACQ,EAAV,CAAA,CAAA,CAAA,UAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,UAAA,EAAA,CAAA,UAAA,CAAA,KAAA,CAAA,IAAA,CAAA,CAAA;AACD,QAAA,SAAA,EAAA,UAAA;AACF,OAND,EAAA,CAAAkC,WAAA,CAAA,MAAA,EAAA,IAAA,EAAA;AAQAC,QAAAA,OAAAA,EAAAA,MAAkB/C,CAAAA,WAAlB,CAAA,SAAA,EAAA,IAAA,EAAA,IAAA,CAAA,CAAA;OAES,CAAA,CAAA,CAAA,EAAA8C,WAAOE,CAAAA,MAAW,EAAA;AAC3BC,QAAAA,OAAU,EAAA,CAAA,EAAMjB,CAAM,CAAA,CAAA,UAAtB,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,UAAA,EAAA,CAAA,UAAA,CAAA,KAAA,CAAA,IAAA,CAAA,CAAA;AAEA7C,QAAAA,SAAO,EAAA,UAAA;OAAA,EAAA,CAAA2D,WAAA,CAAA,MAAA,EAAA,IAAA,EAAA;AAELI,QAAAA,OAAAA,EAAAA,MAAAA,CAAAA,WAAAA,CAAAA,UAAAA,EAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AAFK,OAAP,CAAA,CAAA,CAAA,CAAA,GAAA,IAAA,CAAA;MAKK,MACGjE,IAAAA,GAAAA,KAAMxB,CAAAA,KACZ,CAAA,GAAA,CAAM4B,CAAE,IAAF,EAAA,KACN,KAAA;AAAE8D,QAAAA,IAAO,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAAT,QAHF,MAAA,GAAA,GAAA,IAAA,CAAA,GAAA,CAAA;AAMA,QAAA,MAAa,QAAA,GAAA,IAAA,CAAA,KAAA,CAAA,QAAA,CAAA;AACX,QAAA,MAAe,OAAA,GAAGlD,CAAU,EAAA,GAAA,CAAA,EAAA,OAAV,CACd,KAAA,CAAA,IAAA,KAAA,IAAA,GAAA,EAAA,GAAA,IAAA,CAAA,KAAA,KAAA,IAAA,GAAA,EAAA,GAAA,CAAA,EAAA,KAAA,CAAA,CAAA,CAAA;QAAA,MAEW,QACL,GAAA,CAAA,QADK,KAEFmD,IAAG,CAAA,UAAY,IAACnD,KAAAA,CAAAA,QAAiBoD,CAApC,CAAA;QAJN,IAMavC,CAAAA,KAAAA,GAAAA,CAAAA,EAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AANb,QAAA,MAAA,QAAA,GAAA,QAAA,GAAAgC,WAAA,CAAA,MAAA,EAAA;AAAA,UAAA,OAAA,EAAA,eAAA;AAAA,UAAA,SAAA,EAAA,CAAA,EAAA,KAAA,IAAA,CAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA;SAaW,EAAA;UAIE3B,OAAAA,EAAAA,MAAAA,CAAAA,WAAAA,CAAAA,KAAAA,EAAAA,IAAAA,EAAAA,IAAAA,CAAAA,CAAAA;AAjBb,SAAA,CAAA,GAAA,IAAA,CAAA;AAAA,QAAA,MAAA,eAAA,GAAA,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAA,CAAA,KAAA,EAAA,KAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAA,KAAA,IAAA,CAAA,KAAA,CAAA,KAAA,CAAA;AAAA,QAAA,MAwBA,QAzBJ,GAAA,CAAA,QAAA,IAAA,IAAA,CAAA,MAAA,GAAA,CAAA,GAAA,CAAA,CAAA,CAAA;AA2BA,QAAA,OAAU2B,WAAG,CAAA,KAAA,EAAgB;AAC3B,UAAA,KAAS,EAAA,CAAA,IAAO,EAAA,GAAhB,CAAA,CAAA;AACA,UAAA,YAAc,CAAGQ,CAAAA,CAAAA,MAAKrE,CAAAA,EAAAA,EAAMsE,CAA5B,EAAA,CAAA,QAAA,CAAA,KAAA,CAAA,WAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,QAAA,EAAA,IAAA,CAAA,MAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,UAAA,EAAA,QAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,UAAA,EAAA,QAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,KAAA,CAAA,CAAA;AACA,UAAA,IAAM9E,EAAO,CAAA,IAAA,EAAA;AACb,UAAA,KAAc,EAAA,CAAA,IAAA,EAAA,GAAI8E,CAAAA,CAAAA;AAClBD,UAAAA,uBAAA,EAAA,OAAA,CAAA,CAAA;UAEME,MAAAA,EAAAA;AAAmB,UAAA,eAAA,EAAA,IAAA,CAAA,MAAA;UAAA,UAMX9E,EAAAA,QAAuB;AANZ,UAAA,SAAA,EAAA,MAAA,QAAA,EAAA;AAAA,UAAA,QAAA,EAAA,MAAA,WAAA,EAAA;AAAA,UAAA,SAAzB,EAAA,CAAA,EAAA,KAAA;AAYA,YAAA,WAAqB,EAAA,CAAA;AACrB,YAAA,IAAc,CAAA,UAAI6E,EAAAA,IAAAA,EAAYD,OAAI,EAACG,EAAAA,CAAAA,CAAAA;AAEnC,WAAA;UAAA,WAEU,EAAA,CAAMC,OAFhB;YAGW,IAAA,QACL,KAAA,EAAA,CADK,IAEH,KAAIlD,UAASvB,CAAAA,MAAMwB,IAAAA,EAAAA,CAAAA,IACrBlB,KAAA,UAAA,CAAgB+D,SAAhB,CAAA,EAHK;cAQF,IAAA,CAAA,WAAc,EAXvB,IAAA,EAAA,EAAA,CAAA,CAAA;aAYU;WACU;AAbpB,SAAA,EAAA,CAAA,GAAA,CAAA,eAAA,EAAA,QAAA,CAAA,CAAA,CAAA,CAAA;;AAAA,MAAA,OAAAR,WAAA,CAAA,KAAA,EAAA;aAiBa,EAAA,GAAA;eACD,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,eAlBZ,CAAA,EAAA,CAAA,YAAA,EAAA,CAAA,CAAA,UAAA,CAAA,KAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,QAAA,CAAA,KAAA,CAAA,WAAA,CAAA,CAAA;AAAA,OAAA,EAAA,CAAA,SAAA,EAmBcpE,WAAmB,CAAA,KAAA,EAAA;eAChB,EAAA,EAAA,CAAA,CAAA,CAAA,YAAA,CAAA;aACP,EAAA;UACLoE,WAtBL,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAuBgBpE,KAAsB,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,QAAA,CAAA,KAAA,CAAA,WAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,SAAA,EAAA,KAAA,CAAA,OAAA,IAAA,CAAA,KAAA,EAAA,QAAA,CAAA,CAAA,QAAA,CAAA,QAAA,CAAA,KAAA,CAAA,WAAA,CAAA,CAAA,CAAA;AAChC,QAAA,KAAA,EAAA;AAKEU,QAAAA,OAAAA,EAAAA,QAAI,CAAA,KAAA;AACL,QAAA,MAAA,EAAA,SAAA;AACF,QAAA,WAAA,EAAA,SAAA;AA/BL,OAAA,EAAA,CAAA,GAAA,CAAA,CAiCQ,KAACuE,CAAAA,IAAAA,GAAAA,WAAiBH,CAAlB,MAjCR,EAAA;AAoCD,QA1DD,MAAA,EAAA,CAAA,GAAA,KAAA,CAAA,KAAA,CAAA;AA4DA,OAAA,EAAA,IAAA,CAAA,GAAA,IAAA,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AAAA,GAAA;AAAA,CAAA;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { TabsPaneContext } from 'element-plus/es/tokens';
|
|
2
2
|
import type { ExtractPropTypes } from 'vue';
|
|
3
3
|
import type { Awaitable } from 'element-plus/es/utils';
|
|
4
|
-
export declare type
|
|
4
|
+
export declare type TabPaneName = string | number;
|
|
5
5
|
export declare const tabsProps: {
|
|
6
6
|
readonly type: import("element-plus/es/utils").EpPropFinalized<StringConstructor, "" | "card" | "border-card", unknown, "", boolean>;
|
|
7
7
|
readonly activeName: {
|
|
@@ -20,12 +20,12 @@ export declare const tabsProps: {
|
|
|
20
20
|
};
|
|
21
21
|
readonly editable: BooleanConstructor;
|
|
22
22
|
readonly tabPosition: import("element-plus/es/utils").EpPropFinalized<StringConstructor, "left" | "right" | "top" | "bottom", unknown, "top", boolean>;
|
|
23
|
-
readonly beforeLeave: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (newName:
|
|
24
|
-
(): (newName:
|
|
23
|
+
readonly beforeLeave: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (newName: TabPaneName, oldName: TabPaneName) => Awaitable<void | boolean>) | (() => (newName: TabPaneName, oldName: TabPaneName) => Awaitable<void | boolean>) | {
|
|
24
|
+
(): (newName: TabPaneName, oldName: TabPaneName) => Awaitable<void | boolean>;
|
|
25
25
|
new (): any;
|
|
26
26
|
readonly prototype: any;
|
|
27
|
-
} | ((new (...args: any[]) => (newName:
|
|
28
|
-
(): (newName:
|
|
27
|
+
} | ((new (...args: any[]) => (newName: TabPaneName, oldName: TabPaneName) => Awaitable<void | boolean>) | (() => (newName: TabPaneName, oldName: TabPaneName) => Awaitable<void | boolean>) | {
|
|
28
|
+
(): (newName: TabPaneName, oldName: TabPaneName) => Awaitable<void | boolean>;
|
|
29
29
|
new (): any;
|
|
30
30
|
readonly prototype: any;
|
|
31
31
|
})[], unknown, unknown, () => true, boolean>;
|
|
@@ -33,11 +33,11 @@ export declare const tabsProps: {
|
|
|
33
33
|
};
|
|
34
34
|
export declare type TabsProps = ExtractPropTypes<typeof tabsProps>;
|
|
35
35
|
export declare const tabsEmits: {
|
|
36
|
-
"update:modelValue": (name:
|
|
36
|
+
"update:modelValue": (name: TabPaneName) => boolean;
|
|
37
37
|
tabClick: (pane: TabsPaneContext, ev: Event) => boolean;
|
|
38
|
-
tabChange: (name:
|
|
39
|
-
edit: (paneName:
|
|
40
|
-
tabRemove: (name:
|
|
38
|
+
tabChange: (name: TabPaneName) => boolean;
|
|
39
|
+
edit: (paneName: TabPaneName | undefined, action: 'remove' | 'add') => boolean;
|
|
40
|
+
tabRemove: (name: TabPaneName) => boolean;
|
|
41
41
|
tabAdd: () => boolean;
|
|
42
42
|
};
|
|
43
43
|
export declare type TabsEmits = typeof tabsEmits;
|
|
@@ -60,18 +60,18 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
60
60
|
};
|
|
61
61
|
readonly editable: BooleanConstructor;
|
|
62
62
|
readonly tabPosition: import("element-plus/es/utils").EpPropFinalized<StringConstructor, "left" | "right" | "top" | "bottom", unknown, "top", boolean>;
|
|
63
|
-
readonly beforeLeave: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (newName:
|
|
64
|
-
(): (newName:
|
|
63
|
+
readonly beforeLeave: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (newName: TabPaneName, oldName: TabPaneName) => Awaitable<boolean | void>) | (() => (newName: TabPaneName, oldName: TabPaneName) => Awaitable<boolean | void>) | {
|
|
64
|
+
(): (newName: TabPaneName, oldName: TabPaneName) => Awaitable<boolean | void>;
|
|
65
65
|
new (): any;
|
|
66
66
|
readonly prototype: any;
|
|
67
|
-
} | ((new (...args: any[]) => (newName:
|
|
68
|
-
(): (newName:
|
|
67
|
+
} | ((new (...args: any[]) => (newName: TabPaneName, oldName: TabPaneName) => Awaitable<boolean | void>) | (() => (newName: TabPaneName, oldName: TabPaneName) => Awaitable<boolean | void>) | {
|
|
68
|
+
(): (newName: TabPaneName, oldName: TabPaneName) => Awaitable<boolean | void>;
|
|
69
69
|
new (): any;
|
|
70
70
|
readonly prototype: any;
|
|
71
71
|
})[], unknown, unknown, () => true, boolean>;
|
|
72
72
|
readonly stretch: BooleanConstructor;
|
|
73
73
|
}, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
74
|
-
"update:modelValue": (name:
|
|
74
|
+
"update:modelValue": (name: TabPaneName) => boolean;
|
|
75
75
|
tabClick: (pane: {
|
|
76
76
|
uid: number;
|
|
77
77
|
slots: Readonly<{
|
|
@@ -89,9 +89,9 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
89
89
|
index: string | undefined;
|
|
90
90
|
isClosable: boolean;
|
|
91
91
|
}, ev: Event) => boolean;
|
|
92
|
-
tabChange: (name:
|
|
93
|
-
edit: (paneName:
|
|
94
|
-
tabRemove: (name:
|
|
92
|
+
tabChange: (name: TabPaneName) => boolean;
|
|
93
|
+
edit: (paneName: TabPaneName | undefined, action: "add" | "remove") => boolean;
|
|
94
|
+
tabRemove: (name: TabPaneName) => boolean;
|
|
95
95
|
tabAdd: () => boolean;
|
|
96
96
|
}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
|
|
97
97
|
readonly type: import("element-plus/es/utils").EpPropFinalized<StringConstructor, "" | "card" | "border-card", unknown, "", boolean>;
|
|
@@ -111,18 +111,18 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
111
111
|
};
|
|
112
112
|
readonly editable: BooleanConstructor;
|
|
113
113
|
readonly tabPosition: import("element-plus/es/utils").EpPropFinalized<StringConstructor, "left" | "right" | "top" | "bottom", unknown, "top", boolean>;
|
|
114
|
-
readonly beforeLeave: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (newName:
|
|
115
|
-
(): (newName:
|
|
114
|
+
readonly beforeLeave: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => (newName: TabPaneName, oldName: TabPaneName) => Awaitable<boolean | void>) | (() => (newName: TabPaneName, oldName: TabPaneName) => Awaitable<boolean | void>) | {
|
|
115
|
+
(): (newName: TabPaneName, oldName: TabPaneName) => Awaitable<boolean | void>;
|
|
116
116
|
new (): any;
|
|
117
117
|
readonly prototype: any;
|
|
118
|
-
} | ((new (...args: any[]) => (newName:
|
|
119
|
-
(): (newName:
|
|
118
|
+
} | ((new (...args: any[]) => (newName: TabPaneName, oldName: TabPaneName) => Awaitable<boolean | void>) | (() => (newName: TabPaneName, oldName: TabPaneName) => Awaitable<boolean | void>) | {
|
|
119
|
+
(): (newName: TabPaneName, oldName: TabPaneName) => Awaitable<boolean | void>;
|
|
120
120
|
new (): any;
|
|
121
121
|
readonly prototype: any;
|
|
122
122
|
})[], unknown, unknown, () => true, boolean>;
|
|
123
123
|
readonly stretch: BooleanConstructor;
|
|
124
124
|
}>> & {
|
|
125
|
-
"onUpdate:modelValue"?: ((name:
|
|
125
|
+
"onUpdate:modelValue"?: ((name: TabPaneName) => any) | undefined;
|
|
126
126
|
onTabClick?: ((pane: {
|
|
127
127
|
uid: number;
|
|
128
128
|
slots: Readonly<{
|
|
@@ -140,15 +140,15 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
140
140
|
index: string | undefined;
|
|
141
141
|
isClosable: boolean;
|
|
142
142
|
}, ev: Event) => any) | undefined;
|
|
143
|
-
onTabChange?: ((name:
|
|
144
|
-
onEdit?: ((paneName:
|
|
145
|
-
onTabRemove?: ((name:
|
|
143
|
+
onTabChange?: ((name: TabPaneName) => any) | undefined;
|
|
144
|
+
onEdit?: ((paneName: TabPaneName | undefined, action: "add" | "remove") => any) | undefined;
|
|
145
|
+
onTabRemove?: ((name: TabPaneName) => any) | undefined;
|
|
146
146
|
onTabAdd?: (() => any) | undefined;
|
|
147
147
|
}, {
|
|
148
148
|
readonly type: import("element-plus/es/utils").EpPropMergeType<StringConstructor, "" | "card" | "border-card", unknown>;
|
|
149
149
|
readonly closable: boolean;
|
|
150
150
|
readonly tabPosition: import("element-plus/es/utils").EpPropMergeType<StringConstructor, "left" | "right" | "top" | "bottom", unknown>;
|
|
151
|
-
readonly beforeLeave: (newName:
|
|
151
|
+
readonly beforeLeave: (newName: TabPaneName, oldName: TabPaneName) => Awaitable<boolean | void>;
|
|
152
152
|
readonly addable: boolean;
|
|
153
153
|
readonly editable: boolean;
|
|
154
154
|
readonly stretch: boolean;
|
|
@@ -43,13 +43,13 @@ const tabsProps = buildProps({
|
|
|
43
43
|
},
|
|
44
44
|
stretch: Boolean
|
|
45
45
|
});
|
|
46
|
-
const
|
|
46
|
+
const isPaneName = (value) => isString(value) || isNumber(value);
|
|
47
47
|
const tabsEmits = {
|
|
48
|
-
[UPDATE_MODEL_EVENT]: (name) =>
|
|
48
|
+
[UPDATE_MODEL_EVENT]: (name) => isPaneName(name),
|
|
49
49
|
tabClick: (pane, ev) => ev instanceof Event,
|
|
50
|
-
tabChange: (name) =>
|
|
50
|
+
tabChange: (name) => isPaneName(name),
|
|
51
51
|
edit: (paneName, action) => ["remove", "add"].includes(action),
|
|
52
|
-
tabRemove: (name) =>
|
|
52
|
+
tabRemove: (name) => isPaneName(name),
|
|
53
53
|
tabAdd: () => true
|
|
54
54
|
};
|
|
55
55
|
var Tabs = defineComponent({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.mjs","sources":["../../../../../../packages/components/tabs/src/tabs.tsx"],"sourcesContent":["import {\n computed,\n defineComponent,\n getCurrentInstance,\n nextTick,\n provide,\n ref,\n renderSlot,\n shallowReactive,\n shallowRef,\n watch,\n} from 'vue'\nimport {\n buildProps,\n definePropType,\n isNumber,\n isString,\n isUndefined,\n} from '@element-plus/utils'\nimport { EVENT_CODE, UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport ElIcon from '@element-plus/components/icon'\nimport { Plus } from '@element-plus/icons-vue'\nimport { tabsRootContextKey } from '@element-plus/tokens'\nimport { useDeprecated, useNamespace } from '@element-plus/hooks'\nimport TabNav from './tab-nav'\nimport { getOrderedPanes } from './utils/pane'\n\nimport type { TabNavInstance } from './tab-nav'\nimport type { TabsPaneContext } from '@element-plus/tokens'\nimport type { ExtractPropTypes } from 'vue'\nimport type { Awaitable } from '@element-plus/utils'\n\nexport type TabPanelName = string | number\n\nexport const tabsProps = buildProps({\n type: {\n type: String,\n values: ['card', 'border-card', ''],\n default: '',\n },\n activeName: {\n type: [String, Number],\n },\n closable: Boolean,\n addable: Boolean,\n modelValue: {\n type: [String, Number],\n },\n editable: Boolean,\n tabPosition: {\n type: String,\n values: ['top', 'right', 'bottom', 'left'],\n default: 'top',\n },\n beforeLeave: {\n type: definePropType<\n (\n newName: TabPanelName,\n oldName: TabPanelName\n ) => Awaitable<void | boolean>\n >(Function),\n default: () => true,\n },\n stretch: Boolean,\n} as const)\nexport type TabsProps = ExtractPropTypes<typeof tabsProps>\n\nconst isPanelName = (value: unknown): value is string | number =>\n isString(value) || isNumber(value)\n\nexport const tabsEmits = {\n [UPDATE_MODEL_EVENT]: (name: TabPanelName) => isPanelName(name),\n tabClick: (pane: TabsPaneContext, ev: Event) => ev instanceof Event,\n tabChange: (name: TabPanelName) => isPanelName(name),\n edit: (paneName: TabPanelName | undefined, action: 'remove' | 'add') =>\n ['remove', 'add'].includes(action),\n tabRemove: (name: TabPanelName) => isPanelName(name),\n tabAdd: () => true,\n}\nexport type TabsEmits = typeof tabsEmits\n\nexport type TabsPanes = Record<number, TabsPaneContext>\n\nexport default defineComponent({\n name: 'ElTabs',\n\n props: tabsProps,\n emits: tabsEmits,\n\n setup(props, { emit, slots, expose }) {\n const vm = getCurrentInstance()!\n\n const ns = useNamespace('tabs')\n\n const nav$ = ref<TabNavInstance>()\n const panes = shallowReactive<TabsPanes>({})\n const orderedPanes = shallowRef<TabsPaneContext[]>([])\n const currentName = ref<TabPanelName>(\n props.modelValue ?? props.activeName ?? '0'\n )\n\n const changeCurrentName = (value: TabPanelName) => {\n currentName.value = value\n emit(UPDATE_MODEL_EVENT, value)\n emit('tabChange', value)\n }\n\n const setCurrentName = async (value?: TabPanelName) => {\n // should do nothing.\n if (currentName.value === value || isUndefined(value)) return\n\n try {\n const canLeave = await props.beforeLeave?.(value, currentName.value)\n if (canLeave !== false) {\n changeCurrentName(value)\n\n // call exposed function, Vue doesn't support expose in typescript yet.\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n nav$.value?.removeFocus?.()\n }\n } catch {}\n }\n\n const handleTabClick = (\n tab: TabsPaneContext,\n tabName: TabPanelName,\n event: Event\n ) => {\n if (tab.props.disabled) return\n setCurrentName(tabName)\n emit('tabClick', tab, event)\n }\n\n const handleTabRemove = (pane: TabsPaneContext, ev: Event) => {\n if (pane.props.disabled || isUndefined(pane.props.name)) return\n ev.stopPropagation()\n emit('edit', pane.props.name, 'remove')\n emit('tabRemove', pane.props.name)\n }\n\n const handleTabAdd = () => {\n emit('edit', undefined, 'add')\n emit('tabAdd')\n }\n\n useDeprecated(\n {\n from: '\"activeName\"',\n replacement: '\"model-value\" or \"v-model\"',\n scope: 'ElTabs',\n version: '2.3.0',\n ref: 'https://element-plus.org/en-US/component/tabs.html#attributes',\n type: 'Attribute',\n },\n computed(() => !!props.activeName)\n )\n\n watch(\n () => props.activeName,\n (modelValue) => setCurrentName(modelValue)\n )\n\n watch(\n () => props.modelValue,\n (modelValue) => setCurrentName(modelValue)\n )\n\n watch(currentName, async () => {\n await nextTick()\n // call exposed function, Vue doesn't support expose in typescript yet.\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n nav$.value?.scrollToActiveTab()\n })\n\n {\n const registerPane = (pane: TabsPaneContext) => {\n panes[pane.uid] = pane\n orderedPanes.value = getOrderedPanes(vm, panes)\n }\n\n const unregisterPane = (uid: number) => {\n delete panes[uid]\n orderedPanes.value = getOrderedPanes(vm, panes)\n }\n\n provide(tabsRootContextKey, {\n props,\n currentName,\n registerPane,\n unregisterPane,\n })\n }\n\n expose({\n currentName,\n })\n\n return () => {\n const newButton =\n props.editable || props.addable ? (\n <span\n class={ns.e('new-tab')}\n tabindex=\"0\"\n onClick={handleTabAdd}\n onKeydown={(ev: KeyboardEvent) => {\n if (ev.code === EVENT_CODE.enter) handleTabAdd()\n }}\n >\n <ElIcon class={ns.is('icon-plus')}>\n <Plus />\n </ElIcon>\n </span>\n ) : null\n\n const header = (\n <div class={[ns.e('header'), ns.is(props.tabPosition)]}>\n {newButton}\n <TabNav\n ref={nav$}\n currentName={currentName.value}\n editable={props.editable}\n type={props.type}\n panes={orderedPanes.value}\n stretch={props.stretch}\n onTabClick={handleTabClick}\n onTabRemove={handleTabRemove}\n />\n </div>\n )\n\n const panels = (\n <div class={ns.e('content')}>{renderSlot(slots, 'default')}</div>\n )\n\n return (\n <div\n class={[\n ns.b(),\n ns.m(props.tabPosition),\n {\n [ns.m('card')]: props.type === 'card',\n [ns.m('border-card')]: props.type === 'border-card',\n },\n ]}\n >\n {...props.tabPosition !== 'bottom'\n ? [header, panels]\n : [panels, header]}\n </div>\n )\n }\n },\n})\n"],"names":["tabsProps","buildProps","type","String","values","default","activeName","Number","closable","Boolean","addable","modelValue","editable","tabPosition","beforeLeave","definePropType","Function","stretch","tabsEmits","name","tabClick","ev","tabChange","edit","tabRemove","tabAdd","props","emits","slots","expose","vm","getCurrentInstance","ns","useNamespace","nav$","panes","orderedPanes","changeCurrentName","value","currentName","emit","UPDATE_MODEL_EVENT","setCurrentName","handleTabClick","event","handleTabRemove","pane","disabled","handleTabAdd","useDeprecated","from","replacement","scope","version","ref","watch","nextTick","registerPane","unregisterPane","_createVNode","newButton","e","EVENT_CODE","is"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tabs.mjs","sources":["../../../../../../packages/components/tabs/src/tabs.tsx"],"sourcesContent":["import {\n computed,\n defineComponent,\n getCurrentInstance,\n nextTick,\n provide,\n ref,\n renderSlot,\n shallowReactive,\n shallowRef,\n watch,\n} from 'vue'\nimport {\n buildProps,\n definePropType,\n isNumber,\n isString,\n isUndefined,\n} from '@element-plus/utils'\nimport { EVENT_CODE, UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport ElIcon from '@element-plus/components/icon'\nimport { Plus } from '@element-plus/icons-vue'\nimport { tabsRootContextKey } from '@element-plus/tokens'\nimport { useDeprecated, useNamespace } from '@element-plus/hooks'\nimport TabNav from './tab-nav'\nimport { getOrderedPanes } from './utils/pane'\n\nimport type { TabNavInstance } from './tab-nav'\nimport type { TabsPaneContext } from '@element-plus/tokens'\nimport type { ExtractPropTypes } from 'vue'\nimport type { Awaitable } from '@element-plus/utils'\n\nexport type TabPaneName = string | number\n\nexport const tabsProps = buildProps({\n type: {\n type: String,\n values: ['card', 'border-card', ''],\n default: '',\n },\n activeName: {\n type: [String, Number],\n },\n closable: Boolean,\n addable: Boolean,\n modelValue: {\n type: [String, Number],\n },\n editable: Boolean,\n tabPosition: {\n type: String,\n values: ['top', 'right', 'bottom', 'left'],\n default: 'top',\n },\n beforeLeave: {\n type: definePropType<\n (newName: TabPaneName, oldName: TabPaneName) => Awaitable<void | boolean>\n >(Function),\n default: () => true,\n },\n stretch: Boolean,\n} as const)\nexport type TabsProps = ExtractPropTypes<typeof tabsProps>\n\nconst isPaneName = (value: unknown): value is string | number =>\n isString(value) || isNumber(value)\n\nexport const tabsEmits = {\n [UPDATE_MODEL_EVENT]: (name: TabPaneName) => isPaneName(name),\n tabClick: (pane: TabsPaneContext, ev: Event) => ev instanceof Event,\n tabChange: (name: TabPaneName) => isPaneName(name),\n edit: (paneName: TabPaneName | undefined, action: 'remove' | 'add') =>\n ['remove', 'add'].includes(action),\n tabRemove: (name: TabPaneName) => isPaneName(name),\n tabAdd: () => true,\n}\nexport type TabsEmits = typeof tabsEmits\n\nexport type TabsPanes = Record<number, TabsPaneContext>\n\nexport default defineComponent({\n name: 'ElTabs',\n\n props: tabsProps,\n emits: tabsEmits,\n\n setup(props, { emit, slots, expose }) {\n const vm = getCurrentInstance()!\n\n const ns = useNamespace('tabs')\n\n const nav$ = ref<TabNavInstance>()\n const panes = shallowReactive<TabsPanes>({})\n const orderedPanes = shallowRef<TabsPaneContext[]>([])\n const currentName = ref<TabPaneName>(\n props.modelValue ?? props.activeName ?? '0'\n )\n\n const changeCurrentName = (value: TabPaneName) => {\n currentName.value = value\n emit(UPDATE_MODEL_EVENT, value)\n emit('tabChange', value)\n }\n\n const setCurrentName = async (value?: TabPaneName) => {\n // should do nothing.\n if (currentName.value === value || isUndefined(value)) return\n\n try {\n const canLeave = await props.beforeLeave?.(value, currentName.value)\n if (canLeave !== false) {\n changeCurrentName(value)\n\n // call exposed function, Vue doesn't support expose in typescript yet.\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n nav$.value?.removeFocus?.()\n }\n } catch {}\n }\n\n const handleTabClick = (\n tab: TabsPaneContext,\n tabName: TabPaneName,\n event: Event\n ) => {\n if (tab.props.disabled) return\n setCurrentName(tabName)\n emit('tabClick', tab, event)\n }\n\n const handleTabRemove = (pane: TabsPaneContext, ev: Event) => {\n if (pane.props.disabled || isUndefined(pane.props.name)) return\n ev.stopPropagation()\n emit('edit', pane.props.name, 'remove')\n emit('tabRemove', pane.props.name)\n }\n\n const handleTabAdd = () => {\n emit('edit', undefined, 'add')\n emit('tabAdd')\n }\n\n useDeprecated(\n {\n from: '\"activeName\"',\n replacement: '\"model-value\" or \"v-model\"',\n scope: 'ElTabs',\n version: '2.3.0',\n ref: 'https://element-plus.org/en-US/component/tabs.html#attributes',\n type: 'Attribute',\n },\n computed(() => !!props.activeName)\n )\n\n watch(\n () => props.activeName,\n (modelValue) => setCurrentName(modelValue)\n )\n\n watch(\n () => props.modelValue,\n (modelValue) => setCurrentName(modelValue)\n )\n\n watch(currentName, async () => {\n await nextTick()\n // call exposed function, Vue doesn't support expose in typescript yet.\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n nav$.value?.scrollToActiveTab()\n })\n\n {\n const registerPane = (pane: TabsPaneContext) => {\n panes[pane.uid] = pane\n orderedPanes.value = getOrderedPanes(vm, panes)\n }\n\n const unregisterPane = (uid: number) => {\n delete panes[uid]\n orderedPanes.value = getOrderedPanes(vm, panes)\n }\n\n provide(tabsRootContextKey, {\n props,\n currentName,\n registerPane,\n unregisterPane,\n })\n }\n\n expose({\n currentName,\n })\n\n return () => {\n const newButton =\n props.editable || props.addable ? (\n <span\n class={ns.e('new-tab')}\n tabindex=\"0\"\n onClick={handleTabAdd}\n onKeydown={(ev: KeyboardEvent) => {\n if (ev.code === EVENT_CODE.enter) handleTabAdd()\n }}\n >\n <ElIcon class={ns.is('icon-plus')}>\n <Plus />\n </ElIcon>\n </span>\n ) : null\n\n const header = (\n <div class={[ns.e('header'), ns.is(props.tabPosition)]}>\n {newButton}\n <TabNav\n ref={nav$}\n currentName={currentName.value}\n editable={props.editable}\n type={props.type}\n panes={orderedPanes.value}\n stretch={props.stretch}\n onTabClick={handleTabClick}\n onTabRemove={handleTabRemove}\n />\n </div>\n )\n\n const panels = (\n <div class={ns.e('content')}>{renderSlot(slots, 'default')}</div>\n )\n\n return (\n <div\n class={[\n ns.b(),\n ns.m(props.tabPosition),\n {\n [ns.m('card')]: props.type === 'card',\n [ns.m('border-card')]: props.type === 'border-card',\n },\n ]}\n >\n {...props.tabPosition !== 'bottom'\n ? [header, panels]\n : [panels, header]}\n </div>\n )\n }\n },\n})\n"],"names":["tabsProps","buildProps","type","String","values","default","activeName","Number","closable","Boolean","addable","modelValue","editable","tabPosition","beforeLeave","definePropType","Function","stretch","tabsEmits","name","tabClick","ev","tabChange","edit","tabRemove","tabAdd","props","emits","slots","expose","vm","getCurrentInstance","ns","useNamespace","nav$","panes","orderedPanes","changeCurrentName","value","currentName","emit","UPDATE_MODEL_EVENT","setCurrentName","handleTabClick","event","handleTabRemove","pane","disabled","handleTabAdd","useDeprecated","from","replacement","scope","version","ref","watch","nextTick","registerPane","unregisterPane","_createVNode","newButton","e","EVENT_CODE","is"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent, inject, ref, watch, nextTick, computed, unref, provide, openBlock, createBlock, mergeProps, withCtx, normalizeClass, normalizeStyle, withModifiers, resolveDynamicComponent, createCommentVNode, createElementBlock, createElementVNode, renderSlot, toDisplayString } from 'vue';
|
|
2
|
-
import {
|
|
2
|
+
import { isEqual } from 'lodash-unified';
|
|
3
3
|
import { onClickOutside } from '@vueuse/core';
|
|
4
4
|
import '../../../../hooks/index.mjs';
|
|
5
5
|
import { ElInput } from '../../../input/index.mjs';
|
|
@@ -59,7 +59,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
59
59
|
emitChange(props.modelValue);
|
|
60
60
|
});
|
|
61
61
|
} else {
|
|
62
|
-
|
|
62
|
+
nextTick(() => {
|
|
63
|
+
if (val) {
|
|
64
|
+
valueOnOpen.value = props.modelValue;
|
|
65
|
+
}
|
|
66
|
+
});
|
|
63
67
|
}
|
|
64
68
|
});
|
|
65
69
|
const emitChange = (val, isClear) => {
|
|
@@ -109,7 +113,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
109
113
|
};
|
|
110
114
|
const onPick = (date = "", visible = false) => {
|
|
111
115
|
if (!visible) {
|
|
112
|
-
|
|
116
|
+
ignoreFocusEvent = true;
|
|
113
117
|
}
|
|
114
118
|
pickerVisible.value = visible;
|
|
115
119
|
let result;
|
|
@@ -134,6 +138,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
134
138
|
};
|
|
135
139
|
const onHide = () => {
|
|
136
140
|
pickerActualVisible.value = false;
|
|
141
|
+
pickerVisible.value = false;
|
|
137
142
|
ignoreFocusEvent = false;
|
|
138
143
|
emit("visible-change", false);
|
|
139
144
|
};
|
|
@@ -158,7 +163,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
158
163
|
if (props.readonly || pickerDisabled.value || pickerVisible.value || ignoreFocusEvent) {
|
|
159
164
|
return;
|
|
160
165
|
}
|
|
161
|
-
pickerVisible.value =
|
|
166
|
+
pickerVisible.value = true;
|
|
162
167
|
emit("focus", e);
|
|
163
168
|
};
|
|
164
169
|
let currentHandleBlurDeferCallback = void 0;
|