vuetify
Version:
Vue Material Component Framework
1 lines • 14.6 kB
Source Map (JSON)
{"version":3,"file":"VDatePicker.mjs","names":["makeVDatePickerControlsProps","VDatePickerControls","VDatePickerHeader","makeVDatePickerMonthProps","VDatePickerMonth","makeVDatePickerYearsProps","VDatePickerYears","VFadeTransition","VBtn","VTextField","dateEmits","makeDateProps","makeVPickerProps","VPicker","createDatePicker","useLocale","useDate","computed","ref","shallowRef","watch","genericComponent","propsFactory","useRender","makeVDatePickerProps","calendarIcon","type","String","default","keyboardIcon","cancelText","okText","inputText","inputPlaceholder","header","hideActions","Boolean","title","VDatePicker","name","props","emits","click:cancel","click:save","setup","_ref","emit","slots","adapter","t","model","displayDate","viewMode","inputMode","isEqual","isReversing","inputModel","value","map","date","format","temporaryModel","length","headerIcon","headerTransition","updateFromInput","input","index","isValid","newModel","slice","val","oldVal","isBefore","onClickCancel","onClickSave","onClickAppend","headerSlotProps","appendIcon","transition","pickerProps","filterProps","datePickerControlsProps","datePickerMonthProps","datePickerYearsProps","_createVNode","_mergeProps","class","style","showWeek","_Fragment","$event","v","actions","color","undefined"],"sources":["../../../src/labs/VDatePicker/VDatePicker.tsx"],"sourcesContent":["// Styles\nimport './VDatePicker.sass'\n\n// Components\nimport { makeVDatePickerControlsProps, VDatePickerControls } from './VDatePickerControls'\nimport { VDatePickerHeader } from './VDatePickerHeader'\nimport { makeVDatePickerMonthProps, VDatePickerMonth } from './VDatePickerMonth'\nimport { makeVDatePickerYearsProps, VDatePickerYears } from './VDatePickerYears'\nimport { VFadeTransition } from '@/components/transitions'\nimport { VBtn } from '@/components/VBtn'\nimport { VTextField } from '@/components/VTextField'\nimport { dateEmits, makeDateProps } from '@/labs/VDateInput/composables'\nimport { makeVPickerProps, VPicker } from '@/labs/VPicker/VPicker'\n\n// Composables\nimport { createDatePicker } from './composables'\nimport { useLocale } from '@/composables/locale'\nimport { useDate } from '@/labs/date'\n\n// Utilities\nimport { computed, ref, shallowRef, watch } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nexport type VDatePickerSlots = {\n header: {\n header: string\n appendIcon: string\n 'onClick:append': () => void\n }\n}\n\nexport const makeVDatePickerProps = propsFactory({\n calendarIcon: {\n type: String,\n default: '$calendar',\n },\n keyboardIcon: {\n type: String,\n default: '$edit',\n },\n cancelText: {\n type: String,\n default: '$vuetify.datePicker.cancel',\n },\n okText: {\n type: String,\n default: '$vuetify.datePicker.ok',\n },\n inputText: {\n type: String,\n default: '$vuetify.datePicker.input.placeholder',\n },\n inputPlaceholder: {\n type: String,\n default: 'dd/mm/yyyy',\n },\n header: {\n type: String,\n default: '$vuetify.datePicker.header',\n },\n hideActions: Boolean,\n\n ...makeDateProps(),\n ...makeVDatePickerControlsProps(),\n ...makeVDatePickerMonthProps(),\n ...makeVDatePickerYearsProps(),\n ...makeVPickerProps({ title: '$vuetify.datePicker.title' }),\n}, 'VDatePicker')\n\nexport const VDatePicker = genericComponent<VDatePickerSlots>()({\n name: 'VDatePicker',\n\n props: makeVDatePickerProps(),\n\n emits: {\n 'click:cancel': () => true,\n 'click:save': () => true,\n ...dateEmits,\n },\n\n setup (props, { emit, slots }) {\n const adapter = useDate()\n const { t } = useLocale()\n\n const { model, displayDate, viewMode, inputMode, isEqual } = createDatePicker(props)\n\n const isReversing = shallowRef(false)\n\n const inputModel = ref(model.value.map(date => adapter.format(date, 'keyboardDate')))\n const temporaryModel = ref(model.value)\n const title = computed(() => t(props.title))\n const header = computed(() => model.value.length ? adapter.format(model.value[0], 'normalDateWithWeekday') : t(props.header))\n const headerIcon = computed(() => inputMode.value === 'calendar' ? props.keyboardIcon : props.calendarIcon)\n const headerTransition = computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`)\n\n function updateFromInput (input: string, index: number) {\n const { isValid, date } = adapter\n\n if (isValid(input)) {\n const newModel = model.value.slice()\n newModel[index] = date(input)\n\n if (props.hideActions) {\n model.value = newModel\n } else {\n temporaryModel.value = newModel\n }\n }\n }\n\n watch(model, val => {\n if (!isEqual(val, temporaryModel.value)) {\n temporaryModel.value = val\n }\n\n inputModel.value = val.map(date => adapter.format(date, 'keyboardDate'))\n })\n\n watch(temporaryModel, (val, oldVal) => {\n if (props.hideActions && !isEqual(val, model.value)) {\n model.value = val\n }\n\n if (val[0] && oldVal[0]) {\n isReversing.value = adapter.isBefore(val[0], oldVal[0])\n }\n })\n\n function onClickCancel () {\n emit('click:cancel')\n }\n\n function onClickSave () {\n emit('click:save')\n\n model.value = temporaryModel.value\n }\n\n function onClickAppend () {\n inputMode.value = inputMode.value === 'calendar' ? 'keyboard' : 'calendar'\n }\n\n const headerSlotProps = computed(() => ({\n header: header.value,\n appendIcon: headerIcon.value,\n transition: headerTransition.value,\n 'onClick:append': onClickAppend,\n }))\n\n useRender(() => {\n const [pickerProps] = VPicker.filterProps(props)\n const [datePickerControlsProps] = VDatePickerControls.filterProps(props)\n const [datePickerMonthProps] = VDatePickerMonth.filterProps(props)\n const [datePickerYearsProps] = VDatePickerYears.filterProps(props)\n\n return (\n <VPicker\n { ...pickerProps }\n class={[\n 'v-date-picker',\n props.class,\n ]}\n style={ props.style }\n title={ title.value }\n width={ props.showWeek ? 408 : 360 }\n v-slots={{\n header: () => slots.header?.(headerSlotProps.value) ?? (\n <VDatePickerHeader\n key=\"header\"\n { ...headerSlotProps.value }\n />\n ),\n default: () => inputMode.value === 'calendar' ? (\n <>\n <VDatePickerControls\n { ...datePickerControlsProps }\n v-model:displayDate={ displayDate.value }\n v-model:viewMode={ viewMode.value }\n />\n\n <VFadeTransition hideOnLeave>\n { viewMode.value === 'month' ? (\n <VDatePickerMonth\n key=\"date-picker-month\"\n { ...datePickerMonthProps }\n v-model={ temporaryModel.value }\n v-model:displayDate={ displayDate.value }\n />\n ) : (\n <VDatePickerYears\n key=\"date-picker-years\"\n { ...datePickerYearsProps }\n v-model:displayDate={ displayDate.value }\n v-model:viewMode={ viewMode.value }\n />\n )}\n </VFadeTransition>\n </>\n ) : (\n <div class=\"v-date-picker__input\">\n <VTextField\n modelValue={ inputModel.value[0] }\n onUpdate:modelValue={ v => updateFromInput(v, 0) }\n label={ t(props.inputText) }\n placeholder={ props.inputPlaceholder }\n />\n </div>\n ),\n actions: () => !props.hideActions ? (\n <div>\n <VBtn\n variant=\"text\"\n color={ props.color }\n onClick={ onClickCancel }\n text={ t(props.cancelText) }\n />\n\n <VBtn\n variant=\"text\"\n color={ props.color }\n onClick={ onClickSave }\n text={ t(props.okText) }\n />\n </div>\n ) : undefined,\n }}\n />\n )\n })\n\n return {}\n },\n})\n\nexport type VDatePicker = InstanceType<typeof VDatePicker>\n"],"mappings":"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"}