@cmstops/pro-compo 3.9.1-rc.1 → 3.9.1-rc.11

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 (101) hide show
  1. package/README.md +103 -76
  2. package/dist/index.css +49 -4
  3. package/dist/index.min.css +1 -1
  4. package/es/baseFilter/component.js +71 -14
  5. package/es/config.js +1 -1
  6. package/es/contentDetailList/component.js +24 -0
  7. package/es/contentDetailList/components/Content/index.js +2 -1
  8. package/es/contentDetailList/components/Doc/index.js +6 -0
  9. package/es/docHistory/component.js +41 -12
  10. package/es/docHistory/scripts/diff.js +4 -3
  11. package/es/docHistory/style/index.css +4 -0
  12. package/es/docHistory/style/index.less +5 -0
  13. package/es/hooks/useAttachement.js +2 -9
  14. package/es/hooks/usePopper.d.ts +1 -1
  15. package/es/hooks/usePopper.js +3 -3
  16. package/es/hooks/useUpload.d.ts +50 -2
  17. package/es/hooks/useUpload.js +43 -4
  18. package/es/index.css +49 -4
  19. package/es/index.d.ts +1 -0
  20. package/es/index.js +1 -0
  21. package/es/selectAddTo/component.d.ts +0 -0
  22. package/es/selectAddTo/component.js +125 -0
  23. package/es/selectAddTo/component.vue_vue_type_style_index_0_scoped_true_lang.js +2 -0
  24. package/es/selectAddTo/components/ViewAllColumn/MediaFilter/index.d.ts +0 -0
  25. package/es/selectAddTo/components/ViewAllColumn/MediaFilter/index.js +169 -0
  26. package/es/selectAddTo/components/ViewAllColumn/columnTree/index.d.ts +0 -0
  27. package/es/selectAddTo/components/ViewAllColumn/index.d.ts +0 -0
  28. package/es/selectAddTo/components/ViewAllColumn/index.js +209 -0
  29. package/es/selectAddTo/components/ViewAllColumn/index.vue_vue_type_style_index_0_scoped_true_lang.js +2 -0
  30. package/es/selectAddTo/components/ViewAllColumn/script/useTableColumns.js +78 -0
  31. package/es/selectAddTo/components/ViewAllColumn/script/useViewAllColumnState.d.ts +144 -0
  32. package/es/selectAddTo/components/ViewAllColumn/script/useViewAllColumnState.js +193 -0
  33. package/es/selectAddTo/components/ViewAllColumn/types/index.d.ts +59 -0
  34. package/es/selectAddTo/index.d.ts +2 -0
  35. package/es/selectAddTo/index.js +7 -0
  36. package/es/selectAddTo/script/api.d.ts +18 -0
  37. package/es/selectAddTo/script/api.js +30 -0
  38. package/es/selectAddTo/script/index.d.ts +2 -0
  39. package/es/selectAddTo/script/useSelectAddToState.d.ts +21 -0
  40. package/es/selectAddTo/script/useSelectAddToState.js +106 -0
  41. package/es/selectAddTo/style/css.js +1 -0
  42. package/es/selectAddTo/style/index.css +3 -0
  43. package/es/selectAddTo/style/index.d.ts +1 -0
  44. package/es/selectAddTo/style/index.js +1 -0
  45. package/es/selectAddTo/style/index.less +3 -0
  46. package/es/selectAddTo/types/index.d.ts +42 -0
  47. package/es/selectResourceModal/__demo__/module/DivWrapper.d.ts +268 -0
  48. package/es/selectResourceModal/__demo__/module/basic.d.ts +299 -0
  49. package/es/selectResourceModal/components/List/ListLocal/index.js +8 -3
  50. package/es/selectResourceModal/components/List/ListNormal/Filter.js +201 -89
  51. package/es/selectResourceModal/components/List/ListNormal/index.js +23 -7
  52. package/es/selectResourceModal/hooks/useResponsiveFilter.d.ts +21 -0
  53. package/es/selectResourceModal/hooks/useResponsiveFilter.js +142 -0
  54. package/es/selectResourceModal/scripts/useCompoLf.js +1 -1
  55. package/es/selectResourceModal/style/index.css +45 -4
  56. package/es/selectResourceModal/style/index.less +14 -0
  57. package/es/selectResourceModal/style/list.less +40 -4
  58. package/es/selectThumb/component.js +16 -27
  59. package/es/style.css +57 -0
  60. package/es/typeIcons/component.js +1 -1
  61. package/es/utils/index.js +6 -6
  62. package/lib/baseFilter/component.js +69 -12
  63. package/lib/config.js +1 -1
  64. package/lib/contentDetailList/component.js +24 -0
  65. package/lib/contentDetailList/components/Content/index.js +2 -1
  66. package/lib/contentDetailList/components/Doc/index.js +6 -0
  67. package/lib/docHistory/component.js +39 -10
  68. package/lib/docHistory/scripts/diff.js +4 -3
  69. package/lib/docHistory/style/index.css +4 -0
  70. package/lib/docHistory/style/index.less +5 -0
  71. package/lib/hooks/useAttachement.js +2 -9
  72. package/lib/hooks/usePopper.js +3 -3
  73. package/lib/hooks/useUpload.js +43 -3
  74. package/lib/index.css +49 -4
  75. package/lib/index.js +2 -0
  76. package/lib/selectAddTo/component.js +126 -0
  77. package/lib/selectAddTo/component.vue_vue_type_style_index_0_scoped_true_lang.js +3 -0
  78. package/lib/selectAddTo/components/ViewAllColumn/MediaFilter/index.js +170 -0
  79. package/lib/selectAddTo/components/ViewAllColumn/index.js +210 -0
  80. package/lib/selectAddTo/components/ViewAllColumn/index.vue_vue_type_style_index_0_scoped_true_lang.js +3 -0
  81. package/lib/selectAddTo/components/ViewAllColumn/script/useTableColumns.js +80 -0
  82. package/lib/selectAddTo/components/ViewAllColumn/script/useViewAllColumnState.js +195 -0
  83. package/lib/selectAddTo/index.js +8 -0
  84. package/lib/selectAddTo/script/api.js +35 -0
  85. package/lib/selectAddTo/script/useSelectAddToState.js +108 -0
  86. package/lib/selectAddTo/style/css.js +2 -0
  87. package/lib/selectAddTo/style/index.css +3 -0
  88. package/lib/selectAddTo/style/index.js +2 -0
  89. package/lib/selectAddTo/style/index.less +3 -0
  90. package/lib/selectResourceModal/components/List/ListLocal/index.js +6 -1
  91. package/lib/selectResourceModal/components/List/ListNormal/Filter.js +198 -86
  92. package/lib/selectResourceModal/components/List/ListNormal/index.js +22 -6
  93. package/lib/selectResourceModal/hooks/useResponsiveFilter.js +144 -0
  94. package/lib/selectResourceModal/scripts/useCompoLf.js +1 -1
  95. package/lib/selectResourceModal/style/index.css +45 -4
  96. package/lib/selectResourceModal/style/index.less +14 -0
  97. package/lib/selectResourceModal/style/list.less +40 -4
  98. package/lib/selectThumb/component.js +16 -27
  99. package/lib/typeIcons/component.js +1 -1
  100. package/lib/utils/index.js +6 -6
  101. package/package.json +1 -1
