@vuetify/nightly 3.8.1-master.2025-04-07 → 3.8.1-master.2025-04-08

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 (43) hide show
  1. package/CHANGELOG.md +12 -3
  2. package/dist/json/attributes.json +2796 -2796
  3. package/dist/json/importMap-labs.json +30 -30
  4. package/dist/json/importMap.json +132 -132
  5. package/dist/json/web-types.json +5227 -5227
  6. package/dist/vuetify-labs.cjs +107 -185
  7. package/dist/vuetify-labs.css +3264 -3264
  8. package/dist/vuetify-labs.d.ts +57 -55
  9. package/dist/vuetify-labs.esm.js +107 -185
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +107 -185
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +107 -185
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +2167 -2167
  16. package/dist/vuetify.d.ts +57 -55
  17. package/dist/vuetify.esm.js +107 -185
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +107 -185
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +277 -263
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/components/VDataTable/VDataTable.css +1 -1
  25. package/lib/components/VDataTable/VDataTable.sass +1 -1
  26. package/lib/composables/calendar.js +2 -2
  27. package/lib/composables/calendar.js.map +1 -1
  28. package/lib/composables/date/DateAdapter.d.ts +1 -0
  29. package/lib/composables/date/DateAdapter.js.map +1 -1
  30. package/lib/composables/date/adapters/vuetify.d.ts +1 -0
  31. package/lib/composables/date/adapters/vuetify.js +101 -160
  32. package/lib/composables/date/adapters/vuetify.js.map +1 -1
  33. package/lib/composables/date/date.d.ts +1 -1
  34. package/lib/composables/date/date.js +0 -20
  35. package/lib/composables/date/date.js.map +1 -1
  36. package/lib/composables/filter.js +2 -1
  37. package/lib/composables/filter.js.map +1 -1
  38. package/lib/entry-bundler.d.ts +1 -0
  39. package/lib/entry-bundler.js +1 -1
  40. package/lib/framework.d.ts +57 -55
  41. package/lib/framework.js +1 -1
  42. package/lib/labs/entry-bundler.d.ts +1 -0
  43. package/package.json +4 -4
@@ -152,7 +152,7 @@
152
152
  }
153
153
 
154
154
  .v-data-table__tr--mobile > .v-data-table__td--expanded-row {
155
- grid-template-columns: 0;
155
+ grid-template-columns: auto;
156
156
  justify-content: center;
157
157
  }
158
158
  .v-data-table__tr--mobile > .v-data-table__td--select-row {
@@ -134,7 +134,7 @@
134
134
 
135
135
  .v-data-table__tr--mobile
136
136
  > .v-data-table__td--expanded-row
137
- grid-template-columns: 0
137
+ grid-template-columns: auto
138
138
  justify-content: center
139
139
 
140
140
  > .v-data-table__td--select-row
@@ -1,5 +1,5 @@
1
1
  // Composables
2
- import { getWeek, useDate } from "./date/date.js";
2
+ import { useDate } from "./date/date.js";
3
3
  import { useProxiedModel } from "./proxiedModel.js"; // Utilities
4
4
  import { computed } from 'vue';
5
5
  import { propsFactory, wrapInArray } from "../util/index.js"; // Types
@@ -122,7 +122,7 @@ export function useCalendar(props) {
122
122
  });
123
123
  const weekNumbers = computed(() => {
124
124
  return weeksInMonth.value.map(week => {
125
- return week.length ? getWeek(adapter, week[0]) : null;
125
+ return week.length ? adapter.getWeek(week[0], props.firstDayOfWeek) : null;
126
126
  });
127
127
  });
