@pega/lists-react 9.25.1-3 → 9.25.1-4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/lib/Core/Components/DefaultComponents/CellRenderers/RowActionMenu.d.ts.map +1 -1
  2. package/lib/Core/Components/DefaultComponents/CellRenderers/RowActionMenu.js +6 -53
  3. package/lib/Core/Components/DefaultComponents/CellRenderers/RowActionMenu.js.map +1 -1
  4. package/lib/Core/Components/DefaultComponents/CellRenderers/RowSelectHandle.js +9 -2
  5. package/lib/Core/Components/DefaultComponents/CellRenderers/RowSelectHandle.js.map +1 -1
  6. package/lib/Core/Components/RenderingEngine/ComponentResolverFactory.d.ts +1 -0
  7. package/lib/Core/Components/RenderingEngine/ComponentResolverFactory.d.ts.map +1 -1
  8. package/lib/Core/Components/RenderingEngine/ComponentResolverFactory.js +6 -1
  9. package/lib/Core/Components/RenderingEngine/ComponentResolverFactory.js.map +1 -1
  10. package/lib/Core/Components/Virtualise/VirtualizeInfinite.js +4 -2
  11. package/lib/Core/Components/Virtualise/VirtualizeInfinite.js.map +1 -1
  12. package/lib/Core/Components/Virtualise/index.js +5 -3
  13. package/lib/Core/Components/Virtualise/index.js.map +1 -1
  14. package/lib/Core/Utils/fetchRowActions.d.ts +16 -0
  15. package/lib/Core/Utils/fetchRowActions.d.ts.map +1 -0
  16. package/lib/Core/Utils/fetchRowActions.js +49 -0
  17. package/lib/Core/Utils/fetchRowActions.js.map +1 -0
  18. package/lib/Core/Utils/styles.d.ts +9 -0
  19. package/lib/Core/Utils/styles.d.ts.map +1 -1
  20. package/lib/Core/Utils/styles.js +8 -3
  21. package/lib/Core/Utils/styles.js.map +1 -1
  22. package/lib/Core/Views/Table/CellWrapper.d.ts +3 -1
  23. package/lib/Core/Views/Table/CellWrapper.d.ts.map +1 -1
  24. package/lib/Core/Views/Table/CellWrapper.js +4 -3
  25. package/lib/Core/Views/Table/CellWrapper.js.map +1 -1
  26. package/lib/Core/Views/Table/Row.d.ts.map +1 -1
  27. package/lib/Core/Views/Table/Row.js +24 -10
  28. package/lib/Core/Views/Table/Row.js.map +1 -1
  29. package/lib/Core/Views/Table/StyledTableContainer.d.ts.map +1 -1
  30. package/lib/Core/Views/Table/StyledTableContainer.js +74 -24
  31. package/lib/Core/Views/Table/StyledTableContainer.js.map +1 -1
  32. package/lib/Core/Views/Table/VirtualizeWrapper.d.ts +3 -1
  33. package/lib/Core/Views/Table/VirtualizeWrapper.d.ts.map +1 -1
  34. package/lib/Core/Views/Table/VirtualizeWrapper.js +6 -5
  35. package/lib/Core/Views/Table/VirtualizeWrapper.js.map +1 -1
  36. package/lib/Core/Views/Table/index.d.ts.map +1 -1
  37. package/lib/Core/Views/Table/index.js +15 -6
  38. package/lib/Core/Views/Table/index.js.map +1 -1
  39. package/lib/Core/Views/Table/useMasterDetailCleanup.d.ts +11 -0
  40. package/lib/Core/Views/Table/useMasterDetailCleanup.d.ts.map +1 -0
  41. package/lib/Core/Views/Table/useMasterDetailCleanup.js +27 -0
  42. package/lib/Core/Views/Table/useMasterDetailCleanup.js.map +1 -0
  43. package/lib/Core/Views/Table/useMasterDetailHost.d.ts +14 -0
  44. package/lib/Core/Views/Table/useMasterDetailHost.d.ts.map +1 -0
  45. package/lib/Core/Views/Table/useMasterDetailHost.js +56 -0
  46. package/lib/Core/Views/Table/useMasterDetailHost.js.map +1 -0
  47. package/lib/Core/Views/Table/useMasterDetailRenderer.d.ts +13 -0
  48. package/lib/Core/Views/Table/useMasterDetailRenderer.d.ts.map +1 -0
  49. package/lib/Core/Views/Table/useMasterDetailRenderer.js +23 -0
  50. package/lib/Core/Views/Table/useMasterDetailRenderer.js.map +1 -0
  51. package/lib/Core/Views/Table/useMasterDetailRow.d.ts +9 -0
  52. package/lib/Core/Views/Table/useMasterDetailRow.d.ts.map +1 -0
  53. package/lib/Core/Views/Table/useMasterDetailRow.js +55 -0
  54. package/lib/Core/Views/Table/useMasterDetailRow.js.map +1 -0
  55. package/lib/Core/Views/Table/useMasterDetailState.d.ts +21 -0
  56. package/lib/Core/Views/Table/useMasterDetailState.d.ts.map +1 -0
  57. package/lib/Core/Views/Table/useMasterDetailState.js +33 -0
  58. package/lib/Core/Views/Table/useMasterDetailState.js.map +1 -0
  59. package/lib/Core/constants.d.ts +4 -0
  60. package/lib/Core/constants.d.ts.map +1 -1
  61. package/lib/Core/constants.js +4 -0
  62. package/lib/Core/constants.js.map +1 -1
  63. package/package.json +8 -7
