@pega/lists-react 9.25.1-1 → 9.25.1-11

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 (63) hide show
  1. package/lib/Core/Components/DefaultComponents/CellRenderers/RowActionMenu.d.ts.map +1 -1
  2. package/lib/Core/Components/DefaultComponents/CellRenderers/RowActionMenu.js +6 -53
  3. package/lib/Core/Components/DefaultComponents/CellRenderers/RowActionMenu.js.map +1 -1
  4. package/lib/Core/Components/DefaultComponents/CellRenderers/RowSelectHandle.js +9 -2
  5. package/lib/Core/Components/DefaultComponents/CellRenderers/RowSelectHandle.js.map +1 -1
  6. package/lib/Core/Components/RenderingEngine/ComponentResolverFactory.d.ts +1 -0
  7. package/lib/Core/Components/RenderingEngine/ComponentResolverFactory.d.ts.map +1 -1
  8. package/lib/Core/Components/RenderingEngine/ComponentResolverFactory.js +6 -1
  9. package/lib/Core/Components/RenderingEngine/ComponentResolverFactory.js.map +1 -1
  10. package/lib/Core/Components/Virtualise/VirtualizeInfinite.js +4 -2
  11. package/lib/Core/Components/Virtualise/VirtualizeInfinite.js.map +1 -1
  12. package/lib/Core/Components/Virtualise/index.js +5 -3
  13. package/lib/Core/Components/Virtualise/index.js.map +1 -1
  14. package/lib/Core/Utils/fetchRowActions.d.ts +16 -0
  15. package/lib/Core/Utils/fetchRowActions.d.ts.map +1 -0
  16. package/lib/Core/Utils/fetchRowActions.js +49 -0
  17. package/lib/Core/Utils/fetchRowActions.js.map +1 -0
  18. package/lib/Core/Utils/styles.d.ts +9 -0
  19. package/lib/Core/Utils/styles.d.ts.map +1 -1
  20. package/lib/Core/Utils/styles.js +8 -3
  21. package/lib/Core/Utils/styles.js.map +1 -1
  22. package/lib/Core/Views/Table/CellWrapper.d.ts +3 -1
  23. package/lib/Core/Views/Table/CellWrapper.d.ts.map +1 -1
  24. package/lib/Core/Views/Table/CellWrapper.js +4 -3
  25. package/lib/Core/Views/Table/CellWrapper.js.map +1 -1
  26. package/lib/Core/Views/Table/Row.d.ts.map +1 -1
  27. package/lib/Core/Views/Table/Row.js +24 -10
  28. package/lib/Core/Views/Table/Row.js.map +1 -1
  29. package/lib/Core/Views/Table/StyledTableContainer.d.ts.map +1 -1
  30. package/lib/Core/Views/Table/StyledTableContainer.js +74 -24
  31. package/lib/Core/Views/Table/StyledTableContainer.js.map +1 -1
  32. package/lib/Core/Views/Table/VirtualizeWrapper.d.ts +3 -1
  33. package/lib/Core/Views/Table/VirtualizeWrapper.d.ts.map +1 -1
  34. package/lib/Core/Views/Table/VirtualizeWrapper.js +6 -5
  35. package/lib/Core/Views/Table/VirtualizeWrapper.js.map +1 -1
  36. package/lib/Core/Views/Table/index.d.ts.map +1 -1
  37. package/lib/Core/Views/Table/index.js +15 -6
  38. package/lib/Core/Views/Table/index.js.map +1 -1
  39. package/lib/Core/Views/Table/useMasterDetailCleanup.d.ts +11 -0
  40. package/lib/Core/Views/Table/useMasterDetailCleanup.d.ts.map +1 -0
  41. package/lib/Core/Views/Table/useMasterDetailCleanup.js +27 -0
  42. package/lib/Core/Views/Table/useMasterDetailCleanup.js.map +1 -0
  43. package/lib/Core/Views/Table/useMasterDetailHost.d.ts +14 -0
  44. package/lib/Core/Views/Table/useMasterDetailHost.d.ts.map +1 -0
  45. package/lib/Core/Views/Table/useMasterDetailHost.js +56 -0
  46. package/lib/Core/Views/Table/useMasterDetailHost.js.map +1 -0
  47. package/lib/Core/Views/Table/useMasterDetailRenderer.d.ts +13 -0
  48. package/lib/Core/Views/Table/useMasterDetailRenderer.d.ts.map +1 -0
  49. package/lib/Core/Views/Table/useMasterDetailRenderer.js +23 -0
  50. package/lib/Core/Views/Table/useMasterDetailRenderer.js.map +1 -0
  51. package/lib/Core/Views/Table/useMasterDetailRow.d.ts +9 -0
  52. package/lib/Core/Views/Table/useMasterDetailRow.d.ts.map +1 -0
  53. package/lib/Core/Views/Table/useMasterDetailRow.js +55 -0
  54. package/lib/Core/Views/Table/useMasterDetailRow.js.map +1 -0
  55. package/lib/Core/Views/Table/useMasterDetailState.d.ts +21 -0
  56. package/lib/Core/Views/Table/useMasterDetailState.d.ts.map +1 -0
  57. package/lib/Core/Views/Table/useMasterDetailState.js +33 -0
  58. package/lib/Core/Views/Table/useMasterDetailState.js.map +1 -0
  59. package/lib/Core/constants.d.ts +4 -0
  60. package/lib/Core/constants.d.ts.map +1 -1
  61. package/lib/Core/constants.js +4 -0
  62. package/lib/Core/constants.js.map +1 -1
  63. package/package.json +8 -7
@@ -1 +1 @@
1
- {"version":3,"file":"RowActionMenu.d.ts","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/RowActionMenu.jsx"],"names":[],"mappings":";AAoDA;;;;4CA4DC;;;;;;;sBA/GqB,YAAY"}
1
+ {"version":3,"file":"RowActionMenu.d.ts","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/RowActionMenu.jsx"],"names":[],"mappings":";AASA;;;;4CAwCC;;;;;;;sBAhDqB,YAAY"}
@@ -1,67 +1,20 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { useState, useMemo } from 'react';
2
+ import { useState } from 'react';
3
3
  import PropTypes from 'prop-types';
4
4
  import { MenuButton } from '@pega/cosmos-react-core';
5
5
  import { ROW_DENSITY } from 'pega-repeating-structures-core';
6
6
  import useTranslate from '../../../Hooks/useTranslate';
7
- const hydrateActions = (actions, rowContext, refreshRow) => {
8
- return actions.map(action => ({
9
- ...action,
10
- primary: action.text,
11
- onClick: () => {
12
- action.onClick(rowContext, refreshRow);
13
- }
14
- }));
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
- };
7
+ import fetchRowActions from '../../../Utils/fetchRowActions';
42
8
  function RowActionMenu({ getRsMeta, getExecutionContext, getParentContext }) {
43
9
  const [translate] = useTranslate();
44
- const { getValue, getRowActionDetails, refreshRow } = getExecutionContext();
45
10
  const [rowActions, setRowActions] = useState([]);
46
11
  const [actionsFetched, setActionsFetched] = useState(false);
47
- const rowContext = getValue();
48
12
  const rsMeta = getRsMeta();
49
- const { rowActions: tableMetaRowActions } = rsMeta;
50
- const staticActions = useMemo(() => hydrateActions(tableMetaRowActions ?? [], rowContext, refreshRow.bind(null, rowContext)), [rowContext, tableMetaRowActions]);
51
- const fetchCaseDeatils = () => {
13
+ const fetchCaseDetails = () => {
52
14
  setActionsFetched(false);
53
- const currentRowContext = getExecutionContext()?.getValue();
54
- let actions = [];
55
- const configActions = getConfigActions(rsMeta, rowContext, refreshRow, translate);
56
- getRowActionDetails(currentRowContext)
57
- .then(response => {
58
- if (Array.isArray(response)) {
59
- const latestRowContext = getExecutionContext()?.getValue();
60
- actions = hydrateActions(response, latestRowContext, refreshRow.bind(null, latestRowContext));
61
- }
62
- })
15
+ fetchRowActions({ getExecutionContext, meta: rsMeta, translate })
16
+ .then(setRowActions)
63
17
  .finally(() => {
64
- setRowActions([...configActions, ...actions, ...staticActions]);
65
18
  setActionsFetched(true);
66
19
  });
67
20
  };
@@ -71,7 +24,7 @@ function RowActionMenu({ getRsMeta, getExecutionContext, getParentContext }) {
71
24
  items: actionsFetched ? rowActions : [],
72
25
  emptyText: translate('No actions available'),
73
26
  loading: !actionsFetched
74
- }, "aria-label": rowHeaderValue ? `${translatedActionsText} - ${rowHeaderValue}` : `${translatedActionsText}`, onClick: fetchCaseDeatils, placement: 'bottom-end', popover: {
27
+ }, "aria-label": rowHeaderValue ? `${translatedActionsText} - ${rowHeaderValue}` : `${translatedActionsText}`, onClick: fetchCaseDetails, placement: 'bottom-end', popover: {
75
28
  portal: true
76
29
  }, icon: 'more' }));
77
30
  }
@@ -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\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"]}
1
+ {"version":3,"file":"RowActionMenu.js","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/RowActionMenu.jsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE7D,OAAO,YAAY,MAAM,6BAA6B,CAAC;AACvD,OAAO,eAAe,MAAM,gCAAgC,CAAC;AAE7D,SAAS,aAAa,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,gBAAgB,EAAE;IACzE,MAAM,CAAC,SAAS,CAAC,GAAG,YAAY,EAAE,CAAC;IACnC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACjD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC5B,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACzB,eAAe,CAAC,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;aAC9D,IAAI,CAAC,aAAa,CAAC;aACnB,OAAO,CAAC,GAAG,EAAE;YACZ,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IACF,MAAM,cAAc,GAAG,mBAAmB,EAAE,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,CAAC;IACxE,MAAM,qBAAqB,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAEnD,OAAO,CACL,KAAC,UAAU,IACT,IAAI,EAAE,qBAAqB,EAC3B,QAAQ,QACR,OAAO,EAAC,QAAQ,EAChB,OAAO,EAAE,gBAAgB,EAAE,CAAC,aAAa,EAAE,KAAK,WAAW,CAAC,KAAK,EACjE,QAAQ,EAAE,CAAC,CAAC,EACZ,IAAI,EAAE;YACJ,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;YACvC,SAAS,EAAE,SAAS,CAAC,sBAAsB,CAAC;YAC5C,OAAO,EAAE,CAAC,cAAc;SACzB,gBAEC,cAAc,CAAC,CAAC,CAAC,GAAG,qBAAqB,MAAM,cAAc,EAAE,CAAC,CAAC,CAAC,GAAG,qBAAqB,EAAE,EAE9F,OAAO,EAAE,gBAAgB,EACzB,SAAS,EAAC,YAAY,EACtB,OAAO,EAAE;YACP,MAAM,EAAE,IAAI;SACb,EACD,IAAI,EAAC,MAAM,GACX,CACH,CAAC;AACJ,CAAC;AAED,aAAa,CAAC,SAAS,GAAG;IACxB,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;IACpC,mBAAmB,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;CAC/C,CAAC;AAEF,eAAe,aAAa,CAAC","sourcesContent":["import { useState } 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';\nimport fetchRowActions from '../../../Utils/fetchRowActions';\n\nfunction RowActionMenu({ getRsMeta, getExecutionContext, getParentContext }) {\n const [translate] = useTranslate();\n const [rowActions, setRowActions] = useState([]);\n const [actionsFetched, setActionsFetched] = useState(false);\n const rsMeta = getRsMeta();\n\n const fetchCaseDetails = () => {\n setActionsFetched(false);\n fetchRowActions({ getExecutionContext, meta: rsMeta, translate })\n .then(setRowActions)\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={fetchCaseDetails}\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"]}
@@ -16,13 +16,14 @@ const StyledDivWrapper = styled.div `
16
16
  }
17
17
  `;
18
18
  const RowSelectHandle = ({ getRsMeta, getExecutionContext, getDisableSelection }) => {
19
- const { $selected, selectRow, getParentContext, getRowHeader } = getExecutionContext();
19
+ const { $selected, selectRow, getParentContext, getRowHeader, openMasterDetail } = getExecutionContext();
20
20
  const { selectionMode, disableSelectionOnLoad } = getRsMeta();
21
21
  const { getState } = getParentContext();
22
22
  const selectedRowsCount = getState().selectedRows?.length || 0;
23
23
  // in multi_on_hover mode, display all checkboxes when at least 1 row is selected
24
24
  const bDisplayOnHover = selectionMode === SELECTION_MODES.multi_on_hover && selectedRowsCount === 0;
25
25
  const rowHeaderValue = getRowHeader()?.getValue();
26
+ const onClick = event => event.stopPropagation();
26
27
  let component = null;
27
28
  const disableSelection = getDisableSelection() ?? disableSelectionOnLoad;
28
29
  if (selectionMode === SELECTION_MODES.single) {
@@ -31,6 +32,8 @@ const RowSelectHandle = ({ getRsMeta, getExecutionContext, getDisableSelection }
31
32
  return;
32
33
  }
33
34
  selectRow();
35
+ // Upon selection, open the master detail if available
36
+ openMasterDetail?.();
34
37
  };
35
38
  component = (_jsx(RadioButton, { checked: $selected || false, disabled: disableSelection, onChange: handleChange, "aria-label": rowHeaderValue }));
36
39
  }
@@ -40,12 +43,16 @@ const RowSelectHandle = ({ getRsMeta, getExecutionContext, getDisableSelection }
40
43
  return;
41
44
  }
42
45
  selectRow(event.target.checked);
46
+ if (event.target.checked) {
47
+ // Upon selection, open the master detail if available
48
+ openMasterDetail?.();
49
+ }
43
50
  };
44
51
  component = (_jsx(Checkbox, { className: cx({
45
52
  'checkbox-on-hover': bDisplayOnHover
46
53
  }), checked: $selected || false, onChange: handleChange, disabled: disableSelection, "aria-label": rowHeaderValue }));
47
54
  }
48
- return _jsx(StyledDivWrapper, { item: true, children: component });
55
+ return (_jsx(StyledDivWrapper, { item: true, onClick: onClick, children: component }));
49
56
  };
