{"version":3,"file":"basic-year-table.mjs","sources":["../../../../../../../../packages/components/date-picker-panel/src/date-picker-com/basic-year-table.vue"],"sourcesContent":["<template>\n  <table\n    role=\"grid\"\n    :aria-label=\"t('el.datepicker.yearTablePrompt')\"\n    :class=\"ns.b()\"\n    @click=\"handleYearTableClick\"\n    @mousemove=\"handleMouseMove\"\n  >\n    <tbody ref=\"tbodyRef\">\n      <tr v-for=\"(row, rowKey) in rows\" :key=\"rowKey\">\n        <td\n          v-for=\"(cell, cellKey) in row\"\n          :key=\"`${rowKey}_${cellKey}`\"\n          :ref=\"(el) => cell.isSelected && (currentCellRef = el as HTMLElement)\"\n          class=\"available\"\n          :class=\"getCellKls(cell)\"\n          :aria-selected=\"cell.isSelected\"\n          :aria-label=\"String(cell.text)\"\n          :tabindex=\"cell.isSelected ? 0 : -1\"\n          @keydown.space.prevent.stop=\"handleYearTableClick\"\n          @keydown.enter.prevent.stop=\"handleYearTableClick\"\n        >\n          <el-date-picker-cell :cell=\"cell\" />\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 '@hd-front-end/hooks'\nimport { rangeArr } from '@hd-front-end/components/time-picker'\nimport { castArray, hasClass } from '@hd-front-end/utils'\nimport { basicYearTableProps } from '../props/basic-year-table'\nimport { getValidDateOfYear } from '../utils'\nimport ElDatePickerCell from './basic-cell-render'\n\nimport type { Dayjs } from 'dayjs'\n\ntype YearCell = {\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  type: 'normal' | 'today'\n  date: Date | undefined\n  dayjs: Dayjs | undefined\n}\n\nconst datesInYear = (year: number, lang: string) => {\n  const firstDay = dayjs(String(year)).locale(lang).startOf('year')\n  const lastDay = firstDay.endOf('year')\n  const numOfDays = lastDay.dayOfYear()\n  return rangeArr(numOfDays).map((n) => firstDay.add(n, 'day').toDate())\n}\n\nconst props = defineProps(basicYearTableProps)\nconst emit = defineEmits(['changerange', 'pick', 'select'])\n\nconst ns = useNamespace('year-table')\n\nconst { t, lang } = useLocale()\nconst tbodyRef = ref<HTMLElement>()\nconst currentCellRef = ref<HTMLElement>()\nconst startYear = computed(() => {\n  return Math.floor(props.date.year() / 10) * 10\n})\n\nconst tableRows = ref<YearCell[][]>([[], [], []])\nconst lastRow = ref<number>()\nconst lastColumn = ref<number>()\nconst rows = computed(() => {\n  const rows = tableRows.value\n  const now = dayjs().locale(lang.value).startOf('year')\n\n  for (let i = 0; i < 3; i++) {\n    const row = rows[i]\n    for (let j = 0; j < 4; j++) {\n      if (i * 4 + j >= 10) {\n        break\n      }\n      let cell = row[j]\n      if (!cell) {\n        cell = {\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      const index = i * 4 + j + startYear.value\n      const calTime = dayjs().year(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, 'year') &&\n          calEndDate &&\n          calTime.isSameOrBefore(calEndDate, 'year')\n        ) ||\n        !!(\n          props.minDate &&\n          calTime.isSameOrBefore(props.minDate, 'year') &&\n          calEndDate &&\n          calTime.isSameOrAfter(calEndDate, 'year')\n        )\n\n      if (props.minDate?.isSameOrAfter(calEndDate)) {\n        cell.start = !!(calEndDate && calTime.isSame(calEndDate, 'year'))\n        cell.end = !!(props.minDate && calTime.isSame(props.minDate, 'year'))\n      } else {\n        cell.start = !!(props.minDate && calTime.isSame(props.minDate, 'year'))\n        cell.end = !!(calEndDate && calTime.isSame(calEndDate, 'year'))\n      }\n\n      const isToday = now.isSame(calTime)\n      if (isToday) {\n        cell.type = 'today'\n      }\n      cell.text = index\n      const cellDate = calTime.toDate()\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      row[j] = cell\n    }\n  }\n  return rows\n})\n\nconst focus = () => {\n  currentCellRef.value?.focus()\n}\n\nconst getCellKls = (cell: YearCell) => {\n  const kls: Record<string, boolean> = {}\n  const today = dayjs().locale(lang.value)\n  const year = cell.text\n\n  kls.disabled =\n    props.disabled ||\n    (props.disabledDate\n      ? datesInYear(year, lang.value).every(props.disabledDate)\n      : false)\n\n  kls.today = today.year() === year\n  kls.current =\n    castArray(props.parsedValue).findIndex((d) => d!.year() === year) >= 0\n\n  if (cell.customClass) {\n    kls[cell.customClass] = true\n  }\n  if (cell.inRange) {\n    kls['in-range'] = true\n\n    if (cell.start) {\n      kls['start-date'] = true\n    }\n\n    if (cell.end) {\n      kls['end-date'] = true\n    }\n  }\n  return kls\n}\n\nconst isSelectedCell = (cell: YearCell) => {\n  const year = cell.text\n  return castArray(props.date).findIndex((date) => date.year() === year) >= 0\n}\n\nconst handleYearTableClick = (event: MouseEvent | KeyboardEvent) => {\n  if (props.disabled) return\n  const target = (event.target as HTMLElement)?.closest(\n    'td'\n  ) as HTMLTableCellElement\n  if (!target || !target.textContent || hasClass(target, 'disabled')) return\n\n  const column = target.cellIndex\n  const row = (target.parentNode as HTMLTableRowElement).rowIndex\n  const selectedYear = row * 4 + column + startYear.value\n  const newDate = dayjs().year(selectedYear)\n  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 if (props.selectionMode === 'years') {\n    if (event.type === 'keydown') {\n      emit('pick', castArray(props.parsedValue), false)\n      return\n    }\n    const vaildYear = getValidDateOfYear(\n      newDate.startOf('year'),\n      lang.value,\n      props.disabledDate\n    )\n    const newValue = hasClass(target, 'current')\n      ? castArray(props.parsedValue).filter((d) => d?.year() !== selectedYear)\n      : castArray(props.parsedValue).concat([vaildYear])\n    emit('pick', newValue)\n  } else {\n    emit('pick', selectedYear)\n  }\n}\n\nconst handleMouseMove = (event: MouseEvent) => {\n  if (!props.rangeState.selecting) return\n  const target = (event.target as HTMLElement)?.closest(\n    'td'\n  ) as HTMLTableCellElement\n  if (!target) return\n\n  const row = (target.parentNode as HTMLTableRowElement).rowIndex\n  const column = (target as HTMLTableCellElement).cellIndex\n\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: dayjs()\n        .year(startYear.value)\n        .add(row * 4 + column, 'year'),\n    })\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 on the current cell\n   */\n  focus,\n})\n</script>\n"],"names":["lang","rows","_createElementBlock","_unref","_normalizeClass","_createElementVNode","_openBlock","_Fragment","_renderList","_withKeys","_withModifiers","_createVNode"],"mappings":"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"}