vuetify 3.3.16 → 3.3.18

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 (120) hide show
  1. package/dist/json/attributes.json +1274 -1266
  2. package/dist/json/importMap.json +12 -12
  3. package/dist/json/tags.json +14 -7
  4. package/dist/json/web-types.json +2041 -2437
  5. package/dist/vuetify-labs.css +59 -30
  6. package/dist/vuetify-labs.d.ts +1717 -3099
  7. package/dist/vuetify-labs.esm.js +157 -100
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +156 -99
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +221 -227
  12. package/dist/vuetify.d.ts +53 -53
  13. package/dist/vuetify.esm.js +63 -41
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +63 -41
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +36 -32
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/blueprints/md3.mjs +3 -0
  21. package/lib/blueprints/md3.mjs.map +1 -1
  22. package/lib/components/VApp/VApp.mjs +1 -2
  23. package/lib/components/VApp/VApp.mjs.map +1 -1
  24. package/lib/components/VAutocomplete/VAutocomplete.mjs +4 -2
  25. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  26. package/lib/components/VAutocomplete/index.d.mts +12 -12
  27. package/lib/components/VCombobox/VCombobox.mjs +4 -2
  28. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  29. package/lib/components/VCombobox/index.d.mts +12 -12
  30. package/lib/components/VList/VList.mjs +2 -1
  31. package/lib/components/VList/VList.mjs.map +1 -1
  32. package/lib/components/VList/VListChildren.mjs +10 -3
  33. package/lib/components/VList/VListChildren.mjs.map +1 -1
  34. package/lib/components/VList/index.d.mts +10 -10
  35. package/lib/components/VRangeSlider/VRangeSlider.mjs +2 -2
  36. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  37. package/lib/components/VSelect/VSelect.mjs +3 -1
  38. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  39. package/lib/components/VSelect/index.d.mts +12 -12
  40. package/lib/components/VSelectionControl/VSelectionControl.css +0 -1
  41. package/lib/components/VSelectionControl/VSelectionControl.sass +0 -1
  42. package/lib/components/VSlider/VSlider.mjs +2 -2
  43. package/lib/components/VSlider/VSlider.mjs.map +1 -1
  44. package/lib/components/VTable/VTable.css +4 -2
  45. package/lib/components/VTable/VTable.sass +3 -1
  46. package/lib/components/VTable/_variables.scss +1 -1
  47. package/lib/components/VTabs/VTabs.mjs +4 -4
  48. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  49. package/lib/components/VTabs/index.d.mts +1 -1
  50. package/lib/components/VTextField/VTextField.mjs +2 -2
  51. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  52. package/lib/components/VTextField/index.d.mts +6 -6
  53. package/lib/components/VTimeline/VTimeline.css +15 -22
  54. package/lib/components/VTimeline/VTimeline.sass +15 -25
  55. package/lib/components/index.d.mts +50 -50
  56. package/lib/composables/color.mjs +7 -4
  57. package/lib/composables/color.mjs.map +1 -1
  58. package/lib/composables/layout.mjs +1 -1
  59. package/lib/composables/layout.mjs.map +1 -1
  60. package/lib/composables/theme.mjs +0 -11
  61. package/lib/composables/theme.mjs.map +1 -1
  62. package/lib/entry-bundler.mjs +1 -1
  63. package/lib/framework.mjs +1 -1
  64. package/lib/index.d.mts +3 -3
  65. package/lib/labs/VBottomSheet/VBottomSheet.mjs +3 -2
  66. package/lib/labs/VBottomSheet/VBottomSheet.mjs.map +1 -1
  67. package/lib/labs/VBottomSheet/index.d.mts +3 -11
  68. package/lib/labs/VDataIterator/index.d.mts +66 -48
  69. package/lib/labs/VDataTable/VDataTableRow.mjs +8 -6
  70. package/lib/labs/VDataTable/VDataTableRow.mjs.map +1 -1
  71. package/lib/labs/VDataTable/VDataTableRows.mjs +4 -2
  72. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  73. package/lib/labs/VDataTable/VDataTableServer.mjs +1 -2
  74. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  75. package/lib/labs/VDataTable/VDataTableVirtual.mjs +1 -2
  76. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  77. package/lib/labs/VDataTable/composables/headers.mjs +5 -7
  78. package/lib/labs/VDataTable/composables/headers.mjs.map +1 -1
  79. package/lib/labs/VDataTable/composables/items.mjs +1 -1
  80. package/lib/labs/VDataTable/composables/items.mjs.map +1 -1
  81. package/lib/labs/VDataTable/composables/select.mjs +15 -9
  82. package/lib/labs/VDataTable/composables/select.mjs.map +1 -1
  83. package/lib/labs/VDataTable/composables/sort.mjs +1 -0
  84. package/lib/labs/VDataTable/composables/sort.mjs.map +1 -1
  85. package/lib/labs/VDataTable/index.d.mts +1135 -2614
  86. package/lib/labs/VDataTable/types.mjs.map +1 -1
  87. package/lib/labs/VDateInput/index.d.mts +6 -6
  88. package/lib/labs/VDatePicker/VDatePicker.mjs +17 -7
  89. package/lib/labs/VDatePicker/VDatePicker.mjs.map +1 -1
  90. package/lib/labs/VDatePicker/VDatePickerControls.css +29 -2
  91. package/lib/labs/VDatePicker/VDatePickerControls.mjs +18 -17
  92. package/lib/labs/VDatePicker/VDatePickerControls.mjs.map +1 -1
  93. package/lib/labs/VDatePicker/VDatePickerControls.sass +30 -2
  94. package/lib/labs/VDatePicker/VDatePickerHeader.css +10 -1
  95. package/lib/labs/VDatePicker/VDatePickerHeader.mjs +12 -4
  96. package/lib/labs/VDatePicker/VDatePickerHeader.mjs.map +1 -1
  97. package/lib/labs/VDatePicker/VDatePickerHeader.sass +11 -1
  98. package/lib/labs/VDatePicker/VDatePickerMonth.mjs +1 -2
  99. package/lib/labs/VDatePicker/VDatePickerMonth.mjs.map +1 -1
  100. package/lib/labs/VDatePicker/VDatePickerYears.mjs +1 -1
  101. package/lib/labs/VDatePicker/VDatePickerYears.mjs.map +1 -1
  102. package/lib/labs/VDatePicker/index.d.mts +184 -101
  103. package/lib/labs/VDateRangePicker/index.d.mts +67 -61
  104. package/lib/labs/VOtpInput/VOtpInput.mjs +1 -1
  105. package/lib/labs/VOtpInput/VOtpInput.mjs.map +1 -1
  106. package/lib/labs/VPicker/VPicker.css +0 -1
  107. package/lib/labs/VPicker/VPicker.mjs +16 -5
  108. package/lib/labs/VPicker/VPicker.mjs.map +1 -1
  109. package/lib/labs/VPicker/VPicker.sass +1 -1
  110. package/lib/labs/VPicker/index.d.mts +47 -35
  111. package/lib/labs/components.d.mts +3460 -4841
  112. package/lib/labs/date/adapters/vuetify.mjs +7 -2
  113. package/lib/labs/date/adapters/vuetify.mjs.map +1 -1
  114. package/lib/locale/pl.mjs +14 -14
  115. package/lib/locale/pl.mjs.map +1 -1
  116. package/lib/util/colorUtils.mjs +11 -0
  117. package/lib/util/colorUtils.mjs.map +1 -1
  118. package/lib/util/helpers.mjs +2 -1
  119. package/lib/util/helpers.mjs.map +1 -1
  120. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"types.mjs","names":[],"sources":["../../../src/labs/VDataTable/types.ts"],"sourcesContent":["// Types\nimport type { GroupableItem } from './composables/group'\nimport type { SelectableItem } from './composables/select'\nimport type { 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: string\n value?: SelectItemKey\n title: string\n\n colspan?: number\n rowspan?: number\n\n fixed?: boolean\n align?: 'start' | 'end' | 'center'\n\n width?: number | string\n minWidth?: string\n maxWidth?: string\n\n sortable?: boolean\n sort?: DataTableCompareFunction\n}\n\nexport type InternalDataTableHeader = DataTableHeader & {\n sortable: boolean\n fixedOffset?: number\n lastFixed?: boolean\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"],"mappings":""}
