@pega/lists-react 10.0.0-build.9.11 → 10.0.0-build.9.13

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 (80) hide show
  1. package/lib/Core/Components/Card/index.d.ts +0 -1
  2. package/lib/Core/Components/Card/index.d.ts.map +1 -1
  3. package/lib/Core/Components/Card/index.js +0 -1
  4. package/lib/Core/Components/Card/index.js.map +1 -1
  5. package/lib/Core/Components/DefaultComponents/CellRenderers/RowActionMenu.d.ts.map +1 -1
  6. package/lib/Core/Components/DefaultComponents/CellRenderers/RowActionMenu.js +6 -70
  7. package/lib/Core/Components/DefaultComponents/CellRenderers/RowActionMenu.js.map +1 -1
  8. package/lib/Core/Components/DefaultComponents/CellRenderers/RowSelectHandle.js +9 -2
  9. package/lib/Core/Components/DefaultComponents/CellRenderers/RowSelectHandle.js.map +1 -1
  10. package/lib/Core/Components/RenderingEngine/ComponentResolverFactory.d.ts +1 -0
  11. package/lib/Core/Components/RenderingEngine/ComponentResolverFactory.d.ts.map +1 -1
  12. package/lib/Core/Components/RenderingEngine/ComponentResolverFactory.js +6 -1
  13. package/lib/Core/Components/RenderingEngine/ComponentResolverFactory.js.map +1 -1
  14. package/lib/Core/Components/Virtualise/VirtualizeInfinite.js +4 -2
  15. package/lib/Core/Components/Virtualise/VirtualizeInfinite.js.map +1 -1
  16. package/lib/Core/Components/Virtualise/index.js +5 -3
  17. package/lib/Core/Components/Virtualise/index.js.map +1 -1
  18. package/lib/Core/Utils/fetchRowActions.d.ts +16 -0
  19. package/lib/Core/Utils/fetchRowActions.d.ts.map +1 -0
  20. package/lib/Core/Utils/fetchRowActions.js +60 -0
  21. package/lib/Core/Utils/fetchRowActions.js.map +1 -0
  22. package/lib/Core/Utils/styles.d.ts +9 -0
  23. package/lib/Core/Utils/styles.d.ts.map +1 -1
  24. package/lib/Core/Utils/styles.js +3 -2
  25. package/lib/Core/Utils/styles.js.map +1 -1
  26. package/lib/Core/Views/Gallery/Components/GalleryCard.d.ts.map +1 -1
  27. package/lib/Core/Views/Gallery/Components/GalleryCard.js +7 -4
  28. package/lib/Core/Views/Gallery/Components/GalleryCard.js.map +1 -1
  29. package/lib/Core/Views/Gallery/Components/GalleryCheckboxCard.d.ts.map +1 -1
  30. package/lib/Core/Views/Gallery/Components/GalleryCheckboxCard.js +6 -3
  31. package/lib/Core/Views/Gallery/Components/GalleryCheckboxCard.js.map +1 -1
  32. package/lib/Core/Views/Kanban/KanbanCard.d.ts.map +1 -1
  33. package/lib/Core/Views/Kanban/KanbanCard.js +7 -4
  34. package/lib/Core/Views/Kanban/KanbanCard.js.map +1 -1
  35. package/lib/Core/Views/Table/CellWrapper.d.ts +3 -1
  36. package/lib/Core/Views/Table/CellWrapper.d.ts.map +1 -1
  37. package/lib/Core/Views/Table/CellWrapper.js +4 -3
  38. package/lib/Core/Views/Table/CellWrapper.js.map +1 -1
  39. package/lib/Core/Views/Table/Row.d.ts.map +1 -1
  40. package/lib/Core/Views/Table/Row.js +22 -10
  41. package/lib/Core/Views/Table/Row.js.map +1 -1
  42. package/lib/Core/Views/Table/StyledTableContainer.d.ts.map +1 -1
  43. package/lib/Core/Views/Table/StyledTableContainer.js +71 -19
  44. package/lib/Core/Views/Table/StyledTableContainer.js.map +1 -1
  45. package/lib/Core/Views/Table/VirtualizeWrapper.d.ts +3 -1
  46. package/lib/Core/Views/Table/VirtualizeWrapper.d.ts.map +1 -1
  47. package/lib/Core/Views/Table/VirtualizeWrapper.js +6 -5
  48. package/lib/Core/Views/Table/VirtualizeWrapper.js.map +1 -1
  49. package/lib/Core/Views/Table/index.d.ts.map +1 -1
  50. package/lib/Core/Views/Table/index.js +15 -6
  51. package/lib/Core/Views/Table/index.js.map +1 -1
  52. package/lib/Core/Views/Table/useMasterDetailCleanup.d.ts +11 -0
  53. package/lib/Core/Views/Table/useMasterDetailCleanup.d.ts.map +1 -0
  54. package/lib/Core/Views/Table/useMasterDetailCleanup.js +27 -0
  55. package/lib/Core/Views/Table/useMasterDetailCleanup.js.map +1 -0
  56. package/lib/Core/Views/Table/useMasterDetailHost.d.ts +14 -0
  57. package/lib/Core/Views/Table/useMasterDetailHost.d.ts.map +1 -0
  58. package/lib/Core/Views/Table/useMasterDetailHost.js +56 -0
  59. package/lib/Core/Views/Table/useMasterDetailHost.js.map +1 -0
  60. package/lib/Core/Views/Table/useMasterDetailRenderer.d.ts +13 -0
  61. package/lib/Core/Views/Table/useMasterDetailRenderer.d.ts.map +1 -0
  62. package/lib/Core/Views/Table/useMasterDetailRenderer.js +23 -0
  63. package/lib/Core/Views/Table/useMasterDetailRenderer.js.map +1 -0
  64. package/lib/Core/Views/Table/useMasterDetailRow.d.ts +9 -0
  65. package/lib/Core/Views/Table/useMasterDetailRow.d.ts.map +1 -0
  66. package/lib/Core/Views/Table/useMasterDetailRow.js +55 -0
  67. package/lib/Core/Views/Table/useMasterDetailRow.js.map +1 -0
  68. package/lib/Core/Views/Table/useMasterDetailState.d.ts +21 -0
  69. package/lib/Core/Views/Table/useMasterDetailState.d.ts.map +1 -0
  70. package/lib/Core/Views/Table/useMasterDetailState.js +33 -0
  71. package/lib/Core/Views/Table/useMasterDetailState.js.map +1 -0
  72. package/lib/Core/constants.d.ts +4 -0
  73. package/lib/Core/constants.d.ts.map +1 -1
  74. package/lib/Core/constants.js +4 -0
  75. package/lib/Core/constants.js.map +1 -1
  76. package/package.json +8 -7
  77. package/lib/Core/Components/Card/hooks/useRowActions.d.ts +0 -9
  78. package/lib/Core/Components/Card/hooks/useRowActions.d.ts.map +0 -1
  79. package/lib/Core/Components/Card/hooks/useRowActions.js +0 -32
  80. package/lib/Core/Components/Card/hooks/useRowActions.js.map +0 -1
