@i-novus/ui-core
Version:
Базовые UI компоненты
26 lines (25 loc) • 938 B
JavaScript
import { useCallback } from 'react';
import { OUTPUT_FORMAT } from '../../../const';
import { getValidDayjs, cutDateByAccuracy } from '../../../dayjs-utils';
const prepareValue = (value, limiter, format, dateAccuracy) => {
let date = getValidDayjs(value, format);
const { min, max } = limiter;
date = cutDateByAccuracy(date, dateAccuracy);
if (!date) {
return null;
}
if (min && date < min) {
return min.format(OUTPUT_FORMAT);
}
if (max && (date > max)) {
return max.format(OUTPUT_FORMAT);
}
return date.format(OUTPUT_FORMAT);
};
export const useHandleInputCompleteHook = (callback, config) => {
const { min, max, format, dateAccuracy } = config;
return (useCallback((value) => {
const validISODateString = prepareValue(value, { min, max }, format, dateAccuracy);
callback(validISODateString);
}, [min, max, format, dateAccuracy, callback]));
};