@ibiz-template/vue3-components 0.7.18 → 0.7.19-alpha.1

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 (27) hide show
  1. package/dist/index-xEEb4o9R.js +4 -0
  2. package/dist/index.min.css +1 -1
  3. package/dist/index.system.min.js +1 -1
  4. package/dist/{xlsx-util-wSE1X5Fm.js → xlsx-util-BWays6va.js} +1 -1
  5. package/es/control/app-menu/app-menu.mjs +2 -2
  6. package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-grid/repeater-grid.d.ts +2 -0
  7. package/es/control/grid/grid/grid.mjs +10 -9
  8. package/es/control/search-bar/search-bar.mjs +2 -1
  9. package/es/control/toolbar/short-cut-button/short-cut-button.css +1 -0
  10. package/es/control/toolbar/short-cut-button/short-cut-button.mjs +1 -1
  11. package/es/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/index.d.ts +1 -1
  12. package/es/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.d.ts +1 -1
  13. package/es/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.mjs +12 -7
  14. package/es/panel-component/user-action/user-action.mjs +7 -3
  15. package/es/util/app-popover/app-popover-component.css +1 -1
  16. package/es/view-engine/edit-view.engine.mjs +3 -1
  17. package/lib/control/app-menu/app-menu.cjs +2 -2
  18. package/lib/control/grid/grid/grid.cjs +9 -8
  19. package/lib/control/search-bar/search-bar.cjs +1 -0
  20. package/lib/control/toolbar/short-cut-button/short-cut-button.cjs +1 -1
  21. package/lib/control/toolbar/short-cut-button/short-cut-button.css +1 -0
  22. package/lib/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.cjs +11 -6
  23. package/lib/panel-component/user-action/user-action.cjs +7 -3
  24. package/lib/util/app-popover/app-popover-component.css +1 -1
  25. package/lib/view-engine/edit-view.engine.cjs +3 -1
  26. package/package.json +7 -7
  27. package/dist/index-iWPyEUNq.js +0 -4
