fast-element-plus 1.0.12 → 1.0.14

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.
Files changed (79) hide show
  1. package/dist/index.full.js +4322 -4308
  2. package/dist/index.full.js.map +1 -1
  3. package/dist/index.full.min.js +1 -1
  4. package/dist/index.full.min.js.map +1 -1
  5. package/dist/index.full.min.mjs +1 -1
  6. package/dist/index.full.min.mjs.map +1 -1
  7. package/dist/index.full.mjs +4322 -4308
  8. package/dist/index.full.mjs.map +1 -1
  9. package/dist/styles/index.css +6 -6
  10. package/es/component.mjs +1 -1
  11. package/es/component.mjs.map +1 -1
  12. package/es/components/button/index.d.ts +1 -1
  13. package/es/components/button/index.mjs +1 -1
  14. package/es/components/button/index.mjs.map +1 -1
  15. package/es/components/carNumber/index.d.ts +1 -1
  16. package/es/components/carNumber/index.mjs +1 -1
  17. package/es/components/carNumber/index.mjs.map +1 -1
  18. package/es/components/carNumber/src/carNumber.mjs +1 -1
  19. package/es/components/carNumber/src/carNumber.mjs.map +1 -1
  20. package/es/components/inputDialogPage/src/inputDialogPage.d.ts +4 -3
  21. package/es/components/inputDialogPage/src/inputDialogPage.mjs +1 -1
  22. package/es/components/inputDialogPage/src/inputDialogPage.mjs.map +1 -1
  23. package/es/components/select/src/select.d.ts +1 -1
  24. package/es/components/select/src/select.mjs +1 -1
  25. package/es/components/select/src/select.mjs.map +1 -1
  26. package/es/components/selectPage/src/selectPage.d.ts +1 -1
  27. package/es/components/selectPage/src/selectPage.mjs +1 -1
  28. package/es/components/selectPage/src/selectPage.mjs.map +1 -1
  29. package/es/components/selectV2/src/selectV2.d.ts +2 -2
  30. package/es/components/selectV2/src/selectV2.mjs +1 -1
  31. package/es/components/selectV2/src/selectV2.mjs.map +1 -1
  32. package/es/components/table/src/table.d.ts +5 -5
  33. package/es/components/table/src/tableSearchFormItem.mjs +1 -1
  34. package/es/components/table/src/tableSearchFormItem.mjs.map +1 -1
  35. package/es/components/tree/src/tree.d.ts +3 -3
  36. package/es/components/tree/src/tree.mjs +1 -1
  37. package/es/components/tree/src/tree.mjs.map +1 -1
  38. package/es/components/treeSelect/src/treeSelect.d.ts +4 -4
  39. package/es/components/treeSelect/src/treeSelect.mjs +1 -1
  40. package/es/components/treeSelect/src/treeSelect.mjs.map +1 -1
  41. package/es/version.d.ts +1 -1
  42. package/es/version.mjs +1 -1
  43. package/es/version.mjs.map +1 -1
  44. package/lib/component.js +1 -1
  45. package/lib/component.js.map +1 -1
  46. package/lib/components/button/index.d.ts +1 -1
  47. package/lib/components/button/index.js +1 -1
  48. package/lib/components/button/index.js.map +1 -1
  49. package/lib/components/carNumber/index.d.ts +1 -1
  50. package/lib/components/carNumber/index.js +1 -1
  51. package/lib/components/carNumber/index.js.map +1 -1
  52. package/lib/components/carNumber/src/carNumber.js +1 -1
  53. package/lib/components/carNumber/src/carNumber.js.map +1 -1
  54. package/lib/components/inputDialogPage/src/inputDialogPage.d.ts +4 -3
  55. package/lib/components/inputDialogPage/src/inputDialogPage.js +1 -1
  56. package/lib/components/inputDialogPage/src/inputDialogPage.js.map +1 -1
  57. package/lib/components/select/src/select.d.ts +1 -1
  58. package/lib/components/select/src/select.js +1 -1
  59. package/lib/components/select/src/select.js.map +1 -1
  60. package/lib/components/selectPage/src/selectPage.d.ts +1 -1
  61. package/lib/components/selectPage/src/selectPage.js +1 -1
  62. package/lib/components/selectPage/src/selectPage.js.map +1 -1
  63. package/lib/components/selectV2/src/selectV2.d.ts +2 -2
  64. package/lib/components/selectV2/src/selectV2.js +1 -1
  65. package/lib/components/selectV2/src/selectV2.js.map +1 -1
  66. package/lib/components/table/src/table.d.ts +5 -5
  67. package/lib/components/table/src/tableSearchFormItem.js +1 -1
  68. package/lib/components/table/src/tableSearchFormItem.js.map +1 -1
  69. package/lib/components/tree/src/tree.d.ts +3 -3
  70. package/lib/components/tree/src/tree.js +1 -1
  71. package/lib/components/tree/src/tree.js.map +1 -1
  72. package/lib/components/treeSelect/src/treeSelect.d.ts +4 -4
  73. package/lib/components/treeSelect/src/treeSelect.js +1 -1
  74. package/lib/components/treeSelect/src/treeSelect.js.map +1 -1
  75. package/lib/version.d.ts +1 -1
  76. package/lib/version.js +1 -1
  77. package/lib/version.js.map +1 -1
  78. package/package.json +1 -1
  79. package/styles/components/table.scss +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"selectV2.js","sources":["../../../../../packages/components/selectV2/src/selectV2.tsx"],"sourcesContent":["import { computed, defineComponent, onMounted, reactive, ref, watch } from \"vue\";\nimport { ElSelectV2, tagProps, useAriaProps, useEmptyValuesProps, useGlobalSize, useSizeProp, useTooltipContentProps } from \"element-plus\";\nimport { 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, isNil, isNull, isNumber, isObject, isString } from \"lodash-unified\";\nimport type { ElSelectorOutput } from \"@fast-element-plus/components/select/src/select.type\";\nimport type { PagedInput, PagedResult } from \"@fast-element-plus/components/table\";\nimport type { Options, Placement, PopperEffect } from \"element-plus\";\nimport type { Component, VNode } from \"vue\";\n\ntype Props = {\n\tlabel?: string;\n\tvalue?: string;\n\tdisabled?: string;\n\toptions?: string;\n};\n\nexport const SelectV2Props = {\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 autocomplete of select input\n\t */\n\tautocomplete: {\n\t\ttype: definePropType<\"none\" | \"both\" | \"list\" | \"inline\">(String),\n\t\tdefault: \"none\",\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 whether select can be cleared\n\t */\n\tclearable: Boolean,\n\t/**\n\t * @description custom clear icon\n\t */\n\tclearIcon: {\n\t\ttype: definePropType<string | Component>([String, Object, Function]),\n\t\tdefault: CircleClose,\n\t},\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 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\n\t */\n\tdefaultFirstOption: Boolean,\n\t/**\n\t * @description is disabled\n\t */\n\tdisabled: Boolean,\n\t/**\n\t * @description\n\t */\n\testimatedOptionHeight: {\n\t\ttype: Number,\n\t\tdefault: undefined,\n\t},\n\t/**\n\t * @description is filterable\n\t */\n\tfilterable: Boolean,\n\t/**\n\t * @description\n\t */\n\tfilterMethod: Function,\n\t/**\n\t * @description The height of the dropdown panel, 34px for each item\n\t */\n\theight: {\n\t\ttype: Number,\n\t\tdefault: 274, // same as select dropdown menu\n\t},\n\t/**\n\t * @description The height of the dropdown item\n\t */\n\titemHeight: {\n\t\ttype: Number,\n\t\tdefault: 34,\n\t},\n\t/**\n\t * @description\n\t */\n\tid: String,\n\t/**\n\t * @description whether Select is loading data from server\n\t */\n\tloading: 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 biding value\n\t */\n\tmodelValue: {\n\t\ttype: definePropType<any[] | string | number | boolean | Record<string, any> | any>([Array, String, Number, Boolean, Object]),\n\t},\n\t/**\n\t * @description is multiple\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 the name attribute of select input\n\t */\n\tname: String,\n\t/**\n\t * @description displayed text when there is no options, you can also use slot empty, the default is 'No Data'\n\t */\n\tnoDataText: 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 function that gets called when the input value changes. Its parameter is the current input value. To use this, `filterable` must be true\n\t */\n\tremoteMethod: Function,\n\t/**\n\t * @description whether reserve the keyword after select filtered option.\n\t */\n\treserveKeyword: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/**\n\t * @description data of the options, the key of `value` and `label` can be customize by `props`\n\t */\n\toptions: {\n\t\ttype: definePropType<\n\t\t\t(\n\t\t\t\t| Record<string, any>\n\t\t\t\t| (Record<string, any> & {\n\t\t\t\t\t\tcreated?: boolean;\n\t\t\t\t })\n\t\t\t)[]\n\t\t>(Array),\n\t\t// required: true,\n\t},\n\t/**\n\t * @description placeholder, the default is 'Please select'\n\t */\n\tplaceholder: {\n\t\ttype: String,\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 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 search data from server\n\t */\n\tremote: Boolean,\n\t/**\n\t * @description size of component\n\t */\n\tsize: useSizeProp,\n\t/**\n\t * @description configuration options, see the following table\n\t */\n\tprops: {\n\t\ttype: definePropType<Props>(Object),\n\t\tdefault: (): Required<Props> => ({\n\t\t\tlabel: \"label\",\n\t\t\tvalue: \"value\",\n\t\t\tdisabled: \"disabled\",\n\t\t\toptions: \"options\",\n\t\t}),\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 Controls whether the scrollbar is always displayed\n\t */\n\tscrollbarAlwaysOn: Boolean,\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 offset of the dropdown\n\t */\n\toffset: {\n\t\ttype: Number,\n\t\tdefault: 12,\n\t},\n\t/**\n\t * @description Determines whether the arrow is displayed\n\t */\n\tshowArrow: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\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/**\n\t * @description tag type\n\t */\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 tabindex for input\n\t */\n\ttabindex: {\n\t\ttype: [String, Number],\n\t\tdefault: 0,\n\t},\n\t/**\n\t * @description which element the select dropdown appends to\n\t */\n\tappendTo: String,\n\t...useEmptyValuesProps,\n\t...useAriaProps([\"ariaLabel\"]),\n};\n\nexport const selectV2Emits = {\n\t\"update:modelValue\": (value: string | number | boolean | object | (string | number | boolean | object)[]): boolean => true,\n\tchange: (val: string | number | boolean | object | (string | number | boolean | object)[]): boolean => true,\n\t\"remove-tag\": (val: unknown): boolean => true,\n\t\"visible-change\": (visible: boolean): boolean => true,\n\tfocus: (evt: FocusEvent): boolean => true,\n\tblur: (evt: FocusEvent): boolean => true,\n\tclear: (): boolean => true,\n};\n\nexport const faSelectV2Props = {\n\t...SelectV2Props,\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\tdata: {\n\t\ttype: definePropType<ElSelectorOutput[]>(Array),\n\t\tdefault: (): ElSelectorOutput[] => [],\n\t},\n\t/** 分页返回 */\n\tpageResult: Boolean,\n\t/** @description 请求api */\n\trequestApi: {\n\t\ttype: definePropType<((params?: any) => Promise<ElSelectorOutput[]>) | ((params?: PagedInput) => Promise<PagedResult<ElSelectorOutput>>)>(\n\t\t\tFunction\n\t\t),\n\t},\n\t/** 初始化参数 */\n\tinitParam: definePropType<string | number | any>([String, Number, Object]),\n};\n\nexport const faSelectV2Emits = {\n\t...selectV2Emits,\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 FaSelectV2Slots = {\n\t/** @description FaSelectOption 默认内容插槽 */\n\tdefault: { item: ElSelectorOutput; index: number; disabled: boolean };\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: \"FaSelectV2\",\n\tprops: faSelectV2Props,\n\temits: faSelectV2Emits,\n\tslots: makeSlots<FaSelectV2Slots>(),\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 selectV2Ref = ref<InstanceType<typeof ElSelectV2>>();\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\t// 判断是否为分页返回\n\t\t\t\t\tif (props.pageResult) {\n\t\t\t\t\t\tstate.selectorData = (resData as PagedResult<ElSelectorOutput>).rows;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate.selectorData = resData as ElSelectorOutput[];\n\t\t\t\t\t}\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 = 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(\"FaSelectV2\", \"当启用 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(\"FaSelectV2\", \"当启用 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(\"FaSelectV2\", \"当禁用 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(\"FaSelectV2\", \"当禁用 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 elSelectV2Props = useProps(props, SelectV2Props, [\"modelValue\", \"popperClass\", \"loading\", \"options\", \"itemHeight\"]);\n\t\tconst elSelectV2Emits = useEmits(faSelectV2Emits, emit, [\"update:modelValue\", \"change\", \"clear\", \"visible-change\"]);\n\t\tconst elPopperClass = computed(() => {\n\t\t\tlet localClass = `fa-select-v2-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<ElSelectV2\n\t\t\t\t{...elSelectV2Props.value}\n\t\t\t\t{...elSelectV2Emits.value}\n\t\t\t\tref={selectV2Ref}\n\t\t\t\tclass=\"fa-select-v2\"\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\toptions={state.selectorData}\n\t\t\t\titemHeight={props.itemHeight + (_globalSize.value === \"small\" ? 0 : 8)}\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\t...(slots.default && {\n\t\t\t\t\t\tdefault: ({ item, index, disabled }: { item: ElSelectorOutput; index: number; disabled: boolean }): VNode[] =>\n\t\t\t\t\t\t\tslots.default({ item, index, disabled }),\n\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</ElSelectV2>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** @description 使选择器的输入框获取焦点 */\n\t\t\tfocus: computed(() => selectV2Ref.value?.focus),\n\t\t\t/** @description 使选择器的输入框失去焦点,并隐藏下拉框 */\n\t\t\tblur: computed(() => selectV2Ref.value?.blur),\n\t\t\t/** @description 获取当前选中的标签 */\n\t\t\tselectedLabel: computed(() => selectV2Ref.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":["SelectV2Props","allowCreate","Boolean","autocomplete","type","definePropType","String","default","automaticDropdown","clearable","clearIcon","Object","Function","CircleClose","effect","collapseTags","collapseTagsTooltip","maxCollapseTags","Number","defaultFirstOption","disabled","estimatedOptionHeight","undefined","filterable","filterMethod","height","itemHeight","id","loading","loadingText","modelValue","Array","multiple","multipleLimit","name","noDataText","noMatchText","remoteMethod","reserveKeyword","options","placeholder","teleported","useTooltipContentProps","persistent","popperClass","popperOptions","remote","size","useSizeProp","props","label","value","valueKey","scrollbarAlwaysOn","validateEvent","offset","showArrow","placement","fallbackPlacements","tagType","tagProps","tagEffect","tabindex","appendTo","useEmptyValuesProps","useAriaProps","selectV2Emits","change","val","visible","focus","evt","blur","clear","faSelectV2Props","width","moreDetail","lazy","defaultSelected","data","pageResult","requestApi","initParam","faSelectV2Emits","isString","isNumber","isBoolean","isObject","isArray","isNull","dataChangeCallBack","SelectV2","emits","slots","makeSlots","setup","attrs","emit","expose","selectedLabel","useVModel","_globalSize","useGlobalSize","state","reactive","withDefineType","selectorData","debut","echo","length","nextRefresh","selectV2Ref","ref","loadData","async","params","resData","rows","error","consoleError","handleChange","valueArr","dataList","filter","includes","f","map","m","isNil","find","handleClear","handleVisibleChange","watch","newValue","hasLabel","slice","item","index","immediate","onMounted","oldValue","isEqual","deep","elSelectV2Props","useProps","elSelectV2Emits","useEmits","elPopperClass","computed","localClass","useRender","_createVNode","ElSelectV2","_mergeProps","class","style","addUnit","$event","onChange","onClear","onVisibleChange","header","footer","prefix","empty","tag","useExpose","refresh","setSelection","clearSelection"],"mappings":"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"}
