@pega/lists-react 9.0.0-build.14.9 → 9.0.0-build.15.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/GroupRenderer/GroupAdditionalInfo.d.ts.map +1 -1
- package/lib/Core/Components/GroupRenderer/GroupAdditionalInfo.js +1 -5
- package/lib/Core/Components/GroupRenderer/GroupAdditionalInfo.js.map +1 -1
- package/lib/Core/Components/GroupRenderer/index.d.ts.map +1 -1
- package/lib/Core/Components/GroupRenderer/index.js +9 -4
- package/lib/Core/Components/GroupRenderer/index.js.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupAdditionalInfo.d.ts","sourceRoot":"","sources":["../../../../Core/Components/GroupRenderer/GroupAdditionalInfo.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAiC,KAAK,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAcjG,OAAsC,EAEpC,KAAK,wBAAwB,EAC9B,MAAM,iCAAiC,CAAC;AAEzC,KAAK,8BAA8B,GAAG,aAAa,GAAG,oBAAoB,CAAC;AAC3E,KAAK,wBAAwB,GAAG;IAC9B,mBAAmB,EAAE,wBAAwB,CAAC;IAC9C,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC;IAC9B,WAAW,EAAE,WAAW,CAAC,cAAc,CAAC;IACxC,eAAe,EAAE,WAAW,CAAC,oBAAoB,CAAC;IAClD,eAAe,EAAE,8BAA8B,CAAC;CACjD,CAAC;AAgCF,eAAO,MAAM,+BAA+B,GAC1C,qBAAqB,wBAAwB,EAC7C,iBAAiB,WAAW,CAAC,oBAAoB,EACjD,+BAIG;IACD,MAAM,EAAE,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC;IAClC,IAAI,EAAE,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,WAAW,CAAC,cAAc,CAAC;CACzC,EACD,iBAAiB,8BAA8B;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"GroupAdditionalInfo.d.ts","sourceRoot":"","sources":["../../../../Core/Components/GroupRenderer/GroupAdditionalInfo.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAiC,KAAK,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAcjG,OAAsC,EAEpC,KAAK,wBAAwB,EAC9B,MAAM,iCAAiC,CAAC;AAEzC,KAAK,8BAA8B,GAAG,aAAa,GAAG,oBAAoB,CAAC;AAC3E,KAAK,wBAAwB,GAAG;IAC9B,mBAAmB,EAAE,wBAAwB,CAAC;IAC9C,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC;IAC9B,WAAW,EAAE,WAAW,CAAC,cAAc,CAAC;IACxC,eAAe,EAAE,WAAW,CAAC,oBAAoB,CAAC;IAClD,eAAe,EAAE,8BAA8B,CAAC;CACjD,CAAC;AAgCF,eAAO,MAAM,+BAA+B,GAC1C,qBAAqB,wBAAwB,EAC7C,iBAAiB,WAAW,CAAC,oBAAoB,EACjD,+BAIG;IACD,MAAM,EAAE,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC;IAClC,IAAI,EAAE,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,WAAW,CAAC,cAAc,CAAC;CACzC,EACD,iBAAiB,8BAA8B;;;;;;;;;;;;;;;CAmGhD,CAAC;AAEF,QAAA,MAAM,mBAAmB,GAAI,iFAM1B,wBAAwB,mDAqC1B,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
|
|
@@ -34,10 +34,6 @@ export const useFormattedAdditionalFieldData = (additionalFieldData, additionalF
|
|
|
34
34
|
if (!column || !meta) {
|
|
35
35
|
return { label: null, renderer: null };
|
|
36
36
|
}
|
|
37
|
-
const { isInstantRender } = column.parent;
|
|
38
|
-
if (isInstantRender) {
|
|
39
|
-
return { label: null, renderer: null };
|
|
40
|
-
}
|
|
41
37
|
const { value, count = 0 } = additionalFieldData || {};
|
|
42
38
|
const { locale, timezone } = meta;
|
|
43
39
|
const { label, field: { type, name: additionalFieldName } } = column;
|
|
@@ -100,7 +96,7 @@ const GroupAdditionalInfo = ({ additionalFieldData, columns, groupHeader, additi
|
|
|
100
96
|
const { id: fieldId } = additionalFieldData;
|
|
101
97
|
const column = columns.find(c => c.field.id === fieldId);
|
|
102
98
|
const { label, renderer } = useFormattedAdditionalFieldData(additionalFieldData, additionalField, { column: column ?? null, meta: column ? column.parent.meta : null, groupHeader }, rendererContext);
|
|
103
|
-
if (!column
|
|
99
|
+
if (!column) {
|
|
104
100
|
return null;
|
|
105
101
|
}
|
|
106
102
|
const isGroupHeaderContext = rendererContext === 'GroupHeader';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupAdditionalInfo.js","sourceRoot":"","sources":["../../../../Core/Components/GroupRenderer/GroupAdditionalInfo.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useMemo, type ComponentType, type PropsWithChildren } from 'react';\nimport styled from 'styled-components';\n\nimport { Text, useModalManager, Button, VisuallyHiddenText } from '@pega/cosmos-react-core';\nimport { dateFunctionLabels, FieldType, type RsCoreTypes } from 'pega-repeating-structures-core';\nimport { ellipsisOverflow } from '@pega/cosmos-react-core/lib/styles/mixins';\nimport type { DateGroupAdditionalField } from 'pega-repeating-structures-core/lib/types/State.types';\n\nimport useTranslate from '../../Hooks/useTranslate';\nimport { getFormattedAggregationValue } from '../AggregateMenu';\nimport DateValueDisplay from '../DateValueDisplay';\nimport RenderingEngine from '../RenderingEngine/RenderCell';\nimport {\n resolveCellComponent,\n resolveViewComponent\n} from '../RenderingEngine/ComponentResolverFactory';\nimport GlobalContext from '../../Context/GlobalContext';\n\nimport GroupAdditionalFieldDataModal, {\n isDateLikeField,\n type GroupAdditionalFieldData\n} from './GroupAdditionalFieldDataModal';\n\ntype AdditionalFieldRendererContext = 'GroupHeader' | 'GroupHeaderTooltip';\ntype GroupAdditionalInfoProps = {\n additionalFieldData: GroupAdditionalFieldData;\n columns: RsCoreTypes.Column[];\n groupHeader: RsCoreTypes.GroupGenerator;\n additionalField: RsCoreTypes.GroupAdditionalField;\n rendererContext: AdditionalFieldRendererContext;\n};\n\nconst isAdditionalFieldWithDateFunction = (\n additionalField: RsCoreTypes.GroupAdditionalField\n): additionalField is Required<DateGroupAdditionalField> => {\n return 'dateFunction' in additionalField && Boolean(additionalField.dateFunction);\n};\n\nconst ConditionalEllipsisText = styled(Text)<{ ellipsis: boolean }>`\n ${({ ellipsis }) => ellipsis && ellipsisOverflow}\n display: inline-flex;\n min-width: 0;\n`;\n\nfunction withGlobalContext<P>(Component: ComponentType<P>) {\n return function WithGlobalContext(props: PropsWithChildren<P>) {\n const globalContext = useMemo(\n () => ({\n resolveCellComponent,\n resolveViewComponent\n }),\n []\n );\n\n return (\n <GlobalContext.Provider value={globalContext}>\n <Component {...props} />\n </GlobalContext.Provider>\n );\n };\n}\n\nexport const useFormattedAdditionalFieldData = (\n additionalFieldData: GroupAdditionalFieldData,\n additionalField: RsCoreTypes.GroupAdditionalField,\n {\n column,\n meta,\n groupHeader\n }: {\n column: RsCoreTypes.Column | null;\n meta: RsCoreTypes.Meta | null;\n groupHeader: RsCoreTypes.GroupGenerator;\n },\n rendererContext: AdditionalFieldRendererContext\n) => {\n const [translate] = useTranslate();\n const { create } = useModalManager();\n if (!column || !meta) {\n return { label: null, renderer: null };\n }\n\n const { isInstantRender } = column.parent;\n\n if (isInstantRender) {\n return { label: null, renderer: null };\n }\n\n const { value, count = 0 } = additionalFieldData || {};\n const { locale, timezone } = meta;\n const {\n label,\n field: { type, name: additionalFieldName }\n } = column;\n const isDateFieldWithDateFunction =\n isDateLikeField(type) && isAdditionalFieldWithDateFunction(additionalField);\n const dateFunctionLabel = isDateFieldWithDateFunction\n ? translate(dateFunctionLabels[additionalField.dateFunction])\n : null;\n // Additional field as aggregation\n if (\n 'aggregation' in additionalField &&\n additionalField.aggregation &&\n type === FieldType.NUMBER\n ) {\n return {\n label: `${label}(${translate(additionalField.aggregation)})`,\n renderer:\n typeof value === 'string' || typeof value === 'number'\n ? getFormattedAggregationValue(value, additionalField.aggregation, column)\n : null\n };\n }\n\n // Additional field as Date part\n if (count === 1 && isDateFieldWithDateFunction) {\n return {\n label: `${label}${dateFunctionLabel ? ` (${dateFunctionLabel})` : ''}`,\n renderer:\n (typeof value === 'string' || typeof value === 'number') && locale && timezone ? (\n <DateValueDisplay\n value={value}\n dateFunction={additionalField.dateFunction}\n locale={locale}\n timezone={timezone}\n />\n ) : null\n };\n }\n\n // Additional field as normal field but with multiple values.\n if (count > 1) {\n return {\n label: `${label}${dateFunctionLabel ? ` (${dateFunctionLabel})` : ''}`,\n renderer:\n rendererContext === 'GroupHeader' ? (\n <Button\n variant='link'\n onClick={(event: MouseEvent) => {\n create(withGlobalContext(GroupAdditionalFieldDataModal), {\n groupHeader,\n additionalField,\n column\n });\n // Stop propagation to avoid group expand/collapse on button click\n event.stopPropagation();\n }}\n >\n {translate('Multiple')}\n </Button>\n ) : (\n translate('Multiple')\n )\n };\n }\n\n // Additional field as normal field.\n column.setExecutionContext(null);\n return {\n label,\n renderer: (\n <RenderingEngine\n {...{\n ...column.getRenderingEngineProps(),\n context: {\n ...column.getContext(),\n name: 'GroupAdditionalField',\n getValue: () => value,\n getExecutionContext: () => {\n return {\n getValue: () => ({ ...groupHeader.data, [additionalFieldName]: value }),\n name: 'groupHeader'\n };\n }\n }\n }}\n />\n )\n };\n};\n\nconst GroupAdditionalInfo = ({\n additionalFieldData,\n columns,\n groupHeader,\n additionalField,\n rendererContext\n}: GroupAdditionalInfoProps) => {\n const { id: fieldId } = additionalFieldData;\n const column = columns.find(c => c.field.id === fieldId);\n\n const { label, renderer } = useFormattedAdditionalFieldData(\n additionalFieldData,\n additionalField,\n { column: column ?? null, meta: column ? column.parent.meta : null, groupHeader },\n rendererContext\n );\n\n if (!column || !label || !renderer) {\n return null;\n }\n\n const isGroupHeaderContext = rendererContext === 'GroupHeader';\n\n return (\n <>\n {/* For screen readers. */}\n <VisuallyHiddenText>{', '}</VisuallyHiddenText>\n <ConditionalEllipsisText\n ellipsis={isGroupHeaderContext}\n variant={isGroupHeaderContext ? 'secondary' : undefined}\n data-testid='additional-field-label'\n >\n {label}:\n </ConditionalEllipsisText>\n <ConditionalEllipsisText\n ellipsis={isGroupHeaderContext}\n variant={isGroupHeaderContext ? 'secondary' : undefined}\n data-testid='additional-field-renderer'\n >\n {renderer}\n </ConditionalEllipsisText>\n </>\n );\n};\n\nexport default GroupAdditionalInfo;\n"]}
|
|
1
|
+
{"version":3,"file":"GroupAdditionalInfo.js","sourceRoot":"","sources":["../../../../Core/Components/GroupRenderer/GroupAdditionalInfo.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useMemo, type ComponentType, type PropsWithChildren } from 'react';\nimport styled from 'styled-components';\n\nimport { Text, useModalManager, Button, VisuallyHiddenText } from '@pega/cosmos-react-core';\nimport { dateFunctionLabels, FieldType, type RsCoreTypes } from 'pega-repeating-structures-core';\nimport { ellipsisOverflow } from '@pega/cosmos-react-core/lib/styles/mixins';\nimport type { DateGroupAdditionalField } from 'pega-repeating-structures-core/lib/types/State.types';\n\nimport useTranslate from '../../Hooks/useTranslate';\nimport { getFormattedAggregationValue } from '../AggregateMenu';\nimport DateValueDisplay from '../DateValueDisplay';\nimport RenderingEngine from '../RenderingEngine/RenderCell';\nimport {\n resolveCellComponent,\n resolveViewComponent\n} from '../RenderingEngine/ComponentResolverFactory';\nimport GlobalContext from '../../Context/GlobalContext';\n\nimport GroupAdditionalFieldDataModal, {\n isDateLikeField,\n type GroupAdditionalFieldData\n} from './GroupAdditionalFieldDataModal';\n\ntype AdditionalFieldRendererContext = 'GroupHeader' | 'GroupHeaderTooltip';\ntype GroupAdditionalInfoProps = {\n additionalFieldData: GroupAdditionalFieldData;\n columns: RsCoreTypes.Column[];\n groupHeader: RsCoreTypes.GroupGenerator;\n additionalField: RsCoreTypes.GroupAdditionalField;\n rendererContext: AdditionalFieldRendererContext;\n};\n\nconst isAdditionalFieldWithDateFunction = (\n additionalField: RsCoreTypes.GroupAdditionalField\n): additionalField is Required<DateGroupAdditionalField> => {\n return 'dateFunction' in additionalField && Boolean(additionalField.dateFunction);\n};\n\nconst ConditionalEllipsisText = styled(Text)<{ ellipsis: boolean }>`\n ${({ ellipsis }) => ellipsis && ellipsisOverflow}\n display: inline-flex;\n min-width: 0;\n`;\n\nfunction withGlobalContext<P>(Component: ComponentType<P>) {\n return function WithGlobalContext(props: PropsWithChildren<P>) {\n const globalContext = useMemo(\n () => ({\n resolveCellComponent,\n resolveViewComponent\n }),\n []\n );\n\n return (\n <GlobalContext.Provider value={globalContext}>\n <Component {...props} />\n </GlobalContext.Provider>\n );\n };\n}\n\nexport const useFormattedAdditionalFieldData = (\n additionalFieldData: GroupAdditionalFieldData,\n additionalField: RsCoreTypes.GroupAdditionalField,\n {\n column,\n meta,\n groupHeader\n }: {\n column: RsCoreTypes.Column | null;\n meta: RsCoreTypes.Meta | null;\n groupHeader: RsCoreTypes.GroupGenerator;\n },\n rendererContext: AdditionalFieldRendererContext\n) => {\n const [translate] = useTranslate();\n const { create } = useModalManager();\n if (!column || !meta) {\n return { label: null, renderer: null };\n }\n\n const { value, count = 0 } = additionalFieldData || {};\n const { locale, timezone } = meta;\n const {\n label,\n field: { type, name: additionalFieldName }\n } = column;\n const isDateFieldWithDateFunction =\n isDateLikeField(type) && isAdditionalFieldWithDateFunction(additionalField);\n const dateFunctionLabel = isDateFieldWithDateFunction\n ? translate(dateFunctionLabels[additionalField.dateFunction])\n : null;\n // Additional field as aggregation\n if (\n 'aggregation' in additionalField &&\n additionalField.aggregation &&\n type === FieldType.NUMBER\n ) {\n return {\n label: `${label}(${translate(additionalField.aggregation)})`,\n renderer:\n typeof value === 'string' || typeof value === 'number'\n ? getFormattedAggregationValue(value, additionalField.aggregation, column)\n : null\n };\n }\n\n // Additional field as Date part\n if (count === 1 && isDateFieldWithDateFunction) {\n return {\n label: `${label}${dateFunctionLabel ? ` (${dateFunctionLabel})` : ''}`,\n renderer:\n (typeof value === 'string' || typeof value === 'number') && locale && timezone ? (\n <DateValueDisplay\n value={value}\n dateFunction={additionalField.dateFunction}\n locale={locale}\n timezone={timezone}\n />\n ) : null\n };\n }\n\n // Additional field as normal field but with multiple values.\n if (count > 1) {\n return {\n label: `${label}${dateFunctionLabel ? ` (${dateFunctionLabel})` : ''}`,\n renderer:\n rendererContext === 'GroupHeader' ? (\n <Button\n variant='link'\n onClick={(event: MouseEvent) => {\n create(withGlobalContext(GroupAdditionalFieldDataModal), {\n groupHeader,\n additionalField,\n column\n });\n // Stop propagation to avoid group expand/collapse on button click\n event.stopPropagation();\n }}\n >\n {translate('Multiple')}\n </Button>\n ) : (\n translate('Multiple')\n )\n };\n }\n\n // Additional field as normal field.\n column.setExecutionContext(null);\n return {\n label,\n renderer: (\n <RenderingEngine\n {...{\n ...column.getRenderingEngineProps(),\n context: {\n ...column.getContext(),\n name: 'GroupAdditionalField',\n getValue: () => value,\n getExecutionContext: () => {\n return {\n getValue: () => ({ ...groupHeader.data, [additionalFieldName]: value }),\n name: 'groupHeader'\n };\n }\n }\n }}\n />\n )\n };\n};\n\nconst GroupAdditionalInfo = ({\n additionalFieldData,\n columns,\n groupHeader,\n additionalField,\n rendererContext\n}: GroupAdditionalInfoProps) => {\n const { id: fieldId } = additionalFieldData;\n const column = columns.find(c => c.field.id === fieldId);\n\n const { label, renderer } = useFormattedAdditionalFieldData(\n additionalFieldData,\n additionalField,\n { column: column ?? null, meta: column ? column.parent.meta : null, groupHeader },\n rendererContext\n );\n\n if (!column) {\n return null;\n }\n\n const isGroupHeaderContext = rendererContext === 'GroupHeader';\n\n return (\n <>\n {/* For screen readers. */}\n <VisuallyHiddenText>{', '}</VisuallyHiddenText>\n <ConditionalEllipsisText\n ellipsis={isGroupHeaderContext}\n variant={isGroupHeaderContext ? 'secondary' : undefined}\n data-testid='additional-field-label'\n >\n {label}:\n </ConditionalEllipsisText>\n <ConditionalEllipsisText\n ellipsis={isGroupHeaderContext}\n variant={isGroupHeaderContext ? 'secondary' : undefined}\n data-testid='additional-field-renderer'\n >\n {renderer}\n </ConditionalEllipsisText>\n </>\n );\n};\n\nexport default GroupAdditionalInfo;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../Core/Components/GroupRenderer/index.jsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../Core/Components/GroupRenderer/index.jsx"],"names":[],"mappings":"AAoNA;;;;;;QAwCC;AA2GD;;;mDA6IC;;;;;;;;;;sBApfqB,YAAY"}
|
|
@@ -5,7 +5,6 @@ import styled from 'styled-components';
|
|
|
5
5
|
import { Icon, Text, MetaList, Tooltip, VisuallyHiddenText, Flex } from '@pega/cosmos-react-core';
|
|
6
6
|
import BareButton from '@pega/cosmos-react-core/lib/components/Button/BareButton';
|
|
7
7
|
import { getGroupFromKey } from 'pega-ui-list-data-apis';
|
|
8
|
-
import { StyledMetaListItem } from '@pega/cosmos-react-core/lib/components/MetaList/MetaList';
|
|
9
8
|
import { createClassName as cx } from '../../Utils';
|
|
10
9
|
import useTranslate from '../../Hooks/useTranslate';
|
|
11
10
|
import { customFunctions, intervalGroupingBoundaries } from '../../constants';
|
|
@@ -138,7 +137,7 @@ const StyledMetaList = styled(MetaList) `
|
|
|
138
137
|
margin: 0;
|
|
139
138
|
padding: 0 0.3rem;
|
|
140
139
|
`;
|
|
141
|
-
const GroupAdditionalInfoSeparator = styled
|
|
140
|
+
const GroupAdditionalInfoSeparator = styled.span `
|
|
142
141
|
margin-inline-start: 0.3rem;
|
|
143
142
|
`;
|
|
144
143
|
const ColorBadge = styled.div `
|
|
@@ -286,10 +285,16 @@ export default function GroupHeader({ groupHeader, columns }) {
|
|
|
286
285
|
let groupAdditionalInfo;
|
|
287
286
|
// Prepare additional info components if present
|
|
288
287
|
if (groupHeader.additionalFieldsData?.length && additionalFields.length) {
|
|
289
|
-
groupAdditionalInfo = groupHeader.additionalFieldsData.
|
|
288
|
+
groupAdditionalInfo = groupHeader.additionalFieldsData.reduce((acc, additionalFieldData, idx) => {
|
|
289
|
+
const additionalField = additionalFields.find(field => field.id === additionalFieldData.id);
|
|
290
|
+
if (additionalField) {
|
|
291
|
+
acc.push(_jsx(Flex, { container: { gap: 0.5 }, id: additionalInfoIds[idx], children: _jsx(GroupAdditionalInfo, { additionalFieldData: additionalFieldData, additionalField: additionalField, columns: columns, groupHeader: groupHeader, rendererContext: 'GroupHeader' }) }));
|
|
292
|
+
}
|
|
293
|
+
return acc;
|
|
294
|
+
}, []);
|
|
290
295
|
}
|
|
291
296
|
// FIXME: Import rather than COPY, i would rather
|
|
292
|
-
return (_jsxs(StyledGroupHeader, { groupHeader: groupHeader, className: cx('row group-header-row sticky-group-header'), "data-test-id": 'groupHeader', "data-testid": TestIdConstants.groupHeader
|
|
297
|
+
return (_jsxs(StyledGroupHeader, { groupHeader: groupHeader, className: cx('row group-header-row sticky-group-header'), "data-test-id": 'groupHeader', "data-testid": `${TestIdConstants.groupHeader}-${groupHeader.label}-${groupHeader.name}`, isAggregationApplied: isAggregationApplied, role: 'row', onFocus: e => {
|
|
293
298
|
if (buttonRef.current && !e.currentTarget.contains(e.relatedTarget)) {
|
|
294
299
|
e.preventDefault();
|
|
295
300
|
buttonRef.current.focus();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../Core/Components/GroupRenderer/index.jsx"],"names":[],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport { useRef, useCallback } from 'react';\nimport styled from 'styled-components';\n\nimport { Icon, Text, MetaList, Tooltip, VisuallyHiddenText, Flex } from '@pega/cosmos-react-core';\nimport BareButton from '@pega/cosmos-react-core/lib/components/Button/BareButton';\nimport { getGroupFromKey } from 'pega-ui-list-data-apis';\nimport { StyledMetaListItem } from '@pega/cosmos-react-core/lib/components/MetaList/MetaList';\n\nimport { createClassName as cx } from '../../Utils';\nimport useTranslate from '../../Hooks/useTranslate';\nimport { customFunctions, intervalGroupingBoundaries } from '../../constants';\nimport AggregatorCell from '../AggregatorCell';\nimport RenderingEngine from '../RenderingEngine/RenderCell';\nimport DateValueDisplay from '../DateValueDisplay';\nimport TestIdConstants from '../TestIdConstants';\n\nimport GroupAdditionalInfo from './GroupAdditionalInfo';\n\nconst groupheaderleftdisplacement = headerLevel => `${(headerLevel.level + 1) * 0.5}rem`;\n/**\n * TODO: remove currentColor style after cosmos fixes the issue\n * Cosmos yet to handle dark theme on BareButton\n */\n\nconst StyledGroupHeader = styled.div`\n --group-left: ${props => groupheaderleftdisplacement(props.groupHeader)};\n --group-bg-color: ${props => props.theme.base.palette['secondary-background']};\n background-color: var(--group-bg-color);\n &:has(button[aria-expanded='true']) {\n filter: ${props => props.theme.base.shadow['low-filter']};\n }\n\n &.row.sticky-group-header {\n position: sticky;\n display: block;\n top: calc(\n ${props =>\n props.groupHeader.isLeafNode && props.groupHeader.level !== 0\n ? 'calc(var(--row-height) + var(--group-header-height))'\n : 'var(--row-height)'}\n );\n\n /* z-index starting from 8 because freeze-line has z-index 7 */\n z-index: ${props => `${8 + props.groupHeader.index}`};\n > .cell-action,\n .cell-fixed {\n background-color: var(--group-bg-color);\n }\n }\n\n .group-label {\n width: 0.437rem;\n display: inline-block;\n flex-shrink: 0;\n }\n\n .group-header-groupby {\n font-weight: ${props => props.theme.base['font-weight'].normal};\n }\n\n .group-context-count .group-count {\n font-weight: ${props => props.theme.base['font-weight'].bold};\n white-space: pre;\n }\n\n &.row.group-header-row {\n height: auto;\n border-bottom: ${props => (!props.isAggregationApplied ? 'var(--border-style)' : 'none')};\n\n .group-header-aggregation-row {\n display: flex;\n\n /* Using height 0 so that the aggregations aren't visible when not applied but the cells can take the width and stretch the group header to the full width */\n height: ${props => (props.isAggregationApplied ? 'var(--group-header-height)' : 0)};\n }\n }\n\n &.group-header-row .stickyGroupHeader {\n position: sticky;\n left: 0;\n width: 0;\n z-index: 10;\n height: var(--group-header-height);\n\n > button {\n color: currentColor;\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: max-content;\n max-width: var(--container-width);\n display: flex;\n align-items: center;\n background-color: var(--group-bg-color);\n padding-left: var(--group-left);\n margin-inline-start: 0.25rem;\n z-index: 30;\n cursor: pointer;\n white-space: nowrap;\n text-align: inherit;\n font-stretch: inherit;\n\n > .group-wrapper {\n margin-inline-start: ${({ groupHeader, theme }) =>\n groupHeader.count === 0 ? `calc(${theme.base.spacing} * 2.25)` : 'unset'};\n align-items: baseline;\n }\n\n .cell-content {\n max-height: var(--group-header-height);\n padding: 0;\n }\n }\n button:focus {\n box-shadow: ${({ theme }) => theme.base.shadow['focus-inset']};\n }\n\n &::before {\n content: '';\n position: absolute;\n inset-block-start: 0;\n inset-inline-start: 0;\n width: 0.25rem;\n height: 100%;\n background-color: ${props => props.groupHeader.colorIndicator};\n z-index: 12;\n }\n }\n .group-header.cell {\n left: 0;\n padding-left: var(--group-left);\n }\n\n div.group-header.cell-fixed {\n background-color: var(--group-bg-color);\n }\n`;\n\nconst StyledMetaList = styled(MetaList)`\n margin-inline-start: 0;\n\n /* Overrides default MetaList padding and margin which was causing text-overflow issues */\n margin: 0;\n padding: 0 0.3rem;\n`;\nconst GroupAdditionalInfoSeparator = styled(StyledMetaListItem)`\n margin-inline-start: 0.3rem;\n`;\n\nconst ColorBadge = styled.div`\n position: sticky;\n inset-inline-start: 0;\n z-index: 10;\n\n &::before {\n content: '';\n position: absolute;\n inset-block-start: 0;\n inset-inline-start: 0;\n width: 0.25rem;\n height: 100%;\n background-color: ${props => props.colorIndicator};\n z-index: 12;\n }\n`;\n\n/**\n * Generates unique ARIA label IDs for accessibility.\n * - groupLabelId: for the group label (e.g., \"Status:\")\n * - groupNameId: for the group value (e.g., \"Open\")\n * - additionalInfoIds: for any additional fields shown in the group header\n * These IDs are used in aria-labelledby to improve screen reader support.\n */\nconst getAriaLabelIds = (uniqueId, additionalFields) => {\n const groupLabelId = `group-label-${uniqueId}`;\n const groupNameId = `group-name-${uniqueId}`;\n const additionalInfoIds = additionalFields?.map(\n additionalField =>\n `group-additional-info-${uniqueId}-${additionalField.id}` /* used in aria-labelledby */\n );\n return { groupLabelId, groupNameId, additionalInfoIds };\n};\n/**\n * Returns label for interval grouping based on interval and boundaries\n Response data depends on boundary settings.\n Ex: For sample data of profit\n profit --> cases(count)\n {'0': 10, 1': 100, '2':30, '10': 35, '15':45, '20':2}\n For Interval 10\n If the boundary is 'include-lower-only',\n and value is 10 then label -> 10 to 20\n\n If boundary is 'include-upper-only',\n and value is 10 then label -> 0 to 10\n * */\nfunction buildIntervalGroupingLabel(value, customFunction, translate) {\n const { interval, boundaries } = customFunction;\n // To restrict the decimals in labels\n const intervalDecimalLength = (interval.toString().split('.')[1] || '').length;\n value = Number(value);\n // In case of 'include-lower-only'\n let lowerValue = value.toFixed(intervalDecimalLength);\n let upperValue = (value + interval).toFixed(intervalDecimalLength);\n // In case of boundary 'include-upper-only'\n if (boundaries === intervalGroupingBoundaries.includeUpperOnly) {\n lowerValue = (value - interval).toFixed(intervalDecimalLength);\n upperValue = value.toFixed(intervalDecimalLength);\n }\n return `${lowerValue} ${translate('to')} ${upperValue}`;\n}\n\nexport function GroupName({ view, column, groupHeader, dateFunction, customFunction }) {\n const [translate] = useTranslate();\n const { locale, timezone } = view.meta;\n const isRangeGrouping = customFunction?.type === customFunctions.RANGE_GROUPING;\n const isIntervalGrouping = customFunction?.type === customFunctions.INTERVAL_GROUPING;\n\n if (dateFunction) {\n return (\n <DateValueDisplay\n value={groupHeader.name}\n dateFunction={dateFunction}\n locale={locale}\n timezone={timezone}\n />\n );\n }\n\n if (isRangeGrouping) {\n /** If custom range grouping applied on number field , we need to show group name as text instead of number */\n return groupHeader.name;\n }\n\n if (isIntervalGrouping) {\n /** If custom range grouping applied on number , we need to show group name based on value and custom function details like interval and boundaries */\n return buildIntervalGroupingLabel(groupHeader.name, customFunction, translate);\n }\n\n column.setExecutionContext(null); // If null is not set then it will execute on the previous row context and facing issues when cell is edited. Based on column.editMode and current context renderer varies (it can be cellEditRenderer)\n\n const columnRendererProps = {\n ...column.getRenderingEngineProps(),\n context: {\n getValue: () => groupHeader.name,\n getExecutionContext: () => {\n return { getValue: () => groupHeader.data, name: 'groupHeader' };\n }\n }\n };\n\n return <RenderingEngine {...columnRendererProps} />;\n}\n\n/**\n * Tooltip content for the group header.\n * Shows the group label, value, and any additional fields.\n * Used for hover/focus tooltips on the group header button.\n */\nfunction GroupHeaderToolTip({ column, groupHeader, columns, additionalFields, target }) {\n const view = column.parent;\n const { dateFunction, customFunction } =\n getGroupFromKey(groupHeader.groupBy, view.state.groups) ?? {};\n const formatter = view.getFormatterByKey('Integer');\n const { locale } = view.meta;\n const groupCountFormatted = formatter\n ? formatter(groupHeader.count, { locale })\n : groupHeader.count;\n\n return (\n <Tooltip smart target={target} showDelay='short' hideDelay='none' describeTarget={false}>\n <Text>{!column.field.hideGroupColumnNameLabel && groupHeader.label}: </Text>\n <Text>\n <GroupName\n view={view}\n column={column}\n groupHeader={groupHeader}\n dateFunction={dateFunction}\n customFunction={customFunction}\n />\n <Text>{` (${groupCountFormatted})`}</Text>\n </Text>\n {!!(groupHeader.additionalFieldsData?.length && additionalFields.length) && (\n <>\n {groupHeader.additionalFieldsData?.map(additionalFieldData => {\n return (\n <>\n {' • '}\n <GroupAdditionalInfo\n groupHeader={groupHeader}\n additionalField={additionalFields.find(\n additionalField => additionalField.id === additionalFieldData.id\n )}\n columns={columns}\n additionalFieldData={additionalFieldData}\n rendererContext='GroupHeaderTooltip'\n />\n </>\n );\n })}\n </>\n )}\n </Tooltip>\n );\n}\n\n/**\n * Renders the main group header label and count.\n * - Shows the group label (e.g., \"Status:\") unless hidden by column config.\n * - Shows the group value and item count.\n * - Uses ARIA IDs for accessibility.\n */\nfunction GroupHeaderLabel({ column, groupHeader }) {\n const view = column.parent;\n const { dateFunction, customFunction } =\n getGroupFromKey(groupHeader.groupBy, view.state.groups) ?? {};\n const formatter = view.getFormatterByKey('Integer');\n const { locale } = view.meta;\n const groupCountFormatted = formatter\n ? formatter(groupHeader.count, { locale })\n : groupHeader.count;\n const { groupLabelId, groupNameId } = getAriaLabelIds(groupHeader.uniqueId);\n return (\n <>\n <div className='group-label' />\n {!column.field.hideGroupColumnNameLabel && (\n <span\n className='group-header-groupby'\n data-test-id={groupHeader.groupBy}\n data-testid={`${TestIdConstants.groupHeaderGroupBy}-${groupHeader.groupBy}`}\n id={groupLabelId}\n >\n {groupHeader.label}:\n </span>\n )}\n <div className='group-label' />\n <span\n className='group-context-count'\n style={{ display: 'inline-flex' }}\n data-test-id='groupHeader'\n data-testid={TestIdConstants.groupHeaderCount}\n id={groupNameId}\n >\n <GroupName\n view={view}\n column={column}\n groupHeader={groupHeader}\n dateFunction={dateFunction}\n customFunction={customFunction}\n />\n {/* adding whitespace pre to preserve the space at the begining of count text */}\n <span className='group-count'>{` (${groupCountFormatted})`}</span>\n <VisuallyHiddenText> items</VisuallyHiddenText>\n </span>\n </>\n );\n}\n// NOTE: While making any changes in GroupRenderer.jsx, also make similar changes in HierarchicalGroupRenderer.jsx file if applicable\n\nexport default function GroupHeader({ groupHeader, columns }) {\n const buttonRef = useRef();\n const view = columns[0].parent;\n const toggleGroup = useCallback(() => {\n if (groupHeader.count > 0) {\n view.type.toggleGroupExpansion({ groupHeader });\n }\n }, [groupHeader, view]);\n\n // TODO: This we are adding temporary to show freeze border until we make group header rendering change\n // when we will pick up aggregation.\n if (!groupHeader.isVisible) return null;\n\n // If grouping by a regular column (i.e. without a dateFunction), determine props for the renderer\n const { columnId, additionalFields = [] } =\n getGroupFromKey(groupHeader.groupBy, view.state.groups) ?? {};\n // if state.groups is not yet prepared/updated, then getGroupFromKey will return undefined\n if (!columnId) {\n return null;\n }\n\n const column = columns.find(c => c.field.id === columnId);\n const isAggregationApplied = columns.filter(c => !c.hidden).some(c => c.aggregated);\n\n // Generate unique ARIA label IDs for accessibility\n const {\n groupLabelId,\n groupNameId,\n additionalInfoIds = []\n } = getAriaLabelIds(groupHeader.uniqueId, additionalFields);\n let groupAdditionalInfo;\n\n // Prepare additional info components if present\n if (groupHeader.additionalFieldsData?.length && additionalFields.length) {\n groupAdditionalInfo = groupHeader.additionalFieldsData.map((additionalFieldsData, idx) => (\n <Flex container={{ gap: 0.5 }} id={additionalInfoIds[idx]}>\n <GroupAdditionalInfo\n additionalFieldData={additionalFieldsData}\n additionalField={additionalFields.find(\n additionalField => additionalField.id === additionalFieldsData.id\n )}\n columns={columns}\n groupHeader={groupHeader}\n rendererContext='GroupHeader'\n />\n </Flex>\n ));\n }\n\n // FIXME: Import rather than COPY, i would rather\n return (\n <StyledGroupHeader\n groupHeader={groupHeader}\n className={cx('row group-header-row sticky-group-header')}\n data-test-id='groupHeader'\n data-testid={TestIdConstants.groupHeader}\n isAggregationApplied={isAggregationApplied}\n role='row'\n onFocus={e => {\n if (buttonRef.current && !e.currentTarget.contains(e.relatedTarget)) {\n e.preventDefault();\n buttonRef.current.focus();\n }\n }}\n >\n <div className='stickyGroupHeader'>\n <BareButton\n ref={buttonRef}\n // ARIA labels for accessibility, includes additional info if present\n aria-labelledby={[groupLabelId, groupNameId, ...additionalInfoIds].join(' ')}\n aria-expanded={!!groupHeader.isExpanded}\n style={{\n paddingRight: 'var(--group-left)'\n }}\n onClick={() => toggleGroup()}\n onKeyDown={event => {\n if (event.key === 'Enter') {\n // Prevent capturing of group header toggle click to its child renderers.\n event.preventDefault();\n event.stopPropagation();\n toggleGroup();\n }\n }}\n tabIndex={-1}\n icon\n >\n {groupHeader.count > 0 &&\n (groupHeader.isExpanded ? <Icon name='caret-down' /> : <Icon name='caret-right' />)}\n <div className='group-wrapper'>\n {/* Main group label and count */}\n <GroupHeaderLabel column={column} groupHeader={groupHeader} />\n {/* Render additional info if present */}\n {groupAdditionalInfo && (\n <>\n <Text variant='secondary' as={GroupAdditionalInfoSeparator}>\n •\n </Text>\n <StyledMetaList wrapItems={false} items={groupAdditionalInfo} />\n </>\n )}\n </div>\n </BareButton>\n {/* Tooltip for group header, shown on hover/focus */}\n {buttonRef.current && (\n <GroupHeaderToolTip\n target={buttonRef.current}\n column={column}\n groupHeader={groupHeader}\n columns={columns}\n additionalFields={additionalFields}\n />\n )}\n </div>\n <div className='group-header-aggregation-row'>\n <ColorBadge colorIndicator={groupHeader.colorIndicator} />\n {columns.map(c => {\n const cxt = {\n getValue: () =>\n groupHeader?.aggregation?.[c.field.name]?.[c.aggregationType?.toLowerCase()]\n };\n return (\n <AggregatorCell\n key={c.field.id}\n column={c}\n context={cxt}\n className={cx('cell', {\n 'cell-fixed': column.frozen\n })}\n />\n );\n })}\n </div>\n </StyledGroupHeader>\n );\n}\n\nGroupHeader.propTypes = {\n columns: PropTypes.arrayOf(PropTypes.any).isRequired,\n groupHeader: PropTypes.objectOf(PropTypes.any).isRequired\n};\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../Core/Components/GroupRenderer/index.jsx"],"names":[],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport { useRef, useCallback } from 'react';\nimport styled from 'styled-components';\n\nimport { Icon, Text, MetaList, Tooltip, VisuallyHiddenText, Flex } from '@pega/cosmos-react-core';\nimport BareButton from '@pega/cosmos-react-core/lib/components/Button/BareButton';\nimport { getGroupFromKey } from 'pega-ui-list-data-apis';\n\nimport { createClassName as cx } from '../../Utils';\nimport useTranslate from '../../Hooks/useTranslate';\nimport { customFunctions, intervalGroupingBoundaries } from '../../constants';\nimport AggregatorCell from '../AggregatorCell';\nimport RenderingEngine from '../RenderingEngine/RenderCell';\nimport DateValueDisplay from '../DateValueDisplay';\nimport TestIdConstants from '../TestIdConstants';\n\nimport GroupAdditionalInfo from './GroupAdditionalInfo';\n\nconst groupheaderleftdisplacement = headerLevel => `${(headerLevel.level + 1) * 0.5}rem`;\n/**\n * TODO: remove currentColor style after cosmos fixes the issue\n * Cosmos yet to handle dark theme on BareButton\n */\n\nconst StyledGroupHeader = styled.div`\n --group-left: ${props => groupheaderleftdisplacement(props.groupHeader)};\n --group-bg-color: ${props => props.theme.base.palette['secondary-background']};\n background-color: var(--group-bg-color);\n &:has(button[aria-expanded='true']) {\n filter: ${props => props.theme.base.shadow['low-filter']};\n }\n\n &.row.sticky-group-header {\n position: sticky;\n display: block;\n top: calc(\n ${props =>\n props.groupHeader.isLeafNode && props.groupHeader.level !== 0\n ? 'calc(var(--row-height) + var(--group-header-height))'\n : 'var(--row-height)'}\n );\n\n /* z-index starting from 8 because freeze-line has z-index 7 */\n z-index: ${props => `${8 + props.groupHeader.index}`};\n > .cell-action,\n .cell-fixed {\n background-color: var(--group-bg-color);\n }\n }\n\n .group-label {\n width: 0.437rem;\n display: inline-block;\n flex-shrink: 0;\n }\n\n .group-header-groupby {\n font-weight: ${props => props.theme.base['font-weight'].normal};\n }\n\n .group-context-count .group-count {\n font-weight: ${props => props.theme.base['font-weight'].bold};\n white-space: pre;\n }\n\n &.row.group-header-row {\n height: auto;\n border-bottom: ${props => (!props.isAggregationApplied ? 'var(--border-style)' : 'none')};\n\n .group-header-aggregation-row {\n display: flex;\n\n /* Using height 0 so that the aggregations aren't visible when not applied but the cells can take the width and stretch the group header to the full width */\n height: ${props => (props.isAggregationApplied ? 'var(--group-header-height)' : 0)};\n }\n }\n\n &.group-header-row .stickyGroupHeader {\n position: sticky;\n left: 0;\n width: 0;\n z-index: 10;\n height: var(--group-header-height);\n\n > button {\n color: currentColor;\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: max-content;\n max-width: var(--container-width);\n display: flex;\n align-items: center;\n background-color: var(--group-bg-color);\n padding-left: var(--group-left);\n margin-inline-start: 0.25rem;\n z-index: 30;\n cursor: pointer;\n white-space: nowrap;\n text-align: inherit;\n font-stretch: inherit;\n\n > .group-wrapper {\n margin-inline-start: ${({ groupHeader, theme }) =>\n groupHeader.count === 0 ? `calc(${theme.base.spacing} * 2.25)` : 'unset'};\n align-items: baseline;\n }\n\n .cell-content {\n max-height: var(--group-header-height);\n padding: 0;\n }\n }\n button:focus {\n box-shadow: ${({ theme }) => theme.base.shadow['focus-inset']};\n }\n\n &::before {\n content: '';\n position: absolute;\n inset-block-start: 0;\n inset-inline-start: 0;\n width: 0.25rem;\n height: 100%;\n background-color: ${props => props.groupHeader.colorIndicator};\n z-index: 12;\n }\n }\n .group-header.cell {\n left: 0;\n padding-left: var(--group-left);\n }\n\n div.group-header.cell-fixed {\n background-color: var(--group-bg-color);\n }\n`;\n\nconst StyledMetaList = styled(MetaList)`\n margin-inline-start: 0;\n\n /* Overrides default MetaList padding and margin which was causing text-overflow issues */\n margin: 0;\n padding: 0 0.3rem;\n`;\nconst GroupAdditionalInfoSeparator = styled.span`\n margin-inline-start: 0.3rem;\n`;\n\nconst ColorBadge = styled.div`\n position: sticky;\n inset-inline-start: 0;\n z-index: 10;\n\n &::before {\n content: '';\n position: absolute;\n inset-block-start: 0;\n inset-inline-start: 0;\n width: 0.25rem;\n height: 100%;\n background-color: ${props => props.colorIndicator};\n z-index: 12;\n }\n`;\n\n/**\n * Generates unique ARIA label IDs for accessibility.\n * - groupLabelId: for the group label (e.g., \"Status:\")\n * - groupNameId: for the group value (e.g., \"Open\")\n * - additionalInfoIds: for any additional fields shown in the group header\n * These IDs are used in aria-labelledby to improve screen reader support.\n */\nconst getAriaLabelIds = (uniqueId, additionalFields) => {\n const groupLabelId = `group-label-${uniqueId}`;\n const groupNameId = `group-name-${uniqueId}`;\n const additionalInfoIds = additionalFields?.map(\n additionalField =>\n `group-additional-info-${uniqueId}-${additionalField.id}` /* used in aria-labelledby */\n );\n return { groupLabelId, groupNameId, additionalInfoIds };\n};\n/**\n * Returns label for interval grouping based on interval and boundaries\n Response data depends on boundary settings.\n Ex: For sample data of profit\n profit --> cases(count)\n {'0': 10, 1': 100, '2':30, '10': 35, '15':45, '20':2}\n For Interval 10\n If the boundary is 'include-lower-only',\n and value is 10 then label -> 10 to 20\n\n If boundary is 'include-upper-only',\n and value is 10 then label -> 0 to 10\n * */\nfunction buildIntervalGroupingLabel(value, customFunction, translate) {\n const { interval, boundaries } = customFunction;\n // To restrict the decimals in labels\n const intervalDecimalLength = (interval.toString().split('.')[1] || '').length;\n value = Number(value);\n // In case of 'include-lower-only'\n let lowerValue = value.toFixed(intervalDecimalLength);\n let upperValue = (value + interval).toFixed(intervalDecimalLength);\n // In case of boundary 'include-upper-only'\n if (boundaries === intervalGroupingBoundaries.includeUpperOnly) {\n lowerValue = (value - interval).toFixed(intervalDecimalLength);\n upperValue = value.toFixed(intervalDecimalLength);\n }\n return `${lowerValue} ${translate('to')} ${upperValue}`;\n}\n\nexport function GroupName({ view, column, groupHeader, dateFunction, customFunction }) {\n const [translate] = useTranslate();\n const { locale, timezone } = view.meta;\n const isRangeGrouping = customFunction?.type === customFunctions.RANGE_GROUPING;\n const isIntervalGrouping = customFunction?.type === customFunctions.INTERVAL_GROUPING;\n\n if (dateFunction) {\n return (\n <DateValueDisplay\n value={groupHeader.name}\n dateFunction={dateFunction}\n locale={locale}\n timezone={timezone}\n />\n );\n }\n\n if (isRangeGrouping) {\n /** If custom range grouping applied on number field , we need to show group name as text instead of number */\n return groupHeader.name;\n }\n\n if (isIntervalGrouping) {\n /** If custom range grouping applied on number , we need to show group name based on value and custom function details like interval and boundaries */\n return buildIntervalGroupingLabel(groupHeader.name, customFunction, translate);\n }\n\n column.setExecutionContext(null); // If null is not set then it will execute on the previous row context and facing issues when cell is edited. Based on column.editMode and current context renderer varies (it can be cellEditRenderer)\n\n const columnRendererProps = {\n ...column.getRenderingEngineProps(),\n context: {\n getValue: () => groupHeader.name,\n getExecutionContext: () => {\n return { getValue: () => groupHeader.data, name: 'groupHeader' };\n }\n }\n };\n\n return <RenderingEngine {...columnRendererProps} />;\n}\n\n/**\n * Tooltip content for the group header.\n * Shows the group label, value, and any additional fields.\n * Used for hover/focus tooltips on the group header button.\n */\nfunction GroupHeaderToolTip({ column, groupHeader, columns, additionalFields, target }) {\n const view = column.parent;\n const { dateFunction, customFunction } =\n getGroupFromKey(groupHeader.groupBy, view.state.groups) ?? {};\n const formatter = view.getFormatterByKey('Integer');\n const { locale } = view.meta;\n const groupCountFormatted = formatter\n ? formatter(groupHeader.count, { locale })\n : groupHeader.count;\n\n return (\n <Tooltip smart target={target} showDelay='short' hideDelay='none' describeTarget={false}>\n <Text>{!column.field.hideGroupColumnNameLabel && groupHeader.label}: </Text>\n <Text>\n <GroupName\n view={view}\n column={column}\n groupHeader={groupHeader}\n dateFunction={dateFunction}\n customFunction={customFunction}\n />\n <Text>{` (${groupCountFormatted})`}</Text>\n </Text>\n {!!(groupHeader.additionalFieldsData?.length && additionalFields.length) && (\n <>\n {groupHeader.additionalFieldsData?.map(additionalFieldData => {\n return (\n <>\n {' • '}\n <GroupAdditionalInfo\n groupHeader={groupHeader}\n additionalField={additionalFields.find(\n additionalField => additionalField.id === additionalFieldData.id\n )}\n columns={columns}\n additionalFieldData={additionalFieldData}\n rendererContext='GroupHeaderTooltip'\n />\n </>\n );\n })}\n </>\n )}\n </Tooltip>\n );\n}\n\n/**\n * Renders the main group header label and count.\n * - Shows the group label (e.g., \"Status:\") unless hidden by column config.\n * - Shows the group value and item count.\n * - Uses ARIA IDs for accessibility.\n */\nfunction GroupHeaderLabel({ column, groupHeader }) {\n const view = column.parent;\n const { dateFunction, customFunction } =\n getGroupFromKey(groupHeader.groupBy, view.state.groups) ?? {};\n const formatter = view.getFormatterByKey('Integer');\n const { locale } = view.meta;\n const groupCountFormatted = formatter\n ? formatter(groupHeader.count, { locale })\n : groupHeader.count;\n const { groupLabelId, groupNameId } = getAriaLabelIds(groupHeader.uniqueId);\n return (\n <>\n <div className='group-label' />\n {!column.field.hideGroupColumnNameLabel && (\n <span\n className='group-header-groupby'\n data-test-id={groupHeader.groupBy}\n data-testid={`${TestIdConstants.groupHeaderGroupBy}-${groupHeader.groupBy}`}\n id={groupLabelId}\n >\n {groupHeader.label}:\n </span>\n )}\n <div className='group-label' />\n <span\n className='group-context-count'\n style={{ display: 'inline-flex' }}\n data-test-id='groupHeader'\n data-testid={TestIdConstants.groupHeaderCount}\n id={groupNameId}\n >\n <GroupName\n view={view}\n column={column}\n groupHeader={groupHeader}\n dateFunction={dateFunction}\n customFunction={customFunction}\n />\n {/* adding whitespace pre to preserve the space at the begining of count text */}\n <span className='group-count'>{` (${groupCountFormatted})`}</span>\n <VisuallyHiddenText> items</VisuallyHiddenText>\n </span>\n </>\n );\n}\n// NOTE: While making any changes in GroupRenderer.jsx, also make similar changes in HierarchicalGroupRenderer.jsx file if applicable\n\nexport default function GroupHeader({ groupHeader, columns }) {\n const buttonRef = useRef();\n const view = columns[0].parent;\n const toggleGroup = useCallback(() => {\n if (groupHeader.count > 0) {\n view.type.toggleGroupExpansion({ groupHeader });\n }\n }, [groupHeader, view]);\n\n // TODO: This we are adding temporary to show freeze border until we make group header rendering change\n // when we will pick up aggregation.\n if (!groupHeader.isVisible) return null;\n\n // If grouping by a regular column (i.e. without a dateFunction), determine props for the renderer\n const { columnId, additionalFields = [] } =\n getGroupFromKey(groupHeader.groupBy, view.state.groups) ?? {};\n // if state.groups is not yet prepared/updated, then getGroupFromKey will return undefined\n if (!columnId) {\n return null;\n }\n\n const column = columns.find(c => c.field.id === columnId);\n const isAggregationApplied = columns.filter(c => !c.hidden).some(c => c.aggregated);\n\n // Generate unique ARIA label IDs for accessibility\n const {\n groupLabelId,\n groupNameId,\n additionalInfoIds = []\n } = getAriaLabelIds(groupHeader.uniqueId, additionalFields);\n let groupAdditionalInfo;\n\n // Prepare additional info components if present\n if (groupHeader.additionalFieldsData?.length && additionalFields.length) {\n groupAdditionalInfo = groupHeader.additionalFieldsData.reduce(\n (acc, additionalFieldData, idx) => {\n const additionalField = additionalFields.find(field => field.id === additionalFieldData.id);\n if (additionalField) {\n acc.push(\n <Flex container={{ gap: 0.5 }} id={additionalInfoIds[idx]}>\n <GroupAdditionalInfo\n additionalFieldData={additionalFieldData}\n additionalField={additionalField}\n columns={columns}\n groupHeader={groupHeader}\n rendererContext='GroupHeader'\n />\n </Flex>\n );\n }\n return acc;\n },\n []\n );\n }\n\n // FIXME: Import rather than COPY, i would rather\n return (\n <StyledGroupHeader\n groupHeader={groupHeader}\n className={cx('row group-header-row sticky-group-header')}\n data-test-id='groupHeader'\n data-testid={`${TestIdConstants.groupHeader}-${groupHeader.label}-${groupHeader.name}`}\n isAggregationApplied={isAggregationApplied}\n role='row'\n onFocus={e => {\n if (buttonRef.current && !e.currentTarget.contains(e.relatedTarget)) {\n e.preventDefault();\n buttonRef.current.focus();\n }\n }}\n >\n <div className='stickyGroupHeader'>\n <BareButton\n ref={buttonRef}\n // ARIA labels for accessibility, includes additional info if present\n aria-labelledby={[groupLabelId, groupNameId, ...additionalInfoIds].join(' ')}\n aria-expanded={!!groupHeader.isExpanded}\n style={{\n paddingRight: 'var(--group-left)'\n }}\n onClick={() => toggleGroup()}\n onKeyDown={event => {\n if (event.key === 'Enter') {\n // Prevent capturing of group header toggle click to its child renderers.\n event.preventDefault();\n event.stopPropagation();\n toggleGroup();\n }\n }}\n tabIndex={-1}\n icon\n >\n {groupHeader.count > 0 &&\n (groupHeader.isExpanded ? <Icon name='caret-down' /> : <Icon name='caret-right' />)}\n <div className='group-wrapper'>\n {/* Main group label and count */}\n <GroupHeaderLabel column={column} groupHeader={groupHeader} />\n {/* Render additional info if present */}\n {groupAdditionalInfo && (\n <>\n <Text variant='secondary' as={GroupAdditionalInfoSeparator}>\n •\n </Text>\n <StyledMetaList wrapItems={false} items={groupAdditionalInfo} />\n </>\n )}\n </div>\n </BareButton>\n {/* Tooltip for group header, shown on hover/focus */}\n {buttonRef.current && (\n <GroupHeaderToolTip\n target={buttonRef.current}\n column={column}\n groupHeader={groupHeader}\n columns={columns}\n additionalFields={additionalFields}\n />\n )}\n </div>\n <div className='group-header-aggregation-row'>\n <ColorBadge colorIndicator={groupHeader.colorIndicator} />\n {columns.map(c => {\n const cxt = {\n getValue: () =>\n groupHeader?.aggregation?.[c.field.name]?.[c.aggregationType?.toLowerCase()]\n };\n return (\n <AggregatorCell\n key={c.field.id}\n column={c}\n context={cxt}\n className={cx('cell', {\n 'cell-fixed': column.frozen\n })}\n />\n );\n })}\n </div>\n </StyledGroupHeader>\n );\n}\n\nGroupHeader.propTypes = {\n columns: PropTypes.arrayOf(PropTypes.any).isRequired,\n groupHeader: PropTypes.objectOf(PropTypes.any).isRequired\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pega/lists-react",
|
|
3
|
-
"version": "9.0.0-build.
|
|
3
|
+
"version": "9.0.0-build.15.0",
|
|
4
4
|
"description": "Repeating view structures such as Table, Gallery(Repeating layouts), Kanban etc.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"author": "Pegasystems",
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
"build": "tsc -b tsconfig.build.json"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@pega/cosmos-react-condition-builder": "9.0.0-build.
|
|
18
|
-
"@pega/cosmos-react-core": "9.0.0-build.
|
|
19
|
-
"@pega/cosmos-react-rte": "9.0.0-build.
|
|
17
|
+
"@pega/cosmos-react-condition-builder": "9.0.0-build.15.0",
|
|
18
|
+
"@pega/cosmos-react-core": "9.0.0-build.15.0",
|
|
19
|
+
"@pega/cosmos-react-rte": "9.0.0-build.15.0",
|
|
20
20
|
"@types/lodash.get": "^4.4.9",
|
|
21
21
|
"@types/react": "^17.0.62 || ^18.3.3",
|
|
22
22
|
"@types/react-dom": "^17.0.20 || ^18.3.0",
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
"dayjs": "^1.11.13",
|
|
25
25
|
"fast-deep-equal": "^3.1.3",
|
|
26
26
|
"lodash.get": "^4.4.2",
|
|
27
|
-
"pega-repeating-structures-core": "npm:@pega/lists-core@9.0.0-build.
|
|
28
|
-
"pega-ui-list-data-apis": "npm:@pega/lists-core-utils@9.0.0-build.
|
|
27
|
+
"pega-repeating-structures-core": "npm:@pega/lists-core@9.0.0-build.15.0",
|
|
28
|
+
"pega-ui-list-data-apis": "npm:@pega/lists-core-utils@9.0.0-build.15.0",
|
|
29
29
|
"polished": "^4.1.0",
|
|
30
30
|
"prop-types": "^15.8.1",
|
|
31
31
|
"react": "^17.0.0 || ^18.0.0",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"@testing-library/react": "^16.0.0",
|
|
45
45
|
"@testing-library/user-event": "^14.6.1",
|
|
46
46
|
"jest-axe": "^8.0.0",
|
|
47
|
-
"srs-utils": "9.0.0-build.
|
|
47
|
+
"srs-utils": "9.0.0-build.15.0",
|
|
48
48
|
"typescript": "~5.9.3"
|
|
49
49
|
}
|
|
50
50
|
}
|