@@ -0,0 +1,142 @@
1
+ import { ref, onMounted, nextTick, onUnmounted } from "vue";
2
+ import usePopper from "../../hooks/usePopper.js";
3
+ const getRect = (el) => {
4
+ if (!el || typeof el.getClientRects !== "function")
5
+ return { right: 0, width: 0 };
6
+ const rects = el.getClientRects();
7
+ if (rects.length === 0)
8
+ return { right: 0, width: 0 };
9
+ const rect = rects[0];
10
+ return {
11
+ right: rect.right,
12
+ width: rect.width
13
+ };
14
+ };
15
+ function useResponsiveFilter(filterItemsRef) {
16
+ const moreBtnRef = ref();
17
+ const popperPanelRef = ref();
18
+ const { initPopper, show, visible, hide } = usePopper(
19
+ popperPanelRef,
20
+ moreBtnRef
21
+ );
22
+ const windowWidth = ref(0);
23
+ const filterContainerRightBoundary = ref(0);
24
+ const hiddenElementList = ref([]);
25
+ const initWidths = () => {
26
+ var _a, _b;
27
+ windowWidth.value = ((_a = document.body) == null ? void 0 : _a.clientWidth) || 0;
28
+ const containerElement = (_b = filterItemsRef.value) == null ? void 0 : _b.parentElement;
29
+ if (containerElement) {
30
+ filterContainerRightBoundary.value = getRect(containerElement).right;
31
+ }
32
+ };
33
+ const initResizeListener = () => {
34
+ window.addEventListener("resize", refreshLayout);
35
+ };
36
+ const removeResizeListener = () => {
37
+ window.removeEventListener("resize", refreshLayout);
38
+ };
39
+ const hideElement = (el) => {
40
+ var _a, _b, _c;
41
+ const { width } = getRect(el);
42
+ if (width > 0 && ((_a = filterItemsRef.value) == null ? void 0 : _a.contains(el))) {
43
+ hiddenElementList.value.push({ width, el });
44
+ (_b = filterItemsRef.value) == null ? void 0 : _b.removeChild(el);
45
+ (_c = popperPanelRef.value) == null ? void 0 : _c.insertBefore(el, popperPanelRef.value.firstChild);
46
+ }
47
+ };
48
+ const showElement = () => {
49
+ var _a, _b;
50
+ if (!hiddenElementList.value.length || !filterItemsRef.value)
51
+ return;
52
+ const popEl = hiddenElementList.value.pop();
53
+ if (!popEl)
54
+ return;
55
+ const { el } = popEl;
56
+ (_a = popperPanelRef.value) == null ? void 0 : _a.removeChild(el);
57
+ (_b = filterItemsRef.value) == null ? void 0 : _b.appendChild(el);
58
+ };
59
+ const checkOverflow = () => {
60
+ if (!filterItemsRef.value)
61
+ return -1;
62
+ const containerRight = filterContainerRightBoundary.value;
63
+ const children = filterItemsRef.value.children;
64
+ let currentRightmostBoundary = getRect(filterItemsRef.value).right - getRect(filterItemsRef.value).width;
65
+ for (let i = children.length - 1; i >= 0; i--) {
66
+ const item = children[i];
67
+ if (!item || !item.classList || !item.classList.contains("filter-item"))
68
+ continue;
69
+ const itemRect = getRect(item);
70
+ if (itemRect.right > containerRight - 400) {
71
+ hideElement(item);
72
+ } else {
73
+ currentRightmostBoundary = Math.max(
74
+ currentRightmostBoundary,
75
+ itemRect.right
76
+ );
77
+ }
78
+ }
79
+ return currentRightmostBoundary;
80
+ };
81
+ const refreshLayout = async () => {
82
+ await nextTick();
83
+ initWidths();
84
+ if (!filterItemsRef.value || !popperPanelRef.value)
85
+ return;
86
+ const containerRight = filterContainerRightBoundary.value;
87
+ let lastVisibleItemRight = checkOverflow();
88
+ if (lastVisibleItemRight === -1 && filterItemsRef.value.children.length > 0) {
89
+ lastVisibleItemRight = getRect(filterItemsRef.value).left;
90
+ } else if (filterItemsRef.value.children.length === 0) {
91
+ lastVisibleItemRight = getRect(filterItemsRef.value).left;
92
+ }
93
+ await nextTick();
94
+ let availableSpace = containerRight - lastVisibleItemRight;
95
+ while (hiddenElementList.value.length > 0) {
96
+ const nextHiddenItem = hiddenElementList.value[hiddenElementList.value.length - 1];
97
+ const nextHiddenItemWidth = nextHiddenItem.width;
98
+ if (availableSpace > nextHiddenItemWidth + 10) {
99
+ showElement();
100
+ await nextTick();
101
+ const visibleElements = Array.from(
102
+ filterItemsRef.value.children
103
+ );
104
+ if (visibleElements.length > 0) {
105
+ lastVisibleItemRight = visibleElements.reduce((maxRight, el) => {
106
+ var _a;
107
+ if ((_a = el.classList) == null ? void 0 : _a.contains("filter-item")) {
108
+ return Math.max(maxRight, getRect(el).right);
109
+ }
110
+ return maxRight;
111
+ }, getRect(filterItemsRef.value).left);
112
+ } else {
113
+ lastVisibleItemRight = getRect(filterItemsRef.value).left;
114
+ }
115
+ availableSpace = containerRight - lastVisibleItemRight;
116
+ } else {
117
+ break;
118
+ }
119
+ }
120
+ };
121
+ onMounted(async () => {
122
+ initResizeListener();
123
+ initPopper("bottom-start", [0, 40]);
124
+ await nextTick();
125
+ initWidths();
126
+ await nextTick();
127
+ refreshLayout();
128
+ });
129
+ onUnmounted(() => {
130
+ removeResizeListener();
131
+ });
132
+ return {
133
+ moreBtnRef,
134
+ popperPanelRef,
135
+ hiddenElementList,
136
+ visible,
137
+ show,
138
+ hide,
139
+ refreshLayout
140
+ };
141
+ }
142
+ export { useResponsiveFilter };
@@ -7,7 +7,7 @@ function useCompoentLifycycle(props, emits, handler) {
7
7
  return {
8
8
  class: "resource-select-drawer",
9
9
  header: false,
10
- width: "1024px",
10
+ width: "85vw",
11
11
  footer: false,
12
12
  unmountOnClose: true
13
13
  };
@@ -172,11 +172,13 @@
172
172
  }
