@tmagic/form 1.0.0-rc.1 → 1.0.0-rc.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.
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
@@ -114,7 +114,8 @@ const filterFunction = (mForm, config, props) => {
114
114
  model: props.model,
115
115
  parent: mForm?.parentValues || {},
116
116
  formValue: mForm?.values || props.model,
117
- prop: props.prop
117
+ prop: props.prop,
118
+ config: props.config
118
119
  });
119
120
  };
120
121
  const display = function(mForm, config, props) {
@@ -145,7 +146,8 @@ const getRules = function(mForm, rules = [], props) {
145
146
  model: props.model,
146
147
  parent: mForm?.parentValues || {},
147
148
  formValue: mForm?.values || props.model,
148
- prop: props.prop
149
+ prop: props.prop,
150
+ config: props.config
149
151
  }, mForm);
150
152
  }
151
153
  return item;
@@ -205,7 +207,18 @@ const _sfc_main$t = defineComponent({
205
207
  const expand = ref(false);
206
208
  const name = computed(() => props.config.name || "");
207
209
  const items = computed(() => props.config.items);
208
- const itemProp = computed(() => name.value ? `${props.prop}${props.prop ? "." : ""}${name.value}` : props.prop);
210
+ const itemProp = computed(() => {
211
+ let n = "";
212
+ const { names } = props.config;
213
+ if (names?.[0]) {
214
+ [n] = names;
215
+ } else if (name.value) {
216
+ n = name.value;
217
+ } else {
218
+ return props.prop;
219
+ }
220
+ return `${props.prop}${props.prop ? "." : ""}${n}`;
221
+ });
209
222
  const tagName = computed(() => {
210
223
  const component = resolveComponent(`m-${items.value ? "form" : "fields"}-${type.value}`);
211
224
  if (typeof component !== "string")
@@ -245,7 +258,8 @@ const _sfc_main$t = defineComponent({
245
258
  model: props.model,
246
259
  values: mForm?.initValues,
247
260
  formValue: mForm?.values,
248
- prop: itemProp.value
261
+ prop: itemProp.value,
262
+ config: props.config
249
263
  });
250
264
  }
251
265
  if (filter === "number") {
@@ -259,7 +273,8 @@ const _sfc_main$t = defineComponent({
259
273
  model: props.model,
260
274
  values: mForm?.initValues,
261
275
  formValue: mForm?.values,
262
- prop: itemProp.value
276
+ prop: itemProp.value,
277
+ config: props.config
263
278
  });
264
279
  }
265
280
  };
@@ -344,10 +359,10 @@ function _sfc_render$q(_ctx, _cache, $props, $setup, $data, $options) {
344
359
  "expand-more": _ctx.expand,
345
360
  "label-width": _ctx.itemLabelWidth,
346
361
  onChange: _ctx.onChangeHandler
347
- }, null, 8, ["size", "model", "config", "name", "prop", "step-active", "expand-more", "label-width", "onChange"])) : _ctx.type && _ctx.display ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [
362
+ }, null, 40, ["size", "model", "config", "name", "prop", "step-active", "expand-more", "label-width", "onChange"])) : _ctx.type && _ctx.display ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [
348
363
  createVNode(_component_el_form_item, {
349
364
  style: normalizeStyle(_ctx.config.tip ? "flex: 1" : ""),
350
- class: normalizeClass({ hidden: _ctx.itemLabelWidth === 0 || !_ctx.config.text }),
365
+ class: normalizeClass({ hidden: `${_ctx.itemLabelWidth}` === "0" || !_ctx.config.text }),
351
366
  prop: _ctx.itemProp,
352
367
  "label-width": _ctx.itemLabelWidth,
353
368
  rules: _ctx.rule
@@ -372,7 +387,7 @@ function _sfc_render$q(_ctx, _cache, $props, $setup, $data, $options) {
372
387
  disabled: _ctx.disabled,
373
388
  prop: _ctx.itemProp,
374
389
  onChange: _ctx.onChangeHandler
375
- }, null, 8, ["size", "model", "config", "name", "disabled", "prop", "onChange"]))
390
+ }, null, 40, ["size", "model", "config", "name", "disabled", "prop", "onChange"]))
376
391
  ]),
377
392
  _: 1
