vuetify 3.5.3 → 3.5.5

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 (159) hide show
  1. package/dist/json/attributes.json +2771 -2523
  2. package/dist/json/importMap-labs.json +12 -8
  3. package/dist/json/importMap.json +100 -100
  4. package/dist/json/tags.json +236 -169
  5. package/dist/json/web-types.json +3218 -2563
  6. package/dist/vuetify-labs.css +2265 -2242
  7. package/dist/vuetify-labs.d.ts +1234 -152
  8. package/dist/vuetify-labs.esm.js +582 -88
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +582 -88
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +1316 -1293
  13. package/dist/vuetify.d.ts +894 -187
  14. package/dist/vuetify.esm.js +148 -87
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +148 -87
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +652 -647
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VAlert/index.d.mts +9 -0
  22. package/lib/components/VAppBar/index.d.mts +18 -0
  23. package/lib/components/VAutocomplete/VAutocomplete.mjs +4 -4
  24. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  25. package/lib/components/VAutocomplete/index.d.mts +33 -6
  26. package/lib/components/VAvatar/VAvatar.mjs +2 -2
  27. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  28. package/lib/components/VAvatar/index.d.mts +9 -0
  29. package/lib/components/VBadge/index.d.mts +9 -0
  30. package/lib/components/VBanner/index.d.mts +9 -0
  31. package/lib/components/VBottomNavigation/index.d.mts +9 -0
  32. package/lib/components/VBreadcrumbs/index.d.mts +9 -0
  33. package/lib/components/VBtn/index.d.mts +9 -0
  34. package/lib/components/VBtnGroup/index.d.mts +9 -0
  35. package/lib/components/VBtnToggle/index.d.mts +9 -0
  36. package/lib/components/VCard/index.d.mts +9 -0
  37. package/lib/components/VCarousel/index.d.mts +9 -0
  38. package/lib/components/VChip/index.d.mts +9 -0
  39. package/lib/components/VColorPicker/VColorPicker.mjs +24 -12
  40. package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
  41. package/lib/components/VColorPicker/index.d.mts +9 -0
  42. package/lib/components/VCombobox/index.d.mts +33 -6
  43. package/lib/components/VDataIterator/index.d.mts +3 -3
  44. package/lib/components/VDataTable/VDataTable.mjs.map +1 -1
  45. package/lib/components/VDataTable/VDataTableHeaders.mjs.map +1 -1
  46. package/lib/components/VDataTable/index.d.mts +355 -117
  47. package/lib/components/VDataTable/types.mjs.map +1 -1
  48. package/lib/components/VDatePicker/VDatePicker.css +2 -21
  49. package/lib/components/VDatePicker/VDatePicker.mjs +15 -11
  50. package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
  51. package/lib/components/VDatePicker/VDatePicker.sass +3 -18
  52. package/lib/components/VDatePicker/VDatePickerHeader.css +2 -0
  53. package/lib/components/VDatePicker/VDatePickerHeader.sass +3 -0
  54. package/lib/components/VDatePicker/VDatePickerMonth.css +11 -5
  55. package/lib/components/VDatePicker/VDatePickerMonth.mjs +2 -1
  56. package/lib/components/VDatePicker/VDatePickerMonth.mjs.map +1 -1
  57. package/lib/components/VDatePicker/VDatePickerMonth.sass +13 -5
  58. package/lib/components/VDatePicker/VDatePickerMonths.css +2 -3
  59. package/lib/components/VDatePicker/VDatePickerMonths.mjs +6 -3
  60. package/lib/components/VDatePicker/VDatePickerMonths.mjs.map +1 -1
  61. package/lib/components/VDatePicker/VDatePickerMonths.sass +4 -3
  62. package/lib/components/VDatePicker/VDatePickerYears.css +2 -2
  63. package/lib/components/VDatePicker/VDatePickerYears.mjs +8 -1
  64. package/lib/components/VDatePicker/VDatePickerYears.mjs.map +1 -1
  65. package/lib/components/VDatePicker/VDatePickerYears.sass +4 -2
  66. package/lib/components/VDatePicker/_variables.scss +14 -34
  67. package/lib/components/VDatePicker/index.d.mts +13 -4
  68. package/lib/components/VExpansionPanel/VExpansionPanel.css +14 -0
  69. package/lib/components/VExpansionPanel/VExpansionPanel.sass +14 -0
  70. package/lib/components/VExpansionPanel/VExpansionPanels.mjs +9 -2
  71. package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
  72. package/lib/components/VExpansionPanel/index.d.mts +27 -0
  73. package/lib/components/VField/VField.css +20 -1
  74. package/lib/components/VField/VField.sass +19 -1
  75. package/lib/components/VField/index.d.mts +9 -0
  76. package/lib/components/VFileInput/VFileInput.mjs +1 -1
  77. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  78. package/lib/components/VFileInput/index.d.mts +9 -0
  79. package/lib/components/VFooter/index.d.mts +9 -0
  80. package/lib/components/VImg/index.d.mts +9 -0
  81. package/lib/components/VList/VListItem.css +2 -1
  82. package/lib/components/VList/VListItem.sass +1 -0
  83. package/lib/components/VList/_variables.scss +2 -1
  84. package/lib/components/VList/index.d.mts +18 -0
  85. package/lib/components/VMenu/VMenu.mjs +5 -5
  86. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  87. package/lib/components/VMenu/shared.mjs.map +1 -1
  88. package/lib/components/VNavigationDrawer/index.d.mts +9 -0
  89. package/lib/components/VPagination/index.d.mts +9 -0
  90. package/lib/components/VProgressLinear/index.d.mts +9 -0
  91. package/lib/components/VRangeSlider/index.d.mts +9 -0
  92. package/lib/components/VSelect/VSelect.mjs +4 -3
  93. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  94. package/lib/components/VSelect/index.d.mts +33 -6
  95. package/lib/components/VSheet/index.d.mts +9 -0
  96. package/lib/components/VSlider/index.d.mts +9 -0
  97. package/lib/components/VSnackbar/VSnackbar.mjs +1 -2
  98. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  99. package/lib/components/VSnackbar/index.d.mts +9 -0
  100. package/lib/components/VStepper/index.d.mts +9 -0
  101. package/lib/components/VSystemBar/index.d.mts +9 -0
  102. package/lib/components/VTabs/index.d.mts +33 -6
  103. package/lib/components/VTextField/index.d.mts +33 -6
  104. package/lib/components/VTextarea/index.d.mts +9 -0
  105. package/lib/components/VTimeline/index.d.mts +9 -0
  106. package/lib/components/VToolbar/index.d.mts +9 -0
  107. package/lib/components/VTooltip/VTooltip.css +1 -0
  108. package/lib/components/VTooltip/VTooltip.sass +1 -0
  109. package/lib/components/VTooltip/_variables.scss +1 -0
  110. package/lib/components/index.d.mts +857 -151
  111. package/lib/composables/form.mjs +2 -1
  112. package/lib/composables/form.mjs.map +1 -1
  113. package/lib/composables/goto.mjs +16 -18
  114. package/lib/composables/goto.mjs.map +1 -1
  115. package/lib/composables/group.mjs +2 -0
  116. package/lib/composables/group.mjs.map +1 -1
  117. package/lib/composables/icons.mjs +17 -13
  118. package/lib/composables/icons.mjs.map +1 -1
  119. package/lib/composables/rounded.mjs +5 -1
  120. package/lib/composables/rounded.mjs.map +1 -1
  121. package/lib/composables/virtual.mjs +11 -3
  122. package/lib/composables/virtual.mjs.map +1 -1
  123. package/lib/entry-bundler.mjs +1 -1
  124. package/lib/framework.mjs +1 -1
  125. package/lib/iconsets/fa-svg.mjs +2 -1
  126. package/lib/iconsets/fa-svg.mjs.map +1 -1
  127. package/lib/index.d.mts +37 -36
  128. package/lib/labs/VCalendar/VCalendar.mjs +1 -1
  129. package/lib/labs/VCalendar/VCalendar.mjs.map +1 -1
  130. package/lib/labs/VConfirmEdit/__test__/VConfirmEdit.spec.cy.mjs +1 -1
  131. package/lib/labs/VConfirmEdit/__test__/VConfirmEdit.spec.cy.mjs.map +1 -1
  132. package/lib/labs/VPicker/VPicker.css +2 -2
  133. package/lib/labs/VPicker/VPicker.sass +2 -2
  134. package/lib/labs/VPicker/_variables.scss +2 -4
  135. package/lib/labs/VPicker/index.d.mts +9 -0
  136. package/lib/labs/VSparkline/VBarline.mjs +138 -0
  137. package/lib/labs/VSparkline/VBarline.mjs.map +1 -0
  138. package/lib/labs/VSparkline/VSparkline.mjs +49 -0
  139. package/lib/labs/VSparkline/VSparkline.mjs.map +1 -0
  140. package/lib/labs/VSparkline/VTrendline.mjs +143 -0
  141. package/lib/labs/VSparkline/VTrendline.mjs.map +1 -0
  142. package/lib/labs/VSparkline/index.d.mts +374 -0
  143. package/lib/labs/VSparkline/index.mjs +2 -0
  144. package/lib/labs/VSparkline/index.mjs.map +1 -0
  145. package/lib/labs/VSparkline/util/line.mjs +52 -0
  146. package/lib/labs/VSparkline/util/line.mjs.map +1 -0
  147. package/lib/labs/VSparkline/util/path.mjs +60 -0
  148. package/lib/labs/VSparkline/util/path.mjs.map +1 -0
  149. package/lib/labs/components.d.mts +376 -1
  150. package/lib/labs/components.mjs +1 -0
  151. package/lib/labs/components.mjs.map +1 -1
  152. package/lib/locale/nl.mjs +1 -1
  153. package/lib/locale/nl.mjs.map +1 -1
  154. package/lib/util/helpers.mjs +10 -0
  155. package/lib/util/helpers.mjs.map +1 -1
  156. package/package.json +2 -2
  157. package/lib/components/VDatePicker/VDatePickerTitle.mjs +0 -81
  158. package/lib/components/VDatePicker/VDatePickerTitle.mjs.map +0 -1
  159. package/lib/components/VDatePicker/VDatePickerTitle.sass +0 -33
