officialblock 1.0.8 → 1.0.9
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/official-block.cjs.js +1 -1
- package/dist/official-block.es.js +43 -11
- package/dist/official-block.umd.js +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/assets/icon-email.svg +3 -0
- package/src/components/ArticleList/setting.vue +316 -142
- package/src/components/BannerImageWithLink/index.ts +11 -0
- package/src/components/BannerImageWithLink/index.vue +323 -0
- package/src/components/BannerImageWithLink/setting.vue +344 -0
- package/src/components/BannerImageWithLink/type.ts +17 -0
- package/src/components/ContactUsList/index.ts +11 -0
- package/src/components/ContactUsList/index.vue +369 -0
- package/src/components/ContactUsList/setting.vue +497 -0
- package/src/components/ContactUsList/type.ts +17 -0
- package/src/components/CountDown/index.ts +11 -0
- package/src/components/CountDown/index.vue +315 -0
- package/src/components/CountDown/setting.vue +302 -0
- package/src/components/CountDown/type.ts +17 -0
- package/src/components/CustomIframe/index.ts +11 -0
- package/src/components/CustomIframe/index.vue +118 -0
- package/src/components/CustomIframe/setting.vue +323 -0
- package/src/components/CustomIframe/type.ts +17 -0
- package/src/components/Operate/index.vue +1 -2
- package/src/components/ScrollKeyInfo/index.ts +11 -0
- package/src/components/ScrollKeyInfo/index.vue +1345 -0
- package/src/components/ScrollKeyInfo/setting.vue +302 -0
- package/src/components/ScrollKeyInfo/type.ts +17 -0
- package/src/components/TabDefault/components/ComponentSelector/compsData.js +143 -0
- package/src/components/TabDefault/components/ComponentSelector/index.vue +188 -0
- package/src/components/TabDefault/components/PageContent.vue +207 -0
- package/src/components/TabDefault/index.vue +475 -0
- package/src/components/TabDefault/setting.vue +581 -0
- package/src/components/TabDefault/type.ts +17 -0
- package/src/components/TableTwo/index.ts +11 -0
- package/src/components/TableTwo/index.vue +232 -0
- package/src/components/TableTwo/setting.vue +558 -0
- package/src/components/TableTwo/type.ts +17 -0
- package/src/components/index.ts +17 -0
- package/src/styles/component-isolation.scss +2 -1
- package/src/views/components/ArticleListDemo.vue +50 -49
|
@@ -0,0 +1,558 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<a-drawer
|
|
3
|
+
:width="500"
|
|
4
|
+
:visible="show"
|
|
5
|
+
:footer="false"
|
|
6
|
+
@cancel="handleCancel"
|
|
7
|
+
unmountOnClose
|
|
8
|
+
>
|
|
9
|
+
<template #title> {{ data?.type }}组件编辑 </template>
|
|
10
|
+
<div class="seting-box">
|
|
11
|
+
<div class="part_title">表格头部</div>
|
|
12
|
+
<div v-if="!data.headers.length">暂无数据</div>
|
|
13
|
+
<div class="setting-header items-center">
|
|
14
|
+
<draggable
|
|
15
|
+
v-model="data.headers"
|
|
16
|
+
:component-data="{
|
|
17
|
+
tag: 'div',
|
|
18
|
+
type: 'transition-group',
|
|
19
|
+
name: !drag ? 'flip-list' : null,
|
|
20
|
+
}"
|
|
21
|
+
v-bind="linkDragOptions"
|
|
22
|
+
:disabled="false"
|
|
23
|
+
@start="drag = true"
|
|
24
|
+
@end="drag = false"
|
|
25
|
+
item-key="id"
|
|
26
|
+
>
|
|
27
|
+
<template #item="{ element: link }">
|
|
28
|
+
<div class="draggable_box">
|
|
29
|
+
<!-- <div class="btn-group">
|
|
30
|
+
<div class="drag-handle">
|
|
31
|
+
<icon-drag-arrow class="drag-icon" />
|
|
32
|
+
</div>
|
|
33
|
+
<icon-delete class="btn-delete" />
|
|
34
|
+
</div> -->
|
|
35
|
+
<div class="drag_top_box">
|
|
36
|
+
<div @click="toggleCollapse(link)">
|
|
37
|
+
<icon-drag-dot style="margin-right: 10px" />{{ link.title }}
|
|
38
|
+
</div>
|
|
39
|
+
<div>
|
|
40
|
+
<icon-drag-arrow class="icon_drag" />
|
|
41
|
+
<icon-delete
|
|
42
|
+
class="btn-delete"
|
|
43
|
+
@click.stop="handleDelete(link.id)"
|
|
44
|
+
/>
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
47
|
+
<!-- {{ link }} -->
|
|
48
|
+
<transition name="collapse">
|
|
49
|
+
<div v-show="!isCollapsed(link)">
|
|
50
|
+
<p class="item-title" style="margin-top: 20px">Title</p>
|
|
51
|
+
<a-input
|
|
52
|
+
v-model="link.title"
|
|
53
|
+
placeholder="请输入标题"
|
|
54
|
+
allow-clear
|
|
55
|
+
/>
|
|
56
|
+
</div>
|
|
57
|
+
</transition>
|
|
58
|
+
</div>
|
|
59
|
+
</template>
|
|
60
|
+
</draggable>
|
|
61
|
+
</div>
|
|
62
|
+
<a-button type="primary" @click="handleClickAdd">
|
|
63
|
+
<template #icon>
|
|
64
|
+
<icon-plus />
|
|
65
|
+
</template>
|
|
66
|
+
新增
|
|
67
|
+
</a-button>
|
|
68
|
+
<!-- 表格数据 -->
|
|
69
|
+
<div style="margin-top: 30px" class="part_title">表格行</div>
|
|
70
|
+
<div v-if="!data.rows.length">暂无数据</div>
|
|
71
|
+
<div class="setting-header items-center">
|
|
72
|
+
<draggable
|
|
73
|
+
v-model="data.rows"
|
|
74
|
+
:component-data="{
|
|
75
|
+
tag: 'div',
|
|
76
|
+
type: 'transition-group',
|
|
77
|
+
name: !drag ? 'flip-list' : null,
|
|
78
|
+
}"
|
|
79
|
+
v-bind="linkDragOptions"
|
|
80
|
+
:disabled="false"
|
|
81
|
+
@start="drag = true"
|
|
82
|
+
@end="drag = false"
|
|
83
|
+
item-key="id"
|
|
84
|
+
>
|
|
85
|
+
<template #item="{ element: link }">
|
|
86
|
+
<div class="draggable_box">
|
|
87
|
+
<!-- <div class="btn-group">
|
|
88
|
+
<div class="drag-handle">
|
|
89
|
+
<icon-drag-arrow class="drag-icon" />
|
|
90
|
+
</div>
|
|
91
|
+
<icon-delete class="btn-delete" />
|
|
92
|
+
</div> -->
|
|
93
|
+
<div class="drag_top_box">
|
|
94
|
+
<div @click="toggleCollapserow(link)">
|
|
95
|
+
<icon-drag-dot style="margin-right: 10px" />{{ link.title }}
|
|
96
|
+
</div>
|
|
97
|
+
<div>
|
|
98
|
+
<icon-drag-arrow class="icon_drag" />
|
|
99
|
+
<icon-delete
|
|
100
|
+
class="btn-delete"
|
|
101
|
+
@click.stop="handleDeleterows(link.id)"
|
|
102
|
+
/>
|
|
103
|
+
</div>
|
|
104
|
+
</div>
|
|
105
|
+
<!-- {{ link }} -->
|
|
106
|
+
<transition name="collapse">
|
|
107
|
+
<div v-show="!isCollapsedRow(link)">
|
|
108
|
+
<p class="item-title" style="margin-top: 20px">Title</p>
|
|
109
|
+
<a-input
|
|
110
|
+
v-model="link.title"
|
|
111
|
+
placeholder="请输入"
|
|
112
|
+
allow-clear
|
|
113
|
+
/>
|
|
114
|
+
<p class="item-title" style="margin-top: 20px">First</p>
|
|
115
|
+
<a-input
|
|
116
|
+
v-model="link.first"
|
|
117
|
+
placeholder="请输入"
|
|
118
|
+
allow-clear
|
|
119
|
+
/>
|
|
120
|
+
<p class="item-title" style="margin-top: 20px">Second</p>
|
|
121
|
+
<a-input
|
|
122
|
+
v-model="link.second"
|
|
123
|
+
placeholder="请输入"
|
|
124
|
+
allow-clear
|
|
125
|
+
/>
|
|
126
|
+
<p class="item-title" style="margin-top: 20px">Third</p>
|
|
127
|
+
<a-input
|
|
128
|
+
v-model="link.third"
|
|
129
|
+
placeholder="请输入"
|
|
130
|
+
allow-clear
|
|
131
|
+
/>
|
|
132
|
+
<p class="item-title" style="margin-top: 20px">Forth</p>
|
|
133
|
+
<a-input
|
|
134
|
+
v-model="link.forth"
|
|
135
|
+
placeholder="请输入"
|
|
136
|
+
allow-clear
|
|
137
|
+
/>
|
|
138
|
+
</div>
|
|
139
|
+
</transition>
|
|
140
|
+
</div>
|
|
141
|
+
</template>
|
|
142
|
+
</draggable>
|
|
143
|
+
</div>
|
|
144
|
+
<a-button type="primary" @click="handleClickAddrows">
|
|
145
|
+
<template #icon>
|
|
146
|
+
<icon-plus />
|
|
147
|
+
</template>
|
|
148
|
+
新增
|
|
149
|
+
</a-button>
|
|
150
|
+
</div>
|
|
151
|
+
</a-drawer>
|
|
152
|
+
</template>
|
|
153
|
+
|
|
154
|
+
<script lang="ts" setup>
|
|
155
|
+
import draggable from "vuedraggable";
|
|
156
|
+
import { ref, computed, nextTick } from "vue";
|
|
157
|
+
import iconEmailUrl from "@/assets/icon-email.svg";
|
|
158
|
+
import RichTextEditor from "@/components/RichTextEditor";
|
|
159
|
+
import { randomString } from "@/utils/common";
|
|
160
|
+
// 不同类型的拖拽配置选项
|
|
161
|
+
const linkDragOptions = computed(() => ({
|
|
162
|
+
animation: 200,
|
|
163
|
+
group: "links", // 链接专用分组
|
|
164
|
+
disabled: false,
|
|
165
|
+
ghostClass: "ghost",
|
|
166
|
+
}));
|
|
167
|
+
// 拖拽相关状态
|
|
168
|
+
const drag = ref(false);
|
|
169
|
+
const props = defineProps({
|
|
170
|
+
show: {
|
|
171
|
+
type: Boolean,
|
|
172
|
+
default: false,
|
|
173
|
+
},
|
|
174
|
+
|
|
175
|
+
data: {
|
|
176
|
+
type: Object,
|
|
177
|
+
default: () => {},
|
|
178
|
+
},
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
// 折叠状态管理 - 使用Set存储已折叠项的ID
|
|
182
|
+
const collapsedItems = ref(new Set());
|
|
183
|
+
const collapsedItemsRow = ref(new Set());
|
|
184
|
+
|
|
185
|
+
const toggleCollapserow = (item: any) => {
|
|
186
|
+
if (collapsedItemsRow.value.has(item.id)) {
|
|
187
|
+
collapsedItemsRow.value.delete(item.id);
|
|
188
|
+
} else {
|
|
189
|
+
collapsedItemsRow.value.add(item.id);
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
// 切换指定项的折叠状态
|
|
194
|
+
const toggleCollapse = (item: any) => {
|
|
195
|
+
if (collapsedItems.value.has(item.id)) {
|
|
196
|
+
collapsedItems.value.delete(item.id);
|
|
197
|
+
} else {
|
|
198
|
+
collapsedItems.value.add(item.id);
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
const handleDelete = (id: string) => {
|
|
202
|
+
props.data.headers = props.data.headers.filter((item: any) => item.id !== id);
|
|
203
|
+
};
|
|
204
|
+
const handleDeleterows = (id: string) => {
|
|
205
|
+
props.data.rows = props.data.rows.filter((item: any) => item.id !== id);
|
|
206
|
+
};
|
|
207
|
+
|
|
208
|
+
const handleClickAddrows = () => {
|
|
209
|
+
props.data.rows.push({
|
|
210
|
+
title: "请输入",
|
|
211
|
+
first: "",
|
|
212
|
+
second: "",
|
|
213
|
+
third: "",
|
|
214
|
+
forth: "",
|
|
215
|
+
id: randomString(),
|
|
216
|
+
});
|
|
217
|
+
};
|
|
218
|
+
const handleClickAdd = () => {
|
|
219
|
+
const detail = props.data;
|
|
220
|
+
detail.headers.push({
|
|
221
|
+
title: "请输入",
|
|
222
|
+
id: randomString(),
|
|
223
|
+
});
|
|
224
|
+
nextTick(() => {
|
|
225
|
+
const drawerContent = document.querySelector(".arco-drawer-body");
|
|
226
|
+
if (drawerContent) {
|
|
227
|
+
drawerContent.scrollTop = drawerContent.scrollHeight;
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
};
|
|
231
|
+
|
|
232
|
+
// 检查指定项是否已折叠
|
|
233
|
+
const isCollapsed = (item: any) => {
|
|
234
|
+
return collapsedItems.value.has(item.id);
|
|
235
|
+
};
|
|
236
|
+
const isCollapsedRow = (item: any) => {
|
|
237
|
+
return collapsedItemsRow.value.has(item.id);
|
|
238
|
+
};
|
|
239
|
+
|
|
240
|
+
const emit = defineEmits(["update:show"]);
|
|
241
|
+
|
|
242
|
+
const handleCancel = () => {
|
|
243
|
+
emit("update:show", false);
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
// 检查是否应该显示拖拽图标
|
|
247
|
+
const shouldShowDragHandle = (list: any[]) => {
|
|
248
|
+
return list && list.length > 1;
|
|
249
|
+
};
|
|
250
|
+
</script>
|
|
251
|
+
|
|
252
|
+
<style lang="scss" scoped>
|
|
253
|
+
.part_title {
|
|
254
|
+
font-size: 15px;
|
|
255
|
+
font-weight: bold;
|
|
256
|
+
margin-bottom: 5px;
|
|
257
|
+
}
|
|
258
|
+
.icon_drag {
|
|
259
|
+
margin-right: 15px;
|
|
260
|
+
cursor: pointer;
|
|
261
|
+
&:hover {
|
|
262
|
+
opacity: 0.8;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
.drag_top_box {
|
|
266
|
+
position: absolute;
|
|
267
|
+
top: 0px;
|
|
268
|
+
left: 0px;
|
|
269
|
+
right: 0px;
|
|
270
|
+
display: flex;
|
|
271
|
+
justify-content: space-between;
|
|
272
|
+
padding: 8px;
|
|
273
|
+
cursor: pointer;
|
|
274
|
+
background-color: #f5f5f5;
|
|
275
|
+
border-radius: 4px;
|
|
276
|
+
|
|
277
|
+
&:hover {
|
|
278
|
+
background-color: #e8e8e8;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
// 折叠动画
|
|
283
|
+
.collapse-enter-active,
|
|
284
|
+
.collapse-leave-active {
|
|
285
|
+
transition: all 0.3s ease;
|
|
286
|
+
max-height: 500px;
|
|
287
|
+
overflow: hidden;
|
|
288
|
+
opacity: 1;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
.collapse-enter-from,
|
|
292
|
+
.collapse-leave-to {
|
|
293
|
+
max-height: 0;
|
|
294
|
+
opacity: 0;
|
|
295
|
+
overflow: hidden;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
.draggable_box {
|
|
299
|
+
margin-bottom: 25px;
|
|
300
|
+
background: #fff;
|
|
301
|
+
padding: 10px;
|
|
302
|
+
position: relative;
|
|
303
|
+
border-radius: 4px;
|
|
304
|
+
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
305
|
+
&:hover {
|
|
306
|
+
transform: translateY(-2px);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
// :deep(.arco-input-wrapper) {
|
|
310
|
+
// background-color: #ffffff;
|
|
311
|
+
// }
|
|
312
|
+
.item-title {
|
|
313
|
+
padding: 12px 0 8px 0;
|
|
314
|
+
font-size: 14px;
|
|
315
|
+
font-weight: 600;
|
|
316
|
+
margin-top: 10px;
|
|
317
|
+
}
|
|
318
|
+
.item-img {
|
|
319
|
+
height: 100px;
|
|
320
|
+
}
|
|
321
|
+
.seting-box {
|
|
322
|
+
padding: 20px;
|
|
323
|
+
background: #f0f2f5;
|
|
324
|
+
border-radius: 3px;
|
|
325
|
+
// .arco-input-wrapper {
|
|
326
|
+
// background: #ffffff;
|
|
327
|
+
// }
|
|
328
|
+
}
|
|
329
|
+
.setting-content {
|
|
330
|
+
.setting-header {
|
|
331
|
+
padding-bottom: 12px;
|
|
332
|
+
|
|
333
|
+
.header-title {
|
|
334
|
+
width: 120px;
|
|
335
|
+
padding-right: 12px;
|
|
336
|
+
text-align: right;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
.setting-body {
|
|
341
|
+
margin-top: 12px;
|
|
342
|
+
|
|
343
|
+
.setting-item {
|
|
344
|
+
position: relative;
|
|
345
|
+
padding: 16px 12px;
|
|
346
|
+
background: #f0f2f5;
|
|
347
|
+
border-radius: 8px;
|
|
348
|
+
margin-bottom: 20px;
|
|
349
|
+
|
|
350
|
+
.btn-group {
|
|
351
|
+
position: absolute;
|
|
352
|
+
right: 0;
|
|
353
|
+
top: 0;
|
|
354
|
+
display: flex;
|
|
355
|
+
align-items: center;
|
|
356
|
+
padding: 4px;
|
|
357
|
+
|
|
358
|
+
.btn-delete {
|
|
359
|
+
padding: 4px;
|
|
360
|
+
font-size: 24px;
|
|
361
|
+
cursor: pointer;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
.item-name {
|
|
366
|
+
font-size: 16px;
|
|
367
|
+
font-weight: 600;
|
|
368
|
+
padding-bottom: 10px;
|
|
369
|
+
border-bottom: 1px solid #fff;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
.item-title {
|
|
373
|
+
padding: 12px 0 8px 0;
|
|
374
|
+
font-size: 14px;
|
|
375
|
+
font-weight: 600;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
.arco-input-wrapper {
|
|
379
|
+
background: #fff;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
.item-button {
|
|
383
|
+
position: relative;
|
|
384
|
+
padding: 12px 8px 4px;
|
|
385
|
+
background: #fff;
|
|
386
|
+
border-radius: 4px;
|
|
387
|
+
margin: 4px 0;
|
|
388
|
+
transition: all 0.3s ease;
|
|
389
|
+
|
|
390
|
+
&.draggable-item {
|
|
391
|
+
cursor: move;
|
|
392
|
+
|
|
393
|
+
&:hover {
|
|
394
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
395
|
+
transform: translateY(-1px);
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
// 当禁用拖拽时,不显示拖拽效果
|
|
399
|
+
&.sortable-disabled {
|
|
400
|
+
cursor: default;
|
|
401
|
+
|
|
402
|
+
&:hover {
|
|
403
|
+
box-shadow: none;
|
|
404
|
+
transform: none;
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
.arco-input-wrapper {
|
|
410
|
+
background: #f2f3f5;
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
// 拖拽相关样式
|
|
415
|
+
.flip-list-move {
|
|
416
|
+
transition: transform 0.5s;
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
.no-move {
|
|
420
|
+
transition: transform 0s;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
.ghost {
|
|
424
|
+
opacity: 0.5;
|
|
425
|
+
background: #c8ebfb;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
.list-group {
|
|
429
|
+
min-height: 20px;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
.list-group-item {
|
|
433
|
+
cursor: move;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
.list-group-item i {
|
|
437
|
+
cursor: pointer;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
.item-action {
|
|
441
|
+
padding: 10px 0;
|
|
442
|
+
|
|
443
|
+
.action-text {
|
|
444
|
+
width: 150px;
|
|
445
|
+
margin-right: 8px;
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
.item-add-btn {
|
|
450
|
+
display: inline-block;
|
|
451
|
+
padding: 2px 8px;
|
|
452
|
+
margin-top: 5px;
|
|
453
|
+
font-size: 11px;
|
|
454
|
+
color: #165dff;
|
|
455
|
+
border-radius: 4px;
|
|
456
|
+
font-weight: 600;
|
|
457
|
+
border: 1px solid #165dff;
|
|
458
|
+
cursor: pointer;
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
.item-img {
|
|
462
|
+
margin-top: 12px;
|
|
463
|
+
height: 160px;
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
.fit-content {
|
|
467
|
+
width: fit-content;
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
.item-img-list {
|
|
471
|
+
.img-list-item {
|
|
472
|
+
margin: 4px 0;
|
|
473
|
+
position: relative;
|
|
474
|
+
padding: 8px;
|
|
475
|
+
border-radius: 4px;
|
|
476
|
+
transition: all 0.3s ease;
|
|
477
|
+
background: #fff;
|
|
478
|
+
border-radius: 4px;
|
|
479
|
+
|
|
480
|
+
&.draggable-item {
|
|
481
|
+
cursor: move;
|
|
482
|
+
|
|
483
|
+
&:hover {
|
|
484
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
485
|
+
transform: translateY(-1px);
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
// 当禁用拖拽时,不显示拖拽效果
|
|
489
|
+
&.sortable-disabled {
|
|
490
|
+
cursor: default;
|
|
491
|
+
|
|
492
|
+
&:hover {
|
|
493
|
+
box-shadow: none;
|
|
494
|
+
transform: none;
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
.arco-input-wrapper {
|
|
500
|
+
background: #f2f3f5;
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
.img-drag-handle {
|
|
504
|
+
top: 0 !important;
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
.item-img-box {
|
|
509
|
+
margin-right: 12px;
|
|
510
|
+
position: relative;
|
|
511
|
+
width: 133px;
|
|
512
|
+
height: 100px;
|
|
513
|
+
|
|
514
|
+
.item-img-dlete {
|
|
515
|
+
position: absolute;
|
|
516
|
+
padding: 8px;
|
|
517
|
+
font-size: 32px;
|
|
518
|
+
top: -16px;
|
|
519
|
+
right: -16px;
|
|
520
|
+
color: red;
|
|
521
|
+
cursor: pointer;
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
.small-img {
|
|
526
|
+
margin: 0;
|
|
527
|
+
height: 100px;
|
|
528
|
+
object-fit: cover;
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
.item-right {
|
|
532
|
+
padding-top: 24px;
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
.drag-handle {
|
|
539
|
+
padding: 4px;
|
|
540
|
+
cursor: grab;
|
|
541
|
+
padding: 4px;
|
|
542
|
+
border-radius: 4px;
|
|
543
|
+
|
|
544
|
+
&:hover {
|
|
545
|
+
background-color: #f0f2f5;
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
&:active {
|
|
549
|
+
cursor: grabbing;
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
.drag-icon {
|
|
553
|
+
font-size: 16px;
|
|
554
|
+
color: #86909c;
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
</style>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface TableTwoProps {
|
|
2
|
+
/** 双向绑定的值 */
|
|
3
|
+
modelValue: any
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
export interface TableTwoEmits {
|
|
7
|
+
(e: 'update:modelValue', value: any): void
|
|
8
|
+
(e: 'handleDelete', value: string | number): void
|
|
9
|
+
(e: 'handleCopy', value: any): void
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
// export type ComponentSlots = {
|
|
13
|
+
// /** 默认插槽内容 */
|
|
14
|
+
// default?: (props: { value: string | number }) => VNode[]
|
|
15
|
+
// /** 头部内容 */
|
|
16
|
+
// header?: (props: { title: string }) => VNode[]
|
|
17
|
+
// }
|
package/src/components/index.ts
CHANGED
|
@@ -8,6 +8,8 @@ export { default as BtnList } from './BtnList/index.vue'
|
|
|
8
8
|
export { default as GalleryList } from './GalleryList/index.vue'
|
|
9
9
|
export { default as LinkList } from './LinkLIst/index.vue'
|
|
10
10
|
export { default as QuoteText } from './QuoteText/index.vue'
|
|
11
|
+
export { default as CountDown } from './CountDown/index.vue'
|
|
12
|
+
export { default as CustomIframe } from './CustomIframe/index.vue'
|
|
11
13
|
|
|
12
14
|
// 导出组件插件
|
|
13
15
|
export { default as ArticleListPlugin } from './ArticleList/index'
|
|
@@ -19,6 +21,13 @@ export { default as BtnListPlugin } from './BtnList/index'
|
|
|
19
21
|
export { default as GalleryListPlugin } from './GalleryList/index'
|
|
20
22
|
export { default as LinkListPlugin } from './LinkLIst/index'
|
|
21
23
|
export { default as QuoteTextPlugin } from './QuoteText/index'
|
|
24
|
+
export { default as CountDownPlugin } from './CountDown/index'
|
|
25
|
+
export { default as CustomIframePlugin } from './CustomIframe/index'
|
|
26
|
+
export { default as BannerImageWithLinkPlugin } from './BannerImageWithLink/index'
|
|
27
|
+
export { default as ContactUsListPlugin } from './ContactUsList/index'
|
|
28
|
+
export { default as TableTwoPlugin } from './TableTwo/index'
|
|
29
|
+
export { default as ScrollKeyInfoPlugin } from './ScrollKeyInfo/index'
|
|
30
|
+
|
|
22
31
|
|
|
23
32
|
// 导出类型定义
|
|
24
33
|
export type { ArticleListProps, ArticleListEmits } from './ArticleList/type'
|
|
@@ -30,3 +39,11 @@ export type { BtnListProps, BtnListEmits } from './BtnList/type'
|
|
|
30
39
|
export type { GalleryListProps, GalleryListEmits } from './GalleryList/type'
|
|
31
40
|
export type { LinkListProps, LinkListEmits } from './LinkLIst/type'
|
|
32
41
|
export type { QuoteTextProps, QuoteTextEmits } from './QuoteText/type'
|
|
42
|
+
export type { CountDownProps, CountDownEmits } from './CountDown/type'
|
|
43
|
+
export type { CustomIframeProps, CustomIframeEmits } from './CustomIframe/type'
|
|
44
|
+
export type { BannerImageWithLinkProps, BannerImageWithLinkEmits } from './BannerImageWithLink/type'
|
|
45
|
+
export type { ContactUsListProps, ContactUsListEmits } from './ContactUsList/type'
|
|
46
|
+
export type { TableTwoProps, TableTwoEmits } from './TableTwo/type'
|
|
47
|
+
export type { ScrollKeyInfoProps, ScrollKeyInfoEmits } from './ScrollKeyInfo/type'
|
|
48
|
+
|
|
49
|
+
|