vxe-pc-ui 4.0.23 → 4.0.25

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 (93) hide show
  1. package/es/button/src/button.js +23 -4
  2. package/es/date-picker/src/date-picker.js +33 -14
  3. package/es/form-design/src/form-view.js +17 -7
  4. package/es/form-design/src/layout-preview.js +1 -1
  5. package/es/form-design/src/layout-setting.js +1 -1
  6. package/es/form-design/src/layout-widget.js +3 -3
  7. package/es/form-design/style.css +1 -1
  8. package/es/form-design/style.min.css +1 -1
  9. package/es/form-design/widget-row/row-view.js +3 -2
  10. package/es/form-design/widget-subtable/subtable-view.js +55 -4
  11. package/es/icon/style.css +1 -1
  12. package/es/input/src/input.js +22 -3
  13. package/es/number-input/src/number-input.js +6 -6
  14. package/es/password-input/src/password-input.js +3 -3
  15. package/es/pulldown/src/pulldown.js +23 -4
  16. package/es/select/src/select.js +22 -3
  17. package/es/style.css +1 -1
  18. package/es/style.min.css +1 -1
  19. package/es/ui/index.js +19 -2
  20. package/es/ui/src/log.js +1 -1
  21. package/es/vxe-form-design/style.css +1 -1
  22. package/es/vxe-form-design/style.min.css +1 -1
  23. package/lib/button/src/button.js +20 -4
  24. package/lib/button/src/button.min.js +1 -1
  25. package/lib/date-picker/src/date-picker.js +31 -15
  26. package/lib/date-picker/src/date-picker.min.js +1 -1
  27. package/lib/form-design/src/form-view.js +20 -8
  28. package/lib/form-design/src/form-view.min.js +1 -1
  29. package/lib/form-design/src/layout-preview.js +3 -1
  30. package/lib/form-design/src/layout-preview.min.js +1 -1
  31. package/lib/form-design/src/layout-setting.js +2 -1
  32. package/lib/form-design/src/layout-setting.min.js +1 -1
  33. package/lib/form-design/src/layout-widget.js +4 -2
  34. package/lib/form-design/src/layout-widget.min.js +1 -1
  35. package/lib/form-design/style/style.css +1 -1
  36. package/lib/form-design/style/style.min.css +1 -1
  37. package/lib/form-design/widget-row/row-view.js +7 -2
  38. package/lib/form-design/widget-row/row-view.min.js +1 -1
  39. package/lib/form-design/widget-subtable/subtable-view.js +65 -3
  40. package/lib/form-design/widget-subtable/subtable-view.min.js +1 -1
  41. package/lib/icon/style/style.css +1 -1
  42. package/lib/icon/style/style.min.css +1 -1
  43. package/lib/index.umd.js +244 -60
  44. package/lib/index.umd.min.js +1 -1
  45. package/lib/input/src/input.js +20 -4
  46. package/lib/input/src/input.min.js +1 -1
  47. package/lib/number-input/src/number-input.js +6 -6
  48. package/lib/number-input/src/number-input.min.js +1 -1
  49. package/lib/password-input/src/password-input.js +3 -3
  50. package/lib/password-input/src/password-input.min.js +1 -1
  51. package/lib/pulldown/src/pulldown.js +22 -3
  52. package/lib/pulldown/src/pulldown.min.js +1 -1
  53. package/lib/select/src/select.js +19 -3
  54. package/lib/select/src/select.min.js +1 -1
  55. package/lib/style.css +1 -1
  56. package/lib/style.min.css +1 -1
  57. package/lib/ui/index.js +19 -2
  58. package/lib/ui/index.min.js +1 -1
  59. package/lib/ui/src/log.js +1 -1
  60. package/lib/ui/src/log.min.js +1 -1
  61. package/lib/vxe-form-design/style/style.css +1 -1
  62. package/lib/vxe-form-design/style/style.min.css +1 -1
  63. package/package.json +3 -3
  64. package/packages/button/src/button.ts +26 -6
  65. package/packages/date-picker/src/date-picker.ts +36 -15
  66. package/packages/form-design/src/form-view.ts +19 -7
  67. package/packages/form-design/src/layout-preview.ts +1 -1
  68. package/packages/form-design/src/layout-setting.ts +1 -1
  69. package/packages/form-design/src/layout-widget.ts +3 -3
  70. package/packages/form-design/widget-row/row-view.ts +4 -2
  71. package/packages/form-design/widget-subtable/subtable-view.ts +61 -5
  72. package/packages/input/src/input.ts +25 -4
  73. package/packages/number-input/src/number-input.ts +6 -6
  74. package/packages/password-input/src/password-input.ts +3 -3
  75. package/packages/pulldown/src/pulldown.ts +26 -5
  76. package/packages/select/src/select.ts +25 -4
  77. package/packages/ui/index.ts +18 -1
  78. package/styles/components/widget-item/prop-list.scss +1 -1
  79. package/types/components/form-view.d.ts +1 -1
  80. package/types/components/table.d.ts +18 -2
  81. package/types/ui/renderer.d.ts +11 -3
  82. /package/es/icon/style/{iconfont.1718715852220.ttf → iconfont.1718869230552.ttf} +0 -0
  83. /package/es/icon/style/{iconfont.1718715852220.woff → iconfont.1718869230552.woff} +0 -0
  84. /package/es/icon/style/{iconfont.1718715852220.woff2 → iconfont.1718869230552.woff2} +0 -0
  85. /package/es/{iconfont.1718715852220.ttf → iconfont.1718869230552.ttf} +0 -0
  86. /package/es/{iconfont.1718715852220.woff → iconfont.1718869230552.woff} +0 -0
  87. /package/es/{iconfont.1718715852220.woff2 → iconfont.1718869230552.woff2} +0 -0
  88. /package/lib/icon/style/{iconfont.1718715852220.ttf → iconfont.1718869230552.ttf} +0 -0
  89. /package/lib/icon/style/{iconfont.1718715852220.woff → iconfont.1718869230552.woff} +0 -0
  90. /package/lib/icon/style/{iconfont.1718715852220.woff2 → iconfont.1718869230552.woff2} +0 -0
  91. /package/lib/{iconfont.1718715852220.ttf → iconfont.1718869230552.ttf} +0 -0
  92. /package/lib/{iconfont.1718715852220.woff → iconfont.1718869230552.woff} +0 -0
  93. /package/lib/{iconfont.1718715852220.woff2 → iconfont.1718869230552.woff2} +0 -0
