@pega/lists-react 8.20.0 → 8.21.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/VariableHeightVirtualizer.d.ts +97 -0
  2. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/VariableHeightVirtualizer.d.ts.map +1 -0
  3. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/VariableHeightVirtualizer.js +249 -0
  4. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/VariableHeightVirtualizer.js.map +1 -0
  5. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/useChildrenHeightResizeObserver.d.ts +22 -0
  6. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/useChildrenHeightResizeObserver.d.ts.map +1 -0
  7. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/useChildrenHeightResizeObserver.js +38 -0
  8. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/useChildrenHeightResizeObserver.js.map +1 -0
  9. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/useLoaderPositioning.d.ts +22 -0
  10. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/useLoaderPositioning.d.ts.map +1 -0
  11. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/useLoaderPositioning.js +45 -0
  12. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/useLoaderPositioning.js.map +1 -0
  13. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/usePagination.d.ts +49 -0
  14. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/usePagination.d.ts.map +1 -0
  15. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/usePagination.js +55 -0
  16. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/usePagination.js.map +1 -0
  17. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/useScroll.d.ts +21 -0
  18. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/useScroll.d.ts.map +1 -0
  19. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/useScroll.js +39 -0
  20. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/useScroll.js.map +1 -0
  21. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/useVirtualizerItemCount.d.ts +38 -0
  22. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/useVirtualizerItemCount.d.ts.map +1 -0
  23. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/useVirtualizerItemCount.js +62 -0
  24. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/useVirtualizerItemCount.js.map +1 -0
  25. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/utils.d.ts +112 -0
  26. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/utils.d.ts.map +1 -0
  27. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/utils.js +214 -0
  28. package/lib/Core/Components/Virtualise/VariableHeightVirtualizer/utils.js.map +1 -0
  29. package/lib/Core/Components/Virtualise/utility.d.ts +1 -1
  30. package/lib/Core/Components/Virtualise/utility.d.ts.map +1 -1
  31. package/lib/Core/Components/Virtualise/utility.js +3 -2
  32. package/lib/Core/Components/Virtualise/utility.js.map +1 -1
  33. package/lib/Core/Components/WarningBanner.d.ts +11 -0
  34. package/lib/Core/Components/WarningBanner.d.ts.map +1 -0
  35. package/lib/Core/Components/WarningBanner.js +23 -0
  36. package/lib/Core/Components/WarningBanner.js.map +1 -0
  37. package/lib/Core/Views/Gallery/index.d.ts.map +1 -1
  38. package/lib/Core/Views/Gallery/index.js +2 -1
  39. package/lib/Core/Views/Gallery/index.js.map +1 -1
  40. package/lib/Core/Views/Table/Row.d.ts +3 -1
  41. package/lib/Core/Views/Table/Row.d.ts.map +1 -1
  42. package/lib/Core/Views/Table/Row.js +5 -3
  43. package/lib/Core/Views/Table/Row.js.map +1 -1
  44. package/lib/Core/Views/Table/StyledTableContainer.d.ts.map +1 -1
  45. package/lib/Core/Views/Table/StyledTableContainer.js +4 -0
  46. package/lib/Core/Views/Table/StyledTableContainer.js.map +1 -1
  47. package/lib/Core/Views/Table/VirtualizeWrapper.d.ts +3 -1
  48. package/lib/Core/Views/Table/VirtualizeWrapper.d.ts.map +1 -1
  49. package/lib/Core/Views/Table/VirtualizeWrapper.js +18 -2
  50. package/lib/Core/Views/Table/VirtualizeWrapper.js.map +1 -1
  51. package/lib/Core/Views/Table/index.d.ts.map +1 -1
  52. package/lib/Core/Views/Table/index.js +4 -3
  53. package/lib/Core/Views/Table/index.js.map +1 -1
  54. package/lib/Core/Views/Table/useCountChange.d.ts +10 -0
  55. package/lib/Core/Views/Table/useCountChange.d.ts.map +1 -0
  56. package/lib/Core/Views/Table/useCountChange.js +39 -0
  57. package/lib/Core/Views/Table/useCountChange.js.map +1 -0
  58. package/lib/index.d.ts +1 -1
  59. package/lib/index.d.ts.map +1 -1
  60. package/lib/index.js +1 -1
  61. package/lib/index.js.map +1 -1
  62. package/package.json +8 -8
@@ -4,8 +4,14 @@ import { useCallback, useEffect, useRef, useState } from 'react';
4
4
  import { isEmpty, REPEATING_STRUCTURE_TEMPLATES } from 'pega-repeating-structures-core';
5
5
  import Virtualize from '../../Components/Virtualise';
6
6
  import VirtualizeInfinite from '../../Components/Virtualise/VirtualizeInfinite';
7
+ import VariableHeightVirtualizer from '../../Components/Virtualise/VariableHeightVirtualizer/VariableHeightVirtualizer';
7
8
  import { isPaginationRequestCompleted } from '../../Components/Virtualise/utility';
