@i-novus/ui-core
Version:
Базовые UI компоненты
20 lines (19 loc) • 1.72 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
import { useCallback } from 'react';
import classNames from 'classnames';
import { CalendarSelect } from './components/CalendarSelect';
const HOURS = Array.from({ length: 24 }, (_, i) => (i < 10 ? `0${i}` : `${i}`));
const MINUTES_SECONDS = Array.from({ length: 60 }, (_, i) => (i < 10 ? `0${i}` : `${i}`));
export const TimePicker = ({ prefix, onChange, value, dateAccuracy, }) => {
const handleSelectHours = useCallback((data) => {
onChange({ ...value, hours: data });
}, [onChange, value]);
const handleSelectMinutes = useCallback((data) => {
onChange({ ...value, minutes: data });
}, [onChange, value]);
const handleSelectSeconds = useCallback((data) => {
onChange({ ...value, seconds: data });
}, [onChange, value]);
return (_jsx("div", { className: classNames(`${prefix}-calendar__navigation`, `${prefix}-calendar__navigation-time`), children: _jsxs("div", { className: `${prefix}-calendar__date-time`, children: [_jsx(CalendarSelect, { className: "timepicker", prefix: prefix, initialValue: value.hours?.padStart(2, '0'), options: HOURS, onSelectOption: handleSelectHours, expandIconVisibility: false }), _jsx(CalendarSelect, { className: "timepicker", prefix: prefix, initialValue: value.minutes?.padStart(2, '0'), options: MINUTES_SECONDS, onSelectOption: handleSelectMinutes, expandIconVisibility: false }), dateAccuracy === 'full' && (_jsx(CalendarSelect, { className: "timepicker", prefix: prefix, initialValue: value.seconds?.padStart(2, '0'), options: MINUTES_SECONDS, onSelectOption: handleSelectSeconds, expandIconVisibility: false }))] }) }));
};
TimePicker.displayName = 'TimePicker';