@kp-ui/lowcode-pc-v2 0.0.5 → 0.0.6

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 (33) hide show
  1. package/assets/styles/style.css +66 -20
  2. package/core/src/components/common/render/RenderWidgetList.vue_vue_type_script_setup_true_lang.js +6 -4
  3. package/core/src/components/common/render/usePageContext.js +11 -8
  4. package/core/src/hooks/useAppRef.js +5 -3
  5. package/core/src/hooks/useField.js +0 -4
  6. package/core/src/hooks/useFieldRules.js +36 -9
  7. package/core/src/hooks/useRemoteData.js +4 -3
  8. package/core/src/hooks/useSelect.js +4 -13
  9. package/core/src/lang/en-US.js +22 -0
  10. package/core/src/lang/zh-CN.js +23 -1
  11. package/package.json +1 -1
  12. package/src/components/public/ConfigView/CustomPageRender.vue_vue_type_script_setup_true_lang.js +3 -4
  13. package/src/hooks/useTableWidget.js +48 -15
  14. package/src/render/index.js +1 -1
  15. package/src/render/index.vue_vue_type_script_setup_true_lang.js +4 -3
  16. package/src/schemas/defaults/field.js +1 -0
  17. package/src/widgets/advanced/code-editor/index.js +1 -1
  18. package/src/widgets/advanced/code-editor/index.vue_vue_type_script_setup_true_lang.js +9 -2
  19. package/src/widgets/advanced/data-table/index.js +1 -1
  20. package/src/widgets/advanced/data-table/index.vue_vue_type_script_setup_true_lang.js +10 -12
  21. package/src/widgets/advanced/data-table/schema.js +2 -1
  22. package/src/widgets/containers/dialog/index-render.js +3 -1
  23. package/src/widgets/containers/dialog/index-render.vue_vue_type_script_setup_true_lang.js +5 -4
  24. package/src/widgets/containers/dialog/schema.js +1 -0
  25. package/src/widgets/containers/flex/index-render.js +7 -0
  26. package/src/widgets/containers/flex/index-render.vue_vue_type_script_setup_true_lang.js +93 -0
  27. package/src/widgets/containers/flex/schema.js +35 -0
  28. package/src/widgets/containers/space/schema.js +1 -0
  29. package/src/widgets/render.js +7 -3
  30. package/src/widgets/widgetTypes.js +1 -0
  31. package/src/widgets/wrapper/form-item-wrapper.js +1 -1
  32. package/src/widgets/wrapper/form-item-wrapper.vue_vue_type_script_setup_true_lang.js +15 -10
  33. package/stats.html +1 -1
@@ -5,11 +5,26 @@ import { useRemoteData } from "../../core/src/hooks/useRemoteData.js";
5
5
  import { useFactoryRender } from "../../core/src/hooks/useFactoryRender.js";
6
6
  import { useTableColumnStore } from "../../core/src/store/useTableColumnStore.js";
7
7
  import ActionButtonListRender_default from "../components/public/ActionButtonListRender.js";
8
- import { computed, h, inject, isVNode, ref, watchEffect } from "vue";
8
+ import { computed, h, inject, isVNode, ref, toRaw, watch } from "vue";
9
9
  import { message } from "ant-design-vue";
10
10
  import { CustomItemRender, TpfDelConfirm, tranformAntSizzVxetableSize, tranformAntTableColumnToVxetableColumn, useExecFunction } from "tmgc2-share";
11
11
  import { cloneDeep, isArray, omit } from "lodash-es";
12
12
  //#region src/hooks/useTableWidget.ts
13
+ var normalizePlainObject = (value) => {
14
+ const rawValue = toRaw(value);
15
+ if (isArray(rawValue)) return rawValue.map(normalizePlainObject);
16
+ if (!rawValue || typeof rawValue !== "object") return rawValue;
17
+ const prototype = Object.getPrototypeOf(rawValue);
18
+ if (prototype !== Object.prototype && prototype !== null) return rawValue;
19
+ return Object.keys(rawValue).reduce((result, key) => {
20
+ result[key] = normalizePlainObject(rawValue[key]);
21
+ return result;
22
+ }, {});
23
+ };
24
+ var normalizeTableData = (value) => {
25
+ if (!isArray(value)) return [];
26
+ return value.map(normalizePlainObject);
27
+ };
13
28
  function useTableWidget({ widget, fieldModel, designState = false }) {
14
29
  const tableRef = ref();
15
30
  const { i18nt } = useI18n();
@@ -25,6 +40,7 @@ function useTableWidget({ widget, fieldModel, designState = false }) {
25
40
  var _ref, _widget$props;
26
41
  return (_ref = (widget === null || widget === void 0 || (_widget$props = widget.props) === null || _widget$props === void 0 ? void 0 : _widget$props.showColumnManager) && !!columnList.value.length) !== null && _ref !== void 0 ? _ref : false;
27
42
  });
