vuestic-ui
Version:
Vue 3 UI Framework
48 lines (47 loc) • 1.52 kB
JavaScript
import { i as isDate } from "../../../utils/is-date.mjs";
import { ref } from "vue";
const defaultParseDateFunction = (text) => new Date(Date.parse(text));
const isValidDate = (d) => isDate(d) && !isNaN(d.getTime());
const useDateParser = (props) => {
const isMultipleDates = (text) => {
const dates = text.split(props.delimiter);
if (dates.length < 2) {
return false;
}
return dates.every((date) => {
const parsedDate = (props.parseDate || defaultParseDateFunction)(date);
return isValidDate(parsedDate);
});
};
const isRange = (text) => text.includes(props.rangeDelimiter);
const isValid = ref(true);
const parseDate = (text) => {
const splitDate = text.split(".");
const valueToParse = (splitDate == null ? void 0 : splitDate.length) === 3 ? splitDate.reverse().join("-") : text;
const date = (props.parseDate || defaultParseDateFunction)(valueToParse);
isValid.value = isValidDate(date);
return date;
};
const parseDateInputValue = (text) => {
isValid.value = true;
if (props.parse) {
return props.parse(text, isValid);
}
if (isMultipleDates(text)) {
return text.split(props.delimiter).map(parseDate);
}
if (isRange(text)) {
const [start, end] = text.split(props.rangeDelimiter).map(parseDate);
return { start, end };
}
return parseDate(text);
};
return {
parseDateInputValue,
isValid
};
};
export {
useDateParser as u
};
//# sourceMappingURL=input-text-parser.mjs.map