@tmagic/form 1.3.10 → 1.3.12

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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"tmagic-form.js","sources":["../src/utils/form.ts","../src/containers/Container.vue","../src/containers/Fieldset.vue","../src/containers/GroupListItem.vue","../src/containers/GroupList.vue","../src/containers/Panel.vue","../src/containers/Col.vue","../src/containers/Row.vue","../src/containers/Step.vue","../src/containers/Table.vue","../src/containers/Tabs.vue","../src/utils/config.ts","../src/utils/useAddField.ts","../src/fields/Cascader.vue","../src/fields/Checkbox.vue","../src/fields/CheckboxGroup.vue","../src/fields/ColorPicker.vue","../src/fields/Date.vue","../src/fields/Daterange.vue","../src/fields/DateTime.vue","../src/fields/Display.vue","../src/fields/DynamicField.vue","../src/fields/Hidden.vue","../src/Form.vue","../src/FormDialog.vue","../src/fields/Link.vue","../src/fields/Number.vue","../src/fields/NumberRange.vue","../src/fields/RadioGroup.vue","../src/fields/SelectOptionGroups.vue","../src/fields/Select.vue","../src/fields/Switch.vue","../src/fields/Text.vue","../src/fields/Textarea.vue","../src/fields/Time.vue","../src/fields/Timerange.vue","../src/FormDrawer.vue","../src/FormBox.vue","../src/index.ts"],"sourcesContent":["/*\n * Tencent is pleased to support the open source community by making TMagicEditor available.\n *\n * Copyright (C) 2023 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable no-param-reassign */\nimport { toRaw } from 'vue';\nimport { cloneDeep } from 'lodash-es';\n\nimport {\n ChildConfig,\n ContainerCommonConfig,\n DaterangeConfig,\n FormConfig,\n FormState,\n FormValue,\n HtmlField,\n Rule,\n TabPaneConfig,\n TypeFunction,\n} from '../schema';\n\ninterface DefaultItem {\n defaultValue: any;\n type: string;\n filter: string;\n multiple: boolean;\n}\n\nconst isTableSelect = (type?: string | TypeFunction) =>\n typeof type === 'string' && ['table-select', 'tableSelect'].includes(type);\n\nconst asyncLoadConfig = (value: FormValue, initValue: FormValue, { asyncLoad, name, type }: HtmlField) => {\n // 富文本配置了异步加载\n if (type === 'html' && typeof asyncLoad === 'object' && typeof name !== 'undefined') {\n asyncLoad.name = name;\n value.asyncLoad = typeof initValue.asyncLoad === 'object' ? initValue.asyncLoad : asyncLoad;\n }\n};\n\nconst isMultipleValue = (type?: string | TypeFunction) =>\n typeof type === 'string' &&\n ['checkbox-group', 'checkboxGroup', 'table', 'cascader', 'group-list', 'groupList'].includes(type);\n\nconst initItemsValue = (\n mForm: FormState | undefined,\n value: FormValue,\n initValue: FormValue,\n { items, name, extensible }: any,\n) => {\n if (Array.isArray(initValue[name])) {\n value[name] = initValue[name].map((v: any, index: number) => createValues(mForm, items, v, value[name]?.[index]));\n } else {\n value[name] = createValues(mForm, items, initValue[name], value[name]);\n if (extensible) {\n value[name] = Object.assign({}, initValue[name], value[name]);\n }\n }\n};\n\nconst setValue = (mForm: FormState | undefined, value: FormValue, initValue: FormValue, item: any) => {\n const { items, name, type, checkbox } = item;\n // 值是数组, 有可能也有items配置,所以不能放到getDefaultValue里赋值\n if (isMultipleValue(type) || (type === 'tab' && item.dynamic)) {\n value[name] = initValue[name] || [];\n }\n\n // 有子项继续递归,没有的话有初始值用初始值,没有初始值用默认值\n if (items) {\n initItemsValue(mForm, value, initValue, item);\n } else {\n value[name] = getDefaultValue(mForm, item as DefaultItem);\n }\n\n // 如果fieldset配置checkbox,checkbox的值保存在value中\n if (type === 'fieldset' && checkbox) {\n if (typeof value[name] === 'object') {\n value[name].value = typeof initValue[name] === 'object' ? initValue[name].value || 0 : 0;\n }\n }\n};\n\nconst initValueItem = function (\n mForm: FormState | undefined,\n item: ChildConfig | TabPaneConfig,\n initValue: FormValue,\n value: FormValue,\n) {\n const { items } = item as ContainerCommonConfig;\n const { names } = item as DaterangeConfig;\n const { type, name } = item as ChildConfig;\n\n if (isTableSelect(type) && name) {\n value[name] = initValue[name] || '';\n return value;\n }\n\n asyncLoadConfig(value, initValue, item as HtmlField);\n\n // 这种情况比较多,提前结束\n if (name && !items && typeof initValue[name] !== 'undefined') {\n if (typeof value[name] === 'undefined') {\n if (type === 'number') {\n value[name] = Number(initValue[name]);\n } else {\n value[name] = typeof initValue[name] === 'object' ? cloneDeep(initValue[name]) : initValue[name];\n }\n }\n\n return value;\n }\n\n if (names) {\n return names.forEach((n: string) => (value[n] = initValue[n] || ''));\n }\n\n if (!name) {\n // 没有配置name,直接跳过\n return createValues(mForm, items, initValue, value);\n }\n\n setValue(mForm, value, initValue, item);\n\n return value;\n};\n\nexport const createValues = function (\n mForm: FormState | undefined,\n config: FormConfig | TabPaneConfig[] = [],\n initValue: FormValue = {},\n value: FormValue = {},\n) {\n if (Array.isArray(config)) {\n config.forEach((item: ChildConfig | TabPaneConfig) => {\n initValueItem(mForm, item, initValue, value);\n });\n }\n\n return value;\n};\n\nconst getDefaultValue = function (mForm: FormState | undefined, { defaultValue, type, filter, multiple }: DefaultItem) {\n if (typeof defaultValue === 'function') {\n return defaultValue(mForm);\n }\n\n // 如果直接设置为undefined,在解析成js对象时会丢失这个配置,所以用'undefined'代替\n if (defaultValue === 'undefined') {\n return undefined;\n }\n\n if (typeof defaultValue !== 'undefined') {\n return defaultValue;\n }\n\n if (type === 'number' || filter === 'number') {\n return 0;\n }\n\n if (['switch', 'checkbox'].includes(type)) {\n return false;\n }\n\n if (multiple || type === 'number-range') {\n return [];\n }\n\n return '';\n};\n\nexport const filterFunction = <T = any>(mForm: FormState | undefined, config: T, props: any) => {\n if (typeof config !== 'function') {\n return config;\n }\n\n return config(mForm, {\n values: mForm?.initValues || {},\n model: props.model,\n parent: mForm?.parentValues || {},\n formValue: mForm?.values || props.model,\n prop: props.prop,\n config: props.config,\n index: props.index,\n });\n};\n\nexport const display = function (mForm: FormState | undefined, config: any, props: any) {\n if (config === 'expand') {\n return config;\n }\n\n if (typeof config === 'function') {\n return filterFunction(mForm, config, props);\n }\n\n if (config === false) {\n return false;\n }\n\n return true;\n};\n\nexport const getRules = function (mForm: FormState | undefined, rules: Rule[] | Rule = [], props: any) {\n rules = cloneDeep(rules);\n\n if (typeof rules === 'object' && !Array.isArray(rules)) {\n rules = [rules];\n }\n\n return rules.map((item) => {\n if (typeof item.validator === 'function') {\n const fnc = item.validator;\n\n (item as any).validator = (rule: any, value: any, callback: Function, source: any, options: any) =>\n fnc(\n {\n rule,\n value: props.config.names ? props.model : value,\n callback,\n source,\n options,\n },\n {\n values: mForm?.initValues || {},\n model: props.model,\n parent: mForm?.parentValues || {},\n formValue: mForm?.values || props.model,\n prop: props.prop,\n config: props.config,\n },\n mForm,\n );\n }\n return item;\n });\n};\n\nexport const initValue = async (\n mForm: FormState | undefined,\n { initValues, config }: { initValues: FormValue; config: FormConfig },\n) => {\n if (!Array.isArray(config)) throw new Error('config应该为数组');\n\n let valuesTmp = createValues(mForm, config, toRaw(initValues), {});\n\n const [firstForm] = config as [ContainerCommonConfig];\n if (firstForm && typeof firstForm.onInitValue === 'function') {\n valuesTmp = await firstForm.onInitValue(mForm, {\n formValue: valuesTmp,\n initValue: initValues,\n });\n }\n\n return valuesTmp || {};\n};\n","<template>\n <div\n v-if=\"config\"\n :id=\"config.id\"\n :data-magic-id=\"config.id\"\n :style=\"config.tip ? 'display: flex;align-items: baseline;' : ''\"\n :class=\"`m-form-container m-container-${type || ''} ${config.className || ''}`\"\n >\n <m-fields-hidden\n v-if=\"type === 'hidden'\"\n :model=\"model\"\n :config=\"config\"\n :name=\"config.name\"\n :disabled=\"disabled\"\n :prop=\"itemProp\"\n ></m-fields-hidden>\n\n <component\n v-else-if=\"items && !text && type && display\"\n :key=\"key(config)\"\n :size=\"size\"\n :is=\"tagName\"\n :model=\"model\"\n :last-values=\"lastValues\"\n :is-compare=\"isCompare\"\n :config=\"config\"\n :disabled=\"disabled\"\n :name=\"name\"\n :prop=\"itemProp\"\n :step-active=\"stepActive\"\n :expand-more=\"expand\"\n :label-width=\"itemLabelWidth\"\n @change=\"onChangeHandler\"\n @addDiffCount=\"onAddDiffCount\"\n ></component>\n\n <template v-else-if=\"type && display && !showDiff\">\n <TMagicFormItem\n :style=\"config.tip ? 'flex: 1' : ''\"\n :class=\"{ hidden: `${itemLabelWidth}` === '0' || !text }\"\n :prop=\"itemProp\"\n :label-width=\"itemLabelWidth\"\n :rules=\"rule\"\n >\n <template #label><span v-html=\"type === 'checkbox' ? '' : text\"></span></template>\n <TMagicTooltip v-if=\"tooltip\">\n <component\n :key=\"key(config)\"\n :size=\"size\"\n :is=\"tagName\"\n :model=\"model\"\n :last-values=\"lastValues\"\n :config=\"config\"\n :name=\"name\"\n :disabled=\"disabled\"\n :prop=\"itemProp\"\n @change=\"onChangeHandler\"\n @addDiffCount=\"onAddDiffCount\"\n ></component>\n <template #content>\n <div v-html=\"tooltip\"></div>\n </template>\n </TMagicTooltip>\n\n <component\n v-else\n :key=\"key(config)\"\n :size=\"size\"\n :is=\"tagName\"\n :model=\"model\"\n :last-values=\"lastValues\"\n :config=\"config\"\n :name=\"name\"\n :disabled=\"disabled\"\n :prop=\"itemProp\"\n @change=\"onChangeHandler\"\n @addDiffCount=\"onAddDiffCount\"\n ></component>\n\n <div v-if=\"extra && type !== 'table'\" v-html=\"extra\" class=\"m-form-tip\"></div>\n </TMagicFormItem>\n\n <TMagicTooltip v-if=\"config.tip\" placement=\"left\">\n <TMagicIcon style=\"line-height: 40px; margin-left: 5px\"><warning-filled /></TMagicIcon>\n <template #content>\n <div v-html=\"config.tip\"></div>\n </template>\n </TMagicTooltip>\n </template>\n\n <!-- 对比 -->\n <template v-else-if=\"type && display && showDiff\">\n <!-- 上次内容 -->\n <TMagicFormItem\n :style=\"config.tip ? 'flex: 1' : ''\"\n :class=\"{ hidden: `${itemLabelWidth}` === '0' || !text }\"\n :prop=\"itemProp\"\n :label-width=\"itemLabelWidth\"\n :rules=\"rule\"\n style=\"background: #f7dadd\"\n >\n <template #label><span v-html=\"type === 'checkbox' ? '' : text\"></span></template>\n <TMagicTooltip v-if=\"tooltip\">\n <component\n :key=\"key(config)\"\n :size=\"size\"\n :is=\"tagName\"\n :model=\"lastValues\"\n :config=\"config\"\n :name=\"name\"\n :disabled=\"disabled\"\n :prop=\"itemProp\"\n @change=\"onChangeHandler\"\n ></component>\n <template #content>\n <div v-html=\"tooltip\"></div>\n </template>\n </TMagicTooltip>\n\n <component\n v-else\n :key=\"key(config)\"\n :size=\"size\"\n :is=\"tagName\"\n :model=\"lastValues\"\n :config=\"config\"\n :name=\"name\"\n :disabled=\"disabled\"\n :prop=\"itemProp\"\n @change=\"onChangeHandler\"\n ></component>\n\n <div v-if=\"extra\" v-html=\"extra\" class=\"m-form-tip\"></div>\n </TMagicFormItem>\n\n <TMagicTooltip v-if=\"config.tip\" placement=\"left\">\n <TMagicIcon style=\"line-height: 40px; margin-left: 5px\"><warning-filled /></TMagicIcon>\n <template #content>\n <div v-html=\"config.tip\"></div>\n </template>\n </TMagicTooltip>\n <!-- 当前内容 -->\n <TMagicFormItem\n :style=\"config.tip ? 'flex: 1' : ''\"\n :class=\"{ hidden: `${itemLabelWidth}` === '0' || !text }\"\n :prop=\"itemProp\"\n :label-width=\"itemLabelWidth\"\n :rules=\"rule\"\n style=\"background: #def7da\"\n >\n <template #label><span v-html=\"type === 'checkbox' ? '' : text\"></span></template>\n <TMagicTooltip v-if=\"tooltip\">\n <component\n :key=\"key(config)\"\n :size=\"size\"\n :is=\"tagName\"\n :model=\"model\"\n :config=\"config\"\n :name=\"name\"\n :disabled=\"disabled\"\n :prop=\"itemProp\"\n @change=\"onChangeHandler\"\n ></component>\n <template #content>\n <div v-html=\"tooltip\"></div>\n </template>\n </TMagicTooltip>\n\n <component\n v-else\n :key=\"key(config)\"\n :size=\"size\"\n :is=\"tagName\"\n :model=\"model\"\n :config=\"config\"\n :name=\"name\"\n :disabled=\"disabled\"\n :prop=\"itemProp\"\n @change=\"onChangeHandler\"\n ></component>\n\n <div v-if=\"extra\" v-html=\"extra\" class=\"m-form-tip\"></div>\n </TMagicFormItem>\n\n <TMagicTooltip v-if=\"config.tip\" placement=\"left\">\n <TMagicIcon style=\"line-height: 40px; margin-left: 5px\"><warning-filled /></TMagicIcon>\n <template #content>\n <div v-html=\"config.tip\"></div>\n </template>\n </TMagicTooltip>\n </template>\n\n <template v-else-if=\"items && display\">\n <template v-if=\"name || name === 0 ? model[name] : model\">\n <Container\n v-for=\"item in items\"\n :key=\"key(item)\"\n :model=\"name || name === 0 ? model[name] : model\"\n :last-values=\"name || name === 0 ? lastValues[name] || {} : lastValues\"\n :is-compare=\"isCompare\"\n :config=\"item\"\n :size=\"size\"\n :disabled=\"disabled\"\n :step-active=\"stepActive\"\n :expand-more=\"expand\"\n :label-width=\"itemLabelWidth\"\n :prop=\"itemProp\"\n @change=\"onChangeHandler\"\n @addDiffCount=\"onAddDiffCount\"\n ></Container>\n </template>\n </template>\n\n <div style=\"text-align: center\" v-if=\"config.expand && type !== 'fieldset'\">\n <TMagicButton type=\"primary\" size=\"small\" :disabled=\"false\" link @click=\"expandHandler\">{{\n expand ? '收起配置' : '展开更多配置'\n }}</TMagicButton>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, inject, ref, resolveComponent, watch, watchEffect } from 'vue';\nimport { WarningFilled } from '@element-plus/icons-vue';\nimport { isEqual } from 'lodash-es';\n\nimport { TMagicButton, TMagicFormItem, TMagicIcon, TMagicTooltip } from '@tmagic/design';\n\nimport { ChildConfig, ContainerCommonConfig, FormState, FormValue } from '../schema';\nimport { display as displayFunction, filterFunction, getRules } from '../utils/form';\n\ndefineOptions({\n name: 'MFormContainer',\n});\n\nconst props = withDefaults(\n defineProps<{\n /** 表单值 */\n model: FormValue;\n /** 需对比的值(开启对比模式时传入) */\n lastValues?: FormValue;\n config: ChildConfig;\n prop?: string;\n disabled?: boolean;\n labelWidth?: string;\n expandMore?: boolean;\n stepActive?: string | number;\n size?: string;\n /** 是否开启对比模式 */\n isCompare?: boolean;\n }>(),\n {\n prop: '',\n size: 'small',\n expandMore: false,\n lastValues: () => ({}),\n isCompare: false,\n },\n);\n\nconst emit = defineEmits(['change', 'addDiffCount']);\n\nconst mForm = inject<FormState | undefined>('mForm');\n\nconst expand = ref(false);\n\nconst name = computed(() => props.config.name || '');\n// 是否展示两个版本的对比内容\nconst showDiff = computed(() => {\n if (!props.isCompare) return false;\n const curValue = name.value ? props.model[name.value] : props.model;\n const lastValue = name.value ? props.lastValues[name.value] : props.lastValues;\n return !isEqual(curValue, lastValue);\n});\n\nconst items = computed(() => (props.config as ContainerCommonConfig).items);\n\nconst itemProp = computed(() => {\n let n: string | number = '';\n const { names } = props.config as any;\n if (names?.[0]) {\n [n] = names;\n } else if (name.value) {\n n = name.value;\n } else {\n return props.prop;\n }\n return `${props.prop}${props.prop ? '.' : ''}${n}`;\n});\n\nconst tagName = computed(() => {\n const component = resolveComponent(`m-${items.value ? 'form' : 'fields'}-${type.value}`);\n if (typeof component !== 'string') return component;\n return 'm-fields-text';\n});\n\nconst disabled = computed(() => props.disabled || filterFunction(mForm, props.config.disabled, props));\n\nconst text = computed(() => filterFunction(mForm, props.config.text, props));\n\nconst tooltip = computed(() => filterFunction(mForm, props.config.tooltip, props));\n\nconst extra = computed(() => filterFunction(mForm, props.config.extra, props));\n\nconst rule = computed(() => getRules(mForm, props.config.rules, props));\n\nconst type = computed((): string => {\n let { type } = props.config;\n if (typeof type === 'function') {\n type = type(mForm, {\n model: props.model,\n });\n }\n if (type === 'form') return '';\n if (type === 'container') return '';\n return type?.replace(/([A-Z])/g, '-$1').toLowerCase() || (items.value ? '' : 'text');\n});\n\nconst display = computed((): boolean => {\n const value = displayFunction(mForm, props.config.display, props);\n\n if (value === 'expand') {\n return expand.value;\n }\n return value;\n});\n\nconst itemLabelWidth = computed(() => props.config.labelWidth ?? props.labelWidth);\n\nwatchEffect(() => {\n expand.value = props.expandMore;\n});\n\n// 监听是否展示对比内容,如果出现差异项则触发差异数计数事件\nwatch(\n showDiff,\n (showDiff) => {\n if (type.value === 'hidden') return;\n if (items.value && !text.value && type.value && display.value) return;\n if (display.value && showDiff && type.value) {\n emit('addDiffCount');\n }\n },\n {\n immediate: true,\n },\n);\n\nconst expandHandler = () => (expand.value = !expand.value);\n\nconst key = (config: any) => config[mForm?.keyProps];\n\nconst filterHandler = (filter: any, value: FormValue | number | string) => {\n if (typeof filter === 'function') {\n return filter(mForm, value, {\n model: props.model,\n values: mForm?.initValues,\n formValue: mForm?.values,\n prop: itemProp.value,\n config: props.config,\n });\n }\n\n if (filter === 'number') {\n return +value;\n }\n\n return value;\n};\n\nconst changeHandler = (onChange: any, value: FormValue | number | string) => {\n if (typeof onChange === 'function') {\n return onChange(mForm, value, {\n model: props.model,\n values: mForm?.initValues,\n formValue: mForm?.values,\n prop: itemProp.value,\n config: props.config,\n });\n }\n};\n\nconst trimHandler = (trim: any, value: FormValue | number | string) => {\n if (typeof value === 'string' && trim) {\n return value.replace(/^\\s*/, '').replace(/\\s*$/, '');\n }\n};\n\n// 继续抛出给更高层级的组件\nconst onAddDiffCount = () => emit('addDiffCount');\n\nconst onChangeHandler = async function (v: FormValue, key?: string) {\n const { filter, onChange, trim, name, dynamicKey } = props.config as any;\n let value: FormValue | number | string = v;\n\n try {\n value = filterHandler(filter, v);\n value = (await changeHandler(onChange, value)) ?? value;\n value = trimHandler(trim, value) ?? value;\n } catch (e) {\n console.error(e);\n }\n\n // field内容下包含field-link时,model===value, 这里避免循环引用\n if ((name || name === 0) && props.model !== value && (v !== value || props.model[name] !== value)) {\n // eslint-disable-next-line vue/no-mutating-props\n props.model[name] = value;\n }\n // 动态表单类型,根据value和key参数,直接修改model\n if (key !== undefined && dynamicKey) {\n // eslint-disable-next-line vue/no-mutating-props\n props.model[key] = value;\n }\n emit('change', props.model);\n};\n</script>\n","<template>\n <fieldset\n v-if=\"name ? model[name] : model\"\n class=\"m-fieldset\"\n :style=\"show ? 'padding: 15px 15px 0 5px;' : 'border: 0'\"\n >\n <component v-if=\"name && config.checkbox\" :is=\"!show ? 'div' : 'legend'\">\n <TMagicCheckbox\n v-model=\"model[name].value\"\n :prop=\"`${prop}${prop ? '.' : ''}${config.name}.value`\"\n :true-label=\"1\"\n :false-label=\"0\"\n @update:modelValue=\"change\"\n ><span v-html=\"config.legend\"></span><span v-if=\"config.extra\" v-html=\"config.extra\" class=\"m-form-tip\"></span\n ></TMagicCheckbox>\n </component>\n <legend v-else>\n <span v-html=\"config.legend\"></span>\n <span v-if=\"config.extra\" v-html=\"config.extra\" class=\"m-form-tip\"></span>\n </legend>\n\n <div v-if=\"config.schematic && show\" style=\"display: flex\">\n <div style=\"flex: 1\">\n <Container\n v-for=\"(item, index) in config.items\"\n :key=\"key(item, index)\"\n :model=\"name ? model[name] : model\"\n :lastValues=\"name ? lastValues[name] : lastValues\"\n :is-compare=\"isCompare\"\n :rules=\"name ? rules[name] : []\"\n :config=\"item\"\n :prop=\"prop\"\n :disabled=\"disabled\"\n :labelWidth=\"lWidth\"\n :size=\"size\"\n @change=\"change\"\n @add-diff-count=\"onAddDiffCount()\"\n ></Container>\n </div>\n\n <img class=\"m-form-schematic\" :src=\"config.schematic\" />\n </div>\n\n <template v-else-if=\"show\">\n <Container\n v-for=\"(item, index) in config.items\"\n :key=\"key(item, index)\"\n :model=\"name ? model[name] : model\"\n :lastValues=\"name ? lastValues[name] : lastValues\"\n :is-compare=\"isCompare\"\n :rules=\"name ? rules[name] : []\"\n :config=\"item\"\n :prop=\"prop\"\n :labelWidth=\"lWidth\"\n :size=\"size\"\n :disabled=\"disabled\"\n @change=\"change\"\n @addDiffCount=\"onAddDiffCount()\"\n ></Container>\n </template>\n </fieldset>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject } from 'vue';\n\nimport { TMagicCheckbox } from '@tmagic/design';\n\nimport { FieldsetConfig, FormState } from '../schema';\n\nimport Container from './Container.vue';\n\ndefineOptions({\n name: 'MFormFieldset',\n});\n\nconst props = withDefaults(\n defineProps<{\n labelWidth?: string;\n prop: string;\n size?: string;\n model: Record<string, any>;\n lastValues?: Record<string, any>;\n isCompare?: boolean;\n config: FieldsetConfig;\n rules?: any;\n disabled?: boolean;\n }>(),\n {\n rules: {},\n prop: '',\n lastValues: () => ({}),\n isCompare: false,\n },\n);\n\nconst emit = defineEmits(['change', 'addDiffCount']);\n\nconst mForm = inject<FormState | undefined>('mForm');\n\nconst name = computed(() => props.config.name || '');\n\nconst show = computed(() => {\n if (props.config.expand && name.value) {\n return props.model[name.value]?.value;\n }\n return true;\n});\n\nconst lWidth = computed(() => {\n if (props.config.items) {\n return props.config.labelWidth || props.labelWidth;\n }\n return props.config.labelWidth || props.labelWidth || (props.config.text ? undefined : '0');\n});\n\nconst change = () => {\n emit('change', props.model);\n};\n\nconst key = (item: any, index: number) => item[mForm?.keyProp || '__key'] ?? index;\n\nconst onAddDiffCount = () => emit('addDiffCount');\n</script>\n","<template>\n <div class=\"m-fields-group-list-item\">\n <div>\n <TMagicButton link :disabled=\"disabled\" :icon=\"expand ? CaretBottom : CaretRight\" @click=\"expandHandler\">{{\n title\n }}</TMagicButton>\n\n <TMagicButton\n v-show=\"showDelete(parseInt(String(index)))\"\n style=\"color: #f56c6c\"\n link\n :icon=\"Delete\"\n :disabled=\"disabled\"\n @click=\"removeHandler\"\n ></TMagicButton>\n\n <template v-if=\"movable()\">\n <TMagicButton v-show=\"index !== 0\" link :disabled=\"disabled\" size=\"small\" @click=\"changeOrder(-1)\"\n >上移<TMagicIcon><CaretTop /></TMagicIcon\n ></TMagicButton>\n <TMagicButton v-show=\"index !== length - 1\" :disabled=\"disabled\" link size=\"small\" @click=\"changeOrder(1)\"\n >下移<TMagicIcon><CaretBottom /></TMagicIcon\n ></TMagicButton>\n </template>\n\n <span v-if=\"itemExtra\" v-html=\"itemExtra\" class=\"m-form-tip\"></span>\n </div>\n\n <Container\n v-if=\"expand\"\n :config=\"rowConfig\"\n :model=\"model\"\n :lastValues=\"lastValues\"\n :is-compare=\"isCompare\"\n :labelWidth=\"labelWidth\"\n :prop=\"`${prop}${prop ? '.' : ''}${String(index)}`\"\n :size=\"size\"\n :disabled=\"disabled\"\n @change=\"changeHandler\"\n @addDiffCount=\"onAddDiffCount()\"\n ></Container>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, inject, ref } from 'vue';\nimport { CaretBottom, CaretRight, CaretTop, Delete } from '@element-plus/icons-vue';\n\nimport { TMagicButton, TMagicIcon } from '@tmagic/design';\n\nimport { FormState, GroupListConfig } from '../schema';\nimport { filterFunction } from '../utils/form';\n\nimport Container from './Container.vue';\n\ndefineOptions({\n name: 'MFormGroupListItem',\n});\n\nconst props = defineProps<{\n model: any;\n lastValues: any;\n isCompare?: boolean;\n groupModel: any[];\n config: GroupListConfig;\n labelWidth?: string;\n prop?: string;\n size?: string;\n index: number;\n disabled?: boolean;\n}>();\n\nconst emit = defineEmits(['swap-item', 'remove-item', 'change', 'addDiffCount']);\n\nconst mForm = inject<FormState | undefined>('mForm');\nconst expand = ref(props.config.expandAll || !props.index);\n\nconst rowConfig = computed(() => ({\n type: 'row',\n span: props.config.span || 24,\n items: props.config.items,\n labelWidth: props.config.labelWidth,\n [mForm?.keyProp || '__key']: `${props.config[mForm?.keyProp || '__key']}${String(props.index)}`,\n}));\n\nconst title = computed(() => {\n if (props.config.titleKey && props.model[props.config.titleKey]) {\n return props.model[props.config.titleKey];\n }\n\n if (props.config.title) {\n return filterFunction(mForm, props.config.title, props);\n }\n\n const titlePrefix = props.config.titlePrefix || '组';\n\n return `${titlePrefix} ${String(props.index + 1)}`;\n});\n\nconst length = computed(() => props.groupModel?.length || 0);\n\nconst itemExtra = computed(() => filterFunction(mForm, props.config.itemExtra, props));\n\nconst removeHandler = () => emit('remove-item', props.index);\n\nconst changeHandler = () => emit('change');\n\nconst expandHandler = () => {\n expand.value = !expand.value;\n};\n\n// 希望支持单行可控制是否显示删除按钮,不会影响现有逻辑\nconst showDelete = (index: number) => {\n const deleteFunc = props.config.delete;\n if (deleteFunc && typeof deleteFunc === 'function') {\n return deleteFunc(props.model, index, mForm?.values);\n }\n return true;\n};\n\n// 调换顺序\nconst changeOrder = (offset = 0) => emit('swap-item', props.index, props.index + offset);\n\nconst movable = () => {\n const { movable } = props.config;\n\n // 没有设置时,默认可移动\n if (movable === undefined) return true;\n if (typeof movable === 'function') {\n return movable(mForm, props.index || 0, props.model, props.groupModel);\n }\n return movable;\n};\nconst onAddDiffCount = () => emit('addDiffCount');\n</script>\n","<template>\n <div class=\"m-fields-group-list\">\n <div v-if=\"config.extra\" v-html=\"config.extra\" style=\"color: rgba(0, 0, 0, 0.45)\"></div>\n <div v-if=\"!model[name] || !model[name].length\" class=\"el-table__empty-block\">\n <span class=\"el-table__empty-text\">暂无数据</span>\n </div>\n\n <MFieldsGroupListItem\n v-else\n v-for=\"(item, index) in model[name]\"\n :key=\"index\"\n :model=\"item\"\n :lastValues=\"getLastValues(lastValues[name], index)\"\n :is-compare=\"isCompare\"\n :config=\"config\"\n :prop=\"prop\"\n :index=\"index\"\n :label-width=\"labelWidth\"\n :size=\"size\"\n :disabled=\"disabled\"\n :group-model=\"model[name]\"\n @remove-item=\"removeHandler\"\n @swap-item=\"swapHandler\"\n @change=\"changeHandler\"\n @addDiffCount=\"onAddDiffCount()\"\n ></MFieldsGroupListItem>\n\n <TMagicButton @click=\"addHandler\" size=\"small\" :disabled=\"disabled\" v-if=\"addable\">新增</TMagicButton>\n\n <TMagicButton :icon=\"Grid\" size=\"small\" @click=\"toggleMode\" v-if=\"config.enableToggleMode\">切换为表格</TMagicButton>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, inject } from 'vue';\nimport { Grid } from '@element-plus/icons-vue';\n\nimport { TMagicButton } from '@tmagic/design';\n\nimport { FormState, GroupListConfig } from '../schema';\nimport { initValue } from '../utils/form';\n\nimport MFieldsGroupListItem from './GroupListItem.vue';\n\ndefineOptions({\n name: 'MFormGroupList',\n});\n\nconst props = defineProps<{\n model: any;\n lastValues?: any;\n isCompare?: boolean;\n config: GroupListConfig;\n name: string;\n labelWidth?: string;\n prop?: string;\n size?: string;\n disabled?: boolean;\n}>();\n\nconst emit = defineEmits(['change', 'addDiffCount']);\n\nconst mForm = inject<FormState | undefined>('mForm');\n\nconst addable = computed(() => {\n if (!props.name) return false;\n\n if (typeof props.config.addable === 'function') {\n return props.config.addable(mForm, {\n model: props.model[props.name],\n formValue: mForm?.values,\n prop: props.prop,\n config: props.config,\n });\n }\n\n return typeof props.config.addable === 'undefined' ? true : props.config.addable;\n});\n\nconst changeHandler = () => {\n if (!props.name) return false;\n\n emit('change', props.model[props.name]);\n};\n\nconst addHandler = async () => {\n if (!props.name) return false;\n\n let initValues = {};\n\n if (typeof props.config.defaultAdd === 'function') {\n initValues = await props.config.defaultAdd(mForm, {\n model: props.model[props.name],\n formValue: mForm?.values,\n prop: props.prop,\n config: props.config,\n });\n } else if (props.config.defaultAdd) {\n initValues = props.config.defaultAdd;\n }\n\n const groupValue = await initValue(mForm, {\n config: props.config.items,\n initValues,\n });\n\n props.model[props.name].push(groupValue);\n};\n\nconst removeHandler = (index: number) => {\n if (!props.name) return false;\n\n props.model[props.name].splice(index, 1);\n changeHandler();\n};\n\nconst swapHandler = (idx1: number, idx2: number) => {\n if (!props.name) return false;\n\n const [currRow] = props.model[props.name].splice(idx1, 1);\n props.model[props.name].splice(idx2, 0, currRow);\n changeHandler();\n};\n\nconst toggleMode = () => {\n props.config.type = 'table';\n props.config.groupItems = props.config.items;\n props.config.items = (props.config.tableItems ||\n props.config.items.map((item: any) => ({\n ...item,\n label: item.label || item.text,\n text: null,\n }))) as any;\n};\n\nconst onAddDiffCount = () => emit('addDiffCount');\n\nconst getLastValues = (item: any, index: number) => item?.[index] || {};\n</script>\n","<template>\n <TMagicCard\n v-if=\"items && items.length\"\n class=\"box-card m-form-panel\"\n :body-style=\"{ display: expand ? 'block' : 'none' }\"\n >\n <template #header>\n <div style=\"width: 100%; display: flex; align-items: center\">\n <TMagicButton style=\"padding: 0\" link :icon=\"expand ? CaretBottom : CaretRight\" @click=\"expand = !expand\">\n </TMagicButton>\n <span v-if=\"config && config.extra\" v-html=\"config.extra\" class=\"m-form-tip\"></span>\n <slot name=\"header\">{{ filter(config.title) }}</slot>\n </div>\n </template>\n\n <div>\n <slot></slot>\n\n <div v-if=\"config.schematic\" style=\"display: flex\">\n <div style=\"flex: 1\">\n <Container\n v-for=\"(item, index) in items\"\n :key=\"item[mForm?.keyProp || '__key'] ?? index\"\n :config=\"item\"\n :model=\"name ? model[name] : model\"\n :lastValues=\"name ? lastValues[name] : lastValues\"\n :is-compare=\"isCompare\"\n :prop=\"prop\"\n :size=\"size\"\n :disabled=\"disabled\"\n :label-width=\"config.labelWidth || labelWidth\"\n @change=\"changeHandler\"\n @addDiffCount=\"onAddDiffCount()\"\n ></Container>\n </div>\n\n <img class=\"m-form-schematic\" :src=\"config.schematic\" />\n </div>\n\n <template v-else>\n <Container\n v-for=\"(item, index) in items\"\n :key=\"item[mForm?.keyProp || '__key'] ?? index\"\n :config=\"item\"\n :model=\"name ? model[name] : model\"\n :lastValues=\"name ? lastValues[name] : lastValues\"\n :is-compare=\"isCompare\"\n :prop=\"prop\"\n :size=\"size\"\n :disabled=\"disabled\"\n :label-width=\"config.labelWidth || labelWidth\"\n @change=\"changeHandler\"\n @addDiffCount=\"onAddDiffCount()\"\n ></Container>\n </template>\n </div>\n </TMagicCard>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, inject, ref } from 'vue';\nimport { CaretBottom, CaretRight } from '@element-plus/icons-vue';\n\nimport { TMagicButton, TMagicCard } from '@tmagic/design';\n\nimport { FormState, PanelConfig } from '../schema';\nimport { filterFunction } from '../utils/form';\n\nimport Container from './Container.vue';\n\ndefineOptions({\n name: 'MFormPanel',\n});\n\nconst props = defineProps<{\n model: any;\n lastValues?: any;\n isCompare?: boolean;\n config: PanelConfig;\n name?: string;\n labelWidth?: string;\n prop?: string;\n size?: string;\n disabled?: boolean;\n}>();\n\nconst emit = defineEmits(['change', 'addDiffCount']);\n\nconst mForm = inject<FormState | undefined>('mForm');\n\nconst expand = ref(props.config.expand !== false);\n\nconst items = computed(() => props.config.items);\n\nconst filter = (config: any) => filterFunction(mForm, config, props);\n\nconst changeHandler = () => emit('change', props.model);\nconst onAddDiffCount = () => emit('addDiffCount');\n</script>\n","<template>\n <TMagicCol v-show=\"display && config.type !== 'hidden'\" :span=\"span\">\n <Container\n :model=\"model\"\n :lastValues=\"lastValues\"\n :is-compare=\"isCompare\"\n :config=\"config\"\n :prop=\"prop\"\n :label-width=\"config.labelWidth || labelWidth\"\n :expand-more=\"expandMore\"\n :size=\"size\"\n :disabled=\"disabled\"\n @change=\"changeHandler\"\n @add-diff-count=\"onAddDiffCount\"\n ></Container>\n </TMagicCol>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, inject } from 'vue';\n\nimport { TMagicCol } from '@tmagic/design';\n\nimport { ChildConfig, FormState } from '../schema';\nimport { display as displayFunction } from '../utils/form';\n\nimport Container from './Container.vue';\n\ndefineOptions({\n name: 'MFormCol',\n});\n\nconst props = defineProps<{\n model: any;\n lastValues?: any;\n isCompare?: boolean;\n config: ChildConfig;\n labelWidth?: string;\n expandMore?: boolean;\n span?: number;\n size?: string;\n prop?: string;\n disabled?: boolean;\n}>();\n\nconst emit = defineEmits(['change', 'addDiffCount']);\n\nconst mForm = inject<FormState | undefined>('mForm');\nconst display = computed(() => displayFunction(mForm, props.config.display, props));\nconst changeHandler = () => emit('change', props.model);\nconst onAddDiffCount = () => emit('addDiffCount');\n</script>\n","<template>\n <TMagicRow :gutter=\"10\">\n <Col\n v-for=\"(col, index) in config.items\"\n :key=\"col[mForm?.keyProp || '__key'] ?? index\"\n :span=\"col.span || config.span || 24 / config.items.length\"\n :config=\"col\"\n :labelWidth=\"config.labelWidth || labelWidth\"\n :expandMore=\"expandMore\"\n :model=\"name ? model[name] : model\"\n :lastValues=\"name ? lastValues[name] : lastValues\"\n :is-compare=\"isCompare\"\n :prop=\"prop\"\n :size=\"size\"\n :disabled=\"disabled\"\n @change=\"changeHandler\"\n @add-diff-count=\"onAddDiffCount\"\n />\n </TMagicRow>\n</template>\n\n<script setup lang=\"ts\">\nimport { inject } from 'vue';\n\nimport { TMagicRow } from '@tmagic/design';\n\nimport { FormState, RowConfig } from '../schema';\n\nimport Col from './Col.vue';\n\ndefineOptions({\n name: 'MFormRow',\n});\n\nconst props = defineProps<{\n model: any;\n lastValues?: any;\n isCompare?: boolean;\n config: RowConfig;\n name: string;\n labelWidth?: string;\n prop?: string;\n size?: string;\n expandMore?: boolean;\n disabled?: boolean;\n}>();\n\nconst emit = defineEmits(['change', 'addDiffCount']);\n\nconst mForm = inject<FormState | undefined>('mForm');\n\nconst changeHandler = () => emit('change', props.name ? props.model[props.name] : props.model);\nconst onAddDiffCount = () => emit('addDiffCount');\n</script>\n","<template>\n <div>\n <TMagicSteps :active=\"active\" align-center :space=\"config.space\">\n <TMagicStep\n v-for=\"(item, index) in config.items\"\n :key=\"item.__key\"\n :title=\"item.title\"\n :active=\"active\"\n @click=\"stepClick(index)\"\n ></TMagicStep>\n </TMagicSteps>\n\n <template v-for=\"(step, index) in config.items\">\n <template v-for=\"item in step.items\">\n <Container\n v-if=\"item\"\n v-show=\"active - 1 === index\"\n :key=\"item[mForm?.keyProp || '__key']\"\n :config=\"item\"\n :model=\"step.name ? model[step.name] : model\"\n :lastValues=\"step.name ? lastValues[step.name] : lastValues\"\n :is-compare=\"isCompare\"\n :prop=\"`${step.name}`\"\n :size=\"size\"\n :disabled=\"disabled\"\n :label-width=\"config.labelWidth || labelWidth\"\n @change=\"changeHandler\"\n @addDiffCount=\"onAddDiffCount()\"\n ></Container>\n </template>\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { inject, ref, watchEffect } from 'vue';\n\nimport { TMagicStep, TMagicSteps } from '@tmagic/design';\n\nimport { FormState, StepConfig } from '../schema';\n\nimport Container from './Container.vue';\n\ndefineOptions({\n name: 'MFormStep',\n});\n\nconst props = withDefaults(\n defineProps<{\n model: any;\n lastValues?: any;\n isCompare?: boolean;\n config: StepConfig;\n stepActive?: number;\n labelWidth?: string;\n size?: string;\n disabled?: boolean;\n }>(),\n {\n stepActive: 1,\n },\n);\n\nconst emit = defineEmits(['change', 'addDiffCount']);\n\nconst mForm = inject<FormState | undefined>('mForm');\nconst active = ref(1);\n\nwatchEffect(() => {\n active.value = props.stepActive;\n});\n\nconst stepClick = (index: number) => {\n active.value = index + 1;\n mForm?.$emit('update:stepActive', active.value);\n};\n\nconst changeHandler = () => {\n emit('change', props.model);\n};\nconst onAddDiffCount = () => emit('addDiffCount');\n</script>\n","<template>\n <div class=\"m-fields-table-wrap\">\n <teleport to=\"body\" :disabled=\"!isFullscreen\">\n <div ref=\"mTable\" class=\"m-fields-table\" :class=\"{ 'm-fields-table-item-extra': config.itemExtra }\">\n <span v-if=\"config.extra\" style=\"color: rgba(0, 0, 0, 0.45)\" v-html=\"config.extra\"></span>\n <TMagicTooltip content=\"拖拽可排序\" placement=\"left-start\" :disabled=\"config.dropSort !== true\">\n <TMagicTable\n v-if=\"model[modelName]\"\n ref=\"tMagicTable\"\n style=\"width: 100%\"\n :row-key=\"config.rowKey || 'id'\"\n :data=\"data\"\n :lastData=\"lastData\"\n :border=\"config.border\"\n :max-height=\"config.maxHeight\"\n :default-expand-all=\"true\"\n :key=\"updateKey\"\n @select=\"selectHandle\"\n @sort-change=\"sortChange\"\n >\n <TMagicTableColumn v-if=\"config.itemExtra\" :fixed=\"'left'\" width=\"30\" type=\"expand\">\n <template v-slot=\"scope\">\n <span v-html=\"itemExtra(config.itemExtra, scope.$index)\" class=\"m-form-tip\"></span>\n </template>\n </TMagicTableColumn>\n\n <TMagicTableColumn\n label=\"操作\"\n :width=\"config.operateColWidth || 55\"\n align=\"center\"\n :fixed=\"config.fixed === false ? undefined : 'left'\"\n >\n <template v-slot=\"scope\">\n <slot name=\"operateCol\" :scope=\"scope\"></slot>\n <TMagicIcon\n v-show=\"showDelete(scope.$index + 1 + pagecontext * pagesize - 1)\"\n class=\"m-table-delete-icon\"\n @click=\"removeHandler(scope.$index + 1 + pagecontext * pagesize - 1)\"\n ><Delete\n /></TMagicIcon>\n </template>\n </TMagicTableColumn>\n\n <TMagicTableColumn v-if=\"sort && model[modelName] && model[modelName].length > 1\" label=\"排序\" width=\"60\">\n <template v-slot=\"scope\">\n <TMagicTooltip\n v-if=\"scope.$index + 1 + pagecontext * pagesize - 1 !== 0\"\n content=\"点击上移,双击置顶\"\n placement=\"top\"\n >\n <TMagicButton\n plain\n size=\"small\"\n type=\"primary\"\n :icon=\"ArrowUp\"\n :disabled=\"disabled\"\n link\n @click=\"upHandler(scope.$index + 1 + pagecontext * pagesize - 1)\"\n @dblclick=\"topHandler(scope.$index + 1 + pagecontext * pagesize - 1)\"\n ></TMagicButton>\n </TMagicTooltip>\n <TMagicTooltip\n v-if=\"scope.$index + 1 + pagecontext * pagesize - 1 !== model[modelName].length - 1\"\n content=\"点击下移,双击置底\"\n placement=\"top\"\n >\n <TMagicButton\n plain\n size=\"small\"\n type=\"primary\"\n :icon=\"ArrowDown\"\n :disabled=\"disabled\"\n link\n @click=\"downHandler(scope.$index + 1 + pagecontext * pagesize - 1)\"\n @dblclick=\"bottomHandler(scope.$index + 1 + pagecontext * pagesize - 1)\"\n ></TMagicButton>\n </TMagicTooltip>\n </template>\n </TMagicTableColumn>\n\n <TMagicTableColumn\n v-if=\"selection\"\n align=\"center\"\n header-align=\"center\"\n type=\"selection\"\n width=\"45\"\n ></TMagicTableColumn>\n\n <TMagicTableColumn width=\"60\" label=\"序号\" v-if=\"showIndex && config.showIndex\">\n <template v-slot=\"scope\">{{ scope.$index + 1 + pagecontext * pagesize }}</template>\n </TMagicTableColumn>\n\n <template v-for=\"(column, index) in config.items\">\n <TMagicTableColumn\n v-if=\"column.type !== 'hidden' && display(column.display)\"\n :prop=\"column.name\"\n :width=\"column.width\"\n :label=\"column.label\"\n :sortable=\"column.sortable\"\n :sort-orders=\"['ascending', 'descending']\"\n :key=\"column[mForm?.keyProp || '__key'] ?? index\"\n :class-name=\"config.dropSort === true ? 'el-table__column--dropable' : ''\"\n >\n <template #default=\"scope\">\n <Container\n v-if=\"scope.$index > -1\"\n labelWidth=\"0\"\n :disabled=\"disabled\"\n :prop=\"getProp(scope.$index)\"\n :rules=\"column.rules\"\n :config=\"makeConfig(column, scope.row)\"\n :model=\"scope.row\"\n :lastValues=\"lastData[scope.$index]\"\n :is-compare=\"isCompare\"\n :size=\"size\"\n @change=\"$emit('change', model[modelName])\"\n @addDiffCount=\"onAddDiffCount()\"\n ></Container>\n </template>\n </TMagicTableColumn>\n </template>\n </TMagicTable>\n </TMagicTooltip>\n <slot></slot>\n\n <div style=\"display: flex; justify-content: space-between; margin: 10px 0\">\n <TMagicButton v-if=\"addable\" size=\"small\" type=\"primary\" :disabled=\"disabled\" plain @click=\"newHandler()\"\n >新增一行</TMagicButton\n >\n\n <div style=\"display: flex\">\n <TMagicButton\n :icon=\"Grid\"\n size=\"small\"\n type=\"primary\"\n @click=\"toggleMode\"\n v-if=\"enableToggleMode && config.enableToggleMode !== false && !isFullscreen\"\n >展开配置</TMagicButton\n >\n <TMagicButton\n :icon=\"FullScreen\"\n size=\"small\"\n type=\"primary\"\n @click=\"toggleFullscreen\"\n v-if=\"config.enableFullscreen !== false\"\n >\n {{ isFullscreen ? '退出全屏' : '全屏编辑' }}\n </TMagicButton>\n <TMagicUpload\n v-if=\"importable\"\n style=\"display: inline-block\"\n ref=\"excelBtn\"\n action=\"/noop\"\n :disabled=\"disabled\"\n :on-change=\"excelHandler\"\n :auto-upload=\"false\"\n >\n <TMagicButton size=\"small\" type=\"success\" :disabled=\"disabled\" plain>导入EXCEL</TMagicButton>\n </TMagicUpload>\n <TMagicButton\n v-if=\"importable\"\n size=\"small\"\n type=\"warning\"\n :disabled=\"disabled\"\n plain\n @click=\"clearHandler()\"\n >清空</TMagicButton\n >\n </div>\n </div>\n\n <div class=\"bottom\" style=\"text-align: right\" v-if=\"config.pagination\">\n <TMagicPagination\n layout=\"total, sizes, prev, pager, next, jumper\"\n :hide-on-single-page=\"model[modelName].length < pagesize\"\n :current-page=\"pagecontext + 1\"\n :page-sizes=\"[pagesize, 60, 120, 300]\"\n :page-size=\"pagesize\"\n :total=\"model[modelName].length\"\n @size-change=\"handleSizeChange\"\n @current-change=\"handleCurrentChange\"\n >\n </TMagicPagination>\n </div>\n </div>\n </teleport>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, inject, onMounted, ref, toRefs, watchEffect } from 'vue';\nimport { ArrowDown, ArrowUp, Delete, FullScreen, Grid } from '@element-plus/icons-vue';\nimport { cloneDeep } from 'lodash-es';\nimport Sortable, { SortableEvent } from 'sortablejs';\n\nimport {\n TMagicButton,\n TMagicIcon,\n tMagicMessage,\n TMagicPagination,\n TMagicTable,\n TMagicTableColumn,\n TMagicTooltip,\n TMagicUpload,\n useZIndex,\n} from '@tmagic/design';\nimport { asyncLoadJs, sleep } from '@tmagic/utils';\n\nimport { ColumnConfig, FormState, SortProp, TableConfig } from '../schema';\nimport { display as displayFunc, initValue } from '../utils/form';\n\nimport Container from './Container.vue';\n\ndefineOptions({\n name: 'MFormTable',\n});\n\nconst props = withDefaults(\n defineProps<{\n model: any;\n lastValues?: any;\n isCompare?: boolean;\n config: TableConfig;\n name: string;\n prop?: string;\n labelWidth?: string;\n sort?: boolean;\n disabled?: boolean;\n sortKey?: string;\n text?: string;\n size?: string;\n enableToggleMode?: boolean;\n showIndex?: boolean;\n }>(),\n {\n prop: '',\n sortKey: '',\n enableToggleMode: true,\n showIndex: true,\n lastValues: () => ({}),\n isCompare: false,\n },\n);\n\nconst emit = defineEmits(['change', 'select', 'addDiffCount']);\n\nlet timer: any | null = null;\nconst mForm = inject<FormState | undefined>('mForm');\n\nconst { nextZIndex } = useZIndex();\n\nconst tMagicTable = ref<InstanceType<typeof TMagicTable>>();\nconst excelBtn = ref<InstanceType<typeof TMagicUpload>>();\nconst mTable = ref<HTMLDivElement>();\n\nconst pagesize = ref(10);\nconst pagecontext = ref(0);\nconst updateKey = ref(1);\nconst isFullscreen = ref(false);\n\nconst modelName = computed(() => props.name || props.config.name || '');\n\nconst data = computed(() =>\n props.config.pagination\n ? (props.model[modelName.value] || []).filter(\n (item: any, index: number) =>\n index >= pagecontext.value * pagesize.value && index + 1 <= (pagecontext.value + 1) * pagesize.value,\n )\n : props.model[modelName.value],\n);\n\nconst lastData = computed(() =>\n props.config.pagination\n ? (props.lastValues[modelName.value] || []).filter(\n (item: any, index: number) =>\n index >= pagecontext.value * pagesize.value && index + 1 <= (pagecontext.value + 1) * pagesize.value,\n )\n : props.lastValues[modelName.value] || [],\n);\n\nconst sortChange = ({ prop, order }: SortProp) => {\n if (order === 'ascending') {\n props.model[modelName.value] = props.model[modelName.value].sort((a: any, b: any) => a[prop] - b[prop]);\n } else if (order === 'descending') {\n props.model[modelName.value] = props.model[modelName.value].sort((a: any, b: any) => b[prop] - a[prop]);\n }\n};\n\nconst foreUpdate = () => {\n updateKey.value += 1;\n setTimeout(() => rowDrop());\n};\n\nconst swapArray = (index1: number, index2: number) => {\n props.model[modelName.value].splice(index1, 0, props.model[modelName.value].splice(index2, 1)[0]);\n\n if (props.sortKey) {\n for (let i = props.model[modelName.value].length - 1, v = 0; i >= 0; i--, v++) {\n props.model[modelName.value][v][props.sortKey] = i;\n }\n }\n mForm?.$emit('field-change', props.prop, props.model[modelName.value]);\n};\n\nconst rowDrop = () => {\n const tableEl = tMagicTable.value?.instance.$el;\n const tBodyEl = tableEl?.querySelector('.el-table__body > tbody');\n if (tBodyEl) {\n // eslint-disable-next-line prefer-destructuring\n const sortable = Sortable.create(tBodyEl, {\n onEnd: ({ newIndex, oldIndex }: SortableEvent) => {\n if (typeof newIndex === 'undefined') return;\n if (typeof oldIndex === 'undefined') return;\n swapArray(newIndex, oldIndex);\n emit('change', props.model[modelName.value]);\n foreUpdate();\n sortable.destroy();\n mForm?.$emit('field-change', props.prop, props.model[modelName.value]);\n sleep(1000).then(() => {\n const elTrs = tableEl.querySelectorAll('.el-table__body > tbody > tr');\n if (elTrs?.[newIndex]) {\n elTrs[newIndex].style.backgroundColor = 'rgba(243, 89, 59, 0.2)';\n sleep(1000).then(() => {\n elTrs[newIndex].style.backgroundColor = '';\n });\n }\n });\n },\n });\n }\n};\n\nconst newHandler = async (row?: any) => {\n if (props.config.max && props.model[modelName.value].length >= props.config.max) {\n tMagicMessage.error(`最多新增配置不能超过${props.config.max}条`);\n return;\n }\n\n if (typeof props.config.beforeAddRow === 'function') {\n const beforeCheckRes = props.config.beforeAddRow(mForm, {\n model: props.model[modelName.value],\n formValue: mForm?.values,\n prop: props.prop,\n });\n if (!beforeCheckRes) return;\n }\n\n const columns = props.config.items;\n const enumValues = props.config.enum || [];\n let enumV = [];\n const { length } = props.model[modelName.value];\n const key = props.config.key || 'id';\n let inputs: any = {};\n\n if (enumValues.length) {\n if (length >= enumValues.length) {\n return;\n }\n enumV = enumValues.filter((item) => {\n let i = 0;\n for (; i < length; i++) {\n if (item[key] === props.model[modelName.value][i][key]) {\n break;\n }\n }\n return i === length;\n });\n\n if (enumV.length > 0) {\n // eslint-disable-next-line prefer-destructuring\n inputs = enumV[0];\n }\n } else if (Array.isArray(row)) {\n columns.forEach((column, index) => {\n column.name && (inputs[column.name] = row[index]);\n });\n } else {\n if (typeof props.config.defaultAdd === 'function') {\n inputs = await props.config.defaultAdd(mForm, {\n model: props.model[modelName.value],\n formValue: mForm?.values,\n });\n } else if (props.config.defaultAdd) {\n inputs = props.config.defaultAdd;\n }\n\n inputs = await initValue(mForm, {\n config: columns,\n initValues: inputs,\n });\n }\n\n if (props.sortKey && length) {\n inputs[props.sortKey] = props.model[modelName.value][length - 1][props.sortKey] - 1;\n }\n\n props.model[modelName.value].push(inputs);\n emit('change', props.model[modelName.value]);\n};\n\nonMounted(() => {\n if (props.config.defautSort) {\n sortChange(props.config.defautSort);\n } else if (props.config.defaultSort) {\n sortChange(props.config.defaultSort);\n }\n\n if (props.sort && props.sortKey) {\n props.model[modelName.value].sort((a: any, b: any) => b[props.sortKey] - a[props.sortKey]);\n }\n});\n\nwatchEffect(() => {\n if (props.config.dropSort) {\n rowDrop();\n }\n});\n\nconst addable = computed(() => {\n if (!props.model[modelName.value].length) {\n return true;\n }\n if (typeof props.config.addable === 'function') {\n return props.config.addable(mForm, {\n model: props.model[modelName.value],\n formValue: mForm?.values,\n prop: props.prop,\n });\n }\n return typeof props.config.addable === 'undefined' ? true : props.config.addable;\n});\n\nconst selection = computed(() => {\n if (typeof props.config.selection === 'function') {\n return props.config.selection(mForm, { model: props.model[modelName.value] });\n }\n return props.config.selection;\n});\n\nconst importable = computed(() => {\n if (typeof props.config.importable === 'function') {\n return props.config.importable(mForm, {\n formValue: mForm?.values,\n model: props.model[modelName.value],\n });\n }\n return typeof props.config.importable === 'undefined' ? false : props.config.importable;\n});\n\nconst display = (fuc: any) => displayFunc(mForm, fuc, props);\n\nconst itemExtra = (fuc: any, index: number) => {\n if (typeof fuc === 'function') {\n return fuc(mForm, {\n values: mForm?.initValues,\n model: props.model,\n formValue: mForm ? mForm.values : props.model,\n prop: props.prop,\n index,\n });\n }\n\n return fuc;\n};\n\nconst removeHandler = (index: number) => {\n if (props.disabled) return;\n props.model[modelName.value].splice(index, 1);\n emit('change', props.model[modelName.value]);\n};\n\nconst selectHandle = (selection: any, row: any) => {\n if (typeof props.config.selection === 'string' && props.config.selection === 'single') {\n tMagicTable.value?.clearSelection();\n tMagicTable.value?.toggleRowSelection(row, true);\n }\n emit('select', selection, row);\n if (typeof props.config.onSelect === 'function') {\n props.config.onSelect(mForm, { selection, row, config: props.config });\n }\n};\n\nconst toggleRowSelection = (row: any, selected: boolean) => {\n tMagicTable.value?.toggleRowSelection.call(tMagicTable.value, row, selected);\n};\n\nconst makeConfig = (config: ColumnConfig, row: any) => {\n const newConfig = cloneDeep(config);\n if (typeof config.itemsFunction === 'function') {\n newConfig.items = config.itemsFunction(row);\n }\n delete newConfig.display;\n return newConfig;\n};\n\nconst upHandler = (index: number) => {\n if (timer) {\n clearTimeout(timer);\n }\n\n timer = setTimeout(() => {\n swapArray(index, index - 1);\n }, 300);\n};\n\nconst topHandler = (index: number) => {\n if (timer) {\n clearTimeout(timer);\n }\n\n // 首先判断当前元素需要上移几个位置,置底移动到数组的第一位\n const moveNum = index;\n\n // 循环出需要一个一个上移的次数\n for (let i = 0; i < moveNum; i++) {\n swapArray(index, index - 1);\n index -= 1;\n }\n};\n\nconst downHandler = (index: number) => {\n if (timer) {\n clearTimeout(timer);\n }\n\n timer = setTimeout(() => {\n swapArray(index, index + 1);\n }, 300);\n};\n\nconst bottomHandler = (index: number) => {\n if (timer) {\n clearTimeout(timer);\n }\n\n // 首先判断当前元素需要上移几个位置,置底移动到数组的第一位\n const moveNum = props.model[modelName.value].length - 1 - index;\n\n // 循环出需要一个一个上移的次数\n for (let i = 0; i < moveNum; i++) {\n swapArray(index, index + 1);\n index += 1;\n }\n};\n\n// 希望支持单行可控制是否显示删除按钮,不会影响现有逻辑\nconst showDelete = (index: number) => {\n const deleteFunc = props.config.delete;\n if (deleteFunc && typeof deleteFunc === 'function') {\n return deleteFunc(props.model[modelName.value], index, mForm?.values);\n }\n return true;\n};\n\nconst clearHandler = () => {\n const len = props.model[modelName.value].length;\n props.model[modelName.value].splice(0, len);\n mForm?.$emit('field-change', props.prop, props.model[modelName.value]);\n};\n\nconst excelHandler = async (file: any) => {\n if (!file?.raw) {\n return false;\n }\n\n if (!(globalThis as any).XLSX) {\n await asyncLoadJs('https://cdn.bootcdn.net/ajax/libs/xlsx/0.17.0/xlsx.full.min.js');\n }\n\n const reader = new FileReader();\n reader.onload = () => {\n const data = reader.result;\n const pdata = (globalThis as any).XLSX.read(data, { type: 'array' });\n pdata.SheetNames.forEach((sheetName: string) => {\n const arr = (globalThis as any).XLSX.utils.sheet_to_json(pdata.Sheets[sheetName], { header: 1 });\n if (arr?.[0]) {\n arr.forEach((row: any) => {\n newHandler(row);\n });\n }\n setTimeout(() => {\n excelBtn.value?.clearFiles();\n }, 300);\n });\n };\n reader.readAsArrayBuffer(file.raw);\n\n return false;\n};\n\nconst handleSizeChange = (val: number) => {\n pagesize.value = val;\n};\n\nconst handleCurrentChange = (val: number) => {\n pagecontext.value = val - 1;\n};\n\nconst toggleMode = () => {\n const calcLabelWidth = (label: string) => {\n if (!label) return '0px';\n const zhLength = label.match(/[^\\x00-\\xff]/g)?.length || 0;\n const chLength = label.length - zhLength;\n return `${Math.max(chLength * 8 + zhLength * 20, 80)}px`;\n };\n\n // 切换为groupList的形式\n props.config.type = 'groupList';\n props.config.enableToggleMode = true;\n props.config.tableItems = props.config.items;\n props.config.items =\n props.config.groupItems ||\n props.config.items.map((item: any) => {\n const text = item.text || item.label;\n const labelWidth = calcLabelWidth(text);\n return {\n ...item,\n text,\n labelWidth,\n span: item.span || 12,\n };\n });\n};\n\nconst toggleFullscreen = () => {\n if (!mTable.value) return;\n\n if (isFullscreen.value) {\n mTable.value.classList.remove('fixed');\n isFullscreen.value = false;\n } else {\n mTable.value.classList.add('fixed');\n mTable.value.style.zIndex = `${nextZIndex()}`;\n isFullscreen.value = true;\n }\n};\n\nconst getProp = (index: number) => {\n const { prop } = toRefs(props);\n return `${prop.value}${prop.value ? '.' : ''}${index + 1 + pagecontext.value * pagesize.value - 1}`;\n};\n\nconst onAddDiffCount = () => emit('addDiffCount');\n\ndefineExpose({\n toggleRowSelection,\n});\n</script>\n","<template>\n <component\n v-model=\"activeTabName\"\n v-bind=\"\n tabsComponent?.props({\n type: config.tabType,\n editable: config.editable || false,\n tabPosition: config.tabPosition || 'top',\n }) || {}\n \"\n :is=\"tabsComponent?.component || 'el-tabs'\"\n :class=\"`tmagic-design-tabs ${config.dynamic ? 'magic-form-dynamic-tab' : 'magic-form-tab'}`\"\n @tab-click=\"tabClickHandler\"\n @tab-add=\"onTabAdd\"\n @tab-remove=\"onTabRemove\"\n >\n <component\n v-for=\"(tab, tabIndex) in tabs\"\n :is=\"tabPaneComponent?.component || 'el-tab-pane'\"\n :key=\"tab[mForm?.keyProp || '__key'] ?? tabIndex\"\n v-bind=\"\n tabPaneComponent?.props({ name: filter(tab.status) || tabIndex.toString(), lazy: tab.lazy || false }) || {}\n \"\n >\n <template #label>\n <span>\n {{ filter(tab.title)\n }}<TMagicBadge\n :hidden=\"!diffCount[tabIndex]\"\n :value=\"diffCount[tabIndex]\"\n class=\"diff-count-badge\"\n ></TMagicBadge>\n </span>\n </template>\n <Container\n v-for=\"item in tabItems(tab)\"\n :key=\"item[mForm?.keyProp || '__key']\"\n :config=\"item\"\n :disabled=\"disabled\"\n :model=\"\n config.dynamic\n ? (name ? model[name] : model)[tabIndex]\n : tab.name\n ? (name ? model[name] : model)[tab.name]\n : name\n ? model[name]\n : model\n \"\n :last-values=\"\n isEmpty(lastValues)\n ? {}\n : config.dynamic\n ? (name ? lastValues[name] : lastValues)[tabIndex]\n : tab.name\n ? (name ? lastValues[name] : lastValues)[tab.name]\n : name\n ? lastValues[name]\n : lastValues\n \"\n :is-compare=\"isCompare\"\n :prop=\"config.dynamic ? `${prop}${prop ? '.' : ''}${String(tabIndex)}` : prop\"\n :size=\"size\"\n :label-width=\"tab.labelWidth || labelWidth\"\n :expand-more=\"expandMore\"\n @change=\"changeHandler\"\n @addDiffCount=\"onAddDiffCount(tabIndex)\"\n ></Container>\n </component>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, inject, ref, watchEffect } from 'vue';\nimport { cloneDeep, isEmpty } from 'lodash-es';\n\nimport { getConfig, TMagicBadge } from '@tmagic/design';\n\nimport { FormState, TabConfig, TabPaneConfig } from '../schema';\nimport { display as displayFunc, filterFunction } from '../utils/form';\n\nimport Container from './Container.vue';\n\ndefineOptions({\n name: 'MFormTabs',\n});\n\ntype DiffCount = {\n [tabIndex: number]: number;\n};\n\nconst tabPaneComponent = getConfig('components')?.tabPane;\nconst tabsComponent = getConfig('components')?.tabs;\n\nconst getActive = (mForm: FormState | undefined, props: any, activeTabName: string) => {\n const { config, model, prop } = props;\n const { active } = config;\n\n if (typeof active === 'function') return active(mForm, { model, formValue: mForm?.values, prop });\n if (+activeTabName >= props.config.items.length) return '0';\n if (typeof active !== 'undefined') return active;\n\n return '0';\n};\n\nconst tabClick = (mForm: FormState | undefined, tab: any, props: any) => {\n const { config, model, prop } = props;\n\n // 兼容vue2的element-ui\n tab.name = tab.paneName;\n\n if (typeof config.onTabClick === 'function') {\n config.onTabClick(mForm, tab, { model, formValue: mForm?.values, prop, config });\n }\n\n const tabConfig = config.items.find((item: TabPaneConfig) => tab.name === item.status);\n if (tabConfig && typeof tabConfig.onTabClick === 'function') {\n tabConfig.onTabClick(mForm, tab, { model, formValue: mForm?.values, prop, config });\n }\n};\n\nconst props = withDefaults(\n defineProps<{\n model: any;\n lastValues?: any;\n isCompare?: boolean;\n config: TabConfig;\n name: string;\n size?: string;\n labelWidth?: string;\n prop?: string;\n expandMore?: boolean;\n disabled?: boolean;\n }>(),\n {\n lastValues: () => ({}),\n isCompare: false,\n },\n);\n\nconst emit = defineEmits(['change', 'addDiffCount']);\n\nconst mForm = inject<FormState | undefined>('mForm');\nconst activeTabName = ref(getActive(mForm, props, ''));\nconst diffCount = ref<DiffCount>({});\n\nconst tabs = computed(() => {\n if (props.config.dynamic) {\n if (!props.config.name) throw new Error('dynamic tab 必须配置name');\n return props.model[props.config.name] || [];\n }\n return props.config.items.filter((item) => displayFunc(mForm, item.display, props));\n});\n\nconst filter = (config: any) => filterFunction(mForm, config, props);\n\nwatchEffect(() => {\n if (typeof props.config.activeChange === 'function') {\n props.config.activeChange(mForm, activeTabName.value, {\n model: props.model,\n prop: props.prop,\n });\n }\n});\n\nconst tabItems = (tab: TabPaneConfig) => (props.config.dynamic ? props.config.items : tab.items);\n\nconst tabClickHandler = (tab: any) => tabClick(mForm, tab, props);\n\nconst onTabAdd = () => {\n if (!props.config.name) throw new Error('dynamic tab 必须配置name');\n\n if (typeof props.config.onTabAdd === 'function') {\n props.config.onTabAdd(mForm, {\n model: props.model,\n prop: props.prop,\n config: props.config,\n });\n } else if (tabs.value.length > 0) {\n const newObj = cloneDeep(tabs.value[0]);\n newObj.title = `标签${tabs.value.length + 1}`;\n props.model[props.config.name].push(newObj);\n }\n emit('change', props.model);\n mForm?.$emit('field-change', props.prop, props.model[props.config.name]);\n};\n\nconst onTabRemove = (tabName: string) => {\n if (!props.config.name) throw new Error('dynamic tab 必须配置name');\n\n if (typeof props.config.onTabRemove === 'function') {\n props.config.onTabRemove(mForm, tabName, {\n model: props.model,\n prop: props.prop,\n config: props.config,\n });\n } else {\n props.model[props.config.name].splice(+tabName, 1);\n\n // 防止删除后没有选中的问题\n if (tabName < activeTabName.value || activeTabName.value >= props.model[props.config.name].length) {\n activeTabName.value = (+activeTabName.value - 1).toString();\n tabClick(mForm, { name: activeTabName.value }, props);\n }\n }\n emit('change', props.model);\n mForm?.$emit('field-change', props.prop, props.model[props.config.name]);\n};\n\nconst changeHandler = () => {\n emit('change', props.model);\n if (typeof props.config.onChange === 'function') {\n props.config.onChange(mForm, { model: props.model, prop: props.prop, config: props.config });\n }\n};\n\n// 在tabs组件中收集事件触发次数,即该tab下的差异数\nconst onAddDiffCount = (tabIndex: number) => {\n if (!diffCount.value[tabIndex]) {\n diffCount.value[tabIndex] = 1;\n } else {\n diffCount.value[tabIndex] += 1;\n }\n // 继续抛出给更高层级的组件\n emit('addDiffCount');\n};\n</script>\n","/*\n * Tencent is pleased to support the open source community by making TMagicEditor available.\n *\n * Copyright (C) 2023 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nlet $MAGIC_FORM = {} as any;\n\nconst setConfig = (option: any): void => {\n $MAGIC_FORM = option;\n};\n\nconst getConfig = <T = unknown>(key: string): T => $MAGIC_FORM[key];\n\nexport { getConfig, setConfig };\n","/*\n * Tencent is pleased to support the open source community by making TMagicEditor available.\n *\n * Copyright (C) 2023 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ComponentInternalInstance, getCurrentInstance, inject, watch } from 'vue';\n\nimport { FormState } from '../schema';\n\nexport const useAddField = (prop?: string) => {\n if (!prop) return;\n const mForm = inject<FormState | null>('mForm');\n const instance = getCurrentInstance() as ComponentInternalInstance;\n watch(\n () => instance?.proxy,\n (vm) => {\n if (vm) {\n mForm?.setField(prop, vm);\n } else {\n mForm?.deleteField(prop);\n }\n },\n {\n immediate: true,\n },\n );\n};\n","<template>\n <TMagicCascader\n v-model=\"model[name]\"\n ref=\"tMagicCascader\"\n style=\"width: 100%\"\n clearable\n filterable\n :size=\"size\"\n :placeholder=\"config.placeholder\"\n :disabled=\"disabled\"\n :options=\"options\"\n :props=\"{\n multiple: config.multiple ?? false,\n emitPath: config.emitPath ?? true,\n checkStrictly: config.checkStrictly ?? false,\n }\"\n @change=\"changeHandler\"\n ></TMagicCascader>\n</template>\n\n<script setup lang=\"ts\">\nimport { inject, ref, watchEffect } from 'vue';\n\nimport { TMagicCascader } from '@tmagic/design';\n\nimport type { CascaderConfig, CascaderOption, FieldProps, FormState } from '../schema';\nimport { getConfig } from '../utils/config';\nimport { useAddField } from '../utils/useAddField';\n\ndefineOptions({\n name: 'MFormCascader',\n});\n\nconst props = defineProps<FieldProps<CascaderConfig>>();\n\nconst emit = defineEmits(['change']);\n\nconst mForm = inject<FormState | null>('mForm');\n\nuseAddField(props.prop);\n\nconst requestFunc = getConfig('request') as Function;\n\nconst tMagicCascader = ref<InstanceType<typeof TMagicCascader>>();\n\nconst options = ref<CascaderOption[]>([]);\nconst remoteData = ref<any>(null);\n\nconst setRemoteOptions = async function () {\n const { config } = props;\n const { option } = config;\n if (!option) return;\n let { body } = option;\n\n const postOptions: Record<string, any> = {\n url: option.url,\n cache: option.cache,\n timeout: option.timeout,\n data: {},\n };\n\n if (body && mForm) {\n if (typeof body === 'function' && props.model && mForm) {\n body = body(mForm, {\n model: props.model,\n formValue: mForm.values,\n formValues: mForm.values,\n config: props.config,\n });\n }\n postOptions.data = body;\n }\n\n const res = await requestFunc(postOptions);\n\n remoteData.value = res[option.root];\n if (remoteData.value && typeof option?.item === 'function') {\n options.value = option.item(res[option.root]);\n }\n};\n\n// 初始化\nif (typeof props.config.options === 'function' && props.model && mForm) {\n watchEffect(\n () => (options.value = (props.config.options as Function)(mForm, { model: props.model, formValues: mForm.values })),\n );\n} else if (!props.config.options?.length || props.config.remote) {\n Promise.resolve(setRemoteOptions());\n} else if (Array.isArray(props.config.options)) {\n watchEffect(() => {\n options.value = props.config.options as CascaderOption[];\n });\n}\n\nconst changeHandler = (value: any) => {\n if (!tMagicCascader.value) return;\n tMagicCascader.value.setQuery('');\n tMagicCascader.value.setPreviousQuery(null);\n emit('change', value);\n};\n</script>\n","<template>\n <TMagicCheckbox\n v-model=\"model[name]\"\n :size=\"size\"\n :trueLabel=\"activeValue\"\n :falseLabel=\"inactiveValue\"\n :disabled=\"disabled\"\n @change=\"changeHandler\"\n >{{ config.text }}</TMagicCheckbox\n >\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nimport { TMagicCheckbox } from '@tmagic/design';\n\nimport type { CheckboxConfig, FieldProps } from '../schema';\nimport { useAddField } from '../utils/useAddField';\n\ndefineOptions({\n name: 'MFormCheckbox',\n});\n\nconst props = defineProps<FieldProps<CheckboxConfig>>();\n\nconst emit = defineEmits(['change']);\n\nuseAddField(props.prop);\n\nconst activeValue = computed(() => {\n if (typeof props.config.activeValue === 'undefined') {\n if (props.config.filter === 'number') {\n return 1;\n }\n } else {\n return props.config.activeValue;\n }\n\n return undefined;\n});\n\nconst inactiveValue = computed(() => {\n if (typeof props.config.inactiveValue === 'undefined') {\n if (props.config.filter === 'number') {\n return 0;\n }\n } else {\n return props.config.inactiveValue;\n }\n\n return undefined;\n});\n\nconst changeHandler = (value: number | boolean) => {\n emit('change', value);\n};\n</script>\n","<template>\n <TMagicCheckboxGroup v-model=\"model[name]\" :size=\"size\" :disabled=\"disabled\" @change=\"changeHandler\">\n <TMagicCheckbox\n v-for=\"option in options\"\n :label=\"option.value\"\n :value=\"option.value\"\n :key=\"option.value\"\n :disabled=\"option.disabled\"\n >{{ option.text }}\n </TMagicCheckbox>\n </TMagicCheckboxGroup>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject } from 'vue';\n\nimport { TMagicCheckbox, TMagicCheckboxGroup } from '@tmagic/design';\n\nimport type { CheckboxGroupConfig, FieldProps, FormState } from '../schema';\nimport { filterFunction } from '../utils/form';\nimport { useAddField } from '../utils/useAddField';\n\ndefineOptions({\n name: 'MFormCheckGroup',\n});\n\nconst props = defineProps<FieldProps<CheckboxGroupConfig>>();\n\nconst emit = defineEmits(['change']);\n\nuseAddField(props.prop);\n\n// 初始化选项\nif (props.model && !props.model[props.name]) {\n props.model[props.name] = [];\n}\n\nconst changeHandler = (v: Array<string | number | boolean>) => {\n emit('change', v);\n};\n\nconst mForm = inject<FormState | undefined>('mForm');\nconst options = computed(() => {\n if (Array.isArray(props.config.options)) return props.config.options;\n if (typeof props.config.options === 'function') return filterFunction(mForm, props.config.options, props);\n return [];\n});\n</script>\n","<template>\n <TMagicColorPicker\n v-model=\"model[name]\"\n :size=\"size\"\n :disabled=\"disabled\"\n :showAlpha=\"true\"\n @change=\"changeHandler\"\n ></TMagicColorPicker>\n</template>\n\n<script lang=\"ts\" setup>\nimport { TMagicColorPicker } from '@tmagic/design';\n\nimport type { ColorPickConfig, FieldProps } from '../schema';\nimport { useAddField } from '../utils/useAddField';\n\ndefineOptions({\n name: 'MFormColorPicker',\n});\n\nconst props = defineProps<FieldProps<ColorPickConfig>>();\n\nconst emit = defineEmits<{\n change: [value: string];\n}>();\n\nuseAddField(props.prop);\n\nconst changeHandler = (value: string) => emit('change', value);\n</script>\n","<template>\n <TMagicDatePicker\n v-model=\"model[name]\"\n type=\"date\"\n :size=\"size\"\n :placeholder=\"config.placeholder\"\n :disabled=\"disabled\"\n :format=\"config.format\"\n :value-format=\"config.valueFormat || 'YYYY/MM/DD HH:mm:ss'\"\n @change=\"changeHandler\"\n ></TMagicDatePicker>\n</template>\n\n<script lang=\"ts\" setup>\nimport { TMagicDatePicker } from '@tmagic/design';\nimport { datetimeFormatter } from '@tmagic/utils';\n\nimport type { DateConfig, FieldProps } from '../schema';\nimport { useAddField } from '../utils/useAddField';\n\ndefineOptions({\n name: 'MFormDate',\n});\n\nconst props = defineProps<FieldProps<DateConfig>>();\n\nconst emit = defineEmits<{\n change: [value: string];\n}>();\n\nuseAddField(props.prop);\n\nprops.model[props.name] = datetimeFormatter(props.model[props.name], '');\n\nconst changeHandler = (v: string) => {\n emit('change', v);\n};\n</script>\n","<template>\n <TMagicDatePicker\n v-model=\"value\"\n type=\"datetimerange\"\n range-separator=\"-\"\n start-placeholder=\"开始日期\"\n end-placeholder=\"结束日期\"\n :size=\"size\"\n :unlink-panels=\"true\"\n :disabled=\"disabled\"\n :default-time=\"config.defaultTime\"\n @change=\"changeHandler\"\n ></TMagicDatePicker>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, watch } from 'vue';\n\nimport { TMagicDatePicker } from '@tmagic/design';\nimport { datetimeFormatter } from '@tmagic/utils';\n\nimport type { DaterangeConfig, FieldProps } from '../schema';\nimport { useAddField } from '../utils/useAddField';\n\ndefineOptions({\n name: 'MFormDateRange',\n});\n\nconst props = defineProps<FieldProps<DaterangeConfig>>();\n\nconst emit = defineEmits(['change']);\n\nuseAddField(props.prop);\n\n// eslint-disable-next-line vue/no-setup-props-destructure\nconst { names } = props.config;\nconst value = ref<(Date | undefined)[] | null>([]);\n\nif (props.model !== undefined) {\n if (names?.length) {\n watch(\n [() => props.model[names[0]], () => props.model[names[1]]],\n ([start, end], [preStart, preEnd]) => {\n if (!value.value) {\n value.value = [];\n }\n if (!start || !end) value.value = [];\n if (start !== preStart) value.value[0] = new Date(start);\n if (end !== preEnd) value.value[1] = new Date(end);\n },\n {\n immediate: true,\n },\n );\n } else if (props.name && props.model[props.name]) {\n watch(\n () => props.model[props.name],\n (start, preStart) => {\n if (start !== preStart) value.value = start.map((item: string) => (item ? new Date(item) : undefined));\n },\n {\n immediate: true,\n },\n );\n }\n}\n\nconst setValue = (v: Date[] | Date) => {\n names?.forEach((item, index) => {\n if (!props.model) {\n return;\n }\n if (Array.isArray(v)) {\n props.model[item] = datetimeFormatter(v[index]?.toString(), '');\n } else {\n props.model[item] = undefined;\n }\n });\n};\n\nconst changeHandler = (v: Date[]) => {\n const value = v || [];\n\n if (props.name) {\n emit(\n 'change',\n value.map((item?: Date) => {\n if (item) return datetimeFormatter(item, '');\n return undefined;\n }),\n );\n } else {\n if (names?.length) {\n setValue(value);\n }\n emit('change', value);\n }\n};\n</script>\n","<template>\n <TMagicDatePicker\n v-model=\"model[name]\"\n popper-class=\"magic-datetime-picker-popper\"\n type=\"datetime\"\n :size=\"size\"\n :placeholder=\"config.placeholder\"\n :disabled=\"disabled\"\n :format=\"config.format || 'YYYY/MM/DD HH:mm:ss'\"\n :value-format=\"config.valueFormat || 'YYYY/MM/DD HH:mm:ss'\"\n :default-time=\"config.defaultTime\"\n @change=\"changeHandler\"\n ></TMagicDatePicker>\n</template>\n\n<script lang=\"ts\" setup>\nimport { TMagicDatePicker } from '@tmagic/design';\nimport { datetimeFormatter } from '@tmagic/utils';\n\nimport type { DateTimeConfig, FieldProps } from '../schema';\nimport { useAddField } from '../utils/useAddField';\n\ndefineOptions({\n name: 'MFormDateTime',\n});\n\nconst props = defineProps<FieldProps<DateTimeConfig>>();\n\nconst emit = defineEmits<{\n change: [value: string];\n}>();\n\nuseAddField(props.prop);\n\nconst value = props.model?.[props.name].toString();\nif (props.model) {\n if (value === 'Invalid Date') {\n props.model[props.name] = '';\n } else {\n props.model[props.name] = datetimeFormatter(props.model[props.name], '', props.config.valueFormat);\n }\n}\n\nconst changeHandler = (v: string) => {\n emit('change', v);\n};\n</script>\n","<template>\n <span v-if=\"model\">{{ model[name] }}</span>\n</template>\n\n<script setup lang=\"ts\">\nimport type { DisplayConfig, FieldProps } from '../schema';\nimport { useAddField } from '../utils/useAddField';\n\ndefineOptions({\n name: 'MFormDisplay',\n});\n\nconst props = defineProps<FieldProps<DisplayConfig>>();\n\nif (props.config.initValue && props.model) {\n // eslint-disable-next-line vue/no-setup-props-destructure\n props.model[props.name] = props.config.initValue;\n}\n\nuseAddField(props.prop);\n</script>\n","<template>\n <div class=\"m-fields-dynamic-field\">\n <TMagicForm size=\"small\">\n <TMagicFormItem v-for=\"key in Object.keys(fieldMap.value)\" :key=\"key\" :label=\"fieldLabelMap.value[key]\">\n <TMagicInput\n v-model=\"fieldMap.value[key]\"\n :placeholder=\"fieldLabelMap.value[key]\"\n @change=\"inputChangeHandler(key)\"\n ></TMagicInput>\n </TMagicFormItem>\n </TMagicForm>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\n/**\n * 动态表单,目前只支持input类型字段\n * inputType: 'dynamic-field',\n * text: '动态表单',\n * dynamicKey: 'keyname', 如果model[dynamicKey]变化,表单字段变化\n * returnFields(config,model,request): 函数,返回字段列表[{name:'',label:'',defaultValue:''}]\n *\n * 特别注意!!!field的上一级必须extensible: true,才能保存未声明的字段\n */\n\nimport { onBeforeUnmount, reactive, watch } from 'vue';\n\nimport { TMagicForm, TMagicFormItem, TMagicInput } from '@tmagic/design';\n\nimport type { DynamicFieldConfig, FieldProps } from '../schema';\nimport { getConfig } from '../utils/config';\nimport { useAddField } from '../utils/useAddField';\n\ndefineOptions({\n name: 'MFormDynamicField',\n});\n\nconst props = defineProps<FieldProps<DynamicFieldConfig>>();\n\nconst emit = defineEmits(['change']);\n\nuseAddField(props.prop);\n\nconst request = getConfig<Function>('request');\nconst fieldMap = reactive<{ [key: string]: any }>({\n value: {},\n});\nconst fieldLabelMap = reactive<{ [key: string]: any }>({\n value: {},\n});\n\nconst changeFieldMap = async () => {\n if (typeof props.config.returnFields !== 'function' || !props.model) return;\n const fields = await props.config.returnFields(props.config, props.model, request);\n fieldMap.value = {};\n fieldLabelMap.value = {};\n fields.forEach((v) => {\n if (typeof v !== 'object' || v.name === undefined) return;\n let oldVal = props.model?.[v.name] || '';\n if (!oldVal && v.defaultValue !== undefined) {\n oldVal = v.defaultValue;\n emit('change', oldVal, v.name);\n }\n fieldMap.value[v.name] = oldVal;\n fieldLabelMap.value[v.name] = v.label || '';\n });\n};\n\nconst unwatch = watch(\n () => props.model?.[props.config.dynamicKey],\n (val) => {\n if (val !== '') {\n changeFieldMap();\n }\n },\n {\n immediate: true,\n },\n);\n\nonBeforeUnmount(() => {\n if (typeof unwatch === 'function') {\n unwatch();\n }\n});\n\nconst inputChangeHandler = (key: string) => {\n emit('change', fieldMap.value[key], key);\n};\n</script>\n","<template>\n <input v-if=\"model\" v-model=\"model[name]\" type=\"hidden\" />\n</template>\n\n<script setup lang=\"ts\">\nimport type { FieldProps, HiddenConfig } from '../schema';\nimport { useAddField } from '../utils/useAddField';\n\ndefineOptions({\n name: 'MFormHidden',\n});\n\nconst props = defineProps<FieldProps<HiddenConfig>>();\n\nuseAddField(props.prop);\n</script>\n","<template>\n <TMagicForm\n class=\"m-form\"\n ref=\"tMagicForm\"\n :model=\"values\"\n :label-width=\"labelWidth\"\n :style=\"`height: ${height}`\"\n :inline=\"inline\"\n :label-position=\"labelPosition\"\n >\n <template v-if=\"initialized && Array.isArray(config)\">\n <Container\n v-for=\"(item, index) in config\"\n :disabled=\"disabled\"\n :key=\"item[keyProp] ?? index\"\n :config=\"item\"\n :model=\"values\"\n :last-values=\"lastValuesProcessed\"\n :is-compare=\"isCompare\"\n :label-width=\"item.labelWidth || labelWidth\"\n :step-active=\"stepActive\"\n :size=\"size\"\n @change=\"changeHandler\"\n ></Container>\n </template>\n </TMagicForm>\n</template>\n\n<script setup lang=\"ts\">\nimport { provide, reactive, ref, toRaw, watch, watchEffect } from 'vue';\nimport { cloneDeep, isEqual } from 'lodash-es';\n\nimport { TMagicForm } from '@tmagic/design';\n\nimport Container from './containers/Container.vue';\nimport { getConfig } from './utils/config';\nimport { initValue } from './utils/form';\nimport type { FormConfig, FormState, FormValue, ValidateError } from './schema';\n\ndefineOptions({\n name: 'MForm',\n});\n\nconst props = withDefaults(\n defineProps<{\n /** 表单配置 */\n config: FormConfig;\n /** 表单值 */\n initValues: Record<string, any>;\n /** 需对比的值(开启对比模式时传入) */\n lastValues?: Record<string, any>;\n /** 是否开启对比模式 */\n isCompare?: boolean;\n parentValues?: Record<string, any>;\n labelWidth?: string;\n disabled?: boolean;\n height?: string;\n stepActive?: string | number;\n size?: 'small' | 'default' | 'large';\n inline?: boolean;\n labelPosition?: string;\n keyProp?: string;\n popperClass?: string;\n extendState?: (state: FormState) => Record<string, any> | Promise<Record<string, any>>;\n }>(),\n {\n config: () => [],\n initValues: () => ({}),\n lastValues: () => ({}),\n isCompare: false,\n parentValues: () => ({}),\n labelWidth: '200px',\n disabled: false,\n height: 'auto',\n stepActive: 1,\n inline: false,\n labelPosition: 'right',\n keyProp: '__key',\n },\n);\n\nconst emit = defineEmits(['change', 'error', 'field-input', 'field-change']);\n\nconst tMagicForm = ref<InstanceType<typeof TMagicForm>>();\nconst initialized = ref(false);\nconst values = ref<FormValue>({});\nconst lastValuesProcessed = ref<FormValue>({});\nconst fields = new Map<string, any>();\n\nconst requestFuc = getConfig('request') as Function;\n\nconst formState: FormState = reactive<FormState>({\n keyProp: props.keyProp,\n popperClass: props.popperClass,\n config: props.config,\n initValues: props.initValues,\n isCompare: props.isCompare,\n lastValues: props.lastValues,\n parentValues: props.parentValues,\n values,\n lastValuesProcessed,\n $emit: emit as (event: string, ...args: any[]) => void,\n fields,\n setField: (prop: string, field: any) => fields.set(prop, field),\n getField: (prop: string) => fields.get(prop),\n deleteField: (prop: string) => fields.delete(prop),\n post: (options: any) => {\n if (requestFuc) {\n return requestFuc({\n ...options,\n method: 'POST',\n });\n }\n },\n});\n\nwatchEffect(async () => {\n formState.initValues = props.initValues;\n formState.lastValues = props.lastValues;\n formState.isCompare = props.isCompare;\n formState.config = props.config;\n formState.keyProp = props.keyProp;\n formState.popperClass = props.popperClass;\n formState.parentValues = props.parentValues;\n\n if (typeof props.extendState === 'function') {\n const state = (await props.extendState(formState)) || {};\n Object.entries(state).forEach(([key, value]) => {\n formState[key] = value;\n });\n }\n});\n\nprovide('mForm', formState);\n\nwatch(\n [() => props.config, () => props.initValues],\n ([config], [preConfig]) => {\n if (!isEqual(toRaw(config), toRaw(preConfig))) {\n initialized.value = false;\n }\n\n initValue(formState, {\n initValues: props.initValues,\n config: props.config,\n }).then((value) => {\n values.value = value;\n // 非对比模式,初始化完成\n initialized.value = !props.isCompare;\n });\n\n if (props.isCompare) {\n // 对比模式下初始化待对比的表单值\n initValue(formState, {\n initValues: props.lastValues,\n config: props.config,\n }).then((value) => {\n lastValuesProcessed.value = value;\n initialized.value = true;\n });\n }\n },\n { immediate: true },\n);\n\nconst changeHandler = () => {\n emit('change', values.value);\n};\n\ndefineExpose({\n values,\n lastValuesProcessed,\n formState,\n initialized,\n\n changeHandler,\n\n resetForm: () => tMagicForm.value?.resetFields(),\n\n submitForm: async (native?: boolean): Promise<any> => {\n try {\n await tMagicForm.value?.validate();\n return native ? values.value : cloneDeep(toRaw(values.value));\n } catch (invalidFields: any) {\n emit('error', invalidFields);\n\n const error: string[] = [];\n\n Object.entries(invalidFields).forEach(([, ValidateError]) => {\n (ValidateError as ValidateError[]).forEach(({ field, message }) => {\n if (field && message) error.push(`${field} -> ${message}`);\n if (field && !message) error.push(`${field} -> 出现错误`);\n if (!field && message) error.push(`${message}`);\n });\n });\n\n throw new Error(error.join('<br>'));\n }\n },\n});\n</script>\n","<template>\n <TMagicDialog\n v-model=\"dialogVisible\"\n class=\"m-form-dialog\"\n top=\"20px\"\n append-to-body\n :title=\"title\"\n :width=\"width\"\n :zIndex=\"zIndex\"\n :fullscreen=\"fullscreen\"\n :close-on-click-modal=\"false\"\n @close=\"closeHandler\"\n >\n <div\n v-if=\"dialogVisible\"\n class=\"m-dialog-body\"\n :style=\"`max-height: ${bodyHeight}; overflow-y: auto; overflow-x: hidden;`\"\n >\n <Form\n v-model=\"stepActive\"\n ref=\"form\"\n :size=\"size\"\n :disabled=\"disabled\"\n :config=\"config\"\n :init-values=\"values\"\n :parent-values=\"parentValues\"\n :label-width=\"labelWidth\"\n :label-position=\"labelPosition\"\n :inline=\"inline\"\n @change=\"changeHandler\"\n ></Form>\n <slot></slot>\n </div>\n\n <template #footer>\n <TMagicRow class=\"dialog-footer\">\n <TMagicCol :span=\"12\" style=\"text-align: left\">\n <div style=\"min-height: 1px\">\n <slot name=\"left\"></slot>\n </div>\n </TMagicCol>\n <TMagicCol :span=\"12\">\n <slot name=\"footer\">\n <TMagicButton @click=\"cancel\" size=\"small\">取 消</TMagicButton>\n <TMagicButton v-if=\"hasStep && stepActive > 1\" type=\"info\" size=\"small\" @click=\"preStep\"\n >上一步</TMagicButton\n >\n <TMagicButton v-if=\"hasStep && stepCount > stepActive\" type=\"info\" size=\"small\" @click=\"nextStep\"\n >下一步</TMagicButton\n >\n <TMagicButton v-else type=\"primary\" size=\"small\" :disabled=\"disabled\" :loading=\"saveFetch\" @click=\"save\">{{\n confirmText\n }}</TMagicButton>\n </slot>\n </TMagicCol>\n </TMagicRow>\n </template>\n </TMagicDialog>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref } from 'vue';\n\nimport { TMagicButton, TMagicCol, TMagicDialog, TMagicRow } from '@tmagic/design';\n\nimport Form from './Form.vue';\nimport { FormConfig, StepConfig } from './schema';\n\ndefineOptions({\n name: 'MFormDialog',\n});\n\nconst props = withDefaults(\n defineProps<{\n config?: FormConfig;\n values?: Object;\n parentValues?: Object;\n width?: string | number;\n labelWidth?: string;\n fullscreen?: boolean;\n disabled?: boolean;\n title?: string;\n inline?: boolean;\n labelPosition?: string;\n zIndex?: number;\n size?: 'small' | 'default' | 'large';\n confirmText?: string;\n }>(),\n {\n config: () => [],\n values: () => ({}),\n confirmText: '确定',\n },\n);\n\nconst emit = defineEmits(['close', 'submit', 'error', 'change']);\n\nconst form = ref<InstanceType<typeof Form>>();\nconst dialogVisible = ref(false);\nconst saveFetch = ref(false);\nconst stepActive = ref(1);\nconst bodyHeight = ref(`${document.body.clientHeight - 194}px`);\n\nconst stepCount = computed(() => {\n const { length } = props.config;\n for (let index = 0; index < length; index++) {\n if (props.config[index].type === 'step') {\n return (props.config[index] as StepConfig).items.length;\n }\n }\n return 0;\n});\n\nconst hasStep = computed(() => {\n const { length } = props.config;\n for (let index = 0; index < length; index++) {\n if (props.config[index].type === 'step') {\n return true;\n }\n }\n\n return false;\n});\n\nconst closeHandler = () => {\n stepActive.value = 1;\n emit('close');\n};\n\nconst save = async () => {\n try {\n const values = await form.value?.submitForm();\n emit('submit', values);\n } catch (e) {\n emit('error', e);\n }\n};\n\nconst preStep = () => {\n stepActive.value -= 1;\n};\n\nconst nextStep = () => {\n stepActive.value += 1;\n};\n\nconst changeHandler = (value: any) => {\n emit('change', value);\n};\n\nconst show = () => {\n dialogVisible.value = true;\n};\n\nconst hide = () => {\n dialogVisible.value = false;\n};\n\nconst cancel = () => {\n hide();\n};\n\ndefineExpose({\n form,\n saveFetch,\n dialogVisible,\n\n cancel,\n save,\n show,\n hide,\n});\n</script>\n","<template>\n <a v-if=\"config.href && !disabled\" target=\"_blank\" :href=\"href\" :style=\"config.css || {}\">{{ displayText }}</a>\n <span v-else-if=\"config.href && disabled\" :style=\"config.disabledCss || {}\">{{ displayText }}</span>\n <div v-else class=\"m-fields-link\">\n <TMagicButton link type=\"primary\" @click=\"editHandler\">点击编辑</TMagicButton>\n <FormDialog\n ref=\"editor\"\n :title=\"config.formTitle || '编辑扩展配置'\"\n :width=\"config.formWidth\"\n :values=\"formValue\"\n :config=\"formConfig\"\n :parentValues=\"values\"\n :fullscreen=\"config.fullscreen\"\n @submit=\"action\"\n ></FormDialog>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, ref } from 'vue';\n\nimport { TMagicButton } from '@tmagic/design';\n\nimport FormDialog from '../FormDialog.vue';\nimport type { FieldProps, FormState, LinkConfig } from '../schema';\nimport { useAddField } from '../utils/useAddField';\n\ndefineOptions({\n name: 'MFormLink',\n});\n\nconst props = defineProps<FieldProps<LinkConfig>>();\n\nconst emit = defineEmits(['change']);\n\nuseAddField(props.prop);\n\nconst formValue = ref({});\nconst editor = ref<InstanceType<typeof FormDialog>>();\nconst mForm = inject<FormState | undefined>('mForm');\n\nconst href = computed(() => {\n if (typeof props.config.href === 'function' && props.model) {\n return props.config.href(props.model);\n }\n return props.config.href || props.model?.[props.name];\n});\n\nconst init = () => {\n formValue.value = props.model?.[props.name] || {};\n};\n\nconst formConfig = computed(() => {\n if (typeof props.config.form === 'function') {\n return props.config.form(mForm, {\n model: props.model || {},\n values: props.values || {},\n });\n }\n return props.config.form;\n});\n\nconst displayText = computed(() => {\n if (typeof props.config.displayText === 'function') {\n return props.config.displayText(mForm, { model: props.model || {} });\n }\n if (props.config.displayText) {\n return props.config.displayText;\n }\n return '跳转';\n});\n\nconst editHandler = () => {\n init();\n editor.value && (editor.value.dialogVisible = true);\n};\n\nconst action = (data: any) => {\n if (props.model) {\n props.model[props.name] = data;\n formValue.value = data;\n emit('change', props.model[props.name]);\n }\n editor.value && (editor.value.dialogVisible = false);\n};\n</script>\n","<template>\n <TMagicInputNumber\n v-if=\"model\"\n v-model=\"model[name]\"\n clearable\n controls-position=\"right\"\n :size=\"size\"\n :max=\"config.max\"\n :min=\"config.min\"\n :step=\"config.step\"\n :placeholder=\"config.placeholder\"\n :disabled=\"disabled\"\n @change=\"changeHandler\"\n @input=\"inputHandler\"\n ></TMagicInputNumber>\n</template>\n\n<script lang=\"ts\" setup>\nimport { inject } from 'vue';\n\nimport { TMagicInputNumber } from '@tmagic/design';\n\nimport type { FieldProps, FormState, NumberConfig } from '../schema';\nimport { useAddField } from '../utils/useAddField';\n\ndefineOptions({\n name: 'MFormNumber',\n});\n\nconst props = defineProps<FieldProps<NumberConfig>>();\n\nconst emit = defineEmits<{\n change: [values: number];\n input: [values: number];\n}>();\n\nuseAddField(props.prop);\n\nconst mForm = inject<FormState | null>('mForm');\n\nconst changeHandler = (value: number) => {\n emit('change', value);\n};\n\nconst inputHandler = (v: number) => {\n emit('input', v);\n mForm?.$emit('field-input', props.prop, v);\n};\n</script>\n","<template>\n <div class=\"m-fields-number-range\">\n <TMagicInput\n v-model=\"model[name][0]\"\n clearable\n :size=\"size\"\n :disabled=\"disabled\"\n @change=\"minChangeHandler\"\n ></TMagicInput>\n <span class=\"split-tag\">-</span>\n <TMagicInput\n v-model=\"model[name][1]\"\n clearable\n :size=\"size\"\n :disabled=\"disabled\"\n @change=\"maxChangeHandler\"\n ></TMagicInput>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { TMagicInput } from '@tmagic/design';\n\nimport type { FieldProps, NumberRangeConfig } from '../schema';\nimport { useAddField } from '../utils/useAddField';\n\ndefineOptions({\n name: 'MFormNumberRange',\n});\n\nconst props = defineProps<FieldProps<NumberRangeConfig>>();\n\nconst emit = defineEmits<{\n change: [values: [number, number]];\n}>();\n\nuseAddField(props.prop);\n\nif (!Array.isArray(props.model[props.name])) {\n props.model[props.name] = [];\n}\n\nconst minChangeHandler = (v: string) => {\n emit('change', [Number(v), props.model[props.name][1]]);\n};\n\nconst maxChangeHandler = (v: string) => {\n emit('change', [props.model[props.name][0], Number(v)]);\n};\n</script>\n","<template>\n <TMagicRadioGroup v-if=\"model\" v-model=\"model[name]\" :size=\"size\" :disabled=\"disabled\" @change=\"changeHandler\">\n <TMagicRadio\n v-for=\"option in config.options\"\n :label=\"option.value\"\n :value=\"option.value\"\n :key=\"`${option.value}`\"\n >{{ option.text }}</TMagicRadio\n >\n </TMagicRadioGroup>\n</template>\n\n<script lang=\"ts\" setup>\nimport { TMagicRadio, TMagicRadioGroup } from '@tmagic/design';\n\nimport type { FieldProps, RadioGroupConfig } from '../schema';\nimport { useAddField } from '../utils/useAddField';\n\ndefineOptions({\n name: 'MFormRadioGroup',\n});\n\nconst props = defineProps<FieldProps<RadioGroupConfig>>();\n\nconst emit = defineEmits(['change']);\n\nconst changeHandler = (value: number) => {\n emit('change', value);\n};\n\nuseAddField(props.prop);\n</script>\n","<template>\n <TMagicOptionGroup v-for=\"(group, index) in options\" :key=\"index\" :label=\"group.label\" :disabled=\"group.disabled\">\n <component\n v-for=\"(item, index) in group.options\"\n :is=\"uiComponent\"\n :key=\"index\"\n :label=\"item.label || item.text\"\n :value=\"item.value\"\n :disabled=\"item.disabled\"\n >\n </component>\n </TMagicOptionGroup>\n</template>\n\n<script lang=\"ts\" setup>\nimport { getConfig, TMagicOptionGroup } from '@tmagic/design';\n\nimport { SelectGroupOption } from '../schema';\n\ndefineOptions({\n name: 'MFormSelectOptionGroups',\n});\n\ndefineProps<{\n options: SelectGroupOption[];\n}>();\n\nconst uiComponent = getConfig('components')?.option.component || 'el-option';\n</script>\n","<template>\n <TMagicSelect\n v-if=\"model\"\n v-model=\"model[name]\"\n v-loading=\"loading\"\n class=\"m-select\"\n ref=\"tMagicSelect\"\n :clearable=\"typeof config.clearable !== 'undefined' ? config.clearable : true\"\n :filterable=\"typeof config.filterable !== 'undefined' ? config.filterable : true\"\n :popper-class=\"`m-select-popper ${popperClass}`\"\n :size=\"size\"\n :remote=\"remote\"\n :placeholder=\"config.placeholder\"\n :multiple=\"config.multiple\"\n :value-key=\"config.valueKey || 'value'\"\n :allow-create=\"config.allowCreate\"\n :disabled=\"disabled\"\n :remote-method=\"config.remote && remoteMethod\"\n @change=\"changeHandler\"\n @visible-change=\"visibleHandler\"\n >\n <template v-if=\"config.group\"><SelectOptionGroups :options=\"groupOptions\"></SelectOptionGroups></template>\n <template v-else><SelectOptions :options=\"itemOptions\"></SelectOptions></template>\n <div v-loading=\"true\" v-if=\"moreLoadingVisible\"></div>\n </TMagicSelect>\n</template>\n\n<script lang=\"ts\" setup>\nimport { inject, nextTick, onBeforeMount, Ref, ref, watch, watchEffect } from 'vue';\n\nimport { TMagicSelect } from '@tmagic/design';\nimport { getValueByKeyPath } from '@tmagic/utils';\n\nimport type { FieldProps, FormState, SelectConfig, SelectGroupOption, SelectOption } from '../schema';\nimport { getConfig } from '../utils/config';\nimport { useAddField } from '../utils/useAddField';\n\nimport SelectOptionGroups from './SelectOptionGroups.vue';\nimport SelectOptions from './SelectOptions.vue';\n\ndefineOptions({\n name: 'MFormSelect',\n});\n\nconst props = defineProps<FieldProps<SelectConfig>>();\n\nconst emit = defineEmits(['change']);\n\nif (!props.model) throw new Error('不能没有model');\nuseAddField(props.prop);\n\nconst tMagicSelect = ref<InstanceType<typeof TMagicSelect>>();\nconst mForm = inject<FormState | undefined>('mForm');\nconst options = ref<SelectOption[] | SelectGroupOption[]>([]);\nconst localOptions = ref<SelectOption[] | SelectGroupOption[]>([]);\nconst loading = ref(false);\nconst moreLoadingVisible = ref(false);\nconst total = ref(0);\nconst pgIndex = ref(0);\nconst pgSize = ref(20);\nconst query = ref('');\nconst remoteData = ref<any[]>([]);\nconst remote = ref(true);\n\nconst equalValue = (value: any, v: any): boolean => {\n if (typeof v === 'object') {\n const key = props.config.valueKey || 'value';\n return v[key] === value[key];\n }\n\n return value === v;\n};\n\nconst mapOptions = (data: any[]) => {\n const {\n option = {\n text: 'text',\n value: 'value',\n },\n } = props.config;\n const { text = 'text', value = 'value' } = option;\n\n return data.map((item) => ({\n text: typeof text === 'function' ? text(item) : item[text],\n value: typeof value === 'function' ? value(item) : item[value],\n }));\n};\n\nconst getOptions = async () => {\n if (!props.model) return [];\n\n if (localOptions.value.length) {\n return localOptions.value;\n }\n\n loading.value = true;\n\n let items: SelectOption[] | SelectGroupOption[] = [];\n\n const { option } = props.config;\n\n if (!option) return [];\n\n const { root = '', totalKey = 'total' } = option;\n let { body = {}, url } = option;\n\n if (typeof url === 'function') {\n url = await url(mForm, { model: props.model, formValue: mForm?.values });\n }\n\n let postOptions: Record<string, any> = {\n method: option.method || 'POST',\n url,\n cache: option.cache,\n timeout: option.timeout,\n mode: option.mode,\n headers: option.headers || {},\n json: option.json || false,\n };\n\n if (typeof body === 'function') {\n body = body(mForm, {\n model: props.model,\n formValue: mForm?.values,\n formValues: mForm?.values,\n config: props.config,\n }) as Record<string, any>;\n }\n\n body.query = query.value;\n body.pgSize = pgSize.value;\n body.pgIndex = pgIndex.value;\n\n postOptions.data = body;\n\n const requestFuc = getConfig('request') as Function;\n\n if (typeof option.beforeRequest === 'function') {\n postOptions = option.beforeRequest(mForm, postOptions, {\n model: props.model,\n formValue: mForm?.values,\n });\n }\n\n if (option.method?.toLocaleLowerCase() === 'jsonp') {\n postOptions.jsonpCallback = option.jsonpCallback || 'callback';\n }\n\n let res = await requestFuc(postOptions);\n\n if (typeof option.afterRequest === 'function') {\n res = option.afterRequest(mForm, res, {\n model: props.model,\n formValue: mForm?.values,\n formValues: mForm?.values,\n config: props.config,\n postOptions,\n });\n }\n\n const optionsData = getValueByKeyPath(root, res);\n\n const resTotal = globalThis.parseInt(getValueByKeyPath(totalKey, res), 10);\n if (resTotal > 0) {\n total.value = resTotal;\n }\n\n remoteData.value = remoteData.value.concat(optionsData);\n if (optionsData) {\n if (typeof option.item === 'function') {\n items = option.item(optionsData);\n } else if (optionsData.map) {\n items = mapOptions(optionsData);\n }\n }\n\n loading.value = false;\n\n // 多选过滤时会导致已选的选项显示不了,所以要把已选的选项保留不要过滤没了\n const selectedOptions: SelectOption[] | SelectGroupOption[] = [];\n if (props.config.multiple && props.model[props.name]) {\n options.value.forEach((o: any) => {\n const isInclude = props.model?.[props.name].includes(o.value);\n if (isInclude && !(items as any[]).find((op: any) => op.value === o.value)) {\n selectedOptions.push(o);\n }\n });\n }\n\n return pgIndex.value === 0 ? (selectedOptions as any[]).concat(items) : (options.value as any).concat(items);\n};\n\nconst getInitLocalOption = async () => {\n if (!props.model) return [];\n\n const value = props.model[props.name];\n const { config } = props;\n localOptions.value = await getOptions();\n\n remote.value = false;\n\n if (config.group) {\n if (config.multiple && value.findIndex) {\n return (localOptions.value as SelectGroupOption[]).filter(\n (group) => group.options.findIndex((item) => value.find((v: any) => equalValue(item.value, v)) > -1) > -1,\n );\n }\n\n return (localOptions.value as SelectGroupOption[]).filter(\n (group) => group.options.findIndex((item) => equalValue(item.value, value)) > -1,\n );\n }\n\n if (config.multiple && value.findIndex) {\n return (localOptions.value as any[]).filter((item) => value.findIndex((v: any) => equalValue(item.value, v)) > -1);\n }\n return (localOptions.value as any[]).filter((item) => equalValue(item.value, value));\n};\n\nconst getInitOption = async () => {\n if (!props.model) return [];\n\n const { option } = props.config;\n\n if (!option) return [];\n\n const { root = '', initRoot = '' } = option;\n let { initBody = {} } = option;\n\n let options: SelectOption[] | SelectGroupOption[] = [];\n\n let url = option.initUrl;\n if (!url) {\n return getInitLocalOption();\n }\n\n if (typeof url === 'function') {\n url = await url(mForm, { model: props.model, formValue: mForm?.values });\n }\n\n if (typeof initBody === 'function') {\n initBody = initBody(mForm, {\n model: props.model,\n formValue: mForm?.values,\n formValues: mForm?.values,\n config: props.config,\n }) as Record<string, any>;\n }\n\n let postOptions: Record<string, any> = {\n method: option.method || 'POST',\n url,\n data: {\n id: props.model[props.name],\n ...initBody,\n },\n mode: option.mode,\n headers: option.headers || {},\n json: option.json || false,\n };\n\n if (typeof option.beforeInitRequest === 'function') {\n postOptions = option.beforeInitRequest(mForm, postOptions, {\n model: props.model,\n formValue: mForm?.values,\n });\n }\n\n if (option.method?.toLocaleLowerCase() === 'jsonp') {\n postOptions.jsonpCallback = option.jsonpCallback || 'callback';\n }\n\n const requestFuc = getConfig('request') as Function;\n let res = await requestFuc(postOptions);\n\n if (typeof option.afterRequest === 'function') {\n res = option.afterRequest(mForm, res, {\n model: props.model,\n formValue: mForm?.values,\n formValues: mForm?.values,\n config: props.config,\n postOptions,\n });\n }\n\n let initData = getValueByKeyPath(initRoot || root, res);\n if (initData) {\n if (!Array.isArray(initData)) {\n initData = [initData];\n }\n\n if (typeof option.item === 'function') {\n options = option.item(initData);\n } else if (initData.map) {\n options = mapOptions(initData);\n }\n }\n\n return options;\n};\n\nif (typeof props.config.options === 'function') {\n watchEffect(() => {\n typeof props.config.options === 'function' &&\n Promise.resolve(\n props.config.options(mForm, {\n model: props.model,\n prop: props.prop,\n formValues: mForm?.values,\n formValue: mForm?.values,\n config: props.config,\n }),\n ).then((data) => {\n options.value = data;\n });\n });\n} else if (Array.isArray(props.config.options)) {\n watchEffect(() => {\n options.value = props.config.options as SelectOption[] | SelectGroupOption[];\n });\n} else if (props.config.option) {\n onBeforeMount(() => {\n if (!props.model) return;\n const v = props.model[props.name];\n if (Array.isArray(v) ? v.length : typeof v !== 'undefined') {\n getInitOption().then((data) => {\n options.value = data;\n });\n }\n });\n}\n\nif (props.config.remote) {\n const unWatch = watch(\n () => tMagicSelect.value?.scrollbarWrap,\n (scrollbarWrap) => {\n if (!scrollbarWrap) {\n return;\n }\n\n nextTick(() => unWatch());\n\n scrollbarWrap.addEventListener('scroll', async (e: Event) => {\n const el = e.currentTarget as HTMLDivElement;\n if (moreLoadingVisible.value) {\n return;\n }\n if (el.scrollHeight - el.clientHeight - el.scrollTop > 1) {\n return;\n }\n if (total.value <= options.value.length) {\n return;\n }\n moreLoadingVisible.value = true;\n pgIndex.value += 1;\n options.value = await getOptions();\n moreLoadingVisible.value = false;\n });\n },\n {\n immediate: true,\n },\n );\n}\n\nconst popperClass = mForm?.popperClass;\n\nconst changeHandler = (value: any) => {\n emit('change', value);\n};\n\nconst visibleHandler = async (visible: boolean) => {\n if (!visible) return;\n\n if (!props.config.remote) return;\n if (query.value && tMagicSelect.value) {\n tMagicSelect.value.setQuery(query.value);\n tMagicSelect.value.setPreviousQuery(query.value);\n tMagicSelect.value.setSelectedLabel(query.value);\n } else if (options.value.length <= (props.config.multiple ? props.model?.[props.name].length : 1)) {\n options.value = await getOptions();\n }\n};\n\nconst remoteMethod = async (q: string) => {\n if (!localOptions.value.length) {\n query.value = q;\n pgIndex.value = 0;\n options.value = await getOptions();\n // 多选时如果过滤选项会导致已选好的标签异常,需要重新刷新一下el-select的状态\n if (props.config.multiple)\n setTimeout(() => {\n tMagicSelect.value?.setSelected();\n }, 0);\n }\n};\n\nconst itemOptions = options as Ref<SelectOption[]>;\nconst groupOptions = options as Ref<SelectGroupOption[]>;\n</script>\n","<template>\n <TMagicSwitch\n v-model=\"model[name]\"\n :size=\"size\"\n :activeValue=\"activeValue\"\n :inactiveValue=\"inactiveValue\"\n :disabled=\"disabled\"\n @change=\"changeHandler\"\n ></TMagicSwitch>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue';\n\nimport { TMagicSwitch } from '@tmagic/design';\n\nimport type { FieldProps, SwitchConfig } from '../schema';\nimport { useAddField } from '../utils/useAddField';\n\ndefineOptions({\n name: 'MFormSwitch',\n});\n\nconst props = defineProps<FieldProps<SwitchConfig>>();\n\nconst emit = defineEmits<{\n change: [value: any];\n}>();\n\nuseAddField(props.prop);\n\nconst changeHandler = (value: any) => {\n emit('change', value);\n};\n\nconst activeValue = computed(() => {\n if (typeof props.config.activeValue === 'undefined') {\n if (props.config.filter === 'number') {\n return 1;\n }\n } else {\n return props.config.activeValue;\n }\n\n return true;\n});\n\nconst inactiveValue = computed(() => {\n if (typeof props.config.inactiveValue === 'undefined') {\n if (props.config.filter === 'number') {\n return 0;\n }\n } else {\n return props.config.inactiveValue;\n }\n\n return false;\n});\n</script>\n","<template>\n <TMagicPopover :visible=\"popoverVisible\" width=\"220px\">\n <template #reference>\n <TMagicInput\n v-model=\"model[name]\"\n clearable\n :size=\"size\"\n :placeholder=\"config.placeholder\"\n :disabled=\"disabled\"\n @change=\"changeHandler\"\n @input=\"inputHandler\"\n @keyup=\"keyUpHandler($event)\"\n >\n <template #append v-if=\"appendConfig\">\n <TMagicButton\n v-if=\"appendConfig.type === 'button'\"\n style=\"color: #409eff\"\n :size=\"size\"\n @click.prevent=\"buttonClickHandler\"\n >\n {{ appendConfig.text }}\n </TMagicButton>\n </template>\n </TMagicInput>\n </template>\n\n <div class=\"m-form-item__content\">\n <div class=\"m-form-validate__warning\">输入内容前后有空格,是否移除空格?</div>\n <div style=\"display: flex; justify-content: flex-end\">\n <TMagicButton type=\"text\" size=\"small\" @click=\"popoverVisible = false\">保持原样</TMagicButton>\n <TMagicButton type=\"primary\" size=\"small\" @click=\"confirmTrimHandler\">移除空格</TMagicButton>\n </div>\n </div>\n </TMagicPopover>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, ref } from 'vue';\n\nimport { TMagicButton, TMagicInput, TMagicPopover } from '@tmagic/design';\nimport { isNumber } from '@tmagic/utils';\n\nimport type { FieldProps, FormState, TextConfig } from '../schema';\nimport { useAddField } from '../utils/useAddField';\n\ndefineOptions({\n name: 'MFormText',\n});\n\nconst props = defineProps<FieldProps<TextConfig>>();\n\nconst emit = defineEmits<{\n change: [value: string];\n input: [value: string];\n}>();\n\nuseAddField(props.prop);\n\nconst mForm = inject<FormState | undefined>('mForm');\n\nconst appendConfig = computed(() => {\n if (typeof props.config.append === 'string') {\n return {\n text: props.config.append,\n type: 'button',\n handler: undefined,\n };\n }\n\n if (props.config.append && typeof props.config.append === 'object') {\n if (props.config.append.value === 0) {\n return false;\n }\n\n return props.config.append;\n }\n\n return false;\n});\n\nconst popoverVisible = ref(false);\n\nconst confirmTrimHandler = () => {\n emit('change', props.model[props.name].trim() || '');\n popoverVisible.value = false;\n};\n\nconst checkWhiteSpace = (value: unknown) => {\n if (typeof value === 'string' && !props.config.trim) {\n popoverVisible.value = value.trim() !== value;\n }\n};\n\nconst changeHandler = (value: string) => {\n emit('change', value);\n};\n\nconst inputHandler = (v: string) => {\n checkWhiteSpace(v);\n emit('input', v);\n mForm?.$emit('field-input', props.prop, v);\n};\n\nconst buttonClickHandler = () => {\n if (!appendConfig.value) return;\n if (typeof appendConfig.value.handler === 'function') {\n appendConfig.value.handler(mForm, {\n model: props.model,\n values: mForm?.values,\n });\n }\n};\n\nconst keyUpHandler = ($event: KeyboardEvent) => {\n if (!props.model) return;\n if (!props.name) return;\n\n const arrowUp = $event.key === 'ArrowUp';\n const arrowDown = $event.key === 'ArrowDown';\n\n if (!arrowUp && !arrowDown) {\n return;\n }\n\n const value = props.model[props.name];\n let num;\n let unit;\n if (isNumber(value)) {\n num = +value;\n } else {\n value.replace(/^([0-9.]+)([a-z%]+)$/, ($0: string, $1: string, $2: string) => {\n num = +$1;\n unit = $2;\n });\n }\n\n if (num === undefined) {\n return;\n }\n\n const ctrl = navigator.platform.match('Mac') ? $event.metaKey : $event.ctrlKey;\n const shift = $event.shiftKey;\n const alt = $event.altKey;\n\n if (arrowUp) {\n if (ctrl) {\n num += 100;\n } else if (alt) {\n num = (num * 10000 + 1000) / 10000;\n } else if (shift) {\n num = num + 10;\n } else {\n num += 1;\n }\n } else if (arrowDown) {\n if (ctrl) {\n num -= 100;\n } else if (alt) {\n num = (num * 10000 - 1000) / 10000;\n } else if (shift) {\n num -= 10;\n } else {\n num -= 1;\n }\n }\n\n props.model[props.name] = `${num}${unit || ''}`;\n emit('change', props.model[props.name]);\n};\n</script>\n","<template>\n <TMagicInput\n v-model=\"model[name]\"\n type=\"textarea\"\n :size=\"size\"\n clearable\n :placeholder=\"config.placeholder\"\n :disabled=\"disabled\"\n @change=\"changeHandler\"\n @input=\"inputHandler\"\n >\n </TMagicInput>\n</template>\n\n<script lang=\"ts\" setup>\nimport { inject } from 'vue';\n\nimport { TMagicInput } from '@tmagic/design';\n\nimport type { FieldProps, FormState, TextareaConfig } from '../schema';\nimport { useAddField } from '../utils/useAddField';\n\ndefineOptions({\n name: 'MFormTextarea',\n});\n\nconst props = defineProps<FieldProps<TextareaConfig>>();\n\nconst emit = defineEmits<{\n change: [value: string];\n input: [value: string];\n}>();\n\nuseAddField(props.prop);\n\nconst mForm = inject<FormState | null>('mForm');\n\nconst changeHandler = (value: string) => {\n emit('change', value);\n};\n\nconst inputHandler = (v: string) => {\n emit('input', v);\n mForm?.$emit('field-input', props.prop, v);\n};\n</script>\n","<template>\n <TMagicTimePicker\n v-model=\"model[name]\"\n :value-format=\"config.valueFormat || 'HH:mm:ss'\"\n :format=\"config.format || 'HH:mm:ss'\"\n :size=\"size\"\n :placeholder=\"config.placeholder\"\n :disabled=\"disabled\"\n @change=\"changeHandler\"\n ></TMagicTimePicker>\n</template>\n\n<script lang=\"ts\" setup>\nimport { TMagicTimePicker } from '@tmagic/design';\n\nimport type { FieldProps, TimeConfig } from '../schema';\nimport { useAddField } from '../utils/useAddField';\n\ndefineOptions({\n name: 'MFormTime',\n});\n\nconst props = defineProps<FieldProps<TimeConfig>>();\n\nconst emit = defineEmits<{\n change: [value: string];\n}>();\n\nuseAddField(props.prop);\n\nconst changeHandler = (v: string) => {\n emit('change', v);\n};\n</script>\n","<template>\n <TMagicTimePicker\n v-model=\"value\"\n is-range\n range-separator=\"-\"\n start-placeholder=\"开始时间\"\n end-placeholder=\"结束时间\"\n :size=\"size\"\n :unlink-panels=\"true\"\n :disabled=\"disabled\"\n :default-time=\"config.defaultTime\"\n @change=\"changeHandler\"\n ></TMagicTimePicker>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, watch } from 'vue';\n\nimport { TMagicTimePicker } from '@tmagic/design';\nimport { datetimeFormatter } from '@tmagic/utils';\n\nimport type { DaterangeConfig, FieldProps } from '../schema';\nimport { useAddField } from '../utils/useAddField';\n\ndefineOptions({\n name: 'MFormTimeRange',\n});\n\nconst props = defineProps<FieldProps<DaterangeConfig>>();\n\nconst emit = defineEmits(['change']);\n\nuseAddField(props.prop);\n\n// eslint-disable-next-line vue/no-setup-props-destructure\nconst { names } = props.config;\nconst value = ref<(Date | undefined)[] | null>([]);\n\nif (props.model !== undefined && names?.length) {\n watch(\n [() => props.model[names[0]], () => props.model[names[1]]],\n ([start, end], [preStart, preEnd]) => {\n if (!value.value) {\n value.value = [];\n }\n if (!start || !end) value.value = [];\n if (start !== preStart) value.value[0] = start;\n if (end !== preEnd) value.value[1] = end;\n },\n {\n immediate: true,\n },\n );\n}\n\nconst setValue = (v: Date[] | Date) => {\n names?.forEach((item, index) => {\n if (!props.model) {\n return;\n }\n if (Array.isArray(v)) {\n props.model[item] = datetimeFormatter(v[index]?.toString(), '');\n } else {\n props.model[item] = undefined;\n }\n });\n};\n\nconst changeHandler = (v: Date[]) => {\n const value = v || [];\n if (names?.length) {\n setValue(value);\n }\n emit('change', value);\n};\n</script>\n","<template>\n <TMagicDrawer\n class=\"m-form-drawer\"\n ref=\"drawer\"\n v-model=\"visible\"\n :title=\"title\"\n :close-on-press-escape=\"closeOnPressEscape\"\n :append-to-body=\"true\"\n :show-close=\"true\"\n :close-on-click-modal=\"true\"\n :size=\"width\"\n :zIndex=\"zIndex\"\n :before-close=\"beforeClose\"\n @open=\"openHandler\"\n @opened=\"openedHandler\"\n @close=\"closeHandler\"\n @closed=\"closedHandler\"\n >\n <div v-if=\"visible\" ref=\"drawerBody\" class=\"m-drawer-body\">\n <Form\n ref=\"form\"\n :size=\"size\"\n :disabled=\"disabled\"\n :config=\"config\"\n :init-values=\"values\"\n :parent-values=\"parentValues\"\n :label-width=\"labelWidth\"\n :label-position=\"labelPosition\"\n :inline=\"inline\"\n @change=\"changeHandler\"\n ></Form>\n <slot></slot>\n </div>\n\n <template #footer>\n <TMagicRow class=\"dialog-footer\">\n <TMagicCol :span=\"12\" style=\"text-align: left\">\n <div style=\"min-height: 1px\">\n <slot name=\"left\"></slot>\n </div>\n </TMagicCol>\n <TMagicCol :span=\"12\">\n <slot name=\"footer\">\n <TMagicButton @click=\"handleClose\">关闭</TMagicButton>\n <TMagicButton type=\"primary\" :disabled=\"disabled\" :loading=\"saveFetch\" @click=\"submitHandler\">{{\n confirmText\n }}</TMagicButton>\n </slot>\n </TMagicCol>\n </TMagicRow>\n </template>\n </TMagicDrawer>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watchEffect } from 'vue';\n\nimport { TMagicButton, TMagicCol, TMagicDrawer, TMagicRow } from '@tmagic/design';\n\nimport Form from './Form.vue';\nimport type { FormConfig } from './schema';\n\ndefineOptions({\n name: 'MFormDialog',\n});\n\nwithDefaults(\n defineProps<{\n config?: FormConfig;\n values?: Object;\n parentValues?: Object;\n width?: string | number;\n labelWidth?: string;\n disabled?: boolean;\n closeOnPressEscape?: boolean;\n title?: string;\n zIndex?: number;\n size?: 'small' | 'default' | 'large';\n confirmText?: string;\n inline?: boolean;\n labelPosition?: string;\n /** 关闭前的回调,会暂停 Drawer 的关闭; done 是个 function type 接受一个 boolean 参数, 执行 done 使用 true 参数或不提供参数将会终止关闭 */\n beforeClose?: (done: (cancel?: boolean) => void) => void;\n }>(),\n {\n closeOnPressEscape: true,\n config: () => [],\n values: () => ({}),\n confirmText: '确定',\n },\n);\n\nconst emit = defineEmits(['close', 'closed', 'submit', 'error', 'change', 'open', 'opened']);\n\nconst drawer = ref<InstanceType<typeof TMagicDrawer>>();\nconst form = ref<InstanceType<typeof Form>>();\nconst drawerBody = ref<HTMLDivElement>();\nconst visible = ref(false);\nconst saveFetch = ref(false);\nconst bodyHeight = ref(0);\n\nwatchEffect(() => {\n if (drawerBody.value) {\n bodyHeight.value = drawerBody.value.clientHeight;\n }\n});\n\nconst submitHandler = async () => {\n try {\n const values = await form.value?.submitForm();\n emit('submit', values);\n } catch (e) {\n emit('error', e);\n }\n};\n\nconst changeHandler = (value: any) => {\n emit('change', value);\n};\n\nconst openHandler = () => {\n emit('open');\n};\n\nconst openedHandler = () => {\n emit('opened');\n};\n\nconst closeHandler = () => {\n emit('close');\n};\n\nconst closedHandler = () => {\n emit('closed');\n};\n\nconst show = () => {\n visible.value = true;\n};\n\nconst hide = () => {\n visible.value = false;\n};\n\n/** 用于关闭 Drawer, 该方法会调用传入的 before-close 方法 */\nconst handleClose = () => {\n drawer.value?.handleClose();\n};\n\ndefineExpose({\n form,\n saveFetch,\n bodyHeight,\n\n show,\n hide,\n handleClose,\n});\n</script>\n","<template>\n <div class=\"m-form-box\">\n <div ref=\"boxBody\" class=\"m-box-body\">\n <Form\n ref=\"form\"\n :size=\"size\"\n :disabled=\"disabled\"\n :config=\"config\"\n :init-values=\"values\"\n :parent-values=\"parentValues\"\n :label-width=\"labelWidth\"\n :label-position=\"labelPosition\"\n :inline=\"inline\"\n @change=\"changeHandler\"\n ></Form>\n <slot></slot>\n </div>\n\n <TMagicRow class=\"dialog-footer\">\n <TMagicCol :span=\"12\" style=\"text-align: left\">\n <div style=\"min-height: 1px\">\n <slot name=\"left\"></slot>\n </div>\n </TMagicCol>\n <TMagicCol :span=\"12\">\n <slot name=\"footer\">\n <TMagicButton type=\"primary\" :disabled=\"disabled\" :loading=\"saveFetch\" @click=\"submitHandler\">{{\n confirmText\n }}</TMagicButton>\n </slot>\n </TMagicCol>\n </TMagicRow>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watchEffect } from 'vue';\n\nimport { TMagicButton, TMagicCol, TMagicRow } from '@tmagic/design';\n\nimport Form from './Form.vue';\nimport type { FormConfig } from './schema';\n\ndefineOptions({\n name: 'MFormDialog',\n});\n\nwithDefaults(\n defineProps<{\n config?: FormConfig;\n values?: Object;\n parentValues?: Object;\n width?: string | number;\n labelWidth?: string;\n disabled?: boolean;\n size?: 'small' | 'default' | 'large';\n confirmText?: string;\n inline?: boolean;\n labelPosition?: string;\n }>(),\n {\n config: () => [],\n values: () => ({}),\n confirmText: '确定',\n },\n);\n\nconst emit = defineEmits(['submit', 'change', 'error']);\n\nconst form = ref<InstanceType<typeof Form>>();\nconst boxBody = ref<HTMLDivElement>();\nconst saveFetch = ref(false);\nconst bodyHeight = ref(0);\n\nwatchEffect(() => {\n if (boxBody.value) {\n bodyHeight.value = boxBody.value.clientHeight;\n }\n});\n\nconst submitHandler = async () => {\n try {\n const values = await form.value?.submitForm();\n emit('submit', values);\n } catch (e) {\n emit('error', e);\n }\n};\n\nconst changeHandler = (value: any) => {\n emit('change', value);\n};\n\nconst show = () => {};\n\nconst hide = () => {};\n\ndefineExpose({\n form,\n saveFetch,\n bodyHeight,\n\n show,\n hide,\n});\n</script>\n","/*\n * Tencent is pleased to support the open source community by making TMagicEditor available.\n *\n * Copyright (C) 2023 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { App } from 'vue';\n\nimport Container from './containers/Container.vue';\nimport Fieldset from './containers/Fieldset.vue';\nimport GroupList from './containers/GroupList.vue';\nimport Panel from './containers/Panel.vue';\nimport Row from './containers/Row.vue';\nimport MStep from './containers/Step.vue';\nimport Table from './containers/Table.vue';\nimport Tabs from './containers/Tabs.vue';\nimport Cascader from './fields/Cascader.vue';\nimport Checkbox from './fields/Checkbox.vue';\nimport CheckboxGroup from './fields/CheckboxGroup.vue';\nimport ColorPicker from './fields/ColorPicker.vue';\nimport Date from './fields/Date.vue';\nimport Daterange from './fields/Daterange.vue';\nimport DateTime from './fields/DateTime.vue';\nimport Display from './fields/Display.vue';\nimport DynamicField from './fields/DynamicField.vue';\nimport Hidden from './fields/Hidden.vue';\nimport Link from './fields/Link.vue';\nimport Number from './fields/Number.vue';\nimport NumberRange from './fields/NumberRange.vue';\nimport RadioGroup from './fields/RadioGroup.vue';\nimport Select from './fields/Select.vue';\nimport Switch from './fields/Switch.vue';\nimport Text from './fields/Text.vue';\nimport Textarea from './fields/Textarea.vue';\nimport Time from './fields/Time.vue';\nimport Timerange from './fields/Timerange.vue';\nimport { setConfig } from './utils/config';\nimport Form from './Form.vue';\nimport FormDialog from './FormDialog.vue';\nimport type { FormConfig } from './schema';\n\nimport './theme/index.scss';\n\nexport * from './schema';\nexport * from './utils/form';\nexport * from './utils/useAddField';\n\nexport { default as MForm } from './Form.vue';\nexport { default as MFormDialog } from './FormDialog.vue';\nexport { default as MFormDrawer } from './FormDrawer.vue';\nexport { default as MFormBox } from './FormBox.vue';\nexport { default as MContainer } from './containers/Container.vue';\nexport { default as MFieldset } from './containers/Fieldset.vue';\nexport { default as MPanel } from './containers/Panel.vue';\nexport { default as MRow } from './containers/Row.vue';\nexport { default as MTabs } from './containers/Tabs.vue';\nexport { default as MTable } from './containers/Table.vue';\nexport { default as MGroupList } from './containers/GroupList.vue';\nexport { default as MText } from './fields/Text.vue';\nexport { default as MNumber } from './fields/Number.vue';\nexport { default as MNumberRange } from './fields/NumberRange.vue';\nexport { default as MTextarea } from './fields/Textarea.vue';\nexport { default as MHidden } from './fields/Hidden.vue';\nexport { default as MDate } from './fields/Date.vue';\nexport { default as MDateTime } from './fields/DateTime.vue';\nexport { default as MTime } from './fields/Time.vue';\nexport { default as MCheckbox } from './fields/Checkbox.vue';\nexport { default as MSwitch } from './fields/Switch.vue';\nexport { default as MDaterange } from './fields/Daterange.vue';\nexport { default as MTimerange } from './fields/Timerange.vue';\nexport { default as MColorPicker } from './fields/ColorPicker.vue';\nexport { default as MCheckboxGroup } from './fields/CheckboxGroup.vue';\nexport { default as MRadioGroup } from './fields/RadioGroup.vue';\nexport { default as MDisplay } from './fields/Display.vue';\nexport { default as MLink } from './fields/Link.vue';\nexport { default as MSelect } from './fields/Select.vue';\nexport { default as MCascader } from './fields/Cascader.vue';\nexport { default as MDynamicField } from './fields/DynamicField.vue';\n\nexport const createForm = function (config: FormConfig) {\n return config;\n};\n\nexport interface InstallOptions {\n [key: string]: any;\n}\n\nconst defaultInstallOpt: InstallOptions = {};\n\nexport default {\n install(app: App, opt: InstallOptions = {}) {\n const option = Object.assign(defaultInstallOpt, opt);\n\n // eslint-disable-next-line no-param-reassign\n app.config.globalProperties.$MAGIC_FORM = option;\n setConfig(option);\n\n app.component('m-form', Form);\n app.component('m-form-dialog', FormDialog);\n app.component('m-form-container', Container);\n app.component('m-form-fieldset', Fieldset);\n app.component('m-form-group-list', GroupList);\n app.component('m-form-panel', Panel);\n app.component('m-form-row', Row);\n app.component('m-form-step', MStep);\n app.component('m-form-table', Table);\n app.component('m-form-tab', Tabs);\n app.component('m-fields-text', Text);\n app.component('m-fields-number', Number);\n app.component('m-fields-number-range', NumberRange);\n app.component('m-fields-textarea', Textarea);\n app.component('m-fields-hidden', Hidden);\n app.component('m-fields-date', Date);\n app.component('m-fields-datetime', DateTime);\n app.component('m-fields-daterange', Daterange);\n app.component('m-fields-timerange', Timerange);\n app.component('m-fields-time', Time);\n app.component('m-fields-checkbox', Checkbox);\n app.component('m-fields-switch', Switch);\n app.component('m-fields-color-picker', ColorPicker);\n app.component('m-fields-checkbox-group', CheckboxGroup);\n app.component('m-fields-radio-group', RadioGroup);\n app.component('m-fields-display', Display);\n app.component('m-fields-link', Link);\n app.component('m-fields-select', Select);\n app.component('m-fields-cascader', Cascader);\n app.component('m-fields-dynamic-field', DynamicField);\n },\n};\n"],"names":["initValue","type","display","displayFunction","showDiff","key","name","movable","displayFunc","selection","data","getConfig","mForm","props","activeTabName","value","options","Form","FormDialog","Container","Fieldset","GroupList","Panel","Row","MStep","Table","Tabs","Text","Number","NumberRange","Textarea","Hidden","Date","DateTime","Daterange","Timerange","Time","Checkbox","Switch","ColorPicker","CheckboxGroup","RadioGroup","Display","Link","Select","Cascader","DynamicField"],"mappings":"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"}