@ibiz-template/vue3-components 0.7.30-alpha.0 → 0.7.30-alpha.2

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 (41) hide show
  1. package/dist/chart-x3_XMfQ1.js +1 -0
  2. package/dist/{index-HNRMy1_g.js → index-Nw4GzACH.js} +1 -1
  3. package/dist/index-gL570YDJ.js +4 -0
  4. package/dist/{index-xa8K5AHD.js → index-qjfHTzTv.js} +1 -1
  5. package/dist/index.min.css +1 -1
  6. package/dist/index.system.min.js +1 -1
  7. package/dist/{xlsx-util-RK7YFZYE.js → xlsx-util-ngeyHiLd.js} +1 -1
  8. package/es/common/fullscreen-toolbar/fullscreen-toolbar.mjs +8 -0
  9. package/es/control/chart/chart.css +1 -1
  10. package/es/control/chart/chart.d.ts +8 -2
  11. package/es/control/chart/chart.mjs +79 -3
  12. package/es/control/form/form-detail/form-item/form-item.mjs +3 -2
  13. package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-grid/repeater-grid.d.ts +1 -0
  14. package/es/control/grid/grid/grid-control.util.d.ts +1 -0
  15. package/es/control/grid/grid/grid-control.util.mjs +14 -1
  16. package/es/control/grid/grid/grid.d.ts +1 -0
  17. package/es/control/grid/grid/grid.mjs +4 -1
  18. package/es/control/grid/grid/index.d.ts +1 -0
  19. package/es/control/grid/grid-column/grid-field-column/grid-field-column.d.ts +3 -2
  20. package/es/control/grid/grid-column/grid-field-column/grid-field-column.mjs +11 -7
  21. package/es/control/grid/grid-column/grid-field-column/index.d.ts +1 -1
  22. package/es/editor/data-picker/ibiz-mpicker/ibiz-mpicker.css +1 -1
  23. package/es/editor/data-picker/ibiz-mpicker/ibiz-mpicker.mjs +5 -5
  24. package/es/locale/en/index.d.ts +1 -0
  25. package/es/locale/en/index.mjs +2 -1
  26. package/es/locale/zh-CN/index.d.ts +1 -0
  27. package/es/locale/zh-CN/index.mjs +2 -1
  28. package/lib/common/fullscreen-toolbar/fullscreen-toolbar.cjs +8 -0
  29. package/lib/control/chart/chart.cjs +78 -2
  30. package/lib/control/chart/chart.css +1 -1
  31. package/lib/control/form/form-detail/form-item/form-item.cjs +3 -2
  32. package/lib/control/grid/grid/grid-control.util.cjs +14 -1
  33. package/lib/control/grid/grid/grid.cjs +4 -1
  34. package/lib/control/grid/grid-column/grid-field-column/grid-field-column.cjs +10 -6
  35. package/lib/editor/data-picker/ibiz-mpicker/ibiz-mpicker.cjs +5 -5
  36. package/lib/editor/data-picker/ibiz-mpicker/ibiz-mpicker.css +1 -1
  37. package/lib/locale/en/index.cjs +2 -1
  38. package/lib/locale/zh-CN/index.cjs +2 -1
  39. package/package.json +6 -6
  40. package/dist/chart-4KHwhatb.js +0 -1
  41. package/dist/index-RYTwEwp1.js +0 -4
@@ -135,6 +135,14 @@ const IBizFullscreenToolbar = /* @__PURE__ */ defineComponent({
135
135
  mouseX.value = event.clientX;
136
136
  mouseY.value = event.clientY;
137
137
  });
138
+ document.addEventListener("mousemove", (event) => {
139
+ if (!isLaserEnabled.value) {
140
+ mouseX.value = event.clientX;
141
+ mouseY.value = event.clientY;
142
+ lastX = event.clientX;
143
+ lastY = event.clientY;
144
+ }
145
+ });
138
146
  ctx.value.clearRect(0, 0, laserPointerCanvas.value.width, laserPointerCanvas.value.height);
139
147
  ctx.value.fillStyle = "lightgray";
140
148
  ctx.value.fillRect(0, 0, laserPointerCanvas.value.width, laserPointerCanvas.value.height);
