import { useContext, useMemo } from "react" import { useTranslation } from "react-i18next" import { LayeredModalContext } from "../../../../components/molecules/modal/layered-modal" import { DiscountConditionType } from "../../types" import AddCollectionConditionSelector from "./condition-tables/add-condition-tables/collections" import AddCustomerGroupConditionSelector from "./condition-tables/add-condition-tables/customer-groups" import AddProductConditionSelector from "./condition-tables/add-condition-tables/products" import AddTagConditionSelector from "./condition-tables/add-condition-tables/tags" import AddTypeConditionSelector from "./condition-tables/add-condition-tables/types" import DetailsCollectionConditionSelector from "./condition-tables/details-condition-tables/collections" import DetailsCustomerGroupConditionSelector from "./condition-tables/details-condition-tables/customer-groups" import DetailsProductConditionSelector from "./condition-tables/details-condition-tables/products" import DetailsTagConditionSelector from "./condition-tables/details-condition-tables/tags" import DetailsTypeConditionSelector from "./condition-tables/details-condition-tables/types" export type ConditionItem = { label: string value: DiscountConditionType description: string onClick: () => void } type UseConditionModalItemsProps = { onClose: () => void isDetails?: boolean } const useConditionModalItems = ({ isDetails, onClose, }: UseConditionModalItemsProps) => { const layeredModalContext = useContext(LayeredModalContext) const { t } = useTranslation() const items: ConditionItem[] = useMemo( () => [ { label: t("discount-form-product", "Product"), value: DiscountConditionType.PRODUCTS, description: t( "discount-form-only-for-specific-products", "Only for specific products" ), onClick: () => layeredModalContext.push({ title: t("discount-form-choose-products", "Choose products"), onBack: () => layeredModalContext.pop(), view: isDetails ? ( ) : ( ), }), }, { label: t("discount-form-customer-group", "Customer group"), value: DiscountConditionType.CUSTOMER_GROUPS, description: t( "discount-form-only-for-specific-customer-groups", "Only for specific customer groups" ), onClick: () => { layeredModalContext.push({ title: t("discount-form-choose-groups", "Choose groups"), onBack: () => layeredModalContext.pop(), view: isDetails ? ( ) : ( ), }) }, }, { label: t("discount-form-tag", "Tag"), value: DiscountConditionType.PRODUCT_TAGS, description: t( "discount-form-only-for-specific-tags", "Only for specific tags" ), onClick: () => layeredModalContext.push({ title: "Choose tags", onBack: () => layeredModalContext.pop(), view: isDetails ? ( ) : ( ), }), }, { label: t("discount-form-collection", "Collection"), value: DiscountConditionType.PRODUCT_COLLECTIONS, description: t( "discount-form-only-for-specific-product-collections", "Only for specific product collections" ), onClick: () => layeredModalContext.push({ title: t("discount-form-choose-collections", "Choose collections"), onBack: () => layeredModalContext.pop(), view: isDetails ? ( ) : ( ), }), }, { label: t("discount-form-type", "Type"), value: DiscountConditionType.PRODUCT_TYPES, description: t( "discount-form-only-for-specific-product-types", "Only for specific product types" ), onClick: () => layeredModalContext.push({ title: t("discount-form-choose-types", "Choose types"), onBack: () => layeredModalContext.pop(), view: isDetails ? ( ) : ( ), }), }, ], [isDetails] ) return items } export default useConditionModalItems