bananas-commerce-admin 0.19.3 → 0.19.5

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.
Files changed (51) hide show
  1. package/dist/esm/components/Card/CardFieldAddress.js +9 -9
  2. package/dist/esm/components/Card/CardFieldAddress.js.map +1 -1
  3. package/dist/esm/components/Card/index.js +11 -3
  4. package/dist/esm/components/Card/index.js.map +1 -1
  5. package/dist/esm/extensions/catalog/components/ArticleCard.js +9 -2
  6. package/dist/esm/extensions/catalog/components/ArticleCard.js.map +1 -1
  7. package/dist/esm/extensions/catalog/components/ArticleRow.js +4 -1
  8. package/dist/esm/extensions/catalog/components/ArticleRow.js.map +1 -1
  9. package/dist/esm/extensions/catalog/pages/article/list.js +2 -1
  10. package/dist/esm/extensions/catalog/pages/article/list.js.map +1 -1
  11. package/dist/esm/extensions/member/components/MemberDetailCard.js +35 -8
  12. package/dist/esm/extensions/member/components/MemberDetailCard.js.map +1 -1
  13. package/dist/esm/extensions/member/index.js +4 -0
  14. package/dist/esm/extensions/member/index.js.map +1 -1
  15. package/dist/esm/extensions/member/pages/member/create.js +250 -0
  16. package/dist/esm/extensions/member/pages/member/create.js.map +1 -0
  17. package/dist/esm/extensions/member/pages/member/list.js +28 -21
  18. package/dist/esm/extensions/member/pages/member/list.js.map +1 -1
  19. package/dist/esm/index.js +1 -0
  20. package/dist/esm/index.js.map +1 -1
  21. package/dist/esm/util/form_validation.js +65 -0
  22. package/dist/esm/util/form_validation.js.map +1 -0
  23. package/dist/esm/util/index.js +17 -0
  24. package/dist/esm/util/index.js.map +1 -1
  25. package/dist/types/components/Card/CardFieldAddress.d.ts +2 -0
  26. package/dist/types/components/Card/CardFieldCheckbox.d.ts +2 -2
  27. package/dist/types/components/Chip.d.ts +1 -1
  28. package/dist/types/components/NavRail/NavRailItem.d.ts +2 -2
  29. package/dist/types/components/TableCard.d.ts +1 -1
  30. package/dist/types/extensions/catalog/types/article.d.ts +4 -2
  31. package/dist/types/extensions/member/pages/member/create.d.ts +3 -0
  32. package/dist/types/extensions/member/types/member.d.ts +1 -0
  33. package/dist/types/index.d.ts +1 -0
  34. package/dist/types/util/form_validation.d.ts +13 -0
  35. package/dist/types/util/index.d.ts +17 -0
  36. package/package.json +1 -1
  37. package/src/components/Card/CardFieldAddress.tsx +23 -5
  38. package/src/components/Card/CardFieldCheckbox.tsx +2 -2
  39. package/src/components/Card/index.tsx +11 -3
  40. package/src/extensions/catalog/components/ArticleCard.tsx +19 -1
  41. package/src/extensions/catalog/components/ArticleRow.tsx +6 -0
  42. package/src/extensions/catalog/pages/article/list.tsx +1 -0
  43. package/src/extensions/catalog/types/article.ts +4 -2
  44. package/src/extensions/member/components/MemberDetailCard.tsx +75 -4
  45. package/src/extensions/member/index.tsx +4 -0
  46. package/src/extensions/member/pages/member/create.tsx +547 -0
  47. package/src/extensions/member/pages/member/list.tsx +54 -36
  48. package/src/extensions/member/types/member.ts +1 -0
  49. package/src/index.ts +1 -0
  50. package/src/util/form_validation.ts +75 -0
  51. package/src/util/index.ts +18 -0
@@ -8,7 +8,7 @@ import { useCardContext } from "../../contexts/CardContext";
8
8
  import { useI18n } from "../../contexts/I18nContext";
9
9
  import { countryCodeFormatter } from "../../util/country_code_formatter";
10
10
  import LabeledValue from "../LabeledValue";
