strapi-plugin-import-export-entries
Version:
Import/Export data from and to your database in just few clicks.
108 lines (94 loc) • 4.88 kB
JavaScript
import { Box, Checkbox, ContentLayout, Flex, Link, Option, Select, Typography } from '@strapi/design-system';
import { CheckPagePermissions } from '@strapi/helper-plugin';
import range from 'lodash/range';
import React, { memo, useState } from 'react';
import { ExportButton } from '../../components/ExportButton';
import { Header } from '../../components/Header';
import { ImportButton } from '../../components/ImportButton';
import { Alerts } from '../../components/Injected/Alerts';
import { useI18n } from '../../hooks/useI18n';
import { useLocalStorage } from '../../hooks/useLocalStorage';
import { pluginPermissions } from '../../permissions';
import { dataFormats } from '../../utils/dataFormats';
const HomePage = () => {
const { i18n } = useI18n();
const { getPreferences, updatePreferences } = useLocalStorage();
const [preferences, setPreferences] = useState(getPreferences());
const handleUpdatePreferences = (key, value) => {
updatePreferences({ [key]: value });
setPreferences(getPreferences());
};
return (
<CheckPagePermissions permissions={pluginPermissions.main}>
<Header />
<ContentLayout>
<Flex direction="column" alignItems="start" gap={8}>
<Box style={{ alignSelf: 'stretch' }} background="neutral0" padding="32px" hasRadius={true}>
<Flex direction="column" alignItems="start" gap={6}>
<Typography variant="alpha">{i18n('plugin.page.homepage.section.quick-actions.title', 'Quick Actions')}</Typography>
<Box>
<Flex direction="column" alignItems="start" gap={4}>
<Flex gap={4}>
<ImportButton />
<ExportButton availableExportFormats={[dataFormats.JSON_V2]} />
</Flex>
</Flex>
</Box>
</Flex>
</Box>
<Box style={{ alignSelf: 'stretch' }} background="neutral0" padding="32px" hasRadius={true}>
<Flex direction="column" alignItems="start" gap={6}>
<Typography variant="alpha">{i18n('plugin.page.homepage.section.preferences.title', 'Preferences')}</Typography>
<Box>
<Flex direction="column" alignItems="start" gap={4}>
<Flex justifyContent="space-between">
<Checkbox value={preferences.applyFilters} onValueChange={(value) => handleUpdatePreferences('applyFilters', value)}>
<Typography>{i18n('plugin.export.apply-filters-and-sort', 'Apply filters and sort to exported data')}</Typography>
</Checkbox>
</Flex>
<Flex justifyContent="space-between">
<Select
label={i18n('plugin.export.deepness', 'Deepness')}
placeholder={i18n('plugin.export.deepness', 'Deepness')}
value={preferences.deepness}
onChange={(value) => handleUpdatePreferences('deepness', value)}
>
{range(1, 21).map((deepness) => (
<Option key={deepness} value={deepness}>
{deepness}
</Option>
))}
</Select>
</Flex>
</Flex>
</Box>
</Flex>
</Box>
<Box style={{ alignSelf: 'stretch' }} background="neutral0" padding="32px" hasRadius={true}>
<Flex direction="column" alignItems="start" gap={6}>
<Typography variant="alpha">{i18n('plugin.page.homepage.section.need-help.title', 'Feature Request / Bug Report')}</Typography>
<Box>
<Flex direction="column" alignItems="start" gap={4}>
<Typography>{i18n('plugin.page.homepage.section.need-help.description', 'Feel free to reach out on the product roadmap, discord or github ✌️')}</Typography>
<Flex gap={4}>
<Link href="https://strapi-import-export-entries.canny.io" isExternal>
{i18n('plugin.page.homepage.section.need-help.product-roadmap', 'Product Roadmap')}
</Link>
<Link href="https://discord.gg/dcqCAFFdP8" isExternal>
{i18n('plugin.page.homepage.section.need-help.discord', 'Discord')}
</Link>
<Link href="https://github.com/Baboo7/strapi-plugin-import-export-entries/issues" isExternal>
{i18n('plugin.page.homepage.section.need-help.github', 'GitHub')}
</Link>
</Flex>
</Flex>
</Box>
</Flex>
</Box>
</Flex>
</ContentLayout>
<Alerts />
</CheckPagePermissions>
);
};
export default memo(HomePage);