bananas-commerce-admin 0.20.3 → 0.21.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/components/Card/CardFieldAutoComplete.js +2 -2
- package/dist/esm/components/Card/CardFieldAutoComplete.js.map +1 -1
- package/dist/esm/components/Card/CardFieldSelect.js +6 -3
- package/dist/esm/components/Card/CardFieldSelect.js.map +1 -1
- package/dist/esm/components/Card/index.js +17 -1
- package/dist/esm/components/Card/index.js.map +1 -1
- package/dist/esm/components/ContribInlines.js +3 -2
- package/dist/esm/components/ContribInlines.js.map +1 -1
- package/dist/esm/extensions/catalog/components/ArticleCard.js +9 -4
- package/dist/esm/extensions/catalog/components/ArticleCard.js.map +1 -1
- package/dist/esm/extensions/catalog/contrib/ProductArticles.js +48 -0
- package/dist/esm/extensions/catalog/contrib/ProductArticles.js.map +1 -0
- package/dist/esm/extensions/catalog/index.js +9 -0
- package/dist/esm/extensions/catalog/index.js.map +1 -1
- package/dist/esm/extensions/pim/components/ProductAssetsCard.js +28 -0
- package/dist/esm/extensions/pim/components/ProductAssetsCard.js.map +1 -0
- package/dist/esm/extensions/pim/components/ProductAssetsGallery.js +39 -0
- package/dist/esm/extensions/pim/components/ProductAssetsGallery.js.map +1 -0
- package/dist/esm/extensions/pim/components/ProductAssetsTable.js +21 -0
- package/dist/esm/extensions/pim/components/ProductAssetsTable.js.map +1 -0
- package/dist/esm/extensions/pim/components/ProductCard.js +123 -0
- package/dist/esm/extensions/pim/components/ProductCard.js.map +1 -0
- package/dist/esm/extensions/pim/components/ProductPropertiesCard.js +71 -0
- package/dist/esm/extensions/pim/components/ProductPropertiesCard.js.map +1 -0
- package/dist/esm/extensions/pim/components/ProductPropertyField.js +25 -0
- package/dist/esm/extensions/pim/components/ProductPropertyField.js.map +1 -0
- package/dist/esm/extensions/pim/components/ProductRow.js +11 -0
- package/dist/esm/extensions/pim/components/ProductRow.js.map +1 -0
- package/dist/esm/extensions/pim/contrib/ArticleProduct.js +44 -75
- package/dist/esm/extensions/pim/contrib/ArticleProduct.js.map +1 -1
- package/dist/esm/extensions/pim/index.js +30 -0
- package/dist/esm/extensions/pim/index.js.map +1 -1
- package/dist/esm/extensions/pim/pages/product/create.js +41 -0
- package/dist/esm/extensions/pim/pages/product/create.js.map +1 -0
- package/dist/esm/extensions/pim/pages/product/detail.js +59 -0
- package/dist/esm/extensions/pim/pages/product/detail.js.map +1 -0
- package/dist/esm/extensions/pim/pages/product/list.js +54 -0
- package/dist/esm/extensions/pim/pages/product/list.js.map +1 -0
- package/dist/esm/extensions/pim/types/asset.js +2 -0
- package/dist/esm/extensions/pim/types/asset.js.map +1 -0
- package/dist/esm/extensions/pim/types/product.js +2 -0
- package/dist/esm/extensions/pim/types/product.js.map +1 -0
- package/dist/types/components/Card/CardFieldAutoComplete.d.ts +3 -0
- package/dist/types/components/Card/CardFieldSelect.d.ts +1 -0
- package/dist/types/components/ContribInlines.d.ts +1 -0
- package/dist/types/extensions/catalog/components/ArticleCard.d.ts +12 -0
- package/dist/types/extensions/catalog/contrib/ProductArticles.d.ts +4 -0
- package/dist/types/extensions/catalog/types/contrib.d.ts +8 -0
- package/dist/types/extensions/pim/components/ProductAssetsCard.d.ts +6 -0
- package/dist/types/extensions/pim/components/ProductAssetsGallery.d.ts +7 -0
- package/dist/types/extensions/pim/components/ProductAssetsTable.d.ts +7 -0
- package/dist/types/extensions/pim/components/ProductCard.d.ts +23 -0
- package/dist/types/extensions/pim/components/ProductPropertiesCard.d.ts +8 -0
- package/dist/types/extensions/pim/components/ProductPropertyField.d.ts +8 -0
- package/dist/types/extensions/pim/components/ProductRow.d.ts +6 -0
- package/dist/types/extensions/pim/index.d.ts +6 -1
- package/dist/types/extensions/pim/pages/product/create.d.ts +3 -0
- package/dist/types/extensions/pim/pages/product/detail.d.ts +4 -0
- package/dist/types/extensions/pim/pages/product/list.d.ts +4 -0
- package/dist/types/extensions/pim/types/asset.d.ts +9 -0
- package/dist/types/extensions/pim/types/product.d.ts +35 -0
- package/dist/types/types/index.d.ts +1 -1
- package/package.json +1 -1
- package/src/components/Card/CardFieldAutoComplete.tsx +14 -1
- package/src/components/Card/CardFieldSelect.tsx +6 -2
- package/src/components/Card/index.tsx +21 -1
- package/src/components/ContribInlines.tsx +5 -2
- package/src/extensions/catalog/components/ArticleCard.tsx +22 -4
- package/src/extensions/catalog/contrib/ProductArticles.tsx +82 -0
- package/src/extensions/catalog/index.tsx +9 -0
- package/src/extensions/catalog/types/contrib.ts +9 -0
- package/src/extensions/pim/components/ProductAssetsCard.tsx +49 -0
- package/src/extensions/pim/components/ProductAssetsGallery.tsx +76 -0
- package/src/extensions/pim/components/ProductAssetsTable.tsx +50 -0
- package/src/extensions/pim/components/ProductCard.tsx +242 -0
- package/src/extensions/pim/components/ProductPropertiesCard.tsx +114 -0
- package/src/extensions/pim/components/ProductPropertyField.tsx +67 -0
- package/src/extensions/pim/components/ProductRow.tsx +23 -0
- package/src/extensions/pim/contrib/ArticleProduct.tsx +70 -135
- package/src/extensions/pim/index.tsx +52 -1
- package/src/extensions/pim/pages/product/create.tsx +63 -0
- package/src/extensions/pim/pages/product/detail.tsx +102 -0
- package/src/extensions/pim/pages/product/list.tsx +87 -0
- package/src/extensions/pim/types/asset.ts +9 -0
- package/src/extensions/pim/types/product.ts +52 -0
- package/src/types/index.ts +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProductPropertiesCard.js","sourceRoot":"","sources":["../../../../../src/extensions/pim/components/ProductPropertiesCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import CardFieldAutoComplete from "../../../components/Card/CardFieldAutoComplete";
|
|
3
|
+
import CardFieldNumber from "../../../components/Card/CardFieldNumber";
|
|
4
|
+
import CardFieldText from "../../../components/Card/CardFieldText";
|
|
5
|
+
export const ProductPropertyField = ({ property, value, formName, }) => {
|
|
6
|
+
switch (property.type) {
|
|
7
|
+
case "string": {
|
|
8
|
+
const currentValue = value;
|
|
9
|
+
return (React.createElement(CardFieldText, { formName: formName ?? property.name, label: property.title, required: property.min_length ? true : false, value: currentValue }));
|
|
10
|
+
}
|
|
11
|
+
case "integer": {
|
|
12
|
+
const currentValue = parseInt(value);
|
|
13
|
+
return (React.createElement(CardFieldNumber, { formName: formName ?? property.name, label: property.title, max: property.max_value, min: property.min_value, required: property.min_value !== undefined ? true : false, value: Number.isNaN(currentValue) ? undefined : currentValue }));
|
|
14
|
+
}
|
|
15
|
+
case "array": {
|
|
16
|
+
const currentValue = value;
|
|
17
|
+
return (React.createElement(CardFieldAutoComplete, { autoSelect: true, clearOnBlur: true, freeSolo: true, fallback: "—", formName: formName ?? property.name, label: property.title, value: (currentValue ?? []).map((val) => ({
|
|
18
|
+
id: val,
|
|
19
|
+
label: val,
|
|
20
|
+
})) }));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return React.createElement(React.Fragment, null);
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=ProductPropertyField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProductPropertyField.js","sourceRoot":"","sources":["../../../../../src/extensions/pim/components/ProductPropertyField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,qBAAqB,MAAM,gDAAgD,CAAC;AACnF,OAAO,eAAe,MAAM,0CAA0C,CAAC;AACvE,OAAO,aAAa,MAAM,wCAAwC,CAAC;AASnE,MAAM,CAAC,MAAM,oBAAoB,GAAwC,CAAC,EACxE,QAAQ,EACR,KAAK,EACL,QAAQ,GACT,EAAE,EAAE;IACH,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,YAAY,GAAG,KAAe,CAAC;YACrC,OAAO,CACL,oBAAC,aAAa,IACZ,QAAQ,EAAE,QAAQ,IAAI,QAAQ,CAAC,IAAI,EACnC,KAAK,EAAE,QAAQ,CAAC,KAAK,EACrB,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAC5C,KAAK,EAAE,YAAY,GACnB,CACH,CAAC;QACJ,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAe,CAAC,CAAC;YAC/C,OAAO,CACL,oBAAC,eAAe,IACd,QAAQ,EAAE,QAAQ,IAAI,QAAQ,CAAC,IAAI,EACnC,KAAK,EAAE,QAAQ,CAAC,KAAK,EACrB,GAAG,EAAE,QAAQ,CAAC,SAAS,EACvB,GAAG,EAAE,QAAQ,CAAC,SAAS,EACvB,QAAQ,EAAE,QAAQ,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EACzD,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,GAC5D,CACH,CAAC;QACJ,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,YAAY,GAAG,KAAiB,CAAC;YAEvC,OAAO,CACL,oBAAC,qBAAqB,IACpB,UAAU,QACV,WAAW,QACX,QAAQ,QACR,QAAQ,EAAE,GAAG,EACb,QAAQ,EAAE,QAAQ,IAAI,QAAQ,CAAC,IAAI,EACnC,KAAK,EAAE,QAAQ,CAAC,KAAK,EACrB,KAAK,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAyB,EAAE,EAAE,CAAC,CAAC;oBAC9D,EAAE,EAAE,GAAa;oBACjB,KAAK,EAAE,GAAa;iBACrB,CAAC,CAAC,GACH,CACH,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,yCAAK,CAAC;AACf,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import CancelIcon from "@mui/icons-material/Cancel";
|
|
3
|
+
import CheckCircleIcon from "@mui/icons-material/CheckCircle";
|
|
4
|
+
import { TableCell } from "../../../components/Table/TableCell";
|
|
5
|
+
import { NavigatingTableRow } from "../../../components/Table/TableRow";
|
|
6
|
+
export const ProductRow = ({ product }) => (React.createElement(NavigatingTableRow, { route: "pim.product:detail", routeParams: { id: product.id } },
|
|
7
|
+
React.createElement(TableCell, null, product.name),
|
|
8
|
+
React.createElement(TableCell, null, product.item_type),
|
|
9
|
+
React.createElement(TableCell, null, product.number),
|
|
10
|
+
React.createElement(TableCell, { align: "right" }, product.is_active ? React.createElement(CheckCircleIcon, { color: "success" }) : React.createElement(CancelIcon, { color: "error" }))));
|
|
11
|
+
//# sourceMappingURL=ProductRow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProductRow.js","sourceRoot":"","sources":["../../../../../src/extensions/pim/components/ProductRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,UAAU,MAAM,4BAA4B,CAAC;AACpD,OAAO,eAAe,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAOxE,MAAM,CAAC,MAAM,UAAU,GAA8B,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CACpE,oBAAC,kBAAkB,IAAC,KAAK,EAAC,oBAAoB,EAAC,WAAW,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE;IAC5E,oBAAC,SAAS,QAAE,OAAO,CAAC,IAAI,CAAa;IACrC,oBAAC,SAAS,QAAE,OAAO,CAAC,SAAS,CAAa;IAC1C,oBAAC,SAAS,QAAE,OAAO,CAAC,MAAM,CAAa;IACvC,oBAAC,SAAS,IAAC,KAAK,EAAC,OAAO,IACrB,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAC,eAAe,IAAC,KAAK,EAAC,SAAS,GAAG,CAAC,CAAC,CAAC,oBAAC,UAAU,IAAC,KAAK,EAAC,OAAO,GAAG,CAC7E,CACO,CACtB,CAAC"}
|
|
@@ -1,98 +1,67 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { TableBody, TableHead, TableRow } from "@mui/material";
|
|
3
|
-
import Box from "@mui/material/Box";
|
|
4
|
-
import ImageList from "@mui/material/ImageList";
|
|
5
|
-
import ImageListItem from "@mui/material/ImageListItem";
|
|
6
|
-
import ImageListItemBar from "@mui/material/ImageListItemBar";
|
|
7
|
-
import Modal from "@mui/material/Modal";
|
|
1
|
+
import React, { useEffect, useState } from "react";
|
|
8
2
|
import Card from "../../../components/Card";
|
|
9
3
|
import CardContent from "../../../components/Card/CardContent";
|
|
4
|
+
import CardFieldSelect from "../../../components/Card/CardFieldSelect";
|
|
10
5
|
import CardFieldText from "../../../components/Card/CardFieldText";
|
|
11
6
|
import CardHeader from "../../../components/Card/CardHeader";
|
|
12
7
|
import CardRow from "../../../components/Card/CardRow";
|
|
13
|
-
import
|
|
14
|
-
import { TableCell } from "../../../components/Table/TableCell";
|
|
15
|
-
import TableHeading from "../../../components/Table/TableHeading";
|
|
8
|
+
import { useApi } from "../../../contexts/ApiContext";
|
|
16
9
|
import { useI18n } from "../../../contexts/I18nContext";
|
|
17
|
-
import {
|
|
10
|
+
import { ProductAssetsGallery } from "../components/ProductAssetsGallery";
|
|
11
|
+
import { ProductAssetsTable } from "../components/ProductAssetsTable";
|
|
12
|
+
import { ProductPropertyField } from "../components/ProductPropertyField";
|
|
18
13
|
const ArticleProductCard = ({ data, params }) => {
|
|
19
14
|
const { t } = useI18n();
|
|
20
|
-
const
|
|
15
|
+
const api = useApi();
|
|
16
|
+
const [productItemTypes, setProductItemTypes] = useState([]);
|
|
21
17
|
const { code: articleCode } = params;
|
|
22
18
|
const { product, assets } = data;
|
|
23
19
|
const articleAssets = assets.filter((asset) => asset.article_code == articleCode || asset.article_code == "");
|
|
24
20
|
const imageAssets = articleAssets.filter((asset) => asset.asset_type == "image");
|
|
25
21
|
const otherAssets = articleAssets.filter((asset) => asset.asset_type !== "image");
|
|
26
|
-
const productProperties =
|
|
27
|
-
|
|
22
|
+
const productProperties = product.properties;
|
|
23
|
+
const productItemType = productItemTypes.find((itemType) => itemType.name == product.item_type);
|
|
24
|
+
const productPropertiesList = productItemType ? productItemType.product_properties : [];
|
|
25
|
+
const productPropertiesRows = productPropertiesList.reduce((rows, prop, index) => {
|
|
26
|
+
if (index % 2 === 0)
|
|
27
|
+
rows.push([prop]);
|
|
28
|
+
else
|
|
29
|
+
rows[rows.length - 1].push(prop);
|
|
30
|
+
return rows;
|
|
31
|
+
}, []);
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
api.operations["pim.item_types:options"].call({}).then(async (response) => {
|
|
34
|
+
if (response.ok) {
|
|
35
|
+
setProductItemTypes(await response.json());
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}, []);
|
|
39
|
+
return (React.createElement(Card, { columns: 2, isEditable: false },
|
|
28
40
|
React.createElement(CardHeader, { title: "Product" }),
|
|
29
41
|
React.createElement(CardContent, null,
|
|
30
42
|
React.createElement(CardRow, null,
|
|
31
|
-
React.createElement(CardFieldText, { formName: "name", label: t("Name"), required: true, value: product.name })
|
|
43
|
+
React.createElement(CardFieldText, { formName: "name", label: t("Name"), required: true, value: product.name }),
|
|
44
|
+
React.createElement(CardFieldSelect, { formName: "item_type", label: t("Type"), options: productItemTypes.map((itemType) => ({
|
|
45
|
+
id: itemType.name,
|
|
46
|
+
label: itemType.name,
|
|
47
|
+
})), required: true, size: 1, value: product.item_type ? { id: product.item_type, label: product.item_type } : undefined })),
|
|
32
48
|
React.createElement(CardRow, null,
|
|
33
49
|
React.createElement(CardFieldText, { formName: "description", label: t("Description"), required: true, value: product.description }))),
|
|
34
|
-
|
|
50
|
+
productPropertiesRows.length > 0 && (React.createElement(React.Fragment, null,
|
|
35
51
|
React.createElement(CardHeader, { title: t("Properties") }),
|
|
36
|
-
React.createElement(
|
|
37
|
-
React.createElement(TableBody, { sx: {
|
|
38
|
-
"& .MuiTableRow-root:first-of-type .MuiTableCell-root": (theme) => ({
|
|
39
|
-
borderTop: `1px solid ${theme.palette.divider}`,
|
|
40
|
-
}),
|
|
41
|
-
} }, productProperties
|
|
42
|
-
.sort((a, b) => (a[0] < b[0] ? -1 : 1))
|
|
43
|
-
.map((prop) => (React.createElement(TableRow, { key: prop[0] },
|
|
44
|
-
React.createElement(TableCell, null, capitalize(prop[0])),
|
|
45
|
-
React.createElement(TableCell, { typographyProps: {
|
|
46
|
-
variant: "caption",
|
|
47
|
-
color: "text.secondary",
|
|
48
|
-
} }, prop[1])))))))),
|
|
52
|
+
React.createElement(CardContent, null, productPropertiesRows.map((row, index) => (React.createElement(CardRow, { key: index }, row.map((prop) => (React.createElement(ProductPropertyField, { key: prop.name, property: prop, value: productProperties[prop.name] }))))))))),
|
|
49
53
|
articleAssets.length > 0 && React.createElement(CardHeader, { title: t("Assets") }),
|
|
50
|
-
imageAssets.length > 0 && (React.createElement(
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
p: 2, // Reduced padding
|
|
62
|
-
display: "flex",
|
|
63
|
-
justifyContent: "center",
|
|
64
|
-
alignItems: "center",
|
|
65
|
-
overflow: "hidden", // Hide any overflowing content
|
|
66
|
-
outline: "none",
|
|
67
|
-
}, onClick: () => setSelectedAsset(null) }, selectedAsset !== null && (React.createElement("img", { alt: selectedAsset.caption, loading: "lazy", src: selectedAsset.url, style: {
|
|
68
|
-
maxWidth: "100%",
|
|
69
|
-
maxHeight: "100%",
|
|
70
|
-
objectFit: "contain",
|
|
71
|
-
borderRadius: "8px", // Subtle rounded corners for the image
|
|
72
|
-
} })))),
|
|
73
|
-
React.createElement(CardContent, { sx: {
|
|
74
|
-
width: "100%",
|
|
75
|
-
height: 400,
|
|
76
|
-
overflowY: "scroll",
|
|
77
|
-
paddingTop: 0,
|
|
78
|
-
paddingBottom: 0,
|
|
79
|
-
paddingLeft: 3,
|
|
80
|
-
paddingRight: 3,
|
|
81
|
-
} },
|
|
82
|
-
React.createElement(ImageList, { cols: 3, gap: 8, variant: "masonry" }, imageAssets.map((asset) => (React.createElement(ImageListItem, { key: asset.id, onClick: () => setSelectedAsset(asset) },
|
|
83
|
-
React.createElement("img", { alt: asset.caption, loading: "lazy", src: asset.url }),
|
|
84
|
-
React.createElement(ImageListItemBar, { subtitle: asset.caption })))))))),
|
|
85
|
-
otherAssets.length > 0 && (React.createElement(Table, { count: otherAssets.length },
|
|
86
|
-
React.createElement(TableHead, null,
|
|
87
|
-
React.createElement(TableRow, null,
|
|
88
|
-
React.createElement(TableHeading, null, t("Asset ID")),
|
|
89
|
-
React.createElement(TableHeading, { align: "right" }, t("Type")),
|
|
90
|
-
React.createElement(TableHeading, { align: "right" }, t("Caption")))),
|
|
91
|
-
React.createElement(TableBody, { sx: { ".MuiTableRow-root:last-child > .MuiTableCell-root": { borderBottom: "none" } } }, otherAssets.map((asset) => (React.createElement(TableRow, { key: asset.id, sx: { height: 56 } },
|
|
92
|
-
React.createElement(TableCell, { sx: { py: 0 } },
|
|
93
|
-
React.createElement("a", { href: asset.url, rel: "noreferrer", target: "_blank" }, asset.id)),
|
|
94
|
-
React.createElement(TableCell, { align: "right", sx: { py: 0 } }, asset.asset_type),
|
|
95
|
-
React.createElement(TableCell, { align: "right", sx: { py: 0 } }, asset.caption)))))))));
|
|
54
|
+
imageAssets.length > 0 && (React.createElement(CardContent, { sx: {
|
|
55
|
+
width: "100%",
|
|
56
|
+
height: 400,
|
|
57
|
+
overflowY: "scroll",
|
|
58
|
+
paddingTop: 0,
|
|
59
|
+
paddingBottom: 0,
|
|
60
|
+
paddingLeft: 3,
|
|
61
|
+
paddingRight: 3,
|
|
62
|
+
} },
|
|
63
|
+
React.createElement(ProductAssetsGallery, { assets: imageAssets }))),
|
|
64
|
+
otherAssets.length > 0 && React.createElement(ProductAssetsTable, { assets: otherAssets })));
|
|
96
65
|
};
|
|
97
66
|
export default ArticleProductCard;
|
|
98
67
|
//# sourceMappingURL=ArticleProduct.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArticleProduct.js","sourceRoot":"","sources":["../../../../../src/extensions/pim/contrib/ArticleProduct.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"ArticleProduct.js","sourceRoot":"","sources":["../../../../../src/extensions/pim/contrib/ArticleProduct.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,33 @@
|
|
|
1
1
|
import InventoryOutlinedIcon from "@mui/icons-material/InventoryOutlined";
|
|
2
|
+
import WorkspacesIcon from "../../assets/symbols/Workspaces";
|
|
3
|
+
export * from "./types/contrib";
|
|
4
|
+
export * from "./types/product";
|
|
5
|
+
const routes = {
|
|
6
|
+
product: {
|
|
7
|
+
create: { page: async () => (await import("./pages/product/create")).default, offline: true },
|
|
8
|
+
detail: { page: async () => (await import("./pages/product/detail")).default },
|
|
9
|
+
list: { page: async () => (await import("./pages/product/list")).default },
|
|
10
|
+
},
|
|
11
|
+
};
|
|
12
|
+
export const router = {
|
|
13
|
+
app: "pim",
|
|
14
|
+
pages: (route) => {
|
|
15
|
+
const { page, ...hit } = routes[route.view]?.[route.action] ?? {};
|
|
16
|
+
if (page != null) {
|
|
17
|
+
return {
|
|
18
|
+
page: page(),
|
|
19
|
+
...hit,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
return undefined;
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
export const navigation = {
|
|
26
|
+
"pim.product:list": {
|
|
27
|
+
icon: WorkspacesIcon,
|
|
28
|
+
permission: "pim.view_product",
|
|
29
|
+
},
|
|
30
|
+
};
|
|
2
31
|
export const contrib = {
|
|
3
32
|
catalog: {
|
|
4
33
|
"catalog:article:detail:product": {
|
|
@@ -7,6 +36,7 @@ export const contrib = {
|
|
|
7
36
|
component: async () => (await import("./contrib/ArticleProduct")).default,
|
|
8
37
|
predicate: (article) => !!article.product_number,
|
|
9
38
|
variant: "inline",
|
|
39
|
+
permission: "pim.view_product",
|
|
10
40
|
},
|
|
11
41
|
},
|
|
12
42
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/extensions/pim/index.tsx"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/extensions/pim/index.tsx"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,MAAM,uCAAuC,CAAC;AAI1E,OAAO,cAAc,MAAM,iCAAiC,CAAC;AAK7D,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAEhC,MAAM,MAAM,GAYR;IACF,OAAO,EAAE;QACP,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;QAC7F,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC,OAAO,EAAE;QAC9E,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,EAAE;KAC3E;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAoB;IACrC,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;QACf,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAElE,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,OAAO;gBACL,IAAI,EAAE,IAAI,EAAE;gBACZ,GAAG,GAAG;aACP,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAwB;IAC7C,kBAAkB,EAAE;QAClB,IAAI,EAAE,cAAc;QACpB,UAAU,EAAE,kBAAkB;KAC/B;CACO,CAAC;AAEX,MAAM,CAAC,MAAM,OAAO,GAAwC;IAC1D,OAAO,EAAE;QACP,gCAAgC,EAAE;YAChC,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,qBAAqB;YAC3B,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC,OAAO;YACzE,SAAS,EAAE,CAAC,OAAsB,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc;YAC/D,OAAO,EAAE,QAAQ;YACjB,UAAU,EAAE,kBAAkB;SAC/B;KACF;CACO,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import React, { useEffect, useState } from "react";
|
|
2
|
+
import CategoryOutlinedIcon from "@mui/icons-material/CategoryOutlined";
|
|
3
|
+
import { Header } from "../../../../components/Header";
|
|
4
|
+
import { Page } from "../../../../components/Page";
|
|
5
|
+
import { Tab } from "../../../../components/Tab";
|
|
6
|
+
import { TabPanel } from "../../../../components/TabPanel";
|
|
7
|
+
import { TabPanels } from "../../../../components/TabPanels";
|
|
8
|
+
import { Tabs } from "../../../../components/Tabs";
|
|
9
|
+
import { TitleBar } from "../../../../components/TitleBar";
|
|
10
|
+
import Content, { LeftColumn } from "../../../../containers/Content";
|
|
11
|
+
import { useApi } from "../../../../contexts/ApiContext";
|
|
12
|
+
import { useRouter } from "../../../../contexts/RouterContext";
|
|
13
|
+
import { ProductCard } from "../../components/ProductCard";
|
|
14
|
+
const ProductCreatePage = () => {
|
|
15
|
+
const { navigate } = useRouter();
|
|
16
|
+
const api = useApi();
|
|
17
|
+
const [productItemTypes, setProductItemTypes] = useState([]);
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
api.operations["pim.item_types:options"].call({}).then(async (response) => {
|
|
20
|
+
if (response.ok) {
|
|
21
|
+
setProductItemTypes(await response.json());
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}, []);
|
|
25
|
+
return (React.createElement(Page, null,
|
|
26
|
+
React.createElement(Header, { variant: "opaque" },
|
|
27
|
+
React.createElement(TitleBar, { title: "Create Product" }),
|
|
28
|
+
React.createElement(Tabs, null,
|
|
29
|
+
React.createElement(Tab, { key: "default", icon: React.createElement(CategoryOutlinedIcon, null), label: "Product", value: "default" }))),
|
|
30
|
+
React.createElement(TabPanels, null,
|
|
31
|
+
React.createElement(TabPanel, { key: "default", value: "default" },
|
|
32
|
+
React.createElement(Content, { layout: "fixedWidth" },
|
|
33
|
+
React.createElement(LeftColumn, null,
|
|
34
|
+
React.createElement(ProductCard, { create: true, itemTypes: productItemTypes, onCreated: (product) => {
|
|
35
|
+
navigate(`pim.product:detail`, {
|
|
36
|
+
params: { id: product.id },
|
|
37
|
+
});
|
|
38
|
+
} })))))));
|
|
39
|
+
};
|
|
40
|
+
export default ProductCreatePage;
|
|
41
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../../../src/extensions/pim/pages/product/create.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEnD,OAAO,oBAAoB,MAAM,sCAAsC,CAAC;AAExE,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,OAAO,EAAE,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAE/D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAG3D,MAAM,iBAAiB,GAAkB,GAAG,EAAE;IAC5C,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,CAAC;IACjC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IAErB,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAA0B,EAAE,CAAC,CAAC;IAEtF,SAAS,CAAC,GAAG,EAAE;QACb,GAAG,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YACxE,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAChB,mBAAmB,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,oBAAC,IAAI;QACH,oBAAC,MAAM,IAAC,OAAO,EAAC,QAAQ;YACtB,oBAAC,QAAQ,IAAC,KAAK,EAAC,gBAAgB,GAAG;YACnC,oBAAC,IAAI;gBACH,oBAAC,GAAG,IAAC,GAAG,EAAC,SAAS,EAAC,IAAI,EAAE,oBAAC,oBAAoB,OAAG,EAAE,KAAK,EAAC,SAAS,EAAC,KAAK,EAAC,SAAS,GAAG,CAChF,CACA;QAET,oBAAC,SAAS;YACR,oBAAC,QAAQ,IAAC,GAAG,EAAC,SAAS,EAAC,KAAK,EAAC,SAAS;gBACrC,oBAAC,OAAO,IAAC,MAAM,EAAC,YAAY;oBAC1B,oBAAC,UAAU;wBACT,oBAAC,WAAW,IACV,MAAM,QACN,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;gCACrB,QAAQ,CAAC,oBAAoB,EAAE;oCAC7B,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE;iCAC3B,CAAC,CAAC;4BACL,CAAC,GACD,CACS,CACL,CACD,CACD,CACP,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import React, { useEffect, useState } from "react";
|
|
2
|
+
import CategoryOutlinedIcon from "@mui/icons-material/CategoryOutlined";
|
|
3
|
+
import Typography from "@mui/material/Typography";
|
|
4
|
+
import { ContribInlines } from "../../../../components/ContribInlines";
|
|
5
|
+
import { Header } from "../../../../components/Header";
|
|
6
|
+
import { Page } from "../../../../components/Page";
|
|
7
|
+
import { Tab } from "../../../../components/Tab";
|
|
8
|
+
import { TabPanel } from "../../../../components/TabPanel";
|
|
9
|
+
import { TabPanels } from "../../../../components/TabPanels";
|
|
10
|
+
import { Tabs } from "../../../../components/Tabs";
|
|
11
|
+
import { TitleBar } from "../../../../components/TitleBar";
|
|
12
|
+
import Content, { LeftColumn, RightColumn } from "../../../../containers/Content";
|
|
13
|
+
import { useApi } from "../../../../contexts/ApiContext";
|
|
14
|
+
import { ProductAssetsCard } from "../../components/ProductAssetsCard";
|
|
15
|
+
import { ProductCard } from "../../components/ProductCard";
|
|
16
|
+
import { ProductPropertiesCard } from "../../components/ProductPropertiesCard";
|
|
17
|
+
const ProductDetailPage = ({ data }) => {
|
|
18
|
+
const [product, setProduct] = useState(data);
|
|
19
|
+
const [productItemTypes, setProductItemTypes] = useState([]);
|
|
20
|
+
const [productAssets, setProductAssets] = useState([]);
|
|
21
|
+
const api = useApi();
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
api.operations["pim.item_types:options"].call({}).then(async (response) => {
|
|
24
|
+
if (response.ok) {
|
|
25
|
+
setProductItemTypes(await response.json());
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
}, []);
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
api.operations["pim.asset:list"]
|
|
31
|
+
.call({ query: { product_number: product.number } })
|
|
32
|
+
.then(async (response) => {
|
|
33
|
+
if (response.ok) {
|
|
34
|
+
const assetList = await response.json();
|
|
35
|
+
setProductAssets(assetList.results);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}, []);
|
|
39
|
+
const productItemType = productItemTypes.find((itemType) => itemType.name == product.item_type);
|
|
40
|
+
return (React.createElement(Page, null,
|
|
41
|
+
React.createElement(Header, { variant: "opaque" },
|
|
42
|
+
React.createElement(TitleBar, { title: React.createElement(React.Fragment, null,
|
|
43
|
+
data.name,
|
|
44
|
+
React.createElement(Typography, { sx: { pl: 1 }, variant: "button" }, data.number)) }),
|
|
45
|
+
React.createElement(Tabs, { data: product },
|
|
46
|
+
React.createElement(Tab, { key: "default", icon: React.createElement(CategoryOutlinedIcon, null), label: "Product", value: "default" }))),
|
|
47
|
+
React.createElement(TabPanels, { contribParams: { number: data.number } },
|
|
48
|
+
React.createElement(TabPanel, { key: "default", value: "default" },
|
|
49
|
+
React.createElement(Content, { layout: "fixedWidth" },
|
|
50
|
+
React.createElement(LeftColumn, null,
|
|
51
|
+
React.createElement(ProductCard, { itemTypes: productItemTypes, product: product, onUpdated: setProduct }),
|
|
52
|
+
productItemType && (React.createElement(ProductPropertiesCard, { itemType: productItemType, productProperties: product.properties, setProductProperties: (properties) => setProduct((previous) => ({ ...previous, properties })) })),
|
|
53
|
+
productAssets.length > 0 && React.createElement(ProductAssetsCard, { assets: productAssets }),
|
|
54
|
+
React.createElement(ContribInlines, { contribParams: { number: data.number }, data: data })),
|
|
55
|
+
React.createElement(RightColumn, null,
|
|
56
|
+
React.createElement(ContribInlines, { contribParams: { number: data.number }, data: data, variant: "sidebar" })))))));
|
|
57
|
+
};
|
|
58
|
+
export default ProductDetailPage;
|
|
59
|
+
//# sourceMappingURL=detail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detail.js","sourceRoot":"","sources":["../../../../../../src/extensions/pim/pages/product/detail.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEnD,OAAO,oBAAoB,MAAM,sCAAsC,CAAC;AACxE,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,OAAO,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAI/E,MAAM,iBAAiB,GAAiC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;IACnE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAA0B,EAAE,CAAC,CAAC;IACtF,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAc,EAAE,CAAC,CAAC;IACpE,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IAErB,SAAS,CAAC,GAAG,EAAE;QACb,GAAG,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YACxE,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAChB,mBAAmB,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACb,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC;aAC7B,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;aACnD,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YACvB,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAChB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACxC,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC;QACH,CAAC,CAAC,CAAC;IACP,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,eAAe,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhG,OAAO,CACL,oBAAC,IAAI;QACH,oBAAC,MAAM,IAAC,OAAO,EAAC,QAAQ;YACtB,oBAAC,QAAQ,IACP,KAAK,EACH;oBACG,IAAI,CAAC,IAAI;oBACV,oBAAC,UAAU,IAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,OAAO,EAAC,QAAQ,IACxC,IAAI,CAAC,MAAM,CACD,CACZ,GAEL;YACF,oBAAC,IAAI,IAAC,IAAI,EAAE,OAAO;gBACjB,oBAAC,GAAG,IAAC,GAAG,EAAC,SAAS,EAAC,IAAI,EAAE,oBAAC,oBAAoB,OAAG,EAAE,KAAK,EAAC,SAAS,EAAC,KAAK,EAAC,SAAS,GAAG,CAChF,CACA;QAET,oBAAC,SAAS,IAAC,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;YAC/C,oBAAC,QAAQ,IAAC,GAAG,EAAC,SAAS,EAAC,KAAK,EAAC,SAAS;gBACrC,oBAAC,OAAO,IAAC,MAAM,EAAC,YAAY;oBAC1B,oBAAC,UAAU;wBACT,oBAAC,WAAW,IAAC,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,GAAI;wBAEpF,eAAe,IAAI,CAClB,oBAAC,qBAAqB,IACpB,QAAQ,EAAE,eAAe,EACzB,iBAAiB,EAAE,OAAO,CAAC,UAAU,EACrC,oBAAoB,EAAE,CAAC,UAAU,EAAE,EAAE,CACnC,UAAU,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,GAEzD,CACH;wBAEA,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,oBAAC,iBAAiB,IAAC,MAAM,EAAE,aAAa,GAAI;wBAEzE,oBAAC,cAAc,IAAC,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,GAAI,CAC3D;oBACb,oBAAC,WAAW;wBACV,oBAAC,cAAc,IACb,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EACtC,IAAI,EAAE,IAAI,EACV,OAAO,EAAC,SAAS,GACjB,CACU,CACN,CACD,CACD,CACP,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Button, TableBody } from "@mui/material";
|
|
3
|
+
import ActionBar from "../../../../components/ActionBar";
|
|
4
|
+
import { Header } from "../../../../components/Header";
|
|
5
|
+
import { Page } from "../../../../components/Page";
|
|
6
|
+
import SearchBar from "../../../../components/SearchBar";
|
|
7
|
+
import Table from "../../../../components/Table";
|
|
8
|
+
import TableHead from "../../../../components/Table/TableHead";
|
|
9
|
+
import TableHeading from "../../../../components/Table/TableHeading";
|
|
10
|
+
import TableCard from "../../../../components/TableCard";
|
|
11
|
+
import { TitleBar } from "../../../../components/TitleBar";
|
|
12
|
+
import Content, { ContentWrapperWithActionBar } from "../../../../containers/Content";
|
|
13
|
+
import { useI18n } from "../../../../contexts/I18nContext";
|
|
14
|
+
import { useRouter } from "../../../../contexts/RouterContext";
|
|
15
|
+
import { useUser } from "../../../../contexts/UserContext";
|
|
16
|
+
import { hasPermission } from "../../../../util/has_permission";
|
|
17
|
+
import { ProductRow } from "../../components/ProductRow";
|
|
18
|
+
const ProductListPage = ({ data }) => {
|
|
19
|
+
const { navigate } = useRouter();
|
|
20
|
+
const { user } = useUser();
|
|
21
|
+
const { t } = useI18n();
|
|
22
|
+
return (React.createElement(Page, null,
|
|
23
|
+
React.createElement(Header, null,
|
|
24
|
+
React.createElement(TitleBar, { title: t("Products") },
|
|
25
|
+
React.createElement(SearchBar, { defaultValue: new URLSearchParams(window.location.search).get("search") ?? "", placeholder: t("Search for product number or name"), onSubmit: (input) => {
|
|
26
|
+
if (input === "") {
|
|
27
|
+
navigate("pim.product:list", {
|
|
28
|
+
replace: true,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
navigate("pim.product:list", {
|
|
33
|
+
query: {
|
|
34
|
+
search: input,
|
|
35
|
+
},
|
|
36
|
+
replace: true,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
} }))),
|
|
40
|
+
React.createElement(ContentWrapperWithActionBar, null,
|
|
41
|
+
React.createElement(Content, { layout: "fullWidth" },
|
|
42
|
+
React.createElement(TableCard, null,
|
|
43
|
+
React.createElement(Table, { pagination: true, count: data?.count },
|
|
44
|
+
React.createElement(TableHead, null,
|
|
45
|
+
React.createElement(TableHeading, null, t("Name")),
|
|
46
|
+
React.createElement(TableHeading, null, t("Type")),
|
|
47
|
+
React.createElement(TableHeading, null, t("Product Number")),
|
|
48
|
+
React.createElement(TableHeading, { align: "right" }, t("Active"))),
|
|
49
|
+
React.createElement(TableBody, null, data?.results.map((product) => React.createElement(ProductRow, { key: product.id, product: product })))))),
|
|
50
|
+
hasPermission(user, "pim.add_product") && (React.createElement(ActionBar, null,
|
|
51
|
+
React.createElement(Button, { color: "primary", variant: "contained", onClick: () => navigate("pim.product:create") }, t("Create product")))))));
|
|
52
|
+
};
|
|
53
|
+
export default ProductListPage;
|
|
54
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../../../src/extensions/pim/pages/product/list.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset.js","sourceRoot":"","sources":["../../../../../src/extensions/pim/types/asset.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"product.js","sourceRoot":"","sources":["../../../../../src/extensions/pim/types/product.ts"],"names":[],"mappings":""}
|
|
@@ -5,6 +5,9 @@ export interface CardFieldAutoCompleteProps extends CardFieldBaseProps, React.Pr
|
|
|
5
5
|
isEditable?: boolean;
|
|
6
6
|
type: "autocomplete";
|
|
7
7
|
value: FormOption[];
|
|
8
|
+
autoSelect?: boolean;
|
|
9
|
+
clearOnBlur?: boolean;
|
|
10
|
+
freeSolo?: boolean;
|
|
8
11
|
}
|
|
9
12
|
export declare const CardFieldAutoComplete: React.FC<Omit<CardFieldAutoCompleteProps, "type">>;
|
|
10
13
|
export default CardFieldAutoComplete;
|
|
@@ -7,6 +7,7 @@ export interface CardFieldSelectProps extends React.PropsWithChildren, Omit<Sele
|
|
|
7
7
|
emptyValue?: FormOption;
|
|
8
8
|
value: FormOption | undefined;
|
|
9
9
|
isEditable?: boolean;
|
|
10
|
+
onUpdated?: (val: string) => void;
|
|
10
11
|
}
|
|
11
12
|
export declare const CardFieldSelect: React.FC<Omit<CardFieldSelectProps, "type">>;
|
|
12
13
|
export default CardFieldSelect;
|
|
@@ -11,4 +11,16 @@ export type ArticleCardProps = {
|
|
|
11
11
|
onCreated?: never;
|
|
12
12
|
onUpdated: (article: ArticleDetail) => void;
|
|
13
13
|
};
|
|
14
|
+
export interface ArticleCardFormValues {
|
|
15
|
+
code: string;
|
|
16
|
+
item_type: string;
|
|
17
|
+
is_active: string;
|
|
18
|
+
name: string;
|
|
19
|
+
description: string;
|
|
20
|
+
product_number: string;
|
|
21
|
+
model_number: string;
|
|
22
|
+
tax_code: string;
|
|
23
|
+
gtin: string;
|
|
24
|
+
variant: string;
|
|
25
|
+
}
|
|
14
26
|
export declare const ArticleCard: React.FC<ArticleCardProps>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { AssetList } from "../types/asset";
|
|
3
|
+
import { ArticleAsset } from "../types/contrib";
|
|
4
|
+
export interface ProductAssetsGalleryProps {
|
|
5
|
+
assets: AssetList[] | ArticleAsset[];
|
|
6
|
+
}
|
|
7
|
+
export declare const ProductAssetsGallery: React.FC<ProductAssetsGalleryProps>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { AssetList } from "../types/asset";
|
|
3
|
+
import { ArticleAsset } from "../types/contrib";
|
|
4
|
+
export interface ProductAssetsTableProps {
|
|
5
|
+
assets: AssetList[] | ArticleAsset[];
|
|
6
|
+
}
|
|
7
|
+
export declare const ProductAssetsTable: React.FC<ProductAssetsTableProps>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { ProductCreated, ProductDetail, ProductItemTypeOption } from "../types/product";
|
|
3
|
+
export type ProductCardProps = {
|
|
4
|
+
create: true;
|
|
5
|
+
product?: ProductDetail;
|
|
6
|
+
onCreated: (product: ProductCreated) => void;
|
|
7
|
+
onUpdated?: never;
|
|
8
|
+
itemTypes: ProductItemTypeOption[];
|
|
9
|
+
} | {
|
|
10
|
+
create?: false;
|
|
11
|
+
product: ProductDetail;
|
|
12
|
+
onCreated?: never;
|
|
13
|
+
onUpdated: (product: ProductDetail) => void;
|
|
14
|
+
itemTypes: ProductItemTypeOption[];
|
|
15
|
+
};
|
|
16
|
+
export interface ProductCardFormValues {
|
|
17
|
+
number: string;
|
|
18
|
+
item_type: string;
|
|
19
|
+
is_active: string;
|
|
20
|
+
name: string;
|
|
21
|
+
description: string;
|
|
22
|
+
}
|
|
23
|
+
export declare const ProductCard: React.FC<ProductCardProps>;
|