vue-admin-core
Version:
A Component Library for Vue 3
1 lines • 13.3 kB
Source Map (JSON)
{"version":3,"file":"effects.mjs","sources":["../../../../../../package/formily/__builtins__/shared/effects.ts"],"sourcesContent":["import {\n Field,\n FormPathPattern,\n isArrayField,\n isField,\n onFieldValueChange,\n onFieldInit,\n DataField,\n onFieldMount,\n Form\n} from \"@formily/core\";\nimport { isArray, isString } from \"lodash-es\";\nimport findTree from \"xe-utils/findTree.js\";\nimport { globalConfig, useGlobalConfig } from \"@vue-admin-core/components\";\nimport { toJS } from \"@formily/reactive\";\nimport { useFieldSchema } from \"@formily/vue\";\nimport { useEventListener } from \"@vueuse/core\";\nimport { useRequest } from \"vue-admin-core\";\nimport { watch } from \"vue\";\n\nexport type PropsType = {\n children?: string;\n label?: string;\n value?: string;\n disabled?: string | ((option: any) => boolean);\n separator?: string;\n};\n\nconst getOptions = (field: Field): any[] => {\n if (field.dataSource && field.dataSource.length > 0) return field.dataSource;\n if (field.componentProps.data && field.componentProps.data.length > 0)\n return field.componentProps.data;\n if (field.componentProps.options && field.componentProps.options.length > 0)\n return field.componentProps.options;\n return [];\n};\n\nconst getItem = (value: number | string | any[], options: any[], props?: PropsType): any => {\n const config = globalConfig?.value;\n const dictValueKey = config?.dictValueKey as string;\n const _props = { label: \"label\", value: \"value\", children: \"children\", ...props };\n const item = findTree(\n options,\n (item) => item[_props.value] === value || item[dictValueKey] === value,\n {\n children: _props.children\n }\n );\n return item.item;\n};\n\nconst createField = (field: DataField, form: Form, keymap: Record<string, string>) => {\n const fields: Record<string, Field> = {};\n for (const key in keymap) {\n const name = keymap[key];\n fields[key] = form.createField({\n name: name,\n basePath: field.address.splice((field.address.entire as string).split(\".\").length - 1, 1)\n });\n }\n return fields;\n};\n\nconst transformFieldValueToLabel = (field: DataField, form: Form) => {\n const config = globalConfig?.value;\n const fieldData = field[\"data\"] || {};\n const labelKey = fieldData[\"formLabelKey\"];\n const separator = fieldData[\"separator\"] || \",\";\n const keymap = fieldData[\"keymap\"];\n if (!labelKey && !keymap) return;\n const props = field.componentProps.props;\n const _map = {\n ...keymap,\n ...(labelKey ? { [props?.label || config?.dictLabelKey]: labelKey } : {})\n };\n const fields = createField(field, form, _map);\n const options = getOptions(field);\n const value = toJS(field.value);\n\n if (isArrayField(field)) {\n if (value && isArray(value)) {\n const mapValue: any = {};\n value.forEach((value: any) => {\n const item = getItem(value, options, props);\n for (const key in fields) {\n if (mapValue[key]) {\n mapValue[key].push(item[key]);\n } else {\n mapValue[key] = [item[key]];\n }\n }\n });\n for (const key in fields) {\n fields[key].setValue(mapValue[key]);\n }\n } else {\n for (const key in fields) {\n fields[key].setValue(\"\");\n }\n }\n return;\n }\n if (isField(field)) {\n if (value && isString(value)) {\n if (value.indexOf(separator) !== -1) {\n const list = value.split(separator);\n const mapValue: any = {};\n list.forEach((value: any) => {\n const item = getItem(value, options, props);\n for (const key in fields) {\n if (mapValue[key]) {\n mapValue[key].push(item[key]);\n } else {\n mapValue[key] = [item[key]];\n }\n }\n });\n for (const key in fields) {\n fields[key].setValue(mapValue[key].join(separator));\n }\n } else {\n const item = getItem(value, options, props);\n for (const key in fields) {\n fields[key].setValue(item[key]);\n }\n }\n } else {\n for (const key in fields) {\n fields[key].setValue(\"\");\n }\n }\n }\n};\n\nexport function fieldLabelEffect(targets: FormPathPattern = \"*\") {\n onFieldValueChange(targets, transformFieldValueToLabel);\n}\n\nexport function remoteDatasourceEffect(pattern: FormPathPattern = \"*\") {\n onFieldInit(pattern, async (field) => {\n const schema = useFieldSchema();\n const config = useGlobalConfig();\n if (isField(field) && schema?.value?.[\"x-remote\"]) {\n const params = schema.value[\"x-remote\"];\n const _config = {\n listKey: \"content\",\n totalKey: \"totalElements\",\n currentPageKey: \"page\",\n ...config.value\n };\n const request = useRequest(params.service, {\n cacheTime: -1,\n staleTime: -1,\n cacheKey: params.service.name + JSON.stringify(params.options?.defaultParams?.[0]),\n ...params.options\n });\n watch(\n request.loading,\n (loading) => {\n field.setLoading(loading as boolean);\n },\n { immediate: true }\n );\n watch(\n [request.data],\n ([data]) => {\n if (!data) return;\n if (field.componentType === \"TableSelect\") {\n field.setDataSource((data as any)[_config.listKey]);\n field.setComponentProps({\n total: (data as any)[_config.totalKey],\n // @ts-ignore\n onCurrentChange: (value: number) => request.run({ [_config.currentPageKey]: value })\n });\n } else {\n field.setDataSource(data as any);\n }\n },\n { immediate: true, deep: true }\n );\n }\n });\n}\n\nexport function inputEnterEffect(\n pattern: FormPathPattern = \"*\",\n fn: (e: KeyboardEvent, field: Field) => void,\n components: string[] = [\"Input\", \"InputNumber\"]\n) {\n onFieldMount(pattern, (field) => {\n // @ts-ignore\n if (field.invoke(\"getInstance\") && isField(field) && components.includes(field.component[0])) {\n const el: HTMLDivElement = field.invoke(\"getInstance\").$el;\n useEventListener(el.querySelector(\"input\"), \"keydown\", (e: KeyboardEvent) => {\n if (e.key === \"Enter\") {\n fn(e, field);\n }\n });\n }\n });\n}\n"],"names":["item","value"],"mappings":"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"}