1
+ {"version":3,"file":"selectV2.js","sources":["../../../../../packages/components/selectV2/src/selectV2.tsx"],"sourcesContent":["import { computed, defineComponent, onMounted, reactive, ref, watch } from \"vue\";\nimport { ElSelectV2, tagProps, useAriaProps, useEmptyValuesProps, useGlobalSize, useSizeProp, useTooltipContentProps } from \"element-plus\";\nimport { 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, isNil, isNull, isNumber, isObject, isString } from \"lodash-unified\";\nimport type { ElSelectorOutput } from \"@fast-element-plus/components/select/src/select.type\";\nimport type { PagedInput, PagedResult } from \"@fast-element-plus/components/table\";\nimport type { Options, Placement, PopperEffect } from \"element-plus\";\nimport type { Component, VNode } from \"vue\";\n\ntype Props = {\n\tlabel?: string;\n\tvalue?: string;\n\tdisabled?: string;\n\toptions?: string;\n};\n\nexport const SelectV2Props = {\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 autocomplete of select input\n\t */\n\tautocomplete: {\n\t\ttype: definePropType<\"none\" | \"both\" | \"list\" | \"inline\">(String),\n\t\tdefault: \"none\",\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 whether select can be cleared\n\t */\n\tclearable: Boolean,\n\t/**\n\t * @description custom clear icon\n\t */\n\tclearIcon: {\n\t\ttype: definePropType<string | Component>([String, Object, Function]),\n\t\tdefault: CircleClose,\n\t},\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 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\n\t */\n\tdefaultFirstOption: Boolean,\n\t/**\n\t * @description is disabled\n\t */\n\tdisabled: Boolean,\n\t/**\n\t * @description\n\t */\n\testimatedOptionHeight: {\n\t\ttype: Number,\n\t\tdefault: undefined,\n\t},\n\t/**\n\t * @description is filterable\n\t */\n\tfilterable: Boolean,\n\t/**\n\t * @description\n\t */\n\tfilterMethod: Function,\n\t/**\n\t * @description The height of the dropdown panel, 34px for each item\n\t */\n\theight: {\n\t\ttype: Number,\n\t\tdefault: 274, // same as select dropdown menu\n\t},\n\t/**\n\t * @description The height of the dropdown item\n\t */\n\titemHeight: {\n\t\ttype: Number,\n\t\tdefault: 34,\n\t},\n\t/**\n\t * @description\n\t */\n\tid: String,\n\t/**\n\t * @description whether Select is loading data from server\n\t */\n\tloading: 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 biding value\n\t */\n\tmodelValue: {\n\t\ttype: definePropType<any[] | string | number | boolean | Record<string, any> | any>([Array, String, Number, Boolean, Object]),\n\t},\n\t/**\n\t * @description is multiple\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 the name attribute of select input\n\t */\n\tname: String,\n\t/**\n\t * @description displayed text when there is no options, you can also use slot empty, the default is 'No Data'\n\t */\n\tnoDataText: 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 function that gets called when the input value changes. Its parameter is the current input value. To use this, `filterable` must be true\n\t */\n\tremoteMethod: Function,\n\t/**\n\t * @description whether reserve the keyword after select filtered option.\n\t */\n\treserveKeyword: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/**\n\t * @description data of the options, the key of `value` and `label` can be customize by `props`\n\t */\n\toptions: {\n\t\ttype: definePropType<\n\t\t\t(\n\t\t\t\t| Record<string, any>\n\t\t\t\t| (Record<string, any> & {\n\t\t\t\t\t\tcreated?: boolean;\n\t\t\t\t })\n\t\t\t)[]\n\t\t>(Array),\n\t\t// required: true,\n\t},\n\t/**\n\t * @description placeholder, the default is 'Please select'\n\t */\n\tplaceholder: {\n\t\ttype: String,\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 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 search data from server\n\t */\n\tremote: Boolean,\n\t/**\n\t * @description size of component\n\t */\n\tsize: useSizeProp,\n\t/**\n\t * @description configuration options, see the following table\n\t */\n\tprops: {\n\t\ttype: definePropType<Props>(Object),\n\t\tdefault: (): Required<Props> => ({\n\t\t\tlabel: \"label\",\n\t\t\tvalue: \"value\",\n\t\t\tdisabled: \"disabled\",\n\t\t\toptions: \"options\",\n\t\t}),\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 Controls whether the scrollbar is always displayed\n\t */\n\tscrollbarAlwaysOn: Boolean,\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 offset of the dropdown\n\t */\n\toffset: {\n\t\ttype: Number,\n\t\tdefault: 12,\n\t},\n\t/**\n\t * @description Determines whether the arrow is displayed\n\t */\n\tshowArrow: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\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/**\n\t * @description tag type\n\t */\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 tabindex for input\n\t */\n\ttabindex: {\n\t\ttype: [String, Number],\n\t\tdefault: 0,\n\t},\n\t/**\n\t * @description which element the select dropdown appends to\n\t */\n\tappendTo: String,\n\t...useEmptyValuesProps,\n\t...useAriaProps([\"ariaLabel\"]),\n};\n\nexport const selectV2Emits = {\n\t\"update:modelValue\": (value: string | number | boolean | object | (string | number | boolean | object)[]): boolean => true,\n\tchange: (val: string | number | boolean | object | (string | number | boolean | object)[]): boolean => true,\n\t\"remove-tag\": (val: unknown): boolean => true,\n\t\"visible-change\": (visible: boolean): boolean => true,\n\tfocus: (evt: FocusEvent): boolean => true,\n\tblur: (evt: FocusEvent): boolean => true,\n\tclear: (): boolean => true,\n};\n\nexport const faSelectV2Props = {\n\t...SelectV2Props,\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\tdata: {\n\t\ttype: definePropType<ElSelectorOutput[]>(Array),\n\t\tdefault: (): ElSelectorOutput[] => [],\n\t},\n\t/** 分页返回 */\n\tpageResult: Boolean,\n\t/** @description 请求api */\n\trequestApi: {\n\t\ttype: definePropType<((params?: any) => Promise<ElSelectorOutput[]>) | ((params?: PagedInput) => Promise<PagedResult<ElSelectorOutput>>)>(\n\t\t\tFunction\n\t\t),\n\t},\n\t/** 初始化参数 */\n\tinitParam: definePropType<string | number | any>([String, Number, Object]),\n};\n\nexport const faSelectV2Emits = {\n\t...selectV2Emits,\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 FaSelectV2Slots = {\n\t/** @description FaSelectOption 默认内容插槽 */\n\tdefault: { item: ElSelectorOutput; index: number; disabled: boolean };\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: \"FaSelectV2\",\n\tprops: faSelectV2Props,\n\temits: faSelectV2Emits,\n\tslots: makeSlots<FaSelectV2Slots>(),\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 selectV2Ref = ref<InstanceType<typeof ElSelectV2>>();\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\t// 判断是否为分页返回\n\t\t\t\t\tif (props.pageResult) {\n\t\t\t\t\t\tstate.selectorData = (resData as PagedResult<ElSelectorOutput>).rows;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate.selectorData = resData as ElSelectorOutput[];\n\t\t\t\t\t}\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 = 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(\"FaSelectV2\", \"当启用 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(\"FaSelectV2\", \"当启用 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(\"FaSelectV2\", \"当禁用 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(\"FaSelectV2\", \"当禁用 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 elSelectV2Props = useProps(props, SelectV2Props, [\"modelValue\", \"popperClass\", \"loading\", \"options\", \"itemHeight\"]);\n\t\tconst elSelectV2Emits = useEmits(faSelectV2Emits, emit, [\"update:modelValue\", \"change\", \"clear\", \"visible-change\"]);\n\t\tconst elPopperClass = computed(() => {\n\t\t\tlet localClass = `fa-select-v2-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<ElSelectV2\n\t\t\t\t{...elSelectV2Props.value}\n\t\t\t\t{...elSelectV2Emits.value}\n\t\t\t\tref={selectV2Ref}\n\t\t\t\tclass=\"fa-select-v2\"\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\toptions={state.selectorData}\n\t\t\t\titemHeight={props.itemHeight + (_globalSize.value === \"small\" ? 0 : 8)}\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\t...(slots.default && {\n\t\t\t\t\t\tdefault: ({ item, index, disabled }: { item: ElSelectorOutput; index: number; disabled: boolean }): VNode[] =>\n\t\t\t\t\t\t\tslots.default({ item, index, disabled }),\n\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</ElSelectV2>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** @description 使选择器的输入框获取焦点 */\n\t\t\tfocus: computed(() => selectV2Ref.value?.focus),\n\t\t\t/** @description 使选择器的输入框失去焦点,并隐藏下拉框 */\n\t\t\tblur: computed(() => selectV2Ref.value?.blur),\n\t\t\t/** @description 获取当前选中的标签 */\n\t\t\tselectedLabel: computed(() => selectV2Ref.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":["SelectV2Props","allowCreate","Boolean","autocomplete","type","definePropType","String","default","automaticDropdown","clearable","clearIcon","Object","Function","CircleClose","effect","collapseTags","collapseTagsTooltip","maxCollapseTags","Number","defaultFirstOption","disabled","estimatedOptionHeight","undefined","filterable","filterMethod","height","itemHeight","id","loading","loadingText","modelValue","Array","multiple","multipleLimit","name","noDataText","noMatchText","remoteMethod","reserveKeyword","options","placeholder","teleported","useTooltipContentProps","persistent","popperClass","popperOptions","remote","size","useSizeProp","props","label","value","valueKey","scrollbarAlwaysOn","validateEvent","offset","showArrow","placement","fallbackPlacements","tagType","tagProps","tagEffect","tabindex","appendTo","useEmptyValuesProps","useAriaProps","selectV2Emits","change","val","visible","focus","evt","blur","clear","faSelectV2Props","width","moreDetail","lazy","defaultSelected","data","pageResult","requestApi","initParam","faSelectV2Emits","isString","isNumber","isBoolean","isObject","isArray","isNull","dataChangeCallBack","SelectV2","emits","slots","makeSlots","setup","attrs","emit","expose","selectedLabel","useVModel","passive","_globalSize","useGlobalSize","state","reactive","withDefineType","selectorData","debut","echo","length","nextRefresh","selectV2Ref","ref","loadData","async","params","resData","rows","error","consoleError","handleChange","valueArr","dataList","filter","includes","f","map","m","isNil","find","handleClear","handleVisibleChange","watch","newValue","hasLabel","slice","item","index","immediate","onMounted","oldValue","isEqual","deep","elSelectV2Props","useProps","elSelectV2Emits","useEmits","elPopperClass","computed","localClass","useRender","_createVNode","ElSelectV2","_mergeProps","class","style","addUnit","$event","onChange","onClear","onVisibleChange","header","footer","prefix","empty","tag","useExpose","refresh","setSelection","clearSelection"],"mappings":"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"}
@@ -1386,6 +1386,11 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
1386
1386
  lazy: boolean;
1387
1387
  className: string;
1388
1388
  columns: false | FaTableColumnCtx[];
1389
+ scrollbarAlwaysOn: boolean;
1390
+ defaultExpandAll: boolean;
1391
+ indent: number;
1392
+ treeData: boolean;
1393
+ pagination: boolean;
1389
1394
  rowKey: string | ((row: any) => string);
1390
1395
  border: boolean;
1391
1396
  highlightCurrentRow: boolean;
@@ -1402,21 +1407,16 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
1402
1407
  hideSearchTime: boolean;
1403
1408
  futureSearchTime: boolean;
1404
1409
  dataSearchRange: FaTableDataRange;
1405
- pagination: boolean;
1406
1410
  hideImage: boolean;
1407
1411
  single: boolean;
1408
1412
  rowClickSelection: boolean;
1409
- treeData: boolean;
1410
1413
  autoRefresh: boolean;
1411
1414
  stripe: boolean;
1412
1415
  showHeader: boolean;
1413
1416
  showSummary: boolean;
1414
- defaultExpandAll: boolean;
1415
1417
  selectOnIndeterminate: boolean;
1416
- indent: number;
1417
1418
  treeProps: TreeProps;
1418
1419
  tableLayout: Layout;
1419
- scrollbarAlwaysOn: boolean;
1420
1420
  flexible: boolean;
1421
1421
  scrollbarTabindex: string | number;
1422
1422
  }, import('vue').SlotsType<Partial<import('@fast-china/utils').MakeSlots<FaTableSlots>>>, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
