meixioacomponent 1.1.49 → 2.0.1

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 (107) hide show
  1. package/lib/components/index.d.ts +1 -1
  2. package/lib/components/index.d.ts.map +1 -1
  3. package/lib/components/index.js +3 -3
  4. package/lib/config/use/UseImg.d.ts.map +1 -1
  5. package/lib/config/use/UseImg.js +1 -0
  6. package/lib/meixioacomponent.common.js +17531 -38668
  7. package/lib/meixioacomponent.umd.js +17584 -38721
  8. package/lib/meixioacomponent.umd.min.js +6 -159
  9. package/lib/style/font-family.less +2 -1
  10. package/lib/style/index.less +9 -2
  11. package/lib/style/meixioacomponenticonfont/TCloudNumberVF.ttf +0 -0
  12. package/lib/style/tableStyle.less +15 -13
  13. package/lib/style/tdesignStyle.less +9 -0
  14. package/lib/style/variables.less +1 -1
  15. package/package.json +3 -3
  16. package/packages/components/base/baseAppendix/baseAppendix.vue +12 -11
  17. package/packages/components/base/baseArea/baseArea.vue +49 -54
  18. package/packages/components/base/baseAvatar/baseAvatar.vue +16 -14
  19. package/packages/components/base/baseButton/baseButton.vue +80 -0
  20. package/packages/components/base/baseButton/index.js +6 -0
  21. package/packages/components/base/baseButtonHandle/baseButtonHandle.vue +36 -4
  22. package/packages/components/base/baseDialog/index.vue +131 -102
  23. package/packages/components/base/baseDialogTable/dialogTable.vue +1 -0
  24. package/packages/components/base/baseDrawer/index.vue +119 -89
  25. package/packages/components/base/baseEdito/baseEdito.vue +56 -50
  26. package/packages/components/base/baseFixedHeader/baseFixedHeader.vue +44 -37
  27. package/packages/components/base/baseImageViewer/image-viewer.vue +29 -311
  28. package/packages/components/base/baseImg/baseImg.vue +8 -7
  29. package/packages/components/base/baseInforWrap/baseInforWrap.vue +14 -7
  30. package/packages/components/base/baseLineInfoItem/baseLineInfoItem.vue +4 -4
  31. package/packages/components/base/baseList/index.vue +10 -23
  32. package/packages/components/base/baseMoverVerifiBar/baseMoverVerifiBar.vue +7 -13
  33. package/packages/components/base/baseNumberInput/index.vue +42 -158
  34. package/packages/components/base/basePagination/index.vue +24 -31
  35. package/packages/components/base/basePlainTable/basePlainTable.vue +89 -183
  36. package/packages/components/base/basePopoverButton/index.vue +45 -36
  37. package/packages/components/base/baseSection/baseSection.vue +17 -8
  38. package/packages/components/base/baseSingleImgUpload/index.vue +2 -2
  39. package/packages/components/base/baseSkeleton/baseSkeleton.vue +0 -1
  40. package/packages/components/base/baseStoreSelect/index.vue +48 -64
  41. package/packages/components/base/baseTag/index.vue +12 -96
  42. package/packages/components/base/baseText/index.vue +66 -79
  43. package/packages/components/base/baseTimeLine/baseTimeLineLeft.vue +1 -1
  44. package/packages/components/base/baseTimeLine/baseTimeLineRight.vue +1 -1
  45. package/packages/components/base/baseTimeTypeSelect/base_time_type_select.vue +73 -78
  46. package/packages/components/base/baseToggle/toggle.vue +28 -48
  47. package/packages/components/base/baseTreeSelect/index.vue +20 -147
  48. package/packages/components/base/baseUpload/baseUploadItem.vue +74 -77
  49. package/packages/components/base/baseUpload/mixins.js +0 -1
  50. package/packages/components/base/baseUpload/uploadMediaView.vue +14 -13
  51. package/packages/components/base/baseUploadImgAndName/index.vue +28 -11
  52. package/packages/components/base/baseUploadTemplate/index.vue +27 -11
  53. package/packages/components/base/baseVideo/index.vue +9 -7
  54. package/packages/components/base/upload/upload.vue +17 -14
  55. package/packages/components/base/upload/uploadItem.vue +40 -46
  56. package/packages/components/dialogCache/index.vue +30 -24
  57. package/packages/components/index.js +3 -3
  58. package/packages/components/index.ts +4 -3
  59. package/packages/components/mixins/tableSectionMixins.js +0 -12
  60. package/packages/components/proForm/dialogForm/baseDialogForm.vue +17 -14
  61. package/packages/components/proForm/proForm/proFormItem/pro_form_item.vue +95 -79
  62. package/packages/components/proForm/proForm/pro_form.vue +47 -52
  63. package/packages/components/proPageTable/oaProTableSearch/oa_pro-table-search.vue +2 -2
  64. package/packages/components/proPageTable/oaProTableSearch/oa_pro_screen.vue +19 -10
  65. package/packages/components/proPageTable/oaProTableSearch/oa_pro_screen_item.vue +28 -27
  66. package/packages/components/proPageTable/oa_pro_colum_config.vue +8 -10
  67. package/packages/components/proPageTable/oa_pro_footer.vue +15 -15
  68. package/packages/components/proPageTable/oa_pro_table-header.vue +19 -31
  69. package/packages/components/proPageTable/oa_pro_table.vue +208 -284
  70. package/packages/components/proPageTable/oa_pro_table_check_handle_bar.vue +28 -16
  71. package/packages/components/searchHeader/searchHeader.vue +16 -17
  72. package/packages/components/style/font-family.less +2 -1
  73. package/packages/components/style/index.less +9 -2
  74. package/packages/components/style/meixioacomponenticonfont/TCloudNumberVF.ttf +0 -0
  75. package/packages/components/style/tableStyle.less +15 -13
  76. package/packages/components/style/tdesignStyle.less +9 -0
  77. package/packages/components/style/variables.less +1 -1
  78. package/packages/config/use/UseImg.js +1 -0
  79. package/packages/config/use/UseImg.ts +1 -0
  80. package/packages/utils/upload.js +61 -72
  81. package/packages/utils/utils.js +316 -276
  82. package/lib/fonts/element-icons.f1a45d74.ttf +0 -0
  83. package/lib/fonts/element-icons.ff18efd1.woff +0 -0
  84. package/lib/style/element/common_class.less +0 -3
  85. package/lib/style/element/fonts/element-icons.ttf +0 -0
  86. package/lib/style/element/fonts/element-icons.woff +0 -0
  87. package/lib/style/element/index.css +0 -30219
  88. package/packages/components/base/elDatePicker/basic/date-table.vue +0 -441
  89. package/packages/components/base/elDatePicker/basic/month-table.vue +0 -269
  90. package/packages/components/base/elDatePicker/basic/time-spinner.vue +0 -304
  91. package/packages/components/base/elDatePicker/basic/year-table.vue +0 -111
  92. package/packages/components/base/elDatePicker/index.js +0 -6
  93. package/packages/components/base/elDatePicker/index.vue +0 -28
  94. package/packages/components/base/elDatePicker/panel/date-range.vue +0 -680
  95. package/packages/components/base/elDatePicker/panel/date.vue +0 -609
  96. package/packages/components/base/elDatePicker/panel/month-range.vue +0 -289
  97. package/packages/components/base/elDatePicker/panel/time-range.vue +0 -248
  98. package/packages/components/base/elDatePicker/panel/time-select.vue +0 -178
  99. package/packages/components/base/elDatePicker/panel/time.vue +0 -186
  100. package/packages/components/base/elDatePicker/picker/date-picker.js +0 -55
  101. package/packages/components/base/elDatePicker/picker/time-picker.js +0 -39
  102. package/packages/components/base/elDatePicker/picker/time-select.js +0 -21
  103. package/packages/components/base/elDatePicker/picker.vue +0 -956
  104. package/packages/components/style/element/common_class.less +0 -3
  105. package/packages/components/style/element/fonts/element-icons.ttf +0 -0
  106. package/packages/components/style/element/fonts/element-icons.woff +0 -0
  107. package/packages/components/style/element/index.css +0 -30219
