sun-card-design 1.1.37 → 1.1.39
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/README.md +114 -112
- package/dist/mobile/sun-card-design-mobile.es11.js +3 -3
- package/dist/mobile/sun-card-design-mobile.es3.js +4 -4
- package/dist/mobile/sun-card-design-mobile.es4.js +5 -5
- package/dist/mobile/sun-card-design-mobile.es56.js +3 -4
- package/dist/mobile/sun-card-design-mobile.es6.js +2 -10
- package/dist/pc/sun-card-design-pc.es11.js +3 -3
- package/dist/pc/sun-card-design-pc.es3.js +4 -4
- package/dist/pc/sun-card-design-pc.es4.js +5 -5
- package/dist/pc/sun-card-design-pc.es56.js +3 -4
- package/dist/pc/sun-card-design-pc.es6.js +2 -10
- package/dist/public/sun-card-design.css +1 -1
- package/package.json +98 -96
- package/dist/public/sun-card-designer.css +0 -1
- package/dist/sun-card-designer.es.js +0 -25
- package/dist/sun-card-designer.es10.js +0 -167
- package/dist/sun-card-designer.es11.js +0 -197
- package/dist/sun-card-designer.es12.js +0 -203
- package/dist/sun-card-designer.es13.js +0 -130
- package/dist/sun-card-designer.es14.js +0 -120
- package/dist/sun-card-designer.es151.js +0 -4
- package/dist/sun-card-designer.es152.js +0 -4
- package/dist/sun-card-designer.es153.js +0 -4
- package/dist/sun-card-designer.es154.js +0 -4
- package/dist/sun-card-designer.es155.js +0 -82
- package/dist/sun-card-designer.es156.js +0 -91
- package/dist/sun-card-designer.es157.js +0 -92
- package/dist/sun-card-designer.es158.js +0 -191
- package/dist/sun-card-designer.es159.js +0 -86
- package/dist/sun-card-designer.es16.js +0 -10
- package/dist/sun-card-designer.es160.js +0 -238
- package/dist/sun-card-designer.es161.js +0 -113
- package/dist/sun-card-designer.es162.js +0 -49
- package/dist/sun-card-designer.es163.js +0 -43
- package/dist/sun-card-designer.es164.js +0 -39
- package/dist/sun-card-designer.es165.js +0 -46
- package/dist/sun-card-designer.es166.js +0 -58
- package/dist/sun-card-designer.es167.js +0 -56
- package/dist/sun-card-designer.es168.js +0 -58
- package/dist/sun-card-designer.es169.js +0 -73
- package/dist/sun-card-designer.es17.js +0 -333
- package/dist/sun-card-designer.es170.js +0 -59
- package/dist/sun-card-designer.es171.js +0 -69
- package/dist/sun-card-designer.es172.js +0 -182
- package/dist/sun-card-designer.es173.js +0 -176
- package/dist/sun-card-designer.es174.js +0 -184
- package/dist/sun-card-designer.es175.js +0 -409
- package/dist/sun-card-designer.es176.js +0 -365
- package/dist/sun-card-designer.es177.js +0 -70
- package/dist/sun-card-designer.es178.js +0 -68
- package/dist/sun-card-designer.es179.js +0 -184
- package/dist/sun-card-designer.es18.js +0 -68
- package/dist/sun-card-designer.es180.js +0 -193
- package/dist/sun-card-designer.es181.js +0 -193
- package/dist/sun-card-designer.es182.js +0 -193
- package/dist/sun-card-designer.es184.js +0 -228
- package/dist/sun-card-designer.es185.js +0 -71
- package/dist/sun-card-designer.es19.js +0 -611
- package/dist/sun-card-designer.es196.js +0 -4
- package/dist/sun-card-designer.es20.js +0 -225
- package/dist/sun-card-designer.es201.js +0 -125
- package/dist/sun-card-designer.es21.js +0 -69
- package/dist/sun-card-designer.es22.js +0 -719
- package/dist/sun-card-designer.es220.js +0 -63
- package/dist/sun-card-designer.es221.js +0 -80
- package/dist/sun-card-designer.es222.js +0 -82
- package/dist/sun-card-designer.es223.js +0 -94
- package/dist/sun-card-designer.es224.js +0 -87
- package/dist/sun-card-designer.es225.js +0 -226
- package/dist/sun-card-designer.es226.js +0 -105
- package/dist/sun-card-designer.es227.js +0 -45
- package/dist/sun-card-designer.es228.js +0 -31
- package/dist/sun-card-designer.es229.js +0 -29
- package/dist/sun-card-designer.es23.js +0 -211
- package/dist/sun-card-designer.es230.js +0 -32
- package/dist/sun-card-designer.es231.js +0 -46
- package/dist/sun-card-designer.es232.js +0 -42
- package/dist/sun-card-designer.es233.js +0 -44
- package/dist/sun-card-designer.es234.js +0 -61
- package/dist/sun-card-designer.es235.js +0 -46
- package/dist/sun-card-designer.es236.js +0 -54
- package/dist/sun-card-designer.es237.js +0 -130
- package/dist/sun-card-designer.es238.js +0 -127
- package/dist/sun-card-designer.es239.js +0 -132
- package/dist/sun-card-designer.es24.js +0 -265
- package/dist/sun-card-designer.es240.js +0 -375
- package/dist/sun-card-designer.es241.js +0 -348
- package/dist/sun-card-designer.es242.js +0 -69
- package/dist/sun-card-designer.es243.js +0 -65
- package/dist/sun-card-designer.es244.js +0 -87
- package/dist/sun-card-designer.es245.js +0 -98
- package/dist/sun-card-designer.es246.js +0 -98
- package/dist/sun-card-designer.es247.js +0 -98
- package/dist/sun-card-designer.es25.js +0 -857
- package/dist/sun-card-designer.es26.js +0 -768
- package/dist/sun-card-designer.es260.js +0 -125
- package/dist/sun-card-designer.es27.js +0 -264
- package/dist/sun-card-designer.es273.js +0 -192
- package/dist/sun-card-designer.es28.js +0 -809
- package/dist/sun-card-designer.es29.js +0 -220
- package/dist/sun-card-designer.es3.js +0 -506
- package/dist/sun-card-designer.es30.js +0 -809
- package/dist/sun-card-designer.es31.js +0 -220
- package/dist/sun-card-designer.es32.js +0 -820
- package/dist/sun-card-designer.es33.js +0 -225
- package/dist/sun-card-designer.es34.js +0 -69
- package/dist/sun-card-designer.es35.js +0 -375
- package/dist/sun-card-designer.es36.js +0 -186
- package/dist/sun-card-designer.es37.js +0 -119
- package/dist/sun-card-designer.es38.js +0 -354
- package/dist/sun-card-designer.es39.js +0 -127
- package/dist/sun-card-designer.es4.js +0 -365
- package/dist/sun-card-designer.es40.js +0 -100
- package/dist/sun-card-designer.es41.js +0 -214
- package/dist/sun-card-designer.es42.js +0 -119
- package/dist/sun-card-designer.es43.js +0 -250
- package/dist/sun-card-designer.es44.js +0 -118
- package/dist/sun-card-designer.es45.js +0 -64
- package/dist/sun-card-designer.es46.js +0 -223
- package/dist/sun-card-designer.es47.js +0 -196
- package/dist/sun-card-designer.es48.js +0 -77
- package/dist/sun-card-designer.es49.js +0 -85
- package/dist/sun-card-designer.es5.js +0 -317
- package/dist/sun-card-designer.es50.js +0 -85
- package/dist/sun-card-designer.es51.js +0 -64
- package/dist/sun-card-designer.es52.js +0 -283
- package/dist/sun-card-designer.es53.js +0 -64
- package/dist/sun-card-designer.es54.js +0 -142
- package/dist/sun-card-designer.es55.js +0 -52
- package/dist/sun-card-designer.es56.js +0 -85
- package/dist/sun-card-designer.es57.js +0 -258
- package/dist/sun-card-designer.es58.js +0 -226
- package/dist/sun-card-designer.es59.js +0 -169
- package/dist/sun-card-designer.es6.js +0 -190
- package/dist/sun-card-designer.es60.js +0 -280
- package/dist/sun-card-designer.es61.js +0 -168
- package/dist/sun-card-designer.es62.js +0 -219
- package/dist/sun-card-designer.es63.js +0 -168
- package/dist/sun-card-designer.es64.js +0 -275
- package/dist/sun-card-designer.es65.js +0 -760
- package/dist/sun-card-designer.es66.js +0 -272
- package/dist/sun-card-designer.es67.js +0 -559
- package/dist/sun-card-designer.es68.js +0 -124
- package/dist/sun-card-designer.es69.js +0 -528
- package/dist/sun-card-designer.es7.js +0 -65
- package/dist/sun-card-designer.es70.js +0 -185
- package/dist/sun-card-designer.es71.js +0 -107
- package/dist/sun-card-designer.es72.js +0 -153
- package/dist/sun-card-designer.es73.js +0 -315
- package/dist/sun-card-designer.es74.js +0 -114
- package/dist/sun-card-designer.es76.js +0 -4211
- package/dist/sun-card-designer.es79.js +0 -4
- package/dist/sun-card-designer.es8.js +0 -171
- package/dist/sun-card-designer.es80.js +0 -4
- package/dist/sun-card-designer.es81.js +0 -4
- package/dist/sun-card-designer.es84.js +0 -228
- package/dist/sun-card-designer.es87.js +0 -52
- package/dist/sun-card-designer.es88.js +0 -52
- package/dist/sun-card-designer.es9.js +0 -207
- package/dist/sun-card-designer.es91.js +0 -344
- package/dist/sun-card-designer.es92.js +0 -199
- package/dist/sun-card-designer.es95.js +0 -180
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
import { ref, computed, onMounted, watch, createElementBlock, openBlock, createElementVNode, normalizeStyle } from "vue";
|
|
2
|
-
/* empty css */
|
|
3
|
-
import _export_sfc from "./sun-card-designer.es16.js";
|
|
4
|
-
const _hoisted_1 = { class: "edit-input" };
|
|
5
|
-
const TOKEN_TEXT = "{哈哈哈}";
|
|
6
|
-
const _sfc_main = {
|
|
7
|
-
__name: "editInput",
|
|
8
|
-
props: {
|
|
9
|
-
filed: { type: String, default: "defaultValue" },
|
|
10
|
-
record: { type: Object },
|
|
11
|
-
minRows: { type: Number, default: 1 },
|
|
12
|
-
maxRows: { type: Number, default: 10 }
|
|
13
|
-
},
|
|
14
|
-
setup(__props, { expose: __expose }) {
|
|
15
|
-
const editableRef = ref(null);
|
|
16
|
-
const TOKEN_REGEX = /\{[^{}]+\}/g;
|
|
17
|
-
const props = __props;
|
|
18
|
-
const lineHeightPx = ref(22);
|
|
19
|
-
const editableStyle = computed(() => {
|
|
20
|
-
const minRows = Math.max(0, Number(props.minRows || 0));
|
|
21
|
-
const maxRows = Math.max(minRows, Number(props.maxRows || minRows));
|
|
22
|
-
const verticalPadding = 16;
|
|
23
|
-
const minH = minRows * lineHeightPx.value + verticalPadding;
|
|
24
|
-
const maxH = maxRows * lineHeightPx.value + verticalPadding;
|
|
25
|
-
return {
|
|
26
|
-
minHeight: `${minH}px`,
|
|
27
|
-
maxHeight: `${maxH}px`,
|
|
28
|
-
overflowY: "auto"
|
|
29
|
-
};
|
|
30
|
-
});
|
|
31
|
-
const insertToken = (tokenText) => {
|
|
32
|
-
if (!editableRef.value) return;
|
|
33
|
-
insertTokenAtCursor(editableRef.value, tokenText || TOKEN_TEXT);
|
|
34
|
-
emitCurrentValue();
|
|
35
|
-
};
|
|
36
|
-
const onInput = () => {
|
|
37
|
-
emitCurrentValue();
|
|
38
|
-
};
|
|
39
|
-
const ensureCaret = () => {
|
|
40
|
-
requestAnimationFrame(() => {
|
|
41
|
-
const el = editableRef.value;
|
|
42
|
-
if (!el) return;
|
|
43
|
-
const sel = window.getSelection();
|
|
44
|
-
if (!sel || sel.rangeCount === 0) {
|
|
45
|
-
placeCaretAtEnd(el);
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
};
|
|
49
|
-
function renderFromModelValue(value) {
|
|
50
|
-
const el = editableRef.value;
|
|
51
|
-
if (!el) return;
|
|
52
|
-
el.innerHTML = "";
|
|
53
|
-
if (!value) return;
|
|
54
|
-
const text = String(value);
|
|
55
|
-
let lastIndex = 0;
|
|
56
|
-
let match;
|
|
57
|
-
while ((match = TOKEN_REGEX.exec(text)) !== null) {
|
|
58
|
-
const before = text.slice(lastIndex, match.index);
|
|
59
|
-
if (before) el.appendChild(document.createTextNode(before));
|
|
60
|
-
const chip = createTokenSpan(match[0]);
|
|
61
|
-
el.appendChild(chip);
|
|
62
|
-
lastIndex = match.index + match[0].length;
|
|
63
|
-
}
|
|
64
|
-
const tail = text.slice(lastIndex);
|
|
65
|
-
if (tail) el.appendChild(document.createTextNode(tail));
|
|
66
|
-
}
|
|
67
|
-
function emitCurrentValue() {
|
|
68
|
-
const el = editableRef.value;
|
|
69
|
-
if (!el) return;
|
|
70
|
-
const val = getValueFromContainer(el);
|
|
71
|
-
if (val !== props.record[props.filed]) {
|
|
72
|
-
props.record[props.filed] = val;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
function getValueFromContainer(container) {
|
|
76
|
-
let out = "";
|
|
77
|
-
container.childNodes.forEach((node) => {
|
|
78
|
-
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
79
|
-
const el = node;
|
|
80
|
-
if (el.classList && el.classList.contains("token-chip")) {
|
|
81
|
-
out += el.textContent || "";
|
|
82
|
-
} else {
|
|
83
|
-
out += el.textContent || "";
|
|
84
|
-
}
|
|
85
|
-
} else if (node.nodeType === Node.TEXT_NODE) {
|
|
86
|
-
out += node.nodeValue || "";
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
return out;
|
|
90
|
-
}
|
|
91
|
-
onMounted(() => {
|
|
92
|
-
renderFromModelValue(props.record[props.filed]);
|
|
93
|
-
if (editableRef.value) {
|
|
94
|
-
placeCaretAtEnd(editableRef.value);
|
|
95
|
-
const cs = window.getComputedStyle(editableRef.value);
|
|
96
|
-
let lh = parseFloat(cs.lineHeight);
|
|
97
|
-
if (!lh || Number.isNaN(lh)) {
|
|
98
|
-
const fs = parseFloat(cs.fontSize) || 14;
|
|
99
|
-
lh = fs * 1.6;
|
|
100
|
-
}
|
|
101
|
-
lineHeightPx.value = lh;
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
watch(
|
|
105
|
-
() => props.record[props.filed],
|
|
106
|
-
(val) => {
|
|
107
|
-
const current = editableRef.value ? getValueFromContainer(editableRef.value) : "";
|
|
108
|
-
if (val !== current) {
|
|
109
|
-
renderFromModelValue(val);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
);
|
|
113
|
-
function createTokenSpan(text) {
|
|
114
|
-
const span = document.createElement("span");
|
|
115
|
-
span.textContent = text;
|
|
116
|
-
span.contentEditable = "false";
|
|
117
|
-
span.className = "token-chip";
|
|
118
|
-
span.setAttribute("data-token", text);
|
|
119
|
-
span.style.display = "inline-block";
|
|
120
|
-
span.style.background = "#e6f4ff";
|
|
121
|
-
span.style.color = "#1677ff";
|
|
122
|
-
span.style.fontSize = "12px";
|
|
123
|
-
span.style.borderRadius = "6px";
|
|
124
|
-
span.style.padding = "0";
|
|
125
|
-
span.style.margin = "0";
|
|
126
|
-
span.style.cursor = "default";
|
|
127
|
-
span.style.userSelect = "none";
|
|
128
|
-
span.style.whiteSpace = "nowrap";
|
|
129
|
-
return span;
|
|
130
|
-
}
|
|
131
|
-
function insertTokenAtCursor(container, text) {
|
|
132
|
-
const token = createTokenSpan(text);
|
|
133
|
-
const selection = window.getSelection();
|
|
134
|
-
if (!selection || selection.rangeCount === 0 || !isSelectionInside(container, selection)) {
|
|
135
|
-
container.appendChild(token);
|
|
136
|
-
placeCaretAfterNode(container, token);
|
|
137
|
-
return;
|
|
138
|
-
}
|
|
139
|
-
const range = selection.getRangeAt(0);
|
|
140
|
-
if (!isRangeInside(container, range)) {
|
|
141
|
-
container.appendChild(token);
|
|
142
|
-
placeCaretAfterNode(container, token);
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
|
-
range.deleteContents();
|
|
146
|
-
range.insertNode(token);
|
|
147
|
-
const newRange = document.createRange();
|
|
148
|
-
newRange.setStartAfter(token);
|
|
149
|
-
newRange.collapse(true);
|
|
150
|
-
selection.removeAllRanges();
|
|
151
|
-
selection.addRange(newRange);
|
|
152
|
-
}
|
|
153
|
-
function isSelectionInside(container, selection) {
|
|
154
|
-
const node = selection.anchorNode;
|
|
155
|
-
return container.contains(node);
|
|
156
|
-
}
|
|
157
|
-
function isRangeInside(container, range) {
|
|
158
|
-
const { startContainer, endContainer } = range;
|
|
159
|
-
return container.contains(startContainer) && container.contains(endContainer);
|
|
160
|
-
}
|
|
161
|
-
function placeCaretAtEnd(el) {
|
|
162
|
-
el.focus();
|
|
163
|
-
const selection = window.getSelection();
|
|
164
|
-
const range = document.createRange();
|
|
165
|
-
range.selectNodeContents(el);
|
|
166
|
-
range.collapse(false);
|
|
167
|
-
selection.removeAllRanges();
|
|
168
|
-
selection.addRange(range);
|
|
169
|
-
}
|
|
170
|
-
function placeCaretAfterNode(container, node) {
|
|
171
|
-
container.focus();
|
|
172
|
-
const selection = window.getSelection();
|
|
173
|
-
const range = document.createRange();
|
|
174
|
-
range.setStartAfter(node);
|
|
175
|
-
range.collapse(true);
|
|
176
|
-
selection.removeAllRanges();
|
|
177
|
-
selection.addRange(range);
|
|
178
|
-
}
|
|
179
|
-
__expose({ insertToken });
|
|
180
|
-
return (_ctx, _cache) => {
|
|
181
|
-
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
182
|
-
createElementVNode("div", {
|
|
183
|
-
ref_key: "editableRef",
|
|
184
|
-
ref: editableRef,
|
|
185
|
-
class: "editable",
|
|
186
|
-
contenteditable: "true",
|
|
187
|
-
spellcheck: "false",
|
|
188
|
-
onClick: ensureCaret,
|
|
189
|
-
onInput,
|
|
190
|
-
style: normalizeStyle(editableStyle.value)
|
|
191
|
-
}, null, 36)
|
|
192
|
-
]);
|
|
193
|
-
};
|
|
194
|
-
}
|
|
195
|
-
};
|
|
196
|
-
const EditInput = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-5fde2c14"]]);
|
|
197
|
-
export {
|
|
198
|
-
EditInput as default
|
|
199
|
-
};
|
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
import { ref, onUnmounted, watch, resolveComponent, createElementBlock, openBlock, createVNode, withCtx, createElementVNode } from "vue";
|
|
2
|
-
const _hoisted_1 = ["innerHTML"];
|
|
3
|
-
const _sfc_main = {
|
|
4
|
-
__name: "qflowComp",
|
|
5
|
-
emits: ["confirm"],
|
|
6
|
-
setup(__props, { expose: __expose, emit: __emit }) {
|
|
7
|
-
const emit = __emit;
|
|
8
|
-
const open = ref(false);
|
|
9
|
-
const expandedKeys = ref([]);
|
|
10
|
-
const selectedKeys = ref([]);
|
|
11
|
-
const searchValue = ref("");
|
|
12
|
-
const autoExpandParent = ref(true);
|
|
13
|
-
const treeData = ref([]);
|
|
14
|
-
const selectedItem = ref(null);
|
|
15
|
-
const flatList = ref([]);
|
|
16
|
-
const valueToParent = /* @__PURE__ */ new Map();
|
|
17
|
-
const valueToNode = /* @__PURE__ */ new Map();
|
|
18
|
-
const pendingDefault = ref(null);
|
|
19
|
-
let searchTimeout = null;
|
|
20
|
-
onUnmounted(() => {
|
|
21
|
-
if (searchTimeout) {
|
|
22
|
-
clearTimeout(searchTimeout);
|
|
23
|
-
searchTimeout = null;
|
|
24
|
-
}
|
|
25
|
-
valueToParent.clear();
|
|
26
|
-
valueToNode.clear();
|
|
27
|
-
flatList.value = [];
|
|
28
|
-
});
|
|
29
|
-
const onOpen = (defaultSelected) => {
|
|
30
|
-
open.value = true;
|
|
31
|
-
expandedKeys.value = [];
|
|
32
|
-
selectedKeys.value = [];
|
|
33
|
-
autoExpandParent.value = true;
|
|
34
|
-
selectedItem.value = null;
|
|
35
|
-
flatList.value = [];
|
|
36
|
-
valueToParent.clear();
|
|
37
|
-
valueToNode.clear();
|
|
38
|
-
if (defaultSelected && defaultSelected.value !== null) {
|
|
39
|
-
pendingDefault.value = defaultSelected;
|
|
40
|
-
searchValue.value = defaultSelected.label || "";
|
|
41
|
-
} else {
|
|
42
|
-
pendingDefault.value = null;
|
|
43
|
-
searchValue.value = "";
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
const onExpand = (keys) => {
|
|
47
|
-
expandedKeys.value = keys;
|
|
48
|
-
autoExpandParent.value = false;
|
|
49
|
-
};
|
|
50
|
-
const onSelect = (keys, info) => {
|
|
51
|
-
if (info?.node && info.node.selectable === false) {
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
selectedKeys.value = keys;
|
|
55
|
-
const label = info?.node?.label || info?.node?.title || "";
|
|
56
|
-
const value = info?.node?.value;
|
|
57
|
-
if (label && value !== null) {
|
|
58
|
-
selectedItem.value = { label, value };
|
|
59
|
-
searchValue.value = label;
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
const handleOk = () => {
|
|
63
|
-
if (selectedItem.value) {
|
|
64
|
-
emit("confirm", { ...selectedItem.value });
|
|
65
|
-
}
|
|
66
|
-
open.value = false;
|
|
67
|
-
};
|
|
68
|
-
watch(searchValue, (val) => {
|
|
69
|
-
if (searchTimeout) {
|
|
70
|
-
clearTimeout(searchTimeout);
|
|
71
|
-
}
|
|
72
|
-
searchTimeout = setTimeout(() => {
|
|
73
|
-
try {
|
|
74
|
-
if (!val) {
|
|
75
|
-
expandedKeys.value = [];
|
|
76
|
-
autoExpandParent.value = false;
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
const lower = String(val).toLowerCase();
|
|
80
|
-
const matched = flatList.value.filter(
|
|
81
|
-
(item) => String(item.label || "").toLowerCase().includes(lower)
|
|
82
|
-
);
|
|
83
|
-
if (matched.length > 1e3) {
|
|
84
|
-
console.warn("搜索结果过多,可能影响性能");
|
|
85
|
-
}
|
|
86
|
-
const parents = /* @__PURE__ */ new Set();
|
|
87
|
-
const visitedParents = /* @__PURE__ */ new Set();
|
|
88
|
-
matched.forEach((item) => {
|
|
89
|
-
let p = valueToParent.get(item.value);
|
|
90
|
-
let maxIterations = 100;
|
|
91
|
-
while (p !== null && p !== void 0 && !visitedParents.has(p) && maxIterations > 0) {
|
|
92
|
-
visitedParents.add(p);
|
|
93
|
-
parents.add(p);
|
|
94
|
-
p = valueToParent.get(p);
|
|
95
|
-
maxIterations--;
|
|
96
|
-
}
|
|
97
|
-
});
|
|
98
|
-
expandedKeys.value = Array.from(parents);
|
|
99
|
-
autoExpandParent.value = true;
|
|
100
|
-
} catch (error) {
|
|
101
|
-
console.error("搜索处理时出错:", error);
|
|
102
|
-
}
|
|
103
|
-
}, 300);
|
|
104
|
-
});
|
|
105
|
-
function highlight(text) {
|
|
106
|
-
try {
|
|
107
|
-
const raw = String(text === null ? "" : text);
|
|
108
|
-
const key = String(searchValue.value || "");
|
|
109
|
-
if (!key) return escapeHtml(raw);
|
|
110
|
-
const i = raw.toLowerCase().indexOf(key.toLowerCase());
|
|
111
|
-
if (i === -1) return escapeHtml(raw);
|
|
112
|
-
const before = raw.slice(0, i);
|
|
113
|
-
const match = raw.slice(i, i + key.length);
|
|
114
|
-
const after = raw.slice(i + key.length);
|
|
115
|
-
return `${escapeHtml(before)}<span style="color:#1677ff">${escapeHtml(
|
|
116
|
-
match
|
|
117
|
-
)}</span>${escapeHtml(after)}`;
|
|
118
|
-
} catch (error) {
|
|
119
|
-
console.error("高亮处理时出错:", error);
|
|
120
|
-
return escapeHtml(String(text === null ? "" : text));
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
function escapeHtml(str) {
|
|
124
|
-
return String(str).replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
125
|
-
}
|
|
126
|
-
__expose({
|
|
127
|
-
onOpen
|
|
128
|
-
});
|
|
129
|
-
return (_ctx, _cache) => {
|
|
130
|
-
const _component_a_input_search = resolveComponent("a-input-search");
|
|
131
|
-
const _component_a_tree = resolveComponent("a-tree");
|
|
132
|
-
const _component_a_modal = resolveComponent("a-modal");
|
|
133
|
-
return openBlock(), createElementBlock("div", null, [
|
|
134
|
-
createVNode(_component_a_modal, {
|
|
135
|
-
open: open.value,
|
|
136
|
-
"onUpdate:open": _cache[3] || (_cache[3] = ($event) => open.value = $event),
|
|
137
|
-
title: "选择工作流",
|
|
138
|
-
onOk: handleOk,
|
|
139
|
-
bodyStyle: { maxHeight: "65vh", overflowY: "auto" }
|
|
140
|
-
}, {
|
|
141
|
-
default: withCtx(() => [
|
|
142
|
-
createVNode(_component_a_input_search, {
|
|
143
|
-
value: searchValue.value,
|
|
144
|
-
"onUpdate:value": _cache[0] || (_cache[0] = ($event) => searchValue.value = $event),
|
|
145
|
-
style: { "margin-bottom": "8px" },
|
|
146
|
-
placeholder: "请搜索"
|
|
147
|
-
}, null, 8, ["value"]),
|
|
148
|
-
createVNode(_component_a_tree, {
|
|
149
|
-
expandedKeys: expandedKeys.value,
|
|
150
|
-
"onUpdate:expandedKeys": _cache[1] || (_cache[1] = ($event) => expandedKeys.value = $event),
|
|
151
|
-
selectedKeys: selectedKeys.value,
|
|
152
|
-
"onUpdate:selectedKeys": _cache[2] || (_cache[2] = ($event) => selectedKeys.value = $event),
|
|
153
|
-
"auto-expand-parent": autoExpandParent.value,
|
|
154
|
-
"tree-data": treeData.value,
|
|
155
|
-
fieldNames: {
|
|
156
|
-
children: "children",
|
|
157
|
-
title: "label",
|
|
158
|
-
key: "value"
|
|
159
|
-
},
|
|
160
|
-
selectable: true,
|
|
161
|
-
onExpand,
|
|
162
|
-
onSelect
|
|
163
|
-
}, {
|
|
164
|
-
title: withCtx(({ label }) => [
|
|
165
|
-
createElementVNode("span", {
|
|
166
|
-
innerHTML: highlight(label)
|
|
167
|
-
}, null, 8, _hoisted_1)
|
|
168
|
-
]),
|
|
169
|
-
_: 1
|
|
170
|
-
}, 8, ["expandedKeys", "selectedKeys", "auto-expand-parent", "tree-data"])
|
|
171
|
-
]),
|
|
172
|
-
_: 1
|
|
173
|
-
}, 8, ["open"])
|
|
174
|
-
]);
|
|
175
|
-
};
|
|
176
|
-
}
|
|
177
|
-
};
|
|
178
|
-
export {
|
|
179
|
-
_sfc_main as default
|
|
180
|
-
};
|