@cmstops/pro-compo 3.9.1-stable.0 → 3.9.1-stable.2
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/index.css +49 -4
- package/dist/index.min.css +1 -1
- package/es/config.js +1 -1
- package/es/contentDetailList/component.js +24 -0
- package/es/contentDetailList/components/Content/index.js +2 -1
- package/es/contentDetailList/components/Doc/index.js +6 -0
- package/es/docHistory/component.js +41 -12
- package/es/docHistory/style/index.css +4 -0
- package/es/docHistory/style/index.less +5 -0
- package/es/hooks/usePopper.d.ts +1 -1
- package/es/hooks/usePopper.js +3 -3
- package/es/hooks/useUpload.d.ts +50 -2
- package/es/hooks/useUpload.js +43 -4
- package/es/index.css +49 -4
- package/es/selectResourceModal/__demo__/module/DivWrapper.d.ts +268 -0
- package/es/selectResourceModal/__demo__/module/basic.d.ts +299 -0
- package/es/selectResourceModal/components/List/ListLocal/index.js +8 -3
- package/es/selectResourceModal/components/List/ListNormal/Filter.js +198 -90
- package/es/selectResourceModal/components/List/ListNormal/index.js +23 -7
- package/es/selectResourceModal/hooks/useResponsiveFilter.d.ts +21 -0
- package/es/selectResourceModal/hooks/useResponsiveFilter.js +142 -0
- package/es/selectResourceModal/style/index.css +45 -4
- package/es/selectResourceModal/style/index.less +14 -0
- package/es/selectResourceModal/style/list.less +40 -4
- package/es/utils/index.js +6 -6
- package/lib/config.js +1 -1
- package/lib/contentDetailList/component.js +24 -0
- package/lib/contentDetailList/components/Content/index.js +2 -1
- package/lib/contentDetailList/components/Doc/index.js +6 -0
- package/lib/docHistory/component.js +39 -10
- package/lib/docHistory/style/index.css +4 -0
- package/lib/docHistory/style/index.less +5 -0
- package/lib/hooks/usePopper.js +3 -3
- package/lib/hooks/useUpload.js +43 -3
- package/lib/index.css +49 -4
- package/lib/selectResourceModal/components/List/ListLocal/index.js +6 -1
- package/lib/selectResourceModal/components/List/ListNormal/Filter.js +195 -87
- package/lib/selectResourceModal/components/List/ListNormal/index.js +22 -6
- package/lib/selectResourceModal/hooks/useResponsiveFilter.js +144 -0
- package/lib/selectResourceModal/style/index.css +45 -4
- package/lib/selectResourceModal/style/index.less +14 -0
- package/lib/selectResourceModal/style/list.less +40 -4
- package/lib/utils/index.js +6 -6
- package/package.json +1 -1
|
@@ -23,6 +23,7 @@ const _sfc_main = vue.defineComponent({
|
|
|
23
23
|
var _a;
|
|
24
24
|
return (_a = userInfo == null ? void 0 : userInfo.value) == null ? void 0 : _a.repository_id;
|
|
25
25
|
});
|
|
26
|
+
const { template, initTemplate } = useUpload.useUploadConfig();
|
|
26
27
|
const { list, uploadFile, reTranscode, transcodingFile, removeRecord } = useUpload["default"]();
|
|
27
28
|
function handleChange(file) {
|
|
28
29
|
if (!baseAPI || !repoId.value)
|
|
@@ -32,7 +33,8 @@ const _sfc_main = vue.defineComponent({
|
|
|
32
33
|
file.file,
|
|
33
34
|
0,
|
|
34
35
|
repoId.value,
|
|
35
|
-
(media) => transcodingFile(baseAPI, media, repoId.value)
|
|
36
|
+
(media) => transcodingFile(baseAPI, media, repoId.value),
|
|
37
|
+
{ template: template.value }
|
|
36
38
|
);
|
|
37
39
|
}
|
|
38
40
|
async function handleOptions(e) {
|
|
@@ -55,6 +57,9 @@ const _sfc_main = vue.defineComponent({
|
|
|
55
57
|
removeRecord(e.item);
|
|
56
58
|
}
|
|
57
59
|
}
|
|
60
|
+
vue.onMounted(() => {
|
|
61
|
+
initTemplate(baseAPI);
|
|
62
|
+
});
|
|
58
63
|
return (_ctx, _cache) => {
|
|
59
64
|
return vue.openBlock(), vue.createBlock(ListWraper, null, {
|
|
60
65
|
"footer-extra": vue.withCtx(() => [
|
|
@@ -7,38 +7,66 @@ var useAttachement = require("../../../../hooks/useAttachement.js");
|
|
|
7
7
|
var typeMap = require("../../../../utils/typeMap.js");
|
|
8
8
|
var selectionApis = require("../../../scripts/selectionApis.js");
|
|
9
9
|
var resource = require("../../../../utils/resource.js");
|
|
10
|
+
var useResponsiveFilter = require("../../../hooks/useResponsiveFilter.js");
|
|
10
11
|
const _hoisted_1 = { class: "list-filter-wrapper" };
|
|
11
12
|
const _hoisted_2 = { class: "list-filter" };
|
|
12
|
-
const _hoisted_3 = { class: "
|
|
13
|
-
const _hoisted_4 = {
|
|
13
|
+
const _hoisted_3 = { class: "more-btn" };
|
|
14
|
+
const _hoisted_4 = { class: "right-prefix" };
|
|
14
15
|
const _hoisted_5 = {
|
|
15
16
|
class: "filter-item",
|
|
16
|
-
style: { "width": "
|
|
17
|
+
style: { "width": "200px" }
|
|
18
|
+
};
|
|
19
|
+
const _hoisted_6 = {
|
|
20
|
+
class: "filter-item",
|
|
21
|
+
style: { "width": "180px" }
|
|
17
22
|
};
|
|
18
|
-
const _hoisted_6 = { class: "filter-item" };
|
|
19
23
|
const _hoisted_7 = {
|
|
24
|
+
class: "filter-item",
|
|
25
|
+
style: { "width": "170px" }
|
|
26
|
+
};
|
|
27
|
+
const _hoisted_8 = {
|
|
28
|
+
class: "filter-item",
|
|
29
|
+
style: { "width": "240px" }
|
|
30
|
+
};
|
|
31
|
+
const _hoisted_9 = {
|
|
32
|
+
class: "filter-item",
|
|
33
|
+
style: { "width": "240px" }
|
|
34
|
+
};
|
|
35
|
+
const _hoisted_10 = {
|
|
20
36
|
key: 0,
|
|
21
37
|
class: "filter-item"
|
|
22
38
|
};
|
|
23
|
-
const
|
|
24
|
-
const
|
|
39
|
+
const _hoisted_11 = { class: "filter-extra" };
|
|
40
|
+
const _hoisted_12 = { class: "filter-item" };
|
|
41
|
+
const _hoisted_13 = {
|
|
25
42
|
key: 0,
|
|
26
43
|
class: "list-filter-tags"
|
|
27
44
|
};
|
|
28
|
-
const
|
|
45
|
+
const _hoisted_14 = ["onClick"];
|
|
29
46
|
const _sfc_main = vue.defineComponent({
|
|
30
47
|
__name: "Filter",
|
|
31
48
|
props: {
|
|
49
|
+
smallScreen: { type: Boolean },
|
|
32
50
|
disableUploadBy: { type: Boolean }
|
|
33
51
|
},
|
|
34
52
|
emits: ["upload", "change"],
|
|
35
53
|
setup(__props, { expose: __expose, emit: __emit }) {
|
|
54
|
+
var _a, _b, _c;
|
|
36
55
|
const props = __props;
|
|
37
56
|
const emits = __emit;
|
|
38
57
|
const userInfo = vue.inject("userInfo");
|
|
39
58
|
const baseAPI = vue.inject("baseAPI");
|
|
40
59
|
const filterOptions = vue.inject("filterOptions");
|
|
41
60
|
const domainId = vue.computed(() => userInfo == null ? void 0 : userInfo.value.domain_id);
|
|
61
|
+
const filterItemsRef = vue.ref();
|
|
62
|
+
const {
|
|
63
|
+
moreBtnRef,
|
|
64
|
+
popperPanelRef,
|
|
65
|
+
hiddenElementList,
|
|
66
|
+
visible,
|
|
67
|
+
show,
|
|
68
|
+
hide
|
|
69
|
+
} = useResponsiveFilter.useResponsiveFilter(filterItemsRef);
|
|
42
70
|
const { options, loading, load, loadMore, handleSearch } = useSelection({
|
|
43
71
|
labelStr: "alias",
|
|
44
72
|
valueStr: "id",
|
|
@@ -72,7 +100,17 @@ const _sfc_main = vue.defineComponent({
|
|
|
72
100
|
sf: "",
|
|
73
101
|
directory_id: void 0
|
|
74
102
|
};
|
|
75
|
-
|
|
103
|
+
if ((_a = filterOptions == null ? void 0 : filterOptions.value) == null ? void 0 : _a.mediaTypeStrict) {
|
|
104
|
+
originFilter.catalog = filterOptions.value.mediaType.split(",");
|
|
105
|
+
}
|
|
106
|
+
const filter = vue.ref(
|
|
107
|
+
JSON.parse(
|
|
108
|
+
JSON.stringify({
|
|
109
|
+
...originFilter,
|
|
110
|
+
catalog: ((_c = (_b = filterOptions == null ? void 0 : filterOptions.value) == null ? void 0 : _b.mediaType) == null ? void 0 : _c.split(",")) || []
|
|
111
|
+
})
|
|
112
|
+
)
|
|
113
|
+
);
|
|
76
114
|
const handleReset = () => {
|
|
77
115
|
filter.value = JSON.parse(JSON.stringify(originFilter));
|
|
78
116
|
};
|
|
@@ -117,82 +155,114 @@ const _sfc_main = vue.defineComponent({
|
|
|
117
155
|
filter.value.keyword = val;
|
|
118
156
|
filter.value.precise_keyword = "";
|
|
119
157
|
}
|
|
158
|
+
filter.value.sf = "";
|
|
120
159
|
}
|
|
121
160
|
});
|
|
122
|
-
vue.watch(
|
|
123
|
-
() => searchType.value,
|
|
124
|
-
() => {
|
|
125
|
-
searchInput.value = filter.value.keyword || filter.value.precise_keyword;
|
|
126
|
-
}
|
|
127
|
-
);
|
|
128
161
|
const isEmpty = vue.computed(() => {
|
|
129
|
-
return Object.keys(
|
|
162
|
+
return Object.keys(originFilter).every((key) => {
|
|
163
|
+
if (key === "catalog") {
|
|
164
|
+
const currentCatalog = filter.value[key] || [];
|
|
165
|
+
const originCatalog = originFilter[key] || [];
|
|
166
|
+
return currentCatalog.length === originCatalog.length && currentCatalog.every((v) => originCatalog.includes(v));
|
|
167
|
+
}
|
|
130
168
|
return filter.value[key] === originFilter[key];
|
|
131
169
|
});
|
|
132
170
|
});
|
|
133
171
|
vue.watch(
|
|
134
172
|
() => filter.value,
|
|
135
|
-
() => {
|
|
136
|
-
const result = { ...
|
|
173
|
+
(val) => {
|
|
174
|
+
const result = { ...val };
|
|
137
175
|
Object.keys(result).forEach((key) => {
|
|
138
176
|
if (props.disableUploadBy && key === "upload_by")
|
|
139
177
|
delete result[key];
|
|
140
|
-
if (
|
|
141
|
-
|
|
178
|
+
if (result[key] === "" || result[key] === null || result[key] === void 0) {
|
|
179
|
+
if (key !== "catalog") {
|
|
180
|
+
delete result[key];
|
|
181
|
+
}
|
|
182
|
+
}
|
|
142
183
|
});
|
|
143
|
-
if (
|
|
144
|
-
result.catalog
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
},
|
|
149
|
-
{ deep: true, immediate: true }
|
|
150
|
-
);
|
|
151
|
-
vue.watch(
|
|
152
|
-
() => filterOptions == null ? void 0 : filterOptions.value,
|
|
153
|
-
() => {
|
|
154
|
-
var _a;
|
|
155
|
-
if ((_a = filterOptions == null ? void 0 : filterOptions.value) == null ? void 0 : _a.mediaType) {
|
|
156
|
-
filter.value.catalog = filterOptions == null ? void 0 : filterOptions.value.mediaType.split(",");
|
|
157
|
-
if (filterOptions == null ? void 0 : filterOptions.value.mediaTypeStrict) {
|
|
158
|
-
originFilter.catalog = filterOptions == null ? void 0 : filterOptions.value.mediaType.split(",");
|
|
184
|
+
if (result.catalog && Array.isArray(result.catalog)) {
|
|
185
|
+
if (result.catalog.length > 0) {
|
|
186
|
+
result.catalog = result.catalog.join(",");
|
|
187
|
+
} else {
|
|
188
|
+
delete result.catalog;
|
|
159
189
|
}
|
|
160
190
|
}
|
|
191
|
+
emits("change", result);
|
|
161
192
|
},
|
|
162
|
-
{
|
|
193
|
+
{ deep: true, immediate: true }
|
|
163
194
|
);
|
|
164
195
|
vue.onMounted(() => {
|
|
165
196
|
load();
|
|
166
197
|
});
|
|
167
198
|
__expose({
|
|
168
|
-
|
|
199
|
+
filter,
|
|
200
|
+
handleReset
|
|
169
201
|
});
|
|
170
202
|
return (_ctx, _cache) => {
|
|
171
|
-
var
|
|
203
|
+
var _a2;
|
|
172
204
|
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
|
|
205
|
+
vue.createCommentVNode(" Use filterItemsRef's parentElement as the container for boundary checks "),
|
|
173
206
|
vue.createElementVNode("div", _hoisted_2, [
|
|
174
|
-
vue.
|
|
207
|
+
vue.createCommentVNode(" Filter Items Container "),
|
|
208
|
+
vue.createElementVNode("div", {
|
|
209
|
+
id: "resource-filter-pannel",
|
|
210
|
+
ref_key: "filterItemsRef",
|
|
211
|
+
ref: filterItemsRef,
|
|
212
|
+
class: "filter-list"
|
|
213
|
+
}, [
|
|
214
|
+
vue.createCommentVNode(" More Filters Button and Popper Panel "),
|
|
215
|
+
vue.createElementVNode("div", _hoisted_3, [
|
|
216
|
+
vue.createElementVNode("div", {
|
|
217
|
+
ref_key: "moreBtnRef",
|
|
218
|
+
ref: moreBtnRef
|
|
219
|
+
}, [
|
|
220
|
+
vue.withDirectives(vue.createVNode(vue.unref(webVue.Button), {
|
|
221
|
+
style: { marginRight: "10px" },
|
|
222
|
+
onClick: _cache[0] || (_cache[0] = vue.withModifiers(() => vue.unref(visible) ? vue.unref(hide)() : vue.unref(show)(), ["stop"]))
|
|
223
|
+
}, {
|
|
224
|
+
default: vue.withCtx(() => [
|
|
225
|
+
vue.createElementVNode("span", _hoisted_4, [
|
|
226
|
+
_cache[11] || (_cache[11] = vue.createTextVNode(" \u66F4\u591A ")),
|
|
227
|
+
vue.createVNode(vue.unref(icon.IconCaretDown))
|
|
228
|
+
])
|
|
229
|
+
]),
|
|
230
|
+
_: 1
|
|
231
|
+
}, 512), [
|
|
232
|
+
[vue.vShow, vue.unref(hiddenElementList).length]
|
|
233
|
+
])
|
|
234
|
+
], 512),
|
|
235
|
+
vue.withDirectives(vue.createElementVNode("div", {
|
|
236
|
+
ref_key: "popperPanelRef",
|
|
237
|
+
ref: popperPanelRef,
|
|
238
|
+
class: "filter-pannel",
|
|
239
|
+
onClick: _cache[1] || (_cache[1] = vue.withModifiers(() => {
|
|
240
|
+
}, ["stop"]))
|
|
241
|
+
}, null, 512), [
|
|
242
|
+
[vue.vShow, vue.unref(visible)]
|
|
243
|
+
])
|
|
244
|
+
]),
|
|
175
245
|
vue.createCommentVNode(" \u5173\u952E\u8BCD "),
|
|
176
|
-
vue.createElementVNode("div",
|
|
246
|
+
vue.createElementVNode("div", _hoisted_5, [
|
|
177
247
|
vue.createVNode(vue.unref(webVue.Input), {
|
|
178
248
|
modelValue: searchInput.value,
|
|
179
|
-
"onUpdate:modelValue": _cache[
|
|
249
|
+
"onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => searchInput.value = $event),
|
|
180
250
|
"allow-clear": "",
|
|
181
251
|
placeholder: "\u8BF7\u8F93\u5165\u5173\u952E\u8BCD"
|
|
182
252
|
}, {
|
|
183
253
|
prepend: vue.withCtx(() => [
|
|
184
254
|
vue.createVNode(vue.unref(webVue.Dropdown), {
|
|
185
|
-
onSelect: _cache[
|
|
255
|
+
onSelect: _cache[2] || (_cache[2] = (e) => searchType.value = e)
|
|
186
256
|
}, {
|
|
187
257
|
content: vue.withCtx(() => [
|
|
188
258
|
vue.createVNode(vue.unref(webVue.Doption), { value: 0 }, {
|
|
189
|
-
default: vue.withCtx(() => _cache[
|
|
259
|
+
default: vue.withCtx(() => _cache[12] || (_cache[12] = [
|
|
190
260
|
vue.createTextVNode("\u7CBE\u51C6\u641C")
|
|
191
261
|
])),
|
|
192
262
|
_: 1
|
|
193
263
|
}),
|
|
194
264
|
vue.createVNode(vue.unref(webVue.Doption), { value: 1 }, {
|
|
195
|
-
default: vue.withCtx(() => _cache[
|
|
265
|
+
default: vue.withCtx(() => _cache[13] || (_cache[13] = [
|
|
196
266
|
vue.createTextVNode("\u6A21\u7CCA\u641C")
|
|
197
267
|
])),
|
|
198
268
|
_: 1
|
|
@@ -213,24 +283,34 @@ const _sfc_main = vue.defineComponent({
|
|
|
213
283
|
}, 8, ["modelValue"])
|
|
214
284
|
]),
|
|
215
285
|
vue.createCommentVNode(" \u76EE\u5F55 "),
|
|
216
|
-
vue.
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
286
|
+
vue.createElementVNode("div", _hoisted_6, [
|
|
287
|
+
vue.createVNode(vue.unref(webVue.TreeSelect), {
|
|
288
|
+
modelValue: filter.value.directory_id,
|
|
289
|
+
"onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => filter.value.directory_id = $event),
|
|
290
|
+
data: vue.unref(tree),
|
|
291
|
+
"popup-container": "#resource-filter-pannel",
|
|
292
|
+
placeholder: "\u8BF7\u9009\u62E9\u76EE\u5F55",
|
|
293
|
+
"field-names": {
|
|
294
|
+
title: "alias",
|
|
295
|
+
key: "id"
|
|
296
|
+
},
|
|
297
|
+
"allow-clear": "",
|
|
298
|
+
"allow-search": "",
|
|
299
|
+
"filter-tree-node": (searchValue, nodeData) => {
|
|
300
|
+
console.log(nodeData);
|
|
301
|
+
if (!nodeData.alias)
|
|
302
|
+
return false;
|
|
303
|
+
return nodeData.alias.toLowerCase().indexOf(searchValue.toLowerCase()) > -1;
|
|
304
|
+
}
|
|
305
|
+
}, null, 8, ["modelValue", "data", "filter-tree-node"])
|
|
306
|
+
]),
|
|
228
307
|
vue.createCommentVNode(" \u7D20\u6750\u7C7B\u578B "),
|
|
229
|
-
vue.createElementVNode("div",
|
|
308
|
+
vue.createElementVNode("div", _hoisted_7, [
|
|
230
309
|
vue.createVNode(vue.unref(webVue.Select), {
|
|
231
310
|
modelValue: filter.value.catalog,
|
|
232
|
-
"onUpdate:modelValue": _cache[
|
|
233
|
-
disabled: (
|
|
311
|
+
"onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => filter.value.catalog = $event),
|
|
312
|
+
disabled: (_a2 = vue.unref(filterOptions)) == null ? void 0 : _a2.mediaTypeStrict,
|
|
313
|
+
"popup-container": "#resource-filter-pannel",
|
|
234
314
|
"allow-clear": "",
|
|
235
315
|
placeholder: "\u7C7B\u578B",
|
|
236
316
|
multiple: "",
|
|
@@ -249,19 +329,22 @@ const _sfc_main = vue.defineComponent({
|
|
|
249
329
|
}, 8, ["modelValue", "disabled"])
|
|
250
330
|
]),
|
|
251
331
|
vue.createCommentVNode(" \u65F6\u95F4\u8303\u56F4 "),
|
|
252
|
-
vue.
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
332
|
+
vue.createElementVNode("div", _hoisted_8, [
|
|
333
|
+
vue.createVNode(vue.unref(webVue.RangePicker), {
|
|
334
|
+
modelValue: rangeTime.value,
|
|
335
|
+
"onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => rangeTime.value = $event),
|
|
336
|
+
"allow-clear": "",
|
|
337
|
+
"popup-container": "#resource-filter-pannel"
|
|
338
|
+
}, null, 8, ["modelValue"])
|
|
339
|
+
]),
|
|
258
340
|
vue.createCommentVNode(" \u7D20\u6750\u4E0A\u4F20\u6765\u6E90 "),
|
|
259
|
-
vue.createElementVNode("div",
|
|
341
|
+
vue.createElementVNode("div", _hoisted_9, [
|
|
260
342
|
vue.createVNode(vue.unref(webVue.Select), {
|
|
261
343
|
modelValue: filter.value.source,
|
|
262
|
-
"onUpdate:modelValue": _cache[
|
|
344
|
+
"onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => filter.value.source = $event),
|
|
263
345
|
"allow-clear": "",
|
|
264
|
-
placeholder: "\u6765\u6E90"
|
|
346
|
+
placeholder: "\u6765\u6E90",
|
|
347
|
+
"popup-container": "#resource-filter-pannel"
|
|
265
348
|
}, {
|
|
266
349
|
default: vue.withCtx(() => [
|
|
267
350
|
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(resourceSource), (item) => {
|
|
@@ -276,14 +359,15 @@ const _sfc_main = vue.defineComponent({
|
|
|
276
359
|
}, 8, ["modelValue"])
|
|
277
360
|
]),
|
|
278
361
|
vue.createCommentVNode(" \u7D20\u6750\u4E0A\u4F20\u4EBA "),
|
|
279
|
-
!_ctx.disableUploadBy ? (vue.openBlock(), vue.createElementBlock("div",
|
|
362
|
+
!_ctx.disableUploadBy ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_10, [
|
|
280
363
|
vue.createVNode(vue.unref(webVue.Select), {
|
|
281
364
|
modelValue: filter.value.upload_by,
|
|
282
|
-
"onUpdate:modelValue": _cache[
|
|
365
|
+
"onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => filter.value.upload_by = $event),
|
|
283
366
|
"allow-clear": "",
|
|
284
367
|
placeholder: "\u4E0A\u4F20\u4EBA",
|
|
285
368
|
loading: vue.unref(loading),
|
|
286
369
|
"allow-search": "",
|
|
370
|
+
"popup-container": "#resource-filter-pannel",
|
|
287
371
|
onSearch: vue.unref(handleSearch),
|
|
288
372
|
onDropdownReachBottom: vue.unref(loadMore)
|
|
289
373
|
}, {
|
|
@@ -298,40 +382,64 @@ const _sfc_main = vue.defineComponent({
|
|
|
298
382
|
]),
|
|
299
383
|
_: 1
|
|
300
384
|
}, 8, ["modelValue", "loading", "onSearch", "onDropdownReachBottom"])
|
|
301
|
-
])) : vue.createCommentVNode("v-if", true)
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
385
|
+
])) : vue.createCommentVNode("v-if", true)
|
|
386
|
+
], 512),
|
|
387
|
+
vue.createElementVNode("div", _hoisted_11, [
|
|
388
|
+
vue.createCommentVNode(" \u91CD\u7F6E\u6309\u94AE - Wrap in filter-item to be managed by the hook "),
|
|
389
|
+
vue.withDirectives(vue.createElementVNode("div", _hoisted_12, [
|
|
390
|
+
_ctx.smallScreen ? (vue.openBlock(), vue.createBlock(vue.unref(webVue.Button), {
|
|
391
|
+
key: 0,
|
|
392
|
+
type: "text",
|
|
393
|
+
onClick: handleReset
|
|
394
|
+
}, {
|
|
395
|
+
icon: vue.withCtx(() => [
|
|
396
|
+
vue.createVNode(vue.unref(icon.IconRefresh))
|
|
397
|
+
]),
|
|
398
|
+
_: 1
|
|
399
|
+
})) : (vue.openBlock(), vue.createBlock(vue.unref(webVue.Button), {
|
|
400
|
+
key: 1,
|
|
401
|
+
type: "text",
|
|
402
|
+
onClick: handleReset
|
|
403
|
+
}, {
|
|
404
|
+
default: vue.withCtx(() => _cache[14] || (_cache[14] = [
|
|
405
|
+
vue.createTextVNode(" \u91CD\u7F6E ")
|
|
406
|
+
])),
|
|
407
|
+
_: 1
|
|
408
|
+
}))
|
|
409
|
+
], 512), [
|
|
410
|
+
[vue.vShow, !isEmpty.value]
|
|
411
|
+
]),
|
|
412
|
+
_ctx.smallScreen ? (vue.openBlock(), vue.createBlock(vue.unref(webVue.Button), {
|
|
413
|
+
key: 0,
|
|
414
|
+
type: "primary",
|
|
415
|
+
onClick: _cache[9] || (_cache[9] = ($event) => emits("upload"))
|
|
306
416
|
}, {
|
|
307
|
-
|
|
308
|
-
vue.
|
|
309
|
-
])
|
|
417
|
+
icon: vue.withCtx(() => [
|
|
418
|
+
vue.createVNode(vue.unref(icon.IconUpload))
|
|
419
|
+
]),
|
|
310
420
|
_: 1
|
|
311
|
-
})) : vue.
|
|
312
|
-
|
|
313
|
-
vue.createElementVNode("div", _hoisted_8, [
|
|
314
|
-
vue.createVNode(vue.unref(webVue.Button), {
|
|
421
|
+
})) : (vue.openBlock(), vue.createBlock(vue.unref(webVue.Button), {
|
|
422
|
+
key: 1,
|
|
315
423
|
type: "primary",
|
|
316
|
-
onClick: _cache[
|
|
424
|
+
onClick: _cache[10] || (_cache[10] = ($event) => emits("upload"))
|
|
317
425
|
}, {
|
|
318
426
|
icon: vue.withCtx(() => [
|
|
319
427
|
vue.createVNode(vue.unref(icon.IconUpload))
|
|
320
428
|
]),
|
|
321
429
|
default: vue.withCtx(() => [
|
|
322
|
-
_cache[
|
|
430
|
+
_cache[15] || (_cache[15] = vue.createTextVNode(" \u4E0A\u4F20 "))
|
|
323
431
|
]),
|
|
324
432
|
_: 1
|
|
325
|
-
})
|
|
433
|
+
}))
|
|
326
434
|
])
|
|
327
435
|
]),
|
|
328
|
-
searchInput.value ? (vue.openBlock(), vue.createElementBlock("div",
|
|
436
|
+
searchInput.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_13, [
|
|
329
437
|
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(resource.keywordsSelection), (item) => {
|
|
330
438
|
return vue.openBlock(), vue.createElementBlock("div", {
|
|
331
439
|
key: item.value,
|
|
332
440
|
class: vue.normalizeClass(["list-filter-tag", { active: filter.value.sf === item.value }]),
|
|
333
441
|
onClick: ($event) => filter.value.sf = item.value
|
|
334
|
-
}, vue.toDisplayString(item.name), 11,
|
|
442
|
+
}, vue.toDisplayString(item.name), 11, _hoisted_14);
|
|
335
443
|
}), 128))
|
|
336
444
|
])) : vue.createCommentVNode("v-if", true)
|
|
337
445
|
]);
|
|
@@ -4,7 +4,6 @@ var webVue = require("@arco-design/web-vue");
|
|
|
4
4
|
var ListWraper = require("../ListWraper.js");
|
|
5
5
|
var useAttachement = require("../../../../hooks/useAttachement.js");
|
|
6
6
|
var Filter = require("./Filter.js");
|
|
7
|
-
const _hoisted_1 = { class: "list-item-grid" };
|
|
8
7
|
const _sfc_main = vue.defineComponent({
|
|
9
8
|
__name: "index",
|
|
10
9
|
props: {
|
|
@@ -28,6 +27,18 @@ const _sfc_main = vue.defineComponent({
|
|
|
28
27
|
changeKey
|
|
29
28
|
} = useAttachement["default"]({ key: props.activeKey, BASE_API });
|
|
30
29
|
vue.watch(() => props.activeKey, changeKey);
|
|
30
|
+
const listWrapper = vue.ref(null);
|
|
31
|
+
const smallScreen = vue.ref(false);
|
|
32
|
+
vue.watch(
|
|
33
|
+
() => {
|
|
34
|
+
var _a;
|
|
35
|
+
return (_a = listWrapper.value) == null ? void 0 : _a.offsetWidth;
|
|
36
|
+
},
|
|
37
|
+
(val) => {
|
|
38
|
+
smallScreen.value = !!(val && val < 600);
|
|
39
|
+
},
|
|
40
|
+
{ immediate: true }
|
|
41
|
+
);
|
|
31
42
|
vue.onMounted(() => {
|
|
32
43
|
loadData();
|
|
33
44
|
});
|
|
@@ -41,9 +52,10 @@ const _sfc_main = vue.defineComponent({
|
|
|
41
52
|
]),
|
|
42
53
|
header: vue.withCtx(() => [
|
|
43
54
|
vue.createVNode(Filter, {
|
|
55
|
+
smallScreen: smallScreen.value,
|
|
44
56
|
onChange: vue.unref(changeFilter),
|
|
45
57
|
onUpload: _cache[0] || (_cache[0] = ($event) => emits("change-tab", "local"))
|
|
46
|
-
}, null, 8, ["onChange"])
|
|
58
|
+
}, null, 8, ["smallScreen", "onChange"])
|
|
47
59
|
]),
|
|
48
60
|
footer: vue.withCtx(() => [
|
|
49
61
|
vue.createVNode(vue.unref(webVue.Pagination), {
|
|
@@ -52,22 +64,26 @@ const _sfc_main = vue.defineComponent({
|
|
|
52
64
|
total: vue.unref(total),
|
|
53
65
|
"page-size": vue.unref(limit),
|
|
54
66
|
"show-total": "",
|
|
55
|
-
"show-page-size":
|
|
67
|
+
"show-page-size": !smallScreen.value,
|
|
56
68
|
"base-size": 3,
|
|
57
69
|
"buffer-size": 1,
|
|
58
70
|
onChange: _cache[2] || (_cache[2] = (e) => vue.unref(changePage)((e - 1) * vue.unref(limit))),
|
|
59
71
|
onPageSizeChange: vue.unref(changeSize)
|
|
60
|
-
}, null, 8, ["current", "total", "page-size", "onPageSizeChange"])
|
|
72
|
+
}, null, 8, ["current", "total", "page-size", "show-page-size", "onPageSizeChange"])
|
|
61
73
|
]),
|
|
62
74
|
default: vue.withCtx(() => [
|
|
63
|
-
vue.createElementVNode("div",
|
|
75
|
+
vue.createElementVNode("div", {
|
|
76
|
+
ref_key: "listWrapper",
|
|
77
|
+
ref: listWrapper,
|
|
78
|
+
class: "list-item-grid"
|
|
79
|
+
}, [
|
|
64
80
|
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(list), (item) => {
|
|
65
81
|
return vue.renderSlot(_ctx.$slots, "item", {
|
|
66
82
|
key: item.id,
|
|
67
83
|
item
|
|
68
84
|
});
|
|
69
85
|
}), 128))
|
|
70
|
-
])
|
|
86
|
+
], 512)
|
|
71
87
|
]),
|
|
72
88
|
_: 3
|
|
73
89
|
}, 8, ["loading", "is-empty"]);
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
+
var vue = require("vue");
|
|
4
|
+
var usePopper = require("../../hooks/usePopper.js");
|
|
5
|
+
const getRect = (el) => {
|
|
6
|
+
if (!el || typeof el.getClientRects !== "function")
|
|
7
|
+
return { right: 0, width: 0 };
|
|
8
|
+
const rects = el.getClientRects();
|
|
9
|
+
if (rects.length === 0)
|
|
10
|
+
return { right: 0, width: 0 };
|
|
11
|
+
const rect = rects[0];
|
|
12
|
+
return {
|
|
13
|
+
right: rect.right,
|
|
14
|
+
width: rect.width
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
function useResponsiveFilter(filterItemsRef) {
|
|
18
|
+
const moreBtnRef = vue.ref();
|
|
19
|
+
const popperPanelRef = vue.ref();
|
|
20
|
+
const { initPopper, show, visible, hide } = usePopper(
|
|
21
|
+
popperPanelRef,
|
|
22
|
+
moreBtnRef
|
|
23
|
+
);
|
|
24
|
+
const windowWidth = vue.ref(0);
|
|
25
|
+
const filterContainerRightBoundary = vue.ref(0);
|
|
26
|
+
const hiddenElementList = vue.ref([]);
|
|
27
|
+
const initWidths = () => {
|
|
28
|
+
var _a, _b;
|
|
29
|
+
windowWidth.value = ((_a = document.body) == null ? void 0 : _a.clientWidth) || 0;
|
|
30
|
+
const containerElement = (_b = filterItemsRef.value) == null ? void 0 : _b.parentElement;
|
|
31
|
+
if (containerElement) {
|
|
32
|
+
filterContainerRightBoundary.value = getRect(containerElement).right;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
const initResizeListener = () => {
|
|
36
|
+
window.addEventListener("resize", refreshLayout);
|
|
37
|
+
};
|
|
38
|
+
const removeResizeListener = () => {
|
|
39
|
+
window.removeEventListener("resize", refreshLayout);
|
|
40
|
+
};
|
|
41
|
+
const hideElement = (el) => {
|
|
42
|
+
var _a, _b, _c;
|
|
43
|
+
const { width } = getRect(el);
|
|
44
|
+
if (width > 0 && ((_a = filterItemsRef.value) == null ? void 0 : _a.contains(el))) {
|
|
45
|
+
hiddenElementList.value.push({ width, el });
|
|
46
|
+
(_b = filterItemsRef.value) == null ? void 0 : _b.removeChild(el);
|
|
47
|
+
(_c = popperPanelRef.value) == null ? void 0 : _c.insertBefore(el, popperPanelRef.value.firstChild);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
const showElement = () => {
|
|
51
|
+
var _a, _b;
|
|
52
|
+
if (!hiddenElementList.value.length || !filterItemsRef.value)
|
|
53
|
+
return;
|
|
54
|
+
const popEl = hiddenElementList.value.pop();
|
|
55
|
+
if (!popEl)
|
|
56
|
+
return;
|
|
57
|
+
const { el } = popEl;
|
|
58
|
+
(_a = popperPanelRef.value) == null ? void 0 : _a.removeChild(el);
|
|
59
|
+
(_b = filterItemsRef.value) == null ? void 0 : _b.appendChild(el);
|
|
60
|
+
};
|
|
61
|
+
const checkOverflow = () => {
|
|
62
|
+
if (!filterItemsRef.value)
|
|
63
|
+
return -1;
|
|
64
|
+
const containerRight = filterContainerRightBoundary.value;
|
|
65
|
+
const children = filterItemsRef.value.children;
|
|
66
|
+
let currentRightmostBoundary = getRect(filterItemsRef.value).right - getRect(filterItemsRef.value).width;
|
|
67
|
+
for (let i = children.length - 1; i >= 0; i--) {
|
|
68
|
+
const item = children[i];
|
|
69
|
+
if (!item || !item.classList || !item.classList.contains("filter-item"))
|
|
70
|
+
continue;
|
|
71
|
+
const itemRect = getRect(item);
|
|
72
|
+
if (itemRect.right > containerRight - 400) {
|
|
73
|
+
hideElement(item);
|
|
74
|
+
} else {
|
|
75
|
+
currentRightmostBoundary = Math.max(
|
|
76
|
+
currentRightmostBoundary,
|
|
77
|
+
itemRect.right
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return currentRightmostBoundary;
|
|
82
|
+
};
|
|
83
|
+
const refreshLayout = async () => {
|
|
84
|
+
await vue.nextTick();
|
|
85
|
+
initWidths();
|
|
86
|
+
if (!filterItemsRef.value || !popperPanelRef.value)
|
|
87
|
+
return;
|
|
88
|
+
const containerRight = filterContainerRightBoundary.value;
|
|
89
|
+
let lastVisibleItemRight = checkOverflow();
|
|
90
|
+
if (lastVisibleItemRight === -1 && filterItemsRef.value.children.length > 0) {
|
|
91
|
+
lastVisibleItemRight = getRect(filterItemsRef.value).left;
|
|
92
|
+
} else if (filterItemsRef.value.children.length === 0) {
|
|
93
|
+
lastVisibleItemRight = getRect(filterItemsRef.value).left;
|
|
94
|
+
}
|
|
95
|
+
await vue.nextTick();
|
|
96
|
+
let availableSpace = containerRight - lastVisibleItemRight;
|
|
97
|
+
while (hiddenElementList.value.length > 0) {
|
|
98
|
+
const nextHiddenItem = hiddenElementList.value[hiddenElementList.value.length - 1];
|
|
99
|
+
const nextHiddenItemWidth = nextHiddenItem.width;
|
|
100
|
+
if (availableSpace > nextHiddenItemWidth + 10) {
|
|
101
|
+
showElement();
|
|
102
|
+
await vue.nextTick();
|
|
103
|
+
const visibleElements = Array.from(
|
|
104
|
+
filterItemsRef.value.children
|
|
105
|
+
);
|
|
106
|
+
if (visibleElements.length > 0) {
|
|
107
|
+
lastVisibleItemRight = visibleElements.reduce((maxRight, el) => {
|
|
108
|
+
var _a;
|
|
109
|
+
if ((_a = el.classList) == null ? void 0 : _a.contains("filter-item")) {
|
|
110
|
+
return Math.max(maxRight, getRect(el).right);
|
|
111
|
+
}
|
|
112
|
+
return maxRight;
|
|
113
|
+
}, getRect(filterItemsRef.value).left);
|
|
114
|
+
} else {
|
|
115
|
+
lastVisibleItemRight = getRect(filterItemsRef.value).left;
|
|
116
|
+
}
|
|
117
|
+
availableSpace = containerRight - lastVisibleItemRight;
|
|
118
|
+
} else {
|
|
119
|
+
break;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
vue.onMounted(async () => {
|
|
124
|
+
initResizeListener();
|
|
125
|
+
initPopper("bottom-start", [0, 40]);
|
|
126
|
+
await vue.nextTick();
|
|
127
|
+
initWidths();
|
|
128
|
+
await vue.nextTick();
|
|
129
|
+
refreshLayout();
|
|
130
|
+
});
|
|
131
|
+
vue.onUnmounted(() => {
|
|
132
|
+
removeResizeListener();
|
|
133
|
+
});
|
|
134
|
+
return {
|
|
135
|
+
moreBtnRef,
|
|
136
|
+
popperPanelRef,
|
|
137
|
+
hiddenElementList,
|
|
138
|
+
visible,
|
|
139
|
+
show,
|
|
140
|
+
hide,
|
|
141
|
+
refreshLayout
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
exports.useResponsiveFilter = useResponsiveFilter;
|