173
173
  .resource-list-footer,
174
174
  .resource-list-header,
175
+ .resource-list-content .resource-list-content-empty,
175
176
  .resource-list-content .arco-scrollbar-container {
176
177
  padding: 0 40px;
177
178
  }
178
179
  .resource-list-footer {
179
180
  display: flex;
181
+ flex-wrap: wrap;
180
182
  justify-content: space-between;
181
183
  padding-bottom: 20px;
182
184
  }
@@ -186,6 +188,10 @@
186
188
  gap: 10px;
187
189
  align-items: center;
188
190
  justify-content: flex-end;
191
+ margin-top: 10px;
192
+ }
193
+ .resource-list-footer .footer-right .list-selected-wrapper {
194
+ font-size: 12px;
189
195
  }
190
196
  .resource-list-content-loading {
191
197
  display: flex;
@@ -197,7 +203,7 @@
197
203
  .resource-list .list-item-grid {
198
204
  display: grid;
199
205
  grid-gap: 20px;
200
- grid-template-columns: repeat(5, 1fr);
206
+ grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
201
207
  }
202
208
  .resource-list .list-content {
203
209
  margin-top: 30px;
@@ -240,7 +246,8 @@
240
246
  }
241
247
  .resource-list .list-filter-wrapper .list-filter-tags {
242
248
  display: flex;
243
- justify-content: space-between;
249
+ flex-wrap: wrap;
250
+ gap: 10px;
244
251
  margin-top: 10px;
245
252
  }
246
253
  .resource-list .list-filter-wrapper .list-filter-tags .list-filter-tag {
@@ -261,16 +268,41 @@
261
268
  justify-content: space-between;
262
269
  }
263
270
  .resource-list .list-filter-wrapper .list-filter .filter-list {
271
+ position: relative;
272
+ /** 给 popup 一个参考 */
264
273
  display: flex;
265
- flex-wrap: wrap;
266
- gap: 10px;
267
274
  }
268
275
  .resource-list .list-filter-wrapper .list-filter .filter-list .filter-item {
269
276
  width: 100px;
277
+ margin-right: 10px;
278
+ }
279
+ .resource-list .list-filter-wrapper .list-filter .filter-list .arco-trigger-popup {
280
+ z-index: 100000 !important;
270
281
  }
271
282
  .resource-list .list-filter-wrapper .list-filter .arco-input-prepend {
272
283
  padding: 0;
273
284
  }
285
+ .resource-list .list-filter-wrapper .list-filter .more-btn {
286
+ position: relative;
287
+ /** 给 poperjs 一个参考 */
288
+ }
289
+ .resource-list .list-filter-wrapper .list-filter .more-btn .filter-pannel {
290
+ inset: 40px auto auto auto !important;
291
+ }
292
+ .resource-list .list-filter-wrapper .filter-extra {
293
+ display: flex;
294
+ gap: 10px;
295
+ }
296
+ .resource-list .list-filter-wrapper .filter-pannel {
297
+ z-index: 100000;
298
+ display: flex;
299
+ flex-direction: column;
300
+ gap: 10px;
301
+ padding: 10px;
302
+ background-color: #fff;
303
+ border-radius: 4px;
304
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
305
+ }
274
306
  .resource-list .title {
275
307
  display: flex;
276
308
  gap: 8px;
@@ -284,6 +316,10 @@
284
316
  height: 16px;
285
317
  background-color: #4886ff;
286
318
  }
319
+ .resource-select-wrap {
320
+ width: 100%;
321
+ height: 100%;
322
+ }
287
323
  .resource-select-modal-body {
288
324
  height: 80vh;
289
325
  padding: 0;
@@ -312,3 +348,8 @@
312
348
  .resource-select-container .resource-select-header .arco-tabs-content {
313
349
  display: none !important;
314
350
  }
351
+ .resource-select-container .resource-list-content .resource-list-content-empty {
352
+ box-sizing: border-box;
353
+ width: 100%;
354
+ height: 100%;
355
+ }
@@ -2,6 +2,11 @@
2
2
  @import './listCardWrapper.less';
3
3
  @import './list.less';
4
4
 
5
+ .resource-select-wrap {
6
+ width: 100%;
7
+ height: 100%;
8
+ }
9
+
5
10
  .resource-select-modal-body {
6
11
  height: 80vh;
7
12
  padding: 0;
@@ -38,4 +43,13 @@
38
43
  display: none !important;
39
44
  }
40
45
  }
46
+
47
+ // 内容区域样式
48
+ .resource-list-content {
49
+ .resource-list-content-empty {
50
+ box-sizing: border-box;
51
+ width: 100%;
52
+ height: 100%;
53
+ }
54
+ }
41
55
  }
