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.
- package/dist/0b8d1200e71cae8d747dce4e69c4efb6.png +0 -0
- package/dist/1.css +4 -0
- package/dist/1.css.map +1 -0
- package/dist/1.evui.min.js +2 -0
- package/dist/1.evui.min.js.map +1 -0
- package/dist/1ba679c05036b34bf359aa2e6c450faa.ttf +0 -0
- package/dist/2.css +4 -0
- package/dist/2.css.map +1 -0
- package/dist/2.evui.min.js +2 -0
- package/dist/2.evui.min.js.map +1 -0
- package/dist/278156e41e0ad908cf7f841b17130502.woff2 +0 -0
- package/dist/3.evui.min.js +2 -0
- package/dist/3.evui.min.js.map +1 -0
- package/dist/32be89b11725274cd3e801192ba88361.ttf +0 -0
- package/dist/38c6d8bab26db77d8c806813e1497763.woff2 +0 -0
- package/dist/4.evui.min.js +2 -0
- package/dist/4.evui.min.js.map +1 -0
- package/dist/425399f81e4ce7cbd967685402ba0260.woff +0 -0
- package/dist/4730076470a665bbc7b783c56d29a72e.svg +261 -0
- package/dist/52e9a7f6ff3af5ad261e5292d07ebdca.eot +0 -0
- package/dist/5367103510b27b78482794590e1ce3b0.ttf +0 -0
- package/dist/57e963e3d6dd0a9cf05150b40eebf69b.svg +1008 -0
- package/dist/65a2fb6d9aaa164b41a039302093995b.ttf +0 -0
- package/dist/687a4990ea22bb1a49d469a5d9319790.woff2 +0 -0
- package/dist/6c1d906bf5ba48676f65b2d65e935e1a.ttf +0 -0
- package/dist/6dafca5a4f1e31f2bdf11939b24ff422.ttf +0 -0
- package/dist/752905fa5edf21fc52a10a0c1ca9c7a4.eot +0 -0
- package/dist/76c05d80dda67cdc5d03f345b7bd063f.ttf +0 -0
- package/dist/7d62eb50e7bb05eedb2a4656f7fe8f3b.svg +366 -0
- package/dist/a01e3f2d6c83dc3aee175e2482b3f777.eot +0 -0
- package/dist/b30fd8419d7e6d5918856c7531d33482.svg +1518 -0
- package/dist/c57dd55fa982e8940f69ca1d69a8a999.woff +0 -0
- package/dist/c656b8caa454ed19b9a2ef7f4f5b8fea.ttf +0 -0
- package/dist/cac87dc00c87a5d74711d0276713808a.woff +0 -0
- package/dist/d68fa3e67dbb653a13cec44b1bcabcfe.eot +0 -0
- package/dist/ddae9b1ba9b0b42f58809904b0b21349.woff +0 -0
- package/dist/evui.min.js +19 -0
- package/dist/evui.min.js.gz +0 -0
- package/dist/evui.min.js.map +1 -0
- package/dist/main.css +85 -0
- package/dist/main.css.gz +0 -0
- package/dist/main.css.map +1 -0
- package/package.json +56 -76
- package/src/common/emitter.js +20 -0
- package/src/common/utils.debounce.js +223 -0
- package/src/common/utils.js +51 -17
- package/src/common/utils.throttle.js +83 -0
- package/src/common/utils.tree.js +18 -0
- package/src/components/button/button.vue +317 -241
- package/src/components/chart/chart.core.js +378 -85
- package/src/components/chart/chart.vue +133 -115
- package/src/components/chart/element/element.bar.js +219 -25
- package/src/components/chart/element/element.bar.time.js +115 -0
- package/src/components/chart/element/element.line.js +172 -21
- package/src/components/chart/element/element.pie.js +86 -0
- package/src/components/chart/element/element.scatter.js +9 -2
- package/src/components/chart/element/element.tip.js +356 -0
- package/src/components/chart/helpers/helpers.canvas.js +94 -0
- package/src/components/chart/helpers/helpers.constant.js +25 -6
- package/src/components/chart/helpers/helpers.util.js +83 -38
- package/src/components/chart/index.js +0 -1
- package/src/components/chart/model/model.series.js +43 -14
- package/src/components/chart/model/model.store.js +440 -46
- package/src/components/chart/plugins/plugins.interaction.js +324 -0
- package/src/components/chart/plugins/plugins.legend.js +233 -91
- package/src/components/chart/plugins/plugins.pie.js +179 -0
- package/src/components/chart/plugins/plugins.title.js +25 -2
- package/src/components/chart/plugins/plugins.tooltip.js +384 -0
- package/src/components/chart/scale/scale.js +91 -29
- package/src/components/chart/scale/scale.linear.js +12 -0
- package/src/components/chart/scale/scale.logarithmic.js +25 -0
- package/src/components/chart/scale/scale.step.js +89 -52
- package/src/components/chart/scale/scale.time.category.js +204 -0
- package/src/components/chart/scale/scale.time.js +19 -1
- package/src/components/checkbox/checkbox-group.vue +15 -11
- package/src/components/checkbox/checkbox.vue +210 -138
- package/src/components/codeview/code.vue +42 -29
- package/src/components/contextmenu/contextmenu.child.vue +79 -0
- package/src/components/contextmenu/contextmenu.vue +276 -0
- package/src/components/contextmenu/contextmenu.wrap.vue +189 -0
- package/src/components/contextmenu/index.js +3 -0
- package/src/components/datepicker/calendar.core.js +588 -492
- package/src/components/datepicker/calendar.vue +0 -3
- package/src/components/datepicker/datepicker.vue +43 -15
- package/src/components/datepicker/index.js +5 -1
- package/src/components/grid/grid.filter.vue +290 -0
- package/src/components/grid/grid.filter.window.vue +411 -0
- package/src/components/grid/grid.render.vue +45 -0
- package/src/components/grid/grid.vue +1338 -0
- package/src/components/icon/icon.vue +23 -7
- package/src/components/input/input.number.vue +309 -277
- package/src/components/label/label.vue +2 -2
- package/src/components/loadingmask/loadingmask.vue +6 -13
- package/src/components/loginfield/loginfield.vue +46 -37
- package/src/components/markdown/index.js +3 -0
- package/src/components/markdown/markdown.vue +1001 -0
- package/src/components/menu/index.js +1 -3
- package/src/components/menu/menu.nav.item.vue +115 -0
- package/src/components/menu/menu.nav.sub.vue +42 -0
- package/src/components/menu/menu.nav.vue +71 -98
- package/src/components/message/index.js +3 -0
- package/src/components/message/message.js +63 -0
- package/src/components/message/message.vue +191 -0
- package/src/components/message-box/index.js +3 -0
- package/src/components/message-box/message-box.js +31 -0
- package/src/components/message-box/message-box.vue +299 -0
- package/src/components/notification/index.js +3 -0
- package/src/components/notification/notification.js +75 -0
- package/src/components/notification/notification.vue +242 -0
- package/src/components/radio/radio-group.vue +6 -2
- package/src/components/radio/radio.vue +156 -76
- package/src/components/selectbox/dropdown.vue +86 -40
- package/src/components/selectbox/listbox.vue +47 -18
- package/src/components/selectbox/option.vue +1 -1
- package/src/components/selectbox/selectbox.vue +304 -316
- package/src/components/slider/slider-tooltip.vue +7 -7
- package/src/components/slider/slider.vue +20 -25
- package/src/components/splitter/splitter.vue +104 -94
- package/src/components/table/table.black.css +1 -1
- package/src/components/table/table.filter.lite.vue +7 -7
- package/src/components/table/table.filter.vue +1 -1
- package/src/components/table/table.grey.css +5 -6
- package/src/components/table/table.navy.css +1 -1
- package/src/components/table/table.vue +55 -48
- package/src/components/tabs/tab-panel.vue +19 -5
- package/src/components/tabs/tabs.vue +182 -87
- package/src/components/textfield/textfield.vue +110 -87
- package/src/components/timepicker/index.js +2 -2
- package/src/components/timepicker/spinner.vue +15 -17
- package/src/components/timepicker/timepicker.vue +98 -53
- package/src/components/toggle/toggle.vue +148 -109
- package/src/components/tree/index.js +2 -6
- package/src/components/tree/render.js +17 -0
- package/src/components/tree/tree-node.vue +214 -0
- package/src/components/tree/tree.vue +296 -0
- package/src/components/tree-table/index.js +7 -0
- package/src/components/{tree → tree-table}/tree.table.black.css +0 -0
- package/src/components/{tree → tree-table}/tree.table.grey.css +0 -0
- package/src/components/{tree → tree-table}/tree.table.vue +36 -41
- package/src/components/{tree → tree-table}/tree.util.js +0 -0
- package/src/components/window/window.vue +238 -191
- package/src/index.js +25 -12
- package/src/styles/base/base.scss +50 -0
- package/src/styles/base/index.scss +1 -0
- package/src/styles/default.scss +5 -0
- package/src/styles/{codemirror.css → lib/codemirror.css} +0 -0
- package/src/styles/{all.css → lib/fontawesome.css} +1 -1
- package/src/styles/lib/icon.css +792 -0
- package/src/styles/themes/index.scss +2 -0
- package/src/styles/themes/mixin.scss +33 -0
- package/src/styles/themes/variables.scss +206 -0
- package/src/styles/utils/colors.scss +222 -0
- package/src/styles/utils/index.scss +2 -0
- package/src/styles/utils/mixins.scss +34 -0
- package/src/styles/utils/variables.scss +27 -0
- package/src/webfonts/EVUI.eot +0 -0
- package/src/webfonts/EVUI.svg +251 -173
- package/src/webfonts/EVUI.ttf +0 -0
- package/src/webfonts/EVUI.woff +0 -0
- package/src/webfonts/Roboto-Bold.ttf +0 -0
- package/src/webfonts/Roboto-Medium.ttf +0 -0
- package/src/webfonts/Roboto-Regular.ttf +0 -0
- package/src/components/chart/charts/chart.bar.js +0 -334
- package/src/components/chart/charts/chart.base.js +0 -1075
- package/src/components/chart/charts/chart.line.js +0 -262
- package/src/components/chart/charts/chart.pie.js +0 -383
- package/src/components/chart/charts/chart.scatter.js +0 -349
- package/src/components/chart/charts/chart.sunburst.js +0 -193
- package/src/components/chart/core/axis/axis.js +0 -217
- package/src/components/chart/core/axis/axis.scale.auto.js +0 -69
- package/src/components/chart/core/axis/axis.scale.fixed.js +0 -65
- package/src/components/chart/core/axis/axis.scale.steps.js +0 -149
- package/src/components/chart/core/core.constant.js +0 -116
- package/src/components/chart/core/core.legend.js +0 -473
- package/src/components/chart/core/core.util.js +0 -66
- package/src/components/chart/core/data/data.js +0 -412
- package/src/components/chart/core/data/data.pie.js +0 -70
- package/src/components/chart/core/data/data.stack.js +0 -222
- package/src/components/chart/core/data/data.sunburst.js +0 -172
- package/src/components/menu/menu.context.children.vue +0 -201
- package/src/components/menu/menu.context.vue +0 -144
- package/src/components/tabs/jun/tab.vue +0 -123
- package/src/components/tabs/jun/tabs.vue +0 -484
- package/src/styles/evui.css +0 -386
- 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
|
-
|
|
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
|
-
|
|
258
|
-
|
|
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:
|
|
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
|
-
|
|
292
|
-
|
|
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,
|
|
296
|
-
|
|
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
|
-
|
|
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
|
-
|
|
320
|
-
|
|
321
|
-
|
|
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
|
-
|
|
342
|
-
}
|
|
342
|
+
background-color: transparent;
|
|
343
343
|
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
cursor: not-allowed;
|
|
348
|
-
color: #495060;
|
|
344
|
+
@include evThemify() {
|
|
345
|
+
color: evThemed('font-color-base');
|
|
346
|
+
}
|
|
349
347
|
}
|
|
350
348
|
|
|
351
|
-
.ev-input-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
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
|
-
|
|
358
|
-
|
|
359
|
-
|
|
361
|
+
@include evThemify() {
|
|
362
|
+
color: evThemed('font-color-base');
|
|
363
|
+
}
|
|
360
364
|
}
|
|
361
365
|
|
|
362
|
-
.ev-input-disabled
|
|
363
|
-
opacity: .72;
|
|
366
|
+
.ev-input-disabled {
|
|
364
367
|
cursor: not-allowed;
|
|
365
|
-
background-color: #f3f3f3;
|
|
366
|
-
}
|
|
367
368
|
|
|
368
|
-
|
|
369
|
-
|
|
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:
|
|
374
|
-
color: #5f5d5d !important;
|
|
395
|
+
.ev-input-text[disabled] {
|
|
396
|
+
opacity: 1;
|
|
375
397
|
cursor: not-allowed;
|
|
376
398
|
}
|
|
377
399
|
|
|
378
|
-
.ev-input-
|
|
379
|
-
|
|
380
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
415
|
-
|
|
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
|
|
1
|
+
import timepicker from './timepicker';
|
|
2
2
|
|
|
3
|
-
export default
|
|
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:
|
|
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:
|
|
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
|
-
|
|
170
|
-
{
|
|
166
|
+
|
|
167
|
+
.evui-timepicker-spinner-content:hover::-webkit-scrollbar {
|
|
171
168
|
width: 5px;
|
|
172
|
-
height:
|
|
173
|
-
background-color: #
|
|
169
|
+
height: 0;
|
|
170
|
+
background-color: #FFFFFF;
|
|
174
171
|
}
|
|
175
|
-
|
|
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: #
|
|
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: #
|
|
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
|
-
|
|
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="
|
|
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="
|
|
18
|
-
@click.stop="
|
|
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="
|
|
33
|
+
:class="{ excludeFooter: !showFooter }"
|
|
34
|
+
class="ev-timepicker-panel"
|
|
35
35
|
>
|
|
36
|
-
<div class="
|
|
37
|
-
<div class="
|
|
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)
|
|
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
|
|
55
|
-
|
|
56
|
-
|
|
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
|
|
75
|
+
import EvSpinner from './spinner';
|
|
64
76
|
|
|
65
|
-
const prefixCls = '
|
|
77
|
+
const prefixCls = 'ev-input-text';
|
|
66
78
|
|
|
67
79
|
export default {
|
|
68
80
|
components: {
|
|
69
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
421
|
+
<style lang="scss">
|
|
422
|
+
@import '~@/styles/default';
|
|
396
423
|
|
|
397
|
-
.
|
|
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
|
-
.
|
|
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:
|
|
408
|
-
|
|
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
|
-
.
|
|
414
|
-
.
|
|
454
|
+
.ev-timepicker input[type=text]:focus,
|
|
455
|
+
.ev-timepicker input[type=text]:hover {
|
|
415
456
|
outline: none;
|
|
416
457
|
}
|
|
417
458
|
|
|
418
|
-
.
|
|
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
|
-
.
|
|
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
|
-
.
|
|
437
|
-
display: block;
|
|
477
|
+
.ev-timepicker div.ev-timepicker-suffix.suffix-fadein {
|
|
478
|
+
display: block !important;
|
|
438
479
|
cursor: pointer;
|
|
439
480
|
}
|
|
440
|
-
.
|
|
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
|
-
.
|
|
486
|
+
.ev-timepicker-panel {
|
|
446
487
|
display: none;
|
|
447
488
|
position: absolute;
|
|
448
|
-
z-index:
|
|
489
|
+
z-index: 850;
|
|
449
490
|
width: 180px;
|
|
450
491
|
height: 224px;
|
|
451
492
|
margin: 12px 0 0 0;
|
|
452
|
-
border: 1px solid #
|
|
493
|
+
border: 1px solid #DCDFE6;
|
|
453
494
|
border-radius: 4px;
|
|
454
|
-
background-color: #
|
|
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
|
-
.
|
|
502
|
+
.ev-timepicker-content {
|
|
459
503
|
display: block;
|
|
460
504
|
overflow: hidden;
|
|
461
505
|
position: relative;
|
|
462
506
|
height: 188px;
|
|
463
507
|
}
|
|
464
|
-
.
|
|
508
|
+
.ev-timepicker-content .ev-timepicker-spinner {
|
|
465
509
|
width: 100%;
|
|
466
510
|
height: 100%;
|
|
467
511
|
padding-left: 5px;
|
|
468
|
-
font-size: 0;
|
|
512
|
+
font-size: 0; /* 필수 width:33.3% */
|
|
469
513
|
white-space: nowrap;
|
|
470
514
|
}
|
|
471
|
-
.
|
|
472
|
-
display:
|
|
515
|
+
.ev-timepicker-footer {
|
|
516
|
+
display: flex;
|
|
473
517
|
height: 34px;
|
|
474
|
-
background-color: #
|
|
518
|
+
background-color: #F5F7FA;
|
|
475
519
|
text-align: right;
|
|
520
|
+
justify-content: flex-end;
|
|
476
521
|
}
|
|
477
|
-
.
|
|
478
|
-
padding:
|
|
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
|
-
.
|
|
485
|
-
padding:
|
|
529
|
+
.ev-timepicker-footer .ev-timepicker-btn-ok {
|
|
530
|
+
padding: 0 8px;
|
|
486
531
|
border: none;
|
|
487
532
|
background-color: transparent;
|
|
488
|
-
color: #
|
|
533
|
+
color: #409EFF;
|
|
489
534
|
font-size: 12px;
|
|
490
535
|
cursor: pointer;
|
|
491
536
|
}
|