8
- export default function VirtualizeWrapper({ view, children, id, renderHeader = null, rowContainerClass = '', renderFooter = null, isFullscreen = false }) {
9
+ import EmptyContainer from '../../Components/DefaultComponents/EmptyContainer';
10
+ import useCountChange from './useCountChange';
11
+ import Row from './Row';
12
+ export default function VirtualizeWrapper({ view, children, id, renderHeader = null, rowContainerClass = '', renderFooter = null, isFullscreen = false,
13
+ // TODO: Remove this prop and deprecate older virtualizers once we fully migrate to variable row height virtualizer for gallery and grouped list views
14
+ useVariableRowHeightVirtualization = false }) {
9
15
  const isProgressiveVirtualizerEverLoaded = useRef(false);
10
16
  const paginationPayload = useRef({});
11
17
  const [isFetching, setIsFetching] = useState(false);
@@ -33,6 +39,15 @@ export default function VirtualizeWrapper({ view, children, id, renderHeader = n
33
39
  const requestedRows = paginationPayload.current.endIndex - paginationPayload.current.startIndex + 1;
34
40
  setHasMoreResults(view.rows?.length === requestedRows);
35
41
  }, [view.isInstantRender, view.state?.paginationOptions?.[id]]);
42
+ useCountChange(view, isFetching, view.getVirtualizeElement?.(id)?.notifyCountChange);
43
+ const noResultRenderer = useCallback(() => _jsx(EmptyContainer, {}), []);
44
+ if (useVariableRowHeightVirtualization) {
45
+ const paginationStartIndex = view?.state?.paginationOptions?.rootVirtualiser?.startIndex || 0;
46
+ return (_jsx(VariableHeightVirtualizer, { id: id, totalItemCount: view.totalItemCount, isDataFetching: isFetching, loadedDataRange: view?.state?.paginationOptions?.[id] || {}, apiCallback: paginationCallback, defaultItemHeight: 40, maxItemsToPaint: 5000, headerRenderer: renderHeader, footerRenderer: renderFooter, noResultRenderer: noResultRenderer, itemContainerClass: `${rowContainerClass} ${view.rowHeightClass}`, ref: r => {
47
+ view.putVirtualizeElement(id, r);
48
+ view.setScrollNode(r?.getBufferContainer());
49
+ }, viewMaxHeight: isFullscreen ? null : view.bodyHeight, minHeightWhenNoItemsRendered: '100px', children: view?.groupHeaders?.[0]?.getRows()?.map((row, index) => (_jsx(Row, { row: row, columns: view.columns, level: 0, dataIndex: paginationStartIndex + index }, row.reactKey))) }));
50
+ }
36
51
  if (infiniteModeTable) {
37
52
  return (_jsx(VirtualizeInfinite, { id: id, viewMaxHeight: isFullscreen ? null : view.bodyHeight, itemHeight: view.rowHeight, callback: paginationCallback, isFetching: isFetching, hasMoreResults: hasMoreResults, renderHeader: renderHeader, renderFooter: renderFooter, ref: r => {
38
53
  view.putVirtualizeElement(id, r);
@@ -51,6 +66,7 @@ VirtualizeWrapper.propTypes = {
51
66
  renderFooter: PropTypes.func,
52
67
  rowContainerClass: PropTypes.string,
53
68
  view: PropTypes.objectOf(PropTypes.any).isRequired,
54
- isFullscreen: PropTypes.bool
69
+ isFullscreen: PropTypes.bool,
70
+ useVariableRowHeightVirtualization: PropTypes.bool
55
71
  };
56
72
  //# sourceMappingURL=VirtualizeWrapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualizeWrapper.js","sourceRoot":"","sources":["../../../../Core/Views/Table/VirtualizeWrapper.jsx"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjE,OAAO,EAAE,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAExF,OAAO,UAAU,MAAM,6BAA6B,CAAC;AACrD,OAAO,kBAAkB,MAAM,gDAAgD,CAAC;AAChF,OAAO,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AAEnF,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,IAAI,EACJ,QAAQ,EACR,EAAE,EACF,YAAY,GAAG,IAAI,EACnB,iBAAiB,GAAG,EAAE,EACtB,YAAY,GAAG,IAAI,EACnB,YAAY,GAAG,KAAK,EACrB;IACC,MAAM,kCAAkC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,iBAAiB,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IAErC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5D,MAAM,iBAAiB,GAAG,kCAAkC,CAAC,OAAO;QAClE,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAE9D,IAAI,CAAC,iBAAiB,IAAI,CAAC,kCAAkC,CAAC,OAAO,EAAE,CAAC;QACtE,kCAAkC,CAAC,OAAO,GAAG,IAAI,CAAC;IACpD,CAAC;IAED,MAAM,kBAAkB,GAAG,WAAW,CACpC,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE;QACvB,iBAAiB,CAAC,OAAO,GAAG,OAAO,CAAC;QACpC,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC7C,CAAC,EACD,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CACvB,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,IAAI,CAAC,eAAe;YAAE,OAAO;QAEjC,MAAM,iBAAiB,GAAG,4BAA4B,CACpD,iBAAiB,CAAC,OAAO,EACzB,IAAI,CAAC,KAAK,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC,CACpC,CAAC;QACF,aAAa,CAAC,CAAC,iBAAiB,CAAC,CAAC;IACpC,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEhE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,iBAAiB,CAAC,OAAO;YAAE,OAAO;QAE/D,MAAM,aAAa,GACjB,iBAAiB,CAAC,OAAO,CAAC,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;QAChF,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,CAAC,CAAC;IACzD,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEhE,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO,CACL,KAAC,kBAAkB,IACjB,EAAE,EAAE,EAAE,EACN,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EACpD,UAAU,EAAE,IAAI,CAAC,SAAS,EAC1B,QAAQ,EAAE,kBAAkB,EAC5B,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,GAAG,EAAE,CAAC,CAAC,EAAE;gBACP,IAAI,CAAC,oBAAoB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;gBACjC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;YACnD,CAAC,EACD,iBAAiB,EAAE,GAAG,iBAAiB,IAAI,IAAI,CAAC,cAAc,EAAE,EAChE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC,EAC1C,UAAU,EAAE,IAAI,CAAC,qBAAqB,EACtC,oBAAoB,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,6BAA6B,CAAC,KAAK,YAE/E,QAAQ,GACU,CACtB,CAAC;IACJ,CAAC;IAED,OAAO,CACL,KAAC,UAAU,IACT,EAAE,EAAE,EAAE,EACN,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EACpD,gBAAgB,EAAE,IAAI,CAAC,cAAc,EACrC,UAAU,EAAE,IAAI,CAAC,SAAS,EAC1B,QAAQ,EAAE,kBAAkB,EAC5B,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,GAAG,EAAE,CAAC,CAAC,EAAE;YACP,IAAI,CAAC,oBAAoB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;QACnD,CAAC,EACD,iBAAiB,EAAE,GAAG,iBAAiB,IAAI,IAAI,CAAC,cAAc,EAAE,EAChE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC,EAC1C,oBAAoB,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,6BAA6B,CAAC,KAAK,YAE/E,QAAQ,GACE,CACd,CAAC;AACJ,CAAC;AAED,iBAAiB,CAAC,SAAS,GAAG;IAC5B,QAAQ,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU;IAC7E,EAAE,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU;IACxE,YAAY,EAAE,SAAS,CAAC,IAAI;IAC5B,YAAY,EAAE,SAAS,CAAC,IAAI;IAC5B,iBAAiB,EAAE,SAAS,CAAC,MAAM;IACnC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,UAAU;IAClD,YAAY,EAAE,SAAS,CAAC,IAAI;CAC7B,CAAC","sourcesContent":["import PropTypes from 'prop-types';\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { isEmpty, REPEATING_STRUCTURE_TEMPLATES } from 'pega-repeating-structures-core';\n\nimport Virtualize from '../../Components/Virtualise';\nimport VirtualizeInfinite from '../../Components/Virtualise/VirtualizeInfinite';\nimport { isPaginationRequestCompleted } from '../../Components/Virtualise/utility';\n\nexport default function VirtualizeWrapper({\n view,\n children,\n id,\n renderHeader = null,\n rowContainerClass = '',\n renderFooter = null,\n isFullscreen = false\n}) {\n const isProgressiveVirtualizerEverLoaded = useRef(false);\n const paginationPayload = useRef({});\n\n const [isFetching, setIsFetching] = useState(false);\n const [hasMoreResults, setHasMoreResults] = useState(false);\n\n const infiniteModeTable = isProgressiveVirtualizerEverLoaded.current\n ? false\n : !view.state?.groups?.length && isEmpty(view.resultsCount);\n\n if (!infiniteModeTable && !isProgressiveVirtualizerEverLoaded.current) {\n isProgressiveVirtualizerEverLoaded.current = true;\n }\n\n const paginationCallback = useCallback(\n (payload, payloadMeta) => {\n paginationPayload.current = payload;\n setIsFetching(true);\n view.type.onPaginate(payload, payloadMeta);\n },\n [view.type.onPaginate]\n );\n\n useEffect(() => {\n if (view.isInstantRender) return;\n\n const isRequestComplete = isPaginationRequestCompleted(\n paginationPayload.current,\n view.state?.paginationOptions?.[id]\n );\n setIsFetching(!isRequestComplete);\n }, [view.isInstantRender, view.state?.paginationOptions?.[id]]);\n\n useEffect(() => {\n if (view.isInstantRender || !paginationPayload.current) return;\n\n const requestedRows =\n paginationPayload.current.endIndex - paginationPayload.current.startIndex + 1;\n setHasMoreResults(view.rows?.length === requestedRows);\n }, [view.isInstantRender, view.state?.paginationOptions?.[id]]);\n\n if (infiniteModeTable) {\n return (\n <VirtualizeInfinite\n id={id}\n viewMaxHeight={isFullscreen ? null : view.bodyHeight}\n itemHeight={view.rowHeight}\n callback={paginationCallback}\n isFetching={isFetching}\n hasMoreResults={hasMoreResults}\n renderHeader={renderHeader}\n renderFooter={renderFooter}\n ref={r => {\n view.putVirtualizeElement(id, r);\n view.setScrollNode(r && r.vi && r.vi.bContainer);\n }}\n rowContainerClass={`${rowContainerClass} ${view.rowHeightClass}`}\n state={view.state?.paginationOptions?.[id]}\n resetCount={view.isCountUpdateRequired}\n showLoadingIndicator={view.meta.template === REPEATING_STRUCTURE_TEMPLATES.TABLE}\n >\n {children}\n </VirtualizeInfinite>\n );\n }\n\n return (\n <Virtualize\n id={id}\n viewMaxHeight={isFullscreen ? null : view.bodyHeight}\n totalRecordCount={view.totalItemCount}\n itemHeight={view.rowHeight}\n callback={paginationCallback}\n isFetching={isFetching}\n renderHeader={renderHeader}\n renderFooter={renderFooter}\n ref={r => {\n view.putVirtualizeElement(id, r);\n view.setScrollNode(r && r.vi && r.vi.bContainer);\n }}\n rowContainerClass={`${rowContainerClass} ${view.rowHeightClass}`}\n state={view.state?.paginationOptions?.[id]}\n showLoadingIndicator={view.meta.template === REPEATING_STRUCTURE_TEMPLATES.TABLE}\n >\n {children}\n </Virtualize>\n );\n}\n\nVirtualizeWrapper.propTypes = {\n children: PropTypes.oneOfType([PropTypes.object, PropTypes.array]).isRequired,\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n renderHeader: PropTypes.func,\n renderFooter: PropTypes.func,\n rowContainerClass: PropTypes.string,\n view: PropTypes.objectOf(PropTypes.any).isRequired,\n isFullscreen: PropTypes.bool\n};\n"]}
1
+ {"version":3,"file":"VirtualizeWrapper.js","sourceRoot":"","sources":["../../../../Core/Views/Table/VirtualizeWrapper.jsx"],"names":[],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { isEmpty, REPEATING_STRUCTURE_TEMPLATES } from 'pega-repeating-structures-core';\n\nimport Virtualize from '../../Components/Virtualise';\nimport VirtualizeInfinite from '../../Components/Virtualise/VirtualizeInfinite';\nimport VariableHeightVirtualizer from '../../Components/Virtualise/VariableHeightVirtualizer/VariableHeightVirtualizer';\nimport { isPaginationRequestCompleted } from '../../Components/Virtualise/utility';\nimport EmptyContainer from '../../Components/DefaultComponents/EmptyContainer';\n\nimport useCountChange from './useCountChange';\nimport Row from './Row';\n\nexport default function VirtualizeWrapper({\n view,\n children,\n id,\n renderHeader = null,\n rowContainerClass = '',\n renderFooter = null,\n isFullscreen = false,\n // TODO: Remove this prop and deprecate older virtualizers once we fully migrate to variable row height virtualizer for gallery and grouped list views\n useVariableRowHeightVirtualization = false\n}) {\n const isProgressiveVirtualizerEverLoaded = useRef(false);\n const paginationPayload = useRef({});\n\n const [isFetching, setIsFetching] = useState(false);\n const [hasMoreResults, setHasMoreResults] = useState(false);\n\n const infiniteModeTable = isProgressiveVirtualizerEverLoaded.current\n ? false\n : !view.state?.groups?.length && isEmpty(view.resultsCount);\n\n if (!infiniteModeTable && !isProgressiveVirtualizerEverLoaded.current) {\n isProgressiveVirtualizerEverLoaded.current = true;\n }\n\n const paginationCallback = useCallback(\n (payload, payloadMeta) => {\n paginationPayload.current = payload;\n setIsFetching(true);\n view.type.onPaginate(payload, payloadMeta);\n },\n [view.type.onPaginate]\n );\n\n useEffect(() => {\n if (view.isInstantRender) return;\n\n const isRequestComplete = isPaginationRequestCompleted(\n paginationPayload.current,\n view.state?.paginationOptions?.[id]\n );\n setIsFetching(!isRequestComplete);\n }, [view.isInstantRender, view.state?.paginationOptions?.[id]]);\n\n useEffect(() => {\n if (view.isInstantRender || !paginationPayload.current) return;\n\n const requestedRows =\n paginationPayload.current.endIndex - paginationPayload.current.startIndex + 1;\n setHasMoreResults(view.rows?.length === requestedRows);\n }, [view.isInstantRender, view.state?.paginationOptions?.[id]]);\n\n useCountChange(view, isFetching, view.getVirtualizeElement?.(id)?.notifyCountChange);\n\n const noResultRenderer = useCallback(() => <EmptyContainer />, []);\n if (useVariableRowHeightVirtualization) {\n const paginationStartIndex = view?.state?.paginationOptions?.rootVirtualiser?.startIndex || 0;\n return (\n <VariableHeightVirtualizer\n id={id}\n totalItemCount={view.totalItemCount}\n isDataFetching={isFetching}\n loadedDataRange={view?.state?.paginationOptions?.[id] || {}}\n apiCallback={paginationCallback}\n defaultItemHeight={40}\n maxItemsToPaint={5000}\n headerRenderer={renderHeader}\n footerRenderer={renderFooter}\n noResultRenderer={noResultRenderer}\n itemContainerClass={`${rowContainerClass} ${view.rowHeightClass}`}\n ref={r => {\n view.putVirtualizeElement(id, r);\n view.setScrollNode(r?.getBufferContainer());\n }}\n viewMaxHeight={isFullscreen ? null : view.bodyHeight}\n minHeightWhenNoItemsRendered='100px'\n >\n {view?.groupHeaders?.[0]?.getRows()?.map((row, index) => (\n <Row\n key={row.reactKey}\n row={row}\n columns={view.columns}\n level={0}\n dataIndex={paginationStartIndex + index}\n />\n ))}\n </VariableHeightVirtualizer>\n );\n }\n\n if (infiniteModeTable) {\n return (\n <VirtualizeInfinite\n id={id}\n viewMaxHeight={isFullscreen ? null : view.bodyHeight}\n itemHeight={view.rowHeight}\n callback={paginationCallback}\n isFetching={isFetching}\n hasMoreResults={hasMoreResults}\n renderHeader={renderHeader}\n renderFooter={renderFooter}\n ref={r => {\n view.putVirtualizeElement(id, r);\n view.setScrollNode(r && r.vi && r.vi.bContainer);\n }}\n rowContainerClass={`${rowContainerClass} ${view.rowHeightClass}`}\n state={view.state?.paginationOptions?.[id]}\n resetCount={view.isCountUpdateRequired}\n showLoadingIndicator={view.meta.template === REPEATING_STRUCTURE_TEMPLATES.TABLE}\n >\n {children}\n </VirtualizeInfinite>\n );\n }\n\n return (\n <Virtualize\n id={id}\n viewMaxHeight={isFullscreen ? null : view.bodyHeight}\n totalRecordCount={view.totalItemCount}\n itemHeight={view.rowHeight}\n callback={paginationCallback}\n isFetching={isFetching}\n renderHeader={renderHeader}\n renderFooter={renderFooter}\n ref={r => {\n view.putVirtualizeElement(id, r);\n view.setScrollNode(r && r.vi && r.vi.bContainer);\n }}\n rowContainerClass={`${rowContainerClass} ${view.rowHeightClass}`}\n state={view.state?.paginationOptions?.[id]}\n showLoadingIndicator={view.meta.template === REPEATING_STRUCTURE_TEMPLATES.TABLE}\n >\n {children}\n </Virtualize>\n );\n}\n\nVirtualizeWrapper.propTypes = {\n children: PropTypes.oneOfType([PropTypes.object, PropTypes.array]).isRequired,\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n renderHeader: PropTypes.func,\n renderFooter: PropTypes.func,\n rowContainerClass: PropTypes.string,\n view: PropTypes.objectOf(PropTypes.any).isRequired,\n isFullscreen: PropTypes.bool,\n useVariableRowHeightVirtualization: PropTypes.bool\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Table/index.jsx"],"names":[],"mappings":";AA4BA;;4CA8HC;;;;;;;;sBA1JqB,YAAY"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Table/index.jsx"],"names":[],"mappings":";AA6BA;;4CA4IC;;;;;;;;sBAzKqB,YAAY"}
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import PropTypes from 'prop-types';
3
3
  import { useCallback, useRef, useEffect } from 'react';
4
4
  import { useLiveLog } from '@pega/cosmos-react-core/lib/hooks';
@@ -6,6 +6,7 @@ import { useFullscreenContext, useTheme } from '@pega/cosmos-react-core';
6
6
  import { expandCollapseAllMeta } from 'pega-repeating-structures-core';
7
7
  import { createClassName as cx } from '../../Utils';
8
8
  import NotificationManager from '../../Components/NotificationManager';
9
+ import WarningBanner from '../../Components/WarningBanner';
9
10
  import Toolbar from '../../Components/Toolbar';
10
11
  import ContextMenuContainer from '../../Components/ContextMenu/ContextMenuContainer';
11
12
  import LoadingIndicator from '../../Components/LoadingIndicator';
@@ -81,9 +82,9 @@ function StyledTable({ view }) {
81
82
  }, []);
82
83
  return (_jsx(RsCardWrapper, { children: _jsxs(StyledTableContainer, { style: containerStyles, "data-test-id": 'table', className: cx('t-container', {
83
84
  'show-expand-collapse-all': view.showGroupingExpandCollapseAll
84
- }), theme: theme, view: view, isFullscreen: isFullscreen, children: [_jsx(Toolbar, { view: view }), _jsx(RenderView, { type: EXTERNAL_FILTERS, view: view }), _jsx(NotificationManager, { view: view }), _jsx(RepeatingStructureA11y, { view: view, a11yRef: a11yRef, children: _jsxs("div", { className: cx('container', view.className, {
85
+ }), theme: theme, view: view, isFullscreen: isFullscreen, children: [_jsx(WarningBanner, { warningMessages: view.warningMessages }), _jsx(Toolbar, { view: view }), _jsx(RenderView, { type: EXTERNAL_FILTERS, view: view }), _jsx(NotificationManager, { view: view }), _jsx(RepeatingStructureA11y, { view: view, a11yRef: a11yRef, children: _jsxs("div", { className: cx('container', view.className, {
85
86
  'small-screen-table': !isSmallOrAbove
86
- }), ref: containerRef, ...view.getUIProps(), onClick: onClickHandler, onKeyDown: keyDownHandler, children: [_jsx(GroupingHeaderCell, { ...view.groupingHeaderCellProps }), _jsx(Virtualiser, { id: 'rootVirtualiser', view: view, renderHeader: renderHeader, renderFooter: renderFooter, isFullscreen: isFullscreen, children: _jsx(Body, { groupHeaders: groupHeaders, columns: columns, hierarchicalGroupEnabled: view.hierarchicalGroupEnabled }) }), _jsx(LoadingIndicator, { view: view, show: !rows || !!view.isLoading }), _jsx(ContextMenuContainer, { view: view, selector: contextMenuSelector })] }) })] }) }));
87
+ }), ref: containerRef, ...view.getUIProps(), onClick: onClickHandler, onKeyDown: keyDownHandler, children: [view.state?.groups?.length ? (_jsxs(_Fragment, { children: [_jsx(GroupingHeaderCell, { ...view.groupingHeaderCellProps }), _jsx(Virtualiser, { id: 'rootVirtualiser', view: view, renderHeader: renderHeader, renderFooter: renderFooter, isFullscreen: isFullscreen, children: _jsx(Body, { groupHeaders: groupHeaders, columns: columns, hierarchicalGroupEnabled: view.hierarchicalGroupEnabled }) })] })) : (_jsx(Virtualiser, { id: 'rootVirtualiser', view: view, renderHeader: renderHeader, renderFooter: renderFooter, isFullscreen: isFullscreen, useVariableRowHeightVirtualization: true })), _jsx(LoadingIndicator, { view: view, show: !rows || !!view.isLoading }), _jsx(ContextMenuContainer, { view: view, selector: contextMenuSelector })] }) })] }) }));
87
88
  }
88
89
  StyledTable.propTypes = {
89
90
  view: PropTypes.objectOf(PropTypes.any).isRequired
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../Core/Views/Table/index.jsx"],"names":[],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport { useCallback, useRef, useEffect } from 'react';\n\nimport { useLiveLog } from '@pega/cosmos-react-core/lib/hooks';\nimport { useFullscreenContext, useTheme } from '@pega/cosmos-react-core';\nimport { expandCollapseAllMeta } from 'pega-repeating-structures-core';\n\nimport { createClassName as cx } from '../../Utils';\nimport NotificationManager from '../../Components/NotificationManager';\nimport Toolbar from '../../Components/Toolbar';\nimport ContextMenuContainer from '../../Components/ContextMenu/ContextMenuContainer';\nimport LoadingIndicator from '../../Components/LoadingIndicator';\nimport TableFooter from '../../Components/Footer';\nimport RepeatingStructureA11y from '../../Components/A11y/RepeatingStructureA11y';\nimport RenderView from '../../Components/RenderingEngine/RenderView';\nimport { EXTERNAL_FILTERS, FOCUSABLE_SELECTORS, ACTIONABLE_SELECTORS } from '../../constants';\nimport useTranslate from '../../Hooks/useTranslate';\nimport RsCardWrapper from '../RsCardWrapper';\n\nimport GroupingHeaderCell from './GroupingHeaderCell';\nimport StyledTableContainer from './StyledTableContainer';\nimport TableA11y from './TableA11y';\nimport Body from './Body';\nimport Virtualiser from './VirtualizeWrapper';\nimport Headers from './Headers';\n\nconst contextMenuSelector = { query: '.cell:not([role=\"columnheader\"])' };\n\nfunction StyledTable({ view }) {\n const isFullscreen = !!useFullscreenContext()?.[0];\n const { columns, rows, groupHeaders } = view;\n const rowHeight = 40;\n const footerHeight = 57;\n const isSmallOrAbove = view?.state?.responsive?.sm;\n const expandCollapseAllWidth = view.showGroupingExpandCollapseAll\n ? expandCollapseAllMeta.width\n : 0;\n\n const containerStyles = {\n '--row-height': `${rowHeight}px`,\n '--footer-height': `${footerHeight}px`,\n '--expand-collapse-all-width': `${expandCollapseAllWidth}px`\n };\n const renderHeader = useCallback(\n () => <Headers ref={view.setItemElement} columns={columns} isVisible={!!rows} />,\n [columns, rows, view]\n );\n const renderFooter = useCallback(() => <TableFooter view={view} />, [view]);\n\n const theme = useTheme();\n const containerRef = useRef(null);\n const { announcePolite } = useLiveLog();\n const [translate] = useTranslate();\n const a11yRef = useRef(\n new TableA11y(\n {\n topFocusRef: '.top',\n bottomFocusRef: '.bottom',\n focusElementSelector: '.cell',\n parentElementSelector: '.row',\n aboveLoader: '.above-loader',\n belowLoader: '.below-loader',\n expandCollpaseAll: '.expand-collapse-all',\n stickyGroupHeaderSelector: '.stickyGroupHeader',\n tableLoader: '.table-loader',\n footer: '.footer'\n },\n FOCUSABLE_SELECTORS,\n {\n TAB: 9,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40\n },\n null,\n announcePolite,\n translate,\n ACTIONABLE_SELECTORS,\n translate('Interactive content')\n )\n );\n\n useEffect(() => {\n a11yRef.current.setContainer(containerRef.current);\n\n return () => {\n containerRef.current = null;\n a11yRef.current = null;\n };\n }, []);\n\n useEffect(() => {\n a11yRef.current.itemsLoadedCallback();\n });\n\n const keyDownHandler = useCallback(e => {\n a11yRef.current.a11yHandler(e);\n }, []);\n\n const onClickHandler = useCallback(e => {\n const pointerType = e.nativeEvent.pointerType;\n if (pointerType) {\n a11yRef.current.clickHandler(e);\n }\n }, []);\n\n return (\n <RsCardWrapper>\n <StyledTableContainer\n style={containerStyles}\n data-test-id='table'\n className={cx('t-container', {\n 'show-expand-collapse-all': view.showGroupingExpandCollapseAll\n })}\n theme={theme}\n view={view}\n isFullscreen={isFullscreen}\n >\n <Toolbar view={view} />\n <RenderView type={EXTERNAL_FILTERS} view={view} />\n <NotificationManager view={view} />\n <RepeatingStructureA11y view={view} a11yRef={a11yRef}>\n {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */}\n <div\n className={cx('container', view.className, {\n 'small-screen-table': !isSmallOrAbove\n })}\n ref={containerRef}\n {...view.getUIProps()}\n onClick={onClickHandler}\n onKeyDown={keyDownHandler}\n >\n <GroupingHeaderCell {...view.groupingHeaderCellProps} />\n <Virtualiser\n id='rootVirtualiser'\n view={view}\n renderHeader={renderHeader}\n renderFooter={renderFooter}\n isFullscreen={isFullscreen}\n >\n <Body\n groupHeaders={groupHeaders}\n columns={columns}\n hierarchicalGroupEnabled={view.hierarchicalGroupEnabled}\n />\n </Virtualiser>\n <LoadingIndicator view={view} show={!rows || !!view.isLoading} />\n <ContextMenuContainer view={view} selector={contextMenuSelector} />\n </div>\n </RepeatingStructureA11y>\n </StyledTableContainer>\n </RsCardWrapper>\n );\n}\n\nStyledTable.propTypes = {\n view: PropTypes.objectOf(PropTypes.any).isRequired\n};\n\nexport default StyledTable;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../Core/Views/Table/index.jsx"],"names":[],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport { useCallback, useRef, useEffect } from 'react';\n\nimport { useLiveLog } from '@pega/cosmos-react-core/lib/hooks';\nimport { useFullscreenContext, useTheme } from '@pega/cosmos-react-core';\nimport { expandCollapseAllMeta } from 'pega-repeating-structures-core';\n\nimport { createClassName as cx } from '../../Utils';\nimport NotificationManager from '../../Components/NotificationManager';\nimport WarningBanner from '../../Components/WarningBanner';\nimport Toolbar from '../../Components/Toolbar';\nimport ContextMenuContainer from '../../Components/ContextMenu/ContextMenuContainer';\nimport LoadingIndicator from '../../Components/LoadingIndicator';\nimport TableFooter from '../../Components/Footer';\nimport RepeatingStructureA11y from '../../Components/A11y/RepeatingStructureA11y';\nimport RenderView from '../../Components/RenderingEngine/RenderView';\nimport { EXTERNAL_FILTERS, FOCUSABLE_SELECTORS, ACTIONABLE_SELECTORS } from '../../constants';\nimport useTranslate from '../../Hooks/useTranslate';\nimport RsCardWrapper from '../RsCardWrapper';\n\nimport GroupingHeaderCell from './GroupingHeaderCell';\nimport StyledTableContainer from './StyledTableContainer';\nimport TableA11y from './TableA11y';\nimport Body from './Body';\nimport Virtualiser from './VirtualizeWrapper';\nimport Headers from './Headers';\n\nconst contextMenuSelector = { query: '.cell:not([role=\"columnheader\"])' };\n\nfunction StyledTable({ view }) {\n const isFullscreen = !!useFullscreenContext()?.[0];\n const { columns, rows, groupHeaders } = view;\n const rowHeight = 40;\n const footerHeight = 57;\n const isSmallOrAbove = view?.state?.responsive?.sm;\n const expandCollapseAllWidth = view.showGroupingExpandCollapseAll\n ? expandCollapseAllMeta.width\n : 0;\n\n const containerStyles = {\n '--row-height': `${rowHeight}px`,\n '--footer-height': `${footerHeight}px`,\n '--expand-collapse-all-width': `${expandCollapseAllWidth}px`\n };\n const renderHeader = useCallback(\n () => <Headers ref={view.setItemElement} columns={columns} isVisible={!!rows} />,\n [columns, rows, view]\n );\n const renderFooter = useCallback(() => <TableFooter view={view} />, [view]);\n\n const theme = useTheme();\n const containerRef = useRef(null);\n const { announcePolite } = useLiveLog();\n const [translate] = useTranslate();\n const a11yRef = useRef(\n new TableA11y(\n {\n topFocusRef: '.top',\n bottomFocusRef: '.bottom',\n focusElementSelector: '.cell',\n parentElementSelector: '.row',\n aboveLoader: '.above-loader',\n belowLoader: '.below-loader',\n expandCollpaseAll: '.expand-collapse-all',\n stickyGroupHeaderSelector: '.stickyGroupHeader',\n tableLoader: '.table-loader',\n footer: '.footer'\n },\n FOCUSABLE_SELECTORS,\n {\n TAB: 9,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40\n },\n null,\n announcePolite,\n translate,\n ACTIONABLE_SELECTORS,\n translate('Interactive content')\n )\n );\n\n useEffect(() => {\n a11yRef.current.setContainer(containerRef.current);\n\n return () => {\n containerRef.current = null;\n a11yRef.current = null;\n };\n }, []);\n\n useEffect(() => {\n a11yRef.current.itemsLoadedCallback();\n });\n\n const keyDownHandler = useCallback(e => {\n a11yRef.current.a11yHandler(e);\n }, []);\n\n const onClickHandler = useCallback(e => {\n const pointerType = e.nativeEvent.pointerType;\n if (pointerType) {\n a11yRef.current.clickHandler(e);\n }\n }, []);\n\n return (\n <RsCardWrapper>\n <StyledTableContainer\n style={containerStyles}\n data-test-id='table'\n className={cx('t-container', {\n 'show-expand-collapse-all': view.showGroupingExpandCollapseAll\n })}\n theme={theme}\n view={view}\n isFullscreen={isFullscreen}\n >\n <WarningBanner warningMessages={view.warningMessages} />\n <Toolbar view={view} />\n <RenderView type={EXTERNAL_FILTERS} view={view} />\n <NotificationManager view={view} />\n <RepeatingStructureA11y view={view} a11yRef={a11yRef}>\n {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */}\n <div\n className={cx('container', view.className, {\n 'small-screen-table': !isSmallOrAbove\n })}\n ref={containerRef}\n {...view.getUIProps()}\n onClick={onClickHandler}\n onKeyDown={keyDownHandler}\n >\n {view.state?.groups?.length ? (\n <>\n <GroupingHeaderCell {...view.groupingHeaderCellProps} />\n <Virtualiser\n id='rootVirtualiser'\n view={view}\n renderHeader={renderHeader}\n renderFooter={renderFooter}\n isFullscreen={isFullscreen}\n >\n <Body\n groupHeaders={groupHeaders}\n columns={columns}\n hierarchicalGroupEnabled={view.hierarchicalGroupEnabled}\n />\n </Virtualiser>\n </>\n ) : (\n <Virtualiser\n id='rootVirtualiser'\n view={view}\n renderHeader={renderHeader}\n renderFooter={renderFooter}\n isFullscreen={isFullscreen}\n useVariableRowHeightVirtualization\n />\n )}\n <LoadingIndicator view={view} show={!rows || !!view.isLoading} />\n <ContextMenuContainer view={view} selector={contextMenuSelector} />\n </div>\n </RepeatingStructureA11y>\n </StyledTableContainer>\n </RsCardWrapper>\n );\n}\n\nStyledTable.propTypes = {\n view: PropTypes.objectOf(PropTypes.any).isRequired\n};\n\nexport default StyledTable;\n"]}
@@ -0,0 +1,10 @@
1
+ import type { RsCoreTypes } from 'pega-repeating-structures-core';
2
+ /**
3
+ * Detects changes in specific properties of a view's state as those can impact the count across renders.
4
+ *
5
+ * @param view - The view object containing state and metadata to monitor for changes.
6
+ * @param isDataFetching - A boolean flag indicating if data is currently being fetched.
7
+ * @param onCountChange - Callback to run when properties impacting the count change.
8
+ */
9
+ export default function useCountChange(view: RsCoreTypes.View, isDataFetching: boolean, onCountChange: () => void): void;
10
+ //# sourceMappingURL=useCountChange.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCountChange.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Table/useCountChange.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CACpC,IAAI,EAAE,WAAW,CAAC,IAAI,EACtB,cAAc,EAAE,OAAO,EACvB,aAAa,EAAE,MAAM,IAAI,QAoC1B"}
@@ -0,0 +1,39 @@
1
+ import { useRef, useEffect } from 'react';
2
+ /**
3
+ * Detects changes in specific properties of a view's state as those can impact the count across renders.
4
+ *
5
+ * @param view - The view object containing state and metadata to monitor for changes.
6
+ * @param isDataFetching - A boolean flag indicating if data is currently being fetched.
7
+ * @param onCountChange - Callback to run when properties impacting the count change.
8
+ */
9
+ export default function useCountChange(view, isDataFetching, onCountChange) {
10
+ const getCurrentValues = () => ({
11
+ filterExpression: view.state.filterExpression,
12
+ searchQuery: view.state.search?.query,
13
+ externalFilterValue: view.state.externalState?.[view.meta?.externalFilters ?? ''],
14
+ refresh: view.state.refresh,
15
+ searchText: view.state.searchText
16
+ });
17
+ const prevValuesRef = useRef(null);
18
+ const valueKeys = [
19
+ 'filterExpression',
20
+ 'searchQuery',
21
+ 'externalFilterValue',
22
+ 'refresh',
23
+ 'searchText'
24
+ ];
25
+ useEffect(() => {
26
+ if (isDataFetching)
27
+ return;
28
+ const currentValues = getCurrentValues();
29
+ const prevValues = prevValuesRef.current;
30
+ if (prevValues !== null) {
31
+ const changed = valueKeys.some(key => currentValues[key] !== prevValues[key]);
32
+ if (changed) {
33
+ onCountChange?.();
34
+ }
35
+ }
36
+ prevValuesRef.current = currentValues;
37
+ }, [view, isDataFetching, onCountChange]);
38
+ }
39
+ //# sourceMappingURL=useCountChange.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCountChange.js","sourceRoot":"","sources":["../../../../Core/Views/Table/useCountChange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAI1C;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CACpC,IAAsB,EACtB,cAAuB,EACvB,aAAyB;IAEzB,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,CAAC;QAC9B,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB;QAC7C,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK;QACrC,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,IAAI,EAAE,CAAC;QACjF,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;QAC3B,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU;KAClC,CAAC,CAAC;IAGH,MAAM,aAAa,GAAG,MAAM,CAAuB,IAAI,CAAC,CAAC;IAEzD,MAAM,SAAS,GAA4B;QACzC,kBAAkB;QAClB,aAAa;QACb,qBAAqB;QACrB,SAAS;QACT,YAAY;KACb,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,cAAc;YAAE,OAAO;QAE3B,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;QACzC,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC;QAEzC,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9E,IAAI,OAAO,EAAE,CAAC;gBACZ,aAAa,EAAE,EAAE,CAAC;YACpB,CAAC;QACH,CAAC;QAED,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC;IACxC,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC;AAC5C,CAAC","sourcesContent":["import { useRef, useEffect } from 'react';\n\nimport type { RsCoreTypes } from 'pega-repeating-structures-core';\n\n/**\n * Detects changes in specific properties of a view's state as those can impact the count across renders.\n *\n * @param view - The view object containing state and metadata to monitor for changes.\n * @param isDataFetching - A boolean flag indicating if data is currently being fetched.\n * @param onCountChange - Callback to run when properties impacting the count change.\n */\nexport default function useCountChange(\n view: RsCoreTypes.View,\n isDataFetching: boolean,\n onCountChange: () => void\n) {\n const getCurrentValues = () => ({\n filterExpression: view.state.filterExpression,\n searchQuery: view.state.search?.query,\n externalFilterValue: view.state.externalState?.[view.meta?.externalFilters ?? ''],\n refresh: view.state.refresh,\n searchText: view.state.searchText\n });\n\n type CurrentValues = ReturnType<typeof getCurrentValues>;\n const prevValuesRef = useRef<CurrentValues | null>(null);\n\n const valueKeys: (keyof CurrentValues)[] = [\n 'filterExpression',\n 'searchQuery',\n 'externalFilterValue',\n 'refresh',\n 'searchText'\n ];\n\n useEffect(() => {\n if (isDataFetching) return;\n\n const currentValues = getCurrentValues();\n const prevValues = prevValuesRef.current;\n\n if (prevValues !== null) {\n const changed = valueKeys.some(key => currentValues[key] !== prevValues[key]);\n if (changed) {\n onCountChange?.();\n }\n }\n\n prevValuesRef.current = currentValues;\n }, [view, isDataFetching, onCountChange]);\n}\n"]}
package/lib/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { default as RepeatingStructures } from './Core/Components/RSWrapper/index';
2
- export { convertMetaIntoState, UPDATE_DEBUG_INFO, TOGGLE_DISABLE_SELECTION, TOGGLE_REQUIRED, NOTIFY_DATA_REFRESH, USER_CONFIRMATION_ACTION, SET_IN_EXTERNAL_STATE, UPDATE_SELECTED_ROWS } from 'pega-repeating-structures-core';
2
+ export { convertMetaIntoState, UPDATE_DEBUG_INFO, TOGGLE_DISABLE_SELECTION, TOGGLE_REQUIRED, NOTIFY_DATA_REFRESH, USER_CONFIRMATION_ACTION, SET_IN_EXTERNAL_STATE, UPDATE_SELECTED_ROWS, SET_WARNING_MESSAGES } from 'pega-repeating-structures-core';
3
3
  export { EXTERNAL_FILTERS, FOCUSABLE_SELECTORS, ACTIONABLE_SELECTORS } from './Core/constants';
4
4
  export type { RSTypes } from './types';
5
5
  export type { RepeatingStructuresProps } from './types/RepeatingStructuresBoot.types';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAGnF,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,wBAAwB,EACxB,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE/F,YAAY,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,YAAY,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AAEtF,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAGnF,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,wBAAwB,EACxB,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE/F,YAAY,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,YAAY,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AAEtF,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC"}
package/lib/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export { default as RepeatingStructures } from './Core/Components/RSWrapper/index';
2
2
  // FIXME: revisit these imports
3
- export { convertMetaIntoState, UPDATE_DEBUG_INFO, TOGGLE_DISABLE_SELECTION, TOGGLE_REQUIRED, NOTIFY_DATA_REFRESH, USER_CONFIRMATION_ACTION, SET_IN_EXTERNAL_STATE, UPDATE_SELECTED_ROWS } from 'pega-repeating-structures-core';
3
+ export { convertMetaIntoState, UPDATE_DEBUG_INFO, TOGGLE_DISABLE_SELECTION, TOGGLE_REQUIRED, NOTIFY_DATA_REFRESH, USER_CONFIRMATION_ACTION, SET_IN_EXTERNAL_STATE, UPDATE_SELECTED_ROWS, SET_WARNING_MESSAGES } from 'pega-repeating-structures-core';
4
4
  // Dispatch Action constants that is used by consumer in order to send particular actions to Repeating structures
5
5
  export { EXTERNAL_FILTERS, FOCUSABLE_SELECTORS, ACTIONABLE_SELECTORS } from './Core/constants';
6
6
  export { ROW_DENSITY } from 'pega-repeating-structures-core';
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAEnF,+BAA+B;AAC/B,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,wBAAwB,EACxB,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,gCAAgC,CAAC;AAExC,iHAAiH;AACjH,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAK/F,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC","sourcesContent":["export { default as RepeatingStructures } from './Core/Components/RSWrapper/index';\n\n// FIXME: revisit these imports\nexport {\n convertMetaIntoState,\n UPDATE_DEBUG_INFO,\n TOGGLE_DISABLE_SELECTION,\n TOGGLE_REQUIRED,\n NOTIFY_DATA_REFRESH,\n USER_CONFIRMATION_ACTION,\n SET_IN_EXTERNAL_STATE,\n UPDATE_SELECTED_ROWS\n} from 'pega-repeating-structures-core';\n\n// Dispatch Action constants that is used by consumer in order to send particular actions to Repeating structures\nexport { EXTERNAL_FILTERS, FOCUSABLE_SELECTORS, ACTIONABLE_SELECTORS } from './Core/constants';\n\nexport type { RSTypes } from './types';\nexport type { RepeatingStructuresProps } from './types/RepeatingStructuresBoot.types';\n\nexport { ROW_DENSITY } from 'pega-repeating-structures-core';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAEnF,+BAA+B;AAC/B,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,wBAAwB,EACxB,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,gCAAgC,CAAC;AAExC,iHAAiH;AACjH,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAK/F,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC","sourcesContent":["export { default as RepeatingStructures } from './Core/Components/RSWrapper/index';\n\n// FIXME: revisit these imports\nexport {\n convertMetaIntoState,\n UPDATE_DEBUG_INFO,\n TOGGLE_DISABLE_SELECTION,\n TOGGLE_REQUIRED,\n NOTIFY_DATA_REFRESH,\n USER_CONFIRMATION_ACTION,\n SET_IN_EXTERNAL_STATE,\n UPDATE_SELECTED_ROWS,\n SET_WARNING_MESSAGES\n} from 'pega-repeating-structures-core';\n\n// Dispatch Action constants that is used by consumer in order to send particular actions to Repeating structures\nexport { EXTERNAL_FILTERS, FOCUSABLE_SELECTORS, ACTIONABLE_SELECTORS } from './Core/constants';\n\nexport type { RSTypes } from './types';\nexport type { RepeatingStructuresProps } from './types/RepeatingStructuresBoot.types';\n\nexport { ROW_DENSITY } from 'pega-repeating-structures-core';\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pega/lists-react",
3
- "version": "8.20.0",
3
+ "version": "8.21.1",
4
4
  "description": "Repeating view structures such as Table, Gallery(Repeating layouts), Kanban etc.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "author": "Pegasystems",
@@ -14,10 +14,10 @@
14
14
  "build": "tsc -b tsconfig.build.json"
15
15
  },