@@ -0,0 +1,16 @@
1
+ import type { Action } from '@pega/cosmos-react-core';
2
+ import type { RsCoreTypes } from 'pega-repeating-structures-core';
3
+ type RowContext = ReturnType<RsCoreTypes.Row['getContext']>;
4
+ interface FetchRowActionsParams {
5
+ getExecutionContext?: () => RowContext | undefined;
6
+ meta: RsCoreTypes.Meta;
7
+ translate: (key: string) => string;
8
+ }
9
+ export interface HydratedRowAction extends Action {
10
+ primary: string;
11
+ onClick: () => void;
12
+ }
13
+ /** Fetches configured, dynamic, and static menu actions for a row. */
14
+ export default function fetchRowActions({ getExecutionContext, meta, translate }: FetchRowActionsParams): Promise<HydratedRowAction[]>;
15
+ export {};
16
+ //# sourceMappingURL=fetchRowActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchRowActions.d.ts","sourceRoot":"","sources":["../../../Core/Utils/fetchRowActions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAGlE,KAAK,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;AAE5D,UAAU,qBAAqB;IAC7B,mBAAmB,CAAC,EAAE,MAAM,UAAU,GAAG,SAAS,CAAC;IACnD,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;IACvB,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,iBAAkB,SAAQ,MAAM;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AA6CD,sEAAsE;AACtE,wBAA8B,eAAe,CAAC,EAC5C,mBAAmB,EACnB,IAAI,EACJ,SAAS,EACV,EAAE,qBAAqB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA2BtD"}
@@ -0,0 +1,49 @@
1
+ function hydrateActions(actions, rowContext, refreshRow) {
2
+ return actions.map(action => ({
3
+ ...action,
4
+ primary: action.text,
5
+ onClick: () => action.onClick(rowContext, refreshRow)
6
+ }));
7
+ }
8
+ function isVisibleInMenu(actionConfig, rowContext) {
9
+ return (!!actionConfig &&
10
+ typeof actionConfig === 'object' &&
11
+ actionConfig.placement === 'menu' &&
12
+ actionConfig.isVisible?.(rowContext) === true &&
13
+ typeof actionConfig.onClick === 'function');
14
+ }
15
+ function getConfigActions(meta, rowContext, refreshRow, translate) {
16
+ const actions = [];
17
+ if (isVisibleInMenu(meta.editing, rowContext)) {
18
+ actions.push({ text: translate('Edit'), id: 'edit', onClick: meta.editing.onClick });
19
+ }
20
+ if (isVisibleInMenu(meta.deleting, rowContext)) {
21
+ actions.push({ text: translate('Delete'), id: 'delete', onClick: meta.deleting.onClick });
22
+ }
23
+ return hydrateActions(actions, rowContext, refreshRow);
24
+ }
25
+ /** Fetches configured, dynamic, and static menu actions for a row. */
26
+ export default async function fetchRowActions({ getExecutionContext, meta, translate }) {
27
+ const executionContext = getExecutionContext?.();
28
+ if (!executionContext)
29
+ return [];
30
+ const rowContext = executionContext.getValue();
31
+ const refreshRow = () => executionContext.refreshRow();
32
+ const configActions = getConfigActions(meta, rowContext, refreshRow, translate);
33
+ const staticActions = hydrateActions(meta.rowActions ?? [], rowContext, refreshRow);
34
+ try {
35
+ const dynamicActions = await executionContext.getRowActionDetails(rowContext);
36
+ const latestContext = getExecutionContext?.() ?? executionContext;
37
+ const latestRowContext = latestContext.getValue();
38
+ const refreshLatestRow = () => latestContext.refreshRow();
39
+ return [
40
+ ...configActions,
41
+ ...hydrateActions(Array.isArray(dynamicActions) ? dynamicActions : [], latestRowContext, refreshLatestRow),
42
+ ...staticActions
43
+ ];
44
+ }
45
+ catch {
46
+ return [...configActions, ...staticActions];
47
+ }
48
+ }
49
+ //# sourceMappingURL=fetchRowActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchRowActions.js","sourceRoot":"","sources":["../../../Core/Utils/fetchRowActions.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Action } from '@pega/cosmos-react-core';\nimport type { RsCoreTypes } from 'pega-repeating-structures-core';\nimport type { RowAction } from 'pega-repeating-structures-core/lib/types/Meta.types';\n\ntype RowContext = ReturnType<RsCoreTypes.Row['getContext']>;\n\ninterface FetchRowActionsParams {\n getExecutionContext?: () => RowContext | undefined;\n meta: RsCoreTypes.Meta;\n translate: (key: string) => string;\n}\n\nexport interface HydratedRowAction extends Action {\n primary: string;\n onClick: () => void;\n}\n\nfunction hydrateActions(\n actions: RowAction[],\n rowContext: RsCoreTypes.RowData,\n refreshRow: () => Promise<void>\n): HydratedRowAction[] {\n return actions.map(action => ({\n ...action,\n primary: action.text,\n onClick: () => action.onClick(rowContext, refreshRow)\n }));\n}\n\nfunction isVisibleInMenu(\n actionConfig: RsCoreTypes.Meta['editing'] | RsCoreTypes.Meta['deleting'],\n rowContext: RsCoreTypes.RowData\n): actionConfig is RsCoreTypes.ActionConfig {\n return (\n !!actionConfig &&\n typeof actionConfig === 'object' &&\n actionConfig.placement === 'menu' &&\n actionConfig.isVisible?.(rowContext) === true &&\n typeof actionConfig.onClick === 'function'\n );\n}\n\nfunction getConfigActions(\n meta: RsCoreTypes.Meta,\n rowContext: RsCoreTypes.RowData,\n refreshRow: () => Promise<void>,\n translate: FetchRowActionsParams['translate']\n): HydratedRowAction[] {\n const actions: RowAction[] = [];\n\n if (isVisibleInMenu(meta.editing, rowContext)) {\n actions.push({ text: translate('Edit'), id: 'edit', onClick: meta.editing.onClick });\n }\n if (isVisibleInMenu(meta.deleting, rowContext)) {\n actions.push({ text: translate('Delete'), id: 'delete', onClick: meta.deleting.onClick });\n }\n\n return hydrateActions(actions, rowContext, refreshRow);\n}\n\n/** Fetches configured, dynamic, and static menu actions for a row. */\nexport default async function fetchRowActions({\n getExecutionContext,\n meta,\n translate\n}: FetchRowActionsParams): Promise<HydratedRowAction[]> {\n const executionContext = getExecutionContext?.();\n if (!executionContext) return [];\n\n const rowContext = executionContext.getValue();\n const refreshRow = () => executionContext.refreshRow();\n const configActions = getConfigActions(meta, rowContext, refreshRow, translate);\n const staticActions = hydrateActions(meta.rowActions ?? [], rowContext, refreshRow);\n\n try {\n const dynamicActions = await executionContext.getRowActionDetails(rowContext);\n const latestContext = getExecutionContext?.() ?? executionContext;\n const latestRowContext = latestContext.getValue();\n const refreshLatestRow = () => latestContext.refreshRow();\n\n return [\n ...configActions,\n ...hydrateActions(\n Array.isArray(dynamicActions) ? dynamicActions : [],\n latestRowContext,\n refreshLatestRow\n ),\n ...staticActions\n ];\n } catch {\n return [...configActions, ...staticActions];\n }\n}\n"]}
@@ -1,4 +1,13 @@
1
1
  import type { RsCoreTypes } from 'pega-repeating-structures-core';
