{"version":3,"file":"basic-year-table.vue2.mjs","sources":["../../../../../../packages/components/date-picker/src/date-picker-com/basic-year-table.vue"],"sourcesContent":["<template>\n  <table :class=\"ns.b()\" @click=\"handleYearTableClick\">\n    <tbody>\n      <tr v-for=\"(_, i) in 2\" :key=\"i\">\n        <DateCell\n          v-for=\"(__, j) in 4\"\n          :key=\"`${i}_${j}`\"\n          :row-index=\"i\"\n          :col-index=\"j\"\n        />\n      </tr>\n      <tr>\n        <DateCell :row-index=\"2\" :col-index=\"0\" />\n        <DateCell :row-index=\"2\" :col-index=\"1\" />\n      </tr>\n    </tbody>\n  </table>\n</template>\n\n<script lang=\"tsx\" setup>\nimport { computed, defineComponent, nextTick, ref, watch } from 'vue'\nimport dayjs from 'dayjs'\nimport { useNamespace } from '@element-ultra/hooks'\nimport { rangeArr } from '@element-ultra/components/time-picker'\nimport { castArray, hasClass } from '@element-ultra/utils'\nimport { basicYearTableProps } from '../props/basic-year-table'\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 DateCell = defineComponent({\n  props: {\n    rowIndex: {\n      type: Number,\n      required: true\n    },\n    colIndex: {\n      type: Number,\n      required: true\n    }\n  },\n  setup(props) {\n    return () => {\n      const cellYear = startYear.value + props.rowIndex * 4 + props.colIndex\n      return (\n        <td class='available' class={getCellStyle(cellYear)}>\n          <a class='cell'>{cellYear}</a>\n        </td>\n      )\n    }\n  }\n})\n\nconst getCellStyle = (year: number) => {\n  const style = {} as any\n  const today = dayjs().locale('zh-cn')\n\n  style.disabled = props.disabledDate\n    ? datesInYear(year, 'zh-cn').every(props.disabledDate)\n    : false\n\n  style.current =\n    castArray(props.parsedValue).findIndex(_ => _.year() === year) >= 0\n\n  style.today = today.year() === year\n\n  return style\n}\n\nconst props = defineProps(basicYearTableProps)\nconst emit = defineEmits(['pick'])\n\nconst ns = useNamespace('year-table')\n\nconst tbodyRef = ref<HTMLElement>()\nconst currentCellRef = ref<HTMLElement>()\nconst startYear = computed(() => {\n  return Math.floor(props.date!.year() / 10) * 10\n})\n\nconst focus = () => {\n  currentCellRef.value?.focus()\n}\n\nconst handleYearTableClick = (event: MouseEvent | KeyboardEvent) => {\n  const clickTarget = event.target as HTMLDivElement\n  const target = clickTarget.closest('td')\n  if (target) {\n    if (hasClass(target, 'disabled')) return\n    const year = target.textContent || target.innerText\n    emit('pick', Number(year))\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":["datesInYear","year","lang","firstDay","dayjs","String","locale","startOf","lastDay","endOf","numOfDays","dayOfYear","rangeArr","map","n","add","toDate","DateCell","props","rowIndex","type","Number","required","colIndex","setup","cellYear","startYear","value","_createVNode2","getCellStyle","style","today","disabled","disabledDate","every","current","castArray","parsedValue","findIndex","_","ns","useNamespace","tbodyRef","ref","currentCellRef","computed","Math","floor","date","focus","handleYearTableClick","event","clickTarget","target","closest","hasClass","textContent","innerText","emit","watch","contains","document","activeElement","nextTick","expose"],"mappings":"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"}