@@ -14,12 +14,14 @@
14
14
 
15
15
  &-footer,
16
16
  &-header,
17
+ &-content .resource-list-content-empty,
17
18
  &-content .arco-scrollbar-container {
18
19
  padding: 0 40px;
19
20
  }
20
21
 
21
22
  &-footer {
22
23
  display: flex;
24
+ flex-wrap: wrap;
23
25
  justify-content: space-between;
24
26
  padding-bottom: 20px;
25
27
 
@@ -29,6 +31,11 @@
29
31
  gap: 10px;
30
32
  align-items: center;
31
33
  justify-content: flex-end;
34
+ margin-top: 10px;
35
+
36
+ .list-selected-wrapper {
37
+ font-size: 12px;
38
+ }
32
39
  }
33
40
  }
34
41
 
@@ -47,7 +54,7 @@
47
54
  .list-item-grid {
48
55
  display: grid;
49
56
  grid-gap: 20px;
50
- grid-template-columns: repeat(5, 1fr);
57
+ grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
51
58
  }
52
59
  }
53
60
 
@@ -108,7 +115,8 @@
108
115
  .resource-list .list-filter-wrapper {
109
116
  .list-filter-tags {
110
117
  display: flex;
111
- justify-content: space-between;
118
+ flex-wrap: wrap;
119
+ gap: 10px;
112
120
  margin-top: 10px;
113
121
 
114
122
  .list-filter-tag {
@@ -133,18 +141,46 @@
133
141
  justify-content: space-between;
134
142
 
135
143
  .filter-list {
144
+ position: relative; /** 给 popup 一个参考 */
136
145
  display: flex;
137
- flex-wrap: wrap;
138
- gap: 10px;
139
146
 
140
147
  .filter-item {
141
148
  width: 100px;
149
+ margin-right: 10px;
150
+ }
151
+
152
+ .arco-trigger-popup {
153
+ z-index: 100000 !important;
142
154
  }
143
155
  }
144
156
 
145
157
  .arco-input-prepend {
146
158
  padding: 0;
147
159
  }
160
+
161
+ .more-btn {
162
+ position: relative; /** 给 poperjs 一个参考 */
163
+
164
+ .filter-pannel {
165
+ inset: 40px auto auto auto !important;
166
+ }
167
+ }
168
+ }
169
+
170
+ .filter-extra {
171
+ display: flex;
172
+ gap: 10px;
173
+ }
174
+
175
+ .filter-pannel {
176
+ z-index: 100000;
177
+ display: flex;
178
+ flex-direction: column;
179
+ gap: 10px;
180
+ padding: 10px;
181
+ background-color: #fff;
182
+ border-radius: 4px;
183
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
148
184
  }
149
185
  }
150
186
 
@@ -351,9 +351,11 @@ const _sfc_main = defineComponent({
351
351
  if (!props.dataValue)
352
352
  return;
353
353
  if (styleData.value.model === oldData.value.model) {
354
- styleData.value.data = oldData.value.data;
355
- styleData.value.cover_theme_color = oldData.value.cover_theme_color;
356
- styleData.value.cover_colorList = oldData.value.cover_colorList;
354
+ nextTick(() => {
355
+ styleData.value.data = oldData.value.data;
356
+ styleData.value.cover_theme_color = oldData.value.cover_theme_color;
357
+ styleData.value.cover_colorList = oldData.value.cover_colorList;
358
+ });
357
359
  } else {
358
360
  styleData.value.data = [];
359
361
  }
@@ -409,21 +411,8 @@ const _sfc_main = defineComponent({
409
411
  callback(styleData2);
410
412
  };
411
413
  onMounted(() => {
412
- if (!styleData.value.cover_url) {
413
- setTimeout(() => {
414
- styleData.value.cover_url = styleData.value.data[0].url;
415
- const getColors = getThemeColor(BASE_API, styleData.value.data[0].url);
416
- getColors.then((themes) => {
417
- styleData.value.cover_colorList = JSON.parse(JSON.stringify(themes));
418
- styleData.value.cover_theme_color = `rgb(${themes[1]})`;
419
- oldData.value = JSON.parse(JSON.stringify(styleData.value));
420
- callback(styleData.value);
421
- }).catch((e) => {
422
- styleData.value.banner_theme_color = `rgb(255, 255, 255)`;
423
- callback(styleData.value);
424
- });
425
- }, 700);
426
- }
414
+ if (!styleData.value.cover_url)
415
+ ;
427
416
  });
428
417
  return (_ctx, _cache) => {
429
418
  var _a, _b, _c, _d, _e, _f;
@@ -516,15 +505,15 @@ const _sfc_main = defineComponent({
516
505
  }), 128))
517
506
  ]),
518
507
  _: 1
519
- }, 8, ["modelValue"])
520
- ], 64)) : createCommentVNode("v-if", true),
521
- hasCover.value ? (openBlock(), createBlock(_sfc_main$2, {
522
- key: 3,
523
- "style-data": styleData.value,
524
- model: "cover",
525
- style: { "margin-top": "10px" },
526
- onChange: colorChange
527
- }, null, 8, ["style-data"])) : createCommentVNode("v-if", true)
508
+ }, 8, ["modelValue"]),
509
+ hasCover.value ? (openBlock(), createBlock(_sfc_main$2, {
510
+ key: 0,
511
+ "style-data": styleData.value,
512
+ model: "cover",
513
+ style: { "margin-top": "10px" },
514
+ onChange: colorChange
515
+ }, null, 8, ["style-data"])) : createCommentVNode("v-if", true)
516
+ ], 64)) : createCommentVNode("v-if", true)
528
517
  ])