2
+ export declare function getHeightStyles(view: RsCoreTypes.View, isFullscreen: boolean): {
3
+ height?: undefined;
4
+ minHeight?: undefined;
5
+ maxHeight?: undefined;
6
+ } | {
7
+ height: string;
8
+ minHeight: string;
9
+ maxHeight: string;
10
+ };
2
11
  export declare const generateRSHeightStyles: ({ view, isFullscreen }: {
3
12
  view: RsCoreTypes.View;
4
13
  isFullscreen: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../Core/Utils/styles.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAgElE,eAAO,MAAM,sBAAsB,GAAI,wBAGpC;IACD,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;CACvB,gDAUA,CAAC;AAGF,eAAO,MAAM,mCAAmC,mDAM/C,CAAC"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../Core/Utils/styles.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAKlE,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO;;;;;;;;EA4D5E;AAGD,eAAO,MAAM,sBAAsB,GAAI,wBAGpC;IACD,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;CACvB,gDAUA,CAAC;AAGF,eAAO,MAAM,mCAAmC,mDAM/C,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { css } from 'styled-components';
2
2
  const DEFAULT_READONLY_TABLE_HEIGHT = '600px';
3
3
  const MAX_HEIGHT_MIN_VALUE_FALLBACK = '25rem';
4
- function getHeightStyles(view, isFullscreen) {
4
+ export function getHeightStyles(view, isFullscreen) {
5
5
  if (!view)
6
6
  return {};
7
7
  const { viewHeight, meta: { basicMode, height: { height, minHeight, maxHeight, maxHeightMinValueVariable, deltaAdjustment = 0 } = {} } } = view;
@@ -12,7 +12,8 @@ function getHeightStyles(view, isFullscreen) {
12
12
  // Fullscreen mode overrides other height calculations
13
13
  if (isFullscreen) {
14
14
  return {
15
- height: 'auto',
15
+ // Stretch the fullscreen table using --content-height-in-view, which Fullscreen provides after portaling the table.
16
+ height: `calc(var(--content-height-in-view) - ${cardPadding})`,
16
17
  minHeight: 'auto',
17
18
  maxHeight: `calc(max(100dvh, ${maxHeightMinimumValue}) - ${cardPadding})`
18
19
  };
@@ -34,7 +35,11 @@ function getHeightStyles(view, isFullscreen) {
34
35
  if (basicMode) {
35
36
  calculatedHeight = 'auto';
36
37
  }
37
- if (height) {
38
+ if (typeof height === 'string' && height.startsWith('--')) {
39
+ // CSS variable: explicit height takes precedence over basicMode.
40
+ calculatedHeight = `calc(var(${height}) - ${deltaAdjustment}px - ${cardPadding})`;
41
+ }
42
+ else if (typeof height === 'number') {
38
43
  calculatedHeight = `calc(${height}px - ${deltaAdjustment}px - ${cardPadding})`;
39
44
  }
40
45
  if (viewHeight) {
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../Core/Utils/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAIxC,MAAM,6BAA6B,GAAG,OAAO,CAAC;AAC9C,MAAM,6BAA6B,GAAG,OAAO,CAAC;AAE9C,SAAS,eAAe,CAAC,IAAsB,EAAE,YAAqB;IACpE,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,MAAM,EACJ,UAAU,EACV,IAAI,EAAE,EACJ,SAAS,EACT,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,yBAAyB,EAAE,eAAe,GAAG,CAAC,EAAE,GAAG,EAAE,EAC9F,EACF,GAAG,IAAI,CAAC;IAET,MAAM,qBAAqB,GAAG,yBAAyB;QACrD,CAAC,CAAC,OAAO,yBAAyB,KAAK,6BAA6B,GAAG;QACvE,CAAC,CAAC,6BAA6B,CAAC;IAElC,MAAM,WAAW,GAAG,6BAA6B,CAAC;IAElD,sDAAsD;IACtD,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO;YACL,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,MAAM;YACjB,SAAS,EAAE,oBAAoB,qBAAqB,OAAO,WAAW,GAAG;SAC1E,CAAC;IACJ,CAAC;IAED,0BAA0B;IAC1B,IAAI,mBAAmB,GAAG,MAAM,CAAC;IACjC,IAAI,SAAS,EAAE,CAAC;QACd,mBAAmB,GAAG,6BAA6B,CAAC;IACtD,CAAC;IACD,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,mBAAmB,GAAG,YAAY,SAAS,OAAO,qBAAqB,OAAO,eAAe,QAAQ,WAAW,GAAG,CAAC;IACtH,CAAC;IACD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAChE,mBAAmB,GAAG,gBAAgB,SAAS,KAAK,6BAA6B,MAAM,qBAAqB,OAAO,eAAe,QAAQ,WAAW,GAAG,CAAC;IAC3J,CAAC;IAED,sBAAsB;IACtB,yHAAyH;IACzH,IAAI,gBAAgB,GAAG,mBAAmB,CAAC;IAC3C,IAAI,SAAS,EAAE,CAAC;QACd,gBAAgB,GAAG,MAAM,CAAC;IAC5B,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACX,gBAAgB,GAAG,QAAQ,MAAM,QAAQ,eAAe,QAAQ,WAAW,GAAG,CAAC;IACjF,CAAC;IACD,IAAI,UAAU,EAAE,CAAC;QACf,gBAAgB,GAAG,QAAQ,UAAU,QAAQ,eAAe,QAAQ,WAAW,GAAG,CAAC;IACrF,CAAC;IAED,OAAO;QACL,MAAM,EAAE,gBAAgB;QACxB,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC,MAAM;QAChD,SAAS,EAAE,mBAAmB;KAC/B,CAAC;AACJ,CAAC;AAED,8CAA8C;AAC9C,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EACrC,IAAI,EACJ,YAAY,EAIb,EAAE,EAAE;IACH,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAE7E,OAAO,GAAG,CAAA;;;cAGE,MAAM;kBACF,SAAS;kBACT,SAAS;GACxB,CAAC;AACJ,CAAC,CAAC;AAEF,kIAAkI;AAClI,MAAM,CAAC,MAAM,mCAAmC,GAAG,GAAG,EAAE;IACtD,OAAO,GAAG,CAAA;;;;GAIT,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { css } from 'styled-components';\n\nimport type { RsCoreTypes } from 'pega-repeating-structures-core';\n\nconst DEFAULT_READONLY_TABLE_HEIGHT = '600px';\nconst MAX_HEIGHT_MIN_VALUE_FALLBACK = '25rem';\n\nfunction getHeightStyles(view: RsCoreTypes.View, isFullscreen: boolean) {\n if (!view) return {};\n\n const {\n viewHeight,\n meta: {\n basicMode,\n height: { height, minHeight, maxHeight, maxHeightMinValueVariable, deltaAdjustment = 0 } = {}\n }\n } = view;\n\n const maxHeightMinimumValue = maxHeightMinValueVariable\n ? `var(${maxHeightMinValueVariable}, ${MAX_HEIGHT_MIN_VALUE_FALLBACK})`\n : MAX_HEIGHT_MIN_VALUE_FALLBACK;\n\n const cardPadding = 'var(--rs-card-padding, 0px)';\n\n // Fullscreen mode overrides other height calculations\n if (isFullscreen) {\n return {\n height: 'auto',\n minHeight: 'auto',\n maxHeight: `calc(max(100dvh, ${maxHeightMinimumValue}) - ${cardPadding})`\n };\n }\n\n // Max-height calculations\n let calculatedMaxHeight = 'none';\n if (basicMode) {\n calculatedMaxHeight = DEFAULT_READONLY_TABLE_HEIGHT;\n }\n if (typeof maxHeight === 'number') {\n calculatedMaxHeight = `calc(max(${maxHeight}px, ${maxHeightMinimumValue}) - ${deltaAdjustment}px - ${cardPadding})`;\n }\n if (typeof maxHeight === 'string' && maxHeight.startsWith('--')) {\n calculatedMaxHeight = `calc(max(var(${maxHeight}, ${DEFAULT_READONLY_TABLE_HEIGHT}), ${maxHeightMinimumValue}) - ${deltaAdjustment}px - ${cardPadding})`;\n }\n\n // Height calculations\n // For landing pages stretch the repeating view to the max available height even though there might be less or no records\n let calculatedHeight = calculatedMaxHeight;\n if (basicMode) {\n calculatedHeight = 'auto';\n }\n if (height) {\n calculatedHeight = `calc(${height}px - ${deltaAdjustment}px - ${cardPadding})`;\n }\n if (viewHeight) {\n calculatedHeight = `calc(${viewHeight}px - ${deltaAdjustment}px - ${cardPadding})`;\n }\n\n return {\n height: calculatedHeight,\n minHeight: minHeight ? `${minHeight}px` : 'auto',\n maxHeight: calculatedMaxHeight\n };\n}\n\n// Exposes styles to be set on the RS template\nexport const generateRSHeightStyles = ({\n view,\n isFullscreen\n}: {\n view: RsCoreTypes.View;\n isFullscreen: boolean;\n}) => {\n const { height, minHeight, maxHeight } = getHeightStyles(view, isFullscreen);\n\n return css`\n display: flex;\n flex-direction: column;\n height: ${height};\n min-height: ${minHeight};\n max-height: ${maxHeight};\n `;\n};\n\n// Exposes styles to be set on the container that contains the data records and need to be expanded and collapsed based on records\nexport const generateRSDataContainerHeightStyles = () => {\n return css`\n display: flex;\n flex: 1 1 auto;\n overflow: hidden;\n `;\n};\n"]}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../Core/Utils/styles.ts"],"names":[],"mappings":"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","sourcesContent":["import { css } from 'styled-components';\n\nimport type { RsCoreTypes } from 'pega-repeating-structures-core';\n\nconst DEFAULT_READONLY_TABLE_HEIGHT = '600px';\nconst MAX_HEIGHT_MIN_VALUE_FALLBACK = '25rem';\n\nexport function getHeightStyles(view: RsCoreTypes.View, isFullscreen: boolean) {\n if (!view) return {};\n\n const {\n viewHeight,\n meta: {\n basicMode,\n height: { height, minHeight, maxHeight, maxHeightMinValueVariable, deltaAdjustment = 0 } = {}\n }\n } = view;\n\n const maxHeightMinimumValue = maxHeightMinValueVariable\n ? `var(${maxHeightMinValueVariable}, ${MAX_HEIGHT_MIN_VALUE_FALLBACK})`\n : MAX_HEIGHT_MIN_VALUE_FALLBACK;\n\n const cardPadding = 'var(--rs-card-padding, 0px)';\n\n // Fullscreen mode overrides other height calculations\n if (isFullscreen) {\n return {\n // Stretch the fullscreen table using --content-height-in-view, which Fullscreen provides after portaling the table.\n height: `calc(var(--content-height-in-view) - ${cardPadding})`,\n minHeight: 'auto',\n maxHeight: `calc(max(100dvh, ${maxHeightMinimumValue}) - ${cardPadding})`\n };\n }\n\n // Max-height calculations\n let calculatedMaxHeight = 'none';\n if (basicMode) {\n calculatedMaxHeight = DEFAULT_READONLY_TABLE_HEIGHT;\n }\n if (typeof maxHeight === 'number') {\n calculatedMaxHeight = `calc(max(${maxHeight}px, ${maxHeightMinimumValue}) - ${deltaAdjustment}px - ${cardPadding})`;\n }\n if (typeof maxHeight === 'string' && maxHeight.startsWith('--')) {\n calculatedMaxHeight = `calc(max(var(${maxHeight}, ${DEFAULT_READONLY_TABLE_HEIGHT}), ${maxHeightMinimumValue}) - ${deltaAdjustment}px - ${cardPadding})`;\n }\n\n // Height calculations\n // For landing pages stretch the repeating view to the max available height even though there might be less or no records\n let calculatedHeight = calculatedMaxHeight;\n if (basicMode) {\n calculatedHeight = 'auto';\n }\n if (typeof height === 'string' && height.startsWith('--')) {\n // CSS variable: explicit height takes precedence over basicMode.\n calculatedHeight = `calc(var(${height}) - ${deltaAdjustment}px - ${cardPadding})`;\n } else if (typeof height === 'number') {\n calculatedHeight = `calc(${height}px - ${deltaAdjustment}px - ${cardPadding})`;\n }\n if (viewHeight) {\n calculatedHeight = `calc(${viewHeight}px - ${deltaAdjustment}px - ${cardPadding})`;\n }\n\n return {\n height: calculatedHeight,\n minHeight: minHeight ? `${minHeight}px` : 'auto',\n maxHeight: calculatedMaxHeight\n };\n}\n\n// Exposes styles to be set on the RS template\nexport const generateRSHeightStyles = ({\n view,\n isFullscreen\n}: {\n view: RsCoreTypes.View;\n isFullscreen: boolean;\n}) => {\n const { height, minHeight, maxHeight } = getHeightStyles(view, isFullscreen);\n\n return css`\n display: flex;\n flex-direction: column;\n height: ${height};\n min-height: ${minHeight};\n max-height: ${maxHeight};\n `;\n};\n\n// Exposes styles to be set on the container that contains the data records and need to be expanded and collapsed based on records\nexport const generateRSDataContainerHeightStyles = () => {\n return css`\n display: flex;\n flex: 1 1 auto;\n overflow: hidden;\n `;\n};\n"]}
@@ -1,9 +1,10 @@
1
1
  export const CellIcon: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("@pega/cosmos-react-core").IconProps & import("styled-components/dist/types").BaseObject, import("styled-components/dist/types").BaseObject>> & string & Omit<import("react").ForwardRefExoticComponent<import("@pega/cosmos-react-core").IconProps>, keyof import("react").Component<any, {}, any>>;
2
2
  declare const _default: import("react").MemoExoticComponent<typeof CellWrapper>;
3
3
  export default _default;
4
- declare function CellWrapper({ column, level }: {
4
+ declare function CellWrapper({ column, level, onMasterDetailKeyDown }: {
5
5
  column: any;
6
6
  level?: number | undefined;
7
+ onMasterDetailKeyDown: any;
7
8
  }): import("react/jsx-runtime").JSX.Element;
8
9
  declare namespace CellWrapper {
9
10
  namespace propTypes {
@@ -11,6 +12,7 @@ declare namespace CellWrapper {
11
12
  [x: string]: any;
12
13
  }>;
13
14
  let level: PropTypes.Requireable<number>;
15
+ let onMasterDetailKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
14
16
  }
15
17
  }
16
18
  import PropTypes from 'prop-types';
@@ -1 +1 @@
1
- {"version":3,"file":"CellWrapper.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Table/CellWrapper.jsx"],"names":[],"mappings":"AAyCA,wbAkBG;;;AAEH;;;4CAyDC;;;;;;;;;sBAtHqB,YAAY"}
1
+ {"version":3,"file":"CellWrapper.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Table/CellWrapper.jsx"],"names":[],"mappings":"AAyCA,wbAkBG;;;AAEH;;;;4CA0DC;;;;;;;;;;sBAvHqB,YAAY"}
@@ -48,7 +48,7 @@ export const CellIcon = styled(Icon)(({ cellAlign }) => {
48
48
  }
49
49
  `;
50
50
  });
51
- function CellWrapper({ column, level = 0 }) {
51
+ function CellWrapper({ column, level = 0, onMasterDetailKeyDown }) {
52
52
  const ref = useRef();
53
53
  const { field: { cellAlign, type: fieldType }, isCustomColumn, isLastColumn, isFirstVisualColumn, getCellStyleFormat } = column;
54
54
  const { classList, style: cellStyle, ...restProps } = column.getUIProps();
@@ -66,11 +66,12 @@ function CellWrapper({ column, level = 0 }) {
66
66
  'cell-first': isFirstVisualColumn,
67
67
  'cell-last-frozen': column.lastFrozen,
68
68
  'column-type-action': fieldType === FieldType.ACTION_FIELD_TYPE
69
- }, !isCustomColumn && cellAlign && CELL_ALIGN_CLASSES[cellAlign]), style: cellStyles, ref: ref, tabIndex: -1, "data-style-format": styleFormatId, children: [_jsx(RenderingEngine, { style: renderingEngineStyles, highlighter: true, ...column.getRenderingEngineProps(), context: context }), cellIconProps && _jsx(CellIcon, { ...cellIconProps, cellAlign: cellAlign, set: 'budicon' }), styleFormatId && (_jsx(VisuallyHiddenText, { id: styleFormatId, children: `,${translate('state')}: ${styleFormatLabel},` }))] }));
69
+ }, !isCustomColumn && cellAlign && CELL_ALIGN_CLASSES[cellAlign]), style: cellStyles, ref: ref, tabIndex: -1, onKeyDownCapture: onMasterDetailKeyDown, "data-style-format": styleFormatId, children: [_jsx(RenderingEngine, { style: renderingEngineStyles, highlighter: true, ...column.getRenderingEngineProps(), context: context }), cellIconProps && _jsx(CellIcon, { ...cellIconProps, cellAlign: cellAlign, set: 'budicon' }), styleFormatId && (_jsx(VisuallyHiddenText, { id: styleFormatId, children: `,${translate('state')}: ${styleFormatLabel},` }))] }));
70
70
  }
71
71
  CellWrapper.propTypes = {
72
72
  column: PropTypes.objectOf(PropTypes.any),
73
- level: PropTypes.number
73
+ level: PropTypes.number,
74
+ onMasterDetailKeyDown: PropTypes.func
74
75
  };
75
76
  export default memo(CellWrapper);
76
77
  //# sourceMappingURL=CellWrapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CellWrapper.js","sourceRoot":"","sources":["../../../../Core/Views/Table/CellWrapper.jsx"],"names":[],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport { memo, useCallback, useRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { FieldType } from 'pega-repeating-structures-core';\nimport { Icon, VisuallyHiddenText } from '@pega/cosmos-react-core';\n\nimport { createClassName as cx } from '../../Utils';\nimport RenderingEngine from '../../Components/RenderingEngine/RenderCell';\nimport { CELL_ALIGN_CLASSES } from '../../constants';\nimport { hierarchicalgroupheaderleftdisplacement } from '../../Components/HierarchicalGroupRenderer';\nimport useTranslate from '../../Hooks/useTranslate';\n\nconst getStyles = (column, level, styleFormatConfig) => {\n const {\n isFirstDataColumn,\n parent,\n field: { idHash, cellAlign }\n } = column;\n const { backgroundColor, icon: cellIconProps, foregroundColor } = styleFormatConfig;\n\n const cellStyles = {\n left: `var(--col-left-${idHash})`,\n order: `var(--col-order-${idHash})`,\n width: `var(--col-width-${idHash})`,\n ...(backgroundColor && { backgroundColor }),\n ...(isFirstDataColumn && parent?.hierarchicalGroupEnabled && { paddingLeft: 0 })\n };\n\n const renderingEngineStyles = {\n ...(isFirstDataColumn &&\n parent?.hierarchicalGroupEnabled && {\n paddingLeft: hierarchicalgroupheaderleftdisplacement(level)\n }),\n ...(cellIconProps && { order: cellAlign === 'right' ? 2 : 1 }),\n ...(foregroundColor && { color: foregroundColor })\n };\n\n return { cellStyles, renderingEngineStyles };\n};\n\nexport const CellIcon = styled(Icon)(({ cellAlign }) => {\n // icon size 12px\n return css`\n /*\n * Icon styles sometimes fail to override correctly. Increasing specificity ensures consistent override behavior.\n * https://styled-components.com/docs/faqs#how-can-i-override-styles-with-higher-specificity\n */\n &&& {\n height: 0.75rem;\n width: 0.75rem;\n min-width: 0.75rem;\n min-height: 0.75rem;\n margin-inline-end: ${cellAlign !== 'right' && '0.5rem'};\n margin-inline-start: ${cellAlign === 'right' && '0.5rem'};\n order: ${cellAlign === 'right' ? 1 : 2};\n flex-shrink: 0;\n }\n `;\n});\n\nfunction CellWrapper({ column, level = 0 }) {\n const ref = useRef();\n const {\n field: { cellAlign, type: fieldType },\n isCustomColumn,\n isLastColumn,\n isFirstVisualColumn,\n getCellStyleFormat\n } = column;\n const { classList, style: cellStyle, ...restProps } = column.getUIProps();\n const {\n config: styleFormatConfig = {},\n label: styleFormatLabel,\n id: styleFormatId\n } = getCellStyleFormat() ?? {};\n const { foregroundColor, icon: cellIconProps } = styleFormatConfig;\n const context = {\n getElement: () => ref.current,\n getStyles: useCallback(() => ({ foregroundColor }), [foregroundColor])\n };\n const { cellStyles, renderingEngineStyles } = getStyles(column, level, styleFormatConfig);\n const [translate] = useTranslate();\n\n return (\n <div\n {...restProps}\n className={cx(\n 'cell',\n ...classList,\n {\n 'cell-fixed': column.frozen,\n 'cell-last': isLastColumn,\n 'cell-first': isFirstVisualColumn,\n 'cell-last-frozen': column.lastFrozen,\n 'column-type-action': fieldType === FieldType.ACTION_FIELD_TYPE\n },\n !isCustomColumn && cellAlign && CELL_ALIGN_CLASSES[cellAlign]\n )}\n style={cellStyles}\n ref={ref}\n tabIndex={-1}\n data-style-format={styleFormatId}\n >\n <RenderingEngine\n style={renderingEngineStyles}\n highlighter\n {...column.getRenderingEngineProps()}\n context={context}\n />\n {cellIconProps && <CellIcon {...cellIconProps} cellAlign={cellAlign} set='budicon' />}\n {styleFormatId && (\n <VisuallyHiddenText\n id={styleFormatId}\n >{`,${translate('state')}: ${styleFormatLabel},`}</VisuallyHiddenText>\n )}\n </div>\n );\n}\n\nCellWrapper.propTypes = {\n column: PropTypes.objectOf(PropTypes.any),\n level: PropTypes.number\n};\n\nexport default memo(CellWrapper);\n"]}
1
+ {"version":3,"file":"CellWrapper.js","sourceRoot":"","sources":["../../../../Core/Views/Table/CellWrapper.jsx"],"names":[],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport { memo, useCallback, useRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { FieldType } from 'pega-repeating-structures-core';\nimport { Icon, VisuallyHiddenText } from '@pega/cosmos-react-core';\n\nimport { createClassName as cx } from '../../Utils';\nimport RenderingEngine from '../../Components/RenderingEngine/RenderCell';\nimport { CELL_ALIGN_CLASSES } from '../../constants';\nimport { hierarchicalgroupheaderleftdisplacement } from '../../Components/HierarchicalGroupRenderer';\nimport useTranslate from '../../Hooks/useTranslate';\n\nconst getStyles = (column, level, styleFormatConfig) => {\n const {\n isFirstDataColumn,\n parent,\n field: { idHash, cellAlign }\n } = column;\n const { backgroundColor, icon: cellIconProps, foregroundColor } = styleFormatConfig;\n\n const cellStyles = {\n left: `var(--col-left-${idHash})`,\n order: `var(--col-order-${idHash})`,\n width: `var(--col-width-${idHash})`,\n ...(backgroundColor && { backgroundColor }),\n ...(isFirstDataColumn && parent?.hierarchicalGroupEnabled && { paddingLeft: 0 })\n };\n\n const renderingEngineStyles = {\n ...(isFirstDataColumn &&\n parent?.hierarchicalGroupEnabled && {\n paddingLeft: hierarchicalgroupheaderleftdisplacement(level)\n }),\n ...(cellIconProps && { order: cellAlign === 'right' ? 2 : 1 }),\n ...(foregroundColor && { color: foregroundColor })\n };\n\n return { cellStyles, renderingEngineStyles };\n};\n\nexport const CellIcon = styled(Icon)(({ cellAlign }) => {\n // icon size 12px\n return css`\n /*\n * Icon styles sometimes fail to override correctly. Increasing specificity ensures consistent override behavior.\n * https://styled-components.com/docs/faqs#how-can-i-override-styles-with-higher-specificity\n */\n &&& {\n height: 0.75rem;\n width: 0.75rem;\n min-width: 0.75rem;\n min-height: 0.75rem;\n margin-inline-end: ${cellAlign !== 'right' && '0.5rem'};\n margin-inline-start: ${cellAlign === 'right' && '0.5rem'};\n order: ${cellAlign === 'right' ? 1 : 2};\n flex-shrink: 0;\n }\n `;\n});\n\nfunction CellWrapper({ column, level = 0, onMasterDetailKeyDown }) {\n const ref = useRef();\n const {\n field: { cellAlign, type: fieldType },\n isCustomColumn,\n isLastColumn,\n isFirstVisualColumn,\n getCellStyleFormat\n } = column;\n const { classList, style: cellStyle, ...restProps } = column.getUIProps();\n const {\n config: styleFormatConfig = {},\n label: styleFormatLabel,\n id: styleFormatId\n } = getCellStyleFormat() ?? {};\n const { foregroundColor, icon: cellIconProps } = styleFormatConfig;\n const context = {\n getElement: () => ref.current,\n getStyles: useCallback(() => ({ foregroundColor }), [foregroundColor])\n };\n const { cellStyles, renderingEngineStyles } = getStyles(column, level, styleFormatConfig);\n const [translate] = useTranslate();\n\n return (\n <div\n {...restProps}\n className={cx(\n 'cell',\n ...classList,\n {\n 'cell-fixed': column.frozen,\n 'cell-last': isLastColumn,\n 'cell-first': isFirstVisualColumn,\n 'cell-last-frozen': column.lastFrozen,\n 'column-type-action': fieldType === FieldType.ACTION_FIELD_TYPE\n },\n !isCustomColumn && cellAlign && CELL_ALIGN_CLASSES[cellAlign]\n )}\n style={cellStyles}\n ref={ref}\n tabIndex={-1}\n onKeyDownCapture={onMasterDetailKeyDown}\n data-style-format={styleFormatId}\n >\n <RenderingEngine\n style={renderingEngineStyles}\n highlighter\n {...column.getRenderingEngineProps()}\n context={context}\n />\n {cellIconProps && <CellIcon {...cellIconProps} cellAlign={cellAlign} set='budicon' />}\n {styleFormatId && (\n <VisuallyHiddenText\n id={styleFormatId}\n >{`,${translate('state')}: ${styleFormatLabel},`}</VisuallyHiddenText>\n )}\n </div>\n );\n}\n\nCellWrapper.propTypes = {\n column: PropTypes.objectOf(PropTypes.any),\n level: PropTypes.number,\n onMasterDetailKeyDown: PropTypes.func\n};\n\nexport default memo(CellWrapper);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Row.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Table/Row.jsx"],"names":[],"mappings":";;AAKA;;;;;4CAcC;;;;;;;;;;;sBAnBqB,YAAY"}
1
+ {"version":3,"file":"Row.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Table/Row.jsx"],"names":[],"mappings":";;AAYA;;;;;4CAoCC;;;;;;;;;;;sBAhDqB,YAAY"}
@@ -1,17 +1,31 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import PropTypes from 'prop-types';
3
3
  import { memo } from 'react';
4
+ import { createClassName as cx } from '../../Utils';
5
+ import { MASTER_DETAIL_INDICATOR_CLASS, MASTER_DETAIL_PREVIEW_HIGHLIGHT_CLASS } from '../../constants';
4
6
  import CellWrapper from './CellWrapper';
7
+ import useMasterDetailRow from './useMasterDetailRow';
5
8
  function Row({ row, columns, level = 0, dataIndex }) {
6
- const uiProps = { ...row.getUIProps(), ...(dataIndex >= 0 ? { 'data-index': dataIndex } : {}) };
7
- return (_jsx("div", { ...uiProps, children: [...columns]
8
- .sort((colA, colB) => colA.order - colB.order)
9
- .map(column => {
10
- column.setExecutionContext(row);
11
- if (column.hidden)
12
- return null;
13
- return _jsx(CellWrapper, { row: row, column: column, level: level }, column.field.id);
14
- }) }));
9
+ const rowUiProps = row.getUIProps();
10
+ const { isMasterDetailEnabled, onRowClick, onCellKeyDownCapture, rowElementRef } = useMasterDetailRow(row);
11
+ const isPreviewHighlighted = !!row.masterDetailActive;
12
+ const uiProps = {
13
+ ...rowUiProps,
14
+ ...(dataIndex >= 0 ? { 'data-index': dataIndex } : {}),
15
+ className: cx(rowUiProps.className, {
16
+ [MASTER_DETAIL_PREVIEW_HIGHLIGHT_CLASS]: isPreviewHighlighted
17
+ })
18
+ };
19
+ return (
20
+ // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions -- TableA11y owns grid navigation while Row owns Master Detail activation.
21
+ _jsxs("div", { ...uiProps, ref: rowElementRef, onClick: isMasterDetailEnabled ? onRowClick : undefined, children: [[...columns]
22
+ .sort((colA, colB) => colA.order - colB.order)
23
+ .map(column => {
24
+ column.setExecutionContext(row);
25
+ if (column.hidden)
26
+ return null;
27
+ return (_jsx(CellWrapper, { row: row, column: column, level: level, onMasterDetailKeyDown: isMasterDetailEnabled ? onCellKeyDownCapture : undefined }, column.field.id));
28
+ }), isPreviewHighlighted && (_jsx("span", { className: MASTER_DETAIL_INDICATOR_CLASS, "aria-hidden": 'true' }))] }));
15
29
  }
16
30
  Row.propTypes = {
17
31
  columns: PropTypes.arrayOf(PropTypes.any),
@@ -1 +1 @@
1
- {"version":3,"file":"Row.js","sourceRoot":"","sources":["../../../../Core/Views/Table/Row.jsx"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAE7B,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,SAAS,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,EAAE,SAAS,EAAE;IACjD,MAAM,OAAO,GAAG,EAAE,GAAG,GAAG,CAAC,UAAU,EAAE,EAAE,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAEhG,OAAO,CACL,iBAAS,OAAO,YACb,CAAC,GAAG,OAAO,CAAC;aACV,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;aAC7C,GAAG,CAAC,MAAM,CAAC,EAAE;YACZ,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,MAAM,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAC;YAC/B,OAAO,KAAC,WAAW,IAAuB,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,IAAvD,MAAM,CAAC,KAAK,CAAC,EAAE,CAA4C,CAAC;QACvF,CAAC,CAAC,GACA,CACP,CAAC;AACJ,CAAC;AAED,GAAG,CAAC,SAAS,GAAG;IACd,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC;IACzC,GAAG,EAAE,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC;IACtC,KAAK,EAAE,SAAS,CAAC,MAAM;IACvB,SAAS,EAAE,SAAS,CAAC,MAAM;CAC5B,CAAC;AAEF,eAAe,IAAI,CAAC,GAAG,CAAC,CAAC","sourcesContent":["import PropTypes from 'prop-types';\nimport { memo } from 'react';\n\nimport CellWrapper from './CellWrapper';\n\nfunction Row({ row, columns, level = 0, dataIndex }) {\n const uiProps = { ...row.getUIProps(), ...(dataIndex >= 0 ? { 'data-index': dataIndex } : {}) };\n\n return (\n <div {...uiProps}>\n {[...columns]\n .sort((colA, colB) => colA.order - colB.order)\n .map(column => {\n column.setExecutionContext(row);\n if (column.hidden) return null;\n return <CellWrapper key={column.field.id} row={row} column={column} level={level} />;\n })}\n </div>\n );\n}\n\nRow.propTypes = {\n columns: PropTypes.arrayOf(PropTypes.any),\n row: PropTypes.objectOf(PropTypes.any),\n level: PropTypes.number,\n dataIndex: PropTypes.number\n};\n\nexport default memo(Row);\n"]}
1
+ {"version":3,"file":"Row.js","sourceRoot":"","sources":["../../../../Core/Views/Table/Row.jsx"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAE7B,OAAO,EAAE,eAAe,IAAI,EAAE,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EACL,6BAA6B,EAC7B,qCAAqC,EACtC,MAAM,iBAAiB,CAAC;AAEzB,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AAEtD,SAAS,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,EAAE,SAAS,EAAE;IACjD,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;IACpC,MAAM,EAAE,qBAAqB,EAAE,UAAU,EAAE,oBAAoB,EAAE,aAAa,EAAE,GAC9E,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAC1B,MAAM,oBAAoB,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC;IACtD,MAAM,OAAO,GAAG;QACd,GAAG,UAAU;QACb,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE;YAClC,CAAC,qCAAqC,CAAC,EAAE,oBAAoB;SAC9D,CAAC;KACH,CAAC;IAEF,OAAO;IACL,qLAAqL;IACrL,kBAAS,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,aAC1F,CAAC,GAAG,OAAO,CAAC;iBACV,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;iBAC7C,GAAG,CAAC,MAAM,CAAC,EAAE;gBACZ,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;gBAChC,IAAI,MAAM,CAAC,MAAM;oBAAE,OAAO,IAAI,CAAC;gBAC/B,OAAO,CACL,KAAC,WAAW,IAEV,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,qBAAqB,EAAE,qBAAqB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS,IAJ1E,MAAM,CAAC,KAAK,CAAC,EAAE,CAKpB,CACH,CAAC;YACJ,CAAC,CAAC,EACH,oBAAoB,IAAI,CACvB,eAAM,SAAS,EAAE,6BAA6B,iBAAc,MAAM,GAAG,CACtE,IACG,CACP,CAAC;AACJ,CAAC;AAED,GAAG,CAAC,SAAS,GAAG;IACd,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC;IACzC,GAAG,EAAE,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC;IACtC,KAAK,EAAE,SAAS,CAAC,MAAM;IACvB,SAAS,EAAE,SAAS,CAAC,MAAM;CAC5B,CAAC;AAEF,eAAe,IAAI,CAAC,GAAG,CAAC,CAAC","sourcesContent":["import PropTypes from 'prop-types';\nimport { memo } from 'react';\n\nimport { createClassName as cx } from '../../Utils';\nimport {\n MASTER_DETAIL_INDICATOR_CLASS,\n MASTER_DETAIL_PREVIEW_HIGHLIGHT_CLASS\n} from '../../constants';\n\nimport CellWrapper from './CellWrapper';\nimport useMasterDetailRow from './useMasterDetailRow';\n\nfunction Row({ row, columns, level = 0, dataIndex }) {\n const rowUiProps = row.getUIProps();\n const { isMasterDetailEnabled, onRowClick, onCellKeyDownCapture, rowElementRef } =\n useMasterDetailRow(row);\n const isPreviewHighlighted = !!row.masterDetailActive;\n const uiProps = {\n ...rowUiProps,\n ...(dataIndex >= 0 ? { 'data-index': dataIndex } : {}),\n className: cx(rowUiProps.className, {\n [MASTER_DETAIL_PREVIEW_HIGHLIGHT_CLASS]: isPreviewHighlighted\n })\n };\n\n return (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions -- TableA11y owns grid navigation while Row owns Master Detail activation.\n <div {...uiProps} ref={rowElementRef} onClick={isMasterDetailEnabled ? onRowClick : undefined}>\n {[...columns]\n .sort((colA, colB) => colA.order - colB.order)\n .map(column => {\n column.setExecutionContext(row);\n if (column.hidden) return null;\n return (\n <CellWrapper\n key={column.field.id}\n row={row}\n column={column}\n level={level}\n onMasterDetailKeyDown={isMasterDetailEnabled ? onCellKeyDownCapture : undefined}\n />\n );\n })}\n {isPreviewHighlighted && (\n <span className={MASTER_DETAIL_INDICATOR_CLASS} aria-hidden='true' />\n )}\n </div>\n );\n}\n\nRow.propTypes = {\n columns: PropTypes.arrayOf(PropTypes.any),\n row: PropTypes.objectOf(PropTypes.any),\n level: PropTypes.number,\n dataIndex: PropTypes.number\n};\n\nexport default memo(Row);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"StyledTableContainer.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Table/StyledTableContainer.jsx"],"names":[],"mappings":";AAyBA;;yJAkhCG"}
1
+ {"version":3,"file":"StyledTableContainer.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Table/StyledTableContainer.jsx"],"names":[],"mappings":";AA4CA;;yJAwjCG"}
@@ -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 selectedRowColor = tryCatch(() => mix(0.85, theme.base.palette['primary-background'], theme.base.palette.interactive));
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
- /* stylelint-disable-next-line unit-allowed-list */
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
- /* stylelint-disable-next-line unit-allowed-list */
483
- width: 14px;
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: 6;
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
- background-color: ${selectedRowColor};
924
-
925
- > .cell,
926
- .cell-fixed,
927
- .cell-action {
928
- background-color: ${selectedRowColor};
929
- }
937
+ ${rowBackground(highlightedRowColor)}
930
938
  }
931
- .row-on-hover:hover {
932
- background-color: ${lightGreyColor};
933
- input.checkbox-on-hover + label {
934
- opacity: 1;
939
+ ${isMasterDetailEnabled &&
940
+ css `
941
+ ${dataRowSelector}:hover {
942
+ ${rowBackground(highlightedRowColor)}
935
943
  }
936
944
 
937
- > .cell,
938
- .cell-fixed,
939
- .cell-action {
940
- background-color: ${lightGreyColor};
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};