vuetify 3.3.20 → 3.3.21

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 (57) hide show
  1. package/dist/json/attributes.json +18 -6
  2. package/dist/json/importMap-labs.json +4 -4
  3. package/dist/json/importMap.json +16 -16
  4. package/dist/json/tags.json +3 -0
  5. package/dist/json/web-types.json +35 -8
  6. package/dist/vuetify-labs.css +4950 -4943
  7. package/dist/vuetify-labs.d.ts +68 -48
  8. package/dist/vuetify-labs.esm.js +59 -14
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +59 -14
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +5468 -5462
  13. package/dist/vuetify.d.ts +7 -5
  14. package/dist/vuetify.esm.js +26 -4
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +26 -4
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +768 -765
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/blueprints/index.d.mts +2 -0
  22. package/lib/blueprints/md1.d.mts +2 -0
  23. package/lib/blueprints/md2.d.mts +2 -0
  24. package/lib/blueprints/md3.d.mts +2 -0
  25. package/lib/components/VChip/VChip.css +67 -67
  26. package/lib/components/VChip/_variables.scss +1 -1
  27. package/lib/components/VColorPicker/VColorPickerCanvas.mjs +1 -0
  28. package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
  29. package/lib/components/VCombobox/VCombobox.mjs +1 -1
  30. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  31. package/lib/components/VField/VField.css +3 -0
  32. package/lib/components/VField/VField.sass +3 -0
  33. package/lib/components/VField/_variables.scss +1 -0
  34. package/lib/components/VTable/VTable.css +3 -0
  35. package/lib/components/VTable/VTable.sass +3 -0
  36. package/lib/entry-bundler.mjs +1 -1
  37. package/lib/framework.mjs +1 -1
  38. package/lib/index.d.mts +7 -5
  39. package/lib/labs/VDataTable/VDataTableFooter.mjs +12 -4
  40. package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
  41. package/lib/labs/VDataTable/index.d.mts +48 -48
  42. package/lib/labs/VDatePicker/VDatePickerMonth.mjs +14 -2
  43. package/lib/labs/VDatePicker/VDatePickerMonth.mjs.map +1 -1
  44. package/lib/labs/VDatePicker/index.d.mts +18 -0
  45. package/lib/labs/VDateRangePicker/index.d.mts +12 -0
  46. package/lib/labs/VOtpInput/VOtpInput.css +3 -2
  47. package/lib/labs/VOtpInput/VOtpInput.mjs +7 -4
  48. package/lib/labs/VOtpInput/VOtpInput.mjs.map +1 -1
  49. package/lib/labs/VOtpInput/VOtpInput.sass +9 -8
  50. package/lib/labs/VOtpInput/_variables.scss +9 -0
  51. package/lib/labs/components.d.mts +66 -48
  52. package/lib/labs/date/DateAdapter.mjs.map +1 -1
  53. package/lib/labs/date/adapters/vuetify.d.mts +4 -0
  54. package/lib/labs/date/adapters/vuetify.mjs +18 -1
  55. package/lib/labs/date/adapters/vuetify.mjs.map +1 -1
  56. package/lib/labs/date/index.d.mts +4 -0
  57. package/package.json +2 -2
@@ -22,6 +22,9 @@
22
22
  opacity: var(--v-disabled-opacity);
23
23
  pointer-events: none;
24
24
  }
25
+ .v-field .v-chip {
26
+ --v-chip-height: 24px;
27
+ }
25
28
 
26
29
  /* endregion */
27
30
  /* region MODIFIERS */
@@ -30,6 +30,9 @@
30
30
  --v-field-input-padding-top: #{$field-input-padding-top}
31
31
  --v-field-input-padding-bottom: #{$field-input-padding-bottom}
32
32
 
33
+ .v-chip
34
+ --v-chip-height: #{$field-chip-height}
35
+
33
36
  /* endregion */
34
37
  /* region MODIFIERS */
35
38
  .v-field
@@ -16,6 +16,7 @@ $field-subtle-transition-timing: 250ms settings.$standard-easing !default;
16
16
  $field-underlined-margin-bottom: 4px !default;
17
17
  $field-clearable-margin: 4px !default;
18
18
  $field-clearable-transition: .15s opacity, .15s width settings.$standard-easing !default;
19
+ $field-chip-height: 24px !default;
19
20
 
20
21
  // CONTROL
21
22
  $field-control-solo-background: rgb(var(--v-theme-surface)) !default;
