fast-element-plus 2.0.17 → 2.0.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/CONTRIBUTING.md +8 -0
- package/dist/component.d.ts +27 -33
- package/dist/components/avatar/src/avatar.d.ts +4 -4
- package/dist/components/button/src/button.d.ts +1 -1
- package/dist/components/button/src/button.mjs +2 -2
- package/dist/components/button/src/button.mjs.map +1 -1
- package/dist/components/contextMenu/src/contextMenu.d.ts +1 -1
- package/dist/components/contextMenu/src/contextMenu.mjs +2 -2
- package/dist/components/contextMenu/src/contextMenu.mjs.map +1 -1
- package/dist/components/dialog/src/dialog.d.ts +2 -2
- package/dist/components/dialog/src/dialog.mjs +3 -3
- package/dist/components/dialog/src/dialog.mjs.map +1 -1
- package/dist/components/drawer/src/drawer.d.ts +2 -2
- package/dist/components/drawer/src/drawer.mjs +3 -3
- package/dist/components/drawer/src/drawer.mjs.map +1 -1
- package/dist/components/image/src/image.d.ts +1 -1
- package/dist/components/layoutGrid/src/layoutGridItem.d.ts +1 -1
- package/dist/components/layoutGrid/src/layoutGridItem.mjs +1 -1
- package/dist/components/layoutGrid/src/layoutGridItem.mjs.map +1 -1
- package/dist/components/select/src/select.d.ts +1 -1
- package/dist/components/select/src/select.mjs +2 -2
- package/dist/components/select/src/select.mjs.map +1 -1
- package/dist/components/selectPage/src/selectPage.d.ts +10 -4
- package/dist/components/selectPage/src/selectPage.mjs +2 -2
- package/dist/components/selectPage/src/selectPage.mjs.map +1 -1
- package/dist/components/selectV2/src/selectV2.d.ts +1 -1
- package/dist/components/selectV2/src/selectV2.mjs +2 -2
- package/dist/components/selectV2/src/selectV2.mjs.map +1 -1
- package/dist/components/table/src/table.d.ts +1 -1
- package/dist/components/table/src/table.mjs +2 -2
- package/dist/components/table/src/table.mjs.map +1 -1
- package/dist/components/table/src/tableColumn.d.ts +6 -6
- package/dist/components/tree/src/tree.d.ts +1 -1
- package/dist/components/tree/src/tree.mjs +2 -2
- package/dist/components/tree/src/tree.mjs.map +1 -1
- package/dist/components/treeSelect/src/treeSelect.d.ts +19 -7
- package/dist/components/treeSelect/src/treeSelect.mjs +2 -2
- package/dist/components/treeSelect/src/treeSelect.mjs.map +1 -1
- package/dist/components/upload/src/upload.mjs +2 -2
- package/dist/components/upload/src/upload.mjs.map +1 -1
- package/dist/components/uploadImage/src/uploadImage.d.ts +3 -15
- package/dist/components/uploadImage/src/uploadImage.mjs +1 -10
- package/dist/components/uploadImage/src/uploadImage.mjs.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.global.min.js +4 -4
- package/dist/index.global.min.js.map +1 -1
- package/dist/utils/async/index.mjs.map +1 -1
- package/dist/utils/date/index.mjs.map +1 -1
- package/dist/utils/object/index.d.ts +28 -6
- package/dist/utils/object/index.mjs +142 -96
- package/dist/utils/object/index.mjs.map +1 -1
- package/dist/utils/string/index.mjs.map +1 -1
- package/dist/utils/vue/emits.mjs.map +1 -1
- package/dist/utils/vue/install.mjs.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.mjs +1 -1
- package/dist/version.mjs.map +1 -1
- package/package.json +4 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectV2.mjs","names":["update:modelValue","end-reached","remove-tag","visible-change","update:label"],"sources":["../../../../src/components/selectV2/src/selectV2.tsx"],"sourcesContent":["import { computed, defineComponent, onMounted, reactive, shallowRef, useModel, watch } from \"vue\";\nimport { ArrowDown, CircleClose } from \"@element-plus/icons-vue\";\nimport { ElSelectV2, tagProps, useAriaProps, useEmptyValuesProps, useGlobalSize, useSizeProp, useTooltipContentProps } from \"element-plus\";\nimport { addCssUnit, definePropType, isEqual, makeSlots, useEmits, useExpose, useProps, useRender, withDefineType } from \"../../../utils\";\nimport type { SelectV2Props as ElementPlusSelectV2Props, Options, Placement, ScrollbarDirection } from \"element-plus\";\nimport type { Component, PropType } from \"vue\";\nimport type { ElSelectorModelValue, ElSelectorOutput, ElSelectorValue } from \"../../select/src/select.type\";\nimport type { PagedInput, PagedResult } from \"../../table\";\n\n/** 传递给底层 Element Plus 虚拟化选择器的扩展 Props。 */\nexport interface Props {\n\tlabel?: string;\n\tvalue?: string;\n\tdisabled?: string;\n\toptions?: string;\n}\n\n/** FaSelectV2 支持的业务选择器 Props 定义。 */\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<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/** @description collapse-tags tooltip configuration */\n\ttagTooltip: {\n\t\ttype: definePropType<ElementPlusSelectV2Props[\"tagTooltip\"]>(Object),\n\t\tdefault: () => ({}),\n\t},\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 as PropType<ElementPlusSelectV2Props[\"filterMethod\"]>,\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<ElSelectorModelValue>([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 as PropType<ElementPlusSelectV2Props[\"remoteMethod\"]>,\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<ElementPlusSelectV2Props[\"options\"]>(Array),\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\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 复用 Element Plus 2.x 的运行时默认值与校验规则。\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/** @description custom style for Select's dropdown */\n\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 复用 Element Plus 2.x 的运行时类型定义。\n\tpopperStyle: useTooltipContentProps.popperStyle,\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: () => ({}),\n\t},\n\t/**\n\t * @description whether search data from server\n\t */\n\tremote: Boolean,\n\t/** @description debounce delay during remote search, in milliseconds */\n\tdebounce: {\n\t\ttype: Number,\n\t\tdefault: 300,\n\t},\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: () => ({\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/** @description whether to show the suffix icon during remote search */\n\tremoteShowSuffix: Boolean,\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\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 复用 Element Plus 2.x 的 Tag 运行时校验规则。\n\ttagType: { ...tagProps.type, default: \"info\" },\n\t/**\n\t * @description tag effect\n\t */\n\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 复用 Element Plus 2.x 的 Tag 运行时校验规则。\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/** @description whether the dropdown width follows the input width, or a fixed width */\n\tfitInputWidth: {\n\t\ttype: [Boolean, Number],\n\t\tdefault: true,\n\t\tvalidator: (value: boolean | number) => typeof value === \"boolean\" || typeof value === \"number\",\n\t},\n\t/** @description select suffix icon */\n\tsuffixIcon: {\n\t\ttype: definePropType<string | Component>([String, Object, Function]),\n\t\tdefault: ArrowDown,\n\t},\n\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 复用 Element Plus 2.x 的空值运行时约定。\n\t...useEmptyValuesProps,\n\t...useAriaProps([\"ariaLabel\"]),\n};\n\n/** 底层虚拟化选择器的运行时 Emits 定义。 */\nexport const selectV2Emits = {\n\t\"update:modelValue\": (_value: ElSelectorModelValue) => true,\n\tchange: (_value: ElSelectorModelValue) => true,\n\t\"end-reached\": (_direction: ScrollbarDirection) => true,\n\t\"remove-tag\": (_value: ElSelectorValue) => true,\n\t\"visible-change\": (_visible: boolean) => true,\n\tfocus: (_event: FocusEvent) => true,\n\tblur: (_event: FocusEvent) => true,\n\tclear: () => true,\n};\n\n/** FaSelectV2 的运行时 Props 定义。 */\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<ElSelectorModelValue>([String, Number, Boolean, Object, Array]),\n\t\tdefault: undefined,\n\t},\n\t/** @description v-model:label绑定值 */\n\tlabel: definePropType<string | string[] | null>([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: () => [],\n\t},\n\t/** 分页返回 */\n\tpageResult: Boolean,\n\t/** @description 请求api */\n\trequestApi: {\n\t\ttype: definePropType<(params?: string | number | PagedInput) => Promise<ElSelectorOutput[] | PagedResult<ElSelectorOutput>>>(Function),\n\t},\n\t/** 初始化参数 */\n\tinitParam: definePropType<string | number | PagedInput>([String, Number, Object]),\n};\n\n/** FaSelectV2 的运行时 Emits 定义。 */\nexport const faSelectV2Emits = {\n\t...selectV2Emits,\n\t/** @description v-model 回调 */\n\t\"update:modelValue\": (value: ElSelectorModelValue) =>\n\t\ttypeof value === \"string\" ||\n\t\ttypeof value === \"number\" ||\n\t\ttypeof value === \"boolean\" ||\n\t\t(typeof value === \"object\" && value !== null) ||\n\t\tvalue == null,\n\t/** @description 选中数据改变 */\n\tchange: (_data: ElSelectorOutput | ElSelectorOutput[] | null, _value?: ElSelectorModelValue) => true,\n\t/** @description v-model:label 回调 */\n\t\"update:label\": (value: string | string[] | null) => typeof value === \"string\" || Array.isArray(value) || value === null,\n\t/** @description 数据改变 */\n\tdataChange: (data: ElSelectorOutput[]) => Array.isArray(data),\n};\n\n/** FaSelectV2 的插槽参数。 */\nexport interface FaSelectV2Slots extends Record<string, unknown> {\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, { slots, emit, expose }) {\n\t\tconst selectedLabel = useModel(props, \"label\");\n\n\t\tconst globalSize = useGlobalSize();\n\t\tconst selectV2Ref = shallowRef<InstanceType<typeof ElSelectV2> | null>(null);\n\n\t\tconst state = reactive({\n\t\t\tvalue: withDefineType<ElSelectorModelValue>(),\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: true,\n\t\t\t/** 下次刷新 */\n\t\t\tnextRefresh: false,\n\t\t});\n\n\t\tlet requestVersion = 0;\n\n\t\tconst loadData = async () => {\n\t\t\tconst currentRequestVersion = ++requestVersion;\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\tif (currentRequestVersion !== requestVersion) return;\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(\"dataChange\", state.selectorData);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (currentRequestVersion !== requestVersion) return;\n\t\t\t\t\tstate.selectorData = [];\n\t\t\t\t\tthrow error;\n\t\t\t\t} finally {\n\t\t\t\t\tif (currentRequestVersion === requestVersion) state.loading = false;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (currentRequestVersion !== requestVersion) return;\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 handleModelValueUpdate = (value: ElSelectorModelValue) => {\n\t\t\tstate.value = value;\n\t\t\temit(\"update:modelValue\", value);\n\t\t};\n\n\t\tconst handleVisibleChange = async (visible: boolean) => {\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\t// eslint-disable-next-line vue/custom-event-name-casing -- Element Plus 的公开事件名为 visible-change,需要保持原始名称透传。\n\t\t\temit(\"visible-change\", visible);\n\t\t};\n\n\t\tconst getOptionValue = (item: ElSelectorOutput) => {\n\t\t\tconst value: unknown = item[props.props.value ?? \"value\"];\n\t\t\treturn value !== null &&\n\t\t\t\t(typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\" || typeof value === \"object\")\n\t\t\t\t? value\n\t\t\t\t: undefined;\n\t\t};\n\n\t\tconst getOptionLabel = (item: ElSelectorOutput) => {\n\t\t\tconst label: unknown = item[props.props.label ?? \"label\"];\n\t\t\treturn typeof label === \"string\" ? label : undefined;\n\t\t};\n\n\t\tconst flattenOptions = (data: ElSelectorOutput[]): ElSelectorOutput[] =>\n\t\t\tdata.flatMap((item) => {\n\t\t\t\tconst children: unknown = item[props.props.options ?? \"options\"];\n\t\t\t\treturn [item, ...(Array.isArray(children) ? flattenOptions(children as ElSelectorOutput[]) : [])];\n\t\t\t});\n\n\t\tconst handleChange = (value?: ElSelectorModelValue) => {\n\t\t\tconst selectorData = flattenOptions(state.selectorData);\n\t\t\tif (props.multiple) {\n\t\t\t\tconst valueList = Array.isArray(value) ? value : [];\n\t\t\t\tif (valueList.length === 0) {\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 = valueList\n\t\t\t\t\t.map((item) =>\n\t\t\t\t\t\tselectorData.find((option) => {\n\t\t\t\t\t\t\tconst optionValue = getOptionValue(option);\n\t\t\t\t\t\t\treturn optionValue !== undefined && isEqual(optionValue, item);\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t.filter((item) => item !== undefined);\n\t\t\t\temit(\"change\", dataList, value);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (value == null || Array.isArray(value)) {\n\t\t\t\temit(\"change\", null, null);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst data = selectorData.find((option) => {\n\t\t\t\tconst optionValue = getOptionValue(option);\n\t\t\t\treturn optionValue !== undefined && isEqual(optionValue, value);\n\t\t\t});\n\t\t\temit(\"change\", data ?? null, value);\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 && newValue != null) {\n\t\t\t\t\tconst hasLabel = props.label != null;\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 (!Array.isArray(newValue)) {\n\t\t\t\t\t\t\tconsole.error(\"[Fast: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 && !Array.isArray(props.label)) {\n\t\t\t\t\t\t\tconsole.error(\"[Fast: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\tconst value: unknown = item;\n\t\t\t\t\t\t\t\tconst label: unknown = Array.isArray(props.label) ? props.label[index] : undefined;\n\t\t\t\t\t\t\t\tconst selectorValue: ElSelectorValue | undefined =\n\t\t\t\t\t\t\t\t\tvalue !== null &&\n\t\t\t\t\t\t\t\t\t(typeof value === \"string\" ||\n\t\t\t\t\t\t\t\t\t\ttypeof value === \"number\" ||\n\t\t\t\t\t\t\t\t\t\ttypeof value === \"boolean\" ||\n\t\t\t\t\t\t\t\t\t\ttypeof value === \"object\")\n\t\t\t\t\t\t\t\t\t\t? value\n\t\t\t\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tvalue: selectorValue,\n\t\t\t\t\t\t\t\t\tlabel: hasLabel && typeof label === \"string\" ? label : undefined,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (Array.isArray(newValue)) {\n\t\t\t\t\t\t\tconsole.error(\"[Fast: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 && Array.isArray(props.label)) {\n\t\t\t\t\t\t\tconsole.error(\"[Fast: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: typeof props.label === \"string\" ? props.label : undefined,\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\twatch(\n\t\t\t[() => state.value, () => state.selectorData],\n\t\t\t([value]) => {\n\t\t\t\tconst selectorData = flattenOptions(state.selectorData);\n\t\t\t\tif (props.multiple) {\n\t\t\t\t\tif (!Array.isArray(value)) {\n\t\t\t\t\t\tselectedLabel.value = null;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tselectedLabel.value = value.map((item, index) => {\n\t\t\t\t\t\tconst data = selectorData.find((option) => {\n\t\t\t\t\t\t\tconst optionValue = getOptionValue(option);\n\t\t\t\t\t\t\treturn optionValue !== undefined && isEqual(optionValue, item);\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn (data && getOptionLabel(data)) ?? (Array.isArray(props.label) ? (props.label[index] ?? \"\") : \"\");\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (value == null || Array.isArray(value)) {\n\t\t\t\t\tselectedLabel.value = null;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst data = selectorData.find((option) => {\n\t\t\t\t\tconst optionValue = getOptionValue(option);\n\t\t\t\t\treturn optionValue !== undefined && isEqual(optionValue, value);\n\t\t\t\t});\n\t\t\t\tselectedLabel.value = (data && getOptionLabel(data)) ?? (typeof props.label === \"string\" ? props.label : null);\n\t\t\t},\n\t\t\t{\n\t\t\t\tdeep: true,\n\t\t\t\tflush: \"sync\",\n\t\t\t\timmediate: true,\n\t\t\t}\n\t\t);\n\n\t\twatch(\n\t\t\t() => props.initParam,\n\t\t\t(newValue, oldValue) => {\n\t\t\t\tif (!isEqual(newValue, oldValue)) {\n\t\t\t\t\tstate.nextRefresh = true;\n\t\t\t\t\tif (state.value != null) {\n\t\t\t\t\t\thandleModelValueUpdate(props.multiple ? [] : undefined);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\twatch(\n\t\t\t() => props.data,\n\t\t\t() => {\n\t\t\t\tif (!props.requestApi) {\n\t\t\t\t\treturn loadData();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ deep: true }\n\t\t);\n\n\t\twatch(\n\t\t\t() => props.data.length,\n\t\t\t(length) => {\n\t\t\t\tif (state.debut) state.echo = length === 0;\n\t\t\t},\n\t\t\t{ immediate: true }\n\t\t);\n\n\t\tonMounted(async () => {\n\t\t\tif (props.defaultSelected) {\n\t\t\t\tawait loadData();\n\t\t\t\tconst firstItem = state.selectorData[0];\n\t\t\t\tconst firstValue = firstItem && getOptionValue(firstItem);\n\t\t\t\tif (firstValue !== undefined) {\n\t\t\t\t\thandleModelValueUpdate(props.multiple ? [firstValue] : firstValue);\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});\n\n\t\tconst elSelectV2Props = useProps(props, SelectV2Props, [\"modelValue\", \"popperClass\", \"loading\", \"options\", \"itemHeight\"]);\n\t\tconst elSelectV2Emits = useEmits(selectV2Emits, emit, [\"update:modelValue\", \"change\", \"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-v2-dropdown__more-detail fa-select-v2-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: addCssUnit(props.width) }}\n\t\t\t\tmodelValue={state.value}\n\t\t\t\tonUpdate:modelValue={handleModelValueUpdate}\n\t\t\t\tonChange={handleChange}\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\tonVisible-change={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 }) =>\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: () => slots.header?.() ?? [] }),\n\t\t\t\t\t...(slots.footer && { footer: () => slots.footer?.() ?? [] }),\n\t\t\t\t\t...(slots.prefix && { prefix: () => slots.prefix?.() ?? [] }),\n\t\t\t\t\t...(slots.empty && { empty: () => slots.empty?.() ?? [] }),\n\t\t\t\t\t...(slots.tag && { tag: () => slots.tag?.() ?? [] }),\n\t\t\t\t\t...(slots.loading && { loading: () => 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 }) =>\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\tscrollTo: computed(() => selectV2Ref.value?.scrollTo),\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: Exclude<ElSelectorModelValue, null | undefined>) => handleModelValueUpdate(value),\n\t\t\t/** @description 清除选择 */\n\t\t\tclearSelection: () => handleModelValueUpdate(props.multiple ? [] : undefined),\n\t\t});\n\t},\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"selectV2.mjs","names":["update:modelValue","end-reached","remove-tag","visible-change","update:label"],"sources":["../../../../src/components/selectV2/src/selectV2.tsx"],"sourcesContent":["import { computed, defineComponent, onMounted, reactive, shallowRef, toRef, useModel, watch } from \"vue\";\nimport { ArrowDown, CircleClose } from \"@element-plus/icons-vue\";\nimport { ElSelectV2, tagProps, useAriaProps, useEmptyValuesProps, useGlobalSize, useSizeProp, useTooltipContentProps } from \"element-plus\";\nimport { addCssUnit, definePropType, isEqual, makeSlots, useEmits, useExpose, useProps, useRender, withDefineType } from \"../../../utils\";\nimport type { SelectV2Props as ElementPlusSelectV2Props, Options, Placement, ScrollbarDirection } from \"element-plus\";\nimport type { Component, PropType } from \"vue\";\nimport type { ElSelectorModelValue, ElSelectorOutput, ElSelectorValue } from \"../../select/src/select.type\";\nimport type { PagedInput, PagedResult } from \"../../table\";\n\n/** 传递给底层 Element Plus 虚拟化选择器的扩展 Props。 */\nexport interface Props {\n\tlabel?: string;\n\tvalue?: string;\n\tdisabled?: string;\n\toptions?: string;\n}\n\n/** FaSelectV2 支持的业务选择器 Props 定义。 */\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<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/** @description collapse-tags tooltip configuration */\n\ttagTooltip: {\n\t\ttype: definePropType<ElementPlusSelectV2Props[\"tagTooltip\"]>(Object),\n\t\tdefault: () => ({}),\n\t},\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 as PropType<ElementPlusSelectV2Props[\"filterMethod\"]>,\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<ElSelectorModelValue>([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 as PropType<ElementPlusSelectV2Props[\"remoteMethod\"]>,\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<ElementPlusSelectV2Props[\"options\"]>(Array),\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\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 复用 Element Plus 2.x 的运行时默认值与校验规则。\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/** @description custom style for Select's dropdown */\n\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 复用 Element Plus 2.x 的运行时类型定义。\n\tpopperStyle: useTooltipContentProps.popperStyle,\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: () => ({}),\n\t},\n\t/**\n\t * @description whether search data from server\n\t */\n\tremote: Boolean,\n\t/** @description debounce delay during remote search, in milliseconds */\n\tdebounce: {\n\t\ttype: Number,\n\t\tdefault: 300,\n\t},\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: () => ({\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/** @description whether to show the suffix icon during remote search */\n\tremoteShowSuffix: Boolean,\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\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 复用 Element Plus 2.x 的 Tag 运行时校验规则。\n\ttagType: { ...tagProps.type, default: \"info\" },\n\t/**\n\t * @description tag effect\n\t */\n\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 复用 Element Plus 2.x 的 Tag 运行时校验规则。\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/** @description whether the dropdown width follows the input width, or a fixed width */\n\tfitInputWidth: {\n\t\ttype: [Boolean, Number],\n\t\tdefault: true,\n\t\tvalidator: (value: boolean | number) => typeof value === \"boolean\" || typeof value === \"number\",\n\t},\n\t/** @description select suffix icon */\n\tsuffixIcon: {\n\t\ttype: definePropType<string | Component>([String, Object, Function]),\n\t\tdefault: ArrowDown,\n\t},\n\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 复用 Element Plus 2.x 的空值运行时约定。\n\t...useEmptyValuesProps,\n\t...useAriaProps([\"ariaLabel\"]),\n};\n\n/** 底层虚拟化选择器的运行时 Emits 定义。 */\nexport const selectV2Emits = {\n\t\"update:modelValue\": (_value: ElSelectorModelValue) => true,\n\tchange: (_value: ElSelectorModelValue) => true,\n\t\"end-reached\": (_direction: ScrollbarDirection) => true,\n\t\"remove-tag\": (_value: ElSelectorValue) => true,\n\t\"visible-change\": (_visible: boolean) => true,\n\tfocus: (_event: FocusEvent) => true,\n\tblur: (_event: FocusEvent) => true,\n\tclear: () => true,\n};\n\n/** FaSelectV2 的运行时 Props 定义。 */\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<ElSelectorModelValue>([String, Number, Boolean, Object, Array]),\n\t\tdefault: undefined,\n\t},\n\t/** @description v-model:label绑定值 */\n\tlabel: definePropType<string | string[] | null>([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: () => [],\n\t},\n\t/** 分页返回 */\n\tpageResult: Boolean,\n\t/** @description 请求api */\n\trequestApi: {\n\t\ttype: definePropType<(params?: string | number | PagedInput) => Promise<ElSelectorOutput[] | PagedResult<ElSelectorOutput>>>(Function),\n\t},\n\t/** 初始化参数 */\n\tinitParam: definePropType<string | number | PagedInput>([String, Number, Object]),\n};\n\n/** FaSelectV2 的运行时 Emits 定义。 */\nexport const faSelectV2Emits = {\n\t...selectV2Emits,\n\t/** @description v-model 回调 */\n\t\"update:modelValue\": (value: ElSelectorModelValue) =>\n\t\ttypeof value === \"string\" ||\n\t\ttypeof value === \"number\" ||\n\t\ttypeof value === \"boolean\" ||\n\t\t(typeof value === \"object\" && value !== null) ||\n\t\tvalue == null,\n\t/** @description 选中数据改变 */\n\tchange: (_data: ElSelectorOutput | ElSelectorOutput[] | null, _value?: ElSelectorModelValue) => true,\n\t/** @description v-model:label 回调 */\n\t\"update:label\": (value: string | string[] | null) => typeof value === \"string\" || Array.isArray(value) || value === null,\n\t/** @description 数据改变 */\n\tdataChange: (data: ElSelectorOutput[]) => Array.isArray(data),\n};\n\n/** FaSelectV2 的插槽参数。 */\nexport interface FaSelectV2Slots extends Record<string, unknown> {\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, { slots, emit, expose }) {\n\t\tconst selectedLabel = useModel(props, \"label\");\n\n\t\tconst globalSize = useGlobalSize();\n\t\tconst selectV2Ref = shallowRef<InstanceType<typeof ElSelectV2> | null>(null);\n\n\t\tconst state = reactive({\n\t\t\tvalue: withDefineType<ElSelectorModelValue>(),\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: true,\n\t\t\t/** 下次刷新 */\n\t\t\tnextRefresh: false,\n\t\t});\n\n\t\tlet requestVersion = 0;\n\n\t\tconst loadData = async () => {\n\t\t\tconst currentRequestVersion = ++requestVersion;\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\tif (currentRequestVersion !== requestVersion) return;\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(\"dataChange\", state.selectorData);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (currentRequestVersion !== requestVersion) return;\n\t\t\t\t\tstate.selectorData = [];\n\t\t\t\t\tthrow error;\n\t\t\t\t} finally {\n\t\t\t\t\tif (currentRequestVersion === requestVersion) state.loading = false;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (currentRequestVersion !== requestVersion) return;\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 handleModelValueUpdate = (value: ElSelectorModelValue) => {\n\t\t\tstate.value = value;\n\t\t\temit(\"update:modelValue\", value);\n\t\t};\n\n\t\tconst handleVisibleChange = async (visible: boolean) => {\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\t// eslint-disable-next-line vue/custom-event-name-casing -- Element Plus 的公开事件名为 visible-change,需要保持原始名称透传。\n\t\t\temit(\"visible-change\", visible);\n\t\t};\n\n\t\tconst getOptionValue = (item: ElSelectorOutput) => {\n\t\t\tconst value: unknown = item[props.props.value ?? \"value\"];\n\t\t\treturn value !== null &&\n\t\t\t\t(typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\" || typeof value === \"object\")\n\t\t\t\t? value\n\t\t\t\t: undefined;\n\t\t};\n\n\t\tconst getOptionLabel = (item: ElSelectorOutput) => {\n\t\t\tconst label: unknown = item[props.props.label ?? \"label\"];\n\t\t\treturn typeof label === \"string\" ? label : undefined;\n\t\t};\n\n\t\tconst flattenOptions = (data: ElSelectorOutput[]): ElSelectorOutput[] =>\n\t\t\tdata.flatMap((item) => {\n\t\t\t\tconst children: unknown = item[props.props.options ?? \"options\"];\n\t\t\t\treturn [item, ...(Array.isArray(children) ? flattenOptions(children as ElSelectorOutput[]) : [])];\n\t\t\t});\n\n\t\tconst handleChange = (value?: ElSelectorModelValue) => {\n\t\t\tconst selectorData = flattenOptions(state.selectorData);\n\t\t\tif (props.multiple) {\n\t\t\t\tconst valueList = Array.isArray(value) ? value : [];\n\t\t\t\tif (valueList.length === 0) {\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 = valueList\n\t\t\t\t\t.map((item) =>\n\t\t\t\t\t\tselectorData.find((option) => {\n\t\t\t\t\t\t\tconst optionValue = getOptionValue(option);\n\t\t\t\t\t\t\treturn optionValue !== undefined && isEqual(optionValue, item);\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t.filter((item) => item !== undefined);\n\t\t\t\temit(\"change\", dataList, value);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (value == null || Array.isArray(value)) {\n\t\t\t\temit(\"change\", null, null);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst data = selectorData.find((option) => {\n\t\t\t\tconst optionValue = getOptionValue(option);\n\t\t\t\treturn optionValue !== undefined && isEqual(optionValue, value);\n\t\t\t});\n\t\t\temit(\"change\", data ?? null, value);\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 && newValue != null) {\n\t\t\t\t\tconst hasLabel = props.label != null;\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 (!Array.isArray(newValue)) {\n\t\t\t\t\t\t\tconsole.error(\"[Fast: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 && !Array.isArray(props.label)) {\n\t\t\t\t\t\t\tconsole.error(\"[Fast: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\tconst value: unknown = item;\n\t\t\t\t\t\t\t\tconst label: unknown = Array.isArray(props.label) ? props.label[index] : undefined;\n\t\t\t\t\t\t\t\tconst selectorValue: ElSelectorValue | undefined =\n\t\t\t\t\t\t\t\t\tvalue !== null &&\n\t\t\t\t\t\t\t\t\t(typeof value === \"string\" ||\n\t\t\t\t\t\t\t\t\t\ttypeof value === \"number\" ||\n\t\t\t\t\t\t\t\t\t\ttypeof value === \"boolean\" ||\n\t\t\t\t\t\t\t\t\t\ttypeof value === \"object\")\n\t\t\t\t\t\t\t\t\t\t? value\n\t\t\t\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tvalue: selectorValue,\n\t\t\t\t\t\t\t\t\tlabel: hasLabel && typeof label === \"string\" ? label : undefined,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (Array.isArray(newValue)) {\n\t\t\t\t\t\t\tconsole.error(\"[Fast: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 && Array.isArray(props.label)) {\n\t\t\t\t\t\t\tconsole.error(\"[Fast: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: typeof props.label === \"string\" ? props.label : undefined,\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\twatch(\n\t\t\t[() => state.value, () => state.selectorData],\n\t\t\t([value]) => {\n\t\t\t\tconst selectorData = flattenOptions(state.selectorData);\n\t\t\t\tif (props.multiple) {\n\t\t\t\t\tif (!Array.isArray(value)) {\n\t\t\t\t\t\tselectedLabel.value = null;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tselectedLabel.value = value.map((item, index) => {\n\t\t\t\t\t\tconst data = selectorData.find((option) => {\n\t\t\t\t\t\t\tconst optionValue = getOptionValue(option);\n\t\t\t\t\t\t\treturn optionValue !== undefined && isEqual(optionValue, item);\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn (data && getOptionLabel(data)) ?? (Array.isArray(props.label) ? (props.label[index] ?? \"\") : \"\");\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (value == null || Array.isArray(value)) {\n\t\t\t\t\tselectedLabel.value = null;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst data = selectorData.find((option) => {\n\t\t\t\t\tconst optionValue = getOptionValue(option);\n\t\t\t\t\treturn optionValue !== undefined && isEqual(optionValue, value);\n\t\t\t\t});\n\t\t\t\tselectedLabel.value = (data && getOptionLabel(data)) ?? (typeof props.label === \"string\" ? props.label : null);\n\t\t\t},\n\t\t\t{\n\t\t\t\tdeep: true,\n\t\t\t\tflush: \"sync\",\n\t\t\t\timmediate: true,\n\t\t\t}\n\t\t);\n\n\t\twatch(\n\t\t\t() => props.initParam,\n\t\t\t(newValue, oldValue) => {\n\t\t\t\tif (!isEqual(newValue, oldValue)) {\n\t\t\t\t\tstate.nextRefresh = true;\n\t\t\t\t\tif (state.value != null) {\n\t\t\t\t\t\thandleModelValueUpdate(props.multiple ? [] : undefined);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\twatch(\n\t\t\t() => props.data,\n\t\t\t() => {\n\t\t\t\tif (!props.requestApi) {\n\t\t\t\t\treturn loadData();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ deep: true }\n\t\t);\n\n\t\twatch(\n\t\t\t() => props.data.length,\n\t\t\t(length) => {\n\t\t\t\tif (state.debut) state.echo = length === 0;\n\t\t\t},\n\t\t\t{ immediate: true }\n\t\t);\n\n\t\tonMounted(async () => {\n\t\t\tif (props.defaultSelected) {\n\t\t\t\tawait loadData();\n\t\t\t\tconst firstItem = state.selectorData[0];\n\t\t\t\tconst firstValue = firstItem && getOptionValue(firstItem);\n\t\t\t\tif (firstValue !== undefined) {\n\t\t\t\t\thandleModelValueUpdate(props.multiple ? [firstValue] : firstValue);\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});\n\n\t\tconst elSelectV2Props = useProps(props, SelectV2Props, [\"modelValue\", \"popperClass\", \"loading\", \"options\", \"itemHeight\"]);\n\t\tconst elSelectV2Emits = useEmits(selectV2Emits, emit, [\"update:modelValue\", \"change\", \"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-v2-dropdown__more-detail fa-select-v2-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: addCssUnit(props.width) }}\n\t\t\t\tmodelValue={state.value}\n\t\t\t\tonUpdate:modelValue={handleModelValueUpdate}\n\t\t\t\tonChange={handleChange}\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\tonVisible-change={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 }) =>\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: () => slots.header?.() ?? [] }),\n\t\t\t\t\t...(slots.footer && { footer: () => slots.footer?.() ?? [] }),\n\t\t\t\t\t...(slots.prefix && { prefix: () => slots.prefix?.() ?? [] }),\n\t\t\t\t\t...(slots.empty && { empty: () => slots.empty?.() ?? [] }),\n\t\t\t\t\t...(slots.tag && { tag: () => slots.tag?.() ?? [] }),\n\t\t\t\t\t...(slots.loading && { loading: () => 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 }) =>\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\tscrollTo: computed(() => selectV2Ref.value?.scrollTo),\n\t\t\t/** @description 加载状态 */\n\t\t\tloading: toRef(state, \"loading\"),\n\t\t\t/** @description 刷新 */\n\t\t\trefresh: loadData,\n\t\t\t/** @description 设置选择 */\n\t\t\tsetSelection: (value: Exclude<ElSelectorModelValue, null | undefined>) => handleModelValueUpdate(value),\n\t\t\t/** @description 清除选择 */\n\t\t\tclearSelection: () => handleModelValueUpdate(props.multiple ? [] : undefined),\n\t\t});\n\t},\n});\n"],"mappings":"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"}
|
|
@@ -1038,7 +1038,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
1038
1038
|
/** @description 适用于 lazy Table, 需要设置 rowKey, 更新 key children */
|
|
1039
1039
|
updateKeyChildren: import("vue").ComputedRef<((key: string, data: import("element-plus/es/components/table/src/table/defaults.mjs").DefaultRow[]) => void) | undefined>;
|
|
1040
1040
|
/** @description 加载状态 */
|
|
1041
|
-
loading: import("vue").
|
|
1041
|
+
loading: import("vue").Ref<boolean, boolean>;
|
|
1042
1042
|
/** @description 表格数据 */
|
|
1043
1043
|
tableData: import("vue").ComputedRef<DefaultRow[]>;
|
|
1044
1044
|
/** @description 分页数据 */
|
|
@@ -14,7 +14,7 @@ import tableColumnSettingDialog_default from "./tableColumnSettingDialog.mjs";
|
|
|
14
14
|
import tablePagination_default from "./tablePagination.mjs";
|
|
15
15
|
import tableSearchForm_default from "./tableSearchForm.mjs";
|
|
16
16
|
import { NotData } from "@fast-element-plus/icons-vue";
|
|
17
|
-
import { Fragment, computed, createTextVNode, createVNode, defineComponent, mergeProps, onActivated, onMounted, resolveDirective, shallowRef, watch, watchEffect, withDirectives } from "vue";
|
|
17
|
+
import { Fragment, computed, createTextVNode, createVNode, defineComponent, mergeProps, onActivated, onMounted, resolveDirective, shallowRef, toRef, watch, watchEffect, withDirectives } from "vue";
|
|
18
18
|
import { Eleme, More, Refresh, Search, Setting } from "@element-plus/icons-vue";
|
|
19
19
|
import { ElButton, ElDatePicker, ElDropdown, ElDropdownItem, ElDropdownMenu, ElIcon, ElImageViewer, ElInput, ElPagination, ElTable, ElTableColumn, useSizeProp } from "element-plus";
|
|
20
20
|
//#region src/components/table/src/table.tsx
|
|
@@ -969,7 +969,7 @@ var table_default = defineComponent({
|
|
|
969
969
|
/** @description 适用于 lazy Table, 需要设置 rowKey, 更新 key children */
|
|
970
970
|
updateKeyChildren: computed(() => tableRef.value?.updateKeyChildren),
|
|
971
971
|
/** @description 加载状态 */
|
|
972
|
-
loading:
|
|
972
|
+
loading: toRef(state, "loading"),
|
|
973
973
|
/** @description 表格数据 */
|
|
974
974
|
tableData: computed(() => state.tableData),
|
|
975
975
|
/** @description 分页数据 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.mjs","names":[],"sources":["../../../../src/components/table/src/table.tsx"],"sourcesContent":["import { Fragment, computed, defineComponent, onActivated, onMounted, shallowRef, watch, watchEffect } from \"vue\";\nimport { Eleme, More, Refresh, Search, Setting } from \"@element-plus/icons-vue\";\nimport {\n\tElButton,\n\tElDatePicker,\n\tElDropdown,\n\tElDropdownItem,\n\tElDropdownMenu,\n\tElIcon,\n\tElImageViewer,\n\tElInput,\n\tElPagination,\n\tElTable,\n\tElTableColumn,\n\tuseSizeProp,\n} from \"element-plus\";\nimport { NotData } from \"@fast-element-plus/icons-vue\";\nimport {\n\tcreateDateRangeShortcuts,\n\tcreateOneMonthRangeFromToday,\n\tdebounce,\n\tdefinePropType,\n\tmakeSlots,\n\tomit,\n\tpick,\n\trandomString,\n\tuseExpose,\n\tuseProps,\n\tuseRender,\n} from \"../../../utils\";\nimport { tableUtil } from \"../utils/table\";\nimport { getTableDefaultSlots } from \"./table.type\";\nimport FaTableColumn from \"./tableColumn\";\nimport FaTableColumnsSettingDialog from \"./tableColumnSettingDialog\";\nimport FaTablePagination from \"./tablePagination\";\nimport FaTableSearchForm from \"./tableSearchForm\";\nimport { useTable } from \"./useTable\";\nimport type { TableColumnCtx, TableProps } from \"element-plus\";\nimport type { CSSProperties, PropType } from \"vue\";\nimport type { FaLayoutGridBreakpoint } from \"../../layoutGrid\";\nimport type { PagedInput, PagedResult, PagedSortInput } from \"../src/page.type\";\nimport type { DefaultRow } from \"./table.state\";\nimport type { FaTableColumnCtx, FaTableDataRange, FaTableDefaultSlotsResult } from \"./table.type\";\n\ntype Layout = \"fixed\" | \"auto\";\n\n// type TreeProps = TableProps<DefaultRow>[\"treeProps\"];\n/** FaTable 树形数据的字段配置。 */\nexport interface TreeProps {\n\thasChildren?: string;\n\tchildren?: string;\n\tcheckStrictly?: boolean;\n}\n\n/** Element Plus Table 的透传 Props 定义。 */\nexport const tableProps = {\n\t/**\n\t * @description table data\n\t */\n\tdata: {\n\t\ttype: Array as PropType<DefaultRow[]>,\n\t\tdefault: () => [],\n\t},\n\t/**\n\t * @description size of Table\n\t */\n\tsize: useSizeProp,\n\twidth: [String, Number],\n\t/**\n\t * @description table's height. By default it has an `auto` height. If its value is a number, the height is measured in pixels; if its value is a string, the value will be assigned to element's style.height, the height is affected by external styles\n\t */\n\theight: [String, Number],\n\t/**\n\t * @description table's max-height. The legal value is a number or the height in px\n\t */\n\tmaxHeight: [String, Number],\n\t/**\n\t * @description whether width of column automatically fits its container\n\t */\n\tfit: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/**\n\t * @description whether Table is striped\n\t */\n\tstripe: Boolean,\n\t/**\n\t * @description whether Table has vertical border\n\t */\n\tborder: Boolean,\n\t/**\n\t * @description key of row data, used for optimizing rendering. Required if `reserve-selection` is on or display tree data. When its type is String, multi-level access is supported, e.g. `user.info.id`, but `user.info[0].id` is not supported, in which case `Function` should be used\n\t */\n\trowKey: [String, Function] as PropType<TableProps<DefaultRow>[\"rowKey\"]>,\n\t/**\n\t * @description whether Table header is visible\n\t */\n\tshowHeader: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/**\n\t * @description whether to display a summary row\n\t */\n\tshowSummary: Boolean,\n\t/**\n\t * @description displayed text for the first column of summary row\n\t */\n\tsumText: String,\n\t/**\n\t * @description custom summary method\n\t */\n\tsummaryMethod: Function as PropType<TableProps<DefaultRow>[\"summaryMethod\"]>,\n\t/**\n\t * @description function that returns custom class names for a row, or a string assigning class names for every row\n\t */\n\trowClassName: [String, Function] as PropType<TableProps<DefaultRow>[\"rowClassName\"]>,\n\t/**\n\t * @description function that returns custom style for a row, or an object assigning custom style for every row\n\t */\n\trowStyle: [Object, Function] as PropType<TableProps<DefaultRow>[\"rowStyle\"]>,\n\t/**\n\t * @description function that returns custom class names for a cell, or a string assigning class names for every cell\n\t */\n\tcellClassName: [String, Function] as PropType<TableProps<DefaultRow>[\"cellClassName\"]>,\n\t/**\n\t * @description function that returns custom style for a cell, or an object assigning custom style for every cell\n\t */\n\tcellStyle: [Object, Function] as PropType<TableProps<DefaultRow>[\"cellStyle\"]>,\n\t/**\n\t * @description function that returns custom class names for a row in table header, or a string assigning class names for every row in table header\n\t */\n\theaderRowClassName: [String, Function] as PropType<TableProps<DefaultRow>[\"headerRowClassName\"]>,\n\t/**\n\t * @description function that returns custom style for a row in table header, or an object assigning custom style for every row in table header\n\t */\n\theaderRowStyle: [Object, Function] as PropType<TableProps<DefaultRow>[\"headerRowStyle\"]>,\n\t/**\n\t * @description function that returns custom class names for a cell in table header, or a string assigning class names for every cell in table header\n\t */\n\theaderCellClassName: [String, Function] as PropType<TableProps<DefaultRow>[\"headerCellClassName\"]>,\n\t/**\n\t * @description function that returns custom style for a cell in table header, or an object assigning custom style for every cell in table header\n\t */\n\theaderCellStyle: [Object, Function] as PropType<TableProps<DefaultRow>[\"headerCellStyle\"]>,\n\t/**\n\t * @description whether current row is highlighted\n\t */\n\thighlightCurrentRow: Boolean,\n\t/**\n\t * @description key of current row, a set only prop\n\t */\n\tcurrentRowKey: [String, Number],\n\t/**\n\t * @description displayed text when data is empty. You can customize this area with `#empty`\n\t */\n\temptyText: String,\n\t/**\n\t * @description set expanded rows by this prop, prop's value is the keys of expand rows, you should set row-key before using this prop\n\t */\n\texpandRowKeys: Array as PropType<TableProps<DefaultRow>[\"expandRowKeys\"]>,\n\t/** @description controls whether a row can be expanded */\n\trowExpandable: Function as PropType<TableProps<DefaultRow>[\"rowExpandable\"]>,\n\t/**\n\t * @description whether expand all rows by default, works when the table has a column type=\"expand\" or contains tree structure data\n\t */\n\tdefaultExpandAll: Boolean,\n\t/**\n\t * @description set the default sort column and order. property `prop` is used to set default sort column, property `order` is used to set default sort order\n\t */\n\tdefaultSort: Object as PropType<TableProps<DefaultRow>[\"defaultSort\"]>,\n\t/**\n\t * @description the `effect` of the overflow tooltip\n\t */\n\ttooltipEffect: String,\n\t/**\n\t * @description the options for the overflow tooltip, [see the following tooltip component](tooltip.html#attributes)\n\t */\n\ttooltipOptions: Object as PropType<TableProps<DefaultRow>[\"tooltipOptions\"]>,\n\t/**\n\t * @description method that returns rowspan and colspan\n\t */\n\tspanMethod: Function as PropType<TableProps<DefaultRow>[\"spanMethod\"]>,\n\t/**\n\t * @description controls the behavior of master checkbox in multi-select tables when only some rows are selected (but not all). If true, all rows will be selected, else deselected\n\t */\n\tselectOnIndeterminate: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/**\n\t * @description horizontal indentation of tree data\n\t */\n\tindent: {\n\t\ttype: Number,\n\t\tdefault: 16,\n\t},\n\t/**\n\t * @description configuration for rendering nested data\n\t */\n\ttreeProps: {\n\t\ttype: Object as PropType<TreeProps>,\n\t\tdefault: () => ({\n\t\t\thasChildren: \"hasChildren\",\n\t\t\tchildren: \"children\",\n\t\t\tcheckStrictly: false,\n\t\t}),\n\t},\n\t/**\n\t * @description whether to lazy loading data\n\t */\n\tlazy: Boolean,\n\t/**\n\t * @description method for loading child row data, only works when `lazy` is true\n\t */\n\tload: Function as PropType<TableProps<DefaultRow>[\"load\"]>,\n\tstyle: {\n\t\ttype: Object as PropType<CSSProperties>,\n\t\tdefault: () => ({}),\n\t},\n\tclassName: {\n\t\ttype: String,\n\t\tdefault: \"\",\n\t},\n\t/**\n\t * @description sets the algorithm used to lay out table cells, rows, and columns\n\t */\n\ttableLayout: {\n\t\ttype: String as PropType<Layout>,\n\t\tdefault: \"fixed\",\n\t},\n\t/**\n\t * @description always show scrollbar\n\t */\n\tscrollbarAlwaysOn: Boolean,\n\t/**\n\t * @description ensure main axis minimum-size doesn't follow the content\n\t */\n\tflexible: Boolean,\n\t/**\n\t * @description whether to hide extra content and show them in a tooltip when hovering on the cell.It will affect all the table columns\n\t */\n\tshowOverflowTooltip: [Boolean, Object] as PropType<TableProps<DefaultRow>[\"showOverflowTooltip\"]>,\n\t/** @description formats overflow tooltip content */\n\ttooltipFormatter: Function as PropType<TableProps<DefaultRow>[\"tooltipFormatter\"]>,\n\t/** @description element to which the filter panel is appended */\n\tappendFilterPanelTo: String,\n\tscrollbarTabindex: {\n\t\ttype: [Number, String],\n\t\tdefault: undefined,\n\t},\n\t/** @description whether the last column can be resized */\n\tallowDragLastColumn: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description whether collapsed expanded-row content remains mounted */\n\tpreserveExpandedContent: Boolean,\n\t/** @description whether to use native scrollbars */\n\tnativeScrollbar: Boolean,\n};\n\n/** FaTable 的运行时 Props 定义。 */\nexport const faTableProps = {\n\t...tableProps,\n\t/** @description whether Table has vertical border */\n\tborder: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description whether current row is highlighted */\n\thighlightCurrentRow: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description key of row data, used for optimizing rendering. Required if `reserve-selection` is on or display tree data. When its type is String, multi-level access is supported, e.g. `user.info.id`, but `user.info[0].id` is not supported, in which case `Function` should be used */\n\trowKey: {\n\t\ttype: [String, Function] as PropType<NonNullable<TableProps<DefaultRow>[\"rowKey\"]>>,\n\t\tdefault: \"id\",\n\t},\n\t/** @description 组件封装,原生的已经失效 method that returns rowspan and colspan */\n\tspanMethod: {\n\t\ttype: Function as PropType<TableProps<DefaultRow>[\"spanMethod\"]>,\n\t\tvalidator: () => {\n\t\t\tconsole.warn(\"[Fast:FaTable]\", \"'spanMethod' 属性,组件已经封装,外部使用会失效。\");\n\t\t\treturn false;\n\t\t},\n\t},\n\t/** @description 表格Key */\n\ttableKey: {\n\t\ttype: String,\n\t\tdefault: () => randomString(8),\n\t},\n\t/** @description 表格数据 */\n\tdata: {\n\t\ttype: definePropType<DefaultRow[]>(Array),\n\t\tdefault: () => [],\n\t},\n\t/** @description 请求api */\n\trequestApi: {\n\t\ttype: definePropType<(params?: PagedInput) => Promise<PagedResult<DefaultRow> | DefaultRow[]>>(Function),\n\t},\n\t/** @description 接口请求数据回调 */\n\tdataCallback: {\n\t\ttype: definePropType<(data: PagedResult<DefaultRow> | DefaultRow[]) => void>(Function),\n\t},\n\t/** 初始化参数 */\n\tinitParam: definePropType<string | number | PagedInput | null>([String, Number, Object]),\n\t/** @description 列配置 */\n\tcolumns: {\n\t\ttype: definePropType<FaTableColumnCtx[] | false>([Array, Boolean]),\n\t\tdefault: () => false,\n\t},\n\t/** @description 表格列改变 */\n\tcolumnsChange: {\n\t\ttype: definePropType<(columns: FaTableColumnCtx[]) => Promise<void>>(Function),\n\t},\n\t/** @description 搜索表单 Grid布局列配置 */\n\tsearchFormCols: {\n\t\ttype: definePropType<string | number | Record<FaLayoutGridBreakpoint, number>>([String, Number, Object]),\n\t\tdefault: () => ({ xs: 2, sm: 3, md: 4, lg: 5, xl: 6 }),\n\t},\n\t/** @description 折叠搜素 */\n\tcollapsedSearch: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 高级搜素抽屉 */\n\tadvancedSearchDrawer: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\t/** @description 搜索表单 */\n\tsearchForm: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 头部卡片 */\n\theaderCard: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 刷新按钮 */\n\trefreshBtn: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 搜索按钮 */\n\tsearchBtn: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 列配置按钮 */\n\tcolumnSettingBtn: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\t/** @description 头部卡片右侧功能按钮 */\n\ttoolBtn: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 隐藏搜索时间 */\n\thideSearchTime: Boolean,\n\t/** @description 未来搜索时间 */\n\tfutureSearchTime: Boolean,\n\t/** @description 搜索时间范围 */\n\tdataSearchRange: {\n\t\ttype: definePropType<FaTableDataRange>(String),\n\t\tdefault: \"Past3D\",\n\t},\n\t/** @description 分页 */\n\tpagination: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 页码 */\n\tpageSizes: {\n\t\ttype: definePropType<number[]>(Array),\n\t\tdefault: [20, 30, 50, 100],\n\t},\n\t/** @description 隐藏图片 */\n\thideImage: Boolean,\n\t/** @description 单选 */\n\tsingle: Boolean,\n\t/** @description 行点击选择 */\n\trowClickSelection: Boolean,\n\t/** @description 将父级数据的 children 展开为表格行,并把父级字段合并到子项;Element Plus 树表无需启用 */\n\ttreeData: Boolean,\n\t/** @description 配置选项 */\n\tprops: {\n\t\ttype: definePropType<{ span?: string; children?: string }>(Object),\n\t\tdefault: () => ({\n\t\t\tspan: undefined,\n\t\t\tchildren: \"children\",\n\t\t}),\n\t},\n\t/** @description 自动刷新,当传入 data 时候,如果存在更改则自动刷新 */\n\tautoRefresh: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/**\n\t * 等价于 Table-Column 的 selectable\n\t * @description function that determines if a certain row can be selected, works when `type` is 'selection'\n\t */\n\trowSelectable: Function as PropType<TableColumnCtx<DefaultRow>[\"selectable\"]>,\n};\n\n/** FaTable 的运行时 Emits 定义。 */\nexport const faTableEmits = {\n\t/** @description 当用户手动勾选数据行的 Checkbox 时触发的事件 */\n\tselect: (selection: DefaultRow[], row: DefaultRow) => Array.isArray(selection) && typeof row === \"object\" && row !== null,\n\t/** @description 当用户手动勾选全选 Checkbox 时触发的事件 */\n\tselectAll: (selection: DefaultRow[]) => Array.isArray(selection),\n\t/** @description 当选择项发生变化时会触发该事件 */\n\tselectionChange: (newSelection: DefaultRow[]) => Array.isArray(newSelection),\n\t/** @description 当单元格 hover 进入时会触发该事件 */\n\tcellMouseEnter: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\ttypeof row === \"object\" &&\n\t\trow !== null &&\n\t\ttypeof column === \"object\" &&\n\t\tcolumn !== null &&\n\t\tcell instanceof HTMLTableCellElement &&\n\t\tevent instanceof Event,\n\t/** @description 当单元格 hover 退出时会触发该事件 */\n\tcellMouseLeave: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\ttypeof row === \"object\" &&\n\t\trow !== null &&\n\t\ttypeof column === \"object\" &&\n\t\tcolumn !== null &&\n\t\tcell instanceof HTMLTableCellElement &&\n\t\tevent instanceof Event,\n\t/** @description 当某个单元格被点击时会触发该事件 */\n\tcellClick: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\ttypeof row === \"object\" &&\n\t\trow !== null &&\n\t\ttypeof column === \"object\" &&\n\t\tcolumn !== null &&\n\t\tcell instanceof HTMLTableCellElement &&\n\t\tevent instanceof Event,\n\t/** @description 当某个单元格被双击击时会触发该事件 */\n\tcellDblclick: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\ttypeof row === \"object\" &&\n\t\trow !== null &&\n\t\ttypeof column === \"object\" &&\n\t\tcolumn !== null &&\n\t\tcell instanceof HTMLTableCellElement &&\n\t\tevent instanceof Event,\n\t/** @description 当某个单元格被鼠标右键点击时会触发该事件 */\n\tcellContextmenu: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\ttypeof row === \"object\" &&\n\t\trow !== null &&\n\t\ttypeof column === \"object\" &&\n\t\tcolumn !== null &&\n\t\tcell instanceof HTMLTableCellElement &&\n\t\tevent instanceof Event,\n\t/** @description 当某一行被点击时会触发该事件 */\n\trowClick: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, event: Event) =>\n\t\ttypeof row === \"object\" && row !== null && typeof column === \"object\" && column !== null && event instanceof Event,\n\t/** @description 当某一行被鼠标右键点击时会触发该事件 */\n\trowContextmenu: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, event: Event) =>\n\t\ttypeof row === \"object\" && row !== null && typeof column === \"object\" && column !== null && event instanceof Event,\n\t/** @description 当某一行被双击时会触发该事件 */\n\trowDblclick: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, event: Event) =>\n\t\ttypeof row === \"object\" && row !== null && typeof column === \"object\" && column !== null && event instanceof Event,\n\t/** @description 当某一列的表头被点击时会触发该事件 */\n\theaderClick: (column: TableColumnCtx<DefaultRow>, event: Event) => typeof column === \"object\" && column !== null && event instanceof Event,\n\t/** @description 当某一列的表头被鼠标右键点击时触发该事件 */\n\theaderContextmenu: (column: TableColumnCtx<DefaultRow>, event: Event) => typeof column === \"object\" && column !== null && event instanceof Event,\n\t/** @description 当表格的排序条件发生变化的时候会触发该事件 */\n\tsortChange: (data: { column: TableColumnCtx<DefaultRow>; prop: string; order: \"\" | \"ascending\" | \"descending\" }) =>\n\t\ttypeof data === \"object\" && data !== null,\n\t/** @description column 的 key, 如果需要使用 filter-change 事件,则需要此属性标识是哪个 column 的筛选条件 */\n\tfilterChange: (newFilters: Record<string, string[]>) => typeof newFilters === \"object\" && newFilters !== null,\n\t/** @description 当表格的当前行发生变化的时候会触发该事件,如果要高亮当前行,请打开表格的 highlight-current-row 属性 */\n\tcurrentChange: (currentRow: DefaultRow, oldCurrentRow: DefaultRow | null) =>\n\t\ttypeof currentRow === \"object\" &&\n\t\tcurrentRow !== null &&\n\t\t(oldCurrentRow === null || (typeof oldCurrentRow === \"object\" && oldCurrentRow !== null)),\n\t/** @description 当拖动表头改变了列的宽度的时候会触发该事件 */\n\theaderDragend: (newWidth: number, oldWidth: number, column: TableColumnCtx<DefaultRow>, event: MouseEvent) =>\n\t\ttypeof newWidth === \"number\" && typeof oldWidth === \"number\" && typeof column === \"object\" && column !== null && event instanceof MouseEvent,\n\t/** @description 当用户对某一行展开或者关闭的时候会触发该事件(展开行时,回调的第二个参数为 expandedRows;树形表格时第二参数为 expanded) */\n\texpandChange: (row: DefaultRow, expanded: boolean | DefaultRow[]) =>\n\t\ttypeof row === \"object\" && row !== null && (typeof expanded === \"boolean\" || Array.isArray(expanded)),\n\t/** @description 表格滚动时触发 */\n\tscroll: (data: { scrollLeft: number; scrollTop: number }) => typeof data === \"object\" && data !== null,\n\n\t/** @description 表格刷新事件 */\n\trefresh: (params: PagedInput) => typeof params === \"object\" && params !== null,\n\t/** @description 表格重置事件 */\n\treset: (params: PagedInput) => typeof params === \"object\" && params !== null,\n\t/** @description 分页页码改变事件 */\n\tsizeChange: (pageSize: number) => typeof pageSize === \"number\",\n\t/** @description 分页改变事件 */\n\tpaginationChange: (pageIndex: number, pageSize: number) => typeof pageIndex === \"number\" && typeof pageSize === \"number\",\n\t/** @description 自定义单元格点击事件 */\n\tcustomCellClick: (\n\t\temitName: string,\n\t\t{ row, column, $index }: { row: DefaultRow; column: FaTableColumnCtx; $index: number } & FaTableDefaultSlotsResult\n\t) =>\n\t\t(emitName == null || typeof emitName === \"string\") &&\n\t\ttypeof row === \"object\" &&\n\t\trow !== null &&\n\t\ttypeof column === \"object\" &&\n\t\tcolumn !== null &&\n\t\ttypeof $index === \"number\",\n};\n\n/** FaTable 的插槽参数。 */\nexport type FaTableSlots = Record<string, unknown> & {\n\t/** @description 默认内容插槽 */\n\tdefault: never;\n\t/** @description 插入至表格最后一行之后的内容, 如果需要对表格的内容进行无限滚动操作,可能需要用到这个 slot。 若表格有合计行,该 slot 会位于合计行之上。 */\n\tappend: never;\n\t/** @description 当数据为空时自定义的内容 */\n\tempty: never;\n\t/** @description 表格顶部插槽 */\n\ttopHeader: FaTableDefaultSlotsResult;\n\t/** @description 表格头部左侧插槽 */\n\theader: FaTableDefaultSlotsResult;\n\t/** @description 表格头部右侧功能按钮插槽 */\n\ttoolButton: FaTableDefaultSlotsResult;\n\t/** @description 表格头部右侧高级操作按钮插槽,ElDropdownMenuItem 标签 */\n\ttoolButtonAdv: FaTableDefaultSlotsResult;\n\t/** @description 表格操作列插槽 */\n\toperation: FaTableDefaultSlotsResult & {\n\t\trow: DefaultRow;\n\t\tcolumn: FaTableColumnCtx;\n\t\t$index: number;\n\t};\n\t/** @description 表格分页插槽 */\n\tpagination: {\n\t\tpageIndex: number;\n\t\tpageSize: number;\n\t\ttotalRows: number;\n\t\thandleSizeChange: (val: number) => void;\n\t\thandlePaginationChange: (val: number) => void;\n\t};\n\t/** @description 表格页脚插槽 */\n\tfooter: FaTableDefaultSlotsResult;\n\t/** @description 列配置 */\n\tcolumnSetting: never;\n} & Record<\n\t\tstring,\n\t\tFaTableDefaultSlotsResult & {\n\t\t\t/** @description slots为表格内容的时候才会返回 */\n\t\t\trow?: DefaultRow;\n\t\t\t/** @description slot为表头内容的时候返回 'TableColumnCtx<DefaultRow>' 否则返回 'FaTableColumnCtx' */\n\t\t\tcolumn?: TableColumnCtx<DefaultRow> | FaTableColumnCtx;\n\t\t\t/** @description slot为非搜索项的时候才会返回 */\n\t\t\t$index?: number;\n\t\t\t/** @description slot为搜索项的时候才会返回 */\n\t\t\tsearch?: () => Promise<void>;\n\t\t}\n\t>;\n\nexport default defineComponent({\n\tname: \"FaTable\",\n\tprops: faTableProps,\n\temits: faTableEmits,\n\tslots: makeSlots<FaTableSlots>(),\n\tsetup(props, { slots, emit, expose }) {\n\t\tconst columnSettingRef = shallowRef<InstanceType<typeof FaTableColumnsSettingDialog> | null>(null);\n\n\t\tconst {\n\t\t\tglobalSize,\n\t\t\tstate,\n\t\t\telementRef,\n\t\t\ttableRef,\n\t\t\thandleTableColumnAutoWidth,\n\t\t\tloadTableColumns,\n\t\t\thandleSizeChange,\n\t\t\thandlePaginationChange,\n\t\t\tdefaultSearchTime,\n\t\t\ttableSearch,\n\t\t\ttableReset,\n\t\t\tdoRender,\n\t\t\tdoLoading,\n\t\t\thandleCustomCellClick,\n\t\t} = useTable(props, slots, emit);\n\n\t\tconst notifyColumnsChange = debounce(() => props.columnsChange?.(state.orgColumns), 500);\n\t\tconst resizeTableColumns = debounce(handleTableColumnAutoWidth, 100);\n\n\t\tlet lastRowIndex = 0;\n\t\tconst getInitParam = (): Record<string, unknown> => {\n\t\t\treturn typeof props.initParam === \"object\" && props.initParam !== null ? props.initParam : {};\n\t\t};\n\t\tconst getRowKey = (row: DefaultRow) => {\n\t\t\tconst value: unknown = typeof props.rowKey === \"function\" ? props.rowKey(row) : tableUtil.handleRowAccordingToProp(row, props.rowKey);\n\t\t\treturn typeof value === \"string\" || typeof value === \"number\" ? value : undefined;\n\t\t};\n\n\t\tconst indexMethod = (index: number) => {\n\t\t\tif (index === 0) {\n\t\t\t\tlastRowIndex = 0;\n\t\t\t}\n\t\t\tif (state.spanColumns.length > 0) {\n\t\t\t\tconst rowspan = state.tableSpanData[\"__table-index\"]?.[index] ?? 0;\n\t\t\t\tif (rowspan === 0) {\n\t\t\t\t\treturn lastRowIndex + (state.tablePagination.pageIndex - 1) * state.tablePagination.pageSize + 1;\n\t\t\t\t} else {\n\t\t\t\t\tlastRowIndex++;\n\t\t\t\t\treturn lastRowIndex + (state.tablePagination.pageIndex - 1) * state.tablePagination.pageSize;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn index + (state.tablePagination.pageIndex - 1) * state.tablePagination.pageSize + 1;\n\t\t};\n\n\t\tconst handleSelect = (selection: DefaultRow[], row: DefaultRow) => {\n\t\t\t// 判断是否开启了单选\n\t\t\tif (props.single) {\n\t\t\t\ttableRef.value?.clearSelection();\n\t\t\t\tif (selection.length > 0) {\n\t\t\t\t\ttableRef.value?.toggleRowSelection(row);\n\t\t\t\t}\n\t\t\t}\n\t\t\temit(\"select\", selection, row);\n\t\t};\n\n\t\tconst handleSelectAll = (selection: DefaultRow[]) => {\n\t\t\tif (props.single) {\n\t\t\t\t// 判断是否已经选中数据\n\t\t\t\tif (state.selected) {\n\t\t\t\t\t// 默认选中的第一行\n\t\t\t\t\tif (state.tableData.length > 0) {\n\t\t\t\t\t\ttableRef.value?.clearSelection();\n\t\t\t\t\t\tconst firstRow = state.tableData[0];\n\t\t\t\t\t\tif (firstRow) tableRef.value?.toggleRowSelection(firstRow);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttableRef.value?.clearSelection();\n\t\t\t\t}\n\t\t\t}\n\t\t\temit(\"selectAll\", selection);\n\t\t};\n\n\t\tconst handleSelectionChange = (newSelection: DefaultRow[]) => {\n\t\t\tnewSelection.length === 0 ? (state.selected = false) : (state.selected = true);\n\t\t\t// 判断是否为单选\n\t\t\tif (props.single && newSelection.length > 0) {\n\t\t\t\t// 这里获取最后一个是因为选中改变的事件会触发多次,会带入旧的数据\n\t\t\t\tconst lastSelection = newSelection.at(-1);\n\t\t\t\tstate.selectedList = lastSelection === undefined ? [] : [lastSelection];\n\t\t\t} else {\n\t\t\t\tstate.selectedList = newSelection;\n\t\t\t}\n\t\t\t// 如果已经取消选择了,那么部分选择也应该要取消\n\t\t\tstate.indeterminateSelectedListIds = state.indeterminateSelectedListIds.filter((f) => state.selectedListIds.some((s) => s === f));\n\t\t\temit(\"selectionChange\", state.selectedList);\n\t\t};\n\n\t\tconst toggleRowIndeterminateSelection = (row: DefaultRow, selected?: boolean) => {\n\t\t\tconst rowKey = getRowKey(row);\n\t\t\tif (rowKey === undefined) return;\n\t\t\tconst curRow = state.tableData.find((item) => getRowKey(item) === rowKey);\n\t\t\tif (selected === true) {\n\t\t\t\tif (!state.indeterminateSelectedListIds.some((s) => s === rowKey)) {\n\t\t\t\t\tstate.indeterminateSelectedListIds.push(rowKey);\n\t\t\t\t}\n\t\t\t\tif (curRow) tableRef.value?.toggleRowSelection(curRow, true);\n\t\t\t} else if (selected === false) {\n\t\t\t\tconst fIndex = state.indeterminateSelectedListIds.findIndex((f) => f === rowKey);\n\t\t\t\tif (fIndex >= 0) {\n\t\t\t\t\tstate.indeterminateSelectedListIds.splice(fIndex, 1);\n\t\t\t\t}\n\t\t\t\tif (curRow) tableRef.value?.toggleRowSelection(curRow, false);\n\t\t\t} else {\n\t\t\t\tconst fIndex = state.indeterminateSelectedListIds.findIndex((f) => f === rowKey);\n\t\t\t\tif (fIndex >= 0) {\n\t\t\t\t\tstate.indeterminateSelectedListIds.splice(fIndex, 1);\n\t\t\t\t} else {\n\t\t\t\t\tstate.indeterminateSelectedListIds.push(rowKey);\n\t\t\t\t}\n\t\t\t\tif (curRow) tableRef.value?.toggleRowSelection(curRow);\n\t\t\t}\n\t\t};\n\n\t\tconst handleSortChange = ({\n\t\t\tcolumn,\n\t\t\tprop,\n\t\t}: {\n\t\t\tcolumn: TableColumnCtx<DefaultRow> & { multiOrder?: \"\" | \"ascending\" | \"descending\" };\n\t\t\tprop: string | null;\n\t\t\torder: \"\" | \"ascending\" | \"descending\" | null;\n\t\t}) => {\n\t\t\tconst normalizedProp = prop ?? column.property;\n\t\t\tif (!column.multiOrder) {\n\t\t\t\tcolumn.multiOrder = \"descending\";\n\t\t\t} else if (column.multiOrder === \"descending\") {\n\t\t\t\tcolumn.multiOrder = \"ascending\";\n\t\t\t} else {\n\t\t\t\tcolumn.multiOrder = undefined;\n\t\t\t}\n\t\t\t// 排序集合非空判断\n\t\t\tconst initSortList: unknown = getInitParam()[\"sortList\"];\n\t\t\tstate.searchParam.sortList = [\n\t\t\t\t...(Array.isArray(initSortList) ? (initSortList as PagedSortInput[]) : []),\n\t\t\t\t...(state.searchParam.sortList ?? []),\n\t\t\t].filter((item, index, list) => list.findIndex((candidate) => candidate.enField === item.enField) === index);\n\n\t\t\t// 去原来的列中查找表格的列数据\n\t\t\tconst orgColumn = state.orgColumns.find((f) => f.prop === normalizedProp);\n\t\t\tconst enField = orgColumn?.sortableField ?? orgColumn?.prop ?? column.property;\n\t\t\tconst fieldIndex = state.searchParam.sortList.findIndex((f: PagedSortInput) => f.enField === enField);\n\t\t\tif (!column.multiOrder && fieldIndex >= 0) {\n\t\t\t\t// 如果是空的,删除排序\n\t\t\t\tstate.searchParam.sortList.splice(fieldIndex, 1);\n\t\t\t} else if (fieldIndex === -1) {\n\t\t\t\tstate.searchParam.sortList.push({\n\t\t\t\t\tenField,\n\t\t\t\t\tcnField: column.label,\n\t\t\t\t\tmode: column.multiOrder,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst sortItem = state.searchParam.sortList[fieldIndex];\n\t\t\t\tif (sortItem) sortItem.mode = column.multiOrder;\n\t\t\t}\n\t\t\t// 判断最后的排序集合中是否还存在数据,如果不存在,则删除排序集合\n\t\t\tif (state.searchParam.sortList.length === 0) {\n\t\t\t\tdelete state.searchParam.sortList;\n\t\t\t}\n\t\t\temit(\"sortChange\", { column, prop: normalizedProp, order: column.multiOrder ?? \"\" });\n\t\t\ttableSearch();\n\t\t};\n\n\t\tconst handleCurrentChange = (currentRow: DefaultRow | null, oldCurrentRow: DefaultRow | null) => {\n\t\t\tif (!currentRow) {\n\t\t\t\t// 这里为空的时候,会导致 Header 中的不确定状态还是true的状态\n\t\t\t\t// tableRef.value.clearSelection();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (props.rowClickSelection) {\n\t\t\t\t// 判断是否为单选\n\t\t\t\tif (props.single && oldCurrentRow) {\n\t\t\t\t\ttableRef.value?.toggleRowSelection(oldCurrentRow);\n\t\t\t\t}\n\t\t\t\ttableRef.value?.toggleRowSelection(currentRow);\n\t\t\t}\n\t\t\temit(\"currentChange\", currentRow, oldCurrentRow);\n\t\t};\n\n\t\tconst handleCellClassName = ({\n\t\t\trow,\n\t\t\tcolumn,\n\t\t\trowIndex,\n\t\t\tcolumnIndex,\n\t\t}: {\n\t\t\trow: DefaultRow;\n\t\t\tcolumn: TableColumnCtx<DefaultRow>;\n\t\t\trowIndex: number;\n\t\t\tcolumnIndex: number;\n\t\t}) => {\n\t\t\tlet localCellClassName = \"\";\n\t\t\t// 判断是否为选择列\n\t\t\tif (column.type === \"selection\") {\n\t\t\t\t// 判断是否在部分选中的集合中\n\t\t\t\tconst rowKey = getRowKey(row);\n\t\t\t\tif (state.indeterminateSelectedListIds.some((s) => s === rowKey)) {\n\t\t\t\t\tlocalCellClassName = \"fa-table__selection-column__indeterminate\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst columnInfo = state.tableColumns.find((f) => f.prop === column.property);\n\t\t\tif (columnInfo?.dataDeleteField) {\n\t\t\t\tif (row[columnInfo.dataDeleteField] === true) {\n\t\t\t\t\tif (localCellClassName) {\n\t\t\t\t\t\tlocalCellClassName += \" fa-table__data-delete-column\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlocalCellClassName = \"fa-table__data-delete-column\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (props.cellClassName) {\n\t\t\t\tconst cellClassName =\n\t\t\t\t\ttypeof props.cellClassName === \"string\" ? props.cellClassName : props.cellClassName({ row, column, rowIndex, columnIndex });\n\t\t\t\tif (!cellClassName) {\n\t\t\t\t\treturn localCellClassName;\n\t\t\t\t}\n\t\t\t\tif (localCellClassName) {\n\t\t\t\t\treturn `${localCellClassName} ${cellClassName}`;\n\t\t\t\t} else {\n\t\t\t\t\treturn cellClassName;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn localCellClassName;\n\t\t\t}\n\t\t};\n\n\t\tconst handleHeaderCellClassName = ({\n\t\t\trow,\n\t\t\tcolumn,\n\t\t\trowIndex,\n\t\t\tcolumnIndex,\n\t\t}: {\n\t\t\trow: DefaultRow;\n\t\t\tcolumn: TableColumnCtx<DefaultRow> & { multiOrder?: \"\" | \"ascending\" | \"descending\" };\n\t\t\trowIndex: number;\n\t\t\tcolumnIndex: number;\n\t\t}) => {\n\t\t\t// TODO:不晓得这里有无问题,EL 更新了还未测试\n\t\t\tcolumn.order = column.multiOrder === \"ascending\" || column.multiOrder === \"descending\" ? column.multiOrder : null;\n\t\t\tif (props.headerCellClassName) {\n\t\t\t\tif (typeof props.headerCellClassName === \"function\") {\n\t\t\t\t\treturn props.headerCellClassName({ row, column, rowIndex, columnIndex });\n\t\t\t\t} else {\n\t\t\t\t\treturn props.headerCellClassName;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn \"\";\n\t\t};\n\n\t\tconst handleSpanMethod = ({\n\t\t\tcolumn,\n\t\t\trowIndex,\n\t\t}: {\n\t\t\trow: DefaultRow;\n\t\t\tcolumn: TableColumnCtx<DefaultRow>;\n\t\t\trowIndex: number;\n\t\t\tcolumnIndex: number;\n\t\t}) => {\n\t\t\t/** @description 原生的 span-method 会失效 */\n\t\t\tconst property = column.property as string | null | undefined;\n\t\t\tconst columnKey = column.columnKey as string | null | undefined;\n\t\t\tconst pKey = property ?? columnKey;\n\t\t\tif (pKey === undefined || pKey === null) return { rowspan: 1, colspan: 1 };\n\t\t\tif (state.spanColumns.findIndex((f) => f.prop === pKey) !== -1) {\n\t\t\t\tconst rowspan = state.tableSpanData[pKey]?.[rowIndex] ?? 0;\n\t\t\t\tif (rowspan > 0) {\n\t\t\t\t\treturn { rowspan, colspan: 1 };\n\t\t\t\t}\n\t\t\t\treturn { rowspan: 0, colspan: 0 };\n\t\t\t}\n\t\t\treturn { rowspan: 1, colspan: 1 };\n\t\t};\n\n\t\tconst handleHeaderDragend = (newWidth: number, oldWidth: number, column: TableColumnCtx<DefaultRow>, event: MouseEvent) => {\n\t\t\tstate.orgColumns.forEach((f) => {\n\t\t\t\tif (column.property === f.prop) {\n\t\t\t\t\tf.width = newWidth;\n\t\t\t\t\tf.smallWidth = newWidth;\n\t\t\t\t}\n\t\t\t});\n\t\t\temit(\"headerDragend\", newWidth, oldWidth, column, event);\n\t\t\tif (props.columnsChange) notifyColumnsChange();\n\t\t};\n\n\t\tconst handleImagePreview = (url: string) => {\n\t\t\tstate.previewList = [url];\n\t\t\tstate.imagePreview = true;\n\t\t};\n\n\t\tconst tableColumnOmitNames = [\"multiOrder\", \"columnId\", \"order\", \"sortableField\", \"disabledSortable\", \"spanProp\", \"pureSearch\", \"search\"];\n\t\tconst searchFormSlotNames = computed(() => [\n\t\t\t...new Set(state.searchColumns.flatMap((column) => (typeof column.search?.slot === \"string\" ? [column.search.slot] : []))),\n\t\t]);\n\t\tconst tableColumnSlotNames = computed(() => [\n\t\t\t...new Set(state.tableColumns.flatMap((column) => [column.slot, column.headerSlot].filter((name) => typeof name === \"string\"))),\n\t\t]);\n\t\tconst searchInputClearable = computed(() => {\n\t\t\tconst value = state.searchParam.searchValue;\n\t\t\treturn (value !== undefined && value !== \"\") || state.searchValueUpdate.length > 0;\n\t\t});\n\n\t\twatch(\n\t\t\t() => props.columns,\n\t\t\t() => {\n\t\t\t\tloadTableColumns();\n\t\t\t},\n\t\t\t{ deep: true }\n\t\t);\n\n\t\twatch(\n\t\t\t() => props.initParam,\n\t\t\t() => {\n\t\t\t\t// 如果初始化参数改变了,则需要改变对应的搜索参数\n\t\t\t\tObject.entries(getInitParam()).forEach(([key, value]) => {\n\t\t\t\t\tstate.searchParam[key] = value;\n\t\t\t\t});\n\t\t\t},\n\t\t\t{ deep: true }\n\t\t);\n\n\t\twatch(\n\t\t\t() => props.data,\n\t\t\t() => {\n\t\t\t\tif (!props.requestApi && props.autoRefresh) {\n\t\t\t\t\treturn tableSearch();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ deep: true }\n\t\t);\n\n\t\twatchEffect(() => {\n\t\t\tconst element = elementRef.value;\n\t\t\tif (element) {\n\t\t\t\tconst observer = new ResizeObserver((entries) => {\n\t\t\t\t\tfor (const entry of entries) {\n\t\t\t\t\t\tconst { width, height } = entry.contentRect;\n\t\t\t\t\t\tconst widthChanged = state.tableWidth !== width;\n\t\t\t\t\t\tstate.tableWidth = width;\n\t\t\t\t\t\tstate.tableHeight = height;\n\t\t\t\t\t\tif (widthChanged) resizeTableColumns();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tobserver.observe(element);\n\n\t\t\t\treturn () => {\n\t\t\t\t\tobserver.disconnect();\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\n\t\tonMounted(async () => {\n\t\t\tstate.initParam = getInitParam();\n\t\t\tdefaultSearchTime();\n\t\t\t// 初始化搜索表单的时候,如果有默认搜索参数,则重置默认的搜索参数\n\t\t\tObject.entries(getInitParam()).forEach(([key, value]) => {\n\t\t\t\tstate.searchParam[key] = value;\n\t\t\t});\n\t\t\tawait tableSearch();\n\t\t\tloadTableColumns();\n\t\t\tif (!props.requestApi && props.autoRefresh) await tableSearch();\n\t\t});\n\n\t\tonActivated(() => {\n\t\t\t// 解决 keep-alive 后自动列宽失效的问题\n\t\t\thandleTableColumnAutoWidth();\n\t\t});\n\n\t\tconst elTableProps = useProps(props, tableProps, [\"data\", \"spanMethod\", \"headerCellClassName\", \"cellClassName\"]);\n\n\t\tuseRender(() => (\n\t\t\t<div\n\t\t\t\tref={elementRef}\n\t\t\t\tclass={[\"fa-table\", `fa-table-${globalSize.value}`, `fa-table__${props.tableKey}`, { fa__click__disabled: state.loading }]}\n\t\t\t\tstyle={{\n\t\t\t\t\t\"--fa-table-width\": state.tableWidth ? `${state.tableWidth}px` : \"\",\n\t\t\t\t\t\"--fa-table-height\": state.tableHeight ? `${state.tableHeight}px` : \"\",\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<FaTableSearchForm\n\t\t\t\t\tvSlots={pick(slots, searchFormSlotNames.value)}\n\t\t\t\t\tshow={props.searchForm && state.searchForm}\n\t\t\t\t\tcollapsedSearch={props.collapsedSearch}\n\t\t\t\t\tadvancedSearchDrawer={props.advancedSearchDrawer}\n\t\t\t\t\tcols={props.searchFormCols}\n\t\t\t\t\tsearch={tableSearch}\n\t\t\t\t\treset={tableReset}\n\t\t\t\t/>\n\t\t\t\t{slots.topHeader && (\n\t\t\t\t\t<div class=\"el-card fa-table__header\">{slots.topHeader({ search: tableSearch, ...getTableDefaultSlots(state) })}</div>\n\t\t\t\t)}\n\t\t\t\t<div class=\"el-card fa-table__main\">\n\t\t\t\t\t{props.headerCard && (\n\t\t\t\t\t\t<div class=\"fa-table__main-header\">\n\t\t\t\t\t\t\t<div class=\"fa-table__main-header-left\">{slots.header?.({ search: tableSearch, ...getTableDefaultSlots(state) })}</div>\n\t\t\t\t\t\t\t<div class=\"fa-table__main-header-right\">\n\t\t\t\t\t\t\t\t{props.toolBtn && (\n\t\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t\t<div class=\"fa-table__main-header-right__div-search\">\n\t\t\t\t\t\t\t\t\t\t\t<ElInput\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"fa-table__main-header-right__input-search\"\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={state.loading}\n\t\t\t\t\t\t\t\t\t\t\t\tprefixIcon={Search}\n\t\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"关键字搜索\"\n\t\t\t\t\t\t\t\t\t\t\t\tvModel_trim={state.searchParam.searchValue}\n\t\t\t\t\t\t\t\t\t\t\t\tclearable={searchInputClearable.value}\n\t\t\t\t\t\t\t\t\t\t\t\tonCompositionupdate={(e: CompositionEvent) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.searchValueUpdate = e.data;\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tonCompositionend={() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.searchValueUpdate = \"\";\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={tableSearch}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"fa-table__main-header-right__div-search__hidden\">\n\t\t\t\t\t\t\t\t\t\t\t\t{state.searchParam.searchValue}\n\t\t\t\t\t\t\t\t\t\t\t\t{state.searchValueUpdate}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t{props.requestApi && !props.hideSearchTime && (\n\t\t\t\t\t\t\t\t\t\t\t<ElDatePicker\n\t\t\t\t\t\t\t\t\t\t\t\t{...{\n\t\t\t\t\t\t\t\t\t\t\t\t\t// ElDatePicker 的 JSX 类型未声明 change 事件,运行时由内部 Picker 触发。\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChange: tableSearch,\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"fa-table__main-header-right__data-search\"\n\t\t\t\t\t\t\t\t\t\t\t\tpopperClass=\"fa-table__main-header-right__data-search__popper\"\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={state.loading}\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"daterange\"\n\t\t\t\t\t\t\t\t\t\t\t\tvModel={state.searchParam.searchTimeList}\n\t\t\t\t\t\t\t\t\t\t\t\tdefaultTime={createOneMonthRangeFromToday(props.futureSearchTime)}\n\t\t\t\t\t\t\t\t\t\t\t\tshortcuts={createDateRangeShortcuts(props.futureSearchTime)}\n\t\t\t\t\t\t\t\t\t\t\t\tvalueFormat=\"YYYY-MM-DD HH:mm:ss\"\n\t\t\t\t\t\t\t\t\t\t\t\tclearable={false}\n\t\t\t\t\t\t\t\t\t\t\t\tplacement=\"bottom\"\n\t\t\t\t\t\t\t\t\t\t\t\tfallbackPlacements={[\"top\"]}\n\t\t\t\t\t\t\t\t\t\t\t\tunlinkPanels\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\t{props.refreshBtn && (\n\t\t\t\t\t\t\t\t\t\t\t<ElButton\n\t\t\t\t\t\t\t\t\t\t\t\tloading={state.loading}\n\t\t\t\t\t\t\t\t\t\t\t\tloadingIcon={Eleme}\n\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"刷新\"\n\t\t\t\t\t\t\t\t\t\t\t\tcircle\n\t\t\t\t\t\t\t\t\t\t\t\ticon={Refresh}\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={tableSearch}\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\t{props.searchBtn && state.searchColumns.length > 0 && (\n\t\t\t\t\t\t\t\t\t\t\t<ElButton\n\t\t\t\t\t\t\t\t\t\t\t\tloading={state.loading}\n\t\t\t\t\t\t\t\t\t\t\t\tloadingIcon={Eleme}\n\t\t\t\t\t\t\t\t\t\t\t\ttitle={state.searchForm ? \"隐藏搜索栏\" : \"显示搜索栏\"}\n\t\t\t\t\t\t\t\t\t\t\t\tcircle\n\t\t\t\t\t\t\t\t\t\t\t\ticon={Search}\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => (state.searchForm = !state.searchForm)}\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\t{props.columnSettingBtn && props.columns && (\n\t\t\t\t\t\t\t\t\t\t\t<ElDropdown title=\"表格列配置\" trigger=\"click\">\n\t\t\t\t\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\t\t\t\t\tdefault: () => <ElButton loading={state.loading} loadingIcon={Eleme} circle icon={Setting} />,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdropdown: () => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ElDropdownMenu>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{slots.columnSetting?.()}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ElDropdownItem title=\"表格列配置\" divided onClick={() => columnSettingRef.value?.open()}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t表格列配置\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ElDropdownItem>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ElDropdownMenu>\n\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t</ElDropdown>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{slots.toolButton?.({ search: tableSearch, ...getTableDefaultSlots(state) })}\n\t\t\t\t\t\t\t\t\t\t{slots.toolButtonAdv && (\n\t\t\t\t\t\t\t\t\t\t\t<ElDropdown title=\"高级操作\" trigger=\"click\">\n\t\t\t\t\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\t\t\t\t\tdefault: () => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ElButton loading={state.loading} loadingIcon={Eleme} circle icon={More}></ElButton>\n\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\tdropdown: () => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ElDropdownMenu>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{slots.toolButtonAdv?.({ search: tableSearch, ...getTableDefaultSlots(state) })}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ElDropdownMenu>\n\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t</ElDropdown>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<ElTable\n\t\t\t\t\t\t{...elTableProps.value}\n\t\t\t\t\t\tref={tableRef}\n\t\t\t\t\t\tvLoading={state.loading}\n\t\t\t\t\t\telement-loading-text={state.loadingText}\n\t\t\t\t\t\tdata={state.tableData}\n\t\t\t\t\t\tspanMethod={handleSpanMethod}\n\t\t\t\t\t\theaderCellClassName={handleHeaderCellClassName}\n\t\t\t\t\t\tcellClassName={handleCellClassName}\n\t\t\t\t\t\tonSelection-change={handleSelectionChange}\n\t\t\t\t\t\tonSort-change={handleSortChange}\n\t\t\t\t\t\tonSelect={handleSelect}\n\t\t\t\t\t\tonSelect-all={handleSelectAll}\n\t\t\t\t\t\tonCurrent-change={handleCurrentChange}\n\t\t\t\t\t\tonHeader-dragend={handleHeaderDragend}\n\t\t\t\t\t\tonCell-mouse-enter={(row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\t\t\t\t\t\temit(\"cellMouseEnter\", row, column, cell, event)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonCell-mouse-leave={(row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\t\t\t\t\t\temit(\"cellMouseLeave\", row, column, cell, event)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonCell-click={(row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\t\t\t\t\t\temit(\"cellClick\", row, column, cell, event)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonCell-dblclick={(row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\t\t\t\t\t\temit(\"cellDblclick\", row, column, cell, event)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonCell-contextmenu={(row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\t\t\t\t\t\temit(\"cellContextmenu\", row, column, cell, event)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonRow-click={(row: DefaultRow, column: TableColumnCtx<DefaultRow> | null, event: Event) => {\n\t\t\t\t\t\t\tif (column) emit(\"rowClick\", row, column, event);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonRow-contextmenu={(row: DefaultRow, column: TableColumnCtx<DefaultRow> | null, event: Event) => {\n\t\t\t\t\t\t\tif (column) emit(\"rowContextmenu\", row, column, event);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonRow-dblclick={(row: DefaultRow, column: TableColumnCtx<DefaultRow> | null, event: Event) => {\n\t\t\t\t\t\t\tif (column) emit(\"rowDblclick\", row, column, event);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonHeader-click={(column: TableColumnCtx<DefaultRow>, event: Event) => emit(\"headerClick\", column, event)}\n\t\t\t\t\t\tonHeader-contextmenu={(column: TableColumnCtx<DefaultRow>, event: Event) => emit(\"headerContextmenu\", column, event)}\n\t\t\t\t\t\tonFilter-change={(newFilters: Record<string, string[]>) => emit(\"filterChange\", newFilters)}\n\t\t\t\t\t\tonExpand-change={(row: DefaultRow, expanded: boolean | DefaultRow[]) => emit(\"expandChange\", row, expanded)}\n\t\t\t\t\t\tonScroll={(data: { scrollLeft: number; scrollTop: number }) => emit(\"scroll\", data)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\tappend: () => slots.append?.(),\n\t\t\t\t\t\t\tempty: () => (\n\t\t\t\t\t\t\t\t<div class=\"fa-table__empty\">\n\t\t\t\t\t\t\t\t\t{slots.empty ? (\n\t\t\t\t\t\t\t\t\t\tslots.empty()\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t\t\t<ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t<NotData />\n\t\t\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t<div>暂无数据</div>\n\t\t\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tdefault: () => (\n\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t<ElTableColumn\n\t\t\t\t\t\t\t\t\t\tclassName=\"fa-table__index-column\"\n\t\t\t\t\t\t\t\t\t\ttype=\"index\"\n\t\t\t\t\t\t\t\t\t\tfixed=\"left\"\n\t\t\t\t\t\t\t\t\t\twidth={\n\t\t\t\t\t\t\t\t\t\t\tstate.tablePagination.pageIndex * state.tablePagination.pageSize >= 100\n\t\t\t\t\t\t\t\t\t\t\t\t? state.tablePagination.pageIndex * state.tablePagination.pageSize >= 1000\n\t\t\t\t\t\t\t\t\t\t\t\t\t? 50\n\t\t\t\t\t\t\t\t\t\t\t\t\t: 40\n\t\t\t\t\t\t\t\t\t\t\t\t: 30\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\t\t\t\t\tindex={indexMethod}\n\t\t\t\t\t\t\t\t\t\tshowOverflowTooltip={false}\n\t\t\t\t\t\t\t\t\t\tresizable={false}\n\t\t\t\t\t\t\t\t\t\tcolumnKey=\"__table-index\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<ElTableColumn\n\t\t\t\t\t\t\t\t\t\tclassName=\"fa-table__selection-column\"\n\t\t\t\t\t\t\t\t\t\ttype=\"selection\"\n\t\t\t\t\t\t\t\t\t\tfixed=\"left\"\n\t\t\t\t\t\t\t\t\t\twidth={35}\n\t\t\t\t\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\t\t\t\t\treserveSelection\n\t\t\t\t\t\t\t\t\t\tshowOverflowTooltip={false}\n\t\t\t\t\t\t\t\t\t\tresizable={false}\n\t\t\t\t\t\t\t\t\t\tcolumnKey=\"__table-selection\"\n\t\t\t\t\t\t\t\t\t\tselectable={props.rowSelectable}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t{slots.operation && (\n\t\t\t\t\t\t\t\t\t\t<ElTableColumn\n\t\t\t\t\t\t\t\t\t\t\tfixed=\"right\"\n\t\t\t\t\t\t\t\t\t\t\twidth={state.operationColumnWidth}\n\t\t\t\t\t\t\t\t\t\t\theaderAlign=\"center\"\n\t\t\t\t\t\t\t\t\t\t\talign=\"left\"\n\t\t\t\t\t\t\t\t\t\t\tshowOverflowTooltip={false}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"fa-table__operation-column\"\n\t\t\t\t\t\t\t\t\t\t\tresizable={false}\n\t\t\t\t\t\t\t\t\t\t\tcolumnKey=\"__table-operation\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\t\t\t\theader: () => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"fa-table__auto-width-column__cell-header __fa-table__auto-width-column__cell-header____table-operation\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>操作</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\tdefault: ({ row, column, $index }: { row: DefaultRow; column: FaTableColumnCtx; $index: number }) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"fa-table__auto-width-column__cell __fa-table__auto-width-column__cell____table-operation\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{slots.operation?.({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$index,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsearch: tableSearch,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...getTableDefaultSlots(state),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t</ElTableColumn>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t{state.tableColumns.length === 0\n\t\t\t\t\t\t\t\t\t\t? slots.default?.()\n\t\t\t\t\t\t\t\t\t\t: state.tableColumns.map(\n\t\t\t\t\t\t\t\t\t\t\t\t(col) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\tcol.show &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t(col.type === \"expand\" ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ElTableColumn {...col} width={35} fixed={col.fixed ?? \"left\"} resizable={false}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdefault: ({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$index,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trow: DefaultRow;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn: FaTableColumnCtx;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$index: number;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{col.render?.({ row, column, $index, ...getTableDefaultSlots(state) })}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{col.slot &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tslots[col.slot]?.({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$index,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...getTableDefaultSlots(state),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ElTableColumn>\n\t\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcol.prop && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<FaTableColumn\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvSlots={pick(slots, tableColumnSlotNames.value)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{...omit(col, tableColumnOmitNames)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thideImage={props.hideImage}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tresizable={true}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonImagePreview={handleImagePreview}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonCustomCellClick={handleCustomCellClick}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t}}\n\t\t\t\t\t</ElTable>\n\t\t\t\t\t<div class=\"fa-table__main-footer\">\n\t\t\t\t\t\t<div class=\"fa-table__main-footer__left\">{slots.footer?.({ search: tableSearch, ...getTableDefaultSlots(state) })}</div>\n\t\t\t\t\t\t{slots.pagination ? (\n\t\t\t\t\t\t\tslots.pagination({\n\t\t\t\t\t\t\t\tpageIndex: state.tablePagination.pageIndex,\n\t\t\t\t\t\t\t\tpageSize: state.tablePagination.pageSize,\n\t\t\t\t\t\t\t\ttotalRows: state.tablePagination.totalRows,\n\t\t\t\t\t\t\t\thandleSizeChange,\n\t\t\t\t\t\t\t\thandlePaginationChange,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t{props.pagination ? (\n\t\t\t\t\t\t\t\t\t<FaTablePagination\n\t\t\t\t\t\t\t\t\t\tpageSizes={props.pageSizes}\n\t\t\t\t\t\t\t\t\t\tonSizeChange={handleSizeChange}\n\t\t\t\t\t\t\t\t\t\tonCurrentChange={handlePaginationChange}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<ElPagination class=\"fa-table-pagination\" size=\"small\" layout=\"total\" total={state.tableData.length} />\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t{state.imagePreview && (\n\t\t\t\t\t<ElImageViewer\n\t\t\t\t\t\tcloseOnPressEscape\n\t\t\t\t\t\thideOnClickModal\n\t\t\t\t\t\tteleported\n\t\t\t\t\t\tshowProgress\n\t\t\t\t\t\tonClose={() => (state.imagePreview = false)}\n\t\t\t\t\t\turlList={state.previewList}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t{props.columnSettingBtn && <FaTableColumnsSettingDialog ref={columnSettingRef} change={props.columnsChange} />}\n\t\t\t</div>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** @description 用于多选表格,清空用户的选择 */\n\t\t\tclearSelection: computed(() => tableRef.value?.clearSelection),\n\t\t\t/** @description 返回当前选中的行 */\n\t\t\tgetSelectionRows: computed(() => tableRef.value?.getSelectionRows),\n\t\t\t/** @description 返回当前半选中的行。 */\n\t\t\tgetHalfSelectionRows: computed(() => tableRef.value?.getHalfSelectionRows),\n\t\t\t/** @description 用于多选表格,切换某一行的选中状态, 如果使用了第二个参数,则可直接设置这一行选中与否 */\n\t\t\ttoggleRowSelection: computed(() => tableRef.value?.toggleRowSelection),\n\t\t\t/** @description 用于多选表格,切换全选和全不选 */\n\t\t\ttoggleAllSelection: computed(() => tableRef.value?.toggleAllSelection),\n\t\t\t/** @description 用于可扩展的表格或树表格,如果某行被扩展,则切换。 使用第二个参数,您可以直接设置该行应该被扩展或折叠。 */\n\t\t\ttoggleRowExpansion: computed(() => tableRef.value?.toggleRowExpansion),\n\t\t\t/** @description 用于单选表格,设定某一行为选中行, 如果调用时不加参数,则会取消目前高亮行的选中状态。 */\n\t\t\tsetCurrentRow: computed(() => tableRef.value?.setCurrentRow),\n\t\t\t/** @description 用于清空排序条件,数据会恢复成未排序的状态 */\n\t\t\tclearSort: computed(() => tableRef.value?.clearSort),\n\t\t\t/** @description 传入由columnKey 组成的数组以清除指定列的过滤条件。 如果没有参数,清除所有过滤器 */\n\t\t\tclearFilter: computed(() => tableRef.value?.clearFilter),\n\t\t\t/** @description 对 Table 进行重新布局。 当表格可见性变化时,您可能需要调用此方法以获得正确的布局 */\n\t\t\tdoLayout: computed(() => tableRef.value?.doLayout),\n\t\t\t/** @description 手动排序表格。 参数 prop 属性指定排序列,order 指定排序顺序。 */\n\t\t\tsort: computed(() => tableRef.value?.sort),\n\t\t\t/** @description 滚动到一组特定坐标 */\n\t\t\tscrollTo: computed(() => tableRef.value?.scrollTo),\n\t\t\t/** @description 设置垂直滚动位置 */\n\t\t\tsetScrollTop: computed(() => tableRef.value?.setScrollTop),\n\t\t\t/** @description 设置水平滚动位置 */\n\t\t\tsetScrollLeft: computed(() => tableRef.value?.setScrollLeft),\n\t\t\t/** @description 获取表列的 context */\n\t\t\tcolumns: computed(() => tableRef.value?.columns),\n\t\t\t/** @description 适用于 lazy Table, 需要设置 rowKey, 更新 key children */\n\t\t\tupdateKeyChildren: computed(() => tableRef.value?.updateKeyChildren),\n\t\t\t/** @description 加载状态 */\n\t\t\tloading: computed(() => state.loading),\n\t\t\t/** @description 表格数据 */\n\t\t\ttableData: computed(() => state.tableData),\n\t\t\t/** @description 分页数据 */\n\t\t\ttablePagination: computed(() => state.tablePagination),\n\t\t\t/** @description 搜索参数 */\n\t\t\tsearchParam: computed(() => state.searchParam),\n\t\t\t/** @description 选中状态 */\n\t\t\tselected: computed(() => state.selected),\n\t\t\t/** @description 选中数据列表 */\n\t\t\tselectedList: computed(() => state.selectedList),\n\t\t\t/** @description 选中数据 rowKey 列表 */\n\t\t\tselectedListIds: computed(() => state.selectedListIds),\n\t\t\t/** @description 部分选中数据 rowKey 列表 */\n\t\t\tindeterminateSelectedListIds: computed(() => state.indeterminateSelectedListIds),\n\t\t\t/** @description 表格宽度 */\n\t\t\ttableWidth: computed(() => state.tableWidth),\n\t\t\t/** @description 表格高度 */\n\t\t\ttableHeight: computed(() => state.tableHeight),\n\t\t\t/** @description 部分选中(样式不一样而已),用于多选表格,切换某一行的选中状态, 如果使用了第二个参数,则可直接设置这一行选中与否 */\n\t\t\ttoggleRowIndeterminateSelection,\n\t\t\t/** @description 异步方法,刷新表格 */\n\t\t\trefresh: tableSearch,\n\t\t\t/** @description 异步方法,重置表格 */\n\t\t\treset: tableReset,\n\t\t\t/** @description 对 Table 进行重新渲染。当 TableKey 发生变化的时候可以通过此方法重新渲染表格 */\n\t\t\tdoRender,\n\t\t\t/** @description Table 加载 */\n\t\t\tdoLoading,\n\t\t});\n\t},\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"table.mjs","names":[],"sources":["../../../../src/components/table/src/table.tsx"],"sourcesContent":["import { Fragment, computed, defineComponent, onActivated, onMounted, shallowRef, toRef, watch, watchEffect } from \"vue\";\nimport { Eleme, More, Refresh, Search, Setting } from \"@element-plus/icons-vue\";\nimport {\n\tElButton,\n\tElDatePicker,\n\tElDropdown,\n\tElDropdownItem,\n\tElDropdownMenu,\n\tElIcon,\n\tElImageViewer,\n\tElInput,\n\tElPagination,\n\tElTable,\n\tElTableColumn,\n\tuseSizeProp,\n} from \"element-plus\";\nimport { NotData } from \"@fast-element-plus/icons-vue\";\nimport {\n\tcreateDateRangeShortcuts,\n\tcreateOneMonthRangeFromToday,\n\tdebounce,\n\tdefinePropType,\n\tmakeSlots,\n\tomit,\n\tpick,\n\trandomString,\n\tuseExpose,\n\tuseProps,\n\tuseRender,\n} from \"../../../utils\";\nimport { tableUtil } from \"../utils/table\";\nimport { getTableDefaultSlots } from \"./table.type\";\nimport FaTableColumn from \"./tableColumn\";\nimport FaTableColumnsSettingDialog from \"./tableColumnSettingDialog\";\nimport FaTablePagination from \"./tablePagination\";\nimport FaTableSearchForm from \"./tableSearchForm\";\nimport { useTable } from \"./useTable\";\nimport type { TableColumnCtx, TableProps } from \"element-plus\";\nimport type { CSSProperties, PropType } from \"vue\";\nimport type { FaLayoutGridBreakpoint } from \"../../layoutGrid\";\nimport type { PagedInput, PagedResult, PagedSortInput } from \"../src/page.type\";\nimport type { DefaultRow } from \"./table.state\";\nimport type { FaTableColumnCtx, FaTableDataRange, FaTableDefaultSlotsResult } from \"./table.type\";\n\ntype Layout = \"fixed\" | \"auto\";\n\n// type TreeProps = TableProps<DefaultRow>[\"treeProps\"];\n/** FaTable 树形数据的字段配置。 */\nexport interface TreeProps {\n\thasChildren?: string;\n\tchildren?: string;\n\tcheckStrictly?: boolean;\n}\n\n/** Element Plus Table 的透传 Props 定义。 */\nexport const tableProps = {\n\t/**\n\t * @description table data\n\t */\n\tdata: {\n\t\ttype: Array as PropType<DefaultRow[]>,\n\t\tdefault: () => [],\n\t},\n\t/**\n\t * @description size of Table\n\t */\n\tsize: useSizeProp,\n\twidth: [String, Number],\n\t/**\n\t * @description table's height. By default it has an `auto` height. If its value is a number, the height is measured in pixels; if its value is a string, the value will be assigned to element's style.height, the height is affected by external styles\n\t */\n\theight: [String, Number],\n\t/**\n\t * @description table's max-height. The legal value is a number or the height in px\n\t */\n\tmaxHeight: [String, Number],\n\t/**\n\t * @description whether width of column automatically fits its container\n\t */\n\tfit: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/**\n\t * @description whether Table is striped\n\t */\n\tstripe: Boolean,\n\t/**\n\t * @description whether Table has vertical border\n\t */\n\tborder: Boolean,\n\t/**\n\t * @description key of row data, used for optimizing rendering. Required if `reserve-selection` is on or display tree data. When its type is String, multi-level access is supported, e.g. `user.info.id`, but `user.info[0].id` is not supported, in which case `Function` should be used\n\t */\n\trowKey: [String, Function] as PropType<TableProps<DefaultRow>[\"rowKey\"]>,\n\t/**\n\t * @description whether Table header is visible\n\t */\n\tshowHeader: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/**\n\t * @description whether to display a summary row\n\t */\n\tshowSummary: Boolean,\n\t/**\n\t * @description displayed text for the first column of summary row\n\t */\n\tsumText: String,\n\t/**\n\t * @description custom summary method\n\t */\n\tsummaryMethod: Function as PropType<TableProps<DefaultRow>[\"summaryMethod\"]>,\n\t/**\n\t * @description function that returns custom class names for a row, or a string assigning class names for every row\n\t */\n\trowClassName: [String, Function] as PropType<TableProps<DefaultRow>[\"rowClassName\"]>,\n\t/**\n\t * @description function that returns custom style for a row, or an object assigning custom style for every row\n\t */\n\trowStyle: [Object, Function] as PropType<TableProps<DefaultRow>[\"rowStyle\"]>,\n\t/**\n\t * @description function that returns custom class names for a cell, or a string assigning class names for every cell\n\t */\n\tcellClassName: [String, Function] as PropType<TableProps<DefaultRow>[\"cellClassName\"]>,\n\t/**\n\t * @description function that returns custom style for a cell, or an object assigning custom style for every cell\n\t */\n\tcellStyle: [Object, Function] as PropType<TableProps<DefaultRow>[\"cellStyle\"]>,\n\t/**\n\t * @description function that returns custom class names for a row in table header, or a string assigning class names for every row in table header\n\t */\n\theaderRowClassName: [String, Function] as PropType<TableProps<DefaultRow>[\"headerRowClassName\"]>,\n\t/**\n\t * @description function that returns custom style for a row in table header, or an object assigning custom style for every row in table header\n\t */\n\theaderRowStyle: [Object, Function] as PropType<TableProps<DefaultRow>[\"headerRowStyle\"]>,\n\t/**\n\t * @description function that returns custom class names for a cell in table header, or a string assigning class names for every cell in table header\n\t */\n\theaderCellClassName: [String, Function] as PropType<TableProps<DefaultRow>[\"headerCellClassName\"]>,\n\t/**\n\t * @description function that returns custom style for a cell in table header, or an object assigning custom style for every cell in table header\n\t */\n\theaderCellStyle: [Object, Function] as PropType<TableProps<DefaultRow>[\"headerCellStyle\"]>,\n\t/**\n\t * @description whether current row is highlighted\n\t */\n\thighlightCurrentRow: Boolean,\n\t/**\n\t * @description key of current row, a set only prop\n\t */\n\tcurrentRowKey: [String, Number],\n\t/**\n\t * @description displayed text when data is empty. You can customize this area with `#empty`\n\t */\n\temptyText: String,\n\t/**\n\t * @description set expanded rows by this prop, prop's value is the keys of expand rows, you should set row-key before using this prop\n\t */\n\texpandRowKeys: Array as PropType<TableProps<DefaultRow>[\"expandRowKeys\"]>,\n\t/** @description controls whether a row can be expanded */\n\trowExpandable: Function as PropType<TableProps<DefaultRow>[\"rowExpandable\"]>,\n\t/**\n\t * @description whether expand all rows by default, works when the table has a column type=\"expand\" or contains tree structure data\n\t */\n\tdefaultExpandAll: Boolean,\n\t/**\n\t * @description set the default sort column and order. property `prop` is used to set default sort column, property `order` is used to set default sort order\n\t */\n\tdefaultSort: Object as PropType<TableProps<DefaultRow>[\"defaultSort\"]>,\n\t/**\n\t * @description the `effect` of the overflow tooltip\n\t */\n\ttooltipEffect: String,\n\t/**\n\t * @description the options for the overflow tooltip, [see the following tooltip component](tooltip.html#attributes)\n\t */\n\ttooltipOptions: Object as PropType<TableProps<DefaultRow>[\"tooltipOptions\"]>,\n\t/**\n\t * @description method that returns rowspan and colspan\n\t */\n\tspanMethod: Function as PropType<TableProps<DefaultRow>[\"spanMethod\"]>,\n\t/**\n\t * @description controls the behavior of master checkbox in multi-select tables when only some rows are selected (but not all). If true, all rows will be selected, else deselected\n\t */\n\tselectOnIndeterminate: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/**\n\t * @description horizontal indentation of tree data\n\t */\n\tindent: {\n\t\ttype: Number,\n\t\tdefault: 16,\n\t},\n\t/**\n\t * @description configuration for rendering nested data\n\t */\n\ttreeProps: {\n\t\ttype: Object as PropType<TreeProps>,\n\t\tdefault: () => ({\n\t\t\thasChildren: \"hasChildren\",\n\t\t\tchildren: \"children\",\n\t\t\tcheckStrictly: false,\n\t\t}),\n\t},\n\t/**\n\t * @description whether to lazy loading data\n\t */\n\tlazy: Boolean,\n\t/**\n\t * @description method for loading child row data, only works when `lazy` is true\n\t */\n\tload: Function as PropType<TableProps<DefaultRow>[\"load\"]>,\n\tstyle: {\n\t\ttype: Object as PropType<CSSProperties>,\n\t\tdefault: () => ({}),\n\t},\n\tclassName: {\n\t\ttype: String,\n\t\tdefault: \"\",\n\t},\n\t/**\n\t * @description sets the algorithm used to lay out table cells, rows, and columns\n\t */\n\ttableLayout: {\n\t\ttype: String as PropType<Layout>,\n\t\tdefault: \"fixed\",\n\t},\n\t/**\n\t * @description always show scrollbar\n\t */\n\tscrollbarAlwaysOn: Boolean,\n\t/**\n\t * @description ensure main axis minimum-size doesn't follow the content\n\t */\n\tflexible: Boolean,\n\t/**\n\t * @description whether to hide extra content and show them in a tooltip when hovering on the cell.It will affect all the table columns\n\t */\n\tshowOverflowTooltip: [Boolean, Object] as PropType<TableProps<DefaultRow>[\"showOverflowTooltip\"]>,\n\t/** @description formats overflow tooltip content */\n\ttooltipFormatter: Function as PropType<TableProps<DefaultRow>[\"tooltipFormatter\"]>,\n\t/** @description element to which the filter panel is appended */\n\tappendFilterPanelTo: String,\n\tscrollbarTabindex: {\n\t\ttype: [Number, String],\n\t\tdefault: undefined,\n\t},\n\t/** @description whether the last column can be resized */\n\tallowDragLastColumn: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description whether collapsed expanded-row content remains mounted */\n\tpreserveExpandedContent: Boolean,\n\t/** @description whether to use native scrollbars */\n\tnativeScrollbar: Boolean,\n};\n\n/** FaTable 的运行时 Props 定义。 */\nexport const faTableProps = {\n\t...tableProps,\n\t/** @description whether Table has vertical border */\n\tborder: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description whether current row is highlighted */\n\thighlightCurrentRow: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description key of row data, used for optimizing rendering. Required if `reserve-selection` is on or display tree data. When its type is String, multi-level access is supported, e.g. `user.info.id`, but `user.info[0].id` is not supported, in which case `Function` should be used */\n\trowKey: {\n\t\ttype: [String, Function] as PropType<NonNullable<TableProps<DefaultRow>[\"rowKey\"]>>,\n\t\tdefault: \"id\",\n\t},\n\t/** @description 组件封装,原生的已经失效 method that returns rowspan and colspan */\n\tspanMethod: {\n\t\ttype: Function as PropType<TableProps<DefaultRow>[\"spanMethod\"]>,\n\t\tvalidator: () => {\n\t\t\tconsole.warn(\"[Fast:FaTable]\", \"'spanMethod' 属性,组件已经封装,外部使用会失效。\");\n\t\t\treturn false;\n\t\t},\n\t},\n\t/** @description 表格Key */\n\ttableKey: {\n\t\ttype: String,\n\t\tdefault: () => randomString(8),\n\t},\n\t/** @description 表格数据 */\n\tdata: {\n\t\ttype: definePropType<DefaultRow[]>(Array),\n\t\tdefault: () => [],\n\t},\n\t/** @description 请求api */\n\trequestApi: {\n\t\ttype: definePropType<(params?: PagedInput) => Promise<PagedResult<DefaultRow> | DefaultRow[]>>(Function),\n\t},\n\t/** @description 接口请求数据回调 */\n\tdataCallback: {\n\t\ttype: definePropType<(data: PagedResult<DefaultRow> | DefaultRow[]) => void>(Function),\n\t},\n\t/** 初始化参数 */\n\tinitParam: definePropType<string | number | PagedInput | null>([String, Number, Object]),\n\t/** @description 列配置 */\n\tcolumns: {\n\t\ttype: definePropType<FaTableColumnCtx[] | false>([Array, Boolean]),\n\t\tdefault: () => false,\n\t},\n\t/** @description 表格列改变 */\n\tcolumnsChange: {\n\t\ttype: definePropType<(columns: FaTableColumnCtx[]) => Promise<void>>(Function),\n\t},\n\t/** @description 搜索表单 Grid布局列配置 */\n\tsearchFormCols: {\n\t\ttype: definePropType<string | number | Record<FaLayoutGridBreakpoint, number>>([String, Number, Object]),\n\t\tdefault: () => ({ xs: 2, sm: 3, md: 4, lg: 5, xl: 6 }),\n\t},\n\t/** @description 折叠搜素 */\n\tcollapsedSearch: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 高级搜素抽屉 */\n\tadvancedSearchDrawer: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\t/** @description 搜索表单 */\n\tsearchForm: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 头部卡片 */\n\theaderCard: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 刷新按钮 */\n\trefreshBtn: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 搜索按钮 */\n\tsearchBtn: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 列配置按钮 */\n\tcolumnSettingBtn: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\t/** @description 头部卡片右侧功能按钮 */\n\ttoolBtn: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 隐藏搜索时间 */\n\thideSearchTime: Boolean,\n\t/** @description 未来搜索时间 */\n\tfutureSearchTime: Boolean,\n\t/** @description 搜索时间范围 */\n\tdataSearchRange: {\n\t\ttype: definePropType<FaTableDataRange>(String),\n\t\tdefault: \"Past3D\",\n\t},\n\t/** @description 分页 */\n\tpagination: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/** @description 页码 */\n\tpageSizes: {\n\t\ttype: definePropType<number[]>(Array),\n\t\tdefault: [20, 30, 50, 100],\n\t},\n\t/** @description 隐藏图片 */\n\thideImage: Boolean,\n\t/** @description 单选 */\n\tsingle: Boolean,\n\t/** @description 行点击选择 */\n\trowClickSelection: Boolean,\n\t/** @description 将父级数据的 children 展开为表格行,并把父级字段合并到子项;Element Plus 树表无需启用 */\n\ttreeData: Boolean,\n\t/** @description 配置选项 */\n\tprops: {\n\t\ttype: definePropType<{ span?: string; children?: string }>(Object),\n\t\tdefault: () => ({\n\t\t\tspan: undefined,\n\t\t\tchildren: \"children\",\n\t\t}),\n\t},\n\t/** @description 自动刷新,当传入 data 时候,如果存在更改则自动刷新 */\n\tautoRefresh: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t},\n\t/**\n\t * 等价于 Table-Column 的 selectable\n\t * @description function that determines if a certain row can be selected, works when `type` is 'selection'\n\t */\n\trowSelectable: Function as PropType<TableColumnCtx<DefaultRow>[\"selectable\"]>,\n};\n\n/** FaTable 的运行时 Emits 定义。 */\nexport const faTableEmits = {\n\t/** @description 当用户手动勾选数据行的 Checkbox 时触发的事件 */\n\tselect: (selection: DefaultRow[], row: DefaultRow) => Array.isArray(selection) && typeof row === \"object\" && row !== null,\n\t/** @description 当用户手动勾选全选 Checkbox 时触发的事件 */\n\tselectAll: (selection: DefaultRow[]) => Array.isArray(selection),\n\t/** @description 当选择项发生变化时会触发该事件 */\n\tselectionChange: (newSelection: DefaultRow[]) => Array.isArray(newSelection),\n\t/** @description 当单元格 hover 进入时会触发该事件 */\n\tcellMouseEnter: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\ttypeof row === \"object\" &&\n\t\trow !== null &&\n\t\ttypeof column === \"object\" &&\n\t\tcolumn !== null &&\n\t\tcell instanceof HTMLTableCellElement &&\n\t\tevent instanceof Event,\n\t/** @description 当单元格 hover 退出时会触发该事件 */\n\tcellMouseLeave: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\ttypeof row === \"object\" &&\n\t\trow !== null &&\n\t\ttypeof column === \"object\" &&\n\t\tcolumn !== null &&\n\t\tcell instanceof HTMLTableCellElement &&\n\t\tevent instanceof Event,\n\t/** @description 当某个单元格被点击时会触发该事件 */\n\tcellClick: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\ttypeof row === \"object\" &&\n\t\trow !== null &&\n\t\ttypeof column === \"object\" &&\n\t\tcolumn !== null &&\n\t\tcell instanceof HTMLTableCellElement &&\n\t\tevent instanceof Event,\n\t/** @description 当某个单元格被双击击时会触发该事件 */\n\tcellDblclick: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\ttypeof row === \"object\" &&\n\t\trow !== null &&\n\t\ttypeof column === \"object\" &&\n\t\tcolumn !== null &&\n\t\tcell instanceof HTMLTableCellElement &&\n\t\tevent instanceof Event,\n\t/** @description 当某个单元格被鼠标右键点击时会触发该事件 */\n\tcellContextmenu: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\ttypeof row === \"object\" &&\n\t\trow !== null &&\n\t\ttypeof column === \"object\" &&\n\t\tcolumn !== null &&\n\t\tcell instanceof HTMLTableCellElement &&\n\t\tevent instanceof Event,\n\t/** @description 当某一行被点击时会触发该事件 */\n\trowClick: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, event: Event) =>\n\t\ttypeof row === \"object\" && row !== null && typeof column === \"object\" && column !== null && event instanceof Event,\n\t/** @description 当某一行被鼠标右键点击时会触发该事件 */\n\trowContextmenu: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, event: Event) =>\n\t\ttypeof row === \"object\" && row !== null && typeof column === \"object\" && column !== null && event instanceof Event,\n\t/** @description 当某一行被双击时会触发该事件 */\n\trowDblclick: (row: DefaultRow, column: TableColumnCtx<DefaultRow>, event: Event) =>\n\t\ttypeof row === \"object\" && row !== null && typeof column === \"object\" && column !== null && event instanceof Event,\n\t/** @description 当某一列的表头被点击时会触发该事件 */\n\theaderClick: (column: TableColumnCtx<DefaultRow>, event: Event) => typeof column === \"object\" && column !== null && event instanceof Event,\n\t/** @description 当某一列的表头被鼠标右键点击时触发该事件 */\n\theaderContextmenu: (column: TableColumnCtx<DefaultRow>, event: Event) => typeof column === \"object\" && column !== null && event instanceof Event,\n\t/** @description 当表格的排序条件发生变化的时候会触发该事件 */\n\tsortChange: (data: { column: TableColumnCtx<DefaultRow>; prop: string; order: \"\" | \"ascending\" | \"descending\" }) =>\n\t\ttypeof data === \"object\" && data !== null,\n\t/** @description column 的 key, 如果需要使用 filter-change 事件,则需要此属性标识是哪个 column 的筛选条件 */\n\tfilterChange: (newFilters: Record<string, string[]>) => typeof newFilters === \"object\" && newFilters !== null,\n\t/** @description 当表格的当前行发生变化的时候会触发该事件,如果要高亮当前行,请打开表格的 highlight-current-row 属性 */\n\tcurrentChange: (currentRow: DefaultRow, oldCurrentRow: DefaultRow | null) =>\n\t\ttypeof currentRow === \"object\" &&\n\t\tcurrentRow !== null &&\n\t\t(oldCurrentRow === null || (typeof oldCurrentRow === \"object\" && oldCurrentRow !== null)),\n\t/** @description 当拖动表头改变了列的宽度的时候会触发该事件 */\n\theaderDragend: (newWidth: number, oldWidth: number, column: TableColumnCtx<DefaultRow>, event: MouseEvent) =>\n\t\ttypeof newWidth === \"number\" && typeof oldWidth === \"number\" && typeof column === \"object\" && column !== null && event instanceof MouseEvent,\n\t/** @description 当用户对某一行展开或者关闭的时候会触发该事件(展开行时,回调的第二个参数为 expandedRows;树形表格时第二参数为 expanded) */\n\texpandChange: (row: DefaultRow, expanded: boolean | DefaultRow[]) =>\n\t\ttypeof row === \"object\" && row !== null && (typeof expanded === \"boolean\" || Array.isArray(expanded)),\n\t/** @description 表格滚动时触发 */\n\tscroll: (data: { scrollLeft: number; scrollTop: number }) => typeof data === \"object\" && data !== null,\n\n\t/** @description 表格刷新事件 */\n\trefresh: (params: PagedInput) => typeof params === \"object\" && params !== null,\n\t/** @description 表格重置事件 */\n\treset: (params: PagedInput) => typeof params === \"object\" && params !== null,\n\t/** @description 分页页码改变事件 */\n\tsizeChange: (pageSize: number) => typeof pageSize === \"number\",\n\t/** @description 分页改变事件 */\n\tpaginationChange: (pageIndex: number, pageSize: number) => typeof pageIndex === \"number\" && typeof pageSize === \"number\",\n\t/** @description 自定义单元格点击事件 */\n\tcustomCellClick: (\n\t\temitName: string,\n\t\t{ row, column, $index }: { row: DefaultRow; column: FaTableColumnCtx; $index: number } & FaTableDefaultSlotsResult\n\t) =>\n\t\t(emitName == null || typeof emitName === \"string\") &&\n\t\ttypeof row === \"object\" &&\n\t\trow !== null &&\n\t\ttypeof column === \"object\" &&\n\t\tcolumn !== null &&\n\t\ttypeof $index === \"number\",\n};\n\n/** FaTable 的插槽参数。 */\nexport type FaTableSlots = Record<string, unknown> & {\n\t/** @description 默认内容插槽 */\n\tdefault: never;\n\t/** @description 插入至表格最后一行之后的内容, 如果需要对表格的内容进行无限滚动操作,可能需要用到这个 slot。 若表格有合计行,该 slot 会位于合计行之上。 */\n\tappend: never;\n\t/** @description 当数据为空时自定义的内容 */\n\tempty: never;\n\t/** @description 表格顶部插槽 */\n\ttopHeader: FaTableDefaultSlotsResult;\n\t/** @description 表格头部左侧插槽 */\n\theader: FaTableDefaultSlotsResult;\n\t/** @description 表格头部右侧功能按钮插槽 */\n\ttoolButton: FaTableDefaultSlotsResult;\n\t/** @description 表格头部右侧高级操作按钮插槽,ElDropdownMenuItem 标签 */\n\ttoolButtonAdv: FaTableDefaultSlotsResult;\n\t/** @description 表格操作列插槽 */\n\toperation: FaTableDefaultSlotsResult & {\n\t\trow: DefaultRow;\n\t\tcolumn: FaTableColumnCtx;\n\t\t$index: number;\n\t};\n\t/** @description 表格分页插槽 */\n\tpagination: {\n\t\tpageIndex: number;\n\t\tpageSize: number;\n\t\ttotalRows: number;\n\t\thandleSizeChange: (val: number) => void;\n\t\thandlePaginationChange: (val: number) => void;\n\t};\n\t/** @description 表格页脚插槽 */\n\tfooter: FaTableDefaultSlotsResult;\n\t/** @description 列配置 */\n\tcolumnSetting: never;\n} & Record<\n\t\tstring,\n\t\tFaTableDefaultSlotsResult & {\n\t\t\t/** @description slots为表格内容的时候才会返回 */\n\t\t\trow?: DefaultRow;\n\t\t\t/** @description slot为表头内容的时候返回 'TableColumnCtx<DefaultRow>' 否则返回 'FaTableColumnCtx' */\n\t\t\tcolumn?: TableColumnCtx<DefaultRow> | FaTableColumnCtx;\n\t\t\t/** @description slot为非搜索项的时候才会返回 */\n\t\t\t$index?: number;\n\t\t\t/** @description slot为搜索项的时候才会返回 */\n\t\t\tsearch?: () => Promise<void>;\n\t\t}\n\t>;\n\nexport default defineComponent({\n\tname: \"FaTable\",\n\tprops: faTableProps,\n\temits: faTableEmits,\n\tslots: makeSlots<FaTableSlots>(),\n\tsetup(props, { slots, emit, expose }) {\n\t\tconst columnSettingRef = shallowRef<InstanceType<typeof FaTableColumnsSettingDialog> | null>(null);\n\n\t\tconst {\n\t\t\tglobalSize,\n\t\t\tstate,\n\t\t\telementRef,\n\t\t\ttableRef,\n\t\t\thandleTableColumnAutoWidth,\n\t\t\tloadTableColumns,\n\t\t\thandleSizeChange,\n\t\t\thandlePaginationChange,\n\t\t\tdefaultSearchTime,\n\t\t\ttableSearch,\n\t\t\ttableReset,\n\t\t\tdoRender,\n\t\t\tdoLoading,\n\t\t\thandleCustomCellClick,\n\t\t} = useTable(props, slots, emit);\n\n\t\tconst notifyColumnsChange = debounce(() => props.columnsChange?.(state.orgColumns), 500);\n\t\tconst resizeTableColumns = debounce(handleTableColumnAutoWidth, 100);\n\n\t\tlet lastRowIndex = 0;\n\t\tconst getInitParam = (): Record<string, unknown> => {\n\t\t\treturn typeof props.initParam === \"object\" && props.initParam !== null ? props.initParam : {};\n\t\t};\n\t\tconst getRowKey = (row: DefaultRow) => {\n\t\t\tconst value: unknown = typeof props.rowKey === \"function\" ? props.rowKey(row) : tableUtil.handleRowAccordingToProp(row, props.rowKey);\n\t\t\treturn typeof value === \"string\" || typeof value === \"number\" ? value : undefined;\n\t\t};\n\n\t\tconst indexMethod = (index: number) => {\n\t\t\tif (index === 0) {\n\t\t\t\tlastRowIndex = 0;\n\t\t\t}\n\t\t\tif (state.spanColumns.length > 0) {\n\t\t\t\tconst rowspan = state.tableSpanData[\"__table-index\"]?.[index] ?? 0;\n\t\t\t\tif (rowspan === 0) {\n\t\t\t\t\treturn lastRowIndex + (state.tablePagination.pageIndex - 1) * state.tablePagination.pageSize + 1;\n\t\t\t\t} else {\n\t\t\t\t\tlastRowIndex++;\n\t\t\t\t\treturn lastRowIndex + (state.tablePagination.pageIndex - 1) * state.tablePagination.pageSize;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn index + (state.tablePagination.pageIndex - 1) * state.tablePagination.pageSize + 1;\n\t\t};\n\n\t\tconst handleSelect = (selection: DefaultRow[], row: DefaultRow) => {\n\t\t\t// 判断是否开启了单选\n\t\t\tif (props.single) {\n\t\t\t\ttableRef.value?.clearSelection();\n\t\t\t\tif (selection.length > 0) {\n\t\t\t\t\ttableRef.value?.toggleRowSelection(row);\n\t\t\t\t}\n\t\t\t}\n\t\t\temit(\"select\", selection, row);\n\t\t};\n\n\t\tconst handleSelectAll = (selection: DefaultRow[]) => {\n\t\t\tif (props.single) {\n\t\t\t\t// 判断是否已经选中数据\n\t\t\t\tif (state.selected) {\n\t\t\t\t\t// 默认选中的第一行\n\t\t\t\t\tif (state.tableData.length > 0) {\n\t\t\t\t\t\ttableRef.value?.clearSelection();\n\t\t\t\t\t\tconst firstRow = state.tableData[0];\n\t\t\t\t\t\tif (firstRow) tableRef.value?.toggleRowSelection(firstRow);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttableRef.value?.clearSelection();\n\t\t\t\t}\n\t\t\t}\n\t\t\temit(\"selectAll\", selection);\n\t\t};\n\n\t\tconst handleSelectionChange = (newSelection: DefaultRow[]) => {\n\t\t\tnewSelection.length === 0 ? (state.selected = false) : (state.selected = true);\n\t\t\t// 判断是否为单选\n\t\t\tif (props.single && newSelection.length > 0) {\n\t\t\t\t// 这里获取最后一个是因为选中改变的事件会触发多次,会带入旧的数据\n\t\t\t\tconst lastSelection = newSelection.at(-1);\n\t\t\t\tstate.selectedList = lastSelection === undefined ? [] : [lastSelection];\n\t\t\t} else {\n\t\t\t\tstate.selectedList = newSelection;\n\t\t\t}\n\t\t\t// 如果已经取消选择了,那么部分选择也应该要取消\n\t\t\tstate.indeterminateSelectedListIds = state.indeterminateSelectedListIds.filter((f) => state.selectedListIds.some((s) => s === f));\n\t\t\temit(\"selectionChange\", state.selectedList);\n\t\t};\n\n\t\tconst toggleRowIndeterminateSelection = (row: DefaultRow, selected?: boolean) => {\n\t\t\tconst rowKey = getRowKey(row);\n\t\t\tif (rowKey === undefined) return;\n\t\t\tconst curRow = state.tableData.find((item) => getRowKey(item) === rowKey);\n\t\t\tif (selected === true) {\n\t\t\t\tif (!state.indeterminateSelectedListIds.some((s) => s === rowKey)) {\n\t\t\t\t\tstate.indeterminateSelectedListIds.push(rowKey);\n\t\t\t\t}\n\t\t\t\tif (curRow) tableRef.value?.toggleRowSelection(curRow, true);\n\t\t\t} else if (selected === false) {\n\t\t\t\tconst fIndex = state.indeterminateSelectedListIds.findIndex((f) => f === rowKey);\n\t\t\t\tif (fIndex >= 0) {\n\t\t\t\t\tstate.indeterminateSelectedListIds.splice(fIndex, 1);\n\t\t\t\t}\n\t\t\t\tif (curRow) tableRef.value?.toggleRowSelection(curRow, false);\n\t\t\t} else {\n\t\t\t\tconst fIndex = state.indeterminateSelectedListIds.findIndex((f) => f === rowKey);\n\t\t\t\tif (fIndex >= 0) {\n\t\t\t\t\tstate.indeterminateSelectedListIds.splice(fIndex, 1);\n\t\t\t\t} else {\n\t\t\t\t\tstate.indeterminateSelectedListIds.push(rowKey);\n\t\t\t\t}\n\t\t\t\tif (curRow) tableRef.value?.toggleRowSelection(curRow);\n\t\t\t}\n\t\t};\n\n\t\tconst handleSortChange = ({\n\t\t\tcolumn,\n\t\t\tprop,\n\t\t}: {\n\t\t\tcolumn: TableColumnCtx<DefaultRow> & { multiOrder?: \"\" | \"ascending\" | \"descending\" };\n\t\t\tprop: string | null;\n\t\t\torder: \"\" | \"ascending\" | \"descending\" | null;\n\t\t}) => {\n\t\t\tconst normalizedProp = prop ?? column.property;\n\t\t\tif (!column.multiOrder) {\n\t\t\t\tcolumn.multiOrder = \"descending\";\n\t\t\t} else if (column.multiOrder === \"descending\") {\n\t\t\t\tcolumn.multiOrder = \"ascending\";\n\t\t\t} else {\n\t\t\t\tcolumn.multiOrder = undefined;\n\t\t\t}\n\t\t\t// 排序集合非空判断\n\t\t\tconst initSortList: unknown = getInitParam()[\"sortList\"];\n\t\t\tstate.searchParam.sortList = [\n\t\t\t\t...(Array.isArray(initSortList) ? (initSortList as PagedSortInput[]) : []),\n\t\t\t\t...(state.searchParam.sortList ?? []),\n\t\t\t].filter((item, index, list) => list.findIndex((candidate) => candidate.enField === item.enField) === index);\n\n\t\t\t// 去原来的列中查找表格的列数据\n\t\t\tconst orgColumn = state.orgColumns.find((f) => f.prop === normalizedProp);\n\t\t\tconst enField = orgColumn?.sortableField ?? orgColumn?.prop ?? column.property;\n\t\t\tconst fieldIndex = state.searchParam.sortList.findIndex((f: PagedSortInput) => f.enField === enField);\n\t\t\tif (!column.multiOrder && fieldIndex >= 0) {\n\t\t\t\t// 如果是空的,删除排序\n\t\t\t\tstate.searchParam.sortList.splice(fieldIndex, 1);\n\t\t\t} else if (fieldIndex === -1) {\n\t\t\t\tstate.searchParam.sortList.push({\n\t\t\t\t\tenField,\n\t\t\t\t\tcnField: column.label,\n\t\t\t\t\tmode: column.multiOrder,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst sortItem = state.searchParam.sortList[fieldIndex];\n\t\t\t\tif (sortItem) sortItem.mode = column.multiOrder;\n\t\t\t}\n\t\t\t// 判断最后的排序集合中是否还存在数据,如果不存在,则删除排序集合\n\t\t\tif (state.searchParam.sortList.length === 0) {\n\t\t\t\tdelete state.searchParam.sortList;\n\t\t\t}\n\t\t\temit(\"sortChange\", { column, prop: normalizedProp, order: column.multiOrder ?? \"\" });\n\t\t\ttableSearch();\n\t\t};\n\n\t\tconst handleCurrentChange = (currentRow: DefaultRow | null, oldCurrentRow: DefaultRow | null) => {\n\t\t\tif (!currentRow) {\n\t\t\t\t// 这里为空的时候,会导致 Header 中的不确定状态还是true的状态\n\t\t\t\t// tableRef.value.clearSelection();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (props.rowClickSelection) {\n\t\t\t\t// 判断是否为单选\n\t\t\t\tif (props.single && oldCurrentRow) {\n\t\t\t\t\ttableRef.value?.toggleRowSelection(oldCurrentRow);\n\t\t\t\t}\n\t\t\t\ttableRef.value?.toggleRowSelection(currentRow);\n\t\t\t}\n\t\t\temit(\"currentChange\", currentRow, oldCurrentRow);\n\t\t};\n\n\t\tconst handleCellClassName = ({\n\t\t\trow,\n\t\t\tcolumn,\n\t\t\trowIndex,\n\t\t\tcolumnIndex,\n\t\t}: {\n\t\t\trow: DefaultRow;\n\t\t\tcolumn: TableColumnCtx<DefaultRow>;\n\t\t\trowIndex: number;\n\t\t\tcolumnIndex: number;\n\t\t}) => {\n\t\t\tlet localCellClassName = \"\";\n\t\t\t// 判断是否为选择列\n\t\t\tif (column.type === \"selection\") {\n\t\t\t\t// 判断是否在部分选中的集合中\n\t\t\t\tconst rowKey = getRowKey(row);\n\t\t\t\tif (state.indeterminateSelectedListIds.some((s) => s === rowKey)) {\n\t\t\t\t\tlocalCellClassName = \"fa-table__selection-column__indeterminate\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst columnInfo = state.tableColumns.find((f) => f.prop === column.property);\n\t\t\tif (columnInfo?.dataDeleteField) {\n\t\t\t\tif (row[columnInfo.dataDeleteField] === true) {\n\t\t\t\t\tif (localCellClassName) {\n\t\t\t\t\t\tlocalCellClassName += \" fa-table__data-delete-column\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlocalCellClassName = \"fa-table__data-delete-column\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (props.cellClassName) {\n\t\t\t\tconst cellClassName =\n\t\t\t\t\ttypeof props.cellClassName === \"string\" ? props.cellClassName : props.cellClassName({ row, column, rowIndex, columnIndex });\n\t\t\t\tif (!cellClassName) {\n\t\t\t\t\treturn localCellClassName;\n\t\t\t\t}\n\t\t\t\tif (localCellClassName) {\n\t\t\t\t\treturn `${localCellClassName} ${cellClassName}`;\n\t\t\t\t} else {\n\t\t\t\t\treturn cellClassName;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn localCellClassName;\n\t\t\t}\n\t\t};\n\n\t\tconst handleHeaderCellClassName = ({\n\t\t\trow,\n\t\t\tcolumn,\n\t\t\trowIndex,\n\t\t\tcolumnIndex,\n\t\t}: {\n\t\t\trow: DefaultRow;\n\t\t\tcolumn: TableColumnCtx<DefaultRow> & { multiOrder?: \"\" | \"ascending\" | \"descending\" };\n\t\t\trowIndex: number;\n\t\t\tcolumnIndex: number;\n\t\t}) => {\n\t\t\t// TODO:不晓得这里有无问题,EL 更新了还未测试\n\t\t\tcolumn.order = column.multiOrder === \"ascending\" || column.multiOrder === \"descending\" ? column.multiOrder : null;\n\t\t\tif (props.headerCellClassName) {\n\t\t\t\tif (typeof props.headerCellClassName === \"function\") {\n\t\t\t\t\treturn props.headerCellClassName({ row, column, rowIndex, columnIndex });\n\t\t\t\t} else {\n\t\t\t\t\treturn props.headerCellClassName;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn \"\";\n\t\t};\n\n\t\tconst handleSpanMethod = ({\n\t\t\tcolumn,\n\t\t\trowIndex,\n\t\t}: {\n\t\t\trow: DefaultRow;\n\t\t\tcolumn: TableColumnCtx<DefaultRow>;\n\t\t\trowIndex: number;\n\t\t\tcolumnIndex: number;\n\t\t}) => {\n\t\t\t/** @description 原生的 span-method 会失效 */\n\t\t\tconst property = column.property as string | null | undefined;\n\t\t\tconst columnKey = column.columnKey as string | null | undefined;\n\t\t\tconst pKey = property ?? columnKey;\n\t\t\tif (pKey === undefined || pKey === null) return { rowspan: 1, colspan: 1 };\n\t\t\tif (state.spanColumns.findIndex((f) => f.prop === pKey) !== -1) {\n\t\t\t\tconst rowspan = state.tableSpanData[pKey]?.[rowIndex] ?? 0;\n\t\t\t\tif (rowspan > 0) {\n\t\t\t\t\treturn { rowspan, colspan: 1 };\n\t\t\t\t}\n\t\t\t\treturn { rowspan: 0, colspan: 0 };\n\t\t\t}\n\t\t\treturn { rowspan: 1, colspan: 1 };\n\t\t};\n\n\t\tconst handleHeaderDragend = (newWidth: number, oldWidth: number, column: TableColumnCtx<DefaultRow>, event: MouseEvent) => {\n\t\t\tstate.orgColumns.forEach((f) => {\n\t\t\t\tif (column.property === f.prop) {\n\t\t\t\t\tf.width = newWidth;\n\t\t\t\t\tf.smallWidth = newWidth;\n\t\t\t\t}\n\t\t\t});\n\t\t\temit(\"headerDragend\", newWidth, oldWidth, column, event);\n\t\t\tif (props.columnsChange) notifyColumnsChange();\n\t\t};\n\n\t\tconst handleImagePreview = (url: string) => {\n\t\t\tstate.previewList = [url];\n\t\t\tstate.imagePreview = true;\n\t\t};\n\n\t\tconst tableColumnOmitNames = [\"multiOrder\", \"columnId\", \"order\", \"sortableField\", \"disabledSortable\", \"spanProp\", \"pureSearch\", \"search\"];\n\t\tconst searchFormSlotNames = computed(() => [\n\t\t\t...new Set(state.searchColumns.flatMap((column) => (typeof column.search?.slot === \"string\" ? [column.search.slot] : []))),\n\t\t]);\n\t\tconst tableColumnSlotNames = computed(() => [\n\t\t\t...new Set(state.tableColumns.flatMap((column) => [column.slot, column.headerSlot].filter((name) => typeof name === \"string\"))),\n\t\t]);\n\t\tconst searchInputClearable = computed(() => {\n\t\t\tconst value = state.searchParam.searchValue;\n\t\t\treturn (value !== undefined && value !== \"\") || state.searchValueUpdate.length > 0;\n\t\t});\n\n\t\twatch(\n\t\t\t() => props.columns,\n\t\t\t() => {\n\t\t\t\tloadTableColumns();\n\t\t\t},\n\t\t\t{ deep: true }\n\t\t);\n\n\t\twatch(\n\t\t\t() => props.initParam,\n\t\t\t() => {\n\t\t\t\t// 如果初始化参数改变了,则需要改变对应的搜索参数\n\t\t\t\tObject.entries(getInitParam()).forEach(([key, value]) => {\n\t\t\t\t\tstate.searchParam[key] = value;\n\t\t\t\t});\n\t\t\t},\n\t\t\t{ deep: true }\n\t\t);\n\n\t\twatch(\n\t\t\t() => props.data,\n\t\t\t() => {\n\t\t\t\tif (!props.requestApi && props.autoRefresh) {\n\t\t\t\t\treturn tableSearch();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ deep: true }\n\t\t);\n\n\t\twatchEffect(() => {\n\t\t\tconst element = elementRef.value;\n\t\t\tif (element) {\n\t\t\t\tconst observer = new ResizeObserver((entries) => {\n\t\t\t\t\tfor (const entry of entries) {\n\t\t\t\t\t\tconst { width, height } = entry.contentRect;\n\t\t\t\t\t\tconst widthChanged = state.tableWidth !== width;\n\t\t\t\t\t\tstate.tableWidth = width;\n\t\t\t\t\t\tstate.tableHeight = height;\n\t\t\t\t\t\tif (widthChanged) resizeTableColumns();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tobserver.observe(element);\n\n\t\t\t\treturn () => {\n\t\t\t\t\tobserver.disconnect();\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\n\t\tonMounted(async () => {\n\t\t\tstate.initParam = getInitParam();\n\t\t\tdefaultSearchTime();\n\t\t\t// 初始化搜索表单的时候,如果有默认搜索参数,则重置默认的搜索参数\n\t\t\tObject.entries(getInitParam()).forEach(([key, value]) => {\n\t\t\t\tstate.searchParam[key] = value;\n\t\t\t});\n\t\t\tawait tableSearch();\n\t\t\tloadTableColumns();\n\t\t\tif (!props.requestApi && props.autoRefresh) await tableSearch();\n\t\t});\n\n\t\tonActivated(() => {\n\t\t\t// 解决 keep-alive 后自动列宽失效的问题\n\t\t\thandleTableColumnAutoWidth();\n\t\t});\n\n\t\tconst elTableProps = useProps(props, tableProps, [\"data\", \"spanMethod\", \"headerCellClassName\", \"cellClassName\"]);\n\n\t\tuseRender(() => (\n\t\t\t<div\n\t\t\t\tref={elementRef}\n\t\t\t\tclass={[\"fa-table\", `fa-table-${globalSize.value}`, `fa-table__${props.tableKey}`, { fa__click__disabled: state.loading }]}\n\t\t\t\tstyle={{\n\t\t\t\t\t\"--fa-table-width\": state.tableWidth ? `${state.tableWidth}px` : \"\",\n\t\t\t\t\t\"--fa-table-height\": state.tableHeight ? `${state.tableHeight}px` : \"\",\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<FaTableSearchForm\n\t\t\t\t\tvSlots={pick(slots, searchFormSlotNames.value)}\n\t\t\t\t\tshow={props.searchForm && state.searchForm}\n\t\t\t\t\tcollapsedSearch={props.collapsedSearch}\n\t\t\t\t\tadvancedSearchDrawer={props.advancedSearchDrawer}\n\t\t\t\t\tcols={props.searchFormCols}\n\t\t\t\t\tsearch={tableSearch}\n\t\t\t\t\treset={tableReset}\n\t\t\t\t/>\n\t\t\t\t{slots.topHeader && (\n\t\t\t\t\t<div class=\"el-card fa-table__header\">{slots.topHeader({ search: tableSearch, ...getTableDefaultSlots(state) })}</div>\n\t\t\t\t)}\n\t\t\t\t<div class=\"el-card fa-table__main\">\n\t\t\t\t\t{props.headerCard && (\n\t\t\t\t\t\t<div class=\"fa-table__main-header\">\n\t\t\t\t\t\t\t<div class=\"fa-table__main-header-left\">{slots.header?.({ search: tableSearch, ...getTableDefaultSlots(state) })}</div>\n\t\t\t\t\t\t\t<div class=\"fa-table__main-header-right\">\n\t\t\t\t\t\t\t\t{props.toolBtn && (\n\t\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t\t<div class=\"fa-table__main-header-right__div-search\">\n\t\t\t\t\t\t\t\t\t\t\t<ElInput\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"fa-table__main-header-right__input-search\"\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={state.loading}\n\t\t\t\t\t\t\t\t\t\t\t\tprefixIcon={Search}\n\t\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"关键字搜索\"\n\t\t\t\t\t\t\t\t\t\t\t\tvModel_trim={state.searchParam.searchValue}\n\t\t\t\t\t\t\t\t\t\t\t\tclearable={searchInputClearable.value}\n\t\t\t\t\t\t\t\t\t\t\t\tonCompositionupdate={(e: CompositionEvent) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.searchValueUpdate = e.data;\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tonCompositionend={() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tstate.searchValueUpdate = \"\";\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={tableSearch}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"fa-table__main-header-right__div-search__hidden\">\n\t\t\t\t\t\t\t\t\t\t\t\t{state.searchParam.searchValue}\n\t\t\t\t\t\t\t\t\t\t\t\t{state.searchValueUpdate}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t{props.requestApi && !props.hideSearchTime && (\n\t\t\t\t\t\t\t\t\t\t\t<ElDatePicker\n\t\t\t\t\t\t\t\t\t\t\t\t{...{\n\t\t\t\t\t\t\t\t\t\t\t\t\t// ElDatePicker 的 JSX 类型未声明 change 事件,运行时由内部 Picker 触发。\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChange: tableSearch,\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"fa-table__main-header-right__data-search\"\n\t\t\t\t\t\t\t\t\t\t\t\tpopperClass=\"fa-table__main-header-right__data-search__popper\"\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={state.loading}\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"daterange\"\n\t\t\t\t\t\t\t\t\t\t\t\tvModel={state.searchParam.searchTimeList}\n\t\t\t\t\t\t\t\t\t\t\t\tdefaultTime={createOneMonthRangeFromToday(props.futureSearchTime)}\n\t\t\t\t\t\t\t\t\t\t\t\tshortcuts={createDateRangeShortcuts(props.futureSearchTime)}\n\t\t\t\t\t\t\t\t\t\t\t\tvalueFormat=\"YYYY-MM-DD HH:mm:ss\"\n\t\t\t\t\t\t\t\t\t\t\t\tclearable={false}\n\t\t\t\t\t\t\t\t\t\t\t\tplacement=\"bottom\"\n\t\t\t\t\t\t\t\t\t\t\t\tfallbackPlacements={[\"top\"]}\n\t\t\t\t\t\t\t\t\t\t\t\tunlinkPanels\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\t{props.refreshBtn && (\n\t\t\t\t\t\t\t\t\t\t\t<ElButton\n\t\t\t\t\t\t\t\t\t\t\t\tloading={state.loading}\n\t\t\t\t\t\t\t\t\t\t\t\tloadingIcon={Eleme}\n\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"刷新\"\n\t\t\t\t\t\t\t\t\t\t\t\tcircle\n\t\t\t\t\t\t\t\t\t\t\t\ticon={Refresh}\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={tableSearch}\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\t{props.searchBtn && state.searchColumns.length > 0 && (\n\t\t\t\t\t\t\t\t\t\t\t<ElButton\n\t\t\t\t\t\t\t\t\t\t\t\tloading={state.loading}\n\t\t\t\t\t\t\t\t\t\t\t\tloadingIcon={Eleme}\n\t\t\t\t\t\t\t\t\t\t\t\ttitle={state.searchForm ? \"隐藏搜索栏\" : \"显示搜索栏\"}\n\t\t\t\t\t\t\t\t\t\t\t\tcircle\n\t\t\t\t\t\t\t\t\t\t\t\ticon={Search}\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => (state.searchForm = !state.searchForm)}\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\t{props.columnSettingBtn && props.columns && (\n\t\t\t\t\t\t\t\t\t\t\t<ElDropdown title=\"表格列配置\" trigger=\"click\">\n\t\t\t\t\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\t\t\t\t\tdefault: () => <ElButton loading={state.loading} loadingIcon={Eleme} circle icon={Setting} />,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdropdown: () => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ElDropdownMenu>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{slots.columnSetting?.()}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ElDropdownItem title=\"表格列配置\" divided onClick={() => columnSettingRef.value?.open()}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t表格列配置\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ElDropdownItem>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ElDropdownMenu>\n\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t</ElDropdown>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{slots.toolButton?.({ search: tableSearch, ...getTableDefaultSlots(state) })}\n\t\t\t\t\t\t\t\t\t\t{slots.toolButtonAdv && (\n\t\t\t\t\t\t\t\t\t\t\t<ElDropdown title=\"高级操作\" trigger=\"click\">\n\t\t\t\t\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\t\t\t\t\tdefault: () => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ElButton loading={state.loading} loadingIcon={Eleme} circle icon={More}></ElButton>\n\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\tdropdown: () => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ElDropdownMenu>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{slots.toolButtonAdv?.({ search: tableSearch, ...getTableDefaultSlots(state) })}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ElDropdownMenu>\n\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t</ElDropdown>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<ElTable\n\t\t\t\t\t\t{...elTableProps.value}\n\t\t\t\t\t\tref={tableRef}\n\t\t\t\t\t\tvLoading={state.loading}\n\t\t\t\t\t\telement-loading-text={state.loadingText}\n\t\t\t\t\t\tdata={state.tableData}\n\t\t\t\t\t\tspanMethod={handleSpanMethod}\n\t\t\t\t\t\theaderCellClassName={handleHeaderCellClassName}\n\t\t\t\t\t\tcellClassName={handleCellClassName}\n\t\t\t\t\t\tonSelection-change={handleSelectionChange}\n\t\t\t\t\t\tonSort-change={handleSortChange}\n\t\t\t\t\t\tonSelect={handleSelect}\n\t\t\t\t\t\tonSelect-all={handleSelectAll}\n\t\t\t\t\t\tonCurrent-change={handleCurrentChange}\n\t\t\t\t\t\tonHeader-dragend={handleHeaderDragend}\n\t\t\t\t\t\tonCell-mouse-enter={(row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\t\t\t\t\t\temit(\"cellMouseEnter\", row, column, cell, event)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonCell-mouse-leave={(row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\t\t\t\t\t\temit(\"cellMouseLeave\", row, column, cell, event)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonCell-click={(row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\t\t\t\t\t\temit(\"cellClick\", row, column, cell, event)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonCell-dblclick={(row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\t\t\t\t\t\temit(\"cellDblclick\", row, column, cell, event)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonCell-contextmenu={(row: DefaultRow, column: TableColumnCtx<DefaultRow>, cell: HTMLTableCellElement, event: Event) =>\n\t\t\t\t\t\t\temit(\"cellContextmenu\", row, column, cell, event)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonRow-click={(row: DefaultRow, column: TableColumnCtx<DefaultRow> | null, event: Event) => {\n\t\t\t\t\t\t\tif (column) emit(\"rowClick\", row, column, event);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonRow-contextmenu={(row: DefaultRow, column: TableColumnCtx<DefaultRow> | null, event: Event) => {\n\t\t\t\t\t\t\tif (column) emit(\"rowContextmenu\", row, column, event);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonRow-dblclick={(row: DefaultRow, column: TableColumnCtx<DefaultRow> | null, event: Event) => {\n\t\t\t\t\t\t\tif (column) emit(\"rowDblclick\", row, column, event);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonHeader-click={(column: TableColumnCtx<DefaultRow>, event: Event) => emit(\"headerClick\", column, event)}\n\t\t\t\t\t\tonHeader-contextmenu={(column: TableColumnCtx<DefaultRow>, event: Event) => emit(\"headerContextmenu\", column, event)}\n\t\t\t\t\t\tonFilter-change={(newFilters: Record<string, string[]>) => emit(\"filterChange\", newFilters)}\n\t\t\t\t\t\tonExpand-change={(row: DefaultRow, expanded: boolean | DefaultRow[]) => emit(\"expandChange\", row, expanded)}\n\t\t\t\t\t\tonScroll={(data: { scrollLeft: number; scrollTop: number }) => emit(\"scroll\", data)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\tappend: () => slots.append?.(),\n\t\t\t\t\t\t\tempty: () => (\n\t\t\t\t\t\t\t\t<div class=\"fa-table__empty\">\n\t\t\t\t\t\t\t\t\t{slots.empty ? (\n\t\t\t\t\t\t\t\t\t\tslots.empty()\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t\t\t<ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t<NotData />\n\t\t\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t<div>暂无数据</div>\n\t\t\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tdefault: () => (\n\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t<ElTableColumn\n\t\t\t\t\t\t\t\t\t\tclassName=\"fa-table__index-column\"\n\t\t\t\t\t\t\t\t\t\ttype=\"index\"\n\t\t\t\t\t\t\t\t\t\tfixed=\"left\"\n\t\t\t\t\t\t\t\t\t\twidth={\n\t\t\t\t\t\t\t\t\t\t\tstate.tablePagination.pageIndex * state.tablePagination.pageSize >= 100\n\t\t\t\t\t\t\t\t\t\t\t\t? state.tablePagination.pageIndex * state.tablePagination.pageSize >= 1000\n\t\t\t\t\t\t\t\t\t\t\t\t\t? 50\n\t\t\t\t\t\t\t\t\t\t\t\t\t: 40\n\t\t\t\t\t\t\t\t\t\t\t\t: 30\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\t\t\t\t\tindex={indexMethod}\n\t\t\t\t\t\t\t\t\t\tshowOverflowTooltip={false}\n\t\t\t\t\t\t\t\t\t\tresizable={false}\n\t\t\t\t\t\t\t\t\t\tcolumnKey=\"__table-index\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<ElTableColumn\n\t\t\t\t\t\t\t\t\t\tclassName=\"fa-table__selection-column\"\n\t\t\t\t\t\t\t\t\t\ttype=\"selection\"\n\t\t\t\t\t\t\t\t\t\tfixed=\"left\"\n\t\t\t\t\t\t\t\t\t\twidth={35}\n\t\t\t\t\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\t\t\t\t\treserveSelection\n\t\t\t\t\t\t\t\t\t\tshowOverflowTooltip={false}\n\t\t\t\t\t\t\t\t\t\tresizable={false}\n\t\t\t\t\t\t\t\t\t\tcolumnKey=\"__table-selection\"\n\t\t\t\t\t\t\t\t\t\tselectable={props.rowSelectable}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t{slots.operation && (\n\t\t\t\t\t\t\t\t\t\t<ElTableColumn\n\t\t\t\t\t\t\t\t\t\t\tfixed=\"right\"\n\t\t\t\t\t\t\t\t\t\t\twidth={state.operationColumnWidth}\n\t\t\t\t\t\t\t\t\t\t\theaderAlign=\"center\"\n\t\t\t\t\t\t\t\t\t\t\talign=\"left\"\n\t\t\t\t\t\t\t\t\t\t\tshowOverflowTooltip={false}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"fa-table__operation-column\"\n\t\t\t\t\t\t\t\t\t\t\tresizable={false}\n\t\t\t\t\t\t\t\t\t\t\tcolumnKey=\"__table-operation\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\t\t\t\theader: () => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"fa-table__auto-width-column__cell-header __fa-table__auto-width-column__cell-header____table-operation\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>操作</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\tdefault: ({ row, column, $index }: { row: DefaultRow; column: FaTableColumnCtx; $index: number }) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"fa-table__auto-width-column__cell __fa-table__auto-width-column__cell____table-operation\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{slots.operation?.({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$index,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsearch: tableSearch,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...getTableDefaultSlots(state),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t</ElTableColumn>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t{state.tableColumns.length === 0\n\t\t\t\t\t\t\t\t\t\t? slots.default?.()\n\t\t\t\t\t\t\t\t\t\t: state.tableColumns.map(\n\t\t\t\t\t\t\t\t\t\t\t\t(col) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\tcol.show &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t(col.type === \"expand\" ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ElTableColumn {...col} width={35} fixed={col.fixed ?? \"left\"} resizable={false}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdefault: ({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$index,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trow: DefaultRow;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn: FaTableColumnCtx;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$index: number;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{col.render?.({ row, column, $index, ...getTableDefaultSlots(state) })}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{col.slot &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tslots[col.slot]?.({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$index,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...getTableDefaultSlots(state),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</ElTableColumn>\n\t\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcol.prop && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<FaTableColumn\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvSlots={pick(slots, tableColumnSlotNames.value)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{...omit(col, tableColumnOmitNames)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thideImage={props.hideImage}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tresizable={true}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonImagePreview={handleImagePreview}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonCustomCellClick={handleCustomCellClick}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t}}\n\t\t\t\t\t</ElTable>\n\t\t\t\t\t<div class=\"fa-table__main-footer\">\n\t\t\t\t\t\t<div class=\"fa-table__main-footer__left\">{slots.footer?.({ search: tableSearch, ...getTableDefaultSlots(state) })}</div>\n\t\t\t\t\t\t{slots.pagination ? (\n\t\t\t\t\t\t\tslots.pagination({\n\t\t\t\t\t\t\t\tpageIndex: state.tablePagination.pageIndex,\n\t\t\t\t\t\t\t\tpageSize: state.tablePagination.pageSize,\n\t\t\t\t\t\t\t\ttotalRows: state.tablePagination.totalRows,\n\t\t\t\t\t\t\t\thandleSizeChange,\n\t\t\t\t\t\t\t\thandlePaginationChange,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t{props.pagination ? (\n\t\t\t\t\t\t\t\t\t<FaTablePagination\n\t\t\t\t\t\t\t\t\t\tpageSizes={props.pageSizes}\n\t\t\t\t\t\t\t\t\t\tonSizeChange={handleSizeChange}\n\t\t\t\t\t\t\t\t\t\tonCurrentChange={handlePaginationChange}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<ElPagination class=\"fa-table-pagination\" size=\"small\" layout=\"total\" total={state.tableData.length} />\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t{state.imagePreview && (\n\t\t\t\t\t<ElImageViewer\n\t\t\t\t\t\tcloseOnPressEscape\n\t\t\t\t\t\thideOnClickModal\n\t\t\t\t\t\tteleported\n\t\t\t\t\t\tshowProgress\n\t\t\t\t\t\tonClose={() => (state.imagePreview = false)}\n\t\t\t\t\t\turlList={state.previewList}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t{props.columnSettingBtn && <FaTableColumnsSettingDialog ref={columnSettingRef} change={props.columnsChange} />}\n\t\t\t</div>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** @description 用于多选表格,清空用户的选择 */\n\t\t\tclearSelection: computed(() => tableRef.value?.clearSelection),\n\t\t\t/** @description 返回当前选中的行 */\n\t\t\tgetSelectionRows: computed(() => tableRef.value?.getSelectionRows),\n\t\t\t/** @description 返回当前半选中的行。 */\n\t\t\tgetHalfSelectionRows: computed(() => tableRef.value?.getHalfSelectionRows),\n\t\t\t/** @description 用于多选表格,切换某一行的选中状态, 如果使用了第二个参数,则可直接设置这一行选中与否 */\n\t\t\ttoggleRowSelection: computed(() => tableRef.value?.toggleRowSelection),\n\t\t\t/** @description 用于多选表格,切换全选和全不选 */\n\t\t\ttoggleAllSelection: computed(() => tableRef.value?.toggleAllSelection),\n\t\t\t/** @description 用于可扩展的表格或树表格,如果某行被扩展,则切换。 使用第二个参数,您可以直接设置该行应该被扩展或折叠。 */\n\t\t\ttoggleRowExpansion: computed(() => tableRef.value?.toggleRowExpansion),\n\t\t\t/** @description 用于单选表格,设定某一行为选中行, 如果调用时不加参数,则会取消目前高亮行的选中状态。 */\n\t\t\tsetCurrentRow: computed(() => tableRef.value?.setCurrentRow),\n\t\t\t/** @description 用于清空排序条件,数据会恢复成未排序的状态 */\n\t\t\tclearSort: computed(() => tableRef.value?.clearSort),\n\t\t\t/** @description 传入由columnKey 组成的数组以清除指定列的过滤条件。 如果没有参数,清除所有过滤器 */\n\t\t\tclearFilter: computed(() => tableRef.value?.clearFilter),\n\t\t\t/** @description 对 Table 进行重新布局。 当表格可见性变化时,您可能需要调用此方法以获得正确的布局 */\n\t\t\tdoLayout: computed(() => tableRef.value?.doLayout),\n\t\t\t/** @description 手动排序表格。 参数 prop 属性指定排序列,order 指定排序顺序。 */\n\t\t\tsort: computed(() => tableRef.value?.sort),\n\t\t\t/** @description 滚动到一组特定坐标 */\n\t\t\tscrollTo: computed(() => tableRef.value?.scrollTo),\n\t\t\t/** @description 设置垂直滚动位置 */\n\t\t\tsetScrollTop: computed(() => tableRef.value?.setScrollTop),\n\t\t\t/** @description 设置水平滚动位置 */\n\t\t\tsetScrollLeft: computed(() => tableRef.value?.setScrollLeft),\n\t\t\t/** @description 获取表列的 context */\n\t\t\tcolumns: computed(() => tableRef.value?.columns),\n\t\t\t/** @description 适用于 lazy Table, 需要设置 rowKey, 更新 key children */\n\t\t\tupdateKeyChildren: computed(() => tableRef.value?.updateKeyChildren),\n\t\t\t/** @description 加载状态 */\n\t\t\tloading: toRef(state, \"loading\"),\n\t\t\t/** @description 表格数据 */\n\t\t\ttableData: computed(() => state.tableData),\n\t\t\t/** @description 分页数据 */\n\t\t\ttablePagination: computed(() => state.tablePagination),\n\t\t\t/** @description 搜索参数 */\n\t\t\tsearchParam: computed(() => state.searchParam),\n\t\t\t/** @description 选中状态 */\n\t\t\tselected: computed(() => state.selected),\n\t\t\t/** @description 选中数据列表 */\n\t\t\tselectedList: computed(() => state.selectedList),\n\t\t\t/** @description 选中数据 rowKey 列表 */\n\t\t\tselectedListIds: computed(() => state.selectedListIds),\n\t\t\t/** @description 部分选中数据 rowKey 列表 */\n\t\t\tindeterminateSelectedListIds: computed(() => state.indeterminateSelectedListIds),\n\t\t\t/** @description 表格宽度 */\n\t\t\ttableWidth: computed(() => state.tableWidth),\n\t\t\t/** @description 表格高度 */\n\t\t\ttableHeight: computed(() => state.tableHeight),\n\t\t\t/** @description 部分选中(样式不一样而已),用于多选表格,切换某一行的选中状态, 如果使用了第二个参数,则可直接设置这一行选中与否 */\n\t\t\ttoggleRowIndeterminateSelection,\n\t\t\t/** @description 异步方法,刷新表格 */\n\t\t\trefresh: tableSearch,\n\t\t\t/** @description 异步方法,重置表格 */\n\t\t\treset: tableReset,\n\t\t\t/** @description 对 Table 进行重新渲染。当 TableKey 发生变化的时候可以通过此方法重新渲染表格 */\n\t\t\tdoRender,\n\t\t\t/** @description Table 加载 */\n\t\t\tdoLoading,\n\t\t});\n\t},\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAuDA,MAAa,aAAa;;;;CAIzB,MAAM;EACL,MAAM;EACN,eAAe,CAAA;CAChB;;;;CAIA,MAAM;CACN,OAAO,CAAC,QAAQ,MAAM;;;;CAItB,QAAQ,CAAC,QAAQ,MAAM;;;;CAIvB,WAAW,CAAC,QAAQ,MAAM;;;;CAI1B,KAAK;EACJ,MAAM;EACN,SAAS;CACV;;;;CAIA,QAAQ;;;;CAIR,QAAQ;;;;CAIR,QAAQ,CAAC,QAAQ,QAAQ;;;;CAIzB,YAAY;EACX,MAAM;EACN,SAAS;CACV;;;;CAIA,aAAa;;;;CAIb,SAAS;;;;CAIT,eAAe;;;;CAIf,cAAc,CAAC,QAAQ,QAAQ;;;;CAI/B,UAAU,CAAC,QAAQ,QAAQ;;;;CAI3B,eAAe,CAAC,QAAQ,QAAQ;;;;CAIhC,WAAW,CAAC,QAAQ,QAAQ;;;;CAI5B,oBAAoB,CAAC,QAAQ,QAAQ;;;;CAIrC,gBAAgB,CAAC,QAAQ,QAAQ;;;;CAIjC,qBAAqB,CAAC,QAAQ,QAAQ;;;;CAItC,iBAAiB,CAAC,QAAQ,QAAQ;;;;CAIlC,qBAAqB;;;;CAIrB,eAAe,CAAC,QAAQ,MAAM;;;;CAI9B,WAAW;;;;CAIX,eAAe;;CAEf,eAAe;;;;CAIf,kBAAkB;;;;CAIlB,aAAa;;;;CAIb,eAAe;;;;CAIf,gBAAgB;;;;CAIhB,YAAY;;;;CAIZ,uBAAuB;EACtB,MAAM;EACN,SAAS;CACV;;;;CAIA,QAAQ;EACP,MAAM;EACN,SAAS;CACV;;;;CAIA,WAAW;EACV,MAAM;EACN,gBAAgB;GACf,aAAa;GACb,UAAU;GACV,eAAe;EAChB;CACD;;;;CAIA,MAAM;;;;CAIN,MAAM;CACN,OAAO;EACN,MAAM;EACN,gBAAgB,CAAC;CAClB;CACA,WAAW;EACV,MAAM;EACN,SAAS;CACV;;;;CAIA,aAAa;EACZ,MAAM;EACN,SAAS;CACV;;;;CAIA,mBAAmB;;;;CAInB,UAAU;;;;CAIV,qBAAqB,CAAC,SAAS,MAAM;;CAErC,kBAAkB;;CAElB,qBAAqB;CACrB,mBAAmB;EAClB,MAAM,CAAC,QAAQ,MAAM;EACrB,SAAS,KAAA;CACV;;CAEA,qBAAqB;EACpB,MAAM;EACN,SAAS;CACV;;CAEA,yBAAyB;;CAEzB,iBAAiB;AAClB;;AAGA,MAAa,eAAe;CAC3B,GAAG;;CAEH,QAAQ;EACP,MAAM;EACN,SAAS;CACV;;CAEA,qBAAqB;EACpB,MAAM;EACN,SAAS;CACV;;CAEA,QAAQ;EACP,MAAM,CAAC,QAAQ,QAAQ;EACvB,SAAS;CACV;;CAEA,YAAY;EACX,MAAM;EACN,iBAAiB;GAChB,QAAQ,KAAK,kBAAkB,iCAAiC;GAChE,OAAO;EACR;CACD;;CAEA,UAAU;EACT,MAAM;EACN,eAAe,aAAa,CAAC;CAC9B;;CAEA,MAAM;EACL,MAAM,eAA6B,KAAK;EACxC,eAAe,CAAA;CAChB;;CAEA,YAAY,EACX,MAAM,eAAyF,QAAQ,EACxG;;CAEA,cAAc,EACb,MAAM,eAAuE,QAAQ,EACtF;;CAEA,WAAW,eAAoD;EAAC;EAAQ;EAAQ;CAAM,CAAC;;CAEvF,SAAS;EACR,MAAM,eAA2C,CAAC,OAAO,OAAO,CAAC;EACjE,eAAe;CAChB;;CAEA,eAAe,EACd,MAAM,eAA+D,QAAQ,EAC9E;;CAEA,gBAAgB;EACf,MAAM,eAAyE;GAAC;GAAQ;GAAQ;EAAM,CAAC;EACvG,gBAAgB;GAAE,IAAI;GAAG,IAAI;GAAG,IAAI;GAAG,IAAI;GAAG,IAAI;EAAE;CACrD;;CAEA,iBAAiB;EAChB,MAAM;EACN,SAAS;CACV;;CAEA,sBAAsB;EACrB,MAAM;EACN,SAAS;CACV;;CAEA,YAAY;EACX,MAAM;EACN,SAAS;CACV;;CAEA,YAAY;EACX,MAAM;EACN,SAAS;CACV;;CAEA,YAAY;EACX,MAAM;EACN,SAAS;CACV;;CAEA,WAAW;EACV,MAAM;EACN,SAAS;CACV;;CAEA,kBAAkB;EACjB,MAAM;EACN,SAAS;CACV;;CAEA,SAAS;EACR,MAAM;EACN,SAAS;CACV;;CAEA,gBAAgB;;CAEhB,kBAAkB;;CAElB,iBAAiB;EAChB,MAAM,eAAiC,MAAM;EAC7C,SAAS;CACV;;CAEA,YAAY;EACX,MAAM;EACN,SAAS;CACV;;CAEA,WAAW;EACV,MAAM,eAAyB,KAAK;EACpC,SAAS;GAAC;GAAI;GAAI;GAAI;EAAG;CAC1B;;CAEA,WAAW;;CAEX,QAAQ;;CAER,mBAAmB;;CAEnB,UAAU;;CAEV,OAAO;EACN,MAAM,eAAqD,MAAM;EACjE,gBAAgB;GACf,MAAM,KAAA;GACN,UAAU;EACX;CACD;;CAEA,aAAa;EACZ,MAAM;EACN,SAAS;CACV;;;;;CAKA,eAAe;AAChB;;AAGA,MAAa,eAAe;;CAE3B,SAAS,WAAyB,QAAoB,MAAM,QAAQ,SAAS,KAAK,OAAO,QAAQ,YAAY,QAAQ;;CAErH,YAAY,cAA4B,MAAM,QAAQ,SAAS;;CAE/D,kBAAkB,iBAA+B,MAAM,QAAQ,YAAY;;CAE3E,iBAAiB,KAAiB,QAAoC,MAA4B,UACjG,OAAO,QAAQ,YACf,QAAQ,QACR,OAAO,WAAW,YAClB,WAAW,QACX,gBAAgB,wBAChB,iBAAiB;;CAElB,iBAAiB,KAAiB,QAAoC,MAA4B,UACjG,OAAO,QAAQ,YACf,QAAQ,QACR,OAAO,WAAW,YAClB,WAAW,QACX,gBAAgB,wBAChB,iBAAiB;;CAElB,YAAY,KAAiB,QAAoC,MAA4B,UAC5F,OAAO,QAAQ,YACf,QAAQ,QACR,OAAO,WAAW,YAClB,WAAW,QACX,gBAAgB,wBAChB,iBAAiB;;CAElB,eAAe,KAAiB,QAAoC,MAA4B,UAC/F,OAAO,QAAQ,YACf,QAAQ,QACR,OAAO,WAAW,YAClB,WAAW,QACX,gBAAgB,wBAChB,iBAAiB;;CAElB,kBAAkB,KAAiB,QAAoC,MAA4B,UAClG,OAAO,QAAQ,YACf,QAAQ,QACR,OAAO,WAAW,YAClB,WAAW,QACX,gBAAgB,wBAChB,iBAAiB;;CAElB,WAAW,KAAiB,QAAoC,UAC/D,OAAO,QAAQ,YAAY,QAAQ,QAAQ,OAAO,WAAW,YAAY,WAAW,QAAQ,iBAAiB;;CAE9G,iBAAiB,KAAiB,QAAoC,UACrE,OAAO,QAAQ,YAAY,QAAQ,QAAQ,OAAO,WAAW,YAAY,WAAW,QAAQ,iBAAiB;;CAE9G,cAAc,KAAiB,QAAoC,UAClE,OAAO,QAAQ,YAAY,QAAQ,QAAQ,OAAO,WAAW,YAAY,WAAW,QAAQ,iBAAiB;;CAE9G,cAAc,QAAoC,UAAiB,OAAO,WAAW,YAAY,WAAW,QAAQ,iBAAiB;;CAErI,oBAAoB,QAAoC,UAAiB,OAAO,WAAW,YAAY,WAAW,QAAQ,iBAAiB;;CAE3I,aAAa,SACZ,OAAO,SAAS,YAAY,SAAS;;CAEtC,eAAe,eAAyC,OAAO,eAAe,YAAY,eAAe;;CAEzG,gBAAgB,YAAwB,kBACvC,OAAO,eAAe,YACtB,eAAe,SACd,kBAAkB,QAAS,OAAO,kBAAkB,YAAY,kBAAkB;;CAEpF,gBAAgB,UAAkB,UAAkB,QAAoC,UACvF,OAAO,aAAa,YAAY,OAAO,aAAa,YAAY,OAAO,WAAW,YAAY,WAAW,QAAQ,iBAAiB;;CAEnI,eAAe,KAAiB,aAC/B,OAAO,QAAQ,YAAY,QAAQ,SAAS,OAAO,aAAa,aAAa,MAAM,QAAQ,QAAQ;;CAEpG,SAAS,SAAoD,OAAO,SAAS,YAAY,SAAS;;CAGlG,UAAU,WAAuB,OAAO,WAAW,YAAY,WAAW;;CAE1E,QAAQ,WAAuB,OAAO,WAAW,YAAY,WAAW;;CAExE,aAAa,aAAqB,OAAO,aAAa;;CAEtD,mBAAmB,WAAmB,aAAqB,OAAO,cAAc,YAAY,OAAO,aAAa;;CAEhH,kBACC,UACA,EAAE,KAAK,QAAQ,cAEd,YAAY,QAAQ,OAAO,aAAa,aACzC,OAAO,QAAQ,YACf,QAAQ,QACR,OAAO,WAAW,YAClB,WAAW,QACX,OAAO,WAAW;AACpB;AAkDA,IAAA,gBAAe,gBAAgB;CAC9B,MAAM;CACN,OAAO;CACP,OAAO;CACP,OAAO,UAAwB;CAC/B,MAAM,OAAO,EAAE,OAAO,MAAM,UAAU;EACrC,MAAM,mBAAmB,WAAoE,IAAI;EAEjG,MAAM,EACL,YACA,OACA,YACA,UACA,4BACA,kBACA,kBACA,wBACA,mBACA,aACA,YACA,UACA,WACA,0BACG,SAAS,OAAO,OAAO,IAAI;EAE/B,MAAM,sBAAsB,eAAe,MAAM,gBAAgB,MAAM,UAAU,GAAG,GAAG;EACvF,MAAM,qBAAqB,SAAS,4BAA4B,GAAG;EAEnE,IAAI,eAAe;EACnB,MAAM,qBAA8C;GACnD,OAAO,OAAO,MAAM,cAAc,YAAY,MAAM,cAAc,OAAO,MAAM,YAAY,CAAC;EAC7F;EACA,MAAM,aAAa,QAAoB;GACtC,MAAM,QAAiB,OAAO,MAAM,WAAW,aAAa,MAAM,OAAO,GAAG,IAAI,UAAU,yBAAyB,KAAK,MAAM,MAAM;GACpI,OAAO,OAAO,UAAU,YAAY,OAAO,UAAU,WAAW,QAAQ,KAAA;EACzE;EAEA,MAAM,eAAe,UAAkB;GACtC,IAAI,UAAU,GACb,eAAe;GAEhB,IAAI,MAAM,YAAY,SAAS,GAAG;IAEjC,KADgB,MAAM,cAAc,gBAAgB,GAAG,UAAU,OACjD,GACf,OAAO,gBAAgB,MAAM,gBAAgB,YAAY,KAAK,MAAM,gBAAgB,WAAW;SACzF;KACN;KACA,OAAO,gBAAgB,MAAM,gBAAgB,YAAY,KAAK,MAAM,gBAAgB;IACrF;GACD;GACA,OAAO,SAAS,MAAM,gBAAgB,YAAY,KAAK,MAAM,gBAAgB,WAAW;EACzF;EAEA,MAAM,gBAAgB,WAAyB,QAAoB;GAElE,IAAI,MAAM,QAAQ;IACjB,SAAS,OAAO,eAAe;IAC/B,IAAI,UAAU,SAAS,GACtB,SAAS,OAAO,mBAAmB,GAAG;GAExC;GACA,KAAK,UAAU,WAAW,GAAG;EAC9B;EAEA,MAAM,mBAAmB,cAA4B;GACpD,IAAI,MAAM,QAAQ;IAEjB,IAAI,MAAM,UAEL;SAAA,MAAM,UAAU,SAAS,GAAG;MAC/B,SAAS,OAAO,eAAe;MAC/B,MAAM,WAAW,MAAM,UAAU;MACjC,IAAI,UAAU,SAAS,OAAO,mBAAmB,QAAQ;KAC1D;WAEA,SAAS,OAAO,eAAe;GAEjC;GACA,KAAK,aAAa,SAAS;EAC5B;EAEA,MAAM,yBAAyB,iBAA+B;GAC7D,aAAa,WAAW,IAAK,MAAM,WAAW,QAAU,MAAM,WAAW;GAEzE,IAAI,MAAM,UAAU,aAAa,SAAS,GAAG;IAE5C,MAAM,gBAAgB,aAAa,GAAG,EAAE;IACxC,MAAM,eAAe,kBAAkB,KAAA,IAAY,CAAA,IAAK,CAAC,aAAa;GACvE,OACC,MAAM,eAAe;GAGtB,MAAM,+BAA+B,MAAM,6BAA6B,QAAQ,MAAM,MAAM,gBAAgB,MAAM,MAAM,MAAM,CAAC,CAAC;GAChI,KAAK,mBAAmB,MAAM,YAAY;EAC3C;EAEA,MAAM,mCAAmC,KAAiB,aAAuB;GAChF,MAAM,SAAS,UAAU,GAAG;GAC5B,IAAI,WAAW,KAAA,GAAW;GAC1B,MAAM,SAAS,MAAM,UAAU,MAAM,SAAS,UAAU,IAAI,MAAM,MAAM;GACxE,IAAI,aAAa,MAAM;IACtB,IAAI,CAAC,MAAM,6BAA6B,MAAM,MAAM,MAAM,MAAM,GAC/D,MAAM,6BAA6B,KAAK,MAAM;IAE/C,IAAI,QAAQ,SAAS,OAAO,mBAAmB,QAAQ,IAAI;GAC5D,OAAO,IAAI,aAAa,OAAO;IAC9B,MAAM,SAAS,MAAM,6BAA6B,WAAW,MAAM,MAAM,MAAM;IAC/E,IAAI,UAAU,GACb,MAAM,6BAA6B,OAAO,QAAQ,CAAC;IAEpD,IAAI,QAAQ,SAAS,OAAO,mBAAmB,QAAQ,KAAK;GAC7D,OAAO;IACN,MAAM,SAAS,MAAM,6BAA6B,WAAW,MAAM,MAAM,MAAM;IAC/E,IAAI,UAAU,GACb,MAAM,6BAA6B,OAAO,QAAQ,CAAC;SAEnD,MAAM,6BAA6B,KAAK,MAAM;IAE/C,IAAI,QAAQ,SAAS,OAAO,mBAAmB,MAAM;GACtD;EACD;EAEA,MAAM,oBAAoB,EACzB,QACA,WAKK;GACL,MAAM,iBAAiB,QAAQ,OAAO;GACtC,IAAI,CAAC,OAAO,YACX,OAAO,aAAa;QACd,IAAI,OAAO,eAAe,cAChC,OAAO,aAAa;QAEpB,OAAO,aAAa,KAAA;GAGrB,MAAM,eAAwB,aAAa,CAAC,CAAC;GAC7C,MAAM,YAAY,WAAW,CAC5B,GAAI,MAAM,QAAQ,YAAY,IAAK,eAAoC,CAAA,GACvE,GAAI,MAAM,YAAY,YAAY,CAAA,CAAG,CACrC,CAAC,QAAQ,MAAM,OAAO,SAAS,KAAK,WAAW,cAAc,UAAU,YAAY,KAAK,OAAO,MAAM,KAAK;GAG3G,MAAM,YAAY,MAAM,WAAW,MAAM,MAAM,EAAE,SAAS,cAAc;GACxE,MAAM,UAAU,WAAW,iBAAiB,WAAW,QAAQ,OAAO;GACtE,MAAM,aAAa,MAAM,YAAY,SAAS,WAAW,MAAsB,EAAE,YAAY,OAAO;GACpG,IAAI,CAAC,OAAO,cAAc,cAAc,GAEvC,MAAM,YAAY,SAAS,OAAO,YAAY,CAAC;QACzC,IAAI,eAAe,IACzB,MAAM,YAAY,SAAS,KAAK;IAC/B;IACA,SAAS,OAAO;IAChB,MAAM,OAAO;GACd,CAAC;QACK;IACN,MAAM,WAAW,MAAM,YAAY,SAAS;IAC5C,IAAI,UAAU,SAAS,OAAO,OAAO;GACtC;GAEA,IAAI,MAAM,YAAY,SAAS,WAAW,GACzC,OAAO,MAAM,YAAY;GAE1B,KAAK,cAAc;IAAE;IAAQ,MAAM;IAAgB,OAAO,OAAO,cAAc;GAAG,CAAC;GACnF,YAAY;EACb;EAEA,MAAM,uBAAuB,YAA+B,kBAAqC;GAChG,IAAI,CAAC,YAGJ;GAED,IAAI,MAAM,mBAAmB;IAE5B,IAAI,MAAM,UAAU,eACnB,SAAS,OAAO,mBAAmB,aAAa;IAEjD,SAAS,OAAO,mBAAmB,UAAU;GAC9C;GACA,KAAK,iBAAiB,YAAY,aAAa;EAChD;EAEA,MAAM,uBAAuB,EAC5B,KACA,QACA,UACA,kBAMK;GACL,IAAI,qBAAqB;GAEzB,IAAI,OAAO,SAAS,aAAa;IAEhC,MAAM,SAAS,UAAU,GAAG;IAC5B,IAAI,MAAM,6BAA6B,MAAM,MAAM,MAAM,MAAM,GAC9D,qBAAqB;GAEvB;GACA,MAAM,aAAa,MAAM,aAAa,MAAM,MAAM,EAAE,SAAS,OAAO,QAAQ;GAC5E,IAAI,YAAY,iBACX;QAAA,IAAI,WAAW,qBAAqB,MAAM;KAC7C,IAAI,oBACH,sBAAsB;UAEtB,qBAAqB;IAEvB;;GAED,IAAI,MAAM,eAAe;IACxB,MAAM,gBACL,OAAO,MAAM,kBAAkB,WAAW,MAAM,gBAAgB,MAAM,cAAc;KAAE;KAAK;KAAQ;KAAU;IAAY,CAAC;IAC3H,IAAI,CAAC,eACJ,OAAO;IAER,IAAI,oBACH,OAAO,GAAG,mBAAkB,GAAI;SAEhC,OAAO;GAET,OACC,OAAO;EAET;EAEA,MAAM,6BAA6B,EAClC,KACA,QACA,UACA,kBAMK;GAEL,OAAO,QAAQ,OAAO,eAAe,eAAe,OAAO,eAAe,eAAe,OAAO,aAAa;GAC7G,IAAI,MAAM,qBAAqB;IAC9B,IAAI,OAAO,MAAM,wBAAwB,YACxC,OAAO,MAAM,oBAAoB;KAAE;KAAK;KAAQ;KAAU;IAAY,CAAC;SAEvE,OAAO,MAAM;GAEf;GACA,OAAO;EACR;EAEA,MAAM,oBAAoB,EACzB,QACA,eAMK;;GAEL,MAAM,WAAW,OAAO;GACxB,MAAM,YAAY,OAAO;GACzB,MAAM,OAAO,YAAY;GACzB,IAAI,SAAS,KAAA,KAAa,SAAS,MAAM,OAAO;IAAE,SAAS;IAAG,SAAS;GAAE;GACzE,IAAI,MAAM,YAAY,WAAW,MAAM,EAAE,SAAS,IAAI,MAAM,IAAI;IAC/D,MAAM,UAAU,MAAM,cAAc,KAAK,GAAG,aAAa;IACzD,IAAI,UAAU,GACb,OAAO;KAAE;KAAS,SAAS;IAAE;IAE9B,OAAO;KAAE,SAAS;KAAG,SAAS;IAAE;GACjC;GACA,OAAO;IAAE,SAAS;IAAG,SAAS;GAAE;EACjC;EAEA,MAAM,uBAAuB,UAAkB,UAAkB,QAAoC,UAAsB;GAC1H,MAAM,WAAW,SAAS,MAAM;IAC/B,IAAI,OAAO,aAAa,EAAE,MAAM;KAC/B,EAAE,QAAQ;KACV,EAAE,aAAa;IAChB;GACD,CAAC;GACD,KAAK,iBAAiB,UAAU,UAAU,QAAQ,KAAK;GACvD,IAAI,MAAM,eAAe,oBAAoB;EAC9C;EAEA,MAAM,sBAAsB,QAAgB;GAC3C,MAAM,cAAc,CAAC,GAAG;GACxB,MAAM,eAAe;EACtB;EAEA,MAAM,uBAAuB;GAAC;GAAc;GAAY;GAAS;GAAiB;GAAoB;GAAY;GAAc;EAAQ;EACxI,MAAM,sBAAsB,eAAe,CAC1C,GAAG,IAAI,IAAI,MAAM,cAAc,SAAS,WAAY,OAAO,OAAO,QAAQ,SAAS,WAAW,CAAC,OAAO,OAAO,IAAI,IAAI,CAAA,CAAG,CAAC,CAAC,CAC1H;EACD,MAAM,uBAAuB,eAAe,CAC3C,GAAG,IAAI,IAAI,MAAM,aAAa,SAAS,WAAW,CAAC,OAAO,MAAM,OAAO,UAAU,CAAC,CAAC,QAAQ,SAAS,OAAO,SAAS,QAAQ,CAAC,CAAC,CAAC,CAC/H;EACD,MAAM,uBAAuB,eAAe;GAC3C,MAAM,QAAQ,MAAM,YAAY;GAChC,OAAQ,UAAU,KAAA,KAAa,UAAU,MAAO,MAAM,kBAAkB,SAAS;EAClF,CAAC;EAED,YACO,MAAM,eACN;GACL,iBAAiB;EAClB,GACA,EAAE,MAAM,KAAK,CACd;EAEA,YACO,MAAM,iBACN;GAEL,OAAO,QAAQ,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW;IACxD,MAAM,YAAY,OAAO;GAC1B,CAAC;EACF,GACA,EAAE,MAAM,KAAK,CACd;EAEA,YACO,MAAM,YACN;GACL,IAAI,CAAC,MAAM,cAAc,MAAM,aAC9B,OAAO,YAAY;EAErB,GACA,EAAE,MAAM,KAAK,CACd;EAEA,kBAAkB;GACjB,MAAM,UAAU,WAAW;GAC3B,IAAI,SAAS;IACZ,MAAM,WAAW,IAAI,gBAAgB,YAAY;KAChD,KAAK,MAAM,SAAS,SAAS;MAC5B,MAAM,EAAE,OAAO,WAAW,MAAM;MAChC,MAAM,eAAe,MAAM,eAAe;MAC1C,MAAM,aAAa;MACnB,MAAM,cAAc;MACpB,IAAI,cAAc,mBAAmB;KACtC;IACD,CAAC;IACD,SAAS,QAAQ,OAAO;IAExB,aAAa;KACZ,SAAS,WAAW;IACrB;GACD;EACD,CAAC;EAED,UAAU,YAAY;GACrB,MAAM,YAAY,aAAa;GAC/B,kBAAkB;GAElB,OAAO,QAAQ,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW;IACxD,MAAM,YAAY,OAAO;GAC1B,CAAC;GACD,MAAM,YAAY;GAClB,iBAAiB;GACjB,IAAI,CAAC,MAAM,cAAc,MAAM,aAAa,MAAM,YAAY;EAC/D,CAAC;EAED,kBAAkB;GAEjB,2BAA2B;EAC5B,CAAC;EAED,MAAM,eAAe,SAAS,OAAO,YAAY;GAAC;GAAQ;GAAc;GAAuB;EAAe,CAAC;EAE/G,gBAAU,YAAA,OAAA;GAAA,OAEH;GAAU,SACR;IAAC;IAAY,YAAY,WAAW;IAAS,aAAa,MAAM;IAAY,EAAE,qBAAqB,MAAM,QAAQ;GAAC;GAAC,SACnH;IACN,oBAAoB,MAAM,aAAa,GAAG,MAAM,WAAU,MAAO;IACjE,qBAAqB,MAAM,cAAc,GAAG,MAAM,YAAW,MAAO;GACrE;EAAC,GAAA;GAAA,YAAA,yBAAA;IAAA,QAIM,MAAM,cAAc,MAAM;IAAU,mBACzB,MAAM;IAAe,wBAChB,MAAM;IAAoB,QAC1C,MAAM;IAAc,UAClB;IAAW,SACZ;GAAU,GANT,KAAK,OAAO,oBAAoB,KAAK,CAAC;GAQ9C,MAAM,aAAS,YAAA,OAAA,EAAA,SAAA,2BAAA,GAAA,CACwB,MAAM,UAAU;IAAE,QAAQ;IAAa,GAAG,qBAAqB,KAAK;GAAE,CAAC,CAAC,CAAA;GAC/G,YAAA,OAAA,EAAA,SAAA,yBAAA,GAAA;IAEC,MAAM,cAAU,YAAA,OAAA,EAAA,SAAA,wBAAA,GAAA,CAAA,YAAA,OAAA,EAAA,SAAA,6BAAA,GAAA,CAE0B,MAAM,SAAS;KAAE,QAAQ;KAAa,GAAG,qBAAqB,KAAK;IAAE,CAAC,CAAC,CAAA,GAAA,YAAA,OAAA,EAAA,SAAA,8BAAA,GAAA,CAE9G,MAAM,WAAO,YAAA,UAAA,MAAA;KAAA,YAAA,OAAA,EAAA,SAAA,0CAAA,GAAA,CAAA,YAAA,SAAA;MAAA,SAAA;MAAA,YAKA,MAAM;MAAO,cACX;MAAM,eAAA;MAAA,cAEL,MAAM,YAAY;MAAW,kBAAA,EAAA,QAAA,KAAA;MAAA,wBAAA,WAA7B,MAAM,YAAY,cAAW;MAAA,aAC/B,qBAAqB;MAAK,wBACf,MAAwB;OAC7C,MAAM,oBAAoB,EAAE;MAC7B;MAAC,0BACuB;OACvB,MAAM,oBAAoB;MAC3B;MAAC,YACS;KAAW,GAAA,IAAA,GAAA,YAAA,OAAA,EAAA,SAAA,kDAAA,GAAA,CAGpB,MAAM,YAAY,aAClB,MAAM,iBAAiB,CAAA,CAAA,CAAA;KAGzB,MAAM,cAAc,CAAC,MAAM,kBAAc,YAAA,cAAA,WAAA,EAIvC,UAAU,YAAW,GAAA;MAAA,SAAA;MAAA,eAAA;MAAA,YAIZ,MAAM;MAAO,QAAA;MAAA,cAEf,MAAM,YAAY;MAAc,wBAAA,WAAhC,MAAM,YAAY,iBAAc;MAAA,eAC3B,6BAA6B,MAAM,gBAAgB;MAAC,aACtD,yBAAyB,MAAM,gBAAgB;MAAC,eAAA;MAAA,aAEhD;MAAK,aAAA;MAAA,sBAEI,CAAC,KAAK;MAAC,gBAAA;KAAA,CAAA,GAAA,IAAA;KAI5B,MAAM,cAAU,YAAA,UAAA;MAAA,WAEN,MAAM;MAAO,eACT;MAAK,SAAA;MAAA,UAAA;MAAA,QAGZ;MAAO,WACJ;KAAW,GAAA,IAAA;KAGrB,MAAM,aAAa,MAAM,cAAc,SAAS,KAAC,YAAA,UAAA;MAAA,WAEvC,MAAM;MAAO,eACT;MAAK,SACX,MAAM,aAAa,UAAU;MAAO,UAAA;MAAA,QAErC;MAAM,iBACI,MAAM,aAAa,CAAC,MAAM;KAAW,GAAA,IAAA;KAGtD,MAAM,oBAAoB,MAAM,WAAO,YAAA,YAAA;MAAA,SAAA;MAAA,WAAA;KAAA,GAAA;MAGrC,eAAS,YAAA,UAAA;OAAA,WAAyB,MAAM;OAAO,eAAe;OAAK,UAAA;OAAA,QAAe;MAAO,GAAA,IAAA;MACzF,gBAAU,YAAA,gBAAA,MAAA,EAAA,eAAA,CAEP,MAAM,gBAAgB,GAAC,YAAA,gBAAA;OAAA,SAAA;OAAA,WAAA;OAAA,iBAC6B,iBAAiB,OAAO,KAAK;MAAC,GAAA,EAAA,eAAA,CAAA,gBAAA,OAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA;KAIpF,CAAA;KAIH,MAAM,aAAa;MAAE,QAAQ;MAAa,GAAG,qBAAqB,KAAK;KAAE,CAAC;KAC1E,MAAM,iBAAa,YAAA,YAAA;MAAA,SAAA;MAAA,WAAA;KAAA,GAAA;MAGjB,eAAS,YAAA,UAAA;OAAA,WACW,MAAM;OAAO,eAAe;OAAK,UAAA;OAAA,QAAe;MAAI,GAAA,IAAA;MAExE,gBAAU,YAAA,gBAAA,MAAA,EAAA,eAAA,CAEP,MAAM,gBAAgB;OAAE,QAAQ;OAAa,GAAG,qBAAqB,KAAK;MAAE,CAAC,CAAC,EAAA,CAAA;KAEhF,CAAA;IAGH,CAAA,CAEF,CAAA,CAAA,CAAA;IAGH,eAAA,YAAA,SAAA,WAEI,aAAa,OAAK;KAAA,OACjB;KAAQ,wBAES,MAAM;KAAW,QACjC,MAAM;KAAS,cACT;KAAgB,uBACP;KAAyB,iBAC/B;KAAmB,sBACd;KAAqB,iBAC1B;KAAgB,YACrB;KAAY,gBACR;KAAe,oBACX;KAAmB,oBACnB;KAAmB,uBAChB,KAAiB,QAAoC,MAA4B,UACrG,KAAK,kBAAkB,KAAK,QAAQ,MAAM,KAAK;KAAC,uBAE5B,KAAiB,QAAoC,MAA4B,UACrG,KAAK,kBAAkB,KAAK,QAAQ,MAAM,KAAK;KAAC,iBAElC,KAAiB,QAAoC,MAA4B,UAC/F,KAAK,aAAa,KAAK,QAAQ,MAAM,KAAK;KAAC,oBAE1B,KAAiB,QAAoC,MAA4B,UAClG,KAAK,gBAAgB,KAAK,QAAQ,MAAM,KAAK;KAAC,uBAE1B,KAAiB,QAAoC,MAA4B,UACrG,KAAK,mBAAmB,KAAK,QAAQ,MAAM,KAAK;KAAC,gBAEpC,KAAiB,QAA2C,UAAiB;MAC1F,IAAI,QAAQ,KAAK,YAAY,KAAK,QAAQ,KAAK;KAChD;KAAC,sBACmB,KAAiB,QAA2C,UAAiB;MAChG,IAAI,QAAQ,KAAK,kBAAkB,KAAK,QAAQ,KAAK;KACtD;KAAC,mBACgB,KAAiB,QAA2C,UAAiB;MAC7F,IAAI,QAAQ,KAAK,eAAe,KAAK,QAAQ,KAAK;KACnD;KAAC,mBACgB,QAAoC,UAAiB,KAAK,eAAe,QAAQ,KAAK;KAAC,yBACjF,QAAoC,UAAiB,KAAK,qBAAqB,QAAQ,KAAK;KAAC,oBAClG,eAAyC,KAAK,gBAAgB,UAAU;KAAC,oBACzE,KAAiB,aAAqC,KAAK,gBAAgB,KAAK,QAAQ;KAAC,aAChG,SAAoD,KAAK,UAAU,IAAI;IAAC,CAAA,GAAA;KAGlF,cAAc,MAAM,SAAS;KAC7B,aAAO,YAAA,OAAA,EAAA,SAAA,kBAAA,GAAA,CAEJ,MAAM,QACN,MAAM,MAAM,IAAC,YAAA,UAAA,MAAA,CAAA,YAAA,QAAA,MAAA,EAAA,eAAA,CAAA,YAAA,SAAA,MAAA,IAAA,CAAA,EAAA,CAAA,GAAA,YAAA,OAAA,MAAA,CAAA,gBAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAQb,CAAA;KAGH,eAAS,YAAA,UAAA,MAAA;MAAA,YAAA,eAAA;OAAA,aAAA;OAAA,QAAA;OAAA,SAAA;OAAA,SAOL,MAAM,gBAAgB,YAAY,MAAM,gBAAgB,YAAY,MACjE,MAAM,gBAAgB,YAAY,MAAM,gBAAgB,YAAY,MACnE,KACA,KACD;OAAE,SAAA;OAAA,SAGC;OAAW,uBACG;OAAK,aACf;OAAK,aAAA;MAAA,GAAA,IAAA;MAAA,YAAA,eAAA;OAAA,aAAA;OAAA,QAAA;OAAA,SAAA;OAAA,SAOT;OAAE,SAAA;OAAA,oBAAA;OAAA,uBAGY;OAAK,aACf;OAAK,aAAA;OAAA,cAEJ,MAAM;MAAa,GAAA,IAAA;MAE/B,MAAM,aAAS,YAAA,eAAA;OAAA,SAAA;OAAA,SAGP,MAAM;OAAoB,eAAA;OAAA,SAAA;OAAA,uBAGZ;OAAK,aAAA;OAAA,aAEf;OAAK,aAAA;MAAA,GAAA;OAIf,cAAQ,YAAA,OAAA,EAAA,SAAA,yGAAA,GAAA,CAAA,YAAA,QAAA,MAAA,CAAA,gBAAA,IAAA,CAAA,CAAA,CAAA,CAAA;OAKR,UAAU,EAAE,KAAK,QAAQ,aAAuE,YAAA,OAAA,EAAA,SAAA,2FAAA,GAAA,CAE7F,MAAM,YAAY;QAClB;QACA;QACA;QACA,QAAQ;QACR,GAAG,qBAAqB,KAAK;OAC9B,CAAC,CAAC,CAAA;MAEH,CAAA;MAIH,MAAM,aAAa,WAAW,IAC5B,MAAM,UAAU,IAChB,MAAM,aAAa,KAClB,QACA,IAAI,SACH,IAAI,SAAS,WAAQ,YAAA,eAAA,WACF,KAAG;OAAA,SAAS;OAAE,SAAS,IAAI,SAAS;OAAM,aAAa;MAAK,CAAA,GAAA,EAE7E,UAAU,EACT,KACA,QACA,aAKA,YAAA,UAAA,MAAA,CAEE,IAAI,SAAS;OAAE;OAAK;OAAQ;OAAQ,GAAG,qBAAqB,KAAK;MAAE,CAAC,GACpE,IAAI,QACJ,MAAM,IAAI,KAAK,GAAG;OACjB;OACA;OACA;OACA,GAAG,qBAAqB,KAAK;MAC9B,CAAC,CAAC,CAAA,EAEJ,CAAA,IAIH,IAAI,QAAI,YAAA,qBAAA,WAGF,KAAK,KAAK,oBAAoB,GAAC;OAAA,aACxB,MAAM;OAAS,aACf;OAAI,kBACC;OAAkB,qBACf;MAAqB,CAAA,GALhC,KAAK,OAAO,qBAAqB,KAAK,CAAC,EASpD;KAAC,CAAA;IAEJ,CAAA,GAAA,CAAA,CAAA,iBAAA,SAAA,GApKQ,MAAM,OAAO,CAAA,CAAA;IAAA,YAAA,OAAA,EAAA,SAAA,wBAAA,GAAA,CAAA,YAAA,OAAA,EAAA,SAAA,8BAAA,GAAA,CAwKmB,MAAM,SAAS;KAAE,QAAQ;KAAa,GAAG,qBAAqB,KAAK;IAAE,CAAC,CAAC,CAAA,GAChH,MAAM,aACN,MAAM,WAAW;KAChB,WAAW,MAAM,gBAAgB;KACjC,UAAU,MAAM,gBAAgB;KAChC,WAAW,MAAM,gBAAgB;KACjC;KACA;IACD,CAAC,IAAC,YAAA,UAAA,MAAA,CAGA,MAAM,aAAU,YAAA,yBAAA;KAAA,aAEJ,MAAM;KAAS,gBACZ;KAAgB,mBACb;IAAsB,GAAA,IAAA,IAAA,YAAA,cAAA;KAAA,SAAA;KAAA,QAAA;KAAA,UAAA;KAAA,SAGqC,MAAM,UAAU;IAAM,GAAA,IAAA,CACnG,CAAA,CAEF,CAAA;GAAA,CAAA;GAGF,MAAM,gBAAY,YAAA,eAAA;IAAA,sBAAA;IAAA,oBAAA;IAAA,cAAA;IAAA,gBAAA;IAAA,iBAMD,MAAM,eAAe;IAAM,WAClC,MAAM;GAAW,GAAA,IAAA;GAG3B,MAAM,oBAAgB,YAAA,kCAAA;IAAA,OAAsC;IAAgB,UAAU,MAAM;GAAa,GAAA,IAAA;EAAI,CAAA,CAE/G;EAED,OAAO,UAAU,QAAQ;;GAExB,gBAAgB,eAAe,SAAS,OAAO,cAAc;;GAE7D,kBAAkB,eAAe,SAAS,OAAO,gBAAgB;;GAEjE,sBAAsB,eAAe,SAAS,OAAO,oBAAoB;;GAEzE,oBAAoB,eAAe,SAAS,OAAO,kBAAkB;;GAErE,oBAAoB,eAAe,SAAS,OAAO,kBAAkB;;GAErE,oBAAoB,eAAe,SAAS,OAAO,kBAAkB;;GAErE,eAAe,eAAe,SAAS,OAAO,aAAa;;GAE3D,WAAW,eAAe,SAAS,OAAO,SAAS;;GAEnD,aAAa,eAAe,SAAS,OAAO,WAAW;;GAEvD,UAAU,eAAe,SAAS,OAAO,QAAQ;;GAEjD,MAAM,eAAe,SAAS,OAAO,IAAI;;GAEzC,UAAU,eAAe,SAAS,OAAO,QAAQ;;GAEjD,cAAc,eAAe,SAAS,OAAO,YAAY;;GAEzD,eAAe,eAAe,SAAS,OAAO,aAAa;;GAE3D,SAAS,eAAe,SAAS,OAAO,OAAO;;GAE/C,mBAAmB,eAAe,SAAS,OAAO,iBAAiB;;GAEnE,SAAS,MAAM,OAAO,SAAS;;GAE/B,WAAW,eAAe,MAAM,SAAS;;GAEzC,iBAAiB,eAAe,MAAM,eAAe;;GAErD,aAAa,eAAe,MAAM,WAAW;;GAE7C,UAAU,eAAe,MAAM,QAAQ;;GAEvC,cAAc,eAAe,MAAM,YAAY;;GAE/C,iBAAiB,eAAe,MAAM,eAAe;;GAErD,8BAA8B,eAAe,MAAM,4BAA4B;;GAE/E,YAAY,eAAe,MAAM,UAAU;;GAE3C,aAAa,eAAe,MAAM,WAAW;;GAE7C;;GAEA,SAAS;;GAET,OAAO;;GAEP;;GAEA;EACD,CAAC;CACF;AACD,CAAC"}
|