feishin/src/renderer/features/settings/components/settings-header.tsx

74 lines
2.8 KiB
TypeScript
Raw Normal View History

2023-03-31 05:56:32 -07:00
import { Flex, Group } from '@mantine/core';
import { closeAllModals, openModal } from '@mantine/modals';
import { useTranslation } from 'react-i18next';
import { RiSettings2Fill } from 'react-icons/ri';
import { Button, ConfirmModal, PageHeader, SearchInput } from '/@/renderer/components';
import { LibraryHeaderBar } from '/@/renderer/features/shared';
2023-03-31 05:56:32 -07:00
import { useSettingsStoreActions } from '../../../store/settings.store';
import { useSettingSearchContext } from '/@/renderer/features/settings/context/search-context';
import { useContainerQuery } from '/@/renderer/hooks';
export type SettingsHeaderProps = {
setSearch: (search: string) => void;
};
export const SettingsHeader = ({ setSearch }: SettingsHeaderProps) => {
const { t } = useTranslation();
2023-07-01 19:10:05 -07:00
const { reset } = useSettingsStoreActions();
const search = useSettingSearchContext();
const cq = useContainerQuery();
2023-07-01 19:10:05 -07:00
const handleResetToDefault = () => {
reset();
closeAllModals();
};
2023-03-31 05:56:32 -07:00
2023-07-01 19:10:05 -07:00
const openResetConfirmModal = () => {
openModal({
children: (
<ConfirmModal onConfirm={handleResetToDefault}>
{t('common.areYouSure', { postProcess: 'sentenceCase' })}
</ConfirmModal>
),
title: t('common.resetToDefault', { postProcess: 'sentenceCase' }),
2023-07-01 19:10:05 -07:00
});
};
2023-03-31 05:56:32 -07:00
2023-07-01 19:10:05 -07:00
return (
<Flex ref={cq.ref}>
2023-07-01 19:10:05 -07:00
<PageHeader>
<LibraryHeaderBar>
<Flex
align="center"
justify="space-between"
w="100%"
>
<Group noWrap>
<RiSettings2Fill size="2rem" />
<LibraryHeaderBar.Title>
{t('common.setting', { count: 2, postProcess: 'titleCase' })}
</LibraryHeaderBar.Title>
2023-07-01 19:10:05 -07:00
</Group>
<Group>
<SearchInput
defaultValue={search}
openedWidth={cq.isMd ? 250 : cq.isSm ? 200 : 150}
onChange={(event) =>
setSearch(event.target.value.toLocaleLowerCase())
}
/>
<Button
compact
variant="default"
onClick={openResetConfirmModal}
>
{t('common.resetToDefault', { postProcess: 'sentenceCase' })}
</Button>
</Group>
2023-07-01 19:10:05 -07:00
</Flex>
</LibraryHeaderBar>
</PageHeader>
</Flex>
);
};