@@ -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("@fast-china/utils"),c=require("lodash-unified"),r=require("./table.type.js"),a=require("./useTable.js"),s=["el-input","ELInput","el-input-number","ELInputNumber","el-select","ElSelect","el-select-v2","ElSelectV2","el-tree-select","ElTreeSelect","el-cascader","ElCascader","el-date-picker","ElDatePicker","el-time-picker","ElTimePicker","el-time-select","ElTimeSelect"],u=["el-select","ElSelect","el-select-v2","ElSelectV2","el-tree-select","ElTreeSelect"],n=["el-input","ELInput","el-input-number","ELInputNumber"],i=["el-select","ElSelect","el-select-v2","ElSelectV2","el-tree-select","ElTreeSelect","el-cascader","ElCascader"],o=e.defineComponent({name:"FaTableSearchFormItem",props:{column:{type:t.definePropType(Object),required:!0,default:{}},search:{type:t.definePropType(Function),required:!0}},slots:t.makeSlots(),setup(o,{slots:d}){const m=e.inject(a.tableStateKey),p=e.inject(a.enumMapKey),h=e.reactive({enumDict:t.withDefineType([]),oldValue:void 0}),S=e=>{c.isString(e)&&(e=e.trim()),h.oldValue=m.searchParam[o.column?.search?.key??o.column.prop],m.searchParam[o.column?.search?.key??o.column.prop]=e},E=e=>{o.search()},b=()=>{const e=o.column.search,l={};if(s.includes(e?.el)&&(l.clearable=!0),u.includes(e?.el)&&(l.filterable=!0),n.includes(e?.el)&&(l.placeholder="请输入"),i.includes(e?.el)&&(l.placeholder="请选择"),["el-date-picker","ElDatePicker"].includes(e?.el)&&(l.unlinkPanels=!0,["datetimerange","daterange","monthrange","yearrange"].includes(e?.props?.type)?(l.defaultTime=t.dateUtil.getDefaultTime(),l.shortcuts=t.dateUtil.getShortcuts(),l.rangeSeparator="至",l.startPlaceholder="开始时间",l.endPlaceholder="结束时间"):(l.defaultTime=t.dateUtil.getSimpleTime(),l.shortcuts=t.dateUtil.getSimpleShortcuts())),["el-time-picker","ElTimePicker"].includes(e?.el)&&e?.props?.isRange&&(l.rangeSeparator="至",l.startPlaceholder="开始时间",l.endPlaceholder="结束时间"),["el-select","ElSelect","el-select-v2","ElSelectV2","el-cascader","ElCascader","el-tree-select","ElTreeSelect"].includes(e?.el)){let e;e=o.column.enum&&c.isString(o.column.enum)?p.get(o.column.enum):p.get(o.column.prop??o.column.search?.key),e=e.filter(e=>!1!==e?.show),h.enumDict=e??[]}return["el-select-v2","ElSelectV2","el-cascader","ElCascader"].includes(e?.el)&&(l.options=h.enumDict),["el-tree-select","ElTreeSelect"].includes(e?.el)&&(l.data=h.enumDict),l};t.useRender(()=>e.createVNode(e.Fragment,null,[o.column.search?.el&&e.h(e.resolveComponent(o.column.search.el),{...b(),...o.column.search.props,modelValue:m.searchParam[o.column?.search?.key??o.column.prop],"onUpdate:modelValue":S,onChange:E},{default:()=>["el-select","ElSelect"].includes(o.column.search.el)?h.enumDict.map((t,c)=>e.h(l.ElOption,{key:c,label:t[o.column.search.props?.label??"label"],value:t[o.column.search.props?.value??"value"],disabled:t[o.column.search.props?.disabled??"disabled"]})):d.default&&d.default({column:o.column,search:o.search,...r.getTableDefaultSlots(m)})})]))}});exports.default=o;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),l=require("element-plus"),t=require("@fast-china/utils"),c=require("lodash-unified"),r=require("./table.type.js"),a=require("./useTable.js"),s=["el-input","ELInput","el-input-number","ELInputNumber","el-select","ElSelect","el-select-v2","ElSelectV2","el-tree-select","ElTreeSelect","el-cascader","ElCascader","el-date-picker","ElDatePicker","el-time-picker","ElTimePicker","el-time-select","ElTimeSelect"],n=["el-select","ElSelect","el-select-v2","ElSelectV2","el-tree-select","ElTreeSelect"],u=["el-input","ELInput","el-input-number","ELInputNumber"],i=["el-select","ElSelect","el-select-v2","ElSelectV2","el-tree-select","ElTreeSelect","el-cascader","ElCascader"],o=e.defineComponent({name:"FaTableSearchFormItem",props:{column:{type:t.definePropType(Object),required:!0,default:{}},search:{type:t.definePropType(Function),required:!0}},slots:t.makeSlots(),setup(o,{slots:d}){const m=e.inject(a.tableStateKey),p=e.inject(a.enumMapKey),h=e.reactive({enumDict:t.withDefineType([])}),S=e=>{c.isString(e)&&(e=e.trim()),m.searchParam[o.column?.search?.key??o.column.prop]=e},E=e=>{o.search()},b=()=>{const e=o.column.search,l={};if(s.includes(e?.el)&&(l.clearable=!0),n.includes(e?.el)&&(l.filterable=!0),u.includes(e?.el)&&(l.placeholder="请输入"),i.includes(e?.el)&&(l.placeholder="请选择"),["el-date-picker","ElDatePicker"].includes(e?.el)&&(l.unlinkPanels=!0,["datetimerange","daterange","monthrange","yearrange"].includes(e?.props?.type)?(l.defaultTime=t.dateUtil.getDefaultTime(),l.shortcuts=t.dateUtil.getShortcuts(),l.rangeSeparator="至",l.startPlaceholder="开始时间",l.endPlaceholder="结束时间"):(l.defaultTime=t.dateUtil.getSimpleTime(),l.shortcuts=t.dateUtil.getSimpleShortcuts())),["el-time-picker","ElTimePicker"].includes(e?.el)&&e?.props?.isRange&&(l.rangeSeparator="至",l.startPlaceholder="开始时间",l.endPlaceholder="结束时间"),["el-select","ElSelect","el-select-v2","ElSelectV2","el-cascader","ElCascader","el-tree-select","ElTreeSelect"].includes(e?.el)){let e;e=o.column.enum&&c.isString(o.column.enum)?p.get(o.column.enum):p.get(o.column.prop??o.column.search?.key),e=e.filter(e=>!1!==e?.show),h.enumDict=e??[]}return["el-select-v2","ElSelectV2","el-cascader","ElCascader"].includes(e?.el)&&(l.options=h.enumDict),["el-tree-select","ElTreeSelect"].includes(e?.el)&&(l.data=h.enumDict),l};t.useRender(()=>e.createVNode(e.Fragment,null,[o.column.search?.el&&e.h(e.resolveComponent(o.column.search.el),{...b(),...o.column.search.props,modelValue:m.searchParam[o.column?.search?.key??o.column.prop],"onUpdate:modelValue":S,onChange:E},{default:()=>["el-select","ElSelect"].includes(o.column.search.el)?h.enumDict.map((t,c)=>e.h(l.ElOption,{key:c,label:t[o.column.search.props?.label??"label"],value:t[o.column.search.props?.value??"value"],disabled:t[o.column.search.props?.disabled??"disabled"]})):d.default&&d.default({column:o.column,search:o.search,...r.getTableDefaultSlots(m)})})]))}});exports.default=o;
2
2
  //# sourceMappingURL=tableSearchFormItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tableSearchFormItem.js","sources":["../../../../../packages/components/table/src/tableSearchFormItem.tsx"],"sourcesContent":["import { Fragment, defineComponent, h, inject, reactive, resolveComponent } from \"vue\";\nimport { ElOption } from \"element-plus\";\nimport { dateUtil, definePropType, makeSlots, useRender, withDefineType } from \"@fast-china/utils\";\nimport { isString } from \"lodash-unified\";\nimport { getTableDefaultSlots } from \"./table.type\";\nimport { enumMapKey, tableStateKey } from \"./useTable\";\nimport type { FaTableColumnCtx, FaTableDefaultSlotsResult, FaTableEnumColumnCtx } from \"./table.type\";\n\n/**\n * 已知默认支持的el组件:\n * \tel-input\n * \tel-input-number\n * \tel-select\n * \tel-select-v2\n * \tel-tree-select\n * \tel-cascader\n * \tel-date-picker\n * \tel-time-picker\n * \tel-time-select,\n * \tel-switch\n * 已知组件的默认props\n * clearable:el-input,el-input-number,el-select,el-select-v2,el-tree-select,el-cascader,el-date-picker,el-time-picker,el-time-select\n * filterable:el-select,el-select-v2,el-tree-select\n * placeholder-请输入:el-input,el-input-number\n * placeholder-请选择:el-select,el-select-v2,el-tree-select,el-cascader\n * defaultTime:el-date-picker\n * shortcuts:el-date-picker\n * options:el-select-v2,el-cascader\n * data:el-tree-select\n * startPlaceholder:\n * \t\tel-date-picker type in [\"datetimerange\", \"daterange\", \"monthrange\", \"yearrange\"]\n * \t\tel-time-picker isRange is true\n * endPlaceholder:\n * \t\tel-date-picker type in [\"datetimerange\", \"daterange\", \"monthrange\", \"yearrange\"]\n * \t\tel-time-picker isRange is true\n * rangeSeparator:\n * \t\tel-date-picker type in [\"datetimerange\", \"daterange\", \"monthrange\", \"yearrange\"]\n * \t\tel-time-picker isRange is true\n * unlinkPanels:el-date-picker type in [\"datetimerange\", \"daterange\", \"monthrange\", \"yearrange\"]\n * 后缀 -select Select -page Page -cascader Cascader 结尾的\n * \tplaceholder:请选择\n * 后缀 -input Input 结尾的\n * \tplaceholder:请输入\n */\n\nconst clearableEls = [\n\t\"el-input\",\n\t\"ELInput\",\n\t\"el-input-number\",\n\t\"ELInputNumber\",\n\t\"el-select\",\n\t\"ElSelect\",\n\t\"el-select-v2\",\n\t\"ElSelectV2\",\n\t\"el-tree-select\",\n\t\"ElTreeSelect\",\n\t\"el-cascader\",\n\t\"ElCascader\",\n\t\"el-date-picker\",\n\t\"ElDatePicker\",\n\t\"el-time-picker\",\n\t\"ElTimePicker\",\n\t\"el-time-select\",\n\t\"ElTimeSelect\",\n];\n\ntype FaTableSearchFormItemSlots = {\n\t[key: string]: FaTableDefaultSlotsResult & {\n\t\tcolumn?: FaTableColumnCtx;\n\t\tsearch?: () => void;\n\t};\n};\n\nconst filterableEls = [\"el-select\", \"ElSelect\", \"el-select-v2\", \"ElSelectV2\", \"el-tree-select\", \"ElTreeSelect\"];\n\nconst inputPlaceholderEls = [\"el-input\", \"ELInput\", \"el-input-number\", \"ELInputNumber\"];\n\nconst selectPlaceholderEls = [\"el-select\", \"ElSelect\", \"el-select-v2\", \"ElSelectV2\", \"el-tree-select\", \"ElTreeSelect\", \"el-cascader\", \"ElCascader\"];\n\nexport default defineComponent({\n\tname: \"FaTableSearchFormItem\",\n\tprops: {\n\t\t/** @description 列配置 */\n\t\tcolumn: {\n\t\t\ttype: definePropType<FaTableColumnCtx>(Object),\n\t\t\trequired: true,\n\t\t\t/** 这里的 default 不知道为什么,不写识别不出来类型 */\n\t\t\tdefault: {} as FaTableColumnCtx,\n\t\t},\n\t\t/** @description 搜索 */\n\t\tsearch: {\n\t\t\ttype: definePropType<() => void>(Function),\n\t\t\trequired: true,\n\t\t},\n\t},\n\tslots: makeSlots<FaTableSearchFormItemSlots>(),\n\tsetup(props, { slots }) {\n\t\tconst tableState = inject(tableStateKey);\n\t\tconst enumMap = inject(enumMapKey);\n\n\t\tconst state = reactive({\n\t\t\tenumDict: withDefineType<FaTableEnumColumnCtx[]>([]),\n\t\t\toldValue: undefined,\n\t\t});\n\n\t\tconst handleUpdateModelValue = (value: any): void => {\n\t\t\tif (isString(value)) {\n\t\t\t\t// 如果是字符串,则去除前后空格\n\t\t\t\tvalue = value.trim();\n\t\t\t}\n\t\t\tstate.oldValue = tableState.searchParam[props.column?.search?.key ?? props.column.prop];\n\t\t\ttableState.searchParam[props.column?.search?.key ?? props.column.prop] = value;\n\t\t};\n\n\t\tconst handleChange = (value: any): void => {\n\t\t\t// 改变触发的时候只有不等于的时候才会去刷新\n\t\t\t// if (!isEqual(value, state.oldValue)) {\n\t\t\tprops.search();\n\t\t\t// }\n\t\t};\n\n\t\tconst handleDefaultProps = (): any => {\n\t\t\tconst search = props.column.search;\n\t\t\tconst defaultProps: any = {};\n\t\t\tif (clearableEls.includes(search?.el)) {\n\t\t\t\tdefaultProps.clearable = true;\n\t\t\t}\n\t\t\tif (filterableEls.includes(search?.el)) {\n\t\t\t\tdefaultProps.filterable = true;\n\t\t\t}\n\t\t\tif (inputPlaceholderEls.includes(search?.el)) {\n\t\t\t\tdefaultProps.placeholder = \"请输入\";\n\t\t\t}\n\t\t\tif (selectPlaceholderEls.includes(search?.el)) {\n\t\t\t\tdefaultProps.placeholder = \"请选择\";\n\t\t\t}\n\t\t\tif ([\"el-date-picker\", \"ElDatePicker\"].includes(search?.el)) {\n\t\t\t\tdefaultProps.unlinkPanels = true;\n\t\t\t\tif ([\"datetimerange\", \"daterange\", \"monthrange\", \"yearrange\"].includes(search?.props?.type)) {\n\t\t\t\t\tdefaultProps.defaultTime = dateUtil.getDefaultTime();\n\t\t\t\t\tdefaultProps.shortcuts = dateUtil.getShortcuts();\n\t\t\t\t\tdefaultProps.rangeSeparator = \"至\";\n\t\t\t\t\tdefaultProps.startPlaceholder = \"开始时间\";\n\t\t\t\t\tdefaultProps.endPlaceholder = \"结束时间\";\n\t\t\t\t} else {\n\t\t\t\t\tdefaultProps.defaultTime = dateUtil.getSimpleTime();\n\t\t\t\t\tdefaultProps.shortcuts = dateUtil.getSimpleShortcuts();\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ([\"el-time-picker\", \"ElTimePicker\"].includes(search?.el) && search?.props?.isRange) {\n\t\t\t\tdefaultProps.rangeSeparator = \"至\";\n\t\t\t\tdefaultProps.startPlaceholder = \"开始时间\";\n\t\t\t\tdefaultProps.endPlaceholder = \"结束时间\";\n\t\t\t}\n\t\t\tif (\n\t\t\t\t[\"el-select\", \"ElSelect\", \"el-select-v2\", \"ElSelectV2\", \"el-cascader\", \"ElCascader\", \"el-tree-select\", \"ElTreeSelect\"].includes(\n\t\t\t\t\tsearch?.el\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tlet enumData;\n\t\t\t\tif (props.column.enum && isString(props.column.enum)) {\n\t\t\t\t\tenumData = enumMap.get(props.column.enum);\n\t\t\t\t} else {\n\t\t\t\t\tenumData = enumMap.get(props.column.prop ?? props.column.search?.key);\n\t\t\t\t}\n\t\t\t\tenumData = enumData.filter((f: any) => f?.show !== false);\n\t\t\t\tstate.enumDict = enumData ?? [];\n\t\t\t}\n\t\t\tif ([\"el-select-v2\", \"ElSelectV2\", \"el-cascader\", \"ElCascader\"].includes(search?.el)) {\n\t\t\t\tdefaultProps.options = state.enumDict;\n\t\t\t}\n\t\t\tif ([\"el-tree-select\", \"ElTreeSelect\"].includes(search?.el)) {\n\t\t\t\tdefaultProps.data = state.enumDict;\n\t\t\t}\n\n\t\t\treturn defaultProps;\n\t\t};\n\n\t\tuseRender(() => (\n\t\t\t<Fragment>\n\t\t\t\t{props.column.search?.el &&\n\t\t\t\t\th(\n\t\t\t\t\t\tresolveComponent(props.column.search.el),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t...handleDefaultProps(),\n\t\t\t\t\t\t\t...props.column.search.props,\n\t\t\t\t\t\t\tmodelValue: tableState.searchParam[props.column?.search?.key ?? props.column.prop],\n\t\t\t\t\t\t\t\"onUpdate:modelValue\": handleUpdateModelValue,\n\t\t\t\t\t\t\tonChange: handleChange,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdefault: () =>\n\t\t\t\t\t\t\t\t[\"el-select\", \"ElSelect\"].includes(props.column.search.el)\n\t\t\t\t\t\t\t\t\t? state.enumDict.map((selData: any, index: number) =>\n\t\t\t\t\t\t\t\t\t\t\th(ElOption, {\n\t\t\t\t\t\t\t\t\t\t\t\tkey: index,\n\t\t\t\t\t\t\t\t\t\t\t\tlabel: selData[props.column.search.props?.label ?? \"label\"],\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: selData[props.column.search.props?.value ?? \"value\"],\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: selData[props.column.search.props?.disabled ?? \"disabled\"],\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t: slots.default &&\n\t\t\t\t\t\t\t\t\t\tslots.default({\n\t\t\t\t\t\t\t\t\t\t\tcolumn: props.column,\n\t\t\t\t\t\t\t\t\t\t\tsearch: props.search,\n\t\t\t\t\t\t\t\t\t\t\t...getTableDefaultSlots(tableState),\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t}\n\t\t\t\t\t)}\n\t\t\t</Fragment>\n\t\t));\n\t},\n});\n"],"names":["clearableEls","filterableEls","inputPlaceholderEls","selectPlaceholderEls","TableSearchFormItem","name","props","column","type","definePropType","Object","required","default","search","Function","slots","makeSlots","setup","tableState","inject","tableStateKey","enumMap","enumMapKey","state","reactive","enumDict","withDefineType","oldValue","undefined","handleUpdateModelValue","value","isString","trim","searchParam","key","prop","handleChange","handleDefaultProps","defaultProps","includes","el","clearable","filterable","placeholder","unlinkPanels","defaultTime","dateUtil","getDefaultTime","shortcuts","getShortcuts","rangeSeparator","startPlaceholder","endPlaceholder","getSimpleTime","getSimpleShortcuts","isRange","enumData","enum","get","filter","f","show","options","data","useRender","_createVNode","_Fragment","h","resolveComponent","modelValue","onChange","map","selData","index","ElOption","label","disabled","getTableDefaultSlots"],"mappings":"gRA6CMA,EAAe,CACpB,WACA,UACA,kBACA,gBACA,YACA,WACA,eACA,aACA,iBACA,eACA,cACA,aACA,iBACA,eACA,iBACA,eACA,iBACA,gBAUKC,EAAgB,CAAC,YAAa,WAAY,eAAgB,aAAc,iBAAkB,gBAE1FC,EAAsB,CAAC,WAAY,UAAW,kBAAmB,iBAEjEC,EAAuB,CAAC,YAAa,WAAY,eAAgB,aAAc,iBAAkB,eAAgB,cAAe,cAEtIC,oBAA+B,CAC9BC,KAAM,wBACNC,MAAO,CAENC,OAAQ,CACPC,KAAMC,EAAAA,eAAiCC,QACvCC,UAAU,EAEVC,QAAS,CAAA,GAGVC,OAAQ,CACPL,KAAMC,EAAAA,eAA2BK,UACjCH,UAAU,IAGZI,MAAOC,EAAAA,YACPC,KAAAA,CAAMX,GAAOS,MAAEA,IACd,MAAMG,EAAaC,EAAAA,OAAOC,iBACpBC,EAAUF,EAAAA,OAAOG,cAEjBC,EAAQC,EAAAA,SAAS,CACtBC,SAAUC,EAAAA,eAAuC,IACjDC,cAAUC,IAGLC,EAA0BC,IAC3BC,EAAAA,SAASD,KAEZA,EAAQA,EAAME,QAEfT,EAAMI,SAAWT,EAAWe,YAAY3B,EAAMC,QAAQM,QAAQqB,KAAO5B,EAAMC,OAAO4B,MAClFjB,EAAWe,YAAY3B,EAAMC,QAAQM,QAAQqB,KAAO5B,EAAMC,OAAO4B,MAAQL,GAGpEM,EAAgBN,IAGrBxB,EAAMO,UAIDwB,EAAqBA,KAC1B,MAAMxB,EAASP,EAAMC,OAAOM,OACtByB,EAAoB,CAAA,EA+B1B,GA9BItC,EAAauC,SAAS1B,GAAQ2B,MACjCF,EAAaG,WAAY,GAEtBxC,EAAcsC,SAAS1B,GAAQ2B,MAClCF,EAAaI,YAAa,GAEvBxC,EAAoBqC,SAAS1B,GAAQ2B,MACxCF,EAAaK,YAAc,OAExBxC,EAAqBoC,SAAS1B,GAAQ2B,MACzCF,EAAaK,YAAc,OAExB,CAAC,iBAAkB,gBAAgBJ,SAAS1B,GAAQ2B,MACvDF,EAAaM,cAAe,EACxB,CAAC,gBAAiB,YAAa,aAAc,aAAaL,SAAS1B,GAAQP,OAAOE,OACrF8B,EAAaO,YAAcC,EAAAA,SAASC,iBACpCT,EAAaU,UAAYF,EAAAA,SAASG,eAClCX,EAAaY,eAAiB,IAC9BZ,EAAaa,iBAAmB,OAChCb,EAAac,eAAiB,SAE9Bd,EAAaO,YAAcC,EAAAA,SAASO,gBACpCf,EAAaU,UAAYF,EAAAA,SAASQ,uBAGhC,CAAC,iBAAkB,gBAAgBf,SAAS1B,GAAQ2B,KAAO3B,GAAQP,OAAOiD,UAC7EjB,EAAaY,eAAiB,IAC9BZ,EAAaa,iBAAmB,OAChCb,EAAac,eAAiB,QAG9B,CAAC,YAAa,WAAY,eAAgB,aAAc,cAAe,aAAc,iBAAkB,gBAAgBb,SACtH1B,GAAQ2B,IAER,CACD,IAAIgB,EAEHA,EADGlD,EAAMC,OAAOkD,MAAQ1B,EAAAA,SAASzB,EAAMC,OAAOkD,MACnCpC,EAAQqC,IAAIpD,EAAMC,OAAOkD,MAEzBpC,EAAQqC,IAAIpD,EAAMC,OAAO4B,MAAQ7B,EAAMC,OAAOM,QAAQqB,KAElEsB,EAAWA,EAASG,OAAQC,IAAuB,IAAZA,GAAGC,MAC1CtC,EAAME,SAAW+B,GAAY,EAC9B,CAQA,MAPI,CAAC,eAAgB,aAAc,cAAe,cAAcjB,SAAS1B,GAAQ2B,MAChFF,EAAawB,QAAUvC,EAAME,UAE1B,CAAC,iBAAkB,gBAAgBc,SAAS1B,GAAQ2B,MACvDF,EAAayB,KAAOxC,EAAME,UAGpBa,GAGR0B,EAAAA,UAAU,IAAAC,EAAAA,YAAAC,EAAAA,SAAA,KAAA,CAEP5D,EAAMC,OAAOM,QAAQ2B,IACrB2B,EAAAA,EACCC,EAAAA,iBAAiB9D,EAAMC,OAAOM,OAAO2B,IACrC,IACIH,OACA/B,EAAMC,OAAOM,OAAOP,MACvB+D,WAAYnD,EAAWe,YAAY3B,EAAMC,QAAQM,QAAQqB,KAAO5B,EAAMC,OAAO4B,MAC7E,sBAAuBN,EACvByC,SAAUlC,GAEX,CACCxB,QAASA,IACR,CAAC,YAAa,YAAY2B,SAASjC,EAAMC,OAAOM,OAAO2B,IACpDjB,EAAME,SAAS8C,IAAI,CAACC,EAAcC,IAClCN,EAAAA,EAAEO,WAAU,CACXxC,IAAKuC,EACLE,MAAOH,EAAQlE,EAAMC,OAAOM,OAAOP,OAAOqE,OAAS,SACnD7C,MAAO0C,EAAQlE,EAAMC,OAAOM,OAAOP,OAAOwB,OAAS,SACnD8C,SAAUJ,EAAQlE,EAAMC,OAAOM,OAAOP,OAAOsE,UAAY,eAG1D7D,EAAMH,SACPG,EAAMH,QAAQ,CACbL,OAAQD,EAAMC,OACdM,OAAQP,EAAMO,UACXgE,EAAAA,qBAAqB3D,SAMlC"}
