evui 3.4.29 → 3.4.31

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.
@@ -14,7 +14,7 @@
14
14
  class="ev-time-picker-wrapper"
15
15
  >
16
16
  <input
17
- v-model="startTime"
17
+ v-model="time[0]"
18
18
  class="ev-input"
19
19
  :disabled="disabled"
20
20
  :readonly="readonly"
@@ -45,7 +45,7 @@
45
45
  class="ev-time-picker-wrapper"
46
46
  >
47
47
  <input
48
- v-model="endTime"
48
+ v-model="time[1]"
49
49
  class="ev-input"
50
50
  :disabled="disabled"
51
51
  :readonly="readonly"
@@ -105,7 +105,7 @@
105
105
  </template>
106
106
 
107
107
  <script>
108
- import { ref, reactive } from 'vue';
108
+ import { ref, reactive, computed } from 'vue';
109
109
 
110
110
  export default {
111
111
  name: 'EvTimePicker',
@@ -115,7 +115,7 @@ export default {
115
115
  default: '',
116
116
  validator: (time) => {
117
117
  const timeRegexExp = /^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/;
118
- if (Array.isArray(time) && !timeRegexExp.test(time[0]) && timeRegexExp.test(time[1])) {
118
+ if (Array.isArray(time) && (!timeRegexExp.test(time[0]) || !timeRegexExp.test(time[1]))) {
119
119
  // range mode
120
120
  console.warn('Please check the time format in the Timepicker.');
121
121
  return false;
@@ -152,58 +152,60 @@ export default {
152
152
  change: null,
153
153
  },
154
154
  setup(props, { emit }) {
155
- let startTime = ref('00:00');
156
- let endTime = ref('23:59');
157
- let time = ref('00:00');
155
+ const time = computed({
156
+ get: () => props.modelValue,
157
+ set: (value) => {
158
+ if (props.type === 'range') {
159
+ if (Array.isArray(value)) {
160
+ const startTime = (value[0] > value[1] ? '00:00' : value[0]);
161
+ const endTime = (startTime.value > value[1] ? '23:59' : value[1]);
162
+
163
+ emit('update:modelValue', [startTime, endTime]);
164
+ }
165
+ } else {
166
+ emit('update:modelValue', value);
167
+ }
168
+ },
169
+ }); // <string | string[]>
170
+
171
+ const previousValue = ref(
172
+ Array.isArray(time.value) ? [`${time.value[0]}`, `${time.value[1]}`] : `${time.value}`,
173
+ ); // <string | string[]>
174
+
158
175
  const isWrongType = reactive({
159
176
  single: false,
160
177
  rangeStart: false,
161
178
  rangeEnd: false,
162
179
  });
163
180
 
164
- if (props.type === 'range') {
165
- if (Array.isArray(props.modelValue)) {
166
- startTime = ref(props.modelValue[0] > props.modelValue[1] ? '00:00' : props.modelValue[0]);
167
- endTime = ref(startTime.value > props.modelValue[1] ? '23:59' : props.modelValue[1]);
168
- }
169
- emit('update:modelValue', [startTime.value, endTime.value]);
170
- } else {
171
- time = ref(props.modelValue || '00:00');
172
- emit('update:modelValue', time.value);
173
- }
174
-
175
- const previousValue = reactive({
176
- singleTime: time.value,
177
- rangeStartTime: startTime.value,
178
- rangeEndTime: endTime.value,
179
- });
180
-
181
181
  const validTimeExp = (timeExp) => {
182
182
  const timeRegexExp = /^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/;
183
183
  return timeRegexExp.test(timeExp);
184
184
  };
185
185
 
186
186
  const setValidStartTime = () => {
187
- if (!validTimeExp(startTime.value)) {
188
- startTime.value = previousValue.rangeStartTime;
187
+ if (!Array.isArray(time.value)) return;
188
+ if (!validTimeExp(time.value[0])) {
189
+ time.value[0] = previousValue.value[0];
189
190
  }
190
- if (endTime.value && (startTime.value > endTime.value)) {
191
- startTime.value = endTime.value;
191
+ if (time.value[1] && (time.value[0] > time.value[1])) {
192
+ time.value[0] = time.value[1];
192
193
  }
193
- previousValue.rangeStartTime = startTime.value;
194
+ previousValue.value[0] = time.value[0];
194
195
  };
195
196
 
196
197
  const setValidEndTime = () => {
197
- if (!validTimeExp(endTime.value)) {
198
- endTime.value = previousValue.rangeEndTime;
198
+ if (!Array.isArray(time.value)) return;
199
+ if (!validTimeExp(time.value[1])) {
200
+ time.value[1] = previousValue.value[1];
199
201
  }
200
- if (startTime.value && (startTime.value > endTime.value)) {
201
- endTime.value = previousValue.rangeEndTime;
202
- if (startTime.value > previousValue.rangeEndTime) {
203
- endTime.value = startTime.value;
202
+ if (time.value[0] && (time.value[0] > time.value[1])) {
203
+ time.value[1] = previousValue.value[1];
204
+ if (time.value[0] > previousValue.value[1]) {
205
+ time.value[1] = time.value[0];
204
206
  }
205
207
  }
206
- previousValue.rangeEndTime = endTime.value;
208
+ previousValue.value[1] = time.value[1];
207
209
  };
208
210
 
209
211
  // startTime event for range type
@@ -218,14 +220,12 @@ export default {
218
220
  const changeStartTime = (e) => {
219
221
  setValidStartTime();
220
222
  isWrongType.rangeStart = false;
221
- emit('update:modelValue', [startTime.value, endTime.value]);
222
- emit('change', e, [startTime.value, endTime.value]);
223
+ emit('change', e, time.value);
223
224
  };
224
225
 
225
226
  const clearStartTime = () => {
226
- startTime.value = '';
227
+ time.value[0] = '';
227
228
  isWrongType.rangeStart = true;
228
- emit('update:modelValue', [startTime.value, endTime.value]);
229
229
  };
230
230
 
231
231
  // endTime event for range type
@@ -240,14 +240,12 @@ export default {
240
240
  const changeEndTime = (e) => {
241
241
  setValidEndTime();
242
242
  isWrongType.rangeEnd = false;
243
- emit('update:modelValue', [startTime.value, endTime.value]);
244
- emit('change', e, [startTime.value, endTime.value]);
243
+ emit('change', e, time.value);
245
244
  };
246
245
 
247
246
  const clearEndTime = () => {
248
- endTime.value = '';
247
+ time.value[1] = '';
249
248
  isWrongType.rangeEnd = true;
250
- emit('update:modelValue', [startTime.value, endTime.value]);
251
249
  };
252
250
 
253
251
  // event for single type
@@ -261,26 +259,22 @@ export default {
261
259
 
262
260
  const changeTime = (e) => {
263
261
  if (!validTimeExp(time.value)) {
264
- time.value = previousValue.singleTime;
262
+ time.value = previousValue.value;
265
263
  } else {
266
- previousValue.singleTime = time.value;
264
+ previousValue.value = time.value;
267
265
  }
268
266
 
269
267
  isWrongType.single = !validTimeExp(time.value);
270
268
 
271
- emit('update:modelValue', time.value);
272
269
  emit('change', e, time.value);
273
270
  };
274
271
 
275
272
  const clearContents = () => {
276
273
  time.value = '';
277
274
  isWrongType.single = true;
278
- emit('update:modelValue', time.value);
279
275
  };
280
276
 
281
277
  return {
282
- startTime,
283
- endTime,
284
278
  time,
285
279
  isWrongType,
286
280
  previousValue,