529
518
  ], 2),
530
519
  _ctx.mode === "doc" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
package/es/style.css CHANGED
@@ -1,6 +1,63 @@
1
+ .content-tabs[data-v-4e1a01f6] .arco-tabs-content {
2
+ padding: 0;
3
+ }
4
+ .add-content-modal-body[data-v-4e1a01f6] {
5
+ padding: 0;
6
+ }
1
7
  .type-icons-container {
2
8
  display: inline-block;
3
9
  vertical-align: middle;
4
10
  line-height: 12px;
5
11
  font-size: 18px;
6
12
  }
13
+ .view-all-column-container[data-v-ac92e0de] {
14
+ display: flex;
15
+ flex-direction: column;
16
+ height: 100%;
17
+ }
18
+ .content-table-view[data-v-ac92e0de] {
19
+ flex: 1;
20
+ overflow: auto;
21
+ margin: 16px 0;
22
+ }
23
+ .bottom-view[data-v-ac92e0de] {
24
+ display: flex;
25
+ justify-content: space-between;
26
+ align-items: center;
27
+ padding: 16px 0;
28
+ }
29
+ .bottom-view .left[data-v-ac92e0de] {
30
+ display: flex;
31
+ align-items: center;
32
+ gap: 16px;
33
+ }
34
+ .title-span[data-v-ac92e0de] {
35
+ display: flex;
36
+ align-items: center;
37
+ gap: 8px;
38
+ }
39
+ .title-span .icon[data-v-ac92e0de] {
40
+ font-size: 16px;
41
+ }
42
+ .title-span .title[data-v-ac92e0de] {
43
+ flex: 1;
44
+ overflow: hidden;
45
+ text-overflow: ellipsis;
46
+ white-space: nowrap;
47
+ }
48
+ .pic-thumb-img[data-v-ac92e0de] {
49
+ width: 80px;
50
+ height: 80px;
51
+ object-fit: cover;
52
+ border-radius: 4px;
53
+ }
54
+ .pic-thumb-img.placeholder[data-v-ac92e0de] {
55
+ background-color: #f5f5f5;
56
+ display: flex;
57
+ align-items: center;
58
+ justify-content: center;
59
+ }
60
+ .pic-thumb-img.placeholder .placeholder-text[data-v-ac92e0de] {
61
+ color: #999;
62
+ font-size: 12px;
63
+ }
@@ -35,7 +35,7 @@ const _sfc_main = defineComponent({
35
35
  createVNode(unref(IconYinpinji), { style: { "color": "#1fb7c2" } })
36
36
  ], 2112)) : props.doc && props.type === "video_album" ? (openBlock(), createElementBlock(Fragment, { key: 7 }, [
37
37
  createCommentVNode(" \u89C6\u9891\u96C6 "),
38
- createVNode(unref(IconShipinji))
38
+ createVNode(unref(IconShipinji), { style: { "color": "#f05050" } })
39
39
  ], 2112)) : props.doc && props.type === "mini_program" ? (openBlock(), createElementBlock(Fragment, { key: 8 }, [
40
40
  createCommentVNode(" \u89C6\u9891\u96C6 "),
41
41
  createVNode(unref(IconMiniprogram))
package/es/utils/index.js CHANGED
@@ -137,13 +137,13 @@ async function copyContent(content) {
137
137
  }
138
138
  }
139
139
  function mediaTime(v) {
140
- const h = Math.floor(v / (60 * 60));
141
- const m = Math.floor((v - h) / 60);
142
- const s = Math.floor(v - h * 360 - m * 60);
140
+ const h = Math.floor(v / 3600);
141
+ const m = Math.floor(v % 3600 / 60);
142
+ const s = Math.floor(v % 60);
143
143
  let ret = "";
144
- ret += `${h < 10 ? `0${h}` : h || "--"}:`;
145
- ret += `${m < 10 ? `0${m}` : m || "--"}:`;
146
- ret += s < 10 ? `0${s}` : s || "--";
144
+ ret += `${h < 10 ? `0${h}` : h}:`;
145
+ ret += `${m < 10 ? `0${m}` : m}:`;
146
+ ret += s < 10 ? `0${s}` : s;
147
147
  return ret;
148
148
  }
149
149
  export { copyContent, dateYYYYDDMMHHmm, generateUUID, getRealUrl, getThemeColor, mediaTime, noCoverText, replaceSuffix, timeFormat, to, validateForm };
@@ -38,9 +38,11 @@ const _sfc_main = vue.defineComponent({
38
38
  });
39
39
  return _columns;
40
40
  });