50
57
  RowSelectHandle.propTypes = {
51
58
  getExecutionContext: PropTypes.func.isRequired,
@@ -1 +1 @@
1
- {"version":3,"file":"RowSelectHandle.js","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/RowSelectHandle.jsx"],"names":[],"mappings":";AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8DAA8D,CAAC;AAEtG,OAAO,EAAE,eAAe,IAAI,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;IAK/B,sBAAsB;;;CAGzB,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,EAAE,EAAE;IAClF,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAEvF,MAAM,EAAE,aAAa,EAAE,sBAAsB,EAAE,GAAG,SAAS,EAAE,CAAC;IAC9D,MAAM,EAAE,QAAQ,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACxC,MAAM,iBAAiB,GAAG,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,CAAC;IAC/D,iFAAiF;IACjF,MAAM,eAAe,GACnB,aAAa,KAAK,eAAe,CAAC,cAAc,IAAI,iBAAiB,KAAK,CAAC,CAAC;IAE9E,MAAM,cAAc,GAAG,YAAY,EAAE,EAAE,QAAQ,EAAE,CAAC;IAElD,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,MAAM,gBAAgB,GAAG,mBAAmB,EAAE,IAAI,sBAAsB,CAAC;IACzE,IAAI,aAAa,KAAK,eAAe,CAAC,MAAM,EAAE,CAAC;QAC7C,MAAM,YAAY,GAAG,GAAG,EAAE;YACxB,IAAI,gBAAgB,EAAE,CAAC;gBACrB,OAAO;YACT,CAAC;YACD,SAAS,EAAE,CAAC;QACd,CAAC,CAAC;QACF,SAAS,GAAG,CACV,KAAC,WAAW,IACV,OAAO,EAAE,SAAS,IAAI,KAAK,EAC3B,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,YAAY,gBACV,cAAc,GAC1B,CACH,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,YAAY,GAAG,KAAK,CAAC,EAAE;YAC3B,IAAI,gBAAgB,EAAE,CAAC;gBACrB,OAAO;YACT,CAAC;YACD,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC,CAAC;QACF,SAAS,GAAG,CACV,KAAC,QAAQ,IACP,SAAS,EAAE,EAAE,CAAC;gBACZ,mBAAmB,EAAE,eAAe;aACrC,CAAC,EACF,OAAO,EAAE,SAAS,IAAI,KAAK,EAC3B,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,gBAAgB,gBACd,cAAc,GAC1B,CACH,CAAC;IACJ,CAAC;IACD,OAAO,KAAC,gBAAgB,IAAC,IAAI,kBAAE,SAAS,GAAoB,CAAC;AAC/D,CAAC,CAAC;AAEF,eAAe,CAAC,SAAS,GAAG;IAC1B,mBAAmB,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;IAC9C,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;IACpC,mBAAmB,EAAE,SAAS,CAAC,IAAI,CAAC,UAAU;CAC/C,CAAC;AAEF,+GAA+G;AAC/G,eAAe,IAAI,CAAC,eAAe,CAAC,CAAC","sourcesContent":["import styled from 'styled-components';\nimport PropTypes from 'prop-types';\nimport { memo } from 'react';\n\nimport { RadioButton, Checkbox } from '@pega/cosmos-react-core';\nimport { StyledPseudoRadioCheck } from '@pega/cosmos-react-core/lib/components/RadioCheck/RadioCheck';\n\nimport { createClassName as cx } from '../../../Utils';\nimport { SELECTION_MODES } from '../../../constants';\n\nconst StyledDivWrapper = styled.div`\n height: 100%;\n > div {\n height: 100%;\n }\n ${StyledPseudoRadioCheck} {\n margin-inline-end: 0;\n }\n`;\n\nconst RowSelectHandle = ({ getRsMeta, getExecutionContext, getDisableSelection }) => {\n const { $selected, selectRow, getParentContext, getRowHeader } = getExecutionContext();\n\n const { selectionMode, disableSelectionOnLoad } = getRsMeta();\n const { getState } = getParentContext();\n const selectedRowsCount = getState().selectedRows?.length || 0;\n // in multi_on_hover mode, display all checkboxes when at least 1 row is selected\n const bDisplayOnHover =\n selectionMode === SELECTION_MODES.multi_on_hover && selectedRowsCount === 0;\n\n const rowHeaderValue = getRowHeader()?.getValue();\n\n let component = null;\n const disableSelection = getDisableSelection() ?? disableSelectionOnLoad;\n if (selectionMode === SELECTION_MODES.single) {\n const handleChange = () => {\n if (disableSelection) {\n return;\n }\n selectRow();\n };\n component = (\n <RadioButton\n checked={$selected || false}\n disabled={disableSelection}\n onChange={handleChange}\n aria-label={rowHeaderValue}\n />\n );\n } else {\n const handleChange = event => {\n if (disableSelection) {\n return;\n }\n selectRow(event.target.checked);\n };\n component = (\n <Checkbox\n className={cx({\n 'checkbox-on-hover': bDisplayOnHover\n })}\n checked={$selected || false}\n onChange={handleChange}\n disabled={disableSelection}\n aria-label={rowHeaderValue}\n />\n );\n }\n return <StyledDivWrapper item>{component}</StyledDivWrapper>;\n};\n\nRowSelectHandle.propTypes = {\n getExecutionContext: PropTypes.func.isRequired,\n getRsMeta: PropTypes.func.isRequired,\n getDisableSelection: PropTypes.func.isRequired\n};\n\n// For a given column instance, getExecutionContext and getRsMeta functions will remain same between re-renders\nexport default memo(RowSelectHandle);\n"]}
1
+ {"version":3,"file":"RowSelectHandle.js","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/RowSelectHandle.jsx"],"names":[],"mappings":"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","sourcesContent":["import styled from 'styled-components';\nimport PropTypes from 'prop-types';\nimport { memo } from 'react';\n\nimport { RadioButton, Checkbox } from '@pega/cosmos-react-core';\nimport { StyledPseudoRadioCheck } from '@pega/cosmos-react-core/lib/components/RadioCheck/RadioCheck';\n\nimport { createClassName as cx } from '../../../Utils';\nimport { SELECTION_MODES } from '../../../constants';\n\nconst StyledDivWrapper = styled.div`\n height: 100%;\n > div {\n height: 100%;\n }\n ${StyledPseudoRadioCheck} {\n margin-inline-end: 0;\n }\n`;\n\nconst RowSelectHandle = ({ getRsMeta, getExecutionContext, getDisableSelection }) => {\n const { $selected, selectRow, getParentContext, getRowHeader, openMasterDetail } =\n getExecutionContext();\n\n const { selectionMode, disableSelectionOnLoad } = getRsMeta();\n const { getState } = getParentContext();\n const selectedRowsCount = getState().selectedRows?.length || 0;\n // in multi_on_hover mode, display all checkboxes when at least 1 row is selected\n const bDisplayOnHover =\n selectionMode === SELECTION_MODES.multi_on_hover && selectedRowsCount === 0;\n\n const rowHeaderValue = getRowHeader()?.getValue();\n const onClick = event => event.stopPropagation();\n\n let component = null;\n const disableSelection = getDisableSelection() ?? disableSelectionOnLoad;\n if (selectionMode === SELECTION_MODES.single) {\n const handleChange = () => {\n if (disableSelection) {\n return;\n }\n selectRow();\n // Upon selection, open the master detail if available\n openMasterDetail?.();\n };\n component = (\n <RadioButton\n checked={$selected || false}\n disabled={disableSelection}\n onChange={handleChange}\n aria-label={rowHeaderValue}\n />\n );\n } else {\n const handleChange = event => {\n if (disableSelection) {\n return;\n }\n selectRow(event.target.checked);\n if (event.target.checked) {\n // Upon selection, open the master detail if available\n openMasterDetail?.();\n }\n };\n component = (\n <Checkbox\n className={cx({\n 'checkbox-on-hover': bDisplayOnHover\n })}\n checked={$selected || false}\n onChange={handleChange}\n disabled={disableSelection}\n aria-label={rowHeaderValue}\n />\n );\n }\n return (\n <StyledDivWrapper item onClick={onClick}>\n {component}\n </StyledDivWrapper>\n );\n};\n\nRowSelectHandle.propTypes = {\n getExecutionContext: PropTypes.func.isRequired,\n getRsMeta: PropTypes.func.isRequired,\n getDisableSelection: PropTypes.func.isRequired\n};\n\n// For a given column instance, getExecutionContext and getRsMeta functions will remain same between re-renders\nexport default memo(RowSelectHandle);\n"]}
@@ -1,3 +1,4 @@
1
1
  export function resolveCellComponent(type: any, renderFactory: any, props?: {}): false | import("react/jsx-runtime").JSX.Element | null;
2
2
  export function resolveViewComponent(type: any, renderFactory: any, props?: {}): import("react/jsx-runtime").JSX.Element | null;
3
+ export function resolveComponent(type: any, renderFactory: any, props?: {}): import("react/jsx-runtime").JSX.Element | null;
3
4
  //# sourceMappingURL=ComponentResolverFactory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ComponentResolverFactory.d.ts","sourceRoot":"","sources":["../../../../Core/Components/RenderingEngine/ComponentResolverFactory.js"],"names":[],"mappings":"AAgDA,wIAmBC;AAED,gIAKC"}
1
+ {"version":3,"file":"ComponentResolverFactory.d.ts","sourceRoot":"","sources":["../../../../Core/Components/RenderingEngine/ComponentResolverFactory.js"],"names":[],"mappings":"AAiDA,wIAmBC;AAED,gIAKC;AAED,4HAEC"}
@@ -13,7 +13,9 @@ function findValueWhichEqualsKey(obj, type, comp) {
13
13
  return obj[k];
14
14
  }
15
15
  function externalRendererResolution(comp, renderFactory, field) {
16
- return renderFactory && typeof renderFactory === 'function' ? renderFactory(comp, field) : comp;
16
+ if (!renderFactory || typeof renderFactory !== 'function')
17
+ return comp;
18
+ return field === undefined ? renderFactory(comp) : renderFactory(comp, field);
17
19
  }