@@ -234,8 +234,6 @@ const AppMenuControl = /* @__PURE__ */ defineComponent({
234
234
  };
235
235
  c.evt.on("onCreated", async () => {
236
236
  saveConfigs.value = c.saveConfigs;
237
- });
238
- c.evt.on("onMounted", async () => {
239
237
  const allItems = c.getAllItems();
240
238
  const defaultActiveMenuItem = allItems.find((item) => {
241
239
  return item.openDefault && !item.hidden;
@@ -255,6 +253,8 @@ const AppMenuControl = /* @__PURE__ */ defineComponent({
255
253
  defaultOpens.value.push(item.id);
256
254
  });
257
255
  }
256
+ });
257
+ c.evt.on("onMounted", async () => {
258
258
  const counterRefId = c.model.appCounterRefId;
259
259
  if (counterRefId) {
260
260
  counter = c.getCounter(counterRefId);
@@ -13,6 +13,8 @@ export declare const RepeaterGrid: import("vue").DefineComponent<{
13
13
  load: (args?: import("@ibiz-template/runtime").IDataAbilityParams | undefined) => Promise<IData>;
14
14
  save: (args?: import("@ibiz-template/runtime").FormSaveParams | undefined) => Promise<IData>;
15
15
  remove: (args?: import("@ibiz-template/runtime").IDataAbilityParams | undefined) => Promise<boolean>;
16
+ autoSave: () => Promise<void>;
17
+ immediateAutoSave: () => Promise<void>;
16
18
  wfSubmit: (args?: import("@ibiz-template/runtime").IDataAbilityParams | undefined) => Promise<void>;
17
19
  wfStart: (args?: import("@ibiz-template/runtime").IDataAbilityParams | undefined) => Promise<void>;
18
20
  getData: () => IData[];
@@ -1,4 +1,4 @@
1
- import { resolveComponent, mergeProps, h, createVNode, createTextVNode, renderSlot, onUnmounted, defineComponent } from 'vue';
1
+ import { resolveComponent, mergeProps, h, createVNode, watch, createTextVNode, renderSlot, onUnmounted, defineComponent } from 'vue';
2
2
  import { useControlController, useNamespace, useUIStore } from '@ibiz-template/vue3-util';
3
3
  import { ScriptFactory, GridController } from '@ibiz-template/runtime';
4
4
  import { NOOP } from '@ibiz-template/core';
@@ -196,6 +196,11 @@ const GridControl = /* @__PURE__ */ defineComponent({
196
196
  defaultSort,
197
197
  summaryMethod
198
198
  } = useAppGridBase(c, props);
199
+ watch(() => tableData.value, () => {
200
+ c.calcShowMode(tableData.value);
201
+ }, {
202
+ immediate: true
203
+ });
199
204
  const {
200
205
  renderPopover
201
206
  } = useRowEditPopover(tableRef, c);
@@ -298,12 +303,8 @@ const GridControl = /* @__PURE__ */ defineComponent({
298
303
  return;
299
304
  }
300
305
  const state = this.c.state;
301
- const {
302
- hideHeader,
303
- enablePagingBar
304
- } = this.c.model;
305
306
  return createVNode(resolveComponent("iBizControlBase"), {
306
- "class": [this.ns.is("show-header", !hideHeader), this.ns.is("enable-page", enablePagingBar), this.ns.is("enable-group", this.c.model.enableGroup), this.ns.is("single-select", state.singleSelect), this.ns.is("empty", state.items.length === 0), this.ns.is("enable-customized", this.c.model.enableCustomized)],
307
+ "class": [this.ns.is("show-header", !this.c.state.hideHeader), this.ns.is("enable-page", this.c.state.enablePagingBar), this.ns.is("enable-group", this.c.model.enableGroup), this.ns.is("single-select", state.singleSelect), this.ns.is("empty", state.items.length === 0), this.ns.is("enable-customized", this.c.model.enableCustomized)],
307
308
  "controller": this.c,
308
309
  "style": this.headerCssVars
309
310
  }, {
@@ -312,7 +313,7 @@ const GridControl = /* @__PURE__ */ defineComponent({
312
313
  "class": this.ns.e("table"),
313
314
  "default-sort": this.defaultSort,
314
315
  "border": true,
315
- "show-header": !hideHeader,
316
+ "show-header": !this.c.state.hideHeader,
316
317
  "show-summary": this.c.enableAgg,
317
318
  "summary-method": this.summaryMethod,
318
319
  "highlight-current-row": state.singleSelect,
@@ -339,7 +340,7 @@ const GridControl = /* @__PURE__ */ defineComponent({
339
340
  append: () => {
340
341
  return this.renderPopover();
341
342
  }
342
- }), enablePagingBar && createVNode(resolveComponent("iBizPagination"), {
343
+ }), this.c.state.enablePagingBar && createVNode(resolveComponent("iBizPagination"), {
343
344
  "total": state.total,
344
345
  "curPage": state.curPage,
345
346
  "size": state.size,
@@ -347,7 +348,7 @@ const GridControl = /* @__PURE__ */ defineComponent({
347
348
  "onChange": this.onPageChange,
348
349
  "onPageSizeChange": this.onPageSizeChange,
349
350
  "onPageRefresh": this.onPageRefresh
350
- }, null), this.c.model.enableCustomized && !hideHeader && createVNode("div", {
351
+ }, null), this.c.model.enableCustomized && !this.c.state.hideHeader && createVNode("div", {
351
352
  "class": this.ns.b("setting-box")
352
353
  }, [createVNode(resolveComponent("iBizGridSetting"), {
353
354
  "columnStates": state.columnStates,
@@ -1,5 +1,5 @@
1
1
  import { computed, ref, resolveComponent, createVNode, defineComponent } from 'vue';
2
- import { useControlController, useNamespace } from '@ibiz-template/vue3-util';
2
+ import { useControlController, useLocalCacheKey, useNamespace } from '@ibiz-template/vue3-util';
3
3
  import './search-bar.css';
4
4
  import { SearchBarController } from '@ibiz-template/runtime';
5
5
 
@@ -26,6 +26,7 @@ const SearchBarControl = /* @__PURE__ */ defineComponent({
26
26
  setup() {
27
27
  var _a;
28
28
  const c = useControlController((...args) => new SearchBarController(...args));
29
+ c.setStorageKeyFn(useLocalCacheKey(c.context, "SEARCH_BAR_SELECTED_GROUP", c.view.modal.routeDepth));
29
30
  const ns = useNamespace("control-".concat(c.model.controlType.toLowerCase()));
30
31
  let isSearch = false;
31
32
  const onSearch = () => {
@@ -0,0 +1 @@
1
+ .ibiz-short-cut-button__icon svg{width:var(--ibiz-font-size-regular);height:var(--ibiz-font-size-regular);font-size:var(--ibiz-font-size-regular)}
@@ -58,7 +58,7 @@ const IBizShortCutButton = /* @__PURE__ */ defineComponent({
58
58
  "onClick": this.onClick
59
59
  }, {
60
60
  default: () => [this.item.showIcon && this.item.sysImage && createVNode("span", {
61
- "class": this.ns2.b("icon")
61
+ "class": [this.ns2.b("icon"), this.ns.e("icon")]
62
62
  }, [createVNode(resolveComponent("iBizIcon"), {
63
63
  "icon": this.item.sysImage
64
64
  }, null)]), this.item.showCaption && createVNode("span", {
@@ -10,7 +10,7 @@ export declare const IBizTreeGridExFieldColumn: import("@ibiz-template/vue3-util
10
10
  }, {
11
11
  ns: import("@ibiz-template/core").Namespace;
12
12
  nodeColumn: import("vue").ComputedRef<import("@ibiz-template/runtime").TreeGridExNodeColumnController | undefined>;
13
- fieldValue: import("vue").ComputedRef<any>;
13
+ fieldValue: import("vue").Ref<any>;
14
14
  showText: import("vue").ComputedRef<any>;
15
15
  clickable: import("vue").ComputedRef<any>;
16
16
  tooltip: import("vue").ComputedRef<any>;
@@ -13,7 +13,7 @@ export declare const TreeGridExFieldColumn: import("vue").DefineComponent<{
13
13
  }, {
14
14
  ns: import("@ibiz-template/core").Namespace;
15
15
  nodeColumn: import("vue").ComputedRef<import("@ibiz-template/runtime").TreeGridExNodeColumnController | undefined>;
16
- fieldValue: import("vue").ComputedRef<any>;
16
+ fieldValue: import("vue").Ref<any>;
17
17
  showText: import("vue").ComputedRef<any>;
18
18
  clickable: import("vue").ComputedRef<any>;
19
19
  tooltip: import("vue").ComputedRef<any>;
@@ -1,4 +1,4 @@
1
- import { computed, ref, resolveComponent, createVNode, defineComponent } from 'vue';
1
+ import { ref, watch, computed, resolveComponent, createVNode, defineComponent } from 'vue';
2
2
  import { useNamespace } from '@ibiz-template/vue3-util';
3
3
  import { TreeGridExFieldColumnController, TreeGridExRowState } from '@ibiz-template/runtime';
4
4
  import { isNotNil } from 'ramda';
@@ -19,14 +19,19 @@ const TreeGridExFieldColumn = /* @__PURE__ */ defineComponent({
19
19
  },
20
20
  setup(props) {
21
21
  const ns = useNamespace("tree-grid-ex-field-column");
22
- const nodeColumn = computed(() => {
23
- return props.controller.nodeColumnControllerMap.get(props.row.data._nodeId);
24
- });
25
- const fieldValue = computed(() => {
22
+ const fieldValue = ref();
23
+ watch(() => props.row.data, () => {
26
24
  if (props.row.data._nodeType !== "DE" && props.controller.isFirstShowColumn) {
27
- return props.row.data._text;
25
+ fieldValue.value = props.row.data._text;
26
+ } else {
27
+ fieldValue.value = props.row.data[props.controller.name];
28
28
  }
29
- return props.row.data[props.controller.name];
29
+ }, {
30
+ deep: true,
31
+ immediate: true
32
+ });
33
+ const nodeColumn = computed(() => {
34
+ return props.controller.nodeColumnControllerMap.get(props.row.data._nodeId);
30
35
  });
31
36
  const codeListText = ref("");
32
37
  const onInfoTextChange = (text) => {
@@ -38,6 +38,10 @@ const UserAction = /* @__PURE__ */ defineComponent({
38
38
  }
39
39
  }
40
40
  const onClick = async (event) => {
41
+ const e = {
42
+ ...event
43
+ };
44
+ e.target = event.currentTarget;
41
45
  const id = props.modelData.id;
42
46
  const menuC = c.panel.view.getController("appmenu");
43
47
  if (menuC) {
@@ -55,7 +59,7 @@ const UserAction = /* @__PURE__ */ defineComponent({
55
59
  const tempParam = c.panel.params;
56
60
  tempContext.srfappid = targetMenu.appId || ibiz.env.appId;
57
61
  await ibiz.commands.execute(AppFuncCommand.TAG, targetMenu.appFuncId, tempContext, tempParam, {
58
- event
62
+ event: e
59
63
  });
60
64
  }
61
65
  }
@@ -70,11 +74,11 @@ const UserAction = /* @__PURE__ */ defineComponent({
70
74
  render() {
71
75
  return createVNode("div", {
72
76
  "class": this.ns.b(),
73
- "onClick": (event) => this.onClick(event),
74
77
  "title": this.modelData.caption
75
78
  }, [createVNode(resolveComponent("i-biz-icon"), {
76
79
  "class": [this.ns.e("image")],
77
- "icon": this.sysImage
80
+ "icon": this.sysImage,
81
+ "onClick": (event) => this.onClick(event)
78
82
  }, null)]);
79
83
  }
80
84
  });
@@ -1 +1 @@
1
- .ibiz-popover{position:absolute;top:0;left:0;z-index:1;display:none;width:-moz-max-content;width:max-content;background-color:var(--ibiz-color-bg-2);border:1px solid var(--ibiz-color-border);border-radius:var(--ibiz-border-radius-medium)}.ibiz-popover__arrow{position:absolute;width:8px;height:8px;background:var(--ibiz-color-bg-2);transform:rotate(45deg)}.ibiz-popover.is-show{display:block}.ibiz-popover__overlay{position:fixed;inset:0;background-color:transparent}
1
+ .ibiz-popover{position:absolute;top:0;left:0;z-index:1;display:none;width:-moz-max-content;width:max-content;background-color:var(--ibiz-color-bg-2);border:1px solid var(--ibiz-color-border);border-radius:var(--ibiz-border-radius-medium)}.ibiz-popover__arrow{position:absolute;width:8px;height:8px;z-index:-1;background:var(--ibiz-color-bg-2);transform:rotate(45deg)}.ibiz-popover.is-show{display:block}.ibiz-popover__overlay{position:fixed;inset:0;background-color:transparent}
@@ -63,7 +63,9 @@ class EditViewEngine extends ViewEngineBase {
63
63
  modal.hooks.shouldDismiss.tapPromise(async (context) => {
64
64
  const uiDomain = ibiz.uiDomainManager.get(this.view.context.srfsessionid);
65
65
  const isChange = (this.form.state.modified || uiDomain.dataModification) && this.view.model.enableDirtyChecking === true;
66
- if (isChange && context.allowClose == null) {
66
+ if (isChange && this.form.model.enableAutoSave) {
67
+ await this.form.immediateAutoSave();
68
+ } else if (isChange && context.allowClose == null) {
67
69
  const isAllow = await ibiz.confirm.error({
68
70
  title: ibiz.i18n.t("viewEngine.closeRemind"),
69
71
  desc: ibiz.i18n.t("viewEngine.confirmClosePrompt")
@@ -236,8 +236,6 @@ const AppMenuControl = /* @__PURE__ */ vue.defineComponent({
236
236
  };
237
237
  c.evt.on("onCreated", async () => {
238
238
  saveConfigs.value = c.saveConfigs;
239
- });
240
- c.evt.on("onMounted", async () => {
241
239
  const allItems = c.getAllItems();
242
240
  const defaultActiveMenuItem = allItems.find((item) => {
243
241
  return item.openDefault && !item.hidden;
@@ -257,6 +255,8 @@ const AppMenuControl = /* @__PURE__ */ vue.defineComponent({
257
255
  defaultOpens.value.push(item.id);
258
256
  });
259
257
  }
258
+ });
259
+ c.evt.on("onMounted", async () => {
260
260
  const counterRefId = c.model.appCounterRefId;
261
261
  if (counterRefId) {
262
262
  counter = c.getCounter(counterRefId);
@@ -198,6 +198,11 @@ const GridControl = /* @__PURE__ */ vue.defineComponent({
198
198
  defaultSort,
199
199
  summaryMethod
200
200
  } = gridControl_util.useAppGridBase(c, props);
201
+ vue.watch(() => tableData.value, () => {
202
+ c.calcShowMode(tableData.value);
203
+ }, {
204
+ immediate: true
205
+ });
201
206
  const {
202
207
  renderPopover
203
208
  } = useRowEditPopover.useRowEditPopover(tableRef, c);
@@ -300,12 +305,8 @@ const GridControl = /* @__PURE__ */ vue.defineComponent({
300
305
  return;
301
306
  }
302
307
  const state = this.c.state;
303
- const {
304
- hideHeader,
305
- enablePagingBar
306
- } = this.c.model;
307
308
  return vue.createVNode(vue.resolveComponent("iBizControlBase"), {
308
- "class": [this.ns.is("show-header", !hideHeader), this.ns.is("enable-page", enablePagingBar), this.ns.is("enable-group", this.c.model.enableGroup), this.ns.is("single-select", state.singleSelect), this.ns.is("empty", state.items.length === 0), this.ns.is("enable-customized", this.c.model.enableCustomized)],
309
+ "class": [this.ns.is("show-header", !this.c.state.hideHeader), this.ns.is("enable-page", this.c.state.enablePagingBar), this.ns.is("enable-group", this.c.model.enableGroup), this.ns.is("single-select", state.singleSelect), this.ns.is("empty", state.items.length === 0), this.ns.is("enable-customized", this.c.model.enableCustomized)],
309
310
  "controller": this.c,
310
311
  "style": this.headerCssVars
311
312
  }, {
@@ -314,7 +315,7 @@ const GridControl = /* @__PURE__ */ vue.defineComponent({
314
315
  "class": this.ns.e("table"),
315
316
  "default-sort": this.defaultSort,
316
317
  "border": true,
317
- "show-header": !hideHeader,
318
+ "show-header": !this.c.state.hideHeader,
318
319
  "show-summary": this.c.enableAgg,
319
320
  "summary-method": this.summaryMethod,
320
321
  "highlight-current-row": state.singleSelect,
@@ -341,7 +342,7 @@ const GridControl = /* @__PURE__ */ vue.defineComponent({
341
342
  append: () => {
342
343
  return this.renderPopover();
343
344
  }
344
- }), enablePagingBar && vue.createVNode(vue.resolveComponent("iBizPagination"), {
345
+ }), this.c.state.enablePagingBar && vue.createVNode(vue.resolveComponent("iBizPagination"), {
345
346
  "total": state.total,
346
347
  "curPage": state.curPage,
347
348
  "size": state.size,
@@ -349,7 +350,7 @@ const GridControl = /* @__PURE__ */ vue.defineComponent({
349
350
  "onChange": this.onPageChange,
350
351
  "onPageSizeChange": this.onPageSizeChange,
351
352
  "onPageRefresh": this.onPageRefresh
352
- }, null), this.c.model.enableCustomized && !hideHeader && vue.createVNode("div", {
353
+ }, null), this.c.model.enableCustomized && !this.c.state.hideHeader && vue.createVNode("div", {
353
354
  "class": this.ns.b("setting-box")
354
355
  }, [vue.createVNode(vue.resolveComponent("iBizGridSetting"), {
355
356
  "columnStates": state.columnStates,
@@ -28,6 +28,7 @@ const SearchBarControl = /* @__PURE__ */ vue.defineComponent({
28
28
  setup() {
29
29
  var _a;
30
30
  const c = vue3Util.useControlController((...args) => new runtime.SearchBarController(...args));
31
+ c.setStorageKeyFn(vue3Util.useLocalCacheKey(c.context, "SEARCH_BAR_SELECTED_GROUP", c.view.modal.routeDepth));
31
32
  const ns = vue3Util.useNamespace("control-".concat(c.model.controlType.toLowerCase()));
32
33
  let isSearch = false;
33
34
  const onSearch = () => {
@@ -60,7 +60,7 @@ const IBizShortCutButton = /* @__PURE__ */ vue.defineComponent({
60
60
  "onClick": this.onClick
61
61
  }, {
62
62
  default: () => [this.item.showIcon && this.item.sysImage && vue.createVNode("span", {
63
- "class": this.ns2.b("icon")
63
+ "class": [this.ns2.b("icon"), this.ns.e("icon")]
64
64
  }, [vue.createVNode(vue.resolveComponent("iBizIcon"), {
65
65
  "icon": this.item.sysImage
66
66
  }, null)]), this.item.showCaption && vue.createVNode("span", {
@@ -0,0 +1 @@
1
+ .ibiz-short-cut-button__icon svg{width:var(--ibiz-font-size-regular);height:var(--ibiz-font-size-regular);font-size:var(--ibiz-font-size-regular)}
@@ -23,14 +23,19 @@ const TreeGridExFieldColumn = /* @__PURE__ */ vue.defineComponent({
23
23
  },
24
24
  setup(props) {
25
25
  const ns = vue3Util.useNamespace("tree-grid-ex-field-column");
26
- const nodeColumn = vue.computed(() => {
27
- return props.controller.nodeColumnControllerMap.get(props.row.data._nodeId);
28
- });
29
- const fieldValue = vue.computed(() => {
26
+ const fieldValue = vue.ref();
27
+ vue.watch(() => props.row.data, () => {
30
28
  if (props.row.data._nodeType !== "DE" && props.controller.isFirstShowColumn) {
31
- return props.row.data._text;
29
+ fieldValue.value = props.row.data._text;
30
+ } else {
31
+ fieldValue.value = props.row.data[props.controller.name];
32
32
  }
33
- return props.row.data[props.controller.name];
33
+ }, {
34
+ deep: true,
35
+ immediate: true
36
+ });
37
+ const nodeColumn = vue.computed(() => {
38
+ return props.controller.nodeColumnControllerMap.get(props.row.data._nodeId);
34
39
  });
35
40
  const codeListText = vue.ref("");
36
41
  const onInfoTextChange = (text) => {
@@ -40,6 +40,10 @@ const UserAction = /* @__PURE__ */ vue.defineComponent({
40
40
  }
41
41
  }
42
42
  const onClick = async (event) => {
43
+ const e = {
44
+ ...event
45
+ };
46
+ e.target = event.currentTarget;
43
47
  const id = props.modelData.id;
44
48
  const menuC = c.panel.view.getController("appmenu");
45
49
  if (menuC) {
@@ -57,7 +61,7 @@ const UserAction = /* @__PURE__ */ vue.defineComponent({
57
61
  const tempParam = c.panel.params;
58
62
  tempContext.srfappid = targetMenu.appId || ibiz.env.appId;
59
63
  await ibiz.commands.execute(runtime.AppFuncCommand.TAG, targetMenu.appFuncId, tempContext, tempParam, {
60
- event
64
+ event: e
61
65
  });
62
66
  }
63
67
  }
@@ -72,11 +76,11 @@ const UserAction = /* @__PURE__ */ vue.defineComponent({
72
76
  render() {
73
77
  return vue.createVNode("div", {
74
78
  "class": this.ns.b(),
75
- "onClick": (event) => this.onClick(event),
76
79
  "title": this.modelData.caption
77
80
  }, [vue.createVNode(vue.resolveComponent("i-biz-icon"), {
78
81
  "class": [this.ns.e("image")],
79
- "icon": this.sysImage
82
+ "icon": this.sysImage,
83
+ "onClick": (event) => this.onClick(event)
80
84
  }, null)]);
81
85
  }
82
86
  });
@@ -1 +1 @@
1
- .ibiz-popover{position:absolute;top:0;left:0;z-index:1;display:none;width:-moz-max-content;width:max-content;background-color:var(--ibiz-color-bg-2);border:1px solid var(--ibiz-color-border);border-radius:var(--ibiz-border-radius-medium)}.ibiz-popover__arrow{position:absolute;width:8px;height:8px;background:var(--ibiz-color-bg-2);transform:rotate(45deg)}.ibiz-popover.is-show{display:block}.ibiz-popover__overlay{position:fixed;inset:0;background-color:transparent}
1
+ .ibiz-popover{position:absolute;top:0;left:0;z-index:1;display:none;width:-moz-max-content;width:max-content;background-color:var(--ibiz-color-bg-2);border:1px solid var(--ibiz-color-border);border-radius:var(--ibiz-border-radius-medium)}.ibiz-popover__arrow{position:absolute;width:8px;height:8px;z-index:-1;background:var(--ibiz-color-bg-2);transform:rotate(45deg)}.ibiz-popover.is-show{display:block}.ibiz-popover__overlay{position:fixed;inset:0;background-color:transparent}
@@ -65,7 +65,9 @@ class EditViewEngine extends runtime.ViewEngineBase {
65
65
  modal.hooks.shouldDismiss.tapPromise(async (context) => {
66
66
  const uiDomain = ibiz.uiDomainManager.get(this.view.context.srfsessionid);
67
67
  const isChange = (this.form.state.modified || uiDomain.dataModification) && this.view.model.enableDirtyChecking === true;
68
- if (isChange && context.allowClose == null) {
68
+ if (isChange && this.form.model.enableAutoSave) {
69
+ await this.form.immediateAutoSave();
70
+ } else if (isChange && context.allowClose == null) {
69
71
  const isAllow = await ibiz.confirm.error({
70
72
  title: ibiz.i18n.t("viewEngine.closeRemind"),
71
73
  desc: ibiz.i18n.t("viewEngine.confirmClosePrompt")
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibiz-template/vue3-components",
3
- "version": "0.7.18",
3
+ "version": "0.7.19-alpha.1",
4
4
  "description": "使用 rollup 编译 vue 组件或者 jsx",
5
5
  "main": "lib/index.cjs",
6
6
  "module": "es/index.mjs",
@@ -29,15 +29,15 @@
29
29
  "dependencies": {
30
30
  "@floating-ui/dom": "^1.5.3",
31
31
  "@ibiz-template-plugin/ai-chat": "^0.0.5",
32
- "@ibiz-template-plugin/gantt": "0.1.5",
32
+ "@ibiz-template-plugin/gantt": "0.1.6-alpha.0",
33
33
  "@ibiz-template/core": "0.7.18",
34
34
  "@ibiz-template/devtool": "0.0.1-dev.6",
35
- "@ibiz-template/model-helper": "0.7.18",
36
- "@ibiz-template/runtime": "0.7.18",
35
+ "@ibiz-template/model-helper": "0.7.19-alpha.1",
36
+ "@ibiz-template/runtime": "0.7.19-alpha.1",
37
37
  "@ibiz-template/theme": "^0.7.0",
38
- "@ibiz-template/vue3-util": "0.7.18",
38
+ "@ibiz-template/vue3-util": "0.7.19-alpha.1",
39
39
  "@ibiz-template/web-theme": "^1.1.17",
40
- "@ibiz/model-core": "^0.1.27",
40
+ "@ibiz/model-core": "^0.1.28",
41
41
  "@imengyu/vue3-context-menu": "^1.3.5",
42
42
  "@monaco-editor/loader": "^1.4.0",
43
43
  "@wangeditor/editor": "^5.1.23",
@@ -101,7 +101,7 @@
101
101
  "@ibiz-template/runtime": "^0.7.0",
102
102
  "@ibiz-template/theme": "^0.7.0",
103
103
  "@ibiz-template/vue3-util": "^0.7.0",
104
- "@ibiz/model-core": "^0.1.27",
104
+ "@ibiz/model-core": "^0.1.28",
105
105
  "@imengyu/vue3-context-menu": "^1.3.3",
106
106
  "@monaco-editor/loader": "^1.3.3",
107
107
  "@wangeditor/editor": "^5.1.23",