@sis-cc/dotstatsuite-visions 13.8.0 → 14.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/dist/Alert/Alert.js +5 -3
  2. package/dist/Alert/Alert.js.map +1 -1
  3. package/dist/ApiQueries/ApiQueries.js +2 -1
  4. package/dist/ApiQueries/ApiQueries.js.map +1 -1
  5. package/dist/AuthDialog/AuthDialog.js.map +1 -1
  6. package/dist/Breadcrumbs/Breadcrumbs.js +2 -1
  7. package/dist/Breadcrumbs/Breadcrumbs.js.map +1 -1
  8. package/dist/Button/Button.js +15 -17
  9. package/dist/Button/Button.js.map +1 -1
  10. package/dist/ChartsConfig/ChartsConfig.js +12 -7
  11. package/dist/ChartsConfig/ChartsConfig.js.map +1 -1
  12. package/dist/CollapseButtons/CollapseButtons.js +138 -100
  13. package/dist/CollapseButtons/CollapseButtons.js.map +1 -1
  14. package/dist/CollapsibleTree/CollapsibleTree.js +47 -29
  15. package/dist/CollapsibleTree/CollapsibleTree.js.map +1 -1
  16. package/dist/Contact/Contact.js +6 -5
  17. package/dist/Contact/Contact.js.map +1 -1
  18. package/dist/DataFooter/DataFooter.js +1 -1
  19. package/dist/DataFooter/DataFooter.js.map +1 -1
  20. package/dist/DataHeader/DataHeader.js +8 -6
  21. package/dist/DataHeader/DataHeader.js.map +1 -1
  22. package/dist/Dataflow/Dataflow.js +6 -3
  23. package/dist/Dataflow/Dataflow.js.map +1 -1
  24. package/dist/DeleteAllChip/DeleteAllChip.js +1 -1
  25. package/dist/DynamicDrawer/DynamicDrawer.js +8 -9
  26. package/dist/DynamicDrawer/DynamicDrawer.js.map +1 -1
  27. package/dist/ExpansionPanel/ExpansionPanel.js +3 -2
  28. package/dist/ExpansionPanel/ExpansionPanel.js.map +1 -1
  29. package/dist/GroupedChips/GroupedChips.js +5 -4
  30. package/dist/GroupedChips/GroupedChips.js.map +1 -1
  31. package/dist/HierarchicalFilter/HierarchicalFilter.js +1 -1
  32. package/dist/HierarchicalFilter/HierarchicalFilter.js.map +1 -1
  33. package/dist/Icons/AccessibilityFilled.js.map +1 -1
  34. package/dist/Icons/AccessibilityOutlined.js.map +1 -1
  35. package/dist/Icons/AccountFilled.js.map +1 -1
  36. package/dist/Icons/AccountOutlined.js.map +1 -1
  37. package/dist/Icons/Api.js.map +1 -1
  38. package/dist/Icons/Asterisk.js.map +1 -1
  39. package/dist/Icons/Bar.js.map +1 -1
  40. package/dist/Icons/CopyContent.js.map +1 -1
  41. package/dist/Icons/Cross.js.map +1 -1
  42. package/dist/Icons/HSymbol.js.map +1 -1
  43. package/dist/Icons/Row.js.map +1 -1
  44. package/dist/Icons/Scatter.js.map +1 -1
  45. package/dist/Icons/StackedBar.js.map +1 -1
  46. package/dist/Icons/StackedRow.js.map +1 -1
  47. package/dist/Icons/Timeline.js.map +1 -1
  48. package/dist/Icons/VSymbol.js.map +1 -1
  49. package/dist/Input/Input.js.map +1 -1
  50. package/dist/InputNumber/InputNumber.js.map +1 -1
  51. package/dist/LabelDivider/LabelDivider.js.map +1 -1
  52. package/dist/Loading/Loading.js.map +1 -1
  53. package/dist/Mode/Mode.js +5 -4
  54. package/dist/Mode/Mode.js.map +1 -1
  55. package/dist/Pagination/Pagination.js +0 -1
  56. package/dist/Pagination/Pagination.js.map +1 -1
  57. package/dist/PeriodPicker/PeriodPicker.js +63 -70
  58. package/dist/PeriodPicker/PeriodPicker.js.map +1 -1
  59. package/dist/Select/Select.js +13 -11
  60. package/dist/Select/Select.js.map +1 -1
  61. package/dist/Share/Share.js +2 -1
  62. package/dist/Share/Share.js.map +1 -1
  63. package/dist/ShortUrls/ShortUrls.js.map +1 -1
  64. package/dist/SisccFooter/SisccFooter.js +30 -20
  65. package/dist/SisccFooter/SisccFooter.js.map +1 -1
  66. package/dist/Spotlight/Spotlight.js +8 -7
  67. package/dist/Spotlight/Spotlight.js.map +1 -1
  68. package/dist/TableFooter/TableFooter.js.map +1 -1
  69. package/dist/TableHeader/TableHeader.js.map +1 -1
  70. package/dist/TableHtml5/TableHtml5.js +25 -20
  71. package/dist/TableHtml5/TableHtml5.js.map +1 -1
  72. package/dist/TableLayout/TableLayout.js +9 -6
  73. package/dist/TableLayout/TableLayout.js.map +1 -1
  74. package/dist/TablePreview/TablePreview.js +17 -8
  75. package/dist/TablePreview/TablePreview.js.map +1 -1
  76. package/dist/Tag/Tag.js.map +1 -1
  77. package/dist/Tooltip/Tooltip.js.map +1 -1
  78. package/dist/UserRightForm/UserRightForm.js.map +1 -1
  79. package/dist/VerticalButton/VerticalButton.js.map +1 -1
  80. package/dist/chunks/{CustomChip-CMYCIorJ.js → CustomChip-VonwGtLq.js} +7 -7
  81. package/dist/chunks/CustomChip-VonwGtLq.js.map +1 -0
  82. package/dist/chunks/{useKeybordEscapeHandler-DRsOrnwc.js → useKeybordEscapeHandler-DZZOPw7k.js} +2 -2
  83. package/dist/chunks/useKeybordEscapeHandler-DZZOPw7k.js.map +1 -0
  84. package/dist/chunks/utils-kslX1mzh.js.map +1 -1
  85. package/dist/chunks/with-input-DRWNlMdA.js.map +1 -1
  86. package/dist/chunks/{withSpotlight-ooTVUwmd.js → withSpotlight-Bqdm585G.js} +37 -37
  87. package/dist/chunks/withSpotlight-Bqdm585G.js.map +1 -0
  88. package/dist/theme/theme.js +5 -5
  89. package/dist/theme/theme.js.map +1 -1
  90. package/package.json +27 -31
  91. package/dist/chunks/CustomChip-CMYCIorJ.js.map +0 -1
  92. package/dist/chunks/useKeybordEscapeHandler-DRsOrnwc.js.map +0 -1
  93. package/dist/chunks/withSpotlight-ooTVUwmd.js.map +0 -1
@@ -1,21 +1,21 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { useState, createElement } from 'react';
3
- import cx from 'classnames';
4
- import * as R from 'ramda';
5
- import makeStyles from '@mui/styles/makeStyles';
2
+ import React, { useState, useCallback, createElement } from 'react';
6
3
  import useMediaQuery from '@mui/material/useMediaQuery';
7
4
  import Grid from '@mui/material/Grid';
8
- import Collapse from '@mui/material/Collapse';
9
5
  import Typography$1 from '@mui/material/Typography';
6
+ import * as R from 'ramda';
7
+ import cx from 'classnames';
8
+ import makeStyles from '@mui/styles/makeStyles';
10
9
  import Button from '@mui/material/Button';
11
10
  import { KeyboardArrowUp, KeyboardArrowDown } from '@mui/icons-material';
11
+ import Collapse from '@mui/material/Collapse';
12
12
  import PropTypes from 'prop-types';
13
13
  import Link from '@mui/material/Link';
14
14
  import SvgIcon from '@mui/material/SvgIcon';
