element-plus
Version:
A Component Library for Vue 3
1 lines • 19 kB
Source Map (JSON)
{"version":3,"file":"basic-month-table.mjs","sources":["../../../../../../../packages/components/date-picker-panel/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) => cell.isSelected && (currentCellRef = el as HTMLElement)\"\n :class=\"getCellStyle(cell)\"\n :aria-selected=\"!!cell.isSelected\"\n :aria-label=\"t(`el.datepicker.month${+cell.text + 1}`)\"\n :tabindex=\"cell.isSelected ? 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\nimport type { Dayjs } from 'dayjs'\n\ntype MonthCell = {\n column: number\n customClass: string | undefined\n disabled: boolean\n end: boolean\n inRange: boolean\n row: number\n selected: Dayjs | undefined\n isCurrent: boolean | undefined\n isSelected: boolean\n start: boolean\n text: number\n renderText: string | undefined\n timestamp: number | undefined\n date: Date | undefined\n dayjs: Dayjs | undefined\n type: 'normal' | 'today'\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[][]>([[], [], []])\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 isSelected: false,\n customClass: undefined,\n date: undefined,\n dayjs: undefined,\n isCurrent: undefined,\n selected: undefined,\n renderText: undefined,\n timestamp: undefined,\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 const cellDate = calTime.toDate()\n cell.text = index\n cell.disabled = props.disabledDate?.(cellDate) || false\n cell.date = cellDate\n cell.customClass = props.cellClassName?.(cellDate)\n cell.dayjs = calTime\n cell.timestamp = calTime.valueOf()\n cell.isSelected = isSelectedCell(cell)\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 =\n props.disabled ||\n (props.disabledDate\n ? datesInMonth(props.date, year, month, lang.value).every(\n props.disabledDate\n )\n : false)\n style.current = castArray(props.parsedValue).some(\n (date) =>\n dayjs.isDayjs(date) && date.year() === year && date.month() === month\n )\n style.today = today.getFullYear() === year && today.getMonth() === month\n\n if (cell.customClass) {\n style[cell.customClass] = true\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 castArray(props.date).some(\n (date) => date.year() === year && date.month() === month\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 if (props.disabled) return\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,\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) =>\n // Filter out the selected month only when both year and month match\n // This allows remove same months from different years #20019\n d?.year() !== newMonth.year() || 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":["rows","_createElementBlock","_unref","_normalizeClass","_createElementVNode","_openBlock","_Fragment","_renderList","_withKeys","_withModifiers","_createVNode"],"mappings":"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"}