vuetify
Version:
Vue Material Component Framework
1 lines • 13.6 kB
Source Map (JSON)
{"version":3,"file":"VDateRangeInput.mjs","names":["VDateRangeCard","VDateRangePicker","VDefaultsProvider","VDialog","VMenu","VTextField","createDateInput","dateEmits","makeDateProps","useDisplay","useLocale","provideDefaults","ref","toRef","watch","genericComponent","useRender","VDateRangeInput","name","props","color","String","prependIcon","type","default","placeholder","fromLabel","toLabel","dividerText","mobile","Boolean","modelValue","displayDate","emits","setup","t","adapter","model","inputMode","viewMode","startInput","value","length","format","endInput","handleBlur","index","isValid","isSameDay","date","newDate","newValue","_createVNode","activator","_ref","slotProps","_mergeProps","onBlur","_ref2","isActive","$event","onSave","onCancel","VOverlay","minWidth","_ref3","_ref4"],"sources":["../../../src/labs/VDateInput/VDateRangeInput.tsx"],"sourcesContent":["// Styles\nimport './VDateRangeInput.sass'\n\n// Components\nimport { VDateRangeCard, VDateRangePicker } from '../VDateRangePicker'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VDialog } from '@/components/VDialog'\nimport { VMenu } from '@/components/VMenu'\nimport { VTextField } from '@/components/VTextField'\n\n// Composables\nimport { createDateInput, dateEmits, makeDateProps } from './composables'\nimport { useDisplay, useLocale } from '@/composables'\nimport { provideDefaults } from '@/composables/defaults'\n\n// Utilities\nimport { ref, toRef, watch } from 'vue'\nimport { genericComponent, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport const VDateRangeInput = genericComponent()({\n name: 'VDateRangeInput',\n\n props: {\n color: String,\n prependIcon: {\n type: String,\n default: '$calendar',\n },\n placeholder: {\n type: String,\n default: 'mm/dd/yyyy',\n },\n fromLabel: String,\n toLabel: String,\n dividerText: {\n type: String,\n default: '$vuetify.dateRangeInput.divider',\n },\n mobile: Boolean,\n ...makeDateProps(),\n modelValue: {\n type: null as unknown as PropType<any[]>,\n },\n displayDate: {\n type: null as unknown as PropType<any>,\n },\n },\n\n emits: {\n ...dateEmits,\n },\n\n setup (props) {\n const { t } = useLocale()\n const { adapter, model, inputMode, viewMode, displayDate } = createDateInput(props, true)\n\n const startInput = ref(model.value.length ? adapter.format(model.value[0], 'keyboardDate') : '')\n const endInput = ref(model.value.length > 1 ? adapter.format(model.value[1], 'keyboardDate') : '')\n\n function handleBlur (index: number) {\n const { isValid, isSameDay, date } = adapter\n\n if (index === 0 && isValid(startInput.value)) {\n const newDate = date(startInput.value)\n if (!isSameDay(newDate, model.value[0])) {\n model.value = [newDate, model.value[1]]\n displayDate.value = newDate\n }\n } else if (index === 1 && isValid(endInput.value)) {\n const newDate = date(endInput.value)\n if (!isSameDay(newDate, model.value[1])) {\n model.value = [model.value[0], newDate]\n displayDate.value = newDate\n }\n }\n }\n\n watch(model, newValue => {\n if (!newValue.length) return\n\n if (newValue[0]) {\n startInput.value = adapter.format(newValue[0], 'keyboardDate')\n }\n\n if (newValue[1]) {\n endInput.value = adapter.format(newValue[1], 'keyboardDate')\n }\n })\n\n const { mobile } = useDisplay()\n\n provideDefaults({\n VTextField: {\n color: toRef(props, 'color'),\n },\n })\n\n useRender(() => {\n if (mobile.value) {\n return (\n <VDialog\n fullscreen={ inputMode.value === 'calendar' }\n contentClass=\"v-date-range-input__dialog-content\"\n v-slots={{\n activator: ({ props: slotProps }) => (\n <div class=\"v-date-range-input\" { ...slotProps }>\n <VTextField\n modelValue={ startInput.value }\n onBlur={ () => handleBlur(0) }\n prependInnerIcon={ props.prependIcon }\n placeholder={ props.placeholder }\n label={ props.fromLabel }\n />\n <div class=\"v-date-range-input__divider\">{ t(props.dividerText) }</div>\n <VTextField\n modelValue={ endInput.value }\n onBlur={ () => handleBlur(1) }\n prependInnerIcon={ props.prependIcon }\n placeholder={ props.placeholder }\n label={ props.toLabel }\n />\n </div>\n ),\n default: ({ isActive }) => (\n <VDateRangePicker\n v-model={ model.value }\n v-model:displayDate={ displayDate.value }\n v-model:viewMode={ viewMode.value }\n v-model:inputMode={ inputMode.value }\n onSave={ () => {\n isActive.value = false\n }}\n onCancel={ () => {\n isActive.value = false\n }}\n />\n ),\n }}\n />\n )\n }\n\n return (\n <VDefaultsProvider defaults={{ VOverlay: { minWidth: '100%' } }}>\n <div class=\"v-date-range-input\">\n <VMenu\n offset={[-28, 0]}\n closeOnContentClick={ false }\n contentClass=\"foo\"\n v-slots={{\n activator: ({ props: slotProps }) => (\n <div { ...slotProps } style=\"flex: 1 1 auto;\">\n <VTextField\n v-model={ startInput.value }\n onBlur={ () => handleBlur(0) }\n prependInnerIcon={ props.prependIcon }\n placeholder={ props.placeholder }\n label={ props.fromLabel }\n />\n </div>\n ),\n default: () => (\n <VDateRangeCard\n v-model={ model.value }\n v-model:displayDate={ displayDate.value }\n v-model:viewMode={ viewMode.value }\n v-model:inputMode={ inputMode.value }\n />\n ),\n }}\n />\n <div class=\"v-date-range-input__divider\">{ t(props.dividerText) }</div>\n <VMenu\n key=\"bar\"\n offset={[-28, 0]}\n closeOnContentClick={ false }\n v-slots={{\n activator: ({ props: slotProps }) => (\n <div { ...slotProps } style=\"flex: 1 1 auto;\">\n <VTextField\n v-model={ endInput.value }\n onBlur={ () => handleBlur(1) }\n prependInnerIcon={ props.prependIcon }\n placeholder={ props.placeholder }\n label={ props.toLabel }\n />\n </div>\n ),\n default: () => (\n <VDateRangeCard\n v-model={ model.value }\n v-model:displayDate={ displayDate.value }\n v-model:viewMode={ viewMode.value }\n v-model:inputMode={ inputMode.value }\n />\n ),\n }}\n />\n </div>\n </VDefaultsProvider>\n )\n })\n },\n})\n\nexport type VDateRangeInput = InstanceType<typeof VDateRangeInput>\n"],"mappings":"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"}