reka-ui
Version:
Vue port for Radix UI Primitives.
1 lines • 8.52 kB
Source Map (JSON)
{"version":3,"file":"DateRangePickerRoot.cjs","sources":["../../src/DateRangePicker/DateRangePickerRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { DateValue } from '@internationalized/date'\n\nimport type { Ref } from 'vue'\nimport { createContext, useDirection } from '@/shared'\nimport { type DateRange, type Granularity, type HourCycle, getDefaultDate } from '@/shared/date'\nimport type { Matcher, WeekDayFormat } from '@/date'\n\nimport { type DateRangeFieldRoot, type DateRangeFieldRootProps, PopoverRoot, type PopoverRootEmits, type PopoverRootProps, type RangeCalendarRootProps } from '..'\nimport type { Direction } from '@/shared/types'\n\ntype DateRangePickerRootContext = {\n id: Ref<string | undefined>\n name: Ref<string | undefined>\n minValue: Ref<DateValue | undefined>\n maxValue: Ref<DateValue | undefined>\n hourCycle: Ref<HourCycle | undefined>\n granularity: Ref<Granularity | undefined>\n hideTimeZone: Ref<boolean>\n required: Ref<boolean>\n locale: Ref<string>\n dateFieldRef: Ref<InstanceType<typeof DateRangeFieldRoot> | undefined>\n modelValue: Ref<{ start: DateValue | undefined, end: DateValue | undefined }>\n placeholder: Ref<DateValue>\n pagedNavigation: Ref<boolean>\n preventDeselect: Ref<boolean>\n weekStartsOn: Ref<0 | 1 | 2 | 3 | 4 | 5 | 6>\n weekdayFormat: Ref<WeekDayFormat>\n fixedWeeks: Ref<boolean>\n numberOfMonths: Ref<number>\n disabled: Ref<boolean>\n readonly: Ref<boolean>\n isDateDisabled?: Matcher\n isDateUnavailable?: Matcher\n defaultOpen: Ref<boolean>\n open: Ref<boolean>\n modal: Ref<boolean>\n onDateChange: (date: DateRange) => void\n onPlaceholderChange: (date: DateValue) => void\n onStartValueChange: (date: DateValue | undefined) => void\n dir: Ref<Direction>\n allowNonContiguousRanges: Ref<boolean>\n}\n\nexport type DateRangePickerRootProps = DateRangeFieldRootProps & PopoverRootProps & Pick<RangeCalendarRootProps, 'isDateDisabled' | 'pagedNavigation' | 'weekStartsOn' | 'weekdayFormat' | 'fixedWeeks' | 'numberOfMonths' | 'preventDeselect' | 'isDateUnavailable' | 'allowNonContiguousRanges'>\n\nexport type DateRangePickerRootEmits = {\n /** Event handler called whenever the model value changes */\n 'update:modelValue': [date: DateRange]\n /** Event handler called whenever the placeholder value changes */\n 'update:placeholder': [date: DateValue]\n /** Event handler called whenever the start value changes */\n 'update:startValue': [date: DateValue | undefined]\n}\n\nexport const [injectDateRangePickerRootContext, provideDateRangePickerRootContext]\n = createContext<DateRangePickerRootContext>('DateRangePickerRoot')\n</script>\n\n<script setup lang=\"ts\">\nimport { ref, toRefs, watch } from 'vue'\nimport { useVModel } from '@vueuse/core'\n\ndefineOptions({\n inheritAttrs: false,\n})\nconst props = withDefaults(defineProps<DateRangePickerRootProps>(), {\n defaultValue: () => ({ start: undefined, end: undefined }),\n defaultOpen: false,\n open: undefined,\n modal: false,\n pagedNavigation: false,\n preventDeselect: false,\n weekStartsOn: 0,\n weekdayFormat: 'narrow',\n fixedWeeks: false,\n numberOfMonths: 1,\n disabled: false,\n readonly: false,\n initialFocus: false,\n placeholder: undefined,\n locale: 'en',\n isDateDisabled: undefined,\n isDateUnavailable: undefined,\n allowNonContiguousRanges: false,\n})\nconst emits = defineEmits<DateRangePickerRootEmits & PopoverRootEmits>()\nconst {\n locale,\n disabled,\n readonly,\n pagedNavigation,\n weekStartsOn,\n weekdayFormat,\n fixedWeeks,\n numberOfMonths,\n preventDeselect,\n isDateDisabled: propsIsDateDisabled,\n isDateUnavailable: propsIsDateUnavailable,\n defaultOpen,\n modal,\n id,\n name,\n required,\n minValue,\n maxValue,\n granularity,\n hideTimeZone,\n hourCycle,\n dir: propsDir,\n allowNonContiguousRanges,\n} = toRefs(props)\n\nconst dir = useDirection(propsDir)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue ?? { start: undefined, end: undefined },\n passive: (props.modelValue === undefined) as false,\n}) as Ref<DateRange>\n\nconst defaultDate = getDefaultDate({\n defaultPlaceholder: props.placeholder,\n granularity: props.granularity,\n defaultValue: modelValue.value?.start,\n locale: props.locale,\n})\n\nconst placeholder = useVModel(props, 'placeholder', emits, {\n defaultValue: props.defaultPlaceholder ?? defaultDate.copy(),\n passive: (props.placeholder === undefined) as false,\n}) as Ref<DateValue>\n\nconst open = useVModel(props, 'open', emits, {\n defaultValue: defaultOpen.value,\n passive: (props.open === undefined) as false,\n}) as Ref<boolean>\n\nconst dateFieldRef = ref<InstanceType<typeof DateRangeFieldRoot> | undefined>()\n\nwatch(modelValue, (value) => {\n if (value && value.start && value.start.compare(placeholder.value) !== 0) {\n placeholder.value = value.start.copy()\n }\n})\n\nprovideDateRangePickerRootContext({\n allowNonContiguousRanges,\n isDateUnavailable: propsIsDateUnavailable.value,\n isDateDisabled: propsIsDateDisabled.value,\n locale,\n disabled,\n pagedNavigation,\n weekStartsOn,\n weekdayFormat,\n fixedWeeks,\n numberOfMonths,\n readonly,\n preventDeselect,\n modelValue,\n placeholder,\n defaultOpen,\n modal,\n open,\n id,\n name,\n required,\n minValue,\n maxValue,\n granularity,\n hideTimeZone,\n hourCycle,\n dateFieldRef,\n dir,\n onStartValueChange(date: DateValue | undefined) {\n emits('update:startValue', date)\n },\n onDateChange(date: DateRange) {\n modelValue.value = { start: date.start?.copy(), end: date.end?.copy() }\n },\n onPlaceholderChange(date: DateValue) {\n placeholder.value = date.copy()\n },\n})\n</script>\n\n<template>\n <PopoverRoot\n v-model:open=\"open\"\n :default-open=\"defaultOpen\"\n :modal=\"modal\"\n >\n <slot\n :model-value=\"modelValue\"\n :open=\"open\"\n />\n </PopoverRoot>\n</template>\n"],"names":["createContext","toRefs","useDirection","useVModel","getDefaultDate","ref","watch"],"mappings":"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"}