41
- const getOptions = (item) => {
42
- return item.options ? item.options : [];
43
- };
41
+ const getOptions = vue.computed(() => {
42
+ return (item) => {
43
+ return item.options ? item.options : [];
44
+ };
45
+ });
44
46
  const hasValue = vue.computed(() => {
45
47
  return (key) => {
46
48
  var _a, _b;
@@ -77,7 +79,10 @@ const _sfc_main = vue.defineComponent({
77
79
  _form[column.range] = rangeTemp[column.range];
78
80
  } else if (column.component === "select") {
79
81
  _form[column.key] = column.defaultValue || null;
80
- } else {
82
+ } else if (column.component === "input-group") {
83
+ _form[column.selectKey] = column.selectDefaultValue || "";
84
+ _form[column.inputKey] = column.inputDefaultValue || "";
85
+ } else if (column.component) {
81
86
  _form[column.key] = column.defaultValue || "";
82
87
  }
83
88
  });
@@ -179,17 +184,48 @@ const _sfc_main = vue.defineComponent({
179
184
  active: hasValue.value(item.key)
180
185
  }, {
181
186
  default: vue.withCtx(() => [
182
- item.component === "input" ? (vue.openBlock(), vue.createBlock(vue.unref(webVue.InputSearch), {
183
- key: 0,
187
+ item.slot ? vue.renderSlot(_ctx.$slots, item.slot, { key: 0 }) : item.component === "input-group" ? (vue.openBlock(), vue.createBlock(vue.unref(webVue.InputGroup), { key: 1 }, {
188
+ default: vue.withCtx(() => [
189
+ vue.createVNode(vue.unref(webVue.Select), {
190
+ modelValue: form.value[item.selectKey],
191
+ "onUpdate:modelValue": ($event) => form.value[item.selectKey] = $event,
192
+ "default-active-first-option": "",
193
+ style: { "width": "100px" }
194
+ }, {
195
+ default: vue.withCtx(() => [
196
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(item.selectOptions, (option, idx) => {
197
+ return vue.openBlock(), vue.createBlock(vue.unref(webVue.Option), {
198
+ key: idx,
199
+ value: option.value
200
+ }, {
201
+ default: vue.withCtx(() => [
202
+ vue.createTextVNode(vue.toDisplayString(option.label), 1)
203
+ ]),
204
+ _: 2
205
+ }, 1032, ["value"]);
206
+ }), 128))
207
+ ]),
208
+ _: 2
209
+ }, 1032, ["modelValue", "onUpdate:modelValue"]),
210
+ vue.createVNode(vue.unref(webVue.Input), {
211
+ modelValue: form.value[item.inputKey],
212
+ "onUpdate:modelValue": ($event) => form.value[item.inputKey] = $event,
213
+ placeholder: item.placeholder ? item.placeholder : `\u8BF7\u8F93\u5165${item.inputLabel}`,
214
+ style: { "width": "180px" }
215
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "placeholder"])
216
+ ]),
217
+ _: 2
218
+ }, 1024)) : item.component === "input" ? (vue.openBlock(), vue.createBlock(vue.unref(webVue.InputSearch), {
219
+ key: 2,
184
220
  modelValue: form.value[item.key],
185
221
  "onUpdate:modelValue": ($event) => form.value[item.key] = $event,
186
222
  style: vue.normalizeStyle({ width: styleWidth(columnsMap.value[item.key]) }),
187
223
  "allow-clear": "",
188
224
  size: "medium",
189
- placeholder: `\u8BF7\u8F93\u5165${item.label}`
225
+ placeholder: item.placeholder ? item.placeholder : `\u8BF7\u8F93\u5165${item.label}`
190
226
  }, null, 8, ["modelValue", "onUpdate:modelValue", "style", "placeholder"])) : vue.createCommentVNode("v-if", true),
191
227
  item.component === "select" ? (vue.openBlock(), vue.createBlock(vue.unref(webVue.Select), {
192
- key: 1,
228
+ key: 3,
193
229
  modelValue: form.value[item.key],
194
230
  "onUpdate:modelValue": ($event) => form.value[item.key] = $event,
195
231
  "popup-container": "#base-filter-popup-container",
@@ -197,13 +233,13 @@ const _sfc_main = vue.defineComponent({
197
233
  "allow-search": item.allowSearch,
198
234
  "default-active-first-option": false,
199
235
  style: vue.normalizeStyle({ width: styleWidth(columnsMap.value[item.key]) }),
200
- placeholder: `\u8BF7\u9009\u62E9${item.label}`,
236
+ placeholder: item.placeholder ? item.placeholder : `\u8BF7\u9009\u62E9${item.label}`,
201
237
  onSearch: ($event) => handleSelectSearch($event, item),
202
238
  onPopupVisibleChange: ($event) => handleSelectPopupChange($event, item),
203
239
  onChange: ($event) => handleSelectChange($event, item)
204
240
  }, {
205
241
  default: vue.withCtx(() => [
206
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(getOptions(item), (opt) => {
242
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(getOptions.value(item), (opt) => {
207
243
  return vue.openBlock(), vue.createBlock(vue.unref(webVue.Option), {
208
244
  key: opt.value,
209
245
  label: opt.label,
@@ -214,7 +250,7 @@ const _sfc_main = vue.defineComponent({
214
250
  _: 2
215
251
  }, 1032, ["modelValue", "onUpdate:modelValue", "allow-search", "style", "placeholder", "onSearch", "onPopupVisibleChange", "onChange"])) : vue.createCommentVNode("v-if", true),
216
252
  item.component === "range-picker" ? (vue.openBlock(), vue.createBlock(vue.unref(webVue.RangePicker), {
217
- key: 2,
253
+ key: 4,
218
254
  modelValue: form.value[item.key].range,
219
255
  "onUpdate:modelValue": ($event) => form.value[item.key].range = $event,
220
256
  style: vue.normalizeStyle({ width: styleWidth(form.value[item.key]) }),
@@ -225,7 +261,28 @@ const _sfc_main = vue.defineComponent({
225
261
  "popup-container": "#base-filter-popup-container",
226
262
  onClick: _cache[1] || (_cache[1] = vue.withModifiers(() => {
227
263
  }, ["stop"]))
228
- }, null, 8, ["modelValue", "onUpdate:modelValue", "style"])) : vue.createCommentVNode("v-if", true)
264
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "style"])) : vue.createCommentVNode("v-if", true),
265
+ item.component === "radio" ? (vue.openBlock(), vue.createBlock(vue.unref(webVue.RadioGroup), {
266
+ key: 5,
267
+ modelValue: form.value[item.key],
268
+ "onUpdate:modelValue": ($event) => form.value[item.key] = $event,
269
+ type: "button"
270
+ }, {
271
+ default: vue.withCtx(() => [
272
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(item.options || [], (option, idx) => {
273
+ return vue.openBlock(), vue.createBlock(vue.unref(webVue.Radio), {
274
+ key: idx,
275
+ value: option.value
276
+ }, {
277
+ default: vue.withCtx(() => [
278
+ vue.createTextVNode(vue.toDisplayString(option.label), 1)
279
+ ]),
280
+ _: 2
281
+ }, 1032, ["value"]);
282
+ }), 128))
283
+ ]),
284
+ _: 2
285
+ }, 1032, ["modelValue", "onUpdate:modelValue"])) : vue.createCommentVNode("v-if", true)
229
286
  ]),
230
287
  _: 2
231
288
  }, 1032, ["active"]);
package/lib/config.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  var _a, _b, _c, _d, _e, _f, _g, _h;
3
3
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
4
- const DEFAULT_BASE_API = ((_b = (_a = window.situoyun) == null ? void 0 : _a.env) == null ? void 0 : _b.BASE_HOST) || "https://site.cmstop.xyz";
4
+ const DEFAULT_BASE_API = ((_b = (_a = window.situoyun) == null ? void 0 : _a.env) == null ? void 0 : _b.BASE_HOST) || "https://site.r.cmstop.xyz";
5
5
  const DEFAULT_BASE_ACCOUNT_HOST = ((_d = (_c = window.situoyun) == null ? void 0 : _c.env) == null ? void 0 : _d.BASE_ACCOUNT_HOST) || "https://account.cmstop.xyz";
6
6
  const DEFAULT_UPLOAD_CHUNK_SIZE = ((_f = (_e = window.situoyun) == null ? void 0 : _e.env) == null ? void 0 : _f.UPLOAD_CHUNK_SIZE) || 5242880;
7
7
  const DEFAULT_UPLOAD_URL = ((_h = (_g = window.situoyun) == null ? void 0 : _g.env) == null ? void 0 : _h.BASE_STATIC_FILE_API) || "https://oss.cmstop.xyz/maple/v1";