ece-docs-components 1.0.24 → 1.0.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/ThemeProvider.js +1 -1
- package/dist/cjs/ThemeProvider.js.map +1 -1
- package/dist/cjs/components/Button.js +19 -2
- package/dist/cjs/components/Button.js.map +1 -1
- package/dist/cjs/components/Modal.js +11 -4
- package/dist/cjs/components/Modal.js.map +1 -1
- package/dist/cjs/components/ReadBy.js +35 -6
- package/dist/cjs/components/ReadBy.js.map +1 -1
- package/dist/esm/ThemeProvider.js +1 -1
- package/dist/esm/ThemeProvider.js.map +1 -1
- package/dist/esm/components/Button.js +19 -2
- package/dist/esm/components/Button.js.map +1 -1
- package/dist/esm/components/Modal.d.ts +1 -0
- package/dist/esm/components/Modal.js +11 -4
- package/dist/esm/components/Modal.js.map +1 -1
- package/dist/esm/components/ReadBy.js +36 -7
- package/dist/esm/components/ReadBy.js.map +1 -1
- package/package.json +1 -1
|
@@ -71,7 +71,7 @@ const theme = styles.createTheme({
|
|
|
71
71
|
primaryButtonTextColor: '#FFFFFF',
|
|
72
72
|
readByBackgroundColor: '#ebc7ff',
|
|
73
73
|
stepIndicatorTextColor: '#FFFFFF',
|
|
74
|
-
markAsReadBackgroundColor: '#
|
|
74
|
+
markAsReadBackgroundColor: '#ebc7ff8e',
|
|
75
75
|
tabBackgroundColor: '#F8F0FC',
|
|
76
76
|
},
|
|
77
77
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeProvider.js","sources":["../../../src/ThemeProvider.tsx"],"sourcesContent":["import { createTheme, ThemeProvider as MuiThemeProvider } from '@mui/material/styles';\r\nimport { CssBaseline } from '@mui/material';\r\nimport * as React from 'react';\r\nimport './theme-types';\r\nimport { ToastContainer } from 'react-toastify';\r\n\r\nconst theme = createTheme({\r\n palette: {\r\n mode: 'light',\r\n primary: {\r\n main: '#AD46FF',\r\n light: '#AD46FF',\r\n dark: '#AD46FF',\r\n contrastText: '#FFFFFF',\r\n },\r\n secondary: {\r\n main: '#D79AFC',\r\n light: '#D79AFC',\r\n dark: '#D79AFC',\r\n contrastText: '#FFFFFF',\r\n },\r\n error: {\r\n main: '#F56B6B',\r\n light: '#F56B6B',\r\n dark: '#F56B6B',\r\n contrastText: '#FFFFFF',\r\n },\r\n warning: {\r\n main: '#F5D76E',\r\n light: '#F5D76E',\r\n dark: '#F5D76E',\r\n contrastText: '#FFFBFF',\r\n },\r\n info: {\r\n main: '#F5A623',\r\n light: '#F5A623',\r\n dark: '#F5A623',\r\n contrastText: '#FFFFFF',\r\n },\r\n success: {\r\n main: '#A3D977',\r\n light: '#A3D977',\r\n dark: '#A3D977',\r\n contrastText: '#FFFFFF',\r\n },\r\n background: {\r\n default: '#FDFCEE',\r\n paper: '#FEFDF7',\r\n },\r\n text: {\r\n primary: '#4D3019',\r\n secondary: '#826E5C',\r\n disabled: '#93908F',\r\n },\r\n divider: '#C6C7C0',\r\n accent: {\r\n main: '#FFEDD1',\r\n },\r\n dark: {\r\n main: '#4D3019',\r\n },\r\n light: {\r\n main: '#FEFDF7',\r\n },\r\n markedRead: {\r\n main: '#A3D977',\r\n },\r\n custom: {\r\n iconColor: '#ebc7ff',\r\n primaryButtonTextColor: '#FFFFFF',\r\n readByBackgroundColor: '#ebc7ff',\r\n stepIndicatorTextColor: '#FFFFFF',\r\n markAsReadBackgroundColor: '#ebc7ff',\r\n tabBackgroundColor: '#F8F0FC',\r\n },\r\n },\r\n typography: {\r\n fontFamily: ['Inter', '-apple-system', 'BlinkMacSystemFont', 'Segoe UI', 'Roboto', 'sans-serif'].join(','),\r\n h1: {\r\n color: '#4D3019',\r\n fontWeight: 700,\r\n fontSize: '2.5rem',\r\n lineHeight: 1.2,\r\n },\r\n h2: {\r\n color: '#4D3019',\r\n fontWeight: 700,\r\n fontSize: '2rem',\r\n lineHeight: 1.3,\r\n },\r\n h3: {\r\n color: '#4D3019',\r\n fontWeight: 600,\r\n fontSize: '1.75rem',\r\n lineHeight: 1.3,\r\n },\r\n h4: {\r\n color: '#4D3019',\r\n fontWeight: 600,\r\n fontSize: '1.5rem',\r\n lineHeight: 1.4,\r\n },\r\n h5: {\r\n color: '#4D3019',\r\n fontWeight: 600,\r\n fontSize: '1.25rem',\r\n lineHeight: 1.4,\r\n },\r\n h6: {\r\n color: '#4D3019',\r\n fontWeight: 600,\r\n fontSize: '1rem',\r\n lineHeight: 1.4,\r\n },\r\n body1: {\r\n color: '#4D3019',\r\n fontWeight: 400,\r\n fontSize: '1rem',\r\n lineHeight: 1.5,\r\n },\r\n body2: {\r\n color: '#826E5C',\r\n fontWeight: 400,\r\n fontSize: '0.875rem',\r\n lineHeight: 1.5,\r\n },\r\n subtitle1: {\r\n color: '#4D3019',\r\n fontWeight: 500,\r\n fontSize: '1rem',\r\n lineHeight: 1.5,\r\n },\r\n subtitle2: {\r\n color: '#826E5C',\r\n fontWeight: 500,\r\n fontSize: '0.875rem',\r\n lineHeight: 1.5,\r\n },\r\n button: {\r\n color: '#4D3019',\r\n fontWeight: 500,\r\n fontSize: '0.875rem',\r\n lineHeight: 1.75,\r\n textTransform: 'none',\r\n },\r\n caption: {\r\n color: '#826E5C',\r\n fontWeight: 400,\r\n fontSize: '0.75rem',\r\n lineHeight: 1.66,\r\n },\r\n overline: {\r\n color: '#826E5C',\r\n fontWeight: 500,\r\n fontSize: '0.75rem',\r\n lineHeight: 2.66,\r\n textTransform: 'uppercase',\r\n letterSpacing: '0.08em',\r\n },\r\n },\r\n shape: {\r\n borderRadius: 4,\r\n },\r\n breakpoints: {\r\n values: {\r\n xs: 320,\r\n sm: 640,\r\n md: 768,\r\n lg: 1024,\r\n xl: 1280,\r\n },\r\n },\r\n components: {\r\n MuiTypography: {\r\n defaultProps: {\r\n variantMapping: {\r\n h1: 'h1',\r\n h2: 'h2',\r\n h3: 'h3',\r\n h4: 'h4',\r\n h5: 'h5',\r\n h6: 'h6',\r\n subtitle1: 'p',\r\n subtitle2: 'p',\r\n body1: 'p',\r\n body2: 'p',\r\n },\r\n },\r\n },\r\n MuiCssBaseline: {\r\n styleOverrides: {\r\n body: {\r\n WebkitFontSmoothing: 'antialiased',\r\n MozOsxFontSmoothing: 'grayscale',\r\n backgroundColor: '#FDFCEE',\r\n color: '#4D3019',\r\n },\r\n 'input[type=\"checkbox\"], input[type=\"radio\"]': {\r\n accentColor: '#D79AFC',\r\n },\r\n 'h1, h2, h3, h4, h5, h6': {\r\n fontWeight: 'inherit !important',\r\n },\r\n '.MuiTypography-h1': {\r\n fontWeight: '700 !important',\r\n },\r\n '.MuiTypography-h2': {\r\n fontWeight: '700 !important',\r\n },\r\n '.MuiTypography-h3': {\r\n fontWeight: '600 !important',\r\n },\r\n '.MuiTypography-h4': {\r\n fontWeight: '600 !important',\r\n },\r\n '.MuiTypography-h5': {\r\n fontWeight: '600 !important',\r\n },\r\n '.MuiTypography-h6': {\r\n fontWeight: '600 !important',\r\n },\r\n },\r\n },\r\n },\r\n appName: 'ECE Docs',\r\n});\r\n\r\n\r\nexport const ThemeProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\r\n return (\r\n <MuiThemeProvider theme={theme}>\r\n <CssBaseline />\r\n {children}\r\n <ToastContainer />\r\n </MuiThemeProvider>\r\n );\r\n};\r\n\r\n\r\nexport const useTheme = () => {\r\n return theme;\r\n};\r\n"],"names":["createTheme","_jsxs","MuiThemeProvider","_jsx","CssBaseline","ToastContainer"],"mappings":";;;;;;;AAMA,MAAM,KAAK,GAAGA,kBAAW,CAAC;AACxB,IAAA,OAAO,EAAE;AACP,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,YAAY,EAAE,SAAS;AACxB,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,YAAY,EAAE,SAAS;AACxB,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,YAAY,EAAE,SAAS;AACxB,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,YAAY,EAAE,SAAS;AACxB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,YAAY,EAAE,SAAS;AACxB,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,YAAY,EAAE,SAAS;AACxB,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,KAAK,EAAE,SAAS;AACjB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,QAAQ,EAAE,SAAS;AACpB,SAAA;AACD,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,SAAS;AAChB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,IAAI,EAAE,SAAS;AAChB,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,IAAI,EAAE,SAAS;AAChB,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,SAAS;AAChB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,sBAAsB,EAAE,SAAS;AACjC,YAAA,qBAAqB,EAAE,SAAS;AAChC,YAAA,sBAAsB,EAAE,SAAS;AACjC,YAAA,yBAAyB,EAAE,SAAS;AACpC,YAAA,kBAAkB,EAAE,SAAS;AAC9B,SAAA;AACF,KAAA;AACD,IAAA,UAAU,EAAE;AACV,QAAA,UAAU,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1G,QAAA,EAAE,EAAE;AACF,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,UAAU,EAAE,GAAG;AAChB,SAAA;AACD,QAAA,EAAE,EAAE;AACF,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,GAAG;AAChB,SAAA;AACD,QAAA,EAAE,EAAE;AACF,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,UAAU,EAAE,GAAG;AAChB,SAAA;AACD,QAAA,EAAE,EAAE;AACF,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,UAAU,EAAE,GAAG;AAChB,SAAA;AACD,QAAA,EAAE,EAAE;AACF,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,UAAU,EAAE,GAAG;AAChB,SAAA;AACD,QAAA,EAAE,EAAE;AACF,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,GAAG;AAChB,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,GAAG;AAChB,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,UAAU,EAAE,GAAG;AAChB,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,UAAU,EAAE,GAAG;AAChB,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,UAAU,EAAE,GAAG;AAChB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,aAAa,EAAE,MAAM;AACtB,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,UAAU,EAAE,IAAI;AACjB,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,aAAa,EAAE,WAAW;AAC1B,YAAA,aAAa,EAAE,QAAQ;AACxB,SAAA;AACF,KAAA;AACD,IAAA,KAAK,EAAE;AACL,QAAA,YAAY,EAAE,CAAC;AAChB,KAAA;AACD,IAAA,WAAW,EAAE;AACX,QAAA,MAAM,EAAE;AACN,YAAA,EAAE,EAAE,GAAG;AACP,YAAA,EAAE,EAAE,GAAG;AACP,YAAA,EAAE,EAAE,GAAG;AACP,YAAA,EAAE,EAAE,IAAI;AACR,YAAA,EAAE,EAAE,IAAI;AACT,SAAA;AACF,KAAA;AACD,IAAA,UAAU,EAAE;AACV,QAAA,aAAa,EAAE;AACb,YAAA,YAAY,EAAE;AACZ,gBAAA,cAAc,EAAE;AACd,oBAAA,EAAE,EAAE,IAAI;AACR,oBAAA,EAAE,EAAE,IAAI;AACR,oBAAA,EAAE,EAAE,IAAI;AACR,oBAAA,EAAE,EAAE,IAAI;AACR,oBAAA,EAAE,EAAE,IAAI;AACR,oBAAA,EAAE,EAAE,IAAI;AACR,oBAAA,SAAS,EAAE,GAAG;AACd,oBAAA,SAAS,EAAE,GAAG;AACd,oBAAA,KAAK,EAAE,GAAG;AACV,oBAAA,KAAK,EAAE,GAAG;AACX,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,cAAc,EAAE;AACd,YAAA,cAAc,EAAE;AACd,gBAAA,IAAI,EAAE;AACJ,oBAAA,mBAAmB,EAAE,aAAa;AAClC,oBAAA,mBAAmB,EAAE,WAAW;AAChC,oBAAA,eAAe,EAAE,SAAS;AAC1B,oBAAA,KAAK,EAAE,SAAS;AACjB,iBAAA;AACD,gBAAA,6CAA6C,EAAE;AAC7C,oBAAA,WAAW,EAAE,SAAS;AACvB,iBAAA;AACD,gBAAA,wBAAwB,EAAE;AACxB,oBAAA,UAAU,EAAE,oBAAoB;AACjC,iBAAA;AACD,gBAAA,mBAAmB,EAAE;AACnB,oBAAA,UAAU,EAAE,gBAAgB;AAC7B,iBAAA;AACD,gBAAA,mBAAmB,EAAE;AACnB,oBAAA,UAAU,EAAE,gBAAgB;AAC7B,iBAAA;AACD,gBAAA,mBAAmB,EAAE;AACnB,oBAAA,UAAU,EAAE,gBAAgB;AAC7B,iBAAA;AACD,gBAAA,mBAAmB,EAAE;AACnB,oBAAA,UAAU,EAAE,gBAAgB;AAC7B,iBAAA;AACD,gBAAA,mBAAmB,EAAE;AACnB,oBAAA,UAAU,EAAE,gBAAgB;AAC7B,iBAAA;AACD,gBAAA,mBAAmB,EAAE;AACnB,oBAAA,UAAU,EAAE,gBAAgB;AAC7B,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA;AACD,IAAA,OAAO,EAAE,UAAU;AACpB,CAAA,CAAC;MAGW,aAAa,GAA4C,CAAC,EAAE,QAAQ,EAAE,KAAI;AACrF,IAAA,QACEC,eAAA,CAACC,oBAAgB,IAAC,KAAK,EAAE,KAAK,EAAA,QAAA,EAAA,CAC5BC,cAAA,CAACC,oBAAW,EAAA,EAAA,CAAG,EACd,QAAQ,EACTD,cAAA,CAACE,4BAAc,EAAA,EAAA,CAAG,CAAA,EAAA,CACD;AAEvB;AAGO,MAAM,QAAQ,GAAG,MAAK;AAC3B,IAAA,OAAO,KAAK;AACd;;;;;"}
|
|
1
|
+
{"version":3,"file":"ThemeProvider.js","sources":["../../../src/ThemeProvider.tsx"],"sourcesContent":["import { createTheme, ThemeProvider as MuiThemeProvider } from '@mui/material/styles';\r\nimport { CssBaseline } from '@mui/material';\r\nimport * as React from 'react';\r\nimport './theme-types';\r\nimport { ToastContainer } from 'react-toastify';\r\n\r\nconst theme = createTheme({\r\n palette: {\r\n mode: 'light',\r\n primary: {\r\n main: '#AD46FF',\r\n light: '#AD46FF',\r\n dark: '#AD46FF',\r\n contrastText: '#FFFFFF',\r\n },\r\n secondary: {\r\n main: '#D79AFC',\r\n light: '#D79AFC',\r\n dark: '#D79AFC',\r\n contrastText: '#FFFFFF',\r\n },\r\n error: {\r\n main: '#F56B6B',\r\n light: '#F56B6B',\r\n dark: '#F56B6B',\r\n contrastText: '#FFFFFF',\r\n },\r\n warning: {\r\n main: '#F5D76E',\r\n light: '#F5D76E',\r\n dark: '#F5D76E',\r\n contrastText: '#FFFBFF',\r\n },\r\n info: {\r\n main: '#F5A623',\r\n light: '#F5A623',\r\n dark: '#F5A623',\r\n contrastText: '#FFFFFF',\r\n },\r\n success: {\r\n main: '#A3D977',\r\n light: '#A3D977',\r\n dark: '#A3D977',\r\n contrastText: '#FFFFFF',\r\n },\r\n background: {\r\n default: '#FDFCEE',\r\n paper: '#FEFDF7',\r\n },\r\n text: {\r\n primary: '#4D3019',\r\n secondary: '#826E5C',\r\n disabled: '#93908F',\r\n },\r\n divider: '#C6C7C0',\r\n accent: {\r\n main: '#FFEDD1',\r\n },\r\n dark: {\r\n main: '#4D3019',\r\n },\r\n light: {\r\n main: '#FEFDF7',\r\n },\r\n markedRead: {\r\n main: '#A3D977',\r\n },\r\n custom: {\r\n iconColor: '#ebc7ff',\r\n primaryButtonTextColor: '#FFFFFF',\r\n readByBackgroundColor: '#ebc7ff',\r\n stepIndicatorTextColor: '#FFFFFF',\r\n markAsReadBackgroundColor: '#ebc7ff8e',\r\n tabBackgroundColor: '#F8F0FC',\r\n },\r\n },\r\n typography: {\r\n fontFamily: ['Inter', '-apple-system', 'BlinkMacSystemFont', 'Segoe UI', 'Roboto', 'sans-serif'].join(','),\r\n h1: {\r\n color: '#4D3019',\r\n fontWeight: 700,\r\n fontSize: '2.5rem',\r\n lineHeight: 1.2,\r\n },\r\n h2: {\r\n color: '#4D3019',\r\n fontWeight: 700,\r\n fontSize: '2rem',\r\n lineHeight: 1.3,\r\n },\r\n h3: {\r\n color: '#4D3019',\r\n fontWeight: 600,\r\n fontSize: '1.75rem',\r\n lineHeight: 1.3,\r\n },\r\n h4: {\r\n color: '#4D3019',\r\n fontWeight: 600,\r\n fontSize: '1.5rem',\r\n lineHeight: 1.4,\r\n },\r\n h5: {\r\n color: '#4D3019',\r\n fontWeight: 600,\r\n fontSize: '1.25rem',\r\n lineHeight: 1.4,\r\n },\r\n h6: {\r\n color: '#4D3019',\r\n fontWeight: 600,\r\n fontSize: '1rem',\r\n lineHeight: 1.4,\r\n },\r\n body1: {\r\n color: '#4D3019',\r\n fontWeight: 400,\r\n fontSize: '1rem',\r\n lineHeight: 1.5,\r\n },\r\n body2: {\r\n color: '#826E5C',\r\n fontWeight: 400,\r\n fontSize: '0.875rem',\r\n lineHeight: 1.5,\r\n },\r\n subtitle1: {\r\n color: '#4D3019',\r\n fontWeight: 500,\r\n fontSize: '1rem',\r\n lineHeight: 1.5,\r\n },\r\n subtitle2: {\r\n color: '#826E5C',\r\n fontWeight: 500,\r\n fontSize: '0.875rem',\r\n lineHeight: 1.5,\r\n },\r\n button: {\r\n color: '#4D3019',\r\n fontWeight: 500,\r\n fontSize: '0.875rem',\r\n lineHeight: 1.75,\r\n textTransform: 'none',\r\n },\r\n caption: {\r\n color: '#826E5C',\r\n fontWeight: 400,\r\n fontSize: '0.75rem',\r\n lineHeight: 1.66,\r\n },\r\n overline: {\r\n color: '#826E5C',\r\n fontWeight: 500,\r\n fontSize: '0.75rem',\r\n lineHeight: 2.66,\r\n textTransform: 'uppercase',\r\n letterSpacing: '0.08em',\r\n },\r\n },\r\n shape: {\r\n borderRadius: 4,\r\n },\r\n breakpoints: {\r\n values: {\r\n xs: 320,\r\n sm: 640,\r\n md: 768,\r\n lg: 1024,\r\n xl: 1280,\r\n },\r\n },\r\n components: {\r\n MuiTypography: {\r\n defaultProps: {\r\n variantMapping: {\r\n h1: 'h1',\r\n h2: 'h2',\r\n h3: 'h3',\r\n h4: 'h4',\r\n h5: 'h5',\r\n h6: 'h6',\r\n subtitle1: 'p',\r\n subtitle2: 'p',\r\n body1: 'p',\r\n body2: 'p',\r\n },\r\n },\r\n },\r\n MuiCssBaseline: {\r\n styleOverrides: {\r\n body: {\r\n WebkitFontSmoothing: 'antialiased',\r\n MozOsxFontSmoothing: 'grayscale',\r\n backgroundColor: '#FDFCEE',\r\n color: '#4D3019',\r\n },\r\n 'input[type=\"checkbox\"], input[type=\"radio\"]': {\r\n accentColor: '#D79AFC',\r\n },\r\n 'h1, h2, h3, h4, h5, h6': {\r\n fontWeight: 'inherit !important',\r\n },\r\n '.MuiTypography-h1': {\r\n fontWeight: '700 !important',\r\n },\r\n '.MuiTypography-h2': {\r\n fontWeight: '700 !important',\r\n },\r\n '.MuiTypography-h3': {\r\n fontWeight: '600 !important',\r\n },\r\n '.MuiTypography-h4': {\r\n fontWeight: '600 !important',\r\n },\r\n '.MuiTypography-h5': {\r\n fontWeight: '600 !important',\r\n },\r\n '.MuiTypography-h6': {\r\n fontWeight: '600 !important',\r\n },\r\n },\r\n },\r\n },\r\n appName: 'ECE Docs',\r\n});\r\n\r\n\r\nexport const ThemeProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\r\n return (\r\n <MuiThemeProvider theme={theme}>\r\n <CssBaseline />\r\n {children}\r\n <ToastContainer />\r\n </MuiThemeProvider>\r\n );\r\n};\r\n\r\n\r\nexport const useTheme = () => {\r\n return theme;\r\n};\r\n"],"names":["createTheme","_jsxs","MuiThemeProvider","_jsx","CssBaseline","ToastContainer"],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
4
|
var material = require('@mui/material');
|
|
5
5
|
var styles = require('@mui/material/styles');
|
|
6
|
+
var iconsMaterial = require('@mui/icons-material');
|
|
6
7
|
|
|
7
8
|
const StyledButton = styles.styled(material.Button, {
|
|
8
9
|
shouldForwardProp: (prop) => prop !== 'customVariant' && prop !== 'customSize',
|
|
@@ -74,6 +75,9 @@ const StyledButton = styles.styled(material.Button, {
|
|
|
74
75
|
},
|
|
75
76
|
'marked-read': {
|
|
76
77
|
backgroundColor: 'rgba(163, 217, 119, 0.1)',
|
|
78
|
+
fontSize: '14px',
|
|
79
|
+
border: '1px solid',
|
|
80
|
+
padding: '2px 8px',
|
|
77
81
|
borderColor: currentTheme.markedRead.main, // Visible border
|
|
78
82
|
color: currentTheme.dark.main,
|
|
79
83
|
'&:hover': {
|
|
@@ -83,6 +87,9 @@ const StyledButton = styles.styled(material.Button, {
|
|
|
83
87
|
},
|
|
84
88
|
'mark-read': {
|
|
85
89
|
backgroundColor: currentTheme.custom?.markAsReadBackgroundColor || currentTheme.accent.main,
|
|
90
|
+
border: '1px solid',
|
|
91
|
+
fontSize: '14px',
|
|
92
|
+
padding: '2px 8px',
|
|
86
93
|
borderColor: currentTheme.custom?.markAsReadBorderColor || currentTheme.secondary.main, // Visible border
|
|
87
94
|
color: currentTheme.dark.main,
|
|
88
95
|
'&:hover': {
|
|
@@ -105,8 +112,18 @@ const StyledButton = styles.styled(material.Button, {
|
|
|
105
112
|
...variantStyles[customVariant],
|
|
106
113
|
};
|
|
107
114
|
});
|
|
108
|
-
const Button = ({ variant = 'primary', size = 'md', children, fullWidth = false, ...props }) => {
|
|
109
|
-
|
|
115
|
+
const Button = ({ variant = 'primary', size = 'md', children, endIcon, fullWidth = false, ...props }) => {
|
|
116
|
+
// Logic for special end icons per variant
|
|
117
|
+
const getEndIcon = () => {
|
|
118
|
+
if (variant === 'mark-read') {
|
|
119
|
+
return (jsxRuntime.jsx(iconsMaterial.ArticleRounded, { sx: { fontSize: 22, color: '#925cdb' } }));
|
|
120
|
+
}
|
|
121
|
+
if (variant === 'marked-read') {
|
|
122
|
+
return jsxRuntime.jsx(iconsMaterial.FactCheckRounded, { sx: { fontSize: 22, color: '#5a9c1a' } });
|
|
123
|
+
}
|
|
124
|
+
return endIcon || null;
|
|
125
|
+
};
|
|
126
|
+
return (jsxRuntime.jsx(StyledButton, { customVariant: variant, customSize: size, fullWidth: fullWidth, disableRipple: true, endIcon: getEndIcon(), ...props, children: children }));
|
|
110
127
|
};
|
|
111
128
|
|
|
112
129
|
exports.Button = Button;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.js","sources":["../../../../src/components/Button.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Button as MuiButton, ButtonProps as MuiButtonProps } from '@mui/material';\r\nimport { styled } from '@mui/material/styles';\r\n\r\ninterface CustomButtonProps extends Omit<MuiButtonProps, 'variant' | 'size'> {\r\n variant?: 'primary' | 'secondary' | 'outline' | 'marked-read' | 'mark-read' | 'danger';\r\n size?: 'sm' | 'md' | 'lg';\r\n}\r\n\r\nconst StyledButton = styled(MuiButton, {\r\n shouldForwardProp: (prop) => prop !== 'customVariant' && prop !== 'customSize',\r\n})<{ customVariant: string; customSize: string }>(({ theme, customVariant, customSize }) => {\r\n const currentTheme = theme.palette;\r\n\r\n // Size styles\r\n const sizeStyles = {\r\n sm: {\r\n padding: '6px 12px',\r\n fontSize: '0.875rem',\r\n },\r\n md: {\r\n padding: '10px 16px',\r\n fontSize: '1rem',\r\n },\r\n lg: {\r\n padding: '12px 24px',\r\n fontSize: '1.125rem',\r\n },\r\n };\r\n\r\n const baseStyles = {\r\n fontWeight: 500,\r\n borderRadius: (typeof theme.shape.borderRadius === 'string'\r\n ? parseInt(theme.shape.borderRadius, 10)\r\n : theme.shape.borderRadius || 4) * 2,\r\n textTransform: 'none' as const,\r\n transition: 'all 0.2s',\r\n boxShadow: 'none',\r\n border: '2px solid transparent',\r\n '&:hover': {\r\n boxShadow: 'none',\r\n },\r\n '&.Mui-disabled': {\r\n opacity: 0.5,\r\n cursor: 'not-allowed',\r\n },\r\n ...sizeStyles[customSize as keyof typeof sizeStyles],\r\n };\r\n\r\n // Variant styles\r\n const variantStyles = {\r\n primary: {\r\n backgroundColor: currentTheme.primary.main,\r\n color: currentTheme.custom?.primaryButtonTextColor || '#FFFFFF',\r\n borderColor: 'transparent', // Transparent border\r\n boxShadow: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\r\n '&:hover': {\r\n backgroundColor: currentTheme.primary.main,\r\n opacity: 0.9,\r\n },\r\n },\r\n secondary: {\r\n backgroundColor: currentTheme.secondary.main,\r\n color: currentTheme.dark.main,\r\n borderColor: 'transparent', // Transparent border\r\n boxShadow: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\r\n '&:hover': {\r\n backgroundColor: currentTheme.secondary.main,\r\n opacity: 0.9,\r\n },\r\n },\r\n outline: {\r\n backgroundColor: currentTheme.light.main,\r\n borderColor: 'rgba(77, 48, 25, 0.2)', // Visible border\r\n color: currentTheme.dark.main,\r\n '&:hover': {\r\n backgroundColor: 'rgba(77, 48, 25, 0.05)',\r\n borderColor: 'rgba(77, 48, 25, 0.3)',\r\n },\r\n },\r\n 'marked-read': {\r\n backgroundColor: 'rgba(163, 217, 119, 0.1)',\r\n borderColor: currentTheme.markedRead.main, // Visible border\r\n color: currentTheme.dark.main,\r\n '&:hover': {\r\n backgroundColor: 'rgba(163, 217, 119, 0.2)',\r\n cursor: 'not-allowed',\r\n },\r\n },\r\n 'mark-read': {\r\n backgroundColor: currentTheme.custom?.markAsReadBackgroundColor || currentTheme.accent.main,\r\n borderColor: currentTheme.custom?.markAsReadBorderColor || currentTheme.secondary.main, // Visible border\r\n color: currentTheme.dark.main,\r\n '&:hover': {\r\n opacity: 0.9,\r\n },\r\n },\r\n danger: {\r\n backgroundColor: '#D32F2F',\r\n color: '#FFFFFF',\r\n borderColor: 'transparent', // Transparent border\r\n boxShadow: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\r\n '&:hover': {\r\n backgroundColor: '#B71C1C',\r\n opacity: 0.9,\r\n },\r\n },\r\n };\r\n\r\n return {\r\n ...baseStyles,\r\n ...variantStyles[customVariant as keyof typeof variantStyles],\r\n };\r\n});\r\n\r\nexport const Button: React.FC<CustomButtonProps> = ({\r\n variant = 'primary',\r\n size = 'md',\r\n children,\r\n fullWidth = false,\r\n ...props\r\n}) => {\r\n return (\r\n <StyledButton\r\n customVariant={variant}\r\n customSize={size}\r\n fullWidth={fullWidth}\r\n disableRipple\r\n {...props}\r\n >\r\n {children}\r\n </StyledButton>\r\n );\r\n};\r\n"],"names":["styled","MuiButton","_jsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Button.js","sources":["../../../../src/components/Button.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Button as MuiButton, ButtonProps as MuiButtonProps } from '@mui/material';\r\nimport { styled } from '@mui/material/styles';\r\nimport { ArticleRounded, FactCheckRounded } from '@mui/icons-material';\r\n\r\ninterface CustomButtonProps extends Omit<MuiButtonProps, 'variant' | 'size'> {\r\n variant?: 'primary' | 'secondary' | 'outline' | 'marked-read' | 'mark-read' | 'danger';\r\n size?: 'sm' | 'md' | 'lg';\r\n}\r\n\r\nconst StyledButton = styled(MuiButton, {\r\n shouldForwardProp: (prop) => prop !== 'customVariant' && prop !== 'customSize',\r\n})<{ customVariant: string; customSize: string }>(({ theme, customVariant, customSize }) => {\r\n const currentTheme = theme.palette;\r\n\r\n // Size styles\r\n const sizeStyles = {\r\n sm: {\r\n padding: '6px 12px',\r\n fontSize: '0.875rem',\r\n },\r\n md: {\r\n padding: '10px 16px',\r\n fontSize: '1rem',\r\n },\r\n lg: {\r\n padding: '12px 24px',\r\n fontSize: '1.125rem',\r\n },\r\n };\r\n\r\n const baseStyles = {\r\n fontWeight: 500,\r\n borderRadius: (typeof theme.shape.borderRadius === 'string'\r\n ? parseInt(theme.shape.borderRadius, 10)\r\n : theme.shape.borderRadius || 4) * 2,\r\n textTransform: 'none' as const,\r\n transition: 'all 0.2s',\r\n boxShadow: 'none',\r\n border: '2px solid transparent',\r\n '&:hover': {\r\n boxShadow: 'none',\r\n },\r\n '&.Mui-disabled': {\r\n opacity: 0.5,\r\n cursor: 'not-allowed',\r\n },\r\n ...sizeStyles[customSize as keyof typeof sizeStyles],\r\n };\r\n\r\n // Variant styles\r\n const variantStyles = {\r\n primary: {\r\n backgroundColor: currentTheme.primary.main,\r\n color: currentTheme.custom?.primaryButtonTextColor || '#FFFFFF',\r\n borderColor: 'transparent', // Transparent border\r\n boxShadow: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\r\n '&:hover': {\r\n backgroundColor: currentTheme.primary.main,\r\n opacity: 0.9,\r\n },\r\n },\r\n secondary: {\r\n backgroundColor: currentTheme.secondary.main,\r\n color: currentTheme.dark.main,\r\n borderColor: 'transparent', // Transparent border\r\n boxShadow: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\r\n '&:hover': {\r\n backgroundColor: currentTheme.secondary.main,\r\n opacity: 0.9,\r\n },\r\n },\r\n outline: {\r\n backgroundColor: currentTheme.light.main,\r\n borderColor: 'rgba(77, 48, 25, 0.2)', // Visible border\r\n color: currentTheme.dark.main,\r\n '&:hover': {\r\n backgroundColor: 'rgba(77, 48, 25, 0.05)',\r\n borderColor: 'rgba(77, 48, 25, 0.3)',\r\n },\r\n },\r\n 'marked-read': {\r\n backgroundColor: 'rgba(163, 217, 119, 0.1)',\r\n fontSize: '14px',\r\n border: '1px solid',\r\n padding: '2px 8px',\r\n borderColor: currentTheme.markedRead.main, // Visible border\r\n color: currentTheme.dark.main,\r\n '&:hover': {\r\n backgroundColor: 'rgba(163, 217, 119, 0.2)',\r\n cursor: 'not-allowed',\r\n },\r\n },\r\n 'mark-read': {\r\n backgroundColor: currentTheme.custom?.markAsReadBackgroundColor || currentTheme.accent.main,\r\n border: '1px solid',\r\n fontSize: '14px',\r\n padding: '2px 8px',\r\n borderColor: currentTheme.custom?.markAsReadBorderColor || currentTheme.secondary.main, // Visible border\r\n color: currentTheme.dark.main,\r\n '&:hover': {\r\n opacity: 0.9,\r\n },\r\n },\r\n danger: {\r\n backgroundColor: '#D32F2F',\r\n color: '#FFFFFF',\r\n borderColor: 'transparent', // Transparent border\r\n boxShadow: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\r\n '&:hover': {\r\n backgroundColor: '#B71C1C',\r\n opacity: 0.9,\r\n },\r\n },\r\n };\r\n\r\n return {\r\n ...baseStyles,\r\n ...variantStyles[customVariant as keyof typeof variantStyles],\r\n };\r\n});\r\n\r\nexport const Button: React.FC<CustomButtonProps> = ({\r\n variant = 'primary',\r\n size = 'md',\r\n children,\r\n endIcon,\r\n fullWidth = false,\r\n ...props\r\n}) => {\r\n // Logic for special end icons per variant\r\n const getEndIcon = () => {\r\n if (variant === 'mark-read') {\r\n return (\r\n <ArticleRounded sx={{ fontSize: 22, color: '#925cdb' }} />\r\n );\r\n }\r\n\r\n if (variant === 'marked-read') {\r\n return <FactCheckRounded sx={{ fontSize: 22, color: '#5a9c1a' }} />;\r\n }\r\n\r\n return endIcon || null;\r\n };\r\n\r\n return (\r\n <StyledButton\r\n customVariant={variant}\r\n customSize={size}\r\n fullWidth={fullWidth}\r\n disableRipple\r\n endIcon={getEndIcon()}\r\n {...props}\r\n >\r\n {children}\r\n </StyledButton>\r\n );\r\n};\r\n"],"names":["styled","MuiButton","_jsx","ArticleRounded","FactCheckRounded"],"mappings":"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"}
|
|
@@ -71,10 +71,11 @@ function mapRequirementTypeToState(reqType) {
|
|
|
71
71
|
return undefined;
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
|
-
const Modal = ({ isOpen, onClose, status, requirementType, description, defaultText, note, onSave, onSubmit, successMessage, errorMessage, onDeclineWording, onPrevious, onNext, currentPage = 1, totalPages = 1, isLoading }) => {
|
|
74
|
+
const Modal = ({ isOpen, onClose, status, requirementType, description, value, defaultText, note, onSave, onSubmit, successMessage, errorMessage, onDeclineWording, onPrevious, onNext, currentPage = 1, totalPages = 1, isLoading }) => {
|
|
75
75
|
const variableState = mapStatusToVariableState(status);
|
|
76
76
|
const variableReqType = mapRequirementTypeToState(requirementType);
|
|
77
|
-
const [textValue, setTextValue] = React.useState(
|
|
77
|
+
const [textValue, setTextValue] = React.useState(value);
|
|
78
|
+
const [prevTextValue, setPrevTextValue] = React.useState(value);
|
|
78
79
|
const [useDefaultValue, setUseDefaultValue] = React.useState(true);
|
|
79
80
|
const [isSaving, setIsSaving] = React.useState(false);
|
|
80
81
|
const [isSubmitting, setIsSubmitting] = React.useState(false);
|
|
@@ -106,8 +107,14 @@ const Modal = ({ isOpen, onClose, status, requirementType, description, defaultT
|
|
|
106
107
|
}
|
|
107
108
|
}, [isLoading]);
|
|
108
109
|
React.useEffect(() => {
|
|
109
|
-
|
|
110
|
-
|
|
110
|
+
if (useDefaultValue) {
|
|
111
|
+
setPrevTextValue(textValue);
|
|
112
|
+
setTextValue(defaultText);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
setTextValue(prevTextValue);
|
|
116
|
+
}
|
|
117
|
+
}, [useDefaultValue]);
|
|
111
118
|
const handleUseDefaultValueChange = (event) => {
|
|
112
119
|
setUseDefaultValue(event.target.checked);
|
|
113
120
|
};
|
|
@@ -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} from '@mui/material';\r\nimport { Button } from './Button';\r\nimport { ArticleRounded, CloseRounded, ErrorOutlineRounded, InfoOutlineRounded, StickyNote2Rounded } from '@mui/icons-material';\r\nimport { Alert } from './Alert';\r\nimport { toast } from 'react-toastify';\r\n\r\nenum VariableState {\r\n Accepted = \"Accepted\",\r\n Pending = \"Pending\",\r\n Rejected = \"Rejected\",\r\n NotAccepted = \"Not Accepted\",\r\n Draft = \"Draft\"\r\n}\r\n\r\nenum RequirementType {\r\n Default = \"Default\",\r\n Optional = \"Optional\"\r\n}\r\n\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 defaultText: 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: 'auto',\r\n height: '40px',\r\n borderRadius: (typeof theme.shape.borderRadius === 'string'\r\n ? parseInt(theme.shape.borderRadius, 10)\r\n : theme.shape.borderRadius || 4) * 2,\r\n border: `2px solid ${theme.palette.dark.main}`,\r\n backgroundColor: theme.palette.light.main,\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\nfunction mapStatusToVariableState(status: string): VariableState | undefined {\r\n switch (status) {\r\n case \"Accepted\":\r\n return VariableState.Accepted;\r\n case \"Pending\":\r\n return VariableState.Pending;\r\n case \"Rejected\":\r\n return VariableState.Rejected;\r\n case \"Not Accepted\":\r\n return VariableState.NotAccepted;\r\n case \"Draft\":\r\n return VariableState.Draft;\r\n default:\r\n return undefined;\r\n }\r\n}\r\n\r\n\r\nfunction mapRequirementTypeToState(reqType: string): RequirementType | undefined {\r\n switch (reqType) {\r\n case \"Default\":\r\n return RequirementType.Default;\r\n case \"Optional\":\r\n return RequirementType.Optional;\r\n default:\r\n return undefined;\r\n }\r\n}\r\n\r\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 defaultText,\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(defaultText);\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 useEffect(() => {\r\n if (variableState === (VariableState.Pending || VariableState.Draft)) {\r\n setUseDefaultValue(false);\r\n }\r\n }, [status]);\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 setTextValue(defaultText);\r\n }, [defaultText]);\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: '#FFC365', label: 'Draft' },\r\n [VariableState.NotAccepted]: { color: '#DBF59A', label: 'Not Accepted' },\r\n [VariableState.Rejected]: { color: '#FFBCB3', label: 'Rejected' },\r\n [VariableState.Accepted]: { color: '#DBF59A', label: 'Accepted' },\r\n };\r\n\r\n const reqTypeConfig = {\r\n [RequirementType.Default]: { color: '#F5A623', label: 'Mandatory' },\r\n [RequirementType.Optional]: { color: '#F5D76E', label: 'Optional' },\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 onSave?.(textValue, useDefaultValue);\r\n };\r\n\r\n\r\n const handleSubmit = () => {\r\n setIsSubmitting(true);\r\n onSubmit?.(textValue, 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 backgroundColor: requirementTypeStyle.color,\r\n color: '#4D3019',\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 <Chip\r\n label={statusStyle.label.toUpperCase()}\r\n sx={{\r\n mr: 3,\r\n backgroundColor: statusStyle.color,\r\n color: '#4D3019',\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 </Box>\r\n\r\n\r\n {/* Description */}\r\n <Typography sx={{ mb: 3, lineHeight: 1.6, whiteSpace: 'pre-line' }}>\r\n {description}\r\n </Typography>\r\n\r\n\r\n {/* Error Alert with Custom Icon */}\r\n {variableState === VariableState.Rejected && 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.Rejected && note && (\r\n <Alert\r\n variant=\"info\"\r\n icon={<ArticleRounded sx={{ fontSize: 20, color: '#4D3019'}} />}\r\n sx={{\r\n mb: 2,\r\n backgroundColor: '#00000000',\r\n borderColor: '#acacacff',\r\n color: '#4D3019',\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={useDefaultValue || canSubmitSave}\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}\r\n onChange={handleUseDefaultValueChange}\r\n sx={{\r\n color: '#AC46FF',\r\n '&.Mui-checked': {\r\n color: '#AC46FF',\r\n },\r\n }}\r\n />\r\n }\r\n label=\"Use Default Value\"\r\n sx={{ mb: 3 }}\r\n />\r\n\r\n\r\n {/* Footer with Buttons and Navigation */}\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 {/* Action Buttons */}\r\n <Box sx={{ display: 'flex', gap: 1.5, flexWrap: 'wrap' }}>\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 <Button\r\n onClick={handleSubmit}\r\n variant=\"outline\"\r\n size=\"md\"\r\n disabled={canSubmitSave}\r\n sx={{\r\n backgroundColor: '#ac46ff52',\r\n '&:hover': {\r\n backgroundColor: '#ac46ff80',\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 (\r\n <>\r\n </>\r\n )\r\n }\r\n </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 <Typography fontWeight={500} fontSize=\"1.125rem\">\r\n {currentPage}/{totalPages}\r\n </Typography>\r\n <NavButton onClick={onPrevious} aria-label=\"Previous\" disabled={isLoading}>\r\n <Typography sx={{ fontSize: 16, fontWeight: 500 }}>Previous</Typography>\r\n </NavButton>\r\n <NavButton onClick={onNext} aria-label=\"Next\" disabled={isLoading}>\r\n <Typography sx={{ fontSize: 16, fontWeight: 500 }}>Next</Typography>\r\n </NavButton>\r\n </Box>\r\n </Box>\r\n </DialogContent>\r\n </StyledDialog>\r\n );\r\n};\r\n"],"names":["styled","Dialog","IconButton","useState","useEffect","toast","_jsxs","_jsx","CloseRounded","DialogContent","Box","Chip","Typography","Alert","InfoOutlineRounded","ArticleRounded","TextField","FormControlLabel","Checkbox","Button","_Fragment","CircularProgress"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Modal.js","sources":["../../../../src/components/Modal.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\r\nimport {\r\n Dialog,\r\n DialogContent,\r\n IconButton,\r\n Box,\r\n Typography,\r\n TextField,\r\n Checkbox,\r\n FormControlLabel,\r\n Alert as MuiAlert,\r\n Chip,\r\n styled,\r\n CircularProgress,\r\n} from '@mui/material';\r\nimport { Button } from './Button';\r\nimport { ArticleRounded, CloseRounded, ErrorOutlineRounded, InfoOutlineRounded, StickyNote2Rounded } from '@mui/icons-material';\r\nimport { Alert } from './Alert';\r\nimport { toast } from 'react-toastify';\r\n\r\nenum VariableState {\r\n Accepted = \"Accepted\",\r\n Pending = \"Pending\",\r\n Rejected = \"Rejected\",\r\n NotAccepted = \"Not Accepted\",\r\n Draft = \"Draft\"\r\n}\r\n\r\nenum RequirementType {\r\n Default = \"Default\",\r\n Optional = \"Optional\"\r\n}\r\n\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 defaultText: 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: 'auto',\r\n height: '40px',\r\n borderRadius: (typeof theme.shape.borderRadius === 'string'\r\n ? parseInt(theme.shape.borderRadius, 10)\r\n : theme.shape.borderRadius || 4) * 2,\r\n border: `2px solid ${theme.palette.dark.main}`,\r\n backgroundColor: theme.palette.light.main,\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\nfunction mapStatusToVariableState(status: string): VariableState | undefined {\r\n switch (status) {\r\n case \"Accepted\":\r\n return VariableState.Accepted;\r\n case \"Pending\":\r\n return VariableState.Pending;\r\n case \"Rejected\":\r\n return VariableState.Rejected;\r\n case \"Not Accepted\":\r\n return VariableState.NotAccepted;\r\n case \"Draft\":\r\n return VariableState.Draft;\r\n default:\r\n return undefined;\r\n }\r\n}\r\n\r\n\r\nfunction mapRequirementTypeToState(reqType: string): RequirementType | undefined {\r\n switch (reqType) {\r\n case \"Default\":\r\n return RequirementType.Default;\r\n case \"Optional\":\r\n return RequirementType.Optional;\r\n default:\r\n return undefined;\r\n }\r\n}\r\n\r\nexport 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 defaultText,\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 useEffect(() => {\r\n if (variableState === (VariableState.Pending || VariableState.Draft)) {\r\n setUseDefaultValue(false);\r\n }\r\n }, [status]);\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(defaultText);\r\n } else {\r\n setTextValue(prevTextValue);\r\n }\r\n }, [useDefaultValue]);\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: '#FFC365', label: 'Draft' },\r\n [VariableState.NotAccepted]: { color: '#DBF59A', label: 'Not Accepted' },\r\n [VariableState.Rejected]: { color: '#FFBCB3', label: 'Rejected' },\r\n [VariableState.Accepted]: { color: '#DBF59A', label: 'Accepted' },\r\n };\r\n\r\n const reqTypeConfig = {\r\n [RequirementType.Default]: { color: '#F5A623', label: 'Mandatory' },\r\n [RequirementType.Optional]: { color: '#F5D76E', label: 'Optional' },\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 onSave?.(textValue, useDefaultValue);\r\n };\r\n\r\n\r\n const handleSubmit = () => {\r\n setIsSubmitting(true);\r\n onSubmit?.(textValue, 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 backgroundColor: requirementTypeStyle.color,\r\n color: '#4D3019',\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 <Chip\r\n label={statusStyle.label.toUpperCase()}\r\n sx={{\r\n mr: 3,\r\n backgroundColor: statusStyle.color,\r\n color: '#4D3019',\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 </Box>\r\n\r\n\r\n {/* Description */}\r\n <Typography sx={{ mb: 3, lineHeight: 1.6, whiteSpace: 'pre-line' }}>\r\n {description}\r\n </Typography>\r\n\r\n\r\n {/* Error Alert with Custom Icon */}\r\n {variableState === VariableState.Rejected && 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.Rejected && note && (\r\n <Alert\r\n variant=\"info\"\r\n icon={<ArticleRounded sx={{ fontSize: 20, color: '#4D3019'}} />}\r\n sx={{\r\n mb: 2,\r\n backgroundColor: '#00000000',\r\n borderColor: '#acacacff',\r\n color: '#4D3019',\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={useDefaultValue || canSubmitSave}\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}\r\n onChange={handleUseDefaultValueChange}\r\n sx={{\r\n color: '#AC46FF',\r\n '&.Mui-checked': {\r\n color: '#AC46FF',\r\n },\r\n }}\r\n />\r\n }\r\n label=\"Use Default Value\"\r\n sx={{ mb: 3 }}\r\n />\r\n\r\n\r\n {/* Footer with Buttons and Navigation */}\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 {/* Action Buttons */}\r\n <Box sx={{ display: 'flex', gap: 1.5, flexWrap: 'wrap' }}>\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 <Button\r\n onClick={handleSubmit}\r\n variant=\"outline\"\r\n size=\"md\"\r\n disabled={canSubmitSave}\r\n sx={{\r\n backgroundColor: '#ac46ff52',\r\n '&:hover': {\r\n backgroundColor: '#ac46ff80',\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 (\r\n <>\r\n </>\r\n )\r\n }\r\n </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 <Typography fontWeight={500} fontSize=\"1.125rem\">\r\n {currentPage}/{totalPages}\r\n </Typography>\r\n <NavButton onClick={onPrevious} aria-label=\"Previous\" disabled={isLoading}>\r\n <Typography sx={{ fontSize: 16, fontWeight: 500 }}>Previous</Typography>\r\n </NavButton>\r\n <NavButton onClick={onNext} aria-label=\"Next\" disabled={isLoading}>\r\n <Typography sx={{ fontSize: 16, fontWeight: 500 }}>Next</Typography>\r\n </NavButton>\r\n </Box>\r\n </Box>\r\n </DialogContent>\r\n </StyledDialog>\r\n );\r\n};\r\n"],"names":["styled","Dialog","IconButton","useState","useEffect","toast","_jsxs","_jsx","CloseRounded","DialogContent","Box","Chip","Typography","Alert","InfoOutlineRounded","ArticleRounded","TextField","FormControlLabel","Checkbox","Button","_Fragment","CircularProgress"],"mappings":"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"}
|
|
@@ -16,7 +16,6 @@ const ReadByContainer = material.styled(material.Box)(({ theme }) => ({
|
|
|
16
16
|
borderRadius: '0 8px 8px 0',
|
|
17
17
|
backgroundColor: theme.palette.custom?.readByBackgroundColor || theme.palette.accent.main,
|
|
18
18
|
[theme.breakpoints.down('sm')]: {
|
|
19
|
-
flexDirection: 'column',
|
|
20
19
|
padding: theme.spacing(1.5),
|
|
21
20
|
},
|
|
22
21
|
}));
|
|
@@ -31,18 +30,41 @@ const ExpandButton = material.styled(material.IconButton)(({ theme }) => ({
|
|
|
31
30
|
opacity: 0.8,
|
|
32
31
|
},
|
|
33
32
|
[theme.breakpoints.down('sm')]: {
|
|
34
|
-
alignSelf: 'flex-
|
|
33
|
+
alignSelf: 'flex-start',
|
|
35
34
|
},
|
|
36
35
|
}));
|
|
37
36
|
const ReadBy = ({ names }) => {
|
|
38
37
|
const theme = ThemeProvider.useTheme();
|
|
39
38
|
const [isExpanded, setIsExpanded] = React.useState(false);
|
|
39
|
+
const [visibleCount, setVisibleCount] = React.useState(names.length);
|
|
40
|
+
const containerRef = React.useRef(null);
|
|
41
|
+
const measureRef = React.useRef(null);
|
|
42
|
+
React.useLayoutEffect(() => {
|
|
43
|
+
if (isExpanded || names.length <= 1) {
|
|
44
|
+
setVisibleCount(names.length);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (containerRef.current && measureRef.current) {
|
|
48
|
+
const containerWidth = containerRef.current.offsetWidth;
|
|
49
|
+
let currentCount = names.length;
|
|
50
|
+
// Try reducing count until the measured text fits
|
|
51
|
+
for (let i = names.length; i > 0; i--) {
|
|
52
|
+
measureRef.current.textContent = names.slice(0, i).join(', ');
|
|
53
|
+
const textWidth = measureRef.current.offsetWidth;
|
|
54
|
+
if (textWidth <= containerWidth - 100) { // Leave space for button and errors
|
|
55
|
+
currentCount = i;
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
setVisibleCount(currentCount - 1);
|
|
60
|
+
}
|
|
61
|
+
}, [names, isExpanded, containerRef.current, measureRef.current]);
|
|
40
62
|
const displayText = isExpanded
|
|
41
63
|
? names.join(', ')
|
|
42
|
-
: names.length
|
|
43
|
-
? `${names.slice(0,
|
|
64
|
+
: visibleCount < names.length
|
|
65
|
+
? `${names.slice(0, visibleCount).join(', ')}...`
|
|
44
66
|
: names.join(', ');
|
|
45
|
-
return (jsxRuntime.jsxs(ReadByContainer, { children: [jsxRuntime.jsxs(material.Box, { sx: { flex: 1, minWidth: 0, wordBreak: 'break-word' }, children: [jsxRuntime.jsx(material.Typography, { component: "span", sx: {
|
|
67
|
+
return (jsxRuntime.jsxs(ReadByContainer, { ref: containerRef, children: [jsxRuntime.jsxs(material.Box, { sx: { flex: 1, minWidth: 0, wordBreak: 'break-word' }, children: [jsxRuntime.jsx(material.Typography, { component: "span", sx: {
|
|
46
68
|
fontSize: { xs: '13px', sm: '14px' },
|
|
47
69
|
fontWeight: 700,
|
|
48
70
|
color: theme.palette.dark.main,
|
|
@@ -50,7 +72,14 @@ const ReadBy = ({ names }) => {
|
|
|
50
72
|
fontSize: { xs: '13px', sm: '14px' },
|
|
51
73
|
color: theme.palette.dark.main,
|
|
52
74
|
ml: 1,
|
|
53
|
-
}, children: displayText })
|
|
75
|
+
}, children: displayText }), jsxRuntime.jsx("span", { ref: measureRef, style: {
|
|
76
|
+
position: 'absolute',
|
|
77
|
+
visibility: 'hidden',
|
|
78
|
+
height: 0,
|
|
79
|
+
whiteSpace: 'nowrap',
|
|
80
|
+
fontSize: '14px',
|
|
81
|
+
fontWeight: 400
|
|
82
|
+
} })] }), names.length > 1 && (jsxRuntime.jsx(ExpandButton, { onClick: () => setIsExpanded(!isExpanded), "aria-label": isExpanded ? 'Collapse' : 'Expand', size: "small", children: isExpanded ? (jsxRuntime.jsx(iconsMaterial.ExpandLessRounded, { sx: { fontSize: 16 } })) : (jsxRuntime.jsx(iconsMaterial.ExpandMoreRounded, { sx: { fontSize: 16 } })) }))] }));
|
|
54
83
|
};
|
|
55
84
|
|
|
56
85
|
exports.ReadBy = ReadBy;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReadBy.js","sources":["../../../../src/components/ReadBy.tsx"],"sourcesContent":["\r\n\r\nimport React, { useState } from 'react';\r\nimport { Box, IconButton, Typography, styled } from '@mui/material';\r\nimport { useTheme } from '../ThemeProvider';\r\nimport { ExpandLessRounded, ExpandMoreRounded } from '@mui/icons-material';\r\n\r\ninterface ReadByProps {\r\n names: string[];\r\n}\r\n\r\nconst ReadByContainer = styled(Box)(({ theme }) => ({\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'flex-start',\r\n gap: theme.spacing(2),\r\n padding: theme.spacing(2),\r\n borderLeft: `4px solid ${theme.palette.primary.main}`,\r\n borderRadius: '0 8px 8px 0',\r\n backgroundColor: theme.palette.custom?.readByBackgroundColor || theme.palette.accent.main,\r\n [theme.breakpoints.down('sm')]: {\r\n
|
|
1
|
+
{"version":3,"file":"ReadBy.js","sources":["../../../../src/components/ReadBy.tsx"],"sourcesContent":["\r\n\r\nimport React, { useLayoutEffect, useRef, useState } from 'react';\r\nimport { Box, IconButton, Typography, styled } from '@mui/material';\r\nimport { useTheme } from '../ThemeProvider';\r\nimport { ExpandLessRounded, ExpandMoreRounded } from '@mui/icons-material';\r\n\r\ninterface ReadByProps {\r\n names: string[];\r\n}\r\n\r\nconst ReadByContainer = styled(Box)(({ theme }) => ({\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'flex-start',\r\n gap: theme.spacing(2),\r\n padding: theme.spacing(2),\r\n borderLeft: `4px solid ${theme.palette.primary.main}`,\r\n borderRadius: '0 8px 8px 0',\r\n backgroundColor: theme.palette.custom?.readByBackgroundColor || theme.palette.accent.main,\r\n [theme.breakpoints.down('sm')]: {\r\n padding: theme.spacing(1.5),\r\n },\r\n}));\r\n\r\nconst ExpandButton = styled(IconButton)(({ theme }) => ({\r\n width: 32,\r\n height: 32,\r\n backgroundColor: '#4d3019',\r\n color: '#fff',\r\n flexShrink: 0,\r\n '&:hover': {\r\n backgroundColor: '#4d3019',\r\n opacity: 0.8,\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n alignSelf: 'flex-start',\r\n },\r\n}));\r\n\r\nexport const ReadBy: React.FC<ReadByProps> = ({ names }) => {\r\n const theme = useTheme();\r\n const [isExpanded, setIsExpanded] = useState(false);\r\n const [visibleCount, setVisibleCount] = useState(names.length);\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const measureRef = useRef<HTMLSpanElement>(null);\r\n\r\n useLayoutEffect(() => {\r\n if (isExpanded || names.length <= 1) {\r\n setVisibleCount(names.length);\r\n return;\r\n }\r\n\r\n if (containerRef.current && measureRef.current) {\r\n const containerWidth = containerRef.current.offsetWidth;\r\n let currentCount = names.length;\r\n \r\n // Try reducing count until the measured text fits\r\n for (let i = names.length; i > 0; i--) {\r\n measureRef.current.textContent = names.slice(0, i).join(', ');\r\n const textWidth = measureRef.current.offsetWidth;\r\n if (textWidth <= containerWidth - 100) { // Leave space for button and errors\r\n currentCount = i;\r\n break;\r\n }\r\n }\r\n setVisibleCount(currentCount - 1);\r\n }\r\n }, [names, isExpanded, containerRef.current, measureRef.current]);\r\n\r\n const displayText = isExpanded\r\n ? names.join(', ')\r\n : visibleCount < names.length\r\n ? `${names.slice(0, visibleCount).join(', ')}...`\r\n : names.join(', ');\r\n\r\n return (\r\n <ReadByContainer ref={containerRef}>\r\n <Box sx={{ flex: 1, minWidth: 0, wordBreak: 'break-word' }}>\r\n <Typography\r\n component=\"span\"\r\n sx={{\r\n fontSize: { xs: '13px', sm: '14px' },\r\n fontWeight: 700,\r\n color: theme.palette.dark.main,\r\n }}\r\n >\r\n Read by:\r\n </Typography>\r\n <Typography\r\n component=\"span\"\r\n sx={{\r\n fontSize: { xs: '13px', sm: '14px' },\r\n color: theme.palette.dark.main,\r\n ml: 1,\r\n }}\r\n >\r\n {displayText}\r\n </Typography>\r\n {/* Hidden span for measurement */}\r\n <span ref={measureRef} style={{\r\n position: 'absolute',\r\n visibility: 'hidden',\r\n height: 0,\r\n whiteSpace: 'nowrap',\r\n fontSize: '14px',\r\n fontWeight: 400\r\n }} />\r\n </Box>\r\n {names.length > 1 && (\r\n <ExpandButton\r\n onClick={() => setIsExpanded(!isExpanded)}\r\n aria-label={isExpanded ? 'Collapse' : 'Expand'}\r\n size=\"small\"\r\n >\r\n {isExpanded ? (\r\n <ExpandLessRounded sx={{fontSize: 16}} />\r\n ) : (\r\n <ExpandMoreRounded sx={{fontSize: 16}} />\r\n )}\r\n </ExpandButton>\r\n )}\r\n </ReadByContainer>\r\n );\r\n};"],"names":["styled","Box","IconButton","useTheme","useState","useRef","useLayoutEffect","_jsxs","_jsx","Typography","ExpandLessRounded","ExpandMoreRounded"],"mappings":"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"}
|
|
@@ -69,7 +69,7 @@ const theme = createTheme({
|
|
|
69
69
|
primaryButtonTextColor: '#FFFFFF',
|
|
70
70
|
readByBackgroundColor: '#ebc7ff',
|
|
71
71
|
stepIndicatorTextColor: '#FFFFFF',
|
|
72
|
-
markAsReadBackgroundColor: '#
|
|
72
|
+
markAsReadBackgroundColor: '#ebc7ff8e',
|
|
73
73
|
tabBackgroundColor: '#F8F0FC',
|
|
74
74
|
},
|
|
75
75
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeProvider.js","sources":["../../../src/ThemeProvider.tsx"],"sourcesContent":["import { createTheme, ThemeProvider as MuiThemeProvider } from '@mui/material/styles';\r\nimport { CssBaseline } from '@mui/material';\r\nimport * as React from 'react';\r\nimport './theme-types';\r\nimport { ToastContainer } from 'react-toastify';\r\n\r\nconst theme = createTheme({\r\n palette: {\r\n mode: 'light',\r\n primary: {\r\n main: '#AD46FF',\r\n light: '#AD46FF',\r\n dark: '#AD46FF',\r\n contrastText: '#FFFFFF',\r\n },\r\n secondary: {\r\n main: '#D79AFC',\r\n light: '#D79AFC',\r\n dark: '#D79AFC',\r\n contrastText: '#FFFFFF',\r\n },\r\n error: {\r\n main: '#F56B6B',\r\n light: '#F56B6B',\r\n dark: '#F56B6B',\r\n contrastText: '#FFFFFF',\r\n },\r\n warning: {\r\n main: '#F5D76E',\r\n light: '#F5D76E',\r\n dark: '#F5D76E',\r\n contrastText: '#FFFBFF',\r\n },\r\n info: {\r\n main: '#F5A623',\r\n light: '#F5A623',\r\n dark: '#F5A623',\r\n contrastText: '#FFFFFF',\r\n },\r\n success: {\r\n main: '#A3D977',\r\n light: '#A3D977',\r\n dark: '#A3D977',\r\n contrastText: '#FFFFFF',\r\n },\r\n background: {\r\n default: '#FDFCEE',\r\n paper: '#FEFDF7',\r\n },\r\n text: {\r\n primary: '#4D3019',\r\n secondary: '#826E5C',\r\n disabled: '#93908F',\r\n },\r\n divider: '#C6C7C0',\r\n accent: {\r\n main: '#FFEDD1',\r\n },\r\n dark: {\r\n main: '#4D3019',\r\n },\r\n light: {\r\n main: '#FEFDF7',\r\n },\r\n markedRead: {\r\n main: '#A3D977',\r\n },\r\n custom: {\r\n iconColor: '#ebc7ff',\r\n primaryButtonTextColor: '#FFFFFF',\r\n readByBackgroundColor: '#ebc7ff',\r\n stepIndicatorTextColor: '#FFFFFF',\r\n markAsReadBackgroundColor: '#ebc7ff',\r\n tabBackgroundColor: '#F8F0FC',\r\n },\r\n },\r\n typography: {\r\n fontFamily: ['Inter', '-apple-system', 'BlinkMacSystemFont', 'Segoe UI', 'Roboto', 'sans-serif'].join(','),\r\n h1: {\r\n color: '#4D3019',\r\n fontWeight: 700,\r\n fontSize: '2.5rem',\r\n lineHeight: 1.2,\r\n },\r\n h2: {\r\n color: '#4D3019',\r\n fontWeight: 700,\r\n fontSize: '2rem',\r\n lineHeight: 1.3,\r\n },\r\n h3: {\r\n color: '#4D3019',\r\n fontWeight: 600,\r\n fontSize: '1.75rem',\r\n lineHeight: 1.3,\r\n },\r\n h4: {\r\n color: '#4D3019',\r\n fontWeight: 600,\r\n fontSize: '1.5rem',\r\n lineHeight: 1.4,\r\n },\r\n h5: {\r\n color: '#4D3019',\r\n fontWeight: 600,\r\n fontSize: '1.25rem',\r\n lineHeight: 1.4,\r\n },\r\n h6: {\r\n color: '#4D3019',\r\n fontWeight: 600,\r\n fontSize: '1rem',\r\n lineHeight: 1.4,\r\n },\r\n body1: {\r\n color: '#4D3019',\r\n fontWeight: 400,\r\n fontSize: '1rem',\r\n lineHeight: 1.5,\r\n },\r\n body2: {\r\n color: '#826E5C',\r\n fontWeight: 400,\r\n fontSize: '0.875rem',\r\n lineHeight: 1.5,\r\n },\r\n subtitle1: {\r\n color: '#4D3019',\r\n fontWeight: 500,\r\n fontSize: '1rem',\r\n lineHeight: 1.5,\r\n },\r\n subtitle2: {\r\n color: '#826E5C',\r\n fontWeight: 500,\r\n fontSize: '0.875rem',\r\n lineHeight: 1.5,\r\n },\r\n button: {\r\n color: '#4D3019',\r\n fontWeight: 500,\r\n fontSize: '0.875rem',\r\n lineHeight: 1.75,\r\n textTransform: 'none',\r\n },\r\n caption: {\r\n color: '#826E5C',\r\n fontWeight: 400,\r\n fontSize: '0.75rem',\r\n lineHeight: 1.66,\r\n },\r\n overline: {\r\n color: '#826E5C',\r\n fontWeight: 500,\r\n fontSize: '0.75rem',\r\n lineHeight: 2.66,\r\n textTransform: 'uppercase',\r\n letterSpacing: '0.08em',\r\n },\r\n },\r\n shape: {\r\n borderRadius: 4,\r\n },\r\n breakpoints: {\r\n values: {\r\n xs: 320,\r\n sm: 640,\r\n md: 768,\r\n lg: 1024,\r\n xl: 1280,\r\n },\r\n },\r\n components: {\r\n MuiTypography: {\r\n defaultProps: {\r\n variantMapping: {\r\n h1: 'h1',\r\n h2: 'h2',\r\n h3: 'h3',\r\n h4: 'h4',\r\n h5: 'h5',\r\n h6: 'h6',\r\n subtitle1: 'p',\r\n subtitle2: 'p',\r\n body1: 'p',\r\n body2: 'p',\r\n },\r\n },\r\n },\r\n MuiCssBaseline: {\r\n styleOverrides: {\r\n body: {\r\n WebkitFontSmoothing: 'antialiased',\r\n MozOsxFontSmoothing: 'grayscale',\r\n backgroundColor: '#FDFCEE',\r\n color: '#4D3019',\r\n },\r\n 'input[type=\"checkbox\"], input[type=\"radio\"]': {\r\n accentColor: '#D79AFC',\r\n },\r\n 'h1, h2, h3, h4, h5, h6': {\r\n fontWeight: 'inherit !important',\r\n },\r\n '.MuiTypography-h1': {\r\n fontWeight: '700 !important',\r\n },\r\n '.MuiTypography-h2': {\r\n fontWeight: '700 !important',\r\n },\r\n '.MuiTypography-h3': {\r\n fontWeight: '600 !important',\r\n },\r\n '.MuiTypography-h4': {\r\n fontWeight: '600 !important',\r\n },\r\n '.MuiTypography-h5': {\r\n fontWeight: '600 !important',\r\n },\r\n '.MuiTypography-h6': {\r\n fontWeight: '600 !important',\r\n },\r\n },\r\n },\r\n },\r\n appName: 'ECE Docs',\r\n});\r\n\r\n\r\nexport const ThemeProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\r\n return (\r\n <MuiThemeProvider theme={theme}>\r\n <CssBaseline />\r\n {children}\r\n <ToastContainer />\r\n </MuiThemeProvider>\r\n );\r\n};\r\n\r\n\r\nexport const useTheme = () => {\r\n return theme;\r\n};\r\n"],"names":["_jsxs","MuiThemeProvider","_jsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ThemeProvider.js","sources":["../../../src/ThemeProvider.tsx"],"sourcesContent":["import { createTheme, ThemeProvider as MuiThemeProvider } from '@mui/material/styles';\r\nimport { CssBaseline } from '@mui/material';\r\nimport * as React from 'react';\r\nimport './theme-types';\r\nimport { ToastContainer } from 'react-toastify';\r\n\r\nconst theme = createTheme({\r\n palette: {\r\n mode: 'light',\r\n primary: {\r\n main: '#AD46FF',\r\n light: '#AD46FF',\r\n dark: '#AD46FF',\r\n contrastText: '#FFFFFF',\r\n },\r\n secondary: {\r\n main: '#D79AFC',\r\n light: '#D79AFC',\r\n dark: '#D79AFC',\r\n contrastText: '#FFFFFF',\r\n },\r\n error: {\r\n main: '#F56B6B',\r\n light: '#F56B6B',\r\n dark: '#F56B6B',\r\n contrastText: '#FFFFFF',\r\n },\r\n warning: {\r\n main: '#F5D76E',\r\n light: '#F5D76E',\r\n dark: '#F5D76E',\r\n contrastText: '#FFFBFF',\r\n },\r\n info: {\r\n main: '#F5A623',\r\n light: '#F5A623',\r\n dark: '#F5A623',\r\n contrastText: '#FFFFFF',\r\n },\r\n success: {\r\n main: '#A3D977',\r\n light: '#A3D977',\r\n dark: '#A3D977',\r\n contrastText: '#FFFFFF',\r\n },\r\n background: {\r\n default: '#FDFCEE',\r\n paper: '#FEFDF7',\r\n },\r\n text: {\r\n primary: '#4D3019',\r\n secondary: '#826E5C',\r\n disabled: '#93908F',\r\n },\r\n divider: '#C6C7C0',\r\n accent: {\r\n main: '#FFEDD1',\r\n },\r\n dark: {\r\n main: '#4D3019',\r\n },\r\n light: {\r\n main: '#FEFDF7',\r\n },\r\n markedRead: {\r\n main: '#A3D977',\r\n },\r\n custom: {\r\n iconColor: '#ebc7ff',\r\n primaryButtonTextColor: '#FFFFFF',\r\n readByBackgroundColor: '#ebc7ff',\r\n stepIndicatorTextColor: '#FFFFFF',\r\n markAsReadBackgroundColor: '#ebc7ff8e',\r\n tabBackgroundColor: '#F8F0FC',\r\n },\r\n },\r\n typography: {\r\n fontFamily: ['Inter', '-apple-system', 'BlinkMacSystemFont', 'Segoe UI', 'Roboto', 'sans-serif'].join(','),\r\n h1: {\r\n color: '#4D3019',\r\n fontWeight: 700,\r\n fontSize: '2.5rem',\r\n lineHeight: 1.2,\r\n },\r\n h2: {\r\n color: '#4D3019',\r\n fontWeight: 700,\r\n fontSize: '2rem',\r\n lineHeight: 1.3,\r\n },\r\n h3: {\r\n color: '#4D3019',\r\n fontWeight: 600,\r\n fontSize: '1.75rem',\r\n lineHeight: 1.3,\r\n },\r\n h4: {\r\n color: '#4D3019',\r\n fontWeight: 600,\r\n fontSize: '1.5rem',\r\n lineHeight: 1.4,\r\n },\r\n h5: {\r\n color: '#4D3019',\r\n fontWeight: 600,\r\n fontSize: '1.25rem',\r\n lineHeight: 1.4,\r\n },\r\n h6: {\r\n color: '#4D3019',\r\n fontWeight: 600,\r\n fontSize: '1rem',\r\n lineHeight: 1.4,\r\n },\r\n body1: {\r\n color: '#4D3019',\r\n fontWeight: 400,\r\n fontSize: '1rem',\r\n lineHeight: 1.5,\r\n },\r\n body2: {\r\n color: '#826E5C',\r\n fontWeight: 400,\r\n fontSize: '0.875rem',\r\n lineHeight: 1.5,\r\n },\r\n subtitle1: {\r\n color: '#4D3019',\r\n fontWeight: 500,\r\n fontSize: '1rem',\r\n lineHeight: 1.5,\r\n },\r\n subtitle2: {\r\n color: '#826E5C',\r\n fontWeight: 500,\r\n fontSize: '0.875rem',\r\n lineHeight: 1.5,\r\n },\r\n button: {\r\n color: '#4D3019',\r\n fontWeight: 500,\r\n fontSize: '0.875rem',\r\n lineHeight: 1.75,\r\n textTransform: 'none',\r\n },\r\n caption: {\r\n color: '#826E5C',\r\n fontWeight: 400,\r\n fontSize: '0.75rem',\r\n lineHeight: 1.66,\r\n },\r\n overline: {\r\n color: '#826E5C',\r\n fontWeight: 500,\r\n fontSize: '0.75rem',\r\n lineHeight: 2.66,\r\n textTransform: 'uppercase',\r\n letterSpacing: '0.08em',\r\n },\r\n },\r\n shape: {\r\n borderRadius: 4,\r\n },\r\n breakpoints: {\r\n values: {\r\n xs: 320,\r\n sm: 640,\r\n md: 768,\r\n lg: 1024,\r\n xl: 1280,\r\n },\r\n },\r\n components: {\r\n MuiTypography: {\r\n defaultProps: {\r\n variantMapping: {\r\n h1: 'h1',\r\n h2: 'h2',\r\n h3: 'h3',\r\n h4: 'h4',\r\n h5: 'h5',\r\n h6: 'h6',\r\n subtitle1: 'p',\r\n subtitle2: 'p',\r\n body1: 'p',\r\n body2: 'p',\r\n },\r\n },\r\n },\r\n MuiCssBaseline: {\r\n styleOverrides: {\r\n body: {\r\n WebkitFontSmoothing: 'antialiased',\r\n MozOsxFontSmoothing: 'grayscale',\r\n backgroundColor: '#FDFCEE',\r\n color: '#4D3019',\r\n },\r\n 'input[type=\"checkbox\"], input[type=\"radio\"]': {\r\n accentColor: '#D79AFC',\r\n },\r\n 'h1, h2, h3, h4, h5, h6': {\r\n fontWeight: 'inherit !important',\r\n },\r\n '.MuiTypography-h1': {\r\n fontWeight: '700 !important',\r\n },\r\n '.MuiTypography-h2': {\r\n fontWeight: '700 !important',\r\n },\r\n '.MuiTypography-h3': {\r\n fontWeight: '600 !important',\r\n },\r\n '.MuiTypography-h4': {\r\n fontWeight: '600 !important',\r\n },\r\n '.MuiTypography-h5': {\r\n fontWeight: '600 !important',\r\n },\r\n '.MuiTypography-h6': {\r\n fontWeight: '600 !important',\r\n },\r\n },\r\n },\r\n },\r\n appName: 'ECE Docs',\r\n});\r\n\r\n\r\nexport const ThemeProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\r\n return (\r\n <MuiThemeProvider theme={theme}>\r\n <CssBaseline />\r\n {children}\r\n <ToastContainer />\r\n </MuiThemeProvider>\r\n );\r\n};\r\n\r\n\r\nexport const useTheme = () => {\r\n return theme;\r\n};\r\n"],"names":["_jsxs","MuiThemeProvider","_jsx"],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { Button as Button$1 } from '@mui/material';
|
|
3
3
|
import { styled } from '@mui/material/styles';
|
|
4
|
+
import { ArticleRounded, FactCheckRounded } from '@mui/icons-material';
|
|
4
5
|
|
|
5
6
|
const StyledButton = styled(Button$1, {
|
|
6
7
|
shouldForwardProp: (prop) => prop !== 'customVariant' && prop !== 'customSize',
|
|
@@ -72,6 +73,9 @@ const StyledButton = styled(Button$1, {
|
|
|
72
73
|
},
|
|
73
74
|
'marked-read': {
|
|
74
75
|
backgroundColor: 'rgba(163, 217, 119, 0.1)',
|
|
76
|
+
fontSize: '14px',
|
|
77
|
+
border: '1px solid',
|
|
78
|
+
padding: '2px 8px',
|
|
75
79
|
borderColor: currentTheme.markedRead.main, // Visible border
|
|
76
80
|
color: currentTheme.dark.main,
|
|
77
81
|
'&:hover': {
|
|
@@ -81,6 +85,9 @@ const StyledButton = styled(Button$1, {
|
|
|
81
85
|
},
|
|
82
86
|
'mark-read': {
|
|
83
87
|
backgroundColor: currentTheme.custom?.markAsReadBackgroundColor || currentTheme.accent.main,
|
|
88
|
+
border: '1px solid',
|
|
89
|
+
fontSize: '14px',
|
|
90
|
+
padding: '2px 8px',
|
|
84
91
|
borderColor: currentTheme.custom?.markAsReadBorderColor || currentTheme.secondary.main, // Visible border
|
|
85
92
|
color: currentTheme.dark.main,
|
|
86
93
|
'&:hover': {
|
|
@@ -103,8 +110,18 @@ const StyledButton = styled(Button$1, {
|
|
|
103
110
|
...variantStyles[customVariant],
|
|
104
111
|
};
|
|
105
112
|
});
|
|
106
|
-
const Button = ({ variant = 'primary', size = 'md', children, fullWidth = false, ...props }) => {
|
|
107
|
-
|
|
113
|
+
const Button = ({ variant = 'primary', size = 'md', children, endIcon, fullWidth = false, ...props }) => {
|
|
114
|
+
// Logic for special end icons per variant
|
|
115
|
+
const getEndIcon = () => {
|
|
116
|
+
if (variant === 'mark-read') {
|
|
117
|
+
return (jsx(ArticleRounded, { sx: { fontSize: 22, color: '#925cdb' } }));
|
|
118
|
+
}
|
|
119
|
+
if (variant === 'marked-read') {
|
|
120
|
+
return jsx(FactCheckRounded, { sx: { fontSize: 22, color: '#5a9c1a' } });
|
|
121
|
+
}
|
|
122
|
+
return endIcon || null;
|
|
123
|
+
};
|
|
124
|
+
return (jsx(StyledButton, { customVariant: variant, customSize: size, fullWidth: fullWidth, disableRipple: true, endIcon: getEndIcon(), ...props, children: children }));
|
|
108
125
|
};
|
|
109
126
|
|
|
110
127
|
export { Button };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.js","sources":["../../../../src/components/Button.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Button as MuiButton, ButtonProps as MuiButtonProps } from '@mui/material';\r\nimport { styled } from '@mui/material/styles';\r\n\r\ninterface CustomButtonProps extends Omit<MuiButtonProps, 'variant' | 'size'> {\r\n variant?: 'primary' | 'secondary' | 'outline' | 'marked-read' | 'mark-read' | 'danger';\r\n size?: 'sm' | 'md' | 'lg';\r\n}\r\n\r\nconst StyledButton = styled(MuiButton, {\r\n shouldForwardProp: (prop) => prop !== 'customVariant' && prop !== 'customSize',\r\n})<{ customVariant: string; customSize: string }>(({ theme, customVariant, customSize }) => {\r\n const currentTheme = theme.palette;\r\n\r\n // Size styles\r\n const sizeStyles = {\r\n sm: {\r\n padding: '6px 12px',\r\n fontSize: '0.875rem',\r\n },\r\n md: {\r\n padding: '10px 16px',\r\n fontSize: '1rem',\r\n },\r\n lg: {\r\n padding: '12px 24px',\r\n fontSize: '1.125rem',\r\n },\r\n };\r\n\r\n const baseStyles = {\r\n fontWeight: 500,\r\n borderRadius: (typeof theme.shape.borderRadius === 'string'\r\n ? parseInt(theme.shape.borderRadius, 10)\r\n : theme.shape.borderRadius || 4) * 2,\r\n textTransform: 'none' as const,\r\n transition: 'all 0.2s',\r\n boxShadow: 'none',\r\n border: '2px solid transparent',\r\n '&:hover': {\r\n boxShadow: 'none',\r\n },\r\n '&.Mui-disabled': {\r\n opacity: 0.5,\r\n cursor: 'not-allowed',\r\n },\r\n ...sizeStyles[customSize as keyof typeof sizeStyles],\r\n };\r\n\r\n // Variant styles\r\n const variantStyles = {\r\n primary: {\r\n backgroundColor: currentTheme.primary.main,\r\n color: currentTheme.custom?.primaryButtonTextColor || '#FFFFFF',\r\n borderColor: 'transparent', // Transparent border\r\n boxShadow: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\r\n '&:hover': {\r\n backgroundColor: currentTheme.primary.main,\r\n opacity: 0.9,\r\n },\r\n },\r\n secondary: {\r\n backgroundColor: currentTheme.secondary.main,\r\n color: currentTheme.dark.main,\r\n borderColor: 'transparent', // Transparent border\r\n boxShadow: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\r\n '&:hover': {\r\n backgroundColor: currentTheme.secondary.main,\r\n opacity: 0.9,\r\n },\r\n },\r\n outline: {\r\n backgroundColor: currentTheme.light.main,\r\n borderColor: 'rgba(77, 48, 25, 0.2)', // Visible border\r\n color: currentTheme.dark.main,\r\n '&:hover': {\r\n backgroundColor: 'rgba(77, 48, 25, 0.05)',\r\n borderColor: 'rgba(77, 48, 25, 0.3)',\r\n },\r\n },\r\n 'marked-read': {\r\n backgroundColor: 'rgba(163, 217, 119, 0.1)',\r\n borderColor: currentTheme.markedRead.main, // Visible border\r\n color: currentTheme.dark.main,\r\n '&:hover': {\r\n backgroundColor: 'rgba(163, 217, 119, 0.2)',\r\n cursor: 'not-allowed',\r\n },\r\n },\r\n 'mark-read': {\r\n backgroundColor: currentTheme.custom?.markAsReadBackgroundColor || currentTheme.accent.main,\r\n borderColor: currentTheme.custom?.markAsReadBorderColor || currentTheme.secondary.main, // Visible border\r\n color: currentTheme.dark.main,\r\n '&:hover': {\r\n opacity: 0.9,\r\n },\r\n },\r\n danger: {\r\n backgroundColor: '#D32F2F',\r\n color: '#FFFFFF',\r\n borderColor: 'transparent', // Transparent border\r\n boxShadow: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\r\n '&:hover': {\r\n backgroundColor: '#B71C1C',\r\n opacity: 0.9,\r\n },\r\n },\r\n };\r\n\r\n return {\r\n ...baseStyles,\r\n ...variantStyles[customVariant as keyof typeof variantStyles],\r\n };\r\n});\r\n\r\nexport const Button: React.FC<CustomButtonProps> = ({\r\n variant = 'primary',\r\n size = 'md',\r\n children,\r\n fullWidth = false,\r\n ...props\r\n}) => {\r\n return (\r\n <StyledButton\r\n customVariant={variant}\r\n customSize={size}\r\n fullWidth={fullWidth}\r\n disableRipple\r\n {...props}\r\n >\r\n {children}\r\n </StyledButton>\r\n );\r\n};\r\n"],"names":["MuiButton","_jsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Button.js","sources":["../../../../src/components/Button.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Button as MuiButton, ButtonProps as MuiButtonProps } from '@mui/material';\r\nimport { styled } from '@mui/material/styles';\r\nimport { ArticleRounded, FactCheckRounded } from '@mui/icons-material';\r\n\r\ninterface CustomButtonProps extends Omit<MuiButtonProps, 'variant' | 'size'> {\r\n variant?: 'primary' | 'secondary' | 'outline' | 'marked-read' | 'mark-read' | 'danger';\r\n size?: 'sm' | 'md' | 'lg';\r\n}\r\n\r\nconst StyledButton = styled(MuiButton, {\r\n shouldForwardProp: (prop) => prop !== 'customVariant' && prop !== 'customSize',\r\n})<{ customVariant: string; customSize: string }>(({ theme, customVariant, customSize }) => {\r\n const currentTheme = theme.palette;\r\n\r\n // Size styles\r\n const sizeStyles = {\r\n sm: {\r\n padding: '6px 12px',\r\n fontSize: '0.875rem',\r\n },\r\n md: {\r\n padding: '10px 16px',\r\n fontSize: '1rem',\r\n },\r\n lg: {\r\n padding: '12px 24px',\r\n fontSize: '1.125rem',\r\n },\r\n };\r\n\r\n const baseStyles = {\r\n fontWeight: 500,\r\n borderRadius: (typeof theme.shape.borderRadius === 'string'\r\n ? parseInt(theme.shape.borderRadius, 10)\r\n : theme.shape.borderRadius || 4) * 2,\r\n textTransform: 'none' as const,\r\n transition: 'all 0.2s',\r\n boxShadow: 'none',\r\n border: '2px solid transparent',\r\n '&:hover': {\r\n boxShadow: 'none',\r\n },\r\n '&.Mui-disabled': {\r\n opacity: 0.5,\r\n cursor: 'not-allowed',\r\n },\r\n ...sizeStyles[customSize as keyof typeof sizeStyles],\r\n };\r\n\r\n // Variant styles\r\n const variantStyles = {\r\n primary: {\r\n backgroundColor: currentTheme.primary.main,\r\n color: currentTheme.custom?.primaryButtonTextColor || '#FFFFFF',\r\n borderColor: 'transparent', // Transparent border\r\n boxShadow: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\r\n '&:hover': {\r\n backgroundColor: currentTheme.primary.main,\r\n opacity: 0.9,\r\n },\r\n },\r\n secondary: {\r\n backgroundColor: currentTheme.secondary.main,\r\n color: currentTheme.dark.main,\r\n borderColor: 'transparent', // Transparent border\r\n boxShadow: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\r\n '&:hover': {\r\n backgroundColor: currentTheme.secondary.main,\r\n opacity: 0.9,\r\n },\r\n },\r\n outline: {\r\n backgroundColor: currentTheme.light.main,\r\n borderColor: 'rgba(77, 48, 25, 0.2)', // Visible border\r\n color: currentTheme.dark.main,\r\n '&:hover': {\r\n backgroundColor: 'rgba(77, 48, 25, 0.05)',\r\n borderColor: 'rgba(77, 48, 25, 0.3)',\r\n },\r\n },\r\n 'marked-read': {\r\n backgroundColor: 'rgba(163, 217, 119, 0.1)',\r\n fontSize: '14px',\r\n border: '1px solid',\r\n padding: '2px 8px',\r\n borderColor: currentTheme.markedRead.main, // Visible border\r\n color: currentTheme.dark.main,\r\n '&:hover': {\r\n backgroundColor: 'rgba(163, 217, 119, 0.2)',\r\n cursor: 'not-allowed',\r\n },\r\n },\r\n 'mark-read': {\r\n backgroundColor: currentTheme.custom?.markAsReadBackgroundColor || currentTheme.accent.main,\r\n border: '1px solid',\r\n fontSize: '14px',\r\n padding: '2px 8px',\r\n borderColor: currentTheme.custom?.markAsReadBorderColor || currentTheme.secondary.main, // Visible border\r\n color: currentTheme.dark.main,\r\n '&:hover': {\r\n opacity: 0.9,\r\n },\r\n },\r\n danger: {\r\n backgroundColor: '#D32F2F',\r\n color: '#FFFFFF',\r\n borderColor: 'transparent', // Transparent border\r\n boxShadow: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\r\n '&:hover': {\r\n backgroundColor: '#B71C1C',\r\n opacity: 0.9,\r\n },\r\n },\r\n };\r\n\r\n return {\r\n ...baseStyles,\r\n ...variantStyles[customVariant as keyof typeof variantStyles],\r\n };\r\n});\r\n\r\nexport const Button: React.FC<CustomButtonProps> = ({\r\n variant = 'primary',\r\n size = 'md',\r\n children,\r\n endIcon,\r\n fullWidth = false,\r\n ...props\r\n}) => {\r\n // Logic for special end icons per variant\r\n const getEndIcon = () => {\r\n if (variant === 'mark-read') {\r\n return (\r\n <ArticleRounded sx={{ fontSize: 22, color: '#925cdb' }} />\r\n );\r\n }\r\n\r\n if (variant === 'marked-read') {\r\n return <FactCheckRounded sx={{ fontSize: 22, color: '#5a9c1a' }} />;\r\n }\r\n\r\n return endIcon || null;\r\n };\r\n\r\n return (\r\n <StyledButton\r\n customVariant={variant}\r\n customSize={size}\r\n fullWidth={fullWidth}\r\n disableRipple\r\n endIcon={getEndIcon()}\r\n {...props}\r\n >\r\n {children}\r\n </StyledButton>\r\n );\r\n};\r\n"],"names":["MuiButton","_jsx"],"mappings":"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"}
|
|
@@ -69,10 +69,11 @@ function mapRequirementTypeToState(reqType) {
|
|
|
69
69
|
return undefined;
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
|
-
const Modal = ({ isOpen, onClose, status, requirementType, description, defaultText, note, onSave, onSubmit, successMessage, errorMessage, onDeclineWording, onPrevious, onNext, currentPage = 1, totalPages = 1, isLoading }) => {
|
|
72
|
+
const Modal = ({ isOpen, onClose, status, requirementType, description, value, defaultText, note, onSave, onSubmit, successMessage, errorMessage, onDeclineWording, onPrevious, onNext, currentPage = 1, totalPages = 1, isLoading }) => {
|
|
73
73
|
const variableState = mapStatusToVariableState(status);
|
|
74
74
|
const variableReqType = mapRequirementTypeToState(requirementType);
|
|
75
|
-
const [textValue, setTextValue] = useState(
|
|
75
|
+
const [textValue, setTextValue] = useState(value);
|
|
76
|
+
const [prevTextValue, setPrevTextValue] = useState(value);
|
|
76
77
|
const [useDefaultValue, setUseDefaultValue] = useState(true);
|
|
77
78
|
const [isSaving, setIsSaving] = useState(false);
|
|
78
79
|
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
@@ -104,8 +105,14 @@ const Modal = ({ isOpen, onClose, status, requirementType, description, defaultT
|
|
|
104
105
|
}
|
|
105
106
|
}, [isLoading]);
|
|
106
107
|
useEffect(() => {
|
|
107
|
-
|
|
108
|
-
|
|
108
|
+
if (useDefaultValue) {
|
|
109
|
+
setPrevTextValue(textValue);
|
|
110
|
+
setTextValue(defaultText);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
setTextValue(prevTextValue);
|
|
114
|
+
}
|
|
115
|
+
}, [useDefaultValue]);
|
|
109
116
|
const handleUseDefaultValueChange = (event) => {
|
|
110
117
|
setUseDefaultValue(event.target.checked);
|
|
111
118
|
};
|
|
@@ -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} from '@mui/material';\r\nimport { Button } from './Button';\r\nimport { ArticleRounded, CloseRounded, ErrorOutlineRounded, InfoOutlineRounded, StickyNote2Rounded } from '@mui/icons-material';\r\nimport { Alert } from './Alert';\r\nimport { toast } from 'react-toastify';\r\n\r\nenum VariableState {\r\n Accepted = \"Accepted\",\r\n Pending = \"Pending\",\r\n Rejected = \"Rejected\",\r\n NotAccepted = \"Not Accepted\",\r\n Draft = \"Draft\"\r\n}\r\n\r\nenum RequirementType {\r\n Default = \"Default\",\r\n Optional = \"Optional\"\r\n}\r\n\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 defaultText: 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: 'auto',\r\n height: '40px',\r\n borderRadius: (typeof theme.shape.borderRadius === 'string'\r\n ? parseInt(theme.shape.borderRadius, 10)\r\n : theme.shape.borderRadius || 4) * 2,\r\n border: `2px solid ${theme.palette.dark.main}`,\r\n backgroundColor: theme.palette.light.main,\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\nfunction mapStatusToVariableState(status: string): VariableState | undefined {\r\n switch (status) {\r\n case \"Accepted\":\r\n return VariableState.Accepted;\r\n case \"Pending\":\r\n return VariableState.Pending;\r\n case \"Rejected\":\r\n return VariableState.Rejected;\r\n case \"Not Accepted\":\r\n return VariableState.NotAccepted;\r\n case \"Draft\":\r\n return VariableState.Draft;\r\n default:\r\n return undefined;\r\n }\r\n}\r\n\r\n\r\nfunction mapRequirementTypeToState(reqType: string): RequirementType | undefined {\r\n switch (reqType) {\r\n case \"Default\":\r\n return RequirementType.Default;\r\n case \"Optional\":\r\n return RequirementType.Optional;\r\n default:\r\n return undefined;\r\n }\r\n}\r\n\r\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 defaultText,\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(defaultText);\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 useEffect(() => {\r\n if (variableState === (VariableState.Pending || VariableState.Draft)) {\r\n setUseDefaultValue(false);\r\n }\r\n }, [status]);\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 setTextValue(defaultText);\r\n }, [defaultText]);\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: '#FFC365', label: 'Draft' },\r\n [VariableState.NotAccepted]: { color: '#DBF59A', label: 'Not Accepted' },\r\n [VariableState.Rejected]: { color: '#FFBCB3', label: 'Rejected' },\r\n [VariableState.Accepted]: { color: '#DBF59A', label: 'Accepted' },\r\n };\r\n\r\n const reqTypeConfig = {\r\n [RequirementType.Default]: { color: '#F5A623', label: 'Mandatory' },\r\n [RequirementType.Optional]: { color: '#F5D76E', label: 'Optional' },\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 onSave?.(textValue, useDefaultValue);\r\n };\r\n\r\n\r\n const handleSubmit = () => {\r\n setIsSubmitting(true);\r\n onSubmit?.(textValue, 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 backgroundColor: requirementTypeStyle.color,\r\n color: '#4D3019',\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 <Chip\r\n label={statusStyle.label.toUpperCase()}\r\n sx={{\r\n mr: 3,\r\n backgroundColor: statusStyle.color,\r\n color: '#4D3019',\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 </Box>\r\n\r\n\r\n {/* Description */}\r\n <Typography sx={{ mb: 3, lineHeight: 1.6, whiteSpace: 'pre-line' }}>\r\n {description}\r\n </Typography>\r\n\r\n\r\n {/* Error Alert with Custom Icon */}\r\n {variableState === VariableState.Rejected && 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.Rejected && note && (\r\n <Alert\r\n variant=\"info\"\r\n icon={<ArticleRounded sx={{ fontSize: 20, color: '#4D3019'}} />}\r\n sx={{\r\n mb: 2,\r\n backgroundColor: '#00000000',\r\n borderColor: '#acacacff',\r\n color: '#4D3019',\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={useDefaultValue || canSubmitSave}\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}\r\n onChange={handleUseDefaultValueChange}\r\n sx={{\r\n color: '#AC46FF',\r\n '&.Mui-checked': {\r\n color: '#AC46FF',\r\n },\r\n }}\r\n />\r\n }\r\n label=\"Use Default Value\"\r\n sx={{ mb: 3 }}\r\n />\r\n\r\n\r\n {/* Footer with Buttons and Navigation */}\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 {/* Action Buttons */}\r\n <Box sx={{ display: 'flex', gap: 1.5, flexWrap: 'wrap' }}>\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 <Button\r\n onClick={handleSubmit}\r\n variant=\"outline\"\r\n size=\"md\"\r\n disabled={canSubmitSave}\r\n sx={{\r\n backgroundColor: '#ac46ff52',\r\n '&:hover': {\r\n backgroundColor: '#ac46ff80',\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 (\r\n <>\r\n </>\r\n )\r\n }\r\n </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 <Typography fontWeight={500} fontSize=\"1.125rem\">\r\n {currentPage}/{totalPages}\r\n </Typography>\r\n <NavButton onClick={onPrevious} aria-label=\"Previous\" disabled={isLoading}>\r\n <Typography sx={{ fontSize: 16, fontWeight: 500 }}>Previous</Typography>\r\n </NavButton>\r\n <NavButton onClick={onNext} aria-label=\"Next\" disabled={isLoading}>\r\n <Typography sx={{ fontSize: 16, fontWeight: 500 }}>Next</Typography>\r\n </NavButton>\r\n </Box>\r\n </Box>\r\n </DialogContent>\r\n </StyledDialog>\r\n );\r\n};\r\n"],"names":["_jsxs","_jsx","_Fragment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Modal.js","sources":["../../../../src/components/Modal.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\r\nimport {\r\n Dialog,\r\n DialogContent,\r\n IconButton,\r\n Box,\r\n Typography,\r\n TextField,\r\n Checkbox,\r\n FormControlLabel,\r\n Alert as MuiAlert,\r\n Chip,\r\n styled,\r\n CircularProgress,\r\n} from '@mui/material';\r\nimport { Button } from './Button';\r\nimport { ArticleRounded, CloseRounded, ErrorOutlineRounded, InfoOutlineRounded, StickyNote2Rounded } from '@mui/icons-material';\r\nimport { Alert } from './Alert';\r\nimport { toast } from 'react-toastify';\r\n\r\nenum VariableState {\r\n Accepted = \"Accepted\",\r\n Pending = \"Pending\",\r\n Rejected = \"Rejected\",\r\n NotAccepted = \"Not Accepted\",\r\n Draft = \"Draft\"\r\n}\r\n\r\nenum RequirementType {\r\n Default = \"Default\",\r\n Optional = \"Optional\"\r\n}\r\n\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 defaultText: 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: 'auto',\r\n height: '40px',\r\n borderRadius: (typeof theme.shape.borderRadius === 'string'\r\n ? parseInt(theme.shape.borderRadius, 10)\r\n : theme.shape.borderRadius || 4) * 2,\r\n border: `2px solid ${theme.palette.dark.main}`,\r\n backgroundColor: theme.palette.light.main,\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\nfunction mapStatusToVariableState(status: string): VariableState | undefined {\r\n switch (status) {\r\n case \"Accepted\":\r\n return VariableState.Accepted;\r\n case \"Pending\":\r\n return VariableState.Pending;\r\n case \"Rejected\":\r\n return VariableState.Rejected;\r\n case \"Not Accepted\":\r\n return VariableState.NotAccepted;\r\n case \"Draft\":\r\n return VariableState.Draft;\r\n default:\r\n return undefined;\r\n }\r\n}\r\n\r\n\r\nfunction mapRequirementTypeToState(reqType: string): RequirementType | undefined {\r\n switch (reqType) {\r\n case \"Default\":\r\n return RequirementType.Default;\r\n case \"Optional\":\r\n return RequirementType.Optional;\r\n default:\r\n return undefined;\r\n }\r\n}\r\n\r\nexport 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 defaultText,\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 useEffect(() => {\r\n if (variableState === (VariableState.Pending || VariableState.Draft)) {\r\n setUseDefaultValue(false);\r\n }\r\n }, [status]);\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(defaultText);\r\n } else {\r\n setTextValue(prevTextValue);\r\n }\r\n }, [useDefaultValue]);\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: '#FFC365', label: 'Draft' },\r\n [VariableState.NotAccepted]: { color: '#DBF59A', label: 'Not Accepted' },\r\n [VariableState.Rejected]: { color: '#FFBCB3', label: 'Rejected' },\r\n [VariableState.Accepted]: { color: '#DBF59A', label: 'Accepted' },\r\n };\r\n\r\n const reqTypeConfig = {\r\n [RequirementType.Default]: { color: '#F5A623', label: 'Mandatory' },\r\n [RequirementType.Optional]: { color: '#F5D76E', label: 'Optional' },\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 onSave?.(textValue, useDefaultValue);\r\n };\r\n\r\n\r\n const handleSubmit = () => {\r\n setIsSubmitting(true);\r\n onSubmit?.(textValue, 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 backgroundColor: requirementTypeStyle.color,\r\n color: '#4D3019',\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 <Chip\r\n label={statusStyle.label.toUpperCase()}\r\n sx={{\r\n mr: 3,\r\n backgroundColor: statusStyle.color,\r\n color: '#4D3019',\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 </Box>\r\n\r\n\r\n {/* Description */}\r\n <Typography sx={{ mb: 3, lineHeight: 1.6, whiteSpace: 'pre-line' }}>\r\n {description}\r\n </Typography>\r\n\r\n\r\n {/* Error Alert with Custom Icon */}\r\n {variableState === VariableState.Rejected && 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.Rejected && note && (\r\n <Alert\r\n variant=\"info\"\r\n icon={<ArticleRounded sx={{ fontSize: 20, color: '#4D3019'}} />}\r\n sx={{\r\n mb: 2,\r\n backgroundColor: '#00000000',\r\n borderColor: '#acacacff',\r\n color: '#4D3019',\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={useDefaultValue || canSubmitSave}\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}\r\n onChange={handleUseDefaultValueChange}\r\n sx={{\r\n color: '#AC46FF',\r\n '&.Mui-checked': {\r\n color: '#AC46FF',\r\n },\r\n }}\r\n />\r\n }\r\n label=\"Use Default Value\"\r\n sx={{ mb: 3 }}\r\n />\r\n\r\n\r\n {/* Footer with Buttons and Navigation */}\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 {/* Action Buttons */}\r\n <Box sx={{ display: 'flex', gap: 1.5, flexWrap: 'wrap' }}>\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 <Button\r\n onClick={handleSubmit}\r\n variant=\"outline\"\r\n size=\"md\"\r\n disabled={canSubmitSave}\r\n sx={{\r\n backgroundColor: '#ac46ff52',\r\n '&:hover': {\r\n backgroundColor: '#ac46ff80',\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 (\r\n <>\r\n </>\r\n )\r\n }\r\n </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 <Typography fontWeight={500} fontSize=\"1.125rem\">\r\n {currentPage}/{totalPages}\r\n </Typography>\r\n <NavButton onClick={onPrevious} aria-label=\"Previous\" disabled={isLoading}>\r\n <Typography sx={{ fontSize: 16, fontWeight: 500 }}>Previous</Typography>\r\n </NavButton>\r\n <NavButton onClick={onNext} aria-label=\"Next\" disabled={isLoading}>\r\n <Typography sx={{ fontSize: 16, fontWeight: 500 }}>Next</Typography>\r\n </NavButton>\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,5 +1,5 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { useState } from 'react';
|
|
2
|
+
import { useState, useRef, useLayoutEffect } from 'react';
|
|
3
3
|
import { styled, Box, IconButton, Typography } from '@mui/material';
|
|
4
4
|
import { useTheme } from '../ThemeProvider.js';
|
|
5
5
|
import { ExpandLessRounded, ExpandMoreRounded } from '@mui/icons-material';
|
|
@@ -14,7 +14,6 @@ const ReadByContainer = styled(Box)(({ theme }) => ({
|
|
|
14
14
|
borderRadius: '0 8px 8px 0',
|
|
15
15
|
backgroundColor: theme.palette.custom?.readByBackgroundColor || theme.palette.accent.main,
|
|
16
16
|
[theme.breakpoints.down('sm')]: {
|
|
17
|
-
flexDirection: 'column',
|
|
18
17
|
padding: theme.spacing(1.5),
|
|
19
18
|
},
|
|
20
19
|
}));
|
|
@@ -29,18 +28,41 @@ const ExpandButton = styled(IconButton)(({ theme }) => ({
|
|
|
29
28
|
opacity: 0.8,
|
|
30
29
|
},
|
|
31
30
|
[theme.breakpoints.down('sm')]: {
|
|
32
|
-
alignSelf: 'flex-
|
|
31
|
+
alignSelf: 'flex-start',
|
|
33
32
|
},
|
|
34
33
|
}));
|
|
35
34
|
const ReadBy = ({ names }) => {
|
|
36
35
|
const theme = useTheme();
|
|
37
36
|
const [isExpanded, setIsExpanded] = useState(false);
|
|
37
|
+
const [visibleCount, setVisibleCount] = useState(names.length);
|
|
38
|
+
const containerRef = useRef(null);
|
|
39
|
+
const measureRef = useRef(null);
|
|
40
|
+
useLayoutEffect(() => {
|
|
41
|
+
if (isExpanded || names.length <= 1) {
|
|
42
|
+
setVisibleCount(names.length);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (containerRef.current && measureRef.current) {
|
|
46
|
+
const containerWidth = containerRef.current.offsetWidth;
|
|
47
|
+
let currentCount = names.length;
|
|
48
|
+
// Try reducing count until the measured text fits
|
|
49
|
+
for (let i = names.length; i > 0; i--) {
|
|
50
|
+
measureRef.current.textContent = names.slice(0, i).join(', ');
|
|
51
|
+
const textWidth = measureRef.current.offsetWidth;
|
|
52
|
+
if (textWidth <= containerWidth - 100) { // Leave space for button and errors
|
|
53
|
+
currentCount = i;
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
setVisibleCount(currentCount - 1);
|
|
58
|
+
}
|
|
59
|
+
}, [names, isExpanded, containerRef.current, measureRef.current]);
|
|
38
60
|
const displayText = isExpanded
|
|
39
61
|
? names.join(', ')
|
|
40
|
-
: names.length
|
|
41
|
-
? `${names.slice(0,
|
|
62
|
+
: visibleCount < names.length
|
|
63
|
+
? `${names.slice(0, visibleCount).join(', ')}...`
|
|
42
64
|
: names.join(', ');
|
|
43
|
-
return (jsxs(ReadByContainer, { children: [jsxs(Box, { sx: { flex: 1, minWidth: 0, wordBreak: 'break-word' }, children: [jsx(Typography, { component: "span", sx: {
|
|
65
|
+
return (jsxs(ReadByContainer, { ref: containerRef, children: [jsxs(Box, { sx: { flex: 1, minWidth: 0, wordBreak: 'break-word' }, children: [jsx(Typography, { component: "span", sx: {
|
|
44
66
|
fontSize: { xs: '13px', sm: '14px' },
|
|
45
67
|
fontWeight: 700,
|
|
46
68
|
color: theme.palette.dark.main,
|
|
@@ -48,7 +70,14 @@ const ReadBy = ({ names }) => {
|
|
|
48
70
|
fontSize: { xs: '13px', sm: '14px' },
|
|
49
71
|
color: theme.palette.dark.main,
|
|
50
72
|
ml: 1,
|
|
51
|
-
}, children: displayText })
|
|
73
|
+
}, children: displayText }), jsx("span", { ref: measureRef, style: {
|
|
74
|
+
position: 'absolute',
|
|
75
|
+
visibility: 'hidden',
|
|
76
|
+
height: 0,
|
|
77
|
+
whiteSpace: 'nowrap',
|
|
78
|
+
fontSize: '14px',
|
|
79
|
+
fontWeight: 400
|
|
80
|
+
} })] }), names.length > 1 && (jsx(ExpandButton, { onClick: () => setIsExpanded(!isExpanded), "aria-label": isExpanded ? 'Collapse' : 'Expand', size: "small", children: isExpanded ? (jsx(ExpandLessRounded, { sx: { fontSize: 16 } })) : (jsx(ExpandMoreRounded, { sx: { fontSize: 16 } })) }))] }));
|
|
52
81
|
};
|
|
53
82
|
|
|
54
83
|
export { ReadBy };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReadBy.js","sources":["../../../../src/components/ReadBy.tsx"],"sourcesContent":["\r\n\r\nimport React, { useState } from 'react';\r\nimport { Box, IconButton, Typography, styled } from '@mui/material';\r\nimport { useTheme } from '../ThemeProvider';\r\nimport { ExpandLessRounded, ExpandMoreRounded } from '@mui/icons-material';\r\n\r\ninterface ReadByProps {\r\n names: string[];\r\n}\r\n\r\nconst ReadByContainer = styled(Box)(({ theme }) => ({\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'flex-start',\r\n gap: theme.spacing(2),\r\n padding: theme.spacing(2),\r\n borderLeft: `4px solid ${theme.palette.primary.main}`,\r\n borderRadius: '0 8px 8px 0',\r\n backgroundColor: theme.palette.custom?.readByBackgroundColor || theme.palette.accent.main,\r\n [theme.breakpoints.down('sm')]: {\r\n
|
|
1
|
+
{"version":3,"file":"ReadBy.js","sources":["../../../../src/components/ReadBy.tsx"],"sourcesContent":["\r\n\r\nimport React, { useLayoutEffect, useRef, useState } from 'react';\r\nimport { Box, IconButton, Typography, styled } from '@mui/material';\r\nimport { useTheme } from '../ThemeProvider';\r\nimport { ExpandLessRounded, ExpandMoreRounded } from '@mui/icons-material';\r\n\r\ninterface ReadByProps {\r\n names: string[];\r\n}\r\n\r\nconst ReadByContainer = styled(Box)(({ theme }) => ({\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'flex-start',\r\n gap: theme.spacing(2),\r\n padding: theme.spacing(2),\r\n borderLeft: `4px solid ${theme.palette.primary.main}`,\r\n borderRadius: '0 8px 8px 0',\r\n backgroundColor: theme.palette.custom?.readByBackgroundColor || theme.palette.accent.main,\r\n [theme.breakpoints.down('sm')]: {\r\n padding: theme.spacing(1.5),\r\n },\r\n}));\r\n\r\nconst ExpandButton = styled(IconButton)(({ theme }) => ({\r\n width: 32,\r\n height: 32,\r\n backgroundColor: '#4d3019',\r\n color: '#fff',\r\n flexShrink: 0,\r\n '&:hover': {\r\n backgroundColor: '#4d3019',\r\n opacity: 0.8,\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n alignSelf: 'flex-start',\r\n },\r\n}));\r\n\r\nexport const ReadBy: React.FC<ReadByProps> = ({ names }) => {\r\n const theme = useTheme();\r\n const [isExpanded, setIsExpanded] = useState(false);\r\n const [visibleCount, setVisibleCount] = useState(names.length);\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const measureRef = useRef<HTMLSpanElement>(null);\r\n\r\n useLayoutEffect(() => {\r\n if (isExpanded || names.length <= 1) {\r\n setVisibleCount(names.length);\r\n return;\r\n }\r\n\r\n if (containerRef.current && measureRef.current) {\r\n const containerWidth = containerRef.current.offsetWidth;\r\n let currentCount = names.length;\r\n \r\n // Try reducing count until the measured text fits\r\n for (let i = names.length; i > 0; i--) {\r\n measureRef.current.textContent = names.slice(0, i).join(', ');\r\n const textWidth = measureRef.current.offsetWidth;\r\n if (textWidth <= containerWidth - 100) { // Leave space for button and errors\r\n currentCount = i;\r\n break;\r\n }\r\n }\r\n setVisibleCount(currentCount - 1);\r\n }\r\n }, [names, isExpanded, containerRef.current, measureRef.current]);\r\n\r\n const displayText = isExpanded\r\n ? names.join(', ')\r\n : visibleCount < names.length\r\n ? `${names.slice(0, visibleCount).join(', ')}...`\r\n : names.join(', ');\r\n\r\n return (\r\n <ReadByContainer ref={containerRef}>\r\n <Box sx={{ flex: 1, minWidth: 0, wordBreak: 'break-word' }}>\r\n <Typography\r\n component=\"span\"\r\n sx={{\r\n fontSize: { xs: '13px', sm: '14px' },\r\n fontWeight: 700,\r\n color: theme.palette.dark.main,\r\n }}\r\n >\r\n Read by:\r\n </Typography>\r\n <Typography\r\n component=\"span\"\r\n sx={{\r\n fontSize: { xs: '13px', sm: '14px' },\r\n color: theme.palette.dark.main,\r\n ml: 1,\r\n }}\r\n >\r\n {displayText}\r\n </Typography>\r\n {/* Hidden span for measurement */}\r\n <span ref={measureRef} style={{\r\n position: 'absolute',\r\n visibility: 'hidden',\r\n height: 0,\r\n whiteSpace: 'nowrap',\r\n fontSize: '14px',\r\n fontWeight: 400\r\n }} />\r\n </Box>\r\n {names.length > 1 && (\r\n <ExpandButton\r\n onClick={() => setIsExpanded(!isExpanded)}\r\n aria-label={isExpanded ? 'Collapse' : 'Expand'}\r\n size=\"small\"\r\n >\r\n {isExpanded ? (\r\n <ExpandLessRounded sx={{fontSize: 16}} />\r\n ) : (\r\n <ExpandMoreRounded sx={{fontSize: 16}} />\r\n )}\r\n </ExpandButton>\r\n )}\r\n </ReadByContainer>\r\n );\r\n};"],"names":["_jsxs","_jsx"],"mappings":"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"}
|