bananas-commerce-admin 0.15.7 → 0.15.8

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 (28) hide show
  1. package/dist/cjs/components/Card/CardFieldAutoComplete.js.map +1 -1
  2. package/dist/cjs/components/Card/CardFieldImage.js +50 -22
  3. package/dist/cjs/components/Card/CardFieldImage.js.map +1 -1
  4. package/dist/cjs/components/Card/CardFieldSwitch.js.map +1 -1
  5. package/dist/cjs/components/Card/shared.js +0 -20
  6. package/dist/cjs/components/Card/shared.js.map +1 -1
  7. package/dist/cjs/components/LabeledValue.js +3 -9
  8. package/dist/cjs/components/LabeledValue.js.map +1 -1
  9. package/dist/esm/components/Card/CardFieldAutoComplete.js.map +1 -1
  10. package/dist/esm/components/Card/CardFieldImage.js +49 -19
  11. package/dist/esm/components/Card/CardFieldImage.js.map +1 -1
  12. package/dist/esm/components/Card/CardFieldSwitch.js.map +1 -1
  13. package/dist/esm/components/Card/shared.js +1 -18
  14. package/dist/esm/components/Card/shared.js.map +1 -1
  15. package/dist/esm/components/LabeledValue.js +2 -5
  16. package/dist/esm/components/LabeledValue.js.map +1 -1
  17. package/dist/types/components/Card/CardFieldAutoComplete.d.ts +2 -2
  18. package/dist/types/components/Card/CardFieldImage.d.ts +6 -1
  19. package/dist/types/components/Card/CardFieldSelect.d.ts +3 -3
  20. package/dist/types/components/Card/CardFieldSwitch.d.ts +0 -1
  21. package/dist/types/components/Card/shared.d.ts +2 -17
  22. package/package.json +1 -1
  23. package/src/components/Card/CardFieldAutoComplete.tsx +5 -7
  24. package/src/components/Card/CardFieldImage.tsx +132 -35
  25. package/src/components/Card/CardFieldSelect.tsx +3 -3
  26. package/src/components/Card/CardFieldSwitch.tsx +0 -1
  27. package/src/components/Card/shared.ts +2 -24
  28. package/src/components/LabeledValue.tsx +5 -6
