UNPKG

bananas-commerce-admin

Version:

What's this, an admin for apes?

98 lines 5.45 kB
import React, { useEffect, useState } from "react"; import { useParams } from "react-router-dom"; import AddCircleIcon from "@mui/icons-material/AddCircle"; import RemoveCircleIcon from "@mui/icons-material/RemoveCircle"; import { Stack } from "@mui/material"; import Card from "../../../components/Card"; import CardActions from "../../../components/Card/CardActions"; import CardCancelButton from "../../../components/Card/CardCancelButton"; import CardContent from "../../../components/Card/CardContent"; import CardFieldCheckbox from "../../../components/Card/CardFieldCheckbox"; import CardFieldSelect from "../../../components/Card/CardFieldSelect"; import CardFieldText from "../../../components/Card/CardFieldText"; import CardHeader from "../../../components/Card/CardHeader"; import CardPill from "../../../components/Card/CardPill"; import CardRow from "../../../components/Card/CardRow"; import CardSaveButton from "../../../components/Card/CardSaveButton"; import { useApi } from "../../../contexts/ApiContext"; import { useI18n } from "../../../contexts/I18nContext"; import { useUser } from "../../../contexts/UserContext"; import { hasPermission } from "../../../util/has_permission"; import { SHOW_PRICE_RULES } from "../flags"; export const PriceListCard = ({ priceList, setPriceList }) => { const params = useParams(); const api = useApi(); const { t } = useI18n(); const { user } = useUser(); const [siteCodes, setSiteCodes] = useState([]); const [priceRules, setPriceRules] = useState([]); const handleSubmit = async ({ is_active, is_tax_included, ...values }) => { const action = api.operations["pricing.price_list:update"]; if (!action) { throw new Error('Invalid action "pricing.price_list:update".'); } const response = await action.call({ params, body: { is_active: is_active === "on", is_tax_included: is_tax_included === "on", ...values, }, }); if (response.ok) { const updatedPriceList = await response.json(); setPriceList(updatedPriceList); return t("Price list updated successfully."); } else { console.error("[PRICE_LIST_CARD]", response); throw new Error("updating price list fields."); } }; useEffect(() => { api.operations["pricing.price_list:options"] .call({ params, }) .then(async (response) => { if (response.ok) { const { site_codes, price_rules } = await response.json(); setSiteCodes(site_codes); setPriceRules(price_rules); } }); }, []); return (React.createElement(Card, { isCompact: true, isEditable: hasPermission(user, "pricing.change_pricelist"), onSubmit: handleSubmit }, React.createElement(CardHeader, { title: t("Price List") }, React.createElement(Stack, { direction: "row", gap: 1 }, React.createElement(CardPill, { color: priceList.is_active ? "success" : "error", label: priceList.is_active ? t("Active") : t("Inactive") }), React.createElement(CardPill, { color: priceList.is_tax_included ? "info" : "warning", icon: priceList.is_tax_included ? React.createElement(AddCircleIcon, null) : React.createElement(RemoveCircleIcon, null), label: priceList.is_tax_included ? t("Includes Tax") : t("Excludes Tax") }))), React.createElement(CardContent, null, React.createElement(CardRow, null, React.createElement(CardFieldText, { formName: "name", label: t("Name"), value: priceList.name })), React.createElement(CardRow, null, React.createElement(CardFieldSelect, { formName: "site_code", label: t("Site"), options: siteCodes.map((siteCode) => ({ label: siteCode, id: siteCode, })), value: { label: priceList.site_code, id: priceList.site_code } })), React.createElement(CardRow, null, React.createElement(CardFieldText, { formName: "channel", label: t("Channel"), value: priceList.channel })), React.createElement(CardRow, { isReadable: false }, React.createElement(CardFieldCheckbox, { formName: "is_active", isReadable: false, label: t("Active"), value: priceList.is_active }), React.createElement(CardFieldCheckbox, { formName: "is_tax_included", isReadable: false, label: t("Includes Tax"), value: priceList.is_tax_included })), SHOW_PRICE_RULES && (React.createElement(CardRow, null, React.createElement(CardFieldSelect, { formName: "price_rule", label: t("Price rule"), options: priceRules.map((priceRule) => ({ label: priceRule.name, id: priceRule.id, })), value: priceList.price_rule ? { label: priceList.price_rule.name, id: priceList.price_rule.id, } : undefined })))), React.createElement(CardActions, null, React.createElement(CardCancelButton, null), React.createElement(CardSaveButton, null)))); }; export default PriceListCard; //# sourceMappingURL=PriceListCard.js.map