1
+ {"version":3,"file":"tableSearchFormItem.js","sources":["../../../../../packages/components/table/src/tableSearchFormItem.tsx"],"sourcesContent":["import { Fragment, defineComponent, h, inject, reactive, resolveComponent } from \"vue\";\nimport { ElOption } from \"element-plus\";\nimport { dateUtil, definePropType, makeSlots, useRender, withDefineType } from \"@fast-china/utils\";\nimport { isString } from \"lodash-unified\";\nimport { getTableDefaultSlots } from \"./table.type\";\nimport { enumMapKey, tableStateKey } from \"./useTable\";\nimport type { FaTableColumnCtx, FaTableDefaultSlotsResult, FaTableEnumColumnCtx } from \"./table.type\";\n\n/**\n * 已知默认支持的el组件:\n * \tel-input\n * \tel-input-number\n * \tel-select\n * \tel-select-v2\n * \tel-tree-select\n * \tel-cascader\n * \tel-date-picker\n * \tel-time-picker\n * \tel-time-select,\n * \tel-switch\n * 已知组件的默认props\n * clearable:el-input,el-input-number,el-select,el-select-v2,el-tree-select,el-cascader,el-date-picker,el-time-picker,el-time-select\n * filterable:el-select,el-select-v2,el-tree-select\n * placeholder-请输入:el-input,el-input-number\n * placeholder-请选择:el-select,el-select-v2,el-tree-select,el-cascader\n * defaultTime:el-date-picker\n * shortcuts:el-date-picker\n * options:el-select-v2,el-cascader\n * data:el-tree-select\n * startPlaceholder:\n * \t\tel-date-picker type in [\"datetimerange\", \"daterange\", \"monthrange\", \"yearrange\"]\n * \t\tel-time-picker isRange is true\n * endPlaceholder:\n * \t\tel-date-picker type in [\"datetimerange\", \"daterange\", \"monthrange\", \"yearrange\"]\n * \t\tel-time-picker isRange is true\n * rangeSeparator:\n * \t\tel-date-picker type in [\"datetimerange\", \"daterange\", \"monthrange\", \"yearrange\"]\n * \t\tel-time-picker isRange is true\n * unlinkPanels:el-date-picker type in [\"datetimerange\", \"daterange\", \"monthrange\", \"yearrange\"]\n * 后缀 -select Select -page Page -cascader Cascader 结尾的\n * \tplaceholder:请选择\n * 后缀 -input Input 结尾的\n * \tplaceholder:请输入\n */\n\nconst clearableEls = [\n\t\"el-input\",\n\t\"ELInput\",\n\t\"el-input-number\",\n\t\"ELInputNumber\",\n\t\"el-select\",\n\t\"ElSelect\",\n\t\"el-select-v2\",\n\t\"ElSelectV2\",\n\t\"el-tree-select\",\n\t\"ElTreeSelect\",\n\t\"el-cascader\",\n\t\"ElCascader\",\n\t\"el-date-picker\",\n\t\"ElDatePicker\",\n\t\"el-time-picker\",\n\t\"ElTimePicker\",\n\t\"el-time-select\",\n\t\"ElTimeSelect\",\n];\n\ntype FaTableSearchFormItemSlots = {\n\t[key: string]: FaTableDefaultSlotsResult & {\n\t\tcolumn?: FaTableColumnCtx;\n\t\tsearch?: () => void;\n\t};\n};\n\nconst filterableEls = [\"el-select\", \"ElSelect\", \"el-select-v2\", \"ElSelectV2\", \"el-tree-select\", \"ElTreeSelect\"];\n\nconst inputPlaceholderEls = [\"el-input\", \"ELInput\", \"el-input-number\", \"ELInputNumber\"];\n\nconst selectPlaceholderEls = [\"el-select\", \"ElSelect\", \"el-select-v2\", \"ElSelectV2\", \"el-tree-select\", \"ElTreeSelect\", \"el-cascader\", \"ElCascader\"];\n\nexport default defineComponent({\n\tname: \"FaTableSearchFormItem\",\n\tprops: {\n\t\t/** @description 列配置 */\n\t\tcolumn: {\n\t\t\ttype: definePropType<FaTableColumnCtx>(Object),\n\t\t\trequired: true,\n\t\t\t/** 这里的 default 不知道为什么,不写识别不出来类型 */\n\t\t\tdefault: {} as FaTableColumnCtx,\n\t\t},\n\t\t/** @description 搜索 */\n\t\tsearch: {\n\t\t\ttype: definePropType<() => void>(Function),\n\t\t\trequired: true,\n\t\t},\n\t},\n\tslots: makeSlots<FaTableSearchFormItemSlots>(),\n\tsetup(props, { slots }) {\n\t\tconst tableState = inject(tableStateKey);\n\t\tconst enumMap = inject(enumMapKey);\n\n\t\tconst state = reactive({\n\t\t\tenumDict: withDefineType<FaTableEnumColumnCtx[]>([]),\n\t\t});\n\n\t\tconst handleUpdateModelValue = (value: any): void => {\n\t\t\tif (isString(value)) {\n\t\t\t\t// 如果是字符串,则去除前后空格\n\t\t\t\tvalue = value.trim();\n\t\t\t}\n\t\t\ttableState.searchParam[props.column?.search?.key ?? props.column.prop] = value;\n\t\t};\n\n\t\tconst handleChange = (value: any): void => {\n\t\t\tprops.search();\n\t\t};\n\n\t\tconst handleDefaultProps = (): any => {\n\t\t\tconst search = props.column.search;\n\t\t\tconst defaultProps: any = {};\n\t\t\tif (clearableEls.includes(search?.el)) {\n\t\t\t\tdefaultProps.clearable = true;\n\t\t\t}\n\t\t\tif (filterableEls.includes(search?.el)) {\n\t\t\t\tdefaultProps.filterable = true;\n\t\t\t}\n\t\t\tif (inputPlaceholderEls.includes(search?.el)) {\n\t\t\t\tdefaultProps.placeholder = \"请输入\";\n\t\t\t}\n\t\t\tif (selectPlaceholderEls.includes(search?.el)) {\n\t\t\t\tdefaultProps.placeholder = \"请选择\";\n\t\t\t}\n\t\t\tif ([\"el-date-picker\", \"ElDatePicker\"].includes(search?.el)) {\n\t\t\t\tdefaultProps.unlinkPanels = true;\n\t\t\t\tif ([\"datetimerange\", \"daterange\", \"monthrange\", \"yearrange\"].includes(search?.props?.type)) {\n\t\t\t\t\tdefaultProps.defaultTime = dateUtil.getDefaultTime();\n\t\t\t\t\tdefaultProps.shortcuts = dateUtil.getShortcuts();\n\t\t\t\t\tdefaultProps.rangeSeparator = \"至\";\n\t\t\t\t\tdefaultProps.startPlaceholder = \"开始时间\";\n\t\t\t\t\tdefaultProps.endPlaceholder = \"结束时间\";\n\t\t\t\t} else {\n\t\t\t\t\tdefaultProps.defaultTime = dateUtil.getSimpleTime();\n\t\t\t\t\tdefaultProps.shortcuts = dateUtil.getSimpleShortcuts();\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ([\"el-time-picker\", \"ElTimePicker\"].includes(search?.el) && search?.props?.isRange) {\n\t\t\t\tdefaultProps.rangeSeparator = \"至\";\n\t\t\t\tdefaultProps.startPlaceholder = \"开始时间\";\n\t\t\t\tdefaultProps.endPlaceholder = \"结束时间\";\n\t\t\t}\n\t\t\tif (\n\t\t\t\t[\"el-select\", \"ElSelect\", \"el-select-v2\", \"ElSelectV2\", \"el-cascader\", \"ElCascader\", \"el-tree-select\", \"ElTreeSelect\"].includes(\n\t\t\t\t\tsearch?.el\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tlet enumData;\n\t\t\t\tif (props.column.enum && isString(props.column.enum)) {\n\t\t\t\t\tenumData = enumMap.get(props.column.enum);\n\t\t\t\t} else {\n\t\t\t\t\tenumData = enumMap.get(props.column.prop ?? props.column.search?.key);\n\t\t\t\t}\n\t\t\t\tenumData = enumData.filter((f: any) => f?.show !== false);\n\t\t\t\tstate.enumDict = enumData ?? [];\n\t\t\t}\n\t\t\tif ([\"el-select-v2\", \"ElSelectV2\", \"el-cascader\", \"ElCascader\"].includes(search?.el)) {\n\t\t\t\tdefaultProps.options = state.enumDict;\n\t\t\t}\n\t\t\tif ([\"el-tree-select\", \"ElTreeSelect\"].includes(search?.el)) {\n\t\t\t\tdefaultProps.data = state.enumDict;\n\t\t\t}\n\n\t\t\treturn defaultProps;\n\t\t};\n\n\t\tuseRender(() => (\n\t\t\t<Fragment>\n\t\t\t\t{props.column.search?.el &&\n\t\t\t\t\th(\n\t\t\t\t\t\tresolveComponent(props.column.search.el),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t...handleDefaultProps(),\n\t\t\t\t\t\t\t...props.column.search.props,\n\t\t\t\t\t\t\tmodelValue: tableState.searchParam[props.column?.search?.key ?? props.column.prop],\n\t\t\t\t\t\t\t\"onUpdate:modelValue\": handleUpdateModelValue,\n\t\t\t\t\t\t\tonChange: handleChange,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdefault: () =>\n\t\t\t\t\t\t\t\t[\"el-select\", \"ElSelect\"].includes(props.column.search.el)\n\t\t\t\t\t\t\t\t\t? state.enumDict.map((selData: any, index: number) =>\n\t\t\t\t\t\t\t\t\t\t\th(ElOption, {\n\t\t\t\t\t\t\t\t\t\t\t\tkey: index,\n\t\t\t\t\t\t\t\t\t\t\t\tlabel: selData[props.column.search.props?.label ?? \"label\"],\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: selData[props.column.search.props?.value ?? \"value\"],\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: selData[props.column.search.props?.disabled ?? \"disabled\"],\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t: slots.default &&\n\t\t\t\t\t\t\t\t\t\tslots.default({\n\t\t\t\t\t\t\t\t\t\t\tcolumn: props.column,\n\t\t\t\t\t\t\t\t\t\t\tsearch: props.search,\n\t\t\t\t\t\t\t\t\t\t\t...getTableDefaultSlots(tableState),\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t}\n\t\t\t\t\t)}\n\t\t\t</Fragment>\n\t\t));\n\t},\n});\n"],"names":["clearableEls","filterableEls","inputPlaceholderEls","selectPlaceholderEls","TableSearchFormItem","name","props","column","type","definePropType","Object","required","default","search","Function","slots","makeSlots","setup","tableState","inject","tableStateKey","enumMap","enumMapKey","state","reactive","enumDict","withDefineType","handleUpdateModelValue","value","isString","trim","searchParam","key","prop","handleChange","handleDefaultProps","defaultProps","includes","el","clearable","filterable","placeholder","unlinkPanels","defaultTime","dateUtil","getDefaultTime","shortcuts","getShortcuts","rangeSeparator","startPlaceholder","endPlaceholder","getSimpleTime","getSimpleShortcuts","isRange","enumData","enum","get","filter","f","show","options","data","useRender","_createVNode","_Fragment","h","resolveComponent","modelValue","onChange","map","selData","index","ElOption","label","disabled","getTableDefaultSlots"],"mappings":"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"}
@@ -510,8 +510,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
510
510
  showQuantity?: boolean;
511
511
  quantity?: number;
512
512
  }[]) => any;
513
- "onCurrent-change"?: (data: any, node: import('element-plus/es/components/tree/src/model/node.mjs').default) => any;
514
513
  "onCheck-change"?: (data: any, checked: boolean, indeterminate: boolean) => any;
514
+ "onCurrent-change"?: (data: any, node: import('element-plus/es/components/tree/src/model/node.mjs').default) => any;
515
515
  "onNode-click"?: (data: any, node: import('element-plus/es/components/tree/src/model/node.mjs').default, nodeInstance: ComponentInternalInstance, evt: MouseEvent) => any;
516
516
  "onNode-contextmenu"?: (evt: Event, data: any, node: import('element-plus/es/components/tree/src/model/node.mjs').default, nodeInstance: ComponentInternalInstance) => any;
517
517
  "onNode-collapse"?: (data: any, node: import('element-plus/es/components/tree/src/model/node.mjs').default, nodeInstance: ComponentInternalInstance) => any;