11
- export const CardFieldAddress = ({ label, value: defaultValue, required = false, isDisabled = false, size = "grow", isReadable = true, isEditable = true, helperText, }) => {
11
+ export const CardFieldAddress = ({ label, value: defaultValue, required = false, isDisabled = false, size = "grow", isReadable = true, isEditable = true, helperText, isCompany = false, fieldErrors = {}, }) => {
12
12
  const { isEditing } = useCardContext();
13
13
  const { t } = useI18n();
14
14
  const addressString = [
@@ -22,16 +22,16 @@ export const CardFieldAddress = ({ label, value: defaultValue, required = false,
22
22
  .filter(Boolean)
23
23
  .join("\n");
24
24
  return (React.createElement(Grid, { size: size }, isEditing && isEditable ? (React.createElement(Stack, { direction: "column", spacing: 2 },
25
- React.createElement(Typography, { sx: { fontWeight: 700 }, variant: "body1" }, t("Address")),
26
- React.createElement(TextField, { fullWidth: true, defaultValue: defaultValue?.street_address ?? "", disabled: isDisabled, label: t("Street Address"), name: "street_address", required: required, variant: "outlined" }),
27
- React.createElement(TextField, { fullWidth: true, defaultValue: defaultValue?.street_address2 ?? "", disabled: isDisabled, label: t("Street Address 2"), name: "street_address2", required: false, variant: "outlined" }),
28
- React.createElement(TextField, { fullWidth: true, defaultValue: defaultValue?.care_of ?? "", disabled: isDisabled, label: t("C/O"), name: "care_of", required: false, variant: "outlined" }),
25
+ React.createElement(Typography, { sx: { fontWeight: 700 }, variant: "body1" }, label ?? t("Address")),
26
+ React.createElement(TextField, { fullWidth: true, defaultValue: defaultValue?.street_address ?? "", disabled: isDisabled, error: Boolean(fieldErrors.street_address), helperText: fieldErrors.street_address, label: t("Street Address"), name: "street_address", required: required || isCompany, variant: "outlined" }),
27
+ React.createElement(TextField, { fullWidth: true, defaultValue: defaultValue?.street_address2 ?? "", disabled: isDisabled, error: Boolean(fieldErrors.street_address2), helperText: fieldErrors.street_address2, label: t("Street Address 2"), name: "street_address2", required: false, variant: "outlined" }),
28
+ React.createElement(TextField, { fullWidth: true, defaultValue: defaultValue?.care_of ?? "", disabled: isDisabled, error: Boolean(fieldErrors.care_of), helperText: fieldErrors.care_of, label: t("C/O"), name: "care_of", required: false, variant: "outlined" }),
29
29
  React.createElement(Stack, { direction: "row", spacing: 2 },
30
- React.createElement(TextField, { fullWidth: true, defaultValue: defaultValue?.postal_code ?? "", disabled: isDisabled, label: t("Postal Code"), name: "postal_code", required: false, variant: "outlined" }),
31
- React.createElement(TextField, { fullWidth: true, defaultValue: defaultValue?.city ?? "", disabled: isDisabled, label: t("City"), name: "city", required: false, variant: "outlined" })),
30
+ React.createElement(TextField, { fullWidth: true, defaultValue: defaultValue?.postal_code ?? "", disabled: isDisabled, error: Boolean(fieldErrors.postal_code), helperText: fieldErrors.postal_code, label: t("Postal Code"), name: "postal_code", required: isCompany, variant: "outlined" }),
31
+ React.createElement(TextField, { fullWidth: true, defaultValue: defaultValue?.city ?? "", disabled: isDisabled, error: Boolean(fieldErrors.city), helperText: fieldErrors.city, label: t("City"), name: "city", required: isCompany, variant: "outlined" })),
32
32
  React.createElement(Stack, { direction: "row", spacing: 2 },
33
- React.createElement(TextField, { fullWidth: true, defaultValue: defaultValue?.country_code ?? "", disabled: isDisabled, label: t("Country"), name: "country_code", required: false, variant: "outlined" }),
34
- React.createElement(TextField, { fullWidth: true, defaultValue: defaultValue?.region ?? "", disabled: isDisabled, label: t("Region"), name: "region", required: false, variant: "outlined" })),
33
+ React.createElement(TextField, { fullWidth: true, defaultValue: defaultValue?.country_code ?? "", disabled: isDisabled, error: Boolean(fieldErrors.country_code), helperText: fieldErrors.country_code, label: t("Country"), name: "country_code", required: isCompany, variant: "outlined" }),
34
+ React.createElement(TextField, { fullWidth: true, defaultValue: defaultValue?.region ?? "", disabled: isDisabled, error: Boolean(fieldErrors.region), helperText: fieldErrors.region, label: t("Region"), name: "region", required: false, variant: "outlined" })),
35
35
  helperText != null && React.createElement(FormHelperText, { sx: { mb: 1 } }, helperText))) : (isReadable && React.createElement(LabeledValue, { label: label, value: addressString }))));
36
36
  };
37
37
  export default CardFieldAddress;
@@ -1 +1 @@
1
- {"version":3,"file":"CardFieldAddress.js","sourceRoot":"","sources":["../../../../src/components/Card/CardFieldAddress.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CardFieldAddress.js","sourceRoot":"","sources":["../../../../src/components/Card/CardFieldAddress.tsx"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { Card as MuiCard, Grid2 as Grid, } from "@mui/material";
3
3
  import { useSnackbar } from "notistack";
4
4
  import { CardContext } from "../../contexts/CardContext";
5
5
  import { useI18n } from "../../contexts/I18nContext";
6
+ import { ValidationError } from "../../util/form_validation";
6
7
  export * from "./shared";
7
8
  /**
8
9
  * A card component that wraps a form with `onSubmit` and provides `cardContext`.
@@ -64,9 +65,16 @@ export function Card({ alwaysEditable = false, children, columns = 1, defaultEdi
64
65
  catch (error) {
65
66
  // TODO Report error to sentry
66
67
  console.error("[CARD] Error when submitting data", error);
67
- enqueueSnackbar(t("Failed to submit data. Contact support or try again later."), {
68
- variant: "error",
69
- });
68
+ if (error instanceof ValidationError) {
69
+ const message = error.formErrors.at(0) ??
70
+ t("Invalid form input. Please correct the highlighted fields.");
71
+ enqueueSnackbar(message, { variant: "error" });
72
+ }
73
+ else {
74
+ enqueueSnackbar(t("Failed to submit data. Contact support or try again later."), {
75
+ variant: "error",
76
+ });
77
+ }
70
78
  // Don't exit edit mode (and clear fields) on error. Give the user the chance to save/fix.
71
79
  setIsDisabled(false);
72
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Card/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Card/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE9D,OAAO,EACL,IAAI,IAAI,OAAO,EAEf,KAAK,IAAI,IAAI,GAEd,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,cAAc,UAAU,CAAC;AA2FzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,IAAI,CAAI,EACtB,cAAc,GAAG,KAAK,EACtB,QAAQ,EACR,OAAO,GAAG,CAAC,EACX,cAAc,GAAG,KAAK,EACtB,aAAa,GAAG,KAAK,EACrB,SAAS,GAAG,KAAK,EACjB,UAAU,EAAE,iBAAiB,GAAG,KAAK,EACrC,UAAU,EACV,MAAM,EAAE,aAAa,GAAG,KAAK,EAC7B,QAAQ,EACR,EAAE,EACF,IAAI,EACJ,SAAS,EACT,GAAG,KAAK,EACK;IACb,UAAU,KAAK,cAAc,CAAC;IAE9B,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;IACxB,MAAM,EAAE,eAAe,EAAE,GAAG,WAAW,EAAE,CAAC;IAE1C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,cAAc,IAAI,cAAc,IAAI,KAAK,CAAC,CAAC;IACtF,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAChE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;IAEpD,MAAM,YAAY,GAAG,WAAW,CAC9B,KAAK,EAAE,KAAuC,EAAE,EAAE;QAChD,KAAK,CAAC,cAAc,EAAE,CAAC;QAEvB,IAAI,QAAQ,IAAI,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACxE,IAAI,CAAC,SAAS,IAAI,CAAC,cAAc;YAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAE3F,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAE5C,aAAa,CAAC,IAAI,CAAC,CAAC;QAEpB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAW,EAAE,KAAK,CAAC,CAAC;YACnD,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;gBACpB,eAAe,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;YACnD,CAAC;YAED,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;YAED,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,8BAA8B;YAC9B,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;YAC1D,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;gBACrC,MAAM,OAAO,GACX,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;oBACtB,CAAC,CAAC,4DAA4D,CAAC,CAAC;gBAClE,eAAe,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACN,eAAe,CAAC,CAAC,CAAC,4DAA4D,CAAC,EAAE;oBAC/E,OAAO,EAAE,OAAO;iBACjB,CAAC,CAAC;YACL,CAAC;YAED,0FAA0F;YAC1F,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,EACD,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,EAAE,SAAS,EAAE,cAAc,CAAC,CAC1D,CAAC;IAEF,MAAM,aAAa,GAAG,OAAO,CAC3B,GAAG,EAAE,CAAC,CAAC;QACL,cAAc;QACd,OAAO;QACP,UAAU;QACV,aAAa;QACb,SAAS;QACT,UAAU;QACV,UAAU;QACV,SAAS;QACT,MAAM;QACN,aAAa;QACb,YAAY;QACZ,SAAS;KACV,CAAC,EACF,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC,CAC3F,CAAC;IAEF,OAAO,CACL,oBAAC,WAAW,CAAC,QAAQ,IAAC,KAAK,EAAE,aAAa;QACxC,oBAAC,IAAI,IAAC,IAAI,EAAE,IAAI,IAAI,EAAE,KAAM,SAAS;YACnC,oBAAC,OAAO,IACN,SAAS,EAAE,UAAU,IAAI,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAC5D,EAAE,EAAE;oBACF,KAAK,EAAE,MAAM;oBACb,SAAS,EAAE,CAAC;oBACZ,YAAY,EAAE,CAAC;oBACf,WAAW,EAAE,KAAK;oBAClB,WAAW,EAAE,OAAO;oBACpB,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO;oBAC7C,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK;oBAClD,QAAQ,EAAE,SAAS;oBACnB,GAAG,EAAE;iBACN,EACD,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,KAC3C,KAAK,IAER,QAAQ,CACD,CACL,CACc,CACxB,CAAC;AACJ,CAAC;AAED,eAAe,IAAI,CAAC"}
@@ -1,9 +1,12 @@
1
1
  import React, { useCallback } from "react";
2
2
  import { useParams } from "react-router-dom";
3
+ import CancelIcon from "@mui/icons-material/Cancel";
4
+ import CheckCircleIcon from "@mui/icons-material/CheckCircle";
3
5
  import Card from "../../../components/Card";
4
6
  import CardActions from "../../../components/Card/CardActions";
5
7
  import CardCancelButton from "../../../components/Card/CardCancelButton";
6
8
  import CardContent from "../../../components/Card/CardContent";
9
+ import CardFieldCheckbox from "../../../components/Card/CardFieldCheckbox";
7
10
  import CardFieldText from "../../../components/Card/CardFieldText";
8
11
  import CardHeader from "../../../components/Card/CardHeader";
9
12
  import CardRow from "../../../components/Card/CardRow";
@@ -27,6 +30,7 @@ export const ArticleCard = ({ article, create, onCreated, onUpdated, }) => {
27
30
  product_number: "",
28
31
  gtin: "",
29
32
  tax_code: "",
33
+ is_active: true,
30
34
  };
31
35
  const handleSave = useCallback(async (values) => {
32
36
  if (create != null) {
@@ -83,8 +87,11 @@ export const ArticleCard = ({ article, create, onCreated, onUpdated, }) => {
83
87
  (PHYSICAL_ITEM_TYPES.includes(article.item_type) || create) && (React.createElement(React.Fragment, null,
84
88
  React.createElement(CardRow, null,
85
89
  React.createElement(CardFieldText, { formName: "gtin", label: "GTIN", required: false, value: article.gtin })),
86
- React.createElement(CardRow, null,
87
- React.createElement(CardFieldText, { formName: "tax_code", label: "Tax code", required: false, value: article.tax_code }))))),
90
+ React.createElement(CardRow, { columns: 3 },
91
+ React.createElement(CardFieldText, { formName: "tax_code", label: "Tax code", required: false, size: 2, value: article.tax_code }),
92
+ !create && (React.createElement(React.Fragment, null,
93
+ React.createElement("input", { name: "is_active", type: "hidden", value: "false" }),
94
+ React.createElement(CardFieldCheckbox, { formName: "is_active", label: t("Active"), noValue: React.createElement(CancelIcon, { color: "error", fontSize: "small" }), value: article.is_active, yesValue: React.createElement(CheckCircleIcon, { color: "success", fontSize: "small" }) }))))))),
88
95
  React.createElement(CardActions, null,
89
96
  !create && React.createElement(CardCancelButton, null),
90
97
  React.createElement(CardSaveButton, { label: create ? "Create" : "Save" }))));
@@ -1 +1 @@
1
- {"version":3,"file":"ArticleCard.js","sourceRoot":"","sources":["../../../../../src/extensions/catalog/components/ArticleCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,IAAI,MAAM,0BAA0B,CAAC;AAC5C,OAAO,WAAW,MAAM,sCAAsC,CAAC;AAC/D,OAAO,gBAAgB,MAAM,2CAA2C,CAAC;AACzE,OAAO,WAAW,MAAM,sCAAsC,CAAC;AAC/D,OAAO,aAAa,MAAM,wCAAwC,CAAC;AACnE,OAAO,UAAU,MAAM,qCAAqC,CAAC;AAC7D,OAAO,OAAO,MAAM,kCAAkC,CAAC;AACvD,OAAO,cAAc,MAAM,yCAAyC,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAgB/C,MAAM,CAAC,MAAM,WAAW,GAA+B,CAAC,EACtD,OAAO,EACP,MAAM,EACN,SAAS,EACT,SAAS,GACV,EAAE,EAAE;IACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;IACxB,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;IAE3B,OAAO,KAAK;QACV,IAAI,EAAE,EAAE;QACR,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,EAAE;QACb,IAAI,EAAE,EAAE;QACR,YAAY,EAAE,EAAE;QAChB,cAAc,EAAE,EAAE;QAClB,IAAI,EAAE,EAAE;QACR,QAAQ,EAAE,EAAE;KACb,CAAC;IAEF,MAAM,UAAU,GAAG,WAAW,CAC5B,KAAK,EAAE,MAAe,EAAE,EAAE;QACxB,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC;YACxD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC9D,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;gBACjC,MAAM;gBACN,IAAI,EAAE,MAAM;aACb,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAChB,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC7C,SAAS,EAAE,CAAC,cAAc,CAAC,CAAC;gBAC5B,OAAO,CAAC,CAAC,+BAA+B,CAAC,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC;YACxD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC9D,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;gBACjC,MAAM;gBACN,IAAI,EAAE,MAAM;aACb,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAChB,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC7C,SAAS,EAAE,CAAC,cAAc,CAAC,CAAC;gBAC5B,OAAO,CAAC,CAAC,+BAA+B,CAAC,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;IACH,CAAC,EACD,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,CAC/C,CAAC;IAEF,OAAO,CACL,oBAAC,IAAI,IACH,OAAO,EAAE,CAAC,EACV,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,aAAa,CAAC,IAAI,EAAE,wBAAwB,CAAC,EACzD,QAAQ,EAAE,UAAU;QAEpB,oBAAC,UAAU,IAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,GAAI;QAEnC,oBAAC,WAAW;YACV,oBAAC,OAAO;gBACN,oBAAC,aAAa,IACZ,QAAQ,EAAC,WAAW,EACpB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAChB,QAAQ,EAAE,IAAI,EACd,KAAK,EAAE,OAAO,CAAC,SAAS,GACxB,CACM;YAEV,oBAAC,OAAO;gBACN,oBAAC,aAAa,IACZ,QAAQ,EAAC,MAAM,EACf,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAChB,QAAQ,EAAE,IAAI,EACd,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,OAAO,CAAC,IAAI,GACnB;gBACF,oBAAC,aAAa,IAAC,QAAQ,EAAC,SAAS,EAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,GAAI,CAClF;YACV,oBAAC,OAAO;gBACN,oBAAC,aAAa,IACZ,QAAQ,EAAC,MAAM,EACf,KAAK,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAC1B,QAAQ,EAAE,IAAI,EACd,KAAK,EAAE,OAAO,CAAC,IAAI,GACnB;gBACF,oBAAC,aAAa,IACZ,QAAQ,EAAC,gBAAgB,EACzB,KAAK,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAC1B,KAAK,EAAE,OAAO,CAAC,cAAc,GAC7B;gBACF,oBAAC,aAAa,IACZ,QAAQ,EAAC,cAAc,EACvB,KAAK,EAAE,CAAC,CAAC,cAAc,CAAC,EACxB,KAAK,EAAE,OAAO,CAAC,YAAY,GAC3B,CACM;YAET,CAAC,mBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,IAAI,CAC9D;gBACE,oBAAC,OAAO;oBACN,oBAAC,aAAa,IAAC,QAAQ,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,GAAI,CAC5E;gBACV,oBAAC,OAAO;oBACN,oBAAC,aAAa,IACZ,QAAQ,EAAC,UAAU,EACnB,KAAK,EAAC,UAAU,EAChB,QAAQ,EAAE,KAAK,EACf,KAAK,EAAE,OAAO,CAAC,QAAQ,GACvB,CACM,CACT,CACJ,CACW;QAEd,oBAAC,WAAW;YACT,CAAC,MAAM,IAAI,oBAAC,gBAAgB,OAAG;YAChC,oBAAC,cAAc,IAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAI,CACzC,CACT,CACR,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"ArticleCard.js","sourceRoot":"","sources":["../../../../../src/extensions/catalog/components/ArticleCard.tsx"],"names":[],"mappings":"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"}
@@ -1,9 +1,12 @@
1
1
  import React from "react";
2
+ import CancelIcon from "@mui/icons-material/Cancel";
3
+ import CheckCircleIcon from "@mui/icons-material/CheckCircle";
2
4
  import { TableCell } from "../../../components/Table/TableCell";
3
5
  import { NavigatingTableRow } from "../../../components/Table/TableRow";
4
6
  export const ArticleRow = ({ article }) => (React.createElement(NavigatingTableRow, { route: "catalog.article:detail", routeParams: { id: article.id } },
5
7
  React.createElement(TableCell, null, article.name),
6
8
  React.createElement(TableCell, null, article.variant),
7
9
  React.createElement(TableCell, null, article.item_type),
8
- React.createElement(TableCell, null, article.code)));
10
+ React.createElement(TableCell, null, article.code),
11
+ React.createElement(TableCell, { align: "right" }, article.is_active ? React.createElement(CheckCircleIcon, { color: "success" }) : React.createElement(CancelIcon, { color: "error" }))));
9
12
  //# sourceMappingURL=ArticleRow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ArticleRow.js","sourceRoot":"","sources":["../../../../../src/extensions/catalog/components/ArticleRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,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,wBAAwB,EAAC,WAAW,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE;IAChF,oBAAC,SAAS,QAAE,OAAO,CAAC,IAAI,CAAa;IACrC,oBAAC,SAAS,QAAE,OAAO,CAAC,OAAO,CAAa;IACxC,oBAAC,SAAS,QAAE,OAAO,CAAC,SAAS,CAAa;IAC1C,oBAAC,SAAS,QAAE,OAAO,CAAC,IAAI,CAAa,CAClB,CACtB,CAAC"}
1
+ {"version":3,"file":"ArticleRow.js","sourceRoot":"","sources":["../../../../../src/extensions/catalog/components/ArticleRow.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,wBAAwB,EAAC,WAAW,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE;IAChF,oBAAC,SAAS,QAAE,OAAO,CAAC,IAAI,CAAa;IACrC,oBAAC,SAAS,QAAE,OAAO,CAAC,OAAO,CAAa;IACxC,oBAAC,SAAS,QAAE,OAAO,CAAC,SAAS,CAAa;IAC1C,oBAAC,SAAS,QAAE,OAAO,CAAC,IAAI,CAAa;IACrC,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"}
@@ -45,7 +45,8 @@ const ArticleListPage = ({ data }) => {
45
45
  React.createElement(TableHeading, null, t("Name")),
46
46
  React.createElement(TableHeading, null, t("Variant")),
47
47
  React.createElement(TableHeading, null, t("Type")),
48
- React.createElement(TableHeading, null, t("Article Number"))),
48
+ React.createElement(TableHeading, null, t("Article Number")),
49
+ React.createElement(TableHeading, { align: "right" }, t("Active"))),
49
50
  React.createElement(TableBody, null, data?.results.map((article) => React.createElement(ArticleRow, { key: article.id, article: article })))))),
50
51
  hasPermission(user, "catalog.add_article") && (React.createElement(ActionBar, null,
51
52
  React.createElement(Button, { color: "primary", variant: "contained", onClick: () => navigate("catalog.article:create") }, t("Create article")))))));
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../../../src/extensions/catalog/pages/article/list.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../../../src/extensions/catalog/pages/article/list.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import React from "react";
1
+ import React, { useState } from "react";
2
2
  import { useParams } from "react-router-dom";
3
3
  import Card from "../../../components/Card";
4
4
  import CardActions from "../../../components/Card/CardActions";
@@ -12,6 +12,7 @@ import CardSaveButton from "../../../components/Card/CardSaveButton";
12
12
  import { useApi } from "../../../contexts/ApiContext";
13
13
  import { useI18n } from "../../../contexts/I18nContext";
14
14
  import { useUser } from "../../../contexts/UserContext";
15
+ import { getFormErrors, ValidationError } from "../../../util/form_validation";
15
16
  import { hasPermission } from "../../../util/has_permission";
16
17
  import { CustomerType } from "../types/member";
17
18
  export const MemberDetailCard = (props) => {
@@ -19,7 +20,9 @@ export const MemberDetailCard = (props) => {
19
20
  const api = useApi();
20
21
  const { user } = useUser();
21
22
  const { t } = useI18n();
23
+ const [fieldErrors, setFieldErrors] = useState({});
22
24
  const handleSave = async (values) => {
25
+ setFieldErrors({});
23
26
  const body = { ...values };
24
27
  const addressFields = {
25
28
  street_address: values.street_address,
@@ -30,11 +33,18 @@ export const MemberDetailCard = (props) => {
30
33
  region: values.region,
31
34
  care_of: values.care_of,
32
35
  };
36
+ // Convert all empty string fields to null
37
+ Object.entries(body).forEach(([key, value]) => {
38
+ if (value === "") {
39
+ // @ts-expect-error - we know that body has these properties
40
+ body[key] = null;
41
+ }
42
+ });
33
43
  if (Object.values(addressFields).some((value) => value)) {
34
44
  body.billing_address = {};
35
45
  Object.entries(addressFields).forEach(([key, value]) => {
36
46
  // @ts-expect-error - we know that body has a billing_address property
37
- if (value != null)
47
+ if (value != null && value !== "")
38
48
  body.billing_address[key] = value;
39
49
  });
40
50
  }
@@ -53,6 +63,11 @@ export const MemberDetailCard = (props) => {
53
63
  }
54
64
  else {
55
65
  console.error("[MEMBERSHIP_DETAIL_CARD]", response);
66
+ const errors = await getFormErrors(response);
67
+ if (errors) {
68
+ setFieldErrors(errors.fieldErrors);
69
+ throw new ValidationError(errors.formErrors[0] ?? t("Invalid form input. Please correct the highlighted fields."), errors);
70
+ }
56
71
  throw new Error("updating member fields.");
57
72
  }
58
73
  };
@@ -61,6 +76,7 @@ export const MemberDetailCard = (props) => {
61
76
  number: "",
62
77
  customer_type: "",
63
78
  company_name: "",
79
+ identification_number: "",
64
80
  given_name: "",
65
81
  family_name: "",
66
82
  email: "",
@@ -82,15 +98,26 @@ export const MemberDetailCard = (props) => {
82
98
  React.createElement(CardHeader, { title: t("Contact Details") }),
83
99
  React.createElement(CardContent, null,
84
100
  isCompany && (React.createElement(CardRow, null,
85
- React.createElement(CardFieldText, { formName: "company_name", label: t("Company name"), required: isCompany, size: 6, value: member.company_name }))),
101
+ React.createElement(CardFieldText, { error: Boolean(fieldErrors.company_name), formName: "company_name", helperText: fieldErrors.company_name, label: t("Company name"), required: isCompany, size: 3, value: member.company_name }),
102
+ React.createElement(CardFieldText, { disabled: !isCompany, error: Boolean(fieldErrors.identification_number), formName: "identification_number", helperText: fieldErrors.identification_number, label: t("Company ID"), required: isCompany, size: 3, value: member.identification_number ?? "" }))),
86
103
  React.createElement(CardRow, null,
87
- React.createElement(CardFieldText, { formName: "given_name", label: t("First Name"), required: !isCompany, size: 3, value: member.given_name }),
88
- React.createElement(CardFieldText, { formName: "family_name", label: t("Last Name"), required: !isCompany, size: 3, value: member.family_name })),
104
+ React.createElement(CardFieldText, { error: Boolean(fieldErrors.given_name), formName: "given_name", helperText: fieldErrors.given_name, label: t("First Name"), required: !isCompany, size: 3, value: member.given_name }),
105
+ React.createElement(CardFieldText, { error: Boolean(fieldErrors.family_name), formName: "family_name", helperText: fieldErrors.family_name, label: t("Last Name"), required: !isCompany, size: 3, value: member.family_name })),
89
106
  React.createElement(CardRow, null,
90
- React.createElement(CardFieldText, { formName: "phone", label: t("Phone"), required: true, size: 3, value: member.phone }),
91
- React.createElement(CardFieldText, { formName: "email", label: t("Email"), size: 3, value: member.email })),
107
+ React.createElement(CardFieldText, { error: Boolean(fieldErrors.phone), formName: "phone", helperText: fieldErrors.phone, label: t("Phone"), required: true, size: 3, value: member.phone }),
108
+ React.createElement(CardFieldText, { error: Boolean(fieldErrors.email), formName: "email", helperText: fieldErrors.email, label: t("Email"), size: 3, value: member.email })),
109
+ !isCompany && member.identification_number && (React.createElement(CardRow, null,
110
+ React.createElement(CardFieldText, { disabled: !isCompany, error: Boolean(fieldErrors.identification_number), formName: "identification_number", helperText: fieldErrors.identification_number, label: t("SSN"), size: 6, value: member.identification_number ?? "" }))),
92
111
  React.createElement(CardRow, null,
93
- React.createElement(CardFieldAddress, { formName: "billing_address", isEditable: hasPermission(user, "member.change_memberaddress"), label: t("Address"), required: true, value: member.billing_address }))),
112
+ React.createElement(CardFieldAddress, { fieldErrors: {
113
+ street_address: fieldErrors.street_address,
114
+ street_address2: fieldErrors.street_address2,
115
+ postal_code: fieldErrors.postal_code,
116
+ city: fieldErrors.city,
117
+ country_code: fieldErrors.country_code,
118
+ region: fieldErrors.region,
119
+ care_of: fieldErrors.care_of,
120
+ }, formName: "billing_address", isCompany: isCompany, isEditable: hasPermission(user, "member.change_memberaddress"), label: t("Address"), required: true, value: member.billing_address }))),
94
121
  React.createElement(CardActions, null,
95
122
  React.createElement(CardCancelButton, null),
96
123
  React.createElement(CardSaveButton, null))));
@@ -1 +1 @@
1
- {"version":3,"file":"MemberDetailCard.js","sourceRoot":"","sources":["../../../../../src/extensions/member/components/MemberDetailCard.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MemberDetailCard.js","sourceRoot":"","sources":["../../../../../src/extensions/member/components/MemberDetailCard.tsx"],"names":[],"mappings":"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"}
@@ -3,6 +3,10 @@ import ReceiptLongOutlinedIcon from "@mui/icons-material/ReceiptLongOutlined";
3
3
  import SubscriptionsOutlinedIcon from "@mui/icons-material/SubscriptionsOutlined";
4
4
  const routes = {
5
5
  member: {
6
+ create: {
7
+ page: async () => (await import("./pages/member/create")).default,
8
+ offline: true,
9
+ },
6
10
  detail: {
7
11
  page: async () => (await import("./pages/member/detail")).default,
8
12
  },
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/extensions/member/index.tsx"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,MAAM,oCAAoC,CAAC;AACpE,OAAO,uBAAuB,MAAM,yCAAyC,CAAC;AAC9E,OAAO,yBAAyB,MAAM,2CAA2C,CAAC;AAMlF,MAAM,MAAM,GAYR;IACF,MAAM,EAAE;QACN,MAAM,EAAE;YACN,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,OAAO;SAClE;QACD,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,EAAE;KAC1E;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAoB;IACrC,GAAG,EAAE,QAAQ;IACb,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,oBAAoB,EAAE;QACpB,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,oBAAoB;KACjC;CACO,CAAC;AAEX,MAAM,CAAC,MAAM,OAAO,GAAwC;IAC1D,gBAAgB,EAAE;QAChB,oCAAoC,EAAE;YACpC,KAAK,EAAE,eAAe;YACtB,IAAI,EAAE,yBAAyB;YAC/B,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC,OAAO;YAC5E,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,gCAAgC;SAC7C;KACF;IACD,mBAAmB,EAAE;QACnB,oCAAoC,EAAE;YACpC,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC,OAAO;YAC5E,OAAO,EAAE,QAAQ;YACjB,UAAU,EAAE,gCAAgC;SAC7C;KACF;IACD,SAAS,EAAE;QACT,gCAAgC,EAAE;YAChC,KAAK,EAAE,WAAW;YAClB,IAAI,EAAE,uBAAuB;YAC7B,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC,OAAO;YACxE,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,mBAAmB;SAChC;KACF;IACD,cAAc,EAAE;QACd,oCAAoC,EAAE;YACpC,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC,CAAC,OAAO;YAC7E,OAAO,EAAE,QAAQ;YACjB,UAAU,EAAE,uBAAuB;SACpC;KACF;CACO,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/extensions/member/index.tsx"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,MAAM,oCAAoC,CAAC;AACpE,OAAO,uBAAuB,MAAM,yCAAyC,CAAC;AAC9E,OAAO,yBAAyB,MAAM,2CAA2C,CAAC;AAMlF,MAAM,MAAM,GAYR;IACF,MAAM,EAAE;QACN,MAAM,EAAE;YACN,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,OAAO;YACjE,OAAO,EAAE,IAAI;SACd;QACD,MAAM,EAAE;YACN,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,OAAO;SAClE;QACD,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,EAAE;KAC1E;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAoB;IACrC,GAAG,EAAE,QAAQ;IACb,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,oBAAoB,EAAE;QACpB,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,oBAAoB;KACjC;CACO,CAAC;AAEX,MAAM,CAAC,MAAM,OAAO,GAAwC;IAC1D,gBAAgB,EAAE;QAChB,oCAAoC,EAAE;YACpC,KAAK,EAAE,eAAe;YACtB,IAAI,EAAE,yBAAyB;YAC/B,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC,OAAO;YAC5E,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,gCAAgC;SAC7C;KACF;IACD,mBAAmB,EAAE;QACnB,oCAAoC,EAAE;YACpC,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC,OAAO;YAC5E,OAAO,EAAE,QAAQ;YACjB,UAAU,EAAE,gCAAgC;SAC7C;KACF;IACD,SAAS,EAAE;QACT,gCAAgC,EAAE;YAChC,KAAK,EAAE,WAAW;YAClB,IAAI,EAAE,uBAAuB;YAC7B,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC,OAAO;YACxE,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,mBAAmB;SAChC;KACF;IACD,cAAc,EAAE;QACd,oCAAoC,EAAE;YACpC,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC,CAAC,OAAO;YAC7E,OAAO,EAAE,QAAQ;YACjB,UAAU,EAAE,uBAAuB;SACpC;KACF;CACO,CAAC"}
@@ -0,0 +1,250 @@
1
+ import React, { useCallback, useEffect, useMemo, useState } from "react";
2
+ import CardMembershipIcon from "@mui/icons-material/CardMembership";
3
+ import FormControl from "@mui/material/FormControl";
4
+ import FormControlLabel from "@mui/material/FormControlLabel";
5
+ import FormLabel from "@mui/material/FormLabel";
6
+ import Grid from "@mui/material/Grid2";
7
+ import MenuItem from "@mui/material/MenuItem";
8
+ import Radio from "@mui/material/Radio";
9
+ import RadioGroup from "@mui/material/RadioGroup";
10
+ import Switch from "@mui/material/Switch";
11
+ import TextField from "@mui/material/TextField";
12
+ import Typography from "@mui/material/Typography";
13
+ import { useSnackbar } from "notistack";
14
+ import Card from "../../../../components/Card";
15
+ import CardActions from "../../../../components/Card/CardActions";
16
+ import CardContent from "../../../../components/Card/CardContent";
17
+ import CardFieldText from "../../../../components/Card/CardFieldText";
18
+ import CardHeader from "../../../../components/Card/CardHeader";
19
+ import CardRow from "../../../../components/Card/CardRow";
20
+ import CardSaveButton from "../../../../components/Card/CardSaveButton";
21
+ import { Header } from "../../../../components/Header";
22
+ import { Page } from "../../../../components/Page";
23
+ import { Tab } from "../../../../components/Tab";
24
+ import { TabPanel } from "../../../../components/TabPanel";
25
+ import { TabPanels } from "../../../../components/TabPanels";
26
+ import { Tabs } from "../../../../components/Tabs";
27
+ import { TitleBar } from "../../../../components/TitleBar";
28
+ import Content, { LeftColumn } from "../../../../containers/Content";
29
+ import { useApi } from "../../../../contexts/ApiContext";
30
+ import { useI18n } from "../../../../contexts/I18nContext";
31
+ import { useRouter } from "../../../../contexts/RouterContext";
32
+ import { useUser } from "../../../../contexts/UserContext";
33
+ import { getFormErrors, ValidationError } from "../../../../util/form_validation";
34
+ import { hasPermission } from "../../../../util/has_permission";
35
+ import { CustomerType } from "../../types/member";
36
+ const MemberCreateCard = ({ onCreated }) => {
37
+ const { enqueueSnackbar } = useSnackbar();
38
+ const api = useApi();
39
+ const { t } = useI18n();
40
+ const { user } = useUser();
41
+ const [customerType, setCustomerType] = useState(CustomerType.PRIVATE);
42
+ const [sites, setSites] = useState([]);
43
+ const [siteCode, setSiteCode] = useState("");
44
+ const [countryOptions, setCountryOptions] = useState([]);
45
+ const [countryCode, setCountryCode] = useState("");
46
+ const [loadingSites, setLoadingSites] = useState(true);
47
+ const [includeBillingAddress, setIncludeBillingAddress] = useState(false);
48
+ const [fieldErrors, setFieldErrors] = useState({});
49
+ const canCreate = useMemo(() => hasPermission(user, "member.add_member"), [user]);
50
+ const regionDisplayNames = useMemo(() => {
51
+ if (typeof Intl === "undefined" || typeof Intl.DisplayNames === "undefined") {
52
+ return undefined;
53
+ }
54
+ try {
55
+ const locale = typeof navigator === "undefined" || !navigator.language ? "en" : navigator.language;
56
+ return new Intl.DisplayNames([locale], { type: "region" });
57
+ }
58
+ catch {
59
+ return undefined;
60
+ }
61
+ }, []);
62
+ const formatCountry = useCallback((code) => regionDisplayNames?.of(code) ?? code, [regionDisplayNames]);
63
+ useEffect(() => {
64
+ let isMounted = true;
65
+ const action = api.operations["sites.site:list"];
66
+ if (!action) {
67
+ setLoadingSites(false);
68
+ return undefined;
69
+ }
70
+ (async () => {
71
+ try {
72
+ const response = await action.call();
73
+ if (!response.ok) {
74
+ throw new Error("fetching site options");
75
+ }
76
+ const raw = await response.json();
77
+ const siteList = Array.isArray(raw) ? raw : (raw.__root__ ?? []);
78
+ const normalized = siteList.map((site) => ({
79
+ code: site.CODE,
80
+ countryCodes: site.COUNTRY_CODES ?? [],
81
+ }));
82
+ if (!isMounted) {
83
+ return;
84
+ }
85
+ setSites(normalized);
86
+ if (normalized.length > 0) {
87
+ const initialSite = normalized[0];
88
+ setSiteCode(initialSite.code);
89
+ setCountryOptions(initialSite.countryCodes);
90
+ setCountryCode(initialSite.countryCodes[0] ?? "");
91
+ }
92
+ }
93
+ catch (error) {
94
+ console.error("[MEMBER_CREATE_CARD_SITES]", error);
95
+ if (isMounted) {
96
+ setSites([]);
97
+ setSiteCode("");
98
+ setCountryOptions([]);
99
+ setCountryCode("");
100
+ }
101
+ }
102
+ finally {
103
+ if (isMounted) {
104
+ setLoadingSites(false);
105
+ }
106
+ }
107
+ })();
108
+ return () => {
109
+ isMounted = false;
110
+ };
111
+ }, [api]);
112
+ const handleSiteChange = useCallback((code) => {
113
+ setSiteCode(code);
114
+ const site = sites.find((s) => s.code === code);
115
+ const countries = site?.countryCodes ?? [];
116
+ setCountryOptions(countries);
117
+ setCountryCode(countries[0] ?? "");
118
+ }, [sites]);
119
+ const handleCountryChange = useCallback((code) => {
120
+ setCountryCode(code);
121
+ }, []);
122
+ useEffect(() => {
123
+ if (customerType === CustomerType.COMPANY) {
124
+ setIncludeBillingAddress(true);
125
+ }
126
+ else {
127
+ setIncludeBillingAddress(false);
128
+ }
129
+ }, [customerType]);
130
+ const handleSubmit = async (values) => {
131
+ setFieldErrors({});
132
+ const { street_address, street_address2, postal_code, city, country_code, region, care_of, ...rest } = values;
133
+ const isCompany = values.customer_type === CustomerType.COMPANY;
134
+ const includeAddress = isCompany || includeBillingAddress;
135
+ const body = {
136
+ ...Object.fromEntries(Object.entries(rest).filter(([, value]) => value != null && value !== "" && value !== undefined)),
137
+ customer_type: values.customer_type ?? CustomerType.PRIVATE,
138
+ };
139
+ const requiredAddressFields = includeAddress
140
+ ? {
141
+ street_address,
142
+ postal_code,
143
+ city,
144
+ country_code,
145
+ }
146
+ : {};
147
+ const hasRequiredAddressFields = Object.keys(requiredAddressFields).length === 0 ||
148
+ Object.values(requiredAddressFields).every(Boolean);
149
+ if (!hasRequiredAddressFields) {
150
+ const addressErrors = {};
151
+ for (const [key, value] of Object.entries(requiredAddressFields)) {
152
+ if (!value) {
153
+ addressErrors[key] = t("This field is required.");
154
+ }
155
+ }
156
+ setFieldErrors((prev) => ({ ...prev, ...addressErrors }));
157
+ enqueueSnackbar(isCompany
158
+ ? t("Provide street address, postal code, city and country for company members.")
159
+ : t("Complete address fields or disable billing address."), { variant: "error" });
160
+ return null;
161
+ }
162
+ if (includeAddress) {
163
+ body.billing_address = Object.fromEntries(Object.entries({
164
+ street_address,
165
+ street_address2,
166
+ postal_code,
167
+ city,
168
+ country_code,
169
+ region,
170
+ care_of,
171
+ }).filter(([, value]) => value != null && value !== ""));
172
+ }
173
+ const action = api.operations["member.member:create"];
174
+ if (!action) {
175
+ throw new Error('Invalid action "member.member:create".');
176
+ }
177
+ const response = await action.call({ body });
178
+ if (!response.ok) {
179
+ console.error("[MEMBER_CREATE_CARD]", response);
180
+ const errors = await getFormErrors(response);
181
+ if (errors) {
182
+ setFieldErrors(errors.fieldErrors);
183
+ throw new ValidationError(errors.formErrors[0] ?? t("Invalid form input. Please correct the highlighted fields."), errors);
184
+ }
185
+ }
186
+ const createdMember = await response.json();
187
+ onCreated(createdMember);
188
+ return t("Member created successfully.");
189
+ };
190
+ const isCompany = customerType === CustomerType.COMPANY;
191
+ return (React.createElement(Card, { columns: 6, defaultEditing: canCreate, isEditable: canCreate, onSubmit: handleSubmit },
192
+ React.createElement(CardHeader, { title: t("Create Member") }),
193
+ React.createElement(CardContent, null,
194
+ React.createElement(CardRow, null,
195
+ React.createElement(Grid, { size: 3 }, sites.length > 0 ? (React.createElement(TextField, { fullWidth: true, required: true, select: true, disabled: loadingSites, helperText: loadingSites ? t("Loading site codes…") : fieldErrors.site_code, label: t("Site code"), name: "site_code", value: siteCode, onChange: (event) => handleSiteChange(event.target.value) }, sites.map((site) => (React.createElement(MenuItem, { key: site.code, value: site.code }, site.code))))) : (React.createElement(TextField, { fullWidth: true, required: true, helperText: loadingSites ? t("Loading site codes…") : t("No sites available"), label: t("Site code"), name: "site_code", value: siteCode, onChange: (event) => setSiteCode(event.target.value) }))),
196
+ React.createElement(Grid, { size: 3 },
197
+ React.createElement(FormControl, { fullWidth: true, component: "fieldset" },
198
+ React.createElement(FormLabel, null, t("Customer type")),
199
+ React.createElement(RadioGroup, { row: true, name: "customer_type", value: customerType, onChange: (event) => setCustomerType(event.target.value) },
200
+ React.createElement(FormControlLabel, { control: React.createElement(Radio, { required: true }), label: t("Private"), value: CustomerType.PRIVATE }),
201
+ React.createElement(FormControlLabel, { control: React.createElement(Radio, null), label: t("Company"), value: CustomerType.COMPANY }))))),
202
+ React.createElement(CardRow, null,
203
+ React.createElement(CardFieldText, { formName: "identification_number", label: t("Identification number"), size: 6, value: "" })),
204
+ customerType === CustomerType.COMPANY && (React.createElement(CardRow, null,
205
+ React.createElement(CardFieldText, { required: true, error: Boolean(fieldErrors.company_name), formName: "company_name", helperText: fieldErrors.company_name, label: t("Company name"), size: 6, value: "" }))),
206
+ React.createElement(CardRow, null,
207
+ React.createElement(CardFieldText, { error: Boolean(fieldErrors.given_name), formName: "given_name", helperText: fieldErrors.given_name, label: t("First name"), required: customerType === CustomerType.PRIVATE, size: 3, value: "" }),
208
+ React.createElement(CardFieldText, { error: Boolean(fieldErrors.family_name), formName: "family_name", helperText: fieldErrors.family_name, label: t("Last name"), required: customerType === CustomerType.PRIVATE, size: 3, value: "" })),
209
+ React.createElement(CardRow, null,
210
+ React.createElement(CardFieldText, { required: true, error: Boolean(fieldErrors.email), formName: "email", helperText: fieldErrors.email, label: t("Email"), size: 3, value: "" }),
211
+ React.createElement(CardFieldText, { error: Boolean(fieldErrors.phone), formName: "phone", helperText: fieldErrors.phone, label: t("Phone"), size: 3, value: "" })),
212
+ React.createElement(CardRow, null,
213
+ React.createElement(Grid, { size: 6 },
214
+ React.createElement(Typography, { sx: { fontWeight: 700 }, variant: "body1" }, t("Billing address")))),
215
+ !isCompany && (React.createElement(CardRow, null,
216
+ React.createElement(FormControlLabel, { control: React.createElement(Switch, { checked: includeBillingAddress, onChange: (_, checked) => setIncludeBillingAddress(checked) }), label: t("Add billing address") }))),
217
+ (isCompany || includeBillingAddress) && (React.createElement(React.Fragment, null,
218
+ React.createElement(CardRow, null,
219
+ React.createElement(CardFieldText, { error: Boolean(fieldErrors.street_address), formName: "street_address", helperText: fieldErrors.street_address, label: t("Street Address"), required: isCompany || includeBillingAddress, size: 3, value: "" }),
220
+ React.createElement(CardFieldText, { formName: "street_address2", label: t("Street Address 2"), size: 3, value: "" })),
221
+ React.createElement(CardRow, null,
222
+ React.createElement(CardFieldText, { formName: "care_of", label: t("C/O"), size: 3, value: "" }),
223
+ React.createElement(CardFieldText, { error: Boolean(fieldErrors.postal_code), formName: "postal_code", helperText: fieldErrors.postal_code, label: t("Postal Code"), required: isCompany || includeBillingAddress, size: 3, value: "" })),
224
+ React.createElement(CardRow, null,
225
+ React.createElement(CardFieldText, { error: Boolean(fieldErrors.city), formName: "city", helperText: fieldErrors.city, label: t("City"), required: isCompany || includeBillingAddress, size: 3, value: "" }),
226
+ React.createElement(CardFieldText, { formName: "region", label: t("Region"), size: 3, value: "" })),
227
+ React.createElement(CardRow, null, countryOptions.length > 0 ? (React.createElement(Grid, { size: 3 },
228
+ React.createElement(TextField, { fullWidth: true, select: true, error: Boolean(fieldErrors.country_code), helperText: fieldErrors.country_code, label: t("Country"), name: "country_code", required: isCompany || includeBillingAddress, value: countryCode, onChange: (event) => handleCountryChange(event.target.value) }, countryOptions.map((code) => (React.createElement(MenuItem, { key: code, value: code }, formatCountry(code))))))) : (React.createElement(Grid, { size: 3 },
229
+ React.createElement(TextField, { fullWidth: true, error: Boolean(fieldErrors.country_code), helperText: loadingSites
230
+ ? t("Loading countries…")
231
+ : t("No countries configured for this site"), label: t("Country"), name: "country_code", required: isCompany || includeBillingAddress, value: countryCode, onChange: (event) => handleCountryChange(event.target.value) }))))))),
232
+ React.createElement(CardActions, null,
233
+ React.createElement(CardSaveButton, { label: t("Create") }))));
234
+ };
235
+ const MemberCreatePage = () => {
236
+ const { navigate } = useRouter();
237
+ const { t } = useI18n();
238
+ return (React.createElement(Page, null,
239
+ React.createElement(Header, { variant: "opaque" },
240
+ React.createElement(TitleBar, { title: t("Create Member") }),
241
+ React.createElement(Tabs, null,
242
+ React.createElement(Tab, { key: "default", icon: React.createElement(CardMembershipIcon, null), label: t("Member"), value: "default" }))),
243
+ React.createElement(TabPanels, null,
244
+ React.createElement(TabPanel, { key: "default", value: "default" },
245
+ React.createElement(Content, { layout: "fixedWidth" },
246
+ React.createElement(LeftColumn, null,
247
+ React.createElement(MemberCreateCard, { onCreated: (member) => navigate("member.member:detail", { params: { id: member.id } }) })))))));
248
+ };
249
+ export default MemberCreatePage;
250
+ //# sourceMappingURL=create.js.map