import React, { useCallback, useEffect, useState } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import AppState from 'App/State/AppState'; import FieldSet from 'Components/FieldSet'; import Form from 'Components/Form/Form'; import FormGroup from 'Components/Form/FormGroup'; import FormInputGroup from 'Components/Form/FormInputGroup'; import FormLabel from 'Components/Form/FormLabel'; import Button from 'Components/Link/Button'; import ModalBody from 'Components/Modal/ModalBody'; import ModalContent from 'Components/Modal/ModalContent'; import ModalFooter from 'Components/Modal/ModalFooter'; import ModalHeader from 'Components/Modal/ModalHeader'; import { inputTypes } from 'Helpers/Props'; import { firstDayOfWeekOptions, timeFormatOptions, weekColumnOptions, } from 'Settings/UI/UISettings'; import { setCalendarOption } from 'Store/Actions/calendarActions'; import { saveUISettings } from 'Store/Actions/settingsActions'; import createUISettingsSelector from 'Store/Selectors/createUISettingsSelector'; import { InputChanged } from 'typings/inputs'; import UiSettings from 'typings/Settings/UiSettings'; import translate from 'Utilities/String/translate'; interface CalendarOptionsModalContentProps { onModalClose: () => void; } function CalendarOptionsModalContent({ onModalClose, }: CalendarOptionsModalContentProps) { const dispatch = useDispatch(); const { showMovieInformation, showCinemaRelease, showDigitalRelease, showPhysicalRelease, showCutoffUnmetIcon, fullColorEvents, } = useSelector((state: AppState) => state.calendar.options); const uiSettings = useSelector(createUISettingsSelector()); const [state, setState] = useState>({ firstDayOfWeek: uiSettings.firstDayOfWeek, calendarWeekColumnHeader: uiSettings.calendarWeekColumnHeader, timeFormat: uiSettings.timeFormat, enableColorImpairedMode: uiSettings.enableColorImpairedMode, }); const { firstDayOfWeek, calendarWeekColumnHeader, timeFormat, enableColorImpairedMode, } = state; const handleOptionInputChange = useCallback( ({ name, value }: InputChanged) => { dispatch(setCalendarOption({ [name]: value })); }, [dispatch] ); const handleGlobalInputChange = useCallback( ({ name, value }: InputChanged) => { setState((prevState) => ({ ...prevState, [name]: value })); dispatch(saveUISettings({ [name]: value })); }, [dispatch] ); useEffect(() => { setState({ firstDayOfWeek: uiSettings.firstDayOfWeek, calendarWeekColumnHeader: uiSettings.calendarWeekColumnHeader, timeFormat: uiSettings.timeFormat, enableColorImpairedMode: uiSettings.enableColorImpairedMode, }); }, [uiSettings]); return ( {translate('CalendarOptions')}
{translate('ShowMovieInformation')} {translate('ShowCinemaRelease')} {translate('ShowDigitalRelease')} {translate('ShowPhysicalRelease')} {translate('IconForCutoffUnmet')} {translate('FullColorEvents')}
{translate('FirstDayOfWeek')} {translate('WeekColumnHeader')} {translate('TimeFormat')} {translate('EnableColorImpairedMode')}
); } export default CalendarOptionsModalContent;