@@ -1 +1 @@
1
- .ibiz-control-chart{width:100%;height:100%}.ibiz-control-chart__chart-grid{width:100%;height:100%}.ibiz-control-chart__chart-grid.is-show-grid{display:flex;height:calc(100% - 16px)}.ibiz-control-chart__chart-grid--bottom{flex-direction:column}.ibiz-control-chart__chart-grid--top{flex-direction:column-reverse}.ibiz-control-chart__chart-grid--left{flex-direction:row-reverse}.ibiz-control-chart__chart-grid--right{flex-direction:row}.ibiz-control-chart__chart-grid.is-no-data{display:none}.ibiz-control-chart__chart-grid-container{flex:1;height:50%}.ibiz-control-chart__chart-grid-container.is-bottom{width:100%;height:50%;min-height:50%}.ibiz-control-chart__chart-grid-container.is-top{width:100%;height:50%;min-height:50%}.ibiz-control-chart__chart-grid-container.is-left{width:50%;min-width:50%;height:100%}.ibiz-control-chart__chart-grid-container.is-right{width:50%;min-width:50%;height:100%}.ibiz-control-chart__chart-grid-container.is-no-grid{flex:unset;width:100%;height:100%}.ibiz-control-chart__chart{width:100%;height:100%}.ibiz-control-chart__grid{flex:1;height:auto}.ibiz-control-chart__grid .cell{text-overflow:ellipsis;white-space:nowrap}.ibiz-control-chart__grid .el-table__body-wrapper{border-bottom:1px solid var(--ibiz-color-border)}.ibiz-control-chart__empty{display:none;height:100%}.ibiz-control-chart__empty.is-no-data{display:flex}.ibiz-control-chart-chart-container{width:100%;height:100%}
1
+ .ibiz-control-chart{width:100%;height:100%}.ibiz-control-chart__chart-grid{width:100%;height:100%}.ibiz-control-chart__chart-grid.is-show-grid{display:flex;height:calc(100% - 16px)}.ibiz-control-chart__chart-grid--bottom{flex-direction:column}.ibiz-control-chart__chart-grid--top{flex-direction:column-reverse}.ibiz-control-chart__chart-grid--left{flex-direction:row-reverse}.ibiz-control-chart__chart-grid--right{flex-direction:row}.ibiz-control-chart__chart-grid.is-no-data{display:none}.ibiz-control-chart__chart-grid-container{position:relative;flex:1;height:50%}.ibiz-control-chart__chart-grid-container.is-bottom{width:100%;height:50%;min-height:50%}.ibiz-control-chart__chart-grid-container.is-top{width:100%;height:50%;min-height:50%}.ibiz-control-chart__chart-grid-container.is-left{width:50%;min-width:50%;height:100%}.ibiz-control-chart__chart-grid-container.is-right{width:50%;min-width:50%;height:100%}.ibiz-control-chart__chart-grid-container.is-no-grid{flex:unset;width:100%;height:100%}.ibiz-control-chart__chart{width:100%;height:100%}.ibiz-control-chart__drill-down{position:absolute;top:0;left:0;width:150px;padding:var(--ibiz-spacing-tight) 0;background:var(--ibiz-color-bg-1);border:1px solid var(--ibiz-color-border);border-radius:var(--ibiz-border-radius-small);box-shadow:var(--ibiz-color-elevated)}.ibiz-control-chart__drill-down--item{display:flex;gap:var(--ibiz-spacing-tight);align-items:center;height:40px;padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base-loose);font-size:var(--ibiz-font-size-regular);cursor:pointer}.ibiz-control-chart__drill-down--item:hover{background-color:var(--ibiz-color-fill-1)}.ibiz-control-chart__drill-down--item-text{margin-bottom:var(--ibiz-spacing-super-tight)}.ibiz-control-chart__grid{flex:1;height:auto}.ibiz-control-chart__grid .cell{text-overflow:ellipsis;white-space:nowrap}.ibiz-control-chart__grid .el-table__body-wrapper{border-bottom:1px solid var(--ibiz-color-border)}.ibiz-control-chart__empty{display:none;height:100%}.ibiz-control-chart__empty.is-no-data{display:flex}.ibiz-control-chart-chart-container{width:100%;height:100%}
@@ -52,8 +52,12 @@ declare const ChartControl: import("vue").DefineComponent<{
52
52
  ns: import("@ibiz-template/core").Namespace;
53
53
  chartRef: import("vue").Ref<any>;
54
54
  uuid: string;
55
+ showCheck: import("vue").Ref<boolean>;
56
+ drillDownPos: import("vue").Ref<{}>;
57
+ drillDownRef: import("vue").Ref<any>;
58
+ openDrillDown: (_event: MouseEvent) => void;
55
59
  renderGrid: () => JSX.Element;
56
- }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
60
+ }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "drillDown"[], "drillDown", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
57
61
  modelData: {
58
62
  type: PropType<IDEChart>;
59
63
  required: true;
@@ -98,7 +102,9 @@ declare const ChartControl: import("vue").DefineComponent<{
98
102
  };
99
103
  required: false;
100
104
  };
