{"version":3,"file":"inputDialogPage.mjs","names":["update:modelValue","update:label"],"sources":["../../../../src/components/inputDialogPage/src/inputDialogPage.tsx"],"sourcesContent":["import { computed, defineComponent, reactive, shallowRef, useModel } from \"vue\";\nimport { Delete, Search } from \"@element-plus/icons-vue\";\nimport { ElButton, ElButtonGroup, ElInput } from \"element-plus\";\nimport { definePropType, makeSlots, useExpose, useRender, withDefineType } from \"../../../utils\";\nimport FaDialog from \"../../dialog\";\nimport { FaTable } from \"../../table\";\nimport type { TableProps } from \"element-plus\";\nimport type { PropType } from \"vue\";\nimport type { FaDialogInstance } from \"../../dialog\";\nimport type { DefaultRow, FaTableInstance, PagedInput, PagedResult } from \"../../table\";\n\n/** FaInputDialogPage 的运行时 Props 定义 */\nexport const faInputDialogPageProps = {\n\t/** 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/** v-model 绑定值 */\n\tmodelValue: [String, Number] as PropType<string | number | null>,\n\t/** v-model:label 绑定值 */\n\tlabel: String as PropType<string | null>,\n\t/** 输入框占位文本 */\n\tplaceholder: {\n\t\ttype: String,\n\t\tdefault: \"请选择\",\n\t},\n\t/** 禁用 */\n\tdisabled: Boolean,\n\t/** 标题 */\n\ttitle: String,\n\t/** 请求数据的函数 */\n\trequestApi: {\n\t\ttype: definePropType<(params?: PagedInput) => Promise<PagedResult | DefaultRow[]>>(Function),\n\t},\n\t/** 初始化参数 */\n\tinitParam: definePropType<string | number | PagedInput>([String, Number, Object]),\n\t/** 显示文本 Key */\n\tlabelKey: {\n\t\ttype: String,\n\t\tdefault: \"name\",\n\t},\n};\n\n/** FaInputDialogPage 的运行时 Emits 定义 */\nexport const faInputDialogPageEmits = {\n\t/** v-model 回调 */\n\t\"update:modelValue\": (value: string | number | null) => typeof value === \"string\" || typeof value === \"number\" || value === null,\n\t/** v-model:label 回调 */\n\t\"update:label\": (value: string | null) => typeof value === \"string\" || value === null,\n\t/** 选中数据改变 */\n\tchange: (_data: DefaultRow | null, _value?: string | number | null) => true,\n};\n\n/** FaInputDialogPage 的插槽参数 */\nexport interface FaInputDialogPageSlots extends Record<string, unknown> {\n\t/** 默认内容插槽 */\n\tdefault: never;\n}\n\nexport default defineComponent({\n\tname: \"FaInputDialogPage\",\n\tprops: faInputDialogPageProps,\n\temits: faInputDialogPageEmits,\n\tslots: makeSlots<FaInputDialogPageSlots>(),\n\tsetup(props, { slots, emit, expose }) {\n\t\tconst modelValue = useModel(props, \"modelValue\");\n\t\tconst selectedLabel = useModel(props, \"label\");\n\n\t\tconst faDialogRef = shallowRef<FaDialogInstance | null>(null);\n\t\tconst faTableRef = shallowRef<FaTableInstance | null>(null);\n\n\t\tconst state = reactive({\n\t\t\tselectionRow: withDefineType<DefaultRow | undefined>(),\n\t\t});\n\n\t\tconst handleDeleteClick = () => {\n\t\t\tmodelValue.value = null;\n\t\t\tselectedLabel.value = null;\n\t\t\tstate.selectionRow = undefined;\n\t\t\temit(\"change\", null, null);\n\t\t};\n\n\t\tconst handleSearchClick = async () => {\n\t\t\tawait faDialogRef.value?.open(() => {\n\t\t\t\tconst table = faTableRef.value;\n\t\t\t\tif (table === null) return;\n\t\t\t\tif (state.selectionRow) {\n\t\t\t\t\t// 判断当前行是否选中\n\t\t\t\t\tconst rawRowKey: unknown =\n\t\t\t\t\t\ttypeof props.rowKey === \"function\" ? props.rowKey(state.selectionRow) : state.selectionRow[props.rowKey];\n\t\t\t\t\tconst rowSelected = (typeof rawRowKey === \"string\" || typeof rawRowKey === \"number\") && table.selectedListIds.includes(rawRowKey);\n\t\t\t\t\tif (!rowSelected) {\n\t\t\t\t\t\ttable.toggleRowSelection?.(state.selectionRow);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\tconst handleConfirmClick = () => {\n\t\t\tfaDialogRef.value?.close(() => {\n\t\t\t\tconst table = faTableRef.value;\n\t\t\t\tconst selectedData = table?.selectedList[0];\n\t\t\t\tif (table?.selected && selectedData) {\n\t\t\t\t\tstate.selectionRow = selectedData;\n\t\t\t\t\tconst selectedValue: unknown = typeof props.rowKey === \"function\" ? props.rowKey(selectedData) : selectedData[props.rowKey];\n\t\t\t\t\tmodelValue.value = typeof selectedValue === \"string\" || typeof selectedValue === \"number\" ? selectedValue : null;\n\t\t\t\t\tconst label: unknown = selectedData[props.labelKey];\n\t\t\t\t\tselectedLabel.value = typeof label === \"string\" ? label : null;\n\t\t\t\t\temit(\"change\", selectedData, modelValue.value);\n\t\t\t\t} else {\n\t\t\t\t\tmodelValue.value = null;\n\t\t\t\t\tselectedLabel.value = null;\n\t\t\t\t\tstate.selectionRow = undefined;\n\t\t\t\t\temit(\"change\", null, null);\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\tconst handleTableRowDblclick = (row: DefaultRow) => {\n\t\t\tfaTableRef.value?.clearSelection?.();\n\t\t\tfaTableRef.value?.toggleRowSelection?.(row);\n\t\t\tstate.selectionRow = row;\n\t\t\thandleConfirmClick();\n\t\t};\n\n\t\tuseRender(() => (\n\t\t\t<div class=\"fa-input-dialog-page\">\n\t\t\t\t<ElInput vModel={selectedLabel.value} placeholder={props.placeholder} disabled={props.disabled} readonly>\n\t\t\t\t\t{{\n\t\t\t\t\t\tappend: () => (\n\t\t\t\t\t\t\t<ElButtonGroup>\n\t\t\t\t\t\t\t\t<ElButton disabled={props.disabled} icon={Delete} onClick={handleDeleteClick} />\n\t\t\t\t\t\t\t\t<ElButton disabled={props.disabled} icon={Search} onClick={handleSearchClick} />\n\t\t\t\t\t\t\t</ElButtonGroup>\n\t\t\t\t\t\t),\n\t\t\t\t\t}}\n\t\t\t\t</ElInput>\n\t\t\t\t<FaDialog\n\t\t\t\t\tref={faDialogRef}\n\t\t\t\t\tstyle=\"--height: 70%;\"\n\t\t\t\t\twidth=\"50%\"\n\t\t\t\t\ttitle={props.title}\n\t\t\t\t\tfullHeight\n\t\t\t\t\tdisabledConfirmButton={!faTableRef.value?.selected}\n\t\t\t\t\tonConfirmClick={handleConfirmClick}\n\t\t\t\t>\n\t\t\t\t\t<FaTable\n\t\t\t\t\t\tref={faTableRef}\n\t\t\t\t\t\trowKey={props.rowKey}\n\t\t\t\t\t\trequestApi={props.requestApi}\n\t\t\t\t\t\tinitParam={props.initParam}\n\t\t\t\t\t\tsingle\n\t\t\t\t\t\trowClickSelection\n\t\t\t\t\t\thideSearchTime\n\t\t\t\t\t\tonRowDblclick={handleTableRowDblclick}\n\t\t\t\t\t>\n\t\t\t\t\t\t{{\n\t\t\t\t\t\t\tdefault: () => slots.default?.(),\n\t\t\t\t\t\t}}\n\t\t\t\t\t</FaTable>\n\t\t\t\t</FaDialog>\n\t\t\t</div>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** 选择行数据 */\n\t\t\tselectionRow: computed(() => state.selectionRow),\n\t\t\t/** 打开选择器弹窗 */\n\t\t\topen: handleSearchClick,\n\t\t\t/** 清除选择 */\n\t\t\tclear: handleDeleteClick,\n\t\t});\n\t},\n});\n"],"mappings":";;;;;;;;;;;;AAYA,MAAa,yBAAyB;;CAErC,QAAQ;EACP,MAAM,CAAC,QAAQ,QAAQ;EACvB,SAAS;CACV;;CAEA,YAAY,CAAC,QAAQ,MAAM;;CAE3B,OAAO;;CAEP,aAAa;EACZ,MAAM;EACN,SAAS;CACV;;CAEA,UAAU;;CAEV,OAAO;;CAEP,YAAY,EACX,MAAM,eAA6E,QAAQ,EAC5F;;CAEA,WAAW,eAA6C;EAAC;EAAQ;EAAQ;CAAM,CAAC;;CAEhF,UAAU;EACT,MAAM;EACN,SAAS;CACV;AACD;;AAGA,MAAa,yBAAyB;;CAErC,sBAAsB,UAAkC,OAAO,UAAU,YAAY,OAAO,UAAU,YAAY,UAAU;;CAE5H,iBAAiB,UAAyB,OAAO,UAAU,YAAY,UAAU;;CAEjF,SAAS,OAA0B,WAAoC;AACxE;AAQA,IAAA,0BAAe,gBAAgB;CAC9B,MAAM;CACN,OAAO;CACP,OAAO;CACP,OAAO,UAAkC;CACzC,MAAM,OAAO,EAAE,OAAO,MAAM,UAAU;EACrC,MAAM,aAAa,SAAS,OAAO,YAAY;EAC/C,MAAM,gBAAgB,SAAS,OAAO,OAAO;EAE7C,MAAM,cAAc,WAAoC,IAAI;EAC5D,MAAM,aAAa,WAAmC,IAAI;EAE1D,MAAM,QAAQ,SAAS,EACtB,cAAc,eAAuC,EACtD,CAAC;EAED,MAAM,0BAA0B;GAC/B,WAAW,QAAQ;GACnB,cAAc,QAAQ;GACtB,MAAM,eAAe,KAAA;GACrB,KAAK,UAAU,MAAM,IAAI;EAC1B;EAEA,MAAM,oBAAoB,YAAY;GACrC,MAAM,YAAY,OAAO,WAAW;IACnC,MAAM,QAAQ,WAAW;IACzB,IAAI,UAAU,MAAM;IACpB,IAAI,MAAM,cAAc;KAEvB,MAAM,YACL,OAAO,MAAM,WAAW,aAAa,MAAM,OAAO,MAAM,YAAY,IAAI,MAAM,aAAa,MAAM;KAElG,IAAI,GADiB,OAAO,cAAc,YAAY,OAAO,cAAc,aAAa,MAAM,gBAAgB,SAAS,SAAS,IAE/H,MAAM,qBAAqB,MAAM,YAAY;IAE/C;GACD,CAAC;EACF;EAEA,MAAM,2BAA2B;GAChC,YAAY,OAAO,YAAY;IAC9B,MAAM,QAAQ,WAAW;IACzB,MAAM,eAAe,OAAO,aAAa;IACzC,IAAI,OAAO,YAAY,cAAc;KACpC,MAAM,eAAe;KACrB,MAAM,gBAAyB,OAAO,MAAM,WAAW,aAAa,MAAM,OAAO,YAAY,IAAI,aAAa,MAAM;KACpH,WAAW,QAAQ,OAAO,kBAAkB,YAAY,OAAO,kBAAkB,WAAW,gBAAgB;KAC5G,MAAM,QAAiB,aAAa,MAAM;KAC1C,cAAc,QAAQ,OAAO,UAAU,WAAW,QAAQ;KAC1D,KAAK,UAAU,cAAc,WAAW,KAAK;IAC9C,OAAO;KACN,WAAW,QAAQ;KACnB,cAAc,QAAQ;KACtB,MAAM,eAAe,KAAA;KACrB,KAAK,UAAU,MAAM,IAAI;IAC1B;GACD,CAAC;EACF;EAEA,MAAM,0BAA0B,QAAoB;GACnD,WAAW,OAAO,iBAAiB;GACnC,WAAW,OAAO,qBAAqB,GAAG;GAC1C,MAAM,eAAe;GACrB,mBAAmB;EACpB;EAEA,gBAAU,YAAA,OAAA,EAAA,SAAA,uBAAA,GAAA,CAAA,YAAA,SAAA;GAAA,cAES,cAAc;GAAK,wBAAA,WAAnB,cAAc,QAAK;GAAA,eAAe,MAAM;GAAW,YAAY,MAAM;GAAQ,YAAA;EAAA,GAAA,EAE5F,cAAQ,YAAA,eAAA,MAAA,EAAA,eAAA,CAAA,YAAA,UAAA;GAAA,YAEc,MAAM;GAAQ,QAAQ;GAAM,WAAW;EAAiB,GAAA,IAAA,GAAA,YAAA,UAAA;GAAA,YACxD,MAAM;GAAQ,QAAQ;GAAM,WAAW;EAAiB,GAAA,IAAA,CAAA,EAAA,CAAA,EAE7E,CAAA,GAAA,YAAA,UAAA;GAAA,OAIG;GAAW,SAAA;GAAA,SAAA;GAAA,SAGT,MAAM;GAAK,cAAA;GAAA,yBAEK,CAAC,WAAW,OAAO;GAAQ,kBAClC;EAAkB,GAAA,EAAA,eAAA,CAAA,YAAA,SAAA;GAAA,OAG5B;GAAU,UACP,MAAM;GAAM,cACR,MAAM;GAAU,aACjB,MAAM;GAAS,UAAA;GAAA,qBAAA;GAAA,kBAAA;GAAA,iBAIX;EAAsB,GAAA,EAGpC,eAAe,MAAM,UAAU,EAAC,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAKpC;EAED,OAAO,UAAU,QAAQ;;GAExB,cAAc,eAAe,MAAM,YAAY;;GAE/C,MAAM;;GAEN,OAAO;EACR,CAAC;CACF;AACD,CAAC"}