bananas-commerce-admin
Version:
What's this, an admin for apes?
59 lines • 3.3 kB
JavaScript
import React from "react";
import { useParams } from "react-router-dom";
import Card from "../../../components/Card";
import CardActions from "../../../components/Card/CardActions";
import CardCancelButton from "../../../components/Card/CardCancelButton";
import CardContent from "../../../components/Card/CardContent";
import CardFieldNumber from "../../../components/Card/CardFieldNumber";
import CardHeader from "../../../components/Card/CardHeader";
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";
export const MeasurementsCard = ({ measurements, setMeasurements, }) => {
const params = useParams();
const api = useApi();
const { t } = useI18n();
const { user } = useUser();
const handleSubmit = async (values) => {
const action = api.operations["catalog.article:update"];
if (!action) {
throw new Error('Invalid action "catalog.article:update".');
}
const { length, width, height, weight } = values;
const response = await action.call({
params,
body: {
measurements: {
dimensions: length && width && height ? { length, width, height } : null,
weight: weight || null,
},
},
});
if (response.ok) {
const updatedArticle = await response.json();
setMeasurements(updatedArticle.measurements);
return t("Measurements updated successfully.");
}
else {
console.error("[MEASUREMENTS_CARDS]", response);
throw new Error("updating article measurement fields.");
}
};
return (React.createElement(React.Fragment, null,
React.createElement(Card, { columns: 3, isEditable: hasPermission(user, "catalog.change_article"), onSubmit: handleSubmit },
React.createElement(CardHeader, { title: t("Measurements") }),
React.createElement(CardContent, null,
React.createElement(CardRow, null,
React.createElement(CardFieldNumber, { adornment: "mm", formName: "width", label: t("Width"), max: 32767, min: 0, value: measurements?.dimensions?.width }),
React.createElement(CardFieldNumber, { adornment: "mm", formName: "height", label: t("Height"), max: 32767, min: 0, value: measurements?.dimensions?.height })),
React.createElement(CardRow, null,
React.createElement(CardFieldNumber, { adornment: "mm", formName: "length", label: t("Length"), max: 32767, min: 0, value: measurements?.dimensions?.length }),
React.createElement(CardFieldNumber, { adornment: "g", formName: "weight", label: t("Weight"), max: 32767, min: 0, value: measurements?.weight }))),
React.createElement(CardActions, null,
React.createElement(CardCancelButton, null),
React.createElement(CardSaveButton, null)))));
};
//# sourceMappingURL=MeasurementsCard.js.map