@ibiz-template/vue3-components 0.7.28 → 0.7.29

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 (48) hide show
  1. package/dist/index-dIj05Kls.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-z-jllHFG.js → xlsx-util-bhQVAaEM.js} +1 -1
  5. package/es/common/fullscreen-toolbar/fullscreen-toolbar-alarm-clock/fullscreen-toolbar-alarm-clock.css +1 -0
  6. package/es/common/fullscreen-toolbar/fullscreen-toolbar-alarm-clock/fullscreen-toolbar-alarm-clock.d.ts +9 -0
  7. package/es/common/fullscreen-toolbar/fullscreen-toolbar-alarm-clock/fullscreen-toolbar-alarm-clock.mjs +87 -0
  8. package/es/common/fullscreen-toolbar/fullscreen-toolbar.css +1 -0
  9. package/es/common/fullscreen-toolbar/fullscreen-toolbar.d.ts +13 -0
  10. package/es/common/fullscreen-toolbar/fullscreen-toolbar.mjs +244 -0
  11. package/es/common/index.mjs +2 -0
  12. package/es/common/pagination/pagination.mjs +1 -1
  13. package/es/control/dashboard/custom-dashboard-container/custom-dashboard-container.d.ts +4 -1
  14. package/es/control/dashboard/custom-dashboard-container/custom-dashboard-container.mjs +2 -2
  15. package/es/control/dashboard/dashboard-design/dashboard-design.mjs +7 -1
  16. package/es/control/form/form-detail/form-item/form-item-container/form-item-container.css +1 -1
  17. package/es/control/form/form-detail/form-item/form-item-container/form-item-container.mjs +3 -2
  18. package/es/control/grid/grid/grid.mjs +1 -1
  19. package/es/editor/span/span/span.mjs +18 -9
  20. package/es/editor/text-box/ibiz-input-number/ibiz-input-number.mjs +1 -1
  21. package/es/editor/upload/ibiz-image-upload/ibiz-image-upload.d.ts +2 -1
  22. package/es/editor/upload/ibiz-image-upload/ibiz-image-upload.mjs +14 -5
  23. package/es/index.mjs +1 -0
  24. package/es/util/fullscreen/fullscreen-util.d.ts +25 -0
  25. package/es/util/fullscreen/fullscreen-util.mjs +43 -0
  26. package/es/util/index.d.ts +1 -0
  27. package/es/util/index.mjs +1 -0
  28. package/es/web-app/main.mjs +2 -0
  29. package/lib/common/fullscreen-toolbar/fullscreen-toolbar-alarm-clock/fullscreen-toolbar-alarm-clock.cjs +89 -0
  30. package/lib/common/fullscreen-toolbar/fullscreen-toolbar-alarm-clock/fullscreen-toolbar-alarm-clock.css +1 -0
  31. package/lib/common/fullscreen-toolbar/fullscreen-toolbar.cjs +246 -0
  32. package/lib/common/fullscreen-toolbar/fullscreen-toolbar.css +1 -0
  33. package/lib/common/index.cjs +2 -0
  34. package/lib/common/pagination/pagination.cjs +1 -1
  35. package/lib/control/dashboard/custom-dashboard-container/custom-dashboard-container.cjs +2 -2
  36. package/lib/control/dashboard/dashboard-design/dashboard-design.cjs +7 -1
  37. package/lib/control/form/form-detail/form-item/form-item-container/form-item-container.cjs +3 -2
  38. package/lib/control/form/form-detail/form-item/form-item-container/form-item-container.css +1 -1
  39. package/lib/control/grid/grid/grid.cjs +1 -1
  40. package/lib/editor/span/span/span.cjs +18 -9
  41. package/lib/editor/text-box/ibiz-input-number/ibiz-input-number.cjs +1 -1
  42. package/lib/editor/upload/ibiz-image-upload/ibiz-image-upload.cjs +14 -5
  43. package/lib/index.cjs +2 -0
  44. package/lib/util/fullscreen/fullscreen-util.cjs +45 -0
  45. package/lib/util/index.cjs +2 -0
  46. package/lib/web-app/main.cjs +2 -0
  47. package/package.json +6 -6
  48. package/dist/index-X_i16UJh.js +0 -4
@@ -0,0 +1,43 @@
1
+ import { createApp } from 'vue';
2
+ import ElementPlus from 'element-plus';
3
+ import { IBizFullscreenToolbar } from '../../common/fullscreen-toolbar/fullscreen-toolbar.mjs';
4
+
5
+ "use strict";
6
+ class FullscreenUtil {
7
+ /**
8
+ * Creates an instance of FullscreenUtil.
9
+ * @memberof FullscreenUtil
10
+ */
11
+ constructor() {
12
+ }
13
+ /**
14
+ * 指定元素全屏
15
+ * @author fzh
16
+ * @date 2024-07-09 19:39:40
17
+ */
18
+ openElementFullscreen(div) {
19
+ if (!document.fullscreenElement && div) {
20
+ div.requestFullscreen();
21
+ div.style.background = "white";
22
+ const content = document.createElement("div");
23
+ content.id = "fullscreen";
24
+ content.style.position = "absolute";
25
+ content.style.bottom = "20px";
26
+ content.style.left = "45%";
27
+ div.appendChild(content);
28
+ const app = createApp(IBizFullscreenToolbar);
29
+ app.use(ElementPlus);
30
+ app.mount(content);
31
+ }
32
+ }
33
+ /**
34
+ * 页面退出全屏
35
+ * @author fzh
36
+ * @date 2024-07-09 19:39:40
37
+ */
38
+ closeFullscreen() {
39
+ document.exitFullscreen();
40
+ }
41
+ }
42
+
43
+ export { FullscreenUtil };
@@ -9,4 +9,5 @@ export { usePagination } from './pagination/use-pagination';
9
9
  export { NoticeUtil } from './notice-util/notice-util';
10
10
  export { RenderUtil } from './render-util/render-util';
11
11
  export { AppUtil } from './app-util/app-util';
