/
vshmidt
/
label-studio
Обзор
Документация
Войти
/
vshmidt
/
label-studio
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
web/libs/editor/src/components/TimeDurationControl/TimeDurationControl.tsx
76 строк
2 KB
Raul Martin
feat: Migrate SCSS to plain CSS with PostCSS, replace Stylelint with Biome (#9584)
12 мар 2026, 20:57
Не верифицирован
12 мар 2026, 20:57
3f31128
Код
Авторство
О чём код?
import type { FC } from "react"; import { cn } from "../../utils/bem"; import "./TimeDurationControl.prefix.css"; import { TimeBox } from "./TimeBox"; export interface TimerProps { isSidepanel: boolean | undefined; startTime: number; endTime: number | undefined; minTime: number; maxTime: number | undefined; currentTime?: number; startTimeReadonly?: boolean; endTimeReadonly?: boolean; onChangeStartTime?: (value: number) => void; onChangeEndTime?: (value: number) => void; showDuration?: boolean; showLabels?: boolean; } export const TimeDurationControl: FC<TimerProps> = ({ isSidepanel = false, startTime, endTime = 0, minTime, maxTime = 0, currentTime, startTimeReadonly = false, endTimeReadonly = false, onChangeStartTime, onChangeEndTime, showDuration = false, showLabels = false, }) => { const _currentTime = !currentTime ? startTime : currentTime; const handleChangeCurrentTime = (value: number) => { if (value >= minTime && value <= maxTime && value <= endTime) onChangeStartTime?.(value); }; const handleChangeEndTime = (value: number) => { if (value >= minTime && value <= maxTime && value >= _currentTime) onChangeEndTime?.(value); }; return ( <div className={cn("timer-duration-control").toClassName()}> <TimeBox sidepanel={isSidepanel} readonly={startTimeReadonly} value={_currentTime} onChange={handleChangeCurrentTime} label={showLabels ? "Start" : undefined} data-testid="timebox-current-time" /> <TimeBox sidepanel={isSidepanel} readonly={endTimeReadonly} value={endTime} onChange={handleChangeEndTime} data-testid="timebox-end-time" label={showLabels ? "End" : undefined} /> {showDuration && ( <TimeBox sidepanel={isSidepanel} readonly={true} value={endTime - startTime} onChange={() => {}} data-testid="timebox-duration-time" label={showLabels ? "Duration" : undefined} /> )} </div> ); };