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
@@ -4,26 +4,26 @@
4
4
  :class="selectboxClass"
5
5
  >
6
6
  <div
7
- class="evui-selectbox-select-field"
7
+ class="ev-selectbox-select-field"
8
8
  @click="onClick"
9
9
  >
10
10
  <div
11
11
  v-if="multiple"
12
- class="evui-selectbox-multiple-tag-view"
12
+ class="ev-selectbox-multiple-tag-view"
13
13
  >
14
14
  <div
15
15
  v-if="selectedItems.length"
16
16
  :class="`${prefixCls}-select-tag ${selectedItems.length > 1 ? 'max-width' : ''}`"
17
17
  >
18
18
  <div :class="`${prefixCls}-text-wrap`">
19
- <span :class="`${prefixCls}-text`">{{ selectedItems[0].name }}</span>
19
+ <span :class="`${prefixCls}-text`">{{ multipleFieldFirstItem.name }}</span>
20
20
  </div>
21
21
  <div
22
22
  :class="`${prefixCls}-tag-close`"
23
- @click="removeTag(selectedItems[0], $event)"
23
+ @click="removeTag(multipleFieldFirstItem, $event)"
24
24
  >
25
25
  <div :class="`${prefixCls}-tag-close-scale`">
26
- <span :class="`ei ei-close`"/>
26
+ <span :class="`ei ei-close`" />
27
27
  </div>
28
28
  </div>
29
29
  </div>
@@ -42,11 +42,12 @@
42
42
  :readonly="readOnly"
43
43
  :class="inputFieldClass"
44
44
  :value="inputFieldValue"
45
+ :placeholder="placeholder"
45
46
  type="text"
46
47
  @keyup="onKeyUpInputField"
47
48
  @blur="onBlurInputField"
48
49
  >
49
- <i :class="arrowIconClass"/>
50
+ <i :class="arrowIconClass" />
50
51
  </div>
51
52
  <transition name="fade">
52
53
  <Dropdown
@@ -68,11 +69,10 @@
68
69
  </template>
69
70
 
70
71
  <script>
71
- import '@/styles/all.css';
72
- import '@/styles/evui.css';
72
+ import '@/styles/lib/fontawesome.css';
73
73
  import Dropdown from '@/components/selectbox/dropdown';
74
74
 
75
- const prefixCls = 'evui-selectbox';
75
+ const prefixCls = 'ev-selectbox';
76
76
 
77
77
  export default {
78
78
  components: {
@@ -100,7 +100,7 @@
100
100
  },
101
101
  },
102
102
  model: {
103
- prop: 'selectedValue',
103
+ prop: 'vModelSelectedValue',
104
104
  event: 'change-selected-value',
105
105
  },
106
106
  props: {
@@ -142,78 +142,103 @@
142
142
  },
143
143
  readOnly: {
144
144
  type: Boolean,
145
- default: false,
146
- },
147
- selectedValue: {
148
- type: [String, Number, Array],
149
- default: null,
145
+ default: true,
150
146
  },
151
- initSelectValue: {
147
+ vModelSelectedValue: {
152
148
  type: [String, Number, Array],
153
149
  default: null,
154
150
  },
155
- initSelectIdx: {
156
- type: [Number, Array],
157
- default: null,
158
- },
159
151
  items: {
160
152
  type: Array,
161
153
  default() {
162
154
  return [];
163
155
  },
164
156
  },
157
+ placeholder: {
158
+ type: String,
159
+ default: '',
160
+ },
165
161
  },
166
162
  data() {
167
163
  return {
168
164
  prefixCls,
169
- selectboxClass: this.getSelectboxClass(),
170
- inputFieldClass: this.getInputFieldClass(),
165
+ isUseVModel: this.$vnode.data && this.$vnode.data.model,
171
166
  dropDownState: false,
172
- clickedValue: '',
173
- inputFieldValue: '',
174
167
  listBoxItems: [],
175
- selectedItems: [],
168
+ selectedValueList: [],
169
+ inputFieldValue: '',
176
170
  };
177
171
  },
