vuetify 3.10.3 → 3.10.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/dist/json/attributes.json +3285 -3269
  2. package/dist/json/importMap-labs.json +18 -18
  3. package/dist/json/importMap.json +176 -176
  4. package/dist/json/tags.json +4 -0
  5. package/dist/json/web-types.json +5963 -5923
  6. package/dist/vuetify-labs.cjs +125 -81
  7. package/dist/vuetify-labs.css +6900 -6889
  8. package/dist/vuetify-labs.d.ts +117 -59
  9. package/dist/vuetify-labs.esm.js +126 -82
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +125 -81
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +117 -77
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +3658 -3647
  16. package/dist/vuetify.d.ts +117 -59
  17. package/dist/vuetify.esm.js +117 -77
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +117 -77
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +43 -39
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/components/VBadge/VBadge.css +10 -0
  25. package/lib/components/VBadge/VBadge.sass +9 -0
  26. package/lib/components/VBtn/VBtn.js +1 -1
  27. package/lib/components/VBtn/VBtn.js.map +1 -1
  28. package/lib/components/VChip/VChip.js +13 -2
  29. package/lib/components/VChip/VChip.js.map +1 -1
  30. package/lib/components/VCombobox/VCombobox.d.ts +13 -0
  31. package/lib/components/VCombobox/VCombobox.js +3 -1
  32. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  33. package/lib/components/VDataTable/VDataTableGroupHeaderRow.d.ts +29 -0
  34. package/lib/components/VDataTable/VDataTableGroupHeaderRow.js +4 -1
  35. package/lib/components/VDataTable/VDataTableGroupHeaderRow.js.map +1 -1
  36. package/lib/components/VDataTable/VDataTableHeaders.d.ts +29 -0
  37. package/lib/components/VDataTable/VDataTableHeaders.js +3 -0
  38. package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
  39. package/lib/components/VDataTable/VDataTableRow.d.ts +29 -0
  40. package/lib/components/VDataTable/VDataTableRow.js +3 -0
  41. package/lib/components/VDataTable/VDataTableRow.js.map +1 -1
  42. package/lib/components/VDataTable/VDataTableRows.d.ts +29 -0
  43. package/lib/components/VDataTable/VDataTableRows.js +4 -3
  44. package/lib/components/VDataTable/VDataTableRows.js.map +1 -1
  45. package/lib/components/VDialog/VDialog.js +29 -11
  46. package/lib/components/VDialog/VDialog.js.map +1 -1
  47. package/lib/components/VDialog/__test__/VDialog.spec.browser.js +41 -0
  48. package/lib/components/VDialog/__test__/VDialog.spec.browser.js.map +1 -1
  49. package/lib/components/VDivider/VDivider.css +1 -0
  50. package/lib/components/VDivider/VDivider.sass +1 -0
  51. package/lib/components/VFileInput/VFileInput.js +2 -1
  52. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  53. package/lib/components/VKbd/_variables.scss +3 -1
  54. package/lib/components/VList/VListItem.js +1 -1
  55. package/lib/components/VList/VListItem.js.map +1 -1
  56. package/lib/components/VTable/VTable.js +20 -32
  57. package/lib/components/VTable/VTable.js.map +1 -1
  58. package/lib/components/VTreeview/VTreeviewChildren.js +1 -1
  59. package/lib/components/VTreeview/VTreeviewChildren.js.map +1 -1
  60. package/lib/composables/group.d.ts +2 -0
  61. package/lib/composables/group.js +15 -9
  62. package/lib/composables/group.js.map +1 -1
  63. package/lib/entry-bundler.js +1 -1
  64. package/lib/framework.d.ts +59 -59
  65. package/lib/framework.js +1 -1
  66. package/lib/labs/VCalendar/VCalendar.js +7 -3
  67. package/lib/labs/VCalendar/VCalendar.js.map +1 -1
  68. package/lib/labs/VCalendar/composables/calendarWithEvents.js +7 -4
  69. package/lib/labs/VCalendar/composables/calendarWithEvents.js.map +1 -1
  70. package/lib/labs/VFileUpload/VFileUpload.js +2 -1
  71. package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
  72. package/lib/labs/rules/rules.js +3 -3
  73. package/lib/labs/rules/rules.js.map +1 -1
  74. package/lib/util/animation.js +1 -1
  75. package/lib/util/animation.js.map +1 -1
  76. package/lib/util/box.d.ts +1 -1
  77. package/lib/util/box.js +19 -14
  78. package/lib/util/box.js.map +1 -1
  79. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"VCalendar.js","names":["VCalendarCategory","VCalendarDaily","VCalendarWeekly","makeCalendarBaseProps","makeCalendarWithEventsProps","useCalendarWithEvents","forwardRefs","computed","onMounted","onUpdated","ref","watch","getParsedCategories","copyTimestamp","DAY_MIN","DAYS_IN_MONTH_MAX","DAYS_IN_WEEK","getEndOfMonth","getStartOfMonth","nextDay","prevDay","relativeDays","timestampToDate","updateFormatted","updateRelative","updateWeekday","validateTimestamp","genericComponent","useRender","VCalendar","name","props","modelValue","type","String","Number","Date","validate","categoryDays","default","x","isFinite","parseInt","categories","Array","categoryText","Function","maxDays","categoryHideDynamic","Boolean","categoryShowAll","categoryForInvalid","setup","_ref","slots","attrs","emit","root","base","lastStart","lastEnd","parsedCategoryDays","parsedCategories","renderProps","around","parsedValue","value","component","start","end","getStartOfWeek","getEndOfWeek","parsedStart","parsedEnd","days","getCategoryList","Error","eventWeekdays","effectiveWeekdays","categoryMode","monthLongFormatter","getFormatter","timeZone","month","monthShortFormatter","title","spanYears","year","spanMonths","checkChange","date","move","amount","arguments","length","undefined","moved","forward","mover","limit","times","day","now","getTime","next","prev","noEvents","categoryMap","reduce","map","category","index","categoryName","count","categoryLength","parsedEvents","forEach","ev","filter","hasOwnProperty","updateEventVisibility","window","requestAnimationFrame","Component","_withDirectives","_createVNode","_mergeProps","filterProps","onClick:date","e","getScopedSlots","_resolveDirective","quiet"],"sources":["../../../src/labs/VCalendar/VCalendar.tsx"],"sourcesContent":["// Styles\nimport './VCalendarCategory.sass'\nimport './VCalendarDaily.sass'\nimport './VCalendarWeekly.sass'\n\n// Components\nimport { VCalendarCategory } from './VCalendarCategory'\nimport { VCalendarDaily } from './VCalendarDaily'\nimport { VCalendarWeekly } from './VCalendarWeekly'\n\n// Composables\nimport { makeCalendarBaseProps } from './composables/calendarBase'\nimport { makeCalendarWithEventsProps, useCalendarWithEvents } from './composables/calendarWithEvents'\nimport { forwardRefs } from '@/composables/forwardRefs'\n\n// Utilities\nimport { computed, onMounted, onUpdated, ref, watch } from 'vue'\nimport { getParsedCategories } from './util/parser'\nimport {\n copyTimestamp,\n DAY_MIN,\n DAYS_IN_MONTH_MAX,\n DAYS_IN_WEEK,\n getEndOfMonth,\n getStartOfMonth,\n nextDay,\n prevDay,\n relativeDays,\n timestampToDate,\n updateFormatted,\n updateRelative,\n updateWeekday,\n validateTimestamp,\n} from './util/timestamp'\nimport { genericComponent, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type {\n CalendarCategory, CalendarCategoryTextFunction,\n CalendarDayBodySlotScope,\n CalendarDaySlotScope, CalendarEvent, CalendarEventParsed,\n CalendarTimestamp,\n} from './types'\nimport type { EventProp, GenericProps, JSXComponent } from '@/util'\n\n// Types\ninterface VCalendarRenderProps {\n start: CalendarTimestamp\n end: CalendarTimestamp\n component: JSXComponent & { filterProps: <T>(props: T) => Partial<T> }\n maxDays: number\n categories: CalendarCategory[]\n}\n\ninterface EventSlotScope {\n event: CalendarEvent\n outside: boolean\n singline: boolean\n overlapsNoon: boolean\n formatTime: (withTime: CalendarTimestamp, ampm: boolean) => string\n timeSummary: () => string\n eventSummary: () => JSX.Element\n eventParsed: CalendarEventParsed\n day: CalendarDaySlotScope\n start: boolean\n end: boolean\n timed: boolean\n}\n\ninterface DaySlotScope extends CalendarTimestamp {\n outside: boolean\n index: number\n week: CalendarTimestamp[]\n}\n\ninterface DayHeaderSlotScope extends CalendarTimestamp {\n index: number\n week: CalendarTimestamp[]\n}\n\ninterface CalendarDayCategorySlotScope extends CalendarDayBodySlotScope {\n category: CalendarCategory\n}\n\nexport const VCalendar = genericComponent<new (\n props: {\n [key: `on${Capitalize<string>}:date`]: EventProp<[Event, CalendarTimestamp]>\n [key: `on${Capitalize<string>}:dayCategory`]: EventProp<[Event, CalendarDayCategorySlotScope]>\n [key: `on${Capitalize<string>}:day`]: EventProp<[Event, CalendarDayBodySlotScope]>\n [key: `on${Capitalize<string>}:event`]: EventProp<[Event, EventSlotScope]>\n [key: `on${Capitalize<string>}:interval`]: EventProp<[Event, CalendarTimestamp]>\n [key: `on${Capitalize<string>}:more`]: EventProp<[Event, CalendarDaySlotScope]>\n [key: `on${Capitalize<string>}:timeCategory`]: EventProp<[Event, CalendarDayCategorySlotScope]>\n [key: `on${Capitalize<string>}:time`]: EventProp<[Event, CalendarDayBodySlotScope]>\n },\n slots: {\n 'category': CalendarDayCategorySlotScope\n 'day': DaySlotScope\n 'day-body': CalendarDayBodySlotScope\n 'day-header': DayHeaderSlotScope\n 'day-label': CalendarTimestamp\n 'day-label-header': CalendarTimestamp\n 'day-month': CalendarTimestamp\n 'event': EventSlotScope\n 'interval': CalendarDayCategorySlotScope\n 'interval-header': never\n },\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VCalendar',\n\n props: {\n modelValue: {\n type: [String, Number, Date] as PropType<string | number | Date>,\n validate: validateTimestamp,\n },\n categoryDays: {\n type: [Number, String],\n default: 1,\n validate: (x: any) => isFinite(parseInt(x)) && parseInt(x) > 0,\n },\n categories: {\n type: [Array, String] as PropType<CalendarCategory[] | string>,\n default: '',\n },\n categoryText: {\n type: [String, Function] as PropType<string | CalendarCategoryTextFunction>,\n },\n maxDays: {\n type: Number,\n default: 7,\n },\n categoryHideDynamic: {\n type: Boolean,\n },\n categoryShowAll: {\n type: Boolean,\n },\n categoryForInvalid: {\n type: String,\n default: '',\n },\n\n ...makeCalendarBaseProps(),\n ...makeCalendarWithEventsProps(),\n },\n\n setup (props, { slots, attrs, emit }) {\n const root = ref<VCalendarWeekly | VCalendarDaily | VCalendarCategory>()\n const base = useCalendarWithEvents(props, slots, attrs)\n\n const lastStart = ref<CalendarTimestamp | null>(null)\n const lastEnd = ref<CalendarTimestamp | null>(null)\n\n const parsedCategoryDays = computed((): number => {\n return parseInt(String(props.categoryDays)) || 1\n })\n\n const parsedCategories = computed((): CalendarCategory[] => {\n return getParsedCategories(props.categories, props.categoryText)\n })\n\n const renderProps = computed((): VCalendarRenderProps => {\n const around = base.parsedValue.value\n let component: any = null\n let maxDays = props.maxDays\n let categories = parsedCategories.value\n let start = around\n let end = around\n\n switch (props.type) {\n case 'month':\n component = VCalendarWeekly\n start = getStartOfMonth(around)\n end = getEndOfMonth(around)\n break\n case 'week':\n component = VCalendarDaily\n start = base.getStartOfWeek(around)\n end = base.getEndOfWeek(around)\n maxDays = 7\n break\n case 'day':\n component = VCalendarDaily\n maxDays = 1\n break\n case '4day':\n component = VCalendarDaily\n end = relativeDays(copyTimestamp(end), nextDay, 3)\n updateFormatted(end)\n maxDays = 4\n break\n case 'custom-weekly':\n component = VCalendarWeekly\n start = base.parsedStart.value || around\n end = base.parsedEnd.value\n break\n case 'custom-daily':\n component = VCalendarDaily\n start = base.parsedStart.value || around\n end = base.parsedEnd.value\n break\n case 'category':\n const days = parsedCategoryDays.value\n\n component = VCalendarCategory\n end = relativeDays(copyTimestamp(end), nextDay, days)\n updateFormatted(end)\n maxDays = days\n\n categories = getCategoryList(categories)\n break\n default:\n const type = props.type satisfies never\n throw new Error(`${type} is not a valid Calendar type`)\n }\n\n return { component, start, end, maxDays, categories }\n })\n\n const eventWeekdays = computed((): number[] => {\n return base.effectiveWeekdays.value\n })\n\n const categoryMode = computed((): boolean => {\n return props.type === 'category'\n })\n\n const monthLongFormatter = computed(() => {\n return base.getFormatter({\n timeZone: 'UTC', month: 'long',\n })\n })\n\n const monthShortFormatter = computed(() => {\n return base.getFormatter({\n timeZone: 'UTC', month: 'short',\n })\n })\n\n const title = computed((): string => {\n const { start, end } = renderProps.value\n const spanYears = start.year !== end.year\n const spanMonths = spanYears || start.month !== end.month\n\n if (spanYears) {\n return monthShortFormatter.value(start, true) + ' ' + start.year + ' - ' + monthShortFormatter.value(end, true) + ' ' + end.year\n }\n\n if (spanMonths) {\n return monthShortFormatter.value(start, true) + ' - ' + monthShortFormatter.value(end, true) + ' ' + end.year\n } else {\n return monthLongFormatter.value(start, false) + ' ' + start.year\n }\n })\n\n function checkChange (): void {\n const { start, end } = renderProps.value\n if (!lastStart.value || !lastEnd.value ||\n start.date !== lastStart.value.date ||\n end.date !== lastEnd.value.date) {\n lastStart.value = start\n lastEnd.value = end\n emit('change', { start, end })\n }\n }\n\n function move (amount = 1): void {\n const moved = copyTimestamp(base.parsedValue.value)\n const forward = amount > 0\n const mover = forward ? nextDay : prevDay\n const limit = forward ? DAYS_IN_MONTH_MAX : DAY_MIN\n let times = forward ? amount : -amount\n\n while (--times >= 0) {\n switch (props.type) {\n case 'month':\n moved.day = limit\n mover(moved)\n break\n case 'week':\n relativeDays(moved, mover, DAYS_IN_WEEK)\n break\n case 'day':\n relativeDays(moved, mover, 1)\n break\n case '4day':\n relativeDays(moved, mover, 4)\n break\n case 'category':\n relativeDays(moved, mover, parsedCategoryDays.value)\n break\n }\n }\n\n updateWeekday(moved)\n updateFormatted(moved)\n updateRelative(moved, base.times.now)\n\n if (props.modelValue instanceof Date) {\n emit('update:modelValue', timestampToDate(moved))\n } else if (typeof props.modelValue === 'number') {\n emit('update:modelValue', timestampToDate(moved).getTime())\n } else {\n emit('update:modelValue', moved.date)\n }\n\n emit('moved', moved)\n }\n\n function next (amount = 1): void {\n move(amount)\n }\n\n function prev (amount = 1): void {\n move(-amount)\n }\n\n function getCategoryList (categories: CalendarCategory[]): CalendarCategory[] {\n if (!base.noEvents.value) {\n const categoryMap: any = categories.reduce((map: any, category, index) => {\n if (typeof category === 'object' && category.categoryName) map[category.categoryName] = { index, count: 0 }\n else if (typeof category === 'string') map[category] = { index, count: 0 }\n return map\n }, {})\n\n if (!props.categoryHideDynamic || !props.categoryShowAll) {\n let categoryLength = categories.length\n\n base.parsedEvents.value.forEach(ev => {\n let category = ev.category\n\n if (typeof category !== 'string') {\n category = props.categoryForInvalid\n }\n\n if (!category) {\n return\n }\n\n if (category in categoryMap) {\n categoryMap[category].count++\n } else if (!props.categoryHideDynamic) {\n categoryMap[category] = {\n index: categoryLength++,\n count: 1,\n }\n }\n })\n }\n\n if (!props.categoryShowAll) {\n for (const category in categoryMap) {\n if (categoryMap[category].count === 0) {\n delete categoryMap[category]\n }\n }\n }\n\n categories = categories.filter((category: CalendarCategory) => {\n if (typeof category === 'object' && category.categoryName) {\n return categoryMap.hasOwnProperty(category.categoryName)\n } else if (typeof category === 'string') {\n return categoryMap.hasOwnProperty(category)\n }\n return false\n })\n }\n return categories\n }\n\n watch(renderProps, checkChange)\n\n onMounted(() => {\n base.updateEventVisibility()\n checkChange()\n })\n\n onUpdated(() => {\n window.requestAnimationFrame(base.updateEventVisibility)\n })\n\n useRender(() => {\n const { start, end, maxDays, component: Component, categories } = renderProps.value\n return (\n <Component\n ref={ root }\n class={['v-calendar', { 'v-calendar-events': !base.noEvents.value }]}\n v-resize_quiet={ base.updateEventVisibility }\n role=\"grid\"\n { ...Component.filterProps(props) }\n start={ start.date }\n end={ end.date }\n maxDays={ maxDays }\n weekdays={ base.effectiveWeekdays.value }\n categories={ categories }\n onClick:date={ (e: MouseEvent, day: CalendarTimestamp) => {\n if (attrs['onUpdate:modelValue']) emit('update:modelValue', day.date)\n }}\n v-slots={ base.getScopedSlots() }\n />\n )\n })\n\n return forwardRefs({\n ...base,\n lastStart,\n lastEnd,\n parsedCategoryDays,\n renderProps,\n eventWeekdays,\n categoryMode,\n title,\n monthLongFormatter,\n monthShortFormatter,\n parsedCategories,\n checkChange,\n move,\n next,\n prev,\n getCategoryList,\n }, root)\n },\n})\n\nexport type VCalendar = InstanceType<typeof VCalendar>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VCalendar.js","names":["VCalendarCategory","VCalendarDaily","VCalendarWeekly","makeCalendarBaseProps","makeCalendarWithEventsProps","useCalendarWithEvents","forwardRefs","vResize","computed","onMounted","onUpdated","ref","watch","getParsedCategories","copyTimestamp","DAY_MIN","DAYS_IN_MONTH_MAX","DAYS_IN_WEEK","getEndOfMonth","getStartOfMonth","nextDay","prevDay","relativeDays","timestampToDate","updateFormatted","updateRelative","updateWeekday","validateTimestamp","genericComponent","useRender","VCalendar","name","directives","props","modelValue","type","String","Number","Date","validate","categoryDays","default","x","isFinite","parseInt","categories","Array","categoryText","Function","maxDays","categoryHideDynamic","Boolean","categoryShowAll","categoryForInvalid","setup","_ref","slots","attrs","emit","root","base","lastStart","lastEnd","parsedCategoryDays","parsedCategories","renderProps","around","parsedValue","value","component","start","end","getStartOfWeek","getEndOfWeek","parsedStart","parsedEnd","days","getCategoryList","Error","eventWeekdays","effectiveWeekdays","categoryMode","monthLongFormatter","getFormatter","timeZone","month","monthShortFormatter","title","spanYears","year","spanMonths","checkChange","date","move","amount","arguments","length","undefined","moved","forward","mover","limit","times","day","now","getTime","next","prev","noEvents","categoryMap","reduce","map","category","index","categoryName","count","categoryLength","parsedEvents","forEach","ev","filter","hasOwnProperty","updateEventVisibility","window","requestAnimationFrame","Component","_withDirectives","_createVNode","_mergeProps","filterProps","onClick:date","e","getScopedSlots","quiet"],"sources":["../../../src/labs/VCalendar/VCalendar.tsx"],"sourcesContent":["// Styles\nimport './VCalendarCategory.sass'\nimport './VCalendarDaily.sass'\nimport './VCalendarWeekly.sass'\n\n// Components\nimport { VCalendarCategory } from './VCalendarCategory'\nimport { VCalendarDaily } from './VCalendarDaily'\nimport { VCalendarWeekly } from './VCalendarWeekly'\n\n// Composables\nimport { makeCalendarBaseProps } from './composables/calendarBase'\nimport { makeCalendarWithEventsProps, useCalendarWithEvents } from './composables/calendarWithEvents'\nimport { forwardRefs } from '@/composables/forwardRefs'\n\n// Directives\nimport vResize from '@/directives/resize'\n\n// Utilities\nimport { computed, onMounted, onUpdated, ref, watch } from 'vue'\nimport { getParsedCategories } from './util/parser'\nimport {\n copyTimestamp,\n DAY_MIN,\n DAYS_IN_MONTH_MAX,\n DAYS_IN_WEEK,\n getEndOfMonth,\n getStartOfMonth,\n nextDay,\n prevDay,\n relativeDays,\n timestampToDate,\n updateFormatted,\n updateRelative,\n updateWeekday,\n validateTimestamp,\n} from './util/timestamp'\nimport { genericComponent, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type {\n CalendarCategory, CalendarCategoryTextFunction,\n CalendarDayBodySlotScope,\n CalendarDaySlotScope, CalendarEvent, CalendarEventParsed,\n CalendarTimestamp,\n} from './types'\nimport type { EventProp, GenericProps, JSXComponent } from '@/util'\n\n// Types\ninterface VCalendarRenderProps {\n start: CalendarTimestamp\n end: CalendarTimestamp\n component: JSXComponent & { filterProps: <T>(props: T) => Partial<T> }\n maxDays: number\n categories: CalendarCategory[]\n}\n\ninterface EventSlotScope {\n event: CalendarEvent\n outside: boolean\n singline: boolean\n overlapsNoon: boolean\n formatTime: (withTime: CalendarTimestamp, ampm: boolean) => string\n timeSummary: () => string\n eventSummary: () => JSX.Element\n eventParsed: CalendarEventParsed\n day: CalendarDaySlotScope\n start: boolean\n end: boolean\n timed: boolean\n}\n\ninterface DaySlotScope extends CalendarTimestamp {\n outside: boolean\n index: number\n week: CalendarTimestamp[]\n}\n\ninterface DayHeaderSlotScope extends CalendarTimestamp {\n index: number\n week: CalendarTimestamp[]\n}\n\ninterface CalendarDayCategorySlotScope extends CalendarDayBodySlotScope {\n category: CalendarCategory\n}\n\nexport const VCalendar = genericComponent<new (\n props: {\n [key: `on${Capitalize<string>}:date`]: EventProp<[Event, CalendarTimestamp]>\n [key: `on${Capitalize<string>}:dayCategory`]: EventProp<[Event, CalendarDayCategorySlotScope]>\n [key: `on${Capitalize<string>}:day`]: EventProp<[Event, CalendarDayBodySlotScope]>\n [key: `on${Capitalize<string>}:event`]: EventProp<[Event, EventSlotScope]>\n [key: `on${Capitalize<string>}:interval`]: EventProp<[Event, CalendarTimestamp]>\n [key: `on${Capitalize<string>}:more`]: EventProp<[Event, CalendarDaySlotScope]>\n [key: `on${Capitalize<string>}:timeCategory`]: EventProp<[Event, CalendarDayCategorySlotScope]>\n [key: `on${Capitalize<string>}:time`]: EventProp<[Event, CalendarDayBodySlotScope]>\n },\n slots: {\n 'category': CalendarDayCategorySlotScope\n 'day': DaySlotScope\n 'day-body': CalendarDayBodySlotScope\n 'day-header': DayHeaderSlotScope\n 'day-label': CalendarTimestamp\n 'day-label-header': CalendarTimestamp\n 'day-month': CalendarTimestamp\n 'event': EventSlotScope\n 'interval': CalendarDayCategorySlotScope\n 'interval-header': never\n },\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VCalendar',\n\n directives: { vResize },\n\n props: {\n modelValue: {\n type: [String, Number, Date] as PropType<string | number | Date>,\n validate: validateTimestamp,\n },\n categoryDays: {\n type: [Number, String],\n default: 1,\n validate: (x: any) => isFinite(parseInt(x)) && parseInt(x) > 0,\n },\n categories: {\n type: [Array, String] as PropType<CalendarCategory[] | string>,\n default: '',\n },\n categoryText: {\n type: [String, Function] as PropType<string | CalendarCategoryTextFunction>,\n },\n maxDays: {\n type: Number,\n default: 7,\n },\n categoryHideDynamic: {\n type: Boolean,\n },\n categoryShowAll: {\n type: Boolean,\n },\n categoryForInvalid: {\n type: String,\n default: '',\n },\n\n ...makeCalendarBaseProps(),\n ...makeCalendarWithEventsProps(),\n },\n\n setup (props, { slots, attrs, emit }) {\n const root = ref<VCalendarWeekly | VCalendarDaily | VCalendarCategory>()\n const base = useCalendarWithEvents(props, slots, attrs)\n\n const lastStart = ref<CalendarTimestamp | null>(null)\n const lastEnd = ref<CalendarTimestamp | null>(null)\n\n const parsedCategoryDays = computed((): number => {\n return parseInt(String(props.categoryDays)) || 1\n })\n\n const parsedCategories = computed((): CalendarCategory[] => {\n return getParsedCategories(props.categories, props.categoryText)\n })\n\n const renderProps = computed((): VCalendarRenderProps => {\n const around = base.parsedValue.value\n let component: any = null\n let maxDays = props.maxDays\n let categories = parsedCategories.value\n let start = around\n let end = around\n\n switch (props.type) {\n case 'month':\n component = VCalendarWeekly\n start = getStartOfMonth(around)\n end = getEndOfMonth(around)\n break\n case 'week':\n component = VCalendarDaily\n start = base.getStartOfWeek(around)\n end = base.getEndOfWeek(around)\n maxDays = 7\n break\n case 'day':\n component = VCalendarDaily\n maxDays = 1\n break\n case '4day':\n component = VCalendarDaily\n end = relativeDays(copyTimestamp(end), nextDay, 3)\n updateFormatted(end)\n maxDays = 4\n break\n case 'custom-weekly':\n component = VCalendarWeekly\n start = base.parsedStart.value || around\n end = base.parsedEnd.value\n break\n case 'custom-daily':\n component = VCalendarDaily\n start = base.parsedStart.value || around\n end = base.parsedEnd.value\n break\n case 'category':\n const days = parsedCategoryDays.value\n\n component = VCalendarCategory\n end = relativeDays(copyTimestamp(end), nextDay, days)\n updateFormatted(end)\n maxDays = days\n\n categories = getCategoryList(categories)\n break\n default:\n const type = props.type satisfies never\n throw new Error(`${type} is not a valid Calendar type`)\n }\n\n return { component, start, end, maxDays, categories }\n })\n\n const eventWeekdays = computed((): number[] => {\n return base.effectiveWeekdays.value\n })\n\n const categoryMode = computed((): boolean => {\n return props.type === 'category'\n })\n\n const monthLongFormatter = computed(() => {\n return base.getFormatter({\n timeZone: 'UTC', month: 'long',\n })\n })\n\n const monthShortFormatter = computed(() => {\n return base.getFormatter({\n timeZone: 'UTC', month: 'short',\n })\n })\n\n const title = computed((): string => {\n const { start, end } = renderProps.value\n const spanYears = start.year !== end.year\n const spanMonths = spanYears || start.month !== end.month\n\n if (spanYears) {\n return monthShortFormatter.value(start, true) + ' ' + start.year + ' - ' + monthShortFormatter.value(end, true) + ' ' + end.year\n }\n\n if (spanMonths) {\n return monthShortFormatter.value(start, true) + ' - ' + monthShortFormatter.value(end, true) + ' ' + end.year\n } else {\n return monthLongFormatter.value(start, false) + ' ' + start.year\n }\n })\n\n function checkChange (): void {\n const { start, end } = renderProps.value\n if (!lastStart.value || !lastEnd.value ||\n start.date !== lastStart.value.date ||\n end.date !== lastEnd.value.date) {\n lastStart.value = start\n lastEnd.value = end\n emit('change', { start, end })\n }\n }\n\n function move (amount = 1): void {\n const moved = copyTimestamp(base.parsedValue.value)\n const forward = amount > 0\n const mover = forward ? nextDay : prevDay\n const limit = forward ? DAYS_IN_MONTH_MAX : DAY_MIN\n let times = forward ? amount : -amount\n\n while (--times >= 0) {\n switch (props.type) {\n case 'month':\n moved.day = limit\n mover(moved)\n break\n case 'week':\n relativeDays(moved, mover, DAYS_IN_WEEK)\n break\n case 'day':\n relativeDays(moved, mover, 1)\n break\n case '4day':\n relativeDays(moved, mover, 4)\n break\n case 'category':\n relativeDays(moved, mover, parsedCategoryDays.value)\n break\n }\n }\n\n updateWeekday(moved)\n updateFormatted(moved)\n updateRelative(moved, base.times.now)\n\n if (props.modelValue instanceof Date) {\n emit('update:modelValue', timestampToDate(moved))\n } else if (typeof props.modelValue === 'number') {\n emit('update:modelValue', timestampToDate(moved).getTime())\n } else {\n emit('update:modelValue', moved.date)\n }\n\n emit('moved', moved)\n }\n\n function next (amount = 1): void {\n move(amount)\n }\n\n function prev (amount = 1): void {\n move(-amount)\n }\n\n function getCategoryList (categories: CalendarCategory[]): CalendarCategory[] {\n if (!base.noEvents.value) {\n const categoryMap: any = categories.reduce((map: any, category, index) => {\n if (typeof category === 'object' && category.categoryName) map[category.categoryName] = { index, count: 0 }\n else if (typeof category === 'string') map[category] = { index, count: 0 }\n return map\n }, {})\n\n if (!props.categoryHideDynamic || !props.categoryShowAll) {\n let categoryLength = categories.length\n\n base.parsedEvents.value.forEach(ev => {\n let category = ev.category\n\n if (typeof category !== 'string') {\n category = props.categoryForInvalid\n }\n\n if (!category) {\n return\n }\n\n if (category in categoryMap) {\n categoryMap[category].count++\n } else if (!props.categoryHideDynamic) {\n categoryMap[category] = {\n index: categoryLength++,\n count: 1,\n }\n }\n })\n }\n\n if (!props.categoryShowAll) {\n for (const category in categoryMap) {\n if (categoryMap[category].count === 0) {\n delete categoryMap[category]\n }\n }\n }\n\n categories = categories.filter((category: CalendarCategory) => {\n if (typeof category === 'object' && category.categoryName) {\n return categoryMap.hasOwnProperty(category.categoryName)\n } else if (typeof category === 'string') {\n return categoryMap.hasOwnProperty(category)\n }\n return false\n })\n }\n return categories\n }\n\n watch(renderProps, checkChange)\n\n onMounted(() => {\n base.updateEventVisibility()\n checkChange()\n })\n\n onUpdated(() => {\n window.requestAnimationFrame(base.updateEventVisibility)\n })\n\n useRender(() => {\n const { start, end, maxDays, component: Component, categories } = renderProps.value\n return (\n <Component\n ref={ root }\n class={['v-calendar', { 'v-calendar-events': !base.noEvents.value }]}\n v-resize_quiet={ base.updateEventVisibility }\n role=\"grid\"\n { ...Component.filterProps(props) }\n start={ start.date }\n end={ end.date }\n maxDays={ maxDays }\n weekdays={ base.effectiveWeekdays.value }\n categories={ categories }\n onClick:date={ (e: MouseEvent, day: CalendarTimestamp) => {\n if (attrs['onUpdate:modelValue']) emit('update:modelValue', day.date)\n }}\n v-slots={ base.getScopedSlots() }\n />\n )\n })\n\n return forwardRefs({\n ...base,\n lastStart,\n lastEnd,\n parsedCategoryDays,\n renderProps,\n eventWeekdays,\n categoryMode,\n title,\n monthLongFormatter,\n monthShortFormatter,\n parsedCategories,\n checkChange,\n move,\n next,\n prev,\n getCategoryList,\n }, root)\n },\n})\n\nexport type VCalendar = InstanceType<typeof VCalendar>\n"],"mappings":"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","ignoreList":[]}