@@ -1,5 +1,4 @@
1
1
  export { default as CardHeader } from './CardHeader';
2
2
  export { default as CardFieldValue } from './CardFieldValue';
3
- export { default as useRowActions } from './hooks/useRowActions';
4
3
  export { getCardUIProps, getCardData, getCardColumns, GALLERY_IMAGE_PLACEMENT_MAP, DEFAULT_IMAGE_PLACEMENT, DEFAULT_IMAGE_SIZE, isInlinePlacement } from './cardData';
5
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../Core/Components/Card/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EACL,cAAc,EACd,WAAW,EACX,cAAc,EACd,2BAA2B,EAC3B,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../Core/Components/Card/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EACL,cAAc,EACd,WAAW,EACX,cAAc,EACd,2BAA2B,EAC3B,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,YAAY,CAAC"}
@@ -1,5 +1,4 @@
1
1
  export { default as CardHeader } from './CardHeader';
2
2
  export { default as CardFieldValue } from './CardFieldValue';
3
- export { default as useRowActions } from './hooks/useRowActions';
4
3
  export { getCardUIProps, getCardData, getCardColumns, GALLERY_IMAGE_PLACEMENT_MAP, DEFAULT_IMAGE_PLACEMENT, DEFAULT_IMAGE_SIZE, isInlinePlacement } from './cardData';
