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.
Files changed (162) hide show
  1. package/README.md +114 -112
  2. package/dist/mobile/sun-card-design-mobile.es11.js +3 -3
  3. package/dist/mobile/sun-card-design-mobile.es3.js +4 -4
  4. package/dist/mobile/sun-card-design-mobile.es4.js +5 -5
  5. package/dist/mobile/sun-card-design-mobile.es56.js +3 -4
  6. package/dist/mobile/sun-card-design-mobile.es6.js +2 -10
  7. package/dist/pc/sun-card-design-pc.es11.js +3 -3
  8. package/dist/pc/sun-card-design-pc.es3.js +4 -4
  9. package/dist/pc/sun-card-design-pc.es4.js +5 -5
  10. package/dist/pc/sun-card-design-pc.es56.js +3 -4
  11. package/dist/pc/sun-card-design-pc.es6.js +2 -10
  12. package/dist/public/sun-card-design.css +1 -1
  13. package/package.json +98 -96
  14. package/dist/public/sun-card-designer.css +0 -1
  15. package/dist/sun-card-designer.es.js +0 -25
  16. package/dist/sun-card-designer.es10.js +0 -167
  17. package/dist/sun-card-designer.es11.js +0 -197
  18. package/dist/sun-card-designer.es12.js +0 -203
  19. package/dist/sun-card-designer.es13.js +0 -130
  20. package/dist/sun-card-designer.es14.js +0 -120
  21. package/dist/sun-card-designer.es151.js +0 -4
  22. package/dist/sun-card-designer.es152.js +0 -4
  23. package/dist/sun-card-designer.es153.js +0 -4
  24. package/dist/sun-card-designer.es154.js +0 -4
  25. package/dist/sun-card-designer.es155.js +0 -82
  26. package/dist/sun-card-designer.es156.js +0 -91
  27. package/dist/sun-card-designer.es157.js +0 -92
  28. package/dist/sun-card-designer.es158.js +0 -191
  29. package/dist/sun-card-designer.es159.js +0 -86
  30. package/dist/sun-card-designer.es16.js +0 -10
  31. package/dist/sun-card-designer.es160.js +0 -238
  32. package/dist/sun-card-designer.es161.js +0 -113
  33. package/dist/sun-card-designer.es162.js +0 -49
  34. package/dist/sun-card-designer.es163.js +0 -43
  35. package/dist/sun-card-designer.es164.js +0 -39
  36. package/dist/sun-card-designer.es165.js +0 -46
  37. package/dist/sun-card-designer.es166.js +0 -58
  38. package/dist/sun-card-designer.es167.js +0 -56
  39. package/dist/sun-card-designer.es168.js +0 -58
  40. package/dist/sun-card-designer.es169.js +0 -73
  41. package/dist/sun-card-designer.es17.js +0 -333
  42. package/dist/sun-card-designer.es170.js +0 -59
  43. package/dist/sun-card-designer.es171.js +0 -69
  44. package/dist/sun-card-designer.es172.js +0 -182
  45. package/dist/sun-card-designer.es173.js +0 -176
  46. package/dist/sun-card-designer.es174.js +0 -184
  47. package/dist/sun-card-designer.es175.js +0 -409
  48. package/dist/sun-card-designer.es176.js +0 -365
  49. package/dist/sun-card-designer.es177.js +0 -70
  50. package/dist/sun-card-designer.es178.js +0 -68
  51. package/dist/sun-card-designer.es179.js +0 -184
  52. package/dist/sun-card-designer.es18.js +0 -68
  53. package/dist/sun-card-designer.es180.js +0 -193
  54. package/dist/sun-card-designer.es181.js +0 -193
  55. package/dist/sun-card-designer.es182.js +0 -193
  56. package/dist/sun-card-designer.es184.js +0 -228
  57. package/dist/sun-card-designer.es185.js +0 -71
  58. package/dist/sun-card-designer.es19.js +0 -611
  59. package/dist/sun-card-designer.es196.js +0 -4
  60. package/dist/sun-card-designer.es20.js +0 -225
  61. package/dist/sun-card-designer.es201.js +0 -125
  62. package/dist/sun-card-designer.es21.js +0 -69
  63. package/dist/sun-card-designer.es22.js +0 -719
  64. package/dist/sun-card-designer.es220.js +0 -63
  65. package/dist/sun-card-designer.es221.js +0 -80
  66. package/dist/sun-card-designer.es222.js +0 -82
  67. package/dist/sun-card-designer.es223.js +0 -94
  68. package/dist/sun-card-designer.es224.js +0 -87
  69. package/dist/sun-card-designer.es225.js +0 -226
  70. package/dist/sun-card-designer.es226.js +0 -105
  71. package/dist/sun-card-designer.es227.js +0 -45
  72. package/dist/sun-card-designer.es228.js +0 -31
  73. package/dist/sun-card-designer.es229.js +0 -29
  74. package/dist/sun-card-designer.es23.js +0 -211
  75. package/dist/sun-card-designer.es230.js +0 -32
  76. package/dist/sun-card-designer.es231.js +0 -46
  77. package/dist/sun-card-designer.es232.js +0 -42
  78. package/dist/sun-card-designer.es233.js +0 -44
  79. package/dist/sun-card-designer.es234.js +0 -61
  80. package/dist/sun-card-designer.es235.js +0 -46
  81. package/dist/sun-card-designer.es236.js +0 -54
  82. package/dist/sun-card-designer.es237.js +0 -130
  83. package/dist/sun-card-designer.es238.js +0 -127
  84. package/dist/sun-card-designer.es239.js +0 -132
  85. package/dist/sun-card-designer.es24.js +0 -265
  86. package/dist/sun-card-designer.es240.js +0 -375
  87. package/dist/sun-card-designer.es241.js +0 -348
  88. package/dist/sun-card-designer.es242.js +0 -69
  89. package/dist/sun-card-designer.es243.js +0 -65
  90. package/dist/sun-card-designer.es244.js +0 -87
  91. package/dist/sun-card-designer.es245.js +0 -98
  92. package/dist/sun-card-designer.es246.js +0 -98
  93. package/dist/sun-card-designer.es247.js +0 -98
  94. package/dist/sun-card-designer.es25.js +0 -857
  95. package/dist/sun-card-designer.es26.js +0 -768
  96. package/dist/sun-card-designer.es260.js +0 -125
  97. package/dist/sun-card-designer.es27.js +0 -264
  98. package/dist/sun-card-designer.es273.js +0 -192
  99. package/dist/sun-card-designer.es28.js +0 -809
  100. package/dist/sun-card-designer.es29.js +0 -220
  101. package/dist/sun-card-designer.es3.js +0 -506
  102. package/dist/sun-card-designer.es30.js +0 -809
  103. package/dist/sun-card-designer.es31.js +0 -220
  104. package/dist/sun-card-designer.es32.js +0 -820
  105. package/dist/sun-card-designer.es33.js +0 -225
  106. package/dist/sun-card-designer.es34.js +0 -69
  107. package/dist/sun-card-designer.es35.js +0 -375
  108. package/dist/sun-card-designer.es36.js +0 -186
  109. package/dist/sun-card-designer.es37.js +0 -119
  110. package/dist/sun-card-designer.es38.js +0 -354
  111. package/dist/sun-card-designer.es39.js +0 -127
  112. package/dist/sun-card-designer.es4.js +0 -365
  113. package/dist/sun-card-designer.es40.js +0 -100
  114. package/dist/sun-card-designer.es41.js +0 -214
  115. package/dist/sun-card-designer.es42.js +0 -119
  116. package/dist/sun-card-designer.es43.js +0 -250
  117. package/dist/sun-card-designer.es44.js +0 -118
  118. package/dist/sun-card-designer.es45.js +0 -64
  119. package/dist/sun-card-designer.es46.js +0 -223
  120. package/dist/sun-card-designer.es47.js +0 -196
  121. package/dist/sun-card-designer.es48.js +0 -77
  122. package/dist/sun-card-designer.es49.js +0 -85
  123. package/dist/sun-card-designer.es5.js +0 -317
  124. package/dist/sun-card-designer.es50.js +0 -85
  125. package/dist/sun-card-designer.es51.js +0 -64
  126. package/dist/sun-card-designer.es52.js +0 -283
  127. package/dist/sun-card-designer.es53.js +0 -64
  128. package/dist/sun-card-designer.es54.js +0 -142
  129. package/dist/sun-card-designer.es55.js +0 -52
  130. package/dist/sun-card-designer.es56.js +0 -85
  131. package/dist/sun-card-designer.es57.js +0 -258
  132. package/dist/sun-card-designer.es58.js +0 -226
  133. package/dist/sun-card-designer.es59.js +0 -169
  134. package/dist/sun-card-designer.es6.js +0 -190
  135. package/dist/sun-card-designer.es60.js +0 -280
  136. package/dist/sun-card-designer.es61.js +0 -168
  137. package/dist/sun-card-designer.es62.js +0 -219
  138. package/dist/sun-card-designer.es63.js +0 -168
  139. package/dist/sun-card-designer.es64.js +0 -275
  140. package/dist/sun-card-designer.es65.js +0 -760
  141. package/dist/sun-card-designer.es66.js +0 -272
  142. package/dist/sun-card-designer.es67.js +0 -559
  143. package/dist/sun-card-designer.es68.js +0 -124
  144. package/dist/sun-card-designer.es69.js +0 -528
  145. package/dist/sun-card-designer.es7.js +0 -65
  146. package/dist/sun-card-designer.es70.js +0 -185
  147. package/dist/sun-card-designer.es71.js +0 -107
  148. package/dist/sun-card-designer.es72.js +0 -153
  149. package/dist/sun-card-designer.es73.js +0 -315
  150. package/dist/sun-card-designer.es74.js +0 -114
  151. package/dist/sun-card-designer.es76.js +0 -4211
  152. package/dist/sun-card-designer.es79.js +0 -4
  153. package/dist/sun-card-designer.es8.js +0 -171
  154. package/dist/sun-card-designer.es80.js +0 -4
  155. package/dist/sun-card-designer.es81.js +0 -4
  156. package/dist/sun-card-designer.es84.js +0 -228
  157. package/dist/sun-card-designer.es87.js +0 -52
  158. package/dist/sun-card-designer.es88.js +0 -52
  159. package/dist/sun-card-designer.es9.js +0 -207
  160. package/dist/sun-card-designer.es91.js +0 -344
  161. package/dist/sun-card-designer.es92.js +0 -199
  162. 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, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#39;");
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
- };