43
+ const localData = ref(normalizeTableData(fieldModel.value));
28
44
  const columnList = ref([]);
29
45
  const initColumnList = () => {
30
46
  const storageKey = widget.props.name || widget.id;
@@ -67,7 +83,7 @@ function useTableWidget({ widget, fieldModel, designState = false }) {
67
83
  const tableColumns = (optins === null || optins === void 0 ? void 0 : optins.tableColumns) || [];
68
84
  const { rowSelection, showIndex } = optins !== null && optins !== void 0 ? optins : {};
69
85
  if (rowSelection === null || rowSelection === void 0 ? void 0 : rowSelection.hasRowSelection) leftFixedColumns.push({
70
- title: rowSelection.columnTitle,
86
+ title: rowSelection.columnTitle || "",
71
87
  width: rowSelection.columnWidth,
72
88
  align: "left",
73
89
  fixed: "left",
@@ -164,12 +180,27 @@ function useTableWidget({ widget, fieldModel, designState = false }) {
164
180
  };
165
181
  };
166
182
  const tableSize = computed(() => widget.props.tableSize);
183
+ const tableHeight = computed(() => {
184
+ if (widget.props.heightMode === "auto") return "100%";
185
+ const height = transformPx(widget.props.height);
186
+ return height === "unset" ? "100%" : height;
187
+ });
188
+ const tableWrapperFlex = computed(() => widget.props.heightMode === "auto" ? "0 0 auto" : "1 1 auto");
167
189
  const onSortChange = () => {
168
190
  initTableSoureData();
169
191
  };
170
192
  const rowKey = computed(() => widget.props.rowKey);
193
+ const tableData = computed(() => localData.value);
194
+ const syncTableValue = (value) => {
195
+ var _tableRef$value;
196
+ const tableValue = normalizeTableData(value);
197
+ localData.value = tableValue;
198
+ fieldModel.value = tableValue;
199
+ (_tableRef$value = tableRef.value) === null || _tableRef$value === void 0 || _tableRef$value.loadData(tableValue);
200
+ };
171
201
  const tableProps = computed(() => {
172
- const { height = 300, border = false, lineHeight = 50, colorRow = false, showPagination = true, treeConfig } = widget.props;
202
+ var _widget$props$rowSele;
203
+ const { border = false, lineHeight = 50, colorRow = false, showPagination = true, treeConfig } = widget.props;
173
204
  let _treeConfig = {};
174
205
  if (treeConfig === null || treeConfig === void 0 ? void 0 : treeConfig.enabled) _treeConfig = {
175
206
  transform: treeConfig.transform,
@@ -180,11 +211,11 @@ function useTableWidget({ widget, fieldModel, designState = false }) {
180
211
  id: widget.id,
181
212
  showPagination,
182
213
  size: tranformAntSizzVxetableSize(tableSize.value),
183
- height: transformPx(height),
184
214
  border: border !== null && border !== void 0 ? border : false,
185
- data: fieldModel.value || [],
215
+ data: tableData.value,
186
216
  columns: columns.value,
187
217
  treeConfig: _treeConfig,
218
+ minHeight: "200px",
188
219
  rowConfig: {
189
220
  keyField: rowKey.value,
190
221
  isCurrent: colorRow,
@@ -192,11 +223,12 @@ function useTableWidget({ widget, fieldModel, designState = false }) {
192
223
  },
193
224
  customConfig: { storage: !designState },
194
225
  checkboxConfig: {
226
+ reserve: (_widget$props$rowSele = widget.props.rowSelection) === null || _widget$props$rowSele === void 0 ? void 0 : _widget$props$rowSele.preserveSelectedRowKeys,
195
227
  isShiftKey: (treeConfig === null || treeConfig === void 0 ? void 0 : treeConfig.enabled) ? true : false,
196
228
  checkMethod: (_data) => {
197
- var _widget$props$rowSele;
229
+ var _widget$props$rowSele2;
198
230
  return executeFunction({
199
- functionBody: (_widget$props$rowSele = widget.props.rowSelection) === null || _widget$props$rowSele === void 0 ? void 0 : _widget$props$rowSele.checkMethod,
231
+ functionBody: (_widget$props$rowSele2 = widget.props.rowSelection) === null || _widget$props$rowSele2 === void 0 ? void 0 : _widget$props$rowSele2.checkMethod,
200
232
  params: _data,
201
233
  keys: ["row"]
202
234
  });
@@ -211,9 +243,9 @@ function useTableWidget({ widget, fieldModel, designState = false }) {
211
243
  const initTableSoureData = async () => {
212
244
  await loadData();
213
245
  };
214
- watchEffect(() => {
215
- fieldModel.value = data.value || [];
216
- });
246
+ watch(() => data.value, (value) => {
247
+ syncTableValue(value);
248
+ }, { immediate: true });
217
249
  const onRunEvent = ({ row, $event }, type) => {
218
250
  executeFunction({
219
251
  functionBody: widget.events[type] || "",
@@ -249,15 +281,14 @@ function useTableWidget({ widget, fieldModel, designState = false }) {
249
281
  });
250
282
  };
251
283
  const getDataSource = () => {
252
- return fieldModel.value;
284
+ return localData.value;
253
285
  };
254
286
  const insertTableValue = (data) => {
255
- if (!fieldModel.value) fieldModel.value = [];
256
- fieldModel.value.push(cloneDeep(data));
287
+ setValue([...localData.value, normalizePlainObject(cloneDeep(data))]);
257
288
  };
258
289
  const setValue = (data) => {
259
290
  if (!isArray(data)) return console.error("表格数据类型错误");
260
- fieldModel.value = cloneDeep(data);
291
+ syncTableValue(cloneDeep(data));
261
292
  };
262
293
  const getTableColumns = () => {
263
294
  return widget.props.tableColumns;
@@ -269,7 +300,7 @@ function useTableWidget({ widget, fieldModel, designState = false }) {
269
300
  if (!delKeys.length) return;
270
301
  try {
271
302
  await TpfDelConfirm({ content: i18nt("确定删除选中的数据吗") });
272
- setValue(fieldModel.value.filter((item) => !(delKeys === null || delKeys === void 0 ? void 0 : delKeys.includes(item[rowKey.value]))));
303
+ setValue(localData.value.filter((item) => !(delKeys === null || delKeys === void 0 ? void 0 : delKeys.includes(item[rowKey.value]))));
273
304
  message.success(i18nt("操作成功"));
274
305
  } catch (_unused) {}
275
306
  };
@@ -300,6 +331,8 @@ function useTableWidget({ widget, fieldModel, designState = false }) {
300
331
  initTableSoureData,
301
332
  setTableRef,
302
333
  tableSize,
334
+ tableHeight,
335
+ tableWrapperFlex,
303
336
  tableProps,
304
337
  tableRef,
305
338
  columns,
@@ -2,6 +2,6 @@ import _plugin_vue_export_helper_default from "../../_virtual/_plugin-vue_export
2
2
  import index_vue_vue_type_script_setup_true_lang_default from "./index.vue_vue_type_script_setup_true_lang.js";
3
3
  /* empty css */
4
4
  //#region src/render/index.vue
5
- var render_default = /* @__PURE__ */ _plugin_vue_export_helper_default(index_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-039c10e2"]]);
5
+ var render_default = /* @__PURE__ */ _plugin_vue_export_helper_default(index_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-464184f3"]]);
6
6
  //#endregion
7
7
  export { render_default as default };
@@ -3,7 +3,7 @@ import LowcodeRenderProvider_default from "../../core/src/components/common/rend
3
3
  import { usePageContext } from "../../core/src/components/common/render/usePageContext.js";
4
4
  import RenderWidgetList_default from "../../core/src/components/common/render/RenderWidgetList.js";
5
5
  import { getRenderWidget } from "../widgets/render.js";
6
- import { computed, createBlock, createCommentVNode, createElementBlock, createVNode, defineComponent, isRef, onMounted, openBlock, ref, unref, watchEffect, withCtx } from "vue";
6
+ import { computed, createBlock, createCommentVNode, createElementBlock, createVNode, defineComponent, isRef, normalizeClass, onMounted, openBlock, ref, unref, useCssVars, watchEffect, withCtx } from "vue";
7
7
  import { Skeleton } from "ant-design-vue";
8
8
  import { getLocat } from "@kp-ui/tool";
9
9
  //#region src/render/index.vue?vue&type=script&setup=true&lang.ts
@@ -28,6 +28,7 @@ var index_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
28
28
  parentForm: { default: null }
29
29
  },
30
30
  setup(__props, { expose: __expose }) {
31
+ useCssVars((_ctx) => ({ "4a7fb80b": unref(formConfig).backgroundColor }));
31
32
  const debug = computed(() => getLocat().debug === "1");
32
33
  const debugVisible = ref(false);
33
34
  const props = __props;
@@ -46,7 +47,7 @@ var index_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
46
47
  formJson: props.formJson
47
48
  });
48
49
  return (_ctx, _cache) => {
49
- return openBlock(), createBlock(unref(LowcodeRenderProvider_default), {
50
+ return openBlock(), createElementBlock("div", { class: normalizeClass(["layout-render-wrapper", unref(formConfig).customClass]) }, [createVNode(unref(LowcodeRenderProvider_default), {
50
51
  getWidget: unref(getRenderWidget),
51
52
  context: unref(formContext)
52
53
  }, {
@@ -64,7 +65,7 @@ var index_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
64
65
  }, null, 8, ["visible"])) : createCommentVNode("", true)
65
66
  ]),
66
67
  _: 1
67
- }, 8, ["getWidget", "context"]);
68
+ }, 8, ["getWidget", "context"])], 2);
68
69
  };
69
70
  }
70
71
  });
@@ -5,6 +5,7 @@ var defaultValidationConfig = {
5
5
  requiredHint: "",
6
6
  validation: "",
7
7
  validationHint: "",
8
+ onValidate: "",
8
9
  rules: []
9
10
  };
10
11
  var defaultDataSourceConfig = {
@@ -2,6 +2,6 @@ import _plugin_vue_export_helper_default from "../../../../_virtual/_plugin-vue_
2
2
  import index_vue_vue_type_script_setup_true_lang_default from "./index.vue_vue_type_script_setup_true_lang.js";
3
3
  /* empty css */
4
4
  //#region src/widgets/advanced/code-editor/index.vue
5
- var code_editor_default = /* @__PURE__ */ _plugin_vue_export_helper_default(index_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-b5e7230e"]]);
5
+ var code_editor_default = /* @__PURE__ */ _plugin_vue_export_helper_default(index_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-8c04a069"]]);
6
6
  //#endregion
7
7
  export { code_editor_default as default };
@@ -10,8 +10,15 @@ var index_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
10
10
  __name: "index",
11
11
  props: { widget: {} },
12
12
  setup(__props, { expose: __expose }) {
13
- const { rules, designState, fieldModel, isReadMode, handleHidden, defineExposed } = useField(__props.widget);
14
- __expose({ ...defineExposed });
13
+ const { rules, designState, fieldModel, isReadMode, handleHidden, defineExposed, getFieldEditor } = useField(__props.widget);
14
+ const setValue = (newValue) => {
15
+ var _getFieldEditor;
16
+ (_getFieldEditor = getFieldEditor()) === null || _getFieldEditor === void 0 || _getFieldEditor.setValue(newValue);
17
+ };
18
+ __expose({
19
+ ...defineExposed,
20
+ setValue
21
+ });
15
22
  return (_ctx, _cache) => {
16
23
  return !unref(handleHidden) ? (openBlock(), createBlock(form_item_wrapper_default, {
17
24
  key: 0,
@@ -2,6 +2,6 @@ import _plugin_vue_export_helper_default from "../../../../_virtual/_plugin-vue_
2
2
  import index_vue_vue_type_script_setup_true_lang_default from "./index.vue_vue_type_script_setup_true_lang.js";
3
3
  /* empty css */
4
4
  //#region src/widgets/advanced/data-table/index.vue
5
- var data_table_default = /* @__PURE__ */ _plugin_vue_export_helper_default(index_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-218c688c"]]);
5
+ var data_table_default = /* @__PURE__ */ _plugin_vue_export_helper_default(index_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-19607d37"]]);
6
6
  //#endregion
7
7
  export { data_table_default as default };
@@ -3,7 +3,7 @@ import { useField } from "../../../../core/src/hooks/useField.js";
3
3
  import { WidgetType, getWidgetName } from "../../widgetTypes.js";
4
4
  import { useTableWidget } from "../../../hooks/useTableWidget.js";
5
5
  import DataTableColumnDialog_default from "../../../components/public/DataTableColumnDialog.js";
6
- import { createCommentVNode, createElementBlock, createVNode, defineComponent, onMounted, openBlock, ref, unref, watchEffect } from "vue";
6
+ import { createCommentVNode, createElementBlock, createVNode, defineComponent, onMounted, openBlock, ref, unref, useCssVars, watchEffect } from "vue";
7
7
  import { SvgIcon, Table, useVxeTable } from "tmgc2-share";
8
8
  //#region src/widgets/advanced/data-table/index.vue?vue&type=script&setup=true&lang.ts
9
9
  var _hoisted_1 = {
@@ -20,10 +20,14 @@ var index_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
20
20
  __name: "index",
21
21
  props: { widget: {} },
22
22
  setup(__props, { expose: __expose }) {
23
- var _widget$props$rowSele;
23
+ var _widget$props$rowSele, _widget$props$rowSele2;
24
+ useCssVars((_ctx) => ({
25
+ "0622be28": unref(tableHeight),
26
+ "3bd67a87": unref(tableWrapperFlex)
27
+ }));
24
28
  const { widget } = __props;
25
29
  const { fieldModel, handleHidden, defineExposed } = useField(widget);
26
- const { loading, tableProps, pagination, showColumnManager, setPagination, setTableRef, initTableSoureData, handleTableChange, onRunEvent, onSortChange, onCheckboxChange, tableDefinExpoed, columnList, initColumnList, handleUpdateColumns } = useTableWidget({
30
+ const { loading, tableProps, pagination, showColumnManager, tableHeight, tableWrapperFlex, setPagination, setTableRef, initTableSoureData, handleTableChange, onRunEvent, onSortChange, onCheckboxChange, tableDefinExpoed, columnList, initColumnList, handleUpdateColumns } = useTableWidget({
27
31
  widget,
28
32
  fieldModel,
29
33
  designState: false
@@ -35,10 +39,11 @@ var index_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
35
39
  columnDialogVisible.value = true;
36
40
  };
37
41
  const columnDialogVisible = ref(false);
38
- const { tableRef, register, selectedRowInfo, sorts, selectRow, delSelectRow } = useVxeTable({
42
+ const { tableRef, register, selectedRowInfo, sorts, selectRow, delSelectRow, getSelectedRows } = useVxeTable({
39
43
  props: {
40
44
  rowKey: widget.props.rowKey,
41
45
  hasRowSelection: (_widget$props$rowSele = widget.props.rowSelection) === null || _widget$props$rowSele === void 0 ? void 0 : _widget$props$rowSele.hasRowSelection,
46
+ preserveSelectedRowKeys: (_widget$props$rowSele2 = widget.props.rowSelection) === null || _widget$props$rowSele2 === void 0 ? void 0 : _widget$props$rowSele2.preserveSelectedRowKeys,
42
47
  clickRowCheck: widget.props.colorRow
43
48
  },
44
49
  events: {
@@ -53,14 +58,7 @@ var index_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
53
58
  cellClick: (params) => onRunEvent(params, "onCellClick")
54
59
  }
55
60
  });
56
- const getSelectedRowKeys = () => {
57
- var _tableRef$value;
58
- return (((_tableRef$value = tableRef.value) === null || _tableRef$value === void 0 ? void 0 : _tableRef$value.getCheckboxRecords()) || []).map((item) => item[widget.props.rowKey]);
59
- };
60
- const getSelectedRows = () => {
61
- var _tableRef$value2;
62
- return (_tableRef$value2 = tableRef.value) === null || _tableRef$value2 === void 0 ? void 0 : _tableRef$value2.getCheckboxRecords(true);
63
- };
61
+ const getSelectedRowKeys = () => selectedRowInfo.value.selectedRowKeys;
64
62
  /**
65
63
  * 获取字段编辑器
66
64
  * @returns 字段编辑器
@@ -57,6 +57,7 @@ var DataTable = {
57
57
  labelHidden: false,
58
58
  hidden: false,
59
59
  lineHeight: 38,
60
+ heightMode: "fixed",
60
61
  height: 300,
61
62
  customClass: [],
62
63
  showIndex: false,
@@ -92,7 +93,7 @@ var DataTable = {
92
93
  showColumnManager: false,
93
94
  colorRow: true,
94
95
  rowSelection: {
95
- columnTitle: "序号",
96
+ columnTitle: "",
96
97
  hasRowSelection: false,
97
98
  preserveSelectedRowKeys: false,
98
99
  fixed: true,
@@ -1,5 +1,7 @@
1
+ import _plugin_vue_export_helper_default from "../../../../_virtual/_plugin-vue_export-helper.js";
1
2
  import index_render_vue_vue_type_script_setup_true_lang_default from "./index-render.vue_vue_type_script_setup_true_lang.js";
3
+ /* empty css */
2
4
  //#region src/widgets/containers/dialog/index-render.vue
3
- var index_render_default = index_render_vue_vue_type_script_setup_true_lang_default;
5
+ var index_render_default = /* @__PURE__ */ _plugin_vue_export_helper_default(index_render_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-17ae4bcb"]]);
4
6
  //#endregion
5
7
  export { index_render_default as default };
@@ -4,11 +4,10 @@ import { ComponentNameEnum } from "../../../../core/src/constants/WidgetTypeEnum
4
4
  import { useField } from "../../../../core/src/hooks/useField.js";
5
5
  import { WidgetType, getWidgetName } from "../../widgetTypes.js";
6
6
  import ActionButtonListRender_default from "../../../components/public/ActionButtonListRender.js";
7
- import { createBlock, createElementVNode, createVNode, defineComponent, openBlock, ref, unref, withCtx } from "vue";
7
+ import { createBlock, createVNode, defineComponent, openBlock, ref, unref, withCtx } from "vue";
8
8
  import { TpfModal } from "tmgc2-share";
9
9
  import { useI18n } from "@kp-ui/i18n";
10
10
  //#region src/widgets/containers/dialog/index-render.vue?vue&type=script&setup=true&lang.ts
11
- var _hoisted_1 = { class: "dialog-content" };
12
11
  var index_render_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
13
12
  inheritAttrs: false,
14
13
  name: getWidgetName(WidgetType.Dialog),
@@ -58,6 +57,7 @@ var index_render_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ d
58
57
  "close-on-click-modal": false,
59
58
  "close-on-press-escape": true,
60
59
  width: unref(transformPx)(_ctx.widget.props.width) || "600px",
60
+ height: unref(transformPx)(_ctx.widget.props.height) || "440px",
61
61
  mask: true,
62
62
  onCancel: close,
63
63
  "left-num": leftNum.value
@@ -72,16 +72,17 @@ var index_render_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ d
72
72
  "ctx",
73
73
  "disabled"
74
74
  ])]),
75
- default: withCtx(() => [createElementVNode("div", _hoisted_1, [createVNode(unref(RenderWidgetList_default), {
75
+ default: withCtx(() => [createVNode(unref(RenderWidgetList_default), {
76
76
  parentWidget: _ctx.widget,
77
77
  list: _ctx.widget.children,
78
78
  "onUpdate:list": _cache[0] || (_cache[0] = ($event) => _ctx.widget.children = $event)
79
- }, null, 8, ["parentWidget", "list"])])]),
79
+ }, null, 8, ["parentWidget", "list"])]),
80
80
  _: 1
81
81
  }, 8, [
82
82
  "title",
83
83
  "visible",
84
84
  "width",
85
+ "height",
85
86
  "left-num"
86
87
  ]);
87
88
  };
@@ -15,6 +15,7 @@ var Dialog = {
15
15
  props: {
16
16
  name: "",
17
17
  width: "100%",
18
+ height: "440px",
18
19
  customClass: [],
19
20
  title: "对话框",
20
21
  centered: false,
@@ -0,0 +1,7 @@
1
+ import _plugin_vue_export_helper_default from "../../../../_virtual/_plugin-vue_export-helper.js";
2
+ import index_render_vue_vue_type_script_setup_true_lang_default from "./index-render.vue_vue_type_script_setup_true_lang.js";
3
+ /* empty css */
4
+ //#region src/widgets/containers/flex/index-render.vue
5
+ var index_render_default = /* @__PURE__ */ _plugin_vue_export_helper_default(index_render_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-4ac728a4"]]);
6
+ //#endregion
7
+ export { index_render_default as default };
@@ -0,0 +1,93 @@
1
+ import RenderWidgetList_default from "../../../../core/src/components/common/render/RenderWidgetList.js";
2
+ import { ComponentNameEnum } from "../../../../core/src/constants/WidgetTypeEnum.js";
3
+ import { useField } from "../../../../core/src/hooks/useField.js";
4
+ import { WidgetType, getWidgetName } from "../../widgetTypes.js";
5
+ import { computed, createCommentVNode, createElementBlock, createVNode, defineComponent, normalizeClass, normalizeStyle, openBlock, unref } from "vue";
6
+ //#region src/widgets/containers/flex/index-render.vue?vue&type=script&setup=true&lang.ts
7
+ var index_render_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
8
+ inheritAttrs: false,
9
+ name: getWidgetName(WidgetType.Flex),
10
+ componentName: ComponentNameEnum.ContainerWidget,
11
+ __name: "index-render",
12
+ props: { widget: {} },
13
+ setup(__props, { expose: __expose }) {
14
+ const { handleHidden, defineExposed } = useField(__props.widget);
15
+ const flexHeight = computed(() => {
16
+ if (__props.widget.props.heightMode === "fixed") {
17
+ var _props$widget$props$f;
18
+ return `${(_props$widget$props$f = __props.widget.props.flexHeight) !== null && _props$widget$props$f !== void 0 ? _props$widget$props$f : 42}px`;
19
+ }
20
+ return "100%";
21
+ });
22
+ const getFlexItemStyle = (childWidget) => {
23
+ var _props$widget$props$f2, _ref, _config$mode;
24
+ const config = childWidget.id ? (_props$widget$props$f2 = __props.widget.props.flexItemWidths) === null || _props$widget$props$f2 === void 0 ? void 0 : _props$widget$props$f2[childWidget.id] : void 0;
25
+ const mode = (_ref = (_config$mode = config === null || config === void 0 ? void 0 : config.mode) !== null && _config$mode !== void 0 ? _config$mode : __props.widget.props.flexItemWidthMode) !== null && _ref !== void 0 ? _ref : "auto";
26
+ const size = (config === null || config === void 0 ? void 0 : config.width) || __props.widget.props.flexItemWidth || "240px";
27
+ const isColumn = __props.widget.props.flexDirection.includes("column");
28
+ if (isColumn) {
29
+ if (mode === "full") return {
30
+ width: "100%",
31
+ minHeight: 0,
32
+ flex: "1"
33
+ };
34
+ if (mode === "fixed") return {
35
+ width: "100%",
36
+ height: size,
37
+ flex: `0 0 ${size}`
38
+ };
39
+ return {
40
+ width: "100%",
41
+ flex: "0 1 auto"
42
+ };
43
+ }
44
+ if (mode === "full") {
45
+ if (!__props.widget.props.wrap) return {
46
+ width: 0,
47
+ minWidth: 0,
48
+ flex: "1 1 0"
49
+ };
50
+ return {
51
+ width: "100%",
52
+ flex: "0 0 100%"
53
+ };
54
+ }
55
+ if (mode === "fixed") return {
56
+ width: size,
57
+ flex: `0 0 ${size}`
58
+ };
59
+ return {
60
+ width: isColumn ? "100%" : "auto",
61
+ flex: "0 1 auto"
62
+ };
63
+ };
64
+ const flexStyle = computed(() => {
65
+ var _props$widget$props$g;
66
+ return {
67
+ ...__props.widget.style,
68
+ height: flexHeight.value,
69
+ display: "flex",
70
+ flexDirection: __props.widget.props.flexDirection,
71
+ justifyContent: __props.widget.props.justifyContent,
72
+ alignItems: __props.widget.props.alignItems,
73
+ flexWrap: __props.widget.props.wrap ? "wrap" : "nowrap",
74
+ gap: `${(_props$widget$props$g = __props.widget.props.gap) !== null && _props$widget$props$g !== void 0 ? _props$widget$props$g : 0}px`
75
+ };
76
+ });
77
+ __expose({ ...defineExposed });
78
+ return (_ctx, _cache) => {
79
+ return !unref(handleHidden) ? (openBlock(), createElementBlock("div", {
80
+ class: normalizeClass(["flex-container", _ctx.widget.props.customClass]),
81
+ style: normalizeStyle(flexStyle.value),
82
+ key: _ctx.widget.id
83
+ }, [createVNode(unref(RenderWidgetList_default), {
84
+ list: _ctx.widget.children,
85
+ "onUpdate:list": _cache[0] || (_cache[0] = ($event) => _ctx.widget.children = $event),
86
+ parentWidget: _ctx.widget,
87
+ itemStyle: getFlexItemStyle
88
+ }, null, 8, ["list", "parentWidget"])], 6)) : createCommentVNode("", true);
89
+ };
90
+ }
91
+ });
92
+ //#endregion
93
+ export { index_render_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,35 @@
1
+ import { WidgetType } from "../../widgetTypes.js";
2
+ //#region src/widgets/containers/flex/schema.ts
3
+ var Flex = {
4
+ id: "",
5
+ type: WidgetType.Flex,
6
+ category: "container",
7
+ style: {
8
+ width: "100%",
9
+ minHeight: "42px"
10
+ },
11
+ events: {
12
+ onMounted: "",
13
+ onHidden: "//return false"
14
+ },
15
+ children: [],
16
+ props: {
17
+ name: "",
18
+ label: "flex",
19
+ hidden: false,
20
+ customClass: [],
21
+ heightMode: "inherit",
22
+ flexHeight: 42,
23
+ flexDirection: "row",
24
+ justifyContent: "flex-start",
25
+ alignItems: "stretch",
26
+ gap: 8,
27
+ wrap: true,
28
+ flexItemWidthMode: "auto",
29
+ flexItemWidth: "240px",
30
+ flexItemWidths: {},
31
+ componentSort: true
32
+ }
33
+ };
34
+ //#endregion
35
+ export { Flex };
@@ -3,6 +3,7 @@ import { WidgetType } from "../../widgetTypes.js";
3
3
  var Space = {
4
4
  id: "",
5
5
  type: WidgetType.Space,
6
+ internal: true,
6
7
  category: "container",
7
8
  style: {},
8
9
  events: {
@@ -62,6 +62,7 @@ import { Collapse } from "./containers/collapse/schema.js";
62
62
  import { Dialog } from "./containers/dialog/schema.js";
63
63
  import { Form } from "./containers/form/schema.js";
64
64
  import { Space } from "./containers/space/schema.js";
65
+ import { Flex } from "./containers/flex/schema.js";
65
66
  import { List } from "./containers/list/schema.js";
66
67
  import { SecondaryPage } from "./template/SecondaryPage/schema.js";
67
68
  import index_render_default from "./containers/grid-col/index-render.js";
@@ -73,8 +74,9 @@ import index_render_default$5 from "./containers/collapse/index-render.js";
73
74
  import index_render_default$6 from "./containers/dialog/index-render.js";
74
75
  import index_render_default$7 from "./containers/form/index-render.js";
75
76
  import index_render_default$8 from "./containers/space/index-render.js";
76
- import index_render_default$9 from "./containers/list/index-render.js";
77
- import index_render_default$10 from "./template/SecondaryPage/index-render.js";
77
+ import index_render_default$9 from "./containers/flex/index-render.js";
78
+ import index_render_default$10 from "./containers/list/index-render.js";
79
+ import index_render_default$11 from "./template/SecondaryPage/index-render.js";
78
80
  //#region src/widgets/render.ts
79
81
  var renderSchemas = [
80
82
  Input,
@@ -113,6 +115,7 @@ var renderSchemas = [
113
115
  Dialog,
114
116
  Form,
115
117
  Space,
118
+ Flex,
116
119
  List,
117
120
  SecondaryPage
118
121
  ];
@@ -154,7 +157,8 @@ var renderComponents = [
154
157
  index_render_default$7,
155
158
  index_render_default$8,
156
159
  index_render_default$9,
157
- index_render_default$10
160
+ index_render_default$10,
161
+ index_render_default$11
158
162
  ];
159
163
  new Map(renderSchemas.map((schema) => [schema.type, schema]));
160
164
  var renderRegistryComponents = new Map(renderComponents.map((component) => [component.name, component]));
@@ -40,6 +40,7 @@ var WidgetType = /* @__PURE__ */ function(WidgetType) {
40
40
  WidgetType["Dialog"] = "dialog";
41
41
  WidgetType["GridSubForm"] = "grid-sub-form";
42
42
  WidgetType["Space"] = "space";
43
+ WidgetType["Flex"] = "flex";
43
44
  WidgetType["List"] = "list";
44
45
  WidgetType["SecondaryPage"] = "secondary-page";
45
46
  return WidgetType;
@@ -2,6 +2,6 @@ import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_exp
2
2
  import form_item_wrapper_vue_vue_type_script_setup_true_lang_default from "./form-item-wrapper.vue_vue_type_script_setup_true_lang.js";
3
3
  /* empty css */
4
4
  //#region src/widgets/wrapper/form-item-wrapper.vue
5
- var form_item_wrapper_default = /* @__PURE__ */ _plugin_vue_export_helper_default(form_item_wrapper_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-9c668962"]]);
5
+ var form_item_wrapper_default = /* @__PURE__ */ _plugin_vue_export_helper_default(form_item_wrapper_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-254940bd"]]);
6
6
  //#endregion
7
7
  export { form_item_wrapper_default as default };
@@ -4,16 +4,12 @@ import { FormItem } from "ant-design-vue";
4
4
  import { SvgIcon } from "tmgc2-share";
5
5
  //#region src/widgets/wrapper/form-item-wrapper.vue?vue&type=script&setup=true&lang.ts
6
6
  var _hoisted_1 = {
7
- key: 0,
8
- class: "label-box"
9
- };
10
- var _hoisted_2 = {
11
7
  key: 0,
12
8
  class: "custom-label"
13
9
  };
14
- var _hoisted_3 = { class: "label-text" };
15
- var _hoisted_4 = { class: "label-text" };
16
- var _hoisted_5 = {
10
+ var _hoisted_2 = ["title"];
11
+ var _hoisted_3 = ["title"];
12
+ var _hoisted_4 = {
17
13
  key: 1,
18
14
  class: "label-text"
19
15
  };
@@ -68,13 +64,22 @@ var form_item_wrapper_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
68
64
  name: unref(getPropName),
69
65
  labelAlign: labelAlign.value
70
66
  }, {
71
- label: withCtx(() => [!labelHidden.value ? (openBlock(), createElementBlock("div", _hoisted_1, [labelIconClass.value ? (openBlock(), createElementBlock("span", _hoisted_2, [labelIconPosition.value === "front" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createVNode(_component_a_tooltip, { title: labelIconTooltip.value }, {
67
+ label: withCtx(() => [!labelHidden.value ? (openBlock(), createElementBlock("div", {
68
+ key: 0,
69
+ class: normalizeClass(["label-box", `label-box--${labelAlign.value}`])
70
+ }, [labelIconClass.value ? (openBlock(), createElementBlock("span", _hoisted_1, [labelIconPosition.value === "front" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createVNode(_component_a_tooltip, { title: labelIconTooltip.value }, {
72
71
  default: withCtx(() => [createVNode(unref(SvgIcon), { "icon-class": labelIconClass.value }, null, 8, ["icon-class"])]),
73
72
  _: 1
74
- }, 8, ["title"]), createElementVNode("span", _hoisted_3, toDisplayString(unref(label)), 1)], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createElementVNode("span", _hoisted_4, toDisplayString(unref(label)), 1), createVNode(_component_a_tooltip, { title: labelIconTooltip.value }, {
73
+ }, 8, ["title"]), createElementVNode("span", {
74
+ class: "label-text",
75
+ title: unref(label)
76
+ }, toDisplayString(unref(label)), 9, _hoisted_2)], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createElementVNode("span", {
77
+ class: "label-text",
78
+ title: unref(label)
79
+ }, toDisplayString(unref(label)), 9, _hoisted_3), createVNode(_component_a_tooltip, { title: labelIconTooltip.value }, {
75
80
  default: withCtx(() => [createVNode(unref(SvgIcon), { "icon-class": labelIconClass.value }, null, 8, ["icon-class"])]),
76
81
  _: 1
77
- }, 8, ["title"])], 64))])) : (openBlock(), createElementBlock("span", _hoisted_5, toDisplayString(unref(label)), 1))])) : createCommentVNode("", true)]),
82
+ }, 8, ["title"])], 64))])) : (openBlock(), createElementBlock("span", _hoisted_4, toDisplayString(unref(label)), 1))], 2)) : createCommentVNode("", true)]),
78
83
  default: withCtx(() => [renderSlot(_ctx.$slots, "default", {}, void 0, true)]),
79
84
  _: 3
80
85
  }, 8, [