@tmagic/form 1.0.0-rc.1 → 1.0.0-rc.10
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/dist/tmagic-form.es.js +53 -19
- package/dist/tmagic-form.es.js.map +1 -1
- package/dist/tmagic-form.umd.js +54 -20
- package/dist/tmagic-form.umd.js.map +1 -1
- package/dist/types/src/fields/DynamicField.vue.d.ts +2 -2
- package/dist/types/src/index.d.ts +1 -1
- package/dist/types/src/schema.d.ts +8 -0
- package/package.json +10 -14
- package/src/containers/Container.vue +15 -2
- package/src/containers/Table.vue +1 -1
- package/src/containers/Tabs.vue +13 -5
- package/src/fields/Daterange.vue +8 -0
- package/src/fields/Select.vue +3 -0
- package/src/schema.ts +8 -0
- package/src/utils/form.ts +2 -0
- package/LICENSE +0 -5432
- package/coverage/clover.xml +0 -1360
- package/coverage/coverage-final.json +0 -38
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -176
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -196
- package/coverage/lcov-report/src/Form.vue.html +0 -676
- package/coverage/lcov-report/src/FormDialog.vue.html +0 -583
- package/coverage/lcov-report/src/containers/Col.vue.html +0 -253
- package/coverage/lcov-report/src/containers/Container.vue.html +0 -925
- package/coverage/lcov-report/src/containers/Fieldset.vue.html +0 -499
- package/coverage/lcov-report/src/containers/GroupList.vue.html +0 -541
- package/coverage/lcov-report/src/containers/GroupListItem.vue.html +0 -562
- package/coverage/lcov-report/src/containers/Panel.vue.html +0 -403
- package/coverage/lcov-report/src/containers/Row.vue.html +0 -277
- package/coverage/lcov-report/src/containers/Step.vue.html +0 -331
- package/coverage/lcov-report/src/containers/Table.vue.html +0 -1987
- package/coverage/lcov-report/src/containers/Tabs.vue.html +0 -625
- package/coverage/lcov-report/src/containers/index.html +0 -251
- package/coverage/lcov-report/src/fields/Cascader.vue.html +0 -526
- package/coverage/lcov-report/src/fields/Checkbox.vue.html +0 -286
- package/coverage/lcov-report/src/fields/CheckboxGroup.vue.html +0 -217
- package/coverage/lcov-report/src/fields/ColorPicker.vue.html +0 -199
- package/coverage/lcov-report/src/fields/Date.vue.html +0 -238
- package/coverage/lcov-report/src/fields/DateTime.vue.html +0 -262
- package/coverage/lcov-report/src/fields/Daterange.vue.html +0 -310
- package/coverage/lcov-report/src/fields/Display.vue.html +0 -187
- package/coverage/lcov-report/src/fields/DynamicField.vue.html +0 -412
- package/coverage/lcov-report/src/fields/Hidden.vue.html +0 -172
- package/coverage/lcov-report/src/fields/Link.vue.html +0 -421
- package/coverage/lcov-report/src/fields/Number.vue.html +0 -244
- package/coverage/lcov-report/src/fields/RadioGroup.vue.html +0 -184
- package/coverage/lcov-report/src/fields/Select.vue.html +0 -1243
- package/coverage/lcov-report/src/fields/Switch.vue.html +0 -280
- package/coverage/lcov-report/src/fields/Text.vue.html +0 -487
- package/coverage/lcov-report/src/fields/Textarea.vue.html +0 -265
- package/coverage/lcov-report/src/fields/Time.vue.html +0 -229
- package/coverage/lcov-report/src/fields/index.html +0 -371
- package/coverage/lcov-report/src/index.html +0 -146
- package/coverage/lcov-report/src/index.ts.html +0 -466
- package/coverage/lcov-report/src/theme/index.html +0 -116
- package/coverage/lcov-report/src/theme/index.scss.html +0 -112
- package/coverage/lcov-report/src/utils/config.ts.html +0 -166
- package/coverage/lcov-report/src/utils/createForm.ts.html +0 -160
- package/coverage/lcov-report/src/utils/fieldProps.ts.html +0 -202
- package/coverage/lcov-report/src/utils/form.ts.html +0 -895
- package/coverage/lcov-report/src/utils/index.html +0 -176
- package/coverage/lcov-report/src/utils/useAddField.ts.html +0 -205
- package/coverage/lcov.info +0 -3061
- package/dist/types/src/Form.vue.d.ts +0 -362
- package/dist/types/src/FormDialog.vue.d.ts +0 -757
- package/dist/types/src/containers/Table.vue.d.ts +0 -2601
- package/dist/types/src/fields/Link.vue.d.ts +0 -1596
package/dist/tmagic-form.umd.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
2
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('vue'), require('@element-plus/icons'), require('lodash-es'), require('element-plus'), require('sortablejs'), require('@tmagic/utils')) :
|
|
3
3
|
typeof define === 'function' && define.amd ? define(['exports', 'vue', '@element-plus/icons', 'lodash-es', 'element-plus', 'sortablejs', '@tmagic/utils'], factory) :
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.TMagicForm = {}, global.
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.TMagicForm = {}, global.Vue, global.icons, global.lodashEs, global.ElementPlus, global.Sortable, global.utils));
|
|
5
5
|
})(this, (function (exports, vue, icons, lodashEs, elementPlus, Sortable, utils) { 'use strict';
|
|
6
6
|
|
|
7
7
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -117,7 +117,8 @@
|
|
|
117
117
|
model: props.model,
|
|
118
118
|
parent: mForm?.parentValues || {},
|
|
119
119
|
formValue: mForm?.values || props.model,
|
|
120
|
-
prop: props.prop
|
|
120
|
+
prop: props.prop,
|
|
121
|
+
config: props.config
|
|
121
122
|
});
|
|
122
123
|
};
|
|
123
124
|
const display = function(mForm, config, props) {
|
|
@@ -148,7 +149,8 @@
|
|
|
148
149
|
model: props.model,
|
|
149
150
|
parent: mForm?.parentValues || {},
|
|
150
151
|
formValue: mForm?.values || props.model,
|
|
151
|
-
prop: props.prop
|
|
152
|
+
prop: props.prop,
|
|
153
|
+
config: props.config
|
|
152
154
|
}, mForm);
|
|
153
155
|
}
|
|
154
156
|
return item;
|
|
@@ -208,7 +210,18 @@
|
|
|
208
210
|
const expand = vue.ref(false);
|
|
209
211
|
const name = vue.computed(() => props.config.name || "");
|
|
210
212
|
const items = vue.computed(() => props.config.items);
|
|
211
|
-
const itemProp = vue.computed(() =>
|
|
213
|
+
const itemProp = vue.computed(() => {
|
|
214
|
+
let n = "";
|
|
215
|
+
const { names } = props.config;
|
|
216
|
+
if (names?.[0]) {
|
|
217
|
+
[n] = names;
|
|
218
|
+
} else if (name.value) {
|
|
219
|
+
n = name.value;
|
|
220
|
+
} else {
|
|
221
|
+
return props.prop;
|
|
222
|
+
}
|
|
223
|
+
return `${props.prop}${props.prop ? "." : ""}${n}`;
|
|
224
|
+
});
|
|
212
225
|
const tagName = vue.computed(() => {
|
|
213
226
|
const component = vue.resolveComponent(`m-${items.value ? "form" : "fields"}-${type.value}`);
|
|
214
227
|
if (typeof component !== "string")
|
|
@@ -248,7 +261,8 @@
|
|
|
248
261
|
model: props.model,
|
|
249
262
|
values: mForm?.initValues,
|
|
250
263
|
formValue: mForm?.values,
|
|
251
|
-
prop: itemProp.value
|
|
264
|
+
prop: itemProp.value,
|
|
265
|
+
config: props.config
|
|
252
266
|
});
|
|
253
267
|
}
|
|
254
268
|
if (filter === "number") {
|
|
@@ -262,7 +276,8 @@
|
|
|
262
276
|
model: props.model,
|
|
263
277
|
values: mForm?.initValues,
|
|
264
278
|
formValue: mForm?.values,
|
|
265
|
-
prop: itemProp.value
|
|
279
|
+
prop: itemProp.value,
|
|
280
|
+
config: props.config
|
|
266
281
|
});
|
|
267
282
|
}
|
|
268
283
|
};
|
|
@@ -347,10 +362,10 @@
|
|
|
347
362
|
"expand-more": _ctx.expand,
|
|
348
363
|
"label-width": _ctx.itemLabelWidth,
|
|
349
364
|
onChange: _ctx.onChangeHandler
|
|
350
|
-
}, null,
|
|
365
|
+
}, null, 40, ["size", "model", "config", "name", "prop", "step-active", "expand-more", "label-width", "onChange"])) : _ctx.type && _ctx.display ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 2 }, [
|
|
351
366
|
vue.createVNode(_component_el_form_item, {
|
|
352
367
|
style: vue.normalizeStyle(_ctx.config.tip ? "flex: 1" : ""),
|
|
353
|
-
class: vue.normalizeClass({ hidden: _ctx.itemLabelWidth === 0 || !_ctx.config.text }),
|
|
368
|
+
class: vue.normalizeClass({ hidden: `${_ctx.itemLabelWidth}` === "0" || !_ctx.config.text }),
|
|
354
369
|
prop: _ctx.itemProp,
|
|
355
370
|
"label-width": _ctx.itemLabelWidth,
|
|
356
371
|
rules: _ctx.rule
|
|
@@ -375,7 +390,7 @@
|
|
|
375
390
|
disabled: _ctx.disabled,
|
|
376
391
|
prop: _ctx.itemProp,
|
|
377
392
|
onChange: _ctx.onChangeHandler
|
|
378
|
-
}, null,
|
|
393
|
+
}, null, 40, ["size", "model", "config", "name", "disabled", "prop", "onChange"]))
|
|
379
394
|
]),
|
|
380
395
|
_: 1
|
|
381
396
|
})) : (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.tagName), {
|
|
@@ -387,7 +402,7 @@
|
|
|
387
402
|
disabled: _ctx.disabled,
|
|
388
403
|
prop: _ctx.itemProp,
|
|
389
404
|
onChange: _ctx.onChangeHandler
|
|
390
|
-
}, null,
|
|
405
|
+
}, null, 40, ["size", "model", "config", "name", "disabled", "prop", "onChange"])),
|
|
391
406
|
_ctx.extra ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
392
407
|
key: 2,
|
|
393
408
|
innerHTML: _ctx.extra,
|
|
@@ -1478,7 +1493,7 @@
|
|
|
1478
1493
|
}
|
|
1479
1494
|
emit("select", selection, row);
|
|
1480
1495
|
if (typeof props.config.onSelect === "function") {
|
|
1481
|
-
props.config.onSelect(mForm, { selection, row });
|
|
1496
|
+
props.config.onSelect(mForm, { selection, row, config: props.config });
|
|
1482
1497
|
}
|
|
1483
1498
|
},
|
|
1484
1499
|
toggleRowSelection(row, selected) {
|
|
@@ -1883,11 +1898,11 @@
|
|
|
1883
1898
|
const { config, model, prop } = props;
|
|
1884
1899
|
tab.name = tab.paneName;
|
|
1885
1900
|
if (typeof config.onTabClick === "function") {
|
|
1886
|
-
config.onTabClick(mForm, tab, { model, formValue: mForm?.values, prop });
|
|
1901
|
+
config.onTabClick(mForm, tab, { model, formValue: mForm?.values, prop, config });
|
|
1887
1902
|
}
|
|
1888
1903
|
const tabConfig = config.items.find((item) => tab.name === item.status);
|
|
1889
1904
|
if (tabConfig && typeof tabConfig.onTabClick === "function") {
|
|
1890
|
-
tabConfig.onTabClick(mForm, tab, { model, formValue: mForm?.values, prop });
|
|
1905
|
+
tabConfig.onTabClick(mForm, tab, { model, formValue: mForm?.values, prop, config });
|
|
1891
1906
|
}
|
|
1892
1907
|
};
|
|
1893
1908
|
const Tab = vue.defineComponent({
|
|
@@ -1942,7 +1957,11 @@
|
|
|
1942
1957
|
if (!props.config.name)
|
|
1943
1958
|
throw new Error("dynamic tab \u5FC5\u987B\u914D\u7F6Ename");
|
|
1944
1959
|
if (typeof props.config.onTabAdd === "function") {
|
|
1945
|
-
props.config.onTabAdd(mForm, {
|
|
1960
|
+
props.config.onTabAdd(mForm, {
|
|
1961
|
+
model: props.model,
|
|
1962
|
+
prop: props.prop,
|
|
1963
|
+
config: props.config
|
|
1964
|
+
});
|
|
1946
1965
|
} else if (tabs.value.length > 0) {
|
|
1947
1966
|
const newObj = lodashEs.cloneDeep(tabs.value[0]);
|
|
1948
1967
|
newObj.title = `\u6807\u7B7E${tabs.value.length + 1}`;
|
|
@@ -1955,7 +1974,11 @@
|
|
|
1955
1974
|
if (!props.config.name)
|
|
1956
1975
|
throw new Error("dynamic tab \u5FC5\u987B\u914D\u7F6Ename");
|
|
1957
1976
|
if (typeof props.config.onTabRemove === "function") {
|
|
1958
|
-
props.config.onTabRemove(mForm, tabName, {
|
|
1977
|
+
props.config.onTabRemove(mForm, tabName, {
|
|
1978
|
+
model: props.model,
|
|
1979
|
+
prop: props.prop,
|
|
1980
|
+
config: props.config
|
|
1981
|
+
});
|
|
1959
1982
|
} else {
|
|
1960
1983
|
props.model[props.config.name].splice(+tabName, 1);
|
|
1961
1984
|
if (tabName < activeTabName.value || activeTabName.value >= props.model[props.config.name].length) {
|
|
@@ -1970,7 +1993,7 @@
|
|
|
1970
1993
|
changeHandler: () => {
|
|
1971
1994
|
emit("change", props.model);
|
|
1972
1995
|
if (typeof props.config.onChange === "function") {
|
|
1973
|
-
props.config.onChange(mForm, { model: props.model });
|
|
1996
|
+
props.config.onChange(mForm, { model: props.model, prop: props.prop, config: props.config });
|
|
1974
1997
|
}
|
|
1975
1998
|
}
|
|
1976
1999
|
};
|
|
@@ -2393,6 +2416,14 @@
|
|
|
2393
2416
|
});
|
|
2394
2417
|
} else if (props.model && props.name && v instanceof Date) {
|
|
2395
2418
|
props.model[props.name] = utils.datetimeFormatter(v.toString(), "");
|
|
2419
|
+
} else if (names?.length) {
|
|
2420
|
+
names.forEach((item) => {
|
|
2421
|
+
if (props.model) {
|
|
2422
|
+
props.model[item] = void 0;
|
|
2423
|
+
}
|
|
2424
|
+
});
|
|
2425
|
+
} else if (props.name) {
|
|
2426
|
+
props.model[props.name] = void 0;
|
|
2396
2427
|
}
|
|
2397
2428
|
};
|
|
2398
2429
|
return {
|
|
@@ -2889,7 +2920,8 @@
|
|
|
2889
2920
|
body = body(mForm, {
|
|
2890
2921
|
model: props.model,
|
|
2891
2922
|
formValue: mForm?.values,
|
|
2892
|
-
formValues: mForm?.values
|
|
2923
|
+
formValues: mForm?.values,
|
|
2924
|
+
config: props.config
|
|
2893
2925
|
});
|
|
2894
2926
|
}
|
|
2895
2927
|
body.query = query.value;
|
|
@@ -2912,7 +2944,8 @@
|
|
|
2912
2944
|
res = option.afterRequest(mForm, res, {
|
|
2913
2945
|
model: props.model,
|
|
2914
2946
|
formValue: mForm?.values,
|
|
2915
|
-
formValues: mForm?.values
|
|
2947
|
+
formValues: mForm?.values,
|
|
2948
|
+
config: props.config
|
|
2916
2949
|
});
|
|
2917
2950
|
}
|
|
2918
2951
|
const optionsData = res[option.root];
|
|
@@ -3004,7 +3037,8 @@
|
|
|
3004
3037
|
model: props.model,
|
|
3005
3038
|
prop: props.prop,
|
|
3006
3039
|
formValues: mForm?.values,
|
|
3007
|
-
formValue: mForm?.values
|
|
3040
|
+
formValue: mForm?.values,
|
|
3041
|
+
config: props.config
|
|
3008
3042
|
})).then((data) => {
|
|
3009
3043
|
options.value = data;
|
|
3010
3044
|
});
|
|
@@ -3773,7 +3807,7 @@
|
|
|
3773
3807
|
}
|
|
3774
3808
|
var FormDialog = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
|
|
3775
3809
|
|
|
3776
|
-
var index$1 =
|
|
3810
|
+
var index$1 = /* #__PURE__ */ (() => ".m-form-dialog .el-dialog__body {\n padding: 0 !important;\n}\n.m-form-dialog .m-dialog-body {\n padding: 0 20px;\n}\n.m-form-dialog .el-table .m-form-item .el-form-item {\n margin-bottom: 0;\n}\n\n.fade-enter-active,\n.fade-leave-active {\n transition: opacity 0.5s;\n}\n\n.fade-enter, .fade-leave-to {\n opacity: 0;\n}\n\n.m-form .m-form-tip {\n color: rgba(0, 0, 0, 0.45);\n font-size: 12px;\n transition: color 0.3s cubic-bezier(0.215, 0.61, 0.355, 1);\n}\n.m-form .m-form-schematic {\n max-width: 50%;\n height: 100%;\n}\n.m-form .el-table .cell > div.m-form-container {\n display: block;\n}\n.m-form .el-tabs {\n margin-bottom: 10px;\n}\n.m-form .el-form-item.hidden .el-form-item__label {\n display: none;\n}\n\n.magic-datetime-picker-popper .el-picker-panel__footer button:first-child {\n display: none;\n}\n\ndiv.m-fields-link {\n width: fit-content;\n}\n\nfieldset.m-fieldset {\n position: relative;\n border: 1px solid rgb(229, 229, 229);\n margin-top: 10px;\n margin-bottom: 10px;\n min-inline-size: auto;\n}\nfieldset.m-fieldset legend {\n font-size: 14px;\n position: absolute;\n border: 0;\n top: -10px;\n left: 20px;\n background: rgb(255, 255, 255);\n width: auto;\n padding: 0px 3px;\n font-weight: bold;\n line-height: 20px;\n}\nfieldset.m-fieldset .m-form-tip {\n margin-left: 5px;\n}\n\n.m-fields-group-list .el-button--text {\n padding: 0;\n margin-bottom: 7px;\n}\n.m-fields-group-list .el-tree-node__expand-icon {\n padding: 0;\n margin-bottom: 7px;\n}\n.m-fields-group-list .el-tree-node__expand-icon.expand {\n transform: rotate(90deg);\n}\n.m-fields-group-list .m-fields-group-list-item {\n border-bottom: 1px solid #ebeef5;\n margin-bottom: 7px;\n}\n.m-fields-group-list .m-fields-group-list-item:last-of-type {\n border-bottom: 0;\n}\n\n.m-form-panel .el-card__header:hover {\n background: #f2f6fc;\n}\n.m-form-panel .el-card__header a {\n color: #409eff;\n}\n.m-form-panel .el-card__body {\n padding: 10px;\n}\n.m-form-panel .m-form-tip {\n margin-left: 5px;\n}\n\n.m-fields-table {\n width: 100%;\n}\n.m-fields-table.fixed {\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n z-index: 100;\n}\n.m-fields-table.fixed::before {\n content: \" \";\n display: block;\n background: rgba(0, 0, 0, 0.5);\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n z-index: 100;\n}\n.m-fields-table.fixed > .el-form-item__content {\n z-index: 101;\n position: relative;\n margin: 10vh auto;\n max-width: fit-content;\n}\n.m-fields-table.fixed table {\n width: 95vw !important;\n}\n.m-fields-table th {\n background-color: #f2f2f2 !important;\n color: #333 !important;\n}\n.m-fields-table .el-table th {\n padding: 0 !important;\n}\n.m-fields-table .el-table__column--dropable {\n cursor: move;\n}\n.m-fields-table .el-form-item__content .el-input-group {\n vertical-align: middle;\n}\n.m-fields-table.m-fields-table-item-extra tr.expanded td {\n border-bottom: 0;\n}\n.m-fields-table .el-table__expanded-cell .m-form-tip {\n margin-left: 80px;\n}\n.m-fields-table .el-form-item {\n margin-bottom: 0;\n}\n\n.m-select {\n width: 100%;\n}")();
|
|
3777
3811
|
|
|
3778
3812
|
const defaultInstallOpt = {};
|
|
3779
3813
|
const install = (app, opt) => {
|