@@ -65,7 +65,10 @@ export default defineComponent({
65
65
  /**
66
66
  * 是否将弹框容器插入于 body 内
67
67
  */
68
- transfer: { type: Boolean, default: () => getConfig().button.transfer }
68
+ transfer: {
69
+ type: Boolean,
70
+ default: null
71
+ }
69
72
  },
70
73
  emits: [
71
74
  'click',
@@ -75,6 +78,8 @@ export default defineComponent({
75
78
  ],
76
79
  setup(props, context) {
77
80
  const { slots, emit } = context;
81
+ const $xeTable = inject('$xeTable', null);
82
+ const $xeButtonGroup = inject('$xeButtonGroup', null);
78
83
  const xID = XEUtils.uniqueId();
79
84
  const { computeSize } = useSize(props);
80
85
  const reactData = reactive({
@@ -102,8 +107,20 @@ export default defineComponent({
102
107
  internalData,
103
108
  getRefMaps: () => refMaps
104
109
  };
105
- const $xeButtonGroup = inject('$xeButtonGroup', null);
106
110
  let buttonMethods = {};
111
+ const compTransfer = computed(() => {
112
+ const { transfer } = props;
113
+ if (transfer === null) {
114
+ const globalTransfer = getConfig().button.transfer;
115
+ if (XEUtils.isBoolean(globalTransfer)) {
116
+ return globalTransfer;
117
+ }
118
+ if ($xeTable) {
119
+ return true;
120
+ }
121
+ }
122
+ return transfer;
123
+ });
107
124
  const computeIsFormBtn = computed(() => {
108
125
  const { type } = props;
109
126
  if (type) {
@@ -155,10 +172,11 @@ export default defineComponent({
155
172
  };
156
173
  const updatePlacement = () => {
157
174
  return nextTick().then(() => {
158
- const { transfer, placement } = props;
175
+ const { placement } = props;
159
176
  const { panelIndex } = reactData;
160
177
  const targetElem = refButton.value;
161
178
  const panelElem = refBtnPanel.value;
179
+ const transfer = compTransfer.value;
162
180
  if (panelElem && targetElem) {
163
181
  const targetHeight = targetElem.offsetHeight;
164
182
  const targetWidth = targetElem.offsetWidth;
@@ -391,13 +409,14 @@ export default defineComponent({
391
409
  globalEvents.off($xeButton, 'mousewheel');
392
410
  });
393
411
  const renderVN = () => {
394
- const { className, popupClassName, transfer, title, type, destroyOnClose, name, disabled, loading } = props;
412
+ const { className, popupClassName, title, type, destroyOnClose, name, disabled, loading } = props;
395
413
  const { inited, showPanel } = reactData;
396
414
  const isFormBtn = computeIsFormBtn.value;
397
415
  const btnMode = computeBtnMode.value;
398
416
  const btnStatus = computeBtnStatus.value;
399
417
  const btnRound = computeBtnRound.value;
400
418
  const btnCircle = computeBtnCircle.value;
419
+ const transfer = compTransfer.value;
401
420
  const vSize = computeSize.value;
402
421
  if (slots.dropdowns) {
403
422
  return h('div', {
@@ -54,39 +54,42 @@ export default defineComponent({
54
54
  immediate: { type: Boolean, default: true },
55
55
  name: String,
56
56
  type: { type: String, default: 'text' },
57
- clearable: { type: Boolean, default: () => getConfig().input.clearable },
57
+ clearable: { type: Boolean, default: () => getConfig().datePicker.clearable },
58
58
  readonly: Boolean,
59
59
  disabled: Boolean,
60
60
  placeholder: {
61
61
  type: String,
62
- default: () => XEUtils.eqNull(getConfig().input.placeholder) ? getI18n('vxe.base.pleaseDatePicker') : getConfig().input.placeholder
62
+ default: () => XEUtils.eqNull(getConfig().datePicker.placeholder) ? getI18n('vxe.base.pleaseSelect') : getConfig().datePicker.placeholder
63
63
  },
64
64
  maxlength: [String, Number],
65
65
  autocomplete: { type: String, default: 'off' },
66
66
  align: String,
67
67
  form: String,
68
68
  className: String,
69
- size: { type: String, default: () => getConfig().input.size || getConfig().size },
69
+ size: { type: String, default: () => getConfig().datePicker.size || getConfig().size },
70
70
  multiple: Boolean,
71
71
  // date、week、month、quarter、year
72
- startDate: { type: [String, Number, Date], default: () => getConfig().input.startDate },
73
- endDate: { type: [String, Number, Date], default: () => getConfig().input.endDate },
72
+ startDate: { type: [String, Number, Date], default: () => getConfig().datePicker.startDate },
73
+ endDate: { type: [String, Number, Date], default: () => getConfig().datePicker.endDate },
74
74
  minDate: [String, Number, Date],
75
75
  maxDate: [String, Number, Date],
76
76
  // 已废弃 startWeek,被 startDay 替换
77
77
  startWeek: Number,
78
- startDay: { type: [String, Number], default: () => getConfig().input.startDay },
79
- labelFormat: { type: String, default: () => getConfig().input.labelFormat },
80
- valueFormat: { type: String, default: () => getConfig().input.valueFormat },
78
+ startDay: { type: [String, Number], default: () => getConfig().datePicker.startDay },
79
+ labelFormat: { type: String, default: () => getConfig().datePicker.labelFormat },
80
+ valueFormat: { type: String, default: () => getConfig().datePicker.valueFormat },
81
81
  editable: { type: Boolean, default: true },
82
- festivalMethod: { type: Function, default: () => getConfig().input.festivalMethod },
83
- disabledMethod: { type: Function, default: () => getConfig().input.disabledMethod },
82
+ festivalMethod: { type: Function, default: () => getConfig().datePicker.festivalMethod },
83
+ disabledMethod: { type: Function, default: () => getConfig().datePicker.disabledMethod },
84
84
  // week
85
- selectDay: { type: [String, Number], default: () => getConfig().input.selectDay },
85
+ selectDay: { type: [String, Number], default: () => getConfig().datePicker.selectDay },
86
86
  prefixIcon: String,
87
87
  suffixIcon: String,
88
88
  placement: String,
89
- transfer: { type: Boolean, default: () => getConfig().input.transfer }
89
+ transfer: {
90
+ type: Boolean,
91
+ default: null
92
+ }
90
93
  },
91
94
  emits: [
92
95
  'update:modelValue',
@@ -107,6 +110,7 @@ export default defineComponent({
107
110
  ],
108
111
  setup(props, context) {
109
112
  const { slots, emit } = context;
113
+ const $xeTable = inject('$xeTable', null);
110
114
  const $xeForm = inject('$xeForm', null);
111
115
  const formItemInfo = inject('xeFormItemInfo', null);
112
116
  const xID = XEUtils.uniqueId();
@@ -151,6 +155,19 @@ export default defineComponent({
151
155
  }
152
156
  return XEUtils.toStringDate(value, format);
153
157
  };
158
+ const compTransfer = computed(() => {
159
+ const { transfer } = props;
160
+ if (transfer === null) {
161
+ const globalTransfer = getConfig().datePicker.transfer;
162
+ if (XEUtils.isBoolean(globalTransfer)) {
163
+ return globalTransfer;
164
+ }
165
+ if ($xeTable) {
166
+ return true;
167
+ }
168
+ }
169
+ return transfer;
170
+ });
154
171
  const computeIsDateTimeType = computed(() => {
155
172
  const { type } = props;
156
173
  return type === 'time' || type === 'datetime';
@@ -1151,10 +1168,11 @@ export default defineComponent({
1151
1168
  };
1152
1169
  const updatePlacement = () => {
1153
1170
  return nextTick().then(() => {
1154
- const { transfer, placement } = props;
1171
+ const { placement } = props;
1155
1172
  const { panelIndex } = reactData;
1156
1173
  const targetElem = refInputTarget.value;
1157
1174
  const panelElem = refDatePickerPanel.value;
1175
+ const transfer = compTransfer.value;
1158
1176
  if (targetElem && panelElem) {
1159
1177
  const targetHeight = targetElem.offsetHeight;
1160
1178
  const targetWidth = targetElem.offsetWidth;
@@ -1746,10 +1764,11 @@ export default defineComponent({
1746
1764
  ];
1747
1765
  };
1748
1766
  const renderPanel = () => {
1749
- const { type, transfer } = props;
1767
+ const { type } = props;
1750
1768
  const { inited, animatVisible, visiblePanel, panelPlacement, panelStyle } = reactData;
1751
1769
  const vSize = computeSize.value;
1752
1770
  const isDatePickerType = computeIsDatePickerType.value;
1771
+ const transfer = compTransfer.value;
1753
1772
  const renders = [];
1754
1773
  if (isDatePickerType) {
1755
1774
  if (type === 'datetime') {
@@ -74,14 +74,26 @@ export default defineComponent({
74
74
  updateWidgetInfo();
75
75
  return nextTick();
76
76
  };
77
+ const getWidgetDefaultValue = (widget) => {
78
+ switch (widget.name) {
79
+ case 'subtable':
80
+ return [];
81
+ }
82
+ return null;
83
+ };
84
+ const getWidgetDefaultRule = () => {
85
+ return [
86
+ { required: true, content: '该填写该字段!' }
87
+ ];
88
+ };
77
89
  const updateWidgetInfo = () => {
78
- const formData = Object.assign({}, props.modelValue);
90
+ const formData = {};
79
91
  const formRules = {};
80
92
  XEUtils.eachTree(reactData.widgetObjList, widget => {
81
93
  const { name, field, required } = widget;
82
94
  const compConf = renderer.get(name) || {};
83
95
  const createWidgetViewRules = compConf.createFormDesignWidgetRules;
84
- formData[field] = null;
96
+ formData[field] = getWidgetDefaultValue(widget);
85
97
  if (createWidgetViewRules) {
86
98
  const rules = createWidgetViewRules({ widget });
87
99
  if (rules && rules.length) {
@@ -89,13 +101,11 @@ export default defineComponent({
89
101
  }
90
102
  }
91
103
  else if (required) {
92
- formRules[field] = [
93
- { required: true, content: '该填写该字段!' }
94
- ];
104
+ formRules[field] = getWidgetDefaultRule();
95
105
  }
96
106
  }, { children: 'children' });
97
107
  reactData.formRules = formRules;
98
- emit('update:modelValue', formData);
108
+ emit('update:modelValue', Object.assign(formData, props.modelValue));
99
109
  };
100
110
  const updateItemStatus = (widget, value) => {
101
111
  const { field } = widget;
@@ -183,7 +193,7 @@ export default defineComponent({
183
193
  const renderWidgetDesignPreview = compConf.renderFormDesignWidgetPreview;
184
194
  const renderWidgetDesignMobilePreview = compConf.renderFormDesignWidgetMobilePreview;
185
195
  const renderOpts = widget;
186
- const params = { widget, isEditMode: false, isViewMode: true };
196
+ const params = { widget, isEditMode: false, isViewMode: true, $formDesign: null, $formView: $xeFormView };
187
197
  return h(VxeFormGatherComponent, {
188
198
  key: widget.id
189
199
  }, {
@@ -58,7 +58,7 @@ export default defineComponent({
58
58
  const compConf = renderer.get(name) || {};
59
59
  const renderWidgetDesignView = compConf.renderFormDesignWidgetEdit || compConf.renderFormDesignWidgetView;
60
60
  const renderOpts = widget;
61
- const params = { widget, isEditMode: true, isViewMode: false };
61
+ const params = { widget, isEditMode: true, isViewMode: false, $formDesign: $xeFormDesign, $formView: null };
62
62
  return renderWidgetDesignView ? getSlotVNs(renderWidgetDesignView(renderOpts, params)) : [];
63
63
  }
64
64
  });
@@ -23,7 +23,7 @@ export default defineComponent({
23
23
  if (renderWidgetFormView) {
24
24
  return h('div', {
25
25
  class: 'vxe-form-design--custom-widget-form-view'
26
- }, getSlotVNs(renderWidgetFormView(activeWidget, { widget: activeWidget })));
26
+ }, getSlotVNs(renderWidgetFormView(activeWidget, { widget: activeWidget, $formDesign: $xeFormDesign })));
27
27
  }
28
28
  }
29
29
  return createCommentVNode();
@@ -58,7 +58,7 @@ export default defineComponent({
58
58
  const { name } = widget;
59
59
  const configTitle = getWidgetConfigTitle(name, $xeFormDesign);
60
60
  const compConf = renderer.get(name) || {};
61
- const renderFormDesignWidgetItem = compConf.renderFormDesignWidgetItem;
61
+ const renderWidgetItem = compConf.renderFormDesignWidgetItem;
62
62
  widgetVNs.push(h('div', {
63
63
  key: index,
64
64
  class: 'vxe-form-design--widget-item'
@@ -72,8 +72,8 @@ export default defineComponent({
72
72
  onDblclick(evnt) {
73
73
  addNewWidget(evnt, name);
74
74
  }
75
- }, renderFormDesignWidgetItem
76
- ? getSlotVNs(renderFormDesignWidgetItem({}, {}))
75
+ }, renderWidgetItem
76
+ ? getSlotVNs(renderWidgetItem({}, { $formDesign: $xeFormDesign }))
77
77
  : [
78
78
  h('i', {
79
79
  class: ['vxe-form-design--widget-item-icon', getWidgetConfigIcon(name)]
@@ -467,7 +467,7 @@
467
467
  .vxe-form-design .vxe-form-design--widget-form-item-prop-list > span:first-child,
468
468
  .vxe-form-design .vxe-form-design--widget-form-item-prop-list .vxe-form-design--widget-form-item-prop-width,
469
469
  .vxe-form-design .vxe-form-design--widget-form-item-prop-list .vxe-form-design--widget-form-item-prop-unit {
470
- display: inline-block;
470
+ display: inline-flex;
471
471
  vertical-align: middle;
472
472
  }
473
473
  .vxe-form-design .vxe-form-design--widget-form-item-prop-list .vxe-form-design--widget-form-item-prop-width {
@@ -1 +1 @@
1
- .vxe-form-design--widget-form-empty-data,.vxe-list-design--widget-form-empty-data{text-align:center;color:var(--vxe-ui-input-placeholder-color);border:1px solid var(--vxe-ui-input-border-color);border-radius:var(--vxe-ui-base-border-radius);padding:var(--vxe-ui-layout-padding-double)}.vxe-form-design--widget-row-form-row{border:1px solid var(--vxe-ui-input-border-color);margin-bottom:var(--vxe-ui-layout-padding-default);border-radius:var(--vxe-ui-base-border-radius);cursor:pointer}.vxe-form-design--widget-row-form-row:hover{border-color:var(--vxe-ui-font-primary-color)}.vxe-form-design--widget-row-form-row.is--active{border-color:var(--vxe-ui-font-primary-color);color:var(--vxe-ui-layout-background-color)}.vxe-form-design--widget-row-form-row.is--active .vxe-form-design--widget-row-form-col div{background:var(--vxe-ui-font-primary-color)}.vxe-form-design--widget-row-form-col{padding:var(--vxe-ui-layout-padding-default)}.vxe-form-design--widget-row-form-col>div{line-height:24px;background:var(--vxe-ui-font-tinge-color);text-align:center;border-radius:var(--vxe-ui-base-border-radius)}.vxe-form-design--widget-row-view{position:relative;min-height:100%;padding:var(--vxe-ui-layout-padding-default);border:1px solid transparent;cursor:grabbing}.vxe-form-design--widget-row-view::before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1}.vxe-form-design--widget-row-view:hover{background-color:var(--vxe-ui-form-design-sub-widget-hover-background-color)}.vxe-form-design--widget-row-view:hover .vxe-form-design--widget-row-view-empty{background-color:transparent}.vxe-form-design--widget-row-view.is--active{border:1px dashed var(--vxe-ui-font-primary-color);background-color:var(--vxe-ui-base-active-background-color)}.vxe-form-design--widget-row-view.is--drag,.vxe-form-design--widget-row-view.is--sort{background-color:var(--vxe-ui-base-drag-background-color)}.vxe-form-design--widget-row-view-empty{display:flex;flex-direction:row;align-items:center;justify-content:center;height:78px;padding:var(--vxe-ui-layout-padding-default);color:var(--vxe-ui-font-placeholder-color);border:2px dashed var(--vxe-ui-input-border-color);font-size:.95em;background-color:var(--vxe-ui-layout-background-color)}.vxe-form-design--preview-item.widget-row::after,.vxe-form-design--preview-item.widget-subtable::after{display:none}.vxe-form-design--preview-item.widget-row{padding:var(--vxe-ui-layout-padding-default) 0}.vxe-form-design--widget-subtable-view{display:flex;flex-direction:row;max-width:100%;border-radius:var(--vxe-ui-base-border-radius);overflow-y:hidden;overflow-x:auto}.vxe-form-design--widget-subtable-view-box{border:1px solid var(--vxe-ui-input-border-color);border-width:1px 1px 1px 0;display:inline-flex;flex-direction:row;flex-wrap:nowrap}.vxe-form-design--widget-subtable-view-left{position:sticky;left:0;top:0;display:flex;flex-shrink:0;padding-top:var(--vxe-ui-layout-padding-default);box-shadow:8px 0 10px -5px rgba(0,0,0,.12);border-radius:var(--vxe-ui-base-border-radius) 0 0 var(--vxe-ui-base-border-radius);z-index:5}.vxe-form-design--widget-subtable-view-right{flex-grow:1;padding-top:var(--vxe-ui-layout-padding-default)}.vxe-form-design--widget-subtable-col{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;flex-shrink:0;min-width:54px;text-align:center;border-top:1px solid var(--vxe-ui-input-border-color);border-right:1px solid var(--vxe-ui-input-border-color);border-bottom:1px solid var(--vxe-ui-input-border-color);background-color:var(--vxe-ui-layout-background-color)}.vxe-form-design--widget-subtable-col:first-child{border-left:1px solid var(--vxe-ui-input-border-color);border-radius:var(--vxe-ui-base-border-radius) 0 0 var(--vxe-ui-base-border-radius)}.vxe-form-design--widget-subtable-col::after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1}.vxe-form-design--widget-subtable-head{flex-shrink:0;height:2.8em;line-height:2.8em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 var(--vxe-ui-layout-padding-default);border-bottom:1px solid var(--vxe-ui-input-border-color)}.vxe-form-design--widget-subtable-body{flex-grow:1;padding:var(--vxe-ui-layout-padding-default)}.vxe-form-design--widget-subtable-body,.vxe-form-design--widget-subtable-head{width:100%}.vxe-form-design--widget-subtable-body,.vxe-form-design--widget-subtable-view-empty{display:flex;flex-direction:row;align-items:center;justify-content:center}.vxe-form-design--widget-subtable-view-wrapper{display:flex;flex-direction:row;border:1px solid var(--vxe-ui-input-border-color);border-left:0;background-color:var(--vxe-ui-layout-background-color);border-radius:0 var(--vxe-ui-base-border-radius) var(--vxe-ui-base-border-radius) 0}.vxe-form-design--widget-subtable-view-list{display:flex;flex-direction:row;flex-wrap:nowrap}.vxe-form-design--widget-subtable-view-list>.vxe-form-design--widget-subtable-view-item{border-right:1px solid var(--vxe-ui-input-border-color)}.vxe-form-design--widget-subtable-view-list-move{transition:transform .35s ease-in-out}.vxe-form-design--widget-subtable-view-item{position:relative;min-width:200px;cursor:grabbing}.vxe-form-design--widget-subtable-view-item:hover{background:var(--vxe-ui-base-active-background-color)}.vxe-form-design--widget-subtable-view-item.is--active{background:var(--vxe-ui-base-active-background-color)}.vxe-form-design--widget-subtable-view-item.is--active::before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;border:1px dashed var(--vxe-ui-font-primary-color);pointer-events:none;z-index:2}.vxe-form-design--widget-subtable-view-item-box{height:100%}.vxe-form-design--widget-subtable-view-item-box::after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1}.vxe-form-design--widget-subtable-view-empty{flex-grow:1;color:var(--vxe-ui-font-placeholder-color);padding:0 var(--vxe-ui-layout-padding-threefold);min-height:78px;min-width:260px;cursor:default}.vxe-form-design--widget-subtable-form-item{overflow:hidden}.vxe-form-design--widget-subtable-form-item>.vxe-form--item-inner{overflow:hidden}.vxe-form-design--widget-subtable-form-item>.vxe-form--item-inner>.vxe-form--item-content{overflow:hidden}.vxe-form-design--widget-subtable-view-item-wrapper{height:100%}.vxe-form-design--widget-subtable-view-item-wrapper .vxe-form--item.is--vertical{padding:0}.vxe-form-design--widget-subtable-view-item-wrapper .vxe-form--item.is--vertical .vxe-form--item-title{height:2.8em;line-height:2.8em;padding:0 var(--vxe-ui-layout-padding-default)}.vxe-form-design--widget-subtable-view-item-wrapper .vxe-form--item.is--vertical .vxe-form--item-content{display:flex;flex-direction:row;align-items:center;justify-content:center;padding:var(--vxe-ui-layout-padding-default)}.vxe-form-design--widget-subtable-view-item-wrapper .vxe-form--item-title{border-bottom:1px solid var(--vxe-ui-input-border-color)}.vxe-form-design .vxe-form-design--widget-form-item-devices{display:flex;flex-direction:column}.vxe-form-design .vxe-form-design--widget-form-item-layout{display:flex;flex-direction:row}.vxe-form-design .vxe-form-design--widget-form-item-option{width:50%;text-align:center;padding:var(--vxe-ui-layout-padding-default);margin:0 var(--vxe-ui-layout-padding-default);border:1px solid var(--vxe-ui-input-border-color);border-radius:var(--vxe-ui-base-border-radius);cursor:pointer}.vxe-form-design .vxe-form-design--widget-form-item-option.is--vertical .vxe-form-design--widget-form-item-option-row{display:flex;flex-direction:column}.vxe-form-design .vxe-form-design--widget-form-item-option.is--vertical .vxe-form-design--widget-form-item-option-row:nth-child(1)::before{content:"";display:block;width:30%;height:1.2em;margin:2px;background-color:var(--vxe-ui-font-tinge-color);border-radius:var(--vxe-ui-base-border-radius)}.vxe-form-design .vxe-form-design--widget-form-item-option.is--vertical .vxe-form-design--widget-form-item-option-row:nth-child(2)::before{content:"";display:block;width:100%;height:1.2em;margin:2px;background-color:var(--vxe-ui-font-tinge-color);border-radius:var(--vxe-ui-base-border-radius)}.vxe-form-design .vxe-form-design--widget-form-item-option.is--horizontal .vxe-form-design--widget-form-item-option-row{display:flex;flex-direction:row}.vxe-form-design .vxe-form-design--widget-form-item-option.is--horizontal .vxe-form-design--widget-form-item-option-row:nth-child(1)::before,.vxe-form-design .vxe-form-design--widget-form-item-option.is--horizontal .vxe-form-design--widget-form-item-option-row:nth-child(2)::before{content:"";display:block;width:30%;height:1.2em;margin:2px;background-color:var(--vxe-ui-font-tinge-color);border-radius:var(--vxe-ui-base-border-radius)}.vxe-form-design .vxe-form-design--widget-form-item-option.is--horizontal .vxe-form-design--widget-form-item-option-row:nth-child(1)::after,.vxe-form-design .vxe-form-design--widget-form-item-option.is--horizontal .vxe-form-design--widget-form-item-option-row:nth-child(2)::after{content:"";display:block;width:70%;height:1.2em;margin:2px;background-color:var(--vxe-ui-font-tinge-color);border-radius:var(--vxe-ui-base-border-radius)}.vxe-form-design .vxe-form-design--widget-form-item-option:hover{border-color:var(--vxe-ui-font-primary-color)}.vxe-form-design .vxe-form-design--widget-form-item-option.is--active{color:var(--vxe-ui-font-primary-color);border-color:var(--vxe-ui-font-primary-color)}.vxe-form-design .vxe-form-design--widget-form-item-option.is--active .vxe-form-design--widget-form-item-option-row:nth-child(1)::after,.vxe-form-design .vxe-form-design--widget-form-item-option.is--active .vxe-form-design--widget-form-item-option-row:nth-child(1)::before,.vxe-form-design .vxe-form-design--widget-form-item-option.is--active .vxe-form-design--widget-form-item-option-row:nth-child(2)::after,.vxe-form-design .vxe-form-design--widget-form-item-option.is--active .vxe-form-design--widget-form-item-option-row:nth-child(2)::before{background-color:var(--vxe-ui-font-primary-color)}.vxe-form-design .vxe-form-design--widget-form-item-option-row{margin-bottom:.2em}.vxe-form-design--widget-form-item-data-source{max-height:30vh;min-height:140px;overflow:auto}.vxe-form-design--widget-form-item-data-source-option{position:relative;display:flex;flex-direction:row;padding:var(--vxe-ui-layout-padding-half) 0}.vxe-form-design--widget-form-item-data-source-option::before{content:"";position:absolute;top:0;left:var(--vxe-ui-layout-padding-half);width:var(--vxe-ui-layout-padding-default);height:100%;border:1px dotted var(--vxe-ui-base-popup-border-color);border-width:0 0 0 1px}.vxe-form-design--widget-form-item-data-source-option::after{content:"";position:absolute;top:50%;left:var(--vxe-ui-layout-padding-half);width:var(--vxe-ui-layout-padding-default);height:0;border-top:1px dotted var(--vxe-ui-base-popup-border-color)}.vxe-form-design--widget-form-item-data-source-option.is--first::before{top:50%;height:50%}.vxe-form-design--widget-form-item-data-source-option.is--last::before{height:50%}.vxe-form-design--widget-form-item-data-source-option .vxe-button{flex-shrink:0}.vxe-form-design--widget-form-item-data-source-option .vxe-form-design--widget-expand-btn{display:flex;flex-direction:row;align-items:center;width:2em}.vxe-form-design--widget-form-item-data-source-option .vxe-form-design--widget-expand-btn i{cursor:pointer;background-color:var(--vxe-ui-layout-background-color);transition:transform .1s ease-in-out;z-index:2}.vxe-form-design--widget-form-item-data-source-sub-option{position:relative}.vxe-form-design--widget-form-item-data-source-sub-option::before{content:"";position:absolute;top:0;left:var(--vxe-ui-layout-padding-half);width:var(--vxe-ui-layout-padding-default);height:100%;border:1px dotted var(--vxe-ui-base-popup-border-color);border-width:0 0 0 1px}.vxe-form-design--widget-form-item-data-source-sub-option:last-child::before{display:none}.vxe-form-design--widget-form-item-data-source-sub-option .vxe-form-design--widget-form-item-data-source-option{padding-left:var(--vxe-ui-layout-padding-double)}.vxe-form-design--widget-form-item-data-source-sub-option .vxe-form-design--widget-form-item-data-source-option:first-child::before{top:0;height:50%}.vxe-form-design--widget-form-item-data-source-sub-option .vxe-form-design--widget-form-item-data-source-option::before{top:-50%;left:calc(var(--vxe-ui-layout-padding-double) + .5em);width:var(--vxe-ui-layout-padding-default);height:100%}.vxe-form-design--widget-form-item-data-source-sub-option .vxe-form-design--widget-form-item-data-source-option::after{left:calc(var(--vxe-ui-layout-padding-double) + .5em)}.vxe-form-design--widget-form-item-data-source-popup{height:100%;display:flex;flex-direction:column;overflow:auto}.vxe-form-design--widget-form-item-data-source-popup>.vxe-textarea{flex-grow:1}.vxe-form-design--widget-form-item-data-source-popup>.vxe-textarea .vxe-textarea--inner{height:100%}.vxe-form-design .vxe-form-design--widget-form-item-prop-list{margin-bottom:var(--vxe-ui-layout-padding-double);padding:0 var(--vxe-ui-layout-padding-default)}.vxe-form-design .vxe-form-design--widget-form-item-prop-list:first-child{margin-top:var(--vxe-ui-layout-padding-default)}.vxe-form-design .vxe-form-design--widget-form-item-prop-list>span{padding:0 .5em}.vxe-form-design .vxe-form-design--widget-form-item-prop-list>span:first-child{padding:0;padding-right:var(--vxe-ui-layout-padding-default)}.vxe-form-design .vxe-form-design--widget-form-item-prop-list .vxe-form-design--widget-form-item-prop-unit,.vxe-form-design .vxe-form-design--widget-form-item-prop-list .vxe-form-design--widget-form-item-prop-width,.vxe-form-design .vxe-form-design--widget-form-item-prop-list>span:first-child{display:inline-block;vertical-align:middle}.vxe-form-design .vxe-form-design--widget-form-item-prop-list .vxe-form-design--widget-form-item-prop-width{width:90px}.vxe-form-design .vxe-form-design--widget-form-item-prop-list .vxe-form-design--widget-form-item-prop-unit{width:90px}.vxe-list-design .vxe-list-design--widget-form-item-prop-list{margin-bottom:var(--vxe-ui-layout-padding-double);padding:0 var(--vxe-ui-layout-padding-default)}.vxe-list-design .vxe-list-design--widget-form-item-prop-list:first-child{margin-top:var(--vxe-ui-layout-padding-default)}.vxe-list-design .vxe-list-design--widget-form-item-prop-list:last-child{margin-bottom:0}.vxe-list-design .vxe-list-design--widget-form-item-prop-list>span{padding:0 .5em}.vxe-list-design .vxe-list-design--widget-form-item-prop-list>span:first-child{padding:0;padding-right:var(--vxe-ui-layout-padding-default)}.vxe-form-design{display:flex;flex-direction:column;color:var(--vxe-ui-font-color);font-family:var(--vxe-ui-font-family)}.vxe-form-design{font-size:var(--vxe-ui-font-size-default)}.vxe-form-design.size--medium{font-size:var(--vxe-ui-font-size-medium)}.vxe-form-design.size--small{font-size:var(--vxe-ui-font-size-small)}.vxe-form-design.size--mini{font-size:var(--vxe-ui-font-size-mini)}.vxe-form-design--body{display:flex;flex-direction:row;flex-grow:1;overflow:hidden}.vxe-form-design--header{flex-shrink:0;padding:0 var(--vxe-ui-layout-padding-default)}.vxe-form-design--header-wrapper{display:flex;flex-direction:row;align-items:center;width:100%;min-height:3em;border:1px solid var(--vxe-ui-input-border-color);border-radius:var(--vxe-ui-base-border-radius)}.vxe-form-design--header-left,.vxe-form-design--header-right{flex-shrink:0}.vxe-form-design--header-middle{flex-grow:1}.vxe-form-design--layout-style{display:flex;flex-direction:row;height:100%;overflow:hidden}.vxe-form-design--layout-style-preview{flex-grow:1;padding-right:var(--vxe-ui-layout-padding-default);overflow:hidden}.vxe-form-design--layout-style-preview>.vxe-form-view{height:100%;width:100%;border:1px solid var(--vxe-ui-input-border-color);border-radius:var(--vxe-ui-base-border-radius);overflow:auto}.vxe-form-design--layout-style-preview.is--mobile>.vxe-form-view{width:400px;margin:0 auto}.vxe-form-design--layout-style-setting{flex-shrink:0;width:300px;border:1px solid var(--vxe-ui-input-border-color);border-radius:var(--vxe-ui-base-border-radius);background-color:var(--vxe-ui-layout-background-color);z-index:1;overflow:auto}.vxe-form-design--widget{width:280px;flex-shrink:0;overflow:auto}.vxe-form-design--setting,.vxe-form-design--widget{padding:var(--vxe-ui-layout-padding-default);border-radius:var(--vxe-ui-base-border-radius)}.vxe-form-design--setting{width:300px;flex-shrink:0;overflow:auto}.vxe-form-design--preview{flex-grow:1;overflow:auto;padding:var(--vxe-ui-layout-padding-default) var(--vxe-ui-layout-padding-half);-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-form-design--preview-wrapper{width:100%;height:100%;overflow:auto;padding:var(--vxe-ui-layout-padding-default) 0;background-color:var(--vxe-ui-layout-background-color);border-radius:var(--vxe-ui-base-border-radius);border:1px solid var(--vxe-ui-input-border-color)}.vxe-form-design--widget-list{display:flex;flex-direction:row;flex-wrap:wrap}.vxe-form-design--widget-title{font-weight:700;padding:var(--vxe-ui-layout-padding-half) 0 var(--vxe-ui-layout-padding-half) var(--vxe-ui-layout-padding-half)}.vxe-form-design--widget-group{border-radius:var(--vxe-ui-base-border-radius);padding:var(--vxe-ui-layout-padding-default);margin-bottom:var(--vxe-ui-layout-padding-default);background-color:var(--vxe-ui-layout-background-color);border:1px solid var(--vxe-ui-input-border-color)}.vxe-form-design--widget-item{width:50%;padding:var(--vxe-ui-layout-padding-half)}.vxe-form-design--widget-box{position:relative;height:32px;line-height:32px;font-size:var(--vxe-ui-form-design-widget-item-font-size);padding:0 var(--vxe-ui-layout-padding-half);border-radius:var(--vxe-ui-base-border-radius);border:1px solid var(--vxe-ui-input-border-color);background-color:var(--vxe-ui-layout-background-color);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:grabbing;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-form-design--widget-box:hover{border-color:var(--vxe-ui-font-primary-lighten-color);background-color:var(--vxe-ui-base-active-background-color)}.vxe-form-design--widget-box:hover .vxe-form-design--widget-item-add{display:block}.vxe-form-design--widget-item-icon{padding:0 .2em}.vxe-form-design--widget-item-name{padding-left:var(--vxe-ui-layout-padding-half)}.vxe-form-design--widget-item-add{display:none;position:absolute;top:0;right:var(--vxe-ui-layout-padding-default);width:1em;height:100%;cursor:pointer}.vxe-form-design--widget-item-add:hover{color:var(--vxe-ui-font-primary-color)}.vxe-form-design--preview-list{width:100%}.vxe-form-design--preview-list-move{transition:transform .35s ease-in-out}.vxe-form-design--preview-item{position:relative;display:block;padding:var(--vxe-ui-layout-padding-default);border:1px solid transparent;cursor:grabbing}.vxe-form-design--preview-item::after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1}.vxe-form-design--preview-item:hover{background-color:var(--vxe-ui-form-design-widget-hover-background-color)}.vxe-form-design--preview-item.is--active{border:1px dashed var(--vxe-ui-font-primary-color);background-color:var(--vxe-ui-base-active-background-color)}.vxe-form-design--preview-item.is--drag,.vxe-form-design--preview-item.is--sort{background-color:var(--vxe-ui-base-drag-background-color)}.vxe-form-design--preview-item-view{width:100%}.vxe-form-design--preview-item-operate{position:absolute;top:calc(var(--vxe-ui-layout-padding-default) * -1);right:var(--vxe-ui-layout-padding-default);z-index:3}.vxe-form-design--setting-form{height:100%;background-color:var(--vxe-ui-layout-background-color);border:1px solid var(--vxe-ui-input-border-color)}.vxe-form-design--setting-form-tabs{height:100%}
1
+ .vxe-form-design--widget-form-empty-data,.vxe-list-design--widget-form-empty-data{text-align:center;color:var(--vxe-ui-input-placeholder-color);border:1px solid var(--vxe-ui-input-border-color);border-radius:var(--vxe-ui-base-border-radius);padding:var(--vxe-ui-layout-padding-double)}.vxe-form-design--widget-row-form-row{border:1px solid var(--vxe-ui-input-border-color);margin-bottom:var(--vxe-ui-layout-padding-default);border-radius:var(--vxe-ui-base-border-radius);cursor:pointer}.vxe-form-design--widget-row-form-row:hover{border-color:var(--vxe-ui-font-primary-color)}.vxe-form-design--widget-row-form-row.is--active{border-color:var(--vxe-ui-font-primary-color);color:var(--vxe-ui-layout-background-color)}.vxe-form-design--widget-row-form-row.is--active .vxe-form-design--widget-row-form-col div{background:var(--vxe-ui-font-primary-color)}.vxe-form-design--widget-row-form-col{padding:var(--vxe-ui-layout-padding-default)}.vxe-form-design--widget-row-form-col>div{line-height:24px;background:var(--vxe-ui-font-tinge-color);text-align:center;border-radius:var(--vxe-ui-base-border-radius)}.vxe-form-design--widget-row-view{position:relative;min-height:100%;padding:var(--vxe-ui-layout-padding-default);border:1px solid transparent;cursor:grabbing}.vxe-form-design--widget-row-view::before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1}.vxe-form-design--widget-row-view:hover{background-color:var(--vxe-ui-form-design-sub-widget-hover-background-color)}.vxe-form-design--widget-row-view:hover .vxe-form-design--widget-row-view-empty{background-color:transparent}.vxe-form-design--widget-row-view.is--active{border:1px dashed var(--vxe-ui-font-primary-color);background-color:var(--vxe-ui-base-active-background-color)}.vxe-form-design--widget-row-view.is--drag,.vxe-form-design--widget-row-view.is--sort{background-color:var(--vxe-ui-base-drag-background-color)}.vxe-form-design--widget-row-view-empty{display:flex;flex-direction:row;align-items:center;justify-content:center;height:78px;padding:var(--vxe-ui-layout-padding-default);color:var(--vxe-ui-font-placeholder-color);border:2px dashed var(--vxe-ui-input-border-color);font-size:.95em;background-color:var(--vxe-ui-layout-background-color)}.vxe-form-design--preview-item.widget-row::after,.vxe-form-design--preview-item.widget-subtable::after{display:none}.vxe-form-design--preview-item.widget-row{padding:var(--vxe-ui-layout-padding-default) 0}.vxe-form-design--widget-subtable-view{display:flex;flex-direction:row;max-width:100%;border-radius:var(--vxe-ui-base-border-radius);overflow-y:hidden;overflow-x:auto}.vxe-form-design--widget-subtable-view-box{border:1px solid var(--vxe-ui-input-border-color);border-width:1px 1px 1px 0;display:inline-flex;flex-direction:row;flex-wrap:nowrap}.vxe-form-design--widget-subtable-view-left{position:sticky;left:0;top:0;display:flex;flex-shrink:0;padding-top:var(--vxe-ui-layout-padding-default);box-shadow:8px 0 10px -5px rgba(0,0,0,.12);border-radius:var(--vxe-ui-base-border-radius) 0 0 var(--vxe-ui-base-border-radius);z-index:5}.vxe-form-design--widget-subtable-view-right{flex-grow:1;padding-top:var(--vxe-ui-layout-padding-default)}.vxe-form-design--widget-subtable-col{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;flex-shrink:0;min-width:54px;text-align:center;border-top:1px solid var(--vxe-ui-input-border-color);border-right:1px solid var(--vxe-ui-input-border-color);border-bottom:1px solid var(--vxe-ui-input-border-color);background-color:var(--vxe-ui-layout-background-color)}.vxe-form-design--widget-subtable-col:first-child{border-left:1px solid var(--vxe-ui-input-border-color);border-radius:var(--vxe-ui-base-border-radius) 0 0 var(--vxe-ui-base-border-radius)}.vxe-form-design--widget-subtable-col::after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1}.vxe-form-design--widget-subtable-head{flex-shrink:0;height:2.8em;line-height:2.8em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 var(--vxe-ui-layout-padding-default);border-bottom:1px solid var(--vxe-ui-input-border-color)}.vxe-form-design--widget-subtable-body{flex-grow:1;padding:var(--vxe-ui-layout-padding-default)}.vxe-form-design--widget-subtable-body,.vxe-form-design--widget-subtable-head{width:100%}.vxe-form-design--widget-subtable-body,.vxe-form-design--widget-subtable-view-empty{display:flex;flex-direction:row;align-items:center;justify-content:center}.vxe-form-design--widget-subtable-view-wrapper{display:flex;flex-direction:row;border:1px solid var(--vxe-ui-input-border-color);border-left:0;background-color:var(--vxe-ui-layout-background-color);border-radius:0 var(--vxe-ui-base-border-radius) var(--vxe-ui-base-border-radius) 0}.vxe-form-design--widget-subtable-view-list{display:flex;flex-direction:row;flex-wrap:nowrap}.vxe-form-design--widget-subtable-view-list>.vxe-form-design--widget-subtable-view-item{border-right:1px solid var(--vxe-ui-input-border-color)}.vxe-form-design--widget-subtable-view-list-move{transition:transform .35s ease-in-out}.vxe-form-design--widget-subtable-view-item{position:relative;min-width:200px;cursor:grabbing}.vxe-form-design--widget-subtable-view-item:hover{background:var(--vxe-ui-base-active-background-color)}.vxe-form-design--widget-subtable-view-item.is--active{background:var(--vxe-ui-base-active-background-color)}.vxe-form-design--widget-subtable-view-item.is--active::before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;border:1px dashed var(--vxe-ui-font-primary-color);pointer-events:none;z-index:2}.vxe-form-design--widget-subtable-view-item-box{height:100%}.vxe-form-design--widget-subtable-view-item-box::after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1}.vxe-form-design--widget-subtable-view-empty{flex-grow:1;color:var(--vxe-ui-font-placeholder-color);padding:0 var(--vxe-ui-layout-padding-threefold);min-height:78px;min-width:260px;cursor:default}.vxe-form-design--widget-subtable-form-item{overflow:hidden}.vxe-form-design--widget-subtable-form-item>.vxe-form--item-inner{overflow:hidden}.vxe-form-design--widget-subtable-form-item>.vxe-form--item-inner>.vxe-form--item-content{overflow:hidden}.vxe-form-design--widget-subtable-view-item-wrapper{height:100%}.vxe-form-design--widget-subtable-view-item-wrapper .vxe-form--item.is--vertical{padding:0}.vxe-form-design--widget-subtable-view-item-wrapper .vxe-form--item.is--vertical .vxe-form--item-title{height:2.8em;line-height:2.8em;padding:0 var(--vxe-ui-layout-padding-default)}.vxe-form-design--widget-subtable-view-item-wrapper .vxe-form--item.is--vertical .vxe-form--item-content{display:flex;flex-direction:row;align-items:center;justify-content:center;padding:var(--vxe-ui-layout-padding-default)}.vxe-form-design--widget-subtable-view-item-wrapper .vxe-form--item-title{border-bottom:1px solid var(--vxe-ui-input-border-color)}.vxe-form-design .vxe-form-design--widget-form-item-devices{display:flex;flex-direction:column}.vxe-form-design .vxe-form-design--widget-form-item-layout{display:flex;flex-direction:row}.vxe-form-design .vxe-form-design--widget-form-item-option{width:50%;text-align:center;padding:var(--vxe-ui-layout-padding-default);margin:0 var(--vxe-ui-layout-padding-default);border:1px solid var(--vxe-ui-input-border-color);border-radius:var(--vxe-ui-base-border-radius);cursor:pointer}.vxe-form-design .vxe-form-design--widget-form-item-option.is--vertical .vxe-form-design--widget-form-item-option-row{display:flex;flex-direction:column}.vxe-form-design .vxe-form-design--widget-form-item-option.is--vertical .vxe-form-design--widget-form-item-option-row:nth-child(1)::before{content:"";display:block;width:30%;height:1.2em;margin:2px;background-color:var(--vxe-ui-font-tinge-color);border-radius:var(--vxe-ui-base-border-radius)}.vxe-form-design .vxe-form-design--widget-form-item-option.is--vertical .vxe-form-design--widget-form-item-option-row:nth-child(2)::before{content:"";display:block;width:100%;height:1.2em;margin:2px;background-color:var(--vxe-ui-font-tinge-color);border-radius:var(--vxe-ui-base-border-radius)}.vxe-form-design .vxe-form-design--widget-form-item-option.is--horizontal .vxe-form-design--widget-form-item-option-row{display:flex;flex-direction:row}.vxe-form-design .vxe-form-design--widget-form-item-option.is--horizontal .vxe-form-design--widget-form-item-option-row:nth-child(1)::before,.vxe-form-design .vxe-form-design--widget-form-item-option.is--horizontal .vxe-form-design--widget-form-item-option-row:nth-child(2)::before{content:"";display:block;width:30%;height:1.2em;margin:2px;background-color:var(--vxe-ui-font-tinge-color);border-radius:var(--vxe-ui-base-border-radius)}.vxe-form-design .vxe-form-design--widget-form-item-option.is--horizontal .vxe-form-design--widget-form-item-option-row:nth-child(1)::after,.vxe-form-design .vxe-form-design--widget-form-item-option.is--horizontal .vxe-form-design--widget-form-item-option-row:nth-child(2)::after{content:"";display:block;width:70%;height:1.2em;margin:2px;background-color:var(--vxe-ui-font-tinge-color);border-radius:var(--vxe-ui-base-border-radius)}.vxe-form-design .vxe-form-design--widget-form-item-option:hover{border-color:var(--vxe-ui-font-primary-color)}.vxe-form-design .vxe-form-design--widget-form-item-option.is--active{color:var(--vxe-ui-font-primary-color);border-color:var(--vxe-ui-font-primary-color)}.vxe-form-design .vxe-form-design--widget-form-item-option.is--active .vxe-form-design--widget-form-item-option-row:nth-child(1)::after,.vxe-form-design .vxe-form-design--widget-form-item-option.is--active .vxe-form-design--widget-form-item-option-row:nth-child(1)::before,.vxe-form-design .vxe-form-design--widget-form-item-option.is--active .vxe-form-design--widget-form-item-option-row:nth-child(2)::after,.vxe-form-design .vxe-form-design--widget-form-item-option.is--active .vxe-form-design--widget-form-item-option-row:nth-child(2)::before{background-color:var(--vxe-ui-font-primary-color)}.vxe-form-design .vxe-form-design--widget-form-item-option-row{margin-bottom:.2em}.vxe-form-design--widget-form-item-data-source{max-height:30vh;min-height:140px;overflow:auto}.vxe-form-design--widget-form-item-data-source-option{position:relative;display:flex;flex-direction:row;padding:var(--vxe-ui-layout-padding-half) 0}.vxe-form-design--widget-form-item-data-source-option::before{content:"";position:absolute;top:0;left:var(--vxe-ui-layout-padding-half);width:var(--vxe-ui-layout-padding-default);height:100%;border:1px dotted var(--vxe-ui-base-popup-border-color);border-width:0 0 0 1px}.vxe-form-design--widget-form-item-data-source-option::after{content:"";position:absolute;top:50%;left:var(--vxe-ui-layout-padding-half);width:var(--vxe-ui-layout-padding-default);height:0;border-top:1px dotted var(--vxe-ui-base-popup-border-color)}.vxe-form-design--widget-form-item-data-source-option.is--first::before{top:50%;height:50%}.vxe-form-design--widget-form-item-data-source-option.is--last::before{height:50%}.vxe-form-design--widget-form-item-data-source-option .vxe-button{flex-shrink:0}.vxe-form-design--widget-form-item-data-source-option .vxe-form-design--widget-expand-btn{display:flex;flex-direction:row;align-items:center;width:2em}.vxe-form-design--widget-form-item-data-source-option .vxe-form-design--widget-expand-btn i{cursor:pointer;background-color:var(--vxe-ui-layout-background-color);transition:transform .1s ease-in-out;z-index:2}.vxe-form-design--widget-form-item-data-source-sub-option{position:relative}.vxe-form-design--widget-form-item-data-source-sub-option::before{content:"";position:absolute;top:0;left:var(--vxe-ui-layout-padding-half);width:var(--vxe-ui-layout-padding-default);height:100%;border:1px dotted var(--vxe-ui-base-popup-border-color);border-width:0 0 0 1px}.vxe-form-design--widget-form-item-data-source-sub-option:last-child::before{display:none}.vxe-form-design--widget-form-item-data-source-sub-option .vxe-form-design--widget-form-item-data-source-option{padding-left:var(--vxe-ui-layout-padding-double)}.vxe-form-design--widget-form-item-data-source-sub-option .vxe-form-design--widget-form-item-data-source-option:first-child::before{top:0;height:50%}.vxe-form-design--widget-form-item-data-source-sub-option .vxe-form-design--widget-form-item-data-source-option::before{top:-50%;left:calc(var(--vxe-ui-layout-padding-double) + .5em);width:var(--vxe-ui-layout-padding-default);height:100%}.vxe-form-design--widget-form-item-data-source-sub-option .vxe-form-design--widget-form-item-data-source-option::after{left:calc(var(--vxe-ui-layout-padding-double) + .5em)}.vxe-form-design--widget-form-item-data-source-popup{height:100%;display:flex;flex-direction:column;overflow:auto}.vxe-form-design--widget-form-item-data-source-popup>.vxe-textarea{flex-grow:1}.vxe-form-design--widget-form-item-data-source-popup>.vxe-textarea .vxe-textarea--inner{height:100%}.vxe-form-design .vxe-form-design--widget-form-item-prop-list{margin-bottom:var(--vxe-ui-layout-padding-double);padding:0 var(--vxe-ui-layout-padding-default)}.vxe-form-design .vxe-form-design--widget-form-item-prop-list:first-child{margin-top:var(--vxe-ui-layout-padding-default)}.vxe-form-design .vxe-form-design--widget-form-item-prop-list>span{padding:0 .5em}.vxe-form-design .vxe-form-design--widget-form-item-prop-list>span:first-child{padding:0;padding-right:var(--vxe-ui-layout-padding-default)}.vxe-form-design .vxe-form-design--widget-form-item-prop-list .vxe-form-design--widget-form-item-prop-unit,.vxe-form-design .vxe-form-design--widget-form-item-prop-list .vxe-form-design--widget-form-item-prop-width,.vxe-form-design .vxe-form-design--widget-form-item-prop-list>span:first-child{display:inline-flex;vertical-align:middle}.vxe-form-design .vxe-form-design--widget-form-item-prop-list .vxe-form-design--widget-form-item-prop-width{width:90px}.vxe-form-design .vxe-form-design--widget-form-item-prop-list .vxe-form-design--widget-form-item-prop-unit{width:90px}.vxe-list-design .vxe-list-design--widget-form-item-prop-list{margin-bottom:var(--vxe-ui-layout-padding-double);padding:0 var(--vxe-ui-layout-padding-default)}.vxe-list-design .vxe-list-design--widget-form-item-prop-list:first-child{margin-top:var(--vxe-ui-layout-padding-default)}.vxe-list-design .vxe-list-design--widget-form-item-prop-list:last-child{margin-bottom:0}.vxe-list-design .vxe-list-design--widget-form-item-prop-list>span{padding:0 .5em}.vxe-list-design .vxe-list-design--widget-form-item-prop-list>span:first-child{padding:0;padding-right:var(--vxe-ui-layout-padding-default)}.vxe-form-design{display:flex;flex-direction:column;color:var(--vxe-ui-font-color);font-family:var(--vxe-ui-font-family)}.vxe-form-design{font-size:var(--vxe-ui-font-size-default)}.vxe-form-design.size--medium{font-size:var(--vxe-ui-font-size-medium)}.vxe-form-design.size--small{font-size:var(--vxe-ui-font-size-small)}.vxe-form-design.size--mini{font-size:var(--vxe-ui-font-size-mini)}.vxe-form-design--body{display:flex;flex-direction:row;flex-grow:1;overflow:hidden}.vxe-form-design--header{flex-shrink:0;padding:0 var(--vxe-ui-layout-padding-default)}.vxe-form-design--header-wrapper{display:flex;flex-direction:row;align-items:center;width:100%;min-height:3em;border:1px solid var(--vxe-ui-input-border-color);border-radius:var(--vxe-ui-base-border-radius)}.vxe-form-design--header-left,.vxe-form-design--header-right{flex-shrink:0}.vxe-form-design--header-middle{flex-grow:1}.vxe-form-design--layout-style{display:flex;flex-direction:row;height:100%;overflow:hidden}.vxe-form-design--layout-style-preview{flex-grow:1;padding-right:var(--vxe-ui-layout-padding-default);overflow:hidden}.vxe-form-design--layout-style-preview>.vxe-form-view{height:100%;width:100%;border:1px solid var(--vxe-ui-input-border-color);border-radius:var(--vxe-ui-base-border-radius);overflow:auto}.vxe-form-design--layout-style-preview.is--mobile>.vxe-form-view{width:400px;margin:0 auto}.vxe-form-design--layout-style-setting{flex-shrink:0;width:300px;border:1px solid var(--vxe-ui-input-border-color);border-radius:var(--vxe-ui-base-border-radius);background-color:var(--vxe-ui-layout-background-color);z-index:1;overflow:auto}.vxe-form-design--widget{width:280px;flex-shrink:0;overflow:auto}.vxe-form-design--setting,.vxe-form-design--widget{padding:var(--vxe-ui-layout-padding-default);border-radius:var(--vxe-ui-base-border-radius)}.vxe-form-design--setting{width:300px;flex-shrink:0;overflow:auto}.vxe-form-design--preview{flex-grow:1;overflow:auto;padding:var(--vxe-ui-layout-padding-default) var(--vxe-ui-layout-padding-half);-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-form-design--preview-wrapper{width:100%;height:100%;overflow:auto;padding:var(--vxe-ui-layout-padding-default) 0;background-color:var(--vxe-ui-layout-background-color);border-radius:var(--vxe-ui-base-border-radius);border:1px solid var(--vxe-ui-input-border-color)}.vxe-form-design--widget-list{display:flex;flex-direction:row;flex-wrap:wrap}.vxe-form-design--widget-title{font-weight:700;padding:var(--vxe-ui-layout-padding-half) 0 var(--vxe-ui-layout-padding-half) var(--vxe-ui-layout-padding-half)}.vxe-form-design--widget-group{border-radius:var(--vxe-ui-base-border-radius);padding:var(--vxe-ui-layout-padding-default);margin-bottom:var(--vxe-ui-layout-padding-default);background-color:var(--vxe-ui-layout-background-color);border:1px solid var(--vxe-ui-input-border-color)}.vxe-form-design--widget-item{width:50%;padding:var(--vxe-ui-layout-padding-half)}.vxe-form-design--widget-box{position:relative;height:32px;line-height:32px;font-size:var(--vxe-ui-form-design-widget-item-font-size);padding:0 var(--vxe-ui-layout-padding-half);border-radius:var(--vxe-ui-base-border-radius);border:1px solid var(--vxe-ui-input-border-color);background-color:var(--vxe-ui-layout-background-color);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:grabbing;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-form-design--widget-box:hover{border-color:var(--vxe-ui-font-primary-lighten-color);background-color:var(--vxe-ui-base-active-background-color)}.vxe-form-design--widget-box:hover .vxe-form-design--widget-item-add{display:block}.vxe-form-design--widget-item-icon{padding:0 .2em}.vxe-form-design--widget-item-name{padding-left:var(--vxe-ui-layout-padding-half)}.vxe-form-design--widget-item-add{display:none;position:absolute;top:0;right:var(--vxe-ui-layout-padding-default);width:1em;height:100%;cursor:pointer}.vxe-form-design--widget-item-add:hover{color:var(--vxe-ui-font-primary-color)}.vxe-form-design--preview-list{width:100%}.vxe-form-design--preview-list-move{transition:transform .35s ease-in-out}.vxe-form-design--preview-item{position:relative;display:block;padding:var(--vxe-ui-layout-padding-default);border:1px solid transparent;cursor:grabbing}.vxe-form-design--preview-item::after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1}.vxe-form-design--preview-item:hover{background-color:var(--vxe-ui-form-design-widget-hover-background-color)}.vxe-form-design--preview-item.is--active{border:1px dashed var(--vxe-ui-font-primary-color);background-color:var(--vxe-ui-base-active-background-color)}.vxe-form-design--preview-item.is--drag,.vxe-form-design--preview-item.is--sort{background-color:var(--vxe-ui-base-drag-background-color)}.vxe-form-design--preview-item-view{width:100%}.vxe-form-design--preview-item-operate{position:absolute;top:calc(var(--vxe-ui-layout-padding-default) * -1);right:var(--vxe-ui-layout-padding-default);z-index:3}.vxe-form-design--setting-form{height:100%;background-color:var(--vxe-ui-layout-background-color);border:1px solid var(--vxe-ui-input-border-color)}.vxe-form-design--setting-form-tabs{height:100%}
@@ -67,7 +67,7 @@ const ViewColItemComponent = defineComponent({
67
67
  const compConf = renderer.get(name) || {};
68
68
  const renderWidgetDesignView = compConf.renderFormDesignWidgetEdit || compConf.renderFormDesignWidgetView;
69
69
  const renderOpts = widget || { name };
70
- const params = { widget, isEditMode: true, isViewMode: false };
70
+ const params = { widget, isEditMode: true, isViewMode: false, $formDesign: $xeFormDesign, $formView: null };
71
71
  const isActive = activeWidget && widget && activeWidget.id === widget.id;
72
72
  return h('div', {
73
73
  class: ['vxe-form-design--widget-row-view', {
@@ -179,6 +179,7 @@ export const WidgetRowViewComponent = defineComponent({
179
179
  },
180
180
  emits: [],
181
181
  setup(props) {
182
+ const $xeFormDesign = inject('$xeFormDesign', null);
182
183
  const computedColObjList = computed(() => {
183
184
  const { renderParams } = props;
184
185
  const { widget } = renderParams;
@@ -209,7 +210,7 @@ export const WidgetRowViewComponent = defineComponent({
209
210
  const compConf = renderer.get(name) || {};
210
211
  const renderWidgetDesignView = compConf.renderFormDesignWidgetView;
211
212
  const renderOpts = subWidget;
212
- const params = { widget: subWidget, isEditMode: false, isViewMode: true };
213
+ const params = { widget: subWidget, isEditMode: false, isViewMode: true, $formDesign: $xeFormDesign, $formView: null };
213
214
  if (renderWidgetDesignView) {
214
215
  return getSlotVNs(renderWidgetDesignView(renderOpts, params));
215
216
  }
@@ -1,8 +1,9 @@
1
- import { defineComponent, inject, h, createCommentVNode, TransitionGroup } from 'vue';
1
+ import { defineComponent, inject, h, createCommentVNode, TransitionGroup, computed } from 'vue';
2
2
  import { VxeUI, renderer, getIcon, getI18n } from '@vxe-ui/core';
3
3
  import XEUtils from 'xe-utils';
4
4
  import { hasFormDesignLayoutType } from '../src/util';
5
5
  import { getSlotVNs } from '../../ui/src/vn';
6
+ import { useKebabCaseName } from '../render/hooks';
6
7
  import VxeFormItemComponent from '../../form/src/form-item';
7
8
  import VxeButtonComponent from '../../button/src/button';
8
9
  import VxeCheckboxComponent from '../../checkbox/src/checkbox';
@@ -96,7 +97,7 @@ const ViewSubItemComponent = defineComponent({
96
97
  const compConf = renderer.get(name) || {};
97
98
  const renderWidgetDesignView = compConf.renderFormDesignWidgetEdit || compConf.renderFormDesignWidgetView;
98
99
  const renderOpts = widget || { name };
99
- const params = { widget, isEditMode: true, isViewMode: false };
100
+ const params = { widget, isEditMode: true, isViewMode: false, $formDesign: $xeFormDesign, $formView: null };
100
101
  const isActive = activeWidget && widget && activeWidget.id === widget.id;
101
102
  return h('div', {
102
103
  class: ['vxe-form-design--widget-subtable-view-item', {
@@ -284,9 +285,59 @@ export const WidgetSubtableViewComponent = defineComponent({
284
285
  }
285
286
  },
286
287
  emits: [],
287
- setup() {
288
+ setup(props) {
289
+ const VxeTableGridComponent = VxeUI.getComponent('VxeGrid');
290
+ const $xeFormView = inject('$xeFormView', null);
291
+ const computeKebabCaseName = useKebabCaseName(props);
292
+ const computeSubtableColumns = computed(() => {
293
+ const { renderParams } = props;
294
+ const { widget } = renderParams;
295
+ const { children, options } = widget;
296
+ const columns = [];
297
+ if (options.showCheckbox) {
298
+ columns.push({
299
+ type: 'checkbox',
300
+ width: 60
301
+ });
302
+ }
303
+ columns.push({
304
+ type: 'seq',
305
+ width: 60
306
+ });
307
+ if (children) {
308
+ children.forEach(childWidget => {
309
+ columns.push({
310
+ field: childWidget.field,
311
+ title: childWidget.title
312
+ });
313
+ });
314
+ }
315
+ return columns;
316
+ });
288
317
  return () => {
289
- return h('div', 'eeee');
318
+ const { renderParams } = props;
319
+ const { widget } = renderParams;
320
+ const kebabCaseName = computeKebabCaseName.value;
321
+ const subtableColumns = computeSubtableColumns.value;
322
+ return h(VxeFormItemComponent, {
323
+ class: ['vxe-form-design--widget-render-form-item', `widget-${kebabCaseName}`],
324
+ title: widget.title,
325
+ field: widget.field,
326
+ span: 24
327
+ }, {
328
+ default() {
329
+ return VxeTableGridComponent
330
+ ? h(VxeTableGridComponent, {
331
+ border: true,
332
+ columnConfig: {
333
+ resizable: true
334
+ },
335
+ data: $xeFormView ? $xeFormView.getItemValue(widget) : null,
336
+ columns: subtableColumns
337
+ })
338
+ : createCommentVNode();
339
+ }
340
+ });
290
341
  };
291
342
  }
292
343
  });