import { useDisclosure } from '@mantine/hooks'; import { ViewSettings as ViewSettingsType } from 'ontime-types'; import { useEffect } from 'react'; import { useForm } from 'react-hook-form'; import { maybeAxiosError } from '../../../../common/api/utils'; import Button from '../../../../common/components/buttons/Button'; import Info from '../../../../common/components/info/Info'; import { SwatchPickerRHF } from '../../../../common/components/input/colour-input/SwatchPicker'; import ExternalLink from '../../../../common/components/link/external-link/ExternalLink'; import Switch from '../../../../common/components/switch/Switch'; import useViewSettings from '../../../../common/hooks-query/useViewSettings'; import { preventEscape } from '../../../../common/utils/keyEvent'; import * as Panel from '../../panel-utils/PanelUtils'; import CodeEditorModal from './composite/StyleEditorModal'; const cssOverrideDocsUrl = 'https://docs.getontime.no/features/custom-styling/'; export default function ViewSettings() { const { data, status, mutateAsync } = useViewSettings(); const [isCodeEditorOpen, codeEditorHandler] = useDisclosure(); const { control, handleSubmit, setError, reset, setValue, watch, formState: { isSubmitting, isDirty, errors }, } = useForm({ defaultValues: data, resetOptions: { keepDirtyValues: true, }, }); // update form if we get new data from server useEffect(() => { if (data) { reset(data); } }, [data, reset]); const onSubmit = async (formData: ViewSettingsType) => { try { mutateAsync(formData); } catch (error) { const message = maybeAxiosError(error); setError('root', { message }); } }; const onReset = () => { reset(data); }; if (!control) { return null; } return ( preventEscape(event, onReset)} id='view-settings' > View settings You can customise the styles applied to Ontime views by providing overriding CSS rules.
See the docs
{errors.root?.message} setValue('overrideStyles', value, { shouldDirty: true })} />
); }