@@ -1 +1 @@
1
- {"version":3,"file":"types.mjs","names":[],"sources":["../../../src/components/VDataTable/types.ts"],"sourcesContent":["// Types\nimport type { provideExpanded } from './composables/expand'\nimport type { Group, GroupableItem, provideGroupBy } from './composables/group'\nimport type { provideSelection, SelectableItem } from './composables/select'\nimport type { FilterFunction, InternalItem } from '@/composables/filter'\nimport type { SelectItemKey } from '@/util'\n\nexport type DataTableCompareFunction<T = any> = (a: T, b: T) => number\n\nexport type DataTableHeader = {\n key?: 'data-table-group' | 'data-table-select' | 'data-table-expand' | (string & {})\n value?: SelectItemKey\n title?: string\n\n fixed?: boolean\n align?: 'start' | 'end' | 'center'\n\n width?: number | string\n minWidth?: string\n maxWidth?: string\n\n headerProps?: Record<string, any>\n cellProps?: HeaderCellProps\n\n sortable?: boolean\n sort?: DataTableCompareFunction\n sortRaw?: DataTableCompareFunction\n filter?: FilterFunction\n\n children?: DataTableHeader[]\n}\n\nexport type InternalDataTableHeader = Omit<DataTableHeader, 'key' | 'value' | 'children'> & {\n key: string | null\n value: SelectItemKey | null\n sortable: boolean\n fixedOffset?: number\n lastFixed?: boolean\n colspan?: number\n rowspan?: number\n children?: InternalDataTableHeader[]\n}\n\nexport interface DataTableItem<T = any> extends InternalItem<T>, GroupableItem<T>, SelectableItem {\n key: any\n index: number\n columns: {\n [key: string]: any\n }\n}\n\nexport type GroupHeaderSlot = {\n index: number\n item: Group\n columns: InternalDataTableHeader[]\n isExpanded: ReturnType<typeof provideExpanded>['isExpanded']\n toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand']\n isSelected: ReturnType<typeof provideSelection>['isSelected']\n toggleSelect: ReturnType<typeof provideSelection>['toggleSelect']\n toggleGroup: ReturnType<typeof provideGroupBy>['toggleGroup']\n isGroupOpen: ReturnType<typeof provideGroupBy>['isGroupOpen']\n}\n\ntype ItemSlotBase<T> = {\n index: number\n item: T\n internalItem: DataTableItem<T>\n isExpanded: ReturnType<typeof provideExpanded>['isExpanded']\n toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand']\n isSelected: ReturnType<typeof provideSelection>['isSelected']\n toggleSelect: ReturnType<typeof provideSelection>['toggleSelect']\n}\n\nexport type ItemSlot<T> = ItemSlotBase<T> & {\n columns: InternalDataTableHeader[]\n}\n\nexport type ItemKeySlot<T> = ItemSlotBase<T> & {\n value: any\n column: InternalDataTableHeader\n}\n\nexport type RowProps<T> =\n | Record<string, any>\n | ((data: Pick<ItemKeySlot<T>, 'index' | 'item' | 'internalItem'>) => Record<string, any>)\n\nexport type CellProps<T> =\n | Record<string, any>\n | ((data: Pick<ItemKeySlot<T>, 'index' | 'item' | 'internalItem' | 'value' | 'column'>) => Record<string, any>)\n\nexport type HeaderCellProps =\n | Record<string, any>\n | ((data: Pick<ItemKeySlot<any>, 'index' | 'item' | 'internalItem' | 'value'>) => Record<string, any>)\n"],"mappings":""}
1
+ {"version":3,"file":"types.mjs","names":[],"sources":["../../../src/components/VDataTable/types.ts"],"sourcesContent":["// Types\nimport type { provideExpanded } from './composables/expand'\nimport type { Group, GroupableItem, provideGroupBy } from './composables/group'\nimport type { provideSelection, SelectableItem } from './composables/select'\nimport type { FilterFunction, InternalItem } from '@/composables/filter'\nimport type { SelectItemKey } from '@/util'\n\nexport type DataTableCompareFunction<T = any> = (a: T, b: T) => number\n\nexport type DataTableHeader<T = Record<string, any>> = {\n key?: 'data-table-group' | 'data-table-select' | 'data-table-expand' | (string & {})\n value?: SelectItemKey<T>\n title?: string\n\n fixed?: boolean\n align?: 'start' | 'end' | 'center'\n\n width?: number | string\n minWidth?: string\n maxWidth?: string\n\n headerProps?: Record<string, any>\n cellProps?: HeaderCellProps\n\n sortable?: boolean\n sort?: DataTableCompareFunction\n sortRaw?: DataTableCompareFunction\n filter?: FilterFunction\n\n children?: DataTableHeader<T>[]\n}\n\nexport type InternalDataTableHeader = Omit<DataTableHeader, 'key' | 'value' | 'children'> & {\n key: string | null\n value: SelectItemKey | null\n sortable: boolean\n fixedOffset?: number\n lastFixed?: boolean\n colspan?: number\n rowspan?: number\n children?: InternalDataTableHeader[]\n}\n\nexport interface DataTableItem<T = any> extends InternalItem<T>, GroupableItem<T>, SelectableItem {\n key: any\n index: number\n columns: {\n [key: string]: any\n }\n}\n\nexport type GroupHeaderSlot = {\n index: number\n item: Group\n columns: InternalDataTableHeader[]\n isExpanded: ReturnType<typeof provideExpanded>['isExpanded']\n toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand']\n isSelected: ReturnType<typeof provideSelection>['isSelected']\n toggleSelect: ReturnType<typeof provideSelection>['toggleSelect']\n toggleGroup: ReturnType<typeof provideGroupBy>['toggleGroup']\n isGroupOpen: ReturnType<typeof provideGroupBy>['isGroupOpen']\n}\n\ntype ItemSlotBase<T> = {\n index: number\n item: T\n internalItem: DataTableItem<T>\n isExpanded: ReturnType<typeof provideExpanded>['isExpanded']\n toggleExpand: ReturnType<typeof provideExpanded>['toggleExpand']\n isSelected: ReturnType<typeof provideSelection>['isSelected']\n toggleSelect: ReturnType<typeof provideSelection>['toggleSelect']\n}\n\nexport type ItemSlot<T> = ItemSlotBase<T> & {\n columns: InternalDataTableHeader[]\n}\n\nexport type ItemKeySlot<T> = ItemSlotBase<T> & {\n value: any\n column: InternalDataTableHeader\n}\n\nexport type RowProps<T> =\n | Record<string, any>\n | ((data: Pick<ItemKeySlot<T>, 'index' | 'item' | 'internalItem'>) => Record<string, any>)\n\nexport type CellProps<T> =\n | Record<string, any>\n | ((data: Pick<ItemKeySlot<T>, 'index' | 'item' | 'internalItem' | 'value' | 'column'>) => Record<string, any>)\n\nexport type HeaderCellProps =\n | Record<string, any>\n | ((data: Pick<ItemKeySlot<any>, 'index' | 'item' | 'internalItem' | 'value'>) => Record<string, any>)\n"],"mappings":""}
@@ -1,26 +1,7 @@
1
- .v-date-picker__input {
2
- padding-top: 16px;
3
- padding-left: 24px;
4
- padding-right: 24px;
5
- }
6
-
7
1
  .v-date-picker {
8
2
  overflow: hidden;
9
- width: 360px;
3
+ width: 328px;
10
4
  }
11
5
  .v-date-picker--show-week {
12
- width: 408px;
13
- }
14
-
15
- .v-date-picker-month {
16
- padding: 0 12px 12px;
17
- }
18
-
19
- .v-date-picker-month__day {
20
- height: 48px;
21
- width: 48px;
22
- }
23
- .v-date-picker-month__day .v-btn {
24
- --v-btn-height: 28px;
25
- --v-btn-size: 0.85rem;
6
+ width: 368px;
26
7
  }
@@ -85,7 +85,7 @@ export const VDatePicker = genericComponent()({
85
85
  return props.multiple && model.value.length > 1 ? t('$vuetify.datePicker.itemsSelected', model.value.length) : model.value[0] && adapter.isValid(model.value[0]) ? adapter.format(model.value[0], 'normalDateWithWeekday') : t(props.header);
86
86
  });
87
87
  const text = computed(() => {
88
- return adapter.format(adapter.parseISO(`${year.value}-${month.value + 1}-01`), 'monthAndYear');
88
+ return adapter.format(adapter.date(new Date(year.value, month.value, 1)), 'monthAndYear');
89
89
  });
90
90
  // const headerIcon = computed(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)
