ece-docs-components 1.0.104 → 1.0.106

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 (39) hide show
  1. package/dist/cjs/_virtual/index8.js +2 -2
  2. package/dist/cjs/_virtual/index9.js +2 -2
  3. package/dist/cjs/components/FileUploadButton.js +30 -19
  4. package/dist/cjs/components/FileUploadButton.js.map +1 -1
  5. package/dist/cjs/components/Modal.js +66 -29
  6. package/dist/cjs/components/Modal.js.map +1 -1
  7. package/dist/cjs/components/NoteBox.js +83 -74
  8. package/dist/cjs/components/NoteBox.js.map +1 -1
  9. package/dist/cjs/helpers/variableProcessing.js +2 -0
  10. package/dist/cjs/helpers/variableProcessing.js.map +1 -1
  11. package/dist/cjs/node_modules/domhandler/lib/index.js +1 -1
  12. package/dist/cjs/node_modules/domutils/lib/index.js +1 -1
  13. package/dist/cjs/node_modules/html-dom-parser/lib/index.js +1 -1
  14. package/dist/cjs/node_modules/style-to-object/cjs/index.js +1 -1
  15. package/dist/cjs/types/variable.js +11 -5
  16. package/dist/cjs/types/variable.js.map +1 -1
  17. package/dist/esm/_virtual/index8.js +2 -2
  18. package/dist/esm/_virtual/index9.js +2 -2
  19. package/dist/esm/components/FileUploadButton.d.ts +7 -3
  20. package/dist/esm/components/FileUploadButton.js +31 -20
  21. package/dist/esm/components/FileUploadButton.js.map +1 -1
  22. package/dist/esm/components/Modal.d.ts +5 -11
  23. package/dist/esm/components/Modal.js +67 -30
  24. package/dist/esm/components/Modal.js.map +1 -1
  25. package/dist/esm/components/NoteBox.d.ts +1 -1
  26. package/dist/esm/components/NoteBox.js +83 -74
  27. package/dist/esm/components/NoteBox.js.map +1 -1
  28. package/dist/esm/helpers/variableProcessing.js +2 -0
  29. package/dist/esm/helpers/variableProcessing.js.map +1 -1
  30. package/dist/esm/node_modules/domutils/lib/index.js +1 -1
  31. package/dist/esm/node_modules/entities/lib/generated/decode-data-html.js +1 -1
  32. package/dist/esm/node_modules/entities/lib/generated/decode-data-xml.js +1 -1
  33. package/dist/esm/node_modules/htmlparser2/node_modules/entities/dist/commonjs/generated/decode-data-html.js +1 -1
  34. package/dist/esm/node_modules/htmlparser2/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +1 -1
  35. package/dist/esm/node_modules/style-to-object/cjs/index.js +1 -1
  36. package/dist/esm/types/variable.d.ts +39 -4
  37. package/dist/esm/types/variable.js +12 -6
  38. package/dist/esm/types/variable.js.map +1 -1
  39. package/package.json +3 -2
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var lib = {};
3
+ var cjs = {};
4
4
 
5
- exports.__exports = lib;
5
+ exports.__exports = cjs;
6
6
  //# sourceMappingURL=index8.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var cjs = {};
3
+ var lib = {};
4
4
 
5
- exports.__exports = cjs;
5
+ exports.__exports = lib;
6
6
  //# sourceMappingURL=index9.js.map
@@ -7,10 +7,10 @@ var styles = require('@mui/material/styles');
7
7
  var iconsMaterial = require('@mui/icons-material');
8
8
  var reactToastify = require('react-toastify');
9
9
 
