import React, { useContext, useState } from "react" import { useTranslation } from "react-i18next" import Button from "../../../components/fundamentals/button" import Modal from "../../../components/molecules/modal" import { LayeredModalContext } from "../../../components/molecules/modal/layered-modal" import RadioGroup from "../../../components/organisms/radio-group" import { ProductSelector } from "./product-selector" import { ProductTypeSelector } from "./product-type-selector" import { ShippingOptionSelector } from "./shipping-option-selector" enum TaxRuleType { PRODUCTS = "products", PRODUCT_TYPES = "product_types", SHIPPING_OPTIONS = "shipping_options", } type TaxRuleSelectorProps = { regionId: string onSubmit: (rule) => void selectedItems?: any type?: TaxRuleType items?: string[] } type TaxRuleSet = { type: TaxRuleType items: string[] } const TaxRuleSelector: React.FC = ({ regionId, type, items, onSubmit, }) => { const isLocked = type && items const { t } = useTranslation() const { pop } = useContext(LayeredModalContext) const [selectedType, setSelectedType] = useState( type ?? TaxRuleType.PRODUCTS ) const [selectedRule, setSelectedRule] = useState({ type: type ?? TaxRuleType.PRODUCTS, items: items ?? [], }) const handleSubmit = () => { onSubmit(selectedRule) pop() } const handleTypeChange = (t) => { if (t !== selectedType) { setSelectedType(t) setSelectedRule({ type: t, items: [], }) } } const handleItemChanges = (items) => { setSelectedRule((prev) => { return { ...prev, items, } }) } return ( <>
{!isLocked && ( <>
{t("taxes-type", "Type")}
)} {selectedType === TaxRuleType.PRODUCTS && ( )} {selectedType === TaxRuleType.PRODUCT_TYPES && ( )} {selectedType === TaxRuleType.SHIPPING_OPTIONS && ( )}
) } export default TaxRuleSelector