@ibiz-template/vue3-components 0.7.17 → 0.7.19-alpha.0

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 (55) hide show
  1. package/dist/index-DSuPqXOB.js +4 -0
  2. package/dist/index-OCVoltZS.js +1 -0
  3. package/dist/index-XL5qUYeQ.js +1 -0
  4. package/dist/index.min.css +1 -1
  5. package/dist/index.system.min.js +1 -1
  6. package/dist/{xlsx-util-e9YRtb2T.js → xlsx-util-OC1lZ9lp.js} +1 -1
  7. package/es/control/app-menu/app-menu.mjs +2 -10
  8. package/es/control/app-menu/custom-menu-design/custom-menu-design.mjs +10 -15
  9. package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-grid/repeater-grid.d.ts +2 -0
  10. package/es/control/gantt/gantt.d.ts +5 -1
  11. package/es/control/gantt/gantt.mjs +41 -13
  12. package/es/control/gantt/index.d.ts +4 -1
  13. package/es/control/kanban/kanban.css +1 -1
  14. package/es/control/toolbar/short-cut-button/short-cut-button.css +1 -0
  15. package/es/control/toolbar/short-cut-button/short-cut-button.mjs +1 -1
  16. package/es/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/index.d.ts +1 -1
  17. package/es/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.d.ts +1 -1
  18. package/es/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.mjs +12 -7
  19. package/es/editor/upload/ibiz-file-upload/ibiz-file-upload.d.ts +1 -1
  20. package/es/editor/upload/ibiz-image-upload/ibiz-image-upload.d.ts +1 -1
  21. package/es/editor/upload/upload-editor.controller.d.ts +7 -0
  22. package/es/editor/upload/upload-editor.controller.mjs +13 -3
  23. package/es/editor/upload/use/use-iview-upload.d.ts +2 -1
  24. package/es/editor/upload/use/use-iview-upload.mjs +9 -1
  25. package/es/locale/en/index.d.ts +6 -0
  26. package/es/locale/en/index.mjs +9 -3
  27. package/es/locale/zh-CN/index.d.ts +6 -0
  28. package/es/locale/zh-CN/index.mjs +8 -2
  29. package/es/panel-component/auth-userinfo/auth-userinfo.d.ts +1 -1
  30. package/es/panel-component/auth-userinfo/auth-userinfo.mjs +4 -4
  31. package/es/panel-component/auth-userinfo/index.d.ts +1 -1
  32. package/es/panel-component/index-actions/index-actions.css +1 -1
  33. package/es/panel-component/index-actions/index-actions.mjs +5 -8
  34. package/es/util/app-popover/app-popover-component.css +1 -1
  35. package/es/view-engine/edit-view.engine.mjs +3 -1
  36. package/lib/control/app-menu/app-menu.cjs +2 -10
  37. package/lib/control/app-menu/custom-menu-design/custom-menu-design.cjs +10 -15
  38. package/lib/control/gantt/gantt.cjs +41 -13
  39. package/lib/control/kanban/kanban.css +1 -1
  40. package/lib/control/toolbar/short-cut-button/short-cut-button.cjs +1 -1
  41. package/lib/control/toolbar/short-cut-button/short-cut-button.css +1 -0
  42. package/lib/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.cjs +11 -6
  43. package/lib/editor/upload/upload-editor.controller.cjs +13 -3
  44. package/lib/editor/upload/use/use-iview-upload.cjs +9 -1
  45. package/lib/locale/en/index.cjs +9 -3
  46. package/lib/locale/zh-CN/index.cjs +8 -2
  47. package/lib/panel-component/auth-userinfo/auth-userinfo.cjs +4 -4
  48. package/lib/panel-component/index-actions/index-actions.cjs +5 -8
  49. package/lib/panel-component/index-actions/index-actions.css +1 -1
  50. package/lib/util/app-popover/app-popover-component.css +1 -1
  51. package/lib/view-engine/edit-view.engine.cjs +3 -1
  52. package/package.json +6 -6
  53. package/dist/index-7bnGd6Fk.js +0 -4
  54. package/dist/index-8ZKxthh5.js +0 -1
  55. package/dist/index-EgqQMBU4.js +0 -1
