@zkwq/business 0.0.4 → 0.0.6

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 (227) hide show
  1. package/package.json +2 -2
  2. package/src/components/base/ui/alert/Alert.vue +0 -94
  3. package/src/components/base/ui/autocomplete/autocomplete-suggestions.vue +0 -77
  4. package/src/components/base/ui/autocomplete/autocomplete.vue +0 -305
  5. package/src/components/base/ui/backtop/main.vue +0 -112
  6. package/src/components/base/ui/button/Button.vue +0 -84
  7. package/src/components/base/ui/button/ButtonGroup.vue +0 -10
  8. package/src/components/base/ui/carousel/Carousel.vue +0 -304
  9. package/src/components/base/ui/carousel/CarouselItem.vue +0 -137
  10. package/src/components/base/ui/cascader/cascader.vue +0 -650
  11. package/src/components/base/ui/cascader-panel/cascader-menu.vue +0 -138
  12. package/src/components/base/ui/cascader-panel/cascader-node.vue +0 -246
  13. package/src/components/base/ui/cascader-panel/cascader-panel.vue +0 -382
  14. package/src/components/base/ui/cascader-panel/node.js +0 -166
  15. package/src/components/base/ui/cascader-panel/store.js +0 -62
  16. package/src/components/base/ui/checkbox/checkbox-button.vue +0 -199
  17. package/src/components/base/ui/checkbox/checkbox-group.vue +0 -48
  18. package/src/components/base/ui/checkbox/checkbox.vue +0 -222
  19. package/src/components/base/ui/col/col.js +0 -71
  20. package/src/components/base/ui/collapse/collapse-item.vue +0 -180
  21. package/src/components/base/ui/collapse/collapse.vue +0 -73
  22. package/src/components/base/ui/color-picker/color.js +0 -317
  23. package/src/components/base/ui/color-picker/components/alpha-slider.vue +0 -132
  24. package/src/components/base/ui/color-picker/components/hue-slider.vue +0 -123
  25. package/src/components/base/ui/color-picker/components/picker-dropdown.vue +0 -119
  26. package/src/components/base/ui/color-picker/components/predefine.vue +0 -61
  27. package/src/components/base/ui/color-picker/components/sv-panel.vue +0 -100
  28. package/src/components/base/ui/color-picker/draggable.js +0 -36
  29. package/src/components/base/ui/color-picker/index.js +0 -2
  30. package/src/components/base/ui/color-picker/main.vue +0 -188
  31. package/src/components/base/ui/date-picker/basic/date-table.vue +0 -441
  32. package/src/components/base/ui/date-picker/basic/month-table.vue +0 -254
  33. package/src/components/base/ui/date-picker/basic/time-spinner.vue +0 -304
  34. package/src/components/base/ui/date-picker/basic/year-table.vue +0 -101
  35. package/src/components/base/ui/date-picker/panel/date-range.vue +0 -680
  36. package/src/components/base/ui/date-picker/panel/date.vue +0 -597
  37. package/src/components/base/ui/date-picker/panel/month-range.vue +0 -289
  38. package/src/components/base/ui/date-picker/panel/time-range.vue +0 -248
  39. package/src/components/base/ui/date-picker/panel/time-select.vue +0 -178
  40. package/src/components/base/ui/date-picker/panel/time.vue +0 -186
  41. package/src/components/base/ui/date-picker/picker/date-picker.js +0 -43
  42. package/src/components/base/ui/date-picker/picker/time-picker.js +0 -39
  43. package/src/components/base/ui/date-picker/picker/time-select.js +0 -21
  44. package/src/components/base/ui/date-picker/picker.vue +0 -942
  45. package/src/components/base/ui/dialog/Index.vue +0 -212
  46. package/src/components/base/ui/directive/repeat-click.js +0 -24
  47. package/src/components/base/ui/directive/ripple.js +0 -303
  48. package/src/components/base/ui/divider/Divider.vue +0 -37
  49. package/src/components/base/ui/drawer/Drawer.vue +0 -202
  50. package/src/components/base/ui/dropdown/dropdown-item.vue +0 -39
  51. package/src/components/base/ui/dropdown/dropdown-menu.vue +0 -63
  52. package/src/components/base/ui/dropdown/dropdown.vue +0 -308
  53. package/src/components/base/ui/form/Form.vue +0 -167
  54. package/src/components/base/ui/form/FormItem.vue +0 -334
  55. package/src/components/base/ui/form/LabelWrap.vue +0 -69
  56. package/src/components/base/ui/icon/icon.vue +0 -13
  57. package/src/components/base/ui/image/image-viewer.vue +0 -302
  58. package/src/components/base/ui/image/main.vue +0 -248
  59. package/src/components/base/ui/index.js +0 -189
  60. package/src/components/base/ui/input/Input.vue +0 -438
  61. package/src/components/base/ui/input/calcTextareaHeight.js +0 -104
  62. package/src/components/base/ui/input-number/input-number.vue +0 -285
  63. package/src/components/base/ui/locale/format.js +0 -32
  64. package/src/components/base/ui/locale/index.js +0 -48
  65. package/src/components/base/ui/locale/lang/zh-CN.js +0 -120
  66. package/src/components/base/ui/menu/menu-item-group.vue +0 -45
  67. package/src/components/base/ui/menu/menu-item.vue +0 -112
  68. package/src/components/base/ui/menu/menu-mixin.js +0 -44
  69. package/src/components/base/ui/menu/menu.vue +0 -312
  70. package/src/components/base/ui/menu/submenu.vue +0 -408
  71. package/src/components/base/ui/message/index.js +0 -2
  72. package/src/components/base/ui/message/main.js +0 -87
  73. package/src/components/base/ui/message/main.vue +0 -110
  74. package/src/components/base/ui/message-box/main.js +0 -216
  75. package/src/components/base/ui/message-box/main.vue +0 -323
  76. package/src/components/base/ui/mixin/emitter.js +0 -31
  77. package/src/components/base/ui/mixin/focus.js +0 -9
  78. package/src/components/base/ui/mixin/locale.js +0 -9
  79. package/src/components/base/ui/mixin/migrating.js +0 -33
  80. package/src/components/base/ui/pagination/pager.vue +0 -163
  81. package/src/components/base/ui/pagination/pagination.jsx +0 -391
  82. package/src/components/base/ui/popover/directive.js +0 -20
  83. package/src/components/base/ui/popover/index.js +0 -14
  84. package/src/components/base/ui/popover/main.vue +0 -236
  85. package/src/components/base/ui/progress/Progress.vue +0 -227
  86. package/src/components/base/ui/radio/radio-button.vue +0 -114
  87. package/src/components/base/ui/radio/radio-group.vue +0 -111
  88. package/src/components/base/ui/radio/radio.vue +0 -134
  89. package/src/components/base/ui/row/row.js +0 -47
  90. package/src/components/base/ui/scrollbar/bar.jsx +0 -91
  91. package/src/components/base/ui/scrollbar/index.jsx +0 -203
  92. package/src/components/base/ui/scrollbar/util.js +0 -32
  93. package/src/components/base/ui/select/Option.vue +0 -168
  94. package/src/components/base/ui/select/OptionGroup.vue +0 -60
  95. package/src/components/base/ui/select/Select.vue +0 -920
  96. package/src/components/base/ui/select/SelectDropdown.vue +0 -74
  97. package/src/components/base/ui/select/navigation-mixin.js +0 -54
  98. package/src/components/base/ui/skeleton/index.js +0 -8
  99. package/src/components/base/ui/skeleton/src/img-placeholder.vue +0 -16
  100. package/src/components/base/ui/skeleton/src/index.vue +0 -80
  101. package/src/components/base/ui/skeleton/src/item.vue +0 -22
  102. package/src/components/base/ui/skeleton-item/index.js +0 -8
  103. package/src/components/base/ui/slider/button.vue +0 -238
  104. package/src/components/base/ui/slider/main.vue +0 -427
  105. package/src/components/base/ui/slider/marker.js +0 -18
  106. package/src/components/base/ui/style/alert.scss +0 -147
  107. package/src/components/base/ui/style/animations.scss +0 -65
  108. package/src/components/base/ui/style/autocomplete.scss +0 -81
  109. package/src/components/base/ui/style/backtop.scss +0 -20
  110. package/src/components/base/ui/style/button-group.scss +0 -0
  111. package/src/components/base/ui/style/button.scss +0 -380
  112. package/src/components/base/ui/style/carousel-item.scss +0 -50
  113. package/src/components/base/ui/style/carousel.scss +0 -161
  114. package/src/components/base/ui/style/cascader-panel.scss +0 -120
  115. package/src/components/base/ui/style/cascader.scss +0 -185
  116. package/src/components/base/ui/style/checkbox-button.scss +0 -0
  117. package/src/components/base/ui/style/checkbox-group.scss +0 -0
  118. package/src/components/base/ui/style/checkbox.scss +0 -360
  119. package/src/components/base/ui/style/col.scss +0 -156
  120. package/src/components/base/ui/style/collapse-item.scss +0 -0
  121. package/src/components/base/ui/style/collapse.scss +0 -114
  122. package/src/components/base/ui/style/color-picker.scss +0 -387
  123. package/src/components/base/ui/style/config.scss +0 -4
  124. package/src/components/base/ui/style/date-picker/date-picker.scss +0 -97
  125. package/src/components/base/ui/style/date-picker/date-range-picker.scss +0 -101
  126. package/src/components/base/ui/style/date-picker/date-table.scss +0 -151
  127. package/src/components/base/ui/style/date-picker/month-table.scss +0 -82
  128. package/src/components/base/ui/style/date-picker/picker-panel.scss +0 -117
  129. package/src/components/base/ui/style/date-picker/picker.scss +0 -197
  130. package/src/components/base/ui/style/date-picker/time-picker.scss +0 -85
  131. package/src/components/base/ui/style/date-picker/time-range-picker.scss +0 -31
  132. package/src/components/base/ui/style/date-picker/time-spinner.scss +0 -110
  133. package/src/components/base/ui/style/date-picker/year-table.scss +0 -51
  134. package/src/components/base/ui/style/date-picker.scss +0 -12
  135. package/src/components/base/ui/style/dialog.scss +0 -123
  136. package/src/components/base/ui/style/divider.scss +0 -47
  137. package/src/components/base/ui/style/drawer.scss +0 -218
  138. package/src/components/base/ui/style/dropdown-item.scss +0 -0
  139. package/src/components/base/ui/style/dropdown-menu.scss +0 -0
  140. package/src/components/base/ui/style/dropdown.scss +0 -185
  141. package/src/components/base/ui/style/form-item.scss +0 -0
  142. package/src/components/base/ui/style/form.scss +0 -203
  143. package/src/components/base/ui/style/function.scss +0 -43
  144. package/src/components/base/ui/style/icon.scss +0 -1167
  145. package/src/components/base/ui/style/image.scss +0 -184
  146. package/src/components/base/ui/style/index.scss +0 -57
  147. package/src/components/base/ui/style/input-number.scss +0 -187
  148. package/src/components/base/ui/style/input.scss +0 -477
  149. package/src/components/base/ui/style/menu-item-group.scss +0 -0
  150. package/src/components/base/ui/style/menu-item.scss +0 -0
  151. package/src/components/base/ui/style/menu.scss +0 -294
  152. package/src/components/base/ui/style/message-box.scss +0 -231
  153. package/src/components/base/ui/style/message.scss +0 -120
  154. package/src/components/base/ui/style/mixins.scss +0 -196
  155. package/src/components/base/ui/style/option-group.scss +0 -42
  156. package/src/components/base/ui/style/option.scss +0 -36
  157. package/src/components/base/ui/style/pagination.scss +0 -295
  158. package/src/components/base/ui/style/popover.scss +0 -40
  159. package/src/components/base/ui/style/popper.scss +0 -102
  160. package/src/components/base/ui/style/popup.scss +0 -42
  161. package/src/components/base/ui/style/progress.scss +0 -141
  162. package/src/components/base/ui/style/radio-button.scss +0 -113
  163. package/src/components/base/ui/style/radio-group.scss +0 -9
  164. package/src/components/base/ui/style/radio.scss +0 -203
  165. package/src/components/base/ui/style/ripple.scss +0 -35
  166. package/src/components/base/ui/style/row.scss +0 -39
  167. package/src/components/base/ui/style/scrollbar.scss +0 -75
  168. package/src/components/base/ui/style/select-dropdown.scss +0 -59
  169. package/src/components/base/ui/style/select.scss +0 -154
  170. package/src/components/base/ui/style/skeleton-item.scss +0 -84
  171. package/src/components/base/ui/style/skeleton.scss +0 -40
  172. package/src/components/base/ui/style/slider.scss +0 -250
  173. package/src/components/base/ui/style/switch.scss +0 -116
  174. package/src/components/base/ui/style/tabs.scss +0 -602
  175. package/src/components/base/ui/style/tag.scss +0 -174
  176. package/src/components/base/ui/style/tooltip.scss +0 -146
  177. package/src/components/base/ui/style/transition.scss +0 -138
  178. package/src/components/base/ui/style/upload.scss +0 -603
  179. package/src/components/base/ui/style/utils.scss +0 -39
  180. package/src/components/base/ui/style/var.scss +0 -1011
  181. package/src/components/base/ui/switch/index.vue +0 -174
  182. package/src/components/base/ui/tabs/tab-bar.vue +0 -57
  183. package/src/components/base/ui/tabs/tab-nav.vue +0 -294
  184. package/src/components/base/ui/tabs/tab-pane.vue +0 -56
  185. package/src/components/base/ui/tabs/tabs.vue +0 -191
  186. package/src/components/base/ui/tag/Tag.vue +0 -60
  187. package/src/components/base/ui/tooltip/tooltip.jsx +0 -234
  188. package/src/components/base/ui/upload/Index.vue +0 -340
  189. package/src/components/base/ui/upload/Upload.vue +0 -216
  190. package/src/components/base/ui/upload/UploadDragger.vue +0 -70
  191. package/src/components/base/ui/upload/UploadList.vue +0 -100
  192. package/src/components/base/ui/upload/ajax.js +0 -85
  193. package/src/components/base/ui/util/aria-dialog.js +0 -90
  194. package/src/components/base/ui/util/aria-utils.js +0 -122
  195. package/src/components/base/ui/util/clickoutside.js +0 -76
  196. package/src/components/base/ui/util/date-util.js +0 -292
  197. package/src/components/base/ui/util/date.js +0 -355
  198. package/src/components/base/ui/util/debounce.js +0 -21
  199. package/src/components/base/ui/util/deepmerge.js +0 -100
  200. package/src/components/base/ui/util/dom.js +0 -215
  201. package/src/components/base/ui/util/index.js +0 -262
  202. package/src/components/base/ui/util/menu/aria-menubar.js +0 -14
  203. package/src/components/base/ui/util/menu/aria-menuitem.js +0 -49
  204. package/src/components/base/ui/util/menu/aria-submenu.js +0 -59
  205. package/src/components/base/ui/util/merge.js +0 -14
  206. package/src/components/base/ui/util/popper.js +0 -1235
  207. package/src/components/base/ui/util/popup/index.js +0 -218
  208. package/src/components/base/ui/util/popup/popup-manager.js +0 -194
  209. package/src/components/base/ui/util/resize-events.js +0 -32
  210. package/src/components/base/ui/util/scroll-into-view.js +0 -27
  211. package/src/components/base/ui/util/scrollbar-width.js +0 -29
  212. package/src/components/base/ui/util/shared.js +0 -7
  213. package/src/components/base/ui/util/throttle.js +0 -91
  214. package/src/components/base/ui/util/types.js +0 -24
  215. package/src/components/base/ui/util/vdom.js +0 -5
  216. package/src/components/base/ui/util/vue-popper.js +0 -188
  217. package/src/components/normal/AggsItemH.vue +0 -145
  218. package/src/index.js +0 -10
  219. package/src/static/base-icons.ttf +0 -0
  220. package/src/static/base-icons.woff +0 -0
  221. package/src/static/label_bg.png +0 -0
  222. package/src/static/term-label-bg.png +0 -0
  223. package/src/style/app-article.scss +0 -698
  224. package/src/style/app-comment.scss +0 -259
  225. package/src/style/app-recommend.scss +0 -48
  226. package/src/style/app-richtext.scss +0 -176
  227. package/src/style/index.scss +0 -523
