@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,134 +0,0 @@
1
- <template>
2
- <label
3
- class="base-radio"
4
- :class="[
5
- border && radioSize ? 'base-radio--' + radioSize : '',
6
- { 'is-disabled': isDisabled },
7
- { 'is-focus': focus },
8
- { 'is-bordered': border },
9
- { 'is-checked': model === label }
10
- ]"
11
- role="radio"
12
- :aria-checked="model === label"
13
- :aria-disabled="isDisabled"
14
- :tabindex="tabIndex"
15
- @keydown.space.stop.prevent="model = isDisabled ? model : label"
16
- >
17
- <span class="base-radio__input"
18
- :class="{
19
- 'is-disabled': isDisabled,
20
- 'is-checked': model === label,
21
- 'is-invisible': border
22
- }"
23
- >
24
- <span class="base-radio__inner"></span>
25
- <input
26
- ref="radio"
27
- class="base-radio__original"
28
- :value="label"
29
- type="radio"
30
- aria-hidden="true"
31
- v-model="model"
32
- @focus="focus = true"
33
- @blur="focus = false"
34
- @change="handleChange"
35
- :name="name"
36
- :disabled="isDisabled"
37
- tabindex="-1"
38
- >
39
- </span>
40
- <span class="base-radio__label" @keydown.stop>
41
- <slot></slot>
42
- <template v-if="!$slots.default">{{label}}</template>
43
- </span>
44
- </label>
45
- </template>
46
- <script>
47
- import Emitter from '../mixin/emitter'
48
- export default {
49
- name: 'BaseRadio',
50
-
51
- mixins: [Emitter],
52
-
53
- inject: {
54
- baseForm: {
55
- default: ''
56
- },
57
-
58
- baseFormItem: {
59
- default: ''
60
- }
61
- },
62
-
63
- componentName: 'BaseRadio',
64
-
65
- props: {
66
- value: {},
67
- label: {},
68
- disabled: Boolean,
69
- name: String,
70
- border: Boolean,
71
- size: String
72
- },
73
-
74
- data() {
75
- return {
76
- focus: false
77
- }
78
- },
79
-
80
- computed: {
81
- isGroup() {
82
- let parent = this.$parent
83
- while (parent) {
84
- if (parent.$options.componentName !== 'BaseRadioGroup') {
85
- parent = parent.$parent
86
- } else {
87
- this._radioGroup = parent
88
- return true
89
- }
90
- }
91
- return false
92
- },
93
- model: {
94
- get() {
95
- return this.isGroup ? this._radioGroup.value : this.value
96
- },
97
- set(val) {
98
- if (this.isGroup) {
99
- this.dispatch('BaseRadioGroup', 'input', [val])
100
- } else {
101
- this.$emit('input', val)
102
- }
103
- this.$refs.radio && (this.$refs.radio.checked = this.model === this.label)
104
- }
105
- },
106
- _baseFormItemSize() {
107
- return (this.elFormItem || {}).elFormItemSize
108
- },
109
- radioSize() {
110
- const temRadioSize = this.size || this._baseFormItemSize || (this.$ELEMENT || {}).size
111
- return this.isGroup
112
- ? this._radioGroup.radioGroupSize || temRadioSize
113
- : temRadioSize
114
- },
115
- isDisabled() {
116
- return this.isGroup
117
- ? this._radioGroup.disabled || this.disabled || (this.baseForm || {}).disabled
118
- : this.disabled || (this.baseForm || {}).disabled
119
- },
120
- tabIndex() {
121
- return (this.isDisabled || (this.isGroup && this.model !== this.label)) ? -1 : 0
122
- }
123
- },
124
-
125
- methods: {
126
- handleChange () {
127
- this.$nextTick(() => {
128
- this.$emit('change', this.model)
129
- this.isGroup && this.dispatch('BaseRadioGroup', 'handleChange', this.model)
130
- })
131
- }
132
- }
133
- }
134
- </script>
@@ -1,47 +0,0 @@
1
- export default {
2
- name: 'BaseRow',
3
-
4
- componentName: 'BaseRow',
5
-
6
- props: {
7
- tag: {
8
- type: String,
9
- default: 'div'
10
- },
11
- gutter: Number,
12
- type: String,
13
- justify: {
14
- type: String,
15
- default: 'start'
16
- },
17
- align: {
18
- type: String,
19
- default: 'top'
20
- }
21
- },
22
-
23
- computed: {
24
- style() {
25
- const ret = {};
26
-
27
- if (this.gutter) {
28
- ret.marginLeft = `-${this.gutter / 2}px`;
29
- ret.marginRight = ret.marginLeft;
30
- }
31
-
32
- return ret;
33
- }
34
- },
35
-
36
- render(h) {
37
- return h(this.tag, {
38
- class: [
39
- 'base-row',
40
- this.justify !== 'start' ? `is-justify-${this.justify}` : '',
41
- this.align !== 'top' ? `is-align-${this.align}` : '',
42
- { 'base-row--flex': this.type === 'flex' }
43
- ],
44
- style: this.style
45
- }, this.$slots.default);
46
- }
47
- };
@@ -1,91 +0,0 @@
1
- import { on, off } from '../util/dom'
2
- import { renderThumbStyle, BAR_MAP } from './util'
3
-
4
- export default {
5
- name: 'Bar',
6
-
7
- props: {
8
- vertical: Boolean,
9
- size: String,
10
- move: Number
11
- },
12
-
13
- computed: {
14
- bar() {
15
- return BAR_MAP[this.vertical ? 'vertical' : 'horizontal']
16
- },
17
-
18
- wrap() {
19
- return this.$parent.wrap
20
- }
21
- },
22
-
23
- render(h) {
24
- const { size, move, bar } = this
25
-
26
- return (
27
- <div
28
- class={ ['base-scrollbar__bar', 'is-' + bar.key] }
29
- onMousedown={ this.clickTrackHandler } >
30
- <div
31
- ref="thumb"
32
- class={['base-scrollbar__thumb',{'is-grab':this.cursorDown}]}
33
- onMousedown={ this.clickThumbHandler }
34
- style={ renderThumbStyle({ size, move, bar }) }>
35
- </div>
36
- </div>
37
- )
38
- },
39
-
40
- methods: {
41
- clickThumbHandler(e) {
42
- // prevent click event of right button
43
- if (e.ctrlKey || e.button === 2) {
44
- return
45
- }
46
- this.startDrag(e)
47
- this[this.bar.axis] = (e.currentTarget[this.bar.offset] - (e[this.bar.client] - e.currentTarget.getBoundingClientRect()[this.bar.direction]))
48
- },
49
-
50
- clickTrackHandler(e) {
51
- const offset = Math.abs(e.target.getBoundingClientRect()[this.bar.direction] - e[this.bar.client])
52
- const thumbHalf = (this.$refs.thumb[this.bar.offset] / 2)
53
- const thumbPositionPercentage = ((offset - thumbHalf) * 100 / this.$el[this.bar.offset])
54
-
55
- this.wrap[this.bar.scroll] = (thumbPositionPercentage * this.wrap[this.bar.scrollSize] / 100)
56
- },
57
-
58
- startDrag(e) {
59
- e.stopImmediatePropagation()
60
- this.cursorDown = true
61
-
62
- on(document, 'mousemove', this.mouseMoveDocumentHandler)
63
- on(document, 'mouseup', this.mouseUpDocumentHandler)
64
- document.onselectstart = () => false
65
- },
66
-
67
- mouseMoveDocumentHandler(e) {
68
- if (this.cursorDown === false) return
69
- const prevPage = this[this.bar.axis]
70
-
71
- if (!prevPage) return
72
-
73
- const offset = ((this.$el.getBoundingClientRect()[this.bar.direction] - e[this.bar.client]) * -1)
74
- const thumbClickPosition = (this.$refs.thumb[this.bar.offset] - prevPage)
75
- const thumbPositionPercentage = ((offset - thumbClickPosition) * 100 / this.$el[this.bar.offset])
76
-
77
- this.wrap[this.bar.scroll] = (thumbPositionPercentage * this.wrap[this.bar.scrollSize] / 100)
78
- },
79
-
80
- mouseUpDocumentHandler(e) {
81
- this.cursorDown = false
82
- this[this.bar.axis] = 0
83
- off(document, 'mousemove', this.mouseMoveDocumentHandler)
84
- document.onselectstart = null
85
- }
86
- },
87
-
88
- destroyed() {
89
- off(document, 'mouseup', this.mouseUpDocumentHandler)
90
- }
91
- }
@@ -1,203 +0,0 @@
1
- import { addResizeListener, removeResizeListener } from '../util/resize-events'
2
- import scrollbarWidth from '../util/scrollbar-width'
3
- import { toObject } from '../util'
4
- import Bar from './bar'
5
- // import { mapActions } from 'vuex'
6
- // import { SET_SCROLL_MOVE_Y } from '../../../../store/mutation-types'
7
-
8
- export default {
9
- name: 'BaseScrollbar',
10
-
11
- components: { Bar },
12
-
13
- props: {
14
- native: Boolean,
15
- wrapStyle: {},
16
- wrapClass: {},
17
- viewClass: {},
18
- viewStyle: {},
19
- noresize: Boolean,
20
- tag: {
21
- type: String,
22
- default: 'div'
23
- },
24
- duration: {
25
- type: Number,
26
- default: 1000
27
- },
28
- enableCalc: {
29
- type: Boolean,
30
- default: true
31
- },
32
- alone: {
33
- type: Boolean,
34
- default: false
35
- },
36
- offsetBottom: {
37
- type: Number,
38
- default: 0
39
- }
40
- },
41
-
42
- data() {
43
- return {
44
- sizeWidth: '0',
45
- sizeHeight: '0',
46
- moveX: 0,
47
- moveY: 0
48
- }
49
- },
50
-
51
- computed: {
52
- wrap() {
53
- return this.$refs.wrap
54
- }
55
- },
56
-
57
- render(h) {
58
- let gutter = scrollbarWidth()
59
- let style = this.wrapStyle
60
-
61
- if (gutter) {
62
- const gutterWith = `-${gutter}px`
63
- const gutterStyle = `margin-bottom: 0; margin-right: ${gutterWith};`
64
-
65
- if (Array.isArray(this.wrapStyle)) {
66
- style = toObject(this.wrapStyle)
67
- style.marginRight = style.marginBottom = gutterWith
68
- } else if (typeof this.wrapStyle === 'string') {
69
- style += gutterStyle
70
- } else {
71
- style = gutterStyle
72
- }
73
- }
74
- const view = h(this.tag, {
75
- class: ['base-scrollbar__view', this.viewClass],
76
- style: this.viewStyle,
77
- ref: 'resize'
78
- }, this.$slots.default)
79
- const wrap = (
80
- <div
81
- ref="wrap"
82
- style={ style }
83
- onScroll={ this.handleScroll }
84
- class={ [this.wrapClass, 'base-scrollbar__wrap', gutter ? '' : 'base-scrollbar__wrap--hidden-default'] }>
85
- { [view] }
86
- </div>
87
- )
88
- let nodes
89
-
90
- if (!this.native) {
91
- nodes = ([
92
- wrap,
93
- <Bar
94
- move={ this.moveX }
95
- size={ this.sizeWidth }></Bar>,
96
- <Bar
97
- vertical
98
- move={ this.moveY }
99
- size={ this.sizeHeight }></Bar>
100
- ])
101
- } else {
102
- nodes = ([
103
- <div
104
- ref="wrap"
105
- class={ [this.wrapClass, 'base-scrollbar__wrap'] }
106
- style={ style }>
107
- { [view] }
108
- </div>
109
- ])
110
- }
111
- return h('div', { class: 'base-scrollbar' }, nodes)
112
- },
113
-
114
- methods: {
115
- // ...mapActions([
116
- // SET_SCROLL_MOVE_Y
117
- // ]),
118
-
119
- handleScroll () {
120
- const wrap = this.wrap
121
-
122
- this.moveY = ((wrap.scrollTop * 100) / wrap.clientHeight)
123
- this.moveX = ((wrap.scrollLeft * 100) / wrap.clientWidth)
124
-
125
- if (this.enableCalc) {
126
- let isMovedToBottom = wrap.scrollTop + wrap.clientHeight >= wrap.scrollHeight - 10 - this.offsetBottom
127
- this.$emit('on-scroll', wrap.scrollTop, isMovedToBottom)
128
- if (!this.alone) {
129
- // this.SET_SCROLL_MOVE_Y(wrap.scrollTop)
130
- }
131
- }
132
-
133
- },
134
-
135
- easing(t, b, c, d) {
136
- return c * (-Math.pow(2, -10 * t / d) + 1) * 1024 / 1023 + b
137
- },
138
- scrollTo(offsetTop, smooth) {
139
- if (smooth) {
140
- let startTop = this.wrap.scrollTop
141
- let startTimestamp
142
- let scroll = (timestamp) => {
143
- if (!startTimestamp) startTimestamp = timestamp
144
- let progress = timestamp - startTimestamp
145
- let step
146
- if (offsetTop > startTop) {
147
- step = this.easing(progress, startTop, offsetTop, this.duration)
148
- this.wrap.scrollTop = step >= offsetTop ? offsetTop : step.toFixed(0)
149
- } else {
150
- step = this.easing(progress, offsetTop, startTop, this.duration)
151
- this.wrap.scrollTop = (startTop - step).toFixed(0) <= offsetTop ? offsetTop : (startTop - step).toFixed(0)
152
- }
153
- if (progress < this.duration) {
154
- timer = requestAnimationFrame(scroll)
155
- } else {
156
- cancelAnimationFrame(timer)
157
- }
158
- }
159
- let timer
160
- if (timer) {
161
- cancelAnimationFrame(timer)
162
- }
163
- timer = requestAnimationFrame(scroll)
164
- } else {
165
- this.wrap.scrollTop = offsetTop
166
- }
167
- },
168
- scrollTop() {
169
- this.scrollTo(0, true)
170
- if (this.enableCalc && !this.alone) {
171
- // this.SET_SCROLL_MOVE_Y(0)
172
- }
173
- },
174
- scrollBottom() {
175
- this.scrollTo(this.wrap.scrollHeight, true)
176
- if (this.enableCalc && !this.alone) {
177
- // this.SET_SCROLL_MOVE_Y(this.wrap.scrollHeight)
178
- }
179
- },
180
- update() {
181
- let heightPercentage, widthPercentage
182
- const wrap = this.wrap
183
- if (!wrap) return
184
-
185
- heightPercentage = (wrap.clientHeight * 100 / wrap.scrollHeight)
186
- widthPercentage = (wrap.clientWidth * 100 / wrap.scrollWidth)
187
-
188
- this.sizeHeight = (heightPercentage < 100) ? (heightPercentage + '%') : ''
189
- this.sizeWidth = (widthPercentage < 100) ? (widthPercentage + '%') : ''
190
- }
191
- },
192
-
193
- mounted() {
194
- if (this.native) return
195
- this.$nextTick(this.update)
196
- !this.noresize && addResizeListener(this.$refs.resize, this.update)
197
- },
198
-
199
- beforeDestroy() {
200
- if (this.native) return
201
- !this.noresize && removeResizeListener(this.$refs.resize, this.update)
202
- }
203
- }
@@ -1,32 +0,0 @@
1
- export const BAR_MAP = {
2
- vertical: {
3
- offset: 'offsetHeight',
4
- scroll: 'scrollTop',
5
- scrollSize: 'scrollHeight',
6
- size: 'height',
7
- key: 'vertical',
8
- axis: 'Y',
9
- client: 'clientY',
10
- direction: 'top'
11
- },
12
- horizontal: {
13
- offset: 'offsetWidth',
14
- scroll: 'scrollLeft',
15
- scrollSize: 'scrollWidth',
16
- size: 'width',
17
- key: 'horizontal',
18
- axis: 'X',
19
- client: 'clientX',
20
- direction: 'left'
21
- }
22
- }
23
-
24
- export function renderThumbStyle({ move, size, bar }) {
25
- const style = {}
26
- const translate = `translate${bar.axis}(${ move }%)`
27
- style[bar.size] = size
28
- style.transform = translate
29
- style.msTransform = translate
30
- style.webkitTransform = translate
31
- return style
32
- }
@@ -1,168 +0,0 @@
1
- <template>
2
- <li
3
- v-ripple
4
- @mouseenter="hoverItem"
5
- @click.stop="selectOptionClick"
6
- class="base-select-dropdown__item"
7
- v-show="visible"
8
- :class="{
9
- 'selected': itemSelected,
10
- 'is-disabled': disabled || groupDisabled || limitReached,
11
- 'hover': hover
12
- }">
13
- <slot>
14
- <span>{{ currentLabel }}</span>
15
- </slot>
16
- </li>
17
- </template>
18
-
19
- <script type="text/babel">
20
- import Ripple from '../directive/ripple'
21
- import Emitter from '../mixin/emitter'
22
- import { getValueByPath, escapeRegexpString } from '../util/index'
23
- export default {
24
- mixins: [Emitter],
25
- name: 'BaseOption',
26
- componentName: 'BaseOption',
27
- directives: {
28
- Ripple
29
- },
30
- inject: ['select'],
31
- props: {
32
- value: {
33
- required: true
34
- },
35
- label: [String, Number],
36
- created: Boolean,
37
- disabled: {
38
- type: Boolean,
39
- default: false
40
- }
41
- },
42
-
43
- data() {
44
- return {
45
- index: -1,
46
- groupDisabled: false,
47
- visible: true,
48
- hitState: false,
49
- hover: false
50
- }
51
- },
52
-
53
- computed: {
54
- isObject() {
55
- return Object.prototype.toString.call(this.value).toLowerCase() === '[object object]'
56
- },
57
-
58
- currentLabel() {
59
- return this.label || (this.isObject ? '' : this.value)
60
- },
61
-
62
- currentValue() {
63
- return this.value || this.label || ''
64
- },
65
-
66
- itemSelected() {
67
- if (!this.select.multiple) {
68
- return this.isEqual(this.value, this.select.value)
69
- } else {
70
- return this.contains(this.select.value, this.value)
71
- }
72
- },
73
-
74
- limitReached() {
75
- if (this.select.multiple) {
76
- return !this.itemSelected &&
77
- (this.select.value || []).length >= this.select.multipleLimit &&
78
- this.select.multipleLimit > 0
79
- } else {
80
- return false
81
- }
82
- }
83
- },
84
-
85
- watch: {
86
- currentLabel() {
87
- if (!this.created && !this.select.remote) this.dispatch('BaseSelect', 'setSelected')
88
- },
89
- value(val, oldVal) {
90
- const { remote, valueKey } = this.select
91
- if (!this.created && !remote) {
92
- if (valueKey && typeof val === 'object' && typeof oldVal === 'object' && val[valueKey] === oldVal[valueKey]) {
93
- return
94
- }
95
- this.dispatch('BaseSelect', 'setSelected')
96
- }
97
- }
98
- },
99
-
100
- methods: {
101
- isEqual(a, b) {
102
- if (!this.isObject) {
103
- return a === b
104
- } else {
105
- const valueKey = this.select.valueKey
106
- return getValueByPath(a, valueKey) === getValueByPath(b, valueKey)
107
- }
108
- },
109
-
110
- contains(arr = [], target) {
111
- if (!this.isObject) {
112
- return arr && arr.indexOf(target) > -1
113
- } else {
114
- const valueKey = this.select.valueKey
115
- return arr && arr.some(item => {
116
- return getValueByPath(item, valueKey) === getValueByPath(target, valueKey)
117
- })
118
- }
119
- },
120
-
121
- handleGroupDisabled(val) {
122
- this.groupDisabled = val
123
- },
124
-
125
- hoverItem() {
126
- if (!this.disabled && !this.groupDisabled) {
127
- this.select.hoverIndex = this.select.options.indexOf(this)
128
- }
129
- },
130
-
131
- selectOptionClick() {
132
- if (this.disabled !== true && this.groupDisabled !== true) {
133
- this.dispatch('BaseSelect', 'handleOptionClick', [this, true])
134
- }
135
- },
136
-
137
- queryChange(query) {
138
- this.visible = new RegExp(escapeRegexpString(query), 'i').test(this.currentLabel) || this.created
139
- if (!this.visible) {
140
- this.select.filteredOptionsCount--
141
- }
142
- }
143
- },
144
-
145
- created() {
146
- this.select.options.push(this)
147
- this.select.cachedOptions.push(this)
148
- this.select.optionsCount++
149
- this.select.filteredOptionsCount++
150
-
151
- this.$on('queryChange', this.queryChange)
152
- this.$on('handleGroupDisabled', this.handleGroupDisabled)
153
- },
154
-
155
- beforeDestroy() {
156
- const { selected, multiple } = this.select
157
- let selectedOptions = multiple ? selected : [selected]
158
- let index = this.select.cachedOptions.indexOf(this)
159
- let selectedIndex = selectedOptions.indexOf(this)
160
-
161
- // if option is not selected, remove it from cache
162
- if (index > -1 && selectedIndex < 0) {
163
- this.select.cachedOptions.splice(index, 1)
164
- }
165
- this.select.onOptionDestroy(this.select.options.indexOf(this))
166
- }
167
- }
168
- </script>