@vuetify/nightly 3.7.12-master.2025-02-14 → 3.7.12-master.2025-02-17

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 (41) hide show
  1. package/CHANGELOG.md +12 -3
  2. package/dist/json/attributes.json +2936 -2924
  3. package/dist/json/importMap-labs.json +16 -16
  4. package/dist/json/importMap.json +174 -174
  5. package/dist/json/tags.json +3 -0
  6. package/dist/json/web-types.json +5456 -5428
  7. package/dist/vuetify-labs.css +3803 -3795
  8. package/dist/vuetify-labs.d.ts +80 -29
  9. package/dist/vuetify-labs.esm.js +109 -46
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +109 -46
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.css +3706 -3706
  14. package/dist/vuetify.d.ts +86 -74
  15. package/dist/vuetify.esm.js +20 -13
  16. package/dist/vuetify.esm.js.map +1 -1
  17. package/dist/vuetify.js +20 -13
  18. package/dist/vuetify.js.map +1 -1
  19. package/dist/vuetify.min.css +2 -2
  20. package/dist/vuetify.min.js +6 -6
  21. package/dist/vuetify.min.js.map +1 -1
  22. package/lib/components/VDataTable/composables/sort.mjs +12 -8
  23. package/lib/components/VDataTable/composables/sort.mjs.map +1 -1
  24. package/lib/components/VDatePicker/VDatePickerControls.mjs +1 -1
  25. package/lib/components/VDatePicker/VDatePickerControls.mjs.map +1 -1
  26. package/lib/components/VDatePicker/index.d.mts +27 -15
  27. package/lib/components/index.d.mts +27 -15
  28. package/lib/composables/calendar.mjs +4 -1
  29. package/lib/composables/calendar.mjs.map +1 -1
  30. package/lib/entry-bundler.mjs +1 -1
  31. package/lib/framework.mjs +1 -1
  32. package/lib/index.d.mts +59 -59
  33. package/lib/labs/VCalendar/index.d.mts +8 -2
  34. package/lib/labs/VDateInput/index.d.mts +8 -2
  35. package/lib/labs/VNumberInput/VNumberInput.css +10 -2
  36. package/lib/labs/VNumberInput/VNumberInput.mjs +93 -35
  37. package/lib/labs/VNumberInput/VNumberInput.mjs.map +1 -1
  38. package/lib/labs/VNumberInput/VNumberInput.sass +12 -2
  39. package/lib/labs/VNumberInput/index.d.mts +37 -10
  40. package/lib/labs/components.d.mts +53 -14
  41. package/package.json +1 -1
@@ -37,15 +37,19 @@ export function provideSort(options) {
37
37
  })) ?? [];
38
38
  const item = newSortBy.find(x => x.key === column.key);
