eoss-ui 0.7.56 → 0.7.57

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 (244) hide show
  1. package/lib/calogin.js +233 -233
  2. package/lib/eoss-ui.common.js +757 -756
  3. package/lib/flow-list.js +81 -81
  4. package/lib/flow.js +289 -288
  5. package/lib/index.js +1 -1
  6. package/lib/main.js +140 -140
  7. package/lib/qr-code.js +13 -13
  8. package/package.json +160 -160
  9. package/packages/button/index.js +5 -5
  10. package/packages/button/src/main.vue +418 -418
  11. package/packages/button-group/index.js +5 -5
  12. package/packages/button-group/src/main.vue +346 -346
  13. package/packages/calendar/index.js +5 -5
  14. package/packages/calogin/index.js +5 -5
  15. package/packages/calogin/src/main.vue +412 -412
  16. package/packages/calogin/src/plugin.js +915 -915
  17. package/packages/card/index.js +5 -5
  18. package/packages/card/src/main.vue +156 -156
  19. package/packages/cascader/index.js +5 -5
  20. package/packages/cascader/src/main.vue +168 -168
  21. package/packages/checkbox-group/index.js +5 -5
  22. package/packages/checkbox-group/src/main.vue +333 -333
  23. package/packages/clients/index.js +5 -5
  24. package/packages/clients/src/main.vue +151 -151
  25. package/packages/data-table/index.js +5 -5
  26. package/packages/data-table/src/children.vue +39 -39
  27. package/packages/data-table/src/column.vue +992 -992
  28. package/packages/data-table/src/main.vue +1840 -1840
  29. package/packages/data-table/src/sizer.vue +195 -195
  30. package/packages/data-table-form/index.js +5 -5
  31. package/packages/data-table-form/src/checkbox.vue +101 -101
  32. package/packages/data-table-form/src/colgroup.vue +17 -17
  33. package/packages/data-table-form/src/main.vue +181 -181
  34. package/packages/data-table-form/src/radio.vue +65 -65
  35. package/packages/data-table-form/src/table.vue +233 -233
  36. package/packages/data-table-form/src/tbody.vue +336 -336
  37. package/packages/data-table-form/src/thead.vue +68 -68
  38. package/packages/date-picker/index.js +5 -5
  39. package/packages/date-picker/src/main.vue +236 -236
  40. package/packages/dialog/index.js +5 -5
  41. package/packages/enable-drag/index.js +5 -5
  42. package/packages/enterprise/index.js +5 -5
  43. package/packages/enterprise/src/main.vue +66 -66
  44. package/packages/error-page/index.js +5 -5
  45. package/packages/error-page/src/main.vue +44 -44
  46. package/packages/flow/index.js +5 -5
  47. package/packages/flow/src/component/Circulate.vue +413 -413
  48. package/packages/flow/src/component/CommonOpinions.vue +373 -373
  49. package/packages/flow/src/component/CustomPreset.vue +322 -322
  50. package/packages/flow/src/component/FileList.vue +97 -97
  51. package/packages/flow/src/component/FreeCirculation.vue +241 -241
  52. package/packages/flow/src/component/Preset.vue +255 -255
  53. package/packages/flow/src/component/SendMsg.vue +242 -242
  54. package/packages/flow/src/component/TimeLimit.vue +190 -190
  55. package/packages/flow/src/component/taskUnionExamine.vue +756 -756
  56. package/packages/flow/src/form.vue +121 -121
  57. package/packages/flow/src/freeStartFlow.vue +2846 -2846
  58. package/packages/flow/src/main.vue +3878 -3878
  59. package/packages/flow/src/processForm.vue +1365 -1365
  60. package/packages/flow/src/processReject.vue +309 -309
  61. package/packages/flow/src/reset.vue +942 -942
  62. package/packages/flow/src/startTaskRead.vue +693 -692
  63. package/packages/flow/src/supervise.vue +159 -159
  64. package/packages/flow/src/table.vue +58 -58
  65. package/packages/flow-group/index.js +5 -5
  66. package/packages/flow-group/src/main.vue +717 -717
  67. package/packages/flow-list/index.js +5 -5
  68. package/packages/flow-list/src/main.vue +1801 -1801
  69. package/packages/form/index.js +5 -5
  70. package/packages/form/src/main.vue +3901 -3901
  71. package/packages/form/src/table.vue +1512 -1512
  72. package/packages/handle-user/index.js +5 -5
  73. package/packages/handle-user/src/main.vue +137 -137
  74. package/packages/handler/index.js +5 -5
  75. package/packages/handler/src/main.vue +496 -496
  76. package/packages/icon/index.js +5 -5
  77. package/packages/icon/src/main.vue +104 -104
  78. package/packages/icons/index.js +5 -5
  79. package/packages/icons/src/main.vue +81 -81
  80. package/packages/input/index.js +5 -5
  81. package/packages/input/src/main.vue +356 -356
  82. package/packages/input-number/index.js +5 -5
  83. package/packages/input-number/src/main.vue +106 -106
  84. package/packages/label/index.js +5 -5
  85. package/packages/label/src/main.vue +457 -457
  86. package/packages/layout/index.js +5 -5
  87. package/packages/layout/src/item.vue +152 -152
  88. package/packages/layout/src/main.vue +31 -31
  89. package/packages/login/index.js +5 -5
  90. package/packages/login/src/main.vue +2082 -2082
  91. package/packages/login/src/resetPassword.vue +557 -557
  92. package/packages/main/index.js +5 -5
  93. package/packages/main/src/default/message.vue +249 -249
  94. package/packages/main/src/default/notice.vue +157 -157
  95. package/packages/main/src/default/userinfo.vue +503 -503
  96. package/packages/main/src/public/online.vue +89 -89
  97. package/packages/main/src/public/search.vue +464 -464
  98. package/packages/main/src/public/settings.vue +227 -227
  99. package/packages/main/src/simplicity/apps.vue +388 -388
  100. package/packages/main/src/simplicity/avatar.vue +82 -82
  101. package/packages/main/src/simplicity/handler.vue +160 -160
  102. package/packages/main/src/simplicity/index.vue +2307 -2307
  103. package/packages/main/src/simplicity/lists.vue +84 -84
  104. package/packages/main/src/simplicity/menu-list.vue +135 -135
  105. package/packages/main/src/simplicity/message.vue +293 -293
  106. package/packages/main/src/simplicity/notice.vue +222 -222
  107. package/packages/main/src/simplicity/router-page.vue +45 -45
  108. package/packages/main/src/simplicity/sub-menu.vue +274 -274
  109. package/packages/main/src/simplicity/user.vue +259 -259
  110. package/packages/main/src/simplicity/userinfo.vue +401 -401
  111. package/packages/menu/index.js +5 -5
  112. package/packages/menu/src/main.vue +595 -595
  113. package/packages/nav/index.js +5 -5
  114. package/packages/nav/src/main.vue +351 -351
  115. package/packages/notify/index.js +5 -5
  116. package/packages/notify/src/main.vue +538 -538
  117. package/packages/page/index.js +5 -5
  118. package/packages/page/src/main.vue +167 -167
  119. package/packages/pagination/index.js +5 -5
  120. package/packages/pagination/src/main.vue +96 -96
  121. package/packages/player/index.js +5 -5
  122. package/packages/player/src/main.vue +194 -194
  123. package/packages/qr-code/index.js +5 -5
  124. package/packages/qr-code/src/main.vue +170 -170
  125. package/packages/radio-group/index.js +6 -6
  126. package/packages/radio-group/src/main.vue +319 -319
  127. package/packages/retrial-auth/index.js +5 -5
  128. package/packages/retrial-auth/src/main.vue +280 -280
  129. package/packages/select/index.js +5 -5
  130. package/packages/select/src/main.vue +782 -782
  131. package/packages/select-ganged/index.js +5 -5
  132. package/packages/select-ganged/src/main.vue +724 -724
  133. package/packages/selector/index.js +5 -5
  134. package/packages/selector/src/main.vue +761 -761
  135. package/packages/selector-panel/index.js +5 -5
  136. package/packages/selector-panel/src/main.vue +1027 -1027
  137. package/packages/selector-panel/src/selection.vue +170 -170
  138. package/packages/selector-panel/src/tree.vue +129 -129
  139. package/packages/sizer/index.js +5 -5
  140. package/packages/sizer/src/main.vue +254 -254
  141. package/packages/steps/index.js +5 -5
  142. package/packages/steps/src/main.vue +181 -181
  143. package/packages/switch/index.js +5 -5
  144. package/packages/switch/src/main.vue +170 -170
  145. package/packages/table-form/index.js +5 -5
  146. package/packages/tabs/index.js +5 -5
  147. package/packages/tabs/src/main.vue +788 -788
  148. package/packages/tabs-panel/index.js +5 -5
  149. package/packages/tabs-panel/src/main.vue +29 -29
  150. package/packages/theme-chalk/src/base.scss +261 -261
  151. package/packages/theme-chalk/src/button-group.scss +176 -176
  152. package/packages/theme-chalk/src/button.scss +24 -24
  153. package/packages/theme-chalk/src/calendar.scss +113 -113
  154. package/packages/theme-chalk/src/card.scss +99 -99
  155. package/packages/theme-chalk/src/checkbox-group.scss +8 -8
  156. package/packages/theme-chalk/src/clients.scss +87 -87
  157. package/packages/theme-chalk/src/data-table-form.scss +67 -67
  158. package/packages/theme-chalk/src/data-table.scss +297 -297
  159. package/packages/theme-chalk/src/date-picker.scss +7 -7
  160. package/packages/theme-chalk/src/dialog.scss +77 -77
  161. package/packages/theme-chalk/src/enable-drag.scss +181 -181
  162. package/packages/theme-chalk/src/enterprise.scss +5 -5
  163. package/packages/theme-chalk/src/error-page.scss +18 -18
  164. package/packages/theme-chalk/src/flow-group.scss +110 -110
  165. package/packages/theme-chalk/src/flow-list.scss +39 -39
  166. package/packages/theme-chalk/src/flow.scss +351 -351
  167. package/packages/theme-chalk/src/form.scss +501 -501
  168. package/packages/theme-chalk/src/handle-user.scss +40 -40
  169. package/packages/theme-chalk/src/handler.scss +148 -148
  170. package/packages/theme-chalk/src/icon.scss +1608 -1608
  171. package/packages/theme-chalk/src/icons.scss +99 -99
  172. package/packages/theme-chalk/src/input.scss +9 -9
  173. package/packages/theme-chalk/src/label.scss +24 -24
  174. package/packages/theme-chalk/src/layout.scss +46 -46
  175. package/packages/theme-chalk/src/login.scss +1006 -1006
  176. package/packages/theme-chalk/src/main.scss +663 -663
  177. package/packages/theme-chalk/src/menu.scss +224 -224
  178. package/packages/theme-chalk/src/mixins/color.scss +117 -117
  179. package/packages/theme-chalk/src/nav.scss +111 -111
  180. package/packages/theme-chalk/src/page.scss +3 -3
  181. package/packages/theme-chalk/src/pagination.scss +29 -29
  182. package/packages/theme-chalk/src/player.scss +9 -9
  183. package/packages/theme-chalk/src/qr-code.scss +17 -17
  184. package/packages/theme-chalk/src/radio-group.scss +9 -9
  185. package/packages/theme-chalk/src/retrial-auth.scss +38 -38
  186. package/packages/theme-chalk/src/select-ganged.scss +8 -8
  187. package/packages/theme-chalk/src/select.scss +8 -8
  188. package/packages/theme-chalk/src/selector-panel.scss +204 -204
  189. package/packages/theme-chalk/src/selector.scss +114 -114
  190. package/packages/theme-chalk/src/simplicity.scss +1403 -1403
  191. package/packages/theme-chalk/src/sizer.scss +36 -36
  192. package/packages/theme-chalk/src/steps.scss +88 -88
  193. package/packages/theme-chalk/src/switch.scss +3 -3
  194. package/packages/theme-chalk/src/table-form.scss +1 -1
  195. package/packages/theme-chalk/src/tabs.scss +87 -87
  196. package/packages/theme-chalk/src/tips.scss +7 -7
  197. package/packages/theme-chalk/src/toolbar.scss +179 -179
  198. package/packages/theme-chalk/src/tree-group.scss +72 -72
  199. package/packages/theme-chalk/src/tree.scss +165 -165
  200. package/packages/theme-chalk/src/upload.scss +172 -172
  201. package/packages/theme-chalk/src/wxlogin.scss +3 -3
  202. package/packages/tips/index.js +5 -5
  203. package/packages/tips/src/main.vue +141 -141
  204. package/packages/toolbar/index.js +5 -5
  205. package/packages/toolbar/src/main.vue +430 -430
  206. package/packages/tree/index.js +5 -5
  207. package/packages/tree-group/index.js +5 -5
  208. package/packages/upload/index.js +5 -5
  209. package/packages/upload/src/main.vue +1344 -1344
  210. package/packages/upload/src/picture.js +15 -15
  211. package/packages/wujie/index.js +5 -5
  212. package/packages/wujie/src/main.vue +145 -145
  213. package/packages/wxlogin/index.js +5 -5
  214. package/packages/wxlogin/src/main.vue +128 -128
  215. package/src/config/api.js +317 -317
  216. package/src/config/image.js +2 -2
  217. package/src/index.js +163 -163
  218. package/src/utils/bus.js +3 -3
  219. package/src/utils/date-util.js +312 -312
  220. package/src/utils/http.js +50 -50
  221. package/src/utils/rules.js +18 -18
  222. package/src/utils/store.js +21 -21
  223. package/src/utils/webSocket.js +107 -107
  224. package/packages/.DS_Store +0 -0
  225. package/packages/calogin/.DS_Store +0 -0
  226. package/packages/date-picker/.DS_Store +0 -0
  227. package/packages/date-picker/src/.DS_Store +0 -0
  228. package/packages/dialog/.DS_Store +0 -0
  229. package/packages/flow/.DS_Store +0 -0
  230. package/packages/flow/src/.DS_Store +0 -0
  231. package/packages/flow-list/.DS_Store +0 -0
  232. package/packages/form/.DS_Store +0 -0
  233. package/packages/icon/.DS_Store +0 -0
  234. package/packages/login/.DS_Store +0 -0
  235. package/packages/main/.DS_Store +0 -0
  236. package/packages/main/src/.DS_Store +0 -0
  237. package/packages/menu/.DS_Store +0 -0
  238. package/packages/select/.DS_Store +0 -0
  239. package/packages/selector/.DS_Store +0 -0
  240. package/packages/selector-panel/.DS_Store +0 -0
  241. package/packages/theme-chalk/src/.DS_Store +0 -0
  242. package/packages/upload/.DS_Store +0 -0
  243. package/src/.DS_Store +0 -0
  244. package/src/utils/.DS_Store +0 -0