@@ -541,9 +541,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
541
541
  modelValue: string | number | boolean | object;
542
542
  width: string | number;
543
543
  draggable: boolean;
544
- defaultExpandAll: boolean;
545
- indent: number;
546
544
  nodeKey: string;
545
+ defaultExpandAll: boolean;
547
546
  checkOnClickNode: boolean;
548
547
  highlightCurrent: boolean;
549
548
  collapseOnClickNode: boolean;
@@ -558,5 +557,6 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
558
557
  autoExpandParent: boolean;
559
558
  showCheckbox: boolean;
560
559
  accordion: boolean;
560
+ indent: number;
561
561
  }, import('vue').SlotsType<Partial<import('@fast-china/utils').MakeSlots<FaTreeSlots>>>, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
562
562
  export default _default;
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),t=require("element-plus"),a=require("@element-plus/icons-vue"),l=require("@fast-china/utils"),r=require("@vueuse/core"),d=require("lodash-unified"),o=require("./tree.props.js"),u={...o.treeProps,disabled:{type:Boolean,default:void 0},nodeKey:{type:String,default:"value"},defaultExpandAll:{type:Boolean,default:!0},checkOnClickNode:{type:Boolean,default:!0},highlightCurrent:{type:Boolean,default:!0},collapseOnClickNode:Boolean,modelValue:{type:l.definePropType([String,Number,Boolean,Object]),default:void 0},label:String,width:{type:[String,Number],default:180},defaultSelection:[String,Number],title:String,hamburger:Boolean,hideAll:Boolean,hideFilter:Boolean,allValue:{type:l.definePropType([String,Number,Boolean,Object]),default:void 0},data:{type:l.definePropType(Array),default:()=>[]},requestApi:{type:l.definePropType(Function)},initParam:l.definePropType([String,Number,Object])},n={...t.treeEmits,"update:modelValue":e=>d.isString(e)||d.isNumber(e)||d.isBoolean(e)||d.isObject(e)||d.isNull(e),"update:label":e=>d.isString(e)||d.isNull(e),dataChangeCallBack:e=>d.isArray(e),change:(e,t,a,l)=>!0},i=e.defineComponent({name:"FaTree",props:u,emits:n,slots:l.makeSlots(),setup(d,{attrs:u,slots:n,emit:i,expose:c}){const s=r.useVModel(d,"label",i),p=t.useGlobalSize(),h=e.reactive({value:l.withDefineType(),loading:!1,searchValue:l.withDefineType(),orgTreeData:l.withDefineType([]),treeData:l.withDefineType([]),hamburger:d.hamburger||!1,width:e.computed(()=>{if(h.hamburger)return"130px";{const e=l.addUnit(d.width);return"small"===p.value?`calc(${e} * 0.9)`:e}})}),f=e.computed(()=>0===[...h.orgTreeData].filter(e=>e[d.props.children]?.length>0).length),m=e.ref(),g=async()=>{let t;d.nodeKey&&(t=m.value.getCurrentKey());let a=[];if(d.requestApi){h.loading=!0;const e={...d.initParam??{},searchValue:h.searchValue};try{a=await d.requestApi(e)}catch(r){l.consoleError("FaTree",r)}finally{h.loading=!1}}else a=d.data;d.hideAll||a.unshift({[d.nodeKey]:d.allValue,label:"全部",value:null,all:!0}),h.orgTreeData=a,h.treeData=a,i("dataChangeCallBack",h.treeData),d.nodeKey&&t?e.nextTick(()=>{m.value.setCurrentKey(t)}):d.defaultSelection&&e.nextTick(()=>{m.value.setCurrentKey(d.defaultSelection)})},y=()=>{h.hamburger?h.treeData=h.orgTreeData:h.treeData=h.orgTreeData.map(e=>({...e,[d.props.children]:[]})),h.hamburger=!h.hamburger},v=(e,t,a)=>{if(!e)return!0;let l=a.parent,r=t.all?[t.label]:[a.label],o=1;for(;o<a.level;)r=[...r,l.label],l=l.parent,o++;const u=r.some(t=>-1!==t.indexOf(e));return d.filterNodeMethod?u&&d.filterNodeMethod(e,t,a):u},N=(e,t,a,l)=>{d.expandOnClickNode&&(t.expanded?t.expanded&&d.collapseOnClickNode&&t.collapse():t.expand()),h.value=t.key,s.value=t.label,i("update:modelValue",h.value),i("change",e,t,a,l),i("node-click",e,t,a,l)};e.onMounted(async()=>{await g(),e.watch(()=>d.data,async()=>{d.requestApi||await g()},{deep:!0})});const b=l.useProps(d,o.treeProps,["data","expandOnClickNode","filterNodeMethod"]),C=l.useEmits(t.treeEmits,i,["node-click"]);return l.useRender(()=>e.withDirectives(e.createVNode("div",{class:["el-card fa-tree",`fa-tree-${p.value}`,{"fa-tree__fold":h.hamburger||f.value}],style:{width:h.width}},[(d.title||d.hamburger)&&e.createVNode("div",{class:"fa-tree__title"},[d.title&&e.createVNode("h4",null,[d.title]),d.hamburger&&(h.hamburger?e.createVNode(t.ElIcon,{onClick:y,title:"展开"},{default:()=>[e.createVNode(a.Expand,null,null)]}):e.createVNode(t.ElIcon,{onClick:y,title:"折叠"},{default:()=>[e.createVNode(a.Fold,null,null)]}))]),!d.hideFilter&&e.createVNode(t.ElInput,{class:"fa-tree__search-input",modelValue:h.searchValue,modelModifiers:{trim:!0},"onUpdate:modelValue":e=>h.searchValue=e,placeholder:h.hamburger?"关键字过滤":"输入关键字进行过滤",clearable:!0,onInput:e=>m.value.filter(e)},null),e.createVNode(t.ElScrollbar,{class:"fa-tree__scrollbar"},{default:()=>[e.createVNode(t.ElTree,e.mergeProps(b.value,C.value,{ref:m,data:h.treeData,expandOnClickNode:!d.checkOnClickNode&&d.expandOnClickNode,filterNodeMethod:v,onNodeClick:N}),{default:({node:t,data:a})=>e.createVNode("span",{class:"el-tree-node__label",title:a?.all?a.label:t.label,style:{paddingLeft:f.value?"3px":""}},[e.createVNode("div",null,[a?.all?a.label:n.label?n.label({node:t,data:a}):t.label]),t.key&&a.showQuantity?e.createVNode("span",null,[e.createTextVNode("["),a.quantity,e.createTextVNode("]")]):null,!a?.all&&n.default&&e.createVNode("span",null,[n.default({node:t,data:a})])]),...n.empty&&{empty:()=>n.empty()}})]})]),[[e.resolveDirective("loading"),h.loading]])),l.useExpose(c,{filter:e.computed(()=>m.value?.filter),updateKeyChildren:e.computed(()=>m.value?.updateKeyChildren),getCheckedNodes:e.computed(()=>m.value?.getCheckedNodes),setCheckedNodes:e.computed(()=>m.value?.setCheckedNodes),getCheckedKeys:e.computed(()=>m.value?.getCheckedKeys),setCheckedKeys:e.computed(()=>m.value?.setCheckedKeys),setChecked:e.computed(()=>m.value?.setChecked),getHalfCheckedNodes:e.computed(()=>m.value?.getHalfCheckedNodes),getHalfCheckedKeys:e.computed(()=>m.value?.getHalfCheckedKeys),getCurrentKey:e.computed(()=>m.value?.getCurrentKey),getCurrentNode:e.computed(()=>m.value?.getCurrentNode),setCurrentKey:e.computed(()=>m.value?.setCurrentKey),setCurrentNode:e.computed(()=>m.value?.setCurrentNode),getNode:e.computed(()=>m.value?.getNode),remove:e.computed(()=>m.value?.remove),append:e.computed(()=>m.value?.append),insertBefore:e.computed(()=>m.value?.insertBefore),insertAfter:e.computed(()=>m.value?.insertAfter),loading:e.computed(()=>h.loading),refresh:g})}});exports.default=i,exports.faTreeEmits=n,exports.faTreeProps=u;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),t=require("element-plus"),a=require("@element-plus/icons-vue"),l=require("@fast-china/utils"),r=require("@vueuse/core"),d=require("lodash-unified"),o=require("./tree.props.js"),u={...o.treeProps,disabled:{type:Boolean,default:void 0},nodeKey:{type:String,default:"value"},defaultExpandAll:{type:Boolean,default:!0},checkOnClickNode:{type:Boolean,default:!0},highlightCurrent:{type:Boolean,default:!0},collapseOnClickNode:Boolean,modelValue:{type:l.definePropType([String,Number,Boolean,Object]),default:void 0},label:String,width:{type:[String,Number],default:180},defaultSelection:[String,Number],title:String,hamburger:Boolean,hideAll:Boolean,hideFilter:Boolean,allValue:{type:l.definePropType([String,Number,Boolean,Object]),default:void 0},data:{type:l.definePropType(Array),default:()=>[]},requestApi:{type:l.definePropType(Function)},initParam:l.definePropType([String,Number,Object])},n={...t.treeEmits,"update:modelValue":e=>d.isString(e)||d.isNumber(e)||d.isBoolean(e)||d.isObject(e)||d.isNull(e),"update:label":e=>d.isString(e)||d.isNull(e),dataChangeCallBack:e=>d.isArray(e),change:(e,t,a,l)=>!0},i=e.defineComponent({name:"FaTree",props:u,emits:n,slots:l.makeSlots(),setup(d,{attrs:u,slots:n,emit:i,expose:s}){const c=r.useVModel(d,"label",i,{passive:!0}),p=t.useGlobalSize(),h=e.reactive({value:l.withDefineType(),loading:!1,searchValue:l.withDefineType(),orgTreeData:l.withDefineType([]),treeData:l.withDefineType([]),hamburger:d.hamburger||!1,width:e.computed(()=>{if(h.hamburger)return"130px";{const e=l.addUnit(d.width);return"small"===p.value?`calc(${e} * 0.9)`:e}})}),f=e.computed(()=>0===[...h.orgTreeData].filter(e=>e[d.props.children]?.length>0).length),m=e.ref(),g=async()=>{let t;d.nodeKey&&(t=m.value.getCurrentKey());let a=[];if(d.requestApi){h.loading=!0;const e={...d.initParam??{},searchValue:h.searchValue};try{a=await d.requestApi(e)}catch(r){l.consoleError("FaTree",r)}finally{h.loading=!1}}else a=d.data;d.hideAll||a.unshift({[d.nodeKey]:d.allValue,label:"全部",value:null,all:!0}),h.orgTreeData=a,h.treeData=a,i("dataChangeCallBack",h.treeData),d.nodeKey&&t?e.nextTick(()=>{m.value.setCurrentKey(t)}):d.defaultSelection&&e.nextTick(()=>{m.value.setCurrentKey(d.defaultSelection)})},y=()=>{h.hamburger?h.treeData=h.orgTreeData:h.treeData=h.orgTreeData.map(e=>({...e,[d.props.children]:[]})),h.hamburger=!h.hamburger},v=(e,t,a)=>{if(!e)return!0;let l=a.parent,r=t.all?[t.label]:[a.label],o=1;for(;o<a.level;)r=[...r,l.label],l=l.parent,o++;const u=r.some(t=>-1!==t.indexOf(e));return d.filterNodeMethod?u&&d.filterNodeMethod(e,t,a):u},N=(e,t,a,l)=>{d.expandOnClickNode&&(t.expanded?t.expanded&&d.collapseOnClickNode&&t.collapse():t.expand()),h.value=t.key,c.value=t.label,i("update:modelValue",h.value),i("change",e,t,a,l),i("node-click",e,t,a,l)};e.onMounted(async()=>{await g(),e.watch(()=>d.data,async()=>{d.requestApi||await g()},{deep:!0})});const b=l.useProps(d,o.treeProps,["data","expandOnClickNode","filterNodeMethod"]),C=l.useEmits(t.treeEmits,i,["node-click"]);return l.useRender(()=>e.withDirectives(e.createVNode("div",{class:["el-card fa-tree",`fa-tree-${p.value}`,{"fa-tree__fold":h.hamburger||f.value}],style:{width:h.width}},[(d.title||d.hamburger)&&e.createVNode("div",{class:"fa-tree__title"},[d.title&&e.createVNode("h4",null,[d.title]),d.hamburger&&(h.hamburger?e.createVNode(t.ElIcon,{onClick:y,title:"展开"},{default:()=>[e.createVNode(a.Expand,null,null)]}):e.createVNode(t.ElIcon,{onClick:y,title:"折叠"},{default:()=>[e.createVNode(a.Fold,null,null)]}))]),!d.hideFilter&&e.createVNode(t.ElInput,{class:"fa-tree__search-input",modelValue:h.searchValue,modelModifiers:{trim:!0},"onUpdate:modelValue":e=>h.searchValue=e,placeholder:h.hamburger?"关键字过滤":"输入关键字进行过滤",clearable:!0,onInput:e=>m.value.filter(e)},null),e.createVNode(t.ElScrollbar,{class:"fa-tree__scrollbar"},{default:()=>[e.createVNode(t.ElTree,e.mergeProps(b.value,C.value,{ref:m,data:h.treeData,expandOnClickNode:!d.checkOnClickNode&&d.expandOnClickNode,filterNodeMethod:v,onNodeClick:N}),{default:({node:t,data:a})=>e.createVNode("span",{class:"el-tree-node__label",title:a?.all?a.label:t.label,style:{paddingLeft:f.value?"3px":""}},[e.createVNode("div",null,[a?.all?a.label:n.label?n.label({node:t,data:a}):t.label]),t.key&&a.showQuantity?e.createVNode("span",null,[e.createTextVNode("["),a.quantity,e.createTextVNode("]")]):null,!a?.all&&n.default&&e.createVNode("span",null,[n.default({node:t,data:a})])]),...n.empty&&{empty:()=>n.empty()}})]})]),[[e.resolveDirective("loading"),h.loading]])),l.useExpose(s,{filter:e.computed(()=>m.value?.filter),updateKeyChildren:e.computed(()=>m.value?.updateKeyChildren),getCheckedNodes:e.computed(()=>m.value?.getCheckedNodes),setCheckedNodes:e.computed(()=>m.value?.setCheckedNodes),getCheckedKeys:e.computed(()=>m.value?.getCheckedKeys),setCheckedKeys:e.computed(()=>m.value?.setCheckedKeys),setChecked:e.computed(()=>m.value?.setChecked),getHalfCheckedNodes:e.computed(()=>m.value?.getHalfCheckedNodes),getHalfCheckedKeys:e.computed(()=>m.value?.getHalfCheckedKeys),getCurrentKey:e.computed(()=>m.value?.getCurrentKey),getCurrentNode:e.computed(()=>m.value?.getCurrentNode),setCurrentKey:e.computed(()=>m.value?.setCurrentKey),setCurrentNode:e.computed(()=>m.value?.setCurrentNode),getNode:e.computed(()=>m.value?.getNode),remove:e.computed(()=>m.value?.remove),append:e.computed(()=>m.value?.append),insertBefore:e.computed(()=>m.value?.insertBefore),insertAfter:e.computed(()=>m.value?.insertAfter),loading:e.computed(()=>h.loading),refresh:g})}});exports.default=i,exports.faTreeEmits=n,exports.faTreeProps=u;
2
2
  //# sourceMappingURL=tree.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tree.js","sources":["../../../../../packages/components/tree/src/tree.tsx"],"sourcesContent":["import { computed, defineComponent, nextTick, onMounted, reactive, ref, watch } from \"vue\";\nimport { ElIcon, ElInput, ElScrollbar, ElTree, treeEmits, useGlobalSize } from \"element-plus\";\nimport { Expand, Fold } 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, isNull, isNumber, isObject, isString } from \"lodash-unified\";\nimport { treeProps } from \"./tree.props\";\nimport type { FilterValue, TreeNodeData } from \"./tree.props\";\nimport type { ElTreeOutput } from \"./tree.type\";\nimport type { ComponentInternalInstance, VNode } from \"vue\";\n\nexport const faTreeProps = {\n\t...treeProps,\n\t/** @description whether Select is disabled 重载使其支持 ElForm*/\n\tdisabled: {\n\t\ttype: Boolean,\n\t\tdefault: undefined,\n\t},\n\t/** 每个树节点用来作为唯一标识的属性,整棵树应该是唯一的 */\n\tnodeKey: {\n\t\ttype: String,\n\t\tdefault: \"value\",\n\t},\n\t/** @description 是否默认展开所有节点 */\n\tdefaultExpandAll: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 是否在点击节点的时候选中节点 */\n\tcheckOnClickNode: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 是否高亮当前选中节点 */\n\thighlightCurrent: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 点击折叠节点,需要开启 'expandOnClickNode' */\n\tcollapseOnClickNode: Boolean,\n\t/** @description v-model绑定值 */\n\tmodelValue: {\n\t\ttype: definePropType<string | number | boolean | object>([String, Number, Boolean, Object]),\n\t\tdefault: undefined,\n\t},\n\t/** @description v-model:label绑定值 */\n\tlabel: String,\n\t/** @description 宽度 */\n\twidth: {\n\t\ttype: [String, Number],\n\t\tdefault: 180,\n\t},\n\t/** @description 默认选择 */\n\tdefaultSelection: [String, Number],\n\t/** @description 标题 */\n\ttitle: String,\n\t/** @description 折叠 */\n\thamburger: Boolean,\n\t/** @description 隐藏全部 */\n\thideAll: Boolean,\n\t/** @description 隐藏过滤 */\n\thideFilter: Boolean,\n\t/** @description 全部值 */\n\tallValue: {\n\t\ttype: definePropType<string | number | boolean | object>([String, Number, Boolean, Object]),\n\t\tdefault: undefined,\n\t},\n\t/** @description 树形数据 */\n\tdata: {\n\t\ttype: definePropType<ElTreeOutput[]>(Array),\n\t\tdefault: (): ElTreeOutput[] => [],\n\t},\n\t/** @description 请求api */\n\trequestApi: {\n\t\ttype: definePropType<(params?: any) => Promise<ElTreeOutput[]>>(Function),\n\t},\n\t/** 初始化参数 */\n\tinitParam: definePropType<string | number | any>([String, Number, Object]),\n};\n\nexport const faTreeEmits = {\n\t...treeEmits,\n\t/** @description v-model 回调 */\n\t\"update:modelValue\": (value: string | number | boolean | object): boolean =>\n\t\tisString(value) || isNumber(value) || isBoolean(value) || isObject(value) || isNull(value),\n\t/** @description v-model:label 回调 */\n\t\"update:label\": (value: string): boolean => isString(value) || isNull(value),\n\t/** @description 数据改变 */\n\tdataChangeCallBack: (data: ElTreeOutput[]): boolean => isArray(data),\n\t/** @description 改变 */\n\tchange: (data: ElTreeOutput, node: any, instance: ComponentInternalInstance, event: MouseEvent): boolean => true,\n};\n\ntype FaTreeSlots = {\n\t/** @description 默认内容插槽 */\n\tdefault: { node: any; data: ElTreeOutput };\n\t/** @description 当数据为空时自定义的内容 */\n\tempty: never;\n\t/** @description 显示内容插槽 */\n\tlabel: { node: any; data: ElTreeOutput };\n};\n\nexport default defineComponent({\n\tname: \"FaTree\",\n\tprops: faTreeProps,\n\temits: faTreeEmits,\n\tslots: makeSlots<FaTreeSlots>(),\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>(),\n\t\t\tloading: false,\n\t\t\tsearchValue: withDefineType<string>(),\n\t\t\torgTreeData: withDefineType<ElTreeOutput[]>([]),\n\t\t\ttreeData: withDefineType<ElTreeOutput[]>([]),\n\t\t\thamburger: props.hamburger || false,\n\t\t\twidth: computed(() => {\n\t\t\t\tif (state.hamburger) {\n\t\t\t\t\treturn \"130px\";\n\t\t\t\t} else {\n\t\t\t\t\tconst width = addUnit(props.width);\n\t\t\t\t\tif (_globalSize.value === \"small\") {\n\t\t\t\t\t\treturn `calc(${width} * 0.9)`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn width;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}),\n\t\t});\n\n\t\t/** @description 只有一层节点 */\n\t\tconst fold = computed<boolean>(() => [...state.orgTreeData].filter((f) => f[props.props.children]?.length > 0).length === 0);\n\n\t\tconst treeRef = ref<InstanceType<typeof ElTree>>();\n\n\t\tconst loadData = async (): Promise<void> => {\n\t\t\tlet curSelectedData;\n\t\t\tif (props.nodeKey) {\n\t\t\t\t// 记录原本选中的值\n\t\t\t\tcurSelectedData = treeRef.value.getCurrentKey();\n\t\t\t}\n\t\t\tlet treeData: ElTreeOutput[] = [];\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 ?? {}), searchValue: state.searchValue };\n\t\t\t\ttry {\n\t\t\t\t\ttreeData = await props.requestApi(params);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsoleError(\"FaTree\", error);\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\ttreeData = props.data;\n\t\t\t}\n\t\t\tif (!props.hideAll) {\n\t\t\t\ttreeData.unshift({ [props.nodeKey]: props.allValue, label: \"全部\", value: null, all: true } as any);\n\t\t\t}\n\t\t\tstate.orgTreeData = treeData;\n\t\t\tstate.treeData = treeData;\n\t\t\temit(\"dataChangeCallBack\", state.treeData);\n\t\t\tif (props.nodeKey && curSelectedData) {\n\t\t\t\tnextTick(() => {\n\t\t\t\t\t// 设置原本选中的值\n\t\t\t\t\ttreeRef.value.setCurrentKey(curSelectedData);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tif (props.defaultSelection) {\n\t\t\t\t\tnextTick(() => {\n\t\t\t\t\t\ttreeRef.value.setCurrentKey(props.defaultSelection);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tconst handleHamburgerClick = (): void => {\n\t\t\tif (state.hamburger) {\n\t\t\t\tstate.treeData = state.orgTreeData;\n\t\t\t} else {\n\t\t\t\t// 折叠只显示一级数据\n\t\t\t\tstate.treeData = state.orgTreeData.map((m) => ({ ...m, [props.props.children]: [] }));\n\t\t\t}\n\t\t\tstate.hamburger = !state.hamburger;\n\t\t};\n\n\t\tconst handleFilterNode = (value: FilterValue, data: TreeNodeData, child: any): boolean => {\n\t\t\tif (!value) return true;\n\t\t\tlet parentNode = child.parent,\n\t\t\t\tlabels = data.all ? [data.label] : [child.label],\n\t\t\t\tlevel = 1;\n\t\t\twhile (level < child.level) {\n\t\t\t\tlabels = [...labels, parentNode.label];\n\t\t\t\tparentNode = parentNode.parent;\n\t\t\t\tlevel++;\n\t\t\t}\n\t\t\tconst result = labels.some((label) => label.indexOf(value) !== -1);\n\t\t\tif (props.filterNodeMethod) {\n\t\t\t\treturn result && props.filterNodeMethod(value, data, child);\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\n\t\tconst handleNodeClick = (data: ElTreeOutput, node: any, instance: ComponentInternalInstance, event: MouseEvent): void => {\n\t\t\t// 判断是否开启点击展开节点,并且节点是折叠状态,则自动展开,否则需要点击箭头图标才能折叠或开启 'collapseOnClickNode'\n\t\t\tif (props.expandOnClickNode) {\n\t\t\t\tif (!node.expanded) {\n\t\t\t\t\tnode.expand();\n\t\t\t\t} else if (node.expanded && props.collapseOnClickNode) {\n\t\t\t\t\tnode.collapse();\n\t\t\t\t}\n\t\t\t}\n\t\t\tstate.value = node.key;\n\t\t\tselectedLabel.value = node.label;\n\t\t\temit(\"update:modelValue\", state.value);\n\t\t\temit(\"change\", data, node, instance, event);\n\t\t\temit(\"node-click\", data, node, instance, event);\n\t\t};\n\n\t\tonMounted(async () => {\n\t\t\tawait loadData();\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 elTreeProps = useProps(props, treeProps, [\"data\", \"expandOnClickNode\", \"filterNodeMethod\"]);\n\t\tconst elTreeEmits = useEmits(treeEmits, emit, [\"node-click\"]);\n\n\t\tuseRender(() => (\n\t\t\t<div\n\t\t\t\tclass={[\"el-card fa-tree\", `fa-tree-${_globalSize.value}`, { \"fa-tree__fold\": state.hamburger || fold.value }]}\n\t\t\t\tstyle={{ width: state.width }}\n\t\t\t\tvLoading={state.loading}\n\t\t\t>\n\t\t\t\t{(props.title || props.hamburger) && (\n\t\t\t\t\t<div class=\"fa-tree__title\">\n\t\t\t\t\t\t{props.title && <h4>{props.title}</h4>}\n\t\t\t\t\t\t{props.hamburger &&\n\t\t\t\t\t\t\t(state.hamburger ? (\n\t\t\t\t\t\t\t\t<ElIcon onClick={handleHamburgerClick} title=\"展开\">\n\t\t\t\t\t\t\t\t\t<Expand />\n\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<ElIcon onClick={handleHamburgerClick} title=\"折叠\">\n\t\t\t\t\t\t\t\t\t<Fold />\n\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{!props.hideFilter && (\n\t\t\t\t\t<ElInput\n\t\t\t\t\t\tclass=\"fa-tree__search-input\"\n\t\t\t\t\t\tvModel_trim={state.searchValue}\n\t\t\t\t\t\tplaceholder={state.hamburger ? \"关键字过滤\" : \"输入关键字进行过滤\"}\n\t\t\t\t\t\tclearable\n\t\t\t\t\t\tonInput={(value) => treeRef.value.filter(value)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t<ElScrollbar class=\"fa-tree__scrollbar\">\n\t\t\t\t\t<ElTree\n\t\t\t\t\t\t{...elTreeProps.value}\n\t\t\t\t\t\t{...elTreeEmits.value}\n\t\t\t\t\t\tref={treeRef}\n\t\t\t\t\t\tdata={state.treeData}\n\t\t\t\t\t\texpandOnClickNode={props.checkOnClickNode ? false : props.expandOnClickNode}\n\t\t\t\t\t\tfilterNodeMethod={handleFilterNode}\n\t\t\t\t\t\tonNodeClick={handleNodeClick}\n\t\t\t\t\t>\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\tdefault: ({ node, data }: { node: any; data: ElTreeOutput }) => (\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclass=\"el-tree-node__label\"\n\t\t\t\t\t\t\t\t\ttitle={data?.all ? data.label : node.label}\n\t\t\t\t\t\t\t\t\tstyle={{ paddingLeft: fold.value ? \"3px\" : \"\" }}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<div>{data?.all ? data.label : slots.label ? slots.label({ node, data }) : node.label}</div>\n\t\t\t\t\t\t\t\t\t{node.key && data.showQuantity ? <span>[{data.quantity}]</span> : null}\n\t\t\t\t\t\t\t\t\t{!data?.all && slots.default && <span>{slots.default({ node, data })}</span>}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t...(slots.empty && { empty: (): VNode[] => slots.empty() }),\n\t\t\t\t\t\t}}\n\t\t\t\t\t</ElTree>\n\t\t\t\t</ElScrollbar>\n\t\t\t</div>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** @description 过滤所有树节点,过滤后的节点将被隐藏 */\n\t\t\tfilter: computed(() => treeRef.value?.filter),\n\t\t\t/** @description 为节点设置新数据,只有当设置 node-key 属性的时候才可用 */\n\t\t\tupdateKeyChildren: computed(() => treeRef.value?.updateKeyChildren),\n\t\t\t/** @description 如果节点可以被选中,(show-checkbox 为 true), 本方法将返回当前选中节点的数组 */\n\t\t\tgetCheckedNodes: computed(() => treeRef.value?.getCheckedNodes),\n\t\t\t/** @description 设置目前勾选的节点,使用此方法必须提前设置 node-key 属性 */\n\t\t\tsetCheckedNodes: computed(() => treeRef.value?.setCheckedNodes),\n\t\t\t/** @description \t若节点可用被选中 (show-checkbox 为 true), 它将返回当前选中节点 key 的数组 */\n\t\t\tgetCheckedKeys: computed(() => treeRef.value?.getCheckedKeys),\n\t\t\t/** @description 设置目前选中的节点,使用此方法必须设置 node-key 属性 */\n\t\t\tsetCheckedKeys: computed(() => treeRef.value?.setCheckedKeys),\n\t\t\t/** @description 设置节点是否被选中, 使用此方法必须设置 node-key 属性 */\n\t\t\tsetChecked: computed(() => treeRef.value?.setChecked),\n\t\t\t/** @description 如果节点可用被选中 (show-checkbox 为 true), 它将返回当前半选中的节点组成的数组 */\n\t\t\tgetHalfCheckedNodes: computed(() => treeRef.value?.getHalfCheckedNodes),\n\t\t\t/** @description 若节点可被选中(show-checkbox 为 true),则返回目前半选中的节点的 key 所组成的数组 */\n\t\t\tgetHalfCheckedKeys: computed(() => treeRef.value?.getHalfCheckedKeys),\n\t\t\t/** @description 返回当前被选中节点的数据 (如果没有则返回 null) */\n\t\t\tgetCurrentKey: computed(() => treeRef.value?.getCurrentKey),\n\t\t\t/** @description 返回当前被选中节点的数据 (如果没有则返回 null) */\n\t\t\tgetCurrentNode: computed(() => treeRef.value?.getCurrentNode),\n\t\t\t/** @description 通过 key 设置某个节点的当前选中状态,使用此方法必须设置 node-key 属性 */\n\t\t\tsetCurrentKey: computed(() => treeRef.value?.setCurrentKey),\n\t\t\t/** @description 设置节点为选中状态,使用此方法必须设置 node-key 属性 */\n\t\t\tsetCurrentNode: computed(() => treeRef.value?.setCurrentNode),\n\t\t\t/** @description 根据 data 或者 key 拿到 Tree 组件中的 node */\n\t\t\tgetNode: computed(() => treeRef.value?.getNode),\n\t\t\t/** @description 删除 Tree 中的一个节点,使用此方法必须设置 node-key 属性 */\n\t\t\tremove: computed(() => treeRef.value?.remove),\n\t\t\t/** @description 为 Tree 中的一个节点追加一个子节点 */\n\t\t\tappend: computed(() => treeRef.value?.append),\n\t\t\t/** @description 在 Tree 中给定节点前插入一个节点 */\n\t\t\tinsertBefore: computed(() => treeRef.value?.insertBefore),\n\t\t\t/** @description 在 Tree 中给定节点后插入一个节点 */\n\t\t\tinsertAfter: computed(() => treeRef.value?.insertAfter),\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});\n\t},\n});\n"],"names":["faTreeProps","treeProps","disabled","type","Boolean","default","undefined","nodeKey","String","defaultExpandAll","checkOnClickNode","highlightCurrent","collapseOnClickNode","modelValue","definePropType","Number","Object","label","width","defaultSelection","title","hamburger","hideAll","hideFilter","allValue","data","Array","requestApi","Function","initParam","faTreeEmits","treeEmits","isString","value","isNumber","isBoolean","isObject","isNull","dataChangeCallBack","isArray","change","node","instance","event","Tree","name","props","emits","slots","makeSlots","setup","attrs","emit","expose","selectedLabel","useVModel","_globalSize","useGlobalSize","state","reactive","withDefineType","loading","searchValue","orgTreeData","treeData","computed","addUnit","fold","filter","f","children","length","treeRef","ref","loadData","async","curSelectedData","getCurrentKey","params","error","consoleError","unshift","all","nextTick","setCurrentKey","handleHamburgerClick","map","m","handleFilterNode","child","parentNode","parent","labels","level","result","some","indexOf","filterNodeMethod","handleNodeClick","expandOnClickNode","expanded","collapse","expand","key","onMounted","watch","deep","elTreeProps","useProps","elTreeEmits","useEmits","useRender","_withDirectives","_createVNode","class","style","ElIcon","onClick","Expand","Fold","ElInput","modelModifiers","trim","$event","placeholder","clearable","onInput","ElScrollbar","ElTree","_mergeProps","onNodeClick","paddingLeft","showQuantity","_createTextVNode","quantity","empty","_resolveDirective","useExpose","updateKeyChildren","getCheckedNodes","setCheckedNodes","getCheckedKeys","setCheckedKeys","setChecked","getHalfCheckedNodes","getHalfCheckedKeys","getCurrentNode","setCurrentNode","getNode","remove","append","insertBefore","insertAfter","refresh"],"mappings":"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"}
