lucid-ui
Version:
A UI component library from Xandr.
30 lines • 1.26 kB
JavaScript
import React, { useCallback } from 'react';
import TimeSelectInput from './TimeSelectInput';
const shouldGetNextMinuteStep = (minute, nextMinute) => {
return (minute === nextMinute + 15 ||
minute === nextMinute - 15 ||
nextMinute > 59 ||
nextMinute < 0);
};
const getNextMinuteStep = (nextMinute) => {
return [-15, 0, 15, 30, 45, 60].reduce((prev, curr) => {
return Math.abs(curr - nextMinute) < Math.abs(prev - nextMinute)
? curr
: prev;
});
};
const TimeSelectMinute = ({ minute, time, isDisabled, onChange, }) => {
const onMinuteChange = useCallback((nextMinuteString) => {
const nextMinute = +nextMinuteString;
const updatedTime = new Date(time);
const shouldGetNextStep = shouldGetNextMinuteStep(minute, nextMinute);
const cleanedMinute = shouldGetNextStep
? getNextMinuteStep(nextMinute)
: nextMinute;
updatedTime.setMinutes(cleanedMinute);
onChange(updatedTime);
}, [time, minute]);
return (React.createElement(TimeSelectInput, { value: minute, name: 'Minute', onChange: onMinuteChange, disabled: isDisabled, step: 15 }));
};
export default TimeSelectMinute;
//# sourceMappingURL=TimeSelectMinute.js.map