39
39
  if (!item) {
40
- if (multiSort.value) newSortBy = [...newSortBy, {
41
- key: column.key,
42
- order: 'asc'
43
- }];else newSortBy = [{
44
- key: column.key,
45
- order: 'asc'
46
- }];
40
+ if (multiSort.value) {
41
+ newSortBy.push({
42
+ key: column.key,
43
+ order: 'asc'
44
+ });
45
+ } else {
46
+ newSortBy = [{
47
+ key: column.key,
48
+ order: 'asc'
49
+ }];
50
+ }
47
51
  } else if (item.order === 'desc') {
48
- if (mustSort.value) {
52
+ if (mustSort.value && newSortBy.length === 1) {
49
53
  item.order = 'asc';
50
54
  } else {
51
55
  newSortBy = newSortBy.filter(x => x.key !== column.key);
@@ -1 +1 @@
1
- {"version":3,"file":"sort.mjs","names":["useLocale","useProxiedModel","computed","inject","provide","toRef","getObjectValueByPath","isEmpty","propsFactory","makeDataTableSortProps","sortBy","type","Array","default","customKeySort","Object","multiSort","Boolean","mustSort","VDataTableSortSymbol","Symbol","for","createSort","props","provideSort","options","page","toggleSort","column","key","newSortBy","value","map","x","item","find","order","filter","isSorted","data","useSort","Error","useSortedItems","items","locale","sortedItems","length","sortItems","current","transform","sortFunctions","sortRawFunctions","sortByItems","stringCollator","Intl","Collator","sensitivity","usage","transformedItems","sort","a","b","i","hasCustomResult","sortKey","sortOrder","sortA","sortB","sortARaw","raw","sortBRaw","customResult","Date","getTime","s","toString","toLocaleLowerCase","isNaN","Number","compare","_ref"],"sources":["../../../../src/components/VDataTable/composables/sort.ts"],"sourcesContent":["// Composables\nimport { useLocale } from '@/composables'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide, toRef } from 'vue'\nimport { getObjectValueByPath, isEmpty, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { DataTableCompareFunction, InternalDataTableHeader } from '../types'\nimport type { InternalItem } from '@/composables/filter'\n\nexport const makeDataTableSortProps = propsFactory({\n sortBy: {\n type: Array as PropType<readonly SortItem[]>,\n default: () => ([]),\n },\n customKeySort: Object as PropType<Record<string, DataTableCompareFunction>>,\n multiSort: Boolean,\n mustSort: Boolean,\n}, 'DataTable-sort')\n\nconst VDataTableSortSymbol: InjectionKey<{\n sortBy: Ref<readonly SortItem[]>\n toggleSort: (column: InternalDataTableHeader) => void\n isSorted: (column: InternalDataTableHeader) => boolean\n}> = Symbol.for('vuetify:data-table-sort')\n\nexport type SortItem = { key: string, order?: boolean | 'asc' | 'desc' }\n\ntype SortProps = {\n sortBy: readonly SortItem[]\n 'onUpdate:sortBy': ((value: any) => void) | undefined\n mustSort: boolean\n multiSort: boolean\n}\n\nexport function createSort (props: SortProps) {\n const sortBy = useProxiedModel(props, 'sortBy')\n const mustSort = toRef(props, 'mustSort')\n const multiSort = toRef(props, 'multiSort')\n\n return { sortBy, mustSort, multiSort }\n}\n\nexport function provideSort (options: {\n sortBy: Ref<readonly SortItem[]>\n mustSort: Ref<boolean>\n multiSort: Ref<boolean>\n page?: Ref<number>\n}) {\n const { sortBy, mustSort, multiSort, page } = options\n\n const toggleSort = (column: InternalDataTableHeader) => {\n if (column.key == null) return\n\n let newSortBy = sortBy.value.map(x => ({ ...x })) ?? []\n const item = newSortBy.find(x => x.key === column.key)\n\n if (!item) {\n if (multiSort.value) newSortBy = [...newSortBy, { key: column.key, order: 'asc' }]\n else newSortBy = [{ key: column.key, order: 'asc' }]\n } else if (item.order === 'desc') {\n if (mustSort.value) {\n item.order = 'asc'\n } else {\n newSortBy = newSortBy.filter(x => x.key !== column.key)\n }\n } else {\n item.order = 'desc'\n }\n\n sortBy.value = newSortBy\n if (page) page.value = 1\n }\n\n function isSorted (column: InternalDataTableHeader) {\n return !!sortBy.value.find(item => item.key === column.key)\n }\n\n const data = { sortBy, toggleSort, isSorted }\n\n provide(VDataTableSortSymbol, data)\n\n return data\n}\n\nexport function useSort () {\n const data = inject(VDataTableSortSymbol)\n\n if (!data) throw new Error('Missing sort!')\n\n return data\n}\n\n// TODO: abstract into project composable\nexport function useSortedItems<T extends InternalItem> (\n props: {\n customKeySort: Record<string, DataTableCompareFunction> | undefined\n },\n items: Ref<T[]>,\n sortBy: Ref<readonly SortItem[]>,\n options?: {\n transform?: (item: T) => {}\n sortFunctions?: Ref<Record<string, DataTableCompareFunction> | undefined>\n sortRawFunctions?: Ref<Record<string, DataTableCompareFunction> | undefined>\n },\n) {\n const locale = useLocale()\n const sortedItems = computed(() => {\n if (!sortBy.value.length) return items.value\n\n return sortItems(items.value, sortBy.value, locale.current.value, {\n transform: options?.transform,\n sortFunctions: {\n ...props.customKeySort,\n ...options?.sortFunctions?.value,\n },\n sortRawFunctions: options?.sortRawFunctions?.value,\n })\n })\n\n return { sortedItems }\n}\n\nexport function sortItems<T extends InternalItem> (\n items: T[],\n sortByItems: readonly SortItem[],\n locale: string,\n options?: {\n transform?: (item: T) => Record<string, any>\n sortFunctions?: Record<string, DataTableCompareFunction>\n sortRawFunctions?: Record<string, DataTableCompareFunction>\n },\n): T[] {\n const stringCollator = new Intl.Collator(locale, { sensitivity: 'accent', usage: 'sort' })\n\n const transformedItems = items.map(item => (\n [item, options?.transform ? options.transform(item) : item as never] as const)\n )\n\n return transformedItems.sort((a, b) => {\n for (let i = 0; i < sortByItems.length; i++) {\n let hasCustomResult = false\n const sortKey = sortByItems[i].key\n const sortOrder = sortByItems[i].order ?? 'asc'\n\n if (sortOrder === false) continue\n\n let sortA = getObjectValueByPath(a[1], sortKey)\n let sortB = getObjectValueByPath(b[1], sortKey)\n let sortARaw = a[0].raw\n let sortBRaw = b[0].raw\n\n if (sortOrder === 'desc') {\n [sortA, sortB] = [sortB, sortA]\n ;[sortARaw, sortBRaw] = [sortBRaw, sortARaw]\n }\n\n if (options?.sortRawFunctions?.[sortKey]) {\n const customResult = options.sortRawFunctions[sortKey](sortARaw, sortBRaw)\n\n if (customResult == null) continue\n hasCustomResult = true\n if (customResult) return customResult\n }\n\n if (options?.sortFunctions?.[sortKey]) {\n const customResult = options.sortFunctions[sortKey](sortA, sortB)\n\n if (customResult == null) continue\n hasCustomResult = true\n if (customResult) return customResult\n }\n\n if (hasCustomResult) continue\n\n // Dates should be compared numerically\n if (sortA instanceof Date && sortB instanceof Date) {\n return sortA.getTime() - sortB.getTime()\n }\n\n [sortA, sortB] = [sortA, sortB].map(s => s != null ? s.toString().toLocaleLowerCase() : s)\n\n if (sortA !== sortB) {\n if (isEmpty(sortA) && isEmpty(sortB)) return 0\n if (isEmpty(sortA)) return -1\n if (isEmpty(sortB)) return 1\n if (!isNaN(sortA) && !isNaN(sortB)) return Number(sortA) - Number(sortB)\n return stringCollator.compare(sortA, sortB)\n }\n }\n\n return 0\n }).map(([item]) => item)\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"sort.mjs","names":["useLocale","useProxiedModel","computed","inject","provide","toRef","getObjectValueByPath","isEmpty","propsFactory","makeDataTableSortProps","sortBy","type","Array","default","customKeySort","Object","multiSort","Boolean","mustSort","VDataTableSortSymbol","Symbol","for","createSort","props","provideSort","options","page","toggleSort","column","key","newSortBy","value","map","x","item","find","push","order","length","filter","isSorted","data","useSort","Error","useSortedItems","items","locale","sortedItems","sortItems","current","transform","sortFunctions","sortRawFunctions","sortByItems","stringCollator","Intl","Collator","sensitivity","usage","transformedItems","sort","a","b","i","hasCustomResult","sortKey","sortOrder","sortA","sortB","sortARaw","raw","sortBRaw","customResult","Date","getTime","s","toString","toLocaleLowerCase","isNaN","Number","compare","_ref"],"sources":["../../../../src/components/VDataTable/composables/sort.ts"],"sourcesContent":["// Composables\nimport { useLocale } from '@/composables'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, inject, provide, toRef } from 'vue'\nimport { getObjectValueByPath, isEmpty, propsFactory } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { DataTableCompareFunction, InternalDataTableHeader } from '../types'\nimport type { InternalItem } from '@/composables/filter'\n\nexport const makeDataTableSortProps = propsFactory({\n sortBy: {\n type: Array as PropType<readonly SortItem[]>,\n default: () => ([]),\n },\n customKeySort: Object as PropType<Record<string, DataTableCompareFunction>>,\n multiSort: Boolean,\n mustSort: Boolean,\n}, 'DataTable-sort')\n\nconst VDataTableSortSymbol: InjectionKey<{\n sortBy: Ref<readonly SortItem[]>\n toggleSort: (column: InternalDataTableHeader) => void\n isSorted: (column: InternalDataTableHeader) => boolean\n}> = Symbol.for('vuetify:data-table-sort')\n\nexport type SortItem = { key: string, order?: boolean | 'asc' | 'desc' }\n\ntype SortProps = {\n sortBy: readonly SortItem[]\n 'onUpdate:sortBy': ((value: any) => void) | undefined\n mustSort: boolean\n multiSort: boolean\n}\n\nexport function createSort (props: SortProps) {\n const sortBy = useProxiedModel(props, 'sortBy')\n const mustSort = toRef(props, 'mustSort')\n const multiSort = toRef(props, 'multiSort')\n\n return { sortBy, mustSort, multiSort }\n}\n\nexport function provideSort (options: {\n sortBy: Ref<readonly SortItem[]>\n mustSort: Ref<boolean>\n multiSort: Ref<boolean>\n page?: Ref<number>\n}) {\n const { sortBy, mustSort, multiSort, page } = options\n\n const toggleSort = (column: InternalDataTableHeader) => {\n if (column.key == null) return\n\n let newSortBy = sortBy.value.map(x => ({ ...x })) ?? []\n const item = newSortBy.find(x => x.key === column.key)\n\n if (!item) {\n if (multiSort.value) {\n newSortBy.push({ key: column.key, order: 'asc' })\n } else {\n newSortBy = [{ key: column.key, order: 'asc' }]\n }\n } else if (item.order === 'desc') {\n if (mustSort.value && newSortBy.length === 1) {\n item.order = 'asc'\n } else {\n newSortBy = newSortBy.filter(x => x.key !== column.key)\n }\n } else {\n item.order = 'desc'\n }\n\n sortBy.value = newSortBy\n if (page) page.value = 1\n }\n\n function isSorted (column: InternalDataTableHeader) {\n return !!sortBy.value.find(item => item.key === column.key)\n }\n\n const data = { sortBy, toggleSort, isSorted }\n\n provide(VDataTableSortSymbol, data)\n\n return data\n}\n\nexport function useSort () {\n const data = inject(VDataTableSortSymbol)\n\n if (!data) throw new Error('Missing sort!')\n\n return data\n}\n\n// TODO: abstract into project composable\nexport function useSortedItems<T extends InternalItem> (\n props: {\n customKeySort: Record<string, DataTableCompareFunction> | undefined\n },\n items: Ref<T[]>,\n sortBy: Ref<readonly SortItem[]>,\n options?: {\n transform?: (item: T) => {}\n sortFunctions?: Ref<Record<string, DataTableCompareFunction> | undefined>\n sortRawFunctions?: Ref<Record<string, DataTableCompareFunction> | undefined>\n },\n) {\n const locale = useLocale()\n const sortedItems = computed(() => {\n if (!sortBy.value.length) return items.value\n\n return sortItems(items.value, sortBy.value, locale.current.value, {\n transform: options?.transform,\n sortFunctions: {\n ...props.customKeySort,\n ...options?.sortFunctions?.value,\n },\n sortRawFunctions: options?.sortRawFunctions?.value,\n })\n })\n\n return { sortedItems }\n}\n\nexport function sortItems<T extends InternalItem> (\n items: T[],\n sortByItems: readonly SortItem[],\n locale: string,\n options?: {\n transform?: (item: T) => Record<string, any>\n sortFunctions?: Record<string, DataTableCompareFunction>\n sortRawFunctions?: Record<string, DataTableCompareFunction>\n },\n): T[] {\n const stringCollator = new Intl.Collator(locale, { sensitivity: 'accent', usage: 'sort' })\n\n const transformedItems = items.map(item => (\n [item, options?.transform ? options.transform(item) : item as never] as const)\n )\n\n return transformedItems.sort((a, b) => {\n for (let i = 0; i < sortByItems.length; i++) {\n let hasCustomResult = false\n const sortKey = sortByItems[i].key\n const sortOrder = sortByItems[i].order ?? 'asc'\n\n if (sortOrder === false) continue\n\n let sortA = getObjectValueByPath(a[1], sortKey)\n let sortB = getObjectValueByPath(b[1], sortKey)\n let sortARaw = a[0].raw\n let sortBRaw = b[0].raw\n\n if (sortOrder === 'desc') {\n [sortA, sortB] = [sortB, sortA]\n ;[sortARaw, sortBRaw] = [sortBRaw, sortARaw]\n }\n\n if (options?.sortRawFunctions?.[sortKey]) {\n const customResult = options.sortRawFunctions[sortKey](sortARaw, sortBRaw)\n\n if (customResult == null) continue\n hasCustomResult = true\n if (customResult) return customResult\n }\n\n if (options?.sortFunctions?.[sortKey]) {\n const customResult = options.sortFunctions[sortKey](sortA, sortB)\n\n if (customResult == null) continue\n hasCustomResult = true\n if (customResult) return customResult\n }\n\n if (hasCustomResult) continue\n\n // Dates should be compared numerically\n if (sortA instanceof Date && sortB instanceof Date) {\n return sortA.getTime() - sortB.getTime()\n }\n\n [sortA, sortB] = [sortA, sortB].map(s => s != null ? s.toString().toLocaleLowerCase() : s)\n\n if (sortA !== sortB) {\n if (isEmpty(sortA) && isEmpty(sortB)) return 0\n if (isEmpty(sortA)) return -1\n if (isEmpty(sortB)) return 1\n if (!isNaN(sortA) && !isNaN(sortB)) return Number(sortA) - Number(sortB)\n return stringCollator.compare(sortA, sortB)\n }\n }\n\n return 0\n }).map(([item]) => item)\n}\n"],"mappings":"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","ignoreList":[]}
@@ -15,7 +15,7 @@ export const makeVDatePickerControlsProps = propsFactory({
15
15
  },
16
16
  disabled: {
17
17
  type: [Boolean, String, Array],
18
- default: false
18
+ default: null
19
19
  },
20
20
  nextIcon: {
21
21
  type: IconValue,
@@ -1 +1 @@
1
- {"version":3,"file":"VDatePickerControls.mjs","names":["VBtn","VSpacer","IconValue","computed","genericComponent","propsFactory","useRender","makeVDatePickerControlsProps","active","type","String","Array","default","undefined","disabled","Boolean","nextIcon","prevIcon","modeIcon","text","viewMode","VDatePickerControls","name","props","emits","click:year","click:month","click:prev","click:next","click:text","setup","_ref","emit","disableMonth","isArray","includes","disableYear","disablePrev","disableNext","onClickPrev","onClickNext","onClickYear","onClickMonth","_createVNode","value"],"sources":["../../../src/components/VDatePicker/VDatePickerControls.tsx"],"sourcesContent":["// Styles\nimport './VDatePickerControls.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VSpacer } from '@/components/VGrid'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\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 active: {\n type: [String, Array] as PropType<string | string[]>,\n default: undefined,\n },\n disabled: {\n type: [Boolean, String, Array] as PropType<boolean | string | string[]>,\n default: false,\n },\n nextIcon: {\n type: IconValue,\n default: '$next',\n },\n prevIcon: {\n type: IconValue,\n default: '$prev',\n },\n modeIcon: {\n type: IconValue,\n default: '$subgroup',\n },\n text: String,\n viewMode: {\n type: String as PropType<'month' | 'months' | 'year'>,\n default: 'month',\n },\n}, 'VDatePickerControls')\n\nexport const VDatePickerControls = genericComponent()({\n name: 'VDatePickerControls',\n\n props: makeVDatePickerControlsProps(),\n\n emits: {\n 'click:year': () => true,\n 'click:month': () => true,\n 'click:prev': () => true,\n 'click:next': () => true,\n 'click:text': () => true,\n },\n\n setup (props, { emit }) {\n const disableMonth = computed(() => {\n return Array.isArray(props.disabled)\n ? props.disabled.includes('text')\n : !!props.disabled\n })\n const disableYear = 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 onClickYear () {\n emit('click:year')\n }\n\n function onClickMonth () {\n emit('click:month')\n }\n\n useRender(() => {\n // TODO: add slot support and scope defaults\n return (\n <div\n class={[\n 'v-date-picker-controls',\n ]}\n >\n <VBtn\n class=\"v-date-picker-controls__month-btn\"\n disabled={ disableMonth.value }\n text={ props.text }\n variant=\"text\"\n rounded\n onClick={ onClickMonth }\n ></VBtn>\n\n <VBtn\n key=\"mode-btn\"\n class=\"v-date-picker-controls__mode-btn\"\n disabled={ disableYear.value }\n density=\"comfortable\"\n icon={ props.modeIcon }\n variant=\"text\"\n onClick={ onClickYear }\n />\n\n <VSpacer key=\"mode-spacer\" />\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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","ignoreList":[]}
1
+ {"version":3,"file":"VDatePickerControls.mjs","names":["VBtn","VSpacer","IconValue","computed","genericComponent","propsFactory","useRender","makeVDatePickerControlsProps","active","type","String","Array","default","undefined","disabled","Boolean","nextIcon","prevIcon","modeIcon","text","viewMode","VDatePickerControls","name","props","emits","click:year","click:month","click:prev","click:next","click:text","setup","_ref","emit","disableMonth","isArray","includes","disableYear","disablePrev","disableNext","onClickPrev","onClickNext","onClickYear","onClickMonth","_createVNode","value"],"sources":["../../../src/components/VDatePicker/VDatePickerControls.tsx"],"sourcesContent":["// Styles\nimport './VDatePickerControls.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VSpacer } from '@/components/VGrid'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\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 active: {\n type: [String, Array] as PropType<string | string[]>,\n default: undefined,\n },\n disabled: {\n type: [Boolean, String, Array] as PropType<boolean | string | string[] | null>,\n default: null,\n },\n nextIcon: {\n type: IconValue,\n default: '$next',\n },\n prevIcon: {\n type: IconValue,\n default: '$prev',\n },\n modeIcon: {\n type: IconValue,\n default: '$subgroup',\n },\n text: String,\n viewMode: {\n type: String as PropType<'month' | 'months' | 'year'>,\n default: 'month',\n },\n}, 'VDatePickerControls')\n\nexport const VDatePickerControls = genericComponent()({\n name: 'VDatePickerControls',\n\n props: makeVDatePickerControlsProps(),\n\n emits: {\n 'click:year': () => true,\n 'click:month': () => true,\n 'click:prev': () => true,\n 'click:next': () => true,\n 'click:text': () => true,\n },\n\n setup (props, { emit }) {\n const disableMonth = computed(() => {\n return Array.isArray(props.disabled)\n ? props.disabled.includes('text')\n : !!props.disabled\n })\n const disableYear = 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 onClickYear () {\n emit('click:year')\n }\n\n function onClickMonth () {\n emit('click:month')\n }\n\n useRender(() => {\n // TODO: add slot support and scope defaults\n return (\n <div\n class={[\n 'v-date-picker-controls',\n ]}\n >\n <VBtn\n class=\"v-date-picker-controls__month-btn\"\n disabled={ disableMonth.value }\n text={ props.text }\n variant=\"text\"\n rounded\n onClick={ onClickMonth }\n ></VBtn>\n\n <VBtn\n key=\"mode-btn\"\n class=\"v-date-picker-controls__mode-btn\"\n disabled={ disableYear.value }\n density=\"comfortable\"\n icon={ props.modeIcon }\n variant=\"text\"\n onClick={ onClickYear }\n />\n\n <VSpacer key=\"mode-spacer\" />\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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","ignoreList":[]}
@@ -401,7 +401,10 @@ declare const VDatePicker: {
401
401
  max: vue.PropType<unknown>;
402
402
  min: vue.PropType<unknown>;
403
403
  year: NumberConstructor;
404
- disabled: BooleanConstructor;
404
+ disabled: {
405
+ type: BooleanConstructor;
406
+ default: null;
407
+ };
405
408
  month: (StringConstructor | NumberConstructor)[];
406
409
  showAdjacentMonths: BooleanConstructor;
407
410
  weekdays: {
@@ -512,7 +515,10 @@ declare const VDatePicker: {
512
515
  max: vue.PropType<unknown>;
513
516
  min: vue.PropType<unknown>;
514
517
  year: NumberConstructor;
515
- disabled: BooleanConstructor;
518
+ disabled: {
519
+ type: BooleanConstructor;
520
+ default: null;
521
+ };
516
522
  month: (StringConstructor | NumberConstructor)[];
517
523
  showAdjacentMonths: BooleanConstructor;
518
524
  weekdays: {
@@ -584,7 +590,7 @@ type VDatePicker = InstanceType<typeof VDatePicker>;
584
590
 
585
591
  declare const VDatePickerControls: {
586
592
  new (...args: any[]): vue.CreateComponentPublicInstance<{
587
- disabled: string | boolean | string[];
593
+ disabled: string | boolean | string[] | null;
588
594
  nextIcon: IconValue;
589
595
  prevIcon: IconValue;
590
596
  modeIcon: IconValue;
@@ -614,7 +620,7 @@ declare const VDatePickerControls: {
614
620
  'click:next': () => true;
615
621
  'click:text': () => true;
616
622
  }, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
617
- disabled: string | boolean | string[];
623
+ disabled: string | boolean | string[] | null;
618
624
  nextIcon: IconValue;
619
625
  prevIcon: IconValue;
620
626
  modeIcon: IconValue;
@@ -639,7 +645,7 @@ declare const VDatePickerControls: {
639
645
  "onClick:text"?: (() => any) | undefined;
640
646
  }, {
641
647
  active: string | string[];
642
- disabled: string | boolean | string[];
648
+ disabled: string | boolean | string[] | null;
643
649
  nextIcon: IconValue;
644
650
  prevIcon: IconValue;
645
651
  modeIcon: IconValue;
@@ -654,7 +660,7 @@ declare const VDatePickerControls: {
654
660
  M: {};
655
661
  Defaults: {};
656
662
  }, {
657
- disabled: string | boolean | string[];
663
+ disabled: string | boolean | string[] | null;
658
664
  nextIcon: IconValue;
659
665
  prevIcon: IconValue;
660
666
  modeIcon: IconValue;
@@ -679,7 +685,7 @@ declare const VDatePickerControls: {
679
685
  "onClick:text"?: (() => any) | undefined;
680
686
  }, {}, {}, {}, {}, {
681
687
  active: string | string[];
682
- disabled: string | boolean | string[];
688
+ disabled: string | boolean | string[] | null;
683
689
  nextIcon: IconValue;
684
690
  prevIcon: IconValue;
685
691
  modeIcon: IconValue;
@@ -689,7 +695,7 @@ declare const VDatePickerControls: {
689
695
  __isTeleport?: never;
690
696
  __isSuspense?: never;
691
697
  } & vue.ComponentOptionsBase<{
692
- disabled: string | boolean | string[];
698
+ disabled: string | boolean | string[] | null;
693
699
  nextIcon: IconValue;
694
700
  prevIcon: IconValue;
695
701
  modeIcon: IconValue;
@@ -720,7 +726,7 @@ declare const VDatePickerControls: {
720
726
  'click:text': () => true;
721
727
  }, string, {
722
728
  active: string | string[];
723
- disabled: string | boolean | string[];
729
+ disabled: string | boolean | string[] | null;
724
730
  nextIcon: IconValue;
725
731
  prevIcon: IconValue;
726
732
  modeIcon: IconValue;
@@ -733,8 +739,8 @@ declare const VDatePickerControls: {
733
739
  default: undefined;
734
740
  };
735
741
  disabled: {
736
- type: PropType<boolean | string | string[]>;
737
- default: boolean;
742
+ type: PropType<boolean | string | string[] | null>;
743
+ default: null;
738
744
  };
739
745
  nextIcon: {
740
746
  type: PropType<IconValue>;
@@ -759,8 +765,8 @@ declare const VDatePickerControls: {
759
765
  default: undefined;
760
766
  };
761
767
  disabled: {
762
- type: PropType<boolean | string | string[]>;
763
- default: boolean;
768
+ type: PropType<boolean | string | string[] | null>;
769
+ default: null;
764
770
  };
765
771
  nextIcon: {
766
772
  type: PropType<IconValue>;
@@ -1185,7 +1191,10 @@ declare const VDatePickerMonth: {
1185
1191
  }>>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & FilterPropsOptions<{
1186
1192
  max: PropType<unknown>;
1187
1193
  min: PropType<unknown>;
1188
- disabled: BooleanConstructor;
1194
+ disabled: {
1195
+ type: BooleanConstructor;
1196
+ default: null;
1197
+ };
1189
1198
  month: (StringConstructor | NumberConstructor)[];
1190
1199
  year: (StringConstructor | NumberConstructor)[];
1191
1200
  modelValue: PropType<unknown[]>;
@@ -1230,7 +1239,10 @@ declare const VDatePickerMonth: {
1230
1239
  }, vue.ExtractPropTypes<{
1231
1240
  max: PropType<unknown>;
1232
1241
  min: PropType<unknown>;
1233
- disabled: BooleanConstructor;
1242
+ disabled: {
1243
+ type: BooleanConstructor;
1244
+ default: null;
1245
+ };
1234
1246
  month: (StringConstructor | NumberConstructor)[];
1235
1247
  year: (StringConstructor | NumberConstructor)[];
1236
1248
  modelValue: PropType<unknown[]>;
@@ -27732,7 +27732,10 @@ declare const VDatePicker: {
27732
27732
  max: vue.PropType<unknown>;
27733
27733
  min: vue.PropType<unknown>;
27734
27734
  year: NumberConstructor;
27735
- disabled: BooleanConstructor;
27735
+ disabled: {
27736
+ type: BooleanConstructor;
27737
+ default: null;
27738
+ };
27736
27739
  month: (StringConstructor | NumberConstructor)[];
27737
27740
  showAdjacentMonths: BooleanConstructor;
27738
27741
  weekdays: {
@@ -27843,7 +27846,10 @@ declare const VDatePicker: {
27843
27846
  max: vue.PropType<unknown>;
27844
27847
  min: vue.PropType<unknown>;
27845
27848
  year: NumberConstructor;
27846
- disabled: BooleanConstructor;
27849
+ disabled: {
27850
+ type: BooleanConstructor;
27851
+ default: null;
27852
+ };
27847
27853
  month: (StringConstructor | NumberConstructor)[];
27848
27854
  showAdjacentMonths: BooleanConstructor;
27849
27855
  weekdays: {
@@ -27915,7 +27921,7 @@ type VDatePicker = InstanceType<typeof VDatePicker>;
27915
27921
 
27916
27922
  declare const VDatePickerControls: {
27917
27923
  new (...args: any[]): vue.CreateComponentPublicInstance<{
27918
- disabled: string | boolean | string[];
27924
+ disabled: string | boolean | string[] | null;
27919
27925
  nextIcon: IconValue;
27920
27926
  prevIcon: IconValue;
27921
27927
  modeIcon: IconValue;
@@ -27945,7 +27951,7 @@ declare const VDatePickerControls: {
27945
27951
  'click:next': () => true;
27946
27952
  'click:text': () => true;
27947
27953
  }, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
27948
- disabled: string | boolean | string[];
27954
+ disabled: string | boolean | string[] | null;
27949
27955
  nextIcon: IconValue;
27950
27956
  prevIcon: IconValue;
27951
27957
  modeIcon: IconValue;
@@ -27970,7 +27976,7 @@ declare const VDatePickerControls: {
27970
27976
  "onClick:text"?: (() => any) | undefined;
27971
27977
  }, {
27972
27978
  active: string | string[];
27973
- disabled: string | boolean | string[];
27979
+ disabled: string | boolean | string[] | null;
27974
27980
  nextIcon: IconValue;
27975
27981
  prevIcon: IconValue;
27976
27982
  modeIcon: IconValue;
@@ -27985,7 +27991,7 @@ declare const VDatePickerControls: {
27985
27991
  M: {};
27986
27992
  Defaults: {};
27987
27993
  }, {
27988
- disabled: string | boolean | string[];
27994
+ disabled: string | boolean | string[] | null;
27989
27995
  nextIcon: IconValue;
27990
27996
  prevIcon: IconValue;
27991
27997
  modeIcon: IconValue;
@@ -28010,7 +28016,7 @@ declare const VDatePickerControls: {
28010
28016
  "onClick:text"?: (() => any) | undefined;
28011
28017
  }, {}, {}, {}, {}, {
28012
28018
  active: string | string[];
28013
- disabled: string | boolean | string[];
28019
+ disabled: string | boolean | string[] | null;
28014
28020
  nextIcon: IconValue;
28015
28021
  prevIcon: IconValue;
28016
28022
  modeIcon: IconValue;
@@ -28020,7 +28026,7 @@ declare const VDatePickerControls: {
28020
28026
  __isTeleport?: never;
28021
28027
  __isSuspense?: never;
28022
28028
  } & vue.ComponentOptionsBase<{
28023
- disabled: string | boolean | string[];
28029
+ disabled: string | boolean | string[] | null;
28024
28030
  nextIcon: IconValue;
28025
28031
  prevIcon: IconValue;
28026
28032
  modeIcon: IconValue;
@@ -28051,7 +28057,7 @@ declare const VDatePickerControls: {
28051
28057
  'click:text': () => true;
28052
28058
  }, string, {
28053
28059
  active: string | string[];
28054
- disabled: string | boolean | string[];
28060
+ disabled: string | boolean | string[] | null;
28055
28061
  nextIcon: IconValue;
28056
28062
  prevIcon: IconValue;
28057
28063
  modeIcon: IconValue;
@@ -28064,8 +28070,8 @@ declare const VDatePickerControls: {
28064
28070
  default: undefined;
28065
28071
  };
28066
28072
  disabled: {
28067
- type: PropType<boolean | string | string[]>;
28068
- default: boolean;
28073
+ type: PropType<boolean | string | string[] | null>;
28074
+ default: null;
28069
28075
  };
28070
28076
  nextIcon: {
28071
28077
  type: PropType<IconValue>;
@@ -28090,8 +28096,8 @@ declare const VDatePickerControls: {
28090
28096
  default: undefined;
28091
28097
  };
28092
28098
  disabled: {
28093
- type: PropType<boolean | string | string[]>;
28094
- default: boolean;
28099
+ type: PropType<boolean | string | string[] | null>;
28100
+ default: null;
28095
28101
  };
28096
28102
  nextIcon: {
28097
28103
  type: PropType<IconValue>;
@@ -28516,7 +28522,10 @@ declare const VDatePickerMonth: {
28516
28522
  }>>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & FilterPropsOptions<{
28517
28523
  max: PropType<unknown>;
28518
28524
  min: PropType<unknown>;
28519
- disabled: BooleanConstructor;
28525
+ disabled: {
28526
+ type: BooleanConstructor;
28527
+ default: null;
28528
+ };
28520
28529
  month: (StringConstructor | NumberConstructor)[];
28521
28530
  year: (StringConstructor | NumberConstructor)[];
28522
28531
  modelValue: PropType<unknown[]>;
@@ -28561,7 +28570,10 @@ declare const VDatePickerMonth: {
28561
28570
  }, vue.ExtractPropTypes<{
28562
28571
  max: PropType<unknown>;
28563
28572
  min: PropType<unknown>;
28564
- disabled: BooleanConstructor;
28573
+ disabled: {
28574
+ type: BooleanConstructor;
28575
+ default: null;
28576
+ };
28565
28577
  month: (StringConstructor | NumberConstructor)[];
28566
28578
  year: (StringConstructor | NumberConstructor)[];
28567
28579
  modelValue: PropType<unknown[]>;
@@ -7,7 +7,10 @@ import { propsFactory, wrapInArray } from "../util/index.mjs"; // Types
7
7
  // Composables
8
8
  export const makeCalendarProps = propsFactory({
9
9
  allowedDates: [Array, Function],
10
- disabled: Boolean,
10
+ disabled: {
11
+ type: Boolean,
12
+ default: null
13
+ },
11
14
  displayValue: null,
12
15
  modelValue: Array,
13
16
  month: [Number, String],
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.mjs","names":["getWeek","useDate","useProxiedModel","computed","propsFactory","wrapInArray","makeCalendarProps","allowedDates","Array","Function","disabled","Boolean","displayValue","modelValue","month","Number","String","max","min","showAdjacentMonths","year","weekdays","type","default","weeksInMonth","firstDayOfWeek","useCalendar","props","adapter","model","v","date","value","length","isArray","undefined","getYear","startOfYear","setYear","getMonth","startOfMonth","setMonth","defaultFirstDayOfWeek","weekDays","map","day","weeks","getWeekArray","days","flat","daysInMonth","lastDay","week","push","addDays","genDays","today","filter","includes","toJsDate","getDay","index","isoDate","toISO","isAdjacent","isSameMonth","isStart","isSameDay","isEnd","endOfMonth","isSame","formatted","format","isDisabled","isWeekStart","isWeekEnd","isToday","isHidden","isSelected","some","localized","daysInWeek","startOfWeek","weekNumbers","isAfter","d"],"sources":["../../src/composables/calendar.ts"],"sourcesContent":["// Composables\nimport { getWeek, useDate } from '@/composables/date/date'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed } from 'vue'\nimport { propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport interface CalendarProps {\n allowedDates: unknown[] | ((date: unknown) => boolean) | undefined\n disabled: boolean\n displayValue?: unknown\n modelValue: unknown[] | undefined\n max: unknown\n min: unknown\n showAdjacentMonths: boolean\n month: number | string | undefined\n weekdays: number[]\n year: number | string | undefined\n weeksInMonth: 'dynamic' | 'static'\n firstDayOfWeek: number | string | undefined\n\n 'onUpdate:modelValue': ((value: unknown[]) => void) | undefined\n 'onUpdate:month': ((value: number) => void) | undefined\n 'onUpdate:year': ((value: number) => void) | undefined\n}\n\n// Composables\nexport const makeCalendarProps = propsFactory({\n allowedDates: [Array, Function] as PropType<unknown[] | ((date: unknown) => boolean)>,\n disabled: Boolean,\n displayValue: null as any as PropType<unknown>,\n modelValue: Array as PropType<unknown[]>,\n month: [Number, String],\n max: null as any as PropType<unknown>,\n min: null as any as PropType<unknown>,\n showAdjacentMonths: Boolean,\n year: [Number, String],\n weekdays: {\n type: Array<number>,\n default: () => [0, 1, 2, 3, 4, 5, 6],\n },\n weeksInMonth: {\n type: String as PropType<'dynamic' | 'static'>,\n default: 'dynamic',\n },\n firstDayOfWeek: [Number, String],\n}, 'calendar')\n\nexport function useCalendar (props: CalendarProps) {\n const adapter = useDate()\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => wrapInArray(v),\n )\n const displayValue = computed(() => {\n if (props.displayValue) return adapter.date(props.displayValue)\n if (model.value.length > 0) return adapter.date(model.value[0])\n if (props.min) return adapter.date(props.min)\n if (Array.isArray(props.allowedDates)) return adapter.date(props.allowedDates[0])\n\n return adapter.date()\n })\n\n const year = useProxiedModel(\n props,\n 'year',\n undefined,\n v => {\n const value = v != null ? Number(v) : adapter.getYear(displayValue.value)\n\n return adapter.startOfYear(adapter.setYear(adapter.date(), value))\n },\n v => adapter.getYear(v)\n )\n\n const month = useProxiedModel(\n props,\n 'month',\n undefined,\n v => {\n const value = v != null ? Number(v) : adapter.getMonth(displayValue.value)\n const date = adapter.setYear(adapter.startOfMonth(adapter.date()), adapter.getYear(year.value))\n\n return adapter.setMonth(date, value)\n },\n v => adapter.getMonth(v)\n )\n\n const defaultFirstDayOfWeek = computed(() => {\n return props.firstDayOfWeek ?? props.weekdays[0]\n })\n\n const weekDays = computed(() => {\n const firstDayOfWeek = Number(props.firstDayOfWeek ?? 0)\n return props.weekdays.map(day => (day + firstDayOfWeek) % 7)\n })\n\n const weeksInMonth = computed(() => {\n const weeks = adapter.getWeekArray(month.value, defaultFirstDayOfWeek.value)\n\n const days = weeks.flat()\n\n // Make sure there's always 6 weeks in month (6 * 7 days)\n // if weeksInMonth is 'static'\n const daysInMonth = 6 * 7\n if (props.weeksInMonth === 'static' && days.length < daysInMonth) {\n const lastDay = days[days.length - 1]\n\n let week = []\n for (let day = 1; day <= daysInMonth - days.length; day++) {\n week.push(adapter.addDays(lastDay, day))\n\n if (day % 7 === 0) {\n weeks.push(week)\n week = []\n }\n }\n }\n\n return weeks\n })\n\n function genDays (days: unknown[], today: unknown) {\n return days.filter(date => {\n return weekDays.value.includes(adapter.toJsDate(date).getDay())\n }).map((date, index) => {\n const isoDate = adapter.toISO(date)\n const isAdjacent = !adapter.isSameMonth(date, month.value)\n const isStart = adapter.isSameDay(date, adapter.startOfMonth(month.value))\n const isEnd = adapter.isSameDay(date, adapter.endOfMonth(month.value))\n const isSame = adapter.isSameDay(date, month.value)\n\n return {\n date,\n isoDate,\n formatted: adapter.format(date, 'keyboardDate'),\n year: adapter.getYear(date),\n month: adapter.getMonth(date),\n isDisabled: isDisabled(date),\n isWeekStart: index % 7 === 0,\n isWeekEnd: index % 7 === 6,\n isToday: adapter.isSameDay(date, today),\n isAdjacent,\n isHidden: isAdjacent && !props.showAdjacentMonths,\n isStart,\n isSelected: model.value.some(value => adapter.isSameDay(date, value)),\n isEnd,\n isSame,\n localized: adapter.format(date, 'dayOfMonth'),\n }\n })\n }\n\n const daysInWeek = computed(() => {\n const lastDay = adapter.startOfWeek(displayValue.value, props.firstDayOfWeek)\n const week = []\n for (let day = 0; day <= 6; day++) {\n week.push(adapter.addDays(lastDay, day))\n }\n\n const today = adapter.date()\n\n return genDays(week, today)\n })\n\n const daysInMonth = computed(() => {\n const days = weeksInMonth.value.flat()\n const today = adapter.date() as Date\n\n return genDays(days, today)\n })\n\n const weekNumbers = computed(() => {\n return weeksInMonth.value.map(week => {\n return week.length ? getWeek(adapter, week[0]) : null\n })\n })\n\n function isDisabled (value: unknown) {\n if (props.disabled) return true\n\n const date = adapter.date(value)\n\n if (props.min && adapter.isAfter(adapter.date(props.min), date)) return true\n if (props.max && adapter.isAfter(date, adapter.date(props.max))) return true\n\n if (Array.isArray(props.allowedDates) && props.allowedDates.length > 0) {\n return !props.allowedDates.some(d => adapter.isSameDay(adapter.date(d), date))\n }\n\n if (typeof props.allowedDates === 'function') {\n return !props.allowedDates(date)\n }\n\n return false\n }\n\n return {\n displayValue,\n daysInMonth,\n daysInWeek,\n genDays,\n model,\n weeksInMonth,\n weekDays,\n weekNumbers,\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"calendar.mjs","names":["getWeek","useDate","useProxiedModel","computed","propsFactory","wrapInArray","makeCalendarProps","allowedDates","Array","Function","disabled","type","Boolean","default","displayValue","modelValue","month","Number","String","max","min","showAdjacentMonths","year","weekdays","weeksInMonth","firstDayOfWeek","useCalendar","props","adapter","model","v","date","value","length","isArray","undefined","getYear","startOfYear","setYear","getMonth","startOfMonth","setMonth","defaultFirstDayOfWeek","weekDays","map","day","weeks","getWeekArray","days","flat","daysInMonth","lastDay","week","push","addDays","genDays","today","filter","includes","toJsDate","getDay","index","isoDate","toISO","isAdjacent","isSameMonth","isStart","isSameDay","isEnd","endOfMonth","isSame","formatted","format","isDisabled","isWeekStart","isWeekEnd","isToday","isHidden","isSelected","some","localized","daysInWeek","startOfWeek","weekNumbers","isAfter","d"],"sources":["../../src/composables/calendar.ts"],"sourcesContent":["// Composables\nimport { getWeek, useDate } from '@/composables/date/date'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed } from 'vue'\nimport { propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport interface CalendarProps {\n allowedDates: unknown[] | ((date: unknown) => boolean) | undefined\n disabled: boolean\n displayValue?: unknown\n modelValue: unknown[] | undefined\n max: unknown\n min: unknown\n showAdjacentMonths: boolean\n month: number | string | undefined\n weekdays: number[]\n year: number | string | undefined\n weeksInMonth: 'dynamic' | 'static'\n firstDayOfWeek: number | string | undefined\n\n 'onUpdate:modelValue': ((value: unknown[]) => void) | undefined\n 'onUpdate:month': ((value: number) => void) | undefined\n 'onUpdate:year': ((value: number) => void) | undefined\n}\n\n// Composables\nexport const makeCalendarProps = propsFactory({\n allowedDates: [Array, Function] as PropType<unknown[] | ((date: unknown) => boolean)>,\n disabled: {\n type: Boolean,\n default: null,\n },\n displayValue: null as any as PropType<unknown>,\n modelValue: Array as PropType<unknown[]>,\n month: [Number, String],\n max: null as any as PropType<unknown>,\n min: null as any as PropType<unknown>,\n showAdjacentMonths: Boolean,\n year: [Number, String],\n weekdays: {\n type: Array<number>,\n default: () => [0, 1, 2, 3, 4, 5, 6],\n },\n weeksInMonth: {\n type: String as PropType<'dynamic' | 'static'>,\n default: 'dynamic',\n },\n firstDayOfWeek: [Number, String],\n}, 'calendar')\n\nexport function useCalendar (props: CalendarProps) {\n const adapter = useDate()\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => wrapInArray(v),\n )\n const displayValue = computed(() => {\n if (props.displayValue) return adapter.date(props.displayValue)\n if (model.value.length > 0) return adapter.date(model.value[0])\n if (props.min) return adapter.date(props.min)\n if (Array.isArray(props.allowedDates)) return adapter.date(props.allowedDates[0])\n\n return adapter.date()\n })\n\n const year = useProxiedModel(\n props,\n 'year',\n undefined,\n v => {\n const value = v != null ? Number(v) : adapter.getYear(displayValue.value)\n\n return adapter.startOfYear(adapter.setYear(adapter.date(), value))\n },\n v => adapter.getYear(v)\n )\n\n const month = useProxiedModel(\n props,\n 'month',\n undefined,\n v => {\n const value = v != null ? Number(v) : adapter.getMonth(displayValue.value)\n const date = adapter.setYear(adapter.startOfMonth(adapter.date()), adapter.getYear(year.value))\n\n return adapter.setMonth(date, value)\n },\n v => adapter.getMonth(v)\n )\n\n const defaultFirstDayOfWeek = computed(() => {\n return props.firstDayOfWeek ?? props.weekdays[0]\n })\n\n const weekDays = computed(() => {\n const firstDayOfWeek = Number(props.firstDayOfWeek ?? 0)\n return props.weekdays.map(day => (day + firstDayOfWeek) % 7)\n })\n\n const weeksInMonth = computed(() => {\n const weeks = adapter.getWeekArray(month.value, defaultFirstDayOfWeek.value)\n\n const days = weeks.flat()\n\n // Make sure there's always 6 weeks in month (6 * 7 days)\n // if weeksInMonth is 'static'\n const daysInMonth = 6 * 7\n if (props.weeksInMonth === 'static' && days.length < daysInMonth) {\n const lastDay = days[days.length - 1]\n\n let week = []\n for (let day = 1; day <= daysInMonth - days.length; day++) {\n week.push(adapter.addDays(lastDay, day))\n\n if (day % 7 === 0) {\n weeks.push(week)\n week = []\n }\n }\n }\n\n return weeks\n })\n\n function genDays (days: unknown[], today: unknown) {\n return days.filter(date => {\n return weekDays.value.includes(adapter.toJsDate(date).getDay())\n }).map((date, index) => {\n const isoDate = adapter.toISO(date)\n const isAdjacent = !adapter.isSameMonth(date, month.value)\n const isStart = adapter.isSameDay(date, adapter.startOfMonth(month.value))\n const isEnd = adapter.isSameDay(date, adapter.endOfMonth(month.value))\n const isSame = adapter.isSameDay(date, month.value)\n\n return {\n date,\n isoDate,\n formatted: adapter.format(date, 'keyboardDate'),\n year: adapter.getYear(date),\n month: adapter.getMonth(date),\n isDisabled: isDisabled(date),\n isWeekStart: index % 7 === 0,\n isWeekEnd: index % 7 === 6,\n isToday: adapter.isSameDay(date, today),\n isAdjacent,\n isHidden: isAdjacent && !props.showAdjacentMonths,\n isStart,\n isSelected: model.value.some(value => adapter.isSameDay(date, value)),\n isEnd,\n isSame,\n localized: adapter.format(date, 'dayOfMonth'),\n }\n })\n }\n\n const daysInWeek = computed(() => {\n const lastDay = adapter.startOfWeek(displayValue.value, props.firstDayOfWeek)\n const week = []\n for (let day = 0; day <= 6; day++) {\n week.push(adapter.addDays(lastDay, day))\n }\n\n const today = adapter.date()\n\n return genDays(week, today)\n })\n\n const daysInMonth = computed(() => {\n const days = weeksInMonth.value.flat()\n const today = adapter.date() as Date\n\n return genDays(days, today)\n })\n\n const weekNumbers = computed(() => {\n return weeksInMonth.value.map(week => {\n return week.length ? getWeek(adapter, week[0]) : null\n })\n })\n\n function isDisabled (value: unknown) {\n if (props.disabled) return true\n\n const date = adapter.date(value)\n\n if (props.min && adapter.isAfter(adapter.date(props.min), date)) return true\n if (props.max && adapter.isAfter(date, adapter.date(props.max))) return true\n\n if (Array.isArray(props.allowedDates) && props.allowedDates.length > 0) {\n return !props.allowedDates.some(d => adapter.isSameDay(adapter.date(d), date))\n }\n\n if (typeof props.allowedDates === 'function') {\n return !props.allowedDates(date)\n }\n\n return false\n }\n\n return {\n displayValue,\n daysInMonth,\n daysInWeek,\n genDays,\n model,\n weeksInMonth,\n weekDays,\n weekNumbers,\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -16,7 +16,7 @@ export const createVuetify = function () {
16
16
  ...options
17
17
  });
18
18
  };
19
- export const version = "3.7.12-master.2025-02-14";
19
+ export const version = "3.7.12-master.2025-02-17";
20
20
  createVuetify.version = version;
21
21
  export { blueprints, components, directives };
22
22
  export * from "./composables/index.mjs";
package/lib/framework.mjs CHANGED
@@ -97,7 +97,7 @@ export function createVuetify() {
97
97
  goTo
98
98
  };
99
99
  }
100
- export const version = "3.7.12-master.2025-02-14";
100
+ export const version = "3.7.12-master.2025-02-17";
101
101
  createVuetify.version = version;
102
102
 
103
103
  // Vue's inject() can only be used in setup