@tmagic/form 1.7.7 → 1.7.8-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +235 -164
- package/dist/es/Form.js +5 -0
- package/dist/es/Form.vue_vue_type_script_setup_true_lang.js +234 -0
- package/dist/es/FormBox.js +5 -0
- package/dist/es/FormBox.vue_vue_type_script_setup_true_lang.js +117 -0
- package/dist/es/FormDialog.js +5 -0
- package/dist/es/FormDialog.vue_vue_type_script_setup_true_lang.js +222 -0
- package/dist/es/FormDrawer.js +5 -0
- package/dist/es/FormDrawer.vue_vue_type_script_setup_true_lang.js +176 -0
- package/dist/es/_virtual/_rolldown/runtime.js +27 -0
- package/dist/es/containers/Col.js +5 -0
- package/dist/es/containers/Col.vue_vue_type_script_setup_true_lang.js +60 -0
- package/dist/es/containers/Container.js +5 -0
- package/dist/es/containers/Container.vue_vue_type_script_setup_true_lang.js +439 -0
- package/dist/es/containers/Fieldset.js +5 -0
- package/dist/es/containers/Fieldset.vue_vue_type_script_setup_true_lang.js +153 -0
- package/dist/es/containers/FlexLayout.js +5 -0
- package/dist/es/containers/FlexLayout.vue_vue_type_script_setup_true_lang.js +64 -0
- package/dist/es/containers/FormLabel.js +5 -0
- package/dist/es/containers/FormLabel.vue_vue_type_script_setup_true_lang.js +51 -0
- package/dist/es/containers/GroupList.js +5 -0
- package/dist/es/containers/GroupList.vue_vue_type_script_setup_true_lang.js +164 -0
- package/dist/es/containers/GroupListItem.js +5 -0
- package/dist/es/containers/GroupListItem.vue_vue_type_script_setup_true_lang.js +221 -0
- package/dist/es/containers/Panel.js +5 -0
- package/dist/es/containers/Panel.vue_vue_type_script_setup_true_lang.js +130 -0
- package/dist/es/containers/Row.js +5 -0
- package/dist/es/containers/Row.vue_vue_type_script_setup_true_lang.js +65 -0
- package/dist/es/containers/Step.js +5 -0
- package/dist/es/containers/Step.vue_vue_type_script_setup_true_lang.js +85 -0
- package/dist/es/containers/Tabs.js +5 -0
- package/dist/es/containers/Tabs.vue_vue_type_script_setup_true_lang.js +194 -0
- package/dist/es/fields/Cascader.js +5 -0
- package/dist/es/fields/Cascader.vue_vue_type_script_setup_true_lang.js +123 -0
- package/dist/es/fields/Checkbox.js +5 -0
- package/dist/es/fields/Checkbox.vue_vue_type_script_setup_true_lang.js +61 -0
- package/dist/es/fields/CheckboxGroup.js +5 -0
- package/dist/es/fields/CheckboxGroup.vue_vue_type_script_setup_true_lang.js +63 -0
- package/dist/es/fields/ColorPicker.js +5 -0
- package/dist/es/fields/ColorPicker.vue_vue_type_script_setup_true_lang.js +42 -0
- package/dist/es/fields/Date.js +5 -0
- package/dist/es/fields/Date.vue_vue_type_script_setup_true_lang.js +52 -0
- package/dist/es/fields/DateTime.js +5 -0
- package/dist/es/fields/DateTime.vue_vue_type_script_setup_true_lang.js +57 -0
- package/dist/es/fields/Daterange.js +5 -0
- package/dist/es/fields/Daterange.vue_vue_type_script_setup_true_lang.js +99 -0
- package/dist/es/fields/Display.js +5 -0
- package/dist/es/fields/Display.vue_vue_type_script_setup_true_lang.js +36 -0
- package/dist/es/fields/DynamicField.js +5 -0
- package/dist/es/fields/DynamicField.vue_vue_type_script_setup_true_lang.js +91 -0
- package/dist/es/fields/Hidden.js +5 -0
- package/dist/es/fields/Hidden.vue_vue_type_script_setup_true_lang.js +24 -0
- package/dist/es/fields/Link.js +5 -0
- package/dist/es/fields/Link.vue_vue_type_script_setup_true_lang.js +104 -0
- package/dist/es/fields/Number.js +5 -0
- package/dist/es/fields/Number.vue_vue_type_script_setup_true_lang.js +65 -0
- package/dist/es/fields/NumberRange.js +5 -0
- package/dist/es/fields/NumberRange.vue_vue_type_script_setup_true_lang.js +76 -0
- package/dist/es/fields/RadioGroup.js +5 -0
- package/dist/es/fields/RadioGroup.vue_vue_type_script_setup_true_lang.js +74 -0
- package/dist/es/fields/Select.js +5 -0
- package/dist/es/fields/Select.vue_vue_type_script_setup_true_lang.js +337 -0
- package/dist/es/fields/Switch.js +5 -0
- package/dist/es/fields/Switch.vue_vue_type_script_setup_true_lang.js +59 -0
- package/dist/es/fields/Text.js +5 -0
- package/dist/es/fields/Text.vue_vue_type_script_setup_true_lang.js +215 -0
- package/dist/es/fields/Textarea.js +5 -0
- package/dist/es/fields/Textarea.vue_vue_type_script_setup_true_lang.js +60 -0
- package/dist/es/fields/Time.js +5 -0
- package/dist/es/fields/Time.vue_vue_type_script_setup_true_lang.js +49 -0
- package/dist/es/fields/Timerange.js +5 -0
- package/dist/es/fields/Timerange.vue_vue_type_script_setup_true_lang.js +100 -0
- package/dist/es/index.js +41 -0
- package/dist/es/plugin.js +74 -0
- package/dist/es/schema.js +2 -0
- package/dist/es/style.css +325 -0
- package/dist/es/table/ActionsColumn.js +5 -0
- package/dist/es/table/ActionsColumn.vue_vue_type_script_setup_true_lang.js +107 -0
- package/dist/es/table/SortColumn.js +5 -0
- package/dist/es/table/SortColumn.vue_vue_type_script_setup_true_lang.js +88 -0
- package/dist/es/table/Table.js +5 -0
- package/dist/es/table/Table.vue_vue_type_script_setup_true_lang.js +232 -0
- package/dist/es/table/useAdd.js +71 -0
- package/dist/es/table/useFullscreen.js +15 -0
- package/dist/es/table/useImport.js +46 -0
- package/dist/es/table/usePagination.js +26 -0
- package/dist/es/table/useSelection.js +26 -0
- package/dist/es/table/useSortable.js +39 -0
- package/dist/es/table/useTableColumns.js +160 -0
- package/dist/es/utils/config.js +15 -0
- package/dist/es/utils/form.js +173 -0
- package/dist/es/utils/useAddField.js +13 -0
- package/dist/style.css +1 -1
- package/dist/tmagic-form.umd.cjs +7693 -8924
- package/package.json +7 -6
- package/src/containers/Container.vue +16 -10
- package/src/fields/Hidden.vue +6 -2
- package/src/index.ts +8 -82
- package/src/plugin.ts +102 -0
- package/src/table/useSortable.ts +8 -4
- package/src/utils/config.ts +16 -1
- package/types/index.d.ts +1264 -1226
- package/dist/tmagic-form.js +0 -5940
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import Container_default from "./Container.js";
|
|
2
|
+
import { Fragment, createBlock, createCommentVNode, createElementBlock, createVNode, defineComponent, inject, openBlock, ref, renderList, unref, vShow, watchEffect, withCtx, withDirectives } from "vue";
|
|
3
|
+
import { TMagicStep, TMagicSteps } from "@tmagic/design";
|
|
4
|
+
//#region packages/form/src/containers/Step.vue?vue&type=script&setup=true&lang.ts
|
|
5
|
+
var Step_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
6
|
+
name: "MFormStep",
|
|
7
|
+
__name: "Step",
|
|
8
|
+
props: {
|
|
9
|
+
model: {},
|
|
10
|
+
name: {},
|
|
11
|
+
lastValues: {},
|
|
12
|
+
isCompare: { type: Boolean },
|
|
13
|
+
config: {},
|
|
14
|
+
stepActive: { default: 1 },
|
|
15
|
+
labelWidth: {},
|
|
16
|
+
size: {},
|
|
17
|
+
disabled: { type: Boolean }
|
|
18
|
+
},
|
|
19
|
+
emits: ["change", "addDiffCount"],
|
|
20
|
+
setup(__props, { emit: __emit }) {
|
|
21
|
+
const props = __props;
|
|
22
|
+
const emit = __emit;
|
|
23
|
+
const mForm = inject("mForm");
|
|
24
|
+
const active = ref(1);
|
|
25
|
+
watchEffect(() => {
|
|
26
|
+
active.value = props.stepActive;
|
|
27
|
+
});
|
|
28
|
+
const stepClick = (index) => {
|
|
29
|
+
active.value = index + 1;
|
|
30
|
+
mForm?.$emit("update:stepActive", active.value);
|
|
31
|
+
};
|
|
32
|
+
const changeHandler = (v, eventData) => {
|
|
33
|
+
emit("change", props.model, eventData);
|
|
34
|
+
};
|
|
35
|
+
const onAddDiffCount = () => emit("addDiffCount");
|
|
36
|
+
return (_ctx, _cache) => {
|
|
37
|
+
return openBlock(), createElementBlock("div", null, [createVNode(unref(TMagicSteps), {
|
|
38
|
+
active: active.value,
|
|
39
|
+
"align-center": "",
|
|
40
|
+
space: __props.config.space
|
|
41
|
+
}, {
|
|
42
|
+
default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.config.items, (item, index) => {
|
|
43
|
+
return openBlock(), createBlock(unref(TMagicStep), {
|
|
44
|
+
key: item.__key,
|
|
45
|
+
title: item.title,
|
|
46
|
+
active: active.value,
|
|
47
|
+
onClick: ($event) => stepClick(index)
|
|
48
|
+
}, null, 8, [
|
|
49
|
+
"title",
|
|
50
|
+
"active",
|
|
51
|
+
"onClick"
|
|
52
|
+
]);
|
|
53
|
+
}), 128))]),
|
|
54
|
+
_: 1
|
|
55
|
+
}, 8, ["active", "space"]), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.config.items, (step, index) => {
|
|
56
|
+
return openBlock(), createElementBlock(Fragment, null, [(openBlock(true), createElementBlock(Fragment, null, renderList(step.items, (item) => {
|
|
57
|
+
return openBlock(), createElementBlock(Fragment, null, [item ? withDirectives((openBlock(), createBlock(Container_default, {
|
|
58
|
+
key: item[unref(mForm)?.keyProp || "__key"],
|
|
59
|
+
config: item,
|
|
60
|
+
model: step.name ? __props.model[step.name] : __props.model,
|
|
61
|
+
lastValues: step.name ? __props.lastValues[step.name] : __props.lastValues,
|
|
62
|
+
"is-compare": __props.isCompare,
|
|
63
|
+
prop: `${step.name}`,
|
|
64
|
+
size: __props.size,
|
|
65
|
+
disabled: __props.disabled,
|
|
66
|
+
"label-width": __props.config.labelWidth || __props.labelWidth,
|
|
67
|
+
onChange: changeHandler,
|
|
68
|
+
onAddDiffCount: _cache[0] || (_cache[0] = ($event) => onAddDiffCount())
|
|
69
|
+
}, null, 8, [
|
|
70
|
+
"config",
|
|
71
|
+
"model",
|
|
72
|
+
"lastValues",
|
|
73
|
+
"is-compare",
|
|
74
|
+
"prop",
|
|
75
|
+
"size",
|
|
76
|
+
"disabled",
|
|
77
|
+
"label-width"
|
|
78
|
+
])), [[vShow, active.value - 1 === index]]) : createCommentVNode("v-if", true)], 64);
|
|
79
|
+
}), 256))], 64);
|
|
80
|
+
}), 256))]);
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
//#endregion
|
|
85
|
+
export { Step_vue_vue_type_script_setup_true_lang_default as default };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import Tabs_vue_vue_type_script_setup_true_lang_default from "./Tabs.vue_vue_type_script_setup_true_lang.js";
|
|
2
|
+
//#region packages/form/src/containers/Tabs.vue
|
|
3
|
+
var Tabs_default = Tabs_vue_vue_type_script_setup_true_lang_default;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { Tabs_default as default };
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import { display, filterFunction, initValue } from "../utils/form.js";
|
|
2
|
+
import Container_default from "./Container.js";
|
|
3
|
+
import { Fragment, computed, createBlock, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, inject, mergeProps, openBlock, ref, renderList, resolveDynamicComponent, toDisplayString, unref, watchEffect, withCtx } from "vue";
|
|
4
|
+
import { isEmpty } from "lodash-es";
|
|
5
|
+
import { TMagicBadge, getDesignConfig } from "@tmagic/design";
|
|
6
|
+
//#region packages/form/src/containers/Tabs.vue?vue&type=script&setup=true&lang.ts
|
|
7
|
+
var Tabs_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
8
|
+
name: "MFormTabs",
|
|
9
|
+
__name: "Tabs",
|
|
10
|
+
props: {
|
|
11
|
+
model: {},
|
|
12
|
+
lastValues: { default: () => ({}) },
|
|
13
|
+
isCompare: {
|
|
14
|
+
type: Boolean,
|
|
15
|
+
default: false
|
|
16
|
+
},
|
|
17
|
+
config: {},
|
|
18
|
+
name: {},
|
|
19
|
+
size: {},
|
|
20
|
+
labelWidth: {},
|
|
21
|
+
prop: { default: "" },
|
|
22
|
+
expandMore: { type: Boolean },
|
|
23
|
+
disabled: { type: Boolean }
|
|
24
|
+
},
|
|
25
|
+
emits: ["change", "addDiffCount"],
|
|
26
|
+
setup(__props, { emit: __emit }) {
|
|
27
|
+
const props = __props;
|
|
28
|
+
const tabPaneComponent = getDesignConfig("components")?.tabPane;
|
|
29
|
+
const tabsComponent = getDesignConfig("components")?.tabs;
|
|
30
|
+
const getActive = (mForm, props, activeTabName) => {
|
|
31
|
+
const { config, model, prop } = props;
|
|
32
|
+
const { active } = config;
|
|
33
|
+
if (typeof active === "function") return active(mForm, {
|
|
34
|
+
model,
|
|
35
|
+
formValue: mForm?.values,
|
|
36
|
+
prop
|
|
37
|
+
});
|
|
38
|
+
if (+activeTabName >= props.config.items.length) return "0";
|
|
39
|
+
if (typeof active !== "undefined") return active;
|
|
40
|
+
return "0";
|
|
41
|
+
};
|
|
42
|
+
const tabClick = (mForm, tab, props) => {
|
|
43
|
+
const { config, model, prop } = props;
|
|
44
|
+
tab.name = tab.paneName;
|
|
45
|
+
if (typeof config.onTabClick === "function") config.onTabClick(mForm, tab, {
|
|
46
|
+
model,
|
|
47
|
+
formValue: mForm?.values,
|
|
48
|
+
prop,
|
|
49
|
+
config
|
|
50
|
+
});
|
|
51
|
+
const tabConfig = config.items.find((item) => tab.name === item.status);
|
|
52
|
+
if (tabConfig && typeof tabConfig.onTabClick === "function") tabConfig.onTabClick(mForm, tab, {
|
|
53
|
+
model,
|
|
54
|
+
formValue: mForm?.values,
|
|
55
|
+
prop,
|
|
56
|
+
config
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
const emit = __emit;
|
|
60
|
+
const mForm = inject("mForm");
|
|
61
|
+
const activeTabName = ref(getActive(mForm, props, ""));
|
|
62
|
+
const diffCount = ref({});
|
|
63
|
+
const tabs = computed(() => {
|
|
64
|
+
if (props.config.dynamic) {
|
|
65
|
+
if (!props.config.name) throw new Error("dynamic tab 必须配置name");
|
|
66
|
+
return props.model[props.config.name] || [];
|
|
67
|
+
}
|
|
68
|
+
return props.config.items.filter((item) => display(mForm, item.display, props));
|
|
69
|
+
});
|
|
70
|
+
const filter = (config) => filterFunction(mForm, config, props);
|
|
71
|
+
watchEffect(() => {
|
|
72
|
+
if (typeof props.config.activeChange === "function") props.config.activeChange(mForm, activeTabName.value, {
|
|
73
|
+
model: props.model,
|
|
74
|
+
prop: props.prop
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
const tabItems = (tab) => props.config.dynamic ? props.config.items : tab.items;
|
|
78
|
+
const tabClickHandler = (tab) => {
|
|
79
|
+
if (typeof tab === "object") tabClick(mForm, tab, props);
|
|
80
|
+
else {
|
|
81
|
+
let item = tabs.value.find((tab) => tab.status === tab);
|
|
82
|
+
if (!item) item = tabs.value[tab];
|
|
83
|
+
tabClick(mForm, item, props);
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
const onTabAdd = async () => {
|
|
87
|
+
if (!props.name) throw new Error("dynamic tab 必须配置name");
|
|
88
|
+
if (typeof props.config.onTabAdd === "function") {
|
|
89
|
+
props.config.onTabAdd(mForm, {
|
|
90
|
+
model: props.model,
|
|
91
|
+
prop: props.prop,
|
|
92
|
+
config: props.config
|
|
93
|
+
});
|
|
94
|
+
emit("change", props.model[props.name]);
|
|
95
|
+
} else {
|
|
96
|
+
const newObj = await initValue(mForm, {
|
|
97
|
+
config: props.config.items,
|
|
98
|
+
initValues: {}
|
|
99
|
+
});
|
|
100
|
+
newObj.title = `标签${tabs.value.length + 1}`;
|
|
101
|
+
props.model[props.name].push(newObj);
|
|
102
|
+
emit("change", props.model[props.name], { changeRecords: [{
|
|
103
|
+
propPath: `${props.prop}.${props.model[props.name].length - 1}`,
|
|
104
|
+
value: newObj
|
|
105
|
+
}] });
|
|
106
|
+
}
|
|
107
|
+
mForm?.$emit("field-change", props.prop, props.model[props.name]);
|
|
108
|
+
};
|
|
109
|
+
const onTabRemove = (tabName) => {
|
|
110
|
+
if (!props.name) throw new Error("dynamic tab 必须配置name");
|
|
111
|
+
if (typeof props.config.onTabRemove === "function") props.config.onTabRemove(mForm, tabName, {
|
|
112
|
+
model: props.model,
|
|
113
|
+
prop: props.prop,
|
|
114
|
+
config: props.config
|
|
115
|
+
});
|
|
116
|
+
else {
|
|
117
|
+
props.model[props.name].splice(+tabName, 1);
|
|
118
|
+
if (tabName < activeTabName.value || activeTabName.value >= props.model[props.name].length) {
|
|
119
|
+
activeTabName.value = (+activeTabName.value - 1).toString();
|
|
120
|
+
tabClick(mForm, { name: activeTabName.value }, props);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
emit("change", props.model[props.name]);
|
|
124
|
+
mForm?.$emit("field-change", props.prop, props.model[props.name]);
|
|
125
|
+
};
|
|
126
|
+
const changeHandler = (v, eventData) => {
|
|
127
|
+
emit("change", props.name ? props.model[props.name] : props.model, eventData);
|
|
128
|
+
};
|
|
129
|
+
const onAddDiffCount = (tabIndex) => {
|
|
130
|
+
if (!diffCount.value[tabIndex]) diffCount.value[tabIndex] = 1;
|
|
131
|
+
else diffCount.value[tabIndex] += 1;
|
|
132
|
+
emit("addDiffCount");
|
|
133
|
+
};
|
|
134
|
+
return (_ctx, _cache) => {
|
|
135
|
+
return openBlock(), createBlock(resolveDynamicComponent(unref(tabsComponent)?.component || "el-tabs"), mergeProps({
|
|
136
|
+
modelValue: activeTabName.value,
|
|
137
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => activeTabName.value = $event)
|
|
138
|
+
}, unref(tabsComponent)?.props({
|
|
139
|
+
type: __props.config.tabType,
|
|
140
|
+
editable: __props.config.editable || false,
|
|
141
|
+
tabPosition: __props.config.tabPosition || "top"
|
|
142
|
+
}) || {}, {
|
|
143
|
+
class: `tmagic-design-tabs ${__props.config.dynamic ? "magic-form-dynamic-tab" : "magic-form-tab"}`,
|
|
144
|
+
onTabClick: tabClickHandler,
|
|
145
|
+
onTabAdd,
|
|
146
|
+
onTabRemove
|
|
147
|
+
}), {
|
|
148
|
+
default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(tabs.value, (tab, tabIndex) => {
|
|
149
|
+
return openBlock(), createBlock(resolveDynamicComponent(unref(tabPaneComponent)?.component || "el-tab-pane"), mergeProps({ key: tab[unref(mForm)?.keyProp || "__key"] ?? tabIndex }, { ref_for: true }, unref(tabPaneComponent)?.props({
|
|
150
|
+
name: filter(tab.status) || tabIndex.toString(),
|
|
151
|
+
lazy: tab.lazy || false
|
|
152
|
+
}) || {}), {
|
|
153
|
+
label: withCtx(() => [createElementVNode("span", null, [createTextVNode(toDisplayString(filter(tab.title)), 1), createVNode(unref(TMagicBadge), {
|
|
154
|
+
hidden: !diffCount.value[Number(tabIndex)],
|
|
155
|
+
value: diffCount.value[Number(tabIndex)],
|
|
156
|
+
class: "diff-count-badge"
|
|
157
|
+
}, null, 8, ["hidden", "value"])])]),
|
|
158
|
+
default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(tabItems(tab), (item) => {
|
|
159
|
+
return openBlock(), createBlock(Container_default, {
|
|
160
|
+
key: item[unref(mForm)?.keyProp || "__key"],
|
|
161
|
+
config: item,
|
|
162
|
+
disabled: __props.disabled,
|
|
163
|
+
model: __props.config.dynamic ? (__props.name ? __props.model[__props.name] : __props.model)[tabIndex] : tab.name ? (__props.name ? __props.model[__props.name] : __props.model)[tab.name] : __props.name ? __props.model[__props.name] : __props.model,
|
|
164
|
+
"last-values": unref(isEmpty)(__props.lastValues) ? {} : __props.config.dynamic ? (__props.name ? __props.lastValues[__props.name] : __props.lastValues)[tabIndex] : tab.name ? (__props.name ? __props.lastValues[__props.name] : __props.lastValues)[tab.name] : __props.name ? __props.lastValues[__props.name] : __props.lastValues,
|
|
165
|
+
"is-compare": __props.isCompare,
|
|
166
|
+
prop: __props.config.dynamic ? `${__props.prop}${__props.prop ? "." : ""}${String(tabIndex)}` : tab.name ? `${__props.prop}${__props.prop ? "." : ""}${tab.name}` : __props.prop,
|
|
167
|
+
size: __props.size,
|
|
168
|
+
"label-width": tab.labelWidth || __props.labelWidth,
|
|
169
|
+
"expand-more": __props.expandMore,
|
|
170
|
+
onChange: changeHandler,
|
|
171
|
+
onAddDiffCount: ($event) => onAddDiffCount(Number(tabIndex))
|
|
172
|
+
}, null, 8, [
|
|
173
|
+
"config",
|
|
174
|
+
"disabled",
|
|
175
|
+
"model",
|
|
176
|
+
"last-values",
|
|
177
|
+
"is-compare",
|
|
178
|
+
"prop",
|
|
179
|
+
"size",
|
|
180
|
+
"label-width",
|
|
181
|
+
"expand-more",
|
|
182
|
+
"onAddDiffCount"
|
|
183
|
+
]);
|
|
184
|
+
}), 128))]),
|
|
185
|
+
_: 2
|
|
186
|
+
}, 1040);
|
|
187
|
+
}), 128))]),
|
|
188
|
+
_: 1
|
|
189
|
+
}, 16, ["modelValue", "class"]);
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
//#endregion
|
|
194
|
+
export { Tabs_vue_vue_type_script_setup_true_lang_default as default };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import Cascader_vue_vue_type_script_setup_true_lang_default from "./Cascader.vue_vue_type_script_setup_true_lang.js";
|
|
2
|
+
//#region packages/form/src/fields/Cascader.vue
|
|
3
|
+
var Cascader_default = Cascader_vue_vue_type_script_setup_true_lang_default;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { Cascader_default as default };
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { filterFunction } from "../utils/form.js";
|
|
2
|
+
import { useAddField } from "../utils/useAddField.js";
|
|
3
|
+
import { getConfig } from "../utils/config.js";
|
|
4
|
+
import { computed, createBlock, defineComponent, inject, openBlock, ref, unref, watchEffect } from "vue";
|
|
5
|
+
import { TMagicCascader } from "@tmagic/design";
|
|
6
|
+
//#region packages/form/src/fields/Cascader.vue?vue&type=script&setup=true&lang.ts
|
|
7
|
+
var Cascader_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
8
|
+
name: "MFormCascader",
|
|
9
|
+
__name: "Cascader",
|
|
10
|
+
props: {
|
|
11
|
+
config: {},
|
|
12
|
+
model: {},
|
|
13
|
+
initValues: {},
|
|
14
|
+
values: {},
|
|
15
|
+
name: {},
|
|
16
|
+
prop: {},
|
|
17
|
+
disabled: { type: Boolean },
|
|
18
|
+
size: {},
|
|
19
|
+
lastValues: {},
|
|
20
|
+
isCompare: { type: Boolean }
|
|
21
|
+
},
|
|
22
|
+
emits: ["change"],
|
|
23
|
+
setup(__props, { emit: __emit }) {
|
|
24
|
+
const props = __props;
|
|
25
|
+
const emit = __emit;
|
|
26
|
+
const mForm = inject("mForm");
|
|
27
|
+
useAddField(props.prop);
|
|
28
|
+
const requestFunc = getConfig("request");
|
|
29
|
+
const tMagicCascader = ref();
|
|
30
|
+
const options = ref([]);
|
|
31
|
+
const remoteData = ref(null);
|
|
32
|
+
const checkStrictly = computed(() => filterFunction(mForm, props.config.checkStrictly, props));
|
|
33
|
+
const valueSeparator = computed(() => filterFunction(mForm, props.config.valueSeparator, props));
|
|
34
|
+
const value = computed(() => {
|
|
35
|
+
if (typeof props.model[props.name] === "string" && valueSeparator.value) return props.model[props.name].split(valueSeparator.value);
|
|
36
|
+
return props.model[props.name];
|
|
37
|
+
});
|
|
38
|
+
const updateModelValueHandler = (value) => {
|
|
39
|
+
let result = value;
|
|
40
|
+
if (valueSeparator.value) result = value.join(valueSeparator.value);
|
|
41
|
+
if (typeof result === "undefined") {
|
|
42
|
+
if (Array.isArray(props.model[props.name])) emit("change", []);
|
|
43
|
+
else if (typeof props.model[props.name] === "string") emit("change", "");
|
|
44
|
+
else if (typeof props.model[props.name] === "object") emit("change", null);
|
|
45
|
+
}
|
|
46
|
+
emit("change", result);
|
|
47
|
+
};
|
|
48
|
+
const setRemoteOptions = async function() {
|
|
49
|
+
const { config } = props;
|
|
50
|
+
const { option } = config;
|
|
51
|
+
if (!option) return;
|
|
52
|
+
let { body } = option;
|
|
53
|
+
const postOptions = {
|
|
54
|
+
url: option.url,
|
|
55
|
+
cache: option.cache,
|
|
56
|
+
timeout: option.timeout,
|
|
57
|
+
data: {}
|
|
58
|
+
};
|
|
59
|
+
if (body && mForm) {
|
|
60
|
+
if (typeof body === "function" && props.model && mForm) body = body(mForm, {
|
|
61
|
+
model: props.model,
|
|
62
|
+
formValue: mForm.values,
|
|
63
|
+
formValues: mForm.values,
|
|
64
|
+
config: props.config
|
|
65
|
+
});
|
|
66
|
+
postOptions.data = body;
|
|
67
|
+
}
|
|
68
|
+
const res = await requestFunc(postOptions);
|
|
69
|
+
remoteData.value = res[option.root];
|
|
70
|
+
if (remoteData.value && typeof option?.item === "function") options.value = option.item(res[option.root]);
|
|
71
|
+
};
|
|
72
|
+
if (typeof props.config.options === "function" && props.model && mForm) watchEffect(() => {
|
|
73
|
+
typeof props.config.options === "function" && Promise.resolve(props.config.options(mForm, {
|
|
74
|
+
model: props.model,
|
|
75
|
+
prop: props.prop,
|
|
76
|
+
formValue: mForm?.values
|
|
77
|
+
})).then((data) => {
|
|
78
|
+
options.value = data;
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
else if (!props.config.options?.length || props.config.remote) Promise.resolve(setRemoteOptions());
|
|
82
|
+
else if (Array.isArray(props.config.options)) watchEffect(() => {
|
|
83
|
+
options.value = props.config.options;
|
|
84
|
+
});
|
|
85
|
+
const changeHandler = () => {
|
|
86
|
+
if (!tMagicCascader.value) return;
|
|
87
|
+
tMagicCascader.value.setQuery("");
|
|
88
|
+
tMagicCascader.value.setPreviousQuery(null);
|
|
89
|
+
};
|
|
90
|
+
return (_ctx, _cache) => {
|
|
91
|
+
return openBlock(), createBlock(unref(TMagicCascader), {
|
|
92
|
+
"model-value": value.value,
|
|
93
|
+
ref_key: "tMagicCascader",
|
|
94
|
+
ref: tMagicCascader,
|
|
95
|
+
style: { "width": "100%" },
|
|
96
|
+
clearable: "",
|
|
97
|
+
filterable: "",
|
|
98
|
+
size: __props.size,
|
|
99
|
+
placeholder: __props.config.placeholder,
|
|
100
|
+
disabled: __props.disabled,
|
|
101
|
+
options: options.value,
|
|
102
|
+
"popper-class": __props.config.popperClass,
|
|
103
|
+
props: {
|
|
104
|
+
multiple: __props.config.multiple ?? false,
|
|
105
|
+
emitPath: __props.config.emitPath ?? true,
|
|
106
|
+
checkStrictly: checkStrictly.value ?? false
|
|
107
|
+
},
|
|
108
|
+
"onUpdate:modelValue": updateModelValueHandler,
|
|
109
|
+
onChange: changeHandler
|
|
110
|
+
}, null, 8, [
|
|
111
|
+
"model-value",
|
|
112
|
+
"size",
|
|
113
|
+
"placeholder",
|
|
114
|
+
"disabled",
|
|
115
|
+
"options",
|
|
116
|
+
"popper-class",
|
|
117
|
+
"props"
|
|
118
|
+
]);
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
//#endregion
|
|
123
|
+
export { Cascader_vue_vue_type_script_setup_true_lang_default as default };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import Checkbox_vue_vue_type_script_setup_true_lang_default from "./Checkbox.vue_vue_type_script_setup_true_lang.js";
|
|
2
|
+
//#region packages/form/src/fields/Checkbox.vue
|
|
3
|
+
var Checkbox_default = Checkbox_vue_vue_type_script_setup_true_lang_default;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { Checkbox_default as default };
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { useAddField } from "../utils/useAddField.js";
|
|
2
|
+
import { computed, createBlock, createSlots, createTextVNode, defineComponent, openBlock, toDisplayString, unref, withCtx } from "vue";
|
|
3
|
+
import { TMagicCheckbox } from "@tmagic/design";
|
|
4
|
+
//#region packages/form/src/fields/Checkbox.vue?vue&type=script&setup=true&lang.ts
|
|
5
|
+
var Checkbox_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
6
|
+
name: "MFormCheckbox",
|
|
7
|
+
__name: "Checkbox",
|
|
8
|
+
props: {
|
|
9
|
+
config: {},
|
|
10
|
+
model: {},
|
|
11
|
+
initValues: {},
|
|
12
|
+
values: {},
|
|
13
|
+
name: {},
|
|
14
|
+
prop: {},
|
|
15
|
+
disabled: { type: Boolean },
|
|
16
|
+
size: {},
|
|
17
|
+
lastValues: {},
|
|
18
|
+
isCompare: { type: Boolean }
|
|
19
|
+
},
|
|
20
|
+
emits: ["change"],
|
|
21
|
+
setup(__props, { emit: __emit }) {
|
|
22
|
+
const props = __props;
|
|
23
|
+
const emit = __emit;
|
|
24
|
+
useAddField(props.prop);
|
|
25
|
+
const activeValue = computed(() => {
|
|
26
|
+
if (typeof props.config.activeValue === "undefined") {
|
|
27
|
+
if (props.config.filter === "number") return 1;
|
|
28
|
+
} else return props.config.activeValue;
|
|
29
|
+
});
|
|
30
|
+
const inactiveValue = computed(() => {
|
|
31
|
+
if (typeof props.config.inactiveValue === "undefined") {
|
|
32
|
+
if (props.config.filter === "number") return 0;
|
|
33
|
+
} else return props.config.inactiveValue;
|
|
34
|
+
});
|
|
35
|
+
const changeHandler = (value) => {
|
|
36
|
+
emit("change", value);
|
|
37
|
+
};
|
|
38
|
+
return (_ctx, _cache) => {
|
|
39
|
+
return openBlock(), createBlock(unref(TMagicCheckbox), {
|
|
40
|
+
"model-value": __props.model[__props.name],
|
|
41
|
+
size: __props.size,
|
|
42
|
+
trueValue: activeValue.value,
|
|
43
|
+
falseValue: inactiveValue.value,
|
|
44
|
+
disabled: __props.disabled,
|
|
45
|
+
"onUpdate:modelValue": changeHandler
|
|
46
|
+
}, createSlots({ _: 2 }, [!__props.config.useLabel ? {
|
|
47
|
+
name: "default",
|
|
48
|
+
fn: withCtx(() => [createTextVNode(toDisplayString(__props.config.text), 1)]),
|
|
49
|
+
key: "0"
|
|
50
|
+
} : void 0]), 1032, [
|
|
51
|
+
"model-value",
|
|
52
|
+
"size",
|
|
53
|
+
"trueValue",
|
|
54
|
+
"falseValue",
|
|
55
|
+
"disabled"
|
|
56
|
+
]);
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
//#endregion
|
|
61
|
+
export { Checkbox_vue_vue_type_script_setup_true_lang_default as default };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import CheckboxGroup_vue_vue_type_script_setup_true_lang_default from "./CheckboxGroup.vue_vue_type_script_setup_true_lang.js";
|
|
2
|
+
//#region packages/form/src/fields/CheckboxGroup.vue
|
|
3
|
+
var CheckboxGroup_default = CheckboxGroup_vue_vue_type_script_setup_true_lang_default;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { CheckboxGroup_default as default };
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { filterFunction } from "../utils/form.js";
|
|
2
|
+
import { useAddField } from "../utils/useAddField.js";
|
|
3
|
+
import { Fragment, computed, createBlock, createElementBlock, createTextVNode, defineComponent, inject, openBlock, renderList, toDisplayString, unref, withCtx } from "vue";
|
|
4
|
+
import { TMagicCheckbox, TMagicCheckboxGroup } from "@tmagic/design";
|
|
5
|
+
//#region packages/form/src/fields/CheckboxGroup.vue?vue&type=script&setup=true&lang.ts
|
|
6
|
+
var CheckboxGroup_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
7
|
+
name: "MFormCheckGroup",
|
|
8
|
+
__name: "CheckboxGroup",
|
|
9
|
+
props: {
|
|
10
|
+
config: {},
|
|
11
|
+
model: {},
|
|
12
|
+
initValues: {},
|
|
13
|
+
values: {},
|
|
14
|
+
name: {},
|
|
15
|
+
prop: {},
|
|
16
|
+
disabled: { type: Boolean },
|
|
17
|
+
size: {},
|
|
18
|
+
lastValues: {},
|
|
19
|
+
isCompare: { type: Boolean }
|
|
20
|
+
},
|
|
21
|
+
emits: ["change"],
|
|
22
|
+
setup(__props, { emit: __emit }) {
|
|
23
|
+
const props = __props;
|
|
24
|
+
const emit = __emit;
|
|
25
|
+
useAddField(props.prop);
|
|
26
|
+
if (props.model && !props.model[props.name]) props.model[props.name] = [];
|
|
27
|
+
const changeHandler = (v) => {
|
|
28
|
+
emit("change", v);
|
|
29
|
+
};
|
|
30
|
+
const mForm = inject("mForm");
|
|
31
|
+
const options = computed(() => {
|
|
32
|
+
if (Array.isArray(props.config.options)) return props.config.options;
|
|
33
|
+
if (typeof props.config.options === "function") return filterFunction(mForm, props.config.options, props) || [];
|
|
34
|
+
return [];
|
|
35
|
+
});
|
|
36
|
+
return (_ctx, _cache) => {
|
|
37
|
+
return openBlock(), createBlock(unref(TMagicCheckboxGroup), {
|
|
38
|
+
"model-value": __props.model[__props.name],
|
|
39
|
+
size: __props.size,
|
|
40
|
+
disabled: __props.disabled,
|
|
41
|
+
"onUpdate:modelValue": changeHandler
|
|
42
|
+
}, {
|
|
43
|
+
default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(options.value, (option) => {
|
|
44
|
+
return openBlock(), createBlock(unref(TMagicCheckbox), {
|
|
45
|
+
value: option.value,
|
|
46
|
+
key: option.value,
|
|
47
|
+
disabled: option.disabled
|
|
48
|
+
}, {
|
|
49
|
+
default: withCtx(() => [createTextVNode(toDisplayString(option.text), 1)]),
|
|
50
|
+
_: 2
|
|
51
|
+
}, 1032, ["value", "disabled"]);
|
|
52
|
+
}), 128))]),
|
|
53
|
+
_: 1
|
|
54
|
+
}, 8, [
|
|
55
|
+
"model-value",
|
|
56
|
+
"size",
|
|
57
|
+
"disabled"
|
|
58
|
+
]);
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
//#endregion
|
|
63
|
+
export { CheckboxGroup_vue_vue_type_script_setup_true_lang_default as default };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import ColorPicker_vue_vue_type_script_setup_true_lang_default from "./ColorPicker.vue_vue_type_script_setup_true_lang.js";
|
|
2
|
+
//#region packages/form/src/fields/ColorPicker.vue
|
|
3
|
+
var ColorPicker_default = ColorPicker_vue_vue_type_script_setup_true_lang_default;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { ColorPicker_default as default };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { useAddField } from "../utils/useAddField.js";
|
|
2
|
+
import { createBlock, defineComponent, openBlock, unref } from "vue";
|
|
3
|
+
import { TMagicColorPicker } from "@tmagic/design";
|
|
4
|
+
//#region packages/form/src/fields/ColorPicker.vue?vue&type=script&setup=true&lang.ts
|
|
5
|
+
var ColorPicker_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
6
|
+
name: "MFormColorPicker",
|
|
7
|
+
__name: "ColorPicker",
|
|
8
|
+
props: {
|
|
9
|
+
config: {},
|
|
10
|
+
model: {},
|
|
11
|
+
initValues: {},
|
|
12
|
+
values: {},
|
|
13
|
+
name: {},
|
|
14
|
+
prop: {},
|
|
15
|
+
disabled: { type: Boolean },
|
|
16
|
+
size: {},
|
|
17
|
+
lastValues: {},
|
|
18
|
+
isCompare: { type: Boolean }
|
|
19
|
+
},
|
|
20
|
+
emits: ["change"],
|
|
21
|
+
setup(__props, { emit: __emit }) {
|
|
22
|
+
const props = __props;
|
|
23
|
+
const emit = __emit;
|
|
24
|
+
useAddField(props.prop);
|
|
25
|
+
const changeHandler = (value) => emit("change", value);
|
|
26
|
+
return (_ctx, _cache) => {
|
|
27
|
+
return openBlock(), createBlock(unref(TMagicColorPicker), {
|
|
28
|
+
"model-value": __props.model[__props.name],
|
|
29
|
+
size: __props.size,
|
|
30
|
+
disabled: __props.disabled,
|
|
31
|
+
showAlpha: true,
|
|
32
|
+
"onUpdate:modelValue": changeHandler
|
|
33
|
+
}, null, 8, [
|
|
34
|
+
"model-value",
|
|
35
|
+
"size",
|
|
36
|
+
"disabled"
|
|
37
|
+
]);
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
//#endregion
|
|
42
|
+
export { ColorPicker_vue_vue_type_script_setup_true_lang_default as default };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import Date_vue_vue_type_script_setup_true_lang_default from "./Date.vue_vue_type_script_setup_true_lang.js";
|
|
2
|
+
//#region packages/form/src/fields/Date.vue
|
|
3
|
+
var Date_default = Date_vue_vue_type_script_setup_true_lang_default;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { Date_default as default };
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { datetimeFormatter } from "../utils/form.js";
|
|
2
|
+
import { useAddField } from "../utils/useAddField.js";
|
|
3
|
+
import { createBlock, defineComponent, openBlock, unref } from "vue";
|
|
4
|
+
import { TMagicDatePicker } from "@tmagic/design";
|
|
5
|
+
//#region packages/form/src/fields/Date.vue?vue&type=script&setup=true&lang.ts
|
|
6
|
+
var Date_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
7
|
+
name: "MFormDate",
|
|
8
|
+
__name: "Date",
|
|
9
|
+
props: {
|
|
10
|
+
config: {},
|
|
11
|
+
model: {},
|
|
12
|
+
initValues: {},
|
|
13
|
+
values: {},
|
|
14
|
+
name: {},
|
|
15
|
+
prop: {},
|
|
16
|
+
disabled: { type: Boolean },
|
|
17
|
+
size: {},
|
|
18
|
+
lastValues: {},
|
|
19
|
+
isCompare: { type: Boolean }
|
|
20
|
+
},
|
|
21
|
+
emits: ["change"],
|
|
22
|
+
setup(__props, { emit: __emit }) {
|
|
23
|
+
const props = __props;
|
|
24
|
+
const emit = __emit;
|
|
25
|
+
useAddField(props.prop);
|
|
26
|
+
props.model[props.name] = datetimeFormatter(props.model[props.name], "", props.config.valueFormat || "YYYY/MM/DD");
|
|
27
|
+
const changeHandler = (v) => {
|
|
28
|
+
emit("change", v);
|
|
29
|
+
};
|
|
30
|
+
return (_ctx, _cache) => {
|
|
31
|
+
return openBlock(), createBlock(unref(TMagicDatePicker), {
|
|
32
|
+
"model-value": __props.model[__props.name],
|
|
33
|
+
type: "date",
|
|
34
|
+
size: __props.size,
|
|
35
|
+
placeholder: __props.config.placeholder,
|
|
36
|
+
disabled: __props.disabled,
|
|
37
|
+
format: __props.config.format || "YYYY/MM/DD",
|
|
38
|
+
"value-format": __props.config.valueFormat || "YYYY/MM/DD",
|
|
39
|
+
"onUpdate:modelValue": changeHandler
|
|
40
|
+
}, null, 8, [
|
|
41
|
+
"model-value",
|
|
42
|
+
"size",
|
|
43
|
+
"placeholder",
|
|
44
|
+
"disabled",
|
|
45
|
+
"format",
|
|
46
|
+
"value-format"
|
|
47
|
+
]);
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
//#endregion
|
|
52
|
+
export { Date_vue_vue_type_script_setup_true_lang_default as default };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import DateTime_vue_vue_type_script_setup_true_lang_default from "./DateTime.vue_vue_type_script_setup_true_lang.js";
|
|
2
|
+
//#region packages/form/src/fields/DateTime.vue
|
|
3
|
+
var DateTime_default = DateTime_vue_vue_type_script_setup_true_lang_default;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { DateTime_default as default };
|