lw-cdp-ui 1.0.19 → 1.0.21

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 (44) hide show
  1. package/README.md +5 -5
  2. package/dist/components/lwForm/index.vue +312 -312
  3. package/dist/components/lwIconSelect/iconSelect.js +288 -288
  4. package/dist/components/lwIconSelect/index.vue +142 -142
  5. package/dist/components/lwLayout/components/NavMenu.vue +36 -36
  6. package/dist/components/lwLayout/components/aside.vue +291 -295
  7. package/dist/components/lwLayout/components/bu.vue +72 -70
  8. package/dist/components/lwLayout/components/iframeView.vue +57 -57
  9. package/dist/components/lwLayout/components/lang.vue +76 -76
  10. package/dist/components/lwLayout/components/setting.vue +80 -80
  11. package/dist/components/lwLayout/components/sideM.vue +137 -136
  12. package/dist/components/lwLayout/components/tags.vue +329 -329
  13. package/dist/components/lwLayout/components/topbar.vue +70 -70
  14. package/dist/components/lwLayout/components/userbar.vue +210 -209
  15. package/dist/components/lwLayout/index.vue +399 -398
  16. package/dist/components/lwLogin/index.vue +446 -383
  17. package/dist/components/lwSearch/date/date.vue +110 -110
  18. package/dist/components/lwSearch/dateRange/dateRange.vue +110 -110
  19. package/dist/components/lwSearch/dates/dates.vue +366 -366
  20. package/dist/components/lwSearch/index.vue +636 -636
  21. package/dist/components/lwSearch/input/input.vue +54 -54
  22. package/dist/components/lwSearch/locale/en-us.js +10 -10
  23. package/dist/components/lwSearch/locale/zh-cn.js +10 -10
  24. package/dist/components/lwSearch/select/select.vue +57 -57
  25. package/dist/components/lwSvgIcon/index.vue +28 -28
  26. package/dist/components/lwTable/index.js +425 -425
  27. package/dist/components/lwTable/index.scss +229 -229
  28. package/dist/components/lwTable/index.vue +225 -226
  29. package/dist/components/lwTable/locale/en-US.js +26 -26
  30. package/dist/components/lwTable/locale/zh-CN.js +26 -26
  31. package/dist/components/lwTable/useFullscreen.js +73 -73
  32. package/dist/components/lwTableSelect/index.vue +254 -254
  33. package/dist/components/lwTableSelect/tableSelect.js +23 -23
  34. package/dist/components/lwUpload/index.vue +365 -365
  35. package/dist/en-US-YCjgxjEt.js.map +1 -1
  36. package/dist/en-us-CziFtIQi.js.map +1 -1
  37. package/dist/lw-cdp-ui.esm.js +1484 -1459
  38. package/dist/lw-cdp-ui.esm.js.map +1 -1
  39. package/dist/lw-cdp-ui.umd.js +9 -9
  40. package/dist/lw-cdp-ui.umd.js.map +1 -1
  41. package/dist/style.css +1 -1
  42. package/dist/zh-CN-BdDNsX4e.js.map +1 -1
  43. package/dist/zh-cn-DJpQp_O7.js.map +1 -1
  44. package/package.json +45 -45
