@pega/lists-react 9.0.0-build.29.2 → 9.0.0-build.29.21

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 (57) hide show
  1. package/lib/Core/Components/DefaultComponents/CellRenderers/RowActionMenu.d.ts.map +1 -1
  2. package/lib/Core/Components/DefaultComponents/CellRenderers/RowActionMenu.js +33 -5
  3. package/lib/Core/Components/DefaultComponents/CellRenderers/RowActionMenu.js.map +1 -1
  4. package/lib/Core/Components/DefaultComponents/CellRenderers/RowDeleteAction.d.ts +10 -0
  5. package/lib/Core/Components/DefaultComponents/CellRenderers/RowDeleteAction.d.ts.map +1 -0
  6. package/lib/Core/Components/DefaultComponents/CellRenderers/RowDeleteAction.js +27 -0
  7. package/lib/Core/Components/DefaultComponents/CellRenderers/RowDeleteAction.js.map +1 -0
  8. package/lib/Core/Components/DefaultComponents/CellRenderers/index.d.ts +2 -0
  9. package/lib/Core/Components/DefaultComponents/CellRenderers/index.d.ts.map +1 -1
  10. package/lib/Core/Components/DefaultComponents/CellRenderers/index.js +2 -0
  11. package/lib/Core/Components/DefaultComponents/CellRenderers/index.js.map +1 -1
  12. package/lib/Core/Components/DefaultComponents/index.d.ts +1 -0
  13. package/lib/Core/Components/DefaultComponents/index.d.ts.map +1 -1
  14. package/lib/Core/Components/Toolbar/ColumnSelector.d.ts.map +1 -1
  15. package/lib/Core/Components/Toolbar/ColumnSelector.js +3 -2
  16. package/lib/Core/Components/Toolbar/ColumnSelector.js.map +1 -1
  17. package/lib/Core/Components/Toolbar/hooks/useMore.d.ts.map +1 -1
  18. package/lib/Core/Components/Toolbar/hooks/useMore.js +26 -9
  19. package/lib/Core/Components/Toolbar/hooks/useMore.js.map +1 -1
  20. package/lib/Core/Hooks/useDragDrop.d.ts.map +1 -1
  21. package/lib/Core/Hooks/useDragDrop.js +7 -7
  22. package/lib/Core/Hooks/useDragDrop.js.map +1 -1
  23. package/lib/Core/Hooks/useRepeat.d.ts.map +1 -1
  24. package/lib/Core/Hooks/useRepeat.js +28 -3
  25. package/lib/Core/Hooks/useRepeat.js.map +1 -1
  26. package/lib/Core/Localization/defaultTranslations.d.ts +1 -0
  27. package/lib/Core/Localization/defaultTranslations.d.ts.map +1 -1
  28. package/lib/Core/Localization/defaultTranslations.js +2 -1
  29. package/lib/Core/Localization/defaultTranslations.js.map +1 -1
  30. package/lib/Core/Utils/index.d.ts +15 -0
  31. package/lib/Core/Utils/index.d.ts.map +1 -1
  32. package/lib/Core/Utils/index.js +20 -0
  33. package/lib/Core/Utils/index.js.map +1 -1
  34. package/lib/Core/Views/Gallery/Components/GalleryCard.d.ts.map +1 -1
  35. package/lib/Core/Views/Gallery/Components/GalleryCard.js +1 -1
  36. package/lib/Core/Views/Gallery/Components/GalleryCard.js.map +1 -1
  37. package/lib/Core/Views/Gallery/Components/GalleryCheckboxCard.d.ts.map +1 -1
  38. package/lib/Core/Views/Gallery/Components/GalleryCheckboxCard.js +1 -1
  39. package/lib/Core/Views/Gallery/Components/GalleryCheckboxCard.js.map +1 -1
  40. package/lib/Core/Views/Gallery/GalleryA11y.d.ts +7 -5
  41. package/lib/Core/Views/Gallery/GalleryA11y.d.ts.map +1 -1
  42. package/lib/Core/Views/Gallery/GalleryA11y.js +9 -52
  43. package/lib/Core/Views/Gallery/GalleryA11y.js.map +1 -1
  44. package/lib/Core/Views/Gallery/index.d.ts.map +1 -1
  45. package/lib/Core/Views/Gallery/index.js +23 -3
  46. package/lib/Core/Views/Gallery/index.js.map +1 -1
  47. package/lib/Core/Views/Table/Body.d.ts.map +1 -1
  48. package/lib/Core/Views/Table/Body.js +5 -2
  49. package/lib/Core/Views/Table/Body.js.map +1 -1
  50. package/lib/Core/Views/Table/TableA11y.d.ts.map +1 -1
  51. package/lib/Core/Views/Table/TableA11y.js +2 -1
  52. package/lib/Core/Views/Table/TableA11y.js.map +1 -1
  53. package/lib/Core/a11y/loadingAnnouncementBehavior.d.ts +12 -0
  54. package/lib/Core/a11y/loadingAnnouncementBehavior.d.ts.map +1 -0
  55. package/lib/Core/a11y/loadingAnnouncementBehavior.js +37 -0
  56. package/lib/Core/a11y/loadingAnnouncementBehavior.js.map +1 -0
  57. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"RowActionMenu.d.ts","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/RowActionMenu.jsx"],"names":[],"mappings":";AAkBA;;;;4CA0DC;;;;;;;sBA3EqB,YAAY"}
1
+ {"version":3,"file":"RowActionMenu.d.ts","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/RowActionMenu.jsx"],"names":[],"mappings":";AAoDA;;;;4CA4DC;;;;;;;sBA/GqB,YAAY"}
@@ -13,27 +13,55 @@ const hydrateActions = (actions, rowContext, refreshRow) => {
13
13
  }
14
14
  }));
15
15
  };