128
128
  function isDisabled(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.js","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","map","i","date","value","length","isArray","undefined","getYear","startOfYear","setYear","getMonth","startOfMonth","setMonth","weekDays","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\nexport type CalendarWeekdays = 0 | 1 | 2 | 3 | 4 | 5 | 6\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 as PropType<CalendarWeekdays[]>,\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: {\n type: [Number, String],\n default: 0,\n },\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).map(i => adapter.date(i)),\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 weekDays = computed(() => {\n const firstDayOfWeek = Number(props.firstDayOfWeek)\n\n // Always generate all days, regardless of props.weekdays\n return [0, 1, 2, 3, 4, 5, 6].map(day => (day + firstDayOfWeek) % 7)\n })\n\n const weeksInMonth = computed(() => {\n const firstDayOfWeek = Number(props.firstDayOfWeek)\n const weeks = adapter.getWeekArray(month.value, firstDayOfWeek)\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 !props.weekdays.includes(adapter.toJsDate(date).getDay())\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.js","names":["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","map","i","date","value","length","isArray","undefined","getYear","startOfYear","setYear","getMonth","startOfMonth","setMonth","weekDays","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","getWeek","isAfter","d"],"sources":["../../src/composables/calendar.ts"],"sourcesContent":["// Composables\nimport { 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\nexport type CalendarWeekdays = 0 | 1 | 2 | 3 | 4 | 5 | 6\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 as PropType<CalendarWeekdays[]>,\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: {\n type: [Number, String],\n default: 0,\n },\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).map(i => adapter.date(i)),\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 weekDays = computed(() => {\n const firstDayOfWeek = Number(props.firstDayOfWeek)\n\n // Always generate all days, regardless of props.weekdays\n return [0, 1, 2, 3, 4, 5, 6].map(day => (day + firstDayOfWeek) % 7)\n })\n\n const weeksInMonth = computed(() => {\n const firstDayOfWeek = Number(props.firstDayOfWeek)\n const weeks = adapter.getWeekArray(month.value, firstDayOfWeek)\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 ? adapter.getWeek(week[0], props.firstDayOfWeek) : 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 !props.weekdays.includes(adapter.toJsDate(date).getDay())\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":[]}
@@ -31,6 +31,7 @@ export interface DateAdapter<T = unknown> {
31
31
  getDiff(date: T, comparing: T | string, unit?: string): number;
32
32
  getWeekArray(date: T, firstDayOfWeek?: number | string): T[][];
33
33
  getWeekdays(firstDayOfWeek?: number | string): string[];
34
+ getWeek(date: T, firstDayOfWeek?: number | string, firstWeekMinSize?: number): number;
34
35
  getMonth(date: T): number;
35
36
  setMonth(date: T, month: number): T;
36
37
  getDate(date: T): number;
@@ -1 +1 @@
1
- {"version":3,"file":"DateAdapter.js","names":[],"sources":["../../../src/composables/date/DateAdapter.ts"],"sourcesContent":["export interface DateAdapter<T = unknown> {\n date (value?: any): T | null\n format (date: T, formatString: string): string\n toJsDate (value: T): Date\n parseISO (date: string): T\n toISO (date: T): string\n\n startOfDay (date: T): T\n endOfDay (date: T): T\n startOfWeek (date: T, firstDayOfWeek?: number | string): T\n endOfWeek (date: T): T\n startOfMonth (date: T): T\n endOfMonth (date: T): T\n startOfYear (date: T): T\n endOfYear (date: T): T\n\n isAfter (date: T, comparing: T): boolean\n isAfterDay(value: T, comparing: T): boolean\n\n isSameDay (date: T, comparing: T): boolean\n isSameMonth (date: T, comparing: T): boolean\n isSameYear(value: T, comparing: T): boolean\n\n isBefore (date: T, comparing: T): boolean\n isEqual (date: T, comparing: T): boolean\n isValid (date: any): boolean\n isWithinRange (date: T, range: [T, T]): boolean\n\n addMinutes (date: T, amount: number): T\n addHours (date: T, amount: number): T\n addDays (date: T, amount: number): T\n addWeeks (date: T, amount: number): T\n addMonths (date: T, amount: number): T\n\n getYear (date: T): number\n setYear (date: T, year: number): T\n getDiff (date: T, comparing: T | string, unit?: string): number\n getWeekArray (date: T, firstDayOfWeek?: number | string): T[][]\n getWeekdays (firstDayOfWeek?: number | string): string[]\n getMonth (date: T): number\n setMonth (date: T, month: number): T\n getDate (date: T): number\n setDate (date: T, day: number): T\n getNextMonth (date: T): T\n getPreviousMonth(date: T): T\n\n getHours (date: T): number\n setHours (date: T, hours: number): T\n getMinutes (date: T): number\n setMinutes (date: T, minutes: number): T\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"DateAdapter.js","names":[],"sources":["../../../src/composables/date/DateAdapter.ts"],"sourcesContent":["export interface DateAdapter<T = unknown> {\n date (value?: any): T | null\n format (date: T, formatString: string): string\n toJsDate (value: T): Date\n parseISO (date: string): T\n toISO (date: T): string\n\n startOfDay (date: T): T\n endOfDay (date: T): T\n startOfWeek (date: T, firstDayOfWeek?: number | string): T\n endOfWeek (date: T): T\n startOfMonth (date: T): T\n endOfMonth (date: T): T\n startOfYear (date: T): T\n endOfYear (date: T): T\n\n isAfter (date: T, comparing: T): boolean\n isAfterDay(value: T, comparing: T): boolean\n\n isSameDay (date: T, comparing: T): boolean\n isSameMonth (date: T, comparing: T): boolean\n isSameYear(value: T, comparing: T): boolean\n\n isBefore (date: T, comparing: T): boolean\n isEqual (date: T, comparing: T): boolean\n isValid (date: any): boolean\n isWithinRange (date: T, range: [T, T]): boolean\n\n addMinutes (date: T, amount: number): T\n addHours (date: T, amount: number): T\n addDays (date: T, amount: number): T\n addWeeks (date: T, amount: number): T\n addMonths (date: T, amount: number): T\n\n getYear (date: T): number\n setYear (date: T, year: number): T\n getDiff (date: T, comparing: T | string, unit?: string): number\n getWeekArray (date: T, firstDayOfWeek?: number | string): T[][]\n getWeekdays (firstDayOfWeek?: number | string): string[]\n getWeek (date: T, firstDayOfWeek?: number | string, firstWeekMinSize?: number): number\n getMonth (date: T): number\n setMonth (date: T, month: number): T\n getDate (date: T): number\n setDate (date: T, day: number): T\n getNextMonth (date: T): T\n getPreviousMonth(date: T): T\n\n getHours (date: T): number\n setHours (date: T, hours: number): T\n getMinutes (date: T): number\n setMinutes (date: T, minutes: number): T\n}\n"],"mappings":"","ignoreList":[]}
@@ -40,6 +40,7 @@ export declare class VuetifyDateAdapter implements DateAdapter<Date> {
40
40
  getWeekdays(firstDayOfWeek?: number | string): string[];
41
41
  getYear(date: Date): number;
42
42
  getMonth(date: Date): number;
43
+ getWeek(date: Date, firstDayOfWeek?: number | string, firstWeekMinSize?: number): number;
43
44
  getDate(date: Date): number;
44
45
  getNextMonth(date: Date): Date;
45
46
  getPreviousMonth(date: Date): Date;
@@ -1,164 +1,80 @@
1
1
  // Utilities
2
2
  import { createRange, padStart } from "../../../util/index.js"; // Types
3
- const firstDay = {
4
- '001': 1,
5
- AD: 1,
6
- AE: 6,
7
- AF: 6,
8
- AG: 0,
9
- AI: 1,
10
- AL: 1,
11
- AM: 1,
12
- AN: 1,
13
- AR: 1,
14
- AS: 0,
15
- AT: 1,
16
- AU: 1,
17
- AX: 1,
18
- AZ: 1,
19
- BA: 1,
20
- BD: 0,
21
- BE: 1,
22
- BG: 1,
23
- BH: 6,
24
- BM: 1,
25
- BN: 1,
26
- BR: 0,
27
- BS: 0,
28
- BT: 0,
29
- BW: 0,
30
- BY: 1,
31
- BZ: 0,
32
- CA: 0,
33
- CH: 1,
34
- CL: 1,
35
- CM: 1,
36
- CN: 1,
37
- CO: 0,
38
- CR: 1,
39
- CY: 1,
40
- CZ: 1,
41
- DE: 1,
42
- DJ: 6,
43
- DK: 1,
44
- DM: 0,
45
- DO: 0,
46
- DZ: 6,
47
- EC: 1,
48
- EE: 1,
49
- EG: 6,
50
- ES: 1,
51
- ET: 0,
52
- FI: 1,
53
- FJ: 1,
54
- FO: 1,
55
- FR: 1,
56
- GB: 1,
57
- 'GB-alt-variant': 0,
58
- GE: 1,
59
- GF: 1,
60
- GP: 1,
61
- GR: 1,
62
- GT: 0,
63
- GU: 0,
64
- HK: 0,
65
- HN: 0,
66
- HR: 1,
67
- HU: 1,
68
- ID: 0,
69
- IE: 1,
70
- IL: 0,
71
- IN: 0,
72
- IQ: 6,
73
- IR: 6,
74
- IS: 1,
75
- IT: 1,
76
- JM: 0,
77
- JO: 6,
78
- JP: 0,
79
- KE: 0,
80
- KG: 1,
81
- KH: 0,
82
- KR: 0,
83
- KW: 6,
84
- KZ: 1,
85
- LA: 0,
86
- LB: 1,
87
- LI: 1,
88
- LK: 1,
89
- LT: 1,
90
- LU: 1,
91
- LV: 1,
92
- LY: 6,
93
- MC: 1,
94
- MD: 1,
95
- ME: 1,
96
- MH: 0,
97
- MK: 1,
98
- MM: 0,
99
- MN: 1,
100
- MO: 0,
101
- MQ: 1,
102
- MT: 0,
103
- MV: 5,
104
- MX: 0,
105
- MY: 1,
106
- MZ: 0,
107
- NI: 0,
108
- NL: 1,
109
- NO: 1,
110
- NP: 0,
111
- NZ: 1,
112
- OM: 6,
113
- PA: 0,
114
- PE: 0,
115
- PH: 0,
116
- PK: 0,
117
- PL: 1,
118
- PR: 0,
119
- PT: 0,
120
- PY: 0,
121
- QA: 6,
122
- RE: 1,
123
- RO: 1,
124
- RS: 1,
125
- RU: 1,
126
- SA: 0,
127
- SD: 6,
128
- SE: 1,
129
- SG: 0,
130
- SI: 1,
131
- SK: 1,
132
- SM: 1,
133
- SV: 0,
134
- SY: 6,
135
- TH: 0,
136
- TJ: 1,
137
- TM: 1,
138
- TR: 1,
139
- TT: 0,
140
- TW: 0,
141
- UA: 1,
142
- UM: 0,
143
- US: 0,
144
- UY: 1,
145
- UZ: 1,
146
- VA: 1,
147
- VE: 0,
148
- VI: 0,
149
- VN: 1,
150
- WS: 0,
151
- XK: 1,
152
- YE: 0,
153
- ZA: 0,
154
- ZW: 0
155
- };
3
+ function weekInfo(locale) {
4
+ // https://simplelocalize.io/data/locales/
5
+ // then `new Intl.Locale(...).getWeekInfo()`
6
+ const code = locale.slice(-2).toUpperCase();
7
+ switch (true) {
8
+ case locale === 'GB-alt-variant':
9
+ {
10
+ return {
11
+ firstDay: 0,
12
+ firstWeekSize: 4
13
+ };
14
+ }
15
+ case locale === '001':
16
+ {
17
+ return {
18
+ firstDay: 1,
19
+ firstWeekSize: 1
20
+ };
21
+ }
22
+ case `AG AS BD BR BS BT BW BZ CA CO DM DO ET GT GU HK HN ID IL IN JM JP KE
23
+ KH KR LA MH MM MO MT MX MZ NI NP PA PE PH PK PR PY SA SG SV TH TT TW UM US
24
+ VE VI WS YE ZA ZW`.includes(code):
25
+ {
26
+ return {
27
+ firstDay: 0,
28
+ firstWeekSize: 1
29
+ };
30
+ }
31
+ case `AI AL AM AR AU AZ BA BM BN BY CL CM CN CR CY EC GE HR KG KZ LB LK LV
32
+ MD ME MK MN MY NZ RO RS SI TJ TM TR UA UY UZ VN XK`.includes(code):
33
+ {
34
+ return {
35
+ firstDay: 1,
36
+ firstWeekSize: 1
37
+ };
38
+ }
39
+ case `AD AN AT AX BE BG CH CZ DE DK EE ES FI FJ FO FR GB GF GP GR HU IE IS
40
+ IT LI LT LU MC MQ NL NO PL RE RU SE SK SM VA`.includes(code):
41
+ {
42
+ return {
43
+ firstDay: 1,
44
+ firstWeekSize: 4
45
+ };
46
+ }
47
+ case `AE AF BH DJ DZ EG IQ IR JO KW LY OM QA SD SY`.includes(code):
48
+ {
49
+ return {
50
+ firstDay: 6,
51
+ firstWeekSize: 1
52
+ };
53
+ }
54
+ case code === 'MV':
55
+ {
56
+ return {
57
+ firstDay: 5,
58
+ firstWeekSize: 1
59
+ };
60
+ }
61
+ case code === 'PT':
62
+ {
63
+ return {
64
+ firstDay: 0,
65
+ firstWeekSize: 4
66
+ };
67
+ }
68
+ default:
69
+ return null;
70
+ }
71
+ }
156
72
  function getWeekArray(date, locale, firstDayOfWeek) {
157
73
  const weeks = [];
158
74
  let currentWeek = [];
159
75
  const firstDayOfMonth = startOfMonth(date);
160
76
  const lastDayOfMonth = endOfMonth(date);
161
- const first = firstDayOfWeek ?? firstDay[locale.slice(-2).toUpperCase()] ?? 0;
77
+ const first = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
162
78
  const firstDayWeekIndex = (firstDayOfMonth.getDay() - first + 7) % 7;
163
79
  const lastDayWeekIndex = (lastDayOfMonth.getDay() - first + 7) % 7;
164
80
  for (let i = 0; i < firstDayWeekIndex; i++) {
@@ -189,7 +105,7 @@ function getWeekArray(date, locale, firstDayOfWeek) {
189
105
  return weeks;
190
106
  }
191
107
  function startOfWeek(date, locale, firstDayOfWeek) {
192
- const day = firstDayOfWeek ?? firstDay[locale.slice(-2).toUpperCase()] ?? 0;
108
+ const day = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
193
109
  const d = new Date(date);
194
110
  while (d.getDay() !== day) {
195
111
  d.setDate(d.getDate() - 1);
@@ -198,7 +114,7 @@ function startOfWeek(date, locale, firstDayOfWeek) {
198
114
  }
199
115
  function endOfWeek(date, locale) {
200
116
  const d = new Date(date);
201
- const lastDay = ((firstDay[locale.slice(-2).toUpperCase()] ?? 0) + 6) % 7;
117
+ const lastDay = ((weekInfo(locale)?.firstDay ?? 0) + 6) % 7;
202
118
  while (d.getDay() !== lastDay) {
203
119
  d.setDate(d.getDate() + 1);
204
120
  }
@@ -233,7 +149,7 @@ function date(value) {
233
149
  }
234
150
  const sundayJanuarySecond2000 = new Date(2000, 0, 2);
235
151
  function getWeekdays(locale, firstDayOfWeek) {
236
- const daysFromSunday = firstDayOfWeek ?? firstDay[locale.slice(-2).toUpperCase()] ?? 0;
152
+ const daysFromSunday = firstDayOfWeek ?? weekInfo(locale)?.firstDay ?? 0;
237
153
  return createRange(7).map(i => {
238
154
  const weekday = new Date(sundayJanuarySecond2000);
239
155
  weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
@@ -481,6 +397,24 @@ function getYear(date) {
481
397
  function getMonth(date) {
482
398
  return date.getMonth();
483
399
  }
400
+ function getWeek(date, locale, firstDayOfWeek, firstWeekMinSize) {
401
+ const weekInfoFromLocale = weekInfo(locale);
402
+ const weekStart = firstDayOfWeek ?? weekInfoFromLocale?.firstDay ?? 0;
403
+ const minWeekSize = firstWeekMinSize ?? weekInfoFromLocale?.firstWeekSize ?? 1;
404
+ function firstWeekSize(year) {
405
+ const yearStart = new Date(year, 0, 1);
406
+ return 7 - getDiff(yearStart, startOfWeek(yearStart, locale, weekStart), 'days');
407
+ }
408
+ let year = getYear(date);
409
+ const currentWeekEnd = addDays(startOfWeek(date, locale, weekStart), 6);
410
+ if (year < getYear(currentWeekEnd) && firstWeekSize(year + 1) >= minWeekSize) {
411
+ year++;
412
+ }
413
+ const yearStart = new Date(year, 0, 1);
414
+ const size = firstWeekSize(year);
415
+ const d1w1 = size >= minWeekSize ? addDays(yearStart, size - 7) : addDays(yearStart, size);
416
+ return 1 + getDiff(date, d1w1, 'weeks');
417
+ }
484
418
  function getDate(date) {
485
419
  return date.getDate();
486
420
  }
@@ -620,10 +554,12 @@ export class VuetifyDateAdapter {
620
554
  return addMonths(date, amount);
621
555
  }
622
556
  getWeekArray(date, firstDayOfWeek) {
623
- return getWeekArray(date, this.locale, firstDayOfWeek ? Number(firstDayOfWeek) : undefined);
557
+ const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
558
+ return getWeekArray(date, this.locale, firstDay);
624
559
  }
625
560
  startOfWeek(date, firstDayOfWeek) {
626
- return startOfWeek(date, this.locale, firstDayOfWeek ? Number(firstDayOfWeek) : undefined);
561
+ const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
562
+ return startOfWeek(date, this.locale, firstDay);
627
563
  }
628
564
  endOfWeek(date) {
629
565
  return endOfWeek(date, this.locale);
@@ -683,7 +619,8 @@ export class VuetifyDateAdapter {
683
619
  return getDiff(date, comparing, unit);
684
620
  }
685
621
  getWeekdays(firstDayOfWeek) {
686
- return getWeekdays(this.locale, firstDayOfWeek ? Number(firstDayOfWeek) : undefined);
622
+ const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
623
+ return getWeekdays(this.locale, firstDay);
687
624
  }
688
625
  getYear(date) {
689
626
  return getYear(date);
@@ -691,6 +628,10 @@ export class VuetifyDateAdapter {
691
628
  getMonth(date) {
692
629
  return getMonth(date);
693
630
  }
631
+ getWeek(date, firstDayOfWeek, firstWeekMinSize) {
632
+ const firstDay = firstDayOfWeek !== undefined ? Number(firstDayOfWeek) : undefined;
633
+ return getWeek(date, this.locale, firstDay, firstWeekMinSize);
634
+ }
694
635
  getDate(date) {
695
636
  return getDate(date);
696
637
  }