12
+ export { FullscreenUtil } from './fullscreen/fullscreen-util';
12
13
  export * from './wang-editor-util/wang-editor-util';
package/es/util/index.mjs CHANGED
@@ -9,6 +9,7 @@ export { usePagination } from './pagination/use-pagination.mjs';
9
9
  export { NoticeUtil } from './notice-util/notice-util.mjs';
10
10
  export { RenderUtil } from './render-util/render-util.mjs';
11
11
  export { AppUtil } from './app-util/app-util.mjs';
12
+ export { FullscreenUtil } from './fullscreen/fullscreen-util.mjs';
12
13
  export { parseHtml } from './wang-editor-util/wang-editor-util.mjs';
13
14
 
14
15
  "use strict";
@@ -20,6 +20,7 @@ import { NotificationUtil } from '../util/notification-util/notification-util.mj
20
20
  import { LoadingUtil } from '../util/loading-util/loading-util.mjs';
21
21
  import { NoticeUtil } from '../util/notice-util/notice-util.mjs';
22
22
  import { OverlayController } from '../util/overlay-controller/overlay-controller.mjs';
23
+ import { FullscreenUtil } from '../util/fullscreen/fullscreen-util.mjs';
23
24
 
24
25
  "use strict";
25
26
  async function runApp(plugins, opts) {
@@ -76,6 +77,7 @@ async function runApp(plugins, opts) {
76
77
  ibiz.util.text.format = (value, code) => {
77
78
  return app.config.globalProperties.$textFormat(value, code);
78
79
  };
80
+ ibiz.fullscreenUtil = new FullscreenUtil();
79
81
  await ibiz.i18n.init();
80
82
  app.mount("#app");
81
83
  }
@@ -0,0 +1,89 @@
1
+ 'use strict';
2
+
3
+ var vue = require('vue');
4
+ require('./fullscreen-toolbar-alarm-clock.css');
5
+ var vue3Util = require('@ibiz-template/vue3-util');
6
+
7
+ "use strict";
8
+ const IBizAlarmClock = /* @__PURE__ */ vue.defineComponent({
9
+ name: "AlarmClock",
10
+ setup() {
11
+ const ns = vue3Util.useNamespace("alarm-clock");
12
+ const close = () => {
13
+ const div = document.getElementById("alarm-clock");
14
+ if (div) {
15
+ if (div.parentElement) {
16
+ div.parentElement.removeChild(div);
17
+ }
18
+ }
19
+ };
20
+ const formattedTime = vue.ref("00:00");
21
+ let minutes = 0;
22
+ let seconds = 0;
23
+ let timerInterval;
24
+ const formatTime = (m, s) => {
25
+ return "".concat(m < 10 ? "0".concat(m) : m, ":").concat(s < 10 ? "0".concat(s) : s);
26
+ };
27
+ function updateTimer() {
28
+ seconds++;
29
+ if (seconds === 60) {
30
+ seconds = 0;
31
+ minutes++;
32
+ }
33
+ if (minutes === 60) {
34
+ minutes = 0;
35
+ }
36
+ formattedTime.value = formatTime(minutes, seconds);
37
+ }
38
+ const startTimer = () => {
39
+ timerInterval = setInterval(updateTimer, 1e3);
40
+ };
41
+ vue.onMounted(() => {
42
+ startTimer();
43
+ });
44
+ vue.onBeforeUnmount(() => {
45
+ clearInterval(timerInterval);
46
+ });
47
+ const closeSvg = () => {
48
+ return vue.createVNode("svg", {
49
+ "viewBox": "0 0 16 16",
50
+ "xmlns": "http://www.w3.org/2000/svg",
51
+ "height": "1em",
52
+ "width": "1em",
53
+ "preserveAspectRatio": "xMidYMid meet",
54
+ "focusable": "false"
55
+ }, [vue.createVNode("g", {
56
+ "id": "atjaction/quit",
57
+ "stroke-width": "1",
58
+ "fill-rule": "evenodd"
59
+ }, [vue.createVNode("path", {
60
+ "d": "M11.628 2.015a7.438 7.438 0 0 1 1.855 1.5 7.256 7.256 0 0 1 1.858 4.853c0 4.05-3.324 7.332-7.42 7.332C3.824 15.7.5 12.419.5 8.368c0-1.812.668-3.523 1.858-4.854a7.428 7.428 0 0 1 1.855-1.5.6.6 0 0 1 .595 1.043 6.238 6.238 0 0 0-1.556 1.257A6.056 6.056 0 0 0 1.7 8.368c0 3.385 2.783 6.132 6.22 6.132 3.438 0 6.221-2.747 6.221-6.132 0-1.514-.558-2.941-1.552-4.054a6.228 6.228 0 0 0-1.556-1.257.6.6 0 1 1 .595-1.042zM7.921.5a.6.6 0 0 1 .592.503l.008.097v7.18a.6.6 0 0 1-1.193.097l-.007-.098V1.1a.6.6 0 0 1 .6-.6z",
61
+ "id": "atj\u5F62\u72B6\u7ED3\u5408"
62
+ }, null)])]);
63
+ };
64
+ return {
65
+ ns,
66
+ close,
67
+ closeSvg,
68
+ formattedTime,
69
+ timerInterval
70
+ };
71
+ },
72
+ render() {
73
+ return vue.createVNode("div", {
74
+ "ref": "componentRef",
75
+ "class": this.ns.b()
76
+ }, [vue.createVNode("div", {
77
+ "class": this.ns.e("wrapper")
78
+ }, [vue.createVNode("div", {
79
+ "class": this.ns.e("light-counter")
80
+ }, [this.formattedTime]), vue.createVNode("div", {
81
+ "class": this.ns.e("svg-wrapper")
82
+ }, [vue.createVNode("div", {
83
+ "class": this.ns.e("svg"),
84
+ "onClick": () => this.close()
85
+ }, [this.closeSvg()])])])]);
86
+ }
87
+ });
88
+
89
+ exports.IBizAlarmClock = IBizAlarmClock;
@@ -0,0 +1 @@
1
+ .ibiz-alarm-clock{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#000}.ibiz-alarm-clock__wrapper{position:absolute;top:50%;left:50%;line-height:1;text-align:center;transform:translate(-50%,-50%)}.ibiz-alarm-clock__light-counter{font-family:"Chinese Quote",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:240px;font-feature-settings:"tnum";font-variant:tabular-nums}.ibiz-alarm-clock__svg-wrapper{display:flex;flex-flow:row nowrap;place-content:center center;align-items:center;margin-top:40px;cursor:pointer}.ibiz-alarm-clock__svg{display:inline-flex;flex-flow:row nowrap;place-content:center center;align-items:center;width:80px;height:80px;cursor:pointer;border:2px solid #666;border-radius:50%}.ibiz-alarm-clock__svg:hover{fill:#999}.ibiz-alarm-clock__svg>svg{width:24px;height:24px;fill:#666}.ibiz-alarm-clock__svg>svg:hover{fill:#6698ff}
@@ -0,0 +1,246 @@
1
+ 'use strict';
2
+
3
+ var vue = require('vue');
4
+ require('./fullscreen-toolbar.css');
5
+ var vue3Util = require('@ibiz-template/vue3-util');
6
+ var fullscreenToolbarAlarmClock = require('./fullscreen-toolbar-alarm-clock/fullscreen-toolbar-alarm-clock.cjs');
7
+
8
+ "use strict";
9
+ const IBizFullscreenToolbar = /* @__PURE__ */ vue.defineComponent({
10
+ name: "IBizFullscreenToolbar",
11
+ setup() {
12
+ const ns = vue3Util.useNamespace("fullscreen-toolbar");
13
+ const laserPointerSvg = () => {
14
+ return vue.createVNode("svg", {
15
+ "viewBox": "0 0 16 16",
16
+ "xmlns": "http://www.w3.org/2000/svg",
17
+ "height": "1em",
18
+ "width": "1em",
19
+ "preserveAspectRatio": "xMidYMid meet",
20
+ "focusable": "false"
21
+ }, [vue.createVNode("g", {
22
+ "id": "aoeeditor/laser-pointer",
23
+ "stroke-width": "1",
24
+ "fill-rule": "evenodd"
25
+ }, [vue.createVNode("path", {
26
+ "d": "M8.203 15.947a3 3 0 0 1-.198-5.993l-.069.005.926-1.19H3c-1.543 0-2.461-1.648-1.762-2.945l.075-.129.086-.125.083-.103.098-.093L8.97.097c.42-.3.941.15.755.593l-.04.078-2.483 4h5.75c1.488 0 2.414 1.548 1.813 2.841l-.067.133-.079.13-.066.092-3.351 5.098.002-.115a3 3 0 0 1-3 3zm0-4.8a1.8 1.8 0 1 0 0 3.6 1.8 1.8 0 0 0 0-3.6zm-.685-8.785L2.215 6.149l-.024.032c-.436.59-.092 1.416.589 1.564l.11.018.11.006h6.884a.5.5 0 0 1 .442.734l-.047.073-1.174 1.51-.011-.004a3.008 3.008 0 0 1 1.826 1.592l-.001-.003L13.728 7.4l.064-.09c.408-.624-.003-1.456-.73-1.534l-.112-.006H6.304a.5.5 0 0 1-.462-.69l.037-.074 1.64-2.643z",
27
+ "id": "aoe\u5F62\u72B6\u7ED3\u5408"
28
+ }, null)])]);
29
+ };
30
+ const alarmClockSvg = () => {
31
+ return vue.createVNode("svg", {
32
+ "viewBox": "0 0 16 16",
33
+ "xmlns": "http://www.w3.org/2000/svg",
34
+ "height": "1em",
35
+ "width": "1em",
36
+ "preserveAspectRatio": "xMidYMid meet",
37
+ "focusable": "false"
38
+ }, [vue.createVNode("g", {
39
+ "id": "aah\u5DE5\u65F6",
40
+ "stroke-width": "1",
41
+ "fill-rule": "evenodd"
42
+ }, [vue.createVNode("path", {
43
+ "d": "M9.6.2v1.2H8.099v1.427a6.486 6.486 0 0 1 4.27 2.167l.663-.528-.332-.41.933-.756 1.321 1.632-.932.755-.235-.289-.708.565A6.5 6.5 0 1 1 6.9 2.827V1.4H5.4V.2h4.2zM7.5 4a5.3 5.3 0 1 0 0 10.6A5.3 5.3 0 0 0 7.5 4zm.6 1.687v3.45l3.187.001v1.2H6.9v-4.65h1.2z",
44
+ "id": "aah\u5F62\u72B6\u7ED3\u5408"
45
+ }, null)])]);
46
+ };
47
+ const compressArrowsSvg = () => {
48
+ return vue.createVNode("svg", {
49
+ "viewBox": "0 0 16 16",
50
+ "xmlns": "http://www.w3.org/2000/svg",
51
+ "height": "1em",
52
+ "width": "1em",
53
+ "preserveAspectRatio": "xMidYMid meet",
54
+ "focusable": "false"
55
+ }, [vue.createVNode("g", {
56
+ "id": "ahsaction/compress-arrows",
57
+ "stroke-width": "1",
58
+ "fill-rule": "evenodd"
59
+ }, [vue.createVNode("path", {
60
+ "d": "M4.069 5.246L.792 1.815a.6.6 0 1 1 .868-.83l3.204 3.356V2.92a.6.6 0 1 1 1.2 0V5.84l.002.007a.6.6 0 0 1-.601.6H2.543a.6.6 0 0 1 0-1.2h1.526zm6.175 1.01l-.007.002a.599.599 0 0 1-.6-.6V2.737a.6.6 0 1 1 1.2 0v1.526l3.43-3.277a.601.601 0 0 1 .83.868l-3.355 3.204h1.419a.6.6 0 0 1 0 1.2h-2.917zm1.586 4.802l3.276 3.431a.6.6 0 1 1-.868.829l-3.204-3.355v1.419a.6.6 0 1 1-1.2 0v-2.917l-.001-.007a.6.6 0 0 1 .6-.6h2.922a.6.6 0 1 1 0 1.2H11.83zm-6.185-.996a.6.6 0 0 1 .6.6v2.922a.6.6 0 1 1-1.2 0v-1.526l-3.43 3.277a.6.6 0 1 1-.83-.868l3.355-3.204H2.721a.6.6 0 1 1 0-1.2h2.917l.007-.001z",
61
+ "id": "ahs\u5F62\u72B6\u7ED3\u5408"
62
+ }, null)])]);
63
+ };
64
+ const laserPointerCanvas = vue.ref();
65
+ const ctx = vue.ref();
66
+ const isLaserEnabled = vue.ref(false);
67
+ const mouseX = vue.ref(0);
68
+ const mouseY = vue.ref(0);
69
+ let lastX = 0;
70
+ let lastY = 0;
71
+ const dotColor = "#eb4c4a";
72
+ const dotSize = 5;
73
+ const draw = () => {
74
+ ctx.value.globalCompositeOperation = "destination-out";
75
+ ctx.value.fillStyle = "rgba(0, 0, 0, 0.05)";
76
+ ctx.value.fillRect(0, 0, laserPointerCanvas.value.width, laserPointerCanvas.value.height);
77
+ ctx.value.globalCompositeOperation = "source-over";
78
+ if (isLaserEnabled.value) {
79
+ const dist = Math.sqrt((mouseX.value - lastX) ** 2 + (mouseY.value - lastY) ** 2);
80
+ const count = Math.max(Math.round(dist / 5), 1);
81
+ for (let i = 0; i < count; i++) {
82
+ const ratio = i / count;
83
+ const x = lastX + (mouseX.value - lastX) * ratio;
84
+ const y = lastY + (mouseY.value - lastY) * ratio;
85
+ ctx.value.beginPath();
86
+ ctx.value.arc(x, y, dotSize, 0, Math.PI * 2);
87
+ ctx.value.fillStyle = dotColor;
88
+ ctx.value.fill();
89
+ }
90
+ lastX = mouseX.value;
91
+ lastY = mouseY.value;
92
+ }
93
+ requestAnimationFrame(draw);
94
+ };
95
+ const laserPointerClick = () => {
96
+ isLaserEnabled.value = !isLaserEnabled.value;
97
+ };
98
+ const alarmClockClick = () => {
99
+ const fullscreen = document.getElementById("fullscreen");
100
+ const content = document.createElement("div");
101
+ content.id = "alarm-clock";
102
+ content.style.zIndex = "9999";
103
+ if (fullscreen) {
104
+ fullscreen.appendChild(content);
105
+ const app = vue.createApp(fullscreenToolbarAlarmClock.IBizAlarmClock);
106
+ app.mount(content);
107
+ }
108
+ };
109
+ const compressArrowsClick = () => {
110
+ const div = document.getElementById("fullscreen");
111
+ if (div) {
112
+ document.exitFullscreen();
113
+ if (div.parentElement) {
114
+ div.parentElement.removeChild(div);
115
+ }
116
+ }
117
+ };
118
+ const editorRef = vue.ref();
119
+ const handleFullScreenChange = () => {
120
+ if (document.fullscreenElement) {
121
+ } else {
122
+ const div = document.getElementById("fullscreen");
123
+ if (div) {
124
+ if (div.parentElement) {
125
+ div.parentElement.removeChild(div);
126
+ }
127
+ }
128
+ }
129
+ };
130
+ vue.onMounted(() => {
131
+ ctx.value = laserPointerCanvas.value.getContext("2d");
132
+ window.addEventListener("resize", () => {
133
+ laserPointerCanvas.value.width = window.innerWidth;
134
+ laserPointerCanvas.value.height = window.innerHeight;
135
+ });
136
+ laserPointerCanvas.value.addEventListener("mousemove", (event) => {
137
+ mouseX.value = event.clientX;
138
+ mouseY.value = event.clientY;
139
+ });
140
+ ctx.value.clearRect(0, 0, laserPointerCanvas.value.width, laserPointerCanvas.value.height);
141
+ ctx.value.fillStyle = "lightgray";
142
+ ctx.value.fillRect(0, 0, laserPointerCanvas.value.width, laserPointerCanvas.value.height);
143
+ draw();
144
+ window.dispatchEvent(new Event("resize"));
145
+ document.addEventListener("fullscreenchange", handleFullScreenChange);
146
+ });
147
+ vue.onBeforeUnmount(() => {
148
+ document.removeEventListener("fullscreenchange", handleFullScreenChange);
149
+ });
150
+ return {
151
+ ns,
152
+ laserPointerSvg,
153
+ alarmClockSvg,
154
+ compressArrowsSvg,
155
+ laserPointerClick,
156
+ alarmClockClick,
157
+ compressArrowsClick,
158
+ laserPointerCanvas,
159
+ isLaserEnabled,
160
+ editorRef
161
+ };
162
+ },
163
+ render() {
164
+ return vue.createVNode("div", {
165
+ "class": [this.ns.b()],
166
+ "ref": "editorRef"
167
+ }, [vue.createVNode("div", {
168
+ "class": [this.ns.e("wrapper")]
169
+ }, [vue.createVNode("div", {
170
+ "class": [this.ns.e("wrapper-content")]
171
+ }, [vue.createVNode(vue.resolveComponent("el-tooltip"), {
172
+ "effect": "dark",
173
+ "content": "\u6FC0\u5149\u7B14",
174
+ "placement": "top",
175
+ "offset": 10,
176
+ "teleported": true,
177
+ "append-to": this.editorRef,
178
+ "popper-class": this.ns.e("tooltip"),
179
+ "popper-options": {
180
+ modifiers: [{
181
+ name: "offset",
182
+ options: {
183
+ offset: [0, 20]
184
+ }
185
+ }]
186
+ }
187
+ }, {
188
+ default: () => [vue.createVNode("div", {
189
+ "class": this.ns.e("item"),
190
+ "onClick": () => this.laserPointerClick()
191
+ }, [this.laserPointerSvg()])]
192
+ }), vue.createVNode(vue.resolveComponent("el-tooltip"), {
193
+ "effect": "dark",
194
+ "content": "\u5173\u706F\u8BA1\u65F6",
195
+ "placement": "top",
196
+ "offset": 10,
197
+ "teleported": true,
198
+ "append-to": this.editorRef,
199
+ "popper-class": this.ns.e("tooltip"),
200
+ "popper-options": {
201
+ modifiers: [{
202
+ name: "offset",
203
+ options: {
204
+ offset: [0, 20]
205
+ }
206
+ }]
207
+ }
208
+ }, {
209
+ default: () => [vue.createVNode("div", {
210
+ "class": this.ns.e("item"),
211
+ "onClick": () => this.alarmClockClick()
212
+ }, [this.alarmClockSvg()])]
213
+ }), vue.createVNode("div", {
214
+ "class": this.ns.e("divider")
215
+ }, null), vue.createVNode(vue.resolveComponent("el-tooltip"), {
216
+ "effect": "dark",
217
+ "content": "\u9000\u51FA\u6F14\u793A\u6A21\u5F0F",
218
+ "placement": "top",
219
+ "offset": 10,
220
+ "teleported": true,
221
+ "append-to": this.editorRef,
222
+ "popper-class": this.ns.e("tooltip"),
223
+ "popper-options": {
224
+ modifiers: [{
225
+ name: "offset",
226
+ options: {
227
+ offset: [0, 20]
228
+ }
229
+ }]
230
+ }
231
+ }, {
232
+ default: () => [vue.createVNode("div", {
233
+ "class": this.ns.e("item"),
234
+ "onClick": () => this.compressArrowsClick()
235
+ }, [this.compressArrowsSvg()])]
236
+ })])]), vue.createVNode("div", {
237
+ "class": this.ns.e("canvas")
238
+ }, [vue.createVNode("canvas", {
239
+ "ref": "laserPointerCanvas",
240
+ "style": "background-color: transparent;",
241
+ "class": this.isLaserEnabled ? "cursor" : "nocursor"
242
+ }, null)])]);
243
+ }
244
+ });
245
+
246
+ exports.IBizFullscreenToolbar = IBizFullscreenToolbar;
@@ -0,0 +1 @@
1
+ .ibiz-fullscreen-toolbar{position:fixed;bottom:28px;left:0;display:flex;flex-flow:row nowrap;place-content:center center;align-items:center;width:100%;height:30px}.ibiz-fullscreen-toolbar__wrapper{z-index:101;display:flex;flex-flow:row nowrap;place-content:center center;align-items:center;width:100%;height:inherit}.ibiz-fullscreen-toolbar__wrapper:hover .ibiz-fullscreen-toolbar__wrapper-content{display:flex}.ibiz-fullscreen-toolbar__wrapper-content{z-index:101;display:none;flex-flow:row nowrap;place-content:center center;align-items:center;width:169px;height:56px;padding:12px 16px;background-color:#333;border-radius:6px}.ibiz-fullscreen-toolbar__item{display:flex;flex-flow:row nowrap;place-content:center center;align-items:center;width:32px;height:32px;padding:8px;margin-right:8px;cursor:pointer;border-radius:4px;fill:#fff}.ibiz-fullscreen-toolbar__item:hover{background-color:#5c5c5c;fill:#6698ff}.ibiz-fullscreen-toolbar__divider{position:relative;box-sizing:border-box;display:inline-block;height:1rem;padding:0;margin:0;margin:0 16px;font-size:.875rem;line-height:1.5715;color:#333;vertical-align:middle;list-style:none;border-top:0;border-left:1px solid #666}.ibiz-fullscreen-toolbar__canvas{z-index:100}.ibiz-fullscreen-toolbar__canvas>.cursor{cursor:none!important}.ibiz-fullscreen-toolbar__canvas>.nocursor{display:none!important}.ibiz-fullscreen-toolbar__canvas>canvas{position:fixed;top:0;left:0;z-index:-1;width:100vw;height:100vh;background:0 0}.ibiz-fullscreen-toolbar__tooltip .el-popper__arrow{display:block}
@@ -27,6 +27,7 @@ var customTheme = require('./custom-theme/custom-theme.cjs');
27
27
  var carouselCard = require('./carousel-card/carousel-card.cjs');
28
28
  var emojiSelect = require('./emoji-select/emoji-select.cjs');
29
29
  var quickEdit = require('./quick-edit/quick-edit.cjs');
30
+ var fullscreenToolbar = require('./fullscreen-toolbar/fullscreen-toolbar.cjs');
30
31
 
31
32
  "use strict";
32
33
  const IBizCommonComponents = {
@@ -67,6 +68,7 @@ const IBizCommonComponents = {
67
68
  v.component(coopAlert.IBizCoopAlert.name, coopAlert.IBizCoopAlert);
68
69
  v.component(customTheme.CustomTheme.name, customTheme.CustomTheme);
69
70
  v.component(carouselCard.IBizCarouselCard.name, carouselCard.IBizCarouselCard);
71
+ v.component(fullscreenToolbar.IBizFullscreenToolbar.name, fullscreenToolbar.IBizFullscreenToolbar);
70
72
  }
71
73
  };
72
74
 
@@ -87,7 +87,7 @@ const IBizPagination = /* @__PURE__ */ vue.defineComponent({
87
87
  "onClick": this.pageRefresh
88
88
  }, {
89
89
  default: () => [vue.createVNode("ion-icon", {
90
- "name": "refresh"
90
+ "src": "./assets/images/svg/refresh.svg"
91
91
  }, null)]
92
92
  })]), ramda.isNil(this.totalPages) || this.calcTotalPages === this.totalPages ? vue.createVNode("span", null, [ibiz.i18n.t("component.pagination.display"), vue.createTextVNode("\xA0"), this.start, vue.createTextVNode("\xA0-\xA0"), this.end, vue.createTextVNode("\xA0"), ibiz.i18n.t("component.pagination.piece"), vue.createTextVNode("\uFF0C")]) : null, vue.createVNode("span", null, [ibiz.i18n.t("component.pagination.total"), vue.createTextVNode("\xA0"), this.total, vue.createTextVNode("\xA0"), ibiz.i18n.t("component.pagination.pieceData")])]