16
+ const isActionConfig = actionConfig => {
17
+ return !!actionConfig && typeof actionConfig === 'object';
18
+ };
19
+ const isVisibleInMenu = (actionConfig, rowContext) => {
20
+ return (isActionConfig(actionConfig) &&
21
+ actionConfig.placement === 'menu' &&
22
+ actionConfig.isVisible?.(rowContext));
23
+ };
24
+ const getConfigActions = ({ editing, deleting }, rowContext, refreshRow, translate) => {
25
+ const actions = [];
26
+ if (isVisibleInMenu(editing, rowContext) && typeof editing.onClick === 'function') {
27
+ actions.push({
28
+ text: translate('Edit'),
29
+ id: 'edit',
30
+ onClick: editing.onClick
31
+ });
32
+ }
33
+ if (isVisibleInMenu(deleting, rowContext) && typeof deleting.onClick === 'function') {
34
+ actions.push({
35
+ text: translate('Delete'),
36
+ id: 'delete',
37
+ onClick: deleting.onClick
38
+ });
39
+ }
40
+ return hydrateActions(actions, rowContext, refreshRow.bind(null, rowContext));
41
+ };
16
42
  function RowActionMenu({ getRsMeta, getExecutionContext, getParentContext }) {
17
43
  const [translate] = useTranslate();
18
44
  const { getValue, getRowActionDetails, refreshRow } = getExecutionContext();
19
45
  const [rowActions, setRowActions] = useState([]);
20
46
  const [actionsFetched, setActionsFetched] = useState(false);
21
47
  const rowContext = getValue();
22
- const { rowActions: tableMetaRowActions } = getRsMeta();
23
- const staticActions = useMemo(() => hydrateActions(tableMetaRowActions ?? [], rowContext, refreshRow.bind(null, rowContext)), [rowContext]);
48
+ const rsMeta = getRsMeta();
49
+ const { rowActions: tableMetaRowActions } = rsMeta;
50
+ const staticActions = useMemo(() => hydrateActions(tableMetaRowActions ?? [], rowContext, refreshRow.bind(null, rowContext)), [rowContext, tableMetaRowActions]);
24
51
  const fetchCaseDeatils = () => {
25
52
  setActionsFetched(false);
26
53
  const currentRowContext = getExecutionContext()?.getValue();
54
+ let actions = [];
55
+ const configActions = getConfigActions(rsMeta, rowContext, refreshRow, translate);
27
56
  getRowActionDetails(currentRowContext)
28
57
  .then(response => {
29
58
  if (Array.isArray(response)) {
30
59
  const latestRowContext = getExecutionContext()?.getValue();
31
- const actions = hydrateActions(response, latestRowContext, refreshRow.bind(null, latestRowContext));
32
- const arr = [...actions, ...staticActions];
33
- setRowActions(arr);
60
+ actions = hydrateActions(response, latestRowContext, refreshRow.bind(null, latestRowContext));
34
61
  }
35
62
  })
36
63
  .finally(() => {
64
+ setRowActions([...configActions, ...actions, ...staticActions]);
37
65
  setActionsFetched(true);
38
66
  });
39
67
  };
@@ -1 +1 @@
1
- {"version":3,"file":"RowActionMenu.js","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/RowActionMenu.jsx"],"names":[],"mappings":"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","sourcesContent":["import { useState, useMemo } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { MenuButton } from '@pega/cosmos-react-core';\nimport { ROW_DENSITY } from 'pega-repeating-structures-core';\n\nimport useTranslate from '../../../Hooks/useTranslate';\n\nconst hydrateActions = (actions, rowContext, refreshRow) => {\n return actions.map(action => ({\n ...action,\n primary: action.text,\n onClick: () => {\n action.onClick(rowContext, refreshRow);\n }\n }));\n};\n\nfunction RowActionMenu({ getRsMeta, getExecutionContext, getParentContext }) {\n const [translate] = useTranslate();\n const { getValue, getRowActionDetails, refreshRow } = getExecutionContext();\n const [rowActions, setRowActions] = useState([]);\n const [actionsFetched, setActionsFetched] = useState(false);\n const rowContext = getValue();\n const { rowActions: tableMetaRowActions } = getRsMeta();\n const staticActions = useMemo(\n () => hydrateActions(tableMetaRowActions ?? [], rowContext, refreshRow.bind(null, rowContext)),\n [rowContext]\n );\n\n const fetchCaseDeatils = () => {\n setActionsFetched(false);\n const currentRowContext = getExecutionContext()?.getValue();\n getRowActionDetails(currentRowContext)\n .then(response => {\n if (Array.isArray(response)) {\n const latestRowContext = getExecutionContext()?.getValue();\n const actions = hydrateActions(\n response,\n latestRowContext,\n refreshRow.bind(null, latestRowContext)\n );\n const arr = [...actions, ...staticActions];\n setRowActions(arr);\n }\n })\n .finally(() => {\n setActionsFetched(true);\n });\n };\n const rowHeaderValue = getExecutionContext().getRowHeader()?.getValue();\n const translatedActionsText = translate('Actions');\n\n return (\n <MenuButton\n text={translatedActionsText}\n iconOnly\n variant='simple'\n compact={getParentContext().getRowDensity() === ROW_DENSITY.SHORT}\n tabIndex={-1}\n menu={{\n items: actionsFetched ? rowActions : [],\n emptyText: translate('No actions available'),\n loading: !actionsFetched\n }}\n aria-label={\n rowHeaderValue ? `${translatedActionsText} - ${rowHeaderValue}` : `${translatedActionsText}`\n }\n onClick={fetchCaseDeatils}\n placement='bottom-end'\n popover={{\n portal: true\n }}\n icon='more'\n />\n );\n}\n\nRowActionMenu.propTypes = {\n getRsMeta: PropTypes.func.isRequired,\n getExecutionContext: PropTypes.func.isRequired\n};\n\nexport default RowActionMenu;\n"]}
1
+ {"version":3,"file":"RowActionMenu.js","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/RowActionMenu.jsx"],"names":[],"mappings":"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","sourcesContent":["import { useState, useMemo } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { MenuButton } from '@pega/cosmos-react-core';\nimport { ROW_DENSITY } from 'pega-repeating-structures-core';\n\nimport useTranslate from '../../../Hooks/useTranslate';\n\nconst hydrateActions = (actions, rowContext, refreshRow) => {\n return actions.map(action => ({\n ...action,\n primary: action.text,\n onClick: () => {\n action.onClick(rowContext, refreshRow);\n }\n }));\n};\n\nconst isActionConfig = actionConfig => {\n return !!actionConfig && typeof actionConfig === 'object';\n};\n\nconst isVisibleInMenu = (actionConfig, rowContext) => {\n return (\n isActionConfig(actionConfig) &&\n actionConfig.placement === 'menu' &&\n actionConfig.isVisible?.(rowContext)\n );\n};\n\nconst getConfigActions = ({ editing, deleting }, rowContext, refreshRow, translate) => {\n const actions = [];\n\n if (isVisibleInMenu(editing, rowContext) && typeof editing.onClick === 'function') {\n actions.push({\n text: translate('Edit'),\n id: 'edit',\n onClick: editing.onClick\n });\n }\n\n if (isVisibleInMenu(deleting, rowContext) && typeof deleting.onClick === 'function') {\n actions.push({\n text: translate('Delete'),\n id: 'delete',\n onClick: deleting.onClick\n });\n }\n\n return hydrateActions(actions, rowContext, refreshRow.bind(null, rowContext));\n};\n\nfunction RowActionMenu({ getRsMeta, getExecutionContext, getParentContext }) {\n const [translate] = useTranslate();\n const { getValue, getRowActionDetails, refreshRow } = getExecutionContext();\n const [rowActions, setRowActions] = useState([]);\n const [actionsFetched, setActionsFetched] = useState(false);\n const rowContext = getValue();\n const rsMeta = getRsMeta();\n const { rowActions: tableMetaRowActions } = rsMeta;\n const staticActions = useMemo(\n () => hydrateActions(tableMetaRowActions ?? [], rowContext, refreshRow.bind(null, rowContext)),\n [rowContext, tableMetaRowActions]\n );\n\n const fetchCaseDeatils = () => {\n setActionsFetched(false);\n const currentRowContext = getExecutionContext()?.getValue();\n let actions = [];\n const configActions = getConfigActions(rsMeta, rowContext, refreshRow, translate);\n getRowActionDetails(currentRowContext)\n .then(response => {\n if (Array.isArray(response)) {\n const latestRowContext = getExecutionContext()?.getValue();\n actions = hydrateActions(\n response,\n latestRowContext,\n refreshRow.bind(null, latestRowContext)\n );\n }\n })\n .finally(() => {\n setRowActions([...configActions, ...actions, ...staticActions]);\n setActionsFetched(true);\n });\n };\n const rowHeaderValue = getExecutionContext().getRowHeader()?.getValue();\n const translatedActionsText = translate('Actions');\n\n return (\n <MenuButton\n text={translatedActionsText}\n iconOnly\n variant='simple'\n compact={getParentContext().getRowDensity() === ROW_DENSITY.SHORT}\n tabIndex={-1}\n menu={{\n items: actionsFetched ? rowActions : [],\n emptyText: translate('No actions available'),\n loading: !actionsFetched\n }}\n aria-label={\n rowHeaderValue ? `${translatedActionsText} - ${rowHeaderValue}` : `${translatedActionsText}`\n }\n onClick={fetchCaseDeatils}\n placement='bottom-end'\n popover={{\n portal: true\n }}\n icon='more'\n />\n );\n}\n\nRowActionMenu.propTypes = {\n getRsMeta: PropTypes.func.isRequired,\n getExecutionContext: PropTypes.func.isRequired\n};\n\nexport default RowActionMenu;\n"]}
@@ -0,0 +1,10 @@
1
+ import type { RsCoreTypes } from 'pega-repeating-structures-core';
2
+ interface RowDeleteProps {
3
+ getExecutionContext: RsCoreTypes.ColumnContext['getExecutionContext'];
4
+ getRsMeta: () => ReturnType<RsCoreTypes.ColumnContext['getRsMeta']> & {
5
+ deleting: RsCoreTypes.ActionConfig;
6
+ };
7
+ }
8
+ declare function RowDeleteAction({ getExecutionContext, getRsMeta }: RowDeleteProps): import("react/jsx-runtime").JSX.Element;
9
+ export default RowDeleteAction;
10
+ //# sourceMappingURL=RowDeleteAction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RowDeleteAction.d.ts","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/RowDeleteAction.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAIlE,UAAU,cAAc;IACtB,mBAAmB,EAAE,WAAW,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;IACtE,SAAS,EAAE,MAAM,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,GAAG;QACpE,QAAQ,EAAE,WAAW,CAAC,YAAY,CAAC;KACpC,CAAC;CACH;AAYD,iBAAS,eAAe,CAAC,EAAE,mBAAmB,EAAE,SAAS,EAAE,EAAE,cAAc,2CAiC1E;AAED,eAAe,eAAe,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import styled, { css } from 'styled-components';
3
+ import { Button, Icon } from '@pega/cosmos-react-core';
4
+ import useTranslate from '../../../Hooks/useTranslate';
5
+ const StyledButton = styled(Button)(({ $isVisible }) => css `
6
+ visibility: ${$isVisible ? 'visible' : 'hidden'};
7
+ `);
8
+ function RowDeleteAction({ getExecutionContext, getRsMeta }) {
9
+ const [translate] = useTranslate();
10
+ const executionContext = getExecutionContext();
11
+ const rowContext = executionContext?.getValue();
12
+ const rowHeaderValue = executionContext?.getRowHeader?.()?.getValue();
13
+ const deleteText = translate('Delete this row');
14
+ const deletingConfig = getRsMeta().deleting;
15
+ // RowDelete renderer only mounts for delete-column configuration.
16
+ const isVisibleFromMeta = rowContext ? deletingConfig.isVisible(rowContext) : false;
17
+ const handleDelete = () => {
18
+ if (!rowContext) {
19
+ return;
20
+ }
21
+ // RowDelete uses action-config callback for delete behavior.
22
+ deletingConfig.onClick(rowContext, executionContext?.refreshRow);
23
+ };
24
+ return (_jsx(StyledButton, { variant: 'simple', icon: true, "$isVisible": isVisibleFromMeta, ...(!isVisibleFromMeta && { tabIndex: -1 }), label: deleteText, "aria-label": rowHeaderValue ? `${deleteText} - ${rowHeaderValue}` : deleteText, onClick: isVisibleFromMeta ? handleDelete : undefined, children: _jsx(Icon, { name: 'trash' }) }));
25
+ }
26
+ export default RowDeleteAction;
27
+ //# sourceMappingURL=RowDeleteAction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RowDeleteAction.js","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/RowDeleteAction.tsx"],"names":[],"mappings":";AAAA,OAAO,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAGvD,OAAO,YAAY,MAAM,6BAA6B,CAAC;AAavD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CACjC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,GAAG,CAAA;kBACP,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;GAChD,CACF,CAAC;AAEF,SAAS,eAAe,CAAC,EAAE,mBAAmB,EAAE,SAAS,EAAkB;IACzE,MAAM,CAAC,SAAS,CAAC,GAAG,YAAY,EAAE,CAAC;IACnC,MAAM,gBAAgB,GAAG,mBAAmB,EAAE,CAAC;IAC/C,MAAM,UAAU,GAAG,gBAAgB,EAAE,QAAQ,EAAE,CAAC;IAChD,MAAM,cAAc,GAAG,gBAAgB,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC;IACtE,MAAM,UAAU,GAAG,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAChD,MAAM,cAAc,GAAG,SAAS,EAAE,CAAC,QAAQ,CAAC;IAE5C,kEAAkE;IAClE,MAAM,iBAAiB,GAAG,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAEpF,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QAED,6DAA6D;QAC7D,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC;IACnE,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,YAAY,IACX,OAAO,EAAC,QAAQ,EAChB,IAAI,sBACQ,iBAAiB,KACzB,CAAC,CAAC,iBAAiB,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAC5C,KAAK,EAAE,UAAU,gBACL,cAAc,CAAC,CAAC,CAAC,GAAG,UAAU,MAAM,cAAc,EAAE,CAAC,CAAC,CAAC,UAAU,EAC7E,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,YAErD,KAAC,IAAI,IAAC,IAAI,EAAC,OAAO,GAAG,GACR,CAChB,CAAC;AACJ,CAAC;AAED,eAAe,eAAe,CAAC","sourcesContent":["import styled, { css } from 'styled-components';\n\nimport { Button, Icon } from '@pega/cosmos-react-core';\nimport type { RsCoreTypes } from 'pega-repeating-structures-core';\n\nimport useTranslate from '../../../Hooks/useTranslate';\n\ninterface RowDeleteProps {\n getExecutionContext: RsCoreTypes.ColumnContext['getExecutionContext'];\n getRsMeta: () => ReturnType<RsCoreTypes.ColumnContext['getRsMeta']> & {\n deleting: RsCoreTypes.ActionConfig;\n };\n}\n\ninterface StyledButtonProps {\n $isVisible: boolean;\n}\n\nconst StyledButton = styled(Button)<StyledButtonProps>(\n ({ $isVisible }) => css`\n visibility: ${$isVisible ? 'visible' : 'hidden'};\n `\n);\n\nfunction RowDeleteAction({ getExecutionContext, getRsMeta }: RowDeleteProps) {\n const [translate] = useTranslate();\n const executionContext = getExecutionContext();\n const rowContext = executionContext?.getValue();\n const rowHeaderValue = executionContext?.getRowHeader?.()?.getValue();\n const deleteText = translate('Delete this row');\n const deletingConfig = getRsMeta().deleting;\n\n // RowDelete renderer only mounts for delete-column configuration.\n const isVisibleFromMeta = rowContext ? deletingConfig.isVisible(rowContext) : false;\n\n const handleDelete = () => {\n if (!rowContext) {\n return;\n }\n\n // RowDelete uses action-config callback for delete behavior.\n deletingConfig.onClick(rowContext, executionContext?.refreshRow);\n };\n\n return (\n <StyledButton\n variant='simple'\n icon\n $isVisible={isVisibleFromMeta}\n {...(!isVisibleFromMeta && { tabIndex: -1 })}\n label={deleteText}\n aria-label={rowHeaderValue ? `${deleteText} - ${rowHeaderValue}` : deleteText}\n onClick={isVisibleFromMeta ? handleDelete : undefined}\n >\n <Icon name='trash' />\n </StyledButton>\n );\n}\n\nexport default RowDeleteAction;\n"]}
@@ -15,6 +15,7 @@ declare const _default: {
15
15
  };
16
16
  }>;
17
17
  RowError: typeof RowError;
18
+ RowDeleteAction: typeof RowDeleteAction;
18
19
  'Text-Default': typeof DefaultTextRenderer;
19
20
  comma: typeof import("./ColumnMergeTemplates/Comma").default;
20
21
  space: typeof import("./ColumnMergeTemplates/Space").default;
@@ -42,6 +43,7 @@ import Operator from './Operator';
42
43
  import RowActionMenu from './RowActionMenu';
43
44
  import RowDragDropHandle from './RowDragDropHandle';
44
45
  import RowError from './RowError';
46
+ import RowDeleteAction from './RowDeleteAction';
45
47
  import DefaultTextRenderer from './DefaultTextRenderer';
46
48
  import CustomCell from './CustomCell';
47
49
  import RichText from './RichText';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAKqB,YAAY;0BAEP,iBAAiB;8BACb,qBAAqB;qBAG9B,YAAY;gCADD,uBAAuB;uBAPhC,cAAc;qBAFhB,YAAY;uBACV,cAAc"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAKqB,YAAY;0BAEP,iBAAiB;8BACb,qBAAqB;qBAG9B,YAAY;4BACL,mBAAmB;gCAFf,uBAAuB;uBAPhC,cAAc;qBAFhB,YAAY;uBACV,cAAc"}
@@ -10,6 +10,7 @@ import RowDragDropHandle from './RowDragDropHandle';
10
10
  import RowSelectHandle from './RowSelectHandle';
11
11
  import DefaultTextRenderer from './DefaultTextRenderer';
12
12
  import RowError from './RowError';
