import { useRef, useState } from "react" import { useAdminSalesChannels } from "medusa-react" import { SalesChannel } from "@medusajs/medusa" import { useTranslation } from "react-i18next" import SideModal from "../../../components/molecules/modal/side-modal" import Button from "../../../components/fundamentals/button" import CrossIcon from "../../../components/fundamentals/icons/cross-icon" import InputField from "../../../components/molecules/input" import SearchIcon from "../../../components/fundamentals/icons/search-icon" import SalesChannelTable from "../tables/sales-channels-table" const LIMIT = 12 const containsIdenticalKeys = ( a: Record, b: Record ) => { a = Object.keys(a) b = Object.keys(b) return a.length === b.length && a.every((value) => b.includes(value)) } type AddSalesChannelsSideModalProps = { close: () => void isVisible: boolean selectedChannels: Record setSelectedChannels: (arg: any) => void } /** * Modal for adding sales channels to a new PK during creation. */ function AddSalesChannelsSideModal(props: AddSalesChannelsSideModalProps) { const tableRef = useRef() const { isVisible, close, selectedChannels, setSelectedChannels } = props const [_selectedChannels, _setSelectedChannels] = useState< Record >({}) const [offset, setOffset] = useState(0) const [search, setSearch] = useState("") const { t } = useTranslation() const { sales_channels: data = [], isLoading, count, } = useAdminSalesChannels( { q: search, limit: LIMIT, offset }, { keepPreviousData: true } ) const onSave = () => { setSelectedChannels(_selectedChannels) setOffset(0) setSearch("") close() } const onClose = () => { setOffset(0) setSearch("") _setSelectedChannels(selectedChannels) Object.values(selectedChannels).map((channel) => tableRef.current?.toggleRowSelected(channel.id, true) ) close() } return (
{/* === HEADER === */}

{t("modals-add-sales-channels", "Add sales channels")}

{/* === DIVIDER === */}
} onChange={(ev) => setSearch(ev.target.value)} />
{/* === DIVIDER === */}
{/* === FOOTER === */}
) } export default AddSalesChannelsSideModal