91
91
  const headerTransition = computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`);
@@ -128,7 +128,9 @@ export const VDatePicker = genericComponent()({
128
128
  } else {
129
129
  year.value++;
130
130
  month.value = 0;
131
+ onUpdateYear(year.value);
131
132
  }
133
+ onUpdateMonth(month.value);
132
134
  }
133
135
  function onClickPrev() {
134
136
  if (month.value > 0) {
@@ -136,7 +138,9 @@ export const VDatePicker = genericComponent()({
136
138
  } else {
137
139
  year.value--;
138
140
  month.value = 11;
141
+ onUpdateYear(year.value);
139
142
  }
143
+ onUpdateMonth(month.value);
140
144
  }
141
145
  function onClickDate() {
142
146
  viewMode.value = 'month';
@@ -147,14 +151,14 @@ export const VDatePicker = genericComponent()({
147
151
  function onClickYear() {
148
152
  viewMode.value = viewMode.value === 'year' ? 'month' : 'year';
149
153
  }
150
- watch(month, () => {
154
+ function onUpdateMonth(value) {
151
155
  if (viewMode.value === 'months') onClickMonth();
152
- emit('update:month', month.value);
153
- });
154
- watch(year, () => {
156
+ emit('update:month', value);
157
+ }
158
+ function onUpdateYear(value) {
155
159
  if (viewMode.value === 'year') onClickYear();
156
- emit('update:year', year.value);
157
- });
160
+ emit('update:year', value);
161
+ }
158
162
  watch(model, (val, oldVal) => {
159
163
  const before = adapter.date(wrapInArray(val)[0]);
160
164
  const after = adapter.date(wrapInArray(oldVal)[0]);
@@ -210,14 +214,14 @@ export const VDatePicker = genericComponent()({
210
214
  "key": "date-picker-months"
211
215
  }, datePickerMonthsProps, {
212
216
  "modelValue": month.value,
213
- "onUpdate:modelValue": $event => month.value = $event,
217
+ "onUpdate:modelValue": [$event => month.value = $event, onUpdateMonth],
214
218
  "min": minDate.value,
215
219
  "max": maxDate.value
216
220
  }), null) : viewMode.value === 'year' ? _createVNode(VDatePickerYears, _mergeProps({
217
221
  "key": "date-picker-years"
218
222
  }, datePickerYearsProps, {
219
223
  "modelValue": year.value,
220
- "onUpdate:modelValue": $event => year.value = $event,
224
+ "onUpdate:modelValue": [$event => year.value = $event, onUpdateYear],
221
225
  "min": minDate.value,
222
226
  "max": maxDate.value
223
227
  }), null) : _createVNode(VDatePickerMonth, _mergeProps({
@@ -226,9 +230,9 @@ export const VDatePicker = genericComponent()({
226
230
  "modelValue": model.value,
227
231
  "onUpdate:modelValue": $event => model.value = $event,
228
232
  "month": month.value,
229
- "onUpdate:month": $event => month.value = $event,
233
+ "onUpdate:month": [$event => month.value = $event, onUpdateMonth],
230
234
  "year": year.value,
231
- "onUpdate:year": $event => year.value = $event,
235
+ "onUpdate:year": [$event => year.value = $event, onUpdateYear],
232
236
  "min": minDate.value,
233
237
  "max": maxDate.value
234
238
  }), null)]
@@ -1 +1 @@
1
- {"version":3,"file":"VDatePicker.mjs","names":["makeVDatePickerControlsProps","VDatePickerControls","VDatePickerHeader","makeVDatePickerMonthProps","VDatePickerMonth","makeVDatePickerMonthsProps","VDatePickerMonths","makeVDatePickerYearsProps","VDatePickerYears","VFadeTransition","VDefaultsProvider","makeVPickerProps","VPicker","useDate","useLocale","useProxiedModel","computed","ref","shallowRef","watch","genericComponent","omit","propsFactory","useRender","wrapInArray","makeVDatePickerProps","header","type","String","default","title","modelValue","VDatePicker","name","props","emits","date","setup","_ref","emit","slots","adapter","t","model","undefined","v","multiple","viewMode","internal","value","isValid","month","Number","getMonth","startOfMonth","year","getYear","startOfYear","setMonth","isReversing","length","format","text","parseISO","headerTransition","minDate","min","maxDate","max","disabled","targets","push","_date","setYear","addDays","isAfter","endOfMonth","onClickNext","onClickPrev","onClickDate","onClickMonth","onClickYear","val","oldVal","before","after","isBefore","pickerProps","filterProps","datePickerControlsProps","datePickerHeaderProps","datePickerMonthProps","datePickerMonthsProps","datePickerYearsProps","headerProps","transition","_createVNode","_mergeProps","showWeek","class","style","_Fragment","$event","actions"],"sources":["../../../src/components/VDatePicker/VDatePicker.tsx"],"sourcesContent":["// Styles\nimport './VDatePicker.sass'\n\n// Components\nimport { makeVDatePickerControlsProps, VDatePickerControls } from './VDatePickerControls'\nimport { VDatePickerHeader } from './VDatePickerHeader'\nimport { makeVDatePickerMonthProps, VDatePickerMonth } from './VDatePickerMonth'\nimport { makeVDatePickerMonthsProps, VDatePickerMonths } from './VDatePickerMonths'\nimport { makeVDatePickerYearsProps, VDatePickerYears } from './VDatePickerYears'\nimport { VFadeTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { makeVPickerProps, VPicker } from '@/labs/VPicker/VPicker'\n\n// Composables\nimport { useDate } from '@/composables/date'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref, shallowRef, watch } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { VPickerSlots } from '@/labs/VPicker/VPicker'\nimport type { GenericProps } from '@/util'\n\n// Types\nexport type VDatePickerSlots = Omit<VPickerSlots, 'header'> & {\n header: {\n header: string\n transition: string\n }\n}\n\nexport const makeVDatePickerProps = propsFactory({\n // TODO: implement in v3.5\n // calendarIcon: {\n // type: String,\n // default: '$calendar',\n // },\n // keyboardIcon: {\n // type: String,\n // default: '$edit',\n // },\n // inputMode: {\n // type: String as PropType<'calendar' | 'keyboard'>,\n // default: 'calendar',\n // },\n // inputText: {\n // type: String,\n // default: '$vuetify.datePicker.input.placeholder',\n // },\n // inputPlaceholder: {\n // type: String,\n // default: 'dd/mm/yyyy',\n // },\n header: {\n type: String,\n default: '$vuetify.datePicker.header',\n },\n\n ...makeVDatePickerControlsProps(),\n ...makeVDatePickerMonthProps(),\n ...omit(makeVDatePickerMonthsProps(), ['modelValue']),\n ...omit(makeVDatePickerYearsProps(), ['modelValue']),\n ...makeVPickerProps({ title: '$vuetify.datePicker.title' }),\n\n modelValue: null,\n}, 'VDatePicker')\n\nexport const VDatePicker = genericComponent<new <\n T,\n Multiple extends boolean | 'range' | number | (string & {}) = false,\n TModel = Multiple extends true | number | string\n ? T[]\n : T,\n> (\n props: {\n modelValue?: TModel\n 'onUpdate:modelValue'?: (value: TModel) => void\n multiple?: Multiple\n },\n slots: VDatePickerSlots\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VDatePicker',\n\n props: makeVDatePickerProps(),\n\n emits: {\n 'update:modelValue': (date: any) => true,\n 'update:month': (date: any) => true,\n 'update:year': (date: any) => true,\n // 'update:inputMode': (date: any) => true,\n 'update:viewMode': (date: any) => true,\n },\n\n setup (props, { emit, slots }) {\n const adapter = useDate()\n const { t } = useLocale()\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n v => wrapInArray(v),\n v => props.multiple ? v : v[0],\n )\n\n const viewMode = useProxiedModel(props, 'viewMode')\n // const inputMode = useProxiedModel(props, 'inputMode')\n const internal = computed(() => {\n const value = adapter.date(model.value?.[0])\n\n return value && adapter.isValid(value) ? value : adapter.date()\n })\n\n const month = ref(Number(props.month ?? adapter.getMonth(adapter.startOfMonth(internal.value))))\n const year = ref(Number(props.year ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))))\n\n const isReversing = shallowRef(false)\n const header = computed(() => {\n return props.multiple && model.value.length > 1\n ? t('$vuetify.datePicker.itemsSelected', model.value.length)\n : model.value[0] && adapter.isValid(model.value[0])\n ? adapter.format(model.value[0], 'normalDateWithWeekday')\n : t(props.header)\n })\n const text = computed(() => {\n return adapter.format(\n adapter.parseISO(`${year.value}-${month.value + 1}-01`),\n 'monthAndYear',\n )\n })\n // const headerIcon = computed(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)\n const headerTransition = computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`)\n const minDate = computed(() => {\n const date = adapter.date(props.min)\n\n return props.min && adapter.isValid(date) ? date : null\n })\n const maxDate = computed(() => {\n const date = adapter.date(props.max)\n\n return props.max && adapter.isValid(date) ? date : null\n })\n const disabled = computed(() => {\n if (props.disabled) return true\n\n const targets = []\n\n if (viewMode.value !== 'month') {\n targets.push(...['prev', 'next'])\n } else {\n let _date = adapter.date()\n\n _date = adapter.setYear(_date, year.value)\n _date = adapter.setMonth(_date, month.value)\n\n if (minDate.value) {\n const date = adapter.addDays(adapter.startOfMonth(_date), -1)\n\n adapter.isAfter(minDate.value, date) && targets.push('prev')\n }\n\n if (maxDate.value) {\n const date = adapter.addDays(adapter.endOfMonth(_date), 1)\n\n adapter.isAfter(date, maxDate.value) && targets.push('next')\n }\n }\n\n return targets\n })\n\n // function onClickAppend () {\n // inputMode.value = inputMode.value === 'calendar' ? 'keyboard' : 'calendar'\n // }\n\n function onClickNext () {\n if (month.value < 11) {\n month.value++\n } else {\n year.value++\n month.value = 0\n }\n }\n\n function onClickPrev () {\n if (month.value > 0) {\n month.value--\n } else {\n year.value--\n month.value = 11\n }\n }\n\n function onClickDate () {\n viewMode.value = 'month'\n }\n\n function onClickMonth () {\n viewMode.value = viewMode.value === 'months' ? 'month' : 'months'\n }\n\n function onClickYear () {\n viewMode.value = viewMode.value === 'year' ? 'month' : 'year'\n }\n\n watch(month, () => {\n if (viewMode.value === 'months') onClickMonth()\n\n emit('update:month', month.value)\n })\n\n watch(year, () => {\n if (viewMode.value === 'year') onClickYear()\n\n emit('update:year', year.value)\n })\n\n watch(model, (val, oldVal) => {\n const before = adapter.date(wrapInArray(val)[0])\n const after = adapter.date(wrapInArray(oldVal)[0])\n\n isReversing.value = adapter.isBefore(before, after)\n })\n\n useRender(() => {\n const pickerProps = VPicker.filterProps(props)\n const datePickerControlsProps = VDatePickerControls.filterProps(props)\n const datePickerHeaderProps = VDatePickerHeader.filterProps(props)\n const datePickerMonthProps = VDatePickerMonth.filterProps(props)\n const datePickerMonthsProps = omit(VDatePickerMonths.filterProps(props), ['modelValue'])\n const datePickerYearsProps = omit(VDatePickerYears.filterProps(props), ['modelValue'])\n\n const headerProps = {\n header: header.value,\n transition: headerTransition.value,\n }\n\n return (\n <VPicker\n { ...pickerProps }\n class={[\n 'v-date-picker',\n `v-date-picker--${viewMode.value}`,\n {\n 'v-date-picker--show-week': props.showWeek,\n },\n props.class,\n ]}\n style={ props.style }\n v-slots={{\n title: () => slots.title?.() ?? (\n <div class=\"v-date-picker__title\">\n { t(props.title) }\n </div>\n ),\n header: () => slots.header ? (\n <VDefaultsProvider\n defaults={{\n VDatePickerHeader: { ...headerProps },\n }}\n >\n { slots.header?.(headerProps) }\n </VDefaultsProvider>\n ) : (\n <VDatePickerHeader\n key=\"header\"\n { ...datePickerHeaderProps }\n { ...headerProps }\n onClick={ viewMode.value !== 'month' ? onClickDate : undefined }\n v-slots={{\n ...slots,\n default: undefined,\n }}\n />\n ),\n default: () => (\n <>\n <VDatePickerControls\n { ...datePickerControlsProps }\n disabled={ disabled.value }\n text={ text.value }\n onClick:next={ onClickNext }\n onClick:prev={ onClickPrev }\n onClick:month={ onClickMonth }\n onClick:year={ onClickYear }\n />\n\n <VFadeTransition hideOnLeave>\n { viewMode.value === 'months' ? (\n <VDatePickerMonths\n key=\"date-picker-months\"\n { ...datePickerMonthsProps }\n v-model={ month.value }\n min={ minDate.value }\n max={ maxDate.value }\n />\n ) : viewMode.value === 'year' ? (\n <VDatePickerYears\n key=\"date-picker-years\"\n { ...datePickerYearsProps }\n v-model={ year.value }\n min={ minDate.value }\n max={ maxDate.value }\n />\n ) : (\n <VDatePickerMonth\n key=\"date-picker-month\"\n { ...datePickerMonthProps }\n v-model={ model.value }\n v-model:month={ month.value }\n v-model:year={ year.value }\n min={ minDate.value }\n max={ maxDate.value }\n />\n )}\n </VFadeTransition>\n </>\n ),\n actions: slots.actions,\n }}\n />\n )\n })\n\n return {}\n },\n})\n\nexport type VDatePicker = InstanceType<typeof VDatePicker>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VDatePicker.mjs","names":["makeVDatePickerControlsProps","VDatePickerControls","VDatePickerHeader","makeVDatePickerMonthProps","VDatePickerMonth","makeVDatePickerMonthsProps","VDatePickerMonths","makeVDatePickerYearsProps","VDatePickerYears","VFadeTransition","VDefaultsProvider","makeVPickerProps","VPicker","useDate","useLocale","useProxiedModel","computed","ref","shallowRef","watch","genericComponent","omit","propsFactory","useRender","wrapInArray","makeVDatePickerProps","header","type","String","default","title","modelValue","VDatePicker","name","props","emits","date","setup","_ref","emit","slots","adapter","t","model","undefined","v","multiple","viewMode","internal","value","isValid","month","Number","getMonth","startOfMonth","year","getYear","startOfYear","setMonth","isReversing","length","format","text","Date","headerTransition","minDate","min","maxDate","max","disabled","targets","push","_date","setYear","addDays","isAfter","endOfMonth","onClickNext","onUpdateYear","onUpdateMonth","onClickPrev","onClickDate","onClickMonth","onClickYear","val","oldVal","before","after","isBefore","pickerProps","filterProps","datePickerControlsProps","datePickerHeaderProps","datePickerMonthProps","datePickerMonthsProps","datePickerYearsProps","headerProps","transition","_createVNode","_mergeProps","showWeek","class","style","_Fragment","$event","actions"],"sources":["../../../src/components/VDatePicker/VDatePicker.tsx"],"sourcesContent":["// Styles\nimport './VDatePicker.sass'\n\n// Components\nimport { makeVDatePickerControlsProps, VDatePickerControls } from './VDatePickerControls'\nimport { VDatePickerHeader } from './VDatePickerHeader'\nimport { makeVDatePickerMonthProps, VDatePickerMonth } from './VDatePickerMonth'\nimport { makeVDatePickerMonthsProps, VDatePickerMonths } from './VDatePickerMonths'\nimport { makeVDatePickerYearsProps, VDatePickerYears } from './VDatePickerYears'\nimport { VFadeTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { makeVPickerProps, VPicker } from '@/labs/VPicker/VPicker'\n\n// Composables\nimport { useDate } from '@/composables/date'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref, shallowRef, watch } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { VPickerSlots } from '@/labs/VPicker/VPicker'\nimport type { GenericProps } from '@/util'\n\n// Types\nexport type VDatePickerSlots = Omit<VPickerSlots, 'header'> & {\n header: {\n header: string\n transition: string\n }\n}\n\nexport const makeVDatePickerProps = propsFactory({\n // TODO: implement in v3.5\n // calendarIcon: {\n // type: String,\n // default: '$calendar',\n // },\n // keyboardIcon: {\n // type: String,\n // default: '$edit',\n // },\n // inputMode: {\n // type: String as PropType<'calendar' | 'keyboard'>,\n // default: 'calendar',\n // },\n // inputText: {\n // type: String,\n // default: '$vuetify.datePicker.input.placeholder',\n // },\n // inputPlaceholder: {\n // type: String,\n // default: 'dd/mm/yyyy',\n // },\n header: {\n type: String,\n default: '$vuetify.datePicker.header',\n },\n\n ...makeVDatePickerControlsProps(),\n ...makeVDatePickerMonthProps(),\n ...omit(makeVDatePickerMonthsProps(), ['modelValue']),\n ...omit(makeVDatePickerYearsProps(), ['modelValue']),\n ...makeVPickerProps({ title: '$vuetify.datePicker.title' }),\n\n modelValue: null,\n}, 'VDatePicker')\n\nexport const VDatePicker = genericComponent<new <\n T,\n Multiple extends boolean | 'range' | number | (string & {}) = false,\n TModel = Multiple extends true | number | string\n ? T[]\n : T,\n> (\n props: {\n modelValue?: TModel\n 'onUpdate:modelValue'?: (value: TModel) => void\n multiple?: Multiple\n },\n slots: VDatePickerSlots\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VDatePicker',\n\n props: makeVDatePickerProps(),\n\n emits: {\n 'update:modelValue': (date: any) => true,\n 'update:month': (date: any) => true,\n 'update:year': (date: any) => true,\n // 'update:inputMode': (date: any) => true,\n 'update:viewMode': (date: any) => true,\n },\n\n setup (props, { emit, slots }) {\n const adapter = useDate()\n const { t } = useLocale()\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n undefined,\n v => wrapInArray(v),\n v => props.multiple ? v : v[0],\n )\n\n const viewMode = useProxiedModel(props, 'viewMode')\n // const inputMode = useProxiedModel(props, 'inputMode')\n const internal = computed(() => {\n const value = adapter.date(model.value?.[0])\n\n return value && adapter.isValid(value) ? value : adapter.date()\n })\n\n const month = ref(Number(props.month ?? adapter.getMonth(adapter.startOfMonth(internal.value))))\n const year = ref(Number(props.year ?? adapter.getYear(adapter.startOfYear(adapter.setMonth(internal.value, month.value)))))\n\n const isReversing = shallowRef(false)\n const header = computed(() => {\n return props.multiple && model.value.length > 1\n ? t('$vuetify.datePicker.itemsSelected', model.value.length)\n : model.value[0] && adapter.isValid(model.value[0])\n ? adapter.format(model.value[0], 'normalDateWithWeekday')\n : t(props.header)\n })\n const text = computed(() => {\n return adapter.format(\n adapter.date(new Date(year.value, month.value, 1)),\n 'monthAndYear',\n )\n })\n // const headerIcon = computed(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)\n const headerTransition = computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`)\n const minDate = computed(() => {\n const date = adapter.date(props.min)\n\n return props.min && adapter.isValid(date) ? date : null\n })\n const maxDate = computed(() => {\n const date = adapter.date(props.max)\n\n return props.max && adapter.isValid(date) ? date : null\n })\n const disabled = computed(() => {\n if (props.disabled) return true\n\n const targets = []\n\n if (viewMode.value !== 'month') {\n targets.push(...['prev', 'next'])\n } else {\n let _date = adapter.date()\n\n _date = adapter.setYear(_date, year.value)\n _date = adapter.setMonth(_date, month.value)\n\n if (minDate.value) {\n const date = adapter.addDays(adapter.startOfMonth(_date), -1)\n\n adapter.isAfter(minDate.value, date) && targets.push('prev')\n }\n\n if (maxDate.value) {\n const date = adapter.addDays(adapter.endOfMonth(_date), 1)\n\n adapter.isAfter(date, maxDate.value) && targets.push('next')\n }\n }\n\n return targets\n })\n\n // function onClickAppend () {\n // inputMode.value = inputMode.value === 'calendar' ? 'keyboard' : 'calendar'\n // }\n\n function onClickNext () {\n if (month.value < 11) {\n month.value++\n } else {\n year.value++\n month.value = 0\n onUpdateYear(year.value)\n }\n onUpdateMonth(month.value)\n }\n\n function onClickPrev () {\n if (month.value > 0) {\n month.value--\n } else {\n year.value--\n month.value = 11\n onUpdateYear(year.value)\n }\n onUpdateMonth(month.value)\n }\n\n function onClickDate () {\n viewMode.value = 'month'\n }\n\n function onClickMonth () {\n viewMode.value = viewMode.value === 'months' ? 'month' : 'months'\n }\n\n function onClickYear () {\n viewMode.value = viewMode.value === 'year' ? 'month' : 'year'\n }\n\n function onUpdateMonth (value: number) {\n if (viewMode.value === 'months') onClickMonth()\n\n emit('update:month', value)\n }\n\n function onUpdateYear (value: number) {\n if (viewMode.value === 'year') onClickYear()\n\n emit('update:year', value)\n }\n\n watch(model, (val, oldVal) => {\n const before = adapter.date(wrapInArray(val)[0])\n const after = adapter.date(wrapInArray(oldVal)[0])\n\n isReversing.value = adapter.isBefore(before, after)\n })\n\n useRender(() => {\n const pickerProps = VPicker.filterProps(props)\n const datePickerControlsProps = VDatePickerControls.filterProps(props)\n const datePickerHeaderProps = VDatePickerHeader.filterProps(props)\n const datePickerMonthProps = VDatePickerMonth.filterProps(props)\n const datePickerMonthsProps = omit(VDatePickerMonths.filterProps(props), ['modelValue'])\n const datePickerYearsProps = omit(VDatePickerYears.filterProps(props), ['modelValue'])\n\n const headerProps = {\n header: header.value,\n transition: headerTransition.value,\n }\n\n return (\n <VPicker\n { ...pickerProps }\n class={[\n 'v-date-picker',\n `v-date-picker--${viewMode.value}`,\n {\n 'v-date-picker--show-week': props.showWeek,\n },\n props.class,\n ]}\n style={ props.style }\n v-slots={{\n title: () => slots.title?.() ?? (\n <div class=\"v-date-picker__title\">\n { t(props.title) }\n </div>\n ),\n header: () => slots.header ? (\n <VDefaultsProvider\n defaults={{\n VDatePickerHeader: { ...headerProps },\n }}\n >\n { slots.header?.(headerProps) }\n </VDefaultsProvider>\n ) : (\n <VDatePickerHeader\n key=\"header\"\n { ...datePickerHeaderProps }\n { ...headerProps }\n onClick={ viewMode.value !== 'month' ? onClickDate : undefined }\n v-slots={{\n ...slots,\n default: undefined,\n }}\n />\n ),\n default: () => (\n <>\n <VDatePickerControls\n { ...datePickerControlsProps }\n disabled={ disabled.value }\n text={ text.value }\n onClick:next={ onClickNext }\n onClick:prev={ onClickPrev }\n onClick:month={ onClickMonth }\n onClick:year={ onClickYear }\n />\n\n <VFadeTransition hideOnLeave>\n { viewMode.value === 'months' ? (\n <VDatePickerMonths\n key=\"date-picker-months\"\n { ...datePickerMonthsProps }\n v-model={ month.value }\n onUpdate:modelValue={ onUpdateMonth }\n min={ minDate.value }\n max={ maxDate.value }\n />\n ) : viewMode.value === 'year' ? (\n <VDatePickerYears\n key=\"date-picker-years\"\n { ...datePickerYearsProps }\n v-model={ year.value }\n onUpdate:modelValue={ onUpdateYear }\n min={ minDate.value }\n max={ maxDate.value }\n />\n ) : (\n <VDatePickerMonth\n key=\"date-picker-month\"\n { ...datePickerMonthProps }\n v-model={ model.value }\n v-model:month={ month.value }\n v-model:year={ year.value }\n onUpdate:month={ onUpdateMonth }\n onUpdate:year={ onUpdateYear }\n min={ minDate.value }\n max={ maxDate.value }\n />\n )}\n </VFadeTransition>\n </>\n ),\n actions: slots.actions,\n }}\n />\n )\n })\n\n return {}\n },\n})\n\nexport type VDatePicker = InstanceType<typeof VDatePicker>\n"],"mappings":"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"}
@@ -1,24 +1,9 @@
1
1
  @use '../../styles/tools'
