/* eslint-disable react/no-danger */ import React, { useCallback } from 'react'; import { useTranslation } from 'next-i18next'; import { DropdownItem, DropdownMenu, DropdownToggle, UncontrolledDropdown, } from 'reactstrap'; import AdminMarkDownContainer from '~/client/services/AdminMarkDownContainer'; import { toastError, toastSuccess } from '~/client/util/toastr'; import loggerFactory from '~/utils/logger'; import { withUnstatedContainers } from '../../UnstatedUtils'; import AdminUpdateButtonRow from '../Common/AdminUpdateButtonRow'; const logger = loggerFactory('growi:importer'); type Props = { adminMarkDownContainer: AdminMarkDownContainer; }; const IndentForm = (props: Props) => { const { t } = useTranslation('admin'); const onClickSubmit = useCallback( async (props) => { try { await props.adminMarkDownContainer.updateIndentSetting(); toastSuccess( t('toaster.update_successed', { target: t('markdown_settings.indent_header'), ns: 'commons', }), ); } catch (err) { toastError(err); logger.error(err); } }, [t], ); const renderIndentSizeOption = (props) => { const { adminMarkDownContainer } = props; const { adminPreferredIndentSize } = adminMarkDownContainer.state; return (
{adminPreferredIndentSize || 4} {[2, 4].map((num) => { return ( adminMarkDownContainer.setAdminPreferredIndentSize(num) } > {num} ); })}

{t('markdown_settings.indent_options.indentSize_desc')}

); }; const renderIndentForceOption = (props) => { const { adminMarkDownContainer } = props; const { isIndentSizeForced } = adminMarkDownContainer.state; const helpIndentInComment = { __html: t('markdown_settings.indent_options.disallow_indent_change_desc'), }; return (
{ adminMarkDownContainer.setState({ isIndentSizeForced: !isIndentSizeForced, }); }} />

); }; const { adminMarkDownContainer } = props; return (
{renderIndentSizeOption(props)} {renderIndentForceOption(props)}
onClickSubmit(props)} disabled={adminMarkDownContainer.state.retrieveError != null} />
); }; /** * Wrapper component for using unstated */ const IndentFormWrapper = withUnstatedContainers(IndentForm, [ AdminMarkDownContainer, ]); export default IndentFormWrapper;