@@ -1 +1 @@
1
- {"version":3,"file":"CardFieldAutoComplete.js","sourceRoot":"","sources":["../../../../src/components/Card/CardFieldAutoComplete.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAwC;AAExC,8EAAsD;AACtD,kFAA0D;AAC1D,gEAAuC;AACvC,gEAAwC;AACxC,wEAAgD;AAEhD,4DAA4D;AAC5D,mEAA2C;AAWpC,MAAM,qBAAqB,GAAuD,CAAC,EACxF,QAAQ,GAAG,GAAG,EACd,iBAAiB,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,EAC5F,QAAQ,EACR,UAAU,EACV,UAAU,GAAG,IAAI,EACjB,UAAU,GAAG,IAAI,EACjB,KAAK,EACL,OAAO,EACP,IAAI,GAAG,MAAM,EACb,KAAK,EAAE,YAAY,EACnB,GAAG,KAAK,EACT,EAAE,EAAE;IACH,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAA,4BAAc,GAAE,CAAC;IAElD,oCAAoC;IACpC,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,IAAA,gBAAQ,EAAsB,YAAY,IAAI,EAAE,CAAC,CAAC;IAEhG,OAAO,CACL,8BAAC,eAAI,IAAC,IAAI,EAAE,IAAI,IACb,SAAS,IAAI,UAAU,CAAC,CAAC,CAAC,CACzB,8BAAC,eAAK,IAAC,UAAU,EAAC,QAAQ,EAAC,cAAc,EAAC,eAAe;QACvD,8BAAC,sBAAY,IACX,oBAAoB,EAAE,CAAC,MAAyB,EAAE,KAAwB,EAAE,EAAE,CAC5E,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,EAExB,QAAQ,EAAE,IAAI,EACd,OAAO,EAAE,OAAO,IAAI,EAAE,EACtB,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,8BAAC,mBAAS,OAAK,KAAK,EAAE,KAAK,EAAE,KAAK,GAAI,EAC9D,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EACrB,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAA4B,CAAC,KACpE,KAAK,GACT;QAGD,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC/B,yCAAO,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAE,MAAM,CAAC,EAAE,GAAI,CAC1E,CAAC;QAED,UAAU,IAAI,IAAI,IAAI,8BAAC,wBAAc,QAAE,UAAU,CAAkB,CAC9D,CACT,CAAC,CAAC,CAAC,CACF,UAAU,IAAI,CACZ,8BAAC,sBAAY,IACX,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,KAAK,EACZ,KAAK,EACH,iBAAiB,CAAC,YAAY,CAAC;YAC7B,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAEvD,CACH,CACF,CACI,CACR,CAAC;AACJ,CAAC,CAAC;AAzDW,QAAA,qBAAqB,yBAyDhC;AAEF,kBAAe,6BAAqB,CAAC"}
1
+ {"version":3,"file":"CardFieldAutoComplete.js","sourceRoot":"","sources":["../../../../src/components/Card/CardFieldAutoComplete.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAwC;AAExC,8EAAsD;AACtD,kFAA0D;AAC1D,gEAAuC;AACvC,gEAAwC;AACxC,wEAAgD;AAEhD,4DAA4D;AAC5D,mEAA2C;AAWpC,MAAM,qBAAqB,GAAuD,CAAC,EACxF,QAAQ,GAAG,GAAG,EACd,iBAAiB,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,EAC5F,QAAQ,EACR,UAAU,EACV,UAAU,GAAG,IAAI,EACjB,UAAU,GAAG,IAAI,EACjB,KAAK,EACL,OAAO,EACP,IAAI,GAAG,MAAM,EACb,KAAK,EAAE,YAAY,EACnB,GAAG,KAAK,EACT,EAAE,EAAE;IACH,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAA,4BAAc,GAAE,CAAC;IAElD,oCAAoC;IACpC,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,IAAA,gBAAQ,EAAe,YAAY,IAAI,EAAE,CAAC,CAAC;IAEzF,OAAO,CACL,8BAAC,eAAI,IAAC,IAAI,EAAE,IAAI,IACb,SAAS,IAAI,UAAU,CAAC,CAAC,CAAC,CACzB,8BAAC,eAAK,IAAC,UAAU,EAAC,QAAQ,EAAC,cAAc,EAAC,eAAe;QACvD,8BAAC,sBAAY,IACX,oBAAoB,EAAE,CAAC,MAAkB,EAAE,KAAiB,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,EACvF,QAAQ,EAAE,IAAI,EACd,OAAO,EAAE,OAAO,IAAI,EAAE,EACtB,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,8BAAC,mBAAS,OAAK,KAAK,EAAE,KAAK,EAAE,KAAK,GAAI,EAC9D,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EACrB,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAqB,CAAC,KAC7D,KAAK,GACT;QAGD,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC/B,yCAAO,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAE,MAAM,CAAC,EAAE,GAAI,CAC1E,CAAC;QAED,UAAU,IAAI,IAAI,IAAI,8BAAC,wBAAc,QAAE,UAAU,CAAkB,CAC9D,CACT,CAAC,CAAC,CAAC,CACF,UAAU,IAAI,CACZ,8BAAC,sBAAY,IACX,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,KAAK,EACZ,KAAK,EACH,iBAAiB,CAAC,YAAY,CAAC;YAC7B,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAEvD,CACH,CACF,CACI,CACR,CAAC;AACJ,CAAC,CAAC;AAvDW,QAAA,qBAAqB,yBAuDhC;AAEF,kBAAe,6BAAqB,CAAC"}
@@ -22,21 +22,45 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
25
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.CardFieldImage = void 0;
26
+ exports.CardFieldImage = exports.ImageDisplay = void 0;
30
27
  const react_1 = __importStar(require("react"));
31
- const Box_1 = __importDefault(require("@mui/material/Box"));
32
- const FormHelperText_1 = __importDefault(require("@mui/material/FormHelperText"));
33
- const Grid2_1 = __importDefault(require("@mui/material/Grid2"));
34
- const Typography_1 = __importDefault(require("@mui/material/Typography"));
28
+ const material_1 = require("@mui/material");
35
29
  const CardContext_1 = require("../../contexts/CardContext");
36
30
  const I18nContext_1 = require("../../contexts/I18nContext");
37
- const shared_1 = require("./shared");
38
- const CardFieldImage = ({ label, formName, value: defaultValue, required = false, isDisabled = false, isCompact = false, size = "grow", isReadable = true, helperText, }) => {
39
- const { isEditing } = (0, CardContext_1.useCardContext)();
31
+ const ImageDisplay = ({ src, alt }) => {
32
+ const [openLightbox, setOpenLightbox] = (0, react_1.useState)(false);
33
+ const Transition = (0, react_1.forwardRef)(function Transition(props, ref) {
34
+ return react_1.default.createElement(material_1.Zoom, { ref: ref, in: openLightbox, ...props });
35
+ });
36
+ return (react_1.default.createElement(react_1.default.Fragment, null,
37
+ react_1.default.createElement(material_1.ButtonBase, { disableRipple: true, sx: { alignSelf: "baseline" }, onClick: () => setOpenLightbox((open) => !open) },
38
+ react_1.default.createElement(material_1.Box, { alt: alt, component: "img", src: src, sx: {
39
+ display: "block",
40
+ width: "auto",
41
+ height: "100%",
42
+ maxHeight: "200px",
43
+ maxWidth: "200px",
44
+ objectFit: "cover",
45
+ borderRadius: 2,
46
+ borderColor: "divider",
47
+ my: 2,
48
+ transition: "transform 150ms ease-out",
49
+ "&:hover": { transform: "scale(1.05)" },
50
+ } })),
51
+ openLightbox && (react_1.default.createElement(material_1.Dialog, { fullWidth: true, maxWidth: "lg", open: openLightbox, PaperProps: {
52
+ sx: { backgroundColor: "transparent", boxShadow: "none" },
53
+ }, TransitionComponent: Transition, onClose: () => setOpenLightbox(false) },
54
+ react_1.default.createElement(material_1.Box, { alt: alt, component: "img", src: src, sx: {
55
+ width: "100%",
56
+ height: "auto",
57
+ maxHeight: "90vh",
58
+ objectFit: "contain",
59
+ }, onClick: () => setOpenLightbox(false) })))));
60
+ };
61
+ exports.ImageDisplay = ImageDisplay;
62
+ const CardFieldImage = ({ fallback, label, formName, value: defaultValue, required = false, isDisabled = false, size = "grow", isReadable = true, helperText, }) => {
63
+ const { isCompact, isEditing } = (0, CardContext_1.useCardContext)();
40
64
  const { t } = (0, I18nContext_1.useI18n)();
41
65
  const [selectedFile, setSelectedFile] = (0, react_1.useState)();
42
66
  const [preview, setPreview] = (0, react_1.useState)();
@@ -49,22 +73,26 @@ const CardFieldImage = ({ label, formName, value: defaultValue, required = false
49
73
  setPreview(objectUrl);
50
74
  return () => URL.revokeObjectURL(objectUrl);
51
75
  }, [selectedFile]);
52
- const handleFileChange = (e) => {
53
- if (e.target.files && e.target.files.length > 0) {
54
- setSelectedFile(e.target.files[0]);
76
+ const handleFileChange = (0, react_1.useCallback)(({ target: { files } }) => {
77
+ if (!files || files.length === 0) {
78
+ setSelectedFile(undefined);
79
+ return;
80
+ }
81
+ if (files.length === 1) {
82
+ setSelectedFile(files[0]);
55
83
  }
56
84
  else {
85
+ console.error(t("Multiple files selected, this is not supported."));
57
86
  setSelectedFile(undefined);
58
87
  }
59
- };
60
- return (react_1.default.createElement(Grid2_1.default, { size: size }, isEditing ? (react_1.default.createElement(Box_1.default, { sx: (0, shared_1.readFieldCSS)(isCompact) },
61
- react_1.default.createElement(Typography_1.default, { sx: { color: "grey.600" }, variant: "subtitle2" }, label),
88
+ }, [setSelectedFile, t]);
89
+ return (react_1.default.createElement(material_1.Grid2, { size: size }, isEditing ? (react_1.default.createElement(material_1.Stack, { component: "figure", direction: isCompact ? "row" : "column", justifyContent: isCompact ? "space-between" : "flex-start", spacing: 0.5, sx: { m: "unset !important" } },
90
+ react_1.default.createElement(material_1.Typography, { color: "grey.600", component: "figcaption", variant: "subtitle2" }, label),
62
91
  react_1.default.createElement("input", { accept: "image/*", disabled: isDisabled, name: formName, required: required, type: "file", onChange: handleFileChange }),
63
- preview && (react_1.default.createElement(Box_1.default, { sx: { "> img": shared_1.imgCSS } },
64
- react_1.default.createElement("img", { alt: t("preview"), src: preview }))),
65
- helperText != null && react_1.default.createElement(FormHelperText_1.default, null, helperText))) : (isReadable && (react_1.default.createElement(Box_1.default, { sx: { ...(0, shared_1.readFieldCSS)(isCompact) } },
66
- react_1.default.createElement(Typography_1.default, { sx: { color: "grey.600" }, variant: "subtitle2" }, label),
67
- react_1.default.createElement(Box_1.default, { sx: { "> img": shared_1.imgCSS } }, typeof defaultValue === "string" ? (react_1.default.createElement("img", { alt: label, src: defaultValue })) : (react_1.default.createElement(Typography_1.default, null, t("No image available")))))))));
92
+ preview && react_1.default.createElement(exports.ImageDisplay, { alt: t("preview"), src: preview }),
93
+ helperText != null && react_1.default.createElement(material_1.FormHelperText, null, helperText))) : (isReadable && (react_1.default.createElement(material_1.Stack, { component: "figure", direction: isCompact ? "row" : "column", justifyContent: isCompact ? "space-between" : "flex-start", spacing: 0.5, sx: { m: "unset !important" } },
94
+ react_1.default.createElement(material_1.Typography, { color: "grey.600", component: "figcaption", fontWeight: 600, variant: "subtitle2" }, label),
95
+ typeof defaultValue === "string" ? (react_1.default.createElement(exports.ImageDisplay, { alt: label, src: defaultValue })) : (react_1.default.createElement(material_1.Typography, null, fallback ?? t("No image available"))))))));
68
96
  };
69
97
  exports.CardFieldImage = CardFieldImage;
70
98
  exports.default = exports.CardFieldImage;
@@ -1 +1 @@
1
- {"version":3,"file":"CardFieldImage.js","sourceRoot":"","sources":["../../../../src/components/Card/CardFieldImage.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CardFieldImage.js","sourceRoot":"","sources":["../../../../src/components/Card/CardFieldImage.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CardFieldSwitch.js","sourceRoot":"","sources":["../../../../src/components/Card/CardFieldSwitch.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,kFAA0D;AAC1D,gEAAuC;AACvC,gEAAwC;AACxC,kEAA0C;AAC1C,0EAAkD;AAElD,4DAA4D;AAC5D,4DAAqD;AACrD,mEAA2C;AAmBpC,MAAM,eAAe,GAAiD,CAAC,EAC5E,QAAQ,EACR,UAAU,EACV,UAAU,GAAG,KAAK,EAClB,UAAU,GAAG,IAAI,EACjB,UAAU,GAAG,IAAI,EACjB,KAAK,EACL,QAAQ,EACR,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,IAAI,GAAG,MAAM,EACb,KAAK,EAAE,YAAY,GACpB,EAAE,EAAE;IACH,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAA,4BAAc,GAAE,CAAC;IAClD,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,qBAAO,GAAE,CAAC;IAExB,OAAO,CACL,8BAAC,eAAI,IAAC,IAAI,EAAE,IAAI,IACb,SAAS,IAAI,UAAU,CAAC,CAAC,CAAC,CACzB,8BAAC,eAAK,IAAC,SAAS,EAAC,QAAQ,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,QAAQ;QAC7D,8BAAC,eAAK,IACJ,UAAU,EAAC,QAAQ,EACnB,SAAS,EAAE,KAAK,EAChB,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO;YAErD,8BAAC,oBAAU,IAAC,OAAO,EAAC,WAAW,IAAE,KAAK,CAAc;YAEpD,8BAAC,gBAAM,IACL,cAAc,EAAE,OAAO,CAAC,YAAY,CAAC,EACrC,QAAQ,EAAE,UAAU,EACpB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,GACpC,CACI;QAEP,UAAU,IAAI,IAAI,IAAI,8BAAC,wBAAc,IAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAG,UAAU,CAAkB,CAC7E,CACT,CAAC,CAAC,CAAC,CACF,UAAU,IAAI,CACZ,8BAAC,sBAAY,IACX,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GACnE,CACH,CACF,CACI,CACR,CAAC;AACJ,CAAC,CAAC;AAjDW,QAAA,eAAe,mBAiD1B;AAEF,kBAAe,uBAAe,CAAC"}
1
+ {"version":3,"file":"CardFieldSwitch.js","sourceRoot":"","sources":["../../../../src/components/Card/CardFieldSwitch.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,kFAA0D;AAC1D,gEAAuC;AACvC,gEAAwC;AACxC,kEAA0C;AAC1C,0EAAkD;AAElD,4DAA4D;AAC5D,4DAAqD;AACrD,mEAA2C;AAkBpC,MAAM,eAAe,GAAiD,CAAC,EAC5E,QAAQ,EACR,UAAU,EACV,UAAU,GAAG,KAAK,EAClB,UAAU,GAAG,IAAI,EACjB,UAAU,GAAG,IAAI,EACjB,KAAK,EACL,QAAQ,EACR,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,IAAI,GAAG,MAAM,EACb,KAAK,EAAE,YAAY,GACpB,EAAE,EAAE;IACH,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAA,4BAAc,GAAE,CAAC;IAClD,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,qBAAO,GAAE,CAAC;IAExB,OAAO,CACL,8BAAC,eAAI,IAAC,IAAI,EAAE,IAAI,IACb,SAAS,IAAI,UAAU,CAAC,CAAC,CAAC,CACzB,8BAAC,eAAK,IAAC,SAAS,EAAC,QAAQ,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,QAAQ;QAC7D,8BAAC,eAAK,IACJ,UAAU,EAAC,QAAQ,EACnB,SAAS,EAAE,KAAK,EAChB,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO;YAErD,8BAAC,oBAAU,IAAC,OAAO,EAAC,WAAW,IAAE,KAAK,CAAc;YAEpD,8BAAC,gBAAM,IACL,cAAc,EAAE,OAAO,CAAC,YAAY,CAAC,EACrC,QAAQ,EAAE,UAAU,EACpB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,GACpC,CACI;QAEP,UAAU,IAAI,IAAI,IAAI,8BAAC,wBAAc,IAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAG,UAAU,CAAkB,CAC7E,CACT,CAAC,CAAC,CAAC,CACF,UAAU,IAAI,CACZ,8BAAC,sBAAY,IACX,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GACnE,CACH,CACF,CACI,CACR,CAAC;AACJ,CAAC,CAAC;AAjDW,QAAA,eAAe,mBAiD1B;AAEF,kBAAe,uBAAe,CAAC"}
@@ -1,23 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.imgCSS = exports.readFieldCSS = void 0;
4
- const readFieldCSS = (isCompact) => ({
5
- display: "flex",
6
- gap: 0.5,
7
- flexDirection: isCompact ? "row" : "column",
8
- justifyContent: isCompact ? "space-between" : "flex-start",
9
- });
10
- exports.readFieldCSS = readFieldCSS;
11
- exports.imgCSS = {
12
- width: "auto",
13
- height: "100%",
14
- maxHeight: "200px",
15
- maxWidth: "200px",
16
- objectFit: "cover",
17
- borderRadius: 1,
18
- border: "3px solid",
19
- borderColor: "divider",
20
- my: 2,
21
- boxShadow: 1,
22
- };
23
3
  //# sourceMappingURL=shared.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/components/Card/shared.ts"],"names":[],"mappings":";;;AAQO,MAAM,YAAY,GAAG,CAAC,SAAkB,EAAW,EAAE,CAAC,CAAC;IAC5D,OAAO,EAAE,MAAM;IACf,GAAG,EAAE,GAAG;IACR,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ;IAC3C,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY;CAC3D,CAAC,CAAC;AALU,QAAA,YAAY,gBAKtB;AAEU,QAAA,MAAM,GAAG;IACpB,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;IACd,SAAS,EAAE,OAAO;IAClB,QAAQ,EAAE,OAAO;IACjB,SAAS,EAAE,OAAO;IAClB,YAAY,EAAE,CAAC;IACf,MAAM,EAAE,WAAW;IACnB,WAAW,EAAE,SAAS;IACtB,EAAE,EAAE,CAAC;IACL,SAAS,EAAE,CAAC;CACb,CAAC"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/components/Card/shared.ts"],"names":[],"mappings":""}
@@ -22,19 +22,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
25
  Object.defineProperty(exports, "__esModule", { value: true });
29
26
  exports.LabeledValue = void 0;
30
27
  const react_1 = __importStar(require("react"));
31
28
  const material_1 = require("@mui/material");
32
- const Stack_1 = __importDefault(require("@mui/material/Stack"));
33
- const Typography_1 = __importDefault(require("@mui/material/Typography"));
34
- const shared_1 = require("./Card/shared");
35
- const LabeledValue = ({ label, value, compact, multiline }) => (react_1.default.createElement(Stack_1.default, { sx: (0, shared_1.readFieldCSS)(Boolean(compact)) },
36
- react_1.default.createElement(Typography_1.default, { color: "grey.600", fontWeight: 600, variant: "subtitle2" }, label),
37
- typeof value === "string" ? (react_1.default.createElement(Typography_1.default, { sx: {
29
+ const LabeledValue = ({ label, value, compact, multiline }) => (react_1.default.createElement(material_1.Stack, { direction: compact ? "row" : "column", justifyContent: compact ? "space-between" : "flex-start" },
30
+ react_1.default.createElement(material_1.Typography, { color: "grey.600", fontWeight: 600, variant: "subtitle2" }, label),
31
+ typeof value === "string" ? (react_1.default.createElement(material_1.Typography, { sx: {
38
32
  whiteSpace: multiline ? "break-spaces" : "pre-wrap",
39
33
  wordBreak: "break-all",
40
34
  }, variant: compact ? "body2" : "body1" }, value)) : (react_1.default.createElement(material_1.Box, null, value))));
@@ -1 +1 @@
1
- {"version":3,"file":"LabeledValue.js","sourceRoot":"","sources":["../../../src/components/LabeledValue.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAoC;AAEpC,4CAAoC;AACpC,gEAAwC;AACxC,0EAAkD;AAElD,0CAA6C;AAStC,MAAM,YAAY,GAAgC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CACjG,8BAAC,eAAK,IAAC,EAAE,EAAE,IAAA,qBAAY,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,8BAAC,oBAAU,IAAC,KAAK,EAAC,UAAU,EAAC,UAAU,EAAE,GAAG,EAAE,OAAO,EAAC,WAAW,IAC9D,KAAK,CACK;IAEZ,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAC3B,8BAAC,oBAAU,IACT,EAAE,EAAE;YACF,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU;YACnD,SAAS,EAAE,WAAW;SACvB,EACD,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,IAEnC,KAAK,CACK,CACd,CAAC,CAAC,CAAC,CACF,8BAAC,cAAG,QAAE,KAAK,CAAO,CACnB,CACK,CACT,CAAC;AApBW,QAAA,YAAY,gBAoBvB;AAEF,kBAAe,IAAA,YAAI,EAAC,oBAAY,CAAC,CAAC"}
1
+ {"version":3,"file":"LabeledValue.js","sourceRoot":"","sources":["../../../src/components/LabeledValue.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAoC;AAEpC,4CAAuD;AAShD,MAAM,YAAY,GAAgC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CACjG,8BAAC,gBAAK,IACJ,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EACrC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY;IAExD,8BAAC,qBAAU,IAAC,KAAK,EAAC,UAAU,EAAC,UAAU,EAAE,GAAG,EAAE,OAAO,EAAC,WAAW,IAC9D,KAAK,CACK;IAEZ,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAC3B,8BAAC,qBAAU,IACT,EAAE,EAAE;YACF,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU;YACnD,SAAS,EAAE,WAAW;SACvB,EACD,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,IAEnC,KAAK,CACK,CACd,CAAC,CAAC,CAAC,CACF,8BAAC,cAAG,QAAE,KAAK,CAAO,CACnB,CACK,CACT,CAAC;AAvBW,QAAA,YAAY,gBAuBvB;AAEF,kBAAe,IAAA,YAAI,EAAC,oBAAY,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"CardFieldAutoComplete.js","sourceRoot":"","sources":["../../../../src/components/Card/CardFieldAutoComplete.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAExC,OAAO,YAAY,MAAM,4BAA4B,CAAC;AACtD,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAC1D,OAAO,IAAI,MAAM,qBAAqB,CAAC;AACvC,OAAO,KAAK,MAAM,qBAAqB,CAAC;AACxC,OAAO,SAAS,MAAM,yBAAyB,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAW3C,MAAM,CAAC,MAAM,qBAAqB,GAAuD,CAAC,EACxF,QAAQ,GAAG,GAAG,EACd,iBAAiB,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,EAC5F,QAAQ,EACR,UAAU,EACV,UAAU,GAAG,IAAI,EACjB,UAAU,GAAG,IAAI,EACjB,KAAK,EACL,OAAO,EACP,IAAI,GAAG,MAAM,EACb,KAAK,EAAE,YAAY,EACnB,GAAG,KAAK,EACT,EAAE,EAAE;IACH,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,cAAc,EAAE,CAAC;IAElD,oCAAoC;IACpC,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAsB,YAAY,IAAI,EAAE,CAAC,CAAC;IAEhG,OAAO,CACL,oBAAC,IAAI,IAAC,IAAI,EAAE,IAAI,IACb,SAAS,IAAI,UAAU,CAAC,CAAC,CAAC,CACzB,oBAAC,KAAK,IAAC,UAAU,EAAC,QAAQ,EAAC,cAAc,EAAC,eAAe;QACvD,oBAAC,YAAY,IACX,oBAAoB,EAAE,CAAC,MAAyB,EAAE,KAAwB,EAAE,EAAE,CAC5E,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,EAExB,QAAQ,EAAE,IAAI,EACd,OAAO,EAAE,OAAO,IAAI,EAAE,EACtB,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,oBAAC,SAAS,OAAK,KAAK,EAAE,KAAK,EAAE,KAAK,GAAI,EAC9D,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EACrB,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAA4B,CAAC,KACpE,KAAK,GACT;QAGD,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC/B,+BAAO,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAE,MAAM,CAAC,EAAE,GAAI,CAC1E,CAAC;QAED,UAAU,IAAI,IAAI,IAAI,oBAAC,cAAc,QAAE,UAAU,CAAkB,CAC9D,CACT,CAAC,CAAC,CAAC,CACF,UAAU,IAAI,CACZ,oBAAC,YAAY,IACX,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,KAAK,EACZ,KAAK,EACH,iBAAiB,CAAC,YAAY,CAAC;YAC7B,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAEvD,CACH,CACF,CACI,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"CardFieldAutoComplete.js","sourceRoot":"","sources":["../../../../src/components/Card/CardFieldAutoComplete.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAExC,OAAO,YAAY,MAAM,4BAA4B,CAAC;AACtD,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAC1D,OAAO,IAAI,MAAM,qBAAqB,CAAC;AACvC,OAAO,KAAK,MAAM,qBAAqB,CAAC;AACxC,OAAO,SAAS,MAAM,yBAAyB,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAW3C,MAAM,CAAC,MAAM,qBAAqB,GAAuD,CAAC,EACxF,QAAQ,GAAG,GAAG,EACd,iBAAiB,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,EAC5F,QAAQ,EACR,UAAU,EACV,UAAU,GAAG,IAAI,EACjB,UAAU,GAAG,IAAI,EACjB,KAAK,EACL,OAAO,EACP,IAAI,GAAG,MAAM,EACb,KAAK,EAAE,YAAY,EACnB,GAAG,KAAK,EACT,EAAE,EAAE;IACH,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,cAAc,EAAE,CAAC;IAElD,oCAAoC;IACpC,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAe,YAAY,IAAI,EAAE,CAAC,CAAC;IAEzF,OAAO,CACL,oBAAC,IAAI,IAAC,IAAI,EAAE,IAAI,IACb,SAAS,IAAI,UAAU,CAAC,CAAC,CAAC,CACzB,oBAAC,KAAK,IAAC,UAAU,EAAC,QAAQ,EAAC,cAAc,EAAC,eAAe;QACvD,oBAAC,YAAY,IACX,oBAAoB,EAAE,CAAC,MAAkB,EAAE,KAAiB,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,EACvF,QAAQ,EAAE,IAAI,EACd,OAAO,EAAE,OAAO,IAAI,EAAE,EACtB,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,oBAAC,SAAS,OAAK,KAAK,EAAE,KAAK,EAAE,KAAK,GAAI,EAC9D,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EACrB,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAqB,CAAC,KAC7D,KAAK,GACT;QAGD,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC/B,+BAAO,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAE,MAAM,CAAC,EAAE,GAAI,CAC1E,CAAC;QAED,UAAU,IAAI,IAAI,IAAI,oBAAC,cAAc,QAAE,UAAU,CAAkB,CAC9D,CACT,CAAC,CAAC,CAAC,CACF,UAAU,IAAI,CACZ,oBAAC,YAAY,IACX,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,KAAK,EACZ,KAAK,EACH,iBAAiB,CAAC,YAAY,CAAC;YAC7B,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAEvD,CACH,CACF,CACI,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -1,13 +1,39 @@
1
- import React, { useEffect, useState } from "react";
2
- import Box from "@mui/material/Box";
3
- import FormHelperText from "@mui/material/FormHelperText";
4
- import Grid from "@mui/material/Grid2";
5
- import Typography from "@mui/material/Typography";
1
+ import React, { forwardRef, useCallback, useEffect, useState } from "react";
2
+ import { Box, ButtonBase, Dialog, FormHelperText, Grid2 as Grid, Stack, Typography, Zoom, } from "@mui/material";
6
3
  import { useCardContext } from "../../contexts/CardContext";
7
4
  import { useI18n } from "../../contexts/I18nContext";
8
- import { imgCSS, readFieldCSS } from "./shared";
9
- export const CardFieldImage = ({ label, formName, value: defaultValue, required = false, isDisabled = false, isCompact = false, size = "grow", isReadable = true, helperText, }) => {
10
- const { isEditing } = useCardContext();
5
+ export const ImageDisplay = ({ src, alt }) => {
6
+ const [openLightbox, setOpenLightbox] = useState(false);
7
+ const Transition = forwardRef(function Transition(props, ref) {
8
+ return React.createElement(Zoom, { ref: ref, in: openLightbox, ...props });
9
+ });
10
+ return (React.createElement(React.Fragment, null,
11
+ React.createElement(ButtonBase, { disableRipple: true, sx: { alignSelf: "baseline" }, onClick: () => setOpenLightbox((open) => !open) },
12
+ React.createElement(Box, { alt: alt, component: "img", src: src, sx: {
13
+ display: "block",
14
+ width: "auto",
15
+ height: "100%",
16
+ maxHeight: "200px",
17
+ maxWidth: "200px",
18
+ objectFit: "cover",
19
+ borderRadius: 2,
20
+ borderColor: "divider",
21
+ my: 2,
22
+ transition: "transform 150ms ease-out",
23
+ "&:hover": { transform: "scale(1.05)" },
24
+ } })),
25
+ openLightbox && (React.createElement(Dialog, { fullWidth: true, maxWidth: "lg", open: openLightbox, PaperProps: {
26
+ sx: { backgroundColor: "transparent", boxShadow: "none" },
27
+ }, TransitionComponent: Transition, onClose: () => setOpenLightbox(false) },
28
+ React.createElement(Box, { alt: alt, component: "img", src: src, sx: {
29
+ width: "100%",
30
+ height: "auto",
31
+ maxHeight: "90vh",
32
+ objectFit: "contain",
33
+ }, onClick: () => setOpenLightbox(false) })))));
34
+ };
35
+ export const CardFieldImage = ({ fallback, label, formName, value: defaultValue, required = false, isDisabled = false, size = "grow", isReadable = true, helperText, }) => {
36
+ const { isCompact, isEditing } = useCardContext();
11
37
  const { t } = useI18n();
12
38
  const [selectedFile, setSelectedFile] = useState();
13
39
  const [preview, setPreview] = useState();
@@ -20,22 +46,26 @@ export const CardFieldImage = ({ label, formName, value: defaultValue, required
20
46
  setPreview(objectUrl);
21
47
  return () => URL.revokeObjectURL(objectUrl);
22
48
  }, [selectedFile]);
23
- const handleFileChange = (e) => {
24
- if (e.target.files && e.target.files.length > 0) {
25
- setSelectedFile(e.target.files[0]);
49
+ const handleFileChange = useCallback(({ target: { files } }) => {
50
+ if (!files || files.length === 0) {
51
+ setSelectedFile(undefined);
52
+ return;
53
+ }
54
+ if (files.length === 1) {
55
+ setSelectedFile(files[0]);
26
56
  }
27
57
  else {
58
+ console.error(t("Multiple files selected, this is not supported."));
28
59
  setSelectedFile(undefined);
29
60
  }
30
- };
31
- return (React.createElement(Grid, { size: size }, isEditing ? (React.createElement(Box, { sx: readFieldCSS(isCompact) },
32
- React.createElement(Typography, { sx: { color: "grey.600" }, variant: "subtitle2" }, label),
61
+ }, [setSelectedFile, t]);
62
+ return (React.createElement(Grid, { size: size }, isEditing ? (React.createElement(Stack, { component: "figure", direction: isCompact ? "row" : "column", justifyContent: isCompact ? "space-between" : "flex-start", spacing: 0.5, sx: { m: "unset !important" } },
63
+ React.createElement(Typography, { color: "grey.600", component: "figcaption", variant: "subtitle2" }, label),
33
64
  React.createElement("input", { accept: "image/*", disabled: isDisabled, name: formName, required: required, type: "file", onChange: handleFileChange }),
34
- preview && (React.createElement(Box, { sx: { "> img": imgCSS } },
35
- React.createElement("img", { alt: t("preview"), src: preview }))),
36
- helperText != null && React.createElement(FormHelperText, null, helperText))) : (isReadable && (React.createElement(Box, { sx: { ...readFieldCSS(isCompact) } },
37
- React.createElement(Typography, { sx: { color: "grey.600" }, variant: "subtitle2" }, label),
38
- React.createElement(Box, { sx: { "> img": imgCSS } }, typeof defaultValue === "string" ? (React.createElement("img", { alt: label, src: defaultValue })) : (React.createElement(Typography, null, t("No image available")))))))));
65
+ preview && React.createElement(ImageDisplay, { alt: t("preview"), src: preview }),
66
+ helperText != null && React.createElement(FormHelperText, null, helperText))) : (isReadable && (React.createElement(Stack, { component: "figure", direction: isCompact ? "row" : "column", justifyContent: isCompact ? "space-between" : "flex-start", spacing: 0.5, sx: { m: "unset !important" } },
67
+ React.createElement(Typography, { color: "grey.600", component: "figcaption", fontWeight: 600, variant: "subtitle2" }, label),
68
+ typeof defaultValue === "string" ? (React.createElement(ImageDisplay, { alt: label, src: defaultValue })) : (React.createElement(Typography, null, fallback ?? t("No image available"))))))));
39
69
  };
40
70
  export default CardFieldImage;
41
71
  //# sourceMappingURL=CardFieldImage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CardFieldImage.js","sourceRoot":"","sources":["../../../../src/components/Card/CardFieldImage.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CardFieldImage.js","sourceRoot":"","sources":["../../../../src/components/Card/CardFieldImage.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CardFieldSwitch.js","sourceRoot":"","sources":["../../../../src/components/Card/CardFieldSwitch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAC1D,OAAO,IAAI,MAAM,qBAAqB,CAAC;AACvC,OAAO,KAAK,MAAM,qBAAqB,CAAC;AACxC,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAmB3C,MAAM,CAAC,MAAM,eAAe,GAAiD,CAAC,EAC5E,QAAQ,EACR,UAAU,EACV,UAAU,GAAG,KAAK,EAClB,UAAU,GAAG,IAAI,EACjB,UAAU,GAAG,IAAI,EACjB,KAAK,EACL,QAAQ,EACR,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,IAAI,GAAG,MAAM,EACb,KAAK,EAAE,YAAY,GACpB,EAAE,EAAE;IACH,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,cAAc,EAAE,CAAC;IAClD,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;IAExB,OAAO,CACL,oBAAC,IAAI,IAAC,IAAI,EAAE,IAAI,IACb,SAAS,IAAI,UAAU,CAAC,CAAC,CAAC,CACzB,oBAAC,KAAK,IAAC,SAAS,EAAC,QAAQ,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,QAAQ;QAC7D,oBAAC,KAAK,IACJ,UAAU,EAAC,QAAQ,EACnB,SAAS,EAAE,KAAK,EAChB,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO;YAErD,oBAAC,UAAU,IAAC,OAAO,EAAC,WAAW,IAAE,KAAK,CAAc;YAEpD,oBAAC,MAAM,IACL,cAAc,EAAE,OAAO,CAAC,YAAY,CAAC,EACrC,QAAQ,EAAE,UAAU,EACpB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,GACpC,CACI;QAEP,UAAU,IAAI,IAAI,IAAI,oBAAC,cAAc,IAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAG,UAAU,CAAkB,CAC7E,CACT,CAAC,CAAC,CAAC,CACF,UAAU,IAAI,CACZ,oBAAC,YAAY,IACX,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GACnE,CACH,CACF,CACI,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"CardFieldSwitch.js","sourceRoot":"","sources":["../../../../src/components/Card/CardFieldSwitch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAC1D,OAAO,IAAI,MAAM,qBAAqB,CAAC;AACvC,OAAO,KAAK,MAAM,qBAAqB,CAAC;AACxC,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAkB3C,MAAM,CAAC,MAAM,eAAe,GAAiD,CAAC,EAC5E,QAAQ,EACR,UAAU,EACV,UAAU,GAAG,KAAK,EAClB,UAAU,GAAG,IAAI,EACjB,UAAU,GAAG,IAAI,EACjB,KAAK,EACL,QAAQ,EACR,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,IAAI,GAAG,MAAM,EACb,KAAK,EAAE,YAAY,GACpB,EAAE,EAAE;IACH,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,cAAc,EAAE,CAAC;IAClD,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC;IAExB,OAAO,CACL,oBAAC,IAAI,IAAC,IAAI,EAAE,IAAI,IACb,SAAS,IAAI,UAAU,CAAC,CAAC,CAAC,CACzB,oBAAC,KAAK,IAAC,SAAS,EAAC,QAAQ,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,QAAQ;QAC7D,oBAAC,KAAK,IACJ,UAAU,EAAC,QAAQ,EACnB,SAAS,EAAE,KAAK,EAChB,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO;YAErD,oBAAC,UAAU,IAAC,OAAO,EAAC,WAAW,IAAE,KAAK,CAAc;YAEpD,oBAAC,MAAM,IACL,cAAc,EAAE,OAAO,CAAC,YAAY,CAAC,EACrC,QAAQ,EAAE,UAAU,EACpB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,GACpC,CACI;QAEP,UAAU,IAAI,IAAI,IAAI,oBAAC,cAAc,IAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAG,UAAU,CAAkB,CAC7E,CACT,CAAC,CAAC,CAAC,CACF,UAAU,IAAI,CACZ,oBAAC,YAAY,IACX,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GACnE,CACH,CACF,CACI,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -1,19 +1,2 @@
1
- export const readFieldCSS = (isCompact) => ({
2
- display: "flex",
3
- gap: 0.5,
4
- flexDirection: isCompact ? "row" : "column",
5
- justifyContent: isCompact ? "space-between" : "flex-start",
6
- });
7
- export const imgCSS = {
8
- width: "auto",
9
- height: "100%",
10
- maxHeight: "200px",
11
- maxWidth: "200px",
12
- objectFit: "cover",
13
- borderRadius: 1,
14
- border: "3px solid",
15
- borderColor: "divider",
16
- my: 2,
17
- boxShadow: 1,
18
- };
1
+ export {};
19
2
  //# sourceMappingURL=shared.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/components/Card/shared.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAkB,EAAW,EAAE,CAAC,CAAC;IAC5D,OAAO,EAAE,MAAM;IACf,GAAG,EAAE,GAAG;IACR,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ;IAC3C,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY;CAC3D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;IACd,SAAS,EAAE,OAAO;IAClB,QAAQ,EAAE,OAAO;IACjB,SAAS,EAAE,OAAO;IAClB,YAAY,EAAE,CAAC;IACf,MAAM,EAAE,WAAW;IACnB,WAAW,EAAE,SAAS;IACtB,EAAE,EAAE,CAAC;IACL,SAAS,EAAE,CAAC;CACb,CAAC"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/components/Card/shared.ts"],"names":[],"mappings":""}
@@ -1,9 +1,6 @@
1
1
  import React, { memo } from "react";
2
- import { Box } from "@mui/material";
3
- import Stack from "@mui/material/Stack";
4
- import Typography from "@mui/material/Typography";
5
- import { readFieldCSS } from "./Card/shared";
6
- export const LabeledValue = ({ label, value, compact, multiline }) => (React.createElement(Stack, { sx: readFieldCSS(Boolean(compact)) },
2
+ import { Box, Stack, Typography } from "@mui/material";
3
+ export const LabeledValue = ({ label, value, compact, multiline }) => (React.createElement(Stack, { direction: compact ? "row" : "column", justifyContent: compact ? "space-between" : "flex-start" },
7
4
  React.createElement(Typography, { color: "grey.600", fontWeight: 600, variant: "subtitle2" }, label),
8
5
  typeof value === "string" ? (React.createElement(Typography, { sx: {
9
6
  whiteSpace: multiline ? "break-spaces" : "pre-wrap",
@@ -1 +1 @@
1
- {"version":3,"file":"LabeledValue.js","sourceRoot":"","sources":["../../../src/components/LabeledValue.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAEpC,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,KAAK,MAAM,qBAAqB,CAAC;AACxC,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAS7C,MAAM,CAAC,MAAM,YAAY,GAAgC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CACjG,oBAAC,KAAK,IAAC,EAAE,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,oBAAC,UAAU,IAAC,KAAK,EAAC,UAAU,EAAC,UAAU,EAAE,GAAG,EAAE,OAAO,EAAC,WAAW,IAC9D,KAAK,CACK;IAEZ,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAC3B,oBAAC,UAAU,IACT,EAAE,EAAE;YACF,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU;YACnD,SAAS,EAAE,WAAW;SACvB,EACD,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,IAEnC,KAAK,CACK,CACd,CAAC,CAAC,CAAC,CACF,oBAAC,GAAG,QAAE,KAAK,CAAO,CACnB,CACK,CACT,CAAC;AAEF,eAAe,IAAI,CAAC,YAAY,CAAC,CAAC"}
1
+ {"version":3,"file":"LabeledValue.js","sourceRoot":"","sources":["../../../src/components/LabeledValue.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAEpC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AASvD,MAAM,CAAC,MAAM,YAAY,GAAgC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CACjG,oBAAC,KAAK,IACJ,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EACrC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY;IAExD,oBAAC,UAAU,IAAC,KAAK,EAAC,UAAU,EAAC,UAAU,EAAE,GAAG,EAAE,OAAO,EAAC,WAAW,IAC9D,KAAK,CACK;IAEZ,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAC3B,oBAAC,UAAU,IACT,EAAE,EAAE;YACF,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU;YACnD,SAAS,EAAE,WAAW;SACvB,EACD,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,IAEnC,KAAK,CACK,CACd,CAAC,CAAC,CAAC,CACF,oBAAC,GAAG,QAAE,KAAK,CAAO,CACnB,CACK,CACT,CAAC;AAEF,eAAe,IAAI,CAAC,YAAY,CAAC,CAAC"}
@@ -1,10 +1,10 @@
1
1
  import React from "react";
2
- import { AutocompleteState, CardFieldBaseProps } from "./shared";
2
+ import { CardFieldBaseProps, FormOption } from "./shared";
3
3
  export interface CardFieldAutoCompleteProps extends CardFieldBaseProps, React.PropsWithChildren {
4
4
  fallback: string;
5
5
  isEditable?: boolean;
6
6
  type: "autocomplete";
7
- value: AutocompleteState[];
7
+ value: FormOption[];
8
8
  }
9
9
  export declare const CardFieldAutoComplete: React.FC<Omit<CardFieldAutoCompleteProps, "type">>;
10
10
  export default CardFieldAutoComplete;
@@ -1,6 +1,11 @@
1
1
  import React from "react";
2
2
  import { CardFieldBaseProps } from "./shared";
3
- export interface CardFieldImageProps extends Omit<CardFieldBaseProps, "fallback" | "fallbackPredicate">, React.PropsWithChildren {
3
+ export interface ImageDisplayProps {
4
+ src: string;
5
+ alt: string;
6
+ }
7
+ export declare const ImageDisplay: React.FC<ImageDisplayProps>;
8
+ export interface CardFieldImageProps extends Omit<CardFieldBaseProps, "fallbackPredicate">, React.PropsWithChildren {
4
9
  type: "image";
5
10
  value?: string;
6
11
  }
@@ -1,11 +1,11 @@
1
1
  import React from "react";
2
2
  import { type SelectProps } from "@mui/material/Select";
3
- import { AutocompleteState, CardFieldBaseProps } from "./shared";
3
+ import { CardFieldBaseProps, FormOption } from "./shared";
4
4
  export interface CardFieldSelectProps extends React.PropsWithChildren, Omit<SelectProps, "size" | "value" | "label">, CardFieldBaseProps {
5
5
  type: "select";
6
6
  /** A custom fallback empty state when you want to emulate a non-nullish default state. */
7
- emptyValue?: AutocompleteState;
8
- value: AutocompleteState | undefined;
7
+ emptyValue?: FormOption;
8
+ value: FormOption | undefined;
9
9
  isEditable?: boolean;
10
10
  }
11
11
  export declare const CardFieldSelect: React.FC<Omit<CardFieldSelectProps, "type">>;
@@ -3,7 +3,6 @@ import { CardFieldBaseProps } from "./shared";
3
3
  export interface CardFieldSwitchProps extends Omit<CardFieldBaseProps, "fallback" | "fallbackPredicate">, React.PropsWithChildren {
4
4
  fallback?: never;
5
5
  fallbackPredicate?: never;
6
- isCompact?: boolean;
7
6
  isEditable?: boolean;
8
7
  off?: string;
9
8
  offValue?: string;
@@ -1,22 +1,8 @@
1
- import { SxProps } from "@mui/material";
2
1
  import { GridSize } from "@mui/material/Grid2";
3
- export interface AutocompleteState {
2
+ export interface FormOption {
4
3
  label: string;
5
4
  id: string | number;
6
5
  }
7
- export declare const readFieldCSS: (isCompact: boolean) => SxProps;
8
- export declare const imgCSS: {
9
- width: string;
10
- height: string;
11
- maxHeight: string;
12
- maxWidth: string;
13
- objectFit: string;
14
- borderRadius: number;
15
- border: string;
16
- borderColor: string;
17
- my: number;
18
- boxShadow: number;
19
- };
20
6
  export interface Pill {
21
7
  label: string;
22
8
  color?: "success" | "error" | "warning" | "info" | "default";
@@ -27,9 +13,8 @@ export interface CardFieldBaseProps extends React.PropsWithChildren {
27
13
  label: string;
28
14
  helperText?: string;
29
15
  isDisabled?: boolean;
30
- isCompact?: boolean;
31
16
  isReadable?: boolean;
32
- options?: AutocompleteState[];
17
+ options?: FormOption[];
33
18
  required?: boolean;
34
19
  size?: GridSize;
35
20
  fallback?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bananas-commerce-admin",
3
- "version": "0.15.7",
3
+ "version": "0.15.8",
4
4
  "description": "What's this, an admin for apes?",
5
5
  "keywords": [
6
6
  "admin",
@@ -9,13 +9,13 @@ import TextField from "@mui/material/TextField";
9
9
  import { useCardContext } from "../../contexts/CardContext";
10
10
  import LabeledValue from "../LabeledValue";
11
11
 
12
- import { AutocompleteState, CardFieldBaseProps } from "./shared";
12
+ import { CardFieldBaseProps, FormOption } from "./shared";
13
13
 
14
14
  export interface CardFieldAutoCompleteProps extends CardFieldBaseProps, React.PropsWithChildren {
15
15
  fallback: string;
16
16
  isEditable?: boolean;
17
17
  type: "autocomplete";
18
- value: AutocompleteState[];
18
+ value: FormOption[];
19
19
  }
20
20
 
21
21
  export const CardFieldAutoComplete: React.FC<Omit<CardFieldAutoCompleteProps, "type">> = ({
@@ -34,22 +34,20 @@ export const CardFieldAutoComplete: React.FC<Omit<CardFieldAutoCompleteProps, "t
34
34
  const { isCompact, isEditing } = useCardContext();
35
35
 
36
36
  // Manage the selected options state
37
- const [selectedOptions, setSelectedOptions] = useState<AutocompleteState[]>(defaultValue ?? []);
37
+ const [selectedOptions, setSelectedOptions] = useState<FormOption[]>(defaultValue ?? []);
38
38
 
39
39
  return (
40
40
  <Grid size={size}>
41
41
  {isEditing && isEditable ? (
42
42
  <Stack alignItems="center" justifyContent="space-between">
43
43
  <Autocomplete
44
- isOptionEqualToValue={(option: AutocompleteState, value: AutocompleteState) =>
45
- option.id === value.id
46
- }
44
+ isOptionEqualToValue={(option: FormOption, value: FormOption) => option.id === value.id}
47
45
  multiple={true}
48
46
  options={options ?? []}
49
47
  renderInput={(props) => <TextField {...props} label={label} />}
50
48
  sx={{ width: "100%" }}
51
49
  value={selectedOptions}
52
- onChange={(_, value) => setSelectedOptions(value as AutocompleteState[])}
50
+ onChange={(_, value) => setSelectedOptions(value as FormOption[])}
53
51
  {...props}
54
52
  />
55
53
 
@@ -1,34 +1,111 @@
1
- import React, { useEffect, useState } from "react";
1
+ import React, { forwardRef, Ref, useCallback, useEffect, useState } from "react";
2
2
 
3
- import Box from "@mui/material/Box";
4
- import FormHelperText from "@mui/material/FormHelperText";
5
- import Grid from "@mui/material/Grid2";
6
- import Typography from "@mui/material/Typography";
3
+ import {
4
+ Box,
5
+ ButtonBase,
6
+ Dialog,
7
+ FormHelperText,
8
+ Grid2 as Grid,
9
+ Stack,
10
+ Typography,
11
+ Zoom,
12
+ } from "@mui/material";
7
13
 
8
14
  import { useCardContext } from "../../contexts/CardContext";
9
15
  import { useI18n } from "../../contexts/I18nContext";
10
16
 
11
- import { CardFieldBaseProps, imgCSS, readFieldCSS } from "./shared";
17
+ import { CardFieldBaseProps } from "./shared";
18
+
19
+ export interface ImageDisplayProps {
20
+ src: string;
21
+ alt: string;
22
+ }
23
+
24
+ export const ImageDisplay: React.FC<ImageDisplayProps> = ({ src, alt }) => {
25
+ const [openLightbox, setOpenLightbox] = useState(false);
26
+
27
+ const Transition = forwardRef(function Transition(
28
+ props: { children: React.ReactElement },
29
+ ref: Ref<unknown>,
30
+ ) {
31
+ return <Zoom ref={ref} in={openLightbox} {...props} />;
32
+ });
33
+
34
+ return (
35
+ <>
36
+ <ButtonBase
37
+ disableRipple
38
+ sx={{ alignSelf: "baseline" }}
39
+ onClick={() => setOpenLightbox((open) => !open)}
40
+ >
41
+ <Box
42
+ alt={alt}
43
+ component="img"
44
+ src={src}
45
+ sx={{
46
+ display: "block",
47
+ width: "auto",
48
+ height: "100%",
49
+ maxHeight: "200px",
50
+ maxWidth: "200px",
51
+ objectFit: "cover",
52
+ borderRadius: 2,
53
+ borderColor: "divider",
54
+ my: 2,
55
+ transition: "transform 150ms ease-out",
56
+ "&:hover": { transform: "scale(1.05)" },
57
+ }}
58
+ />
59
+ </ButtonBase>
60
+
61
+ {openLightbox && (
62
+ <Dialog
63
+ fullWidth
64
+ maxWidth="lg"
65
+ open={openLightbox}
66
+ PaperProps={{
67
+ sx: { backgroundColor: "transparent", boxShadow: "none" },
68
+ }}
69
+ TransitionComponent={Transition}
70
+ onClose={() => setOpenLightbox(false)}
71
+ >
72
+ <Box
73
+ alt={alt}
74
+ component="img"
75
+ src={src}
76
+ sx={{
77
+ width: "100%",
78
+ height: "auto",
79
+ maxHeight: "90vh",
80
+ objectFit: "contain",
81
+ }}
82
+ onClick={() => setOpenLightbox(false)}
83
+ />
84
+ </Dialog>
85
+ )}
86
+ </>
87
+ );
88
+ };
12
89
 
13
90
  export interface CardFieldImageProps
14
- extends Omit<CardFieldBaseProps, "fallback" | "fallbackPredicate">,
91
+ extends Omit<CardFieldBaseProps, "fallbackPredicate">,
15
92
  React.PropsWithChildren {
16
93
  type: "image";
17
94
  value?: string;
18
95
  }
19
96
 
20
97
  export const CardFieldImage: React.FC<Omit<CardFieldImageProps, "type">> = ({
98
+ fallback,
21
99
  label,
22
100
  formName,
23
101
  value: defaultValue,
24
102
  required = false,
25
103
  isDisabled = false,
26
- isCompact = false,
27
104
  size = "grow",
28
105
  isReadable = true,
29
106
  helperText,
30
107
  }) => {
31
- const { isEditing } = useCardContext();
108
+ const { isCompact, isEditing } = useCardContext();
32
109
  const { t } = useI18n();
33
110
 
34
111
  const [selectedFile, setSelectedFile] = useState<File>();
@@ -46,19 +123,34 @@ export const CardFieldImage: React.FC<Omit<CardFieldImageProps, "type">> = ({
46
123
  return () => URL.revokeObjectURL(objectUrl);
47
124
  }, [selectedFile]);
48
125
 
49
- const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {
50
- if (e.target.files && e.target.files.length > 0) {
51
- setSelectedFile(e.target.files[0]);
52
- } else {
53
- setSelectedFile(undefined);
54
- }
55
- };
126
+ const handleFileChange = useCallback(
127
+ ({ target: { files } }: React.ChangeEvent<HTMLInputElement>) => {
128
+ if (!files || files.length === 0) {
129
+ setSelectedFile(undefined);
130
+ return;
131
+ }
132
+
133
+ if (files.length === 1) {
134
+ setSelectedFile(files[0]);
135
+ } else {
136
+ console.error(t("Multiple files selected, this is not supported."));
137
+ setSelectedFile(undefined);
138
+ }
139
+ },
140
+ [setSelectedFile, t],
141
+ );
56
142
 
57
143
  return (
58
144
  <Grid size={size}>
59
145
  {isEditing ? (
60
- <Box sx={readFieldCSS(isCompact)}>
61
- <Typography sx={{ color: "grey.600" }} variant="subtitle2">
146
+ <Stack
147
+ component="figure"
148
+ direction={isCompact ? "row" : "column"}
149
+ justifyContent={isCompact ? "space-between" : "flex-start"}
150
+ spacing={0.5}
151
+ sx={{ m: "unset !important" }}
152
+ >
153
+ <Typography color="grey.600" component="figcaption" variant="subtitle2">
62
154
  {label}
63
155
  </Typography>
64
156
 
@@ -71,28 +163,33 @@ export const CardFieldImage: React.FC<Omit<CardFieldImageProps, "type">> = ({
71
163
  onChange={handleFileChange}
72
164
  />
73
165
 
74
- {preview && (
75
- <Box sx={{ "> img": imgCSS }}>
76
- <img alt={t("preview")} src={preview} />
77
- </Box>
78
- )}
79
-
166
+ {preview && <ImageDisplay alt={t("preview")} src={preview} />}
80
167
  {helperText != null && <FormHelperText>{helperText}</FormHelperText>}
81
- </Box>
168
+ </Stack>
82
169
  ) : (
83
170
  isReadable && (
84
- <Box sx={{ ...readFieldCSS(isCompact) }}>
85
- <Typography sx={{ color: "grey.600" }} variant="subtitle2">
171
+ <Stack
172
+ component="figure"
173
+ direction={isCompact ? "row" : "column"}
174
+ justifyContent={isCompact ? "space-between" : "flex-start"}
175
+ spacing={0.5}
176
+ sx={{ m: "unset !important" }}
177
+ >
178
+ <Typography
179
+ color="grey.600"
180
+ component="figcaption"
181
+ fontWeight={600}
182
+ variant="subtitle2"
183
+ >
86
184
  {label}
87
185
  </Typography>
88
- <Box sx={{ "> img": imgCSS }}>
89
- {typeof defaultValue === "string" ? (
90
- <img alt={label} src={defaultValue} />
91
- ) : (
92
- <Typography>{t("No image available")}</Typography>
93
- )}
94
- </Box>
95
- </Box>
186
+
187
+ {typeof defaultValue === "string" ? (
188
+ <ImageDisplay alt={label} src={defaultValue} />
189
+ ) : (
190
+ <Typography>{fallback ?? t("No image available")}</Typography>
191
+ )}
192
+ </Stack>
96
193
  )
97
194
  )}
98
195
  </Grid>
@@ -10,7 +10,7 @@ import Select, { SelectChangeEvent, type SelectProps } from "@mui/material/Selec
10
10
  import { useCardContext } from "../../contexts/CardContext";
11
11
  import LabeledValue from "../LabeledValue";
12
12
 
13
- import { AutocompleteState, CardFieldBaseProps } from "./shared";
13
+ import { CardFieldBaseProps, FormOption } from "./shared";
14
14
 
15
15
  export interface CardFieldSelectProps
16
16
  extends React.PropsWithChildren,
@@ -18,8 +18,8 @@ export interface CardFieldSelectProps
18
18
  CardFieldBaseProps {
19
19
  type: "select";
20
20
  /** A custom fallback empty state when you want to emulate a non-nullish default state. */
21
- emptyValue?: AutocompleteState;
22
- value: AutocompleteState | undefined;
21
+ emptyValue?: FormOption;
22
+ value: FormOption | undefined;
23
23
  isEditable?: boolean;
24
24
  }
25
25
 
@@ -17,7 +17,6 @@ export interface CardFieldSwitchProps
17
17
  React.PropsWithChildren {
18
18
  fallback?: never;
19
19
  fallbackPredicate?: never;
20
- isCompact?: boolean;
21
20
  isEditable?: boolean;
22
21
  off?: string;
23
22
  offValue?: string;
@@ -1,31 +1,10 @@
1
- import { SxProps } from "@mui/material";
2
1
  import { GridSize } from "@mui/material/Grid2";
3
2
 
4
- export interface AutocompleteState {
3
+ export interface FormOption {
5
4
  label: string;
6
5
  id: string | number;
7
6
  }
8
7
 
9
- export const readFieldCSS = (isCompact: boolean): SxProps => ({
10
- display: "flex",
11
- gap: 0.5,
12
- flexDirection: isCompact ? "row" : "column",
13
- justifyContent: isCompact ? "space-between" : "flex-start",
14
- });
15
-
16
- export const imgCSS = {
17
- width: "auto",
18
- height: "100%",
19
- maxHeight: "200px",
20
- maxWidth: "200px",
21
- objectFit: "cover",
22
- borderRadius: 1,
23
- border: "3px solid",
24
- borderColor: "divider",
25
- my: 2,
26
- boxShadow: 1,
27
- };
28
-
29
8
  export interface Pill {
30
9
  label: string;
31
10
  color?: "success" | "error" | "warning" | "info" | "default";
@@ -37,9 +16,8 @@ export interface CardFieldBaseProps extends React.PropsWithChildren {
37
16
  label: string;
38
17
  helperText?: string;
39
18
  isDisabled?: boolean;
40
- isCompact?: boolean;
41
19
  isReadable?: boolean;
42
- options?: AutocompleteState[];
20
+ options?: FormOption[];
43
21
  required?: boolean;
44
22
  size?: GridSize;
45
23
  fallback?: string;
@@ -1,10 +1,6 @@
1
1
  import React, { memo } from "react";
2
2
 
3
- import { Box } from "@mui/material";
4
- import Stack from "@mui/material/Stack";
5
- import Typography from "@mui/material/Typography";
6
-
7
- import { readFieldCSS } from "./Card/shared";
3
+ import { Box, Stack, Typography } from "@mui/material";
8
4
 
9
5
  export interface LabeledValueProps {
10
6
  label: string;
@@ -14,7 +10,10 @@ export interface LabeledValueProps {
14
10
  }
15
11
 
16
12
  export const LabeledValue: React.FC<LabeledValueProps> = ({ label, value, compact, multiline }) => (
17
- <Stack sx={readFieldCSS(Boolean(compact))}>
13
+ <Stack
14
+ direction={compact ? "row" : "column"}
15
+ justifyContent={compact ? "space-between" : "flex-start"}
16
+ >
18
17
  <Typography color="grey.600" fontWeight={600} variant="subtitle2">
19
18
  {label}
20
19
  </Typography>