@pega/lists-react 9.0.0-build.19.7 → 9.0.0-build.19.8
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.
- package/lib/Core/Components/DefaultComponents/EmptyContainer.d.ts +3 -1
- package/lib/Core/Components/DefaultComponents/EmptyContainer.d.ts.map +1 -1
- package/lib/Core/Components/DefaultComponents/EmptyContainer.js +11 -2
- package/lib/Core/Components/DefaultComponents/EmptyContainer.js.map +1 -1
- package/lib/Core/Components/DefaultComponents/index.d.ts +3 -1
- package/lib/Core/Components/DefaultComponents/index.d.ts.map +1 -1
- package/lib/Core/Components/Virtualise/Pagination.d.ts.map +1 -1
- package/lib/Core/Components/Virtualise/Pagination.js +2 -1
- package/lib/Core/Components/Virtualise/Pagination.js.map +1 -1
- package/lib/Core/Components/Virtualise/UseScroll.d.ts +4 -1
- package/lib/Core/Components/Virtualise/UseScroll.d.ts.map +1 -1
- package/lib/Core/Components/Virtualise/UseScroll.js +16 -3
- package/lib/Core/Components/Virtualise/UseScroll.js.map +1 -1
- package/lib/Core/Components/Virtualise/VirtualizeInfinite.js +5 -1
- package/lib/Core/Components/Virtualise/VirtualizeInfinite.js.map +1 -1
- package/lib/Core/Views/Gallery/index.js +1 -1
- package/lib/Core/Views/Gallery/index.js.map +1 -1
- package/lib/Core/Views/Gallery/utils.d.ts.map +1 -1
- package/lib/Core/Views/Gallery/utils.js +3 -2
- package/lib/Core/Views/Gallery/utils.js.map +1 -1
- package/lib/Core/Views/Map/index.d.ts.map +1 -1
- package/lib/Core/Views/Map/index.js +1 -1
- package/lib/Core/Views/Map/index.js.map +1 -1
- package/lib/Core/Views/Table/TableA11y.d.ts +10 -0
- package/lib/Core/Views/Table/TableA11y.d.ts.map +1 -1
- package/lib/Core/Views/Table/TableA11y.js +185 -0
- package/lib/Core/Views/Table/TableA11y.js.map +1 -1
- package/lib/Core/Views/Table/VirtualizeWrapper.d.ts.map +1 -1
- package/lib/Core/Views/Table/VirtualizeWrapper.js +3 -1
- package/lib/Core/Views/Table/VirtualizeWrapper.js.map +1 -1
- package/lib/Core/Views/Table/index.d.ts.map +1 -1
- package/lib/Core/Views/Table/index.js +5 -3
- package/lib/Core/Views/Table/index.js.map +1 -1
- package/lib/Core/Views/Timeline/index.d.ts.map +1 -1
- package/lib/Core/Views/Timeline/index.js +1 -1
- package/lib/Core/Views/Timeline/index.js.map +1 -1
- package/package.json +7 -7
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export default EmptyContainer;
|
|
2
|
-
declare function EmptyContainer({ message }: {
|
|
2
|
+
declare function EmptyContainer({ message, shouldAnnounce, domContainer }: {
|
|
3
3
|
message: any;
|
|
4
|
+
shouldAnnounce: any;
|
|
5
|
+
domContainer: any;
|
|
4
6
|
}): import("react/jsx-runtime").JSX.Element;
|
|
5
7
|
//# sourceMappingURL=EmptyContainer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyContainer.d.ts","sourceRoot":"","sources":["../../../../Core/Components/DefaultComponents/EmptyContainer.jsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"EmptyContainer.d.ts","sourceRoot":"","sources":["../../../../Core/Components/DefaultComponents/EmptyContainer.jsx"],"names":[],"mappings":";AAuBA;;;;4CAqBC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import styled from 'styled-components';
|
|
3
|
-
import {
|
|
3
|
+
import { useEffect } from 'react';
|
|
4
|
+
import { defaultThemeProp, EmptyState, useLiveLog } from '@pega/cosmos-react-core';
|
|
4
5
|
import TestIdConstants from '../TestIdConstants';
|
|
5
6
|
const EmptyContainerStyle = styled.div `
|
|
6
7
|
position: absolute;
|
|
@@ -16,7 +17,15 @@ const EmptyContainerStyle = styled.div `
|
|
|
16
17
|
overflow: hidden;
|
|
17
18
|
`;
|
|
18
19
|
EmptyContainerStyle.defaultProps = defaultThemeProp;
|
|
19
|
-
const EmptyContainer = ({ message }) => {
|
|
20
|
+
const EmptyContainer = ({ message, shouldAnnounce, domContainer }) => {
|
|
21
|
+
const { announcePolite } = useLiveLog();
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
if (shouldAnnounce &&
|
|
24
|
+
typeof document !== 'undefined' &&
|
|
25
|
+
domContainer?.contains(document.activeElement)) {
|
|
26
|
+
announcePolite({ message });
|
|
27
|
+
}
|
|
28
|
+
}, [shouldAnnounce, message, announcePolite, domContainer]);
|
|
20
29
|
return (_jsx(EmptyContainerStyle, { "data-test-id": TestIdConstants.noRecords, "data-testid": TestIdConstants.noRecords, children: _jsx(EmptyState, { message: message }) }));
|
|
21
30
|
};
|
|
22
31
|
export default EmptyContainer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyContainer.js","sourceRoot":"","sources":["../../../../Core/Components/DefaultComponents/EmptyContainer.jsx"],"names":[],"mappings":";AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"EmptyContainer.js","sourceRoot":"","sources":["../../../../Core/Components/DefaultComponents/EmptyContainer.jsx"],"names":[],"mappings":";AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAEnF,OAAO,eAAe,MAAM,oBAAoB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;gBAUtB,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;;CAEtE,CAAC;AAEF,mBAAmB,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAEpD,MAAM,cAAc,GAAG,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,EAAE,EAAE;IACnE,MAAM,EAAE,cAAc,EAAE,GAAG,UAAU,EAAE,CAAC;IAExC,SAAS,CAAC,GAAG,EAAE;QACb,IACE,cAAc;YACd,OAAO,QAAQ,KAAK,WAAW;YAC/B,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAC9C,CAAC;YACD,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,EAAE,CAAC,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC;IAE5D,OAAO,CACL,KAAC,mBAAmB,oBACJ,eAAe,CAAC,SAAS,iBAC1B,eAAe,CAAC,SAAS,YAEtC,KAAC,UAAU,IAAC,OAAO,EAAE,OAAO,GAAI,GACZ,CACvB,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC","sourcesContent":["import styled from 'styled-components';\nimport { useEffect } from 'react';\n\nimport { defaultThemeProp, EmptyState, useLiveLog } from '@pega/cosmos-react-core';\n\nimport TestIdConstants from '../TestIdConstants';\n\nconst EmptyContainerStyle = styled.div`\n position: absolute;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n top: var(--row-height, 0);\n left: 0;\n right: 0;\n bottom: 0;\n background: ${props => props.theme.base.palette['primary-background']};\n overflow: hidden;\n`;\n\nEmptyContainerStyle.defaultProps = defaultThemeProp;\n\nconst EmptyContainer = ({ message, shouldAnnounce, domContainer }) => {\n const { announcePolite } = useLiveLog();\n\n useEffect(() => {\n if (\n shouldAnnounce &&\n typeof document !== 'undefined' &&\n domContainer?.contains(document.activeElement)\n ) {\n announcePolite({ message });\n }\n }, [shouldAnnounce, message, announcePolite, domContainer]);\n\n return (\n <EmptyContainerStyle\n data-test-id={TestIdConstants.noRecords}\n data-testid={TestIdConstants.noRecords}\n >\n <EmptyState message={message} />\n </EmptyContainerStyle>\n );\n};\n\nexport default EmptyContainer;\n"]}
|
|
@@ -62,8 +62,10 @@ declare const _default: {
|
|
|
62
62
|
sortRenderer: typeof sort;
|
|
63
63
|
filterRenderer: typeof Filter;
|
|
64
64
|
headerCellRenderer: typeof HeaderCell;
|
|
65
|
-
emptyContainerRenderer: ({ message }: {
|
|
65
|
+
emptyContainerRenderer: ({ message, shouldAnnounce, domContainer }: {
|
|
66
66
|
message: any;
|
|
67
|
+
shouldAnnounce: any;
|
|
68
|
+
domContainer: any;
|
|
67
69
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
68
70
|
loadingIndicator: typeof LoadingIndicator;
|
|
69
71
|
rowHeightRenderer: typeof RowHeightRenderer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../Core/Components/DefaultComponents/index.jsx"],"names":[],"mappings":"AA4BA,uGAKC;;;;;;;;;;AAUD,mGASC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../Core/Components/DefaultComponents/index.jsx"],"names":[],"mappings":"AA4BA,uGAKC;;;;;;;;;;AAUD,mGASC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBApDqB,YAAY;iBAEjB,QAAQ;mBACN,UAAU;uBAEN,cAAc;6BAER,oBAAoB;8BACnB,aAAa;4CAEC,2BAA2B;8CACzB,6BAA6B;8BAC7C,qBAAqB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../../../Core/Components/Virtualise/Pagination.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../../../Core/Components/Virtualise/Pagination.js"],"names":[],"mappings":"AAoQA;;;;;;;;;;EAsBC;AAzRD,gCAAiC,qBAAqB,CAAC"}
|
|
@@ -117,7 +117,8 @@ function getOptimalInfo(target, rowHeight, rContainer, bufferContainer, oldEleme
|
|
|
117
117
|
const INITIAL_BUFFER = 10;
|
|
118
118
|
const buffer = INITIAL_BUFFER * bufferMultiplier;
|
|
119
119
|
let bottomBufferIndex = buffer * 5;
|
|
120
|
-
|
|
120
|
+
// Since in Infinite scroll, the records need to be fetched in one direction only, fetching more records reduce the number of API calls.
|
|
121
|
+
const scrollDirectionBuffer = isInfiniteScroll ? buffer * 4 : buffer * 2;
|
|
121
122
|
const scrollOppositeDirectionBuffer = buffer;
|
|
122
123
|
let rowsInView = heightComposingOldElementCount
|
|
123
124
|
? Math.floor((oldElementCount / heightComposingOldElementCount) * target.offsetHeight)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pagination.js","sourceRoot":"","sources":["../../../../Core/Components/Virtualise/Pagination.js"],"names":[],"mappings":"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","sourcesContent":["const RowIndexAttribute = 'data-index';\nexport const StickyGroupHeader = 'sticky-group-header';\n\nfunction getKeyWithMaxValueFromMap(map) {\n if (!map) return;\n return [...map.entries()].reduce((a, b) => (b[1] > a[1] ? b : a))[0];\n}\n\n// Find nearest element to view.\n// It always find nearest element from top left of container.\nfunction getNearestElementTo(rContainer, targetBoundingBox) {\n const elements = Array.from(rContainer.childNodes);\n const itemCoords = [];\n const items = [];\n const overlappingGroupHeadersCountMap = new Map();\n\n elements.forEach(item => {\n const rect = item.getBoundingClientRect();\n const inHorizontalBoundaries =\n rect.right >= targetBoundingBox.left && rect.left <= targetBoundingBox.right;\n // considering only those items which are in view area.\n if (\n (rect.top >= targetBoundingBox.top &&\n rect.top <= targetBoundingBox.bottom &&\n inHorizontalBoundaries) ||\n (rect.bottom >= targetBoundingBox.top &&\n rect.bottom <= targetBoundingBox.bottom &&\n inHorizontalBoundaries)\n ) {\n itemCoords.push([rect.left, rect.bottom]);\n items.push(item);\n }\n });\n const distances = [];\n itemCoords.forEach((itemCoord, index) => {\n const distance = Math.hypot(\n itemCoord[0] - targetBoundingBox.left,\n itemCoord[1] - targetBoundingBox.top\n );\n const parsedDistance = parseInt(distance, 10);\n distances.push(parsedDistance);\n\n // Keeping track of group header distances to identify the overlap due to sticky position.\n // The distance with max count will represent the sub-group user is actually seeing.\n if (items[index]?.classList?.contains(StickyGroupHeader)) {\n overlappingGroupHeadersCountMap.set(\n parsedDistance,\n (overlappingGroupHeadersCountMap.get(parsedDistance) || 0) + 1\n );\n }\n });\n\n if (distances.length) {\n // BUG-740809 The closest item to view in case of sticky-group-header is first visible sticky-group-header\n const closestItemIndexFromTop = distances.lastIndexOf(Math.min(...distances));\n\n let closestItemFromTop = items[closestItemIndexFromTop];\n /**\n * BUG-81875: Considering sticky sub-group headers\n * When nested grouping is applied and groups have sticky position, the parent group will always be on the top and nested group headers will come after that.\n * Due to this, the nearest element will always be the parent group header even though user might have scrolled down some sub-group header.\n * Actual nearest element should be the sub-group visible to the user.\n */\n if (closestItemFromTop.classList?.contains(StickyGroupHeader)) {\n const topVisibleGroupKey = getKeyWithMaxValueFromMap(overlappingGroupHeadersCountMap);\n closestItemFromTop = items[distances.lastIndexOf(topVisibleGroupKey)];\n }\n const closestItemIndexFromBottom = distances.lastIndexOf(Math.max(...distances));\n\n if (targetBoundingBox.height === 0) {\n closestItemFromTop = elements[0];\n }\n return [closestItemFromTop, items[closestItemIndexFromBottom]];\n }\n return [];\n}\n\n// When element is present in view , find which direction has\n// enough count as we need to get record in another direction.\n// direction 1 - up, -1 - down\n// Nearest element is one which lies in view boundary.\n\nfunction getDirectionWhereCountIsEnough(nearestViewElement, currentRowIndex, targetBoundingBox) {\n let previousSiblingsCountAboveView = 0;\n let nextSiblingsCountBelowView = 0;\n let startElement = nearestViewElement;\n let dir = 1;\n if (currentRowIndex !== 0 && !startElement.previousElementSibling) dir = -1;\n else {\n while (startElement.previousElementSibling) {\n // BUG-740809 in case of overlapped sticky-group-header the previousElementSibling are at same 'top' location\n if (startElement.previousElementSibling.classList.contains(StickyGroupHeader)) {\n previousSiblingsCountAboveView += 1;\n } else {\n const itemCoords = startElement.previousElementSibling.getBoundingClientRect();\n if (itemCoords.bottom < targetBoundingBox.top) previousSiblingsCountAboveView += 1;\n }\n startElement = startElement.previousElementSibling;\n }\n if (nearestViewElement.classList.contains(StickyGroupHeader))\n previousSiblingsCountAboveView -= 1;\n if (parseInt(startElement.getAttribute(RowIndexAttribute), 10) === 0) dir = 1;\n else {\n startElement = nearestViewElement;\n while (startElement.nextElementSibling) {\n const itemCoords = startElement.nextElementSibling.getBoundingClientRect();\n if (itemCoords.top > targetBoundingBox.bottom) nextSiblingsCountBelowView += 1;\n startElement = startElement.nextElementSibling;\n }\n // iterate in either direction where count is more\n // until you find top element whose left match with nearest view element match.\n // and matched index will be either top or bottom buffer index.\n if (currentRowIndex !== 0 && nextSiblingsCountBelowView >= previousSiblingsCountAboveView)\n dir = -1;\n }\n }\n return dir;\n}\n\n// Get start and end index which view represent at any monument.\n// Add extra information as well to adjust virtualiser position.\n\nfunction getOptimalInfo(\n target,\n rowHeight,\n rContainer,\n bufferContainer,\n oldElementCount,\n heightComposingOldElementCount,\n totalRecords,\n bufferMultiplier,\n isRefresh,\n isInfiniteScroll\n) {\n let currentRowIndex = 0;\n let topRowIndex = 0;\n let topBufferIndex = 0;\n let existingItemBoundingBox;\n\n // Estimated buffer count based on view height and row container count.\n // Increase in buffer count can improve performance.\n // A safeguard value which will apply on initial load.\n const INITIAL_BUFFER = 10;\n const buffer = INITIAL_BUFFER * bufferMultiplier;\n let bottomBufferIndex = buffer * 5;\n const scrollDirectionBuffer = buffer * 2;\n const scrollOppositeDirectionBuffer = buffer;\n\n let rowsInView = heightComposingOldElementCount\n ? Math.floor((oldElementCount / heightComposingOldElementCount) * target.offsetHeight)\n : 0;\n rowsInView = Number.isNaN(rowsInView) ? 0 : rowsInView;\n\n if (totalRecords > 0) {\n const targetBoundingBox = target.getBoundingClientRect();\n const rowConBoundingBox = rContainer.getBoundingClientRect();\n\n // Check if any element exist in current view. Calculation will change the required index\n // As we have to fix the container to not show any flicker.\n const [nearestViewElementFromTop, nearestViewElementFromBottom] = getNearestElementTo(\n rContainer,\n targetBoundingBox\n );\n if (nearestViewElementFromTop) {\n currentRowIndex = parseInt(nearestViewElementFromTop.getAttribute(RowIndexAttribute), 10);\n existingItemBoundingBox = nearestViewElementFromTop.getBoundingClientRect();\n\n // check how long this nearest item is from top of view.\n // to estimate top row index ( What could be possible index on view top.)\n const spaceInMid = existingItemBoundingBox.top - targetBoundingBox.top;\n const elementsInMid = Math.floor(\n (oldElementCount / heightComposingOldElementCount) * spaceInMid\n );\n topRowIndex = elementsInMid < 0 ? currentRowIndex : currentRowIndex - elementsInMid;\n } else {\n currentRowIndex =\n Math.floor((target.scrollTop / heightComposingOldElementCount) * oldElementCount) || 0;\n topRowIndex = currentRowIndex;\n }\n\n // If element exist in current view, traverse dom elements\n // to find top buffer index or bottom buffer index\n // where left match to not change layout.\n if (existingItemBoundingBox) {\n let dir = 1;\n\n // We will consider direction 1 always in case of refresh as item count might have been changed.\n // change in item count is always from downside.\n if (!isRefresh)\n dir = getDirectionWhereCountIsEnough(\n nearestViewElementFromTop,\n currentRowIndex,\n targetBoundingBox\n );\n\n // We will iterate either upside or downside and pick that element\n // which we can select as either top buffer or botton buffer and don't\n // change layout as well and go for max iteration of buffer.\n let maxIteration = buffer;\n let startElement = dir === 1 ? nearestViewElementFromTop : nearestViewElementFromBottom;\n while (startElement && maxIteration > 0) {\n const e = dir === 1 ? startElement.previousElementSibling : startElement.nextElementSibling;\n if (\n e &&\n rowConBoundingBox.left ===\n e.getBoundingClientRect().left - parseInt(window.getComputedStyle(e).marginLeft, 10)\n ) {\n if (dir === 1) topBufferIndex = parseInt(e.getAttribute(RowIndexAttribute), 10);\n else bottomBufferIndex = parseInt(e.getAttribute(RowIndexAttribute), 10);\n }\n startElement = e;\n maxIteration -= 1;\n }\n\n if (dir === 1) bottomBufferIndex = currentRowIndex + rowsInView + scrollDirectionBuffer;\n else topBufferIndex = topRowIndex - scrollDirectionBuffer;\n } else {\n // if user jumps the scroll and there is no overlapping with the previous records\n topBufferIndex = currentRowIndex - scrollOppositeDirectionBuffer;\n bottomBufferIndex = currentRowIndex + rowsInView + scrollDirectionBuffer;\n }\n }\n\n // Safe edge check when indexes goes out of range.\n if (topBufferIndex < 0) topBufferIndex = 0;\n // As safari does elastic scroll, so currentRowIndex and topRowIndex can go negative , fallback these to zero.\n if (currentRowIndex < 0) currentRowIndex = 0;\n if (topRowIndex < 0) topRowIndex = 0;\n if (\n !isInfiniteScroll &&\n bottomBufferIndex > totalRecords &&\n totalRecords !== null &&\n totalRecords !== undefined\n )\n bottomBufferIndex = totalRecords - 1;\n\n // When we get start index 0 from scrolling then , on edge case we might get whitespace\n // As we always adjust row container top to show previous item in place.\n // To solve this, make sure top index is also 0 when start index is zero to avoid white space\n // otherwise we will make start index to 1 if it is zero.\n // if (topBufferIndex === 0 && topRowIndex !== 0) topBufferIndex = 1;\n\n // before pagination is in progress, put scroll node coords here\n // to track how much user scrolled while pagination is in progress.\n const bufferOldCords = bufferContainer.getBoundingClientRect();\n return {\n existingItemBoundingBox, // coordinates of current row index.\n currentRowIndex, // common visible item in view before and after paint (previous and next paint)\n topRowIndex, // What could be possible index on view top.\n bufferOldCords, // buffer coordinates while pagination.\n bufferNewCords: bufferOldCords, // buffer coordinates while pagination is in progress and user scroll.\n view: {\n startIndex: Math.floor(topBufferIndex),\n endIndex: Math.floor(bottomBufferIndex)\n }\n };\n}\n\nexport default function getPaginationInfo(\n target,\n totalRecords,\n vi,\n isRefresh = false,\n isInfiniteScroll = false\n) {\n const oldElementCount = vi.itemCount === undefined ? 0 : vi.itemCount;\n const heightComposingOldElementCount =\n vi.rowContainerHeight === undefined ? 0 : vi.rowContainerHeight;\n return getOptimalInfo(\n target,\n vi.itemHeight,\n vi.rContainer,\n vi.bContainer,\n oldElementCount,\n heightComposingOldElementCount,\n totalRecords,\n vi.bufferMultiplier,\n isRefresh,\n isInfiniteScroll\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Pagination.js","sourceRoot":"","sources":["../../../../Core/Components/Virtualise/Pagination.js"],"names":[],"mappings":"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","sourcesContent":["const RowIndexAttribute = 'data-index';\nexport const StickyGroupHeader = 'sticky-group-header';\n\nfunction getKeyWithMaxValueFromMap(map) {\n if (!map) return;\n return [...map.entries()].reduce((a, b) => (b[1] > a[1] ? b : a))[0];\n}\n\n// Find nearest element to view.\n// It always find nearest element from top left of container.\nfunction getNearestElementTo(rContainer, targetBoundingBox) {\n const elements = Array.from(rContainer.childNodes);\n const itemCoords = [];\n const items = [];\n const overlappingGroupHeadersCountMap = new Map();\n\n elements.forEach(item => {\n const rect = item.getBoundingClientRect();\n const inHorizontalBoundaries =\n rect.right >= targetBoundingBox.left && rect.left <= targetBoundingBox.right;\n // considering only those items which are in view area.\n if (\n (rect.top >= targetBoundingBox.top &&\n rect.top <= targetBoundingBox.bottom &&\n inHorizontalBoundaries) ||\n (rect.bottom >= targetBoundingBox.top &&\n rect.bottom <= targetBoundingBox.bottom &&\n inHorizontalBoundaries)\n ) {\n itemCoords.push([rect.left, rect.bottom]);\n items.push(item);\n }\n });\n const distances = [];\n itemCoords.forEach((itemCoord, index) => {\n const distance = Math.hypot(\n itemCoord[0] - targetBoundingBox.left,\n itemCoord[1] - targetBoundingBox.top\n );\n const parsedDistance = parseInt(distance, 10);\n distances.push(parsedDistance);\n\n // Keeping track of group header distances to identify the overlap due to sticky position.\n // The distance with max count will represent the sub-group user is actually seeing.\n if (items[index]?.classList?.contains(StickyGroupHeader)) {\n overlappingGroupHeadersCountMap.set(\n parsedDistance,\n (overlappingGroupHeadersCountMap.get(parsedDistance) || 0) + 1\n );\n }\n });\n\n if (distances.length) {\n // BUG-740809 The closest item to view in case of sticky-group-header is first visible sticky-group-header\n const closestItemIndexFromTop = distances.lastIndexOf(Math.min(...distances));\n\n let closestItemFromTop = items[closestItemIndexFromTop];\n /**\n * BUG-81875: Considering sticky sub-group headers\n * When nested grouping is applied and groups have sticky position, the parent group will always be on the top and nested group headers will come after that.\n * Due to this, the nearest element will always be the parent group header even though user might have scrolled down some sub-group header.\n * Actual nearest element should be the sub-group visible to the user.\n */\n if (closestItemFromTop.classList?.contains(StickyGroupHeader)) {\n const topVisibleGroupKey = getKeyWithMaxValueFromMap(overlappingGroupHeadersCountMap);\n closestItemFromTop = items[distances.lastIndexOf(topVisibleGroupKey)];\n }\n const closestItemIndexFromBottom = distances.lastIndexOf(Math.max(...distances));\n\n if (targetBoundingBox.height === 0) {\n closestItemFromTop = elements[0];\n }\n return [closestItemFromTop, items[closestItemIndexFromBottom]];\n }\n return [];\n}\n\n// When element is present in view , find which direction has\n// enough count as we need to get record in another direction.\n// direction 1 - up, -1 - down\n// Nearest element is one which lies in view boundary.\n\nfunction getDirectionWhereCountIsEnough(nearestViewElement, currentRowIndex, targetBoundingBox) {\n let previousSiblingsCountAboveView = 0;\n let nextSiblingsCountBelowView = 0;\n let startElement = nearestViewElement;\n let dir = 1;\n if (currentRowIndex !== 0 && !startElement.previousElementSibling) dir = -1;\n else {\n while (startElement.previousElementSibling) {\n // BUG-740809 in case of overlapped sticky-group-header the previousElementSibling are at same 'top' location\n if (startElement.previousElementSibling.classList.contains(StickyGroupHeader)) {\n previousSiblingsCountAboveView += 1;\n } else {\n const itemCoords = startElement.previousElementSibling.getBoundingClientRect();\n if (itemCoords.bottom < targetBoundingBox.top) previousSiblingsCountAboveView += 1;\n }\n startElement = startElement.previousElementSibling;\n }\n if (nearestViewElement.classList.contains(StickyGroupHeader))\n previousSiblingsCountAboveView -= 1;\n if (parseInt(startElement.getAttribute(RowIndexAttribute), 10) === 0) dir = 1;\n else {\n startElement = nearestViewElement;\n while (startElement.nextElementSibling) {\n const itemCoords = startElement.nextElementSibling.getBoundingClientRect();\n if (itemCoords.top > targetBoundingBox.bottom) nextSiblingsCountBelowView += 1;\n startElement = startElement.nextElementSibling;\n }\n // iterate in either direction where count is more\n // until you find top element whose left match with nearest view element match.\n // and matched index will be either top or bottom buffer index.\n if (currentRowIndex !== 0 && nextSiblingsCountBelowView >= previousSiblingsCountAboveView)\n dir = -1;\n }\n }\n return dir;\n}\n\n// Get start and end index which view represent at any monument.\n// Add extra information as well to adjust virtualiser position.\n\nfunction getOptimalInfo(\n target,\n rowHeight,\n rContainer,\n bufferContainer,\n oldElementCount,\n heightComposingOldElementCount,\n totalRecords,\n bufferMultiplier,\n isRefresh,\n isInfiniteScroll\n) {\n let currentRowIndex = 0;\n let topRowIndex = 0;\n let topBufferIndex = 0;\n let existingItemBoundingBox;\n\n // Estimated buffer count based on view height and row container count.\n // Increase in buffer count can improve performance.\n // A safeguard value which will apply on initial load.\n const INITIAL_BUFFER = 10;\n const buffer = INITIAL_BUFFER * bufferMultiplier;\n let bottomBufferIndex = buffer * 5;\n\n // Since in Infinite scroll, the records need to be fetched in one direction only, fetching more records reduce the number of API calls.\n const scrollDirectionBuffer = isInfiniteScroll ? buffer * 4 : buffer * 2;\n const scrollOppositeDirectionBuffer = buffer;\n\n let rowsInView = heightComposingOldElementCount\n ? Math.floor((oldElementCount / heightComposingOldElementCount) * target.offsetHeight)\n : 0;\n rowsInView = Number.isNaN(rowsInView) ? 0 : rowsInView;\n\n if (totalRecords > 0) {\n const targetBoundingBox = target.getBoundingClientRect();\n const rowConBoundingBox = rContainer.getBoundingClientRect();\n\n // Check if any element exist in current view. Calculation will change the required index\n // As we have to fix the container to not show any flicker.\n const [nearestViewElementFromTop, nearestViewElementFromBottom] = getNearestElementTo(\n rContainer,\n targetBoundingBox\n );\n if (nearestViewElementFromTop) {\n currentRowIndex = parseInt(nearestViewElementFromTop.getAttribute(RowIndexAttribute), 10);\n existingItemBoundingBox = nearestViewElementFromTop.getBoundingClientRect();\n\n // check how long this nearest item is from top of view.\n // to estimate top row index ( What could be possible index on view top.)\n const spaceInMid = existingItemBoundingBox.top - targetBoundingBox.top;\n const elementsInMid = Math.floor(\n (oldElementCount / heightComposingOldElementCount) * spaceInMid\n );\n topRowIndex = elementsInMid < 0 ? currentRowIndex : currentRowIndex - elementsInMid;\n } else {\n currentRowIndex =\n Math.floor((target.scrollTop / heightComposingOldElementCount) * oldElementCount) || 0;\n topRowIndex = currentRowIndex;\n }\n\n // If element exist in current view, traverse dom elements\n // to find top buffer index or bottom buffer index\n // where left match to not change layout.\n if (existingItemBoundingBox) {\n let dir = 1;\n\n // We will consider direction 1 always in case of refresh as item count might have been changed.\n // change in item count is always from downside.\n if (!isRefresh)\n dir = getDirectionWhereCountIsEnough(\n nearestViewElementFromTop,\n currentRowIndex,\n targetBoundingBox\n );\n\n // We will iterate either upside or downside and pick that element\n // which we can select as either top buffer or botton buffer and don't\n // change layout as well and go for max iteration of buffer.\n let maxIteration = buffer;\n let startElement = dir === 1 ? nearestViewElementFromTop : nearestViewElementFromBottom;\n while (startElement && maxIteration > 0) {\n const e = dir === 1 ? startElement.previousElementSibling : startElement.nextElementSibling;\n if (\n e &&\n rowConBoundingBox.left ===\n e.getBoundingClientRect().left - parseInt(window.getComputedStyle(e).marginLeft, 10)\n ) {\n if (dir === 1) topBufferIndex = parseInt(e.getAttribute(RowIndexAttribute), 10);\n else bottomBufferIndex = parseInt(e.getAttribute(RowIndexAttribute), 10);\n }\n startElement = e;\n maxIteration -= 1;\n }\n\n if (dir === 1) bottomBufferIndex = currentRowIndex + rowsInView + scrollDirectionBuffer;\n else topBufferIndex = topRowIndex - scrollDirectionBuffer;\n } else {\n // if user jumps the scroll and there is no overlapping with the previous records\n topBufferIndex = currentRowIndex - scrollOppositeDirectionBuffer;\n bottomBufferIndex = currentRowIndex + rowsInView + scrollDirectionBuffer;\n }\n }\n\n // Safe edge check when indexes goes out of range.\n if (topBufferIndex < 0) topBufferIndex = 0;\n // As safari does elastic scroll, so currentRowIndex and topRowIndex can go negative , fallback these to zero.\n if (currentRowIndex < 0) currentRowIndex = 0;\n if (topRowIndex < 0) topRowIndex = 0;\n if (\n !isInfiniteScroll &&\n bottomBufferIndex > totalRecords &&\n totalRecords !== null &&\n totalRecords !== undefined\n )\n bottomBufferIndex = totalRecords - 1;\n\n // When we get start index 0 from scrolling then , on edge case we might get whitespace\n // As we always adjust row container top to show previous item in place.\n // To solve this, make sure top index is also 0 when start index is zero to avoid white space\n // otherwise we will make start index to 1 if it is zero.\n // if (topBufferIndex === 0 && topRowIndex !== 0) topBufferIndex = 1;\n\n // before pagination is in progress, put scroll node coords here\n // to track how much user scrolled while pagination is in progress.\n const bufferOldCords = bufferContainer.getBoundingClientRect();\n return {\n existingItemBoundingBox, // coordinates of current row index.\n currentRowIndex, // common visible item in view before and after paint (previous and next paint)\n topRowIndex, // What could be possible index on view top.\n bufferOldCords, // buffer coordinates while pagination.\n bufferNewCords: bufferOldCords, // buffer coordinates while pagination is in progress and user scroll.\n view: {\n startIndex: Math.floor(topBufferIndex),\n endIndex: Math.floor(bottomBufferIndex)\n }\n };\n}\n\nexport default function getPaginationInfo(\n target,\n totalRecords,\n vi,\n isRefresh = false,\n isInfiniteScroll = false\n) {\n const oldElementCount = vi.itemCount === undefined ? 0 : vi.itemCount;\n const heightComposingOldElementCount =\n vi.rowContainerHeight === undefined ? 0 : vi.rowContainerHeight;\n return getOptimalInfo(\n target,\n vi.itemHeight,\n vi.rContainer,\n vi.bContainer,\n oldElementCount,\n heightComposingOldElementCount,\n totalRecords,\n vi.bufferMultiplier,\n isRefresh,\n isInfiniteScroll\n );\n}\n"]}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
export default function useScroll(callback: any, getContext: any, vi: any, totalRecordCount: any, header: any, isFetching: any, viewHeight: any
|
|
1
|
+
export default function useScroll(callback: any, getContext: any, vi: any, totalRecordCount: any, header: any, isFetching: any, viewHeight: any, paginationTriggerRatios?: {
|
|
2
|
+
down: number;
|
|
3
|
+
up: number;
|
|
4
|
+
}): ((top: any) => void)[];
|
|
2
5
|
export function useApplyStyleOnScroll(vi: any): () => void;
|
|
3
6
|
//# sourceMappingURL=UseScroll.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UseScroll.d.ts","sourceRoot":"","sources":["../../../../Core/Components/Virtualise/UseScroll.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"UseScroll.d.ts","sourceRoot":"","sources":["../../../../Core/Components/Virtualise/UseScroll.js"],"names":[],"mappings":"AA+BA;;;2BAwGC;AA3HM,2DAiBN"}
|
|
@@ -2,6 +2,10 @@ import { useState, useEffect, useRef, useCallback } from 'react';
|
|
|
2
2
|
import useThrottle from '../../Hooks/useThrottle';
|
|
3
3
|
import { getRecordCountForLayoutPaint, isViewNotFilled } from './utility';
|
|
4
4
|
// import useDebounce from '../../Hooks/UseDebounce';
|
|
5
|
+
const DEFAULT_PAGINATION_TRIGGER_RATIOS = {
|
|
6
|
+
down: 0.8,
|
|
7
|
+
up: 0.2
|
|
8
|
+
};
|
|
5
9
|
export const useApplyStyleOnScroll = vi => {
|
|
6
10
|
const footerElement = vi.pContainer?.querySelector('.footer > .row');
|
|
7
11
|
return useCallback(() => {
|
|
@@ -17,7 +21,7 @@ export const useApplyStyleOnScroll = vi => {
|
|
|
17
21
|
}
|
|
18
22
|
}, [vi.pContainer, vi.rContainer, vi.pContainer?.offsetHeight, footerElement]);
|
|
19
23
|
};
|
|
20
|
-
export default function useScroll(callback, getContext, vi, totalRecordCount, header, isFetching, viewHeight) {
|
|
24
|
+
export default function useScroll(callback, getContext, vi, totalRecordCount, header, isFetching, viewHeight, paginationTriggerRatios = DEFAULT_PAGINATION_TRIGGER_RATIOS) {
|
|
21
25
|
const applyScrollEndStyle = useApplyStyleOnScroll(vi);
|
|
22
26
|
const [vScroll, setVScroll] = useState();
|
|
23
27
|
const ref = useRef({
|
|
@@ -57,7 +61,7 @@ export default function useScroll(callback, getContext, vi, totalRecordCount, he
|
|
|
57
61
|
if (!context)
|
|
58
62
|
return;
|
|
59
63
|
const direction = getDirection();
|
|
60
|
-
const distance = direction === 1 ?
|
|
64
|
+
const distance = direction === 1 ? paginationTriggerRatios.down : paginationTriggerRatios.up;
|
|
61
65
|
const eleIndex = Math.floor(vi.rContainer.childElementCount * distance);
|
|
62
66
|
const boundaryEle = vi.rContainer.childNodes[eleIndex];
|
|
63
67
|
const boundaryElePos = boundaryEle?.getBoundingClientRect();
|
|
@@ -71,7 +75,16 @@ export default function useScroll(callback, getContext, vi, totalRecordCount, he
|
|
|
71
75
|
vi.direction = direction;
|
|
72
76
|
callback();
|
|
73
77
|
}
|
|
74
|
-
}, [
|
|
78
|
+
}, [
|
|
79
|
+
getDirection,
|
|
80
|
+
paginationTriggerRatios,
|
|
81
|
+
vi,
|
|
82
|
+
getContext,
|
|
83
|
+
isFetching,
|
|
84
|
+
totalRecordCount,
|
|
85
|
+
header,
|
|
86
|
+
callback
|
|
87
|
+
]);
|
|
75
88
|
useThrottle(vScroll, handleScroll);
|
|
76
89
|
useEffect(() => {
|
|
77
90
|
const context = getContext();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UseScroll.js","sourceRoot":"","sources":["../../../../Core/Components/Virtualise/UseScroll.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEjE,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAElD,OAAO,EAAE,4BAA4B,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC1E,qDAAqD;AAErD,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC,EAAE;IACxC,MAAM,aAAa,GAAG,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IACrE,OAAO,WAAW,CAAC,GAAG,EAAE;QACtB,6EAA6E;QAC7E,8FAA8F;QAC9F,IACE,IAAI,CAAC,GAAG,CACN,EAAE,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,MAAM;YAC1C,EAAE,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,MAAM;YAC5C,CAAC,aAAa,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CACpE,GAAG,CAAC,EACL,CAAC;YACD,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC;AACjF,CAAC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,SAAS,CAC/B,QAAQ,EACR,UAAU,EACV,EAAE,EACF,gBAAgB,EAChB,MAAM,EACN,UAAU,EACV,UAAU;
|
|
1
|
+
{"version":3,"file":"UseScroll.js","sourceRoot":"","sources":["../../../../Core/Components/Virtualise/UseScroll.js"],"names":[],"mappings":"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","sourcesContent":["import { useState, useEffect, useRef, useCallback } from 'react';\n\nimport useThrottle from '../../Hooks/useThrottle';\n\nimport { getRecordCountForLayoutPaint, isViewNotFilled } from './utility';\n// import useDebounce from '../../Hooks/UseDebounce';\n\nconst DEFAULT_PAGINATION_TRIGGER_RATIOS = {\n down: 0.8,\n up: 0.2\n};\n\nexport const useApplyStyleOnScroll = vi => {\n const footerElement = vi.pContainer?.querySelector('.footer > .row');\n return useCallback(() => {\n // Calculate the difference between bottom co-ordinates of p and r Containers\n // along with the row height of footer element to check if the bottom of the table is reached.\n if (\n Math.abs(\n vi.pContainer.getBoundingClientRect().bottom -\n vi.rContainer.getBoundingClientRect().bottom -\n (footerElement?.hasChildNodes() ? footerElement.offsetHeight : 0)\n ) < 1\n ) {\n vi.rContainer.classList.add('scroll-end');\n } else {\n vi.rContainer.classList.remove('scroll-end');\n }\n }, [vi.pContainer, vi.rContainer, vi.pContainer?.offsetHeight, footerElement]);\n};\n\nexport default function useScroll(\n callback,\n getContext,\n vi,\n totalRecordCount,\n header,\n isFetching,\n viewHeight,\n paginationTriggerRatios = DEFAULT_PAGINATION_TRIGGER_RATIOS\n) {\n const applyScrollEndStyle = useApplyStyleOnScroll(vi);\n const [vScroll, setVScroll] = useState();\n const ref = useRef({\n oldScrollTop: 0\n }).current;\n const updateScrollTop = useCallback(\n top => {\n ref.oldScrollTop = top;\n },\n [ref]\n );\n // const deBouncedVScroll = useDebounce(vScroll, 100);\n\n const getDirection = useCallback(() => {\n const context = getContext();\n let dir;\n if (ref.oldScrollTop > context.scrollTop) dir = -1;\n else if (ref.oldScrollTop < context.scrollTop) dir = 1;\n ref.oldScrollTop = context.scrollTop;\n return dir;\n }, [getContext, ref.oldScrollTop]);\n\n const onScroll = useCallback(\n e => {\n setVScroll(e.target.scrollTop);\n vi.pInfo.bufferNewCords = vi.bContainer.getBoundingClientRect();\n\n // Style is to be applied upon scroll after successful\n // check of bottom position of containers\n applyScrollEndStyle(vi.rContainer, vi.pContainer);\n },\n [\n isFetching,\n vi.pInfo.bufferNewCords,\n vi.bContainer,\n vi.pContainer,\n vi.rContainer,\n applyScrollEndStyle\n ]\n );\n\n const handleScroll = useCallback(() => {\n const context = getContext();\n // Returning in case the throttle function runs after some delay and by that time the virtualizer has unmounted\n if (!context) return;\n\n const direction = getDirection();\n const distance = direction === 1 ? paginationTriggerRatios.down : paginationTriggerRatios.up;\n const eleIndex = Math.floor(vi.rContainer.childElementCount * distance);\n const boundaryEle = vi.rContainer.childNodes[eleIndex];\n const boundaryElePos = boundaryEle?.getBoundingClientRect();\n const { bottom, top } = context?.getBoundingClientRect() || {};\n if (\n (direction === 1 &&\n boundaryElePos?.bottom < bottom &&\n // eslint-disable-next-line no-unsafe-optional-chaining\n vi.pInfo?.view?.endIndex + 1 < totalRecordCount) ||\n (direction === -1 && boundaryElePos?.top > top && vi.pInfo?.view?.startIndex > 0) ||\n isViewNotFilled(getRecordCountForLayoutPaint(totalRecordCount), vi, context, header)\n ) {\n vi.direction = direction;\n callback();\n }\n }, [\n getDirection,\n paginationTriggerRatios,\n vi,\n getContext,\n isFetching,\n totalRecordCount,\n header,\n callback\n ]);\n\n useThrottle(vScroll, handleScroll);\n\n useEffect(() => {\n const context = getContext();\n if (context) context.addEventListener('scroll', onScroll);\n return () => {\n if (context) context.removeEventListener('scroll', onScroll);\n };\n }, [getContext, onScroll, vi.rContainer, vi.pContainer, applyScrollEndStyle]);\n\n // useEffect for scrollEndStyle hook\n useEffect(() => {\n applyScrollEndStyle(vi.rContainer, vi.pContainer);\n }, [vi.rContainer, vi.pContainer, applyScrollEndStyle, totalRecordCount, viewHeight]);\n // useEffect(() => {\n // if (deBouncedVScroll !== undefined)\n // handleScroll();\n // }, [deBouncedVScroll]);\n\n return [updateScrollTop];\n}\n"]}
|
|
@@ -42,6 +42,10 @@ const StyledLoader = Styled.div `
|
|
|
42
42
|
top: ${props => props.$style.top};
|
|
43
43
|
bottom: ${props => props.$style.bottom};
|
|
44
44
|
`;
|
|
45
|
+
const PAGINATION_TRIGGER_RATIOS = {
|
|
46
|
+
down: 0.9,
|
|
47
|
+
up: 0.1
|
|
48
|
+
};
|
|
45
49
|
const VirtualizeInfinite = forwardRef(({ id, viewHeight, viewWidth, itemHeight, callback, rowContainerClass, children, renderHeader, renderFooter, state, bufferMultiplier, viewMaxHeight, showLoadingIndicator, resetCount, countUpdateCallback, isFetching, hasMoreResults, renderEmptyRecords }, inputRef) => {
|
|
46
50
|
const rowBuffer = 5;
|
|
47
51
|
const [rContainerDimensionUpdate, setRContainerDimensionUpdate] = useState();
|
|
@@ -158,7 +162,7 @@ const VirtualizeInfinite = forwardRef(({ id, viewHeight, viewWidth, itemHeight,
|
|
|
158
162
|
setRContainerDimensionUpdate({});
|
|
159
163
|
}, [getRowContainer]);
|
|
160
164
|
useResizeObserver(getRowContainer, onRowContainerDimensionChange);
|
|
161
|
-
const [updateScrollTop] = useScroll(getPagination, getPContainer, vi, getTotalRowsIncludingBuffer(), renderHeader, isFetching, viewHeight);
|
|
165
|
+
const [updateScrollTop] = useScroll(getPagination, getPContainer, vi, getTotalRowsIncludingBuffer(), renderHeader, isFetching, viewHeight, PAGINATION_TRIGGER_RATIOS);
|
|
162
166
|
useLayoutEffect(() => {
|
|
163
167
|
const rContainer = getRowContainer();
|
|
164
168
|
if (state && state.startIndex >= 0 && vi && rContainer) {
|
|
@@ -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 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 });\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 );\n\n useLayoutEffect(() => {\n const rContainer = getRowContainer();\n if (state && state.startIndex >= 0 && vi && rContainer) {\n setAttributesOnItems(state, rContainer);\n }\n });\n\n useLayoutEffect(() => {\n if (isFetching || !isInitialized) return;\n\n const rowElements = Array.from(getRowContainer().children || []).filter(a =>\n a.hasAttribute('data-key')\n );\n if (!rowElements.length) {\n vi.totalRowsLoaded = 0;\n return;\n }\n\n const lastRow = rowElements[rowElements.length - 1];\n const lastRowDataIndex = parseInt(lastRow.getAttribute('data-index'), 10);\n const newCount = hasMoreResults ? lastRowDataIndex + 1 + rowBuffer : lastRowDataIndex + 1;\n\n // if user is scrolling up/down within the already encountered records, the record count shouldn't update\n if (newCount < getTotalRowsIncludingBuffer() && !resetCount) return;\n\n vi.totalRowsLoaded = lastRowDataIndex + 1;\n countUpdateCallback(vi.totalRowsLoaded);\n }, [children, isFetching]);\n\n // Get estimate and update buffer height\n useLayoutEffect(() => {\n if (!isInitialized) return;\n\n vi.currentEstimation = getCurrentEstimation(getRowContainer(), true);\n updateAvarageInVirtualizeInstance(vi.currentEstimation);\n const h = getBufferHeight(vi.currentEstimation);\n getBContainer().style.height = `${h}px`;\n }, [\n vi,\n children,\n rContainerDimensionUpdate,\n getBContainer,\n getBufferHeight,\n getRowContainer,\n getTotalRowsIncludingBuffer,\n updateAvarageInVirtualizeInstance\n ]);\n\n useLayoutEffect(() => {\n if (isFetching || !isInitialized) return;\n\n const pContainer = getPContainer();\n const scrollTop = getScrollTop(vi.currentEstimation);\n if (vi.pInfo.view.startIndex !== 0) pContainer.scrollTop = scrollTop;\n\n // Setting scrollTop from pContainer.scrollTop as getScrollTop can return value with higher decimal accuracy.\n // but scrollTop attribute from HTML element will round it automatically.\n updateScrollTop(pContainer.scrollTop);\n updateRowContainerTop(\n vi,\n getRecordCountForLayoutPaint(getTotalRowsIncludingBuffer()),\n state,\n pContainer,\n pContainer.scrollTop\n );\n }, [\n vi,\n state,\n isFetching,\n getScrollTop,\n getPContainer,\n updateScrollTop,\n getTotalRowsIncludingBuffer\n ]);\n\n // On mount that means state is not initialized yet, trigger pagination.\n // or whenever count changes or width /height of view port changes, if view is not filled with data, get indexes again.\n useEffect(() => {\n if (isFetching) return;\n\n if (!isInitialized) {\n getPagination(true);\n return;\n }\n\n if (\n isViewNotFilled(\n getRecordCountForLayoutPaint(getTotalRowsIncludingBuffer()),\n vi,\n getPContainer(),\n renderHeader\n )\n ) {\n getPagination(false, true);\n } else {\n setLoadingIndicatorInfo({});\n }\n }, [\n vi,\n isFetching,\n children,\n viewWidth,\n viewHeight,\n renderHeader,\n rContainerDimensionUpdate,\n getPagination,\n getPContainer,\n getTotalRowsIncludingBuffer\n ]);\n\n return (\n <StyledPContainer\n $style={{\n maxHeight,\n minHeight: !vi.totalRowsLoaded ? '100px' : 'auto',\n renderFooter,\n itemHeight,\n height,\n width\n }}\n data-total-records={vi.totalRowsLoaded}\n className='pContainer'\n ref={c => {\n vi.pContainer = c;\n }}\n >\n {renderHeader && renderHeader()}\n <div\n className='bContainer'\n ref={c => {\n vi.bContainer = c;\n }}\n >\n <div\n className={`${rowContainerClass} row-container`}\n ref={c => {\n vi.rContainer = c;\n }}\n role='rowgroup'\n >\n {/* Show loader only when there are some rows otherwise the parent spinner on RS should appear.\n Since in case of infinite table, totalRowsLoaded is derived from the rows only, using totalRowsLoaded here. */}\n {vi.totalRowsLoaded >= 0 &&\n showLoadingIndicator &&\n isFetching &&\n loadingIndicatorInfo.isScrollingUp && (\n <StyledLoader $style={{ bottom: '100%' }}>\n <Progress\n className='above-loader'\n placement='block'\n tabIndex={0}\n aria-label={translate('Loading more results')}\n />\n </StyledLoader>\n )}\n {children}\n {vi.totalRowsLoaded >= 0 &&\n showLoadingIndicator &&\n isFetching &&\n loadingIndicatorInfo.isScrollingDown && (\n <StyledLoader $style={{ top: '100%' }}>\n <Progress\n className='below-loader'\n placement='block'\n tabIndex={0}\n aria-label={translate('Loading more results')}\n />\n </StyledLoader>\n )}\n </div>\n </div>\n {vi.totalRowsLoaded === 0 && !isFetching\n ? renderEmptyRecords && renderEmptyRecords()\n : null}\n {renderFooter && renderFooter()}\n </StyledPContainer>\n );\n }\n);\n\nVirtualizeInfinite.propTypes = {\n id: PropTypes.string.isRequired,\n viewHeight: PropTypes.number,\n viewWidth: PropTypes.number,\n itemHeight: PropTypes.number,\n callback: PropTypes.func,\n isFetching: PropTypes.bool,\n hasMoreResults: PropTypes.bool,\n rowContainerClass: PropTypes.string,\n children: PropTypes.oneOfType([PropTypes.object, PropTypes.array]).isRequired,\n renderHeader: PropTypes.func,\n renderFooter: PropTypes.func,\n state: PropTypes.shape({\n startIndex: PropTypes.number,\n endIndex: PropTypes.number\n }),\n bufferMultiplier: PropTypes.number,\n viewMaxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n showLoadingIndicator: PropTypes.bool,\n resetCount: PropTypes.bool,\n countUpdateCallback: PropTypes.func,\n renderEmptyRecords: PropTypes.func\n};\n\nVirtualizeInfinite.defaultProps = {\n bufferMultiplier: 2,\n callback: () => {},\n isFetching: false,\n hasMoreResults: false,\n rowContainerClass: '',\n viewWidth: 0,\n itemHeight: 40,\n renderHeader: null,\n renderFooter: null,\n state: undefined,\n viewMaxHeight: undefined,\n showLoadingIndicator: false,\n resetCount: false,\n countUpdateCallback: () => {},\n renderEmptyRecords: null\n};\n\nVirtualizeInfinite.displayName = 'VirtualizeInfinite';\n\nexport default memo(VirtualizeInfinite);\n"]}
|
|
1
|
+
{"version":3,"file":"VirtualizeInfinite.js","sourceRoot":"","sources":["../../../../Core/Components/Virtualise/VirtualizeInfinite.jsx"],"names":[],"mappings":"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","sourcesContent":["import {\n forwardRef,\n memo,\n useEffect,\n useRef,\n useCallback,\n useImperativeHandle,\n useMemo,\n useLayoutEffect,\n useState\n} from 'react';\nimport Styled from 'styled-components';\nimport PropTypes from 'prop-types';\n\nimport { defaultThemeProp, Progress } from '@pega/cosmos-react-core';\nimport { isEmpty } from 'pega-repeating-structures-core';\n\nimport useTranslate from '../../Hooks/useTranslate';\nimport { StyledSkeletonRow } from '../../Views/Table/SkeletonRows';\n\nimport getPaginationInfo from './Pagination';\nimport useScroll from './UseScroll';\nimport {\n getCurrentEstimation,\n getRecordCountForLayoutPaint,\n getValueWithUnit,\n getMaxHeight,\n isViewNotFilled,\n setAttributesOnItems,\n updateRowContainerTop\n} from './utility';\nimport useResizeObserver from './UseResizeObserver';\n\nfunction getBContainerMinHeight(props) {\n return props.$style.renderFooter ? `calc(100% - ${2 * props.$style.itemHeight + 1}px) ` : '0';\n}\n\nconst StyledPContainer = Styled.div`\n position: relative;\n overflow: auto;\n max-height: ${props => props.$style.maxHeight};\n width: ${props => props.$style.width};\n height: ${props => props.$style.height};\n min-height: ${props => props.$style.minHeight};\n border-radius: inherit;\n\n &:has(${StyledSkeletonRow}) {\n overflow: hidden;\n }\n\n .bContainer {\n position: relative;\n min-height: ${props => getBContainerMinHeight(props)};\n border-radius: inherit;\n }\n`;\n\nStyledPContainer.defaultProps = defaultThemeProp;\n\nconst StyledLoader = Styled.div`\n display: flex;\n justify-content: center;\n padding: 0.5rem;\n position: absolute;\n width: 100%;\n top: ${props => props.$style.top};\n bottom: ${props => props.$style.bottom};\n`;\n\nconst PAGINATION_TRIGGER_RATIOS = {\n down: 0.9,\n up: 0.1\n};\n\nconst VirtualizeInfinite = forwardRef(\n (\n {\n id,\n viewHeight,\n viewWidth,\n 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 });\n } else if (resetIsFetchingWhenNoNewIndexes) {\n setLoadingIndicatorInfo({});\n }\n }\n },\n [isFetching, getPContainer, getTotalRowsIncludingBuffer, vi, state, callback, id]\n );\n\n // update average stats for next calculation.\n const updateAvarageInVirtualizeInstance = useCallback(\n currentEstimation => {\n const { itemCount, rowContainerHeight, averageNumberOfItemsInARow, averageRowHeight } =\n currentEstimation;\n Object.assign(vi, {\n itemCount: (itemCount + vi.itemCount || itemCount) / 2,\n rowContainerHeight:\n (rowContainerHeight + vi.rowContainerHeight || rowContainerHeight) / 2,\n averageNumberOfItemsInARow:\n (averageNumberOfItemsInARow + vi.averageNumberOfItemsInARow ||\n averageNumberOfItemsInARow) / 2,\n averageRowHeight: (averageRowHeight + vi.averageRowHeight || averageRowHeight) / 2\n });\n },\n [vi]\n );\n\n const getBufferHeight = useCallback(\n currentEstimation => {\n const { itemCount, rowContainerHeight } = currentEstimation;\n let h = 0;\n if (itemCount > 0)\n h =\n (getRecordCountForLayoutPaint(getTotalRowsIncludingBuffer()) / itemCount) *\n rowContainerHeight;\n return h;\n },\n [getTotalRowsIncludingBuffer]\n );\n\n const getScrollTop = useCallback(\n currentEstimation => {\n const { itemCount, rowContainerHeight } = currentEstimation;\n let scrollTop = 0;\n if (itemCount > 0) {\n const scrollNodeTopChange =\n // eslint-disable-next-line no-unsafe-optional-chaining\n vi.pInfo?.bufferNewCords?.top - vi.pInfo?.bufferOldCords?.top || 0;\n scrollTop = (vi.pInfo.topRowIndex / itemCount) * rowContainerHeight - scrollNodeTopChange;\n }\n return scrollTop;\n },\n [vi]\n );\n\n const onRowContainerDimensionChange = useCallback(() => {\n const { height: rowContainerHeight, width: rowContainerWidth } =\n getRowContainer()?.getBoundingClientRect() ?? {};\n // trigger virtualizer operations only when row container has some height and width\n if (rowContainerHeight && rowContainerWidth) setRContainerDimensionUpdate({});\n }, [getRowContainer]);\n\n useResizeObserver(getRowContainer, onRowContainerDimensionChange);\n\n const [updateScrollTop] = useScroll(\n getPagination,\n getPContainer,\n vi,\n getTotalRowsIncludingBuffer(),\n renderHeader,\n isFetching,\n viewHeight,\n PAGINATION_TRIGGER_RATIOS\n );\n\n useLayoutEffect(() => {\n const rContainer = getRowContainer();\n if (state && state.startIndex >= 0 && vi && rContainer) {\n setAttributesOnItems(state, rContainer);\n }\n });\n\n useLayoutEffect(() => {\n if (isFetching || !isInitialized) return;\n\n const rowElements = Array.from(getRowContainer().children || []).filter(a =>\n a.hasAttribute('data-key')\n );\n if (!rowElements.length) {\n vi.totalRowsLoaded = 0;\n return;\n }\n\n const lastRow = rowElements[rowElements.length - 1];\n const lastRowDataIndex = parseInt(lastRow.getAttribute('data-index'), 10);\n const newCount = hasMoreResults ? lastRowDataIndex + 1 + rowBuffer : lastRowDataIndex + 1;\n\n // if user is scrolling up/down within the already encountered records, the record count shouldn't update\n if (newCount < getTotalRowsIncludingBuffer() && !resetCount) return;\n\n vi.totalRowsLoaded = lastRowDataIndex + 1;\n countUpdateCallback(vi.totalRowsLoaded);\n }, [children, isFetching]);\n\n // Get estimate and update buffer height\n useLayoutEffect(() => {\n if (!isInitialized) return;\n\n vi.currentEstimation = getCurrentEstimation(getRowContainer(), true);\n updateAvarageInVirtualizeInstance(vi.currentEstimation);\n const h = getBufferHeight(vi.currentEstimation);\n getBContainer().style.height = `${h}px`;\n }, [\n vi,\n children,\n rContainerDimensionUpdate,\n getBContainer,\n getBufferHeight,\n getRowContainer,\n getTotalRowsIncludingBuffer,\n updateAvarageInVirtualizeInstance\n ]);\n\n useLayoutEffect(() => {\n if (isFetching || !isInitialized) return;\n\n const pContainer = getPContainer();\n const scrollTop = getScrollTop(vi.currentEstimation);\n if (vi.pInfo.view.startIndex !== 0) pContainer.scrollTop = scrollTop;\n\n // Setting scrollTop from pContainer.scrollTop as getScrollTop can return value with higher decimal accuracy.\n // but scrollTop attribute from HTML element will round it automatically.\n updateScrollTop(pContainer.scrollTop);\n updateRowContainerTop(\n vi,\n getRecordCountForLayoutPaint(getTotalRowsIncludingBuffer()),\n state,\n pContainer,\n pContainer.scrollTop\n );\n }, [\n vi,\n state,\n isFetching,\n getScrollTop,\n getPContainer,\n updateScrollTop,\n getTotalRowsIncludingBuffer\n ]);\n\n // On mount that means state is not initialized yet, trigger pagination.\n // or whenever count changes or width /height of view port changes, if view is not filled with data, get indexes again.\n useEffect(() => {\n if (isFetching) return;\n\n if (!isInitialized) {\n getPagination(true);\n return;\n }\n\n if (\n isViewNotFilled(\n getRecordCountForLayoutPaint(getTotalRowsIncludingBuffer()),\n vi,\n getPContainer(),\n renderHeader\n )\n ) {\n getPagination(false, true);\n } else {\n setLoadingIndicatorInfo({});\n }\n }, [\n vi,\n isFetching,\n children,\n viewWidth,\n viewHeight,\n renderHeader,\n rContainerDimensionUpdate,\n getPagination,\n getPContainer,\n getTotalRowsIncludingBuffer\n ]);\n\n return (\n <StyledPContainer\n $style={{\n maxHeight,\n minHeight: !vi.totalRowsLoaded ? '100px' : 'auto',\n renderFooter,\n itemHeight,\n height,\n width\n }}\n data-total-records={vi.totalRowsLoaded}\n className='pContainer'\n ref={c => {\n vi.pContainer = c;\n }}\n >\n {renderHeader && renderHeader()}\n <div\n className='bContainer'\n ref={c => {\n vi.bContainer = c;\n }}\n >\n <div\n className={`${rowContainerClass} row-container`}\n ref={c => {\n vi.rContainer = c;\n }}\n role='rowgroup'\n >\n {/* Show loader only when there are some rows otherwise the parent spinner on RS should appear.\n Since in case of infinite table, totalRowsLoaded is derived from the rows only, using totalRowsLoaded here. */}\n {vi.totalRowsLoaded >= 0 &&\n showLoadingIndicator &&\n isFetching &&\n loadingIndicatorInfo.isScrollingUp && (\n <StyledLoader $style={{ bottom: '100%' }}>\n <Progress\n className='above-loader'\n placement='block'\n tabIndex={0}\n aria-label={translate('Loading more results')}\n />\n </StyledLoader>\n )}\n {children}\n {vi.totalRowsLoaded >= 0 &&\n showLoadingIndicator &&\n isFetching &&\n loadingIndicatorInfo.isScrollingDown && (\n <StyledLoader $style={{ top: '100%' }}>\n <Progress\n className='below-loader'\n placement='block'\n tabIndex={0}\n aria-label={translate('Loading more results')}\n />\n </StyledLoader>\n )}\n </div>\n </div>\n {vi.totalRowsLoaded === 0 && !isFetching\n ? renderEmptyRecords && renderEmptyRecords()\n : null}\n {renderFooter && renderFooter()}\n </StyledPContainer>\n );\n }\n);\n\nVirtualizeInfinite.propTypes = {\n id: PropTypes.string.isRequired,\n viewHeight: PropTypes.number,\n viewWidth: PropTypes.number,\n itemHeight: PropTypes.number,\n callback: PropTypes.func,\n isFetching: PropTypes.bool,\n hasMoreResults: PropTypes.bool,\n rowContainerClass: PropTypes.string,\n children: PropTypes.oneOfType([PropTypes.object, PropTypes.array]).isRequired,\n renderHeader: PropTypes.func,\n renderFooter: PropTypes.func,\n state: PropTypes.shape({\n startIndex: PropTypes.number,\n endIndex: PropTypes.number\n }),\n bufferMultiplier: PropTypes.number,\n viewMaxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n showLoadingIndicator: PropTypes.bool,\n resetCount: PropTypes.bool,\n countUpdateCallback: PropTypes.func,\n renderEmptyRecords: PropTypes.func\n};\n\nVirtualizeInfinite.defaultProps = {\n bufferMultiplier: 2,\n callback: () => {},\n isFetching: false,\n hasMoreResults: false,\n rowContainerClass: '',\n viewWidth: 0,\n itemHeight: 40,\n renderHeader: null,\n renderFooter: null,\n state: undefined,\n viewMaxHeight: undefined,\n showLoadingIndicator: false,\n resetCount: false,\n countUpdateCallback: () => {},\n renderEmptyRecords: null\n};\n\nVirtualizeInfinite.displayName = 'VirtualizeInfinite';\n\nexport default memo(VirtualizeInfinite);\n"]}
|
|
@@ -24,7 +24,7 @@ function Gallery({ view }) {
|
|
|
24
24
|
cols.sort((colA, colB) => (colA.order ?? 0) - (colB.order ?? 0));
|
|
25
25
|
return cols;
|
|
26
26
|
}, [columns]);
|
|
27
|
-
return (_jsx(RsCardWrapper, { children: _jsxs(StyledGalleryContainer, { "data-test-id": 'gallery', "data-testid": 'gallery', view: view, isFullscreen: isFullscreen, isInlineImage: isInlineImage(heroImage), children: [_jsx(Toolbar, { view: view }), _jsx(RenderView, { view: view, type: EXTERNAL_FILTERS }), _jsxs(StyledVirtualizeContainer, { className: 'container', children: [_jsx(Virtualiser, { id: 'rootVirtualiser', rowContainerClass: 'grid-container', view: view, bufferMultiplier: 0.
|
|
27
|
+
return (_jsx(RsCardWrapper, { children: _jsxs(StyledGalleryContainer, { "data-test-id": 'gallery', "data-testid": 'gallery', view: view, isFullscreen: isFullscreen, isInlineImage: isInlineImage(heroImage), children: [_jsx(Toolbar, { view: view }), _jsx(RenderView, { view: view, type: EXTERNAL_FILTERS }), _jsxs(StyledVirtualizeContainer, { className: 'container', children: [_jsx(Virtualiser, { id: 'rootVirtualiser', rowContainerClass: 'grid-container', view: view, bufferMultiplier: 0.8, children: rows?.length
|
|
28
28
|
? rows.map(row => selectionMode === SELECTION_MODES.multi && selectionColumn ? (_jsx(GalleryCheckboxCard, { meta: meta, row: row, visibleColumns: visibleColumns, headerColumn: headerColumn, selectionColumn: selectionColumn }, row.reactKey)) : (_jsx(GalleryCard, { meta: meta, row: row, visibleColumns: visibleColumns, headerColumn: headerColumn }, row.reactKey)))
|
|
29
29
|
: [] }), _jsx(LoadingIndicator, { view: view, show: !rows || !!view.isLoading })] })] }) }));
|
|
30
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../Core/Views/Gallery/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useMemo } from 'react';\n\nimport { FieldType, type RsCoreTypes } from 'pega-repeating-structures-core';\nimport { useFullscreenContext } from '@pega/cosmos-react-core';\nimport { rowSelectColumnMeta } from 'pega-repeating-structures-core/lib/src/core/constants';\n\nimport Virtualiser from '../Table/VirtualizeWrapper';\nimport Toolbar from '../../Components/Toolbar';\nimport RenderView from '../../Components/RenderingEngine/RenderView';\nimport { EXTERNAL_FILTERS, SELECTION_MODES } from '../../constants';\nimport RsCardWrapper from '../RsCardWrapper';\nimport LoadingIndicator from '../../Components/LoadingIndicator';\n\nimport GalleryCard from './Components/GalleryCard';\nimport GalleryCheckboxCard from './Components/GalleryCheckboxCard';\nimport StyledGalleryContainer, { StyledVirtualizeContainer } from './StyledGalleryContainer';\nimport { isInlineImage } from './utils';\n\nfunction Gallery({ view }: { view: RsCoreTypes.View }) {\n const isFullscreen = !!useFullscreenContext()?.[0];\n\n const { columns = [], meta, rows } = view;\n const { galleryConfig: { heroImage, header } = {}, selectionMode } = meta;\n\n const headerColumn = useMemo(\n () => (header?.field ? columns.find(col => col.field.id === header.field) : undefined),\n [header, columns]\n );\n\n const selectionColumn = useMemo(\n () => columns.find(col => col.field.id === rowSelectColumnMeta.field.id),\n [columns]\n );\n\n const visibleColumns = useMemo(() => {\n const cols = [...columns].filter(\n col => !col.hidden && col.field.type !== FieldType.ACTION_FIELD_TYPE\n );\n cols.sort((colA, colB) => (colA.order ?? 0) - (colB.order ?? 0));\n return cols;\n }, [columns]);\n\n return (\n <RsCardWrapper>\n <StyledGalleryContainer\n data-test-id='gallery'\n data-testid='gallery'\n view={view}\n isFullscreen={isFullscreen}\n isInlineImage={isInlineImage(heroImage)}\n >\n <Toolbar view={view} />\n <RenderView view={view} type={EXTERNAL_FILTERS} />\n <StyledVirtualizeContainer className='container'>\n <Virtualiser\n id='rootVirtualiser'\n rowContainerClass='grid-container'\n view={view}\n bufferMultiplier={0.
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../Core/Views/Gallery/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useMemo } from 'react';\n\nimport { FieldType, type RsCoreTypes } from 'pega-repeating-structures-core';\nimport { useFullscreenContext } from '@pega/cosmos-react-core';\nimport { rowSelectColumnMeta } from 'pega-repeating-structures-core/lib/src/core/constants';\n\nimport Virtualiser from '../Table/VirtualizeWrapper';\nimport Toolbar from '../../Components/Toolbar';\nimport RenderView from '../../Components/RenderingEngine/RenderView';\nimport { EXTERNAL_FILTERS, SELECTION_MODES } from '../../constants';\nimport RsCardWrapper from '../RsCardWrapper';\nimport LoadingIndicator from '../../Components/LoadingIndicator';\n\nimport GalleryCard from './Components/GalleryCard';\nimport GalleryCheckboxCard from './Components/GalleryCheckboxCard';\nimport StyledGalleryContainer, { StyledVirtualizeContainer } from './StyledGalleryContainer';\nimport { isInlineImage } from './utils';\n\nfunction Gallery({ view }: { view: RsCoreTypes.View }) {\n const isFullscreen = !!useFullscreenContext()?.[0];\n\n const { columns = [], meta, rows } = view;\n const { galleryConfig: { heroImage, header } = {}, selectionMode } = meta;\n\n const headerColumn = useMemo(\n () => (header?.field ? columns.find(col => col.field.id === header.field) : undefined),\n [header, columns]\n );\n\n const selectionColumn = useMemo(\n () => columns.find(col => col.field.id === rowSelectColumnMeta.field.id),\n [columns]\n );\n\n const visibleColumns = useMemo(() => {\n const cols = [...columns].filter(\n col => !col.hidden && col.field.type !== FieldType.ACTION_FIELD_TYPE\n );\n cols.sort((colA, colB) => (colA.order ?? 0) - (colB.order ?? 0));\n return cols;\n }, [columns]);\n\n return (\n <RsCardWrapper>\n <StyledGalleryContainer\n data-test-id='gallery'\n data-testid='gallery'\n view={view}\n isFullscreen={isFullscreen}\n isInlineImage={isInlineImage(heroImage)}\n >\n <Toolbar view={view} />\n <RenderView view={view} type={EXTERNAL_FILTERS} />\n <StyledVirtualizeContainer className='container'>\n <Virtualiser\n id='rootVirtualiser'\n rowContainerClass='grid-container'\n view={view}\n bufferMultiplier={0.8}\n >\n {rows?.length\n ? rows.map(row =>\n selectionMode === SELECTION_MODES.multi && selectionColumn ? (\n <GalleryCheckboxCard\n key={row.reactKey}\n meta={meta}\n row={row}\n visibleColumns={visibleColumns}\n headerColumn={headerColumn}\n selectionColumn={selectionColumn}\n />\n ) : (\n <GalleryCard\n key={row.reactKey}\n meta={meta}\n row={row}\n visibleColumns={visibleColumns}\n headerColumn={headerColumn}\n />\n )\n )\n : []}\n </Virtualiser>\n <LoadingIndicator view={view} show={!rows || !!view.isLoading} />\n </StyledVirtualizeContainer>\n </StyledGalleryContainer>\n </RsCardWrapper>\n );\n}\n\nGallery.displayName = 'Gallery';\n\nexport default Gallery;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Gallery/utils.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,KAAK,EAA6B,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAmDxD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,SAAS,GAAG,OAAO,CAKxE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,EAC1B,GAAG,EACH,cAAc,EACd,IAAI,EACJ,YAAY,EACb,EAAE,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Gallery/utils.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,KAAK,EAA6B,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAmDxD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,SAAS,GAAG,OAAO,CAKxE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,EAC1B,GAAG,EACH,cAAc,EACd,IAAI,EACJ,YAAY,EACb,EAAE,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,YAAY,CAAC,CAoBjG;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,EAAE,GAAG,EAAE,EAAE;IAAE,GAAG,EAAE,WAAW,CAAC,GAAG,CAAA;CAAE;;;EAM/D"}
|
|
@@ -61,6 +61,8 @@ export function isInlineImage(heroImage) {
|
|
|
61
61
|
*/
|
|
62
62
|
export function getCardData({ row, visibleColumns, meta, headerColumn }) {
|
|
63
63
|
const { galleryConfig: { heroImage, showFieldLabels = true } = {} } = meta;
|
|
64
|
+
// Must set execution context for each column to ensure correct value retrieval
|
|
65
|
+
visibleColumns.forEach(col => col.setExecutionContext(row));
|
|
64
66
|
const fields = visibleColumns.map(col => ({
|
|
65
67
|
id: col.field.id,
|
|
66
68
|
...(showFieldLabels && { name: col.getContext()?.getLabel() }),
|
|
@@ -68,8 +70,7 @@ export function getCardData({ row, visibleColumns, meta, headerColumn }) {
|
|
|
68
70
|
}));
|
|
69
71
|
const image = heroImage ? getImageData(meta, row) : undefined;
|
|
70
72
|
const label = _jsx(GalleryHeader, { headerColumn: headerColumn, row: row });
|
|
71
|
-
const
|
|
72
|
-
const headerValue = getContext()?.getRowHeader()?.getValue();
|
|
73
|
+
const headerValue = row.getContext()?.getRowHeader()?.getValue();
|
|
73
74
|
const ariaLabel = !isEmpty(headerValue) ? String(headerValue) : undefined;
|
|
74
75
|
return { fields, image, label, 'aria-label': ariaLabel };
|
|
75
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../Core/Views/Gallery/utils.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../Core/Views/Gallery/utils.tsx"],"names":[],"mappings":"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","sourcesContent":["import { isEmpty, type RsCoreTypes } from 'pega-repeating-structures-core';\nimport type { ImagePlacement, ImageSize, SelectionCardDisplayProps } from '@pega/cosmos-react-core';\n\nimport type { GalleryCardProps } from './Gallery.types';\nimport GalleryFieldValue from './Components/GalleryFieldValue';\nimport GalleryHeader from './Components/GalleryHeader';\n\nconst GALLERY_IMAGE_PLACEMENT_MAP: Record<RsCoreTypes.HeroImagePlacement, ImagePlacement> = {\n left: 'inline-start',\n right: 'inline-end',\n top: 'block-start'\n} as const;\n\nconst INLINE_PLACEMENTS: RsCoreTypes.HeroImagePlacement[] = ['left', 'right'] as const;\nconst DEFAULT_IMAGE_PLACEMENT: RsCoreTypes.HeroImagePlacement = 'left';\nconst DEFAULT_IMAGE_SIZE: ImageSize = 'flexible';\n\n/**\n * Extracts image data from the provided metadata and row context.\n *\n * @param meta - The metadata object containing gallery configuration.\n * @param row - The row object providing context and data values.\n * @returns An object containing:\n * - `src`: The image source URL.\n * - `alt`: The alternative text for the image.\n * - `placement`: The placement of the image within the gallery.\n * - `size`: The size of the image.\n */\nfunction getImageData(\n meta: RsCoreTypes.Meta,\n row: RsCoreTypes.Row\n): {\n src: string;\n alt: string;\n placement: ImagePlacement;\n size: ImageSize;\n} {\n const { galleryConfig: { heroImage: { source, altText, placement, size } = {} } = {} } = meta;\n const rowData = row.getContext().getValue();\n\n let altTextValue = '';\n if (altText && 'field' in altText) {\n altTextValue = altText.field in rowData ? String(rowData[altText.field]) : '';\n } else if (altText && 'value' in altText) {\n altTextValue = altText.value;\n }\n\n const imageUrl = source?.field && source?.field in rowData ? String(rowData[source.field]) : '';\n const imagePlacement = GALLERY_IMAGE_PLACEMENT_MAP[placement ?? DEFAULT_IMAGE_PLACEMENT];\n const imageSize = size || DEFAULT_IMAGE_SIZE;\n\n return { src: imageUrl, alt: altTextValue, placement: imagePlacement, size: imageSize };\n}\n\n/**\n * Determines if the provided hero image should be displayed inline based on its placement.\n *\n * @param heroImage - The hero image object.\n * @returns `true` if the image's placement is considered inline; otherwise, `false`.\n */\nexport function isInlineImage(heroImage?: RsCoreTypes.HeroImage): boolean {\n if (!heroImage?.source) return false;\n\n const placement = heroImage.placement ?? DEFAULT_IMAGE_PLACEMENT;\n return INLINE_PLACEMENTS.includes(placement);\n}\n\n/**\n * Generates the data required to display a card in the gallery view.\n *\n * @param props - The properties required to generate the card data.\n * @param props.row - The data for the current row.\n * @param props.visibleColumns - The columns that are visible in the gallery.\n * @param props.meta - Metadata including gallery configuration.\n * @param props.headerColumn - The column used for the card header.\n * @param props.actionColumn - The column used for card actions.\n * @returns An object containing the card's label, image, and fields to be displayed.\n */\nexport function getCardData({\n row,\n visibleColumns,\n meta,\n headerColumn\n}: GalleryCardProps): Pick<SelectionCardDisplayProps, 'label' | 'image' | 'fields' | 'aria-label'> {\n const { galleryConfig: { heroImage, showFieldLabels = true } = {} } = meta;\n\n // Must set execution context for each column to ensure correct value retrieval\n visibleColumns.forEach(col => col.setExecutionContext(row));\n\n const fields = visibleColumns.map(col => ({\n id: col.field.id,\n ...(showFieldLabels && { name: col.getContext()?.getLabel() }),\n value: <GalleryFieldValue column={col} row={row} />\n }));\n\n const image = heroImage ? getImageData(meta, row) : undefined;\n\n const label = <GalleryHeader headerColumn={headerColumn} row={row} />;\n\n const headerValue = row.getContext()?.getRowHeader()?.getValue();\n const ariaLabel = !isEmpty(headerValue) ? String(headerValue) : undefined;\n\n return { fields, image, label, 'aria-label': ariaLabel };\n}\n\n/**\n * Extracts UI-related props from a row for card components.\n *\n * @param props - The properties containing the row.\n * @param props.row - The data row.\n * @returns An object containing aria-rowindex and data-key for the card.\n */\nexport function getCardUIProps({ row }: { row: RsCoreTypes.Row }) {\n const uiProps = row.getUIProps();\n return {\n 'aria-rowindex': uiProps['aria-rowindex'],\n 'data-key': uiProps['data-key']\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Map/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAsBlE,UAAU,YAAY;IACpB,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;CACxB;AAED,QAAA,MAAM,GAAG,GAAI,UAAU,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Map/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAsBlE,UAAU,YAAY;IACpB,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;CACxB;AAED,QAAA,MAAM,GAAG,GAAI,UAAU,YAAY,4CAgHlC,CAAC;AAEF,eAAe,GAAG,CAAC"}
|
|
@@ -48,7 +48,7 @@ const Map = ({ view }) => {
|
|
|
48
48
|
...(!fullscreen?.[0] && { height, maxHeight })
|
|
49
49
|
}, children: [_jsxs(StyledSummaryListContent, { loading: isLoading, "aria-label": meta.title, role: 'region', ref: listContentRef, children: [isLoading && _jsx(Progress, { placement: 'local' }), !isLoading && !!rows?.length && (_jsx("ul", { ref: listRef, children: rows.map((row, index) => (_jsx(MapItem, { columns: columns, itemIndex: index, row: row, labelFieldId: meta.mapFieldIds?.label }, row.reactKey.toString()))) }))] }), domContainer && hasNoRecords && (_jsx(EmptyContainer, { message: isFilterApplied({ filterExpression, searchText, externalState }, meta.externalFilters)
|
|
50
50
|
? translate('No records found')
|
|
51
|
-
: translate('No records') }))] })] })] }) }));
|
|
51
|
+
: translate('No records'), domContainer: domContainer, shouldAnnounce: false }))] })] })] }) }));
|
|
52
52
|
};
|
|
53
53
|
export default Map;
|
|
54
54
|
//# sourceMappingURL=index.js.map
|