react-opening-hours
Version:
A simple form UI for collecting hours of operation
69 lines (68 loc) • 2.75 kB
TypeScript
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;