import CancelIcon from '@mui/icons-material/Cancel'; import WarningIcon from '@mui/icons-material/Warning'; import { Button, Checkbox, MenuItem } from '@mui/material'; import { useState } from 'react'; import { selectedTimeZone, timeZoneSelectItems, TIME_ZONES } from './TZ'; import type { ValidateFieldsError } from 'async-validator'; import type { FC } from 'react'; import type { NTPSettings } from 'types'; import * as NTPApi from 'api/ntp'; import { BlockFormControlLabel, ButtonRow, FormLoader, SectionContent, ValidatedTextField, BlockNavigation } from 'components'; import { useI18nContext } from 'i18n/i18n-react'; import { updateValueDirty, useRest } from 'utils'; import { validate } from 'validators'; import { NTP_SETTINGS_VALIDATOR } from 'validators/ntp'; const NTPSettingsForm: FC = () => { const { loadData, saving, data, setData, origData, dirtyFlags, setDirtyFlags, blocker, saveData, errorMessage } = useRest({ read: NTPApi.readNTPSettings, update: NTPApi.updateNTPSettings }); const { LL } = useI18nContext(); const updateFormValue = updateValueDirty(origData, dirtyFlags, setDirtyFlags, setData); const [fieldErrors, setFieldErrors] = useState(); const content = () => { if (!data) { return ; } const validateAndSubmit = async () => { try { setFieldErrors(undefined); await validate(NTP_SETTINGS_VALIDATOR, data); await saveData(); } catch (errors: any) { setFieldErrors(errors); } }; const changeTimeZone = (event: React.ChangeEvent) => { updateFormValue(event); setData({ ...data, tz_label: event.target.value, tz_format: TIME_ZONES[event.target.value] }); }; return ( <> } label={LL.ENABLE_NTP()} /> {LL.TIME_ZONE()}... {timeZoneSelectItems()} {dirtyFlags && dirtyFlags.length !== 0 && ( )} ); }; return ( {blocker ? : null} {content()} ); }; export default NTPSettingsForm;