UNPKG

react-opening-hours

Version:

A simple form UI for collecting hours of operation

69 lines (68 loc) 2.75 kB
import React, { ReactNode } from 'react'; type TimeValue = '00:00:00' | '00:30:00' | '01:00:00' | '01:30:00' | '02:00:00' | '02:30:00' | '03:00:00' | '03:30:00' | '04:00:00' | '04:30:00' | '05:00:00' | '05:30:00' | '06:00:00' | '06:30:00' | '07:00:00' | '07:30:00' | '08:00:00' | '08:30:00' | '09:00:00' | '09:30:00' | '10:00:00' | '10:30:00' | '11:00:00' | '11:30:00' | '12:00:00' | '12:30:00' | '13:00:00' | '13:30:00' | '14:00:00' | '14:30:00' | '15:00:00' | '15:30:00' | '16:00:00' | '16:30:00' | '17:00:00' | '17:30:00' | '18:00:00' | '18:30:00' | '19:00:00' | '19:30:00' | '20:00:00' | '20:30:00' | '21:00:00' | '21:30:00' | '22:00:00' | '22:30:00' | '23:00:00' | '23:30:00' | 'closed'; type TimeOption = { value: TimeValue; label: string; }; type DefaultDay = { id: string; time: string; label: string; }; type Day = { id: string; time: string; label: string; seq: number; }; interface OpeningHoursProps { getValues: (formValues: Day[]) => void; defaultValues: DefaultDay[]; ampm?: boolean; verticalTimePairs?: boolean; rootContainerStyles?: React.CSSProperties; rootContainerClassName?: string; renderDayButton?: (buttonProps: { id: string; text: string; onClick: () => void; active: boolean; }) => ReactNode; getDayButtonLabelText?: (label: string) => string; dayButtonContainerStyles?: React.CSSProperties; dayButtonContainerClassName?: string; dayButtonActiveElementStyles?: React.CSSProperties; dayButtonInactiveElementStyles?: React.CSSProperties; dayButtonActiveElementClassName?: string; dayButtonInactiveElementClassName?: string; renderLabel?: (labelProps: { id: string; htmlFor: string; label: string; }) => ReactNode; labelContainerStyles?: React.CSSProperties; labelContainerClassName?: string; labelElementStyles?: React.CSSProperties; labelElementClassName?: string; renderCopyButton?: (buttonProps: { onClick: () => void; }) => ReactNode; copyButtonContainerStyles?: React.CSSProperties; copyButtonContainerClassName?: string; copyButtonElementStyles?: React.CSSProperties; copyButtonElementClassName?: string; renderSelect?: (selectProps: { id: string; day: Day; options: TimeOption[]; value: TimeOption | undefined; onChange: (event: any) => void; }) => ReactNode; selectContainerStyles?: React.CSSProperties; selectContainerClassName?: string; selectElementStyles?: React.CSSProperties; selectElementClassName?: string; showCopyToAll?: boolean; } declare const OpeningHoursUnstyled: React.FC<OpeningHoursProps>; export default OpeningHoursUnstyled;