@@ -39,6 +39,8 @@
39
39
  border-radius: inherit;
40
40
  line-height: 1.5;
41
41
  max-width: 100%;
42
+ display: flex;
43
+ flex-direction: column;
42
44
  }
43
45
  .v-table > .v-table__wrapper > table {
44
46
  width: 100%;
@@ -98,6 +100,7 @@
98
100
  .v-table__wrapper {
99
101
  border-radius: inherit;
100
102
  overflow: auto;
103
+ flex: 1 1 auto;
101
104
  }
102
105
 
103
106
  .v-table--has-top > .v-table__wrapper > table > tbody > tr:first-child:hover > td:first-child {
@@ -70,6 +70,8 @@
70
70
  // Do not inherit line-height
71
71
  line-height: $table-line-height
72
72
  max-width: 100%
73
+ display: flex
74
+ flex-direction: column
73
75
 
74
76
  > .v-table__wrapper
75
77
  > table
@@ -110,6 +112,7 @@
110
112
  .v-table__wrapper
111
113
  border-radius: inherit
112
114
  overflow: auto
115
+ flex: 1 1 auto
113
116
 
114
117
  // Modifiers
115
118
  .v-table--has-top
@@ -15,7 +15,7 @@ export const createVuetify = function () {
15
15
  ...options
16
16
  });
17
17
  };
18
- export const version = "3.3.20";
18
+ export const version = "3.3.21";
19
19
  createVuetify.version = version;
20
20
  export { components, directives };
21
21
  export * from "./composables/index.mjs";
package/lib/framework.mjs CHANGED
@@ -92,7 +92,7 @@ export function createVuetify() {
92
92
  date
93
93
  };
94
94
  }
95
- export const version = "3.3.20";
95
+ export const version = "3.3.21";
96
96
  createVuetify.version = version;
97
97
 
98
98
  // Vue's inject() can only be used in setup
