{"version":3,"file":"use-date-picker.mjs","sources":["../../../../../../packages/components/datepicker/src/use-date-picker.ts"],"sourcesContent":["import { ref, computed, onMounted, watch } from 'vue'\nimport { matchFormat } from '@touchvue/utils'\nimport { isString, isDateObj } from '@touchvue/utils'\nimport { DatePickerType, DatePickerValue, getDefaultFormat } from './date-picker'\n\nexport interface UseDatePickerOptions {\n\tmodelValue: DatePickerValue\n\tvalue?: DatePickerValue\n\ttype: DatePickerType\n\tmultiple?: boolean\n\tvalueFormat: string\n\tdisplayFormat: string\n\tmin?: string | Date | number\n\tmax?: string | Date | number\n\tbeforeChange?: (value: string) => boolean | Promise<boolean>\n}\n\nexport interface UseDatePickerEmits {\n\t(e: 'update:modelValue', value: DatePickerValue): void\n\t(e: 'change', value: DatePickerValue): void\n\t(e: 'beforeChange', value: DatePickerValue): void\n}\n\nexport function addZero(str: string | number) {\n\treturn ('00' + str).substr(str.toString().length)\n}\n\nexport function getDateStrFromMatch(regExp: RegExp, value = '', format = 'yyyy-MM-dd') {\n\tconst yMatch = format.match(regExp)\n\tif (!yMatch || yMatch.index === undefined) return ''\n\treturn value.substr(yMatch.index, yMatch[0].length)\n}\n\nexport function getDateFromValueFunc(props: { type: string }, value: string | Date, format: string = 'yyyy-MM-dd'): Date {\n\tif (!value) return new Date()\n\tif (typeof value === 'string') {\n\t\tconst date = new Date()\n\t\tlet day: string | number\n\t\tif (props.type === 'month') {\n\t\t\tday = 1\n\t\t} else {\n\t\t\tday = getDateStrFromMatch(/d+/, value, format) || addZero(date.getDate())\n\t\t}\n\t\tlet datearr = [getDateStrFromMatch(/y+/, value, format) || date.getFullYear(), getDateStrFromMatch(/M+/, value, format) || addZero(date.getMonth() + 1), day]\n\t\tlet timearr = [getDateStrFromMatch(/H+|h+/, value, format) || addZero(date.getHours()), getDateStrFromMatch(/m+/, value, format) || addZero(date.getMinutes()), getDateStrFromMatch(/s+/, value, format) || addZero(date.getSeconds())]\n\t\tif (props.type === 'time') {\n\t\t\tdatearr = [date.getFullYear(), addZero(date.getMonth() + 1), addZero(date.getDate())]\n\t\t\tconst times = value.split(':')\n\t\t\ttimearr = [times[0] || addZero(date.getHours()), times[1] || addZero(date.getMinutes()), times[2] || addZero(date.getSeconds())]\n\t\t}\n\t\tvalue = new Date(`${datearr.join('/')} ${timearr.join(':')}`)\n\t}\n\treturn value\n}\n\nexport function formatDateFunc(props: { type: string }, date: Date, fmt?: string): string {\n\tif (date) {\n\t\tif (!fmt) {\n\t\t\tif (props.type === 'datetime') {\n\t\t\t\tfmt = 'yyyy-MM-dd HH:mm:ss'\n\t\t\t} else if (props.type === 'time') {\n\t\t\t\tfmt = 'HH:mm:ss'\n\t\t\t} else {\n\t\t\t\tfmt = 'yyyy-MM-dd'\n\t\t\t}\n\t\t}\n\t\tif (/(y+)/.test(fmt)) {\n\t\t\tfmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))\n\t\t}\n\t\tconst o: { [key: string]: number } = {\n\t\t\t'M+': date.getMonth() + 1,\n\t\t\t'd+': date.getDate(),\n\t\t\t'H+': date.getHours(),\n\t\t\t'm+': date.getMinutes(),\n\t\t\t's+': date.getSeconds()\n\t\t}\n\t\tfor (const k in o) {\n\t\t\tif (new RegExp('(' + k + ')').test(fmt)) {\n\t\t\t\tconst str = o[k] + ''\n\t\t\t\tfmt = fmt.replace(RegExp.$1, RegExp.$1.length === 1 ? str : addZero(str))\n\t\t\t}\n\t\t}\n\t\treturn fmt\n\t} else {\n\t\treturn ''\n\t}\n}\n\nexport function useDatePicker(props: UseDatePickerOptions, emit: UseDatePickerEmits) {\n\t// 当前选择的Date\n\tconst date = ref<DatePickerValue>('')\n\tconst iValue = ref<DatePickerValue>('')\n\t// 当前显示的日期\n\tconst datedisplay = ref('')\n\tconst isDateType = ref<boolean>()\n\n\t// 计算属性\n\tconst currentValue = computed(() => props.modelValue || props.value)\n\n\tconst displayFormatRegExp = computed(() => {\n\t\tconst format = props.displayFormat\n\t\tconst regexStr = new RegExp(\n\t\t\t`^${String(format)\n\t\t\t\t.replace(/-|\\//g, '\\\\-')\n\t\t\t\t.replace(/[a-zA-Z]/g, '\\\\d')}$`\n\t\t)\n\t\treturn new RegExp(regexStr)\n\t})\n\n\tconst valueFormat = computed(() => {\n\t\tif (props.valueFormat) {\n\t\t\treturn props.valueFormat\n\t\t}\n\t\treturn getDefaultFormat(props.type)\n\t})\n\n\tconst displayFormat = computed(() => {\n\t\tif (props.displayFormat) {\n\t\t\treturn props.displayFormat\n\t\t}\n\t\treturn getDefaultFormat(props.type)\n\t})\n\n\t/**\n\t * 从字符串或Date对象中获取Date对象\n\t * @param {string | Date} value - 输入的日期值，可以是字符串或Date对象\n\t * @param {string} format - 日期格式，默认为'yyyy-MM-dd'\n\t * @returns {Date} 解析后的Date对象，如果输入为空则返回当前日期\n\t */\n\tfunction getDateFromValue(value: string | Date, format: string = 'yyyy-MM-dd'): Date {\n\t\treturn getDateFromValueFunc(props, value, format)\n\t}\n\n\t/**\n\t * 从Date对象转化为字符串\n\t * @param {Date} date - 输入的日期值，必须是Date对象\n\t * @param {string} fmt - 日期格式\n\t * @returns {string} 转换后的字符串\n\t */\n\tfunction formatDate(date: Date, fmt?: string): string {\n\t\treturn formatDateFunc(props, date, fmt)\n\t}\n\n\tfunction emitChangeEvent() {\n\t\tlet value = iValue.value\n\t\t// v-model为Date对象时\n\t\tif (isDateType.value && isString(value)) {\n\t\t\tvalue = getDateFromValue(value, props.valueFormat)\n\t\t}\n\t\temit('change', value)\n\t\temit('update:modelValue', value)\n\t}\n\n\tfunction handleDisplayChange(value: string) {\n\t\tdatedisplay.value = value\n\t\temit('change', datedisplay.value)\n\t}\n\n\tfunction handleDisplayBlur() {\n\t\tsetTimeout(() => {\n\t\t\tif (!datedisplay.value || (isNaN(new Date(datedisplay.value).getTime()) && !(props.multiple && (props.type === 'month' || props.type === 'date')))) {\n\t\t\t\tdatedisplay.value = ''\n\t\t\t\tchangeValue('')\n\t\t\t} else {\n\t\t\t\temit('beforeChange', datedisplay.value)\n\t\t\t\tif (!displayFormatRegExp.value.test(datedisplay.value) && !(props.multiple && (props.type === 'month' || props.type === 'date'))) {\n\t\t\t\t\tconst inputValue = datedisplay.value\n\t\t\t\t\tdatedisplay.value = formatDate(new Date(inputValue), displayFormat.value)\n\t\t\t\t\tiValue.value = formatDate(new Date(inputValue), valueFormat.value)\n\t\t\t\t\temitChangeEvent()\n\t\t\t\t} else if (props.multiple && (props.type === 'month' || props.type === 'date')) {\n\t\t\t\t\tchangeValue(datedisplay.value)\n\t\t\t\t} else {\n\t\t\t\t\tchangeValue(getDateFromValue(datedisplay.value, displayFormat.value))\n\t\t\t\t}\n\t\t\t}\n\t\t}, 100)\n\t}\n\n\tfunction changeValue(value: string | Date) {\n\t\temit('beforeChange', value)\n\t\tif (!value) {\n\t\t\tcleanValue()\n\t\t} else if (props.type === 'time') {\n\t\t\tif (typeof value === 'string') {\n\t\t\t\tdatedisplay.value = value.split(' ').length > 1 ? value.split(' ')[1] : value\n\t\t\t\tiValue.value = value.split(' ').length > 1 ? value.split(' ')[1] : value\n\t\t\t} else {\n\t\t\t\tlet valueStr = formatDate(new Date(value), 'yyyy-MM-dd HH:mm:ss')\n\t\t\t\tconst flag = isNaN(new Date(valueStr).getTime())\n\t\t\t\tif (flag) {\n\t\t\t\t\tvalueStr = valueStr.replace(/-/g, '/')\n\t\t\t\t}\n\t\t\t\tdatedisplay.value = valueStr.split(' ').length > 1 ? valueStr.split(' ')[1] : valueStr\n\t\t\t\tiValue.value = datedisplay.value\n\t\t\t}\n\t\t\temitChangeEvent()\n\t\t} else if (props.multiple && (props.type === 'month' || props.type === 'date')) {\n\t\t\t// const valueStr = formatDate(new Date(value), 'yyyy-MM')\n\t\t\tdatedisplay.value = value as string\n\t\t\tiValue.value = value\n\t\t\temitChangeEvent()\n\t\t} else {\n\t\t\tlet valueStr = typeof value === 'string' ? value : formatDate(new Date(value), valueFormat.value)\n\t\t\tconst flag = isNaN(new Date(valueStr).getTime())\n\t\t\tif (flag && typeof valueStr === 'string') {\n\t\t\t\tvalueStr = valueStr.replace(/-/g, '/')\n\t\t\t}\n\t\t\tdatedisplay.value = formatDate(new Date(valueStr), displayFormat.value)\n\t\t\tiValue.value = formatDate(new Date(valueStr), valueFormat.value)\n\t\t\temitChangeEvent()\n\t\t}\n\t}\n\n\tfunction cleanValue() {\n\t\tconst oldVal = iValue.value\n\t\tiValue.value = ''\n\t\tif (oldVal) {\n\t\t\temit('change', iValue.value)\n\t\t\temit('update:modelValue', iValue.value)\n\t\t}\n\t}\n\n\twatch(\n\t\t() => props.modelValue,\n\t\tval => {\n\t\t\tif (isDateObj(props.modelValue)) {\n\t\t\t\tisDateType.value = true\n\t\t\t}\n\t\t\tif (val === '' || val === null || val === undefined) {\n\t\t\t\tdate.value = ''\n\t\t\t\tdatedisplay.value = ''\n\t\t\t} else {\n\t\t\t\t// let newValue = typeof val === 'string' ? val.trim().substring(0, valueFormat.value.length) : val\n\n\t\t\t\tlet newValue = props.multiple && (props.type === 'month' || props.type === 'date') ? val : typeof val === 'string' ? val.trim().substring(0, valueFormat.value.length) : val\n\n\t\t\t\tif (typeof newValue === 'string' && !matchFormat(newValue, valueFormat.value) && !(props.multiple && (props.type === 'month' || props.type === 'date'))) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tif (props.type === 'time') {\n\t\t\t\t\tdate.value = getDateFromValue(newValue, 'yyyy-MM-dd HH:mm:ss')\n\t\t\t\t\tdatedisplay.value = formatDate(date.value, displayFormat.value)\n\t\t\t\t}\n\t\t\t\tif (props.multiple && (props.type === 'month' || props.type === 'date')) {\n\t\t\t\t\tdate.value = newValue\n\t\t\t\t\tdatedisplay.value = newValue as string\n\t\t\t\t} else {\n\t\t\t\t\tnewValue = getDateFromValue(newValue, valueFormat.value)\n\t\t\t\t\tdate.value = newValue\n\t\t\t\t\tdatedisplay.value = formatDate(newValue, displayFormat.value)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{ immediate: true }\n\t)\n\n\t// 生命周期\n\tonMounted(() => {\n\t\tif (currentValue.value) {\n\t\t\tiValue.value = currentValue.value\n\t\t\temit('change', currentValue.value)\n\t\t}\n\t})\n\n\treturn {\n\t\t// 响应式状态\n\t\tdate,\n\t\tdatedisplay,\n\t\t// 核心方法\n\t\tchangeValue,\n\t\tcleanValue, // 重命名为 cleanValue\n\t\thandleDisplayChange,\n\t\thandleDisplayBlur,\n\t\temitChangeEvent\n\t}\n}\n"],"names":["date"],"mappings":"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"}