@pega/lists-react 9.28.1 → 9.30.0
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/CellRenderers/RowActionMenu.d.ts.map +1 -1
- package/lib/Core/Components/DefaultComponents/CellRenderers/RowActionMenu.js +6 -53
- package/lib/Core/Components/DefaultComponents/CellRenderers/RowActionMenu.js.map +1 -1
- package/lib/Core/Components/DefaultComponents/CellRenderers/RowSelectHandle.js +9 -2
- package/lib/Core/Components/DefaultComponents/CellRenderers/RowSelectHandle.js.map +1 -1
- package/lib/Core/Components/RenderingEngine/ComponentResolverFactory.d.ts +1 -0
- package/lib/Core/Components/RenderingEngine/ComponentResolverFactory.d.ts.map +1 -1
- package/lib/Core/Components/RenderingEngine/ComponentResolverFactory.js +6 -1
- package/lib/Core/Components/RenderingEngine/ComponentResolverFactory.js.map +1 -1
- package/lib/Core/Components/Toolbar/hooks/usePersonalization.d.ts +1 -0
- package/lib/Core/Components/Toolbar/hooks/usePersonalization.d.ts.map +1 -1
- package/lib/Core/Components/Toolbar/hooks/usePersonalization.js +4 -2
- package/lib/Core/Components/Toolbar/hooks/usePersonalization.js.map +1 -1
- package/lib/Core/Components/Virtualise/VirtualizeInfinite.js +4 -2
- package/lib/Core/Components/Virtualise/VirtualizeInfinite.js.map +1 -1
- package/lib/Core/Components/Virtualise/index.js +5 -3
- package/lib/Core/Components/Virtualise/index.js.map +1 -1
- package/lib/Core/Utils/fetchRowActions.d.ts +16 -0
- package/lib/Core/Utils/fetchRowActions.d.ts.map +1 -0
- package/lib/Core/Utils/fetchRowActions.js +49 -0
- package/lib/Core/Utils/fetchRowActions.js.map +1 -0
- package/lib/Core/Utils/styles.d.ts +9 -0
- package/lib/Core/Utils/styles.d.ts.map +1 -1
- package/lib/Core/Utils/styles.js +8 -3
- package/lib/Core/Utils/styles.js.map +1 -1
- package/lib/Core/Views/Table/CellWrapper.d.ts +3 -1
- package/lib/Core/Views/Table/CellWrapper.d.ts.map +1 -1
- package/lib/Core/Views/Table/CellWrapper.js +4 -3
- package/lib/Core/Views/Table/CellWrapper.js.map +1 -1
- package/lib/Core/Views/Table/Row.d.ts.map +1 -1
- package/lib/Core/Views/Table/Row.js +24 -10
- package/lib/Core/Views/Table/Row.js.map +1 -1
- package/lib/Core/Views/Table/StyledTableContainer.d.ts.map +1 -1
- package/lib/Core/Views/Table/StyledTableContainer.js +74 -24
- package/lib/Core/Views/Table/StyledTableContainer.js.map +1 -1
- package/lib/Core/Views/Table/VirtualizeWrapper.d.ts +3 -1
- package/lib/Core/Views/Table/VirtualizeWrapper.d.ts.map +1 -1
- package/lib/Core/Views/Table/VirtualizeWrapper.js +6 -5
- 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 +15 -6
- package/lib/Core/Views/Table/index.js.map +1 -1
- package/lib/Core/Views/Table/useMasterDetailCleanup.d.ts +11 -0
- package/lib/Core/Views/Table/useMasterDetailCleanup.d.ts.map +1 -0
- package/lib/Core/Views/Table/useMasterDetailCleanup.js +27 -0
- package/lib/Core/Views/Table/useMasterDetailCleanup.js.map +1 -0
- package/lib/Core/Views/Table/useMasterDetailHost.d.ts +14 -0
- package/lib/Core/Views/Table/useMasterDetailHost.d.ts.map +1 -0
- package/lib/Core/Views/Table/useMasterDetailHost.js +56 -0
- package/lib/Core/Views/Table/useMasterDetailHost.js.map +1 -0
- package/lib/Core/Views/Table/useMasterDetailRenderer.d.ts +13 -0
- package/lib/Core/Views/Table/useMasterDetailRenderer.d.ts.map +1 -0
- package/lib/Core/Views/Table/useMasterDetailRenderer.js +23 -0
- package/lib/Core/Views/Table/useMasterDetailRenderer.js.map +1 -0
- package/lib/Core/Views/Table/useMasterDetailRow.d.ts +9 -0
- package/lib/Core/Views/Table/useMasterDetailRow.d.ts.map +1 -0
- package/lib/Core/Views/Table/useMasterDetailRow.js +55 -0
- package/lib/Core/Views/Table/useMasterDetailRow.js.map +1 -0
- package/lib/Core/Views/Table/useMasterDetailState.d.ts +21 -0
- package/lib/Core/Views/Table/useMasterDetailState.d.ts.map +1 -0
- package/lib/Core/Views/Table/useMasterDetailState.js +33 -0
- package/lib/Core/Views/Table/useMasterDetailState.js.map +1 -0
- package/lib/Core/constants.d.ts +4 -0
- package/lib/Core/constants.d.ts.map +1 -1
- package/lib/Core/constants.js +4 -0
- package/lib/Core/constants.js.map +1 -1
- package/package.json +8 -7
|
@@ -7,7 +7,21 @@ import { StyledRadioCheck } from '@pega/cosmos-react-core/lib/components/RadioCh
|
|
|
7
7
|
import { StyledLabel, StyledProgressBackdrop, calculateFontSize, tryCatch, isSameColor } from '@pega/cosmos-react-core';
|
|
8
8
|
import { StyledTabPanel } from '@pega/cosmos-react-core/lib/components/Tabs/TabPanel';
|
|
9
9
|
import { generateRSDataContainerHeightStyles, generateRSHeightStyles } from '../../Utils/styles';
|
|
10
|
+
import { MASTER_DETAIL_INDICATOR_CLASS, MASTER_DETAIL_PREVIEW_HIGHLIGHT_CLASS } from '../../constants';
|
|
10
11
|
import { CellIcon } from './CellWrapper';
|
|
12
|
+
const dataRowSelector = `.row:not(.group-header-row):not(.hierarchical-group-header-row):not(
|
|
13
|
+
.hierarchical-group-footer-row
|
|
14
|
+
):not(.header)`;
|
|
15
|
+
const rowBackground = backgroundColor => css `
|
|
16
|
+
background-color: ${backgroundColor};
|
|
17
|
+
|
|
18
|
+
/* Sticky action cells and the first frozen cell use pseudo-elements to paint their backgrounds. */
|
|
19
|
+
> .cell,
|
|
20
|
+
> .cell-action::before,
|
|
21
|
+
> .cell-fixed.cell-first::before {
|
|
22
|
+
background-color: ${backgroundColor};
|
|
23
|
+
}
|
|
24
|
+
`;
|
|
11
25
|
const StyledTableContainer = styled(forwardRef((props, ref) => _jsx("div", { ref: ref, ...props })))(({ theme, view, isFullscreen }) => {
|
|
12
26
|
let colIdToFillRemainingSpace;
|
|
13
27
|
let isAggregationApplied = false;
|
|
@@ -24,7 +38,8 @@ const StyledTableContainer = styled(forwardRef((props, ref) => _jsx("div", { ref
|
|
|
24
38
|
const fontSize = calculateFontSize(theme.base['font-size'], theme.base['font-scale']);
|
|
25
39
|
const showFreezeLine = view.state.responsive?.sm &&
|
|
26
40
|
!(view.hasNoRecords || view.hasNoFrozenColumns || view.bHideFreezeLine);
|
|
27
|
-
const
|
|
41
|
+
const highlightedRowColor = tryCatch(() => mix(0.85, theme.base.palette['primary-background'], theme.base.palette.interactive));
|
|
42
|
+
const previewHighlightBorderColor = tryCatch(() => transparentize(0.7, theme.base.palette.interactive));
|
|
28
43
|
const lightGreyColor = theme.base.colors.gray['extra-light'];
|
|
29
44
|
const freezeLineShadowTransparent = transparentize(getLuminance(theme.components.table.header['foreground-color']) < 0.5 ? 0.9 : 0.75, theme.components.table.header['foreground-color']);
|
|
30
45
|
const headerBackground = theme.components.table.header['background-color'];
|
|
@@ -62,9 +77,11 @@ const StyledTableContainer = styled(forwardRef((props, ref) => _jsx("div", { ref
|
|
|
62
77
|
const borderHorizontalInner = theme.components.table.border['horizontal-inner'] && !theme.components.table['striped-rows'];
|
|
63
78
|
const borderHorizontalOuter = theme.components.table.border['horizontal-outer'];
|
|
64
79
|
const showBorderOnLastStripedRow = theme.components.table.border['horizontal-inner'] && theme.components.table['striped-rows'];
|
|
80
|
+
const isMasterDetailEnabled = !!view.meta.masterDetail;
|
|
65
81
|
return css `
|
|
66
82
|
--forground-color: ${theme.base.palette['foreground-color']};
|
|
67
83
|
--interactive: ${theme.base.palette.interactive};
|
|
84
|
+
--light-blue: ${theme.base.colors.blue['extra-light']};
|
|
68
85
|
--medium-blue: ${theme.base.colors.blue.medium};
|
|
69
86
|
--border-color: ${theme.base.palette['border-line']};
|
|
70
87
|
--border-color-freeze: #a5a5a5;
|
|
@@ -202,8 +219,7 @@ const StyledTableContainer = styled(forwardRef((props, ref) => _jsx("div", { ref
|
|
|
202
219
|
}
|
|
203
220
|
|
|
204
221
|
> .header-lable-container {
|
|
205
|
-
|
|
206
|
-
min-width: 20px;
|
|
222
|
+
min-width: 1.25rem;
|
|
207
223
|
}
|
|
208
224
|
/* stylelint-disable selector-max-class */
|
|
209
225
|
&.cell-fixed > .cell-content {
|
|
@@ -479,10 +495,8 @@ const StyledTableContainer = styled(forwardRef((props, ref) => _jsx("div", { ref
|
|
|
479
495
|
align-items: center;
|
|
480
496
|
|
|
481
497
|
svg {
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
/* stylelint-disable-next-line unit-allowed-list */
|
|
485
|
-
height: 14px;
|
|
498
|
+
width: 0.875rem;
|
|
499
|
+
height: 0.875rem;
|
|
486
500
|
}
|
|
487
501
|
}
|
|
488
502
|
|
|
@@ -661,7 +675,7 @@ const StyledTableContainer = styled(forwardRef((props, ref) => _jsx("div", { ref
|
|
|
661
675
|
display: grid;
|
|
662
676
|
position: sticky;
|
|
663
677
|
top: 0;
|
|
664
|
-
z-index:
|
|
678
|
+
z-index: 9;
|
|
665
679
|
border-start-start-radius: inherit;
|
|
666
680
|
border-start-end-radius: inherit;
|
|
667
681
|
|
|
@@ -920,26 +934,62 @@ const StyledTableContainer = styled(forwardRef((props, ref) => _jsx("div", { ref
|
|
|
920
934
|
opacity: 1;
|
|
921
935
|
}
|
|
922
936
|
.row.selected-row {
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
> .cell,
|
|
926
|
-
.cell-fixed,
|
|
927
|
-
.cell-action {
|
|
928
|
-
background-color: ${selectedRowColor};
|
|
929
|
-
}
|
|
937
|
+
${rowBackground(highlightedRowColor)}
|
|
930
938
|
}
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
939
|
+
${isMasterDetailEnabled &&
|
|
940
|
+
css `
|
|
941
|
+
${dataRowSelector}:hover {
|
|
942
|
+
${rowBackground(highlightedRowColor)}
|
|
935
943
|
}
|
|
936
944
|
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
945
|
+
${dataRowSelector}.${MASTER_DETAIL_PREVIEW_HIGHLIGHT_CLASS} {
|
|
946
|
+
${rowBackground(highlightedRowColor)}
|
|
947
|
+
border-radius: 0.125rem;
|
|
948
|
+
&::before {
|
|
949
|
+
content: '';
|
|
950
|
+
position: absolute;
|
|
951
|
+
inset: 0;
|
|
952
|
+
box-shadow: inset 0 0 0 0.125rem ${previewHighlightBorderColor};
|
|
953
|
+
pointer-events: none;
|
|
954
|
+
z-index: 7;
|
|
955
|
+
}
|
|
956
|
+
|
|
957
|
+
.${MASTER_DETAIL_INDICATOR_CLASS} {
|
|
958
|
+
position: absolute;
|
|
959
|
+
inset-inline-end: 0;
|
|
960
|
+
inset-block-start: 50%;
|
|
961
|
+
inline-size: 0.5625rem;
|
|
962
|
+
block-size: 2.125rem;
|
|
963
|
+
transform: translateX(var(--detail-indicator-offset, 0)) translateY(-50%);
|
|
964
|
+
pointer-events: none;
|
|
965
|
+
z-index: 8;
|
|
966
|
+
|
|
967
|
+
&::before {
|
|
968
|
+
content: '';
|
|
969
|
+
position: absolute;
|
|
970
|
+
inset-inline-end: 0.1875rem;
|
|
971
|
+
inset-block-start: 50%;
|
|
972
|
+
inline-size: 0.375rem;
|
|
973
|
+
block-size: 0.5rem;
|
|
974
|
+
transform: translateY(-50%);
|
|
975
|
+
background: var(--interactive);
|
|
976
|
+
clip-path: polygon(0 50%, 100% 0, 100% 100%);
|
|
977
|
+
}
|
|
978
|
+
|
|
979
|
+
&::after {
|
|
980
|
+
content: '';
|
|
981
|
+
position: absolute;
|
|
982
|
+
inset-inline-end: 0;
|
|
983
|
+
inset-block-start: 50%;
|
|
984
|
+
inline-size: 0.1875rem;
|
|
985
|
+
block-size: 2.125rem;
|
|
986
|
+
transform: translateY(-50%);
|
|
987
|
+
border-radius: 0.0625rem;
|
|
988
|
+
background: var(--interactive);
|
|
989
|
+
}
|
|
990
|
+
}
|
|
941
991
|
}
|
|
942
|
-
}
|
|
992
|
+
`}
|
|
943
993
|
.row.hierarchical-group-footer-row {
|
|
944
994
|
.cell-fixed {
|
|
945
995
|
background: ${lightGreyColor};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StyledTableContainer.js","sourceRoot":"","sources":["../../../../Core/Views/Table/StyledTableContainer.jsx"],"names":[],"mappings":"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","sourcesContent":["import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n getLuminance,\n meetsContrastGuidelines,\n mix,\n readableColor,\n transparentize\n} from 'polished';\n\nimport { StyledStatus } from '@pega/cosmos-react-core/lib/components/Badges/Status';\nimport { StyledRadioCheck } from '@pega/cosmos-react-core/lib/components/RadioCheck/RadioCheck';\nimport {\n StyledLabel,\n StyledProgressBackdrop,\n calculateFontSize,\n tryCatch,\n isSameColor\n} from '@pega/cosmos-react-core';\nimport { StyledTabPanel } from '@pega/cosmos-react-core/lib/components/Tabs/TabPanel';\n\nimport { generateRSDataContainerHeightStyles, generateRSHeightStyles } from '../../Utils/styles';\n\nimport { CellIcon } from './CellWrapper';\n\nconst StyledTableContainer = styled(forwardRef((props, ref) => <div ref={ref} {...props} />))(({\n theme,\n view,\n isFullscreen\n}) => {\n let colIdToFillRemainingSpace;\n let isAggregationApplied = false;\n\n (view.columns ?? [])\n .filter(c => !c.hidden)\n .forEach(c => {\n if (!colIdToFillRemainingSpace && c.field.fillAvailableSpace) {\n colIdToFillRemainingSpace = c.field.id;\n }\n if (c.aggregated) {\n isAggregationApplied = true;\n }\n });\n\n const fontSize = calculateFontSize(theme.base['font-size'], theme.base['font-scale']);\n const showFreezeLine =\n view.state.responsive?.sm &&\n !(view.hasNoRecords || view.hasNoFrozenColumns || view.bHideFreezeLine);\n const selectedRowColor = tryCatch(() =>\n mix(0.85, theme.base.palette['primary-background'], theme.base.palette.interactive)\n );\n const lightGreyColor = theme.base.colors.gray['extra-light'];\n const freezeLineShadowTransparent = transparentize(\n getLuminance(theme.components.table.header['foreground-color']) < 0.5 ? 0.9 : 0.75,\n theme.components.table.header['foreground-color']\n );\n\n const headerBackground = theme.components.table.header['background-color'];\n const bodyPrimaryBackground = theme.components.table.body['background-color'];\n const bodySecondaryBackground = theme.components.table.body['secondary-background-color'];\n const secondaryBackgroundForEvenRow = isSameColor(headerBackground, bodyPrimaryBackground);\n\n /* Calculating usable striped row background and foreground colors */\n const stripedRowBackground =\n getLuminance(bodySecondaryBackground) > 0.5\n ? bodySecondaryBackground\n : mix(0.75, bodyPrimaryBackground, bodySecondaryBackground);\n\n const stripedRowContrast = meetsContrastGuidelines(\n theme.components.table.body['foreground-color'],\n stripedRowBackground\n ).AA;\n const useableStripedRowForeground = stripedRowContrast\n ? theme.components.table.body['foreground-color']\n : readableColor(theme.components.table.body['foreground-color'], stripedRowBackground);\n\n /* Calculating even row and odd row background and foreground colors */\n const evenRowBackgroundColor = secondaryBackgroundForEvenRow\n ? bodySecondaryBackground\n : bodyPrimaryBackground;\n\n const useableEvenRowForeground = secondaryBackgroundForEvenRow\n ? useableStripedRowForeground\n : theme.components.table.body['foreground-color'];\n\n /* Calculating usable odd row background and foreground colors */\n const oddRowBackgroundColor = secondaryBackgroundForEvenRow\n ? bodyPrimaryBackground\n : bodySecondaryBackground;\n\n const useableOddRowForeground = secondaryBackgroundForEvenRow\n ? theme.components.table.body['foreground-color']\n : useableStripedRowForeground;\n\n const headerForegroundContrast = meetsContrastGuidelines(\n theme.components.table.header['foreground-color'],\n theme.components.table.header['background-color']\n ).AA;\n const usableHeaderForeground = headerForegroundContrast\n ? theme.components.table.header['foreground-color']\n : readableColor(\n theme.components.table.header['foreground-color'],\n theme.components.table.header['background-color']\n );\n\n const borderVerticalInner = theme.components.table.border['vertical-inner'];\n const borderVerticalOuter = theme.components.table.border['vertical-outer'];\n const borderHorizontalInner =\n theme.components.table.border['horizontal-inner'] && !theme.components.table['striped-rows'];\n const borderHorizontalOuter = theme.components.table.border['horizontal-outer'];\n\n const showBorderOnLastStripedRow =\n theme.components.table.border['horizontal-inner'] && theme.components.table['striped-rows'];\n\n return css`\n --forground-color: ${theme.base.palette['foreground-color']};\n --interactive: ${theme.base.palette.interactive};\n --medium-blue: ${theme.base.colors.blue.medium};\n --border-color: ${theme.base.palette['border-line']};\n --border-color-freeze: #a5a5a5;\n --border-width: 0.062rem;\n --border-style: var(--border-width) solid var(--border-color);\n --font-stretch: ${theme.components.table.typography['font-stretch']};\n --letter-spacing: ${theme.components.table.typography['letter-spacing']};\n --cell-padding: ${theme.base.spacing};\n --cell-vertical-padding: calc(${theme.base.spacing} * 0.5);\n --header-cell-padding: 0 0.44rem 0 var(--cell-padding);\n --header-bg-color: ${theme.components.table.header['background-color']};\n --header-fg-color: ${usableHeaderForeground};\n --default-group-header-height: 1.5rem;\n --group-header-height: var(--default-group-header-height);\n --group-bg-color: ${theme.components.table.body['secondary-background-color']};\n --box-sizing: content-box;\n --animation-ease: ${theme.base.animation.timing.ease};\n --font-weight-semi-bold: ${theme.base['font-weight']['semi-bold']};\n --row-height-multiplier: 1.125;\n --cell-fixed-position: sticky;\n position: relative;\n ${() => generateRSHeightStyles({ view, isFullscreen })}\n\n .small-screen-table {\n --cell-fixed-position: static;\n }\n\n .container {\n ${() => generateRSDataContainerHeightStyles()};\n ${borderHorizontalOuter &&\n css`\n border-top: var(--border-style);\n border-bottom: var(--border-style);\n `}\n ${borderVerticalOuter &&\n css`\n border-left: var(--border-style);\n border-right: var(--border-style);\n `}\n ${borderVerticalOuter &&\n borderHorizontalOuter &&\n css`\n border-radius: var(--border-radius, ${theme.base['border-radius']});\n `}\n position: relative;\n letter-spacing: var(--letter-spacing);\n font-stretch: var(--font-stretch);\n ${StyledTabPanel} & ${StyledProgressBackdrop} {\n border-radius: var(--border-radius, ${theme.base['border-radius']});\n }\n }\n\n .hide-rows-till-ready .row[aria-rowindex] {\n visibility: hidden;\n }\n\n .table-drag-proxy {\n background: rgba(0, 0, 0, 0.21);\n position: absolute;\n top: 0;\n bottom: 0;\n z-index: 6;\n pointer-events: none;\n display: none;\n }\n\n .table-drag-line {\n background: #999999;\n position: absolute;\n top: 0;\n bottom: 0;\n width: 0.12rem;\n z-index: 6;\n pointer-events: none;\n display: none;\n }\n\n .cell-fixed {\n z-index: 1;\n }\n\n .group-wrapper {\n overflow: hidden;\n display: inline-flex;\n line-height: var(--group-header-height);\n\n .group-context-count {\n display: inline-flex;\n overflow: hidden;\n }\n }\n\n /* In review mode(Ex: Tabs) cosmos components are rendered and mark up is not compatible with\n group-wrapper cell. Overridden css in group-header when dl exists inside that class which indicates\n mark up is generated from cosmos which differentiates from normal table cell markup */\n .group-wrapper .group-context-count dl {\n grid-template-columns: auto;\n }\n\n .cell {\n /* preventing cell from shrinking during autosize calculations */\n flex-shrink: 0;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n\n .icons-ph {\n /* Maintaining action button aspect ratio of 1:1 with 24*24px width and height */\n min-width: 1.5rem;\n }\n\n &.custom-item {\n width: 10em;\n }\n }\n\n .cell:focus {\n box-shadow: ${theme.base.shadow['focus-inset']};\n outline: none;\n }\n\n .row {\n display: inline-flex;\n height: var(--row-height);\n outline: none 0;\n transition: transform 0.5s var(--animation-ease);\n box-sizing: var(--box-sizing);\n position: relative;\n\n > .row-select-handle {\n display: flex;\n justify-content: center;\n &:active {\n outline: none;\n }\n\n > .header-lable-container {\n /* stylelint-disable-next-line unit-allowed-list */\n min-width: 20px;\n }\n /* stylelint-disable selector-max-class */\n &.cell-fixed > .cell-content {\n flex-grow: unset;\n }\n }\n\n > .cell,\n .group-header-aggregation-row > .cell {\n position: relative;\n transition: transform 0.5s var(--animation-ease);\n ${borderVerticalInner &&\n css`\n border-right: var(--border-style);\n `}\n ${borderHorizontalInner &&\n css`\n border-bottom: var(--border-style);\n `}\n display: flex;\n align-items: center;\n\n &::after {\n opacity: 1;\n transition: opacity 0.1s var(--animation-ease);\n }\n\n .row-action-menu {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n &.cell-action {\n position: sticky;\n z-index: 4;\n right: 0;\n border-right: 0;\n justify-content: center;\n ${borderVerticalInner &&\n css`\n border-left: var(--border-style);\n `}\n\n /* The below styles are needed to avoid ellipses in safari when no text is present\n and to hide the 'Actions' label */\n\n /* stylelint-disable max-nesting-depth */\n\n div.header-label {\n text-overflow: unset;\n }\n }\n &.aggregateCell {\n background-color: var(--group-bg-color);\n }\n }\n\n /** Adds bottom border to the last row of a group, when striped-rows are enabled */\n &:has(+ .group-header-row) > .cell {\n ${showBorderOnLastStripedRow &&\n css`\n border-bottom: var(--border-style);\n `}\n }\n &.header > .cell {\n border-bottom: var(--border-style);\n }\n .group-header-aggregation-row {\n > .cell.cell-action {\n overflow: initial;\n\n /* extending border on the top left of row action cell as we need to show border for at the end group label value when row actions are present */\n &::before {\n content: '';\n position: absolute;\n inline-size: 0;\n inset-inline-start: calc(var(--border-width) * -1);\n inset-block-start: calc(var(--group-header-height) * -1);\n block-size: var(--group-header-height);\n ${borderVerticalInner &&\n css`\n border-inline-start: var(--border-style);\n `}\n }\n }\n }\n\n > .cell-action {\n background-color: ${bodyPrimaryBackground};\n }\n\n > .row-reorder-handle {\n padding: 0;\n border-right: 0 !important;\n justify-content: center;\n cursor: move;\n }\n\n .aggregateCell.cell {\n border-right: none;\n }\n\n > .cell.cell-fixed,\n .group-header-aggregation-row > .cell-fixed {\n position: var(--cell-fixed-position);\n z-index: 4;\n\n ${showFreezeLine &&\n css`\n &.cell-last-frozen {\n border-right: solid var(--border-width) var(--border-color-freeze);\n filter: drop-shadow(\n calc(${theme.base.spacing} * 0.25) 0 0 ${freezeLineShadowTransparent}\n );\n transition: 0.5s;\n }\n `}\n\n /* As the row select column and row dragDrop column always have to be frozen */\n &[data-col-id='RowSelect'],\n &[data-col-id='RowDragDrop'],\n &[data-col-id='RowError'] {\n position: sticky;\n flex-shrink: 0;\n z-index: 5;\n }\n }\n\n > .cell.cell-fixed:focus-within,\n .group-header-aggregation-row > .cell-fixed {\n z-index: 6;\n }\n\n &.click {\n cursor: pointer;\n }\n\n &:last-child {\n border-end-start-radius: inherit;\n border-end-end-radius: inherit;\n\n > .cell {\n &:first-child {\n border-end-start-radius: inherit;\n }\n\n &:last-child {\n border-end-end-radius: inherit;\n }\n\n ${showBorderOnLastStripedRow &&\n css`\n border-bottom: var(--border-style);\n `}\n }\n }\n }\n .row:not(.row-error):not(.group-header-row):not(.header) {\n .cell-fixed {\n background: ${bodyPrimaryBackground};\n }\n .cell-fixed.aggregateCell {\n background: var(--group-bg-color);\n }\n }\n ${theme.components.table['striped-rows'] &&\n css`\n /* Targets rows with an odd data-index attribute, excluding group header rows */\n .row[data-index$='1']:not(.group-header-row):not(.header),\n .row[data-index$='3']:not(.group-header-row):not(.header),\n .row[data-index$='5']:not(.group-header-row):not(.header),\n .row[data-index$='7']:not(.group-header-row):not(.header),\n .row[data-index$='9']:not(.group-header-row):not(.header) {\n background: ${oddRowBackgroundColor};\n color: ${useableOddRowForeground};\n .cell-fixed {\n background: ${oddRowBackgroundColor};\n color: ${useableOddRowForeground};\n }\n > .cell-action {\n background: ${oddRowBackgroundColor};\n }\n }\n .row[data-index$='0']:not(.group-header-row):not(.header),\n .row[data-index$='2']:not(.group-header-row):not(.header),\n .row[data-index$='4']:not(.group-header-row):not(.header),\n .row[data-index$='6']:not(.group-header-row):not(.header),\n .row[data-index$='8']:not(.group-header-row):not(.header) {\n background: ${evenRowBackgroundColor};\n color: ${useableEvenRowForeground};\n\n ${borderVerticalOuter &&\n css`\n .cell-fixed {\n background: ${evenRowBackgroundColor};\n color: ${useableEvenRowForeground};\n }\n > .cell-action {\n background: ${evenRowBackgroundColor};\n }\n `}\n\n /* Apply border radius if vertical outer border was disabled */\n ${!borderVerticalOuter &&\n css`\n border-radius: min(${props => props.theme.base['border-radius']}, 0.25rem);\n\n .cell-fixed {\n color: ${useableEvenRowForeground};\n }\n\n /* Avoid the non-frozen column's background to come behind the first cell's empty area in corner due to border-radius.\n Let the first cell-fixed take full rectangale width, add a pseudo element with the background and border radius of same size as the element */\n .cell-fixed:not(.cell-first) {\n background: ${evenRowBackgroundColor};\n }\n .cell-fixed.cell-first::before {\n background: ${evenRowBackgroundColor};\n content: '';\n position: absolute;\n inset: 0;\n z-index: -1;\n border-bottom-left-radius: min(${props => props.theme.base['border-radius']}, 0.25rem);\n pointer-events: none;\n }\n\n > .cell-action::before {\n background: ${evenRowBackgroundColor};\n content: '';\n position: absolute;\n inset: 0;\n z-index: -1;\n border-bottom-right-radius: min(${props => props.theme.base['border-radius']}, 0.25rem);\n pointer-events: none;\n }\n `}\n }\n\n .row[data-index='0']:not(.group-header-row):not(.header) {\n ${!borderVerticalOuter &&\n css`\n border-radius: 0 0 min(${props => props.theme.base['border-radius']}, 0.25rem)\n min(${props => props.theme.base['border-radius']}, 0.25rem);\n `}\n }\n `}\n\n .row-error {\n background: ${mix(\n 0.1,\n theme.components['form-field'].error['status-color'],\n theme.base.palette['primary-background']\n )};\n\n /* stylelint-disable no-descending-specificity */\n .cell-fixed,\n .cell-action {\n background: inherit;\n }\n\n > .cell:not(.cell-fixed):not(.cell-action) {\n background: none;\n }\n }\n\n .sort-info-container {\n .sort-sequence {\n font-size: 0.625rem;\n color: ${theme.base.colors.gray['extra-dark']};\n }\n }\n\n .filter-info-container {\n display: flex;\n justify-content: center;\n align-items: center;\n\n svg {\n /* stylelint-disable-next-line unit-allowed-list */\n width: 14px;\n /* stylelint-disable-next-line unit-allowed-list */\n height: 14px;\n }\n }\n\n .cell.row-error-column {\n padding: 0;\n border-right: 0;\n text-align: right;\n outline: none;\n\n /* Focus handling will be done as part of interation 2: EPIC-88751 */\n\n svg {\n color: ${theme.base.colors.red.medium};\n }\n }\n\n .cell-right-align .filter-info-container svg {\n margin: 0 0.312rem 0 0;\n }\n\n &.show-expand-collapse-all {\n .row > .cell-first {\n padding-left: calc(var(--expand-collapse-all-width) + var(--cell-padding) + 0.25rem);\n &.row-reorder-handle,\n &.row-error-column {\n padding: 0;\n }\n &.row-select-handle {\n padding-inline-start: var(--expand-collapse-all-width);\n }\n }\n\n .row-container .row > .cell-first {\n &.row-select-handle {\n /* Offset padding of 0.5rem added to SelectAllCheckbox in grouped views(getting pushed by margin),\n ensuring row select checkboxes align vertically in header and data rows */\n padding-inline-start: calc(\n var(--expand-collapse-all-width) - var(--cell-padding) + 0.5rem\n );\n }\n }\n\n /* stylelint-enable selector-max-class */\n .expand-collapse-all {\n position: absolute;\n width: var(--expand-collapse-all-width);\n z-index: 10;\n height: var(--row-height);\n background-color: var(--header-bg-color);\n color: var(--header-fg-color);\n border-bottom: var(--border-style);\n border-start-start-radius: ${theme.base['border-radius']};\n padding-inline-start: 0.125rem;\n margin-inline-start: 0.25rem;\n display: flex;\n align-items: center;\n justify-content: center;\n\n ${borderVerticalInner &&\n css`\n border-right: var(--border-style);\n `}\n\n &::before {\n content: '';\n position: absolute;\n inset-block-start: 0;\n inset-inline-start: -0.25rem;\n width: 0.25rem;\n height: 100%;\n background-color: var(--header-bg-color);\n z-index: 12;\n }\n\n > button {\n color: var(--forground-color);\n :focus {\n box-shadow: ${theme.base.shadow.focus};\n }\n }\n }\n .no-border-right {\n border-right: 0;\n }\n }\n\n /* stylelint-disable selector-max-class */\n\n .scroll-end {\n &.row-container > .row:last-child {\n & > .cell,\n & .group-header-aggregation-row > .cell {\n border-bottom: 0;\n }\n }\n }\n\n /* stylelint-enable selector-max-class */\n .header {\n font-weight: var(--font-weight-semi-bold);\n position: relative; /* This is required to position .border-fix element */\n border-start-start-radius: inherit;\n border-start-end-radius: inherit;\n\n > .cell.row-error-column {\n border-right: 0;\n }\n > .cell {\n display: flex;\n justify-content: space-between;\n align-items: center;\n z-index: 2;\n position: relative;\n cursor: pointer;\n background-color: var(--header-bg-color);\n color: var(--header-fg-color);\n font-weight: ${theme.base['font-weight'].bold};\n font-size: ${fontSize.xxs};\n ${borderVerticalInner &&\n css`\n border-right: var(--border-style);\n `}\n padding: var(--header-cell-padding);\n\n &:first-child {\n border-start-start-radius: inherit;\n }\n\n &:last-child {\n border-start-end-radius: inherit;\n }\n\n .header-lable-container {\n display: inline-flex;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: ${fontSize.xs};\n font-weight: var(--font-weight-semi-bold);\n align-items: center;\n gap: 0.125rem;\n }\n\n .header-label {\n overflow: hidden;\n text-overflow: ellipsis;\n\n /* To avoid browser tooltip when we get ellipsis in safari */\n &::after {\n content: '';\n display: block;\n }\n\n /* To utilize smart tooltip making it as a non-box element */\n /* stylelint-disable selector-max-class */\n .cell-content {\n display: contents;\n }\n }\n }\n\n > .row-reorder-handle {\n padding: 0;\n }\n\n > .row-select-handle {\n /* Nullifying padding applied from .header > .cell */\n padding: 0;\n justify-content: center;\n }\n .row {\n border-bottom: none;\n }\n }\n\n .sticky-header {\n display: grid;\n position: sticky;\n top: 0;\n z-index: 6;\n border-start-start-radius: inherit;\n border-start-end-radius: inherit;\n\n ${!borderVerticalInner &&\n css`\n & .row .cell:not(.cell-last-frozen):not(.cell-last):has(.column-resizer) {\n &::after {\n content: '';\n position: absolute;\n right: 0;\n top: 0.5rem;\n bottom: 0.5rem;\n width: 0.062rem;\n background-color: ${theme.base.palette['border-line']};\n }\n }\n `}\n }\n\n /* 4 selectors required as aggregateCell of only footer need this effect */\n\n .pContainer:not(.pContainerScroll) .footer .aggregateCell.cell {\n border-bottom: none;\n }\n\n .row .cell.cell-last {\n border-right: 0;\n }\n\n ${!colIdToFillRemainingSpace\n ? css`\n .row .cell.cell-last {\n flex-grow: 1;\n }\n `\n : css`\n .row .cell[data-col-id='${colIdToFillRemainingSpace}'] {\n flex-grow: 1;\n }\n `}\n\n /* Disable the flex layout size changes when measuring for content based size to get correct width */\n\n [data-content-size-measuring] & .row .cell {\n flex-grow: 0 !important;\n }\n\n .row-container {\n --data-row-height: calc(\n var(--hit-area) * var(--row-height-multiplier) + var(--cell-vertical-padding)\n );\n --group-header-height: ${isAggregationApplied\n ? 'var(--default-group-header-height)'\n : 'var(--data-row-height)'};\n &:not(.wrap-content-height) > .row:not(.group-header-row) {\n height: var(--data-row-height);\n }\n border-end-start-radius: inherit;\n border-end-end-radius: inherit;\n\n & > .row .cell-content {\n /*\n * Using box sizing content-box so that the padding is not considered for the alignment of the cell content.\n * Vertical alignment is done using flex and max-height below even though the .cell-content might overflow due to padding + content size.\n */\n box-sizing: content-box;\n flex-grow: 1;\n\n /* Adding padding on .cell-content so that focus rings can appear properly and doesn't clip due to overflow: hidden */\n padding: var(--cell-vertical-padding) var(--cell-padding);\n\n /* setting max-height so that the elements with more height like RTL, align with the row density height */\n max-height: var(--data-row-height);\n\n /* hiding scroll bar in case the cell render introduces scrollbar based on its implementation */\n & * {\n scrollbar-width: none;\n }\n\n /* in case of combine columns, removing padding from parent cell-content as children already have the padding */\n &:has(.combined-cell) {\n padding: 0;\n\n .cell-content {\n flex-grow: unset;\n }\n }\n }\n\n & > .row:not(.group-header-row) {\n min-width: 100%;\n\n .cell-content {\n &:not(:has(.combined-cell)):not(.combined-cell-content):has(${StyledStatus}) {\n padding: unset;\n\n &,\n & > span,\n & ${StyledStatus} {\n block-size: 100%;\n }\n\n ${StyledStatus} {\n display: flex;\n align-items: center;\n justify-content: space-evenly;\n border-radius: 0;\n }\n }\n }\n }\n\n &.wrap-content-height\n > .row:not(.group-header-row)\n .cell:not(:has(.combined-cell)):has(${StyledStatus}) {\n padding: 0;\n }\n\n & > .row .cell:not(.column-type-action) .cell-content {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n word-break: break-all;\n }\n }\n\n .row .aggregateCell .cell-content {\n line-height: initial;\n padding: 0;\n }\n\n .short-height,\n .medium-height {\n ${StyledStatus} {\n white-space: nowrap;\n }\n }\n\n .short-height {\n ${StyledRadioCheck} ${StyledLabel} {\n min-height: auto;\n }\n }\n\n .medium-height {\n --row-height-multiplier: 4 / 3;\n }\n\n .tall-height {\n --row-height-multiplier: calc(4 / 3 + 0.5);\n > .row:not(.group-header-row) {\n > .cell {\n display: inline-grid;\n align-items: start;\n white-space: pre-wrap;\n word-break: break-all;\n grid-auto-flow: column;\n\n :has(> ${CellIcon}) {\n /* Adds spacing between children when icons are rendered alongside cell content in the cell container. */\n justify-content: space-between;\n }\n\n /* stylelint-disable-next-line selector-max-compound-selectors */\n > .cell-content > .combined-cell > .combined-cell-content,\n > .cell-content {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n white-space: inherit;\n word-break: inherit;\n }\n\n ${CellIcon} {\n margin-block-start: 0.375rem;\n }\n }\n }\n }\n\n .wrap-content-height {\n --row-height-multiplier: 4 / 3;\n --row-min-height: calc(\n var(--hit-area) * var(--row-height-multiplier) + var(--cell-vertical-padding) * 2\n );\n --group-header-height: ${isAggregationApplied\n ? 'var(--default-group-header-height)'\n : 'var(--row-min-height)'};\n\n > .row:not(.group-header-row) {\n height: auto;\n min-height: var(--row-min-height);\n > .cell {\n white-space: pre-wrap;\n\n /* -- For BUG-625508 -- */\n word-break: break-word;\n display: inline-grid;\n align-items: start;\n padding-top: var(--cell-vertical-padding);\n padding-bottom: var(--cell-vertical-padding);\n grid-auto-flow: column;\n\n :has(> ${CellIcon}) {\n /* Adds spacing between children when icons are rendered alongside cell content in the cell container. */\n justify-content: space-between;\n }\n\n /* stylelint-disable-next-line selector-max-compound-selectors */\n > .cell-content > .combined-cell > .combined-cell-content,\n > .cell-content {\n /* for full-content, the row cells should adjust according to content */\n max-height: none;\n white-space: inherit;\n word-break: inherit;\n }\n\n ${CellIcon} {\n margin-block-start: 0.375rem;\n }\n }\n }\n }\n\n .footer {\n .row {\n .cell {\n padding: 0;\n }\n }\n }\n\n /* stylelint-disable no-duplicate-selectors */\n .row-container {\n position: absolute;\n display: grid;\n width: 100%;\n font-size: ${fontSize.s};\n\n > .group-header-row,\n .hierarchical-group-footer-row {\n height: var(--group-header-height);\n .cell {\n padding: 0;\n border-right-width: 0;\n }\n }\n\n > .hierarchical-group-header-row {\n height: var(--group-header-height);\n }\n input.checkbox-on-hover + label {\n opacity: 0;\n }\n input.checkbox-on-hover:checked + label {\n opacity: 1;\n }\n .row.selected-row {\n background-color: ${selectedRowColor};\n\n > .cell,\n .cell-fixed,\n .cell-action {\n background-color: ${selectedRowColor};\n }\n }\n .row-on-hover:hover {\n background-color: ${lightGreyColor};\n input.checkbox-on-hover + label {\n opacity: 1;\n }\n\n > .cell,\n .cell-fixed,\n .cell-action {\n background-color: ${lightGreyColor};\n }\n }\n .row.hierarchical-group-footer-row {\n .cell-fixed {\n background: ${lightGreyColor};\n }\n }\n }\n\n /* stylelint-enable selector-max-class */\n\n .toolbar-button-applied {\n /* stylelint-disable-next-line unit-allowed-list */\n padding: 0 8px;\n margin: 0 calc(${theme.base.spacing} / 4);\n }\n\n .toolbar-button {\n /* stylelint-disable-next-line unit-allowed-list */\n padding: 0 8px;\n margin: 0 calc(${theme.base.spacing} / 4);\n }\n\n .column-resizer {\n cursor: col-resize;\n position: absolute;\n top: 0;\n right: 0;\n z-index: 3;\n width: 0.25rem;\n height: 100%;\n }\n\n .column-resizer:hover,\n .column-resizer:active {\n background: var(--interactive);\n }\n\n .align-right {\n justify-content: right;\n\n .cell-content {\n text-align: right;\n }\n }\n\n .align-left {\n justify-content: left;\n\n .cell-content {\n text-align: left;\n }\n }\n\n .align-center {\n justify-content: center;\n\n .cell-content {\n text-align: center;\n }\n }\n\n .popper {\n div.row {\n display: flex;\n vertical-align: middle;\n line-height: unset;\n border-bottom: none;\n outline: none 0;\n height: auto;\n }\n }\n `;\n});\n\nexport default StyledTableContainer;\n"]}
|
|
1
|
+
{"version":3,"file":"StyledTableContainer.js","sourceRoot":"","sources":["../../../../Core/Views/Table/StyledTableContainer.jsx"],"names":[],"mappings":"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","sourcesContent":["import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport {\n getLuminance,\n meetsContrastGuidelines,\n mix,\n readableColor,\n transparentize\n} from 'polished';\n\nimport { StyledStatus } from '@pega/cosmos-react-core/lib/components/Badges/Status';\nimport { StyledRadioCheck } from '@pega/cosmos-react-core/lib/components/RadioCheck/RadioCheck';\nimport {\n StyledLabel,\n StyledProgressBackdrop,\n calculateFontSize,\n tryCatch,\n isSameColor\n} from '@pega/cosmos-react-core';\nimport { StyledTabPanel } from '@pega/cosmos-react-core/lib/components/Tabs/TabPanel';\n\nimport { generateRSDataContainerHeightStyles, generateRSHeightStyles } from '../../Utils/styles';\nimport {\n MASTER_DETAIL_INDICATOR_CLASS,\n MASTER_DETAIL_PREVIEW_HIGHLIGHT_CLASS\n} from '../../constants';\n\nimport { CellIcon } from './CellWrapper';\n\nconst dataRowSelector = `.row:not(.group-header-row):not(.hierarchical-group-header-row):not(\n .hierarchical-group-footer-row\n):not(.header)`;\n\nconst rowBackground = backgroundColor => css`\n background-color: ${backgroundColor};\n\n /* Sticky action cells and the first frozen cell use pseudo-elements to paint their backgrounds. */\n > .cell,\n > .cell-action::before,\n > .cell-fixed.cell-first::before {\n background-color: ${backgroundColor};\n }\n`;\n\nconst StyledTableContainer = styled(forwardRef((props, ref) => <div ref={ref} {...props} />))(({\n theme,\n view,\n isFullscreen\n}) => {\n let colIdToFillRemainingSpace;\n let isAggregationApplied = false;\n\n (view.columns ?? [])\n .filter(c => !c.hidden)\n .forEach(c => {\n if (!colIdToFillRemainingSpace && c.field.fillAvailableSpace) {\n colIdToFillRemainingSpace = c.field.id;\n }\n if (c.aggregated) {\n isAggregationApplied = true;\n }\n });\n\n const fontSize = calculateFontSize(theme.base['font-size'], theme.base['font-scale']);\n const showFreezeLine =\n view.state.responsive?.sm &&\n !(view.hasNoRecords || view.hasNoFrozenColumns || view.bHideFreezeLine);\n const highlightedRowColor = tryCatch(() =>\n mix(0.85, theme.base.palette['primary-background'], theme.base.palette.interactive)\n );\n const previewHighlightBorderColor = tryCatch(() =>\n transparentize(0.7, theme.base.palette.interactive)\n );\n const lightGreyColor = theme.base.colors.gray['extra-light'];\n const freezeLineShadowTransparent = transparentize(\n getLuminance(theme.components.table.header['foreground-color']) < 0.5 ? 0.9 : 0.75,\n theme.components.table.header['foreground-color']\n );\n\n const headerBackground = theme.components.table.header['background-color'];\n const bodyPrimaryBackground = theme.components.table.body['background-color'];\n const bodySecondaryBackground = theme.components.table.body['secondary-background-color'];\n const secondaryBackgroundForEvenRow = isSameColor(headerBackground, bodyPrimaryBackground);\n\n /* Calculating usable striped row background and foreground colors */\n const stripedRowBackground =\n getLuminance(bodySecondaryBackground) > 0.5\n ? bodySecondaryBackground\n : mix(0.75, bodyPrimaryBackground, bodySecondaryBackground);\n\n const stripedRowContrast = meetsContrastGuidelines(\n theme.components.table.body['foreground-color'],\n stripedRowBackground\n ).AA;\n const useableStripedRowForeground = stripedRowContrast\n ? theme.components.table.body['foreground-color']\n : readableColor(theme.components.table.body['foreground-color'], stripedRowBackground);\n\n /* Calculating even row and odd row background and foreground colors */\n const evenRowBackgroundColor = secondaryBackgroundForEvenRow\n ? bodySecondaryBackground\n : bodyPrimaryBackground;\n\n const useableEvenRowForeground = secondaryBackgroundForEvenRow\n ? useableStripedRowForeground\n : theme.components.table.body['foreground-color'];\n\n /* Calculating usable odd row background and foreground colors */\n const oddRowBackgroundColor = secondaryBackgroundForEvenRow\n ? bodyPrimaryBackground\n : bodySecondaryBackground;\n\n const useableOddRowForeground = secondaryBackgroundForEvenRow\n ? theme.components.table.body['foreground-color']\n : useableStripedRowForeground;\n\n const headerForegroundContrast = meetsContrastGuidelines(\n theme.components.table.header['foreground-color'],\n theme.components.table.header['background-color']\n ).AA;\n const usableHeaderForeground = headerForegroundContrast\n ? theme.components.table.header['foreground-color']\n : readableColor(\n theme.components.table.header['foreground-color'],\n theme.components.table.header['background-color']\n );\n\n const borderVerticalInner = theme.components.table.border['vertical-inner'];\n const borderVerticalOuter = theme.components.table.border['vertical-outer'];\n const borderHorizontalInner =\n theme.components.table.border['horizontal-inner'] && !theme.components.table['striped-rows'];\n const borderHorizontalOuter = theme.components.table.border['horizontal-outer'];\n\n const showBorderOnLastStripedRow =\n theme.components.table.border['horizontal-inner'] && theme.components.table['striped-rows'];\n const isMasterDetailEnabled = !!view.meta.masterDetail;\n\n return css`\n --forground-color: ${theme.base.palette['foreground-color']};\n --interactive: ${theme.base.palette.interactive};\n --light-blue: ${theme.base.colors.blue['extra-light']};\n --medium-blue: ${theme.base.colors.blue.medium};\n --border-color: ${theme.base.palette['border-line']};\n --border-color-freeze: #a5a5a5;\n --border-width: 0.062rem;\n --border-style: var(--border-width) solid var(--border-color);\n --font-stretch: ${theme.components.table.typography['font-stretch']};\n --letter-spacing: ${theme.components.table.typography['letter-spacing']};\n --cell-padding: ${theme.base.spacing};\n --cell-vertical-padding: calc(${theme.base.spacing} * 0.5);\n --header-cell-padding: 0 0.44rem 0 var(--cell-padding);\n --header-bg-color: ${theme.components.table.header['background-color']};\n --header-fg-color: ${usableHeaderForeground};\n --default-group-header-height: 1.5rem;\n --group-header-height: var(--default-group-header-height);\n --group-bg-color: ${theme.components.table.body['secondary-background-color']};\n --box-sizing: content-box;\n --animation-ease: ${theme.base.animation.timing.ease};\n --font-weight-semi-bold: ${theme.base['font-weight']['semi-bold']};\n --row-height-multiplier: 1.125;\n --cell-fixed-position: sticky;\n position: relative;\n ${() => generateRSHeightStyles({ view, isFullscreen })}\n\n .small-screen-table {\n --cell-fixed-position: static;\n }\n\n .container {\n ${() => generateRSDataContainerHeightStyles()};\n ${borderHorizontalOuter &&\n css`\n border-top: var(--border-style);\n border-bottom: var(--border-style);\n `}\n ${borderVerticalOuter &&\n css`\n border-left: var(--border-style);\n border-right: var(--border-style);\n `}\n ${borderVerticalOuter &&\n borderHorizontalOuter &&\n css`\n border-radius: var(--border-radius, ${theme.base['border-radius']});\n `}\n position: relative;\n letter-spacing: var(--letter-spacing);\n font-stretch: var(--font-stretch);\n ${StyledTabPanel} & ${StyledProgressBackdrop} {\n border-radius: var(--border-radius, ${theme.base['border-radius']});\n }\n }\n\n .hide-rows-till-ready .row[aria-rowindex] {\n visibility: hidden;\n }\n\n .table-drag-proxy {\n background: rgba(0, 0, 0, 0.21);\n position: absolute;\n top: 0;\n bottom: 0;\n z-index: 6;\n pointer-events: none;\n display: none;\n }\n\n .table-drag-line {\n background: #999999;\n position: absolute;\n top: 0;\n bottom: 0;\n width: 0.12rem;\n z-index: 6;\n pointer-events: none;\n display: none;\n }\n\n .cell-fixed {\n z-index: 1;\n }\n\n .group-wrapper {\n overflow: hidden;\n display: inline-flex;\n line-height: var(--group-header-height);\n\n .group-context-count {\n display: inline-flex;\n overflow: hidden;\n }\n }\n\n /* In review mode(Ex: Tabs) cosmos components are rendered and mark up is not compatible with\n group-wrapper cell. Overridden css in group-header when dl exists inside that class which indicates\n mark up is generated from cosmos which differentiates from normal table cell markup */\n .group-wrapper .group-context-count dl {\n grid-template-columns: auto;\n }\n\n .cell {\n /* preventing cell from shrinking during autosize calculations */\n flex-shrink: 0;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n\n .icons-ph {\n /* Maintaining action button aspect ratio of 1:1 with 24*24px width and height */\n min-width: 1.5rem;\n }\n\n &.custom-item {\n width: 10em;\n }\n }\n\n .cell:focus {\n box-shadow: ${theme.base.shadow['focus-inset']};\n outline: none;\n }\n\n .row {\n display: inline-flex;\n height: var(--row-height);\n outline: none 0;\n transition: transform 0.5s var(--animation-ease);\n box-sizing: var(--box-sizing);\n position: relative;\n\n > .row-select-handle {\n display: flex;\n justify-content: center;\n &:active {\n outline: none;\n }\n\n > .header-lable-container {\n min-width: 1.25rem;\n }\n /* stylelint-disable selector-max-class */\n &.cell-fixed > .cell-content {\n flex-grow: unset;\n }\n }\n\n > .cell,\n .group-header-aggregation-row > .cell {\n position: relative;\n transition: transform 0.5s var(--animation-ease);\n ${borderVerticalInner &&\n css`\n border-right: var(--border-style);\n `}\n ${borderHorizontalInner &&\n css`\n border-bottom: var(--border-style);\n `}\n display: flex;\n align-items: center;\n\n &::after {\n opacity: 1;\n transition: opacity 0.1s var(--animation-ease);\n }\n\n .row-action-menu {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n &.cell-action {\n position: sticky;\n z-index: 4;\n right: 0;\n border-right: 0;\n justify-content: center;\n ${borderVerticalInner &&\n css`\n border-left: var(--border-style);\n `}\n\n /* The below styles are needed to avoid ellipses in safari when no text is present\n and to hide the 'Actions' label */\n\n /* stylelint-disable max-nesting-depth */\n\n div.header-label {\n text-overflow: unset;\n }\n }\n &.aggregateCell {\n background-color: var(--group-bg-color);\n }\n }\n\n /** Adds bottom border to the last row of a group, when striped-rows are enabled */\n &:has(+ .group-header-row) > .cell {\n ${showBorderOnLastStripedRow &&\n css`\n border-bottom: var(--border-style);\n `}\n }\n &.header > .cell {\n border-bottom: var(--border-style);\n }\n .group-header-aggregation-row {\n > .cell.cell-action {\n overflow: initial;\n\n /* extending border on the top left of row action cell as we need to show border for at the end group label value when row actions are present */\n &::before {\n content: '';\n position: absolute;\n inline-size: 0;\n inset-inline-start: calc(var(--border-width) * -1);\n inset-block-start: calc(var(--group-header-height) * -1);\n block-size: var(--group-header-height);\n ${borderVerticalInner &&\n css`\n border-inline-start: var(--border-style);\n `}\n }\n }\n }\n\n > .cell-action {\n background-color: ${bodyPrimaryBackground};\n }\n\n > .row-reorder-handle {\n padding: 0;\n border-right: 0 !important;\n justify-content: center;\n cursor: move;\n }\n\n .aggregateCell.cell {\n border-right: none;\n }\n\n > .cell.cell-fixed,\n .group-header-aggregation-row > .cell-fixed {\n position: var(--cell-fixed-position);\n z-index: 4;\n\n ${showFreezeLine &&\n css`\n &.cell-last-frozen {\n border-right: solid var(--border-width) var(--border-color-freeze);\n filter: drop-shadow(\n calc(${theme.base.spacing} * 0.25) 0 0 ${freezeLineShadowTransparent}\n );\n transition: 0.5s;\n }\n `}\n\n /* As the row select column and row dragDrop column always have to be frozen */\n &[data-col-id='RowSelect'],\n &[data-col-id='RowDragDrop'],\n &[data-col-id='RowError'] {\n position: sticky;\n flex-shrink: 0;\n z-index: 5;\n }\n }\n\n > .cell.cell-fixed:focus-within,\n .group-header-aggregation-row > .cell-fixed {\n z-index: 6;\n }\n\n &.click {\n cursor: pointer;\n }\n\n &:last-child {\n border-end-start-radius: inherit;\n border-end-end-radius: inherit;\n\n > .cell {\n &:first-child {\n border-end-start-radius: inherit;\n }\n\n &:last-child {\n border-end-end-radius: inherit;\n }\n\n ${showBorderOnLastStripedRow &&\n css`\n border-bottom: var(--border-style);\n `}\n }\n }\n }\n .row:not(.row-error):not(.group-header-row):not(.header) {\n .cell-fixed {\n background: ${bodyPrimaryBackground};\n }\n .cell-fixed.aggregateCell {\n background: var(--group-bg-color);\n }\n }\n ${theme.components.table['striped-rows'] &&\n css`\n /* Targets rows with an odd data-index attribute, excluding group header rows */\n .row[data-index$='1']:not(.group-header-row):not(.header),\n .row[data-index$='3']:not(.group-header-row):not(.header),\n .row[data-index$='5']:not(.group-header-row):not(.header),\n .row[data-index$='7']:not(.group-header-row):not(.header),\n .row[data-index$='9']:not(.group-header-row):not(.header) {\n background: ${oddRowBackgroundColor};\n color: ${useableOddRowForeground};\n .cell-fixed {\n background: ${oddRowBackgroundColor};\n color: ${useableOddRowForeground};\n }\n > .cell-action {\n background: ${oddRowBackgroundColor};\n }\n }\n .row[data-index$='0']:not(.group-header-row):not(.header),\n .row[data-index$='2']:not(.group-header-row):not(.header),\n .row[data-index$='4']:not(.group-header-row):not(.header),\n .row[data-index$='6']:not(.group-header-row):not(.header),\n .row[data-index$='8']:not(.group-header-row):not(.header) {\n background: ${evenRowBackgroundColor};\n color: ${useableEvenRowForeground};\n\n ${borderVerticalOuter &&\n css`\n .cell-fixed {\n background: ${evenRowBackgroundColor};\n color: ${useableEvenRowForeground};\n }\n > .cell-action {\n background: ${evenRowBackgroundColor};\n }\n `}\n\n /* Apply border radius if vertical outer border was disabled */\n ${!borderVerticalOuter &&\n css`\n border-radius: min(${props => props.theme.base['border-radius']}, 0.25rem);\n\n .cell-fixed {\n color: ${useableEvenRowForeground};\n }\n\n /* Avoid the non-frozen column's background to come behind the first cell's empty area in corner due to border-radius.\n Let the first cell-fixed take full rectangale width, add a pseudo element with the background and border radius of same size as the element */\n .cell-fixed:not(.cell-first) {\n background: ${evenRowBackgroundColor};\n }\n .cell-fixed.cell-first::before {\n background: ${evenRowBackgroundColor};\n content: '';\n position: absolute;\n inset: 0;\n z-index: -1;\n border-bottom-left-radius: min(${props => props.theme.base['border-radius']}, 0.25rem);\n pointer-events: none;\n }\n\n > .cell-action::before {\n background: ${evenRowBackgroundColor};\n content: '';\n position: absolute;\n inset: 0;\n z-index: -1;\n border-bottom-right-radius: min(${props => props.theme.base['border-radius']}, 0.25rem);\n pointer-events: none;\n }\n `}\n }\n\n .row[data-index='0']:not(.group-header-row):not(.header) {\n ${!borderVerticalOuter &&\n css`\n border-radius: 0 0 min(${props => props.theme.base['border-radius']}, 0.25rem)\n min(${props => props.theme.base['border-radius']}, 0.25rem);\n `}\n }\n `}\n\n .row-error {\n background: ${mix(\n 0.1,\n theme.components['form-field'].error['status-color'],\n theme.base.palette['primary-background']\n )};\n\n /* stylelint-disable no-descending-specificity */\n .cell-fixed,\n .cell-action {\n background: inherit;\n }\n\n > .cell:not(.cell-fixed):not(.cell-action) {\n background: none;\n }\n }\n\n .sort-info-container {\n .sort-sequence {\n font-size: 0.625rem;\n color: ${theme.base.colors.gray['extra-dark']};\n }\n }\n\n .filter-info-container {\n display: flex;\n justify-content: center;\n align-items: center;\n\n svg {\n width: 0.875rem;\n height: 0.875rem;\n }\n }\n\n .cell.row-error-column {\n padding: 0;\n border-right: 0;\n text-align: right;\n outline: none;\n\n /* Focus handling will be done as part of interation 2: EPIC-88751 */\n\n svg {\n color: ${theme.base.colors.red.medium};\n }\n }\n\n .cell-right-align .filter-info-container svg {\n margin: 0 0.312rem 0 0;\n }\n\n &.show-expand-collapse-all {\n .row > .cell-first {\n padding-left: calc(var(--expand-collapse-all-width) + var(--cell-padding) + 0.25rem);\n &.row-reorder-handle,\n &.row-error-column {\n padding: 0;\n }\n &.row-select-handle {\n padding-inline-start: var(--expand-collapse-all-width);\n }\n }\n\n .row-container .row > .cell-first {\n &.row-select-handle {\n /* Offset padding of 0.5rem added to SelectAllCheckbox in grouped views(getting pushed by margin),\n ensuring row select checkboxes align vertically in header and data rows */\n padding-inline-start: calc(\n var(--expand-collapse-all-width) - var(--cell-padding) + 0.5rem\n );\n }\n }\n\n /* stylelint-enable selector-max-class */\n .expand-collapse-all {\n position: absolute;\n width: var(--expand-collapse-all-width);\n z-index: 10;\n height: var(--row-height);\n background-color: var(--header-bg-color);\n color: var(--header-fg-color);\n border-bottom: var(--border-style);\n border-start-start-radius: ${theme.base['border-radius']};\n padding-inline-start: 0.125rem;\n margin-inline-start: 0.25rem;\n display: flex;\n align-items: center;\n justify-content: center;\n\n ${borderVerticalInner &&\n css`\n border-right: var(--border-style);\n `}\n\n &::before {\n content: '';\n position: absolute;\n inset-block-start: 0;\n inset-inline-start: -0.25rem;\n width: 0.25rem;\n height: 100%;\n background-color: var(--header-bg-color);\n z-index: 12;\n }\n\n > button {\n color: var(--forground-color);\n :focus {\n box-shadow: ${theme.base.shadow.focus};\n }\n }\n }\n .no-border-right {\n border-right: 0;\n }\n }\n\n /* stylelint-disable selector-max-class */\n\n .scroll-end {\n &.row-container > .row:last-child {\n & > .cell,\n & .group-header-aggregation-row > .cell {\n border-bottom: 0;\n }\n }\n }\n\n /* stylelint-enable selector-max-class */\n .header {\n font-weight: var(--font-weight-semi-bold);\n position: relative; /* This is required to position .border-fix element */\n border-start-start-radius: inherit;\n border-start-end-radius: inherit;\n\n > .cell.row-error-column {\n border-right: 0;\n }\n > .cell {\n display: flex;\n justify-content: space-between;\n align-items: center;\n z-index: 2;\n position: relative;\n cursor: pointer;\n background-color: var(--header-bg-color);\n color: var(--header-fg-color);\n font-weight: ${theme.base['font-weight'].bold};\n font-size: ${fontSize.xxs};\n ${borderVerticalInner &&\n css`\n border-right: var(--border-style);\n `}\n padding: var(--header-cell-padding);\n\n &:first-child {\n border-start-start-radius: inherit;\n }\n\n &:last-child {\n border-start-end-radius: inherit;\n }\n\n .header-lable-container {\n display: inline-flex;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: ${fontSize.xs};\n font-weight: var(--font-weight-semi-bold);\n align-items: center;\n gap: 0.125rem;\n }\n\n .header-label {\n overflow: hidden;\n text-overflow: ellipsis;\n\n /* To avoid browser tooltip when we get ellipsis in safari */\n &::after {\n content: '';\n display: block;\n }\n\n /* To utilize smart tooltip making it as a non-box element */\n /* stylelint-disable selector-max-class */\n .cell-content {\n display: contents;\n }\n }\n }\n\n > .row-reorder-handle {\n padding: 0;\n }\n\n > .row-select-handle {\n /* Nullifying padding applied from .header > .cell */\n padding: 0;\n justify-content: center;\n }\n .row {\n border-bottom: none;\n }\n }\n\n .sticky-header {\n display: grid;\n position: sticky;\n top: 0;\n z-index: 9;\n border-start-start-radius: inherit;\n border-start-end-radius: inherit;\n\n ${!borderVerticalInner &&\n css`\n & .row .cell:not(.cell-last-frozen):not(.cell-last):has(.column-resizer) {\n &::after {\n content: '';\n position: absolute;\n right: 0;\n top: 0.5rem;\n bottom: 0.5rem;\n width: 0.062rem;\n background-color: ${theme.base.palette['border-line']};\n }\n }\n `}\n }\n\n /* 4 selectors required as aggregateCell of only footer need this effect */\n\n .pContainer:not(.pContainerScroll) .footer .aggregateCell.cell {\n border-bottom: none;\n }\n\n .row .cell.cell-last {\n border-right: 0;\n }\n\n ${!colIdToFillRemainingSpace\n ? css`\n .row .cell.cell-last {\n flex-grow: 1;\n }\n `\n : css`\n .row .cell[data-col-id='${colIdToFillRemainingSpace}'] {\n flex-grow: 1;\n }\n `}\n\n /* Disable the flex layout size changes when measuring for content based size to get correct width */\n\n [data-content-size-measuring] & .row .cell {\n flex-grow: 0 !important;\n }\n\n .row-container {\n --data-row-height: calc(\n var(--hit-area) * var(--row-height-multiplier) + var(--cell-vertical-padding)\n );\n --group-header-height: ${isAggregationApplied\n ? 'var(--default-group-header-height)'\n : 'var(--data-row-height)'};\n &:not(.wrap-content-height) > .row:not(.group-header-row) {\n height: var(--data-row-height);\n }\n border-end-start-radius: inherit;\n border-end-end-radius: inherit;\n\n & > .row .cell-content {\n /*\n * Using box sizing content-box so that the padding is not considered for the alignment of the cell content.\n * Vertical alignment is done using flex and max-height below even though the .cell-content might overflow due to padding + content size.\n */\n box-sizing: content-box;\n flex-grow: 1;\n\n /* Adding padding on .cell-content so that focus rings can appear properly and doesn't clip due to overflow: hidden */\n padding: var(--cell-vertical-padding) var(--cell-padding);\n\n /* setting max-height so that the elements with more height like RTL, align with the row density height */\n max-height: var(--data-row-height);\n\n /* hiding scroll bar in case the cell render introduces scrollbar based on its implementation */\n & * {\n scrollbar-width: none;\n }\n\n /* in case of combine columns, removing padding from parent cell-content as children already have the padding */\n &:has(.combined-cell) {\n padding: 0;\n\n .cell-content {\n flex-grow: unset;\n }\n }\n }\n\n & > .row:not(.group-header-row) {\n min-width: 100%;\n\n .cell-content {\n &:not(:has(.combined-cell)):not(.combined-cell-content):has(${StyledStatus}) {\n padding: unset;\n\n &,\n & > span,\n & ${StyledStatus} {\n block-size: 100%;\n }\n\n ${StyledStatus} {\n display: flex;\n align-items: center;\n justify-content: space-evenly;\n border-radius: 0;\n }\n }\n }\n }\n\n &.wrap-content-height\n > .row:not(.group-header-row)\n .cell:not(:has(.combined-cell)):has(${StyledStatus}) {\n padding: 0;\n }\n\n & > .row .cell:not(.column-type-action) .cell-content {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n word-break: break-all;\n }\n }\n\n .row .aggregateCell .cell-content {\n line-height: initial;\n padding: 0;\n }\n\n .short-height,\n .medium-height {\n ${StyledStatus} {\n white-space: nowrap;\n }\n }\n\n .short-height {\n ${StyledRadioCheck} ${StyledLabel} {\n min-height: auto;\n }\n }\n\n .medium-height {\n --row-height-multiplier: 4 / 3;\n }\n\n .tall-height {\n --row-height-multiplier: calc(4 / 3 + 0.5);\n > .row:not(.group-header-row) {\n > .cell {\n display: inline-grid;\n align-items: start;\n white-space: pre-wrap;\n word-break: break-all;\n grid-auto-flow: column;\n\n :has(> ${CellIcon}) {\n /* Adds spacing between children when icons are rendered alongside cell content in the cell container. */\n justify-content: space-between;\n }\n\n /* stylelint-disable-next-line selector-max-compound-selectors */\n > .cell-content > .combined-cell > .combined-cell-content,\n > .cell-content {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n white-space: inherit;\n word-break: inherit;\n }\n\n ${CellIcon} {\n margin-block-start: 0.375rem;\n }\n }\n }\n }\n\n .wrap-content-height {\n --row-height-multiplier: 4 / 3;\n --row-min-height: calc(\n var(--hit-area) * var(--row-height-multiplier) + var(--cell-vertical-padding) * 2\n );\n --group-header-height: ${isAggregationApplied\n ? 'var(--default-group-header-height)'\n : 'var(--row-min-height)'};\n\n > .row:not(.group-header-row) {\n height: auto;\n min-height: var(--row-min-height);\n > .cell {\n white-space: pre-wrap;\n\n /* -- For BUG-625508 -- */\n word-break: break-word;\n display: inline-grid;\n align-items: start;\n padding-top: var(--cell-vertical-padding);\n padding-bottom: var(--cell-vertical-padding);\n grid-auto-flow: column;\n\n :has(> ${CellIcon}) {\n /* Adds spacing between children when icons are rendered alongside cell content in the cell container. */\n justify-content: space-between;\n }\n\n /* stylelint-disable-next-line selector-max-compound-selectors */\n > .cell-content > .combined-cell > .combined-cell-content,\n > .cell-content {\n /* for full-content, the row cells should adjust according to content */\n max-height: none;\n white-space: inherit;\n word-break: inherit;\n }\n\n ${CellIcon} {\n margin-block-start: 0.375rem;\n }\n }\n }\n }\n\n .footer {\n .row {\n .cell {\n padding: 0;\n }\n }\n }\n\n /* stylelint-disable no-duplicate-selectors */\n .row-container {\n position: absolute;\n display: grid;\n width: 100%;\n font-size: ${fontSize.s};\n\n > .group-header-row,\n .hierarchical-group-footer-row {\n height: var(--group-header-height);\n .cell {\n padding: 0;\n border-right-width: 0;\n }\n }\n\n > .hierarchical-group-header-row {\n height: var(--group-header-height);\n }\n input.checkbox-on-hover + label {\n opacity: 0;\n }\n input.checkbox-on-hover:checked + label {\n opacity: 1;\n }\n .row.selected-row {\n ${rowBackground(highlightedRowColor)}\n }\n ${isMasterDetailEnabled &&\n css`\n ${dataRowSelector}:hover {\n ${rowBackground(highlightedRowColor)}\n }\n\n ${dataRowSelector}.${MASTER_DETAIL_PREVIEW_HIGHLIGHT_CLASS} {\n ${rowBackground(highlightedRowColor)}\n border-radius: 0.125rem;\n &::before {\n content: '';\n position: absolute;\n inset: 0;\n box-shadow: inset 0 0 0 0.125rem ${previewHighlightBorderColor};\n pointer-events: none;\n z-index: 7;\n }\n\n .${MASTER_DETAIL_INDICATOR_CLASS} {\n position: absolute;\n inset-inline-end: 0;\n inset-block-start: 50%;\n inline-size: 0.5625rem;\n block-size: 2.125rem;\n transform: translateX(var(--detail-indicator-offset, 0)) translateY(-50%);\n pointer-events: none;\n z-index: 8;\n\n &::before {\n content: '';\n position: absolute;\n inset-inline-end: 0.1875rem;\n inset-block-start: 50%;\n inline-size: 0.375rem;\n block-size: 0.5rem;\n transform: translateY(-50%);\n background: var(--interactive);\n clip-path: polygon(0 50%, 100% 0, 100% 100%);\n }\n\n &::after {\n content: '';\n position: absolute;\n inset-inline-end: 0;\n inset-block-start: 50%;\n inline-size: 0.1875rem;\n block-size: 2.125rem;\n transform: translateY(-50%);\n border-radius: 0.0625rem;\n background: var(--interactive);\n }\n }\n }\n `}\n .row.hierarchical-group-footer-row {\n .cell-fixed {\n background: ${lightGreyColor};\n }\n }\n }\n\n /* stylelint-enable selector-max-class */\n\n .toolbar-button-applied {\n /* stylelint-disable-next-line unit-allowed-list */\n padding: 0 8px;\n margin: 0 calc(${theme.base.spacing} / 4);\n }\n\n .toolbar-button {\n /* stylelint-disable-next-line unit-allowed-list */\n padding: 0 8px;\n margin: 0 calc(${theme.base.spacing} / 4);\n }\n\n .column-resizer {\n cursor: col-resize;\n position: absolute;\n top: 0;\n right: 0;\n z-index: 3;\n width: 0.25rem;\n height: 100%;\n }\n\n .column-resizer:hover,\n .column-resizer:active {\n background: var(--interactive);\n }\n\n .align-right {\n justify-content: right;\n\n .cell-content {\n text-align: right;\n }\n }\n\n .align-left {\n justify-content: left;\n\n .cell-content {\n text-align: left;\n }\n }\n\n .align-center {\n justify-content: center;\n\n .cell-content {\n text-align: center;\n }\n }\n\n .popper {\n div.row {\n display: flex;\n vertical-align: middle;\n line-height: unset;\n border-bottom: none;\n outline: none 0;\n height: auto;\n }\n }\n `;\n});\n\nexport default StyledTableContainer;\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
declare function VirtualizeWrapper({ view, children, id, renderHeader, rowContainerClass, renderFooter, isFullscreen, useVariableRowHeightVirtualization, bufferMultiplier }: {
|
|
1
|
+
declare function VirtualizeWrapper({ view, children, id, renderHeader, rowContainerClass, renderFooter, isFullscreen, useVariableRowHeightVirtualization, bufferMultiplier, minHeight }: {
|
|
2
2
|
view: any;
|
|
3
3
|
children: any;
|
|
4
4
|
id: any;
|
|
@@ -8,6 +8,7 @@ declare function VirtualizeWrapper({ view, children, id, renderHeader, rowContai
|
|
|
8
8
|
isFullscreen?: boolean | undefined;
|
|
9
9
|
useVariableRowHeightVirtualization?: boolean | undefined;
|
|
10
10
|
bufferMultiplier: any;
|
|
11
|
+
minHeight: any;
|
|
11
12
|
}): import("react/jsx-runtime").JSX.Element;
|
|
12
13
|
declare namespace VirtualizeWrapper {
|
|
13
14
|
namespace propTypes {
|
|
@@ -22,6 +23,7 @@ declare namespace VirtualizeWrapper {
|
|
|
22
23
|
let isFullscreen: PropTypes.Requireable<boolean>;
|
|
23
24
|
let useVariableRowHeightVirtualization: PropTypes.Requireable<boolean>;
|
|
24
25
|
let bufferMultiplier: PropTypes.Requireable<number>;
|
|
26
|
+
let minHeight: PropTypes.Requireable<string>;
|
|
25
27
|
}
|
|
26
28
|
}
|
|
27
29
|
export default VirtualizeWrapper;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VirtualizeWrapper.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Table/VirtualizeWrapper.jsx"],"names":[],"mappings":"AAiBA
|
|
1
|
+
{"version":3,"file":"VirtualizeWrapper.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Table/VirtualizeWrapper.jsx"],"names":[],"mappings":"AAiBA;;;;;;;;;;;4CAgKC;;;;;;;;;;;;;;;;;;sBAjLqB,YAAY"}
|
|
@@ -14,7 +14,7 @@ import Row from './Row';
|
|
|
14
14
|
import useCountChange from './useCountChange';
|
|
15
15
|
export default function VirtualizeWrapper({ view, children, id, renderHeader = null, rowContainerClass = '', renderFooter = null, isFullscreen = false,
|
|
16
16
|
// TODO: Remove this prop and deprecate older virtualizers once we fully migrate to variable row height virtualizer for gallery and grouped list views
|
|
17
|
-
useVariableRowHeightVirtualization = false, bufferMultiplier }) {
|
|
17
|
+
useVariableRowHeightVirtualization = false, bufferMultiplier, minHeight }) {
|
|
18
18
|
const { state, meta } = view;
|
|
19
19
|
const { filterExpression, searchText, externalState } = state;
|
|
20
20
|
const [translate] = useTranslate();
|
|
@@ -51,16 +51,16 @@ useVariableRowHeightVirtualization = false, bufferMultiplier }) {
|
|
|
51
51
|
return (_jsx(VariableHeightVirtualizer, { id: id, totalItemCount: view.totalItemCount, isDataFetching: isFetching, loadedDataRange: view?.state?.paginationOptions?.[id] || {}, apiCallback: paginationCallback, defaultItemHeight: 40, maxItemsToPaint: 5000, renderHeader: renderHeader, renderFooter: renderFooter, renderEmptyRecords: renderEmptyRecords, itemContainerClass: `${rowContainerClass} ${view.rowHeightClass}`, ref: r => {
|
|
52
52
|
view.putVirtualizeElement(id, r);
|
|
53
53
|
view.setScrollNode(r?.getBufferContainer());
|
|
54
|
-
}, 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))) }));
|
|
54
|
+
}, viewMaxHeight: isFullscreen ? null : view.bodyHeight, minHeight: minHeight, minHeightWhenNoItemsRendered: '100px', children: view?.groupHeaders?.[0]?.getRows()?.map((row, index) => (_jsx(Row, { row: row, columns: view.columns, level: 0, dataIndex: paginationStartIndex + index }, row.reactKey))) }));
|
|
55
55
|
}
|
|
56
56
|
if (view.template === REPEATING_STRUCTURE_TEMPLATES.GALLERY) {
|
|
57
|
-
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 => {
|
|
57
|
+
return (_jsx(VirtualizeInfinite, { id: id, viewMaxHeight: isFullscreen ? null : view.bodyHeight, minHeight: minHeight, itemHeight: view.rowHeight, callback: paginationCallback, isFetching: isFetching, hasMoreResults: hasMoreResults, renderHeader: renderHeader, renderFooter: renderFooter, ref: r => {
|
|
58
58
|
view.putVirtualizeElement(id, r);
|
|
59
59
|
view.setScrollNode(r && r.vi && r.vi.bContainer);
|
|
60
60
|
}, rowContainerClass: `${rowContainerClass} ${view.rowHeightClass}`, state: view.state?.paginationOptions?.[id], resetCount: view.isCountUpdateRequired, showLoadingIndicator: true, renderEmptyRecords: renderEmptyRecords, bufferMultiplier: bufferMultiplier, children: children }));
|
|
61
61
|
}
|
|
62
62
|
// Only used for grouped table
|
|
63
|
-
return (_jsx(Virtualize, { id: id, viewMaxHeight: isFullscreen ? null : view.bodyHeight, totalRecordCount: view.totalItemCount, itemHeight: view.rowHeight, callback: paginationCallback, isFetching: isFetching, renderHeader: renderHeader, renderFooter: renderFooter, ref: r => {
|
|
63
|
+
return (_jsx(Virtualize, { id: id, viewMaxHeight: isFullscreen ? null : view.bodyHeight, minHeight: minHeight, totalRecordCount: view.totalItemCount, itemHeight: view.rowHeight, callback: paginationCallback, isFetching: isFetching, renderHeader: renderHeader, renderFooter: renderFooter, ref: r => {
|
|
64
64
|
view.putVirtualizeElement(id, r);
|
|
65
65
|
view.setScrollNode(r && r.vi && r.vi.bContainer);
|
|
66
66
|
}, rowContainerClass: `${rowContainerClass} ${view.rowHeightClass}`, state: view.state?.paginationOptions?.[id], showLoadingIndicator: true, renderEmptyRecords: renderEmptyRecords, bufferMultiplier: bufferMultiplier, children: children }));
|
|
@@ -74,6 +74,7 @@ VirtualizeWrapper.propTypes = {
|
|
|
74
74
|
view: PropTypes.objectOf(PropTypes.any).isRequired,
|
|
75
75
|
isFullscreen: PropTypes.bool,
|
|
76
76
|
useVariableRowHeightVirtualization: PropTypes.bool,
|
|
77
|
-
bufferMultiplier: PropTypes.number
|
|
77
|
+
bufferMultiplier: PropTypes.number,
|
|
78
|
+
minHeight: PropTypes.string
|
|
78
79
|
};
|
|
79
80
|
//# 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,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,UAAU,MAAM,6BAA6B,CAAC;AACrD,OAAO,kBAAkB,MAAM,gDAAgD,CAAC;AAChF,OAAO,yBAAyB,MAAM,iFAAiF,CAAC;AACxH,OAAO,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,cAAc,MAAM,mDAAmD,CAAC;AAC/E,OAAO,YAAY,MAAM,0BAA0B,CAAC;AAEpD,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAE9C,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;AACpB,sJAAsJ;AACtJ,kCAAkC,GAAG,KAAK,EAC1C,gBAAgB,EACjB;IACC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC;IAC9D,MAAM,CAAC,SAAS,CAAC,GAAG,YAAY,EAAE,CAAC;IACnC,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;IAC5D,MAAM,sBAAsB,GAAG,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAEhE,MAAM,kBAAkB,GAAG,WAAW,CACpC,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE;QACvB,MAAM,cAAc,GAClB,IAAI,CAAC,QAAQ,KAAK,6BAA6B,CAAC,OAAO;YACrD,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE;YAC/B,CAAC,CAAC,OAAO,CAAC;QAEd,iBAAiB,CAAC,OAAO,GAAG,cAAc,CAAC;QAC3C,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IACpD,CAAC,EACD,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CACvB,CAAC;IAEF,MAAM,kBAAkB,GAAG,WAAW,CACpC,GAAG,EAAE,CAAC,CACJ,KAAC,cAAc,IACb,OAAO,EACL,eAAe,CAAC,EAAE,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC;YACpF,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC;YAC/B,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,EAE7B,cAAc,EAAE,sBAAsB,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,EACvE,YAAY,EAAE,IAAI,CAAC,eAAe,EAAE,GACpC,CACH,EACD,CAAC,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,CACzF,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,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAErF,IAAI,kCAAkC,EAAE,CAAC;QACvC,MAAM,oBAAoB,GAAG,IAAI,EAAE,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,UAAU,IAAI,CAAC,CAAC;QAC9F,OAAO,CACL,KAAC,yBAAyB,IACxB,EAAE,EAAE,EAAE,EACN,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,cAAc,EAAE,UAAU,EAC1B,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,EAC3D,WAAW,EAAE,kBAAkB,EAC/B,iBAAiB,EAAE,EAAE,EACrB,eAAe,EAAE,IAAI,EACrB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,kBAAkB,EAAE,kBAAkB,EACtC,kBAAkB,EAAE,GAAG,iBAAiB,IAAI,IAAI,CAAC,cAAc,EAAE,EACjE,GAAG,EAAE,CAAC,CAAC,EAAE;gBACP,IAAI,CAAC,oBAAoB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;gBACjC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC9C,CAAC,EACD,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EACpD,4BAA4B,EAAC,OAAO,YAEnC,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CACvD,KAAC,GAAG,IAEF,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,KAAK,EAAE,CAAC,EACR,SAAS,EAAE,oBAAoB,GAAG,KAAK,IAJlC,GAAG,CAAC,QAAQ,CAKjB,CACH,CAAC,GACwB,CAC7B,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,KAAK,6BAA6B,CAAC,OAAO,EAAE,CAAC;QAC5D,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,QACpB,kBAAkB,EAAE,kBAAkB,EACtC,gBAAgB,EAAE,gBAAgB,YAEjC,QAAQ,GACU,CACtB,CAAC;IACJ,CAAC;IAED,8BAA8B;IAC9B,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,QACpB,kBAAkB,EAAE,kBAAkB,EACtC,gBAAgB,EAAE,gBAAgB,YAEjC,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;IAC5B,kCAAkC,EAAE,SAAS,CAAC,IAAI;IAClD,gBAAgB,EAAE,SAAS,CAAC,MAAM;CACnC,CAAC","sourcesContent":["import PropTypes from 'prop-types';\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { REPEATING_STRUCTURE_TEMPLATES } from 'pega-repeating-structures-core';\nimport { usePrevious } from '@pega/cosmos-react-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 { isFilterApplied } from '../../Utils';\nimport EmptyContainer from '../../Components/DefaultComponents/EmptyContainer';\nimport useTranslate from '../../Hooks/useTranslate';\n\nimport Row from './Row';\nimport useCountChange from './useCountChange';\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 bufferMultiplier\n}) {\n const { state, meta } = view;\n const { filterExpression, searchText, externalState } = state;\n const [translate] = useTranslate();\n const paginationPayload = useRef({});\n\n const [isFetching, setIsFetching] = useState(false);\n const [hasMoreResults, setHasMoreResults] = useState(false);\n const previousTotalItemCount = usePrevious(view.totalItemCount);\n\n const paginationCallback = useCallback(\n (payload, payloadMeta) => {\n const updatedPayload =\n view.template === REPEATING_STRUCTURE_TEMPLATES.GALLERY\n ? { ...payload, startIndex: 0 }\n : payload;\n\n paginationPayload.current = updatedPayload;\n setIsFetching(true);\n view.type.onPaginate(updatedPayload, payloadMeta);\n },\n [view.type.onPaginate]\n );\n\n const renderEmptyRecords = useCallback(\n () => (\n <EmptyContainer\n message={\n isFilterApplied({ filterExpression, searchText, externalState }, meta.externalFilters)\n ? translate('No records found')\n : translate('No records')\n }\n shouldAnnounce={previousTotalItemCount > 0 && view.totalItemCount === 0}\n domContainer={view.getDomContainer()}\n />\n ),\n [filterExpression, searchText, externalState, meta.externalFilters, view.totalItemCount]\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 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 renderHeader={renderHeader}\n renderFooter={renderFooter}\n renderEmptyRecords={renderEmptyRecords}\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 (view.template === REPEATING_STRUCTURE_TEMPLATES.GALLERY) {\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\n renderEmptyRecords={renderEmptyRecords}\n bufferMultiplier={bufferMultiplier}\n >\n {children}\n </VirtualizeInfinite>\n );\n }\n\n // Only used for grouped table\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\n renderEmptyRecords={renderEmptyRecords}\n bufferMultiplier={bufferMultiplier}\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 bufferMultiplier: PropTypes.number\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 { REPEATING_STRUCTURE_TEMPLATES } from 'pega-repeating-structures-core';\nimport { usePrevious } from '@pega/cosmos-react-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 { isFilterApplied } from '../../Utils';\nimport EmptyContainer from '../../Components/DefaultComponents/EmptyContainer';\nimport useTranslate from '../../Hooks/useTranslate';\n\nimport Row from './Row';\nimport useCountChange from './useCountChange';\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 bufferMultiplier,\n minHeight\n}) {\n const { state, meta } = view;\n const { filterExpression, searchText, externalState } = state;\n const [translate] = useTranslate();\n const paginationPayload = useRef({});\n\n const [isFetching, setIsFetching] = useState(false);\n const [hasMoreResults, setHasMoreResults] = useState(false);\n const previousTotalItemCount = usePrevious(view.totalItemCount);\n\n const paginationCallback = useCallback(\n (payload, payloadMeta) => {\n const updatedPayload =\n view.template === REPEATING_STRUCTURE_TEMPLATES.GALLERY\n ? { ...payload, startIndex: 0 }\n : payload;\n\n paginationPayload.current = updatedPayload;\n setIsFetching(true);\n view.type.onPaginate(updatedPayload, payloadMeta);\n },\n [view.type.onPaginate]\n );\n\n const renderEmptyRecords = useCallback(\n () => (\n <EmptyContainer\n message={\n isFilterApplied({ filterExpression, searchText, externalState }, meta.externalFilters)\n ? translate('No records found')\n : translate('No records')\n }\n shouldAnnounce={previousTotalItemCount > 0 && view.totalItemCount === 0}\n domContainer={view.getDomContainer()}\n />\n ),\n [filterExpression, searchText, externalState, meta.externalFilters, view.totalItemCount]\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 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 renderHeader={renderHeader}\n renderFooter={renderFooter}\n renderEmptyRecords={renderEmptyRecords}\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 minHeight={minHeight}\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 (view.template === REPEATING_STRUCTURE_TEMPLATES.GALLERY) {\n return (\n <VirtualizeInfinite\n id={id}\n viewMaxHeight={isFullscreen ? null : view.bodyHeight}\n minHeight={minHeight}\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\n renderEmptyRecords={renderEmptyRecords}\n bufferMultiplier={bufferMultiplier}\n >\n {children}\n </VirtualizeInfinite>\n );\n }\n\n // Only used for grouped table\n return (\n <Virtualize\n id={id}\n viewMaxHeight={isFullscreen ? null : view.bodyHeight}\n minHeight={minHeight}\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\n renderEmptyRecords={renderEmptyRecords}\n bufferMultiplier={bufferMultiplier}\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 bufferMultiplier: PropTypes.number,\n minHeight: PropTypes.string\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Table/index.jsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Table/index.jsx"],"names":[],"mappings":";AAgCA;;4CA8KC;;;;;;;;sBA9MqB,YAAY"}
|
|
@@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
|
|
|
3
3
|
import { useCallback, useRef, useEffect } from 'react';
|
|
4
4
|
import { useLiveLog } from '@pega/cosmos-react-core/lib/hooks';
|
|
5
5
|
import { useFullscreenContext, useTheme } from '@pega/cosmos-react-core';
|
|
6
|
+
import { MasterDetail } from '@pega/cosmos-react-work';
|
|
6
7
|
import { expandCollapseAllMeta } from 'pega-repeating-structures-core';
|
|
7
8
|
import { createClassName as cx } from '../../Utils';
|
|
8
9
|
import NotificationManager from '../../Components/NotificationManager';
|
|
@@ -22,10 +23,14 @@ import TableA11y from './TableA11y';
|
|
|
22
23
|
import Body from './Body';
|
|
23
24
|
import Virtualiser from './VirtualizeWrapper';
|
|
24
25
|
import Headers from './Headers';
|
|
26
|
+
import useMasterDetailHost from './useMasterDetailHost';
|
|
25
27
|
const contextMenuSelector = { query: '.cell:not([role="columnheader"])' };
|
|
28
|
+
const MASTER_DETAIL_MIN_HEIGHT = '16rem';
|
|
26
29
|
function StyledTable({ view }) {
|
|
27
30
|
const isFullscreen = !!useFullscreenContext()?.[0];
|
|
28
|
-
const { columns, rows, groupHeaders, meta: { toolbarActions } = {} } = view;
|
|
31
|
+
const { columns, rows, groupHeaders, meta: { toolbarActions, masterDetail: masterDetailConfig } = {} } = view;
|
|
32
|
+
const isMasterDetail = !!masterDetailConfig;
|
|
33
|
+
const minHeight = isMasterDetail ? MASTER_DETAIL_MIN_HEIGHT : undefined;
|
|
29
34
|
const rowHeight = 40;
|
|
30
35
|
const footerHeight = 57;
|
|
31
36
|
const isSmallOrAbove = view?.state?.responsive?.sm;
|
|
@@ -59,11 +64,13 @@ function StyledTable({ view }) {
|
|
|
59
64
|
addActionSelector: addAction ? `[aria-label="${addAction.text}"]` : undefined
|
|
60
65
|
}, FOCUSABLE_SELECTORS, {
|
|
61
66
|
TAB: 9,
|
|
67
|
+
ENTER: 13,
|
|
62
68
|
LEFT: 37,
|
|
63
69
|
UP: 38,
|
|
64
70
|
RIGHT: 39,
|
|
65
71
|
DOWN: 40
|
|
66
72
|
}, null, announcePolite, translate, ACTIONABLE_SELECTORS, translate('Interactive content')));
|
|
73
|
+
const masterDetail = useMasterDetailHost({ view });
|
|
67
74
|
useEffect(() => {
|
|
68
75
|
a11yRef.current.setContainer(containerRef.current);
|
|
69
76
|
return () => {
|
|
@@ -88,11 +95,13 @@ function StyledTable({ view }) {
|
|
|
88
95
|
a11yRef.current.clickHandler(e);
|
|
89
96
|
}
|
|
90
97
|
}, []);
|
|
91
|
-
|
|
92
|
-
'
|
|
93
|
-
}),
|
|
94
|
-
|
|
95
|
-
|
|
98
|
+
const tableContent = (_jsx(RepeatingStructureA11y, { view: view, a11yRef: a11yRef, children: _jsxs("div", { className: cx('container', view.className, {
|
|
99
|
+
'small-screen-table': !isSmallOrAbove
|
|
100
|
+
}), ref: containerRef, ...view.getUIProps(), onClick: onClickHandler, onFocusCapture: e => a11yRef.current.onFocusHandler(e), onBlurCapture: e => a11yRef.current.onBlurHandler(e), children: [view.state?.groups?.length ? (_jsxs(_Fragment, { children: [_jsx(GroupingHeaderCell, { view: view }), _jsx(Virtualiser, { id: 'rootVirtualiser', view: view, renderHeader: renderHeader, renderFooter: renderFooter, isFullscreen: isFullscreen, minHeight: minHeight, children: _jsx(Body, { groupHeaders: groupHeaders, columns: columns, hierarchicalGroupEnabled: view.hierarchicalGroupEnabled }) })] })) : (_jsx(Virtualiser, { id: 'rootVirtualiser', view: view, renderHeader: renderHeader, renderFooter: renderFooter, isFullscreen: isFullscreen, minHeight: minHeight, useVariableRowHeightVirtualization: true })), _jsx(LoadingIndicator, { view: view, show: !rows || !!view.isLoading }), _jsx(ContextMenuContainer, { view: view, selector: contextMenuSelector })] }) }));
|
|
101
|
+
const tableContainer = (_jsxs(StyledTableContainer, { style: containerStyles, "data-test-id": 'table', "data-testid": 'table', className: cx('t-container', {
|
|
102
|
+
'show-expand-collapse-all': view.showGroupingExpandCollapseAll
|
|
103
|
+
}), 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 }), isMasterDetail ? (_jsx(MasterDetail, { master: tableContent, detail: masterDetail.detail, ...masterDetail.masterDetailProps })) : (tableContent)] }));
|
|
104
|
+
return _jsx(RsCardWrapper, { children: tableContainer });
|
|
96
105
|
}
|
|
97
106
|
StyledTable.propTypes = {
|
|
98
107
|
view: PropTypes.objectOf(PropTypes.any).isRequired
|