@@ -1,9 +1,10 @@
1
- import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveDirective as _resolveDirective, mergeProps as _mergeProps, withDirectives as _withDirectives } from "vue";
1
+ import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, mergeProps as _mergeProps, withDirectives as _withDirectives } from "vue";
2
2
  // Styles
3
3
  import "./calendarWithEvents.css";
4
4
 
5
5
  // Composables
6
- import { useCalendarBase } from "./calendarBase.js"; // Utilities
6
+ import { useCalendarBase } from "./calendarBase.js"; // Directives
7
+ import vRipple from "../../../directives/ripple/index.js"; // Utilities
7
8
  import { computed, ref } from 'vue';
8
9
  import { CalendarEventOverlapModes } from "../modes/index.js";
9
10
  import { isEventHiddenOn, isEventOn, isEventOverlapping, isEventStart, parseEvent } from "../util/events.js";
@@ -13,6 +14,8 @@ import { getPrefixedEventHandlers, propsFactory } from "../../../util/index.js";
13
14
  const WIDTH_FULL = 100;
14
15
  const WIDTH_START = 95;
15
16
  const MINUTES_IN_DAY = 1440;
17
+ // Prevent import from being erased
18
+ void vRipple;
16
19
  export const makeCalendarWithEventsProps = propsFactory({
17
20
  events: {
18
21
  type: Array,
@@ -310,7 +313,7 @@ export function useCalendarWithEvents(props, slots, attrs) {
310
313
  }), events, data, {
311
314
  "ref_for": true,
312
315
  "ref": eventsRef
313
- }), [slot?.(scope) ?? genName(eventSummary)]), [[_resolveDirective("ripple"), props.eventRipple ?? true]]);
316
+ }), [slot?.(scope) ?? genName(eventSummary)]), [[vRipple, props.eventRipple ?? true]]);
314
317
  }