package/lib/index.d.mts CHANGED
@@ -213,6 +213,8 @@ interface DateAdapter<T> {
213
213
  date(value?: any): T | null;
214
214
  format(date: T, formatString: string): string;
215
215
  toJsDate(value: T): Date;
216
+ parseISO(date: string): T;
217
+ toISO(date: T): string;
216
218
  startOfDay(date: T): T;
217
219
  endOfDay(date: T): T;
218
220
  startOfMonth(date: T): T;
@@ -363,10 +365,6 @@ declare module '@vue/runtime-core' {
363
365
  }
364
366
 
365
367
  export interface GlobalComponents {
366
- VSwitch: typeof import('vuetify/components')['VSwitch']
367
- VSystemBar: typeof import('vuetify/components')['VSystemBar']
368
- VTabs: typeof import('vuetify/components')['VTabs']
369
- VTab: typeof import('vuetify/components')['VTab']
370
368
  VApp: typeof import('vuetify/components')['VApp']
371
369
  VAppBar: typeof import('vuetify/components')['VAppBar']
372
370
  VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
@@ -450,6 +448,10 @@ declare module '@vue/runtime-core' {
450
448
  VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
451
449
  VSlider: typeof import('vuetify/components')['VSlider']
452
450
  VSnackbar: typeof import('vuetify/components')['VSnackbar']
451
+ VSwitch: typeof import('vuetify/components')['VSwitch']
452
+ VSystemBar: typeof import('vuetify/components')['VSystemBar']
453
+ VTabs: typeof import('vuetify/components')['VTabs']
454
+ VTab: typeof import('vuetify/components')['VTab']
453
455
  VTable: typeof import('vuetify/components')['VTable']
454
456
  VTextarea: typeof import('vuetify/components')['VTextarea']
455
457
  VTextField: typeof import('vuetify/components')['VTextField']
@@ -497,6 +499,7 @@ declare module '@vue/runtime-core' {
497
499
  VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
498
500
  VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
499
501
  VBottomSheet: typeof import('vuetify/labs/components')['VBottomSheet']
502
+ VDataIterator: typeof import('vuetify/labs/components')['VDataIterator']
500
503
  VDataTable: typeof import('vuetify/labs/components')['VDataTable']
501
504
  VDataTableFooter: typeof import('vuetify/labs/components')['VDataTableFooter']
502
505
  VDataTableRows: typeof import('vuetify/labs/components')['VDataTableRows']
@@ -520,6 +523,5 @@ declare module '@vue/runtime-core' {
520
523
  VStepperItem: typeof import('vuetify/labs/components')['VStepperItem']
521
524
  VStepperWindow: typeof import('vuetify/labs/components')['VStepperWindow']
522
525
  VStepperWindowItem: typeof import('vuetify/labs/components')['VStepperWindowItem']
523
- VDataIterator: typeof import('vuetify/labs/components')['VDataIterator']
524
526
  }
525
527
  }
@@ -90,10 +90,18 @@ export const VDataTableFooter = genericComponent()({
90
90
  itemsPerPage,
91
91
  setItemsPerPage
92
92
  } = usePagination();
93
- const itemsPerPageOptions = computed(() => props.itemsPerPageOptions.map(option => ({
94
- ...option,
95
- title: t(option.title)
96
- })));
93
+ const itemsPerPageOptions = computed(() => props.itemsPerPageOptions.map(option => {
94
+ if (typeof option === 'number') {
95
+ return {
96
+ value: option,
97
+ title: option === -1 ? t('$vuetify.dataFooter.itemsPerPageAll') : String(option)
98
+ };
99
+ }
100
+ return {
101
+ ...option,
102
+ title: t(option.title)
103
+ };
104
+ }));
97
105
  return () => _createVNode("div", {
98
106
  "class": "v-data-table-footer"
99
107
  }, [slots.prepend?.(), _createVNode("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"VDataTableFooter.mjs","names":["VBtn","VSelect","usePagination","useLocale","computed","genericComponent","propsFactory","makeVDataTableFooterProps","prevIcon","type","String","default","nextIcon","firstIcon","lastIcon","itemsPerPageText","pageText","firstPageLabel","prevPageLabel","nextPageLabel","lastPageLabel","itemsPerPageOptions","Array","value","title","showCurrentPage","Boolean","VDataTableFooter","name","props","setup","_ref","slots","t","page","pageCount","startIndex","stopIndex","itemsLength","itemsPerPage","setItemsPerPage","map","option","_createVNode","prepend","v","Number","onClick","Math","max","min"],"sources":["../../../src/labs/VDataTable/VDataTableFooter.tsx"],"sourcesContent":["// Styles\nimport './VDataTableFooter.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VSelect } from '@/components/VSelect'\n\n// Composables\nimport { usePagination } from './composables/paginate'\nimport { useLocale } from '@/composables/locale'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const makeVDataTableFooterProps = propsFactory({\n prevIcon: {\n type: String,\n default: '$prev',\n },\n nextIcon: {\n type: String,\n default: '$next',\n },\n firstIcon: {\n type: String,\n default: '$first',\n },\n lastIcon: {\n type: String,\n default: '$last',\n },\n itemsPerPageText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageText',\n },\n pageText: {\n type: String,\n default: '$vuetify.dataFooter.pageText',\n },\n firstPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.firstPage',\n },\n prevPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.prevPage',\n },\n nextPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.nextPage',\n },\n lastPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.lastPage',\n },\n itemsPerPageOptions: {\n type: Array as PropType<readonly { title: string, value: number }[]>,\n default: () => ([\n { value: 10, title: '10' },\n { value: 25, title: '25' },\n { value: 50, title: '50' },\n { value: 100, title: '100' },\n { value: -1, title: '$vuetify.dataFooter.itemsPerPageAll' },\n ]),\n },\n showCurrentPage: Boolean,\n}, 'VDataTableFooter')\n\nexport const VDataTableFooter = genericComponent<{ prepend: never }>()({\n name: 'VDataTableFooter',\n\n props: makeVDataTableFooterProps(),\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const { page, pageCount, startIndex, stopIndex, itemsLength, itemsPerPage, setItemsPerPage } = usePagination()\n\n const itemsPerPageOptions = computed(() => (\n props.itemsPerPageOptions.map(option => ({\n ...option,\n title: t(option.title),\n }))\n ))\n\n return () => (\n <div\n class=\"v-data-table-footer\"\n >\n { slots.prepend?.() }\n <div class=\"v-data-table-footer__items-per-page\">\n <span>{ t(props.itemsPerPageText) }</span>\n <VSelect\n items={ itemsPerPageOptions.value }\n modelValue={ itemsPerPage.value }\n onUpdate:modelValue={ v => setItemsPerPage(Number(v)) }\n density=\"compact\"\n variant=\"outlined\"\n hide-details\n />\n </div>\n <div class=\"v-data-table-footer__info\">\n <div>\n { t(props.pageText, !itemsLength.value ? 0 : startIndex.value + 1, stopIndex.value, itemsLength.value) }\n </div>\n </div>\n <div class=\"v-data-table-footer__pagination\">\n <VBtn\n icon={ props.firstIcon }\n variant=\"plain\"\n onClick={ () => page.value = 1 }\n disabled={ page.value === 1 }\n aria-label={ t(props.firstPageLabel) }\n />\n <VBtn\n icon={ props.prevIcon }\n variant=\"plain\"\n onClick={ () => page.value = Math.max(1, page.value - 1) }\n disabled={ page.value === 1 }\n aria-label={ t(props.prevPageLabel) }\n />\n { props.showCurrentPage && (\n <span key=\"page\" class=\"v-data-table-footer__page\">{ page.value }</span>\n )}\n <VBtn\n icon={ props.nextIcon }\n variant=\"plain\"\n onClick={ () => page.value = Math.min(pageCount.value, page.value + 1) }\n disabled={ page.value === pageCount.value }\n aria-label={ t(props.nextPageLabel) }\n />\n <VBtn\n icon={ props.lastIcon }\n variant=\"plain\"\n onClick={ () => page.value = pageCount.value }\n disabled={ page.value === pageCount.value }\n aria-label={ t(props.lastPageLabel) }\n />\n </div>\n </div>\n )\n },\n})\n"],"mappings":"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"}
1
+ {"version":3,"file":"VDataTableFooter.mjs","names":["VBtn","VSelect","usePagination","useLocale","computed","genericComponent","propsFactory","makeVDataTableFooterProps","prevIcon","type","String","default","nextIcon","firstIcon","lastIcon","itemsPerPageText","pageText","firstPageLabel","prevPageLabel","nextPageLabel","lastPageLabel","itemsPerPageOptions","Array","value","title","showCurrentPage","Boolean","VDataTableFooter","name","props","setup","_ref","slots","t","page","pageCount","startIndex","stopIndex","itemsLength","itemsPerPage","setItemsPerPage","map","option","_createVNode","prepend","v","Number","onClick","Math","max","min"],"sources":["../../../src/labs/VDataTable/VDataTableFooter.tsx"],"sourcesContent":["// Styles\nimport './VDataTableFooter.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VSelect } from '@/components/VSelect'\n\n// Composables\nimport { usePagination } from './composables/paginate'\nimport { useLocale } from '@/composables/locale'\n\n// Utilities\nimport { computed } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const makeVDataTableFooterProps = propsFactory({\n prevIcon: {\n type: String,\n default: '$prev',\n },\n nextIcon: {\n type: String,\n default: '$next',\n },\n firstIcon: {\n type: String,\n default: '$first',\n },\n lastIcon: {\n type: String,\n default: '$last',\n },\n itemsPerPageText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageText',\n },\n pageText: {\n type: String,\n default: '$vuetify.dataFooter.pageText',\n },\n firstPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.firstPage',\n },\n prevPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.prevPage',\n },\n nextPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.nextPage',\n },\n lastPageLabel: {\n type: String,\n default: '$vuetify.dataFooter.lastPage',\n },\n itemsPerPageOptions: {\n type: Array as PropType<readonly (number | { title: string, value: number })[]>,\n default: () => ([\n { value: 10, title: '10' },\n { value: 25, title: '25' },\n { value: 50, title: '50' },\n { value: 100, title: '100' },\n { value: -1, title: '$vuetify.dataFooter.itemsPerPageAll' },\n ]),\n },\n showCurrentPage: Boolean,\n}, 'VDataTableFooter')\n\nexport const VDataTableFooter = genericComponent<{ prepend: never }>()({\n name: 'VDataTableFooter',\n\n props: makeVDataTableFooterProps(),\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const { page, pageCount, startIndex, stopIndex, itemsLength, itemsPerPage, setItemsPerPage } = usePagination()\n\n const itemsPerPageOptions = computed(() => (\n props.itemsPerPageOptions.map(option => {\n if (typeof option === 'number') {\n return {\n value: option,\n title: option === -1\n ? t('$vuetify.dataFooter.itemsPerPageAll')\n : String(option),\n }\n }\n\n return {\n ...option,\n title: t(option.title),\n }\n })\n ))\n\n return () => (\n <div\n class=\"v-data-table-footer\"\n >\n { slots.prepend?.() }\n <div class=\"v-data-table-footer__items-per-page\">\n <span>{ t(props.itemsPerPageText) }</span>\n <VSelect\n items={ itemsPerPageOptions.value }\n modelValue={ itemsPerPage.value }\n onUpdate:modelValue={ v => setItemsPerPage(Number(v)) }\n density=\"compact\"\n variant=\"outlined\"\n hide-details\n />\n </div>\n <div class=\"v-data-table-footer__info\">\n <div>\n { t(props.pageText, !itemsLength.value ? 0 : startIndex.value + 1, stopIndex.value, itemsLength.value) }\n </div>\n </div>\n <div class=\"v-data-table-footer__pagination\">\n <VBtn\n icon={ props.firstIcon }\n variant=\"plain\"\n onClick={ () => page.value = 1 }\n disabled={ page.value === 1 }\n aria-label={ t(props.firstPageLabel) }\n />\n <VBtn\n icon={ props.prevIcon }\n variant=\"plain\"\n onClick={ () => page.value = Math.max(1, page.value - 1) }\n disabled={ page.value === 1 }\n aria-label={ t(props.prevPageLabel) }\n />\n { props.showCurrentPage && (\n <span key=\"page\" class=\"v-data-table-footer__page\">{ page.value }</span>\n )}\n <VBtn\n icon={ props.nextIcon }\n variant=\"plain\"\n onClick={ () => page.value = Math.min(pageCount.value, page.value + 1) }\n disabled={ page.value === pageCount.value }\n aria-label={ t(props.nextPageLabel) }\n />\n <VBtn\n icon={ props.lastIcon }\n variant=\"plain\"\n onClick={ () => page.value = pageCount.value }\n disabled={ page.value === pageCount.value }\n aria-label={ t(props.lastPageLabel) }\n />\n </div>\n </div>\n )\n },\n})\n"],"mappings":"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"}
@@ -1168,10 +1168,10 @@ declare const VDataTable: {
1168
1168
  prevPageLabel?: string | undefined;
1169
1169
  nextPageLabel?: string | undefined;
1170
1170
  lastPageLabel?: string | undefined;
1171
- itemsPerPageOptions?: readonly {
1171
+ itemsPerPageOptions?: readonly (number | {
1172
1172
  title: string;
1173
1173
  value: number;
1174
- }[] | undefined;
1174
+ })[] | undefined;
1175
1175
  showCurrentPage?: boolean | undefined;
1176
1176
  sortAscIcon?: IconValue | undefined;
1177
1177
  sortDescIcon?: IconValue | undefined;
@@ -1589,10 +1589,10 @@ declare const VDataTable: {
1589
1589
  prevPageLabel: string;
1590
1590
  nextPageLabel: string;
1591
1591
  lastPageLabel: string;
1592
- itemsPerPageOptions: readonly {
1592
+ itemsPerPageOptions: readonly (number | {
1593
1593
  title: string;
1594
1594
  value: number;
1595
- }[];
1595
+ })[];
1596
1596
  showCurrentPage: boolean;
1597
1597
  sortAscIcon: IconValue;
1598
1598
  sortDescIcon: IconValue;
@@ -1883,10 +1883,10 @@ declare const VDataTable: {
1883
1883
  prevPageLabel: string;
1884
1884
  nextPageLabel: string;
1885
1885
  lastPageLabel: string;
1886
- itemsPerPageOptions: readonly {
1886
+ itemsPerPageOptions: readonly (number | {
1887
1887
  title: string;
1888
1888
  value: number;
1889
- }[];
1889
+ })[];
1890
1890
  showCurrentPage: boolean;
1891
1891
  sortAscIcon: IconValue;
1892
1892
  sortDescIcon: IconValue;
@@ -2069,10 +2069,10 @@ declare const VDataTable: {
2069
2069
  prevPageLabel: string;
2070
2070
  nextPageLabel: string;
2071
2071
  lastPageLabel: string;
2072
- itemsPerPageOptions: readonly {
2072
+ itemsPerPageOptions: readonly (number | {
2073
2073
  title: string;
2074
2074
  value: number;
2075
- }[];
2075
+ })[];
2076
2076
  showCurrentPage: boolean;
2077
2077
  sortAscIcon: IconValue;
2078
2078
  sortDescIcon: IconValue;
@@ -2359,10 +2359,10 @@ declare const VDataTable: {
2359
2359
  prevPageLabel: string;
2360
2360
  nextPageLabel: string;
2361
2361
  lastPageLabel: string;
2362
- itemsPerPageOptions: readonly {
2362
+ itemsPerPageOptions: readonly (number | {
2363
2363
  title: string;
2364
2364
  value: number;
2365
- }[];
2365
+ })[];
2366
2366
  showCurrentPage: boolean;
2367
2367
  sortAscIcon: IconValue;
2368
2368
  sortDescIcon: IconValue;
@@ -2653,10 +2653,10 @@ declare const VDataTable: {
2653
2653
  prevPageLabel: string;
2654
2654
  nextPageLabel: string;
2655
2655
  lastPageLabel: string;
2656
- itemsPerPageOptions: readonly {
2656
+ itemsPerPageOptions: readonly (number | {
2657
2657
  title: string;
2658
2658
  value: number;
2659
- }[];
2659
+ })[];
2660
2660
  showCurrentPage: boolean;
2661
2661
  sortAscIcon: IconValue;
2662
2662
  sortDescIcon: IconValue;
@@ -2820,10 +2820,10 @@ declare const VDataTable: {
2820
2820
  default: string;
2821
2821
  };
2822
2822
  itemsPerPageOptions: {
2823
- type: vue.PropType<readonly {
2823
+ type: vue.PropType<readonly (number | {
2824
2824
  title: string;
2825
2825
  value: number;
2826
- }[]>;
2826
+ })[]>;
2827
2827
  default: () => {
2828
2828
  value: number;
2829
2829
  title: string;
@@ -2981,10 +2981,10 @@ declare const VDataTable: {
2981
2981
  default: string;
2982
2982
  };
2983
2983
  itemsPerPageOptions: {
2984
- type: vue.PropType<readonly {
2984
+ type: vue.PropType<readonly (number | {
2985
2985
  title: string;
2986
2986
  value: number;
2987
- }[]>;
2987
+ })[]>;
2988
2988
  default: () => {
2989
2989
  value: number;
2990
2990
  title: string;
@@ -3118,10 +3118,10 @@ declare const VDataTableFooter: {
3118
3118
  prevPageLabel?: string | undefined;
3119
3119
  nextPageLabel?: string | undefined;
3120
3120
  lastPageLabel?: string | undefined;
3121
- itemsPerPageOptions?: readonly {
3121
+ itemsPerPageOptions?: readonly (number | {
3122
3122
  title: string;
3123
3123
  value: number;
3124
- }[] | undefined;
3124
+ })[] | undefined;
3125
3125
  showCurrentPage?: boolean | undefined;
3126
3126
  key?: string | number | symbol | undefined;
3127
3127
  style?: unknown;
@@ -3201,10 +3201,10 @@ declare const VDataTableFooter: {
3201
3201
  prevPageLabel: string;
3202
3202
  nextPageLabel: string;
3203
3203
  lastPageLabel: string;
3204
- itemsPerPageOptions: readonly {
3204
+ itemsPerPageOptions: readonly (number | {
3205
3205
  title: string;
3206
3206
  value: number;
3207
- }[];
3207
+ })[];
3208
3208
  showCurrentPage: boolean;
3209
3209
  } & {} & {
3210
3210
  $children?: {} | vue.VNodeChild | {
@@ -3226,10 +3226,10 @@ declare const VDataTableFooter: {
3226
3226
  prevPageLabel: string;
3227
3227
  nextPageLabel: string;
3228
3228
  lastPageLabel: string;
3229
- itemsPerPageOptions: readonly {
3229
+ itemsPerPageOptions: readonly (number | {
3230
3230
  title: string;
3231
3231
  value: number;
3232
- }[];
3232
+ })[];
3233
3233
  showCurrentPage: boolean;
3234
3234
  }, {}, string, vue.SlotsType<Partial<{
3235
3235
  prepend: () => vue.VNode<vue.RendererNode, vue.RendererElement, {
@@ -3266,10 +3266,10 @@ declare const VDataTableFooter: {
3266
3266
  prevPageLabel: string;
3267
3267
  nextPageLabel: string;
3268
3268
  lastPageLabel: string;
3269
- itemsPerPageOptions: readonly {
3269
+ itemsPerPageOptions: readonly (number | {
3270
3270
  title: string;
3271
3271
  value: number;
3272
- }[];
3272
+ })[];
3273
3273
  showCurrentPage: boolean;
3274
3274
  } & {} & {
3275
3275
  $children?: {} | vue.VNodeChild | {
@@ -3295,10 +3295,10 @@ declare const VDataTableFooter: {
3295
3295
  prevPageLabel: string;
3296
3296
  nextPageLabel: string;
3297
3297
  lastPageLabel: string;
3298
- itemsPerPageOptions: readonly {
3298
+ itemsPerPageOptions: readonly (number | {
3299
3299
  title: string;
3300
3300
  value: number;
3301
- }[];
3301
+ })[];
3302
3302
  showCurrentPage: boolean;
3303
3303
  } & {} & {
3304
3304
  $children?: {} | vue.VNodeChild | {
@@ -3320,10 +3320,10 @@ declare const VDataTableFooter: {
3320
3320
  prevPageLabel: string;
3321
3321
  nextPageLabel: string;
3322
3322
  lastPageLabel: string;
3323
- itemsPerPageOptions: readonly {
3323
+ itemsPerPageOptions: readonly (number | {
3324
3324
  title: string;
3325
3325
  value: number;
3326
- }[];
3326
+ })[];
3327
3327
  showCurrentPage: boolean;
3328
3328
  }, {}, string, vue.SlotsType<Partial<{
3329
3329
  prepend: () => vue.VNode<vue.RendererNode, vue.RendererElement, {
@@ -3371,10 +3371,10 @@ declare const VDataTableFooter: {
3371
3371
  default: string;
3372
3372
  };
3373
3373
  itemsPerPageOptions: {
3374
- type: PropType<readonly {
3374
+ type: PropType<readonly (number | {
3375
3375
  title: string;
3376
3376
  value: number;
3377
- }[]>;
3377
+ })[]>;
3378
3378
  default: () => {
3379
3379
  value: number;
3380
3380
  title: string;
@@ -3423,10 +3423,10 @@ declare const VDataTableFooter: {
3423
3423
  default: string;
3424
3424
  };
3425
3425
  itemsPerPageOptions: {
3426
- type: PropType<readonly {
3426
+ type: PropType<readonly (number | {
3427
3427
  title: string;
3428
3428
  value: number;
3429
- }[]>;
3429
+ })[]>;
3430
3430
  default: () => {
3431
3431
  value: number;
3432
3432
  title: string;
@@ -5146,10 +5146,10 @@ declare const VDataTableServer: {
5146
5146
  prevPageLabel?: string | undefined;
5147
5147
  nextPageLabel?: string | undefined;
5148
5148
  lastPageLabel?: string | undefined;
5149
- itemsPerPageOptions?: readonly {
5149
+ itemsPerPageOptions?: readonly (number | {
5150
5150
  title: string;
5151
5151
  value: number;
5152
- }[] | undefined;
5152
+ })[] | undefined;
5153
5153
  showCurrentPage?: boolean | undefined;
5154
5154
  sortAscIcon?: IconValue | undefined;
5155
5155
  sortDescIcon?: IconValue | undefined;
@@ -5564,10 +5564,10 @@ declare const VDataTableServer: {
5564
5564
  prevPageLabel: string;
5565
5565
  nextPageLabel: string;
5566
5566
  lastPageLabel: string;
5567
- itemsPerPageOptions: readonly {
5567
+ itemsPerPageOptions: readonly (number | {
5568
5568
  title: string;
5569
5569
  value: number;
5570
- }[];
5570
+ })[];
5571
5571
  showCurrentPage: boolean;
5572
5572
  sortAscIcon: IconValue;
5573
5573
  sortDescIcon: IconValue;
@@ -5853,10 +5853,10 @@ declare const VDataTableServer: {
5853
5853
  prevPageLabel: string;
5854
5854
  nextPageLabel: string;
5855
5855
  lastPageLabel: string;
5856
- itemsPerPageOptions: readonly {
5856
+ itemsPerPageOptions: readonly (number | {
5857
5857
  title: string;
5858
5858
  value: number;
5859
- }[];
5859
+ })[];
5860
5860
  showCurrentPage: boolean;
5861
5861
  sortAscIcon: IconValue;
5862
5862
  sortDescIcon: IconValue;
@@ -6038,10 +6038,10 @@ declare const VDataTableServer: {
6038
6038
  prevPageLabel: string;
6039
6039
  nextPageLabel: string;
6040
6040
  lastPageLabel: string;
6041
- itemsPerPageOptions: readonly {
6041
+ itemsPerPageOptions: readonly (number | {
6042
6042
  title: string;
6043
6043
  value: number;
6044
- }[];
6044
+ })[];
6045
6045
  showCurrentPage: boolean;
6046
6046
  sortAscIcon: IconValue;
6047
6047
  sortDescIcon: IconValue;
@@ -6324,10 +6324,10 @@ declare const VDataTableServer: {
6324
6324
  prevPageLabel: string;
6325
6325
  nextPageLabel: string;
6326
6326
  lastPageLabel: string;
6327
- itemsPerPageOptions: readonly {
6327
+ itemsPerPageOptions: readonly (number | {
6328
6328
  title: string;
6329
6329
  value: number;
6330
- }[];
6330
+ })[];
6331
6331
  showCurrentPage: boolean;
6332
6332
  sortAscIcon: IconValue;
6333
6333
  sortDescIcon: IconValue;
@@ -6613,10 +6613,10 @@ declare const VDataTableServer: {
6613
6613
  prevPageLabel: string;
6614
6614
  nextPageLabel: string;
6615
6615
  lastPageLabel: string;
6616
- itemsPerPageOptions: readonly {
6616
+ itemsPerPageOptions: readonly (number | {
6617
6617
  title: string;
6618
6618
  value: number;
6619
- }[];
6619
+ })[];
6620
6620
  showCurrentPage: boolean;
6621
6621
  sortAscIcon: IconValue;
6622
6622
  sortDescIcon: IconValue;
@@ -6780,10 +6780,10 @@ declare const VDataTableServer: {
6780
6780
  default: string;
6781
6781
  };
6782
6782
  itemsPerPageOptions: {
6783
- type: vue.PropType<readonly {
6783
+ type: vue.PropType<readonly (number | {
6784
6784
  title: string;
6785
6785
  value: number;
6786
- }[]>;
6786
+ })[]>;
6787
6787
  default: () => {
6788
6788
  value: number;
6789
6789
  title: string;
@@ -6937,10 +6937,10 @@ declare const VDataTableServer: {
6937
6937
  default: string;
6938
6938
  };
6939
6939
  itemsPerPageOptions: {
6940
- type: vue.PropType<readonly {
6940
+ type: vue.PropType<readonly (number | {
6941
6941
  title: string;
6942
6942
  value: number;
6943
- }[]>;
6943
+ })[]>;
6944
6944
  default: () => {
6945
6945
  value: number;
6946
6946
  title: string;
@@ -12,6 +12,7 @@ import { getWeek, toIso } from "../date/date.mjs";
12
12
  import { dateEmits, makeDateProps } from "../VDateInput/composables.mjs";
13
13
  import { useDate } from "../date/index.mjs";
14
14
  export const makeVDatePickerMonthProps = propsFactory({
15
+ allowedDates: [Array, Function],
15
16
  color: String,
16
17
  showAdjacentMonths: Boolean,
17
18
  hideWeekdays: Boolean,
@@ -98,7 +99,6 @@ export const VDatePickerMonth = genericComponent()({
98
99
  const startDate = validDates[0];
99
100
  const endDate = validDates[1];
100
101
  return days.map((date, index) => {
101
- const isDisabled = !!(props.min && adapter.isAfter(props.min, date) || props.max && adapter.isAfter(date, props.max));
102
102
  const isStart = startDate && adapter.isSameDay(date, startDate);
103
103
  const isEnd = endDate && adapter.isSameDay(date, endDate);
104
104
  const isAdjacent = !adapter.isSameMonth(date, month.value);
@@ -109,7 +109,7 @@ export const VDatePickerMonth = genericComponent()({
109
109
  formatted: adapter.format(date, 'keyboardDate'),
110
110
  year: adapter.getYear(date),
111
111
  month: adapter.getMonth(date),
112
- isDisabled,
112
+ isDisabled: isDisabled(date),
113
113
  isWeekStart: index % 7 === 0,
114
114
  isWeekEnd: index % 7 === 6,
115
115
  isSelected: isStart || isEnd,
@@ -136,6 +136,18 @@ export const VDatePickerMonth = genericComponent()({
136
136
  backgroundColorClasses,
137
137
  backgroundColorStyles
138
138
  } = useBackgroundColor(props, 'color');
139
+ function isDisabled(value) {
140
+ const date = adapter.date(value);
141
+ if (props.min && adapter.isAfter(props.min, date)) return true;
142
+ if (props.max && adapter.isAfter(date, props.max)) return true;
143
+ if (Array.isArray(props.allowedDates)) {
144
+ return !props.allowedDates.some(d => adapter.isSameDay(adapter.date(d), date));
145
+ }
146
+ if (typeof props.allowedDates === 'function') {
147
+ return !props.allowedDates(date);
148
+ }
149
+ return false;
150
+ }
139
151
  function selectDate(date) {
140
152
  let newModel = props.modelValue.slice();
141
153
  if (props.multiple) {