evui 2.1.0 → 2.1.3

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 (189) hide show
  1. package/dist/{adac9fa4f723f9d2cb5b6640517114a9.png → 0b8d1200e71cae8d747dce4e69c4efb6.png} +0 -0
  2. package/dist/1.css +4 -0
  3. package/dist/1.css.map +1 -0
  4. package/dist/1.evui.min.js +2 -0
  5. package/dist/1.evui.min.js.map +1 -0
  6. package/dist/1ba679c05036b34bf359aa2e6c450faa.ttf +0 -0
  7. package/dist/2.css +4 -0
  8. package/dist/2.css.map +1 -0
  9. package/dist/2.evui.min.js +2 -0
  10. package/dist/2.evui.min.js.map +1 -0
  11. package/dist/{e8c322de9658cbeb8a774b6624167c2c.woff2 → 278156e41e0ad908cf7f841b17130502.woff2} +0 -0
  12. package/dist/3.evui.min.js +2 -0
  13. package/dist/3.evui.min.js.map +1 -0
  14. package/dist/32be89b11725274cd3e801192ba88361.ttf +0 -0
  15. package/dist/{0ab54153eeeca0ce03978cc463b257f7.woff2 → 38c6d8bab26db77d8c806813e1497763.woff2} +0 -0
  16. package/dist/4.evui.min.js +2 -0
  17. package/dist/4.evui.min.js.map +1 -0
  18. package/dist/{faff92145777a3cbaf8e7367b4807987.woff → 425399f81e4ce7cbd967685402ba0260.woff} +0 -0
  19. package/dist/4730076470a665bbc7b783c56d29a72e.svg +261 -0
  20. package/dist/52e9a7f6ff3af5ad261e5292d07ebdca.eot +0 -0
  21. package/dist/{ad97afd3337e8cda302d10ff5a4026b8.ttf → 5367103510b27b78482794590e1ce3b0.ttf} +0 -0
  22. package/dist/{65363c4d55617bbeb57d8ce6dcd46099.svg → 57e963e3d6dd0a9cf05150b40eebf69b.svg} +0 -0
  23. package/dist/{c5ebe0b32dc1b5cc449a76c4204d13bb.ttf → 65a2fb6d9aaa164b41a039302093995b.ttf} +0 -0
  24. package/dist/{cd6c777f1945164224dee082abaea03a.woff2 → 687a4990ea22bb1a49d469a5d9319790.woff2} +0 -0
  25. package/dist/{7583da5c07275cd5eb364507616f998f.ttf → 6c1d906bf5ba48676f65b2d65e935e1a.ttf} +0 -0
  26. package/dist/6dafca5a4f1e31f2bdf11939b24ff422.ttf +0 -0
  27. package/dist/{701ae6abd4719e9c2ada3535a497b341.eot → 752905fa5edf21fc52a10a0c1ca9c7a4.eot} +0 -0
  28. package/dist/76c05d80dda67cdc5d03f345b7bd063f.ttf +0 -0
  29. package/dist/{b551b554a67e86a840bc80cbb8066c30.svg → 7d62eb50e7bb05eedb2a4656f7fe8f3b.svg} +0 -0
  30. package/dist/{8e3c7f5520f5ae906c6cf6d7f3ddcd19.eot → a01e3f2d6c83dc3aee175e2482b3f777.eot} +0 -0
  31. package/dist/{448f2aaa315fa9dce7b2cf6ce31caed6.svg → b30fd8419d7e6d5918856c7531d33482.svg} +0 -0
  32. package/dist/c57dd55fa982e8940f69ca1d69a8a999.woff +0 -0
  33. package/dist/{b87b9ba532ace76ae9f6edfe9f72ded2.ttf → c656b8caa454ed19b9a2ef7f4f5b8fea.ttf} +0 -0
  34. package/dist/{a046592bac8f2fd96e994733faf3858c.woff → cac87dc00c87a5d74711d0276713808a.woff} +0 -0
  35. package/dist/{13db00b7a34fee4d819ab7f9838cc428.eot → d68fa3e67dbb653a13cec44b1bcabcfe.eot} +0 -0
  36. package/dist/{ef60a4f6c25ef7f39f2d25a748dbecfe.woff → ddae9b1ba9b0b42f58809904b0b21349.woff} +0 -0
  37. package/dist/evui.min.js +6 -86054
  38. package/dist/evui.min.js.gz +0 -0
  39. package/dist/evui.min.js.map +1 -1
  40. package/dist/main.css +43 -5541
  41. package/dist/main.css.gz +0 -0
  42. package/dist/main.css.map +1 -1
  43. package/package.json +56 -76
  44. package/src/common/emitter.js +20 -0
  45. package/src/common/utils.debounce.js +223 -0
  46. package/src/common/utils.js +51 -17
  47. package/src/common/utils.throttle.js +83 -0
  48. package/src/common/utils.tree.js +18 -0
  49. package/src/components/button/button.vue +317 -241
  50. package/src/components/chart/chart.core.js +378 -85
  51. package/src/components/chart/chart.vue +133 -115
  52. package/src/components/chart/element/element.bar.js +219 -25
  53. package/src/components/chart/element/element.bar.time.js +115 -0
  54. package/src/components/chart/element/element.line.js +172 -21
  55. package/src/components/chart/element/element.pie.js +86 -0
  56. package/src/components/chart/element/element.scatter.js +9 -2
  57. package/src/components/chart/element/element.tip.js +356 -0
  58. package/src/components/chart/helpers/helpers.canvas.js +94 -0
  59. package/src/components/chart/helpers/helpers.constant.js +25 -6
  60. package/src/components/chart/helpers/helpers.util.js +83 -38
  61. package/src/components/chart/index.js +0 -1
  62. package/src/components/chart/model/model.series.js +43 -14
  63. package/src/components/chart/model/model.store.js +440 -46
  64. package/src/components/chart/plugins/plugins.interaction.js +324 -0
  65. package/src/components/chart/plugins/plugins.legend.js +233 -91
  66. package/src/components/chart/plugins/plugins.pie.js +179 -0
  67. package/src/components/chart/plugins/plugins.title.js +25 -2
  68. package/src/components/chart/plugins/plugins.tooltip.js +384 -0
  69. package/src/components/chart/scale/scale.js +91 -29
  70. package/src/components/chart/scale/scale.linear.js +12 -0
  71. package/src/components/chart/scale/scale.logarithmic.js +25 -0
  72. package/src/components/chart/scale/scale.step.js +89 -52
  73. package/src/components/chart/scale/scale.time.category.js +204 -0
  74. package/src/components/chart/scale/scale.time.js +19 -1
  75. package/src/components/checkbox/checkbox-group.vue +15 -11
  76. package/src/components/checkbox/checkbox.vue +210 -138
  77. package/src/components/codeview/code.vue +42 -29
  78. package/src/components/contextmenu/contextmenu.child.vue +79 -0
  79. package/src/components/contextmenu/contextmenu.vue +276 -0
  80. package/src/components/contextmenu/contextmenu.wrap.vue +189 -0
  81. package/src/components/contextmenu/index.js +3 -0
  82. package/src/components/datepicker/calendar.core.js +588 -492
  83. package/src/components/datepicker/calendar.vue +0 -3
  84. package/src/components/datepicker/datepicker.vue +43 -15
  85. package/src/components/datepicker/index.js +5 -1
  86. package/src/components/grid/grid.filter.vue +290 -0
  87. package/src/components/grid/grid.filter.window.vue +411 -0
  88. package/src/components/grid/grid.render.vue +45 -0
  89. package/src/components/grid/grid.vue +1338 -0
  90. package/src/components/icon/icon.vue +23 -7
  91. package/src/components/input/input.number.vue +309 -277
  92. package/src/components/label/label.vue +2 -2
  93. package/src/components/loadingmask/loadingmask.vue +6 -13
  94. package/src/components/loginfield/loginfield.vue +46 -37
  95. package/src/components/markdown/index.js +3 -0
  96. package/src/components/markdown/markdown.vue +1001 -0
  97. package/src/components/menu/index.js +1 -3
  98. package/src/components/menu/menu.nav.item.vue +115 -0
  99. package/src/components/menu/menu.nav.sub.vue +42 -0
  100. package/src/components/menu/menu.nav.vue +71 -98
  101. package/src/components/message/index.js +3 -0
  102. package/src/components/message/message.js +63 -0
  103. package/src/components/message/message.vue +191 -0
  104. package/src/components/message-box/index.js +7 -0
  105. package/src/components/message-box/message-box.js +32 -0
  106. package/src/components/message-box/message-box.vue +291 -0
  107. package/src/components/notification/index.js +3 -0
  108. package/src/components/notification/notification.js +75 -0
  109. package/src/components/notification/notification.vue +242 -0
  110. package/src/components/radio/radio-group.vue +6 -2
  111. package/src/components/radio/radio.vue +156 -76
  112. package/src/components/selectbox/dropdown.vue +86 -40
  113. package/src/components/selectbox/listbox.vue +47 -18
  114. package/src/components/selectbox/option.vue +1 -1
  115. package/src/components/selectbox/selectbox.vue +304 -316
  116. package/src/components/slider/slider-tooltip.vue +7 -7
  117. package/src/components/slider/slider.vue +20 -25
  118. package/src/components/splitter/splitter.vue +104 -94
  119. package/src/components/table/table.black.css +1 -1
  120. package/src/components/table/table.filter.lite.vue +7 -7
  121. package/src/components/table/table.filter.vue +1 -1
  122. package/src/components/table/table.grey.css +5 -6
  123. package/src/components/table/table.navy.css +1 -1
  124. package/src/components/table/table.vue +55 -48
  125. package/src/components/tabs/tab-panel.vue +19 -5
  126. package/src/components/tabs/tabs.vue +182 -87
  127. package/src/components/textfield/textfield.vue +110 -87
  128. package/src/components/timepicker/index.js +2 -2
  129. package/src/components/timepicker/spinner.vue +15 -17
  130. package/src/components/timepicker/timepicker.vue +98 -53
  131. package/src/components/toggle/toggle.vue +148 -109
  132. package/src/components/tree/index.js +2 -6
  133. package/src/components/tree/render.js +17 -0
  134. package/src/components/tree/tree-node.vue +214 -0
  135. package/src/components/tree/tree.vue +296 -0
  136. package/src/components/tree-table/index.js +7 -0
  137. package/src/components/{tree → tree-table}/tree.table.black.css +0 -0
  138. package/src/components/{tree → tree-table}/tree.table.grey.css +0 -0
  139. package/src/components/{tree → tree-table}/tree.table.vue +36 -41
  140. package/src/components/{tree → tree-table}/tree.util.js +0 -0
  141. package/src/components/window/window.vue +238 -191
  142. package/src/index.js +28 -12
  143. package/src/styles/base/base.scss +50 -0
  144. package/src/styles/base/index.scss +1 -0
  145. package/src/styles/default.scss +5 -0
  146. package/src/styles/{codemirror.css → lib/codemirror.css} +0 -0
  147. package/src/styles/{all.css → lib/fontawesome.css} +1 -1
  148. package/src/styles/lib/icon.css +792 -0
  149. package/src/styles/themes/index.scss +2 -0
  150. package/src/styles/themes/mixin.scss +33 -0
  151. package/src/styles/themes/variables.scss +206 -0
  152. package/src/styles/utils/colors.scss +222 -0
  153. package/src/styles/utils/index.scss +2 -0
  154. package/src/styles/utils/mixins.scss +34 -0
  155. package/src/styles/utils/variables.scss +27 -0
  156. package/src/webfonts/EVUI.eot +0 -0
  157. package/src/webfonts/EVUI.svg +251 -173
  158. package/src/webfonts/EVUI.ttf +0 -0
  159. package/src/webfonts/EVUI.woff +0 -0
  160. package/src/webfonts/Roboto-Bold.ttf +0 -0
  161. package/src/webfonts/Roboto-Medium.ttf +0 -0
  162. package/src/webfonts/Roboto-Regular.ttf +0 -0
  163. package/dist/3c9453211570a4ede66a4b4954a32bbb.ttf +0 -0
  164. package/dist/8634884f932627fc43782e6963b64ccd.svg +0 -183
  165. package/dist/b9e64d9b5fa6b500eb5df6fa980d3e5b.eot +0 -0
  166. package/dist/f0ac0c8b3c9cd3ef9002749985ae546f.woff +0 -0
  167. package/src/components/chart/charts/chart.bar.js +0 -334
  168. package/src/components/chart/charts/chart.base.js +0 -1075
  169. package/src/components/chart/charts/chart.line.js +0 -262
  170. package/src/components/chart/charts/chart.pie.js +0 -383
  171. package/src/components/chart/charts/chart.scatter.js +0 -349
  172. package/src/components/chart/charts/chart.sunburst.js +0 -193
  173. package/src/components/chart/core/axis/axis.js +0 -217
  174. package/src/components/chart/core/axis/axis.scale.auto.js +0 -69
  175. package/src/components/chart/core/axis/axis.scale.fixed.js +0 -65
  176. package/src/components/chart/core/axis/axis.scale.steps.js +0 -149
  177. package/src/components/chart/core/core.constant.js +0 -116
  178. package/src/components/chart/core/core.legend.js +0 -473
  179. package/src/components/chart/core/core.util.js +0 -66
  180. package/src/components/chart/core/data/data.js +0 -412
  181. package/src/components/chart/core/data/data.pie.js +0 -70
  182. package/src/components/chart/core/data/data.stack.js +0 -222
  183. package/src/components/chart/core/data/data.sunburst.js +0 -172
  184. package/src/components/menu/menu.context.children.vue +0 -201
  185. package/src/components/menu/menu.context.vue +0 -144
  186. package/src/components/tabs/jun/tab.vue +0 -123
  187. package/src/components/tabs/jun/tabs.vue +0 -484
  188. package/src/styles/evui.css +0 -386
  189. package/src/styles/icon.css +0 -557