@@ -1,329 +1,329 @@
1
- <template>
2
- <div class="adminui-tags">
3
- <ul ref="tags">
4
- <li v-for="tag in tagList"
5
- v-bind:key="tag"
6
- :class="[isActive(tag)?'active':'',tag.meta.affix?'affix':'' ]"
7
- @contextmenu.prevent="openContextMenu($event, tag)">
8
- <router-link :to="tag">
9
- <span>{{ tag.meta.title }}</span>
10
- <el-icon v-if="!tag.meta.affix"
11
- @click.prevent.stop='closeSelectedTag(tag)'><el-icon-close /></el-icon>
12
- </router-link>
13
- </li>
14
- </ul>
15
- </div>
16
-
17
- <transition name="el-zoom-in-top">
18
- <ul v-if="contextMenuVisible"
19
- :style="{left:left+'px',top:top+'px'}"
20
- class="contextmenu"
21
- id="contextmenu">
22
- <li @click="refreshTab()"><el-icon><el-icon-refresh /></el-icon>刷新</li>
23
- <hr>
24
- <li @click="closeTabs()"
25
- :class="contextMenuItem.meta.affix?'disabled':''">
26
- <el-icon><el-icon-close /></el-icon>关闭标签
27
- </li>
28
- <li @click="closeOtherTabs()">
29
- <el-icon><el-icon-folder-delete /></el-icon>关闭其他标签
30
- </li>
31
- <hr>
32
- <li @click="maximize()"><el-icon><el-icon-full-screen /></el-icon>最大化</li>
33
- <li @click="openWindow()">
34
- <el-icon><el-icon-copy-document /></el-icon>在新的窗口中打开
35
- </li>
36
- </ul>
37
- </transition>
38
- </template>
39
-
40
- <script>
41
- import Sortable from 'sortablejs'
42
-
43
- export default {
44
- name: "tags",
45
- data() {
46
- return {
47
- contextMenuVisible: false,
48
- contextMenuItem: null,
49
- left: 0,
50
- top: 0,
51
- tipVisible: false,
52
- tipDisplayed: false
53
- }
54
- },
55
- props: {},
56
- computed: {
57
- tagList() {
58
- return this.$store.state.viewTags.viewTags
59
- }
60
- },
61
- watch: {
62
- $route(e) {
63
- this.addViewTags(e);
64
- //判断标签容器是否出现滚动条
65
- this.$nextTick(() => {
66
- const tags = this.$refs.tags
67
- if (tags && tags.scrollWidth > tags.clientWidth) {
68
- //确保当前标签在可视范围内
69
- let targetTag = tags.querySelector(".active")
70
- targetTag.scrollIntoView()
71
- //显示提示
72
- if (!this.tipDisplayed) {
73
- this.tipVisible = true
74
- }
75
- }
76
- })
77
- },
78
- contextMenuVisible(value) {
79
- var _this = this;
80
- var cm = function (e) {
81
- let sp = document.getElementById("contextmenu");
82
- if (sp && !sp.contains(e.target)) {
83
- _this.closeMenu()
84
- }
85
- }
86
- if (value) {
87
- document.body.addEventListener('click', e => cm(e))
88
- } else {
89
- document.body.removeEventListener('click', e => cm(e))
90
- }
91
- },
92
-
93
- },
94
- created() {
95
- this.init()
96
- },
97
- mounted() {
98
- this.tagDrop();
99
- this.scrollInit()
100
- },
101
- methods: {
102
- // 初始化
103
- init() {
104
- var menu = this.$router.sc_getMenu()
105
- var dashboardRoute = this.treeFind(menu, node => node.path == this.$config.DASHBOARD_URL)
106
- if (dashboardRoute) {
107
- dashboardRoute.fullPath = dashboardRoute.path
108
- this.addViewTags(dashboardRoute)
109
- this.addViewTags(this.$route)
110
- }
111
- },
112
- //查找树
113
- treeFind(tree, func) {
114
- for (const data of tree) {
115
- if (func(data)) return data
116
- if (data.children) {
117
- const res = this.treeFind(data.children, func)
118
- if (res) return res
119
- }
120
- }
121
- return null
122
- },
123
- //标签拖拽排序
124
- tagDrop() {
125
- const target = this.$refs.tags
126
- Sortable.create(target, {
127
- draggable: 'li',
128
- animation: 300
129
- })
130
- },
131
- //增加tag
132
- addViewTags(route) {
133
- if (route.name && !route.meta.fullpage) {
134
- this.$store.commit("pushViewTags", route)
135
- this.$store.commit("pushKeepLive", route.name)
136
- }
137
- },
138
- //高亮tag
139
- isActive(route) {
140
- return route.fullPath === this.$route.fullPath
141
- },
142
- //关闭tag
143
- closeSelectedTag(tag, autoPushLatestView = true) {
144
- this.$store.commit("removeViewTags", tag)
145
- this.$store.commit("removeIframeList", tag)
146
- this.$store.commit("removeKeepLive", tag.name)
147
- if (autoPushLatestView && this.isActive(tag)) {
148
- const latestView = this.tagList.slice(-1)[0]
149
- if (latestView) {
150
- this.$router.push(latestView)
151
- } else {
152
- this.$router.push('/')
153
- }
154
- }
155
- },
156
- //tag右键
157
- openContextMenu(e, tag) {
158
- this.contextMenuItem = tag;
159
- this.contextMenuVisible = true;
160
- this.left = e.clientX + 1;
161
- this.top = e.clientY + 1;
162
-
163
- //FIX 右键菜单边缘化位置处理
164
- this.$nextTick(() => {
165
- let sp = document.getElementById("contextmenu");
166
- if (document.body.offsetWidth - e.clientX < sp.offsetWidth) {
167
- this.left = document.body.offsetWidth - sp.offsetWidth + 1;
168
- this.top = e.clientY + 1;
169
- }
170
- })
171
- },
172
- //关闭右键菜单
173
- closeMenu() {
174
- this.contextMenuItem = null;
175
- this.contextMenuVisible = false
176
- },
177
- //TAB 刷新
178
- refreshTab() {
179
- var nowTag = this.contextMenuItem;
180
- this.contextMenuVisible = false
181
- //判断是否当前路由,否的话跳转
182
- if (this.$route.fullPath != nowTag.fullPath) {
183
- this.$router.push({
184
- path: nowTag.fullPath,
185
- query: nowTag.query
186
- })
187
- }
188
- this.$store.commit("refreshIframe", nowTag)
189
- var _this = this;
190
- setTimeout(function () {
191
- _this.$store.commit("removeKeepLive", nowTag.name)
192
- _this.$store.commit("setRouteShow", false)
193
- _this.$nextTick(() => {
194
- _this.$store.commit("pushKeepLive", nowTag.name)
195
- _this.$store.commit("setRouteShow", true)
196
- })
197
- }, 0);
198
- },
199
- //TAB 关闭
200
- closeTabs() {
201
- var nowTag = this.contextMenuItem;
202
- if (!nowTag.meta.affix) {
203
- this.closeSelectedTag(nowTag)
204
- this.contextMenuVisible = false
205
- }
206
- },
207
- //TAB 关闭其他
208
- closeOtherTabs() {
209
- var nowTag = this.contextMenuItem;
210
- //判断是否当前路由,否的话跳转
211
- if (this.$route.fullPath != nowTag.fullPath) {
212
- this.$router.push({
213
- path: nowTag.fullPath,
214
- query: nowTag.query
215
- })
216
- }
217
- var tags = [...this.tagList];
218
- tags.forEach(tag => {
219
- if (tag.meta && tag.meta.affix || nowTag.fullPath == tag.fullPath) {
220
- return true
221
- } else {
222
- this.closeSelectedTag(tag, false)
223
- }
224
- })
225
- this.contextMenuVisible = false
226
- },
227
- //TAB 最大化
228
- maximize() {
229
- var nowTag = this.contextMenuItem;
230
- this.contextMenuVisible = false
231
- //判断是否当前路由,否的话跳转
232
- if (this.$route.fullPath != nowTag.fullPath) {
233
- this.$router.push({
234
- path: nowTag.fullPath,
235
- query: nowTag.query
236
- })
237
- }
238
- document.getElementById('app').classList.add('main-maximize')
239
- },
240
- //新窗口打开
241
- openWindow() {
242
- var nowTag = this.contextMenuItem;
243
- var url = nowTag.href || '/';
244
- if (!nowTag.meta.affix) {
245
- this.closeSelectedTag(nowTag)
246
- }
247
- window.open(url);
248
- this.contextMenuVisible = false
249
- },
250
- //横向滚动
251
- scrollInit() {
252
- const scrollDiv = this.$refs.tags;
253
- scrollDiv.addEventListener('mousewheel', handler, false) || scrollDiv.addEventListener("DOMMouseScroll", handler, false)
254
- function handler(event) {
255
- const detail = event.wheelDelta || event.detail;
256
- //火狐上滚键值-3 下滚键值3,其他内核上滚键值120 下滚键值-120
257
- const moveForwardStep = 1;
258
- const moveBackStep = -1;
259
- let step = 0;
260
- if (detail == 3 || detail < 0 && detail != -3) {
261
- step = moveForwardStep * 50;
262
- } else {
263
- step = moveBackStep * 50;
264
- }
265
- scrollDiv.scrollLeft += step;
266
- }
267
- },
268
- hideTip() {
269
- this.tipVisible = false
270
- this.tipDisplayed = true
271
- }
272
- }
273
- }
274
- </script>
275
-
276
- <style>
277
- .contextmenu {
278
- position: fixed;
279
- width: 200px;
280
- margin: 0;
281
- border-radius: 0px;
282
- background: var(--el-bg-color-overlay);
283
- border: 1px solid var(--el-border-color-light);
284
- box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
285
- z-index: 3000;
286
- list-style-type: none;
287
- padding: 10px 0;
288
- }
289
- .contextmenu hr {
290
- margin: 5px 0;
291
- border: none;
292
- height: 1px;
293
- font-size: 0px;
294
- background-color: var(--el-border-color-light);
295
- }
296
- .contextmenu li {
297
- display: flex;
298
- align-items: center;
299
- margin: 0;
300
- cursor: pointer;
301
- line-height: 30px;
302
- padding: 0 17px;
303
- color: #606266;
304
- }
305
- .contextmenu li i {
306
- font-size: 14px;
307
- margin-right: 10px;
308
- }
309
- .contextmenu li:hover {
310
- background-color: #ecf5ff;
311
- color: #66b1ff;
312
- }
313
- .contextmenu li.disabled {
314
- cursor: not-allowed;
315
- color: #bbb;
316
- background: transparent;
317
- }
318
-
319
- .tags-tip {
320
- padding: 5px;
321
- }
322
- .tags-tip p {
323
- margin-bottom: 10px;
324
- }
325
-
326
- .dark .contextmenu li {
327
- color: var(--el-text-color-primary);
328
- }
329
- </style>
1
+ <template>
2
+ <div class="adminui-tags">
3
+ <ul ref="tags">
4
+ <li v-for="tag in tagList"
5
+ v-bind:key="tag"
6
+ :class="[isActive(tag)?'active':'',tag.meta.affix?'affix':'' ]"
7
+ @contextmenu.prevent="openContextMenu($event, tag)">
8
+ <router-link :to="tag">
9
+ <span>{{ tag.meta.title }}</span>
10
+ <el-icon v-if="!tag.meta.affix"
11
+ @click.prevent.stop='closeSelectedTag(tag)'><el-icon-close /></el-icon>
12
+ </router-link>
13
+ </li>
14
+ </ul>
15
+ </div>
16
+
17
+ <transition name="el-zoom-in-top">
18
+ <ul v-if="contextMenuVisible"
19
+ :style="{left:left+'px',top:top+'px'}"
20
+ class="contextmenu"
21
+ id="contextmenu">
22
+ <li @click="refreshTab()"><el-icon><el-icon-refresh /></el-icon>刷新</li>
23
+ <hr>
24
+ <li @click="closeTabs()"
25
+ :class="contextMenuItem.meta.affix?'disabled':''">
26
+ <el-icon><el-icon-close /></el-icon>关闭标签
27
+ </li>
28
+ <li @click="closeOtherTabs()">
29
+ <el-icon><el-icon-folder-delete /></el-icon>关闭其他标签
30
+ </li>
31
+ <hr>
32
+ <li @click="maximize()"><el-icon><el-icon-full-screen /></el-icon>最大化</li>
33
+ <li @click="openWindow()">
34
+ <el-icon><el-icon-copy-document /></el-icon>在新的窗口中打开
35
+ </li>
36
+ </ul>
37
+ </transition>
38
+ </template>
39
+
40
+ <script>
41
+ import Sortable from 'sortablejs'
42
+
43
+ export default {
44
+ name: "tags",
45
+ data() {
46
+ return {
47
+ contextMenuVisible: false,
48
+ contextMenuItem: null,
49
+ left: 0,
50
+ top: 0,
51
+ tipVisible: false,
52
+ tipDisplayed: false
53
+ }
54
+ },
55
+ props: {},
56
+ computed: {
57
+ tagList() {
58
+ return this.$store.state.viewTags.viewTags
59
+ }
60
+ },
61
+ watch: {
62
+ $route(e) {
63
+ this.addViewTags(e);
64
+ //判断标签容器是否出现滚动条
65
+ this.$nextTick(() => {
66
+ const tags = this.$refs.tags
67
+ if (tags && tags.scrollWidth > tags.clientWidth) {
68
+ //确保当前标签在可视范围内
69
+ let targetTag = tags.querySelector(".active")
70
+ targetTag.scrollIntoView()
71
+ //显示提示
72
+ if (!this.tipDisplayed) {
73
+ this.tipVisible = true
74
+ }
75
+ }
76
+ })
77
+ },
78
+ contextMenuVisible(value) {
79
+ var _this = this;
80
+ var cm = function (e) {
81
+ let sp = document.getElementById("contextmenu");
82
+ if (sp && !sp.contains(e.target)) {
83
+ _this.closeMenu()
84
+ }
85
+ }
86
+ if (value) {
87
+ document.body.addEventListener('click', e => cm(e))
88
+ } else {
89
+ document.body.removeEventListener('click', e => cm(e))
90
+ }
91
+ },
92
+
93
+ },
94
+ created() {
95
+ this.init()
96
+ },
97
+ mounted() {
98
+ this.tagDrop();
99
+ this.scrollInit()
100
+ },
101
+ methods: {
102
+ // 初始化
103
+ init() {
104
+ var menu = this.$router.sc_getMenu()
105
+ var dashboardRoute = this.treeFind(menu, node => node.path == this.$config.DASHBOARD_URL)
106
+ if (dashboardRoute) {
107
+ dashboardRoute.fullPath = dashboardRoute.path
108
+ this.addViewTags(dashboardRoute)
109
+ this.addViewTags(this.$route)
110
+ }
111
+ },
112
+ //查找树
113
+ treeFind(tree, func) {
114
+ for (const data of tree) {
115
+ if (func(data)) return data
116
+ if (data.children) {
117
+ const res = this.treeFind(data.children, func)
118
+ if (res) return res
119
+ }
120
+ }
121
+ return null
122
+ },
123
+ //标签拖拽排序
124
+ tagDrop() {
125
+ const target = this.$refs.tags
126
+ Sortable.create(target, {
127
+ draggable: 'li',
128
+ animation: 300
129
+ })
130
+ },
131
+ //增加tag
132
+ addViewTags(route) {
133
+ if (route.name && !route.meta.fullpage) {
134
+ this.$store.commit("pushViewTags", route)
135
+ this.$store.commit("pushKeepLive", route.name)
136
+ }
137
+ },
138
+ //高亮tag
139
+ isActive(route) {
140
+ return route.fullPath === this.$route.fullPath
141
+ },
142
+ //关闭tag
143
+ closeSelectedTag(tag, autoPushLatestView = true) {
144
+ this.$store.commit("removeViewTags", tag)
145
+ this.$store.commit("removeIframeList", tag)
146
+ this.$store.commit("removeKeepLive", tag.name)
147
+ if (autoPushLatestView && this.isActive(tag)) {
148
+ const latestView = this.tagList.slice(-1)[0]
149
+ if (latestView) {
150
+ this.$router.push(latestView)
151
+ } else {
152
+ this.$router.push('/')
153
+ }
154
+ }
155
+ },
156
+ //tag右键
157
+ openContextMenu(e, tag) {
158
+ this.contextMenuItem = tag;
159
+ this.contextMenuVisible = true;
160
+ this.left = e.clientX + 1;
161
+ this.top = e.clientY + 1;
162
+
163
+ //FIX 右键菜单边缘化位置处理
164
+ this.$nextTick(() => {
165
+ let sp = document.getElementById("contextmenu");
166
+ if (document.body.offsetWidth - e.clientX < sp.offsetWidth) {
167
+ this.left = document.body.offsetWidth - sp.offsetWidth + 1;
168
+ this.top = e.clientY + 1;
169
+ }
170
+ })
171
+ },
172
+ //关闭右键菜单
173
+ closeMenu() {
174
+ this.contextMenuItem = null;
175
+ this.contextMenuVisible = false
176
+ },
177
+ //TAB 刷新
178
+ refreshTab() {
179
+ var nowTag = this.contextMenuItem;
180
+ this.contextMenuVisible = false
181
+ //判断是否当前路由,否的话跳转
182
+ if (this.$route.fullPath != nowTag.fullPath) {
183
+ this.$router.push({
184
+ path: nowTag.fullPath,
185
+ query: nowTag.query
186
+ })
187
+ }
188
+ this.$store.commit("refreshIframe", nowTag)
189
+ var _this = this;
190
+ setTimeout(function () {
191
+ _this.$store.commit("removeKeepLive", nowTag.name)
192
+ _this.$store.commit("setRouteShow", false)
193
+ _this.$nextTick(() => {
194
+ _this.$store.commit("pushKeepLive", nowTag.name)
195
+ _this.$store.commit("setRouteShow", true)
196
+ })
197
+ }, 0);
198
+ },
199
+ //TAB 关闭
200
+ closeTabs() {
201
+ var nowTag = this.contextMenuItem;
202
+ if (!nowTag.meta.affix) {
203
+ this.closeSelectedTag(nowTag)
204
+ this.contextMenuVisible = false
205
+ }
206
+ },
207
+ //TAB 关闭其他
208
+ closeOtherTabs() {
209
+ var nowTag = this.contextMenuItem;
210
+ //判断是否当前路由,否的话跳转
211
+ if (this.$route.fullPath != nowTag.fullPath) {
212
+ this.$router.push({
213
+ path: nowTag.fullPath,
214
+ query: nowTag.query
215
+ })
216
+ }
217
+ var tags = [...this.tagList];
218
+ tags.forEach(tag => {
219
+ if (tag.meta && tag.meta.affix || nowTag.fullPath == tag.fullPath) {
220
+ return true
221
+ } else {
222
+ this.closeSelectedTag(tag, false)
223
+ }
224
+ })
225
+ this.contextMenuVisible = false
226
+ },
227
+ //TAB 最大化
228
+ maximize() {
229
+ var nowTag = this.contextMenuItem;
230
+ this.contextMenuVisible = false
231
+ //判断是否当前路由,否的话跳转
232
+ if (this.$route.fullPath != nowTag.fullPath) {
233
+ this.$router.push({
234
+ path: nowTag.fullPath,
235
+ query: nowTag.query
236
+ })
237
+ }
238
+ document.getElementById('app').classList.add('main-maximize')
239
+ },
240
+ //新窗口打开
241
+ openWindow() {
242
+ var nowTag = this.contextMenuItem;
243
+ var url = nowTag.href || '/';
244
+ if (!nowTag.meta.affix) {
245
+ this.closeSelectedTag(nowTag)
246
+ }
247
+ window.open(url);
248
+ this.contextMenuVisible = false
249
+ },
250
+ //横向滚动
251
+ scrollInit() {
252
+ const scrollDiv = this.$refs.tags;
253
+ scrollDiv.addEventListener('mousewheel', handler, false) || scrollDiv.addEventListener("DOMMouseScroll", handler, false)
254
+ function handler(event) {
255
+ const detail = event.wheelDelta || event.detail;
256
+ //火狐上滚键值-3 下滚键值3,其他内核上滚键值120 下滚键值-120
257
+ const moveForwardStep = 1;
258
+ const moveBackStep = -1;
259
+ let step = 0;
260
+ if (detail == 3 || detail < 0 && detail != -3) {
261
+ step = moveForwardStep * 50;
262
+ } else {
263
+ step = moveBackStep * 50;
264
+ }
265
+ scrollDiv.scrollLeft += step;
266
+ }
267
+ },
268
+ hideTip() {
269
+ this.tipVisible = false
270
+ this.tipDisplayed = true
271
+ }
272
+ }
273
+ }
274
+ </script>
275
+
276
+ <style>
277
+ .contextmenu {
278
+ position: fixed;
279
+ width: 200px;
280
+ margin: 0;
281
+ border-radius: 0px;
282
+ background: var(--el-bg-color-overlay);
283
+ border: 1px solid var(--el-border-color-light);
284
+ box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
285
+ z-index: 3000;
286
+ list-style-type: none;
287
+ padding: 10px 0;
288
+ }
289
+ .contextmenu hr {
290
+ margin: 5px 0;
291
+ border: none;
292
+ height: 1px;
293
+ font-size: 0px;
294
+ background-color: var(--el-border-color-light);
295
+ }
296
+ .contextmenu li {
297
+ display: flex;
298
+ align-items: center;
299
+ margin: 0;
300
+ cursor: pointer;
301
+ line-height: 30px;
302
+ padding: 0 17px;
303
+ color: #606266;
304
+ }
305
+ .contextmenu li i {
306
+ font-size: 14px;
307
+ margin-right: 10px;
308
+ }
309
+ .contextmenu li:hover {
310
+ background-color: #ecf5ff;
311
+ color: #66b1ff;
312
+ }
313
+ .contextmenu li.disabled {
314
+ cursor: not-allowed;
315
+ color: #bbb;
316
+ background: transparent;
317
+ }
318
+
319
+ .tags-tip {
320
+ padding: 5px;
321
+ }
322
+ .tags-tip p {
323
+ margin-bottom: 10px;
324
+ }
325
+
326
+ .dark .contextmenu li {
327
+ color: var(--el-text-color-primary);
328
+ }
329
+ </style>