ece-docs-components 1.0.103 → 1.0.105

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.
@@ -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=index8.js.map
@@ -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=index9.js.map
@@ -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, }) => {
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), 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}\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}) => {\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)}\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":";;;;;;;;;;;;;AA0DA,MAAM,YAAY,GAAGA,eAAM,CAACC,eAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;AAClD,IAAA,oBAAoB,EAAE;AACpB,QAAA,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO;AACvC,QAAA,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY;AACtC,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,SAAS,EAAE,MAAM;AAClB,KAAA;AACF,CAAA,CAAC,CAAC;AAEH,MAAM,SAAS,GAAGD,eAAM,CAACE,mBAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;AACnD,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,YAAY,EAAE,GAAG;IACjB,MAAM,EAAE,aAAa,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAA,CAAE;AAC9C,IAAA,eAAe,EAAE,MAAM;IACvB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5B,IAAA,SAAS,EAAE;QACT,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QACxC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI;QAC9B,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI;AACrC,KAAA;AACF,CAAA,CAAC,CAAC;MAEU,KAAK,GAAyB,CAAC,EAC1C,MAAM,EACN,OAAO,EACP,UAAU,EACV,MAAM,EACN,eAAe,EACf,WAAW,EACX,KAAK,EACL,YAAY,EACZ,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,MAAM,EACN,WAAW,GAAG,CAAC,EACf,UAAU,GAAG,CAAC,EACd,SAAS,EACT,UAAU,GACX,KAAI;AACH,IAAA,MAAM,aAAa,GAAGC,2CAAwB,CAAC,MAAM,CAAC;AACtD,IAAA,MAAM,eAAe,GAAGC,4CAAyB,CAAC,eAAe,CAAC;IAElE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAGC,cAAQ,CAAC,KAAK,CAAC;IACjD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAGA,cAAQ,CAAC,EAAE,CAAC;IAElD,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAGA,cAAQ,CAAC,IAAI,CAAC;IAC5D,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAGA,cAAQ,CAAC,KAAK,CAAC;IAC/C,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAGA,cAAQ,CAAC,KAAK,CAAC;AAEvD,IAAA,MAAM,KAAK,GAAGC,iBAAQ,EAAE;AAExB,IAAA,MAAM,SAAS,GAAG,CAAC,GAAW,KAAK,GAAG,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE;AACnE,IAAA,MAAM,SAAS,GAAG,CAAC,GAAW,KAAK,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE;IAEtEC,eAAS,CAAC,MAAK;AACb,QAAA,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC;AACrC,QAAA,MAAM,cAAc,GAAG,SAAS,CAAC,YAAY,CAAC;AAE9C,QAAA,MAAM,cAAc,GAAG,UAAU,IAAI,YAAY,KAAK,cAAc;QAEpE,kBAAkB,CAAC,cAAc,CAAC;QAClC,YAAY,CAAC,YAAY,CAAC;QAC1B,cAAc,CAAC,cAAc,GAAG,EAAE,GAAG,YAAY,CAAC;IACpD,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;IAErCA,eAAS,CAAC,MAAK;QACb,IAAI,CAAC,MAAM,EAAE;YACX,WAAW,CAAC,KAAK,CAAC;YAClB,eAAe,CAAC,KAAK,CAAC;QACxB;AACF,IAAA,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IAEZA,eAAS,CAAC,MAAK;AACb,QAAA,IAAI,cAAc,IAAI,cAAc,KAAK,EAAE,EAAE;AAC3C,YAAAC,mBAAK,CAAC,OAAO,CAAC,cAAc,CAAC;QAC/B;AACF,IAAA,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC;IAEpBD,eAAS,CAAC,MAAK;AACb,QAAA,IAAI,YAAY,IAAI,YAAY,KAAK,EAAE,EAAE;AACvC,YAAAC,mBAAK,CAAC,KAAK,CAAC,YAAY,CAAC;QAC3B;AACF,IAAA,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;IAElBD,eAAS,CAAC,MAAK;QACb,IAAI,CAAC,SAAS,EAAE;YACd,WAAW,CAAC,KAAK,CAAC;YAClB,eAAe,CAAC,KAAK,CAAC;QACxB;AACF,IAAA,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;AAEf,IAAA,MAAM,2BAA2B,GAAG,CAClC,KAA0C,KACxC;AACF,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO;QAEpC,IAAI,OAAO,EAAE;YACX,cAAc,CAAC,SAAS,CAAC;AACzB,YAAA,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACvC;aAAO;AACL,YAAA,YAAY,CAAC,WAAW,IAAI,EAAE,CAAC;QACjC;QAEA,kBAAkB,CAAC,OAAO,CAAC;AAC7B,IAAA,CAAC;IAED,MAAM,aAAa,GAAG,SAAS,IAAI,aAAa,KAAKE,sBAAa,CAAC,OAAO;AAE1E,IAAA,MAAM,YAAY,GAAG;AACnB,QAAA,CAACA,sBAAa,CAAC,OAAO,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;AAC/D,QAAA,CAACA,sBAAa,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE;AAC3D,QAAA,CAACA,sBAAa,CAAC,QAAQ,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE;AACjE,QAAA,CAACA,sBAAa,CAAC,cAAc,GAAG;AAC9B,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EAAE,iBAAiB;AACzB,SAAA;AACD,QAAA,CAACA,sBAAa,CAAC,QAAQ,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE;AACjE,QAAA,CAACA,sBAAa,CAAC,UAAU,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE;KACzE;AAED,IAAA,MAAM,aAAa,GAAG;AACpB,QAAA,OAAO,EAAE;AACP,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,SAAS,EAAE,WAAW;AACtB,YAAA,iBAAiB,EAAE,SAAS;AAC5B,YAAA,KAAK,EAAE,WAAW;AACnB,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,SAAS,EAAE,WAAW;AACtB,YAAA,iBAAiB,EAAE,SAAS;AAC5B,YAAA,KAAK,EAAE,UAAU;AAClB,SAAA;KACF;IAED,MAAM,WAAW,GAAG;AAClB,UAAE,YAAY,CAAC,aAAa;UAC1B,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE;IACvC,MAAM,oBAAoB,GAAG;AAC3B,UAAE,aAAa,CAAC,eAAe;UAC7B,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE;IAEvC,MAAM,UAAU,GAAG,MAAK;QACtB,WAAW,CAAC,IAAI,CAAC;AACjB,QAAA,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC;AACzC,QAAA,MAAM,GAAG,YAAY,EAAE,eAAe,CAAC;AACzC,IAAA,CAAC;IAED,MAAM,YAAY,GAAG,MAAK;QACxB,eAAe,CAAC,IAAI,CAAC;AACrB,QAAA,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC;AACzC,QAAA,QAAQ,GAAG,YAAY,EAAE,eAAe,CAAC;AAC3C,IAAA,CAAC;AAED,IAAA,QACEC,eAAA,CAAC,YAAY,EAAA,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAC,IAAI,EAAC,SAAS,EAAA,IAAA,EAAA,QAAA,EAAA,CACnEC,cAAA,CAACT,mBAAU,EAAA,EACT,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,SAAS,EACnB,EAAE,EAAE;AACF,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,GAAG,EAAE,EAAE;AACP,oBAAA,KAAK,EAAE,EAAE;AACT,oBAAA,MAAM,EAAE,CAAC;AACV,iBAAA,EAAA,QAAA,EAEDS,cAAA,CAACC,0BAAY,EAAA,EAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAA,CAAI,EAAA,CAC3B,EAEbF,eAAA,CAACG,sBAAa,EAAA,EAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAA,QAAA,EAAA,CAE/CH,eAAA,CAACI,YAAG,EAAA,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAA,QAAA,EAAA,CAChBH,cAAA,CAACI,aAAI,EAAA,EACH,KAAK,EAAE,oBAAoB,CAAC,KAAK,CAAC,WAAW,EAAE,EAC/C,EAAE,EAAE;AACF,oCAAA,EAAE,EAAE,CAAC;AACL,oCAAA,MAAM,EAAE,WAAW;oCACnB,eAAe,EAAE,oBAAoB,CAAC,KAAK;oCAC3C,WAAW,EAAE,oBAAoB,CAAC,KAAK;AACvC,oCAAA,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO;AACjC,oCAAA,UAAU,EAAE,GAAG;AACf,oCAAA,QAAQ,EAAE,UAAU;AACpB,oCAAA,MAAM,EAAE,MAAM;AACd,oCAAA,EAAE,EAAE,CAAC;AACL,oCAAA,YAAY,EAAE,CAAC;AACf,oCAAA,EAAE,EAAE,CAAC;iCACN,EAAA,CACD,EACD,aAAa,KAAKN,sBAAa,CAAC,UAAU,KACzCE,cAAA,CAACI,aAAI,IACH,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,EACtC,EAAE,EAAE;AACF,oCAAA,EAAE,EAAE,CAAC;AACL,oCAAA,MAAM,EAAE,WAAW;AACnB,oCAAA,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK;oCAC/C,WAAW,EAAE,WAAW,CAAC,KAAK;AAC9B,oCAAA,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO;AACjC,oCAAA,UAAU,EAAE,GAAG;AACf,oCAAA,QAAQ,EAAE,UAAU;AACpB,oCAAA,MAAM,EAAE,MAAM;AACd,oCAAA,EAAE,EAAE,CAAC;AACL,oCAAA,YAAY,EAAE,CAAC;AACf,oCAAA,EAAE,EAAE,CAAC;iCACN,EAAA,CACD,CACH,CAAA,EAAA,CACG,EAGNJ,cAAA,CAACK,mBAAU,EAAA,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,EAAA,QAAA,EAC/DC,aAAK,CAAC,WAAW,CAAC,EAAA,CACR,EAGZ,aAAa,KAAKR,sBAAa,CAAC,cAAc,IAAI,IAAI,KACrDE,cAAA,CAACO,WAAK,EAAA,EACJ,OAAO,EAAC,OAAO,EACf,IAAI,EAAEP,cAAA,CAACQ,gCAAkB,EAAA,EAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAA,CAAI,EAClD,EAAE,EAAE;AACF,4BAAA,EAAE,EAAE,CAAC;yBACN,EAAA,QAAA,EAEA,IAAI,GACC,CACT,EAGA,aAAa,KAAKV,sBAAa,CAAC,cAAc,IAAI,IAAI,KACrDE,eAACO,WAAK,EAAA,EACJ,OAAO,EAAC,MAAM,EACd,IAAI,EACFP,eAACS,4BAAc,EAAA,EACb,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAA,CACvD,EAEJ,EAAE,EAAE;AACF,4BAAA,EAAE,EAAE,CAAC;AACL,4BAAA,eAAe,EAAE,WAAW;AAC5B,4BAAA,WAAW,EAAE,WAAW;AACxB,4BAAA,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO;AAClC,yBAAA,EAAA,QAAA,EAEA,IAAI,EAAA,CACC,CACT,EAGDT,cAAA,CAACU,kBAAS,EAAA,EACR,SAAS,EAAA,IAAA,EACT,IAAI,EAAE,CAAC,EACP,SAAS,EAAA,IAAA,EACT,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC7C,QAAQ,EACN,eAAe;4BACf,aAAa;AACb,4BAAA,aAAa,KAAKZ,sBAAa,CAAC,QAAQ,EAE1C,EAAE,EAAE;AACF,4BAAA,EAAE,EAAE,CAAC;AACL,4BAAA,0BAA0B,EAAE;gCAC1B,eAAe,EACb,eAAe,IAAI;AACjB,sCAAE;AACF,sCAAE,MAAM;AACZ,gCAAA,YAAY,EAAE,CAAC;AAChB,6BAAA;AACF,yBAAA,EAAA,CACD,EAGFE,cAAA,CAACW,yBAAgB,EAAA,EACf,OAAO,EACLX,cAAA,CAACY,iBAAQ,EAAA,EACP,OAAO,EAAE,eAAe,EACxB,QAAQ,EACN,aAAa,IAAI,aAAa,KAAKd,sBAAa,CAAC,QAAQ,EAE3D,QAAQ,EAAE,2BAA2B,EACrC,EAAE,EAAE;AACF,gCAAA,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI;AACjC,gCAAA,eAAe,EAAE;AACf,oCAAA,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI;AAClC,iCAAA;AACF,6BAAA,EAAA,CACD,EAEJ,KAAK,EAAC,qBAAqB,EAC3B,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAA,CACb,EAEFC,gBAACI,YAAG,EAAA,EACF,EAAE,EAAE;AACF,4BAAA,OAAO,EAAE,MAAM;4BACf,aAAa,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE;4BAC1C,UAAU,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE;AAC3C,4BAAA,cAAc,EAAE,eAAe;AAC/B,4BAAA,GAAG,EAAE,CAAC;AACN,4BAAA,EAAE,EAAE,CAAC;AACL,4BAAA,SAAS,EAAE,WAAW;AACtB,4BAAA,WAAW,EAAE,SAAS;yBACvB,EAAA,QAAA,EAAA,CAEA,aAAa,KAAKL,sBAAa,CAAC,QAAQ,IACvCC,eAAA,CAACI,YAAG,EAAA,EAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,CACrD,eAAe,KAAK,KAAK,IACxBH,cAAA,CAACa,aAAM,EAAA,EACL,OAAO,EAAE,UAAU,EACnB,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,IAAI,EACT,QAAQ,EAAE,aAAa,EAAA,QAAA,EAEtB,QAAQ,IACPd,eAAA,CAAAe,mBAAA,EAAA,EAAA,QAAA,EAAA,CACEd,cAAA,CAACe,yBAAgB,EAAA,EAAC,IAAI,EAAE,EAAE,EAAA,CAAI,EAC9Bf,cAAA,CAACK,mBAAU,EAAA,EAAC,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EAAA,QAAA,EAAA,WAAA,EAAA,CAAwB,CAAA,EAAA,CACzD,KAEH,MAAM,CACP,EAAA,CACM,KAETL,cAAA,CAAAc,mBAAA,EAAA,EAAA,CAAK,CACN,EACDd,cAAA,CAACa,aAAM,EAAA,EACL,OAAO,EAAE,YAAY,EACrB,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,IAAI,EACT,QAAQ,EAAE,aAAa,KAAK,eAAe,IAAI,UAAU,CAAC,EAC1D,EAAE,EAAE;4CACF,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI;AAClD,4CAAA,SAAS,EAAE;gDACT,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI;AACnD,6CAAA;AACF,yCAAA,EAAA,QAAA,EAEA,YAAY,IACXd,kDACEC,cAAA,CAACe,yBAAgB,EAAA,EAAC,IAAI,EAAE,EAAE,EAAA,CAAI,EAC9Bf,cAAA,CAACK,mBAAU,IAAC,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,8BAErB,CAAA,EAAA,CACZ,IACD,eAAe,IAAI,UAAU,IAC/B,0BAA0B,IACxB,eAAe,KAAK,KAAK,IAC3B,mBAAmB,KAEnB,QAAQ,CACT,EAAA,CACM,EACR,eAAe,KAAKW,wBAAe,CAAC,QAAQ,KAC3ChB,cAAA,CAACa,aAAM,EAAA,EACL,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,IAAI,EACT,EAAE,EAAE;AACF,4CAAA,eAAe,EAAE,WAAW;AAC5B,4CAAA,SAAS,EAAE;gDACT,eAAe,EAAE,WAAW;AAC7B,6CAAA;AACF,yCAAA,EACD,QAAQ,EAAE,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,CAGhB,CACV,IACG,KAENb,cAAA,CAACG,YAAG,EAAA,EAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAA,QAAA,EACtDH,eAACa,aAAM,EAAA,EACL,OAAO,EAAE,MAAK;wCACZ,eAAe,CAAC,IAAI,CAAC;;wCAErB,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;wCACvD,cAAc,CAAC,SAAS,CAAC;AACzB,wCAAA,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;wCACrC,kBAAkB,CAAC,IAAI,CAAC;AACxB,wCAAA,QAAQ,GAAG,YAAY,EAAE,IAAI,CAAC;AAChC,oCAAA,CAAC,EACD,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,IAAI,EACT,QAAQ,EAAE,aAAa,EACvB,EAAE,EAAE;AACF,wCAAA,eAAe,EAAE,WAAW;AAC5B,wCAAA,SAAS,EAAE;AACT,4CAAA,eAAe,EAAE,WAAW;AAC7B,yCAAA;AACF,qCAAA,EAAA,QAAA,EAEA,YAAY,IACXd,eAAA,CAAAe,mBAAA,EAAA,EAAA,QAAA,EAAA,CACEd,eAACe,yBAAgB,EAAA,EAAC,IAAI,EAAE,EAAE,EAAA,CAAI,EAC9Bf,eAACK,mBAAU,EAAA,EAAC,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EAAA,QAAA,EAAA,cAAA,EAAA,CAErB,IACZ,KAEH,iBAAiB,CAClB,EAAA,CACM,GACL,CACP,EAEDN,gBAACI,YAAG,EAAA,EACF,EAAE,EAAE;AACF,oCAAA,OAAO,EAAE,MAAM;AACf,oCAAA,UAAU,EAAE,QAAQ;AACpB,oCAAA,GAAG,EAAE,GAAG;oCACR,cAAc,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,UAAU,EAAE;iCACxD,EAAA,QAAA,EAAA,CAEA,WAAW,KAAK,CAAC,KAChBH,cAAA,CAAC,SAAS,EAAA,EACR,OAAO,EAAE,UAAU,gBACR,UAAU,EACrB,QAAQ,EAAE,SAAS,EAAA,QAAA,EAEnBA,eAACiB,iCAAmB,EAAA,EAClB,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GACvD,EAAA,CACQ,CACb,EACA,WAAW,KAAK,UAAU,KACzBjB,cAAA,CAAC,SAAS,EAAA,EACR,OAAO,EAAE,MAAM,EAAA,YAAA,EACJ,MAAM,EACjB,QAAQ,EAAE,SAAS,EAAA,QAAA,EAEnBA,cAAA,CAACkB,oCAAsB,EAAA,EACrB,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAA,CACvD,EAAA,CACQ,CACb,EACDnB,eAAA,CAACM,mBAAU,EAAA,EAAC,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAC,UAAU,EAAA,QAAA,EAAA,CAC7C,WAAW,EAAA,GAAA,EAAG,UAAU,CAAA,EAAA,CACd,IACT,CAAA,EAAA,CACF,CAAA,EAAA,CACQ,CAAA,EAAA,CACH;AAEnB;;;;"}
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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"}
@@ -11,91 +11,97 @@ var variableProcessing = require('../helpers/variableProcessing.js');
11
11
  // Status based color configs (from Modal)
