lucid-ui
Version:
A UI component library from AppNexus.
62 lines (53 loc) • 2.08 kB
JavaScript
import React, { useCallback } from 'react';
import { lucidClassNames } from '../../util/style-helpers';
import TimeSelectInput from './TimeSelectInput';
var cx = lucidClassNames.bind('&-TimeSelect');
var getCleanedHour = function getCleanedHour(partialCleanedHour) {
return partialCleanedHour < 0 ? 23 : partialCleanedHour > 23 ? 0 : partialCleanedHour;
};
var getCleanedAMHour = function getCleanedAMHour(nextHour) {
var partialCleanedHour = nextHour > 12 ? nextHour - 12 : nextHour < 0 ? nextHour + 12 : nextHour;
return getCleanedHour(partialCleanedHour);
};
var getCleanedPMHour = function getCleanedPMHour(nextHour) {
var partialCleanedHour = nextHour === 12 ? 12 : nextHour > 12 ? nextHour : nextHour + 12;
return getCleanedHour(partialCleanedHour);
};
var TimeSelectHour = function TimeSelectHour(_ref) {
var hour = _ref.hour,
is24HourClock = _ref.is24HourClock,
time = _ref.time,
isAM = _ref.isAM,
isDisabled = _ref.isDisabled,
onChange = _ref.onChange;
var onHourChange = useCallback(function (nextHourString) {
var nextHour = +nextHourString;
var updatedTime = new Date(time);
if (is24HourClock) {
var cleanedNextHour = nextHour < 0 ? -1 : nextHour > 23 ? 24 : nextHour;
updatedTime.setHours(cleanedNextHour);
} else {
var nextHouris12 = nextHour === 12;
var shouldRollOver = hour === 11 && nextHouris12;
var shouldRollBack = hour === 12 && nextHour === 11;
var cleanedHour;
if (shouldRollOver) {
cleanedHour = isAM ? 12 : 24;
} else if (shouldRollBack) {
cleanedHour = isAM ? -1 : 11;
} else {
cleanedHour = isAM ? getCleanedAMHour(nextHour) : getCleanedPMHour(nextHour);
}
updatedTime.setHours(cleanedHour);
}
onChange(updatedTime);
}, [time, is24HourClock, isAM, hour]);
return /*#__PURE__*/React.createElement(TimeSelectInput, {
className: cx('&-time-hour'),
value: hour,
name: "Hour",
onChange: onHourChange,
disabled: isDisabled
});
};
export default TimeSelectHour;