@element-plus/nightly 0.0.20260315 → 0.0.20260316
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/attributes.json +1 -1
- package/dist/index.full.js +603 -526
- package/dist/index.full.min.js +9 -9
- package/dist/index.full.min.js.map +1 -1
- package/dist/index.full.min.mjs +8 -8
- package/dist/index.full.min.mjs.map +1 -1
- package/dist/index.full.mjs +603 -526
- 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-eg.js +1 -1
- package/dist/locale/ar-eg.min.js +1 -1
- package/dist/locale/ar-eg.min.mjs +1 -1
- package/dist/locale/ar-eg.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/ckb.js +1 -1
- package/dist/locale/ckb.min.js +1 -1
- package/dist/locale/ckb.min.mjs +1 -1
- package/dist/locale/ckb.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/hi.js +1 -1
- package/dist/locale/hi.min.js +1 -1
- package/dist/locale/hi.min.mjs +1 -1
- package/dist/locale/hi.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/lo.js +1 -1
- package/dist/locale/lo.min.js +1 -1
- package/dist/locale/lo.min.mjs +1 -1
- package/dist/locale/lo.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/ms.js +1 -1
- package/dist/locale/ms.min.js +1 -1
- package/dist/locale/ms.min.mjs +1 -1
- package/dist/locale/ms.mjs +1 -1
- package/dist/locale/my.js +1 -1
- package/dist/locale/my.min.js +1 -1
- package/dist/locale/my.min.mjs +1 -1
- package/dist/locale/my.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/no.js +1 -1
- package/dist/locale/no.min.js +1 -1
- package/dist/locale/no.min.mjs +1 -1
- package/dist/locale/no.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/sw.js +1 -1
- package/dist/locale/sw.min.js +1 -1
- package/dist/locale/sw.min.mjs +1 -1
- package/dist/locale/sw.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/te.js +1 -1
- package/dist/locale/te.min.js +1 -1
- package/dist/locale/te.min.mjs +1 -1
- package/dist/locale/te.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-hk.js +1 -1
- package/dist/locale/zh-hk.min.js +1 -1
- package/dist/locale/zh-hk.min.mjs +1 -1
- package/dist/locale/zh-hk.mjs +1 -1
- package/dist/locale/zh-mo.js +1 -1
- package/dist/locale/zh-mo.min.js +1 -1
- package/dist/locale/zh-mo.min.mjs +1 -1
- package/dist/locale/zh-mo.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/anchor/src/anchor.vue.d.ts +1 -1
- package/es/components/autocomplete/src/autocomplete.vue.d.ts +1 -1
- package/es/components/badge/src/badge.vue.d.ts +1 -1
- package/es/components/checkbox/src/checkbox-group.vue.d.ts +1 -1
- package/es/components/input/src/input.vue_vue_type_script_setup_true_lang.mjs +3 -1
- package/es/components/input/src/input.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
- package/es/components/input/src/input2.mjs.map +1 -1
- package/es/components/link/src/link.vue.d.ts +1 -1
- package/es/components/mention/src/mention.vue.d.ts +1 -1
- package/es/components/message/src/message.d.ts +1 -1
- package/es/components/message/src/message.vue.d.ts +1 -1
- package/es/components/notification/src/notification.d.ts +1 -1
- package/es/components/notification/src/notification.vue.d.ts +1 -1
- package/es/components/radio/src/radio-group.vue.d.ts +1 -1
- package/es/components/segmented/index.d.ts +34 -66
- package/es/components/segmented/src/segmented.d.ts +5 -4
- package/es/components/segmented/src/segmented.mjs.map +1 -1
- package/es/components/segmented/src/segmented.vue.d.ts +21 -26
- package/es/components/segmented/src/segmented.vue_vue_type_script_setup_true_lang.mjs +58 -4
- package/es/components/segmented/src/segmented.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
- package/es/components/segmented/src/segmented2.mjs.map +1 -1
- package/es/components/table/src/table-body/events-helper.mjs +1 -3
- package/es/components/table/src/table-body/events-helper.mjs.map +1 -1
- package/es/components/tabs/src/tab-nav.mjs +13 -10
- package/es/components/tabs/src/tab-nav.mjs.map +1 -1
- package/es/utils/index.d.ts +2 -1
- package/es/utils/index.mjs +2 -1
- package/es/utils/numbers.d.ts +9 -0
- package/es/utils/numbers.mjs +13 -0
- package/es/utils/numbers.mjs.map +1 -0
- package/es/version.mjs +1 -1
- package/es/version.mjs.map +1 -1
- package/lib/components/anchor/src/anchor.vue.d.ts +1 -1
- package/lib/components/autocomplete/src/autocomplete.vue.d.ts +1 -1
- package/lib/components/badge/src/badge.vue.d.ts +1 -1
- package/lib/components/checkbox/src/checkbox-group.vue.d.ts +1 -1
- package/lib/components/input/src/input.vue_vue_type_script_setup_true_lang.js +3 -1
- package/lib/components/input/src/input.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/input/src/input2.js.map +1 -1
- package/lib/components/link/src/link.vue.d.ts +1 -1
- package/lib/components/mention/src/mention.vue.d.ts +1 -1
- package/lib/components/message/src/message.d.ts +1 -1
- package/lib/components/message/src/message.vue.d.ts +1 -1
- package/lib/components/notification/src/notification.d.ts +1 -1
- package/lib/components/notification/src/notification.vue.d.ts +1 -1
- package/lib/components/radio/src/radio-group.vue.d.ts +1 -1
- package/lib/components/segmented/index.d.ts +34 -66
- package/lib/components/segmented/src/segmented.d.ts +5 -4
- package/lib/components/segmented/src/segmented.js.map +1 -1
- package/lib/components/segmented/src/segmented.vue.d.ts +21 -26
- package/lib/components/segmented/src/segmented.vue_vue_type_script_setup_true_lang.js +57 -3
- package/lib/components/segmented/src/segmented.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/lib/components/segmented/src/segmented2.js.map +1 -1
- package/lib/components/table/src/table-body/events-helper.js +2 -4
- package/lib/components/table/src/table-body/events-helper.js.map +1 -1
- package/lib/components/tabs/src/tab-nav.js +13 -10
- package/lib/components/tabs/src/tab-nav.js.map +1 -1
- package/lib/utils/index.d.ts +2 -1
- package/lib/utils/index.js +2 -0
- package/lib/utils/numbers.d.ts +9 -0
- package/lib/utils/numbers.js +15 -0
- package/lib/utils/numbers.js.map +1 -0
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -1
- package/package.json +4 -3
- package/web-types.json +1 -1
|
@@ -5,76 +5,44 @@ import "../../index.js";
|
|
|
5
5
|
import * as vue from "vue";
|
|
6
6
|
|
|
7
7
|
//#region ../../packages/components/segmented/index.d.ts
|
|
8
|
-
declare const ElSegmented: {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}, Readonly<SegmentedProps> & Readonly<{
|
|
8
|
+
declare const ElSegmented: (<T extends Option = Option>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: {
|
|
9
|
+
slots: {
|
|
10
|
+
default?: (props: {
|
|
11
|
+
item: T;
|
|
12
|
+
}) => any;
|
|
13
|
+
};
|
|
14
|
+
emit: ((event: "change", val: any) => void) & ((event: "update:modelValue", val: any) => void);
|
|
15
|
+
attrs: any;
|
|
16
|
+
}, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
17
|
+
props: vue.PublicProps & {
|
|
18
|
+
direction?: ("vertical" | "horizontal") | undefined;
|
|
19
|
+
options?: T[] | undefined;
|
|
20
|
+
modelValue?: (string | number | boolean) | undefined;
|
|
21
|
+
props?: Props | undefined;
|
|
22
|
+
block?: boolean | undefined;
|
|
23
|
+
size?: ComponentSize | undefined;
|
|
24
|
+
disabled?: boolean | undefined;
|
|
25
|
+
validateEvent?: boolean | undefined;
|
|
26
|
+
id?: string | undefined;
|
|
27
|
+
name?: string | undefined;
|
|
28
|
+
ariaLabel?: string | undefined;
|
|
30
29
|
onChange?: ((val: any) => any) | undefined;
|
|
31
30
|
"onUpdate:modelValue"?: ((val: any) => any) | undefined;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
options: Option[];
|
|
39
|
-
}>;
|
|
40
|
-
__isFragment?: never;
|
|
41
|
-
__isTeleport?: never;
|
|
42
|
-
__isSuspense?: never;
|
|
43
|
-
} & vue.ComponentOptionsBase<Readonly<SegmentedProps> & Readonly<{
|
|
44
|
-
onChange?: ((val: any) => any) | undefined;
|
|
45
|
-
"onUpdate:modelValue"?: ((val: any) => any) | undefined;
|
|
46
|
-
}>, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
47
|
-
change: (val: any) => void;
|
|
48
|
-
"update:modelValue": (val: any) => void;
|
|
49
|
-
}, string, {
|
|
50
|
-
props: Props;
|
|
51
|
-
modelValue: string | number | boolean;
|
|
52
|
-
disabled: boolean;
|
|
53
|
-
validateEvent: boolean;
|
|
54
|
-
direction: "vertical" | "horizontal";
|
|
55
|
-
options: Option[];
|
|
56
|
-
}, {}, string, {}, vue.GlobalComponents, vue.GlobalDirectives, string, vue.ComponentProvideOptions> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & (new () => {
|
|
57
|
-
$slots: {
|
|
31
|
+
} & (typeof globalThis extends {
|
|
32
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
33
|
+
} ? P : {});
|
|
34
|
+
expose: (exposed: {}) => void;
|
|
35
|
+
attrs: any;
|
|
36
|
+
slots: {
|
|
58
37
|
default?: (props: {
|
|
59
|
-
item:
|
|
38
|
+
item: T;
|
|
60
39
|
}) => any;
|
|
61
40
|
};
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
readonly block?: boolean | undefined;
|
|
69
|
-
readonly size?: ComponentSize | undefined;
|
|
70
|
-
readonly disabled?: boolean | undefined;
|
|
71
|
-
readonly validateEvent?: boolean | undefined;
|
|
72
|
-
readonly id?: string | undefined;
|
|
73
|
-
readonly name?: string | undefined;
|
|
74
|
-
readonly ariaLabel?: string | undefined;
|
|
75
|
-
readonly onChange?: ((val: any) => any) | undefined;
|
|
76
|
-
readonly "onUpdate:modelValue"?: ((val: any) => any) | undefined;
|
|
77
|
-
} & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps>) => void;
|
|
78
|
-
} & Record<string, any>;
|
|
41
|
+
emit: ((event: "change", val: any) => void) & ((event: "update:modelValue", val: any) => void);
|
|
42
|
+
}>) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
43
|
+
[key: string]: any;
|
|
44
|
+
}> & {
|
|
45
|
+
__ctx?: Awaited<typeof __VLS_setup>;
|
|
46
|
+
}) & vue.ObjectPlugin & Record<string, any>;
|
|
79
47
|
//#endregion
|
|
80
48
|
export { ElSegmented, ElSegmented as default, Props, SegmentedEmits, SegmentedInstance, SegmentedProps, SegmentedPropsPublic, defaultProps, segmentedEmits, segmentedProps };
|
|
@@ -4,7 +4,8 @@ import "../../../utils/index.js";
|
|
|
4
4
|
import { Option } from "./types.js";
|
|
5
5
|
import { _default } from "./segmented.vue.js";
|
|
6
6
|
import * as vue from "vue";
|
|
7
|
-
import { ExtractPublicPropTypes } from "vue";
|
|
7
|
+
import { ComponentInstance, ExtractPublicPropTypes } from "vue";
|
|
8
|
+
import { ComponentExposed } from "vue-component-type-helpers";
|
|
8
9
|
|
|
9
10
|
//#region ../../packages/components/segmented/src/segmented.d.ts
|
|
10
11
|
interface Props {
|
|
@@ -13,12 +14,12 @@ interface Props {
|
|
|
13
14
|
disabled?: string;
|
|
14
15
|
}
|
|
15
16
|
declare const defaultProps: Required<Props>;
|
|
16
|
-
interface SegmentedProps {
|
|
17
|
+
interface SegmentedProps<T extends Option = Option> {
|
|
17
18
|
direction?: 'vertical' | 'horizontal';
|
|
18
19
|
/**
|
|
19
20
|
* @description options of segmented
|
|
20
21
|
*/
|
|
21
|
-
options?:
|
|
22
|
+
options?: T[];
|
|
22
23
|
/**
|
|
23
24
|
* @description binding value
|
|
24
25
|
*/
|
|
@@ -86,6 +87,6 @@ declare const segmentedEmits: {
|
|
|
86
87
|
change: (val: any) => val is string | number | boolean;
|
|
87
88
|
};
|
|
88
89
|
type SegmentedEmits = typeof segmentedEmits;
|
|
89
|
-
type SegmentedInstance =
|
|
90
|
+
type SegmentedInstance = ComponentInstance<typeof _default> & ComponentExposed<typeof _default>;
|
|
90
91
|
//#endregion
|
|
91
92
|
export { Props, SegmentedEmits, SegmentedInstance, SegmentedProps, SegmentedPropsPublic, defaultProps, segmentedEmits, segmentedProps };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"segmented.mjs","names":[],"sources":["../../../../../../packages/components/segmented/src/segmented.ts"],"sourcesContent":["import {\n buildProps,\n definePropType,\n isBoolean,\n isNumber,\n isString,\n} from '@element-plus/utils'\nimport { useAriaProps, useSizeProp } from '@element-plus/hooks'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@element-plus/constants'\n\nimport type { Option } from './types'\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type { ComponentSize } from '@element-plus/constants'\nimport type Segmented from './segmented.vue'\n\nexport interface Props {\n label?: string\n value?: string\n disabled?: string\n}\n\nexport const defaultProps: Required<Props> = {\n label: 'label',\n value: 'value',\n disabled: 'disabled',\n}\n\nexport interface SegmentedProps {\n direction?: 'vertical' | 'horizontal'\n /**\n * @description options of segmented\n */\n options?:
|
|
1
|
+
{"version":3,"file":"segmented.mjs","names":[],"sources":["../../../../../../packages/components/segmented/src/segmented.ts"],"sourcesContent":["import {\n buildProps,\n definePropType,\n isBoolean,\n isNumber,\n isString,\n} from '@element-plus/utils'\nimport { useAriaProps, useSizeProp } from '@element-plus/hooks'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@element-plus/constants'\n\nimport type { Option } from './types'\nimport type { ComponentInstance, ExtractPublicPropTypes } from 'vue'\nimport type { ComponentExposed } from 'vue-component-type-helpers'\nimport type { ComponentSize } from '@element-plus/constants'\nimport type Segmented from './segmented.vue'\n\nexport interface Props {\n label?: string\n value?: string\n disabled?: string\n}\n\nexport const defaultProps: Required<Props> = {\n label: 'label',\n value: 'value',\n disabled: 'disabled',\n}\n\nexport interface SegmentedProps<T extends Option = Option> {\n direction?: 'vertical' | 'horizontal'\n /**\n * @description options of segmented\n */\n options?: T[]\n /**\n * @description binding value\n */\n modelValue?: string | number | boolean\n /**\n * @description configuration options, see the following table\n */\n props?: Props\n /**\n * @description fit width of parent content\n */\n block?: boolean\n /**\n * @description size of component\n */\n size?: ComponentSize\n /**\n * @description whether segmented is disabled\n */\n disabled?: boolean\n /**\n * @description whether to trigger form validation\n */\n validateEvent?: boolean\n /**\n * @description native input id\n */\n id?: string\n /**\n * @description native `name` attribute\n */\n name?: string\n /**\n * @description native `aria-label` attribute\n */\n ariaLabel?: string\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `SegmentedProps` instead.\n */\nexport const segmentedProps = buildProps({\n direction: {\n type: definePropType<'vertical' | 'horizontal'>(String),\n default: 'horizontal',\n },\n /**\n * @description options of segmented\n */\n options: {\n type: definePropType<Option[]>(Array),\n default: () => [],\n },\n /**\n * @description binding value\n */\n modelValue: {\n type: [String, Number, Boolean],\n default: undefined,\n },\n /**\n * @description configuration options, see the following table\n */\n props: {\n type: definePropType<Props>(Object),\n default: () => defaultProps,\n },\n /**\n * @description fit width of parent content\n */\n block: Boolean,\n /**\n * @description size of component\n */\n size: useSizeProp,\n /**\n * @description whether segmented is disabled\n */\n disabled: {\n type: Boolean,\n default: undefined,\n },\n /**\n * @description whether to trigger form validation\n */\n validateEvent: {\n type: Boolean,\n default: true,\n },\n /**\n * @description native input id\n */\n id: String,\n /**\n * @description native `name` attribute\n */\n name: String,\n ...useAriaProps(['ariaLabel']),\n})\n\n/**\n * @deprecated Removed after 3.0.0, Use `SegmentedProps` instead.\n */\nexport type SegmentedPropsPublic = ExtractPublicPropTypes<typeof segmentedProps>\n\nexport const segmentedEmits = {\n [UPDATE_MODEL_EVENT]: (val: any) =>\n isString(val) || isNumber(val) || isBoolean(val),\n [CHANGE_EVENT]: (val: any) =>\n isString(val) || isNumber(val) || isBoolean(val),\n}\nexport type SegmentedEmits = typeof segmentedEmits\n\nexport type SegmentedInstance = ComponentInstance<typeof Segmented> &\n ComponentExposed<typeof Segmented>\n"],"mappings":";;;;;;;AAsBA,MAAa,eAAgC;CAC3C,OAAO;CACP,OAAO;CACP,UAAU;CACX;;;;AAiDD,MAAa,iBAAiB,WAAW;CACvC,WAAW;EACT,MAAM,eAA0C,OAAO;EACvD,SAAS;EACV;CAID,SAAS;EACP,MAAM,eAAyB,MAAM;EACrC,eAAe,EAAE;EAClB;CAID,YAAY;EACV,MAAM;GAAC;GAAQ;GAAQ;GAAQ;EAC/B,SAAS;EACV;CAID,OAAO;EACL,MAAM,eAAsB,OAAO;EACnC,eAAe;EAChB;CAID,OAAO;CAIP,MAAM;CAIN,UAAU;EACR,MAAM;EACN,SAAS;EACV;CAID,eAAe;EACb,MAAM;EACN,SAAS;EACV;CAID,IAAI;CAIJ,MAAM;CACN,GAAG,aAAa,CAAC,YAAY,CAAC;CAC/B,CAAC;AAOF,MAAa,iBAAiB;EAC3B,sBAAsB,QACrB,SAAS,IAAI,IAAI,SAAS,IAAI,IAAI,UAAU,IAAI;EACjD,gBAAgB,QACf,SAAS,IAAI,IAAI,SAAS,IAAI,IAAI,UAAU,IAAI;CACnD"}
|
|
@@ -1,34 +1,29 @@
|
|
|
1
1
|
import { Option } from "./types.js";
|
|
2
|
-
import {
|
|
2
|
+
import { SegmentedProps } from "./segmented.js";
|
|
3
3
|
import * as vue from "vue";
|
|
4
4
|
|
|
5
5
|
//#region ../../packages/components/segmented/src/segmented.vue.d.ts
|
|
6
|
-
declare
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
props: Props;
|
|
20
|
-
modelValue: string | number | boolean;
|
|
21
|
-
disabled: boolean;
|
|
22
|
-
validateEvent: boolean;
|
|
23
|
-
direction: "vertical" | "horizontal";
|
|
24
|
-
options: Option[];
|
|
25
|
-
}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
|
|
26
|
-
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
27
|
-
declare const _default: typeof __VLS_export;
|
|
28
|
-
type __VLS_WithSlots<T, S> = T & {
|
|
29
|
-
new (): {
|
|
30
|
-
$slots: S;
|
|
6
|
+
declare const __VLS_export: <T extends Option = Option>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
7
|
+
props: vue.PublicProps & __VLS_PrettifyLocal<SegmentedProps<T> & {
|
|
8
|
+
onChange?: ((val: any) => any) | undefined;
|
|
9
|
+
"onUpdate:modelValue"?: ((val: any) => any) | undefined;
|
|
10
|
+
}> & (typeof globalThis extends {
|
|
11
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
12
|
+
} ? P : {});
|
|
13
|
+
expose: (exposed: {}) => void;
|
|
14
|
+
attrs: any;
|
|
15
|
+
slots: {
|
|
16
|
+
default?: (props: {
|
|
17
|
+
item: T;
|
|
18
|
+
}) => any;
|
|
31
19
|
};
|
|
20
|
+
emit: ((event: "change", val: any) => void) & ((event: "update:modelValue", val: any) => void);
|
|
21
|
+
}>) => vue.VNode<vue.RendererNode, vue.RendererElement, {
|
|
22
|
+
[key: string]: any;
|
|
23
|
+
}> & {
|
|
24
|
+
__ctx?: Awaited<typeof __VLS_setup>;
|
|
32
25
|
};
|
|
26
|
+
declare const _default: typeof __VLS_export;
|
|
27
|
+
type __VLS_PrettifyLocal<T> = (T extends any ? { [K in keyof T]: T[K] } : { [K in keyof T as K]: T[K] }) & {};
|
|
33
28
|
//#endregion
|
|
34
29
|
export { _default };
|
|
@@ -5,7 +5,7 @@ import { useNamespace } from "../../../hooks/use-namespace/index.mjs";
|
|
|
5
5
|
import { useId } from "../../../hooks/use-id/index.mjs";
|
|
6
6
|
import { useFormDisabled, useFormSize } from "../../form/src/hooks/use-form-common-props.mjs";
|
|
7
7
|
import { useFormItem, useFormItemInputId } from "../../form/src/hooks/use-form-item.mjs";
|
|
8
|
-
import { defaultProps, segmentedEmits
|
|
8
|
+
import { defaultProps, segmentedEmits } from "./segmented.mjs";
|
|
9
9
|
import { useActiveElement, useResizeObserver } from "@vueuse/core";
|
|
10
10
|
import { Fragment, computed, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, defineComponent, normalizeClass, normalizeStyle, openBlock, reactive, ref, renderList, renderSlot, toDisplayString, unref, watch } from "vue";
|
|
11
11
|
|
|
@@ -24,7 +24,62 @@ const _hoisted_2 = [
|
|
|
24
24
|
var segmented_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
25
25
|
name: "ElSegmented",
|
|
26
26
|
__name: "segmented",
|
|
27
|
-
props:
|
|
27
|
+
props: {
|
|
28
|
+
direction: {
|
|
29
|
+
type: String,
|
|
30
|
+
required: false,
|
|
31
|
+
default: "horizontal"
|
|
32
|
+
},
|
|
33
|
+
options: {
|
|
34
|
+
type: Array,
|
|
35
|
+
required: false,
|
|
36
|
+
default: () => []
|
|
37
|
+
},
|
|
38
|
+
modelValue: {
|
|
39
|
+
type: [
|
|
40
|
+
String,
|
|
41
|
+
Number,
|
|
42
|
+
Boolean
|
|
43
|
+
],
|
|
44
|
+
required: false,
|
|
45
|
+
default: void 0
|
|
46
|
+
},
|
|
47
|
+
props: {
|
|
48
|
+
type: Object,
|
|
49
|
+
required: false,
|
|
50
|
+
default: () => defaultProps
|
|
51
|
+
},
|
|
52
|
+
block: {
|
|
53
|
+
type: Boolean,
|
|
54
|
+
required: false
|
|
55
|
+
},
|
|
56
|
+
size: {
|
|
57
|
+
type: null,
|
|
58
|
+
required: false
|
|
59
|
+
},
|
|
60
|
+
disabled: {
|
|
61
|
+
type: Boolean,
|
|
62
|
+
required: false,
|
|
63
|
+
default: void 0
|
|
64
|
+
},
|
|
65
|
+
validateEvent: {
|
|
66
|
+
type: Boolean,
|
|
67
|
+
required: false,
|
|
68
|
+
default: true
|
|
69
|
+
},
|
|
70
|
+
id: {
|
|
71
|
+
type: String,
|
|
72
|
+
required: false
|
|
73
|
+
},
|
|
74
|
+
name: {
|
|
75
|
+
type: String,
|
|
76
|
+
required: false
|
|
77
|
+
},
|
|
78
|
+
ariaLabel: {
|
|
79
|
+
type: String,
|
|
80
|
+
required: false
|
|
81
|
+
}
|
|
82
|
+
},
|
|
28
83
|
emits: segmentedEmits,
|
|
29
84
|
setup(__props, { emit: __emit }) {
|
|
30
85
|
const props = __props;
|
|
@@ -55,7 +110,6 @@ var segmented_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
|
|
|
55
110
|
...defaultProps,
|
|
56
111
|
...props.props
|
|
57
112
|
}));
|
|
58
|
-
const intoAny = (item) => item;
|
|
59
113
|
const getValue = (item) => {
|
|
60
114
|
return isObject(item) ? item[aliasProps.value.value] : item;
|
|
61
115
|
};
|
|
@@ -151,7 +205,7 @@ var segmented_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defi
|
|
|
151
205
|
disabled: getDisabled(item),
|
|
152
206
|
checked: getSelected(item),
|
|
153
207
|
onChange: ($event) => handleChange($event, item)
|
|
154
|
-
}, null, 42, _hoisted_2), createElementVNode("div", { class: normalizeClass(unref(ns).e("item-label")) }, [renderSlot(_ctx.$slots, "default", { item
|
|
208
|
+
}, null, 42, _hoisted_2), createElementVNode("div", { class: normalizeClass(unref(ns).e("item-label")) }, [renderSlot(_ctx.$slots, "default", { item }, () => [createTextVNode(toDisplayString(getLabel(item)), 1)])], 2)], 2);
|
|
155
209
|
}), 128))], 2)], 10, _hoisted_1)) : createCommentVNode("v-if", true);
|
|
156
210
|
};
|
|
157
211
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"segmented.vue_vue_type_script_setup_true_lang.mjs","names":[],"sources":["../../../../../../packages/components/segmented/src/segmented.vue"],"sourcesContent":["<template>\n <div\n v-if=\"options.length\"\n :id=\"inputId\"\n ref=\"segmentedRef\"\n :class=\"segmentedCls\"\n role=\"radiogroup\"\n :aria-label=\"!isLabeledByFormItem ? ariaLabel || 'segmented' : undefined\"\n :aria-labelledby=\"isLabeledByFormItem ? formItem!.labelId : undefined\"\n >\n <div :class=\"[ns.e('group'), ns.m(direction)]\">\n <div :style=\"selectedStyle\" :class=\"selectedCls\" />\n <label\n v-for=\"(item, index) in options\"\n :key=\"index\"\n :class=\"getItemCls(item)\"\n >\n <input\n :class=\"ns.e('item-input')\"\n type=\"radio\"\n :name=\"name\"\n :disabled=\"getDisabled(item)\"\n :checked=\"getSelected(item)\"\n @change=\"handleChange($event, item)\"\n />\n <div :class=\"ns.e('item-label')\">\n <slot :item=\"
|
|
1
|
+
{"version":3,"file":"segmented.vue_vue_type_script_setup_true_lang.mjs","names":[],"sources":["../../../../../../packages/components/segmented/src/segmented.vue"],"sourcesContent":["<template>\n <div\n v-if=\"options.length\"\n :id=\"inputId\"\n ref=\"segmentedRef\"\n :class=\"segmentedCls\"\n role=\"radiogroup\"\n :aria-label=\"!isLabeledByFormItem ? ariaLabel || 'segmented' : undefined\"\n :aria-labelledby=\"isLabeledByFormItem ? formItem!.labelId : undefined\"\n >\n <div :class=\"[ns.e('group'), ns.m(direction)]\">\n <div :style=\"selectedStyle\" :class=\"selectedCls\" />\n <label\n v-for=\"(item, index) in options\"\n :key=\"index\"\n :class=\"getItemCls(item)\"\n >\n <input\n :class=\"ns.e('item-input')\"\n type=\"radio\"\n :name=\"name\"\n :disabled=\"getDisabled(item)\"\n :checked=\"getSelected(item)\"\n @change=\"handleChange($event, item)\"\n />\n <div :class=\"ns.e('item-label')\">\n <slot :item=\"item\">{{ getLabel(item) }}</slot>\n </div>\n </label>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup generic=\"T extends Option = Option\">\nimport { computed, reactive, ref, watch } from 'vue'\nimport { useActiveElement, useResizeObserver } from '@vueuse/core'\nimport { useId, useNamespace } from '@element-plus/hooks'\nimport {\n useFormDisabled,\n useFormItem,\n useFormItemInputId,\n useFormSize,\n} from '@element-plus/components/form'\nimport { debugWarn, isObject } from '@element-plus/utils'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { defaultProps, segmentedEmits } from './segmented'\n\nimport type { Option } from './types'\nimport type { SegmentedProps } from './segmented'\n\ndefineOptions({\n name: 'ElSegmented',\n})\n\nconst props = withDefaults(defineProps<SegmentedProps<T>>(), {\n direction: 'horizontal',\n options: () => [],\n props: () => defaultProps,\n validateEvent: true,\n modelValue: undefined,\n disabled: undefined,\n})\nconst emit = defineEmits(segmentedEmits)\n\nconst ns = useNamespace('segmented')\nconst segmentedId = useId()\nconst segmentedSize = useFormSize()\nconst _disabled = useFormDisabled()\nconst { formItem } = useFormItem()\nconst { inputId, isLabeledByFormItem } = useFormItemInputId(props, {\n formItemContext: formItem,\n})\n\nconst segmentedRef = ref<HTMLElement | null>(null)\nconst activeElement = useActiveElement()\n\nconst state = reactive({\n isInit: false,\n width: 0,\n height: 0,\n translateX: 0,\n translateY: 0,\n focusVisible: false,\n})\n\nconst handleChange = (evt: Event, item: T) => {\n const value = getValue(item)\n emit(UPDATE_MODEL_EVENT, value)\n emit(CHANGE_EVENT, value)\n ;(evt.target as HTMLInputElement).checked = value === props.modelValue\n}\n\nconst aliasProps = computed(() => ({ ...defaultProps, ...props.props }))\n\nconst getValue = (item: T) => {\n return isObject(item) ? item[aliasProps.value.value] : item\n}\n\nconst getLabel = (item: T) => {\n return isObject(item) ? item[aliasProps.value.label] : item\n}\n\nconst getDisabled = (item: T | undefined) => {\n return !!(\n _disabled.value ||\n (isObject(item) ? item[aliasProps.value.disabled] : false)\n )\n}\n\nconst getSelected = (item: T) => {\n return props.modelValue === getValue(item)\n}\n\nconst getOption = (value: any) => {\n return props.options.find((item) => getValue(item) === value)\n}\n\nconst getItemCls = (item: T) => {\n return [\n ns.e('item'),\n ns.is('selected', getSelected(item)),\n ns.is('disabled', getDisabled(item)),\n ]\n}\n\nconst updateSelect = () => {\n if (!segmentedRef.value) return\n const selectedItem = segmentedRef.value.querySelector(\n '.is-selected'\n ) as HTMLElement\n const selectedItemInput = segmentedRef.value.querySelector(\n '.is-selected input'\n ) as HTMLElement\n if (!selectedItem || !selectedItemInput) {\n state.width = 0\n state.height = 0\n state.translateX = 0\n state.translateY = 0\n state.focusVisible = false\n return\n }\n state.isInit = true\n if (props.direction === 'vertical') {\n state.height = selectedItem.offsetHeight\n state.translateY = selectedItem.offsetTop\n } else {\n state.width = selectedItem.offsetWidth\n state.translateX = selectedItem.offsetLeft\n }\n try {\n // This will failed in test\n state.focusVisible = selectedItemInput.matches(':focus-visible')\n } catch {}\n}\n\nconst segmentedCls = computed(() => [\n ns.b(),\n ns.m(segmentedSize.value),\n ns.is('block', props.block),\n])\n\nconst selectedStyle = computed(() => ({\n width: props.direction === 'vertical' ? '100%' : `${state.width}px`,\n height: props.direction === 'vertical' ? `${state.height}px` : '100%',\n transform:\n props.direction === 'vertical'\n ? `translateY(${state.translateY}px)`\n : `translateX(${state.translateX}px)`,\n display: state.isInit ? 'block' : 'none',\n}))\n\nconst selectedCls = computed(() => [\n ns.e('item-selected'),\n ns.is('disabled', getDisabled(getOption(props.modelValue))),\n ns.is('focus-visible', state.focusVisible),\n])\n\nconst name = computed(() => {\n return props.name || segmentedId.value\n})\n\nuseResizeObserver(segmentedRef, updateSelect)\n\nwatch(activeElement, updateSelect)\n\nwatch(\n () => props.modelValue,\n () => {\n updateSelect()\n if (props.validateEvent) {\n formItem?.validate?.('change').catch((err) => debugWarn(err))\n }\n },\n {\n flush: 'post',\n }\n)\n</script>\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"segmented2.mjs","names":[],"sources":["../../../../../../packages/components/segmented/src/segmented.vue"],"sourcesContent":["<template>\n <div\n v-if=\"options.length\"\n :id=\"inputId\"\n ref=\"segmentedRef\"\n :class=\"segmentedCls\"\n role=\"radiogroup\"\n :aria-label=\"!isLabeledByFormItem ? ariaLabel || 'segmented' : undefined\"\n :aria-labelledby=\"isLabeledByFormItem ? formItem!.labelId : undefined\"\n >\n <div :class=\"[ns.e('group'), ns.m(direction)]\">\n <div :style=\"selectedStyle\" :class=\"selectedCls\" />\n <label\n v-for=\"(item, index) in options\"\n :key=\"index\"\n :class=\"getItemCls(item)\"\n >\n <input\n :class=\"ns.e('item-input')\"\n type=\"radio\"\n :name=\"name\"\n :disabled=\"getDisabled(item)\"\n :checked=\"getSelected(item)\"\n @change=\"handleChange($event, item)\"\n />\n <div :class=\"ns.e('item-label')\">\n <slot :item=\"
|
|
1
|
+
{"version":3,"file":"segmented2.mjs","names":[],"sources":["../../../../../../packages/components/segmented/src/segmented.vue"],"sourcesContent":["<template>\n <div\n v-if=\"options.length\"\n :id=\"inputId\"\n ref=\"segmentedRef\"\n :class=\"segmentedCls\"\n role=\"radiogroup\"\n :aria-label=\"!isLabeledByFormItem ? ariaLabel || 'segmented' : undefined\"\n :aria-labelledby=\"isLabeledByFormItem ? formItem!.labelId : undefined\"\n >\n <div :class=\"[ns.e('group'), ns.m(direction)]\">\n <div :style=\"selectedStyle\" :class=\"selectedCls\" />\n <label\n v-for=\"(item, index) in options\"\n :key=\"index\"\n :class=\"getItemCls(item)\"\n >\n <input\n :class=\"ns.e('item-input')\"\n type=\"radio\"\n :name=\"name\"\n :disabled=\"getDisabled(item)\"\n :checked=\"getSelected(item)\"\n @change=\"handleChange($event, item)\"\n />\n <div :class=\"ns.e('item-label')\">\n <slot :item=\"item\">{{ getLabel(item) }}</slot>\n </div>\n </label>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup generic=\"T extends Option = Option\">\nimport { computed, reactive, ref, watch } from 'vue'\nimport { useActiveElement, useResizeObserver } from '@vueuse/core'\nimport { useId, useNamespace } from '@element-plus/hooks'\nimport {\n useFormDisabled,\n useFormItem,\n useFormItemInputId,\n useFormSize,\n} from '@element-plus/components/form'\nimport { debugWarn, isObject } from '@element-plus/utils'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { defaultProps, segmentedEmits } from './segmented'\n\nimport type { Option } from './types'\nimport type { SegmentedProps } from './segmented'\n\ndefineOptions({\n name: 'ElSegmented',\n})\n\nconst props = withDefaults(defineProps<SegmentedProps<T>>(), {\n direction: 'horizontal',\n options: () => [],\n props: () => defaultProps,\n validateEvent: true,\n modelValue: undefined,\n disabled: undefined,\n})\nconst emit = defineEmits(segmentedEmits)\n\nconst ns = useNamespace('segmented')\nconst segmentedId = useId()\nconst segmentedSize = useFormSize()\nconst _disabled = useFormDisabled()\nconst { formItem } = useFormItem()\nconst { inputId, isLabeledByFormItem } = useFormItemInputId(props, {\n formItemContext: formItem,\n})\n\nconst segmentedRef = ref<HTMLElement | null>(null)\nconst activeElement = useActiveElement()\n\nconst state = reactive({\n isInit: false,\n width: 0,\n height: 0,\n translateX: 0,\n translateY: 0,\n focusVisible: false,\n})\n\nconst handleChange = (evt: Event, item: T) => {\n const value = getValue(item)\n emit(UPDATE_MODEL_EVENT, value)\n emit(CHANGE_EVENT, value)\n ;(evt.target as HTMLInputElement).checked = value === props.modelValue\n}\n\nconst aliasProps = computed(() => ({ ...defaultProps, ...props.props }))\n\nconst getValue = (item: T) => {\n return isObject(item) ? item[aliasProps.value.value] : item\n}\n\nconst getLabel = (item: T) => {\n return isObject(item) ? item[aliasProps.value.label] : item\n}\n\nconst getDisabled = (item: T | undefined) => {\n return !!(\n _disabled.value ||\n (isObject(item) ? item[aliasProps.value.disabled] : false)\n )\n}\n\nconst getSelected = (item: T) => {\n return props.modelValue === getValue(item)\n}\n\nconst getOption = (value: any) => {\n return props.options.find((item) => getValue(item) === value)\n}\n\nconst getItemCls = (item: T) => {\n return [\n ns.e('item'),\n ns.is('selected', getSelected(item)),\n ns.is('disabled', getDisabled(item)),\n ]\n}\n\nconst updateSelect = () => {\n if (!segmentedRef.value) return\n const selectedItem = segmentedRef.value.querySelector(\n '.is-selected'\n ) as HTMLElement\n const selectedItemInput = segmentedRef.value.querySelector(\n '.is-selected input'\n ) as HTMLElement\n if (!selectedItem || !selectedItemInput) {\n state.width = 0\n state.height = 0\n state.translateX = 0\n state.translateY = 0\n state.focusVisible = false\n return\n }\n state.isInit = true\n if (props.direction === 'vertical') {\n state.height = selectedItem.offsetHeight\n state.translateY = selectedItem.offsetTop\n } else {\n state.width = selectedItem.offsetWidth\n state.translateX = selectedItem.offsetLeft\n }\n try {\n // This will failed in test\n state.focusVisible = selectedItemInput.matches(':focus-visible')\n } catch {}\n}\n\nconst segmentedCls = computed(() => [\n ns.b(),\n ns.m(segmentedSize.value),\n ns.is('block', props.block),\n])\n\nconst selectedStyle = computed(() => ({\n width: props.direction === 'vertical' ? '100%' : `${state.width}px`,\n height: props.direction === 'vertical' ? `${state.height}px` : '100%',\n transform:\n props.direction === 'vertical'\n ? `translateY(${state.translateY}px)`\n : `translateX(${state.translateX}px)`,\n display: state.isInit ? 'block' : 'none',\n}))\n\nconst selectedCls = computed(() => [\n ns.e('item-selected'),\n ns.is('disabled', getDisabled(getOption(props.modelValue))),\n ns.is('focus-visible', state.focusVisible),\n])\n\nconst name = computed(() => {\n return props.name || segmentedId.value\n})\n\nuseResizeObserver(segmentedRef, updateSelect)\n\nwatch(activeElement, updateSelect)\n\nwatch(\n () => props.modelValue,\n () => {\n updateSelect()\n if (props.validateEvent) {\n formItem?.validate?.('change').catch((err) => debugWarn(err))\n }\n },\n {\n flush: 'post',\n }\n)\n</script>\n"],"mappings":""}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { addClass, hasClass, removeClass } from "../../../../utils/dom/style.mjs";
|
|
2
|
+
import { isGreaterThan } from "../../../../utils/numbers.mjs";
|
|
2
3
|
import { createTablePopper, getCell, getColumnByCell, removePopper } from "../util.mjs";
|
|
3
4
|
import { TABLE_INJECTION_KEY } from "../tokens.mjs";
|
|
4
5
|
import { debounce } from "lodash-unified";
|
|
5
6
|
import { h, inject, ref } from "vue";
|
|
6
7
|
|
|
7
8
|
//#region ../../packages/components/table/src/table-body/events-helper.ts
|
|
8
|
-
function isGreaterThan(a, b, epsilon = .03) {
|
|
9
|
-
return a - b > epsilon;
|
|
10
|
-
}
|
|
11
9
|
function useEvents(props) {
|
|
12
10
|
const parent = inject(TABLE_INJECTION_KEY);
|
|
13
11
|
const tooltipContent = ref("");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events-helper.mjs","names":[],"sources":["../../../../../../../packages/components/table/src/table-body/events-helper.ts"],"sourcesContent":["import { h, inject, ref } from 'vue'\nimport { debounce } from 'lodash-unified'\nimport {
|
|
1
|
+
{"version":3,"file":"events-helper.mjs","names":[],"sources":["../../../../../../../packages/components/table/src/table-body/events-helper.ts"],"sourcesContent":["import { h, inject, ref } from 'vue'\nimport { debounce } from 'lodash-unified'\nimport {\n addClass,\n hasClass,\n isGreaterThan,\n removeClass,\n} from '@element-plus/utils'\nimport {\n createTablePopper,\n getCell,\n getColumnByCell,\n removePopper,\n} from '../util'\nimport { TABLE_INJECTION_KEY } from '../tokens'\n\nimport type { TableColumnCtx } from '../table-column/defaults'\nimport type { TableBodyProps } from './defaults'\nimport type { TableOverflowTooltipOptions } from '../util'\nimport type { DefaultRow } from '../table/defaults'\n\nfunction useEvents<T extends DefaultRow>(props: Partial<TableBodyProps<T>>) {\n const parent = inject(TABLE_INJECTION_KEY)\n const tooltipContent = ref('')\n const tooltipTrigger = ref(h('div'))\n const handleEvent = (event: Event, row: T, name: string) => {\n const table = parent\n const cell = getCell(event)\n let column: TableColumnCtx<T> | null = null\n const namespace = table?.vnode.el?.dataset.prefix\n if (cell) {\n column = getColumnByCell(\n {\n columns: props.store?.states.columns.value ?? [],\n },\n cell,\n namespace\n )\n if (column) {\n table?.emit(`cell-${name}`, row, column, cell, event)\n }\n }\n table?.emit(`row-${name}`, row, column, event)\n }\n const handleDoubleClick = (event: Event, row: T) => {\n handleEvent(event, row, 'dblclick')\n }\n const handleClick = (event: Event, row: T) => {\n props.store?.commit('setCurrentRow', row)\n handleEvent(event, row, 'click')\n }\n const handleContextMenu = (event: Event, row: T) => {\n handleEvent(event, row, 'contextmenu')\n }\n const handleMouseEnter = debounce((index: number) => {\n props.store?.commit('setHoverRow', index)\n }, 30)\n const handleMouseLeave = debounce(() => {\n props.store?.commit('setHoverRow', null)\n }, 30)\n const getPadding = (el: HTMLElement) => {\n const style = window.getComputedStyle(el, null)\n const paddingLeft = Number.parseInt(style.paddingLeft, 10) || 0\n const paddingRight = Number.parseInt(style.paddingRight, 10) || 0\n const paddingTop = Number.parseInt(style.paddingTop, 10) || 0\n const paddingBottom = Number.parseInt(style.paddingBottom, 10) || 0\n return {\n left: paddingLeft,\n right: paddingRight,\n top: paddingTop,\n bottom: paddingBottom,\n }\n }\n\n const toggleRowClassByCell = (\n rowSpan: number,\n event: MouseEvent,\n toggle: (el: Element, cls: string) => void\n ) => {\n let node: Node | null | undefined = (event?.target as Element | null)\n ?.parentNode\n while (rowSpan > 1) {\n node = node?.nextSibling\n if (!node || node.nodeName !== 'TR') break\n toggle(node as Element, 'hover-row hover-fixed-row')\n rowSpan--\n }\n }\n\n const handleCellMouseEnter = (\n event: MouseEvent,\n row: T,\n tooltipOptions: TableOverflowTooltipOptions\n ) => {\n if (!parent) return\n const table = parent\n const cell = getCell(event)\n const namespace = table?.vnode.el?.dataset.prefix\n let column: TableColumnCtx<T> | null = null\n if (cell) {\n column = getColumnByCell(\n {\n columns: props.store?.states.columns.value ?? [],\n },\n cell,\n namespace\n )\n if (!column) {\n return\n }\n if (cell.rowSpan > 1) {\n toggleRowClassByCell(cell.rowSpan, event, addClass)\n }\n const hoverState = (table.hoverState = {\n cell,\n column: column as any,\n row,\n })\n table?.emit(\n 'cell-mouse-enter',\n hoverState.row,\n hoverState.column,\n hoverState.cell,\n event\n )\n }\n\n if (!tooltipOptions) {\n if (removePopper?.trigger === cell) {\n removePopper?.()\n }\n return\n }\n\n // 判断是否text-overflow, 如果是就显示tooltip\n const cellChild = (event.target as HTMLElement).querySelector(\n '.cell'\n ) as HTMLElement\n if (\n !(\n hasClass(cellChild, `${namespace}-tooltip`) &&\n cellChild.childNodes.length &&\n cellChild.textContent?.trim()\n )\n ) {\n return\n }\n // use range width instead of scrollWidth to determine whether the text is overflowing\n // to address a potential FireFox bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1074543#c3\n const range = document.createRange()\n range.setStart(cellChild, 0)\n range.setEnd(cellChild, cellChild.childNodes.length)\n /** detail: https://github.com/element-plus/element-plus/issues/10790\n * What went wrong?\n * UI > Browser > Zoom, In Blink/WebKit, getBoundingClientRect() sometimes returns inexact values, probably due to lost precision during internal calculations. In the example above:\n * - Expected: 188\n * - Actual: 188.00000762939453\n */\n const { width: rangeWidth, height: rangeHeight } =\n range.getBoundingClientRect()\n const { width: cellChildWidth, height: cellChildHeight } =\n cellChild.getBoundingClientRect()\n\n const { top, left, right, bottom } = getPadding(cellChild)\n const horizontalPadding = left + right\n const verticalPadding = top + bottom\n if (\n isGreaterThan(rangeWidth + horizontalPadding, cellChildWidth) ||\n isGreaterThan(rangeHeight + verticalPadding, cellChildHeight) ||\n // When using a high-resolution screen, it is possible that a returns cellChild.scrollWidth value of 1921 and\n // cellChildWidth returns a value of 1920.994140625. #16856 #16673\n isGreaterThan(cellChild.scrollWidth, cellChildWidth)\n ) {\n createTablePopper(\n tooltipOptions,\n (cell?.innerText || cell?.textContent) ?? '',\n row,\n column,\n cell,\n table\n )\n } else if (removePopper?.trigger === cell) {\n removePopper?.()\n }\n }\n const handleCellMouseLeave = (event: MouseEvent) => {\n const cell = getCell(event)\n if (!cell) return\n if (cell.rowSpan > 1) {\n toggleRowClassByCell(cell.rowSpan, event, removeClass)\n }\n const oldHoverState = parent?.hoverState\n parent?.emit(\n 'cell-mouse-leave',\n oldHoverState?.row,\n oldHoverState?.column,\n oldHoverState?.cell,\n event\n )\n }\n\n return {\n handleDoubleClick,\n handleClick,\n handleContextMenu,\n handleMouseEnter,\n handleMouseLeave,\n handleCellMouseEnter,\n handleCellMouseLeave,\n tooltipContent,\n tooltipTrigger,\n }\n}\n\nexport default useEvents\n"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { EVENT_CODE } from "../../../constants/aria.mjs";
|
|
2
2
|
import { getEventCode } from "../../../utils/dom/event.mjs";
|
|
3
3
|
import { rAF } from "../../../utils/raf.mjs";
|
|
4
|
-
import { capitalize } from "../../../utils/strings.mjs";
|
|
5
4
|
import { throwError } from "../../../utils/error.mjs";
|
|
6
5
|
import { buildProps, definePropType } from "../../../utils/vue/props/runtime.mjs";
|
|
7
6
|
import { mutable } from "../../../utils/typescript.mjs";
|
|
7
|
+
import { isGreaterThan } from "../../../utils/numbers.mjs";
|
|
8
8
|
import { useNamespace } from "../../../hooks/use-namespace/index.mjs";
|
|
9
9
|
import { ElIcon } from "../../icon/index.mjs";
|
|
10
10
|
import useWheel from "../../virtual-list/src/hooks/use-wheel.mjs";
|
|
@@ -99,17 +99,17 @@ const TabNav = /* @__PURE__ */ defineComponent({
|
|
|
99
99
|
};
|
|
100
100
|
const scrollPrev = () => {
|
|
101
101
|
if (!navScroll$.value) return;
|
|
102
|
-
const containerSize = navScroll$.value[
|
|
102
|
+
const containerSize = navScroll$.value.getBoundingClientRect()[sizeName.value];
|
|
103
103
|
const currentOffset = navOffset.value;
|
|
104
104
|
if (!currentOffset) return;
|
|
105
105
|
navOffset.value = currentOffset > containerSize ? currentOffset - containerSize : 0;
|
|
106
106
|
};
|
|
107
107
|
const scrollNext = () => {
|
|
108
108
|
if (!navScroll$.value || !nav$.value) return;
|
|
109
|
-
const navSize = nav$.value[
|
|
110
|
-
const containerSize = navScroll$.value[
|
|
109
|
+
const navSize = nav$.value.getBoundingClientRect()[sizeName.value];
|
|
110
|
+
const containerSize = navScroll$.value.getBoundingClientRect()[sizeName.value];
|
|
111
111
|
const currentOffset = navOffset.value;
|
|
112
|
-
if (navSize - currentOffset
|
|
112
|
+
if (!isGreaterThan(navSize - currentOffset, containerSize)) return;
|
|
113
113
|
navOffset.value = navSize - currentOffset > containerSize * 2 ? currentOffset + containerSize : navSize - containerSize;
|
|
114
114
|
};
|
|
115
115
|
const scrollToActiveTab = async () => {
|
|
@@ -121,12 +121,15 @@ const TabNav = /* @__PURE__ */ defineComponent({
|
|
|
121
121
|
const navScroll = navScroll$.value;
|
|
122
122
|
const activeTabBounding = activeTab.getBoundingClientRect();
|
|
123
123
|
const navScrollBounding = navScroll.getBoundingClientRect();
|
|
124
|
-
const
|
|
124
|
+
const navScrollLeft = navScrollBounding.left + 1;
|
|
125
|
+
const navScrollRight = navScrollBounding.right - 1;
|
|
126
|
+
const navBounding = nav.getBoundingClientRect();
|
|
127
|
+
const maxOffset = isHorizontal.value ? navBounding.width - navScrollBounding.width : navBounding.height - navScrollBounding.height;
|
|
125
128
|
const currentOffset = navOffset.value;
|
|
126
129
|
let newOffset = currentOffset;
|
|
127
130
|
if (isHorizontal.value) {
|
|
128
|
-
if (activeTabBounding.left <
|
|
129
|
-
if (activeTabBounding.right >
|
|
131
|
+
if (activeTabBounding.left < navScrollLeft) newOffset = currentOffset - (navScrollLeft - activeTabBounding.left);
|
|
132
|
+
if (activeTabBounding.right > navScrollRight) newOffset = currentOffset + activeTabBounding.right - navScrollRight;
|
|
130
133
|
} else {
|
|
131
134
|
if (activeTabBounding.top < navScrollBounding.top) newOffset = currentOffset - (navScrollBounding.top - activeTabBounding.top);
|
|
132
135
|
if (activeTabBounding.bottom > navScrollBounding.bottom) newOffset = currentOffset + (activeTabBounding.bottom - navScrollBounding.bottom);
|
|
@@ -143,8 +146,8 @@ const TabNav = /* @__PURE__ */ defineComponent({
|
|
|
143
146
|
if (containerSize < navSize) {
|
|
144
147
|
scrollable.value = scrollable.value || {};
|
|
145
148
|
scrollable.value.prev = currentOffset;
|
|
146
|
-
scrollable.value.next = currentOffset + containerSize
|
|
147
|
-
if (navSize - currentOffset
|
|
149
|
+
scrollable.value.next = isGreaterThan(navSize, currentOffset + containerSize);
|
|
150
|
+
if (isGreaterThan(containerSize, navSize - currentOffset)) navOffset.value = navSize - containerSize;
|
|
148
151
|
} else {
|
|
149
152
|
scrollable.value = false;
|
|
150
153
|
if (currentOffset > 0) navOffset.value = 0;
|