1
+ {"version":3,"file":"tree.js","sources":["../../../../../packages/components/tree/src/tree.tsx"],"sourcesContent":["import { computed, defineComponent, nextTick, onMounted, reactive, ref, watch } from \"vue\";\nimport { ElIcon, ElInput, ElScrollbar, ElTree, treeEmits, useGlobalSize } from \"element-plus\";\nimport { Expand, Fold } 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, isNull, isNumber, isObject, isString } from \"lodash-unified\";\nimport { treeProps } from \"./tree.props\";\nimport type { FilterValue, TreeNodeData } from \"./tree.props\";\nimport type { ElTreeOutput } from \"./tree.type\";\nimport type { ComponentInternalInstance, VNode } from \"vue\";\n\nexport const faTreeProps = {\n\t...treeProps,\n\t/** @description whether Select is disabled 重载使其支持 ElForm*/\n\tdisabled: {\n\t\ttype: Boolean,\n\t\tdefault: undefined,\n\t},\n\t/** 每个树节点用来作为唯一标识的属性,整棵树应该是唯一的 */\n\tnodeKey: {\n\t\ttype: String,\n\t\tdefault: \"value\",\n\t},\n\t/** @description 是否默认展开所有节点 */\n\tdefaultExpandAll: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 是否在点击节点的时候选中节点 */\n\tcheckOnClickNode: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 是否高亮当前选中节点 */\n\thighlightCurrent: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 点击折叠节点,需要开启 'expandOnClickNode' */\n\tcollapseOnClickNode: Boolean,\n\t/** @description v-model绑定值 */\n\tmodelValue: {\n\t\ttype: definePropType<string | number | boolean | object>([String, Number, Boolean, Object]),\n\t\tdefault: undefined,\n\t},\n\t/** @description v-model:label绑定值 */\n\tlabel: String,\n\t/** @description 宽度 */\n\twidth: {\n\t\ttype: [String, Number],\n\t\tdefault: 180,\n\t},\n\t/** @description 默认选择 */\n\tdefaultSelection: [String, Number],\n\t/** @description 标题 */\n\ttitle: String,\n\t/** @description 折叠 */\n\thamburger: Boolean,\n\t/** @description 隐藏全部 */\n\thideAll: Boolean,\n\t/** @description 隐藏过滤 */\n\thideFilter: Boolean,\n\t/** @description 全部值 */\n\tallValue: {\n\t\ttype: definePropType<string | number | boolean | object>([String, Number, Boolean, Object]),\n\t\tdefault: undefined,\n\t},\n\t/** @description 树形数据 */\n\tdata: {\n\t\ttype: definePropType<ElTreeOutput[]>(Array),\n\t\tdefault: (): ElTreeOutput[] => [],\n\t},\n\t/** @description 请求api */\n\trequestApi: {\n\t\ttype: definePropType<(params?: any) => Promise<ElTreeOutput[]>>(Function),\n\t},\n\t/** 初始化参数 */\n\tinitParam: definePropType<string | number | any>([String, Number, Object]),\n};\n\nexport const faTreeEmits = {\n\t...treeEmits,\n\t/** @description v-model 回调 */\n\t\"update:modelValue\": (value: string | number | boolean | object): boolean =>\n\t\tisString(value) || isNumber(value) || isBoolean(value) || isObject(value) || isNull(value),\n\t/** @description v-model:label 回调 */\n\t\"update:label\": (value: string): boolean => isString(value) || isNull(value),\n\t/** @description 数据改变 */\n\tdataChangeCallBack: (data: ElTreeOutput[]): boolean => isArray(data),\n\t/** @description 改变 */\n\tchange: (data: ElTreeOutput, node: any, instance: ComponentInternalInstance, event: MouseEvent): boolean => true,\n};\n\ntype FaTreeSlots = {\n\t/** @description 默认内容插槽 */\n\tdefault: { node: any; data: ElTreeOutput };\n\t/** @description 当数据为空时自定义的内容 */\n\tempty: never;\n\t/** @description 显示内容插槽 */\n\tlabel: { node: any; data: ElTreeOutput };\n};\n\nexport default defineComponent({\n\tname: \"FaTree\",\n\tprops: faTreeProps,\n\temits: faTreeEmits,\n\tslots: makeSlots<FaTreeSlots>(),\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>(),\n\t\t\tloading: false,\n\t\t\tsearchValue: withDefineType<string>(),\n\t\t\torgTreeData: withDefineType<ElTreeOutput[]>([]),\n\t\t\ttreeData: withDefineType<ElTreeOutput[]>([]),\n\t\t\thamburger: props.hamburger || false,\n\t\t\twidth: computed(() => {\n\t\t\t\tif (state.hamburger) {\n\t\t\t\t\treturn \"130px\";\n\t\t\t\t} else {\n\t\t\t\t\tconst width = addUnit(props.width);\n\t\t\t\t\tif (_globalSize.value === \"small\") {\n\t\t\t\t\t\treturn `calc(${width} * 0.9)`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn width;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}),\n\t\t});\n\n\t\t/** @description 只有一层节点 */\n\t\tconst fold = computed<boolean>(() => [...state.orgTreeData].filter((f) => f[props.props.children]?.length > 0).length === 0);\n\n\t\tconst treeRef = ref<InstanceType<typeof ElTree>>();\n\n\t\tconst loadData = async (): Promise<void> => {\n\t\t\tlet curSelectedData;\n\t\t\tif (props.nodeKey) {\n\t\t\t\t// 记录原本选中的值\n\t\t\t\tcurSelectedData = treeRef.value.getCurrentKey();\n\t\t\t}\n\t\t\tlet treeData: ElTreeOutput[] = [];\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 ?? {}), searchValue: state.searchValue };\n\t\t\t\ttry {\n\t\t\t\t\ttreeData = await props.requestApi(params);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsoleError(\"FaTree\", error);\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\ttreeData = props.data;\n\t\t\t}\n\t\t\tif (!props.hideAll) {\n\t\t\t\ttreeData.unshift({ [props.nodeKey]: props.allValue, label: \"全部\", value: null, all: true } as any);\n\t\t\t}\n\t\t\tstate.orgTreeData = treeData;\n\t\t\tstate.treeData = treeData;\n\t\t\temit(\"dataChangeCallBack\", state.treeData);\n\t\t\tif (props.nodeKey && curSelectedData) {\n\t\t\t\tnextTick(() => {\n\t\t\t\t\t// 设置原本选中的值\n\t\t\t\t\ttreeRef.value.setCurrentKey(curSelectedData);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tif (props.defaultSelection) {\n\t\t\t\t\tnextTick(() => {\n\t\t\t\t\t\ttreeRef.value.setCurrentKey(props.defaultSelection);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tconst handleHamburgerClick = (): void => {\n\t\t\tif (state.hamburger) {\n\t\t\t\tstate.treeData = state.orgTreeData;\n\t\t\t} else {\n\t\t\t\t// 折叠只显示一级数据\n\t\t\t\tstate.treeData = state.orgTreeData.map((m) => ({ ...m, [props.props.children]: [] }));\n\t\t\t}\n\t\t\tstate.hamburger = !state.hamburger;\n\t\t};\n\n\t\tconst handleFilterNode = (value: FilterValue, data: TreeNodeData, child: any): boolean => {\n\t\t\tif (!value) return true;\n\t\t\tlet parentNode = child.parent,\n\t\t\t\tlabels = data.all ? [data.label] : [child.label],\n\t\t\t\tlevel = 1;\n\t\t\twhile (level < child.level) {\n\t\t\t\tlabels = [...labels, parentNode.label];\n\t\t\t\tparentNode = parentNode.parent;\n\t\t\t\tlevel++;\n\t\t\t}\n\t\t\tconst result = labels.some((label) => label.indexOf(value) !== -1);\n\t\t\tif (props.filterNodeMethod) {\n\t\t\t\treturn result && props.filterNodeMethod(value, data, child);\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\n\t\tconst handleNodeClick = (data: ElTreeOutput, node: any, instance: ComponentInternalInstance, event: MouseEvent): void => {\n\t\t\t// 判断是否开启点击展开节点,并且节点是折叠状态,则自动展开,否则需要点击箭头图标才能折叠或开启 'collapseOnClickNode'\n\t\t\tif (props.expandOnClickNode) {\n\t\t\t\tif (!node.expanded) {\n\t\t\t\t\tnode.expand();\n\t\t\t\t} else if (node.expanded && props.collapseOnClickNode) {\n\t\t\t\t\tnode.collapse();\n\t\t\t\t}\n\t\t\t}\n\t\t\tstate.value = node.key;\n\t\t\tselectedLabel.value = node.label;\n\t\t\temit(\"update:modelValue\", state.value);\n\t\t\temit(\"change\", data, node, instance, event);\n\t\t\temit(\"node-click\", data, node, instance, event);\n\t\t};\n\n\t\tonMounted(async () => {\n\t\t\tawait loadData();\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 elTreeProps = useProps(props, treeProps, [\"data\", \"expandOnClickNode\", \"filterNodeMethod\"]);\n\t\tconst elTreeEmits = useEmits(treeEmits, emit, [\"node-click\"]);\n\n\t\tuseRender(() => (\n\t\t\t<div\n\t\t\t\tclass={[\"el-card fa-tree\", `fa-tree-${_globalSize.value}`, { \"fa-tree__fold\": state.hamburger || fold.value }]}\n\t\t\t\tstyle={{ width: state.width }}\n\t\t\t\tvLoading={state.loading}\n\t\t\t>\n\t\t\t\t{(props.title || props.hamburger) && (\n\t\t\t\t\t<div class=\"fa-tree__title\">\n\t\t\t\t\t\t{props.title && <h4>{props.title}</h4>}\n\t\t\t\t\t\t{props.hamburger &&\n\t\t\t\t\t\t\t(state.hamburger ? (\n\t\t\t\t\t\t\t\t<ElIcon onClick={handleHamburgerClick} title=\"展开\">\n\t\t\t\t\t\t\t\t\t<Expand />\n\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<ElIcon onClick={handleHamburgerClick} title=\"折叠\">\n\t\t\t\t\t\t\t\t\t<Fold />\n\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{!props.hideFilter && (\n\t\t\t\t\t<ElInput\n\t\t\t\t\t\tclass=\"fa-tree__search-input\"\n\t\t\t\t\t\tvModel_trim={state.searchValue}\n\t\t\t\t\t\tplaceholder={state.hamburger ? \"关键字过滤\" : \"输入关键字进行过滤\"}\n\t\t\t\t\t\tclearable\n\t\t\t\t\t\tonInput={(value) => treeRef.value.filter(value)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t<ElScrollbar class=\"fa-tree__scrollbar\">\n\t\t\t\t\t<ElTree\n\t\t\t\t\t\t{...elTreeProps.value}\n\t\t\t\t\t\t{...elTreeEmits.value}\n\t\t\t\t\t\tref={treeRef}\n\t\t\t\t\t\tdata={state.treeData}\n\t\t\t\t\t\texpandOnClickNode={props.checkOnClickNode ? false : props.expandOnClickNode}\n\t\t\t\t\t\tfilterNodeMethod={handleFilterNode}\n\t\t\t\t\t\tonNodeClick={handleNodeClick}\n\t\t\t\t\t>\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\tdefault: ({ node, data }: { node: any; data: ElTreeOutput }) => (\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclass=\"el-tree-node__label\"\n\t\t\t\t\t\t\t\t\ttitle={data?.all ? data.label : node.label}\n\t\t\t\t\t\t\t\t\tstyle={{ paddingLeft: fold.value ? \"3px\" : \"\" }}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<div>{data?.all ? data.label : slots.label ? slots.label({ node, data }) : node.label}</div>\n\t\t\t\t\t\t\t\t\t{node.key && data.showQuantity ? <span>[{data.quantity}]</span> : null}\n\t\t\t\t\t\t\t\t\t{!data?.all && slots.default && <span>{slots.default({ node, data })}</span>}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t...(slots.empty && { empty: (): VNode[] => slots.empty() }),\n\t\t\t\t\t\t}}\n\t\t\t\t\t</ElTree>\n\t\t\t\t</ElScrollbar>\n\t\t\t</div>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** @description 过滤所有树节点,过滤后的节点将被隐藏 */\n\t\t\tfilter: computed(() => treeRef.value?.filter),\n\t\t\t/** @description 为节点设置新数据,只有当设置 node-key 属性的时候才可用 */\n\t\t\tupdateKeyChildren: computed(() => treeRef.value?.updateKeyChildren),\n\t\t\t/** @description 如果节点可以被选中,(show-checkbox 为 true), 本方法将返回当前选中节点的数组 */\n\t\t\tgetCheckedNodes: computed(() => treeRef.value?.getCheckedNodes),\n\t\t\t/** @description 设置目前勾选的节点,使用此方法必须提前设置 node-key 属性 */\n\t\t\tsetCheckedNodes: computed(() => treeRef.value?.setCheckedNodes),\n\t\t\t/** @description \t若节点可用被选中 (show-checkbox 为 true), 它将返回当前选中节点 key 的数组 */\n\t\t\tgetCheckedKeys: computed(() => treeRef.value?.getCheckedKeys),\n\t\t\t/** @description 设置目前选中的节点,使用此方法必须设置 node-key 属性 */\n\t\t\tsetCheckedKeys: computed(() => treeRef.value?.setCheckedKeys),\n\t\t\t/** @description 设置节点是否被选中, 使用此方法必须设置 node-key 属性 */\n\t\t\tsetChecked: computed(() => treeRef.value?.setChecked),\n\t\t\t/** @description 如果节点可用被选中 (show-checkbox 为 true), 它将返回当前半选中的节点组成的数组 */\n\t\t\tgetHalfCheckedNodes: computed(() => treeRef.value?.getHalfCheckedNodes),\n\t\t\t/** @description 若节点可被选中(show-checkbox 为 true),则返回目前半选中的节点的 key 所组成的数组 */\n\t\t\tgetHalfCheckedKeys: computed(() => treeRef.value?.getHalfCheckedKeys),\n\t\t\t/** @description 返回当前被选中节点的数据 (如果没有则返回 null) */\n\t\t\tgetCurrentKey: computed(() => treeRef.value?.getCurrentKey),\n\t\t\t/** @description 返回当前被选中节点的数据 (如果没有则返回 null) */\n\t\t\tgetCurrentNode: computed(() => treeRef.value?.getCurrentNode),\n\t\t\t/** @description 通过 key 设置某个节点的当前选中状态,使用此方法必须设置 node-key 属性 */\n\t\t\tsetCurrentKey: computed(() => treeRef.value?.setCurrentKey),\n\t\t\t/** @description 设置节点为选中状态,使用此方法必须设置 node-key 属性 */\n\t\t\tsetCurrentNode: computed(() => treeRef.value?.setCurrentNode),\n\t\t\t/** @description 根据 data 或者 key 拿到 Tree 组件中的 node */\n\t\t\tgetNode: computed(() => treeRef.value?.getNode),\n\t\t\t/** @description 删除 Tree 中的一个节点,使用此方法必须设置 node-key 属性 */\n\t\t\tremove: computed(() => treeRef.value?.remove),\n\t\t\t/** @description 为 Tree 中的一个节点追加一个子节点 */\n\t\t\tappend: computed(() => treeRef.value?.append),\n\t\t\t/** @description 在 Tree 中给定节点前插入一个节点 */\n\t\t\tinsertBefore: computed(() => treeRef.value?.insertBefore),\n\t\t\t/** @description 在 Tree 中给定节点后插入一个节点 */\n\t\t\tinsertAfter: computed(() => treeRef.value?.insertAfter),\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});\n\t},\n});\n"],"names":["faTreeProps","treeProps","disabled","type","Boolean","default","undefined","nodeKey","String","defaultExpandAll","checkOnClickNode","highlightCurrent","collapseOnClickNode","modelValue","definePropType","Number","Object","label","width","defaultSelection","title","hamburger","hideAll","hideFilter","allValue","data","Array","requestApi","Function","initParam","faTreeEmits","treeEmits","isString","value","isNumber","isBoolean","isObject","isNull","dataChangeCallBack","isArray","change","node","instance","event","Tree","name","props","emits","slots","makeSlots","setup","attrs","emit","expose","selectedLabel","useVModel","passive","_globalSize","useGlobalSize","state","reactive","withDefineType","loading","searchValue","orgTreeData","treeData","computed","addUnit","fold","filter","f","children","length","treeRef","ref","loadData","async","curSelectedData","getCurrentKey","params","error","consoleError","unshift","all","nextTick","setCurrentKey","handleHamburgerClick","map","m","handleFilterNode","child","parentNode","parent","labels","level","result","some","indexOf","filterNodeMethod","handleNodeClick","expandOnClickNode","expanded","collapse","expand","key","onMounted","watch","deep","elTreeProps","useProps","elTreeEmits","useEmits","useRender","_withDirectives","_createVNode","class","style","ElIcon","onClick","Expand","Fold","ElInput","modelModifiers","trim","$event","placeholder","clearable","onInput","ElScrollbar","ElTree","_mergeProps","onNodeClick","paddingLeft","showQuantity","_createTextVNode","quantity","empty","_resolveDirective","useExpose","updateKeyChildren","getCheckedNodes","setCheckedNodes","getCheckedKeys","setCheckedKeys","setChecked","getHalfCheckedNodes","getHalfCheckedKeys","getCurrentNode","setCurrentNode","getNode","remove","append","insertBefore","insertAfter","refresh"],"mappings":"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"}
@@ -879,8 +879,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
879
879
  }) => any;