@@ -1,24 +1,25 @@
1
1
  <template>
2
2
  <div
3
- :class="[{ disabled: disabled }, dataSize]"
4
- class="ev-radio-wrap"
3
+ :class="[{ disabled: disabled }, dataSize, type]"
4
+ :style="{ width: buttonSize }"
5
+ class="ev-radio"
5
6
  >
6
7
  <input
7
8
  :id="`${radioId}_${value}`"
9
+ v-model="bindValue"
8
10
  :value="value"
9
11
  :name="groupName"
10
12
  :disabled="disabled"
11
- v-model="bindValue"
12
13
  type="radio"
13
14
  class="ev-radio-input"
14
15
  @change="onChange"
15
16
  >
16
17
  <label
17
18
  :for="`${radioId}_${value}`"
18
- :class="dataSize"
19
+ :class="[dataSize, type]"
19
20
  class="ev-radio-label"
20
21
  >
21
- <slot/>
22
+ <slot />
22
23
  </label>
23
24
  </div>
24
25
  </template>
@@ -30,12 +31,12 @@ export default {
30
31
  },
31
32
  props: {
32
33
  value: {
33
- type: String,
34
+ type: [String, Number],
34
35
  required: true,
35
36
  },
36
37
  customValue: {
37
- type: String,
38
- default: '',
38
+ type: [String, Number],
39
+ default: null,
39
40
  },
40
41
  groupName: {
41
42
  type: String,
@@ -49,12 +50,17 @@ export default {
49
50
  type: String,
50
51
  default: '',
51
52
  },
53
+ buttonSize: {
54
+ type: String,
55
+ default: '',
56
+ },
52
57
  },
53
58
  data() {
54
59
  return {
55
60
  bindValue: this.customValue,
56
61
  radioId: this._uid,
57
62
  dataSize: this.size,
63
+ type: this.$parent.type,
58
64
  };
59
65
  },
60
66
  computed: {
@@ -77,8 +83,8 @@ export default {
77
83
  onChange(e) {
78
84
  if (this.$parent.$options.componentName === 'RadioGroup') {
79
85
  // 부모 컴포넌트가 Radio Group인 경우
80
- this.$parent.$emit('changeEvent', e);
81
86
  this.$parent.$emit('input', e.target.value);
87
+ this.$parent.$emit('on-change', e);
82
88
  }
83
89
  // else {
84
90
  // // 부모 컴포넌트가 Radio Group로 안감싼경우
@@ -89,52 +95,87 @@ export default {
89
95
  };
90
96
  </script>
91
97
 
92
- <style scoped>
93
- .ev-radio-wrap {
94
- height: 19px;
98
+ <style lang="scss">
99
+ @import '~@/styles/default';
100
+
101
+ .ev-radio {
102
+ /* height: 19px; */
95
103
  float: left;
96
104
  user-select: none;
105
+
106
+ @include evThemify() {
107
+ color: evThemed('radio');
108
+ }
109
+
110
+ &.small {
111
+ height: 16px;
112
+ }
113
+
114
+ &.button {
115
+ font-size: $font-size-base;
116
+ height: 100%;
117
+ }
97
118
  }
98
- .ev-radio-wrap.small{
99
- height: 16px;
100
- }
101
- .ev-radio-wrap.disabled {
102
- color: #C0C4CC;
103
- }
119
+
104
120
  .ev-radio-label {
105
- position: relative;
106
- display: inline-block;
107
- padding-left: 25px;
108
- line-height: 19px;
109
- cursor: pointer;
110
- }
111
- .ev-radio-label.small {
112
- padding-left: 20px;
113
- line-height: 16px;
114
- }
115
- .ev-radio-label:before {
116
- position: absolute;
117
- top: 50%;
118
- left: 2px;
119
- width: 16px;
120
- height: 16px;
121
- background: transparent;
122
- border: 1px solid #B0B3B7;
123
- border-radius: 100%;
124
- text-align: center;
125
- transform: translateY(-50%);
126
- content: '';
127
- }
128
- .ev-radio-label.small:before {
129
- width: 12px;
130
- height: 12px;
131
- }
132
- .ev-radio-wrap.disabled .ev-radio-label {
133
- cursor: not-allowed;
134
- }
135
- .ev-radio-wrap.disabled .ev-radio-label:before {
136
- border: 1px solid #B01012;
121
+ &:not(.button) {
122
+ position: relative;
123
+ display: inline-block;
124
+ padding-left: 25px;
125
+ line-height: 19px;
126
+ cursor: pointer;
127
+ margin-right: 10px;
128
+ }
129
+
130
+ &.button {
131
+ display: flex;
132
+ flex-direction: row;
133
+ border-radius: 4px;
134
+ justify-content: center;
135
+ cursor: pointer;
136
+ line-height: 19px;
137
+ padding: 5px;
138
+ margin-right: 10px;
139
+ background-color: $color-gray60;
140
+ color: $color-white;
141
+ border: solid 1px $color-gray60;
142
+ transition: opacity .2s linear;
143
+
144
+ &:hover {
145
+ opacity: 0.7;
146
+ /*
147
+ color: $color-primary;
148
+ background-color: transparent;
149
+ border-color: $color-primary;
150
+ */
151
+ }
152
+ }
153
+
154
+ &.small {
155
+ padding-left: 20px;
156
+ line-height: 16px;
157
+ }
158
+
159
+ &:not(.button):before {
160
+ position: absolute;
161
+ top: 50%;
162
+ left: 2px;
163
+ width: 16px;
164
+ height: 16px;
165
+ background: transparent;
166
+ border: 1px solid #B0B3B7;
167
+ border-radius: 100%;
168
+ text-align: center;
169
+ transform: translateY(-50%);
170
+ content: '';
171
+ }
172
+
173
+ &:not(.button).small:before {
174
+ width: 12px;
175
+ height: 12px;
176
+ }
137
177
  }
178
+
138
179
  .ev-radio-input {
139
180
  position: absolute;
140
181
  width: 1px;
@@ -145,32 +186,71 @@ export default {
145
186
  overflow: hidden;
146
187
  cursor: inherit;
147
188
  clip: rect(0, 0, 0, 0);
189
+
190
+ &:checked + .ev-radio-label:not(.button):before {
191
+ @include evThemify() {
192
+ border: 1px solid evThemed('color-primary');
193
+ }
194
+ }
195
+
196
+ &:checked + .ev-radio-label:not(.button):after {
197
+ position: absolute;
198
+ top: 50%;
199
+ left: 7px;
200
+ width: 8px;
201
+ height: 8px;
202
+ border-radius: 100%;
203
+ transform: translateY(-50%);
204
+ content: '';
205
+ }
206
+
207
+ &:checked + .ev-radio-label.button {
208
+ color: $color-white;
209
+
210
+ @include evThemify() {
211
+ background-color: evThemed('color-primary');
212
+ border-color: evThemed('color-primary');
213
+ }
214
+
215
+ &:hover {
216
+ opacity: 1;
217
+ }
218
+ }
219
+
220
+ &:checked + .ev-radio-label.small:after {
221
+ left: 6px;
222
+ width: 6px;
223
+ height: 6px;
224
+ }
225
+
226
+ &:checked + .ev-radio-label:after {
227
+ @include evThemify() {
228
+ background-color: evThemed('color-primary');
229
+ }
230
+ }
148
231
  }
149
- .ev-radio-input:checked + .ev-radio-label:before {
150
- border: 1px solid #41B7FD;
151
- }
152
- .ev-radio-wrap.disabled .ev-radio-input:checked + .ev-radio-label:before {
153
- border: 1px solid #B01012;
154
- }
155
- .ev-radio-input:checked + .ev-radio-label:after {
156
- position: absolute;
157
- top: 50%;
158
- left: 7px;
159
- width: 8px;
160
- height: 8px;
161
- border-radius: 100%;
162
- transform: translateY(-50%);
163
- content: '';
164
- }
165
- .ev-radio-input:checked + .ev-radio-label.small:after {
166
- left: 6px;
167
- width: 6px;
168
- height: 6px;
169
- }
170
- .ev-radio-input:checked + .ev-radio-label:after {
171
- background: #41B7FD;
172
- }
173
- .ev-radio-wrap.disabled .ev-radio-input:checked + .ev-radio-label:after {
174
- background: #B01012;
232
+
233
+ .disabled {
234
+ .ev-radio-label {
235
+ cursor: not-allowed;
236
+
237
+ @include evThemify() {
238
+ color: evThemed('radio-disabled');
239
+ }
240
+
241
+ &:before {
242
+ border: 1px solid $color-not-allow;
243
+ }
244
+ }
245
+
246
+ .ev-radio-input {
247
+ &:checked + .ev-radio-label:before {
248
+ border: 1px solid $color-not-allow;
249
+ }
250
+
251
+ &:checked + .ev-radio-label:after {
252
+ background-color: $color-not-allow;
253
+ }
254
+ }
175
255
  }
176
256
  </style>
@@ -31,18 +31,21 @@
31
31
  :size="size"
32
32
  :items="item.items"
33
33
  :selected-items="selectedItems"
34
+ @before-select="onBeforeSelect"
34
35
  @select="onSelect"
35
36
  />
36
37
  </div>
37
38
  </div>
38
39
  <div
39
40
  v-else
41
+ ref="singleAreaList"
40
42
  :class="`${prefixCls}-single-area`"
41
43
  >
42
44
  <Listbox
43
45
  :style="listBoxStyle"
44
46
  :items="items"
45
47
  :selected-items="selectedItems"
48
+ @before-select="onBeforeSelect"
46
49
  @select="onSelect"
47
50
  />
48
51
  </div>
@@ -53,7 +56,7 @@
53
56
  <script>
54
57
  import Listbox from '@/components/selectbox/listbox';
55
58
 
56
- const prefixCls = 'evui-dropdown';
59
+ const prefixCls = 'ev-dropdown';
57
60
 
58
61
  export default {
59
62
  components: {
@@ -104,7 +107,43 @@
104
107
  prefixCls,
105
108
  };
106
109
  },
110
+ updated() {
111
+ setTimeout(() => {
112
+ const index = this.items.findIndex(item => item.value === this.selectedItems[0].value
113
+ && item.name === this.selectedItems[0].name);
114
+ this.setScrollTop(index);
115
+ });
116
+ },
107
117
  methods: {
118
+ getClientHeight(selectedIdx) {
119
+ const defaultRowHeight = 30;
120
+ let listRowHeight = 0;
121
+ if (this.$refs.singleAreaList.children
122
+ && this.$refs.singleAreaList.children[0]
123
+ && this.$refs.singleAreaList.children[0].children[0]
124
+ && this.$refs.singleAreaList.children[0].children[0].children
125
+ ) {
126
+ let li;
127
+ const liList = this.$refs.singleAreaList.children[0].children[0].children;
128
+ if (liList.length < selectedIdx) {
129
+ return defaultRowHeight;
130
+ }
131
+ for (let ix = 0; ix < selectedIdx; ix++) {
132
+ li = liList[ix];
133
+ listRowHeight += li.clientHeight;
134
+ }
135
+ }
136
+ return listRowHeight;
137
+ },
138
+ setScrollTop(selectedIdx) {
139
+ if (!this.isGroup && this.$refs.singleAreaList) {
140
+ const listRowHeight = this.getClientHeight(selectedIdx);
141
+ this.$refs.singleAreaList.scrollTop = listRowHeight;
142
+ }
143
+ },
144
+ onBeforeSelect(item, target, index) {
145
+ this.$emit('before-select', item, target, index);
146
+ },
108
147
  onSelect(item, target, index) {
109
148
  this.$emit('select', item, target, index);
110
149
  },
@@ -115,71 +154,78 @@
115
154
  };
116
155
  </script>
117
156
 
118
- <style scoped>
119
- /** evui-dropdown **/
120
- /** evui-dropdown > multiple-input-area **/
121
- /** evui-dropdown > multiple-input-area > input-text **/
157
+ <style lang="scss">
158
+ @import '~@/styles/default';
159
+ /** ev-dropdown **/
160
+ /** ev-dropdown > multiple-input-area **/
161
+ /** ev-dropdown > multiple-input-area > input-text **/
122
162
 
123
- .evui-dropdown{
163
+ .ev-dropdown {
124
164
  position: absolute;
125
165
  width: 100%;
126
166
  height: 35px;
127
- border: 1px solid #ccc;
128
- background-color: #fff;
129
- -webkit-border-radius: 4px;
130
- -moz-border-radius: 4px;
131
- border-radius: 4px;
132
- z-index: 11;
167
+ border-radius: $border-radius-base;
168
+ z-index: 850;
169
+
170
+ @include evThemify() {
171
+ color: evThemed('font-color-base');
172
+ border: $border-solid evThemed('selectbox-border');
173
+ background-color: evThemed('selectbox-bg');
174
+ }
133
175
  }
134
- .evui-dropdown-multiple-input-area{
176
+
177
+ .ev-dropdown-multiple-input-area {
135
178
  width: 100%;
136
179
  height: 100%;
137
180
  padding: 3px;
138
181
  }
139
- .evui-dropdown-multiple-input-area .input-text{
182
+
183
+ .ev-dropdown-multiple-input-area .input-text {
140
184
  width: 100%;
141
185
  height: 100%;
142
- border: 1px solid #ccc;
186
+ border: 1px solid #CCCCCC;
143
187
  -webkit-border-radius: 4px;
144
188
  -moz-border-radius: 4px;
145
189
  border-radius: 4px;
146
190
  }
147
191
 
148
- /** evui-dropdown > evui-dropdown-listbox-wrap **/
149
- /** evui-dropdown > evui-dropdown-listbox-wrap > evui-dropdown-group-area **/
150
- /** evui-dropdown > evui-dropdown-listbox-wrap > evui-dropdown-single-area **/
192
+ /** ev-dropdown > ev-dropdown-listbox-wrap **/
193
+ /** ev-dropdown > ev-dropdown-listbox-wrap > ev-dropdown-group-area **/
194
+ /** ev-dropdown > ev-dropdown-listbox-wrap > ev-dropdown-single-area **/
151
195
 
152
- .evui-dropdown-listbox-wrap {
196
+ .ev-dropdown-listbox-wrap {
153
197
  width: 100%;
154
198
  }
155
- .evui-dropdown-group-area {
199
+
200
+ .ev-dropdown-group-area {
156
201
  list-style-type: none;
157
202
  width: 100%;
158
203
  max-height: 150px;
159
- border: 1px solid #ccc;
160
- -webkit-border-radius: 4px;
161
- -moz-border-radius: 4px;
162
- border-radius: 4px;
163
- background: #FFFFFF;
164
- -webkit-box-shadow: 0 6px 12px #ccc;
165
- box-shadow: 0 6px 12px #ccc;
204
+ border-radius: $border-radius-base;
166
205
  overflow: auto;
206
+
207
+ @include evThemify() {
208
+ color: evThemed('font-color-base');
209
+ border: $border-solid evThemed('selectbox-border');
210
+ background-color: evThemed('selectbox-bg');
211
+ }
212
+
213
+ .title {
214
+ padding: 7px 10px;
215
+ }
167
216
  }
168
- .evui-dropdown-group-area .title {
169
- padding: 7px 10px;
170
- color:#999;
171
- }
172
- .evui-dropdown-single-area {
217
+
218
+ .ev-dropdown-single-area {
173
219
  position: absolute;
174
- min-width: 100%;
220
+ width: 100%;
175
221
  max-height: 150px;
176
- border: 1px solid #ccc;
177
- -webkit-border-radius: 4px;
178
- -moz-border-radius: 4px;
179
- border-radius: 4px;
180
- background: #FFFFFF;
181
- -webkit-box-shadow: 0 6px 12px #ccc;
182
- box-shadow: 0 6px 12px #ccc;
222
+ border-radius: $border-radius-base;
183
223
  overflow: auto;
224
+
225
+ @include evThemify() {
226
+ color: evThemed('font-color-base');
227
+ border: $border-solid evThemed('selectbox-border');
228
+ background-color: evThemed('selectbox-bg');
229
+ }
184
230
  }
185
231
  </style>
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="prefixCls">
2
+ <div :class="prefixCls">
3
3
  <ul
4
4
  :class="ulClasses"
5
5
  @click.stop="onClick"
@@ -8,8 +8,13 @@
8
8
  v-for="(item, index) in items"
9
9
  :key="index"
10
10
  :data-index="index"
11
+ :title="item.name"
11
12
  :class="getLiClasses(item)"
12
13
  >
14
+ <ev-icon
15
+ v-if="item.icon"
16
+ :cls="`${item.icon} ${prefixCls}-li-custom-icon`"
17
+ />
13
18
  {{ item.name }}
14
19
  </li>
15
20
  </ul>
@@ -17,7 +22,7 @@
17
22
  </template>
18
23
 
19
24
  <script>
20
- const prefixCls = 'evui-listbox';
25
+ const prefixCls = 'ev-listbox';
21
26
 
22
27
  export default {
23
28
  props: {
@@ -82,35 +87,59 @@
82
87
  };
83
88
  </script>
84
89
 
85
- <style scoped>
86
- .evui-listbox{
87
- width: 100%;
90
+ <style lang="scss">
91
+ @import '~@/styles/default';
92
+
93
+ .ev-listbox {
88
94
  height: 100%;
95
+ word-break: break-all;
96
+ text-align: start;
97
+
98
+ @include evThemify() {
99
+ color: evThemed('font-color-base');
100
+ }
89
101
  }
90
- .evui-listbox-ul{
102
+
103
+ .ev-listbox-ul {
91
104
  list-style-type: none;
92
105
  padding: 2px 0;
93
106
  }
94
- .evui-listbox-ul-group{
107
+
108
+ .ev-listbox-ul-group {
95
109
  height: 100%;
96
110
  }
97
- .evui-listbox-li{
111
+
112
+ .ev-listbox-li {
98
113
  display: block;
99
114
  list-style: none;
100
- color: #495060;
101
- white-space: nowrap;
102
115
  cursor: pointer;
103
116
  transition: background .1s ease-in-out;
117
+
118
+ &-custom-icon {
119
+ padding: 0 5px 0 0;
120
+ }
104
121
  }
105
- .evui-listbox-li:hover:not(.evui-listbox-li-selected){
106
- background-color: #eeeeee;
122
+
123
+ .ev-listbox-li:hover:not(.ev-listbox-li-selected) {
124
+ @include evThemify() {
125
+ background-color: evThemed('selectbox-select-bg');
126
+ }
127
+ }
128
+
129
+ .ev-listbox-li-selected {
130
+ color: $color-gray8;
131
+
132
+ @include evThemify() {
133
+ background-color: evThemed('color-selected');
134
+ }
107
135
  }
108
- .evui-listbox-li-selected {
109
- color: #fff;
110
- background-color: #337ab6;
136
+
137
+ .ev-selectbox-size-small .ev-listbox-li,
138
+ .ev-selectbox-size-medium .ev-listbox-li {
139
+ padding: 7px;
111
140
  }
112
141
 
113
- .evui-selectbox-size-small .evui-listbox-li { padding: 7px; }
114
- .evui-selectbox-size-medium .evui-listbox-li { padding: 7px; }
115
- .evui-selectbox-size-large .evui-listbox-li { padding: 7px 10px; }
142
+ .ev-selectbox-size-large .ev-listbox-li {
143
+ padding: 7px 10px;
144
+ }
116
145
  </style>
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <li
3
- class="evui-selectbox-item"
3
+ class="ev-selectbox-item"
4
4
  ><slot/>
5
5
  </li>
6
6
  </template>