{"version":3,"file":"basic-month-table.js","sources":["../../../../../../../packages/components/date-picker/src/date-picker-com/basic-month-table.vue"],"sourcesContent":["<template>\n <table\n role=\"grid\"\n :aria-label=\"t('el.datepicker.monthTablePrompt')\"\n :class=\"ns.b()\"\n @click=\"handleMonthTableClick\"\n @mousemove=\"handleMouseMove\"\n >\n <tbody ref=\"tbodyRef\">\n <tr v-for=\"(row, key) in rows\" :key=\"key\">\n <td\n v-for=\"(cell, key_) in row\"\n :key=\"key_\"\n :ref=\"(el) => isSelectedCell(cell) && (currentCellRef = el as HTMLElement)\"\n :class=\"getCellStyle(cell)\"\n :aria-selected=\"`${isSelectedCell(cell)}`\"\n :aria-label=\"t(`el.datepicker.month${+cell.text + 1}`)\"\n :tabindex=\"isSelectedCell(cell) ? 0 : -1\"\n @keydown.space.prevent.stop=\"handleMonthTableClick\"\n @keydown.enter.prevent.stop=\"handleMonthTableClick\"\n >\n <el-date-picker-cell\n :cell=\"{\n ...cell,\n renderText: t('el.datepicker.months.' + months[cell.text]),\n }\"\n />\n </td>\n </tr>\n </tbody>\n </table>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, ref, watch } from 'vue'\nimport dayjs from 'dayjs'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport { castArray, hasClass } from '@element-plus/utils'\nimport { basicMonthTableProps } from '../props/basic-month-table'\nimport { datesInMonth, getValidDateOfMonth } from '../utils'\nimport ElDatePickerCell from './basic-cell-render'\n\ntype MonthCell = {\n column: number\n row: number\n disabled: boolean\n start: boolean\n end: boolean\n text: number\n type: 'normal' | 'today'\n inRange: boolean\n}\n\nconst props = defineProps(basicMonthTableProps)\nconst emit = defineEmits(['changerange', 'pick', 'select'])\n\nconst ns = useNamespace('month-table')\n\nconst { t, lang } = useLocale()\nconst tbodyRef = ref<HTMLElement>()\nconst currentCellRef = ref<HTMLElement>()\nconst months = ref(\n props.date\n .locale('en')\n .localeData()\n .monthsShort()\n .map((_) => _.toLowerCase())\n)\nconst tableRows = ref<MonthCell[][]>([\n [] as MonthCell[],\n [] as MonthCell[],\n [] as MonthCell[],\n])\nconst lastRow = ref<number>()\nconst lastColumn = ref<number>()\nconst rows = computed<MonthCell[][]>(() => {\n const rows = tableRows.value\n\n const now = dayjs().locale(lang.value).startOf('month')\n\n for (let i = 0; i < 3; i++) {\n const row = rows[i]\n for (let j = 0; j < 4; j++) {\n const cell = (row[j] ||= {\n row: i,\n column: j,\n type: 'normal',\n inRange: false,\n start: false,\n end: false,\n text: -1,\n disabled: false,\n })\n\n cell.type = 'normal'\n\n const index = i * 4 + j\n const calTime = props.date.startOf('year').month(index)\n\n const calEndDate =\n props.rangeState.endDate ||\n props.maxDate ||\n (props.rangeState.selecting && props.minDate) ||\n null\n\n cell.inRange =\n !!(\n props.minDate &&\n calTime.isSameOrAfter(props.minDate, 'month') &&\n calEndDate &&\n calTime.isSameOrBefore(calEndDate, 'month')\n ) ||\n !!(\n props.minDate &&\n calTime.isSameOrBefore(props.minDate, 'month') &&\n calEndDate &&\n calTime.isSameOrAfter(calEndDate, 'month')\n )\n\n if (props.minDate?.isSameOrAfter(calEndDate)) {\n cell.start = !!(calEndDate && calTime.isSame(calEndDate, 'month'))\n cell.end = props.minDate && calTime.isSame(props.minDate, 'month')\n } else {\n cell.start = !!(props.minDate && calTime.isSame(props.minDate, 'month'))\n cell.end = !!(calEndDate && calTime.isSame(calEndDate, 'month'))\n }\n\n const isToday = now.isSame(calTime)\n if (isToday) {\n cell.type = 'today'\n }\n\n cell.text = index\n cell.disabled = props.disabledDate?.(calTime.toDate()) || false\n }\n }\n return rows\n})\n\nconst focus = () => {\n currentCellRef.value?.focus()\n}\n\nconst getCellStyle = (cell: MonthCell) => {\n const style = {} as any\n const year = props.date.year()\n const today = new Date()\n const month = cell.text\n\n style.disabled = props.disabledDate\n ? datesInMonth(year, month, lang.value).every(props.disabledDate)\n : false\n style.current =\n castArray(props.parsedValue).findIndex(\n (date) =>\n dayjs.isDayjs(date) && date.year() === year && date.month() === month\n ) >= 0\n style.today = today.getFullYear() === year && today.getMonth() === month\n\n if (cell.inRange) {\n style['in-range'] = true\n\n if (cell.start) {\n style['start-date'] = true\n }\n\n if (cell.end) {\n style['end-date'] = true\n }\n }\n return style\n}\n\nconst isSelectedCell = (cell: MonthCell) => {\n const year = props.date.year()\n const month = cell.text\n return (\n castArray(props.date).findIndex(\n (date) => date.year() === year && date.month() === month\n ) >= 0\n )\n}\n\nconst handleMouseMove = (event: MouseEvent) => {\n if (!props.rangeState.selecting) return\n\n let target = event.target as HTMLElement\n if (target.tagName === 'SPAN') {\n target = target.parentNode?.parentNode as HTMLElement\n }\n if (target.tagName === 'DIV') {\n target = target.parentNode as HTMLElement\n }\n if (target.tagName !== 'TD') return\n\n const row = (target.parentNode as HTMLTableRowElement).rowIndex\n const column = (target as HTMLTableCellElement).cellIndex\n // can not select disabled date\n if (rows.value[row][column].disabled) return\n\n // only update rangeState when mouse moves to a new cell\n // this avoids frequent Date object creation and improves performance\n if (row !== lastRow.value || column !== lastColumn.value) {\n lastRow.value = row\n lastColumn.value = column\n emit('changerange', {\n selecting: true,\n endDate: props.date.startOf('year').month(row * 4 + column),\n })\n }\n}\nconst handleMonthTableClick = (event: MouseEvent | KeyboardEvent) => {\n const target = (event.target as HTMLElement)?.closest(\n 'td'\n ) as HTMLTableCellElement\n if (target?.tagName !== 'TD') return\n if (hasClass(target, 'disabled')) return\n const column = target.cellIndex\n const row = (target.parentNode as HTMLTableRowElement).rowIndex\n const month = row * 4 + column\n const newDate = props.date.startOf('year').month(month)\n if (props.selectionMode === 'months') {\n if (event.type === 'keydown') {\n emit('pick', castArray(props.parsedValue), false)\n return\n }\n const newMonth = getValidDateOfMonth(\n props.date.year(),\n month,\n lang.value,\n props.disabledDate\n )\n const newValue = hasClass(target, 'current')\n ? castArray(props.parsedValue).filter(\n (d) => d?.month() !== newMonth.month()\n )\n : castArray(props.parsedValue).concat([dayjs(newMonth)])\n emit('pick', newValue)\n } else if (props.selectionMode === 'range') {\n if (!props.rangeState.selecting) {\n emit('pick', { minDate: newDate, maxDate: null })\n emit('select', true)\n } else {\n if (props.minDate && newDate >= props.minDate) {\n emit('pick', { minDate: props.minDate, maxDate: newDate })\n } else {\n emit('pick', { minDate: newDate, maxDate: props.minDate })\n }\n emit('select', false)\n }\n } else {\n emit('pick', month)\n }\n}\n\nwatch(\n () => props.date,\n async () => {\n if (tbodyRef.value?.contains(document.activeElement)) {\n await nextTick()\n currentCellRef.value?.focus()\n }\n }\n)\n\ndefineExpose({\n /**\n * @description focus current cell\n */\n focus,\n})\n</script>\n"],"names":["useNamespace","useLocale","ref","computed","dayjs","datesInMonth","castArray","hasClass","getValidDateOfMonth","watch","nextTick"],"mappings":"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"}