880
880
  "onRemove-tag"?: (val: unknown) => any;
881
881
  "onVisible-change"?: (visible: boolean) => any;
882
- "onCurrent-change"?: (data: any, node: import('element-plus/es/components/tree/src/model/node.mjs').default) => any;
883
882
  "onCheck-change"?: (data: any, checked: boolean, indeterminate: boolean) => any;
883
+ "onCurrent-change"?: (data: any, node: import('element-plus/es/components/tree/src/model/node.mjs').default) => any;
884
884
  "onNode-click"?: (data: any, node: import('element-plus/es/components/tree/src/model/node.mjs').default, nodeInstance: ComponentInternalInstance, evt: MouseEvent) => any;
885
885
  "onNode-contextmenu"?: (evt: Event, data: any, node: import('element-plus/es/components/tree/src/model/node.mjs').default, nodeInstance: ComponentInternalInstance) => any;
886
886
  "onNode-collapse"?: (data: any, node: import('element-plus/es/components/tree/src/model/node.mjs').default, nodeInstance: ComponentInternalInstance) => any;
@@ -921,6 +921,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
921
921
  persistent: boolean;
922
922
  draggable: boolean;
923
923
  fallbackPlacements: Placement[];
924
+ filterable: boolean;
924
925
  moreDetail: boolean;