13
+ import RowDeleteAction from './RowDeleteAction';
13
14
  export default {
14
15
  cellRenderer: Cell,
15
16
  customCellRenderer: CustomCell,
@@ -22,6 +23,7 @@ export default {
22
23
  RowDragDropHandle,
23
24
  RowSelectHandle,
24
25
  RowError,
26
+ RowDeleteAction,
25
27
  'Text-Default': DefaultTextRenderer
26
28
  };
27
29
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/index.js"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAC/C,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,eAAe;IACb,YAAY,EAAE,IAAI;IAClB,kBAAkB,EAAE,UAAU;IAC9B,QAAQ;IACR,UAAU;IACV,GAAG,IAAI;IACP,GAAG,SAAS;IACZ,QAAQ;IACR,aAAa;IACb,iBAAiB;IACjB,eAAe;IACf,QAAQ;IACR,cAAc,EAAE,mBAAmB;CACpC,CAAC","sourcesContent":["import Cell from './Cell';\nimport RichText from './RichText';\nimport CheckCross from './CheckCross';\nimport CustomCell from './CustomCell';\nimport Link from './Link';\nimport Operator from './Operator';\nimport templates from './ColumnMergeTemplates';\nimport RowActionMenu from './RowActionMenu';\nimport RowDragDropHandle from './RowDragDropHandle';\nimport RowSelectHandle from './RowSelectHandle';\nimport DefaultTextRenderer from './DefaultTextRenderer';\nimport RowError from './RowError';\n\nexport default {\n cellRenderer: Cell,\n customCellRenderer: CustomCell,\n RichText,\n CheckCross,\n ...Link,\n ...templates,\n Operator,\n RowActionMenu,\n RowDragDropHandle,\n RowSelectHandle,\n RowError,\n 'Text-Default': DefaultTextRenderer\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/index.js"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAC/C,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,eAAe;IACb,YAAY,EAAE,IAAI;IAClB,kBAAkB,EAAE,UAAU;IAC9B,QAAQ;IACR,UAAU;IACV,GAAG,IAAI;IACP,GAAG,SAAS;IACZ,QAAQ;IACR,aAAa;IACb,iBAAiB;IACjB,eAAe;IACf,QAAQ;IACR,eAAe;IACf,cAAc,EAAE,mBAAmB;CACpC,CAAC","sourcesContent":["import Cell from './Cell';\nimport RichText from './RichText';\nimport CheckCross from './CheckCross';\nimport CustomCell from './CustomCell';\nimport Link from './Link';\nimport Operator from './Operator';\nimport templates from './ColumnMergeTemplates';\nimport RowActionMenu from './RowActionMenu';\nimport RowDragDropHandle from './RowDragDropHandle';\nimport RowSelectHandle from './RowSelectHandle';\nimport DefaultTextRenderer from './DefaultTextRenderer';\nimport RowError from './RowError';\nimport RowDeleteAction from './RowDeleteAction';\n\nexport default {\n cellRenderer: Cell,\n customCellRenderer: CustomCell,\n RichText,\n CheckCross,\n ...Link,\n ...templates,\n Operator,\n RowActionMenu,\n RowDragDropHandle,\n RowSelectHandle,\n RowError,\n RowDeleteAction,\n 'Text-Default': DefaultTextRenderer\n};\n"]}
@@ -38,6 +38,7 @@ declare const _default: {
38
38
  };
39
39
  }>;
40
40
  RowError: typeof import("./CellRenderers/RowError").default;
41
+ RowDeleteAction: typeof import("./CellRenderers/RowDeleteAction").default;
41
42
  'Text-Default': typeof import("./CellRenderers/DefaultTextRenderer").default;
42
43
  comma: typeof import("./CellRenderers/ColumnMergeTemplates/Comma").default;
43
44
  space: typeof import("./CellRenderers/ColumnMergeTemplates/Space").default;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../Core/Components/DefaultComponents/index.jsx"],"names":[],"mappings":"AA4BA,uGAKC;;;;;;;;;;AAUD,mGASC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBApDqB,YAAY;iBAEjB,QAAQ;mBACN,UAAU;uBAEN,cAAc;6BAER,oBAAoB;8BACnB,aAAa;4CAEC,2BAA2B;8CACzB,6BAA6B;8BAC7C,qBAAqB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../Core/Components/DefaultComponents/index.jsx"],"names":[],"mappings":"AA4BA,uGAKC;;;;;;;;;;AAUD,mGASC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBApDqB,YAAY;iBAEjB,QAAQ;mBACN,UAAU;uBAEN,cAAc;6BAER,oBAAoB;8BACnB,aAAa;4CAEC,2BAA2B;8CACzB,6BAA6B;8BAC7C,qBAAqB"}
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnSelector.d.ts","sourceRoot":"","sources":["../../../../Core/Components/Toolbar/ColumnSelector.jsx"],"names":[],"mappings":"AAoBA;;;;;GAKG;AACH,yCAHW,MAAM,GACJ,GAAG,CAAC,OAAO,CAKvB;AAeD;;;;;GAKG;AACH,kEAHW,MAAM,SAsDhB;AA2BD,2FAwEC;;;;;;;;;AAvLD,6BAA8B,mBAAmB,CAAC;AAClD,sBAAuB,gBAAgB,CAAC;;;sBAjBlB,YAAY;AAgNlC;;;;;;4CAwBC"}
1
+ {"version":3,"file":"ColumnSelector.d.ts","sourceRoot":"","sources":["../../../../Core/Components/Toolbar/ColumnSelector.jsx"],"names":[],"mappings":"AAqBA;;;;;GAKG;AACH,yCAHW,MAAM,GACJ,GAAG,CAAC,OAAO,CAKvB;AAeD;;;;;GAKG;AACH,kEAHW,MAAM,SAsDhB;AA2BD,2FA0EC;;;;;;;;;AAzLD,6BAA8B,mBAAmB,CAAC;AAClD,sBAAuB,gBAAgB,CAAC;;;sBAlBlB,YAAY;AAmNlC;;;;;;4CAwBC"}
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { memo, useCallback, useEffect, useState, useMemo } from 'react';
3
3
  import PropTypes from 'prop-types';
4
4
  import styled from 'styled-components';
5
- import { Icon, SearchInput, Menu, menuHelpers, useElement, Flex, Button } from '@pega/cosmos-react-core';
5
+ import { Icon, SearchInput, Menu, menuHelpers, useElement, Flex, Button, useI18n } from '@pega/cosmos-react-core';
6
6
  import { getFieldIcon } from '../../Utils';
7
7
  import useTranslate from '../../Hooks/useTranslate';
8
8
  export const colsVisibility = 'Show/hide columns';
@@ -100,6 +100,7 @@ const StyledMenu = styled(Menu) `
100
100
  `;
101
101
  export function ColumnSelectorControl(props) {
102
102
  const { data, onSubmit, onCancel, action } = props;
103
+ const t = useI18n();
103
104
  const initialSelectedColumns = useMemo(() => new Set(menuHelpers
104
105
  .flatten(data)
105
106
  .filter(item => item.selected)
@@ -129,7 +130,7 @@ export function ColumnSelectorControl(props) {
129
130
  }, [searchText, items]);
130
131
  const modifiedColumns = useMemo(() => getModifiedColumns(initialSelectedColumns, selectedColumns), [initialSelectedColumns, selectedColumns, action]);
131
132
  const isSubmitEnabled = !(action === colsVisibility && selectedColumns.size === 0) && modifiedColumns.length > 0;
132
- return (_jsx(StyledMenu, { items: itemsToRender, mode: 'multi-select', onItemClick: (id, args) => {
133
+ return (_jsx(StyledMenu, { "aria-label": t('columns'), items: itemsToRender, mode: 'multi-select', onItemClick: (id, args) => {
133
134
  setItems(cur => menuHelpers.toggleSelected(cur, id, args.mode));
134
135
  }, role: 'listbox', focusControlEl: searchRef || undefined, header: _jsx(SearchInput, { value: searchText, onSearchChange: setSearchText, ref: setSearchRef }), footer: _jsx(Footer, { onCancel: onCancel, onSubmit: () => onSubmit(modifiedColumns), disabled: !isSubmitEnabled }) }));
135
136
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnSelector.js","sourceRoot":"","sources":["../../../../Core/Components/Toolbar/ColumnSelector.jsx"],"names":[],"mappings":"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","sourcesContent":["import { memo, useCallback, useEffect, useState, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport {\n Icon,\n SearchInput,\n Menu,\n menuHelpers,\n useElement,\n Flex,\n Button\n} from '@pega/cosmos-react-core';\n\nimport { getFieldIcon } from '../../Utils';\nimport useTranslate from '../../Hooks/useTranslate';\n\nexport const colsVisibility = 'Show/hide columns';\nexport const pinning = 'Freeze columns';\n\n/**\n * Returns an Icon component based on the field type.\n *\n * @param {string} type - The type of the field for which the icon is required.\n * @returns {JSX.Element} - A React Icon component with the appropriate icon name.\n */\nexport function getIconByFieldType(type) {\n const iconName = getFieldIcon(type);\n return <Icon data-test-id={iconName} data-testid={iconName} name={iconName} />;\n}\n\n/**\n * Determines the list of changed column IDs.\n *\n * @param {Set<string>} initialSelectedColumns - The initial set of selected column IDs.\n * @param {Set<string>} currentSelectedColumns - The current set of selected column IDs.\n * @returns {string[]} - Array of modified column IDs.\n */\nfunction getModifiedColumns(initialSelectedColumns, currentSelectedColumns) {\n const addedColumns = [...currentSelectedColumns].filter(id => !initialSelectedColumns.has(id));\n const removedColumns = [...initialSelectedColumns].filter(id => !currentSelectedColumns.has(id));\n return [...addedColumns, ...removedColumns];\n}\n\n/**\n * Transforms the columns array into array of columns grouped by category\n * @param {Array} columns - The array of column objects to be transformed.\n * @param {string} action - The action to perform, either 'Show/hide columns' or 'Freeze columns'.\n * @returns Arrays of columns nested by category\n */\nexport function transformData(fieldDefs, state, action) {\n const result = [];\n if (!fieldDefs?.length) return result;\n\n const categoryObj = {};\n\n fieldDefs\n ?.filter(c => c.toggle)\n .forEach(field => {\n const { id, category = [], type, label } = field;\n const visible = state.visibleColumns?.includes(id);\n const frozen = state.freezeColumns?.includes(id);\n const lastCategoryLabel = category.length ? category[category.length - 1].label : undefined;\n if (categoryObj[lastCategoryLabel])\n categoryObj[lastCategoryLabel].items.push({\n id,\n primary: label,\n label,\n selected: action === colsVisibility ? visible : frozen,\n type,\n visual: getIconByFieldType(type)\n });\n else {\n categoryObj[lastCategoryLabel] = {\n id: `category:${lastCategoryLabel}`,\n primary: lastCategoryLabel,\n items: [\n {\n id,\n primary: label,\n selected: action === colsVisibility ? visible : frozen,\n label,\n type,\n visual: getIconByFieldType(type)\n }\n ]\n };\n }\n });\n // Items with no category attribute are set in the root of returned array\n if (categoryObj[undefined] && categoryObj[undefined].items) {\n result.push(...categoryObj[undefined].items);\n delete categoryObj[undefined];\n }\n const keys = Object.keys(categoryObj);\n // Items with category attribute are grouped inside the nested category object\n keys.forEach(key => {\n result.push(categoryObj[key]);\n });\n\n return result;\n}\n\nconst Footer = memo(({ onCancel, onSubmit, disabled }) => {\n const [translate] = useTranslate();\n return (\n <Flex container={{ justify: 'between' }}>\n <Button onClick={onCancel} data-testid='cancel'>\n {translate('Cancel')}\n </Button>\n <Button variant='primary' onClick={onSubmit} disabled={disabled} data-testid='submit'>\n {translate('Submit')}\n </Button>\n </Flex>\n );\n});\n\nFooter.displayName = 'Footer';\n\nFooter.propTypes = {\n onCancel: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n disabled: PropTypes.bool.isRequired\n};\n\nconst StyledMenu = styled(Menu)`\n width: 16rem;\n`;\nexport function ColumnSelectorControl(props) {\n const { data, onSubmit, onCancel, action } = props;\n\n const initialSelectedColumns = useMemo(\n () =>\n new Set(\n menuHelpers\n .flatten(data)\n .filter(item => item.selected)\n .map(item => item.id)\n ),\n [data]\n );\n\n const [searchText, setSearchText] = useState('');\n const [searchRef, setSearchRef] = useElement(null);\n const [items, setItems] = useState(data);\n const selectedColumns = useMemo(\n () => new Set(menuHelpers.getSelected(items).map(item => item.id)),\n [items]\n );\n\n useEffect(() => {\n if (searchRef) {\n searchRef.focus();\n }\n }, [searchRef]);\n\n const itemsToRender = useMemo(() => {\n return menuHelpers.mapTree(\n searchText\n ? menuHelpers\n .flatten(items)\n .filter(({ primary }) => primary.toLowerCase().includes(searchText.toLowerCase()))\n : items,\n item => {\n return {\n ...item,\n visual: item.visual,\n selected: item.items ? undefined : item.selected,\n disabled: item.selected && action === colsVisibility && selectedColumns.size <= 1\n };\n }\n );\n }, [searchText, items]);\n\n const modifiedColumns = useMemo(\n () => getModifiedColumns(initialSelectedColumns, selectedColumns),\n [initialSelectedColumns, selectedColumns, action]\n );\n\n const isSubmitEnabled =\n !(action === colsVisibility && selectedColumns.size === 0) && modifiedColumns.length > 0;\n return (\n <StyledMenu\n items={itemsToRender}\n mode='multi-select'\n onItemClick={(id, args) => {\n setItems(cur => menuHelpers.toggleSelected(cur, id, args.mode));\n }}\n role='listbox'\n focusControlEl={searchRef || undefined}\n header={<SearchInput value={searchText} onSearchChange={setSearchText} ref={setSearchRef} />}\n footer={\n <Footer\n onCancel={onCancel}\n onSubmit={() => onSubmit(modifiedColumns)}\n disabled={!isSubmitEnabled}\n />\n }\n />\n );\n}\n\nColumnSelectorControl.propTypes = {\n data: PropTypes.arrayOf(PropTypes.object).isRequired,\n onSubmit: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n action: PropTypes.string.isRequired\n};\n\nfunction ColumnSelector({ dispatch, fieldDefs, state, action, finishPopOver }) {\n const transformed = useMemo(\n () => transformData(fieldDefs, state, action),\n [fieldDefs, state, action]\n );\n\n const onSubmitHandler = useCallback(\n changedCols => {\n if (changedCols.length > 0) {\n dispatch(changedCols);\n }\n finishPopOver();\n },\n [dispatch]\n );\n\n return (\n <ColumnSelectorControl\n data={transformed}\n onSubmit={onSubmitHandler}\n onCancel={finishPopOver}\n action={action}\n />\n );\n}\n\nColumnSelector.propTypes = {\n dispatch: PropTypes.func.isRequired,\n fieldDefs: PropTypes.arrayOf(PropTypes.object).isRequired,\n state: PropTypes.arrayOf(PropTypes.object).isRequired,\n action: PropTypes.string.isRequired,\n finishPopOver: PropTypes.func.isRequired\n};\n\nexport default memo(ColumnSelector);\n"]}
1
+ {"version":3,"file":"ColumnSelector.js","sourceRoot":"","sources":["../../../../Core/Components/Toolbar/ColumnSelector.jsx"],"names":[],"mappings":"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","sourcesContent":["import { memo, useCallback, useEffect, useState, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport {\n Icon,\n SearchInput,\n Menu,\n menuHelpers,\n useElement,\n Flex,\n Button,\n useI18n\n} from '@pega/cosmos-react-core';\n\nimport { getFieldIcon } from '../../Utils';\nimport useTranslate from '../../Hooks/useTranslate';\n\nexport const colsVisibility = 'Show/hide columns';\nexport const pinning = 'Freeze columns';\n\n/**\n * Returns an Icon component based on the field type.\n *\n * @param {string} type - The type of the field for which the icon is required.\n * @returns {JSX.Element} - A React Icon component with the appropriate icon name.\n */\nexport function getIconByFieldType(type) {\n const iconName = getFieldIcon(type);\n return <Icon data-test-id={iconName} data-testid={iconName} name={iconName} />;\n}\n\n/**\n * Determines the list of changed column IDs.\n *\n * @param {Set<string>} initialSelectedColumns - The initial set of selected column IDs.\n * @param {Set<string>} currentSelectedColumns - The current set of selected column IDs.\n * @returns {string[]} - Array of modified column IDs.\n */\nfunction getModifiedColumns(initialSelectedColumns, currentSelectedColumns) {\n const addedColumns = [...currentSelectedColumns].filter(id => !initialSelectedColumns.has(id));\n const removedColumns = [...initialSelectedColumns].filter(id => !currentSelectedColumns.has(id));\n return [...addedColumns, ...removedColumns];\n}\n\n/**\n * Transforms the columns array into array of columns grouped by category\n * @param {Array} columns - The array of column objects to be transformed.\n * @param {string} action - The action to perform, either 'Show/hide columns' or 'Freeze columns'.\n * @returns Arrays of columns nested by category\n */\nexport function transformData(fieldDefs, state, action) {\n const result = [];\n if (!fieldDefs?.length) return result;\n\n const categoryObj = {};\n\n fieldDefs\n ?.filter(c => c.toggle)\n .forEach(field => {\n const { id, category = [], type, label } = field;\n const visible = state.visibleColumns?.includes(id);\n const frozen = state.freezeColumns?.includes(id);\n const lastCategoryLabel = category.length ? category[category.length - 1].label : undefined;\n if (categoryObj[lastCategoryLabel])\n categoryObj[lastCategoryLabel].items.push({\n id,\n primary: label,\n label,\n selected: action === colsVisibility ? visible : frozen,\n type,\n visual: getIconByFieldType(type)\n });\n else {\n categoryObj[lastCategoryLabel] = {\n id: `category:${lastCategoryLabel}`,\n primary: lastCategoryLabel,\n items: [\n {\n id,\n primary: label,\n selected: action === colsVisibility ? visible : frozen,\n label,\n type,\n visual: getIconByFieldType(type)\n }\n ]\n };\n }\n });\n // Items with no category attribute are set in the root of returned array\n if (categoryObj[undefined] && categoryObj[undefined].items) {\n result.push(...categoryObj[undefined].items);\n delete categoryObj[undefined];\n }\n const keys = Object.keys(categoryObj);\n // Items with category attribute are grouped inside the nested category object\n keys.forEach(key => {\n result.push(categoryObj[key]);\n });\n\n return result;\n}\n\nconst Footer = memo(({ onCancel, onSubmit, disabled }) => {\n const [translate] = useTranslate();\n return (\n <Flex container={{ justify: 'between' }}>\n <Button onClick={onCancel} data-testid='cancel'>\n {translate('Cancel')}\n </Button>\n <Button variant='primary' onClick={onSubmit} disabled={disabled} data-testid='submit'>\n {translate('Submit')}\n </Button>\n </Flex>\n );\n});\n\nFooter.displayName = 'Footer';\n\nFooter.propTypes = {\n onCancel: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n disabled: PropTypes.bool.isRequired\n};\n\nconst StyledMenu = styled(Menu)`\n width: 16rem;\n`;\nexport function ColumnSelectorControl(props) {\n const { data, onSubmit, onCancel, action } = props;\n const t = useI18n();\n\n const initialSelectedColumns = useMemo(\n () =>\n new Set(\n menuHelpers\n .flatten(data)\n .filter(item => item.selected)\n .map(item => item.id)\n ),\n [data]\n );\n\n const [searchText, setSearchText] = useState('');\n const [searchRef, setSearchRef] = useElement(null);\n const [items, setItems] = useState(data);\n const selectedColumns = useMemo(\n () => new Set(menuHelpers.getSelected(items).map(item => item.id)),\n [items]\n );\n\n useEffect(() => {\n if (searchRef) {\n searchRef.focus();\n }\n }, [searchRef]);\n\n const itemsToRender = useMemo(() => {\n return menuHelpers.mapTree(\n searchText\n ? menuHelpers\n .flatten(items)\n .filter(({ primary }) => primary.toLowerCase().includes(searchText.toLowerCase()))\n : items,\n item => {\n return {\n ...item,\n visual: item.visual,\n selected: item.items ? undefined : item.selected,\n disabled: item.selected && action === colsVisibility && selectedColumns.size <= 1\n };\n }\n );\n }, [searchText, items]);\n\n const modifiedColumns = useMemo(\n () => getModifiedColumns(initialSelectedColumns, selectedColumns),\n [initialSelectedColumns, selectedColumns, action]\n );\n\n const isSubmitEnabled =\n !(action === colsVisibility && selectedColumns.size === 0) && modifiedColumns.length > 0;\n return (\n <StyledMenu\n aria-label={t('columns')}\n items={itemsToRender}\n mode='multi-select'\n onItemClick={(id, args) => {\n setItems(cur => menuHelpers.toggleSelected(cur, id, args.mode));\n }}\n role='listbox'\n focusControlEl={searchRef || undefined}\n header={<SearchInput value={searchText} onSearchChange={setSearchText} ref={setSearchRef} />}\n footer={\n <Footer\n onCancel={onCancel}\n onSubmit={() => onSubmit(modifiedColumns)}\n disabled={!isSubmitEnabled}\n />\n }\n />\n );\n}\n\nColumnSelectorControl.propTypes = {\n data: PropTypes.arrayOf(PropTypes.object).isRequired,\n onSubmit: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n action: PropTypes.string.isRequired\n};\n\nfunction ColumnSelector({ dispatch, fieldDefs, state, action, finishPopOver }) {\n const transformed = useMemo(\n () => transformData(fieldDefs, state, action),\n [fieldDefs, state, action]\n );\n\n const onSubmitHandler = useCallback(\n changedCols => {\n if (changedCols.length > 0) {\n dispatch(changedCols);\n }\n finishPopOver();\n },\n [dispatch]\n );\n\n return (\n <ColumnSelectorControl\n data={transformed}\n onSubmit={onSubmitHandler}\n onCancel={finishPopOver}\n action={action}\n />\n );\n}\n\nColumnSelector.propTypes = {\n dispatch: PropTypes.func.isRequired,\n fieldDefs: PropTypes.arrayOf(PropTypes.object).isRequired,\n state: PropTypes.arrayOf(PropTypes.object).isRequired,\n action: PropTypes.string.isRequired,\n finishPopOver: PropTypes.func.isRequired\n};\n\nexport default memo(ColumnSelector);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"useMore.d.ts","sourceRoot":"","sources":["../../../../../Core/Components/Toolbar/hooks/useMore.jsx"],"names":[],"mappings":";AAiCA;;;;;;EA4bC"}
1
+ {"version":3,"file":"useMore.d.ts","sourceRoot":"","sources":["../../../../../Core/Components/Toolbar/hooks/useMore.jsx"],"names":[],"mappings":";AA4DA;;;;;;EA8bC"}
@@ -27,13 +27,30 @@ const Refresh = 'Refresh';
27
27
  const GalleryLayoutToggle = 'Gallery layout';
28
28
  const SwitchToTable = 'Display as Table';
29
29
  const SwitchToGallery = 'Display as Gallery';
30
+ const shouldShowTemplateSwitch = ({ allowSwitchTemplate, authoredTemplate, currentTemplate, isSmallScreen }) => {
31
+ if (!allowSwitchTemplate) {
32
+ return false;
33
+ }
34
+ // This switch behavior is only supported for views authored as Table.
35
+ if (authoredTemplate !== REPEATING_STRUCTURE_TEMPLATES.TABLE) {
36
+ return false;
37
+ }
38
+ if (currentTemplate !== REPEATING_STRUCTURE_TEMPLATES.TABLE &&
39
+ currentTemplate !== REPEATING_STRUCTURE_TEMPLATES.GALLERY) {
40
+ return false;
41
+ }
42
+ // Small screens can always switch between table/gallery.
43
+ // Large screens only show the action when currently on gallery (to allow switch back to table).
44
+ return isSmallScreen || currentTemplate === REPEATING_STRUCTURE_TEMPLATES.GALLERY;
45
+ };
30
46
  const useMore = ({ view }) => {
31
- const { meta: { displayDensity, toggleFieldVisibility, freezeFields, personalization, headerBar, enableAppDefault, enableFreezeColumns, autoSizeColumns, showQueryInfo, resetColumnWidths, rowDensity, showHeaderIcons: isHeaderIcons, showImportDataOption, showExportToExcelOption, showExportToCSVOption, allowRefresh }, template, state: { showHeaderIcons, personalization: personalizationState, responsive: { sm: isSmallOrAbove } = {} } = {}, type: { applyToggleVisibility, applyFreeze, applyGalleryLayout }, toolBarOptions = [], defaultPresetId, renderFactory, getContext, galleryLayout } = view;
32
- const canSwitchTableGallery = view.meta.allowSwitchTemplate &&
33
- !isSmallOrAbove &&
34
- view.meta.template === REPEATING_STRUCTURE_TEMPLATES.TABLE &&
35
- (template === REPEATING_STRUCTURE_TEMPLATES.TABLE ||
36
- template === REPEATING_STRUCTURE_TEMPLATES.GALLERY);
47
+ const { meta: { allowSwitchTemplate, template: authoredTemplate, displayDensity, toggleFieldVisibility, freezeFields, personalization, headerBar, enableAppDefault, enableFreezeColumns, autoSizeColumns, showQueryInfo, resetColumnWidths, rowDensity, showHeaderIcons: isHeaderIcons, showImportDataOption, showExportToExcelOption, showExportToCSVOption, allowRefresh }, template, state: { showHeaderIcons, personalization: personalizationState, responsive: { sm: isSmallOrAbove } = {} } = {}, type: { applyToggleVisibility, applyFreeze, applyGalleryLayout }, toolBarOptions = [], defaultPresetId, renderFactory, getContext, galleryLayout } = view;
48
+ const shouldShowTemplateSwitchOption = shouldShowTemplateSwitch({
49
+ allowSwitchTemplate,
50
+ authoredTemplate,
51
+ currentTemplate: template,
52
+ isSmallScreen: !isSmallOrAbove
53
+ });
37
54
  const [popperRef, setPopperRef] = useElement();
38
55
  const actionsButtonRef = useRef(null);
39
56
  const [translate] = useTranslate();
@@ -65,7 +82,7 @@ const useMore = ({ view }) => {
65
82
  text: template === REPEATING_STRUCTURE_TEMPLATES.TABLE
66
83
  ? translate(SwitchToGallery)
67
84
  : translate(SwitchToTable),
68
- show: canSwitchTableGallery,
85
+ show: shouldShowTemplateSwitchOption,
69
86
  onClick: () => {
70
87
  view.type.changeTemplate(template === REPEATING_STRUCTURE_TEMPLATES.TABLE
71
88
  ? REPEATING_STRUCTURE_TEMPLATES.GALLERY
@@ -120,7 +137,7 @@ const useMore = ({ view }) => {
120
137
  id: GalleryLayoutToggle,
121
138
  icon: (galleryLayout ?? 'cardgrid') === 'cardlist' ? 'grid' : 'row',
122
139
  text: translate((galleryLayout ?? 'cardgrid') === 'cardlist' ? 'Card grid layout' : 'Card list layout'),
123
- show: showFeatureForTemplate(template, 'galleryLayout'),
140
+ show: showFeatureForTemplate(template, 'galleryLayout') && isSmallOrAbove,
124
141
  onClick: () => {
125
142
  const currentGalleryLayout = galleryLayout ?? 'cardgrid';
126
143
  applyGalleryLayout?.(currentGalleryLayout === 'cardlist' ? 'cardgrid' : 'cardlist');
@@ -255,7 +272,7 @@ const useMore = ({ view }) => {
255
272
  ], [
256
273
  translate,
257
274
  template,
258
- canSwitchTableGallery,
275
+ shouldShowTemplateSwitchOption,
259
276
  toggleFieldVisibility,
260
277
  displayDensity.length,
261
278
  rowDensity,
@@ -1 +1 @@
1
- {"version":3,"file":"useMore.js","sourceRoot":"","sources":["../../../../../Core/Components/Toolbar/hooks/useMore.jsx"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { Popover, useElement, useModalManager } from '@pega/cosmos-react-core';\nimport { REPEATING_STRUCTURE_TEMPLATES } from 'pega-repeating-structures-core';\n\nimport useTranslate from '../../../Hooks/useTranslate';\nimport PersonalizationDeleteConfirmation from '../../DefaultComponents/PersonalizationDeleteConfirmation';\nimport ColumnSelector, { colsVisibility, pinning } from '../ColumnSelector';\nimport DebugInfo from '../DebugInfo';\nimport { useKeyboardA11y } from '../../../Hooks/a11y';\nimport { resolveViewComponent } from '../../RenderingEngine/ComponentResolverFactory';\nimport showFeatureForTemplate from '../../../templateFeatureSupport';\n\nconst RowDensity = 'Row density';\n\nconst SaveViewChanges = 'Save changes';\nconst ViewAs = 'View as...';\nconst EditCustomizedView = 'Edit customized view';\nconst SetAsDefault = 'Set as default';\nconst MarkAsAppDefault = 'Mark as app default';\nconst DeleteCustomizedView = 'Delete customized view';\nconst ResetColumnWidths = 'Reset column widths';\nconst AutoSizeColumns = 'Auto size columns';\nconst ShowHeaderIcons = 'ShowHeaderIcons';\nconst Info = 'Query info';\nconst ImportCSVData = 'Import CSV data';\nconst ExportToExcel = 'Export to Excel';\nconst ExportToCSV = 'Export to CSV';\nconst Refresh = 'Refresh';\nconst GalleryLayoutToggle = 'Gallery layout';\nconst SwitchToTable = 'Display as Table';\nconst SwitchToGallery = 'Display as Gallery';\n\nconst useMore = ({ view }) => {\n const {\n meta: {\n displayDensity,\n toggleFieldVisibility,\n freezeFields,\n personalization,\n headerBar,\n enableAppDefault,\n enableFreezeColumns,\n autoSizeColumns,\n showQueryInfo,\n resetColumnWidths,\n rowDensity,\n showHeaderIcons: isHeaderIcons,\n showImportDataOption,\n showExportToExcelOption,\n showExportToCSVOption,\n allowRefresh\n },\n template,\n state: {\n showHeaderIcons,\n personalization: personalizationState,\n responsive: { sm: isSmallOrAbove } = {}\n } = {},\n type: { applyToggleVisibility, applyFreeze, applyGalleryLayout },\n toolBarOptions = [],\n defaultPresetId,\n renderFactory,\n getContext,\n galleryLayout\n } = view;\n\n const canSwitchTableGallery =\n view.meta.allowSwitchTemplate &&\n !isSmallOrAbove &&\n view.meta.template === REPEATING_STRUCTURE_TEMPLATES.TABLE &&\n (template === REPEATING_STRUCTURE_TEMPLATES.TABLE ||\n template === REPEATING_STRUCTURE_TEMPLATES.GALLERY);\n\n const [popperRef, setPopperRef] = useElement();\n\n const actionsButtonRef = useRef(null);\n const [translate] = useTranslate();\n const { create } = useModalManager();\n const [moreContent, setMoreContent] = useState('default');\n const currentActiveView = personalizationState?.active;\n const currentDefaultView = personalizationState?.defaultPersonalization;\n const isAppDefaultView = currentActiveView === 'APP_DEFAULT';\n const isViewDirty = personalizationState?.dirty;\n const currentActiveViewName =\n personalizationState?.allPersonalizations?.[currentActiveView]?.name;\n const isPreset = !!personalizationState?.allPersonalizations?.[currentActiveView]?.isPreset;\n\n const onDeletePersonalization = useCallback(() => {\n create(\n PersonalizationDeleteConfirmation,\n {\n onSubmit: () => {\n view.type.deletePersonalization(currentActiveView);\n },\n currentActiveViewName,\n translate\n },\n {\n alert: true\n }\n );\n }, [create, currentActiveViewName, view.type, currentActiveView]);\n\n const [forceShowMenu, setForceShowMenu] = useState(false);\n\n const actions = useMemo(\n () => [\n [\n {\n id: 'switch-template',\n icon: template === REPEATING_STRUCTURE_TEMPLATES.TABLE ? 'grid' : 'table',\n text:\n template === REPEATING_STRUCTURE_TEMPLATES.TABLE\n ? translate(SwitchToGallery)\n : translate(SwitchToTable),\n show: canSwitchTableGallery,\n onClick: () => {\n view.type.changeTemplate(\n template === REPEATING_STRUCTURE_TEMPLATES.TABLE\n ? REPEATING_STRUCTURE_TEMPLATES.GALLERY\n : REPEATING_STRUCTURE_TEMPLATES.TABLE\n );\n }\n },\n {\n id: colsVisibility,\n icon: 'eye-off',\n text: translate(colsVisibility),\n show: showFeatureForTemplate(template, 'showHideColumns') && !!toggleFieldVisibility,\n onClick: () => {\n setMoreContent(colsVisibility);\n setForceShowMenu(true);\n }\n },\n {\n id: RowDensity,\n icon: 'row-insert',\n text: translate(RowDensity),\n show:\n showFeatureForTemplate(template, 'rowDensity') &&\n displayDensity.length > 0 &&\n rowDensity,\n onClick: () => {\n setMoreContent(RowDensity);\n setForceShowMenu(true);\n }\n },\n {\n id: pinning,\n icon: 'freeze-column',\n text: translate(pinning),\n show:\n showFeatureForTemplate(template, 'freezeColumns') &&\n !!freezeFields &&\n !!enableFreezeColumns &&\n isSmallOrAbove,\n onClick: () => {\n setMoreContent(pinning);\n setForceShowMenu(true);\n }\n },\n {\n id: ShowHeaderIcons,\n icon: 'picture',\n text: showHeaderIcons ? translate('Hide header icons') : translate('Show header icons'),\n show: showFeatureForTemplate(template, 'showHeaderIcons') && isHeaderIcons,\n onClick: () => {\n view.type.updateHeaderIconsVisibility(!showHeaderIcons);\n }\n },\n {\n id: GalleryLayoutToggle,\n icon: (galleryLayout ?? 'cardgrid') === 'cardlist' ? 'grid' : 'row',\n text: translate(\n (galleryLayout ?? 'cardgrid') === 'cardlist' ? 'Card grid layout' : 'Card list layout'\n ),\n show: showFeatureForTemplate(template, 'galleryLayout'),\n onClick: () => {\n const currentGalleryLayout = galleryLayout ?? 'cardgrid';\n\n applyGalleryLayout?.(currentGalleryLayout === 'cardlist' ? 'cardgrid' : 'cardlist');\n }\n },\n {\n id: AutoSizeColumns,\n icon: 'scale-up',\n text: translate(AutoSizeColumns),\n show: showFeatureForTemplate(template, 'autoSizeColumns') && autoSizeColumns,\n onClick: () => {\n view.applyColumnsAutoSize(false);\n }\n },\n {\n id: ResetColumnWidths,\n icon: 'scale-down',\n text: translate(ResetColumnWidths),\n show: showFeatureForTemplate(template, 'resetColumnWidths') && resetColumnWidths,\n onClick: () => {\n view.applyColumnsAutoSize(true);\n }\n },\n {\n id: Info,\n icon: 'information',\n text: translate(Info),\n show: showFeatureForTemplate(template, 'info') && showQueryInfo,\n onClick: () => {\n setMoreContent(Info);\n setForceShowMenu(true);\n }\n }\n ],\n [\n {\n id: ViewAs,\n icon: 'columns',\n text: translate(ViewAs),\n show: Boolean(personalization && !headerBar),\n onClick: () => {\n setMoreContent(ViewAs);\n setForceShowMenu(true);\n }\n },\n {\n id: SaveViewChanges,\n icon: 'clipboard-plus',\n text: translate(SaveViewChanges),\n show:\n showFeatureForTemplate(template, 'personalization') &&\n Boolean(\n personalization &&\n currentActiveView !== defaultPresetId &&\n (!isPreset || (isAppDefaultView && enableAppDefault)) &&\n isViewDirty\n ),\n onClick: () => {\n view.type.updatePersonalization(\n currentActiveView,\n currentDefaultView === currentActiveView,\n isAppDefaultView\n );\n }\n },\n {\n id: EditCustomizedView,\n icon: 'pencil',\n text: translate(EditCustomizedView),\n show:\n showFeatureForTemplate(template, 'personalization') &&\n Boolean(\n personalization &&\n (!isPreset || (isAppDefaultView && enableAppDefault)) &&\n currentActiveView !== defaultPresetId\n ),\n onClick: () => {\n setMoreContent(EditCustomizedView);\n setForceShowMenu(true);\n }\n },\n {\n id: DeleteCustomizedView,\n icon: 'trash',\n text: translate(DeleteCustomizedView),\n show:\n showFeatureForTemplate(template, 'personalization') &&\n Boolean(\n personalization &&\n !isPreset &&\n currentActiveView !== defaultPresetId &&\n !isAppDefaultView\n ),\n onClick: onDeletePersonalization\n },\n {\n id: SetAsDefault,\n icon: 'clipboard-check',\n text: translate(SetAsDefault),\n show:\n showFeatureForTemplate(template, 'personalization') &&\n Boolean(\n personalization && currentDefaultView !== currentActiveView && !isAppDefaultView\n ),\n onClick: () => view.type.setDefaultPersonalization(currentActiveView)\n },\n {\n id: MarkAsAppDefault,\n icon: 'clipboard-check',\n text: translate(MarkAsAppDefault),\n show: Boolean(isPreset && enableAppDefault && personalization && !isAppDefaultView),\n onClick: () =>\n view.type.setAppDefaultPersonalization('APP_DEFAULT', currentActiveViewName)\n },\n {\n id: ImportCSVData,\n icon: 'document-xls',\n text: translate(ImportCSVData),\n show: Boolean(showImportDataOption),\n onClick: () => view.type.importCSVData(create)\n },\n {\n id: ExportToExcel,\n testId: 'export-to-excel',\n icon: 'document-xls',\n text: translate(ExportToExcel),\n show: Boolean(showExportToExcelOption),\n onClick: () => view.type.exportToExcel()\n },\n {\n id: ExportToCSV,\n icon: 'document-xls',\n text: translate(ExportToCSV),\n show: Boolean(showExportToCSVOption),\n onClick: () => view.type.exportToCSV()\n },\n {\n id: Refresh,\n testId: 'refresh',\n icon: 'reset',\n text: translate(Refresh),\n show: showFeatureForTemplate(template, 'refresh') && Boolean(allowRefresh),\n onClick: () => {\n view.type.forceRefresh();\n }\n }\n ],\n ...toolBarOptions\n ],\n [\n translate,\n template,\n canSwitchTableGallery,\n toggleFieldVisibility,\n displayDensity.length,\n rowDensity,\n freezeFields,\n enableFreezeColumns,\n showHeaderIcons,\n isHeaderIcons,\n autoSizeColumns,\n showQueryInfo,\n resetColumnWidths,\n personalization,\n headerBar,\n currentActiveView,\n defaultPresetId,\n isPreset,\n isViewDirty,\n isAppDefaultView,\n showExportToExcelOption,\n showExportToCSVOption,\n onDeletePersonalization,\n currentDefaultView,\n toolBarOptions,\n currentActiveViewName,\n view,\n enableAppDefault,\n isSmallOrAbove,\n galleryLayout,\n applyGalleryLayout\n ]\n );\n\n const filteredActions = useMemo(\n () =>\n actions\n .flat()\n .map(action => ({\n ...action,\n id: action.id.replaceAll(' ', '-')\n }))\n .filter(({ show = true }) => show),\n [actions]\n );\n\n const finishPopOver = () => {\n if (forceShowMenu) {\n setForceShowMenu(false);\n }\n };\n\n // setting focus on action button in different rendering cycle otherwise it will get lost due to re-render of toolbar\n useEffect(() => {\n if (!forceShowMenu && popperRef) {\n actionsButtonRef.current?.focus();\n }\n }, [forceShowMenu]);\n\n useKeyboardA11y({\n container: popperRef && forceShowMenu ? popperRef : null,\n onClose: popperRef && forceShowMenu ? finishPopOver : () => {}\n });\n\n let component;\n\n if (forceShowMenu) {\n switch (moreContent) {\n case colsVisibility:\n component = (\n <ColumnSelector\n dispatch={applyToggleVisibility}\n fieldDefs={view.getFieldDefs()}\n state={view.state}\n action={moreContent}\n finishPopOver={finishPopOver}\n />\n );\n break;\n\n case pinning:\n component = (\n <ColumnSelector\n dispatch={applyFreeze}\n fieldDefs={view.getFieldDefs()}\n state={view.state}\n action={moreContent}\n finishPopOver={finishPopOver}\n />\n );\n break;\n\n case RowDensity:\n component = resolveViewComponent('rowHeightRenderer', renderFactory, {\n ...getContext(),\n view,\n onClose: finishPopOver\n });\n break;\n\n case ViewAs:\n component = resolveViewComponent(\n 'personalizationSelectorRenderer',\n renderFactory,\n getContext()\n );\n break;\n\n case EditCustomizedView:\n component = actionsButtonRef.current\n ? resolveViewComponent('personalizationCreateEditRenderer', renderFactory, {\n onFinish: finishPopOver,\n editing: true,\n target: actionsButtonRef.current,\n ...getContext(),\n view\n })\n : null;\n break;\n\n case Info:\n component = actionsButtonRef.current ? (\n <DebugInfo view={view} target={actionsButtonRef.current} onClose={finishPopOver} />\n ) : null;\n break;\n\n default:\n component = null;\n break;\n }\n }\n // ColVisibility, pinning, RowDensity, ViewAs are all returning Menu, so popover is needed for them\n const selectedActionContent =\n component && [colsVisibility, pinning, RowDensity, ViewAs].includes(moreContent) ? (\n <Popover\n className='popper'\n arrow\n ref={setPopperRef}\n target={actionsButtonRef.current}\n placement='bottom-end'\n >\n {component}\n </Popover>\n ) : (\n component\n );\n\n return { actions: filteredActions, actionsButtonRef, selectedActionContent };\n};\n\nexport default useMore;\n"]}
1
+ {"version":3,"file":"useMore.js","sourceRoot":"","sources":["../../../../../Core/Components/Toolbar/hooks/useMore.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE1E,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAE/E,OAAO,YAAY,MAAM,6BAA6B,CAAC;AACvD,OAAO,iCAAiC,MAAM,2DAA2D,CAAC;AAC1G,OAAO,cAAc,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AACtF,OAAO,sBAAsB,MAAM,iCAAiC,CAAC;AAErE,MAAM,UAAU,GAAG,aAAa,CAAC;AAEjC,MAAM,eAAe,GAAG,cAAc,CAAC;AACvC,MAAM,MAAM,GAAG,YAAY,CAAC;AAC5B,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AAClD,MAAM,YAAY,GAAG,gBAAgB,CAAC;AACtC,MAAM,gBAAgB,GAAG,qBAAqB,CAAC;AAC/C,MAAM,oBAAoB,GAAG,wBAAwB,CAAC;AACtD,MAAM,iBAAiB,GAAG,qBAAqB,CAAC;AAChD,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAC5C,MAAM,eAAe,GAAG,iBAAiB,CAAC;AAC1C,MAAM,IAAI,GAAG,YAAY,CAAC;AAC1B,MAAM,aAAa,GAAG,iBAAiB,CAAC;AACxC,MAAM,aAAa,GAAG,iBAAiB,CAAC;AACxC,MAAM,WAAW,GAAG,eAAe,CAAC;AACpC,MAAM,OAAO,GAAG,SAAS,CAAC;AAC1B,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AAC7C,MAAM,aAAa,GAAG,kBAAkB,CAAC;AACzC,MAAM,eAAe,GAAG,oBAAoB,CAAC;AAE7C,MAAM,wBAAwB,GAAG,CAAC,EAChC,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACd,EAAE,EAAE;IACH,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,sEAAsE;IACtE,IAAI,gBAAgB,KAAK,6BAA6B,CAAC,KAAK,EAAE,CAAC;QAC7D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IACE,eAAe,KAAK,6BAA6B,CAAC,KAAK;QACvD,eAAe,KAAK,6BAA6B,CAAC,OAAO,EACzD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yDAAyD;IACzD,gGAAgG;IAChG,OAAO,aAAa,IAAI,eAAe,KAAK,6BAA6B,CAAC,OAAO,CAAC;AACpF,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;IAC3B,MAAM,EACJ,IAAI,EAAE,EACJ,mBAAmB,EACnB,QAAQ,EAAE,gBAAgB,EAC1B,cAAc,EACd,qBAAqB,EACrB,YAAY,EACZ,eAAe,EACf,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,UAAU,EACV,eAAe,EAAE,aAAa,EAC9B,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,YAAY,EACb,EACD,QAAQ,EACR,KAAK,EAAE,EACL,eAAe,EACf,eAAe,EAAE,oBAAoB,EACrC,UAAU,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,EACxC,GAAG,EAAE,EACN,IAAI,EAAE,EAAE,qBAAqB,EAAE,WAAW,EAAE,kBAAkB,EAAE,EAChE,cAAc,GAAG,EAAE,EACnB,eAAe,EACf,aAAa,EACb,UAAU,EACV,aAAa,EACd,GAAG,IAAI,CAAC;IAET,MAAM,8BAA8B,GAAG,wBAAwB,CAAC;QAC9D,mBAAmB;QACnB,gBAAgB;QAChB,eAAe,EAAE,QAAQ;QACzB,aAAa,EAAE,CAAC,cAAc;KAC/B,CAAC,CAAC;IAEH,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,UAAU,EAAE,CAAC;IAE/C,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,CAAC,SAAS,CAAC,GAAG,YAAY,EAAE,CAAC;IACnC,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;IACrC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC1D,MAAM,iBAAiB,GAAG,oBAAoB,EAAE,MAAM,CAAC;IACvD,MAAM,kBAAkB,GAAG,oBAAoB,EAAE,sBAAsB,CAAC;IACxE,MAAM,gBAAgB,GAAG,iBAAiB,KAAK,aAAa,CAAC;IAC7D,MAAM,WAAW,GAAG,oBAAoB,EAAE,KAAK,CAAC;IAChD,MAAM,qBAAqB,GACzB,oBAAoB,EAAE,mBAAmB,EAAE,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC;IACvE,MAAM,QAAQ,GAAG,CAAC,CAAC,oBAAoB,EAAE,mBAAmB,EAAE,CAAC,iBAAiB,CAAC,EAAE,QAAQ,CAAC;IAE5F,MAAM,uBAAuB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC/C,MAAM,CACJ,iCAAiC,EACjC;YACE,QAAQ,EAAE,GAAG,EAAE;gBACb,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;YACrD,CAAC;YACD,qBAAqB;YACrB,SAAS;SACV,EACD;YACE,KAAK,EAAE,IAAI;SACZ,CACF,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,qBAAqB,EAAE,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAElE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE1D,MAAM,OAAO,GAAG,OAAO,CACrB,GAAG,EAAE,CAAC;QACJ;YACE;gBACE,EAAE,EAAE,iBAAiB;gBACrB,IAAI,EAAE,QAAQ,KAAK,6BAA6B,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;gBACzE,IAAI,EACF,QAAQ,KAAK,6BAA6B,CAAC,KAAK;oBAC9C,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC;oBAC5B,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC;gBAC9B,IAAI,EAAE,8BAA8B;gBACpC,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAI,CAAC,IAAI,CAAC,cAAc,CACtB,QAAQ,KAAK,6BAA6B,CAAC,KAAK;wBAC9C,CAAC,CAAC,6BAA6B,CAAC,OAAO;wBACvC,CAAC,CAAC,6BAA6B,CAAC,KAAK,CACxC,CAAC;gBACJ,CAAC;aACF;YACD;gBACE,EAAE,EAAE,cAAc;gBAClB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS,CAAC,cAAc,CAAC;gBAC/B,IAAI,EAAE,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC,qBAAqB;gBACpF,OAAO,EAAE,GAAG,EAAE;oBACZ,cAAc,CAAC,cAAc,CAAC,CAAC;oBAC/B,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACzB,CAAC;aACF;YACD;gBACE,EAAE,EAAE,UAAU;gBACd,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC;gBAC3B,IAAI,EACF,sBAAsB,CAAC,QAAQ,EAAE,YAAY,CAAC;oBAC9C,cAAc,CAAC,MAAM,GAAG,CAAC;oBACzB,UAAU;gBACZ,OAAO,EAAE,GAAG,EAAE;oBACZ,cAAc,CAAC,UAAU,CAAC,CAAC;oBAC3B,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACzB,CAAC;aACF;YACD;gBACE,EAAE,EAAE,OAAO;gBACX,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC;gBACxB,IAAI,EACF,sBAAsB,CAAC,QAAQ,EAAE,eAAe,CAAC;oBACjD,CAAC,CAAC,YAAY;oBACd,CAAC,CAAC,mBAAmB;oBACrB,cAAc;gBAChB,OAAO,EAAE,GAAG,EAAE;oBACZ,cAAc,CAAC,OAAO,CAAC,CAAC;oBACxB,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACzB,CAAC;aACF;YACD;gBACE,EAAE,EAAE,eAAe;gBACnB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC;gBACvF,IAAI,EAAE,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,IAAI,aAAa;gBAC1E,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,eAAe,CAAC,CAAC;gBAC1D,CAAC;aACF;YACD;gBACE,EAAE,EAAE,mBAAmB;gBACvB,IAAI,EAAE,CAAC,aAAa,IAAI,UAAU,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;gBACnE,IAAI,EAAE,SAAS,CACb,CAAC,aAAa,IAAI,UAAU,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CACvF;gBACD,IAAI,EAAE,sBAAsB,CAAC,QAAQ,EAAE,eAAe,CAAC,IAAI,cAAc;gBACzE,OAAO,EAAE,GAAG,EAAE;oBACZ,MAAM,oBAAoB,GAAG,aAAa,IAAI,UAAU,CAAC;oBAEzD,kBAAkB,EAAE,CAAC,oBAAoB,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;gBACtF,CAAC;aACF;YACD;gBACE,EAAE,EAAE,eAAe;gBACnB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,SAAS,CAAC,eAAe,CAAC;gBAChC,IAAI,EAAE,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,IAAI,eAAe;gBAC5E,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;gBACnC,CAAC;aACF;YACD;gBACE,EAAE,EAAE,iBAAiB;gBACrB,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,SAAS,CAAC,iBAAiB,CAAC;gBAClC,IAAI,EAAE,sBAAsB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,IAAI,iBAAiB;gBAChF,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;gBAClC,CAAC;aACF;YACD;gBACE,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,aAAa;gBACnB,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC;gBACrB,IAAI,EAAE,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,aAAa;gBAC/D,OAAO,EAAE,GAAG,EAAE;oBACZ,cAAc,CAAC,IAAI,CAAC,CAAC;oBACrB,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACzB,CAAC;aACF;SACF;QACD;YACE;gBACE,EAAE,EAAE,MAAM;gBACV,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC;gBACvB,IAAI,EAAE,OAAO,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC;gBAC5C,OAAO,EAAE,GAAG,EAAE;oBACZ,cAAc,CAAC,MAAM,CAAC,CAAC;oBACvB,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACzB,CAAC;aACF;YACD;gBACE,EAAE,EAAE,eAAe;gBACnB,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,SAAS,CAAC,eAAe,CAAC;gBAChC,IAAI,EACF,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,CAAC;oBACnD,OAAO,CACL,eAAe;wBACb,iBAAiB,KAAK,eAAe;wBACrC,CAAC,CAAC,QAAQ,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,CAAC;wBACrD,WAAW,CACd;gBACH,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAC7B,iBAAiB,EACjB,kBAAkB,KAAK,iBAAiB,EACxC,gBAAgB,CACjB,CAAC;gBACJ,CAAC;aACF;YACD;gBACE,EAAE,EAAE,kBAAkB;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,SAAS,CAAC,kBAAkB,CAAC;gBACnC,IAAI,EACF,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,CAAC;oBACnD,OAAO,CACL,eAAe;wBACb,CAAC,CAAC,QAAQ,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,CAAC;wBACrD,iBAAiB,KAAK,eAAe,CACxC;gBACH,OAAO,EAAE,GAAG,EAAE;oBACZ,cAAc,CAAC,kBAAkB,CAAC,CAAC;oBACnC,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACzB,CAAC;aACF;YACD;gBACE,EAAE,EAAE,oBAAoB;gBACxB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS,CAAC,oBAAoB,CAAC;gBACrC,IAAI,EACF,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,CAAC;oBACnD,OAAO,CACL,eAAe;wBACb,CAAC,QAAQ;wBACT,iBAAiB,KAAK,eAAe;wBACrC,CAAC,gBAAgB,CACpB;gBACH,OAAO,EAAE,uBAAuB;aACjC;YACD;gBACE,EAAE,EAAE,YAAY;gBAChB,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,SAAS,CAAC,YAAY,CAAC;gBAC7B,IAAI,EACF,sBAAsB,CAAC,QAAQ,EAAE,iBAAiB,CAAC;oBACnD,OAAO,CACL,eAAe,IAAI,kBAAkB,KAAK,iBAAiB,IAAI,CAAC,gBAAgB,CACjF;gBACH,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,iBAAiB,CAAC;aACtE;YACD;gBACE,EAAE,EAAE,gBAAgB;gBACpB,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,SAAS,CAAC,gBAAgB,CAAC;gBACjC,IAAI,EAAE,OAAO,CAAC,QAAQ,IAAI,gBAAgB,IAAI,eAAe,IAAI,CAAC,gBAAgB,CAAC;gBACnF,OAAO,EAAE,GAAG,EAAE,CACZ,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,aAAa,EAAE,qBAAqB,CAAC;aAC/E;YACD;gBACE,EAAE,EAAE,aAAa;gBACjB,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,SAAS,CAAC,aAAa,CAAC;gBAC9B,IAAI,EAAE,OAAO,CAAC,oBAAoB,CAAC;gBACnC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;aAC/C;YACD;gBACE,EAAE,EAAE,aAAa;gBACjB,MAAM,EAAE,iBAAiB;gBACzB,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,SAAS,CAAC,aAAa,CAAC;gBAC9B,IAAI,EAAE,OAAO,CAAC,uBAAuB,CAAC;gBACtC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;aACzC;YACD;gBACE,EAAE,EAAE,WAAW;gBACf,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC;gBAC5B,IAAI,EAAE,OAAO,CAAC,qBAAqB,CAAC;gBACpC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;aACvC;YACD;gBACE,EAAE,EAAE,OAAO;gBACX,MAAM,EAAE,SAAS;gBACjB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC;gBACxB,IAAI,EAAE,sBAAsB,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC;gBAC1E,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC3B,CAAC;aACF;SACF;QACD,GAAG,cAAc;KAClB,EACD;QACE,SAAS;QACT,QAAQ;QACR,8BAA8B;QAC9B,qBAAqB;QACrB,cAAc,CAAC,MAAM;QACrB,UAAU;QACV,YAAY;QACZ,mBAAmB;QACnB,eAAe;QACf,aAAa;QACb,eAAe;QACf,aAAa;QACb,iBAAiB;QACjB,eAAe;QACf,SAAS;QACT,iBAAiB;QACjB,eAAe;QACf,QAAQ;QACR,WAAW;QACX,gBAAgB;QAChB,uBAAuB;QACvB,qBAAqB;QACrB,uBAAuB;QACvB,kBAAkB;QAClB,cAAc;QACd,qBAAqB;QACrB,IAAI;QACJ,gBAAgB;QAChB,cAAc;QACd,aAAa;QACb,kBAAkB;KACnB,CACF,CAAC;IAEF,MAAM,eAAe,GAAG,OAAO,CAC7B,GAAG,EAAE,CACH,OAAO;SACJ,IAAI,EAAE;SACN,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACd,GAAG,MAAM;QACT,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;KACnC,CAAC,CAAC;SACF,MAAM,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EACtC,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,IAAI,aAAa,EAAE,CAAC;YAClB,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC;IAEF,qHAAqH;IACrH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,IAAI,SAAS,EAAE,CAAC;YAChC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QACpC,CAAC;IACH,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,eAAe,CAAC;QACd,SAAS,EAAE,SAAS,IAAI,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;QACxD,OAAO,EAAE,SAAS,IAAI,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,GAAE,CAAC;KAC/D,CAAC,CAAC;IAEH,IAAI,SAAS,CAAC;IAEd,IAAI,aAAa,EAAE,CAAC;QAClB,QAAQ,WAAW,EAAE,CAAC;YACpB,KAAK,cAAc;gBACjB,SAAS,GAAG,CACV,KAAC,cAAc,IACb,QAAQ,EAAE,qBAAqB,EAC/B,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,EAC9B,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,MAAM,EAAE,WAAW,EACnB,aAAa,EAAE,aAAa,GAC5B,CACH,CAAC;gBACF,MAAM;YAER,KAAK,OAAO;gBACV,SAAS,GAAG,CACV,KAAC,cAAc,IACb,QAAQ,EAAE,WAAW,EACrB,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,EAC9B,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,MAAM,EAAE,WAAW,EACnB,aAAa,EAAE,aAAa,GAC5B,CACH,CAAC;gBACF,MAAM;YAER,KAAK,UAAU;gBACb,SAAS,GAAG,oBAAoB,CAAC,mBAAmB,EAAE,aAAa,EAAE;oBACnE,GAAG,UAAU,EAAE;oBACf,IAAI;oBACJ,OAAO,EAAE,aAAa;iBACvB,CAAC,CAAC;gBACH,MAAM;YAER,KAAK,MAAM;gBACT,SAAS,GAAG,oBAAoB,CAC9B,iCAAiC,EACjC,aAAa,EACb,UAAU,EAAE,CACb,CAAC;gBACF,MAAM;YAER,KAAK,kBAAkB;gBACrB,SAAS,GAAG,gBAAgB,CAAC,OAAO;oBAClC,CAAC,CAAC,oBAAoB,CAAC,mCAAmC,EAAE,aAAa,EAAE;wBACvE,QAAQ,EAAE,aAAa;wBACvB,OAAO,EAAE,IAAI;wBACb,MAAM,EAAE,gBAAgB,CAAC,OAAO;wBAChC,GAAG,UAAU,EAAE;wBACf,IAAI;qBACL,CAAC;oBACJ,CAAC,CAAC,IAAI,CAAC;gBACT,MAAM;YAER,KAAK,IAAI;gBACP,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CACrC,KAAC,SAAS,IAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,GAAI,CACpF,CAAC,CAAC,CAAC,IAAI,CAAC;gBACT,MAAM;YAER;gBACE,SAAS,GAAG,IAAI,CAAC;gBACjB,MAAM;QACV,CAAC;IACH,CAAC;IACD,mGAAmG;IACnG,MAAM,qBAAqB,GACzB,SAAS,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CACjF,KAAC,OAAO,IACN,SAAS,EAAC,QAAQ,EAClB,KAAK,QACL,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAChC,SAAS,EAAC,YAAY,YAErB,SAAS,GACF,CACX,CAAC,CAAC,CAAC,CACF,SAAS,CACV,CAAC;IAEJ,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,CAAC;AAC/E,CAAC,CAAC;AAEF,eAAe,OAAO,CAAC","sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { Popover, useElement, useModalManager } from '@pega/cosmos-react-core';\nimport { REPEATING_STRUCTURE_TEMPLATES } from 'pega-repeating-structures-core';\n\nimport useTranslate from '../../../Hooks/useTranslate';\nimport PersonalizationDeleteConfirmation from '../../DefaultComponents/PersonalizationDeleteConfirmation';\nimport ColumnSelector, { colsVisibility, pinning } from '../ColumnSelector';\nimport DebugInfo from '../DebugInfo';\nimport { useKeyboardA11y } from '../../../Hooks/a11y';\nimport { resolveViewComponent } from '../../RenderingEngine/ComponentResolverFactory';\nimport showFeatureForTemplate from '../../../templateFeatureSupport';\n\nconst RowDensity = 'Row density';\n\nconst SaveViewChanges = 'Save changes';\nconst ViewAs = 'View as...';\nconst EditCustomizedView = 'Edit customized view';\nconst SetAsDefault = 'Set as default';\nconst MarkAsAppDefault = 'Mark as app default';\nconst DeleteCustomizedView = 'Delete customized view';\nconst ResetColumnWidths = 'Reset column widths';\nconst AutoSizeColumns = 'Auto size columns';\nconst ShowHeaderIcons = 'ShowHeaderIcons';\nconst Info = 'Query info';\nconst ImportCSVData = 'Import CSV data';\nconst ExportToExcel = 'Export to Excel';\nconst ExportToCSV = 'Export to CSV';\nconst Refresh = 'Refresh';\nconst GalleryLayoutToggle = 'Gallery layout';\nconst SwitchToTable = 'Display as Table';\nconst SwitchToGallery = 'Display as Gallery';\n\nconst shouldShowTemplateSwitch = ({\n allowSwitchTemplate,\n authoredTemplate,\n currentTemplate,\n isSmallScreen\n}) => {\n if (!allowSwitchTemplate) {\n return false;\n }\n\n // This switch behavior is only supported for views authored as Table.\n if (authoredTemplate !== REPEATING_STRUCTURE_TEMPLATES.TABLE) {\n return false;\n }\n\n if (\n currentTemplate !== REPEATING_STRUCTURE_TEMPLATES.TABLE &&\n currentTemplate !== REPEATING_STRUCTURE_TEMPLATES.GALLERY\n ) {\n return false;\n }\n\n // Small screens can always switch between table/gallery.\n // Large screens only show the action when currently on gallery (to allow switch back to table).\n return isSmallScreen || currentTemplate === REPEATING_STRUCTURE_TEMPLATES.GALLERY;\n};\n\nconst useMore = ({ view }) => {\n const {\n meta: {\n allowSwitchTemplate,\n template: authoredTemplate,\n displayDensity,\n toggleFieldVisibility,\n freezeFields,\n personalization,\n headerBar,\n enableAppDefault,\n enableFreezeColumns,\n autoSizeColumns,\n showQueryInfo,\n resetColumnWidths,\n rowDensity,\n showHeaderIcons: isHeaderIcons,\n showImportDataOption,\n showExportToExcelOption,\n showExportToCSVOption,\n allowRefresh\n },\n template,\n state: {\n showHeaderIcons,\n personalization: personalizationState,\n responsive: { sm: isSmallOrAbove } = {}\n } = {},\n type: { applyToggleVisibility, applyFreeze, applyGalleryLayout },\n toolBarOptions = [],\n defaultPresetId,\n renderFactory,\n getContext,\n galleryLayout\n } = view;\n\n const shouldShowTemplateSwitchOption = shouldShowTemplateSwitch({\n allowSwitchTemplate,\n authoredTemplate,\n currentTemplate: template,\n isSmallScreen: !isSmallOrAbove\n });\n\n const [popperRef, setPopperRef] = useElement();\n\n const actionsButtonRef = useRef(null);\n const [translate] = useTranslate();\n const { create } = useModalManager();\n const [moreContent, setMoreContent] = useState('default');\n const currentActiveView = personalizationState?.active;\n const currentDefaultView = personalizationState?.defaultPersonalization;\n const isAppDefaultView = currentActiveView === 'APP_DEFAULT';\n const isViewDirty = personalizationState?.dirty;\n const currentActiveViewName =\n personalizationState?.allPersonalizations?.[currentActiveView]?.name;\n const isPreset = !!personalizationState?.allPersonalizations?.[currentActiveView]?.isPreset;\n\n const onDeletePersonalization = useCallback(() => {\n create(\n PersonalizationDeleteConfirmation,\n {\n onSubmit: () => {\n view.type.deletePersonalization(currentActiveView);\n },\n currentActiveViewName,\n translate\n },\n {\n alert: true\n }\n );\n }, [create, currentActiveViewName, view.type, currentActiveView]);\n\n const [forceShowMenu, setForceShowMenu] = useState(false);\n\n const actions = useMemo(\n () => [\n [\n {\n id: 'switch-template',\n icon: template === REPEATING_STRUCTURE_TEMPLATES.TABLE ? 'grid' : 'table',\n text:\n template === REPEATING_STRUCTURE_TEMPLATES.TABLE\n ? translate(SwitchToGallery)\n : translate(SwitchToTable),\n show: shouldShowTemplateSwitchOption,\n onClick: () => {\n view.type.changeTemplate(\n template === REPEATING_STRUCTURE_TEMPLATES.TABLE\n ? REPEATING_STRUCTURE_TEMPLATES.GALLERY\n : REPEATING_STRUCTURE_TEMPLATES.TABLE\n );\n }\n },\n {\n id: colsVisibility,\n icon: 'eye-off',\n text: translate(colsVisibility),\n show: showFeatureForTemplate(template, 'showHideColumns') && !!toggleFieldVisibility,\n onClick: () => {\n setMoreContent(colsVisibility);\n setForceShowMenu(true);\n }\n },\n {\n id: RowDensity,\n icon: 'row-insert',\n text: translate(RowDensity),\n show:\n showFeatureForTemplate(template, 'rowDensity') &&\n displayDensity.length > 0 &&\n rowDensity,\n onClick: () => {\n setMoreContent(RowDensity);\n setForceShowMenu(true);\n }\n },\n {\n id: pinning,\n icon: 'freeze-column',\n text: translate(pinning),\n show:\n showFeatureForTemplate(template, 'freezeColumns') &&\n !!freezeFields &&\n !!enableFreezeColumns &&\n isSmallOrAbove,\n onClick: () => {\n setMoreContent(pinning);\n setForceShowMenu(true);\n }\n },\n {\n id: ShowHeaderIcons,\n icon: 'picture',\n text: showHeaderIcons ? translate('Hide header icons') : translate('Show header icons'),\n show: showFeatureForTemplate(template, 'showHeaderIcons') && isHeaderIcons,\n onClick: () => {\n view.type.updateHeaderIconsVisibility(!showHeaderIcons);\n }\n },\n {\n id: GalleryLayoutToggle,\n icon: (galleryLayout ?? 'cardgrid') === 'cardlist' ? 'grid' : 'row',\n text: translate(\n (galleryLayout ?? 'cardgrid') === 'cardlist' ? 'Card grid layout' : 'Card list layout'\n ),\n show: showFeatureForTemplate(template, 'galleryLayout') && isSmallOrAbove,\n onClick: () => {\n const currentGalleryLayout = galleryLayout ?? 'cardgrid';\n\n applyGalleryLayout?.(currentGalleryLayout === 'cardlist' ? 'cardgrid' : 'cardlist');\n }\n },\n {\n id: AutoSizeColumns,\n icon: 'scale-up',\n text: translate(AutoSizeColumns),\n show: showFeatureForTemplate(template, 'autoSizeColumns') && autoSizeColumns,\n onClick: () => {\n view.applyColumnsAutoSize(false);\n }\n },\n {\n id: ResetColumnWidths,\n icon: 'scale-down',\n text: translate(ResetColumnWidths),\n show: showFeatureForTemplate(template, 'resetColumnWidths') && resetColumnWidths,\n onClick: () => {\n view.applyColumnsAutoSize(true);\n }\n },\n {\n id: Info,\n icon: 'information',\n text: translate(Info),\n show: showFeatureForTemplate(template, 'info') && showQueryInfo,\n onClick: () => {\n setMoreContent(Info);\n setForceShowMenu(true);\n }\n }\n ],\n [\n {\n id: ViewAs,\n icon: 'columns',\n text: translate(ViewAs),\n show: Boolean(personalization && !headerBar),\n onClick: () => {\n setMoreContent(ViewAs);\n setForceShowMenu(true);\n }\n },\n {\n id: SaveViewChanges,\n icon: 'clipboard-plus',\n text: translate(SaveViewChanges),\n show:\n showFeatureForTemplate(template, 'personalization') &&\n Boolean(\n personalization &&\n currentActiveView !== defaultPresetId &&\n (!isPreset || (isAppDefaultView && enableAppDefault)) &&\n isViewDirty\n ),\n onClick: () => {\n view.type.updatePersonalization(\n currentActiveView,\n currentDefaultView === currentActiveView,\n isAppDefaultView\n );\n }\n },\n {\n id: EditCustomizedView,\n icon: 'pencil',\n text: translate(EditCustomizedView),\n show:\n showFeatureForTemplate(template, 'personalization') &&\n Boolean(\n personalization &&\n (!isPreset || (isAppDefaultView && enableAppDefault)) &&\n currentActiveView !== defaultPresetId\n ),\n onClick: () => {\n setMoreContent(EditCustomizedView);\n setForceShowMenu(true);\n }\n },\n {\n id: DeleteCustomizedView,\n icon: 'trash',\n text: translate(DeleteCustomizedView),\n show:\n showFeatureForTemplate(template, 'personalization') &&\n Boolean(\n personalization &&\n !isPreset &&\n currentActiveView !== defaultPresetId &&\n !isAppDefaultView\n ),\n onClick: onDeletePersonalization\n },\n {\n id: SetAsDefault,\n icon: 'clipboard-check',\n text: translate(SetAsDefault),\n show:\n showFeatureForTemplate(template, 'personalization') &&\n Boolean(\n personalization && currentDefaultView !== currentActiveView && !isAppDefaultView\n ),\n onClick: () => view.type.setDefaultPersonalization(currentActiveView)\n },\n {\n id: MarkAsAppDefault,\n icon: 'clipboard-check',\n text: translate(MarkAsAppDefault),\n show: Boolean(isPreset && enableAppDefault && personalization && !isAppDefaultView),\n onClick: () =>\n view.type.setAppDefaultPersonalization('APP_DEFAULT', currentActiveViewName)\n },\n {\n id: ImportCSVData,\n icon: 'document-xls',\n text: translate(ImportCSVData),\n show: Boolean(showImportDataOption),\n onClick: () => view.type.importCSVData(create)\n },\n {\n id: ExportToExcel,\n testId: 'export-to-excel',\n icon: 'document-xls',\n text: translate(ExportToExcel),\n show: Boolean(showExportToExcelOption),\n onClick: () => view.type.exportToExcel()\n },\n {\n id: ExportToCSV,\n icon: 'document-xls',\n text: translate(ExportToCSV),\n show: Boolean(showExportToCSVOption),\n onClick: () => view.type.exportToCSV()\n },\n {\n id: Refresh,\n testId: 'refresh',\n icon: 'reset',\n text: translate(Refresh),\n show: showFeatureForTemplate(template, 'refresh') && Boolean(allowRefresh),\n onClick: () => {\n view.type.forceRefresh();\n }\n }\n ],\n ...toolBarOptions\n ],\n [\n translate,\n template,\n shouldShowTemplateSwitchOption,\n toggleFieldVisibility,\n displayDensity.length,\n rowDensity,\n freezeFields,\n enableFreezeColumns,\n showHeaderIcons,\n isHeaderIcons,\n autoSizeColumns,\n showQueryInfo,\n resetColumnWidths,\n personalization,\n headerBar,\n currentActiveView,\n defaultPresetId,\n isPreset,\n isViewDirty,\n isAppDefaultView,\n showExportToExcelOption,\n showExportToCSVOption,\n onDeletePersonalization,\n currentDefaultView,\n toolBarOptions,\n currentActiveViewName,\n view,\n enableAppDefault,\n isSmallOrAbove,\n galleryLayout,\n applyGalleryLayout\n ]\n );\n\n const filteredActions = useMemo(\n () =>\n actions\n .flat()\n .map(action => ({\n ...action,\n id: action.id.replaceAll(' ', '-')\n }))\n .filter(({ show = true }) => show),\n [actions]\n );\n\n const finishPopOver = () => {\n if (forceShowMenu) {\n setForceShowMenu(false);\n }\n };\n\n // setting focus on action button in different rendering cycle otherwise it will get lost due to re-render of toolbar\n useEffect(() => {\n if (!forceShowMenu && popperRef) {\n actionsButtonRef.current?.focus();\n }\n }, [forceShowMenu]);\n\n useKeyboardA11y({\n container: popperRef && forceShowMenu ? popperRef : null,\n onClose: popperRef && forceShowMenu ? finishPopOver : () => {}\n });\n\n let component;\n\n if (forceShowMenu) {\n switch (moreContent) {\n case colsVisibility:\n component = (\n <ColumnSelector\n dispatch={applyToggleVisibility}\n fieldDefs={view.getFieldDefs()}\n state={view.state}\n action={moreContent}\n finishPopOver={finishPopOver}\n />\n );\n break;\n\n case pinning:\n component = (\n <ColumnSelector\n dispatch={applyFreeze}\n fieldDefs={view.getFieldDefs()}\n state={view.state}\n action={moreContent}\n finishPopOver={finishPopOver}\n />\n );\n break;\n\n case RowDensity:\n component = resolveViewComponent('rowHeightRenderer', renderFactory, {\n ...getContext(),\n view,\n onClose: finishPopOver\n });\n break;\n\n case ViewAs:\n component = resolveViewComponent(\n 'personalizationSelectorRenderer',\n renderFactory,\n getContext()\n );\n break;\n\n case EditCustomizedView:\n component = actionsButtonRef.current\n ? resolveViewComponent('personalizationCreateEditRenderer', renderFactory, {\n onFinish: finishPopOver,\n editing: true,\n target: actionsButtonRef.current,\n ...getContext(),\n view\n })\n : null;\n break;\n\n case Info:\n component = actionsButtonRef.current ? (\n <DebugInfo view={view} target={actionsButtonRef.current} onClose={finishPopOver} />\n ) : null;\n break;\n\n default:\n component = null;\n break;\n }\n }\n // ColVisibility, pinning, RowDensity, ViewAs are all returning Menu, so popover is needed for them\n const selectedActionContent =\n component && [colsVisibility, pinning, RowDensity, ViewAs].includes(moreContent) ? (\n <Popover\n className='popper'\n arrow\n ref={setPopperRef}\n target={actionsButtonRef.current}\n placement='bottom-end'\n >\n {component}\n </Popover>\n ) : (\n component\n );\n\n return { actions: filteredActions, actionsButtonRef, selectedActionContent };\n};\n\nexport default useMore;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"useDragDrop.d.ts","sourceRoot":"","sources":["../../../Core/Hooks/useDragDrop.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAe,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE5F;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,OAAO,EACP,WAAuB,EACvB,SAAqB,EACrB,WAAuB,EACvB,WAAuB,EACvB,MAAM,EACN,gBAAuB,EACvB,oBAAoB,EACpB,iBAAwB,EACxB,qBAAqB,EACrB,gBAAgB,EACjB,EAAE,gBAAgB,GAAG,iBAAiB,CAgStC"}
1
+ {"version":3,"file":"useDragDrop.d.ts","sourceRoot":"","sources":["../../../Core/Hooks/useDragDrop.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAe,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE5F;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,OAAO,EACP,WAAuB,EACvB,SAAqB,EACrB,WAAuB,EACvB,WAAuB,EACvB,MAAM,EACN,gBAAuB,EACvB,oBAAoB,EACpB,iBAAwB,EACxB,qBAAqB,EACrB,gBAAgB,EACjB,EAAE,gBAAgB,GAAG,iBAAiB,CAmStC"}
@@ -1,4 +1,5 @@
1
1
  import { useCallback, useMemo, useRef } from 'react';
2
+ import { getBrowserContext } from '../Utils';
2
3
  /**
3
4
  * A custom React hook to handle drag-and-drop functionality with support for animations,
4
5
  * ghost images, and collision detection.
@@ -51,7 +52,7 @@ export default function useDragDrop({ context, onDragStart = undefined, onDragEn
51
52
  ghostElement.parentNode?.removeChild(ghostElement);
52
53
  }, 1000);
53
54
  }
54
- }, [getGhostImageSelector, context, defaultGhostImage]);
55
+ }, [getGhostImageSelector, defaultGhostImage]);
55
56
  const isColliding = useCallback((x, y, coord) => {
56
57
  const smallBuffer = 2;
57
58
  return !(x < coord.left - smallBuffer ||
@@ -94,7 +95,7 @@ export default function useDragDrop({ context, onDragStart = undefined, onDragEn
94
95
  elm?.dispatchEvent(new MouseEvent('dragleave', {
95
96
  bubbles: true,
96
97
  cancelable: true,
97
- view: window
98
+ view: getBrowserContext(context.current).window
98
99
  }));
99
100
  }
100
101
  }, [isColliding, ref]);
@@ -115,7 +116,7 @@ export default function useDragDrop({ context, onDragStart = undefined, onDragEn
115
116
  }
116
117
  }, [ref, isColliding, removeDropEffect, onDrop]);
117
118
  const dragStartCb = useCallback((ev) => {
118
- document.addEventListener('dragover', contextDragOverCb);
119
+ getBrowserContext(context.current).document.addEventListener('dragover', contextDragOverCb);
119
120
  context.current?.addEventListener('drop', contextDropCb);
120
121
  // clear the drag operation's data store when drag starts as its the only time when drag data is writable
121
122
  if (ev.dataTransfer)
@@ -138,7 +139,6 @@ export default function useDragDrop({ context, onDragStart = undefined, onDragEn
138
139
  onDragStart(ev);
139
140
  }, [
140
141
  contextDragOverCb,
141
- context,
142
142
  contextDropCb,
143
143
  setGhostImage,
144
144
  ref,
@@ -148,7 +148,7 @@ export default function useDragDrop({ context, onDragStart = undefined, onDragEn
148
148
  ]);
149
149
  const dragEndCb = useCallback((ev) => {
150
150
  if (ref.contextDragOverCb)
151
- document.removeEventListener('dragover', ref.contextDragOverCb);
151
+ getBrowserContext(context.current).document.removeEventListener('dragover', ref.contextDragOverCb);
152
152
  if (ref.contextDropCb)
153
153
  context.current?.removeEventListener('drop', ref.contextDropCb);
154
154
  ref.dropTarget = [];
@@ -159,7 +159,7 @@ export default function useDragDrop({ context, onDragStart = undefined, onDragEn
159
159
  removeDragEffect(ev.currentTarget);
160
160
  if (onDragEnd)
161
161
  onDragEnd(ev);
162
- }, [onDragEnd, removeDragEffect, context, ref]);
162
+ }, [onDragEnd, removeDragEffect, ref]);
163
163
  const isValidDragEnter = useCallback((e) => {
164
164
  let isValid = true;
165
165
  if (ref.dragTarget === e.currentTarget)
@@ -194,7 +194,7 @@ export default function useDragDrop({ context, onDragStart = undefined, onDragEn
194
194
  elm?.dispatchEvent(new MouseEvent('dragleave', {
195
195
  bubbles: true,
196
196
  cancelable: true,
197
- view: window
197
+ view: getBrowserContext(context.current).window
198
198
  }));
199
199
  }
200
200
  }