evui 2.0.9 → 2.1.2

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 (185) hide show
  1. package/dist/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/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/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/425399f81e4ce7cbd967685402ba0260.woff +0 -0
  19. package/dist/4730076470a665bbc7b783c56d29a72e.svg +261 -0
  20. package/dist/52e9a7f6ff3af5ad261e5292d07ebdca.eot +0 -0
  21. package/dist/5367103510b27b78482794590e1ce3b0.ttf +0 -0
  22. package/dist/57e963e3d6dd0a9cf05150b40eebf69b.svg +1008 -0
  23. package/dist/65a2fb6d9aaa164b41a039302093995b.ttf +0 -0
  24. package/dist/687a4990ea22bb1a49d469a5d9319790.woff2 +0 -0
  25. package/dist/6c1d906bf5ba48676f65b2d65e935e1a.ttf +0 -0
  26. package/dist/6dafca5a4f1e31f2bdf11939b24ff422.ttf +0 -0
  27. package/dist/752905fa5edf21fc52a10a0c1ca9c7a4.eot +0 -0
  28. package/dist/76c05d80dda67cdc5d03f345b7bd063f.ttf +0 -0
  29. package/dist/7d62eb50e7bb05eedb2a4656f7fe8f3b.svg +366 -0
  30. package/dist/a01e3f2d6c83dc3aee175e2482b3f777.eot +0 -0
  31. package/dist/b30fd8419d7e6d5918856c7531d33482.svg +1518 -0
  32. package/dist/c57dd55fa982e8940f69ca1d69a8a999.woff +0 -0
  33. package/dist/c656b8caa454ed19b9a2ef7f4f5b8fea.ttf +0 -0
  34. package/dist/cac87dc00c87a5d74711d0276713808a.woff +0 -0
  35. package/dist/d68fa3e67dbb653a13cec44b1bcabcfe.eot +0 -0
  36. package/dist/ddae9b1ba9b0b42f58809904b0b21349.woff +0 -0
  37. package/dist/evui.min.js +19 -0
  38. package/dist/evui.min.js.gz +0 -0
  39. package/dist/evui.min.js.map +1 -0
  40. package/dist/main.css +85 -0
  41. package/dist/main.css.gz +0 -0
  42. package/dist/main.css.map +1 -0
  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 +3 -0
  105. package/src/components/message-box/message-box.js +31 -0
  106. package/src/components/message-box/message-box.vue +299 -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 +25 -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/src/components/chart/charts/chart.bar.js +0 -334
  164. package/src/components/chart/charts/chart.base.js +0 -1075
  165. package/src/components/chart/charts/chart.line.js +0 -262
  166. package/src/components/chart/charts/chart.pie.js +0 -383
  167. package/src/components/chart/charts/chart.scatter.js +0 -349
  168. package/src/components/chart/charts/chart.sunburst.js +0 -193
  169. package/src/components/chart/core/axis/axis.js +0 -217
  170. package/src/components/chart/core/axis/axis.scale.auto.js +0 -69
  171. package/src/components/chart/core/axis/axis.scale.fixed.js +0 -65
  172. package/src/components/chart/core/axis/axis.scale.steps.js +0 -149
  173. package/src/components/chart/core/core.constant.js +0 -116
  174. package/src/components/chart/core/core.legend.js +0 -473
  175. package/src/components/chart/core/core.util.js +0 -66
  176. package/src/components/chart/core/data/data.js +0 -412
  177. package/src/components/chart/core/data/data.pie.js +0 -70
  178. package/src/components/chart/core/data/data.stack.js +0 -222
  179. package/src/components/chart/core/data/data.sunburst.js +0 -172
  180. package/src/components/menu/menu.context.children.vue +0 -201
  181. package/src/components/menu/menu.context.vue +0 -144
  182. package/src/components/tabs/jun/tab.vue +0 -123
  183. package/src/components/tabs/jun/tabs.vue +0 -484
  184. package/src/styles/evui.css +0 -386
  185. package/src/styles/icon.css +0 -557
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div>
2
+ <div style="width: 100%; height: 100%;">
3
3
  <div