@@ -23,14 +23,14 @@ const IndexActions = /* @__PURE__ */ defineComponent({
23
23
  const {
24
24
  id
25
25
  } = props.modelData;
26
+ const isCollapse = computed(() => {
27
+ return props.controller.panel.view.state.isCollapse;
28
+ });
26
29
  const classArr = computed(() => {
27
30
  let result = [ns.b(), ns.m(id)];
28
- result = [...result, ...props.controller.containerClass, ns.is("hidden", !props.controller.state.visible)];
31
+ result = [...result, ...props.controller.containerClass, ns.is("hidden", !props.controller.state.visible), ns.is("collapse", isCollapse.value)];
29
32
  return result;
30
33
  });
31
- const isCollapse = computed(() => {
32
- return props.controller.panel.view.state.isCollapse;
33
- });
34
34
  return {
35
35
  ns,
36
36
  classArr,
@@ -40,10 +40,7 @@ const IndexActions = /* @__PURE__ */ defineComponent({
40
40
  render() {
41
41
  var _a, _b;
42
42
  let _slot;
43
- let defaultSlots = ((_b = (_a = this.$slots).default) == null ? void 0 : _b.call(_a)) || [];
44
- if (this.isCollapse) {
45
- defaultSlots = [defaultSlots[0]];
46
- }
43
+ const defaultSlots = ((_b = (_a = this.$slots).default) == null ? void 0 : _b.call(_a)) || [];
47
44
  const content = createVNode(resolveComponent("iBizRow"), {
48
45
  "slot": "content",
49
46
  "layout": this.modelData.layout
@@ -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")
@@ -66,13 +66,6 @@ function findCustomMenu(_key, items) {
66
66
  }
67
67
  return temp;
68
68
  }
69
- function getMenuCustomDisabled(_key, items) {
70
- const target = findCustomMenu(_key, items);
71
- if (target) {
72
- return target.disabled;
73
- }
74
- return false;
75
- }
76
69
  function getMenuCustomVisible(_key, items) {
77
70
  const target = findCustomMenu(_key, items);
78
71
  if (target) {
@@ -109,7 +102,7 @@ function renderMenuItem(isFirst, menu, collapse, ns, c, counterData, saveConfigs
109
102
  return !(isFirst && collapse) ? vue.createVNode(vue.resolveComponent("el-menu-item"), {
110
103
  "class": ns.e("item"),
111
104
  "index": menu.key,
112
- "disabled": menu.disabled || getMenuCustomDisabled(menu.key, saveConfigs),
105
+ "disabled": menu.disabled,
113
106
  "title": menu.tooltip
114
107
  }, _isSlot(content) ? content : {
115
108
  default: () => [content]
@@ -122,7 +115,7 @@ function renderMenuItem(isFirst, menu, collapse, ns, c, counterData, saveConfigs
122
115
  default: () => [vue.createVNode(vue.resolveComponent("el-menu-item"), {
123
116
  "class": ns.e("item"),
124
117
  "index": menu.key,
125
- "disabled": menu.disabled || getMenuCustomDisabled(menu.key, saveConfigs)
118
+ "disabled": menu.disabled
126
119
  }, _isSlot(content) ? content : {
127
120
  default: () => [content]
128
121
  })]
@@ -147,7 +140,6 @@ function renderSubmenu(isFirst, subMenu, collapse, ns, c, counterData, saveConfi
147
140
  return vue.createVNode(vue.resolveComponent("el-sub-menu"), {
148
141
  "class": ns.b("submenu"),
149
142
  "index": subMenu.key,
150
- "disabled": getMenuCustomDisabled(subMenu.key, saveConfigs),
151
143
  "popper-class": ns.b("popup-container")
152
144
  }, {
153
145
  default: () => subMenu.children.map((item) => {
@@ -13,11 +13,15 @@ function _isSlot(s) {
13
13
  function renderByProvider(itemId, c) {
14
14
  const itemModel = c.allAppMenuItems.find((item) => item.id === itemId);
15
15
  if (!itemModel) {
16
- throw new core.RuntimeError("\u6CA1\u627E\u5230\u83DC\u5355\u9879\u6A21\u578B".concat(itemId));
16
+ throw new core.RuntimeError("".concat(ibiz.i18n.t("control.menuDesign.noMenuItemModel", {
17
+ menu: itemId
18
+ })));
17
19
  }
18
20
  const provider = c.itemProviders[itemId];
19
21
  if (!provider.renderText) {
20
- throw new core.RuntimeError("".concat(itemId, "\u7684\u9002\u914D\u5668\u6CA1\u6709renderText\u65B9\u6CD5"));
22
+ throw new core.RuntimeError("".concat(ibiz.i18n.t("control.menuDesign.noProviderRenderText", {
23
+ menu: itemId
24
+ })));
21
25
  }
22
26
  return provider.renderText(itemModel, c);
23
27
  }
@@ -53,8 +57,7 @@ const MenuDesign = /* @__PURE__ */ vue.defineComponent({
53
57
  key: item.key,
54
58
  name: item.label,
55
59
  type: item.itemType,
56
- visible: item.config.visible,
57
- disabled: item.config.disabled
60
+ visible: item.config.visible
58
61
  };
59
62
  if ((_a = item.children) == null ? void 0 : _a.length) {
60
63
  config.children = handleMenusSaveData(item.children);
@@ -91,8 +94,7 @@ const MenuDesign = /* @__PURE__ */ vue.defineComponent({
91
94
  ...item,
92
95
  isCollapse: true,
93
96
  config: {
94
- visible: true,
95
- disabled: false
97
+ visible: true
96
98
  }
97
99
  };
98
100
  if ((_a = item.children) == null ? void 0 : _a.length) {
@@ -101,8 +103,7 @@ const MenuDesign = /* @__PURE__ */ vue.defineComponent({
101
103
  if (target) {
102
104
  Object.assign(data, {
103
105
  config: {
104
- visible: target.visible,
105
- disabled: target.disabled
106
+ visible: target.visible
106
107
  }
107
108
  });
108
109
  }
@@ -187,13 +188,7 @@ const MenuDesign = /* @__PURE__ */ vue.defineComponent({
187
188
  "modelValue": item.config.visible,
188
189
  "onUpdate:modelValue": ($event) => item.config.visible = $event,
189
190
  "onClick": stopExpand,
190
- "label": "\u663E\u793A",
191
- "size": "large"
192
- }, null), vue.createVNode(vue.resolveComponent("el-checkbox"), {
193
- "modelValue": item.config.disabled,
194
- "onUpdate:modelValue": ($event) => item.config.disabled = $event,
195
- "onClick": stopExpand,
196
- "label": "\u7981\u7528",
191
+ "label": ibiz.i18n.t("control.menuDesign.visible"),
197
192
  "size": "large"
198
193
  }, null)]) : null]), item.children && item.children.length > 0 ? vue.createVNode("div", {
199
194
  "class": [ns.bem("content", "menu-item", "children"), ns.is("collapse", item.isCollapse)]
@@ -4,6 +4,7 @@ var vue = require('vue');
4
4
  var vue3Util = require('@ibiz-template/vue3-util');
5
5
  var runtime = require('@ibiz-template/runtime');
6
6
  var dayjs = require('dayjs');
7
+ var elTreeUtil = require('../tree/el-tree-util.cjs');
7
8
  require('./gantt.css');
8
9
 
9
10
  "use strict";
@@ -86,8 +87,15 @@ const GanttControl = /* @__PURE__ */ vue.defineComponent({
86
87
  return false;
87
88
  });
88
89
  const data = vue.computed(() => {
89
- var _a2;
90
- return c.model.rootVisible ? c.state.rootNodes : (_a2 = c.state.rootNodes[0]) == null ? void 0 : _a2._children;
90
+ if (!c.state.isLoaded) {
91
+ return [];
92
+ }
93
+ return c.model.rootVisible ? c.state.rootNodes : c.state.rootNodes.reduce((result, nodeData) => {
94
+ if (nodeData._children) {
95
+ return result.concat(nodeData._children);
96
+ }
97
+ return result;
98
+ }, []);
91
99
  });
92
100
  const columns = vue.computed(() => {
93
101
  const columnsModel = [];
@@ -144,20 +152,30 @@ const GanttControl = /* @__PURE__ */ vue.defineComponent({
144
152
  c.refreshNodeChildren(nodeData);
145
153
  }
146
154
  };
147
- c.evt.on("onDefaultExpand", (event) => {
148
- if (ganttRef.value) {
149
- ganttRef.value.refresh();
150
- }
155
+ c.evt.on("onNewRow", (event) => {
156
+ var _a2;
157
+ const nodeData = event.row.data;
158
+ (_a2 = ganttRef.value) == null ? void 0 : _a2.setExpand(nodeData);
151
159
  });
152
160
  const onNodeCollapse = (nodeData) => {
153
161
  c.onExpandChange(nodeData, false);
154
162
  };
155
- c.evt.on("onNewRow", (event) => {
156
- if (ganttRef.value) {
157
- const nodeData = event.row.data;
158
- ganttRef.value.setExpand(nodeData);
159
- }
160
- });
163
+ const allowDrop = (draggingNode, dropNode, type) => {
164
+ const draggingNodeData = elTreeUtil.findNodeData(draggingNode._uuid, c);
165
+ const dropNodeData = elTreeUtil.findNodeData(dropNode._uuid, c);
166
+ const result = c.calcAllowDrop(draggingNodeData, dropNodeData, type);
167
+ return result;
168
+ };
169
+ const allowDrag = (draggingNode) => {
170
+ const nodeData = elTreeUtil.findNodeData(draggingNode._uuid, c);
171
+ return c.calcAllowDrag(nodeData);
172
+ };
173
+ const handleDrop = (draggingNode, dropNode, dropType) => {
174
+ const draggingNodeData = elTreeUtil.findNodeData(draggingNode._uuid, c);
175
+ const dropNodeData = elTreeUtil.findNodeData(dropNode._uuid, c);
176
+ const type = elTreeUtil.formatNodeDropType(dropType);
177
+ c.onNodeDrop(draggingNodeData, dropNodeData, type);
178
+ };
161
179
  const onSliderMove = (sliders) => {
162
180
  var _a2;
163
181
  const nodeData = (_a2 = sliders[0]) == null ? void 0 : _a2.row;
@@ -404,7 +422,10 @@ const GanttControl = /* @__PURE__ */ vue.defineComponent({
404
422
  onNodeCollapse,
405
423
  renderContent,
406
424
  onSliderMove,
407
- renderNoData
425
+ renderNoData,
426
+ allowDrop,
427
+ allowDrag,
428
+ handleDrop
408
429
  };
409
430
  },
410
431
  render() {
@@ -427,6 +448,13 @@ const GanttControl = /* @__PURE__ */ vue.defineComponent({
427
448
  "children": "_children",
428
449
  "leaf": "_leaf",
429
450
  "locale": this.locale,
451
+ "draggable": {
452
+ level: "all",
453
+ draggable: true
454
+ },
455
+ "allow-drop": this.allowDrop,
456
+ "allow-drag": this.allowDrag,
457
+ "onNodeDrop": this.handleDrop,
430
458
  "showCheckbox": !this.c.state.singleSelect,
431
459
  "onNodeExpand": this.onNodeExpand,
432
460
  "onNodeCollapse": this.onNodeCollapse,
@@ -1 +1 @@
1
- .ibiz-control-kanban{--ibiz-control-kanban-text-color:var(--ibiz-color-text-0);--ibiz-control-kanban-font-size:var(--ibiz-font-size-regular);--ibiz-control-kanban-font-weight:var(--ibiz-font-weight-bold);--ibiz-control-kanban-hover-bg-color:var(--ibiz-color-fill-0);--ibiz-control-kanban-selected-bg-color:var(--ibiz-color-fill-0);--ibiz-control-kanban-group-header-height:48px;width:100%;height:100%}.ibiz-control-kanban--row .ibiz-control-kanban-group-container{display:flex;padding-bottom:var(--ibiz-spacing-tight);overflow:auto}.ibiz-control-kanban--row .ibiz-control-kanban-group-container>*+*{margin-left:var(--ibiz-spacing-base)}.ibiz-control-kanban--row .ibiz-control-kanban-group.is-collapse{width:32px}.ibiz-control-kanban--row .ibiz-control-kanban-group.is-collapse .ibiz-control-kanban-group__header{position:relative;flex-direction:column;align-items:start;height:100%;padding:0}.ibiz-control-kanban--row .ibiz-control-kanban-group.is-collapse .ibiz-control-kanban-group__header ion-icon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ibiz-control-kanban--row .ibiz-control-kanban-group.is-collapse .ibiz-control-kanban-group__header-caption{align-self:center;transform:rotate(90deg) translate(35px,0)}.ibiz-control-kanban--column .ibiz-control-kanban-group-container{display:flex;flex-direction:column}.ibiz-control-kanban--column .ibiz-control-kanban-group-container>*+*{margin-top:var(--ibiz-spacing-base)}.ibiz-control-kanban--column .ibiz-control-kanban-group.is-collapse{width:100%}.ibiz-control-kanban--column .ibiz-control-kanban-group.is-collapse ion-icon{transform:rotate(-90deg)}.ibiz-control-kanban-group-container{width:100%;height:100%}.ibiz-control-kanban-group{display:flex;flex-flow:column nowrap;flex-shrink:0;border:1px solid var(--ibiz-color-border);border-radius:4px;transition:all .3s}.ibiz-control-kanban-group__header{position:relative;height:var(--ibiz-control-kanban-group-header-height);padding:0 var(--ibiz-spacing-base);font-size:var(--ibiz-control-kanban-font-size);font-weight:var(--ibiz-control-kanban-font-weight);border-bottom:1px solid var(--ibiz-color-border);display:flex;align-items:center;justify-content:space-between}.ibiz-control-kanban-group__header::before{position:absolute;top:0;left:0;display:block;width:100%;content:"";border-color:inherit;border-top:2px solid}.ibiz-control-kanban-group__header-left{display:flex;align-items:center;justify-content:center}.ibiz-control-kanban-group__header-left ion-icon{margin-right:var(--ibiz-spacing-tight);transition:transform .3s}.ibiz-control-kanban-group__header-caption{padding:0 var(--ibiz-spacing-tight);white-space:nowrap;border-radius:100px}.ibiz-control-kanban-group__header-caption.is-badge{color:var(--ibiz-color-primary-active-text)}.ibiz-control-kanban-group__list{position:relative;flex:auto;width:100%;height:calc(100% - 48px);padding:0 var(--ibiz-spacing-tight);overflow:auto}.ibiz-control-kanban-group__draggable{min-height:100%;padding:var(--ibiz-spacing-base) 0}.ibiz-control-kanban-group__list.is-empty .ibiz-control-kanban__quicktoolbar{position:absolute;top:50%;width:calc(100% - var(--ibiz-spacing-base));transform:translateY(86px)}.ibiz-control-kanban-group__list.is-empty .ibiz-control-toolbar__item{justify-content:center}.ibiz-control-kanban-group__header-actions{position:relative;z-index:100;width:32px;height:32px;padding:var(--ibiz-spacing-tight);margin-left:4px;font-size:var(--ibiz-control-kanban-font-size);color:var(--ibiz-color-primary);cursor:pointer;border-radius:50%}.ibiz-control-kanban-group__header-actions:hover{background-color:var(--ibiz-color-fill-0)}.ibiz-control-kanban-group__actions-dropdown{padding:var(--ibiz-spacing-extra-tight) 0}.ibiz-control-kanban-group__actions-dropdown .ibiz-action-toolbar{display:flex;flex-flow:column nowrap}.ibiz-control-kanban-group__actions-dropdown .el-button{--el-button-size:var(--ibiz-height-control-large);justify-content:flex-start;width:100%;padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base);margin:0;font-size:var(--ibiz-font-size-regular);color:var(--ibiz-color-primary-text)}.ibiz-control-kanban-group__actions-dropdown .el-button ion-icon{margin-right:var(--ibiz-spacing-extra-tight)}.ibiz-control-kanban-group__actions-dropdown .el-button.is-text:not(.is-disabled):hover{background-color:var(--el-button-hover-bg-color);border-color:var(--el-button-hover-border-color)}.ibiz-control-kanban-item{cursor:pointer}.ibiz-control-kanban-item:hover{background-color:var(--ibiz-control-kanban-hover-bg-color)}.ibiz-control-kanban-item.is-selected{background-color:var(--ibiz-control-kanban-selected-bg-color)}.ibiz-control-kanban-item.is-disabled{cursor:no-drop}.ibiz-control-kanban-item+.ibiz-control-kanban-item{margin-top:var(--ibiz-spacing-base)}.ibiz-control-kanban{position:relative;padding-right:calc(var(--ibiz-control-kanban-group-header-height) + var(--ibiz-spacing-base))}.ibiz-control-kanban__quicktoolbar{display:flex;flex-flow:column nowrap;margin-bottom:var(--ibiz-spacing-base)}.ibiz-control-kanban__quicktoolbar>*+*{margin-top:var(--ibiz-spacing-tight)}.ibiz-control-kanban__full-btn{display:flex;align-items:center;justify-content:center;position:absolute;top:0;right:0;width:var(--ibiz-control-kanban-group-header-height);height:var(--ibiz-control-kanban-group-header-height);font-size:var(--ibiz-font-size-header-4);font-weight:var(--ibiz-font-weight-regular);color:var(--ibiz-color-primary);background-color:var(--ibiz-color-bg-2);border:1px solid var(--ibiz-color-border)}.ibiz-control-kanban.is-full{padding:var(--ibiz-spacing-base);padding-right:calc(var(--ibiz-control-kanban-group-header-height) + var(--ibiz-spacing-extra-loose));background-color:var(--ibiz-color-bg-2)}.ibiz-control-kanban.is-full .ibiz-control-kanban__full-btn{top:var(--ibiz-spacing-base);right:var(--ibiz-spacing-base)}.ibiz-control-kanban-batch{padding:var(--ibiz-spacing-base-tight);border-bottom:1px solid var(--ibiz-color-border)}.ibiz-control-kanban-batch__toolbar .ibiz-control-toolbar{flex-wrap:wrap;row-gap:var(--ibiz-spacing-tight)}.ibiz-control-kanban-batch__check{display:flex;align-items:center;justify-content:space-between;margin-top:var(--ibiz-spacing-base-tight);font-size:var(--ibiz-font-size-regular)}.ibiz-control-kanban-batch__info span{margin:0 var(--ibiz-spacing-extra-tight);color:var(--ibiz-color-primary)}
1
+ .ibiz-control-kanban{--ibiz-control-kanban-text-color:var(--ibiz-color-text-0);--ibiz-control-kanban-font-size:var(--ibiz-font-size-regular);--ibiz-control-kanban-font-weight:var(--ibiz-font-weight-bold);--ibiz-control-kanban-hover-bg-color:var(--ibiz-color-fill-0);--ibiz-control-kanban-selected-bg-color:var(--ibiz-color-fill-0);--ibiz-control-kanban-group-header-height:48px;width:100%;height:100%}.ibiz-control-kanban--row .ibiz-control-kanban-group-container{display:flex;padding-bottom:var(--ibiz-spacing-tight);overflow:auto}.ibiz-control-kanban--row .ibiz-control-kanban-group-container>*+*{margin-left:var(--ibiz-spacing-base)}.ibiz-control-kanban--row .ibiz-control-kanban-group.is-collapse{width:32px}.ibiz-control-kanban--row .ibiz-control-kanban-group.is-collapse .ibiz-control-kanban-group__header{position:relative;flex-direction:column;align-items:start;height:100%;padding:0}.ibiz-control-kanban--row .ibiz-control-kanban-group.is-collapse .ibiz-control-kanban-group__header ion-icon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ibiz-control-kanban--row .ibiz-control-kanban-group.is-collapse .ibiz-control-kanban-group__header-caption{align-self:center;transform:rotate(90deg) translate(35px,0)}.ibiz-control-kanban--column .ibiz-control-kanban-group-container{display:flex;flex-direction:column}.ibiz-control-kanban--column .ibiz-control-kanban-group-container>*+*{margin-top:var(--ibiz-spacing-base)}.ibiz-control-kanban--column .ibiz-control-kanban-group.is-collapse{width:100%}.ibiz-control-kanban--column .ibiz-control-kanban-group.is-collapse ion-icon{transform:rotate(-90deg)}.ibiz-control-kanban-group-container{width:100%;height:100%}.ibiz-control-kanban-group{display:flex;flex-flow:column nowrap;flex-shrink:0;border:1px solid var(--ibiz-color-border);border-radius:4px;transition:all .3s}.ibiz-control-kanban-group__header{position:relative;height:var(--ibiz-control-kanban-group-header-height);padding:0 var(--ibiz-spacing-base);font-size:var(--ibiz-control-kanban-font-size);font-weight:var(--ibiz-control-kanban-font-weight);border-bottom:1px solid var(--ibiz-color-border);display:flex;align-items:center;justify-content:space-between}.ibiz-control-kanban-group__header::before{position:absolute;top:0;left:0;display:block;width:100%;content:"";border-color:inherit;border-top:2px solid}.ibiz-control-kanban-group__header-left{display:flex;align-items:center;justify-content:center}.ibiz-control-kanban-group__header-left ion-icon{margin-right:var(--ibiz-spacing-tight);transition:transform .3s}.ibiz-control-kanban-group__header-caption{padding:0 var(--ibiz-spacing-tight);white-space:nowrap;border-radius:100px}.ibiz-control-kanban-group__header-caption.is-badge{color:var(--ibiz-color-primary-active-text)}.ibiz-control-kanban-group__list{position:relative;flex:auto;width:100%;height:calc(100% - 48px);padding:0 var(--ibiz-spacing-tight);overflow:auto}.ibiz-control-kanban-group__draggable{min-height:100%;padding:var(--ibiz-spacing-base) 0}.ibiz-control-kanban-group__list.is-empty .ibiz-control-kanban__quicktoolbar{position:absolute;top:50%;width:calc(100% - var(--ibiz-spacing-base));transform:translateY(86px)}.ibiz-control-kanban-group__list.is-empty .ibiz-control-toolbar__item{justify-content:center}.ibiz-control-kanban-group__header-actions{position:relative;z-index:100;width:32px;height:32px;padding:var(--ibiz-spacing-tight);margin-left:4px;font-size:var(--ibiz-control-kanban-font-size);color:var(--ibiz-color-primary);cursor:pointer;border-radius:50%}.ibiz-control-kanban-group__header-actions:hover{background-color:var(--ibiz-color-fill-0)}.ibiz-control-kanban-group__actions-dropdown:has(.el-button){padding:var(--ibiz-spacing-extra-tight) 0}.ibiz-control-kanban-group__actions-dropdown .ibiz-action-toolbar{display:flex;flex-flow:column nowrap}.ibiz-control-kanban-group__actions-dropdown .el-button{--el-button-size:var(--ibiz-height-control-large);justify-content:flex-start;width:100%;padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base);margin:0;font-size:var(--ibiz-font-size-regular);color:var(--ibiz-color-primary-text)}.ibiz-control-kanban-group__actions-dropdown .el-button ion-icon{margin-right:var(--ibiz-spacing-extra-tight)}.ibiz-control-kanban-group__actions-dropdown .el-button.is-text:not(.is-disabled):hover{background-color:var(--el-button-hover-bg-color);border-color:var(--el-button-hover-border-color)}.ibiz-control-kanban-item{cursor:pointer}.ibiz-control-kanban-item:hover{background-color:var(--ibiz-control-kanban-hover-bg-color)}.ibiz-control-kanban-item.is-selected{background-color:var(--ibiz-control-kanban-selected-bg-color)}.ibiz-control-kanban-item.is-disabled{cursor:no-drop}.ibiz-control-kanban-item+.ibiz-control-kanban-item{margin-top:var(--ibiz-spacing-base)}.ibiz-control-kanban{position:relative;padding-right:calc(var(--ibiz-control-kanban-group-header-height) + var(--ibiz-spacing-base))}.ibiz-control-kanban__quicktoolbar{display:flex;flex-flow:column nowrap;margin-bottom:var(--ibiz-spacing-base)}.ibiz-control-kanban__quicktoolbar>*+*{margin-top:var(--ibiz-spacing-tight)}.ibiz-control-kanban__full-btn{display:flex;align-items:center;justify-content:center;position:absolute;top:0;right:0;width:var(--ibiz-control-kanban-group-header-height);height:var(--ibiz-control-kanban-group-header-height);font-size:var(--ibiz-font-size-header-4);font-weight:var(--ibiz-font-weight-regular);color:var(--ibiz-color-primary);background-color:var(--ibiz-color-bg-2);border:1px solid var(--ibiz-color-border)}.ibiz-control-kanban.is-full{padding:var(--ibiz-spacing-base);padding-right:calc(var(--ibiz-control-kanban-group-header-height) + var(--ibiz-spacing-extra-loose));background-color:var(--ibiz-color-bg-2)}.ibiz-control-kanban.is-full .ibiz-control-kanban__full-btn{top:var(--ibiz-spacing-base);right:var(--ibiz-spacing-base)}.ibiz-control-kanban-batch{padding:var(--ibiz-spacing-base-tight);border-bottom:1px solid var(--ibiz-color-border)}.ibiz-control-kanban-batch__toolbar .ibiz-control-toolbar{flex-wrap:wrap;row-gap:var(--ibiz-spacing-tight)}.ibiz-control-kanban-batch__check{display:flex;align-items:center;justify-content:space-between;margin-top:var(--ibiz-spacing-base-tight);font-size:var(--ibiz-font-size-regular)}.ibiz-control-kanban-batch__info span{margin:0 var(--ibiz-spacing-extra-tight);color:var(--ibiz-color-primary)}
@@ -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) => {
@@ -25,6 +25,13 @@ class UploadEditorController extends runtime.EditorController {
25
25
  * 接受上传的文件类型
26
26
  */
27
27
  __publicField(this, "accept", "");
28
+ /**
29
+ * 上传的文件大小
30
+ *
31
+ * @type {number}
32
+ * @memberof UploadEditorController
33
+ */
34
+ __publicField(this, "size", 0);
28
35
  /**
29
36
  * 上传参数
30
37
  */
@@ -46,7 +53,7 @@ class UploadEditorController extends runtime.EditorController {
46
53
  this.multiple = false;
47
54
  }
48
55
  if (this.editorParams) {
49
- const { isDrag, multiple, accept, uploadParams, exportParams } = this.editorParams;
56
+ const { isDrag, multiple, accept, size, uploadParams, exportParams } = this.editorParams;
50
57
  if (isDrag) {
51
58
  this.isDrag = Boolean(isDrag);
52
59
  }
@@ -56,13 +63,16 @@ class UploadEditorController extends runtime.EditorController {
56
63
  if (accept) {
57
64
  this.accept = accept;
58
65
  }
66
+ if (size) {
67
+ this.size = Number(size);
68
+ }
59
69
  if (uploadParams) {
60
70
  try {
61
71
  this.uploadParams = JSON.parse(uploadParams);
62
72
  } catch (error) {
63
73
  throw new core.RuntimeModelError(
64
74
  uploadParams,
65
- "\u914D\u7F6EuploadParams\u6CA1\u6709\u6309\u6807\u51C6JSON\u683C\u5F0F"
75
+ ibiz.i18n.t("editor.upload.uploadJsonFormatErr")
66
76
  );
67
77
  }
68
78
  }
@@ -72,7 +82,7 @@ class UploadEditorController extends runtime.EditorController {
72
82
  } catch (error) {
73
83
  throw new core.RuntimeModelError(
74
84
  exportParams,
75
- "\u914D\u7F6EexportParams\u6CA1\u6709\u6309\u6807\u51C6JSON\u683C\u5F0F"
85
+ ibiz.i18n.t("editor.upload.exportJsonFormatErr")
76
86
  );
77
87
  }
78
88
  }
@@ -68,8 +68,16 @@ function useIViewUpload(props, valueChange, c) {
68
68
  uploadCache.cacheFiles = [];
69
69
  valueChange(value);
70
70
  };
71
- const beforeUpload = () => {
71
+ const beforeUpload = (rawFile) => {
72
+ const size = rawFile.size / 1024 / 1024;
73
+ if (c.size && size > c.size) {
74
+ ibiz.message.error(
75
+ "".concat(ibiz.i18n.t("editor.upload.fileSizeErr"), " ").concat(c.size, "MB!")
76
+ );
77
+ return false;
78
+ }
72
79
  uploadCache.count += 1;
80
+ return true;
73
81
  };
74
82
  const onSuccess = (response) => {
75
83
  if (!response) {
@@ -113,12 +113,15 @@ var index = {
113
113
  noSupportAlign: "The menu direction {align} is not supported temporarily",
114
114
  noFoundModel: "no find the menu item model {menuKey}",
115
115
  noFoundFunction: "The adapter for {menuKey} does not have a renderText method",
116
- menuSetting: "\u83DC\u5355\u8BBE\u7F6E"
116
+ menuSetting: "Menu setting"
117
117
  },
118
118
  menuDesign: {
119
119
  customMenu: "Custom menu",
120
120
  reset: "Reset",
121
- save: "Save"
121
+ save: "Save",
122
+ visible: "Visible",
123
+ noMenuItemModel: "No menu item model found {menu}",
124
+ noFoundFunction: "The adapter for {menu} does not have a renderText method"
122
125
  },
123
126
  calendar: {
124
127
  lastYear: "Last year",
@@ -333,7 +336,10 @@ var index = {
333
336
  warningMessage: "Ip format verification failed, paragraph {num} ip reset to old value"
334
337
  },
335
338
  upload: {
336
- uploadFiles: "Upload files"
339
+ uploadFiles: "Upload files",
340
+ fileSizeErr: "The file size cannot exceed",
341
+ uploadJsonFormatErr: "The configuration of uploadparams did not follow the standard JSON format",
342
+ exportJsonFormatErr: "The configuration of exportparams did not follow the standard JSON format"
337
343
  }
338
344
  },
339
345
  panelComponent: {
@@ -118,7 +118,10 @@ var index = {
118
118
  menuDesign: {
119
119
  customMenu: "\u81EA\u5B9A\u4E49\u83DC\u5355",
120
120
  reset: "\u6062\u590D\u9ED8\u8BA4",
121
- save: "\u4FDD\u5B58"
121
+ save: "\u4FDD\u5B58",
122
+ visible: "\u663E\u793A",
123
+ noMenuItemModel: "\u6CA1\u627E\u5230\u83DC\u5355\u9879\u6A21\u578B{menu}",
124
+ noFoundFunction: "{menu}\u7684\u9002\u914D\u5668\u6CA1\u6709renderText\u65B9\u6CD5"
122
125
  },
123
126
  calendar: {
124
127
  lastYear: "\u53BB\u5E74",
@@ -333,7 +336,10 @@ var index = {
333
336
  warningMessage: "ip\u683C\u5F0F\u9A8C\u8BC1\u672A\u901A\u8FC7\uFF0C\u7B2C{num}\u6BB5ip\u91CD\u7F6E\u56DE\u65E7\u503C"
334
337
  },
335
338
  upload: {
336
- uploadFiles: "\u4E0A\u4F20\u6587\u4EF6"
339
+ uploadFiles: "\u4E0A\u4F20\u6587\u4EF6",
340
+ fileSizeErr: "\u6587\u4EF6\u5927\u5C0F\u4E0D\u80FD\u8D85\u8FC7",
341
+ uploadJsonFormatErr: "\u914D\u7F6Euploadparams\u6CA1\u6709\u6309\u6807\u51C6JSON\u683C\u5F0F",
342
+ exportJsonFormatErr: "\u914D\u7F6Eexportparams\u6CA1\u6709\u6309\u6807\u51C6JSON\u683C\u5F0F"
337
343
  }
338
344
  },
339
345
  panelComponent: {
@@ -25,7 +25,7 @@ const AuthUserinfo = /* @__PURE__ */ vue.defineComponent({
25
25
  const c = prop.controller;
26
26
  const {
27
27
  srfusername = ibiz.i18n.t("panelComponent.authUserinfo.visitor"),
28
- srfpersonname
28
+ loginname
29
29
  } = ((_a = ibiz.appData) == null ? void 0 : _a.context) || {};
30
30
  const router = vueRouter.useRouter();
31
31
  const ctx = vue.inject("ctx", void 0);
@@ -46,7 +46,7 @@ const AuthUserinfo = /* @__PURE__ */ vue.defineComponent({
46
46
  c,
47
47
  onClick,
48
48
  srfusername,
49
- srfpersonname,
49
+ loginname,
50
50
  router,
51
51
  menuAlign,
52
52
  isCollapse
@@ -67,9 +67,9 @@ const AuthUserinfo = /* @__PURE__ */ vue.defineComponent({
67
67
  "class": this.ns.b("name")
68
68
  }, [vue.createVNode("div", {
69
69
  "class": this.ns.be("name", "user-name")
70
- }, [this.srfusername]), this.menuAlign === "LEFT" && vue.createVNode("div", {
70
+ }, [this.srfusername]), this.menuAlign === "LEFT" && this.loginname && vue.createVNode("div", {
71
71
  "class": this.ns.be("name", "person-name")
72
- }, [this.srfpersonname])])]), vue.createVNode("ion-icon", {
72
+ }, [this.loginname])])]), vue.createVNode("ion-icon", {
73
73
  "class": [this.ns.e("down"), this.ns.is("collapse", this.isCollapse)],
74
74
  "name": "chevron-down-outline"
75
75
  }, null)]),
@@ -25,14 +25,14 @@ const IndexActions = /* @__PURE__ */ vue.defineComponent({
25
25
  const {
26
26
  id
27
27
  } = props.modelData;
28
+ const isCollapse = vue.computed(() => {
29
+ return props.controller.panel.view.state.isCollapse;
30
+ });
28
31
  const classArr = vue.computed(() => {
29
32
  let result = [ns.b(), ns.m(id)];
30
- result = [...result, ...props.controller.containerClass, ns.is("hidden", !props.controller.state.visible)];
33
+ result = [...result, ...props.controller.containerClass, ns.is("hidden", !props.controller.state.visible), ns.is("collapse", isCollapse.value)];
31
34
  return result;
32
35
  });
33
- const isCollapse = vue.computed(() => {
34
- return props.controller.panel.view.state.isCollapse;
35
- });
36
36
  return {
37
37
  ns,
38
38
  classArr,
@@ -42,10 +42,7 @@ const IndexActions = /* @__PURE__ */ vue.defineComponent({
42
42
  render() {
43
43
  var _a, _b;
44
44
  let _slot;
45
- let defaultSlots = ((_b = (_a = this.$slots).default) == null ? void 0 : _b.call(_a)) || [];
46
- if (this.isCollapse) {
47
- defaultSlots = [defaultSlots[0]];
48
- }
45
+ const defaultSlots = ((_b = (_a = this.$slots).default) == null ? void 0 : _b.call(_a)) || [];
49
46
  const content = vue.createVNode(vue.resolveComponent("iBizRow"), {
50
47
  "slot": "content",
51
48
  "layout": this.modelData.layout
@@ -1 +1 @@
1
- .ibiz-index-actions{width:100%;height:100%}.ibiz-index-actions>.ibiz-row{height:100%;overflow:visible}.ibiz-index-actions>.ibiz-row>.ibiz-col:first-child{overflow:visible}.ibiz-index-actions>.ibiz-row>.ibiz-col:first-child>.ibiz-panel-container>.ibiz-row{overflow:visible}.ibiz-index-actions.is-hidden{display:none}.ibiz-index-actions .el-button{font-size:28px}.ibiz-index-actions .el-button:hover{background-color:transparent}
1
+ .ibiz-index-actions{width:100%;height:100%}.ibiz-index-actions>.ibiz-row{height:100%;overflow:visible}.ibiz-index-actions>.ibiz-row>.ibiz-col:first-child{overflow:visible}.ibiz-index-actions>.ibiz-row>.ibiz-col:first-child>.ibiz-panel-container>.ibiz-row{overflow:visible}.ibiz-index-actions.is-hidden{display:none}.ibiz-index-actions.is-collapse{position:relative}.ibiz-index-actions.is-collapse::after{position:absolute;bottom:0;left:12px;width:32px;height:1px;content:"";background-color:var(--ibiz-color-primary-light-active);opacity:.5}.ibiz-index-actions.is-collapse>.ibiz-row{flex-wrap:wrap}.ibiz-index-actions .el-button{font-size:28px}.ibiz-index-actions .el-button:hover{background-color:transparent}
@@ -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.17",
3
+ "version": "0.7.19-alpha.0",
4
4
  "description": "使用 rollup 编译 vue 组件或者 jsx",
5
5
  "main": "lib/index.cjs",
6
6
  "module": "es/index.mjs",
@@ -29,13 +29,13 @@
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.4",
33
- "@ibiz-template/core": "0.7.17",
32
+ "@ibiz-template-plugin/gantt": "0.1.6-alpha.0",
33
+ "@ibiz-template/core": "0.7.18",
34
34
  "@ibiz-template/devtool": "0.0.1-dev.6",
35
- "@ibiz-template/model-helper": "0.7.17",
36
- "@ibiz-template/runtime": "0.7.17",
35
+ "@ibiz-template/model-helper": "0.7.19-alpha.0",
36
+ "@ibiz-template/runtime": "0.7.19-alpha.0",
37
37
  "@ibiz-template/theme": "^0.7.0",
38
- "@ibiz-template/vue3-util": "0.7.17",
38
+ "@ibiz-template/vue3-util": "0.7.19-alpha.0",
39
39
  "@ibiz-template/web-theme": "^1.1.17",
40
40
  "@ibiz/model-core": "^0.1.27",
41
41
  "@imengyu/vue3-context-menu": "^1.3.5",