1
+ {"version":3,"file":"types.mjs","names":[],"sources":["../../../src/labs/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 { 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 colspan?: number\n rowspan?: number\n\n fixed?: boolean\n align?: 'start' | 'end' | 'center'\n\n width?: number | string\n minWidth?: string\n maxWidth?: string\n\n sortable?: boolean\n sort?: DataTableCompareFunction\n}\n\nexport type InternalDataTableHeader = Omit<DataTableHeader, 'key' | 'value'> & {\n key: string | null\n value: SelectItemKey | null\n sortable: boolean\n fixedOffset?: number\n lastFixed?: boolean\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 = any> = {\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 = any> = ItemSlotBase<T> & {\n columns: InternalDataTableHeader[]\n}\n\nexport type ItemKeySlot<T = any> = ItemSlotBase<T> & {\n value: any\n column: InternalDataTableHeader\n}\n"],"mappings":""}
@@ -207,7 +207,7 @@ declare const VDateInput: {
207
207
  "v-slot:prepend-inner"?: false | ((arg: DefaultInputSlot) => vue.VNodeChild) | undefined;
208
208
  "v-slot:append-inner"?: false | ((arg: DefaultInputSlot) => vue.VNodeChild) | undefined;
209
209
  suffix?: string | undefined;
210
- counterValue?: ((value: any) => number) | undefined;
210
+ counterValue?: number | ((value: any) => number) | undefined;
211
211
  modelModifiers?: Record<string, boolean> | undefined;
212
212
  "v-slot:counter"?: false | ((arg: VCounterSlot) => vue.VNodeChild) | undefined;
213
213
  "onUpdate:displayDate"?: ((date: any) => any) | undefined;
@@ -325,7 +325,7 @@ declare const VDateInput: {
325
325
  hideDetails?: boolean | "auto" | undefined;
326
326
  baseColor?: string | undefined;
327
327
  suffix?: string | undefined;
328
- counterValue?: ((value: any) => number) | undefined;
328
+ counterValue?: number | ((value: any) => number) | undefined;
329
329
  modelModifiers?: Record<string, boolean> | undefined;
330
330
  } & {
331
331
  $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
@@ -541,7 +541,7 @@ declare const VDateInput: {
541
541
  hideDetails?: boolean | "auto" | undefined;
542
542
  baseColor?: string | undefined;
543
543
  suffix?: string | undefined;
544
- counterValue?: ((value: any) => number) | undefined;
544
+ counterValue?: number | ((value: any) => number) | undefined;
545
545
  modelModifiers?: Record<string, boolean> | undefined;
546
546
  } & {
547
547
  $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
@@ -664,7 +664,7 @@ declare const VDateInput: {
664
664
  hideDetails?: boolean | "auto" | undefined;
665
665
  baseColor?: string | undefined;
666
666
  suffix?: string | undefined;
667
- counterValue?: ((value: any) => number) | undefined;
667
+ counterValue?: number | ((value: any) => number) | undefined;
668
668
  modelModifiers?: Record<string, boolean> | undefined;
669
669
  } & {
670
670
  $children?: vue.VNodeChild | (() => vue.VNodeChild) | {
@@ -895,7 +895,7 @@ declare const VDateInput: {
895
895
  'onClick:append': vue.PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
896
896
  autofocus: BooleanConstructor;
897
897
  counter: vue.PropType<string | number | true>;
898
- counterValue: vue.PropType<(value: any) => number>;
898
+ counterValue: vue.PropType<number | ((value: any) => number)>;
899
899
  prefix: StringConstructor;
900
900
  placeholder: {
901
901
  type: vue.PropType<string>;
@@ -1022,7 +1022,7 @@ declare const VDateInput: {
1022
1022
  'onClick:append': vue.PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
1023
1023
  autofocus: BooleanConstructor;
1024
1024
  counter: vue.PropType<string | number | true>;
1025
- counterValue: vue.PropType<(value: any) => number>;
1025
+ counterValue: vue.PropType<number | ((value: any) => number)>;
1026
1026
  prefix: StringConstructor;
1027
1027
  placeholder: {
1028
1028
  type: vue.PropType<string>;
@@ -1,4 +1,4 @@
1
- import { resolveDirective as _resolveDirective, Fragment as _Fragment, createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
1
+ import { resolveDirective as _resolveDirective, Fragment as _Fragment, mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
2
2
  // Styles
3
3
  import "./VDatePicker.css";
4
4
 
@@ -82,7 +82,9 @@ export const VDatePicker = genericComponent()({
82
82
  const isReversing = shallowRef(false);
83
83
  const inputModel = ref(model.value.map(date => adapter.format(date, 'keyboardDate')));
84
84
  const temporaryModel = ref(model.value);
85
- const title = computed(() => t(props.title));
85
+ const title = computed(() => {
86
+ return props.variant === 'modern' ? t(props.title) : adapter.format(displayDate.value, 'shortDate');
87
+ });
86
88
  const header = computed(() => model.value.length ? adapter.format(model.value[0], 'normalDateWithWeekday') : t(props.header));
87
89
  const headerIcon = computed(() => inputMode.value === 'calendar' ? props.keyboardIcon : props.calendarIcon);
88
90
  const headerTransition = computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`);
@@ -154,6 +156,9 @@ export const VDatePicker = genericComponent()({
154
156
  function onClickMode() {
155
157
  viewMode.value = viewMode.value === 'month' ? 'year' : 'month';
156
158
  }
159
+ function onClickHeader() {
160
+ viewMode.value = 'month';
161
+ }
157
162
  const headerSlotProps = computed(() => ({
158
163
  header: header.value,
159
164
  appendIcon: headerIcon.value,
@@ -166,15 +171,20 @@ export const VDatePicker = genericComponent()({
166
171
  const [datePickerMonthProps] = VDatePickerMonth.filterProps(props);
167
172
  const [datePickerYearsProps] = VDatePickerYears.filterProps(props);
168
173
  return _createVNode(VPicker, _mergeProps(pickerProps, {
169
- "class": ['v-date-picker', props.class],
174
+ "class": ['v-date-picker', `v-date-picker--${viewMode.value}`, props.class],
170
175
  "style": props.style,
171
- "title": title.value,
172
176
  "width": props.showWeek ? 408 : 360
173
177
  }), {
178
+ title: () => slots.title?.() ?? _createVNode("div", {
179
+ "class": "v-date-picker__title",
180
+ "onClick": props.variant === 'classic' ? onClickMode : undefined
181
+ }, [title.value]),
174
182
  header: () => slots.header?.(headerSlotProps.value) ?? _createVNode(VDatePickerHeader, _mergeProps({
175
183
  "key": "header"
176
- }, headerSlotProps.value), null),
177
- default: () => inputMode.value === 'calendar' ? _createVNode(_Fragment, null, [_createVNode(VDatePickerControls, _mergeProps(datePickerControlsProps, {
184
+ }, headerSlotProps.value, {
185
+ "onClick": viewMode.value === 'year' ? onClickHeader : undefined
186
+ }), null),
187
+ default: () => inputMode.value === 'calendar' ? _createVNode(_Fragment, null, [(props.variant !== 'classic' || viewMode.value !== 'year') && _createVNode(VDatePickerControls, _mergeProps(datePickerControlsProps, {
178
188
  "disabled": disabled.value,
179
189
  "displayDate": adapter.format(displayDate.value, 'monthAndYear'),
180
190
  "onClick:next": onClickNext,
@@ -208,7 +218,7 @@ export const VDatePicker = genericComponent()({
208
218
  "label": t(props.inputText),
209
219
  "placeholder": props.inputPlaceholder
210
220
  }, null)]),
211
- actions: () => !props.hideActions ? _createVNode("div", null, [_createVNode(VBtn, {
221
+ actions: () => !props.hideActions ? slots.actions?.() ?? _createVNode("div", null, [_createVNode(VBtn, {
212
222
  "variant": "text",
213
223
  "color": props.color,
214
224
  "onClick": onClickCancel,
@@ -1 +1 @@
1
- {"version":3,"file":"VDatePicker.mjs","names":["makeVDatePickerControlsProps","VDatePickerControls","VDatePickerHeader","makeVDatePickerMonthProps","VDatePickerMonth","makeVDatePickerYearsProps","VDatePickerYears","VFadeTransition","VBtn","VTextField","dateEmits","makeDateProps","makeVPickerProps","VPicker","createDatePicker","useLocale","useDate","computed","ref","shallowRef","watch","genericComponent","propsFactory","useRender","makeVDatePickerProps","calendarIcon","type","String","default","keyboardIcon","cancelText","okText","inputText","inputPlaceholder","header","hideActions","Boolean","title","VDatePicker","name","props","emits","click:cancel","click:save","setup","_ref","emit","slots","adapter","t","model","displayDate","viewMode","inputMode","isEqual","isReversing","inputModel","value","map","date","format","temporaryModel","length","headerIcon","headerTransition","minDate","min","isValid","maxDate","max","disabled","targets","addDays","startOfMonth","isAfter","push","endOfMonth","getFullYear","val","oldVal","isBefore","updateFromInput","input","index","inputDate","newModel","slice","onClickCancel","onClickSave","onClickAppend","onClickNext","addMonths","onClickPrev","onClickMode","headerSlotProps","appendIcon","transition","pickerProps","filterProps","datePickerControlsProps","datePickerMonthProps","datePickerYearsProps","_createVNode","_mergeProps","class","style","showWeek","_Fragment","$event","v","actions","color","undefined"],"sources":["../../../src/labs/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 { makeVDatePickerYearsProps, VDatePickerYears } from './VDatePickerYears'\nimport { VFadeTransition } from '@/components/transitions'\nimport { VBtn } from '@/components/VBtn'\nimport { VTextField } from '@/components/VTextField'\nimport { dateEmits, makeDateProps } from '@/labs/VDateInput/composables'\nimport { makeVPickerProps, VPicker } from '@/labs/VPicker/VPicker'\n\n// Composables\nimport { createDatePicker } from './composables'\nimport { useLocale } from '@/composables/locale'\nimport { useDate } from '@/labs/date'\n\n// Utilities\nimport { computed, ref, shallowRef, watch } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nexport type VDatePickerSlots = {\n header: {\n header: string\n appendIcon: string\n 'onClick:append': () => void\n }\n}\n\nexport const makeVDatePickerProps = propsFactory({\n calendarIcon: {\n type: String,\n default: '$calendar',\n },\n keyboardIcon: {\n type: String,\n default: '$edit',\n },\n cancelText: {\n type: String,\n default: '$vuetify.datePicker.cancel',\n },\n okText: {\n type: String,\n default: '$vuetify.datePicker.ok',\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 hideActions: Boolean,\n\n ...makeDateProps(),\n ...makeVDatePickerControlsProps(),\n ...makeVDatePickerMonthProps(),\n ...makeVDatePickerYearsProps(),\n ...makeVPickerProps({ title: '$vuetify.datePicker.title' }),\n}, 'VDatePicker')\n\nexport const VDatePicker = genericComponent<VDatePickerSlots>()({\n name: 'VDatePicker',\n\n props: makeVDatePickerProps(),\n\n emits: {\n 'click:cancel': () => true,\n 'click:save': () => true,\n ...dateEmits,\n },\n\n setup (props, { emit, slots }) {\n const adapter = useDate()\n const { t } = useLocale()\n\n const { model, displayDate, viewMode, inputMode, isEqual } = createDatePicker(props)\n\n const isReversing = shallowRef(false)\n\n const inputModel = ref(model.value.map(date => adapter.format(date, 'keyboardDate')))\n const temporaryModel = ref(model.value)\n const title = computed(() => t(props.title))\n const header = computed(() => model.value.length ? adapter.format(model.value[0], 'normalDateWithWeekday') : t(props.header))\n const headerIcon = computed(() => inputMode.value === 'calendar' ? props.keyboardIcon : props.calendarIcon)\n const headerTransition = computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`)\n const minDate = computed(() => props.min && adapter.isValid(props.min) ? adapter.date(props.min) : null)\n const maxDate = computed(() => props.max && adapter.isValid(props.max) ? adapter.date(props.max) : null)\n\n const disabled = computed(() => {\n if (!minDate.value && !maxDate.value) return false\n\n const targets = []\n\n if (minDate.value) {\n const date = adapter.addDays(adapter.startOfMonth(displayDate.value), -1)\n\n adapter.isAfter(minDate.value, date) && targets.push('prev')\n }\n\n if (maxDate.value) {\n const date = adapter.addDays(adapter.endOfMonth(displayDate.value), 1)\n\n adapter.isAfter(date, maxDate.value) && targets.push('next')\n }\n\n if (minDate.value?.getFullYear() === maxDate.value?.getFullYear()) {\n targets.push('mode')\n }\n\n return targets\n })\n\n watch(model, val => {\n if (!isEqual(val, temporaryModel.value)) {\n temporaryModel.value = val\n }\n\n inputModel.value = val.map(date => adapter.format(date, 'keyboardDate'))\n })\n\n watch(temporaryModel, (val, oldVal) => {\n if (props.hideActions && !isEqual(val, model.value)) {\n model.value = val\n }\n\n if (val[0] && oldVal[0]) {\n isReversing.value = adapter.isBefore(val[0], oldVal[0])\n }\n })\n\n function updateFromInput (input: string, index: number) {\n const { isValid, date, isAfter } = adapter\n const inputDate = date(input)\n\n if (\n isValid(input) &&\n (!minDate.value || !isAfter(minDate.value, inputDate)) &&\n (!maxDate.value || !isAfter(inputDate, maxDate.value))\n ) {\n const newModel = model.value.slice()\n newModel[index] = date(input)\n\n if (props.hideActions) {\n model.value = newModel\n } else {\n temporaryModel.value = newModel\n }\n }\n }\n\n function onClickCancel () {\n emit('click:cancel')\n }\n\n function onClickSave () {\n emit('click:save')\n\n model.value = temporaryModel.value\n }\n\n function onClickAppend () {\n inputMode.value = inputMode.value === 'calendar' ? 'keyboard' : 'calendar'\n }\n\n function onClickNext () {\n displayDate.value = adapter.addMonths(displayDate.value, 1)\n }\n\n function onClickPrev () {\n displayDate.value = adapter.addMonths(displayDate.value, -1)\n }\n\n function onClickMode () {\n viewMode.value = viewMode.value === 'month' ? 'year' : 'month'\n }\n\n const headerSlotProps = computed(() => ({\n header: header.value,\n appendIcon: headerIcon.value,\n transition: headerTransition.value,\n 'onClick:append': onClickAppend,\n }))\n\n useRender(() => {\n const [pickerProps] = VPicker.filterProps(props)\n const [datePickerControlsProps] = VDatePickerControls.filterProps(props)\n const [datePickerMonthProps] = VDatePickerMonth.filterProps(props)\n const [datePickerYearsProps] = VDatePickerYears.filterProps(props)\n\n return (\n <VPicker\n { ...pickerProps }\n class={[\n 'v-date-picker',\n props.class,\n ]}\n style={ props.style }\n title={ title.value }\n width={ props.showWeek ? 408 : 360 }\n v-slots={{\n header: () => slots.header?.(headerSlotProps.value) ?? (\n <VDatePickerHeader\n key=\"header\"\n { ...headerSlotProps.value }\n />\n ),\n default: () => inputMode.value === 'calendar' ? (\n <>\n <VDatePickerControls\n { ...datePickerControlsProps }\n disabled={ disabled.value }\n displayDate={ adapter.format(displayDate.value, 'monthAndYear') }\n onClick:next={ onClickNext }\n onClick:prev={ onClickPrev }\n onClick:mode={ onClickMode }\n />\n\n <VFadeTransition hideOnLeave>\n { viewMode.value === 'month' ? (\n <VDatePickerMonth\n key=\"date-picker-month\"\n { ...datePickerMonthProps }\n v-model={ temporaryModel.value }\n displayDate={ displayDate.value }\n min={ minDate.value }\n max={ maxDate.value }\n />\n ) : (\n <VDatePickerYears\n key=\"date-picker-years\"\n { ...datePickerYearsProps }\n v-model:displayDate={ displayDate.value }\n min={ minDate.value }\n max={ maxDate.value }\n onClick:mode={ onClickMode }\n />\n )}\n </VFadeTransition>\n </>\n ) : (\n <div class=\"v-date-picker__input\">\n <VTextField\n modelValue={ inputModel.value[0] }\n onUpdate:modelValue={ v => updateFromInput(v, 0) }\n label={ t(props.inputText) }\n placeholder={ props.inputPlaceholder }\n />\n </div>\n ),\n actions: () => !props.hideActions ? (\n <div>\n <VBtn\n variant=\"text\"\n color={ props.color }\n onClick={ onClickCancel }\n text={ t(props.cancelText) }\n />\n\n <VBtn\n variant=\"text\"\n color={ props.color }\n onClick={ onClickSave }\n text={ t(props.okText) }\n />\n </div>\n ) : undefined,\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","makeVDatePickerYearsProps","VDatePickerYears","VFadeTransition","VBtn","VTextField","dateEmits","makeDateProps","makeVPickerProps","VPicker","createDatePicker","useLocale","useDate","computed","ref","shallowRef","watch","genericComponent","propsFactory","useRender","makeVDatePickerProps","calendarIcon","type","String","default","keyboardIcon","cancelText","okText","inputText","inputPlaceholder","header","hideActions","Boolean","title","VDatePicker","name","props","emits","click:cancel","click:save","setup","_ref","emit","slots","adapter","t","model","displayDate","viewMode","inputMode","isEqual","isReversing","inputModel","value","map","date","format","temporaryModel","variant","length","headerIcon","headerTransition","minDate","min","isValid","maxDate","max","disabled","targets","addDays","startOfMonth","isAfter","push","endOfMonth","getFullYear","val","oldVal","isBefore","updateFromInput","input","index","inputDate","newModel","slice","onClickCancel","onClickSave","onClickAppend","onClickNext","addMonths","onClickPrev","onClickMode","onClickHeader","headerSlotProps","appendIcon","transition","pickerProps","filterProps","datePickerControlsProps","datePickerMonthProps","datePickerYearsProps","_createVNode","_mergeProps","class","style","showWeek","undefined","_Fragment","$event","v","actions","color"],"sources":["../../../src/labs/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 { makeVDatePickerYearsProps, VDatePickerYears } from './VDatePickerYears'\nimport { VFadeTransition } from '@/components/transitions'\nimport { VBtn } from '@/components/VBtn'\nimport { VTextField } from '@/components/VTextField'\nimport { dateEmits, makeDateProps } from '@/labs/VDateInput/composables'\nimport { makeVPickerProps, VPicker } from '@/labs/VPicker/VPicker'\n\n// Composables\nimport { createDatePicker } from './composables'\nimport { useLocale } from '@/composables/locale'\nimport { useDate } from '@/labs/date'\n\n// Utilities\nimport { computed, ref, shallowRef, watch } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { VPickerSlots } from '@/labs/VPicker/VPicker'\n\n// Types\nexport type VDatePickerSlots = Omit<VPickerSlots, 'header'> & {\n header: {\n header: string\n appendIcon: string\n 'onClick:append': () => void\n }\n}\n\nexport const makeVDatePickerProps = propsFactory({\n calendarIcon: {\n type: String,\n default: '$calendar',\n },\n keyboardIcon: {\n type: String,\n default: '$edit',\n },\n cancelText: {\n type: String,\n default: '$vuetify.datePicker.cancel',\n },\n okText: {\n type: String,\n default: '$vuetify.datePicker.ok',\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 hideActions: Boolean,\n\n ...makeDateProps(),\n ...makeVDatePickerControlsProps(),\n ...makeVDatePickerMonthProps(),\n ...makeVDatePickerYearsProps(),\n ...makeVPickerProps({ title: '$vuetify.datePicker.title' }),\n}, 'VDatePicker')\n\nexport const VDatePicker = genericComponent<VDatePickerSlots>()({\n name: 'VDatePicker',\n\n props: makeVDatePickerProps(),\n\n emits: {\n 'click:cancel': () => true,\n 'click:save': () => true,\n ...dateEmits,\n },\n\n setup (props, { emit, slots }) {\n const adapter = useDate()\n const { t } = useLocale()\n\n const { model, displayDate, viewMode, inputMode, isEqual } = createDatePicker(props)\n\n const isReversing = shallowRef(false)\n\n const inputModel = ref(model.value.map(date => adapter.format(date, 'keyboardDate')))\n const temporaryModel = ref(model.value)\n const title = computed(() => {\n return props.variant === 'modern'\n ? t(props.title)\n : adapter.format(displayDate.value, 'shortDate')\n })\n const header = computed(() => model.value.length ? adapter.format(model.value[0], 'normalDateWithWeekday') : t(props.header))\n const headerIcon = computed(() => inputMode.value === 'calendar' ? props.keyboardIcon : props.calendarIcon)\n const headerTransition = computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`)\n const minDate = computed(() => props.min && adapter.isValid(props.min) ? adapter.date(props.min) : null)\n const maxDate = computed(() => props.max && adapter.isValid(props.max) ? adapter.date(props.max) : null)\n\n const disabled = computed(() => {\n if (!minDate.value && !maxDate.value) return false\n\n const targets = []\n\n if (minDate.value) {\n const date = adapter.addDays(adapter.startOfMonth(displayDate.value), -1)\n\n adapter.isAfter(minDate.value, date) && targets.push('prev')\n }\n\n if (maxDate.value) {\n const date = adapter.addDays(adapter.endOfMonth(displayDate.value), 1)\n\n adapter.isAfter(date, maxDate.value) && targets.push('next')\n }\n\n if (minDate.value?.getFullYear() === maxDate.value?.getFullYear()) {\n targets.push('mode')\n }\n\n return targets\n })\n\n watch(model, val => {\n if (!isEqual(val, temporaryModel.value)) {\n temporaryModel.value = val\n }\n\n inputModel.value = val.map(date => adapter.format(date, 'keyboardDate'))\n })\n\n watch(temporaryModel, (val, oldVal) => {\n if (props.hideActions && !isEqual(val, model.value)) {\n model.value = val\n }\n\n if (val[0] && oldVal[0]) {\n isReversing.value = adapter.isBefore(val[0], oldVal[0])\n }\n })\n\n function updateFromInput (input: string, index: number) {\n const { isValid, date, isAfter } = adapter\n const inputDate = date(input)\n\n if (\n isValid(input) &&\n (!minDate.value || !isAfter(minDate.value, inputDate)) &&\n (!maxDate.value || !isAfter(inputDate, maxDate.value))\n ) {\n const newModel = model.value.slice()\n newModel[index] = date(input)\n\n if (props.hideActions) {\n model.value = newModel\n } else {\n temporaryModel.value = newModel\n }\n }\n }\n\n function onClickCancel () {\n emit('click:cancel')\n }\n\n function onClickSave () {\n emit('click:save')\n\n model.value = temporaryModel.value\n }\n\n function onClickAppend () {\n inputMode.value = inputMode.value === 'calendar' ? 'keyboard' : 'calendar'\n }\n\n function onClickNext () {\n displayDate.value = adapter.addMonths(displayDate.value, 1)\n }\n\n function onClickPrev () {\n displayDate.value = adapter.addMonths(displayDate.value, -1)\n }\n\n function onClickMode () {\n viewMode.value = viewMode.value === 'month' ? 'year' : 'month'\n }\n\n function onClickHeader () {\n viewMode.value = 'month'\n }\n\n const headerSlotProps = computed(() => ({\n header: header.value,\n appendIcon: headerIcon.value,\n transition: headerTransition.value,\n 'onClick:append': onClickAppend,\n }))\n\n useRender(() => {\n const [pickerProps] = VPicker.filterProps(props)\n const [datePickerControlsProps] = VDatePickerControls.filterProps(props)\n const [datePickerMonthProps] = VDatePickerMonth.filterProps(props)\n const [datePickerYearsProps] = VDatePickerYears.filterProps(props)\n\n return (\n <VPicker\n { ...pickerProps }\n class={[\n 'v-date-picker',\n `v-date-picker--${viewMode.value}`,\n props.class,\n ]}\n style={ props.style }\n width={ props.showWeek ? 408 : 360 }\n v-slots={{\n title: () => slots.title?.() ?? (\n <div\n class=\"v-date-picker__title\"\n onClick={ props.variant === 'classic' ? onClickMode : undefined }\n >\n { title.value }\n </div>\n ),\n header: () => slots.header?.(headerSlotProps.value) ?? (\n <VDatePickerHeader\n key=\"header\"\n { ...headerSlotProps.value }\n onClick={ viewMode.value === 'year' ? onClickHeader : undefined }\n />\n ),\n default: () => inputMode.value === 'calendar' ? (\n <>\n { (props.variant !== 'classic' || viewMode.value !== 'year') && (\n <VDatePickerControls\n { ...datePickerControlsProps }\n disabled={ disabled.value }\n displayDate={ adapter.format(displayDate.value, 'monthAndYear') }\n onClick:next={ onClickNext }\n onClick:prev={ onClickPrev }\n onClick:mode={ onClickMode }\n />\n )}\n\n <VFadeTransition hideOnLeave>\n { viewMode.value === 'month' ? (\n <VDatePickerMonth\n key=\"date-picker-month\"\n { ...datePickerMonthProps }\n v-model={ temporaryModel.value }\n displayDate={ displayDate.value }\n min={ minDate.value }\n max={ maxDate.value }\n />\n ) : (\n <VDatePickerYears\n key=\"date-picker-years\"\n { ...datePickerYearsProps }\n v-model:displayDate={ displayDate.value }\n min={ minDate.value }\n max={ maxDate.value }\n onClick:mode={ onClickMode }\n />\n )}\n </VFadeTransition>\n </>\n ) : (\n <div class=\"v-date-picker__input\">\n <VTextField\n modelValue={ inputModel.value[0] }\n onUpdate:modelValue={ v => updateFromInput(v, 0) }\n label={ t(props.inputText) }\n placeholder={ props.inputPlaceholder }\n />\n </div>\n ),\n actions: () => !props.hideActions ? (\n slots.actions?.() ?? (\n <div>\n <VBtn\n variant=\"text\"\n color={ props.color }\n onClick={ onClickCancel }\n text={ t(props.cancelText) }\n />\n\n <VBtn\n variant=\"text\"\n color={ props.color }\n onClick={ onClickSave }\n text={ t(props.okText) }\n />\n </div>\n )\n ) : undefined,\n }}\n />\n )\n })\n\n return {}\n },\n})\n\nexport type VDatePicker = InstanceType<typeof VDatePicker>\n"],"mappings":"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"}
@@ -8,12 +8,31 @@
8
8
  padding-bottom: 4px;
9
9
  padding-inline-end: 12px;
10
10
  }
11
+ .v-date-picker-controls--variant-classic {
12
+ padding-inline-start: 12px;
13
+ }
14
+ .v-date-picker-controls--variant-modern .v-date-picker__title:not(:hover) {
15
+ opacity: 0.7;
16
+ }
17
+ .v-date-picker--month .v-date-picker-controls--variant-modern .v-date-picker__title {
18
+ cursor: pointer;
19
+ }
20
+ .v-date-picker--year .v-date-picker-controls--variant-modern .v-date-picker__title {
21
+ opacity: 1;
22
+ }
11
23
  .v-date-picker-controls .v-btn:last-child {
12
- margin-left: 4px;
24
+ margin-inline-start: 4px;
25
+ }
26
+ .v-date-picker--year .v-date-picker-controls > .v-btn {
27
+ transform: rotate(180deg);
13
28
  }
14
29
 
15
30
  .v-date-picker-controls__date {
16
- margin-right: 4px;
31
+ margin-inline-end: 4px;
32
+ }
33
+ .v-date-picker-controls--variant-classic .v-date-picker-controls__date {
34
+ margin: auto;
35
+ text-align: center;
17
36
  }
18
37
 
19
38
  .v-date-picker-controls__month {
@@ -21,4 +40,12 @@
21
40
  }
22
41
  .v-locale--is-rtl.v-date-picker-controls__month, .v-locale--is-rtl .v-date-picker-controls__month {
23
42
  flex-direction: row-reverse;
43
+ }
44
+
45
+ .v-date-picker-controls--variant-classic .v-date-picker-controls__month {
46
+ flex: 1 0 auto;
47
+ }
48
+
49
+ .v-date-picker__title {
50
+ display: inline-block;
24
51
  }
@@ -1,4 +1,4 @@
1
- import { createVNode as _createVNode } from "vue";
1
+ import { Fragment as _Fragment, createVNode as _createVNode } from "vue";
2
2
  // Styles
3
3
  import "./VDatePickerControls.css";
4
4
 
@@ -21,13 +21,13 @@ export const makeVDatePickerControlsProps = propsFactory({
21
21
  type: [String],
22
22
  default: '$prev'
23
23
  },
24
- expandIcon: {
24
+ modeIcon: {
25
25
  type: [String],
26
- default: '$expand'
26
+ default: '$subgroup'
27
27
  },
28
- collapseIcon: {
29
- type: [String],
30
- default: '$collapse'
28
+ variant: {
29
+ type: String,
30
+ default: 'modern'
31
31
  },
32
32
  viewMode: {
33
33
  type: String,
@@ -46,9 +46,6 @@ export const VDatePickerControls = genericComponent()({
46
46
  let {
47
47
  emit
48
48
  } = _ref;
49
- const modeIcon = computed(() => {
50
- return props.viewMode === 'month' ? props.expandIcon : props.collapseIcon;
51
- });
52
49
  const disableMode = computed(() => {
53
50
  return Array.isArray(props.disabled) ? props.disabled.includes('mode') : !!props.disabled;
54
51
  });
@@ -68,17 +65,21 @@ export const VDatePickerControls = genericComponent()({
68
65
  emit('click:mode');
69
66
  }
70
67
  useRender(() => {
71
- return _createVNode("div", {
72
- "class": "v-date-picker-controls"
73
- }, [_createVNode("div", {
68
+ const displayDate = _createVNode("div", {
74
69
  "class": "v-date-picker-controls__date"
75
- }, [props.displayDate]), _createVNode(VBtn, {
70
+ }, [props.displayDate]);
71
+ return _createVNode("div", {
72
+ "class": ['v-date-picker-controls', `v-date-picker-controls--variant-${props.variant}`]
73
+ }, [props.variant === 'modern' && _createVNode(_Fragment, null, [displayDate, _createVNode(VBtn, {
74
+ "key": "mode-btn",
76
75
  "disabled": disableMode.value,
77
- "key": "expand-btn",
78
- "icon": modeIcon.value,
76
+ "density": "comfortable",
77
+ "icon": props.modeIcon,
79
78
  "variant": "text",
80
79
  "onClick": onClickMode
81
- }, null), _createVNode(VSpacer, null, null), _createVNode("div", {
80
+ }, null), _createVNode(VSpacer, {
81
+ "key": "mode-spacer"
82
+ }, null)]), _createVNode("div", {
82
83
  "key": "month-buttons",
83
84
  "class": "v-date-picker-controls__month"
84
85
  }, [_createVNode(VBtn, {
@@ -86,7 +87,7 @@ export const VDatePickerControls = genericComponent()({
86
87
  "icon": props.prevIcon,
87
88
  "variant": "text",
88
89
  "onClick": onClickPrev
89
- }, null), _createVNode(VBtn, {
90
+ }, null), props.variant === 'classic' && displayDate, _createVNode(VBtn, {
90
91
  "disabled": disableNext.value,
91
92
  "icon": props.nextIcon,
92
93
  "variant": "text",
@@ -1 +1 @@
1
- {"version":3,"file":"VDatePickerControls.mjs","names":["VBtn","VSpacer","computed","genericComponent","propsFactory","useRender","makeVDatePickerControlsProps","displayDate","String","disabled","type","Boolean","Array","default","nextIcon","prevIcon","expandIcon","collapseIcon","viewMode","VDatePickerControls","name","props","emits","click:mode","click:prev","click:next","setup","_ref","emit","modeIcon","disableMode","isArray","includes","disablePrev","disableNext","onClickPrev","onClickNext","onClickMode","_createVNode","value"],"sources":["../../../src/labs/VDatePicker/VDatePickerControls.tsx"],"sourcesContent":["// Styles\nimport './VDatePickerControls.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VSpacer } from '@/components/VGrid'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const makeVDatePickerControlsProps = propsFactory({\n displayDate: String,\n disabled: {\n type: [Boolean, String, Array] as PropType<boolean | string | string[]>,\n default: false,\n },\n nextIcon: {\n type: [String],\n default: '$next',\n },\n prevIcon: {\n type: [String],\n default: '$prev',\n },\n expandIcon: {\n type: [String],\n default: '$expand',\n },\n collapseIcon: {\n type: [String],\n default: '$collapse',\n },\n viewMode: {\n type: String as PropType<'month' | 'year'>,\n default: 'month',\n },\n}, 'VDatePickerControls')\n\nexport const VDatePickerControls = genericComponent()({\n name: 'VDatePickerControls',\n\n props: makeVDatePickerControlsProps(),\n\n emits: {\n 'click:mode': () => true,\n 'click:prev': () => true,\n 'click:next': () => true,\n },\n\n setup (props, { emit }) {\n const modeIcon = computed(() => {\n return props.viewMode === 'month' ? props.expandIcon : props.collapseIcon\n })\n const disableMode = computed(() => {\n return Array.isArray(props.disabled)\n ? props.disabled.includes('mode')\n : !!props.disabled\n })\n const disablePrev = computed(() => {\n return Array.isArray(props.disabled)\n ? props.disabled.includes('prev')\n : !!props.disabled\n })\n const disableNext = computed(() => {\n return Array.isArray(props.disabled)\n ? props.disabled.includes('next')\n : !!props.disabled\n })\n\n function onClickPrev () {\n emit('click:prev')\n }\n\n function onClickNext () {\n emit('click:next')\n }\n\n function onClickMode () {\n emit('click:mode')\n }\n\n useRender(() => {\n return (\n <div class=\"v-date-picker-controls\">\n <div class=\"v-date-picker-controls__date\">{ props.displayDate }</div>\n\n <VBtn\n disabled={ disableMode.value }\n key=\"expand-btn\"\n icon={ modeIcon.value }\n variant=\"text\"\n onClick={ onClickMode }\n />\n\n <VSpacer />\n\n <div\n key=\"month-buttons\"\n class=\"v-date-picker-controls__month\"\n >\n <VBtn\n disabled={ disablePrev.value }\n icon={ props.prevIcon }\n variant=\"text\"\n onClick={ onClickPrev }\n />\n\n <VBtn\n disabled={ disableNext.value }\n icon={ props.nextIcon }\n variant=\"text\"\n onClick={ onClickNext }\n />\n </div>\n </div>\n )\n })\n\n return {}\n },\n})\n\nexport type VDatePickerControls = InstanceType<typeof VDatePickerControls>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VDatePickerControls.mjs","names":["VBtn","VSpacer","computed","genericComponent","propsFactory","useRender","makeVDatePickerControlsProps","displayDate","String","disabled","type","Boolean","Array","default","nextIcon","prevIcon","modeIcon","variant","viewMode","VDatePickerControls","name","props","emits","click:mode","click:prev","click:next","setup","_ref","emit","disableMode","isArray","includes","disablePrev","disableNext","onClickPrev","onClickNext","onClickMode","_createVNode","_Fragment","value"],"sources":["../../../src/labs/VDatePicker/VDatePickerControls.tsx"],"sourcesContent":["// Styles\nimport './VDatePickerControls.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VSpacer } from '@/components/VGrid'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const makeVDatePickerControlsProps = propsFactory({\n displayDate: String,\n disabled: {\n type: [Boolean, String, Array] as PropType<boolean | string | string[]>,\n default: false,\n },\n nextIcon: {\n type: [String],\n default: '$next',\n },\n prevIcon: {\n type: [String],\n default: '$prev',\n },\n modeIcon: {\n type: [String],\n default: '$subgroup',\n },\n variant: {\n type: String,\n default: 'modern',\n },\n viewMode: {\n type: String as PropType<'month' | 'year'>,\n default: 'month',\n },\n}, 'VDatePickerControls')\n\nexport const VDatePickerControls = genericComponent()({\n name: 'VDatePickerControls',\n\n props: makeVDatePickerControlsProps(),\n\n emits: {\n 'click:mode': () => true,\n 'click:prev': () => true,\n 'click:next': () => true,\n },\n\n setup (props, { emit }) {\n const disableMode = computed(() => {\n return Array.isArray(props.disabled)\n ? props.disabled.includes('mode')\n : !!props.disabled\n })\n const disablePrev = computed(() => {\n return Array.isArray(props.disabled)\n ? props.disabled.includes('prev')\n : !!props.disabled\n })\n const disableNext = computed(() => {\n return Array.isArray(props.disabled)\n ? props.disabled.includes('next')\n : !!props.disabled\n })\n\n function onClickPrev () {\n emit('click:prev')\n }\n\n function onClickNext () {\n emit('click:next')\n }\n\n function onClickMode () {\n emit('click:mode')\n }\n\n useRender(() => {\n const displayDate = (\n <div class=\"v-date-picker-controls__date\">{ props.displayDate }</div>\n )\n\n return (\n <div\n class={[\n 'v-date-picker-controls',\n `v-date-picker-controls--variant-${props.variant}`,\n ]}\n >\n { props.variant === 'modern' && (\n <>\n { displayDate }\n\n <VBtn\n key=\"mode-btn\"\n disabled={ disableMode.value }\n density=\"comfortable\"\n icon={ props.modeIcon }\n variant=\"text\"\n onClick={ onClickMode }\n />\n\n <VSpacer key=\"mode-spacer\" />\n </>\n )}\n\n <div\n key=\"month-buttons\"\n class=\"v-date-picker-controls__month\"\n >\n <VBtn\n disabled={ disablePrev.value }\n icon={ props.prevIcon }\n variant=\"text\"\n onClick={ onClickPrev }\n />\n\n { props.variant === 'classic' && displayDate }\n\n <VBtn\n disabled={ disableNext.value }\n icon={ props.nextIcon }\n variant=\"text\"\n onClick={ onClickNext }\n />\n </div>\n </div>\n )\n })\n\n return {}\n },\n})\n\nexport type VDatePickerControls = InstanceType<typeof VDatePickerControls>\n"],"mappings":"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"}
@@ -10,14 +10,42 @@
10
10
  padding-bottom: 4px
11
11
  padding-inline-end: 12px
12
12
 
13
+ &--variant-classic
14
+ padding-inline-start: 12px
15
+
16
+ &--variant-modern
17
+ .v-date-picker__title
18
+ &:not(:hover)
19
+ opacity: .7
20
+
21
+ .v-date-picker--month &
22
+ cursor: pointer
23
+
24
+ .v-date-picker--year &
25
+ opacity: 1
26
+
13
27
  .v-btn:last-child
14
- margin-left: 4px
28
+ margin-inline-start: 4px
29
+
30
+ .v-date-picker--year &
31
+ > .v-btn
32
+ transform: rotate(180deg)
15
33
 
16
34
  .v-date-picker-controls__date
17
- margin-right: 4px
35
+ margin-inline-end: 4px
36
+
37
+ .v-date-picker-controls--variant-classic &
38
+ margin: auto
39
+ text-align: center
18
40
 
19
41
  .v-date-picker-controls__month
20
42
  display: flex
21
43
 
22
44
  @include tools.rtl()
23
45
  flex-direction: row-reverse
46
+
47
+ .v-date-picker-controls--variant-classic &
48
+ flex: 1 0 auto
49
+
50
+ .v-date-picker__title
51
+ display: inline-block
@@ -19,12 +19,21 @@
19
19
 
20
20
  .v-date-picker-header__content {
21
21
  align-items: center;
22
- display: flex;
22
+ display: inline-flex;
23
23
  font-size: 32px;
24
24
  line-height: 40px;
25
25
  grid-area: content;
26
26
  justify-content: space-between;
27
27
  }
28
+ .v-date-picker-header--clickable .v-date-picker-header__content:not(:hover) {
29
+ opacity: 0.7;
30
+ }
31
+ .v-date-picker--month .v-date-picker-header__content {
32
+ opacity: 1;
33
+ }
34
+ .v-date-picker--year .v-date-picker-header__content {
35
+ cursor: pointer;
36
+ }
28
37
 
29
38
  .date-picker-header-transition-enter-active,
30
39
  .date-picker-header-reverse-transition-enter-active {
@@ -7,17 +7,19 @@ import { VBtn } from "../../components/VBtn/index.mjs";
7
7
  import { VDefaultsProvider } from "../../components/VDefaultsProvider/index.mjs"; // Composables
8
8
  import { useBackgroundColor } from "../../composables/color.mjs";
9
9
  import { MaybeTransition } from "../../composables/transition.mjs"; // Utilities
10
- import { genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
10
+ import { EventProp, genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
11
11
  export const makeVDatePickerHeaderProps = propsFactory({
12
12
  appendIcon: String,
13
13
  color: String,
14
14
  header: String,
15
- transition: String
15
+ transition: String,
16
+ onClick: EventProp()
16
17
  }, 'VDatePickerHeader');
17
18
  export const VDatePickerHeader = genericComponent()({
18
19
  name: 'VDatePickerHeader',
19
20
  props: makeVDatePickerHeaderProps(),
20
21
  emits: {
22
+ click: () => true,
21
23
  'click:append': () => true
22
24
  },
23
25
  setup(props, _ref) {
@@ -29,6 +31,9 @@ export const VDatePickerHeader = genericComponent()({
29
31
  backgroundColorClasses,
30
32
  backgroundColorStyles
31
33
  } = useBackgroundColor(props, 'color');
34
+ function onClick() {
35
+ emit('click');
36
+ }
32
37
  function onClickAppend() {
33
38
  emit('click:append');
34
39
  }
@@ -36,8 +41,11 @@ export const VDatePickerHeader = genericComponent()({
36
41
  const hasContent = !!(slots.default || props.header);
37
42
  const hasAppend = !!(slots.append || props.appendIcon);
38
43
  return _createVNode("div", {
39
- "class": ['v-date-picker-header', backgroundColorClasses.value],
40
- "style": backgroundColorStyles.value
44
+ "class": ['v-date-picker-header', {
45
+ 'v-date-picker-header--clickable': !!props.onClick
46
+ }, backgroundColorClasses.value],
47
+ "style": backgroundColorStyles.value,
48
+ "onClick": onClick
41
49
  }, [slots.prepend && _createVNode("div", {
42
50
  "key": "prepend",
43
51
  "class": "v-date-picker-header__prepend"
@@ -1 +1 @@
1
- {"version":3,"file":"VDatePickerHeader.mjs","names":["VBtn","VDefaultsProvider","useBackgroundColor","MaybeTransition","genericComponent","propsFactory","useRender","makeVDatePickerHeaderProps","appendIcon","String","color","header","transition","VDatePickerHeader","name","props","emits","click:append","setup","_ref","emit","slots","backgroundColorClasses","backgroundColorStyles","onClickAppend","hasContent","default","hasAppend","append","_createVNode","value","prepend","icon","variant"],"sources":["../../../src/labs/VDatePicker/VDatePickerHeader.tsx"],"sourcesContent":["// Styles\nimport './VDatePickerHeader.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nexport type VDatePickerHeaderSlots = {\n prepend: never\n default: never\n append: never\n}\n\nexport const makeVDatePickerHeaderProps = propsFactory({\n appendIcon: String,\n color: String,\n header: String,\n transition: String,\n}, 'VDatePickerHeader')\n\nexport const VDatePickerHeader = genericComponent<VDatePickerHeaderSlots>()({\n name: 'VDatePickerHeader',\n\n props: makeVDatePickerHeaderProps(),\n\n emits: {\n 'click:append': () => true,\n },\n\n setup (props, { emit, slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'color')\n\n function onClickAppend () {\n emit('click:append')\n }\n\n useRender(() => {\n const hasContent = !!(slots.default || props.header)\n const hasAppend = !!(slots.append || props.appendIcon)\n\n return (\n <div\n class={[\n 'v-date-picker-header',\n backgroundColorClasses.value,\n ]}\n style={ backgroundColorStyles.value }\n >\n { slots.prepend && (\n <div key=\"prepend\" class=\"v-date-picker-header__prepend\">\n { slots.prepend() }\n </div>\n )}\n\n { hasContent && (\n <MaybeTransition key=\"content\" name={ props.transition }>\n <div key={ props.header } class=\"v-date-picker-header__content\">\n { slots.default?.() ?? props.header }\n </div>\n </MaybeTransition>\n )}\n\n { hasAppend && (\n <div class=\"v-date-picker-header__append\">\n { !slots.append ? (\n <VBtn\n key=\"append-btn\"\n icon={ props.appendIcon }\n variant=\"text\"\n onClick={ onClickAppend }\n />\n ) : (\n <VDefaultsProvider\n key=\"append-defaults\"\n disabled={ !props.appendIcon }\n defaults={{\n VBtn: {\n icon: props.appendIcon,\n variant: 'text',\n },\n }}\n >\n { slots.append?.() }\n </VDefaultsProvider>\n )}\n </div>\n )}\n </div>\n )\n })\n\n return {}\n },\n})\n\nexport type VDatePickerHeader = InstanceType<typeof VDatePickerHeader>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,IAAI;AAAA,SACJC,iBAAiB,wDAE1B;AAAA,SACSC,kBAAkB;AAAA,SAClBC,eAAe,4CAExB;AAAA,SACSC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,gCAElD;AAOA,OAAO,MAAMC,0BAA0B,GAAGF,YAAY,CAAC;EACrDG,UAAU,EAAEC,MAAM;EAClBC,KAAK,EAAED,MAAM;EACbE,MAAM,EAAEF,MAAM;EACdG,UAAU,EAAEH;AACd,CAAC,EAAE,mBAAmB,CAAC;AAEvB,OAAO,MAAMI,iBAAiB,GAAGT,gBAAgB,EAA0B,CAAC;EAC1EU,IAAI,EAAE,mBAAmB;EAEzBC,KAAK,EAAER,0BAA0B,EAAE;EAEnCS,KAAK,EAAE;IACL,cAAc,EAAEC,CAAA,KAAM;EACxB,CAAC;EAEDC,KAAKA,CAAEH,KAAK,EAAAI,IAAA,EAAmB;IAAA,IAAjB;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC3B,MAAM;MAAEG,sBAAsB;MAAEC;IAAsB,CAAC,GAAGrB,kBAAkB,CAACa,KAAK,EAAE,OAAO,CAAC;IAE5F,SAASS,aAAaA,CAAA,EAAI;MACxBJ,IAAI,CAAC,cAAc,CAAC;IACtB;IAEAd,SAAS,CAAC,MAAM;MACd,MAAMmB,UAAU,GAAG,CAAC,EAAEJ,KAAK,CAACK,OAAO,IAAIX,KAAK,CAACJ,MAAM,CAAC;MACpD,MAAMgB,SAAS,GAAG,CAAC,EAAEN,KAAK,CAACO,MAAM,IAAIb,KAAK,CAACP,UAAU,CAAC;MAEtD,OAAAqB,YAAA;QAAA,SAEW,CACL,sBAAsB,EACtBP,sBAAsB,CAACQ,KAAK,CAC7B;QAAA,SACOP,qBAAqB,CAACO;MAAK,IAEjCT,KAAK,CAACU,OAAO,IAAAF,YAAA;QAAA,OACJ,SAAS;QAAA,SAAO;MAA+B,IACpDR,KAAK,CAACU,OAAO,EAAE,EAEpB,EAECN,UAAU,IAAAI,YAAA,CAAA1B,eAAA;QAAA,OACW,SAAS;QAAA,QAAQY,KAAK,CAACH;MAAU;QAAAc,OAAA,EAAAA,CAAA,MAAAG,YAAA;UAAA,OACzCd,KAAK,CAACJ,MAAM;UAAA,SAAS;QAA+B,IAC3DU,KAAK,CAACK,OAAO,IAAI,IAAIX,KAAK,CAACJ,MAAM;MAAA,EAGxC,EAECgB,SAAS,IAAAE,YAAA;QAAA,SACE;MAA8B,IACrC,CAACR,KAAK,CAACO,MAAM,GAAAC,YAAA,CAAA7B,IAAA;QAAA,OAEP,YAAY;QAAA,QACTe,KAAK,CAACP,UAAU;QAAA,WACf,MAAM;QAAA,WACJgB;MAAa,WAAAK,YAAA,CAAA5B,iBAAA;QAAA,OAInB,iBAAiB;QAAA,YACV,CAACc,KAAK,CAACP,UAAU;QAAA,YAClB;UACRR,IAAI,EAAE;YACJgC,IAAI,EAAEjB,KAAK,CAACP,UAAU;YACtByB,OAAO,EAAE;UACX;QACF;MAAC;QAAAP,OAAA,EAAAA,CAAA,MAECL,KAAK,CAACO,MAAM,IAAI;MAAA,EAErB,EAEJ;IAGP,CAAC,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"VDatePickerHeader.mjs","names":["VBtn","VDefaultsProvider","useBackgroundColor","MaybeTransition","EventProp","genericComponent","propsFactory","useRender","makeVDatePickerHeaderProps","appendIcon","String","color","header","transition","onClick","VDatePickerHeader","name","props","emits","click","click:append","setup","_ref","emit","slots","backgroundColorClasses","backgroundColorStyles","onClickAppend","hasContent","default","hasAppend","append","_createVNode","value","prepend","icon","variant"],"sources":["../../../src/labs/VDatePicker/VDatePickerHeader.tsx"],"sourcesContent":["// Styles\nimport './VDatePickerHeader.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\nimport { MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { EventProp, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nexport type VDatePickerHeaderSlots = {\n prepend: never\n default: never\n append: never\n}\n\nexport const makeVDatePickerHeaderProps = propsFactory({\n appendIcon: String,\n color: String,\n header: String,\n transition: String,\n onClick: EventProp<[MouseEvent]>(),\n}, 'VDatePickerHeader')\n\nexport const VDatePickerHeader = genericComponent<VDatePickerHeaderSlots>()({\n name: 'VDatePickerHeader',\n\n props: makeVDatePickerHeaderProps(),\n\n emits: {\n click: () => true,\n 'click:append': () => true,\n },\n\n setup (props, { emit, slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'color')\n\n function onClick () {\n emit('click')\n }\n\n function onClickAppend () {\n emit('click:append')\n }\n\n useRender(() => {\n const hasContent = !!(slots.default || props.header)\n const hasAppend = !!(slots.append || props.appendIcon)\n\n return (\n <div\n class={[\n 'v-date-picker-header',\n {\n 'v-date-picker-header--clickable': !!props.onClick,\n },\n backgroundColorClasses.value,\n ]}\n style={ backgroundColorStyles.value }\n onClick={ onClick }\n >\n { slots.prepend && (\n <div key=\"prepend\" class=\"v-date-picker-header__prepend\">\n { slots.prepend() }\n </div>\n )}\n\n { hasContent && (\n <MaybeTransition key=\"content\" name={ props.transition }>\n <div key={ props.header } class=\"v-date-picker-header__content\">\n { slots.default?.() ?? props.header }\n </div>\n </MaybeTransition>\n )}\n\n { hasAppend && (\n <div class=\"v-date-picker-header__append\">\n { !slots.append ? (\n <VBtn\n key=\"append-btn\"\n icon={ props.appendIcon }\n variant=\"text\"\n onClick={ onClickAppend }\n />\n ) : (\n <VDefaultsProvider\n key=\"append-defaults\"\n disabled={ !props.appendIcon }\n defaults={{\n VBtn: {\n icon: props.appendIcon,\n variant: 'text',\n },\n }}\n >\n { slots.append?.() }\n </VDefaultsProvider>\n )}\n </div>\n )}\n </div>\n )\n })\n\n return {}\n },\n})\n\nexport type VDatePickerHeader = InstanceType<typeof VDatePickerHeader>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,IAAI;AAAA,SACJC,iBAAiB,wDAE1B;AAAA,SACSC,kBAAkB;AAAA,SAClBC,eAAe,4CAExB;AAAA,SACSC,SAAS,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,gCAE7D;AAOA,OAAO,MAAMC,0BAA0B,GAAGF,YAAY,CAAC;EACrDG,UAAU,EAAEC,MAAM;EAClBC,KAAK,EAAED,MAAM;EACbE,MAAM,EAAEF,MAAM;EACdG,UAAU,EAAEH,MAAM;EAClBI,OAAO,EAAEV,SAAS;AACpB,CAAC,EAAE,mBAAmB,CAAC;AAEvB,OAAO,MAAMW,iBAAiB,GAAGV,gBAAgB,EAA0B,CAAC;EAC1EW,IAAI,EAAE,mBAAmB;EAEzBC,KAAK,EAAET,0BAA0B,EAAE;EAEnCU,KAAK,EAAE;IACLC,KAAK,EAAEA,CAAA,KAAM,IAAI;IACjB,cAAc,EAAEC,CAAA,KAAM;EACxB,CAAC;EAEDC,KAAKA,CAAEJ,KAAK,EAAAK,IAAA,EAAmB;IAAA,IAAjB;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC3B,MAAM;MAAEG,sBAAsB;MAAEC;IAAsB,CAAC,GAAGxB,kBAAkB,CAACe,KAAK,EAAE,OAAO,CAAC;IAE5F,SAASH,OAAOA,CAAA,EAAI;MAClBS,IAAI,CAAC,OAAO,CAAC;IACf;IAEA,SAASI,aAAaA,CAAA,EAAI;MACxBJ,IAAI,CAAC,cAAc,CAAC;IACtB;IAEAhB,SAAS,CAAC,MAAM;MACd,MAAMqB,UAAU,GAAG,CAAC,EAAEJ,KAAK,CAACK,OAAO,IAAIZ,KAAK,CAACL,MAAM,CAAC;MACpD,MAAMkB,SAAS,GAAG,CAAC,EAAEN,KAAK,CAACO,MAAM,IAAId,KAAK,CAACR,UAAU,CAAC;MAEtD,OAAAuB,YAAA;QAAA,SAEW,CACL,sBAAsB,EACtB;UACE,iCAAiC,EAAE,CAAC,CAACf,KAAK,CAACH;QAC7C,CAAC,EACDW,sBAAsB,CAACQ,KAAK,CAC7B;QAAA,SACOP,qBAAqB,CAACO,KAAK;QAAA,WACzBnB;MAAO,IAEfU,KAAK,CAACU,OAAO,IAAAF,YAAA;QAAA,OACJ,SAAS;QAAA,SAAO;MAA+B,IACpDR,KAAK,CAACU,OAAO,EAAE,EAEpB,EAECN,UAAU,IAAAI,YAAA,CAAA7B,eAAA;QAAA,OACW,SAAS;QAAA,QAAQc,KAAK,CAACJ;MAAU;QAAAgB,OAAA,EAAAA,CAAA,MAAAG,YAAA;UAAA,OACzCf,KAAK,CAACL,MAAM;UAAA,SAAS;QAA+B,IAC3DY,KAAK,CAACK,OAAO,IAAI,IAAIZ,KAAK,CAACL,MAAM;MAAA,EAGxC,EAECkB,SAAS,IAAAE,YAAA;QAAA,SACE;MAA8B,IACrC,CAACR,KAAK,CAACO,MAAM,GAAAC,YAAA,CAAAhC,IAAA;QAAA,OAEP,YAAY;QAAA,QACTiB,KAAK,CAACR,UAAU;QAAA,WACf,MAAM;QAAA,WACJkB;MAAa,WAAAK,YAAA,CAAA/B,iBAAA;QAAA,OAInB,iBAAiB;QAAA,YACV,CAACgB,KAAK,CAACR,UAAU;QAAA,YAClB;UACRT,IAAI,EAAE;YACJmC,IAAI,EAAElB,KAAK,CAACR,UAAU;YACtB2B,OAAO,EAAE;UACX;QACF;MAAC;QAAAP,OAAA,EAAAA,CAAA,MAECL,KAAK,CAACO,MAAM,IAAI;MAAA,EAErB,EAEJ;IAGP,CAAC,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
@@ -18,12 +18,22 @@
18
18
 
19
19
  .v-date-picker-header__content
20
20
  align-items: center
21
- display: flex
21
+ display: inline-flex
22
22
  font-size: 32px
23
23
  line-height: 40px
24
24
  grid-area: content
25
25
  justify-content: space-between
26
26
 
27
+ .v-date-picker-header--clickable &
28
+ &:not(:hover)
29
+ opacity: .7
30
+
31
+ .v-date-picker--month &
32
+ opacity: 1
33
+
34
+ .v-date-picker--year &
35
+ cursor: pointer
36
+
27
37
  .date-picker-header-transition,
28
38
  .date-picker-header-reverse-transition
29
39
  &-enter-active
@@ -275,8 +275,7 @@ export const VDatePickerMonth = genericComponent()({
275
275
  "key": "in-hover",
276
276
  "class": "v-date-picker-month__day--hover"
277
277
  }, null), (props.showAdjacentMonths || !item.isAdjacent) && _createVNode(VBtn, {
278
- "active": item.isSelected,
279
- "color": color,
278
+ "color": !item.isToday || item.isSelected ? color : undefined,
280
279
  "disabled": item.isDisabled,
281
280
  "icon": true,
282
281
  "ripple": false,