import React, { useCallback, useEffect, useState, } from 'react'; import { LoadingSpinner } from '@growi/ui/dist/components'; import { useTranslation } from 'next-i18next'; import { toastSuccess, toastError } from '~/client/util/toastr'; import { useSWRxLayoutSetting } from '~/stores/admin/customize'; import { useNextThemes } from '~/stores/use-next-themes'; const useIsContainerFluid = () => { const { data: layoutSetting, update: updateLayoutSetting } = useSWRxLayoutSetting(); const [isContainerFluid, setIsContainerFluid] = useState(); useEffect(() => { setIsContainerFluid(layoutSetting?.isContainerFluid); }, [layoutSetting?.isContainerFluid]); return { isContainerFluid, setIsContainerFluid, updateLayoutSetting, }; }; const CustomizeLayoutSetting = (): JSX.Element => { const { t } = useTranslation('admin'); const { resolvedTheme } = useNextThemes(); const { isContainerFluid, setIsContainerFluid, updateLayoutSetting } = useIsContainerFluid(); const onClickSubmit = useCallback(async() => { if (isContainerFluid == null) { return } try { await updateLayoutSetting({ isContainerFluid }); toastSuccess(t('toaster.update_successed', { target: t('customize_settings.layout'), ns: 'commons' })); } catch (err) { toastError(err); } }, [isContainerFluid, updateLayoutSetting, t]); if (isContainerFluid == null) { return (
); } return (

{t('customize_settings.layout')}

setIsContainerFluid(false)} role="button" > {/* eslint-disable-next-line @next/next/no-img-element */} {t('customize_settings.layout_options.default')}
{t('customize_settings.layout_options.default')}
setIsContainerFluid(true)} role="button" > {/* eslint-disable-next-line @next/next/no-img-element */} {t('customize_settings.layout_options.expanded')}
{t('customize_settings.layout_options.expanded')}
); }; export default CustomizeLayoutSetting;