@@ -13,29 +13,50 @@ All available types are: 'date', 'datetime-local', 'month', 'time' and 'week', p
13
13
14
14
### Examples
15
15
16
- #### Usage: type='datetime-local'
17
16
```vue
18
17
<template>
19
18
<div>
20
19
<span>Picked date: {{ value || 'null' }}</span>
21
- <NcDateTimePickerNative
22
- v-model="value"
23
- :id="id"
24
- :label="label"
25
- type="datetime-local" />
20
+ <hr/>
21
+ <div class="flex">
22
+ <NcSelect v-bind="props" v-model="type" />
23
+ <NcDateTimePickerNative
24
+ v-model="value"
25
+ :id="id"
26
+ :label="label"
27
+ :type="type" />
28
+ </div>
26
29
</div>
27
30
</template>
28
31
<script>
29
32
export default {
30
33
data() {
31
34
return {
35
+ props: {
36
+ clearable: false,
37
+ inputLabel: 'Picker type',
38
+ options: [
39
+ 'date',
40
+ 'datetime-local',
41
+ 'month',
42
+ 'time',
43
+ 'week',
44
+ ],
45
+ },
46
+ type: 'datetime-local',
32
47
value: new Date(),
33
48
id: 'date-time-picker',
34
- label: 'please select a new date',
49
+ label: 'Select a new date or time ',
35
50
}
36
51
},
37
52
}
38
53
</script>
54
+ <style>
55
+ .flex {
56
+ display: flex;
57
+ gap: 4px;
58
+ }
59
+ </style>
39
60
```
40
61
41
62
#### Usage: type='datetime-local' with min date and max date
@@ -309,8 +330,7 @@ export default {
309
330
input: ($event) => {
310
331
if (isNaN($event.target.valueAsNumber)) {
311
332
this.model = null
312
- }
313
- if (this.type === 'time') {
333
+ } else if (this.type === 'time') {
314
334
const time = $event.target.value
315
335
if (this.model === '') {
316
336
// this case is because of Chrome bug
@@ -321,21 +341,24 @@ export default {
321
341
* @return {Date} new chosen Date()
322
342
*/
323
343
this.model = new Date(`${yyyy}-${MM}-${dd}T${time}`)
344
+ } else {
345
+ const { yyyy, MM, dd } = this.getReadableDate(this.model)
346
+ this.model = new Date(`${yyyy}-${MM}-${dd}T${time}`)
324
347
}
325
- const { yyyy, MM, dd } = this.getReadableDate(this.model)
326
- this.model = new Date(`${yyyy}-${MM}-${dd}T${time}`)
327
348
} else if (this.type === 'month') {
328
349
const MM = (new Date($event.target.value).getMonth() + 1).toString().padStart(2, '0')
329
350
if (this.model === '') {
330
351
const { yyyy, dd, hh, mm } = this.getReadableDate(new Date())
331
352
this.model = new Date(`${yyyy}-${MM}-${dd}T${hh}:${mm}`)
353
+ } else {
354
+ const { yyyy, dd, hh, mm } = this.getReadableDate(this.model)
355
+ this.model = new Date(`${yyyy}-${MM}-${dd}T${hh}:${mm}`)
332
356
}
333
- const { yyyy, dd, hh, mm } = this.getReadableDate(this.model)
334
- this.model = new Date(`${yyyy}-${MM}-${dd}T${hh}:${mm}`)
357
+ } else {
358
+ const timezoneOffsetSeconds = new Date($event.target.valueAsNumber).getTimezoneOffset() * 1000 * 60
359
+ const inputDateWithTimezone = $event.target.valueAsNumber + timezoneOffsetSeconds
360
+ this.model = new Date(inputDateWithTimezone)
335
361
}
336
- const timezoneOffsetSeconds = new Date($event.target.valueAsNumber).getTimezoneOffset() * 1000 * 60
337
- const inputDateWithTimezone = $event.target.valueAsNumber + timezoneOffsetSeconds
338
- this.model = new Date(inputDateWithTimezone)
339
362
},
340
363
}
341
364
},
0 commit comments