4
4
  :style="wrapStyle"
5
5
  :class="wrapClasses"
@@ -51,6 +51,12 @@
51
51
  >
52
52
  <p>{{ errorMsgWrapper }}</p>
53
53
  </div>
54
+ <div
55
+ v-show="customErrorMsg"
56
+ :class="errorTextClass"
57
+ >
58
+ <p>{{ customErrorMsg }}</p>
59
+ </div>
54
60
  <div
55
61
  v-show="useMaxLength"
56
62
  :class="maxLengthClass"
@@ -121,6 +127,10 @@
121
127
  type: String,
122
128
  default: 'Wrong Message',
123
129
  },
130
+ customErrorMsg: {
131
+ type: String,
132
+ default: '',
133
+ },
124
134
  borderColor: {
125
135
  type: String,
126
136
  default: '#dddee1',
@@ -151,7 +161,7 @@
151
161
  return {
152
162
  width: getSize(getQuantity(this.width)),
153
163
  height: getSize(getQuantity(this.height)),
154
- background: this.disabled ? '#f3f3f3' : '#fff',
164
+ lineHeight: this.type !== 'textarea' ? getSize(getQuantity(this.height)) : null,
155
165
  };
156
166
  },
157
167
  wrapTextClass() {
@@ -174,6 +184,17 @@
174
184
  value(val) {
175
185
  this.setCurrentValue(val);
176
186
  },
187
+ useRegExp(val) {
188
+ if (val) {
189
+ this.validateError(this.currentValue);
190
+ }
191
+ },
192
+ regExp() {
193
+ this.validateError(this.currentValue);
194
+ },
195
+ errorMsg(val) {
196
+ this.errorMsgWrapper = val;
197
+ },
177
198
  },
178
199
  created() {
179
200
  this.validateError(this.currentValue);
@@ -253,22 +274,16 @@
253
274
  this.cssError = false;
254
275
  return false;
255
276
  }
256
-
257
- const filteredValue = checked[0];
258
- if (filteredValue.length !== 0) {
259
- this.textError = true;
260
- this.cssError = true;
261
- return true;
262
- }
263
-
264
- this.textError = false;
265
- this.cssError = false;
266
- return false;
277
+ this.textError = true;
278
+ this.cssError = true;
279
+ return true;
267
280
  },
268
281
  },
269
282
  };
270
283
  </script>
271
- <style>
284
+ <style lang="scss">
285
+ @import '~@/styles/default';
286
+
272
287
  .ev-input {
273
288
  display: inline-block;
274
289
  position: relative;
@@ -278,23 +293,27 @@
278
293
  padding: 0;
279
294
  width: 100%;
280
295
  height: 100%;
281
- border-radius: 4px;
282
- border: 2px solid #dddee1;
283
- color: #495060;
296
+ border-radius: $border-radius-base;
284
297
  font-size: 12px;
285
298
  line-height: 2;
286
299
  cursor: text;
287
300
  background-image: none;
288
301
  transition: border 0.2s ease-in-out, background 0.2s ease-in-out, box-shadow 0.2s ease-in-out;
289
- }
290
302
 
291
- .ev-input:hover {
292
- border-color : #adaeb1;
303
+ @include evThemify() {
304
+ color: evThemed('font-color-base');
305
+ border: $border-solid evThemed('textfield-input-border');
306
+ background-color: evThemed('textfield-input-background');
307
+ }
293
308
  }
294
309
 