93
93
  })]);
@@ -131,7 +131,7 @@ const CustomDashboardContainer = /* @__PURE__ */ vue.defineComponent({
131
131
  var _a, _b;
132
132
  return vue.createVNode("div", {
133
133
  "class": [this.ns.b()]
134
- }, [vue.createVNode("div", {
134
+ }, [this.customC.showDesignBtn ? vue.createVNode("div", {
135
135
  "class": this.ns.b("build-btn")
136
136
  }, [this.showTypeDir ? vue.createVNode("div", null, [vue.createVNode(vue.resolveComponent("el-button"), {
137
137
  "class": this.ns.b("deisgn-btn"),
@@ -155,7 +155,7 @@ const CustomDashboardContainer = /* @__PURE__ */ vue.defineComponent({
155
155
  default: () => [vue.createVNode("ion-icon", {
156
156
  "name": "chevron-back-outline"
157
157
  }, null)]
158
- })]), vue.createVNode(vue.resolveComponent("el-drawer"), {
158
+ })]) : null, vue.createVNode(vue.resolveComponent("el-drawer"), {
159
159
  "modelValue": this.isShowDesign,
160
160
  "onUpdate:modelValue": ($event) => this.isShowDesign = $event,
161
161
  "with-header": false,
@@ -119,7 +119,7 @@ const DashboardDesign = /* @__PURE__ */ vue.defineComponent({
119
119
  type: "app",
120
120
  dynamodelFlag: 1,
121
121
  portletId: portlet.psappportletid,
122
- portletCodeName: portlet.psappportletid.split(".").pop().toLowerCase(),
122
+ portletCodeName: portlet.codename,
123
123
  portletName: portlet.psappportletname,
124
124
  groupCodeName: portlet.groupcodename || "Ungroup",
125
125
  groupName: portlet.groupname || "\u672A\u5206\u7C7B",
@@ -308,6 +308,12 @@ const DashboardDesign = /* @__PURE__ */ vue.defineComponent({
308
308
  ...child
309
309
  };
310
310
  if (child.dynamodelFlag) {
311
+ const orignData = c.dynaPortletMap.get(child.portletId);
312
+ if (orignData) {
313
+ Object.assign(tempItemModel, {
314
+ controlmodeldigest: orignData.controlmodeldigest
315
+ });
316
+ }
311
317
  Object.assign(tempItemModel, {
312
318
  portletModel: tempModelDatas[0]
313
319
  });
@@ -63,8 +63,9 @@ const IBizFormItemContainer = /* @__PURE__ */ vue.defineComponent({
63
63
  const classList = [ns.e("label"), ...props.labelClass || []];
64
64
  if (props.enableInputTip) {
65
65
  return vue.createVNode(vue.resolveComponent("el-tooltip"), {
66
+ "effect": "light",
67
+ "offset": 4,
66
68
  "popper-class": ns.e("popper"),
67
- "placement": props.labelPos.toLowerCase(),
68
69
  "ref": "tooltip"
69
70
  }, {
70
71
  default: () => {
@@ -79,7 +80,7 @@ const IBizFormItemContainer = /* @__PURE__ */ vue.defineComponent({
79
80
  "href": props.inputTipUrl,
80
81
  "target": "_blank"
81
82
  }, [ibiz.i18n.t("component.formItemContainer.more")]), props.inputTipClosable && vue.createVNode("ion-icon", {
82
- "name": "close-outline",
83
+ "name": "close-circle",
83
84
  "onClick": hiddenTooltip
84
85
  }, null)]);
85
86
  }
@@ -1 +1 @@
1
- .ibiz-form-item-container{--ibiz-form-item-container-label-width:130px;--ibiz-form-item-container-line-height:var(--ibiz-height-control-default);--ibiz-form-item-container-require-mark-color:var(--ibiz-color-danger);--ibiz-form-item-container-label-left-padding:calc(var(--ibiz-spacing-base-tight) / 2) var(--ibiz-spacing-base-tight) calc(var(--ibiz-spacing-base-tight) / 2) 0;--ibiz-form-item-container-label-right-padding:calc(var(--ibiz-spacing-base-tight) / 2) 0 calc(var(--ibiz-spacing-base-tight) / 2) var(--ibiz-spacing-base-tight);--ibiz-form-item-container-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-extra-tight) var(--ibiz-spacing-tight) var(--ibiz-spacing-extra-tight);--ibiz-form-item-container-font-size:var(--ibiz-font-size-regular);--ibiz-form-item-container-label-color:var(--ibiz-color-text-1);--ibiz-form-item-container-error-font-size:var(--ibiz-font-size-small);--ibiz-form-item-container-error-color:var(--ibiz-color-danger);width:100%;height:100%;padding:var(--ibiz-form-item-container-padding)}.ibiz-form-item-container__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-shrink:0;font-size:var(--ibiz-form-item-container-font-size);color:var(--ibiz-form-item-container-label-color)}.ibiz-form-item-container__label--tooltip{max-width:150px}.ibiz-form-item-container__label--tooltip:has(ion-icon){padding-right:var(--ibiz-spacing-base-tight)}.ibiz-form-item-container__label--tooltip a{padding:0 var(--ibiz-spacing-extra-tight);color:var(--ibiz-color-link)}.ibiz-form-item-container__label--tooltip ion-icon{position:absolute;font-size:var(--ibiz-width-icon-large)}.ibiz-form-item-container__popper .el-popper__arrow{display:inherit}.ibiz-form-item-container--left,.ibiz-form-item-container--right{display:flex;min-height:var(--ibiz-form-item-container-line-height)}.ibiz-form-item-container--left .ibiz-form-item-container__label,.ibiz-form-item-container--right .ibiz-form-item-container__label{width:var(--ibiz-form-item-container-label-width)}.ibiz-form-item-container--bottom,.ibiz-form-item-container--top{display:flex;flex-flow:column nowrap}.ibiz-form-item-container--top .ibiz-form-item-container__label{margin-bottom:var(--ibiz-spacing-extra-tight)}.ibiz-form-item-container--bottom .ibiz-form-item-container__label{margin-top:var(--ibiz-spacing-extra-tight)}.ibiz-form-item-container--left .ibiz-form-item-container__label{padding:var(--ibiz-form-item-container-label-left-padding);text-align:right}.ibiz-form-item-container--right .ibiz-form-item-container__label{padding:var(--ibiz-form-item-container-label-right-padding);text-align:left}.ibiz-form-item-container.is-required .ibiz-form-item-container__label::before{display:inline-block;margin-right:4px;font-family:SimSun;line-height:1;color:var(--ibiz-form-item-container-require-mark-color);content:"*"}.ibiz-form-item-container__content{display:flex;flex-flow:column nowrap;position:relative;flex-grow:1}.ibiz-form-item-container__content--label-left,.ibiz-form-item-container__content--label-none,.ibiz-form-item-container__content--label-right{height:100%}.ibiz-form-item-container__editor{position:relative;flex-grow:1;height:100%}.ibiz-form-item-container__error{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;position:absolute;top:100%;width:100%;font-size:var(--ibiz-form-item-container-error-font-size);line-height:calc(var(--ibiz-form-item-container-error-font-size) + 2px);color:var(--ibiz-form-item-container-error-color);word-wrap:break-word}.ibiz-form-item-container.is-error .el-input__wrapper{box-shadow:0 0 0 1px var(--ibiz-form-item-container-error-color) inset}
1
+ .ibiz-form-item-container{--ibiz-form-item-container-label-width:130px;--ibiz-form-item-container-line-height:var(--ibiz-height-control-default);--ibiz-form-item-container-require-mark-color:var(--ibiz-color-danger);--ibiz-form-item-container-label-left-padding:calc(var(--ibiz-spacing-base-tight) / 2) var(--ibiz-spacing-base-tight) calc(var(--ibiz-spacing-base-tight) / 2) 0;--ibiz-form-item-container-label-right-padding:calc(var(--ibiz-spacing-base-tight) / 2) 0 calc(var(--ibiz-spacing-base-tight) / 2) var(--ibiz-spacing-base-tight);--ibiz-form-item-container-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-extra-tight) var(--ibiz-spacing-tight) var(--ibiz-spacing-extra-tight);--ibiz-form-item-container-font-size:var(--ibiz-font-size-regular);--ibiz-form-item-container-label-color:var(--ibiz-color-text-1);--ibiz-form-item-container-error-font-size:var(--ibiz-font-size-small);--ibiz-form-item-container-error-color:var(--ibiz-color-danger);width:100%;height:100%;padding:var(--ibiz-form-item-container-padding)}.ibiz-form-item-container__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-shrink:0;font-size:var(--ibiz-form-item-container-font-size);color:var(--ibiz-form-item-container-label-color)}.ibiz-form-item-container__label--tooltip{max-width:150px}.ibiz-form-item-container__label--tooltip:has(ion-icon){padding-right:var(--ibiz-width-icon-large)}.ibiz-form-item-container__label--tooltip a{padding:0 var(--ibiz-spacing-extra-tight);color:var(--ibiz-color-link)}.ibiz-form-item-container__label--tooltip ion-icon{position:absolute;font-size:var(--ibiz-width-icon-large);color:var(--ibiz-color-fill-2)}.ibiz-form-item-container__popper.el-popper.is-light{padding:0 var(--ibiz-spacing-extra-tight);border:1px solid var(--ibiz-color-text-0);border-radius:0}.ibiz-form-item-container--left,.ibiz-form-item-container--right{display:flex;min-height:var(--ibiz-form-item-container-line-height)}.ibiz-form-item-container--left .ibiz-form-item-container__label,.ibiz-form-item-container--right .ibiz-form-item-container__label{width:var(--ibiz-form-item-container-label-width)}.ibiz-form-item-container--bottom,.ibiz-form-item-container--top{display:flex;flex-flow:column nowrap}.ibiz-form-item-container--top .ibiz-form-item-container__label{margin-bottom:var(--ibiz-spacing-extra-tight)}.ibiz-form-item-container--bottom .ibiz-form-item-container__label{margin-top:var(--ibiz-spacing-extra-tight)}.ibiz-form-item-container--left .ibiz-form-item-container__label{padding:var(--ibiz-form-item-container-label-left-padding);text-align:right}.ibiz-form-item-container--right .ibiz-form-item-container__label{padding:var(--ibiz-form-item-container-label-right-padding);text-align:left}.ibiz-form-item-container.is-required .ibiz-form-item-container__label::before{display:inline-block;margin-right:4px;font-family:SimSun;line-height:1;color:var(--ibiz-form-item-container-require-mark-color);content:"*"}.ibiz-form-item-container__content{display:flex;flex-flow:column nowrap;position:relative;flex-grow:1}.ibiz-form-item-container__content--label-left,.ibiz-form-item-container__content--label-none,.ibiz-form-item-container__content--label-right{height:100%}.ibiz-form-item-container__editor{position:relative;flex-grow:1;height:100%}.ibiz-form-item-container__error{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;position:absolute;top:100%;width:100%;font-size:var(--ibiz-form-item-container-error-font-size);line-height:calc(var(--ibiz-form-item-container-error-font-size) + 2px);color:var(--ibiz-form-item-container-error-color);word-wrap:break-word}.ibiz-form-item-container.is-error .el-input__wrapper{box-shadow:0 0 0 1px var(--ibiz-form-item-container-error-color) inset}
@@ -35,7 +35,7 @@ function renderColumn(c, model, renderColumns, index) {
35
35
  } = model;
36
36
  const columnC = c.columns[columnName];
37
37
  const columnState = c.state.columnStates.find((item) => item.key === columnName);
38
- const widthFlexGrow = columnC.isAdaptiveColumn || !c.hasAdaptiveColumn && index === renderColumns.length - 1;
38
+ const widthFlexGrow = columnC.isAdaptiveColumn || index === renderColumns.length - 1;
39
39
  const widthName = widthFlexGrow ? "min-width" : "width";
40
40
  return vue.createVNode(vue.resolveComponent("el-table-column"), vue.mergeProps({
41
41
  "label": model.caption,
@@ -128,15 +128,24 @@ const IBizSpan = /* @__PURE__ */ vue.defineComponent({
128
128
  render() {
129
129
  let content = null;
130
130
  if (this.c.codeList) {
131
- content = this.items.length > 0 && vue.createVNode(vue.resolveComponent("iBizCodeList"), {
132
- "class": this.ns.e("code-list"),
133
- "codeListItems": this.items,
134
- "codeList": this.c.codeList,
135
- "value": this.value,
136
- "valueFormat": this.valueFormat,
137
- "unitName": this.unitName,
138
- "convertToCodeItemText": this.c.convertToCodeItemText
139
- }, null);
131
+ if (this.c.codeList.thresholdGroup) {
132
+ content = this.items.length > 0 && vue.createVNode(vue.resolveComponent("iBizCodeList"), {
133
+ "class": this.ns.e("code-list"),
134
+ "codeListItems": this.items,
135
+ "codeList": this.c.codeList,
136
+ "value": this.value,
137
+ "valueFormat": this.valueFormat,
138
+ "unitName": this.unitName,
139
+ "convertToCodeItemText": this.c.convertToCodeItemText
140
+ }, null);
141
+ } else {
142
+ content = this.items.length > 0 && vue.createVNode(vue.resolveComponent("iBizCodeList"), {
143
+ "class": this.ns.e("code-list"),
144
+ "codeListItems": this.items,
145
+ "codeList": this.c.codeList,
146
+ "value": this.text
147
+ }, null);
148
+ }
140
149
  } else if (this.text) {
141
150
  content = this.text;
142
151
  } else {
@@ -167,7 +167,7 @@ const IBizInputNumber = /* @__PURE__ */ vue.defineComponent({
167
167
  "precision": this.c.precision,
168
168
  "disabled": this.disabled,
169
169
  "controls": false,
170
- "onChange": this.handleChange,
170
+ "onChange": (val) => this.handleChange(val, "blur"),
171
171
  "onInput": (value) => this.handleChange(value, "input"),
172
172
  "onFocus": this.onFocus,
173
173
  "onBlur": this.onBlur,
@@ -33,13 +33,20 @@ const IBizImageUpload = /* @__PURE__ */ vue.defineComponent({
33
33
  emit("change", value);
34
34
  useInValueChange();
35
35
  }, c);
36
- const dialogImageUrl = vue.ref("");
36
+ const dialogImageUrl = vue.ref([]);
37
+ const dialogImageUrlIndex = vue.ref(0);
37
38
  const dialogVisible = vue.ref(false);
38
39
  const onDialogVisibleChange = (value) => {
39
40
  dialogVisible.value = value;
40
41
  };
41
42
  const onPreview = (file) => {
42
- dialogImageUrl.value = file.url;
43
+ dialogImageUrl.value = [];
44
+ files.value.forEach((i) => {
45
+ if (i.url) {
46
+ dialogImageUrl.value.push(i.url);
47
+ }
48
+ });
49
+ dialogImageUrlIndex.value = files.value.findIndex((item) => item.url === file.url);
43
50
  dialogVisible.value = true;
44
51
  };
45
52
  const noUploadIcon = vue.computed(() => {
@@ -72,7 +79,8 @@ const IBizImageUpload = /* @__PURE__ */ vue.defineComponent({
72
79
  onDialogVisibleChange,
73
80
  onPreview,
74
81
  componentRef,
75
- showFormDefaultContent
82
+ showFormDefaultContent,
83
+ dialogImageUrlIndex
76
84
  };
77
85
  },
78
86
  render() {
@@ -124,11 +132,12 @@ const IBizImageUpload = /* @__PURE__ */ vue.defineComponent({
124
132
  }, null)]
125
133
  }), this.dialogVisible ? vue.createVNode(vue.resolveComponent("el-image-viewer"), vue.mergeProps({
126
134
  "onClose": () => this.onDialogVisibleChange(false),
127
- "url-list": [this.dialogImageUrl],
135
+ "url-list": this.dialogImageUrl,
128
136
  "hide-on-click-modal": true,
129
137
  "close-on-press-escape": true,
130
138
  "teleported": true,
131
- "z-index": 9999
139
+ "z-index": 9999,
140
+ "initial-index": this.dialogImageUrlIndex
132
141
  }, this.$attrs), null) : null]);
133
142
  }
134
143
  });
package/lib/index.cjs CHANGED
@@ -126,6 +126,7 @@ var usePagination = require('./util/pagination/use-pagination.cjs');
126
126
  var noticeUtil = require('./util/notice-util/notice-util.cjs');
127
127
  var renderUtil = require('./util/render-util/render-util.cjs');
128
128
  var appUtil = require('./util/app-util/app-util.cjs');
129
+ var fullscreenUtil = require('./util/fullscreen/fullscreen-util.cjs');
129
130
  var wangEditorUtil = require('./util/wang-editor-util/wang-editor-util.cjs');
130
131
  var authGuard = require('./web-app/guard/auth-guard/auth-guard.cjs');
131
132
  var main = require('./web-app/main.cjs');
@@ -259,6 +260,7 @@ exports.usePagination = usePagination.usePagination;
259
260
  exports.NoticeUtil = noticeUtil.NoticeUtil;
260
261
  exports.RenderUtil = renderUtil.RenderUtil;
261
262
  exports.AppUtil = appUtil.AppUtil;
263
+ exports.FullscreenUtil = fullscreenUtil.FullscreenUtil;
262
264
  exports.parseHtml = wangEditorUtil.parseHtml;
263
265
  exports.AuthGuard = authGuard.AuthGuard;
264
266
  exports.runApp = main.runApp;