saleor-dashboard/src/translations/views/TranslationsEntities.tsx
Michał Droń 3123f04c69
Upgrade to ESLint 8 (#3781)
* Upgrade ESLint

* Add eslint-nibble

* Move typescript to dev deps

* Update ESLint config

* Turn off semi, comma-dangle & quotes rules

* Enable simple sort

* Fix errors in ESLint (#3788)

* Disable rules requiring heavy changes

* Autofix new ESLint rules

* Autofix more-rules

* Fix jsx/generics ambiguity

* Add warnings for broken rules requiring manual fixes

* Remove redundant expected-error

* Add simple-sort

* Add prettier config

* Lint config

* Fix sort plugin

* Fix simple sort plugin

* Fix sort order

* Update src/orders/components/OrderTransaction/components/TransactionEvents/components/PspReferenceLink.tsx

Co-authored-by: Paweł Chyła <chyla1988@gmail.com>

* Remove redundant comment

* Remove chai friendly

* Update package.json

Co-authored-by: Krzysztof Żuraw <9116238+krzysztofzuraw@users.noreply.github.com>

* Remove to-be-checked comment

* Update formatjs plugin

* Lint staged only in src

* Add changeset

* Add tracking issue for new rules

* Resolve auto-fixable warning after merge

* Change sorts to warnings

* Run lint on new files

* Fix errors

---------

Co-authored-by: Paweł Chyła <chyla1988@gmail.com>
Co-authored-by: Krzysztof Żuraw <9116238+krzysztofzuraw@users.noreply.github.com>
2023-06-30 10:07:13 +02:00

157 lines
4.8 KiB
TypeScript

// @ts-strict-ignore
import useNavigator from "@dashboard/hooks/useNavigator";
import { createPaginationState } from "@dashboard/hooks/usePaginator";
import useShop from "@dashboard/hooks/useShop";
import { stringifyQs } from "@dashboard/utils/urls";
import React from "react";
import { PAGINATE_BY } from "../../config";
import { maybe } from "../../misc";
import TranslationsEntitiesListPage from "../components/TranslationsEntitiesListPage";
import { LanguageEntitiesUrlQueryParams, TranslatableEntities } from "../urls";
import TranslationsAttributeList from "./EntityLists/TranslationsAttributeList";
import TranslationsCategoryList from "./EntityLists/TranslationsCategoryList";
import TranslationsCollectionList from "./EntityLists/TranslationsCollectionList";
import TranslationsMenuItemList from "./EntityLists/TranslationsMenuItemList";
import TranslationsPageList from "./EntityLists/TranslationsPageList";
import TranslationsProductList from "./EntityLists/TranslationsProductList";
import TranslationsSaleList from "./EntityLists/TranslationsSaleList";
import TranslationsShippingMethodList from "./EntityLists/TranslationsShippingMethodList";
import TranslationsVoucherList from "./EntityLists/TranslationsVoucherList";
interface TranslationsEntitiesProps {
language: string;
params: LanguageEntitiesUrlQueryParams;
}
const TranslationsEntities: React.FC<TranslationsEntitiesProps> = ({
language,
params,
}) => {
const navigate = useNavigator();
const shop = useShop();
if (!Object.keys(TranslatableEntities).includes(params.tab)) {
navigate(
"?" +
stringifyQs({
tab: TranslatableEntities.categories,
}),
{ replace: true },
);
}
const filterCallbacks = {
onCategoriesTabClick: () =>
navigate(
"?" +
stringifyQs({
tab: TranslatableEntities.categories,
}),
),
onCollectionsTabClick: () =>
navigate(
"?" +
stringifyQs({
tab: TranslatableEntities.collections,
}),
),
onPagesTabClick: () =>
navigate(
"?" +
stringifyQs({
tab: TranslatableEntities.pages,
}),
),
onAttributesTabClick: () =>
navigate(
"?" +
stringifyQs({
tab: TranslatableEntities.attributes,
}),
),
onProductsTabClick: () =>
navigate(
"?" +
stringifyQs({
tab: TranslatableEntities.products,
}),
),
onSalesTabClick: () =>
navigate(
"?" +
stringifyQs({
tab: TranslatableEntities.sales,
}),
),
onShippingMethodsTabClick: () =>
navigate(
"?" +
stringifyQs({
tab: TranslatableEntities.shippingMethods,
}),
),
onVouchersTabClick: () =>
navigate(
"?" +
stringifyQs({
tab: TranslatableEntities.vouchers,
}),
),
onMenuItemsTabClick: () =>
navigate(
"?" +
stringifyQs({
tab: TranslatableEntities.menuItems,
}),
),
};
const lang = maybe(() =>
shop.languages.find(languageFromList => languageFromList.code === language),
);
const paginationState = createPaginationState(PAGINATE_BY, params);
const queryVariables = React.useMemo(
() => ({
...paginationState,
language: language as any,
}),
[params],
);
return (
<TranslationsEntitiesListPage
filters={{
current: params.tab,
...filterCallbacks,
}}
language={lang}
>
{params.tab === "categories" ? (
<TranslationsCategoryList params={params} variables={queryVariables} />
) : params.tab === "products" ? (
<TranslationsProductList params={params} variables={queryVariables} />
) : params.tab === "collections" ? (
<TranslationsCollectionList
params={params}
variables={queryVariables}
/>
) : params.tab === "sales" ? (
<TranslationsSaleList params={params} variables={queryVariables} />
) : params.tab === "vouchers" ? (
<TranslationsVoucherList params={params} variables={queryVariables} />
) : params.tab === "pages" ? (
<TranslationsPageList params={params} variables={queryVariables} />
) : params.tab === "attributes" ? (
<TranslationsAttributeList params={params} variables={queryVariables} />
) : params.tab === "shippingMethods" ? (
<TranslationsShippingMethodList
params={params}
variables={queryVariables}
/>
) : params.tab === "menuItems" ? (
<TranslationsMenuItemList params={params} variables={queryVariables} />
) : null}
</TranslationsEntitiesListPage>
);
};
TranslationsEntities.displayName = "TranslationsEntities";
export default TranslationsEntities;