925
926
  loadingText: string;
926
927
  noMatchText: string;
@@ -930,7 +931,6 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
930
931
  defaultSelected: boolean;
931
932
  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>;
932
933
  automaticDropdown: boolean;
933
- filterable: boolean;
934
934
  allowCreate: boolean;
935
935
  remote: boolean;
936
936
  multiple: boolean;
@@ -943,9 +943,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
943
943
  tagType: import('element-plus/es/utils/index.mjs').EpPropMergeType<StringConstructor, "primary" | "success" | "warning" | "info" | "danger", unknown>;
944
944
  tagEffect: import('element-plus/es/utils/index.mjs').EpPropMergeType<StringConstructor, "plain" | "dark" | "light", unknown>;
945
945
  remoteShowSuffix: boolean;
946
- defaultExpandAll: boolean;
947
- indent: number;
948
946
  nodeKey: string;
947
+ defaultExpandAll: boolean;
949
948
  checkOnClickNode: boolean;
950
949
  highlightCurrent: boolean;
951
950
  collapseOnClickNode: boolean;
@@ -956,6 +955,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
956
955
  autoExpandParent: boolean;
957
956
  showCheckbox: boolean;
958
957
  accordion: boolean;
958
+ indent: number;
959
959
  cacheData: {
960
960
  value: string | number | boolean | object;
961
961
  currentLabel: string | number;
@@ -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("../../select/src/select.js"),t=require("../../tree/src/tree.props.js"),r=require("@fast-china/utils"),o=require("@vueuse/core"),i=require("lodash-unified"),d={...a.SelectProps,...t.treeProps,cacheData:{type:r.definePropType(Array),default:[]},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},nodeKey:{type:String,default:"value"},defaultExpandAll:{type:Boolean,default:!0},checkOnClickNode:{type:Boolean,default:!0},highlightCurrent:{type:Boolean,default:!0},expandOnClickNode:Boolean,collapseOnClickNode:Boolean,modelValue:{type:r.definePropType([String,Number,Boolean,Object,Array]),default:void 0},label:r.definePropType([String,Array]),width:{type:[String,Number],default:"100%"},moreDetail:Boolean,lazy:{type:Boolean,default:!0},defaultSelected:Boolean,props:{type:r.definePropType(Object),default:()=>({label:"label",hide:"hide",disabled:"disabled",children:"children"})},data:{type:r.definePropType(Array),default:()=>[]},requestApi:{type:r.definePropType(Function)},initParam:r.definePropType([String,Number,Object])},n={...l.selectEmits,...l.treeEmits,"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},s=e.defineComponent({name:"FaTreeSelect",props:d,emits:n,slots:r.makeSlots(),setup(d,{attrs:n,slots:s,emit:u,expose:p}){const c=o.useVModel(d,"label",u),f=e.reactive({value:r.withDefineType(),loading:!1,selectorData:r.withDefineType([]),debut:!0,echo:!(d.data?.length>0),nextRefresh:!1}),h=e.ref(),y=e=>e?.map(e=>({...e,value:e[d.nodeKey],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)?y(d.props.children(e)):y(e[d.props.children??"children"])})).filter(e=>!e.hide),m=async()=>{if(d.requestApi){f.loading=!0;const l=d.initParam??{};try{const e=await d.requestApi(l);f.echo=!1,f.selectorData=y(e),u("dataChangeCallBack",f.selectorData)}catch(e){r.consoleError("FaTreeSelect",e),f.selectorData=[]}finally{f.loading=!1}}else f.echo=!1,f.selectorData=y(d.data)},b=(e,l,a)=>{if(!e)return!0;let t=a.parent,r=[a.label],o=1;for(;o<a.level;)r=[...r,t.label],t=t.parent,o++;const i=r.some(l=>-1!==l.indexOf(e));return d.filterNodeMethod?i&&d.filterNodeMethod(e,l,a):i},g=(e,l)=>{if(d.multiple){const l=e;if(0===l?.length)return f.value=null,c.value=null,u("update:modelValue",null),void u("change",null,null);const a=f.selectorData.filter(e=>l.includes(e.value));f.value=e,c.value=a.map(e=>e.label),u("update:modelValue",e),u("change",a,e)}else{if(i.isNil(e))return f.value=null,c.value=null,u("update:modelValue",null),void u("change",null,null);l??=f.selectorData.find(l=>l.value===e),f.value=e,c.value=l.label,u("update:modelValue",e),u("change",l,e)}},v=()=>{f.value=null,c.value=null,u("update:modelValue",null),u("clear")},S=(e,l,a,t)=>{d.expandOnClickNode&&(l.expanded?l.expanded&&d.collapseOnClickNode&&l.collapse():l.expand()),(d.checkStrictly||l.isLeaf)&&g(e.value,e),u("node-click",e,l,a,t)},x=async e=>{e&&(f.debut?(f.debut=!1,d.lazy&&await m()):f.nextRefresh&&(f.nextRefresh=!1,await m())),u("visible-change",e)};e.watch(()=>d.modelValue,e=>{if(f.echo&&!i.isNil(e)){const l=!i.isNil(d.label);if(d.multiple){if(!i.isArray(e))return void r.consoleError("FaTreeSelect","当启用 multiple 时,传入的 modelValue 必须是Array。");if(l&&!i.isArray(d.label))return void r.consoleError("FaTreeSelect","当启用 multiple 时,传入的 modelValue:label 必须是Array。");f.selectorData=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 r.consoleError("FaTreeSelect","当禁用 multiple 时,传入的 modelValue 不能是Array。");if(l&&i.isArray(d.label))return void r.consoleError("FaTreeSelect","当禁用 multiple 时,传入的 modelValue:label 不能是Array。");f.selectorData=[{value:e,label:d.label}]}}f.value=e},{immediate:!0}),e.onMounted(async()=>{d.defaultSelected?(await m(),f.selectorData.length>0&&(d.multiple?g([f.selectorData[0].value]):g(f.selectorData[0].value,f.selectorData[0]))):!d.requestApi&&d.data?.length>0?(f.debut=!1,await m()):d.lazy||await m(),e.watch(()=>d.initParam,(e,l)=>{i.isEqual(e,l)||(f.nextRefresh=!0,i.isNil(f.value)||g())}),e.watch(()=>d.data,async()=>{d.requestApi||await m()},{deep:!0})});const N=r.useProps(d,{...a.SelectProps,...t.treeProps},["modelValue","popperClass","lazy","loading","expandOnClickNode","filterNodeMethod"]),T=r.useEmits({...l.selectEmits,...l.treeEmits},u,["update:modelValue","clear","visible-change","node-click"]);return r.useRender(()=>e.createVNode(l.ElTreeSelect,e.mergeProps(N.value,T.value,{ref:h,class:"fa-tree-select",popperClass:`fa-tree-select-dropdown ${d.popperClass}`,style:{width:r.addUnit(d.width)},modelValue:f.value,"onUpdate:modelValue":e=>f.value=e,lazy:!1,loading:f.loading,data:f.selectorData,expandOnClickNode:!d.checkOnClickNode&&d.expandOnClickNode,filterNodeMethod:b,onNodeClick:S,onClear:v,onVisibleChange:x}),{...s.default&&{default:({node:e,data:l})=>s.default({node:e,data:l})},...s.header&&{header:()=>s.header()},...s.footer&&{footer:()=>s.footer()},...s.prefix&&{prefix:()=>s.prefix()},...s.empty&&{empty:()=>s.empty()},...s.tag&&{tag:()=>s.tag()},...s.loading&&{loading:()=>s.loading()},...s.label&&{label:({label:e,value:l})=>s.label({label:e,value:l})}})),r.useExpose(p,{loading:e.computed(()=>f.loading),refresh:m,setSelection:e=>g(e),clearSelection:()=>g(null)})}});exports.default=s,exports.faTreeSelectEmits=n,exports.faTreeSelectProps=d;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),l=require("element-plus"),a=require("../../select/src/select.js"),t=require("../../tree/src/tree.props.js"),r=require("@fast-china/utils"),o=require("@vueuse/core"),i=require("lodash-unified"),d={...a.SelectProps,...t.treeProps,cacheData:{type:r.definePropType(Array),default:[]},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},nodeKey:{type:String,default:"value"},defaultExpandAll:{type:Boolean,default:!0},checkOnClickNode:{type:Boolean,default:!0},highlightCurrent:{type:Boolean,default:!0},expandOnClickNode:Boolean,collapseOnClickNode:Boolean,modelValue:{type:r.definePropType([String,Number,Boolean,Object,Array]),default:void 0},label:r.definePropType([String,Array]),width:{type:[String,Number],default:"100%"},moreDetail:Boolean,lazy:{type:Boolean,default:!0},defaultSelected:Boolean,props:{type:r.definePropType(Object),default:()=>({label:"label",hide:"hide",disabled:"disabled",children:"children"})},data:{type:r.definePropType(Array),default:()=>[]},requestApi:{type:r.definePropType(Function)},initParam:r.definePropType([String,Number,Object])},n={...l.selectEmits,...l.treeEmits,"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},s=e.defineComponent({name:"FaTreeSelect",props:d,emits:n,slots:r.makeSlots(),setup(d,{attrs:n,slots:s,emit:u,expose:p}){const c=o.useVModel(d,"label",u,{passive:!0}),f=e.reactive({value:r.withDefineType(),loading:!1,selectorData:r.withDefineType([]),debut:!0,echo:!(d.data?.length>0),nextRefresh:!1}),h=e.ref(),y=e=>e?.map(e=>({...e,value:e[d.nodeKey],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)?y(d.props.children(e)):y(e[d.props.children??"children"])})).filter(e=>!e.hide),m=async()=>{if(d.requestApi){f.loading=!0;const l=d.initParam??{};try{const e=await d.requestApi(l);f.echo=!1,f.selectorData=y(e),u("dataChangeCallBack",f.selectorData)}catch(e){r.consoleError("FaTreeSelect",e),f.selectorData=[]}finally{f.loading=!1}}else f.echo=!1,f.selectorData=y(d.data)},b=(e,l,a)=>{if(!e)return!0;let t=a.parent,r=[a.label],o=1;for(;o<a.level;)r=[...r,t.label],t=t.parent,o++;const i=r.some(l=>-1!==l.indexOf(e));return d.filterNodeMethod?i&&d.filterNodeMethod(e,l,a):i},g=(e,l)=>{if(d.multiple){const l=e;if(0===l?.length)return f.value=null,c.value=null,u("update:modelValue",null),void u("change",null,null);const a=f.selectorData.filter(e=>l.includes(e.value));f.value=e,c.value=a.map(e=>e.label),u("update:modelValue",e),u("change",a,e)}else{if(i.isNil(e))return f.value=null,c.value=null,u("update:modelValue",null),void u("change",null,null);l??=f.selectorData.find(l=>l.value===e),f.value=e,c.value=l.label,u("update:modelValue",e),u("change",l,e)}},v=()=>{f.value=null,c.value=null,u("update:modelValue",null),u("clear")},S=(e,l,a,t)=>{d.expandOnClickNode&&(l.expanded?l.expanded&&d.collapseOnClickNode&&l.collapse():l.expand()),(d.checkStrictly||l.isLeaf)&&g(e.value,e),u("node-click",e,l,a,t)},x=async e=>{e&&(f.debut?(f.debut=!1,d.lazy&&await m()):f.nextRefresh&&(f.nextRefresh=!1,await m())),u("visible-change",e)};e.watch(()=>d.modelValue,e=>{if(f.echo&&!i.isNil(e)){const l=!i.isNil(d.label);if(d.multiple){if(!i.isArray(e))return void r.consoleError("FaTreeSelect","当启用 multiple 时,传入的 modelValue 必须是Array。");if(l&&!i.isArray(d.label))return void r.consoleError("FaTreeSelect","当启用 multiple 时,传入的 modelValue:label 必须是Array。");f.selectorData=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 r.consoleError("FaTreeSelect","当禁用 multiple 时,传入的 modelValue 不能是Array。");if(l&&i.isArray(d.label))return void r.consoleError("FaTreeSelect","当禁用 multiple 时,传入的 modelValue:label 不能是Array。");f.selectorData=[{value:e,label:d.label}]}}f.value=e},{immediate:!0}),e.onMounted(async()=>{d.defaultSelected?(await m(),f.selectorData.length>0&&(d.multiple?g([f.selectorData[0].value]):g(f.selectorData[0].value,f.selectorData[0]))):!d.requestApi&&d.data?.length>0?(f.debut=!1,await m()):d.lazy||await m(),e.watch(()=>d.initParam,(e,l)=>{i.isEqual(e,l)||(f.nextRefresh=!0,i.isNil(f.value)||g())}),e.watch(()=>d.data,async()=>{d.requestApi||await m()},{deep:!0})});const N=r.useProps(d,{...a.SelectProps,...t.treeProps},["modelValue","popperClass","lazy","loading","expandOnClickNode","filterNodeMethod"]),T=r.useEmits({...l.selectEmits,...l.treeEmits},u,["update:modelValue","clear","visible-change","node-click"]);return r.useRender(()=>e.createVNode(l.ElTreeSelect,e.mergeProps(N.value,T.value,{ref:h,class:"fa-tree-select",popperClass:`fa-tree-select-dropdown ${d.popperClass}`,style:{width:r.addUnit(d.width)},modelValue:f.value,"onUpdate:modelValue":e=>f.value=e,lazy:!1,loading:f.loading,data:f.selectorData,expandOnClickNode:!d.checkOnClickNode&&d.expandOnClickNode,filterNodeMethod:b,onNodeClick:S,onClear:v,onVisibleChange:x}),{...s.default&&{default:({node:e,data:l})=>s.default({node:e,data:l})},...s.header&&{header:()=>s.header()},...s.footer&&{footer:()=>s.footer()},...s.prefix&&{prefix:()=>s.prefix()},...s.empty&&{empty:()=>s.empty()},...s.tag&&{tag:()=>s.tag()},...s.loading&&{loading:()=>s.loading()},...s.label&&{label:({label:e,value:l})=>s.label({label:e,value:l})}})),r.useExpose(p,{loading:e.computed(()=>f.loading),refresh:m,setSelection:e=>g(e),clearSelection:()=>g(null)})}});exports.default=s,exports.faTreeSelectEmits=n,exports.faTreeSelectProps=d;
2
2
  //# sourceMappingURL=treeSelect.js.map