5
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../Core/Components/Card/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EACL,cAAc,EACd,WAAW,EACX,cAAc,EACd,2BAA2B,EAC3B,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,YAAY,CAAC","sourcesContent":["export { default as CardHeader } from './CardHeader';\nexport { default as CardFieldValue } from './CardFieldValue';\nexport { default as useRowActions } from './hooks/useRowActions';\nexport {\n getCardUIProps,\n getCardData,\n getCardColumns,\n GALLERY_IMAGE_PLACEMENT_MAP,\n DEFAULT_IMAGE_PLACEMENT,\n DEFAULT_IMAGE_SIZE,\n isInlinePlacement\n} from './cardData';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../Core/Components/Card/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EACL,cAAc,EACd,WAAW,EACX,cAAc,EACd,2BAA2B,EAC3B,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,YAAY,CAAC","sourcesContent":["export { default as CardHeader } from './CardHeader';\nexport { default as CardFieldValue } from './CardFieldValue';\nexport {\n getCardUIProps,\n getCardData,\n getCardColumns,\n GALLERY_IMAGE_PLACEMENT_MAP,\n DEFAULT_IMAGE_PLACEMENT,\n DEFAULT_IMAGE_SIZE,\n isInlinePlacement\n} from './cardData';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"RowActionMenu.d.ts","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/RowActionMenu.jsx"],"names":[],"mappings":";AA8DA;;;;4CAsEC;;;;;;;sBAnIqB,YAAY"}
1
+ {"version":3,"file":"RowActionMenu.d.ts","sourceRoot":"","sources":["../../../../../Core/Components/DefaultComponents/CellRenderers/RowActionMenu.jsx"],"names":[],"mappings":";AASA;;;;4CAwCC;;;;;;;sBAhDqB,YAAY"}
@@ -1,84 +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, getActionContext) => {
8
- return actions.map(action => ({
9
- ...action,
10
- primary: action.text,
11
- onClick: () => {
12
- const { rowContext, refreshRow, rowMeta } = getActionContext();
13
- action.onClick(rowContext, refreshRow, rowMeta);
14
- }
15
- }));
16
- };
17
- const isActionConfig = actionConfig => {
18
- return !!actionConfig && typeof actionConfig === 'object';
19
- };
20
- const isVisibleInMenu = (actionConfig, rowContext) => {
21
- return (isActionConfig(actionConfig) &&
22
- actionConfig.placement === 'menu' &&
23
- actionConfig.isVisible?.(rowContext));
24
- };
25
- // Row header cells share one mutable Column instance whose execution context is rebound to
26
- // whichever row is currently rendering, so its value must be read now - not later inside onClick.
27
- const resolveRowMeta = executionContext => {
28
- return {
29
- rowHeader: executionContext?.getRowHeader?.()?.getValue(),
30
- rowIndex: executionContext?.getRowIndex?.() ?? -1
31
- };
32
- };
33
- const getConfigActions = ({ editing, deleting }, rowContext, translate) => {
34
- const actions = [];
35
- if (isVisibleInMenu(editing, rowContext) && typeof editing.onClick === 'function') {
36
- actions.push({
37
- text: translate('Edit'),
38
- id: 'edit',
39
- onClick: editing.onClick
40
- });
41
- }
42
- if (isVisibleInMenu(deleting, rowContext) && typeof deleting.onClick === 'function') {
43
- actions.push({
44
- text: translate('Delete'),
45
- id: 'delete',
46
- onClick: deleting.onClick
47
- });
48
- }
49
- return actions;
50
- };
7
+ import fetchRowActions from '../../../Utils/fetchRowActions';
51
8
  function RowActionMenu({ getRsMeta, getExecutionContext, getParentContext }) {
52
9
  const [translate] = useTranslate();
53
- const { getRowActionDetails } = getExecutionContext();
54
10
  const [rowActions, setRowActions] = useState([]);
55
11
  const [actionsFetched, setActionsFetched] = useState(false);
56
12
  const rsMeta = getRsMeta();
57
- const { rowActions: tableMetaRowActions } = rsMeta;
58
- const getLatestActionContext = () => {
59
- const latestExecutionContext = getExecutionContext();
60
- const latestRowContext = latestExecutionContext?.getValue();
61
- return {
62
- rowContext: latestRowContext,
63
- refreshRow: latestExecutionContext?.refreshRow?.bind(null, latestRowContext),
64
- rowMeta: resolveRowMeta(latestExecutionContext)
65
- };
66
- };
67
- const staticActions = useMemo(() => hydrateActions(tableMetaRowActions ?? [], getLatestActionContext), [tableMetaRowActions, getExecutionContext]);
68
- const fetchCaseDeatils = () => {
13
+ const fetchCaseDetails = () => {
69
14
  setActionsFetched(false);
70
- const latestExecutionContext = getExecutionContext();
71
- const currentRowContext = latestExecutionContext?.getValue();
72
- let actions = [];
73
- const configActions = hydrateActions(getConfigActions(rsMeta, currentRowContext, translate), getLatestActionContext);
74
- getRowActionDetails(currentRowContext)
75
- .then(response => {
76
- if (Array.isArray(response)) {
77
- actions = hydrateActions(response, getLatestActionContext);
78
- }
79
- })
15
+ fetchRowActions({ getExecutionContext, meta: rsMeta, translate })
16
+ .then(setRowActions)
80
17
  .finally(() => {
81
- setRowActions([...configActions, ...actions, ...staticActions]);
82
18
  setActionsFetched(true);
83
19
  });
84
20
  };
@@ -88,7 +24,7 @@ function RowActionMenu({ getRsMeta, getExecutionContext, getParentContext }) {
88
24
  items: actionsFetched ? rowActions : [],
89
25
  emptyText: translate('No actions available'),
90
26
  loading: !actionsFetched
91
- }, "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: {
92
28
  portal: true
93
29
  }, icon: 'more' }));
