@pega/lists-react 10.0.0-build.9.10 → 10.0.0-build.9.12
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/Card/index.d.ts +0 -1
- package/lib/Core/Components/Card/index.d.ts.map +1 -1
- package/lib/Core/Components/Card/index.js +0 -1
- package/lib/Core/Components/Card/index.js.map +1 -1
- package/lib/Core/Components/DefaultComponents/CellRenderers/RowActionMenu.d.ts.map +1 -1
- package/lib/Core/Components/DefaultComponents/CellRenderers/RowActionMenu.js +6 -70
- package/lib/Core/Components/DefaultComponents/CellRenderers/RowActionMenu.js.map +1 -1
- package/lib/Core/Components/DefaultComponents/CellRenderers/RowSelectHandle.js +9 -2
- package/lib/Core/Components/DefaultComponents/CellRenderers/RowSelectHandle.js.map +1 -1
- package/lib/Core/Components/RenderingEngine/ComponentResolverFactory.d.ts +1 -0
- package/lib/Core/Components/RenderingEngine/ComponentResolverFactory.d.ts.map +1 -1
- package/lib/Core/Components/RenderingEngine/ComponentResolverFactory.js +6 -1
- package/lib/Core/Components/RenderingEngine/ComponentResolverFactory.js.map +1 -1
- package/lib/Core/Components/Virtualise/VirtualizeInfinite.js +4 -2
- package/lib/Core/Components/Virtualise/VirtualizeInfinite.js.map +1 -1
- package/lib/Core/Components/Virtualise/index.js +5 -3
- package/lib/Core/Components/Virtualise/index.js.map +1 -1
- package/lib/Core/Utils/fetchRowActions.d.ts +16 -0
- package/lib/Core/Utils/fetchRowActions.d.ts.map +1 -0
- package/lib/Core/Utils/fetchRowActions.js +60 -0
- package/lib/Core/Utils/fetchRowActions.js.map +1 -0
- package/lib/Core/Utils/styles.d.ts +9 -0
- package/lib/Core/Utils/styles.d.ts.map +1 -1
- package/lib/Core/Utils/styles.js +3 -2
- package/lib/Core/Utils/styles.js.map +1 -1
- package/lib/Core/Views/Gallery/Components/GalleryCard.d.ts.map +1 -1
- package/lib/Core/Views/Gallery/Components/GalleryCard.js +7 -4
- package/lib/Core/Views/Gallery/Components/GalleryCard.js.map +1 -1
- package/lib/Core/Views/Gallery/Components/GalleryCheckboxCard.d.ts.map +1 -1
- package/lib/Core/Views/Gallery/Components/GalleryCheckboxCard.js +6 -3
- package/lib/Core/Views/Gallery/Components/GalleryCheckboxCard.js.map +1 -1
- package/lib/Core/Views/Kanban/KanbanCard.d.ts.map +1 -1
- package/lib/Core/Views/Kanban/KanbanCard.js +7 -4
- package/lib/Core/Views/Kanban/KanbanCard.js.map +1 -1
- package/lib/Core/Views/Table/CellWrapper.d.ts +3 -1
- package/lib/Core/Views/Table/CellWrapper.d.ts.map +1 -1
- package/lib/Core/Views/Table/CellWrapper.js +4 -3
- package/lib/Core/Views/Table/CellWrapper.js.map +1 -1
- package/lib/Core/Views/Table/Row.d.ts.map +1 -1
- package/lib/Core/Views/Table/Row.js +22 -10
- package/lib/Core/Views/Table/Row.js.map +1 -1
- package/lib/Core/Views/Table/StyledTableContainer.d.ts.map +1 -1
- package/lib/Core/Views/Table/StyledTableContainer.js +71 -19
- package/lib/Core/Views/Table/StyledTableContainer.js.map +1 -1
- package/lib/Core/Views/Table/VirtualizeWrapper.d.ts +3 -1
- package/lib/Core/Views/Table/VirtualizeWrapper.d.ts.map +1 -1
- package/lib/Core/Views/Table/VirtualizeWrapper.js +6 -5
- package/lib/Core/Views/Table/VirtualizeWrapper.js.map +1 -1
- package/lib/Core/Views/Table/index.d.ts.map +1 -1
- package/lib/Core/Views/Table/index.js +15 -6
- package/lib/Core/Views/Table/index.js.map +1 -1
- package/lib/Core/Views/Table/useMasterDetailCleanup.d.ts +11 -0
- package/lib/Core/Views/Table/useMasterDetailCleanup.d.ts.map +1 -0
- package/lib/Core/Views/Table/useMasterDetailCleanup.js +27 -0
- package/lib/Core/Views/Table/useMasterDetailCleanup.js.map +1 -0
- package/lib/Core/Views/Table/useMasterDetailHost.d.ts +14 -0
- package/lib/Core/Views/Table/useMasterDetailHost.d.ts.map +1 -0
- package/lib/Core/Views/Table/useMasterDetailHost.js +56 -0
- package/lib/Core/Views/Table/useMasterDetailHost.js.map +1 -0
- package/lib/Core/Views/Table/useMasterDetailRenderer.d.ts +13 -0
- package/lib/Core/Views/Table/useMasterDetailRenderer.d.ts.map +1 -0
- package/lib/Core/Views/Table/useMasterDetailRenderer.js +23 -0
- package/lib/Core/Views/Table/useMasterDetailRenderer.js.map +1 -0
- package/lib/Core/Views/Table/useMasterDetailRow.d.ts +9 -0
- package/lib/Core/Views/Table/useMasterDetailRow.d.ts.map +1 -0
- package/lib/Core/Views/Table/useMasterDetailRow.js +55 -0
- package/lib/Core/Views/Table/useMasterDetailRow.js.map +1 -0
- package/lib/Core/Views/Table/useMasterDetailState.d.ts +21 -0
- package/lib/Core/Views/Table/useMasterDetailState.d.ts.map +1 -0
- package/lib/Core/Views/Table/useMasterDetailState.js +33 -0
- package/lib/Core/Views/Table/useMasterDetailState.js.map +1 -0
- package/lib/Core/constants.d.ts +4 -0
- package/lib/Core/constants.d.ts.map +1 -1
- package/lib/Core/constants.js +4 -0
- package/lib/Core/constants.js.map +1 -1
- package/package.json +8 -7
- package/lib/Core/Components/Card/hooks/useRowActions.d.ts +0 -9
- package/lib/Core/Components/Card/hooks/useRowActions.d.ts.map +0 -1
- package/lib/Core/Components/Card/hooks/useRowActions.js +0 -32
- package/lib/Core/Components/Card/hooks/useRowActions.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../Core/Views/Table/index.jsx"],"names":[],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport { useCallback, useRef, useEffect } from 'react';\n\nimport { useLiveLog } from '@pega/cosmos-react-core/lib/hooks';\nimport { useFullscreenContext, useTheme } from '@pega/cosmos-react-core';\nimport { expandCollapseAllMeta } from 'pega-repeating-structures-core';\n\nimport { createClassName as cx } from '../../Utils';\nimport NotificationManager from '../../Components/NotificationManager';\nimport WarningBanner from '../../Components/WarningBanner';\nimport Toolbar from '../../Components/Toolbar';\nimport ContextMenuContainer from '../../Components/ContextMenu/ContextMenuContainer';\nimport LoadingIndicator from '../../Components/LoadingIndicator';\nimport TableFooter from '../../Components/Footer';\nimport RepeatingStructureA11y from '../../Components/A11y/RepeatingStructureA11y';\nimport RenderView from '../../Components/RenderingEngine/RenderView';\nimport { EXTERNAL_FILTERS, FOCUSABLE_SELECTORS, ACTIONABLE_SELECTORS } from '../../constants';\nimport useTranslate from '../../Hooks/useTranslate';\nimport RsCardWrapper from '../RsCardWrapper';\n\nimport GroupingHeaderCell from './GroupingHeaderCell';\nimport StyledTableContainer from './StyledTableContainer';\nimport TableA11y from './TableA11y';\nimport Body from './Body';\nimport Virtualiser from './VirtualizeWrapper';\nimport Headers from './Headers';\n\nconst contextMenuSelector = { query: '.cell:not([role=\"columnheader\"])' };\n\nfunction StyledTable({ view }) {\n const isFullscreen = !!useFullscreenContext()?.[0];\n const { columns, rows, groupHeaders, meta: { toolbarActions } = {} } = view;\n const rowHeight = 40;\n const footerHeight = 57;\n const isSmallOrAbove = view?.state?.responsive?.sm;\n const expandCollapseAllWidth = view.showGroupingExpandCollapseAll\n ? expandCollapseAllMeta.width\n : 0;\n\n const containerStyles = {\n '--row-height': `${rowHeight}px`,\n '--footer-height': `${footerHeight}px`,\n '--expand-collapse-all-width': `${expandCollapseAllWidth}px`\n };\n const renderHeader = useCallback(\n () => <Headers ref={view.setItemElement} columns={columns} isVisible={!!rows} />,\n [columns, rows, view]\n );\n const renderFooter = useCallback(() => <TableFooter view={view} />, [view]);\n const addAction = toolbarActions?.find(action => action.id === 'Add_Record');\n const theme = useTheme();\n const containerRef = useRef(null);\n const { announcePolite } = useLiveLog();\n const [translate] = useTranslate();\n const a11yRef = useRef(\n new TableA11y(\n {\n topFocusRef: '.top',\n bottomFocusRef: '.bottom',\n focusElementSelector: '.cell',\n parentElementSelector: '.row',\n aboveLoader: '.above-loader',\n belowLoader: '.below-loader',\n expandCollpaseAll: '.expand-collapse-all',\n stickyGroupHeaderSelector: '.stickyGroupHeader',\n aggregateCell: '.aggregateCell',\n tableLoader: '.table-loader',\n footer: '.footer',\n addActionSelector: addAction ? `[aria-label=\"${addAction.text}\"]` : undefined\n },\n FOCUSABLE_SELECTORS,\n {\n TAB: 9,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40\n },\n null,\n announcePolite,\n translate,\n ACTIONABLE_SELECTORS,\n translate('Interactive content')\n )\n );\n\n useEffect(() => {\n a11yRef.current.setContainer(containerRef.current);\n\n return () => {\n containerRef.current = null;\n a11yRef.current = null;\n };\n }, []);\n\n useEffect(() => {\n a11yRef.current.itemsLoadedCallback();\n });\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n const handler = e => a11yRef.current.a11yHandler(e);\n container.addEventListener('keydown', handler);\n return () => container.removeEventListener('keydown', handler);\n }, []);\n\n const onClickHandler = useCallback(e => {\n const pointerType = e.nativeEvent.pointerType;\n if (pointerType) {\n a11yRef.current.clickHandler(e);\n }\n }, []);\n\n return (\n <RsCardWrapper>\n <StyledTableContainer\n style={containerStyles}\n data-test-id='table'\n data-testid='table'\n className={cx('t-container', {\n 'show-expand-collapse-all': view.showGroupingExpandCollapseAll\n })}\n theme={theme}\n view={view}\n isFullscreen={isFullscreen}\n >\n <WarningBanner warningMessages={view.warningMessages} />\n <Toolbar view={view} />\n <RenderView type={EXTERNAL_FILTERS} view={view} />\n <NotificationManager view={view} />\n <RepeatingStructureA11y view={view} a11yRef={a11yRef}>\n {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events */}\n <div\n className={cx('container', view.className, {\n 'small-screen-table': !isSmallOrAbove\n })}\n ref={containerRef}\n {...view.getUIProps()}\n onClick={onClickHandler}\n onFocusCapture={e => a11yRef.current.onFocusHandler(e)}\n onBlurCapture={e => a11yRef.current.onBlurHandler(e)}\n >\n {view.state?.groups?.length ? (\n <>\n <GroupingHeaderCell view={view} />\n <Virtualiser\n id='rootVirtualiser'\n view={view}\n renderHeader={renderHeader}\n renderFooter={renderFooter}\n isFullscreen={isFullscreen}\n >\n <Body\n groupHeaders={groupHeaders}\n columns={columns}\n hierarchicalGroupEnabled={view.hierarchicalGroupEnabled}\n />\n </Virtualiser>\n </>\n ) : (\n <Virtualiser\n id='rootVirtualiser'\n view={view}\n renderHeader={renderHeader}\n renderFooter={renderFooter}\n isFullscreen={isFullscreen}\n useVariableRowHeightVirtualization\n />\n )}\n <LoadingIndicator view={view} show={!rows || !!view.isLoading} />\n <ContextMenuContainer view={view} selector={contextMenuSelector} />\n </div>\n </RepeatingStructureA11y>\n </StyledTableContainer>\n </RsCardWrapper>\n );\n}\n\nStyledTable.propTypes = {\n view: PropTypes.objectOf(PropTypes.any).isRequired\n};\n\nexport default StyledTable;\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../Core/Views/Table/index.jsx"],"names":[],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport { useCallback, useRef, useEffect } from 'react';\n\nimport { useLiveLog } from '@pega/cosmos-react-core/lib/hooks';\nimport { useFullscreenContext, useTheme } from '@pega/cosmos-react-core';\nimport { MasterDetail } from '@pega/cosmos-react-work';\nimport { expandCollapseAllMeta } from 'pega-repeating-structures-core';\n\nimport { createClassName as cx } from '../../Utils';\nimport NotificationManager from '../../Components/NotificationManager';\nimport WarningBanner from '../../Components/WarningBanner';\nimport Toolbar from '../../Components/Toolbar';\nimport ContextMenuContainer from '../../Components/ContextMenu/ContextMenuContainer';\nimport LoadingIndicator from '../../Components/LoadingIndicator';\nimport TableFooter from '../../Components/Footer';\nimport RepeatingStructureA11y from '../../Components/A11y/RepeatingStructureA11y';\nimport RenderView from '../../Components/RenderingEngine/RenderView';\nimport { EXTERNAL_FILTERS, FOCUSABLE_SELECTORS, ACTIONABLE_SELECTORS } from '../../constants';\nimport useTranslate from '../../Hooks/useTranslate';\nimport RsCardWrapper from '../RsCardWrapper';\n\nimport GroupingHeaderCell from './GroupingHeaderCell';\nimport StyledTableContainer from './StyledTableContainer';\nimport TableA11y from './TableA11y';\nimport Body from './Body';\nimport Virtualiser from './VirtualizeWrapper';\nimport Headers from './Headers';\nimport useMasterDetailHost from './useMasterDetailHost';\n\nconst contextMenuSelector = { query: '.cell:not([role=\"columnheader\"])' };\nconst MASTER_DETAIL_MIN_HEIGHT = '16rem';\n\nfunction StyledTable({ view }) {\n const isFullscreen = !!useFullscreenContext()?.[0];\n const {\n columns,\n rows,\n groupHeaders,\n meta: { toolbarActions, masterDetail: masterDetailConfig } = {}\n } = view;\n const isMasterDetail = !!masterDetailConfig;\n const minHeight = isMasterDetail ? MASTER_DETAIL_MIN_HEIGHT : undefined;\n\n const rowHeight = 40;\n const footerHeight = 57;\n const isSmallOrAbove = view?.state?.responsive?.sm;\n const expandCollapseAllWidth = view.showGroupingExpandCollapseAll\n ? expandCollapseAllMeta.width\n : 0;\n\n const containerStyles = {\n '--row-height': `${rowHeight}px`,\n '--footer-height': `${footerHeight}px`,\n '--expand-collapse-all-width': `${expandCollapseAllWidth}px`\n };\n const renderHeader = useCallback(\n () => <Headers ref={view.setItemElement} columns={columns} isVisible={!!rows} />,\n [columns, rows, view]\n );\n const renderFooter = useCallback(() => <TableFooter view={view} />, [view]);\n const addAction = toolbarActions?.find(action => action.id === 'Add_Record');\n const theme = useTheme();\n const containerRef = useRef(null);\n const { announcePolite } = useLiveLog();\n const [translate] = useTranslate();\n const a11yRef = useRef(\n new TableA11y(\n {\n topFocusRef: '.top',\n bottomFocusRef: '.bottom',\n focusElementSelector: '.cell',\n parentElementSelector: '.row',\n aboveLoader: '.above-loader',\n belowLoader: '.below-loader',\n expandCollpaseAll: '.expand-collapse-all',\n stickyGroupHeaderSelector: '.stickyGroupHeader',\n aggregateCell: '.aggregateCell',\n tableLoader: '.table-loader',\n footer: '.footer',\n addActionSelector: addAction ? `[aria-label=\"${addAction.text}\"]` : undefined\n },\n FOCUSABLE_SELECTORS,\n {\n TAB: 9,\n ENTER: 13,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40\n },\n null,\n announcePolite,\n translate,\n ACTIONABLE_SELECTORS,\n translate('Interactive content')\n )\n );\n\n const masterDetail = useMasterDetailHost({ view });\n\n useEffect(() => {\n a11yRef.current.setContainer(containerRef.current);\n\n return () => {\n containerRef.current = null;\n a11yRef.current = null;\n };\n }, []);\n\n useEffect(() => {\n a11yRef.current.itemsLoadedCallback();\n });\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n const handler = e => a11yRef.current.a11yHandler(e);\n container.addEventListener('keydown', handler);\n return () => container.removeEventListener('keydown', handler);\n }, []);\n\n const onClickHandler = useCallback(e => {\n const pointerType = e.nativeEvent.pointerType;\n if (pointerType) {\n a11yRef.current.clickHandler(e);\n }\n }, []);\n\n const tableContent = (\n <RepeatingStructureA11y view={view} a11yRef={a11yRef}>\n {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events */}\n <div\n className={cx('container', view.className, {\n 'small-screen-table': !isSmallOrAbove\n })}\n ref={containerRef}\n {...view.getUIProps()}\n onClick={onClickHandler}\n onFocusCapture={e => a11yRef.current.onFocusHandler(e)}\n onBlurCapture={e => a11yRef.current.onBlurHandler(e)}\n >\n {view.state?.groups?.length ? (\n <>\n <GroupingHeaderCell view={view} />\n <Virtualiser\n id='rootVirtualiser'\n view={view}\n renderHeader={renderHeader}\n renderFooter={renderFooter}\n isFullscreen={isFullscreen}\n minHeight={minHeight}\n >\n <Body\n groupHeaders={groupHeaders}\n columns={columns}\n hierarchicalGroupEnabled={view.hierarchicalGroupEnabled}\n />\n </Virtualiser>\n </>\n ) : (\n <Virtualiser\n id='rootVirtualiser'\n view={view}\n renderHeader={renderHeader}\n renderFooter={renderFooter}\n isFullscreen={isFullscreen}\n minHeight={minHeight}\n useVariableRowHeightVirtualization\n />\n )}\n <LoadingIndicator view={view} show={!rows || !!view.isLoading} />\n <ContextMenuContainer view={view} selector={contextMenuSelector} />\n </div>\n </RepeatingStructureA11y>\n );\n\n const tableContainer = (\n <StyledTableContainer\n style={containerStyles}\n data-test-id='table'\n data-testid='table'\n className={cx('t-container', {\n 'show-expand-collapse-all': view.showGroupingExpandCollapseAll\n })}\n theme={theme}\n view={view}\n isFullscreen={isFullscreen}\n >\n <WarningBanner warningMessages={view.warningMessages} />\n <Toolbar view={view} />\n <RenderView type={EXTERNAL_FILTERS} view={view} />\n <NotificationManager view={view} />\n\n {isMasterDetail ? (\n <MasterDetail\n master={tableContent}\n detail={masterDetail.detail}\n {...masterDetail.masterDetailProps}\n />\n ) : (\n tableContent\n )}\n </StyledTableContainer>\n );\n\n return <RsCardWrapper>{tableContainer}</RsCardWrapper>;\n}\n\nStyledTable.propTypes = {\n view: PropTypes.objectOf(PropTypes.any).isRequired\n};\n\nexport default StyledTable;\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface UseMasterDetailCleanupResult {
|
|
2
|
+
registerDetailCleanup: (cleanup?: () => void) => void;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Owns final Master Detail cleanup for the stable table host.
|
|
6
|
+
*
|
|
7
|
+
* Detail renderers remount while navigating rows, so they register their platform-specific cleanup
|
|
8
|
+
* here and the host invokes it only when Master Detail closes or the host unmounts.
|
|
9
|
+
*/
|
|
10
|
+
export default function useMasterDetailCleanup(isMasterDetailOpen: boolean): UseMasterDetailCleanupResult;
|
|
11
|
+
//# sourceMappingURL=useMasterDetailCleanup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMasterDetailCleanup.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Table/useMasterDetailCleanup.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,4BAA4B;IAC3C,qBAAqB,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;CACvD;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAC5C,kBAAkB,EAAE,OAAO,GAC1B,4BAA4B,CAuB9B"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Owns final Master Detail cleanup for the stable table host.
|
|
4
|
+
*
|
|
5
|
+
* Detail renderers remount while navigating rows, so they register their platform-specific cleanup
|
|
6
|
+
* here and the host invokes it only when Master Detail closes or the host unmounts.
|
|
7
|
+
*/
|
|
8
|
+
export default function useMasterDetailCleanup(isMasterDetailOpen) {
|
|
9
|
+
const detailCleanupRef = useRef();
|
|
10
|
+
const wasMasterDetailOpenRef = useRef(false);
|
|
11
|
+
const registerDetailCleanup = useCallback((cleanup) => {
|
|
12
|
+
detailCleanupRef.current = cleanup;
|
|
13
|
+
}, []);
|
|
14
|
+
const runDetailCleanup = useCallback(() => {
|
|
15
|
+
detailCleanupRef.current?.();
|
|
16
|
+
detailCleanupRef.current = undefined;
|
|
17
|
+
}, []);
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
if (wasMasterDetailOpenRef.current && !isMasterDetailOpen) {
|
|
20
|
+
runDetailCleanup();
|
|
21
|
+
}
|
|
22
|
+
wasMasterDetailOpenRef.current = isMasterDetailOpen;
|
|
23
|
+
}, [isMasterDetailOpen, runDetailCleanup]);
|
|
24
|
+
useEffect(() => runDetailCleanup, [runDetailCleanup]);
|
|
25
|
+
return { registerDetailCleanup };
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=useMasterDetailCleanup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMasterDetailCleanup.js","sourceRoot":"","sources":["../../../../Core/Views/Table/useMasterDetailCleanup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAMvD;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAC5C,kBAA2B;IAE3B,MAAM,gBAAgB,GAAG,MAAM,EAA4B,CAAC;IAC5D,MAAM,sBAAsB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE7C,MAAM,qBAAqB,GAAG,WAAW,CAAC,CAAC,OAAoB,EAAE,EAAE;QACjE,gBAAgB,CAAC,OAAO,GAAG,OAAO,CAAC;IACrC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE;QACxC,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC;QAC7B,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC;IACvC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,sBAAsB,CAAC,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1D,gBAAgB,EAAE,CAAC;QACrB,CAAC;QACD,sBAAsB,CAAC,OAAO,GAAG,kBAAkB,CAAC;IACtD,CAAC,EAAE,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAE3C,SAAS,CAAC,GAAG,EAAE,CAAC,gBAAgB,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEtD,OAAO,EAAE,qBAAqB,EAAE,CAAC;AACnC,CAAC","sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\n\nexport interface UseMasterDetailCleanupResult {\n registerDetailCleanup: (cleanup?: () => void) => void;\n}\n\n/**\n * Owns final Master Detail cleanup for the stable table host.\n *\n * Detail renderers remount while navigating rows, so they register their platform-specific cleanup\n * here and the host invokes it only when Master Detail closes or the host unmounts.\n */\nexport default function useMasterDetailCleanup(\n isMasterDetailOpen: boolean\n): UseMasterDetailCleanupResult {\n const detailCleanupRef = useRef<(() => void) | undefined>();\n const wasMasterDetailOpenRef = useRef(false);\n\n const registerDetailCleanup = useCallback((cleanup?: () => void) => {\n detailCleanupRef.current = cleanup;\n }, []);\n\n const runDetailCleanup = useCallback(() => {\n detailCleanupRef.current?.();\n detailCleanupRef.current = undefined;\n }, []);\n\n useEffect(() => {\n if (wasMasterDetailOpenRef.current && !isMasterDetailOpen) {\n runDetailCleanup();\n }\n wasMasterDetailOpenRef.current = isMasterDetailOpen;\n }, [isMasterDetailOpen, runDetailCleanup]);\n\n useEffect(() => runDetailCleanup, [runDetailCleanup]);\n\n return { registerDetailCleanup };\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { MasterDetailProps } from '@pega/cosmos-react-work';
|
|
3
|
+
import type { RsCoreTypes } from 'pega-repeating-structures-core';
|
|
4
|
+
interface UseMasterDetailHostParams {
|
|
5
|
+
view: RsCoreTypes.View;
|
|
6
|
+
onClose?: () => void;
|
|
7
|
+
}
|
|
8
|
+
export interface UseMasterDetailHostResult {
|
|
9
|
+
detail: ReactNode | undefined;
|
|
10
|
+
masterDetailProps: Pick<MasterDetailProps, 'open' | 'selection' | 'loading' | 'nestedNavigation' | 'presentation' | 'onClose'>;
|
|
11
|
+
}
|
|
12
|
+
export default function useMasterDetailHost({ view, onClose }: UseMasterDetailHostParams): UseMasterDetailHostResult;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=useMasterDetailHost.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMasterDetailHost.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Table/useMasterDetailHost.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AASlE,UAAU,yBAAyB;IACjC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,iBAAiB,EAAE,IAAI,CACrB,iBAAiB,EACjB,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG,kBAAkB,GAAG,cAAc,GAAG,SAAS,CACnF,CAAC;CACH;AAED,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,IAAI,EACJ,OAAO,EACR,EAAE,yBAAyB,GAAG,yBAAyB,CAwDvD"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { useCallback } from 'react';
|
|
2
|
+
import useTranslate from '../../Hooks/useTranslate';
|
|
3
|
+
import fetchRowActions from '../../Utils/fetchRowActions';
|
|
4
|
+
import useMasterDetailState from './useMasterDetailState';
|
|
5
|
+
import useMasterDetailRenderer from './useMasterDetailRenderer';
|
|
6
|
+
import useMasterDetailCleanup from './useMasterDetailCleanup';
|
|
7
|
+
export default function useMasterDetailHost({ view, onClose }) {
|
|
8
|
+
const { masterDetail } = view;
|
|
9
|
+
const masterDetailConfig = view.meta.masterDetail;
|
|
10
|
+
const presentation = view.state?.responsive?.sm === false ? 'overlay' : 'docked';
|
|
11
|
+
const rowContext = masterDetail?.row.getContext?.();
|
|
12
|
+
const headerColumn = view.columns?.find(column => column.isFirstDataColumn);
|
|
13
|
+
const { detailState, onDetailStateChange } = useMasterDetailState(masterDetail);
|
|
14
|
+
const { registerDetailCleanup } = useMasterDetailCleanup(!!masterDetail);
|
|
15
|
+
const closeMasterDetail = useCallback(() => {
|
|
16
|
+
view.type.closeMasterDetail();
|
|
17
|
+
onClose?.();
|
|
18
|
+
}, [onClose, view.type]);
|
|
19
|
+
const previous = useCallback(() => view.type.navigateMasterDetail('previous'), [view.type]);
|
|
20
|
+
const next = useCallback(() => view.type.navigateMasterDetail('next'), [view.type]);
|
|
21
|
+
const [translate] = useTranslate();
|
|
22
|
+
const fetchActions = useCallback(() => fetchRowActions({
|
|
23
|
+
getExecutionContext: masterDetail?.row.getContext,
|
|
24
|
+
meta: view.meta,
|
|
25
|
+
translate
|
|
26
|
+
}), [masterDetail?.row, translate, view.meta]);
|
|
27
|
+
const headerValue = headerColumn?.getContext(rowContext).getValue()?.toString();
|
|
28
|
+
const selection = masterDetail
|
|
29
|
+
? {
|
|
30
|
+
id: masterDetail.rowKey,
|
|
31
|
+
header: headerValue,
|
|
32
|
+
accessibleName: headerValue,
|
|
33
|
+
onPrevious: masterDetail.hasPrevious ? previous : undefined,
|
|
34
|
+
onNext: masterDetail.hasNext ? next : undefined,
|
|
35
|
+
actions: view.meta.editing || view.meta.deleting ? fetchActions : undefined,
|
|
36
|
+
icon: masterDetailConfig?.icon
|
|
37
|
+
}
|
|
38
|
+
: undefined;
|
|
39
|
+
return {
|
|
40
|
+
detail: useMasterDetailRenderer({
|
|
41
|
+
view,
|
|
42
|
+
masterDetail,
|
|
43
|
+
onDetailStateChange,
|
|
44
|
+
registerDetailCleanup
|
|
45
|
+
}),
|
|
46
|
+
masterDetailProps: {
|
|
47
|
+
open: !!masterDetail,
|
|
48
|
+
selection,
|
|
49
|
+
loading: detailState.loading,
|
|
50
|
+
nestedNavigation: detailState.nestedNavigation,
|
|
51
|
+
presentation,
|
|
52
|
+
onClose: closeMasterDetail
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=useMasterDetailHost.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMasterDetailHost.js","sourceRoot":"","sources":["../../../../Core/Views/Table/useMasterDetailHost.ts"],"names":[],"mappings":"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","sourcesContent":["import { useCallback } from 'react';\nimport type { ReactNode } from 'react';\n\nimport type { MasterDetailProps } from '@pega/cosmos-react-work';\nimport type { RsCoreTypes } from 'pega-repeating-structures-core';\n\nimport useTranslate from '../../Hooks/useTranslate';\nimport fetchRowActions from '../../Utils/fetchRowActions';\n\nimport useMasterDetailState from './useMasterDetailState';\nimport useMasterDetailRenderer from './useMasterDetailRenderer';\nimport useMasterDetailCleanup from './useMasterDetailCleanup';\n\ninterface UseMasterDetailHostParams {\n view: RsCoreTypes.View;\n onClose?: () => void;\n}\n\nexport interface UseMasterDetailHostResult {\n detail: ReactNode | undefined;\n masterDetailProps: Pick<\n MasterDetailProps,\n 'open' | 'selection' | 'loading' | 'nestedNavigation' | 'presentation' | 'onClose'\n >;\n}\n\nexport default function useMasterDetailHost({\n view,\n onClose\n}: UseMasterDetailHostParams): UseMasterDetailHostResult {\n const { masterDetail } = view;\n const masterDetailConfig = view.meta.masterDetail;\n const presentation = view.state?.responsive?.sm === false ? 'overlay' : 'docked';\n const rowContext = masterDetail?.row.getContext?.();\n const headerColumn = view.columns?.find(column => column.isFirstDataColumn);\n const { detailState, onDetailStateChange } = useMasterDetailState(masterDetail);\n const { registerDetailCleanup } = useMasterDetailCleanup(!!masterDetail);\n\n const closeMasterDetail = useCallback(() => {\n view.type.closeMasterDetail();\n onClose?.();\n }, [onClose, view.type]);\n\n const previous = useCallback(() => view.type.navigateMasterDetail('previous'), [view.type]);\n const next = useCallback(() => view.type.navigateMasterDetail('next'), [view.type]);\n\n const [translate] = useTranslate();\n const fetchActions = useCallback(\n () =>\n fetchRowActions({\n getExecutionContext: masterDetail?.row.getContext,\n meta: view.meta,\n translate\n }),\n [masterDetail?.row, translate, view.meta]\n );\n\n const headerValue = headerColumn?.getContext(rowContext).getValue()?.toString();\n const selection = masterDetail\n ? {\n id: masterDetail.rowKey,\n header: headerValue,\n accessibleName: headerValue,\n onPrevious: masterDetail.hasPrevious ? previous : undefined,\n onNext: masterDetail.hasNext ? next : undefined,\n actions: view.meta.editing || view.meta.deleting ? fetchActions : undefined,\n icon: masterDetailConfig?.icon\n }\n : undefined;\n return {\n detail: useMasterDetailRenderer({\n view,\n masterDetail,\n onDetailStateChange,\n registerDetailCleanup\n }),\n masterDetailProps: {\n open: !!masterDetail,\n selection,\n loading: detailState.loading,\n nestedNavigation: detailState.nestedNavigation,\n presentation,\n onClose: closeMasterDetail\n }\n };\n}\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { RsCoreTypes } from 'pega-repeating-structures-core';
|
|
3
|
+
import type { DetailState } from './useMasterDetailState';
|
|
4
|
+
interface UseMasterDetailRendererParams {
|
|
5
|
+
view: RsCoreTypes.View;
|
|
6
|
+
masterDetail: RsCoreTypes.View['masterDetail'];
|
|
7
|
+
onDetailStateChange: (state: Partial<DetailState>) => void;
|
|
8
|
+
registerDetailCleanup: (cleanup?: () => void) => void;
|
|
9
|
+
}
|
|
10
|
+
/** Resolves and renders configured detail content for the active Master Detail selection. */
|
|
11
|
+
export default function useMasterDetailRenderer({ view, masterDetail, onDetailStateChange, registerDetailCleanup }: UseMasterDetailRendererParams): ReactNode | undefined;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=useMasterDetailRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMasterDetailRenderer.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Table/useMasterDetailRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAKlE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,UAAU,6BAA6B;IACrC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;IACvB,YAAY,EAAE,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC/C,mBAAmB,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAC3D,qBAAqB,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;CACvD;AAED,6FAA6F;AAC7F,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,EAC9C,IAAI,EACJ,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACtB,EAAE,6BAA6B,GAAG,SAAS,GAAG,SAAS,CAmBvD"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Fragment, useMemo } from 'react';
|
|
3
|
+
import { createUID } from '@pega/cosmos-react-core';
|
|
4
|
+
import { resolveComponent } from '../../Components/RenderingEngine/ComponentResolverFactory';
|
|
5
|
+
import { MASTER_DETAIL_RENDERER_KEY } from '../../constants';
|
|
6
|
+
/** Resolves and renders configured detail content for the active Master Detail selection. */
|
|
7
|
+
export default function useMasterDetailRenderer({ view, masterDetail, onDetailStateChange, registerDetailCleanup }) {
|
|
8
|
+
// Remount the detail renderer when its row is regenerated or an explicit detail refresh is requested.
|
|
9
|
+
const detailRenderKey = useMemo(() => createUID(), [masterDetail?.row, masterDetail?.refreshKey]);
|
|
10
|
+
const rowContext = masterDetail?.row.getContext?.();
|
|
11
|
+
if (!masterDetail || !view.meta.masterDetail)
|
|
12
|
+
return undefined;
|
|
13
|
+
const detail = resolveComponent(MASTER_DETAIL_RENDERER_KEY, view.renderFactory, {
|
|
14
|
+
rowContext,
|
|
15
|
+
context: rowContext?.getValue?.(),
|
|
16
|
+
nestedTarget: masterDetail.nestedTarget,
|
|
17
|
+
viewName: masterDetail.viewName ?? view.meta.masterDetail?.viewName,
|
|
18
|
+
onDetailStateChange,
|
|
19
|
+
registerDetailCleanup
|
|
20
|
+
});
|
|
21
|
+
return detail ? (_jsx(Fragment, { children: detail }, `${masterDetail.rowKey}:${detailRenderKey}`)) : undefined;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=useMasterDetailRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMasterDetailRenderer.js","sourceRoot":"","sources":["../../../../Core/Views/Table/useMasterDetailRenderer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAC7F,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAW7D,6FAA6F;AAC7F,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,EAC9C,IAAI,EACJ,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACS;IAC9B,sGAAsG;IACtG,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;IAClG,MAAM,UAAU,GAAG,YAAY,EAAE,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC;IAEpD,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY;QAAE,OAAO,SAAS,CAAC;IAE/D,MAAM,MAAM,GAAG,gBAAgB,CAAC,0BAA0B,EAAE,IAAI,CAAC,aAAa,EAAE;QAC9E,UAAU;QACV,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE;QACjC,YAAY,EAAE,YAAY,CAAC,YAAY;QACvC,QAAQ,EAAE,YAAY,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ;QACnE,mBAAmB;QACnB,qBAAqB;KACtB,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,CAAC,CAAC,CACd,KAAC,QAAQ,cAAoD,MAAM,IAApD,GAAG,YAAY,CAAC,MAAM,IAAI,eAAe,EAAE,CAAqB,CAChF,CAAC,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC","sourcesContent":["import { Fragment, useMemo } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { createUID } from '@pega/cosmos-react-core';\nimport type { RsCoreTypes } from 'pega-repeating-structures-core';\n\nimport { resolveComponent } from '../../Components/RenderingEngine/ComponentResolverFactory';\nimport { MASTER_DETAIL_RENDERER_KEY } from '../../constants';\n\nimport type { DetailState } from './useMasterDetailState';\n\ninterface UseMasterDetailRendererParams {\n view: RsCoreTypes.View;\n masterDetail: RsCoreTypes.View['masterDetail'];\n onDetailStateChange: (state: Partial<DetailState>) => void;\n registerDetailCleanup: (cleanup?: () => void) => void;\n}\n\n/** Resolves and renders configured detail content for the active Master Detail selection. */\nexport default function useMasterDetailRenderer({\n view,\n masterDetail,\n onDetailStateChange,\n registerDetailCleanup\n}: UseMasterDetailRendererParams): ReactNode | undefined {\n // Remount the detail renderer when its row is regenerated or an explicit detail refresh is requested.\n const detailRenderKey = useMemo(() => createUID(), [masterDetail?.row, masterDetail?.refreshKey]);\n const rowContext = masterDetail?.row.getContext?.();\n\n if (!masterDetail || !view.meta.masterDetail) return undefined;\n\n const detail = resolveComponent(MASTER_DETAIL_RENDERER_KEY, view.renderFactory, {\n rowContext,\n context: rowContext?.getValue?.(),\n nestedTarget: masterDetail.nestedTarget,\n viewName: masterDetail.viewName ?? view.meta.masterDetail?.viewName,\n onDetailStateChange,\n registerDetailCleanup\n });\n\n return detail ? (\n <Fragment key={`${masterDetail.rowKey}:${detailRenderKey}`}>{detail}</Fragment>\n ) : undefined;\n}\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { MouseEvent, KeyboardEvent } from 'react';
|
|
2
|
+
import type { RsCoreTypes } from 'pega-repeating-structures-core';
|
|
3
|
+
export default function useMasterDetailRow(row: RsCoreTypes.Row): {
|
|
4
|
+
isMasterDetailEnabled: boolean;
|
|
5
|
+
onRowClick: (event: MouseEvent) => void;
|
|
6
|
+
onCellKeyDownCapture: (event: KeyboardEvent) => void;
|
|
7
|
+
rowElementRef: import("react").MutableRefObject<HTMLElement | null>;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=useMasterDetailRow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMasterDetailRow.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Table/useMasterDetailRow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAclE,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG;;wBAiBnD,UAAU;kCAUV,aAAa;;EAgCxB"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef } from 'react';
|
|
2
|
+
import { isInstance } from '@pega/cosmos-react-core';
|
|
3
|
+
import { ACTIONABLE_SELECTORS, FOCUSABLE_SELECTORS } from '../../constants';
|
|
4
|
+
const INTERACTIVE_SELECTOR = [
|
|
5
|
+
...FOCUSABLE_SELECTORS,
|
|
6
|
+
...ACTIONABLE_SELECTORS,
|
|
7
|
+
'.cell-action',
|
|
8
|
+
'[role="button"]',
|
|
9
|
+
'[role="menuitem"]',
|
|
10
|
+
'[aria-haspopup="menu"]'
|
|
11
|
+
].join(',');
|
|
12
|
+
export default function useMasterDetailRow(row) {
|
|
13
|
+
const rowElementRef = useRef(null);
|
|
14
|
+
const isMasterDetailEnabled = !!row.parent?.meta?.masterDetail;
|
|
15
|
+
const isRowSelectionEnabled = !!row.parent?.meta?.selectionMode &&
|
|
16
|
+
!(row.parent?.columns?.find(column => column.field.name === 'RowSelect')?.disableSelection ??
|
|
17
|
+
row.parent?.meta?.disableSelectionOnLoad);
|
|
18
|
+
const selectRowIfEnabled = useCallback(() => {
|
|
19
|
+
if (isRowSelectionEnabled) {
|
|
20
|
+
row.selectRow(!row.$selected);
|
|
21
|
+
}
|
|
22
|
+
}, [isRowSelectionEnabled, row]);
|
|
23
|
+
const onRowClick = useCallback((event) => {
|
|
24
|
+
if (isInstance(event.target, Element) && event.target.closest(INTERACTIVE_SELECTOR))
|
|
25
|
+
return;
|
|
26
|
+
selectRowIfEnabled();
|
|
27
|
+
row.openMasterDetail?.();
|
|
28
|
+
}, [row, selectRowIfEnabled]);
|
|
29
|
+
const onCellKeyDownCapture = useCallback((event) => {
|
|
30
|
+
if (event.key !== 'Enter' || event.target !== event.currentTarget)
|
|
31
|
+
return;
|
|
32
|
+
event.preventDefault();
|
|
33
|
+
event.stopPropagation();
|
|
34
|
+
selectRowIfEnabled();
|
|
35
|
+
row.openMasterDetail?.();
|
|
36
|
+
}, [row, selectRowIfEnabled]);
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
const rowElement = rowElementRef.current;
|
|
39
|
+
if (!row.masterDetailActive || !rowElement)
|
|
40
|
+
return;
|
|
41
|
+
const scrollContainer = row.parent?.virtualizeElements?.rootVirtualiser?.getParentContainer?.();
|
|
42
|
+
if (!scrollContainer) {
|
|
43
|
+
rowElement.scrollIntoView({ block: 'nearest' });
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const rowRect = rowElement.getBoundingClientRect();
|
|
47
|
+
const viewportRect = scrollContainer.getBoundingClientRect();
|
|
48
|
+
const isOutsideViewport = rowRect.top < viewportRect.top || rowRect.bottom > viewportRect.bottom;
|
|
49
|
+
if (isOutsideViewport) {
|
|
50
|
+
rowElement.scrollIntoView({ block: 'nearest' });
|
|
51
|
+
}
|
|
52
|
+
}, [row.masterDetailActive]);
|
|
53
|
+
return { isMasterDetailEnabled, onRowClick, onCellKeyDownCapture, rowElementRef };
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=useMasterDetailRow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMasterDetailRow.js","sourceRoot":"","sources":["../../../../Core/Views/Table/useMasterDetailRow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAIvD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE5E,MAAM,oBAAoB,GAAG;IAC3B,GAAG,mBAAmB;IACtB,GAAG,oBAAoB;IACvB,cAAc;IACd,iBAAiB;IACjB,mBAAmB;IACnB,wBAAwB;CACzB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEZ,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,GAAoB;IAC7D,MAAM,aAAa,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAC;IACvD,MAAM,qBAAqB,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC;IAC/D,MAAM,qBAAqB,GACzB,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,aAAa;QACjC,CAAC,CACC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE,gBAAgB;YACxF,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,sBAAsB,CACzC,CAAC;IAEJ,MAAM,kBAAkB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC1C,IAAI,qBAAqB,EAAE,CAAC;YAC1B,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,EAAE,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC,CAAC;IAEjC,MAAM,UAAU,GAAG,WAAW,CAC5B,CAAC,KAAiB,EAAE,EAAE;QACpB,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC;YAAE,OAAO;QAE5F,kBAAkB,EAAE,CAAC;QACrB,GAAG,CAAC,gBAAgB,EAAE,EAAE,CAAC;IAC3B,CAAC,EACD,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAC1B,CAAC;IAEF,MAAM,oBAAoB,GAAG,WAAW,CACtC,CAAC,KAAoB,EAAE,EAAE;QACvB,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,aAAa;YAAE,OAAO;QAE1E,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,kBAAkB,EAAE,CAAC;QACrB,GAAG,CAAC,gBAAgB,EAAE,EAAE,CAAC;IAC3B,CAAC,EACD,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAC1B,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC;QACzC,IAAI,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,UAAU;YAAE,OAAO;QAEnD,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,eAAe,EAAE,kBAAkB,EAAE,EAAE,CAAC;QAChG,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,UAAU,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,UAAU,CAAC,qBAAqB,EAAE,CAAC;QACnD,MAAM,YAAY,GAAG,eAAe,CAAC,qBAAqB,EAAE,CAAC;QAC7D,MAAM,iBAAiB,GACrB,OAAO,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QAEzE,IAAI,iBAAiB,EAAE,CAAC;YACtB,UAAU,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAE7B,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,oBAAoB,EAAE,aAAa,EAAE,CAAC;AACpF,CAAC","sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\nimport type { MouseEvent, KeyboardEvent } from 'react';\n\nimport type { RsCoreTypes } from 'pega-repeating-structures-core';\nimport { isInstance } from '@pega/cosmos-react-core';\n\nimport { ACTIONABLE_SELECTORS, FOCUSABLE_SELECTORS } from '../../constants';\n\nconst INTERACTIVE_SELECTOR = [\n ...FOCUSABLE_SELECTORS,\n ...ACTIONABLE_SELECTORS,\n '.cell-action',\n '[role=\"button\"]',\n '[role=\"menuitem\"]',\n '[aria-haspopup=\"menu\"]'\n].join(',');\n\nexport default function useMasterDetailRow(row: RsCoreTypes.Row) {\n const rowElementRef = useRef<HTMLElement | null>(null);\n const isMasterDetailEnabled = !!row.parent?.meta?.masterDetail;\n const isRowSelectionEnabled =\n !!row.parent?.meta?.selectionMode &&\n !(\n row.parent?.columns?.find(column => column.field.name === 'RowSelect')?.disableSelection ??\n row.parent?.meta?.disableSelectionOnLoad\n );\n\n const selectRowIfEnabled = useCallback(() => {\n if (isRowSelectionEnabled) {\n row.selectRow(!row.$selected);\n }\n }, [isRowSelectionEnabled, row]);\n\n const onRowClick = useCallback(\n (event: MouseEvent) => {\n if (isInstance(event.target, Element) && event.target.closest(INTERACTIVE_SELECTOR)) return;\n\n selectRowIfEnabled();\n row.openMasterDetail?.();\n },\n [row, selectRowIfEnabled]\n );\n\n const onCellKeyDownCapture = useCallback(\n (event: KeyboardEvent) => {\n if (event.key !== 'Enter' || event.target !== event.currentTarget) return;\n\n event.preventDefault();\n event.stopPropagation();\n selectRowIfEnabled();\n row.openMasterDetail?.();\n },\n [row, selectRowIfEnabled]\n );\n\n useEffect(() => {\n const rowElement = rowElementRef.current;\n if (!row.masterDetailActive || !rowElement) return;\n\n const scrollContainer = row.parent?.virtualizeElements?.rootVirtualiser?.getParentContainer?.();\n if (!scrollContainer) {\n rowElement.scrollIntoView({ block: 'nearest' });\n return;\n }\n\n const rowRect = rowElement.getBoundingClientRect();\n const viewportRect = scrollContainer.getBoundingClientRect();\n const isOutsideViewport =\n rowRect.top < viewportRect.top || rowRect.bottom > viewportRect.bottom;\n\n if (isOutsideViewport) {\n rowElement.scrollIntoView({ block: 'nearest' });\n }\n }, [row.masterDetailActive]);\n\n return { isMasterDetailEnabled, onRowClick, onCellKeyDownCapture, rowElementRef };\n}\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { RsCoreTypes } from 'pega-repeating-structures-core';
|
|
3
|
+
export interface DetailNestedNavigation {
|
|
4
|
+
onBack?: () => void;
|
|
5
|
+
title?: ReactNode;
|
|
6
|
+
subtitle?: ReactNode;
|
|
7
|
+
icon?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface DetailState {
|
|
10
|
+
rowKey?: string;
|
|
11
|
+
loading?: boolean;
|
|
12
|
+
nestedNavigation?: DetailNestedNavigation;
|
|
13
|
+
}
|
|
14
|
+
interface UseMasterDetailStateResult {
|
|
15
|
+
detailState: DetailState;
|
|
16
|
+
onDetailStateChange: (nextState: Partial<DetailState>) => void;
|
|
17
|
+
}
|
|
18
|
+
/** Manages transient renderer state for the currently open Master Detail item. */
|
|
19
|
+
export default function useMasterDetailState(masterDetail: RsCoreTypes.View['masterDetail']): UseMasterDetailStateResult;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=useMasterDetailState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMasterDetailState.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Table/useMasterDetailState.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAElE,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;CAC3C;AAED,UAAU,0BAA0B;IAClC,WAAW,EAAE,WAAW,CAAC;IACzB,mBAAmB,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;CAChE;AAED,kFAAkF;AAClF,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAC1C,YAAY,EAAE,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,GAC7C,0BAA0B,CAoC5B"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
2
|
+
/** Manages transient renderer state for the currently open Master Detail item. */
|
|
3
|
+
export default function useMasterDetailState(masterDetail) {
|
|
4
|
+
const [detailState, setDetailState] = useState({});
|
|
5
|
+
useEffect(() => {
|
|
6
|
+
if (!masterDetail) {
|
|
7
|
+
setDetailState({});
|
|
8
|
+
}
|
|
9
|
+
}, [masterDetail]);
|
|
10
|
+
const onDetailStateChange = useCallback((nextState) => {
|
|
11
|
+
if (!masterDetail)
|
|
12
|
+
return;
|
|
13
|
+
setDetailState(previousState => {
|
|
14
|
+
if (previousState.rowKey !== masterDetail.rowKey) {
|
|
15
|
+
return { rowKey: masterDetail.rowKey, ...nextState };
|
|
16
|
+
}
|
|
17
|
+
return {
|
|
18
|
+
...previousState,
|
|
19
|
+
...nextState,
|
|
20
|
+
nestedNavigation: nextState.nestedNavigation
|
|
21
|
+
? { ...previousState.nestedNavigation, ...nextState.nestedNavigation }
|
|
22
|
+
: previousState.nestedNavigation
|
|
23
|
+
};
|
|
24
|
+
});
|
|
25
|
+
}, [masterDetail]);
|
|
26
|
+
return {
|
|
27
|
+
detailState: detailState.rowKey === masterDetail?.rowKey
|
|
28
|
+
? detailState
|
|
29
|
+
: { loading: false, nestedNavigation: undefined },
|
|
30
|
+
onDetailStateChange
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=useMasterDetailState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMasterDetailState.js","sourceRoot":"","sources":["../../../../Core/Views/Table/useMasterDetailState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAuBzD,kFAAkF;AAClF,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAC1C,YAA8C;IAE9C,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAc,EAAE,CAAC,CAAC;IAEhE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,cAAc,CAAC,EAAE,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,MAAM,mBAAmB,GAAG,WAAW,CACrC,CAAC,SAA+B,EAAE,EAAE;QAClC,IAAI,CAAC,YAAY;YAAE,OAAO;QAE1B,cAAc,CAAC,aAAa,CAAC,EAAE;YAC7B,IAAI,aAAa,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;gBACjD,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;YACvD,CAAC;YACD,OAAO;gBACL,GAAG,aAAa;gBAChB,GAAG,SAAS;gBACZ,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;oBAC1C,CAAC,CAAC,EAAE,GAAG,aAAa,CAAC,gBAAgB,EAAE,GAAG,SAAS,CAAC,gBAAgB,EAAE;oBACtE,CAAC,CAAC,aAAa,CAAC,gBAAgB;aACnC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,EACD,CAAC,YAAY,CAAC,CACf,CAAC;IAEF,OAAO;QACL,WAAW,EACT,WAAW,CAAC,MAAM,KAAK,YAAY,EAAE,MAAM;YACzC,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE;QACrD,mBAAmB;KACpB,CAAC;AACJ,CAAC","sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport type { ReactNode } from 'react';\n\nimport type { RsCoreTypes } from 'pega-repeating-structures-core';\n\nexport interface DetailNestedNavigation {\n onBack?: () => void;\n title?: ReactNode;\n subtitle?: ReactNode;\n icon?: string;\n}\n\nexport interface DetailState {\n rowKey?: string;\n loading?: boolean;\n nestedNavigation?: DetailNestedNavigation;\n}\n\ninterface UseMasterDetailStateResult {\n detailState: DetailState;\n onDetailStateChange: (nextState: Partial<DetailState>) => void;\n}\n\n/** Manages transient renderer state for the currently open Master Detail item. */\nexport default function useMasterDetailState(\n masterDetail: RsCoreTypes.View['masterDetail']\n): UseMasterDetailStateResult {\n const [detailState, setDetailState] = useState<DetailState>({});\n\n useEffect(() => {\n if (!masterDetail) {\n setDetailState({});\n }\n }, [masterDetail]);\n\n const onDetailStateChange = useCallback(\n (nextState: Partial<DetailState>) => {\n if (!masterDetail) return;\n\n setDetailState(previousState => {\n if (previousState.rowKey !== masterDetail.rowKey) {\n return { rowKey: masterDetail.rowKey, ...nextState };\n }\n return {\n ...previousState,\n ...nextState,\n nestedNavigation: nextState.nestedNavigation\n ? { ...previousState.nestedNavigation, ...nextState.nestedNavigation }\n : previousState.nestedNavigation\n };\n });\n },\n [masterDetail]\n );\n\n return {\n detailState:\n detailState.rowKey === masterDetail?.rowKey\n ? detailState\n : { loading: false, nestedNavigation: undefined },\n onDetailStateChange\n };\n}\n"]}
|
package/lib/Core/constants.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
export declare const EXTERNAL_FILTERS = "externalFilters";
|
|
2
2
|
export declare const DEFAULT_FORMAT = "Default";
|
|
3
|
+
/** Render-factory key registered by the host for the Master Detail content renderer. */
|
|
4
|
+
export declare const MASTER_DETAIL_RENDERER_KEY = "masterDetailRenderer";
|
|
5
|
+
export declare const MASTER_DETAIL_PREVIEW_HIGHLIGHT_CLASS = "preview-highlight-row";
|
|
6
|
+
export declare const MASTER_DETAIL_INDICATOR_CLASS = "detail-indicator-anchor";
|
|
3
7
|
export declare const SELECTION_MODES: {
|
|
4
8
|
single: string;
|
|
5
9
|
multi: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../Core/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,oBAAoB,CAAC;AAClD,eAAO,MAAM,cAAc,YAAY,CAAC;AAExC,eAAO,MAAM,eAAe;;;;CAI3B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;CAK7B,CAAC;AAEF,eAAO,MAAM,SAAS;;;;CAIrB,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;CAM3B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;CAI9B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;GAW9B,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;;IAOvB,CAAC;AACF,eAAO,MAAM,gBAAgB;;;;CAInB,CAAC;AAEX,eAAO,MAAM,eAAe;;;;CAI3B,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;CAGtC,CAAC;AAEF,eAAO,MAAM,mBAAmB,UAQ/B,CAAC;AAEF,eAAO,MAAM,oBAAoB,UAYhC,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../Core/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,oBAAoB,CAAC;AAClD,eAAO,MAAM,cAAc,YAAY,CAAC;AAExC,wFAAwF;AACxF,eAAO,MAAM,0BAA0B,yBAAyB,CAAC;AACjE,eAAO,MAAM,qCAAqC,0BAA0B,CAAC;AAC7E,eAAO,MAAM,6BAA6B,4BAA4B,CAAC;AAEvE,eAAO,MAAM,eAAe;;;;CAI3B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;CAK7B,CAAC;AAEF,eAAO,MAAM,SAAS;;;;CAIrB,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;CAM3B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;CAI9B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;GAW9B,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;;IAOvB,CAAC;AACF,eAAO,MAAM,gBAAgB;;;;CAInB,CAAC;AAEX,eAAO,MAAM,eAAe;;;;CAI3B,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;CAGtC,CAAC;AAEF,eAAO,MAAM,mBAAmB,UAQ/B,CAAC;AAEF,eAAO,MAAM,oBAAoB,UAYhC,CAAC"}
|
package/lib/Core/constants.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
export const EXTERNAL_FILTERS = 'externalFilters';
|
|
2
2
|
export const DEFAULT_FORMAT = 'Default';
|
|
3
|
+
/** Render-factory key registered by the host for the Master Detail content renderer. */
|
|
4
|
+
export const MASTER_DETAIL_RENDERER_KEY = 'masterDetailRenderer';
|
|
5
|
+
export const MASTER_DETAIL_PREVIEW_HIGHLIGHT_CLASS = 'preview-highlight-row';
|
|
6
|
+
export const MASTER_DETAIL_INDICATOR_CLASS = 'detail-indicator-anchor';
|
|
3
7
|
export const SELECTION_MODES = {
|
|
4
8
|
single: 'single',
|
|
5
9
|
multi: 'multi',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../Core/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,iBAAiB,CAAC;AAClD,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC;AAExC,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,cAAc,EAAE,gBAAgB;CACjC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE;IACzC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,eAAe,EAAE;IAC1C,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE;IACxC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,qBAAqB,EAAE;CACjD,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,UAAU;CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,aAAa;IACpB,MAAM,EAAE,cAAc;CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC;QACE,QAAQ,EAAE,KAAK;QACf,UAAU,EAAE,gBAAgB;QAC5B,UAAU,EAAE,UAAU;KACvB;IACD;QACE,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,iBAAiB;QAC7B,UAAU,EAAE,YAAY;KACzB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,GAAG,kBAAkB;IACrB;QACE,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,aAAa;QACzB,UAAU,EAAE,OAAO;KACpB;CACF,CAAC;AACF,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,UAAU;CACZ,CAAC;AAEX,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,aAAa,EAAE,eAAe;IAC9B,cAAc,EAAE,gBAAgB;IAChC,iBAAiB,EAAE,mBAAmB;CACvC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,gBAAgB,EAAE,oBAAoB;IACtC,gBAAgB,EAAE,oBAAoB;CACvC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,QAAQ;IACR,SAAS;IACT,kBAAkB;IAClB,sBAAsB;IACtB,mBAAmB;IACnB,uBAAuB;IACvB,uBAAuB;CACxB,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,kBAAkB;IAClB,mBAAmB,EAAE,sCAAsC;IAC3D,oBAAoB;IACpB,0BAA0B;IAC1B,sBAAsB;IACtB,iBAAiB;IACjB,mBAAmB;IACnB,sBAAsB;IACtB,UAAU;IACV,QAAQ;IACR,QAAQ;CACT,CAAC","sourcesContent":["export const EXTERNAL_FILTERS = 'externalFilters';\nexport const DEFAULT_FORMAT = 'Default';\n\nexport const SELECTION_MODES = {\n single: 'single',\n multi: 'multi',\n multi_on_hover: 'multi_on_hover'\n};\n\nexport const rowDensityClasses = {\n 1: { id: '1', className: 'short-height' },\n 2: { id: '2', className: 'medium-height' },\n 3: { id: '3', className: 'tall-height' },\n 4: { id: '4', className: 'wrap-content-height' }\n};\n\nexport const TEMPLATES = {\n GALLERY: 'Gallery',\n TABLE: 'Table',\n TIMELINE: 'Timeline'\n};\n\nexport const debugInfoFields = {\n className: 'className',\n dataPage: 'dataPage',\n dataSource: 'dataSource',\n timeTaken: 'timeTaken',\n insightId: 'insightId'\n};\n\nexport const CELL_ALIGN_CLASSES = {\n left: 'align-left',\n right: 'align-right',\n center: 'align-center'\n};\n\nexport const NonNullSortActions = [\n {\n actionId: 'asc',\n actionName: 'Sort ascending',\n actionIcon: 'arrow-up'\n },\n {\n actionId: 'desc',\n actionName: 'Sort descending',\n actionIcon: 'arrow-down'\n }\n];\n\nexport const sortActions = [\n ...NonNullSortActions,\n {\n actionId: null,\n actionName: 'Remove sort',\n actionIcon: 'reset'\n }\n];\nexport const TOOLBAR_FEATURES = {\n FILTER: 'filter',\n SORT: 'sort',\n GROUPING: 'grouping'\n} as const;\n\nexport const customFunctions = {\n TEXT_GROUPING: 'TEXT_GROUPING',\n RANGE_GROUPING: 'RANGE_GROUPING',\n INTERVAL_GROUPING: 'INTERVAL_GROUPING'\n};\n\nexport const intervalGroupingBoundaries = {\n includeLowerOnly: 'include-lower-only',\n includeUpperOnly: 'include-upper-only'\n};\n\nexport const FOCUSABLE_SELECTORS = [\n 'button',\n 'a[href]',\n 'input[type=file]',\n 'input[type=checkbox]',\n 'input[type=radio]',\n '.scalarlist-component',\n '.row-error-column svg'\n];\n\nexport const ACTIONABLE_SELECTORS = [\n 'input[type=text]',\n 'input:not([type])', // input without type defaults to text\n 'input[type=number]',\n 'input[inputmode=numeric]',\n 'input[inputmode=tel]',\n 'input[type=url]',\n 'input[type=email]',\n 'input[role=combobox]',\n 'textarea',\n 'select',\n 'iframe'\n];\n"]}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../Core/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,iBAAiB,CAAC;AAClD,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC;AAExC,wFAAwF;AACxF,MAAM,CAAC,MAAM,0BAA0B,GAAG,sBAAsB,CAAC;AACjE,MAAM,CAAC,MAAM,qCAAqC,GAAG,uBAAuB,CAAC;AAC7E,MAAM,CAAC,MAAM,6BAA6B,GAAG,yBAAyB,CAAC;AAEvE,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,cAAc,EAAE,gBAAgB;CACjC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE;IACzC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,eAAe,EAAE;IAC1C,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE;IACxC,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,qBAAqB,EAAE;CACjD,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,UAAU;CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,aAAa;IACpB,MAAM,EAAE,cAAc;CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC;QACE,QAAQ,EAAE,KAAK;QACf,UAAU,EAAE,gBAAgB;QAC5B,UAAU,EAAE,UAAU;KACvB;IACD;QACE,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,iBAAiB;QAC7B,UAAU,EAAE,YAAY;KACzB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,GAAG,kBAAkB;IACrB;QACE,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,aAAa;QACzB,UAAU,EAAE,OAAO;KACpB;CACF,CAAC;AACF,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,UAAU;CACZ,CAAC;AAEX,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,aAAa,EAAE,eAAe;IAC9B,cAAc,EAAE,gBAAgB;IAChC,iBAAiB,EAAE,mBAAmB;CACvC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,gBAAgB,EAAE,oBAAoB;IACtC,gBAAgB,EAAE,oBAAoB;CACvC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,QAAQ;IACR,SAAS;IACT,kBAAkB;IAClB,sBAAsB;IACtB,mBAAmB;IACnB,uBAAuB;IACvB,uBAAuB;CACxB,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,kBAAkB;IAClB,mBAAmB,EAAE,sCAAsC;IAC3D,oBAAoB;IACpB,0BAA0B;IAC1B,sBAAsB;IACtB,iBAAiB;IACjB,mBAAmB;IACnB,sBAAsB;IACtB,UAAU;IACV,QAAQ;IACR,QAAQ;CACT,CAAC","sourcesContent":["export const EXTERNAL_FILTERS = 'externalFilters';\nexport const DEFAULT_FORMAT = 'Default';\n\n/** Render-factory key registered by the host for the Master Detail content renderer. */\nexport const MASTER_DETAIL_RENDERER_KEY = 'masterDetailRenderer';\nexport const MASTER_DETAIL_PREVIEW_HIGHLIGHT_CLASS = 'preview-highlight-row';\nexport const MASTER_DETAIL_INDICATOR_CLASS = 'detail-indicator-anchor';\n\nexport const SELECTION_MODES = {\n single: 'single',\n multi: 'multi',\n multi_on_hover: 'multi_on_hover'\n};\n\nexport const rowDensityClasses = {\n 1: { id: '1', className: 'short-height' },\n 2: { id: '2', className: 'medium-height' },\n 3: { id: '3', className: 'tall-height' },\n 4: { id: '4', className: 'wrap-content-height' }\n};\n\nexport const TEMPLATES = {\n GALLERY: 'Gallery',\n TABLE: 'Table',\n TIMELINE: 'Timeline'\n};\n\nexport const debugInfoFields = {\n className: 'className',\n dataPage: 'dataPage',\n dataSource: 'dataSource',\n timeTaken: 'timeTaken',\n insightId: 'insightId'\n};\n\nexport const CELL_ALIGN_CLASSES = {\n left: 'align-left',\n right: 'align-right',\n center: 'align-center'\n};\n\nexport const NonNullSortActions = [\n {\n actionId: 'asc',\n actionName: 'Sort ascending',\n actionIcon: 'arrow-up'\n },\n {\n actionId: 'desc',\n actionName: 'Sort descending',\n actionIcon: 'arrow-down'\n }\n];\n\nexport const sortActions = [\n ...NonNullSortActions,\n {\n actionId: null,\n actionName: 'Remove sort',\n actionIcon: 'reset'\n }\n];\nexport const TOOLBAR_FEATURES = {\n FILTER: 'filter',\n SORT: 'sort',\n GROUPING: 'grouping'\n} as const;\n\nexport const customFunctions = {\n TEXT_GROUPING: 'TEXT_GROUPING',\n RANGE_GROUPING: 'RANGE_GROUPING',\n INTERVAL_GROUPING: 'INTERVAL_GROUPING'\n};\n\nexport const intervalGroupingBoundaries = {\n includeLowerOnly: 'include-lower-only',\n includeUpperOnly: 'include-upper-only'\n};\n\nexport const FOCUSABLE_SELECTORS = [\n 'button',\n 'a[href]',\n 'input[type=file]',\n 'input[type=checkbox]',\n 'input[type=radio]',\n '.scalarlist-component',\n '.row-error-column svg'\n];\n\nexport const ACTIONABLE_SELECTORS = [\n 'input[type=text]',\n 'input:not([type])', // input without type defaults to text\n 'input[type=number]',\n 'input[inputmode=numeric]',\n 'input[inputmode=tel]',\n 'input[type=url]',\n 'input[type=email]',\n 'input[role=combobox]',\n 'textarea',\n 'select',\n 'iframe'\n];\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pega/lists-react",
|
|
3
|
-
"version": "10.0.0-build.9.
|
|
3
|
+
"version": "10.0.0-build.9.12",
|
|
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,17 +14,18 @@
|
|
|
14
14
|
"build": "tsc -b tsconfig.build.json"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@pega/cosmos-react-condition-builder": "10.0.0-build.9.
|
|
18
|
-
"@pega/cosmos-react-core": "10.0.0-build.9.
|
|
19
|
-
"@pega/cosmos-react-rte": "10.0.0-build.9.
|
|
17
|
+
"@pega/cosmos-react-condition-builder": "10.0.0-build.9.12",
|
|
18
|
+
"@pega/cosmos-react-core": "10.0.0-build.9.12",
|
|
19
|
+
"@pega/cosmos-react-rte": "10.0.0-build.9.12",
|
|
20
|
+
"@pega/cosmos-react-work": "10.0.0-build.9.12",
|
|
20
21
|
"@types/lodash-es": "^4.17.12",
|
|
21
22
|
"@types/react": "^17.0.62 || ^18.3.3",
|
|
22
23
|
"@types/react-dom": "^17.0.20 || ^18.3.0",
|
|
23
24
|
"dayjs": "^1.11.13",
|
|
24
25
|
"fast-deep-equal": "^3.1.3",
|
|
25
26
|
"lodash-es": "^4.18.1",
|
|
26
|
-
"pega-repeating-structures-core": "npm:@pega/lists-core@10.0.0-build.9.
|
|
27
|
-
"pega-ui-list-data-apis": "npm:@pega/lists-core-utils@10.0.0-build.9.
|
|
27
|
+
"pega-repeating-structures-core": "npm:@pega/lists-core@10.0.0-build.9.12",
|
|
28
|
+
"pega-ui-list-data-apis": "npm:@pega/lists-core-utils@10.0.0-build.9.12",
|
|
28
29
|
"polished": "^4.1.0",
|
|
29
30
|
"prop-types": "^15.8.1",
|
|
30
31
|
"react": "^17.0.0 || ^18.0.0",
|
|
@@ -42,7 +43,7 @@
|
|
|
42
43
|
"@testing-library/react": "^16.0.0",
|
|
43
44
|
"@testing-library/user-event": "^14.6.1",
|
|
44
45
|
"jest-axe": "^8.0.0",
|
|
45
|
-
"srs-utils": "10.0.0-build.9.
|
|
46
|
+
"srs-utils": "10.0.0-build.9.12",
|
|
46
47
|
"typescript": "~6.0.3"
|
|
47
48
|
}
|
|
48
49
|
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { RsCoreTypes } from 'pega-repeating-structures-core';
|
|
2
|
-
import type { Action } from '@pega/cosmos-react-core';
|
|
3
|
-
interface UseRowActionsProps {
|
|
4
|
-
row: RsCoreTypes.Row;
|
|
5
|
-
meta: RsCoreTypes.Meta;
|
|
6
|
-
}
|
|
7
|
-
declare const useRowActions: ({ row, meta }: UseRowActionsProps) => (() => Promise<Action[]>) | undefined;
|
|
8
|
-
export default useRowActions;
|
|
9
|
-
//# sourceMappingURL=useRowActions.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useRowActions.d.ts","sourceRoot":"","sources":["../../../../../Core/Components/Card/hooks/useRowActions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD,UAAU,kBAAkB;IAC1B,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC;IACrB,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;CACxB;AAED,QAAA,MAAM,aAAa,GAAI,eAGpB,kBAAkB,KAAG,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,SA+BnD,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { useCallback } from 'react';
|
|
2
|
-
const useRowActions = ({ row, meta }) => {
|
|
3
|
-
const fetchActions = useCallback(async () => {
|
|
4
|
-
const rowContext = row.getContext();
|
|
5
|
-
let allActions = meta.rowActions ?? [];
|
|
6
|
-
// Row header cells share one mutable Column instance whose execution context is rebound to
|
|
7
|
-
// whichever row is currently rendering, so its value must be read now - before the await
|
|
8
|
-
// below - rather than deferred until the returned onClick fires.
|
|
9
|
-
const rowMeta = {
|
|
10
|
-
rowHeader: rowContext.getRowHeader?.()?.getValue(),
|
|
11
|
-
rowIndex: rowContext.getRowIndex?.() ?? -1
|
|
12
|
-
};
|
|
13
|
-
try {
|
|
14
|
-
const dynamicActions = await rowContext.getRowActionDetails(rowContext.getValue());
|
|
15
|
-
if (Array.isArray(dynamicActions)) {
|
|
16
|
-
allActions = [...dynamicActions, ...allActions];
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
catch (error) {
|
|
20
|
-
// On error, fall back to static actions only
|
|
21
|
-
}
|
|
22
|
-
return allActions.map(action => ({
|
|
23
|
-
...action,
|
|
24
|
-
onClick: () => {
|
|
25
|
-
action.onClick(rowContext.getValue(), rowContext.refreshRow, rowMeta);
|
|
26
|
-
}
|
|
27
|
-
}));
|
|
28
|
-
}, [row, meta.rowActions]);
|
|
29
|
-
return meta.editing || meta.deleting ? fetchActions : undefined;
|
|
30
|
-
};
|
|
31
|
-
export default useRowActions;
|
|
32
|
-
//# sourceMappingURL=useRowActions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useRowActions.js","sourceRoot":"","sources":["../../../../../Core/Components/Card/hooks/useRowActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAUpC,MAAM,aAAa,GAAG,CAAC,EACrB,GAAG,EACH,IAAI,EACe,EAAyC,EAAE;IAC9D,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,IAAuB,EAAE;QAC7D,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;QACpC,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;QAEvC,2FAA2F;QAC3F,yFAAyF;QACzF,iEAAiE;QACjE,MAAM,OAAO,GAAG;YACd,SAAS,EAAE,UAAU,CAAC,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE;YAClD,QAAQ,EAAE,UAAU,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;SAC3C,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,MAAM,UAAU,CAAC,mBAAmB,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;YACnF,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;gBAClC,UAAU,GAAG,CAAC,GAAG,cAAc,EAAE,GAAG,UAAU,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,6CAA6C;QAC/C,CAAC;QAED,OAAO,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC/B,GAAG,MAAM;YACT,OAAO,EAAE,GAAG,EAAE;gBACZ,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACxE,CAAC;SACF,CAAC,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAE3B,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC","sourcesContent":["import { useCallback } from 'react';\n\nimport type { RsCoreTypes } from 'pega-repeating-structures-core';\nimport type { Action } from '@pega/cosmos-react-core';\n\ninterface UseRowActionsProps {\n row: RsCoreTypes.Row;\n meta: RsCoreTypes.Meta;\n}\n\nconst useRowActions = ({\n row,\n meta\n}: UseRowActionsProps): (() => Promise<Action[]>) | undefined => {\n const fetchActions = useCallback(async (): Promise<Action[]> => {\n const rowContext = row.getContext();\n let allActions = meta.rowActions ?? [];\n\n // Row header cells share one mutable Column instance whose execution context is rebound to\n // whichever row is currently rendering, so its value must be read now - before the await\n // below - rather than deferred until the returned onClick fires.\n const rowMeta = {\n rowHeader: rowContext.getRowHeader?.()?.getValue(),\n rowIndex: rowContext.getRowIndex?.() ?? -1\n };\n\n try {\n const dynamicActions = await rowContext.getRowActionDetails(rowContext.getValue());\n if (Array.isArray(dynamicActions)) {\n allActions = [...dynamicActions, ...allActions];\n }\n } catch (error) {\n // On error, fall back to static actions only\n }\n\n return allActions.map(action => ({\n ...action,\n onClick: () => {\n action.onClick(rowContext.getValue(), rowContext.refreshRow, rowMeta);\n }\n }));\n }, [row, meta.rowActions]);\n\n return meta.editing || meta.deleting ? fetchActions : undefined;\n};\n\nexport default useRowActions;\n"]}
|