@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.
Files changed (73) hide show
  1. package/dist/tmagic-form.es.js +53 -19
  2. package/dist/tmagic-form.es.js.map +1 -1
  3. package/dist/tmagic-form.umd.js +54 -20
  4. package/dist/tmagic-form.umd.js.map +1 -1
  5. package/dist/types/src/fields/DynamicField.vue.d.ts +2 -2
  6. package/dist/types/src/index.d.ts +1 -1
  7. package/dist/types/src/schema.d.ts +8 -0
  8. package/package.json +10 -14
  9. package/src/containers/Container.vue +15 -2
  10. package/src/containers/Table.vue +1 -1
  11. package/src/containers/Tabs.vue +13 -5
  12. package/src/fields/Daterange.vue +8 -0
  13. package/src/fields/Select.vue +3 -0
  14. package/src/schema.ts +8 -0
  15. package/src/utils/form.ts +2 -0
  16. package/LICENSE +0 -5432
  17. package/coverage/clover.xml +0 -1360
  18. package/coverage/coverage-final.json +0 -38
  19. package/coverage/lcov-report/base.css +0 -224
  20. package/coverage/lcov-report/block-navigation.js +0 -87
  21. package/coverage/lcov-report/favicon.png +0 -0
  22. package/coverage/lcov-report/index.html +0 -176
  23. package/coverage/lcov-report/prettify.css +0 -1
  24. package/coverage/lcov-report/prettify.js +0 -2
  25. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  26. package/coverage/lcov-report/sorter.js +0 -196
  27. package/coverage/lcov-report/src/Form.vue.html +0 -676
  28. package/coverage/lcov-report/src/FormDialog.vue.html +0 -583
  29. package/coverage/lcov-report/src/containers/Col.vue.html +0 -253
  30. package/coverage/lcov-report/src/containers/Container.vue.html +0 -925
  31. package/coverage/lcov-report/src/containers/Fieldset.vue.html +0 -499
  32. package/coverage/lcov-report/src/containers/GroupList.vue.html +0 -541
  33. package/coverage/lcov-report/src/containers/GroupListItem.vue.html +0 -562
  34. package/coverage/lcov-report/src/containers/Panel.vue.html +0 -403
  35. package/coverage/lcov-report/src/containers/Row.vue.html +0 -277
  36. package/coverage/lcov-report/src/containers/Step.vue.html +0 -331
  37. package/coverage/lcov-report/src/containers/Table.vue.html +0 -1987
  38. package/coverage/lcov-report/src/containers/Tabs.vue.html +0 -625
  39. package/coverage/lcov-report/src/containers/index.html +0 -251
  40. package/coverage/lcov-report/src/fields/Cascader.vue.html +0 -526
  41. package/coverage/lcov-report/src/fields/Checkbox.vue.html +0 -286
  42. package/coverage/lcov-report/src/fields/CheckboxGroup.vue.html +0 -217
  43. package/coverage/lcov-report/src/fields/ColorPicker.vue.html +0 -199
  44. package/coverage/lcov-report/src/fields/Date.vue.html +0 -238
  45. package/coverage/lcov-report/src/fields/DateTime.vue.html +0 -262
  46. package/coverage/lcov-report/src/fields/Daterange.vue.html +0 -310
  47. package/coverage/lcov-report/src/fields/Display.vue.html +0 -187
  48. package/coverage/lcov-report/src/fields/DynamicField.vue.html +0 -412
  49. package/coverage/lcov-report/src/fields/Hidden.vue.html +0 -172
  50. package/coverage/lcov-report/src/fields/Link.vue.html +0 -421
  51. package/coverage/lcov-report/src/fields/Number.vue.html +0 -244
  52. package/coverage/lcov-report/src/fields/RadioGroup.vue.html +0 -184
  53. package/coverage/lcov-report/src/fields/Select.vue.html +0 -1243
  54. package/coverage/lcov-report/src/fields/Switch.vue.html +0 -280
  55. package/coverage/lcov-report/src/fields/Text.vue.html +0 -487
  56. package/coverage/lcov-report/src/fields/Textarea.vue.html +0 -265
  57. package/coverage/lcov-report/src/fields/Time.vue.html +0 -229
  58. package/coverage/lcov-report/src/fields/index.html +0 -371
  59. package/coverage/lcov-report/src/index.html +0 -146
  60. package/coverage/lcov-report/src/index.ts.html +0 -466
  61. package/coverage/lcov-report/src/theme/index.html +0 -116
  62. package/coverage/lcov-report/src/theme/index.scss.html +0 -112
  63. package/coverage/lcov-report/src/utils/config.ts.html +0 -166
  64. package/coverage/lcov-report/src/utils/createForm.ts.html +0 -160
  65. package/coverage/lcov-report/src/utils/fieldProps.ts.html +0 -202
  66. package/coverage/lcov-report/src/utils/form.ts.html +0 -895
  67. package/coverage/lcov-report/src/utils/index.html +0 -176
  68. package/coverage/lcov-report/src/utils/useAddField.ts.html +0 -205
  69. package/coverage/lcov.info +0 -3061
  70. package/dist/types/src/Form.vue.d.ts +0 -362
  71. package/dist/types/src/FormDialog.vue.d.ts +0 -757
  72. package/dist/types/src/containers/Table.vue.d.ts +0 -2601
  73. package/dist/types/src/fields/Link.vue.d.ts +0 -1596
@@ -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.vue, global.icons, global.lodashEs, global.elementPlus, global.Sortable, global.utils));
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(() => name.value ? `${props.prop}${props.prop ? "." : ""}${name.value}` : props.prop);
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, 8, ["size", "model", "config", "name", "prop", "step-active", "expand-more", "label-width", "onChange"])) : _ctx.type && _ctx.display ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 2 }, [
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, 8, ["size", "model", "config", "name", "disabled", "prop", "onChange"]))
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, 8, ["size", "model", "config", "name", "disabled", "prop", "onChange"])),
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, { model: props.model });
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, { model: props.model });
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) => {