18
20
  function render(comp, props, renderFactory, type, defaultComps) {
19
21
  // For cell renderer , we have a special case as there is only one way to change formatter / renderer from UI.
@@ -62,4 +64,7 @@ export function resolveViewComponent(type, renderFactory, props = {}) {
62
64
  const comp = meta[type];
63
65
  return render(comp, props, renderFactory, type, defaultComponents);
64
66
  }
67
+ export function resolveComponent(type, renderFactory, props = {}) {
68
+ return render(type, props, renderFactory, type, defaultComponents);
69
+ }
65
70
  //# sourceMappingURL=ComponentResolverFactory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ComponentResolverFactory.js","sourceRoot":"","sources":["../../../../Core/Components/RenderingEngine/ComponentResolverFactory.js"],"names":[],"mappings":"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","sourcesContent":["import defaultComponents, { defaultRenderer, extRenderer } from '../DefaultComponents';\n// TODO: check imports dependency cycle.\nfunction findValueWhichEqualsKey(obj, type, comp) {\n // As we are providing default set of cell renderers as well\n // First check for specific comp , if not present fallback to type.\n let k;\n if (comp) {\n k = Object.keys(obj).find(ki => comp.toLowerCase() === ki.toLowerCase());\n }\n if (!k) {\n k = Object.keys(obj).find(ki => type.toLowerCase() === ki.toLowerCase());\n }\n return obj[k];\n}\n\nfunction externalRendererResolution(comp, renderFactory, field) {\n return renderFactory && typeof renderFactory === 'function' ? renderFactory(comp, field) : comp;\n}\n\nfunction render(comp, props, renderFactory, type, defaultComps) {\n // For cell renderer , we have a special case as there is only one way to change formatter / renderer from UI.\n // So, If column renderer is not defined then fall back to field meta level renderer if any.\n const defComp = findValueWhichEqualsKey(defaultComps, type, comp);\n const field = props.getField?.();\n if (!comp) {\n return defaultRenderer(defComp, props);\n }\n\n let extComp;\n if (typeof comp === 'function') {\n extComp = comp;\n } else {\n extComp = externalRendererResolution(comp, renderFactory, field);\n }\n // UI List lib is now accepting extraProps from renderFactory, in case consumer wants to send extraProps to their cellRenderers.\n // renderFactory return type can either be a function or object that contains { component, props }.\n // Props passed in the object should be stamped to the cell renderer.\n if (\n typeof extComp === 'function' ||\n (extComp && typeof extComp === 'object' && typeof extComp.component === 'function')\n ) {\n const { component, props: extraProps = {} } =\n typeof extComp === 'object' ? extComp : { component: extComp };\n return extRenderer(component, { ...props, ...extraProps });\n }\n return defaultRenderer(defComp, props);\n}\n\nexport function resolveCellComponent(type, renderFactory, props = {}) {\n const { getField } = props;\n const field = getField();\n if (\n (type === 'pinRenderer' && !field.isPinningEnabled) ||\n (type === 'sortRenderer' && !field.sort) ||\n (type === 'columnResizer' && !field.resizable)\n ) {\n return false;\n }\n\n if (props.value === undefined && type === 'cellRenderer') {\n props.value = props.getFormattedValue?.();\n props.title = props.getToolTipValue?.();\n }\n // If any cell renderer is defined on props , prioritize it.\n const comp = (props && type === 'cellRenderer' && props.getCellRenderer?.()) || field[type];\n\n return render(comp, props, renderFactory, type, defaultComponents);\n}\n\nexport function resolveViewComponent(type, renderFactory, props = {}) {\n const { getMeta } = props;\n const meta = getMeta();\n const comp = meta[type];\n return render(comp, props, renderFactory, type, defaultComponents);\n}\n"]}
1
+ {"version":3,"file":"ComponentResolverFactory.js","sourceRoot":"","sources":["../../../../Core/Components/RenderingEngine/ComponentResolverFactory.js"],"names":[],"mappings":"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","sourcesContent":["import defaultComponents, { defaultRenderer, extRenderer } from '../DefaultComponents';\n// TODO: check imports dependency cycle.\nfunction findValueWhichEqualsKey(obj, type, comp) {\n // As we are providing default set of cell renderers as well\n // First check for specific comp , if not present fallback to type.\n let k;\n if (comp) {\n k = Object.keys(obj).find(ki => comp.toLowerCase() === ki.toLowerCase());\n }\n if (!k) {\n k = Object.keys(obj).find(ki => type.toLowerCase() === ki.toLowerCase());\n }\n return obj[k];\n}\n\nfunction externalRendererResolution(comp, renderFactory, field) {\n if (!renderFactory || typeof renderFactory !== 'function') return comp;\n return field === undefined ? renderFactory(comp) : renderFactory(comp, field);\n}\n\nfunction render(comp, props, renderFactory, type, defaultComps) {\n // For cell renderer , we have a special case as there is only one way to change formatter / renderer from UI.\n // So, If column renderer is not defined then fall back to field meta level renderer if any.\n const defComp = findValueWhichEqualsKey(defaultComps, type, comp);\n const field = props.getField?.();\n if (!comp) {\n return defaultRenderer(defComp, props);\n }\n\n let extComp;\n if (typeof comp === 'function') {\n extComp = comp;\n } else {\n extComp = externalRendererResolution(comp, renderFactory, field);\n }\n // UI List lib is now accepting extraProps from renderFactory, in case consumer wants to send extraProps to their cellRenderers.\n // renderFactory return type can either be a function or object that contains { component, props }.\n // Props passed in the object should be stamped to the cell renderer.\n if (\n typeof extComp === 'function' ||\n (extComp && typeof extComp === 'object' && typeof extComp.component === 'function')\n ) {\n const { component, props: extraProps = {} } =\n typeof extComp === 'object' ? extComp : { component: extComp };\n return extRenderer(component, { ...props, ...extraProps });\n }\n return defaultRenderer(defComp, props);\n}\n\nexport function resolveCellComponent(type, renderFactory, props = {}) {\n const { getField } = props;\n const field = getField();\n if (\n (type === 'pinRenderer' && !field.isPinningEnabled) ||\n (type === 'sortRenderer' && !field.sort) ||\n (type === 'columnResizer' && !field.resizable)\n ) {\n return false;\n }\n\n if (props.value === undefined && type === 'cellRenderer') {\n props.value = props.getFormattedValue?.();\n props.title = props.getToolTipValue?.();\n }\n // If any cell renderer is defined on props , prioritize it.\n const comp = (props && type === 'cellRenderer' && props.getCellRenderer?.()) || field[type];\n\n return render(comp, props, renderFactory, type, defaultComponents);\n}\n\nexport function resolveViewComponent(type, renderFactory, props = {}) {\n const { getMeta } = props;\n const meta = getMeta();\n const comp = meta[type];\n return render(comp, props, renderFactory, type, defaultComponents);\n}\n\nexport function resolveComponent(type, renderFactory, props = {}) {\n return render(type, props, renderFactory, type, defaultComponents);\n}\n"]}
@@ -46,7 +46,7 @@ const PAGINATION_TRIGGER_RATIOS = {
46
46
  down: 0.9,
47
47
  up: 0.1
48
48
  };
49
- const VirtualizeInfinite = forwardRef(({ id, viewHeight, viewWidth, itemHeight, callback, rowContainerClass, children, renderHeader, renderFooter, state, bufferMultiplier, viewMaxHeight, showLoadingIndicator, resetCount, countUpdateCallback, isFetching, hasMoreResults, renderEmptyRecords }, inputRef) => {
49
+ const VirtualizeInfinite = forwardRef(({ id, viewHeight, viewWidth, minHeight, itemHeight, callback, rowContainerClass, children, renderHeader, renderFooter, state, bufferMultiplier, viewMaxHeight, showLoadingIndicator, resetCount, countUpdateCallback, isFetching, hasMoreResults, renderEmptyRecords }, inputRef) => {
50
50
  const rowBuffer = 5;
51
51
  const [rContainerDimensionUpdate, setRContainerDimensionUpdate] = useState();
52
52
  const [loadingIndicatorInfo, setLoadingIndicatorInfo] = useState({});
@@ -253,7 +253,7 @@ const VirtualizeInfinite = forwardRef(({ id, viewHeight, viewWidth, itemHeight,
253
253
  ]);
254
254
  return (_jsxs(StyledPContainer, { "$style": {
255
255
  maxHeight,
256
- minHeight: !vi.totalRowsLoaded ? '100px' : 'auto',
256
+ minHeight: !vi.totalRowsLoaded ? '100px' : minHeight ?? 'auto',
257
257
  renderFooter,
258
258
  itemHeight,
259
259
  height,
@@ -278,6 +278,7 @@ VirtualizeInfinite.propTypes = {
278
278
  id: PropTypes.string.isRequired,
279
279
  viewHeight: PropTypes.number,
280
280
  viewWidth: PropTypes.number,
281
+ minHeight: PropTypes.string,
281
282
  itemHeight: PropTypes.number,
282
283
  callback: PropTypes.func,
283
284
  isFetching: PropTypes.bool,
@@ -304,6 +305,7 @@ VirtualizeInfinite.defaultProps = {
304
305
  hasMoreResults: false,
305
306
  rowContainerClass: '',
306
307
  viewWidth: 0,
308
+ minHeight: undefined,
307
309
  itemHeight: 40,
308
310
  renderHeader: null,
309
311
  renderFooter: null,
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualizeInfinite.js","sourceRoot":"","sources":["../../../../Core/Components/Virtualise/VirtualizeInfinite.jsx"],"names":[],"mappings":"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","sourcesContent":["import {\n forwardRef,\n memo,\n useEffect,\n useRef,\n useCallback,\n useImperativeHandle,\n useMemo,\n useLayoutEffect,\n useState\n} from 'react';\nimport Styled from 'styled-components';\nimport PropTypes from 'prop-types';\n\nimport { defaultThemeProp, Progress } from '@pega/cosmos-react-core';\nimport { isEmpty } from 'pega-repeating-structures-core';\n\nimport useTranslate from '../../Hooks/useTranslate';\nimport { StyledSkeletonRow } from '../../Views/Table/SkeletonRows';\n\nimport getPaginationInfo from './Pagination';\nimport useScroll from './UseScroll';\nimport {\n getCurrentEstimation,\n getRecordCountForLayoutPaint,\n getValueWithUnit,\n getMaxHeight,\n isViewNotFilled,\n setAttributesOnItems,\n updateRowContainerTop\n} from './utility';\nimport useResizeObserver from './UseResizeObserver';\n\nfunction getBContainerMinHeight(props) {\n return props.$style.renderFooter ? `calc(100% - ${2 * props.$style.itemHeight + 1}px) ` : '0';\n}\n\nconst StyledPContainer = Styled.div`\n position: relative;\n overflow: auto;\n max-height: ${props => props.$style.maxHeight};\n width: ${props => props.$style.width};\n height: ${props => props.$style.height};\n min-height: ${props => props.$style.minHeight};\n border-radius: inherit;\n\n &:has(${StyledSkeletonRow}) {\n overflow: hidden;\n }\n\n .bContainer {\n position: relative;\n min-height: ${props => getBContainerMinHeight(props)};\n border-radius: inherit;\n }\n`;\n\nStyledPContainer.defaultProps = defaultThemeProp;\n\nconst StyledLoader = Styled.div`\n display: flex;\n justify-content: center;\n padding: 0.5rem;\n position: absolute;\n width: 100%;\n top: ${props => props.$style.top};\n bottom: ${props => props.$style.bottom};\n`;\n\nconst PAGINATION_TRIGGER_RATIOS = {\n down: 0.9,\n up: 0.1\n};\n\nconst VirtualizeInfinite = forwardRef(\n (\n {\n id,\n viewHeight,\n viewWidth,\n itemHeight,\n callback,\n rowContainerClass,\n children,\n renderHeader,\n renderFooter,\n state,\n bufferMultiplier,\n viewMaxHeight,\n showLoadingIndicator,\n resetCount,\n countUpdateCallback,\n isFetching,\n hasMoreResults,\n renderEmptyRecords\n },\n inputRef\n ) => {\n const rowBuffer = 5;\n\n const [rContainerDimensionUpdate, setRContainerDimensionUpdate] = useState();\n const [loadingIndicatorInfo, setLoadingIndicatorInfo] = useState({});\n const [translate] = useTranslate();\n\n // Create ref to store virtualize related data.\n const vi = useRef({\n itemHeight,\n bufferMultiplier,\n pInfo: {},\n totalRowsLoaded: undefined,\n isInitialized: false\n }).current;\n\n // tracking both state and pInfo.view to identify the initialization as in case of fullscreen, state will be available but pInfo.view won't\n const isInitialized = state && !!Object.keys(vi.pInfo.view ?? {}).length;\n\n const getTotalRowsIncludingBuffer = useCallback(() => {\n if (isEmpty(vi.totalRowsLoaded)) return;\n return hasMoreResults ? vi.totalRowsLoaded + rowBuffer : vi.totalRowsLoaded;\n }, [vi.totalRowsLoaded, hasMoreResults]);\n\n const getRowContainer = useCallback(() => vi.rContainer, [vi.rContainer]);\n const getPContainer = useCallback(() => vi.pContainer, [vi.pContainer]);\n const getBContainer = useCallback(() => vi.bContainer, [vi.bContainer]);\n\n // API used when user want to scroll to top programmatically.\n // Though component auto scroll to top if no element is in view.\n // But calling this API upfront might save one extra call to Fetch API.\n const scrollToTop = useCallback(() => {\n if (!isInitialized) return;\n getPContainer().scrollTop = 0;\n vi.pInfo = getPaginationInfo(\n getPContainer(),\n getRecordCountForLayoutPaint(getTotalRowsIncludingBuffer()),\n vi,\n false,\n true\n );\n callback({ ...vi.pInfo.view, id }, { takeLatestAction: true });\n }, [id, vi, getPContainer, callback, isInitialized]);\n\n // expose APIs and properties here to help client to communicate.\n useImperativeHandle(inputRef, () => ({\n getParentContainer: getPContainer,\n scrollToTop,\n vi,\n id\n }));\n\n const { width, height } = useMemo(\n () => ({\n width: getValueWithUnit(viewWidth, '100%'),\n height: getValueWithUnit(viewHeight, 'auto')\n }),\n [viewWidth, viewHeight]\n );\n\n const maxHeight = useMemo(() => getMaxHeight(viewMaxHeight), [viewMaxHeight]);\n\n // Calculate the pagination indexes and notify callback.\n // resetIsFetchingWhenNoNewIndexes - flag specific for isViewNotFilled\n // If view is not filled, we want to call this but resting isFetch to false\n // goes to this method when callback is note fired.\n const getPagination = useCallback(\n (isRefresh = false, resetIsFetchingWhenNoNewIndexes = false) => {\n if (!isFetching || resetIsFetchingWhenNoNewIndexes) {\n const pInfo = getPaginationInfo(\n getPContainer(),\n getRecordCountForLayoutPaint(getTotalRowsIncludingBuffer()),\n vi,\n isRefresh,\n true\n );\n const { startIndex, endIndex } = pInfo.view;\n // if new indexes are subset of existing state indexes, no need to update the consumer.\n if (\n isRefresh ||\n !state ||\n !(startIndex >= state.startIndex && endIndex <= state.endIndex)\n ) {\n vi.pInfo = pInfo;\n if (state) {\n const { startIndex: oldStartIndex, endIndex: oldEndIndex } = state;\n if (startIndex < oldStartIndex) {\n setLoadingIndicatorInfo(info => {\n return { ...info, isScrollingUp: true };\n });\n }\n if (endIndex > oldEndIndex) {\n setLoadingIndicatorInfo(info => {\n return { ...info, isScrollingDown: true };\n });\n }\n }\n\n callback({ ...vi.pInfo.view, id }, { takeLatestAction: true });\n } else if (resetIsFetchingWhenNoNewIndexes) {\n setLoadingIndicatorInfo({});\n }\n }\n },\n [isFetching, getPContainer, getTotalRowsIncludingBuffer, vi, state, callback, id]\n );\n\n // update average stats for next calculation.\n const updateAvarageInVirtualizeInstance = useCallback(\n currentEstimation => {\n const { itemCount, rowContainerHeight, averageNumberOfItemsInARow, averageRowHeight } =\n currentEstimation;\n Object.assign(vi, {\n itemCount: (itemCount + vi.itemCount || itemCount) / 2,\n rowContainerHeight:\n (rowContainerHeight + vi.rowContainerHeight || rowContainerHeight) / 2,\n averageNumberOfItemsInARow:\n (averageNumberOfItemsInARow + vi.averageNumberOfItemsInARow ||\n averageNumberOfItemsInARow) / 2,\n averageRowHeight: (averageRowHeight + vi.averageRowHeight || averageRowHeight) / 2\n });\n },\n [vi]\n );\n\n const getBufferHeight = useCallback(\n currentEstimation => {\n const { itemCount, rowContainerHeight } = currentEstimation;\n let h = 0;\n if (itemCount > 0)\n h =\n (getRecordCountForLayoutPaint(getTotalRowsIncludingBuffer()) / itemCount) *\n rowContainerHeight;\n return h;\n },\n [getTotalRowsIncludingBuffer]\n );\n\n const getScrollTop = useCallback(\n currentEstimation => {\n const { itemCount, rowContainerHeight } = currentEstimation;\n let scrollTop = 0;\n if (itemCount > 0) {\n const scrollNodeTopChange =\n // eslint-disable-next-line no-unsafe-optional-chaining\n vi.pInfo?.bufferNewCords?.top - vi.pInfo?.bufferOldCords?.top || 0;\n scrollTop = (vi.pInfo.topRowIndex / itemCount) * rowContainerHeight - scrollNodeTopChange;\n }\n return scrollTop;\n },\n [vi]\n );\n\n const onRowContainerDimensionChange = useCallback(() => {\n const { height: rowContainerHeight, width: rowContainerWidth } =\n getRowContainer()?.getBoundingClientRect() ?? {};\n // trigger virtualizer operations only when row container has some height and width\n if (rowContainerHeight && rowContainerWidth) setRContainerDimensionUpdate({});\n }, [getRowContainer]);\n\n useResizeObserver(getRowContainer, onRowContainerDimensionChange);\n\n const [updateScrollTop] = useScroll(\n getPagination,\n getPContainer,\n vi,\n getTotalRowsIncludingBuffer(),\n renderHeader,\n isFetching,\n viewHeight,\n PAGINATION_TRIGGER_RATIOS\n );\n\n useLayoutEffect(() => {\n const rContainer = getRowContainer();\n if (state && state.startIndex >= 0 && vi && rContainer) {\n setAttributesOnItems(state, rContainer);\n }\n });\n\n useLayoutEffect(() => {\n if (isFetching || !isInitialized) return;\n\n const rowElements = Array.from(getRowContainer().children || []).filter(a =>\n a.hasAttribute('data-key')\n );\n if (!rowElements.length) {\n vi.totalRowsLoaded = 0;\n return;\n }\n\n const lastRow = rowElements[rowElements.length - 1];\n const lastRowDataIndex = parseInt(lastRow.getAttribute('data-index'), 10);\n const newCount = hasMoreResults ? lastRowDataIndex + 1 + rowBuffer : lastRowDataIndex + 1;\n\n // if user is scrolling up/down within the already encountered records, the record count shouldn't update\n if (newCount < getTotalRowsIncludingBuffer() && !resetCount) return;\n\n vi.totalRowsLoaded = lastRowDataIndex + 1;\n countUpdateCallback(vi.totalRowsLoaded);\n }, [children, isFetching]);\n\n // Get estimate and update buffer height\n useLayoutEffect(() => {\n if (!isInitialized) return;\n\n vi.currentEstimation = getCurrentEstimation(getRowContainer(), true);\n updateAvarageInVirtualizeInstance(vi.currentEstimation);\n const h = getBufferHeight(vi.currentEstimation);\n getBContainer().style.height = `${h}px`;\n }, [\n vi,\n children,\n rContainerDimensionUpdate,\n getBContainer,\n getBufferHeight,\n getRowContainer,\n getTotalRowsIncludingBuffer,\n updateAvarageInVirtualizeInstance\n ]);\n\n useLayoutEffect(() => {\n if (isFetching || !isInitialized) return;\n\n const pContainer = getPContainer();\n const scrollTop = getScrollTop(vi.currentEstimation);\n if (vi.pInfo.view.startIndex !== 0) pContainer.scrollTop = scrollTop;\n\n // Setting scrollTop from pContainer.scrollTop as getScrollTop can return value with higher decimal accuracy.\n // but scrollTop attribute from HTML element will round it automatically.\n updateScrollTop(pContainer.scrollTop);\n updateRowContainerTop(\n vi,\n getRecordCountForLayoutPaint(getTotalRowsIncludingBuffer()),\n state,\n pContainer,\n pContainer.scrollTop\n );\n }, [\n vi,\n state,\n isFetching,\n getScrollTop,\n getPContainer,\n updateScrollTop,\n getTotalRowsIncludingBuffer\n ]);\n\n // On mount that means state is not initialized yet, trigger pagination.\n // or whenever count changes or width /height of view port changes, if view is not filled with data, get indexes again.\n useEffect(() => {\n if (isFetching) return;\n\n if (!isInitialized) {\n getPagination(true);\n return;\n }\n\n if (\n isViewNotFilled(\n getRecordCountForLayoutPaint(getTotalRowsIncludingBuffer()),\n vi,\n getPContainer(),\n renderHeader\n )\n ) {\n getPagination(false, true);\n } else {\n setLoadingIndicatorInfo({});\n }\n }, [\n vi,\n isFetching,\n children,\n viewWidth,\n viewHeight,\n renderHeader,\n rContainerDimensionUpdate,\n getPagination,\n getPContainer,\n getTotalRowsIncludingBuffer\n ]);\n\n return (\n <StyledPContainer\n $style={{\n maxHeight,\n minHeight: !vi.totalRowsLoaded ? '100px' : 'auto',\n renderFooter,\n itemHeight,\n height,\n width\n }}\n data-total-records={vi.totalRowsLoaded}\n className='pContainer'\n ref={c => {\n vi.pContainer = c;\n }}\n >\n {renderHeader && renderHeader()}\n <div\n className='bContainer'\n ref={c => {\n vi.bContainer = c;\n }}\n >\n <div\n className={`${rowContainerClass} row-container`}\n ref={c => {\n vi.rContainer = c;\n }}\n role='rowgroup'\n >\n {/* Show loader only when there are some rows otherwise the parent spinner on RS should appear.\n Since in case of infinite table, totalRowsLoaded is derived from the rows only, using totalRowsLoaded here. */}\n {vi.totalRowsLoaded >= 0 &&\n showLoadingIndicator &&\n isFetching &&\n loadingIndicatorInfo.isScrollingUp && (\n <StyledLoader $style={{ bottom: '100%' }}>\n <Progress\n className='above-loader'\n placement='block'\n tabIndex={0}\n aria-label={translate('Loading more results')}\n />\n </StyledLoader>\n )}\n {children}\n {vi.totalRowsLoaded >= 0 &&\n showLoadingIndicator &&\n isFetching &&\n loadingIndicatorInfo.isScrollingDown && (\n <StyledLoader $style={{ top: '100%' }}>\n <Progress\n className='below-loader'\n placement='block'\n tabIndex={0}\n aria-label={translate('Loading more results')}\n />\n </StyledLoader>\n )}\n </div>\n </div>\n {vi.totalRowsLoaded === 0 && !isFetching\n ? renderEmptyRecords && renderEmptyRecords()\n : null}\n {renderFooter && renderFooter()}\n </StyledPContainer>\n );\n }\n);\n\nVirtualizeInfinite.propTypes = {\n id: PropTypes.string.isRequired,\n viewHeight: PropTypes.number,\n viewWidth: PropTypes.number,\n itemHeight: PropTypes.number,\n callback: PropTypes.func,\n isFetching: PropTypes.bool,\n hasMoreResults: PropTypes.bool,\n rowContainerClass: PropTypes.string,\n children: PropTypes.oneOfType([PropTypes.object, PropTypes.array]).isRequired,\n renderHeader: PropTypes.func,\n renderFooter: PropTypes.func,\n state: PropTypes.shape({\n startIndex: PropTypes.number,\n endIndex: PropTypes.number\n }),\n bufferMultiplier: PropTypes.number,\n viewMaxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n showLoadingIndicator: PropTypes.bool,\n resetCount: PropTypes.bool,\n countUpdateCallback: PropTypes.func,\n renderEmptyRecords: PropTypes.func\n};\n\nVirtualizeInfinite.defaultProps = {\n bufferMultiplier: 2,\n callback: () => {},\n isFetching: false,\n hasMoreResults: false,\n rowContainerClass: '',\n viewWidth: 0,\n itemHeight: 40,\n renderHeader: null,\n renderFooter: null,\n state: undefined,\n viewMaxHeight: undefined,\n showLoadingIndicator: false,\n resetCount: false,\n countUpdateCallback: () => {},\n renderEmptyRecords: null\n};\n\nVirtualizeInfinite.displayName = 'VirtualizeInfinite';\n\nexport default memo(VirtualizeInfinite);\n"]}
1
+ {"version":3,"file":"VirtualizeInfinite.js","sourceRoot":"","sources":["../../../../Core/Components/Virtualise/VirtualizeInfinite.jsx"],"names":[],"mappings":"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","sourcesContent":["import {\n forwardRef,\n memo,\n useEffect,\n useRef,\n useCallback,\n useImperativeHandle,\n useMemo,\n useLayoutEffect,\n useState\n} from 'react';\nimport Styled from 'styled-components';\nimport PropTypes from 'prop-types';\n\nimport { defaultThemeProp, Progress } from '@pega/cosmos-react-core';\nimport { isEmpty } from 'pega-repeating-structures-core';\n\nimport useTranslate from '../../Hooks/useTranslate';\nimport { StyledSkeletonRow } from '../../Views/Table/SkeletonRows';\n\nimport getPaginationInfo from './Pagination';\nimport useScroll from './UseScroll';\nimport {\n getCurrentEstimation,\n getRecordCountForLayoutPaint,\n getValueWithUnit,\n getMaxHeight,\n isViewNotFilled,\n setAttributesOnItems,\n updateRowContainerTop\n} from './utility';\nimport useResizeObserver from './UseResizeObserver';\n\nfunction getBContainerMinHeight(props) {\n return props.$style.renderFooter ? `calc(100% - ${2 * props.$style.itemHeight + 1}px) ` : '0';\n}\n\nconst StyledPContainer = Styled.div`\n position: relative;\n overflow: auto;\n max-height: ${props => props.$style.maxHeight};\n width: ${props => props.$style.width};\n height: ${props => props.$style.height};\n min-height: ${props => props.$style.minHeight};\n border-radius: inherit;\n\n &:has(${StyledSkeletonRow}) {\n overflow: hidden;\n }\n\n .bContainer {\n position: relative;\n min-height: ${props => getBContainerMinHeight(props)};\n border-radius: inherit;\n }\n`;\n\nStyledPContainer.defaultProps = defaultThemeProp;\n\nconst StyledLoader = Styled.div`\n display: flex;\n justify-content: center;\n padding: 0.5rem;\n position: absolute;\n width: 100%;\n top: ${props => props.$style.top};\n bottom: ${props => props.$style.bottom};\n`;\n\nconst PAGINATION_TRIGGER_RATIOS = {\n down: 0.9,\n up: 0.1\n};\n\nconst VirtualizeInfinite = forwardRef(\n (\n {\n id,\n viewHeight,\n viewWidth,\n minHeight,\n itemHeight,\n callback,\n rowContainerClass,\n children,\n renderHeader,\n renderFooter,\n state,\n bufferMultiplier,\n viewMaxHeight,\n showLoadingIndicator,\n resetCount,\n countUpdateCallback,\n isFetching,\n hasMoreResults,\n renderEmptyRecords\n },\n inputRef\n ) => {\n const rowBuffer = 5;\n\n const [rContainerDimensionUpdate, setRContainerDimensionUpdate] = useState();\n const [loadingIndicatorInfo, setLoadingIndicatorInfo] = useState({});\n const [translate] = useTranslate();\n\n // Create ref to store virtualize related data.\n const vi = useRef({\n itemHeight,\n bufferMultiplier,\n pInfo: {},\n totalRowsLoaded: undefined,\n isInitialized: false\n }).current;\n\n // tracking both state and pInfo.view to identify the initialization as in case of fullscreen, state will be available but pInfo.view won't\n const isInitialized = state && !!Object.keys(vi.pInfo.view ?? {}).length;\n\n const getTotalRowsIncludingBuffer = useCallback(() => {\n if (isEmpty(vi.totalRowsLoaded)) return;\n return hasMoreResults ? vi.totalRowsLoaded + rowBuffer : vi.totalRowsLoaded;\n }, [vi.totalRowsLoaded, hasMoreResults]);\n\n const getRowContainer = useCallback(() => vi.rContainer, [vi.rContainer]);\n const getPContainer = useCallback(() => vi.pContainer, [vi.pContainer]);\n const getBContainer = useCallback(() => vi.bContainer, [vi.bContainer]);\n\n // API used when user want to scroll to top programmatically.\n // Though component auto scroll to top if no element is in view.\n // But calling this API upfront might save one extra call to Fetch API.\n const scrollToTop = useCallback(() => {\n if (!isInitialized) return;\n getPContainer().scrollTop = 0;\n vi.pInfo = getPaginationInfo(\n getPContainer(),\n getRecordCountForLayoutPaint(getTotalRowsIncludingBuffer()),\n vi,\n false,\n true\n );\n callback({ ...vi.pInfo.view, id }, { takeLatestAction: true });\n }, [id, vi, getPContainer, callback, isInitialized]);\n\n // expose APIs and properties here to help client to communicate.\n useImperativeHandle(inputRef, () => ({\n getParentContainer: getPContainer,\n scrollToTop,\n vi,\n id\n }));\n\n const { width, height } = useMemo(\n () => ({\n width: getValueWithUnit(viewWidth, '100%'),\n height: getValueWithUnit(viewHeight, 'auto')\n }),\n [viewWidth, viewHeight]\n );\n\n const maxHeight = useMemo(() => getMaxHeight(viewMaxHeight), [viewMaxHeight]);\n\n // Calculate the pagination indexes and notify callback.\n // resetIsFetchingWhenNoNewIndexes - flag specific for isViewNotFilled\n // If view is not filled, we want to call this but resting isFetch to false\n // goes to this method when callback is note fired.\n const getPagination = useCallback(\n (isRefresh = false, resetIsFetchingWhenNoNewIndexes = false) => {\n if (!isFetching || resetIsFetchingWhenNoNewIndexes) {\n const pInfo = getPaginationInfo(\n getPContainer(),\n getRecordCountForLayoutPaint(getTotalRowsIncludingBuffer()),\n vi,\n isRefresh,\n true\n );\n const { startIndex, endIndex } = pInfo.view;\n // if new indexes are subset of existing state indexes, no need to update the consumer.\n if (\n isRefresh ||\n !state ||\n !(startIndex >= state.startIndex && endIndex <= state.endIndex)\n ) {\n vi.pInfo = pInfo;\n if (state) {\n const { startIndex: oldStartIndex, endIndex: oldEndIndex } = state;\n if (startIndex < oldStartIndex) {\n setLoadingIndicatorInfo(info => {\n return { ...info, isScrollingUp: true };\n });\n }\n if (endIndex > oldEndIndex) {\n setLoadingIndicatorInfo(info => {\n return { ...info, isScrollingDown: true };\n });\n }\n }\n\n callback({ ...vi.pInfo.view, id }, { takeLatestAction: true });\n } else if (resetIsFetchingWhenNoNewIndexes) {\n setLoadingIndicatorInfo({});\n }\n }\n },\n [isFetching, getPContainer, getTotalRowsIncludingBuffer, vi, state, callback, id]\n );\n\n // update average stats for next calculation.\n const updateAvarageInVirtualizeInstance = useCallback(\n currentEstimation => {\n const { itemCount, rowContainerHeight, averageNumberOfItemsInARow, averageRowHeight } =\n currentEstimation;\n Object.assign(vi, {\n itemCount: (itemCount + vi.itemCount || itemCount) / 2,\n rowContainerHeight:\n (rowContainerHeight + vi.rowContainerHeight || rowContainerHeight) / 2,\n averageNumberOfItemsInARow:\n (averageNumberOfItemsInARow + vi.averageNumberOfItemsInARow ||\n averageNumberOfItemsInARow) / 2,\n averageRowHeight: (averageRowHeight + vi.averageRowHeight || averageRowHeight) / 2\n });\n },\n [vi]\n );\n\n const getBufferHeight = useCallback(\n currentEstimation => {\n const { itemCount, rowContainerHeight } = currentEstimation;\n let h = 0;\n if (itemCount > 0)\n h =\n (getRecordCountForLayoutPaint(getTotalRowsIncludingBuffer()) / itemCount) *\n rowContainerHeight;\n return h;\n },\n [getTotalRowsIncludingBuffer]\n );\n\n const getScrollTop = useCallback(\n currentEstimation => {\n const { itemCount, rowContainerHeight } = currentEstimation;\n let scrollTop = 0;\n if (itemCount > 0) {\n const scrollNodeTopChange =\n // eslint-disable-next-line no-unsafe-optional-chaining\n vi.pInfo?.bufferNewCords?.top - vi.pInfo?.bufferOldCords?.top || 0;\n scrollTop = (vi.pInfo.topRowIndex / itemCount) * rowContainerHeight - scrollNodeTopChange;\n }\n return scrollTop;\n },\n [vi]\n );\n\n const onRowContainerDimensionChange = useCallback(() => {\n const { height: rowContainerHeight, width: rowContainerWidth } =\n getRowContainer()?.getBoundingClientRect() ?? {};\n // trigger virtualizer operations only when row container has some height and width\n if (rowContainerHeight && rowContainerWidth) setRContainerDimensionUpdate({});\n }, [getRowContainer]);\n\n useResizeObserver(getRowContainer, onRowContainerDimensionChange);\n\n const [updateScrollTop] = useScroll(\n getPagination,\n getPContainer,\n vi,\n getTotalRowsIncludingBuffer(),\n renderHeader,\n isFetching,\n viewHeight,\n PAGINATION_TRIGGER_RATIOS\n );\n\n useLayoutEffect(() => {\n const rContainer = getRowContainer();\n if (state && state.startIndex >= 0 && vi && rContainer) {\n setAttributesOnItems(state, rContainer);\n }\n });\n\n useLayoutEffect(() => {\n if (isFetching || !isInitialized) return;\n\n const rowElements = Array.from(getRowContainer().children || []).filter(a =>\n a.hasAttribute('data-key')\n );\n if (!rowElements.length) {\n vi.totalRowsLoaded = 0;\n return;\n }\n\n const lastRow = rowElements[rowElements.length - 1];\n const lastRowDataIndex = parseInt(lastRow.getAttribute('data-index'), 10);\n const newCount = hasMoreResults ? lastRowDataIndex + 1 + rowBuffer : lastRowDataIndex + 1;\n\n // if user is scrolling up/down within the already encountered records, the record count shouldn't update\n if (newCount < getTotalRowsIncludingBuffer() && !resetCount) return;\n\n vi.totalRowsLoaded = lastRowDataIndex + 1;\n countUpdateCallback(vi.totalRowsLoaded);\n }, [children, isFetching]);\n\n // Get estimate and update buffer height\n useLayoutEffect(() => {\n if (!isInitialized) return;\n\n vi.currentEstimation = getCurrentEstimation(getRowContainer(), true);\n updateAvarageInVirtualizeInstance(vi.currentEstimation);\n const h = getBufferHeight(vi.currentEstimation);\n getBContainer().style.height = `${h}px`;\n }, [\n vi,\n children,\n rContainerDimensionUpdate,\n getBContainer,\n getBufferHeight,\n getRowContainer,\n getTotalRowsIncludingBuffer,\n updateAvarageInVirtualizeInstance\n ]);\n\n useLayoutEffect(() => {\n if (isFetching || !isInitialized) return;\n\n const pContainer = getPContainer();\n const scrollTop = getScrollTop(vi.currentEstimation);\n if (vi.pInfo.view.startIndex !== 0) pContainer.scrollTop = scrollTop;\n\n // Setting scrollTop from pContainer.scrollTop as getScrollTop can return value with higher decimal accuracy.\n // but scrollTop attribute from HTML element will round it automatically.\n updateScrollTop(pContainer.scrollTop);\n updateRowContainerTop(\n vi,\n getRecordCountForLayoutPaint(getTotalRowsIncludingBuffer()),\n state,\n pContainer,\n pContainer.scrollTop\n );\n }, [\n vi,\n state,\n isFetching,\n getScrollTop,\n getPContainer,\n updateScrollTop,\n getTotalRowsIncludingBuffer\n ]);\n\n // On mount that means state is not initialized yet, trigger pagination.\n // or whenever count changes or width /height of view port changes, if view is not filled with data, get indexes again.\n useEffect(() => {\n if (isFetching) return;\n\n if (!isInitialized) {\n getPagination(true);\n return;\n }\n\n if (\n isViewNotFilled(\n getRecordCountForLayoutPaint(getTotalRowsIncludingBuffer()),\n vi,\n getPContainer(),\n renderHeader\n )\n ) {\n getPagination(false, true);\n } else {\n setLoadingIndicatorInfo({});\n }\n }, [\n vi,\n isFetching,\n children,\n viewWidth,\n viewHeight,\n renderHeader,\n rContainerDimensionUpdate,\n getPagination,\n getPContainer,\n getTotalRowsIncludingBuffer\n ]);\n\n return (\n <StyledPContainer\n $style={{\n maxHeight,\n minHeight: !vi.totalRowsLoaded ? '100px' : minHeight ?? 'auto',\n renderFooter,\n itemHeight,\n height,\n width\n }}\n data-total-records={vi.totalRowsLoaded}\n className='pContainer'\n ref={c => {\n vi.pContainer = c;\n }}\n >\n {renderHeader && renderHeader()}\n <div\n className='bContainer'\n ref={c => {\n vi.bContainer = c;\n }}\n >\n <div\n className={`${rowContainerClass} row-container`}\n ref={c => {\n vi.rContainer = c;\n }}\n role='rowgroup'\n >\n {/* Show loader only when there are some rows otherwise the parent spinner on RS should appear.\n Since in case of infinite table, totalRowsLoaded is derived from the rows only, using totalRowsLoaded here. */}\n {vi.totalRowsLoaded >= 0 &&\n showLoadingIndicator &&\n isFetching &&\n loadingIndicatorInfo.isScrollingUp && (\n <StyledLoader $style={{ bottom: '100%' }}>\n <Progress\n className='above-loader'\n placement='block'\n tabIndex={0}\n aria-label={translate('Loading more results')}\n />\n </StyledLoader>\n )}\n {children}\n {vi.totalRowsLoaded >= 0 &&\n showLoadingIndicator &&\n isFetching &&\n loadingIndicatorInfo.isScrollingDown && (\n <StyledLoader $style={{ top: '100%' }}>\n <Progress\n className='below-loader'\n placement='block'\n tabIndex={0}\n aria-label={translate('Loading more results')}\n />\n </StyledLoader>\n )}\n </div>\n </div>\n {vi.totalRowsLoaded === 0 && !isFetching\n ? renderEmptyRecords && renderEmptyRecords()\n : null}\n {renderFooter && renderFooter()}\n </StyledPContainer>\n );\n }\n);\n\nVirtualizeInfinite.propTypes = {\n id: PropTypes.string.isRequired,\n viewHeight: PropTypes.number,\n viewWidth: PropTypes.number,\n minHeight: PropTypes.string,\n itemHeight: PropTypes.number,\n callback: PropTypes.func,\n isFetching: PropTypes.bool,\n hasMoreResults: PropTypes.bool,\n rowContainerClass: PropTypes.string,\n children: PropTypes.oneOfType([PropTypes.object, PropTypes.array]).isRequired,\n renderHeader: PropTypes.func,\n renderFooter: PropTypes.func,\n state: PropTypes.shape({\n startIndex: PropTypes.number,\n endIndex: PropTypes.number\n }),\n bufferMultiplier: PropTypes.number,\n viewMaxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n showLoadingIndicator: PropTypes.bool,\n resetCount: PropTypes.bool,\n countUpdateCallback: PropTypes.func,\n renderEmptyRecords: PropTypes.func\n};\n\nVirtualizeInfinite.defaultProps = {\n bufferMultiplier: 2,\n callback: () => {},\n isFetching: false,\n hasMoreResults: false,\n rowContainerClass: '',\n viewWidth: 0,\n minHeight: undefined,\n itemHeight: 40,\n renderHeader: null,\n renderFooter: null,\n state: undefined,\n viewMaxHeight: undefined,\n showLoadingIndicator: false,\n resetCount: false,\n countUpdateCallback: () => {},\n renderEmptyRecords: null\n};\n\nVirtualizeInfinite.displayName = 'VirtualizeInfinite';\n\nexport default memo(VirtualizeInfinite);\n"]}
@@ -51,7 +51,7 @@ const StyledLoader = Styled.div `
51
51
  left: ${props => `var(${props.$style.left})`};
52
52
  top: ${props => `var(${props.$style.top})`};
53
53
  `;
54
- const Virtualize = forwardRef(({ id, viewHeight, viewWidth, totalRecordCount, itemHeight, callback, isFetching, rowContainerClass, children, renderHeader, renderFooter, state, bufferMultiplier, viewMaxHeight, showLoadingIndicator, renderEmptyRecords }, inputRef) => {
54
+ const Virtualize = forwardRef(({ id, viewHeight, viewWidth, minHeight, totalRecordCount, itemHeight, callback, isFetching, rowContainerClass, children, renderHeader, renderFooter, state, bufferMultiplier, viewMaxHeight, showLoadingIndicator, renderEmptyRecords }, inputRef) => {
55
55
  const [rContainerDimensionUpdate, setRContainerDimensionUpdate] = useState();
56
56
  const [loadingIndicatorInfo, setLoadingIndicatorInfo] = useState({});
57
57
  const [translate] = useTranslate();
@@ -86,7 +86,7 @@ const Virtualize = forwardRef(({ id, viewHeight, viewWidth, totalRecordCount, it
86
86
  height: getValueWithUnit(viewHeight, 'auto')
87
87
  }), [viewWidth, viewHeight]);
88
88
  const maxHeight = useMemo(() => getMaxHeight(viewMaxHeight), [viewMaxHeight]);
89
- const minHeight = useMemo(() => (!totalRecordCount ? '100px' : 'auto'), [totalRecordCount]);
89
+ const resolvedMinHeight = useMemo(() => (!totalRecordCount ? '100px' : minHeight ?? 'auto'), [totalRecordCount, minHeight]);
90
90
  // Calculate the pagination indexes and notify callback.
91
91
  // resetIsFetchingWhenNoNewIndexes - flag specific for isViewNotFilled
92
92
  // If view is not filled, we want to call this but restting isFetch to false
@@ -253,7 +253,7 @@ const Virtualize = forwardRef(({ id, viewHeight, viewWidth, totalRecordCount, it
253
253
  }, [isFetching, getPContainer()?.scrollLeft]);
254
254
  return (_jsxs(StyledPContainer, { "$style": {
255
255
  maxHeight,
256
- minHeight,
256
+ minHeight: resolvedMinHeight,
257
257
  renderFooter,
258
258
  itemHeight,
259
259
  height,
@@ -282,6 +282,7 @@ Virtualize.propTypes = {
282
282
  id: PropTypes.string.isRequired,
283
283
  viewHeight: PropTypes.number,
284
284
  viewWidth: PropTypes.number,
285
+ minHeight: PropTypes.string,
285
286
  totalRecordCount: PropTypes.number,
286
287
  itemHeight: PropTypes.number,
287
288
  callback: PropTypes.func,
@@ -305,6 +306,7 @@ Virtualize.defaultProps = {
305
306
  isFetching: false,
306
307
  rowContainerClass: '',
307
308
  viewWidth: 0,
309
+ minHeight: undefined,
308
310
  itemHeight: 40,
309
311
  renderHeader: null,
310
312
  renderFooter: null,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../Core/Components/Virtualise/index.jsx"],"names":[],"mappings":";AAAA;;GAEG;AAEH,OAAO,EACL,UAAU,EACV,IAAI,EACJ,SAAS,EACT,MAAM,EACN,WAAW,EACX,mBAAmB,EACnB,OAAO,EACP,eAAe,EACf,QAAQ,EACT,MAAM,OAAO,CAAC;AACf,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAEzD,OAAO,YAAY,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,iBAAiB,MAAM,cAAc,CAAC;AAC7C,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,4BAA4B,EAC5B,gBAAgB,EAChB,YAAY,EACZ,wBAAwB,EACzB,MAAM,WAAW,CAAC;AACnB,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AAEpD,SAAS,sBAAsB,CAAC,KAAK;IACnC,OAAO,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;AAChG,CAAC;AAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAA;;;wBAGX,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS;mBACpC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK;oBAC1B,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM;wBACxB,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS;;kBAErC,iBAAiB;;;;;;;;;wBASX,KAAK,CAAC,EAAE,CAClB,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,MAAM,CAAC;IAC5C,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,MAAM,CAAC;IACvC,CAAC,CAAC,UAAU;IACZ,CAAC,CAAC,QAAQ;0BACA,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAAC,KAAK,CAAC;;;CAG/D,CAAC;AAEF,gBAAgB,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAEjD,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;gBAMf,KAAK,CAAC,EAAE,CAAC,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG;eACrC,KAAK,CAAC,EAAE,CAAC,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG;CACjD,CAAC;AAEF,MAAM,UAAU,GAAG,UAAU,CAC3B,CACE,EACE,EAAE,EACF,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,QAAQ,EACR,UAAU,EACV,iBAAiB,EACjB,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,gBAAgB,EAChB,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EACnB,EACD,QAAQ,EACR,EAAE;IACF,MAAM,CAAC,yBAAyB,EAAE,4BAA4B,CAAC,GAAG,QAAQ,EAAE,CAAC;IAC7E,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrE,MAAM,CAAC,SAAS,CAAC,GAAG,YAAY,EAAE,CAAC;IACnC,+CAA+C;IAC/C,MAAM,EAAE,GAAG,MAAM,CAAC;QAChB,UAAU;QACV,gBAAgB;QAChB,KAAK,EAAE,EAAE;KACV,CAAC,CAAC,OAAO,CAAC;IAEX,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAC1E,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IACxE,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAExE,6DAA6D;IAC7D,gEAAgE;IAChE,uEAAuE;IACvE,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,aAAa,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC;QAC9B,EAAE,CAAC,KAAK,GAAG,iBAAiB,CAC1B,aAAa,EAAE,EACf,4BAA4B,CAAC,gBAAgB,CAAC,EAC9C,EAAE,EACF,KAAK,EACL,IAAI,CACL,CAAC;QACF,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;IAEnC,iEAAiE;IACjE,mBAAmB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QACnC,kBAAkB,EAAE,aAAa;QACjC,WAAW;QACX,EAAE;QACF,EAAE;KACH,CAAC,CAAC,CAAC;IAEJ,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAC/B,GAAG,EAAE,CAAC,CAAC;QACL,KAAK,EAAE,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC;QAC1C,MAAM,EAAE,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC;KAC7C,CAAC,EACF,CAAC,SAAS,EAAE,UAAU,CAAC,CACxB,CAAC;IAEF,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAE9E,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAE5F,wDAAwD;IACxD,sEAAsE;IACtE,4EAA4E;IAC5E,mDAAmD;IACnD,MAAM,aAAa,GAAG,WAAW,CAC/B,CAAC,SAAS,GAAG,KAAK,EAAE,+BAA+B,GAAG,KAAK,EAAE,EAAE;QAC7D,IAAI,+BAA+B,EAAE,CAAC;YACpC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC9B,CAAC;QACD,MAAM,KAAK,GAAG,iBAAiB,CAC7B,aAAa,EAAE,EACf,4BAA4B,CAAC,gBAAgB,CAAC,EAC9C,EAAE,EACF,SAAS,CACV,CAAC;QACF,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;QAC5C,uFAAuF;QACvF,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,IAAI,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9E,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC;YACjB,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;gBACnE,IAAI,UAAU,GAAG,aAAa,EAAE,CAAC;oBAC/B,uBAAuB,CAAC,IAAI,CAAC,EAAE;wBAC7B,OAAO,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;oBAC1C,CAAC,CAAC,CAAC;gBACL,CAAC;gBACD,IAAI,QAAQ,GAAG,WAAW,EAAE,CAAC;oBAC3B,uBAAuB,CAAC,IAAI,CAAC,EAAE;wBAC7B,OAAO,EAAE,GAAG,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;oBAC5C,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC,EACD,CAAC,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,CAAC,CAC3D,CAAC;IAEF,6CAA6C;IAC7C,MAAM,iCAAiC,GAAG,WAAW,CACnD,iBAAiB,CAAC,EAAE;QAClB,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,GACnF,iBAAiB,CAAC;QACpB,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;YAChB,SAAS,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,IAAI,SAAS,CAAC,GAAG,CAAC;YACtD,kBAAkB,EAChB,CAAC,kBAAkB,GAAG,EAAE,CAAC,kBAAkB,IAAI,kBAAkB,CAAC,GAAG,CAAC;YACxE,0BAA0B,EACxB,CAAC,0BAA0B,GAAG,EAAE,CAAC,0BAA0B;gBACzD,0BAA0B,CAAC,GAAG,CAAC;YACnC,gBAAgB,EAAE,CAAC,gBAAgB,GAAG,EAAE,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,GAAG,CAAC;SACnF,CAAC,CAAC;IACL,CAAC,EACD,CAAC,EAAE,CAAC,CACL,CAAC;IAEF,MAAM,eAAe,GAAG,WAAW,CACjC,iBAAiB,CAAC,EAAE;QAClB,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,GAAG,iBAAiB,CAAC;QAC5D,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,SAAS,GAAG,CAAC;YACf,CAAC,GAAG,CAAC,4BAA4B,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC,GAAG,kBAAkB,CAAC;QACxF,OAAO,CAAC,CAAC;IACX,CAAC,EACD,CAAC,gBAAgB,CAAC,CACnB,CAAC;IAEF,MAAM,YAAY,GAAG,WAAW,CAC9B,iBAAiB,CAAC,EAAE;QAClB,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,GAAG,iBAAiB,CAAC;QAC5D,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClB,MAAM,mBAAmB;YACvB,uDAAuD;YACvD,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,GAAG,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,CAAC;YACrE,SAAS,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS,CAAC,GAAG,kBAAkB,GAAG,mBAAmB,CAAC;QAC5F,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,EACD,CAAC,EAAE,CAAC,CACL,CAAC;IAEF,MAAM,6BAA6B,GAAG,WAAW,CAAC,GAAG,EAAE;QACrD,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAC5D,eAAe,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC;QAEnD,mFAAmF;QACnF,IAAI,kBAAkB,IAAI,iBAAiB;YAAE,4BAA4B,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,kEAAkE;IAClE,iBAAiB,CAAC,eAAe,EAAE,6BAA6B,CAAC,CAAC;IAElE,MAAM,CAAC,eAAe,CAAC,GAAG,SAAS,CACjC,aAAa,EACb,aAAa,EACb,EAAE,EACF,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,UAAU,CACX,CAAC;IAEF,eAAe,CAAC,GAAG,EAAE;QACnB,MAAM,UAAU,GAAG,eAAe,EAAE,CAAC;QACrC,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,IAAI,EAAE,IAAI,UAAU,EAAE,CAAC;YACvD,oBAAoB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,wCAAwC;IACxC,eAAe,CAAC,GAAG,EAAE;QACnB,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACxC,EAAE,CAAC,iBAAiB,GAAG,oBAAoB,CAAC,eAAe,EAAE,CAAC,CAAC;YAC/D,iCAAiC,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC;YACxD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAC5D,MAAM,cAAc,GAAG,aAAa,EAAE,CAAC,YAAY,CAAC;YAEpD,aAAa,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC;YACxC,EAAE,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAExB,2EAA2E;YAC3E,IAAI,CAAC,KAAK,cAAc,IAAI,cAAc,EAAE,CAAC;gBAC3C,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;gBACnC,MAAM,SAAS,GAAG,YAAY,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC;gBACrD,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;oBACnB,UAAU,CAAC,SAAS,GAAG,SAAS,CAAC;gBACnC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,EAAE;QACD,yBAAyB;QACzB,aAAa;QACb,eAAe;QACf,eAAe;QACf,KAAK;QACL,gBAAgB;QAChB,iCAAiC;QACjC,EAAE;QACF,aAAa;QACb,YAAY;KACb,CAAC,CAAC;IAEH,kDAAkD;IAClD,eAAe,CAAC,GAAG,EAAE;QACnB,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACxC,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;YAEnC,6GAA6G;YAC7G,yEAAyE;YACzE,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YACtC,qBAAqB,CACnB,EAAE,EACF,4BAA4B,CAAC,gBAAgB,CAAC,EAC9C,KAAK,EACL,UAAU,EACV,UAAU,CAAC,SAAS,CACrB,CAAC;YAEF,MAAM,eAAe,GAAG,EAAE,CAAC;YAC3B,IAAI,GAAG,GAAG,eAAe,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;YACtC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,GAAG,GAAG,CAAC,CAAC;YACV,CAAC;YACD,aAAa,EAAE,CAAC,KAAK,CAAC,WAAW,CAC/B,oBAAoB,EACpB,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,eAAe,IAAI,CAC3C,CAAC;YAEF,aAAa,EAAE,CAAC,KAAK,CAAC,WAAW,CAC/B,oBAAoB,EACpB,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,YAAY,IAAI,CAC1D,CAAC;QACJ,CAAC;IACH,CAAC,EAAE;QACD,aAAa;QACb,YAAY;QACZ,KAAK;QACL,eAAe;QACf,EAAE;QACF,yBAAyB;QACzB,gBAAgB;QAChB,eAAe;QACf,aAAa;KACd,CAAC,CAAC;IAEH,gEAAgE;IAChE,MAAM,2BAA2B,GAAG,WAAW,CAAC,GAAG,EAAE;QACnD,aAAa,EAAE,EAAE,KAAK,CAAC,WAAW,CAChC,mBAAmB,EACnB,GAAG,wBAAwB,CAAC,aAAa,EAAE,CAAC,IAAI,CACjD,CAAC;IACJ,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,8DAA8D;IAC9D,iBAAiB,CAAC,aAAa,EAAE,2BAA2B,CAAC,CAAC;IAE9D,wEAAwE;IACxE,uHAAuH;IACvH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,KAAK,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACvD,IACE,eAAe,CACb,4BAA4B,CAAC,gBAAgB,CAAC,EAC9C,EAAE,EACF,aAAa,EAAE,EACf,YAAY,CACb;gBAED,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;iBACxB,CAAC;gBACJ,uBAAuB,CAAC,EAAE,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM;YAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC,EAAE;QACD,yBAAyB;QACzB,KAAK;QACL,EAAE;QACF,gBAAgB;QAChB,UAAU;QACV,SAAS;QACT,YAAY;QACZ,aAAa;QACb,aAAa;KACd,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,UAAU;YAAE,OAAO;QACxB,aAAa,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,eAAe,EAAE,GAAG,aAAa,EAAE,CAAC,UAAU,IAAI,CAAC,CAAC;IACxF,CAAC,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;IAE9C,OAAO,CACL,MAAC,gBAAgB,cACP;YACN,SAAS;YACT,SAAS;YACT,YAAY;YACZ,UAAU;YACV,MAAM;YACN,KAAK;SACN,wBACmB,gBAAgB,EACpC,SAAS,EAAC,YAAY,EACtB,GAAG,EAAE,CAAC,CAAC,EAAE;YACP,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,CAAC,aAEA,YAAY,IAAI,YAAY,EAAE,EAC/B,eACE,SAAS,EAAC,YAAY,EACtB,GAAG,EAAE,CAAC,CAAC,EAAE;oBACP,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC;gBACpB,CAAC,aAIA,gBAAgB,IAAI,CAAC;wBACpB,oBAAoB;wBACpB,UAAU;wBACV,oBAAoB,CAAC,aAAa,IAAI,CACpC,KAAC,YAAY,cACH;4BACN,GAAG,EAAE,oBAAoB;4BACzB,IAAI,EAAE,eAAe;yBACtB,YAED,KAAC,QAAQ,IACP,SAAS,EAAC,cAAc,EACxB,SAAS,EAAC,OAAO,EACjB,QAAQ,EAAE,CAAC,gBACC,SAAS,CAAC,sBAAsB,CAAC,GAC7C,GACW,CAChB,EACH,cACE,SAAS,EAAE,GAAG,iBAAiB,gBAAgB,EAC/C,GAAG,EAAE,CAAC,CAAC,EAAE;4BACP,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC;wBACpB,CAAC,EACD,IAAI,EAAC,UAAU,YAGd,gBAAgB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,GACpD,EACL,gBAAgB,IAAI,CAAC;wBACpB,oBAAoB;wBACpB,UAAU;wBACV,oBAAoB,CAAC,eAAe,IAAI,CACtC,KAAC,YAAY,cACH;4BACN,GAAG,EAAE,oBAAoB;4BACzB,IAAI,EAAE,eAAe;yBACtB,YAED,KAAC,QAAQ,IACP,SAAS,EAAC,cAAc,EACxB,SAAS,EAAC,OAAO,EACjB,QAAQ,EAAE,CAAC,gBACC,SAAS,CAAC,sBAAsB,CAAC,GAC7C,GACW,CAChB,IACC,EACL,gBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC,kBAAkB,IAAI,kBAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,EAC1E,YAAY,IAAI,YAAY,EAAE,IACd,CACpB,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,UAAU,CAAC,SAAS,GAAG;IACrB,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,UAAU;IAC/B,UAAU,EAAE,SAAS,CAAC,MAAM;IAC5B,SAAS,EAAE,SAAS,CAAC,MAAM;IAC3B,gBAAgB,EAAE,SAAS,CAAC,MAAM;IAClC,UAAU,EAAE,SAAS,CAAC,MAAM;IAC5B,QAAQ,EAAE,SAAS,CAAC,IAAI;IACxB,UAAU,EAAE,SAAS,CAAC,IAAI;IAC1B,iBAAiB,EAAE,SAAS,CAAC,MAAM;IACnC,QAAQ,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU;IAC7E,YAAY,EAAE,SAAS,CAAC,IAAI;IAC5B,YAAY,EAAE,SAAS,CAAC,IAAI;IAC5B,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC;QACrB,UAAU,EAAE,SAAS,CAAC,MAAM;QAC5B,QAAQ,EAAE,SAAS,CAAC,MAAM;KAC3B,CAAC;IACF,gBAAgB,EAAE,SAAS,CAAC,MAAM;IAClC,aAAa,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACxE,oBAAoB,EAAE,SAAS,CAAC,IAAI;IACpC,kBAAkB,EAAE,SAAS,CAAC,IAAI;CACnC,CAAC;AAEF,UAAU,CAAC,YAAY,GAAG;IACxB,gBAAgB,EAAE,CAAC;IACnB,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;IAClB,UAAU,EAAE,KAAK;IACjB,iBAAiB,EAAE,EAAE;IACrB,SAAS,EAAE,CAAC;IACZ,UAAU,EAAE,EAAE;IACd,YAAY,EAAE,IAAI;IAClB,YAAY,EAAE,IAAI;IAClB,KAAK,EAAE,SAAS;IAChB,gBAAgB,EAAE,SAAS;IAC3B,aAAa,EAAE,SAAS;IACxB,oBAAoB,EAAE,KAAK;IAC3B,kBAAkB,EAAE,IAAI;CACzB,CAAC;AAEF,UAAU,CAAC,WAAW,GAAG,YAAY,CAAC;AAEtC,eAAe,IAAI,CAAC,UAAU,CAAC,CAAC","sourcesContent":["/**\n * This component is only used for grouped table\n */\n\nimport {\n forwardRef,\n memo,\n useEffect,\n useRef,\n useCallback,\n useImperativeHandle,\n useMemo,\n useLayoutEffect,\n useState\n} from 'react';\nimport Styled from 'styled-components';\nimport PropTypes from 'prop-types';\n\nimport { defaultThemeProp, Progress } from '@pega/cosmos-react-core';\nimport { isEmpty } from 'pega-repeating-structures-core';\n\nimport useTranslate from '../../Hooks/useTranslate';\nimport { StyledSkeletonRow } from '../../Views/Table/SkeletonRows';\n\nimport getPaginationInfo from './Pagination';\nimport useScroll from './UseScroll';\nimport {\n getCurrentEstimation,\n updateRowContainerTop,\n setAttributesOnItems,\n isViewNotFilled,\n getRecordCountForLayoutPaint,\n getValueWithUnit,\n getMaxHeight,\n getPContainerClientWidth\n} from './utility';\nimport useResizeObserver from './UseResizeObserver';\n\nfunction getBContainerMinHeight(props) {\n return props.$style.renderFooter ? `calc(100% - ${2 * props.$style.itemHeight + 1}px) ` : '0';\n}\n\nconst StyledPContainer = Styled.div`\n position: relative;\n overflow: auto;\n max-height: ${props => props.$style.maxHeight};\n width: ${props => props.$style.width};\n height: ${props => props.$style.height};\n min-height: ${props => props.$style.minHeight};\n\n &:has(${StyledSkeletonRow}) {\n overflow: hidden;\n }\n\n /**\n * When height and maxHeight is auto, virtualization is not going to happen and the scroll jump on row deletion scenario is not going to happen.\n * In such cases, using relative position as sticky was used to fix scroll jump in firefox during virtualization.\n */\n .bContainer {\n position: ${props =>\n props.$style.maxHeight?.startsWith?.('auto') &&\n props.$style.height?.startsWith?.('auto')\n ? 'relative'\n : 'sticky'};\n min-height: ${props => getBContainerMinHeight(props)};\n border-radius: inherit;\n }\n`;\n\nStyledPContainer.defaultProps = defaultThemeProp;\n\nconst StyledLoader = Styled.div`\n display: flex;\n justify-content: center;\n padding: 0.5rem;\n position: absolute;\n width: 100%;\n left: ${props => `var(${props.$style.left})`};\n top: ${props => `var(${props.$style.top})`};\n`;\n\nconst Virtualize = forwardRef(\n (\n {\n id,\n viewHeight,\n viewWidth,\n totalRecordCount,\n itemHeight,\n callback,\n isFetching,\n rowContainerClass,\n children,\n renderHeader,\n renderFooter,\n state,\n bufferMultiplier,\n viewMaxHeight,\n showLoadingIndicator,\n renderEmptyRecords\n },\n inputRef\n ) => {\n const [rContainerDimensionUpdate, setRContainerDimensionUpdate] = useState();\n const [loadingIndicatorInfo, setLoadingIndicatorInfo] = useState({});\n const [translate] = useTranslate();\n // Create ref to store virtualize related data.\n const vi = useRef({\n itemHeight,\n bufferMultiplier,\n pInfo: {}\n }).current;\n\n const getRowContainer = useCallback(() => vi.rContainer, [vi.rContainer]);\n const getPContainer = useCallback(() => vi.pContainer, [vi.pContainer]);\n const getBContainer = useCallback(() => vi.bContainer, [vi.bContainer]);\n\n // API used when user want to scroll to top programmatically.\n // Though component auto scroll to top if no element is in view.\n // But calling this API upfront might save one extra call to Fetch API.\n const scrollToTop = useCallback(() => {\n if (!state) return;\n getPContainer().scrollTop = 0;\n vi.pInfo = getPaginationInfo(\n getPContainer(),\n getRecordCountForLayoutPaint(totalRecordCount),\n vi,\n false,\n true\n );\n callback({ ...vi.pInfo.view, id }, { takeLatestAction: true });\n }, [id, vi, state, getPContainer]);\n\n // expose APIs and properties here to help client to communicate.\n useImperativeHandle(inputRef, () => ({\n getParentContainer: getPContainer,\n scrollToTop,\n vi,\n id\n }));\n\n const { width, height } = useMemo(\n () => ({\n width: getValueWithUnit(viewWidth, '100%'),\n height: getValueWithUnit(viewHeight, 'auto')\n }),\n [viewWidth, viewHeight]\n );\n\n const maxHeight = useMemo(() => getMaxHeight(viewMaxHeight), [viewMaxHeight]);\n\n const minHeight = useMemo(() => (!totalRecordCount ? '100px' : 'auto'), [totalRecordCount]);\n\n // Calculate the pagination indexes and notify callback.\n // resetIsFetchingWhenNoNewIndexes - flag specific for isViewNotFilled\n // If view is not filled, we want to call this but restting isFetch to false\n // goes to this methid when callback is note fired.\n const getPagination = useCallback(\n (isRefresh = false, resetIsFetchingWhenNoNewIndexes = false) => {\n if (resetIsFetchingWhenNoNewIndexes) {\n setLoadingIndicatorInfo({});\n }\n const pInfo = getPaginationInfo(\n getPContainer(),\n getRecordCountForLayoutPaint(totalRecordCount),\n vi,\n isRefresh\n );\n const { startIndex, endIndex } = pInfo.view;\n // if new indexes are subset of existing state indexes, no need to update the consumer.\n if (!state || !(startIndex >= state.startIndex && endIndex <= state.endIndex)) {\n vi.pInfo = pInfo;\n if (state) {\n const { startIndex: oldStartIndex, endIndex: oldEndIndex } = state;\n if (startIndex < oldStartIndex) {\n setLoadingIndicatorInfo(info => {\n return { ...info, isScrollingUp: true };\n });\n }\n if (endIndex > oldEndIndex) {\n setLoadingIndicatorInfo(info => {\n return { ...info, isScrollingDown: true };\n });\n }\n }\n callback({ ...vi.pInfo.view, id }, { takeLatestAction: true });\n }\n },\n [vi, totalRecordCount, state, callback, id, getPContainer]\n );\n\n // update average stats for next calculation.\n const updateAverageInVirtualizeInstance = useCallback(\n currentEstimation => {\n const { itemCount, rowContainerHeight, averageNumberOfItemsInARow, averageRowHeight } =\n currentEstimation;\n Object.assign(vi, {\n itemCount: (itemCount + vi.itemCount || itemCount) / 2,\n rowContainerHeight:\n (rowContainerHeight + vi.rowContainerHeight || rowContainerHeight) / 2,\n averageNumberOfItemsInARow:\n (averageNumberOfItemsInARow + vi.averageNumberOfItemsInARow ||\n averageNumberOfItemsInARow) / 2,\n averageRowHeight: (averageRowHeight + vi.averageRowHeight || averageRowHeight) / 2\n });\n },\n [vi]\n );\n\n const getBufferHeight = useCallback(\n currentEstimation => {\n const { itemCount, rowContainerHeight } = currentEstimation;\n let h = 0;\n if (itemCount > 0)\n h = (getRecordCountForLayoutPaint(totalRecordCount) / itemCount) * rowContainerHeight;\n return h;\n },\n [totalRecordCount]\n );\n\n const getScrollTop = useCallback(\n currentEstimation => {\n const { itemCount, rowContainerHeight } = currentEstimation;\n let scrollTop = 0;\n if (itemCount > 0) {\n const scrollNodeTopChange =\n // eslint-disable-next-line no-unsafe-optional-chaining\n vi.pInfo?.bufferNewCords?.top - vi.pInfo?.bufferOldCords?.top || 0;\n scrollTop = (vi.pInfo.topRowIndex / itemCount) * rowContainerHeight - scrollNodeTopChange;\n }\n return scrollTop;\n },\n [vi]\n );\n\n const onRowContainerDimensionChange = useCallback(() => {\n const { height: rowContainerHeight, width: rowContainerWidth } =\n getRowContainer()?.getBoundingClientRect() ?? {};\n\n // trigger virtualizer operations only when row container has some height and width\n if (rowContainerHeight && rowContainerWidth) setRContainerDimensionUpdate({});\n }, [getRowContainer]);\n\n // observe on row container to adjust the buffer container height.\n useResizeObserver(getRowContainer, onRowContainerDimensionChange);\n\n const [updateScrollTop] = useScroll(\n getPagination,\n getPContainer,\n vi,\n totalRecordCount,\n renderHeader,\n isFetching,\n viewHeight\n );\n\n useLayoutEffect(() => {\n const rContainer = getRowContainer();\n if (state && state.startIndex >= 0 && vi && rContainer) {\n setAttributesOnItems(state, rContainer);\n }\n });\n\n // Get estimate and update buffer height\n useLayoutEffect(() => {\n if (state && !isEmpty(totalRecordCount)) {\n vi.currentEstimation = getCurrentEstimation(getRowContainer());\n updateAverageInVirtualizeInstance(vi.currentEstimation);\n const h = Math.floor(getBufferHeight(vi.currentEstimation));\n const previousHeight = getBContainer().offsetHeight;\n\n getBContainer().style.height = `${h}px`;\n vi.bContainerHeight = h;\n\n // if there was no previous height, then keep the scrolltop to 0 by default\n if (h !== previousHeight && previousHeight) {\n const pContainer = getPContainer();\n const scrollTop = getScrollTop(vi.currentEstimation);\n if (scrollTop >= 0) {\n pContainer.scrollTop = scrollTop;\n }\n }\n }\n }, [\n rContainerDimensionUpdate,\n getBContainer,\n getBufferHeight,\n getRowContainer,\n state,\n totalRecordCount,\n updateAverageInVirtualizeInstance,\n vi,\n getPContainer,\n getScrollTop\n ]);\n\n // update parent scroll top and row container top.\n useLayoutEffect(() => {\n if (state && !isEmpty(totalRecordCount)) {\n const pContainer = getPContainer();\n\n // Setting scrollTop from pContainer.scrollTop as getScrollTop can return value with higher decimal accuracy.\n // but scrollTop attribute from HTML element will round it automatically.\n updateScrollTop(pContainer.scrollTop);\n updateRowContainerTop(\n vi,\n getRecordCountForLayoutPaint(totalRecordCount),\n state,\n pContainer,\n pContainer.scrollTop\n );\n\n const topLoaderHeight = 80;\n let top = getRowContainer().style.top;\n if (!top) {\n top = 0;\n }\n getBContainer().style.setProperty(\n '--above-loader-top',\n `${parseInt(top, 10) - topLoaderHeight}px`\n );\n\n getBContainer().style.setProperty(\n '--below-loader-top',\n `${parseInt(top, 10) + getRowContainer().offsetHeight}px`\n );\n }\n }, [\n getPContainer,\n getScrollTop,\n state,\n updateScrollTop,\n vi,\n rContainerDimensionUpdate,\n totalRecordCount,\n getRowContainer,\n getBContainer\n ]);\n\n // Added this block to overcome clipping issue for group header.\n const onPContainerDimensionUpdate = useCallback(() => {\n getPContainer()?.style.setProperty(\n '--container-width',\n `${getPContainerClientWidth(getPContainer())}px`\n );\n }, [getPContainer]);\n\n // observe on pContainer to adjust the width of row container.\n useResizeObserver(getPContainer, onPContainerDimensionUpdate);\n\n // On mount that means state is not initialized yet, trigger pagination.\n // or whenever count changes or width /height of view port changes, if view is not filled with data, get indexes again.\n useEffect(() => {\n if (state && !isFetching && !isEmpty(totalRecordCount)) {\n if (\n isViewNotFilled(\n getRecordCountForLayoutPaint(totalRecordCount),\n vi,\n getPContainer(),\n renderHeader\n )\n )\n getPagination(false, true);\n else {\n setLoadingIndicatorInfo({});\n }\n } else if (!state || !Object.keys(vi.pInfo).length) getPagination(true);\n }, [\n rContainerDimensionUpdate,\n state,\n vi,\n totalRecordCount,\n viewHeight,\n viewWidth,\n renderHeader,\n getPagination,\n getPContainer\n ]);\n\n useEffect(() => {\n if (!isFetching) return;\n getBContainer().style.setProperty('--loader-left', `${getPContainer().scrollLeft}px`);\n }, [isFetching, getPContainer()?.scrollLeft]);\n\n return (\n <StyledPContainer\n $style={{\n maxHeight,\n minHeight,\n renderFooter,\n itemHeight,\n height,\n width\n }}\n data-total-records={totalRecordCount}\n className='pContainer'\n ref={c => {\n vi.pContainer = c;\n }}\n >\n {renderHeader && renderHeader()}\n <div\n className='bContainer'\n ref={c => {\n vi.bContainer = c;\n }}\n >\n {/* Show loader only when there are some rows otherwise the parent spinner on RS should appear.\n Since in case of grouped table, presence of totalRecordsCount is always available and is tied with the rows, using totalRecordsCount here. */}\n {totalRecordCount >= 0 &&\n showLoadingIndicator &&\n isFetching &&\n loadingIndicatorInfo.isScrollingUp && (\n <StyledLoader\n $style={{\n top: '--above-loader-top',\n left: '--loader-left'\n }}\n >\n <Progress\n className='above-loader'\n placement='block'\n tabIndex={0}\n aria-label={translate('Loading more results')}\n />\n </StyledLoader>\n )}\n <div\n className={`${rowContainerClass} row-container`}\n ref={c => {\n vi.rContainer = c;\n }}\n role='rowgroup'\n >\n {/** Do not add any other element in row-container apart from the rows as it will generate incorrect estimations */}\n {totalRecordCount === 0 && !isFetching ? null : children}\n </div>\n {totalRecordCount >= 0 &&\n showLoadingIndicator &&\n isFetching &&\n loadingIndicatorInfo.isScrollingDown && (\n <StyledLoader\n $style={{\n top: '--below-loader-top',\n left: '--loader-left'\n }}\n >\n <Progress\n className='below-loader'\n placement='block'\n tabIndex={0}\n aria-label={translate('Loading more results')}\n />\n </StyledLoader>\n )}\n </div>\n {totalRecordCount === 0 ? renderEmptyRecords && renderEmptyRecords() : null}\n {renderFooter && renderFooter()}\n </StyledPContainer>\n );\n }\n);\n\nVirtualize.propTypes = {\n id: PropTypes.string.isRequired,\n viewHeight: PropTypes.number,\n viewWidth: PropTypes.number,\n totalRecordCount: PropTypes.number,\n itemHeight: PropTypes.number,\n callback: PropTypes.func,\n isFetching: PropTypes.bool,\n rowContainerClass: PropTypes.string,\n children: PropTypes.oneOfType([PropTypes.object, PropTypes.array]).isRequired,\n renderHeader: PropTypes.func,\n renderFooter: PropTypes.func,\n state: PropTypes.shape({\n startIndex: PropTypes.number,\n endIndex: PropTypes.number\n }),\n bufferMultiplier: PropTypes.number,\n viewMaxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n showLoadingIndicator: PropTypes.bool,\n renderEmptyRecords: PropTypes.func\n};\n\nVirtualize.defaultProps = {\n bufferMultiplier: 2,\n callback: () => {},\n isFetching: false,\n rowContainerClass: '',\n viewWidth: 0,\n itemHeight: 40,\n renderHeader: null,\n renderFooter: null,\n state: undefined,\n totalRecordCount: undefined,\n viewMaxHeight: undefined,\n showLoadingIndicator: false,\n renderEmptyRecords: null\n};\n\nVirtualize.displayName = 'Virtualize';\n\nexport default memo(Virtualize);\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../Core/Components/Virtualise/index.jsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * This component is only used for grouped table\n */\n\nimport {\n forwardRef,\n memo,\n useEffect,\n useRef,\n useCallback,\n useImperativeHandle,\n useMemo,\n useLayoutEffect,\n useState\n} from 'react';\nimport Styled from 'styled-components';\nimport PropTypes from 'prop-types';\n\nimport { defaultThemeProp, Progress } from '@pega/cosmos-react-core';\nimport { isEmpty } from 'pega-repeating-structures-core';\n\nimport useTranslate from '../../Hooks/useTranslate';\nimport { StyledSkeletonRow } from '../../Views/Table/SkeletonRows';\n\nimport getPaginationInfo from './Pagination';\nimport useScroll from './UseScroll';\nimport {\n getCurrentEstimation,\n updateRowContainerTop,\n setAttributesOnItems,\n isViewNotFilled,\n getRecordCountForLayoutPaint,\n getValueWithUnit,\n getMaxHeight,\n getPContainerClientWidth\n} from './utility';\nimport useResizeObserver from './UseResizeObserver';\n\nfunction getBContainerMinHeight(props) {\n return props.$style.renderFooter ? `calc(100% - ${2 * props.$style.itemHeight + 1}px) ` : '0';\n}\n\nconst StyledPContainer = Styled.div`\n position: relative;\n overflow: auto;\n max-height: ${props => props.$style.maxHeight};\n width: ${props => props.$style.width};\n height: ${props => props.$style.height};\n min-height: ${props => props.$style.minHeight};\n\n &:has(${StyledSkeletonRow}) {\n overflow: hidden;\n }\n\n /**\n * When height and maxHeight is auto, virtualization is not going to happen and the scroll jump on row deletion scenario is not going to happen.\n * In such cases, using relative position as sticky was used to fix scroll jump in firefox during virtualization.\n */\n .bContainer {\n position: ${props =>\n props.$style.maxHeight?.startsWith?.('auto') &&\n props.$style.height?.startsWith?.('auto')\n ? 'relative'\n : 'sticky'};\n min-height: ${props => getBContainerMinHeight(props)};\n border-radius: inherit;\n }\n`;\n\nStyledPContainer.defaultProps = defaultThemeProp;\n\nconst StyledLoader = Styled.div`\n display: flex;\n justify-content: center;\n padding: 0.5rem;\n position: absolute;\n width: 100%;\n left: ${props => `var(${props.$style.left})`};\n top: ${props => `var(${props.$style.top})`};\n`;\n\nconst Virtualize = forwardRef(\n (\n {\n id,\n viewHeight,\n viewWidth,\n minHeight,\n totalRecordCount,\n itemHeight,\n callback,\n isFetching,\n rowContainerClass,\n children,\n renderHeader,\n renderFooter,\n state,\n bufferMultiplier,\n viewMaxHeight,\n showLoadingIndicator,\n renderEmptyRecords\n },\n inputRef\n ) => {\n const [rContainerDimensionUpdate, setRContainerDimensionUpdate] = useState();\n const [loadingIndicatorInfo, setLoadingIndicatorInfo] = useState({});\n const [translate] = useTranslate();\n // Create ref to store virtualize related data.\n const vi = useRef({\n itemHeight,\n bufferMultiplier,\n pInfo: {}\n }).current;\n\n const getRowContainer = useCallback(() => vi.rContainer, [vi.rContainer]);\n const getPContainer = useCallback(() => vi.pContainer, [vi.pContainer]);\n const getBContainer = useCallback(() => vi.bContainer, [vi.bContainer]);\n\n // API used when user want to scroll to top programmatically.\n // Though component auto scroll to top if no element is in view.\n // But calling this API upfront might save one extra call to Fetch API.\n const scrollToTop = useCallback(() => {\n if (!state) return;\n getPContainer().scrollTop = 0;\n vi.pInfo = getPaginationInfo(\n getPContainer(),\n getRecordCountForLayoutPaint(totalRecordCount),\n vi,\n false,\n true\n );\n callback({ ...vi.pInfo.view, id }, { takeLatestAction: true });\n }, [id, vi, state, getPContainer]);\n\n // expose APIs and properties here to help client to communicate.\n useImperativeHandle(inputRef, () => ({\n getParentContainer: getPContainer,\n scrollToTop,\n vi,\n id\n }));\n\n const { width, height } = useMemo(\n () => ({\n width: getValueWithUnit(viewWidth, '100%'),\n height: getValueWithUnit(viewHeight, 'auto')\n }),\n [viewWidth, viewHeight]\n );\n\n const maxHeight = useMemo(() => getMaxHeight(viewMaxHeight), [viewMaxHeight]);\n\n const resolvedMinHeight = useMemo(\n () => (!totalRecordCount ? '100px' : minHeight ?? 'auto'),\n [totalRecordCount, minHeight]\n );\n\n // Calculate the pagination indexes and notify callback.\n // resetIsFetchingWhenNoNewIndexes - flag specific for isViewNotFilled\n // If view is not filled, we want to call this but restting isFetch to false\n // goes to this methid when callback is note fired.\n const getPagination = useCallback(\n (isRefresh = false, resetIsFetchingWhenNoNewIndexes = false) => {\n if (resetIsFetchingWhenNoNewIndexes) {\n setLoadingIndicatorInfo({});\n }\n const pInfo = getPaginationInfo(\n getPContainer(),\n getRecordCountForLayoutPaint(totalRecordCount),\n vi,\n isRefresh\n );\n const { startIndex, endIndex } = pInfo.view;\n // if new indexes are subset of existing state indexes, no need to update the consumer.\n if (!state || !(startIndex >= state.startIndex && endIndex <= state.endIndex)) {\n vi.pInfo = pInfo;\n if (state) {\n const { startIndex: oldStartIndex, endIndex: oldEndIndex } = state;\n if (startIndex < oldStartIndex) {\n setLoadingIndicatorInfo(info => {\n return { ...info, isScrollingUp: true };\n });\n }\n if (endIndex > oldEndIndex) {\n setLoadingIndicatorInfo(info => {\n return { ...info, isScrollingDown: true };\n });\n }\n }\n callback({ ...vi.pInfo.view, id }, { takeLatestAction: true });\n }\n },\n [vi, totalRecordCount, state, callback, id, getPContainer]\n );\n\n // update average stats for next calculation.\n const updateAverageInVirtualizeInstance = useCallback(\n currentEstimation => {\n const { itemCount, rowContainerHeight, averageNumberOfItemsInARow, averageRowHeight } =\n currentEstimation;\n Object.assign(vi, {\n itemCount: (itemCount + vi.itemCount || itemCount) / 2,\n rowContainerHeight:\n (rowContainerHeight + vi.rowContainerHeight || rowContainerHeight) / 2,\n averageNumberOfItemsInARow:\n (averageNumberOfItemsInARow + vi.averageNumberOfItemsInARow ||\n averageNumberOfItemsInARow) / 2,\n averageRowHeight: (averageRowHeight + vi.averageRowHeight || averageRowHeight) / 2\n });\n },\n [vi]\n );\n\n const getBufferHeight = useCallback(\n currentEstimation => {\n const { itemCount, rowContainerHeight } = currentEstimation;\n let h = 0;\n if (itemCount > 0)\n h = (getRecordCountForLayoutPaint(totalRecordCount) / itemCount) * rowContainerHeight;\n return h;\n },\n [totalRecordCount]\n );\n\n const getScrollTop = useCallback(\n currentEstimation => {\n const { itemCount, rowContainerHeight } = currentEstimation;\n let scrollTop = 0;\n if (itemCount > 0) {\n const scrollNodeTopChange =\n // eslint-disable-next-line no-unsafe-optional-chaining\n vi.pInfo?.bufferNewCords?.top - vi.pInfo?.bufferOldCords?.top || 0;\n scrollTop = (vi.pInfo.topRowIndex / itemCount) * rowContainerHeight - scrollNodeTopChange;\n }\n return scrollTop;\n },\n [vi]\n );\n\n const onRowContainerDimensionChange = useCallback(() => {\n const { height: rowContainerHeight, width: rowContainerWidth } =\n getRowContainer()?.getBoundingClientRect() ?? {};\n\n // trigger virtualizer operations only when row container has some height and width\n if (rowContainerHeight && rowContainerWidth) setRContainerDimensionUpdate({});\n }, [getRowContainer]);\n\n // observe on row container to adjust the buffer container height.\n useResizeObserver(getRowContainer, onRowContainerDimensionChange);\n\n const [updateScrollTop] = useScroll(\n getPagination,\n getPContainer,\n vi,\n totalRecordCount,\n renderHeader,\n isFetching,\n viewHeight\n );\n\n useLayoutEffect(() => {\n const rContainer = getRowContainer();\n if (state && state.startIndex >= 0 && vi && rContainer) {\n setAttributesOnItems(state, rContainer);\n }\n });\n\n // Get estimate and update buffer height\n useLayoutEffect(() => {\n if (state && !isEmpty(totalRecordCount)) {\n vi.currentEstimation = getCurrentEstimation(getRowContainer());\n updateAverageInVirtualizeInstance(vi.currentEstimation);\n const h = Math.floor(getBufferHeight(vi.currentEstimation));\n const previousHeight = getBContainer().offsetHeight;\n\n getBContainer().style.height = `${h}px`;\n vi.bContainerHeight = h;\n\n // if there was no previous height, then keep the scrolltop to 0 by default\n if (h !== previousHeight && previousHeight) {\n const pContainer = getPContainer();\n const scrollTop = getScrollTop(vi.currentEstimation);\n if (scrollTop >= 0) {\n pContainer.scrollTop = scrollTop;\n }\n }\n }\n }, [\n rContainerDimensionUpdate,\n getBContainer,\n getBufferHeight,\n getRowContainer,\n state,\n totalRecordCount,\n updateAverageInVirtualizeInstance,\n vi,\n getPContainer,\n getScrollTop\n ]);\n\n // update parent scroll top and row container top.\n useLayoutEffect(() => {\n if (state && !isEmpty(totalRecordCount)) {\n const pContainer = getPContainer();\n\n // Setting scrollTop from pContainer.scrollTop as getScrollTop can return value with higher decimal accuracy.\n // but scrollTop attribute from HTML element will round it automatically.\n updateScrollTop(pContainer.scrollTop);\n updateRowContainerTop(\n vi,\n getRecordCountForLayoutPaint(totalRecordCount),\n state,\n pContainer,\n pContainer.scrollTop\n );\n\n const topLoaderHeight = 80;\n let top = getRowContainer().style.top;\n if (!top) {\n top = 0;\n }\n getBContainer().style.setProperty(\n '--above-loader-top',\n `${parseInt(top, 10) - topLoaderHeight}px`\n );\n\n getBContainer().style.setProperty(\n '--below-loader-top',\n `${parseInt(top, 10) + getRowContainer().offsetHeight}px`\n );\n }\n }, [\n getPContainer,\n getScrollTop,\n state,\n updateScrollTop,\n vi,\n rContainerDimensionUpdate,\n totalRecordCount,\n getRowContainer,\n getBContainer\n ]);\n\n // Added this block to overcome clipping issue for group header.\n const onPContainerDimensionUpdate = useCallback(() => {\n getPContainer()?.style.setProperty(\n '--container-width',\n `${getPContainerClientWidth(getPContainer())}px`\n );\n }, [getPContainer]);\n\n // observe on pContainer to adjust the width of row container.\n useResizeObserver(getPContainer, onPContainerDimensionUpdate);\n\n // On mount that means state is not initialized yet, trigger pagination.\n // or whenever count changes or width /height of view port changes, if view is not filled with data, get indexes again.\n useEffect(() => {\n if (state && !isFetching && !isEmpty(totalRecordCount)) {\n if (\n isViewNotFilled(\n getRecordCountForLayoutPaint(totalRecordCount),\n vi,\n getPContainer(),\n renderHeader\n )\n )\n getPagination(false, true);\n else {\n setLoadingIndicatorInfo({});\n }\n } else if (!state || !Object.keys(vi.pInfo).length) getPagination(true);\n }, [\n rContainerDimensionUpdate,\n state,\n vi,\n totalRecordCount,\n viewHeight,\n viewWidth,\n renderHeader,\n getPagination,\n getPContainer\n ]);\n\n useEffect(() => {\n if (!isFetching) return;\n getBContainer().style.setProperty('--loader-left', `${getPContainer().scrollLeft}px`);\n }, [isFetching, getPContainer()?.scrollLeft]);\n\n return (\n <StyledPContainer\n $style={{\n maxHeight,\n minHeight: resolvedMinHeight,\n renderFooter,\n itemHeight,\n height,\n width\n }}\n data-total-records={totalRecordCount}\n className='pContainer'\n ref={c => {\n vi.pContainer = c;\n }}\n >\n {renderHeader && renderHeader()}\n <div\n className='bContainer'\n ref={c => {\n vi.bContainer = c;\n }}\n >\n {/* Show loader only when there are some rows otherwise the parent spinner on RS should appear.\n Since in case of grouped table, presence of totalRecordsCount is always available and is tied with the rows, using totalRecordsCount here. */}\n {totalRecordCount >= 0 &&\n showLoadingIndicator &&\n isFetching &&\n loadingIndicatorInfo.isScrollingUp && (\n <StyledLoader\n $style={{\n top: '--above-loader-top',\n left: '--loader-left'\n }}\n >\n <Progress\n className='above-loader'\n placement='block'\n tabIndex={0}\n aria-label={translate('Loading more results')}\n />\n </StyledLoader>\n )}\n <div\n className={`${rowContainerClass} row-container`}\n ref={c => {\n vi.rContainer = c;\n }}\n role='rowgroup'\n >\n {/** Do not add any other element in row-container apart from the rows as it will generate incorrect estimations */}\n {totalRecordCount === 0 && !isFetching ? null : children}\n </div>\n {totalRecordCount >= 0 &&\n showLoadingIndicator &&\n isFetching &&\n loadingIndicatorInfo.isScrollingDown && (\n <StyledLoader\n $style={{\n top: '--below-loader-top',\n left: '--loader-left'\n }}\n >\n <Progress\n className='below-loader'\n placement='block'\n tabIndex={0}\n aria-label={translate('Loading more results')}\n />\n </StyledLoader>\n )}\n </div>\n {totalRecordCount === 0 ? renderEmptyRecords && renderEmptyRecords() : null}\n {renderFooter && renderFooter()}\n </StyledPContainer>\n );\n }\n);\n\nVirtualize.propTypes = {\n id: PropTypes.string.isRequired,\n viewHeight: PropTypes.number,\n viewWidth: PropTypes.number,\n minHeight: PropTypes.string,\n totalRecordCount: PropTypes.number,\n itemHeight: PropTypes.number,\n callback: PropTypes.func,\n isFetching: PropTypes.bool,\n rowContainerClass: PropTypes.string,\n children: PropTypes.oneOfType([PropTypes.object, PropTypes.array]).isRequired,\n renderHeader: PropTypes.func,\n renderFooter: PropTypes.func,\n state: PropTypes.shape({\n startIndex: PropTypes.number,\n endIndex: PropTypes.number\n }),\n bufferMultiplier: PropTypes.number,\n viewMaxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n showLoadingIndicator: PropTypes.bool,\n renderEmptyRecords: PropTypes.func\n};\n\nVirtualize.defaultProps = {\n bufferMultiplier: 2,\n callback: () => {},\n isFetching: false,\n rowContainerClass: '',\n viewWidth: 0,\n minHeight: undefined,\n itemHeight: 40,\n renderHeader: null,\n renderFooter: null,\n state: undefined,\n totalRecordCount: undefined,\n viewMaxHeight: undefined,\n showLoadingIndicator: false,\n renderEmptyRecords: null\n};\n\nVirtualize.displayName = 'Virtualize';\n\nexport default memo(Virtualize);\n"]}