@@ -1,289 +0,0 @@
1
- <template>
2
- <transition name="el-zoom-in-top" @after-leave="$emit('dodestroy')">
3
- <div
4
- v-show="visible"
5
- class="el-picker-panel el-date-range-picker el-popper"
6
- :class="[{
7
- 'has-sidebar': $slots.sidebar || shortcuts
8
- }, popperClass]">
9
- <div class="el-picker-panel__body-wrapper">
10
- <slot name="sidebar" class="el-picker-panel__sidebar"></slot>
11
- <div class="el-picker-panel__sidebar" v-if="shortcuts">
12
- <button
13
- type="button"
14
- class="el-picker-panel__shortcut"
15
- v-for="(shortcut, key) in shortcuts"
16
- :key="key"
17
- @click="handleShortcutClick(shortcut)">{{shortcut.text}}</button>
18
- </div>
19
- <div class="el-picker-panel__body">
20
- <div class="el-picker-panel__content el-date-range-picker__content is-left">
21
- <div class="el-date-range-picker__header">
22
- <button
23
- type="button"
24
- @click="leftPrevYear"
25
- class="el-picker-panel__icon-btn el-icon-d-arrow-left"></button>
26
- <button
27
- type="button"
28
- v-if="unlinkPanels"
29
- @click="leftNextYear"
30
- :disabled="!enableYearArrow"
31
- :class="{ 'is-disabled': !enableYearArrow }"
32
- class="el-picker-panel__icon-btn el-icon-d-arrow-right"></button>
33
- <div>{{ leftLabel }}</div>
34
- </div>
35
- <month-table
36
- selection-mode="range"
37
- :date="leftDate"
38
- :default-value="defaultValue"
39
- :min-date="minDate"
40
- :max-date="maxDate"
41
- :range-state="rangeState"
42
- :disabled-date="disabledDate"
43
- @changerange="handleChangeRange"
44
- @pick="handleRangePick">
45
- </month-table>
46
- </div>
47
- <div class="el-picker-panel__content el-date-range-picker__content is-right">
48
- <div class="el-date-range-picker__header">
49
- <button
50
- type="button"
51
- v-if="unlinkPanels"
52
- @click="rightPrevYear"
53
- :disabled="!enableYearArrow"
54
- :class="{ 'is-disabled': !enableYearArrow }"
55
- class="el-picker-panel__icon-btn el-icon-d-arrow-left"></button>
56
- <button
57
- type="button"
58
- @click="rightNextYear"
59
- class="el-picker-panel__icon-btn el-icon-d-arrow-right"></button>
60
- <div>{{ rightLabel }}</div>
61
- </div>
62
- <month-table
63
- selection-mode="range"
64
- :date="rightDate"
65
- :default-value="defaultValue"
66
- :min-date="minDate"
67
- :max-date="maxDate"
68
- :range-state="rangeState"
69
- :disabled-date="disabledDate"
70
- @changerange="handleChangeRange"
71
- @pick="handleRangePick">
72
- </month-table>
73
- </div>
74
- </div>
75
- </div>
76
- </div>
77
- </transition>
78
- </template>
79
-
80
- <script type="text/babel">
81
- import {
82
- isDate,
83
- modifyWithTimeString,
84
- prevYear,
85
- nextYear,
86
- nextMonth
87
- } from 'element-ui/src/utils/date-util';
88
- import Clickoutside from 'element-ui/src/utils/clickoutside';
89
- import Locale from 'element-ui/src/mixins/locale';
90
- import MonthTable from '../basic/month-table';
91
- import ElInput from 'element-ui/packages/input';
92
- import ElButton from 'element-ui/packages/button';
93
-
94
- const calcDefaultValue = (defaultValue) => {
95
- if (Array.isArray(defaultValue)) {
96
- return [new Date(defaultValue[0]), new Date(defaultValue[1])];
97
- } else if (defaultValue) {
98
- return [new Date(defaultValue), nextMonth(new Date(defaultValue))];
99
- } else {
100
- return [new Date(), nextMonth(new Date())];
101
- }
102
- };
103
- export default {
104
- mixins: [Locale],
105
-
106
- directives: { Clickoutside },
107
-
108
- computed: {
109
- btnDisabled() {
110
- return !(this.minDate && this.maxDate && !this.selecting && this.isValidValue([this.minDate, this.maxDate]));
111
- },
112
-
113
- leftLabel() {
114
- return this.leftDate.getFullYear() + ' ' + this.t('el.datepicker.year');
115
- },
116
-
117
- rightLabel() {
118
- return this.rightDate.getFullYear() + ' ' + this.t('el.datepicker.year');
119
- },
120
-
121
- leftYear() {
122
- return this.leftDate.getFullYear();
123
- },
124
-
125
- rightYear() {
126
- return this.rightDate.getFullYear() === this.leftDate.getFullYear() ? this.leftDate.getFullYear() + 1 : this.rightDate.getFullYear();
127
- },
128
-
129
- enableYearArrow() {
130
- return this.unlinkPanels && this.rightYear > this.leftYear + 1;
131
- }
132
- },
133
-
134
- data() {
135
- return {
136
- popperClass: '',
137
- value: [],
138
- defaultValue: null,
139
- defaultTime: null,
140
- minDate: '',
141
- maxDate: '',
142
- leftDate: new Date(),
143
- rightDate: nextYear(new Date()),
144
- rangeState: {
145
- endDate: null,
146
- selecting: false,
147
- row: null,
148
- column: null
149
- },
150
- shortcuts: '',
151
- visible: '',
152
- disabledDate: '',
153
- format: '',
154
- arrowControl: false,
155
- unlinkPanels: false
156
- };
157
- },
158
-
159
- watch: {
160
- value(newVal) {
161
- if (!newVal) {
162
- this.minDate = null;
163
- this.maxDate = null;
164
- } else if (Array.isArray(newVal)) {
165
- this.minDate = isDate(newVal[0]) ? new Date(newVal[0]) : null;
166
- this.maxDate = isDate(newVal[1]) ? new Date(newVal[1]) : null;
167
- if (this.minDate) {
168
- this.leftDate = this.minDate;
169
- if (this.unlinkPanels && this.maxDate) {
170
- const minDateYear = this.minDate.getFullYear();
171
- const maxDateYear = this.maxDate.getFullYear();
172
- this.rightDate = minDateYear === maxDateYear
173
- ? nextYear(this.maxDate)
174
- : this.maxDate;
175
- } else {
176
- this.rightDate = nextYear(this.leftDate);
177
- }
178
- } else {
179
- this.leftDate = calcDefaultValue(this.defaultValue)[0];
180
- this.rightDate = nextYear(this.leftDate);
181
- }
182
- }
183
- },
184
-
185
- defaultValue(val) {
186
- if (!Array.isArray(this.value)) {
187
- const [left, right] = calcDefaultValue(val);
188
- this.leftDate = left;
189
- this.rightDate = val && val[1] && left.getFullYear() !== right.getFullYear() && this.unlinkPanels
190
- ? right
191
- : nextYear(this.leftDate);
192
- }
193
- }
194
- },
195
-
196
- methods: {
197
- handleClear() {
198
- this.minDate = null;
199
- this.maxDate = null;
200
- this.leftDate = calcDefaultValue(this.defaultValue)[0];
201
- this.rightDate = nextYear(this.leftDate);
202
- this.$emit('pick', null);
203
- },
204
-
205
- handleChangeRange(val) {
206
- this.minDate = val.minDate;
207
- this.maxDate = val.maxDate;
208
- this.rangeState = val.rangeState;
209
- },
210
-
211
- handleRangePick(val, close = true) {
212
- const defaultTime = this.defaultTime || [];
213
- const minDate = modifyWithTimeString(val.minDate, defaultTime[0]);
214
- const maxDate = modifyWithTimeString(val.maxDate, defaultTime[1]);
215
- if (this.maxDate === maxDate && this.minDate === minDate) {
216
- return;
217
- }
218
- this.onPick && this.onPick(val);
219
- this.maxDate = maxDate;
220
- this.minDate = minDate;
221
-
222
- // workaround for https://github.com/ElemeFE/element/issues/7539, should remove this block when we don't have to care about Chromium 55 - 57
223
- setTimeout(() => {
224
- this.maxDate = maxDate;
225
- this.minDate = minDate;
226
- }, 10);
227
- if (!close) return;
228
- this.handleConfirm();
229
- },
230
-
231
- handleShortcutClick(shortcut) {
232
- if (shortcut.onClick) {
233
- shortcut.onClick(this);
234
- }
235
- },
236
-
237
- // leftPrev*, rightNext* need to take care of `unlinkPanels`
238
- leftPrevYear() {
239
- this.leftDate = prevYear(this.leftDate);
240
- if (!this.unlinkPanels) {
241
- this.rightDate = prevYear(this.rightDate);
242
- }
243
- },
244
-
245
- rightNextYear() {
246
- if (!this.unlinkPanels) {
247
- this.leftDate = nextYear(this.leftDate);
248
- }
249
- this.rightDate = nextYear(this.rightDate);
250
- },
251
-
252
- // leftNext*, rightPrev* are called when `unlinkPanels` is true
253
- leftNextYear() {
254
- this.leftDate = nextYear(this.leftDate);
255
- },
256
-
257
- rightPrevYear() {
258
- this.rightDate = prevYear(this.rightDate);
259
- },
260
-
261
- handleConfirm(visible = false) {
262
- if (this.isValidValue([this.minDate, this.maxDate])) {
263
- this.$emit('pick', [this.minDate, this.maxDate], visible);
264
- }
265
- },
266
-
267
- isValidValue(value) {
268
- return Array.isArray(value) &&
269
- value && value[0] && value[1] &&
270
- isDate(value[0]) && isDate(value[1]) &&
271
- value[0].getTime() <= value[1].getTime() && (
272
- typeof this.disabledDate === 'function'
273
- ? !this.disabledDate(value[0]) && !this.disabledDate(value[1])
274
- : true
275
- );
276
- },
277
-
278
- resetView() {
279
- // NOTE: this is a hack to reset {min, max}Date on picker open.
280
- // TODO: correct way of doing so is to refactor {min, max}Date to be dependent on value and internal selection state
281
- // an alternative would be resetView whenever picker becomes visible, should also investigate date-panel's resetView
282
- this.minDate = this.value && isDate(this.value[0]) ? new Date(this.value[0]) : null;
283
- this.maxDate = this.value && isDate(this.value[0]) ? new Date(this.value[1]) : null;
284
- }
285
- },
286
-
287
- components: { MonthTable, ElInput, ElButton }
288
- };
289
- </script>
@@ -1,248 +0,0 @@
1
- <template>
2
- <transition
3
- name="el-zoom-in-top"
4
- @after-leave="$emit('dodestroy')">
5
- <div
6
- v-show="visible"
7
- class="el-time-range-picker el-picker-panel el-popper"
8
- :class="popperClass">
9
- <div class="el-time-range-picker__content">
10
- <div class="el-time-range-picker__cell">
11
- <div class="el-time-range-picker__header">{{ t('el.datepicker.startTime') }}</div>
12
- <div
13
- :class="{ 'has-seconds': showSeconds, 'is-arrow': arrowControl }"
14
- class="el-time-range-picker__body el-time-panel__content">
15
- <time-spinner
16
- ref="minSpinner"
17
- :show-seconds="showSeconds"
18
- :am-pm-mode="amPmMode"
19
- @change="handleMinChange"
20
- :arrow-control="arrowControl"
21
- @select-range="setMinSelectionRange"
22
- :date="minDate">
23
- </time-spinner>
24
- </div>
25
- </div>
26
- <div class="el-time-range-picker__cell">
27
- <div class="el-time-range-picker__header">{{ t('el.datepicker.endTime') }}</div>
28
- <div
29
- :class="{ 'has-seconds': showSeconds, 'is-arrow': arrowControl }"
30
- class="el-time-range-picker__body el-time-panel__content">
31
- <time-spinner
32
- ref="maxSpinner"
33
- :show-seconds="showSeconds"
34
- :am-pm-mode="amPmMode"
35
- @change="handleMaxChange"
36
- :arrow-control="arrowControl"
37
- @select-range="setMaxSelectionRange"
38
- :date="maxDate">
39
- </time-spinner>
40
- </div>
41
- </div>
42
- </div>
43
- <div class="el-time-panel__footer">
44
- <button
45
- type="button"
46
- class="el-time-panel__btn cancel"
47
- @click="handleCancel()">{{ t('el.datepicker.cancel') }}</button>
48
- <button
49
- type="button"
50
- class="el-time-panel__btn confirm"
51
- @click="handleConfirm()"
52
- :disabled="btnDisabled">{{ t('el.datepicker.confirm') }}</button>
53
- </div>
54
- </div>
55
- </transition>
56
- </template>
57
-
58
- <script type="text/babel">
59
- import {
60
- parseDate,
61
- limitTimeRange,
62
- modifyDate,
63
- clearMilliseconds,
64
- timeWithinRange
65
- } from 'element-ui/src/utils/date-util';
66
- import Locale from 'element-ui/src/mixins/locale';
67
- import TimeSpinner from '../basic/time-spinner';
68
-
69
- const MIN_TIME = parseDate('00:00:00', 'HH:mm:ss');
70
- const MAX_TIME = parseDate('23:59:59', 'HH:mm:ss');
71
-
72
- const minTimeOfDay = function(date) {
73
- return modifyDate(MIN_TIME, date.getFullYear(), date.getMonth(), date.getDate());
74
- };
75
-
76
- const maxTimeOfDay = function(date) {
77
- return modifyDate(MAX_TIME, date.getFullYear(), date.getMonth(), date.getDate());
78
- };
79
-
80
- // increase time by amount of milliseconds, but within the range of day
81
- const advanceTime = function(date, amount) {
82
- return new Date(Math.min(date.getTime() + amount, maxTimeOfDay(date).getTime()));
83
- };
84
-
85
- export default {
86
- mixins: [Locale],
87
-
88
- components: { TimeSpinner },
89
-
90
- computed: {
91
- showSeconds() {
92
- return (this.format || '').indexOf('ss') !== -1;
93
- },
94
-
95
- offset() {
96
- return this.showSeconds ? 11 : 8;
97
- },
98
-
99
- spinner() {
100
- return this.selectionRange[0] < this.offset ? this.$refs.minSpinner : this.$refs.maxSpinner;
101
- },
102
-
103
- btnDisabled() {
104
- return this.minDate.getTime() > this.maxDate.getTime();
105
- },
106
- amPmMode() {
107
- if ((this.format || '').indexOf('A') !== -1) return 'A';
108
- if ((this.format || '').indexOf('a') !== -1) return 'a';
109
- return '';
110
- }
111
- },
112
-
113
- data() {
114
- return {
115
- popperClass: '',
116
- minDate: new Date(),
117
- maxDate: new Date(),
118
- value: [],
119
- oldValue: [new Date(), new Date()],
120
- defaultValue: null,
121
- format: 'HH:mm:ss',
122
- visible: false,
123
- selectionRange: [0, 2],
124
- arrowControl: false
125
- };
126
- },
127
-
128
- watch: {
129
- value(value) {
130
- if (Array.isArray(value)) {
131
- this.minDate = new Date(value[0]);
132
- this.maxDate = new Date(value[1]);
133
- } else {
134
- if (Array.isArray(this.defaultValue)) {
135
- this.minDate = new Date(this.defaultValue[0]);
136
- this.maxDate = new Date(this.defaultValue[1]);
137
- } else if (this.defaultValue) {
138
- this.minDate = new Date(this.defaultValue);
139
- this.maxDate = advanceTime(new Date(this.defaultValue), 60 * 60 * 1000);
140
- } else {
141
- this.minDate = new Date();
142
- this.maxDate = advanceTime(new Date(), 60 * 60 * 1000);
143
- }
144
- }
145
- },
146
-
147
- visible(val) {
148
- if (val) {
149
- this.oldValue = this.value;
150
- this.$nextTick(() => this.$refs.minSpinner.emitSelectRange('hours'));
151
- }
152
- }
153
- },
154
-
155
- methods: {
156
- handleClear() {
157
- this.$emit('pick', null);
158
- },
159
-
160
- handleCancel() {
161
- this.$emit('pick', this.oldValue);
162
- },
163
-
164
- handleMinChange(date) {
165
- this.minDate = clearMilliseconds(date);
166
- this.handleChange();
167
- },
168
-
169
- handleMaxChange(date) {
170
- this.maxDate = clearMilliseconds(date);
171
- this.handleChange();
172
- },
173
-
174
- handleChange() {
175
- if (this.isValidValue([this.minDate, this.maxDate])) {
176
- this.$refs.minSpinner.selectableRange = [[minTimeOfDay(this.minDate), this.maxDate]];
177
- this.$refs.maxSpinner.selectableRange = [[this.minDate, maxTimeOfDay(this.maxDate)]];
178
- this.$emit('pick', [this.minDate, this.maxDate], true);
179
- }
180
- },
181
-
182
- setMinSelectionRange(start, end) {
183
- this.$emit('select-range', start, end, 'min');
184
- this.selectionRange = [start, end];
185
- },
186
-
187
- setMaxSelectionRange(start, end) {
188
- this.$emit('select-range', start, end, 'max');
189
- this.selectionRange = [start + this.offset, end + this.offset];
190
- },
191
-
192
- handleConfirm(visible = false) {
193
- const minSelectableRange = this.$refs.minSpinner.selectableRange;
194
- const maxSelectableRange = this.$refs.maxSpinner.selectableRange;
195
-
196
- this.minDate = limitTimeRange(this.minDate, minSelectableRange, this.format);
197
- this.maxDate = limitTimeRange(this.maxDate, maxSelectableRange, this.format);
198
-
199
- this.$emit('pick', [this.minDate, this.maxDate], visible);
200
- },
201
-
202
- adjustSpinners() {
203
- this.$refs.minSpinner.adjustSpinners();
204
- this.$refs.maxSpinner.adjustSpinners();
205
- },
206
-
207
- changeSelectionRange(step) {
208
- const list = this.showSeconds ? [0, 3, 6, 11, 14, 17] : [0, 3, 8, 11];
209
- const mapping = ['hours', 'minutes'].concat(this.showSeconds ? ['seconds'] : []);
210
- const index = list.indexOf(this.selectionRange[0]);
211
- const next = (index + step + list.length) % list.length;
212
- const half = list.length / 2;
213
- if (next < half) {
214
- this.$refs.minSpinner.emitSelectRange(mapping[next]);
215
- } else {
216
- this.$refs.maxSpinner.emitSelectRange(mapping[next - half]);
217
- }
218
- },
219
-
220
- isValidValue(date) {
221
- return Array.isArray(date) &&
222
- timeWithinRange(this.minDate, this.$refs.minSpinner.selectableRange) &&
223
- timeWithinRange(this.maxDate, this.$refs.maxSpinner.selectableRange);
224
- },
225
-
226
- handleKeydown(event) {
227
- const keyCode = event.keyCode;
228
- const mapping = { 38: -1, 40: 1, 37: -1, 39: 1 };
229
-
230
- // Left or Right
231
- if (keyCode === 37 || keyCode === 39) {
232
- const step = mapping[keyCode];
233
- this.changeSelectionRange(step);
234
- event.preventDefault();
235
- return;
236
- }
237
-
238
- // Up or Down
239
- if (keyCode === 38 || keyCode === 40) {
240
- const step = mapping[keyCode];
241
- this.spinner.scrollDown(step);
242
- event.preventDefault();
243
- return;
244
- }
245
- }
246
- }
247
- };
248
- </script>