66 lines
1.5 KiB
JavaScript
66 lines
1.5 KiB
JavaScript
export const getHourSectionOptions = ({
|
|
now,
|
|
value,
|
|
utils,
|
|
ampm,
|
|
isDisabled,
|
|
resolveAriaLabel,
|
|
timeStep
|
|
}) => {
|
|
const currentHours = value ? utils.getHours(value) : null;
|
|
const result = [];
|
|
const isSelected = hour => {
|
|
if (currentHours === null) {
|
|
return false;
|
|
}
|
|
if (ampm) {
|
|
if (hour === 12) {
|
|
return currentHours === 12 || currentHours === 0;
|
|
}
|
|
return currentHours === hour || currentHours - 12 === hour;
|
|
}
|
|
return currentHours === hour;
|
|
};
|
|
const endHour = ampm ? 11 : 23;
|
|
for (let hour = 0; hour <= endHour; hour += timeStep) {
|
|
let label = utils.format(utils.setHours(now, hour), ampm ? 'hours12h' : 'hours24h');
|
|
const ariaLabel = resolveAriaLabel(parseInt(label, 10).toString());
|
|
label = utils.formatNumber(label);
|
|
result.push({
|
|
value: hour,
|
|
label,
|
|
isSelected,
|
|
isDisabled,
|
|
ariaLabel
|
|
});
|
|
}
|
|
return result;
|
|
};
|
|
export const getTimeSectionOptions = ({
|
|
value,
|
|
utils,
|
|
isDisabled,
|
|
timeStep,
|
|
resolveLabel,
|
|
resolveAriaLabel,
|
|
hasValue = true
|
|
}) => {
|
|
const isSelected = timeValue => {
|
|
if (value === null) {
|
|
return false;
|
|
}
|
|
return hasValue && value === timeValue;
|
|
};
|
|
return [...Array.from({
|
|
length: Math.ceil(60 / timeStep)
|
|
}, (_, index) => {
|
|
const timeValue = timeStep * index;
|
|
return {
|
|
value: timeValue,
|
|
label: utils.formatNumber(resolveLabel(timeValue)),
|
|
isDisabled,
|
|
isSelected,
|
|
ariaLabel: resolveAriaLabel(timeValue.toString())
|
|
};
|
|
})];
|
|
}; |