@@ -44,7 +44,7 @@ export default {
44
44
45
45
const template = `
46
46
<div>
47
- <cv-date-picker v-bind="args" @change="onChange" :value="now ">
47
+ <cv-date-picker v-bind="args" :value="now" @change="onChange ">
48
48
</cv-date-picker>
49
49
</div>
50
50
` ;
@@ -64,7 +64,12 @@ export const Default = Template.bind({});
64
64
Default . args = initArgs ;
65
65
Default . parameters = {
66
66
controls : {
67
- exclude : [ 'update:modelValue' , 'invalid-message' , 'modelValue' ] ,
67
+ exclude : [
68
+ 'update:modelValue' ,
69
+ 'invalid-message' ,
70
+ 'modelValue' ,
71
+ 'dateChange' ,
72
+ ] ,
68
73
} ,
69
74
} ;
70
75
Default . parameters = storyParametersObject (
@@ -78,14 +83,13 @@ Default.parameters = storyParametersObject(
78
83
const modelValue = ref ( now ) ;
79
84
const templateVModel = `
80
85
<div>
81
- <cv-date-picker v-bind="args" @change="onChange" v-model="modelValue">
86
+ <cv-date-picker v-bind="args" v-model="modelValue">
82
87
</cv-date-picker>
83
88
</div>
84
89
<div style="margin-top:2rem; background-color: #888888; padding:1rem">
85
90
<div style="font-size: 150%;">Sample interaction</div>
86
91
<label for="date-model" style='margin-right: 0.5rem'>V-model:</label>
87
- <input id="date-model" type="text" :value="modelValue.startDate || modelValue" @change="ev => { if (args.kind === 'range') { modelValue.startDate = ev.currentTarget.value } else { modelValue = ev.currentTarget.value } }"/>
88
- <input v-if="args.kind === 'range'" id="date-model" type="text" :value="modelValue.endDate" @change="ev => modelValue.endDate = ev.currentTarget.value"/>
92
+ <input id="date-model" type="text" :value="modelValue" @change="ev => { modelValue = ev.currentTarget.value }"/>
89
93
</div>
90
94
` ;
91
95
@@ -96,7 +100,6 @@ const TemplateVModel = args => {
96
100
args,
97
101
modelValue,
98
102
now,
99
- onChange : action ( 'change' ) ,
100
103
} ) ,
101
104
template : templateVModel ,
102
105
} ;
@@ -106,7 +109,14 @@ export const vModel = TemplateVModel.bind({});
106
109
vModel . args = initArgs ;
107
110
vModel . parameters = {
108
111
controls : {
109
- exclude : [ 'update:modelValue' , 'invalid-message' , 'modelValue' ] ,
112
+ exclude : [
113
+ 'update:modelValue' ,
114
+ 'invalid-message' ,
115
+ 'modelValue' ,
116
+ 'kind' ,
117
+ 'value' ,
118
+ 'dateChange' ,
119
+ ] ,
110
120
} ,
111
121
} ;
112
122
vModel . parameters = storyParametersObject (
@@ -115,11 +125,58 @@ vModel.parameters = storyParametersObject(
115
125
vModel . args
116
126
) ;
117
127
128
+ /* range v-model */
129
+ const rangeValue = ref ( { startDate : now , endDate : now } ) ;
130
+ const templateRangeVModel = `
131
+ <div>
132
+ <cv-date-picker v-bind="args" kind="range" v-model="rangeValue">
133
+ </cv-date-picker>
134
+ </div>
135
+ <div style="margin-top:2rem; background-color: #888888; padding:1rem">
136
+ <div style="font-size: 150%;">Sample range interaction</div>
137
+ <label for="date-model-1" style='margin-right: 0.5rem'>V-model:</label>
138
+ <input id="date-model-1" type="text" :value="rangeValue.startDate" @change="ev => { rangeValue.startDate = ev.currentTarget.value }"/>
139
+ <input id="date-model-2" type="text" :value="rangeValue.endDate" @change="ev => rangeValue.endDate = ev.currentTarget.value"/>
140
+ </div>
141
+ ` ;
142
+
143
+ const TemplateRangeVModel = args => {
144
+ return {
145
+ components : { CvDatePicker } ,
146
+ setup : ( ) => ( {
147
+ args,
148
+ rangeValue,
149
+ now,
150
+ } ) ,
151
+ template : templateRangeVModel ,
152
+ } ;
153
+ } ;
154
+
155
+ export const rangeVmodel = TemplateRangeVModel . bind ( { } ) ;
156
+ rangeVmodel . args = initArgs ;
157
+ rangeVmodel . parameters = {
158
+ controls : {
159
+ exclude : [
160
+ 'update:modelValue' ,
161
+ 'invalid-message' ,
162
+ 'modelValue' ,
163
+ 'kind' ,
164
+ 'value' ,
165
+ 'dateChange' ,
166
+ ] ,
167
+ } ,
168
+ } ;
169
+ rangeVmodel . parameters = storyParametersObject (
170
+ rangeVmodel . parameters ,
171
+ templateRangeVModel ,
172
+ rangeVmodel . args
173
+ ) ;
174
+
118
175
/* INVALID MESSAGE STORY */
119
176
120
177
const templateInvalidMessage = `
121
178
<div>
122
- <cv-date-picker v-bind="args" @change="onChange" :value="now ">
179
+ <cv-date-picker v-bind="args" :value="now" @change="onChange ">
123
180
</cv-date-picker>
124
181
</div>
125
182
` ;
@@ -153,7 +210,7 @@ InvalidMessage.parameters = storyParametersObject(
153
210
154
211
const templateInvalidMessageSlot = `
155
212
<div>
156
- <cv-date-picker v-bind="args" @change="onChange" :value="now ">
213
+ <cv-date-picker v-bind="args" :value="now" @change="onChange ">
157
214
<template #invalid-message>Invalid date slot</template>
158
215
</cv-date-picker>
159
216
</div>
@@ -194,7 +251,7 @@ InvalidMessageSlot.parameters = storyParametersObject(
194
251
const singleValue = ref ( now ) ;
195
252
const templateSingleUsingDate = `
196
253
<div>
197
- <cv-date-picker v-bind="args" @change="onChange" kind="single" v-model="singleValue">
254
+ <cv-date-picker v-bind="args" kind="single" v-model="singleValue" @dateChange="onDateChange ">
198
255
</cv-date-picker>
199
256
</div>` ;
200
257
const templateSingleUsingDateVModel = `
@@ -212,7 +269,7 @@ const TemplateSingleUsingDate = args => {
212
269
args,
213
270
now,
214
271
singleValue,
215
- onChange : action ( 'change ' ) ,
272
+ onDateChange : action ( 'dateChange ' ) ,
216
273
} ) ,
217
274
template : templateSingleUsingDate + templateSingleUsingDateVModel ,
218
275
} ;
@@ -258,7 +315,7 @@ function changeMaxDate(inc) {
258
315
}
259
316
const templateSingleUsingMinMax = `
260
317
<div>
261
- <cv-date-picker v-bind='args' @change="onChange" kind="single" :value="now" :cal-options="calOptions">
318
+ <cv-date-picker v-bind='args' kind="single" :value="now" :cal-options="calOptions" @dateChange="onDateChange ">
262
319
</cv-date-picker>
263
320
<div style="margin-top:2rem; background-color: #888888; padding:1rem; width:fit-content">
264
321
<div>Reactive updates</div>
@@ -280,7 +337,7 @@ const TemplateSingleUsingMinMax = args => {
280
337
toggleDateFormat,
281
338
buttonLabel,
282
339
changeMaxDate,
283
- onChange : action ( 'change ' ) ,
340
+ onDateChange : action ( 'dateChange ' ) ,
284
341
} ) ,
285
342
template : templateSingleUsingMinMax ,
286
343
} ;
@@ -303,7 +360,14 @@ SingleUsingMinMax.args = initArgs;
303
360
304
361
SingleUsingMinMax . parameters = {
305
362
controls : {
306
- exclude : [ 'update:modelValue' , 'invalid-message' , 'modelValue' , 'kind' ] ,
363
+ exclude : [
364
+ 'update:modelValue' ,
365
+ 'invalid-message' ,
366
+ 'modelValue' ,
367
+ 'kind' ,
368
+ 'dateChange' ,
369
+ 'value' ,
370
+ ] ,
307
371
} ,
308
372
docs : {
309
373
source : { code : codeMinMax } ,
@@ -317,8 +381,10 @@ SingleUsingMinMax.parameters = {
317
381
318
382
const templateRangeUsingDate = `
319
383
<div>
320
- <cv-date-picker v-bind="args" @change="onChange" kind="range"
321
- :value="{startDate: now.toLocaleDateString(), endDate: tomorrow.toLocaleDateString()}">
384
+ <cv-date-picker v-bind="args"
385
+ kind="range"
386
+ :value="{startDate: now.toLocaleDateString(), endDate: tomorrow.toLocaleDateString()}"
387
+ @dateChange="onDateChange">
322
388
</cv-date-picker>
323
389
</div>
324
390
` ;
@@ -330,7 +396,7 @@ const TemplateRangeUsingDate = args => {
330
396
args,
331
397
now,
332
398
tomorrow,
333
- onChange : action ( 'change ' ) ,
399
+ onDateChange : action ( 'dateChange ' ) ,
334
400
} ) ,
335
401
template : templateRangeUsingDate ,
336
402
} ;
@@ -340,7 +406,14 @@ export const RangeUsingDate = TemplateRangeUsingDate.bind({});
340
406
RangeUsingDate . args = initArgs ;
341
407
RangeUsingDate . parameters = {
342
408
controls : {
343
- exclude : [ 'update:modelValue' , 'invalid-message' , 'kind' , 'modelValue' ] ,
409
+ exclude : [
410
+ 'update:modelValue' ,
411
+ 'invalid-message' ,
412
+ 'kind' ,
413
+ 'modelValue' ,
414
+ 'dateChange' ,
415
+ 'value' ,
416
+ ] ,
344
417
} ,
345
418
} ;
346
419
RangeUsingDate . parameters = storyParametersObject (
@@ -353,8 +426,7 @@ RangeUsingDate.parameters = storyParametersObject(
353
426
354
427
const templateMinimal = `
355
428
<div>
356
- <cv-date-picker v-bind="args" @change="onChange" :value="now">
357
- </cv-date-picker>
429
+ <cv-date-picker v-bind="args" :value="now" @change="onChange"/>
358
430
</div>
359
431
` ;
360
432
@@ -373,7 +445,13 @@ const TemplateMinimal = args => {
373
445
export const Minimal = TemplateMinimal . bind ( { } ) ;
374
446
Minimal . parameters = {
375
447
controls : {
376
- exclude : [ 'update:modelValue' , 'invalid-message' , 'modelValue' ] ,
448
+ exclude : [
449
+ 'update:modelValue' ,
450
+ 'invalid-message' ,
451
+ 'modelValue' ,
452
+ 'dateChange' ,
453
+ 'value' ,
454
+ ] ,
377
455
} ,
378
456
} ;
379
457
Minimal . parameters = storyParametersObject (
@@ -395,7 +473,6 @@ const TemplateSkeleton = args => {
395
473
components : { CvDatePicker, CvDatePickerSkeleton } ,
396
474
setup : ( ) => ( {
397
475
args,
398
- onChange : action ( 'change' ) ,
399
476
} ) ,
400
477
template : templateSkeleton ,
401
478
} ;
0 commit comments