@@ -1,595 +1,595 @@
1
- <script>
2
- import { throttle } from 'throttle-debounce';
3
- export default {
4
- name: 'EsMenu',
5
- inheritAttrs: false,
6
- props: {
7
- data: {
8
- type: Array,
9
- default() {
10
- return [];
11
- }
12
- },
13
- titleIcons: {
14
- type: Boolean,
15
- default: true
16
- },
17
- deep: {
18
- type: Boolean,
19
- default: true
20
- },
21
- subNav: {
22
- type: Boolean,
23
- default: false
24
- },
25
- width: String,
26
- height: String,
27
- mode: {
28
- type: String,
29
- default: 'vertical'
30
- },
31
- collapse: Boolean,
32
- defaultActive: String,
33
- uniqueOpened: {
34
- type: Boolean,
35
- default: true
36
- },
37
- popperClass: String,
38
- biserial: Boolean,
39
- paddingLeft: {
40
- type: Number,
41
- default: 14
42
- },
43
- menuIcon: {
44
- type: String,
45
- default: 'es-icon-application'
46
- },
47
- icons: Object,
48
- subIcon: {
49
- type: Boolean,
50
- default: true
51
- },
52
- menuClass: String,
53
- color: [String, Array],
54
- backgroundColor: [String, Array],
55
- showTitle: {
56
- type: Boolean,
57
- default: true
58
- },
59
- fourthTabs: Boolean
60
- },
61
- computed: {
62
- maxHeight() {
63
- return this.height === undefined ? this.maxH : this.height;
64
- },
65
- maxWidth() {
66
- return this.maxW;
67
- }
68
- },
69
- watch: {
70
- data: {
71
- deep: true,
72
- handler() {
73
- this.getMaxWidth();
74
- }
75
- },
76
- width() {
77
- this.getMaxWidth();
78
- },
79
- height() {
80
- this.$refs.esMenu.update();
81
- }
82
- },
83
- data() {
84
- return {
85
- maxH: '',
86
- maxW: '',
87
- menuId: null,
88
- defaultOpeneds: [],
89
- isChange: false
90
- };
91
- },
92
- beforeCreate() {
93
- this.getMaxWidth = throttle(500, () => {
94
- this.getWidth();
95
- });
96
- },
97
- created() {},
98
- mounted() {
99
- this.getMaxWidth();
100
- },
101
- methods: {
102
- setStyle(num) {
103
- let obj = {};
104
- if (this.color) {
105
- obj.color = this.color;
106
- if (Array.isArray(this.color)) {
107
- obj.color = this.color[num % this.color.length];
108
- } else {
109
- obj.color = this.color;
110
- }
111
- }
112
- if (this.backgroundColor) {
113
- if (Array.isArray(this.backgroundColor)) {
114
- obj.backgroundColor =
115
- this.backgroundColor[num % this.backgroundColor.length];
116
- } else {
117
- obj.backgroundColor = this.backgroundColor;
118
- }
119
- }
120
- return obj;
121
- },
122
- getWidth() {
123
- if (this.mode === 'vertical') {
124
- this.$nextTick(() => {
125
- this.maxH =
126
- this.$refs.esMenu.$el.getBoundingClientRect().height + 'px';
127
- const styles = window.getComputedStyle(
128
- this.$refs.menu.$el.parentNode
129
- );
130
- this.maxW = this.width
131
- ? parseInt(this.width, 10) -
132
- parseInt(styles.marginLeft, 10) -
133
- parseInt(styles.marginRight, 10) +
134
- 'px'
135
- : '';
136
- });
137
- } else {
138
- this.$nextTick(() => {
139
- let w = 0;
140
- this.$refs.menu &&
141
- Array.from(this.$refs.menu.$el.children).forEach((item) => {
142
- w += item.getBoundingClientRect().width;
143
- });
144
- const styles = window.getComputedStyle(this.$refs.menu.$el);
145
- w += parseFloat(styles.paddingLeft) + parseFloat(styles.paddingRight);
146
- if (w > this.$refs.esMenu.$el.getBoundingClientRect().width) {
147
- this.maxW = w + 'px';
148
- }
149
- });
150
- }
151
- },
152
- handleReady() {
153
- if (this.mode === 'horizontal') {
154
- this.$refs.esMenu.wrap.onmouseover = (e) => {
155
- this.$refs.esMenu.wrap.addEventListener(
156
- 'mousewheel',
157
- this.handleWheel,
158
- { passive: false }
159
- ) ||
160
- this.$refs.esMenu.wrap.addEventListener(
161
- 'DOMMouseScroll',
162
- this.handleWheel,
163
- false
164
- );
165
- e.preventDefault();
166
- };
167
- this.$refs.esMenu.wrap.onmouseout = (e) => {
168
- this.$refs.esMenu.wrap.removeEventListener(
169
- 'mousewheel',
170
- this.handleWheel,
171
- { passive: false }
172
- ) ||
173
- this.$refs.esMenu.wrap.removeEventListener(
174
- 'DOMMouseScroll',
175
- this.handleWheel,
176
- false
177
- );
178
- e.preventDefault();
179
- };
180
- }
181
- // const { scrollHeight, clientHeight } =
182
- // this.bodyWrapper.wrap || this.bodyWrapper;
183
- // if (scrollHeight === clientHeight && this.$refs.fixedWrapper) {
184
- // this.$refs.fixedWrapper.onmouseover = (e) => {
185
- // this.$refs.fixedWrapper.addEventListener(
186
- // 'mousewheel',
187
- // this.handleWheel,
188
- // { passive: false }
189
- // ) ||
190
- // this.$refs.fixedWrapper.addEventListener(
191
- // 'DOMMouseScroll',
192
- // this.handleWheel,
193
- // false
194
- // );
195
- // e.preventDefault();
196
- // };
197
- // this.$refs.fixedWrapper.onmouseout = (e) => {
198
- // this.$refs.fixedWrapper.removeEventListener(
199
- // 'mousewheel',
200
- // this.handleWheel,
201
- // { passive: false }
202
- // ) ||
203
- // this.$refs.fixedWrapper.removeEventListener(
204
- // 'DOMMouseScroll',
205
- // this.handleWheel,
206
- // false
207
- // );
208
- // e.preventDefault();
209
- // };
210
- // }
211
- },
212
- handleWheel(e) {
213
- if (!this.sizeHeight) {
214
- const eventDelta = -e.wheelDelta || e.deltaY * 40;
215
- this.$refs.esMenu.$refs.wrap.scrollLeft =
216
- this.$refs.esMenu.$refs.wrap.scrollLeft + eventDelta / 4;
217
- if (
218
- this.$refs.esMenu.$refs.wrap.scrollLeft > 0 &&
219
- this.$refs.esMenu.$refs.wrap.scrollLeft <
220
- this.$refs.esMenu.$refs.wrap.scrollWidth -
221
- this.$refs.esMenu.$refs.wrap.clientWidth
222
- ) {
223
- e.preventDefault();
224
- }
225
- }
226
- },
227
- getFirst(arry) {
228
- let item = arry[0];
229
- if (
230
- Object.prototype.hasOwnProperty.call(item, 'children') &&
231
- item.children.length
232
- ) {
233
- return this.getFirst(item.children);
234
- } else {
235
- this.$emit('select', {
236
- node: item,
237
- mode: this.mode,
238
- auto: true
239
- });
240
- return item.id;
241
- }
242
- },
243
- handleSelect(key, keyPath, item) {
244
- this.isChange = true;
245
- if (this.menuId !== null && keyPath.indexOf(this.menuId) == -1) {
246
- this.$refs.menu.close(this.menuId);
247
- } else {
248
- let openedMenus = item.rootMenu.openedMenus;
249
- openedMenus.forEach((item) => {
250
- if (keyPath.indexOf(item) == -1) {
251
- this.$refs.menu.close(item);
252
- }
253
- });
254
- }
255
- this.$emit('select', {
256
- key: key,
257
- path: keyPath,
258
- node: item.$attrs.data,
259
- fourthTabs: item.$attrs.fourthTabs,
260
- item: item,
261
- mode: this.mode
262
- });
263
- },
264
- handleOpen(key, keyPath, item) {
265
- this.menuId = key;
266
- this.$emit('open', {
267
- key: key,
268
- path: keyPath,
269
- node: item.$attrs.data,
270
- item: item,
271
- mode: this.mode
272
- });
273
- },
274
- handleClose(key, keyPath, item) {
275
- this.menuId = null;
276
- this.$emit('close', {
277
- key: key,
278
- path: keyPath,
279
- node: item.$attrs.data,
280
- item: item,
281
- mode: this.mode
282
- });
283
- },
284
- getSub(item, h, popper, fourthTabs, subIcon, index, directives) {
285
- if (popper) {
286
- popper += this.popperClass
287
- ? ' ' + this.popperClass + ` es-menu-popper-${this.mode}`
288
- : ` es-menu-popper-${this.mode}`;
289
- } else {
290
- popper = this.popperClass
291
- ? ' ' + this.popperClass + ` es-menu-popper-${this.mode}`
292
- : ` es-menu-popper-${this.mode}`;
293
- }
294
- let title = [];
295
- if (subIcon) {
296
- title.push(
297
- h('es-icon', {
298
- props: {
299
- contents: item.icons || this.menuIcon
300
- },
301
- style: this.setStyle(index),
302
- class: ['es-menu-item-icon']
303
- })
304
- );
305
- }
306
- title.push(
307
- h(
308
- 'div',
309
- {
310
- class: [
311
- `es-menu-title-text es-menu-title-${this.mode}`,
312
- {
313
- 'es-menu-title-margin':
314
- this.deep &&
315
- item.children &&
316
- item.children.length &&
317
- (!item.extendData || item.extendData.businessStatus != 0) &&
318
- typeof item.tips === 'boolean' &&
319
- item.tips
320
- }
321
- ],
322
- directives: directives
323
- ? [
324
- {
325
- name: 'show',
326
- value: this.showTitle ? true : !this.collapse
327
- }
328
- ]
329
- : []
330
- },
331
- [
332
- h(
333
- 'el-badge',
334
- {
335
- class: [
336
- 'es-badge',
337
- {
338
- 'es-badge-right':
339
- item.tips && typeof item.tips !== 'boolean',
340
- 'es-dot-right': item.tips && typeof item.tips === 'boolean'
341
- }
342
- ],
343
- attrs: {
344
- title: item.text.length > 18 ? item.text : undefined
345
- },
346
- props:
347
- typeof item.tips === 'boolean' && item.tips
348
- ? {
349
- isDot: true
350
- //hidden: item.tips
351
- }
352
- : {
353
- value: parseInt(item.tips, 10),
354
- max: 99,
355
- hidden: !item.tips
356
- }
357
- },
358
- [item.text]
359
- )
360
- ]
361
- )
362
- );
363
- let doms = [
364
- h('template', { slot: 'title' }, this.titleIcons ? title : [title[1]])
365
- ];
366
- if (this.fourthTabs) {
367
- }
368
- if (
369
- this.deep &&
370
- item.children &&
371
- item.children.length &&
372
- (!item.extendData || item.extendData.businessStatus != 0)
373
- ) {
374
- doms = doms.concat(
375
- item.children.map((ele, index) => {
376
- if (!ele) {
377
- console.error(`对象子数据中第[${index}]条数据错误`, item);
378
- } else {
379
- return this.getSub(ele, h, popper, false, this.subIcon, index);
380
- }
381
- })
382
- );
383
- return [
384
- h(
385
- 'el-submenu',
386
- {
387
- class: [
388
- 'es-submenu',
389
- `es-submenu-${this.mode}`,
390
- item.id === this.active && !this.isChange
391
- ? 'es-menu-item-focus'
392
- : ''
393
- ],
394
- props: {
395
- popperClass: popper,
396
- popperAppendToBody: true,
397
- maxHeight: this.maxHeight,
398
- paddingLeft: this.paddingLeft
399
- },
400
- attrs: { data: item, index: item.id, key: item.id }
401
- },
402
- doms
403
- )
404
- ];
405
- }
406
- if (
407
- this.deep &&
408
- (this.mode === 'horizontal', this.fourthTabs) &&
409
- item.fourthTabs &&
410
- item.fourthTabs.length &&
411
- (!item.extendData || item.extendData.businessStatus != 0)
412
- ) {
413
- doms = doms.concat(
414
- item.fourthTabs.map((ele, index) => {
415
- if (!ele) {
416
- console.error(`对象子数据中第[${index}]条数据错误`, item);
417
- } else {
418
- return this.getSub(ele, h, popper, true, this.subIcon, index);
419
- }
420
- })
421
- );
422
- return [
423
- h(
424
- 'el-submenu',
425
- {
426
- class: [
427
- 'es-submenu',
428
- `es-submenu-${this.mode}`,
429
- item.id === this.active && !this.isChange
430
- ? 'es-menu-item-focus'
431
- : ''
432
- ],
433
- props: {
434
- popperClass: popper,
435
- popperAppendToBody: true,
436
- maxHeight: this.maxHeight,
437
- paddingLeft: this.paddingLeft
438
- },
439
- attrs: { data: item, index: item.id, key: item.id }
440
- },
441
- doms
442
- )
443
- ];
444
- } else {
445
- return [
446
- h(
447
- 'el-menu-item',
448
- {
449
- class: [
450
- 'es-menu-item ' + (this.deep ? '' : `es-item-${this.mode}`)
451
- ],
452
- props: {
453
- paddingLeft: this.paddingLeft,
454
- disabled: item.extendData && item.extendData.businessStatus == 0
455
- },
456
- attrs: {
457
- data: item,
458
- index: item.id,
459
- key: item.id,
460
- fourthTabs: fourthTabs
461
- }
462
- },
463
- this.titleIcons ? title : [title[1]]
464
- )
465
- ];
466
- }
467
- }
468
- },
469
- render(h) {
470
- let doms = [];
471
- this.data.forEach((item, index) => {
472
- if (
473
- item.children &&
474
- item.children.length &&
475
- (!item.extendData || item.extendData.businessStatus != 0)
476
- ) {
477
- doms = doms.concat(
478
- this.getSub(item, h, 'es-sub-menu', false, true, index, true)
479
- );
480
- } else {
481
- const title = [
482
- h('es-icon', {
483
- props: {
484
- contents: item.icons || this.menuIcon
485
- },
486
- style: this.setStyle(index),
487
- class: ['es-menu-item-icon']
488
- }),
489
- h(
490
- 'div',
491
- {
492
- class: [`es-menu-title-text es-menu-title-${this.mode}`],
493
- directives: [
494
- {
495
- name: 'show',
496
- value: this.showTitle ? true : !this.collapse
497
- }
498
- ]
499
- },
500
- [
501
- h(
502
- 'el-badge',
503
- {
504
- class: [
505
- 'es-badge',
506
- {
507
- 'es-badge-right':
508
- item.tips && typeof item.tips !== 'boolean',
509
- 'es-dot-right':
510
- item.tips && typeof item.tips === 'boolean'
511
- }
512
- ],
513
- props:
514
- typeof item.tips === 'boolean' && item.tips
515
- ? {
516
- isDot: true
517
- //hidden: item.tips
518
- }
519
- : {
520
- value: parseInt(item.tips, 10),
521
- max: 99,
522
- hidden: !item.tips
523
- }
524
- },
525
- [item.text]
526
- )
527
- ]
528
- )
529
- ];
530
- doms.push(
531
- h(
532
- 'el-menu-item',
533
- {
534
- class: [`es-menu-item-${this.mode}`],
535
- props: {
536
- paddingLeft: this.paddingLeft,
537
- disabled: item.extendData && item.extendData.businessStatus == 0
538
- },
539
- attrs: {
540
- data: item,
541
- index: item.id,
542
- key: item.id
543
- }
544
- },
545
- this.titleIcons ? title : [title[1]]
546
- )
547
- );
548
- }
549
- });
550
- return h(
551
- 'el-scrollbar',
552
- {
553
- ref: 'esMenu',
554
- props: {
555
- horizontal: this.mode === 'horizontal',
556
- onReady: this.handleReady
557
- },
558
- class: `es-menu-${this.mode}-scrollbar`
559
- },
560
- [
561
- h(
562
- 'el-menu',
563
- {
564
- class: [
565
- 'es-menu',
566
- this.menuClass,
567
- `es-menu-${this.mode}`,
568
- { 'es-menu-collapse': this.collapse },
569
- { 'es-menu-nav': this.subNav }
570
- ],
571
- ref: 'menu',
572
- props: {
573
- defaultOpeneds: this.defaultOpeneds,
574
- defaultActive: this.defaultActive,
575
- collapse: this.collapse,
576
- mode: this.mode,
577
- uniqueOpened: this.uniqueOpened,
578
- icons: this.icons
579
- },
580
- style: { width: this.maxWidth },
581
- attrs: { ...this.$attrs },
582
- on: {
583
- ...this.$listeners,
584
- open: this.handleOpen,
585
- close: this.handleClose,
586
- select: this.handleSelect
587
- }
588
- },
589
- doms
590
- )
591
- ]
592
- );
593
- }
594
- };
595
- </script>
1
+ <script>
2
+ import { throttle } from 'throttle-debounce';
3
+ export default {
4
+ name: 'EsMenu',
5
+ inheritAttrs: false,
6
+ props: {
7
+ data: {
8
+ type: Array,
9
+ default() {
10
+ return [];
11
+ }
12
+ },
13
+ titleIcons: {
14
+ type: Boolean,
15
+ default: true
16
+ },
17
+ deep: {
18
+ type: Boolean,
19
+ default: true
20
+ },
21
+ subNav: {
22
+ type: Boolean,
23
+ default: false
24
+ },
25
+ width: String,
26
+ height: String,
27
+ mode: {
28
+ type: String,
29
+ default: 'vertical'
30
+ },
31
+ collapse: Boolean,
32
+ defaultActive: String,
33
+ uniqueOpened: {
34
+ type: Boolean,
35
+ default: true
36
+ },
37
+ popperClass: String,
38
+ biserial: Boolean,
39
+ paddingLeft: {
40
+ type: Number,
41
+ default: 14
42
+ },
43
+ menuIcon: {
44
+ type: String,
45
+ default: 'es-icon-application'
46
+ },
47
+ icons: Object,
48
+ subIcon: {
49
+ type: Boolean,
50
+ default: true
51
+ },
52
+ menuClass: String,
53
+ color: [String, Array],
54
+ backgroundColor: [String, Array],
55
+ showTitle: {
56
+ type: Boolean,
57
+ default: true
58
+ },
59
+ fourthTabs: Boolean
60
+ },
61
+ computed: {
62
+ maxHeight() {
63
+ return this.height === undefined ? this.maxH : this.height;
64
+ },
65
+ maxWidth() {
66
+ return this.maxW;
67
+ }
68
+ },
69
+ watch: {
70
+ data: {
71
+ deep: true,
72
+ handler() {
73
+ this.getMaxWidth();
74
+ }
75
+ },
76
+ width() {
77
+ this.getMaxWidth();
78
+ },
79
+ height() {
80
+ this.$refs.esMenu.update();
81
+ }
82
+ },
83
+ data() {
84
+ return {
85
+ maxH: '',
86
+ maxW: '',
87
+ menuId: null,
88
+ defaultOpeneds: [],
89
+ isChange: false
90
+ };
91
+ },
92
+ beforeCreate() {
93
+ this.getMaxWidth = throttle(500, () => {
94
+ this.getWidth();
95
+ });
96
+ },
97
+ created() {},
98
+ mounted() {
99
+ this.getMaxWidth();
100
+ },
101
+ methods: {
102
+ setStyle(num) {
103
+ let obj = {};
104
+ if (this.color) {
105
+ obj.color = this.color;
106
+ if (Array.isArray(this.color)) {
107
+ obj.color = this.color[num % this.color.length];
108
+ } else {
109
+ obj.color = this.color;
110
+ }
111
+ }
112
+ if (this.backgroundColor) {
113
+ if (Array.isArray(this.backgroundColor)) {
114
+ obj.backgroundColor =
115
+ this.backgroundColor[num % this.backgroundColor.length];
116
+ } else {
117
+ obj.backgroundColor = this.backgroundColor;
118
+ }
119
+ }
120
+ return obj;
121
+ },
122
+ getWidth() {
123
+ if (this.mode === 'vertical') {
124
+ this.$nextTick(() => {
125
+ this.maxH =
126
+ this.$refs.esMenu.$el.getBoundingClientRect().height + 'px';
127
+ const styles = window.getComputedStyle(
128
+ this.$refs.menu.$el.parentNode
129
+ );
130
+ this.maxW = this.width
131
+ ? parseInt(this.width, 10) -
132
+ parseInt(styles.marginLeft, 10) -
133
+ parseInt(styles.marginRight, 10) +
134
+ 'px'
135
+ : '';
136
+ });
137
+ } else {
138
+ this.$nextTick(() => {
139
+ let w = 0;
140
+ this.$refs.menu &&
141
+ Array.from(this.$refs.menu.$el.children).forEach((item) => {
142
+ w += item.getBoundingClientRect().width;
143
+ });
144
+ const styles = window.getComputedStyle(this.$refs.menu.$el);
145
+ w += parseFloat(styles.paddingLeft) + parseFloat(styles.paddingRight);
146
+ if (w > this.$refs.esMenu.$el.getBoundingClientRect().width) {
147
+ this.maxW = w + 'px';
148
+ }
149
+ });
150
+ }
151
+ },
152
+ handleReady() {
153
+ if (this.mode === 'horizontal') {
154
+ this.$refs.esMenu.wrap.onmouseover = (e) => {
155
+ this.$refs.esMenu.wrap.addEventListener(
156
+ 'mousewheel',
157
+ this.handleWheel,
158
+ { passive: false }
159
+ ) ||
160
+ this.$refs.esMenu.wrap.addEventListener(
161
+ 'DOMMouseScroll',
162
+ this.handleWheel,
163
+ false
164
+ );
165
+ e.preventDefault();
166
+ };
167
+ this.$refs.esMenu.wrap.onmouseout = (e) => {
168
+ this.$refs.esMenu.wrap.removeEventListener(
169
+ 'mousewheel',
170
+ this.handleWheel,
171
+ { passive: false }
172
+ ) ||
173
+ this.$refs.esMenu.wrap.removeEventListener(
174
+ 'DOMMouseScroll',
175
+ this.handleWheel,
176
+ false
177
+ );
178
+ e.preventDefault();
179
+ };
180
+ }
181
+ // const { scrollHeight, clientHeight } =
182
+ // this.bodyWrapper.wrap || this.bodyWrapper;
183
+ // if (scrollHeight === clientHeight && this.$refs.fixedWrapper) {
184
+ // this.$refs.fixedWrapper.onmouseover = (e) => {
185
+ // this.$refs.fixedWrapper.addEventListener(
186
+ // 'mousewheel',
187
+ // this.handleWheel,
188
+ // { passive: false }
189
+ // ) ||
190
+ // this.$refs.fixedWrapper.addEventListener(
191
+ // 'DOMMouseScroll',
192
+ // this.handleWheel,
193
+ // false
194
+ // );
195
+ // e.preventDefault();
196
+ // };
197
+ // this.$refs.fixedWrapper.onmouseout = (e) => {
198
+ // this.$refs.fixedWrapper.removeEventListener(
199
+ // 'mousewheel',
200
+ // this.handleWheel,
201
+ // { passive: false }
202
+ // ) ||
203
+ // this.$refs.fixedWrapper.removeEventListener(
204
+ // 'DOMMouseScroll',
205
+ // this.handleWheel,
206
+ // false
207
+ // );
208
+ // e.preventDefault();
209
+ // };
210
+ // }
211
+ },
212
+ handleWheel(e) {
213
+ if (!this.sizeHeight) {
214
+ const eventDelta = -e.wheelDelta || e.deltaY * 40;
215
+ this.$refs.esMenu.$refs.wrap.scrollLeft =
216
+ this.$refs.esMenu.$refs.wrap.scrollLeft + eventDelta / 4;
217
+ if (
218
+ this.$refs.esMenu.$refs.wrap.scrollLeft > 0 &&
219
+ this.$refs.esMenu.$refs.wrap.scrollLeft <
220
+ this.$refs.esMenu.$refs.wrap.scrollWidth -
221
+ this.$refs.esMenu.$refs.wrap.clientWidth
222
+ ) {
223
+ e.preventDefault();
224
+ }
225
+ }
226
+ },
227
+ getFirst(arry) {
228
+ let item = arry[0];
229
+ if (
230
+ Object.prototype.hasOwnProperty.call(item, 'children') &&
231
+ item.children.length
232
+ ) {
233
+ return this.getFirst(item.children);
234
+ } else {
235
+ this.$emit('select', {
236
+ node: item,
237
+ mode: this.mode,
238
+ auto: true
239
+ });
240
+ return item.id;
241
+ }
242
+ },
243
+ handleSelect(key, keyPath, item) {
244
+ this.isChange = true;
245
+ if (this.menuId !== null && keyPath.indexOf(this.menuId) == -1) {
246
+ this.$refs.menu.close(this.menuId);
247
+ } else {
248
+ let openedMenus = item.rootMenu.openedMenus;
249
+ openedMenus.forEach((item) => {
250
+ if (keyPath.indexOf(item) == -1) {
251
+ this.$refs.menu.close(item);
252
+ }
253
+ });
254
+ }
255
+ this.$emit('select', {
256
+ key: key,
257
+ path: keyPath,
258
+ node: item.$attrs.data,
259
+ fourthTabs: item.$attrs.fourthTabs,
260
+ item: item,
261
+ mode: this.mode
262
+ });
263
+ },
264
+ handleOpen(key, keyPath, item) {
265
+ this.menuId = key;
266
+ this.$emit('open', {
267
+ key: key,
268
+ path: keyPath,
269
+ node: item.$attrs.data,
270
+ item: item,
271
+ mode: this.mode
272
+ });
273
+ },
274
+ handleClose(key, keyPath, item) {
275
+ this.menuId = null;
276
+ this.$emit('close', {
277
+ key: key,
278
+ path: keyPath,
279
+ node: item.$attrs.data,
280
+ item: item,
281
+ mode: this.mode
282
+ });
283
+ },
284
+ getSub(item, h, popper, fourthTabs, subIcon, index, directives) {
285
+ if (popper) {
286
+ popper += this.popperClass
287
+ ? ' ' + this.popperClass + ` es-menu-popper-${this.mode}`
288
+ : ` es-menu-popper-${this.mode}`;
289
+ } else {
290
+ popper = this.popperClass
291
+ ? ' ' + this.popperClass + ` es-menu-popper-${this.mode}`
292
+ : ` es-menu-popper-${this.mode}`;
293
+ }
294
+ let title = [];
295
+ if (subIcon) {
296
+ title.push(
297
+ h('es-icon', {
298
+ props: {
299
+ contents: item.icons || this.menuIcon
300
+ },
301
+ style: this.setStyle(index),
302
+ class: ['es-menu-item-icon']
303
+ })
304
+ );
305
+ }
306
+ title.push(
307
+ h(
308
+ 'div',
309
+ {
310
+ class: [
311
+ `es-menu-title-text es-menu-title-${this.mode}`,
312
+ {
313
+ 'es-menu-title-margin':
314
+ this.deep &&
315
+ item.children &&
316
+ item.children.length &&
317
+ (!item.extendData || item.extendData.businessStatus != 0) &&
318
+ typeof item.tips === 'boolean' &&
319
+ item.tips
320
+ }
321
+ ],
322
+ directives: directives
323
+ ? [
324
+ {
325
+ name: 'show',
326
+ value: this.showTitle ? true : !this.collapse
327
+ }
328
+ ]
329
+ : []
330
+ },
331
+ [
332
+ h(
333
+ 'el-badge',
334
+ {
335
+ class: [
336
+ 'es-badge',
337
+ {
338
+ 'es-badge-right':
339
+ item.tips && typeof item.tips !== 'boolean',
340
+ 'es-dot-right': item.tips && typeof item.tips === 'boolean'
341
+ }
342
+ ],
343
+ attrs: {
344
+ title: item.text.length > 18 ? item.text : undefined
345
+ },
346
+ props:
347
+ typeof item.tips === 'boolean' && item.tips
348
+ ? {
349
+ isDot: true
350
+ //hidden: item.tips
351
+ }
352
+ : {
353
+ value: parseInt(item.tips, 10),
354
+ max: 99,
355
+ hidden: !item.tips
356
+ }
357
+ },
358
+ [item.text]
359
+ )
360
+ ]
361
+ )
362
+ );
363
+ let doms = [
364
+ h('template', { slot: 'title' }, this.titleIcons ? title : [title[1]])
365
+ ];
366
+ if (this.fourthTabs) {
367
+ }
368
+ if (
369
+ this.deep &&
370
+ item.children &&
371
+ item.children.length &&
372
+ (!item.extendData || item.extendData.businessStatus != 0)
373
+ ) {
374
+ doms = doms.concat(
375
+ item.children.map((ele, index) => {
376
+ if (!ele) {
377
+ console.error(`对象子数据中第[${index}]条数据错误`, item);
378
+ } else {
379
+ return this.getSub(ele, h, popper, false, this.subIcon, index);
380
+ }
381
+ })
382
+ );
383
+ return [
384
+ h(
385
+ 'el-submenu',
386
+ {
387
+ class: [
388
+ 'es-submenu',
389
+ `es-submenu-${this.mode}`,
390
+ item.id === this.active && !this.isChange
391
+ ? 'es-menu-item-focus'
392
+ : ''
393
+ ],
394
+ props: {
395
+ popperClass: popper,
396
+ popperAppendToBody: true,
397
+ maxHeight: this.maxHeight,
398
+ paddingLeft: this.paddingLeft
399
+ },
400
+ attrs: { data: item, index: item.id, key: item.id }
401
+ },
402
+ doms
403
+ )
404
+ ];
405
+ }
406
+ if (
407
+ this.deep &&
408
+ (this.mode === 'horizontal', this.fourthTabs) &&
409
+ item.fourthTabs &&
410
+ item.fourthTabs.length &&
411
+ (!item.extendData || item.extendData.businessStatus != 0)
412
+ ) {
413
+ doms = doms.concat(
414
+ item.fourthTabs.map((ele, index) => {
415
+ if (!ele) {
416
+ console.error(`对象子数据中第[${index}]条数据错误`, item);
417
+ } else {
418
+ return this.getSub(ele, h, popper, true, this.subIcon, index);
419
+ }
420
+ })
421
+ );
422
+ return [
423
+ h(
424
+ 'el-submenu',
425
+ {
426
+ class: [
427
+ 'es-submenu',
428
+ `es-submenu-${this.mode}`,
429
+ item.id === this.active && !this.isChange
430
+ ? 'es-menu-item-focus'
431
+ : ''
432
+ ],
433
+ props: {
434
+ popperClass: popper,
435
+ popperAppendToBody: true,
436
+ maxHeight: this.maxHeight,
437
+ paddingLeft: this.paddingLeft
438
+ },
439
+ attrs: { data: item, index: item.id, key: item.id }
440
+ },
441
+ doms
442
+ )
443
+ ];
444
+ } else {
445
+ return [
446
+ h(
447
+ 'el-menu-item',
448
+ {
449
+ class: [
450
+ 'es-menu-item ' + (this.deep ? '' : `es-item-${this.mode}`)
451
+ ],
452
+ props: {
453
+ paddingLeft: this.paddingLeft,
454
+ disabled: item.extendData && item.extendData.businessStatus == 0
455
+ },
456
+ attrs: {
457
+ data: item,
458
+ index: item.id,
459
+ key: item.id,
460
+ fourthTabs: fourthTabs
461
+ }
462
+ },
463
+ this.titleIcons ? title : [title[1]]
464
+ )
465
+ ];
466
+ }
467
+ }
468
+ },
469
+ render(h) {
470
+ let doms = [];
471
+ this.data.forEach((item, index) => {
472
+ if (
473
+ item.children &&
474
+ item.children.length &&
475
+ (!item.extendData || item.extendData.businessStatus != 0)
476
+ ) {
477
+ doms = doms.concat(
478
+ this.getSub(item, h, 'es-sub-menu', false, true, index, true)
479
+ );
480
+ } else {
481
+ const title = [
482
+ h('es-icon', {
483
+ props: {
484
+ contents: item.icons || this.menuIcon
485
+ },
486
+ style: this.setStyle(index),
487
+ class: ['es-menu-item-icon']
488
+ }),
489
+ h(
490
+ 'div',
491
+ {
492
+ class: [`es-menu-title-text es-menu-title-${this.mode}`],
493
+ directives: [
494
+ {
495
+ name: 'show',
496
+ value: this.showTitle ? true : !this.collapse
497
+ }
498
+ ]
499
+ },
500
+ [
501
+ h(
502
+ 'el-badge',
503
+ {
504
+ class: [
505
+ 'es-badge',
506
+ {
507
+ 'es-badge-right':
508
+ item.tips && typeof item.tips !== 'boolean',
509
+ 'es-dot-right':
510
+ item.tips && typeof item.tips === 'boolean'
511
+ }
512
+ ],
513
+ props:
514
+ typeof item.tips === 'boolean' && item.tips
515
+ ? {
516
+ isDot: true
517
+ //hidden: item.tips
518
+ }
519
+ : {
520
+ value: parseInt(item.tips, 10),
521
+ max: 99,
522
+ hidden: !item.tips
523
+ }
524
+ },
525
+ [item.text]
526
+ )
527
+ ]
528
+ )
529
+ ];
530
+ doms.push(
531
+ h(
532
+ 'el-menu-item',
533
+ {
534
+ class: [`es-menu-item-${this.mode}`],
535
+ props: {
536
+ paddingLeft: this.paddingLeft,
537
+ disabled: item.extendData && item.extendData.businessStatus == 0
538
+ },
539
+ attrs: {
540
+ data: item,
541
+ index: item.id,
542
+ key: item.id
543
+ }
544
+ },
545
+ this.titleIcons ? title : [title[1]]
546
+ )
547
+ );
548
+ }
549
+ });
550
+ return h(
551
+ 'el-scrollbar',
552
+ {
553
+ ref: 'esMenu',
554
+ props: {
555
+ horizontal: this.mode === 'horizontal',
556
+ onReady: this.handleReady
557
+ },
558
+ class: `es-menu-${this.mode}-scrollbar`
559
+ },
560
+ [
561
+ h(
562
+ 'el-menu',
563
+ {
564
+ class: [
565
+ 'es-menu',
566
+ this.menuClass,
567
+ `es-menu-${this.mode}`,
568
+ { 'es-menu-collapse': this.collapse },
569
+ { 'es-menu-nav': this.subNav }
570
+ ],
571
+ ref: 'menu',
572
+ props: {
573
+ defaultOpeneds: this.defaultOpeneds,
574
+ defaultActive: this.defaultActive,
575
+ collapse: this.collapse,
576
+ mode: this.mode,
577
+ uniqueOpened: this.uniqueOpened,
578
+ icons: this.icons
579
+ },
580
+ style: { width: this.maxWidth },
581
+ attrs: { ...this.$attrs },
582
+ on: {
583
+ ...this.$listeners,
584
+ open: this.handleOpen,
585
+ close: this.handleClose,
586
+ select: this.handleSelect
587
+ }
588
+ },
589
+ doms
590
+ )
591
+ ]
592
+ );
593
+ }
594
+ };
595
+ </script>