178
172
  computed: {
179
173
  arrowIconClass() {
180
174
  return {
181
- 'evui-selectbox-arrow-icon': true,
182
- 'evui-selectbox-arrow-icon-rotate-180': this.dropDownState,
183
- 'evui-selectbox-arrow-icon-disabled': this.disabled,
175
+ 'ev-selectbox-arrow-icon': true,
176
+ 'ev-selectbox-arrow-icon-rotate-180': this.dropDownState,
177
+ 'ev-selectbox-arrow-icon-disabled': this.disabled,
184
178
  };
185
179
  },
186
- },
187
- watch: {
188
- items: {
189
- deep: true,
190
- handler(newItems) {
191
- if (newItems.length > 0) {
192
- this.listBoxItems = newItems.slice();
193
- this.initSelect();
194
- }
195
- },
180
+ selectboxClass() {
181
+ return {
182
+ [`${prefixCls}`]: true,
183
+ [`${prefixCls}-size-${this.size}`]: true,
184
+ [`${prefixCls}-disabled`]: this.disabled,
185
+ };
196
186
  },
197
- selectedItems(items) {
198
- let value = null;
187
+ inputFieldClass() {
188
+ return {
189
+ [`${prefixCls}-input-text`]: true,
190
+ [`${prefixCls}-input-text-readonly`]: this.readOnly,
191
+ [`${prefixCls}-input-text-disabled`]: this.disabled,
192
+ };
193
+ },
194
+ selectedItems() {
195
+ let items = [];
199
196
 
200
197
  if (this.multiple) {
201
- value = [];
202
- items.map(obj => value.push(obj.value));
198
+ items = this.selectedValueList.map(v => this.findItemByValue(v));
203
199
  } else {
204
- value = items[0] ? items[0].value : null;
200
+ const foundItem = this.findItemByValue(this.selectedValueList[0]);
201
+
202
+ if (foundItem) {
203
+ items.push(foundItem);
204
+ }
205
205
  }
206
206
 
207
- this.$emit('change-selected-value', value);
207
+ return items;
208
+ },
209
+ multipleFieldFirstItem() {
210
+ const firstItem = (this.selectedItems.length && this.selectedItems[0]) || {};
211
+ return this.findItemByValue(firstItem.value);
212
+ },
213
+ },
214
+ watch: {
215
+ items: {
216
+ deep: true,
217
+ handler() {
218
+ this.initSettings();
219
+ },
220
+ },
221
+ vModelSelectedValue() {
222
+ this.syncSelectedValue();
208
223
  },
209
224
  },
210
225
  created() {
211
- this.listBoxItems = this.items.slice();
212
-
213
226
  this.dropdownStyle.border = this.multiple ? 1 : 0;
214
- this.initSelect();
227
+ },
228
+ mounted() {
229
+ this.syncSelectedValue();
215
230
  },
216
231
  methods: {
232
+ initSettings() {
233
+ this.listBoxItems = this.items.slice() || [];
234
+
235
+ if (this.multiple) {
236
+ this.inputFieldValue = '';
237
+ } else {
238
+ const selectedItem = this.items.find(obj => obj.value === this.vModelSelectedValue) || {};
239
+ this.inputFieldValue = selectedItem.name;
240
+ }
241
+ },
217
242
  onClick() {
218
243
  if (this.disabled) {
219
244
  return;
@@ -225,9 +250,9 @@
225
250
 
226
251
  this.listBoxItems = this.items.slice();
227
252
 
228
- if (!this.dropDownState &&
229
- this.$refs.dropdown &&
230
- this.$refs.dropdown.$refs.filterInputField) {
253
+ if (!this.dropDownState
254
+ && this.$refs.dropdown
255
+ && this.$refs.dropdown.$refs.filterInputField) {
231
256
  this.$refs.dropdown.$refs.filterInputField.value = '';
232
257
  }
233
258
 
@@ -250,108 +275,99 @@
250
275
  this.$emit('keyup', e);
251
276
  },
252
277
  onBlurInputField(e) {
253
- this.inputFieldValue = this.clickedValue;
278
+ const text = e.target.value;
279
+ const foundItem = this.items.find(o => o.name === text);
280
+
281
+ if (foundItem) {
282
+ this.setVModel(foundItem.value);
283
+ } else {
284
+ this.inputFieldValue = '';
285
+ this.setVModel('');
286
+ }
287
+
254
288
  this.$emit('blur', e);
255
289
  },
256
290
  onKeyUpDropDownInputField(e) {
257
291
  this.listBoxItems = this.getFilteredListBoxItems(e.target.value);
258
292
  this.$emit('keyup', e);
259
293
  },
260
- initSelect() {
261
- let item;
262
- let value;
294
+ selectItem(item) {
295
+ if (!item) {
296
+ return;
297
+ }
263
298
 
264
- this.selectedItems.length = 0;
299
+ const itemValue = item.value;
300
+ let existValue = false;
301
+ let selectedValue;
265
302
 
266
- if (this.initSelectValue != null) {
267
- if (this.initSelectValue.constructor === Array) {
268
- for (let ix = 0; ix < this.initSelectValue.length; ix++) {
269
- value = this.initSelectValue[ix];
270
- item = this.getItemByValue(value);
303
+ if (this.multiple) {
304
+ selectedValue = [];
271
305
 
272
- if (item) {
273
- this.selectedItems.push(item);
274
- }
275
- }
276
- } else {
277
- item = this.getItemByValue(this.initSelectValue);
306
+ for (let ix = 0; ix < this.selectedValueList.length; ix++) {
307
+ const value = this.selectedValueList[ix];
278
308
 
279
- if (item) {
280
- this.selectedItems.push(item);
309
+ if (value === itemValue) {
310
+ existValue = true;
311
+ } else {
312
+ selectedValue.push(value);
281
313
  }
282
314
  }
283
- } else if (this.initSelectIdx != null) {
284
- if (this.initSelectIdx.constructor === Array) {
285
- for (let ix = 0; ix < this.initSelectIdx.length; ix++) {
286
- value = this.initSelectIdx[ix];
287
- item = this.getItemByIndex(value);
288
-
289
- if (item) {
290
- this.selectedItems.push(item);
291
- }
292
- }
293
- } else {
294
- item = this.getItemByIndex(this.initSelectIdx);
295
315
 
296
- if (item) {
297
- this.selectedItems.push(item);
298
- }
316
+ if (!existValue) {
317
+ selectedValue.push(itemValue);
299
318
  }
319
+ } else {
320
+ selectedValue = itemValue;
300
321
  }
301
322
 
302
- if (!this.multiple) {
303
- this.inputFieldValue = this.selectedItems.length ? this.selectedItems[0].name : '';
304
- this.clickedValue = this.inputFieldValue;
305
- }
323
+ this.setVModel(selectedValue);
306
324
  },
307
- select(value) {
308
- const item = this.getItemByValue(value);
309
-
310
- if (item) {
311
- this.selectItem(item);
325
+ removeTag(item, event) {
326
+ if (event) {
327
+ event.preventDefault();
328
+ event.stopPropagation();
312
329
  }
313
- },
314
- selectIndex(idx) {
315
- const item = this.getItemByIndex(idx);
316
330
 
317
- if (item) {
318
- this.selectItem(item);
319
- }
331
+ this.setVModel(this.selectedValueList.filter(v => v !== item.value));
320
332
  },
321
- selectItem(item) {
322
- if (!item) {
323
- return;
333
+ hideDropdown() {
334
+ this.dropDownState = false;
335
+ },
336
+ setVModel(value) {
337
+ if (this.isUseVModel) {
338
+ this.$emit('change-selected-value', value);
339
+ } else {
340
+ this.syncSelectedValue(value);
324
341
  }
325
-
326
- let foundItem;
327
- const itemName = item.name;
342
+ },
343
+ syncSelectedValue(value) {
344
+ const selectedValue = this.isUseVModel ? this.vModelSelectedValue : value;
328
345
 
329
346
  if (this.multiple) {
330
- foundItem = this.selectedItems.find(obj => obj.name === itemName);
331
-
332
- if (foundItem) {
333
- this.selectedItems = this.selectedItems.filter(obj => obj.name !== itemName);
334
- } else {
335
- this.selectedItems.push(item);
336
- }
347
+ this.selectedValueList = selectedValue;
337
348
  } else {
338
- this.clickedValue = itemName;
339
- this.inputFieldValue = itemName;
340
- this.selectedItems.length = 0;
341
- this.selectedItems.push(item);
342
- }
349
+ this.selectedValueList = [selectedValue];
343
350
 
344
- if (!this.multiple) {
351
+ const foundItem = this.findItemByValue(selectedValue);
345
352
  this.dropDownState = false;
353
+ this.inputFieldValue = foundItem.name;
346
354
  }
347
355
  },
348
- removeTag(item, event) {
349
- if (event) {
350
- event.preventDefault();
351
- event.stopPropagation();
356
+ findItemByValue(value) {
357
+ let foundItem = {};
358
+
359
+ if (value != null) {
360
+ if (this.isGroup) {
361
+ this.items.some((groupItem) => {
362
+ foundItem = groupItem.items.find(item => item && item.value === value);
363
+ return foundItem != null;
364
+ });
365
+ } else {
366
+ foundItem = this.items.find(obj => obj && obj.value === value);
367
+ }
352
368
  }
353
369
 
354
- this.selectedItems = this.selectedItems.filter(obj => obj.name !== item.name);
370
+ return foundItem || {};
355
371
  },
356
372
  getFilteredListBoxItems(value) {
357
373
  let filteredItems;
@@ -384,139 +400,77 @@
384
400
 
385
401
  return listBoxItems;
386
402
  },
387
- hideDropdown() {
388
- this.dropDownState = false;
389
- },
390
- getSelectboxClass() {
391
- return {
392
- [`${prefixCls}`]: true,
393
- [`${prefixCls}-size-${this.size}`]: true,
394
- [`${prefixCls}-disabled`]: this.disabled,
395
- };
396
- },
397
- getInputFieldClass() {
398
- return {
399
- [`${prefixCls}-input-text`]: true,
400
- [`${prefixCls}-input-text-readonly`]: this.readOnly,
401
- [`${prefixCls}-input-text-disabled`]: this.disabled,
402
- };
403
- },
404
- getItemByValue(value) {
405
- let groupObj;
406
- let groupItems;
407
- let foundItem;
408
-
409
- if (this.isGroup) {
410
- for (let ix = 0, ixLen = this.items.length; ix < ixLen; ix++) {
411
- groupObj = this.items[ix];
412
- groupItems = groupObj.items || [];
413
- foundItem = groupItems.find(item => item.value === value);
414
-
415
- if (foundItem) {
416
- break;
417
- }
418
- }
419
- } else {
420
- foundItem = this.items.find(item => item.value === value);
421
- }
422
-
423
- if (foundItem) {
424
- foundItem = JSON.parse(JSON.stringify(foundItem));
425
- }
426
-
427
- return foundItem;
428
- },
429
- getItemByIndex(idx) {
430
- let groupObj;
431
- let groupItems;
432
- let foundItem;
433
- let item;
434
-
435
- if (this.isGroup) {
436
- let itemRowIdx = 0;
437
-
438
- for (let ix = 0; ix < this.items.length; ix++) {
439
- groupObj = this.items[ix];
440
- groupItems = groupObj.items || [];
441
-
442
- for (let jx = 0; jx < groupItems.length; jx++) {
443
- item = groupItems[jx];
444
-
445
- if (item && itemRowIdx === idx) {
446
- foundItem = item;
447
- break;
448
- }
449
-
450
- itemRowIdx++;
451
- }
452
-
453
- if (foundItem || itemRowIdx > idx) {
454
- break;
455
- }
456
- }
457
- } else {
458
- foundItem = this.items[idx];
459
- }
460
-
461
- if (foundItem) {
462
- foundItem = JSON.parse(JSON.stringify(foundItem));
463
- }
464
-
465
- return foundItem;
466
- },
467
403
  },
468
404
  };
469
405
  </script>
470
406
 
471
- <style>
472
- /************************************************************************************
473
- Selectbox
474
- ************************************************************************************/
475
-
476
- /** evui-selectbox **/
407
+ <style lang="scss">
408
+ @import '~@/styles/default';
477
409
 
478
- .evui-selectbox {
410
+ .ev-selectbox {
479
411
  display: inline-block;
480
412
  position: relative;
481
- border: 1px solid #dddeee;
482
- border-radius: 4px;
413
+ border-radius: $border-radius-base;
483
414
  vertical-align: middle;
484
415
  line-height: normal;
485
416
  cursor: pointer;
486
- transition: border-color ease-in-out .15s;
417
+ transition: border-color $animate-fast;
418
+
419
+ @include evThemify() {
420
+ color: evThemed('font-color-base');
421
+ border: $border-solid evThemed('selectbox-border');
422
+ background-color: evThemed('selectbox-bg');
423
+ }
424
+
425
+ &:focus {
426
+ @include evThemify() {
427
+ box-shadow: inset 0 1px 1px rgba($color-black, 0.075),
428
+ 0 0 8px rgba(evThemed('color-primary'), 0.6);
429
+ }
430
+ }
431
+
432
+ &:hover {
433
+ @include evThemify() {
434
+ background-color: evThemed('selectbox-bg-hover');
435
+ }
436
+ }
487
437
  }
488
- .evui-selectbox-disabled{
438
+
439
+ .ev-selectbox-disabled {
489
440
  cursor: not-allowed;
490
441
  }
491
- .evui-selectbox:focus{
492
- box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102,175,233,.6);
493
- }
494
- .evui-selectbox-select-field {
442
+
443
+ .ev-selectbox-select-field {
495
444
  display: inline-block;
496
445
  width: 100%;
497
446
  height: 100%;
498
447
  }
499
- .evui-selectbox-select-field:hover{
500
- background-color: #eeeeee;
501
- border-color: #bbb;
502
- }
503
- .evui-selectbox-input-text{
448
+
449
+ .ev-selectbox-input-text {
504
450
  width: 100%;
505
451
  height: 100%;
506
452
  padding: 6px 10px;
507
453
  border: 0;
508
454
  background: transparent;
455
+
456
+ @include evThemify() {
457
+ color: evThemed('font-color-base');
458
+ }
459
+
460
+ &:focus {
461
+ outline: 0;
462
+ }
509
463
  }
510
- .evui-selectbox-input-text:focus{
511
- outline: 0;
512
- }
513
- .evui-selectbox-input-text-readonly{
464
+
465
+ .ev-selectbox-input-text-readonly {
514
466
  cursor: default;
515
467
  }
516
- .evui-selectbox-input-text-disabled{
468
+
469
+ .ev-selectbox-input-text-disabled {
517
470
  cursor: not-allowed;
518
471
  }
519
- .evui-selectbox-arrow-icon{
472
+
473
+ .ev-selectbox-arrow-icon {
520
474
  position: absolute;
521
475
  top: 50%;
522
476
  width: 10px;
@@ -526,152 +480,186 @@
526
480
  font-family: Font Awesome\ 5 Free;
527
481
  font-style: normal;
528
482
  font-variant: normal;
529
- color: #888888;
530
- transition: all .2s ease-in-out;
531
- }
532
- .evui-selectbox-arrow-icon:before {
533
- content: "\F0DD"
483
+ color: $color-gray40;
484
+ transition: all $animate-fast;
485
+
486
+ &:before {
487
+ content: '\F0DD';
488
+ }
534
489
  }
535
- .evui-selectbox-arrow-icon-disabled{
490
+
491
+ .ev-selectbox-arrow-icon-disabled {
536
492
  cursor: not-allowed;
537
493
  }
538
- .evui-selectbox-arrow-icon-rotate-180{
494
+
495
+ .ev-selectbox-arrow-icon-rotate-180 {
539
496
  transform: rotate(180deg);
540
497
  }
541
- .evui-selectbox-multiple-tag-view{
498
+
499
+ .ev-selectbox-multiple-tag-view {
542
500
  width: 100%;
543
501
  height: 100%;
544
502
  overflow-x: hidden;
545
503
  overflow-y: auto;
546
504
  }
547
- .evui-selectbox-select-tag {
505
+
506
+ .ev-selectbox-select-tag {
548
507
  display: inline-flex;
549
508
  height: 100%;
550
509
  max-width: 100%;
551
510
  padding: 0 5px;
552
- border: 1px solid #e9eaec;
553
511
  border-radius: 3px;
554
- background: #f0f2f5;
555
512
  justify-content: center;
556
513
  align-items: center;
557
514
  white-space: nowrap;
558
515
  overflow: hidden;
559
516
  text-overflow: ellipsis;
560
517
  cursor: pointer;
518
+
519
+ @include evThemify() {
520
+ background-color: evThemed('selectbox-select-bg');
521
+ }
522
+
523
+ &:hover {
524
+ opacity: 0.85;
525
+ }
526
+
527
+ &.max-width {
528
+ max-width: calc(100% - 40px);
529
+ }
561
530
  }
562
- .evui-selectbox-select-tag:hover {
563
- opacity:.85;
564
- }
565
- .evui-selectbox-select-tag.max-width {
566
- max-width: calc(100% - 40px);
567
- }
568
- .evui-selectbox-text-wrap{
531
+
532
+ .ev-selectbox-text-wrap {
569
533
  display: inline-block;
570
- max-width: 100%;
571
- white-space: nowrap;
572
- overflow: hidden;
573
- text-overflow: ellipsis;
574
- }
575
- .evui-selectbox-text {
576
- color: #495060;
534
+
535
+ @include truncate(100%);
577
536
  }
578
- .evui-selectbox-tag-close {
537
+
538
+ .ev-selectbox-tag-close {
579
539
  margin-left: 5px;
580
540
  border-radius: 50%;
581
- background-color: rgba(0,0,0,0.4);
582
- opacity: .66;
541
+ background-color: rgba($color-black, 0.4);
542
+ opacity: 0.66;
583
543
  cursor: pointer;
544
+
545
+ &:hover {
546
+ opacity: 1;
547
+ }
584
548
  }
585
- .evui-selectbox-tag-close:hover{
586
- opacity: 1
587
- }
588
- .evui-selectbox-tag-close-scale {
589
- color: #fff;
549
+
550
+ .ev-selectbox-tag-close-scale {
551
+ color: $color-white;
590
552
  }
591
- .evui-select-search:focus{
592
- border-color: #66afe8;
553
+
554
+ .ev-select-search:focus {
593
555
  outline: 0;
594
- box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102,175,233,.6);
556
+
557
+ @include evThemify() {
558
+ border-color: evThemed('color-primary');
559
+ box-shadow: inset 0 1px 1px rgba($color-black, 0.075),
560
+ 0 0 8px rgba(evThemed('color-primary'), 0.6);
561
+ }
595
562
  }
596
- .evui-selectbox-select-count-tag {
563
+
564
+ .ev-selectbox-select-count-tag {
597
565
  display: inline-flex;
598
566
  width: 35px;
599
567
  height: 100%;
600
568
  padding: 0 2px;
601
- border: 1px solid #e9eaec;
602
569
  border-radius: 3px;
603
- background: #f0f2f5;
604
570
  justify-content: center;
605
571
  align-items: center;
606
572
  white-space: nowrap;
607
573
  overflow: hidden;
608
574
  text-overflow: ellipsis;
575
+
576
+ @include evThemify() {
577
+ background-color: darken(evThemed('selectbox-select-bg'), 3%);
578
+ }
609
579
  }
610
580
 
611
581
  /** size **/
612
- .evui-selectbox-size-small {
582
+ .ev-selectbox-size-small {
613
583
  width: 90px;
614
584
  height: 18px;
615
585
  font-size: 11px;
586
+
587
+ .ev-selectbox-select-field {
588
+ padding: 1px 12px 1px 2px;
589
+ }
590
+
591
+ .ev-selectbox-arrow-icon {
592
+ right: 1px;
593
+ margin-top: -3px;
594
+ }
595
+
596
+ .ev-selectbox-arrow-icon-rotate-180 {
597
+ right: 4px;
598
+ margin-top: -7px;
599
+ }
600
+
601
+ .ev-selectbox-tag-close {
602
+ font-size: 10px;
603
+ transform: scale(0.9);
604
+ }
605
+
606
+ .ev-selectbox-tag-close-scale {
607
+ transform: scale(0.6);
608
+ }
616
609
  }
617
- .evui-selectbox-size-medium {
610
+
611
+ .ev-selectbox-size-medium {
618
612
  width: 140px;
619
613
  height: 25px;
620
614
  font-size: 12px;
615
+
616
+ .ev-selectbox-select-field {
617
+ padding: 2px 19px 2px 3px;
618
+ }
619
+
620
+ .ev-selectbox-arrow-icon {
621
+ right: 4px;
622
+ margin-top: -4px;
623
+ }
624
+
625
+ .ev-selectbox-arrow-icon-rotate-180 {
626
+ right: 7px;
627
+ margin-top: -6px;
628
+ }
629
+
630
+ .ev-selectbox-tag-close {
631
+ transform: scale(0.8);
632
+ }
633
+
634
+ .ev-selectbox-tag-close-scale {
635
+ transform: scale(0.5);
636
+ }
621
637
  }
622
- .evui-selectbox-size-large {
638
+
639
+ .ev-selectbox-size-large {
623
640
  width: 180px;
624
641
  height: 30px;
625
- font-size: 14px;
626
- }
642
+ font-size: $font-size-medium;
627
643
 
628
- .evui-selectbox-size-small .evui-selectbox-select-field { padding: 1px 12px 1px 2px; }
629
- .evui-selectbox-size-medium .evui-selectbox-select-field { padding: 2px 19px 2px 3px; }
630
- .evui-selectbox-size-large .evui-selectbox-select-field { padding: 2px 23px 2px 4px; }
644
+ .ev-selectbox-select-field {
645
+ padding: 2px 23px 2px 4px;
646
+ }
631
647
 
632
- .evui-selectbox-size-small .evui-selectbox-arrow-icon{
633
- right: 1px;
634
- margin-top: -3px;
635
- }
636
- .evui-selectbox-size-medium .evui-selectbox-arrow-icon{
637
- right: 4px;
638
- margin-top: -4px;
639
- }
640
- .evui-selectbox-size-large .evui-selectbox-arrow-icon{
641
- right: 7px;
642
- margin-top: -4px;
643
- }
648
+ .ev-selectbox-arrow-icon {
649
+ right: 7px;
650
+ margin-top: -4px;
651
+ }
644
652
 
645
- .evui-selectbox-size-small .evui-selectbox-arrow-icon-rotate-180{
646
- right: 4px;
647
- margin-top: -7px;
648
- }
649
- .evui-selectbox-size-medium .evui-selectbox-arrow-icon-rotate-180{
650
- right: 7px;
651
- margin-top: -6px;
652
- }
653
- .evui-selectbox-size-large .evui-selectbox-arrow-icon-rotate-180{
654
- right: 8px;
655
- }
653
+ .ev-selectbox-arrow-icon-rotate-180 {
654
+ right: 8px;
655
+ }
656
656
 
657
- .evui-selectbox-size-small .evui-selectbox-tag-close{
658
- font-size: 10px;
659
- transform: scale(0.9);
660
- }
661
- .evui-selectbox-size-medium .evui-selectbox-tag-close{
662
- transform: scale(0.8);
663
- }
664
- .evui-selectbox-size-large .evui-selectbox-tag-close{
665
- transform: scale(0.8);
666
- }
657
+ .ev-selectbox-tag-close {
658
+ transform: scale(0.8);
659
+ }
667
660
 
668
- .evui-selectbox-size-small .evui-selectbox-tag-close-scale{
669
- transform: scale(0.6);
670
- }
671
- .evui-selectbox-size-medium .evui-selectbox-tag-close-scale{
672
- transform: scale(0.5);
673
- }
674
- .evui-selectbox-size-large .evui-selectbox-tag-close-scale{
675
- transform: scale(0.45);
661
+ .ev-selectbox-tag-close-scale {
662
+ transform: scale(0.45);
663
+ }
676
664
  }
677
665
  </style>