{"version":3,"file":"tableSearchFormItem.mjs","names":[],"sources":["../../../../src/components/table/src/tableSearchFormItem.tsx"],"sourcesContent":["import { Fragment, defineComponent, h, inject, reactive, resolveComponent } from \"vue\";\nimport { ElOption } from \"element-plus\";\nimport {\n\tcreateDateRangeShortcuts,\n\tcreateDateShortcuts,\n\tcreateOneMonthRangeFromToday,\n\tdefinePropType,\n\tgetStartOfToday,\n\tmakeSlots,\n\tuseRender,\n\twithDefineType,\n} from \"../../../utils\";\nimport { getTableDefaultSlots } from \"./table.type\";\nimport { enumMapKey, tableStateKey } from \"./useTable\";\nimport type { FaTableColumnCtx, FaTableDefaultSlotsResult, FaTableEnumColumnCtx } from \"./table.type\";\n\n/**\n * 已知默认支持的el组件：\n * \tel-input\n * \tel-input-number\n * \tel-select\n * \tel-select-v2\n * \tel-tree-select\n * \tel-cascader\n * \tel-date-picker\n * \tel-time-picker\n * \tel-time-select,\n * \tel-switch\n * 已知组件的默认props\n * clearable：el-input，el-input-number，el-select，el-select-v2，el-tree-select，el-cascader，el-date-picker，el-time-picker，el-time-select\n * filterable：el-select，el-select-v2，el-tree-select\n * placeholder-请输入：el-input，el-input-number\n * placeholder-请选择：el-select，el-select-v2，el-tree-select，el-cascader\n * defaultTime：el-date-picker\n * shortcuts：el-date-picker\n * options：el-select-v2，el-cascader\n * data：el-tree-select\n * startPlaceholder：\n * \t\tel-date-picker type in [\"datetimerange\", \"daterange\", \"monthrange\", \"yearrange\"]\n * \t\tel-time-picker isRange is true\n * endPlaceholder：\n * \t\tel-date-picker type in [\"datetimerange\", \"daterange\", \"monthrange\", \"yearrange\"]\n * \t\tel-time-picker isRange is true\n * rangeSeparator：\n * \t\tel-date-picker type in [\"datetimerange\", \"daterange\", \"monthrange\", \"yearrange\"]\n * \t\tel-time-picker isRange is true\n * unlinkPanels：el-date-picker type in [\"datetimerange\", \"daterange\", \"monthrange\", \"yearrange\"]\n * 后缀 -select Select -page Page -cascader Cascader 结尾的\n * \tplaceholder：请选择\n * 后缀 -input Input 结尾的\n * \tplaceholder：请输入\n */\n\nconst clearableEls = [\n\t\"el-input\",\n\t\"ELInput\",\n\t\"el-input-number\",\n\t\"ELInputNumber\",\n\t\"el-select\",\n\t\"ElSelect\",\n\t\"el-select-v2\",\n\t\"ElSelectV2\",\n\t\"el-tree-select\",\n\t\"ElTreeSelect\",\n\t\"el-cascader\",\n\t\"ElCascader\",\n\t\"el-date-picker\",\n\t\"ElDatePicker\",\n\t\"el-time-picker\",\n\t\"ElTimePicker\",\n\t\"el-time-select\",\n\t\"ElTimeSelect\",\n];\n\nconst elInputEls = [\"el-input\", \"ElInput\", \"ELInput\"];\n\ntype FaTableSearchFormItemSlots = Record<\n\tstring,\n\tFaTableDefaultSlotsResult & {\n\t\tcolumn?: FaTableColumnCtx;\n\t\tsearch?: () => Promise<void>;\n\t}\n>;\n\nconst filterableEls = [\"el-select\", \"ElSelect\", \"el-select-v2\", \"ElSelectV2\", \"el-tree-select\", \"ElTreeSelect\"];\n\nconst inputPlaceholderEls = [\"el-input\", \"ELInput\", \"el-input-number\", \"ELInputNumber\"];\n\nconst selectPlaceholderEls = [\"el-select\", \"ElSelect\", \"el-select-v2\", \"ElSelectV2\", \"el-tree-select\", \"ElTreeSelect\", \"el-cascader\", \"ElCascader\"];\n\nexport default defineComponent({\n\tname: \"FaTableSearchFormItem\",\n\tprops: {\n\t\t/** 列配置 */\n\t\tcolumn: {\n\t\t\ttype: definePropType<FaTableColumnCtx>(Object),\n\t\t\trequired: true,\n\t\t},\n\t\t/** 搜索 */\n\t\tsearch: {\n\t\t\ttype: definePropType<() => Promise<void>>(Function),\n\t\t\trequired: true,\n\t\t},\n\t},\n\tslots: makeSlots<FaTableSearchFormItemSlots>(),\n\tsetup(props, { slots }) {\n\t\tconst tableState = inject(tableStateKey);\n\t\tconst enumMap = inject(enumMapKey);\n\t\tif (tableState === undefined || enumMap === undefined) {\n\t\t\tthrow new Error(\"FaTableSearchFormItem 必须在 FaTable 内部渲染。\");\n\t\t}\n\n\t\tconst state = reactive({\n\t\t\tenumDict: withDefineType<FaTableEnumColumnCtx[]>([]),\n\t\t});\n\n\t\tconst handleUpdateModelValue = (value: unknown) => {\n\t\t\tif (typeof value === \"string\") {\n\t\t\t\t// 如果是字符串，则去除前后空格\n\t\t\t\tvalue = value.trim();\n\t\t\t}\n\t\t\tconst searchKey = props.column.search?.key ?? props.column.prop;\n\t\t\tif (searchKey) tableState.searchParam[searchKey] = value;\n\t\t};\n\n\t\tconst handleChange = (_value: unknown) => {\n\t\t\tprops.search();\n\t\t};\n\n\t\tconst handleDefaultProps = () => {\n\t\t\tconst search = props.column.search;\n\t\t\tconst defaultProps: Record<string, unknown> = {};\n\t\t\tif (!search) return defaultProps;\n\t\t\tif (clearableEls.includes(search.el)) {\n\t\t\t\tdefaultProps[\"clearable\"] = true;\n\t\t\t}\n\t\t\tif (filterableEls.includes(search.el)) {\n\t\t\t\tdefaultProps[\"filterable\"] = true;\n\t\t\t}\n\t\t\tif (inputPlaceholderEls.includes(search.el)) {\n\t\t\t\tdefaultProps[\"placeholder\"] = \"请输入\";\n\t\t\t}\n\t\t\tif (selectPlaceholderEls.includes(search.el)) {\n\t\t\t\tdefaultProps[\"placeholder\"] = \"请选择\";\n\t\t\t}\n\t\t\tif ([\"el-date-picker\", \"ElDatePicker\"].includes(search.el)) {\n\t\t\t\tdefaultProps[\"unlinkPanels\"] = true;\n\t\t\t\tif (\n\t\t\t\t\ttypeof search.props?.[\"type\"] === \"string\" &&\n\t\t\t\t\t[\"datetimerange\", \"daterange\", \"monthrange\", \"yearrange\"].includes(search.props[\"type\"])\n\t\t\t\t) {\n\t\t\t\t\tdefaultProps[\"defaultTime\"] = createOneMonthRangeFromToday();\n\t\t\t\t\tdefaultProps[\"shortcuts\"] = createDateRangeShortcuts();\n\t\t\t\t\tdefaultProps[\"rangeSeparator\"] = \"至\";\n\t\t\t\t\tdefaultProps[\"startPlaceholder\"] = \"开始时间\";\n\t\t\t\t\tdefaultProps[\"endPlaceholder\"] = \"结束时间\";\n\t\t\t\t} else {\n\t\t\t\t\tdefaultProps[\"defaultTime\"] = getStartOfToday();\n\t\t\t\t\tdefaultProps[\"shortcuts\"] = createDateShortcuts();\n\t\t\t\t\tdefaultProps[\"placeholder\"] = \"请选择\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ([\"el-time-picker\", \"ElTimePicker\"].includes(search.el) && search.props?.[\"isRange\"]) {\n\t\t\t\tdefaultProps[\"rangeSeparator\"] = \"至\";\n\t\t\t\tdefaultProps[\"startPlaceholder\"] = \"开始时间\";\n\t\t\t\tdefaultProps[\"endPlaceholder\"] = \"结束时间\";\n\t\t\t}\n\t\t\tif (\n\t\t\t\t[\"el-select\", \"ElSelect\", \"el-select-v2\", \"ElSelectV2\", \"el-cascader\", \"ElCascader\", \"el-tree-select\", \"ElTreeSelect\"].includes(\n\t\t\t\t\tsearch.el\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tlet enumData: FaTableEnumColumnCtx[] | undefined;\n\t\t\t\tif (props.column.enum && typeof props.column.enum === \"string\") {\n\t\t\t\t\tenumData = enumMap.get(props.column.enum);\n\t\t\t\t} else {\n\t\t\t\t\tconst enumKey = props.column.prop ?? search.key;\n\t\t\t\t\tenumData = enumKey ? enumMap.get(enumKey) : undefined;\n\t\t\t\t}\n\t\t\t\tenumData = enumData?.filter((item) => item.show !== false);\n\t\t\t\tstate.enumDict = enumData ?? [];\n\t\t\t}\n\t\t\tif ([\"el-select-v2\", \"ElSelectV2\", \"el-cascader\", \"ElCascader\"].includes(search.el)) {\n\t\t\t\tdefaultProps[\"options\"] = state.enumDict;\n\t\t\t}\n\t\t\tif ([\"el-tree-select\", \"ElTreeSelect\"].includes(search.el)) {\n\t\t\t\tdefaultProps[\"data\"] = state.enumDict;\n\t\t\t}\n\n\t\t\treturn defaultProps;\n\t\t};\n\n\t\tuseRender(() => {\n\t\t\tconst search = props.column.search;\n\t\t\tconst searchKey = search?.key ?? props.column.prop;\n\t\t\tif (!search?.el || !searchKey) return <Fragment />;\n\t\t\tconst value: unknown = tableState.searchParam[searchKey];\n\t\t\tconst inputClearable = search.props?.[\"clearable\"] !== false && value !== undefined && value !== null && value !== \"\";\n\t\t\treturn (\n\t\t\t\t<Fragment>\n\t\t\t\t\t{h(\n\t\t\t\t\t\tresolveComponent(search.el),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t...handleDefaultProps(),\n\t\t\t\t\t\t\t...search.props,\n\t\t\t\t\t\t\t...(elInputEls.includes(search.el) ? { clearable: inputClearable } : {}),\n\t\t\t\t\t\t\tmodelValue: value,\n\t\t\t\t\t\t\t\"onUpdate:modelValue\": handleUpdateModelValue,\n\t\t\t\t\t\t\tonChange: handleChange,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdefault: () =>\n\t\t\t\t\t\t\t\t[\"el-select\", \"ElSelect\"].includes(search.el)\n\t\t\t\t\t\t\t\t\t? state.enumDict.map((selData, index) =>\n\t\t\t\t\t\t\t\t\t\t\th(ElOption, {\n\t\t\t\t\t\t\t\t\t\t\t\tkey: index,\n\t\t\t\t\t\t\t\t\t\t\t\tlabel: selData[typeof search.props?.[\"label\"] === \"string\" ? search.props[\"label\"] : \"label\"] as\n\t\t\t\t\t\t\t\t\t\t\t\t\tstring | number,\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: selData[typeof search.props?.[\"value\"] === \"string\" ? search.props[\"value\"] : \"value\"] as\n\t\t\t\t\t\t\t\t\t\t\t\t\tstring | number | boolean | object,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: Boolean(\n\t\t\t\t\t\t\t\t\t\t\t\t\tselData[typeof search.props?.[\"disabled\"] === \"string\" ? search.props[\"disabled\"] : \"disabled\"]\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)\n\t\t\t\t\t\t\t\t\t: slots[\"default\"]?.({\n\t\t\t\t\t\t\t\t\t\t\tcolumn: props.column,\n\t\t\t\t\t\t\t\t\t\t\tsearch: props.search,\n\t\t\t\t\t\t\t\t\t\t\t...getTableDefaultSlots(tableState),\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t}\n\t\t\t\t\t)}\n\t\t\t\t</Fragment>\n\t\t\t);\n\t\t});\n\t},\n});\n"],"mappings":"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"}