vuetify 3.8.1 → 3.8.3
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.
- package/dist/json/attributes.json +2066 -2066
- package/dist/json/importMap-labs.json +26 -26
- package/dist/json/importMap.json +164 -164
- package/dist/json/web-types.json +4116 -3862
- package/dist/vuetify-labs.cjs +784 -697
- package/dist/vuetify-labs.css +3174 -3162
- package/dist/vuetify-labs.d.ts +2103 -1144
- package/dist/vuetify-labs.esm.js +785 -698
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +784 -697
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +565 -590
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +2963 -2960
- package/dist/vuetify.d.ts +190 -169
- package/dist/vuetify.esm.js +566 -591
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +565 -590
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +1264 -1235
- package/dist/vuetify.min.js.map +1 -1
- package/lib/blueprints/md3.js +18 -5
- package/lib/blueprints/md3.js.map +1 -1
- package/lib/components/VAlert/VAlert.js +8 -9
- package/lib/components/VAlert/VAlert.js.map +1 -1
- package/lib/components/VAppBar/VAppBar.js +4 -4
- package/lib/components/VAppBar/VAppBar.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.js +1 -2
- package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/lib/components/VBadge/VBadge.js +2 -3
- package/lib/components/VBadge/VBadge.js.map +1 -1
- package/lib/components/VBanner/VBanner.js +3 -3
- package/lib/components/VBanner/VBanner.js.map +1 -1
- package/lib/components/VBottomNavigation/VBottomNavigation.js +8 -8
- package/lib/components/VBottomNavigation/VBottomNavigation.js.map +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbs.js +6 -6
- package/lib/components/VBreadcrumbs/VBreadcrumbs.js.map +1 -1
- package/lib/components/VBreadcrumbs/VBreadcrumbsItem.js +1 -2
- package/lib/components/VBreadcrumbs/VBreadcrumbsItem.js.map +1 -1
- package/lib/components/VBtn/VBtn.js +3 -3
- package/lib/components/VBtn/VBtn.js.map +1 -1
- package/lib/components/VBtnGroup/VBtnGroup.js +4 -4
- package/lib/components/VBtnGroup/VBtnGroup.js.map +1 -1
- package/lib/components/VCard/VCard.js +7 -8
- package/lib/components/VCard/VCard.js.map +1 -1
- package/lib/components/VCheckbox/VCheckbox.js +2 -3
- package/lib/components/VCheckbox/VCheckbox.js.map +1 -1
- package/lib/components/VCheckbox/VCheckboxBtn.js +3 -3
- package/lib/components/VCheckbox/VCheckboxBtn.js.map +1 -1
- package/lib/components/VChip/VChip.js +8 -9
- package/lib/components/VChip/VChip.js.map +1 -1
- package/lib/components/VChipGroup/VChipGroup.js +5 -5
- package/lib/components/VChipGroup/VChipGroup.js.map +1 -1
- package/lib/components/VCode/VCode.css +3 -0
- package/lib/components/VCode/VCode.sass +3 -0
- package/lib/components/VCombobox/VCombobox.js +3 -4
- package/lib/components/VCombobox/VCombobox.js.map +1 -1
- package/lib/components/VCounter/VCounter.js +2 -2
- package/lib/components/VCounter/VCounter.js.map +1 -1
- package/lib/components/VDataIterator/VDataIterator.js +2 -2
- package/lib/components/VDataIterator/VDataIterator.js.map +1 -1
- package/lib/components/VDataTable/VDataTable.css +1 -1
- package/lib/components/VDataTable/VDataTable.js +7 -7
- package/lib/components/VDataTable/VDataTable.js.map +1 -1
- package/lib/components/VDataTable/VDataTable.sass +1 -1
- package/lib/components/VDataTable/VDataTableHeaders.js +1 -1
- package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
- package/lib/components/VDataTable/VDataTableServer.js +7 -7
- package/lib/components/VDataTable/VDataTableServer.js.map +1 -1
- package/lib/components/VDataTable/VDataTableVirtual.js +7 -7
- package/lib/components/VDataTable/VDataTableVirtual.js.map +1 -1
- package/lib/components/VDataTable/composables/expand.d.ts +1 -1
- package/lib/components/VDataTable/composables/expand.js +1 -1
- package/lib/components/VDataTable/composables/expand.js.map +1 -1
- package/lib/components/VDataTable/composables/options.js +8 -8
- package/lib/components/VDataTable/composables/options.js.map +1 -1
- package/lib/components/VDataTable/composables/select.d.ts +2 -2
- package/lib/components/VDataTable/composables/select.js +2 -2
- package/lib/components/VDataTable/composables/select.js.map +1 -1
- package/lib/components/VDataTable/composables/sort.d.ts +2 -2
- package/lib/components/VDataTable/composables/sort.js +2 -2
- package/lib/components/VDataTable/composables/sort.js.map +1 -1
- package/lib/components/VDatePicker/VDatePicker.d.ts +7 -7
- package/lib/components/VDatePicker/VDatePicker.js +4 -4
- package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerHeader.js +1 -1
- package/lib/components/VDatePicker/VDatePickerHeader.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerMonth.d.ts +7 -7
- package/lib/components/VDatePicker/VDatePickerMonth.js +2 -2
- package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
- package/lib/components/VDialog/VDialog.d.ts +9 -9
- package/lib/components/VDivider/VDivider.js +2 -2
- package/lib/components/VDivider/VDivider.js.map +1 -1
- package/lib/components/VEmptyState/VEmptyState.js +1 -2
- package/lib/components/VEmptyState/VEmptyState.js.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanel.js +3 -3
- package/lib/components/VExpansionPanel/VExpansionPanel.js.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.js +3 -3
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.js.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanels.js +14 -14
- package/lib/components/VExpansionPanel/VExpansionPanels.js.map +1 -1
- package/lib/components/VFab/VFab.js +2 -2
- package/lib/components/VFab/VFab.js.map +1 -1
- package/lib/components/VField/VField.js +5 -5
- package/lib/components/VField/VField.js.map +1 -1
- package/lib/components/VFileInput/VFileInput.js +2 -2
- package/lib/components/VFileInput/VFileInput.js.map +1 -1
- package/lib/components/VFooter/VFooter.js +4 -4
- package/lib/components/VFooter/VFooter.js.map +1 -1
- package/lib/components/VForm/VForm.d.ts +40 -40
- package/lib/components/VIcon/VIcon.js +4 -4
- package/lib/components/VIcon/VIcon.js.map +1 -1
- package/lib/components/VImg/VImg.js +2 -2
- package/lib/components/VImg/VImg.js.map +1 -1
- package/lib/components/VInput/VInput.js +3 -3
- package/lib/components/VInput/VInput.js.map +1 -1
- package/lib/components/VLayout/VLayoutItem.js +5 -5
- package/lib/components/VLayout/VLayoutItem.js.map +1 -1
- package/lib/components/VList/VList.js +14 -14
- package/lib/components/VList/VList.js.map +1 -1
- package/lib/components/VList/VListGroup.js +2 -2
- package/lib/components/VList/VListGroup.js.map +1 -1
- package/lib/components/VList/VListItem.d.ts +3 -3
- package/lib/components/VList/VListItem.js +6 -6
- package/lib/components/VList/VListItem.js.map +1 -1
- package/lib/components/VList/VListSubheader.js +1 -2
- package/lib/components/VList/VListSubheader.js.map +1 -1
- package/lib/components/VMenu/VMenu.d.ts +15 -15
- package/lib/components/VMenu/VMenu.js +2 -2
- package/lib/components/VMenu/VMenu.js.map +1 -1
- package/lib/components/VMessages/VMessages.js +1 -1
- package/lib/components/VMessages/VMessages.js.map +1 -1
- package/lib/components/VNavigationDrawer/VNavigationDrawer.js +6 -6
- package/lib/components/VNavigationDrawer/VNavigationDrawer.js.map +1 -1
- package/lib/components/VNumberInput/VNumberInput.js +11 -11
- package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
- package/lib/components/VOtpInput/VOtpInput.js +7 -7
- package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
- package/lib/components/VOverlay/VOverlay.d.ts +3 -3
- package/lib/components/VOverlay/VOverlay.js +4 -4
- package/lib/components/VOverlay/VOverlay.js.map +1 -1
- package/lib/components/VOverlay/locationStrategies.d.ts +4 -0
- package/lib/components/VOverlay/locationStrategies.js +33 -4
- package/lib/components/VOverlay/locationStrategies.js.map +1 -1
- package/lib/components/VPagination/VPagination.js +7 -7
- package/lib/components/VPagination/VPagination.js.map +1 -1
- package/lib/components/VProgressCircular/VProgressCircular.js +9 -9
- package/lib/components/VProgressCircular/VProgressCircular.js.map +1 -1
- package/lib/components/VProgressLinear/VProgressLinear.js +4 -4
- package/lib/components/VProgressLinear/VProgressLinear.js.map +1 -1
- package/lib/components/VSelect/VSelect.js +3 -2
- package/lib/components/VSelect/VSelect.js.map +1 -1
- package/lib/components/VSelectionControl/VSelectionControl.d.ts +1 -1
- package/lib/components/VSelectionControl/VSelectionControl.js +7 -7
- package/lib/components/VSelectionControl/VSelectionControl.js.map +1 -1
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.js +15 -15
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.js.map +1 -1
- package/lib/components/VSheet/VSheet.js +1 -2
- package/lib/components/VSheet/VSheet.js.map +1 -1
- package/lib/components/VSkeletonLoader/VSkeletonLoader.js +2 -2
- package/lib/components/VSkeletonLoader/VSkeletonLoader.js.map +1 -1
- package/lib/components/VSlider/slider.js +10 -10
- package/lib/components/VSlider/slider.js.map +1 -1
- package/lib/components/VSnackbar/VSnackbar.d.ts +9 -9
- package/lib/components/VSparkline/VSparkline.js +2 -2
- package/lib/components/VSparkline/VSparkline.js.map +1 -1
- package/lib/components/VSwitch/VSwitch.js +3 -3
- package/lib/components/VSwitch/VSwitch.js.map +1 -1
- package/lib/components/VSystemBar/VSystemBar.js +2 -2
- package/lib/components/VSystemBar/VSystemBar.js.map +1 -1
- package/lib/components/VTabs/VTab.d.ts +3 -3
- package/lib/components/VTabs/VTab.js +1 -1
- package/lib/components/VTabs/VTab.js.map +1 -1
- package/lib/components/VTabs/VTabs.js +7 -7
- package/lib/components/VTabs/VTabs.js.map +1 -1
- package/lib/components/VTimeline/VTimeline.js +9 -9
- package/lib/components/VTimeline/VTimeline.js.map +1 -1
- package/lib/components/VTimeline/VTimelineDivider.js +2 -3
- package/lib/components/VTimeline/VTimelineDivider.js.map +1 -1
- package/lib/components/VToolbar/VToolbar.js +2 -2
- package/lib/components/VToolbar/VToolbar.js.map +1 -1
- package/lib/components/VToolbar/VToolbarItems.js +2 -2
- package/lib/components/VToolbar/VToolbarItems.js.map +1 -1
- package/lib/components/VTooltip/VTooltip.d.ts +9 -9
- package/lib/components/VTooltip/VTooltip.js +3 -3
- package/lib/components/VTooltip/VTooltip.js.map +1 -1
- package/lib/components/VVirtualScroll/VVirtualScroll.js +1 -1
- package/lib/components/VVirtualScroll/VVirtualScroll.js.map +1 -1
- package/lib/components/VWindow/VWindow.js +3 -3
- package/lib/components/VWindow/VWindow.js.map +1 -1
- package/lib/components/transitions/dialog-transition.js +11 -2
- package/lib/components/transitions/dialog-transition.js.map +1 -1
- package/lib/composables/border.d.ts +1 -1
- package/lib/composables/border.js +5 -8
- package/lib/composables/border.js.map +1 -1
- package/lib/composables/calendar.d.ts +23 -56
- package/lib/composables/calendar.js +16 -18
- package/lib/composables/calendar.js.map +1 -1
- package/lib/composables/color.d.ts +8 -10
- package/lib/composables/color.js +21 -22
- package/lib/composables/color.js.map +1 -1
- package/lib/composables/date/DateAdapter.d.ts +1 -0
- package/lib/composables/date/DateAdapter.js.map +1 -1
- package/lib/composables/date/adapters/vuetify.d.ts +1 -0
- package/lib/composables/date/adapters/vuetify.js +101 -160
- package/lib/composables/date/adapters/vuetify.js.map +1 -1
- package/lib/composables/date/date.d.ts +1 -1
- package/lib/composables/date/date.js +0 -20
- package/lib/composables/date/date.js.map +1 -1
- package/lib/composables/defaults.js +6 -3
- package/lib/composables/defaults.js.map +1 -1
- package/lib/composables/density.d.ts +1 -1
- package/lib/composables/density.js +2 -2
- package/lib/composables/density.js.map +1 -1
- package/lib/composables/display.d.ts +4 -2
- package/lib/composables/display.js +2 -2
- package/lib/composables/display.js.map +1 -1
- package/lib/composables/elevation.js +4 -6
- package/lib/composables/elevation.js.map +1 -1
- package/lib/composables/filter.js +2 -1
- package/lib/composables/filter.js.map +1 -1
- package/lib/composables/focus.d.ts +4 -2
- package/lib/composables/focus.js +2 -2
- package/lib/composables/focus.js.map +1 -1
- package/lib/composables/form.d.ts +7 -7
- package/lib/composables/form.js +3 -3
- package/lib/composables/form.js.map +1 -1
- package/lib/composables/goto.js +2 -2
- package/lib/composables/goto.js.map +1 -1
- package/lib/composables/group.d.ts +3 -3
- package/lib/composables/group.js +4 -4
- package/lib/composables/group.js.map +1 -1
- package/lib/composables/icons.d.ts +2 -2
- package/lib/composables/icons.js +2 -2
- package/lib/composables/icons.js.map +1 -1
- package/lib/composables/layout.d.ts +10 -4
- package/lib/composables/layout.js +4 -4
- package/lib/composables/layout.js.map +1 -1
- package/lib/composables/lazy.d.ts +1 -1
- package/lib/composables/lazy.js +2 -2
- package/lib/composables/lazy.js.map +1 -1
- package/lib/composables/loader.d.ts +4 -2
- package/lib/composables/loader.js +2 -2
- package/lib/composables/loader.js.map +1 -1
- package/lib/composables/locale.js +3 -3
- package/lib/composables/locale.js.map +1 -1
- package/lib/composables/nested/nested.d.ts +3 -3
- package/lib/composables/nested/nested.js +4 -4
- package/lib/composables/nested/nested.js.map +1 -1
- package/lib/composables/position.d.ts +1 -1
- package/lib/composables/position.js +2 -2
- package/lib/composables/position.js.map +1 -1
- package/lib/composables/router.d.ts +3 -3
- package/lib/composables/router.js +8 -8
- package/lib/composables/router.js.map +1 -1
- package/lib/composables/size.d.ts +8 -5
- package/lib/composables/size.js +6 -5
- package/lib/composables/size.js.map +1 -1
- package/lib/composables/ssrBoot.d.ts +4 -2
- package/lib/composables/ssrBoot.js +2 -2
- package/lib/composables/ssrBoot.js.map +1 -1
- package/lib/composables/stack.d.ts +7 -5
- package/lib/composables/stack.js +5 -5
- package/lib/composables/stack.js.map +1 -1
- package/lib/composables/theme.js +9 -9
- package/lib/composables/theme.js.map +1 -1
- package/lib/composables/variant.d.ts +5 -6
- package/lib/composables/variant.js +6 -6
- package/lib/composables/variant.js.map +1 -1
- package/lib/entry-bundler.d.ts +1 -0
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +80 -71
- package/lib/framework.js +1 -1
- package/lib/labs/VCalendar/VCalendar.d.ts +607 -218
- package/lib/labs/VCalendar/VCalendar.js +55 -27
- package/lib/labs/VCalendar/VCalendar.js.map +1 -1
- package/lib/labs/VCalendar/VCalendarDay.css +9 -0
- package/lib/labs/VCalendar/VCalendarDay.d.ts +329 -17
- package/lib/labs/VCalendar/VCalendarDay.js +18 -10
- package/lib/labs/VCalendar/VCalendarDay.js.map +1 -1
- package/lib/labs/VCalendar/VCalendarDay.sass +8 -0
- package/lib/labs/VCalendar/VCalendarEvent.js +15 -5
- package/lib/labs/VCalendar/VCalendarEvent.js.map +1 -1
- package/lib/labs/VCalendar/VCalendarHeader.d.ts +44 -17
- package/lib/labs/VCalendar/VCalendarHeader.js +5 -2
- package/lib/labs/VCalendar/VCalendarHeader.js.map +1 -1
- package/lib/labs/VCalendar/VCalendarInterval.d.ts +171 -17
- package/lib/labs/VCalendar/VCalendarInterval.js +56 -19
- package/lib/labs/VCalendar/VCalendarInterval.js.map +1 -1
- package/lib/labs/VCalendar/VCalendarIntervalEvent.d.ts +92 -17
- package/lib/labs/VCalendar/VCalendarIntervalEvent.js +30 -10
- package/lib/labs/VCalendar/VCalendarIntervalEvent.js.map +1 -1
- package/lib/labs/VCalendar/VCalendarMonthDay.d.ts +122 -88
- package/lib/labs/VCalendar/VCalendarMonthDay.js +24 -22
- package/lib/labs/VCalendar/VCalendarMonthDay.js.map +1 -1
- package/lib/labs/VDateInput/VDateInput.d.ts +7 -7
- package/lib/labs/VIconBtn/VIconBtn.d.ts +6 -21
- package/lib/labs/VIconBtn/VIconBtn.js +10 -12
- package/lib/labs/VIconBtn/VIconBtn.js.map +1 -1
- package/lib/labs/VPicker/VPicker.js +1 -2
- package/lib/labs/VPicker/VPicker.js.map +1 -1
- package/lib/labs/VTimePicker/VTimePickerClock.js +3 -3
- package/lib/labs/VTimePicker/VTimePickerClock.js.map +1 -1
- package/lib/labs/VTreeview/VTreeview.js +11 -11
- package/lib/labs/VTreeview/VTreeview.js.map +1 -1
- package/lib/labs/entry-bundler.d.ts +1 -0
- package/lib/util/box.js.map +1 -1
- package/lib/util/helpers.d.ts +7 -2
- package/lib/util/helpers.js +16 -5
- package/lib/util/helpers.js.map +1 -1
- package/package.json +49 -47
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VWindow.js","names":["VBtn","makeComponentProps","useGroup","useLocale","useRtl","makeTagProps","makeThemeProps","provideTheme","Touch","computed","provide","ref","shallowRef","watch","genericComponent","propsFactory","useRender","VWindowSymbol","Symbol","for","VWindowGroupSymbol","makeVWindowProps","continuous","Boolean","nextIcon","type","String","Function","Object","default","prevIcon","reverse","showArrows","validator","v","touch","undefined","direction","modelValue","disabled","selectedClass","mandatory","VWindow","name","directives","props","emits","value","setup","_ref","slots","themeClasses","isRtl","t","group","rootRef","isRtlReverse","isReversed","transition","axis","transitionCount","transitionHeight","activeIndex","items","findIndex","item","selected","includes","id","newVal","oldVal","itemsLength","length","lastIndex","canMoveBack","canMoveForward","prev","next","arrows","prevProps","icon","class","onClick","push","_createVNode","nextProps","touchOptions","options","left","right","start","_ref2","originalEvent","stopPropagation","_withDirectives","tag","style","height","additional","_resolveDirective"],"sources":["../../../src/components/VWindow/VWindow.tsx"],"sourcesContent":["// Styles\nimport './VWindow.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { useGroup } from '@/composables/group'\nimport { useLocale, useRtl } from '@/composables/locale'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Directives\nimport { Touch } from '@/directives/touch'\n\n// Utilities\nimport { computed, provide, ref, shallowRef, watch } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComputedRef, InjectionKey, PropType, Ref } from 'vue'\nimport type { GroupItemProvide, GroupProvide } from '@/composables/group'\nimport type { IconValue } from '@/composables/icons'\nimport type { TouchHandlers } from '@/directives/touch'\nimport type { GenericProps } from '@/util'\n\nexport type VWindowSlots = {\n default: { group: GroupProvide }\n additional: { group: GroupProvide }\n prev: { props: ControlProps }\n next: { props: ControlProps }\n}\n\ntype WindowProvide = {\n transition: ComputedRef<undefined | string>\n transitionCount: Ref<number>\n transitionHeight: Ref<undefined | string>\n isReversed: Ref<boolean>\n rootRef: Ref<HTMLElement | undefined>\n}\n\ntype ControlProps = {\n icon: IconValue\n class: string\n onClick: () => void\n 'aria-label': string\n}\n\nexport const VWindowSymbol: InjectionKey<WindowProvide> = Symbol.for('vuetify:v-window')\nexport const VWindowGroupSymbol: InjectionKey<GroupItemProvide> = Symbol.for('vuetify:v-window-group')\n\nexport const makeVWindowProps = propsFactory({\n continuous: Boolean,\n nextIcon: {\n type: [Boolean, String, Function, Object] as PropType<IconValue>,\n default: '$next',\n },\n prevIcon: {\n type: [Boolean, String, Function, Object] as PropType<IconValue>,\n default: '$prev',\n },\n reverse: Boolean,\n showArrows: {\n type: [Boolean, String],\n validator: (v: any) => typeof v === 'boolean' || v === 'hover',\n },\n touch: {\n type: [Object, Boolean] as PropType<boolean | TouchHandlers>,\n default: undefined,\n },\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n\n modelValue: null,\n disabled: Boolean,\n selectedClass: {\n type: String,\n default: 'v-window-item--active',\n },\n // TODO: mandatory should probably not be exposed but do this for now\n mandatory: {\n type: [Boolean, String] as PropType<boolean | 'force'>,\n default: 'force' as const,\n },\n\n ...makeComponentProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VWindow')\n\nexport const VWindow = genericComponent<new <T>(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VWindowSlots,\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VWindow',\n\n directives: {\n Touch,\n },\n\n props: makeVWindowProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { isRtl } = useRtl()\n const { t } = useLocale()\n\n const group = useGroup(props, VWindowGroupSymbol)\n\n const rootRef = ref()\n const isRtlReverse = computed(() => isRtl.value ? !props.reverse : props.reverse)\n const isReversed = shallowRef(false)\n const transition = computed(() => {\n const axis = props.direction === 'vertical' ? 'y' : 'x'\n const reverse = isRtlReverse.value ? !isReversed.value : isReversed.value\n const direction = reverse ? '-reverse' : ''\n\n return `v-window-${axis}${direction}-transition`\n })\n const transitionCount = shallowRef(0)\n const transitionHeight = ref<undefined | string>(undefined)\n\n const activeIndex = computed(() => {\n return group.items.value.findIndex(item => group.selected.value.includes(item.id))\n })\n\n watch(activeIndex, (newVal, oldVal) => {\n const itemsLength = group.items.value.length\n const lastIndex = itemsLength - 1\n\n if (itemsLength <= 2) {\n isReversed.value = newVal < oldVal\n } else if (newVal === lastIndex && oldVal === 0) {\n isReversed.value = true\n } else if (newVal === 0 && oldVal === lastIndex) {\n isReversed.value = false\n } else {\n isReversed.value = newVal < oldVal\n }\n })\n\n provide(VWindowSymbol, {\n transition,\n isReversed,\n transitionCount,\n transitionHeight,\n rootRef,\n })\n\n const canMoveBack = computed(() => props.continuous || activeIndex.value !== 0)\n const canMoveForward = computed(() => props.continuous || activeIndex.value !== group.items.value.length - 1)\n\n function prev () {\n canMoveBack.value && group.prev()\n }\n\n function next () {\n canMoveForward.value && group.next()\n }\n\n const arrows = computed(() => {\n const arrows = []\n\n const prevProps = {\n icon: isRtl.value ? props.nextIcon : props.prevIcon,\n class: `v-window__${isRtlReverse.value ? 'right' : 'left'}`,\n onClick: group.prev,\n 'aria-label': t('$vuetify.carousel.prev'),\n }\n\n arrows.push(canMoveBack.value\n ? slots.prev\n ? slots.prev({ props: prevProps })\n : <VBtn { ...prevProps } />\n : <div />\n )\n\n const nextProps = {\n icon: isRtl.value ? props.prevIcon : props.nextIcon,\n class: `v-window__${isRtlReverse.value ? 'left' : 'right'}`,\n onClick: group.next,\n 'aria-label': t('$vuetify.carousel.next'),\n }\n\n arrows.push(canMoveForward.value\n ? slots.next\n ? slots.next({ props: nextProps })\n : <VBtn { ...nextProps } />\n : <div />\n )\n\n return arrows\n })\n\n const touchOptions = computed(() => {\n if (props.touch === false) return props.touch\n\n const options: TouchHandlers = {\n left: () => {\n isRtlReverse.value ? prev() : next()\n },\n right: () => {\n isRtlReverse.value ? next() : prev()\n },\n start: ({ originalEvent }) => {\n originalEvent.stopPropagation()\n },\n }\n\n return {\n ...options,\n ...(props.touch === true ? {} : props.touch),\n }\n })\n\n useRender(() => (\n <props.tag\n ref={ rootRef }\n class={[\n 'v-window',\n {\n 'v-window--show-arrows-on-hover': props.showArrows === 'hover',\n },\n themeClasses.value,\n props.class,\n ]}\n style={ props.style }\n v-touch={ touchOptions.value }\n >\n <div\n class=\"v-window__container\"\n style={{\n height: transitionHeight.value,\n }}\n >\n { slots.default?.({ group }) }\n\n { props.showArrows !== false && (\n <div class=\"v-window__controls\">\n { arrows.value }\n </div>\n )}\n </div>\n\n { slots.additional?.({ group }) }\n </props.tag>\n ))\n\n return {\n group,\n }\n },\n})\n\nexport type VWindow = InstanceType<typeof VWindow>\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"VWindow.js","names":["VBtn","makeComponentProps","useGroup","useLocale","useRtl","makeTagProps","makeThemeProps","provideTheme","Touch","computed","provide","ref","shallowRef","toRef","watch","genericComponent","propsFactory","useRender","VWindowSymbol","Symbol","for","VWindowGroupSymbol","makeVWindowProps","continuous","Boolean","nextIcon","type","String","Function","Object","default","prevIcon","reverse","showArrows","validator","v","touch","undefined","direction","modelValue","disabled","selectedClass","mandatory","VWindow","name","directives","props","emits","value","setup","_ref","slots","themeClasses","isRtl","t","group","rootRef","isRtlReverse","isReversed","transition","axis","transitionCount","transitionHeight","activeIndex","items","findIndex","item","selected","includes","id","newVal","oldVal","itemsLength","length","lastIndex","canMoveBack","canMoveForward","prev","next","arrows","prevProps","icon","class","onClick","push","_createVNode","nextProps","touchOptions","options","left","right","start","_ref2","originalEvent","stopPropagation","_withDirectives","tag","style","height","additional","_resolveDirective"],"sources":["../../../src/components/VWindow/VWindow.tsx"],"sourcesContent":["// Styles\nimport './VWindow.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { useGroup } from '@/composables/group'\nimport { useLocale, useRtl } from '@/composables/locale'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Directives\nimport { Touch } from '@/directives/touch'\n\n// Utilities\nimport { computed, provide, ref, shallowRef, toRef, watch } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComputedRef, InjectionKey, PropType, Ref } from 'vue'\nimport type { GroupItemProvide, GroupProvide } from '@/composables/group'\nimport type { IconValue } from '@/composables/icons'\nimport type { TouchHandlers } from '@/directives/touch'\nimport type { GenericProps } from '@/util'\n\nexport type VWindowSlots = {\n default: { group: GroupProvide }\n additional: { group: GroupProvide }\n prev: { props: ControlProps }\n next: { props: ControlProps }\n}\n\ntype WindowProvide = {\n transition: ComputedRef<undefined | string>\n transitionCount: Ref<number>\n transitionHeight: Ref<undefined | string>\n isReversed: Ref<boolean>\n rootRef: Ref<HTMLElement | undefined>\n}\n\ntype ControlProps = {\n icon: IconValue\n class: string\n onClick: () => void\n 'aria-label': string\n}\n\nexport const VWindowSymbol: InjectionKey<WindowProvide> = Symbol.for('vuetify:v-window')\nexport const VWindowGroupSymbol: InjectionKey<GroupItemProvide> = Symbol.for('vuetify:v-window-group')\n\nexport const makeVWindowProps = propsFactory({\n continuous: Boolean,\n nextIcon: {\n type: [Boolean, String, Function, Object] as PropType<IconValue>,\n default: '$next',\n },\n prevIcon: {\n type: [Boolean, String, Function, Object] as PropType<IconValue>,\n default: '$prev',\n },\n reverse: Boolean,\n showArrows: {\n type: [Boolean, String],\n validator: (v: any) => typeof v === 'boolean' || v === 'hover',\n },\n touch: {\n type: [Object, Boolean] as PropType<boolean | TouchHandlers>,\n default: undefined,\n },\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n\n modelValue: null,\n disabled: Boolean,\n selectedClass: {\n type: String,\n default: 'v-window-item--active',\n },\n // TODO: mandatory should probably not be exposed but do this for now\n mandatory: {\n type: [Boolean, String] as PropType<boolean | 'force'>,\n default: 'force' as const,\n },\n\n ...makeComponentProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n}, 'VWindow')\n\nexport const VWindow = genericComponent<new <T>(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VWindowSlots,\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VWindow',\n\n directives: {\n Touch,\n },\n\n props: makeVWindowProps(),\n\n emits: {\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { slots }) {\n const { themeClasses } = provideTheme(props)\n const { isRtl } = useRtl()\n const { t } = useLocale()\n\n const group = useGroup(props, VWindowGroupSymbol)\n\n const rootRef = ref()\n const isRtlReverse = computed(() => isRtl.value ? !props.reverse : props.reverse)\n const isReversed = shallowRef(false)\n const transition = computed(() => {\n const axis = props.direction === 'vertical' ? 'y' : 'x'\n const reverse = isRtlReverse.value ? !isReversed.value : isReversed.value\n const direction = reverse ? '-reverse' : ''\n\n return `v-window-${axis}${direction}-transition`\n })\n const transitionCount = shallowRef(0)\n const transitionHeight = ref<undefined | string>(undefined)\n\n const activeIndex = computed(() => {\n return group.items.value.findIndex(item => group.selected.value.includes(item.id))\n })\n\n watch(activeIndex, (newVal, oldVal) => {\n const itemsLength = group.items.value.length\n const lastIndex = itemsLength - 1\n\n if (itemsLength <= 2) {\n isReversed.value = newVal < oldVal\n } else if (newVal === lastIndex && oldVal === 0) {\n isReversed.value = true\n } else if (newVal === 0 && oldVal === lastIndex) {\n isReversed.value = false\n } else {\n isReversed.value = newVal < oldVal\n }\n })\n\n provide(VWindowSymbol, {\n transition,\n isReversed,\n transitionCount,\n transitionHeight,\n rootRef,\n })\n\n const canMoveBack = toRef(() => props.continuous || activeIndex.value !== 0)\n const canMoveForward = toRef(() => props.continuous || activeIndex.value !== group.items.value.length - 1)\n\n function prev () {\n canMoveBack.value && group.prev()\n }\n\n function next () {\n canMoveForward.value && group.next()\n }\n\n const arrows = computed(() => {\n const arrows = []\n\n const prevProps = {\n icon: isRtl.value ? props.nextIcon : props.prevIcon,\n class: `v-window__${isRtlReverse.value ? 'right' : 'left'}`,\n onClick: group.prev,\n 'aria-label': t('$vuetify.carousel.prev'),\n }\n\n arrows.push(canMoveBack.value\n ? slots.prev\n ? slots.prev({ props: prevProps })\n : <VBtn { ...prevProps } />\n : <div />\n )\n\n const nextProps = {\n icon: isRtl.value ? props.prevIcon : props.nextIcon,\n class: `v-window__${isRtlReverse.value ? 'left' : 'right'}`,\n onClick: group.next,\n 'aria-label': t('$vuetify.carousel.next'),\n }\n\n arrows.push(canMoveForward.value\n ? slots.next\n ? slots.next({ props: nextProps })\n : <VBtn { ...nextProps } />\n : <div />\n )\n\n return arrows\n })\n\n const touchOptions = computed(() => {\n if (props.touch === false) return props.touch\n\n const options: TouchHandlers = {\n left: () => {\n isRtlReverse.value ? prev() : next()\n },\n right: () => {\n isRtlReverse.value ? next() : prev()\n },\n start: ({ originalEvent }) => {\n originalEvent.stopPropagation()\n },\n }\n\n return {\n ...options,\n ...(props.touch === true ? {} : props.touch),\n }\n })\n\n useRender(() => (\n <props.tag\n ref={ rootRef }\n class={[\n 'v-window',\n {\n 'v-window--show-arrows-on-hover': props.showArrows === 'hover',\n },\n themeClasses.value,\n props.class,\n ]}\n style={ props.style }\n v-touch={ touchOptions.value }\n >\n <div\n class=\"v-window__container\"\n style={{\n height: transitionHeight.value,\n }}\n >\n { slots.default?.({ group }) }\n\n { props.showArrows !== false && (\n <div class=\"v-window__controls\">\n { arrows.value }\n </div>\n )}\n </div>\n\n { slots.additional?.({ group }) }\n </props.tag>\n ))\n\n return {\n group,\n }\n },\n})\n\nexport type VWindow = InstanceType<typeof VWindow>\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,6 +5,7 @@ import { getTargetBox } from "../../util/box.js"; // Types
|
|
|
5
5
|
export const makeVDialogTransitionProps = propsFactory({
|
|
6
6
|
target: [Object, Array]
|
|
7
7
|
}, 'v-dialog-transition');
|
|
8
|
+
const saved = new WeakMap();
|
|
8
9
|
export const VDialogTransition = genericComponent()({
|
|
9
10
|
name: 'VDialogTransition',
|
|
10
11
|
props: makeVDialogTransitionProps(),
|
|
@@ -21,13 +22,15 @@ export const VDialogTransition = genericComponent()({
|
|
|
21
22
|
await new Promise(resolve => requestAnimationFrame(resolve));
|
|
22
23
|
await new Promise(resolve => requestAnimationFrame(resolve));
|
|
23
24
|
el.style.visibility = '';
|
|
25
|
+
const dimensions = getDimensions(props.target, el);
|
|
24
26
|
const {
|
|
25
27
|
x,
|
|
26
28
|
y,
|
|
27
29
|
sx,
|
|
28
30
|
sy,
|
|
29
31
|
speed
|
|
30
|
-
} =
|
|
32
|
+
} = dimensions;
|
|
33
|
+
saved.set(el, dimensions);
|
|
31
34
|
const animation = animate(el, [{
|
|
32
35
|
transform: `translate(${x}px, ${y}px) scale(${sx}, ${sy})`,
|
|
33
36
|
opacity: 0
|
|
@@ -56,13 +59,19 @@ export const VDialogTransition = genericComponent()({
|
|
|
56
59
|
},
|
|
57
60
|
async onLeave(el, done) {
|
|
58
61
|
await new Promise(resolve => requestAnimationFrame(resolve));
|
|
62
|
+
let dimensions;
|
|
63
|
+
if (!Array.isArray(props.target) && !props.target.offsetParent && saved.has(el)) {
|
|
64
|
+
dimensions = saved.get(el);
|
|
65
|
+
} else {
|
|
66
|
+
dimensions = getDimensions(props.target, el);
|
|
67
|
+
}
|
|
59
68
|
const {
|
|
60
69
|
x,
|
|
61
70
|
y,
|
|
62
71
|
sx,
|
|
63
72
|
sy,
|
|
64
73
|
speed
|
|
65
|
-
} =
|
|
74
|
+
} = dimensions;
|
|
66
75
|
const animation = animate(el, [{}, {
|
|
67
76
|
transform: `translate(${x}px, ${y}px) scale(${sx}, ${sy})`,
|
|
68
77
|
opacity: 0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog-transition.js","names":["Transition","mergeProps","_mergeProps","createVNode","_createVNode","acceleratedEasing","animate","deceleratedEasing","genericComponent","nullifyTransforms","propsFactory","standardEasing","getTargetBox","makeVDialogTransitionProps","target","Object","Array","VDialogTransition","name","props","setup","_ref","slots","functions","onBeforeEnter","el","style","pointerEvents","visibility","onEnter","done","Promise","resolve","requestAnimationFrame","x","y","sx","sy","speed","getDimensions","animation","transform","opacity","duration","easing","getChildren","forEach","offset","finished","then","onAfterEnter","removeProperty","onBeforeLeave","onLeave","onAfterLeave","els","querySelector","children","targetBox","elBox","originX","originY","getComputedStyle","transformOrigin","split","map","v","parseFloat","anchorSide","anchorOffset","getPropertyValue","offsetX","left","width","offsetY","top","height","tsx","tsy","maxs","Math","max","asa","window","innerWidth","innerHeight","min"],"sources":["../../../src/components/transitions/dialog-transition.tsx"],"sourcesContent":["// Utilities\nimport { Transition } from 'vue'\nimport {\n acceleratedEasing,\n animate,\n deceleratedEasing,\n genericComponent,\n nullifyTransforms,\n propsFactory,\n standardEasing,\n} from '@/util'\nimport { getTargetBox } from '@/util/box'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const makeVDialogTransitionProps = propsFactory({\n target: [Object, Array] as PropType<HTMLElement | [x: number, y: number]>,\n}, 'v-dialog-transition')\n\nexport const VDialogTransition = genericComponent()({\n name: 'VDialogTransition',\n\n props: makeVDialogTransitionProps(),\n\n setup (props, { slots }) {\n const functions = {\n onBeforeEnter (el: Element) {\n (el as HTMLElement).style.pointerEvents = 'none'\n ;(el as HTMLElement).style.visibility = 'hidden'\n },\n async onEnter (el: Element, done: () => void) {\n await new Promise(resolve => requestAnimationFrame(resolve))\n await new Promise(resolve => requestAnimationFrame(resolve))\n ;(el as HTMLElement).style.visibility = ''\n\n const { x, y, sx, sy, speed } = getDimensions(props.target!, el as HTMLElement)\n\n const animation = animate(el, [\n { transform: `translate(${x}px, ${y}px) scale(${sx}, ${sy})`, opacity: 0 },\n {},\n ], {\n duration: 225 * speed,\n easing: deceleratedEasing,\n })\n getChildren(el)?.forEach(el => {\n animate(el, [\n { opacity: 0 },\n { opacity: 0, offset: 0.33 },\n {},\n ], {\n duration: 225 * 2 * speed,\n easing: standardEasing,\n })\n })\n animation.finished.then(() => done())\n },\n onAfterEnter (el: Element) {\n (el as HTMLElement).style.removeProperty('pointer-events')\n },\n onBeforeLeave (el: Element) {\n (el as HTMLElement).style.pointerEvents = 'none'\n },\n async onLeave (el: Element, done: () => void) {\n await new Promise(resolve => requestAnimationFrame(resolve))\n\n const { x, y, sx, sy, speed } = getDimensions(props.target!, el as HTMLElement)\n\n const animation = animate(el, [\n {},\n { transform: `translate(${x}px, ${y}px) scale(${sx}, ${sy})`, opacity: 0 },\n ], {\n duration: 125 * speed,\n easing: acceleratedEasing,\n })\n animation.finished.then(() => done())\n getChildren(el)?.forEach(el => {\n animate(el, [\n {},\n { opacity: 0, offset: 0.2 },\n { opacity: 0 },\n ], {\n duration: 125 * 2 * speed,\n easing: standardEasing,\n })\n })\n },\n onAfterLeave (el: Element) {\n (el as HTMLElement).style.removeProperty('pointer-events')\n },\n }\n\n return () => {\n return props.target\n ? (\n <Transition\n name=\"dialog-transition\"\n { ...functions }\n css={ false }\n v-slots={ slots }\n />\n )\n : <Transition name=\"dialog-transition\" v-slots={ slots } />\n }\n },\n})\n\n/** Animatable children (card, sheet, list) */\nfunction getChildren (el: Element) {\n const els = el.querySelector(':scope > .v-card, :scope > .v-sheet, :scope > .v-list')?.children\n return els && [...els]\n}\n\nfunction getDimensions (target: HTMLElement | [x: number, y: number], el: HTMLElement) {\n const targetBox = getTargetBox(target)\n const elBox = nullifyTransforms(el)\n const [originX, originY] = getComputedStyle(el).transformOrigin.split(' ').map(v => parseFloat(v))\n\n const [anchorSide, anchorOffset] = getComputedStyle(el).getPropertyValue('--v-overlay-anchor-origin').split(' ')\n\n let offsetX = targetBox.left + targetBox.width / 2\n if (anchorSide === 'left' || anchorOffset === 'left') {\n offsetX -= targetBox.width / 2\n } else if (anchorSide === 'right' || anchorOffset === 'right') {\n offsetX += targetBox.width / 2\n }\n\n let offsetY = targetBox.top + targetBox.height / 2\n if (anchorSide === 'top' || anchorOffset === 'top') {\n offsetY -= targetBox.height / 2\n } else if (anchorSide === 'bottom' || anchorOffset === 'bottom') {\n offsetY += targetBox.height / 2\n }\n\n const tsx = targetBox.width / elBox.width\n const tsy = targetBox.height / elBox.height\n const maxs = Math.max(1, tsx, tsy)\n const sx = tsx / maxs || 0\n const sy = tsy / maxs || 0\n\n // Animate elements larger than 12% of the screen area up to 1.5x slower\n const asa = (elBox.width * elBox.height) / (window.innerWidth * window.innerHeight)\n const speed = asa > 0.12\n ? Math.min(1.5, (asa - 0.12) * 10 + 1)\n : 1\n\n return {\n x: offsetX - (originX + elBox.left),\n y: offsetY - (originY + elBox.top),\n sx,\n sy,\n speed,\n }\n}\n\nexport type VDialogTransition = InstanceType<typeof VDialogTransition>\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"dialog-transition.js","names":["Transition","mergeProps","_mergeProps","createVNode","_createVNode","acceleratedEasing","animate","deceleratedEasing","genericComponent","nullifyTransforms","propsFactory","standardEasing","getTargetBox","makeVDialogTransitionProps","target","Object","Array","saved","WeakMap","VDialogTransition","name","props","setup","_ref","slots","functions","onBeforeEnter","el","style","pointerEvents","visibility","onEnter","done","Promise","resolve","requestAnimationFrame","dimensions","getDimensions","x","y","sx","sy","speed","set","animation","transform","opacity","duration","easing","getChildren","forEach","offset","finished","then","onAfterEnter","removeProperty","onBeforeLeave","onLeave","isArray","offsetParent","has","get","onAfterLeave","els","querySelector","children","targetBox","elBox","originX","originY","getComputedStyle","transformOrigin","split","map","v","parseFloat","anchorSide","anchorOffset","getPropertyValue","offsetX","left","width","offsetY","top","height","tsx","tsy","maxs","Math","max","asa","window","innerWidth","innerHeight","min"],"sources":["../../../src/components/transitions/dialog-transition.tsx"],"sourcesContent":["// Utilities\nimport { Transition } from 'vue'\nimport {\n acceleratedEasing,\n animate,\n deceleratedEasing,\n genericComponent,\n nullifyTransforms,\n propsFactory,\n standardEasing,\n} from '@/util'\nimport { getTargetBox } from '@/util/box'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const makeVDialogTransitionProps = propsFactory({\n target: [Object, Array] as PropType<HTMLElement | [x: number, y: number]>,\n}, 'v-dialog-transition')\n\nconst saved = new WeakMap<Element, Dimensions>()\n\nexport const VDialogTransition = genericComponent()({\n name: 'VDialogTransition',\n\n props: makeVDialogTransitionProps(),\n\n setup (props, { slots }) {\n const functions = {\n onBeforeEnter (el: Element) {\n (el as HTMLElement).style.pointerEvents = 'none'\n ;(el as HTMLElement).style.visibility = 'hidden'\n },\n async onEnter (el: Element, done: () => void) {\n await new Promise(resolve => requestAnimationFrame(resolve))\n await new Promise(resolve => requestAnimationFrame(resolve))\n ;(el as HTMLElement).style.visibility = ''\n\n const dimensions = getDimensions(props.target!, el as HTMLElement)\n const { x, y, sx, sy, speed } = dimensions\n saved.set(el, dimensions)\n\n const animation = animate(el, [\n { transform: `translate(${x}px, ${y}px) scale(${sx}, ${sy})`, opacity: 0 },\n {},\n ], {\n duration: 225 * speed,\n easing: deceleratedEasing,\n })\n getChildren(el)?.forEach(el => {\n animate(el, [\n { opacity: 0 },\n { opacity: 0, offset: 0.33 },\n {},\n ], {\n duration: 225 * 2 * speed,\n easing: standardEasing,\n })\n })\n animation.finished.then(() => done())\n },\n onAfterEnter (el: Element) {\n (el as HTMLElement).style.removeProperty('pointer-events')\n },\n onBeforeLeave (el: Element) {\n (el as HTMLElement).style.pointerEvents = 'none'\n },\n async onLeave (el: Element, done: () => void) {\n await new Promise(resolve => requestAnimationFrame(resolve))\n\n let dimensions\n if (!Array.isArray(props.target) && !props.target!.offsetParent && saved.has(el)) {\n dimensions = saved.get(el)!\n } else {\n dimensions = getDimensions(props.target!, el as HTMLElement)\n }\n const { x, y, sx, sy, speed } = dimensions\n\n const animation = animate(el, [\n {},\n { transform: `translate(${x}px, ${y}px) scale(${sx}, ${sy})`, opacity: 0 },\n ], {\n duration: 125 * speed,\n easing: acceleratedEasing,\n })\n animation.finished.then(() => done())\n getChildren(el)?.forEach(el => {\n animate(el, [\n {},\n { opacity: 0, offset: 0.2 },\n { opacity: 0 },\n ], {\n duration: 125 * 2 * speed,\n easing: standardEasing,\n })\n })\n },\n onAfterLeave (el: Element) {\n (el as HTMLElement).style.removeProperty('pointer-events')\n },\n }\n\n return () => {\n return props.target\n ? (\n <Transition\n name=\"dialog-transition\"\n { ...functions }\n css={ false }\n v-slots={ slots }\n />\n )\n : <Transition name=\"dialog-transition\" v-slots={ slots } />\n }\n },\n})\n\n/** Animatable children (card, sheet, list) */\nfunction getChildren (el: Element) {\n const els = el.querySelector(':scope > .v-card, :scope > .v-sheet, :scope > .v-list')?.children\n return els && [...els]\n}\n\ntype Dimensions = {\n x: number\n y: number\n sx: number\n sy: number\n speed: number\n}\n\nfunction getDimensions (target: HTMLElement | [x: number, y: number], el: HTMLElement): Dimensions {\n const targetBox = getTargetBox(target)\n const elBox = nullifyTransforms(el)\n const [originX, originY] = getComputedStyle(el).transformOrigin.split(' ').map(v => parseFloat(v))\n\n const [anchorSide, anchorOffset] = getComputedStyle(el).getPropertyValue('--v-overlay-anchor-origin').split(' ')\n\n let offsetX = targetBox.left + targetBox.width / 2\n if (anchorSide === 'left' || anchorOffset === 'left') {\n offsetX -= targetBox.width / 2\n } else if (anchorSide === 'right' || anchorOffset === 'right') {\n offsetX += targetBox.width / 2\n }\n\n let offsetY = targetBox.top + targetBox.height / 2\n if (anchorSide === 'top' || anchorOffset === 'top') {\n offsetY -= targetBox.height / 2\n } else if (anchorSide === 'bottom' || anchorOffset === 'bottom') {\n offsetY += targetBox.height / 2\n }\n\n const tsx = targetBox.width / elBox.width\n const tsy = targetBox.height / elBox.height\n const maxs = Math.max(1, tsx, tsy)\n const sx = tsx / maxs || 0\n const sy = tsy / maxs || 0\n\n // Animate elements larger than 12% of the screen area up to 1.5x slower\n const asa = (elBox.width * elBox.height) / (window.innerWidth * window.innerHeight)\n const speed = asa > 0.12\n ? Math.min(1.5, (asa - 0.12) * 10 + 1)\n : 1\n\n return {\n x: offsetX - (originX + elBox.left),\n y: offsetY - (originY + elBox.top),\n sx,\n sy,\n speed,\n }\n}\n\nexport type VDialogTransition = InstanceType<typeof VDialogTransition>\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -10,5 +10,5 @@ export declare const makeBorderProps: <Defaults extends {
|
|
|
10
10
|
};
|
|
11
11
|
};
|
|
12
12
|
export declare function useBorder(props: BorderProps, name?: string): {
|
|
13
|
-
borderClasses: import("vue").ComputedRef<string[]>;
|
|
13
|
+
borderClasses: import("vue").ComputedRef<string | string[]>;
|
|
14
14
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Utilities
|
|
2
|
-
import { computed
|
|
2
|
+
import { computed } from 'vue';
|
|
3
3
|
import { getCurrentInstanceName, propsFactory } from "../util/index.js"; // Types
|
|
4
4
|
// Composables
|
|
5
5
|
export const makeBorderProps = propsFactory({
|
|
@@ -8,16 +8,13 @@ export const makeBorderProps = propsFactory({
|
|
|
8
8
|
export function useBorder(props) {
|
|
9
9
|
let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
|
|
10
10
|
const borderClasses = computed(() => {
|
|
11
|
-
const border =
|
|
12
|
-
const classes = [];
|
|
11
|
+
const border = props.border;
|
|
13
12
|
if (border === true || border === '') {
|
|
14
|
-
|
|
13
|
+
return `${name}--border`;
|
|
15
14
|
} else if (typeof border === 'string' || border === 0) {
|
|
16
|
-
|
|
17
|
-
classes.push(`border-${value}`);
|
|
18
|
-
}
|
|
15
|
+
return String(border).split(' ').map(v => `border-${v}`);
|
|
19
16
|
}
|
|
20
|
-
return
|
|
17
|
+
return [];
|
|
21
18
|
});
|
|
22
19
|
return {
|
|
23
20
|
borderClasses
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"border.js","names":["computed","
|
|
1
|
+
{"version":3,"file":"border.js","names":["computed","getCurrentInstanceName","propsFactory","makeBorderProps","border","Boolean","Number","String","useBorder","props","name","arguments","length","undefined","borderClasses","split","map","v"],"sources":["../../src/composables/border.ts"],"sourcesContent":["// Utilities\nimport { computed } from 'vue'\nimport { getCurrentInstanceName, propsFactory } from '@/util'\n\n// Types\nexport interface BorderProps {\n border?: boolean | number | string\n}\n\n// Composables\nexport const makeBorderProps = propsFactory({\n border: [Boolean, Number, String],\n}, 'border')\n\nexport function useBorder (\n props: BorderProps,\n name = getCurrentInstanceName(),\n) {\n const borderClasses = computed(() => {\n const border = props.border\n\n if (border === true || border === '') {\n return `${name}--border`\n } else if (\n typeof border === 'string' ||\n border === 0\n ) {\n return String(border).split(' ').map(v => `border-${v}`)\n }\n\n return []\n })\n\n return { borderClasses }\n}\n"],"mappings":"AAAA;AACA,SAASA,QAAQ,QAAQ,KAAK;AAAA,SACrBC,sBAAsB,EAAEC,YAAY,4BAE7C;AAKA;AACA,OAAO,MAAMC,eAAe,GAAGD,YAAY,CAAC;EAC1CE,MAAM,EAAE,CAACC,OAAO,EAAEC,MAAM,EAAEC,MAAM;AAClC,CAAC,EAAE,QAAQ,CAAC;AAEZ,OAAO,SAASC,SAASA,CACvBC,KAAkB,EAElB;EAAA,IADAC,IAAI,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGV,sBAAsB,CAAC,CAAC;EAE/B,MAAMa,aAAa,GAAGd,QAAQ,CAAC,MAAM;IACnC,MAAMI,MAAM,GAAGK,KAAK,CAACL,MAAM;IAE3B,IAAIA,MAAM,KAAK,IAAI,IAAIA,MAAM,KAAK,EAAE,EAAE;MACpC,OAAO,GAAGM,IAAI,UAAU;IAC1B,CAAC,MAAM,IACL,OAAON,MAAM,KAAK,QAAQ,IAC1BA,MAAM,KAAK,CAAC,EACZ;MACA,OAAOG,MAAM,CAACH,MAAM,CAAC,CAACW,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAACC,CAAC,IAAI,UAAUA,CAAC,EAAE,CAAC;IAC1D;IAEA,OAAO,EAAE;EACX,CAAC,CAAC;EAEF,OAAO;IAAEH;EAAc,CAAC;AAC1B","ignoreList":[]}
|
|
@@ -16,6 +16,24 @@ export interface CalendarProps {
|
|
|
16
16
|
'onUpdate:month': ((value: number) => void) | undefined;
|
|
17
17
|
'onUpdate:year': ((value: number) => void) | undefined;
|
|
18
18
|
}
|
|
19
|
+
export type CalendarDay = {
|
|
20
|
+
date: Date;
|
|
21
|
+
formatted: string;
|
|
22
|
+
isAdjacent: boolean;
|
|
23
|
+
isDisabled: boolean;
|
|
24
|
+
isEnd: boolean;
|
|
25
|
+
isHidden: boolean;
|
|
26
|
+
isSame: boolean;
|
|
27
|
+
isSelected: boolean;
|
|
28
|
+
isStart: boolean;
|
|
29
|
+
isToday: boolean;
|
|
30
|
+
isWeekEnd: boolean;
|
|
31
|
+
isWeekStart: boolean;
|
|
32
|
+
isoDate: string;
|
|
33
|
+
localized: string;
|
|
34
|
+
month: number;
|
|
35
|
+
year: number;
|
|
36
|
+
};
|
|
19
37
|
export type CalendarWeekdays = 0 | 1 | 2 | 3 | 4 | 5 | 6;
|
|
20
38
|
export declare const makeCalendarProps: <Defaults extends {
|
|
21
39
|
allowedDates?: unknown;
|
|
@@ -95,10 +113,10 @@ export declare const makeCalendarProps: <Defaults extends {
|
|
|
95
113
|
};
|
|
96
114
|
firstDayOfWeek: unknown extends Defaults["firstDayOfWeek"] ? {
|
|
97
115
|
type: (StringConstructor | NumberConstructor)[];
|
|
98
|
-
default:
|
|
116
|
+
default: undefined;
|
|
99
117
|
} : Omit<{
|
|
100
118
|
type: (StringConstructor | NumberConstructor)[];
|
|
101
|
-
default:
|
|
119
|
+
default: undefined;
|
|
102
120
|
}, "type" | "default"> & {
|
|
103
121
|
type: PropType<unknown extends Defaults["firstDayOfWeek"] ? string | number : string | number | Defaults["firstDayOfWeek"]>;
|
|
104
122
|
default: unknown extends Defaults["firstDayOfWeek"] ? string | number : NonNullable<string | number> | Defaults["firstDayOfWeek"];
|
|
@@ -106,60 +124,9 @@ export declare const makeCalendarProps: <Defaults extends {
|
|
|
106
124
|
};
|
|
107
125
|
export declare function useCalendar(props: CalendarProps): {
|
|
108
126
|
displayValue: import("vue").ComputedRef<unknown>;
|
|
109
|
-
daysInMonth: import("vue").ComputedRef<
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
formatted: string;
|
|
113
|
-
year: number;
|
|
114
|
-
month: number;
|
|
115
|
-
isDisabled: boolean;
|
|
116
|
-
isWeekStart: boolean;
|
|
117
|
-
isWeekEnd: boolean;
|
|
118
|
-
isToday: boolean;
|
|
119
|
-
isAdjacent: boolean;
|
|
120
|
-
isHidden: boolean;
|
|
121
|
-
isStart: boolean;
|
|
122
|
-
isSelected: boolean;
|
|
123
|
-
isEnd: boolean;
|
|
124
|
-
isSame: boolean;
|
|
125
|
-
localized: string;
|
|
126
|
-
}[]>;
|
|
127
|
-
daysInWeek: import("vue").ComputedRef<{
|
|
128
|
-
date: unknown;
|
|
129
|
-
isoDate: string;
|
|
130
|
-
formatted: string;
|
|
131
|
-
year: number;
|
|
132
|
-
month: number;
|
|
133
|
-
isDisabled: boolean;
|
|
134
|
-
isWeekStart: boolean;
|
|
135
|
-
isWeekEnd: boolean;
|
|
136
|
-
isToday: boolean;
|
|
137
|
-
isAdjacent: boolean;
|
|
138
|
-
isHidden: boolean;
|
|
139
|
-
isStart: boolean;
|
|
140
|
-
isSelected: boolean;
|
|
141
|
-
isEnd: boolean;
|
|
142
|
-
isSame: boolean;
|
|
143
|
-
localized: string;
|
|
144
|
-
}[]>;
|
|
145
|
-
genDays: (days: unknown[], today: unknown) => {
|
|
146
|
-
date: unknown;
|
|
147
|
-
isoDate: string;
|
|
148
|
-
formatted: string;
|
|
149
|
-
year: number;
|
|
150
|
-
month: number;
|
|
151
|
-
isDisabled: boolean;
|
|
152
|
-
isWeekStart: boolean;
|
|
153
|
-
isWeekEnd: boolean;
|
|
154
|
-
isToday: boolean;
|
|
155
|
-
isAdjacent: boolean;
|
|
156
|
-
isHidden: boolean;
|
|
157
|
-
isStart: boolean;
|
|
158
|
-
isSelected: boolean;
|
|
159
|
-
isEnd: boolean;
|
|
160
|
-
isSame: boolean;
|
|
161
|
-
localized: string;
|
|
162
|
-
}[];
|
|
127
|
+
daysInMonth: import("vue").ComputedRef<CalendarDay[]>;
|
|
128
|
+
daysInWeek: import("vue").ComputedRef<CalendarDay[]>;
|
|
129
|
+
genDays: (days: Date[], today: Date) => CalendarDay[];
|
|
163
130
|
model: import("vue").Ref<readonly unknown[], readonly unknown[]> & {
|
|
164
131
|
readonly externalValue: unknown[] | undefined;
|
|
165
132
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Composables
|
|
2
|
-
import {
|
|
2
|
+
import { useDate } from "./date/date.js";
|
|
3
3
|
import { useProxiedModel } from "./proxiedModel.js"; // Utilities
|
|
4
4
|
import { computed } from 'vue';
|
|
5
5
|
import { propsFactory, wrapInArray } from "../util/index.js"; // Types
|
|
@@ -28,7 +28,7 @@ export const makeCalendarProps = propsFactory({
|
|
|
28
28
|
},
|
|
29
29
|
firstDayOfWeek: {
|
|
30
30
|
type: [Number, String],
|
|
31
|
-
default:
|
|
31
|
+
default: undefined
|
|
32
32
|
}
|
|
33
33
|
}, 'calendar');
|
|
34
34
|
export function useCalendar(props) {
|
|
@@ -51,14 +51,12 @@ export function useCalendar(props) {
|
|
|
51
51
|
return adapter.setMonth(date, value);
|
|
52
52
|
}, v => adapter.getMonth(v));
|
|
53
53
|
const weekDays = computed(() => {
|
|
54
|
-
const firstDayOfWeek =
|
|
55
|
-
|
|
54
|
+
const firstDayOfWeek = adapter.toJsDate(adapter.startOfWeek(adapter.date(), props.firstDayOfWeek)).getDay();
|
|
56
55
|
// Always generate all days, regardless of props.weekdays
|
|
57
56
|
return [0, 1, 2, 3, 4, 5, 6].map(day => (day + firstDayOfWeek) % 7);
|
|
58
57
|
});
|
|
59
58
|
const weeksInMonth = computed(() => {
|
|
60
|
-
const
|
|
61
|
-
const weeks = adapter.getWeekArray(month.value, firstDayOfWeek);
|
|
59
|
+
const weeks = adapter.getWeekArray(month.value, props.firstDayOfWeek);
|
|
62
60
|
const days = weeks.flat();
|
|
63
61
|
|
|
64
62
|
// Make sure there's always 6 weeks in month (6 * 7 days)
|
|
@@ -88,21 +86,21 @@ export function useCalendar(props) {
|
|
|
88
86
|
const isSame = adapter.isSameDay(date, month.value);
|
|
89
87
|
return {
|
|
90
88
|
date,
|
|
91
|
-
isoDate,
|
|
92
89
|
formatted: adapter.format(date, 'keyboardDate'),
|
|
93
|
-
year: adapter.getYear(date),
|
|
94
|
-
month: adapter.getMonth(date),
|
|
95
|
-
isDisabled: isDisabled(date),
|
|
96
|
-
isWeekStart: index % 7 === 0,
|
|
97
|
-
isWeekEnd: index % 7 === 6,
|
|
98
|
-
isToday: adapter.isSameDay(date, today),
|
|
99
90
|
isAdjacent,
|
|
100
|
-
|
|
101
|
-
isStart,
|
|
102
|
-
isSelected: model.value.some(value => adapter.isSameDay(date, value)),
|
|
91
|
+
isDisabled: isDisabled(date),
|
|
103
92
|
isEnd,
|
|
93
|
+
isHidden: isAdjacent && !props.showAdjacentMonths,
|
|
104
94
|
isSame,
|
|
105
|
-
|
|
95
|
+
isSelected: model.value.some(value => adapter.isSameDay(date, value)),
|
|
96
|
+
isStart,
|
|
97
|
+
isToday: adapter.isSameDay(date, today),
|
|
98
|
+
isWeekEnd: index % 7 === 6,
|
|
99
|
+
isWeekStart: index % 7 === 0,
|
|
100
|
+
isoDate,
|
|
101
|
+
localized: adapter.format(date, 'dayOfMonth'),
|
|
102
|
+
month: adapter.getMonth(date),
|
|
103
|
+
year: adapter.getYear(date)
|
|
106
104
|
};
|
|
107
105
|
});
|
|
108
106
|
}
|
|
@@ -122,7 +120,7 @@ export function useCalendar(props) {
|
|
|
122
120
|
});
|
|
123
121
|
const weekNumbers = computed(() => {
|
|
124
122
|
return weeksInMonth.value.map(week => {
|
|
125
|
-
return week.length ? getWeek(
|
|
123
|
+
return week.length ? adapter.getWeek(week[0], props.firstDayOfWeek) : null;
|
|
126
124
|
});
|
|
127
125
|
});
|
|
128
126
|
function isDisabled(value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.js","names":["getWeek","useDate","useProxiedModel","computed","propsFactory","wrapInArray","makeCalendarProps","allowedDates","Array","Function","disabled","type","Boolean","default","displayValue","modelValue","month","Number","String","max","min","showAdjacentMonths","year","weekdays","weeksInMonth","firstDayOfWeek","useCalendar","props","adapter","model","v","map","i","date","value","length","isArray","undefined","getYear","startOfYear","setYear","getMonth","startOfMonth","setMonth","weekDays","day","weeks","getWeekArray","days","flat","daysInMonth","lastDay","week","push","addDays","genDays","today","filter","includes","toJsDate","getDay","index","isoDate","toISO","isAdjacent","isSameMonth","isStart","isSameDay","isEnd","endOfMonth","isSame","formatted","format","isDisabled","isWeekStart","isWeekEnd","isToday","isHidden","isSelected","some","localized","daysInWeek","startOfWeek","weekNumbers","isAfter","d"],"sources":["../../src/composables/calendar.ts"],"sourcesContent":["// Composables\nimport { getWeek, useDate } from '@/composables/date/date'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed } from 'vue'\nimport { propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport interface CalendarProps {\n allowedDates: unknown[] | ((date: unknown) => boolean) | undefined\n disabled: boolean\n displayValue?: unknown\n modelValue: unknown[] | undefined\n max: unknown\n min: unknown\n showAdjacentMonths: boolean\n month: number | string | undefined\n weekdays: number[]\n year: number | string | undefined\n weeksInMonth: 'dynamic' | 'static'\n firstDayOfWeek: number | string | undefined\n\n 'onUpdate:modelValue': ((value: unknown[]) => void) | undefined\n 'onUpdate:month': ((value: number) => void) | undefined\n 'onUpdate:year': ((value: number) => void) | undefined\n}\n\nexport type CalendarWeekdays = 0 | 1 | 2 | 3 | 4 | 5 | 6\n\n// Composables\nexport const makeCalendarProps = propsFactory({\n allowedDates: [Array, Function] as PropType<unknown[] | ((date: unknown) => boolean)>,\n disabled: {\n type: Boolean,\n default: null,\n },\n displayValue: null as any as PropType<unknown>,\n modelValue: Array as PropType<unknown[]>,\n month: [Number, String],\n max: null as any as PropType<unknown>,\n min: null as any as PropType<unknown>,\n showAdjacentMonths: Boolean,\n year: [Number, String],\n weekdays: {\n type: Array as PropType<CalendarWeekdays[]>,\n default: () => [0, 1, 2, 3, 4, 5, 6],\n },\n weeksInMonth: {\n type: String as PropType<'dynamic' | 'static'>,\n default: 'dynamic',\n },\n firstDayOfWeek: {\n type: [Number, String],\n default: 0,\n },\n}, 'calendar')\n\nexport function useCalendar (props: CalendarProps) {\n const adapter = useDate()\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => wrapInArray(v).map(i => adapter.date(i)),\n )\n const displayValue = computed(() => {\n if (props.displayValue) return adapter.date(props.displayValue)\n if (model.value.length > 0) return adapter.date(model.value[0])\n if (props.min) return adapter.date(props.min)\n if (Array.isArray(props.allowedDates)) return adapter.date(props.allowedDates[0])\n\n return adapter.date()\n })\n\n const year = useProxiedModel(\n props,\n 'year',\n undefined,\n v => {\n const value = v != null ? Number(v) : adapter.getYear(displayValue.value)\n\n return adapter.startOfYear(adapter.setYear(adapter.date(), value))\n },\n v => adapter.getYear(v)\n )\n\n const month = useProxiedModel(\n props,\n 'month',\n undefined,\n v => {\n const value = v != null ? Number(v) : adapter.getMonth(displayValue.value)\n const date = adapter.setYear(adapter.startOfMonth(adapter.date()), adapter.getYear(year.value))\n\n return adapter.setMonth(date, value)\n },\n v => adapter.getMonth(v)\n )\n\n const weekDays = computed(() => {\n const firstDayOfWeek = Number(props.firstDayOfWeek)\n\n // Always generate all days, regardless of props.weekdays\n return [0, 1, 2, 3, 4, 5, 6].map(day => (day + firstDayOfWeek) % 7)\n })\n\n const weeksInMonth = computed(() => {\n const firstDayOfWeek = Number(props.firstDayOfWeek)\n const weeks = adapter.getWeekArray(month.value, firstDayOfWeek)\n\n const days = weeks.flat()\n\n // Make sure there's always 6 weeks in month (6 * 7 days)\n // if weeksInMonth is 'static'\n const daysInMonth = 6 * 7\n if (props.weeksInMonth === 'static' && days.length < daysInMonth) {\n const lastDay = days[days.length - 1]\n\n let week = []\n for (let day = 1; day <= daysInMonth - days.length; day++) {\n week.push(adapter.addDays(lastDay, day))\n\n if (day % 7 === 0) {\n weeks.push(week)\n week = []\n }\n }\n }\n\n return weeks\n })\n\n function genDays (days: unknown[], today: unknown) {\n return days.filter(date => {\n return weekDays.value.includes(adapter.toJsDate(date).getDay())\n }).map((date, index) => {\n const isoDate = adapter.toISO(date)\n const isAdjacent = !adapter.isSameMonth(date, month.value)\n const isStart = adapter.isSameDay(date, adapter.startOfMonth(month.value))\n const isEnd = adapter.isSameDay(date, adapter.endOfMonth(month.value))\n const isSame = adapter.isSameDay(date, month.value)\n\n return {\n date,\n isoDate,\n formatted: adapter.format(date, 'keyboardDate'),\n year: adapter.getYear(date),\n month: adapter.getMonth(date),\n isDisabled: isDisabled(date),\n isWeekStart: index % 7 === 0,\n isWeekEnd: index % 7 === 6,\n isToday: adapter.isSameDay(date, today),\n isAdjacent,\n isHidden: isAdjacent && !props.showAdjacentMonths,\n isStart,\n isSelected: model.value.some(value => adapter.isSameDay(date, value)),\n isEnd,\n isSame,\n localized: adapter.format(date, 'dayOfMonth'),\n }\n })\n }\n\n const daysInWeek = computed(() => {\n const lastDay = adapter.startOfWeek(displayValue.value, props.firstDayOfWeek)\n const week = []\n for (let day = 0; day <= 6; day++) {\n week.push(adapter.addDays(lastDay, day))\n }\n\n const today = adapter.date()\n\n return genDays(week, today)\n })\n\n const daysInMonth = computed(() => {\n const days = weeksInMonth.value.flat()\n const today = adapter.date() as Date\n\n return genDays(days, today)\n })\n\n const weekNumbers = computed(() => {\n return weeksInMonth.value.map(week => {\n return week.length ? getWeek(adapter, week[0]) : null\n })\n })\n\n function isDisabled (value: unknown) {\n if (props.disabled) return true\n\n const date = adapter.date(value)\n\n if (props.min && adapter.isAfter(adapter.date(props.min), date)) return true\n if (props.max && adapter.isAfter(date, adapter.date(props.max))) return true\n\n if (Array.isArray(props.allowedDates) && props.allowedDates.length > 0) {\n return !props.allowedDates.some(d => adapter.isSameDay(adapter.date(d), date))\n }\n\n if (typeof props.allowedDates === 'function') {\n return !props.allowedDates(date)\n }\n\n return !props.weekdays.includes(adapter.toJsDate(date).getDay())\n }\n\n return {\n displayValue,\n daysInMonth,\n daysInWeek,\n genDays,\n model,\n weeksInMonth,\n weekDays,\n weekNumbers,\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"calendar.js","names":["useDate","useProxiedModel","computed","propsFactory","wrapInArray","makeCalendarProps","allowedDates","Array","Function","disabled","type","Boolean","default","displayValue","modelValue","month","Number","String","max","min","showAdjacentMonths","year","weekdays","weeksInMonth","firstDayOfWeek","undefined","useCalendar","props","adapter","model","v","map","i","date","value","length","isArray","getYear","startOfYear","setYear","getMonth","startOfMonth","setMonth","weekDays","toJsDate","startOfWeek","getDay","day","weeks","getWeekArray","days","flat","daysInMonth","lastDay","week","push","addDays","genDays","today","filter","includes","index","isoDate","toISO","isAdjacent","isSameMonth","isStart","isSameDay","isEnd","endOfMonth","isSame","formatted","format","isDisabled","isHidden","isSelected","some","isToday","isWeekEnd","isWeekStart","localized","daysInWeek","weekNumbers","getWeek","isAfter","d"],"sources":["../../src/composables/calendar.ts"],"sourcesContent":["// Composables\nimport { useDate } from '@/composables/date/date'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed } from 'vue'\nimport { propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport interface CalendarProps {\n allowedDates: unknown[] | ((date: unknown) => boolean) | undefined\n disabled: boolean\n displayValue?: unknown\n modelValue: unknown[] | undefined\n max: unknown\n min: unknown\n showAdjacentMonths: boolean\n month: number | string | undefined\n weekdays: number[]\n year: number | string | undefined\n weeksInMonth: 'dynamic' | 'static'\n firstDayOfWeek: number | string | undefined\n\n 'onUpdate:modelValue': ((value: unknown[]) => void) | undefined\n 'onUpdate:month': ((value: number) => void) | undefined\n 'onUpdate:year': ((value: number) => void) | undefined\n}\n\nexport type CalendarDay = {\n date: Date\n formatted: string\n isAdjacent: boolean\n isDisabled: boolean\n isEnd: boolean\n isHidden: boolean\n isSame: boolean\n isSelected: boolean\n isStart: boolean\n isToday: boolean\n isWeekEnd: boolean\n isWeekStart: boolean\n isoDate: string\n localized: string\n month: number\n year: number\n}\n\nexport type CalendarWeekdays = 0 | 1 | 2 | 3 | 4 | 5 | 6\n\n// Composables\nexport const makeCalendarProps = propsFactory({\n allowedDates: [Array, Function] as PropType<unknown[] | ((date: unknown) => boolean)>,\n disabled: {\n type: Boolean,\n default: null,\n },\n displayValue: null as any as PropType<unknown>,\n modelValue: Array as PropType<unknown[]>,\n month: [Number, String],\n max: null as any as PropType<unknown>,\n min: null as any as PropType<unknown>,\n showAdjacentMonths: Boolean,\n year: [Number, String],\n weekdays: {\n type: Array as PropType<CalendarWeekdays[]>,\n default: () => [0, 1, 2, 3, 4, 5, 6],\n },\n weeksInMonth: {\n type: String as PropType<'dynamic' | 'static'>,\n default: 'dynamic',\n },\n firstDayOfWeek: {\n type: [Number, String],\n default: undefined,\n },\n}, 'calendar')\n\nexport function useCalendar (props: CalendarProps) {\n const adapter = useDate()\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => wrapInArray(v).map(i => adapter.date(i)),\n )\n const displayValue = computed(() => {\n if (props.displayValue) return adapter.date(props.displayValue)\n if (model.value.length > 0) return adapter.date(model.value[0])\n if (props.min) return adapter.date(props.min)\n if (Array.isArray(props.allowedDates)) return adapter.date(props.allowedDates[0])\n\n return adapter.date()\n })\n\n const year = useProxiedModel(\n props,\n 'year',\n undefined,\n v => {\n const value = v != null ? Number(v) : adapter.getYear(displayValue.value)\n\n return adapter.startOfYear(adapter.setYear(adapter.date(), value))\n },\n v => adapter.getYear(v)\n )\n\n const month = useProxiedModel(\n props,\n 'month',\n undefined,\n v => {\n const value = v != null ? Number(v) : adapter.getMonth(displayValue.value)\n const date = adapter.setYear(adapter.startOfMonth(adapter.date()), adapter.getYear(year.value))\n\n return adapter.setMonth(date, value)\n },\n v => adapter.getMonth(v)\n )\n\n const weekDays = computed(() => {\n const firstDayOfWeek = adapter.toJsDate(adapter.startOfWeek(adapter.date(), props.firstDayOfWeek)).getDay()\n // Always generate all days, regardless of props.weekdays\n return [0, 1, 2, 3, 4, 5, 6].map(day => (day + firstDayOfWeek) % 7)\n })\n\n const weeksInMonth = computed(() => {\n const weeks = adapter.getWeekArray(month.value, props.firstDayOfWeek)\n\n const days = weeks.flat()\n\n // Make sure there's always 6 weeks in month (6 * 7 days)\n // if weeksInMonth is 'static'\n const daysInMonth = 6 * 7\n if (props.weeksInMonth === 'static' && days.length < daysInMonth) {\n const lastDay = days[days.length - 1]\n\n let week = []\n for (let day = 1; day <= daysInMonth - days.length; day++) {\n week.push(adapter.addDays(lastDay, day))\n\n if (day % 7 === 0) {\n weeks.push(week)\n week = []\n }\n }\n }\n\n return weeks\n })\n\n function genDays (days: Date[], today: Date): CalendarDay[] {\n return days.filter(date => {\n return weekDays.value.includes(adapter.toJsDate(date).getDay())\n }).map((date, index) => {\n const isoDate = adapter.toISO(date)\n const isAdjacent = !adapter.isSameMonth(date, month.value)\n const isStart = adapter.isSameDay(date, adapter.startOfMonth(month.value))\n const isEnd = adapter.isSameDay(date, adapter.endOfMonth(month.value))\n const isSame = adapter.isSameDay(date, month.value)\n\n return {\n date,\n formatted: adapter.format(date, 'keyboardDate'),\n isAdjacent,\n isDisabled: isDisabled(date),\n isEnd,\n isHidden: isAdjacent && !props.showAdjacentMonths,\n isSame,\n isSelected: model.value.some(value => adapter.isSameDay(date, value)),\n isStart,\n isToday: adapter.isSameDay(date, today),\n isWeekEnd: index % 7 === 6,\n isWeekStart: index % 7 === 0,\n isoDate,\n localized: adapter.format(date, 'dayOfMonth'),\n month: adapter.getMonth(date),\n year: adapter.getYear(date),\n }\n })\n }\n\n const daysInWeek = computed(() => {\n const lastDay = adapter.startOfWeek(displayValue.value, props.firstDayOfWeek)\n const week: Date[] = []\n for (let day = 0; day <= 6; day++) {\n week.push(adapter.addDays(lastDay, day) as Date)\n }\n\n const today = adapter.date() as Date\n\n return genDays(week as Date[], today as Date)\n })\n\n const daysInMonth = computed(() => {\n const days = weeksInMonth.value.flat() as Date[]\n const today = adapter.date() as Date\n\n return genDays(days as Date[], today)\n })\n\n const weekNumbers = computed(() => {\n return weeksInMonth.value.map(week => {\n return week.length ? adapter.getWeek(week[0], props.firstDayOfWeek) : null\n })\n })\n\n function isDisabled (value: unknown) {\n if (props.disabled) return true\n\n const date = adapter.date(value)\n\n if (props.min && adapter.isAfter(adapter.date(props.min), date)) return true\n if (props.max && adapter.isAfter(date, adapter.date(props.max))) return true\n\n if (Array.isArray(props.allowedDates) && props.allowedDates.length > 0) {\n return !props.allowedDates.some(d => adapter.isSameDay(adapter.date(d), date))\n }\n\n if (typeof props.allowedDates === 'function') {\n return !props.allowedDates(date)\n }\n\n return !props.weekdays.includes(adapter.toJsDate(date).getDay())\n }\n\n return {\n displayValue,\n daysInMonth,\n daysInWeek,\n genDays,\n model,\n weeksInMonth,\n weekDays,\n weekNumbers,\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CSSProperties, Ref } from 'vue';
|
|
1
|
+
import type { CSSProperties, MaybeRefOrGetter, Ref } from 'vue';
|
|
2
2
|
type ColorValue = string | false | null | undefined;
|
|
3
3
|
export interface TextColorData {
|
|
4
4
|
textColorClasses: Ref<string[]>;
|
|
@@ -8,15 +8,13 @@ export interface BackgroundColorData {
|
|
|
8
8
|
backgroundColorClasses: Ref<string[]>;
|
|
9
9
|
backgroundColorStyles: Ref<CSSProperties>;
|
|
10
10
|
}
|
|
11
|
-
export declare function useColor(colors:
|
|
11
|
+
export declare function useColor(colors: MaybeRefOrGetter<{
|
|
12
12
|
background?: ColorValue;
|
|
13
13
|
text?: ColorValue;
|
|
14
|
-
}>):
|
|
15
|
-
colorClasses: string[]
|
|
16
|
-
colorStyles: CSSProperties
|
|
17
|
-
}
|
|
18
|
-
export declare function useTextColor(color:
|
|
19
|
-
export declare function
|
|
20
|
-
export declare function useBackgroundColor(color: Ref<ColorValue>): BackgroundColorData;
|
|
21
|
-
export declare function useBackgroundColor<T extends Record<K, ColorValue>, K extends string>(props: T, name: K): BackgroundColorData;
|
|
14
|
+
}>): {
|
|
15
|
+
colorClasses: Readonly<Ref<string[], string[]>>;
|
|
16
|
+
colorStyles: Readonly<Ref<CSSProperties, CSSProperties>>;
|
|
17
|
+
};
|
|
18
|
+
export declare function useTextColor(color: MaybeRefOrGetter<ColorValue>): TextColorData;
|
|
19
|
+
export declare function useBackgroundColor(color: MaybeRefOrGetter<ColorValue>): BackgroundColorData;
|
|
22
20
|
|
package/lib/composables/color.js
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
// Utilities
|
|
2
|
-
import {
|
|
2
|
+
import { toValue } from 'vue';
|
|
3
3
|
import { destructComputed, getForeground, isCssColor, isParsableColor, parseColor } from "../util/index.js"; // Types
|
|
4
4
|
// Composables
|
|
5
5
|
export function useColor(colors) {
|
|
6
6
|
return destructComputed(() => {
|
|
7
|
+
const _colors = toValue(colors);
|
|
7
8
|
const classes = [];
|
|
8
9
|
const styles = {};
|
|
9
|
-
if (
|
|
10
|
-
if (isCssColor(
|
|
11
|
-
styles.backgroundColor =
|
|
12
|
-
if (!
|
|
13
|
-
const backgroundColor = parseColor(
|
|
10
|
+
if (_colors.background) {
|
|
11
|
+
if (isCssColor(_colors.background)) {
|
|
12
|
+
styles.backgroundColor = _colors.background;
|
|
13
|
+
if (!_colors.text && isParsableColor(_colors.background)) {
|
|
14
|
+
const backgroundColor = parseColor(_colors.background);
|
|
14
15
|
if (backgroundColor.a == null || backgroundColor.a === 1) {
|
|
15
16
|
const textColor = getForeground(backgroundColor);
|
|
16
17
|
styles.color = textColor;
|
|
@@ -18,15 +19,15 @@ export function useColor(colors) {
|
|
|
18
19
|
}
|
|
19
20
|
}
|
|
20
21
|
} else {
|
|
21
|
-
classes.push(`bg-${
|
|
22
|
+
classes.push(`bg-${_colors.background}`);
|
|
22
23
|
}
|
|
23
24
|
}
|
|
24
|
-
if (
|
|
25
|
-
if (isCssColor(
|
|
26
|
-
styles.color =
|
|
27
|
-
styles.caretColor =
|
|
25
|
+
if (_colors.text) {
|
|
26
|
+
if (isCssColor(_colors.text)) {
|
|
27
|
+
styles.color = _colors.text;
|
|
28
|
+
styles.caretColor = _colors.text;
|
|
28
29
|
} else {
|
|
29
|
-
classes.push(`text-${
|
|
30
|
+
classes.push(`text-${_colors.text}`);
|
|
30
31
|
}
|
|
31
32
|
}
|
|
32
33
|
return {
|
|
@@ -35,27 +36,25 @@ export function useColor(colors) {
|
|
|
35
36
|
};
|
|
36
37
|
});
|
|
37
38
|
}
|
|
38
|
-
export function useTextColor(
|
|
39
|
-
const colors = computed(() => ({
|
|
40
|
-
text: isRef(props) ? props.value : name ? props[name] : null
|
|
41
|
-
}));
|
|
39
|
+
export function useTextColor(color) {
|
|
42
40
|
const {
|
|
43
41
|
colorClasses: textColorClasses,
|
|
44
42
|
colorStyles: textColorStyles
|
|
45
|
-
} = useColor(
|
|
43
|
+
} = useColor(() => ({
|
|
44
|
+
text: toValue(color)
|
|
45
|
+
}));
|
|
46
46
|
return {
|
|
47
47
|
textColorClasses,
|
|
48
48
|
textColorStyles
|
|
49
49
|
};
|
|
50
50
|
}
|
|
51
|
-
export function useBackgroundColor(
|
|
52
|
-
const colors = computed(() => ({
|
|
53
|
-
background: isRef(props) ? props.value : name ? props[name] : null
|
|
54
|
-
}));
|
|
51
|
+
export function useBackgroundColor(color) {
|
|
55
52
|
const {
|
|
56
53
|
colorClasses: backgroundColorClasses,
|
|
57
54
|
colorStyles: backgroundColorStyles
|
|
58
|
-
} = useColor(
|
|
55
|
+
} = useColor(() => ({
|
|
56
|
+
background: toValue(color)
|
|
57
|
+
}));
|
|
59
58
|
return {
|
|
60
59
|
backgroundColorClasses,
|
|
61
60
|
backgroundColorStyles
|