fast-element-plus 1.0.12 → 1.0.15
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 +4330 -4310
- package/dist/index.full.js.map +1 -1
- package/dist/index.full.min.js +1 -1
- package/dist/index.full.min.js.map +1 -1
- package/dist/index.full.min.mjs +1 -1
- package/dist/index.full.min.mjs.map +1 -1
- package/dist/index.full.mjs +4330 -4310
- package/dist/index.full.mjs.map +1 -1
- package/dist/styles/index.css +6 -6
- package/es/component.mjs +1 -1
- package/es/component.mjs.map +1 -1
- package/es/components/button/index.d.ts +1 -1
- package/es/components/button/index.mjs +1 -1
- package/es/components/button/index.mjs.map +1 -1
- package/es/components/carNumber/index.d.ts +1 -1
- package/es/components/carNumber/index.mjs +1 -1
- package/es/components/carNumber/index.mjs.map +1 -1
- package/es/components/carNumber/src/carNumber.mjs +1 -1
- package/es/components/carNumber/src/carNumber.mjs.map +1 -1
- package/es/components/image/src/image.mjs +1 -1
- package/es/components/image/src/image.mjs.map +1 -1
- package/es/components/inputDialogPage/src/inputDialogPage.d.ts +4 -3
- package/es/components/inputDialogPage/src/inputDialogPage.mjs +1 -1
- package/es/components/inputDialogPage/src/inputDialogPage.mjs.map +1 -1
- package/es/components/select/src/select.d.ts +1 -1
- package/es/components/select/src/select.mjs +1 -1
- package/es/components/select/src/select.mjs.map +1 -1
- package/es/components/selectPage/src/selectPage.d.ts +1 -1
- package/es/components/selectPage/src/selectPage.mjs +1 -1
- package/es/components/selectPage/src/selectPage.mjs.map +1 -1
- package/es/components/selectV2/src/selectV2.d.ts +2 -2
- package/es/components/selectV2/src/selectV2.mjs +1 -1
- package/es/components/selectV2/src/selectV2.mjs.map +1 -1
- package/es/components/table/src/table.d.ts +5 -5
- package/es/components/table/src/table.mjs +1 -1
- package/es/components/table/src/table.mjs.map +1 -1
- package/es/components/table/src/tableSearchFormItem.mjs +1 -1
- package/es/components/table/src/tableSearchFormItem.mjs.map +1 -1
- package/es/components/tree/src/tree.d.ts +3 -3
- package/es/components/tree/src/tree.mjs +1 -1
- package/es/components/tree/src/tree.mjs.map +1 -1
- package/es/components/treeSelect/src/treeSelect.d.ts +4 -4
- package/es/components/treeSelect/src/treeSelect.mjs +1 -1
- package/es/components/treeSelect/src/treeSelect.mjs.map +1 -1
- package/es/version.d.ts +1 -1
- package/es/version.mjs +1 -1
- package/es/version.mjs.map +1 -1
- package/lib/component.js +1 -1
- package/lib/component.js.map +1 -1
- package/lib/components/button/index.d.ts +1 -1
- package/lib/components/button/index.js +1 -1
- package/lib/components/button/index.js.map +1 -1
- package/lib/components/carNumber/index.d.ts +1 -1
- package/lib/components/carNumber/index.js +1 -1
- package/lib/components/carNumber/index.js.map +1 -1
- package/lib/components/carNumber/src/carNumber.js +1 -1
- package/lib/components/carNumber/src/carNumber.js.map +1 -1
- package/lib/components/image/src/image.js +1 -1
- package/lib/components/image/src/image.js.map +1 -1
- package/lib/components/inputDialogPage/src/inputDialogPage.d.ts +4 -3
- package/lib/components/inputDialogPage/src/inputDialogPage.js +1 -1
- package/lib/components/inputDialogPage/src/inputDialogPage.js.map +1 -1
- package/lib/components/select/src/select.d.ts +1 -1
- package/lib/components/select/src/select.js +1 -1
- package/lib/components/select/src/select.js.map +1 -1
- package/lib/components/selectPage/src/selectPage.d.ts +1 -1
- package/lib/components/selectPage/src/selectPage.js +1 -1
- package/lib/components/selectPage/src/selectPage.js.map +1 -1
- package/lib/components/selectV2/src/selectV2.d.ts +2 -2
- package/lib/components/selectV2/src/selectV2.js +1 -1
- package/lib/components/selectV2/src/selectV2.js.map +1 -1
- package/lib/components/table/src/table.d.ts +5 -5
- package/lib/components/table/src/table.js +1 -1
- package/lib/components/table/src/table.js.map +1 -1
- package/lib/components/table/src/tableSearchFormItem.js +1 -1
- package/lib/components/table/src/tableSearchFormItem.js.map +1 -1
- package/lib/components/tree/src/tree.d.ts +3 -3
- package/lib/components/tree/src/tree.js +1 -1
- package/lib/components/tree/src/tree.js.map +1 -1
- package/lib/components/treeSelect/src/treeSelect.d.ts +4 -4
- package/lib/components/treeSelect/src/treeSelect.js +1 -1
- package/lib/components/treeSelect/src/treeSelect.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -1
- package/package.json +1 -1
- package/styles/components/table.scss +6 -6
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { TableProps } from 'element-plus';
|
|
2
2
|
import { PropType } from 'vue';
|
|
3
3
|
import { PagedInput, PagedResult } from '../../table';
|
|
4
|
+
import { ElSelectorOutput } from '../../select/src/select.type';
|
|
4
5
|
export declare const faInputDialogPageProps: {
|
|
5
6
|
/** @description key of row data, used for optimizing rendering. Required if `reserve-selection` is on or display tree data. When its type is String, multi-level access is supported, e.g. `user.info.id`, but `user.info[0].id` is not supported, in which case `Function` should be used */
|
|
6
7
|
rowKey: {
|
|
@@ -38,7 +39,7 @@ export declare const faInputDialogPageEmits: {
|
|
|
38
39
|
/** @description v-model:label 回调 */
|
|
39
40
|
"update:label": (value: string) => boolean;
|
|
40
41
|
/** @description 改变 */
|
|
41
|
-
change: (
|
|
42
|
+
change: (data: ElSelectorOutput | ElSelectorOutput[] | any | any[], value?: string | number | boolean | object | (string | number | boolean | object)[]) => boolean;
|
|
42
43
|
};
|
|
43
44
|
type FaInputDialogPageSlots = {
|
|
44
45
|
/** @description 默认内容插槽 */
|
|
@@ -87,7 +88,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
87
88
|
/** @description v-model:label 回调 */
|
|
88
89
|
"update:label": (value: string) => boolean;
|
|
89
90
|
/** @description 改变 */
|
|
90
|
-
change: (
|
|
91
|
+
change: (data: ElSelectorOutput | ElSelectorOutput[] | any | any[], value?: string | number | boolean | object | (string | number | boolean | object)[]) => boolean;
|
|
91
92
|
}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
92
93
|
/** @description key of row data, used for optimizing rendering. Required if `reserve-selection` is on or display tree data. When its type is String, multi-level access is supported, e.g. `user.info.id`, but `user.info[0].id` is not supported, in which case `Function` should be used */
|
|
93
94
|
rowKey: {
|
|
@@ -120,7 +121,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
120
121
|
};
|
|
121
122
|
}>> & Readonly<{
|
|
122
123
|
"onUpdate:modelValue"?: (value: string | number) => any;
|
|
123
|
-
onChange?: (
|
|
124
|
+
onChange?: (data: any, value?: string | number | boolean | object | (string | number | boolean | object)[]) => any;
|
|
124
125
|
"onUpdate:label"?: (value: string) => any;
|
|
125
126
|
}>, {
|
|
126
127
|
disabled: boolean;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),l=require("element-plus"),t=require("@element-plus/icons-vue"),i=require("@fast-china/utils"),o=require("lodash-unified"),a=require("../../table/index.js"),u=require("@vueuse/core"),n=require("../../dialog/index.js"),r={rowKey:{type:[String,Function],default:"id"},modelValue:[String,Number],label:String,placeholder:{type:String,default:"请选择"},disabled:Boolean,title:String,requestApi:{type:i.definePropType(Function)},initParam:i.definePropType([String,Number,Object]),labelKey:{type:String,default:"name"}},s={"update:modelValue":e=>o.isString(e)||o.isNumber(e)||o.isNull(e),"update:label":e=>o.isString(e)||o.isNull(e),change:
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),l=require("element-plus"),t=require("@element-plus/icons-vue"),i=require("@fast-china/utils"),o=require("lodash-unified"),a=require("../../table/index.js"),u=require("@vueuse/core"),n=require("../../dialog/index.js"),r={rowKey:{type:[String,Function],default:"id"},modelValue:[String,Number],label:String,placeholder:{type:String,default:"请选择"},disabled:Boolean,title:String,requestApi:{type:i.definePropType(Function)},initParam:i.definePropType([String,Number,Object]),labelKey:{type:String,default:"name"}},s={"update:modelValue":e=>o.isString(e)||o.isNumber(e)||o.isNull(e),"update:label":e=>o.isString(e)||o.isNull(e),change:(e,l)=>!0},d=e.defineComponent({name:"FaInputDialogPage",props:r,emits:s,slots:i.makeSlots(),setup(r,{attrs:s,slots:d,emit:c,expose:p}){const g=u.useVModel(r,"modelValue",c,{passive:!0}),f=u.useVModel(r,"label",c,{passive:!0}),v=e.reactive({selectionRow:i.withDefineType()}),m=e.ref(),w=e.ref(),b=()=>{g.value=null,f.value=null,c("change",null)},y=()=>{m.value.open(()=>{if(v.selectionRow){w.value.selectedListIds.includes(o.isFunction(r.rowKey)?r.rowKey(v.selectionRow):v.selectionRow[r.rowKey])||w.value.toggleRowSelection(v.selectionRow)}})},S=()=>{m.value.close(()=>{if(w.value.selected){const e=w.value.selectedList[0];g.value=o.isFunction(r.rowKey)?r.rowKey(e):e[r.rowKey],f.value=e[r.labelKey],c("change",e,g.value)}else g.value=null,f.value=null,c("change",null,null)})},h=e=>{w.value.clearSelection(),w.value.toggleRowSelection(e),v.selectionRow=e,S()};return i.useRender(()=>e.createVNode("div",{class:"fa-input-dialog-page"},[e.createVNode(l.ElInput,{modelValue:f.value,"onUpdate:modelValue":e=>f.value=e,placeholder:r.placeholder,disabled:r.disabled,readonly:!0},{append:()=>e.createVNode(l.ElButtonGroup,null,{default:()=>[e.createVNode(l.ElButton,{disabled:r.disabled,icon:t.Delete,onClick:b},null),e.createVNode(l.ElButton,{disabled:r.disabled,icon:t.Search,onClick:y},null)]})}),e.createVNode(n.FaDialog,{ref:m,style:"--height: 70%;",width:"50%",title:r.title,fullHeight:!0,disabledConfirmButton:!w.value?.selected,onConfirmClick:S},{default:()=>[e.createVNode(a.FaTable,{ref:w,rowKey:r.rowKey,requestApi:r.requestApi,initParam:r.initParam,single:!0,rowClickSelection:!0,hideSearchTime:!0,onRowDblclick:h},{default:()=>d.default&&d.default()})]})])),i.useExpose(p,{selectionRow:e.computed(()=>v.selectionRow),open:y,clear:b})}});exports.default=d,exports.faInputDialogPageEmits=s,exports.faInputDialogPageProps=r;
|
|
2
2
|
//# sourceMappingURL=inputDialogPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inputDialogPage.js","sources":["../../../../../packages/components/inputDialogPage/src/inputDialogPage.tsx"],"sourcesContent":["import { computed, defineComponent, reactive, ref } from \"vue\";\nimport { ElButton, ElButtonGroup, ElInput } from \"element-plus\";\nimport { Delete, Search } from \"@element-plus/icons-vue\";\nimport { definePropType, makeSlots, useExpose, useRender, withDefineType } from \"@fast-china/utils\";\nimport { isFunction, isNull, isNumber, isString } from \"lodash-unified\";\nimport type { TableProps } from \"element-plus\";\nimport type { PropType } from \"vue\";\nimport { FaTable, type FaTableInstance, type PagedInput, type PagedResult } from \"@fast-element-plus/components/table\";\nimport { useVModel } from \"@vueuse/core\";\nimport FaDialog, { FaDialogInstance } from \"@fast-element-plus/components/dialog\";\n\nexport const faInputDialogPageProps = {\n\t/** @description key of row data, used for optimizing rendering. Required if `reserve-selection` is on or display tree data. When its type is String, multi-level access is supported, e.g. `user.info.id`, but `user.info[0].id` is not supported, in which case `Function` should be used */\n\trowKey: {\n\t\ttype: [String, Function] as PropType<TableProps<any>[\"rowKey\"]>,\n\t\tdefault: \"id\",\n\t},\n\t/** @description v-model绑定值 */\n\tmodelValue: [String, Number],\n\t/** @description v-model:label绑定值 */\n\tlabel: String,\n\t/** @description 输入框占位文本 */\n\tplaceholder: {\n\t\ttype: String,\n\t\tdefault: \"请选择\",\n\t},\n\t/** @description 禁用 */\n\tdisabled: Boolean,\n\t/** @description 标题 */\n\ttitle: String,\n\t/** @description 请求api */\n\trequestApi: {\n\t\ttype: definePropType<(params?: PagedInput) => Promise<PagedResult | any[]>>(Function),\n\t},\n\t/** 初始化参数 */\n\tinitParam: definePropType<string | number | any>([String, Number, Object]),\n\t/** @description 显示文本 Key */\n\tlabelKey: {\n\t\ttype: String,\n\t\tdefault: \"name\",\n\t},\n};\n\nexport const faInputDialogPageEmits = {\n\t/** @description v-model 回调 */\n\t\"update:modelValue\": (value: string | number) => isString(value) || isNumber(value) || isNull(value),\n\t/** @description v-model:label 回调 */\n\t\"update:label\": (value: string) => isString(value) || isNull(value),\n\t/** @description 改变 */\n\tchange: (
|
|
1
|
+
{"version":3,"file":"inputDialogPage.js","sources":["../../../../../packages/components/inputDialogPage/src/inputDialogPage.tsx"],"sourcesContent":["import { computed, defineComponent, reactive, ref } from \"vue\";\nimport { ElButton, ElButtonGroup, ElInput } from \"element-plus\";\nimport { Delete, Search } from \"@element-plus/icons-vue\";\nimport { definePropType, makeSlots, useExpose, useRender, withDefineType } from \"@fast-china/utils\";\nimport { isFunction, isNull, isNumber, isString } from \"lodash-unified\";\nimport type { TableProps } from \"element-plus\";\nimport type { PropType } from \"vue\";\nimport { FaTable, type FaTableInstance, type PagedInput, type PagedResult } from \"@fast-element-plus/components/table\";\nimport { useVModel } from \"@vueuse/core\";\nimport FaDialog, { FaDialogInstance } from \"@fast-element-plus/components/dialog\";\nimport { ElSelectorOutput } from \"@fast-element-plus/components/select/src/select.type\";\n\nexport const faInputDialogPageProps = {\n\t/** @description key of row data, used for optimizing rendering. Required if `reserve-selection` is on or display tree data. When its type is String, multi-level access is supported, e.g. `user.info.id`, but `user.info[0].id` is not supported, in which case `Function` should be used */\n\trowKey: {\n\t\ttype: [String, Function] as PropType<TableProps<any>[\"rowKey\"]>,\n\t\tdefault: \"id\",\n\t},\n\t/** @description v-model绑定值 */\n\tmodelValue: [String, Number],\n\t/** @description v-model:label绑定值 */\n\tlabel: String,\n\t/** @description 输入框占位文本 */\n\tplaceholder: {\n\t\ttype: String,\n\t\tdefault: \"请选择\",\n\t},\n\t/** @description 禁用 */\n\tdisabled: Boolean,\n\t/** @description 标题 */\n\ttitle: String,\n\t/** @description 请求api */\n\trequestApi: {\n\t\ttype: definePropType<(params?: PagedInput) => Promise<PagedResult | any[]>>(Function),\n\t},\n\t/** 初始化参数 */\n\tinitParam: definePropType<string | number | any>([String, Number, Object]),\n\t/** @description 显示文本 Key */\n\tlabelKey: {\n\t\ttype: String,\n\t\tdefault: \"name\",\n\t},\n};\n\nexport const faInputDialogPageEmits = {\n\t/** @description v-model 回调 */\n\t\"update:modelValue\": (value: string | number) => isString(value) || isNumber(value) || isNull(value),\n\t/** @description v-model:label 回调 */\n\t\"update:label\": (value: string) => isString(value) || isNull(value),\n\t/** @description 改变 */\n\tchange: (\n\t\tdata: ElSelectorOutput | ElSelectorOutput[] | any | any[],\n\t\tvalue?: string | number | boolean | object | (string | number | boolean | object)[]\n\t): boolean => true,\n};\n\ntype FaInputDialogPageSlots = {\n\t/** @description 默认内容插槽 */\n\tdefault: never;\n};\n\nexport default defineComponent({\n\tname: \"FaInputDialogPage\",\n\tprops: faInputDialogPageProps,\n\temits: faInputDialogPageEmits,\n\tslots: makeSlots<FaInputDialogPageSlots>(),\n\tsetup(props, { attrs, slots, emit, expose }) {\n\t\tconst modelValue = useVModel(props, \"modelValue\", emit, { passive: true });\n\t\tconst selectedLabel = useVModel(props, \"label\", emit, { passive: true });\n\n\t\tconst state = reactive({\n\t\t\tselectionRow: withDefineType<unknown>(),\n\t\t});\n\n\t\tconst faDialogRef = ref<FaDialogInstance>();\n\t\tconst faTableRef = ref<FaTableInstance>();\n\n\t\tconst handleDeleteClick = (): void => {\n\t\t\tmodelValue.value = null;\n\t\t\tselectedLabel.value = null;\n\t\t\temit(\"change\", null);\n\t\t};\n\n\t\tconst handleSearchClick = (): void => {\n\t\t\tfaDialogRef.value.open(() => {\n\t\t\t\tif (state.selectionRow) {\n\t\t\t\t\t// 判断当前行是否选中\n\t\t\t\t\tconst rowSelected = faTableRef.value.selectedListIds.includes(\n\t\t\t\t\t\tisFunction(props.rowKey) ? props.rowKey(state.selectionRow) : state.selectionRow[props.rowKey]\n\t\t\t\t\t);\n\t\t\t\t\tif (!rowSelected) {\n\t\t\t\t\t\tfaTableRef.value.toggleRowSelection(state.selectionRow);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\tconst handleConfirmClick = (): void => {\n\t\t\tfaDialogRef.value.close(() => {\n\t\t\t\tif (faTableRef.value.selected) {\n\t\t\t\t\tconst selectedData = faTableRef.value.selectedList[0];\n\t\t\t\t\tmodelValue.value = isFunction(props.rowKey) ? props.rowKey(selectedData) : selectedData[props.rowKey];\n\t\t\t\t\tselectedLabel.value = selectedData[props.labelKey];\n\t\t\t\t\temit(\"change\", selectedData, modelValue.value);\n\t\t\t\t} else {\n\t\t\t\t\tmodelValue.value = null;\n\t\t\t\t\tselectedLabel.value = null;\n\t\t\t\t\temit(\"change\", null, null);\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\tconst handleTableRowDblclick = (row: any): void => {\n\t\t\tfaTableRef.value.clearSelection();\n\t\t\tfaTableRef.value.toggleRowSelection(row);\n\t\t\tstate.selectionRow = row;\n\t\t\thandleConfirmClick();\n\t\t};\n\n\t\tuseRender(() => (\n\t\t\t<div class=\"fa-input-dialog-page\">\n\t\t\t\t<ElInput vModel={selectedLabel.value} placeholder={props.placeholder} disabled={props.disabled} readonly>\n\t\t\t\t\t{{\n\t\t\t\t\t\tappend: () => (\n\t\t\t\t\t\t\t<ElButtonGroup>\n\t\t\t\t\t\t\t\t<ElButton disabled={props.disabled} icon={Delete} onClick={handleDeleteClick} />\n\t\t\t\t\t\t\t\t<ElButton disabled={props.disabled} icon={Search} onClick={handleSearchClick} />\n\t\t\t\t\t\t\t</ElButtonGroup>\n\t\t\t\t\t\t),\n\t\t\t\t\t}}\n\t\t\t\t</ElInput>\n\t\t\t\t<FaDialog\n\t\t\t\t\tref={faDialogRef}\n\t\t\t\t\tstyle=\"--height: 70%;\"\n\t\t\t\t\twidth=\"50%\"\n\t\t\t\t\ttitle={props.title}\n\t\t\t\t\tfullHeight\n\t\t\t\t\tdisabledConfirmButton={!faTableRef.value?.selected}\n\t\t\t\t\tonConfirmClick={handleConfirmClick}\n\t\t\t\t>\n\t\t\t\t\t<FaTable\n\t\t\t\t\t\tref={faTableRef}\n\t\t\t\t\t\trowKey={props.rowKey}\n\t\t\t\t\t\trequestApi={props.requestApi}\n\t\t\t\t\t\tinitParam={props.initParam}\n\t\t\t\t\t\tsingle\n\t\t\t\t\t\trowClickSelection\n\t\t\t\t\t\thideSearchTime\n\t\t\t\t\t\tonRowDblclick={handleTableRowDblclick}\n\t\t\t\t\t>\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\tdefault: () => slots.default && slots.default(),\n\t\t\t\t\t\t}}\n\t\t\t\t\t</FaTable>\n\t\t\t\t</FaDialog>\n\t\t\t</div>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** @description 选择行数据 */\n\t\t\tselectionRow: computed(() => state.selectionRow),\n\t\t\t/** @description 打开选择器弹窗 */\n\t\t\topen: handleSearchClick,\n\t\t\t/** @description 清除选择 */\n\t\t\tclear: handleDeleteClick,\n\t\t});\n\t},\n});\n"],"names":["faInputDialogPageProps","rowKey","type","String","Function","default","modelValue","Number","label","placeholder","disabled","Boolean","title","requestApi","definePropType","initParam","Object","labelKey","faInputDialogPageEmits","value","isString","isNumber","isNull","change","data","InputDialogPage","name","props","emits","slots","makeSlots","setup","attrs","emit","expose","useVModel","passive","selectedLabel","state","reactive","selectionRow","withDefineType","faDialogRef","ref","faTableRef","handleDeleteClick","handleSearchClick","open","selectedListIds","includes","isFunction","toggleRowSelection","handleConfirmClick","close","selected","selectedData","selectedList","handleTableRowDblclick","row","clearSelection","useRender","_createVNode","class","ElInput","$event","readonly","append","ElButtonGroup","ElButton","icon","Delete","onClick","Search","FaDialog","style","width","fullHeight","disabledConfirmButton","onConfirmClick","FaTable","single","rowClickSelection","hideSearchTime","onRowDblclick","useExpose","computed","clear"],"mappings":"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"}
|
|
@@ -1180,6 +1180,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
1180
1180
|
width: string | number;
|
|
1181
1181
|
persistent: boolean;
|
|
1182
1182
|
fallbackPlacements: Placement[];
|
|
1183
|
+
filterable: boolean;
|
|
1183
1184
|
moreDetail: boolean;
|
|
1184
1185
|
loadingText: string;
|
|
1185
1186
|
noMatchText: string;
|
|
@@ -1189,7 +1190,6 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
1189
1190
|
defaultSelected: boolean;
|
|
1190
1191
|
valueOnClear: import('element-plus/es/utils/index.mjs').EpPropMergeType<(new (...args: any[]) => string | number | boolean | Function) | (() => string | number | boolean | Function | null) | ((new (...args: any[]) => string | number | boolean | Function) | (() => string | number | boolean | Function | null))[], unknown, unknown>;
|
|
1191
1192
|
automaticDropdown: boolean;
|
|
1192
|
-
filterable: boolean;
|
|
1193
1193
|
allowCreate: boolean;
|
|
1194
1194
|
remote: boolean;
|
|
1195
1195
|
multiple: boolean;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),l=require("element-plus"),a=require("@element-plus/icons-vue"),t=require("@fast-china/utils"),o=require("@vueuse/core"),r=require("lodash-unified"),i=require("./selectOption.js"),n={name:String,id:String,modelValue:{type:[Array,String,Number,Boolean,Object],default:void 0},autocomplete:{type:String,default:"off"},automaticDropdown:Boolean,size:l.useSizeProp,effect:{type:t.definePropType(String),default:"light"},disabled:Boolean,clearable:Boolean,filterable:Boolean,allowCreate:Boolean,loading:Boolean,popperClass:{type:String,default:""},popperOptions:{type:t.definePropType(Object),default:()=>({})},remote:Boolean,loadingText:String,noMatchText:String,noDataText:String,remoteMethod:Function,filterMethod:Function,multiple:Boolean,multipleLimit:{type:Number,default:0},placeholder:{type:String},defaultFirstOption:Boolean,reserveKeyword:{type:Boolean,default:!0},valueKey:{type:String,default:"value"},collapseTags:Boolean,collapseTagsTooltip:Boolean,maxCollapseTags:{type:Number,default:1},teleported:l.useTooltipContentProps.teleported,persistent:{type:Boolean,default:!0},clearIcon:{type:t.definePropType([String,Object,Function]),default:a.CircleClose},fitInputWidth:Boolean,suffixIcon:{type:t.definePropType([String,Object,Function]),default:a.ArrowDown},tagType:{...l.tagProps.type,default:"info"},tagEffect:{...l.tagProps.effect,default:"light"},validateEvent:{type:Boolean,default:!0},remoteShowSuffix:Boolean,placement:{type:t.definePropType(String),default:"bottom-start"},fallbackPlacements:{type:t.definePropType(Array),default:["bottom-start","top-start","right","left"]},...l.useEmptyValuesProps,...l.useAriaProps(["ariaLabel"])},u={...n,disabled:{type:Boolean,default:void 0},loadingText:{type:String,default:"加载中..."},noMatchText:{type:String,default:"暂无匹配的数据"},noDataText:{type:String,default:"暂无数据"},collapseTags:{type:Boolean,default:!0},collapseTagsTooltip:{type:Boolean,default:!0},modelValue:{type:t.definePropType([String,Number,Boolean,Object,Array]),default:void 0},label:t.definePropType([String,Array]),width:{type:[String,Number],default:"100%"},moreDetail:Boolean,lazy:{type:Boolean,default:!0},defaultSelected:Boolean,props:{type:t.definePropType(Object),default:()=>({label:"label",hide:"hide",disabled:"disabled",children:"children"})},data:{type:t.definePropType(Array),default:()=>[]},requestApi:{type:t.definePropType(Function)},initParam:t.definePropType([String,Number,Object])},d={...l.selectEmits,"update:modelValue":e=>r.isString(e)||r.isNumber(e)||r.isBoolean(e)||r.isObject(e)||r.isArray(e)||r.isNull(e),"update:label":e=>r.isString(e)||r.isArray(e)||r.isNull(e),dataChangeCallBack:e=>r.isArray(e),change:(e,l)=>!0},s=e.defineComponent({name:"FaSelect",props:u,emits:d,slots:t.makeSlots(),setup(a,{attrs:u,slots:d,emit:s,expose:p}){const c=o.useVModel(a,"label",s),f=l.useGlobalSize(),m=e.reactive({value:t.withDefineType(),loading:!1,selectorData:t.withDefineType([]),debut:!0,echo:!(a.data?.length>0),nextRefresh:!1}),y=e.ref(),g=e=>e?.map(e=>({...e,value:e[a.valueKey],label:r.isFunction(a.props.label)?a.props.label(e):e[a.props.label??"label"],hide:r.isFunction(a.props.hide)?a.props.hide(e):e[a.props.hide??"hide"],disabled:r.isFunction(a.props.disabled)?a.props.disabled(e):e[a.props.disabled??"disabled"],children:r.isFunction(a.props.children)?g(a.props.children(e)):g(e[a.props.children??"children"])})).filter(e=>!e.hide),b=async()=>{if(a.requestApi){m.loading=!0;const l=a.initParam??{};try{const e=await a.requestApi(l);m.echo=!1,m.selectorData=g(e),s("dataChangeCallBack",m.selectorData)}catch(e){t.consoleError("FaSelect",e),m.selectorData=[]}finally{m.loading=!1}}else m.echo=!1,m.selectorData=g(a.data)},h=e=>{if(a.multiple){const l=e;if(0===l?.length)return m.value=null,c.value=null,s("update:modelValue",null),void s("change",null,null);const a=m.selectorData.filter(e=>l.includes(e.value));m.value=e,c.value=a.map(e=>e.label),s("update:modelValue",e),s("change",a,e)}else{if(r.isNil(e))return m.value=null,c.value=null,s("update:modelValue",null),void s("change",null,null);const l=m.selectorData.find(l=>l.value===e);m.value=e,c.value=l.label,s("update:modelValue",e),s("change",l,e)}},v=()=>{m.value=null,c.value=null,s("update:modelValue",null),s("clear")},S=async e=>{e&&(m.debut?(m.debut=!1,!a.defaultSelected&&a.lazy&&await b()):m.nextRefresh&&(m.nextRefresh=!1,await b())),s("visible-change",e)};e.watch(()=>a.modelValue,e=>{if(m.echo&&!r.isNil(e)){const l=!r.isNil(a.label);if(a.multiple){if(!r.isArray(e))return void t.consoleError("FaSelect","当启用 multiple 时,传入的 modelValue 必须是Array。");if(l&&!r.isArray(a.label))return void t.consoleError("FaSelect","当启用 multiple 时,传入的 modelValue:label 必须是Array。");m.selectorData=e.slice(0,a.multipleLimit>0?a.multipleLimit:e.length).map((e,t)=>({value:e,label:l?a.label[t]:void 0}))}else{if(r.isArray(e))return void t.consoleError("FaSelect","当禁用 multiple 时,传入的 modelValue 不能是Array。");if(l&&r.isArray(a.label))return void t.consoleError("FaSelect","当禁用 multiple 时,传入的 modelValue:label 不能是Array。");m.selectorData=[{value:e,label:a.label}]}}m.value=e},{immediate:!0}),e.onMounted(async()=>{a.defaultSelected?(await b(),m.selectorData.length>0&&h(a.multiple?[m.selectorData[0].value]:m.selectorData[0].value)):!a.requestApi&&a.data?.length>0?(m.debut=!1,await b()):a.lazy||await b(),e.watch(()=>a.initParam,(e,l)=>{r.isEqual(e,l)||(m.nextRefresh=!0,r.isNil(m.value)||h())}),e.watch(()=>a.data,async()=>{a.requestApi||await b()},{deep:!0})});const T=t.useProps(a,n,["modelValue","popperClass","loading"]),B=t.useEmits(l.selectEmits,s,["update:modelValue","change","clear","visible-change"]),P=e.computed(()=>{let e=`fa-select-dropdown ${a.popperClass}`;return a.moreDetail&&(e+=` fa-select-dropdown__more-detail fa-select-dropdown__more-detail-${f.value}`),e});return t.useRender(()=>e.createVNode(l.ElSelect,e.mergeProps(T.value,B.value,{ref:y,class:"fa-select",popperClass:P.value,style:{width:t.addUnit(a.width)},modelValue:m.value,"onUpdate:modelValue":e=>m.value=e,loading:m.loading,onChange:h,onClear:v,onVisibleChange:S}),{default:()=>m.selectorData.map(l=>e.createVNode(i.default,{data:l,moreDetail:a.moreDetail},{default:d.default})),...d.header&&{header:()=>d.header()},...d.footer&&{footer:()=>d.footer()},...d.prefix&&{prefix:()=>d.prefix()},...d.empty&&{empty:()=>d.empty()},...d.tag&&{tag:()=>d.tag()},...d.loading&&{loading:()=>d.loading()},...d.label&&{label:({label:e,value:l})=>d.label({label:e,value:l})}})),t.useExpose(p,{focus:e.computed(()=>y.value?.focus),blur:e.computed(()=>y.value?.blur),selectedLabel:e.computed(()=>y.value?.selectedLabel),loading:e.computed(()=>m.loading),refresh:b,setSelection:e=>h(e),clearSelection:()=>h(null)})}});exports.SelectProps=n,exports.default=s,exports.faSelectEmits=d,exports.faSelectProps=u;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),l=require("element-plus"),a=require("@element-plus/icons-vue"),t=require("@fast-china/utils"),o=require("@vueuse/core"),r=require("lodash-unified"),i=require("./selectOption.js"),n={name:String,id:String,modelValue:{type:[Array,String,Number,Boolean,Object],default:void 0},autocomplete:{type:String,default:"off"},automaticDropdown:Boolean,size:l.useSizeProp,effect:{type:t.definePropType(String),default:"light"},disabled:Boolean,clearable:Boolean,filterable:Boolean,allowCreate:Boolean,loading:Boolean,popperClass:{type:String,default:""},popperOptions:{type:t.definePropType(Object),default:()=>({})},remote:Boolean,loadingText:String,noMatchText:String,noDataText:String,remoteMethod:Function,filterMethod:Function,multiple:Boolean,multipleLimit:{type:Number,default:0},placeholder:{type:String},defaultFirstOption:Boolean,reserveKeyword:{type:Boolean,default:!0},valueKey:{type:String,default:"value"},collapseTags:Boolean,collapseTagsTooltip:Boolean,maxCollapseTags:{type:Number,default:1},teleported:l.useTooltipContentProps.teleported,persistent:{type:Boolean,default:!0},clearIcon:{type:t.definePropType([String,Object,Function]),default:a.CircleClose},fitInputWidth:Boolean,suffixIcon:{type:t.definePropType([String,Object,Function]),default:a.ArrowDown},tagType:{...l.tagProps.type,default:"info"},tagEffect:{...l.tagProps.effect,default:"light"},validateEvent:{type:Boolean,default:!0},remoteShowSuffix:Boolean,placement:{type:t.definePropType(String),default:"bottom-start"},fallbackPlacements:{type:t.definePropType(Array),default:["bottom-start","top-start","right","left"]},...l.useEmptyValuesProps,...l.useAriaProps(["ariaLabel"])},u={...n,disabled:{type:Boolean,default:void 0},loadingText:{type:String,default:"加载中..."},noMatchText:{type:String,default:"暂无匹配的数据"},noDataText:{type:String,default:"暂无数据"},collapseTags:{type:Boolean,default:!0},collapseTagsTooltip:{type:Boolean,default:!0},modelValue:{type:t.definePropType([String,Number,Boolean,Object,Array]),default:void 0},label:t.definePropType([String,Array]),width:{type:[String,Number],default:"100%"},moreDetail:Boolean,lazy:{type:Boolean,default:!0},defaultSelected:Boolean,props:{type:t.definePropType(Object),default:()=>({label:"label",hide:"hide",disabled:"disabled",children:"children"})},data:{type:t.definePropType(Array),default:()=>[]},requestApi:{type:t.definePropType(Function)},initParam:t.definePropType([String,Number,Object])},d={...l.selectEmits,"update:modelValue":e=>r.isString(e)||r.isNumber(e)||r.isBoolean(e)||r.isObject(e)||r.isArray(e)||r.isNull(e),"update:label":e=>r.isString(e)||r.isArray(e)||r.isNull(e),dataChangeCallBack:e=>r.isArray(e),change:(e,l)=>!0},s=e.defineComponent({name:"FaSelect",props:u,emits:d,slots:t.makeSlots(),setup(a,{attrs:u,slots:d,emit:s,expose:p}){const c=o.useVModel(a,"label",s,{passive:!0}),f=l.useGlobalSize(),m=e.reactive({value:t.withDefineType(),loading:!1,selectorData:t.withDefineType([]),debut:!0,echo:!(a.data?.length>0),nextRefresh:!1}),y=e.ref(),g=e=>e?.map(e=>({...e,value:e[a.valueKey],label:r.isFunction(a.props.label)?a.props.label(e):e[a.props.label??"label"],hide:r.isFunction(a.props.hide)?a.props.hide(e):e[a.props.hide??"hide"],disabled:r.isFunction(a.props.disabled)?a.props.disabled(e):e[a.props.disabled??"disabled"],children:r.isFunction(a.props.children)?g(a.props.children(e)):g(e[a.props.children??"children"])})).filter(e=>!e.hide),b=async()=>{if(a.requestApi){m.loading=!0;const l=a.initParam??{};try{const e=await a.requestApi(l);m.echo=!1,m.selectorData=g(e),s("dataChangeCallBack",m.selectorData)}catch(e){t.consoleError("FaSelect",e),m.selectorData=[]}finally{m.loading=!1}}else m.echo=!1,m.selectorData=g(a.data)},h=e=>{if(a.multiple){const l=e;if(0===l?.length)return m.value=null,c.value=null,s("update:modelValue",null),void s("change",null,null);const a=m.selectorData.filter(e=>l.includes(e.value));m.value=e,c.value=a.map(e=>e.label),s("update:modelValue",e),s("change",a,e)}else{if(r.isNil(e))return m.value=null,c.value=null,s("update:modelValue",null),void s("change",null,null);const l=m.selectorData.find(l=>l.value===e);m.value=e,c.value=l.label,s("update:modelValue",e),s("change",l,e)}},v=()=>{m.value=null,c.value=null,s("update:modelValue",null),s("clear")},S=async e=>{e&&(m.debut?(m.debut=!1,!a.defaultSelected&&a.lazy&&await b()):m.nextRefresh&&(m.nextRefresh=!1,await b())),s("visible-change",e)};e.watch(()=>a.modelValue,e=>{if(m.echo&&!r.isNil(e)){const l=!r.isNil(a.label);if(a.multiple){if(!r.isArray(e))return void t.consoleError("FaSelect","当启用 multiple 时,传入的 modelValue 必须是Array。");if(l&&!r.isArray(a.label))return void t.consoleError("FaSelect","当启用 multiple 时,传入的 modelValue:label 必须是Array。");m.selectorData=e.slice(0,a.multipleLimit>0?a.multipleLimit:e.length).map((e,t)=>({value:e,label:l?a.label[t]:void 0}))}else{if(r.isArray(e))return void t.consoleError("FaSelect","当禁用 multiple 时,传入的 modelValue 不能是Array。");if(l&&r.isArray(a.label))return void t.consoleError("FaSelect","当禁用 multiple 时,传入的 modelValue:label 不能是Array。");m.selectorData=[{value:e,label:a.label}]}}m.value=e},{immediate:!0}),e.onMounted(async()=>{a.defaultSelected?(await b(),m.selectorData.length>0&&h(a.multiple?[m.selectorData[0].value]:m.selectorData[0].value)):!a.requestApi&&a.data?.length>0?(m.debut=!1,await b()):a.lazy||await b(),e.watch(()=>a.initParam,(e,l)=>{r.isEqual(e,l)||(m.nextRefresh=!0,r.isNil(m.value)||h())}),e.watch(()=>a.data,async()=>{a.requestApi||await b()},{deep:!0})});const T=t.useProps(a,n,["modelValue","popperClass","loading"]),B=t.useEmits(l.selectEmits,s,["update:modelValue","change","clear","visible-change"]),P=e.computed(()=>{let e=`fa-select-dropdown ${a.popperClass}`;return a.moreDetail&&(e+=` fa-select-dropdown__more-detail fa-select-dropdown__more-detail-${f.value}`),e});return t.useRender(()=>e.createVNode(l.ElSelect,e.mergeProps(T.value,B.value,{ref:y,class:"fa-select",popperClass:P.value,style:{width:t.addUnit(a.width)},modelValue:m.value,"onUpdate:modelValue":e=>m.value=e,loading:m.loading,onChange:h,onClear:v,onVisibleChange:S}),{default:()=>m.selectorData.map(l=>e.createVNode(i.default,{data:l,moreDetail:a.moreDetail},{default:d.default})),...d.header&&{header:()=>d.header()},...d.footer&&{footer:()=>d.footer()},...d.prefix&&{prefix:()=>d.prefix()},...d.empty&&{empty:()=>d.empty()},...d.tag&&{tag:()=>d.tag()},...d.loading&&{loading:()=>d.loading()},...d.label&&{label:({label:e,value:l})=>d.label({label:e,value:l})}})),t.useExpose(p,{focus:e.computed(()=>y.value?.focus),blur:e.computed(()=>y.value?.blur),selectedLabel:e.computed(()=>y.value?.selectedLabel),loading:e.computed(()=>m.loading),refresh:b,setSelection:e=>h(e),clearSelection:()=>h(null)})}});exports.SelectProps=n,exports.default=s,exports.faSelectEmits=d,exports.faSelectProps=u;
|
|
2
2
|
//# sourceMappingURL=select.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.js","sources":["../../../../../packages/components/select/src/select.tsx"],"sourcesContent":["import { computed, defineComponent, onMounted, reactive, ref, watch } from \"vue\";\nimport { ElSelect, selectEmits, tagProps, useAriaProps, useEmptyValuesProps, useGlobalSize, useSizeProp, useTooltipContentProps } from \"element-plus\";\nimport { ArrowDown, CircleClose } from \"@element-plus/icons-vue\";\nimport { addUnit, consoleError, definePropType, makeSlots, useEmits, useExpose, useProps, useRender, withDefineType } from \"@fast-china/utils\";\nimport { useVModel } from \"@vueuse/core\";\nimport { isArray, isBoolean, isEqual, isFunction, isNil, isNull, isNumber, isObject, isString } from \"lodash-unified\";\nimport FaSelectOption from \"./selectOption\";\nimport type { ElSelectorOutput } from \"./select.type\";\nimport type { Options, Placement, PopperEffect } from \"element-plus\";\nimport type { Component, VNode } from \"vue\";\n\nexport const SelectProps = {\n\t/**\n\t * @description the name attribute of select input\n\t */\n\tname: String,\n\t/**\n\t * @description native input id\n\t */\n\tid: String,\n\t/**\n\t * @description binding value\n\t */\n\tmodelValue: {\n\t\ttype: [Array, String, Number, Boolean, Object],\n\t\tdefault: undefined,\n\t},\n\t/**\n\t * @description the autocomplete attribute of select input\n\t */\n\tautocomplete: {\n\t\ttype: String,\n\t\tdefault: \"off\",\n\t},\n\t/**\n\t * @description for non-filterable Select, this prop decides if the option menu pops up when the input is focused\n\t */\n\tautomaticDropdown: Boolean,\n\t/**\n\t * @description size of Input\n\t */\n\tsize: useSizeProp,\n\t/**\n\t * @description tooltip theme, built-in theme: `dark` / `light`\n\t */\n\teffect: {\n\t\ttype: definePropType<PopperEffect | string>(String),\n\t\tdefault: \"light\",\n\t},\n\t/**\n\t * @description whether Select is disabled\n\t */\n\tdisabled: Boolean,\n\t/**\n\t * @description whether select can be cleared\n\t */\n\tclearable: Boolean,\n\t/**\n\t * @description whether Select is filterable\n\t */\n\tfilterable: Boolean,\n\t/**\n\t * @description whether creating new items is allowed. To use this, `filterable` must be true\n\t */\n\tallowCreate: Boolean,\n\t/**\n\t * @description whether Select is loading data from server\n\t */\n\tloading: Boolean,\n\t/**\n\t * @description custom class name for Select's dropdown\n\t */\n\tpopperClass: {\n\t\ttype: String,\n\t\tdefault: \"\",\n\t},\n\t/**\n\t * @description [popper.js](https://popper.js.org/docs/v2/) parameters\n\t */\n\tpopperOptions: {\n\t\ttype: definePropType<Partial<Options>>(Object),\n\t\tdefault: (): Partial<Options> => ({}),\n\t},\n\t/**\n\t * @description whether options are loaded from server\n\t */\n\tremote: Boolean,\n\t/**\n\t * @description displayed text while loading data from server, default is 'Loading'\n\t */\n\tloadingText: String,\n\t/**\n\t * @description displayed text when no data matches the filtering query, you can also use slot `empty`, default is 'No matching data'\n\t */\n\tnoMatchText: String,\n\t/**\n\t * @description displayed text when there is no options, you can also use slot `empty`, default is 'No data'\n\t */\n\tnoDataText: String,\n\t/**\n\t * @description custom remote search method\n\t */\n\tremoteMethod: Function,\n\t/**\n\t * @description custom filter method\n\t */\n\tfilterMethod: Function,\n\t/**\n\t * @description whether multiple-select is activated\n\t */\n\tmultiple: Boolean,\n\t/**\n\t * @description maximum number of options user can select when `multiple` is `true`. No limit when set to 0\n\t */\n\tmultipleLimit: {\n\t\ttype: Number,\n\t\tdefault: 0,\n\t},\n\t/**\n\t * @description placeholder, default is 'Select'\n\t */\n\tplaceholder: {\n\t\ttype: String,\n\t},\n\t/**\n\t * @description select first matching option on enter key. Use with `filterable` or `remote`\n\t */\n\tdefaultFirstOption: Boolean,\n\t/**\n\t * @description when `multiple` and `filter` is true, whether to reserve current keyword after selecting an option\n\t */\n\treserveKeyword: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/**\n\t * @description unique identity key name for value, required when value is an object\n\t */\n\tvalueKey: {\n\t\ttype: String,\n\t\tdefault: \"value\",\n\t},\n\t/**\n\t * @description whether to collapse tags to a text when multiple selecting\n\t */\n\tcollapseTags: Boolean,\n\t/**\n\t * @description whether show all selected tags when mouse hover text of collapse-tags. To use this, `collapse-tags` must be true\n\t */\n\tcollapseTagsTooltip: Boolean,\n\t/**\n\t * @description the max tags number to be shown. To use this, `collapse-tags` must be true\n\t */\n\tmaxCollapseTags: {\n\t\ttype: Number,\n\t\tdefault: 1,\n\t},\n\t/**\n\t * @description whether select dropdown is teleported to the body\n\t */\n\tteleported: useTooltipContentProps.teleported,\n\t/**\n\t * @description when select dropdown is inactive and `persistent` is `false`, select dropdown will be destroyed\n\t */\n\tpersistent: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/**\n\t * @description custom clear icon component\n\t */\n\tclearIcon: {\n\t\ttype: definePropType<string | Component>([String, Object, Function]),\n\t\tdefault: CircleClose,\n\t},\n\t/**\n\t * @description whether the width of the dropdown is the same as the input\n\t */\n\tfitInputWidth: Boolean,\n\t/**\n\t * @description custom suffix icon component\n\t */\n\tsuffixIcon: {\n\t\ttype: definePropType<string | Component>([String, Object, Function]),\n\t\tdefault: ArrowDown,\n\t},\n\t/**\n\t * @description tag type\n\t */\n\n\ttagType: { ...tagProps.type, default: \"info\" },\n\t/**\n\t * @description tag effect\n\t */\n\ttagEffect: { ...tagProps.effect, default: \"light\" },\n\t/**\n\t * @description whether to trigger form validation\n\t */\n\tvalidateEvent: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/**\n\t * @description in remote search method show suffix icon\n\t */\n\tremoteShowSuffix: Boolean,\n\t/**\n\t * @description position of dropdown\n\t */\n\tplacement: {\n\t\ttype: definePropType<Placement>(String),\n\t\tdefault: \"bottom-start\",\n\t},\n\t/**\n\t * @description list of possible positions for dropdown\n\t */\n\tfallbackPlacements: {\n\t\ttype: definePropType<Placement[]>(Array),\n\t\tdefault: [\"bottom-start\", \"top-start\", \"right\", \"left\"],\n\t},\n\t...useEmptyValuesProps,\n\t...useAriaProps([\"ariaLabel\"]),\n};\n\nexport type SelectComponentProps = {\n\t/** @description 指定标签为节点的某个属性值 */\n\tlabel?: string | ((data: any) => string);\n\t/** @description 指定是否隐藏为节点的某个属性值 */\n\thide?: string | ((data: any) => boolean);\n\t/** @description 指定是否禁用为节点的某个属性值 */\n\tdisabled?: string | ((data: any) => boolean);\n\t/** @description 指定子节点对象为节点的某个属性值 */\n\tchildren?: string;\n};\n\nexport const faSelectProps = {\n\t...SelectProps,\n\t/** @description whether Select is disabled 重载使其支持 ElForm*/\n\tdisabled: {\n\t\ttype: Boolean,\n\t\tdefault: undefined,\n\t},\n\t/** @description displayed text while loading data from server, default is 'Loading' */\n\tloadingText: {\n\t\ttype: String,\n\t\tdefault: \"加载中...\",\n\t},\n\t/** @description displayed text when no data matches the filtering query, you can also use slot `empty`, default is 'No matching data' */\n\tnoMatchText: {\n\t\ttype: String,\n\t\tdefault: \"暂无匹配的数据\",\n\t},\n\t/** @description displayed text when there is no options, you can also use slot `empty`, default is 'No data' */\n\tnoDataText: {\n\t\ttype: String,\n\t\tdefault: \"暂无数据\",\n\t},\n\t/** @description whether to collapse tags to a text when multiple selecting */\n\tcollapseTags: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description whether show all selected tags when mouse hover text of collapse-tags. To use this, `collapse-tags` must be true */\n\tcollapseTagsTooltip: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description v-model绑定值 */\n\tmodelValue: {\n\t\ttype: definePropType<string | number | boolean | object | (string | number | boolean | object)[]>([String, Number, Boolean, Object, Array]),\n\t\tdefault: undefined,\n\t},\n\t/** @description v-model:label绑定值 */\n\tlabel: definePropType<string | string[]>([String, Array]),\n\t/** @description 宽度 */\n\twidth: {\n\t\ttype: [String, Number],\n\t\tdefault: \"100%\",\n\t},\n\t/** @description 更多细节,只有使用slot的时候有用 */\n\tmoreDetail: Boolean,\n\t/** @description 懒加载远程数据,默认 true。当下拉框第一次显示的时候才会加载远程数据*/\n\tlazy: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 默认选中。不能和懒加载一起使用 */\n\tdefaultSelected: Boolean,\n\t/** @description 配置选项 */\n\tprops: {\n\t\ttype: definePropType<SelectComponentProps>(Object),\n\t\tdefault: (): Partial<SelectComponentProps> => ({\n\t\t\tlabel: \"label\",\n\t\t\thide: \"hide\",\n\t\t\tdisabled: \"disabled\",\n\t\t\tchildren: \"children\",\n\t\t}),\n\t},\n\t/** @description 下拉框数据 */\n\tdata: {\n\t\ttype: definePropType<ElSelectorOutput[]>(Array),\n\t\tdefault: (): ElSelectorOutput[] => [],\n\t},\n\t/** @description 请求api */\n\trequestApi: {\n\t\ttype: definePropType<(params?: any) => Promise<ElSelectorOutput[]>>(Function),\n\t},\n\t/** 初始化参数 */\n\tinitParam: definePropType<string | number | any>([String, Number, Object]),\n};\n\nexport const faSelectEmits = {\n\t...selectEmits,\n\t/** @description v-model 回调 */\n\t\"update:modelValue\": (value: string | number | boolean | object | (string | number | boolean | object)[]): boolean =>\n\t\tisString(value) || isNumber(value) || isBoolean(value) || isObject(value) || isArray(value) || isNull(value),\n\t/** @description v-model:label 回调 */\n\t\"update:label\": (value: string | string[]): boolean => isString(value) || isArray(value) || isNull(value),\n\t/** @description 数据改变 */\n\tdataChangeCallBack: (data: ElSelectorOutput[] | any[]): boolean => isArray(data),\n\t/** @description 改变 */\n\tchange: (\n\t\tdata: ElSelectorOutput | ElSelectorOutput[] | any | any[],\n\t\tvalue?: string | number | boolean | object | (string | number | boolean | object)[]\n\t): boolean => true,\n};\n\ntype FaSelectSlots = {\n\t/** @description FaSelectOption 默认内容插槽 */\n\tdefault: ElSelectorOutput;\n\t/** @description 下拉列表顶部的内容 */\n\theader: never;\n\t/** @description 下拉列表底部的内容 */\n\tfooter: never;\n\t/** @description Select 组件头部内容 */\n\tprefix: never;\n\t/** @description 无选项时的列表 */\n\tempty: never;\n\t/** @description select 组件自定义标签内容 */\n\ttag: never;\n\t/** @description select 组件自定义 loading内容 */\n\tloading: never;\n\t/** @description select 组件自定义标签内容 */\n\tlabel: { label: string; value: string | number | boolean | object };\n};\n\nexport default defineComponent({\n\tname: \"FaSelect\",\n\tprops: faSelectProps,\n\temits: faSelectEmits,\n\tslots: makeSlots<FaSelectSlots>(),\n\tsetup(props, { attrs, slots, emit, expose }) {\n\t\tconst selectedLabel = useVModel(props, \"label\", emit);\n\t\tconst _globalSize = useGlobalSize();\n\n\t\tconst state = reactive({\n\t\t\tvalue: withDefineType<string | number | boolean | object | (string | number | boolean | object)[]>(),\n\t\t\tloading: false,\n\t\t\tselectorData: withDefineType<ElSelectorOutput[]>([]),\n\t\t\t/** 首次出现 */\n\t\t\tdebut: true,\n\t\t\t/** 回显 */\n\t\t\techo: props.data?.length > 0 ? false : true,\n\t\t\t/** 下次刷新 */\n\t\t\tnextRefresh: false,\n\t\t});\n\n\t\tconst selectRef = ref<InstanceType<typeof ElSelect>>();\n\n\t\tconst handleData = (data: ElSelectorOutput[]): ElSelectorOutput[] => {\n\t\t\treturn data\n\t\t\t\t?.map((m) => ({\n\t\t\t\t\t...m,\n\t\t\t\t\tvalue: m[props.valueKey],\n\t\t\t\t\tlabel: isFunction(props.props.label) ? props.props.label(m) : m[props.props.label ?? \"label\"],\n\t\t\t\t\thide: isFunction(props.props.hide) ? props.props.hide(m) : m[props.props.hide ?? \"hide\"],\n\t\t\t\t\tdisabled: isFunction(props.props.disabled) ? props.props.disabled(m) : m[props.props.disabled ?? \"disabled\"],\n\t\t\t\t\tchildren: isFunction(props.props.children)\n\t\t\t\t\t\t? handleData(props.props.children(m))\n\t\t\t\t\t\t: handleData(m[props.props.children ?? \"children\"]),\n\t\t\t\t}))\n\t\t\t\t.filter((f) => !f.hide);\n\t\t};\n\n\t\tconst loadData = async (): Promise<void> => {\n\t\t\t// 判断是否需要自动请求\n\t\t\tif (props.requestApi) {\n\t\t\t\tstate.loading = true;\n\t\t\t\tconst params = props.initParam ?? {};\n\t\t\t\ttry {\n\t\t\t\t\tconst resData = await props.requestApi(params);\n\t\t\t\t\t// 这里不允许回显了\n\t\t\t\t\tstate.echo = false;\n\t\t\t\t\tstate.selectorData = handleData(resData);\n\t\t\t\t\temit(\"dataChangeCallBack\", state.selectorData);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsoleError(\"FaSelect\", error);\n\t\t\t\t\tstate.selectorData = [];\n\t\t\t\t} finally {\n\t\t\t\t\tstate.loading = false;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// 这里不允许回显了\n\t\t\t\tstate.echo = false;\n\t\t\t\tstate.selectorData = handleData(props.data);\n\t\t\t}\n\t\t};\n\n\t\tconst handleChange = (value?: string | number | boolean | object | (string | number | boolean | object)[]): void => {\n\t\t\t// 判断是否为多选\n\t\t\tif (props.multiple) {\n\t\t\t\t// value 必然是数组\n\t\t\t\tconst valueArr = value as (string | number | boolean | object)[];\n\t\t\t\tif (valueArr?.length === 0) {\n\t\t\t\t\tstate.value = null;\n\t\t\t\t\tselectedLabel.value = null;\n\t\t\t\t\temit(\"update:modelValue\", null);\n\t\t\t\t\temit(\"change\", null, null);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst dataList = state.selectorData.filter((f) => valueArr.includes(f.value));\n\t\t\t\tstate.value = value;\n\t\t\t\tselectedLabel.value = dataList.map((m) => m.label);\n\t\t\t\temit(\"update:modelValue\", value);\n\t\t\t\temit(\"change\", dataList, value);\n\t\t\t} else {\n\t\t\t\t// value 必然不是数组\n\t\t\t\tif (isNil(value)) {\n\t\t\t\t\tstate.value = null;\n\t\t\t\t\tselectedLabel.value = null;\n\t\t\t\t\temit(\"update:modelValue\", null);\n\t\t\t\t\temit(\"change\", null, null);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst data = state.selectorData.find((f) => f.value === value);\n\t\t\t\tstate.value = value;\n\t\t\t\tselectedLabel.value = data.label;\n\t\t\t\temit(\"update:modelValue\", value);\n\t\t\t\temit(\"change\", data, value);\n\t\t\t}\n\t\t};\n\n\t\tconst handleClear = (): void => {\n\t\t\tstate.value = null;\n\t\t\tselectedLabel.value = null;\n\t\t\temit(\"update:modelValue\", null);\n\t\t\temit(\"clear\");\n\t\t};\n\n\t\tconst handleVisibleChange = async (visible: boolean): Promise<void> => {\n\t\t\tif (visible) {\n\t\t\t\tif (state.debut) {\n\t\t\t\t\t// 首次出现\n\t\t\t\t\tstate.debut = false;\n\t\t\t\t\t// 懒加载\n\t\t\t\t\t!props.defaultSelected && props.lazy && (await loadData());\n\t\t\t\t} else {\n\t\t\t\t\t// 判断再次出现是否需要刷新数据\n\t\t\t\t\tif (state.nextRefresh) {\n\t\t\t\t\t\tstate.nextRefresh = false;\n\t\t\t\t\t\tawait loadData();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\temit(\"visible-change\", visible);\n\t\t};\n\n\t\twatch(\n\t\t\t() => props.modelValue,\n\t\t\t(newValue) => {\n\t\t\t\tif (state.echo && !isNil(newValue)) {\n\t\t\t\t\tconst hasLabel = !isNil(props.label);\n\t\t\t\t\t// 判断是否为多选\n\t\t\t\t\tif (props.multiple) {\n\t\t\t\t\t\t// 判断是否为数组\n\t\t\t\t\t\tif (!isArray(newValue)) {\n\t\t\t\t\t\t\tconsoleError(\"FaSelect\", \"当启用 multiple 时,传入的 modelValue 必须是Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (hasLabel && !isArray(props.label)) {\n\t\t\t\t\t\t\tconsoleError(\"FaSelect\", \"当启用 multiple 时,传入的 modelValue:label 必须是Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstate.selectorData = newValue\n\t\t\t\t\t\t\t// 最大选项截取\n\t\t\t\t\t\t\t.slice(0, props.multipleLimit > 0 ? props.multipleLimit : newValue.length)\n\t\t\t\t\t\t\t.map((item, index) => ({\n\t\t\t\t\t\t\t\tvalue: item,\n\t\t\t\t\t\t\t\tlabel: hasLabel ? props.label[index] : undefined,\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (isArray(newValue)) {\n\t\t\t\t\t\t\tconsoleError(\"FaSelect\", \"当禁用 multiple 时,传入的 modelValue 不能是Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (hasLabel && isArray(props.label)) {\n\t\t\t\t\t\t\tconsoleError(\"FaSelect\", \"当禁用 multiple 时,传入的 modelValue:label 不能是Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstate.selectorData = [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvalue: newValue,\n\t\t\t\t\t\t\t\tlabel: props.label,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstate.value = newValue;\n\t\t\t},\n\t\t\t{\n\t\t\t\timmediate: true,\n\t\t\t}\n\t\t);\n\n\t\tonMounted(async () => {\n\t\t\tif (props.defaultSelected) {\n\t\t\t\tawait loadData();\n\t\t\t\tif (state.selectorData.length > 0) {\n\t\t\t\t\thandleChange(props.multiple ? [state.selectorData[0].value] : state.selectorData[0].value);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// 判断是否为本地数据\n\t\t\telse if (!props.requestApi && props.data?.length > 0) {\n\t\t\t\tstate.debut = false;\n\t\t\t\tawait loadData();\n\t\t\t}\n\t\t\t// 判断是否非默认选中,且未启用懒加载\n\t\t\telse if (!props.lazy) {\n\t\t\t\tawait loadData();\n\t\t\t}\n\t\t\twatch(\n\t\t\t\t() => props.initParam,\n\t\t\t\t(newValue, oldValue) => {\n\t\t\t\t\tif (!isEqual(newValue, oldValue)) {\n\t\t\t\t\t\tstate.nextRefresh = true;\n\t\t\t\t\t\tif (!isNil(state.value)) {\n\t\t\t\t\t\t\thandleChange();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t\twatch(\n\t\t\t\t() => props.data,\n\t\t\t\tasync () => {\n\t\t\t\t\tif (!props.requestApi) {\n\t\t\t\t\t\tawait loadData();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{ deep: true }\n\t\t\t);\n\t\t});\n\n\t\tconst elSelectProps = useProps(props, SelectProps, [\"modelValue\", \"popperClass\", \"loading\"]);\n\t\tconst elSelectEmits = useEmits(selectEmits, emit, [\"update:modelValue\", \"change\", \"clear\", \"visible-change\"]);\n\t\tconst elPopperClass = computed(() => {\n\t\t\tlet localClass = `fa-select-dropdown ${props.popperClass}`;\n\t\t\tif (props.moreDetail) {\n\t\t\t\tlocalClass += ` fa-select-dropdown__more-detail fa-select-dropdown__more-detail-${_globalSize.value}`;\n\t\t\t}\n\t\t\treturn localClass;\n\t\t});\n\n\t\tuseRender(() => (\n\t\t\t<ElSelect\n\t\t\t\t{...elSelectProps.value}\n\t\t\t\t{...elSelectEmits.value}\n\t\t\t\tref={selectRef}\n\t\t\t\tclass=\"fa-select\"\n\t\t\t\tpopperClass={elPopperClass.value}\n\t\t\t\tstyle={{ width: addUnit(props.width) }}\n\t\t\t\tvModel={state.value}\n\t\t\t\tloading={state.loading}\n\t\t\t\tonChange={handleChange}\n\t\t\t\tonClear={handleClear}\n\t\t\t\tonVisibleChange={handleVisibleChange}\n\t\t\t>\n\t\t\t\t{{\n\t\t\t\t\tdefault: (): VNode[] =>\n\t\t\t\t\t\tstate.selectorData.map((item) => (\n\t\t\t\t\t\t\t<FaSelectOption vSlots={{ default: slots.default }} data={item} moreDetail={props.moreDetail} />\n\t\t\t\t\t\t)),\n\t\t\t\t\t...(slots.header && { header: (): VNode[] => slots.header() }),\n\t\t\t\t\t...(slots.footer && { footer: (): VNode[] => slots.footer() }),\n\t\t\t\t\t...(slots.prefix && { prefix: (): VNode[] => slots.prefix() }),\n\t\t\t\t\t...(slots.empty && { empty: (): VNode[] => slots.empty() }),\n\t\t\t\t\t...(slots.tag && { tag: (): VNode[] => slots.tag() }),\n\t\t\t\t\t...(slots.loading && { loading: (): VNode[] => slots.loading() }),\n\t\t\t\t\t...(slots.label && {\n\t\t\t\t\t\tlabel: ({ label, value }: { label: string; value: string | number | boolean | object }): VNode[] =>\n\t\t\t\t\t\t\tslots.label({ label, value }),\n\t\t\t\t\t}),\n\t\t\t\t}}\n\t\t\t</ElSelect>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** @description 使选择器的输入框获取焦点 */\n\t\t\tfocus: computed(() => selectRef.value?.focus),\n\t\t\t/** @description 使选择器的输入框失去焦点,并隐藏下拉框 */\n\t\t\tblur: computed(() => selectRef.value?.blur),\n\t\t\t/** @description 获取当前选中的标签 */\n\t\t\tselectedLabel: computed(() => selectRef.value?.selectedLabel),\n\t\t\t/** @description 加载状态 */\n\t\t\tloading: computed(() => state.loading),\n\t\t\t/** @description 刷新 */\n\t\t\trefresh: loadData,\n\t\t\t/** @description 设置选择 */\n\t\t\tsetSelection: (value: string | number | boolean | object | (string | number | boolean | object)[]) => handleChange(value),\n\t\t\t/** @description 清除选择 */\n\t\t\tclearSelection: () => handleChange(null),\n\t\t});\n\t},\n});\n"],"names":["SelectProps","name","String","id","modelValue","type","Array","Number","Boolean","Object","default","undefined","autocomplete","automaticDropdown","size","useSizeProp","effect","definePropType","disabled","clearable","filterable","allowCreate","loading","popperClass","popperOptions","remote","loadingText","noMatchText","noDataText","remoteMethod","Function","filterMethod","multiple","multipleLimit","placeholder","defaultFirstOption","reserveKeyword","valueKey","collapseTags","collapseTagsTooltip","maxCollapseTags","teleported","useTooltipContentProps","persistent","clearIcon","CircleClose","fitInputWidth","suffixIcon","ArrowDown","tagType","tagProps","tagEffect","validateEvent","remoteShowSuffix","placement","fallbackPlacements","useEmptyValuesProps","useAriaProps","faSelectProps","label","width","moreDetail","lazy","defaultSelected","props","hide","children","data","requestApi","initParam","faSelectEmits","selectEmits","value","isString","isNumber","isBoolean","isObject","isArray","isNull","dataChangeCallBack","change","Select","emits","slots","makeSlots","setup","attrs","emit","expose","selectedLabel","useVModel","_globalSize","useGlobalSize","state","reactive","withDefineType","selectorData","debut","echo","length","nextRefresh","selectRef","ref","handleData","map","m","isFunction","filter","f","loadData","async","params","resData","error","consoleError","handleChange","valueArr","dataList","includes","isNil","find","handleClear","handleVisibleChange","visible","watch","newValue","hasLabel","slice","item","index","immediate","onMounted","oldValue","isEqual","deep","elSelectProps","useProps","elSelectEmits","useEmits","elPopperClass","computed","localClass","useRender","_createVNode","ElSelect","_mergeProps","class","style","addUnit","$event","onChange","onClear","onVisibleChange","FaSelectOption","header","footer","prefix","empty","tag","useExpose","focus","blur","refresh","setSelection","clearSelection"],"mappings":"sTAWaA,EAAc,CAI1BC,KAAMC,OAINC,GAAID,OAIJE,WAAY,CACXC,KAAM,CAACC,MAAOJ,OAAQK,OAAQC,QAASC,QACvCC,aAASC,GAKVC,aAAc,CACbP,KAAMH,OACNQ,QAAS,OAKVG,kBAAmBL,QAInBM,KAAMC,EAAAA,YAINC,OAAQ,CACPX,KAAMY,EAAAA,eAAsCf,QAC5CQ,QAAS,SAKVQ,SAAUV,QAIVW,UAAWX,QAIXY,WAAYZ,QAIZa,YAAab,QAIbc,QAASd,QAITe,YAAa,CACZlB,KAAMH,OACNQ,QAAS,IAKVc,cAAe,CACdnB,KAAMY,EAAAA,eAAiCR,QACvCC,QAASA,MAAyB,IAKnCe,OAAQjB,QAIRkB,YAAaxB,OAIbyB,YAAazB,OAIb0B,WAAY1B,OAIZ2B,aAAcC,SAIdC,aAAcD,SAIdE,SAAUxB,QAIVyB,cAAe,CACd5B,KAAME,OACNG,QAAS,GAKVwB,YAAa,CACZ7B,KAAMH,QAKPiC,mBAAoB3B,QAIpB4B,eAAgB,CACf/B,KAAMG,QACNE,SAAS,GAKV2B,SAAU,CACThC,KAAMH,OACNQ,QAAS,SAKV4B,aAAc9B,QAId+B,oBAAqB/B,QAIrBgC,gBAAiB,CAChBnC,KAAME,OACNG,QAAS,GAKV+B,WAAYC,EAAAA,uBAAuBD,WAInCE,WAAY,CACXtC,KAAMG,QACNE,SAAS,GAKVkC,UAAW,CACVvC,KAAMY,EAAAA,eAAmC,CAACf,OAAQO,OAAQqB,WAC1DpB,QAASmC,EAAAA,aAKVC,cAAetC,QAIfuC,WAAY,CACX1C,KAAMY,EAAAA,eAAmC,CAACf,OAAQO,OAAQqB,WAC1DpB,QAASsC,EAAAA,WAMVC,QAAS,IAAKC,EAAAA,SAAS7C,KAAMK,QAAS,QAItCyC,UAAW,IAAKD,EAAAA,SAASlC,OAAQN,QAAS,SAI1C0C,cAAe,CACd/C,KAAMG,QACNE,SAAS,GAKV2C,iBAAkB7C,QAIlB8C,UAAW,CACVjD,KAAMY,EAAAA,eAA0Bf,QAChCQ,QAAS,gBAKV6C,mBAAoB,CACnBlD,KAAMY,EAAAA,eAA4BX,OAClCI,QAAS,CAAC,eAAgB,YAAa,QAAS,YAE9C8C,EAAAA,uBACAC,EAAAA,aAAa,CAAC,eAcLC,EAAgB,IACzB1D,EAEHkB,SAAU,CACTb,KAAMG,QACNE,aAASC,GAGVe,YAAa,CACZrB,KAAMH,OACNQ,QAAS,UAGViB,YAAa,CACZtB,KAAMH,OACNQ,QAAS,WAGVkB,WAAY,CACXvB,KAAMH,OACNQ,QAAS,QAGV4B,aAAc,CACbjC,KAAMG,QACNE,SAAS,GAGV6B,oBAAqB,CACpBlC,KAAMG,QACNE,SAAS,GAGVN,WAAY,CACXC,KAAMY,EAAAA,eAA4F,CAACf,OAAQK,OAAQC,QAASC,OAAQH,QACpII,aAASC,GAGVgD,MAAO1C,EAAAA,eAAkC,CAACf,OAAQI,QAElDsD,MAAO,CACNvD,KAAM,CAACH,OAAQK,QACfG,QAAS,QAGVmD,WAAYrD,QAEZsD,KAAM,CACLzD,KAAMG,QACNE,SAAS,GAGVqD,gBAAiBvD,QAEjBwD,MAAO,CACN3D,KAAMY,EAAAA,eAAqCR,QAC3CC,QAASA,KAAAA,CACRiD,MAAO,QACPM,KAAM,OACN/C,SAAU,WACVgD,SAAU,cAIZC,KAAM,CACL9D,KAAMY,EAAAA,eAAmCX,OACzCI,QAASA,IAA0B,IAGpC0D,WAAY,CACX/D,KAAMY,EAAAA,eAA8Da,WAGrEuC,UAAWpD,EAAAA,eAAsC,CAACf,OAAQK,OAAQE,UAGtD6D,EAAgB,IACzBC,EAAAA,YAEH,oBAAsBC,GACrBC,WAASD,IAAUE,EAAAA,SAASF,IAAUG,EAAAA,UAAUH,IAAUI,EAAAA,SAASJ,IAAUK,EAAAA,QAAQL,IAAUM,EAAAA,OAAON,GAEvG,eAAiBA,GAAsCC,EAAAA,SAASD,IAAUK,EAAAA,QAAQL,IAAUM,EAAAA,OAAON,GAEnGO,mBAAqBZ,GAA8CU,EAAAA,QAAQV,GAE3Ea,OAAQA,CACPb,EACAK,KACa,GAsBfS,oBAA+B,CAC9BhF,KAAM,WACN+D,MAAON,EACPwB,MAAOZ,EACPa,MAAOC,EAAAA,YACPC,KAAAA,CAAMrB,GAAOsB,MAAEA,EAAAA,MAAOH,EAAAA,KAAOI,EAAAA,OAAMC,IAClC,MAAMC,EAAgBC,EAAAA,UAAU1B,EAAO,QAASuB,GAC1CI,EAAcC,EAAAA,gBAEdC,EAAQC,EAAAA,SAAS,CACtBtB,MAAOuB,EAAAA,iBACPzE,SAAS,EACT0E,aAAcD,EAAAA,eAAmC,IAEjDE,OAAO,EAEPC,OAAMlC,EAAMG,MAAMgC,OAAS,GAE3BC,aAAa,IAGRC,EAAYC,EAAAA,MAEZC,EAAcpC,GACZA,GACJqC,IAAKC,IAAAA,IACHA,EACHjC,MAAOiC,EAAEzC,EAAM3B,UACfsB,MAAO+C,EAAAA,WAAW1C,EAAMA,MAAML,OAASK,EAAMA,MAAML,MAAM8C,GAAKA,EAAEzC,EAAMA,MAAML,OAAS,SACrFM,KAAMyC,EAAAA,WAAW1C,EAAMA,MAAMC,MAAQD,EAAMA,MAAMC,KAAKwC,GAAKA,EAAEzC,EAAMA,MAAMC,MAAQ,QACjF/C,SAAUwF,EAAAA,WAAW1C,EAAMA,MAAM9C,UAAY8C,EAAMA,MAAM9C,SAASuF,GAAKA,EAAEzC,EAAMA,MAAM9C,UAAY,YACjGgD,SAAUwC,EAAAA,WAAW1C,EAAMA,MAAME,UAC9BqC,EAAWvC,EAAMA,MAAME,SAASuC,IAChCF,EAAWE,EAAEzC,EAAMA,MAAME,UAAY,gBAExCyC,OAAQC,IAAOA,EAAE3C,MAGd4C,EAAWC,UAEhB,GAAI9C,EAAMI,WAAY,CACrByB,EAAMvE,SAAU,EAChB,MAAMyF,EAAS/C,EAAMK,WAAa,CAAA,EAClC,IACC,MAAM2C,QAAgBhD,EAAMI,WAAW2C,GAEvClB,EAAMK,MAAO,EACbL,EAAMG,aAAeO,EAAWS,GAChCzB,EAAK,qBAAsBM,EAAMG,aAClC,OAASiB,GACRC,EAAAA,aAAa,WAAYD,GACzBpB,EAAMG,aAAe,EACtB,CAAA,QACCH,EAAMvE,SAAU,CACjB,CACD,MAECuE,EAAMK,MAAO,EACbL,EAAMG,aAAeO,EAAWvC,EAAMG,OAIlCgD,EAAgB3C,IAErB,GAAIR,EAAMhC,SAAU,CAEnB,MAAMoF,EAAW5C,EACjB,GAAyB,IAArB4C,GAAUjB,OAKb,OAJAN,EAAMrB,MAAQ,KACdiB,EAAcjB,MAAQ,KACtBe,EAAK,oBAAqB,WAC1BA,EAAK,SAAU,KAAM,MAGtB,MAAM8B,EAAWxB,EAAMG,aAAaW,UAAcS,EAASE,SAASV,EAAEpC,QACtEqB,EAAMrB,MAAQA,EACdiB,EAAcjB,MAAQ6C,EAASb,IAAKC,GAAMA,EAAE9C,OAC5C4B,EAAK,oBAAqBf,GAC1Be,EAAK,SAAU8B,EAAU7C,EAC1B,KAAO,CAEN,GAAI+C,EAAAA,MAAM/C,GAKT,OAJAqB,EAAMrB,MAAQ,KACdiB,EAAcjB,MAAQ,KACtBe,EAAK,oBAAqB,WAC1BA,EAAK,SAAU,KAAM,MAGtB,MAAMpB,EAAO0B,EAAMG,aAAawB,KAAMZ,GAAMA,EAAEpC,QAAUA,GACxDqB,EAAMrB,MAAQA,EACdiB,EAAcjB,MAAQL,EAAKR,MAC3B4B,EAAK,oBAAqBf,GAC1Be,EAAK,SAAUpB,EAAMK,EACtB,GAGKiD,EAAcA,KACnB5B,EAAMrB,MAAQ,KACdiB,EAAcjB,MAAQ,KACtBe,EAAK,oBAAqB,MAC1BA,EAAK,UAGAmC,EAAsBZ,MAAOa,IAC9BA,IACC9B,EAAMI,OAETJ,EAAMI,OAAQ,GAEbjC,EAAMD,iBAAmBC,EAAMF,YAAe+C,KAG3ChB,EAAMO,cACTP,EAAMO,aAAc,QACdS,MAITtB,EAAK,iBAAkBoC,IAGxBC,EAAAA,MACC,IAAM5D,EAAM5D,WACXyH,IACA,GAAIhC,EAAMK,OAASqB,EAAAA,MAAMM,GAAW,CACnC,MAAMC,GAAYP,QAAMvD,EAAML,OAE9B,GAAIK,EAAMhC,SAAU,CAEnB,IAAK6C,EAAAA,QAAQgD,GAEZ,YADAX,EAAAA,aAAa,WAAY,2CAG1B,GAAIY,IAAajD,EAAAA,QAAQb,EAAML,OAE9B,YADAuD,EAAAA,aAAa,WAAY,iDAG1BrB,EAAMG,aAAe6B,EAEnBE,MAAM,EAAG/D,EAAM/B,cAAgB,EAAI+B,EAAM/B,cAAgB4F,EAAS1B,QAClEK,IAAI,CAACwB,EAAMC,KAAAA,CACXzD,MAAOwD,EACPrE,MAAOmE,EAAW9D,EAAML,MAAMsE,QAAStH,IAE1C,KAAO,CACN,GAAIkE,EAAAA,QAAQgD,GAEX,YADAX,EAAAA,aAAa,WAAY,2CAG1B,GAAIY,GAAYjD,EAAAA,QAAQb,EAAML,OAE7B,YADAuD,EAAAA,aAAa,WAAY,iDAG1BrB,EAAMG,aAAe,CACpB,CACCxB,MAAOqD,EACPlE,MAAOK,EAAML,OAGhB,CACD,CACAkC,EAAMrB,MAAQqD,GAEf,CACCK,WAAW,IAIbC,EAAAA,UAAUrB,UACL9C,EAAMD,uBACH8C,IACFhB,EAAMG,aAAaG,OAAS,GAC/BgB,EAAanD,EAAMhC,SAAW,CAAC6D,EAAMG,aAAa,GAAGxB,OAASqB,EAAMG,aAAa,GAAGxB,SAI5ER,EAAMI,YAAcJ,EAAMG,MAAMgC,OAAS,GAClDN,EAAMI,OAAQ,QACRY,KAGG7C,EAAMF,YACT+C,IAEPe,EAAAA,MACC,IAAM5D,EAAMK,UACZ,CAACwD,EAAUO,KACLC,EAAAA,QAAQR,EAAUO,KACtBvC,EAAMO,aAAc,EACfmB,EAAAA,MAAM1B,EAAMrB,QAChB2C,OAKJS,QACC,IAAM5D,EAAMG,KACZ2C,UACM9C,EAAMI,kBACJyC,KAGR,CAAEyB,MAAM,MAIV,MAAMC,EAAgBC,EAAAA,SAASxE,EAAOhE,EAAa,CAAC,aAAc,cAAe,YAC3EyI,EAAgBC,WAASnE,EAAAA,YAAagB,EAAM,CAAC,oBAAqB,SAAU,QAAS,mBACrFoD,EAAgBC,EAAAA,SAAS,KAC9B,IAAIC,EAAa,sBAAsB7E,EAAMzC,cAI7C,OAHIyC,EAAMH,aACTgF,GAAc,oEAAoElD,EAAYnB,SAExFqE,IAoCR,OAjCAC,YAAU,IAAAC,EAAAA,YAAAC,WAAAC,EAAAA,WAEJV,EAAc/D,MACdiE,EAAcjE,MAAK,CAAA8B,IAClBD,EAAS6C,MAAA,YAAA3H,YAEDoH,EAAcnE,MAAK2E,MACzB,CAAEvF,MAAOwF,EAAAA,QAAQpF,EAAMJ,QAAQxD,WAC9ByF,EAAMrB,MAAK,sBAAA6E,GAAXxD,EAAMrB,MAAK6E,EAAA/H,QACVuE,EAAMvE,QAAOgI,SACZnC,EAAYoC,QACb9B,EAAW+B,gBACH9B,IAAmB,CAGnChH,QAASA,IACRmF,EAAMG,aAAaQ,IAAKwB,GAAIe,EAAAA,YAAAU,UAAA,CAAAtF,KAC+B6D,EAAInE,WAAcG,EAAMH,YAA1D,CAAEnD,QAASyE,EAAMzE,cAEvCyE,EAAMuE,QAAU,CAAEA,OAAQA,IAAevE,EAAMuE,aAC/CvE,EAAMwE,QAAU,CAAEA,OAAQA,IAAexE,EAAMwE,aAC/CxE,EAAMyE,QAAU,CAAEA,OAAQA,IAAezE,EAAMyE,aAC/CzE,EAAM0E,OAAS,CAAEA,MAAOA,IAAe1E,EAAM0E,YAC7C1E,EAAM2E,KAAO,CAAEA,IAAKA,IAAe3E,EAAM2E,UACzC3E,EAAM7D,SAAW,CAAEA,QAASA,IAAe6D,EAAM7D,cACjD6D,EAAMxB,OAAS,CAClBA,MAAOA,EAAGA,QAAOa,WAChBW,EAAMxB,MAAM,CAAEA,QAAOa,cAMnBuF,EAAAA,UAAUvE,EAAQ,CAExBwE,MAAOpB,EAAAA,SAAS,IAAMvC,EAAU7B,OAAOwF,OAEvCC,KAAMrB,EAAAA,SAAS,IAAMvC,EAAU7B,OAAOyF,MAEtCxE,cAAemD,EAAAA,SAAS,IAAMvC,EAAU7B,OAAOiB,eAE/CnE,QAASsH,EAAAA,SAAS,IAAM/C,EAAMvE,SAE9B4I,QAASrD,EAETsD,aAAe3F,GAAuF2C,EAAa3C,GAEnH4F,eAAgBA,IAAMjD,EAAa,OAErC"}
|
|
1
|
+
{"version":3,"file":"select.js","sources":["../../../../../packages/components/select/src/select.tsx"],"sourcesContent":["import { computed, defineComponent, onMounted, reactive, ref, watch } from \"vue\";\nimport { ElSelect, selectEmits, tagProps, useAriaProps, useEmptyValuesProps, useGlobalSize, useSizeProp, useTooltipContentProps } from \"element-plus\";\nimport { ArrowDown, CircleClose } from \"@element-plus/icons-vue\";\nimport { addUnit, consoleError, definePropType, makeSlots, useEmits, useExpose, useProps, useRender, withDefineType } from \"@fast-china/utils\";\nimport { useVModel } from \"@vueuse/core\";\nimport { isArray, isBoolean, isEqual, isFunction, isNil, isNull, isNumber, isObject, isString } from \"lodash-unified\";\nimport FaSelectOption from \"./selectOption\";\nimport type { ElSelectorOutput } from \"./select.type\";\nimport type { Options, Placement, PopperEffect } from \"element-plus\";\nimport type { Component, VNode } from \"vue\";\n\nexport const SelectProps = {\n\t/**\n\t * @description the name attribute of select input\n\t */\n\tname: String,\n\t/**\n\t * @description native input id\n\t */\n\tid: String,\n\t/**\n\t * @description binding value\n\t */\n\tmodelValue: {\n\t\ttype: [Array, String, Number, Boolean, Object],\n\t\tdefault: undefined,\n\t},\n\t/**\n\t * @description the autocomplete attribute of select input\n\t */\n\tautocomplete: {\n\t\ttype: String,\n\t\tdefault: \"off\",\n\t},\n\t/**\n\t * @description for non-filterable Select, this prop decides if the option menu pops up when the input is focused\n\t */\n\tautomaticDropdown: Boolean,\n\t/**\n\t * @description size of Input\n\t */\n\tsize: useSizeProp,\n\t/**\n\t * @description tooltip theme, built-in theme: `dark` / `light`\n\t */\n\teffect: {\n\t\ttype: definePropType<PopperEffect | string>(String),\n\t\tdefault: \"light\",\n\t},\n\t/**\n\t * @description whether Select is disabled\n\t */\n\tdisabled: Boolean,\n\t/**\n\t * @description whether select can be cleared\n\t */\n\tclearable: Boolean,\n\t/**\n\t * @description whether Select is filterable\n\t */\n\tfilterable: Boolean,\n\t/**\n\t * @description whether creating new items is allowed. To use this, `filterable` must be true\n\t */\n\tallowCreate: Boolean,\n\t/**\n\t * @description whether Select is loading data from server\n\t */\n\tloading: Boolean,\n\t/**\n\t * @description custom class name for Select's dropdown\n\t */\n\tpopperClass: {\n\t\ttype: String,\n\t\tdefault: \"\",\n\t},\n\t/**\n\t * @description [popper.js](https://popper.js.org/docs/v2/) parameters\n\t */\n\tpopperOptions: {\n\t\ttype: definePropType<Partial<Options>>(Object),\n\t\tdefault: (): Partial<Options> => ({}),\n\t},\n\t/**\n\t * @description whether options are loaded from server\n\t */\n\tremote: Boolean,\n\t/**\n\t * @description displayed text while loading data from server, default is 'Loading'\n\t */\n\tloadingText: String,\n\t/**\n\t * @description displayed text when no data matches the filtering query, you can also use slot `empty`, default is 'No matching data'\n\t */\n\tnoMatchText: String,\n\t/**\n\t * @description displayed text when there is no options, you can also use slot `empty`, default is 'No data'\n\t */\n\tnoDataText: String,\n\t/**\n\t * @description custom remote search method\n\t */\n\tremoteMethod: Function,\n\t/**\n\t * @description custom filter method\n\t */\n\tfilterMethod: Function,\n\t/**\n\t * @description whether multiple-select is activated\n\t */\n\tmultiple: Boolean,\n\t/**\n\t * @description maximum number of options user can select when `multiple` is `true`. No limit when set to 0\n\t */\n\tmultipleLimit: {\n\t\ttype: Number,\n\t\tdefault: 0,\n\t},\n\t/**\n\t * @description placeholder, default is 'Select'\n\t */\n\tplaceholder: {\n\t\ttype: String,\n\t},\n\t/**\n\t * @description select first matching option on enter key. Use with `filterable` or `remote`\n\t */\n\tdefaultFirstOption: Boolean,\n\t/**\n\t * @description when `multiple` and `filter` is true, whether to reserve current keyword after selecting an option\n\t */\n\treserveKeyword: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/**\n\t * @description unique identity key name for value, required when value is an object\n\t */\n\tvalueKey: {\n\t\ttype: String,\n\t\tdefault: \"value\",\n\t},\n\t/**\n\t * @description whether to collapse tags to a text when multiple selecting\n\t */\n\tcollapseTags: Boolean,\n\t/**\n\t * @description whether show all selected tags when mouse hover text of collapse-tags. To use this, `collapse-tags` must be true\n\t */\n\tcollapseTagsTooltip: Boolean,\n\t/**\n\t * @description the max tags number to be shown. To use this, `collapse-tags` must be true\n\t */\n\tmaxCollapseTags: {\n\t\ttype: Number,\n\t\tdefault: 1,\n\t},\n\t/**\n\t * @description whether select dropdown is teleported to the body\n\t */\n\tteleported: useTooltipContentProps.teleported,\n\t/**\n\t * @description when select dropdown is inactive and `persistent` is `false`, select dropdown will be destroyed\n\t */\n\tpersistent: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/**\n\t * @description custom clear icon component\n\t */\n\tclearIcon: {\n\t\ttype: definePropType<string | Component>([String, Object, Function]),\n\t\tdefault: CircleClose,\n\t},\n\t/**\n\t * @description whether the width of the dropdown is the same as the input\n\t */\n\tfitInputWidth: Boolean,\n\t/**\n\t * @description custom suffix icon component\n\t */\n\tsuffixIcon: {\n\t\ttype: definePropType<string | Component>([String, Object, Function]),\n\t\tdefault: ArrowDown,\n\t},\n\t/**\n\t * @description tag type\n\t */\n\n\ttagType: { ...tagProps.type, default: \"info\" },\n\t/**\n\t * @description tag effect\n\t */\n\ttagEffect: { ...tagProps.effect, default: \"light\" },\n\t/**\n\t * @description whether to trigger form validation\n\t */\n\tvalidateEvent: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/**\n\t * @description in remote search method show suffix icon\n\t */\n\tremoteShowSuffix: Boolean,\n\t/**\n\t * @description position of dropdown\n\t */\n\tplacement: {\n\t\ttype: definePropType<Placement>(String),\n\t\tdefault: \"bottom-start\",\n\t},\n\t/**\n\t * @description list of possible positions for dropdown\n\t */\n\tfallbackPlacements: {\n\t\ttype: definePropType<Placement[]>(Array),\n\t\tdefault: [\"bottom-start\", \"top-start\", \"right\", \"left\"],\n\t},\n\t...useEmptyValuesProps,\n\t...useAriaProps([\"ariaLabel\"]),\n};\n\nexport type SelectComponentProps = {\n\t/** @description 指定标签为节点的某个属性值 */\n\tlabel?: string | ((data: any) => string);\n\t/** @description 指定是否隐藏为节点的某个属性值 */\n\thide?: string | ((data: any) => boolean);\n\t/** @description 指定是否禁用为节点的某个属性值 */\n\tdisabled?: string | ((data: any) => boolean);\n\t/** @description 指定子节点对象为节点的某个属性值 */\n\tchildren?: string;\n};\n\nexport const faSelectProps = {\n\t...SelectProps,\n\t/** @description whether Select is disabled 重载使其支持 ElForm*/\n\tdisabled: {\n\t\ttype: Boolean,\n\t\tdefault: undefined,\n\t},\n\t/** @description displayed text while loading data from server, default is 'Loading' */\n\tloadingText: {\n\t\ttype: String,\n\t\tdefault: \"加载中...\",\n\t},\n\t/** @description displayed text when no data matches the filtering query, you can also use slot `empty`, default is 'No matching data' */\n\tnoMatchText: {\n\t\ttype: String,\n\t\tdefault: \"暂无匹配的数据\",\n\t},\n\t/** @description displayed text when there is no options, you can also use slot `empty`, default is 'No data' */\n\tnoDataText: {\n\t\ttype: String,\n\t\tdefault: \"暂无数据\",\n\t},\n\t/** @description whether to collapse tags to a text when multiple selecting */\n\tcollapseTags: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description whether show all selected tags when mouse hover text of collapse-tags. To use this, `collapse-tags` must be true */\n\tcollapseTagsTooltip: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description v-model绑定值 */\n\tmodelValue: {\n\t\ttype: definePropType<string | number | boolean | object | (string | number | boolean | object)[]>([String, Number, Boolean, Object, Array]),\n\t\tdefault: undefined,\n\t},\n\t/** @description v-model:label绑定值 */\n\tlabel: definePropType<string | string[]>([String, Array]),\n\t/** @description 宽度 */\n\twidth: {\n\t\ttype: [String, Number],\n\t\tdefault: \"100%\",\n\t},\n\t/** @description 更多细节,只有使用slot的时候有用 */\n\tmoreDetail: Boolean,\n\t/** @description 懒加载远程数据,默认 true。当下拉框第一次显示的时候才会加载远程数据*/\n\tlazy: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 默认选中。不能和懒加载一起使用 */\n\tdefaultSelected: Boolean,\n\t/** @description 配置选项 */\n\tprops: {\n\t\ttype: definePropType<SelectComponentProps>(Object),\n\t\tdefault: (): Partial<SelectComponentProps> => ({\n\t\t\tlabel: \"label\",\n\t\t\thide: \"hide\",\n\t\t\tdisabled: \"disabled\",\n\t\t\tchildren: \"children\",\n\t\t}),\n\t},\n\t/** @description 下拉框数据 */\n\tdata: {\n\t\ttype: definePropType<ElSelectorOutput[]>(Array),\n\t\tdefault: (): ElSelectorOutput[] => [],\n\t},\n\t/** @description 请求api */\n\trequestApi: {\n\t\ttype: definePropType<(params?: any) => Promise<ElSelectorOutput[]>>(Function),\n\t},\n\t/** 初始化参数 */\n\tinitParam: definePropType<string | number | any>([String, Number, Object]),\n};\n\nexport const faSelectEmits = {\n\t...selectEmits,\n\t/** @description v-model 回调 */\n\t\"update:modelValue\": (value: string | number | boolean | object | (string | number | boolean | object)[]): boolean =>\n\t\tisString(value) || isNumber(value) || isBoolean(value) || isObject(value) || isArray(value) || isNull(value),\n\t/** @description v-model:label 回调 */\n\t\"update:label\": (value: string | string[]): boolean => isString(value) || isArray(value) || isNull(value),\n\t/** @description 数据改变 */\n\tdataChangeCallBack: (data: ElSelectorOutput[] | any[]): boolean => isArray(data),\n\t/** @description 改变 */\n\tchange: (\n\t\tdata: ElSelectorOutput | ElSelectorOutput[] | any | any[],\n\t\tvalue?: string | number | boolean | object | (string | number | boolean | object)[]\n\t): boolean => true,\n};\n\ntype FaSelectSlots = {\n\t/** @description FaSelectOption 默认内容插槽 */\n\tdefault: ElSelectorOutput;\n\t/** @description 下拉列表顶部的内容 */\n\theader: never;\n\t/** @description 下拉列表底部的内容 */\n\tfooter: never;\n\t/** @description Select 组件头部内容 */\n\tprefix: never;\n\t/** @description 无选项时的列表 */\n\tempty: never;\n\t/** @description select 组件自定义标签内容 */\n\ttag: never;\n\t/** @description select 组件自定义 loading内容 */\n\tloading: never;\n\t/** @description select 组件自定义标签内容 */\n\tlabel: { label: string; value: string | number | boolean | object };\n};\n\nexport default defineComponent({\n\tname: \"FaSelect\",\n\tprops: faSelectProps,\n\temits: faSelectEmits,\n\tslots: makeSlots<FaSelectSlots>(),\n\tsetup(props, { attrs, slots, emit, expose }) {\n\t\tconst selectedLabel = useVModel(props, \"label\", emit, { passive: true });\n\t\tconst _globalSize = useGlobalSize();\n\n\t\tconst state = reactive({\n\t\t\tvalue: withDefineType<string | number | boolean | object | (string | number | boolean | object)[]>(),\n\t\t\tloading: false,\n\t\t\tselectorData: withDefineType<ElSelectorOutput[]>([]),\n\t\t\t/** 首次出现 */\n\t\t\tdebut: true,\n\t\t\t/** 回显 */\n\t\t\techo: props.data?.length > 0 ? false : true,\n\t\t\t/** 下次刷新 */\n\t\t\tnextRefresh: false,\n\t\t});\n\n\t\tconst selectRef = ref<InstanceType<typeof ElSelect>>();\n\n\t\tconst handleData = (data: ElSelectorOutput[]): ElSelectorOutput[] => {\n\t\t\treturn data\n\t\t\t\t?.map((m) => ({\n\t\t\t\t\t...m,\n\t\t\t\t\tvalue: m[props.valueKey],\n\t\t\t\t\tlabel: isFunction(props.props.label) ? props.props.label(m) : m[props.props.label ?? \"label\"],\n\t\t\t\t\thide: isFunction(props.props.hide) ? props.props.hide(m) : m[props.props.hide ?? \"hide\"],\n\t\t\t\t\tdisabled: isFunction(props.props.disabled) ? props.props.disabled(m) : m[props.props.disabled ?? \"disabled\"],\n\t\t\t\t\tchildren: isFunction(props.props.children)\n\t\t\t\t\t\t? handleData(props.props.children(m))\n\t\t\t\t\t\t: handleData(m[props.props.children ?? \"children\"]),\n\t\t\t\t}))\n\t\t\t\t.filter((f) => !f.hide);\n\t\t};\n\n\t\tconst loadData = async (): Promise<void> => {\n\t\t\t// 判断是否需要自动请求\n\t\t\tif (props.requestApi) {\n\t\t\t\tstate.loading = true;\n\t\t\t\tconst params = props.initParam ?? {};\n\t\t\t\ttry {\n\t\t\t\t\tconst resData = await props.requestApi(params);\n\t\t\t\t\t// 这里不允许回显了\n\t\t\t\t\tstate.echo = false;\n\t\t\t\t\tstate.selectorData = handleData(resData);\n\t\t\t\t\temit(\"dataChangeCallBack\", state.selectorData);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsoleError(\"FaSelect\", error);\n\t\t\t\t\tstate.selectorData = [];\n\t\t\t\t} finally {\n\t\t\t\t\tstate.loading = false;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// 这里不允许回显了\n\t\t\t\tstate.echo = false;\n\t\t\t\tstate.selectorData = handleData(props.data);\n\t\t\t}\n\t\t};\n\n\t\tconst handleChange = (value?: string | number | boolean | object | (string | number | boolean | object)[]): void => {\n\t\t\t// 判断是否为多选\n\t\t\tif (props.multiple) {\n\t\t\t\t// value 必然是数组\n\t\t\t\tconst valueArr = value as (string | number | boolean | object)[];\n\t\t\t\tif (valueArr?.length === 0) {\n\t\t\t\t\tstate.value = null;\n\t\t\t\t\tselectedLabel.value = null;\n\t\t\t\t\temit(\"update:modelValue\", null);\n\t\t\t\t\temit(\"change\", null, null);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst dataList = state.selectorData.filter((f) => valueArr.includes(f.value));\n\t\t\t\tstate.value = value;\n\t\t\t\tselectedLabel.value = dataList.map((m) => m.label);\n\t\t\t\temit(\"update:modelValue\", value);\n\t\t\t\temit(\"change\", dataList, value);\n\t\t\t} else {\n\t\t\t\t// value 必然不是数组\n\t\t\t\tif (isNil(value)) {\n\t\t\t\t\tstate.value = null;\n\t\t\t\t\tselectedLabel.value = null;\n\t\t\t\t\temit(\"update:modelValue\", null);\n\t\t\t\t\temit(\"change\", null, null);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst data = state.selectorData.find((f) => f.value === value);\n\t\t\t\tstate.value = value;\n\t\t\t\tselectedLabel.value = data.label;\n\t\t\t\temit(\"update:modelValue\", value);\n\t\t\t\temit(\"change\", data, value);\n\t\t\t}\n\t\t};\n\n\t\tconst handleClear = (): void => {\n\t\t\tstate.value = null;\n\t\t\tselectedLabel.value = null;\n\t\t\temit(\"update:modelValue\", null);\n\t\t\temit(\"clear\");\n\t\t};\n\n\t\tconst handleVisibleChange = async (visible: boolean): Promise<void> => {\n\t\t\tif (visible) {\n\t\t\t\tif (state.debut) {\n\t\t\t\t\t// 首次出现\n\t\t\t\t\tstate.debut = false;\n\t\t\t\t\t// 懒加载\n\t\t\t\t\t!props.defaultSelected && props.lazy && (await loadData());\n\t\t\t\t} else {\n\t\t\t\t\t// 判断再次出现是否需要刷新数据\n\t\t\t\t\tif (state.nextRefresh) {\n\t\t\t\t\t\tstate.nextRefresh = false;\n\t\t\t\t\t\tawait loadData();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\temit(\"visible-change\", visible);\n\t\t};\n\n\t\twatch(\n\t\t\t() => props.modelValue,\n\t\t\t(newValue) => {\n\t\t\t\tif (state.echo && !isNil(newValue)) {\n\t\t\t\t\tconst hasLabel = !isNil(props.label);\n\t\t\t\t\t// 判断是否为多选\n\t\t\t\t\tif (props.multiple) {\n\t\t\t\t\t\t// 判断是否为数组\n\t\t\t\t\t\tif (!isArray(newValue)) {\n\t\t\t\t\t\t\tconsoleError(\"FaSelect\", \"当启用 multiple 时,传入的 modelValue 必须是Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (hasLabel && !isArray(props.label)) {\n\t\t\t\t\t\t\tconsoleError(\"FaSelect\", \"当启用 multiple 时,传入的 modelValue:label 必须是Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstate.selectorData = newValue\n\t\t\t\t\t\t\t// 最大选项截取\n\t\t\t\t\t\t\t.slice(0, props.multipleLimit > 0 ? props.multipleLimit : newValue.length)\n\t\t\t\t\t\t\t.map((item, index) => ({\n\t\t\t\t\t\t\t\tvalue: item,\n\t\t\t\t\t\t\t\tlabel: hasLabel ? props.label[index] : undefined,\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (isArray(newValue)) {\n\t\t\t\t\t\t\tconsoleError(\"FaSelect\", \"当禁用 multiple 时,传入的 modelValue 不能是Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (hasLabel && isArray(props.label)) {\n\t\t\t\t\t\t\tconsoleError(\"FaSelect\", \"当禁用 multiple 时,传入的 modelValue:label 不能是Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstate.selectorData = [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvalue: newValue,\n\t\t\t\t\t\t\t\tlabel: props.label,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstate.value = newValue;\n\t\t\t},\n\t\t\t{\n\t\t\t\timmediate: true,\n\t\t\t}\n\t\t);\n\n\t\tonMounted(async () => {\n\t\t\tif (props.defaultSelected) {\n\t\t\t\tawait loadData();\n\t\t\t\tif (state.selectorData.length > 0) {\n\t\t\t\t\thandleChange(props.multiple ? [state.selectorData[0].value] : state.selectorData[0].value);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// 判断是否为本地数据\n\t\t\telse if (!props.requestApi && props.data?.length > 0) {\n\t\t\t\tstate.debut = false;\n\t\t\t\tawait loadData();\n\t\t\t}\n\t\t\t// 判断是否非默认选中,且未启用懒加载\n\t\t\telse if (!props.lazy) {\n\t\t\t\tawait loadData();\n\t\t\t}\n\t\t\twatch(\n\t\t\t\t() => props.initParam,\n\t\t\t\t(newValue, oldValue) => {\n\t\t\t\t\tif (!isEqual(newValue, oldValue)) {\n\t\t\t\t\t\tstate.nextRefresh = true;\n\t\t\t\t\t\tif (!isNil(state.value)) {\n\t\t\t\t\t\t\thandleChange();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t\twatch(\n\t\t\t\t() => props.data,\n\t\t\t\tasync () => {\n\t\t\t\t\tif (!props.requestApi) {\n\t\t\t\t\t\tawait loadData();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{ deep: true }\n\t\t\t);\n\t\t});\n\n\t\tconst elSelectProps = useProps(props, SelectProps, [\"modelValue\", \"popperClass\", \"loading\"]);\n\t\tconst elSelectEmits = useEmits(selectEmits, emit, [\"update:modelValue\", \"change\", \"clear\", \"visible-change\"]);\n\t\tconst elPopperClass = computed(() => {\n\t\t\tlet localClass = `fa-select-dropdown ${props.popperClass}`;\n\t\t\tif (props.moreDetail) {\n\t\t\t\tlocalClass += ` fa-select-dropdown__more-detail fa-select-dropdown__more-detail-${_globalSize.value}`;\n\t\t\t}\n\t\t\treturn localClass;\n\t\t});\n\n\t\tuseRender(() => (\n\t\t\t<ElSelect\n\t\t\t\t{...elSelectProps.value}\n\t\t\t\t{...elSelectEmits.value}\n\t\t\t\tref={selectRef}\n\t\t\t\tclass=\"fa-select\"\n\t\t\t\tpopperClass={elPopperClass.value}\n\t\t\t\tstyle={{ width: addUnit(props.width) }}\n\t\t\t\tvModel={state.value}\n\t\t\t\tloading={state.loading}\n\t\t\t\tonChange={handleChange}\n\t\t\t\tonClear={handleClear}\n\t\t\t\tonVisibleChange={handleVisibleChange}\n\t\t\t>\n\t\t\t\t{{\n\t\t\t\t\tdefault: (): VNode[] =>\n\t\t\t\t\t\tstate.selectorData.map((item) => (\n\t\t\t\t\t\t\t<FaSelectOption vSlots={{ default: slots.default }} data={item} moreDetail={props.moreDetail} />\n\t\t\t\t\t\t)),\n\t\t\t\t\t...(slots.header && { header: (): VNode[] => slots.header() }),\n\t\t\t\t\t...(slots.footer && { footer: (): VNode[] => slots.footer() }),\n\t\t\t\t\t...(slots.prefix && { prefix: (): VNode[] => slots.prefix() }),\n\t\t\t\t\t...(slots.empty && { empty: (): VNode[] => slots.empty() }),\n\t\t\t\t\t...(slots.tag && { tag: (): VNode[] => slots.tag() }),\n\t\t\t\t\t...(slots.loading && { loading: (): VNode[] => slots.loading() }),\n\t\t\t\t\t...(slots.label && {\n\t\t\t\t\t\tlabel: ({ label, value }: { label: string; value: string | number | boolean | object }): VNode[] =>\n\t\t\t\t\t\t\tslots.label({ label, value }),\n\t\t\t\t\t}),\n\t\t\t\t}}\n\t\t\t</ElSelect>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** @description 使选择器的输入框获取焦点 */\n\t\t\tfocus: computed(() => selectRef.value?.focus),\n\t\t\t/** @description 使选择器的输入框失去焦点,并隐藏下拉框 */\n\t\t\tblur: computed(() => selectRef.value?.blur),\n\t\t\t/** @description 获取当前选中的标签 */\n\t\t\tselectedLabel: computed(() => selectRef.value?.selectedLabel),\n\t\t\t/** @description 加载状态 */\n\t\t\tloading: computed(() => state.loading),\n\t\t\t/** @description 刷新 */\n\t\t\trefresh: loadData,\n\t\t\t/** @description 设置选择 */\n\t\t\tsetSelection: (value: string | number | boolean | object | (string | number | boolean | object)[]) => handleChange(value),\n\t\t\t/** @description 清除选择 */\n\t\t\tclearSelection: () => handleChange(null),\n\t\t});\n\t},\n});\n"],"names":["SelectProps","name","String","id","modelValue","type","Array","Number","Boolean","Object","default","undefined","autocomplete","automaticDropdown","size","useSizeProp","effect","definePropType","disabled","clearable","filterable","allowCreate","loading","popperClass","popperOptions","remote","loadingText","noMatchText","noDataText","remoteMethod","Function","filterMethod","multiple","multipleLimit","placeholder","defaultFirstOption","reserveKeyword","valueKey","collapseTags","collapseTagsTooltip","maxCollapseTags","teleported","useTooltipContentProps","persistent","clearIcon","CircleClose","fitInputWidth","suffixIcon","ArrowDown","tagType","tagProps","tagEffect","validateEvent","remoteShowSuffix","placement","fallbackPlacements","useEmptyValuesProps","useAriaProps","faSelectProps","label","width","moreDetail","lazy","defaultSelected","props","hide","children","data","requestApi","initParam","faSelectEmits","selectEmits","value","isString","isNumber","isBoolean","isObject","isArray","isNull","dataChangeCallBack","change","Select","emits","slots","makeSlots","setup","attrs","emit","expose","selectedLabel","useVModel","passive","_globalSize","useGlobalSize","state","reactive","withDefineType","selectorData","debut","echo","length","nextRefresh","selectRef","ref","handleData","map","m","isFunction","filter","f","loadData","async","params","resData","error","consoleError","handleChange","valueArr","dataList","includes","isNil","find","handleClear","handleVisibleChange","visible","watch","newValue","hasLabel","slice","item","index","immediate","onMounted","oldValue","isEqual","deep","elSelectProps","useProps","elSelectEmits","useEmits","elPopperClass","computed","localClass","useRender","_createVNode","ElSelect","_mergeProps","class","style","addUnit","$event","onChange","onClear","onVisibleChange","FaSelectOption","header","footer","prefix","empty","tag","useExpose","focus","blur","refresh","setSelection","clearSelection"],"mappings":"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"}
|
|
@@ -584,6 +584,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
584
584
|
width: string | number;
|
|
585
585
|
persistent: boolean;
|
|
586
586
|
fallbackPlacements: Placement[];
|
|
587
|
+
filterable: boolean;
|
|
587
588
|
moreDetail: boolean;
|
|
588
589
|
loadingText: string;
|
|
589
590
|
noMatchText: string;
|
|
@@ -592,7 +593,6 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
592
593
|
collapseTagsTooltip: boolean;
|
|
593
594
|
valueOnClear: import('element-plus/es/utils/index.mjs').EpPropMergeType<(new (...args: any[]) => string | number | boolean | Function) | (() => string | number | boolean | Function | null) | ((new (...args: any[]) => string | number | boolean | Function) | (() => string | number | boolean | Function | null))[], unknown, unknown>;
|
|
594
595
|
automaticDropdown: boolean;
|
|
595
|
-
filterable: boolean;
|
|
596
596
|
allowCreate: boolean;
|
|
597
597
|
remote: boolean;
|
|
598
598
|
multiple: boolean;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),l=require("element-plus"),a=require("@element-plus/icons-vue"),t=require("../../select/index.js"),o=require("@fast-china/utils"),r=require("@vueuse/core"),i=require("lodash-unified"),s=require("../../select/src/select.js"),d={...s.SelectProps,disabled:{type:Boolean,default:void 0},loadingText:{type:String,default:"加载中..."},noMatchText:{type:String,default:"暂无匹配的数据"},noDataText:{type:String,default:"暂无数据"},collapseTags:{type:Boolean,default:!0},collapseTagsTooltip:{type:Boolean,default:!0},modelValue:{type:o.definePropType([String,Number,Boolean,Object,Array]),default:void 0},label:o.definePropType([String,Array]),width:{type:[String,Number],default:"100%"},moreDetail:Boolean,props:{type:o.definePropType(Object),default:()=>({label:"label",hide:"hide",disabled:"disabled",children:"children"})},requestApi:{type:o.definePropType(Function)},initParam:o.definePropType([String,Number,Object])},u={...l.selectEmits,"update:modelValue":e=>i.isString(e)||i.isNumber(e)||i.isBoolean(e)||i.isObject(e)||i.isArray(e)||i.isNull(e),"update:label":e=>i.isString(e)||i.isArray(e)||i.isNull(e),dataChangeCallBack:e=>i.isArray(e),change:(e,l)=>!0},n=e.defineComponent({name:"FaSelectPage",props:d,emits:u,slots:o.makeSlots(),setup(d,{attrs:u,slots:n,emit:c,expose:p}){const g=r.useVModel(d,"label",c),f=l.useGlobalSize(),m=e.reactive({value:o.withDefineType(),loading:!1,selectorData:o.withDefineType([]),selectedList:o.withDefineType([]),debut:!0,echo:!0,nextRefresh:!1,pageIndex:1,pageSize:15,totalRows:0,searchValue:void 0,defaultSelectorData:o.withDefineType()}),b=e.ref(),h=e=>e?.map(e=>({...e,value:e[d.valueKey],label:i.isFunction(d.props.label)?d.props.label(e):e[d.props.label??"label"],hide:i.isFunction(d.props.hide)?d.props.hide(e):e[d.props.hide??"hide"],disabled:i.isFunction(d.props.disabled)?d.props.disabled(e):e[d.props.disabled??"disabled"],children:i.isFunction(d.props.children)?h(d.props.children(e)):h(e[d.props.children??"children"])})).filter(e=>!e.hide),v=async e=>{m.loading=!0,m.pageIndex=e??m.pageIndex;const l={...d.initParam??{},pageIndex:m.pageIndex,pageSize:m.pageSize,searchValue:m.searchValue};try{const e=await d.requestApi(l);m.echo=!1,m.totalRows=e.totalRows,m.selectorData=h(e.rows),c("dataChangeCallBack",m.selectorData)}catch(a){o.consoleError("FaSelectPage",a),m.pageIndex=1,m.totalRows=0,m.selectorData=[]}finally{m.loading=!1}},y=e=>{if(d.multiple){const l=e;if(0===l?.length)return m.value=null,g.value=null,m.selectedList=[],c("update:modelValue",null),void c("change",null,null);const a=m.selectorData.filter(e=>l.includes(e.value));m.value=e,g.value=a.map(e=>e.label),m.selectedList=[...m.selectedList.filter(e=>!a.some(l=>l.value===e.value)),...a].filter(e=>l.includes(e.value)),c("update:modelValue",e),c("change",a,e)}else{if(i.isNil(e))return m.value=null,g.value=null,m.selectedList=[],c("update:modelValue",null),void c("change",null,null);const l=m.selectorData.find(l=>l.value===e);m.value=e,g.value=l.label,m.selectedList.some(l=>l.value===e)||(m.selectedList=[l]),c("update:modelValue",e),c("change",l,e)}},S=()=>{m.value=null,g.value=null,m.selectedList=[],c("update:modelValue",null),c("clear")},V=async e=>{e&&(m.debut?(m.debut=!1,await v()):m.nextRefresh&&(m.nextRefresh=!1,await v())),c("visible-change",e)};e.watch(()=>d.modelValue,e=>{if(m.echo&&!i.isNil(e)){const l=!i.isNil(d.label);if(d.multiple){if(!i.isArray(e))return void o.consoleError("FaSelectPage","当启用 multiple 时,传入的 modelValue 必须是Array。");if(l&&!i.isArray(d.label))return void o.consoleError("FaSelectPage","当启用 multiple 时,传入的 modelValue:label 必须是Array。");m.selectedList=e.slice(0,d.multipleLimit>0?d.multipleLimit:e.length).map((e,a)=>({value:e,label:l?d.label[a]:void 0}))}else{if(i.isArray(e))return void o.consoleError("FaSelectPage","当禁用 multiple 时,传入的 modelValue 不能是Array。");if(l&&i.isArray(d.label))return void o.consoleError("FaSelectPage","当禁用 multiple 时,传入的 modelValue:label 不能是Array。");m.defaultSelectorData={value:e,label:d.label}}}m.value=e},{immediate:!0}),e.onMounted(()=>{e.watch(()=>d.initParam,(e,l)=>{i.isEqual(e,l)||(m.nextRefresh=!0,i.isNil(m.value)||y())})});const x=o.useProps(d,s.SelectProps,["modelValue","popperClass","loading"]),w=o.useEmits(l.selectEmits,c,["update:modelValue","change","clear","visible-change"]),P=e.computed(()=>{let e=`fa-select-page-dropdown fa-select-page-dropdown-${f.value} ${d.popperClass}`;return d.moreDetail&&(e+=` fa-select-dropdown__more-detail fa-select-dropdown__more-detail-${f.value}`),e});return o.useRender(()=>e.createVNode(l.ElSelect,e.mergeProps(x.value,w.value,{ref:b,class:"fa-select-page",popperClass:P.value,style:{width:o.addUnit(d.width)},modelValue:m.value,"onUpdate:modelValue":e=>m.value=e,loading:m.loading,onChange:y,onClear:S,onVisibleChange:V}),{default:()=>m.selectorData.map(l=>e.createVNode(t.FaSelectOption,{data:l,moreDetail:d.moreDetail},{default:n.default})),header:()=>e.createVNode(e.Fragment,null,[m.defaultSelectorData&&e.createVNode(l.ElOption,{class:"fa-select-page-dropdown__default-selector",value:m.defaultSelectorData.value,label:m.defaultSelectorData.label,disabled:!0},{default:()=>[e.createVNode("span",null,[m.defaultSelectorData.label]),e.createVNode("span",null,[e.createTextVNode("Default")])]}),e.createVNode(l.ElInput,{class:"fa-select-page-dropdown__search-input",clearable:!0,placeholder:"请输入关键字搜索",modelValue:m.searchValue,modelModifiers:{trim:!0},"onUpdate:modelValue":e=>m.searchValue=e,onKeyup:e=>{"Enter"===e.key&&v(1)}},{append:()=>e.createVNode(l.ElButton,{loading:m.loading,icon:a.Search,onClick:()=>v(1)},null)}),n.header&&n.header()]),footer:()=>e.createVNode(e.Fragment,null,[e.createVNode(l.ElPagination,{class:"fa-select-page-dropdown__pagination",size:"small",currentPage:m.pageIndex,pageSize:m.pageSize,total:m.totalRows,layout:"prev, pager, next, total",pagerCount:5,onCurrentChange:v},null),n.footer&&n.footer()]),...n.prefix&&{prefix:()=>n.prefix()},...n.empty&&{empty:()=>n.empty()},...n.tag&&{tag:()=>n.tag()},...n.loading&&{loading:()=>n.loading()},...d.multiple?{label:({label:l,value:a})=>{const t=m.selectedList.find(e=>e.value===a);return n.label?n.label({label:t?.label,value:i.isNil(t)?a:t?.value}):t&&e.createVNode("span",{class:"el-select__tags-text"},[t.label])}}:n.label&&{label:({label:e,value:l})=>n.label({label:e,value:l})}})),o.useExpose(p,{focus:e.computed(()=>b.value?.focus),blur:e.computed(()=>b.value?.blur),selectedLabel:e.computed(()=>b.value?.selectedLabel),loading:e.computed(()=>m.loading),selectedList:e.computed(()=>m.selectedList),refresh:v,setSelection:e=>y(e),clearSelection:()=>y(null)})}});exports.default=n,exports.faSelectPageEmits=u,exports.faSelectPageProps=d;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),l=require("element-plus"),a=require("@element-plus/icons-vue"),t=require("../../select/index.js"),o=require("@fast-china/utils"),r=require("@vueuse/core"),i=require("lodash-unified"),s=require("../../select/src/select.js"),d={...s.SelectProps,disabled:{type:Boolean,default:void 0},loadingText:{type:String,default:"加载中..."},noMatchText:{type:String,default:"暂无匹配的数据"},noDataText:{type:String,default:"暂无数据"},collapseTags:{type:Boolean,default:!0},collapseTagsTooltip:{type:Boolean,default:!0},modelValue:{type:o.definePropType([String,Number,Boolean,Object,Array]),default:void 0},label:o.definePropType([String,Array]),width:{type:[String,Number],default:"100%"},moreDetail:Boolean,props:{type:o.definePropType(Object),default:()=>({label:"label",hide:"hide",disabled:"disabled",children:"children"})},requestApi:{type:o.definePropType(Function)},initParam:o.definePropType([String,Number,Object])},u={...l.selectEmits,"update:modelValue":e=>i.isString(e)||i.isNumber(e)||i.isBoolean(e)||i.isObject(e)||i.isArray(e)||i.isNull(e),"update:label":e=>i.isString(e)||i.isArray(e)||i.isNull(e),dataChangeCallBack:e=>i.isArray(e),change:(e,l)=>!0},n=e.defineComponent({name:"FaSelectPage",props:d,emits:u,slots:o.makeSlots(),setup(d,{attrs:u,slots:n,emit:c,expose:p}){const g=r.useVModel(d,"label",c,{passive:!0}),f=l.useGlobalSize(),m=e.reactive({value:o.withDefineType(),loading:!1,selectorData:o.withDefineType([]),selectedList:o.withDefineType([]),debut:!0,echo:!0,nextRefresh:!1,pageIndex:1,pageSize:15,totalRows:0,searchValue:void 0,defaultSelectorData:o.withDefineType()}),b=e.ref(),h=e=>e?.map(e=>({...e,value:e[d.valueKey],label:i.isFunction(d.props.label)?d.props.label(e):e[d.props.label??"label"],hide:i.isFunction(d.props.hide)?d.props.hide(e):e[d.props.hide??"hide"],disabled:i.isFunction(d.props.disabled)?d.props.disabled(e):e[d.props.disabled??"disabled"],children:i.isFunction(d.props.children)?h(d.props.children(e)):h(e[d.props.children??"children"])})).filter(e=>!e.hide),v=async e=>{m.loading=!0,m.pageIndex=e??m.pageIndex;const l={...d.initParam??{},pageIndex:m.pageIndex,pageSize:m.pageSize,searchValue:m.searchValue};try{const e=await d.requestApi(l);m.echo=!1,m.totalRows=e.totalRows,m.selectorData=h(e.rows),c("dataChangeCallBack",m.selectorData)}catch(a){o.consoleError("FaSelectPage",a),m.pageIndex=1,m.totalRows=0,m.selectorData=[]}finally{m.loading=!1}},y=e=>{if(d.multiple){const l=e;if(0===l?.length)return m.value=null,g.value=null,m.selectedList=[],c("update:modelValue",null),void c("change",null,null);const a=m.selectorData.filter(e=>l.includes(e.value));m.value=e,g.value=a.map(e=>e.label),m.selectedList=[...m.selectedList.filter(e=>!a.some(l=>l.value===e.value)),...a].filter(e=>l.includes(e.value)),c("update:modelValue",e),c("change",a,e)}else{if(i.isNil(e))return m.value=null,g.value=null,m.selectedList=[],c("update:modelValue",null),void c("change",null,null);const l=m.selectorData.find(l=>l.value===e);m.value=e,g.value=l.label,m.selectedList.some(l=>l.value===e)||(m.selectedList=[l]),c("update:modelValue",e),c("change",l,e)}},S=()=>{m.value=null,g.value=null,m.selectedList=[],c("update:modelValue",null),c("clear")},V=async e=>{e&&(m.debut?(m.debut=!1,await v()):m.nextRefresh&&(m.nextRefresh=!1,await v())),c("visible-change",e)};e.watch(()=>d.modelValue,e=>{if(m.echo&&!i.isNil(e)){const l=!i.isNil(d.label);if(d.multiple){if(!i.isArray(e))return void o.consoleError("FaSelectPage","当启用 multiple 时,传入的 modelValue 必须是Array。");if(l&&!i.isArray(d.label))return void o.consoleError("FaSelectPage","当启用 multiple 时,传入的 modelValue:label 必须是Array。");m.selectedList=e.slice(0,d.multipleLimit>0?d.multipleLimit:e.length).map((e,a)=>({value:e,label:l?d.label[a]:void 0}))}else{if(i.isArray(e))return void o.consoleError("FaSelectPage","当禁用 multiple 时,传入的 modelValue 不能是Array。");if(l&&i.isArray(d.label))return void o.consoleError("FaSelectPage","当禁用 multiple 时,传入的 modelValue:label 不能是Array。");m.defaultSelectorData={value:e,label:d.label}}}m.value=e},{immediate:!0}),e.onMounted(()=>{e.watch(()=>d.initParam,(e,l)=>{i.isEqual(e,l)||(m.nextRefresh=!0,i.isNil(m.value)||y())})});const x=o.useProps(d,s.SelectProps,["modelValue","popperClass","loading"]),w=o.useEmits(l.selectEmits,c,["update:modelValue","change","clear","visible-change"]),P=e.computed(()=>{let e=`fa-select-page-dropdown fa-select-page-dropdown-${f.value} ${d.popperClass}`;return d.moreDetail&&(e+=` fa-select-dropdown__more-detail fa-select-dropdown__more-detail-${f.value}`),e});return o.useRender(()=>e.createVNode(l.ElSelect,e.mergeProps(x.value,w.value,{ref:b,class:"fa-select-page",popperClass:P.value,style:{width:o.addUnit(d.width)},modelValue:m.value,"onUpdate:modelValue":e=>m.value=e,loading:m.loading,onChange:y,onClear:S,onVisibleChange:V}),{default:()=>m.selectorData.map(l=>e.createVNode(t.FaSelectOption,{data:l,moreDetail:d.moreDetail},{default:n.default})),header:()=>e.createVNode(e.Fragment,null,[m.defaultSelectorData&&e.createVNode(l.ElOption,{class:"fa-select-page-dropdown__default-selector",value:m.defaultSelectorData.value,label:m.defaultSelectorData.label,disabled:!0},{default:()=>[e.createVNode("span",null,[m.defaultSelectorData.label]),e.createVNode("span",null,[e.createTextVNode("Default")])]}),e.createVNode(l.ElInput,{class:"fa-select-page-dropdown__search-input",clearable:!0,placeholder:"请输入关键字搜索",modelValue:m.searchValue,modelModifiers:{trim:!0},"onUpdate:modelValue":e=>m.searchValue=e,onKeyup:e=>{"Enter"===e.key&&v(1)}},{append:()=>e.createVNode(l.ElButton,{loading:m.loading,icon:a.Search,onClick:()=>v(1)},null)}),n.header&&n.header()]),footer:()=>e.createVNode(e.Fragment,null,[e.createVNode(l.ElPagination,{class:"fa-select-page-dropdown__pagination",size:"small",currentPage:m.pageIndex,pageSize:m.pageSize,total:m.totalRows,layout:"prev, pager, next, total",pagerCount:5,onCurrentChange:v},null),n.footer&&n.footer()]),...n.prefix&&{prefix:()=>n.prefix()},...n.empty&&{empty:()=>n.empty()},...n.tag&&{tag:()=>n.tag()},...n.loading&&{loading:()=>n.loading()},...d.multiple?{label:({label:l,value:a})=>{const t=m.selectedList.find(e=>e.value===a);return n.label?n.label({label:t?.label,value:i.isNil(t)?a:t?.value}):t&&e.createVNode("span",{class:"el-select__tags-text"},[t.label])}}:n.label&&{label:({label:e,value:l})=>n.label({label:e,value:l})}})),o.useExpose(p,{focus:e.computed(()=>b.value?.focus),blur:e.computed(()=>b.value?.blur),selectedLabel:e.computed(()=>b.value?.selectedLabel),loading:e.computed(()=>m.loading),selectedList:e.computed(()=>m.selectedList),refresh:v,setSelection:e=>y(e),clearSelection:()=>y(null)})}});exports.default=n,exports.faSelectPageEmits=u,exports.faSelectPageProps=d;
|
|
2
2
|
//# sourceMappingURL=selectPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectPage.js","sources":["../../../../../packages/components/selectPage/src/selectPage.tsx"],"sourcesContent":["import { Fragment, computed, defineComponent, onMounted, reactive, ref, watch } from \"vue\";\nimport { ElButton, ElInput, ElOption, ElPagination, ElSelect, selectEmits, useGlobalSize } from \"element-plus\";\nimport { Search } from \"@element-plus/icons-vue\";\nimport { FaSelectOption, SelectProps } from \"@fast-element-plus/components/select\";\nimport { type SelectComponentProps } from \"@fast-element-plus/components/select/src/select\";\nimport { addUnit, consoleError, definePropType, makeSlots, useEmits, useExpose, useProps, useRender, withDefineType } from \"@fast-china/utils\";\nimport { useVModel } from \"@vueuse/core\";\nimport { isArray, isBoolean, isEqual, isFunction, isNil, isNull, isNumber, isObject, isString } from \"lodash-unified\";\nimport type { ElSelectorOutput } from \"@fast-element-plus/components/select\";\nimport type { PagedInput, PagedResult } from \"@fast-element-plus/components/table\";\nimport type { VNode } from \"vue\";\n\nexport const faSelectPageProps = {\n\t...SelectProps,\n\t/** @description whether Select is disabled 重载使其支持 ElForm*/\n\tdisabled: {\n\t\ttype: Boolean,\n\t\tdefault: undefined,\n\t},\n\t/** @description displayed text while loading data from server, default is 'Loading' */\n\tloadingText: {\n\t\ttype: String,\n\t\tdefault: \"加载中...\",\n\t},\n\t/** @description displayed text when no data matches the filtering query, you can also use slot `empty`, default is 'No matching data' */\n\tnoMatchText: {\n\t\ttype: String,\n\t\tdefault: \"暂无匹配的数据\",\n\t},\n\t/** @description displayed text when there is no options, you can also use slot `empty`, default is 'No data' */\n\tnoDataText: {\n\t\ttype: String,\n\t\tdefault: \"暂无数据\",\n\t},\n\t/** @description whether to collapse tags to a text when multiple selecting */\n\tcollapseTags: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description whether show all selected tags when mouse hover text of collapse-tags. To use this, `collapse-tags` must be true */\n\tcollapseTagsTooltip: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description v-model绑定值 */\n\tmodelValue: {\n\t\ttype: definePropType<string | number | boolean | object | (string | number | boolean | object)[]>([String, Number, Boolean, Object, Array]),\n\t\tdefault: undefined,\n\t},\n\t/** @description v-model:label绑定值 */\n\tlabel: definePropType<string | string[]>([String, Array]),\n\t/** @description 宽度 */\n\twidth: {\n\t\ttype: [String, Number],\n\t\tdefault: \"100%\",\n\t},\n\t/** @description 更多细节,只有使用slot的时候有用 */\n\tmoreDetail: Boolean,\n\t/** @description 配置选项 */\n\tprops: {\n\t\ttype: definePropType<SelectComponentProps>(Object),\n\t\tdefault: (): Partial<SelectComponentProps> => ({\n\t\t\tlabel: \"label\",\n\t\t\thide: \"hide\",\n\t\t\tdisabled: \"disabled\",\n\t\t\tchildren: \"children\",\n\t\t}),\n\t},\n\t/** @description 请求api */\n\trequestApi: {\n\t\ttype: definePropType<(params?: PagedInput) => Promise<PagedResult<ElSelectorOutput>>>(Function),\n\t},\n\t/** 初始化参数 */\n\tinitParam: definePropType<string | number | any>([String, Number, Object]),\n};\n\nexport const faSelectPageEmits = {\n\t...selectEmits,\n\t/** @description v-model 回调 */\n\t\"update:modelValue\": (value: string | number | boolean | object | (string | number | boolean | object)[]): boolean =>\n\t\tisString(value) || isNumber(value) || isBoolean(value) || isObject(value) || isArray(value) || isNull(value),\n\t/** @description v-model:label 回调 */\n\t\"update:label\": (value: string | string[]): boolean => isString(value) || isArray(value) || isNull(value),\n\t/** @description 数据改变 */\n\tdataChangeCallBack: (data: ElSelectorOutput[] | any[]): boolean => isArray(data),\n\t/** @description 改变 */\n\tchange: (\n\t\tdata: ElSelectorOutput | ElSelectorOutput[] | any | any[],\n\t\tvalue?: string | number | boolean | object | (string | number | boolean | object)[]\n\t): boolean => true,\n};\n\ntype FaSelectPageSlots = {\n\t/** @description FaSelectOption 默认内容插槽 */\n\tdefault: ElSelectorOutput;\n\t/** @description 下拉列表顶部的内容 */\n\theader: never;\n\t/** @description 下拉列表底部的内容 */\n\tfooter: never;\n\t/** @description Select 组件头部内容 */\n\tprefix: never;\n\t/** @description 无选项时的列表 */\n\tempty: never;\n\t/** @description select 组件自定义标签内容 */\n\ttag: never;\n\t/** @description select 组件自定义 loading内容 */\n\tloading: never;\n\t/** @description select 组件自定义标签内容 */\n\tlabel: { label: string; value: string | number | boolean | object };\n};\n\nexport default defineComponent({\n\tname: \"FaSelectPage\",\n\tprops: faSelectPageProps,\n\temits: faSelectPageEmits,\n\tslots: makeSlots<FaSelectPageSlots>(),\n\tsetup(props, { attrs, slots, emit, expose }) {\n\t\tconst selectedLabel = useVModel(props, \"label\", emit);\n\t\tconst _globalSize = useGlobalSize();\n\n\t\tconst state = reactive({\n\t\t\tvalue: withDefineType<string | number | boolean | object | (string | number | boolean | object)[]>(),\n\t\t\tloading: false,\n\t\t\tselectorData: withDefineType<ElSelectorOutput[]>([]),\n\t\t\t/** 选中的数据 */\n\t\t\tselectedList: withDefineType<ElSelectorOutput[]>([]),\n\t\t\t/** 首次出现 */\n\t\t\tdebut: true,\n\t\t\t/** 回显 */\n\t\t\techo: true,\n\t\t\t/** 下次刷新 */\n\t\t\tnextRefresh: false,\n\t\t\tpageIndex: 1,\n\t\t\tpageSize: 15,\n\t\t\ttotalRows: 0,\n\t\t\tsearchValue: undefined,\n\t\t\tdefaultSelectorData: withDefineType<ElSelectorOutput>(),\n\t\t});\n\n\t\tconst selectRef = ref<InstanceType<typeof ElSelect>>();\n\n\t\tconst handleData = (data: ElSelectorOutput[]): ElSelectorOutput[] => {\n\t\t\treturn data\n\t\t\t\t?.map((m) => ({\n\t\t\t\t\t...m,\n\t\t\t\t\tvalue: m[props.valueKey],\n\t\t\t\t\tlabel: isFunction(props.props.label) ? props.props.label(m) : m[props.props.label ?? \"label\"],\n\t\t\t\t\thide: isFunction(props.props.hide) ? props.props.hide(m) : m[props.props.hide ?? \"hide\"],\n\t\t\t\t\tdisabled: isFunction(props.props.disabled) ? props.props.disabled(m) : m[props.props.disabled ?? \"disabled\"],\n\t\t\t\t\tchildren: isFunction(props.props.children)\n\t\t\t\t\t\t? handleData(props.props.children(m))\n\t\t\t\t\t\t: handleData(m[props.props.children ?? \"children\"]),\n\t\t\t\t}))\n\t\t\t\t.filter((f) => !f.hide);\n\t\t};\n\n\t\tconst loadData = async (pageIndex?: number): Promise<void> => {\n\t\t\tstate.loading = true;\n\t\t\tstate.pageIndex = pageIndex ?? state.pageIndex;\n\t\t\tconst params: PagedInput = {\n\t\t\t\t...(props.initParam ?? {}),\n\t\t\t\tpageIndex: state.pageIndex,\n\t\t\t\tpageSize: state.pageSize,\n\t\t\t\tsearchValue: state.searchValue,\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tconst resData = await props.requestApi(params);\n\t\t\t\t// 这里不允许回显了\n\t\t\t\tstate.echo = false;\n\t\t\t\tstate.totalRows = resData.totalRows;\n\t\t\t\tstate.selectorData = handleData(resData.rows);\n\t\t\t\temit(\"dataChangeCallBack\", state.selectorData);\n\t\t\t} catch (error) {\n\t\t\t\tconsoleError(\"FaSelectPage\", error);\n\t\t\t\tstate.pageIndex = 1;\n\t\t\t\tstate.totalRows = 0;\n\t\t\t\tstate.selectorData = [];\n\t\t\t} finally {\n\t\t\t\tstate.loading = false;\n\t\t\t}\n\t\t};\n\n\t\tconst handleChange = (value?: string | number | boolean | object | (string | number | boolean | object)[]): void => {\n\t\t\t// 判断是否为多选\n\t\t\tif (props.multiple) {\n\t\t\t\t// value 必然是数组\n\t\t\t\tconst valueArr = value as (string | number | boolean | object)[];\n\t\t\t\tif (valueArr?.length === 0) {\n\t\t\t\t\tstate.value = null;\n\t\t\t\t\tselectedLabel.value = null;\n\t\t\t\t\tstate.selectedList = [];\n\t\t\t\t\temit(\"update:modelValue\", null);\n\t\t\t\t\temit(\"change\", null, null);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst dataList = state.selectorData.filter((f) => valueArr.includes(f.value));\n\t\t\t\tstate.value = value;\n\t\t\t\tselectedLabel.value = dataList.map((m) => m.label);\n\t\t\t\tstate.selectedList = [...state.selectedList.filter((f) => !dataList.some((s) => s.value === f.value)), ...dataList]\n\t\t\t\t\t// 过滤不存在的\n\t\t\t\t\t.filter((f) => valueArr.includes(f.value));\n\t\t\t\temit(\"update:modelValue\", value);\n\t\t\t\temit(\"change\", dataList, value);\n\t\t\t} else {\n\t\t\t\t// value 必然不是数组\n\t\t\t\tif (isNil(value)) {\n\t\t\t\t\tstate.value = null;\n\t\t\t\t\tselectedLabel.value = null;\n\t\t\t\t\tstate.selectedList = [];\n\t\t\t\t\temit(\"update:modelValue\", null);\n\t\t\t\t\temit(\"change\", null, null);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst data = state.selectorData.find((f) => f.value === value);\n\t\t\t\tstate.value = value;\n\t\t\t\tselectedLabel.value = data.label;\n\t\t\t\tif (!state.selectedList.some((s) => s.value === value)) {\n\t\t\t\t\tstate.selectedList = [data];\n\t\t\t\t}\n\t\t\t\temit(\"update:modelValue\", value);\n\t\t\t\temit(\"change\", data, value);\n\t\t\t}\n\t\t};\n\n\t\tconst handleClear = (): void => {\n\t\t\tstate.value = null;\n\t\t\tselectedLabel.value = null;\n\t\t\tstate.selectedList = [];\n\t\t\temit(\"update:modelValue\", null);\n\t\t\temit(\"clear\");\n\t\t};\n\n\t\tconst handleVisibleChange = async (visible: boolean): Promise<void> => {\n\t\t\tif (visible) {\n\t\t\t\tif (state.debut) {\n\t\t\t\t\t// 首次出现\n\t\t\t\t\tstate.debut = false;\n\t\t\t\t\tawait loadData();\n\t\t\t\t} else {\n\t\t\t\t\t// 判断再次出现是否需要刷新数据\n\t\t\t\t\tif (state.nextRefresh) {\n\t\t\t\t\t\tstate.nextRefresh = false;\n\t\t\t\t\t\tawait loadData();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\temit(\"visible-change\", visible);\n\t\t};\n\n\t\twatch(\n\t\t\t() => props.modelValue,\n\t\t\t(newValue) => {\n\t\t\t\tif (state.echo && !isNil(newValue)) {\n\t\t\t\t\tconst hasLabel = !isNil(props.label);\n\t\t\t\t\t// 判断是否为多选\n\t\t\t\t\tif (props.multiple) {\n\t\t\t\t\t\tif (!isArray(newValue)) {\n\t\t\t\t\t\t\tconsoleError(\"FaSelectPage\", \"当启用 multiple 时,传入的 modelValue 必须是Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (hasLabel && !isArray(props.label)) {\n\t\t\t\t\t\t\tconsoleError(\"FaSelectPage\", \"当启用 multiple 时,传入的 modelValue:label 必须是Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstate.selectedList = newValue\n\t\t\t\t\t\t\t// 最大选项截取\n\t\t\t\t\t\t\t.slice(0, props.multipleLimit > 0 ? props.multipleLimit : newValue.length)\n\t\t\t\t\t\t\t.map((item, index) => ({\n\t\t\t\t\t\t\t\tvalue: item,\n\t\t\t\t\t\t\t\tlabel: hasLabel ? props.label[index] : undefined,\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (isArray(newValue)) {\n\t\t\t\t\t\t\tconsoleError(\"FaSelectPage\", \"当禁用 multiple 时,传入的 modelValue 不能是Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (hasLabel && isArray(props.label)) {\n\t\t\t\t\t\t\tconsoleError(\"FaSelectPage\", \"当禁用 multiple 时,传入的 modelValue:label 不能是Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstate.defaultSelectorData = {\n\t\t\t\t\t\t\tvalue: newValue,\n\t\t\t\t\t\t\tlabel: props.label,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstate.value = newValue;\n\t\t\t},\n\t\t\t{\n\t\t\t\timmediate: true,\n\t\t\t}\n\t\t);\n\n\t\tonMounted(() => {\n\t\t\twatch(\n\t\t\t\t() => props.initParam,\n\t\t\t\t(newValue, oldValue) => {\n\t\t\t\t\tif (!isEqual(newValue, oldValue)) {\n\t\t\t\t\t\tstate.nextRefresh = true;\n\t\t\t\t\t\tif (!isNil(state.value)) {\n\t\t\t\t\t\t\thandleChange();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t});\n\n\t\tconst elSelectProps = useProps(props, SelectProps, [\"modelValue\", \"popperClass\", \"loading\"]);\n\t\tconst elSelectEmits = useEmits(selectEmits, emit, [\"update:modelValue\", \"change\", \"clear\", \"visible-change\"]);\n\t\tconst elPopperClass = computed(() => {\n\t\t\tlet localClass = `fa-select-page-dropdown fa-select-page-dropdown-${_globalSize.value} ${props.popperClass}`;\n\t\t\tif (props.moreDetail) {\n\t\t\t\tlocalClass += ` fa-select-dropdown__more-detail fa-select-dropdown__more-detail-${_globalSize.value}`;\n\t\t\t}\n\t\t\treturn localClass;\n\t\t});\n\n\t\tuseRender(() => (\n\t\t\t<ElSelect\n\t\t\t\t{...elSelectProps.value}\n\t\t\t\t{...elSelectEmits.value}\n\t\t\t\tref={selectRef}\n\t\t\t\tclass=\"fa-select-page\"\n\t\t\t\tpopperClass={elPopperClass.value}\n\t\t\t\tstyle={{ width: addUnit(props.width) }}\n\t\t\t\tvModel={state.value}\n\t\t\t\tloading={state.loading}\n\t\t\t\tonChange={handleChange}\n\t\t\t\tonClear={handleClear}\n\t\t\t\tonVisibleChange={handleVisibleChange}\n\t\t\t>\n\t\t\t\t{{\n\t\t\t\t\tdefault: (): VNode[] =>\n\t\t\t\t\t\tstate.selectorData.map((item) => (\n\t\t\t\t\t\t\t<FaSelectOption vSlots={{ default: slots.default }} data={item} moreDetail={props.moreDetail} />\n\t\t\t\t\t\t)),\n\t\t\t\t\theader: (): VNode[] => (\n\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t{state.defaultSelectorData && (\n\t\t\t\t\t\t\t\t<ElOption\n\t\t\t\t\t\t\t\t\tclass=\"fa-select-page-dropdown__default-selector\"\n\t\t\t\t\t\t\t\t\tvalue={state.defaultSelectorData.value}\n\t\t\t\t\t\t\t\t\tlabel={state.defaultSelectorData.label}\n\t\t\t\t\t\t\t\t\tdisabled={true}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<span>{state.defaultSelectorData.label}</span>\n\t\t\t\t\t\t\t\t\t<span>Default</span>\n\t\t\t\t\t\t\t\t</ElOption>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t<ElInput\n\t\t\t\t\t\t\t\t\tclass=\"fa-select-page-dropdown__search-input\"\n\t\t\t\t\t\t\t\t\tclearable\n\t\t\t\t\t\t\t\t\tplaceholder=\"请输入关键字搜索\"\n\t\t\t\t\t\t\t\t\tvModel_trim={state.searchValue}\n\t\t\t\t\t\t\t\t\tonKeyup={(event: KeyboardEvent) => {\n\t\t\t\t\t\t\t\t\t\tif (event.key === \"Enter\") {\n\t\t\t\t\t\t\t\t\t\t\tloadData(1);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\t\tappend: () => <ElButton loading={state.loading} icon={Search} onClick={() => loadData(1)}></ElButton>,\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t</ElInput>\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t{slots.header && slots.header()}\n\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t),\n\t\t\t\t\tfooter: () => (\n\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t<ElPagination\n\t\t\t\t\t\t\t\tclass=\"fa-select-page-dropdown__pagination\"\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\tcurrentPage={state.pageIndex}\n\t\t\t\t\t\t\t\tpageSize={state.pageSize}\n\t\t\t\t\t\t\t\ttotal={state.totalRows}\n\t\t\t\t\t\t\t\tlayout=\"prev, pager, next, total\"\n\t\t\t\t\t\t\t\tpagerCount={5}\n\t\t\t\t\t\t\t\tonCurrentChange={loadData}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{slots.footer && slots.footer()}\n\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t),\n\t\t\t\t\t...(slots.prefix && { prefix: (): VNode[] => slots.prefix() }),\n\t\t\t\t\t...(slots.empty && { empty: (): VNode[] => slots.empty() }),\n\t\t\t\t\t...(slots.tag && { tag: (): VNode[] => slots.tag() }),\n\t\t\t\t\t...(slots.loading && { loading: (): VNode[] => slots.loading() }),\n\t\t\t\t\t...(props.multiple\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tlabel: ({ label, value }: { label: string; value: string | number | boolean | object }): VNode[] => {\n\t\t\t\t\t\t\t\t\tconst selectedData = state.selectedList.find((f) => f.value === value);\n\t\t\t\t\t\t\t\t\tif (slots.label) {\n\t\t\t\t\t\t\t\t\t\treturn slots.label({ label: selectedData?.label, value: isNil(selectedData) ? value : selectedData?.value });\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn selectedData && <span class=\"el-select__tags-text\">{selectedData.label}</span>;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: slots.label && {\n\t\t\t\t\t\t\t\tlabel: ({ label, value }: { label: string; value: string | number | boolean | object }): VNode[] =>\n\t\t\t\t\t\t\t\t\tslots.label({ label, value }),\n\t\t\t\t\t\t\t}),\n\t\t\t\t}}\n\t\t\t</ElSelect>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** @description 使选择器的输入框获取焦点 */\n\t\t\tfocus: computed(() => selectRef.value?.focus),\n\t\t\t/** @description 使选择器的输入框失去焦点,并隐藏下拉框 */\n\t\t\tblur: computed(() => selectRef.value?.blur),\n\t\t\t/** @description 获取当前选中的标签 */\n\t\t\tselectedLabel: computed(() => selectRef.value?.selectedLabel),\n\t\t\t/** @description 加载状态 */\n\t\t\tloading: computed(() => state.loading),\n\t\t\t/** @description 选中的数据 */\n\t\t\tselectedList: computed(() => state.selectedList),\n\t\t\t/** @description 刷新 */\n\t\t\trefresh: loadData,\n\t\t\t/** @description 设置选择 */\n\t\t\tsetSelection: (value: string | number | boolean | object | (string | number | boolean | object)[]) => handleChange(value),\n\t\t\t/** @description 清除选择 */\n\t\t\tclearSelection: () => handleChange(null),\n\t\t});\n\t},\n});\n"],"names":["faSelectPageProps","SelectProps","disabled","type","Boolean","default","undefined","loadingText","String","noMatchText","noDataText","collapseTags","collapseTagsTooltip","modelValue","definePropType","Number","Object","Array","label","width","moreDetail","props","hide","children","requestApi","Function","initParam","faSelectPageEmits","selectEmits","value","isString","isNumber","isBoolean","isObject","isArray","isNull","dataChangeCallBack","data","change","SelectPage","name","emits","slots","makeSlots","setup","attrs","emit","expose","selectedLabel","useVModel","_globalSize","useGlobalSize","state","reactive","withDefineType","loading","selectorData","selectedList","debut","echo","nextRefresh","pageIndex","pageSize","totalRows","searchValue","defaultSelectorData","selectRef","ref","handleData","map","m","valueKey","isFunction","filter","f","loadData","async","params","resData","rows","error","consoleError","handleChange","multiple","valueArr","length","dataList","includes","some","s","isNil","find","handleClear","handleVisibleChange","visible","watch","newValue","hasLabel","slice","multipleLimit","item","index","immediate","onMounted","oldValue","isEqual","elSelectProps","useProps","elSelectEmits","useEmits","elPopperClass","computed","localClass","popperClass","useRender","_createVNode","ElSelect","_mergeProps","class","style","addUnit","$event","onChange","onClear","onVisibleChange","FaSelectOption","header","_Fragment","ElOption","_createTextVNode","ElInput","clearable","placeholder","modelModifiers","trim","onKeyup","event","key","append","ElButton","icon","Search","onClick","footer","ElPagination","size","currentPage","total","layout","pagerCount","onCurrentChange","prefix","empty","tag","selectedData","useExpose","focus","blur","refresh","setSelection","clearSelection"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"selectPage.js","sources":["../../../../../packages/components/selectPage/src/selectPage.tsx"],"sourcesContent":["import { Fragment, computed, defineComponent, onMounted, reactive, ref, watch } from \"vue\";\nimport { ElButton, ElInput, ElOption, ElPagination, ElSelect, selectEmits, useGlobalSize } from \"element-plus\";\nimport { Search } from \"@element-plus/icons-vue\";\nimport { FaSelectOption, SelectProps } from \"@fast-element-plus/components/select\";\nimport { type SelectComponentProps } from \"@fast-element-plus/components/select/src/select\";\nimport { addUnit, consoleError, definePropType, makeSlots, useEmits, useExpose, useProps, useRender, withDefineType } from \"@fast-china/utils\";\nimport { useVModel } from \"@vueuse/core\";\nimport { isArray, isBoolean, isEqual, isFunction, isNil, isNull, isNumber, isObject, isString } from \"lodash-unified\";\nimport type { ElSelectorOutput } from \"@fast-element-plus/components/select\";\nimport type { PagedInput, PagedResult } from \"@fast-element-plus/components/table\";\nimport type { VNode } from \"vue\";\n\nexport const faSelectPageProps = {\n\t...SelectProps,\n\t/** @description whether Select is disabled 重载使其支持 ElForm*/\n\tdisabled: {\n\t\ttype: Boolean,\n\t\tdefault: undefined,\n\t},\n\t/** @description displayed text while loading data from server, default is 'Loading' */\n\tloadingText: {\n\t\ttype: String,\n\t\tdefault: \"加载中...\",\n\t},\n\t/** @description displayed text when no data matches the filtering query, you can also use slot `empty`, default is 'No matching data' */\n\tnoMatchText: {\n\t\ttype: String,\n\t\tdefault: \"暂无匹配的数据\",\n\t},\n\t/** @description displayed text when there is no options, you can also use slot `empty`, default is 'No data' */\n\tnoDataText: {\n\t\ttype: String,\n\t\tdefault: \"暂无数据\",\n\t},\n\t/** @description whether to collapse tags to a text when multiple selecting */\n\tcollapseTags: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description whether show all selected tags when mouse hover text of collapse-tags. To use this, `collapse-tags` must be true */\n\tcollapseTagsTooltip: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description v-model绑定值 */\n\tmodelValue: {\n\t\ttype: definePropType<string | number | boolean | object | (string | number | boolean | object)[]>([String, Number, Boolean, Object, Array]),\n\t\tdefault: undefined,\n\t},\n\t/** @description v-model:label绑定值 */\n\tlabel: definePropType<string | string[]>([String, Array]),\n\t/** @description 宽度 */\n\twidth: {\n\t\ttype: [String, Number],\n\t\tdefault: \"100%\",\n\t},\n\t/** @description 更多细节,只有使用slot的时候有用 */\n\tmoreDetail: Boolean,\n\t/** @description 配置选项 */\n\tprops: {\n\t\ttype: definePropType<SelectComponentProps>(Object),\n\t\tdefault: (): Partial<SelectComponentProps> => ({\n\t\t\tlabel: \"label\",\n\t\t\thide: \"hide\",\n\t\t\tdisabled: \"disabled\",\n\t\t\tchildren: \"children\",\n\t\t}),\n\t},\n\t/** @description 请求api */\n\trequestApi: {\n\t\ttype: definePropType<(params?: PagedInput) => Promise<PagedResult<ElSelectorOutput>>>(Function),\n\t},\n\t/** 初始化参数 */\n\tinitParam: definePropType<string | number | any>([String, Number, Object]),\n};\n\nexport const faSelectPageEmits = {\n\t...selectEmits,\n\t/** @description v-model 回调 */\n\t\"update:modelValue\": (value: string | number | boolean | object | (string | number | boolean | object)[]): boolean =>\n\t\tisString(value) || isNumber(value) || isBoolean(value) || isObject(value) || isArray(value) || isNull(value),\n\t/** @description v-model:label 回调 */\n\t\"update:label\": (value: string | string[]): boolean => isString(value) || isArray(value) || isNull(value),\n\t/** @description 数据改变 */\n\tdataChangeCallBack: (data: ElSelectorOutput[] | any[]): boolean => isArray(data),\n\t/** @description 改变 */\n\tchange: (\n\t\tdata: ElSelectorOutput | ElSelectorOutput[] | any | any[],\n\t\tvalue?: string | number | boolean | object | (string | number | boolean | object)[]\n\t): boolean => true,\n};\n\ntype FaSelectPageSlots = {\n\t/** @description FaSelectOption 默认内容插槽 */\n\tdefault: ElSelectorOutput;\n\t/** @description 下拉列表顶部的内容 */\n\theader: never;\n\t/** @description 下拉列表底部的内容 */\n\tfooter: never;\n\t/** @description Select 组件头部内容 */\n\tprefix: never;\n\t/** @description 无选项时的列表 */\n\tempty: never;\n\t/** @description select 组件自定义标签内容 */\n\ttag: never;\n\t/** @description select 组件自定义 loading内容 */\n\tloading: never;\n\t/** @description select 组件自定义标签内容 */\n\tlabel: { label: string; value: string | number | boolean | object };\n};\n\nexport default defineComponent({\n\tname: \"FaSelectPage\",\n\tprops: faSelectPageProps,\n\temits: faSelectPageEmits,\n\tslots: makeSlots<FaSelectPageSlots>(),\n\tsetup(props, { attrs, slots, emit, expose }) {\n\t\tconst selectedLabel = useVModel(props, \"label\", emit, { passive: true });\n\t\tconst _globalSize = useGlobalSize();\n\n\t\tconst state = reactive({\n\t\t\tvalue: withDefineType<string | number | boolean | object | (string | number | boolean | object)[]>(),\n\t\t\tloading: false,\n\t\t\tselectorData: withDefineType<ElSelectorOutput[]>([]),\n\t\t\t/** 选中的数据 */\n\t\t\tselectedList: withDefineType<ElSelectorOutput[]>([]),\n\t\t\t/** 首次出现 */\n\t\t\tdebut: true,\n\t\t\t/** 回显 */\n\t\t\techo: true,\n\t\t\t/** 下次刷新 */\n\t\t\tnextRefresh: false,\n\t\t\tpageIndex: 1,\n\t\t\tpageSize: 15,\n\t\t\ttotalRows: 0,\n\t\t\tsearchValue: undefined,\n\t\t\tdefaultSelectorData: withDefineType<ElSelectorOutput>(),\n\t\t});\n\n\t\tconst selectRef = ref<InstanceType<typeof ElSelect>>();\n\n\t\tconst handleData = (data: ElSelectorOutput[]): ElSelectorOutput[] => {\n\t\t\treturn data\n\t\t\t\t?.map((m) => ({\n\t\t\t\t\t...m,\n\t\t\t\t\tvalue: m[props.valueKey],\n\t\t\t\t\tlabel: isFunction(props.props.label) ? props.props.label(m) : m[props.props.label ?? \"label\"],\n\t\t\t\t\thide: isFunction(props.props.hide) ? props.props.hide(m) : m[props.props.hide ?? \"hide\"],\n\t\t\t\t\tdisabled: isFunction(props.props.disabled) ? props.props.disabled(m) : m[props.props.disabled ?? \"disabled\"],\n\t\t\t\t\tchildren: isFunction(props.props.children)\n\t\t\t\t\t\t? handleData(props.props.children(m))\n\t\t\t\t\t\t: handleData(m[props.props.children ?? \"children\"]),\n\t\t\t\t}))\n\t\t\t\t.filter((f) => !f.hide);\n\t\t};\n\n\t\tconst loadData = async (pageIndex?: number): Promise<void> => {\n\t\t\tstate.loading = true;\n\t\t\tstate.pageIndex = pageIndex ?? state.pageIndex;\n\t\t\tconst params: PagedInput = {\n\t\t\t\t...(props.initParam ?? {}),\n\t\t\t\tpageIndex: state.pageIndex,\n\t\t\t\tpageSize: state.pageSize,\n\t\t\t\tsearchValue: state.searchValue,\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tconst resData = await props.requestApi(params);\n\t\t\t\t// 这里不允许回显了\n\t\t\t\tstate.echo = false;\n\t\t\t\tstate.totalRows = resData.totalRows;\n\t\t\t\tstate.selectorData = handleData(resData.rows);\n\t\t\t\temit(\"dataChangeCallBack\", state.selectorData);\n\t\t\t} catch (error) {\n\t\t\t\tconsoleError(\"FaSelectPage\", error);\n\t\t\t\tstate.pageIndex = 1;\n\t\t\t\tstate.totalRows = 0;\n\t\t\t\tstate.selectorData = [];\n\t\t\t} finally {\n\t\t\t\tstate.loading = false;\n\t\t\t}\n\t\t};\n\n\t\tconst handleChange = (value?: string | number | boolean | object | (string | number | boolean | object)[]): void => {\n\t\t\t// 判断是否为多选\n\t\t\tif (props.multiple) {\n\t\t\t\t// value 必然是数组\n\t\t\t\tconst valueArr = value as (string | number | boolean | object)[];\n\t\t\t\tif (valueArr?.length === 0) {\n\t\t\t\t\tstate.value = null;\n\t\t\t\t\tselectedLabel.value = null;\n\t\t\t\t\tstate.selectedList = [];\n\t\t\t\t\temit(\"update:modelValue\", null);\n\t\t\t\t\temit(\"change\", null, null);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst dataList = state.selectorData.filter((f) => valueArr.includes(f.value));\n\t\t\t\tstate.value = value;\n\t\t\t\tselectedLabel.value = dataList.map((m) => m.label);\n\t\t\t\tstate.selectedList = [...state.selectedList.filter((f) => !dataList.some((s) => s.value === f.value)), ...dataList]\n\t\t\t\t\t// 过滤不存在的\n\t\t\t\t\t.filter((f) => valueArr.includes(f.value));\n\t\t\t\temit(\"update:modelValue\", value);\n\t\t\t\temit(\"change\", dataList, value);\n\t\t\t} else {\n\t\t\t\t// value 必然不是数组\n\t\t\t\tif (isNil(value)) {\n\t\t\t\t\tstate.value = null;\n\t\t\t\t\tselectedLabel.value = null;\n\t\t\t\t\tstate.selectedList = [];\n\t\t\t\t\temit(\"update:modelValue\", null);\n\t\t\t\t\temit(\"change\", null, null);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst data = state.selectorData.find((f) => f.value === value);\n\t\t\t\tstate.value = value;\n\t\t\t\tselectedLabel.value = data.label;\n\t\t\t\tif (!state.selectedList.some((s) => s.value === value)) {\n\t\t\t\t\tstate.selectedList = [data];\n\t\t\t\t}\n\t\t\t\temit(\"update:modelValue\", value);\n\t\t\t\temit(\"change\", data, value);\n\t\t\t}\n\t\t};\n\n\t\tconst handleClear = (): void => {\n\t\t\tstate.value = null;\n\t\t\tselectedLabel.value = null;\n\t\t\tstate.selectedList = [];\n\t\t\temit(\"update:modelValue\", null);\n\t\t\temit(\"clear\");\n\t\t};\n\n\t\tconst handleVisibleChange = async (visible: boolean): Promise<void> => {\n\t\t\tif (visible) {\n\t\t\t\tif (state.debut) {\n\t\t\t\t\t// 首次出现\n\t\t\t\t\tstate.debut = false;\n\t\t\t\t\tawait loadData();\n\t\t\t\t} else {\n\t\t\t\t\t// 判断再次出现是否需要刷新数据\n\t\t\t\t\tif (state.nextRefresh) {\n\t\t\t\t\t\tstate.nextRefresh = false;\n\t\t\t\t\t\tawait loadData();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\temit(\"visible-change\", visible);\n\t\t};\n\n\t\twatch(\n\t\t\t() => props.modelValue,\n\t\t\t(newValue) => {\n\t\t\t\tif (state.echo && !isNil(newValue)) {\n\t\t\t\t\tconst hasLabel = !isNil(props.label);\n\t\t\t\t\t// 判断是否为多选\n\t\t\t\t\tif (props.multiple) {\n\t\t\t\t\t\tif (!isArray(newValue)) {\n\t\t\t\t\t\t\tconsoleError(\"FaSelectPage\", \"当启用 multiple 时,传入的 modelValue 必须是Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (hasLabel && !isArray(props.label)) {\n\t\t\t\t\t\t\tconsoleError(\"FaSelectPage\", \"当启用 multiple 时,传入的 modelValue:label 必须是Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstate.selectedList = newValue\n\t\t\t\t\t\t\t// 最大选项截取\n\t\t\t\t\t\t\t.slice(0, props.multipleLimit > 0 ? props.multipleLimit : newValue.length)\n\t\t\t\t\t\t\t.map((item, index) => ({\n\t\t\t\t\t\t\t\tvalue: item,\n\t\t\t\t\t\t\t\tlabel: hasLabel ? props.label[index] : undefined,\n\t\t\t\t\t\t\t}));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (isArray(newValue)) {\n\t\t\t\t\t\t\tconsoleError(\"FaSelectPage\", \"当禁用 multiple 时,传入的 modelValue 不能是Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (hasLabel && isArray(props.label)) {\n\t\t\t\t\t\t\tconsoleError(\"FaSelectPage\", \"当禁用 multiple 时,传入的 modelValue:label 不能是Array。\");\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstate.defaultSelectorData = {\n\t\t\t\t\t\t\tvalue: newValue,\n\t\t\t\t\t\t\tlabel: props.label,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstate.value = newValue;\n\t\t\t},\n\t\t\t{\n\t\t\t\timmediate: true,\n\t\t\t}\n\t\t);\n\n\t\tonMounted(() => {\n\t\t\twatch(\n\t\t\t\t() => props.initParam,\n\t\t\t\t(newValue, oldValue) => {\n\t\t\t\t\tif (!isEqual(newValue, oldValue)) {\n\t\t\t\t\t\tstate.nextRefresh = true;\n\t\t\t\t\t\tif (!isNil(state.value)) {\n\t\t\t\t\t\t\thandleChange();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t});\n\n\t\tconst elSelectProps = useProps(props, SelectProps, [\"modelValue\", \"popperClass\", \"loading\"]);\n\t\tconst elSelectEmits = useEmits(selectEmits, emit, [\"update:modelValue\", \"change\", \"clear\", \"visible-change\"]);\n\t\tconst elPopperClass = computed(() => {\n\t\t\tlet localClass = `fa-select-page-dropdown fa-select-page-dropdown-${_globalSize.value} ${props.popperClass}`;\n\t\t\tif (props.moreDetail) {\n\t\t\t\tlocalClass += ` fa-select-dropdown__more-detail fa-select-dropdown__more-detail-${_globalSize.value}`;\n\t\t\t}\n\t\t\treturn localClass;\n\t\t});\n\n\t\tuseRender(() => (\n\t\t\t<ElSelect\n\t\t\t\t{...elSelectProps.value}\n\t\t\t\t{...elSelectEmits.value}\n\t\t\t\tref={selectRef}\n\t\t\t\tclass=\"fa-select-page\"\n\t\t\t\tpopperClass={elPopperClass.value}\n\t\t\t\tstyle={{ width: addUnit(props.width) }}\n\t\t\t\tvModel={state.value}\n\t\t\t\tloading={state.loading}\n\t\t\t\tonChange={handleChange}\n\t\t\t\tonClear={handleClear}\n\t\t\t\tonVisibleChange={handleVisibleChange}\n\t\t\t>\n\t\t\t\t{{\n\t\t\t\t\tdefault: (): VNode[] =>\n\t\t\t\t\t\tstate.selectorData.map((item) => (\n\t\t\t\t\t\t\t<FaSelectOption vSlots={{ default: slots.default }} data={item} moreDetail={props.moreDetail} />\n\t\t\t\t\t\t)),\n\t\t\t\t\theader: (): VNode[] => (\n\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t{state.defaultSelectorData && (\n\t\t\t\t\t\t\t\t<ElOption\n\t\t\t\t\t\t\t\t\tclass=\"fa-select-page-dropdown__default-selector\"\n\t\t\t\t\t\t\t\t\tvalue={state.defaultSelectorData.value}\n\t\t\t\t\t\t\t\t\tlabel={state.defaultSelectorData.label}\n\t\t\t\t\t\t\t\t\tdisabled={true}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<span>{state.defaultSelectorData.label}</span>\n\t\t\t\t\t\t\t\t\t<span>Default</span>\n\t\t\t\t\t\t\t\t</ElOption>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t<ElInput\n\t\t\t\t\t\t\t\t\tclass=\"fa-select-page-dropdown__search-input\"\n\t\t\t\t\t\t\t\t\tclearable\n\t\t\t\t\t\t\t\t\tplaceholder=\"请输入关键字搜索\"\n\t\t\t\t\t\t\t\t\tvModel_trim={state.searchValue}\n\t\t\t\t\t\t\t\t\tonKeyup={(event: KeyboardEvent) => {\n\t\t\t\t\t\t\t\t\t\tif (event.key === \"Enter\") {\n\t\t\t\t\t\t\t\t\t\t\tloadData(1);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\t\tappend: () => <ElButton loading={state.loading} icon={Search} onClick={() => loadData(1)}></ElButton>,\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t</ElInput>\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t{slots.header && slots.header()}\n\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t),\n\t\t\t\t\tfooter: () => (\n\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t<ElPagination\n\t\t\t\t\t\t\t\tclass=\"fa-select-page-dropdown__pagination\"\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\tcurrentPage={state.pageIndex}\n\t\t\t\t\t\t\t\tpageSize={state.pageSize}\n\t\t\t\t\t\t\t\ttotal={state.totalRows}\n\t\t\t\t\t\t\t\tlayout=\"prev, pager, next, total\"\n\t\t\t\t\t\t\t\tpagerCount={5}\n\t\t\t\t\t\t\t\tonCurrentChange={loadData}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{slots.footer && slots.footer()}\n\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t),\n\t\t\t\t\t...(slots.prefix && { prefix: (): VNode[] => slots.prefix() }),\n\t\t\t\t\t...(slots.empty && { empty: (): VNode[] => slots.empty() }),\n\t\t\t\t\t...(slots.tag && { tag: (): VNode[] => slots.tag() }),\n\t\t\t\t\t...(slots.loading && { loading: (): VNode[] => slots.loading() }),\n\t\t\t\t\t...(props.multiple\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tlabel: ({ label, value }: { label: string; value: string | number | boolean | object }): VNode[] => {\n\t\t\t\t\t\t\t\t\tconst selectedData = state.selectedList.find((f) => f.value === value);\n\t\t\t\t\t\t\t\t\tif (slots.label) {\n\t\t\t\t\t\t\t\t\t\treturn slots.label({ label: selectedData?.label, value: isNil(selectedData) ? value : selectedData?.value });\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn selectedData && <span class=\"el-select__tags-text\">{selectedData.label}</span>;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: slots.label && {\n\t\t\t\t\t\t\t\tlabel: ({ label, value }: { label: string; value: string | number | boolean | object }): VNode[] =>\n\t\t\t\t\t\t\t\t\tslots.label({ label, value }),\n\t\t\t\t\t\t\t}),\n\t\t\t\t}}\n\t\t\t</ElSelect>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** @description 使选择器的输入框获取焦点 */\n\t\t\tfocus: computed(() => selectRef.value?.focus),\n\t\t\t/** @description 使选择器的输入框失去焦点,并隐藏下拉框 */\n\t\t\tblur: computed(() => selectRef.value?.blur),\n\t\t\t/** @description 获取当前选中的标签 */\n\t\t\tselectedLabel: computed(() => selectRef.value?.selectedLabel),\n\t\t\t/** @description 加载状态 */\n\t\t\tloading: computed(() => state.loading),\n\t\t\t/** @description 选中的数据 */\n\t\t\tselectedList: computed(() => state.selectedList),\n\t\t\t/** @description 刷新 */\n\t\t\trefresh: loadData,\n\t\t\t/** @description 设置选择 */\n\t\t\tsetSelection: (value: string | number | boolean | object | (string | number | boolean | object)[]) => handleChange(value),\n\t\t\t/** @description 清除选择 */\n\t\t\tclearSelection: () => handleChange(null),\n\t\t});\n\t},\n});\n"],"names":["faSelectPageProps","SelectProps","disabled","type","Boolean","default","undefined","loadingText","String","noMatchText","noDataText","collapseTags","collapseTagsTooltip","modelValue","definePropType","Number","Object","Array","label","width","moreDetail","props","hide","children","requestApi","Function","initParam","faSelectPageEmits","selectEmits","value","isString","isNumber","isBoolean","isObject","isArray","isNull","dataChangeCallBack","data","change","SelectPage","name","emits","slots","makeSlots","setup","attrs","emit","expose","selectedLabel","useVModel","passive","_globalSize","useGlobalSize","state","reactive","withDefineType","loading","selectorData","selectedList","debut","echo","nextRefresh","pageIndex","pageSize","totalRows","searchValue","defaultSelectorData","selectRef","ref","handleData","map","m","valueKey","isFunction","filter","f","loadData","async","params","resData","rows","error","consoleError","handleChange","multiple","valueArr","length","dataList","includes","some","s","isNil","find","handleClear","handleVisibleChange","visible","watch","newValue","hasLabel","slice","multipleLimit","item","index","immediate","onMounted","oldValue","isEqual","elSelectProps","useProps","elSelectEmits","useEmits","elPopperClass","computed","localClass","popperClass","useRender","_createVNode","ElSelect","_mergeProps","class","style","addUnit","$event","onChange","onClear","onVisibleChange","FaSelectOption","header","_Fragment","ElOption","_createTextVNode","ElInput","clearable","placeholder","modelModifiers","trim","onKeyup","event","key","append","ElButton","icon","Search","onClick","footer","ElPagination","size","currentPage","total","layout","pagerCount","onCurrentChange","prefix","empty","tag","selectedData","useExpose","focus","blur","refresh","setSelection","clearSelection"],"mappings":"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"}
|
|
@@ -1371,6 +1371,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
1371
1371
|
persistent: boolean;
|
|
1372
1372
|
height: number;
|
|
1373
1373
|
fallbackPlacements: Placement[];
|
|
1374
|
+
filterable: boolean;
|
|
1374
1375
|
moreDetail: boolean;
|
|
1375
1376
|
loadingText: string;
|
|
1376
1377
|
noMatchText: string;
|
|
@@ -1380,7 +1381,6 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
1380
1381
|
defaultSelected: boolean;
|
|
1381
1382
|
valueOnClear: import('element-plus/es/utils/index.mjs').EpPropMergeType<(new (...args: any[]) => string | number | boolean | Function) | (() => string | number | boolean | Function | null) | ((new (...args: any[]) => string | number | boolean | Function) | (() => string | number | boolean | Function | null))[], unknown, unknown>;
|
|
1382
1383
|
automaticDropdown: boolean;
|
|
1383
|
-
filterable: boolean;
|
|
1384
1384
|
allowCreate: boolean;
|
|
1385
1385
|
remote: boolean;
|
|
1386
1386
|
multiple: boolean;
|
|
@@ -1391,9 +1391,9 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
|
|
|
1391
1391
|
maxCollapseTags: number;
|
|
1392
1392
|
tagType: import('element-plus/es/utils/index.mjs').EpPropMergeType<StringConstructor, "primary" | "success" | "warning" | "info" | "danger", unknown>;
|
|
1393
1393
|
tagEffect: import('element-plus/es/utils/index.mjs').EpPropMergeType<StringConstructor, "plain" | "dark" | "light", unknown>;
|
|
1394
|
-
scrollbarAlwaysOn: boolean;
|
|
1395
1394
|
pageResult: boolean;
|
|
1396
1395
|
estimatedOptionHeight: number;
|
|
1397
1396
|
itemHeight: number;
|
|
1397
|
+
scrollbarAlwaysOn: boolean;
|
|
1398
1398
|
}, import('vue').SlotsType<Partial<import('@fast-china/utils').MakeSlots<FaSelectV2Slots>>>, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
1399
1399
|
export default _default;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),l=require("element-plus"),t=require("@element-plus/icons-vue"),a=require("@fast-china/utils"),o=require("@vueuse/core"),r=require("lodash-unified"),i={allowCreate:Boolean,autocomplete:{type:a.definePropType(String),default:"none"},automaticDropdown:Boolean,clearable:Boolean,clearIcon:{type:a.definePropType([String,Object,Function]),default:t.CircleClose},effect:{type:a.definePropType(String),default:"light"},collapseTags:Boolean,collapseTagsTooltip:Boolean,maxCollapseTags:{type:Number,default:1},defaultFirstOption:Boolean,disabled:Boolean,estimatedOptionHeight:{type:Number,default:void 0},filterable:Boolean,filterMethod:Function,height:{type:Number,default:274},itemHeight:{type:Number,default:34},id:String,loading:Boolean,loadingText:String,modelValue:{type:a.definePropType([Array,String,Number,Boolean,Object])},multiple:Boolean,multipleLimit:{type:Number,default:0},name:String,noDataText:String,noMatchText:String,remoteMethod:Function,reserveKeyword:{type:Boolean,default:!0},options:{type:a.definePropType(Array)},placeholder:{type:String},teleported:l.useTooltipContentProps.teleported,persistent:{type:Boolean,default:!0},popperClass:{type:String,default:""},popperOptions:{type:a.definePropType(Object),default:()=>({})},remote:Boolean,size:l.useSizeProp,props:{type:a.definePropType(Object),default:()=>({label:"label",value:"value",disabled:"disabled",options:"options"})},valueKey:{type:String,default:"value"},scrollbarAlwaysOn:Boolean,validateEvent:{type:Boolean,default:!0},offset:{type:Number,default:12},showArrow:{type:Boolean,default:!0},placement:{type:a.definePropType(String),default:"bottom-start"},fallbackPlacements:{type:a.definePropType(Array),default:["bottom-start","top-start","right","left"]},tagType:{...l.tagProps.type,default:"info"},tagEffect:{...l.tagProps.effect,default:"light"},tabindex:{type:[String,Number],default:0},appendTo:String,...l.useEmptyValuesProps,...l.useAriaProps(["ariaLabel"])},u={"update:modelValue":e=>!0,change:e=>!0,"remove-tag":e=>!0,"visible-change":e=>!0,focus:e=>!0,blur:e=>!0,clear:()=>!0},n={...i,disabled:{type:Boolean,default:void 0},loadingText:{type:String,default:"加载中..."},noMatchText:{type:String,default:"暂无匹配的数据"},noDataText:{type:String,default:"暂无数据"},collapseTags:{type:Boolean,default:!0},collapseTagsTooltip:{type:Boolean,default:!0},modelValue:{type:a.definePropType([String,Number,Boolean,Object,Array]),default:void 0},label:a.definePropType([String,Array]),width:{type:[String,Number],default:"100%"},moreDetail:Boolean,lazy:{type:Boolean,default:!0},defaultSelected:Boolean,data:{type:a.definePropType(Array),default:()=>[]},pageResult:Boolean,requestApi:{type:a.definePropType(Function)},initParam:a.definePropType([String,Number,Object])},s={...u,"update:modelValue":e=>r.isString(e)||r.isNumber(e)||r.isBoolean(e)||r.isObject(e)||r.isArray(e)||r.isNull(e),"update:label":e=>r.isString(e)||r.isArray(e)||r.isNull(e),dataChangeCallBack:e=>r.isArray(e),change:(e,l)=>!0},d=e.defineComponent({name:"FaSelectV2",props:n,emits:s,slots:a.makeSlots(),setup(t,{attrs:u,slots:n,emit:d,expose:p}){const c=o.useVModel(t,"label",d),f=l.useGlobalSize(),m=e.reactive({value:a.withDefineType(),loading:!1,selectorData:a.withDefineType([]),debut:!0,echo:!(t.data?.length>0),nextRefresh:!1}),y=e.ref(),g=async()=>{if(t.requestApi){m.loading=!0;const l=t.initParam??{};try{const e=await t.requestApi(l);m.echo=!1,t.pageResult?m.selectorData=e.rows:m.selectorData=e,d("dataChangeCallBack",m.selectorData)}catch(e){a.consoleError("FaSelect",e),m.selectorData=[]}finally{m.loading=!1}}else m.echo=!1,m.selectorData=t.data},b=e=>{if(t.multiple){const l=e;if(0===l?.length)return m.value=null,c.value=null,d("update:modelValue",null),void d("change",null,null);const t=m.selectorData.filter(e=>l.includes(e.value));m.value=e,c.value=t.map(e=>e.label),d("update:modelValue",e),d("change",t,e)}else{if(r.isNil(e))return m.value=null,c.value=null,d("update:modelValue",null),void d("change",null,null);const l=m.selectorData.find(l=>l.value===e);m.value=e,c.value=l.label,d("update:modelValue",e),d("change",l,e)}},v=()=>{m.value=null,c.value=null,d("update:modelValue",null),d("clear")},h=async e=>{e&&(m.debut?(m.debut=!1,!t.defaultSelected&&t.lazy&&await g()):m.nextRefresh&&(m.nextRefresh=!1,await g())),d("visible-change",e)};e.watch(()=>t.modelValue,e=>{if(m.echo&&!r.isNil(e)){const l=!r.isNil(t.label);if(t.multiple){if(!r.isArray(e))return void a.consoleError("FaSelectV2","当启用 multiple 时,传入的 modelValue 必须是Array。");if(l&&!r.isArray(t.label))return void a.consoleError("FaSelectV2","当启用 multiple 时,传入的 modelValue:label 必须是Array。");m.selectorData=e.slice(0,t.multipleLimit>0?t.multipleLimit:e.length).map((e,a)=>({value:e,label:l?t.label[a]:void 0}))}else{if(r.isArray(e))return void a.consoleError("FaSelectV2","当禁用 multiple 时,传入的 modelValue 不能是Array。");if(l&&r.isArray(t.label))return void a.consoleError("FaSelectV2","当禁用 multiple 时,传入的 modelValue:label 不能是Array。");m.selectorData=[{value:e,label:t.label}]}}m.value=e},{immediate:!0}),e.onMounted(async()=>{t.defaultSelected?(await g(),m.selectorData.length>0&&b(t.multiple?[m.selectorData[0].value]:m.selectorData[0].value)):!t.requestApi&&t.data?.length>0?(m.debut=!1,await g()):t.lazy||await g(),e.watch(()=>t.initParam,(e,l)=>{r.isEqual(e,l)||(m.nextRefresh=!0,r.isNil(m.value)||b())}),e.watch(()=>t.data,async()=>{t.requestApi||await g()},{deep:!0})});const S=a.useProps(t,i,["modelValue","popperClass","loading","options","itemHeight"]),T=a.useEmits(s,d,["update:modelValue","change","clear","visible-change"]),V=e.computed(()=>{let e=`fa-select-v2-dropdown ${t.popperClass}`;return t.moreDetail&&(e+=` fa-select-dropdown__more-detail fa-select-dropdown__more-detail-${f.value}`),e});return a.useRender(()=>e.createVNode(l.ElSelectV2,e.mergeProps(S.value,T.value,{ref:y,class:"fa-select-v2",popperClass:V.value,style:{width:a.addUnit(t.width)},modelValue:m.value,"onUpdate:modelValue":e=>m.value=e,loading:m.loading,options:m.selectorData,itemHeight:t.itemHeight+("small"===f.value?0:8),onChange:b,onClear:v,onVisibleChange:h}),{...n.default&&{default:({item:e,index:l,disabled:t})=>n.default({item:e,index:l,disabled:t})},...n.header&&{header:()=>n.header()},...n.footer&&{footer:()=>n.footer()},...n.prefix&&{prefix:()=>n.prefix()},...n.empty&&{empty:()=>n.empty()},...n.tag&&{tag:()=>n.tag()},...n.loading&&{loading:()=>n.loading()},...n.label&&{label:({label:e,value:l})=>n.label({label:e,value:l})}})),a.useExpose(p,{focus:e.computed(()=>y.value?.focus),blur:e.computed(()=>y.value?.blur),selectedLabel:e.computed(()=>y.value?.selectedLabel),loading:e.computed(()=>m.loading),refresh:g,setSelection:e=>b(e),clearSelection:()=>b(null)})}});exports.SelectV2Props=i,exports.default=d,exports.faSelectV2Emits=s,exports.faSelectV2Props=n,exports.selectV2Emits=u;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),l=require("element-plus"),t=require("@element-plus/icons-vue"),a=require("@fast-china/utils"),o=require("@vueuse/core"),r=require("lodash-unified"),i={allowCreate:Boolean,autocomplete:{type:a.definePropType(String),default:"none"},automaticDropdown:Boolean,clearable:Boolean,clearIcon:{type:a.definePropType([String,Object,Function]),default:t.CircleClose},effect:{type:a.definePropType(String),default:"light"},collapseTags:Boolean,collapseTagsTooltip:Boolean,maxCollapseTags:{type:Number,default:1},defaultFirstOption:Boolean,disabled:Boolean,estimatedOptionHeight:{type:Number,default:void 0},filterable:Boolean,filterMethod:Function,height:{type:Number,default:274},itemHeight:{type:Number,default:34},id:String,loading:Boolean,loadingText:String,modelValue:{type:a.definePropType([Array,String,Number,Boolean,Object])},multiple:Boolean,multipleLimit:{type:Number,default:0},name:String,noDataText:String,noMatchText:String,remoteMethod:Function,reserveKeyword:{type:Boolean,default:!0},options:{type:a.definePropType(Array)},placeholder:{type:String},teleported:l.useTooltipContentProps.teleported,persistent:{type:Boolean,default:!0},popperClass:{type:String,default:""},popperOptions:{type:a.definePropType(Object),default:()=>({})},remote:Boolean,size:l.useSizeProp,props:{type:a.definePropType(Object),default:()=>({label:"label",value:"value",disabled:"disabled",options:"options"})},valueKey:{type:String,default:"value"},scrollbarAlwaysOn:Boolean,validateEvent:{type:Boolean,default:!0},offset:{type:Number,default:12},showArrow:{type:Boolean,default:!0},placement:{type:a.definePropType(String),default:"bottom-start"},fallbackPlacements:{type:a.definePropType(Array),default:["bottom-start","top-start","right","left"]},tagType:{...l.tagProps.type,default:"info"},tagEffect:{...l.tagProps.effect,default:"light"},tabindex:{type:[String,Number],default:0},appendTo:String,...l.useEmptyValuesProps,...l.useAriaProps(["ariaLabel"])},u={"update:modelValue":e=>!0,change:e=>!0,"remove-tag":e=>!0,"visible-change":e=>!0,focus:e=>!0,blur:e=>!0,clear:()=>!0},n={...i,disabled:{type:Boolean,default:void 0},loadingText:{type:String,default:"加载中..."},noMatchText:{type:String,default:"暂无匹配的数据"},noDataText:{type:String,default:"暂无数据"},collapseTags:{type:Boolean,default:!0},collapseTagsTooltip:{type:Boolean,default:!0},modelValue:{type:a.definePropType([String,Number,Boolean,Object,Array]),default:void 0},label:a.definePropType([String,Array]),width:{type:[String,Number],default:"100%"},moreDetail:Boolean,lazy:{type:Boolean,default:!0},defaultSelected:Boolean,data:{type:a.definePropType(Array),default:()=>[]},pageResult:Boolean,requestApi:{type:a.definePropType(Function)},initParam:a.definePropType([String,Number,Object])},s={...u,"update:modelValue":e=>r.isString(e)||r.isNumber(e)||r.isBoolean(e)||r.isObject(e)||r.isArray(e)||r.isNull(e),"update:label":e=>r.isString(e)||r.isArray(e)||r.isNull(e),dataChangeCallBack:e=>r.isArray(e),change:(e,l)=>!0},d=e.defineComponent({name:"FaSelectV2",props:n,emits:s,slots:a.makeSlots(),setup(t,{attrs:u,slots:n,emit:d,expose:p}){const c=o.useVModel(t,"label",d,{passive:!0}),f=l.useGlobalSize(),m=e.reactive({value:a.withDefineType(),loading:!1,selectorData:a.withDefineType([]),debut:!0,echo:!(t.data?.length>0),nextRefresh:!1}),y=e.ref(),g=async()=>{if(t.requestApi){m.loading=!0;const l=t.initParam??{};try{const e=await t.requestApi(l);m.echo=!1,t.pageResult?m.selectorData=e.rows:m.selectorData=e,d("dataChangeCallBack",m.selectorData)}catch(e){a.consoleError("FaSelect",e),m.selectorData=[]}finally{m.loading=!1}}else m.echo=!1,m.selectorData=t.data},b=e=>{if(t.multiple){const l=e;if(0===l?.length)return m.value=null,c.value=null,d("update:modelValue",null),void d("change",null,null);const t=m.selectorData.filter(e=>l.includes(e.value));m.value=e,c.value=t.map(e=>e.label),d("update:modelValue",e),d("change",t,e)}else{if(r.isNil(e))return m.value=null,c.value=null,d("update:modelValue",null),void d("change",null,null);const l=m.selectorData.find(l=>l.value===e);m.value=e,c.value=l.label,d("update:modelValue",e),d("change",l,e)}},v=()=>{m.value=null,c.value=null,d("update:modelValue",null),d("clear")},h=async e=>{e&&(m.debut?(m.debut=!1,!t.defaultSelected&&t.lazy&&await g()):m.nextRefresh&&(m.nextRefresh=!1,await g())),d("visible-change",e)};e.watch(()=>t.modelValue,e=>{if(m.echo&&!r.isNil(e)){const l=!r.isNil(t.label);if(t.multiple){if(!r.isArray(e))return void a.consoleError("FaSelectV2","当启用 multiple 时,传入的 modelValue 必须是Array。");if(l&&!r.isArray(t.label))return void a.consoleError("FaSelectV2","当启用 multiple 时,传入的 modelValue:label 必须是Array。");m.selectorData=e.slice(0,t.multipleLimit>0?t.multipleLimit:e.length).map((e,a)=>({value:e,label:l?t.label[a]:void 0}))}else{if(r.isArray(e))return void a.consoleError("FaSelectV2","当禁用 multiple 时,传入的 modelValue 不能是Array。");if(l&&r.isArray(t.label))return void a.consoleError("FaSelectV2","当禁用 multiple 时,传入的 modelValue:label 不能是Array。");m.selectorData=[{value:e,label:t.label}]}}m.value=e},{immediate:!0}),e.onMounted(async()=>{t.defaultSelected?(await g(),m.selectorData.length>0&&b(t.multiple?[m.selectorData[0].value]:m.selectorData[0].value)):!t.requestApi&&t.data?.length>0?(m.debut=!1,await g()):t.lazy||await g(),e.watch(()=>t.initParam,(e,l)=>{r.isEqual(e,l)||(m.nextRefresh=!0,r.isNil(m.value)||b())}),e.watch(()=>t.data,async()=>{t.requestApi||await g()},{deep:!0})});const S=a.useProps(t,i,["modelValue","popperClass","loading","options","itemHeight"]),T=a.useEmits(s,d,["update:modelValue","change","clear","visible-change"]),V=e.computed(()=>{let e=`fa-select-v2-dropdown ${t.popperClass}`;return t.moreDetail&&(e+=` fa-select-dropdown__more-detail fa-select-dropdown__more-detail-${f.value}`),e});return a.useRender(()=>e.createVNode(l.ElSelectV2,e.mergeProps(S.value,T.value,{ref:y,class:"fa-select-v2",popperClass:V.value,style:{width:a.addUnit(t.width)},modelValue:m.value,"onUpdate:modelValue":e=>m.value=e,loading:m.loading,options:m.selectorData,itemHeight:t.itemHeight+("small"===f.value?0:8),onChange:b,onClear:v,onVisibleChange:h}),{...n.default&&{default:({item:e,index:l,disabled:t})=>n.default({item:e,index:l,disabled:t})},...n.header&&{header:()=>n.header()},...n.footer&&{footer:()=>n.footer()},...n.prefix&&{prefix:()=>n.prefix()},...n.empty&&{empty:()=>n.empty()},...n.tag&&{tag:()=>n.tag()},...n.loading&&{loading:()=>n.loading()},...n.label&&{label:({label:e,value:l})=>n.label({label:e,value:l})}})),a.useExpose(p,{focus:e.computed(()=>y.value?.focus),blur:e.computed(()=>y.value?.blur),selectedLabel:e.computed(()=>y.value?.selectedLabel),loading:e.computed(()=>m.loading),refresh:g,setSelection:e=>b(e),clearSelection:()=>b(null)})}});exports.SelectV2Props=i,exports.default=d,exports.faSelectV2Emits=s,exports.faSelectV2Props=n,exports.selectV2Emits=u;
|
|
2
2
|
//# sourceMappingURL=selectV2.js.map
|