xdesign-vue-next
Version:
XDesign Component for vue-next
1 lines • 19.9 kB
Source Map (JSON)
{"version":3,"file":"format.mjs","sources":["../../../../node_modules/dayjs/plugin/isoWeeksInYear.js","../../../../node_modules/dayjs/plugin/isLeapYear.js","../../../../src/_common/js/date-picker/format.ts"],"sourcesContent":["!function(e,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isoWeeksInYear=n()}(this,(function(){\"use strict\";return function(e,n){n.prototype.isoWeeksInYear=function(){var e=this.isLeapYear(),n=this.endOf(\"y\").day();return 4===n||e&&5===n?53:52}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isLeapYear=t()}(this,(function(){\"use strict\";return function(e,t){t.prototype.isLeapYear=function(){return this.$y%4==0&&this.$y%100!=0||this.$y%400==0}}}));","import isString from 'lodash/isString';\nimport dayjs from 'dayjs';\nimport isoWeeksInYear from 'dayjs/plugin/isoWeeksInYear';\nimport isLeapYear from 'dayjs/plugin/isLeapYear';\nimport { extractTimeFormat } from './utils';\nimport log from '../log';\n\ntype DateValue = string | number | Date;\n\ndayjs.extend(isoWeeksInYear);\ndayjs.extend(isLeapYear);\n\nexport const TIME_FORMAT = 'HH:mm:ss';\n\n// 统一解析日期格式字符串成 Dayjs 对象\nexport function parseToDayjs(\n value: string | Date | number,\n format: string,\n timeOfDay?: string,\n dayjsLocale?: string,\n) {\n if (value === '' || value === null) return dayjs();\n\n let dateText = value;\n // format week\n if (/[w|W]/g.test(format)) {\n if (!isString(dateText)) {\n dateText = dayjs(dateText).locale(dayjsLocale || 'zh-cn').format(format) as string;\n }\n\n const yearStr = dateText.split(/[-/.\\s]/)[0];\n const weekStr = dateText.split(/[-/.\\s]/)[1];\n const weekFormatStr = format.split(/[-/.\\s]/)[1];\n\n let firstWeek = dayjs(yearStr, 'YYYY').locale(dayjsLocale || 'zh-cn').startOf('year');\n // 第一周ISO定义: 本年度第一个星期四所在的星期\n // 如果第一年第一天在星期四后, 直接跳到下一周, 下一周必定是第一周\n // 否则本周即为第一周\n if (firstWeek.day() > 4 || firstWeek.day() === 0) firstWeek = firstWeek.add(1, 'week');\n\n // 一年有52或者53周, 引入IsoWeeksInYear辅助查询\n const weekCounts = dayjs(yearStr, 'YYYY').locale(dayjsLocale || 'zh-cn').isoWeeksInYear();\n for (let i = 0; i <= weekCounts; i += 1) {\n let nextWeek = firstWeek.add(i, 'week');\n // 重置为周的第一天\n if (timeOfDay === 'start') nextWeek = nextWeek.subtract(5, 'day');\n if (nextWeek.format(weekFormatStr) === weekStr) {\n return nextWeek;\n }\n }\n }\n\n // format quarter\n if (/Q/g.test(format)) {\n if (!isString(dateText)) {\n dateText = dayjs(dateText).locale(dayjsLocale || 'zh-cn').format(format) as string;\n }\n\n const yearStr = dateText.split(/[-/.\\s]/)[0];\n const quarterStr = dateText.split(/[-/.\\s]/)[1];\n const quarterFormatStr = format.split(/[-/.\\s]/)[1];\n const firstQuarter = dayjs(yearStr, 'YYYY').startOf('year');\n for (let i = 0; i < 4; i += 1) {\n const nextQuarter = firstQuarter.add(i, 'quarter');\n if (nextQuarter.format(quarterFormatStr) === quarterStr) {\n return nextQuarter;\n }\n }\n }\n\n // 兼容数据格式不标准场景 YYYY-MM-D\n const result = dayjs(dateText, format).isValid()\n ? dayjs(dateText, format)\n : dayjs(dateText);\n\n // 兼容数据异常情况\n if (!result.isValid()) {\n log.error('DatePicker', `Check whether the format、value format is valid.\\n value: '${value}', format: '${format}'`);\n return dayjs();\n }\n\n return result;\n}\n\n// 格式化 range\nfunction formatRange({\n newDate,\n format,\n dayjsLocale,\n targetFormat,\n autoSwap,\n}: {\n newDate: any;\n format: string;\n dayjsLocale?: string;\n targetFormat?: string;\n autoSwap?: boolean;\n}) {\n if (!newDate || !Array.isArray(newDate)) return [];\n\n let dayjsDateList = newDate.map((d) => d && parseToDayjs(d, format).locale(dayjsLocale));\n\n // 保证后面的时间大于前面的时间\n if (\n autoSwap\n && dayjsDateList[0]\n && dayjsDateList[1]\n && dayjsDateList[0].toDate().getTime() > dayjsDateList[1].toDate().getTime()\n ) {\n // 数据兼容规则\n dayjsDateList = [dayjsDateList[1], dayjsDateList[0]];\n }\n\n // 格式化失败提示\n if (dayjsDateList.some((r) => r && !r.isValid())) {\n log.error(\n 'DatePicker',\n `Check whether the value、format、valueType format is valid.\\nformat: '${format}' value: '${newDate}' valueType: '${targetFormat}'`\n );\n return [];\n }\n\n // valueType = 'time-stamp' 返回时间戳\n if (targetFormat === 'time-stamp') return dayjsDateList.map((da) => da && da.toDate().getTime());\n // valueType = 'Date' 返回时间对象\n if (targetFormat === 'Date') return dayjsDateList.map((da) => da && da.toDate());\n\n return dayjsDateList.map((da) => da && da.format(targetFormat || format));\n}\n\n// 格式化单选\nfunction formatSingle({\n newDate,\n format,\n targetFormat,\n dayjsLocale,\n}: {\n newDate: any;\n format: string;\n targetFormat?: string;\n dayjsLocale?: string;\n}) {\n if (!newDate) return '';\n\n const dayJsDate = parseToDayjs(newDate, format).locale(dayjsLocale);\n\n // 格式化失败提示\n if (!dayJsDate.isValid()) {\n log.error(\n 'DatePicker',\n `Check whether the format、value format is valid.\\nformat: '${format}' value: '${newDate}'`\n );\n return '';\n }\n\n // valueType = 'time-stamp' 返回时间戳\n if (targetFormat === 'time-stamp') return dayJsDate.toDate().getTime();\n // valueType = 'Date' 返回时间对象\n if (targetFormat === 'Date') return dayJsDate.toDate();\n\n return dayJsDate.format(targetFormat || format);\n}\n\n// 检测日期是否合法\nexport function isValidDate(value: DateValue | DateValue[], format: string) {\n if (Array.isArray(value)) {\n return value.every((v) => {\n if (v === '') return true;\n return dayjs(v, format).isValid() || dayjs(v).isValid();\n });\n }\n\n if (value === '') return true;\n return dayjs(value, format).isValid() || dayjs(value).isValid();\n}\n\n// 日期格式化\nexport function formatDate(\n newDate: DateValue | DateValue[],\n {\n format,\n targetFormat,\n dayjsLocale = 'zh-cn',\n autoSwap,\n }: { format: string; dayjsLocale?: string, targetFormat?: string; autoSwap?: boolean }\n) {\n let result;\n\n if (Array.isArray(newDate)) {\n result = formatRange({ newDate, format, dayjsLocale, targetFormat, autoSwap });\n } else {\n result = formatSingle({ newDate, format, dayjsLocale, targetFormat });\n }\n\n return result;\n}\n\n// 对齐格式化时间\nexport function calcFormatTime(time: string, timeFormat: string) {\n if (time && timeFormat) {\n const timeArr = time.split(':');\n const timeFormatArr = timeFormat.split(':');\n return timeArr.slice(0, timeFormatArr.length).join(':');\n }\n return time;\n}\n\n// TODO 细化 value 类型\n// 格式化时间\nexport function formatTime(value: any, format: string, timeFormat: string, defaultTime: string | string[]) {\n // 无论参数是不是数组,统一转成数组处理\n let result = Array.isArray(value) ? value : [value];\n // eslint-disable-next-line no-param-reassign\n defaultTime = Array.isArray(defaultTime) ? defaultTime : [defaultTime, defaultTime];\n result = result.map((v, i) => {\n // string格式需要用format去解析,其他诸如Date、time-stamp格式则直接dayjs\n if (v) return dayjs(v, typeof v === 'string' ? format : undefined).format(timeFormat);\n return calcFormatTime(defaultTime[i], timeFormat);\n });\n result = result.length ? result : defaultTime.map((t) => calcFormatTime(t, timeFormat));\n // value是数组就输出数组,不是数组就输出第一个即可\n return Array.isArray(value) ? result : result?.[0];\n}\n\n// 根据不同 mode 给出格式化默认值\nexport function getDefaultFormat({\n mode = 'date',\n format,\n valueType,\n enableTimePicker,\n}: {\n mode?: string;\n format?: string;\n valueType?: string;\n enableTimePicker?: boolean;\n}) {\n if (mode === 'year') {\n return {\n format: format || 'YYYY',\n valueType: valueType || format || 'YYYY',\n timeFormat: TIME_FORMAT,\n };\n }\n if (mode === 'month') {\n return {\n format: format || 'YYYY-MM',\n valueType: valueType || format || 'YYYY-MM',\n timeFormat: TIME_FORMAT,\n };\n }\n if (mode === 'quarter') {\n return {\n format: format || 'YYYY-[Q]Q',\n valueType: valueType || format || 'YYYY-[Q]Q',\n timeFormat: TIME_FORMAT,\n };\n }\n if (mode === 'week') {\n return {\n format: format || 'YYYY-wo',\n valueType: valueType || format || 'YYYY-wo',\n timeFormat: TIME_FORMAT,\n };\n }\n if (mode === 'date') {\n return {\n format: format || `YYYY-MM-DD${enableTimePicker ? ' HH:mm:ss' : ''}`,\n valueType: valueType || format || `YYYY-MM-DD${enableTimePicker ? ' HH:mm:ss' : ''}`,\n timeFormat: extractTimeFormat(format || `YYYY-MM-DD${enableTimePicker ? ' HH:mm:ss' : ''}`) || TIME_FORMAT,\n };\n }\n log.error('DatePicker', `Invalid mode: ${mode}`);\n return {};\n}\n\n// 初始化面板年份月份\nexport function initYearMonthTime({\n value,\n mode = 'date',\n format,\n timeFormat = 'HH:mm:ss',\n enableTimePicker,\n}: {\n value: Array<any>;\n mode: string;\n format: string;\n timeFormat?: string;\n enableTimePicker?: boolean;\n}) {\n const defaultYearMonthTime = {\n year: [dayjs().year(), dayjs().year()],\n month: [dayjs().month(), dayjs().month()],\n time: [dayjs().format(timeFormat), dayjs().format(timeFormat)],\n };\n if (mode === 'year') {\n defaultYearMonthTime.year[1] += 10;\n } else if (mode === 'month' || mode === 'quarter') {\n defaultYearMonthTime.year[1] += 1;\n } else if ((mode === 'date' || mode === 'week') && !enableTimePicker) {\n // 切换至下一年\n if (defaultYearMonthTime.month[0] === 11) {\n defaultYearMonthTime.year[1] += 1;\n defaultYearMonthTime.month[1] = 0;\n } else {\n defaultYearMonthTime.month[1] += 1;\n }\n }\n\n if (!value || !Array.isArray(value) || !value.length) {\n return defaultYearMonthTime;\n }\n\n return {\n year: value.map((v) => parseToDayjs(v, format).year()),\n month: value.map((v) => parseToDayjs(v, format).month()),\n time: value.map((v) => parseToDayjs(v, format).format(timeFormat)),\n };\n}\n"],"names":["e","n","module","exports","define","amd","globalThis","self","dayjs_plugin_isoWeeksInYear","this","prototype","isoWeeksInYear","isLeapYear","endOf","day","t","dayjs_plugin_isLeapYear","$y","dayjs","isString","dateText","log","dayjsLocale","newDate","format","targetFormat","autoSwap","defaultTime","result","mode","valueType","timeFormat","year","month","time","defaultYearMonthTime"],"mappings":"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"}