import { Alert, Button, Grid, Input, LoadingOverlay, Slider } from '@mantine/core'; import { useForm } from '@mantine/form'; import { IconCheck, IconReload } from '@tabler/icons'; import { useTranslation } from 'next-i18next'; import { useState } from 'react'; import { useConfigContext } from '../../../../config/provider'; import { useConfigStore } from '../../../../config/store'; import { GridstackBreakpoints } from '../../../../constants/gridstack-breakpoints'; import { sleep } from '../../../../tools/client/time'; import { GridstackSettingsType } from '../../../../types/settings'; export const GridstackConfiguration = () => { const { t } = useTranslation(['settings/customization/gridstack', 'common']); const { config, name: configName } = useConfigContext(); const updateConfig = useConfigStore((x) => x.updateConfig); if (!config || !configName) { return null; } const initialValue = config.settings.customization?.gridstack ?? { columnCountSmall: 3, columnCountMedium: 6, columnCountLarge: 12, }; const form = useForm({ initialValues: initialValue, }); const [isSaving, setIsSaving] = useState(false); const handleSubmit = async (values: GridstackSettingsType) => { setIsSaving(true); await sleep(250); await updateConfig( configName, (previousConfig) => ({ ...previousConfig, settings: { ...previousConfig.settings, customization: { ...previousConfig.settings.customization, gridstack: values, }, }, }), true, true ); form.resetDirty(); setIsSaving(false); }; return (
{form.isDirty() && ( {t('unsavedChanges')} )} ); };