12
12
  const statusConfig = {
13
13
  Accepted: {
14
- highlight: '#EDF9CD',
15
- highlightSelected: '#DBF59A',
16
- label: 'Accepted',
14
+ highlight: "#EDF9CD",
15
+ highlightSelected: "#DBF59A",
16
+ label: "Accepted",
17
17
  },
18
18
  Pending: {
19
- highlight: '#F5E2FF',
20
- highlightSelected: '#EBC7FF',
21
- label: 'Pending',
22
- alertVariant: 'info',
19
+ highlight: "#F5E2FF",
20
+ highlightSelected: "#EBC7FF",
21
+ label: "Pending",
22
+ alertVariant: "info",
23
23
  },
24
- 'Action Required': {
25
- highlight: '#FBEEEE',
26
- highlightSelected: '#FFBCB3',
27
- label: 'ActionRequired',
28
- alertVariant: 'error',
24
+ "Action Required": {
25
+ highlight: "#FBEEEE",
26
+ highlightSelected: "#FFBCB3",
27
+ label: "ActionRequired",
28
+ alertVariant: "error",
29
29
  },
30
- 'Declined': {
31
- highlight: '#FFF6D1',
32
- highlightSelected: '#FDE58E',
33
- label: 'Declined',
30
+ Declined: {
31
+ highlight: "#FFF6D1",
32
+ highlightSelected: "#FDE58E",
33
+ label: "Declined",
34
34
  },
35
- 'Not Started': {
36
- highlight: '#f8c97cff',
37
- highlightSelected: '#F5A623',
38
- label: 'Not Started',
35
+ "Not Started": {
36
+ highlight: "#f8c97cff",
37
+ highlightSelected: "#F5A623",
38
+ label: "Not Started",
39
+ },
40
+ Rejected: {
41
+ highlight: "#FBEEEE",
42
+ highlightSelected: "#FFBCB3",
43
+ label: "ActionRequired",
44
+ alertVariant: "error",
39
45
  },
40
46
  Draft: {
41
- highlight: '#FFEACD',
42
- highlightSelected: '#FFC365',
43
- label: 'Draft',
47
+ highlight: "#FFEACD",
48
+ highlightSelected: "#FFC365",
49
+ label: "Draft",
44
50
  },
45
51
  };
46
52
  const NoteContainer = material.styled(material.Box)({
47
- position: 'relative',
48
- display: 'inline',
49
- maxWidth: '100%',
53
+ position: "relative",
54
+ display: "inline",
55
+ maxWidth: "100%",
50
56
  });
51
57
  // Uses highlight colors driven by status exclusively
52
58
  const HighlightWrapper = material.styled(material.Box, {
53
- shouldForwardProp: (prop) => prop !== 'isHovered' &&
54
- prop !== 'highlightColor' &&
55
- prop !== 'highlightSelectedColor'
59
+ shouldForwardProp: (prop) => prop !== "isHovered" &&
60
+ prop !== "highlightColor" &&
61
+ prop !== "highlightSelectedColor",
56
62
  })(({ isHovered, highlightColor, highlightSelectedColor }) => ({
57
- position: 'relative',
58
- display: 'inline',
59
- maxWidth: '100%',
60
- '&:hover .edit-button': {
63
+ position: "relative",
64
+ display: "inline",
65
+ maxWidth: "100%",
66
+ "&:hover .edit-button": {
61
67
  opacity: 1,
62
68
  },
63
- '& .highlight-span': {
69
+ "& .highlight-span": {
64
70
  background: isHovered ? highlightSelectedColor : highlightColor,
65
- padding: '2px 4px',
66
- borderBottom: '2px solid rgba(77, 48, 25, 0.3)',
67
- boxDecorationBreak: 'clone',
68
- WebkitBoxDecorationBreak: 'clone',
69
- transition: 'background 0.2s ease',
70
- cursor: 'pointer',
71
- fontSize: '1rem',
72
- wordWrap: 'break-word',
73
- overflowWrap: 'break-word',
74
- display: 'inline',
75
- color: '#4D3019',
71
+ padding: "2px 4px",
72
+ borderBottom: "2px solid rgba(77, 48, 25, 0.3)",
73
+ boxDecorationBreak: "clone",
74
+ WebkitBoxDecorationBreak: "clone",
75
+ transition: "background 0.2s ease",
76
+ cursor: "pointer",
77
+ fontSize: "1rem",
78
+ wordWrap: "break-word",
79
+ overflowWrap: "break-word",
80
+ display: "inline",
81
+ color: "#4D3019",
76
82
  },
77
83
  }));
78
84
  const EditButton = material.styled(material.IconButton)(({ theme }) => ({
79
85
  top: 0,
80
86
  right: 0,
81
- transform: 'translate(-50%, -50%)',
82
- position: 'relative',
87
+ transform: "translate(-50%, -50%)",
88
+ position: "relative",
83
89
  width: 20,
84
90
  height: 20,
85
91
  marginRight: -20,
86
- borderRadius: (typeof theme.shape.borderRadius === 'string'
92
+ borderRadius: (typeof theme.shape.borderRadius === "string"
87
93
  ? parseInt(theme.shape.borderRadius, 10)
88
94
  : theme.shape.borderRadius || 4) * 2,
89
- backgroundColor: '#4D3019',
95
+ backgroundColor: "#4D3019",
90
96
  opacity: 0,
91
- transition: 'all 0.2s ease',
92
- boxShadow: '0 1px 3px rgba(0,0,0,0.12)',
93
- '&:hover': {
94
- backgroundColor: '#4D3019',
95
- transform: 'translate(-50%, -50%) scale(1.1)',
97
+ transition: "all 0.2s ease",
98
+ boxShadow: "0 1px 3px rgba(0,0,0,0.12)",
99
+ "&:hover": {
100
+ backgroundColor: "#4D3019",
101
+ transform: "translate(-50%, -50%) scale(1.1)",
96
102
  },
97
103
  }));
98
- const NoteBox = ({ status, requirementType, label, note, children, className = '', onEditClick, }) => {
104
+ const NoteBox = ({ status, requirementType, label, note, children, className = "", onEditClick, }) => {
99
105
  const [isHovered, setIsHovered] = React.useState(false);
100
106
  // Map current status
101
107
  const variableState = variableProcessing.mapStatusToVariableState(status);
@@ -103,39 +109,42 @@ const NoteBox = ({ status, requirementType, label, note, children, className = '
103
109
  const style = variableState
104
110
  ? statusConfig[variableState]
105
111
  : {
106
- highlight: '#EEE',
107
- highlightSelected: '#DDD'};
112
+ highlight: "#EEE",
113
+ highlightSelected: "#DDD"};
108
114
  const reqTypeConfig = {
109
115
  Default: {
110
- color: '#F5A623',
111
- highlight: '#f3bf6bff',
112
- highlightSelected: '#F5A623',
113
- label: 'Mandatory',
116
+ color: "#F5A623",
117
+ highlight: "#f3bf6bff",
118
+ highlightSelected: "#F5A623",
119
+ label: "Mandatory",
114
120
  },
115
121
  Optional: {
116
- color: '#F5D76E',
117
- highlight: '#f3e2a5ff',
118
- highlightSelected: '#F5D76E',
119
- label: 'Optional',
122
+ color: "#F5D76E",
123
+ highlight: "#f3e2a5ff",
124
+ highlightSelected: "#F5D76E",
125
+ label: "Optional",
120
126
  },
121
127
  };
122
- const requirementTypeStyle = requirementTypeState ? reqTypeConfig[requirementTypeState] :
123
- {
124
- highlight: '#EEE',
125
- highlightSelected: '#DDD'};
126
- return (jsxRuntime.jsxs(NoteContainer, { className: className, children: [variableState && style.alertVariant && note && (jsxRuntime.jsx(Alert.Alert, { variant: style.alertVariant, sx: { mb: 1 }, children: note })), jsxRuntime.jsxs(HighlightWrapper, { isHovered: isHovered, highlightColor: variableState === variable.VariableState.NotStarted ? requirementTypeStyle.highlight : style.highlight, highlightSelectedColor: variableState === variable.VariableState.NotStarted ? requirementTypeStyle.highlightSelected : style.highlightSelected, onMouseEnter: () => setIsHovered(true), onMouseLeave: () => setIsHovered(false), onClick: (e) => {
128
+ const requirementTypeStyle = requirementTypeState
129
+ ? reqTypeConfig[requirementTypeState]
130
+ : {
131
+ highlight: "#EEE",
132
+ highlightSelected: "#DDD"};
133
+ return (jsxRuntime.jsxs(NoteContainer, { className: className, children: [variableState && style.alertVariant && note && (jsxRuntime.jsx(Alert.Alert, { variant: style.alertVariant, sx: { mb: 1 }, children: note })), jsxRuntime.jsxs(HighlightWrapper, { isHovered: isHovered, highlightColor: variableState === variable.VariableState.NotStarted
134
+ ? requirementTypeStyle.highlight
135
+ : style.highlight, highlightSelectedColor: variableState === variable.VariableState.NotStarted
136
+ ? requirementTypeStyle.highlightSelected
137
+ : style.highlightSelected, onMouseEnter: () => setIsHovered(true), onMouseLeave: () => setIsHovered(false), onClick: (e) => {
127
138
  e.stopPropagation();
128
139
  if (onEditClick) {
129
140
  onEditClick();
130
141
  }
131
- }, children: [jsxRuntime.jsx("span", { className: "highlight-span", style: { display: 'inline' }, children: children }), jsxRuntime.jsx(EditButton, { className: "edit-button", onClick: (e) => {
142
+ }, children: [jsxRuntime.jsx("span", { className: "highlight-span", style: { display: "inline" }, children: children }), jsxRuntime.jsx(EditButton, { className: "edit-button", onClick: (e) => {
132
143
  e.stopPropagation();
133
144
  if (onEditClick) {
134
145
  onEditClick();
135
146
  }
136
- }, size: "small", children: variableState === variable.VariableState.Accepted
137
- ? jsxRuntime.jsx(iconsMaterial.CheckRounded, { sx: { fontSize: 14, color: "#FFFFFF", strokeWidth: 2 } })
138
- : jsxRuntime.jsx(iconsMaterial.EditRounded, { sx: { fontSize: 14, color: "#FFFFFF", strokeWidth: 2 } }) })] })] }));
147
+ }, size: "small", children: variableState === variable.VariableState.Accepted ? (jsxRuntime.jsx(iconsMaterial.CheckRounded, { sx: { fontSize: 14, color: "#FFFFFF", strokeWidth: 2 } })) : (jsxRuntime.jsx(iconsMaterial.EditRounded, { sx: { fontSize: 14, color: "#FFFFFF", strokeWidth: 2 } })) })] })] }));
139
148
  };
140
149
 
141
150
  exports.NoteBox = NoteBox;