@vuetify/nightly 3.9.0-beta.1-dev.2025-06-28 → 3.9.0-beta.1-dev.2025-07-02
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/CHANGELOG.md +100 -3
- package/dist/json/attributes.json +725 -725
- package/dist/json/importMap-labs.json +30 -30
- package/dist/json/importMap.json +156 -156
- package/dist/json/web-types.json +1311 -1311
- package/dist/vuetify-labs.cjs +61 -63
- package/dist/vuetify-labs.css +4207 -4207
- package/dist/vuetify-labs.d.ts +203 -203
- package/dist/vuetify-labs.esm.js +61 -63
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +61 -63
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +36 -39
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +4469 -4469
- package/dist/vuetify.d.ts +60 -60
- package/dist/vuetify.esm.js +36 -39
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +36 -39
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +34 -35
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VDataTable/VDataTableColumn.js +0 -1
- package/lib/components/VDataTable/VDataTableColumn.js.map +1 -1
- package/lib/components/VDataTable/VDataTableHeaders.js +5 -5
- package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
- package/lib/components/VDataTable/composables/sort.js +2 -1
- package/lib/components/VDataTable/composables/sort.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerMonth.js +1 -2
- package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
- package/lib/components/VOtpInput/VOtpInput.js +17 -14
- package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
- package/lib/components/VOverlay/locationStrategies.js +1 -1
- package/lib/components/VOverlay/locationStrategies.js.map +1 -1
- package/lib/components/VTextField/VTextField.js +1 -1
- package/lib/components/VTextField/VTextField.js.map +1 -1
- package/lib/composables/calendar.d.ts +0 -1
- package/lib/composables/calendar.js +6 -10
- package/lib/composables/calendar.js.map +1 -1
- package/lib/composables/date/adapters/vuetify.js +1 -1
- package/lib/composables/date/adapters/vuetify.js.map +1 -1
- package/lib/composables/virtual.js +1 -1
- package/lib/composables/virtual.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +60 -60
- package/lib/framework.js +1 -1
- package/lib/labs/VCalendar/VCalendar.d.ts +33 -33
- package/lib/labs/VCalendar/VCalendar.js +9 -9
- package/lib/labs/VCalendar/VCalendar.js.map +1 -1
- package/lib/labs/VCalendar/VCalendarDay.d.ts +33 -33
- package/lib/labs/VCalendar/VCalendarDay.js +1 -1
- package/lib/labs/VCalendar/VCalendarDay.js.map +1 -1
- package/lib/labs/VCalendar/VCalendarInterval.d.ts +36 -36
- package/lib/labs/VCalendar/VCalendarInterval.js +9 -9
- package/lib/labs/VCalendar/VCalendarInterval.js.map +1 -1
- package/lib/labs/VCalendar/VCalendarIntervalEvent.d.ts +12 -12
- package/lib/labs/VCalendar/VCalendarIntervalEvent.js +1 -1
- package/lib/labs/VCalendar/VCalendarIntervalEvent.js.map +1 -1
- package/lib/labs/VCalendar/VCalendarMonthDay.d.ts +36 -36
- package/lib/labs/VCalendar/VCalendarMonthDay.js +4 -4
- package/lib/labs/VCalendar/VCalendarMonthDay.js.map +1 -1
- package/lib/labs/VIconBtn/VIconBtn.js +1 -0
- package/lib/labs/VIconBtn/VIconBtn.js.map +1 -1
- package/package.json +1 -1
@@ -321,7 +321,7 @@ export declare const VCalendar: {
|
|
321
321
|
dayIndex?: number | undefined;
|
322
322
|
} & {
|
323
323
|
$children?: {} | import("vue").VNodeChild | {
|
324
|
-
|
324
|
+
'interval-body'?: ((arg: {
|
325
325
|
interval: {
|
326
326
|
label: string;
|
327
327
|
start: unknown;
|
@@ -329,7 +329,7 @@ export declare const VCalendar: {
|
|
329
329
|
events: any[];
|
330
330
|
};
|
331
331
|
}) => import("vue").VNodeChild) | undefined;
|
332
|
-
|
332
|
+
'interval-event'?: ((arg: {
|
333
333
|
height: string;
|
334
334
|
margin: string;
|
335
335
|
eventClass: string;
|
@@ -341,7 +341,7 @@ export declare const VCalendar: {
|
|
341
341
|
events: any[];
|
342
342
|
};
|
343
343
|
}) => import("vue").VNodeChild) | undefined;
|
344
|
-
|
344
|
+
'interval-title'?: ((arg: {
|
345
345
|
interval: {
|
346
346
|
label: string;
|
347
347
|
start: unknown;
|
@@ -378,7 +378,7 @@ export declare const VCalendar: {
|
|
378
378
|
}) => import("vue").VNodeChild) | undefined;
|
379
379
|
};
|
380
380
|
'v-slots'?: {
|
381
|
-
|
381
|
+
'interval-body'?: false | ((arg: {
|
382
382
|
interval: {
|
383
383
|
label: string;
|
384
384
|
start: unknown;
|
@@ -386,7 +386,7 @@ export declare const VCalendar: {
|
|
386
386
|
events: any[];
|
387
387
|
};
|
388
388
|
}) => import("vue").VNodeChild) | undefined;
|
389
|
-
|
389
|
+
'interval-event'?: false | ((arg: {
|
390
390
|
height: string;
|
391
391
|
margin: string;
|
392
392
|
eventClass: string;
|
@@ -398,7 +398,7 @@ export declare const VCalendar: {
|
|
398
398
|
events: any[];
|
399
399
|
};
|
400
400
|
}) => import("vue").VNodeChild) | undefined;
|
401
|
-
|
401
|
+
'interval-title'?: false | ((arg: {
|
402
402
|
interval: {
|
403
403
|
label: string;
|
404
404
|
start: unknown;
|
@@ -435,7 +435,7 @@ export declare const VCalendar: {
|
|
435
435
|
}) => import("vue").VNodeChild) | undefined;
|
436
436
|
} | undefined;
|
437
437
|
} & {
|
438
|
-
"v-slot:
|
438
|
+
"v-slot:interval-body"?: false | ((arg: {
|
439
439
|
interval: {
|
440
440
|
label: string;
|
441
441
|
start: unknown;
|
@@ -443,7 +443,7 @@ export declare const VCalendar: {
|
|
443
443
|
events: any[];
|
444
444
|
};
|
445
445
|
}) => import("vue").VNodeChild) | undefined;
|
446
|
-
"v-slot:
|
446
|
+
"v-slot:interval-event"?: false | ((arg: {
|
447
447
|
height: string;
|
448
448
|
margin: string;
|
449
449
|
eventClass: string;
|
@@ -455,7 +455,7 @@ export declare const VCalendar: {
|
|
455
455
|
events: any[];
|
456
456
|
};
|
457
457
|
}) => import("vue").VNodeChild) | undefined;
|
458
|
-
"v-slot:
|
458
|
+
"v-slot:interval-title"?: false | ((arg: {
|
459
459
|
interval: {
|
460
460
|
label: string;
|
461
461
|
start: unknown;
|
@@ -525,7 +525,7 @@ export declare const VCalendar: {
|
|
525
525
|
intervals: number;
|
526
526
|
hideWeekNumber: boolean;
|
527
527
|
}, true, {}, import("vue").SlotsType<Partial<{
|
528
|
-
|
528
|
+
'interval-body': (arg: {
|
529
529
|
interval: {
|
530
530
|
label: string;
|
531
531
|
start: unknown;
|
@@ -533,7 +533,7 @@ export declare const VCalendar: {
|
|
533
533
|
events: any[];
|
534
534
|
};
|
535
535
|
}) => import("vue").VNode[];
|
536
|
-
|
536
|
+
'interval-event': (arg: {
|
537
537
|
height: string;
|
538
538
|
margin: string;
|
539
539
|
eventClass: string;
|
@@ -545,7 +545,7 @@ export declare const VCalendar: {
|
|
545
545
|
events: any[];
|
546
546
|
};
|
547
547
|
}) => import("vue").VNode[];
|
548
|
-
|
548
|
+
'interval-title': (arg: {
|
549
549
|
interval: {
|
550
550
|
label: string;
|
551
551
|
start: unknown;
|
@@ -621,7 +621,7 @@ export declare const VCalendar: {
|
|
621
621
|
dayIndex?: number | undefined;
|
622
622
|
} & {
|
623
623
|
$children?: {} | import("vue").VNodeChild | {
|
624
|
-
|
624
|
+
'interval-body'?: ((arg: {
|
625
625
|
interval: {
|
626
626
|
label: string;
|
627
627
|
start: unknown;
|
@@ -629,7 +629,7 @@ export declare const VCalendar: {
|
|
629
629
|
events: any[];
|
630
630
|
};
|
631
631
|
}) => import("vue").VNodeChild) | undefined;
|
632
|
-
|
632
|
+
'interval-event'?: ((arg: {
|
633
633
|
height: string;
|
634
634
|
margin: string;
|
635
635
|
eventClass: string;
|
@@ -641,7 +641,7 @@ export declare const VCalendar: {
|
|
641
641
|
events: any[];
|
642
642
|
};
|
643
643
|
}) => import("vue").VNodeChild) | undefined;
|
644
|
-
|
644
|
+
'interval-title'?: ((arg: {
|
645
645
|
interval: {
|
646
646
|
label: string;
|
647
647
|
start: unknown;
|
@@ -678,7 +678,7 @@ export declare const VCalendar: {
|
|
678
678
|
}) => import("vue").VNodeChild) | undefined;
|
679
679
|
};
|
680
680
|
'v-slots'?: {
|
681
|
-
|
681
|
+
'interval-body'?: false | ((arg: {
|
682
682
|
interval: {
|
683
683
|
label: string;
|
684
684
|
start: unknown;
|
@@ -686,7 +686,7 @@ export declare const VCalendar: {
|
|
686
686
|
events: any[];
|
687
687
|
};
|
688
688
|
}) => import("vue").VNodeChild) | undefined;
|
689
|
-
|
689
|
+
'interval-event'?: false | ((arg: {
|
690
690
|
height: string;
|
691
691
|
margin: string;
|
692
692
|
eventClass: string;
|
@@ -698,7 +698,7 @@ export declare const VCalendar: {
|
|
698
698
|
events: any[];
|
699
699
|
};
|
700
700
|
}) => import("vue").VNodeChild) | undefined;
|
701
|
-
|
701
|
+
'interval-title'?: false | ((arg: {
|
702
702
|
interval: {
|
703
703
|
label: string;
|
704
704
|
start: unknown;
|
@@ -735,7 +735,7 @@ export declare const VCalendar: {
|
|
735
735
|
}) => import("vue").VNodeChild) | undefined;
|
736
736
|
} | undefined;
|
737
737
|
} & {
|
738
|
-
"v-slot:
|
738
|
+
"v-slot:interval-body"?: false | ((arg: {
|
739
739
|
interval: {
|
740
740
|
label: string;
|
741
741
|
start: unknown;
|
@@ -743,7 +743,7 @@ export declare const VCalendar: {
|
|
743
743
|
events: any[];
|
744
744
|
};
|
745
745
|
}) => import("vue").VNodeChild) | undefined;
|
746
|
-
"v-slot:
|
746
|
+
"v-slot:interval-event"?: false | ((arg: {
|
747
747
|
height: string;
|
748
748
|
margin: string;
|
749
749
|
eventClass: string;
|
@@ -755,7 +755,7 @@ export declare const VCalendar: {
|
|
755
755
|
events: any[];
|
756
756
|
};
|
757
757
|
}) => import("vue").VNodeChild) | undefined;
|
758
|
-
"v-slot:
|
758
|
+
"v-slot:interval-title"?: false | ((arg: {
|
759
759
|
interval: {
|
760
760
|
label: string;
|
761
761
|
start: unknown;
|
@@ -857,7 +857,7 @@ export declare const VCalendar: {
|
|
857
857
|
dayIndex?: number | undefined;
|
858
858
|
} & {
|
859
859
|
$children?: {} | import("vue").VNodeChild | {
|
860
|
-
|
860
|
+
'interval-body'?: ((arg: {
|
861
861
|
interval: {
|
862
862
|
label: string;
|
863
863
|
start: unknown;
|
@@ -865,7 +865,7 @@ export declare const VCalendar: {
|
|
865
865
|
events: any[];
|
866
866
|
};
|
867
867
|
}) => import("vue").VNodeChild) | undefined;
|
868
|
-
|
868
|
+
'interval-event'?: ((arg: {
|
869
869
|
height: string;
|
870
870
|
margin: string;
|
871
871
|
eventClass: string;
|
@@ -877,7 +877,7 @@ export declare const VCalendar: {
|
|
877
877
|
events: any[];
|
878
878
|
};
|
879
879
|
}) => import("vue").VNodeChild) | undefined;
|
880
|
-
|
880
|
+
'interval-title'?: ((arg: {
|
881
881
|
interval: {
|
882
882
|
label: string;
|
883
883
|
start: unknown;
|
@@ -914,7 +914,7 @@ export declare const VCalendar: {
|
|
914
914
|
}) => import("vue").VNodeChild) | undefined;
|
915
915
|
};
|
916
916
|
'v-slots'?: {
|
917
|
-
|
917
|
+
'interval-body'?: false | ((arg: {
|
918
918
|
interval: {
|
919
919
|
label: string;
|
920
920
|
start: unknown;
|
@@ -922,7 +922,7 @@ export declare const VCalendar: {
|
|
922
922
|
events: any[];
|
923
923
|
};
|
924
924
|
}) => import("vue").VNodeChild) | undefined;
|
925
|
-
|
925
|
+
'interval-event'?: false | ((arg: {
|
926
926
|
height: string;
|
927
927
|
margin: string;
|
928
928
|
eventClass: string;
|
@@ -934,7 +934,7 @@ export declare const VCalendar: {
|
|
934
934
|
events: any[];
|
935
935
|
};
|
936
936
|
}) => import("vue").VNodeChild) | undefined;
|
937
|
-
|
937
|
+
'interval-title'?: false | ((arg: {
|
938
938
|
interval: {
|
939
939
|
label: string;
|
940
940
|
start: unknown;
|
@@ -971,7 +971,7 @@ export declare const VCalendar: {
|
|
971
971
|
}) => import("vue").VNodeChild) | undefined;
|
972
972
|
} | undefined;
|
973
973
|
} & {
|
974
|
-
"v-slot:
|
974
|
+
"v-slot:interval-body"?: false | ((arg: {
|
975
975
|
interval: {
|
976
976
|
label: string;
|
977
977
|
start: unknown;
|
@@ -979,7 +979,7 @@ export declare const VCalendar: {
|
|
979
979
|
events: any[];
|
980
980
|
};
|
981
981
|
}) => import("vue").VNodeChild) | undefined;
|
982
|
-
"v-slot:
|
982
|
+
"v-slot:interval-event"?: false | ((arg: {
|
983
983
|
height: string;
|
984
984
|
margin: string;
|
985
985
|
eventClass: string;
|
@@ -991,7 +991,7 @@ export declare const VCalendar: {
|
|
991
991
|
events: any[];
|
992
992
|
};
|
993
993
|
}) => import("vue").VNodeChild) | undefined;
|
994
|
-
"v-slot:
|
994
|
+
"v-slot:interval-title"?: false | ((arg: {
|
995
995
|
interval: {
|
996
996
|
label: string;
|
997
997
|
start: unknown;
|
@@ -1061,7 +1061,7 @@ export declare const VCalendar: {
|
|
1061
1061
|
intervals: number;
|
1062
1062
|
hideWeekNumber: boolean;
|
1063
1063
|
}, {}, string, import("vue").SlotsType<Partial<{
|
1064
|
-
|
1064
|
+
'interval-body': (arg: {
|
1065
1065
|
interval: {
|
1066
1066
|
label: string;
|
1067
1067
|
start: unknown;
|
@@ -1069,7 +1069,7 @@ export declare const VCalendar: {
|
|
1069
1069
|
events: any[];
|
1070
1070
|
};
|
1071
1071
|
}) => import("vue").VNode[];
|
1072
|
-
|
1072
|
+
'interval-event': (arg: {
|
1073
1073
|
height: string;
|
1074
1074
|
margin: string;
|
1075
1075
|
eventClass: string;
|
@@ -1081,7 +1081,7 @@ export declare const VCalendar: {
|
|
1081
1081
|
events: any[];
|
1082
1082
|
};
|
1083
1083
|
}) => import("vue").VNode[];
|
1084
|
-
|
1084
|
+
'interval-title': (arg: {
|
1085
1085
|
interval: {
|
1086
1086
|
label: string;
|
1087
1087
|
start: unknown;
|
@@ -40,9 +40,8 @@ export const VCalendar = genericComponent()({
|
|
40
40
|
model,
|
41
41
|
displayValue,
|
42
42
|
weekNumbers,
|
43
|
-
|
43
|
+
weekdayLabels
|
44
44
|
} = useCalendar(props);
|
45
|
-
const dayNames = adapter.getWeekdays();
|
46
45
|
function onClickNext() {
|
47
46
|
if (props.viewMode === 'month') {
|
48
47
|
model.value = [adapter.addMonths(displayValue.value, 1)];
|
@@ -80,6 +79,7 @@ export const VCalendar = genericComponent()({
|
|
80
79
|
useRender(() => {
|
81
80
|
const calendarDayProps = VCalendarDay.filterProps(props);
|
82
81
|
const calendarHeaderProps = VCalendarHeader.filterProps(props);
|
82
|
+
const weekdaysCount = daysInWeek.value.length;
|
83
83
|
return _createElementVNode("div", {
|
84
84
|
"class": _normalizeClass(['v-calendar', {
|
85
85
|
'v-calendar-monthly': props.viewMode === 'month',
|
@@ -101,19 +101,19 @@ export const VCalendar = genericComponent()({
|
|
101
101
|
}), {
|
102
102
|
title: slots.title
|
103
103
|
}))]), _createElementVNode("div", {
|
104
|
-
"class": _normalizeClass(['v-calendar__container', `days__${
|
104
|
+
"class": _normalizeClass(['v-calendar__container', `days__${weekdaysCount}`])
|
105
105
|
}, [props.viewMode === 'month' && !props.hideDayHeader && _createElementVNode("div", {
|
106
|
-
"class": _normalizeClass(['v-calendar-weekly__head', `days__${
|
106
|
+
"class": _normalizeClass(['v-calendar-weekly__head', `days__${weekdaysCount}`, ...(!props.hideWeekNumber ? ['v-calendar-weekly__head-weeknumbers'] : [])]),
|
107
107
|
"key": "calendarWeeklyHead"
|
108
108
|
}, [!props.hideWeekNumber ? _createElementVNode("div", {
|
109
109
|
"key": "weekNumber0",
|
110
110
|
"class": "v-calendar-weekly__head-weeknumber"
|
111
|
-
}, null) : '',
|
111
|
+
}, null) : '', weekdayLabels.value.map(weekday => _createElementVNode("div", {
|
112
112
|
"class": _normalizeClass(`v-calendar-weekly__head-weekday${!props.hideWeekNumber ? '-with-weeknumber' : ''}`)
|
113
|
-
}, [
|
113
|
+
}, [weekday]))]), props.viewMode === 'month' && _createElementVNode("div", {
|
114
114
|
"key": "VCalendarMonth",
|
115
|
-
"class": _normalizeClass(['v-calendar-month__days', `days${!props.hideWeekNumber ? '-with-weeknumbers' : ''}__${
|
116
|
-
}, [chunkArray(daysInMonth.value,
|
115
|
+
"class": _normalizeClass(['v-calendar-month__days', `days${!props.hideWeekNumber ? '-with-weeknumbers' : ''}__${weekdaysCount}`, ...(!props.hideWeekNumber ? ['v-calendar-month__weeknumbers'] : [])])
|
116
|
+
}, [chunkArray(daysInMonth.value, weekdaysCount).map((week, wi) => [!props.hideWeekNumber ? _createElementVNode("div", _mergeProps({
|
117
117
|
"class": "v-calendar-month__weeknumber"
|
118
118
|
}, getPrefixedEventHandlers(attrs, ':weekNumber', () => ({
|
119
119
|
weekNumber: weekNumbers.value[wi],
|
@@ -136,7 +136,7 @@ export const VCalendar = genericComponent()({
|
|
136
136
|
"dayIndex": i,
|
137
137
|
"events": props.events?.filter(e => adapter.isSameDay(e.start, day.date) || adapter.isSameDay(e.end, day.date))
|
138
138
|
}, attrs), {
|
139
|
-
...pick(slots, ['interval', '
|
139
|
+
...pick(slots, ['interval', 'interval-body', 'interval-event', 'interval-title'])
|
140
140
|
})), props.viewMode === 'day' && (slots['day-interval'] ? slots['day-interval']({
|
141
141
|
day: genDays([displayValue.value], adapter.date())[0],
|
142
142
|
dayIndex: 0,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"VCalendar.js","names":["makeVCalendarDayProps","VCalendarDay","makeVCalendarHeaderProps","VCalendarHeader","VCalendarMonthDay","makeCalendarProps","useCalendar","useDate","computed","nextTick","chunkArray","genericComponent","getPrefixedEventHandlers","pick","propsFactory","useRender","makeVCalendarProps","hideHeader","Boolean","hideWeekNumber","VCalendar","name","props","emits","next","prev","today","setup","_ref","attrs","emit","slots","adapter","daysInMonth","daysInWeek","genDays","model","displayValue","weekNumbers","weekDays","dayNames","getWeekdays","onClickNext","viewMode","value","addMonths","addDays","onClickPrev","onClickToday","date","title","format","calendarDayProps","filterProps","calendarHeaderProps","_createElementVNode","_normalizeClass","header","clickNext","clickPrev","clickToday","_createVNode","_mergeProps","length","hideDayHeader","map","weekday","week","wi","weekNumber","day","getTime","events","filter","e","isSameDay","start","end","i","dayIndex"],"sources":["../../../src/labs/VCalendar/VCalendar.tsx"],"sourcesContent":["// Styles\nimport './VCalendar.sass'\n\n// Components\nimport { makeVCalendarDayProps, VCalendarDay } from './VCalendarDay'\nimport { makeVCalendarHeaderProps, VCalendarHeader } from './VCalendarHeader'\nimport { VCalendarMonthDay } from './VCalendarMonthDay'\n\n// Composables\nimport { makeCalendarProps, useCalendar } from '@/composables/calendar'\nimport { useDate } from '@/composables/date/date'\n\n// Utilities\nimport { computed, nextTick } from 'vue'\nimport { chunkArray, genericComponent, getPrefixedEventHandlers, pick, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VCalendarDaySlots } from './VCalendarDay'\nimport type { CalendarDay } from '@/composables/calendar'\n\nexport const makeVCalendarProps = propsFactory({\n hideHeader: Boolean,\n hideWeekNumber: Boolean,\n\n ...makeCalendarProps(),\n ...makeVCalendarDayProps(),\n ...makeVCalendarHeaderProps(),\n}, 'VCalendar')\n\nexport type VCalendarSlots = VCalendarDaySlots & {\n 'day-body': { day?: CalendarDay, events?: Array<any> }\n 'day-title': { title?: number | string }\n 'day-event': { day?: CalendarDay, allDay: boolean, event?: Record<string, unknown> }\n header: { title: string, clickNext: Function, clickPrev: Function, clickToday: Function }\n 'day-interval': { day?: CalendarDay, dayIndex: number, events?: Array<any> }\n title: { title?: string }\n}\n\nexport const VCalendar = genericComponent<VCalendarSlots>()({\n name: 'VCalendar',\n\n props: makeVCalendarProps(),\n\n emits: {\n next: null,\n prev: null,\n today: null,\n 'update:modelValue': null,\n },\n\n setup (props, { attrs, emit, slots }) {\n const adapter = useDate()\n\n const { daysInMonth, daysInWeek, genDays, model, displayValue, weekNumbers, weekDays } = useCalendar(props as any)\n\n const dayNames = adapter.getWeekdays()\n\n function onClickNext () {\n if (props.viewMode === 'month') {\n model.value = [adapter.addMonths(displayValue.value, 1)]\n } else if (props.viewMode === 'week') {\n model.value = [adapter.addDays(displayValue.value, 7)]\n } else if (props.viewMode === 'day') {\n model.value = [adapter.addDays(displayValue.value, 1)]\n }\n nextTick(() => {\n emit('next', model.value[0])\n })\n }\n\n function onClickPrev () {\n if (props.viewMode === 'month') {\n model.value = [adapter.addMonths(displayValue.value, -1)]\n } else if (props.viewMode === 'week') {\n model.value = [adapter.addDays(displayValue.value, -7)]\n } else if (props.viewMode === 'day') {\n model.value = [adapter.addDays(displayValue.value, -1)]\n }\n nextTick(() => {\n emit('prev', model.value[0])\n })\n }\n\n function onClickToday () {\n const date = adapter.date()\n model.value = [date]\n nextTick(() => {\n emit('today', model.value[0])\n })\n }\n\n const title = computed(() => {\n return adapter.format(displayValue.value, 'monthAndYear')\n })\n\n useRender(() => {\n const calendarDayProps = VCalendarDay.filterProps(props)\n const calendarHeaderProps = VCalendarHeader.filterProps(props)\n\n return (\n <div class={[\n 'v-calendar',\n {\n 'v-calendar-monthly': props.viewMode === 'month',\n 'v-calendar-weekly': props.viewMode === 'week',\n 'v-calendar-day': props.viewMode === 'day',\n },\n ]}\n >\n <div>\n { !props.hideHeader && (\n slots.header?.({\n title: title.value,\n clickNext: onClickNext,\n clickPrev: onClickPrev,\n clickToday: onClickToday,\n }) ?? (\n <VCalendarHeader\n key=\"calendar-header\"\n { ...calendarHeaderProps }\n title={ title.value }\n onClick:next={ onClickNext }\n onClick:prev={ onClickPrev }\n onClick:toToday={ onClickToday }\n >\n {{ title: slots.title }}\n </VCalendarHeader>\n )\n )}\n </div>\n\n <div class={['v-calendar__container', `days__${weekDays.value.length}`]}>\n { props.viewMode === 'month' && !props.hideDayHeader && (\n <div\n class={\n [\n 'v-calendar-weekly__head',\n `days__${weekDays.value.length}`,\n ...(!props.hideWeekNumber ? ['v-calendar-weekly__head-weeknumbers'] : []),\n ]\n }\n key=\"calendarWeeklyHead\"\n >\n { !props.hideWeekNumber ? <div key=\"weekNumber0\" class=\"v-calendar-weekly__head-weeknumber\"></div> : '' }\n {\n weekDays.value.map(weekday => (\n <div class={ `v-calendar-weekly__head-weekday${!props.hideWeekNumber ? '-with-weeknumber' : ''}` }>\n { dayNames[weekday] }\n </div>\n ))\n }\n </div>\n )}\n\n { props.viewMode === 'month' && (\n <div\n key=\"VCalendarMonth\"\n class={\n [\n 'v-calendar-month__days',\n `days${!props.hideWeekNumber ? '-with-weeknumbers' : ''}__${weekDays.value.length}`,\n ...(!props.hideWeekNumber ? ['v-calendar-month__weeknumbers'] : []),\n ]\n }\n >\n { chunkArray(daysInMonth.value, weekDays.value.length)\n .map((week, wi) => (\n [\n !props.hideWeekNumber ? (\n <div\n class=\"v-calendar-month__weeknumber\"\n { ...getPrefixedEventHandlers(attrs, ':weekNumber', () => ({ weekNumber: weekNumbers.value[wi], week })) }\n >{ weekNumbers.value[wi] }</div>\n ) : '',\n week.map(day => (\n <VCalendarMonthDay\n key={ day.date.getTime() }\n { ...calendarDayProps }\n day={ day }\n title={ adapter.format(day.date, 'dayOfMonth') }\n events={ props.events?.filter(e => adapter.isSameDay(day.date, e.start) || adapter.isSameDay(day.date, e.end)) }\n { ...attrs }\n >\n {{\n ...pick(slots, ['day-body', 'day-event', 'day-title']),\n }}\n </VCalendarMonthDay>\n )),\n ]\n ))\n }\n </div>\n )}\n { props.viewMode === 'week' && (\n daysInWeek.value.map((day, i) =>\n slots['day-interval'] ? slots['day-interval']?.({\n ...calendarDayProps,\n day,\n dayIndex: i,\n events: props.events?.filter(e => adapter.isSameDay(e.start, day.date) || adapter.isSameDay(e.end, day.date)),\n }) : (\n <VCalendarDay\n { ...calendarDayProps }\n day={ day }\n dayIndex={ i }\n events={ props.events?.filter(e => adapter.isSameDay(e.start, day.date) || adapter.isSameDay(e.end, day.date)) }\n { ...attrs }\n >\n {{ ...pick(slots, ['interval', 'intervalBody', 'intervalEvent', 'intervalTitle']) }}\n </VCalendarDay>\n )\n ))\n }\n\n { props.viewMode === 'day' && (\n slots['day-interval'] ? slots['day-interval']({\n day: genDays([displayValue.value as Date], adapter.date() as Date)[0],\n dayIndex: 0,\n events: props.events?.filter(e =>\n adapter.isSameDay(e.start, genDays([displayValue.value as Date], adapter.date() as Date)[0].date) ||\n adapter.isSameDay(e.end, genDays([displayValue.value as Date], adapter.date() as Date)[0].date)\n ),\n }) : (\n <VCalendarDay\n { ...calendarDayProps }\n day={ genDays([model.value[0] as Date], adapter.date() as Date)[0] }\n dayIndex={ 0 }\n events={\n props.events?.filter(e =>\n adapter.isSameDay(e.start, genDays([model.value[0] as Date], adapter.date() as Date)[0].date) ||\n adapter.isSameDay(e.end, genDays([model.value[0] as Date], adapter.date() as Date)[0].date)\n )\n }\n { ...attrs }\n ></VCalendarDay>\n )\n )}\n </div>\n </div>\n )\n })\n\n return { daysInMonth, daysInWeek, genDays }\n },\n})\n\nexport type VCalendar = InstanceType<typeof VCalendar>\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"VCalendar.js","names":["makeVCalendarDayProps","VCalendarDay","makeVCalendarHeaderProps","VCalendarHeader","VCalendarMonthDay","makeCalendarProps","useCalendar","useDate","computed","nextTick","chunkArray","genericComponent","getPrefixedEventHandlers","pick","propsFactory","useRender","makeVCalendarProps","hideHeader","Boolean","hideWeekNumber","VCalendar","name","props","emits","next","prev","today","setup","_ref","attrs","emit","slots","adapter","daysInMonth","daysInWeek","genDays","model","displayValue","weekNumbers","weekdayLabels","onClickNext","viewMode","value","addMonths","addDays","onClickPrev","onClickToday","date","title","format","calendarDayProps","filterProps","calendarHeaderProps","weekdaysCount","length","_createElementVNode","_normalizeClass","header","clickNext","clickPrev","clickToday","_createVNode","_mergeProps","hideDayHeader","map","weekday","week","wi","weekNumber","day","getTime","events","filter","e","isSameDay","start","end","i","dayIndex"],"sources":["../../../src/labs/VCalendar/VCalendar.tsx"],"sourcesContent":["// Styles\nimport './VCalendar.sass'\n\n// Components\nimport { makeVCalendarDayProps, VCalendarDay } from './VCalendarDay'\nimport { makeVCalendarHeaderProps, VCalendarHeader } from './VCalendarHeader'\nimport { VCalendarMonthDay } from './VCalendarMonthDay'\n\n// Composables\nimport { makeCalendarProps, useCalendar } from '@/composables/calendar'\nimport { useDate } from '@/composables/date/date'\n\n// Utilities\nimport { computed, nextTick } from 'vue'\nimport { chunkArray, genericComponent, getPrefixedEventHandlers, pick, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VCalendarDaySlots } from './VCalendarDay'\nimport type { CalendarDay } from '@/composables/calendar'\n\nexport const makeVCalendarProps = propsFactory({\n hideHeader: Boolean,\n hideWeekNumber: Boolean,\n\n ...makeCalendarProps(),\n ...makeVCalendarDayProps(),\n ...makeVCalendarHeaderProps(),\n}, 'VCalendar')\n\nexport type VCalendarSlots = VCalendarDaySlots & {\n 'day-body': { day?: CalendarDay, events?: Array<any> }\n 'day-title': { title?: number | string }\n 'day-event': { day?: CalendarDay, allDay: boolean, event?: Record<string, unknown> }\n header: { title: string, clickNext: Function, clickPrev: Function, clickToday: Function }\n 'day-interval': { day?: CalendarDay, dayIndex: number, events?: Array<any> }\n title: { title?: string }\n}\n\nexport const VCalendar = genericComponent<VCalendarSlots>()({\n name: 'VCalendar',\n\n props: makeVCalendarProps(),\n\n emits: {\n next: null,\n prev: null,\n today: null,\n 'update:modelValue': null,\n },\n\n setup (props, { attrs, emit, slots }) {\n const adapter = useDate()\n\n const { daysInMonth, daysInWeek, genDays, model, displayValue, weekNumbers, weekdayLabels } = useCalendar(props as any)\n\n function onClickNext () {\n if (props.viewMode === 'month') {\n model.value = [adapter.addMonths(displayValue.value, 1)]\n } else if (props.viewMode === 'week') {\n model.value = [adapter.addDays(displayValue.value, 7)]\n } else if (props.viewMode === 'day') {\n model.value = [adapter.addDays(displayValue.value, 1)]\n }\n nextTick(() => {\n emit('next', model.value[0])\n })\n }\n\n function onClickPrev () {\n if (props.viewMode === 'month') {\n model.value = [adapter.addMonths(displayValue.value, -1)]\n } else if (props.viewMode === 'week') {\n model.value = [adapter.addDays(displayValue.value, -7)]\n } else if (props.viewMode === 'day') {\n model.value = [adapter.addDays(displayValue.value, -1)]\n }\n nextTick(() => {\n emit('prev', model.value[0])\n })\n }\n\n function onClickToday () {\n const date = adapter.date()\n model.value = [date]\n nextTick(() => {\n emit('today', model.value[0])\n })\n }\n\n const title = computed(() => {\n return adapter.format(displayValue.value, 'monthAndYear')\n })\n\n useRender(() => {\n const calendarDayProps = VCalendarDay.filterProps(props)\n const calendarHeaderProps = VCalendarHeader.filterProps(props)\n\n const weekdaysCount = daysInWeek.value.length\n\n return (\n <div class={[\n 'v-calendar',\n {\n 'v-calendar-monthly': props.viewMode === 'month',\n 'v-calendar-weekly': props.viewMode === 'week',\n 'v-calendar-day': props.viewMode === 'day',\n },\n ]}\n >\n <div>\n { !props.hideHeader && (\n slots.header?.({\n title: title.value,\n clickNext: onClickNext,\n clickPrev: onClickPrev,\n clickToday: onClickToday,\n }) ?? (\n <VCalendarHeader\n key=\"calendar-header\"\n { ...calendarHeaderProps }\n title={ title.value }\n onClick:next={ onClickNext }\n onClick:prev={ onClickPrev }\n onClick:toToday={ onClickToday }\n >\n {{ title: slots.title }}\n </VCalendarHeader>\n )\n )}\n </div>\n\n <div class={['v-calendar__container', `days__${weekdaysCount}`]}>\n { props.viewMode === 'month' && !props.hideDayHeader && (\n <div\n class={\n [\n 'v-calendar-weekly__head',\n `days__${weekdaysCount}`,\n ...(!props.hideWeekNumber ? ['v-calendar-weekly__head-weeknumbers'] : []),\n ]\n }\n key=\"calendarWeeklyHead\"\n >\n { !props.hideWeekNumber ? <div key=\"weekNumber0\" class=\"v-calendar-weekly__head-weeknumber\"></div> : '' }\n {\n weekdayLabels.value.map(weekday => (\n <div class={ `v-calendar-weekly__head-weekday${!props.hideWeekNumber ? '-with-weeknumber' : ''}` }>\n { weekday }\n </div>\n ))\n }\n </div>\n )}\n\n { props.viewMode === 'month' && (\n <div\n key=\"VCalendarMonth\"\n class={\n [\n 'v-calendar-month__days',\n `days${!props.hideWeekNumber ? '-with-weeknumbers' : ''}__${weekdaysCount}`,\n ...(!props.hideWeekNumber ? ['v-calendar-month__weeknumbers'] : []),\n ]\n }\n >\n { chunkArray(daysInMonth.value, weekdaysCount)\n .map((week, wi) => (\n [\n !props.hideWeekNumber ? (\n <div\n class=\"v-calendar-month__weeknumber\"\n { ...getPrefixedEventHandlers(attrs, ':weekNumber', () => ({ weekNumber: weekNumbers.value[wi], week })) }\n >{ weekNumbers.value[wi] }</div>\n ) : '',\n week.map(day => (\n <VCalendarMonthDay\n key={ day.date.getTime() }\n { ...calendarDayProps }\n day={ day }\n title={ adapter.format(day.date, 'dayOfMonth') }\n events={ props.events?.filter(e => adapter.isSameDay(day.date, e.start) || adapter.isSameDay(day.date, e.end)) }\n { ...attrs }\n >\n {{\n ...pick(slots, ['day-body', 'day-event', 'day-title']),\n }}\n </VCalendarMonthDay>\n )),\n ]\n ))\n }\n </div>\n )}\n { props.viewMode === 'week' && (\n daysInWeek.value.map((day, i) =>\n slots['day-interval'] ? slots['day-interval']?.({\n ...calendarDayProps,\n day,\n dayIndex: i,\n events: props.events?.filter(e => adapter.isSameDay(e.start, day.date) || adapter.isSameDay(e.end, day.date)),\n }) : (\n <VCalendarDay\n { ...calendarDayProps }\n day={ day }\n dayIndex={ i }\n events={ props.events?.filter(e => adapter.isSameDay(e.start, day.date) || adapter.isSameDay(e.end, day.date)) }\n { ...attrs }\n >\n {{ ...pick(slots, ['interval', 'interval-body', 'interval-event', 'interval-title']) }}\n </VCalendarDay>\n )\n ))\n }\n\n { props.viewMode === 'day' && (\n slots['day-interval'] ? slots['day-interval']({\n day: genDays([displayValue.value as Date], adapter.date() as Date)[0],\n dayIndex: 0,\n events: props.events?.filter(e =>\n adapter.isSameDay(e.start, genDays([displayValue.value as Date], adapter.date() as Date)[0].date) ||\n adapter.isSameDay(e.end, genDays([displayValue.value as Date], adapter.date() as Date)[0].date)\n ),\n }) : (\n <VCalendarDay\n { ...calendarDayProps }\n day={ genDays([model.value[0] as Date], adapter.date() as Date)[0] }\n dayIndex={ 0 }\n events={\n props.events?.filter(e =>\n adapter.isSameDay(e.start, genDays([model.value[0] as Date], adapter.date() as Date)[0].date) ||\n adapter.isSameDay(e.end, genDays([model.value[0] as Date], adapter.date() as Date)[0].date)\n )\n }\n { ...attrs }\n ></VCalendarDay>\n )\n )}\n </div>\n </div>\n )\n })\n\n return { daysInMonth, daysInWeek, genDays }\n },\n})\n\nexport type VCalendar = InstanceType<typeof VCalendar>\n"],"mappings":"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","ignoreList":[]}
|