ece-docs-components 1.0.69 → 1.0.71

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.
@@ -234,6 +234,7 @@ const Header = ({ userName = 'John Doe', userInitials = 'JD', toggleMenu, signOu
234
234
  const mobileInputRef = React.useRef(null);
235
235
  const [hasInvalidChars, setHasInvalidChars] = React.useState(false);
236
236
  const INVALID_CHARS = /[^\p{L}\p{M}\p{N} (),\/\."'\-:;\$]/u;
237
+ const INVALID_CHARS_GLOBAL = new RegExp(INVALID_CHARS.source, 'gu');
237
238
  const [isSearching, setIsSearching] = React.useState(false);
238
239
  const headerRef = React.useRef(null);
239
240
  const isActive = signUpStatus === 'Active';
@@ -277,15 +278,15 @@ const Header = ({ userName = 'John Doe', userInitials = 'JD', toggleMenu, signOu
277
278
  setIsSearching(false);
278
279
  };
279
280
  const runSearch = async (term) => {
280
- if (!search || INVALID_CHARS.test(term)) { // Display invalid character message if illegal characters
281
+ if (!search) {
281
282
  searchSeqRef.current += 1;
282
283
  setIsSearching(false);
283
284
  setResults([]);
284
- setHasInvalidChars(true);
285
- setOpenDropdown(true);
285
+ setHasInvalidChars(false);
286
+ setOpenDropdown(false);
286
287
  return;
287
288
  }
288
- if (!term.trim()) { // Remove display message if no query is present
289
+ if (!term.trim()) {
289
290
  searchSeqRef.current += 1;
290
291
  setIsSearching(false);
291
292
  setHasInvalidChars(false);
@@ -293,6 +294,15 @@ const Header = ({ userName = 'John Doe', userInitials = 'JD', toggleMenu, signOu
293
294
  setResults([]);
294
295
  return;
295
296
  }
297
+ const sanitized = term.replace(INVALID_CHARS_GLOBAL, '').trim();
298
+ if (!sanitized) {
299
+ searchSeqRef.current += 1;
300
+ setIsSearching(false);
301
+ setResults([]);
302
+ setHasInvalidChars(true);
303
+ setOpenDropdown(true);
304
+ return;
305
+ }
296
306
  setHasInvalidChars(false);
297
307
  const seq = ++searchSeqRef.current;
298
308
  setIsSearching(true);
@@ -1 +1 @@
1
- {"version":3,"file":"Header.js","sources":["../../../../src/components/Header.tsx"],"sourcesContent":["import React from 'react';\r\nimport {\r\n Box,\r\n styled,\r\n Typography,\r\n TextField,\r\n IconButton,\r\n Divider,\r\n Popper,\r\n Paper,\r\n List,\r\n ListItemText,\r\n ListItemButton,\r\n Collapse,\r\n useMediaQuery,\r\n CircularProgress,\r\n InputAdornment,\r\n} from '@mui/material';\r\nimport { ThemeContext, useTheme } from '../ThemeProvider';\r\nimport { MenuRounded, SearchRounded, CloseRounded } from '@mui/icons-material';\r\nimport PopoverMenu from './PopoverMenu';\r\nimport { ReactComponent as ECELogo } from '../images/PrimaryLogo_Variation_Cream_ECEDocs.svg';\r\nimport { ReactComponent as GPLogo } from '../images/PrimaryLogo_Variation_Cream_GPDocs.svg';\r\nimport { ReactComponent as SchoolLogo } from '../images/PrimaryLogo_Variation_Cream_SchoolDocs.svg';\r\n\r\ntype SignUpStatus = 'Withdrawn' | 'Onboarding' | 'Active' | 'In Review';\r\ninterface HeaderProps {\r\n userName?: string;\r\n userInitials?: string;\r\n toggleMenu: () => void;\r\n signOut: () => void;\r\n search?: (query: string) => Promise<HeaderSearchResult[]> | HeaderSearchResult[];\r\n onResultClick?: (result: HeaderSearchResult) => void;\r\n signUpStatus: SignUpStatus;\r\n resetKey?: string | number;\r\n onSearchSubmit?: (query: string) => void;\r\n}\r\n\r\nexport interface HeaderSearchResult {\r\n label: string;\r\n description?: string;\r\n value: string;\r\n}\r\n\r\nconst H_OPEN = \"[[H]]\";\r\nconst H_CLOSE = \"[[/H]]\";\r\n\r\nconst escapeRegExp = (s: string) => s.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\r\n\r\nconst renderHighlightedText = (text: string): React.ReactNode => {\r\n if (!text) return null;\r\n\r\n const tokenRe = new RegExp(\r\n `(${escapeRegExp(H_OPEN)}|${escapeRegExp(H_CLOSE)})`,\r\n \"g\",\r\n );\r\n\r\n const parts = text.split(tokenRe);\r\n\r\n const [nodes] = parts.reduce<[React.ReactNode[], boolean, number]>(\r\n ([out, inHighlight, key], part) => {\r\n if (!part) return [out, inHighlight, key];\r\n\r\n if (part === H_OPEN) return [out, true, key];\r\n if (part === H_CLOSE) return [out, false, key];\r\n\r\n out.push(\r\n inHighlight ? (\r\n <mark\r\n key={key}\r\n style={{\r\n padding: \"0 2px\",\r\n borderRadius: 3,\r\n }}\r\n >\r\n {part}\r\n </mark>\r\n ) : (\r\n <React.Fragment key={key}>{part}</React.Fragment>\r\n ),\r\n );\r\n\r\n return [out, inHighlight, key + 1];\r\n },\r\n [[], false, 0],\r\n );\r\n\r\n return <>{nodes}</>;\r\n};\r\n\r\nfunction renderDescription(desc: string): React.ReactNode {\r\n if (!desc) return null;\r\n\r\n const lines = desc.split(/\\r?\\n/).filter(line => line.trim().length > 0);\r\n\r\n const bulletLines = lines.filter(line => line.trim().startsWith(\"* \"));\r\n const nonBulletLines = lines.filter(line => !line.trim().startsWith(\"* \"));\r\n\r\n return (\r\n <div style={{ fontSize: 14, lineHeight: 1.5 }}>\r\n {nonBulletLines.length > 0 && (\r\n <div style={{ marginBottom: bulletLines.length > 0 ? 6 : 0 }}>\r\n {nonBulletLines.map((line, idx) => (\r\n <React.Fragment key={idx}>\r\n {renderHighlightedText(line)}\r\n {idx < nonBulletLines.length - 1 ? <br /> : null}\r\n </React.Fragment>\r\n ))}\r\n </div>\r\n )}\r\n\r\n {bulletLines.length > 0 && (\r\n <ul style={{ margin: 0, paddingLeft: 18 }}>\r\n {bulletLines.map((line, idx) => {\r\n const bulletText = line.trim().replace(/^\\*\\s*/, \"\");\r\n return <li key={idx}>{renderHighlightedText(bulletText)}</li>;\r\n })}\r\n </ul>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nconst StyledHeader = styled(Box)(({ theme }) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-start',\r\n backgroundColor: theme.palette.primary.main, // var(--color-primary)\r\n [theme.breakpoints.up('md')]: {\r\n gap: theme.spacing(4), // md:gap-4\r\n padding: theme.spacing(1.5, 1.5), // px-4 py-3\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n padding: 0, // px-4 py-3\r\n },\r\n}));\r\n\r\nconst StyledLogoWrapper = styled(Box)(({ theme }) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: theme.spacing(1.5),\r\n gap: theme.spacing(2),\r\n height: '64px', \r\n}));\r\n\r\n\r\nconst StyledLogoIcon = styled(Box)(({ theme }) => ({\r\n width: '100%',\r\n height: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: theme.palette.light.main,\r\n}));\r\n\r\n\r\nconst StyledLogoText = styled(Typography)(({ theme }) => ({\r\n color: theme.palette.light.main, // text-[#FDFCEE]\r\n fontWeight: 700, // font-bold\r\n letterSpacing: '0.05em', // tracking-wide\r\n fontSize: '1.5rem', // text-2xl\r\n [theme.breakpoints.down('md')]: {\r\n fontSize: '1.25rem', // sm:text-xl\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n fontSize: '1.125rem', // text-lg\r\n },\r\n}));\r\n\r\nconst LogoComponent: React.FC = () => {\r\n const themeType = React.useContext(ThemeContext);\r\n \r\n const logoProps = {\r\n style: {\r\n width: '100%',\r\n height: '100%',\r\n display: 'block'\r\n }\r\n };\r\n switch (themeType) {\r\n case 'GP':\r\n return <GPLogo {...logoProps} />;\r\n case 'School':\r\n return <SchoolLogo {...logoProps} />;\r\n case 'ECE':\r\n default:\r\n return <ECELogo {...logoProps} />;\r\n }\r\n};\r\n\r\n\r\nconst StyledSearchContainer = styled(Box)(({ theme }) => ({\r\n flex: 1,\r\n maxWidth: '45rem',\r\n margin: theme.spacing(0, 2), // mx-8\r\n position: 'relative',\r\n}));\r\n\r\nconst StyledTextField = styled(TextField)(({ theme }) => ({\r\n '& .MuiInputBase-root': {\r\n backgroundColor: theme.palette.light.main, // bg-[#FDFCEE]\r\n color: theme.palette.dark.main, // text-[#4D3019]\r\n borderRadius: '9999px', // rounded-full\r\n fontSize: '1rem', // text-base\r\n [theme.breakpoints.down('md')]: {\r\n paddingRight: theme.spacing(5), // sm:pr-10\r\n fontSize: '0.875rem', // text-sm\r\n },\r\n },\r\n '& .MuiInputBase-input': {\r\n padding: theme.spacing(1.5, 3), // px-4 py-2\r\n [theme.breakpoints.up('md')]: {\r\n padding: theme.spacing(1.5, 4), // md:px-6 md:py-3\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n padding: theme.spacing(1.5, 2.5), // sm:px-5\r\n },\r\n },\r\n '& .MuiInputBase-input::placeholder': {\r\n color: `${theme.palette.dark.main}99`, // placeholder-[#4D3019]/60\r\n opacity: 1,\r\n },\r\n '& .MuiInputBase-root:focus-within': {\r\n outline: `2px solid ${theme.palette.light.main}`, // focus:ring-2 focus:ring-[#FDFCEE]\r\n outlineOffset: 0,\r\n },\r\n}));\r\n\r\nconst StyledSearchButton = styled(IconButton)(({ theme }) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n position: 'static',\r\n borderRadius: '50%',\r\n backgroundColor: theme.palette.primary.main,\r\n width: theme.spacing(5),\r\n height: theme.spacing(5),\r\n [theme.breakpoints.down('md')]: {\r\n width: theme.spacing(5),\r\n height: theme.spacing(5),\r\n marginRight: theme.spacing(1),\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n marginRight: theme.spacing(0.5),\r\n },\r\n '&:hover': {\r\n opacity: 0.9,\r\n backgroundColor: theme.palette.primary.main,\r\n },\r\n}));\r\n\r\nconst StyledSearchIcon = styled(Box)(({ theme }) => ({\r\n display: 'flex', \r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: theme.palette.light.main,\r\n width: '100%',\r\n height: '100%',\r\n '& svg': {\r\n fontSize: '1.5rem',\r\n [theme.breakpoints.down('sm')]: {\r\n fontSize: '1.25rem',\r\n },\r\n },\r\n}));\r\n\r\nconst StyledUserContainer = styled(Box)(({ theme }) => ({\r\n marginLeft: 'auto',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: theme.spacing(3), // md:gap-3\r\n [theme.breakpoints.down('md')]: {\r\n gap: 0,\r\n },\r\n}));\r\n\r\nconst StyledAvatar = styled(Box)(({ theme }) => ({\r\n width: theme.spacing(6), // md:w-12\r\n height: theme.spacing(6), // md:h-12\r\n borderRadius: '50%', // rounded-full\r\n backgroundColor: theme.palette.light.main, // bg-[#FDFCEE]\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n flexShrink: 0,\r\n [theme.breakpoints.down('md')]: {\r\n width: theme.spacing(5), // sm:w-10\r\n height: theme.spacing(5), // sm:h-10\r\n }\r\n}));\r\n\r\nconst StyledAvatarText = styled(Typography)(({ theme }) => ({\r\n color: theme.palette.dark.main, // text-[#4D3019]\r\n fontWeight: 700, // font-bold\r\n fontSize: '1.125rem', // text-lg\r\n [theme.breakpoints.down('md')]: {\r\n fontSize: '0.875rem', // text-sm\r\n },\r\n}));\r\n\r\nconst StyledUserName = styled(Typography)(({ theme }) => ({\r\n color: theme.palette.light.main, // text-[#FDFCEE]\r\n fontWeight: 500, // font-medium\r\n marginLeft: theme.spacing(1),\r\n fontSize: '1.125rem', // text-lg\r\n display: 'none', // hidden\r\n [theme.breakpoints.up('sm')]: {\r\n display: 'inline', // sm:inline\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n fontSize: '0.875rem', // text-sm\r\n display: 'none'\r\n },\r\n}));\r\n\r\nexport const Header: React.FC<HeaderProps> = ({\r\n userName = 'John Doe',\r\n userInitials = 'JD',\r\n toggleMenu,\r\n signOut,\r\n search,\r\n onResultClick,\r\n signUpStatus,\r\n resetKey,\r\n onSearchSubmit,\r\n}) => {\r\n const theme = useTheme();\r\n const [anchorEl, setAnchorEl] = React.useState<HTMLButtonElement | null>(null);\r\n const [searchQuery, setSearchQuery] = React.useState('');\r\n const [results, setResults] = React.useState<HeaderSearchResult[]>([]);\r\n const [openDropdown, setOpenDropdown] = React.useState(false);\r\n\r\n const isMdUp = useMediaQuery(theme.breakpoints.up('md'));\r\n \r\n\r\n // Desktop\r\n const desktopInputRef = React.useRef<HTMLInputElement | null>(null);\r\n const desktopFieldRef = React.useRef<HTMLDivElement | null>(null);\r\n\r\n // Mobile\r\n const [mobileSearchOpen, setMobileSearchOpen] = React.useState(false);\r\n const mobileInputRef = React.useRef<HTMLInputElement | null>(null);\r\n\r\n const [hasInvalidChars, setHasInvalidChars] = React.useState(false);\r\n const INVALID_CHARS = /[^\\p{L}\\p{M}\\p{N} (),\\/\\.\"'\\-:;\\$]/u;\r\n\r\n\r\n const [isSearching, setIsSearching] = React.useState(false);\r\n const headerRef = React.useRef<HTMLDivElement | null>(null);\r\n const isActive = signUpStatus === 'Active';\r\n \r\n const clearQueryOnNextResetRef = React.useRef(true);\r\n const closeMobileOnNextResetRef = React.useRef(true);\r\n\r\n\r\n\r\n const searchSeqRef = React.useRef(0);\r\n const debounceRef = React.useRef<number | undefined>(undefined);\r\n\r\n const closeMobileSearch = () => {\r\n\r\n setMobileSearchOpen(false);\r\n if (clearQueryOnNextResetRef.current){\r\n setSearchQuery('');\r\n }\r\n setResults([]);\r\n setOpenDropdown(false);\r\n window.clearTimeout(debounceRef.current);\r\n };\r\n\r\n const toggleMobileSearch = () => {\r\n setMobileSearchOpen(prev => {\r\n const next = !prev;\r\n if (!next) {\r\n // cancelling\r\n closeMobileSearch();\r\n return false;\r\n }\r\n // opening\r\n setTimeout(() => mobileInputRef.current?.focus(), 0);\r\n return true;\r\n });\r\n };\r\n\r\n const handleOpen = (event: React.MouseEvent<HTMLButtonElement>) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const cancelPendingSearch = () => {\r\n window.clearTimeout(debounceRef.current);\r\n debounceRef.current = undefined;\r\n\r\n // Invalidate any in-flight runSearch so it won't set dropdown/results later\r\n searchSeqRef.current += 1;\r\n\r\n setIsSearching(false);\r\n };\r\n\r\n const runSearch = async (term: string) => {\r\n if (!search || INVALID_CHARS.test(term)) { // Display invalid character message if illegal characters\r\n searchSeqRef.current += 1;\r\n setIsSearching(false);\r\n setResults([]);\r\n setHasInvalidChars(true);\r\n setOpenDropdown(true);\r\n return;\r\n }\r\n if (!term.trim()) { // Remove display message if no query is present\r\n searchSeqRef.current += 1;\r\n setIsSearching(false);\r\n setHasInvalidChars(false);\r\n setOpenDropdown(false);\r\n setResults([])\r\n return;\r\n }\r\n setHasInvalidChars(false);\r\n\r\n const seq = ++searchSeqRef.current;\r\n setIsSearching(true);\r\n try {\r\n const res = await Promise.resolve(search(term.trim()));\r\n\r\n if (seq !== searchSeqRef.current) return; // Fixes debounce race condition causing old searches to appear after newer\r\n\r\n const list = Array.isArray(res) ? res : [];\r\n setResults(list);\r\n setOpenDropdown(true); // display dropdown no matter what, if no results will display no results message\r\n } finally {\r\n if (seq === searchSeqRef.current) setIsSearching(false);\r\n }\r\n };\r\n\r\n const handleSearchChange = (value: string) => {\r\n setSearchQuery(value);\r\n window.clearTimeout(debounceRef.current);\r\n\r\n debounceRef.current = window.setTimeout(() => runSearch(value), 150);\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n if (e.key !== 'Enter') return;\r\n \r\n e.preventDefault();\r\n\r\n const term = searchQuery.trim();\r\n if (!term) return;\r\n\r\n if (INVALID_CHARS.test(term)) { \r\n console.log(term);\r\n runSearch(term);\r\n return;\r\n }\r\n\r\n cancelPendingSearch();\r\n \r\n setOpenDropdown(false);\r\n setResults([]);\r\n setHasInvalidChars(false);\r\n \r\n onSearchSubmit?.(term);\r\n };\r\n\r\n const handleSearchClick: React.MouseEventHandler<HTMLButtonElement> = (e) => {\r\n e.preventDefault();\r\n\r\n const term = searchQuery.trim();\r\n if (!term) {\r\n runSearch('');\r\n return;\r\n }\r\n\r\n if (INVALID_CHARS.test(term)) { \r\n runSearch(term);\r\n return;\r\n }\r\n\r\n cancelPendingSearch();\r\n\r\n setOpenDropdown(false);\r\n setResults([]);\r\n setHasInvalidChars(false);\r\n \r\n onSearchSubmit?.(term);\r\n }\r\n\r\n React.useEffect(() => {\r\n const clearQuery = clearQueryOnNextResetRef.current;\r\n const closeMobile = closeMobileOnNextResetRef.current;\r\n\r\n if (closeMobile) {\r\n // sidebar/normal navigation\r\n closeMobileSearch();\r\n } else {\r\n // navigation from clicking a search result: keep mobile panel open\r\n if (clearQuery) setSearchQuery('');\r\n setResults([]);\r\n setOpenDropdown(false);\r\n window.clearTimeout(debounceRef.current);\r\n }\r\n\r\n // reset defaults for next navigation\r\n clearQueryOnNextResetRef.current = true;\r\n closeMobileOnNextResetRef.current = true;\r\n }, [resetKey]);\r\n\r\n React.useEffect(() => {\r\n const handler = (e: MouseEvent) => {\r\n const t = e.target as Node;\r\n\r\n const inDesktop = desktopInputRef.current?.parentElement?.contains(t);\r\n const inMobile = mobileInputRef.current?.parentElement?.contains(t);\r\n\r\n if (!inDesktop && !inMobile) {\r\n setOpenDropdown(false);\r\n }\r\n };\r\n\r\n document.addEventListener('click', handler);\r\n return () => document.removeEventListener('click', handler);\r\n }, []);\r\n\r\n type ResultsMode = 'desktop' | 'mobile';\r\n\r\n const DropdownResults = ({\r\n mode,\r\n }: {\r\n mode: ResultsMode;\r\n }) => {\r\n const isDesktop = mode === 'desktop';\r\n return (\r\n <Box>\r\n {!isSearching && hasInvalidChars ? (\r\n <Paper\r\n elevation={0}\r\n sx={{\r\n mt: 1,\r\n border: '1px solid #4D3019',\r\n boxShadow: 'none',\r\n backgroundColor: theme.palette.background.paper,\r\n borderRadius: isDesktop ? '12px' : 0,\r\n px: 2,\r\n py: 1.5,\r\n }}\r\n >\r\n <Typography sx={{ fontSize: '14px', color: theme.palette.text.primary }}>\r\n Oops — your search includes symbols we don’t support yet. Please remove special characters (like %, @, #, =) and try again.\r\n </Typography>\r\n </Paper>\r\n ) : !isSearching && results.length === 0 ? (\r\n <Paper\r\n elevation={0}\r\n sx={{\r\n mt: 1,\r\n border: `1px solid ${theme.palette.text.primary}`,\r\n boxShadow: 'none',\r\n backgroundColor: theme.palette.background.paper,\r\n borderRadius: isDesktop ? '12px' : 0,\r\n px: 2,\r\n py: 1.5,\r\n }}\r\n >\r\n <Typography sx={{ fontSize: '14px', color: theme.palette.text.primary }}>\r\n No results found\r\n </Typography>\r\n </Paper>\r\n ) : (\r\n <ResultsList\r\n mode={mode}\r\n items={results}\r\n onPick={(item) => {\r\n clearQueryOnNextResetRef.current = false; // keep text\r\n closeMobileOnNextResetRef.current = false; // keep mobile panel open\r\n\r\n setOpenDropdown(false);\r\n setResults([]);\r\n\r\n onResultClick?.(item);\r\n }}\r\n />\r\n )}\r\n </Box>\r\n );\r\n};\r\n\r\n\r\n const ResultsList = ({\r\n items,\r\n mode,\r\n paperRef,\r\n onPick,\r\n }: {\r\n items: HeaderSearchResult[];\r\n mode: ResultsMode;\r\n paperRef?: React.Ref<HTMLDivElement>;\r\n onPick: (item: HeaderSearchResult) => void;\r\n }) => {\r\n const isDesktop = mode === 'desktop';\r\n const displayedResults = mode == 'desktop' ? items.slice(0, 5) : items.slice(0, 3);\r\n return (\r\n <Paper\r\n ref={paperRef}\r\n elevation={0}\r\n \r\n sx={{\r\n mt: 1,\r\n border: `1px solid ${theme.palette.text.primary}`,\r\n boxShadow: 'none',\r\n backgroundColor: theme.palette.background.paper,\r\n\r\n ...(isDesktop\r\n ? {\r\n maxHeight: 'auto',\r\n borderRadius: '12px',\r\n overflowX: 'hidden',\r\n overflowY: 'hidden',\r\n }\r\n : {\r\n overflow: 'hidden', // no scroll, no scrollbar\r\n pb: 0,\r\n }),\r\n }}\r\n >\r\n <List dense disablePadding>\r\n {displayedResults.map((item, index) => (\r\n <ListItemButton\r\n key={index}\r\n alignItems=\"flex-start\"\r\n onClick={() => onPick(item)}\r\n sx={{\r\n py: 1.5,\r\n px: 2,\r\n backgroundColor: theme.palette.background.paper,\r\n borderBottom:\r\n index === displayedResults.length - 1\r\n ? 'none'\r\n : '1px solid rgba(77,48,25,0.18)',\r\n '&:hover': { backgroundColor: theme.palette.custom.readByBackgroundColor },\r\n '&:hover .search-result-title': {\r\n textDecoration: 'underline',\r\n color: theme.palette.primary.main,\r\n },\r\n }}\r\n >\r\n <ListItemText\r\n primary={item.label}\r\n secondary={renderDescription(item.description!)}\r\n primaryTypographyProps={{\r\n className: 'search-result-title',\r\n fontWeight: 700,\r\n fontSize: '16px',\r\n color: theme.palette.text.primary,\r\n }}\r\n secondaryTypographyProps={{ component: 'div', mt: 1 }}\r\n />\r\n </ListItemButton>\r\n ))}\r\n </List>\r\n </Paper>\r\n );\r\n };\r\n\r\n\r\n return (\r\n <Box>\r\n <StyledHeader ref={headerRef}>\r\n {isActive && (\r\n <>\r\n <IconButton\r\n disableRipple\r\n onClick={toggleMenu}\r\n sx={{ display: { xs: 'block', md: 'none' } }}\r\n size=\"large\"\r\n >\r\n <MenuRounded sx={{ fontSize: 32, color: 'white' }} />\r\n </IconButton>\r\n\r\n <Divider\r\n orientation=\"vertical\"\r\n sx={{\r\n color: '#FFFFFF',\r\n borderRightWidth: 2,\r\n display: { xs: 'block', md: 'none' },\r\n }}\r\n />\r\n </>\r\n )}\r\n\r\n <StyledLogoWrapper>\r\n <StyledLogoIcon>\r\n <LogoComponent />\r\n </StyledLogoIcon>\r\n </StyledLogoWrapper>\r\n\r\n {/* Desktop search only */}\r\n {isActive && isMdUp && (\r\n <StyledSearchContainer>\r\n <StyledTextField\r\n placeholder=\"Search for a policy\"\r\n variant=\"outlined\"\r\n fullWidth\r\n value={searchQuery}\r\n inputRef={desktopInputRef}\r\n ref={desktopFieldRef}\r\n onChange={(e) => handleSearchChange(e.target.value)}\r\n onKeyDown={handleKeyDown}\r\n InputProps={{\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Box sx = {{ mr: 1}}>\r\n {isSearching ? <CircularProgress size={24} /> : null} \r\n </Box>\r\n <StyledSearchButton onClick={handleSearchClick}>\r\n <StyledSearchIcon>\r\n <SearchRounded />\r\n </StyledSearchIcon>\r\n </StyledSearchButton>\r\n </InputAdornment>\r\n ),\r\n }}\r\n />\r\n\r\n <Popper\r\n open={openDropdown && !!desktopFieldRef.current}\r\n anchorEl={desktopFieldRef.current}\r\n placement=\"bottom-start\"\r\n style={{ zIndex: 1300, width: desktopFieldRef.current?.offsetWidth }}\r\n >\r\n <DropdownResults mode=\"desktop\"/>\r\n </Popper>\r\n </StyledSearchContainer>\r\n )}\r\n\r\n <StyledUserContainer>\r\n {/* Mobile search button only */}\r\n {isActive && !isMdUp && (\r\n <StyledSearchButton\r\n disableRipple\r\n onClick={toggleMobileSearch}\r\n sx={{\r\n display: { xs: 'flex', md: 'none' },\r\n backgroundColor: '#ffffff83',\r\n }}\r\n >\r\n <StyledSearchIcon>\r\n <SearchRounded />\r\n </StyledSearchIcon>\r\n </StyledSearchButton>\r\n )}\r\n\r\n <IconButton onClick={handleOpen} disableRipple>\r\n <StyledAvatar>\r\n <StyledAvatarText>{userInitials}</StyledAvatarText>\r\n </StyledAvatar>\r\n <StyledUserName>{userName}</StyledUserName>\r\n </IconButton>\r\n </StyledUserContainer>\r\n\r\n <PopoverMenu\r\n anchorEl={anchorEl}\r\n onClose={handleClose}\r\n signOut={() => {\r\n signOut();\r\n handleClose()\r\n }}\r\n />\r\n </StyledHeader>\r\n\r\n {/* Mobile panel only */}\r\n {!isMdUp && (\r\n <Collapse in={isActive && mobileSearchOpen} unmountOnExit timeout={200}>\r\n <Box\r\n sx={{\r\n display: { xs: 'block', md: 'none' },\r\n backgroundColor: theme.palette.primary.main,\r\n px: 2,\r\n pt: 1.5,\r\n pb: 2,\r\n }}\r\n >\r\n <Box sx={{ display: 'flex', gap: 1, alignItems: 'center' }}>\r\n <StyledTextField\r\n placeholder=\"Search for a policy\"\r\n variant=\"outlined\"\r\n fullWidth\r\n value={searchQuery}\r\n inputRef={mobileInputRef}\r\n onChange={(e) => handleSearchChange(e.target.value)}\r\n onKeyDown={handleKeyDown}\r\n InputProps={{\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n {isSearching ? <CircularProgress size={18} /> : null}\r\n </InputAdornment>\r\n )\r\n }}\r\n />\r\n\r\n <IconButton onClick={closeMobileSearch} sx={{ color: theme.palette.light.main }}>\r\n <CloseRounded />\r\n </IconButton>\r\n </Box>\r\n {openDropdown && (\r\n <Box sx={{ mx: -2 }}>\r\n <DropdownResults mode=\"mobile\"/>\r\n </Box>\r\n )}\r\n </Box>\r\n </Collapse>\r\n )}\r\n </Box>\r\n );\r\n};"],"names":["_jsx","_Fragment","_jsxs","styled","Box","Typography","ThemeContext","GPLogo","SchoolLogo","ECELogo","TextField","IconButton","useTheme","useMediaQuery","Paper","List","ListItemButton","ListItemText","MenuRounded","Divider","InputAdornment","CircularProgress","SearchRounded","Popper","PopoverMenu","Collapse","CloseRounded"],"mappings":";;;;;;;;;;;;AA4CA,MAAM,MAAM,GAAG,OAAO;AACtB,MAAM,OAAO,GAAG,QAAQ;AAExB,MAAM,YAAY,GAAG,CAAC,CAAS,KAAK,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC;AAE5E,MAAM,qBAAqB,GAAG,CAAC,IAAY,KAAqB;AAC9D,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,IAAI;AAEtB,IAAA,MAAM,OAAO,GAAG,IAAI,MAAM,CACxB,CAAA,CAAA,EAAI,YAAY,CAAC,MAAM,CAAC,CAAA,CAAA,EAAI,YAAY,CAAC,OAAO,CAAC,GAAG,EACpD,GAAG,CACJ;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AAEjC,IAAA,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAC1B,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,IAAI,KAAI;AAChC,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,CAAC;QAEzC,IAAI,IAAI,KAAK,MAAM;AAAE,YAAA,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC;QAC5C,IAAI,IAAI,KAAK,OAAO;AAAE,YAAA,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC;QAE9C,GAAG,CAAC,IAAI,CACN,WAAW,IACTA,cAAA,CAAA,MAAA,EAAA,EAEE,KAAK,EAAE;AACL,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,YAAY,EAAE,CAAC;aAChB,EAAA,QAAA,EAEA,IAAI,IANA,GAAG,CAOH,KAEPA,cAAA,CAAC,KAAK,CAAC,QAAQ,cAAY,IAAI,EAAA,EAAV,GAAG,CAAyB,CAClD,CACF;QAED,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,CAAC;IACpC,CAAC,EACD,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CACf;IAED,OAAOA,cAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAG,KAAK,EAAA,CAAI;AACrB,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAA;AACrC,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,IAAI;IAEtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IAExE,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACtE,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAE1E,QACEC,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,aAC1C,cAAc,CAAC,MAAM,GAAG,CAAC,KACxBF,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,YAAY,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAA,QAAA,EACzD,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,MAC5BE,eAAA,CAAC,KAAK,CAAC,QAAQ,eACZ,qBAAqB,CAAC,IAAI,CAAC,EAC3B,GAAG,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,GAAGF,cAAA,CAAA,IAAA,EAAA,EAAA,CAAM,GAAG,IAAI,CAAA,EAAA,EAF7B,GAAG,CAGP,CAClB,CAAC,EAAA,CACE,CACP,EAEA,WAAW,CAAC,MAAM,GAAG,CAAC,KACrBA,cAAA,CAAA,IAAA,EAAA,EAAI,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,EAAA,QAAA,EACtC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,KAAI;AAC7B,oBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;oBACpD,OAAOA,cAAA,CAAA,IAAA,EAAA,EAAA,QAAA,EAAe,qBAAqB,CAAC,UAAU,CAAC,EAAA,EAAvC,GAAG,CAA0C;AAC/D,gBAAA,CAAC,CAAC,EAAA,CACC,CACN,CAAA,EAAA,CACG;AAEV;AAEA,MAAM,YAAY,GAAGG,eAAM,CAACC,YAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;AAC/C,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,UAAU,EAAE,QAAQ;AACpB,IAAA,cAAc,EAAE,YAAY;IAC5B,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI;IAC3C,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;QAC5B,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACrB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;AACjC,KAAA;IACD,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QAC9B,OAAO,EAAE,CAAC;AACX,KAAA;AACF,CAAA,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAGD,eAAM,CAACC,YAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;AACpD,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,UAAU,EAAE,QAAQ;AACpB,IAAA,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;AAC3B,IAAA,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AACrB,IAAA,MAAM,EAAE,MAAM;AACf,CAAA,CAAC,CAAC;AAGH,MAAM,cAAc,GAAGD,eAAM,CAACC,YAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;AACjD,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,UAAU,EAAE,QAAQ;AACpB,IAAA,cAAc,EAAE,QAAQ;AACxB,IAAA,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI;AAChC,CAAA,CAAC,CAAC;AAGoBD,eAAM,CAACE,mBAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;IACxD,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI;IAC/B,UAAU,EAAE,GAAG;IACf,aAAa,EAAE,QAAQ;IACvB,QAAQ,EAAE,QAAQ;IAClB,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QAC9B,QAAQ,EAAE,SAAS;AACpB,KAAA;IACD,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QAC9B,QAAQ,EAAE,UAAU;AACrB,KAAA;AACF,CAAA,CAAC;AAEF,MAAM,aAAa,GAAa,MAAK;IACnC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAACC,0BAAY,CAAC;AAEhD,IAAA,MAAM,SAAS,GAAG;AAChB,QAAA,KAAK,EAAE;AACL,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,OAAO,EAAE;AACV;KACF;IACD,QAAQ,SAAS;AACf,QAAA,KAAK,IAAI;AACP,YAAA,OAAON,cAAA,CAACO,iDAAM,EAAA,EAAA,GAAK,SAAS,GAAI;AAClC,QAAA,KAAK,QAAQ;AACX,YAAA,OAAOP,cAAA,CAACQ,qDAAU,EAAA,EAAA,GAAK,SAAS,GAAI;AACtC,QAAA,KAAK,KAAK;AACV,QAAA;AACE,YAAA,OAAOR,cAAA,CAACS,kDAAO,EAAA,EAAA,GAAK,SAAS,GAAI;;AAEvC,CAAC;AAGD,MAAM,qBAAqB,GAAGN,eAAM,CAACC,YAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;AACxD,IAAA,IAAI,EAAE,CAAC;AACP,IAAA,QAAQ,EAAE,OAAO;IACjB,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B,IAAA,QAAQ,EAAE,UAAU;AACrB,CAAA,CAAC,CAAC;AAEH,MAAM,eAAe,GAAGD,eAAM,CAACO,kBAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;AACxD,IAAA,sBAAsB,EAAE;QACtB,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI;QACzC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI;QAC9B,YAAY,EAAE,QAAQ;QACtB,QAAQ,EAAE,MAAM;QAChB,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YAC9B,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9B,QAAQ,EAAE,UAAU;AACrB,SAAA;AACF,KAAA;AACD,IAAA,uBAAuB,EAAE;QACvB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC9B,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;YAC5B,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAC/B,SAAA;QACD,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YAC9B,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;AACjC,SAAA;AACF,KAAA;AACD,IAAA,oCAAoC,EAAE;QACpC,KAAK,EAAE,CAAA,EAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAA,EAAA,CAAI;AACrC,QAAA,OAAO,EAAE,CAAC;AACX,KAAA;AACD,IAAA,mCAAmC,EAAE;QACnC,OAAO,EAAE,CAAA,UAAA,EAAa,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAA,CAAE;AAChD,QAAA,aAAa,EAAE,CAAC;AACjB,KAAA;AACF,CAAA,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAGP,eAAM,CAACQ,mBAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;AAC5D,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,UAAU,EAAE,QAAQ;AACpB,IAAA,cAAc,EAAE,QAAQ;AACxB,IAAA,QAAQ,EAAE,QAAQ;AAClB,IAAA,YAAY,EAAE,KAAK;AACnB,IAAA,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI;AAC3C,IAAA,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AACvB,IAAA,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACxB,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;AAC9B,QAAA,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AACvB,QAAA,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AACxB,QAAA,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9B,KAAA;IACD,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;AAC9B,QAAA,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;AAChC,KAAA;AACD,IAAA,SAAS,EAAE;AACT,QAAA,OAAO,EAAE,GAAG;AACZ,QAAA,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI;AAC5C,KAAA;AACF,CAAA,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAGR,eAAM,CAACC,YAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;AACnD,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,UAAU,EAAE,QAAQ;AACpB,IAAA,cAAc,EAAE,QAAQ;AACxB,IAAA,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI;AAC/B,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,OAAO,EAAE;AACP,QAAA,QAAQ,EAAE,QAAQ;QAClB,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;AAC9B,YAAA,QAAQ,EAAE,SAAS;AACpB,SAAA;AACF,KAAA;AACF,CAAA,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAGD,eAAM,CAACC,YAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;AACtD,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,UAAU,EAAE,QAAQ;IACpB,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACrB,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;AAC9B,QAAA,GAAG,EAAE,CAAC;AACP,KAAA;AACF,CAAA,CAAC,CAAC;AAEH,MAAM,YAAY,GAAGD,eAAM,CAACC,YAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;IAC/C,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACvB,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACxB,YAAY,EAAE,KAAK;IACnB,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI;AACzC,IAAA,OAAO,EAAE,MAAM;AACf,IAAA,UAAU,EAAE,QAAQ;AACpB,IAAA,cAAc,EAAE,QAAQ;AACxB,IAAA,UAAU,EAAE,CAAC;IACb,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QAC9B,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACvB,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AACzB;AACF,CAAA,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAGD,eAAM,CAACE,mBAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;IAC1D,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI;IAC9B,UAAU,EAAE,GAAG;IACf,QAAQ,EAAE,UAAU;IACpB,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QAC9B,QAAQ,EAAE,UAAU;AACrB,KAAA;AACF,CAAA,CAAC,CAAC;AAEH,MAAM,cAAc,GAAGF,eAAM,CAACE,mBAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM;IACxD,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI;IAC/B,UAAU,EAAE,GAAG;AACf,IAAA,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5B,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,MAAM;IACf,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;QAC5B,OAAO,EAAE,QAAQ;AAClB,KAAA;IACD,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QAC9B,QAAQ,EAAE,UAAU;AACpB,QAAA,OAAO,EAAE;AACV,KAAA;AACF,CAAA,CAAC,CAAC;AAEI,MAAM,MAAM,GAA0B,CAAC,EAC5C,QAAQ,GAAG,UAAU,EACrB,YAAY,GAAG,IAAI,EACnB,UAAU,EACV,OAAO,EACP,MAAM,EACN,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,cAAc,GACf,KAAI;AACH,IAAA,MAAM,KAAK,GAAGO,sBAAQ,EAAE;AACxB,IAAA,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAA2B,IAAI,CAAC;AAC9E,IAAA,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;AACxD,IAAA,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAuB,EAAE,CAAC;AACtE,IAAA,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;AAE7D,IAAA,MAAM,MAAM,GAAGC,sBAAa,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;;IAIxD,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAA0B,IAAI,CAAC;IACnE,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAwB,IAAI,CAAC;;AAGjE,IAAA,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;IACrE,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAA0B,IAAI,CAAC;AAElE,IAAA,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;IACnE,MAAM,aAAa,GAAG,qCAAqC;AAG3D,IAAA,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC3D,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAwB,IAAI,CAAC;AAC3D,IAAA,MAAM,QAAQ,GAAG,YAAY,KAAK,QAAQ;IAE1C,MAAM,wBAAwB,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;IACnD,MAAM,yBAAyB,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;IAIpD,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACpC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAqB,SAAS,CAAC;IAE/D,MAAM,iBAAiB,GAAG,MAAK;QAE7B,mBAAmB,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,wBAAwB,CAAC,OAAO,EAAC;YACnC,cAAc,CAAC,EAAE,CAAC;QACpB;QACA,UAAU,CAAC,EAAE,CAAC;QACd,eAAe,CAAC,KAAK,CAAC;AACtB,QAAA,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC;AAC1C,IAAA,CAAC;IAED,MAAM,kBAAkB,GAAG,MAAK;QAC9B,mBAAmB,CAAC,IAAI,IAAG;AACzB,YAAA,MAAM,IAAI,GAAG,CAAC,IAAI;YAClB,IAAI,CAAC,IAAI,EAAE;;AAET,gBAAA,iBAAiB,EAAE;AACnB,gBAAA,OAAO,KAAK;YACd;;AAEA,YAAA,UAAU,CAAC,MAAM,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;AACpD,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;AAED,IAAA,MAAM,UAAU,GAAG,CAAC,KAA0C,KAAI;AAChE,QAAA,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC;AAClC,IAAA,CAAC;IAED,MAAM,WAAW,GAAG,MAAK;QACvB,WAAW,CAAC,IAAI,CAAC;AACnB,IAAA,CAAC;IAED,MAAM,mBAAmB,GAAG,MAAK;AAC/B,QAAA,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC;AACxC,QAAA,WAAW,CAAC,OAAO,GAAG,SAAS;;AAG/B,QAAA,YAAY,CAAC,OAAO,IAAI,CAAC;QAEzB,cAAc,CAAC,KAAK,CAAC;AACvB,IAAA,CAAC;AAED,IAAA,MAAM,SAAS,GAAG,OAAO,IAAY,KAAI;AACvC,QAAA,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACvC,YAAA,YAAY,CAAC,OAAO,IAAI,CAAC;YACzB,cAAc,CAAC,KAAK,CAAC;YACrB,UAAU,CAAC,EAAE,CAAC;YACd,kBAAkB,CAAC,IAAI,CAAC;YACxB,eAAe,CAAC,IAAI,CAAC;YACrB;QACF;QACA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;AAChB,YAAA,YAAY,CAAC,OAAO,IAAI,CAAC;YACzB,cAAc,CAAC,KAAK,CAAC;YACrB,kBAAkB,CAAC,KAAK,CAAC;YACzB,eAAe,CAAC,KAAK,CAAC;YACtB,UAAU,CAAC,EAAE,CAAC;YACd;QACF;QACA,kBAAkB,CAAC,KAAK,CAAC;AAEzB,QAAA,MAAM,GAAG,GAAG,EAAE,YAAY,CAAC,OAAO;QAClC,cAAc,CAAC,IAAI,CAAC;AACpB,QAAA,IAAI;AACF,YAAA,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAEtD,YAAA,IAAI,GAAG,KAAK,YAAY,CAAC,OAAO;AAAE,gBAAA,OAAO;AAEzC,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE;YAC1C,UAAU,CAAC,IAAI,CAAC;AAChB,YAAA,eAAe,CAAC,IAAI,CAAC,CAAC;QACxB;gBAAU;AACR,YAAA,IAAI,GAAG,KAAK,YAAY,CAAC,OAAO;gBAAE,cAAc,CAAC,KAAK,CAAC;QACzD;AACF,IAAA,CAAC;AAED,IAAA,MAAM,kBAAkB,GAAG,CAAC,KAAa,KAAI;QAC3C,cAAc,CAAC,KAAK,CAAC;AACrB,QAAA,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC;AAExC,QAAA,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,SAAS,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC;AACtE,IAAA,CAAC;AAED,IAAA,MAAM,aAAa,GAAG,CAAC,CAAsB,KAAI;AAC/C,QAAA,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO;YAAE;QAEvB,CAAC,CAAC,cAAc,EAAE;AAElB,QAAA,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE;AAC/B,QAAA,IAAI,CAAC,IAAI;YAAE;AAEX,QAAA,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC5B,YAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YACjB,SAAS,CAAC,IAAI,CAAC;YACf;QACF;AAEA,QAAA,mBAAmB,EAAE;QAErB,eAAe,CAAC,KAAK,CAAC;QACtB,UAAU,CAAC,EAAE,CAAC;QACd,kBAAkB,CAAC,KAAK,CAAC;AAEzB,QAAA,cAAc,GAAG,IAAI,CAAC;AACxB,IAAA,CAAC;AAED,IAAA,MAAM,iBAAiB,GAA+C,CAAC,CAAC,KAAI;QAC1E,CAAC,CAAC,cAAc,EAAE;AAElB,QAAA,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE;QAC/B,IAAI,CAAC,IAAI,EAAE;YACT,SAAS,CAAC,EAAE,CAAC;YACb;QACF;AAEA,QAAA,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC5B,SAAS,CAAC,IAAI,CAAC;YACf;QACF;AAEA,QAAA,mBAAmB,EAAE;QAErB,eAAe,CAAC,KAAK,CAAC;QACtB,UAAU,CAAC,EAAE,CAAC;QACd,kBAAkB,CAAC,KAAK,CAAC;AAEzB,QAAA,cAAc,GAAG,IAAI,CAAC;AACxB,IAAA,CAAC;AAED,IAAA,KAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,MAAM,UAAU,GAAG,wBAAwB,CAAC,OAAO;AACnD,QAAA,MAAM,WAAW,GAAG,yBAAyB,CAAC,OAAO;QAErD,IAAI,WAAW,EAAE;;AAEf,YAAA,iBAAiB,EAAE;QACrB;aAAO;;AAEL,YAAA,IAAI,UAAU;gBAAE,cAAc,CAAC,EAAE,CAAC;YAClC,UAAU,CAAC,EAAE,CAAC;YACd,eAAe,CAAC,KAAK,CAAC;AACtB,YAAA,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC;QAC1C;;AAGA,QAAA,wBAAwB,CAAC,OAAO,GAAG,IAAI;AACvC,QAAA,yBAAyB,CAAC,OAAO,GAAG,IAAI;AAC1C,IAAA,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AAEd,IAAA,KAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,MAAM,OAAO,GAAG,CAAC,CAAa,KAAI;AAChC,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,MAAc;AAE1B,YAAA,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;AACrE,YAAA,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEnE,YAAA,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE;gBAC3B,eAAe,CAAC,KAAK,CAAC;YACxB;AACF,QAAA,CAAC;AAED,QAAA,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC;QAC3C,OAAO,MAAM,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC;IAC7D,CAAC,EAAE,EAAE,CAAC;AAIN,IAAA,MAAM,eAAe,GAAG,CAAC,EACvB,IAAI,GAGL,KAAI;AACH,QAAA,MAAM,SAAS,GAAG,IAAI,KAAK,SAAS;QACpC,QACEb,eAACI,YAAG,EAAA,EAAA,QAAA,EACH,CAAC,WAAW,IAAI,eAAe,IAC9BJ,cAAA,CAACc,cAAK,EAAA,EACJ,SAAS,EAAE,CAAC,EACZ,EAAE,EAAE;AACF,oBAAA,EAAE,EAAE,CAAC;AACL,oBAAA,MAAM,EAAE,mBAAmB;AAC3B,oBAAA,SAAS,EAAE,MAAM;AACjB,oBAAA,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK;oBAC/C,YAAY,EAAE,SAAS,GAAG,MAAM,GAAG,CAAC;AACpC,oBAAA,EAAE,EAAE,CAAC;AACL,oBAAA,EAAE,EAAE,GAAG;iBACR,EAAA,QAAA,EAEDd,cAAA,CAACK,mBAAU,EAAA,EAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAA,QAAA,EAAA,uIAAA,EAAA,CAE1D,EAAA,CACP,IACN,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IACtCL,eAACc,cAAK,EAAA,EACJ,SAAS,EAAE,CAAC,EACZ,EAAE,EAAE;AACF,oBAAA,EAAE,EAAE,CAAC;oBACL,MAAM,EAAE,aAAa,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAA,CAAE;AACjD,oBAAA,SAAS,EAAE,MAAM;AACjB,oBAAA,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK;oBAC/C,YAAY,EAAE,SAAS,GAAG,MAAM,GAAG,CAAC;AACpC,oBAAA,EAAE,EAAE,CAAC;AACL,oBAAA,EAAE,EAAE,GAAG;AACR,iBAAA,EAAA,QAAA,EAEDd,eAACK,mBAAU,EAAA,EAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAA,QAAA,EAAA,kBAAA,EAAA,CAE1D,GACP,KAERL,eAAC,WAAW,EAAA,EACV,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,CAAC,IAAI,KAAI;AACf,oBAAA,wBAAwB,CAAC,OAAO,GAAG,KAAK,CAAC;AACzC,oBAAA,yBAAyB,CAAC,OAAO,GAAG,KAAK,CAAC;oBAE1C,eAAe,CAAC,KAAK,CAAC;oBACtB,UAAU,CAAC,EAAE,CAAC;AAEd,oBAAA,aAAa,GAAG,IAAI,CAAC;AACvB,gBAAA,CAAC,EAAA,CACD,CACH,EAAA,CACK;AAEZ,IAAA,CAAC;AAGC,IAAA,MAAM,WAAW,GAAG,CAAC,EACnB,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,MAAM,GAMP,KAAI;AACH,QAAA,MAAM,SAAS,GAAG,IAAI,KAAK,SAAS;QACpC,MAAM,gBAAgB,GAAG,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAClF,QAAA,QACEA,cAAA,CAACc,cAAK,EAAA,EACJ,GAAG,EAAE,QAAQ,EACb,SAAS,EAAE,CAAC,EAEZ,EAAE,EAAE;AACF,gBAAA,EAAE,EAAE,CAAC;gBACL,MAAM,EAAE,aAAa,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAA,CAAE;AACjD,gBAAA,SAAS,EAAE,MAAM;AACjB,gBAAA,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK;AAE/C,gBAAA,IAAI;AACF,sBAAE;AACE,wBAAA,SAAS,EAAE,MAAM;AACjB,wBAAA,YAAY,EAAE,MAAM;AACpB,wBAAA,SAAS,EAAE,QAAQ;AACnB,wBAAA,SAAS,EAAE,QAAQ;AACpB;AACH,sBAAE;wBACE,QAAQ,EAAE,QAAQ;AAClB,wBAAA,EAAE,EAAE,CAAC;qBACN,CAAC;AACP,aAAA,EAAA,QAAA,EAEDd,eAACe,aAAI,EAAA,EAAC,KAAK,EAAA,IAAA,EAAC,cAAc,EAAA,IAAA,EAAA,QAAA,EACvB,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,MAChCf,cAAA,CAACgB,uBAAc,EAAA,EAEb,UAAU,EAAC,YAAY,EACvB,OAAO,EAAE,MAAM,MAAM,CAAC,IAAI,CAAC,EAC3B,EAAE,EAAE;AACF,wBAAA,EAAE,EAAE,GAAG;AACP,wBAAA,EAAE,EAAE,CAAC;AACL,wBAAA,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK;AAC/C,wBAAA,YAAY,EACZ,KAAK,KAAK,gBAAgB,CAAC,MAAM,GAAG;AAC1B,8BAAE;AACF,8BAAE,+BAA+B;wBAC3C,SAAS,EAAE,EAAE,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE;AAC1E,wBAAA,8BAA8B,EAAE;AAC9B,4BAAA,cAAc,EAAE,WAAW;AAC3B,4BAAA,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI;AAClC,yBAAA;AACF,qBAAA,EAAA,QAAA,EAEDhB,eAACiB,qBAAY,EAAA,EACX,OAAO,EAAE,IAAI,CAAC,KAAK,EACnB,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,WAAY,CAAC,EAC/C,sBAAsB,EAAE;AACtB,4BAAA,SAAS,EAAE,qBAAqB;AAChC,4BAAA,UAAU,EAAE,GAAG;AACf,4BAAA,QAAQ,EAAE,MAAM;AAChB,4BAAA,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO;yBAClC,EACD,wBAAwB,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,EAAA,CACrD,EAAA,EA5BG,KAAK,CA6BK,CAClB,CAAC,EAAA,CACG,EAAA,CACD;AAEZ,IAAA,CAAC;AAGD,IAAA,QACEf,eAAA,CAACE,YAAG,EAAA,EAAA,QAAA,EAAA,CACFF,gBAAC,YAAY,EAAA,EAAC,GAAG,EAAE,SAAS,EAAA,QAAA,EAAA,CACzB,QAAQ,KACPA,eAAA,CAAAD,mBAAA,EAAA,EAAA,QAAA,EAAA,CACED,cAAA,CAACW,mBAAU,EAAA,EACT,aAAa,EAAA,IAAA,EACb,OAAO,EAAE,UAAU,EACnB,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAC5C,IAAI,EAAC,OAAO,EAAA,QAAA,EAEZX,cAAA,CAACkB,yBAAW,EAAA,EAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAI,EAAA,CAC1C,EAEblB,cAAA,CAACmB,gBAAO,IACN,WAAW,EAAC,UAAU,EACtB,EAAE,EAAE;AACF,oCAAA,KAAK,EAAE,SAAS;AAChB,oCAAA,gBAAgB,EAAE,CAAC;oCACnB,OAAO,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE;AACrC,iCAAA,EAAA,CACD,CAAA,EAAA,CACD,CACJ,EAEDnB,cAAA,CAAC,iBAAiB,EAAA,EAAA,QAAA,EAChBA,cAAA,CAAC,cAAc,EAAA,EAAA,QAAA,EACbA,cAAA,CAAC,aAAa,EAAA,EAAA,CAAG,EAAA,CACF,GACC,EAGnB,QAAQ,IAAI,MAAM,KACjBE,eAAA,CAAC,qBAAqB,eACpBF,cAAA,CAAC,eAAe,EAAA,EACd,WAAW,EAAC,qBAAqB,EACjC,OAAO,EAAC,UAAU,EAClB,SAAS,EAAA,IAAA,EACT,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,eAAe,EACzB,GAAG,EAAE,eAAe,EACpB,QAAQ,EAAE,CAAC,CAAC,KAAK,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACnD,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE;oCACV,YAAY,GACVE,eAAA,CAACkB,uBAAc,EAAA,EAAC,QAAQ,EAAC,KAAK,EAAA,QAAA,EAAA,CAC5BpB,cAAA,CAACI,YAAG,EAAA,EAAC,EAAE,EAAI,EAAE,EAAE,EAAE,CAAC,EAAC,YAChB,WAAW,GAAGJ,cAAA,CAACqB,yBAAgB,IAAC,IAAI,EAAE,EAAE,EAAA,CAAI,GAAG,IAAI,EAAA,CAChD,EACNrB,cAAA,CAAC,kBAAkB,EAAA,EAAC,OAAO,EAAE,iBAAiB,EAAA,QAAA,EAC5CA,cAAA,CAAC,gBAAgB,EAAA,EAAA,QAAA,EACfA,cAAA,CAACsB,2BAAa,EAAA,EAAA,CAAG,EAAA,CACA,EAAA,CACA,CAAA,EAAA,CACN,CAClB;AACF,iCAAA,EAAA,CACD,EAEFtB,cAAA,CAACuB,eAAM,EAAA,EACL,IAAI,EAAE,YAAY,IAAI,CAAC,CAAC,eAAe,CAAC,OAAO,EAC/C,QAAQ,EAAE,eAAe,CAAC,OAAO,EACjC,SAAS,EAAC,cAAc,EACxB,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,EAAA,QAAA,EAEpEvB,cAAA,CAAC,eAAe,EAAA,EAAC,IAAI,EAAC,SAAS,EAAA,CAAE,EAAA,CAC1B,CAAA,EAAA,CACa,CACzB,EAEDE,eAAA,CAAC,mBAAmB,EAAA,EAAA,QAAA,EAAA,CAEjB,QAAQ,IAAI,CAAC,MAAM,KAClBF,cAAA,CAAC,kBAAkB,EAAA,EACjB,aAAa,QACb,OAAO,EAAE,kBAAkB,EAC3B,EAAE,EAAE;oCACF,OAAO,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE;AACnC,oCAAA,eAAe,EAAE,WAAW;iCAC7B,EAAA,QAAA,EAEDA,cAAA,CAAC,gBAAgB,EAAA,EAAA,QAAA,EACfA,cAAA,CAACsB,2BAAa,EAAA,EAAA,CAAG,EAAA,CACA,EAAA,CACA,CACtB,EAEDpB,eAAA,CAACS,mBAAU,EAAA,EAAC,OAAO,EAAE,UAAU,EAAE,aAAa,mBAC5CX,cAAA,CAAC,YAAY,EAAA,EAAA,QAAA,EACXA,cAAA,CAAC,gBAAgB,EAAA,EAAA,QAAA,EAAE,YAAY,EAAA,CAAoB,EAAA,CACtC,EACfA,cAAA,CAAC,cAAc,EAAA,EAAA,QAAA,EAAE,QAAQ,EAAA,CAAkB,CAAA,EAAA,CAChC,CAAA,EAAA,CACO,EAEtBA,cAAA,CAACwB,mBAAW,IACV,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,MAAK;AACZ,4BAAA,OAAO,EAAE;AACT,4BAAA,WAAW,EAAE;wBACf,CAAC,EAAA,CACD,CAAA,EAAA,CACW,EAGd,CAAC,MAAM,KACNxB,cAAA,CAACyB,iBAAQ,EAAA,EAAC,EAAE,EAAE,QAAQ,IAAI,gBAAgB,EAAE,aAAa,EAAA,IAAA,EAAC,OAAO,EAAE,GAAG,EAAA,QAAA,EACpEvB,eAAA,CAACE,YAAG,EAAA,EACF,EAAE,EAAE;wBACF,OAAO,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE;AACpC,wBAAA,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI;AAC3C,wBAAA,EAAE,EAAE,CAAC;AACL,wBAAA,EAAE,EAAE,GAAG;AACP,wBAAA,EAAE,EAAE,CAAC;AACN,qBAAA,EAAA,QAAA,EAAA,CAEDF,eAAA,CAACE,YAAG,EAAA,EAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAA,QAAA,EAAA,CACxDJ,cAAA,CAAC,eAAe,EAAA,EACd,WAAW,EAAC,qBAAqB,EACjC,OAAO,EAAC,UAAU,EAClB,SAAS,EAAA,IAAA,EACT,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,CAAC,CAAC,KAAK,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACnD,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE;wCACV,YAAY,GACVA,cAAA,CAACoB,uBAAc,EAAA,EAAC,QAAQ,EAAC,KAAK,EAAA,QAAA,EAC3B,WAAW,GAAGpB,cAAA,CAACqB,yBAAgB,EAAA,EAAC,IAAI,EAAE,EAAE,EAAA,CAAI,GAAG,IAAI,EAAA,CACrC;qCAEpB,EAAA,CACD,EAEFrB,cAAA,CAACW,mBAAU,EAAA,EAAC,OAAO,EAAE,iBAAiB,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,EAAA,QAAA,EAC7EX,cAAA,CAAC0B,0BAAY,EAAA,EAAA,CAAG,EAAA,CACL,CAAA,EAAA,CACT,EACL,YAAY,KACX1B,cAAA,CAACI,YAAG,EAAA,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAA,QAAA,EACjBJ,cAAA,CAAC,eAAe,EAAA,EAAC,IAAI,EAAC,QAAQ,EAAA,CAAE,EAAA,CAC5B,CACP,CAAA,EAAA,CACG,EAAA,CACG,CACZ,CAAA,EAAA,CACG;AAEV;;;;"}
1
+ {"version":3,"file":"Header.js","sources":["../../../../src/components/Header.tsx"],"sourcesContent":["import React from 'react';\r\nimport {\r\n Box,\r\n styled,\r\n Typography,\r\n TextField,\r\n IconButton,\r\n Divider,\r\n Popper,\r\n Paper,\r\n List,\r\n ListItemText,\r\n ListItemButton,\r\n Collapse,\r\n useMediaQuery,\r\n CircularProgress,\r\n InputAdornment,\r\n} from '@mui/material';\r\nimport { ThemeContext, useTheme } from '../ThemeProvider';\r\nimport { MenuRounded, SearchRounded, CloseRounded } from '@mui/icons-material';\r\nimport PopoverMenu from './PopoverMenu';\r\nimport { ReactComponent as ECELogo } from '../images/PrimaryLogo_Variation_Cream_ECEDocs.svg';\r\nimport { ReactComponent as GPLogo } from '../images/PrimaryLogo_Variation_Cream_GPDocs.svg';\r\nimport { ReactComponent as SchoolLogo } from '../images/PrimaryLogo_Variation_Cream_SchoolDocs.svg';\r\n\r\ntype SignUpStatus = 'Withdrawn' | 'Onboarding' | 'Active' | 'In Review';\r\ninterface HeaderProps {\r\n userName?: string;\r\n userInitials?: string;\r\n toggleMenu: () => void;\r\n signOut: () => void;\r\n search?: (query: string) => Promise<HeaderSearchResult[]> | HeaderSearchResult[];\r\n onResultClick?: (result: HeaderSearchResult) => void;\r\n signUpStatus: SignUpStatus;\r\n resetKey?: string | number;\r\n onSearchSubmit?: (query: string) => void;\r\n}\r\n\r\nexport interface HeaderSearchResult {\r\n label: string;\r\n description?: string;\r\n value: string;\r\n}\r\n\r\nconst H_OPEN = \"[[H]]\";\r\nconst H_CLOSE = \"[[/H]]\";\r\n\r\nconst escapeRegExp = (s: string) => s.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\r\n\r\nconst renderHighlightedText = (text: string): React.ReactNode => {\r\n if (!text) return null;\r\n\r\n const tokenRe = new RegExp(\r\n `(${escapeRegExp(H_OPEN)}|${escapeRegExp(H_CLOSE)})`,\r\n \"g\",\r\n );\r\n\r\n const parts = text.split(tokenRe);\r\n\r\n const [nodes] = parts.reduce<[React.ReactNode[], boolean, number]>(\r\n ([out, inHighlight, key], part) => {\r\n if (!part) return [out, inHighlight, key];\r\n\r\n if (part === H_OPEN) return [out, true, key];\r\n if (part === H_CLOSE) return [out, false, key];\r\n\r\n out.push(\r\n inHighlight ? (\r\n <mark\r\n key={key}\r\n style={{\r\n padding: \"0 2px\",\r\n borderRadius: 3,\r\n }}\r\n >\r\n {part}\r\n </mark>\r\n ) : (\r\n <React.Fragment key={key}>{part}</React.Fragment>\r\n ),\r\n );\r\n\r\n return [out, inHighlight, key + 1];\r\n },\r\n [[], false, 0],\r\n );\r\n\r\n return <>{nodes}</>;\r\n};\r\n\r\nfunction renderDescription(desc: string): React.ReactNode {\r\n if (!desc) return null;\r\n\r\n const lines = desc.split(/\\r?\\n/).filter(line => line.trim().length > 0);\r\n\r\n const bulletLines = lines.filter(line => line.trim().startsWith(\"* \"));\r\n const nonBulletLines = lines.filter(line => !line.trim().startsWith(\"* \"));\r\n\r\n return (\r\n <div style={{ fontSize: 14, lineHeight: 1.5 }}>\r\n {nonBulletLines.length > 0 && (\r\n <div style={{ marginBottom: bulletLines.length > 0 ? 6 : 0 }}>\r\n {nonBulletLines.map((line, idx) => (\r\n <React.Fragment key={idx}>\r\n {renderHighlightedText(line)}\r\n {idx < nonBulletLines.length - 1 ? <br /> : null}\r\n </React.Fragment>\r\n ))}\r\n </div>\r\n )}\r\n\r\n {bulletLines.length > 0 && (\r\n <ul style={{ margin: 0, paddingLeft: 18 }}>\r\n {bulletLines.map((line, idx) => {\r\n const bulletText = line.trim().replace(/^\\*\\s*/, \"\");\r\n return <li key={idx}>{renderHighlightedText(bulletText)}</li>;\r\n })}\r\n </ul>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nconst StyledHeader = styled(Box)(({ theme }) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-start',\r\n backgroundColor: theme.palette.primary.main, // var(--color-primary)\r\n [theme.breakpoints.up('md')]: {\r\n gap: theme.spacing(4), // md:gap-4\r\n padding: theme.spacing(1.5, 1.5), // px-4 py-3\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n padding: 0, // px-4 py-3\r\n },\r\n}));\r\n\r\nconst StyledLogoWrapper = styled(Box)(({ theme }) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: theme.spacing(1.5),\r\n gap: theme.spacing(2),\r\n height: '64px', \r\n}));\r\n\r\n\r\nconst StyledLogoIcon = styled(Box)(({ theme }) => ({\r\n width: '100%',\r\n height: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: theme.palette.light.main,\r\n}));\r\n\r\n\r\nconst StyledLogoText = styled(Typography)(({ theme }) => ({\r\n color: theme.palette.light.main, // text-[#FDFCEE]\r\n fontWeight: 700, // font-bold\r\n letterSpacing: '0.05em', // tracking-wide\r\n fontSize: '1.5rem', // text-2xl\r\n [theme.breakpoints.down('md')]: {\r\n fontSize: '1.25rem', // sm:text-xl\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n fontSize: '1.125rem', // text-lg\r\n },\r\n}));\r\n\r\nconst LogoComponent: React.FC = () => {\r\n const themeType = React.useContext(ThemeContext);\r\n \r\n const logoProps = {\r\n style: {\r\n width: '100%',\r\n height: '100%',\r\n display: 'block'\r\n }\r\n };\r\n switch (themeType) {\r\n case 'GP':\r\n return <GPLogo {...logoProps} />;\r\n case 'School':\r\n return <SchoolLogo {...logoProps} />;\r\n case 'ECE':\r\n default:\r\n return <ECELogo {...logoProps} />;\r\n }\r\n};\r\n\r\n\r\nconst StyledSearchContainer = styled(Box)(({ theme }) => ({\r\n flex: 1,\r\n maxWidth: '45rem',\r\n margin: theme.spacing(0, 2), // mx-8\r\n position: 'relative',\r\n}));\r\n\r\nconst StyledTextField = styled(TextField)(({ theme }) => ({\r\n '& .MuiInputBase-root': {\r\n backgroundColor: theme.palette.light.main, // bg-[#FDFCEE]\r\n color: theme.palette.dark.main, // text-[#4D3019]\r\n borderRadius: '9999px', // rounded-full\r\n fontSize: '1rem', // text-base\r\n [theme.breakpoints.down('md')]: {\r\n paddingRight: theme.spacing(5), // sm:pr-10\r\n fontSize: '0.875rem', // text-sm\r\n },\r\n },\r\n '& .MuiInputBase-input': {\r\n padding: theme.spacing(1.5, 3), // px-4 py-2\r\n [theme.breakpoints.up('md')]: {\r\n padding: theme.spacing(1.5, 4), // md:px-6 md:py-3\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n padding: theme.spacing(1.5, 2.5), // sm:px-5\r\n },\r\n },\r\n '& .MuiInputBase-input::placeholder': {\r\n color: `${theme.palette.dark.main}99`, // placeholder-[#4D3019]/60\r\n opacity: 1,\r\n },\r\n '& .MuiInputBase-root:focus-within': {\r\n outline: `2px solid ${theme.palette.light.main}`, // focus:ring-2 focus:ring-[#FDFCEE]\r\n outlineOffset: 0,\r\n },\r\n}));\r\n\r\nconst StyledSearchButton = styled(IconButton)(({ theme }) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n position: 'static',\r\n borderRadius: '50%',\r\n backgroundColor: theme.palette.primary.main,\r\n width: theme.spacing(5),\r\n height: theme.spacing(5),\r\n [theme.breakpoints.down('md')]: {\r\n width: theme.spacing(5),\r\n height: theme.spacing(5),\r\n marginRight: theme.spacing(1),\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n marginRight: theme.spacing(0.5),\r\n },\r\n '&:hover': {\r\n opacity: 0.9,\r\n backgroundColor: theme.palette.primary.main,\r\n },\r\n}));\r\n\r\nconst StyledSearchIcon = styled(Box)(({ theme }) => ({\r\n display: 'flex', \r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: theme.palette.light.main,\r\n width: '100%',\r\n height: '100%',\r\n '& svg': {\r\n fontSize: '1.5rem',\r\n [theme.breakpoints.down('sm')]: {\r\n fontSize: '1.25rem',\r\n },\r\n },\r\n}));\r\n\r\nconst StyledUserContainer = styled(Box)(({ theme }) => ({\r\n marginLeft: 'auto',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: theme.spacing(3), // md:gap-3\r\n [theme.breakpoints.down('md')]: {\r\n gap: 0,\r\n },\r\n}));\r\n\r\nconst StyledAvatar = styled(Box)(({ theme }) => ({\r\n width: theme.spacing(6), // md:w-12\r\n height: theme.spacing(6), // md:h-12\r\n borderRadius: '50%', // rounded-full\r\n backgroundColor: theme.palette.light.main, // bg-[#FDFCEE]\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n flexShrink: 0,\r\n [theme.breakpoints.down('md')]: {\r\n width: theme.spacing(5), // sm:w-10\r\n height: theme.spacing(5), // sm:h-10\r\n }\r\n}));\r\n\r\nconst StyledAvatarText = styled(Typography)(({ theme }) => ({\r\n color: theme.palette.dark.main, // text-[#4D3019]\r\n fontWeight: 700, // font-bold\r\n fontSize: '1.125rem', // text-lg\r\n [theme.breakpoints.down('md')]: {\r\n fontSize: '0.875rem', // text-sm\r\n },\r\n}));\r\n\r\nconst StyledUserName = styled(Typography)(({ theme }) => ({\r\n color: theme.palette.light.main, // text-[#FDFCEE]\r\n fontWeight: 500, // font-medium\r\n marginLeft: theme.spacing(1),\r\n fontSize: '1.125rem', // text-lg\r\n display: 'none', // hidden\r\n [theme.breakpoints.up('sm')]: {\r\n display: 'inline', // sm:inline\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n fontSize: '0.875rem', // text-sm\r\n display: 'none'\r\n },\r\n}));\r\n\r\nexport const Header: React.FC<HeaderProps> = ({\r\n userName = 'John Doe',\r\n userInitials = 'JD',\r\n toggleMenu,\r\n signOut,\r\n search,\r\n onResultClick,\r\n signUpStatus,\r\n resetKey,\r\n onSearchSubmit,\r\n}) => {\r\n const theme = useTheme();\r\n const [anchorEl, setAnchorEl] = React.useState<HTMLButtonElement | null>(null);\r\n const [searchQuery, setSearchQuery] = React.useState('');\r\n const [results, setResults] = React.useState<HeaderSearchResult[]>([]);\r\n const [openDropdown, setOpenDropdown] = React.useState(false);\r\n\r\n const isMdUp = useMediaQuery(theme.breakpoints.up('md'));\r\n \r\n\r\n // Desktop\r\n const desktopInputRef = React.useRef<HTMLInputElement | null>(null);\r\n const desktopFieldRef = React.useRef<HTMLDivElement | null>(null);\r\n\r\n // Mobile\r\n const [mobileSearchOpen, setMobileSearchOpen] = React.useState(false);\r\n const mobileInputRef = React.useRef<HTMLInputElement | null>(null);\r\n\r\n const [hasInvalidChars, setHasInvalidChars] = React.useState(false);\r\n const INVALID_CHARS = /[^\\p{L}\\p{M}\\p{N} (),\\/\\.\"'\\-:;\\$]/u;\r\n const INVALID_CHARS_GLOBAL = new RegExp(INVALID_CHARS.source, 'gu');\r\n\r\n const [isSearching, setIsSearching] = React.useState(false);\r\n const headerRef = React.useRef<HTMLDivElement | null>(null);\r\n const isActive = signUpStatus === 'Active';\r\n \r\n const clearQueryOnNextResetRef = React.useRef(true);\r\n const closeMobileOnNextResetRef = React.useRef(true);\r\n\r\n\r\n\r\n const searchSeqRef = React.useRef(0);\r\n const debounceRef = React.useRef<number | undefined>(undefined);\r\n\r\n const closeMobileSearch = () => {\r\n\r\n setMobileSearchOpen(false);\r\n if (clearQueryOnNextResetRef.current){\r\n setSearchQuery('');\r\n }\r\n setResults([]);\r\n setOpenDropdown(false);\r\n window.clearTimeout(debounceRef.current);\r\n };\r\n\r\n const toggleMobileSearch = () => {\r\n setMobileSearchOpen(prev => {\r\n const next = !prev;\r\n if (!next) {\r\n // cancelling\r\n closeMobileSearch();\r\n return false;\r\n }\r\n // opening\r\n setTimeout(() => mobileInputRef.current?.focus(), 0);\r\n return true;\r\n });\r\n };\r\n\r\n const handleOpen = (event: React.MouseEvent<HTMLButtonElement>) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const cancelPendingSearch = () => {\r\n window.clearTimeout(debounceRef.current);\r\n debounceRef.current = undefined;\r\n\r\n // Invalidate any in-flight runSearch so it won't set dropdown/results later\r\n searchSeqRef.current += 1;\r\n\r\n setIsSearching(false);\r\n };\r\n\r\n const runSearch = async (term: string) => {\r\n if (!search) {\r\n searchSeqRef.current += 1;\r\n setIsSearching(false);\r\n setResults([]);\r\n setHasInvalidChars(false);\r\n setOpenDropdown(false);\r\n return;\r\n }\r\n if (!term.trim()) {\r\n searchSeqRef.current += 1;\r\n setIsSearching(false);\r\n setHasInvalidChars(false);\r\n setOpenDropdown(false);\r\n setResults([]);\r\n return;\r\n }\r\n const sanitized = term.replace(INVALID_CHARS_GLOBAL, '').trim();\r\n\r\n if (!sanitized) {\r\n searchSeqRef.current += 1;\r\n setIsSearching(false);\r\n setResults([]);\r\n setHasInvalidChars(true);\r\n setOpenDropdown(true);\r\n return;\r\n }\r\n \r\n setHasInvalidChars(false);\r\n\r\n const seq = ++searchSeqRef.current;\r\n setIsSearching(true);\r\n try {\r\n const res = await Promise.resolve(search(term.trim()));\r\n\r\n if (seq !== searchSeqRef.current) return; // Fixes debounce race condition causing old searches to appear after newer\r\n\r\n const list = Array.isArray(res) ? res : [];\r\n setResults(list);\r\n setOpenDropdown(true); // display dropdown no matter what, if no results will display no results message\r\n } finally {\r\n if (seq === searchSeqRef.current) setIsSearching(false);\r\n }\r\n };\r\n\r\n const handleSearchChange = (value: string) => {\r\n setSearchQuery(value);\r\n window.clearTimeout(debounceRef.current);\r\n\r\n debounceRef.current = window.setTimeout(() => runSearch(value), 150);\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n if (e.key !== 'Enter') return;\r\n \r\n e.preventDefault();\r\n\r\n const term = searchQuery.trim();\r\n if (!term) return;\r\n\r\n if (INVALID_CHARS.test(term)) { \r\n console.log(term);\r\n runSearch(term);\r\n return;\r\n }\r\n\r\n cancelPendingSearch();\r\n \r\n setOpenDropdown(false);\r\n setResults([]);\r\n setHasInvalidChars(false);\r\n \r\n onSearchSubmit?.(term);\r\n };\r\n\r\n const handleSearchClick: React.MouseEventHandler<HTMLButtonElement> = (e) => {\r\n e.preventDefault();\r\n\r\n const term = searchQuery.trim();\r\n if (!term) {\r\n runSearch('');\r\n return;\r\n }\r\n\r\n if (INVALID_CHARS.test(term)) { \r\n runSearch(term);\r\n return;\r\n }\r\n\r\n cancelPendingSearch();\r\n\r\n setOpenDropdown(false);\r\n setResults([]);\r\n setHasInvalidChars(false);\r\n \r\n onSearchSubmit?.(term);\r\n }\r\n\r\n React.useEffect(() => {\r\n const clearQuery = clearQueryOnNextResetRef.current;\r\n const closeMobile = closeMobileOnNextResetRef.current;\r\n\r\n if (closeMobile) {\r\n // sidebar/normal navigation\r\n closeMobileSearch();\r\n } else {\r\n // navigation from clicking a search result: keep mobile panel open\r\n if (clearQuery) setSearchQuery('');\r\n setResults([]);\r\n setOpenDropdown(false);\r\n window.clearTimeout(debounceRef.current);\r\n }\r\n\r\n // reset defaults for next navigation\r\n clearQueryOnNextResetRef.current = true;\r\n closeMobileOnNextResetRef.current = true;\r\n }, [resetKey]);\r\n\r\n React.useEffect(() => {\r\n const handler = (e: MouseEvent) => {\r\n const t = e.target as Node;\r\n\r\n const inDesktop = desktopInputRef.current?.parentElement?.contains(t);\r\n const inMobile = mobileInputRef.current?.parentElement?.contains(t);\r\n\r\n if (!inDesktop && !inMobile) {\r\n setOpenDropdown(false);\r\n }\r\n };\r\n\r\n document.addEventListener('click', handler);\r\n return () => document.removeEventListener('click', handler);\r\n }, []);\r\n\r\n type ResultsMode = 'desktop' | 'mobile';\r\n\r\n const DropdownResults = ({\r\n mode,\r\n }: {\r\n mode: ResultsMode;\r\n }) => {\r\n const isDesktop = mode === 'desktop';\r\n return (\r\n <Box>\r\n {!isSearching && hasInvalidChars ? (\r\n <Paper\r\n elevation={0}\r\n sx={{\r\n mt: 1,\r\n border: '1px solid #4D3019',\r\n boxShadow: 'none',\r\n backgroundColor: theme.palette.background.paper,\r\n borderRadius: isDesktop ? '12px' : 0,\r\n px: 2,\r\n py: 1.5,\r\n }}\r\n >\r\n <Typography sx={{ fontSize: '14px', color: theme.palette.text.primary }}>\r\n Oops — your search includes symbols we don’t support yet. Please remove special characters (like %, @, #, =) and try again.\r\n </Typography>\r\n </Paper>\r\n ) : !isSearching && results.length === 0 ? (\r\n <Paper\r\n elevation={0}\r\n sx={{\r\n mt: 1,\r\n border: `1px solid ${theme.palette.text.primary}`,\r\n boxShadow: 'none',\r\n backgroundColor: theme.palette.background.paper,\r\n borderRadius: isDesktop ? '12px' : 0,\r\n px: 2,\r\n py: 1.5,\r\n }}\r\n >\r\n <Typography sx={{ fontSize: '14px', color: theme.palette.text.primary }}>\r\n No results found\r\n </Typography>\r\n </Paper>\r\n ) : (\r\n <ResultsList\r\n mode={mode}\r\n items={results}\r\n onPick={(item) => {\r\n clearQueryOnNextResetRef.current = false; // keep text\r\n closeMobileOnNextResetRef.current = false; // keep mobile panel open\r\n\r\n setOpenDropdown(false);\r\n setResults([]);\r\n\r\n onResultClick?.(item);\r\n }}\r\n />\r\n )}\r\n </Box>\r\n );\r\n};\r\n\r\n\r\n const ResultsList = ({\r\n items,\r\n mode,\r\n paperRef,\r\n onPick,\r\n }: {\r\n items: HeaderSearchResult[];\r\n mode: ResultsMode;\r\n paperRef?: React.Ref<HTMLDivElement>;\r\n onPick: (item: HeaderSearchResult) => void;\r\n }) => {\r\n const isDesktop = mode === 'desktop';\r\n const displayedResults = mode == 'desktop' ? items.slice(0, 5) : items.slice(0, 3);\r\n return (\r\n <Paper\r\n ref={paperRef}\r\n elevation={0}\r\n \r\n sx={{\r\n mt: 1,\r\n border: `1px solid ${theme.palette.text.primary}`,\r\n boxShadow: 'none',\r\n backgroundColor: theme.palette.background.paper,\r\n\r\n ...(isDesktop\r\n ? {\r\n maxHeight: 'auto',\r\n borderRadius: '12px',\r\n overflowX: 'hidden',\r\n overflowY: 'hidden',\r\n }\r\n : {\r\n overflow: 'hidden', // no scroll, no scrollbar\r\n pb: 0,\r\n }),\r\n }}\r\n >\r\n <List dense disablePadding>\r\n {displayedResults.map((item, index) => (\r\n <ListItemButton\r\n key={index}\r\n alignItems=\"flex-start\"\r\n onClick={() => onPick(item)}\r\n sx={{\r\n py: 1.5,\r\n px: 2,\r\n backgroundColor: theme.palette.background.paper,\r\n borderBottom:\r\n index === displayedResults.length - 1\r\n ? 'none'\r\n : '1px solid rgba(77,48,25,0.18)',\r\n '&:hover': { backgroundColor: theme.palette.custom.readByBackgroundColor },\r\n '&:hover .search-result-title': {\r\n textDecoration: 'underline',\r\n color: theme.palette.primary.main,\r\n },\r\n }}\r\n >\r\n <ListItemText\r\n primary={item.label}\r\n secondary={renderDescription(item.description!)}\r\n primaryTypographyProps={{\r\n className: 'search-result-title',\r\n fontWeight: 700,\r\n fontSize: '16px',\r\n color: theme.palette.text.primary,\r\n }}\r\n secondaryTypographyProps={{ component: 'div', mt: 1 }}\r\n />\r\n </ListItemButton>\r\n ))}\r\n </List>\r\n </Paper>\r\n );\r\n };\r\n\r\n\r\n return (\r\n <Box>\r\n <StyledHeader ref={headerRef}>\r\n {isActive && (\r\n <>\r\n <IconButton\r\n disableRipple\r\n onClick={toggleMenu}\r\n sx={{ display: { xs: 'block', md: 'none' } }}\r\n size=\"large\"\r\n >\r\n <MenuRounded sx={{ fontSize: 32, color: 'white' }} />\r\n </IconButton>\r\n\r\n <Divider\r\n orientation=\"vertical\"\r\n sx={{\r\n color: '#FFFFFF',\r\n borderRightWidth: 2,\r\n display: { xs: 'block', md: 'none' },\r\n }}\r\n />\r\n </>\r\n )}\r\n\r\n <StyledLogoWrapper>\r\n <StyledLogoIcon>\r\n <LogoComponent />\r\n </StyledLogoIcon>\r\n </StyledLogoWrapper>\r\n\r\n {/* Desktop search only */}\r\n {isActive && isMdUp && (\r\n <StyledSearchContainer>\r\n <StyledTextField\r\n placeholder=\"Search for a policy\"\r\n variant=\"outlined\"\r\n fullWidth\r\n value={searchQuery}\r\n inputRef={desktopInputRef}\r\n ref={desktopFieldRef}\r\n onChange={(e) => handleSearchChange(e.target.value)}\r\n onKeyDown={handleKeyDown}\r\n InputProps={{\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Box sx = {{ mr: 1}}>\r\n {isSearching ? <CircularProgress size={24} /> : null} \r\n </Box>\r\n <StyledSearchButton onClick={handleSearchClick}>\r\n <StyledSearchIcon>\r\n <SearchRounded />\r\n </StyledSearchIcon>\r\n </StyledSearchButton>\r\n </InputAdornment>\r\n ),\r\n }}\r\n />\r\n\r\n <Popper\r\n open={openDropdown && !!desktopFieldRef.current}\r\n anchorEl={desktopFieldRef.current}\r\n placement=\"bottom-start\"\r\n style={{ zIndex: 1300, width: desktopFieldRef.current?.offsetWidth }}\r\n >\r\n <DropdownResults mode=\"desktop\"/>\r\n </Popper>\r\n </StyledSearchContainer>\r\n )}\r\n\r\n <StyledUserContainer>\r\n {/* Mobile search button only */}\r\n {isActive && !isMdUp && (\r\n <StyledSearchButton\r\n disableRipple\r\n onClick={toggleMobileSearch}\r\n sx={{\r\n display: { xs: 'flex', md: 'none' },\r\n backgroundColor: '#ffffff83',\r\n }}\r\n >\r\n <StyledSearchIcon>\r\n <SearchRounded />\r\n </StyledSearchIcon>\r\n </StyledSearchButton>\r\n )}\r\n\r\n <IconButton onClick={handleOpen} disableRipple>\r\n <StyledAvatar>\r\n <StyledAvatarText>{userInitials}</StyledAvatarText>\r\n </StyledAvatar>\r\n <StyledUserName>{userName}</StyledUserName>\r\n </IconButton>\r\n </StyledUserContainer>\r\n\r\n <PopoverMenu\r\n anchorEl={anchorEl}\r\n onClose={handleClose}\r\n signOut={() => {\r\n signOut();\r\n handleClose()\r\n }}\r\n />\r\n </StyledHeader>\r\n\r\n {/* Mobile panel only */}\r\n {!isMdUp && (\r\n <Collapse in={isActive && mobileSearchOpen} unmountOnExit timeout={200}>\r\n <Box\r\n sx={{\r\n display: { xs: 'block', md: 'none' },\r\n backgroundColor: theme.palette.primary.main,\r\n px: 2,\r\n pt: 1.5,\r\n pb: 2,\r\n }}\r\n >\r\n <Box sx={{ display: 'flex', gap: 1, alignItems: 'center' }}>\r\n <StyledTextField\r\n placeholder=\"Search for a policy\"\r\n variant=\"outlined\"\r\n fullWidth\r\n value={searchQuery}\r\n inputRef={mobileInputRef}\r\n onChange={(e) => handleSearchChange(e.target.value)}\r\n onKeyDown={handleKeyDown}\r\n InputProps={{\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n {isSearching ? <CircularProgress size={18} /> : null}\r\n </InputAdornment>\r\n )\r\n }}\r\n />\r\n\r\n <IconButton onClick={closeMobileSearch} sx={{ color: theme.palette.light.main }}>\r\n <CloseRounded />\r\n </IconButton>\r\n </Box>\r\n {openDropdown && (\r\n <Box sx={{ mx: -2 }}>\r\n <DropdownResults mode=\"mobile\"/>\r\n </Box>\r\n )}\r\n </Box>\r\n </Collapse>\r\n )}\r\n </Box>\r\n );\r\n};"],"names":["_jsx","_Fragment","_jsxs","styled","Box","Typography","ThemeContext","GPLogo","SchoolLogo","ECELogo","TextField","IconButton","useTheme","useMediaQuery","Paper","List","ListItemButton","ListItemText","MenuRounded","Divider","InputAdornment","CircularProgress","SearchRounded","Popper","PopoverMenu","Collapse","CloseRounded"],"mappings":"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"}
@@ -33,11 +33,11 @@ const NavButton = material.styled(material.IconButton)(({ theme }) => ({
33
33
  borderColor: theme.palette.dark.main, // Keep border dark
34
34
  },
35
35
  }));
36
- const Modal = ({ isOpen, onClose, status, requirementType, description, value, defaultValue, note, onSave, onSubmit, successMessage, errorMessage, onDeclineWording, onPrevious, onNext, currentPage = 1, totalPages = 1, isLoading }) => {
36
+ const Modal = ({ isOpen, onClose, variableId, status, requirementType, description, value, defaultValue, note, onSave, onSubmit, successMessage, errorMessage, onDeclineWording, onPrevious, onNext, currentPage = 1, totalPages = 1, isLoading }) => {
37
37
  const variableState = variableProcessing.mapStatusToVariableState(status);
38
38
  const variableReqType = variableProcessing.mapRequirementTypeToState(requirementType);
39
39
  const [textValue, setTextValue] = React.useState(value);
40
- const [prevTextValue, setPrevTextValue] = React.useState(value);
40
+ const [customValue, setCustomValue] = React.useState('');
41
41
  const [useDefaultValue, setUseDefaultValue] = React.useState(true);
42
42
  const [isSaving, setIsSaving] = React.useState(false);
43
43
  const [isSubmitting, setIsSubmitting] = React.useState(false);
@@ -47,10 +47,11 @@ const Modal = ({ isOpen, onClose, status, requirementType, description, value, d
47
47
  React.useEffect(() => {
48
48
  const displayValue = toDisplay(value);
49
49
  const displayDefault = toDisplay(defaultValue);
50
- setUseDefaultValue(displayValue === displayDefault);
50
+ const isUsingDefault = displayValue === displayDefault;
51
+ setUseDefaultValue(isUsingDefault);
51
52
  setTextValue(displayValue);
52
- setPrevTextValue(displayValue);
53
- }, [isOpen, value, defaultValue]);
53
+ setCustomValue(isUsingDefault ? '' : displayValue);
54
+ }, [variableId, value, defaultValue]);
54
55
  React.useEffect(() => {
55
56
  if (!isOpen) {
56
57
  setIsSaving(false);
@@ -73,17 +74,16 @@ const Modal = ({ isOpen, onClose, status, requirementType, description, value, d
73
74
  setIsSubmitting(false);
74
75
  }
75
76
  }, [isLoading]);
76
- React.useEffect(() => {
77
- if (useDefaultValue) {
78
- setPrevTextValue(textValue);
79
- setTextValue(defaultValue);
77
+ const handleUseDefaultValueChange = (event) => {
78
+ const checked = event.target.checked;
79
+ if (checked) {
80
+ setCustomValue(textValue);
81
+ setTextValue(toDisplay(defaultValue));
80
82
  }
81
83
  else {
82
- setTextValue(prevTextValue);
84
+ setTextValue(customValue || toDisplay(value));
83
85
  }
84
- }, [useDefaultValue, defaultValue]);
85
- const handleUseDefaultValueChange = (event) => {
86
- setUseDefaultValue(event.target.checked);
86
+ setUseDefaultValue(checked);
87
87
  };
88
88
  const canSubmitSave = isLoading || variableState === variable.VariableState.Pending;
89
89
  const statusConfig = {
@@ -185,13 +185,26 @@ const Modal = ({ isOpen, onClose, status, requirementType, description, value, d
185
185
  '&:hover': {
186
186
  backgroundColor: theme.palette.primary.main + '80',
187
187
  },
188
- }, children: isSubmitting ? jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(material.CircularProgress, { size: 20 }), jsxRuntime.jsx(material.Typography, { sx: { paddingLeft: 2 }, children: "Submitting..." })] }) : "Submit for review" }), variableReqType === variable.RequirementType.Optional &&
188
+ }, children: isSubmitting ? jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(material.CircularProgress, { size: 20 }), jsxRuntime.jsx(material.Typography, { sx: { paddingLeft: 2 }, children: "Submitting..." })] }) : useDefaultValue === false ? "Submit for review" : "Submit" }), variableReqType === variable.RequirementType.Optional &&
189
189
  (jsxRuntime.jsx(Button.Button, { onClick: onDeclineWording, variant: "outline", size: "md", sx: {
190
190
  backgroundColor: '#ff464652',
191
191
  '&:hover': {
192
192
  backgroundColor: '#ff464680', // Darker purple on hover
193
193
  }
194
- }, disabled: canSubmitSave, children: "Decline wording" }))] })) : (jsxRuntime.jsx(material.Box, { sx: { display: 'flex', gap: 1.5, flexWrap: 'wrap' } })), jsxRuntime.jsxs(material.Box, { sx: {
194
+ }, disabled: canSubmitSave, children: "Decline wording" }))] })) : (jsxRuntime.jsx(material.Box, { sx: { display: 'flex', gap: 1.5, flexWrap: 'wrap' }, children: jsxRuntime.jsx(Button.Button, { onClick: () => {
195
+ setIsSubmitting(true);
196
+ // Pass the default value and true directly to onSubmit
197
+ const payloadValue = toStorage(toDisplay(defaultValue));
198
+ setCustomValue(textValue);
199
+ setTextValue(toDisplay(defaultValue));
200
+ setUseDefaultValue(true);
201
+ onSubmit?.(payloadValue, true);
202
+ }, variant: "outline", size: "md", disabled: canSubmitSave, sx: {
203
+ backgroundColor: '#ff464652',
204
+ '&:hover': {
205
+ backgroundColor: '#ff464680',
206
+ }
207
+ }, children: isSubmitting ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(material.CircularProgress, { size: 20 }), jsxRuntime.jsx(material.Typography, { sx: { paddingLeft: 2 }, children: "Restoring..." })] })) : ("Restore wording") }) })), jsxRuntime.jsxs(material.Box, { sx: {
195
208
  display: 'flex',
196
209
  alignItems: 'center',
197
210
  gap: 1.5,
@@ -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 { ArrowBackIosRounded, ArrowForwardIosRounded, ArticleRounded, CloseRounded, ErrorOutlineRounded, InfoOutlineRounded, StickyNote2Rounded } from '@mui/icons-material';\r\nimport { Alert } from './Alert';\r\nimport { toast } from 'react-toastify';\r\nimport parse from 'html-react-parser';\r\nimport { VariableState, RequirementType } from '../types/variable';\r\nimport { mapRequirementTypeToState, mapStatusToVariableState } from '../helpers/variableProcessing';\r\n\r\ninterface ModalProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n status: string;\r\n requirementType: string,\r\n description: string;\r\n value: string;\r\n defaultValue: string;\r\n note?: string;\r\n onSave?: (fieldValue: string, defaultChecked: boolean) => void;\r\n onSubmit?: (fieldValue: string, defaultChecked: boolean) => void;\r\n successMessage?: string;\r\n errorMessage?: string;\r\n onDeclineWording?: () => void;\r\n onPrevious?: () => void;\r\n onNext?: () => void;\r\n currentPage?: number;\r\n totalPages?: number;\r\n isLoading: boolean;\r\n}\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\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\n\r\nexport const Modal: React.FC<ModalProps> = ({\r\n isOpen,\r\n onClose,\r\n status,\r\n requirementType,\r\n description,\r\n value,\r\n defaultValue,\r\n note,\r\n onSave,\r\n onSubmit,\r\n successMessage,\r\n errorMessage,\r\n onDeclineWording,\r\n onPrevious,\r\n onNext,\r\n currentPage = 1,\r\n totalPages = 1,\r\n isLoading\r\n}) => {\r\n const variableState = mapStatusToVariableState(status);\r\n const variableReqType = mapRequirementTypeToState(requirementType)\r\n\r\n const [textValue, setTextValue] = useState(value);\r\n const [prevTextValue, setPrevTextValue] = useState(value);\r\n\r\n const [useDefaultValue, setUseDefaultValue] = useState(true);\r\n const [isSaving, setIsSaving] = useState(false);\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n\r\n const theme = useTheme()\r\n\r\n const toDisplay = (str: string) => str?.replace(/\\\\n/g, '\\n') ?? '';\r\n const toStorage = (str: string) => str?.replace(/\\r?\\n/g, '\\\\n') ?? '';\r\n\r\n useEffect(() => {\r\n const displayValue = toDisplay(value);\r\n const displayDefault = toDisplay(defaultValue);\r\n\r\n setUseDefaultValue(displayValue === displayDefault);\r\n setTextValue(displayValue);\r\n setPrevTextValue(displayValue);\r\n }, [isOpen, value, defaultValue]);\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 useEffect(() => {\r\n if (useDefaultValue){\r\n setPrevTextValue(textValue);\r\n setTextValue(defaultValue);\r\n } else {\r\n setTextValue(prevTextValue);\r\n }\r\n }, [useDefaultValue, defaultValue]);\r\n\r\n\r\n\r\n const handleUseDefaultValueChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n setUseDefaultValue(event.target.checked);\r\n };\r\n\r\n\r\n const canSubmitSave = isLoading || variableState === VariableState.Pending\r\n\r\n const statusConfig = {\r\n [VariableState.Pending]: { color: '#EBC7FF', label: 'Pending' },\r\n [VariableState.Draft]: { color: '#4D3019', label: 'Draft' },\r\n [VariableState.Declined]: { color: '#4D3019', label: 'Declined' },\r\n [VariableState.ActionRequired]: { color: '#FFBCB3', label: 'Action Required' },\r\n [VariableState.Accepted]: { color: '#DBF59A', label: 'Accepted' },\r\n [VariableState.NotStarted]: { color: '#000000ff', label: 'Not Started' },\r\n };\r\n\r\n const reqTypeConfig = {\r\n \"Default\": {\r\n color: '#F5A623',\r\n highlight: '#f3bf6bff',\r\n highlightSelected: '#F5A623',\r\n label: 'Mandatory',\r\n },\r\n \"Optional\": {\r\n color: '#F5D76E',\r\n highlight: '#f3e2a5ff',\r\n highlightSelected: '#F5D76E',\r\n label: 'Optional',\r\n },\r\n };\r\n\r\n\r\n const statusStyle = variableState ? statusConfig[variableState] : { color: '#ccc', label: 'Unknown' };;\r\n const requirementTypeStyle = variableReqType ? reqTypeConfig[variableReqType] : { color: '#ccc', label: 'Unknown' };;\r\n\r\n\r\n const handleSave = () => {\r\n setIsSaving(true);\r\n const payloadValue = toStorage(textValue);\r\n onSave?.(payloadValue, useDefaultValue);\r\n };\r\n\r\n\r\n const handleSubmit = () => {\r\n setIsSubmitting(true);\r\n const payloadValue = toStorage(textValue);\r\n onSubmit?.(payloadValue, useDefaultValue);\r\n };\r\n\r\n\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\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\r\n {/* Description */}\r\n <Typography sx={{ mb: 3, lineHeight: 1.6, whiteSpace: 'pre-line' }}>\r\n {parse(description)}\r\n </Typography>\r\n\r\n\r\n {/* Error Alert with Custom Icon */}\r\n {variableState === VariableState.ActionRequired && note && (\r\n <Alert\r\n variant=\"error\"\r\n icon={<InfoOutlineRounded sx={{ fontSize: 20 }} />}\r\n sx={{\r\n mb: 2\r\n }}\r\n >\r\n {note}\r\n </Alert>\r\n )}\r\n\r\n {/* Info Alert with Custom Background and Icon */}\r\n {variableState !== VariableState.ActionRequired && note && (\r\n <Alert\r\n variant=\"info\"\r\n icon={<ArticleRounded sx={{ fontSize: 20, color: theme.palette.text.primary }} />}\r\n sx={{\r\n mb: 2,\r\n backgroundColor: '#00000000',\r\n borderColor: '#acacacff',\r\n color: theme.palette.text.primary,\r\n }}\r\n >\r\n {note}\r\n </Alert>\r\n )}\r\n\r\n\r\n {/* Text Field */}\r\n <TextField\r\n multiline\r\n rows={6}\r\n fullWidth\r\n value={textValue}\r\n onChange={(e) => setTextValue(e.target.value)}\r\n disabled={\r\n useDefaultValue || \r\n canSubmitSave || \r\n variableState === VariableState.Declined\r\n }\r\n sx={{\r\n mb: 2,\r\n '& .MuiOutlinedInput-root': {\r\n backgroundColor: useDefaultValue || canSubmitSave ? 'rgba(0, 0, 0, 0.05)' : '#fff',\r\n borderRadius: 2,\r\n },\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={canSubmitSave || variableState === VariableState.Declined}\r\n onChange={handleUseDefaultValueChange}\r\n sx={{\r\n color: theme.palette.primary.main,\r\n '&.Mui-checked': {\r\n color: theme.palette.primary.main,\r\n },\r\n }}\r\n />\r\n }\r\n label=\"Use Default Wording\"\r\n sx={{ mb: 3 }}\r\n />\r\n\r\n <Box\r\n sx={{\r\n display: 'flex',\r\n flexDirection: { xs: 'column', sm: 'row' },\r\n alignItems: { xs: 'stretch', sm: 'center' },\r\n justifyContent: 'space-between',\r\n gap: 2,\r\n pt: 3,\r\n borderTop: '1px solid',\r\n borderColor: 'divider',\r\n }}\r\n >\r\n {variableState !== VariableState.Declined ? (\r\n <Box sx={{ display: 'flex', gap: 1.5, flexWrap: 'wrap' }}>\r\n {useDefaultValue === false? \r\n (\r\n <Button\r\n onClick={handleSave}\r\n variant=\"outline\"\r\n size=\"md\"\r\n disabled={canSubmitSave}\r\n >\r\n {isSaving ? <><CircularProgress size={20} /><Typography sx={{paddingLeft: 2}}>Saving...</Typography></> : \"Save\"}\r\n </Button>\r\n ) : (<></>)\r\n }\r\n <Button\r\n onClick={handleSubmit}\r\n variant=\"outline\"\r\n size=\"md\"\r\n disabled={canSubmitSave}\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 ? <><CircularProgress size={20} /><Typography sx={{paddingLeft: 2}}>Submitting...</Typography></> : \"Submit for review\"}\r\n </Button>\r\n {variableReqType === RequirementType.Optional &&\r\n (\r\n <Button onClick={onDeclineWording} variant=\"outline\" size=\"md\" 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 ) : (<Box sx={{ display: 'flex', gap: 1.5, flexWrap: 'wrap' }}></Box>)}\r\n \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 && <NavButton onClick={onPrevious} aria-label=\"Previous\" disabled={isLoading}>\r\n <ArrowBackIosRounded sx={{ fontSize: 20, color: theme.palette.text.primary }}/>\r\n </NavButton>}\r\n {currentPage !== totalPages && <NavButton onClick={onNext} aria-label=\"Next\" disabled={isLoading}>\r\n <ArrowForwardIosRounded sx={{ fontSize: 20, color: theme.palette.text.primary }}/>\r\n </NavButton>}\r\n <Typography fontWeight={500} fontSize=\"1.125rem\">\r\n {currentPage}/{totalPages}\r\n </Typography>\r\n </Box>\r\n </Box>\r\n </DialogContent>\r\n </StyledDialog>\r\n );\r\n};\r\n"],"names":["styled","Dialog","IconButton","mapStatusToVariableState","mapRequirementTypeToState","useState","useTheme","useEffect","toast","VariableState","_jsxs","_jsx","CloseRounded","DialogContent","Box","Chip","Typography","parse","Alert","InfoOutlineRounded","ArticleRounded","TextField","FormControlLabel","Checkbox","Button","_Fragment","CircularProgress","RequirementType","ArrowBackIosRounded","ArrowForwardIosRounded"],"mappings":"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"}
1
+ {"version":3,"file":"Modal.js","sources":["../../../../src/components/Modal.tsx"],"sourcesContent":["import React, { use, useEffect, useState } from 'react';\r\nimport {\r\n Dialog,\r\n DialogContent,\r\n IconButton,\r\n Box,\r\n Typography,\r\n TextField,\r\n Checkbox,\r\n FormControlLabel,\r\n Alert as MuiAlert,\r\n Chip,\r\n styled,\r\n CircularProgress,\r\n useTheme,\r\n} from '@mui/material';\r\nimport { Button } from './Button';\r\nimport { ArrowBackIosRounded, ArrowForwardIosRounded, ArticleRounded, CloseRounded, ErrorOutlineRounded, InfoOutlineRounded, StickyNote2Rounded } from '@mui/icons-material';\r\nimport { Alert } from './Alert';\r\nimport { toast } from 'react-toastify';\r\nimport parse from 'html-react-parser';\r\nimport { VariableState, RequirementType } from '../types/variable';\r\nimport { mapRequirementTypeToState, mapStatusToVariableState } from '../helpers/variableProcessing';\r\n\r\ninterface ModalProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n variableId: string;\r\n status: string;\r\n requirementType: string,\r\n description: string;\r\n value: string;\r\n defaultValue: string;\r\n note?: string;\r\n onSave?: (fieldValue: string, defaultChecked: boolean) => void;\r\n onSubmit?: (fieldValue: string, defaultChecked: boolean) => void;\r\n successMessage?: string;\r\n errorMessage?: string;\r\n onDeclineWording?: () => void;\r\n onPrevious?: () => void;\r\n onNext?: () => void;\r\n currentPage?: number;\r\n totalPages?: number;\r\n isLoading: boolean;\r\n}\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\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\n\r\nexport const Modal: React.FC<ModalProps> = ({\r\n isOpen,\r\n onClose,\r\n variableId,\r\n status,\r\n requirementType,\r\n description,\r\n value,\r\n defaultValue,\r\n note,\r\n onSave,\r\n onSubmit,\r\n successMessage,\r\n errorMessage,\r\n onDeclineWording,\r\n onPrevious,\r\n onNext,\r\n currentPage = 1,\r\n totalPages = 1,\r\n isLoading\r\n}) => {\r\n const variableState = mapStatusToVariableState(status);\r\n const variableReqType = mapRequirementTypeToState(requirementType)\r\n\r\n const [textValue, setTextValue] = useState(value);\r\n const [customValue, setCustomValue] = useState('');\r\n\r\n const [useDefaultValue, setUseDefaultValue] = useState(true);\r\n const [isSaving, setIsSaving] = useState(false);\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n\r\n const theme = useTheme()\r\n\r\n const toDisplay = (str: string) => str?.replace(/\\\\n/g, '\\n') ?? '';\r\n const toStorage = (str: string) => str?.replace(/\\r?\\n/g, '\\\\n') ?? '';\r\n\r\n useEffect(() => {\r\n const displayValue = toDisplay(value);\r\n const displayDefault = toDisplay(defaultValue);\r\n\r\n const isUsingDefault = displayValue === displayDefault;\r\n \r\n setUseDefaultValue(isUsingDefault);\r\n setTextValue(displayValue);\r\n setCustomValue(isUsingDefault ? '' : displayValue);\r\n }, [variableId, value, defaultValue]);\r\n\r\n useEffect(() => {\r\n if (!isOpen) {\r\n setIsSaving(false);\r\n setIsSubmitting(false);\r\n }\r\n }, [isOpen]);\r\n\r\n useEffect(() => {\r\n if (successMessage && successMessage !== '') {\r\n toast.success(successMessage);\r\n }\r\n }, [successMessage]);\r\n \r\n useEffect(() => {\r\n if (errorMessage && errorMessage !== '') {\r\n toast.error(errorMessage);\r\n }\r\n }, [errorMessage]);\r\n \r\n useEffect(() => {\r\n if (!isLoading) {\r\n setIsSaving(false);\r\n setIsSubmitting(false);\r\n }\r\n }, [isLoading]);\r\n\r\n const handleUseDefaultValueChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const checked = event.target.checked;\r\n\r\n if (checked) {\r\n setCustomValue(textValue);\r\n setTextValue(toDisplay(defaultValue));\r\n } else {\r\n setTextValue(customValue || toDisplay(value));\r\n }\r\n\r\n setUseDefaultValue(checked);\r\n };\r\n\r\n\r\n const canSubmitSave = isLoading || variableState === VariableState.Pending\r\n\r\n const statusConfig = {\r\n [VariableState.Pending]: { color: '#EBC7FF', label: 'Pending' },\r\n [VariableState.Draft]: { color: '#4D3019', label: 'Draft' },\r\n [VariableState.Declined]: { color: '#4D3019', label: 'Declined' },\r\n [VariableState.ActionRequired]: { color: '#FFBCB3', label: 'Action Required' },\r\n [VariableState.Accepted]: { color: '#DBF59A', label: 'Accepted' },\r\n [VariableState.NotStarted]: { color: '#000000ff', label: 'Not Started' },\r\n };\r\n\r\n const reqTypeConfig = {\r\n \"Default\": {\r\n color: '#F5A623',\r\n highlight: '#f3bf6bff',\r\n highlightSelected: '#F5A623',\r\n label: 'Mandatory',\r\n },\r\n \"Optional\": {\r\n color: '#F5D76E',\r\n highlight: '#f3e2a5ff',\r\n highlightSelected: '#F5D76E',\r\n label: 'Optional',\r\n },\r\n };\r\n\r\n\r\n const statusStyle = variableState ? statusConfig[variableState] : { color: '#ccc', label: 'Unknown' };;\r\n const requirementTypeStyle = variableReqType ? reqTypeConfig[variableReqType] : { color: '#ccc', label: 'Unknown' };;\r\n\r\n\r\n const handleSave = () => {\r\n setIsSaving(true);\r\n const payloadValue = toStorage(textValue);\r\n onSave?.(payloadValue, useDefaultValue);\r\n };\r\n\r\n\r\n const handleSubmit = () => {\r\n setIsSubmitting(true);\r\n const payloadValue = toStorage(textValue);\r\n onSubmit?.(payloadValue, useDefaultValue);\r\n };\r\n\r\n\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\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\r\n {/* Description */}\r\n <Typography sx={{ mb: 3, lineHeight: 1.6, whiteSpace: 'pre-line' }}>\r\n {parse(description)}\r\n </Typography>\r\n\r\n\r\n {/* Error Alert with Custom Icon */}\r\n {variableState === VariableState.ActionRequired && note && (\r\n <Alert\r\n variant=\"error\"\r\n icon={<InfoOutlineRounded sx={{ fontSize: 20 }} />}\r\n sx={{\r\n mb: 2\r\n }}\r\n >\r\n {note}\r\n </Alert>\r\n )}\r\n\r\n {/* Info Alert with Custom Background and Icon */}\r\n {variableState !== VariableState.ActionRequired && note && (\r\n <Alert\r\n variant=\"info\"\r\n icon={<ArticleRounded sx={{ fontSize: 20, color: theme.palette.text.primary }} />}\r\n sx={{\r\n mb: 2,\r\n backgroundColor: '#00000000',\r\n borderColor: '#acacacff',\r\n color: theme.palette.text.primary,\r\n }}\r\n >\r\n {note}\r\n </Alert>\r\n )}\r\n\r\n\r\n {/* Text Field */}\r\n <TextField\r\n multiline\r\n rows={6}\r\n fullWidth\r\n value={textValue}\r\n onChange={(e) => setTextValue(e.target.value)}\r\n disabled={\r\n useDefaultValue || \r\n canSubmitSave || \r\n variableState === VariableState.Declined\r\n }\r\n sx={{\r\n mb: 2,\r\n '& .MuiOutlinedInput-root': {\r\n backgroundColor: useDefaultValue || canSubmitSave ? 'rgba(0, 0, 0, 0.05)' : '#fff',\r\n borderRadius: 2,\r\n },\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={canSubmitSave || variableState === VariableState.Declined}\r\n onChange={handleUseDefaultValueChange}\r\n sx={{\r\n color: theme.palette.primary.main,\r\n '&.Mui-checked': {\r\n color: theme.palette.primary.main,\r\n },\r\n }}\r\n />\r\n }\r\n label=\"Use Default Wording\"\r\n sx={{ mb: 3 }}\r\n />\r\n\r\n <Box\r\n sx={{\r\n display: 'flex',\r\n flexDirection: { xs: 'column', sm: 'row' },\r\n alignItems: { xs: 'stretch', sm: 'center' },\r\n justifyContent: 'space-between',\r\n gap: 2,\r\n pt: 3,\r\n borderTop: '1px solid',\r\n borderColor: 'divider',\r\n }}\r\n >\r\n {variableState !== VariableState.Declined ? (\r\n <Box sx={{ display: 'flex', gap: 1.5, flexWrap: 'wrap' }}>\r\n {useDefaultValue === false? \r\n (\r\n <Button\r\n onClick={handleSave}\r\n variant=\"outline\"\r\n size=\"md\"\r\n disabled={canSubmitSave}\r\n >\r\n {isSaving ? <><CircularProgress size={20} /><Typography sx={{paddingLeft: 2}}>Saving...</Typography></> : \"Save\"}\r\n </Button>\r\n ) : (<></>)\r\n }\r\n <Button\r\n onClick={handleSubmit}\r\n variant=\"outline\"\r\n size=\"md\"\r\n disabled={canSubmitSave}\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 ? <><CircularProgress size={20} /><Typography sx={{paddingLeft: 2}}>Submitting...</Typography></> : useDefaultValue === false ? \"Submit for review\" : \"Submit\"}\r\n </Button>\r\n {variableReqType === RequirementType.Optional &&\r\n (\r\n <Button onClick={onDeclineWording} variant=\"outline\" size=\"md\" sx={{\r\n backgroundColor: '#ff464652',\r\n '&:hover': {\r\n backgroundColor: '#ff464680', // Darker purple on hover\r\n }\r\n }}\r\n disabled={canSubmitSave}\r\n >\r\n Decline wording\r\n </Button>\r\n )}\r\n </Box>\r\n ) : (\r\n <Box sx={{ display: 'flex', gap: 1.5, flexWrap: 'wrap' }}>\r\n <Button\r\n onClick={() => {\r\n setIsSubmitting(true);\r\n // Pass the default value and true directly to onSubmit\r\n const payloadValue = toStorage(toDisplay(defaultValue));\r\n setCustomValue(textValue);\r\n setTextValue(toDisplay(defaultValue));\r\n setUseDefaultValue(true);\r\n onSubmit?.(payloadValue, true);\r\n }}\r\n variant=\"outline\"\r\n size=\"md\"\r\n disabled={canSubmitSave}\r\n sx={{\r\n backgroundColor: '#ff464652',\r\n '&:hover': {\r\n backgroundColor: '#ff464680',\r\n }\r\n }}\r\n >\r\n {isSubmitting ? (\r\n <>\r\n <CircularProgress size={20} />\r\n <Typography sx={{paddingLeft: 2}}>Restoring...</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 && <NavButton onClick={onPrevious} aria-label=\"Previous\" disabled={isLoading}>\r\n <ArrowBackIosRounded sx={{ fontSize: 20, color: theme.palette.text.primary }}/>\r\n </NavButton>}\r\n {currentPage !== totalPages && <NavButton onClick={onNext} aria-label=\"Next\" disabled={isLoading}>\r\n <ArrowForwardIosRounded sx={{ fontSize: 20, color: theme.palette.text.primary }}/>\r\n </NavButton>}\r\n <Typography fontWeight={500} fontSize=\"1.125rem\">\r\n {currentPage}/{totalPages}\r\n </Typography>\r\n </Box>\r\n </Box>\r\n </DialogContent>\r\n </StyledDialog>\r\n );\r\n};\r\n"],"names":["styled","Dialog","IconButton","mapStatusToVariableState","mapRequirementTypeToState","useState","useTheme","useEffect","toast","VariableState","_jsxs","_jsx","CloseRounded","DialogContent","Box","Chip","Typography","parse","Alert","InfoOutlineRounded","ArticleRounded","TextField","FormControlLabel","Checkbox","Button","_Fragment","CircularProgress","RequirementType","ArrowBackIosRounded","ArrowForwardIosRounded"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('../../../_virtual/index3.js');
3
+ var index = require('../../../_virtual/index4.js');
4
4
  var index$1 = require('../../domelementtype/lib/index.js');
5
5
  var node = require('./node.js');
6
6
 
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('../../../_virtual/index4.js');
3
+ var index = require('../../../_virtual/index3.js');
4
4
  var htmlToDom = require('./server/html-to-dom.js');
5
5
  var types = require('./types.js');
6
6
 
@@ -1,4 +1,4 @@
1
- var cjs = {};
1
+ var lib = {};
2
2
 
3
- export { cjs as __exports };
3
+ export { lib as __exports };
4
4
  //# sourceMappingURL=index8.js.map
@@ -1,4 +1,4 @@
1
- var lib = {};
1
+ var cjs = {};
2
2
 
3
- export { lib as __exports };
3
+ export { cjs as __exports };
4
4
  //# sourceMappingURL=index9.js.map
@@ -232,6 +232,7 @@ const Header = ({ userName = 'John Doe', userInitials = 'JD', toggleMenu, signOu
232
232
  const mobileInputRef = React__default.useRef(null);
233
233
  const [hasInvalidChars, setHasInvalidChars] = React__default.useState(false);
234
234
  const INVALID_CHARS = /[^\p{L}\p{M}\p{N} (),\/\."'\-:;\$]/u;
235
+ const INVALID_CHARS_GLOBAL = new RegExp(INVALID_CHARS.source, 'gu');
235
236
  const [isSearching, setIsSearching] = React__default.useState(false);
236
237
  const headerRef = React__default.useRef(null);
237
238
  const isActive = signUpStatus === 'Active';
@@ -275,15 +276,15 @@ const Header = ({ userName = 'John Doe', userInitials = 'JD', toggleMenu, signOu
275
276
  setIsSearching(false);
276
277
  };
277
278
  const runSearch = async (term) => {
278
- if (!search || INVALID_CHARS.test(term)) { // Display invalid character message if illegal characters
279
+ if (!search) {
279
280
  searchSeqRef.current += 1;
280
281
  setIsSearching(false);
281
282
  setResults([]);
282
- setHasInvalidChars(true);
283
- setOpenDropdown(true);
283
+ setHasInvalidChars(false);
284
+ setOpenDropdown(false);
284
285
  return;
285
286
  }
286
- if (!term.trim()) { // Remove display message if no query is present
287
+ if (!term.trim()) {
287
288
  searchSeqRef.current += 1;
288
289
  setIsSearching(false);
289
290
  setHasInvalidChars(false);
@@ -291,6 +292,15 @@ const Header = ({ userName = 'John Doe', userInitials = 'JD', toggleMenu, signOu
291
292
  setResults([]);
292
293
  return;
293
294
  }
295
+ const sanitized = term.replace(INVALID_CHARS_GLOBAL, '').trim();
296
+ if (!sanitized) {
297
+ searchSeqRef.current += 1;
298
+ setIsSearching(false);
299
+ setResults([]);
300
+ setHasInvalidChars(true);
301
+ setOpenDropdown(true);
302
+ return;
303
+ }
294
304
  setHasInvalidChars(false);
295
305
  const seq = ++searchSeqRef.current;
296
306
  setIsSearching(true);
@@ -1 +1 @@
1
- {"version":3,"file":"Header.js","sources":["../../../../src/components/Header.tsx"],"sourcesContent":["import React from 'react';\r\nimport {\r\n Box,\r\n styled,\r\n Typography,\r\n TextField,\r\n IconButton,\r\n Divider,\r\n Popper,\r\n Paper,\r\n List,\r\n ListItemText,\r\n ListItemButton,\r\n Collapse,\r\n useMediaQuery,\r\n CircularProgress,\r\n InputAdornment,\r\n} from '@mui/material';\r\nimport { ThemeContext, useTheme } from '../ThemeProvider';\r\nimport { MenuRounded, SearchRounded, CloseRounded } from '@mui/icons-material';\r\nimport PopoverMenu from './PopoverMenu';\r\nimport { ReactComponent as ECELogo } from '../images/PrimaryLogo_Variation_Cream_ECEDocs.svg';\r\nimport { ReactComponent as GPLogo } from '../images/PrimaryLogo_Variation_Cream_GPDocs.svg';\r\nimport { ReactComponent as SchoolLogo } from '../images/PrimaryLogo_Variation_Cream_SchoolDocs.svg';\r\n\r\ntype SignUpStatus = 'Withdrawn' | 'Onboarding' | 'Active' | 'In Review';\r\ninterface HeaderProps {\r\n userName?: string;\r\n userInitials?: string;\r\n toggleMenu: () => void;\r\n signOut: () => void;\r\n search?: (query: string) => Promise<HeaderSearchResult[]> | HeaderSearchResult[];\r\n onResultClick?: (result: HeaderSearchResult) => void;\r\n signUpStatus: SignUpStatus;\r\n resetKey?: string | number;\r\n onSearchSubmit?: (query: string) => void;\r\n}\r\n\r\nexport interface HeaderSearchResult {\r\n label: string;\r\n description?: string;\r\n value: string;\r\n}\r\n\r\nconst H_OPEN = \"[[H]]\";\r\nconst H_CLOSE = \"[[/H]]\";\r\n\r\nconst escapeRegExp = (s: string) => s.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\r\n\r\nconst renderHighlightedText = (text: string): React.ReactNode => {\r\n if (!text) return null;\r\n\r\n const tokenRe = new RegExp(\r\n `(${escapeRegExp(H_OPEN)}|${escapeRegExp(H_CLOSE)})`,\r\n \"g\",\r\n );\r\n\r\n const parts = text.split(tokenRe);\r\n\r\n const [nodes] = parts.reduce<[React.ReactNode[], boolean, number]>(\r\n ([out, inHighlight, key], part) => {\r\n if (!part) return [out, inHighlight, key];\r\n\r\n if (part === H_OPEN) return [out, true, key];\r\n if (part === H_CLOSE) return [out, false, key];\r\n\r\n out.push(\r\n inHighlight ? (\r\n <mark\r\n key={key}\r\n style={{\r\n padding: \"0 2px\",\r\n borderRadius: 3,\r\n }}\r\n >\r\n {part}\r\n </mark>\r\n ) : (\r\n <React.Fragment key={key}>{part}</React.Fragment>\r\n ),\r\n );\r\n\r\n return [out, inHighlight, key + 1];\r\n },\r\n [[], false, 0],\r\n );\r\n\r\n return <>{nodes}</>;\r\n};\r\n\r\nfunction renderDescription(desc: string): React.ReactNode {\r\n if (!desc) return null;\r\n\r\n const lines = desc.split(/\\r?\\n/).filter(line => line.trim().length > 0);\r\n\r\n const bulletLines = lines.filter(line => line.trim().startsWith(\"* \"));\r\n const nonBulletLines = lines.filter(line => !line.trim().startsWith(\"* \"));\r\n\r\n return (\r\n <div style={{ fontSize: 14, lineHeight: 1.5 }}>\r\n {nonBulletLines.length > 0 && (\r\n <div style={{ marginBottom: bulletLines.length > 0 ? 6 : 0 }}>\r\n {nonBulletLines.map((line, idx) => (\r\n <React.Fragment key={idx}>\r\n {renderHighlightedText(line)}\r\n {idx < nonBulletLines.length - 1 ? <br /> : null}\r\n </React.Fragment>\r\n ))}\r\n </div>\r\n )}\r\n\r\n {bulletLines.length > 0 && (\r\n <ul style={{ margin: 0, paddingLeft: 18 }}>\r\n {bulletLines.map((line, idx) => {\r\n const bulletText = line.trim().replace(/^\\*\\s*/, \"\");\r\n return <li key={idx}>{renderHighlightedText(bulletText)}</li>;\r\n })}\r\n </ul>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nconst StyledHeader = styled(Box)(({ theme }) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-start',\r\n backgroundColor: theme.palette.primary.main, // var(--color-primary)\r\n [theme.breakpoints.up('md')]: {\r\n gap: theme.spacing(4), // md:gap-4\r\n padding: theme.spacing(1.5, 1.5), // px-4 py-3\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n padding: 0, // px-4 py-3\r\n },\r\n}));\r\n\r\nconst StyledLogoWrapper = styled(Box)(({ theme }) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: theme.spacing(1.5),\r\n gap: theme.spacing(2),\r\n height: '64px', \r\n}));\r\n\r\n\r\nconst StyledLogoIcon = styled(Box)(({ theme }) => ({\r\n width: '100%',\r\n height: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: theme.palette.light.main,\r\n}));\r\n\r\n\r\nconst StyledLogoText = styled(Typography)(({ theme }) => ({\r\n color: theme.palette.light.main, // text-[#FDFCEE]\r\n fontWeight: 700, // font-bold\r\n letterSpacing: '0.05em', // tracking-wide\r\n fontSize: '1.5rem', // text-2xl\r\n [theme.breakpoints.down('md')]: {\r\n fontSize: '1.25rem', // sm:text-xl\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n fontSize: '1.125rem', // text-lg\r\n },\r\n}));\r\n\r\nconst LogoComponent: React.FC = () => {\r\n const themeType = React.useContext(ThemeContext);\r\n \r\n const logoProps = {\r\n style: {\r\n width: '100%',\r\n height: '100%',\r\n display: 'block'\r\n }\r\n };\r\n switch (themeType) {\r\n case 'GP':\r\n return <GPLogo {...logoProps} />;\r\n case 'School':\r\n return <SchoolLogo {...logoProps} />;\r\n case 'ECE':\r\n default:\r\n return <ECELogo {...logoProps} />;\r\n }\r\n};\r\n\r\n\r\nconst StyledSearchContainer = styled(Box)(({ theme }) => ({\r\n flex: 1,\r\n maxWidth: '45rem',\r\n margin: theme.spacing(0, 2), // mx-8\r\n position: 'relative',\r\n}));\r\n\r\nconst StyledTextField = styled(TextField)(({ theme }) => ({\r\n '& .MuiInputBase-root': {\r\n backgroundColor: theme.palette.light.main, // bg-[#FDFCEE]\r\n color: theme.palette.dark.main, // text-[#4D3019]\r\n borderRadius: '9999px', // rounded-full\r\n fontSize: '1rem', // text-base\r\n [theme.breakpoints.down('md')]: {\r\n paddingRight: theme.spacing(5), // sm:pr-10\r\n fontSize: '0.875rem', // text-sm\r\n },\r\n },\r\n '& .MuiInputBase-input': {\r\n padding: theme.spacing(1.5, 3), // px-4 py-2\r\n [theme.breakpoints.up('md')]: {\r\n padding: theme.spacing(1.5, 4), // md:px-6 md:py-3\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n padding: theme.spacing(1.5, 2.5), // sm:px-5\r\n },\r\n },\r\n '& .MuiInputBase-input::placeholder': {\r\n color: `${theme.palette.dark.main}99`, // placeholder-[#4D3019]/60\r\n opacity: 1,\r\n },\r\n '& .MuiInputBase-root:focus-within': {\r\n outline: `2px solid ${theme.palette.light.main}`, // focus:ring-2 focus:ring-[#FDFCEE]\r\n outlineOffset: 0,\r\n },\r\n}));\r\n\r\nconst StyledSearchButton = styled(IconButton)(({ theme }) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n position: 'static',\r\n borderRadius: '50%',\r\n backgroundColor: theme.palette.primary.main,\r\n width: theme.spacing(5),\r\n height: theme.spacing(5),\r\n [theme.breakpoints.down('md')]: {\r\n width: theme.spacing(5),\r\n height: theme.spacing(5),\r\n marginRight: theme.spacing(1),\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n marginRight: theme.spacing(0.5),\r\n },\r\n '&:hover': {\r\n opacity: 0.9,\r\n backgroundColor: theme.palette.primary.main,\r\n },\r\n}));\r\n\r\nconst StyledSearchIcon = styled(Box)(({ theme }) => ({\r\n display: 'flex', \r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: theme.palette.light.main,\r\n width: '100%',\r\n height: '100%',\r\n '& svg': {\r\n fontSize: '1.5rem',\r\n [theme.breakpoints.down('sm')]: {\r\n fontSize: '1.25rem',\r\n },\r\n },\r\n}));\r\n\r\nconst StyledUserContainer = styled(Box)(({ theme }) => ({\r\n marginLeft: 'auto',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: theme.spacing(3), // md:gap-3\r\n [theme.breakpoints.down('md')]: {\r\n gap: 0,\r\n },\r\n}));\r\n\r\nconst StyledAvatar = styled(Box)(({ theme }) => ({\r\n width: theme.spacing(6), // md:w-12\r\n height: theme.spacing(6), // md:h-12\r\n borderRadius: '50%', // rounded-full\r\n backgroundColor: theme.palette.light.main, // bg-[#FDFCEE]\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n flexShrink: 0,\r\n [theme.breakpoints.down('md')]: {\r\n width: theme.spacing(5), // sm:w-10\r\n height: theme.spacing(5), // sm:h-10\r\n }\r\n}));\r\n\r\nconst StyledAvatarText = styled(Typography)(({ theme }) => ({\r\n color: theme.palette.dark.main, // text-[#4D3019]\r\n fontWeight: 700, // font-bold\r\n fontSize: '1.125rem', // text-lg\r\n [theme.breakpoints.down('md')]: {\r\n fontSize: '0.875rem', // text-sm\r\n },\r\n}));\r\n\r\nconst StyledUserName = styled(Typography)(({ theme }) => ({\r\n color: theme.palette.light.main, // text-[#FDFCEE]\r\n fontWeight: 500, // font-medium\r\n marginLeft: theme.spacing(1),\r\n fontSize: '1.125rem', // text-lg\r\n display: 'none', // hidden\r\n [theme.breakpoints.up('sm')]: {\r\n display: 'inline', // sm:inline\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n fontSize: '0.875rem', // text-sm\r\n display: 'none'\r\n },\r\n}));\r\n\r\nexport const Header: React.FC<HeaderProps> = ({\r\n userName = 'John Doe',\r\n userInitials = 'JD',\r\n toggleMenu,\r\n signOut,\r\n search,\r\n onResultClick,\r\n signUpStatus,\r\n resetKey,\r\n onSearchSubmit,\r\n}) => {\r\n const theme = useTheme();\r\n const [anchorEl, setAnchorEl] = React.useState<HTMLButtonElement | null>(null);\r\n const [searchQuery, setSearchQuery] = React.useState('');\r\n const [results, setResults] = React.useState<HeaderSearchResult[]>([]);\r\n const [openDropdown, setOpenDropdown] = React.useState(false);\r\n\r\n const isMdUp = useMediaQuery(theme.breakpoints.up('md'));\r\n \r\n\r\n // Desktop\r\n const desktopInputRef = React.useRef<HTMLInputElement | null>(null);\r\n const desktopFieldRef = React.useRef<HTMLDivElement | null>(null);\r\n\r\n // Mobile\r\n const [mobileSearchOpen, setMobileSearchOpen] = React.useState(false);\r\n const mobileInputRef = React.useRef<HTMLInputElement | null>(null);\r\n\r\n const [hasInvalidChars, setHasInvalidChars] = React.useState(false);\r\n const INVALID_CHARS = /[^\\p{L}\\p{M}\\p{N} (),\\/\\.\"'\\-:;\\$]/u;\r\n\r\n\r\n const [isSearching, setIsSearching] = React.useState(false);\r\n const headerRef = React.useRef<HTMLDivElement | null>(null);\r\n const isActive = signUpStatus === 'Active';\r\n \r\n const clearQueryOnNextResetRef = React.useRef(true);\r\n const closeMobileOnNextResetRef = React.useRef(true);\r\n\r\n\r\n\r\n const searchSeqRef = React.useRef(0);\r\n const debounceRef = React.useRef<number | undefined>(undefined);\r\n\r\n const closeMobileSearch = () => {\r\n\r\n setMobileSearchOpen(false);\r\n if (clearQueryOnNextResetRef.current){\r\n setSearchQuery('');\r\n }\r\n setResults([]);\r\n setOpenDropdown(false);\r\n window.clearTimeout(debounceRef.current);\r\n };\r\n\r\n const toggleMobileSearch = () => {\r\n setMobileSearchOpen(prev => {\r\n const next = !prev;\r\n if (!next) {\r\n // cancelling\r\n closeMobileSearch();\r\n return false;\r\n }\r\n // opening\r\n setTimeout(() => mobileInputRef.current?.focus(), 0);\r\n return true;\r\n });\r\n };\r\n\r\n const handleOpen = (event: React.MouseEvent<HTMLButtonElement>) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const cancelPendingSearch = () => {\r\n window.clearTimeout(debounceRef.current);\r\n debounceRef.current = undefined;\r\n\r\n // Invalidate any in-flight runSearch so it won't set dropdown/results later\r\n searchSeqRef.current += 1;\r\n\r\n setIsSearching(false);\r\n };\r\n\r\n const runSearch = async (term: string) => {\r\n if (!search || INVALID_CHARS.test(term)) { // Display invalid character message if illegal characters\r\n searchSeqRef.current += 1;\r\n setIsSearching(false);\r\n setResults([]);\r\n setHasInvalidChars(true);\r\n setOpenDropdown(true);\r\n return;\r\n }\r\n if (!term.trim()) { // Remove display message if no query is present\r\n searchSeqRef.current += 1;\r\n setIsSearching(false);\r\n setHasInvalidChars(false);\r\n setOpenDropdown(false);\r\n setResults([])\r\n return;\r\n }\r\n setHasInvalidChars(false);\r\n\r\n const seq = ++searchSeqRef.current;\r\n setIsSearching(true);\r\n try {\r\n const res = await Promise.resolve(search(term.trim()));\r\n\r\n if (seq !== searchSeqRef.current) return; // Fixes debounce race condition causing old searches to appear after newer\r\n\r\n const list = Array.isArray(res) ? res : [];\r\n setResults(list);\r\n setOpenDropdown(true); // display dropdown no matter what, if no results will display no results message\r\n } finally {\r\n if (seq === searchSeqRef.current) setIsSearching(false);\r\n }\r\n };\r\n\r\n const handleSearchChange = (value: string) => {\r\n setSearchQuery(value);\r\n window.clearTimeout(debounceRef.current);\r\n\r\n debounceRef.current = window.setTimeout(() => runSearch(value), 150);\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n if (e.key !== 'Enter') return;\r\n \r\n e.preventDefault();\r\n\r\n const term = searchQuery.trim();\r\n if (!term) return;\r\n\r\n if (INVALID_CHARS.test(term)) { \r\n console.log(term);\r\n runSearch(term);\r\n return;\r\n }\r\n\r\n cancelPendingSearch();\r\n \r\n setOpenDropdown(false);\r\n setResults([]);\r\n setHasInvalidChars(false);\r\n \r\n onSearchSubmit?.(term);\r\n };\r\n\r\n const handleSearchClick: React.MouseEventHandler<HTMLButtonElement> = (e) => {\r\n e.preventDefault();\r\n\r\n const term = searchQuery.trim();\r\n if (!term) {\r\n runSearch('');\r\n return;\r\n }\r\n\r\n if (INVALID_CHARS.test(term)) { \r\n runSearch(term);\r\n return;\r\n }\r\n\r\n cancelPendingSearch();\r\n\r\n setOpenDropdown(false);\r\n setResults([]);\r\n setHasInvalidChars(false);\r\n \r\n onSearchSubmit?.(term);\r\n }\r\n\r\n React.useEffect(() => {\r\n const clearQuery = clearQueryOnNextResetRef.current;\r\n const closeMobile = closeMobileOnNextResetRef.current;\r\n\r\n if (closeMobile) {\r\n // sidebar/normal navigation\r\n closeMobileSearch();\r\n } else {\r\n // navigation from clicking a search result: keep mobile panel open\r\n if (clearQuery) setSearchQuery('');\r\n setResults([]);\r\n setOpenDropdown(false);\r\n window.clearTimeout(debounceRef.current);\r\n }\r\n\r\n // reset defaults for next navigation\r\n clearQueryOnNextResetRef.current = true;\r\n closeMobileOnNextResetRef.current = true;\r\n }, [resetKey]);\r\n\r\n React.useEffect(() => {\r\n const handler = (e: MouseEvent) => {\r\n const t = e.target as Node;\r\n\r\n const inDesktop = desktopInputRef.current?.parentElement?.contains(t);\r\n const inMobile = mobileInputRef.current?.parentElement?.contains(t);\r\n\r\n if (!inDesktop && !inMobile) {\r\n setOpenDropdown(false);\r\n }\r\n };\r\n\r\n document.addEventListener('click', handler);\r\n return () => document.removeEventListener('click', handler);\r\n }, []);\r\n\r\n type ResultsMode = 'desktop' | 'mobile';\r\n\r\n const DropdownResults = ({\r\n mode,\r\n }: {\r\n mode: ResultsMode;\r\n }) => {\r\n const isDesktop = mode === 'desktop';\r\n return (\r\n <Box>\r\n {!isSearching && hasInvalidChars ? (\r\n <Paper\r\n elevation={0}\r\n sx={{\r\n mt: 1,\r\n border: '1px solid #4D3019',\r\n boxShadow: 'none',\r\n backgroundColor: theme.palette.background.paper,\r\n borderRadius: isDesktop ? '12px' : 0,\r\n px: 2,\r\n py: 1.5,\r\n }}\r\n >\r\n <Typography sx={{ fontSize: '14px', color: theme.palette.text.primary }}>\r\n Oops — your search includes symbols we don’t support yet. Please remove special characters (like %, @, #, =) and try again.\r\n </Typography>\r\n </Paper>\r\n ) : !isSearching && results.length === 0 ? (\r\n <Paper\r\n elevation={0}\r\n sx={{\r\n mt: 1,\r\n border: `1px solid ${theme.palette.text.primary}`,\r\n boxShadow: 'none',\r\n backgroundColor: theme.palette.background.paper,\r\n borderRadius: isDesktop ? '12px' : 0,\r\n px: 2,\r\n py: 1.5,\r\n }}\r\n >\r\n <Typography sx={{ fontSize: '14px', color: theme.palette.text.primary }}>\r\n No results found\r\n </Typography>\r\n </Paper>\r\n ) : (\r\n <ResultsList\r\n mode={mode}\r\n items={results}\r\n onPick={(item) => {\r\n clearQueryOnNextResetRef.current = false; // keep text\r\n closeMobileOnNextResetRef.current = false; // keep mobile panel open\r\n\r\n setOpenDropdown(false);\r\n setResults([]);\r\n\r\n onResultClick?.(item);\r\n }}\r\n />\r\n )}\r\n </Box>\r\n );\r\n};\r\n\r\n\r\n const ResultsList = ({\r\n items,\r\n mode,\r\n paperRef,\r\n onPick,\r\n }: {\r\n items: HeaderSearchResult[];\r\n mode: ResultsMode;\r\n paperRef?: React.Ref<HTMLDivElement>;\r\n onPick: (item: HeaderSearchResult) => void;\r\n }) => {\r\n const isDesktop = mode === 'desktop';\r\n const displayedResults = mode == 'desktop' ? items.slice(0, 5) : items.slice(0, 3);\r\n return (\r\n <Paper\r\n ref={paperRef}\r\n elevation={0}\r\n \r\n sx={{\r\n mt: 1,\r\n border: `1px solid ${theme.palette.text.primary}`,\r\n boxShadow: 'none',\r\n backgroundColor: theme.palette.background.paper,\r\n\r\n ...(isDesktop\r\n ? {\r\n maxHeight: 'auto',\r\n borderRadius: '12px',\r\n overflowX: 'hidden',\r\n overflowY: 'hidden',\r\n }\r\n : {\r\n overflow: 'hidden', // no scroll, no scrollbar\r\n pb: 0,\r\n }),\r\n }}\r\n >\r\n <List dense disablePadding>\r\n {displayedResults.map((item, index) => (\r\n <ListItemButton\r\n key={index}\r\n alignItems=\"flex-start\"\r\n onClick={() => onPick(item)}\r\n sx={{\r\n py: 1.5,\r\n px: 2,\r\n backgroundColor: theme.palette.background.paper,\r\n borderBottom:\r\n index === displayedResults.length - 1\r\n ? 'none'\r\n : '1px solid rgba(77,48,25,0.18)',\r\n '&:hover': { backgroundColor: theme.palette.custom.readByBackgroundColor },\r\n '&:hover .search-result-title': {\r\n textDecoration: 'underline',\r\n color: theme.palette.primary.main,\r\n },\r\n }}\r\n >\r\n <ListItemText\r\n primary={item.label}\r\n secondary={renderDescription(item.description!)}\r\n primaryTypographyProps={{\r\n className: 'search-result-title',\r\n fontWeight: 700,\r\n fontSize: '16px',\r\n color: theme.palette.text.primary,\r\n }}\r\n secondaryTypographyProps={{ component: 'div', mt: 1 }}\r\n />\r\n </ListItemButton>\r\n ))}\r\n </List>\r\n </Paper>\r\n );\r\n };\r\n\r\n\r\n return (\r\n <Box>\r\n <StyledHeader ref={headerRef}>\r\n {isActive && (\r\n <>\r\n <IconButton\r\n disableRipple\r\n onClick={toggleMenu}\r\n sx={{ display: { xs: 'block', md: 'none' } }}\r\n size=\"large\"\r\n >\r\n <MenuRounded sx={{ fontSize: 32, color: 'white' }} />\r\n </IconButton>\r\n\r\n <Divider\r\n orientation=\"vertical\"\r\n sx={{\r\n color: '#FFFFFF',\r\n borderRightWidth: 2,\r\n display: { xs: 'block', md: 'none' },\r\n }}\r\n />\r\n </>\r\n )}\r\n\r\n <StyledLogoWrapper>\r\n <StyledLogoIcon>\r\n <LogoComponent />\r\n </StyledLogoIcon>\r\n </StyledLogoWrapper>\r\n\r\n {/* Desktop search only */}\r\n {isActive && isMdUp && (\r\n <StyledSearchContainer>\r\n <StyledTextField\r\n placeholder=\"Search for a policy\"\r\n variant=\"outlined\"\r\n fullWidth\r\n value={searchQuery}\r\n inputRef={desktopInputRef}\r\n ref={desktopFieldRef}\r\n onChange={(e) => handleSearchChange(e.target.value)}\r\n onKeyDown={handleKeyDown}\r\n InputProps={{\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Box sx = {{ mr: 1}}>\r\n {isSearching ? <CircularProgress size={24} /> : null} \r\n </Box>\r\n <StyledSearchButton onClick={handleSearchClick}>\r\n <StyledSearchIcon>\r\n <SearchRounded />\r\n </StyledSearchIcon>\r\n </StyledSearchButton>\r\n </InputAdornment>\r\n ),\r\n }}\r\n />\r\n\r\n <Popper\r\n open={openDropdown && !!desktopFieldRef.current}\r\n anchorEl={desktopFieldRef.current}\r\n placement=\"bottom-start\"\r\n style={{ zIndex: 1300, width: desktopFieldRef.current?.offsetWidth }}\r\n >\r\n <DropdownResults mode=\"desktop\"/>\r\n </Popper>\r\n </StyledSearchContainer>\r\n )}\r\n\r\n <StyledUserContainer>\r\n {/* Mobile search button only */}\r\n {isActive && !isMdUp && (\r\n <StyledSearchButton\r\n disableRipple\r\n onClick={toggleMobileSearch}\r\n sx={{\r\n display: { xs: 'flex', md: 'none' },\r\n backgroundColor: '#ffffff83',\r\n }}\r\n >\r\n <StyledSearchIcon>\r\n <SearchRounded />\r\n </StyledSearchIcon>\r\n </StyledSearchButton>\r\n )}\r\n\r\n <IconButton onClick={handleOpen} disableRipple>\r\n <StyledAvatar>\r\n <StyledAvatarText>{userInitials}</StyledAvatarText>\r\n </StyledAvatar>\r\n <StyledUserName>{userName}</StyledUserName>\r\n </IconButton>\r\n </StyledUserContainer>\r\n\r\n <PopoverMenu\r\n anchorEl={anchorEl}\r\n onClose={handleClose}\r\n signOut={() => {\r\n signOut();\r\n handleClose()\r\n }}\r\n />\r\n </StyledHeader>\r\n\r\n {/* Mobile panel only */}\r\n {!isMdUp && (\r\n <Collapse in={isActive && mobileSearchOpen} unmountOnExit timeout={200}>\r\n <Box\r\n sx={{\r\n display: { xs: 'block', md: 'none' },\r\n backgroundColor: theme.palette.primary.main,\r\n px: 2,\r\n pt: 1.5,\r\n pb: 2,\r\n }}\r\n >\r\n <Box sx={{ display: 'flex', gap: 1, alignItems: 'center' }}>\r\n <StyledTextField\r\n placeholder=\"Search for a policy\"\r\n variant=\"outlined\"\r\n fullWidth\r\n value={searchQuery}\r\n inputRef={mobileInputRef}\r\n onChange={(e) => handleSearchChange(e.target.value)}\r\n onKeyDown={handleKeyDown}\r\n InputProps={{\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n {isSearching ? <CircularProgress size={18} /> : null}\r\n </InputAdornment>\r\n )\r\n }}\r\n />\r\n\r\n <IconButton onClick={closeMobileSearch} sx={{ color: theme.palette.light.main }}>\r\n <CloseRounded />\r\n </IconButton>\r\n </Box>\r\n {openDropdown && (\r\n <Box sx={{ mx: -2 }}>\r\n <DropdownResults mode=\"mobile\"/>\r\n </Box>\r\n )}\r\n </Box>\r\n </Collapse>\r\n )}\r\n </Box>\r\n );\r\n};"],"names":["_jsx","React","_Fragment","_jsxs","GPLogo","SchoolLogo","ECELogo"],"mappings":"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"}
1
+ {"version":3,"file":"Header.js","sources":["../../../../src/components/Header.tsx"],"sourcesContent":["import React from 'react';\r\nimport {\r\n Box,\r\n styled,\r\n Typography,\r\n TextField,\r\n IconButton,\r\n Divider,\r\n Popper,\r\n Paper,\r\n List,\r\n ListItemText,\r\n ListItemButton,\r\n Collapse,\r\n useMediaQuery,\r\n CircularProgress,\r\n InputAdornment,\r\n} from '@mui/material';\r\nimport { ThemeContext, useTheme } from '../ThemeProvider';\r\nimport { MenuRounded, SearchRounded, CloseRounded } from '@mui/icons-material';\r\nimport PopoverMenu from './PopoverMenu';\r\nimport { ReactComponent as ECELogo } from '../images/PrimaryLogo_Variation_Cream_ECEDocs.svg';\r\nimport { ReactComponent as GPLogo } from '../images/PrimaryLogo_Variation_Cream_GPDocs.svg';\r\nimport { ReactComponent as SchoolLogo } from '../images/PrimaryLogo_Variation_Cream_SchoolDocs.svg';\r\n\r\ntype SignUpStatus = 'Withdrawn' | 'Onboarding' | 'Active' | 'In Review';\r\ninterface HeaderProps {\r\n userName?: string;\r\n userInitials?: string;\r\n toggleMenu: () => void;\r\n signOut: () => void;\r\n search?: (query: string) => Promise<HeaderSearchResult[]> | HeaderSearchResult[];\r\n onResultClick?: (result: HeaderSearchResult) => void;\r\n signUpStatus: SignUpStatus;\r\n resetKey?: string | number;\r\n onSearchSubmit?: (query: string) => void;\r\n}\r\n\r\nexport interface HeaderSearchResult {\r\n label: string;\r\n description?: string;\r\n value: string;\r\n}\r\n\r\nconst H_OPEN = \"[[H]]\";\r\nconst H_CLOSE = \"[[/H]]\";\r\n\r\nconst escapeRegExp = (s: string) => s.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\r\n\r\nconst renderHighlightedText = (text: string): React.ReactNode => {\r\n if (!text) return null;\r\n\r\n const tokenRe = new RegExp(\r\n `(${escapeRegExp(H_OPEN)}|${escapeRegExp(H_CLOSE)})`,\r\n \"g\",\r\n );\r\n\r\n const parts = text.split(tokenRe);\r\n\r\n const [nodes] = parts.reduce<[React.ReactNode[], boolean, number]>(\r\n ([out, inHighlight, key], part) => {\r\n if (!part) return [out, inHighlight, key];\r\n\r\n if (part === H_OPEN) return [out, true, key];\r\n if (part === H_CLOSE) return [out, false, key];\r\n\r\n out.push(\r\n inHighlight ? (\r\n <mark\r\n key={key}\r\n style={{\r\n padding: \"0 2px\",\r\n borderRadius: 3,\r\n }}\r\n >\r\n {part}\r\n </mark>\r\n ) : (\r\n <React.Fragment key={key}>{part}</React.Fragment>\r\n ),\r\n );\r\n\r\n return [out, inHighlight, key + 1];\r\n },\r\n [[], false, 0],\r\n );\r\n\r\n return <>{nodes}</>;\r\n};\r\n\r\nfunction renderDescription(desc: string): React.ReactNode {\r\n if (!desc) return null;\r\n\r\n const lines = desc.split(/\\r?\\n/).filter(line => line.trim().length > 0);\r\n\r\n const bulletLines = lines.filter(line => line.trim().startsWith(\"* \"));\r\n const nonBulletLines = lines.filter(line => !line.trim().startsWith(\"* \"));\r\n\r\n return (\r\n <div style={{ fontSize: 14, lineHeight: 1.5 }}>\r\n {nonBulletLines.length > 0 && (\r\n <div style={{ marginBottom: bulletLines.length > 0 ? 6 : 0 }}>\r\n {nonBulletLines.map((line, idx) => (\r\n <React.Fragment key={idx}>\r\n {renderHighlightedText(line)}\r\n {idx < nonBulletLines.length - 1 ? <br /> : null}\r\n </React.Fragment>\r\n ))}\r\n </div>\r\n )}\r\n\r\n {bulletLines.length > 0 && (\r\n <ul style={{ margin: 0, paddingLeft: 18 }}>\r\n {bulletLines.map((line, idx) => {\r\n const bulletText = line.trim().replace(/^\\*\\s*/, \"\");\r\n return <li key={idx}>{renderHighlightedText(bulletText)}</li>;\r\n })}\r\n </ul>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nconst StyledHeader = styled(Box)(({ theme }) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-start',\r\n backgroundColor: theme.palette.primary.main, // var(--color-primary)\r\n [theme.breakpoints.up('md')]: {\r\n gap: theme.spacing(4), // md:gap-4\r\n padding: theme.spacing(1.5, 1.5), // px-4 py-3\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n padding: 0, // px-4 py-3\r\n },\r\n}));\r\n\r\nconst StyledLogoWrapper = styled(Box)(({ theme }) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: theme.spacing(1.5),\r\n gap: theme.spacing(2),\r\n height: '64px', \r\n}));\r\n\r\n\r\nconst StyledLogoIcon = styled(Box)(({ theme }) => ({\r\n width: '100%',\r\n height: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: theme.palette.light.main,\r\n}));\r\n\r\n\r\nconst StyledLogoText = styled(Typography)(({ theme }) => ({\r\n color: theme.palette.light.main, // text-[#FDFCEE]\r\n fontWeight: 700, // font-bold\r\n letterSpacing: '0.05em', // tracking-wide\r\n fontSize: '1.5rem', // text-2xl\r\n [theme.breakpoints.down('md')]: {\r\n fontSize: '1.25rem', // sm:text-xl\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n fontSize: '1.125rem', // text-lg\r\n },\r\n}));\r\n\r\nconst LogoComponent: React.FC = () => {\r\n const themeType = React.useContext(ThemeContext);\r\n \r\n const logoProps = {\r\n style: {\r\n width: '100%',\r\n height: '100%',\r\n display: 'block'\r\n }\r\n };\r\n switch (themeType) {\r\n case 'GP':\r\n return <GPLogo {...logoProps} />;\r\n case 'School':\r\n return <SchoolLogo {...logoProps} />;\r\n case 'ECE':\r\n default:\r\n return <ECELogo {...logoProps} />;\r\n }\r\n};\r\n\r\n\r\nconst StyledSearchContainer = styled(Box)(({ theme }) => ({\r\n flex: 1,\r\n maxWidth: '45rem',\r\n margin: theme.spacing(0, 2), // mx-8\r\n position: 'relative',\r\n}));\r\n\r\nconst StyledTextField = styled(TextField)(({ theme }) => ({\r\n '& .MuiInputBase-root': {\r\n backgroundColor: theme.palette.light.main, // bg-[#FDFCEE]\r\n color: theme.palette.dark.main, // text-[#4D3019]\r\n borderRadius: '9999px', // rounded-full\r\n fontSize: '1rem', // text-base\r\n [theme.breakpoints.down('md')]: {\r\n paddingRight: theme.spacing(5), // sm:pr-10\r\n fontSize: '0.875rem', // text-sm\r\n },\r\n },\r\n '& .MuiInputBase-input': {\r\n padding: theme.spacing(1.5, 3), // px-4 py-2\r\n [theme.breakpoints.up('md')]: {\r\n padding: theme.spacing(1.5, 4), // md:px-6 md:py-3\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n padding: theme.spacing(1.5, 2.5), // sm:px-5\r\n },\r\n },\r\n '& .MuiInputBase-input::placeholder': {\r\n color: `${theme.palette.dark.main}99`, // placeholder-[#4D3019]/60\r\n opacity: 1,\r\n },\r\n '& .MuiInputBase-root:focus-within': {\r\n outline: `2px solid ${theme.palette.light.main}`, // focus:ring-2 focus:ring-[#FDFCEE]\r\n outlineOffset: 0,\r\n },\r\n}));\r\n\r\nconst StyledSearchButton = styled(IconButton)(({ theme }) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n position: 'static',\r\n borderRadius: '50%',\r\n backgroundColor: theme.palette.primary.main,\r\n width: theme.spacing(5),\r\n height: theme.spacing(5),\r\n [theme.breakpoints.down('md')]: {\r\n width: theme.spacing(5),\r\n height: theme.spacing(5),\r\n marginRight: theme.spacing(1),\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n marginRight: theme.spacing(0.5),\r\n },\r\n '&:hover': {\r\n opacity: 0.9,\r\n backgroundColor: theme.palette.primary.main,\r\n },\r\n}));\r\n\r\nconst StyledSearchIcon = styled(Box)(({ theme }) => ({\r\n display: 'flex', \r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: theme.palette.light.main,\r\n width: '100%',\r\n height: '100%',\r\n '& svg': {\r\n fontSize: '1.5rem',\r\n [theme.breakpoints.down('sm')]: {\r\n fontSize: '1.25rem',\r\n },\r\n },\r\n}));\r\n\r\nconst StyledUserContainer = styled(Box)(({ theme }) => ({\r\n marginLeft: 'auto',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: theme.spacing(3), // md:gap-3\r\n [theme.breakpoints.down('md')]: {\r\n gap: 0,\r\n },\r\n}));\r\n\r\nconst StyledAvatar = styled(Box)(({ theme }) => ({\r\n width: theme.spacing(6), // md:w-12\r\n height: theme.spacing(6), // md:h-12\r\n borderRadius: '50%', // rounded-full\r\n backgroundColor: theme.palette.light.main, // bg-[#FDFCEE]\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n flexShrink: 0,\r\n [theme.breakpoints.down('md')]: {\r\n width: theme.spacing(5), // sm:w-10\r\n height: theme.spacing(5), // sm:h-10\r\n }\r\n}));\r\n\r\nconst StyledAvatarText = styled(Typography)(({ theme }) => ({\r\n color: theme.palette.dark.main, // text-[#4D3019]\r\n fontWeight: 700, // font-bold\r\n fontSize: '1.125rem', // text-lg\r\n [theme.breakpoints.down('md')]: {\r\n fontSize: '0.875rem', // text-sm\r\n },\r\n}));\r\n\r\nconst StyledUserName = styled(Typography)(({ theme }) => ({\r\n color: theme.palette.light.main, // text-[#FDFCEE]\r\n fontWeight: 500, // font-medium\r\n marginLeft: theme.spacing(1),\r\n fontSize: '1.125rem', // text-lg\r\n display: 'none', // hidden\r\n [theme.breakpoints.up('sm')]: {\r\n display: 'inline', // sm:inline\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n fontSize: '0.875rem', // text-sm\r\n display: 'none'\r\n },\r\n}));\r\n\r\nexport const Header: React.FC<HeaderProps> = ({\r\n userName = 'John Doe',\r\n userInitials = 'JD',\r\n toggleMenu,\r\n signOut,\r\n search,\r\n onResultClick,\r\n signUpStatus,\r\n resetKey,\r\n onSearchSubmit,\r\n}) => {\r\n const theme = useTheme();\r\n const [anchorEl, setAnchorEl] = React.useState<HTMLButtonElement | null>(null);\r\n const [searchQuery, setSearchQuery] = React.useState('');\r\n const [results, setResults] = React.useState<HeaderSearchResult[]>([]);\r\n const [openDropdown, setOpenDropdown] = React.useState(false);\r\n\r\n const isMdUp = useMediaQuery(theme.breakpoints.up('md'));\r\n \r\n\r\n // Desktop\r\n const desktopInputRef = React.useRef<HTMLInputElement | null>(null);\r\n const desktopFieldRef = React.useRef<HTMLDivElement | null>(null);\r\n\r\n // Mobile\r\n const [mobileSearchOpen, setMobileSearchOpen] = React.useState(false);\r\n const mobileInputRef = React.useRef<HTMLInputElement | null>(null);\r\n\r\n const [hasInvalidChars, setHasInvalidChars] = React.useState(false);\r\n const INVALID_CHARS = /[^\\p{L}\\p{M}\\p{N} (),\\/\\.\"'\\-:;\\$]/u;\r\n const INVALID_CHARS_GLOBAL = new RegExp(INVALID_CHARS.source, 'gu');\r\n\r\n const [isSearching, setIsSearching] = React.useState(false);\r\n const headerRef = React.useRef<HTMLDivElement | null>(null);\r\n const isActive = signUpStatus === 'Active';\r\n \r\n const clearQueryOnNextResetRef = React.useRef(true);\r\n const closeMobileOnNextResetRef = React.useRef(true);\r\n\r\n\r\n\r\n const searchSeqRef = React.useRef(0);\r\n const debounceRef = React.useRef<number | undefined>(undefined);\r\n\r\n const closeMobileSearch = () => {\r\n\r\n setMobileSearchOpen(false);\r\n if (clearQueryOnNextResetRef.current){\r\n setSearchQuery('');\r\n }\r\n setResults([]);\r\n setOpenDropdown(false);\r\n window.clearTimeout(debounceRef.current);\r\n };\r\n\r\n const toggleMobileSearch = () => {\r\n setMobileSearchOpen(prev => {\r\n const next = !prev;\r\n if (!next) {\r\n // cancelling\r\n closeMobileSearch();\r\n return false;\r\n }\r\n // opening\r\n setTimeout(() => mobileInputRef.current?.focus(), 0);\r\n return true;\r\n });\r\n };\r\n\r\n const handleOpen = (event: React.MouseEvent<HTMLButtonElement>) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const cancelPendingSearch = () => {\r\n window.clearTimeout(debounceRef.current);\r\n debounceRef.current = undefined;\r\n\r\n // Invalidate any in-flight runSearch so it won't set dropdown/results later\r\n searchSeqRef.current += 1;\r\n\r\n setIsSearching(false);\r\n };\r\n\r\n const runSearch = async (term: string) => {\r\n if (!search) {\r\n searchSeqRef.current += 1;\r\n setIsSearching(false);\r\n setResults([]);\r\n setHasInvalidChars(false);\r\n setOpenDropdown(false);\r\n return;\r\n }\r\n if (!term.trim()) {\r\n searchSeqRef.current += 1;\r\n setIsSearching(false);\r\n setHasInvalidChars(false);\r\n setOpenDropdown(false);\r\n setResults([]);\r\n return;\r\n }\r\n const sanitized = term.replace(INVALID_CHARS_GLOBAL, '').trim();\r\n\r\n if (!sanitized) {\r\n searchSeqRef.current += 1;\r\n setIsSearching(false);\r\n setResults([]);\r\n setHasInvalidChars(true);\r\n setOpenDropdown(true);\r\n return;\r\n }\r\n \r\n setHasInvalidChars(false);\r\n\r\n const seq = ++searchSeqRef.current;\r\n setIsSearching(true);\r\n try {\r\n const res = await Promise.resolve(search(term.trim()));\r\n\r\n if (seq !== searchSeqRef.current) return; // Fixes debounce race condition causing old searches to appear after newer\r\n\r\n const list = Array.isArray(res) ? res : [];\r\n setResults(list);\r\n setOpenDropdown(true); // display dropdown no matter what, if no results will display no results message\r\n } finally {\r\n if (seq === searchSeqRef.current) setIsSearching(false);\r\n }\r\n };\r\n\r\n const handleSearchChange = (value: string) => {\r\n setSearchQuery(value);\r\n window.clearTimeout(debounceRef.current);\r\n\r\n debounceRef.current = window.setTimeout(() => runSearch(value), 150);\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n if (e.key !== 'Enter') return;\r\n \r\n e.preventDefault();\r\n\r\n const term = searchQuery.trim();\r\n if (!term) return;\r\n\r\n if (INVALID_CHARS.test(term)) { \r\n console.log(term);\r\n runSearch(term);\r\n return;\r\n }\r\n\r\n cancelPendingSearch();\r\n \r\n setOpenDropdown(false);\r\n setResults([]);\r\n setHasInvalidChars(false);\r\n \r\n onSearchSubmit?.(term);\r\n };\r\n\r\n const handleSearchClick: React.MouseEventHandler<HTMLButtonElement> = (e) => {\r\n e.preventDefault();\r\n\r\n const term = searchQuery.trim();\r\n if (!term) {\r\n runSearch('');\r\n return;\r\n }\r\n\r\n if (INVALID_CHARS.test(term)) { \r\n runSearch(term);\r\n return;\r\n }\r\n\r\n cancelPendingSearch();\r\n\r\n setOpenDropdown(false);\r\n setResults([]);\r\n setHasInvalidChars(false);\r\n \r\n onSearchSubmit?.(term);\r\n }\r\n\r\n React.useEffect(() => {\r\n const clearQuery = clearQueryOnNextResetRef.current;\r\n const closeMobile = closeMobileOnNextResetRef.current;\r\n\r\n if (closeMobile) {\r\n // sidebar/normal navigation\r\n closeMobileSearch();\r\n } else {\r\n // navigation from clicking a search result: keep mobile panel open\r\n if (clearQuery) setSearchQuery('');\r\n setResults([]);\r\n setOpenDropdown(false);\r\n window.clearTimeout(debounceRef.current);\r\n }\r\n\r\n // reset defaults for next navigation\r\n clearQueryOnNextResetRef.current = true;\r\n closeMobileOnNextResetRef.current = true;\r\n }, [resetKey]);\r\n\r\n React.useEffect(() => {\r\n const handler = (e: MouseEvent) => {\r\n const t = e.target as Node;\r\n\r\n const inDesktop = desktopInputRef.current?.parentElement?.contains(t);\r\n const inMobile = mobileInputRef.current?.parentElement?.contains(t);\r\n\r\n if (!inDesktop && !inMobile) {\r\n setOpenDropdown(false);\r\n }\r\n };\r\n\r\n document.addEventListener('click', handler);\r\n return () => document.removeEventListener('click', handler);\r\n }, []);\r\n\r\n type ResultsMode = 'desktop' | 'mobile';\r\n\r\n const DropdownResults = ({\r\n mode,\r\n }: {\r\n mode: ResultsMode;\r\n }) => {\r\n const isDesktop = mode === 'desktop';\r\n return (\r\n <Box>\r\n {!isSearching && hasInvalidChars ? (\r\n <Paper\r\n elevation={0}\r\n sx={{\r\n mt: 1,\r\n border: '1px solid #4D3019',\r\n boxShadow: 'none',\r\n backgroundColor: theme.palette.background.paper,\r\n borderRadius: isDesktop ? '12px' : 0,\r\n px: 2,\r\n py: 1.5,\r\n }}\r\n >\r\n <Typography sx={{ fontSize: '14px', color: theme.palette.text.primary }}>\r\n Oops — your search includes symbols we don’t support yet. Please remove special characters (like %, @, #, =) and try again.\r\n </Typography>\r\n </Paper>\r\n ) : !isSearching && results.length === 0 ? (\r\n <Paper\r\n elevation={0}\r\n sx={{\r\n mt: 1,\r\n border: `1px solid ${theme.palette.text.primary}`,\r\n boxShadow: 'none',\r\n backgroundColor: theme.palette.background.paper,\r\n borderRadius: isDesktop ? '12px' : 0,\r\n px: 2,\r\n py: 1.5,\r\n }}\r\n >\r\n <Typography sx={{ fontSize: '14px', color: theme.palette.text.primary }}>\r\n No results found\r\n </Typography>\r\n </Paper>\r\n ) : (\r\n <ResultsList\r\n mode={mode}\r\n items={results}\r\n onPick={(item) => {\r\n clearQueryOnNextResetRef.current = false; // keep text\r\n closeMobileOnNextResetRef.current = false; // keep mobile panel open\r\n\r\n setOpenDropdown(false);\r\n setResults([]);\r\n\r\n onResultClick?.(item);\r\n }}\r\n />\r\n )}\r\n </Box>\r\n );\r\n};\r\n\r\n\r\n const ResultsList = ({\r\n items,\r\n mode,\r\n paperRef,\r\n onPick,\r\n }: {\r\n items: HeaderSearchResult[];\r\n mode: ResultsMode;\r\n paperRef?: React.Ref<HTMLDivElement>;\r\n onPick: (item: HeaderSearchResult) => void;\r\n }) => {\r\n const isDesktop = mode === 'desktop';\r\n const displayedResults = mode == 'desktop' ? items.slice(0, 5) : items.slice(0, 3);\r\n return (\r\n <Paper\r\n ref={paperRef}\r\n elevation={0}\r\n \r\n sx={{\r\n mt: 1,\r\n border: `1px solid ${theme.palette.text.primary}`,\r\n boxShadow: 'none',\r\n backgroundColor: theme.palette.background.paper,\r\n\r\n ...(isDesktop\r\n ? {\r\n maxHeight: 'auto',\r\n borderRadius: '12px',\r\n overflowX: 'hidden',\r\n overflowY: 'hidden',\r\n }\r\n : {\r\n overflow: 'hidden', // no scroll, no scrollbar\r\n pb: 0,\r\n }),\r\n }}\r\n >\r\n <List dense disablePadding>\r\n {displayedResults.map((item, index) => (\r\n <ListItemButton\r\n key={index}\r\n alignItems=\"flex-start\"\r\n onClick={() => onPick(item)}\r\n sx={{\r\n py: 1.5,\r\n px: 2,\r\n backgroundColor: theme.palette.background.paper,\r\n borderBottom:\r\n index === displayedResults.length - 1\r\n ? 'none'\r\n : '1px solid rgba(77,48,25,0.18)',\r\n '&:hover': { backgroundColor: theme.palette.custom.readByBackgroundColor },\r\n '&:hover .search-result-title': {\r\n textDecoration: 'underline',\r\n color: theme.palette.primary.main,\r\n },\r\n }}\r\n >\r\n <ListItemText\r\n primary={item.label}\r\n secondary={renderDescription(item.description!)}\r\n primaryTypographyProps={{\r\n className: 'search-result-title',\r\n fontWeight: 700,\r\n fontSize: '16px',\r\n color: theme.palette.text.primary,\r\n }}\r\n secondaryTypographyProps={{ component: 'div', mt: 1 }}\r\n />\r\n </ListItemButton>\r\n ))}\r\n </List>\r\n </Paper>\r\n );\r\n };\r\n\r\n\r\n return (\r\n <Box>\r\n <StyledHeader ref={headerRef}>\r\n {isActive && (\r\n <>\r\n <IconButton\r\n disableRipple\r\n onClick={toggleMenu}\r\n sx={{ display: { xs: 'block', md: 'none' } }}\r\n size=\"large\"\r\n >\r\n <MenuRounded sx={{ fontSize: 32, color: 'white' }} />\r\n </IconButton>\r\n\r\n <Divider\r\n orientation=\"vertical\"\r\n sx={{\r\n color: '#FFFFFF',\r\n borderRightWidth: 2,\r\n display: { xs: 'block', md: 'none' },\r\n }}\r\n />\r\n </>\r\n )}\r\n\r\n <StyledLogoWrapper>\r\n <StyledLogoIcon>\r\n <LogoComponent />\r\n </StyledLogoIcon>\r\n </StyledLogoWrapper>\r\n\r\n {/* Desktop search only */}\r\n {isActive && isMdUp && (\r\n <StyledSearchContainer>\r\n <StyledTextField\r\n placeholder=\"Search for a policy\"\r\n variant=\"outlined\"\r\n fullWidth\r\n value={searchQuery}\r\n inputRef={desktopInputRef}\r\n ref={desktopFieldRef}\r\n onChange={(e) => handleSearchChange(e.target.value)}\r\n onKeyDown={handleKeyDown}\r\n InputProps={{\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n <Box sx = {{ mr: 1}}>\r\n {isSearching ? <CircularProgress size={24} /> : null} \r\n </Box>\r\n <StyledSearchButton onClick={handleSearchClick}>\r\n <StyledSearchIcon>\r\n <SearchRounded />\r\n </StyledSearchIcon>\r\n </StyledSearchButton>\r\n </InputAdornment>\r\n ),\r\n }}\r\n />\r\n\r\n <Popper\r\n open={openDropdown && !!desktopFieldRef.current}\r\n anchorEl={desktopFieldRef.current}\r\n placement=\"bottom-start\"\r\n style={{ zIndex: 1300, width: desktopFieldRef.current?.offsetWidth }}\r\n >\r\n <DropdownResults mode=\"desktop\"/>\r\n </Popper>\r\n </StyledSearchContainer>\r\n )}\r\n\r\n <StyledUserContainer>\r\n {/* Mobile search button only */}\r\n {isActive && !isMdUp && (\r\n <StyledSearchButton\r\n disableRipple\r\n onClick={toggleMobileSearch}\r\n sx={{\r\n display: { xs: 'flex', md: 'none' },\r\n backgroundColor: '#ffffff83',\r\n }}\r\n >\r\n <StyledSearchIcon>\r\n <SearchRounded />\r\n </StyledSearchIcon>\r\n </StyledSearchButton>\r\n )}\r\n\r\n <IconButton onClick={handleOpen} disableRipple>\r\n <StyledAvatar>\r\n <StyledAvatarText>{userInitials}</StyledAvatarText>\r\n </StyledAvatar>\r\n <StyledUserName>{userName}</StyledUserName>\r\n </IconButton>\r\n </StyledUserContainer>\r\n\r\n <PopoverMenu\r\n anchorEl={anchorEl}\r\n onClose={handleClose}\r\n signOut={() => {\r\n signOut();\r\n handleClose()\r\n }}\r\n />\r\n </StyledHeader>\r\n\r\n {/* Mobile panel only */}\r\n {!isMdUp && (\r\n <Collapse in={isActive && mobileSearchOpen} unmountOnExit timeout={200}>\r\n <Box\r\n sx={{\r\n display: { xs: 'block', md: 'none' },\r\n backgroundColor: theme.palette.primary.main,\r\n px: 2,\r\n pt: 1.5,\r\n pb: 2,\r\n }}\r\n >\r\n <Box sx={{ display: 'flex', gap: 1, alignItems: 'center' }}>\r\n <StyledTextField\r\n placeholder=\"Search for a policy\"\r\n variant=\"outlined\"\r\n fullWidth\r\n value={searchQuery}\r\n inputRef={mobileInputRef}\r\n onChange={(e) => handleSearchChange(e.target.value)}\r\n onKeyDown={handleKeyDown}\r\n InputProps={{\r\n endAdornment: (\r\n <InputAdornment position=\"end\">\r\n {isSearching ? <CircularProgress size={18} /> : null}\r\n </InputAdornment>\r\n )\r\n }}\r\n />\r\n\r\n <IconButton onClick={closeMobileSearch} sx={{ color: theme.palette.light.main }}>\r\n <CloseRounded />\r\n </IconButton>\r\n </Box>\r\n {openDropdown && (\r\n <Box sx={{ mx: -2 }}>\r\n <DropdownResults mode=\"mobile\"/>\r\n </Box>\r\n )}\r\n </Box>\r\n </Collapse>\r\n )}\r\n </Box>\r\n );\r\n};"],"names":["_jsx","React","_Fragment","_jsxs","GPLogo","SchoolLogo","ECELogo"],"mappings":"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"}
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  interface ModalProps {
3
3
  isOpen: boolean;
4
4
  onClose: () => void;
5
+ variableId: string;
5
6
  status: string;
6
7
  requirementType: string;
7
8
  description: string;
@@ -31,11 +31,11 @@ const NavButton = styled(IconButton)(({ theme }) => ({
31
31
  borderColor: theme.palette.dark.main, // Keep border dark
32
32
  },
33
33
  }));
34
- const Modal = ({ isOpen, onClose, status, requirementType, description, value, defaultValue, note, onSave, onSubmit, successMessage, errorMessage, onDeclineWording, onPrevious, onNext, currentPage = 1, totalPages = 1, isLoading }) => {
34
+ const Modal = ({ isOpen, onClose, variableId, status, requirementType, description, value, defaultValue, note, onSave, onSubmit, successMessage, errorMessage, onDeclineWording, onPrevious, onNext, currentPage = 1, totalPages = 1, isLoading }) => {
35
35
  const variableState = mapStatusToVariableState(status);
36
36
  const variableReqType = mapRequirementTypeToState(requirementType);
37
37
  const [textValue, setTextValue] = useState(value);
38
- const [prevTextValue, setPrevTextValue] = useState(value);
38
+ const [customValue, setCustomValue] = useState('');
39
39
  const [useDefaultValue, setUseDefaultValue] = useState(true);
40
40
  const [isSaving, setIsSaving] = useState(false);
41
41
  const [isSubmitting, setIsSubmitting] = useState(false);
@@ -45,10 +45,11 @@ const Modal = ({ isOpen, onClose, status, requirementType, description, value, d
45
45
  useEffect(() => {
46
46
  const displayValue = toDisplay(value);
47
47
  const displayDefault = toDisplay(defaultValue);
48
- setUseDefaultValue(displayValue === displayDefault);
48
+ const isUsingDefault = displayValue === displayDefault;
49
+ setUseDefaultValue(isUsingDefault);
49
50
  setTextValue(displayValue);
50
- setPrevTextValue(displayValue);
51
- }, [isOpen, value, defaultValue]);
51
+ setCustomValue(isUsingDefault ? '' : displayValue);
52
+ }, [variableId, value, defaultValue]);
52
53
  useEffect(() => {
53
54
  if (!isOpen) {
54
55
  setIsSaving(false);
@@ -71,17 +72,16 @@ const Modal = ({ isOpen, onClose, status, requirementType, description, value, d
71
72
  setIsSubmitting(false);
72
73
  }
73
74
  }, [isLoading]);
74
- useEffect(() => {
75
- if (useDefaultValue) {
76
- setPrevTextValue(textValue);
77
- setTextValue(defaultValue);
75
+ const handleUseDefaultValueChange = (event) => {
76
+ const checked = event.target.checked;
77
+ if (checked) {
78
+ setCustomValue(textValue);
79
+ setTextValue(toDisplay(defaultValue));
78
80
  }
79
81
  else {
80
- setTextValue(prevTextValue);
82
+ setTextValue(customValue || toDisplay(value));
81
83
  }
82
- }, [useDefaultValue, defaultValue]);
83
- const handleUseDefaultValueChange = (event) => {
84
- setUseDefaultValue(event.target.checked);
84
+ setUseDefaultValue(checked);
85
85
  };
86
86
  const canSubmitSave = isLoading || variableState === VariableState.Pending;
87
87
  const statusConfig = {
@@ -183,13 +183,26 @@ const Modal = ({ isOpen, onClose, status, requirementType, description, value, d
183
183
  '&:hover': {
184
184
  backgroundColor: theme.palette.primary.main + '80',
185
185
  },
186
- }, children: isSubmitting ? jsxs(Fragment, { children: [jsx(CircularProgress, { size: 20 }), jsx(Typography, { sx: { paddingLeft: 2 }, children: "Submitting..." })] }) : "Submit for review" }), variableReqType === RequirementType.Optional &&
186
+ }, children: isSubmitting ? jsxs(Fragment, { children: [jsx(CircularProgress, { size: 20 }), jsx(Typography, { sx: { paddingLeft: 2 }, children: "Submitting..." })] }) : useDefaultValue === false ? "Submit for review" : "Submit" }), variableReqType === RequirementType.Optional &&
187
187
  (jsx(Button, { onClick: onDeclineWording, variant: "outline", size: "md", sx: {
188
188
  backgroundColor: '#ff464652',
189
189
  '&:hover': {
190
190
  backgroundColor: '#ff464680', // Darker purple on hover
191
191
  }
192
- }, disabled: canSubmitSave, children: "Decline wording" }))] })) : (jsx(Box, { sx: { display: 'flex', gap: 1.5, flexWrap: 'wrap' } })), jsxs(Box, { sx: {
192
+ }, disabled: canSubmitSave, children: "Decline wording" }))] })) : (jsx(Box, { sx: { display: 'flex', gap: 1.5, flexWrap: 'wrap' }, children: jsx(Button, { onClick: () => {
193
+ setIsSubmitting(true);
194
+ // Pass the default value and true directly to onSubmit
195
+ const payloadValue = toStorage(toDisplay(defaultValue));
196
+ setCustomValue(textValue);
197
+ setTextValue(toDisplay(defaultValue));
198
+ setUseDefaultValue(true);
199
+ onSubmit?.(payloadValue, true);
200
+ }, variant: "outline", size: "md", disabled: canSubmitSave, sx: {
201
+ backgroundColor: '#ff464652',
202
+ '&:hover': {
203
+ backgroundColor: '#ff464680',
204
+ }
205
+ }, children: isSubmitting ? (jsxs(Fragment, { children: [jsx(CircularProgress, { size: 20 }), jsx(Typography, { sx: { paddingLeft: 2 }, children: "Restoring..." })] })) : ("Restore wording") }) })), jsxs(Box, { sx: {
193
206
  display: 'flex',
194
207
  alignItems: 'center',
195
208
  gap: 1.5,
@@ -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 { ArrowBackIosRounded, ArrowForwardIosRounded, ArticleRounded, CloseRounded, ErrorOutlineRounded, InfoOutlineRounded, StickyNote2Rounded } from '@mui/icons-material';\r\nimport { Alert } from './Alert';\r\nimport { toast } from 'react-toastify';\r\nimport parse from 'html-react-parser';\r\nimport { VariableState, RequirementType } from '../types/variable';\r\nimport { mapRequirementTypeToState, mapStatusToVariableState } from '../helpers/variableProcessing';\r\n\r\ninterface ModalProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n status: string;\r\n requirementType: string,\r\n description: string;\r\n value: string;\r\n defaultValue: string;\r\n note?: string;\r\n onSave?: (fieldValue: string, defaultChecked: boolean) => void;\r\n onSubmit?: (fieldValue: string, defaultChecked: boolean) => void;\r\n successMessage?: string;\r\n errorMessage?: string;\r\n onDeclineWording?: () => void;\r\n onPrevious?: () => void;\r\n onNext?: () => void;\r\n currentPage?: number;\r\n totalPages?: number;\r\n isLoading: boolean;\r\n}\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\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\n\r\nexport const Modal: React.FC<ModalProps> = ({\r\n isOpen,\r\n onClose,\r\n status,\r\n requirementType,\r\n description,\r\n value,\r\n defaultValue,\r\n note,\r\n onSave,\r\n onSubmit,\r\n successMessage,\r\n errorMessage,\r\n onDeclineWording,\r\n onPrevious,\r\n onNext,\r\n currentPage = 1,\r\n totalPages = 1,\r\n isLoading\r\n}) => {\r\n const variableState = mapStatusToVariableState(status);\r\n const variableReqType = mapRequirementTypeToState(requirementType)\r\n\r\n const [textValue, setTextValue] = useState(value);\r\n const [prevTextValue, setPrevTextValue] = useState(value);\r\n\r\n const [useDefaultValue, setUseDefaultValue] = useState(true);\r\n const [isSaving, setIsSaving] = useState(false);\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n\r\n const theme = useTheme()\r\n\r\n const toDisplay = (str: string) => str?.replace(/\\\\n/g, '\\n') ?? '';\r\n const toStorage = (str: string) => str?.replace(/\\r?\\n/g, '\\\\n') ?? '';\r\n\r\n useEffect(() => {\r\n const displayValue = toDisplay(value);\r\n const displayDefault = toDisplay(defaultValue);\r\n\r\n setUseDefaultValue(displayValue === displayDefault);\r\n setTextValue(displayValue);\r\n setPrevTextValue(displayValue);\r\n }, [isOpen, value, defaultValue]);\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 useEffect(() => {\r\n if (useDefaultValue){\r\n setPrevTextValue(textValue);\r\n setTextValue(defaultValue);\r\n } else {\r\n setTextValue(prevTextValue);\r\n }\r\n }, [useDefaultValue, defaultValue]);\r\n\r\n\r\n\r\n const handleUseDefaultValueChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n setUseDefaultValue(event.target.checked);\r\n };\r\n\r\n\r\n const canSubmitSave = isLoading || variableState === VariableState.Pending\r\n\r\n const statusConfig = {\r\n [VariableState.Pending]: { color: '#EBC7FF', label: 'Pending' },\r\n [VariableState.Draft]: { color: '#4D3019', label: 'Draft' },\r\n [VariableState.Declined]: { color: '#4D3019', label: 'Declined' },\r\n [VariableState.ActionRequired]: { color: '#FFBCB3', label: 'Action Required' },\r\n [VariableState.Accepted]: { color: '#DBF59A', label: 'Accepted' },\r\n [VariableState.NotStarted]: { color: '#000000ff', label: 'Not Started' },\r\n };\r\n\r\n const reqTypeConfig = {\r\n \"Default\": {\r\n color: '#F5A623',\r\n highlight: '#f3bf6bff',\r\n highlightSelected: '#F5A623',\r\n label: 'Mandatory',\r\n },\r\n \"Optional\": {\r\n color: '#F5D76E',\r\n highlight: '#f3e2a5ff',\r\n highlightSelected: '#F5D76E',\r\n label: 'Optional',\r\n },\r\n };\r\n\r\n\r\n const statusStyle = variableState ? statusConfig[variableState] : { color: '#ccc', label: 'Unknown' };;\r\n const requirementTypeStyle = variableReqType ? reqTypeConfig[variableReqType] : { color: '#ccc', label: 'Unknown' };;\r\n\r\n\r\n const handleSave = () => {\r\n setIsSaving(true);\r\n const payloadValue = toStorage(textValue);\r\n onSave?.(payloadValue, useDefaultValue);\r\n };\r\n\r\n\r\n const handleSubmit = () => {\r\n setIsSubmitting(true);\r\n const payloadValue = toStorage(textValue);\r\n onSubmit?.(payloadValue, useDefaultValue);\r\n };\r\n\r\n\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\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\r\n {/* Description */}\r\n <Typography sx={{ mb: 3, lineHeight: 1.6, whiteSpace: 'pre-line' }}>\r\n {parse(description)}\r\n </Typography>\r\n\r\n\r\n {/* Error Alert with Custom Icon */}\r\n {variableState === VariableState.ActionRequired && note && (\r\n <Alert\r\n variant=\"error\"\r\n icon={<InfoOutlineRounded sx={{ fontSize: 20 }} />}\r\n sx={{\r\n mb: 2\r\n }}\r\n >\r\n {note}\r\n </Alert>\r\n )}\r\n\r\n {/* Info Alert with Custom Background and Icon */}\r\n {variableState !== VariableState.ActionRequired && note && (\r\n <Alert\r\n variant=\"info\"\r\n icon={<ArticleRounded sx={{ fontSize: 20, color: theme.palette.text.primary }} />}\r\n sx={{\r\n mb: 2,\r\n backgroundColor: '#00000000',\r\n borderColor: '#acacacff',\r\n color: theme.palette.text.primary,\r\n }}\r\n >\r\n {note}\r\n </Alert>\r\n )}\r\n\r\n\r\n {/* Text Field */}\r\n <TextField\r\n multiline\r\n rows={6}\r\n fullWidth\r\n value={textValue}\r\n onChange={(e) => setTextValue(e.target.value)}\r\n disabled={\r\n useDefaultValue || \r\n canSubmitSave || \r\n variableState === VariableState.Declined\r\n }\r\n sx={{\r\n mb: 2,\r\n '& .MuiOutlinedInput-root': {\r\n backgroundColor: useDefaultValue || canSubmitSave ? 'rgba(0, 0, 0, 0.05)' : '#fff',\r\n borderRadius: 2,\r\n },\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={canSubmitSave || variableState === VariableState.Declined}\r\n onChange={handleUseDefaultValueChange}\r\n sx={{\r\n color: theme.palette.primary.main,\r\n '&.Mui-checked': {\r\n color: theme.palette.primary.main,\r\n },\r\n }}\r\n />\r\n }\r\n label=\"Use Default Wording\"\r\n sx={{ mb: 3 }}\r\n />\r\n\r\n <Box\r\n sx={{\r\n display: 'flex',\r\n flexDirection: { xs: 'column', sm: 'row' },\r\n alignItems: { xs: 'stretch', sm: 'center' },\r\n justifyContent: 'space-between',\r\n gap: 2,\r\n pt: 3,\r\n borderTop: '1px solid',\r\n borderColor: 'divider',\r\n }}\r\n >\r\n {variableState !== VariableState.Declined ? (\r\n <Box sx={{ display: 'flex', gap: 1.5, flexWrap: 'wrap' }}>\r\n {useDefaultValue === false? \r\n (\r\n <Button\r\n onClick={handleSave}\r\n variant=\"outline\"\r\n size=\"md\"\r\n disabled={canSubmitSave}\r\n >\r\n {isSaving ? <><CircularProgress size={20} /><Typography sx={{paddingLeft: 2}}>Saving...</Typography></> : \"Save\"}\r\n </Button>\r\n ) : (<></>)\r\n }\r\n <Button\r\n onClick={handleSubmit}\r\n variant=\"outline\"\r\n size=\"md\"\r\n disabled={canSubmitSave}\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 ? <><CircularProgress size={20} /><Typography sx={{paddingLeft: 2}}>Submitting...</Typography></> : \"Submit for review\"}\r\n </Button>\r\n {variableReqType === RequirementType.Optional &&\r\n (\r\n <Button onClick={onDeclineWording} variant=\"outline\" size=\"md\" 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 ) : (<Box sx={{ display: 'flex', gap: 1.5, flexWrap: 'wrap' }}></Box>)}\r\n \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 && <NavButton onClick={onPrevious} aria-label=\"Previous\" disabled={isLoading}>\r\n <ArrowBackIosRounded sx={{ fontSize: 20, color: theme.palette.text.primary }}/>\r\n </NavButton>}\r\n {currentPage !== totalPages && <NavButton onClick={onNext} aria-label=\"Next\" disabled={isLoading}>\r\n <ArrowForwardIosRounded sx={{ fontSize: 20, color: theme.palette.text.primary }}/>\r\n </NavButton>}\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, { use, useEffect, useState } from 'react';\r\nimport {\r\n Dialog,\r\n DialogContent,\r\n IconButton,\r\n Box,\r\n Typography,\r\n TextField,\r\n Checkbox,\r\n FormControlLabel,\r\n Alert as MuiAlert,\r\n Chip,\r\n styled,\r\n CircularProgress,\r\n useTheme,\r\n} from '@mui/material';\r\nimport { Button } from './Button';\r\nimport { ArrowBackIosRounded, ArrowForwardIosRounded, ArticleRounded, CloseRounded, ErrorOutlineRounded, InfoOutlineRounded, StickyNote2Rounded } from '@mui/icons-material';\r\nimport { Alert } from './Alert';\r\nimport { toast } from 'react-toastify';\r\nimport parse from 'html-react-parser';\r\nimport { VariableState, RequirementType } from '../types/variable';\r\nimport { mapRequirementTypeToState, mapStatusToVariableState } from '../helpers/variableProcessing';\r\n\r\ninterface ModalProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n variableId: string;\r\n status: string;\r\n requirementType: string,\r\n description: string;\r\n value: string;\r\n defaultValue: string;\r\n note?: string;\r\n onSave?: (fieldValue: string, defaultChecked: boolean) => void;\r\n onSubmit?: (fieldValue: string, defaultChecked: boolean) => void;\r\n successMessage?: string;\r\n errorMessage?: string;\r\n onDeclineWording?: () => void;\r\n onPrevious?: () => void;\r\n onNext?: () => void;\r\n currentPage?: number;\r\n totalPages?: number;\r\n isLoading: boolean;\r\n}\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\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\n\r\nexport const Modal: React.FC<ModalProps> = ({\r\n isOpen,\r\n onClose,\r\n variableId,\r\n status,\r\n requirementType,\r\n description,\r\n value,\r\n defaultValue,\r\n note,\r\n onSave,\r\n onSubmit,\r\n successMessage,\r\n errorMessage,\r\n onDeclineWording,\r\n onPrevious,\r\n onNext,\r\n currentPage = 1,\r\n totalPages = 1,\r\n isLoading\r\n}) => {\r\n const variableState = mapStatusToVariableState(status);\r\n const variableReqType = mapRequirementTypeToState(requirementType)\r\n\r\n const [textValue, setTextValue] = useState(value);\r\n const [customValue, setCustomValue] = useState('');\r\n\r\n const [useDefaultValue, setUseDefaultValue] = useState(true);\r\n const [isSaving, setIsSaving] = useState(false);\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n\r\n const theme = useTheme()\r\n\r\n const toDisplay = (str: string) => str?.replace(/\\\\n/g, '\\n') ?? '';\r\n const toStorage = (str: string) => str?.replace(/\\r?\\n/g, '\\\\n') ?? '';\r\n\r\n useEffect(() => {\r\n const displayValue = toDisplay(value);\r\n const displayDefault = toDisplay(defaultValue);\r\n\r\n const isUsingDefault = displayValue === displayDefault;\r\n \r\n setUseDefaultValue(isUsingDefault);\r\n setTextValue(displayValue);\r\n setCustomValue(isUsingDefault ? '' : displayValue);\r\n }, [variableId, value, defaultValue]);\r\n\r\n useEffect(() => {\r\n if (!isOpen) {\r\n setIsSaving(false);\r\n setIsSubmitting(false);\r\n }\r\n }, [isOpen]);\r\n\r\n useEffect(() => {\r\n if (successMessage && successMessage !== '') {\r\n toast.success(successMessage);\r\n }\r\n }, [successMessage]);\r\n \r\n useEffect(() => {\r\n if (errorMessage && errorMessage !== '') {\r\n toast.error(errorMessage);\r\n }\r\n }, [errorMessage]);\r\n \r\n useEffect(() => {\r\n if (!isLoading) {\r\n setIsSaving(false);\r\n setIsSubmitting(false);\r\n }\r\n }, [isLoading]);\r\n\r\n const handleUseDefaultValueChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const checked = event.target.checked;\r\n\r\n if (checked) {\r\n setCustomValue(textValue);\r\n setTextValue(toDisplay(defaultValue));\r\n } else {\r\n setTextValue(customValue || toDisplay(value));\r\n }\r\n\r\n setUseDefaultValue(checked);\r\n };\r\n\r\n\r\n const canSubmitSave = isLoading || variableState === VariableState.Pending\r\n\r\n const statusConfig = {\r\n [VariableState.Pending]: { color: '#EBC7FF', label: 'Pending' },\r\n [VariableState.Draft]: { color: '#4D3019', label: 'Draft' },\r\n [VariableState.Declined]: { color: '#4D3019', label: 'Declined' },\r\n [VariableState.ActionRequired]: { color: '#FFBCB3', label: 'Action Required' },\r\n [VariableState.Accepted]: { color: '#DBF59A', label: 'Accepted' },\r\n [VariableState.NotStarted]: { color: '#000000ff', label: 'Not Started' },\r\n };\r\n\r\n const reqTypeConfig = {\r\n \"Default\": {\r\n color: '#F5A623',\r\n highlight: '#f3bf6bff',\r\n highlightSelected: '#F5A623',\r\n label: 'Mandatory',\r\n },\r\n \"Optional\": {\r\n color: '#F5D76E',\r\n highlight: '#f3e2a5ff',\r\n highlightSelected: '#F5D76E',\r\n label: 'Optional',\r\n },\r\n };\r\n\r\n\r\n const statusStyle = variableState ? statusConfig[variableState] : { color: '#ccc', label: 'Unknown' };;\r\n const requirementTypeStyle = variableReqType ? reqTypeConfig[variableReqType] : { color: '#ccc', label: 'Unknown' };;\r\n\r\n\r\n const handleSave = () => {\r\n setIsSaving(true);\r\n const payloadValue = toStorage(textValue);\r\n onSave?.(payloadValue, useDefaultValue);\r\n };\r\n\r\n\r\n const handleSubmit = () => {\r\n setIsSubmitting(true);\r\n const payloadValue = toStorage(textValue);\r\n onSubmit?.(payloadValue, useDefaultValue);\r\n };\r\n\r\n\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\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\r\n {/* Description */}\r\n <Typography sx={{ mb: 3, lineHeight: 1.6, whiteSpace: 'pre-line' }}>\r\n {parse(description)}\r\n </Typography>\r\n\r\n\r\n {/* Error Alert with Custom Icon */}\r\n {variableState === VariableState.ActionRequired && note && (\r\n <Alert\r\n variant=\"error\"\r\n icon={<InfoOutlineRounded sx={{ fontSize: 20 }} />}\r\n sx={{\r\n mb: 2\r\n }}\r\n >\r\n {note}\r\n </Alert>\r\n )}\r\n\r\n {/* Info Alert with Custom Background and Icon */}\r\n {variableState !== VariableState.ActionRequired && note && (\r\n <Alert\r\n variant=\"info\"\r\n icon={<ArticleRounded sx={{ fontSize: 20, color: theme.palette.text.primary }} />}\r\n sx={{\r\n mb: 2,\r\n backgroundColor: '#00000000',\r\n borderColor: '#acacacff',\r\n color: theme.palette.text.primary,\r\n }}\r\n >\r\n {note}\r\n </Alert>\r\n )}\r\n\r\n\r\n {/* Text Field */}\r\n <TextField\r\n multiline\r\n rows={6}\r\n fullWidth\r\n value={textValue}\r\n onChange={(e) => setTextValue(e.target.value)}\r\n disabled={\r\n useDefaultValue || \r\n canSubmitSave || \r\n variableState === VariableState.Declined\r\n }\r\n sx={{\r\n mb: 2,\r\n '& .MuiOutlinedInput-root': {\r\n backgroundColor: useDefaultValue || canSubmitSave ? 'rgba(0, 0, 0, 0.05)' : '#fff',\r\n borderRadius: 2,\r\n },\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={canSubmitSave || variableState === VariableState.Declined}\r\n onChange={handleUseDefaultValueChange}\r\n sx={{\r\n color: theme.palette.primary.main,\r\n '&.Mui-checked': {\r\n color: theme.palette.primary.main,\r\n },\r\n }}\r\n />\r\n }\r\n label=\"Use Default Wording\"\r\n sx={{ mb: 3 }}\r\n />\r\n\r\n <Box\r\n sx={{\r\n display: 'flex',\r\n flexDirection: { xs: 'column', sm: 'row' },\r\n alignItems: { xs: 'stretch', sm: 'center' },\r\n justifyContent: 'space-between',\r\n gap: 2,\r\n pt: 3,\r\n borderTop: '1px solid',\r\n borderColor: 'divider',\r\n }}\r\n >\r\n {variableState !== VariableState.Declined ? (\r\n <Box sx={{ display: 'flex', gap: 1.5, flexWrap: 'wrap' }}>\r\n {useDefaultValue === false? \r\n (\r\n <Button\r\n onClick={handleSave}\r\n variant=\"outline\"\r\n size=\"md\"\r\n disabled={canSubmitSave}\r\n >\r\n {isSaving ? <><CircularProgress size={20} /><Typography sx={{paddingLeft: 2}}>Saving...</Typography></> : \"Save\"}\r\n </Button>\r\n ) : (<></>)\r\n }\r\n <Button\r\n onClick={handleSubmit}\r\n variant=\"outline\"\r\n size=\"md\"\r\n disabled={canSubmitSave}\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 ? <><CircularProgress size={20} /><Typography sx={{paddingLeft: 2}}>Submitting...</Typography></> : useDefaultValue === false ? \"Submit for review\" : \"Submit\"}\r\n </Button>\r\n {variableReqType === RequirementType.Optional &&\r\n (\r\n <Button onClick={onDeclineWording} variant=\"outline\" size=\"md\" sx={{\r\n backgroundColor: '#ff464652',\r\n '&:hover': {\r\n backgroundColor: '#ff464680', // Darker purple on hover\r\n }\r\n }}\r\n disabled={canSubmitSave}\r\n >\r\n Decline wording\r\n </Button>\r\n )}\r\n </Box>\r\n ) : (\r\n <Box sx={{ display: 'flex', gap: 1.5, flexWrap: 'wrap' }}>\r\n <Button\r\n onClick={() => {\r\n setIsSubmitting(true);\r\n // Pass the default value and true directly to onSubmit\r\n const payloadValue = toStorage(toDisplay(defaultValue));\r\n setCustomValue(textValue);\r\n setTextValue(toDisplay(defaultValue));\r\n setUseDefaultValue(true);\r\n onSubmit?.(payloadValue, true);\r\n }}\r\n variant=\"outline\"\r\n size=\"md\"\r\n disabled={canSubmitSave}\r\n sx={{\r\n backgroundColor: '#ff464652',\r\n '&:hover': {\r\n backgroundColor: '#ff464680',\r\n }\r\n }}\r\n >\r\n {isSubmitting ? (\r\n <>\r\n <CircularProgress size={20} />\r\n <Typography sx={{paddingLeft: 2}}>Restoring...</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 && <NavButton onClick={onPrevious} aria-label=\"Previous\" disabled={isLoading}>\r\n <ArrowBackIosRounded sx={{ fontSize: 20, color: theme.palette.text.primary }}/>\r\n </NavButton>}\r\n {currentPage !== totalPages && <NavButton onClick={onNext} aria-label=\"Next\" disabled={isLoading}>\r\n <ArrowForwardIosRounded sx={{ fontSize: 20, color: theme.palette.text.primary }}/>\r\n </NavButton>}\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,4 +1,4 @@
1
- import { __exports as lib } from '../../../_virtual/index9.js';
1
+ import { __exports as lib } from '../../../_virtual/index8.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 cjs } from '../../../_virtual/index8.js';
1
+ import { __exports as cjs } from '../../../_virtual/index9.js';
2
2
  import { __require as requireCjs$1 } from '../../inline-style-parser/cjs/index.js';
3
3
 
4
4
  var hasRequiredCjs;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ece-docs-components",
3
- "version": "1.0.69",
3
+ "version": "1.0.71",
4
4
  "type": "module",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",