eoss-ui 0.7.23 → 0.7.25

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