2
-
3
- .v-date-picker__input
4
- padding-top: 16px
5
- padding-left: 24px
6
- padding-right: 24px
2
+ @use './variables' as *
7
3
 
8
4
  .v-date-picker
9
5
  overflow: hidden
10
- width: 360px
6
+ width: $date-picker-width
11
7
 
12
8
  &--show-week
13
- width: 408px
14
-
15
- .v-date-picker-month
16
- padding: 0 12px 12px
17
-
18
- .v-date-picker-month__day
19
- height: 48px
20
- width: 48px
21
-
22
- .v-btn
23
- --v-btn-height: 28px
24
- --v-btn-size: 0.85rem
9
+ width: $date-picker-show-week-width
@@ -1,4 +1,6 @@
1
1
  .v-date-picker-header {
2
+ align-items: flex-end;
3
+ height: 70px;
2
4
  display: grid;
3
5
  grid-template-areas: "prepend content append";
4
6
  grid-template-columns: min-content minmax(0, 1fr) min-content;
@@ -1,6 +1,9 @@
1
1
  @use '../../styles/settings'
2
+ @use './variables' as *
2
3
 
3
4
  .v-date-picker-header
5
+ align-items: flex-end
6
+ height: $date-picker-header-height
4
7
  display: grid
5
8
  grid-template-areas: "prepend content append"
6
9
  grid-template-columns: min-content minmax(0, 1fr) min-content
@@ -1,28 +1,28 @@
1
1
  .v-date-picker-month {
2
2
  display: flex;
3
3
  justify-content: center;
4
- min-width: 328px;
4
+ padding: 0 12px 8px;
5
5
  --v-date-picker-month-day-diff: 4px;
6
6
  }
7
7
 
8
8
  .v-date-picker-month__weeks {
9
9
  display: grid;
10
10
  grid-template-rows: min-content min-content min-content min-content min-content min-content min-content;
11
- row-gap: 4px;
12
- font-size: 0.875rem;
11
+ column-gap: 4px;
12
+ font-size: 0.85rem;
13
13
  }
14
14
  .v-date-picker-month__weeks + .v-date-picker-month__days {
15
15
  grid-row-gap: 0;
16
16
  }
17
17
 
18
18
  .v-date-picker-month__weekday {
19
- font-size: 0.875rem;
19
+ font-size: 0.85rem;
20
20
  }
21
21
 
22
22
  .v-date-picker-month__days {
23
23
  display: grid;
24
24
  grid-template-columns: min-content min-content min-content min-content min-content min-content min-content;
25
- row-gap: 4px;
25
+ column-gap: 4px;
26
26
  flex: 1 1;
27
27
  justify-content: space-around;
28
28
  }
@@ -32,11 +32,17 @@
32
32
  display: flex;
33
33
  justify-content: center;
34
34
  position: relative;
35
+ height: 40px;
36
+ width: 40px;
35
37
  }