15
15
  import { Typography } from '@mui/material';
16
16
  import Paper from '@mui/material/Paper';
17
17
 
18
- const useStyles$3 = makeStyles((theme) => {
18
+ const useStyles$1 = makeStyles((theme) => {
19
19
  const color1 = R.path(["palette", "highlight", "hl1"], theme) || theme.palette.primary.dark;
20
20
  return {
21
21
  root: {
@@ -50,7 +50,7 @@ const ToggleButton = ({
50
50
  tabIndex = 0,
51
51
  textTransform = "capitalize"
52
52
  }) => {
53
- const classes = useStyles$3();
53
+ const classes = useStyles$1();
54
54
  return /* @__PURE__ */ jsxs(
55
55
  Button,
56
56
  {
@@ -72,7 +72,7 @@ const ToggleButton = ({
72
72
  );
73
73
  };
74
74
 
75
- const useStyles$2 = makeStyles((theme) => ({
75
+ const useStyles = makeStyles((theme) => ({
76
76
  paperItem: {
77
77
  alignItems: "baseline"
78
78
  },
@@ -112,7 +112,7 @@ const useStyles$2 = makeStyles((theme) => ({
112
112
  }
113
113
  }));
114
114
  const Item = ({ parentId, item, action, testId, isSecondLevelClikable, labelAccessor }) => {
115
- const classes = useStyles$2();
115
+ const classes = useStyles();
116
116
  const mapIndexed = R.addIndex(R.map);
117
117
  return /* @__PURE__ */ jsx(Grid, { className: classes.paperItem, children: /* @__PURE__ */ jsx(Typography, { variant: "h4", children: /* @__PURE__ */ jsxs(
118
118
  Button,
@@ -178,121 +178,134 @@ Item.propTypes = {
178
178
  labelAccessor: PropTypes.func
179
179
  };
180
180
 
181
- const useStyles$1 = makeStyles((theme) => ({
182
- paper: {
183
- padding: theme.spacing(2.5),
184
- margin: theme.spacing(1.25),
185
- borderRadius: "unset"
186
- },
187
- mobileView: {
188
- display: "flex",
189
- flexDirection: "column",
190
- columnCount: "unset"
191
- },
192
- view: {
193
- columnCount: 3,
194
- columnFill: "balance"
195
- }
196
- }));
197
181
  const CustomPaper = ({ isMobileView, children, onClose }) => {
198
- const classes = useStyles$1();
199
182
  return /* @__PURE__ */ jsx(
200
183
  Paper,
201
184
  {
202
185
  onKeyDown: (e) => {
203
- if (e.key === "Escape") onClose();
186
+ if (e.key === "Escape" && onClose) onClose();
204
187
  },
205
- classes: {
206
- root: cx(classes.paper, { [classes.mobileView]: isMobileView })
188
+ sx: {
189
+ padding: 2.5,
190
+ // Multiplies by theme.spacing (2.5 * 8px = 20px)
191
+ margin: 1.25,
192
+ // Multiplies by theme.spacing (1.25 * 8px = 10px)
193
+ borderRadius: "unset",
194
+ ...isMobileView && {
195
+ display: "flex",
196
+ flexDirection: "column",
197
+ columnCount: "unset"
198
+ }
207
199
  },
208
- children: /* @__PURE__ */ jsx(Grid, { className: cx(classes.view, { [classes.mobileView]: isMobileView }), children })
200
+ children: /* @__PURE__ */ jsx(
201
+ Grid,
202
+ {
203
+ sx: {
204
+ columnCount: isMobileView ? "unset" : 3,
205
+ columnFill: "balance",
206
+ ...isMobileView && {
207
+ display: "flex",
208
+ flexDirection: "column"
209
+ }
210
+ },
211
+ children
212
+ }
213
+ )
209
214
  }
210
215
  );
211
216
  };
212
- CustomPaper.propTypes = {
213
- isMobileView: PropTypes.bool,
214
- children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])
217
+
218
+ const EMPTY_VALUES = [];
219
+ const CollapseSection = ({
220
+ id,
221
+ toggleId,
222
+ values = EMPTY_VALUES,
223
+ isMobileView,
224
+ action,
225
+ isSecondLevelClikable,
226
+ labelAccessor,
227
+ testId
228
+ }) => {
229
+ const isOpen = toggleId === id;
230
+ return /* @__PURE__ */ jsx(Collapse, { in: isOpen, timeout: "auto", unmountOnExit: true, sx: { width: "100%" }, children: /* @__PURE__ */ jsx(CustomPaper, { elevation: 10, isMobileView, children: values.map((item, index) => {
231
+ const itemId = item?.id ?? index;
232
+ return /* @__PURE__ */ jsx(
233
+ Item,
234
+ {
235
+ testId: `${testId}_${id}_value_${itemId}`,
236
+ parentId: id,
237
+ item,
238
+ action,
239
+ isSecondLevelClikable,
240
+ labelAccessor
241
+ },
242
+ `${index}-${itemId}`
243
+ );
244
+ }) }) });
215
245
  };
246
+ const CollapseSection$1 = React.memo(CollapseSection);
216
247
 
217
248
  const MAX_COLUMNS = 12;
218
249
  const COLUMNS = [12, 12, 6, 4, 3, 3, 2, 2, 2, 2, 2, 2, 1];
219
- const useStyles = makeStyles((theme) => ({
220
- collapseContainer: {
221
- width: "100%"
222
- },
223
- container: {
224
- "&:focus": {
225
- outlineColor: theme.palette.highlight.hl1,
226
- outlineWidth: 2,
227
- outlineStyle: "auto",
228
- paddingBottom: 16
229
- }
230
- }
231
- }));
232
- const CollapseButtons = (props) => {
233
- const {
234
- items = [],
235
- action = () => {
236
- },
237
- nbColumns = 3,
238
- testId = "collapseButton",
239
- isSecondLevelClikable,
240
- gridButtonsProps = {},
241
- breakpoint = (theme) => theme.breakpoints.down("md"),
242
- justify,
243
- textTransform = "none",
244
- labelAccessor = R.prop("label"),
245
- accessibility
246
- } = props;
247
- const classes = useStyles();
250
+ const EMPTY_ITEMS = [];
251
+ const EMPTY_GRID_BUTTONS_PROPS = {};
252
+ const noop = () => {
253
+ };
254
+ const defaultBreakpoint = (theme) => theme.breakpoints.down("md");
255
+ const defaultLabelAccessor = (obj) => obj?.label;
256
+ const CollapseButtons = ({
257
+ items = EMPTY_ITEMS,
258
+ action = noop,
259
+ nbColumns = 3,
260
+ testId = "collapseButton",
261
+ isSecondLevelClikable,
262
+ gridButtonsProps = EMPTY_GRID_BUTTONS_PROPS,
263
+ breakpoint = defaultBreakpoint,
264
+ justify,
265
+ textTransform = "none",
266
+ labelAccessor = defaultLabelAccessor,
267
+ accessibility,
268
+ selectedItemId
269
+ }) => {
248
270
  const isMobileView = useMediaQuery(breakpoint);
249
- const [toggleId, setIsOpen] = useState(props.selectedItemId);
250
- const mapIndexed = R.addIndex(R.map);
251
- const collapseFactory = ({ action: action2, isSecondLevelClikable: isSecondLevelClikable2, labelAccessor: labelAccessor2, testId: testId2 }) => ({ toggleId: toggleId2, id, values, isMobileView: isMobileView2 }) => /* @__PURE__ */ jsx(
252
- Collapse,
253
- {
254
- in: toggleId2 === id,
255
- timeout: "auto",
256
- unmountOnExit: true,
257
- className: classes.collapseContainer,
258
- children: /* @__PURE__ */ jsx(CustomPaper, { elevation: 10, isMobileView: isMobileView2, children: mapIndexed(
259
- (item, index) => /* @__PURE__ */ jsx(
260
- Item,
261
- {
262
- testId: `${testId2}_${id}_value_${R.prop("id")(item)}`,
263
- parentId: id,
264
- item,
265
- action: action2,
266
- isSecondLevelClikable: isSecondLevelClikable2,
267
- labelAccessor: labelAccessor2
268
- },
269
- `${index}-${R.prop("id")(item)}`
270
- ),
271
- values
272
- ) })
273
- },
274
- id
275
- );
276
- const collapse = collapseFactory({ action, isSecondLevelClikable, labelAccessor, testId });
271
+ const [toggleId, setIsOpen] = useState(selectedItemId);
272
+ const mdGridSize = COLUMNS[nbColumns] ?? 3;
273
+ const handleToggle = useCallback((id) => {
274
+ setIsOpen((prevId) => prevId === id ? null : id);
275
+ }, []);
277
276
  return /* @__PURE__ */ jsxs(
278
277
  Grid,
279
278
  {
280
279
  container: true,
281
- spacing: 2,
282
280
  "data-testid": testId,
283
281
  justifyContent: justify,
284
- className: cx({ [classes.container]: accessibility }),
285
282
  tabIndex: 0,
283
+ sx: {
284
+ ...accessibility && {
285
+ "&:focus": {
286
+ outlineColor: "highlight.hl1",
287
+ // Safely pulls theme.palette.highlight.hl1 automatically
288
+ outlineWidth: 2,
289
+ outlineStyle: "auto",
290
+ paddingBottom: 2
291
+ // 2 * 8px = 16px
292
+ }
293
+ }
294
+ },
286
295
  children: [
287
- mapIndexed(({ id, label, values = [] }, index) => /* @__PURE__ */ createElement(
296
+ items.map(({ id, label, values = [] }, index) => /* @__PURE__ */ createElement(
288
297
  Grid,
289
298
  {
290
299
  item: true,
291
300
  xs: 12,
292
301
  sm: 12,
293
- md: R.nth(nbColumns)(COLUMNS),
302
+ md: mdGridSize,
294
303
  ...gridButtonsProps,
295
- key: `${index}::${id}`
304
+ key: `${index}::${id}`,
305
+ sx: {
306
+ p: 1
307
+ // Adds 8px padding evenly inside every item box without layout shifting
308
+ }
296
309
  },
297
310
  /* @__PURE__ */ jsxs(Typography$1, { variant: "h3", children: [
298
311
  /* @__PURE__ */ jsx(
@@ -300,17 +313,42 @@ const CollapseButtons = (props) => {
300
313
  {
301
314
  textTransform,
302
315
  label,
303
- tabIndex: toggleId ? 1 : 0,
316
+ tabIndex: toggleId ? 0 : -1,
304
317
  isOpen: toggleId === id,
305
- toggle: () => setIsOpen(id === toggleId ? null : id),
318
+ toggle: () => handleToggle(id),
306
319
  testId: `${testId}_${id}`,
307
320
  id
308
321
  }
309
322
  ),
310
- isMobileView && collapse({ toggleId, id, values, isMobileView })
323
+ isMobileView && /* @__PURE__ */ jsx(
324
+ CollapseSection$1,
325
+ {
326
+ id,
327
+ toggleId,
328
+ values,
329
+ isMobileView,
330
+ action,
331
+ isSecondLevelClikable,
332
+ labelAccessor,
333
+ testId
334
+ }
335
+ )
311
336
  ] })
312
- ))(items),
313
- !isMobileView && R.map(({ id, values = [] }) => collapse({ toggleId, id, values, isMobileView }), items)
337
+ )),
338
+ !isMobileView && items.map(({ id, values = [] }) => /* @__PURE__ */ jsx(
339
+ CollapseSection$1,
340
+ {
341
+ id,
342
+ toggleId,
343
+ values,
344
+ isMobileView,
345
+ action,
346
+ isSecondLevelClikable,
347
+ labelAccessor,
348
+ testId
349
+ },
350
+ `desktop-collapse-${id}`
351
+ ))
314
352
  ]
315
353
  }
316
354
  );
@@ -1 +1 @@
1
- {"version":3,"file":"CollapseButtons.js","sources":["../../src/ToggleButton/ToggleButton.jsx","../../src/CollapseButtons/Item.jsx","../../src/CollapseButtons/Paper.jsx","../../src/CollapseButtons/CollapseButtons.jsx"],"sourcesContent":["import React from 'react';\nimport * as R from 'ramda';\nimport cx from 'classnames';\nimport makeStyles from '@mui/styles/makeStyles';\nimport Button from '@mui/material/Button';\nimport { KeyboardArrowDown, KeyboardArrowUp } from '@mui/icons-material';\n\nconst useStyles = makeStyles(theme => {\n const color1 = R.path(['palette', 'highlight', 'hl1'], theme) || theme.palette.primary.dark;\n return {\n root: {\n minHeight: '43px',\n borderRadius: theme.shape.borderRadius,\n padding: theme.spacing(0.75, 2, 0.5, 2),\n color: theme.palette.getContrastText(theme.palette.primary.main),\n backgroundColor:\n R.path(['palette', 'button', 'mainOpacity'], theme) || theme.palette.primary.main,\n display: 'flex',\n justifyContent: 'space-between',\n '&:hover': {\n color: theme.palette.getContrastText(color1),\n backgroundColor: color1,\n },\n },\n label: {\n textAlign: 'left',\n fontSize: '0.9375rem',\n lineHeight: '1.0',\n },\n selected: {\n color: theme.palette.getContrastText(color1),\n backgroundColor: color1,\n },\n };\n});\n\nexport const ToggleButton = ({\n isOpen,\n label,\n toggle,\n testId,\n tabIndex = 0,\n textTransform = 'capitalize',\n}) => {\n const classes = useStyles();\n return (\n <Button\n aria-expanded={isOpen}\n aria-label={label}\n tabIndex={tabIndex}\n data-testid={testId}\n classes={{ root: classes.root, label: classes.label }}\n className={cx({ [classes.selected]: isOpen })}\n style={{ textTransform }}\n fullWidth\n variant=\"text\"\n onClick={R.is(Function)(toggle) ? toggle : null}\n >\n {label}\n {isOpen ? <KeyboardArrowUp /> : <KeyboardArrowDown />}\n </Button>\n );\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport * as R from 'ramda';\nimport Grid from '@mui/material/Grid';\nimport Button from '@mui/material/Button';\nimport Link from '@mui/material/Link';\nimport makeStyles from '@mui/styles/makeStyles';\nimport SvgIcon from '@mui/material/SvgIcon';\nimport { Typography } from '@mui/material';\n\nconst useStyles = makeStyles(theme => ({\n paperItem: {\n alignItems: 'baseline',\n },\n itemTitle: {\n ...theme.typography.body2,\n color: theme.palette.primary.main,\n },\n button: {\n '&:hover': {\n backgroundColor:\n R.path(['palette', 'tertiary', 'light'])(theme) || theme.palette.secondary.light,\n },\n padding: theme.spacing(1.25),\n textAlign: 'left',\n textTransform: 'none',\n justifyContent: 'flex-start',\n display: 'flex',\n },\n itemSubtitle: {\n ...theme.typography.body1,\n display: 'flex',\n flexDirection: 'column',\n color: theme.palette.grey[800],\n },\n itemSubtitleLink: {\n ...theme.typography.body1,\n color: theme.palette.grey[800],\n '&:hover': {\n color: theme.palette.primary.main,\n },\n },\n svg: {\n color: theme.palette.grey[600],\n fontSize: '1rem',\n marginRight: theme.spacing(0.5),\n marginTop: theme.spacing(0.25),\n marginBottom: 'auto',\n },\n}));\n\nconst Item = ({ parentId, item, action, testId, isSecondLevelClikable, labelAccessor }) => {\n const classes = useStyles();\n const mapIndexed = R.addIndex(R.map);\n return (\n <Grid className={classes.paperItem}>\n <Typography variant=\"h4\">\n <Button\n aria-label={R.prop('label')(item)}\n className={classes.button}\n fullWidth\n data-testid={testId}\n role=\"link\"\n onClick={() => {\n if (R.not(R.is(Function)(action))) return;\n action(parentId, R.prop('id')(item));\n }}\n tabIndex={0}\n >\n <SvgIcon className={classes.svg}>\n <path d={R.prop('svgPath')(item)} />\n </SvgIcon>\n <Grid container item xs={12} direction=\"column\">\n <span className={classes.itemTitle}>{labelAccessor(item, parentId)}</span>\n <span className={classes.itemSubtitle}>\n {mapIndexed((subtopic, index) => {\n if (R.not(R.is(Object)(subtopic))) return subtopic;\n if (R.not(isSecondLevelClikable)) return labelAccessor(subtopic, parentId);\n const id = R.prop('id')(subtopic);\n return (\n <Typography variant=\"h5\" key={`${id}::${index}`}>\n <Link\n className={classes.itemSubtitleLink}\n role=\"link\"\n onClick={e => {\n if (R.not(R.is(Function)(action))) return;\n action(parentId, id);\n e.stopPropagation();\n }}\n onKeyDown={e => {\n if (e.key === 'Enter' || e.key === ' ') {\n if (R.not(R.is(Function)(action))) return;\n action(parentId, id);\n e.stopPropagation();\n }\n }}\n tabIndex={0}\n underline=\"none\"\n style={{ display: 'list-item' }}\n >\n {labelAccessor(subtopic, parentId)}\n </Link>\n </Typography>\n );\n })(\n R.pipe(\n R.propOr([], 'subtopics'),\n R.ifElse(R.always(isSecondLevelClikable), R.identity, R.intersperse(' • ')),\n )(item),\n )}\n </span>\n </Grid>\n </Button>\n </Typography>\n </Grid>\n );\n};\n\nItem.propTypes = {\n parentId: PropTypes.string,\n testId: PropTypes.string,\n item: PropTypes.object,\n action: PropTypes.func,\n isSecondLevelClikable: PropTypes.bool,\n labelAccessor: PropTypes.func,\n};\n\nexport default Item;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport makeStyles from '@mui/styles/makeStyles';\nimport Paper from '@mui/material/Paper';\nimport Grid from '@mui/material/Grid';\nimport cx from 'classnames';\n\nconst useStyles = makeStyles(theme => ({\n paper: {\n padding: theme.spacing(2.5),\n margin: theme.spacing(1.25),\n borderRadius: 'unset',\n },\n mobileView: {\n display: 'flex',\n flexDirection: 'column',\n columnCount: 'unset',\n },\n view: {\n columnCount: 3,\n columnFill: 'balance',\n },\n}));\n\nconst CustomPaper = ({ isMobileView, children, onClose }) => {\n const classes = useStyles();\n return (\n <Paper\n onKeyDown={e => {\n if (e.key === 'Escape') onClose();\n }}\n classes={{\n root: cx(classes.paper, { [classes.mobileView]: isMobileView }),\n }}\n >\n <Grid className={cx(classes.view, { [classes.mobileView]: isMobileView })}>{children}</Grid>\n </Paper>\n );\n};\n\nCustomPaper.propTypes = {\n isMobileView: PropTypes.bool,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n};\n\nexport default CustomPaper;\n","import React, { useState } from 'react';\nimport cx from 'classnames';\nimport * as R from 'ramda';\nimport makeStyles from '@mui/styles/makeStyles';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport Grid from '@mui/material/Grid';\nimport Collapse from '@mui/material/Collapse';\nimport Typography from '@mui/material/Typography';\nimport { ToggleButton } from '../ToggleButton/ToggleButton';\nimport Item from './Item';\nimport Paper from './Paper';\n\nexport const MAX_COLUMNS = 12;\nexport const COLUMNS = [12, 12, 6, 4, 3, 3, 2, 2, 2, 2, 2, 2, 1];\n\nconst useStyles = makeStyles(theme => ({\n collapseContainer: {\n width: '100%',\n },\n container: {\n '&:focus': {\n outlineColor: theme.palette.highlight.hl1,\n outlineWidth: 2,\n outlineStyle: 'auto',\n paddingBottom: 16,\n },\n },\n}));\n\nexport const CollapseButtons = props => {\n const {\n items = [],\n action = () => {},\n nbColumns = 3,\n testId = 'collapseButton',\n isSecondLevelClikable,\n gridButtonsProps = {},\n breakpoint = theme => theme.breakpoints.down('md'),\n justify,\n textTransform = 'none',\n labelAccessor = R.prop('label'),\n accessibility,\n } = props;\n\n const classes = useStyles();\n const isMobileView = useMediaQuery(breakpoint);\n const [toggleId, setIsOpen] = useState(props.selectedItemId);\n const mapIndexed = R.addIndex(R.map);\n const collapseFactory =\n ({ action, isSecondLevelClikable, labelAccessor, testId }) =>\n ({ toggleId, id, values, isMobileView }) => (\n <Collapse\n key={id}\n in={toggleId === id}\n timeout=\"auto\"\n unmountOnExit\n className={classes.collapseContainer}\n >\n <Paper elevation={10} isMobileView={isMobileView}>\n {mapIndexed(\n (item, index) => (\n <Item\n key={`${index}-${R.prop('id')(item)}`}\n testId={`${testId}_${id}_value_${R.prop('id')(item)}`}\n parentId={id}\n item={item}\n action={action}\n isSecondLevelClikable={isSecondLevelClikable}\n labelAccessor={labelAccessor}\n />\n ),\n values,\n )}\n </Paper>\n </Collapse>\n );\n const collapse = collapseFactory({ action, isSecondLevelClikable, labelAccessor, testId });\n\n return (\n <Grid\n container\n spacing={2}\n data-testid={testId}\n justifyContent={justify}\n className={cx({ [classes.container]: accessibility })}\n tabIndex={0}\n >\n {mapIndexed(({ id, label, values = [] }, index) => (\n <Grid\n item\n xs={12}\n sm={12}\n md={R.nth(nbColumns)(COLUMNS)}\n {...gridButtonsProps}\n key={`${index}::${id}`}\n >\n <Typography variant=\"h3\">\n <ToggleButton\n textTransform={textTransform}\n label={label}\n tabIndex={toggleId ? 1 : 0}\n isOpen={toggleId === id}\n toggle={() => setIsOpen(id === toggleId ? null : id)}\n testId={`${testId}_${id}`}\n id={id}\n />\n {isMobileView && collapse({ toggleId, id, values, isMobileView })}\n </Typography>\n </Grid>\n ))(items)}\n {!isMobileView &&\n R.map(({ id, values = [] }) => collapse({ toggleId, id, values, isMobileView }), items)}\n </Grid>\n );\n};\n"],"names":["useStyles","action","isSecondLevelClikable","labelAccessor","testId","toggleId","isMobileView","Paper","Typography"],"mappings":"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"}
1
+ {"version":3,"file":"CollapseButtons.js","sources":["../../src/ToggleButton/ToggleButton.jsx","../../src/CollapseButtons/Item.jsx","../../src/CollapseButtons/Paper.jsx","../../src/CollapseButtons/CollapseSection.jsx","../../src/CollapseButtons/CollapseButtons.jsx"],"sourcesContent":["import React from 'react';\nimport * as R from 'ramda';\nimport cx from 'classnames';\nimport makeStyles from '@mui/styles/makeStyles';\nimport Button from '@mui/material/Button';\nimport { KeyboardArrowDown, KeyboardArrowUp } from '@mui/icons-material';\n\nconst useStyles = makeStyles((theme) => {\n const color1 = R.path(['palette', 'highlight', 'hl1'], theme) || theme.palette.primary.dark;\n return {\n root: {\n minHeight: '43px',\n borderRadius: theme.shape.borderRadius,\n padding: theme.spacing(0.75, 2, 0.5, 2),\n color: theme.palette.getContrastText(theme.palette.primary.main),\n backgroundColor:\n R.path(['palette', 'button', 'mainOpacity'], theme) || theme.palette.primary.main,\n display: 'flex',\n justifyContent: 'space-between',\n '&:hover': {\n color: theme.palette.getContrastText(color1),\n backgroundColor: color1,\n },\n },\n label: {\n textAlign: 'left',\n fontSize: '0.9375rem',\n lineHeight: '1.0',\n },\n selected: {\n color: theme.palette.getContrastText(color1),\n backgroundColor: color1,\n },\n };\n});\n\nexport const ToggleButton = ({\n isOpen,\n label,\n toggle,\n testId,\n tabIndex = 0,\n textTransform = 'capitalize',\n}) => {\n const classes = useStyles();\n return (\n <Button\n aria-expanded={isOpen}\n aria-label={label}\n tabIndex={tabIndex}\n data-testid={testId}\n classes={{ root: classes.root, label: classes.label }}\n className={cx({ [classes.selected]: isOpen })}\n style={{ textTransform }}\n fullWidth\n variant=\"text\"\n onClick={R.is(Function)(toggle) ? toggle : null}\n >\n {label}\n {isOpen ? <KeyboardArrowUp /> : <KeyboardArrowDown />}\n </Button>\n );\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport * as R from 'ramda';\nimport Grid from '@mui/material/Grid';\nimport Button from '@mui/material/Button';\nimport Link from '@mui/material/Link';\nimport makeStyles from '@mui/styles/makeStyles';\nimport SvgIcon from '@mui/material/SvgIcon';\nimport { Typography } from '@mui/material';\n\nconst useStyles = makeStyles((theme) => ({\n paperItem: {\n alignItems: 'baseline',\n },\n itemTitle: {\n ...theme.typography.body2,\n color: theme.palette.primary.main,\n },\n button: {\n '&:hover': {\n backgroundColor:\n R.path(['palette', 'tertiary', 'light'])(theme) || theme.palette.secondary.light,\n },\n padding: theme.spacing(1.25),\n textAlign: 'left',\n textTransform: 'none',\n justifyContent: 'flex-start',\n display: 'flex',\n },\n itemSubtitle: {\n ...theme.typography.body1,\n display: 'flex',\n flexDirection: 'column',\n color: theme.palette.grey[800],\n },\n itemSubtitleLink: {\n ...theme.typography.body1,\n color: theme.palette.grey[800],\n '&:hover': {\n color: theme.palette.primary.main,\n },\n },\n svg: {\n color: theme.palette.grey[600],\n fontSize: '1rem',\n marginRight: theme.spacing(0.5),\n marginTop: theme.spacing(0.25),\n marginBottom: 'auto',\n },\n}));\n\nconst Item = ({ parentId, item, action, testId, isSecondLevelClikable, labelAccessor }) => {\n const classes = useStyles();\n const mapIndexed = R.addIndex(R.map);\n return (\n <Grid className={classes.paperItem}>\n <Typography variant=\"h4\">\n <Button\n aria-label={R.prop('label')(item)}\n className={classes.button}\n fullWidth\n data-testid={testId}\n // eslint-disable-next-line jsx-a11y/prefer-tag-over-role -- no href target, navigation is handled via onClick/onKeyDown\n role=\"link\"\n onClick={() => {\n if (R.not(R.is(Function)(action))) return;\n action(parentId, R.prop('id')(item));\n }}\n tabIndex={0}\n >\n <SvgIcon className={classes.svg}>\n <path d={R.prop('svgPath')(item)} />\n </SvgIcon>\n <Grid container item xs={12} direction=\"column\">\n <span className={classes.itemTitle}>{labelAccessor(item, parentId)}</span>\n <span className={classes.itemSubtitle}>\n {mapIndexed((subtopic, index) => {\n if (R.not(R.is(Object)(subtopic))) return subtopic;\n if (R.not(isSecondLevelClikable)) return labelAccessor(subtopic, parentId);\n const id = R.prop('id')(subtopic);\n return (\n <Typography variant=\"h5\" key={`${id}::${index}`}>\n <Link\n className={classes.itemSubtitleLink}\n // eslint-disable-next-line jsx-a11y/prefer-tag-over-role -- no href target, navigation is handled via onClick/onKeyDown\n role=\"link\"\n onClick={(e) => {\n if (R.not(R.is(Function)(action))) return;\n action(parentId, id);\n e.stopPropagation();\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n if (R.not(R.is(Function)(action))) return;\n action(parentId, id);\n e.stopPropagation();\n }\n }}\n tabIndex={0}\n underline=\"none\"\n style={{ display: 'list-item' }}\n >\n {labelAccessor(subtopic, parentId)}\n </Link>\n </Typography>\n );\n })(\n R.pipe(\n R.propOr([], 'subtopics'),\n R.ifElse(R.always(isSecondLevelClikable), R.identity, R.intersperse(' • '))\n )(item)\n )}\n </span>\n </Grid>\n </Button>\n </Typography>\n </Grid>\n );\n};\n\nItem.propTypes = {\n parentId: PropTypes.string,\n testId: PropTypes.string,\n item: PropTypes.object,\n action: PropTypes.func,\n isSecondLevelClikable: PropTypes.bool,\n labelAccessor: PropTypes.func,\n};\n\nexport default Item;\n","import React from 'react';\nimport Paper from '@mui/material/Paper';\nimport Grid from '@mui/material/Grid';\n\nconst CustomPaper = ({ isMobileView, children, onClose }) => {\n return (\n <Paper\n onKeyDown={(e) => {\n if (e.key === 'Escape' && onClose) onClose();\n }}\n sx={{\n padding: 2.5, // Multiplies by theme.spacing (2.5 * 8px = 20px)\n margin: 1.25, // Multiplies by theme.spacing (1.25 * 8px = 10px)\n borderRadius: 'unset',\n ...(isMobileView && {\n display: 'flex',\n flexDirection: 'column',\n columnCount: 'unset',\n }),\n }}\n >\n <Grid\n sx={{\n columnCount: isMobileView ? 'unset' : 3,\n columnFill: 'balance',\n ...(isMobileView && {\n display: 'flex',\n flexDirection: 'column',\n }),\n }}\n >\n {children}\n </Grid>\n </Paper>\n );\n};\n\nexport default CustomPaper;\n","import React from 'react';\nimport Collapse from '@mui/material/Collapse';\nimport Item from './Item';\nimport Paper from './Paper';\n\nconst EMPTY_VALUES = [];\n\nconst CollapseSection = ({\n id,\n toggleId,\n values = EMPTY_VALUES,\n isMobileView,\n action,\n isSecondLevelClikable,\n labelAccessor,\n testId,\n}) => {\n const isOpen = toggleId === id;\n\n return (\n <Collapse in={isOpen} timeout=\"auto\" unmountOnExit sx={{ width: '100%' }}>\n <Paper elevation={10} isMobileView={isMobileView}>\n {values.map((item, index) => {\n const itemId = item?.id ?? index;\n return (\n <Item\n key={`${index}-${itemId}`}\n testId={`${testId}_${id}_value_${itemId}`}\n parentId={id}\n item={item}\n action={action}\n isSecondLevelClikable={isSecondLevelClikable}\n labelAccessor={labelAccessor}\n />\n );\n })}\n </Paper>\n </Collapse>\n );\n};\n\n// Optimizes re-rendering cycles\nexport default React.memo(CollapseSection);\n","import React, { useState, useCallback } from 'react';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport Grid from '@mui/material/Grid';\nimport Typography from '@mui/material/Typography';\nimport { ToggleButton } from '../ToggleButton/ToggleButton';\nimport CollapseSection from './CollapseSection';\n\nexport const MAX_COLUMNS = 12;\nexport const COLUMNS = [12, 12, 6, 4, 3, 3, 2, 2, 2, 2, 2, 2, 1];\n\nconst EMPTY_ITEMS = [];\nconst EMPTY_GRID_BUTTONS_PROPS = {};\nconst noop = () => {};\nconst defaultBreakpoint = (theme) => theme.breakpoints.down('md');\nconst defaultLabelAccessor = (obj) => obj?.label;\n\nexport const CollapseButtons = ({\n items = EMPTY_ITEMS,\n action = noop,\n nbColumns = 3,\n testId = 'collapseButton',\n isSecondLevelClikable,\n gridButtonsProps = EMPTY_GRID_BUTTONS_PROPS,\n breakpoint = defaultBreakpoint,\n justify,\n textTransform = 'none',\n labelAccessor = defaultLabelAccessor,\n accessibility,\n selectedItemId,\n}) => {\n const isMobileView = useMediaQuery(breakpoint);\n const [toggleId, setIsOpen] = useState(selectedItemId);\n\n // Safe fallback translation of R.nth(nbColumns)(COLUMNS)\n const mdGridSize = COLUMNS[nbColumns] ?? 3;\n\n // Optimize callback references\n const handleToggle = useCallback((id) => {\n setIsOpen((prevId) => (prevId === id ? null : id));\n }, []);\n\n return (\n <Grid\n container\n data-testid={testId}\n justifyContent={justify}\n tabIndex={0}\n sx={{\n ...(accessibility && {\n '&:focus': {\n outlineColor: 'highlight.hl1', // Safely pulls theme.palette.highlight.hl1 automatically\n outlineWidth: 2,\n outlineStyle: 'auto',\n paddingBottom: 2, // 2 * 8px = 16px\n },\n }),\n }}\n >\n {items.map(({ id, label, values = [] }, index) => (\n <Grid\n item\n xs={12}\n sm={12}\n md={mdGridSize}\n {...gridButtonsProps}\n key={`${index}::${id}`}\n sx={{\n p: 1, // Adds 8px padding evenly inside every item box without layout shifting\n }}\n >\n <Typography variant=\"h3\">\n <ToggleButton\n textTransform={textTransform}\n label={label}\n tabIndex={toggleId ? 0 : -1}\n isOpen={toggleId === id}\n toggle={() => handleToggle(id)}\n testId={`${testId}_${id}`}\n id={id}\n />\n {isMobileView && (\n <CollapseSection\n id={id}\n toggleId={toggleId}\n values={values}\n isMobileView={isMobileView}\n action={action}\n isSecondLevelClikable={isSecondLevelClikable}\n labelAccessor={labelAccessor}\n testId={testId}\n />\n )}\n </Typography>\n </Grid>\n ))}\n\n {!isMobileView &&\n items.map(({ id, values = [] }) => (\n <CollapseSection\n key={`desktop-collapse-${id}`}\n id={id}\n toggleId={toggleId}\n values={values}\n isMobileView={isMobileView}\n action={action}\n isSecondLevelClikable={isSecondLevelClikable}\n labelAccessor={labelAccessor}\n testId={testId}\n />\n ))}\n </Grid>\n );\n};\n"],"names":["useStyles","Paper","Typography","CollapseSection"],"mappings":"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"}
@@ -104,8 +104,9 @@ const useStyles = makeStyles((theme) => ({
104
104
  overflowWrap: "break-word"
105
105
  }
106
106
  }));
107
+ const EMPTY_DATA = [];
107
108
  const CollapsibleTree = ({
108
- data = [],
109
+ data = EMPTY_DATA,
109
110
  defaultDepthLevel = 1,
110
111
  isLoading,
111
112
  children,
@@ -125,8 +126,8 @@ const CollapsibleTree = ({
125
126
  if (isAllOpen2) return setDepthLevel(void 0);
126
127
  return setDepthLevel(defaultDepthLevel);
127
128
  };
128
- const getValue = ({ value, children: children2 = [], ...handlerProps }) => {
129
- if ((R.isNil(value) || R.isEmpty(value)) && R.isEmpty(children2)) {
129
+ const getValue = ({ value, children: valueChildren = [], ...handlerProps }) => {
130
+ if ((R.isNil(value) || R.isEmpty(value)) && R.isEmpty(valueChildren)) {
130
131
  return R.prop("noValue", labels);
131
132
  }
132
133
  if (R.is(Function, valueHandler)) {
@@ -161,36 +162,53 @@ const CollapsibleTree = ({
161
162
  icon: /* @__PURE__ */ jsx(Info, { color: "primary", fontSize: "large" })
162
163
  }
163
164
  ),
164
- R.map(({ id, label, children: children2 = [] }) => {
165
+ R.map(({ id: groupId, label: groupLabel, children: groupChildren = [] }) => {
165
166
  return /* @__PURE__ */ jsxs(Fragment, { children: [
166
167
  /* @__PURE__ */ jsx(Divider, { className: classes.divider }),
167
- /* @__PURE__ */ jsx(Typography, { variant: "h5", className: classes.title, children: label }),
168
- R.map(({ id: id2, label: label2, children: children3, value, handlerProps = {} }) => {
169
- return /* @__PURE__ */ jsxs(CollapseComponent, { level: 0, label: label2, isOpen: depthLevel >= 0, children: [
170
- /* @__PURE__ */ jsx(
171
- Typography,
172
- {
173
- className: cx(classes.spacingValue, classes.overflow),
174
- variant: "body2",
175
- children: getValue({ value, children: children3, ...handlerProps })
176
- }
177
- ),
178
- children3 && R.map(({ id: id3, label: label3, value: value2, handlerProps: handlerProps2 = {} }) => {
179
- return /* @__PURE__ */ jsx(
180
- CollapseComponent,
168
+ /* @__PURE__ */ jsx(Typography, { variant: "h5", className: classes.title, children: groupLabel }),
169
+ R.map(
170
+ ({
171
+ id: itemId,
172
+ label: itemLabel,
173
+ children: itemChildren,
174
+ value: itemValue,
175
+ handlerProps: itemHandlerProps = {}
176
+ }) => {
177
+ return /* @__PURE__ */ jsxs(CollapseComponent, { level: 0, label: itemLabel, isOpen: depthLevel >= 0, children: [
178
+ /* @__PURE__ */ jsx(
179
+ Typography,
181
180
  {
182
- level: 1,
183
- variant: VARIANT_BOLD,
184
- label: label3,
185
- isOpen: depthLevel >= 1,
186
- children: /* @__PURE__ */ jsx(Typography, { variant: "body2", className: classes.overflow, children: getValue({ value: value2, ...handlerProps2 }) })
181
+ className: cx(classes.spacingValue, classes.overflow),
182
+ variant: "body2",
183
+ children: getValue({ value: itemValue, children: itemChildren, ...itemHandlerProps })
184
+ }
185
+ ),
186
+ itemChildren && R.map(
187
+ ({
188
+ id: subId,
189
+ label: subLabel,
190
+ value: subValue,
191
+ handlerProps: subHandlerProps = {}
192
+ }) => {
193
+ return /* @__PURE__ */ jsx(
194
+ CollapseComponent,
195
+ {
196
+ level: 1,
197
+ variant: VARIANT_BOLD,
198
+ label: subLabel,
199
+ isOpen: depthLevel >= 1,
200
+ children: /* @__PURE__ */ jsx(Typography, { variant: "body2", className: classes.overflow, children: getValue({ value: subValue, ...subHandlerProps }) })
201
+ },
202
+ subId
203
+ );
187
204
  },
188
- id3
189
- );
190
- }, children3)
191
- ] }, id2);
192
- }, children2)
193
- ] }, id);
205
+ itemChildren
206
+ )
207
+ ] }, itemId);
208
+ },
209
+ groupChildren
210
+ )
211
+ ] }, groupId);
194
212
  }, data)
195
213
  ] });
196
214
  };
@@ -1 +1 @@
1
- {"version":3,"file":"CollapsibleTree.js","sources":["../../src/CollapsibleTree/Collapse.jsx","../../src/CollapsibleTree/CollapsibleTree.jsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport { pathOr } from 'ramda';\nimport { useTheme } from '@mui/material/styles';\nimport makeStyles from '@mui/styles/makeStyles';\nimport Collapse from '@mui/material/Collapse';\nimport Button from '@mui/material/Button';\nimport { KeyboardArrowDown, KeyboardArrowUp } from '@mui/icons-material';\n\nconst VARIANT_ICON = 'icon';\nexport const VARIANT_BOLD = 'bold';\n\nconst useStyles = makeStyles(theme => ({\n buttonExpand: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n [`button${VARIANT_ICON}`]: {\n color: theme.palette.primary.main,\n backgroundColor: 'rgba(24, 32, 38, 0.04)',\n margin: theme.spacing(1, 0),\n },\n [`button${VARIANT_BOLD}`]: {\n marginBottom: theme.spacing(1),\n padding: theme.spacing(0.5, 0, 1, 0),\n '&:hover': {\n backgroundColor: 'unset',\n },\n ...pathOr({}, ['mixins', 'collapsibleTree', 'buttonSublevel'], theme),\n },\n [`collapsibleContainer${VARIANT_BOLD}`]: {\n borderTop: '2px solid black',\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n },\n}));\n\nconst CollapseComponent = ({ label, isOpen, children, variant = VARIANT_ICON, level }) => {\n const classes = useStyles();\n const theme = useTheme();\n const [open, setOpen] = React.useState(isOpen);\n\n useEffect(() => setOpen(isOpen), [isOpen]);\n\n return (\n <div\n className={cx(classes[`collapsibleContainer${variant}`])}\n style={{\n marginRight: theme.spacing(level * 2),\n marginLeft: theme.spacing(level * 2),\n }}\n >\n <Button\n className={cx(classes.buttonExpand, classes[`button${variant}`])}\n onClick={() => setOpen(!open)}\n fullWidth\n >\n {label}\n {open ? <KeyboardArrowUp color=\"primary\" /> : <KeyboardArrowDown color=\"primary\" />}\n </Button>\n <Collapse in={open} timeout=\"auto\">\n {children}\n </Collapse>\n </div>\n );\n};\n\nCollapseComponent.propTypes = {\n label: PropTypes.string,\n isOpen: PropTypes.bool,\n children: PropTypes.node,\n variant: PropTypes.oneOf([VARIANT_ICON, VARIANT_BOLD]),\n level: PropTypes.number,\n};\n\nexport default CollapseComponent;\n","import React, { useState, Fragment, useEffect } from 'react';\nimport * as R from 'ramda';\nimport Container from '@mui/material/Container';\nimport makeStyles from '@mui/styles/makeStyles';\nimport Typography from '@mui/material/Typography';\nimport Divider from '@mui/material/Divider';\nimport Button from '@mui/material/Button';\nimport IconButton from '@mui/material/IconButton';\nimport { Info, KeyboardArrowDown, KeyboardArrowUp } from '@mui/icons-material';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Grid from '@mui/material/Grid';\nimport Collapse, { VARIANT_BOLD } from './Collapse';\nimport cx from 'classnames';\nimport { NoData } from '../NoData/NoData';\n\nconst useStyles = makeStyles(theme => ({\n container: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n title: {\n fontWeight: 'bold',\n ...R.pathOr({}, ['mixins', 'collapsibleTree', 'title'], theme),\n },\n divider: {\n marginBottom: theme.spacing(2),\n },\n spacingValue: {\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2),\n marginBottom: theme.spacing(2),\n },\n overflow: {\n whiteSpace: 'pre-wrap',\n overflowWrap: 'break-word',\n },\n}));\n\nexport const CollapsibleTree = ({\n data = [],\n defaultDepthLevel = 1,\n isLoading,\n children,\n labels,\n testId = 'collapsible-tree',\n valueHandler,\n icon,\n onClick,\n}) => {\n const classes = useStyles();\n const [depthLevel, setDepthLevel] = useState(defaultDepthLevel);\n\n useEffect(() => setDepthLevel(defaultDepthLevel), [defaultDepthLevel]);\n\n if (isLoading) {\n return (\n <Grid container item justifyContent=\"center\">\n <CircularProgress />\n </Grid>\n );\n }\n\n const handleCollapse = isAllOpen => {\n if (isAllOpen) return setDepthLevel(undefined);\n return setDepthLevel(defaultDepthLevel);\n };\n\n const getValue = ({ value, children = [], ...handlerProps }) => {\n if ((R.isNil(value) || R.isEmpty(value)) && R.isEmpty(children)) {\n return R.prop('noValue', labels);\n }\n if (R.is(Function, valueHandler)) {\n return valueHandler({ value, ...handlerProps });\n }\n return value;\n };\n\n const isAllOpen = depthLevel >= defaultDepthLevel;\n const buttonAllOpenLabel = isAllOpen\n ? R.prop('collapseAll', labels)\n : R.prop('expandAll', labels);\n\n return (\n <Fragment>\n <Container disableGutters data-testid={testId} className={classes.container}>\n <Button\n aria-label={buttonAllOpenLabel}\n color=\"primary\"\n endIcon={\n isAllOpen ? (\n <KeyboardArrowUp color=\"primary\" />\n ) : (\n <KeyboardArrowDown color=\"primary\" />\n )\n }\n onClick={() => handleCollapse(isAllOpen)}\n tabIndex={0}\n >\n {buttonAllOpenLabel}\n </Button>\n <div>\n {children}\n <IconButton color=\"primary\" onClick={onClick} size=\"large\">\n {icon}\n </IconButton>\n </div>\n </Container>\n {R.isEmpty(data) && (\n <NoData\n message={R.prop('noData', labels) || 'no data'}\n icon={<Info color=\"primary\" fontSize=\"large\" />}\n />\n )}\n {R.map(({ id, label, children = [] }) => {\n return (\n <Fragment key={id}>\n <Divider className={classes.divider} />\n <Typography variant=\"h5\" className={classes.title}>\n {label}\n </Typography>\n {R.map(({ id, label, children, value, handlerProps = {} }) => {\n return (\n <Collapse key={id} level={0} label={label} isOpen={depthLevel >= 0}>\n <Typography\n className={cx(classes.spacingValue, classes.overflow)}\n variant=\"body2\"\n >\n {getValue({ value, children, ...handlerProps })}\n </Typography>\n {children &&\n R.map(({ id, label, value, handlerProps = {} }) => {\n return (\n <Collapse\n key={id}\n level={1}\n variant={VARIANT_BOLD}\n label={label}\n isOpen={depthLevel >= 1}\n >\n <Typography variant=\"body2\" className={classes.overflow}>\n {getValue({ value, ...handlerProps })}\n </Typography>\n </Collapse>\n );\n }, children)}\n </Collapse>\n );\n }, children)}\n </Fragment>\n );\n }, data)}\n </Fragment>\n );\n};\n"],"names":["useStyles","isAllOpen","children","id","label","Collapse","value","handlerProps"],"mappings":"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"}
1
+ {"version":3,"file":"CollapsibleTree.js","sources":["../../src/CollapsibleTree/Collapse.jsx","../../src/CollapsibleTree/CollapsibleTree.jsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport { pathOr } from 'ramda';\nimport { useTheme } from '@mui/material/styles';\nimport makeStyles from '@mui/styles/makeStyles';\nimport Collapse from '@mui/material/Collapse';\nimport Button from '@mui/material/Button';\nimport { KeyboardArrowDown, KeyboardArrowUp } from '@mui/icons-material';\n\nconst VARIANT_ICON = 'icon';\nexport const VARIANT_BOLD = 'bold';\n\nconst useStyles = makeStyles((theme) => ({\n buttonExpand: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n [`button${VARIANT_ICON}`]: {\n color: theme.palette.primary.main,\n backgroundColor: 'rgba(24, 32, 38, 0.04)',\n margin: theme.spacing(1, 0),\n },\n [`button${VARIANT_BOLD}`]: {\n marginBottom: theme.spacing(1),\n padding: theme.spacing(0.5, 0, 1, 0),\n '&:hover': {\n backgroundColor: 'unset',\n },\n ...pathOr({}, ['mixins', 'collapsibleTree', 'buttonSublevel'], theme),\n },\n [`collapsibleContainer${VARIANT_BOLD}`]: {\n borderTop: '2px solid black',\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n },\n}));\n\nconst CollapseComponent = ({ label, isOpen, children, variant = VARIANT_ICON, level }) => {\n const classes = useStyles();\n const theme = useTheme();\n const [open, setOpen] = React.useState(isOpen);\n\n useEffect(() => setOpen(isOpen), [isOpen]);\n\n return (\n <div\n className={cx(classes[`collapsibleContainer${variant}`])}\n style={{\n marginRight: theme.spacing(level * 2),\n marginLeft: theme.spacing(level * 2),\n }}\n >\n <Button\n className={cx(classes.buttonExpand, classes[`button${variant}`])}\n onClick={() => setOpen(!open)}\n fullWidth\n >\n {label}\n {open ? <KeyboardArrowUp color=\"primary\" /> : <KeyboardArrowDown color=\"primary\" />}\n </Button>\n <Collapse in={open} timeout=\"auto\">\n {children}\n </Collapse>\n </div>\n );\n};\n\nCollapseComponent.propTypes = {\n label: PropTypes.string,\n isOpen: PropTypes.bool,\n children: PropTypes.node,\n variant: PropTypes.oneOf([VARIANT_ICON, VARIANT_BOLD]),\n level: PropTypes.number,\n};\n\nexport default CollapseComponent;\n","import React, { useState, Fragment, useEffect } from 'react';\nimport * as R from 'ramda';\nimport Container from '@mui/material/Container';\nimport makeStyles from '@mui/styles/makeStyles';\nimport Typography from '@mui/material/Typography';\nimport Divider from '@mui/material/Divider';\nimport Button from '@mui/material/Button';\nimport IconButton from '@mui/material/IconButton';\nimport { Info, KeyboardArrowDown, KeyboardArrowUp } from '@mui/icons-material';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Grid from '@mui/material/Grid';\nimport Collapse, { VARIANT_BOLD } from './Collapse';\nimport cx from 'classnames';\nimport { NoData } from '../NoData/NoData';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n title: {\n fontWeight: 'bold',\n ...R.pathOr({}, ['mixins', 'collapsibleTree', 'title'], theme),\n },\n divider: {\n marginBottom: theme.spacing(2),\n },\n spacingValue: {\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2),\n marginBottom: theme.spacing(2),\n },\n overflow: {\n whiteSpace: 'pre-wrap',\n overflowWrap: 'break-word',\n },\n}));\n\nconst EMPTY_DATA = [];\n\nexport const CollapsibleTree = ({\n data = EMPTY_DATA,\n defaultDepthLevel = 1,\n isLoading,\n children,\n labels,\n testId = 'collapsible-tree',\n valueHandler,\n icon,\n onClick,\n}) => {\n const classes = useStyles();\n const [depthLevel, setDepthLevel] = useState(defaultDepthLevel);\n\n useEffect(() => setDepthLevel(defaultDepthLevel), [defaultDepthLevel]);\n\n if (isLoading) {\n return (\n <Grid container item justifyContent=\"center\">\n <CircularProgress />\n </Grid>\n );\n }\n\n const handleCollapse = (isAllOpen) => {\n if (isAllOpen) return setDepthLevel(undefined);\n return setDepthLevel(defaultDepthLevel);\n };\n\n const getValue = ({ value, children: valueChildren = [], ...handlerProps }) => {\n if ((R.isNil(value) || R.isEmpty(value)) && R.isEmpty(valueChildren)) {\n return R.prop('noValue', labels);\n }\n if (R.is(Function, valueHandler)) {\n return valueHandler({ value, ...handlerProps });\n }\n return value;\n };\n\n const isAllOpen = depthLevel >= defaultDepthLevel;\n const buttonAllOpenLabel = isAllOpen\n ? R.prop('collapseAll', labels)\n : R.prop('expandAll', labels);\n\n return (\n <Fragment>\n <Container disableGutters data-testid={testId} className={classes.container}>\n <Button\n aria-label={buttonAllOpenLabel}\n color=\"primary\"\n endIcon={\n isAllOpen ? <KeyboardArrowUp color=\"primary\" /> : <KeyboardArrowDown color=\"primary\" />\n }\n onClick={() => handleCollapse(isAllOpen)}\n tabIndex={0}\n >\n {buttonAllOpenLabel}\n </Button>\n <div>\n {children}\n <IconButton color=\"primary\" onClick={onClick} size=\"large\">\n {icon}\n </IconButton>\n </div>\n </Container>\n {R.isEmpty(data) && (\n <NoData\n message={R.prop('noData', labels) || 'no data'}\n icon={<Info color=\"primary\" fontSize=\"large\" />}\n />\n )}\n {R.map(({ id: groupId, label: groupLabel, children: groupChildren = [] }) => {\n return (\n <Fragment key={groupId}>\n <Divider className={classes.divider} />\n <Typography variant=\"h5\" className={classes.title}>\n {groupLabel}\n </Typography>\n {R.map(\n ({\n id: itemId,\n label: itemLabel,\n children: itemChildren,\n value: itemValue,\n handlerProps: itemHandlerProps = {},\n }) => {\n return (\n <Collapse key={itemId} level={0} label={itemLabel} isOpen={depthLevel >= 0}>\n <Typography\n className={cx(classes.spacingValue, classes.overflow)}\n variant=\"body2\"\n >\n {getValue({ value: itemValue, children: itemChildren, ...itemHandlerProps })}\n </Typography>\n {itemChildren &&\n R.map(\n ({\n id: subId,\n label: subLabel,\n value: subValue,\n handlerProps: subHandlerProps = {},\n }) => {\n return (\n <Collapse\n key={subId}\n level={1}\n variant={VARIANT_BOLD}\n label={subLabel}\n isOpen={depthLevel >= 1}\n >\n <Typography variant=\"body2\" className={classes.overflow}>\n {getValue({ value: subValue, ...subHandlerProps })}\n </Typography>\n </Collapse>\n );\n },\n itemChildren\n )}\n </Collapse>\n );\n },\n groupChildren\n )}\n </Fragment>\n );\n }, data)}\n </Fragment>\n );\n};\n"],"names":["useStyles","isAllOpen","Collapse"],"mappings":"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"}
@@ -80,7 +80,8 @@ const Warning = ({ title }) => {
80
80
  Warning.propTypes = {
81
81
  title: PropTypes.string
82
82
  };
83
- const Mode = ({ changeMode, mode, modes = [], title }) => {
83
+ const EMPTY_MODES = [];
84
+ const Mode = ({ changeMode, mode, modes = EMPTY_MODES, title }) => {
84
85
  const classes = useStyles$2();
85
86
  return /* @__PURE__ */ jsx(Card, { className: classes.container, children: /* @__PURE__ */ jsxs(CardContent, { className: classes.content, children: [
86
87
  /* @__PURE__ */ jsx(Typography, { className: classes.title, "aria-label": title, tabIndex: 0, children: title }),
@@ -255,14 +256,14 @@ const Contact = ({
255
256
  const [checked, setChecked] = useState(false);
256
257
  const [isSendDisable, setSendDisable] = useState(true);
257
258
  const [detailsHasError, setDetailsError] = useState(false);
258
- const checkEmail = (email2) => {
259
- if (validate(email2) && R.test(/^\S+@\S+\.\S+$/, email2)) {
259
+ const checkEmail = (value) => {
260
+ if (validate(value) && R.test(/^\S+@\S+\.\S+$/, value)) {
260
261
  return setEmailError(false);
261
262
  }
262
263
  return setEmailError(true);
263
264
  };
264
- const checkDetails = (details2) => {
265
- if (R.isEmpty(details2)) {
265
+ const checkDetails = (value) => {
266
+ if (R.isEmpty(value)) {
266
267
  return setDetailsError(true);
267
268
  }
268
269
  return setDetailsError(false);