ece-docs-components 1.0.111 → 1.0.113
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/DrawerPanel.js +89 -0
- package/dist/cjs/components/DrawerPanel.js.map +1 -0
- package/dist/cjs/components/Modal.js +6 -5
- package/dist/cjs/components/Modal.js.map +1 -1
- package/dist/cjs/components/NoteBox.js +0 -6
- package/dist/cjs/components/NoteBox.js.map +1 -1
- package/dist/cjs/helpers/variableProcessing.js +1 -1
- package/dist/cjs/helpers/variableProcessing.js.map +1 -1
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/_virtual/index6.js +2 -2
- package/dist/esm/_virtual/index7.js +2 -2
- package/dist/esm/_virtual/index8.js +2 -2
- package/dist/esm/_virtual/index9.js +2 -2
- package/dist/esm/components/DrawerPanel.d.ts +15 -0
- package/dist/esm/components/DrawerPanel.js +87 -0
- package/dist/esm/components/DrawerPanel.js.map +1 -0
- package/dist/esm/components/Modal.js +6 -5
- package/dist/esm/components/Modal.js.map +1 -1
- package/dist/esm/components/NoteBox.js +0 -6
- package/dist/esm/components/NoteBox.js.map +1 -1
- package/dist/esm/components/index.d.ts +1 -0
- package/dist/esm/helpers/variableProcessing.d.ts +1 -1
- package/dist/esm/helpers/variableProcessing.js +1 -1
- package/dist/esm/helpers/variableProcessing.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/node_modules/domelementtype/lib/index.js +1 -1
- package/dist/esm/node_modules/domutils/lib/index.js +1 -1
- package/dist/esm/node_modules/html-dom-parser/lib/index.js +1 -1
- package/dist/esm/node_modules/htmlparser2/dist/commonjs/index.js +1 -1
- package/dist/esm/node_modules/react-property/lib/index.js +1 -1
- package/dist/esm/node_modules/style-to-object/cjs/index.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var KeyboardArrowDownRounded = require('@mui/icons-material/KeyboardArrowDownRounded');
|
|
6
|
+
var KeyboardArrowUpRounded = require('@mui/icons-material/KeyboardArrowUpRounded');
|
|
7
|
+
var Box = require('@mui/material/Box');
|
|
8
|
+
var ButtonBase = require('@mui/material/ButtonBase');
|
|
9
|
+
var Drawer = require('@mui/material/Drawer');
|
|
10
|
+
var Typography = require('@mui/material/Typography');
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Renders a persistent, collapsible bottom drawer and reserves enough space in
|
|
14
|
+
* the containing page content to prevent the drawer from obscuring it.
|
|
15
|
+
*/
|
|
16
|
+
const DrawerPanel = ({ children, title, subtitle = undefined, defaultExpanded = false, expandLabel = 'Expand panel', collapseLabel = 'Collapse panel', }) => {
|
|
17
|
+
const [isExpanded, setIsExpanded] = React.useState(defaultExpanded);
|
|
18
|
+
const drawerRootRef = React.useRef(null);
|
|
19
|
+
const drawerPaperRef = React.useRef(null);
|
|
20
|
+
const headingId = React.useId();
|
|
21
|
+
const contentId = React.useId();
|
|
22
|
+
React.useEffect(() => {
|
|
23
|
+
const drawerPaper = drawerPaperRef.current;
|
|
24
|
+
const pageContent = drawerRootRef.current?.closest('[data-page-content]');
|
|
25
|
+
if (!drawerPaper || !pageContent)
|
|
26
|
+
return undefined;
|
|
27
|
+
/** Keeps the page's reserved space in sync with the drawer's rendered height. */
|
|
28
|
+
const updatePagePadding = () => {
|
|
29
|
+
pageContent.style.setProperty('--drawer-panel-height', `${drawerPaper.getBoundingClientRect().height}px`);
|
|
30
|
+
};
|
|
31
|
+
const resizeObserver = new ResizeObserver(updatePagePadding);
|
|
32
|
+
updatePagePadding();
|
|
33
|
+
resizeObserver.observe(drawerPaper);
|
|
34
|
+
return () => {
|
|
35
|
+
resizeObserver.disconnect();
|
|
36
|
+
pageContent.style.removeProperty('--drawer-panel-height');
|
|
37
|
+
};
|
|
38
|
+
}, []);
|
|
39
|
+
return (jsxRuntime.jsx(Drawer, { anchor: "bottom", open: true, variant: "persistent", ref: drawerRootRef, "data-drawer-panel": true, "data-drawer-panel-expanded": isExpanded, sx: { zIndex: 45 }, slotProps: {
|
|
40
|
+
paper: {
|
|
41
|
+
ref: drawerPaperRef,
|
|
42
|
+
role: 'region',
|
|
43
|
+
'aria-labelledby': headingId,
|
|
44
|
+
sx: {
|
|
45
|
+
left: { xs: 0, md: 'var(--sidebar-width, 80px)' },
|
|
46
|
+
right: 'auto',
|
|
47
|
+
width: { xs: '100%', md: 'calc(100% - var(--sidebar-width, 80px))' },
|
|
48
|
+
maxHeight: 'calc(100dvh - 16px)',
|
|
49
|
+
boxSizing: 'border-box',
|
|
50
|
+
borderTop: 1,
|
|
51
|
+
borderColor: 'divider',
|
|
52
|
+
borderRadius: 0,
|
|
53
|
+
backgroundColor: 'background.paper',
|
|
54
|
+
boxShadow: '0 -4px 16px rgba(0, 0, 0, 0.12)',
|
|
55
|
+
overflowX: 'hidden',
|
|
56
|
+
overflowY: 'auto',
|
|
57
|
+
zIndex: 45,
|
|
58
|
+
transition: 'left 0.15s ease-out, width 0.15s ease-out',
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
}, children: jsxRuntime.jsxs(Box, { sx: { display: 'flex', flexDirection: 'column', width: '100%' }, children: [jsxRuntime.jsxs(ButtonBase, { disableRipple: true, "aria-controls": contentId, "aria-expanded": isExpanded, "aria-label": isExpanded ? collapseLabel : expandLabel, onClick: () => setIsExpanded(expanded => !expanded), sx: {
|
|
62
|
+
display: 'flex',
|
|
63
|
+
alignItems: 'center',
|
|
64
|
+
justifyContent: 'flex-start',
|
|
65
|
+
gap: { xs: 1, sm: 1.5 },
|
|
66
|
+
px: { xs: 2, sm: 2.5 },
|
|
67
|
+
py: { xs: 1.5, sm: 1.5 },
|
|
68
|
+
width: '100%',
|
|
69
|
+
textAlign: 'left',
|
|
70
|
+
backgroundColor: theme => theme.palette.custom.statusBarBackgroundColor,
|
|
71
|
+
borderBottom: 1,
|
|
72
|
+
borderColor: 'divider',
|
|
73
|
+
}, children: [jsxRuntime.jsx(Box, { component: "span", sx: { display: 'inline-flex', flexShrink: 0 }, children: isExpanded ? jsxRuntime.jsx(KeyboardArrowDownRounded, {}) : jsxRuntime.jsx(KeyboardArrowUpRounded, {}) }), jsxRuntime.jsxs(Box, { component: "span", display: "flex", alignItems: "center", gap: 2, children: [jsxRuntime.jsx(Typography, { component: "span", id: headingId, role: "heading", "aria-level": 2, variant: "h5", sx: { fontSize: 16 }, children: title }), subtitle && (jsxRuntime.jsx(Typography, { component: "span", variant: "caption", sx: { fontSize: 16 }, children: subtitle }))] })] }), jsxRuntime.jsx(Box, { id: contentId, "aria-hidden": !isExpanded, sx: {
|
|
74
|
+
display: 'grid',
|
|
75
|
+
pl: { xs: 7, sm: 8.5 },
|
|
76
|
+
pr: { xs: 2, sm: 2.5 },
|
|
77
|
+
gridTemplateRows: isExpanded ? '1fr' : '0fr',
|
|
78
|
+
transition: 'grid-template-rows 0.2s ease-out',
|
|
79
|
+
}, children: jsxRuntime.jsx(Box, { sx: { minHeight: 0, overflow: 'hidden' }, children: jsxRuntime.jsx(Box, { sx: {
|
|
80
|
+
my: 2,
|
|
81
|
+
opacity: isExpanded ? 1 : 0,
|
|
82
|
+
visibility: isExpanded ? 'visible' : 'hidden',
|
|
83
|
+
transition: isExpanded ? 'opacity 0.15s ease-out 0.05s' : 'opacity 0.1s ease-out, visibility 0s linear 0.2s',
|
|
84
|
+
width: '100%',
|
|
85
|
+
}, children: children }) }) })] }) }));
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
exports.DrawerPanel = DrawerPanel;
|
|
89
|
+
//# sourceMappingURL=DrawerPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DrawerPanel.js","sources":["../../../../src/components/DrawerPanel.tsx"],"sourcesContent":["import {useEffect, useId, useRef, useState, type ReactNode} from 'react';\r\n\r\nimport KeyboardArrowDownRounded from '@mui/icons-material/KeyboardArrowDownRounded';\r\nimport KeyboardArrowUpRounded from '@mui/icons-material/KeyboardArrowUpRounded';\r\nimport Box from '@mui/material/Box';\r\nimport ButtonBase from '@mui/material/ButtonBase';\r\nimport Drawer from '@mui/material/Drawer';\r\nimport Typography from '@mui/material/Typography';\r\n\r\ntype DrawerPanelProps = {\r\n children: ReactNode;\r\n title: ReactNode;\r\n subtitle?: ReactNode;\r\n defaultExpanded?: boolean;\r\n expandLabel?: string;\r\n collapseLabel?: string;\r\n};\r\n\r\n/**\r\n * Renders a persistent, collapsible bottom drawer and reserves enough space in\r\n * the containing page content to prevent the drawer from obscuring it.\r\n */\r\nexport const DrawerPanel = ({\r\n children,\r\n title,\r\n subtitle = undefined,\r\n defaultExpanded = false,\r\n expandLabel = 'Expand panel',\r\n collapseLabel = 'Collapse panel',\r\n}: DrawerPanelProps) => {\r\n const [isExpanded, setIsExpanded] = useState(defaultExpanded);\r\n const drawerRootRef = useRef<HTMLDivElement>(null);\r\n const drawerPaperRef = useRef<HTMLDivElement>(null);\r\n const headingId = useId();\r\n const contentId = useId();\r\n\r\n useEffect(() => {\r\n const drawerPaper = drawerPaperRef.current;\r\n const pageContent = drawerRootRef.current?.closest<HTMLElement>('[data-page-content]');\r\n\r\n if (!drawerPaper || !pageContent) return undefined;\r\n\r\n /** Keeps the page's reserved space in sync with the drawer's rendered height. */\r\n const updatePagePadding = () => {\r\n pageContent.style.setProperty('--drawer-panel-height', `${drawerPaper.getBoundingClientRect().height}px`);\r\n };\r\n const resizeObserver = new ResizeObserver(updatePagePadding);\r\n\r\n updatePagePadding();\r\n resizeObserver.observe(drawerPaper);\r\n\r\n return () => {\r\n resizeObserver.disconnect();\r\n pageContent.style.removeProperty('--drawer-panel-height');\r\n };\r\n }, []);\r\n\r\n return (\r\n <Drawer\r\n anchor=\"bottom\"\r\n open\r\n variant=\"persistent\"\r\n ref={drawerRootRef}\r\n data-drawer-panel\r\n data-drawer-panel-expanded={isExpanded}\r\n sx={{zIndex: 45}}\r\n slotProps={{\r\n paper: {\r\n ref: drawerPaperRef,\r\n role: 'region',\r\n 'aria-labelledby': headingId,\r\n sx: {\r\n left: {xs: 0, md: 'var(--sidebar-width, 80px)'},\r\n right: 'auto',\r\n width: {xs: '100%', md: 'calc(100% - var(--sidebar-width, 80px))'},\r\n maxHeight: 'calc(100dvh - 16px)',\r\n boxSizing: 'border-box',\r\n borderTop: 1,\r\n borderColor: 'divider',\r\n borderRadius: 0,\r\n backgroundColor: 'background.paper',\r\n boxShadow: '0 -4px 16px rgba(0, 0, 0, 0.12)',\r\n overflowX: 'hidden',\r\n overflowY: 'auto',\r\n zIndex: 45,\r\n transition: 'left 0.15s ease-out, width 0.15s ease-out',\r\n },\r\n },\r\n }}>\r\n <Box sx={{display: 'flex', flexDirection: 'column', width: '100%'}}>\r\n <ButtonBase\r\n disableRipple\r\n aria-controls={contentId}\r\n aria-expanded={isExpanded}\r\n aria-label={isExpanded ? collapseLabel : expandLabel}\r\n onClick={() => setIsExpanded(expanded => !expanded)}\r\n sx={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-start',\r\n gap: {xs: 1, sm: 1.5},\r\n px: {xs: 2, sm: 2.5},\r\n py: {xs: 1.5, sm: 1.5},\r\n width: '100%',\r\n textAlign: 'left',\r\n backgroundColor: theme => theme.palette.custom.statusBarBackgroundColor,\r\n borderBottom: 1,\r\n borderColor: 'divider',\r\n }}>\r\n <Box component=\"span\" sx={{display: 'inline-flex', flexShrink: 0}}>\r\n {isExpanded ? <KeyboardArrowDownRounded /> : <KeyboardArrowUpRounded />}\r\n </Box>\r\n <Box component=\"span\" display=\"flex\" alignItems=\"center\" gap={2}>\r\n <Typography component=\"span\" id={headingId} role=\"heading\" aria-level={2} variant=\"h5\" sx={{fontSize: 16}}>\r\n {title}\r\n </Typography>\r\n {subtitle && (\r\n <Typography component=\"span\" variant=\"caption\" sx={{fontSize: 16}}>\r\n {subtitle}\r\n </Typography>\r\n )}\r\n </Box>\r\n </ButtonBase>\r\n <Box\r\n id={contentId}\r\n aria-hidden={!isExpanded}\r\n sx={{\r\n display: 'grid',\r\n pl: {xs: 7, sm: 8.5},\r\n pr: {xs: 2, sm: 2.5},\r\n gridTemplateRows: isExpanded ? '1fr' : '0fr',\r\n transition: 'grid-template-rows 0.2s ease-out',\r\n }}>\r\n <Box sx={{minHeight: 0, overflow: 'hidden'}}>\r\n <Box\r\n sx={{\r\n my: 2,\r\n opacity: isExpanded ? 1 : 0,\r\n visibility: isExpanded ? 'visible' : 'hidden',\r\n transition: isExpanded ? 'opacity 0.15s ease-out 0.05s' : 'opacity 0.1s ease-out, visibility 0s linear 0.2s',\r\n width: '100%',\r\n }}>\r\n {children}\r\n </Box>\r\n </Box>\r\n </Box>\r\n </Box>\r\n </Drawer>\r\n );\r\n};\r\n"],"names":["useState","useRef","useId","useEffect","_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -124,7 +124,6 @@ const Modal = ({ isOpen, onClose, onSave, onSubmit, successMessage, errorMessage
|
|
|
124
124
|
color: "#FFBCB3",
|
|
125
125
|
label: "Action Required",
|
|
126
126
|
},
|
|
127
|
-
[variable.VariableState.ReadyForApproval]: { color: "#EBC7FF", label: "Pending" },
|
|
128
127
|
[variable.VariableState.Accepted]: { color: "#DBF59A", label: "Accepted" },
|
|
129
128
|
[variable.VariableState.Rejected]: { color: "#4D3019", label: "Rejected" },
|
|
130
129
|
[variable.VariableState.NotStarted]: { color: "#000000ff", label: "Not Started" },
|
|
@@ -143,10 +142,12 @@ const Modal = ({ isOpen, onClose, onSave, onSubmit, successMessage, errorMessage
|
|
|
143
142
|
label: "Optional",
|
|
144
143
|
},
|
|
145
144
|
};
|
|
146
|
-
const statusStyle =
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
145
|
+
const statusStyle = variableState
|
|
146
|
+
? statusConfig[variableState]
|
|
147
|
+
: {
|
|
148
|
+
color: "#ccc",
|
|
149
|
+
label: "Unknown",
|
|
150
|
+
};
|
|
150
151
|
const requirementTypeStyle = variableReqType
|
|
151
152
|
? reqTypeConfig[variableReqType]
|
|
152
153
|
: { color: "#ccc", label: "Unknown" };
|
|
@@ -1 +1 @@
|
|
|
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.ReadyForApproval]: { color: \"#EBC7FF\", label: \"Pending\" },\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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"}
|
|
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 = variableState\n ? statusConfig[variableState]\n : {\n color: \"#ccc\",\n label: \"Unknown\",\n };\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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"}
|
|
@@ -27,12 +27,6 @@ const statusConfig = {
|
|
|
27
27
|
label: "ActionRequired",
|
|
28
28
|
alertVariant: "error",
|
|
29
29
|
},
|
|
30
|
-
"Ready For Approval": {
|
|
31
|
-
highlight: "#F5E2FF",
|
|
32
|
-
highlightSelected: "#EBC7FF",
|
|
33
|
-
label: "Pending",
|
|
34
|
-
alertVariant: "info",
|
|
35
|
-
},
|
|
36
30
|
Declined: {
|
|
37
31
|
highlight: "#FFF6D1",
|
|
38
32
|
highlightSelected: "#FDE58E",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NoteBox.js","sources":["../../../../src/components/NoteBox.tsx"],"sourcesContent":["import React, { useState } from \"react\";\r\nimport { Box, Typography, IconButton, styled, Chip } from \"@mui/material\";\r\nimport { CheckRounded, EditRounded } from \"@mui/icons-material\";\r\nimport { Alert } from \"./Alert\";\r\nimport { RequirementType, VariableState } from \"../types/variable\";\r\nimport {\r\n mapRequirementTypeToState,\r\n mapStatusToVariableState,\r\n} from \"../helpers/variableProcessing\";\r\n\r\ninterface NoteBoxProps {\r\n status?: string; // Use only status now\r\n requirementType?: string;\r\n label?: string;\r\n note?: string;\r\n children: React.ReactNode;\r\n className?: string;\r\n onEditClick?: () => void;\r\n}\r\n\r\n// Status based color configs (from Modal)\r\nconst statusConfig: {\r\n [key in VariableState]: {\r\n highlight: string;\r\n highlightSelected: string;\r\n label: string;\r\n alertVariant?: \"error\" | \"info\";\r\n };\r\n} = {\r\n Accepted: {\r\n highlight: \"#EDF9CD\",\r\n highlightSelected: \"#DBF59A\",\r\n label: \"Accepted\",\r\n },\r\n Pending: {\r\n highlight: \"#F5E2FF\",\r\n highlightSelected: \"#EBC7FF\",\r\n label: \"Pending\",\r\n alertVariant: \"info\",\r\n },\r\n \"Action Required\": {\r\n highlight: \"#FBEEEE\",\r\n highlightSelected: \"#FFBCB3\",\r\n label: \"ActionRequired\",\r\n alertVariant: \"error\",\r\n },\r\n \"Ready For Approval\": {\r\n highlight: \"#F5E2FF\",\r\n highlightSelected: \"#EBC7FF\",\r\n label: \"Pending\",\r\n alertVariant: \"info\",\r\n },\r\n Declined: {\r\n highlight: \"#FFF6D1\",\r\n highlightSelected: \"#FDE58E\",\r\n label: \"Declined\",\r\n },\r\n \"Not Started\": {\r\n highlight: \"#f8c97cff\",\r\n highlightSelected: \"#F5A623\",\r\n label: \"Not Started\",\r\n },\r\n Rejected: {\r\n highlight: \"#FBEEEE\",\r\n highlightSelected: \"#FFBCB3\",\r\n label: \"ActionRequired\",\r\n alertVariant: \"error\",\r\n },\r\n Draft: {\r\n highlight: \"#FFEACD\",\r\n highlightSelected: \"#FFC365\",\r\n label: \"Draft\",\r\n },\r\n};\r\n\r\nconst NoteContainer = styled(Box)({\r\n position: \"relative\",\r\n display: \"inline\",\r\n maxWidth: \"100%\",\r\n});\r\n\r\n// Uses highlight colors driven by status exclusively\r\nconst HighlightWrapper = styled(Box, {\r\n shouldForwardProp: (prop) =>\r\n prop !== \"isHovered\" &&\r\n prop !== \"highlightColor\" &&\r\n prop !== \"highlightSelectedColor\",\r\n})<{\r\n isHovered: boolean;\r\n highlightColor: string;\r\n highlightSelectedColor: string;\r\n}>(({ isHovered, highlightColor, highlightSelectedColor }) => ({\r\n position: \"relative\",\r\n display: \"inline\",\r\n maxWidth: \"100%\",\r\n \"&:hover .edit-button\": {\r\n opacity: 1,\r\n },\r\n \"& .highlight-span\": {\r\n background: isHovered ? highlightSelectedColor : highlightColor,\r\n padding: \"2px 4px\",\r\n borderBottom: \"2px solid rgba(77, 48, 25, 0.3)\",\r\n boxDecorationBreak: \"clone\",\r\n WebkitBoxDecorationBreak: \"clone\",\r\n transition: \"background 0.2s ease\",\r\n cursor: \"pointer\",\r\n fontSize: \"1rem\",\r\n wordWrap: \"break-word\",\r\n overflowWrap: \"break-word\",\r\n display: \"inline\",\r\n color: \"#4D3019\",\r\n },\r\n}));\r\n\r\nconst EditButton = styled(IconButton)(({ theme }) => ({\r\n top: 0,\r\n right: 0,\r\n transform: \"translate(-50%, -50%)\",\r\n position: \"relative\",\r\n width: 20,\r\n height: 20,\r\n marginRight: -20,\r\n borderRadius:\r\n (typeof theme.shape.borderRadius === \"string\"\r\n ? parseInt(theme.shape.borderRadius, 10)\r\n : theme.shape.borderRadius || 4) * 2,\r\n backgroundColor: \"#4D3019\",\r\n opacity: 0,\r\n transition: \"all 0.2s ease\",\r\n boxShadow: \"0 1px 3px rgba(0,0,0,0.12)\",\r\n \"&:hover\": {\r\n backgroundColor: \"#4D3019\",\r\n transform: \"translate(-50%, -50%) scale(1.1)\",\r\n },\r\n}));\r\n\r\nexport const NoteBox: React.FC<NoteBoxProps> = ({\r\n status,\r\n requirementType,\r\n label,\r\n note,\r\n children,\r\n className = \"\",\r\n onEditClick,\r\n}) => {\r\n const [isHovered, setIsHovered] = useState(false);\r\n\r\n // Map current status\r\n const variableState = mapStatusToVariableState(status!!);\r\n const requirementTypeState = mapRequirementTypeToState(requirementType!!);\r\n\r\n const style = variableState\r\n ? statusConfig[variableState]\r\n : {\r\n highlight: \"#EEE\",\r\n highlightSelected: \"#DDD\",\r\n label: label || \"\",\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 requirementTypeStyle = requirementTypeState\r\n ? reqTypeConfig[requirementTypeState]\r\n : {\r\n highlight: \"#EEE\",\r\n highlightSelected: \"#DDD\",\r\n label: label || \"\",\r\n };\r\n\r\n return (\r\n <NoteContainer className={className}>\r\n {/* Alert for note when status matches and note available */}\r\n {variableState && style.alertVariant && note && (\r\n <Alert variant={style.alertVariant} sx={{ mb: 1 }}>\r\n {note}\r\n </Alert>\r\n )}\r\n\r\n {/* Highlighted content box */}\r\n <HighlightWrapper\r\n isHovered={isHovered}\r\n highlightColor={\r\n variableState === VariableState.NotStarted\r\n ? requirementTypeStyle.highlight\r\n : style.highlight\r\n }\r\n highlightSelectedColor={\r\n variableState === VariableState.NotStarted\r\n ? requirementTypeStyle.highlightSelected\r\n : style.highlightSelected\r\n }\r\n onMouseEnter={() => setIsHovered(true)}\r\n onMouseLeave={() => setIsHovered(false)}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n if (onEditClick) {\r\n onEditClick();\r\n }\r\n }}\r\n >\r\n <span className=\"highlight-span\" style={{ display: \"inline\" }}>\r\n {children}\r\n </span>\r\n <EditButton\r\n className=\"edit-button\"\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n if (onEditClick) {\r\n onEditClick();\r\n }\r\n }}\r\n size=\"small\"\r\n >\r\n {variableState === VariableState.Accepted ? (\r\n <CheckRounded\r\n sx={{ fontSize: 14, color: \"#FFFFFF\", strokeWidth: 2 }}\r\n />\r\n ) : (\r\n <EditRounded\r\n sx={{ fontSize: 14, color: \"#FFFFFF\", strokeWidth: 2 }}\r\n />\r\n )}\r\n </EditButton>\r\n </HighlightWrapper>\r\n </NoteContainer>\r\n );\r\n};\r\n"],"names":["styled","Box","IconButton","useState","mapStatusToVariableState","mapRequirementTypeToState","_jsxs","_jsx","Alert","VariableState","CheckRounded","EditRounded"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NoteBox.js","sources":["../../../../src/components/NoteBox.tsx"],"sourcesContent":["import React, { useState } from \"react\";\r\nimport { Box, Typography, IconButton, styled, Chip } from \"@mui/material\";\r\nimport { CheckRounded, EditRounded } from \"@mui/icons-material\";\r\nimport { Alert } from \"./Alert\";\r\nimport { RequirementType, VariableState } from \"../types/variable\";\r\nimport {\r\n mapRequirementTypeToState,\r\n mapStatusToVariableState,\r\n} from \"../helpers/variableProcessing\";\r\n\r\ninterface NoteBoxProps {\r\n status?: string; // Use only status now\r\n requirementType?: string;\r\n label?: string;\r\n note?: string;\r\n children: React.ReactNode;\r\n className?: string;\r\n onEditClick?: () => void;\r\n}\r\n\r\n// Status based color configs (from Modal)\r\nconst statusConfig: {\n [key in Exclude<VariableState, VariableState.ReadyForApproval>]: {\n highlight: string;\r\n highlightSelected: string;\r\n label: string;\r\n alertVariant?: \"error\" | \"info\";\r\n };\r\n} = {\r\n Accepted: {\r\n highlight: \"#EDF9CD\",\r\n highlightSelected: \"#DBF59A\",\r\n label: \"Accepted\",\r\n },\r\n Pending: {\r\n highlight: \"#F5E2FF\",\r\n highlightSelected: \"#EBC7FF\",\r\n label: \"Pending\",\r\n alertVariant: \"info\",\r\n },\r\n \"Action Required\": {\r\n highlight: \"#FBEEEE\",\r\n highlightSelected: \"#FFBCB3\",\r\n label: \"ActionRequired\",\r\n alertVariant: \"error\",\r\n },\r\n Declined: {\r\n highlight: \"#FFF6D1\",\r\n highlightSelected: \"#FDE58E\",\r\n label: \"Declined\",\r\n },\r\n \"Not Started\": {\r\n highlight: \"#f8c97cff\",\r\n highlightSelected: \"#F5A623\",\r\n label: \"Not Started\",\r\n },\r\n Rejected: {\r\n highlight: \"#FBEEEE\",\r\n highlightSelected: \"#FFBCB3\",\r\n label: \"ActionRequired\",\r\n alertVariant: \"error\",\r\n },\r\n Draft: {\r\n highlight: \"#FFEACD\",\r\n highlightSelected: \"#FFC365\",\r\n label: \"Draft\",\r\n },\r\n};\r\n\r\nconst NoteContainer = styled(Box)({\r\n position: \"relative\",\r\n display: \"inline\",\r\n maxWidth: \"100%\",\r\n});\r\n\r\n// Uses highlight colors driven by status exclusively\r\nconst HighlightWrapper = styled(Box, {\r\n shouldForwardProp: (prop) =>\r\n prop !== \"isHovered\" &&\r\n prop !== \"highlightColor\" &&\r\n prop !== \"highlightSelectedColor\",\r\n})<{\r\n isHovered: boolean;\r\n highlightColor: string;\r\n highlightSelectedColor: string;\r\n}>(({ isHovered, highlightColor, highlightSelectedColor }) => ({\r\n position: \"relative\",\r\n display: \"inline\",\r\n maxWidth: \"100%\",\r\n \"&:hover .edit-button\": {\r\n opacity: 1,\r\n },\r\n \"& .highlight-span\": {\r\n background: isHovered ? highlightSelectedColor : highlightColor,\r\n padding: \"2px 4px\",\r\n borderBottom: \"2px solid rgba(77, 48, 25, 0.3)\",\r\n boxDecorationBreak: \"clone\",\r\n WebkitBoxDecorationBreak: \"clone\",\r\n transition: \"background 0.2s ease\",\r\n cursor: \"pointer\",\r\n fontSize: \"1rem\",\r\n wordWrap: \"break-word\",\r\n overflowWrap: \"break-word\",\r\n display: \"inline\",\r\n color: \"#4D3019\",\r\n },\r\n}));\r\n\r\nconst EditButton = styled(IconButton)(({ theme }) => ({\r\n top: 0,\r\n right: 0,\r\n transform: \"translate(-50%, -50%)\",\r\n position: \"relative\",\r\n width: 20,\r\n height: 20,\r\n marginRight: -20,\r\n borderRadius:\r\n (typeof theme.shape.borderRadius === \"string\"\r\n ? parseInt(theme.shape.borderRadius, 10)\r\n : theme.shape.borderRadius || 4) * 2,\r\n backgroundColor: \"#4D3019\",\r\n opacity: 0,\r\n transition: \"all 0.2s ease\",\r\n boxShadow: \"0 1px 3px rgba(0,0,0,0.12)\",\r\n \"&:hover\": {\r\n backgroundColor: \"#4D3019\",\r\n transform: \"translate(-50%, -50%) scale(1.1)\",\r\n },\r\n}));\r\n\r\nexport const NoteBox: React.FC<NoteBoxProps> = ({\r\n status,\r\n requirementType,\r\n label,\r\n note,\r\n children,\r\n className = \"\",\r\n onEditClick,\r\n}) => {\r\n const [isHovered, setIsHovered] = useState(false);\r\n\r\n // Map current status\r\n const variableState = mapStatusToVariableState(status!!);\r\n const requirementTypeState = mapRequirementTypeToState(requirementType!!);\r\n\r\n const style = variableState\r\n ? statusConfig[variableState]\r\n : {\r\n highlight: \"#EEE\",\r\n highlightSelected: \"#DDD\",\r\n label: label || \"\",\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 requirementTypeStyle = requirementTypeState\r\n ? reqTypeConfig[requirementTypeState]\r\n : {\r\n highlight: \"#EEE\",\r\n highlightSelected: \"#DDD\",\r\n label: label || \"\",\r\n };\r\n\r\n return (\r\n <NoteContainer className={className}>\r\n {/* Alert for note when status matches and note available */}\r\n {variableState && style.alertVariant && note && (\r\n <Alert variant={style.alertVariant} sx={{ mb: 1 }}>\r\n {note}\r\n </Alert>\r\n )}\r\n\r\n {/* Highlighted content box */}\r\n <HighlightWrapper\r\n isHovered={isHovered}\r\n highlightColor={\r\n variableState === VariableState.NotStarted\r\n ? requirementTypeStyle.highlight\r\n : style.highlight\r\n }\r\n highlightSelectedColor={\r\n variableState === VariableState.NotStarted\r\n ? requirementTypeStyle.highlightSelected\r\n : style.highlightSelected\r\n }\r\n onMouseEnter={() => setIsHovered(true)}\r\n onMouseLeave={() => setIsHovered(false)}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n if (onEditClick) {\r\n onEditClick();\r\n }\r\n }}\r\n >\r\n <span className=\"highlight-span\" style={{ display: \"inline\" }}>\r\n {children}\r\n </span>\r\n <EditButton\r\n className=\"edit-button\"\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n if (onEditClick) {\r\n onEditClick();\r\n }\r\n }}\r\n size=\"small\"\r\n >\r\n {variableState === VariableState.Accepted ? (\r\n <CheckRounded\r\n sx={{ fontSize: 14, color: \"#FFFFFF\", strokeWidth: 2 }}\r\n />\r\n ) : (\r\n <EditRounded\r\n sx={{ fontSize: 14, color: \"#FFFFFF\", strokeWidth: 2 }}\r\n />\r\n )}\r\n </EditButton>\r\n </HighlightWrapper>\r\n </NoteContainer>\r\n );\r\n};\r\n"],"names":["styled","Box","IconButton","useState","mapStatusToVariableState","mapRequirementTypeToState","_jsxs","_jsx","Alert","VariableState","CheckRounded","EditRounded"],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ function mapStatusToVariableState(status) {
|
|
|
11
11
|
case "Action Required":
|
|
12
12
|
return variable.VariableState.ActionRequired;
|
|
13
13
|
case "Ready For Approval":
|
|
14
|
-
return variable.VariableState.
|
|
14
|
+
return variable.VariableState.Pending;
|
|
15
15
|
case "Rejected":
|
|
16
16
|
return variable.VariableState.Rejected;
|
|
17
17
|
case "Declined":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variableProcessing.js","sources":["../../../../src/helpers/variableProcessing.ts"],"sourcesContent":["import { VariableState, RequirementType } from \"../types/variable\";\r\n\r\nfunction mapStatusToVariableState(status: string): VariableState | undefined {\
|
|
1
|
+
{"version":3,"file":"variableProcessing.js","sources":["../../../../src/helpers/variableProcessing.ts"],"sourcesContent":["import { VariableState, RequirementType } from \"../types/variable\";\r\n\r\nfunction mapStatusToVariableState(\n status: string,\n): Exclude<VariableState, VariableState.ReadyForApproval> | undefined {\n switch (status) {\r\n case \"Accepted\":\r\n return VariableState.Accepted;\r\n case \"Pending\":\r\n return VariableState.Pending;\r\n case \"Action Required\":\r\n return VariableState.ActionRequired;\r\n case \"Ready For Approval\":\r\n return VariableState.Pending;\r\n case \"Rejected\":\r\n return VariableState.Rejected;\r\n case \"Declined\":\r\n return VariableState.Declined;\r\n case \"Draft\":\r\n return VariableState.Draft;\r\n case \"Not Started\":\r\n return VariableState.NotStarted;\r\n default:\r\n return undefined;\r\n }\r\n}\r\n\r\nfunction mapRequirementTypeToState(\r\n reqType: string,\r\n): RequirementType | undefined {\r\n switch (reqType) {\r\n case \"Default\":\r\n return RequirementType.Default;\r\n case \"Optional\":\r\n return RequirementType.Optional;\r\n default:\r\n return undefined;\r\n }\r\n}\r\n\r\nexport { mapStatusToVariableState, mapRequirementTypeToState };\r\n"],"names":["VariableState","RequirementType"],"mappings":";;;;AAEA,SAAS,wBAAwB,CAC/B,MAAc,EAAA;IAEd,QAAQ,MAAM;AACZ,QAAA,KAAK,UAAU;YACb,OAAOA,sBAAa,CAAC,QAAQ;AAC/B,QAAA,KAAK,SAAS;YACZ,OAAOA,sBAAa,CAAC,OAAO;AAC9B,QAAA,KAAK,iBAAiB;YACpB,OAAOA,sBAAa,CAAC,cAAc;AACrC,QAAA,KAAK,oBAAoB;YACvB,OAAOA,sBAAa,CAAC,OAAO;AAC9B,QAAA,KAAK,UAAU;YACb,OAAOA,sBAAa,CAAC,QAAQ;AAC/B,QAAA,KAAK,UAAU;YACb,OAAOA,sBAAa,CAAC,QAAQ;AAC/B,QAAA,KAAK,OAAO;YACV,OAAOA,sBAAa,CAAC,KAAK;AAC5B,QAAA,KAAK,aAAa;YAChB,OAAOA,sBAAa,CAAC,UAAU;AACjC,QAAA;AACE,YAAA,OAAO,SAAS;;AAEtB;AAEA,SAAS,yBAAyB,CAChC,OAAe,EAAA;IAEf,QAAQ,OAAO;AACb,QAAA,KAAK,SAAS;YACZ,OAAOC,wBAAe,CAAC,OAAO;AAChC,QAAA,KAAK,UAAU;YACb,OAAOA,wBAAe,CAAC,QAAQ;AACjC,QAAA;AACE,YAAA,OAAO,SAAS;;AAEtB;;;;;"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -31,6 +31,7 @@ var RichTextArea = require('./components/RichTextArea.js');
|
|
|
31
31
|
var FileUploadButton = require('./components/FileUploadButton.js');
|
|
32
32
|
var Footer = require('./components/Footer.js');
|
|
33
33
|
var AutocompleteSelect = require('./components/AutocompleteSelect.js');
|
|
34
|
+
var DrawerPanel = require('./components/DrawerPanel.js');
|
|
34
35
|
|
|
35
36
|
|
|
36
37
|
|
|
@@ -68,4 +69,5 @@ exports.RichTextArea = RichTextArea.RichTextArea;
|
|
|
68
69
|
exports.FileUploadButton = FileUploadButton.FileUploadButton;
|
|
69
70
|
exports.Footer = Footer.Footer;
|
|
70
71
|
exports.AutocompleteSelect = AutocompleteSelect.AutocompleteSelect;
|
|
72
|
+
exports.DrawerPanel = DrawerPanel.DrawerPanel;
|
|
71
73
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
type DrawerPanelProps = {
|
|
3
|
+
children: ReactNode;
|
|
4
|
+
title: ReactNode;
|
|
5
|
+
subtitle?: ReactNode;
|
|
6
|
+
defaultExpanded?: boolean;
|
|
7
|
+
expandLabel?: string;
|
|
8
|
+
collapseLabel?: string;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Renders a persistent, collapsible bottom drawer and reserves enough space in
|
|
12
|
+
* the containing page content to prevent the drawer from obscuring it.
|
|
13
|
+
*/
|
|
14
|
+
export declare const DrawerPanel: ({ children, title, subtitle, defaultExpanded, expandLabel, collapseLabel, }: DrawerPanelProps) => import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { useState, useRef, useId, useEffect } from 'react';
|
|
3
|
+
import KeyboardArrowDownRounded from '@mui/icons-material/KeyboardArrowDownRounded';
|
|
4
|
+
import KeyboardArrowUpRounded from '@mui/icons-material/KeyboardArrowUpRounded';
|
|
5
|
+
import Box from '@mui/material/Box';
|
|
6
|
+
import ButtonBase from '@mui/material/ButtonBase';
|
|
7
|
+
import Drawer from '@mui/material/Drawer';
|
|
8
|
+
import Typography from '@mui/material/Typography';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Renders a persistent, collapsible bottom drawer and reserves enough space in
|
|
12
|
+
* the containing page content to prevent the drawer from obscuring it.
|
|
13
|
+
*/
|
|
14
|
+
const DrawerPanel = ({ children, title, subtitle = undefined, defaultExpanded = false, expandLabel = 'Expand panel', collapseLabel = 'Collapse panel', }) => {
|
|
15
|
+
const [isExpanded, setIsExpanded] = useState(defaultExpanded);
|
|
16
|
+
const drawerRootRef = useRef(null);
|
|
17
|
+
const drawerPaperRef = useRef(null);
|
|
18
|
+
const headingId = useId();
|
|
19
|
+
const contentId = useId();
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
const drawerPaper = drawerPaperRef.current;
|
|
22
|
+
const pageContent = drawerRootRef.current?.closest('[data-page-content]');
|
|
23
|
+
if (!drawerPaper || !pageContent)
|
|
24
|
+
return undefined;
|
|
25
|
+
/** Keeps the page's reserved space in sync with the drawer's rendered height. */
|
|
26
|
+
const updatePagePadding = () => {
|
|
27
|
+
pageContent.style.setProperty('--drawer-panel-height', `${drawerPaper.getBoundingClientRect().height}px`);
|
|
28
|
+
};
|
|
29
|
+
const resizeObserver = new ResizeObserver(updatePagePadding);
|
|
30
|
+
updatePagePadding();
|
|
31
|
+
resizeObserver.observe(drawerPaper);
|
|
32
|
+
return () => {
|
|
33
|
+
resizeObserver.disconnect();
|
|
34
|
+
pageContent.style.removeProperty('--drawer-panel-height');
|
|
35
|
+
};
|
|
36
|
+
}, []);
|
|
37
|
+
return (jsx(Drawer, { anchor: "bottom", open: true, variant: "persistent", ref: drawerRootRef, "data-drawer-panel": true, "data-drawer-panel-expanded": isExpanded, sx: { zIndex: 45 }, slotProps: {
|
|
38
|
+
paper: {
|
|
39
|
+
ref: drawerPaperRef,
|
|
40
|
+
role: 'region',
|
|
41
|
+
'aria-labelledby': headingId,
|
|
42
|
+
sx: {
|
|
43
|
+
left: { xs: 0, md: 'var(--sidebar-width, 80px)' },
|
|
44
|
+
right: 'auto',
|
|
45
|
+
width: { xs: '100%', md: 'calc(100% - var(--sidebar-width, 80px))' },
|
|
46
|
+
maxHeight: 'calc(100dvh - 16px)',
|
|
47
|
+
boxSizing: 'border-box',
|
|
48
|
+
borderTop: 1,
|
|
49
|
+
borderColor: 'divider',
|
|
50
|
+
borderRadius: 0,
|
|
51
|
+
backgroundColor: 'background.paper',
|
|
52
|
+
boxShadow: '0 -4px 16px rgba(0, 0, 0, 0.12)',
|
|
53
|
+
overflowX: 'hidden',
|
|
54
|
+
overflowY: 'auto',
|
|
55
|
+
zIndex: 45,
|
|
56
|
+
transition: 'left 0.15s ease-out, width 0.15s ease-out',
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
}, children: jsxs(Box, { sx: { display: 'flex', flexDirection: 'column', width: '100%' }, children: [jsxs(ButtonBase, { disableRipple: true, "aria-controls": contentId, "aria-expanded": isExpanded, "aria-label": isExpanded ? collapseLabel : expandLabel, onClick: () => setIsExpanded(expanded => !expanded), sx: {
|
|
60
|
+
display: 'flex',
|
|
61
|
+
alignItems: 'center',
|
|
62
|
+
justifyContent: 'flex-start',
|
|
63
|
+
gap: { xs: 1, sm: 1.5 },
|
|
64
|
+
px: { xs: 2, sm: 2.5 },
|
|
65
|
+
py: { xs: 1.5, sm: 1.5 },
|
|
66
|
+
width: '100%',
|
|
67
|
+
textAlign: 'left',
|
|
68
|
+
backgroundColor: theme => theme.palette.custom.statusBarBackgroundColor,
|
|
69
|
+
borderBottom: 1,
|
|
70
|
+
borderColor: 'divider',
|
|
71
|
+
}, children: [jsx(Box, { component: "span", sx: { display: 'inline-flex', flexShrink: 0 }, children: isExpanded ? jsx(KeyboardArrowDownRounded, {}) : jsx(KeyboardArrowUpRounded, {}) }), jsxs(Box, { component: "span", display: "flex", alignItems: "center", gap: 2, children: [jsx(Typography, { component: "span", id: headingId, role: "heading", "aria-level": 2, variant: "h5", sx: { fontSize: 16 }, children: title }), subtitle && (jsx(Typography, { component: "span", variant: "caption", sx: { fontSize: 16 }, children: subtitle }))] })] }), jsx(Box, { id: contentId, "aria-hidden": !isExpanded, sx: {
|
|
72
|
+
display: 'grid',
|
|
73
|
+
pl: { xs: 7, sm: 8.5 },
|
|
74
|
+
pr: { xs: 2, sm: 2.5 },
|
|
75
|
+
gridTemplateRows: isExpanded ? '1fr' : '0fr',
|
|
76
|
+
transition: 'grid-template-rows 0.2s ease-out',
|
|
77
|
+
}, children: jsx(Box, { sx: { minHeight: 0, overflow: 'hidden' }, children: jsx(Box, { sx: {
|
|
78
|
+
my: 2,
|
|
79
|
+
opacity: isExpanded ? 1 : 0,
|
|
80
|
+
visibility: isExpanded ? 'visible' : 'hidden',
|
|
81
|
+
transition: isExpanded ? 'opacity 0.15s ease-out 0.05s' : 'opacity 0.1s ease-out, visibility 0s linear 0.2s',
|
|
82
|
+
width: '100%',
|
|
83
|
+
}, children: children }) }) })] }) }));
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
export { DrawerPanel };
|
|
87
|
+
//# sourceMappingURL=DrawerPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DrawerPanel.js","sources":["../../../../src/components/DrawerPanel.tsx"],"sourcesContent":["import {useEffect, useId, useRef, useState, type ReactNode} from 'react';\r\n\r\nimport KeyboardArrowDownRounded from '@mui/icons-material/KeyboardArrowDownRounded';\r\nimport KeyboardArrowUpRounded from '@mui/icons-material/KeyboardArrowUpRounded';\r\nimport Box from '@mui/material/Box';\r\nimport ButtonBase from '@mui/material/ButtonBase';\r\nimport Drawer from '@mui/material/Drawer';\r\nimport Typography from '@mui/material/Typography';\r\n\r\ntype DrawerPanelProps = {\r\n children: ReactNode;\r\n title: ReactNode;\r\n subtitle?: ReactNode;\r\n defaultExpanded?: boolean;\r\n expandLabel?: string;\r\n collapseLabel?: string;\r\n};\r\n\r\n/**\r\n * Renders a persistent, collapsible bottom drawer and reserves enough space in\r\n * the containing page content to prevent the drawer from obscuring it.\r\n */\r\nexport const DrawerPanel = ({\r\n children,\r\n title,\r\n subtitle = undefined,\r\n defaultExpanded = false,\r\n expandLabel = 'Expand panel',\r\n collapseLabel = 'Collapse panel',\r\n}: DrawerPanelProps) => {\r\n const [isExpanded, setIsExpanded] = useState(defaultExpanded);\r\n const drawerRootRef = useRef<HTMLDivElement>(null);\r\n const drawerPaperRef = useRef<HTMLDivElement>(null);\r\n const headingId = useId();\r\n const contentId = useId();\r\n\r\n useEffect(() => {\r\n const drawerPaper = drawerPaperRef.current;\r\n const pageContent = drawerRootRef.current?.closest<HTMLElement>('[data-page-content]');\r\n\r\n if (!drawerPaper || !pageContent) return undefined;\r\n\r\n /** Keeps the page's reserved space in sync with the drawer's rendered height. */\r\n const updatePagePadding = () => {\r\n pageContent.style.setProperty('--drawer-panel-height', `${drawerPaper.getBoundingClientRect().height}px`);\r\n };\r\n const resizeObserver = new ResizeObserver(updatePagePadding);\r\n\r\n updatePagePadding();\r\n resizeObserver.observe(drawerPaper);\r\n\r\n return () => {\r\n resizeObserver.disconnect();\r\n pageContent.style.removeProperty('--drawer-panel-height');\r\n };\r\n }, []);\r\n\r\n return (\r\n <Drawer\r\n anchor=\"bottom\"\r\n open\r\n variant=\"persistent\"\r\n ref={drawerRootRef}\r\n data-drawer-panel\r\n data-drawer-panel-expanded={isExpanded}\r\n sx={{zIndex: 45}}\r\n slotProps={{\r\n paper: {\r\n ref: drawerPaperRef,\r\n role: 'region',\r\n 'aria-labelledby': headingId,\r\n sx: {\r\n left: {xs: 0, md: 'var(--sidebar-width, 80px)'},\r\n right: 'auto',\r\n width: {xs: '100%', md: 'calc(100% - var(--sidebar-width, 80px))'},\r\n maxHeight: 'calc(100dvh - 16px)',\r\n boxSizing: 'border-box',\r\n borderTop: 1,\r\n borderColor: 'divider',\r\n borderRadius: 0,\r\n backgroundColor: 'background.paper',\r\n boxShadow: '0 -4px 16px rgba(0, 0, 0, 0.12)',\r\n overflowX: 'hidden',\r\n overflowY: 'auto',\r\n zIndex: 45,\r\n transition: 'left 0.15s ease-out, width 0.15s ease-out',\r\n },\r\n },\r\n }}>\r\n <Box sx={{display: 'flex', flexDirection: 'column', width: '100%'}}>\r\n <ButtonBase\r\n disableRipple\r\n aria-controls={contentId}\r\n aria-expanded={isExpanded}\r\n aria-label={isExpanded ? collapseLabel : expandLabel}\r\n onClick={() => setIsExpanded(expanded => !expanded)}\r\n sx={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-start',\r\n gap: {xs: 1, sm: 1.5},\r\n px: {xs: 2, sm: 2.5},\r\n py: {xs: 1.5, sm: 1.5},\r\n width: '100%',\r\n textAlign: 'left',\r\n backgroundColor: theme => theme.palette.custom.statusBarBackgroundColor,\r\n borderBottom: 1,\r\n borderColor: 'divider',\r\n }}>\r\n <Box component=\"span\" sx={{display: 'inline-flex', flexShrink: 0}}>\r\n {isExpanded ? <KeyboardArrowDownRounded /> : <KeyboardArrowUpRounded />}\r\n </Box>\r\n <Box component=\"span\" display=\"flex\" alignItems=\"center\" gap={2}>\r\n <Typography component=\"span\" id={headingId} role=\"heading\" aria-level={2} variant=\"h5\" sx={{fontSize: 16}}>\r\n {title}\r\n </Typography>\r\n {subtitle && (\r\n <Typography component=\"span\" variant=\"caption\" sx={{fontSize: 16}}>\r\n {subtitle}\r\n </Typography>\r\n )}\r\n </Box>\r\n </ButtonBase>\r\n <Box\r\n id={contentId}\r\n aria-hidden={!isExpanded}\r\n sx={{\r\n display: 'grid',\r\n pl: {xs: 7, sm: 8.5},\r\n pr: {xs: 2, sm: 2.5},\r\n gridTemplateRows: isExpanded ? '1fr' : '0fr',\r\n transition: 'grid-template-rows 0.2s ease-out',\r\n }}>\r\n <Box sx={{minHeight: 0, overflow: 'hidden'}}>\r\n <Box\r\n sx={{\r\n my: 2,\r\n opacity: isExpanded ? 1 : 0,\r\n visibility: isExpanded ? 'visible' : 'hidden',\r\n transition: isExpanded ? 'opacity 0.15s ease-out 0.05s' : 'opacity 0.1s ease-out, visibility 0s linear 0.2s',\r\n width: '100%',\r\n }}>\r\n {children}\r\n </Box>\r\n </Box>\r\n </Box>\r\n </Box>\r\n </Drawer>\r\n );\r\n};\r\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -122,7 +122,6 @@ const Modal = ({ isOpen, onClose, onSave, onSubmit, successMessage, errorMessage
|
|
|
122
122
|
color: "#FFBCB3",
|
|
123
123
|
label: "Action Required",
|
|
124
124
|
},
|
|
125
|
-
[VariableState.ReadyForApproval]: { color: "#EBC7FF", label: "Pending" },
|
|
126
125
|
[VariableState.Accepted]: { color: "#DBF59A", label: "Accepted" },
|
|
127
126
|
[VariableState.Rejected]: { color: "#4D3019", label: "Rejected" },
|
|
128
127
|
[VariableState.NotStarted]: { color: "#000000ff", label: "Not Started" },
|
|
@@ -141,10 +140,12 @@ const Modal = ({ isOpen, onClose, onSave, onSubmit, successMessage, errorMessage
|
|
|
141
140
|
label: "Optional",
|
|
142
141
|
},
|
|
143
142
|
};
|
|
144
|
-
const statusStyle =
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
143
|
+
const statusStyle = variableState
|
|
144
|
+
? statusConfig[variableState]
|
|
145
|
+
: {
|
|
146
|
+
color: "#ccc",
|
|
147
|
+
label: "Unknown",
|
|
148
|
+
};
|
|
148
149
|
const requirementTypeStyle = variableReqType
|
|
149
150
|
? reqTypeConfig[variableReqType]
|
|
150
151
|
: { color: "#ccc", label: "Unknown" };
|
|
@@ -1 +1 @@
|
|
|
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.ReadyForApproval]: { color: \"#EBC7FF\", label: \"Pending\" },\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":["_jsxs","_jsx","_Fragment"],"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 = variableState\n ? statusConfig[variableState]\n : {\n color: \"#ccc\",\n label: \"Unknown\",\n };\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":["_jsxs","_jsx","_Fragment"],"mappings":"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"}
|
|
@@ -25,12 +25,6 @@ const statusConfig = {
|
|
|
25
25
|
label: "ActionRequired",
|
|
26
26
|
alertVariant: "error",
|
|
27
27
|
},
|
|
28
|
-
"Ready For Approval": {
|
|
29
|
-
highlight: "#F5E2FF",
|
|
30
|
-
highlightSelected: "#EBC7FF",
|
|
31
|
-
label: "Pending",
|
|
32
|
-
alertVariant: "info",
|
|
33
|
-
},
|
|
34
28
|
Declined: {
|
|
35
29
|
highlight: "#FFF6D1",
|
|
36
30
|
highlightSelected: "#FDE58E",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NoteBox.js","sources":["../../../../src/components/NoteBox.tsx"],"sourcesContent":["import React, { useState } from \"react\";\r\nimport { Box, Typography, IconButton, styled, Chip } from \"@mui/material\";\r\nimport { CheckRounded, EditRounded } from \"@mui/icons-material\";\r\nimport { Alert } from \"./Alert\";\r\nimport { RequirementType, VariableState } from \"../types/variable\";\r\nimport {\r\n mapRequirementTypeToState,\r\n mapStatusToVariableState,\r\n} from \"../helpers/variableProcessing\";\r\n\r\ninterface NoteBoxProps {\r\n status?: string; // Use only status now\r\n requirementType?: string;\r\n label?: string;\r\n note?: string;\r\n children: React.ReactNode;\r\n className?: string;\r\n onEditClick?: () => void;\r\n}\r\n\r\n// Status based color configs (from Modal)\r\nconst statusConfig: {\r\n [key in VariableState]: {\r\n highlight: string;\r\n highlightSelected: string;\r\n label: string;\r\n alertVariant?: \"error\" | \"info\";\r\n };\r\n} = {\r\n Accepted: {\r\n highlight: \"#EDF9CD\",\r\n highlightSelected: \"#DBF59A\",\r\n label: \"Accepted\",\r\n },\r\n Pending: {\r\n highlight: \"#F5E2FF\",\r\n highlightSelected: \"#EBC7FF\",\r\n label: \"Pending\",\r\n alertVariant: \"info\",\r\n },\r\n \"Action Required\": {\r\n highlight: \"#FBEEEE\",\r\n highlightSelected: \"#FFBCB3\",\r\n label: \"ActionRequired\",\r\n alertVariant: \"error\",\r\n },\r\n \"Ready For Approval\": {\r\n highlight: \"#F5E2FF\",\r\n highlightSelected: \"#EBC7FF\",\r\n label: \"Pending\",\r\n alertVariant: \"info\",\r\n },\r\n Declined: {\r\n highlight: \"#FFF6D1\",\r\n highlightSelected: \"#FDE58E\",\r\n label: \"Declined\",\r\n },\r\n \"Not Started\": {\r\n highlight: \"#f8c97cff\",\r\n highlightSelected: \"#F5A623\",\r\n label: \"Not Started\",\r\n },\r\n Rejected: {\r\n highlight: \"#FBEEEE\",\r\n highlightSelected: \"#FFBCB3\",\r\n label: \"ActionRequired\",\r\n alertVariant: \"error\",\r\n },\r\n Draft: {\r\n highlight: \"#FFEACD\",\r\n highlightSelected: \"#FFC365\",\r\n label: \"Draft\",\r\n },\r\n};\r\n\r\nconst NoteContainer = styled(Box)({\r\n position: \"relative\",\r\n display: \"inline\",\r\n maxWidth: \"100%\",\r\n});\r\n\r\n// Uses highlight colors driven by status exclusively\r\nconst HighlightWrapper = styled(Box, {\r\n shouldForwardProp: (prop) =>\r\n prop !== \"isHovered\" &&\r\n prop !== \"highlightColor\" &&\r\n prop !== \"highlightSelectedColor\",\r\n})<{\r\n isHovered: boolean;\r\n highlightColor: string;\r\n highlightSelectedColor: string;\r\n}>(({ isHovered, highlightColor, highlightSelectedColor }) => ({\r\n position: \"relative\",\r\n display: \"inline\",\r\n maxWidth: \"100%\",\r\n \"&:hover .edit-button\": {\r\n opacity: 1,\r\n },\r\n \"& .highlight-span\": {\r\n background: isHovered ? highlightSelectedColor : highlightColor,\r\n padding: \"2px 4px\",\r\n borderBottom: \"2px solid rgba(77, 48, 25, 0.3)\",\r\n boxDecorationBreak: \"clone\",\r\n WebkitBoxDecorationBreak: \"clone\",\r\n transition: \"background 0.2s ease\",\r\n cursor: \"pointer\",\r\n fontSize: \"1rem\",\r\n wordWrap: \"break-word\",\r\n overflowWrap: \"break-word\",\r\n display: \"inline\",\r\n color: \"#4D3019\",\r\n },\r\n}));\r\n\r\nconst EditButton = styled(IconButton)(({ theme }) => ({\r\n top: 0,\r\n right: 0,\r\n transform: \"translate(-50%, -50%)\",\r\n position: \"relative\",\r\n width: 20,\r\n height: 20,\r\n marginRight: -20,\r\n borderRadius:\r\n (typeof theme.shape.borderRadius === \"string\"\r\n ? parseInt(theme.shape.borderRadius, 10)\r\n : theme.shape.borderRadius || 4) * 2,\r\n backgroundColor: \"#4D3019\",\r\n opacity: 0,\r\n transition: \"all 0.2s ease\",\r\n boxShadow: \"0 1px 3px rgba(0,0,0,0.12)\",\r\n \"&:hover\": {\r\n backgroundColor: \"#4D3019\",\r\n transform: \"translate(-50%, -50%) scale(1.1)\",\r\n },\r\n}));\r\n\r\nexport const NoteBox: React.FC<NoteBoxProps> = ({\r\n status,\r\n requirementType,\r\n label,\r\n note,\r\n children,\r\n className = \"\",\r\n onEditClick,\r\n}) => {\r\n const [isHovered, setIsHovered] = useState(false);\r\n\r\n // Map current status\r\n const variableState = mapStatusToVariableState(status!!);\r\n const requirementTypeState = mapRequirementTypeToState(requirementType!!);\r\n\r\n const style = variableState\r\n ? statusConfig[variableState]\r\n : {\r\n highlight: \"#EEE\",\r\n highlightSelected: \"#DDD\",\r\n label: label || \"\",\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 requirementTypeStyle = requirementTypeState\r\n ? reqTypeConfig[requirementTypeState]\r\n : {\r\n highlight: \"#EEE\",\r\n highlightSelected: \"#DDD\",\r\n label: label || \"\",\r\n };\r\n\r\n return (\r\n <NoteContainer className={className}>\r\n {/* Alert for note when status matches and note available */}\r\n {variableState && style.alertVariant && note && (\r\n <Alert variant={style.alertVariant} sx={{ mb: 1 }}>\r\n {note}\r\n </Alert>\r\n )}\r\n\r\n {/* Highlighted content box */}\r\n <HighlightWrapper\r\n isHovered={isHovered}\r\n highlightColor={\r\n variableState === VariableState.NotStarted\r\n ? requirementTypeStyle.highlight\r\n : style.highlight\r\n }\r\n highlightSelectedColor={\r\n variableState === VariableState.NotStarted\r\n ? requirementTypeStyle.highlightSelected\r\n : style.highlightSelected\r\n }\r\n onMouseEnter={() => setIsHovered(true)}\r\n onMouseLeave={() => setIsHovered(false)}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n if (onEditClick) {\r\n onEditClick();\r\n }\r\n }}\r\n >\r\n <span className=\"highlight-span\" style={{ display: \"inline\" }}>\r\n {children}\r\n </span>\r\n <EditButton\r\n className=\"edit-button\"\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n if (onEditClick) {\r\n onEditClick();\r\n }\r\n }}\r\n size=\"small\"\r\n >\r\n {variableState === VariableState.Accepted ? (\r\n <CheckRounded\r\n sx={{ fontSize: 14, color: \"#FFFFFF\", strokeWidth: 2 }}\r\n />\r\n ) : (\r\n <EditRounded\r\n sx={{ fontSize: 14, color: \"#FFFFFF\", strokeWidth: 2 }}\r\n />\r\n )}\r\n </EditButton>\r\n </HighlightWrapper>\r\n </NoteContainer>\r\n );\r\n};\r\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;AAoBA;AACA,MAAM,YAAY,GAOd;AACF,IAAA,QAAQ,EAAE;AACR,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,iBAAiB,EAAE,SAAS;AAC5B,QAAA,KAAK,EAAE,UAAU;AAClB,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,iBAAiB,EAAE,SAAS;AAC5B,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,YAAY,EAAE,MAAM;AACrB,KAAA;AACD,IAAA,iBAAiB,EAAE;AACjB,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,iBAAiB,EAAE,SAAS;AAC5B,QAAA,KAAK,EAAE,gBAAgB;AACvB,QAAA,YAAY,EAAE,OAAO;AACtB,KAAA;AACD,IAAA,oBAAoB,EAAE;AACpB,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,iBAAiB,EAAE,SAAS;AAC5B,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,YAAY,EAAE,MAAM;AACrB,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,iBAAiB,EAAE,SAAS;AAC5B,QAAA,KAAK,EAAE,UAAU;AAClB,KAAA;AACD,IAAA,aAAa,EAAE;AACb,QAAA,SAAS,EAAE,WAAW;AACtB,QAAA,iBAAiB,EAAE,SAAS;AAC5B,QAAA,KAAK,EAAE,aAAa;AACrB,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,iBAAiB,EAAE,SAAS;AAC5B,QAAA,KAAK,EAAE,gBAAgB;AACvB,QAAA,YAAY,EAAE,OAAO;AACtB,KAAA;AACD,IAAA,KAAK,EAAE;AACL,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,iBAAiB,EAAE,SAAS;AAC5B,QAAA,KAAK,EAAE,OAAO;AACf,KAAA;CACF;AAED,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAChC,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,OAAO,EAAE,QAAQ;AACjB,IAAA,QAAQ,EAAE,MAAM;AACjB,CAAA,CAAC;AAEF;AACA,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,EAAE;IACnC,iBAAiB,EAAE,CAAC,IAAI,KACtB,IAAI,KAAK,WAAW;AACpB,QAAA,IAAI,KAAK,gBAAgB;AACzB,QAAA,IAAI,KAAK,wBAAwB;AACpC,CAAA,CAAC,CAIC,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM;AAC7D,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,OAAO,EAAE,QAAQ;AACjB,IAAA,QAAQ,EAAE,MAAM;AAChB,IAAA,sBAAsB,EAAE;AACtB,QAAA,OAAO,EAAE,CAAC;AACX,KAAA;AACD,IAAA,mBAAmB,EAAE;QACnB,UAAU,EAAE,SAAS,GAAG,sBAAsB,GAAG,cAAc;AAC/D,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,YAAY,EAAE,iCAAiC;AAC/C,QAAA,kBAAkB,EAAE,OAAO;AAC3B,QAAA,wBAAwB,EAAE,OAAO;AACjC,QAAA,UAAU,EAAE,sBAAsB;AAClC,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,QAAQ,EAAE,YAAY;AACtB,QAAA,YAAY,EAAE,YAAY;AAC1B,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,KAAK,EAAE,SAAS;AACjB,KAAA;AACF,CAAA,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;AACpD,IAAA,GAAG,EAAE,CAAC;AACN,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,SAAS,EAAE,uBAAuB;AAClC,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,MAAM,EAAE,EAAE;IACV,WAAW,EAAE,GAAG;IAChB,YAAY,EACV,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,YAAY,KAAK;UACjC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE;UACrC,KAAK,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC;AACxC,IAAA,eAAe,EAAE,SAAS;AAC1B,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,UAAU,EAAE,eAAe;AAC3B,IAAA,SAAS,EAAE,4BAA4B;AACvC,IAAA,SAAS,EAAE;AACT,QAAA,eAAe,EAAE,SAAS;AAC1B,QAAA,SAAS,EAAE,kCAAkC;AAC9C,KAAA;AACF,CAAA,CAAC,CAAC;MAEU,OAAO,GAA2B,CAAC,EAC9C,MAAM,EACN,eAAe,EACf,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,SAAS,GAAG,EAAE,EACd,WAAW,GACZ,KAAI;IACH,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;;AAGjD,IAAA,MAAM,aAAa,GAAG,wBAAwB,CAAC,MAAQ,CAAC;AACxD,IAAA,MAAM,oBAAoB,GAAG,yBAAyB,CAAC,eAAiB,CAAC;IAEzE,MAAM,KAAK,GAAG;AACZ,UAAE,YAAY,CAAC,aAAa;AAC5B,UAAE;AACE,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,iBAAiB,EAAE,OAEpB;AAEL,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,oBAAoB,GAAG;AAC3B,UAAE,aAAa,CAAC,oBAAoB;AACpC,UAAE;AACE,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,iBAAiB,EAAE,OAEpB;IAEL,QACEA,KAAC,aAAa,EAAA,EAAC,SAAS,EAAE,SAAS,EAAA,QAAA,EAAA,CAEhC,aAAa,IAAI,KAAK,CAAC,YAAY,IAAI,IAAI,KAC1CC,GAAA,CAAC,KAAK,EAAA,EAAC,OAAO,EAAE,KAAK,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAA,QAAA,EAC9C,IAAI,EAAA,CACC,CACT,EAGDD,IAAA,CAAC,gBAAgB,EAAA,EACf,SAAS,EAAE,SAAS,EACpB,cAAc,EACZ,aAAa,KAAK,aAAa,CAAC;sBAC5B,oBAAoB,CAAC;sBACrB,KAAK,CAAC,SAAS,EAErB,sBAAsB,EACpB,aAAa,KAAK,aAAa,CAAC;sBAC5B,oBAAoB,CAAC;AACvB,sBAAE,KAAK,CAAC,iBAAiB,EAE7B,YAAY,EAAE,MAAM,YAAY,CAAC,IAAI,CAAC,EACtC,YAAY,EAAE,MAAM,YAAY,CAAC,KAAK,CAAC,EACvC,OAAO,EAAE,CAAC,CAAC,KAAI;oBACb,CAAC,CAAC,eAAe,EAAE;oBACnB,IAAI,WAAW,EAAE;AACf,wBAAA,WAAW,EAAE;oBACf;AACF,gBAAA,CAAC,EAAA,QAAA,EAAA,CAEDC,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,gBAAgB,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAA,QAAA,EAC1D,QAAQ,EAAA,CACJ,EACPA,GAAA,CAAC,UAAU,EAAA,EACT,SAAS,EAAC,aAAa,EACvB,OAAO,EAAE,CAAC,CAAC,KAAI;4BACb,CAAC,CAAC,eAAe,EAAE;4BACnB,IAAI,WAAW,EAAE;AACf,gCAAA,WAAW,EAAE;4BACf;AACF,wBAAA,CAAC,EACD,IAAI,EAAC,OAAO,EAAA,QAAA,EAEX,aAAa,KAAK,aAAa,CAAC,QAAQ,IACvCA,GAAA,CAAC,YAAY,EAAA,EACX,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,EAAE,EAAA,CACtD,KAEFA,GAAA,CAAC,WAAW,EAAA,EACV,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,EAAE,EAAA,CACtD,CACH,EAAA,CACU,CAAA,EAAA,CACI,CAAA,EAAA,CACL;AAEpB;;;;"}
|
|
1
|
+
{"version":3,"file":"NoteBox.js","sources":["../../../../src/components/NoteBox.tsx"],"sourcesContent":["import React, { useState } from \"react\";\r\nimport { Box, Typography, IconButton, styled, Chip } from \"@mui/material\";\r\nimport { CheckRounded, EditRounded } from \"@mui/icons-material\";\r\nimport { Alert } from \"./Alert\";\r\nimport { RequirementType, VariableState } from \"../types/variable\";\r\nimport {\r\n mapRequirementTypeToState,\r\n mapStatusToVariableState,\r\n} from \"../helpers/variableProcessing\";\r\n\r\ninterface NoteBoxProps {\r\n status?: string; // Use only status now\r\n requirementType?: string;\r\n label?: string;\r\n note?: string;\r\n children: React.ReactNode;\r\n className?: string;\r\n onEditClick?: () => void;\r\n}\r\n\r\n// Status based color configs (from Modal)\r\nconst statusConfig: {\n [key in Exclude<VariableState, VariableState.ReadyForApproval>]: {\n highlight: string;\r\n highlightSelected: string;\r\n label: string;\r\n alertVariant?: \"error\" | \"info\";\r\n };\r\n} = {\r\n Accepted: {\r\n highlight: \"#EDF9CD\",\r\n highlightSelected: \"#DBF59A\",\r\n label: \"Accepted\",\r\n },\r\n Pending: {\r\n highlight: \"#F5E2FF\",\r\n highlightSelected: \"#EBC7FF\",\r\n label: \"Pending\",\r\n alertVariant: \"info\",\r\n },\r\n \"Action Required\": {\r\n highlight: \"#FBEEEE\",\r\n highlightSelected: \"#FFBCB3\",\r\n label: \"ActionRequired\",\r\n alertVariant: \"error\",\r\n },\r\n Declined: {\r\n highlight: \"#FFF6D1\",\r\n highlightSelected: \"#FDE58E\",\r\n label: \"Declined\",\r\n },\r\n \"Not Started\": {\r\n highlight: \"#f8c97cff\",\r\n highlightSelected: \"#F5A623\",\r\n label: \"Not Started\",\r\n },\r\n Rejected: {\r\n highlight: \"#FBEEEE\",\r\n highlightSelected: \"#FFBCB3\",\r\n label: \"ActionRequired\",\r\n alertVariant: \"error\",\r\n },\r\n Draft: {\r\n highlight: \"#FFEACD\",\r\n highlightSelected: \"#FFC365\",\r\n label: \"Draft\",\r\n },\r\n};\r\n\r\nconst NoteContainer = styled(Box)({\r\n position: \"relative\",\r\n display: \"inline\",\r\n maxWidth: \"100%\",\r\n});\r\n\r\n// Uses highlight colors driven by status exclusively\r\nconst HighlightWrapper = styled(Box, {\r\n shouldForwardProp: (prop) =>\r\n prop !== \"isHovered\" &&\r\n prop !== \"highlightColor\" &&\r\n prop !== \"highlightSelectedColor\",\r\n})<{\r\n isHovered: boolean;\r\n highlightColor: string;\r\n highlightSelectedColor: string;\r\n}>(({ isHovered, highlightColor, highlightSelectedColor }) => ({\r\n position: \"relative\",\r\n display: \"inline\",\r\n maxWidth: \"100%\",\r\n \"&:hover .edit-button\": {\r\n opacity: 1,\r\n },\r\n \"& .highlight-span\": {\r\n background: isHovered ? highlightSelectedColor : highlightColor,\r\n padding: \"2px 4px\",\r\n borderBottom: \"2px solid rgba(77, 48, 25, 0.3)\",\r\n boxDecorationBreak: \"clone\",\r\n WebkitBoxDecorationBreak: \"clone\",\r\n transition: \"background 0.2s ease\",\r\n cursor: \"pointer\",\r\n fontSize: \"1rem\",\r\n wordWrap: \"break-word\",\r\n overflowWrap: \"break-word\",\r\n display: \"inline\",\r\n color: \"#4D3019\",\r\n },\r\n}));\r\n\r\nconst EditButton = styled(IconButton)(({ theme }) => ({\r\n top: 0,\r\n right: 0,\r\n transform: \"translate(-50%, -50%)\",\r\n position: \"relative\",\r\n width: 20,\r\n height: 20,\r\n marginRight: -20,\r\n borderRadius:\r\n (typeof theme.shape.borderRadius === \"string\"\r\n ? parseInt(theme.shape.borderRadius, 10)\r\n : theme.shape.borderRadius || 4) * 2,\r\n backgroundColor: \"#4D3019\",\r\n opacity: 0,\r\n transition: \"all 0.2s ease\",\r\n boxShadow: \"0 1px 3px rgba(0,0,0,0.12)\",\r\n \"&:hover\": {\r\n backgroundColor: \"#4D3019\",\r\n transform: \"translate(-50%, -50%) scale(1.1)\",\r\n },\r\n}));\r\n\r\nexport const NoteBox: React.FC<NoteBoxProps> = ({\r\n status,\r\n requirementType,\r\n label,\r\n note,\r\n children,\r\n className = \"\",\r\n onEditClick,\r\n}) => {\r\n const [isHovered, setIsHovered] = useState(false);\r\n\r\n // Map current status\r\n const variableState = mapStatusToVariableState(status!!);\r\n const requirementTypeState = mapRequirementTypeToState(requirementType!!);\r\n\r\n const style = variableState\r\n ? statusConfig[variableState]\r\n : {\r\n highlight: \"#EEE\",\r\n highlightSelected: \"#DDD\",\r\n label: label || \"\",\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 requirementTypeStyle = requirementTypeState\r\n ? reqTypeConfig[requirementTypeState]\r\n : {\r\n highlight: \"#EEE\",\r\n highlightSelected: \"#DDD\",\r\n label: label || \"\",\r\n };\r\n\r\n return (\r\n <NoteContainer className={className}>\r\n {/* Alert for note when status matches and note available */}\r\n {variableState && style.alertVariant && note && (\r\n <Alert variant={style.alertVariant} sx={{ mb: 1 }}>\r\n {note}\r\n </Alert>\r\n )}\r\n\r\n {/* Highlighted content box */}\r\n <HighlightWrapper\r\n isHovered={isHovered}\r\n highlightColor={\r\n variableState === VariableState.NotStarted\r\n ? requirementTypeStyle.highlight\r\n : style.highlight\r\n }\r\n highlightSelectedColor={\r\n variableState === VariableState.NotStarted\r\n ? requirementTypeStyle.highlightSelected\r\n : style.highlightSelected\r\n }\r\n onMouseEnter={() => setIsHovered(true)}\r\n onMouseLeave={() => setIsHovered(false)}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n if (onEditClick) {\r\n onEditClick();\r\n }\r\n }}\r\n >\r\n <span className=\"highlight-span\" style={{ display: \"inline\" }}>\r\n {children}\r\n </span>\r\n <EditButton\r\n className=\"edit-button\"\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n if (onEditClick) {\r\n onEditClick();\r\n }\r\n }}\r\n size=\"small\"\r\n >\r\n {variableState === VariableState.Accepted ? (\r\n <CheckRounded\r\n sx={{ fontSize: 14, color: \"#FFFFFF\", strokeWidth: 2 }}\r\n />\r\n ) : (\r\n <EditRounded\r\n sx={{ fontSize: 14, color: \"#FFFFFF\", strokeWidth: 2 }}\r\n />\r\n )}\r\n </EditButton>\r\n </HighlightWrapper>\r\n </NoteContainer>\r\n );\r\n};\r\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { VariableState, RequirementType } from "../types/variable";
|
|
2
|
-
declare function mapStatusToVariableState(status: string): VariableState | undefined;
|
|
2
|
+
declare function mapStatusToVariableState(status: string): Exclude<VariableState, VariableState.ReadyForApproval> | undefined;
|
|
3
3
|
declare function mapRequirementTypeToState(reqType: string): RequirementType | undefined;
|
|
4
4
|
export { mapStatusToVariableState, mapRequirementTypeToState };
|
|
@@ -9,7 +9,7 @@ function mapStatusToVariableState(status) {
|
|
|
9
9
|
case "Action Required":
|
|
10
10
|
return VariableState.ActionRequired;
|
|
11
11
|
case "Ready For Approval":
|
|
12
|
-
return VariableState.
|
|
12
|
+
return VariableState.Pending;
|
|
13
13
|
case "Rejected":
|
|
14
14
|
return VariableState.Rejected;
|
|
15
15
|
case "Declined":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variableProcessing.js","sources":["../../../../src/helpers/variableProcessing.ts"],"sourcesContent":["import { VariableState, RequirementType } from \"../types/variable\";\r\n\r\nfunction mapStatusToVariableState(status: string): VariableState | undefined {\
|
|
1
|
+
{"version":3,"file":"variableProcessing.js","sources":["../../../../src/helpers/variableProcessing.ts"],"sourcesContent":["import { VariableState, RequirementType } from \"../types/variable\";\r\n\r\nfunction mapStatusToVariableState(\n status: string,\n): Exclude<VariableState, VariableState.ReadyForApproval> | undefined {\n switch (status) {\r\n case \"Accepted\":\r\n return VariableState.Accepted;\r\n case \"Pending\":\r\n return VariableState.Pending;\r\n case \"Action Required\":\r\n return VariableState.ActionRequired;\r\n case \"Ready For Approval\":\r\n return VariableState.Pending;\r\n case \"Rejected\":\r\n return VariableState.Rejected;\r\n case \"Declined\":\r\n return VariableState.Declined;\r\n case \"Draft\":\r\n return VariableState.Draft;\r\n case \"Not Started\":\r\n return VariableState.NotStarted;\r\n default:\r\n return undefined;\r\n }\r\n}\r\n\r\nfunction mapRequirementTypeToState(\r\n reqType: string,\r\n): RequirementType | undefined {\r\n switch (reqType) {\r\n case \"Default\":\r\n return RequirementType.Default;\r\n case \"Optional\":\r\n return RequirementType.Optional;\r\n default:\r\n return undefined;\r\n }\r\n}\r\n\r\nexport { mapStatusToVariableState, mapRequirementTypeToState };\r\n"],"names":[],"mappings":";;AAEA,SAAS,wBAAwB,CAC/B,MAAc,EAAA;IAEd,QAAQ,MAAM;AACZ,QAAA,KAAK,UAAU;YACb,OAAO,aAAa,CAAC,QAAQ;AAC/B,QAAA,KAAK,SAAS;YACZ,OAAO,aAAa,CAAC,OAAO;AAC9B,QAAA,KAAK,iBAAiB;YACpB,OAAO,aAAa,CAAC,cAAc;AACrC,QAAA,KAAK,oBAAoB;YACvB,OAAO,aAAa,CAAC,OAAO;AAC9B,QAAA,KAAK,UAAU;YACb,OAAO,aAAa,CAAC,QAAQ;AAC/B,QAAA,KAAK,UAAU;YACb,OAAO,aAAa,CAAC,QAAQ;AAC/B,QAAA,KAAK,OAAO;YACV,OAAO,aAAa,CAAC,KAAK;AAC5B,QAAA,KAAK,aAAa;YAChB,OAAO,aAAa,CAAC,UAAU;AACjC,QAAA;AACE,YAAA,OAAO,SAAS;;AAEtB;AAEA,SAAS,yBAAyB,CAChC,OAAe,EAAA;IAEf,QAAQ,OAAO;AACb,QAAA,KAAK,SAAS;YACZ,OAAO,eAAe,CAAC,OAAO;AAChC,QAAA,KAAK,UAAU;YACb,OAAO,eAAe,CAAC,QAAQ;AACjC,QAAA;AACE,YAAA,OAAO,SAAS;;AAEtB;;;;"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -30,3 +30,4 @@ export { FileUploadButton } from "./components/FileUploadButton";
|
|
|
30
30
|
export { HeaderSearchResult } from "./components/Header";
|
|
31
31
|
export { Footer } from "./components/Footer";
|
|
32
32
|
export { AutocompleteSelect } from "./components/AutocompleteSelect";
|
|
33
|
+
export { DrawerPanel } from "./components/DrawerPanel";
|
package/dist/esm/index.js
CHANGED
|
@@ -29,4 +29,5 @@ export { RichTextArea } from './components/RichTextArea.js';
|
|
|
29
29
|
export { FileUploadButton } from './components/FileUploadButton.js';
|
|
30
30
|
export { Footer } from './components/Footer.js';
|
|
31
31
|
export { AutocompleteSelect } from './components/AutocompleteSelect.js';
|
|
32
|
+
export { DrawerPanel } from './components/DrawerPanel.js';
|
|
32
33
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __exports as lib } from '../../../_virtual/
|
|
1
|
+
import { __exports as lib } from '../../../_virtual/index9.js';
|
|
2
2
|
import { __require as requireStringify } from './stringify.js';
|
|
3
3
|
import { __require as requireTraversal } from './traversal.js';
|
|
4
4
|
import { __require as requireManipulation } from './manipulation.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __exports as commonjs } from '../../../../_virtual/
|
|
1
|
+
import { __exports as commonjs } from '../../../../_virtual/index6.js';
|
|
2
2
|
import { __require as requireParser } from './Parser.js';
|
|
3
3
|
import { __require as requireLib } from '../../../domhandler/lib/index.js';
|
|
4
4
|
import { __require as requireTokenizer } from './Tokenizer.js';
|