10
- const HiddenInput = styles.styled('input')({
11
- display: 'none',
10
+ const HiddenInput = styles.styled("input")({
11
+ display: "none",
12
12
  });
13
- const FileUploadButton = ({ id, label = 'Upload File', accept, multiple = false, onFileSelect, variant = 'primary', size = 'md', }) => {
13
+ const FileUploadButton = ({ id, label = "Upload File", accept, multiple = false, onFileSelect, variant = "primary", size = "md", onError, maxSizeBytes = 25 * 1024 * 1024, sendToast = true, children, }) => {
14
14
  const handleFileChange = (event) => {
15
15
  const files = event.target.files;
16
16
  if (!files || files.length === 0) {
@@ -20,32 +20,43 @@ const FileUploadButton = ({ id, label = 'Upload File', accept, multiple = false,
20
20
  // If multiple, filter; if single, validate the first
21
21
  if (multiple) {
22
22
  const valid = [];
23
- for (const f of Array.from(files)) {
24
- if (f.size > (25 * 1024 * 1024))
25
- continue;
26
- valid.push(f);
23
+ const rejected = [];
24
+ for (const file of Array.from(files)) {
25
+ if (file.size > maxSizeBytes) {
26
+ rejected.push(file);
27
+ }
28
+ else {
29
+ valid.push(file);
30
+ }
31
+ }
32
+ if (rejected.length > 0) {
33
+ onError?.(rejected);
34
+ }
35
+ if (valid.length === 0) {
36
+ onFileSelect?.(null);
37
+ event.target.value = "";
38
+ return;
27
39
  }
28
40
  const dt = new DataTransfer();
29
41
  valid.forEach((f) => dt.items.add(f));
30
42
  onFileSelect?.(dt.files);
43
+ return;
31
44
  }
32
- else {
33
- const f = files[0];
34
- if (f.size > (25 * 1024 * 1024)) {
35
- // Notify user and abort selection
36
- // Example: toast.error('File exceeds 5MB');
37
- reactToastify.toast.error('File exceeds 25MB');
38
- onFileSelect?.(null);
39
- // Clear the input so user can reselect
40
- event.target.value = '';
41
- return;
45
+ const file = files[0];
46
+ if (file.size > maxSizeBytes) {
47
+ if (sendToast) {
48
+ reactToastify.toast.error("File exceeds 25MB");
42
49
  }
43
- onFileSelect?.(files);
50
+ onError?.([file]);
51
+ onFileSelect?.(null);
52
+ event.target.value = "";
53
+ return;
44
54
  }
55
+ onFileSelect?.(files);
45
56
  };
46
57
  const autoId = React.useId();
47
58
  const inputId = id || `file-upload-${autoId}`;
48
- return (jsxRuntime.jsxs("label", { htmlFor: inputId, children: [jsxRuntime.jsx(HiddenInput, { id: inputId, type: "file", accept: accept, multiple: multiple, onChange: handleFileChange }), jsxRuntime.jsxs(Button.Button, { component: "span", variant: variant, size: size, children: [jsxRuntime.jsx(iconsMaterial.FileUploadRounded, {}), label] })] }));
59
+ return (jsxRuntime.jsxs("label", { htmlFor: inputId, children: [jsxRuntime.jsx(HiddenInput, { id: inputId, type: "file", accept: accept, multiple: multiple, onChange: handleFileChange }), jsxRuntime.jsx(Button.Button, { component: "span", variant: variant, size: size, children: children ?? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(iconsMaterial.FileUploadRounded, {}), label] })) })] }));
49
60
  };
50
61
 
51
62
  exports.FileUploadButton = FileUploadButton;
@@ -1 +1 @@
1
- {"version":3,"file":"FileUploadButton.js","sources":["../../../../src/components/FileUploadButton.tsx"],"sourcesContent":["import React, { useId } from 'react';\r\nimport { Button } from './Button'; // Import your existing styled button component\r\nimport { styled } from '@mui/material/styles';\r\nimport { FileUploadRounded } from '@mui/icons-material';\r\nimport { toast } from 'react-toastify';\r\n\r\ninterface FileUploadButtonProps {\r\n id?: string;\r\n label?: string;\r\n accept?: string;\r\n multiple?: boolean;\r\n onFileSelect?: (files: FileList | null) => void;\r\n variant?: 'primary' | 'secondary' | 'outline' | 'marked-read' | 'mark-read' | 'danger';\r\n size?: 'sm' | 'md' | 'lg';\r\n}\r\n\r\nconst HiddenInput = styled('input')({\r\n display: 'none',\r\n});\r\n\r\nexport const FileUploadButton: React.FC<FileUploadButtonProps> = ({\r\n id,\r\n label = 'Upload File',\r\n accept,\r\n multiple = false,\r\n onFileSelect,\r\n variant = 'primary',\r\n size = 'md',\r\n}) => {\r\nconst handleFileChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const files = event.target.files;\r\n\r\n if (!files || files.length === 0) {\r\n onFileSelect?.(files);\r\n return;\r\n }\r\n\r\n // If multiple, filter; if single, validate the first\r\n if (multiple) {\r\n const valid: File[] = [];\r\n for (const f of Array.from(files)) {\r\n if ((25 * 1024 * 1024) && f.size > (25 * 1024 * 1024)) continue;\r\n valid.push(f);\r\n }\r\n const dt = new DataTransfer();\r\n valid.forEach((f) => dt.items.add(f));\r\n onFileSelect?.(dt.files);\r\n } else {\r\n const f = files[0];\r\n if ((25 * 1024 * 1024) && f.size > (25 * 1024 * 1024)) {\r\n // Notify user and abort selection\r\n // Example: toast.error('File exceeds 5MB');\r\n toast.error('File exceeds 25MB')\r\n onFileSelect?.(null);\r\n // Clear the input so user can reselect\r\n event.target.value = '';\r\n return;\r\n }\r\n onFileSelect?.(files);\r\n }\r\n };\r\n const autoId = useId(); \r\n const inputId = id || `file-upload-${autoId}`;\r\n return (\r\n <label htmlFor={inputId}>\r\n <HiddenInput\r\n id={inputId}\r\n type=\"file\"\r\n accept={accept}\r\n multiple={multiple}\r\n onChange={handleFileChange}\r\n />\r\n <Button\r\n component=\"span\"\r\n variant={variant}\r\n size={size}\r\n >\r\n <FileUploadRounded/>{label}\r\n </Button>\r\n </label>\r\n );\r\n};\r\n"],"names":["styled","toast","useId","_jsxs","_jsx","Button","FileUploadRounded"],"mappings":";;;;;;;;;AAgBA,MAAM,WAAW,GAAGA,aAAM,CAAC,OAAO,CAAC,CAAC;AAClC,IAAA,OAAO,EAAE,MAAM;AAChB,CAAA,CAAC;AAEK,MAAM,gBAAgB,GAAoC,CAAC,EAChE,EAAE,EACF,KAAK,GAAG,aAAa,EACrB,MAAM,EACN,QAAQ,GAAG,KAAK,EAChB,YAAY,EACZ,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,IAAI,GACZ,KAAI;AACL,IAAA,MAAM,gBAAgB,GAAG,CAAC,KAA0C,KAAI;AACpE,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK;QAEhC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,YAAA,YAAY,GAAG,KAAK,CAAC;YACrB;QACF;;QAGA,IAAI,QAAQ,EAAE;YACZ,MAAM,KAAK,GAAW,EAAE;YACxB,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACjC,gBAAA,IAA0B,CAAC,CAAC,IAAI,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;oBAAE;AACvD,gBAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACf;AACA,YAAA,MAAM,EAAE,GAAG,IAAI,YAAY,EAAE;AAC7B,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrC,YAAA,YAAY,GAAG,EAAE,CAAC,KAAK,CAAC;QAC1B;aAAO;AACL,YAAA,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;YAClB,IAA0B,CAAC,CAAC,IAAI,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,EAAE;;;AAGrD,gBAAAC,mBAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC;AAChC,gBAAA,YAAY,GAAG,IAAI,CAAC;;AAEpB,gBAAA,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE;gBACvB;YACF;AACA,YAAA,YAAY,GAAG,KAAK,CAAC;QACvB;AACF,IAAA,CAAC;AACD,IAAA,MAAM,MAAM,GAAGC,WAAK,EAAE;AACtB,IAAA,MAAM,OAAO,GAAG,EAAE,IAAI,CAAA,YAAA,EAAe,MAAM,EAAE;IAC7C,QACEC,eAAA,CAAA,OAAA,EAAA,EAAO,OAAO,EAAE,OAAO,aACrBC,cAAA,CAAC,WAAW,EAAA,EACV,EAAE,EAAE,OAAO,EACX,IAAI,EAAC,MAAM,EACX,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,gBAAgB,EAAA,CAC1B,EACFD,eAAA,CAACE,aAAM,EAAA,EACL,SAAS,EAAC,MAAM,EAChB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,IAAI,EAAA,QAAA,EAAA,CAEVD,cAAA,CAACE,+BAAiB,EAAA,EAAA,CAAE,EAAC,KAAK,CAAA,EAAA,CACnB,CAAA,EAAA,CACH;AAEZ;;;;"}
1
+ {"version":3,"file":"FileUploadButton.js","sources":["../../../../src/components/FileUploadButton.tsx"],"sourcesContent":["import React, { useId } from \"react\";\r\nimport { Button } from \"./Button\"; // Import your existing styled button component\r\nimport { styled } from \"@mui/material/styles\";\r\nimport { FileUploadRounded } from \"@mui/icons-material\";\r\nimport { toast } from \"react-toastify\";\r\n\r\ninterface FileUploadButtonProps {\r\n id?: string;\r\n label?: string;\r\n accept?: string;\r\n multiple?: boolean;\r\n onFileSelect?: (files: FileList | null) => void;\r\n variant?:\r\n | \"primary\"\r\n | \"secondary\"\r\n | \"outline\"\r\n | \"marked-read\"\r\n | \"mark-read\"\r\n | \"danger\";\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n onError?: (files: File[]) => void;\r\n maxSizeBytes?: number;\r\n sendToast?: boolean;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst HiddenInput = styled(\"input\")({\r\n display: \"none\",\r\n});\r\n\r\nexport const FileUploadButton: React.FC<FileUploadButtonProps> = ({\r\n id,\r\n label = \"Upload File\",\r\n accept,\r\n multiple = false,\r\n onFileSelect,\r\n variant = \"primary\",\r\n size = \"md\",\r\n onError,\r\n maxSizeBytes = 25 * 1024 * 1024,\r\n sendToast = true,\r\n children,\r\n}) => {\r\n const handleFileChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const files = event.target.files;\r\n\r\n if (!files || files.length === 0) {\r\n onFileSelect?.(files);\r\n return;\r\n }\r\n\r\n // If multiple, filter; if single, validate the first\r\n if (multiple) {\r\n const valid: File[] = [];\r\n const rejected: File[] = [];\r\n for (const file of Array.from(files)) {\r\n if (file.size > maxSizeBytes) {\r\n rejected.push(file);\r\n } else {\r\n valid.push(file);\r\n }\r\n }\r\n\r\n if (rejected.length > 0) {\r\n onError?.(rejected);\r\n }\r\n\r\n if (valid.length === 0) {\r\n onFileSelect?.(null);\r\n event.target.value = \"\";\r\n return;\r\n }\r\n\r\n const dt = new DataTransfer();\r\n valid.forEach((f) => dt.items.add(f));\r\n onFileSelect?.(dt.files);\r\n return;\r\n }\r\n\r\n const file = files[0];\r\n if (file.size > maxSizeBytes) {\r\n if (sendToast) {\r\n toast.error(\"File exceeds 25MB\");\r\n }\r\n onError?.([file]);\r\n onFileSelect?.(null);\r\n event.target.value = \"\";\r\n return;\r\n }\r\n onFileSelect?.(files);\r\n };\r\n const autoId = useId();\r\n const inputId = id || `file-upload-${autoId}`;\r\n return (\r\n <label htmlFor={inputId}>\r\n <HiddenInput\r\n id={inputId}\r\n type=\"file\"\r\n accept={accept}\r\n multiple={multiple}\r\n onChange={handleFileChange}\r\n />\r\n {/* Render child, if not defined render old style fix*/}\r\n <Button component=\"span\" variant={variant} size={size}>\r\n {children ?? (\r\n <>\r\n <FileUploadRounded />\r\n {label}\r\n </>\r\n )}\r\n </Button>\r\n </label>\r\n );\r\n};\r\n"],"names":["styled","toast","useId","_jsxs","_jsx","Button","_Fragment","FileUploadRounded"],"mappings":"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"}
@@ -33,25 +33,36 @@ const NavButton = material.styled(material.IconButton)(({ theme }) => ({
33
33
  borderColor: theme.palette.dark.main, // Keep border dark
34
34
  },
35
35
  }));
36
- const Modal = ({ isOpen, onClose, variableId, status, requirementType, description, value, defaultValue, note, onSave, onSubmit, successMessage, errorMessage, onDeclineWording, onPrevious, onNext, currentPage = 1, totalPages = 1, isLoading, useDefault, canBeBlank, }) => {
37
- const variableState = variableProcessing.mapStatusToVariableState(status);
38
- const variableReqType = variableProcessing.mapRequirementTypeToState(requirementType);
39
- const [textValue, setTextValue] = React.useState(value);
36
+ const Modal = ({ isOpen, onClose, onSave, onSubmit, successMessage, errorMessage, onDeclineWording, onPrevious, onNext, currentPage = 1, totalPages = 1, isLoading, variable: variable$1, isLeafOrganisation, }) => {
37
+ const variableState = variableProcessing.mapStatusToVariableState(variable$1.state);
38
+ const variableReqType = variableProcessing.mapRequirementTypeToState(variable$1.requirementType);
39
+ const [textValue, setTextValue] = React.useState(variable$1.value);
40
40
  const [customValue, setCustomValue] = React.useState("");
41
- const [useDefaultValue, setUseDefaultValue] = React.useState(true);
41
+ const [useDefaultValue, setUseDefaultValue] = React.useState(variable$1.useDefault ?? false);
42
+ const [isChildEditable, setIsChildEditable] = React.useState(variable$1.isChildEditable ?? false);
42
43
  const [isSaving, setIsSaving] = React.useState(false);
43
44
  const [isSubmitting, setIsSubmitting] = React.useState(false);
44
45
  const theme = material.useTheme();
45
46
  const toDisplay = (str) => str?.replace(/\\n/g, "\n") ?? "";
46
47
  const toStorage = (str) => str?.replace(/\r?\n/g, "\\n") ?? "";
48
+ const displayValue = toDisplay(variable$1.value);
49
+ const displayDefault = toDisplay(variable$1.defaultValue ?? "");
50
+ const originalUseDefaultValue = (variable$1.useDefault ?? false) || displayValue === displayDefault;
51
+ const originalIsChildEditable = variable$1.isChildEditable ?? false;
52
+ const isSettingsDirty = isChildEditable !== originalIsChildEditable;
53
+ const isDefaultSelectionDirty = useDefaultValue !== originalUseDefaultValue;
54
+ const isTextDirty = !useDefaultValue && textValue !== displayValue;
47
55
  React.useEffect(() => {
48
- const displayValue = toDisplay(value);
49
- const displayDefault = toDisplay(defaultValue);
50
- const isUsingDefault = useDefault || displayValue === displayDefault;
51
- setUseDefaultValue(isUsingDefault);
56
+ setIsChildEditable(originalIsChildEditable);
57
+ setUseDefaultValue(originalUseDefaultValue);
52
58
  setTextValue(displayValue);
53
- setCustomValue(isUsingDefault ? "" : displayValue);
54
- }, [variableId, value, defaultValue]);
59
+ setCustomValue(originalUseDefaultValue ? "" : displayValue);
60
+ }, [
61
+ displayValue,
62
+ originalIsChildEditable,
63
+ originalUseDefaultValue,
64
+ variable$1._id,
65
+ ]);
55
66
  React.useEffect(() => {
56
67
  if (!isOpen) {
57
68
  setIsSaving(false);
@@ -78,14 +89,33 @@ const Modal = ({ isOpen, onClose, variableId, status, requirementType, descripti
78
89
  const checked = event.target.checked;
79
90
  if (checked) {
80
91
  setCustomValue(textValue);
81
- setTextValue(toDisplay(defaultValue));
92
+ setTextValue(toDisplay(variable$1.defaultValue ?? ""));
82
93
  }
83
94
  else {
84
95
  setTextValue(customValue || "");
85
96
  }
86
97
  setUseDefaultValue(checked);
87
98
  };
99
+ const handleIsChildEditableHandler = (event) => {
100
+ const checked = event.target.checked;
101
+ setIsChildEditable(checked);
102
+ };
88
103
  const canSubmitSave = isLoading || variableState === variable.VariableState.Pending;
104
+ const cannotEdit = canSubmitSave || variableState === variable.VariableState.Declined;
105
+ const isBlankInvalid = variable$1.canBeBlank === false && textValue.trim().length <= 0;
106
+ const submitButtonLabel = useDefaultValue
107
+ ? variable$1.useDefault && !isDefaultSelectionDirty
108
+ ? isSettingsDirty
109
+ ? "Save changes"
110
+ : "Default already accepted"
111
+ : "Accept Default"
112
+ : isTextDirty
113
+ ? "Submit for review"
114
+ : "Save changes";
115
+ const isSubmitDisabled = canSubmitSave ||
116
+ isBlankInvalid ||
117
+ (useDefaultValue && variable$1.useDefault && !isSettingsDirty) ||
118
+ (!useDefaultValue && !isTextDirty && !isSettingsDirty);
89
119
  const statusConfig = {
90
120
  [variable.VariableState.Pending]: { color: "#EBC7FF", label: "Pending" },
91
121
  [variable.VariableState.Draft]: { color: "#4D3019", label: "Draft" },
@@ -95,6 +125,7 @@ const Modal = ({ isOpen, onClose, variableId, status, requirementType, descripti
95
125
  label: "Action Required",
96
126
  },
97
127
  [variable.VariableState.Accepted]: { color: "#DBF59A", label: "Accepted" },
128
+ [variable.VariableState.Rejected]: { color: "#4D3019", label: "Rejected" },
98
129
  [variable.VariableState.NotStarted]: { color: "#000000ff", label: "Not Started" },
99
130
  };
100
131
  const reqTypeConfig = {
@@ -111,21 +142,22 @@ const Modal = ({ isOpen, onClose, variableId, status, requirementType, descripti
111
142
  label: "Optional",
112
143
  },
113
144
  };
114
- const statusStyle = variableState
115
- ? statusConfig[variableState]
116
- : { color: "#ccc", label: "Unknown" };
145
+ const statusStyle = statusConfig[variable$1.state] ?? {
146
+ color: "#ccc",
147
+ label: "Unknown",
148
+ };
117
149
  const requirementTypeStyle = variableReqType
118
150
  ? reqTypeConfig[variableReqType]
119
151
  : { color: "#ccc", label: "Unknown" };
120
152
  const handleSave = () => {
121
153
  setIsSaving(true);
122
154
  const payloadValue = toStorage(textValue);
123
- onSave?.(payloadValue, useDefaultValue);
155
+ onSave?.(payloadValue, useDefaultValue, isChildEditable);
124
156
  };
125
157
  const handleSubmit = () => {
126
158
  setIsSubmitting(true);
127
159
  const payloadValue = toStorage(textValue);
128
- onSubmit?.(payloadValue, useDefaultValue);
160
+ onSubmit?.(payloadValue, useDefaultValue, isChildEditable);
129
161
  };
130
162
  return (jsxRuntime.jsxs(StyledDialog, { open: isOpen, onClose: onClose, maxWidth: "md", fullWidth: true, children: [jsxRuntime.jsx(material.IconButton, { onClick: onClose, disabled: isLoading, sx: {
131
163
  position: "absolute",
@@ -156,16 +188,16 @@ const Modal = ({ isOpen, onClose, variableId, status, requirementType, descripti
156
188
  py: 1,
157
189
  borderRadius: 0,
158
190
  px: 2,
159
- } }))] }), jsxRuntime.jsx(material.Typography, { sx: { mb: 3, lineHeight: 1.6, whiteSpace: "pre-line" }, children: index.default(description) }), variableState === variable.VariableState.ActionRequired && note && (jsxRuntime.jsx(Alert.Alert, { variant: "error", icon: jsxRuntime.jsx(iconsMaterial.InfoOutlineRounded, { sx: { fontSize: 20 } }), sx: {
191
+ } }))] }), jsxRuntime.jsx(material.Typography, { sx: { mb: 3, lineHeight: 1.6, whiteSpace: "pre-line" }, children: index.default(variable$1.customerHelpText) }), variableState === variable.VariableState.ActionRequired &&
192
+ variable$1.feedback && (jsxRuntime.jsx(Alert.Alert, { variant: "error", icon: jsxRuntime.jsx(iconsMaterial.InfoOutlineRounded, { sx: { fontSize: 20 } }), sx: {
160
193
  mb: 2,
161
- }, children: note })), variableState !== variable.VariableState.ActionRequired && note && (jsxRuntime.jsx(Alert.Alert, { variant: "info", icon: jsxRuntime.jsx(iconsMaterial.ArticleRounded, { sx: { fontSize: 20, color: theme.palette.text.primary } }), sx: {
194
+ }, children: variable$1.feedback })), variableState !== variable.VariableState.ActionRequired &&
195
+ variable$1.feedback && (jsxRuntime.jsx(Alert.Alert, { variant: "info", icon: jsxRuntime.jsx(iconsMaterial.ArticleRounded, { sx: { fontSize: 20, color: theme.palette.text.primary } }), sx: {
162
196
  mb: 2,
163
197
  backgroundColor: "#00000000",
164
198
  borderColor: "#acacacff",
165
199
  color: theme.palette.text.primary,
166
- }, children: note })), jsxRuntime.jsx(material.TextField, { multiline: true, rows: 6, fullWidth: true, value: textValue, onChange: (e) => setTextValue(e.target.value), disabled: useDefaultValue ||
167
- canSubmitSave ||
168
- variableState === variable.VariableState.Declined, sx: {
200
+ }, children: variable$1.feedback })), jsxRuntime.jsx(material.TextField, { multiline: true, rows: 6, fullWidth: true, value: textValue, onChange: (e) => setTextValue(e.target.value), disabled: useDefaultValue || cannotEdit, sx: {
169
201
  mb: 2,
170
202
  "& .MuiOutlinedInput-root": {
171
203
  backgroundColor: useDefaultValue || canSubmitSave
@@ -173,12 +205,17 @@ const Modal = ({ isOpen, onClose, variableId, status, requirementType, descripti
173
205
  : "#fff",
174
206
  borderRadius: 2,
175
207
  },
176
- } }), jsxRuntime.jsx(material.FormControlLabel, { control: jsxRuntime.jsx(material.Checkbox, { checked: useDefaultValue, disabled: canSubmitSave || variableState === variable.VariableState.Declined, onChange: handleUseDefaultValueChange, sx: {
208
+ } }), jsxRuntime.jsx(material.FormControlLabel, { control: jsxRuntime.jsx(material.Checkbox, { checked: useDefaultValue, disabled: cannotEdit, onChange: handleUseDefaultValueChange, sx: {
209
+ color: theme.palette.primary.main,
210
+ "&.Mui-checked": {
211
+ color: theme.palette.primary.main,
212
+ },
213
+ } }), label: "Use Default Wording", sx: { mb: 3 } }), !isLeafOrganisation && variable$1.scope === variable.VariableScope.Network ? (jsxRuntime.jsx(material.FormControlLabel, { control: jsxRuntime.jsx(material.Checkbox, { checked: isChildEditable, disabled: cannotEdit, onChange: handleIsChildEditableHandler, sx: {
177
214
  color: theme.palette.primary.main,
178
215
  "&.Mui-checked": {
179
216
  color: theme.palette.primary.main,
180
217
  },
181
- } }), label: "Use Default Wording", sx: { mb: 3 } }), jsxRuntime.jsxs(material.Box, { sx: {
218
+ } }), label: "Is Child Editable", sx: { mb: 3 } })) : (jsxRuntime.jsx(jsxRuntime.Fragment, {})), jsxRuntime.jsxs(material.Box, { sx: {
182
219
  display: "flex",
183
220
  flexDirection: { xs: "column", sm: "row" },
184
221
  alignItems: { xs: "stretch", sm: "center" },
@@ -187,12 +224,12 @@ const Modal = ({ isOpen, onClose, variableId, status, requirementType, descripti
187
224
  pt: 3,
188
225
  borderTop: "1px solid",
189
226
  borderColor: "divider",
190
- }, children: [variableState !== variable.VariableState.Declined ? (jsxRuntime.jsxs(material.Box, { sx: { display: "flex", gap: 1.5, flexWrap: "wrap" }, children: [useDefaultValue === false ? (jsxRuntime.jsx(Button.Button, { onClick: handleSave, variant: "outline", size: "md", disabled: canSubmitSave, children: isSaving ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(material.CircularProgress, { size: 20 }), jsxRuntime.jsx(material.Typography, { sx: { paddingLeft: 2 }, children: "Saving..." })] })) : ("Save") })) : (jsxRuntime.jsx(jsxRuntime.Fragment, {})), jsxRuntime.jsx(Button.Button, { onClick: handleSubmit, variant: "outline", size: "md", disabled: canSubmitSave || (useDefaultValue && useDefault) || (canBeBlank === false && textValue.trim().length <= 0), sx: {
227
+ }, children: [variableState !== variable.VariableState.Declined ? (jsxRuntime.jsxs(material.Box, { sx: { display: "flex", gap: 1.5, flexWrap: "wrap" }, children: [!useDefaultValue && (jsxRuntime.jsx(Button.Button, { onClick: handleSave, variant: "outline", size: "md", disabled: !isTextDirty || canSubmitSave || isBlankInvalid, children: isSaving ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(material.CircularProgress, { size: 20 }), jsxRuntime.jsx(material.Typography, { sx: { paddingLeft: 2 }, children: "Saving..." })] })) : ("Save as Draft") })), jsxRuntime.jsx(Button.Button, { onClick: handleSubmit, variant: "outline", size: "md", disabled: isSubmitDisabled, sx: {
191
228
  backgroundColor: theme.palette.primary.main + "52",
192
229
  "&:hover": {
193
230
  backgroundColor: theme.palette.primary.main + "80",
194
231
  },
195
- }, children: isSubmitting ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(material.CircularProgress, { size: 20 }), jsxRuntime.jsx(material.Typography, { sx: { paddingLeft: 2 }, children: "Submitting..." })] })) : useDefaultValue && useDefault ? ("Default already Accepted") : useDefaultValue === false ? ("Submit for review") : ("Submit") }), variableReqType === variable.RequirementType.Optional && (jsxRuntime.jsx(Button.Button, { onClick: onDeclineWording, variant: "outline", size: "md", sx: {
232
+ }, children: isSubmitting ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(material.CircularProgress, { size: 20 }), jsxRuntime.jsx(material.Typography, { sx: { paddingLeft: 2 }, children: "Submitting..." })] })) : (submitButtonLabel) }), variableReqType === variable.RequirementType.Optional && (jsxRuntime.jsx(Button.Button, { onClick: onDeclineWording, variant: "outline", size: "md", sx: {
196
233
  backgroundColor: "#ff464652",
197
234
  "&:hover": {
198
235
  backgroundColor: "#ff464680", // Darker purple on hover
@@ -200,11 +237,11 @@ const Modal = ({ isOpen, onClose, variableId, status, requirementType, descripti
200
237
  }, disabled: canSubmitSave, children: "Decline wording" }))] })) : (jsxRuntime.jsx(material.Box, { sx: { display: "flex", gap: 1.5, flexWrap: "wrap" }, children: jsxRuntime.jsx(Button.Button, { onClick: () => {
201
238
  setIsSubmitting(true);
202
239
  // Pass the default value and true directly to onSubmit
203
- const payloadValue = toStorage(toDisplay(defaultValue));
240
+ const payloadValue = toStorage(toDisplay(variable$1.defaultValue ?? ""));
204
241
  setCustomValue(textValue);
205
- setTextValue(toDisplay(defaultValue));
242
+ setTextValue(toDisplay(variable$1.defaultValue ?? ""));
206
243
  setUseDefaultValue(true);
207
- onSubmit?.(payloadValue, true);
244
+ onSubmit?.(payloadValue, true, isChildEditable);
208
245
  }, variant: "outline", size: "md", disabled: canSubmitSave, sx: {
209
246
  backgroundColor: "#ff464652",
210
247
  "&:hover": {
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","sources":["../../../../src/components/Modal.tsx"],"sourcesContent":["import React, { use, useEffect, useState } from \"react\";\r\nimport {\r\n Dialog,\r\n DialogContent,\r\n IconButton,\r\n Box,\r\n Typography,\r\n TextField,\r\n Checkbox,\r\n FormControlLabel,\r\n Alert as MuiAlert,\r\n Chip,\r\n styled,\r\n CircularProgress,\r\n useTheme,\r\n} from \"@mui/material\";\r\nimport { Button } from \"./Button\";\r\nimport {\r\n ArrowBackIosRounded,\r\n ArrowForwardIosRounded,\r\n ArticleRounded,\r\n CloseRounded,\r\n ErrorOutlineRounded,\r\n InfoOutlineRounded,\r\n StickyNote2Rounded,\r\n} from \"@mui/icons-material\";\r\nimport { Alert } from \"./Alert\";\r\nimport { toast } from \"react-toastify\";\r\nimport parse from \"html-react-parser\";\r\nimport { VariableState, RequirementType } from \"../types/variable\";\r\nimport {\r\n mapRequirementTypeToState,\r\n mapStatusToVariableState,\r\n} from \"../helpers/variableProcessing\";\r\n\r\ninterface ModalProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n variableId: string;\r\n status: string;\r\n requirementType: string;\r\n description: string;\r\n value: string;\r\n defaultValue: string;\r\n note?: string;\r\n onSave?: (fieldValue: string, defaultChecked: boolean) => void;\r\n onSubmit?: (fieldValue: string, defaultChecked: boolean) => void;\r\n successMessage?: string;\r\n errorMessage?: string;\r\n onDeclineWording?: () => void;\r\n onPrevious?: () => void;\r\n onNext?: () => void;\r\n currentPage?: number;\r\n totalPages?: number;\r\n isLoading: boolean;\r\n useDefault: boolean;\r\n canBeBlank?: boolean;\r\n}\r\n\r\nconst StyledDialog = styled(Dialog)(({ theme }) => ({\r\n \"& .MuiDialog-paper\": {\r\n color: theme.palette.background.default,\r\n borderRadius: theme.shape.borderRadius,\r\n maxWidth: \"896px\",\r\n width: \"100%\",\r\n maxHeight: \"90vh\",\r\n },\r\n}));\r\n\r\nconst NavButton = styled(IconButton)(({ theme }) => ({\r\n width: \"40px\",\r\n height: \"40px\",\r\n borderRadius: 999,\r\n border: `2px solid ${theme.palette.dark.main}`,\r\n backgroundColor: \"#fff\",\r\n padding: theme.spacing(1, 2),\r\n \"&:hover\": {\r\n backgroundColor: theme.palette.grey[100], // Changed from dark.main to grey[100]\r\n color: theme.palette.dark.main, // Keep text dark instead of light\r\n borderColor: theme.palette.dark.main, // Keep border dark\r\n },\r\n}));\r\n\r\nexport const Modal: React.FC<ModalProps> = ({\r\n isOpen,\r\n onClose,\r\n variableId,\r\n status,\r\n requirementType,\r\n description,\r\n value,\r\n defaultValue,\r\n note,\r\n onSave,\r\n onSubmit,\r\n successMessage,\r\n errorMessage,\r\n onDeclineWording,\r\n onPrevious,\r\n onNext,\r\n currentPage = 1,\r\n totalPages = 1,\r\n isLoading,\r\n useDefault,\r\n canBeBlank,\r\n}) => {\r\n const variableState = mapStatusToVariableState(status);\r\n const variableReqType = mapRequirementTypeToState(requirementType);\r\n\r\n const [textValue, setTextValue] = useState(value);\r\n const [customValue, setCustomValue] = useState(\"\");\r\n\r\n const [useDefaultValue, setUseDefaultValue] = useState(true);\r\n const [isSaving, setIsSaving] = useState(false);\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n\r\n const theme = useTheme();\r\n\r\n const toDisplay = (str: string) => str?.replace(/\\\\n/g, \"\\n\") ?? \"\";\r\n const toStorage = (str: string) => str?.replace(/\\r?\\n/g, \"\\\\n\") ?? \"\";\r\n\r\n useEffect(() => {\r\n const displayValue = toDisplay(value);\r\n const displayDefault = toDisplay(defaultValue);\r\n\r\n const isUsingDefault = useDefault || displayValue === displayDefault;\r\n\r\n setUseDefaultValue(isUsingDefault);\r\n setTextValue(displayValue);\r\n setCustomValue(isUsingDefault ? \"\" : displayValue);\r\n }, [variableId, value, defaultValue]);\r\n\r\n useEffect(() => {\r\n if (!isOpen) {\r\n setIsSaving(false);\r\n setIsSubmitting(false);\r\n }\r\n }, [isOpen]);\r\n\r\n useEffect(() => {\r\n if (successMessage && successMessage !== \"\") {\r\n toast.success(successMessage);\r\n }\r\n }, [successMessage]);\r\n\r\n useEffect(() => {\r\n if (errorMessage && errorMessage !== \"\") {\r\n toast.error(errorMessage);\r\n }\r\n }, [errorMessage]);\r\n\r\n useEffect(() => {\r\n if (!isLoading) {\r\n setIsSaving(false);\r\n setIsSubmitting(false);\r\n }\r\n }, [isLoading]);\r\n\r\n const handleUseDefaultValueChange = (\r\n event: React.ChangeEvent<HTMLInputElement>,\r\n ) => {\r\n const checked = event.target.checked;\r\n\r\n if (checked) {\r\n setCustomValue(textValue);\r\n setTextValue(toDisplay(defaultValue));\r\n } else {\r\n setTextValue(customValue || \"\");\r\n }\r\n\r\n setUseDefaultValue(checked);\r\n };\r\n\r\n const canSubmitSave = isLoading || variableState === VariableState.Pending;\r\n\r\n const statusConfig = {\r\n [VariableState.Pending]: { color: \"#EBC7FF\", label: \"Pending\" },\r\n [VariableState.Draft]: { color: \"#4D3019\", label: \"Draft\" },\r\n [VariableState.Declined]: { color: \"#4D3019\", label: \"Declined\" },\r\n [VariableState.ActionRequired]: {\r\n color: \"#FFBCB3\",\r\n label: \"Action Required\",\r\n },\r\n [VariableState.Accepted]: { color: \"#DBF59A\", label: \"Accepted\" },\r\n [VariableState.NotStarted]: { color: \"#000000ff\", label: \"Not Started\" },\r\n };\r\n\r\n const reqTypeConfig = {\r\n Default: {\r\n color: \"#F5A623\",\r\n highlight: \"#f3bf6bff\",\r\n highlightSelected: \"#F5A623\",\r\n label: \"Mandatory\",\r\n },\r\n Optional: {\r\n color: \"#F5D76E\",\r\n highlight: \"#f3e2a5ff\",\r\n highlightSelected: \"#F5D76E\",\r\n label: \"Optional\",\r\n },\r\n };\r\n\r\n const statusStyle = variableState\r\n ? statusConfig[variableState]\r\n : { color: \"#ccc\", label: \"Unknown\" };\r\n const requirementTypeStyle = variableReqType\r\n ? reqTypeConfig[variableReqType]\r\n : { color: \"#ccc\", label: \"Unknown\" };\r\n\r\n const handleSave = () => {\r\n setIsSaving(true);\r\n const payloadValue = toStorage(textValue);\r\n onSave?.(payloadValue, useDefaultValue);\r\n };\r\n\r\n const handleSubmit = () => {\r\n setIsSubmitting(true);\r\n const payloadValue = toStorage(textValue);\r\n onSubmit?.(payloadValue, useDefaultValue);\r\n };\r\n\r\n return (\r\n <StyledDialog open={isOpen} onClose={onClose} maxWidth=\"md\" fullWidth>\r\n <IconButton\r\n onClick={onClose}\r\n disabled={isLoading}\r\n sx={{\r\n position: \"absolute\",\r\n top: 16,\r\n right: 16,\r\n zIndex: 1,\r\n }}\r\n >\r\n <CloseRounded sx={{ fontSize: 24 }} />\r\n </IconButton>\r\n\r\n <DialogContent sx={{ p: { xs: 3, sm: 4, md: 6 } }}>\r\n {/* Status Chip */}\r\n <Box sx={{ mb: 3 }}>\r\n <Chip\r\n label={requirementTypeStyle.label.toUpperCase()}\r\n sx={{\r\n mr: 3,\r\n border: \"3px solid\",\r\n backgroundColor: requirementTypeStyle.color,\r\n borderColor: requirementTypeStyle.color,\r\n color: theme.palette.text.primary,\r\n fontWeight: 600,\r\n fontSize: \"0.875rem\",\r\n height: \"auto\",\r\n py: 1,\r\n borderRadius: 0,\r\n px: 2,\r\n }}\r\n />\r\n {variableState !== VariableState.NotStarted && (\r\n <Chip\r\n label={statusStyle.label.toUpperCase()}\r\n sx={{\r\n mr: 3,\r\n border: \"3px solid\",\r\n backgroundColor: theme.palette.background.paper,\r\n borderColor: statusStyle.color,\r\n color: theme.palette.text.primary,\r\n fontWeight: 600,\r\n fontSize: \"0.875rem\",\r\n height: \"auto\",\r\n py: 1,\r\n borderRadius: 0,\r\n px: 2,\r\n }}\r\n />\r\n )}\r\n </Box>\r\n\r\n {/* Description */}\r\n <Typography sx={{ mb: 3, lineHeight: 1.6, whiteSpace: \"pre-line\" }}>\r\n {parse(description)}\r\n </Typography>\r\n\r\n {/* Error Alert with Custom Icon */}\r\n {variableState === VariableState.ActionRequired && note && (\r\n <Alert\r\n variant=\"error\"\r\n icon={<InfoOutlineRounded sx={{ fontSize: 20 }} />}\r\n sx={{\r\n mb: 2,\r\n }}\r\n >\r\n {note}\r\n </Alert>\r\n )}\r\n\r\n {/* Info Alert with Custom Background and Icon */}\r\n {variableState !== VariableState.ActionRequired && note && (\r\n <Alert\r\n variant=\"info\"\r\n icon={\r\n <ArticleRounded\r\n sx={{ fontSize: 20, color: theme.palette.text.primary }}\r\n />\r\n }\r\n sx={{\r\n mb: 2,\r\n backgroundColor: \"#00000000\",\r\n borderColor: \"#acacacff\",\r\n color: theme.palette.text.primary,\r\n }}\r\n >\r\n {note}\r\n </Alert>\r\n )}\r\n\r\n {/* Text Field */}\r\n <TextField\r\n multiline\r\n rows={6}\r\n fullWidth\r\n value={textValue}\r\n onChange={(e) => setTextValue(e.target.value)}\r\n disabled={\r\n useDefaultValue ||\r\n canSubmitSave ||\r\n variableState === VariableState.Declined\r\n }\r\n sx={{\r\n mb: 2,\r\n \"& .MuiOutlinedInput-root\": {\r\n backgroundColor:\r\n useDefaultValue || canSubmitSave\r\n ? \"rgba(0, 0, 0, 0.05)\"\r\n : \"#fff\",\r\n borderRadius: 2,\r\n },\r\n }}\r\n />\r\n\r\n {/* Checkbox */}\r\n <FormControlLabel\r\n control={\r\n <Checkbox\r\n checked={useDefaultValue}\r\n disabled={\r\n canSubmitSave || variableState === VariableState.Declined\r\n }\r\n onChange={handleUseDefaultValueChange}\r\n sx={{\r\n color: theme.palette.primary.main,\r\n \"&.Mui-checked\": {\r\n color: theme.palette.primary.main,\r\n },\r\n }}\r\n />\r\n }\r\n label=\"Use Default Wording\"\r\n sx={{ mb: 3 }}\r\n />\r\n\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: { xs: \"column\", sm: \"row\" },\r\n alignItems: { xs: \"stretch\", sm: \"center\" },\r\n justifyContent: \"space-between\",\r\n gap: 2,\r\n pt: 3,\r\n borderTop: \"1px solid\",\r\n borderColor: \"divider\",\r\n }}\r\n >\r\n {variableState !== VariableState.Declined ? (\r\n <Box sx={{ display: \"flex\", gap: 1.5, flexWrap: \"wrap\" }}>\r\n {useDefaultValue === false ? (\r\n <Button\r\n onClick={handleSave}\r\n variant=\"outline\"\r\n size=\"md\"\r\n disabled={canSubmitSave}\r\n >\r\n {isSaving ? (\r\n <>\r\n <CircularProgress size={20} />\r\n <Typography sx={{ paddingLeft: 2 }}>Saving...</Typography>\r\n </>\r\n ) : (\r\n \"Save\"\r\n )}\r\n </Button>\r\n ) : (\r\n <></>\r\n )}\r\n <Button\r\n onClick={handleSubmit}\r\n variant=\"outline\"\r\n size=\"md\"\r\n disabled={canSubmitSave || (useDefaultValue && useDefault) || (canBeBlank === false && textValue.trim().length <= 0)}\r\n sx={{\r\n backgroundColor: theme.palette.primary.main + \"52\",\r\n \"&:hover\": {\r\n backgroundColor: theme.palette.primary.main + \"80\",\r\n },\r\n }}\r\n >\r\n {isSubmitting ? (\r\n <>\r\n <CircularProgress size={20} />\r\n <Typography sx={{ paddingLeft: 2 }}>\r\n Submitting...\r\n </Typography>\r\n </>\r\n ) : useDefaultValue && useDefault ? (\r\n \"Default already Accepted\"\r\n ) : useDefaultValue === false ? (\r\n \"Submit for review\"\r\n ) : (\r\n \"Submit\"\r\n )}\r\n </Button>\r\n {variableReqType === RequirementType.Optional && (\r\n <Button\r\n onClick={onDeclineWording}\r\n variant=\"outline\"\r\n size=\"md\"\r\n sx={{\r\n backgroundColor: \"#ff464652\",\r\n \"&:hover\": {\r\n backgroundColor: \"#ff464680\", // Darker purple on hover\r\n },\r\n }}\r\n disabled={canSubmitSave}\r\n >\r\n Decline wording\r\n </Button>\r\n )}\r\n </Box>\r\n ) : (\r\n <Box sx={{ display: \"flex\", gap: 1.5, flexWrap: \"wrap\" }}>\r\n <Button\r\n onClick={() => {\r\n setIsSubmitting(true);\r\n // Pass the default value and true directly to onSubmit\r\n const payloadValue = toStorage(toDisplay(defaultValue));\r\n setCustomValue(textValue);\r\n setTextValue(toDisplay(defaultValue));\r\n setUseDefaultValue(true);\r\n onSubmit?.(payloadValue, true);\r\n }}\r\n variant=\"outline\"\r\n size=\"md\"\r\n disabled={canSubmitSave}\r\n sx={{\r\n backgroundColor: \"#ff464652\",\r\n \"&:hover\": {\r\n backgroundColor: \"#ff464680\",\r\n },\r\n }}\r\n >\r\n {isSubmitting ? (\r\n <>\r\n <CircularProgress size={20} />\r\n <Typography sx={{ paddingLeft: 2 }}>\r\n Restoring...\r\n </Typography>\r\n </>\r\n ) : (\r\n \"Restore wording\"\r\n )}\r\n </Button>\r\n </Box>\r\n )}\r\n {/* Navigation */}\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 1.5,\r\n justifyContent: { xs: \"space-between\", sm: \"flex-end\" },\r\n }}\r\n >\r\n {currentPage !== 1 && (\r\n <NavButton\r\n onClick={onPrevious}\r\n aria-label=\"Previous\"\r\n disabled={isLoading}\r\n >\r\n <ArrowBackIosRounded\r\n sx={{ fontSize: 20, color: theme.palette.text.primary }}\r\n />\r\n </NavButton>\r\n )}\r\n {currentPage !== totalPages && (\r\n <NavButton\r\n onClick={onNext}\r\n aria-label=\"Next\"\r\n disabled={isLoading}\r\n >\r\n <ArrowForwardIosRounded\r\n sx={{ fontSize: 20, color: theme.palette.text.primary }}\r\n />\r\n </NavButton>\r\n )}\r\n <Typography fontWeight={500} fontSize=\"1.125rem\">\r\n {currentPage}/{totalPages}\r\n </Typography>\r\n </Box>\r\n </Box>\r\n </DialogContent>\r\n </StyledDialog>\r\n );\r\n};\r\n"],"names":["styled","Dialog","IconButton","mapStatusToVariableState","mapRequirementTypeToState","useState","useTheme","useEffect","toast","VariableState","_jsxs","_jsx","CloseRounded","DialogContent","Box","Chip","Typography","parse","Alert","InfoOutlineRounded","ArticleRounded","TextField","FormControlLabel","Checkbox","Button","_Fragment","CircularProgress","RequirementType","ArrowBackIosRounded","ArrowForwardIosRounded"],"mappings":"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"}
1
+ {"version":3,"file":"Modal.js","sources":["../../../../src/components/Modal.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\r\nimport {\r\n Dialog,\r\n DialogContent,\r\n IconButton,\r\n Box,\r\n Typography,\r\n TextField,\r\n Checkbox,\r\n FormControlLabel,\r\n Alert as MuiAlert,\r\n Chip,\r\n styled,\r\n CircularProgress,\r\n useTheme,\r\n} from \"@mui/material\";\r\nimport { Button } from \"./Button\";\r\nimport {\r\n ArrowBackIosRounded,\r\n ArrowForwardIosRounded,\r\n ArticleRounded,\r\n CloseRounded,\r\n ErrorOutlineRounded,\r\n InfoOutlineRounded,\r\n StickyNote2Rounded,\r\n} from \"@mui/icons-material\";\r\nimport { Alert } from \"./Alert\";\r\nimport { toast } from \"react-toastify\";\r\nimport parse from \"html-react-parser\";\r\nimport {\r\n VariableState,\r\n RequirementType,\r\n Variable,\r\n VariableScope,\r\n} from \"../types/variable\";\r\nimport {\r\n mapRequirementTypeToState,\r\n mapStatusToVariableState,\r\n} from \"../helpers/variableProcessing\";\r\n\r\ninterface ModalProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n onSave?: (\r\n fieldValue: string,\r\n defaultChecked: boolean,\r\n isChildEditable: boolean,\r\n ) => void;\r\n onSubmit?: (\r\n fieldValue: string,\r\n defaultChecked: boolean,\r\n isChildEditable: boolean,\r\n ) => void;\r\n successMessage?: string;\r\n errorMessage?: string;\r\n onDeclineWording?: () => void;\r\n onPrevious?: () => void;\r\n onNext?: () => void;\r\n currentPage?: number;\r\n totalPages?: number;\r\n isLoading: boolean;\r\n variable: Variable;\r\n isLeafOrganisation: boolean;\r\n}\r\n\r\nconst StyledDialog = styled(Dialog)(({ theme }) => ({\r\n \"& .MuiDialog-paper\": {\r\n color: theme.palette.background.default,\r\n borderRadius: theme.shape.borderRadius,\r\n maxWidth: \"896px\",\r\n width: \"100%\",\r\n maxHeight: \"90vh\",\r\n },\r\n}));\r\n\r\nconst NavButton = styled(IconButton)(({ theme }) => ({\r\n width: \"40px\",\r\n height: \"40px\",\r\n borderRadius: 999,\r\n border: `2px solid ${theme.palette.dark.main}`,\r\n backgroundColor: \"#fff\",\r\n padding: theme.spacing(1, 2),\r\n \"&:hover\": {\r\n backgroundColor: theme.palette.grey[100], // Changed from dark.main to grey[100]\r\n color: theme.palette.dark.main, // Keep text dark instead of light\r\n borderColor: theme.palette.dark.main, // Keep border dark\r\n },\r\n}));\r\n\r\nexport const Modal: React.FC<ModalProps> = ({\r\n isOpen,\r\n onClose,\r\n onSave,\r\n onSubmit,\r\n successMessage,\r\n errorMessage,\r\n onDeclineWording,\r\n onPrevious,\r\n onNext,\r\n currentPage = 1,\r\n totalPages = 1,\r\n isLoading,\r\n variable,\r\n isLeafOrganisation,\r\n}) => {\r\n const variableState = mapStatusToVariableState(variable.state);\r\n const variableReqType = mapRequirementTypeToState(variable.requirementType);\r\n\r\n const [textValue, setTextValue] = useState(variable.value);\r\n const [customValue, setCustomValue] = useState(\"\");\r\n\r\n const [useDefaultValue, setUseDefaultValue] = useState(\r\n variable.useDefault ?? false,\r\n );\r\n const [isChildEditable, setIsChildEditable] = useState(\r\n variable.isChildEditable ?? false,\r\n );\r\n\r\n const [isSaving, setIsSaving] = useState(false);\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n\r\n const theme = useTheme();\r\n\r\n const toDisplay = (str: string) => str?.replace(/\\\\n/g, \"\\n\") ?? \"\";\r\n const toStorage = (str: string) => str?.replace(/\\r?\\n/g, \"\\\\n\") ?? \"\";\r\n const displayValue = toDisplay(variable.value);\r\n const displayDefault = toDisplay(variable.defaultValue ?? \"\");\r\n const originalUseDefaultValue =\r\n (variable.useDefault ?? false) || displayValue === displayDefault;\r\n const originalIsChildEditable = variable.isChildEditable ?? false;\r\n\r\n const isSettingsDirty = isChildEditable !== originalIsChildEditable;\r\n const isDefaultSelectionDirty = useDefaultValue !== originalUseDefaultValue;\r\n const isTextDirty = !useDefaultValue && textValue !== displayValue;\r\n\r\n useEffect(() => {\r\n setIsChildEditable(originalIsChildEditable);\r\n setUseDefaultValue(originalUseDefaultValue);\r\n setTextValue(displayValue);\r\n setCustomValue(originalUseDefaultValue ? \"\" : displayValue);\r\n }, [\r\n displayValue,\r\n originalIsChildEditable,\r\n originalUseDefaultValue,\r\n variable._id,\r\n ]);\r\n\r\n useEffect(() => {\r\n if (!isOpen) {\r\n setIsSaving(false);\r\n setIsSubmitting(false);\r\n }\r\n }, [isOpen]);\r\n\r\n useEffect(() => {\r\n if (successMessage && successMessage !== \"\") {\r\n toast.success(successMessage);\r\n }\r\n }, [successMessage]);\r\n\r\n useEffect(() => {\r\n if (errorMessage && errorMessage !== \"\") {\r\n toast.error(errorMessage);\r\n }\r\n }, [errorMessage]);\r\n\r\n useEffect(() => {\r\n if (!isLoading) {\r\n setIsSaving(false);\r\n setIsSubmitting(false);\r\n }\r\n }, [isLoading]);\r\n\r\n const handleUseDefaultValueChange = (\r\n event: React.ChangeEvent<HTMLInputElement>,\r\n ) => {\r\n const checked = event.target.checked;\r\n\r\n if (checked) {\r\n setCustomValue(textValue);\r\n setTextValue(toDisplay(variable.defaultValue ?? \"\"));\r\n } else {\r\n setTextValue(customValue || \"\");\r\n }\r\n\r\n setUseDefaultValue(checked);\r\n };\r\n\r\n const handleIsChildEditableHandler = (\r\n event: React.ChangeEvent<HTMLInputElement>,\r\n ) => {\r\n const checked = event.target.checked;\r\n setIsChildEditable(checked);\r\n };\r\n\r\n const canSubmitSave = isLoading || variableState === VariableState.Pending;\r\n const cannotEdit = canSubmitSave || variableState === VariableState.Declined;\r\n const isBlankInvalid =\r\n variable.canBeBlank === false && textValue.trim().length <= 0;\r\n const submitButtonLabel = useDefaultValue\r\n ? variable.useDefault && !isDefaultSelectionDirty\r\n ? isSettingsDirty\r\n ? \"Save changes\"\r\n : \"Default already accepted\"\r\n : \"Accept Default\"\r\n : isTextDirty\r\n ? \"Submit for review\"\r\n : \"Save changes\";\r\n const isSubmitDisabled =\r\n canSubmitSave ||\r\n isBlankInvalid ||\r\n (useDefaultValue && variable.useDefault && !isSettingsDirty) ||\r\n (!useDefaultValue && !isTextDirty && !isSettingsDirty);\r\n\r\n const statusConfig = {\r\n [VariableState.Pending]: { color: \"#EBC7FF\", label: \"Pending\" },\r\n [VariableState.Draft]: { color: \"#4D3019\", label: \"Draft\" },\r\n [VariableState.Declined]: { color: \"#4D3019\", label: \"Declined\" },\r\n [VariableState.ActionRequired]: {\r\n color: \"#FFBCB3\",\r\n label: \"Action Required\",\r\n },\r\n [VariableState.Accepted]: { color: \"#DBF59A\", label: \"Accepted\" },\r\n [VariableState.Rejected]: { color: \"#4D3019\", label: \"Rejected\" },\r\n [VariableState.NotStarted]: { color: \"#000000ff\", label: \"Not Started\" },\r\n };\r\n\r\n const reqTypeConfig = {\r\n Default: {\r\n color: \"#F5A623\",\r\n highlight: \"#f3bf6bff\",\r\n highlightSelected: \"#F5A623\",\r\n label: \"Mandatory\",\r\n },\r\n Optional: {\r\n color: \"#F5D76E\",\r\n highlight: \"#f3e2a5ff\",\r\n highlightSelected: \"#F5D76E\",\r\n label: \"Optional\",\r\n },\r\n };\r\n\r\n const statusStyle = statusConfig[variable.state] ?? {\r\n color: \"#ccc\",\r\n label: \"Unknown\",\r\n };\r\n const requirementTypeStyle = variableReqType\r\n ? reqTypeConfig[variableReqType]\r\n : { color: \"#ccc\", label: \"Unknown\" };\r\n\r\n const handleSave = () => {\r\n setIsSaving(true);\r\n const payloadValue = toStorage(textValue);\r\n onSave?.(payloadValue, useDefaultValue, isChildEditable);\r\n };\r\n\r\n const handleSubmit = () => {\r\n setIsSubmitting(true);\r\n const payloadValue = toStorage(textValue);\r\n onSubmit?.(payloadValue, useDefaultValue, isChildEditable);\r\n };\r\n\r\n return (\r\n <StyledDialog open={isOpen} onClose={onClose} maxWidth=\"md\" fullWidth>\r\n <IconButton\r\n onClick={onClose}\r\n disabled={isLoading}\r\n sx={{\r\n position: \"absolute\",\r\n top: 16,\r\n right: 16,\r\n zIndex: 1,\r\n }}\r\n >\r\n <CloseRounded sx={{ fontSize: 24 }} />\r\n </IconButton>\r\n\r\n <DialogContent sx={{ p: { xs: 3, sm: 4, md: 6 } }}>\r\n {/* Status Chip */}\r\n <Box sx={{ mb: 3 }}>\r\n <Chip\r\n label={requirementTypeStyle.label.toUpperCase()}\r\n sx={{\r\n mr: 3,\r\n border: \"3px solid\",\r\n backgroundColor: requirementTypeStyle.color,\r\n borderColor: requirementTypeStyle.color,\r\n color: theme.palette.text.primary,\r\n fontWeight: 600,\r\n fontSize: \"0.875rem\",\r\n height: \"auto\",\r\n py: 1,\r\n borderRadius: 0,\r\n px: 2,\r\n }}\r\n />\r\n {variableState !== VariableState.NotStarted && (\r\n <Chip\r\n label={statusStyle.label.toUpperCase()}\r\n sx={{\r\n mr: 3,\r\n border: \"3px solid\",\r\n backgroundColor: theme.palette.background.paper,\r\n borderColor: statusStyle.color,\r\n color: theme.palette.text.primary,\r\n fontWeight: 600,\r\n fontSize: \"0.875rem\",\r\n height: \"auto\",\r\n py: 1,\r\n borderRadius: 0,\r\n px: 2,\r\n }}\r\n />\r\n )}\r\n </Box>\r\n\r\n {/* Description */}\r\n <Typography sx={{ mb: 3, lineHeight: 1.6, whiteSpace: \"pre-line\" }}>\r\n {parse(variable.customerHelpText)}\r\n </Typography>\r\n\r\n {/* Error Alert with Custom Icon */}\r\n {variableState === VariableState.ActionRequired &&\r\n variable.feedback && (\r\n <Alert\r\n variant=\"error\"\r\n icon={<InfoOutlineRounded sx={{ fontSize: 20 }} />}\r\n sx={{\r\n mb: 2,\r\n }}\r\n >\r\n {variable.feedback}\r\n </Alert>\r\n )}\r\n\r\n {/* Info Alert with Custom Background and Icon */}\r\n {variableState !== VariableState.ActionRequired &&\r\n variable.feedback && (\r\n <Alert\r\n variant=\"info\"\r\n icon={\r\n <ArticleRounded\r\n sx={{ fontSize: 20, color: theme.palette.text.primary }}\r\n />\r\n }\r\n sx={{\r\n mb: 2,\r\n backgroundColor: \"#00000000\",\r\n borderColor: \"#acacacff\",\r\n color: theme.palette.text.primary,\r\n }}\r\n >\r\n {variable.feedback}\r\n </Alert>\r\n )}\r\n\r\n {/* Text Field */}\r\n <TextField\r\n multiline\r\n rows={6}\r\n fullWidth\r\n value={textValue}\r\n onChange={(e) => setTextValue(e.target.value)}\r\n disabled={useDefaultValue || cannotEdit}\r\n sx={{\r\n mb: 2,\r\n \"& .MuiOutlinedInput-root\": {\r\n backgroundColor:\r\n useDefaultValue || canSubmitSave\r\n ? \"rgba(0, 0, 0, 0.05)\"\r\n : \"#fff\",\r\n borderRadius: 2,\r\n },\r\n }}\r\n />\r\n\r\n {/* Checkbox */}\r\n <FormControlLabel\r\n control={\r\n <Checkbox\r\n checked={useDefaultValue}\r\n disabled={cannotEdit}\r\n onChange={handleUseDefaultValueChange}\r\n sx={{\r\n color: theme.palette.primary.main,\r\n \"&.Mui-checked\": {\r\n color: theme.palette.primary.main,\r\n },\r\n }}\r\n />\r\n }\r\n label=\"Use Default Wording\"\r\n sx={{ mb: 3 }}\r\n />\r\n\r\n {/* Checkbox */}\r\n {!isLeafOrganisation && variable.scope === VariableScope.Network ? (\r\n <FormControlLabel\r\n control={\r\n <Checkbox\r\n checked={isChildEditable}\r\n disabled={cannotEdit}\r\n onChange={handleIsChildEditableHandler}\r\n sx={{\r\n color: theme.palette.primary.main,\r\n \"&.Mui-checked\": {\r\n color: theme.palette.primary.main,\r\n },\r\n }}\r\n />\r\n }\r\n label=\"Is Child Editable\"\r\n sx={{ mb: 3 }}\r\n />\r\n ) : (\r\n <></>\r\n )}\r\n\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: { xs: \"column\", sm: \"row\" },\r\n alignItems: { xs: \"stretch\", sm: \"center\" },\r\n justifyContent: \"space-between\",\r\n gap: 2,\r\n pt: 3,\r\n borderTop: \"1px solid\",\r\n borderColor: \"divider\",\r\n }}\r\n >\r\n {variableState !== VariableState.Declined ? (\r\n <Box sx={{ display: \"flex\", gap: 1.5, flexWrap: \"wrap\" }}>\r\n {!useDefaultValue && (\r\n <Button\r\n onClick={handleSave}\r\n variant=\"outline\"\r\n size=\"md\"\r\n disabled={!isTextDirty || canSubmitSave || isBlankInvalid}\r\n >\r\n {isSaving ? (\r\n <>\r\n <CircularProgress size={20} />\r\n <Typography sx={{ paddingLeft: 2 }}>Saving...</Typography>\r\n </>\r\n ) : (\r\n \"Save as Draft\"\r\n )}\r\n </Button>\r\n )}\r\n <Button\r\n onClick={handleSubmit}\r\n variant=\"outline\"\r\n size=\"md\"\r\n disabled={isSubmitDisabled}\r\n sx={{\r\n backgroundColor: theme.palette.primary.main + \"52\",\r\n \"&:hover\": {\r\n backgroundColor: theme.palette.primary.main + \"80\",\r\n },\r\n }}\r\n >\r\n {isSubmitting ? (\r\n <>\r\n <CircularProgress size={20} />\r\n <Typography sx={{ paddingLeft: 2 }}>\r\n Submitting...\r\n </Typography>\r\n </>\r\n ) : (\r\n submitButtonLabel\r\n )}\r\n </Button>\r\n {variableReqType === RequirementType.Optional && (\r\n <Button\r\n onClick={onDeclineWording}\r\n variant=\"outline\"\r\n size=\"md\"\r\n sx={{\r\n backgroundColor: \"#ff464652\",\r\n \"&:hover\": {\r\n backgroundColor: \"#ff464680\", // Darker purple on hover\r\n },\r\n }}\r\n disabled={canSubmitSave}\r\n >\r\n Decline wording\r\n </Button>\r\n )}\r\n </Box>\r\n ) : (\r\n <Box sx={{ display: \"flex\", gap: 1.5, flexWrap: \"wrap\" }}>\r\n <Button\r\n onClick={() => {\r\n setIsSubmitting(true);\r\n // Pass the default value and true directly to onSubmit\r\n const payloadValue = toStorage(\r\n toDisplay(variable.defaultValue ?? \"\"),\r\n );\r\n setCustomValue(textValue);\r\n setTextValue(toDisplay(variable.defaultValue ?? \"\"));\r\n setUseDefaultValue(true);\r\n onSubmit?.(payloadValue, true, isChildEditable);\r\n }}\r\n variant=\"outline\"\r\n size=\"md\"\r\n disabled={canSubmitSave}\r\n sx={{\r\n backgroundColor: \"#ff464652\",\r\n \"&:hover\": {\r\n backgroundColor: \"#ff464680\",\r\n },\r\n }}\r\n >\r\n {isSubmitting ? (\r\n <>\r\n <CircularProgress size={20} />\r\n <Typography sx={{ paddingLeft: 2 }}>\r\n Restoring...\r\n </Typography>\r\n </>\r\n ) : (\r\n \"Restore wording\"\r\n )}\r\n </Button>\r\n </Box>\r\n )}\r\n {/* Navigation */}\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 1.5,\r\n justifyContent: { xs: \"space-between\", sm: \"flex-end\" },\r\n }}\r\n >\r\n {currentPage !== 1 && (\r\n <NavButton\r\n onClick={onPrevious}\r\n aria-label=\"Previous\"\r\n disabled={isLoading}\r\n >\r\n <ArrowBackIosRounded\r\n sx={{ fontSize: 20, color: theme.palette.text.primary }}\r\n />\r\n </NavButton>\r\n )}\r\n {currentPage !== totalPages && (\r\n <NavButton\r\n onClick={onNext}\r\n aria-label=\"Next\"\r\n disabled={isLoading}\r\n >\r\n <ArrowForwardIosRounded\r\n sx={{ fontSize: 20, color: theme.palette.text.primary }}\r\n />\r\n </NavButton>\r\n )}\r\n <Typography fontWeight={500} fontSize=\"1.125rem\">\r\n {currentPage}/{totalPages}\r\n </Typography>\r\n </Box>\r\n </Box>\r\n </DialogContent>\r\n </StyledDialog>\r\n );\r\n};\r\n"],"names":["styled","Dialog","IconButton","variable","mapStatusToVariableState","mapRequirementTypeToState","useState","useTheme","useEffect","toast","VariableState","_jsxs","_jsx","CloseRounded","DialogContent","Box","Chip","Typography","parse","Alert","InfoOutlineRounded","ArticleRounded","TextField","FormControlLabel","Checkbox","VariableScope","_Fragment","Button","CircularProgress","RequirementType","ArrowBackIosRounded","ArrowForwardIosRounded"],"mappings":"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"}