16
16
  "dependencies": {
17
- "@pega/cosmos-react-condition-builder": "8.20.0",
18
- "@pega/cosmos-react-core": "8.20.0",
19
- "@pega/cosmos-react-rte": "8.20.0",
20
- "@pega/cosmos-react-work": "8.20.0",
17
+ "@pega/cosmos-react-condition-builder": "8.21.1",
18
+ "@pega/cosmos-react-core": "8.21.1",
19
+ "@pega/cosmos-react-rte": "8.21.1",
20
+ "@pega/cosmos-react-work": "8.21.1",
21
21
  "@types/lodash.get": "^4.4.9",
22
22
  "@types/react": "^17.0.62 || ^18.3.3",
23
23
  "@types/react-dom": "^17.0.20 || ^18.3.0",
@@ -25,8 +25,8 @@
25
25
  "dayjs": "^1.11.13",
26
26
  "fast-deep-equal": "^3.1.3",
27
27
  "lodash.get": "^4.4.2",
28
- "pega-repeating-structures-core": "npm:@pega/lists-core@8.20.0",
29
- "pega-ui-list-data-apis": "npm:@pega/lists-core-utils@8.20.0",
28
+ "pega-repeating-structures-core": "npm:@pega/lists-core@8.21.1",
29
+ "pega-ui-list-data-apis": "npm:@pega/lists-core-utils@8.21.1",
30
30
  "polished": "^4.1.0",
31
31
  "prop-types": "^15.8.1",
32
32
  "react": "^17.0.0 || ^18.0.0",
@@ -45,7 +45,7 @@
45
45
  "@testing-library/react": "^16.0.0",
46
46
  "@testing-library/user-event": "^14.6.1",
47
47
  "jest-axe": "^8.0.0",
48
- "srs-utils": "8.20.0",
48
+ "srs-utils": "8.21.1",
49
49
  "typescript": "~5.8.3"
50
50
  }
51
51
  }