101
- }>>, {
105
+ }>> & {
106
+ onDrillDown?: ((...args: any[]) => any) | undefined;
107
+ }, {
102
108
  params: IParams;
103
109
  mdctrlActiveMode: number;
104
110
  isSimple: boolean;
@@ -1,5 +1,5 @@
1
1
  import { isVNode, ref, watch, nextTick, onMounted, resolveComponent, createVNode, onBeforeUnmount, defineComponent } from 'vue';
2
- import { useControlController, useNamespace } from '@ibiz-template/vue3-util';
2
+ import { useControlController, useNamespace, useClickOutside } from '@ibiz-template/vue3-util';
3
3
  import { init } from 'echarts';
4
4
  import { createUUID } from 'qx-util';
5
5
  import { ChartController } from '@ibiz-template/runtime';
@@ -44,12 +44,20 @@ const ChartControl = /* @__PURE__ */ defineComponent({
44
44
  required: false
45
45
  }
46
46
  },
47
- setup(props) {
47
+ emits: ["drillDown"],
48
+ setup(props, {
49
+ emit
50
+ }) {
48
51
  const c = useControlController((...args) => new ChartController(...args));
49
52
  const ns = useNamespace("control-".concat(c.model.controlType.toLowerCase()));
50
53
  const chartRef = ref();
51
54
  const maxHeight = ref(0);
52
55
  const uuid = createUUID();
56
+ const showCheck = ref(false);
57
+ const drillDownPos = ref({});
58
+ const drillDownRef = ref();
59
+ let func;
60
+ let tempParams;
53
61
  const initSimpleData = () => {
54
62
  if (!props.data) {
55
63
  return;
@@ -85,8 +93,24 @@ const ChartControl = /* @__PURE__ */ defineComponent({
85
93
  const getGridData = () => {
86
94
  return c.state.gridData || [];
87
95
  };
96
+ const computedDrillDownPos = (params) => {
97
+ if (params.event) {
98
+ const event = params.event.event;
99
+ event.stopPropagation();
100
+ event.preventDefault();
101
+ const {
102
+ offsetX,
103
+ offsetY
104
+ } = params.event;
105
+ drillDownPos.value = {
106
+ top: "".concat(offsetY, "px"),
107
+ left: "".concat(offsetX + 16, "px")
108
+ };
109
+ }
110
+ };
88
111
  let resizeObserver;
89
112
  onMounted(() => {
113
+ var _a, _b;
90
114
  const chart = init(chartRef.value);
91
115
  c.initChart(chart);
92
116
  window.addEventListener("resize", setHeight);
@@ -97,7 +121,32 @@ const ChartControl = /* @__PURE__ */ defineComponent({
97
121
  resizeObserver.observe(chartRef.value);
98
122
  }
99
123
  setHeight();
124
+ if ((_b = (_a = props.modelData.controlParam) == null ? void 0 : _a.ctrlParams) == null ? void 0 : _b.ENABLEDRILLDOWN) {
125
+ chart.on("click", (params) => {
126
+ tempParams = params;
127
+ chart.dispatchAction({
128
+ type: "hideTip"
129
+ });
130
+ showCheck.value = true;
131
+ c.changeTooltipState(false);
132
+ func = useClickOutside(drillDownRef, () => {
133
+ showCheck.value = false;
134
+ c.changeTooltipState(true);
135
+ func.stop();
136
+ });
137
+ computedDrillDownPos(params);
138
+ });
139
+ }
100
140
  });
141
+ const openDrillDown = (_event) => {
142
+ showCheck.value = false;
143
+ if (func) {
144
+ func.stop();
145
+ }
146
+ c.changeTooltipState(true);
147
+ const param = c.computedDrillDownParam(tempParams);
148
+ emit("drillDown", param);
149
+ };
101
150
  watch(() => c.state.showGrid, () => {
102
151
  setHeight();
103
152
  }, {
@@ -133,6 +182,10 @@ const ChartControl = /* @__PURE__ */ defineComponent({
133
182
  ns,
134
183
  chartRef,
135
184
  uuid,
185
+ showCheck,
186
+ drillDownPos,
187
+ drillDownRef,
188
+ openDrillDown,
136
189
  renderGrid
137
190
  };
138
191
  },
@@ -155,7 +208,30 @@ const ChartControl = /* @__PURE__ */ defineComponent({
155
208
  }, [createVNode("div", {
156
209
  "ref": "chartRef",
157
210
  "class": [this.ns.e("chart")]
158
- }, [ibiz.i18n.t("control.chart.chartPlaceholder")])]), this.c.state.showGrid ? createVNode("div", {
211
+ }, [ibiz.i18n.t("control.chart.chartPlaceholder")]), this.showCheck ? createVNode("div", {
212
+ "ref": "drillDownRef",
213
+ "class": this.ns.e("drill-down"),
214
+ "style": this.drillDownPos
215
+ }, [createVNode("div", {
216
+ "class": this.ns.em("drill-down", "item")
217
+ }, [createVNode("svg", {
218
+ "viewBox": "0 0 16 16",
219
+ "xmlns": "http://www.w3.org/2000/svg",
220
+ "height": "1em",
221
+ "width": "1em",
222
+ "focusable": "false",
223
+ "fill": "currentColor"
224
+ }, [createVNode("g", {
225
+ "id": "aspnormal/preview",
226
+ "stroke-width": "1",
227
+ "fill-rule": "evenodd"
228
+ }, [createVNode("path", {
229
+ "d": "M11.626 0c1.057 0 1.923.818 2 1.855l.005.15v3.411a.6.6 0 0 1-1.192.097l-.008-.097.001-1.348V2.005c0-.41-.31-.749-.705-.799l-.101-.006h-9.62c-.41 0-.75.308-.8.704l-.006.101v11.989c0 .41.308.75.705.8l.101.006h5.906l.017-.004.016-.003h2.074a.598.598 0 1 1 .107 1.187l-.095.01V16H2.006a2.006 2.006 0 0 1-2-1.856L0 13.994V2.005C0 .948.818.082 1.856.005L2.006 0h9.62zm-1.595 6.328a3.669 3.669 0 0 1 3.665 3.665c0 .79-.251 1.523-.678 2.123l2.412 2.412a.6.6 0 1 1-.848.85l-2.41-2.412a3.646 3.646 0 0 1-2.14.692 3.67 3.67 0 0 1-3.667-3.665 3.67 3.67 0 0 1 3.666-3.665zm-5.106 5.29a.6.6 0 0 1 .097 1.191l-.097.008H2.85a.6.6 0 0 1-.097-1.192l.097-.008h2.074zm5.106-4.09a2.468 2.468 0 0 0-2.466 2.465 2.468 2.468 0 0 0 2.466 2.466 2.47 2.47 0 0 0 2.466-2.466 2.469 2.469 0 0 0-2.466-2.465zm-4.815-.126a.6.6 0 0 1 .097 1.193l-.097.007h-2.35A.6.6 0 0 1 2.77 7.41l.098-.008h2.349zm5.58-4a.6.6 0 0 1 .097 1.192l-.097.008H2.867A.6.6 0 0 1 2.77 3.41l.097-.008h7.929z",
230
+ "id": "asp\u5408\u5E76\u5F62\u72B6"
231
+ }, null)])]), createVNode("div", {
232
+ "class": this.ns.em("drill-down", "item-text"),
233
+ "onClick": this.openDrillDown
234
+ }, [ibiz.i18n.t("control.chart.drillDown")])])]) : null]), this.c.state.showGrid ? createVNode("div", {
159
235
  "class": this.ns.e("grid")
160
236
  }, [this.renderGrid()]) : null])])]
161
237
  });
@@ -36,12 +36,13 @@ const FormItem = /* @__PURE__ */ defineComponent({
36
36
  };
37
37
  },
38
38
  render() {
39
- if (!this.c.state.visible) {
39
+ var _a, _b;
40
+ if (!this.c.state.visible || ((_a = this.controller.model.editor) == null ? void 0 : _a.editorType) === "HIDDEN") {
40
41
  return null;
41
42
  }
42
43
  let editor = null;
43
44
  const editorProps = {
44
- style: this.controller.editor.style,
45
+ style: (_b = this.controller.editor) == null ? void 0 : _b.style,
45
46
  value: this.controller.value,
46
47
  data: this.controller.data,
47
48
  controller: this.controller.editor,
@@ -14714,6 +14714,7 @@ export declare const RepeaterGrid: import("vue").DefineComponent<{
14714
14714
  ruleTag2?: string | undefined;
14715
14715
  ruleType?: string | undefined;
14716
14716
  scriptCode?: string | undefined;
14717
+ uniqueTag?: string | undefined;
14717
14718
  appId: string;
14718
14719
  id?: string | undefined;
14719
14720
  name?: string | undefined;
@@ -80,6 +80,7 @@ export declare function useAppGridBase(c: GridController, props: IGridProps): {
80
80
  rowIndex: number;
81
81
  columnIndex: number;
82
82
  }) => IData | void;
83
+ headerDragend: (newWidth: number, oldWidth: number, column: IData) => void;
83
84
  };
84
85
  /**
85
86
  * 监听表格头部高度变化,计算css变量
@@ -337,12 +337,25 @@ function useAppGridBase(c, props) {
337
337
  };
338
338
  }
339
339
  };
340
+ const headerDragend = (newWidth, oldWidth, column) => {
341
+ const { property } = column;
342
+ const columnC = c.columns[property];
343
+ if (columnC.isAdaptiveColumn) {
344
+ columnC.isAdaptiveColumn = false;
345
+ const index = renderColumns.value.findIndex((renderColumn) => {
346
+ const renderColumnC = c.columns[renderColumn.codeName];
347
+ return renderColumnC.isAdaptiveColumn;
348
+ });
349
+ c.hasAdaptiveColumn = index !== -1;
350
+ }
351
+ };
340
352
  return {
341
353
  tableData,
342
354
  renderColumns,
343
355
  defaultSort,
344
356
  summaryMethod,
345
- spanMethod
357
+ spanMethod,
358
+ headerDragend
346
359
  };
347
360
  }
348
361
  function useGridHeaderStyle(tableRef, ns) {
@@ -103,6 +103,7 @@ export declare const GridControl: import("vue").DefineComponent<{
103
103
  rowIndex: number;
104
104
  columnIndex: number;
105
105
  }) => void | IData;
106
+ headerDragend: (newWidth: number, oldWidth: number, column: IData) => void;
106
107
  renderPopover: () => JSX.Element[];
107
108
  defaultSort: import("vue").Ref<IData>;
108
109
  renderBatchToolBar: () => VNode | undefined;
@@ -200,7 +200,8 @@ const GridControl = /* @__PURE__ */ defineComponent({
200
200
  renderColumns,
201
201
  defaultSort,
202
202
  summaryMethod,
203
- spanMethod
203
+ spanMethod,
204
+ headerDragend
204
205
  } = useAppGridBase(c, props);
205
206
  const {
206
207
  renderPopover
@@ -312,6 +313,7 @@ const GridControl = /* @__PURE__ */ defineComponent({
312
313
  renderNoData,
313
314
  summaryMethod,
314
315
  spanMethod,
316
+ headerDragend,
315
317
  renderPopover,
316
318
  defaultSort,
317
319
  renderBatchToolBar,
@@ -350,6 +352,7 @@ const GridControl = /* @__PURE__ */ defineComponent({
350
352
  "onRowDblclick": this.onDbRowClick,
351
353
  "onSelectionChange": this.onSelectionChange,
352
354
  "onSortChange": this.onSortChange,
355
+ "onHeaderDragend": this.headerDragend,
353
356
  "tooltip-effect": "light",
354
357
  "scrollbar-always-on": true
355
358
  }, {
@@ -94,6 +94,7 @@ export declare const IBizGridControl: import("@ibiz-template/vue3-util").TypeWit
94
94
  rowIndex: number;
95
95
  columnIndex: number;
96
96
  }) => void | IData;
97
+ headerDragend: (newWidth: number, oldWidth: number, column: IData) => void;
97
98
  renderPopover: () => JSX.Element[];
98
99
  defaultSort: import("vue").Ref<IData>;
99
100
  renderBatchToolBar: () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
@@ -1,4 +1,5 @@
1
1
  import { IUIActionGroupDetail } from '@ibiz/model-core';
2
+ import { Ref } from 'vue';
2
3
  import './grid-field-column.scss';
3
4
  import { GridFieldColumnController, GridRowState } from '@ibiz-template/runtime';
4
5
  export declare const GridFieldColumn: import("vue").DefineComponent<{
@@ -16,14 +17,14 @@ export declare const GridFieldColumn: import("vue").DefineComponent<{
16
17
  onTextClick: (event: MouseEvent) => void;
17
18
  onInfoTextChange: (text: string) => void;
18
19
  onActionClick: (detail: IUIActionGroupDetail, event: MouseEvent) => Promise<void>;
19
- CustomHtml: import("vue").ComputedRef<string | undefined>;
20
+ CustomHtml: Ref<string | undefined>;
20
21
  fieldValue: import("vue").ComputedRef<any>;
21
22
  formatValue: import("vue").ComputedRef<string>;
22
23
  percent: import("vue").ComputedRef<string>;
23
24
  codeListValue: import("vue").ComputedRef<string>;
24
25
  tooltip: import("vue").ComputedRef<string | undefined>;
25
26
  zIndex: number | undefined;
26
- codeListItems: import("vue").Ref<readonly IData[]>;
27
+ codeListItems: Ref<readonly IData[]>;
27
28
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
28
29
  controller: {
29
30
  type: typeof GridFieldColumnController;
@@ -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, useCodeListListen } from '@ibiz-template/vue3-util';
3
3
  import './grid-field-column.css';
4
4
  import { GridFieldColumnController, GridRowState, ValueExUtil } from '@ibiz-template/runtime';
@@ -33,16 +33,20 @@ const GridFieldColumn = /* @__PURE__ */ defineComponent({
33
33
  props.controller.openLinkView(props.row, event);
34
34
  }
35
35
  };
36
- const CustomHtml = computed(() => {
37
- return props.controller.getCustomHtml(props.row);
36
+ const CustomHtml = ref("");
37
+ watch(() => props.row, async () => {
38
+ CustomHtml.value = await props.controller.getCustomHtml(props.row);
39
+ }, {
40
+ deep: true
38
41
  });
39
42
  const fieldValue = computed(() => props.row.data[props.controller.fieldName]);
40
43
  const formatValue = computed(() => props.controller.formatValue(fieldValue.value));
41
44
  const percent = computed(() => {
42
45
  const {
43
- grid
46
+ grid,
47
+ fieldName
44
48
  } = props.controller;
45
- if (!grid.showPercent) {
49
+ if (!grid.percentkeys.includes(fieldName)) {
46
50
  return "";
47
51
  }
48
52
  const value = Number(fieldValue.value);
@@ -50,8 +54,8 @@ const GridFieldColumn = /* @__PURE__ */ defineComponent({
50
54
  const {
51
55
  totalResult = {}
52
56
  } = grid.state;
53
- const total = totalResult[props.controller.fieldName];
54
- if (total) {
57
+ const total = totalResult[fieldName];
58
+ if (total && !Number.isNaN(total)) {
55
59
  return ibiz.util.text.format("".concat(value / total), "0.##%");
56
60
  }
57
61
  }
@@ -13,7 +13,7 @@ export declare const IBizGridFieldColumn: import("@ibiz-template/vue3-util").Typ
13
13
  onTextClick: (event: MouseEvent) => void;
14
14
  onInfoTextChange: (text: string) => void;
15
15
  onActionClick: (detail: import("@ibiz/model-core").IUIActionGroupDetail, event: MouseEvent) => Promise<void>;
16
- CustomHtml: import("vue").ComputedRef<string | undefined>;
16
+ CustomHtml: import("vue").Ref<string | undefined>;
17
17
  fieldValue: import("vue").ComputedRef<any>;
18
18
  formatValue: import("vue").ComputedRef<string>;
19
19
  percent: import("vue").ComputedRef<string>;
@@ -1 +1 @@
1
- @charset "UTF-8";.ibiz-mpicker{display:flex}.ibiz-mpicker input::-moz-placeholder{color:var(--ibiz-form-item-placeholder-color)}.ibiz-mpicker input::placeholder{color:var(--ibiz-form-item-placeholder-color)}.ibiz-mpicker .el-input.is-disabled .el-input__inner{color:var(--ibiz-form-item-disabled-color);border-color:var(--ibiz-form-item-disabled-border-color)}.ibiz-mpicker .el-select{width:100%}.ibiz-mpicker ion-icon{font-size:var(--ibiz-form-item-font-size);cursor:pointer}.ibiz-mpicker__buns-position{right:26px;cursor:pointer;position:relative;display:inline-block}.ibiz-mpicker__btns{position:absolute;right:0;height:100%;color:var(--ibiz-form-item-placeholder-color);display:flex;align-items:center;justify-content:center}.ibiz-mpicker--disabled ion-icon{pointer-events:none}.ibiz-mpicker--readonly{font-size:var(--ibiz-form-item-font-size);line-height:var(--ibiz-editor-default-line-height);color:var(--ibiz-form-item-readonly-color)}.ibiz-mpicker-form-default-content{display:none}.ibiz-form-item .ibiz-mpicker.is-show-default:hover .ibiz-mpicker-form-default-content{display:none}.ibiz-form-item .ibiz-mpicker.is-show-default:hover .ibiz-mpicker-select{display:block}.ibiz-form-item .ibiz-mpicker.is-show-default .ibiz-mpicker-form-default-content{display:flex;align-items:center;width:100%;height:var(--ibiz-editor-default-line-height);padding:var(--ibiz-form-item-hover-edit-padding);font-family:Arial,sans-serif;font-size:var(--ibiz-form-item-font-size);line-height:var(--ibiz-editor-default-line-height);color:var(--ibiz-form-item-text-color)}.ibiz-form-item .ibiz-mpicker.is-show-default .ibiz-mpicker-form-default-content .ibiz-mpicker-content-item{height:calc(var(--ibiz-editor-default-line-height) - var(--ibiz-spacing-tight));padding:0 var(--ibiz-spacing-tight);margin:2px 6px 2px 0;font-size:var(--ibiz-font-size-small);line-height:calc(var(--ibiz-editor-default-line-height) - var(--ibiz-spacing-tight));color:var(--ibiz-editor-default-text-color);background-color:var(--ibiz-color-fill-0);border:1px solid transparent;border-radius:var(--ibiz-border-radius-small)}.ibiz-form-item .ibiz-mpicker.is-show-default .ibiz-mpicker-select{display:none}.ibiz-form-item .ibiz-mpicker.is-show-default.is-editable .ibiz-mpicker-form-default-content{display:none}.ibiz-form-item .ibiz-mpicker.is-show-default.is-editable .ibiz-mpicker-select{display:block}
1
+ @charset "UTF-8";.ibiz-mpicker{display:flex}.ibiz-mpicker input::-moz-placeholder{color:var(--ibiz-form-item-placeholder-color)}.ibiz-mpicker input::placeholder{color:var(--ibiz-form-item-placeholder-color)}.ibiz-mpicker .el-input.is-disabled .el-input__inner{color:var(--ibiz-form-item-disabled-color);border-color:var(--ibiz-form-item-disabled-border-color)}.ibiz-mpicker .el-select{width:100%}.ibiz-mpicker ion-icon{font-size:var(--ibiz-form-item-font-size);cursor:pointer}.ibiz-mpicker__buns-position{position:absolute;right:26px;z-index:1;display:inline-block;width:30px;height:100%;cursor:pointer}.ibiz-mpicker__btns{position:absolute;right:0;width:100%;height:100%;color:var(--ibiz-form-item-placeholder-color);cursor:pointer;display:flex;align-items:center;justify-content:center}.ibiz-mpicker--disabled ion-icon{pointer-events:none}.ibiz-mpicker--readonly{font-size:var(--ibiz-form-item-font-size);line-height:var(--ibiz-editor-default-line-height);color:var(--ibiz-form-item-readonly-color)}.ibiz-mpicker-form-default-content{display:none}.ibiz-form-item .ibiz-mpicker.is-show-default:hover .ibiz-mpicker-form-default-content{display:none}.ibiz-form-item .ibiz-mpicker.is-show-default:hover .ibiz-mpicker-select{display:block}.ibiz-form-item .ibiz-mpicker.is-show-default .ibiz-mpicker-form-default-content{display:flex;align-items:center;width:100%;height:var(--ibiz-editor-default-line-height);padding:var(--ibiz-form-item-hover-edit-padding);font-family:Arial,sans-serif;font-size:var(--ibiz-form-item-font-size);line-height:var(--ibiz-editor-default-line-height);color:var(--ibiz-form-item-text-color)}.ibiz-form-item .ibiz-mpicker.is-show-default .ibiz-mpicker-form-default-content .ibiz-mpicker-content-item{height:calc(var(--ibiz-editor-default-line-height) - var(--ibiz-spacing-tight));padding:0 var(--ibiz-spacing-tight);margin:2px 6px 2px 0;font-size:var(--ibiz-font-size-small);line-height:calc(var(--ibiz-editor-default-line-height) - var(--ibiz-spacing-tight));color:var(--ibiz-editor-default-text-color);background-color:var(--ibiz-color-fill-0);border:1px solid transparent;border-radius:var(--ibiz-border-radius-small)}.ibiz-form-item .ibiz-mpicker.is-show-default .ibiz-mpicker-select{display:none}.ibiz-form-item .ibiz-mpicker.is-show-default.is-editable .ibiz-mpicker-form-default-content{display:none}.ibiz-form-item .ibiz-mpicker.is-show-default.is-editable .ibiz-mpicker-select{display:block}
@@ -330,12 +330,12 @@ const IBizMPicker = /* @__PURE__ */ defineComponent({
330
330
  default: () => [_slot]
331
331
  }), !this.readonly && createVNode("div", {
332
332
  "class": this.ns.e("buns-position")
333
- }, [createVNode("div", {
334
- "class": this.ns.e("btns")
335
- }, [this.c.model.pickupAppViewId ? createVNode("ion-icon", {
336
- "onClick": this.openPickUpView,
333
+ }, [this.c.model.pickupAppViewId ? createVNode("div", {
334
+ "class": this.ns.e("btns"),
335
+ "onClick": this.openPickUpView
336
+ }, [createVNode("ion-icon", {
337
337
  "name": "search"
338
- }, null) : null])])];
338
+ }, null)]) : null])];
339
339
  const readonlyContent = createVNode("div", {
340
340
  "class": (this.ns.b(), this.ns.m("readonly"))
341
341
  }, [this.valueText]);
@@ -969,6 +969,7 @@ declare const _default: {
969
969
  };
970
970
  chart: {
971
971
  chartPlaceholder: string;
972
+ drillDown: string;
972
973
  };
973
974
  dashboard: {
974
975
  customDashboardContainer: {
@@ -302,7 +302,8 @@ var index = {
302
302
  }
303
303
  },
304
304
  chart: {
305
- chartPlaceholder: "Chart"
305
+ chartPlaceholder: "Chart",
306
+ drillDown: "DrillDown"
306
307
  },
307
308
  dashboard: {
308
309
  customDashboardContainer: {
@@ -963,6 +963,7 @@ declare const _default: {
963
963
  };
964
964
  chart: {
965
965
  chartPlaceholder: string;
966
+ drillDown: string;
966
967
  };
967
968
  dashboard: {
968
969
  customDashboardContainer: {
@@ -298,7 +298,8 @@ var index = {
298
298
  }
299
299
  },
300
300
  chart: {
301
- chartPlaceholder: "\u56FE\u8868"
301
+ chartPlaceholder: "\u56FE\u8868",
302
+ drillDown: "\u68C0\u67E5\u660E\u7EC6"
302
303
  },
303
304
  dashboard: {
304
305
  customDashboardContainer: {
@@ -137,6 +137,14 @@ const IBizFullscreenToolbar = /* @__PURE__ */ vue.defineComponent({
137
137
  mouseX.value = event.clientX;
138
138
  mouseY.value = event.clientY;
139
139
  });
140
+ document.addEventListener("mousemove", (event) => {
141
+ if (!isLaserEnabled.value) {
142
+ mouseX.value = event.clientX;
143
+ mouseY.value = event.clientY;
144
+ lastX = event.clientX;
145
+ lastY = event.clientY;
146
+ }
147
+ });
140
148
  ctx.value.clearRect(0, 0, laserPointerCanvas.value.width, laserPointerCanvas.value.height);
141
149
  ctx.value.fillStyle = "lightgray";
142
150
  ctx.value.fillRect(0, 0, laserPointerCanvas.value.width, laserPointerCanvas.value.height);
@@ -48,12 +48,20 @@ const ChartControl = /* @__PURE__ */ vue.defineComponent({
48
48
  required: false
49
49
  }
50
50
  },
51
- setup(props) {
51
+ emits: ["drillDown"],
52
+ setup(props, {
53
+ emit
54
+ }) {
52
55
  const c = vue3Util.useControlController((...args) => new runtime.ChartController(...args));
53
56
  const ns = vue3Util.useNamespace("control-".concat(c.model.controlType.toLowerCase()));
54
57
  const chartRef = vue.ref();
55
58
  const maxHeight = vue.ref(0);
56
59
  const uuid = qxUtil.createUUID();
60
+ const showCheck = vue.ref(false);
61
+ const drillDownPos = vue.ref({});
62
+ const drillDownRef = vue.ref();
63
+ let func;
64
+ let tempParams;
57
65
  const initSimpleData = () => {
58
66
  if (!props.data) {
59
67
  return;
@@ -89,8 +97,24 @@ const ChartControl = /* @__PURE__ */ vue.defineComponent({
89
97
  const getGridData = () => {
90
98
  return c.state.gridData || [];
91
99
  };
100
+ const computedDrillDownPos = (params) => {
101
+ if (params.event) {
102
+ const event = params.event.event;
103
+ event.stopPropagation();
104
+ event.preventDefault();
105
+ const {
106
+ offsetX,
107
+ offsetY
108
+ } = params.event;
109
+ drillDownPos.value = {
110
+ top: "".concat(offsetY, "px"),
111
+ left: "".concat(offsetX + 16, "px")
112
+ };
113
+ }
114
+ };
92
115
  let resizeObserver;
93
116
  vue.onMounted(() => {
117
+ var _a, _b;
94
118
  const chart = echarts.init(chartRef.value);
95
119
  c.initChart(chart);
96
120
  window.addEventListener("resize", setHeight);
@@ -101,7 +125,32 @@ const ChartControl = /* @__PURE__ */ vue.defineComponent({
101
125
  resizeObserver.observe(chartRef.value);
102
126
  }
103
127
  setHeight();
128
+ if ((_b = (_a = props.modelData.controlParam) == null ? void 0 : _a.ctrlParams) == null ? void 0 : _b.ENABLEDRILLDOWN) {
129
+ chart.on("click", (params) => {
130
+ tempParams = params;
131
+ chart.dispatchAction({
132
+ type: "hideTip"
133
+ });
134
+ showCheck.value = true;
135
+ c.changeTooltipState(false);
136
+ func = vue3Util.useClickOutside(drillDownRef, () => {
137
+ showCheck.value = false;
138
+ c.changeTooltipState(true);
139
+ func.stop();
140
+ });
141
+ computedDrillDownPos(params);
142
+ });
143
+ }
104
144
  });
145
+ const openDrillDown = (_event) => {
146
+ showCheck.value = false;
147
+ if (func) {
148
+ func.stop();
149
+ }
150
+ c.changeTooltipState(true);
151
+ const param = c.computedDrillDownParam(tempParams);
152
+ emit("drillDown", param);
153
+ };
105
154
  vue.watch(() => c.state.showGrid, () => {
106
155
  setHeight();
107
156
  }, {
@@ -137,6 +186,10 @@ const ChartControl = /* @__PURE__ */ vue.defineComponent({
137
186
  ns,
138
187
  chartRef,
139
188
  uuid,
189
+ showCheck,
190
+ drillDownPos,
191
+ drillDownRef,
192
+ openDrillDown,
140
193
  renderGrid
141
194
  };
142
195
  },
@@ -159,7 +212,30 @@ const ChartControl = /* @__PURE__ */ vue.defineComponent({
159
212
  }, [vue.createVNode("div", {
160
213
  "ref": "chartRef",
161
214
  "class": [this.ns.e("chart")]
162
- }, [ibiz.i18n.t("control.chart.chartPlaceholder")])]), this.c.state.showGrid ? vue.createVNode("div", {
215
+ }, [ibiz.i18n.t("control.chart.chartPlaceholder")]), this.showCheck ? vue.createVNode("div", {
216
+ "ref": "drillDownRef",
217
+ "class": this.ns.e("drill-down"),
218
+ "style": this.drillDownPos
219
+ }, [vue.createVNode("div", {
220
+ "class": this.ns.em("drill-down", "item")
221
+ }, [vue.createVNode("svg", {
222
+ "viewBox": "0 0 16 16",
223
+ "xmlns": "http://www.w3.org/2000/svg",
224
+ "height": "1em",
225
+ "width": "1em",
226
+ "focusable": "false",
227
+ "fill": "currentColor"
228
+ }, [vue.createVNode("g", {
229
+ "id": "aspnormal/preview",
230
+ "stroke-width": "1",
231
+ "fill-rule": "evenodd"
232
+ }, [vue.createVNode("path", {
233
+ "d": "M11.626 0c1.057 0 1.923.818 2 1.855l.005.15v3.411a.6.6 0 0 1-1.192.097l-.008-.097.001-1.348V2.005c0-.41-.31-.749-.705-.799l-.101-.006h-9.62c-.41 0-.75.308-.8.704l-.006.101v11.989c0 .41.308.75.705.8l.101.006h5.906l.017-.004.016-.003h2.074a.598.598 0 1 1 .107 1.187l-.095.01V16H2.006a2.006 2.006 0 0 1-2-1.856L0 13.994V2.005C0 .948.818.082 1.856.005L2.006 0h9.62zm-1.595 6.328a3.669 3.669 0 0 1 3.665 3.665c0 .79-.251 1.523-.678 2.123l2.412 2.412a.6.6 0 1 1-.848.85l-2.41-2.412a3.646 3.646 0 0 1-2.14.692 3.67 3.67 0 0 1-3.667-3.665 3.67 3.67 0 0 1 3.666-3.665zm-5.106 5.29a.6.6 0 0 1 .097 1.191l-.097.008H2.85a.6.6 0 0 1-.097-1.192l.097-.008h2.074zm5.106-4.09a2.468 2.468 0 0 0-2.466 2.465 2.468 2.468 0 0 0 2.466 2.466 2.47 2.47 0 0 0 2.466-2.466 2.469 2.469 0 0 0-2.466-2.465zm-4.815-.126a.6.6 0 0 1 .097 1.193l-.097.007h-2.35A.6.6 0 0 1 2.77 7.41l.098-.008h2.349zm5.58-4a.6.6 0 0 1 .097 1.192l-.097.008H2.867A.6.6 0 0 1 2.77 3.41l.097-.008h7.929z",
234
+ "id": "asp\u5408\u5E76\u5F62\u72B6"
235
+ }, null)])]), vue.createVNode("div", {
236
+ "class": this.ns.em("drill-down", "item-text"),
237
+ "onClick": this.openDrillDown
238
+ }, [ibiz.i18n.t("control.chart.drillDown")])])]) : null]), this.c.state.showGrid ? vue.createVNode("div", {
163
239
  "class": this.ns.e("grid")
164
240
  }, [this.renderGrid()]) : null])])]
165
241
  });
@@ -1 +1 @@
1
- .ibiz-control-chart{width:100%;height:100%}.ibiz-control-chart__chart-grid{width:100%;height:100%}.ibiz-control-chart__chart-grid.is-show-grid{display:flex;height:calc(100% - 16px)}.ibiz-control-chart__chart-grid--bottom{flex-direction:column}.ibiz-control-chart__chart-grid--top{flex-direction:column-reverse}.ibiz-control-chart__chart-grid--left{flex-direction:row-reverse}.ibiz-control-chart__chart-grid--right{flex-direction:row}.ibiz-control-chart__chart-grid.is-no-data{display:none}.ibiz-control-chart__chart-grid-container{flex:1;height:50%}.ibiz-control-chart__chart-grid-container.is-bottom{width:100%;height:50%;min-height:50%}.ibiz-control-chart__chart-grid-container.is-top{width:100%;height:50%;min-height:50%}.ibiz-control-chart__chart-grid-container.is-left{width:50%;min-width:50%;height:100%}.ibiz-control-chart__chart-grid-container.is-right{width:50%;min-width:50%;height:100%}.ibiz-control-chart__chart-grid-container.is-no-grid{flex:unset;width:100%;height:100%}.ibiz-control-chart__chart{width:100%;height:100%}.ibiz-control-chart__grid{flex:1;height:auto}.ibiz-control-chart__grid .cell{text-overflow:ellipsis;white-space:nowrap}.ibiz-control-chart__grid .el-table__body-wrapper{border-bottom:1px solid var(--ibiz-color-border)}.ibiz-control-chart__empty{display:none;height:100%}.ibiz-control-chart__empty.is-no-data{display:flex}.ibiz-control-chart-chart-container{width:100%;height:100%}
1
+ .ibiz-control-chart{width:100%;height:100%}.ibiz-control-chart__chart-grid{width:100%;height:100%}.ibiz-control-chart__chart-grid.is-show-grid{display:flex;height:calc(100% - 16px)}.ibiz-control-chart__chart-grid--bottom{flex-direction:column}.ibiz-control-chart__chart-grid--top{flex-direction:column-reverse}.ibiz-control-chart__chart-grid--left{flex-direction:row-reverse}.ibiz-control-chart__chart-grid--right{flex-direction:row}.ibiz-control-chart__chart-grid.is-no-data{display:none}.ibiz-control-chart__chart-grid-container{position:relative;flex:1;height:50%}.ibiz-control-chart__chart-grid-container.is-bottom{width:100%;height:50%;min-height:50%}.ibiz-control-chart__chart-grid-container.is-top{width:100%;height:50%;min-height:50%}.ibiz-control-chart__chart-grid-container.is-left{width:50%;min-width:50%;height:100%}.ibiz-control-chart__chart-grid-container.is-right{width:50%;min-width:50%;height:100%}.ibiz-control-chart__chart-grid-container.is-no-grid{flex:unset;width:100%;height:100%}.ibiz-control-chart__chart{width:100%;height:100%}.ibiz-control-chart__drill-down{position:absolute;top:0;left:0;width:150px;padding:var(--ibiz-spacing-tight) 0;background:var(--ibiz-color-bg-1);border:1px solid var(--ibiz-color-border);border-radius:var(--ibiz-border-radius-small);box-shadow:var(--ibiz-color-elevated)}.ibiz-control-chart__drill-down--item{display:flex;gap:var(--ibiz-spacing-tight);align-items:center;height:40px;padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base-loose);font-size:var(--ibiz-font-size-regular);cursor:pointer}.ibiz-control-chart__drill-down--item:hover{background-color:var(--ibiz-color-fill-1)}.ibiz-control-chart__drill-down--item-text{margin-bottom:var(--ibiz-spacing-super-tight)}.ibiz-control-chart__grid{flex:1;height:auto}.ibiz-control-chart__grid .cell{text-overflow:ellipsis;white-space:nowrap}.ibiz-control-chart__grid .el-table__body-wrapper{border-bottom:1px solid var(--ibiz-color-border)}.ibiz-control-chart__empty{display:none;height:100%}.ibiz-control-chart__empty.is-no-data{display:flex}.ibiz-control-chart-chart-container{width:100%;height:100%}
@@ -40,12 +40,13 @@ const FormItem = /* @__PURE__ */ vue.defineComponent({
40
40
  };
41
41
  },
42
42
  render() {
43
- if (!this.c.state.visible) {
43
+ var _a, _b;
44
+ if (!this.c.state.visible || ((_a = this.controller.model.editor) == null ? void 0 : _a.editorType) === "HIDDEN") {
44
45
  return null;
45
46
  }
46
47
  let editor = null;
47
48
  const editorProps = {
48
- style: this.controller.editor.style,
49
+ style: (_b = this.controller.editor) == null ? void 0 : _b.style,
49
50
  value: this.controller.value,
50
51
  data: this.controller.data,
51
52
  controller: this.controller.editor,
@@ -339,12 +339,25 @@ function useAppGridBase(c, props) {
339
339
  };
340
340
  }
341
341
  };
342
+ const headerDragend = (newWidth, oldWidth, column) => {
343
+ const { property } = column;
344
+ const columnC = c.columns[property];
345
+ if (columnC.isAdaptiveColumn) {
346
+ columnC.isAdaptiveColumn = false;
347
+ const index = renderColumns.value.findIndex((renderColumn) => {
348
+ const renderColumnC = c.columns[renderColumn.codeName];
349
+ return renderColumnC.isAdaptiveColumn;
350
+ });
351
+ c.hasAdaptiveColumn = index !== -1;
352
+ }
353
+ };
342
354
  return {
343
355
  tableData,
344
356
  renderColumns,
345
357
  defaultSort,
346
358
  summaryMethod,
347
- spanMethod
359
+ spanMethod,
360
+ headerDragend
348
361
  };
349
362
  }
350
363
  function useGridHeaderStyle(tableRef, ns) {