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