You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 lines
14 KiB

{"ast":null,"code":"import dayjs from 'dayjs';\nimport { isArray } from '@vue/shared';\nimport { rangeArr } from '../../time-picker/src/utils.mjs';\nconst isValidRange = range => {\n if (!isArray(range)) return false;\n const [left, right] = range;\n return dayjs.isDayjs(left) && dayjs.isDayjs(right) && left.isSameOrBefore(right);\n};\nconst getDefaultValue = (defaultValue, {\n lang,\n unit,\n unlinkPanels\n}) => {\n let start;\n if (isArray(defaultValue)) {\n let [left, right] = defaultValue.map(d => dayjs(d).locale(lang));\n if (!unlinkPanels) {\n right = left.add(1, unit);\n }\n return [left, right];\n } else if (defaultValue) {\n start = dayjs(defaultValue);\n } else {\n start = dayjs();\n }\n start = start.locale(lang);\n return [start, start.add(1, unit)];\n};\nconst buildPickerTable = (dimension, rows, {\n columnIndexOffset,\n startDate,\n nextEndDate,\n now,\n unit,\n relativeDateGetter,\n setCellMetadata,\n setRowMetadata\n}) => {\n for (let rowIndex = 0; rowIndex < dimension.row; rowIndex++) {\n const row = rows[rowIndex];\n for (let columnIndex = 0; columnIndex < dimension.column; columnIndex++) {\n let cell = row[columnIndex + columnIndexOffset];\n if (!cell) {\n cell = {\n row: rowIndex,\n column: columnIndex,\n type: \"normal\",\n inRange: false,\n start: false,\n end: false\n };\n }\n const index = rowIndex * dimension.column + columnIndex;\n const nextStartDate = relativeDateGetter(index);\n cell.dayjs = nextStartDate;\n cell.date = nextStartDate.toDate();\n cell.timestamp = nextStartDate.valueOf();\n cell.type = \"normal\";\n cell.inRange = !!(startDate && nextStartDate.isSameOrAfter(startDate, unit) && nextEndDate && nextStartDate.isSameOrBefore(nextEndDate, unit)) || !!(startDate && nextStartDate.isSameOrBefore(startDate, unit) && nextEndDate && nextStartDate.isSameOrAfter(nextEndDate, unit));\n if (startDate == null ? void 0 : startDate.isSameOrAfter(nextEndDate)) {\n cell.start = !!nextEndDate && nextStartDate.isSame(nextEndDate, unit);\n cell.end = startDate && nextStartDate.isSame(startDate, unit);\n } else {\n cell.start = !!startDate && nextStartDate.isSame(startDate, unit);\n cell.end = !!nextEndDate && nextStartDate.isSame(nextEndDate, unit);\n }\n const isToday = nextStartDate.isSame(now, unit);\n if (isToday) {\n cell.type = \"today\";\n }\n setCellMetadata == null ? void 0 : setCellMetadata(cell, {\n rowIndex,\n columnIndex\n });\n row[columnIndex + columnIndexOffset] = cell;\n }\n setRowMetadata == null ? void 0 : setRowMetadata(row);\n }\n};\nconst datesInMonth = (year, month, lang) => {\n const firstDay = dayjs().locale(lang).startOf(\"month\").month(month).year(year);\n const numOfDays = firstDay.daysInMonth();\n return rangeArr(numOfDays).map(n => firstDay.add(n, \"day\").toDate());\n};\nconst getValidDateOfMonth = (year, month, lang, disabledDate) => {\n const _value = dayjs().year(year).month(month).startOf(\"month\");\n const _date = datesInMonth(year, month, lang).find(date => {\n return !(disabledDate == null ? void 0 : disabledDate(date));\n });\n if (_date) {\n return dayjs(_date).locale(lang);\n }\n return _value.locale(lang);\n};\nconst getValidDateOfYear = (value, lang, disabledDate) => {\n const year = value.year();\n if (!(disabledDate == null ? void 0 : disabledDate(value.toDate()))) {\n return value.locale(lang);\n }\n const month = value.month();\n if (!datesInMonth(year, month, lang).every(disabledDate)) {\n return getValidDateOfMonth(year, month, lang, disabledDate);\n }\n for (let i = 0; i < 12; i++) {\n if (!datesInMonth(year, i, lang).every(disabledDate)) {\n return getValidDateOfMonth(year, i, lang, disabledDate);\n }\n }\n return value;\n};\nexport { buildPickerTable, datesInMonth, getDefaultValue, getValidDateOfMonth, getValidDateOfYear, isValidRange };","map":{"version":3,"names":["isValidRange","range","isArray","left","right","dayjs","isDayjs","isSameOrBefore","getDefaultValue","defaultValue","lang","unit","unlinkPanels","start","map","d","locale","add","buildPickerTable","dimension","rows","columnIndexOffset","startDate","nextEndDate","now","relativeDateGetter","setCellMetadata","setRowMetadata","rowIndex","row","columnIndex","column","cell","type","inRange","end","index","nextStartDate","date","toDate","timestamp","valueOf","isSameOrAfter","isSame","isToday","datesInMonth","year","month","firstDay","startOf","numOfDays","daysInMonth","rangeArr","n","getValidDateOfMonth","disabledDate","_value","_date","find","getValidDateOfYear","value","every","i"],"sources":["../../../../../../packages/components/date-picker/src/utils.ts"],"sourcesContent":["import dayjs from 'dayjs'\nimport { isArray } from '@element-plus/utils'\nimport { rangeArr } from '@element-plus/components/time-picker'\n\nimport type { Dayjs } from 'dayjs'\nimport type { DateCell } from './date-picker.type'\nimport type { DisabledDateType } from './props/shared'\n\ntype DayRange = [Dayjs | undefined, Dayjs | undefined]\n\nexport const isValidRange = (range: DayRange): boolean => {\n if (!isArray(range)) return false\n\n const [left, right] = range\n\n return (\n dayjs.isDayjs(left) && dayjs.isDayjs(right) && left.isSameOrBefore(right)\n )\n}\n\ntype GetDefaultValueParams = {\n lang: string\n unit: 'month' | 'year'\n unlinkPanels: boolean\n}\n\nexport type DefaultValue = [Date, Date] | Date | undefined\n\nexport const getDefaultValue = (\n defaultValue: DefaultValue,\n { lang, unit, unlinkPanels }: GetDefaultValueParams\n) => {\n let start: Dayjs\n\n if (isArray(defaultValue)) {\n let [left, right] = defaultValue.map((d) => dayjs(d).locale(lang))\n if (!unlinkPanels) {\n right = left.add(1, unit)\n }\n return [left, right]\n } else if (defaultValue) {\n start = dayjs(defaultValue)\n } else {\n start = dayjs()\n }\n start = start.locale(lang)\n return [start, start.add(1, unit)]\n}\n\ntype Dimension = {\n row: number\n column: number\n}\n\ntype BuildPickerTableMetadata = {\n startDate?: Dayjs | null\n unit: 'month' | 'day'\n columnIndexOffset: number\n now: Dayjs\n nextEndDate: Dayjs | null\n relativeDateGetter: (index: number) => Dayjs\n setCellMetadata?: (\n cell: DateCell,\n dimension: { rowIndex: number; columnIndex: number }\n ) => void\n setRowMetadata?: (row: DateCell[]) => void\n}\n\nexport const buildPickerTable = (\n dimension: Dimension,\n rows: DateCell[][],\n {\n columnIndexOffset,\n startDate,\n nextEndDate,\n now,\n unit,\n relativeDateGetter,\n setCellMetadata,\n setRowMetadata,\n }: BuildPickerTableMetadata\n) => {\n for (let rowIndex = 0; rowIndex < dimension.row; rowIndex++) {\n const row = rows[rowIndex]\n for (let columnIndex = 0; columnIndex < dimension.column; columnIndex++) {\n let cell = row[columnIndex + columnIndexOffset]\n if (!cell) {\n cell = {\n row: rowIndex,\n column: columnIndex,\n type: 'normal',\n inRange: false,\n start: false,\n end: false,\n }\n }\n const index = rowIndex * dimension.column + columnIndex\n const nextStartDate = relativeDateGetter(index)\n cell.dayjs = nextStartDate\n cell.date = nextStartDate.toDate()\n cell.timestamp = nextStartDate.valueOf()\n cell.type = 'normal'\n\n cell.inRange =\n !!(\n startDate &&\n nextStartDate.isSameOrAfter(startDate, unit) &&\n nextEndDate &&\n nextStartDate.isSameOrBefore(nextEndDate, unit)\n ) ||\n !!(\n startDate &&\n nextStartDate.isSameOrBefore(startDate, unit) &&\n nextEndDate &&\n nextStartDate.isSameOrAfter(nextEndDate, unit)\n )\n\n if (startDate?.isSameOrAfter(nextEndDate)) {\n cell.start = !!nextEndDate && nextStartDate.isSame(nextEndDate, unit)\n cell.end = startDate && nextStartDate.isSame(startDate, unit)\n } else {\n cell.start = !!startDate && nextStartDate.isSame(startDate, unit)\n cell.end = !!nextEndDate && nextStartDate.isSame(nextEndDate, unit)\n }\n\n const isToday = nextStartDate.isSame(now, unit)\n\n if (isToday) {\n cell.type = 'today'\n }\n setCellMetadata?.(cell, { rowIndex, columnIndex })\n row[columnIndex + columnIndexOffset] = cell\n }\n setRowMetadata?.(row)\n }\n}\n\nexport const datesInMonth = (year: number, month: number, lang: string) => {\n const firstDay = dayjs().locale(lang).startOf('month').month(month).year(year)\n const numOfDays = firstDay.daysInMonth()\n return rangeArr(numOfDays).map((n) => firstDay.add(n, 'day').toDate())\n}\n\nexport const getValidDateOfMonth = (\n year: number,\n month: number,\n lang: string,\n disabledDate?: DisabledDateType\n) => {\n const _value = dayjs().year(year).month(month).startOf('month')\n const _date = datesInMonth(year, month, lang).find((date) => {\n return !disabledDate?.(date)\n })\n if (_date) {\n return dayjs(_date).locale(lang)\n }\n return _value.locale(lang)\n}\n\nexport const getValidDateOfYear = (\n value: Dayjs,\n lang: string,\n disabledDate?: DisabledDateType\n) => {\n const year = value.year()\n if (!disabledDate?.(value.toDate())) {\n return value.locale(lang)\n }\n const month = value.month()\n if (!datesInMonth(year, month, lang).every(disabledDate)) {\n return getValidDateOfMonth(year, month, lang, disabledDate)\n }\n for (let i = 0; i < 12; i++) {\n if (!datesInMonth(year, i, lang).every(disabledDate)) {\n return getValidDateOfMonth(year, i, lang, disabledDate)\n }\n }\n return value\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}