el-plus 0.0.111 → 0.0.112
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/CHANGELOG.md +6 -0
- package/dist/index.full.js +33 -22
- package/dist/index.full.min.js +4 -4
- package/dist/index.full.min.js.map +1 -1
- package/dist/index.full.min.mjs +4 -4
- package/dist/index.full.min.mjs.map +1 -1
- package/dist/index.full.mjs +33 -22
- package/es/components/select/index.d.ts +15 -14
- package/es/components/select/src/select.d.ts +4 -0
- package/es/components/select/src/select.mjs +5 -0
- package/es/components/select/src/select.mjs.map +1 -1
- package/es/components/select/src/select.vue.d.ts +9 -8
- package/es/components/select/src/select.vue2.mjs +4 -7
- package/es/components/select/src/select.vue2.mjs.map +1 -1
- package/es/components/select/src/use-select.d.ts +2 -2
- package/es/components/select/src/use-select.mjs +22 -13
- package/es/components/select/src/use-select.mjs.map +1 -1
- package/es/package.json.mjs +1 -1
- package/lib/components/select/index.d.ts +15 -14
- package/lib/components/select/src/select.d.ts +4 -0
- package/lib/components/select/src/select.js +5 -0
- package/lib/components/select/src/select.js.map +1 -1
- package/lib/components/select/src/select.vue.d.ts +9 -8
- package/lib/components/select/src/select.vue2.js +4 -7
- package/lib/components/select/src/select.vue2.js.map +1 -1
- package/lib/components/select/src/use-select.d.ts +2 -2
- package/lib/components/select/src/use-select.js +22 -13
- package/lib/components/select/src/use-select.js.map +1 -1
- package/lib/package.json.js +1 -1
- package/package.json +1 -1
|
@@ -115,6 +115,10 @@ export declare const inheritSelectProps: {
|
|
|
115
115
|
readonly props: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => import("element-plus/es/components/select-v2/src/useProps").Props) | (() => import("element-plus/es/components/select-v2/src/useProps").Props) | ((new (...args: any[]) => import("element-plus/es/components/select-v2/src/useProps").Props) | (() => import("element-plus/es/components/select-v2/src/useProps").Props))[], unknown, unknown, () => Required<import("element-plus/es/components/select-v2/src/useProps").Props>, boolean>;
|
|
116
116
|
};
|
|
117
117
|
export declare const selectProps: {
|
|
118
|
+
readonly desc: {
|
|
119
|
+
type: StringConstructor;
|
|
120
|
+
default: string;
|
|
121
|
+
};
|
|
118
122
|
readonly disabledOption: {
|
|
119
123
|
type: PropType<(item: SelectOption) => boolean>;
|
|
120
124
|
default: () => boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.js","sources":["../../../../../../packages/components/select/src/select.ts"],"sourcesContent":["import type { ExtractPropTypes, PropType, ExtractPublicPropTypes } from 'vue'\nimport {\n selectProps as elSelectProps,\n selectEmits as elSelectEmits,\n type SelectProps as ElSelectProps,\n} from 'element-plus'\nimport { apiProps } from '@el-plus/utils/props'\n\nexport type SelectOption = NonNullable<ElSelectProps['options']>[number]\nexport const inheritSelectProps = {\n ...elSelectProps,\n clearable: {\n ...elSelectProps.clearable,\n default: true,\n },\n} as const\nconst expandSelectProps = {\n ...apiProps,\n disabledOption: {\n type: Function as PropType<(item: SelectOption) => boolean>,\n default: () => false,\n },\n labelKey: {\n type: String,\n default: 'label',\n },\n valueKey: {\n type: String,\n default: 'value',\n },\n formatLabel: {\n type: Function as PropType<(item: SelectOption) => string>,\n },\n // api模式生效\n lazy: Boolean,\n // option是否同时展示code label, 默认值展示label, 传string展示指定字段\n codeInLabel: {\n type: [String, Boolean] as PropType<boolean | string>,\n },\n}\nexport const selectProps = {\n ...inheritSelectProps,\n ...expandSelectProps,\n} as const\nexport const expandSelectPropsKeys = Object.keys(expandSelectProps)\n\nexport type SelectProps = ExtractPropTypes<typeof selectProps>\nexport type SelectPropsPublic = ExtractPublicPropTypes<typeof selectProps>\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\nexport const selectEmits = {\n ...elSelectEmits,\n change: (\n value: SelectProps['modelValue'],\n item?: SelectOption | SelectOption[],\n ) => true,\n}\n/* eslint-enable @typescript-eslint/no-unused-vars */\nexport type SelectEmits = typeof selectEmits\nexport const selectEmitsKeys = Object.keys(selectEmits)\n"],"names":["elSelectProps","apiProps","elSelectEmits"],"mappings":";;;;;AASO,MAAM,kBAAA,GAAqB;AAAA,EAChC,GAAGA,uBAAA;AAAA,EACH,SAAA,EAAW;AAAA,IACT,GAAGA,uBAAA,CAAc,SAAA;AAAA,IACjB,OAAA,EAAS;AAAA;AAEb;AACA,MAAM,iBAAA,GAAoB;AAAA,EACxB,GAAGC,cAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"select.js","sources":["../../../../../../packages/components/select/src/select.ts"],"sourcesContent":["import type { ExtractPropTypes, PropType, ExtractPublicPropTypes } from 'vue'\nimport {\n selectProps as elSelectProps,\n selectEmits as elSelectEmits,\n type SelectProps as ElSelectProps,\n} from 'element-plus'\nimport { apiProps } from '@el-plus/utils/props'\n\nexport type SelectOption = NonNullable<ElSelectProps['options']>[number]\nexport const inheritSelectProps = {\n ...elSelectProps,\n clearable: {\n ...elSelectProps.clearable,\n default: true,\n },\n} as const\nconst expandSelectProps = {\n ...apiProps,\n // 回显文本:异步 value 到达时,用 desc 构造占位项(只读)\n desc: {\n type: String,\n default: '',\n },\n disabledOption: {\n type: Function as PropType<(item: SelectOption) => boolean>,\n default: () => false,\n },\n labelKey: {\n type: String,\n default: 'label',\n },\n valueKey: {\n type: String,\n default: 'value',\n },\n formatLabel: {\n type: Function as PropType<(item: SelectOption) => string>,\n },\n // api模式生效\n lazy: Boolean,\n // option是否同时展示code label, 默认值展示label, 传string展示指定字段\n codeInLabel: {\n type: [String, Boolean] as PropType<boolean | string>,\n },\n}\nexport const selectProps = {\n ...inheritSelectProps,\n ...expandSelectProps,\n} as const\nexport const expandSelectPropsKeys = Object.keys(expandSelectProps)\n\nexport type SelectProps = ExtractPropTypes<typeof selectProps>\nexport type SelectPropsPublic = ExtractPublicPropTypes<typeof selectProps>\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\nexport const selectEmits = {\n ...elSelectEmits,\n change: (\n value: SelectProps['modelValue'],\n item?: SelectOption | SelectOption[],\n ) => true,\n}\n/* eslint-enable @typescript-eslint/no-unused-vars */\nexport type SelectEmits = typeof selectEmits\nexport const selectEmitsKeys = Object.keys(selectEmits)\n"],"names":["elSelectProps","apiProps","elSelectEmits"],"mappings":";;;;;AASO,MAAM,kBAAA,GAAqB;AAAA,EAChC,GAAGA,uBAAA;AAAA,EACH,SAAA,EAAW;AAAA,IACT,GAAGA,uBAAA,CAAc,SAAA;AAAA,IACjB,OAAA,EAAS;AAAA;AAEb;AACA,MAAM,iBAAA,GAAoB;AAAA,EACxB,GAAGC,cAAA;AAAA;AAAA,EAEH,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,IAAA,EAAM,QAAA;AAAA,IACN,SAAS,MAAM;AAAA,GACjB;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA,EACA,WAAA,EAAa;AAAA,IACX,IAAA,EAAM;AAAA,GACR;AAAA;AAAA,EAEA,IAAA,EAAM,OAAA;AAAA;AAAA,EAEN,WAAA,EAAa;AAAA,IACX,IAAA,EAAM,CAAC,MAAA,EAAQ,OAAO;AAAA;AAE1B,CAAA;AACO,MAAM,WAAA,GAAc;AAAA,EACzB,GAAG,kBAAA;AAAA,EACH,GAAG;AACL;AACO,MAAM,qBAAA,GAAwB,MAAA,CAAO,IAAA,CAAK,iBAAiB;AAM3D,MAAM,WAAA,GAAc;AAAA,EACzB,GAAGC,uBAAA;AAAA,EACH,MAAA,EAAQ,CACN,KAAA,EACA,IAAA,KACG;AACP;AAGO,MAAM,eAAA,GAAkB,MAAA,CAAO,IAAA,CAAK,WAAW;;;;;;;;"}
|
|
@@ -7,6 +7,10 @@ type __VLS_Slots = {} & {
|
|
|
7
7
|
option?: (props: typeof __VLS_14) => any;
|
|
8
8
|
};
|
|
9
9
|
declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
10
|
+
desc: {
|
|
11
|
+
type: StringConstructor;
|
|
12
|
+
default: string;
|
|
13
|
+
};
|
|
10
14
|
disabledOption: {
|
|
11
15
|
type: import("vue").PropType<(item: import("./select").SelectOption) => boolean>;
|
|
12
16
|
default: () => boolean;
|
|
@@ -154,9 +158,6 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
154
158
|
__epPropKey: true;
|
|
155
159
|
};
|
|
156
160
|
props: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => import("element-plus/es/components/select-v2/src/useProps").Props) | (() => import("element-plus/es/components/select-v2/src/useProps").Props) | ((new (...args: any[]) => import("element-plus/es/components/select-v2/src/useProps").Props) | (() => import("element-plus/es/components/select-v2/src/useProps").Props))[], unknown, unknown, () => Required<import("element-plus/es/components/select-v2/src/useProps").Props>, boolean>;
|
|
157
|
-
desc: {
|
|
158
|
-
type: import("vue").PropType<string>;
|
|
159
|
-
};
|
|
160
161
|
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
161
162
|
clear: () => void;
|
|
162
163
|
blur: (evt: FocusEvent) => void;
|
|
@@ -169,8 +170,11 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
169
170
|
}) => void;
|
|
170
171
|
"remove-tag": (val: unknown) => void;
|
|
171
172
|
"visible-change": (visible: boolean) => void;
|
|
172
|
-
"update:desc": (value: string | undefined) => void;
|
|
173
173
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
174
|
+
desc: {
|
|
175
|
+
type: StringConstructor;
|
|
176
|
+
default: string;
|
|
177
|
+
};
|
|
174
178
|
disabledOption: {
|
|
175
179
|
type: import("vue").PropType<(item: import("./select").SelectOption) => boolean>;
|
|
176
180
|
default: () => boolean;
|
|
@@ -318,9 +322,6 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
318
322
|
__epPropKey: true;
|
|
319
323
|
};
|
|
320
324
|
props: import("element-plus/es/utils").EpPropFinalized<(new (...args: any[]) => import("element-plus/es/components/select-v2/src/useProps").Props) | (() => import("element-plus/es/components/select-v2/src/useProps").Props) | ((new (...args: any[]) => import("element-plus/es/components/select-v2/src/useProps").Props) | (() => import("element-plus/es/components/select-v2/src/useProps").Props))[], unknown, unknown, () => Required<import("element-plus/es/components/select-v2/src/useProps").Props>, boolean>;
|
|
321
|
-
desc: {
|
|
322
|
-
type: import("vue").PropType<string>;
|
|
323
|
-
};
|
|
324
325
|
}>> & Readonly<{
|
|
325
326
|
onClear?: (() => any) | undefined;
|
|
326
327
|
onBlur?: ((evt: FocusEvent) => any) | undefined;
|
|
@@ -333,8 +334,8 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
333
334
|
}) => any) | undefined;
|
|
334
335
|
"onRemove-tag"?: ((val: unknown) => any) | undefined;
|
|
335
336
|
"onVisible-change"?: ((visible: boolean) => any) | undefined;
|
|
336
|
-
"onUpdate:desc"?: ((value: string | undefined) => any) | undefined;
|
|
337
337
|
}>, {
|
|
338
|
+
desc: string;
|
|
338
339
|
loading: boolean;
|
|
339
340
|
offset: number;
|
|
340
341
|
placement: import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => "left" | "right" | "top" | "bottom" | "auto" | "auto-start" | "auto-end" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("element-plus").Placement) | ((new (...args: any[]) => "left" | "right" | "top" | "bottom" | "auto" | "auto-start" | "auto-end" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right-start" | "right-end" | "left-start" | "left-end") | (() => import("element-plus").Placement))[], import("element-plus").Placement, unknown>;
|
|
@@ -16,11 +16,9 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
16
16
|
__name: "select",
|
|
17
17
|
props: /* @__PURE__ */ vue.mergeModels(select.selectProps, {
|
|
18
18
|
"modelValue": {},
|
|
19
|
-
"modelModifiers": {}
|
|
20
|
-
"desc": {},
|
|
21
|
-
"descModifiers": {}
|
|
19
|
+
"modelModifiers": {}
|
|
22
20
|
}),
|
|
23
|
-
emits: /* @__PURE__ */ vue.mergeModels(select.selectEmits, ["update:modelValue"
|
|
21
|
+
emits: /* @__PURE__ */ vue.mergeModels(select.selectEmits, ["update:modelValue"]),
|
|
24
22
|
setup(__props, { emit: __emit }) {
|
|
25
23
|
const bem$1 = bem.createNameSpace("select");
|
|
26
24
|
const props$1 = __props;
|
|
@@ -30,7 +28,6 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
30
28
|
});
|
|
31
29
|
const { customOptions, loadOptions, expandAttrs } = useSelect.useSelect(props$1, emit);
|
|
32
30
|
const value = vue.useModel(__props, "modelValue");
|
|
33
|
-
const desc = vue.useModel(__props, "desc");
|
|
34
31
|
const customAttrs = vue.computed(() => {
|
|
35
32
|
return {
|
|
36
33
|
...props.prepareProps(props$1, ["modelValue", "desc", ...select.expandSelectPropsKeys]),
|
|
@@ -38,11 +35,11 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
38
35
|
...expandAttrs.value
|
|
39
36
|
};
|
|
40
37
|
});
|
|
41
|
-
loadOptions(
|
|
38
|
+
loadOptions();
|
|
42
39
|
vue.watch(
|
|
43
40
|
() => props$1.options,
|
|
44
41
|
() => {
|
|
45
|
-
loadOptions(
|
|
42
|
+
loadOptions();
|
|
46
43
|
},
|
|
47
44
|
{
|
|
48
45
|
deep: true
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.vue2.js","sources":["../../../../../../packages/components/select/src/select.vue"],"sourcesContent":["<template>\n <el-select\n v-model=\"value\"\n :class=\"`${bem.b()} ${prepareClassNames()}`\"\n v-bind=\"customAttrs\"\n :style=\"{\n ...prepareStyles(),\n }\"\n >\n <el-option\n v-for=\"item in customOptions\"\n :key=\"item[valueKey]\"\n :class=\"bem.e('option')\"\n :label=\"\n item.formatLabel\n ? item.formatLabel(item)\n : formatLabel\n ? formatLabel(item)\n : item[labelKey]\n \"\n :value=\"item[valueKey]\"\n :disabled=\"disabledOption(item)\"\n >\n <slot name=\"option\" :item=\"item\">\n <template v-if=\"codeInLabel || codeInLabel === ''\">\n <span style=\"float: left\">{{ item[labelKey] }}</span>\n <span\n style=\"\n float: right;\n color: var(--el-text-color-secondary);\n font-size: 13px;\n \"\n >\n {{\n item[\n typeof codeInLabel === 'string' && codeInLabel\n ? codeInLabel\n : valueKey\n ]\n }}\n </span>\n </template>\n </slot>\n </el-option>\n <template v-for=\"name in slots\" #[name]=\"scope\">\n <slot :name=\"name\" v-bind=\"scope\" />\n </template>\n </el-select>\n</template>\n<script setup lang=\"ts\">\nimport { computed, useSlots, watch } from 'vue'\nimport {\n selectProps,\n selectEmits,\n expandSelectPropsKeys,\n selectEmitsKeys,\n} from './select'\nimport type { SelectProps, SelectEmits } from './select'\nimport {\n prepareProps,\n prepareEvents,\n prepareClassNames,\n prepareStyles,\n} from '@el-plus/utils/props'\nimport { useSelect } from './use-select'\nimport { createNameSpace } from '@el-plus/utils/bem'\ndefineOptions({\n name: 'EpSelect',\n inheritAttrs: false,\n})\nconst bem = createNameSpace('select')\nconst props = defineProps(selectProps)\nconst emit = defineEmits(selectEmits)\nconst slots = computed(() => {\n return Object.keys(useSlots())\n})\n\nconst { customOptions, loadOptions, expandAttrs } = useSelect(props, emit)\nconst value = defineModel<SelectProps['modelValue']>()\nconst
|
|
1
|
+
{"version":3,"file":"select.vue2.js","sources":["../../../../../../packages/components/select/src/select.vue"],"sourcesContent":["<template>\n <el-select\n v-model=\"value\"\n :class=\"`${bem.b()} ${prepareClassNames()}`\"\n v-bind=\"customAttrs\"\n :style=\"{\n ...prepareStyles(),\n }\"\n >\n <el-option\n v-for=\"item in customOptions\"\n :key=\"item[valueKey]\"\n :class=\"bem.e('option')\"\n :label=\"\n item.formatLabel\n ? item.formatLabel(item)\n : formatLabel\n ? formatLabel(item)\n : item[labelKey]\n \"\n :value=\"item[valueKey]\"\n :disabled=\"disabledOption(item)\"\n >\n <slot name=\"option\" :item=\"item\">\n <template v-if=\"codeInLabel || codeInLabel === ''\">\n <span style=\"float: left\">{{ item[labelKey] }}</span>\n <span\n style=\"\n float: right;\n color: var(--el-text-color-secondary);\n font-size: 13px;\n \"\n >\n {{\n item[\n typeof codeInLabel === 'string' && codeInLabel\n ? codeInLabel\n : valueKey\n ]\n }}\n </span>\n </template>\n </slot>\n </el-option>\n <template v-for=\"name in slots\" #[name]=\"scope\">\n <slot :name=\"name\" v-bind=\"scope\" />\n </template>\n </el-select>\n</template>\n<script setup lang=\"ts\">\nimport { computed, useSlots, watch } from 'vue'\nimport {\n selectProps,\n selectEmits,\n expandSelectPropsKeys,\n selectEmitsKeys,\n} from './select'\nimport type { SelectProps, SelectEmits } from './select'\nimport {\n prepareProps,\n prepareEvents,\n prepareClassNames,\n prepareStyles,\n} from '@el-plus/utils/props'\nimport { useSelect } from './use-select'\nimport { createNameSpace } from '@el-plus/utils/bem'\ndefineOptions({\n name: 'EpSelect',\n inheritAttrs: false,\n})\nconst bem = createNameSpace('select')\nconst props = defineProps(selectProps)\nconst emit = defineEmits(selectEmits)\nconst slots = computed(() => {\n return Object.keys(useSlots())\n})\n\nconst { customOptions, loadOptions, expandAttrs } = useSelect(props, emit)\nconst value = defineModel<SelectProps['modelValue']>()\nconst customAttrs = computed(() => {\n return {\n ...prepareProps(props, ['modelValue', 'desc', ...expandSelectPropsKeys]),\n ...prepareEvents<SelectEmits>(emit, selectEmitsKeys),\n ...expandAttrs.value,\n }\n})\n// 回显由 echoOption computed 自动处理,这里只负责加载选项\nloadOptions()\nwatch(\n () => props.options,\n () => {\n loadOptions()\n },\n {\n deep: true,\n },\n)\n</script>\n"],"names":["bem","createNameSpace","props","computed","useSlots","useSelect","_useModel","prepareProps","expandSelectPropsKeys","prepareEvents","selectEmitsKeys","watch","_openBlock","_createBlock","_mergeProps","_unref","prepareClassNames","prepareStyles","_createElementBlock","_Fragment","_renderList","valueKey","_normalizeClass","formatLabel","labelKey","disabledOption","_renderSlot","codeInLabel","_createElementVNode","_toDisplayString","_withCtx","_normalizeProps","_guardReactiveProps"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { SetupContext } from 'vue';
|
|
2
2
|
import type { SelectProps, SelectEmits } from './select';
|
|
3
3
|
export declare function useSelect(props: SelectProps, emit: SetupContext<SelectEmits>['emit']): {
|
|
4
|
-
customOptions: import("vue").
|
|
5
|
-
loadOptions: (
|
|
4
|
+
customOptions: import("vue").ComputedRef<Record<string, any>[]>;
|
|
5
|
+
loadOptions: () => void;
|
|
6
6
|
expandAttrs: import("vue").ComputedRef<{
|
|
7
7
|
loading: boolean | undefined;
|
|
8
8
|
remoteMethod: (query: string) => void;
|
|
@@ -5,6 +5,7 @@ var useRequest = require('../../../hooks/use-request.js');
|
|
|
5
5
|
|
|
6
6
|
function useSelect(props, emit) {
|
|
7
7
|
let hasLoaded = false;
|
|
8
|
+
const loadedOptions = vue.ref([]);
|
|
8
9
|
const { loading, requestFn } = useRequest.useRequest({
|
|
9
10
|
api: props.api,
|
|
10
11
|
method: props.method,
|
|
@@ -16,12 +17,12 @@ function useSelect(props, emit) {
|
|
|
16
17
|
hooks: {
|
|
17
18
|
success(data) {
|
|
18
19
|
if (Array.isArray(data)) {
|
|
19
|
-
|
|
20
|
+
loadedOptions.value = data;
|
|
20
21
|
} else if (data && typeof data === "object") {
|
|
21
22
|
const rawData = data;
|
|
22
|
-
|
|
23
|
+
loadedOptions.value = rawData?.list || rawData?.data || [];
|
|
23
24
|
} else {
|
|
24
|
-
|
|
25
|
+
loadedOptions.value = [];
|
|
25
26
|
}
|
|
26
27
|
hasLoaded = true;
|
|
27
28
|
},
|
|
@@ -30,22 +31,30 @@ function useSelect(props, emit) {
|
|
|
30
31
|
}
|
|
31
32
|
}
|
|
32
33
|
});
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
34
|
+
const echoOption = vue.computed(() => {
|
|
35
|
+
const v = props.modelValue;
|
|
36
|
+
const d = props.desc;
|
|
37
|
+
if ((v || v === 0) && d) {
|
|
38
|
+
const exists = loadedOptions.value.some(
|
|
39
|
+
(item) => item[props.valueKey] === v
|
|
40
|
+
);
|
|
41
|
+
if (!exists) {
|
|
42
|
+
return [{ [props.labelKey]: d, [props.valueKey]: v }];
|
|
43
|
+
}
|
|
42
44
|
}
|
|
45
|
+
return [];
|
|
46
|
+
});
|
|
47
|
+
const customOptions = vue.computed(() => [
|
|
48
|
+
...echoOption.value,
|
|
49
|
+
...loadedOptions.value
|
|
50
|
+
]);
|
|
51
|
+
const loadOptions = () => {
|
|
43
52
|
if (props.api) {
|
|
44
53
|
if (!props.lazy && !props.remote) {
|
|
45
54
|
requestFn();
|
|
46
55
|
}
|
|
47
56
|
} else if (props.options?.length) {
|
|
48
|
-
|
|
57
|
+
loadedOptions.value = props.options;
|
|
49
58
|
}
|
|
50
59
|
};
|
|
51
60
|
const getSelectItem = (value) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-select.js","sources":["../../../../../../packages/components/select/src/use-select.ts"],"sourcesContent":["import { ref ,computed} from 'vue'\nimport type { SetupContext } from 'vue'\nimport { useRequest } from '@el-plus/hooks/use-request'\nimport type { SelectProps, SelectOption, SelectEmits } from './select'\nexport function useSelect(\n props: SelectProps,\n emit: SetupContext<SelectEmits>['emit'],\n) {\n let hasLoaded = false\n const { loading, requestFn } = useRequest({\n api: props.api,\n method: props.method,\n reqData: props.reqData,\n reqParams: props.reqParams,\n reqBefore: props.reqBefore,\n reqAfter: props.reqAfter,\n cancelToken: props.remote,\n hooks: {\n success(data) {\n type OptionArr = SelectOption[]\n interface OptionObj {\n list?: OptionArr\n data?: OptionArr\n }\n if (Array.isArray(data)) {\n
|
|
1
|
+
{"version":3,"file":"use-select.js","sources":["../../../../../../packages/components/select/src/use-select.ts"],"sourcesContent":["import { ref ,computed} from 'vue'\nimport type { SetupContext } from 'vue'\nimport { useRequest } from '@el-plus/hooks/use-request'\nimport type { SelectProps, SelectOption, SelectEmits } from './select'\nexport function useSelect(\n props: SelectProps,\n emit: SetupContext<SelectEmits>['emit'],\n) {\n let hasLoaded = false\n // 已加载的选项(api 请求结果 / props.options / 搜索结果)\n const loadedOptions = ref<SelectOption[]>([])\n const { loading, requestFn } = useRequest({\n api: props.api,\n method: props.method,\n reqData: props.reqData,\n reqParams: props.reqParams,\n reqBefore: props.reqBefore,\n reqAfter: props.reqAfter,\n cancelToken: props.remote,\n hooks: {\n success(data) {\n type OptionArr = SelectOption[]\n interface OptionObj {\n list?: OptionArr\n data?: OptionArr\n }\n if (Array.isArray(data)) {\n loadedOptions.value = data as OptionArr\n } else if (data && typeof data === 'object') {\n const rawData = data as OptionObj\n loadedOptions.value = rawData?.list || rawData?.data || []\n } else {\n loadedOptions.value = []\n }\n hasLoaded = true\n },\n fail(error) {\n console.error(error)\n },\n },\n })\n // 回显占位项:value/desc 存在且不在已加载列表中时,补充一项\n // 由 computed 自动响应 value/desc/loadedOptions 的变化,无需 watch\n const echoOption = computed<SelectOption[]>(() => {\n const v = props.modelValue\n const d = props.desc\n if ((v || v === 0) && d) {\n const exists = loadedOptions.value.some(\n (item: SelectOption) => item[props.valueKey] === v,\n )\n if (!exists) {\n return [{ [props.labelKey]: d, [props.valueKey]: v }]\n }\n }\n return []\n })\n // 最终下拉项 = 回显占位 + 已加载\n const customOptions = computed<SelectOption[]>(() => [\n ...echoOption.value,\n ...loadedOptions.value,\n ])\n // 加载下拉列表(只负责加载,不处理回显)\n const loadOptions = () => {\n if (props.api) {\n if (!props.lazy && !props.remote) {\n requestFn!()\n }\n } else if (props.options?.length) {\n loadedOptions.value = props.options\n }\n }\n // 获取选中项\n const getSelectItem = (value: SelectProps['modelValue']) => {\n if (Array.isArray(value)) {\n if (!customOptions.value) return []\n return customOptions.value.filter((item: SelectOption) => {\n return value.indexOf(item[props.valueKey]) > -1\n })\n }\n if (!customOptions.value) return {}\n return (\n customOptions.value.find((item: SelectOption) => {\n return item[props.valueKey] === value\n }) || {}\n )\n }\n const expandAttrs = computed(() => {\n return {\n loading: props.loading || loading?.value,\n remoteMethod: (query: string) => {\n if (!query) return\n requestFn!({\n $searchValue: query,\n })\n },\n onChange(value: SelectProps['modelValue']) {\n emit('change', value, getSelectItem(value))\n },\n onVisibleChange(visible: boolean) {\n if (props.api && props.lazy && visible && !hasLoaded && !props.remote) {\n requestFn!()\n }\n emit('visible-change', visible)\n },\n }\n })\n return {\n customOptions,\n loadOptions,\n expandAttrs,\n }\n}\n"],"names":["ref","useRequest","computed"],"mappings":"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"}
|
package/lib/package.json.js
CHANGED