@ibiz-template/vue3-components 0.7.41-alpha.5 → 0.7.41-alpha.7
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.
- package/dist/ibiz-markdown-editor-V31Pwvs_.js +1 -0
- package/dist/index-cbi1NJAY.js +4 -0
- package/dist/index.min.css +1 -1
- package/dist/index.system.min.js +1 -1
- package/dist/wang-editor-ELTZ-byh.js +1 -0
- package/dist/{xlsx-util-GVd_ca5q.js → xlsx-util--EbSIMDJ.js} +1 -1
- package/es/common/data-import2/data-import2.mjs +3 -2
- package/es/common/editor-empty-text/editor-empty-text.css +1 -0
- package/es/common/editor-empty-text/editor-empty-text.d.ts +25 -0
- package/es/common/editor-empty-text/editor-empty-text.mjs +31 -0
- package/es/common/index.mjs +2 -0
- package/es/control/drtab/drtab-control.util.mjs +1 -1
- package/es/control/tree/el-tree-util.d.ts +11 -0
- package/es/control/tree/el-tree-util.mjs +35 -1
- package/es/control/tree/index.d.ts +1 -0
- package/es/control/tree/tree.css +1 -1
- package/es/control/tree/tree.d.ts +2 -2
- package/es/control/tree/tree.mjs +61 -5
- package/es/control/wizard-panel/wizard-panel.css +1 -1
- package/es/control/wizard-panel/wizard-panel.mjs +24 -8
- package/es/editor/autocomplete/ibiz-autocomplete/ibiz-autocomplete.mjs +4 -1
- package/es/editor/cascader/ibiz-cascader/ibiz-cascader.mjs +4 -1
- package/es/editor/code/monaco-editor/monaco-editor.mjs +2 -8
- package/es/editor/data-picker/ibiz-mpicker/ibiz-mpicker.mjs +4 -1
- package/es/editor/data-picker/ibiz-picker/ibiz-picker.mjs +4 -1
- package/es/editor/data-picker/ibiz-picker-dropdown/ibiz-picker-dropdown.mjs +4 -1
- package/es/editor/data-picker/ibiz-picker-link/ibiz-picker-link.mjs +5 -2
- package/es/editor/data-picker/ibiz-picker-select-view/ibiz-picker-select-view.mjs +4 -1
- package/es/editor/date-picker/ibiz-date-picker/ibiz-date-picker.mjs +4 -1
- package/es/editor/date-range/ibiz-date-range-picker/ibiz-date-range-picker.mjs +4 -1
- package/es/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.mjs +4 -1
- package/es/editor/dropdown-list/ibiz-emoji-picker/ibiz-emoji-picker.mjs +4 -1
- package/es/editor/html/wang-editor/wang-editor.mjs +5 -10
- package/es/editor/map-picker/ibiz-map-picker/ibiz-map-picker.mjs +4 -1
- package/es/editor/markdown/ibiz-markdown-editor/ibiz-markdown-editor.mjs +2 -2
- package/es/editor/number-range/ibiz-number-range-picker/ibiz-number-range-picker.mjs +4 -1
- package/es/editor/span/span/span.mjs +4 -1
- package/es/editor/text-box/ibiz-input-number/ibiz-input-number.mjs +4 -1
- package/es/editor/text-box/input/input.mjs +6 -9
- package/es/editor/upload/use/use-iview-upload.mjs +3 -4
- package/es/locale/en/index.d.ts +1 -0
- package/es/locale/zh-CN/index.d.ts +1 -0
- package/es/panel-component/app-extend-menu/bottom-side-menu/bottom-side-menu.css +1 -1
- package/es/panel-component/app-extend-menu/extend-menu-base/common-extend-menu/common-extend-menu.d.ts +1 -0
- package/es/panel-component/app-extend-menu/extend-menu-base/common-extend-menu/common-extend-menu.mjs +25 -4
- package/es/panel-component/app-extend-menu/extend-menu-base/extend-button-menu/extend-button-menu.css +1 -0
- package/es/panel-component/app-extend-menu/extend-menu-base/extend-button-menu/extend-button-menu.d.ts +2030 -0
- package/es/panel-component/app-extend-menu/extend-menu-base/extend-button-menu/extend-button-menu.mjs +223 -0
- package/es/panel-component/app-extend-menu/extend-menu-base/extend-menu-base.util.d.ts +166 -0
- package/es/panel-component/app-extend-menu/extend-menu-base/extend-menu-base.util.mjs +339 -0
- package/es/panel-component/app-extend-menu/left-side-menu/left-side-menu.css +1 -1
- package/es/panel-component/app-extend-menu/right-side-menu/right-side-menu.css +1 -1
- package/es/panel-component/app-extend-menu/top-side-menu/top-side-menu.css +1 -1
- package/es/util/app-util/app-util.mjs +2 -8
- package/es/util/fullscreen/fullscreen-util.mjs +1 -1
- package/es/util/notification-util/upload-manager/upload-manager.mjs +1 -5
- package/es/web-app/util/unauthorized-handler/unauthorized-handler.mjs +1 -1
- package/lib/common/data-import2/data-import2.cjs +2 -1
- package/lib/common/editor-empty-text/editor-empty-text.cjs +33 -0
- package/lib/common/editor-empty-text/editor-empty-text.css +1 -0
- package/lib/common/index.cjs +2 -0
- package/lib/control/drtab/drtab-control.util.cjs +1 -1
- package/lib/control/tree/el-tree-util.cjs +35 -0
- package/lib/control/tree/tree.cjs +59 -3
- package/lib/control/tree/tree.css +1 -1
- package/lib/control/wizard-panel/wizard-panel.cjs +23 -7
- package/lib/control/wizard-panel/wizard-panel.css +1 -1
- package/lib/editor/autocomplete/ibiz-autocomplete/ibiz-autocomplete.cjs +4 -1
- package/lib/editor/cascader/ibiz-cascader/ibiz-cascader.cjs +4 -1
- package/lib/editor/code/monaco-editor/monaco-editor.cjs +1 -7
- package/lib/editor/data-picker/ibiz-mpicker/ibiz-mpicker.cjs +4 -1
- package/lib/editor/data-picker/ibiz-picker/ibiz-picker.cjs +4 -1
- package/lib/editor/data-picker/ibiz-picker-dropdown/ibiz-picker-dropdown.cjs +4 -1
- package/lib/editor/data-picker/ibiz-picker-link/ibiz-picker-link.cjs +4 -1
- package/lib/editor/data-picker/ibiz-picker-select-view/ibiz-picker-select-view.cjs +4 -1
- package/lib/editor/date-picker/ibiz-date-picker/ibiz-date-picker.cjs +4 -1
- package/lib/editor/date-range/ibiz-date-range-picker/ibiz-date-range-picker.cjs +4 -1
- package/lib/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.cjs +4 -1
- package/lib/editor/dropdown-list/ibiz-emoji-picker/ibiz-emoji-picker.cjs +4 -1
- package/lib/editor/html/wang-editor/wang-editor.cjs +4 -9
- package/lib/editor/map-picker/ibiz-map-picker/ibiz-map-picker.cjs +4 -1
- package/lib/editor/markdown/ibiz-markdown-editor/ibiz-markdown-editor.cjs +2 -2
- package/lib/editor/number-range/ibiz-number-range-picker/ibiz-number-range-picker.cjs +4 -1
- package/lib/editor/span/span/span.cjs +4 -1
- package/lib/editor/text-box/ibiz-input-number/ibiz-input-number.cjs +4 -1
- package/lib/editor/text-box/input/input.cjs +5 -8
- package/lib/editor/upload/use/use-iview-upload.cjs +2 -3
- package/lib/panel-component/app-extend-menu/bottom-side-menu/bottom-side-menu.css +1 -1
- package/lib/panel-component/app-extend-menu/extend-menu-base/common-extend-menu/common-extend-menu.cjs +24 -3
- package/lib/panel-component/app-extend-menu/extend-menu-base/extend-button-menu/extend-button-menu.cjs +225 -0
- package/lib/panel-component/app-extend-menu/extend-menu-base/extend-button-menu/extend-button-menu.css +1 -0
- package/lib/panel-component/app-extend-menu/extend-menu-base/extend-menu-base.util.cjs +344 -0
- package/lib/panel-component/app-extend-menu/left-side-menu/left-side-menu.css +1 -1
- package/lib/panel-component/app-extend-menu/right-side-menu/right-side-menu.css +1 -1
- package/lib/panel-component/app-extend-menu/top-side-menu/top-side-menu.css +1 -1
- package/lib/util/app-util/app-util.cjs +1 -7
- package/lib/util/fullscreen/fullscreen-util.cjs +1 -1
- package/lib/util/notification-util/upload-manager/upload-manager.cjs +1 -5
- package/lib/web-app/util/unauthorized-handler/unauthorized-handler.cjs +1 -1
- package/package.json +5 -5
- package/dist/ibiz-markdown-editor--ivCvp3a.js +0 -1
- package/dist/index-u5jvzY6s.js +0 -4
- package/dist/wang-editor--AXyy3P_.js +0 -1
- /package/es/node_modules/.pnpm/{@ibiz-template_core@0.7.41-alpha.2_axios@1.6.8_lodash-es@4.17.21_qs@6.11.2_qx-util@0.4.8_ramda@0.29.1 → @ibiz-template_core@0.7.41-alpha.7_axios@1.6.8_lodash-es@4.17.21_qs@6.11.2_qx-util@0.4.8_ramda@0.29.1}/node_modules/@ibiz-template/core/out/utils/namespace/namespace.mjs +0 -0
- /package/lib/node_modules/.pnpm/{@ibiz-template_core@0.7.41-alpha.2_axios@1.6.8_lodash-es@4.17.21_qs@6.11.2_qx-util@0.4.8_ramda@0.29.1 → @ibiz-template_core@0.7.41-alpha.7_axios@1.6.8_lodash-es@4.17.21_qs@6.11.2_qx-util@0.4.8_ramda@0.29.1}/node_modules/@ibiz-template/core/out/utils/namespace/namespace.cjs +0 -0
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
import { ref, h, onMounted, onUnmounted } from 'vue';
|
|
2
|
+
|
|
3
|
+
"use strict";
|
|
4
|
+
function useCascaderPopover(props, ns, menuAlign, renderCascaderContent) {
|
|
5
|
+
let hoverCount = 0;
|
|
6
|
+
let closeTimer = null;
|
|
7
|
+
const overlayInstances = /* @__PURE__ */ new Map();
|
|
8
|
+
const activeMenuIdStack = ref([]);
|
|
9
|
+
const rotatedArrowElements = /* @__PURE__ */ new Map();
|
|
10
|
+
const getOverlayNum = () => {
|
|
11
|
+
return overlayInstances.size;
|
|
12
|
+
};
|
|
13
|
+
const getPopoverPlacement = (level) => {
|
|
14
|
+
switch (props.position) {
|
|
15
|
+
case "TOP":
|
|
16
|
+
return level > 0 ? "right-start" : "bottom-start";
|
|
17
|
+
case "BOTTOM":
|
|
18
|
+
return level > 0 ? "right-end" : "top-start";
|
|
19
|
+
case "RIGHT":
|
|
20
|
+
return "left-start";
|
|
21
|
+
case "LEFT":
|
|
22
|
+
return "right-start";
|
|
23
|
+
default:
|
|
24
|
+
return void 0;
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
const clearCloseTimer = () => {
|
|
28
|
+
if (closeTimer) {
|
|
29
|
+
clearTimeout(closeTimer);
|
|
30
|
+
closeTimer = null;
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
const resetArrowRotation = (ns2, key) => {
|
|
34
|
+
const arrow = rotatedArrowElements.get(key);
|
|
35
|
+
if (!arrow)
|
|
36
|
+
return;
|
|
37
|
+
arrow.classList.remove(ns2.is("rotate-arrow", true));
|
|
38
|
+
rotatedArrowElements.delete(key);
|
|
39
|
+
};
|
|
40
|
+
const rotateArrowIcon = (el, ns2, key) => {
|
|
41
|
+
if (el) {
|
|
42
|
+
el.classList.add(ns2.is("rotate-arrow", true));
|
|
43
|
+
rotatedArrowElements.set(key, el);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
const closePopoverAtLevel = (key) => {
|
|
47
|
+
const overlay = overlayInstances.get(key);
|
|
48
|
+
if (overlay) {
|
|
49
|
+
overlay.dismiss();
|
|
50
|
+
overlayInstances.delete(key);
|
|
51
|
+
resetArrowRotation(ns, key);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
const closeSubsequentPopovers = (currentLevel) => {
|
|
55
|
+
let level = currentLevel;
|
|
56
|
+
while (overlayInstances.get(level + 1)) {
|
|
57
|
+
level++;
|
|
58
|
+
}
|
|
59
|
+
for (let i = level; i >= currentLevel; i--) {
|
|
60
|
+
closePopoverAtLevel(i);
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
const closeAllPopovers = () => {
|
|
64
|
+
for (const key of overlayInstances.keys()) {
|
|
65
|
+
closePopoverAtLevel(key);
|
|
66
|
+
}
|
|
67
|
+
overlayInstances.clear();
|
|
68
|
+
activeMenuIdStack.value = [];
|
|
69
|
+
hoverCount = 0;
|
|
70
|
+
};
|
|
71
|
+
const scheduleDelayedClose = () => {
|
|
72
|
+
clearCloseTimer();
|
|
73
|
+
closeTimer = setTimeout(() => {
|
|
74
|
+
if (hoverCount <= 0) {
|
|
75
|
+
closeAllPopovers();
|
|
76
|
+
}
|
|
77
|
+
}, 300);
|
|
78
|
+
};
|
|
79
|
+
const clearAllCascader = () => {
|
|
80
|
+
closeAllPopovers();
|
|
81
|
+
clearCloseTimer();
|
|
82
|
+
};
|
|
83
|
+
const handleMenuItemMouseEnter = (_menu, event) => {
|
|
84
|
+
if (activeMenuIdStack.value.includes(_menu.id))
|
|
85
|
+
return;
|
|
86
|
+
activeMenuIdStack.value.push(_menu.id);
|
|
87
|
+
closeSubsequentPopovers(_menu.level);
|
|
88
|
+
if (_menu.children) {
|
|
89
|
+
openCascaderPopover(_menu, event);
|
|
90
|
+
}
|
|
91
|
+
clearCloseTimer();
|
|
92
|
+
};
|
|
93
|
+
const handleMenuItemMouseLeave = (_menu) => {
|
|
94
|
+
const index = activeMenuIdStack.value.indexOf(_menu.id);
|
|
95
|
+
if (index !== -1) {
|
|
96
|
+
activeMenuIdStack.value.splice(index, 1);
|
|
97
|
+
}
|
|
98
|
+
scheduleDelayedClose();
|
|
99
|
+
};
|
|
100
|
+
const onPopoverMouseEnter = () => {
|
|
101
|
+
hoverCount++;
|
|
102
|
+
clearCloseTimer();
|
|
103
|
+
};
|
|
104
|
+
const onPopoverMouseLeave = (_menu, _event) => {
|
|
105
|
+
hoverCount = Math.max(0, hoverCount - 1);
|
|
106
|
+
scheduleDelayedClose();
|
|
107
|
+
};
|
|
108
|
+
const openCascaderPopover = (menu, evt, opts) => {
|
|
109
|
+
var _a;
|
|
110
|
+
const overlay = ibiz.overlay.createPopover(
|
|
111
|
+
() => h(renderCascaderContent(menu), {
|
|
112
|
+
onMouseenter: onPopoverMouseEnter,
|
|
113
|
+
onMouseleave: onPopoverMouseLeave
|
|
114
|
+
}),
|
|
115
|
+
void 0,
|
|
116
|
+
{
|
|
117
|
+
width: "auto",
|
|
118
|
+
height: "auto",
|
|
119
|
+
noArrow: true,
|
|
120
|
+
placement: getPopoverPlacement(menu.level),
|
|
121
|
+
offsetOpts: 10,
|
|
122
|
+
...opts,
|
|
123
|
+
modalClass: "".concat(ns.b("cascader-popover"), " ").concat(ns.is(
|
|
124
|
+
menuAlign.value,
|
|
125
|
+
true
|
|
126
|
+
), " ").concat((opts == null ? void 0 : opts.modalClass) || "")
|
|
127
|
+
}
|
|
128
|
+
);
|
|
129
|
+
overlayInstances.set(menu.level, overlay);
|
|
130
|
+
overlay == null ? void 0 : overlay.present(evt.currentTarget);
|
|
131
|
+
rotateArrowIcon(
|
|
132
|
+
(_a = evt.currentTarget) == null ? void 0 : _a.parentElement,
|
|
133
|
+
ns,
|
|
134
|
+
menu.level
|
|
135
|
+
);
|
|
136
|
+
};
|
|
137
|
+
return {
|
|
138
|
+
getOverlayNum,
|
|
139
|
+
openCascaderPopover,
|
|
140
|
+
clearAllCascader,
|
|
141
|
+
handleMenuItemMouseEnter,
|
|
142
|
+
handleMenuItemMouseLeave
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
function useBorderLayout(menuRef, ns, position, menuAlign, getOverlayNum, renderBorderContent) {
|
|
146
|
+
let overlay;
|
|
147
|
+
const getElementAbsolutePosition = (element) => {
|
|
148
|
+
let x = 0;
|
|
149
|
+
let y = 0;
|
|
150
|
+
let current = element;
|
|
151
|
+
while (current) {
|
|
152
|
+
x += current.offsetLeft;
|
|
153
|
+
y += current.offsetTop;
|
|
154
|
+
current = current.offsetParent;
|
|
155
|
+
}
|
|
156
|
+
return {
|
|
157
|
+
x,
|
|
158
|
+
y,
|
|
159
|
+
width: element.offsetWidth,
|
|
160
|
+
height: element.offsetHeight
|
|
161
|
+
};
|
|
162
|
+
};
|
|
163
|
+
const resolvePopoverPlacement = () => {
|
|
164
|
+
switch (position) {
|
|
165
|
+
case "TOP":
|
|
166
|
+
return "bottom";
|
|
167
|
+
case "BOTTOM":
|
|
168
|
+
return "top";
|
|
169
|
+
case "RIGHT":
|
|
170
|
+
return "left";
|
|
171
|
+
case "LEFT":
|
|
172
|
+
return "right";
|
|
173
|
+
default:
|
|
174
|
+
return void 0;
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
let popoverEl;
|
|
178
|
+
const closeBorderPopover = () => {
|
|
179
|
+
overlay == null ? void 0 : overlay.dismiss();
|
|
180
|
+
overlay = null;
|
|
181
|
+
document.removeEventListener("mousemove", handleMouseTrackOut);
|
|
182
|
+
popoverEl = void 0;
|
|
183
|
+
};
|
|
184
|
+
const handleMouseTrackOut = (e) => {
|
|
185
|
+
if (!popoverEl) {
|
|
186
|
+
popoverEl = document.querySelector(
|
|
187
|
+
".".concat(ns.b("border-popover"))
|
|
188
|
+
);
|
|
189
|
+
}
|
|
190
|
+
const pos = getElementAbsolutePosition(popoverEl);
|
|
191
|
+
const isInside = e.pageX >= pos.x && e.pageX <= pos.x + pos.width && e.pageY >= pos.y && e.pageY <= pos.y + pos.height;
|
|
192
|
+
if (!isInside && getOverlayNum() <= 0) {
|
|
193
|
+
closeBorderPopover();
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
const handlePlaceholderMouseEnter = async (evt) => {
|
|
197
|
+
var _a;
|
|
198
|
+
if (overlay)
|
|
199
|
+
return;
|
|
200
|
+
overlay = ibiz.overlay.createPopover(
|
|
201
|
+
() => h(renderBorderContent()),
|
|
202
|
+
void 0,
|
|
203
|
+
{
|
|
204
|
+
width: "auto",
|
|
205
|
+
height: "auto",
|
|
206
|
+
noArrow: true,
|
|
207
|
+
placement: resolvePopoverPlacement(),
|
|
208
|
+
offsetOpts: -1,
|
|
209
|
+
modalClass: "".concat(ns.b("border-popover"), " ").concat(ns.is(menuAlign.value, true))
|
|
210
|
+
}
|
|
211
|
+
);
|
|
212
|
+
const triggerEl = (_a = evt.currentTarget) == null ? void 0 : _a.querySelector(
|
|
213
|
+
".".concat(ns.be("placehold", "line"))
|
|
214
|
+
);
|
|
215
|
+
await (overlay == null ? void 0 : overlay.present(triggerEl));
|
|
216
|
+
setTimeout(() => {
|
|
217
|
+
document.addEventListener("mousemove", handleMouseTrackOut);
|
|
218
|
+
}, 200);
|
|
219
|
+
};
|
|
220
|
+
let placeholderEl = null;
|
|
221
|
+
let resizeObserver = null;
|
|
222
|
+
let frameLoopId = null;
|
|
223
|
+
const minWidth = 20;
|
|
224
|
+
const minHeight = 20;
|
|
225
|
+
const computeTop = (top, height) => {
|
|
226
|
+
return position === "BOTTOM" ? top + height - minHeight : top;
|
|
227
|
+
};
|
|
228
|
+
const computeLeft = (left, width) => {
|
|
229
|
+
return position === "RIGHT" ? left + width - minWidth : left;
|
|
230
|
+
};
|
|
231
|
+
const computeWidth = (width) => {
|
|
232
|
+
return ["RIGHT", "LEFT"].includes(position) ? minWidth : width;
|
|
233
|
+
};
|
|
234
|
+
const computeHeight = (height) => {
|
|
235
|
+
return ["TOP", "BOTTOM"].includes(position) ? minHeight : height;
|
|
236
|
+
};
|
|
237
|
+
function createFixedPlaceholder(el) {
|
|
238
|
+
const container = document.createElement("div");
|
|
239
|
+
container.classList.add(ns.b("placehold"));
|
|
240
|
+
container.classList.add(ns.is(position.toLowerCase(), !!position));
|
|
241
|
+
const line = document.createElement("div");
|
|
242
|
+
line.classList.add(ns.be("placehold", "line"));
|
|
243
|
+
const arrow = document.createElement("div");
|
|
244
|
+
arrow.classList.add(ns.be("placehold", "arrow"));
|
|
245
|
+
container.appendChild(line);
|
|
246
|
+
container.appendChild(arrow);
|
|
247
|
+
document.body.appendChild(container);
|
|
248
|
+
placeholderEl = container;
|
|
249
|
+
placeholderEl.addEventListener("mouseenter", handlePlaceholderMouseEnter);
|
|
250
|
+
arrow.innerHTML = '\n <svg xmlns="http://www.w3.org/2000/svg"\n viewBox="0 0 1024 1024"\n width="1em"\n height="1em"\n fill="currentColor">\n <path fill="currentColor"\n d="M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z">\n </path>\n </svg>\n ';
|
|
251
|
+
updatePlaceholderPosition(el);
|
|
252
|
+
}
|
|
253
|
+
function updatePlaceholderPosition(el) {
|
|
254
|
+
if (!placeholderEl)
|
|
255
|
+
return;
|
|
256
|
+
const rect = el.getBoundingClientRect();
|
|
257
|
+
placeholderEl.style.top = "".concat(computeTop(rect.top, rect.height), "px");
|
|
258
|
+
placeholderEl.style.left = "".concat(computeLeft(rect.left, rect.width), "px");
|
|
259
|
+
placeholderEl.style.width = "".concat(computeWidth(rect.width), "px");
|
|
260
|
+
placeholderEl.style.height = "".concat(computeHeight(rect.height), "px");
|
|
261
|
+
}
|
|
262
|
+
function startTracking() {
|
|
263
|
+
const el = menuRef.value;
|
|
264
|
+
if (!el)
|
|
265
|
+
return;
|
|
266
|
+
createFixedPlaceholder(el);
|
|
267
|
+
resizeObserver = new ResizeObserver(() => updatePlaceholderPosition(el));
|
|
268
|
+
resizeObserver.observe(el);
|
|
269
|
+
const updateLoop = () => {
|
|
270
|
+
updatePlaceholderPosition(el);
|
|
271
|
+
frameLoopId = requestAnimationFrame(updateLoop);
|
|
272
|
+
};
|
|
273
|
+
frameLoopId = requestAnimationFrame(updateLoop);
|
|
274
|
+
}
|
|
275
|
+
function stopTrackingAndDestroy() {
|
|
276
|
+
if (resizeObserver) {
|
|
277
|
+
const el = menuRef.value;
|
|
278
|
+
if (el)
|
|
279
|
+
resizeObserver.unobserve(el);
|
|
280
|
+
resizeObserver.disconnect();
|
|
281
|
+
resizeObserver = null;
|
|
282
|
+
}
|
|
283
|
+
if (frameLoopId !== null) {
|
|
284
|
+
cancelAnimationFrame(frameLoopId);
|
|
285
|
+
frameLoopId = null;
|
|
286
|
+
}
|
|
287
|
+
if (placeholderEl && placeholderEl.parentNode) {
|
|
288
|
+
placeholderEl.removeEventListener(
|
|
289
|
+
"mouseenter",
|
|
290
|
+
handlePlaceholderMouseEnter
|
|
291
|
+
);
|
|
292
|
+
placeholderEl.parentNode.removeChild(placeholderEl);
|
|
293
|
+
placeholderEl = null;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
onMounted(startTracking);
|
|
297
|
+
onUnmounted(stopTrackingAndDestroy);
|
|
298
|
+
return { closeBorderPopover };
|
|
299
|
+
}
|
|
300
|
+
function getMenus(items, _parentItem, level = 0) {
|
|
301
|
+
return items.map((item) => {
|
|
302
|
+
var _a;
|
|
303
|
+
const data = {
|
|
304
|
+
...item,
|
|
305
|
+
value: item.id,
|
|
306
|
+
label: item.caption,
|
|
307
|
+
parentId: _parentItem == null ? void 0 : _parentItem.id,
|
|
308
|
+
level
|
|
309
|
+
};
|
|
310
|
+
if ((_a = item.appMenuItems) == null ? void 0 : _a.length) {
|
|
311
|
+
data.children = getMenus(item.appMenuItems, item, level + 1);
|
|
312
|
+
}
|
|
313
|
+
return data;
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
function findMenuItem(_id, items) {
|
|
317
|
+
let temp;
|
|
318
|
+
if (items) {
|
|
319
|
+
items.some((item) => {
|
|
320
|
+
if (!item.id)
|
|
321
|
+
return true;
|
|
322
|
+
if (item.id === _id) {
|
|
323
|
+
temp = item;
|
|
324
|
+
return true;
|
|
325
|
+
}
|
|
326
|
+
if (item.appMenuItems && item.appMenuItems.length > 0) {
|
|
327
|
+
temp = findMenuItem(_id, item.appMenuItems);
|
|
328
|
+
if (!temp) {
|
|
329
|
+
return false;
|
|
330
|
+
}
|
|
331
|
+
return true;
|
|
332
|
+
}
|
|
333
|
+
return false;
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
return temp;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
export { findMenuItem, getMenus, useBorderLayout, useCascaderPopover };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.ibiz-left-side-menu{width:100%;height:100%}
|
|
1
|
+
.ibiz-left-side-menu{width:100%;height:100%}.ibiz-col--self-align>.ibiz-left-side-menu{width:100%;height:100%}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.ibiz-right-side-menu{width:100%;height:100%}
|
|
1
|
+
.ibiz-right-side-menu{width:100%;height:100%}.ibiz-col--self-align>.ibiz-right-side-menu{width:100%;height:100%}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.ibiz-top-side-menu{width:100%;height:100%}
|
|
1
|
+
.ibiz-top-side-menu{width:100%;height:100%}.ibiz-col--self-align>.ibiz-top-side-menu{width:100%;height:100%}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getDeACMode, calcDeCodeNameById, ConfigService, UIActionUtil, SysUIActionTag } from '@ibiz-template/runtime';
|
|
2
2
|
import { createUUID } from 'qx-util';
|
|
3
|
-
import {
|
|
3
|
+
import { IBizContext } from '@ibiz-template/core';
|
|
4
4
|
import { route2routePath, useUIStore } from '@ibiz-template/vue3-util';
|
|
5
5
|
import { calcAiToolbarItemsByAc } from '../ai-util/ai-util.mjs';
|
|
6
6
|
|
|
@@ -381,13 +381,7 @@ class AppUtil {
|
|
|
381
381
|
(options == null ? void 0 : options.params) || params,
|
|
382
382
|
{}
|
|
383
383
|
);
|
|
384
|
-
const headers =
|
|
385
|
-
const token = getAppCookie(CoreConst.TOKEN);
|
|
386
|
-
if (token) {
|
|
387
|
-
Object.assign(headers, {
|
|
388
|
-
["".concat(ibiz.env.tokenHeader, "Authorization")]: "".concat(ibiz.env.tokenPrefix, "Bearer ").concat(token)
|
|
389
|
-
});
|
|
390
|
-
}
|
|
384
|
+
const headers = ibiz.util.file.getUploadHeaders();
|
|
391
385
|
const formData = new FormData();
|
|
392
386
|
formData.append("file", file);
|
|
393
387
|
const res = await ibiz.net.axios({
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createApp } from 'vue';
|
|
2
2
|
import ElementPlus from 'element-plus';
|
|
3
|
-
import { defaultNamespace } from '../../node_modules/.pnpm/@ibiz-template_core@0.7.41-alpha.
|
|
3
|
+
import { defaultNamespace } from '../../node_modules/.pnpm/@ibiz-template_core@0.7.41-alpha.7_axios@1.6.8_lodash-es@4.17.21_qs@6.11.2_qx-util@0.4.8_ramda@0.29.1/node_modules/@ibiz-template/core/out/utils/namespace/namespace.mjs';
|
|
4
4
|
import { IBizFullscreenToolbar } from '../../common/fullscreen-toolbar/fullscreen-toolbar.mjs';
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { ref, computed, watch, onMounted, resolveComponent, createVNode, defineComponent } from 'vue';
|
|
2
2
|
import { useNamespace } from '@ibiz-template/vue3-util';
|
|
3
|
-
import { CoreConst, getAppCookie } from '@ibiz-template/core';
|
|
4
3
|
import { getFileSvgByType } from './file-type.mjs';
|
|
5
4
|
import './upload-manager.css';
|
|
6
5
|
|
|
@@ -55,10 +54,7 @@ const IBizUploadManager = /* @__PURE__ */ defineComponent({
|
|
|
55
54
|
const uploadFile = async (item) => {
|
|
56
55
|
const data = new FormData();
|
|
57
56
|
data.append("file", item.file);
|
|
58
|
-
const headers =
|
|
59
|
-
["".concat(ibiz.env.tokenHeader, "Authorization")]: "".concat(ibiz.env.tokenPrefix, "Bearer ").concat(getAppCookie(CoreConst.TOKEN)),
|
|
60
|
-
...props.params.headers
|
|
61
|
-
};
|
|
57
|
+
const headers = ibiz.util.file.getUploadHeaders();
|
|
62
58
|
const res = await ibiz.net.axios({
|
|
63
59
|
url: props.params.uploadUrl,
|
|
64
60
|
method: "post",
|
|
@@ -108,7 +108,7 @@ class UnauthorizedHandler {
|
|
|
108
108
|
if (error instanceof HttpError) {
|
|
109
109
|
if (error.status === 401) {
|
|
110
110
|
const search = qs.parse(window.location.search.replace("?", ""));
|
|
111
|
-
if (search.isAnonymous) {
|
|
111
|
+
if (search.isAnonymous || ibiz.env.enableAnonymous) {
|
|
112
112
|
ibiz.auth.anonymousLogin().then((bol) => {
|
|
113
113
|
if (bol) {
|
|
114
114
|
window.location.reload();
|
|
@@ -236,8 +236,9 @@ const DataImport2 = /* @__PURE__ */ vue.defineComponent({
|
|
|
236
236
|
}
|
|
237
237
|
columnMappingListQuery();
|
|
238
238
|
});
|
|
239
|
+
const uploadHeaders = ibiz.util.file.getUploadHeaders();
|
|
239
240
|
const headers = vue.ref({
|
|
240
|
-
|
|
241
|
+
...uploadHeaders
|
|
241
242
|
});
|
|
242
243
|
const UploadUrl = vue.computed(() => {
|
|
243
244
|
let uploadFileUrl;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var vue = require('vue');
|
|
4
|
+
var vue3Util = require('@ibiz-template/vue3-util');
|
|
5
|
+
require('./editor-empty-text.css');
|
|
6
|
+
|
|
7
|
+
"use strict";
|
|
8
|
+
const IBizEditorEmptyText = /* @__PURE__ */ vue.defineComponent({
|
|
9
|
+
name: "IBizEditorEmptyText",
|
|
10
|
+
props: {
|
|
11
|
+
showPlaceholder: {
|
|
12
|
+
type: Boolean,
|
|
13
|
+
default: false
|
|
14
|
+
},
|
|
15
|
+
placeHolder: {
|
|
16
|
+
type: String,
|
|
17
|
+
default: ""
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
setup() {
|
|
21
|
+
const ns = vue3Util.useNamespace("editor-empty-text");
|
|
22
|
+
return {
|
|
23
|
+
ns
|
|
24
|
+
};
|
|
25
|
+
},
|
|
26
|
+
render() {
|
|
27
|
+
return vue.createVNode("span", {
|
|
28
|
+
"class": [this.ns.b(), this.ns.is("placeholder", this.showPlaceholder)]
|
|
29
|
+
}, [this.showPlaceholder && this.placeHolder ? this.placeHolder : ibiz.config.common.emptyText]);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
exports.IBizEditorEmptyText = IBizEditorEmptyText;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.ibiz-editor-empty-text.is-placeholder{color:var(--ibiz-color-text-3);white-space:nowrap}
|
package/lib/common/index.cjs
CHANGED
|
@@ -36,10 +36,12 @@ var controlNavigation = require('./control-navigation/control-navigation.cjs');
|
|
|
36
36
|
var ganttSetting = require('./gantt-setting/gantt-setting.cjs');
|
|
37
37
|
var navSplit = require('./nav-split/nav-split.cjs');
|
|
38
38
|
var cropping = require('./cropping/cropping.cjs');
|
|
39
|
+
var editorEmptyText = require('./editor-empty-text/editor-empty-text.cjs');
|
|
39
40
|
|
|
40
41
|
"use strict";
|
|
41
42
|
const IBizCommonComponents = {
|
|
42
43
|
install: (v) => {
|
|
44
|
+
v.component(editorEmptyText.IBizEditorEmptyText.name, editorEmptyText.IBizEditorEmptyText);
|
|
43
45
|
v.component(cropping.IBizCropping.name, cropping.IBizCropping);
|
|
44
46
|
v.component(vue3Util.IBizControlBase.name, vue3Util.IBizControlBase);
|
|
45
47
|
v.component(quickEdit.IBizQuickEdit.name, quickEdit.IBizQuickEdit);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var vue = require('vue');
|
|
4
|
-
var namespace = require('../../node_modules/.pnpm/@ibiz-template_core@0.7.41-alpha.
|
|
4
|
+
var namespace = require('../../node_modules/.pnpm/@ibiz-template_core@0.7.41-alpha.7_axios@1.6.8_lodash-es@4.17.21_qs@6.11.2_qx-util@0.4.8_ramda@0.29.1/node_modules/@ibiz-template/core/out/utils/namespace/namespace.cjs');
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
function useAppDRTab(c, controlRef, counterData) {
|
|
@@ -172,6 +172,40 @@ function getNewNodeControlPanel(control) {
|
|
|
172
172
|
}
|
|
173
173
|
}
|
|
174
174
|
}
|
|
175
|
+
function useLoadMoreUtil(treeRef, c) {
|
|
176
|
+
const toLoadMoreNode = (parentId) => {
|
|
177
|
+
const _loadMoreNodeData = {
|
|
178
|
+
_id: "".concat(parentId, "_load_more"),
|
|
179
|
+
_text: ibiz.i18n.t("control.common.loadMore"),
|
|
180
|
+
_leaf: true,
|
|
181
|
+
_disableSelect: true,
|
|
182
|
+
_load_more: true
|
|
183
|
+
};
|
|
184
|
+
return _loadMoreNodeData;
|
|
185
|
+
};
|
|
186
|
+
const addLoadMoreNode = (parentId, parentNode) => {
|
|
187
|
+
if (!treeRef.value || !parentId || !parentNode) {
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
const _loadMoreNodeData = toLoadMoreNode(parentId);
|
|
191
|
+
if (treeRef.value.getNode(_loadMoreNodeData)) {
|
|
192
|
+
treeRef.value.remove(_loadMoreNodeData);
|
|
193
|
+
}
|
|
194
|
+
const infoItems = c.getLoadMoreInfoItems(parentId);
|
|
195
|
+
if (infoItems) {
|
|
196
|
+
const result = infoItems.some((infoItem) => {
|
|
197
|
+
return infoItem.curPage < infoItem.totalPage - 1;
|
|
198
|
+
});
|
|
199
|
+
if (result) {
|
|
200
|
+
treeRef.value.append(_loadMoreNodeData, parentNode);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
return {
|
|
205
|
+
toLoadMoreNode,
|
|
206
|
+
addLoadMoreNode
|
|
207
|
+
};
|
|
208
|
+
}
|
|
175
209
|
|
|
176
210
|
exports.findChildItems = findChildItems;
|
|
177
211
|
exports.findNodeData = findNodeData;
|
|
@@ -180,3 +214,4 @@ exports.getNewNodeControlPanel = getNewNodeControlPanel;
|
|
|
180
214
|
exports.getNodeControlPanel = getNodeControlPanel;
|
|
181
215
|
exports.useAppTreeBase = useAppTreeBase;
|
|
182
216
|
exports.useElTreeUtil = useElTreeUtil;
|
|
217
|
+
exports.useLoadMoreUtil = useLoadMoreUtil;
|
|
@@ -307,6 +307,9 @@ const TreeControl = /* @__PURE__ */ vue.defineComponent({
|
|
|
307
307
|
updateUI,
|
|
308
308
|
triggerNodeExpand
|
|
309
309
|
} = elTreeUtil.useElTreeUtil(treeRef, c);
|
|
310
|
+
const {
|
|
311
|
+
addLoadMoreNode
|
|
312
|
+
} = elTreeUtil.useLoadMoreUtil(treeRef, c);
|
|
310
313
|
const toElNodes = (nodes) => {
|
|
311
314
|
return nodes.map((node) => ({
|
|
312
315
|
_id: node._id,
|
|
@@ -325,6 +328,9 @@ const TreeControl = /* @__PURE__ */ vue.defineComponent({
|
|
|
325
328
|
const elNodes = toElNodes(children);
|
|
326
329
|
treeRef.value.updateKeyChildren(parentNode._id, elNodes);
|
|
327
330
|
updateUI();
|
|
331
|
+
vue.nextTick(() => {
|
|
332
|
+
addLoadMoreNode(parentNode._id, parentNode);
|
|
333
|
+
});
|
|
328
334
|
}
|
|
329
335
|
});
|
|
330
336
|
c.evt.on("onAfterNodeDrop", (event) => {
|
|
@@ -388,6 +394,10 @@ const TreeControl = /* @__PURE__ */ vue.defineComponent({
|
|
|
388
394
|
ibiz.log.debug("\u7ED9\u6811\u8FD4\u56DE\u503C", nodes);
|
|
389
395
|
callback(toElNodes(nodes));
|
|
390
396
|
updateUI();
|
|
397
|
+
vue.nextTick(() => {
|
|
398
|
+
var _a, _b, _c;
|
|
399
|
+
addLoadMoreNode(item.level === 0 ? (_b = (_a = c.state.rootNodes) == null ? void 0 : _a[0]) == null ? void 0 : _b._id : (_c = item.data) == null ? void 0 : _c._id, item);
|
|
400
|
+
});
|
|
391
401
|
};
|
|
392
402
|
let selectionWait = false;
|
|
393
403
|
c.evt.on("onLoadSuccess", () => {
|
|
@@ -635,12 +645,20 @@ const TreeControl = /* @__PURE__ */ vue.defineComponent({
|
|
|
635
645
|
debounceSearch();
|
|
636
646
|
};
|
|
637
647
|
const allowDrop = (draggingNode, dropNode, type) => {
|
|
648
|
+
var _a;
|
|
649
|
+
if ((_a = dropNode.data) == null ? void 0 : _a._load_more) {
|
|
650
|
+
return false;
|
|
651
|
+
}
|
|
638
652
|
const draggingNodeData = elTreeUtil.findNodeData(draggingNode.data._uuid, c);
|
|
639
653
|
const dropNodeData = elTreeUtil.findNodeData(dropNode.data._uuid, c);
|
|
640
654
|
const result = c.calcAllowDrop(draggingNodeData, dropNodeData, type);
|
|
641
655
|
return result;
|
|
642
656
|
};
|
|
643
657
|
const allowDrag = (draggingNode) => {
|
|
658
|
+
var _a;
|
|
659
|
+
if ((_a = draggingNode.data) == null ? void 0 : _a._load_more) {
|
|
660
|
+
return false;
|
|
661
|
+
}
|
|
644
662
|
const nodeData = elTreeUtil.findNodeData(draggingNode.data._uuid, c);
|
|
645
663
|
return c.calcAllowDrag(nodeData);
|
|
646
664
|
};
|
|
@@ -726,6 +744,28 @@ const TreeControl = /* @__PURE__ */ vue.defineComponent({
|
|
|
726
744
|
}
|
|
727
745
|
}, null)]);
|
|
728
746
|
};
|
|
747
|
+
const handleLoadMore = async (e, item) => {
|
|
748
|
+
var _a, _b;
|
|
749
|
+
e.stopPropagation();
|
|
750
|
+
if (!item) {
|
|
751
|
+
return;
|
|
752
|
+
}
|
|
753
|
+
if (item.level === 0) {
|
|
754
|
+
await c.loadNodes(void 0, true);
|
|
755
|
+
return;
|
|
756
|
+
}
|
|
757
|
+
const nodeData = elTreeUtil.findNodeData((_a = item.data) == null ? void 0 : _a._uuid, c);
|
|
758
|
+
if (!nodeData) {
|
|
759
|
+
return;
|
|
760
|
+
}
|
|
761
|
+
await c.loadNodes(nodeData, true);
|
|
762
|
+
const elNodes = toElNodes(nodeData._children || []);
|
|
763
|
+
(_b = treeRef.value) == null ? void 0 : _b.updateKeyChildren(nodeData._id, elNodes);
|
|
764
|
+
updateUI();
|
|
765
|
+
vue.nextTick(() => {
|
|
766
|
+
addLoadMoreNode(nodeData._id, nodeData);
|
|
767
|
+
});
|
|
768
|
+
};
|
|
729
769
|
return {
|
|
730
770
|
c,
|
|
731
771
|
ns,
|
|
@@ -754,7 +794,8 @@ const TreeControl = /* @__PURE__ */ vue.defineComponent({
|
|
|
754
794
|
handleDrop,
|
|
755
795
|
onNodeTextEditBlur,
|
|
756
796
|
renderNewNode,
|
|
757
|
-
handleEditKeyDown
|
|
797
|
+
handleEditKeyDown,
|
|
798
|
+
handleLoadMore
|
|
758
799
|
};
|
|
759
800
|
},
|
|
760
801
|
render() {
|
|
@@ -796,7 +837,13 @@ const TreeControl = /* @__PURE__ */ vue.defineComponent({
|
|
|
796
837
|
label: "_text",
|
|
797
838
|
children: "_children",
|
|
798
839
|
isLeaf: "_leaf",
|
|
799
|
-
disabled: "_disableSelect"
|
|
840
|
+
disabled: "_disableSelect",
|
|
841
|
+
class: (data) => {
|
|
842
|
+
if (data == null ? void 0 : data._load_more) {
|
|
843
|
+
return this.ns.is("load-more", true);
|
|
844
|
+
}
|
|
845
|
+
return "";
|
|
846
|
+
}
|
|
800
847
|
},
|
|
801
848
|
"lazy": true,
|
|
802
849
|
"load": this.loadData,
|
|
@@ -813,9 +860,18 @@ const TreeControl = /* @__PURE__ */ vue.defineComponent({
|
|
|
813
860
|
"onNodeDrop": this.handleDrop
|
|
814
861
|
}, this.$attrs), {
|
|
815
862
|
default: ({
|
|
816
|
-
data
|
|
863
|
+
data,
|
|
864
|
+
node
|
|
817
865
|
}) => {
|
|
818
866
|
var _a, _b;
|
|
867
|
+
if (data._load_more) {
|
|
868
|
+
return vue.createVNode("div", {
|
|
869
|
+
"class": this.ns.b("node"),
|
|
870
|
+
"onClick": (e) => {
|
|
871
|
+
this.handleLoadMore(e, node == null ? void 0 : node.parent);
|
|
872
|
+
}
|
|
873
|
+
}, [data._text]);
|
|
874
|
+
}
|
|
819
875
|
if (this.newNodeKey === data._id)
|
|
820
876
|
return this.renderNewNode();
|
|
821
877
|
const nodeData = this.findNodeData(data._uuid, this.c);
|