295
- .ev-input.focus, .ev-input.focus:hover {
296
- border-color : #2d8cf0;
310
+ .ev-input.focus,
311
+ .ev-input.focus:hover {
297
312
  opacity: 1;
313
+
314
+ @include evThemify() {
315
+ border-color: evThemed('color-primary');
316
+ }
298
317
  }
299
318
 
300
319
  .ev-input-text {
@@ -304,29 +323,12 @@
304
323
  text-align: left;
305
324
  outline: 0;
306
325
  -moz-appearance: textfield;
307
- color: #666;
308
326
  border: 0;
309
- border-radius: 4px;
310
- }
311
-
312
- .ev-input-text[disabled] {
313
- background-color: #f3f3f3;
314
- opacity: 1;
315
- cursor: not-allowed;
316
- color: #495060;
317
- }
327
+ background-color: transparent;
318
328
 
319
- .ev-input-disabled .ev-input-text {
320
- background-color: #f3f3f3;
321
- cursor: not-allowed;
322
- color: #5f5d5d;
323
- }
324
-
325
- .ev-input-disabled .ev-input-text.evui-input-textarea.ev-input-password {
326
- background-color: #f3f3f3;
327
- opacity: 1;
328
- cursor: not-allowed;
329
- color: #5f5d5d;
329
+ @include evThemify() {
330
+ color: evThemed('font-color-base');
331
+ }
330
332
  }
331
333
 
332
334
  .ev-input-password {
@@ -336,62 +338,80 @@
336
338
  text-align: left;
337
339
  outline: 0;
338
340
  -moz-appearance: textfield;
339
- color: #666;
340
341
  border: 0;
341
- border-radius: 4px;
342
- }
342
+ background-color: transparent;
343
343
 
344
- .ev-input-password[disabled] {
345
- background-color: #f3f3f3;
346
- opacity: 1;
347
- cursor: not-allowed;
348
- color: #495060;
344
+ @include evThemify() {
345
+ color: evThemed('font-color-base');
346
+ }
349
347
  }
350
348
 
351
- .ev-input-disabled .ev-input-password {
352
- background-color: #f3f3f3;
353
- cursor: not-allowed;
354
- color: #5f5d5d;
355
- }
349
+ .ev-input-textarea {
350
+ display: block;
351
+ text-align: left;
352
+ line-height: 1.5;
353
+ padding: 4px 7px;
354
+ outline: 0;
355
+ border: 0;
356
+ overflow: hidden;
357
+ border-radius: 4px;
358
+ background-color: transparent;
359
+ resize: none;
356
360
 
357
- .ev-input-disabled:hover, .ev-input:hover.error,
358
- .ev-input.focus.error, .ev-input.error {
359
- border-color : #d77f7f;
361
+ @include evThemify() {
362
+ color: evThemed('font-color-base');
363
+ }
360
364
  }
361
365
 
362
- .ev-input-disabled .ev-input {
363
- opacity: .72;
366
+ .ev-input-disabled {
364
367
  cursor: not-allowed;
365
- background-color: #f3f3f3;
366
- }
367
368
 
368
- .ev-input.ev-input-disabled {
369
- background-color: #f3f3f3;
369
+ @include evThemify() {
370
+ color: evThemed('textfield-input-disabled');
371
+ background-color: evThemed('textfield-input-disabled-background');
372
+ }
373
+
374
+ input,
375
+ textarea {
376
+ opacity: .72;
377
+ cursor: not-allowed;
378
+
379
+ @include evThemify() {
380
+ color: evThemed('textfield-input-disabled');
381
+ }
382
+ }
383
+
384
+ .ev-input,
385
+ .ev-input-text {
386
+ opacity: .72;
387
+ cursor: not-allowed;
388
+ }
389
+
390
+ .ev-input-text.evui-input-textarea.ev-input-password {
391
+ opacity: 1;
392
+ }
370
393
  }
371
394
 
372
- .ev-input-disabled {
373
- opacity: .72;
374
- color: #5f5d5d !important;
395
+ .ev-input-text[disabled] {
396
+ opacity: 1;
375
397
  cursor: not-allowed;
376
398
  }
377
399
 
378
- .ev-input-textarea {
379
- display: block;
380
- text-align: left;
381
- line-height: 1.5;
382
- padding: 4px 7px;
383
- outline: 0;
384
- color: #666;
385
- border: 0;
386
- overflow: hidden;
387
- border-radius: 4px;
400
+ .ev-input-password[disabled] {
401
+ opacity: 1;
402
+ cursor: not-allowed;
388
403
  }
389
404
 
390
405
  .ev-input-textarea[disabled] {
391
- background-color: #f3f3f3;
392
406
  opacity: 1;
393
407
  cursor: not-allowed;
394
- color: #5f5d5d;
408
+ }
409
+
410
+ .ev-input-disabled:hover,
411
+ .ev-input:hover.error,
412
+ .ev-input.focus.error,
413
+ .ev-input.error {
414
+ border-color: $color-not-allow;
395
415
  }
396
416
 
397
417
  .ev-input-valid-check {
@@ -401,18 +421,21 @@
401
421
  .ev-input-valid-error {
402
422
  padding-left: 3px;
403
423
  padding-right: 5px;
404
- color: #ed1313;
405
- float:left
424
+ color: $color-not-allow;
425
+ float: left;
406
426
  }
407
427
 
408
428
  .ev-input-valid-max-length {
409
429
  padding-left: 5px;
410
430
  padding-right: 3px;
411
- float:right
412
- }
431
+ float: right;
413
432
 
414
- .ev-input-valid-max-length.error {
415
- color: #ed1313;
433
+ @include evThemify() {
434
+ color: evThemed('font-color-base');
435
+ }
436
+
437
+ &.error {
438
+ color: $color-not-allow;
439
+ }
416
440
  }
417
441
  </style>
418
-
@@ -1,3 +1,3 @@
1
- import Timepicker from './timepicker';
1
+ import timepicker from './timepicker';
2
2
 
3
- export default Timepicker;
3
+ export default timepicker;
@@ -100,8 +100,7 @@
100
100
  const idx = this.findIndexToValue(clickedNumber);
101
101
  if (idx !== null) {
102
102
  // move scroll
103
- this.$refs.spinnerContent.scrollTop
104
- = this.$refs.spinnerLi[idx].offsetTop - 76;
103
+ this.$refs.spinnerContent.scrollTop = this.$refs.spinnerLi[idx].offsetTop - 76;
105
104
  this.initAllClass();
106
105
  this.activeClass(clickedNumber);
107
106
  if (clickFlag) {
@@ -149,31 +148,29 @@
149
148
  max-height: 185px;
150
149
  }
151
150
 
152
- .evui-timepicker-spinner-content{
151
+ .evui-timepicker-spinner-content {
153
152
  overflow: scroll;
154
153
  height: 100%;
155
154
  max-height: inherit;
156
- font-size: 0px; /*width 33.3% inline-block 시 필요*/
155
+ font-size: 0; /* width 33.3% inline-block 시 필요 */
157
156
  }
158
- .evui-timepicker-spinner-content::-webkit-scrollbar
159
- {
157
+ .evui-timepicker-spinner-content::-webkit-scrollbar {
160
158
  width: 5px;
161
- height: 0px;
159
+ height: 0;
162
160
  background-color: rgba(0,0,0,0);
163
161
  }
164
162
 
165
- .evui-timepicker-spinner-content:hover
166
- {
163
+ .evui-timepicker-spinner-content:hover {
167
164
  overflow: scroll;
168
165
  }
169
- .evui-timepicker-spinner-content:hover::-webkit-scrollbar
170
- {
166
+
167
+ .evui-timepicker-spinner-content:hover::-webkit-scrollbar {
171
168
  width: 5px;
172
- height: 0px;
173
- background-color: #ffffff;
169
+ height: 0;
170
+ background-color: #FFFFFF;
174
171
  }
175
- .evui-timepicker-spinner-content:hover::-webkit-scrollbar-thumb
176
- {
172
+
173
+ .evui-timepicker-spinner-content:hover::-webkit-scrollbar-thumb {
177
174
  border-radius: 4px;
178
175
  background-color: rgba(0,0,0,.1);
179
176
  -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.1);
@@ -186,6 +183,7 @@
186
183
  text-align: center;
187
184
  cursor: pointer;
188
185
  }
186
+
189
187
  .evui-timepicker-spinner-list .evui-timepicker-spinner-item {
190
188
  display: list-item;
191
189
  height: 32px;
@@ -195,11 +193,11 @@
195
193
  }
196
194
 
197
195
  .evui-timepicker-spinner-list .evui-timepicker-spinner-item:hover {
198
- background-color: #f5f7fa;
196
+ background-color: #F5F7FA;
199
197
  }
200
198
  .evui-timepicker-spinner-list .evui-timepicker-spinner-item.active,
201
199
  .evui-timepicker-spinner-list .evui-timepicker-spinner-item.active:hover {
202
200
  background-color: #41B883;
203
- color: #ffffff;
201
+ color: #FFFFFF;
204
202
  }
205
203
  </style>
@@ -1,21 +1,20 @@
1
1
  <template>
2
2
  <div
3
- v-click-outside="hideTimePicker"
4
3
  ref="timePickerDiv"
5
- class="evui-timepicker"
4
+ v-click-outside="hideTimePicker"
5
+ class="ev-timepicker"
6
6
  @click="showTimePicker"
7
7
  @mouseover="suffixFadeFlag = true"
8
8
  @mouseleave="suffixFadeFlag = false"
9
9
  >
10
10
  <div
11
- class="evui-timepicker-prefix"
11
+ class="ev-timepicker-prefix"
12
12
  />
13
13
  <div
14
14
  v-show="suffixShowFlag"
15
- ref="suffix"
16
15
  :class="suffixFadeFlag ? 'suffix-fadein' : 'suffix-fadeout'"
17
- class="evui-timepicker-suffix"
18
- @click.stop="hideTimePicker"
16
+ class="ev-timepicker-suffix"
17
+ @click.stop="initSuffix"
19
18
  />
20
19
  <div
21
20
  :class="wrapClasses"
@@ -31,18 +30,19 @@
31
30
  </div>
32
31
  <div
33
32
  ref="timePickerPanel"
34
- class="evui-timepicker-panel"
33
+ :class="{ excludeFooter: !showFooter }"
34
+ class="ev-timepicker-panel"
35
35
  >
36
- <div class="evui-timepicker-content">
37
- <div class="evui-timepicker-spinner">
38
- <spinner
36
+ <div class="ev-timepicker-content">
37
+ <div class="ev-timepicker-spinner">
38
+ <ev-spinner
39
39
  v-for="(item, index) in dataSpinnerArr"
40
40
  v-show="dataSpinnerArr"
41
41
  ref="timePickerSpinner"
42
42
  :key="index"
43
43
  :from="item.from"
44
44
  :to="item.to"
45
- :mid="(index === 0 || index === dataSpinnerArr.length - 1) ? false : true"
45
+ :mid="(!(index === 0 || index === dataSpinnerArr.length - 1))"
46
46
  :selected-number="lpad10(item.initNumber)"
47
47
  :selection-start-index="index"
48
48
  @setInput="setInputText"
@@ -51,22 +51,34 @@
51
51
  />
52
52
  </div>
53
53
  </div>
54
- <div class="evui-timepicker-footer">
55
- <button class="evui-timepicker-btn-cancel">Cancel</button>
56
- <button class="evui-timepicker-btn-ok">OK</button>
54
+ <div
55
+ v-if="showFooter"
56
+ class="ev-timepicker-footer"
57
+ >
58
+ <button
59
+ class="ev-timepicker-btn-cancel"
60
+ @click.prevent="clickCancel"
61
+ >
62
+ Cancel
63
+ </button>
64
+ <button
65
+ class="ev-timepicker-btn-ok"
66
+ >
67
+ OK
68
+ </button>
57
69
  </div>
58
70
  </div>
59
71
  </div>
60
72
  </template>
61
73
 
62
74
  <script>
63
- import spinner from '@/components/timepicker/spinner';
75
+ import EvSpinner from './spinner';
64
76
 
65
- const prefixCls = 'evui-input-text';
77
+ const prefixCls = 'ev-input-text';
66
78
 
67
79
  export default {
68
80
  components: {
69
- spinner,
81
+ EvSpinner,
70
82
  },
71
83
  directives: {
72
84
  // 해당 element 외의 클릭 시
@@ -100,12 +112,22 @@
100
112
  },
101
113
  spinnerArr: {
102
114
  type: Array,
103
- default: null,
115
+ default() {
116
+ return [
117
+ { from: 0, to: 23 },
118
+ { from: 0, to: 59 },
119
+ { from: 0, to: 59 },
120
+ ];
121
+ },
104
122
  },
105
123
  disabled: {
106
124
  type: Boolean,
107
125
  default: false,
108
126
  },
127
+ showFooter: {
128
+ type: Boolean,
129
+ default: true,
130
+ },
109
131
  },
110
132
  data() {
111
133
  return {
@@ -117,7 +139,6 @@
117
139
  selectedLiIndex: null, // 선택된 spinner의 index(ul의 index cf> 0, 1, 2)
118
140
  cursorPosition: 0,
119
141
  suffixFadeFlag: false,
120
- timePickerFadeFlag: false,
121
142
  suffixShowFlag: false,
122
143
  };
123
144
  },
@@ -171,8 +192,8 @@
171
192
 
172
193
  // maxLength만큼 hhmiss가 모두 있는 경우 숫자를 입력 시 insert Mode처럼 덮어씌우기
173
194
  const postText = numberText.slice(
174
- numberText.length > this.inputNumberMaxLength ?
175
- changedCursorPosition + +1 : changedCursorPosition,
195
+ numberText.length > this.inputNumberMaxLength
196
+ ? changedCursorPosition + +1 : changedCursorPosition,
176
197
  );
177
198
 
178
199
  this.formattedText = null; // 필수
@@ -228,15 +249,16 @@
228
249
  for (let ix = 0, ixLen = this.$refs.timePickerSpinner.length; ix < ixLen; ix++) {
229
250
  this.$refs.timePickerSpinner[ix].liClick(true);
230
251
  }
231
- this.timePickerFadeFlag = true;
232
252
  }
233
253
  },
234
254
  hideTimePicker() {
235
255
  this.$refs.timePickerPanel.style.display = 'none';
236
- this.timePickerFadeFlag = false;
256
+ },
257
+ initSuffix() {
258
+ this.timeText = '000000';
237
259
  },
238
260
  removeColon(val) {
239
- return val.replace(/:/gi, '');
261
+ return val ? val.replace(/:/gi, '') : '';
240
262
  },
241
263
  addColon(val) {
242
264
  const number = this.removeColon(val);
@@ -388,34 +410,53 @@
388
410
  this.dataSpinnerArr[index].initNumber = number;
389
411
  }
390
412
  },
413
+ clickCancel() {
414
+ this.hideTimePicker();
415
+ this.initSuffix();
416
+ },
391
417
  },
392
418
  };
393
419
  </script>
394
420
 
395
- <style scoped>
421
+ <style lang="scss">
422
+ @import '~@/styles/default';
396
423
 
397
- .evui-timepicker {
424
+ .ev-timepicker {
425
+ position: relative;
398
426
  width: 220px;
399
427
  height: 40px;
428
+
429
+ @include evThemify() {
430
+ color: evThemed('font-color-base');
431
+ }
432
+
433
+ .ev-input-text {
434
+ height: 100%;
435
+ padding: 0;
436
+ }
400
437
  }
401
438
 
402
- .evui-timepicker input[type=text]{
439
+ .ev-timepicker input[type=text] {
403
440
  display: inline-block;
404
441
  width: 100%;
405
442
  height: 100%;
406
443
  padding: 0 30px 0 30px;
407
- border: 1px solid #dcdfe6;
408
- border-radius: 4px;
409
- background-color: #ffffff;
444
+ border-radius: $border-radius-base;
445
+ background-color: transparent;
410
446
  background-image: none;
447
+
448
+ @include evThemify() {
449
+ color: evThemed('font-color-base');
450
+ border: $border-solid evThemed('datepicker-input-border');
451
+ }
411
452
  }
412
453
 
413
- .evui-timepicker input[type=text]:focus,
414
- .evui-timepicker input[type=text]:hover{
454
+ .ev-timepicker input[type=text]:focus,
455
+ .ev-timepicker input[type=text]:hover {
415
456
  outline: none;
416
457
  }
417
458
 
418
- .evui-timepicker div.evui-timepicker-prefix {
459
+ .ev-timepicker div.ev-timepicker-prefix {
419
460
  position: absolute;
420
461
  width: 26px;
421
462
  height: 26px;
@@ -424,7 +465,7 @@
424
465
  background-position: -196px -102px;
425
466
  }
426
467
 
427
- .evui-timepicker div.evui-timepicker-suffix {
468
+ .ev-timepicker div.ev-timepicker-suffix {
428
469
  position: absolute;
429
470
  left: 190px;
430
471
  width: 26px;
@@ -433,59 +474,63 @@
433
474
  background-image: url(../../images/evui_icon.png);
434
475
  background-position: 7px -362px;
435
476
  }
436
- .evui-timepicker div.evui-timepicker-suffix.suffix-fadein {
437
- display: block;
477
+ .ev-timepicker div.ev-timepicker-suffix.suffix-fadein {
478
+ display: block !important;
438
479
  cursor: pointer;
439
480
  }
440
- .evui-timepicker div.evui-timepicker-suffix.suffix-fadeout {
441
- display: none;
481
+ .ev-timepicker div.ev-timepicker-suffix.suffix-fadeout {
482
+ display: none !important;
442
483
  cursor: default;
443
484
  }
444
485
 
445
- .evui-timepicker-panel {
486
+ .ev-timepicker-panel {
446
487
  display: none;
447
488
  position: absolute;
448
- z-index: 300;
489
+ z-index: 850;
449
490
  width: 180px;
450
491
  height: 224px;
451
492
  margin: 12px 0 0 0;
452
- border: 1px solid #dcdfe6;
493
+ border: 1px solid #DCDFE6;
453
494
  border-radius: 4px;
454
- background-color: #ffffff;
495
+ background-color: #FFFFFF;
455
496
  box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);
456
497
  }
498
+ .ev-timepicker-panel.excludeFooter {
499
+ height: 190px;
500
+ }
457
501
 
458
- .evui-timepicker-content {
502
+ .ev-timepicker-content {
459
503
  display: block;
460
504
  overflow: hidden;
461
505
  position: relative;
462
506
  height: 188px;
463
507
  }
464
- .evui-timepicker-content .evui-timepicker-spinner {
508
+ .ev-timepicker-content .ev-timepicker-spinner {
465
509
  width: 100%;
466
510
  height: 100%;
467
511
  padding-left: 5px;
468
- font-size: 0; /*필수 width:33.3%*/
512
+ font-size: 0; /* 필수 width:33.3% */
469
513
  white-space: nowrap;
470
514
  }
471
- .evui-timepicker-footer {
472
- display: block;
515
+ .ev-timepicker-footer {
516
+ display: flex;
473
517
  height: 34px;
474
- background-color: #f5f7fa;
518
+ background-color: #F5F7FA;
475
519
  text-align: right;
520
+ justify-content: flex-end;
476
521
  }
477
- .evui-timepicker-footer .evui-timepicker-btn-cancel {
478
- padding: 8px 8px 0 0;
522
+ .ev-timepicker-footer .ev-timepicker-btn-cancel {
523
+ padding: 0 8px;
479
524
  border: none;
480
525
  background-color: transparent;
481
526
  font-size: 12px;
482
527
  cursor: pointer;
483
528
  }
484
- .evui-timepicker-footer .evui-timepicker-btn-ok {
485
- padding: 8px 8px 0 0;
529
+ .ev-timepicker-footer .ev-timepicker-btn-ok {
530
+ padding: 0 8px;
486
531
  border: none;
487
532
  background-color: transparent;
488
- color: #409eff;
533
+ color: #409EFF;
489
534
  font-size: 12px;
490
535
  cursor: pointer;
491
536
  }