36
38
  .v-date-picker-month__day--selected .v-btn {
37
39
  background-color: rgb(var(--v-theme-surface-variant));
38
40
  color: rgb(var(--v-theme-on-surface-variant));
39
41
  }
42
+ .v-date-picker-month__day .v-btn.v-date-picker-month__day-btn {
43
+ --v-btn-height: 24px;
44
+ --v-btn-size: 0.85rem;
45
+ }
40
46
  .v-date-picker-month__day--week {
41
47
  font-size: var(--v-btn-size);
42
48
  }
@@ -129,12 +129,13 @@ export const VDatePickerMonth = genericComponent()({
129
129
  }, [(props.showAdjacentMonths || !item.isAdjacent) && _createVNode(VDefaultsProvider, {
130
130
  "defaults": {
131
131
  VBtn: {
132
+ class: 'v-date-picker-month__day-btn',
132
133
  color: (item.isSelected || item.isToday) && !item.isDisabled ? props.color : undefined,
133
134
  disabled: item.isDisabled,
134
135
  icon: true,
135
136
  ripple: false,
136
137
  text: item.localized,
137
- variant: item.isDisabled ? 'text' : item.isToday && !item.isSelected ? 'outlined' : 'flat',
138
+ variant: item.isDisabled ? item.isToday ? 'outlined' : 'text' : item.isToday && !item.isSelected ? 'outlined' : 'flat',
138
139
  onClick: () => onClick(item.date)
139
140
  }
140
141
  }
@@ -1 +1 @@
1
- {"version":3,"file":"VDatePickerMonth.mjs","names":["VBtn","VDefaultsProvider","makeCalendarProps","useCalendar","useDate","computed","ref","shallowRef","genericComponent","propsFactory","makeVDatePickerMonthProps","color","String","hideWeekdays","Boolean","multiple","Number","showWeek","VDatePickerMonth","name","props","emits","date","setup","_ref","emit","slots","daysRef","daysInMonth","model","weekNumbers","adapter","rangeStart","rangeStop","atMax","max","includes","Infinity","value","length","onRangeClick","_value","startOfDay","isSameDay","undefined","isBefore","diff","getDiff","datesInRange","i","nextDate","addDays","push","onMultipleClick","index","findIndex","selection","splice","onClick","_createVNode","_createTextVNode","map","week","getWeekdays","weekDay","item","slotProps","isSelected","isDisabled","isAdjacent","isHidden","isWeekEnd","isWeekStart","isoDate","showAdjacentMonths","isToday","disabled","icon","ripple","text","localized","variant","default","day"],"sources":["../../../src/components/VDatePicker/VDatePickerMonth.tsx"],"sourcesContent":["// Styles\nimport './VDatePickerMonth.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\n\n// Composables\nimport { makeCalendarProps, useCalendar } from '@/composables/calendar'\nimport { useDate } from '@/composables/date/date'\n\n// Utilities\nimport { computed, ref, shallowRef } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type VDatePickerMonthSlots = {\n day: {\n props: {\n onClick: () => void\n }\n item: any\n i: number\n }\n}\n\nexport const makeVDatePickerMonthProps = propsFactory({\n color: String,\n hideWeekdays: Boolean,\n multiple: [Boolean, Number, String] as PropType<boolean | 'range' | number | (string & {})>,\n showWeek: Boolean,\n\n ...makeCalendarProps(),\n}, 'VDatePickerMonth')\n\nexport const VDatePickerMonth = genericComponent<VDatePickerMonthSlots>()({\n name: 'VDatePickerMonth',\n\n props: makeVDatePickerMonthProps(),\n\n emits: {\n 'update:modelValue': (date: unknown) => true,\n 'update:month': (date: number) => true,\n 'update:year': (date: number) => true,\n },\n\n setup (props, { emit, slots }) {\n const daysRef = ref()\n\n const { daysInMonth, model, weekNumbers } = useCalendar(props)\n const adapter = useDate()\n\n const rangeStart = shallowRef()\n const rangeStop = shallowRef()\n\n const atMax = computed(() => {\n const max = ['number', 'string'].includes(typeof props.multiple) ? Number(props.multiple) : Infinity\n\n return model.value.length >= max\n })\n\n function onRangeClick (value: unknown) {\n const _value = adapter.startOfDay(value)\n\n if (!rangeStart.value) {\n rangeStart.value = _value\n model.value = [rangeStart.value]\n } else if (!rangeStop.value) {\n if (adapter.isSameDay(value, rangeStart.value)) {\n rangeStart.value = undefined\n model.value = []\n return\n } else if (adapter.isBefore(value, rangeStart.value)) {\n rangeStop.value = rangeStart.value\n rangeStart.value = _value\n } else {\n rangeStop.value = _value\n }\n\n const diff = adapter.getDiff(rangeStop.value, rangeStart.value)\n const datesInRange = [rangeStart.value]\n\n for (let i = 1; i < diff; i++) {\n const nextDate = adapter.addDays(rangeStart.value, i)\n datesInRange.push(nextDate)\n }\n\n datesInRange.push(rangeStop.value)\n\n model.value = datesInRange\n } else {\n rangeStart.value = value\n rangeStop.value = undefined\n model.value = [rangeStart.value]\n }\n }\n\n function onMultipleClick (value: unknown) {\n const index = model.value.findIndex(selection => adapter.isSameDay(selection, value))\n\n if (index === -1) {\n model.value = [...model.value, value]\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n }\n\n function onClick (value: unknown) {\n if (props.multiple === 'range') {\n onRangeClick(value)\n } else if (props.multiple) {\n onMultipleClick(value)\n } else {\n model.value = [value]\n }\n }\n\n return () => (\n <div class=\"v-date-picker-month\">\n { props.showWeek && (\n <div key=\"weeks\" class=\"v-date-picker-month__weeks\">\n { !props.hideWeekdays && (\n <div key=\"hide-week-days\" class=\"v-date-picker-month__day\">&nbsp;</div>\n )}\n { weekNumbers.value.map(week => (\n <div\n class={[\n 'v-date-picker-month__day',\n 'v-date-picker-month__day--adjacent',\n ]}\n >{ week }</div>\n ))}\n </div>\n )}\n\n <div\n ref={ daysRef }\n class=\"v-date-picker-month__days\"\n >\n { !props.hideWeekdays && adapter.getWeekdays().map(weekDay => (\n <div\n class={[\n 'v-date-picker-month__day',\n 'v-date-picker-month__weekday',\n ]}\n >{ weekDay }</div>\n ))}\n\n { daysInMonth.value.map((item, i) => {\n const slotProps = {\n props: {\n onClick: () => onClick(item.date),\n },\n item,\n i,\n } as const\n\n if (atMax.value && !item.isSelected) {\n item.isDisabled = true\n }\n\n return (\n <div\n class={[\n 'v-date-picker-month__day',\n {\n 'v-date-picker-month__day--adjacent': item.isAdjacent,\n 'v-date-picker-month__day--hide-adjacent': item.isHidden,\n 'v-date-picker-month__day--selected': item.isSelected,\n 'v-date-picker-month__day--week-end': item.isWeekEnd,\n 'v-date-picker-month__day--week-start': item.isWeekStart,\n },\n ]}\n data-v-date={ !item.isDisabled ? item.isoDate : undefined }\n >\n\n { (props.showAdjacentMonths || !item.isAdjacent) && (\n <VDefaultsProvider\n defaults={{\n VBtn: {\n color: (item.isSelected || item.isToday) && !item.isDisabled\n ? props.color\n : undefined,\n disabled: item.isDisabled,\n icon: true,\n ripple: false,\n text: item.localized,\n variant: item.isDisabled\n ? 'text'\n : item.isToday && !item.isSelected ? 'outlined' : 'flat',\n onClick: () => onClick(item.date),\n },\n }}\n >\n { slots.day?.(slotProps) ?? (\n <VBtn { ...slotProps.props } />\n )}\n </VDefaultsProvider>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n },\n})\n\nexport type VDatePickerMonth = InstanceType<typeof VDatePickerMonth>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VDatePickerMonth.mjs","names":["VBtn","VDefaultsProvider","makeCalendarProps","useCalendar","useDate","computed","ref","shallowRef","genericComponent","propsFactory","makeVDatePickerMonthProps","color","String","hideWeekdays","Boolean","multiple","Number","showWeek","VDatePickerMonth","name","props","emits","date","setup","_ref","emit","slots","daysRef","daysInMonth","model","weekNumbers","adapter","rangeStart","rangeStop","atMax","max","includes","Infinity","value","length","onRangeClick","_value","startOfDay","isSameDay","undefined","isBefore","diff","getDiff","datesInRange","i","nextDate","addDays","push","onMultipleClick","index","findIndex","selection","splice","onClick","_createVNode","_createTextVNode","map","week","getWeekdays","weekDay","item","slotProps","isSelected","isDisabled","isAdjacent","isHidden","isWeekEnd","isWeekStart","isoDate","showAdjacentMonths","class","isToday","disabled","icon","ripple","text","localized","variant","default","day"],"sources":["../../../src/components/VDatePicker/VDatePickerMonth.tsx"],"sourcesContent":["// Styles\nimport './VDatePickerMonth.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\n\n// Composables\nimport { makeCalendarProps, useCalendar } from '@/composables/calendar'\nimport { useDate } from '@/composables/date/date'\n\n// Utilities\nimport { computed, ref, shallowRef } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type VDatePickerMonthSlots = {\n day: {\n props: {\n onClick: () => void\n }\n item: any\n i: number\n }\n}\n\nexport const makeVDatePickerMonthProps = propsFactory({\n color: String,\n hideWeekdays: Boolean,\n multiple: [Boolean, Number, String] as PropType<boolean | 'range' | number | (string & {})>,\n showWeek: Boolean,\n\n ...makeCalendarProps(),\n}, 'VDatePickerMonth')\n\nexport const VDatePickerMonth = genericComponent<VDatePickerMonthSlots>()({\n name: 'VDatePickerMonth',\n\n props: makeVDatePickerMonthProps(),\n\n emits: {\n 'update:modelValue': (date: unknown) => true,\n 'update:month': (date: number) => true,\n 'update:year': (date: number) => true,\n },\n\n setup (props, { emit, slots }) {\n const daysRef = ref()\n\n const { daysInMonth, model, weekNumbers } = useCalendar(props)\n const adapter = useDate()\n\n const rangeStart = shallowRef()\n const rangeStop = shallowRef()\n\n const atMax = computed(() => {\n const max = ['number', 'string'].includes(typeof props.multiple) ? Number(props.multiple) : Infinity\n\n return model.value.length >= max\n })\n\n function onRangeClick (value: unknown) {\n const _value = adapter.startOfDay(value)\n\n if (!rangeStart.value) {\n rangeStart.value = _value\n model.value = [rangeStart.value]\n } else if (!rangeStop.value) {\n if (adapter.isSameDay(value, rangeStart.value)) {\n rangeStart.value = undefined\n model.value = []\n return\n } else if (adapter.isBefore(value, rangeStart.value)) {\n rangeStop.value = rangeStart.value\n rangeStart.value = _value\n } else {\n rangeStop.value = _value\n }\n\n const diff = adapter.getDiff(rangeStop.value, rangeStart.value)\n const datesInRange = [rangeStart.value]\n\n for (let i = 1; i < diff; i++) {\n const nextDate = adapter.addDays(rangeStart.value, i)\n datesInRange.push(nextDate)\n }\n\n datesInRange.push(rangeStop.value)\n\n model.value = datesInRange\n } else {\n rangeStart.value = value\n rangeStop.value = undefined\n model.value = [rangeStart.value]\n }\n }\n\n function onMultipleClick (value: unknown) {\n const index = model.value.findIndex(selection => adapter.isSameDay(selection, value))\n\n if (index === -1) {\n model.value = [...model.value, value]\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n }\n\n function onClick (value: unknown) {\n if (props.multiple === 'range') {\n onRangeClick(value)\n } else if (props.multiple) {\n onMultipleClick(value)\n } else {\n model.value = [value]\n }\n }\n\n return () => (\n <div class=\"v-date-picker-month\">\n { props.showWeek && (\n <div key=\"weeks\" class=\"v-date-picker-month__weeks\">\n { !props.hideWeekdays && (\n <div key=\"hide-week-days\" class=\"v-date-picker-month__day\">&nbsp;</div>\n )}\n { weekNumbers.value.map(week => (\n <div\n class={[\n 'v-date-picker-month__day',\n 'v-date-picker-month__day--adjacent',\n ]}\n >{ week }</div>\n ))}\n </div>\n )}\n\n <div\n ref={ daysRef }\n class=\"v-date-picker-month__days\"\n >\n { !props.hideWeekdays && adapter.getWeekdays().map(weekDay => (\n <div\n class={[\n 'v-date-picker-month__day',\n 'v-date-picker-month__weekday',\n ]}\n >{ weekDay }</div>\n ))}\n\n { daysInMonth.value.map((item, i) => {\n const slotProps = {\n props: {\n onClick: () => onClick(item.date),\n },\n item,\n i,\n } as const\n\n if (atMax.value && !item.isSelected) {\n item.isDisabled = true\n }\n\n return (\n <div\n class={[\n 'v-date-picker-month__day',\n {\n 'v-date-picker-month__day--adjacent': item.isAdjacent,\n 'v-date-picker-month__day--hide-adjacent': item.isHidden,\n 'v-date-picker-month__day--selected': item.isSelected,\n 'v-date-picker-month__day--week-end': item.isWeekEnd,\n 'v-date-picker-month__day--week-start': item.isWeekStart,\n },\n ]}\n data-v-date={ !item.isDisabled ? item.isoDate : undefined }\n >\n\n { (props.showAdjacentMonths || !item.isAdjacent) && (\n <VDefaultsProvider\n defaults={{\n VBtn: {\n class: 'v-date-picker-month__day-btn',\n color: (item.isSelected || item.isToday) && !item.isDisabled\n ? props.color\n : undefined,\n disabled: item.isDisabled,\n icon: true,\n ripple: false,\n text: item.localized,\n variant: item.isDisabled\n ? item.isToday ? 'outlined' : 'text'\n : item.isToday && !item.isSelected ? 'outlined' : 'flat',\n onClick: () => onClick(item.date),\n },\n }}\n >\n { slots.day?.(slotProps) ?? (\n <VBtn { ...slotProps.props } />\n )}\n </VDefaultsProvider>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n },\n})\n\nexport type VDatePickerMonth = InstanceType<typeof VDatePickerMonth>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,IAAI;AAAA,SACJC,iBAAiB,0CAE1B;AAAA,SACSC,iBAAiB,EAAEC,WAAW;AAAA,SAC9BC,OAAO,2CAEhB;AACA,SAASC,QAAQ,EAAEC,GAAG,EAAEC,UAAU,QAAQ,KAAK;AAAA,SACtCC,gBAAgB,EAAEC,YAAY,gCAEvC;AAaA,OAAO,MAAMC,yBAAyB,GAAGD,YAAY,CAAC;EACpDE,KAAK,EAAEC,MAAM;EACbC,YAAY,EAAEC,OAAO;EACrBC,QAAQ,EAAE,CAACD,OAAO,EAAEE,MAAM,EAAEJ,MAAM,CAAyD;EAC3FK,QAAQ,EAAEH,OAAO;EAEjB,GAAGZ,iBAAiB,CAAC;AACvB,CAAC,EAAE,kBAAkB,CAAC;AAEtB,OAAO,MAAMgB,gBAAgB,GAAGV,gBAAgB,CAAwB,CAAC,CAAC;EACxEW,IAAI,EAAE,kBAAkB;EAExBC,KAAK,EAAEV,yBAAyB,CAAC,CAAC;EAElCW,KAAK,EAAE;IACL,mBAAmB,EAAGC,IAAa,IAAK,IAAI;IAC5C,cAAc,EAAGA,IAAY,IAAK,IAAI;IACtC,aAAa,EAAGA,IAAY,IAAK;EACnC,CAAC;EAEDC,KAAKA,CAAEH,KAAK,EAAAI,IAAA,EAAmB;IAAA,IAAjB;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC3B,MAAMG,OAAO,GAAGrB,GAAG,CAAC,CAAC;IAErB,MAAM;MAAEsB,WAAW;MAAEC,KAAK;MAAEC;IAAY,CAAC,GAAG3B,WAAW,CAACiB,KAAK,CAAC;IAC9D,MAAMW,OAAO,GAAG3B,OAAO,CAAC,CAAC;IAEzB,MAAM4B,UAAU,GAAGzB,UAAU,CAAC,CAAC;IAC/B,MAAM0B,SAAS,GAAG1B,UAAU,CAAC,CAAC;IAE9B,MAAM2B,KAAK,GAAG7B,QAAQ,CAAC,MAAM;MAC3B,MAAM8B,GAAG,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAACC,QAAQ,CAAC,OAAOhB,KAAK,CAACL,QAAQ,CAAC,GAAGC,MAAM,CAACI,KAAK,CAACL,QAAQ,CAAC,GAAGsB,QAAQ;MAEpG,OAAOR,KAAK,CAACS,KAAK,CAACC,MAAM,IAAIJ,GAAG;IAClC,CAAC,CAAC;IAEF,SAASK,YAAYA,CAAEF,KAAc,EAAE;MACrC,MAAMG,MAAM,GAAGV,OAAO,CAACW,UAAU,CAACJ,KAAK,CAAC;MAExC,IAAI,CAACN,UAAU,CAACM,KAAK,EAAE;QACrBN,UAAU,CAACM,KAAK,GAAGG,MAAM;QACzBZ,KAAK,CAACS,KAAK,GAAG,CAACN,UAAU,CAACM,KAAK,CAAC;MAClC,CAAC,MAAM,IAAI,CAACL,SAAS,CAACK,KAAK,EAAE;QAC3B,IAAIP,OAAO,CAACY,SAAS,CAACL,KAAK,EAAEN,UAAU,CAACM,KAAK,CAAC,EAAE;UAC9CN,UAAU,CAACM,KAAK,GAAGM,SAAS;UAC5Bf,KAAK,CAACS,KAAK,GAAG,EAAE;UAChB;QACF,CAAC,MAAM,IAAIP,OAAO,CAACc,QAAQ,CAACP,KAAK,EAAEN,UAAU,CAACM,KAAK,CAAC,EAAE;UACpDL,SAAS,CAACK,KAAK,GAAGN,UAAU,CAACM,KAAK;UAClCN,UAAU,CAACM,KAAK,GAAGG,MAAM;QAC3B,CAAC,MAAM;UACLR,SAAS,CAACK,KAAK,GAAGG,MAAM;QAC1B;QAEA,MAAMK,IAAI,GAAGf,OAAO,CAACgB,OAAO,CAACd,SAAS,CAACK,KAAK,EAAEN,UAAU,CAACM,KAAK,CAAC;QAC/D,MAAMU,YAAY,GAAG,CAAChB,UAAU,CAACM,KAAK,CAAC;QAEvC,KAAK,IAAIW,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,IAAI,EAAEG,CAAC,EAAE,EAAE;UAC7B,MAAMC,QAAQ,GAAGnB,OAAO,CAACoB,OAAO,CAACnB,UAAU,CAACM,KAAK,EAAEW,CAAC,CAAC;UACrDD,YAAY,CAACI,IAAI,CAACF,QAAQ,CAAC;QAC7B;QAEAF,YAAY,CAACI,IAAI,CAACnB,SAAS,CAACK,KAAK,CAAC;QAElCT,KAAK,CAACS,KAAK,GAAGU,YAAY;MAC5B,CAAC,MAAM;QACLhB,UAAU,CAACM,KAAK,GAAGA,KAAK;QACxBL,SAAS,CAACK,KAAK,GAAGM,SAAS;QAC3Bf,KAAK,CAACS,KAAK,GAAG,CAACN,UAAU,CAACM,KAAK,CAAC;MAClC;IACF;IAEA,SAASe,eAAeA,CAAEf,KAAc,EAAE;MACxC,MAAMgB,KAAK,GAAGzB,KAAK,CAACS,KAAK,CAACiB,SAAS,CAACC,SAAS,IAAIzB,OAAO,CAACY,SAAS,CAACa,SAAS,EAAElB,KAAK,CAAC,CAAC;MAErF,IAAIgB,KAAK,KAAK,CAAC,CAAC,EAAE;QAChBzB,KAAK,CAACS,KAAK,GAAG,CAAC,GAAGT,KAAK,CAACS,KAAK,EAAEA,KAAK,CAAC;MACvC,CAAC,MAAM;QACL,MAAMA,KAAK,GAAG,CAAC,GAAGT,KAAK,CAACS,KAAK,CAAC;QAC9BA,KAAK,CAACmB,MAAM,CAACH,KAAK,EAAE,CAAC,CAAC;QACtBzB,KAAK,CAACS,KAAK,GAAGA,KAAK;MACrB;IACF;IAEA,SAASoB,OAAOA,CAAEpB,KAAc,EAAE;MAChC,IAAIlB,KAAK,CAACL,QAAQ,KAAK,OAAO,EAAE;QAC9ByB,YAAY,CAACF,KAAK,CAAC;MACrB,CAAC,MAAM,IAAIlB,KAAK,CAACL,QAAQ,EAAE;QACzBsC,eAAe,CAACf,KAAK,CAAC;MACxB,CAAC,MAAM;QACLT,KAAK,CAACS,KAAK,GAAG,CAACA,KAAK,CAAC;MACvB;IACF;IAEA,OAAO,MAAAqB,YAAA;MAAA;IAAA,IAEDvC,KAAK,CAACH,QAAQ,IAAA0C,YAAA;MAAA;MAAA;IAAA,IAEV,CAACvC,KAAK,CAACP,YAAY,IAAA8C,YAAA;MAAA;MAAA;IAAA,IAAAC,gBAAA,UAEpB,EACC9B,WAAW,CAACQ,KAAK,CAACuB,GAAG,CAACC,IAAI,IAAAH,YAAA;MAAA,SAEjB,CACL,0BAA0B,EAC1B,oCAAoC;IACrC,IACAG,IAAI,EACR,CAAC,EAEL,EAAAH,YAAA;MAAA,OAGOhC,OAAO;MAAA;IAAA,IAGX,CAACP,KAAK,CAACP,YAAY,IAAIkB,OAAO,CAACgC,WAAW,CAAC,CAAC,CAACF,GAAG,CAACG,OAAO,IAAAL,YAAA;MAAA,SAE/C,CACL,0BAA0B,EAC1B,8BAA8B;IAC/B,IACAK,OAAO,EACX,CAAC,EAEApC,WAAW,CAACU,KAAK,CAACuB,GAAG,CAAC,CAACI,IAAI,EAAEhB,CAAC,KAAK;MACnC,MAAMiB,SAAS,GAAG;QAChB9C,KAAK,EAAE;UACLsC,OAAO,EAAEA,CAAA,KAAMA,OAAO,CAACO,IAAI,CAAC3C,IAAI;QAClC,CAAC;QACD2C,IAAI;QACJhB;MACF,CAAU;MAEV,IAAIf,KAAK,CAACI,KAAK,IAAI,CAAC2B,IAAI,CAACE,UAAU,EAAE;QACnCF,IAAI,CAACG,UAAU,GAAG,IAAI;MACxB;MAEA,OAAAT,YAAA;QAAA,SAEW,CACL,0BAA0B,EAC1B;UACE,oCAAoC,EAAEM,IAAI,CAACI,UAAU;UACrD,yCAAyC,EAAEJ,IAAI,CAACK,QAAQ;UACxD,oCAAoC,EAAEL,IAAI,CAACE,UAAU;UACrD,oCAAoC,EAAEF,IAAI,CAACM,SAAS;UACpD,sCAAsC,EAAEN,IAAI,CAACO;QAC/C,CAAC,CACF;QAAA,eACa,CAACP,IAAI,CAACG,UAAU,GAAGH,IAAI,CAACQ,OAAO,GAAG7B;MAAS,IAGvD,CAACxB,KAAK,CAACsD,kBAAkB,IAAI,CAACT,IAAI,CAACI,UAAU,KAAAV,YAAA,CAAA1D,iBAAA;QAAA,YAEjC;UACRD,IAAI,EAAE;YACJ2E,KAAK,EAAE,8BAA8B;YACrChE,KAAK,EAAE,CAACsD,IAAI,CAACE,UAAU,IAAIF,IAAI,CAACW,OAAO,KAAK,CAACX,IAAI,CAACG,UAAU,GACxDhD,KAAK,CAACT,KAAK,GACXiC,SAAS;YACbiC,QAAQ,EAAEZ,IAAI,CAACG,UAAU;YACzBU,IAAI,EAAE,IAAI;YACVC,MAAM,EAAE,KAAK;YACbC,IAAI,EAAEf,IAAI,CAACgB,SAAS;YACpBC,OAAO,EAAEjB,IAAI,CAACG,UAAU,GACpBH,IAAI,CAACW,OAAO,GAAG,UAAU,GAAG,MAAM,GAClCX,IAAI,CAACW,OAAO,IAAI,CAACX,IAAI,CAACE,UAAU,GAAG,UAAU,GAAG,MAAM;YAC1DT,OAAO,EAAEA,CAAA,KAAMA,OAAO,CAACO,IAAI,CAAC3C,IAAI;UAClC;QACF;MAAC;QAAA6D,OAAA,EAAAA,CAAA,MAECzD,KAAK,CAAC0D,GAAG,GAAGlB,SAAS,CAAC,IAAAP,YAAA,CAAA3D,IAAA,EACXkE,SAAS,CAAC9C,KAAK,OAC3B;MAAA,EAEJ;IAGP,CAAC,CAAC,IAGP;EACH;AACF,CAAC,CAAC"}
@@ -1,26 +1,28 @@
1
+ @use './variables' as *
2
+
1
3
  .v-date-picker-month
2
4
  display: flex
3
5
  justify-content: center
4
- min-width: 328px
6
+ padding: $date-picker-month-padding
5
7
 
6
8
  --v-date-picker-month-day-diff: 4px
7
9
 
8
10
  .v-date-picker-month__weeks
9
11
  display: grid
10
12
  grid-template-rows: min-content min-content min-content min-content min-content min-content min-content
11
- row-gap: 4px
12
- font-size: .875rem
13
+ column-gap: $date-picker-month-column-gap
14
+ font-size: $date-picker-month-font-size
13
15
 
14
16
  + .v-date-picker-month__days
15
17
  grid-row-gap: 0
16
18
 
17
19
  .v-date-picker-month__weekday
18
- font-size: .875rem
20
+ font-size: $date-picker-month-font-size
19
21
 
20
22
  .v-date-picker-month__days
21
23
  display: grid
22
24
  grid-template-columns: min-content min-content min-content min-content min-content min-content min-content
23
- row-gap: 4px
25
+ column-gap: $date-picker-month-column-gap
24
26
  flex: 1 1
25
27
  justify-content: space-around
26
28
 
@@ -29,12 +31,18 @@
29
31
  display: flex
30
32
  justify-content: center
31
33
  position: relative
34
+ height: $date-picker-month-day-size
35
+ width: $date-picker-month-day-size
32
36
 
33
37
  &--selected
34
38
  .v-btn
35
39
  background-color: rgb(var(--v-theme-surface-variant))
36
40
  color: rgb(var(--v-theme-on-surface-variant))
37
41
 
42
+ .v-btn.v-date-picker-month__day-btn
43
+ --v-btn-height: #{$date-picker-month-btn-height}
44
+ --v-btn-size: #{$date-picker-month-btn-size}
45
+
38
46
  &--week
39
47
  font-size: var(--v-btn-size)
40
48
 
@@ -1,6 +1,5 @@
1
1
  .v-date-picker-months {
2
- height: 320px;
3
- overflow-y: scroll;
2
+ height: 288px;
4
3
  }
5
4
 
6
5
  .v-date-picker-months__content {
@@ -10,7 +9,7 @@
10
9
  height: inherit;
11
10
  justify-content: space-around;
12
11
  grid-template-columns: repeat(2, 1fr);
13
- grid-gap: 4px 24px;
12
+ grid-gap: 0px 24px;
14
13
  padding-inline-start: 36px;
15
14
  padding-inline-end: 36px;
16
15
  }
@@ -21,6 +21,7 @@ export const VDatePickerMonths = genericComponent()({
21
21
  },
22
22
  setup(props, _ref) {
23
23
  let {
24
+ emit,
24
25
  slots
25
26
  } = _ref;
26
27
  const adapter = useDate();
@@ -56,6 +57,10 @@ export const VDatePickerMonths = genericComponent()({
56
57
  onClick: () => onClick(i)
57
58
  };
58
59
  function onClick(i) {
60
+ if (model.value === i) {
61
+ emit('update:modelValue', model.value);
62
+ return;
63
+ }
59
64
  model.value = i;
60
65
  }
61
66
  return slots.month?.({
@@ -64,9 +69,7 @@ export const VDatePickerMonths = genericComponent()({
64
69
  props: btnProps
65
70
  }) ?? _createVNode(VBtn, _mergeProps({
66
71
  "key": "month"
67
- }, btnProps, {
68
- "onClick": () => onClick(i)
69
- }), null);
72
+ }, btnProps), null);
70
73
  })])]));
71
74
  return {};
72
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"VDatePickerMonths.mjs","names":["VBtn","useDate","useProxiedModel","computed","watchEffect","convertToUnit","createRange","genericComponent","propsFactory","useRender","makeVDatePickerMonthsProps","color","String","height","Number","modelValue","VDatePickerMonths","name","props","emits","date","setup","_ref","slots","adapter","model","months","startOfYear","map","i","text","format","getNextMonth","value","getMonth","_createVNode","month","btnProps","active","undefined","rounded","variant","onClick","_mergeProps"],"sources":["../../../src/components/VDatePicker/VDatePickerMonths.tsx"],"sourcesContent":["// Styles\nimport './VDatePickerMonths.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { useDate } from '@/composables/date'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, watchEffect } from 'vue'\nimport { convertToUnit, createRange, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nexport type VDatePickerMonthsSlots = {\n month: {\n month: {\n text: string\n value: number\n }\n i: number\n props: {\n onClick: () => void\n }\n }\n}\n\nexport const makeVDatePickerMonthsProps = propsFactory({\n color: String,\n height: [String, Number],\n modelValue: Number,\n}, 'VDatePickerMonths')\n\nexport const VDatePickerMonths = genericComponent<VDatePickerMonthsSlots>()({\n name: 'VDatePickerMonths',\n\n props: makeVDatePickerMonthsProps(),\n\n emits: {\n 'update:modelValue': (date: any) => true,\n },\n\n setup (props, { slots }) {\n const adapter = useDate()\n const model = useProxiedModel(props, 'modelValue')\n\n const months = computed(() => {\n let date = adapter.startOfYear(adapter.date())\n\n return createRange(12).map(i => {\n const text = adapter.format(date, 'monthShort')\n date = adapter.getNextMonth(date)\n\n return {\n text,\n value: i,\n }\n })\n })\n\n watchEffect(() => {\n model.value = model.value ?? adapter.getMonth(adapter.date())\n })\n\n useRender(() => (\n <div\n class=\"v-date-picker-months\"\n style={{\n height: convertToUnit(props.height),\n }}\n >\n <div class=\"v-date-picker-months__content\">\n { months.value.map((month, i) => {\n const btnProps = {\n active: model.value === i,\n color: model.value === i ? props.color : undefined,\n rounded: true,\n text: month.text,\n variant: model.value === month.value ? 'flat' : 'text',\n onClick: () => onClick(i),\n } as const\n\n function onClick (i: number) {\n model.value = i\n }\n\n return slots.month?.({\n month,\n i,\n props: btnProps,\n }) ?? (\n <VBtn\n key=\"month\"\n { ...btnProps }\n onClick={ () => onClick(i) }\n />\n )\n })}\n </div>\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VDatePickerMonths = InstanceType<typeof VDatePickerMonths>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VDatePickerMonths.mjs","names":["VBtn","useDate","useProxiedModel","computed","watchEffect","convertToUnit","createRange","genericComponent","propsFactory","useRender","makeVDatePickerMonthsProps","color","String","height","Number","modelValue","VDatePickerMonths","name","props","emits","date","setup","_ref","emit","slots","adapter","model","months","startOfYear","map","i","text","format","getNextMonth","value","getMonth","_createVNode","month","btnProps","active","undefined","rounded","variant","onClick","_mergeProps"],"sources":["../../../src/components/VDatePicker/VDatePickerMonths.tsx"],"sourcesContent":["// Styles\nimport './VDatePickerMonths.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { useDate } from '@/composables/date'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, watchEffect } from 'vue'\nimport { convertToUnit, createRange, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nexport type VDatePickerMonthsSlots = {\n month: {\n month: {\n text: string\n value: number\n }\n i: number\n props: {\n onClick: () => void\n }\n }\n}\n\nexport const makeVDatePickerMonthsProps = propsFactory({\n color: String,\n height: [String, Number],\n modelValue: Number,\n}, 'VDatePickerMonths')\n\nexport const VDatePickerMonths = genericComponent<VDatePickerMonthsSlots>()({\n name: 'VDatePickerMonths',\n\n props: makeVDatePickerMonthsProps(),\n\n emits: {\n 'update:modelValue': (date: any) => true,\n },\n\n setup (props, { emit, slots }) {\n const adapter = useDate()\n const model = useProxiedModel(props, 'modelValue')\n\n const months = computed(() => {\n let date = adapter.startOfYear(adapter.date())\n\n return createRange(12).map(i => {\n const text = adapter.format(date, 'monthShort')\n date = adapter.getNextMonth(date)\n\n return {\n text,\n value: i,\n }\n })\n })\n\n watchEffect(() => {\n model.value = model.value ?? adapter.getMonth(adapter.date())\n })\n\n useRender(() => (\n <div\n class=\"v-date-picker-months\"\n style={{\n height: convertToUnit(props.height),\n }}\n >\n <div class=\"v-date-picker-months__content\">\n { months.value.map((month, i) => {\n const btnProps = {\n active: model.value === i,\n color: model.value === i ? props.color : undefined,\n rounded: true,\n text: month.text,\n variant: model.value === month.value ? 'flat' : 'text',\n onClick: () => onClick(i),\n } as const\n\n function onClick (i: number) {\n if (model.value === i) {\n emit('update:modelValue', model.value)\n return\n }\n model.value = i\n }\n\n return slots.month?.({\n month,\n i,\n props: btnProps,\n }) ?? (\n <VBtn\n key=\"month\"\n { ...btnProps }\n />\n )\n })}\n </div>\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VDatePickerMonths = InstanceType<typeof VDatePickerMonths>\n"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
+ @use './variables' as *
2
+
1
3
  .v-date-picker-months
2
- height: 320px
3
- overflow-y: scroll
4
+ height: $date-picker-months-height
4
5
 
5
6
  .v-date-picker-months__content
6
7
  align-items: center
@@ -9,7 +10,7 @@
9
10
  height: inherit
10
11
  justify-content: space-around
11
12
  grid-template-columns: repeat(2, 1fr)
12
- grid-gap: 4px 24px
13
+ grid-gap: $date-picker-months-grid-gap
13
14
  padding-inline-start: 36px
14
15
  padding-inline-end: 36px
15
16
 
@@ -1,5 +1,5 @@
1
1
  .v-date-picker-years {
2
- height: 320px;
2
+ height: 288px;
3
3
  overflow-y: scroll;
4
4
  }
5
5
 
@@ -9,7 +9,7 @@
9
9
  justify-content: space-around;
10
10
  grid-template-columns: repeat(3, 1fr);
11
11
  gap: 8px 24px;
12
- padding-inline: 36px;
12
+ padding-inline: 32px;
13
13
  }
14
14
  .v-date-picker-years__content .v-btn {
15
15
  padding-inline: 8px;
@@ -24,6 +24,7 @@ export const VDatePickerYears = genericComponent()({
24
24
  },
25
25
  setup(props, _ref) {
26
26
  let {
27
+ emit,
27
28
  slots
28
29
  } = _ref;
29
30
  const adapter = useDate();
@@ -74,7 +75,13 @@ export const VDatePickerYears = genericComponent()({
74
75
  rounded: true,
75
76
  text: year.text,
76
77
  variant: model.value === year.value ? 'flat' : 'text',
77
- onClick: () => model.value = year.value
78
+ onClick: () => {
79
+ if (model.value === year.value) {
80
+ emit('update:modelValue', model.value);
81
+ return;
82
+ }
83
+ model.value = year.value;
84
+ }
78
85
  };
79
86
  return slots.year?.({
80
87
  year,