378
393
  })) : (openBlock(), createBlock(resolveDynamicComponent(_ctx.tagName), {
@@ -384,7 +399,7 @@ function _sfc_render$q(_ctx, _cache, $props, $setup, $data, $options) {
384
399
  disabled: _ctx.disabled,
385
400
  prop: _ctx.itemProp,
386
401
  onChange: _ctx.onChangeHandler
387
- }, null, 8, ["size", "model", "config", "name", "disabled", "prop", "onChange"])),
402
+ }, null, 40, ["size", "model", "config", "name", "disabled", "prop", "onChange"])),
388
403
  _ctx.extra ? (openBlock(), createElementBlock("div", {
389
404
  key: 2,
390
405
  innerHTML: _ctx.extra,
@@ -1475,7 +1490,7 @@ const _sfc_main$l = defineComponent({
1475
1490
  }
1476
1491
  emit("select", selection, row);
1477
1492
  if (typeof props.config.onSelect === "function") {
1478
- props.config.onSelect(mForm, { selection, row });
1493
+ props.config.onSelect(mForm, { selection, row, config: props.config });
1479
1494
  }
1480
1495
  },
1481
1496
  toggleRowSelection(row, selected) {
@@ -1880,11 +1895,11 @@ const tabClickHandler = (mForm, tab, props) => {
1880
1895
  const { config, model, prop } = props;
1881
1896
  tab.name = tab.paneName;
1882
1897
  if (typeof config.onTabClick === "function") {
1883
- config.onTabClick(mForm, tab, { model, formValue: mForm?.values, prop });
1898
+ config.onTabClick(mForm, tab, { model, formValue: mForm?.values, prop, config });
1884
1899
  }
1885
1900
  const tabConfig = config.items.find((item) => tab.name === item.status);
1886
1901
  if (tabConfig && typeof tabConfig.onTabClick === "function") {
1887
- tabConfig.onTabClick(mForm, tab, { model, formValue: mForm?.values, prop });
1902
+ tabConfig.onTabClick(mForm, tab, { model, formValue: mForm?.values, prop, config });
1888
1903
  }
1889
1904
  };
1890
1905
  const Tab = defineComponent({
@@ -1939,7 +1954,11 @@ const Tab = defineComponent({
1939
1954
  if (!props.config.name)
1940
1955
  throw new Error("dynamic tab \u5FC5\u987B\u914D\u7F6Ename");
1941
1956
  if (typeof props.config.onTabAdd === "function") {
1942
- props.config.onTabAdd(mForm, { model: props.model });
1957
+ props.config.onTabAdd(mForm, {
1958
+ model: props.model,
1959
+ prop: props.prop,
1960
+ config: props.config
1961
+ });
1943
1962
  } else if (tabs.value.length > 0) {
1944
1963
  const newObj = cloneDeep(tabs.value[0]);
1945
1964
  newObj.title = `\u6807\u7B7E${tabs.value.length + 1}`;
@@ -1952,7 +1971,11 @@ const Tab = defineComponent({
1952
1971
  if (!props.config.name)
1953
1972
  throw new Error("dynamic tab \u5FC5\u987B\u914D\u7F6Ename");
1954
1973
  if (typeof props.config.onTabRemove === "function") {
1955
- props.config.onTabRemove(mForm, tabName, { model: props.model });
1974
+ props.config.onTabRemove(mForm, tabName, {
1975
+ model: props.model,
1976
+ prop: props.prop,
1977
+ config: props.config
1978
+ });
1956
1979
  } else {
1957
1980
  props.model[props.config.name].splice(+tabName, 1);
1958
1981
  if (tabName < activeTabName.value || activeTabName.value >= props.model[props.config.name].length) {
@@ -1967,7 +1990,7 @@ const Tab = defineComponent({
1967
1990
  changeHandler: () => {
1968
1991
  emit("change", props.model);
1969
1992
  if (typeof props.config.onChange === "function") {
1970
- props.config.onChange(mForm, { model: props.model });
1993
+ props.config.onChange(mForm, { model: props.model, prop: props.prop, config: props.config });
1971
1994
  }
1972
1995
  }
1973
1996
  };
@@ -2390,6 +2413,14 @@ const _sfc_main$e = defineComponent({
2390
2413
  });
2391
2414
  } else if (props.model && props.name && v instanceof Date) {
2392
2415
  props.model[props.name] = datetimeFormatter(v.toString(), "");
2416
+ } else if (names?.length) {
2417
+ names.forEach((item) => {
2418
+ if (props.model) {
2419
+ props.model[item] = void 0;
2420
+ }
2421
+ });
2422
+ } else if (props.name) {
2423
+ props.model[props.name] = void 0;
2393
2424
  }
2394
2425
  };
2395
2426
  return {
@@ -2886,7 +2917,8 @@ const _sfc_main$6 = defineComponent({
2886
2917
  body = body(mForm, {
2887
2918
  model: props.model,
2888
2919
  formValue: mForm?.values,
2889
- formValues: mForm?.values
2920
+ formValues: mForm?.values,
2921
+ config: props.config
2890
2922
  });
2891
2923
  }
2892
2924
  body.query = query.value;
@@ -2909,7 +2941,8 @@ const _sfc_main$6 = defineComponent({
2909
2941
  res = option.afterRequest(mForm, res, {
2910
2942
  model: props.model,
2911
2943
  formValue: mForm?.values,
2912
- formValues: mForm?.values
2944
+ formValues: mForm?.values,
2945
+ config: props.config
2913
2946
  });
2914
2947
  }
2915
2948
  const optionsData = res[option.root];
@@ -3001,7 +3034,8 @@ const _sfc_main$6 = defineComponent({
3001
3034
  model: props.model,
3002
3035
  prop: props.prop,
3003
3036
  formValues: mForm?.values,
3004
- formValue: mForm?.values
3037
+ formValue: mForm?.values,
3038
+ config: props.config
3005
3039
  })).then((data) => {
3006
3040
  options.value = data;
3007
3041
  });
@@ -3770,7 +3804,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
3770
3804
  }
3771
3805
  var FormDialog = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
3772
3806
 
3773
- var index$1 = '';
3807
+ 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}")();
3774
3808
 
3775
3809
  const defaultInstallOpt = {};
3776
3810
  const install = (app, opt) => {