{"version":3,"file":"basic-date-table2.mjs","sources":["../../../../../../../packages/components/date-picker/src/date-picker-com/basic-date-table.vue"],"sourcesContent":["<template>\n  <table\n    role=\"grid\"\n    :aria-label=\"t('el.datepicker.dateTablePrompt')\"\n    cellspacing=\"0\"\n    cellpadding=\"0\"\n    :class=\"[ns.b(), { 'is-week-mode': selectionMode === 'week' }]\"\n    @click=\"handlePickDate\"\n    @mousemove=\"handleMouseMove\"\n  >\n    <tbody ref=\"tbodyRef\">\n      <tr>\n        <th v-if=\"showWeekNumber\" scope=\"col\">{{ t('el.datepicker.week') }}</th>\n        <th\n          v-for=\"(week, key) in WEEKS\"\n          :key=\"key\"\n          scope=\"col\"\n          :aria-label=\"t('el.datepicker.weeksFull.' + week)\"\n        >\n          {{ t('el.datepicker.weeks.' + week) }}\n        </th>\n      </tr>\n      <tr\n        v-for=\"(row, key) in rows\"\n        :key=\"key\"\n        :class=\"[ns.e('row'), { current: isWeekActive(row[1]) }]\"\n      >\n        <td\n          v-for=\"(cell, key_) in row\"\n          :key=\"key_\"\n          :ref=\"(el) => isSelectedCell(cell) && (currentCellRef = el)\"\n          :class=\"getCellClasses(cell)\"\n          :aria-current=\"cell.isCurrent ? 'date' : undefined\"\n          :aria-selected=\"`${cell.isCurrent}`\"\n          :tabindex=\"isSelectedCell(cell) ? 0 : -1\"\n          @focus=\"handleFocus\"\n        >\n          <el-date-picker-cell :cell=\"cell\" />\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, nextTick, ref, watch } from 'vue'\nimport dayjs from 'dayjs'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport { castArray } from '@element-plus/utils'\nimport { basicDateTableProps } from '../props/basic-date-table'\nimport ElDatePickerCell from './basic-cell-render'\n\nimport type { Dayjs } from 'dayjs'\nimport type { DateCell } from '../date-picker.type'\n\nexport default defineComponent({\n  components: {\n    ElDatePickerCell,\n  },\n  props: basicDateTableProps,\n  emits: ['changerange', 'pick', 'select'],\n  expose: ['focus'],\n  setup(props, ctx) {\n    const ns = useNamespace('date-table')\n\n    const { t, lang } = useLocale()\n\n    const tbodyRef = ref<HTMLElement>()\n    const currentCellRef = ref<HTMLElement>()\n    // data\n    const lastRow = ref(null)\n    const lastColumn = ref(null)\n    const tableRows = ref<DateCell[][]>([[], [], [], [], [], []])\n\n    // todo better way to get Day.js locale object\n    const firstDayOfWeek = (props.date as any).$locale().weekStart || 7\n    const WEEKS_CONSTANT = props.date\n      .locale('en')\n      .localeData()\n      .weekdaysShort()\n      .map((_) => _.toLowerCase())\n\n    const offsetDay = computed(() => {\n      // Sunday 7(0), cal the left and right offset days, 3217654, such as Monday is -1, the is to adjust the position of the first two rows of dates\n      return firstDayOfWeek > 3 ? 7 - firstDayOfWeek : -firstDayOfWeek\n    })\n\n    const startDate = computed(() => {\n      const startDayOfMonth = props.date.startOf('month')\n      return startDayOfMonth.subtract(startDayOfMonth.day() || 7, 'day')\n    })\n\n    const WEEKS = computed(() => {\n      return WEEKS_CONSTANT.concat(WEEKS_CONSTANT).slice(\n        firstDayOfWeek,\n        firstDayOfWeek + 7\n      )\n    })\n\n    const hasCurrent = computed<boolean>(() => {\n      return rows.value.flat().some((row) => {\n        return row.isCurrent\n      })\n    })\n\n    const rows = computed(() => {\n      // TODO: refactory rows / getCellClasses\n      const startOfMonth = props.date.startOf('month')\n      const startOfMonthDay = startOfMonth.day() || 7 // day of first day\n      const dateCountOfMonth = startOfMonth.daysInMonth()\n      const dateCountOfLastMonth = startOfMonth\n        .subtract(1, 'month')\n        .daysInMonth()\n\n      const offset = offsetDay.value\n      const rows_ = tableRows.value\n      let count = 1\n\n      const selectedDate: Dayjs[] =\n        props.selectionMode === 'dates' ? castArray(props.parsedValue) : []\n\n      const calNow = dayjs().locale(lang.value).startOf('day')\n\n      for (let i = 0; i < 6; i++) {\n        const row = rows_[i]\n\n        if (props.showWeekNumber) {\n          if (!row[0]) {\n            row[0] = {\n              type: 'week',\n              text: startDate.value.add(i * 7 + 1, 'day').week(),\n            }\n          }\n        }\n\n        for (let j = 0; j < 7; j++) {\n          let cell = row[props.showWeekNumber ? j + 1 : 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            }\n          }\n          const index = i * 7 + j\n          const calTime = startDate.value.add(index - offset, 'day')\n          cell.dayjs = calTime\n          cell.date = calTime.toDate()\n          cell.timestamp = calTime.valueOf()\n          cell.type = 'normal'\n\n          const calEndDate =\n            props.rangeState.endDate ||\n            props.maxDate ||\n            (props.rangeState.selecting && props.minDate)\n\n          cell.inRange =\n            (props.minDate &&\n              calTime.isSameOrAfter(props.minDate, 'day') &&\n              calEndDate &&\n              calTime.isSameOrBefore(calEndDate, 'day')) ||\n            (props.minDate &&\n              calTime.isSameOrBefore(props.minDate, 'day') &&\n              calEndDate &&\n              calTime.isSameOrAfter(calEndDate, 'day'))\n\n          if (props.minDate?.isSameOrAfter(calEndDate)) {\n            cell.start = calEndDate && calTime.isSame(calEndDate, 'day')\n            cell.end = props.minDate && calTime.isSame(props.minDate, 'day')\n          } else {\n            cell.start = props.minDate && calTime.isSame(props.minDate, 'day')\n            cell.end = calEndDate && calTime.isSame(calEndDate, 'day')\n          }\n\n          const isToday = calTime.isSame(calNow, 'day')\n\n          if (isToday) {\n            cell.type = 'today'\n          }\n\n          if (i >= 0 && i <= 1) {\n            const numberOfDaysFromPreviousMonth =\n              startOfMonthDay + offset < 0\n                ? 7 + startOfMonthDay + offset\n                : startOfMonthDay + offset\n\n            if (j + i * 7 >= numberOfDaysFromPreviousMonth) {\n              cell.text = count++\n            } else {\n              cell.text =\n                dateCountOfLastMonth -\n                (numberOfDaysFromPreviousMonth - (j % 7)) +\n                1 +\n                i * 7\n              cell.type = 'prev-month'\n            }\n          } else {\n            if (count <= dateCountOfMonth) {\n              cell.text = count++\n            } else {\n              cell.text = count++ - dateCountOfMonth\n              cell.type = 'next-month'\n            }\n          }\n\n          const cellDate = calTime.toDate()\n          cell.selected = selectedDate.find(\n            (_) => _.valueOf() === calTime.valueOf()\n          )\n          cell.isSelected = !!cell.selected\n          cell.isCurrent = isCurrent(cell)\n          cell.disabled = props.disabledDate && props.disabledDate(cellDate)\n          cell.customClass =\n            props.cellClassName && props.cellClassName(cellDate)\n          row[props.showWeekNumber ? j + 1 : j] = cell\n        }\n\n        if (props.selectionMode === 'week') {\n          const start = props.showWeekNumber ? 1 : 0\n          const end = props.showWeekNumber ? 7 : 6\n          const isActive = isWeekActive(row[start + 1])\n          row[start].inRange = isActive\n          row[start].start = isActive\n          row[end].inRange = isActive\n          row[end].end = isActive\n        }\n      }\n      return rows_\n    })\n\n    watch(\n      () => props.date,\n      async () => {\n        if (tbodyRef.value?.contains(document.activeElement)) {\n          await nextTick()\n          currentCellRef.value?.focus()\n        }\n      }\n    )\n\n    const focus = async () => {\n      currentCellRef.value?.focus()\n    }\n\n    const isCurrent = (cell): boolean => {\n      return (\n        props.selectionMode === 'date' &&\n        (cell.type === 'normal' || cell.type === 'today') &&\n        cellMatchesDate(cell, props.parsedValue)\n      )\n    }\n\n    const cellMatchesDate = (cell, date) => {\n      if (!date) return false\n      return dayjs(date)\n        .locale(lang.value)\n        .isSame(props.date.date(Number(cell.text)), 'day')\n    }\n\n    const getCellClasses = (cell) => {\n      const classes: string[] = []\n      if ((cell.type === 'normal' || cell.type === 'today') && !cell.disabled) {\n        classes.push('available')\n        if (cell.type === 'today') {\n          classes.push('today')\n        }\n      } else {\n        classes.push(cell.type)\n      }\n\n      if (isCurrent(cell)) {\n        classes.push('current')\n      }\n\n      if (\n        cell.inRange &&\n        (cell.type === 'normal' ||\n          cell.type === 'today' ||\n          props.selectionMode === 'week')\n      ) {\n        classes.push('in-range')\n\n        if (cell.start) {\n          classes.push('start-date')\n        }\n\n        if (cell.end) {\n          classes.push('end-date')\n        }\n      }\n\n      if (cell.disabled) {\n        classes.push('disabled')\n      }\n\n      if (cell.selected) {\n        classes.push('selected')\n      }\n\n      if (cell.customClass) {\n        classes.push(cell.customClass)\n      }\n\n      return classes.join(' ')\n    }\n\n    const getDateOfCell = (row, column) => {\n      const offsetFromStart =\n        row * 7 + (column - (props.showWeekNumber ? 1 : 0)) - offsetDay.value\n      return startDate.value.add(offsetFromStart, 'day')\n    }\n\n    const handleMouseMove = (event) => {\n      if (!props.rangeState.selecting) return\n\n      let target = event.target\n      if (target.tagName === 'SPAN') {\n        target = target.parentNode.parentNode\n      }\n      if (target.tagName === 'DIV') {\n        target = target.parentNode\n      }\n      if (target.tagName !== 'TD') return\n\n      const row = target.parentNode.rowIndex - 1\n      const column = target.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        ctx.emit('changerange', {\n          selecting: true,\n          endDate: getDateOfCell(row, column),\n        })\n      }\n    }\n\n    const isSelectedCell = (cell: DateCell) => {\n      return (\n        (!hasCurrent.value && cell?.text === 1 && cell.type === 'normal') ||\n        cell.isCurrent\n      )\n    }\n\n    const handleFocus = (event: Event) => {\n      if (!hasCurrent.value && props.selectionMode === 'date') {\n        handlePickDate(event, true)\n      }\n    }\n\n    const handlePickDate = (event: Event, isKeyboardMovement = false) => {\n      let target = event.target as HTMLElement\n\n      target = target?.closest('td')\n\n      if (!target || target.tagName !== 'TD') return\n\n      const row = (target.parentNode as HTMLTableRowElement).rowIndex - 1\n      const column = (target as HTMLTableCellElement).cellIndex\n      const cell = rows.value[row][column]\n\n      if (cell.disabled || cell.type === 'week') return\n\n      const newDate = getDateOfCell(row, column)\n\n      if (props.selectionMode === 'range') {\n        if (!props.rangeState.selecting || !props.minDate) {\n          ctx.emit('pick', { minDate: newDate, maxDate: null })\n          ctx.emit('select', true)\n        } else {\n          if (newDate >= props.minDate) {\n            ctx.emit('pick', { minDate: props.minDate, maxDate: newDate })\n          } else {\n            ctx.emit('pick', { minDate: newDate, maxDate: props.minDate })\n          }\n          ctx.emit('select', false)\n        }\n      } else if (props.selectionMode === 'date') {\n        ctx.emit('pick', newDate, isKeyboardMovement)\n      } else if (props.selectionMode === 'week') {\n        const weekNumber = newDate.week()\n        const value = `${newDate.year()}w${weekNumber}`\n        ctx.emit('pick', {\n          year: newDate.year(),\n          week: weekNumber,\n          value,\n          date: newDate.startOf('week'),\n        })\n      } else if (props.selectionMode === 'dates') {\n        const newValue = cell.selected\n          ? castArray(props.parsedValue).filter(\n              (_) => _.valueOf() !== newDate.valueOf()\n            )\n          : castArray(props.parsedValue).concat([newDate])\n        ctx.emit('pick', newValue)\n      }\n    }\n\n    const isWeekActive = (cell) => {\n      if (props.selectionMode !== 'week') return false\n      let newDate = props.date.startOf('day')\n\n      if (cell.type === 'prev-month') {\n        newDate = newDate.subtract(1, 'month')\n      }\n\n      if (cell.type === 'next-month') {\n        newDate = newDate.add(1, 'month')\n      }\n\n      newDate = newDate.date(Number.parseInt(cell.text, 10))\n\n      if (props.parsedValue && !Array.isArray(props.parsedValue)) {\n        const dayOffset =\n          ((props.parsedValue.day() - firstDayOfWeek + 7) % 7) - 1\n        const weekDate = props.parsedValue.subtract(dayOffset, 'day')\n        return weekDate.isSame(newDate, 'day')\n      }\n      return false\n    }\n\n    return {\n      ns,\n      tbodyRef,\n      currentCellRef,\n      handleMouseMove,\n      t,\n      hasCurrent,\n      rows,\n      isSelectedCell,\n      isWeekActive,\n      getCellClasses,\n      WEEKS,\n      handleFocus,\n      handlePickDate,\n      focus,\n    }\n  },\n})\n</script>\n"],"names":["_resolveComponent","_openBlock","_createElementBlock","_normalizeClass","_createElementVNode","_toDisplayString","_createCommentVNode","_Fragment","_renderList"],"mappings":"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"}