315
318
  function genName(eventSummary) {
316
319
  return _createElementVNode("div", {
@@ -348,7 +351,7 @@ export function useCalendarWithEvents(props, slots, attrs) {
348
351
  },
349
352
  "ref_for": true,
350
353
  "ref": eventsRef
351
- }, events), null), [[_resolveDirective("ripple"), props.eventRipple ?? true]]);
354
+ }, events), null), [[vRipple, props.eventRipple ?? true]]);
352
355
  }
353
356
  function getVisibleEvents() {
354
357
  const days = base.days.value;
@@ -1 +1 @@
1
- {"version":3,"file":"calendarWithEvents.js","names":["useCalendarBase","computed","ref","CalendarEventOverlapModes","isEventHiddenOn","isEventOn","isEventOverlapping","isEventStart","parseEvent","diffMinutes","getDayIdentifier","getPrefixedEventHandlers","propsFactory","WIDTH_FULL","WIDTH_START","MINUTES_IN_DAY","makeCalendarWithEventsProps","events","type","Array","default","eventStart","String","eventEnd","eventTimed","Function","eventCategory","eventHeight","Number","eventColor","eventTextColor","eventName","eventOverlapThreshold","eventOverlapMode","validate","mode","eventMore","Boolean","eventMoreText","eventRipple","Object","eventMarginBottom","useCalendarWithEvents","props","slots","attrs","base","noEvents","isArray","length","categoryMode","eventTimedFunction","event","eventCategoryFunction","parsedEvents","map","index","value","parsedEventOverlapThreshold","parseInt","eventTextColorFunction","eventNameFunction","timedEvent","input","eventModeFunction","eventWeekdays","effectiveWeekdays","eventColorFunction","e","color","eventsRef","updateEventVisibility","eventsMap","getEventsMap","date","parent","more","parentBounds","getBoundingClientRect","last","eventsSorted","bottom","sort","a","b","hidden","i","hide","style","display","innerHTML","locale","t","elements","forEach","el","getAttribute","parentElement","push","genDayEvent","_ref","day","dayIdentifier","week","start","startIdentifier","end","endIdentifier","width","weekdayIdentifier","scope","eventParsed","timed","genEvent","class","height","marginBottom","genTimedEvent","_ref2","left","endDelta","timeDelta","startDelta","top","timeToY","Math","max","scopeInput","data","slot","text","background","overlapsNoon","hour","singline","formatTime","withTime","ampm","formatter","getFormatter","timeZone","minute","undefined","timeSummary","eventSummary","name","hasTime","time","delimiter","_createElementVNode","_createTextVNode","outside","nativeEvent","_withDirectives","_mergeProps","getColorProps","genName","_resolveDirective","genPlaceholder","genMore","getVisibleEvents","days","filter","isEventForCategory","category","categoryName","getEventsForDay","identifier","firstWeekday","getEventsForDayAll","allDay","getEventsForDayTimed","getScopedSlots","isNode","getSlotChildren","getter","mapper","visuals","visual","children","column","mapped","concat"],"sources":["../../../../src/labs/VCalendar/composables/calendarWithEvents.tsx"],"sourcesContent":["// Styles\nimport './calendarWithEvents.sass'\n\n// Composables\nimport { useCalendarBase } from './calendarBase'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { CalendarEventOverlapModes } from '../modes'\nimport {\n isEventHiddenOn,\n isEventOn,\n isEventOverlapping,\n isEventStart,\n parseEvent,\n} from '../util/events'\nimport { diffMinutes, getDayIdentifier } from '../util/timestamp'\nimport { getPrefixedEventHandlers, propsFactory } from '@/util'\n\n// Types\nimport type { PropType, VNode } from 'vue'\nimport type { CalendarBaseProps } from './calendarBase'\nimport type {\n CalendarCategory,\n CalendarDayBodySlotScope,\n CalendarDaySlotScope,\n CalendarEvent,\n CalendarEventCategoryFunction,\n CalendarEventColorFunction,\n CalendarEventNameFunction,\n CalendarEventOverlapMode,\n CalendarEventParsed,\n CalendarEventTimedFunction,\n CalendarEventVisual,\n CalendarTimestamp,\n} from '../types'\n\n// Constants\nconst WIDTH_FULL = 100\nconst WIDTH_START = 95\nconst MINUTES_IN_DAY = 1440\n\ntype VEventGetter<D> = (day: D) => CalendarEventParsed[]\ntype VEventVisualToNode<D> = (visual: CalendarEventVisual, day: D) => VNode | false\ntype VEventsToNodes = <D extends CalendarDaySlotScope>(\n day: D,\n getter: VEventGetter<D>,\n mapper: VEventVisualToNode<D>,\n timed: boolean) => VNode[] | undefined\n\ntype VDailyEventsMap = {\n [date: string]: {\n parent: HTMLElement\n more: HTMLElement | null\n events: HTMLElement[]\n }\n}\n\nexport interface VEventScopeInput {\n eventParsed: CalendarEventParsed\n day: CalendarDaySlotScope\n start: boolean\n end: boolean\n timed: boolean\n}\n\nexport const makeCalendarWithEventsProps = propsFactory({\n events: {\n type: Array as PropType<CalendarEvent[]>,\n default: () => [],\n },\n eventStart: {\n type: String,\n default: 'start',\n },\n eventEnd: {\n type: String,\n default: 'end',\n },\n eventTimed: {\n type: [String, Function] as PropType<string | CalendarEventTimedFunction>,\n default: 'timed',\n },\n eventCategory: {\n type: [String, Function] as PropType<string | CalendarEventCategoryFunction>,\n default: 'category',\n },\n eventHeight: {\n type: Number,\n default: 20,\n },\n eventColor: {\n type: [String, Function] as PropType<string | CalendarEventColorFunction>,\n default: 'primary',\n },\n eventTextColor: {\n type: [String, Function] as PropType<string | CalendarEventColorFunction>,\n },\n eventName: {\n type: [String, Function] as PropType<string | CalendarEventNameFunction>,\n default: 'name',\n },\n eventOverlapThreshold: {\n type: [String, Number],\n default: 60,\n },\n eventOverlapMode: {\n type: [String, Function] as PropType<'stack' | 'column' | CalendarEventOverlapMode>,\n default: 'stack',\n validate: (mode: any) => mode in CalendarEventOverlapModes || typeof mode === 'function',\n },\n eventMore: {\n type: Boolean,\n default: true,\n },\n eventMoreText: {\n type: String,\n default: '$vuetify.calendar.moreEvents',\n },\n eventRipple: {\n type: [Boolean, Object],\n default: null,\n },\n eventMarginBottom: {\n type: Number,\n default: 1,\n },\n}, 'VCalendar-events')\n\ninterface CalendarWithEventsProps extends CalendarBaseProps {\n events: CalendarEvent[]\n eventStart: string\n eventEnd: string\n eventTimed: string | CalendarEventTimedFunction\n eventCategory: string | CalendarEventCategoryFunction\n eventHeight: number\n eventColor: string | CalendarEventColorFunction\n eventTextColor: string | CalendarEventColorFunction | undefined\n eventName: string | CalendarEventNameFunction\n eventOverlapThreshold: string | number\n eventOverlapMode: string | CalendarEventOverlapMode\n eventMore: boolean\n eventMoreText: string\n eventRipple: boolean | object | null | undefined\n eventMarginBottom: number\n type: 'month' | 'week' | 'day' | '4day' | 'custom-weekly' | 'custom-daily' | 'category'\n}\n\nexport function useCalendarWithEvents (props: CalendarWithEventsProps, slots: any, attrs: any) {\n const base = useCalendarBase(props)\n\n const noEvents = computed((): boolean => {\n return !Array.isArray(props.events) || props.events.length === 0\n })\n\n const categoryMode = computed((): boolean => {\n return props.type === 'category'\n })\n\n const eventTimedFunction = computed((): CalendarEventTimedFunction => {\n return typeof props.eventTimed === 'function'\n ? props.eventTimed\n : event => !!event[props.eventTimed as string]\n })\n\n const eventCategoryFunction = computed((): CalendarEventCategoryFunction => {\n return typeof props.eventCategory === 'function'\n ? props.eventCategory\n : event => event[props.eventCategory as string]\n })\n\n const parsedEvents = computed((): CalendarEventParsed[] => {\n if (!props.events) return []\n return props.events.map((event, index) => parseEvent(\n event,\n index,\n props.eventStart || '',\n props.eventEnd || '',\n eventTimedFunction.value(event),\n categoryMode.value ? eventCategoryFunction.value(event) : false,\n ))\n })\n\n const parsedEventOverlapThreshold = computed((): number => {\n return parseInt(String(props.eventOverlapThreshold || 0))\n })\n\n const eventTextColorFunction = computed((): CalendarEventColorFunction => {\n return typeof props.eventTextColor === 'function'\n ? props.eventTextColor\n : () => props.eventTextColor as string\n })\n\n const eventNameFunction = computed((): CalendarEventNameFunction => {\n return typeof props.eventName === 'function'\n ? props.eventName\n : (event, timedEvent) => event.input[props.eventName as string] as string || ''\n })\n\n const eventModeFunction = computed((): CalendarEventOverlapMode => {\n return typeof props.eventOverlapMode === 'function'\n ? props.eventOverlapMode\n : CalendarEventOverlapModes[props.eventOverlapMode as keyof typeof CalendarEventOverlapModes]\n })\n\n const eventWeekdays = computed((): number[] => {\n return base.effectiveWeekdays.value\n })\n\n function eventColorFunction (e: CalendarEvent): string | undefined {\n return typeof props.eventColor === 'function'\n ? props.eventColor(e)\n : e.color || props.eventColor\n }\n\n const eventsRef = ref<HTMLElement[]>([])\n\n function updateEventVisibility () {\n if (noEvents.value || !props.eventMore) {\n return\n }\n\n const eventHeight = props.eventHeight || 0\n const eventsMap = getEventsMap()\n\n for (const date in eventsMap) {\n const { parent, events, more } = eventsMap[date]\n if (!more) {\n break\n }\n\n const parentBounds = parent.getBoundingClientRect()\n const last = events.length - 1\n const eventsSorted = events.map(event => ({\n event,\n bottom: event.getBoundingClientRect().bottom,\n })).sort((a, b) => a.bottom - b.bottom)\n let hidden = 0\n\n for (let i = 0; i <= last; i++) {\n const bottom = eventsSorted[i].bottom\n const hide = i === last\n ? (bottom > parentBounds.bottom)\n : (bottom + eventHeight > parentBounds.bottom)\n\n if (hide) {\n eventsSorted[i].event.style.display = 'none'\n hidden++\n }\n }\n\n // TODO: avoid direct DOM manipulation\n if (hidden) {\n more.style.display = ''\n more.innerHTML = base.locale.t(props.eventMoreText, hidden)\n } else {\n more.style.display = 'none'\n }\n }\n }\n\n function getEventsMap (): VDailyEventsMap {\n const eventsMap: VDailyEventsMap = {}\n const elements = eventsRef.value\n\n if (!elements || !elements.length) {\n return eventsMap\n }\n\n elements.forEach(el => {\n const date = el.getAttribute('data-date')\n if (el.parentElement && date) {\n if (!(date in eventsMap)) {\n eventsMap[date] = {\n parent: el.parentElement,\n more: null,\n events: [],\n }\n }\n if (el.getAttribute('data-more')) {\n eventsMap[date].more = el\n } else {\n eventsMap[date].events.push(el)\n el.style.display = ''\n }\n }\n })\n\n return eventsMap\n }\n\n function genDayEvent ({ event }: CalendarEventVisual, day: CalendarDaySlotScope): VNode {\n const eventHeight = props.eventHeight || 0\n const eventMarginBottom = props.eventMarginBottom || 0\n const dayIdentifier = getDayIdentifier(day)\n const week = day.week\n const start = dayIdentifier === event.startIdentifier\n let end = dayIdentifier === event.endIdentifier\n let width = WIDTH_START\n\n if (!categoryMode.value) {\n for (let i = day.index + 1; i < week.length; i++) {\n const weekdayIdentifier = getDayIdentifier(week[i])\n if (event.endIdentifier >= weekdayIdentifier) {\n width += WIDTH_FULL\n end = end || weekdayIdentifier === event.endIdentifier\n } else {\n end = true\n break\n }\n }\n }\n const scope = { eventParsed: event, day, start, end, timed: false }\n\n return genEvent(event, scope, false, {\n class: [\n 'v-event',\n { 'v-event-start': start, 'v-event-end': end },\n ],\n style: {\n height: `${eventHeight}px`,\n width: `${width}%`,\n marginBottom: `${eventMarginBottom}px`,\n },\n 'data-date': day.date,\n })\n }\n\n function genTimedEvent ({ event, left, width }: CalendarEventVisual, day: CalendarDayBodySlotScope): VNode | false {\n const endDelta = day.timeDelta(event.end)\n const startDelta = day.timeDelta(event.start)\n if (\n endDelta === false ||\n startDelta === false ||\n endDelta < 0 ||\n startDelta >= 1 ||\n isEventHiddenOn(event, day)\n ) {\n return false\n }\n\n const dayIdentifier = getDayIdentifier(day)\n const start = event.startIdentifier >= dayIdentifier\n const end = event.endIdentifier > dayIdentifier\n const top = start ? day.timeToY(event.start) : 0\n const bottom = end ? day.timeToY(MINUTES_IN_DAY) : day.timeToY(event.end)\n const height = Math.max(props.eventHeight || 0, bottom - top)\n const scope = { eventParsed: event, day, start, end, timed: true }\n\n return genEvent(event, scope, true, {\n class: 'v-event-timed',\n style: {\n top: `${top}px`,\n height: `${height}px`,\n left: `${left}%`,\n width: `${width}%`,\n },\n })\n }\n\n function genEvent (\n event: CalendarEventParsed,\n scopeInput: VEventScopeInput,\n timedEvent: boolean,\n data: Record<string, unknown>\n ): VNode {\n const slot = slots.event\n const text = eventTextColorFunction.value(event.input)\n const background = eventColorFunction(event.input)\n const overlapsNoon = event.start.hour < 12 && event.end.hour >= 12\n const singline = diffMinutes(event.start, event.end) <= parsedEventOverlapThreshold.value\n const formatTime = (withTime: CalendarTimestamp, ampm: boolean): string => {\n const formatter = base.getFormatter({\n timeZone: 'UTC',\n hour: 'numeric',\n minute: withTime.minute > 0 ? 'numeric' : undefined,\n })\n return formatter(withTime, true)\n }\n\n const timeSummary = () => formatTime(event.start, overlapsNoon) + ' - ' + formatTime(event.end, true)\n\n const eventSummary = () => {\n const name = eventNameFunction.value(event, timedEvent)\n if (event.start.hasTime) {\n if (timedEvent) {\n const time = timeSummary()\n const delimiter = singline ? ', ' : <br />\n\n return (\n <span class=\"v-event-summary\">\n <strong>{ name }</strong>\n { delimiter }\n { time }\n </span>\n )\n } else {\n const time = formatTime(event.start, true)\n\n return (\n <span class=\"v-event-summary\">\n <strong>{ time }</strong> { name }\n </span>\n )\n }\n }\n\n return <span class=\"v-event-summary\">{ name }</span>\n }\n\n const scope = {\n ...scopeInput,\n event: event.input,\n outside: scopeInput.day.outside,\n singline,\n overlapsNoon,\n formatTime,\n timeSummary,\n eventSummary,\n }\n\n const events = getPrefixedEventHandlers(attrs, ':event', (nativeEvent: Event) => ({ ...scope, nativeEvent }))\n\n return (\n <div\n { ...base.getColorProps({ text, background }) }\n { ...events }\n { ...data }\n ref_for\n ref={ eventsRef }\n v-ripple={ props.eventRipple ?? true }\n >\n { slot?.(scope) ?? genName(eventSummary) }\n </div>\n )\n }\n\n function genName (eventSummary: () => string | VNode): VNode {\n return (\n <div class=\"pl-1\">\n { eventSummary() }\n </div>\n )\n }\n\n function genPlaceholder (day: CalendarTimestamp): VNode {\n const height = (props.eventHeight || 0) + (props.eventMarginBottom || 0)\n return (\n <div\n style={{ height: `${height}px` }}\n data-date={ day.date }\n ref_for\n ref={ eventsRef }\n />\n )\n }\n\n function genMore (day: CalendarDaySlotScope): VNode {\n const eventHeight = props.eventHeight || 0\n const eventMarginBottom = props.eventMarginBottom || 0\n const events = getPrefixedEventHandlers(attrs, ':more', (nativeEvent: Event) => ({ nativeEvent, ...day }))\n\n return (\n <div\n class={['v-event-more pl-1', { 'v-outside': day.outside }]}\n data-date={ day.date }\n data-more=\"1\"\n style={{\n display: 'none',\n height: `${eventHeight}px`,\n marginBottom: `${eventMarginBottom}px`,\n }}\n ref_for\n ref={ eventsRef }\n v-ripple={ props.eventRipple ?? true }\n { ...events }\n />\n )\n }\n\n function getVisibleEvents (): CalendarEventParsed[] {\n const days = base.days.value\n const start = getDayIdentifier(days[0])\n const end = getDayIdentifier(days[days.length - 1])\n\n return parsedEvents.value.filter(\n event => isEventOverlapping(event, start, end)\n )\n }\n\n function isEventForCategory (event: CalendarEventParsed, category: CalendarCategory): boolean {\n return !categoryMode.value ||\n (typeof category === 'object' && category.categoryName &&\n category.categoryName === event.category) ||\n (typeof event.category === 'string' && category === event.category) ||\n (typeof event.category !== 'string' && category === null)\n }\n\n function getEventsForDay (day: CalendarDaySlotScope): CalendarEventParsed[] {\n const identifier = getDayIdentifier(day)\n const firstWeekday = eventWeekdays.value[0]\n\n return parsedEvents.value.filter(\n event => isEventStart(event, day, identifier, firstWeekday)\n )\n }\n\n function getEventsForDayAll (day: CalendarDaySlotScope): CalendarEventParsed[] {\n const identifier = getDayIdentifier(day)\n const firstWeekday = eventWeekdays.value[0]\n\n return parsedEvents.value.filter(\n event => event.allDay &&\n (categoryMode.value ? isEventOn(event, identifier) : isEventStart(event, day, identifier, firstWeekday)) &&\n isEventForCategory(event, day.category)\n )\n }\n\n function getEventsForDayTimed (day: CalendarDaySlotScope): CalendarEventParsed[] {\n const identifier = getDayIdentifier(day)\n return parsedEvents.value.filter(\n event => !event.allDay &&\n isEventOn(event, identifier) &&\n isEventForCategory(event, day.category)\n )\n }\n\n function getScopedSlots () {\n if (noEvents.value) {\n return { ...slots }\n }\n\n const mode = eventModeFunction.value(\n parsedEvents.value,\n eventWeekdays.value[0],\n parsedEventOverlapThreshold.value\n )\n\n const isNode = (input: VNode | false): input is VNode => !!input\n const getSlotChildren: VEventsToNodes = (day, getter, mapper, timed) => {\n const events = getter(day)\n const visuals = mode(day, events, timed, categoryMode.value)\n\n if (timed) {\n return visuals.map(visual => mapper(visual, day)).filter(isNode)\n }\n\n const children: VNode[] = []\n\n visuals.forEach((visual, index) => {\n while (children.length < visual.column) {\n children.push(genPlaceholder(day) as VNode)\n }\n\n const mapped = mapper(visual, day)\n if (mapped) {\n children.push(mapped)\n }\n })\n\n return children\n }\n\n return {\n ...slots,\n day: (day: CalendarDaySlotScope) => {\n let children = getSlotChildren(day, getEventsForDay, genDayEvent, false)\n if (children && children.length > 0 && props.eventMore) {\n children.push(genMore(day) as VNode)\n }\n if (slots.day) {\n const slot = slots.day(day)\n if (slot) {\n children = children ? children.concat(slot) : slot\n }\n }\n return children\n },\n 'day-header': (day: CalendarDaySlotScope) => {\n let children = getSlotChildren(day, getEventsForDayAll, genDayEvent, false)\n\n if (slots['day-header']) {\n const slot = slots['day-header'](day)\n if (slot) {\n children = children ? children.concat(slot) : slot\n }\n }\n return children\n },\n 'day-body': (day: CalendarDayBodySlotScope) => {\n const events = getSlotChildren(day, getEventsForDayTimed, genTimedEvent, true)\n let children: VNode[] = [\n <div class=\"v-event-timed-container\">{ events }</div>,\n ]\n\n if (slots['day-body']) {\n const slot = slots['day-body'](day)\n if (slot) {\n children = children.concat(slot)\n }\n }\n return children\n },\n }\n }\n\n return {\n ...base,\n noEvents,\n parsedEvents,\n parsedEventOverlapThreshold,\n eventTimedFunction,\n eventCategoryFunction,\n eventTextColorFunction,\n eventNameFunction,\n eventModeFunction,\n eventWeekdays,\n categoryMode,\n eventColorFunction,\n eventsRef,\n updateEventVisibility,\n getEventsMap,\n genDayEvent,\n genTimedEvent,\n genEvent,\n genName,\n genPlaceholder,\n genMore,\n getVisibleEvents,\n isEventForCategory,\n getEventsForDay,\n getEventsForDayAll,\n getEventsForDayTimed,\n getScopedSlots,\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"calendarWithEvents.js","names":["useCalendarBase","vRipple","computed","ref","CalendarEventOverlapModes","isEventHiddenOn","isEventOn","isEventOverlapping","isEventStart","parseEvent","diffMinutes","getDayIdentifier","getPrefixedEventHandlers","propsFactory","WIDTH_FULL","WIDTH_START","MINUTES_IN_DAY","makeCalendarWithEventsProps","events","type","Array","default","eventStart","String","eventEnd","eventTimed","Function","eventCategory","eventHeight","Number","eventColor","eventTextColor","eventName","eventOverlapThreshold","eventOverlapMode","validate","mode","eventMore","Boolean","eventMoreText","eventRipple","Object","eventMarginBottom","useCalendarWithEvents","props","slots","attrs","base","noEvents","isArray","length","categoryMode","eventTimedFunction","event","eventCategoryFunction","parsedEvents","map","index","value","parsedEventOverlapThreshold","parseInt","eventTextColorFunction","eventNameFunction","timedEvent","input","eventModeFunction","eventWeekdays","effectiveWeekdays","eventColorFunction","e","color","eventsRef","updateEventVisibility","eventsMap","getEventsMap","date","parent","more","parentBounds","getBoundingClientRect","last","eventsSorted","bottom","sort","a","b","hidden","i","hide","style","display","innerHTML","locale","t","elements","forEach","el","getAttribute","parentElement","push","genDayEvent","_ref","day","dayIdentifier","week","start","startIdentifier","end","endIdentifier","width","weekdayIdentifier","scope","eventParsed","timed","genEvent","class","height","marginBottom","genTimedEvent","_ref2","left","endDelta","timeDelta","startDelta","top","timeToY","Math","max","scopeInput","data","slot","text","background","overlapsNoon","hour","singline","formatTime","withTime","ampm","formatter","getFormatter","timeZone","minute","undefined","timeSummary","eventSummary","name","hasTime","time","delimiter","_createElementVNode","_createTextVNode","outside","nativeEvent","_withDirectives","_mergeProps","getColorProps","genName","genPlaceholder","genMore","getVisibleEvents","days","filter","isEventForCategory","category","categoryName","getEventsForDay","identifier","firstWeekday","getEventsForDayAll","allDay","getEventsForDayTimed","getScopedSlots","isNode","getSlotChildren","getter","mapper","visuals","visual","children","column","mapped","concat"],"sources":["../../../../src/labs/VCalendar/composables/calendarWithEvents.tsx"],"sourcesContent":["// Styles\nimport './calendarWithEvents.sass'\n\n// Composables\nimport { useCalendarBase } from './calendarBase'\n\n// Directives\nimport vRipple from '@/directives/ripple'\n\n// Utilities\nimport { computed, ref } from 'vue'\nimport { CalendarEventOverlapModes } from '../modes'\nimport {\n isEventHiddenOn,\n isEventOn,\n isEventOverlapping,\n isEventStart,\n parseEvent,\n} from '../util/events'\nimport { diffMinutes, getDayIdentifier } from '../util/timestamp'\nimport { getPrefixedEventHandlers, propsFactory } from '@/util'\n\n// Types\nimport type { PropType, VNode } from 'vue'\nimport type { CalendarBaseProps } from './calendarBase'\nimport type {\n CalendarCategory,\n CalendarDayBodySlotScope,\n CalendarDaySlotScope,\n CalendarEvent,\n CalendarEventCategoryFunction,\n CalendarEventColorFunction,\n CalendarEventNameFunction,\n CalendarEventOverlapMode,\n CalendarEventParsed,\n CalendarEventTimedFunction,\n CalendarEventVisual,\n CalendarTimestamp,\n} from '../types'\n\n// Constants\nconst WIDTH_FULL = 100\nconst WIDTH_START = 95\nconst MINUTES_IN_DAY = 1440\n\ntype VEventGetter<D> = (day: D) => CalendarEventParsed[]\ntype VEventVisualToNode<D> = (visual: CalendarEventVisual, day: D) => VNode | false\ntype VEventsToNodes = <D extends CalendarDaySlotScope>(\n day: D,\n getter: VEventGetter<D>,\n mapper: VEventVisualToNode<D>,\n timed: boolean) => VNode[] | undefined\n\ntype VDailyEventsMap = {\n [date: string]: {\n parent: HTMLElement\n more: HTMLElement | null\n events: HTMLElement[]\n }\n}\n\nexport interface VEventScopeInput {\n eventParsed: CalendarEventParsed\n day: CalendarDaySlotScope\n start: boolean\n end: boolean\n timed: boolean\n}\n\n// Prevent import from being erased\nvoid vRipple\n\nexport const makeCalendarWithEventsProps = propsFactory({\n events: {\n type: Array as PropType<CalendarEvent[]>,\n default: () => [],\n },\n eventStart: {\n type: String,\n default: 'start',\n },\n eventEnd: {\n type: String,\n default: 'end',\n },\n eventTimed: {\n type: [String, Function] as PropType<string | CalendarEventTimedFunction>,\n default: 'timed',\n },\n eventCategory: {\n type: [String, Function] as PropType<string | CalendarEventCategoryFunction>,\n default: 'category',\n },\n eventHeight: {\n type: Number,\n default: 20,\n },\n eventColor: {\n type: [String, Function] as PropType<string | CalendarEventColorFunction>,\n default: 'primary',\n },\n eventTextColor: {\n type: [String, Function] as PropType<string | CalendarEventColorFunction>,\n },\n eventName: {\n type: [String, Function] as PropType<string | CalendarEventNameFunction>,\n default: 'name',\n },\n eventOverlapThreshold: {\n type: [String, Number],\n default: 60,\n },\n eventOverlapMode: {\n type: [String, Function] as PropType<'stack' | 'column' | CalendarEventOverlapMode>,\n default: 'stack',\n validate: (mode: any) => mode in CalendarEventOverlapModes || typeof mode === 'function',\n },\n eventMore: {\n type: Boolean,\n default: true,\n },\n eventMoreText: {\n type: String,\n default: '$vuetify.calendar.moreEvents',\n },\n eventRipple: {\n type: [Boolean, Object],\n default: null,\n },\n eventMarginBottom: {\n type: Number,\n default: 1,\n },\n}, 'VCalendar-events')\n\ninterface CalendarWithEventsProps extends CalendarBaseProps {\n events: CalendarEvent[]\n eventStart: string\n eventEnd: string\n eventTimed: string | CalendarEventTimedFunction\n eventCategory: string | CalendarEventCategoryFunction\n eventHeight: number\n eventColor: string | CalendarEventColorFunction\n eventTextColor: string | CalendarEventColorFunction | undefined\n eventName: string | CalendarEventNameFunction\n eventOverlapThreshold: string | number\n eventOverlapMode: string | CalendarEventOverlapMode\n eventMore: boolean\n eventMoreText: string\n eventRipple: boolean | object | null | undefined\n eventMarginBottom: number\n type: 'month' | 'week' | 'day' | '4day' | 'custom-weekly' | 'custom-daily' | 'category'\n}\n\nexport function useCalendarWithEvents (props: CalendarWithEventsProps, slots: any, attrs: any) {\n const base = useCalendarBase(props)\n\n const noEvents = computed((): boolean => {\n return !Array.isArray(props.events) || props.events.length === 0\n })\n\n const categoryMode = computed((): boolean => {\n return props.type === 'category'\n })\n\n const eventTimedFunction = computed((): CalendarEventTimedFunction => {\n return typeof props.eventTimed === 'function'\n ? props.eventTimed\n : event => !!event[props.eventTimed as string]\n })\n\n const eventCategoryFunction = computed((): CalendarEventCategoryFunction => {\n return typeof props.eventCategory === 'function'\n ? props.eventCategory\n : event => event[props.eventCategory as string]\n })\n\n const parsedEvents = computed((): CalendarEventParsed[] => {\n if (!props.events) return []\n return props.events.map((event, index) => parseEvent(\n event,\n index,\n props.eventStart || '',\n props.eventEnd || '',\n eventTimedFunction.value(event),\n categoryMode.value ? eventCategoryFunction.value(event) : false,\n ))\n })\n\n const parsedEventOverlapThreshold = computed((): number => {\n return parseInt(String(props.eventOverlapThreshold || 0))\n })\n\n const eventTextColorFunction = computed((): CalendarEventColorFunction => {\n return typeof props.eventTextColor === 'function'\n ? props.eventTextColor\n : () => props.eventTextColor as string\n })\n\n const eventNameFunction = computed((): CalendarEventNameFunction => {\n return typeof props.eventName === 'function'\n ? props.eventName\n : (event, timedEvent) => event.input[props.eventName as string] as string || ''\n })\n\n const eventModeFunction = computed((): CalendarEventOverlapMode => {\n return typeof props.eventOverlapMode === 'function'\n ? props.eventOverlapMode\n : CalendarEventOverlapModes[props.eventOverlapMode as keyof typeof CalendarEventOverlapModes]\n })\n\n const eventWeekdays = computed((): number[] => {\n return base.effectiveWeekdays.value\n })\n\n function eventColorFunction (e: CalendarEvent): string | undefined {\n return typeof props.eventColor === 'function'\n ? props.eventColor(e)\n : e.color || props.eventColor\n }\n\n const eventsRef = ref<HTMLElement[]>([])\n\n function updateEventVisibility () {\n if (noEvents.value || !props.eventMore) {\n return\n }\n\n const eventHeight = props.eventHeight || 0\n const eventsMap = getEventsMap()\n\n for (const date in eventsMap) {\n const { parent, events, more } = eventsMap[date]\n if (!more) {\n break\n }\n\n const parentBounds = parent.getBoundingClientRect()\n const last = events.length - 1\n const eventsSorted = events.map(event => ({\n event,\n bottom: event.getBoundingClientRect().bottom,\n })).sort((a, b) => a.bottom - b.bottom)\n let hidden = 0\n\n for (let i = 0; i <= last; i++) {\n const bottom = eventsSorted[i].bottom\n const hide = i === last\n ? (bottom > parentBounds.bottom)\n : (bottom + eventHeight > parentBounds.bottom)\n\n if (hide) {\n eventsSorted[i].event.style.display = 'none'\n hidden++\n }\n }\n\n // TODO: avoid direct DOM manipulation\n if (hidden) {\n more.style.display = ''\n more.innerHTML = base.locale.t(props.eventMoreText, hidden)\n } else {\n more.style.display = 'none'\n }\n }\n }\n\n function getEventsMap (): VDailyEventsMap {\n const eventsMap: VDailyEventsMap = {}\n const elements = eventsRef.value\n\n if (!elements || !elements.length) {\n return eventsMap\n }\n\n elements.forEach(el => {\n const date = el.getAttribute('data-date')\n if (el.parentElement && date) {\n if (!(date in eventsMap)) {\n eventsMap[date] = {\n parent: el.parentElement,\n more: null,\n events: [],\n }\n }\n if (el.getAttribute('data-more')) {\n eventsMap[date].more = el\n } else {\n eventsMap[date].events.push(el)\n el.style.display = ''\n }\n }\n })\n\n return eventsMap\n }\n\n function genDayEvent ({ event }: CalendarEventVisual, day: CalendarDaySlotScope): VNode {\n const eventHeight = props.eventHeight || 0\n const eventMarginBottom = props.eventMarginBottom || 0\n const dayIdentifier = getDayIdentifier(day)\n const week = day.week\n const start = dayIdentifier === event.startIdentifier\n let end = dayIdentifier === event.endIdentifier\n let width = WIDTH_START\n\n if (!categoryMode.value) {\n for (let i = day.index + 1; i < week.length; i++) {\n const weekdayIdentifier = getDayIdentifier(week[i])\n if (event.endIdentifier >= weekdayIdentifier) {\n width += WIDTH_FULL\n end = end || weekdayIdentifier === event.endIdentifier\n } else {\n end = true\n break\n }\n }\n }\n const scope = { eventParsed: event, day, start, end, timed: false }\n\n return genEvent(event, scope, false, {\n class: [\n 'v-event',\n { 'v-event-start': start, 'v-event-end': end },\n ],\n style: {\n height: `${eventHeight}px`,\n width: `${width}%`,\n marginBottom: `${eventMarginBottom}px`,\n },\n 'data-date': day.date,\n })\n }\n\n function genTimedEvent ({ event, left, width }: CalendarEventVisual, day: CalendarDayBodySlotScope): VNode | false {\n const endDelta = day.timeDelta(event.end)\n const startDelta = day.timeDelta(event.start)\n if (\n endDelta === false ||\n startDelta === false ||\n endDelta < 0 ||\n startDelta >= 1 ||\n isEventHiddenOn(event, day)\n ) {\n return false\n }\n\n const dayIdentifier = getDayIdentifier(day)\n const start = event.startIdentifier >= dayIdentifier\n const end = event.endIdentifier > dayIdentifier\n const top = start ? day.timeToY(event.start) : 0\n const bottom = end ? day.timeToY(MINUTES_IN_DAY) : day.timeToY(event.end)\n const height = Math.max(props.eventHeight || 0, bottom - top)\n const scope = { eventParsed: event, day, start, end, timed: true }\n\n return genEvent(event, scope, true, {\n class: 'v-event-timed',\n style: {\n top: `${top}px`,\n height: `${height}px`,\n left: `${left}%`,\n width: `${width}%`,\n },\n })\n }\n\n function genEvent (\n event: CalendarEventParsed,\n scopeInput: VEventScopeInput,\n timedEvent: boolean,\n data: Record<string, unknown>\n ): VNode {\n const slot = slots.event\n const text = eventTextColorFunction.value(event.input)\n const background = eventColorFunction(event.input)\n const overlapsNoon = event.start.hour < 12 && event.end.hour >= 12\n const singline = diffMinutes(event.start, event.end) <= parsedEventOverlapThreshold.value\n const formatTime = (withTime: CalendarTimestamp, ampm: boolean): string => {\n const formatter = base.getFormatter({\n timeZone: 'UTC',\n hour: 'numeric',\n minute: withTime.minute > 0 ? 'numeric' : undefined,\n })\n return formatter(withTime, true)\n }\n\n const timeSummary = () => formatTime(event.start, overlapsNoon) + ' - ' + formatTime(event.end, true)\n\n const eventSummary = () => {\n const name = eventNameFunction.value(event, timedEvent)\n if (event.start.hasTime) {\n if (timedEvent) {\n const time = timeSummary()\n const delimiter = singline ? ', ' : <br />\n\n return (\n <span class=\"v-event-summary\">\n <strong>{ name }</strong>\n { delimiter }\n { time }\n </span>\n )\n } else {\n const time = formatTime(event.start, true)\n\n return (\n <span class=\"v-event-summary\">\n <strong>{ time }</strong> { name }\n </span>\n )\n }\n }\n\n return <span class=\"v-event-summary\">{ name }</span>\n }\n\n const scope = {\n ...scopeInput,\n event: event.input,\n outside: scopeInput.day.outside,\n singline,\n overlapsNoon,\n formatTime,\n timeSummary,\n eventSummary,\n }\n\n const events = getPrefixedEventHandlers(attrs, ':event', (nativeEvent: Event) => ({ ...scope, nativeEvent }))\n\n return (\n <div\n { ...base.getColorProps({ text, background }) }\n { ...events }\n { ...data }\n ref_for\n ref={ eventsRef }\n v-ripple={ props.eventRipple ?? true }\n >\n { slot?.(scope) ?? genName(eventSummary) }\n </div>\n )\n }\n\n function genName (eventSummary: () => string | VNode): VNode {\n return (\n <div class=\"pl-1\">\n { eventSummary() }\n </div>\n )\n }\n\n function genPlaceholder (day: CalendarTimestamp): VNode {\n const height = (props.eventHeight || 0) + (props.eventMarginBottom || 0)\n return (\n <div\n style={{ height: `${height}px` }}\n data-date={ day.date }\n ref_for\n ref={ eventsRef }\n />\n )\n }\n\n function genMore (day: CalendarDaySlotScope): VNode {\n const eventHeight = props.eventHeight || 0\n const eventMarginBottom = props.eventMarginBottom || 0\n const events = getPrefixedEventHandlers(attrs, ':more', (nativeEvent: Event) => ({ nativeEvent, ...day }))\n\n return (\n <div\n class={['v-event-more pl-1', { 'v-outside': day.outside }]}\n data-date={ day.date }\n data-more=\"1\"\n style={{\n display: 'none',\n height: `${eventHeight}px`,\n marginBottom: `${eventMarginBottom}px`,\n }}\n ref_for\n ref={ eventsRef }\n v-ripple={ props.eventRipple ?? true }\n { ...events }\n />\n )\n }\n\n function getVisibleEvents (): CalendarEventParsed[] {\n const days = base.days.value\n const start = getDayIdentifier(days[0])\n const end = getDayIdentifier(days[days.length - 1])\n\n return parsedEvents.value.filter(\n event => isEventOverlapping(event, start, end)\n )\n }\n\n function isEventForCategory (event: CalendarEventParsed, category: CalendarCategory): boolean {\n return !categoryMode.value ||\n (typeof category === 'object' && category.categoryName &&\n category.categoryName === event.category) ||\n (typeof event.category === 'string' && category === event.category) ||\n (typeof event.category !== 'string' && category === null)\n }\n\n function getEventsForDay (day: CalendarDaySlotScope): CalendarEventParsed[] {\n const identifier = getDayIdentifier(day)\n const firstWeekday = eventWeekdays.value[0]\n\n return parsedEvents.value.filter(\n event => isEventStart(event, day, identifier, firstWeekday)\n )\n }\n\n function getEventsForDayAll (day: CalendarDaySlotScope): CalendarEventParsed[] {\n const identifier = getDayIdentifier(day)\n const firstWeekday = eventWeekdays.value[0]\n\n return parsedEvents.value.filter(\n event => event.allDay &&\n (categoryMode.value ? isEventOn(event, identifier) : isEventStart(event, day, identifier, firstWeekday)) &&\n isEventForCategory(event, day.category)\n )\n }\n\n function getEventsForDayTimed (day: CalendarDaySlotScope): CalendarEventParsed[] {\n const identifier = getDayIdentifier(day)\n return parsedEvents.value.filter(\n event => !event.allDay &&\n isEventOn(event, identifier) &&\n isEventForCategory(event, day.category)\n )\n }\n\n function getScopedSlots () {\n if (noEvents.value) {\n return { ...slots }\n }\n\n const mode = eventModeFunction.value(\n parsedEvents.value,\n eventWeekdays.value[0],\n parsedEventOverlapThreshold.value\n )\n\n const isNode = (input: VNode | false): input is VNode => !!input\n const getSlotChildren: VEventsToNodes = (day, getter, mapper, timed) => {\n const events = getter(day)\n const visuals = mode(day, events, timed, categoryMode.value)\n\n if (timed) {\n return visuals.map(visual => mapper(visual, day)).filter(isNode)\n }\n\n const children: VNode[] = []\n\n visuals.forEach((visual, index) => {\n while (children.length < visual.column) {\n children.push(genPlaceholder(day) as VNode)\n }\n\n const mapped = mapper(visual, day)\n if (mapped) {\n children.push(mapped)\n }\n })\n\n return children\n }\n\n return {\n ...slots,\n day: (day: CalendarDaySlotScope) => {\n let children = getSlotChildren(day, getEventsForDay, genDayEvent, false)\n if (children && children.length > 0 && props.eventMore) {\n children.push(genMore(day) as VNode)\n }\n if (slots.day) {\n const slot = slots.day(day)\n if (slot) {\n children = children ? children.concat(slot) : slot\n }\n }\n return children\n },\n 'day-header': (day: CalendarDaySlotScope) => {\n let children = getSlotChildren(day, getEventsForDayAll, genDayEvent, false)\n\n if (slots['day-header']) {\n const slot = slots['day-header'](day)\n if (slot) {\n children = children ? children.concat(slot) : slot\n }\n }\n return children\n },\n 'day-body': (day: CalendarDayBodySlotScope) => {\n const events = getSlotChildren(day, getEventsForDayTimed, genTimedEvent, true)\n let children: VNode[] = [\n <div class=\"v-event-timed-container\">{ events }</div>,\n ]\n\n if (slots['day-body']) {\n const slot = slots['day-body'](day)\n if (slot) {\n children = children.concat(slot)\n }\n }\n return children\n },\n }\n }\n\n return {\n ...base,\n noEvents,\n parsedEvents,\n parsedEventOverlapThreshold,\n eventTimedFunction,\n eventCategoryFunction,\n eventTextColorFunction,\n eventNameFunction,\n eventModeFunction,\n eventWeekdays,\n categoryMode,\n eventColorFunction,\n eventsRef,\n updateEventVisibility,\n getEventsMap,\n genDayEvent,\n genTimedEvent,\n genEvent,\n genName,\n genPlaceholder,\n genMore,\n getVisibleEvents,\n isEventForCategory,\n getEventsForDay,\n getEventsForDayAll,\n getEventsForDayTimed,\n getScopedSlots,\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -156,7 +156,8 @@ export const VFileUpload = genericComponent()({
156
156
  const dividerProps = VDivider.filterProps(props);
157
157
  const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
158
158
  const expectsDirectory = attrs.webkitdirectory !== undefined && attrs.webkitdirectory !== false;
159
- const inputAccept = expectsDirectory ? undefined : props.filterByType ?? String(attrs.accept);
159
+ const acceptFallback = attrs.accept ? String(attrs.accept) : undefined;
160
+ const inputAccept = expectsDirectory ? undefined : props.filterByType ?? acceptFallback;
160
161
  const inputNode = _createElementVNode("input", _mergeProps({
161
162
  "ref": inputRef,
162
163
  "type": "file",
@@ -1 +1 @@
1
- {"version":3,"file":"VFileUpload.js","names":["VFileUploadItem","VBtn","VDefaultsProvider","makeVDividerProps","VDivider","VIcon","VOverlay","makeVSheetProps","VSheet","makeDelayProps","makeDensityProps","useDensity","useFileDrop","makeFileFilterProps","useFileFilter","IconValue","useLocale","useProxiedModel","ref","shallowRef","filterInputAttrs","genericComponent","pick","propsFactory","useRender","wrapInArray","makeVFileUploadProps","browseText","type","String","default","dividerText","title","subtitle","icon","modelValue","Array","Object","validator","val","every","v","clearable","Boolean","disabled","hideBrowse","multiple","scrim","showSize","name","length","VFileUpload","inheritAttrs","props","emits","files","rejected","setup","_ref","attrs","emit","slots","t","densityClasses","filterAccepted","model","isArray","isDragging","vSheetRef","inputRef","handleDrop","onDragover","e","preventDefault","stopImmediatePropagation","value","onDragleave","onDrop","allDroppedFiles","selectAccepted","onFileSelection","target","repack","filterByType","dataTransfer","DataTransfer","accepted","file","items","add","event","Event","bubbles","dispatchEvent","onClick","click","onClickRemove","index","newValue","filter","_","i","hasTitle","hasIcon","hasBrowse","browse","density","cardProps","filterProps","dividerProps","rootAttrs","inputAttrs","expectsDirectory","webkitdirectory","undefined","inputAccept","accept","inputNode","_createElementVNode","_mergeProps","_Fragment","_createVNode","class","style","divider","readonly","size","text","variant","input","map","slotProps","onClick:remove","item"],"sources":["../../../src/labs/VFileUpload/VFileUpload.tsx"],"sourcesContent":["// Styles\nimport './VFileUpload.sass'\n\n// Components\nimport { VFileUploadItem } from './VFileUploadItem'\nimport { VBtn } from '@/components/VBtn/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider/VDefaultsProvider'\nimport { makeVDividerProps, VDivider } from '@/components/VDivider/VDivider'\nimport { VIcon } from '@/components/VIcon/VIcon'\nimport { VOverlay } from '@/components/VOverlay/VOverlay'\nimport { makeVSheetProps, VSheet } from '@/components/VSheet/VSheet'\n\n// Composables\nimport { makeDelayProps } from '@/composables/delay'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { useFileDrop } from '@/composables/fileDrop'\nimport { makeFileFilterProps, useFileFilter } from '@/composables/fileFilter'\nimport { IconValue } from '@/composables/icons'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { ref, shallowRef } from 'vue'\nimport { filterInputAttrs, genericComponent, pick, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType, VNode } from 'vue'\n\nexport type VFileUploadSlots = {\n browse: {\n props: { onClick: (e: MouseEvent) => void }\n }\n default: never\n icon: never\n input: {\n inputNode: VNode\n }\n item: {\n file: File\n props: { 'onClick:remove': () => void }\n }\n title: never\n divider: never\n}\n\nexport const makeVFileUploadProps = propsFactory({\n browseText: {\n type: String,\n default: '$vuetify.fileUpload.browse',\n },\n dividerText: {\n type: String,\n default: '$vuetify.fileUpload.divider',\n },\n title: {\n type: String,\n default: '$vuetify.fileUpload.title',\n },\n subtitle: String,\n icon: {\n type: IconValue,\n default: '$upload',\n },\n modelValue: {\n type: [Array, Object] as PropType<File[] | File>,\n default: null,\n validator: (val: any) => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n },\n clearable: Boolean,\n disabled: Boolean,\n hideBrowse: Boolean,\n multiple: Boolean,\n scrim: {\n type: [Boolean, String],\n default: true,\n },\n showSize: Boolean,\n name: String,\n\n ...makeFileFilterProps(),\n ...makeDelayProps(),\n ...makeDensityProps(),\n ...pick(makeVDividerProps({\n length: 150,\n }), ['length', 'thickness', 'opacity']),\n ...makeVSheetProps(),\n}, 'VFileUpload')\n\nexport const VFileUpload = genericComponent<VFileUploadSlots>()({\n name: 'VFileUpload',\n\n inheritAttrs: false,\n\n props: makeVFileUploadProps(),\n\n emits: {\n 'update:modelValue': (files: File[]) => true,\n rejected: (files: File[]) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { t } = useLocale()\n const { densityClasses } = useDensity(props)\n const { filterAccepted } = useFileFilter(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n props.modelValue,\n val => wrapInArray(val),\n val => (props.multiple || Array.isArray(props.modelValue)) ? val : val[0],\n )\n\n const isDragging = shallowRef(false)\n const vSheetRef = ref<InstanceType<typeof VSheet> | null>(null)\n const inputRef = ref<HTMLInputElement | null>(null)\n const { handleDrop } = useFileDrop()\n\n function onDragover (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n isDragging.value = true\n }\n\n function onDragleave (e: DragEvent) {\n e.preventDefault()\n isDragging.value = false\n }\n\n async function onDrop (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n isDragging.value = false\n\n if (!inputRef.value) return\n\n const allDroppedFiles = await handleDrop(e)\n selectAccepted(allDroppedFiles)\n }\n\n function onFileSelection (e: Event) {\n if (!e.target || (e as any).repack) return // prevent loop\n\n if (!props.filterByType) {\n const target = e.target as HTMLInputElement\n model.value = [...target.files ?? []]\n } else {\n selectAccepted([...(e as any).target.files])\n }\n }\n\n function selectAccepted (files: File[]) {\n const dataTransfer = new DataTransfer()\n const { accepted, rejected } = filterAccepted(files)\n\n if (rejected.length) {\n emit('rejected', rejected)\n }\n\n for (const file of accepted) {\n dataTransfer.items.add(file)\n }\n\n inputRef.value!.files = dataTransfer.files\n model.value = [...dataTransfer.files]\n\n const event = new Event('change', { bubbles: true }) as any\n event.repack = true\n inputRef.value!.dispatchEvent(event)\n }\n\n function onClick () {\n inputRef.value?.click()\n }\n\n function onClickRemove (index: number) {\n const newValue = model.value.filter((_, i) => i !== index)\n model.value = newValue\n\n if (newValue.length > 0 || !inputRef.value) return\n\n inputRef.value.value = ''\n }\n\n useRender(() => {\n const hasTitle = !!(slots.title || props.title)\n const hasIcon = !!(slots.icon || props.icon)\n const hasBrowse = !!(!props.hideBrowse && (slots.browse || props.density === 'default'))\n const cardProps = VSheet.filterProps(props)\n const dividerProps = VDivider.filterProps(props)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n\n const expectsDirectory = attrs.webkitdirectory !== undefined && attrs.webkitdirectory !== false\n const inputAccept = expectsDirectory ? undefined : (props.filterByType ?? String(attrs.accept))\n\n const inputNode = (\n <input\n ref={ inputRef }\n type=\"file\"\n accept={ inputAccept }\n disabled={ props.disabled }\n multiple={ props.multiple }\n name={ props.name }\n onChange={ onFileSelection }\n { ...inputAttrs }\n />\n )\n\n return (\n <>\n <VSheet\n ref={ vSheetRef }\n { ...cardProps }\n class={[\n 'v-file-upload',\n {\n 'v-file-upload--clickable': !hasBrowse,\n 'v-file-upload--disabled': props.disabled,\n 'v-file-upload--dragging': isDragging.value,\n },\n densityClasses.value,\n props.class,\n ]}\n style={[\n props.style,\n ]}\n onDragleave={ onDragleave }\n onDragover={ onDragover }\n onDrop={ onDrop }\n onClick={ !hasBrowse ? onClick : undefined }\n { ...rootAttrs }\n >\n { hasIcon && (\n <div key=\"icon\" class=\"v-file-upload-icon\">\n { !slots.icon ? (\n <VIcon\n key=\"icon-icon\"\n icon={ props.icon }\n />\n ) : (\n <VDefaultsProvider\n key=\"icon-defaults\"\n defaults={{\n VIcon: {\n icon: props.icon,\n },\n }}\n >\n { slots.icon() }\n </VDefaultsProvider>\n )}\n </div>\n )}\n\n { hasTitle && (\n <div key=\"title\" class=\"v-file-upload-title\">\n { slots.title?.() ?? t(props.title) }\n </div>\n )}\n\n { props.density === 'default' && (\n <>\n <div key=\"upload-divider\" class=\"v-file-upload-divider\">\n { slots.divider?.() ?? (\n <VDivider { ...dividerProps }>\n { t(props.dividerText) }\n </VDivider>\n )}\n </div>\n\n { hasBrowse && (\n <>\n { !slots.browse ? (\n <VBtn\n readonly={ props.disabled }\n size=\"large\"\n text={ t(props.browseText) }\n variant=\"tonal\"\n onClick={ onClick }\n />\n ) : (\n <VDefaultsProvider\n defaults={{\n VBtn: {\n readonly: props.disabled,\n size: 'large',\n text: t(props.browseText),\n variant: 'tonal',\n },\n }}\n >\n { slots.browse({ props: { onClick } }) }\n </VDefaultsProvider>\n )}\n </>\n )}\n\n { props.subtitle && (\n <div class=\"v-file-upload-subtitle\">\n { props.subtitle }\n </div>\n )}\n </>\n )}\n\n <VOverlay\n modelValue={ isDragging.value }\n contained\n scrim={ props.scrim }\n />\n\n { slots.input?.({ inputNode }) ?? inputNode }\n </VSheet>\n\n { model.value.length > 0 && (\n <div class=\"v-file-upload-items\">\n { model.value.map((file, i) => {\n const slotProps = {\n file,\n props: {\n 'onClick:remove': () => onClickRemove(i),\n },\n }\n\n return (\n <VDefaultsProvider\n key={ i }\n defaults={{\n VFileUploadItem: {\n file,\n clearable: props.clearable,\n disabled: props.disabled,\n showSize: props.showSize,\n },\n }}\n >\n { slots.item?.(slotProps) ?? (\n <VFileUploadItem\n key={ i }\n onClick:remove={ () => onClickRemove(i) }\n v-slots={ slots }\n />\n )}\n </VDefaultsProvider>\n )\n })}\n </div>\n )}\n </>\n )\n })\n },\n})\n\nexport type VFileUpload = InstanceType<typeof VFileUpload>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VFileUpload.js","names":["VFileUploadItem","VBtn","VDefaultsProvider","makeVDividerProps","VDivider","VIcon","VOverlay","makeVSheetProps","VSheet","makeDelayProps","makeDensityProps","useDensity","useFileDrop","makeFileFilterProps","useFileFilter","IconValue","useLocale","useProxiedModel","ref","shallowRef","filterInputAttrs","genericComponent","pick","propsFactory","useRender","wrapInArray","makeVFileUploadProps","browseText","type","String","default","dividerText","title","subtitle","icon","modelValue","Array","Object","validator","val","every","v","clearable","Boolean","disabled","hideBrowse","multiple","scrim","showSize","name","length","VFileUpload","inheritAttrs","props","emits","files","rejected","setup","_ref","attrs","emit","slots","t","densityClasses","filterAccepted","model","isArray","isDragging","vSheetRef","inputRef","handleDrop","onDragover","e","preventDefault","stopImmediatePropagation","value","onDragleave","onDrop","allDroppedFiles","selectAccepted","onFileSelection","target","repack","filterByType","dataTransfer","DataTransfer","accepted","file","items","add","event","Event","bubbles","dispatchEvent","onClick","click","onClickRemove","index","newValue","filter","_","i","hasTitle","hasIcon","hasBrowse","browse","density","cardProps","filterProps","dividerProps","rootAttrs","inputAttrs","expectsDirectory","webkitdirectory","undefined","acceptFallback","accept","inputAccept","inputNode","_createElementVNode","_mergeProps","_Fragment","_createVNode","class","style","divider","readonly","size","text","variant","input","map","slotProps","onClick:remove","item"],"sources":["../../../src/labs/VFileUpload/VFileUpload.tsx"],"sourcesContent":["// Styles\nimport './VFileUpload.sass'\n\n// Components\nimport { VFileUploadItem } from './VFileUploadItem'\nimport { VBtn } from '@/components/VBtn/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider/VDefaultsProvider'\nimport { makeVDividerProps, VDivider } from '@/components/VDivider/VDivider'\nimport { VIcon } from '@/components/VIcon/VIcon'\nimport { VOverlay } from '@/components/VOverlay/VOverlay'\nimport { makeVSheetProps, VSheet } from '@/components/VSheet/VSheet'\n\n// Composables\nimport { makeDelayProps } from '@/composables/delay'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { useFileDrop } from '@/composables/fileDrop'\nimport { makeFileFilterProps, useFileFilter } from '@/composables/fileFilter'\nimport { IconValue } from '@/composables/icons'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { ref, shallowRef } from 'vue'\nimport { filterInputAttrs, genericComponent, pick, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType, VNode } from 'vue'\n\nexport type VFileUploadSlots = {\n browse: {\n props: { onClick: (e: MouseEvent) => void }\n }\n default: never\n icon: never\n input: {\n inputNode: VNode\n }\n item: {\n file: File\n props: { 'onClick:remove': () => void }\n }\n title: never\n divider: never\n}\n\nexport const makeVFileUploadProps = propsFactory({\n browseText: {\n type: String,\n default: '$vuetify.fileUpload.browse',\n },\n dividerText: {\n type: String,\n default: '$vuetify.fileUpload.divider',\n },\n title: {\n type: String,\n default: '$vuetify.fileUpload.title',\n },\n subtitle: String,\n icon: {\n type: IconValue,\n default: '$upload',\n },\n modelValue: {\n type: [Array, Object] as PropType<File[] | File>,\n default: null,\n validator: (val: any) => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n },\n clearable: Boolean,\n disabled: Boolean,\n hideBrowse: Boolean,\n multiple: Boolean,\n scrim: {\n type: [Boolean, String],\n default: true,\n },\n showSize: Boolean,\n name: String,\n\n ...makeFileFilterProps(),\n ...makeDelayProps(),\n ...makeDensityProps(),\n ...pick(makeVDividerProps({\n length: 150,\n }), ['length', 'thickness', 'opacity']),\n ...makeVSheetProps(),\n}, 'VFileUpload')\n\nexport const VFileUpload = genericComponent<VFileUploadSlots>()({\n name: 'VFileUpload',\n\n inheritAttrs: false,\n\n props: makeVFileUploadProps(),\n\n emits: {\n 'update:modelValue': (files: File[]) => true,\n rejected: (files: File[]) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { t } = useLocale()\n const { densityClasses } = useDensity(props)\n const { filterAccepted } = useFileFilter(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n props.modelValue,\n val => wrapInArray(val),\n val => (props.multiple || Array.isArray(props.modelValue)) ? val : val[0],\n )\n\n const isDragging = shallowRef(false)\n const vSheetRef = ref<InstanceType<typeof VSheet> | null>(null)\n const inputRef = ref<HTMLInputElement | null>(null)\n const { handleDrop } = useFileDrop()\n\n function onDragover (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n isDragging.value = true\n }\n\n function onDragleave (e: DragEvent) {\n e.preventDefault()\n isDragging.value = false\n }\n\n async function onDrop (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n isDragging.value = false\n\n if (!inputRef.value) return\n\n const allDroppedFiles = await handleDrop(e)\n selectAccepted(allDroppedFiles)\n }\n\n function onFileSelection (e: Event) {\n if (!e.target || (e as any).repack) return // prevent loop\n\n if (!props.filterByType) {\n const target = e.target as HTMLInputElement\n model.value = [...target.files ?? []]\n } else {\n selectAccepted([...(e as any).target.files])\n }\n }\n\n function selectAccepted (files: File[]) {\n const dataTransfer = new DataTransfer()\n const { accepted, rejected } = filterAccepted(files)\n\n if (rejected.length) {\n emit('rejected', rejected)\n }\n\n for (const file of accepted) {\n dataTransfer.items.add(file)\n }\n\n inputRef.value!.files = dataTransfer.files\n model.value = [...dataTransfer.files]\n\n const event = new Event('change', { bubbles: true }) as any\n event.repack = true\n inputRef.value!.dispatchEvent(event)\n }\n\n function onClick () {\n inputRef.value?.click()\n }\n\n function onClickRemove (index: number) {\n const newValue = model.value.filter((_, i) => i !== index)\n model.value = newValue\n\n if (newValue.length > 0 || !inputRef.value) return\n\n inputRef.value.value = ''\n }\n\n useRender(() => {\n const hasTitle = !!(slots.title || props.title)\n const hasIcon = !!(slots.icon || props.icon)\n const hasBrowse = !!(!props.hideBrowse && (slots.browse || props.density === 'default'))\n const cardProps = VSheet.filterProps(props)\n const dividerProps = VDivider.filterProps(props)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n\n const expectsDirectory = attrs.webkitdirectory !== undefined && attrs.webkitdirectory !== false\n const acceptFallback = attrs.accept ? String(attrs.accept) : undefined\n const inputAccept = expectsDirectory ? undefined : (props.filterByType ?? acceptFallback)\n\n const inputNode = (\n <input\n ref={ inputRef }\n type=\"file\"\n accept={ inputAccept }\n disabled={ props.disabled }\n multiple={ props.multiple }\n name={ props.name }\n onChange={ onFileSelection }\n { ...inputAttrs }\n />\n )\n\n return (\n <>\n <VSheet\n ref={ vSheetRef }\n { ...cardProps }\n class={[\n 'v-file-upload',\n {\n 'v-file-upload--clickable': !hasBrowse,\n 'v-file-upload--disabled': props.disabled,\n 'v-file-upload--dragging': isDragging.value,\n },\n densityClasses.value,\n props.class,\n ]}\n style={[\n props.style,\n ]}\n onDragleave={ onDragleave }\n onDragover={ onDragover }\n onDrop={ onDrop }\n onClick={ !hasBrowse ? onClick : undefined }\n { ...rootAttrs }\n >\n { hasIcon && (\n <div key=\"icon\" class=\"v-file-upload-icon\">\n { !slots.icon ? (\n <VIcon\n key=\"icon-icon\"\n icon={ props.icon }\n />\n ) : (\n <VDefaultsProvider\n key=\"icon-defaults\"\n defaults={{\n VIcon: {\n icon: props.icon,\n },\n }}\n >\n { slots.icon() }\n </VDefaultsProvider>\n )}\n </div>\n )}\n\n { hasTitle && (\n <div key=\"title\" class=\"v-file-upload-title\">\n { slots.title?.() ?? t(props.title) }\n </div>\n )}\n\n { props.density === 'default' && (\n <>\n <div key=\"upload-divider\" class=\"v-file-upload-divider\">\n { slots.divider?.() ?? (\n <VDivider { ...dividerProps }>\n { t(props.dividerText) }\n </VDivider>\n )}\n </div>\n\n { hasBrowse && (\n <>\n { !slots.browse ? (\n <VBtn\n readonly={ props.disabled }\n size=\"large\"\n text={ t(props.browseText) }\n variant=\"tonal\"\n onClick={ onClick }\n />\n ) : (\n <VDefaultsProvider\n defaults={{\n VBtn: {\n readonly: props.disabled,\n size: 'large',\n text: t(props.browseText),\n variant: 'tonal',\n },\n }}\n >\n { slots.browse({ props: { onClick } }) }\n </VDefaultsProvider>\n )}\n </>\n )}\n\n { props.subtitle && (\n <div class=\"v-file-upload-subtitle\">\n { props.subtitle }\n </div>\n )}\n </>\n )}\n\n <VOverlay\n modelValue={ isDragging.value }\n contained\n scrim={ props.scrim }\n />\n\n { slots.input?.({ inputNode }) ?? inputNode }\n </VSheet>\n\n { model.value.length > 0 && (\n <div class=\"v-file-upload-items\">\n { model.value.map((file, i) => {\n const slotProps = {\n file,\n props: {\n 'onClick:remove': () => onClickRemove(i),\n },\n }\n\n return (\n <VDefaultsProvider\n key={ i }\n defaults={{\n VFileUploadItem: {\n file,\n clearable: props.clearable,\n disabled: props.disabled,\n showSize: props.showSize,\n },\n }}\n >\n { slots.item?.(slotProps) ?? (\n <VFileUploadItem\n key={ i }\n onClick:remove={ () => onClickRemove(i) }\n v-slots={ slots }\n />\n )}\n </VDefaultsProvider>\n )\n })}\n </div>\n )}\n </>\n )\n })\n },\n})\n\nexport type VFileUpload = InstanceType<typeof VFileUpload>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,eAAe;AAAA,SACfC,IAAI;AAAA,SACJC,iBAAiB;AAAA,SACjBC,iBAAiB,EAAEC,QAAQ;AAAA,SAC3BC,KAAK;AAAA,SACLC,QAAQ;AAAA,SACRC,eAAe,EAAEC,MAAM,6CAEhC;AAAA,SACSC,cAAc;AAAA,SACdC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,WAAW;AAAA,SACXC,mBAAmB,EAAEC,aAAa;AAAA,SAClCC,SAAS;AAAA,SACTC,SAAS;AAAA,SACTC,eAAe,6CAExB;AACA,SAASC,GAAG,EAAEC,UAAU,QAAQ,KAAK;AAAA,SAC5BC,gBAAgB,EAAEC,gBAAgB,EAAEC,IAAI,EAAEC,YAAY,EAAEC,SAAS,EAAEC,WAAW,+BAEvF;AAoBA,OAAO,MAAMC,oBAAoB,GAAGH,YAAY,CAAC;EAC/CI,UAAU,EAAE;IACVC,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDC,WAAW,EAAE;IACXH,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDE,KAAK,EAAE;IACLJ,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDG,QAAQ,EAAEJ,MAAM;EAChBK,IAAI,EAAE;IACJN,IAAI,EAAEb,SAAS;IACfe,OAAO,EAAE;EACX,CAAC;EACDK,UAAU,EAAE;IACVP,IAAI,EAAE,CAACQ,KAAK,EAAEC,MAAM,CAA4B;IAChDP,OAAO,EAAE,IAAI;IACbQ,SAAS,EAAGC,GAAQ,IAAK;MACvB,OAAOd,WAAW,CAACc,GAAG,CAAC,CAACC,KAAK,CAACC,CAAC,IAAIA,CAAC,IAAI,IAAI,IAAI,OAAOA,CAAC,KAAK,QAAQ,CAAC;IACxE;EACF,CAAC;EACDC,SAAS,EAAEC,OAAO;EAClBC,QAAQ,EAAED,OAAO;EACjBE,UAAU,EAAEF,OAAO;EACnBG,QAAQ,EAAEH,OAAO;EACjBI,KAAK,EAAE;IACLnB,IAAI,EAAE,CAACe,OAAO,EAAEd,MAAM,CAAC;IACvBC,OAAO,EAAE;EACX,CAAC;EACDkB,QAAQ,EAAEL,OAAO;EACjBM,IAAI,EAAEpB,MAAM;EAEZ,GAAGhB,mBAAmB,CAAC,CAAC;EACxB,GAAGJ,cAAc,CAAC,CAAC;EACnB,GAAGC,gBAAgB,CAAC,CAAC;EACrB,GAAGY,IAAI,CAACnB,iBAAiB,CAAC;IACxB+C,MAAM,EAAE;EACV,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;EACvC,GAAG3C,eAAe,CAAC;AACrB,CAAC,EAAE,aAAa,CAAC;AAEjB,OAAO,MAAM4C,WAAW,GAAG9B,gBAAgB,CAAmB,CAAC,CAAC;EAC9D4B,IAAI,EAAE,aAAa;EAEnBG,YAAY,EAAE,KAAK;EAEnBC,KAAK,EAAE3B,oBAAoB,CAAC,CAAC;EAE7B4B,KAAK,EAAE;IACL,mBAAmB,EAAGC,KAAa,IAAK,IAAI;IAC5CC,QAAQ,EAAGD,KAAa,IAAK;EAC/B,CAAC;EAEDE,KAAKA,CAAEJ,KAAK,EAAAK,IAAA,EAA0B;IAAA,IAAxB;MAAEC,KAAK;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAH,IAAA;IAClC,MAAM;MAAEI;IAAE,CAAC,GAAG9C,SAAS,CAAC,CAAC;IACzB,MAAM;MAAE+C;IAAe,CAAC,GAAGpD,UAAU,CAAC0C,KAAK,CAAC;IAC5C,MAAM;MAAEW;IAAe,CAAC,GAAGlD,aAAa,CAACuC,KAAK,CAAC;IAC/C,MAAMY,KAAK,GAAGhD,eAAe,CAC3BoC,KAAK,EACL,YAAY,EACZA,KAAK,CAAClB,UAAU,EAChBI,GAAG,IAAId,WAAW,CAACc,GAAG,CAAC,EACvBA,GAAG,IAAKc,KAAK,CAACP,QAAQ,IAAIV,KAAK,CAAC8B,OAAO,CAACb,KAAK,CAAClB,UAAU,CAAC,GAAII,GAAG,GAAGA,GAAG,CAAC,CAAC,CAC1E,CAAC;IAED,MAAM4B,UAAU,GAAGhD,UAAU,CAAC,KAAK,CAAC;IACpC,MAAMiD,SAAS,GAAGlD,GAAG,CAAqC,IAAI,CAAC;IAC/D,MAAMmD,QAAQ,GAAGnD,GAAG,CAA0B,IAAI,CAAC;IACnD,MAAM;MAAEoD;IAAW,CAAC,GAAG1D,WAAW,CAAC,CAAC;IAEpC,SAAS2D,UAAUA,CAAEC,CAAY,EAAE;MACjCA,CAAC,CAACC,cAAc,CAAC,CAAC;MAClBD,CAAC,CAACE,wBAAwB,CAAC,CAAC;MAC5BP,UAAU,CAACQ,KAAK,GAAG,IAAI;IACzB;IAEA,SAASC,WAAWA,CAAEJ,CAAY,EAAE;MAClCA,CAAC,CAACC,cAAc,CAAC,CAAC;MAClBN,UAAU,CAACQ,KAAK,GAAG,KAAK;IAC1B;IAEA,eAAeE,MAAMA,CAAEL,CAAY,EAAE;MACnCA,CAAC,CAACC,cAAc,CAAC,CAAC;MAClBD,CAAC,CAACE,wBAAwB,CAAC,CAAC;MAC5BP,UAAU,CAACQ,KAAK,GAAG,KAAK;MAExB,IAAI,CAACN,QAAQ,CAACM,KAAK,EAAE;MAErB,MAAMG,eAAe,GAAG,MAAMR,UAAU,CAACE,CAAC,CAAC;MAC3CO,cAAc,CAACD,eAAe,CAAC;IACjC;IAEA,SAASE,eAAeA,CAAER,CAAQ,EAAE;MAClC,IAAI,CAACA,CAAC,CAACS,MAAM,IAAKT,CAAC,CAASU,MAAM,EAAE,OAAM,CAAC;;MAE3C,IAAI,CAAC7B,KAAK,CAAC8B,YAAY,EAAE;QACvB,MAAMF,MAAM,GAAGT,CAAC,CAACS,MAA0B;QAC3ChB,KAAK,CAACU,KAAK,GAAG,CAAC,IAAGM,MAAM,CAAC1B,KAAK,IAAI,EAAE,EAAC;MACvC,CAAC,MAAM;QACLwB,cAAc,CAAC,CAAC,GAAIP,CAAC,CAASS,MAAM,CAAC1B,KAAK,CAAC,CAAC;MAC9C;IACF;IAEA,SAASwB,cAAcA,CAAExB,KAAa,EAAE;MACtC,MAAM6B,YAAY,GAAG,IAAIC,YAAY,CAAC,CAAC;MACvC,MAAM;QAAEC,QAAQ;QAAE9B;MAAS,CAAC,GAAGQ,cAAc,CAACT,KAAK,CAAC;MAEpD,IAAIC,QAAQ,CAACN,MAAM,EAAE;QACnBU,IAAI,CAAC,UAAU,EAAEJ,QAAQ,CAAC;MAC5B;MAEA,KAAK,MAAM+B,IAAI,IAAID,QAAQ,EAAE;QAC3BF,YAAY,CAACI,KAAK,CAACC,GAAG,CAACF,IAAI,CAAC;MAC9B;MAEAlB,QAAQ,CAACM,KAAK,CAAEpB,KAAK,GAAG6B,YAAY,CAAC7B,KAAK;MAC1CU,KAAK,CAACU,KAAK,GAAG,CAAC,GAAGS,YAAY,CAAC7B,KAAK,CAAC;MAErC,MAAMmC,KAAK,GAAG,IAAIC,KAAK,CAAC,QAAQ,EAAE;QAAEC,OAAO,EAAE;MAAK,CAAC,CAAQ;MAC3DF,KAAK,CAACR,MAAM,GAAG,IAAI;MACnBb,QAAQ,CAACM,KAAK,CAAEkB,aAAa,CAACH,KAAK,CAAC;IACtC;IAEA,SAASI,OAAOA,CAAA,EAAI;MAClBzB,QAAQ,CAACM,KAAK,EAAEoB,KAAK,CAAC,CAAC;IACzB;IAEA,SAASC,aAAaA,CAAEC,KAAa,EAAE;MACrC,MAAMC,QAAQ,GAAGjC,KAAK,CAACU,KAAK,CAACwB,MAAM,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKA,CAAC,KAAKJ,KAAK,CAAC;MAC1DhC,KAAK,CAACU,KAAK,GAAGuB,QAAQ;MAEtB,IAAIA,QAAQ,CAAChD,MAAM,GAAG,CAAC,IAAI,CAACmB,QAAQ,CAACM,KAAK,EAAE;MAE5CN,QAAQ,CAACM,KAAK,CAACA,KAAK,GAAG,EAAE;IAC3B;IAEAnD,SAAS,CAAC,MAAM;MACd,MAAM8E,QAAQ,GAAG,CAAC,EAAEzC,KAAK,CAAC7B,KAAK,IAAIqB,KAAK,CAACrB,KAAK,CAAC;MAC/C,MAAMuE,OAAO,GAAG,CAAC,EAAE1C,KAAK,CAAC3B,IAAI,IAAImB,KAAK,CAACnB,IAAI,CAAC;MAC5C,MAAMsE,SAAS,GAAG,CAAC,EAAE,CAACnD,KAAK,CAACR,UAAU,KAAKgB,KAAK,CAAC4C,MAAM,IAAIpD,KAAK,CAACqD,OAAO,KAAK,SAAS,CAAC,CAAC;MACxF,MAAMC,SAAS,GAAGnG,MAAM,CAACoG,WAAW,CAACvD,KAAK,CAAC;MAC3C,MAAMwD,YAAY,GAAGzG,QAAQ,CAACwG,WAAW,CAACvD,KAAK,CAAC;MAChD,MAAM,CAACyD,SAAS,EAAEC,UAAU,CAAC,GAAG3F,gBAAgB,CAACuC,KAAK,CAAC;MAEvD,MAAMqD,gBAAgB,GAAGrD,KAAK,CAACsD,eAAe,KAAKC,SAAS,IAAIvD,KAAK,CAACsD,eAAe,KAAK,KAAK;MAC/F,MAAME,cAAc,GAAGxD,KAAK,CAACyD,MAAM,GAAGvF,MAAM,CAAC8B,KAAK,CAACyD,MAAM,CAAC,GAAGF,SAAS;MACtE,MAAMG,WAAW,GAAGL,gBAAgB,GAAGE,SAAS,GAAI7D,KAAK,CAAC8B,YAAY,IAAIgC,cAAe;MAEzF,MAAMG,SAAS,GAAAC,mBAAA,UAAAC,WAAA;QAAA,OAELnD,QAAQ;QAAA;QAAA,UAELgD,WAAW;QAAA,YACThE,KAAK,CAACT,QAAQ;QAAA,YACdS,KAAK,CAACP,QAAQ;QAAA,QAClBO,KAAK,CAACJ,IAAI;QAAA,YACN+B;MAAe,GACrB+B,UAAU,QAElB;MAED,OAAAQ,mBAAA,CAAAE,SAAA,SAAAC,YAAA,CAAAlH,MAAA,EAAAgH,WAAA;QAAA,OAGYpD;MAAS,GACVuC,SAAS;QAAA,SACP,CACL,eAAe,EACf;UACE,0BAA0B,EAAE,CAACH,SAAS;UACtC,yBAAyB,EAAEnD,KAAK,CAACT,QAAQ;UACzC,yBAAyB,EAAEuB,UAAU,CAACQ;QACxC,CAAC,EACDZ,cAAc,CAACY,KAAK,EACpBtB,KAAK,CAACsE,KAAK,CACZ;QAAA,SACM,CACLtE,KAAK,CAACuE,KAAK,CACZ;QAAA,eACahD,WAAW;QAAA,cACZL,UAAU;QAAA,UACdM,MAAM;QAAA,WACL,CAAC2B,SAAS,GAAGV,OAAO,GAAGoB;MAAS,GACrCJ,SAAS;QAAAhF,OAAA,EAAAA,CAAA,MAEZyE,OAAO,IAAAgB,mBAAA;UAAA;UAAA;QAAA,IAEH,CAAC1D,KAAK,CAAC3B,IAAI,GAAAwF,YAAA,CAAArH,KAAA;UAAA;UAAA,QAGFgD,KAAK,CAACnB;QAAI,WAAAwF,YAAA,CAAAxH,iBAAA;UAAA;UAAA,YAKP;YACRG,KAAK,EAAE;cACL6B,IAAI,EAAEmB,KAAK,CAACnB;YACd;UACF;QAAC;UAAAJ,OAAA,EAAAA,CAAA,MAEC+B,KAAK,CAAC3B,IAAI,CAAC,CAAC;QAAA,EAEjB,EAEJ,EAECoE,QAAQ,IAAAiB,mBAAA;UAAA;UAAA;QAAA,IAEJ1D,KAAK,CAAC7B,KAAK,GAAG,CAAC,IAAI8B,CAAC,CAACT,KAAK,CAACrB,KAAK,CAAC,EAEtC,EAECqB,KAAK,CAACqD,OAAO,KAAK,SAAS,IAAAa,mBAAA,CAAAE,SAAA,SAAAF,mBAAA;UAAA;UAAA;QAAA,IAGrB1D,KAAK,CAACgE,OAAO,GAAG,CAAC,IAAAH,YAAA,CAAAtH,QAAA,EACFyG,YAAY;UAAA/E,OAAA,EAAAA,CAAA,MACvBgC,CAAC,CAACT,KAAK,CAACtB,WAAW,CAAC;QAAA,EAEzB,IAGDyE,SAAS,IAAAe,mBAAA,CAAAE,SAAA,SAEL,CAAC5D,KAAK,CAAC4C,MAAM,GAAAiB,YAAA,CAAAzH,IAAA;UAAA,YAEAoD,KAAK,CAACT,QAAQ;UAAA;UAAA,QAElBkB,CAAC,CAACT,KAAK,CAAC1B,UAAU,CAAC;UAAA;UAAA,WAEhBmE;QAAO,WAAA4B,YAAA,CAAAxH,iBAAA;UAAA,YAIP;YACRD,IAAI,EAAE;cACJ6H,QAAQ,EAAEzE,KAAK,CAACT,QAAQ;cACxBmF,IAAI,EAAE,OAAO;cACbC,IAAI,EAAElE,CAAC,CAACT,KAAK,CAAC1B,UAAU,CAAC;cACzBsG,OAAO,EAAE;YACX;UACF;QAAC;UAAAnG,OAAA,EAAAA,CAAA,MAEC+B,KAAK,CAAC4C,MAAM,CAAC;YAAEpD,KAAK,EAAE;cAAEyC;YAAQ;UAAE,CAAC,CAAC;QAAA,EAEzC,EAEJ,EAECzC,KAAK,CAACpB,QAAQ,IAAAsF,mBAAA;UAAA;QAAA,IAEVlE,KAAK,CAACpB,QAAQ,EAEnB,EAEJ,EAAAyF,YAAA,CAAApH,QAAA;UAAA,cAGc6D,UAAU,CAACQ,KAAK;UAAA;UAAA,SAErBtB,KAAK,CAACN;QAAK,UAGnBc,KAAK,CAACqE,KAAK,GAAG;UAAEZ;QAAU,CAAC,CAAC,IAAIA,SAAS;MAAA,IAG3CrD,KAAK,CAACU,KAAK,CAACzB,MAAM,GAAG,CAAC,IAAAqE,mBAAA;QAAA;MAAA,IAElBtD,KAAK,CAACU,KAAK,CAACwD,GAAG,CAAC,CAAC5C,IAAI,EAAEc,CAAC,KAAK;QAC7B,MAAM+B,SAAS,GAAG;UAChB7C,IAAI;UACJlC,KAAK,EAAE;YACL,gBAAgB,EAAEgF,CAAA,KAAMrC,aAAa,CAACK,CAAC;UACzC;QACF,CAAC;QAED,OAAAqB,YAAA,CAAAxH,iBAAA;UAAA,OAEUmG,CAAC;UAAA,YACG;YACRrG,eAAe,EAAE;cACfuF,IAAI;cACJ7C,SAAS,EAAEW,KAAK,CAACX,SAAS;cAC1BE,QAAQ,EAAES,KAAK,CAACT,QAAQ;cACxBI,QAAQ,EAAEK,KAAK,CAACL;YAClB;UACF;QAAC;UAAAlB,OAAA,EAAAA,CAAA,MAEC+B,KAAK,CAACyE,IAAI,GAAGF,SAAS,CAAC,IAAAV,YAAA,CAAA1H,eAAA;YAAA,OAEfqG,CAAC;YAAA,kBACUgC,CAAA,KAAMrC,aAAa,CAACK,CAAC;UAAC,GAC7BxC,KAAK,CAElB;QAAA;MAGP,CAAC,CAAC,EAEL;IAGP,CAAC,CAAC;EACJ;AACF,CAAC,CAAC","ignoreList":[]}
@@ -27,13 +27,13 @@ export function createRules(options, locale) {
27
27
  return v => /^[A-Z]*$/.test(v) || t(err || '$vuetify.rules.capital');
28
28
  },
29
29
  maxLength: (len, err) => {
30
- return v => !v || v.length <= len || t(err || '$vuetify.rules.maxLength', [len]);
30
+ return v => !v || v.length <= len || t(err || '$vuetify.rules.maxLength', len);
31
31
  },
32
32
  minLength: (len, err) => {
33
- return v => !v || v.length >= len || t(err || '$vuetify.rules.minLength', [len]);
33
+ return v => !v || v.length >= len || t(err || '$vuetify.rules.minLength', len);
34
34
  },
35
35
  strictLength: (len, err) => {
36
- return v => !v || v.length === len || t(err || '$vuetify.rules.strictLength', [len]);
36
+ return v => !v || v.length === len || t(err || '$vuetify.rules.strictLength', len);
37
37
  },
38
38
  exclude: (forbiddenCharacters, err) => {
39
39
  return v => {
@@ -1 +1 @@
1
- {"version":3,"file":"rules.js","names":["computed","inject","toRef","createRules","options","locale","t","aliases","required","err","v","email","test","number","Number","integer","capital","maxLength","len","length","minLength","strictLength","exclude","forbiddenCharacters","error","character","includes","notEmpty","pattern","resolve","fn","map","rule","ruleName","ruleParams","undefined","Array","isArray","slice","startsWith","RulesSymbol","Symbol","for","useRules","rules","Error"],"sources":["../../../src/labs/rules/rules.ts"],"sourcesContent":["// Utilities\nimport { computed, inject, toRef } from 'vue'\n\n// Types\nimport type { InjectionKey, Ref } from 'vue'\nimport type { LocaleInstance } from '@/composables/locale'\nimport type { ValidationProps, ValidationRule } from '@/composables/validation'\n\nexport type ValidationRuleBuilderWithoutOptions = (err?: string) => ValidationRule\nexport type ValidationRuleBuilderWithOptions<T> = (options: T, err?: string) => ValidationRule\nexport type ValidationRuleBuilder =\n | ValidationRuleBuilderWithoutOptions\n | ValidationRuleBuilderWithOptions<any>\n\nexport interface RuleAliases {\n [name: string]: ValidationRuleBuilder\n required: ValidationRuleBuilderWithoutOptions\n email: ValidationRuleBuilderWithoutOptions\n number: ValidationRuleBuilderWithoutOptions\n integer: ValidationRuleBuilderWithoutOptions\n capital: ValidationRuleBuilderWithoutOptions\n maxLength: ValidationRuleBuilderWithOptions<number>\n minLength: ValidationRuleBuilderWithOptions<number>\n strictLength: ValidationRuleBuilderWithOptions<number>\n exclude: ValidationRuleBuilderWithOptions<string[]>\n notEmpty: ValidationRuleBuilderWithoutOptions\n pattern: ValidationRuleBuilderWithOptions<RegExp>\n}\n\nexport type RulesOptions = {\n aliases?: Partial<RuleAliases>\n}\n\ntype ValidationRuleParams = [any, string?]\nexport type ValidationAlias = string | [string, ...ValidationRuleParams]\n\nexport type RulesInstance = {\n resolve: (fn: () => ValidationProps['rules']) => Readonly<Ref<any[]>>\n aliases: RuleAliases\n}\n\nexport function createRules (options: RulesOptions | undefined, locale: LocaleInstance) {\n const { t } = locale\n\n const aliases: RuleAliases = {\n required: (err?: string) => {\n return (v: any) => {\n // If the modifier .number is used, the 0 will be a number and it's a falsy value so we need to check for it\n return v === 0 || !!v || t(err || '$vuetify.rules.required')\n }\n },\n email: (err?: string) => {\n return (v: any) => (!v || (typeof v === 'string' && /^.+@\\S+\\.\\S+$/.test(v))) || t(err || '$vuetify.rules.email')\n },\n number: (err?: string) => {\n return (v: string) => !!Number(v) || t(err || '$vuetify.rules.number')\n },\n integer: (err?: string) => {\n return (v: string) => (/^[\\d]*$/.test(v)) || t(err || '$vuetify.rules.integer')\n },\n capital: (err?: string) => {\n return (v: string) => (/^[A-Z]*$/.test(v)) || t(err || '$vuetify.rules.capital')\n },\n maxLength: (len: number, err?: string) => {\n return (v: any) => (!v || v.length <= len) || t(err || '$vuetify.rules.maxLength', [len])\n },\n minLength: (len: number, err?: string) => {\n return (v: any) => (!v || v.length >= len) || t(err || '$vuetify.rules.minLength', [len])\n },\n strictLength: (len: number, err?: string) => {\n return (v: any) => (!v || v.length === len) || t(err || '$vuetify.rules.strictLength', [len])\n },\n exclude: (forbiddenCharacters: string[], err?: string) => {\n return (v: string) => {\n let error: string | true = true\n for (const character of forbiddenCharacters) {\n if (v.includes(character)) error = err || t('$vuetify.rules.exclude', character)\n }\n return error\n }\n },\n notEmpty: (err?: string) => {\n return (v: any) => (v && v.length > 0) || t(err || '$vuetify.rules.notEmpty')\n },\n pattern: (pattern: RegExp, err?: string) => {\n return (v: any) => (!v || pattern.test(v) || t(err || '$vuetify.rules.pattern'))\n },\n\n ...options?.aliases,\n }\n\n function resolve (fn: () => ValidationProps['rules']) {\n return computed(() => fn().map(rule => {\n let ruleName: string | null = null\n let ruleParams: ValidationRuleParams = [undefined]\n if (Array.isArray(rule)) {\n ruleName = rule[0]\n ruleParams = rule.slice(1) as ValidationRuleParams\n } else if (typeof rule === 'string') {\n ruleName = rule\n }\n\n if (ruleName !== null) {\n if (ruleName.startsWith('$')) {\n ruleName = ruleName.slice(1)\n }\n\n return aliases[ruleName]?.(...ruleParams)\n } else {\n return rule\n }\n }))\n }\n\n return {\n resolve,\n aliases,\n }\n}\n\nexport const RulesSymbol: InjectionKey<RulesInstance> = Symbol.for('vuetify:rules')\n\nexport function useRules (): RuleAliases\nexport function useRules (fn: () => ValidationProps['rules']): Readonly<Ref<ValidationProps['rules']>> | Readonly<Ref<ValidationRule[]>>\n\nexport function useRules (fn?: () => ValidationProps['rules']) {\n const rules = inject(RulesSymbol, null)\n\n if (!fn) {\n if (!rules) {\n throw new Error('Could not find Vuetify rules injection')\n }\n return rules.aliases\n }\n\n return rules?.resolve(fn) ?? toRef(fn)\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"rules.js","names":["computed","inject","toRef","createRules","options","locale","t","aliases","required","err","v","email","test","number","Number","integer","capital","maxLength","len","length","minLength","strictLength","exclude","forbiddenCharacters","error","character","includes","notEmpty","pattern","resolve","fn","map","rule","ruleName","ruleParams","undefined","Array","isArray","slice","startsWith","RulesSymbol","Symbol","for","useRules","rules","Error"],"sources":["../../../src/labs/rules/rules.ts"],"sourcesContent":["// Utilities\nimport { computed, inject, toRef } from 'vue'\n\n// Types\nimport type { InjectionKey, Ref } from 'vue'\nimport type { LocaleInstance } from '@/composables/locale'\nimport type { ValidationProps, ValidationRule } from '@/composables/validation'\n\nexport type ValidationRuleBuilderWithoutOptions = (err?: string) => ValidationRule\nexport type ValidationRuleBuilderWithOptions<T> = (options: T, err?: string) => ValidationRule\nexport type ValidationRuleBuilder =\n | ValidationRuleBuilderWithoutOptions\n | ValidationRuleBuilderWithOptions<any>\n\nexport interface RuleAliases {\n [name: string]: ValidationRuleBuilder\n required: ValidationRuleBuilderWithoutOptions\n email: ValidationRuleBuilderWithoutOptions\n number: ValidationRuleBuilderWithoutOptions\n integer: ValidationRuleBuilderWithoutOptions\n capital: ValidationRuleBuilderWithoutOptions\n maxLength: ValidationRuleBuilderWithOptions<number>\n minLength: ValidationRuleBuilderWithOptions<number>\n strictLength: ValidationRuleBuilderWithOptions<number>\n exclude: ValidationRuleBuilderWithOptions<string[]>\n notEmpty: ValidationRuleBuilderWithoutOptions\n pattern: ValidationRuleBuilderWithOptions<RegExp>\n}\n\nexport type RulesOptions = {\n aliases?: Partial<RuleAliases>\n}\n\ntype ValidationRuleParams = [any, string?]\nexport type ValidationAlias = string | [string, ...ValidationRuleParams]\n\nexport type RulesInstance = {\n resolve: (fn: () => ValidationProps['rules']) => Readonly<Ref<any[]>>\n aliases: RuleAliases\n}\n\nexport function createRules (options: RulesOptions | undefined, locale: LocaleInstance) {\n const { t } = locale\n\n const aliases: RuleAliases = {\n required: (err?: string) => {\n return (v: any) => {\n // If the modifier .number is used, the 0 will be a number and it's a falsy value so we need to check for it\n return v === 0 || !!v || t(err || '$vuetify.rules.required')\n }\n },\n email: (err?: string) => {\n return (v: any) => (!v || (typeof v === 'string' && /^.+@\\S+\\.\\S+$/.test(v))) || t(err || '$vuetify.rules.email')\n },\n number: (err?: string) => {\n return (v: string) => !!Number(v) || t(err || '$vuetify.rules.number')\n },\n integer: (err?: string) => {\n return (v: string) => (/^[\\d]*$/.test(v)) || t(err || '$vuetify.rules.integer')\n },\n capital: (err?: string) => {\n return (v: string) => (/^[A-Z]*$/.test(v)) || t(err || '$vuetify.rules.capital')\n },\n maxLength: (len: number, err?: string) => {\n return (v: any) => (!v || v.length <= len) || t(err || '$vuetify.rules.maxLength', len)\n },\n minLength: (len: number, err?: string) => {\n return (v: any) => (!v || v.length >= len) || t(err || '$vuetify.rules.minLength', len)\n },\n strictLength: (len: number, err?: string) => {\n return (v: any) => (!v || v.length === len) || t(err || '$vuetify.rules.strictLength', len)\n },\n exclude: (forbiddenCharacters: string[], err?: string) => {\n return (v: string) => {\n let error: string | true = true\n for (const character of forbiddenCharacters) {\n if (v.includes(character)) error = err || t('$vuetify.rules.exclude', character)\n }\n return error\n }\n },\n notEmpty: (err?: string) => {\n return (v: any) => (v && v.length > 0) || t(err || '$vuetify.rules.notEmpty')\n },\n pattern: (pattern: RegExp, err?: string) => {\n return (v: any) => (!v || pattern.test(v) || t(err || '$vuetify.rules.pattern'))\n },\n\n ...options?.aliases,\n }\n\n function resolve (fn: () => ValidationProps['rules']) {\n return computed(() => fn().map(rule => {\n let ruleName: string | null = null\n let ruleParams: ValidationRuleParams = [undefined]\n if (Array.isArray(rule)) {\n ruleName = rule[0]\n ruleParams = rule.slice(1) as ValidationRuleParams\n } else if (typeof rule === 'string') {\n ruleName = rule\n }\n\n if (ruleName !== null) {\n if (ruleName.startsWith('$')) {\n ruleName = ruleName.slice(1)\n }\n\n return aliases[ruleName]?.(...ruleParams)\n } else {\n return rule\n }\n }))\n }\n\n return {\n resolve,\n aliases,\n }\n}\n\nexport const RulesSymbol: InjectionKey<RulesInstance> = Symbol.for('vuetify:rules')\n\nexport function useRules (): RuleAliases\nexport function useRules (fn: () => ValidationProps['rules']): Readonly<Ref<ValidationProps['rules']>> | Readonly<Ref<ValidationRule[]>>\n\nexport function useRules (fn?: () => ValidationProps['rules']) {\n const rules = inject(RulesSymbol, null)\n\n if (!fn) {\n if (!rules) {\n throw new Error('Could not find Vuetify rules injection')\n }\n return rules.aliases\n }\n\n return rules?.resolve(fn) ?? toRef(fn)\n}\n"],"mappings":"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","ignoreList":[]}
@@ -2,7 +2,7 @@
2
2
  import { Box } from "./box.js";
3
3
  /** @see https://stackoverflow.com/a/57876601/2074736 */
4
4
  export function nullifyTransforms(el) {
5
- const rect = el.getBoundingClientRect();
5
+ const rect = new Box(el.getBoundingClientRect());
6
6
  const style = getComputedStyle(el);
7
7
  const tx = style.transform;
8
8
  if (tx) {
@@ -1 +1 @@
1
- {"version":3,"file":"animation.js","names":["Box","nullifyTransforms","el","rect","getBoundingClientRect","style","getComputedStyle","tx","transform","ta","sx","sy","dx","dy","startsWith","slice","split","Number","to","transformOrigin","x","parseFloat","y","indexOf","w","width","offsetWidth","h","height","offsetHeight","animate","keyframes","options","finished","Promise","resolve","animation","err","onfinish"],"sources":["../../src/util/animation.ts"],"sourcesContent":["// Utilities\nimport { Box } from '@/util/box'\n\n/** @see https://stackoverflow.com/a/57876601/2074736 */\nexport function nullifyTransforms (el: HTMLElement): Box {\n const rect = el.getBoundingClientRect()\n const style = getComputedStyle(el)\n const tx = style.transform\n\n if (tx) {\n let ta, sx, sy, dx, dy\n if (tx.startsWith('matrix3d(')) {\n ta = tx.slice(9, -1).split(/, /)\n sx = Number(ta[0])\n sy = Number(ta[5])\n dx = Number(ta[12])\n dy = Number(ta[13])\n } else if (tx.startsWith('matrix(')) {\n ta = tx.slice(7, -1).split(/, /)\n sx = Number(ta[0])\n sy = Number(ta[3])\n dx = Number(ta[4])\n dy = Number(ta[5])\n } else {\n return new Box(rect)\n }\n\n const to = style.transformOrigin\n const x = rect.x - dx - (1 - sx) * parseFloat(to)\n const y = rect.y - dy - (1 - sy) * parseFloat(to.slice(to.indexOf(' ') + 1))\n const w = sx ? rect.width / sx : el.offsetWidth + 1\n const h = sy ? rect.height / sy : el.offsetHeight + 1\n\n return new Box({ x, y, width: w, height: h })\n } else {\n return new Box(rect)\n }\n}\n\nexport function animate (\n el: Element,\n keyframes: Keyframe[] | PropertyIndexedKeyframes | null,\n options?: number | KeyframeAnimationOptions\n) {\n if (typeof el.animate === 'undefined') return { finished: Promise.resolve() }\n\n let animation: Animation\n try {\n animation = el.animate(keyframes, options)\n } catch (err) {\n return { finished: Promise.resolve() }\n }\n\n if (typeof animation.finished === 'undefined') {\n (animation as any).finished = new Promise(resolve => {\n animation.onfinish = () => {\n resolve(animation)\n }\n })\n }\n\n return animation\n}\n"],"mappings":"AAAA;AAAA,SACSA,GAAG;AAEZ;AACA,OAAO,SAASC,iBAAiBA,CAAEC,EAAe,EAAO;EACvD,MAAMC,IAAI,GAAGD,EAAE,CAACE,qBAAqB,CAAC,CAAC;EACvC,MAAMC,KAAK,GAAGC,gBAAgB,CAACJ,EAAE,CAAC;EAClC,MAAMK,EAAE,GAAGF,KAAK,CAACG,SAAS;EAE1B,IAAID,EAAE,EAAE;IACN,IAAIE,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE;IACtB,IAAIN,EAAE,CAACO,UAAU,CAAC,WAAW,CAAC,EAAE;MAC9BL,EAAE,GAAGF,EAAE,CAACQ,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAACC,KAAK,CAAC,IAAI,CAAC;MAChCN,EAAE,GAAGO,MAAM,CAACR,EAAE,CAAC,CAAC,CAAC,CAAC;MAClBE,EAAE,GAAGM,MAAM,CAACR,EAAE,CAAC,CAAC,CAAC,CAAC;MAClBG,EAAE,GAAGK,MAAM,CAACR,EAAE,CAAC,EAAE,CAAC,CAAC;MACnBI,EAAE,GAAGI,MAAM,CAACR,EAAE,CAAC,EAAE,CAAC,CAAC;IACrB,CAAC,MAAM,IAAIF,EAAE,CAACO,UAAU,CAAC,SAAS,CAAC,EAAE;MACnCL,EAAE,GAAGF,EAAE,CAACQ,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAACC,KAAK,CAAC,IAAI,CAAC;MAChCN,EAAE,GAAGO,MAAM,CAACR,EAAE,CAAC,CAAC,CAAC,CAAC;MAClBE,EAAE,GAAGM,MAAM,CAACR,EAAE,CAAC,CAAC,CAAC,CAAC;MAClBG,EAAE,GAAGK,MAAM,CAACR,EAAE,CAAC,CAAC,CAAC,CAAC;MAClBI,EAAE,GAAGI,MAAM,CAACR,EAAE,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC,MAAM;MACL,OAAO,IAAIT,GAAG,CAACG,IAAI,CAAC;IACtB;IAEA,MAAMe,EAAE,GAAGb,KAAK,CAACc,eAAe;IAChC,MAAMC,CAAC,GAAGjB,IAAI,CAACiB,CAAC,GAAGR,EAAE,GAAG,CAAC,CAAC,GAAGF,EAAE,IAAIW,UAAU,CAACH,EAAE,CAAC;IACjD,MAAMI,CAAC,GAAGnB,IAAI,CAACmB,CAAC,GAAGT,EAAE,GAAG,CAAC,CAAC,GAAGF,EAAE,IAAIU,UAAU,CAACH,EAAE,CAACH,KAAK,CAACG,EAAE,CAACK,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5E,MAAMC,CAAC,GAAGd,EAAE,GAAGP,IAAI,CAACsB,KAAK,GAAGf,EAAE,GAAGR,EAAE,CAACwB,WAAW,GAAG,CAAC;IACnD,MAAMC,CAAC,GAAGhB,EAAE,GAAGR,IAAI,CAACyB,MAAM,GAAGjB,EAAE,GAAGT,EAAE,CAAC2B,YAAY,GAAG,CAAC;IAErD,OAAO,IAAI7B,GAAG,CAAC;MAAEoB,CAAC;MAAEE,CAAC;MAAEG,KAAK,EAAED,CAAC;MAAEI,MAAM,EAAED;IAAE,CAAC,CAAC;EAC/C,CAAC,MAAM;IACL,OAAO,IAAI3B,GAAG,CAACG,IAAI,CAAC;EACtB;AACF;AAEA,OAAO,SAAS2B,OAAOA,CACrB5B,EAAW,EACX6B,SAAuD,EACvDC,OAA2C,EAC3C;EACA,IAAI,OAAO9B,EAAE,CAAC4B,OAAO,KAAK,WAAW,EAAE,OAAO;IAAEG,QAAQ,EAAEC,OAAO,CAACC,OAAO,CAAC;EAAE,CAAC;EAE7E,IAAIC,SAAoB;EACxB,IAAI;IACFA,SAAS,GAAGlC,EAAE,CAAC4B,OAAO,CAACC,SAAS,EAAEC,OAAO,CAAC;EAC5C,CAAC,CAAC,OAAOK,GAAG,EAAE;IACZ,OAAO;MAAEJ,QAAQ,EAAEC,OAAO,CAACC,OAAO,CAAC;IAAE,CAAC;EACxC;EAEA,IAAI,OAAOC,SAAS,CAACH,QAAQ,KAAK,WAAW,EAAE;IAC5CG,SAAS,CAASH,QAAQ,GAAG,IAAIC,OAAO,CAACC,OAAO,IAAI;MACnDC,SAAS,CAACE,QAAQ,GAAG,MAAM;QACzBH,OAAO,CAACC,SAAS,CAAC;MACpB,CAAC;IACH,CAAC,CAAC;EACJ;EAEA,OAAOA,SAAS;AAClB","ignoreList":[]}
1
+ {"version":3,"file":"animation.js","names":["Box","nullifyTransforms","el","rect","getBoundingClientRect","style","getComputedStyle","tx","transform","ta","sx","sy","dx","dy","startsWith","slice","split","Number","to","transformOrigin","x","parseFloat","y","indexOf","w","width","offsetWidth","h","height","offsetHeight","animate","keyframes","options","finished","Promise","resolve","animation","err","onfinish"],"sources":["../../src/util/animation.ts"],"sourcesContent":["// Utilities\nimport { Box } from '@/util/box'\n\n/** @see https://stackoverflow.com/a/57876601/2074736 */\nexport function nullifyTransforms (el: HTMLElement): Box {\n const rect = new Box(el.getBoundingClientRect())\n const style = getComputedStyle(el)\n const tx = style.transform\n\n if (tx) {\n let ta, sx, sy, dx, dy\n if (tx.startsWith('matrix3d(')) {\n ta = tx.slice(9, -1).split(/, /)\n sx = Number(ta[0])\n sy = Number(ta[5])\n dx = Number(ta[12])\n dy = Number(ta[13])\n } else if (tx.startsWith('matrix(')) {\n ta = tx.slice(7, -1).split(/, /)\n sx = Number(ta[0])\n sy = Number(ta[3])\n dx = Number(ta[4])\n dy = Number(ta[5])\n } else {\n return new Box(rect)\n }\n\n const to = style.transformOrigin\n const x = rect.x - dx - (1 - sx) * parseFloat(to)\n const y = rect.y - dy - (1 - sy) * parseFloat(to.slice(to.indexOf(' ') + 1))\n const w = sx ? rect.width / sx : el.offsetWidth + 1\n const h = sy ? rect.height / sy : el.offsetHeight + 1\n\n return new Box({ x, y, width: w, height: h })\n } else {\n return new Box(rect)\n }\n}\n\nexport function animate (\n el: Element,\n keyframes: Keyframe[] | PropertyIndexedKeyframes | null,\n options?: number | KeyframeAnimationOptions\n) {\n if (typeof el.animate === 'undefined') return { finished: Promise.resolve() }\n\n let animation: Animation\n try {\n animation = el.animate(keyframes, options)\n } catch (err) {\n return { finished: Promise.resolve() }\n }\n\n if (typeof animation.finished === 'undefined') {\n (animation as any).finished = new Promise(resolve => {\n animation.onfinish = () => {\n resolve(animation)\n }\n })\n }\n\n return animation\n}\n"],"mappings":"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","ignoreList":[]}
package/lib/util/box.d.ts CHANGED
@@ -3,7 +3,7 @@ export declare class Box {
3
3
  y: number;
4
4
  width: number;
5
5
  height: number;
6
- constructor({ x, y, width, height }: {
6
+ constructor(args: DOMRect | {
7
7
  x: number;
8
8
  y: number;
9
9
  width: number;