@@ -1,112 +0,0 @@
1
- <template>
2
- <li class="base-menu-item"
3
- role="menuitem"
4
- tabindex="-1"
5
- :style="[paddingStyle, itemStyle, { backgroundColor }]"
6
- :class="{
7
- 'is-active': active,
8
- 'is-disabled': disabled
9
- }"
10
- @click="handleClick"
11
- @mouseenter="onMouseEnter"
12
- @focus="onMouseEnter"
13
- @blur="onMouseLeave"
14
- @mouseleave="onMouseLeave"
15
- >
16
- <base-tooltip
17
- v-if="parentMenu.$options.componentName === 'BaseMenu' && rootMenu.collapse && $slots.title"
18
- effect="dark"
19
- placement="right">
20
- <div slot="content"><slot name="title"></slot></div>
21
- <div style="position: absolute;left: 0;top: 0;height: 100%;width: 100%;display: inline-block;box-sizing: border-box;padding: 0 20px;">
22
- <slot></slot>
23
- </div>
24
- </base-tooltip>
25
- <template v-else>
26
- <slot></slot>
27
- <slot name="title"></slot>
28
- </template>
29
- </li>
30
- </template>
31
- <script>
32
- import Menu from './menu-mixin';
33
- import BaseTooltip from '../tooltip/tooltip';
34
- import Emitter from '../mixin/emitter';
35
-
36
- export default {
37
- name: 'BaseMenuItem',
38
-
39
- componentName: 'BaseMenuItem',
40
-
41
- mixins: [Menu, Emitter],
42
-
43
- components: { BaseTooltip },
44
-
45
- props: {
46
- index: {
47
- default: null,
48
- validator: val => typeof val === 'string' || val === null
49
- },
50
- route: [String, Object],
51
- disabled: Boolean
52
- },
53
- computed: {
54
- active() {
55
- return this.index === this.rootMenu.activeIndex;
56
- },
57
- hoverBackground() {
58
- return this.rootMenu.hoverBackground;
59
- },
60
- backgroundColor() {
61
- return this.rootMenu.backgroundColor || '';
62
- },
63
- activeTextColor() {
64
- return this.rootMenu.activeTextColor || '';
65
- },
66
- textColor() {
67
- return this.rootMenu.textColor || '';
68
- },
69
- mode() {
70
- return this.rootMenu.mode;
71
- },
72
- itemStyle() {
73
- const style = {
74
- color: this.active ? this.activeTextColor : this.textColor
75
- };
76
- if (this.mode === 'horizontal' && !this.isNested) {
77
- style.borderBottomColor = this.active
78
- ? (this.rootMenu.activeTextColor ? this.activeTextColor : '')
79
- : 'transparent';
80
- }
81
- return style;
82
- },
83
- isNested() {
84
- return this.parentMenu !== this.rootMenu;
85
- }
86
- },
87
- methods: {
88
- onMouseEnter() {
89
- if (this.mode === 'horizontal' && !this.rootMenu.backgroundColor) return;
90
- this.$el.style.backgroundColor = this.hoverBackground;
91
- },
92
- onMouseLeave() {
93
- if (this.mode === 'horizontal' && !this.rootMenu.backgroundColor) return;
94
- this.$el.style.backgroundColor = this.backgroundColor;
95
- },
96
- handleClick() {
97
- if (!this.disabled) {
98
- this.dispatch('BaseMenu', 'item-click', this);
99
- this.$emit('click', this);
100
- }
101
- }
102
- },
103
- mounted() {
104
- this.parentMenu.addItem(this);
105
- this.rootMenu.addItem(this);
106
- },
107
- beforeDestroy() {
108
- this.parentMenu.removeItem(this);
109
- this.rootMenu.removeItem(this);
110
- }
111
- };
112
- </script>
@@ -1,44 +0,0 @@
1
- export default {
2
- inject: ['rootMenu'],
3
- computed: {
4
- indexPath() {
5
- const path = [this.index];
6
- let parent = this.$parent;
7
- while (parent.$options.componentName !== 'BaseMenu') {
8
- if (parent.index) {
9
- path.unshift(parent.index);
10
- }
11
- parent = parent.$parent;
12
- }
13
- return path;
14
- },
15
- parentMenu() {
16
- let parent = this.$parent;
17
- while (
18
- parent &&
19
- ['BaseMenu', 'BaseSubmenu'].indexOf(parent.$options.componentName) === -1
20
- ) {
21
- parent = parent.$parent;
22
- }
23
- return parent;
24
- },
25
- paddingStyle() {
26
- if (this.rootMenu.mode !== 'vertical') return {};
27
-
28
- let padding = 20;
29
- let parent = this.$parent;
30
-
31
- if (this.rootMenu.collapse) {
32
- padding = 20;
33
- } else {
34
- while (parent && parent.$options.componentName !== 'BaseMenu') {
35
- if (parent.$options.componentName === 'BaseSubmenu') {
36
- padding += 20;
37
- }
38
- parent = parent.$parent;
39
- }
40
- }
41
- return {paddingLeft: padding + 'px'};
42
- }
43
- }
44
- };
@@ -1,312 +0,0 @@
1
- <script lang="jsx" type="text/jsx">
2
- import emitter from '../mixin/emitter';
3
- import Migrating from '../mixin/migrating';
4
- import Menubar from '../util/menu/aria-menubar';
5
- import { addClass, removeClass, hasClass } from '../util/dom';
6
-
7
- export default {
8
- name: 'BaseMenu',
9
-
10
- render (h) {
11
- const component = (
12
- <ul
13
- role="menubar"
14
- key={ +this.collapse }
15
- style={{ backgroundColor: this.backgroundColor || '' }}
16
- class={{
17
- 'base-menu--horizontal': this.mode === 'horizontal',
18
- 'base-menu--collapse': this.collapse,
19
- "base-menu": true
20
- }}
21
- >
22
- { this.$slots.default }
23
- </ul>
24
- );
25
-
26
- if (this.collapseTransition) {
27
- return (
28
- <transition on-before-enter={($el) => this.beforeEnter($el)}
29
- on-enter={($el) => this.enter($el)}
30
- on-after-enter={($el) => this.afterEnter($el)}
31
- on-before-leave={($el) => this.beforeLeave($el)}
32
- on-leave={($el) => this.leave($el)}
33
- mode="out-in">
34
- { component }
35
- </transition>
36
- );
37
- } else {
38
- return component;
39
- }
40
- },
41
-
42
- componentName: 'BaseMenu',
43
-
44
- mixins: [emitter, Migrating],
45
-
46
- provide() {
47
- return {
48
- rootMenu: this
49
- };
50
- },
51
-
52
- components: {
53
- },
54
-
55
- props: {
56
- mode: {
57
- type: String,
58
- default: 'vertical'
59
- },
60
- defaultActive: {
61
- type: String,
62
- default: ''
63
- },
64
- defaultOpeneds: Array,
65
- uniqueOpened: Boolean,
66
- router: Boolean,
67
- menuTrigger: {
68
- type: String,
69
- default: 'hover'
70
- },
71
- collapse: Boolean,
72
- backgroundColor: String,
73
- textColor: String,
74
- activeTextColor: String,
75
- collapseTransition: {
76
- type: Boolean,
77
- default: true
78
- }
79
- },
80
- data() {
81
- return {
82
- activeIndex: this.defaultActive,
83
- openedMenus: (this.defaultOpeneds && !this.collapse) ? this.defaultOpeneds.slice(0) : [],
84
- items: {},
85
- submenus: {}
86
- };
87
- },
88
- computed: {
89
- hoverBackground() {
90
- return this.backgroundColor ? this.mixColor(this.backgroundColor, 0.2) : '';
91
- },
92
- isMenuPopup() {
93
- return this.mode === 'horizontal' || (this.mode === 'vertical' && this.collapse);
94
- }
95
- },
96
- watch: {
97
- defaultActive(value){
98
- if(!this.items[value]){
99
- this.activeIndex = null
100
- }
101
- this.updateActiveIndex(value)
102
- },
103
-
104
- defaultOpeneds(value) {
105
- if (!this.collapse) {
106
- this.openedMenus = value;
107
- }
108
- },
109
-
110
- collapse(value) {
111
- if (value) this.openedMenus = [];
112
- this.broadcast('BaseSubmenu', 'toggle-collapse', value);
113
- }
114
- },
115
- methods: {
116
- updateActiveIndex(val) {
117
- const item = this.items[val] || this.items[this.activeIndex] || this.items[this.defaultActive];
118
- if (item) {
119
- this.activeIndex = item.index;
120
- this.initOpenedMenu();
121
- } else {
122
- this.activeIndex = null;
123
- }
124
- },
125
-
126
- getMigratingConfig() {
127
- return {
128
- props: {
129
- 'theme': 'theme is removed.'
130
- }
131
- };
132
- },
133
- getColorChannels(color) {
134
- color = color.replace('#', '');
135
- if (/^[0-9a-fA-F]{3}$/.test(color)) {
136
- color = color.split('');
137
- for (let i = 2; i >= 0; i--) {
138
- color.splice(i, 0, color[i]);
139
- }
140
- color = color.join('');
141
- }
142
- if (/^[0-9a-fA-F]{6}$/.test(color)) {
143
- return {
144
- red: parseInt(color.slice(0, 2), 16),
145
- green: parseInt(color.slice(2, 4), 16),
146
- blue: parseInt(color.slice(4, 6), 16)
147
- };
148
- } else {
149
- return {
150
- red: 255,
151
- green: 255,
152
- blue: 255
153
- };
154
- }
155
- },
156
- mixColor(color, percent) {
157
- let { red, green, blue } = this.getColorChannels(color);
158
- if (percent > 0) { // shade given color
159
- red *= 1 - percent;
160
- green *= 1 - percent;
161
- blue *= 1 - percent;
162
- } else { // tint given color
163
- red += (255 - red) * percent;
164
- green += (255 - green) * percent;
165
- blue += (255 - blue) * percent;
166
- }
167
- return `rgb(${ Math.round(red) }, ${ Math.round(green) }, ${ Math.round(blue) })`;
168
- },
169
- addItem(item) {
170
- this.$set(this.items, item.index, item);
171
- },
172
- removeItem(item) {
173
- delete this.items[item.index];
174
- },
175
- addSubmenu(item) {
176
- this.$set(this.submenus, item.index, item);
177
- },
178
- removeSubmenu(item) {
179
- delete this.submenus[item.index];
180
- },
181
- openMenu(index, indexPath) {
182
- let openedMenus = this.openedMenus;
183
- if (openedMenus.indexOf(index) !== -1) return;
184
- // 将不在该菜单路径下的其余菜单收起
185
- // collapse all menu that are not under current menu item
186
- if (this.uniqueOpened) {
187
- this.openedMenus = openedMenus.filter(index => {
188
- return indexPath.indexOf(index) !== -1;
189
- });
190
- }
191
- this.openedMenus.push(index);
192
- },
193
- closeMenu(index) {
194
- const i = this.openedMenus.indexOf(index);
195
- if (i !== -1) {
196
- this.openedMenus.splice(i, 1);
197
- }
198
- },
199
- handleSubmenuClick(submenu) {
200
- const { index, indexPath } = submenu;
201
- let isOpened = this.openedMenus.indexOf(index) !== -1;
202
-
203
- if (isOpened) {
204
- this.closeMenu(index);
205
- this.$emit('close', index, indexPath);
206
- } else {
207
- this.openMenu(index, indexPath);
208
- this.$emit('open', index, indexPath);
209
- }
210
- },
211
- handleItemClick(item) {
212
- const { index, indexPath } = item;
213
- const oldActiveIndex = this.activeIndex;
214
- const hasIndex = item.index !== null;
215
-
216
- if (hasIndex) {
217
- this.activeIndex = item.index;
218
- }
219
-
220
- this.$emit('select', index, indexPath, item);
221
-
222
- if (this.mode === 'horizontal' || this.collapse) {
223
- this.openedMenus = [];
224
- }
225
-
226
- if (this.router && hasIndex) {
227
- this.routeToItem(item, (error) => {
228
- this.activeIndex = oldActiveIndex;
229
- if (error) {
230
- // vue-router 3.1.0+ push/replace cause NavigationDuplicated error
231
- // https://github.com/ElemeFE/element/issues/17044
232
- if (error.name === 'NavigationDuplicated') return
233
- console.error(error)
234
- }
235
- });
236
- }
237
- },
238
- // 初始化展开菜单
239
- // initialize opened menu
240
- initOpenedMenu() {
241
- const index = this.activeIndex;
242
- const activeItem = this.items[index];
243
- if (!activeItem || this.mode === 'horizontal' || this.collapse) return;
244
-
245
- let indexPath = activeItem.indexPath;
246
-
247
- // 展开该菜单项的路径上所有子菜单
248
- // expand all submenus of the menu item
249
- indexPath.forEach(index => {
250
- let submenu = this.submenus[index];
251
- submenu && this.openMenu(index, submenu.indexPath);
252
- });
253
- },
254
- routeToItem(item, onError) {
255
- let route = item.route || item.index;
256
- try {
257
- this.$router.push(route, () => {}, onError);
258
- } catch (e) {
259
- console.error(e);
260
- }
261
- },
262
- open(index) {
263
- const { indexPath } = this.submenus[index.toString()];
264
- indexPath.forEach(i => this.openMenu(i, indexPath));
265
- },
266
- close(index) {
267
- this.closeMenu(index);
268
- },
269
- beforeEnter(el) {
270
- el.style.opacity = 0.2;
271
- },
272
- enter(el) {
273
- addClass(el, 'base-opacity-transition');
274
- el.style.opacity = 1;
275
- },
276
- afterEnter(el) {
277
- removeClass(el, 'base-opacity-transition');
278
- el.style.opacity = '';
279
- },
280
- beforeLeave(el) {
281
- if (!el.dataset) el.dataset = {};
282
- if (hasClass(el, 'base-menu--collapse')) {
283
- removeClass(el, 'base-menu--collapse');
284
- el.dataset.oldOverflow = el.style.overflow;
285
- el.dataset.scrollWidth = el.clientWidth;
286
- addClass(el, 'base-menu--collapse');
287
- } else {
288
- addClass(el, 'base-menu--collapse');
289
- el.dataset.oldOverflow = el.style.overflow;
290
- el.dataset.scrollWidth = el.clientWidth;
291
- removeClass(el, 'base-menu--collapse');
292
- }
293
- el.style.width = el.scrollWidth + 'px';
294
- el.style.overflow = 'hidden';
295
- },
296
-
297
- leave(el) {
298
- addClass(el, 'horizontal-collapse-transition');
299
- el.style.width = el.dataset.scrollWidth + 'px';
300
- }
301
- },
302
- mounted() {
303
- this.initOpenedMenu();
304
- this.$on('item-click', this.handleItemClick);
305
- this.$on('submenu-click', this.handleSubmenuClick);
306
- if (this.mode === 'horizontal') {
307
- new Menubar(this.$el); // eslint-disable-line
308
- }
309
- this.$watch('items', this.updateActiveIndex);
310
- }
311
- };
312
- </script>