94
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, getActionContext) => {\n return actions.map(action => ({\n ...action,\n primary: action.text,\n onClick: () => {\n const { rowContext, refreshRow, rowMeta } = getActionContext();\n action.onClick(rowContext, refreshRow, rowMeta);\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\n// Row header cells share one mutable Column instance whose execution context is rebound to\n// whichever row is currently rendering, so its value must be read now - not later inside onClick.\nconst resolveRowMeta = executionContext => {\n return {\n rowHeader: executionContext?.getRowHeader?.()?.getValue(),\n rowIndex: executionContext?.getRowIndex?.() ?? -1\n };\n};\n\nconst getConfigActions = ({ editing, deleting }, rowContext, 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 actions;\n};\n\nfunction RowActionMenu({ getRsMeta, getExecutionContext, getParentContext }) {\n const [translate] = useTranslate();\n const { getRowActionDetails } = getExecutionContext();\n const [rowActions, setRowActions] = useState([]);\n const [actionsFetched, setActionsFetched] = useState(false);\n const rsMeta = getRsMeta();\n const { rowActions: tableMetaRowActions } = rsMeta;\n\n const getLatestActionContext = () => {\n const latestExecutionContext = getExecutionContext();\n const latestRowContext = latestExecutionContext?.getValue();\n\n return {\n rowContext: latestRowContext,\n refreshRow: latestExecutionContext?.refreshRow?.bind(null, latestRowContext),\n rowMeta: resolveRowMeta(latestExecutionContext)\n };\n };\n\n const staticActions = useMemo(\n () => hydrateActions(tableMetaRowActions ?? [], getLatestActionContext),\n [tableMetaRowActions, getExecutionContext]\n );\n\n const fetchCaseDeatils = () => {\n setActionsFetched(false);\n const latestExecutionContext = getExecutionContext();\n const currentRowContext = latestExecutionContext?.getValue();\n let actions = [];\n const configActions = hydrateActions(\n getConfigActions(rsMeta, currentRowContext, translate),\n getLatestActionContext\n );\n getRowActionDetails(currentRowContext)\n .then(response => {\n if (Array.isArray(response)) {\n actions = hydrateActions(response, getLatestActionContext);\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":";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,gBAAgB,EAAE,GAC9E,mBAAmB,EAAE,CAAC;IAExB,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;IAClD,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;IAEjD,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;YACZ,sDAAsD;YACtD,gBAAgB,EAAE,EAAE,CAAC;QACvB,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;YAChC,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACzB,sDAAsD;gBACtD,gBAAgB,EAAE,EAAE,CAAC;YACvB,CAAC;QACH,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,CACL,KAAC,gBAAgB,IAAC,IAAI,QAAC,OAAO,EAAE,OAAO,YACpC,SAAS,GACO,CACpB,CAAC;AACJ,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, 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 data-testid={`${id}-scroll-container`}\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 data-testid={`${id}-data-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 data-testid={`${id}-scroll-container`}\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 data-testid={`${id}-data-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,