@pega/lists-react 10.0.0-build.4.8 → 10.0.0-build.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/Core/Components/Card/CardHeader.d.ts +2 -1
- package/lib/Core/Components/Card/CardHeader.d.ts.map +1 -1
- package/lib/Core/Components/Card/CardHeader.js +2 -1
- package/lib/Core/Components/Card/CardHeader.js.map +1 -1
- package/lib/Core/Components/Card/CardSubHeading.d.ts +10 -0
- package/lib/Core/Components/Card/CardSubHeading.d.ts.map +1 -0
- package/lib/Core/Components/Card/CardSubHeading.js +9 -0
- package/lib/Core/Components/Card/CardSubHeading.js.map +1 -0
- package/lib/Core/Components/Card/cardData.d.ts +11 -1
- package/lib/Core/Components/Card/cardData.d.ts.map +1 -1
- package/lib/Core/Components/Card/cardData.js +21 -3
- package/lib/Core/Components/Card/cardData.js.map +1 -1
- package/lib/Core/Components/Card/index.d.ts +1 -1
- package/lib/Core/Components/Card/index.d.ts.map +1 -1
- package/lib/Core/Components/Card/index.js +1 -1
- package/lib/Core/Components/Card/index.js.map +1 -1
- package/lib/Core/Components/DefaultComponents/PersonalizationCreateEdit.d.ts.map +1 -1
- package/lib/Core/Components/DefaultComponents/PersonalizationCreateEdit.js +2 -1
- package/lib/Core/Components/DefaultComponents/PersonalizationCreateEdit.js.map +1 -1
- package/lib/Core/Components/Filters/AdvanceFilter.d.ts.map +1 -1
- package/lib/Core/Components/Filters/AdvanceFilter.js +1 -1
- package/lib/Core/Components/Filters/AdvanceFilter.js.map +1 -1
- package/lib/Core/Components/Filters/SelectFilter.d.ts.map +1 -1
- package/lib/Core/Components/Filters/SelectFilter.js +4 -3
- package/lib/Core/Components/Filters/SelectFilter.js.map +1 -1
- package/lib/Core/Components/Filters/SimpleFilter.d.ts.map +1 -1
- package/lib/Core/Components/Filters/SimpleFilter.js +1 -1
- package/lib/Core/Components/Filters/SimpleFilter.js.map +1 -1
- package/lib/Core/Components/Toolbar/AdvanceToolbar.d.ts.map +1 -1
- package/lib/Core/Components/Toolbar/AdvanceToolbar.js +5 -2
- package/lib/Core/Components/Toolbar/AdvanceToolbar.js.map +1 -1
- package/lib/Core/Components/Toolbar/FieldSelector.js +1 -1
- package/lib/Core/Components/Toolbar/FieldSelector.js.map +1 -1
- package/lib/Core/Components/Toolbar/RefreshBanner.d.ts +5 -1
- package/lib/Core/Components/Toolbar/RefreshBanner.d.ts.map +1 -1
- package/lib/Core/Components/Toolbar/RefreshBanner.js +22 -6
- package/lib/Core/Components/Toolbar/RefreshBanner.js.map +1 -1
- package/lib/Core/Components/Toolbar/SimpleToolbar.d.ts.map +1 -1
- package/lib/Core/Components/Toolbar/SimpleToolbar.js +2 -2
- package/lib/Core/Components/Toolbar/SimpleToolbar.js.map +1 -1
- package/lib/Core/Components/Toolbar/hooks/useFilter.d.ts.map +1 -1
- package/lib/Core/Components/Toolbar/hooks/useFilter.js +1 -1
- package/lib/Core/Components/Toolbar/hooks/useFilter.js.map +1 -1
- package/lib/Core/Components/Toolbar/utils/utils.d.ts +3 -3
- package/lib/Core/Components/Toolbar/utils/utils.d.ts.map +1 -1
- package/lib/Core/Components/Toolbar/utils/utils.js +6 -6
- package/lib/Core/Components/Toolbar/utils/utils.js.map +1 -1
- package/lib/Core/Utils/styles.d.ts.map +1 -1
- package/lib/Core/Utils/styles.js +5 -1
- package/lib/Core/Utils/styles.js.map +1 -1
- package/lib/Core/Views/Gallery/Components/GalleryCard.d.ts +1 -1
- package/lib/Core/Views/Gallery/Components/GalleryCard.d.ts.map +1 -1
- package/lib/Core/Views/Gallery/Components/GalleryCard.js +5 -4
- package/lib/Core/Views/Gallery/Components/GalleryCard.js.map +1 -1
- package/lib/Core/Views/Gallery/Gallery.types.d.ts +1 -0
- package/lib/Core/Views/Gallery/Gallery.types.d.ts.map +1 -1
- package/lib/Core/Views/Gallery/Gallery.types.js.map +1 -1
- package/lib/Core/Views/Gallery/index.d.ts +1 -1
- package/lib/Core/Views/Gallery/index.d.ts.map +1 -1
- package/lib/Core/Views/Gallery/index.js +4 -9
- package/lib/Core/Views/Gallery/index.js.map +1 -1
- package/lib/Core/Views/Kanban/Kanban.styles.d.ts +3 -0
- package/lib/Core/Views/Kanban/Kanban.styles.d.ts.map +1 -1
- package/lib/Core/Views/Kanban/Kanban.styles.js +23 -12
- package/lib/Core/Views/Kanban/Kanban.styles.js.map +1 -1
- package/lib/Core/Views/Kanban/Kanban.types.d.ts +2 -0
- package/lib/Core/Views/Kanban/Kanban.types.d.ts.map +1 -1
- package/lib/Core/Views/Kanban/Kanban.types.js.map +1 -1
- package/lib/Core/Views/Kanban/KanbanCard.d.ts +5 -2
- package/lib/Core/Views/Kanban/KanbanCard.d.ts.map +1 -1
- package/lib/Core/Views/Kanban/KanbanCard.js +7 -6
- package/lib/Core/Views/Kanban/KanbanCard.js.map +1 -1
- package/lib/Core/Views/Kanban/KanbanLane.d.ts +4 -1
- package/lib/Core/Views/Kanban/KanbanLane.d.ts.map +1 -1
- package/lib/Core/Views/Kanban/KanbanLane.js +5 -7
- package/lib/Core/Views/Kanban/KanbanLane.js.map +1 -1
- package/lib/Core/Views/Kanban/KanbanLaneHeader.d.ts +2 -1
- package/lib/Core/Views/Kanban/KanbanLaneHeader.d.ts.map +1 -1
- package/lib/Core/Views/Kanban/KanbanLaneHeader.js +2 -1
- package/lib/Core/Views/Kanban/KanbanLaneHeader.js.map +1 -1
- package/lib/Core/Views/Kanban/KanbanLaneVirtualizer.d.ts +20 -0
- package/lib/Core/Views/Kanban/KanbanLaneVirtualizer.d.ts.map +1 -0
- package/lib/Core/Views/Kanban/KanbanLaneVirtualizer.js +37 -0
- package/lib/Core/Views/Kanban/KanbanLaneVirtualizer.js.map +1 -0
- package/lib/Core/Views/Kanban/hooks/useKanbanLanesVirtualization.d.ts +19 -0
- package/lib/Core/Views/Kanban/hooks/useKanbanLanesVirtualization.d.ts.map +1 -0
- package/lib/Core/Views/Kanban/hooks/useKanbanLanesVirtualization.js +32 -0
- package/lib/Core/Views/Kanban/hooks/useKanbanLanesVirtualization.js.map +1 -0
- package/lib/Core/Views/Kanban/index.d.ts.map +1 -1
- package/lib/Core/Views/Kanban/index.js +12 -12
- package/lib/Core/Views/Kanban/index.js.map +1 -1
- package/lib/Core/Views/Table/StyledTableContainer.d.ts.map +1 -1
- package/lib/Core/Views/Table/StyledTableContainer.js +17 -10
- package/lib/Core/Views/Table/StyledTableContainer.js.map +1 -1
- package/lib/Core/Views/Timeline/Timeline.styles.d.ts +2 -2
- package/package.json +7 -7
|
@@ -29,19 +29,30 @@ export const StyledKanbanLaneHeader = styled.header(({ theme }) => css `
|
|
|
29
29
|
}
|
|
30
30
|
`);
|
|
31
31
|
StyledKanbanLaneHeader.defaultProps = defaultThemeProp;
|
|
32
|
-
export const StyledKanbanCards = styled.div
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
32
|
+
export const StyledKanbanCards = styled.div `
|
|
33
|
+
position: relative;
|
|
34
|
+
flex: 1 1 auto;
|
|
35
|
+
min-block-size: 0;
|
|
36
|
+
display: flex;
|
|
37
|
+
overflow: auto;
|
|
38
|
+
`;
|
|
38
39
|
StyledKanbanCards.defaultProps = defaultThemeProp;
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
// Set minimum height of 5 rem for empty lane to avoid collapsing the lane when there are no cards.
|
|
41
|
+
export const StyledEmptyKanbanCards = styled(StyledKanbanCards)(({ theme }) => css `
|
|
42
|
+
min-block-size: calc(${theme.base.spacing} * 10);
|
|
43
|
+
`);
|
|
44
|
+
StyledEmptyKanbanCards.defaultProps = defaultThemeProp;
|
|
45
|
+
export const StyledKanbanCard = styled.div(({ theme }) => css `
|
|
46
|
+
box-sizing: border-box;
|
|
41
47
|
inline-size: 100%;
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
48
|
+
padding-inline: ${theme.base.spacing};
|
|
49
|
+
padding-block-end: ${theme.base.spacing};
|
|
50
|
+
|
|
51
|
+
${StyledSelectionCard} {
|
|
52
|
+
inline-size: 100%;
|
|
53
|
+
max-inline-size: 100%;
|
|
54
|
+
min-inline-size: 0;
|
|
55
|
+
}
|
|
56
|
+
`);
|
|
46
57
|
StyledKanbanCard.defaultProps = defaultThemeProp;
|
|
47
58
|
//# sourceMappingURL=Kanban.styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Kanban.styles.js","sourceRoot":"","sources":["../../../../Core/Views/Kanban/Kanban.styles.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2EAA2E,CAAC;AAGhH,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAO5D,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,GAAG,CAC7C,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,GAAG,CAAA;MAC3B,sBAAsB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;;GAEjD,CACF,CAAC;AAEF,qBAAqB,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAEtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CACzC,GAAG,EAAE,CAAC,GAAG,CAAA;;;;GAIR,CACF,CAAC;AAEF,iBAAiB,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAElD,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAC5C,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,CAAA;;qBAEC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;kBAC9B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC;;GAEzD,CACF,CAAC;AAEF,gBAAgB,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAEjD,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,CACjD,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,CAAA;aACP,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;mBAChC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC;;;;;GAKtD,CACF,CAAC;AAEF,sBAAsB,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAEvD,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"Kanban.styles.js","sourceRoot":"","sources":["../../../../Core/Views/Kanban/Kanban.styles.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2EAA2E,CAAC;AAGhH,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAO5D,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,GAAG,CAC7C,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,GAAG,CAAA;MAC3B,sBAAsB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;;GAEjD,CACF,CAAC;AAEF,qBAAqB,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAEtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CACzC,GAAG,EAAE,CAAC,GAAG,CAAA;;;;GAIR,CACF,CAAC;AAEF,iBAAiB,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAElD,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAC5C,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,CAAA;;qBAEC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;kBAC9B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC;;GAEzD,CACF,CAAC;AAEF,gBAAgB,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAEjD,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,CACjD,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,CAAA;aACP,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;mBAChC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC;;;;;GAKtD,CACF,CAAC;AAEF,sBAAsB,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAEvD,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;CAM1C,CAAC;AAEF,iBAAiB,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAElD,mGAAmG;AACnG,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAC7D,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,CAAA;2BACO,KAAK,CAAC,IAAI,CAAC,OAAO;GAC1C,CACF,CAAC;AAEF,sBAAsB,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAEvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CACxC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,CAAA;;;sBAGE,KAAK,CAAC,IAAI,CAAC,OAAO;yBACf,KAAK,CAAC,IAAI,CAAC,OAAO;;MAErC,mBAAmB;;;;;GAKtB,CACF,CAAC;AAEF,gBAAgB,CAAC,YAAY,GAAG,gBAAgB,CAAC","sourcesContent":["import styled, { css } from 'styled-components';\n\nimport { defaultThemeProp } from '@pega/cosmos-react-core';\nimport { StyledSelectionCard } from '@pega/cosmos-react-core/lib/components/SelectionCard/SelectionCard.styles';\nimport type { RsCoreTypes } from 'pega-repeating-structures-core';\n\nimport { generateRSHeightStyles } from '../../Utils/styles';\n\ninterface StyledKanbanContainerProps {\n view: RsCoreTypes.View;\n isFullscreen: boolean;\n}\n\nexport const StyledKanbanContainer = styled.div<StyledKanbanContainerProps>(\n ({ view, isFullscreen }) => css`\n ${generateRSHeightStyles({ view, isFullscreen })}\n min-inline-size: 0;\n `\n);\n\nStyledKanbanContainer.defaultProps = defaultThemeProp;\n\nexport const StyledKanbanBoard = styled.div(\n () => css`\n flex: 1 1 auto;\n min-block-size: 0;\n overflow: auto;\n `\n);\n\nStyledKanbanBoard.defaultProps = defaultThemeProp;\n\nexport const StyledKanbanLane = styled.section(\n ({ theme }) => css`\n min-block-size: 0;\n border-radius: ${theme.base['border-radius']};\n background: ${theme.base.palette['secondary-background']};\n overflow: hidden;\n `\n);\n\nStyledKanbanLane.defaultProps = defaultThemeProp;\n\nexport const StyledKanbanLaneHeader = styled.header(\n ({ theme }) => css`\n color: ${theme.base.palette['foreground-color']};\n font-weight: ${theme.base['font-weight']['semi-bold']};\n\n > :first-child {\n min-inline-size: 0;\n }\n `\n);\n\nStyledKanbanLaneHeader.defaultProps = defaultThemeProp;\n\nexport const StyledKanbanCards = styled.div`\n position: relative;\n flex: 1 1 auto;\n min-block-size: 0;\n display: flex;\n overflow: auto;\n`;\n\nStyledKanbanCards.defaultProps = defaultThemeProp;\n\n// Set minimum height of 5 rem for empty lane to avoid collapsing the lane when there are no cards.\nexport const StyledEmptyKanbanCards = styled(StyledKanbanCards)(\n ({ theme }) => css`\n min-block-size: calc(${theme.base.spacing} * 10);\n `\n);\n\nStyledEmptyKanbanCards.defaultProps = defaultThemeProp;\n\nexport const StyledKanbanCard = styled.div(\n ({ theme }) => css`\n box-sizing: border-box;\n inline-size: 100%;\n padding-inline: ${theme.base.spacing};\n padding-block-end: ${theme.base.spacing};\n\n ${StyledSelectionCard} {\n inline-size: 100%;\n max-inline-size: 100%;\n min-inline-size: 0;\n }\n `\n);\n\nStyledKanbanCard.defaultProps = defaultThemeProp;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Kanban.types.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Kanban/Kanban.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAElE,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC;IACrB,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;IACvB,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC;IACrC,YAAY,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"Kanban.types.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Kanban/Kanban.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAElE,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC;IACrB,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;IACvB,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC;IACrC,YAAY,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC;IAClC,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Kanban.types.js","sourceRoot":"","sources":["../../../../Core/Views/Kanban/Kanban.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { RsCoreTypes } from 'pega-repeating-structures-core';\n\nexport interface KanbanCardProps {\n row: RsCoreTypes.Row;\n meta: RsCoreTypes.Meta;\n visibleColumns: RsCoreTypes.Column[];\n headerColumn?: RsCoreTypes.Column;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Kanban.types.js","sourceRoot":"","sources":["../../../../Core/Views/Kanban/Kanban.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { RsCoreTypes } from 'pega-repeating-structures-core';\n\nexport interface KanbanCardProps {\n row: RsCoreTypes.Row;\n meta: RsCoreTypes.Meta;\n visibleColumns: RsCoreTypes.Column[];\n headerColumn?: RsCoreTypes.Column;\n subHeadingsColumns?: RsCoreTypes.Column[];\n dataIndex?: number;\n}\n"]}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import type { KanbanCardProps } from './Kanban.types';
|
|
2
|
-
declare const
|
|
3
|
-
|
|
2
|
+
declare const _default: import("react").MemoExoticComponent<{
|
|
3
|
+
({ headerColumn, subHeadingsColumns, row, meta, visibleColumns, dataIndex }: KanbanCardProps): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
displayName: string;
|
|
5
|
+
}>;
|
|
6
|
+
export default _default;
|
|
4
7
|
//# sourceMappingURL=KanbanCard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KanbanCard.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Kanban/KanbanCard.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC
|
|
1
|
+
{"version":3,"file":"KanbanCard.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Kanban/KanbanCard.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;;iFASnD,eAAe;;;AAqClB,wBAAgC"}
|
|
@@ -3,17 +3,18 @@ import { memo } from 'react';
|
|
|
3
3
|
import { SelectionCardDisplay } from '@pega/cosmos-react-core';
|
|
4
4
|
import { getCardData, getCardUIProps, useRowActions } from '../../Components/Card';
|
|
5
5
|
import { StyledKanbanCard } from './Kanban.styles';
|
|
6
|
-
const KanbanCard =
|
|
7
|
-
const { label, image, footer, fields, 'aria-label': ariaLabel } = getCardData({
|
|
6
|
+
const KanbanCard = ({ headerColumn, subHeadingsColumns, row, meta, visibleColumns, dataIndex }) => {
|
|
7
|
+
const { label, subheading, image, footer, fields, 'aria-label': ariaLabel } = getCardData({
|
|
8
8
|
row,
|
|
9
9
|
visibleColumns,
|
|
10
10
|
cardConfig: meta.cardConfig,
|
|
11
|
-
headerColumn
|
|
11
|
+
headerColumn,
|
|
12
|
+
subHeadingsColumns
|
|
12
13
|
});
|
|
13
14
|
const uiProps = getCardUIProps({ row });
|
|
14
15
|
const fetchActionsCb = useRowActions({ row, meta });
|
|
15
|
-
return (_jsx(StyledKanbanCard, { "data-key": uiProps['data-key'], children: _jsx(SelectionCardDisplay, { "aria-label": ariaLabel, label: label, headingTag: 'h3', image: image, fields: fields, actions: fetchActionsCb, footer: footer, draggable: false }) }));
|
|
16
|
-
}
|
|
16
|
+
return (_jsx(StyledKanbanCard, { "data-key": uiProps['data-key'], "data-index": dataIndex, children: _jsx(SelectionCardDisplay, { "aria-label": ariaLabel, label: label, subheading: subheading, headingTag: 'h3', image: image, fields: fields, actions: fetchActionsCb, footer: footer, draggable: false }) }));
|
|
17
|
+
};
|
|
17
18
|
KanbanCard.displayName = 'KanbanCard';
|
|
18
|
-
export default KanbanCard;
|
|
19
|
+
export default memo(KanbanCard);
|
|
19
20
|
//# sourceMappingURL=KanbanCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KanbanCard.js","sourceRoot":"","sources":["../../../../Core/Views/Kanban/KanbanCard.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAE7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD,MAAM,UAAU,GAAG,
|
|
1
|
+
{"version":3,"file":"KanbanCard.js","sourceRoot":"","sources":["../../../../Core/Views/Kanban/KanbanCard.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAE7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD,MAAM,UAAU,GAAG,CAAC,EAClB,YAAY,EACZ,kBAAkB,EAClB,GAAG,EACH,IAAI,EACJ,cAAc,EACd,SAAS,EACO,EAAE,EAAE;IACpB,MAAM,EACJ,KAAK,EACL,UAAU,EACV,KAAK,EACL,MAAM,EACN,MAAM,EACN,YAAY,EAAE,SAAS,EACxB,GAAG,WAAW,CAAC;QACd,GAAG;QACH,cAAc;QACd,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,YAAY;QACZ,kBAAkB;KACnB,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,cAAc,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IACxC,MAAM,cAAc,GAAG,aAAa,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IAEpD,OAAO,CACL,KAAC,gBAAgB,gBAAW,OAAO,CAAC,UAAU,CAAC,gBAAc,SAAS,YACpE,KAAC,oBAAoB,kBACP,SAAS,EACrB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,EACtB,UAAU,EAAC,IAAI,EACf,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,KAAK,GAChB,GACe,CACpB,CAAC;AACJ,CAAC,CAAC;AAEF,UAAU,CAAC,WAAW,GAAG,YAAY,CAAC;AAEtC,eAAe,IAAI,CAAC,UAAU,CAAC,CAAC","sourcesContent":["import { memo } from 'react';\n\nimport { SelectionCardDisplay } from '@pega/cosmos-react-core';\n\nimport { getCardData, getCardUIProps, useRowActions } from '../../Components/Card';\n\nimport { StyledKanbanCard } from './Kanban.styles';\nimport type { KanbanCardProps } from './Kanban.types';\n\nconst KanbanCard = ({\n headerColumn,\n subHeadingsColumns,\n row,\n meta,\n visibleColumns,\n dataIndex\n}: KanbanCardProps) => {\n const {\n label,\n subheading,\n image,\n footer,\n fields,\n 'aria-label': ariaLabel\n } = getCardData({\n row,\n visibleColumns,\n cardConfig: meta.cardConfig,\n headerColumn,\n subHeadingsColumns\n });\n const uiProps = getCardUIProps({ row });\n const fetchActionsCb = useRowActions({ row, meta });\n\n return (\n <StyledKanbanCard data-key={uiProps['data-key']} data-index={dataIndex}>\n <SelectionCardDisplay\n aria-label={ariaLabel}\n label={label}\n subheading={subheading}\n headingTag='h3'\n image={image}\n fields={fields}\n actions={fetchActionsCb}\n footer={footer}\n draggable={false}\n />\n </StyledKanbanCard>\n );\n};\n\nKanbanCard.displayName = 'KanbanCard';\n\nexport default memo(KanbanCard);\n"]}
|
|
@@ -6,12 +6,15 @@ interface KanbanLaneProps {
|
|
|
6
6
|
meta: RsCoreTypes.Meta;
|
|
7
7
|
visibleColumns: RsCoreTypes.Column[];
|
|
8
8
|
headerColumn?: RsCoreTypes.Column;
|
|
9
|
+
subHeadingsColumns?: RsCoreTypes.Column[];
|
|
9
10
|
emptyState: ReactNode;
|
|
11
|
+
/** Stable identifier for the lane, used to scope the card virtualizer instance. */
|
|
12
|
+
laneId: string;
|
|
10
13
|
}
|
|
11
14
|
interface EmptyKanbanLaneProps {
|
|
12
15
|
emptyState: ReactNode;
|
|
13
16
|
}
|
|
14
|
-
declare function KanbanLane({ lane, laneColumn, meta, visibleColumns, headerColumn, emptyState }: KanbanLaneProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
declare function KanbanLane({ lane, laneColumn, meta, visibleColumns, headerColumn, subHeadingsColumns, emptyState, laneId }: KanbanLaneProps): import("react/jsx-runtime").JSX.Element;
|
|
15
18
|
declare namespace KanbanLane {
|
|
16
19
|
var displayName: string;
|
|
17
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KanbanLane.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Kanban/KanbanLane.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"KanbanLane.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Kanban/KanbanLane.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAWlE,UAAU,eAAe;IACvB,IAAI,EAAE,WAAW,CAAC,cAAc,CAAC;IACjC,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC;IAChC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;IACvB,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC;IACrC,YAAY,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC;IAClC,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC;IAC1C,UAAU,EAAE,SAAS,CAAC;IACtB,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,oBAAoB;IAC5B,UAAU,EAAE,SAAS,CAAC;CACvB;AAED,iBAAS,UAAU,CAAC,EAClB,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,UAAU,EACV,MAAM,EACP,EAAE,eAAe,2CAmCjB;kBA5CQ,UAAU;;;AAgDnB,eAAO,MAAM,eAAe,GAAI,gBAAgB,oBAAoB,4CAoBnE,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Count, Flex, Grid } from '@pega/cosmos-react-core';
|
|
3
|
-
import KanbanCard from './KanbanCard';
|
|
4
3
|
import KanbanLaneHeader from './KanbanLaneHeader';
|
|
5
|
-
import
|
|
6
|
-
|
|
4
|
+
import KanbanLaneVirtualizer from './KanbanLaneVirtualizer';
|
|
5
|
+
import { StyledEmptyKanbanCards, StyledKanbanCards, StyledKanbanLane, StyledKanbanLaneHeader } from './Kanban.styles';
|
|
6
|
+
function KanbanLane({ lane, laneColumn, meta, visibleColumns, headerColumn, subHeadingsColumns, emptyState, laneId }) {
|
|
7
7
|
const laneRows = lane.getRows?.() ?? [];
|
|
8
|
-
return (_jsxs(Flex, { as: StyledKanbanLane, role: 'listitem', container: { direction: 'column' }, children: [_jsxs(Grid, { as: StyledKanbanLaneHeader, container: { cols: 'minmax(0, 1fr) auto', alignItems: 'center', gap: 0.5, pad: 1 }, children: [_jsx(KanbanLaneHeader, { column: laneColumn, groupHeader: lane }), _jsx(Count, { children: lane.count })] }), _jsx(Flex, { as:
|
|
9
|
-
? emptyState
|
|
10
|
-
: laneRows.map(row => (_jsx(KanbanCard, { meta: meta, row: row, visibleColumns: visibleColumns, headerColumn: headerColumn }, row.reactKey))) })] }));
|
|
8
|
+
return (_jsxs(Flex, { as: StyledKanbanLane, "data-kanban-lane": true, role: 'listitem', container: { direction: 'column' }, children: [_jsxs(Grid, { as: StyledKanbanLaneHeader, container: { cols: 'minmax(0, 1fr) auto', alignItems: 'center', gap: 0.5, pad: 1 }, children: [_jsx(KanbanLaneHeader, { column: laneColumn, groupHeader: lane }), _jsx(Count, { children: lane.count })] }), lane.count === 0 ? (_jsx(Flex, { as: StyledEmptyKanbanCards, container: { direction: 'column', gap: 1, pad: 1 }, children: emptyState })) : (_jsx(StyledKanbanCards, { children: _jsx(KanbanLaneVirtualizer, { laneId: laneId, rows: laneRows, meta: meta, visibleColumns: visibleColumns, headerColumn: headerColumn, subHeadingsColumns: subHeadingsColumns }) }))] }));
|
|
11
9
|
}
|
|
12
10
|
KanbanLane.displayName = 'KanbanLane';
|
|
13
11
|
export const EmptyKanbanLane = ({ emptyState }) => {
|
|
@@ -17,7 +15,7 @@ export const EmptyKanbanLane = ({ emptyState }) => {
|
|
|
17
15
|
gap: 0.5,
|
|
18
16
|
pad: 1,
|
|
19
17
|
justifyItems: 'end'
|
|
20
|
-
}, children: _jsx(Count, { children: 0 }) }), _jsx(Flex, { as:
|
|
18
|
+
}, children: _jsx(Count, { children: 0 }) }), _jsx(Flex, { as: StyledEmptyKanbanCards, container: { direction: 'column', gap: 1, pad: 1 }, children: emptyState })] }));
|
|
21
19
|
};
|
|
22
20
|
export default KanbanLane;
|
|
23
21
|
//# sourceMappingURL=KanbanLane.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KanbanLane.js","sourceRoot":"","sources":["../../../../Core/Views/Kanban/KanbanLane.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAG5D,OAAO,
|
|
1
|
+
{"version":3,"file":"KanbanLane.js","sourceRoot":"","sources":["../../../../Core/Views/Kanban/KanbanLane.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAG5D,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAkBzB,SAAS,UAAU,CAAC,EAClB,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,UAAU,EACV,MAAM,EACU;IAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC;IAExC,OAAO,CACL,MAAC,IAAI,IACH,EAAE,EAAE,gBAAgB,4BAEpB,IAAI,EAAC,UAAU,EACf,SAAS,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,aAElC,MAAC,IAAI,IACH,EAAE,EAAE,sBAAsB,EAC1B,SAAS,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,aAElF,KAAC,gBAAgB,IAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,GAAI,EAC3D,KAAC,KAAK,cAAE,IAAI,CAAC,KAAK,GAAS,IACtB,EACN,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAClB,KAAC,IAAI,IAAC,EAAE,EAAE,sBAAsB,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,YACjF,UAAU,GACN,CACR,CAAC,CAAC,CAAC,CACF,KAAC,iBAAiB,cAChB,KAAC,qBAAqB,IACpB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,IAAI,EACV,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,YAAY,EAC1B,kBAAkB,EAAE,kBAAkB,GACtC,GACgB,CACrB,IACI,CACR,CAAC;AACJ,CAAC;AAED,UAAU,CAAC,WAAW,GAAG,YAAY,CAAC;AAEtC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAE,UAAU,EAAwB,EAAE,EAAE;IACtE,OAAO,CACL,MAAC,IAAI,IAAC,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAC,UAAU,EAAC,SAAS,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,aAC5E,KAAC,IAAI,IACH,EAAE,EAAE,sBAAsB,EAC1B,SAAS,EAAE;oBACT,IAAI,EAAE,qBAAqB;oBAC3B,UAAU,EAAE,QAAQ;oBACpB,GAAG,EAAE,GAAG;oBACR,GAAG,EAAE,CAAC;oBACN,YAAY,EAAE,KAAK;iBACpB,YAED,KAAC,KAAK,cAAE,CAAC,GAAS,GACb,EACP,KAAC,IAAI,IAAC,EAAE,EAAE,sBAAsB,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,YACjF,UAAU,GACN,IACF,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC","sourcesContent":["import type { ReactNode } from 'react';\n\nimport { Count, Flex, Grid } from '@pega/cosmos-react-core';\nimport type { RsCoreTypes } from 'pega-repeating-structures-core';\n\nimport KanbanLaneHeader from './KanbanLaneHeader';\nimport KanbanLaneVirtualizer from './KanbanLaneVirtualizer';\nimport {\n StyledEmptyKanbanCards,\n StyledKanbanCards,\n StyledKanbanLane,\n StyledKanbanLaneHeader\n} from './Kanban.styles';\n\ninterface KanbanLaneProps {\n lane: RsCoreTypes.GroupGenerator;\n laneColumn?: RsCoreTypes.Column;\n meta: RsCoreTypes.Meta;\n visibleColumns: RsCoreTypes.Column[];\n headerColumn?: RsCoreTypes.Column;\n subHeadingsColumns?: RsCoreTypes.Column[];\n emptyState: ReactNode;\n /** Stable identifier for the lane, used to scope the card virtualizer instance. */\n laneId: string;\n}\n\ninterface EmptyKanbanLaneProps {\n emptyState: ReactNode;\n}\n\nfunction KanbanLane({\n lane,\n laneColumn,\n meta,\n visibleColumns,\n headerColumn,\n subHeadingsColumns,\n emptyState,\n laneId\n}: KanbanLaneProps) {\n const laneRows = lane.getRows?.() ?? [];\n\n return (\n <Flex\n as={StyledKanbanLane}\n data-kanban-lane\n role='listitem'\n container={{ direction: 'column' }}\n >\n <Grid\n as={StyledKanbanLaneHeader}\n container={{ cols: 'minmax(0, 1fr) auto', alignItems: 'center', gap: 0.5, pad: 1 }}\n >\n <KanbanLaneHeader column={laneColumn} groupHeader={lane} />\n <Count>{lane.count}</Count>\n </Grid>\n {lane.count === 0 ? (\n <Flex as={StyledEmptyKanbanCards} container={{ direction: 'column', gap: 1, pad: 1 }}>\n {emptyState}\n </Flex>\n ) : (\n <StyledKanbanCards>\n <KanbanLaneVirtualizer\n laneId={laneId}\n rows={laneRows}\n meta={meta}\n visibleColumns={visibleColumns}\n headerColumn={headerColumn}\n subHeadingsColumns={subHeadingsColumns}\n />\n </StyledKanbanCards>\n )}\n </Flex>\n );\n}\n\nKanbanLane.displayName = 'KanbanLane';\n\nexport const EmptyKanbanLane = ({ emptyState }: EmptyKanbanLaneProps) => {\n return (\n <Flex as={StyledKanbanLane} role='listitem' container={{ direction: 'column' }}>\n <Grid\n as={StyledKanbanLaneHeader}\n container={{\n cols: 'minmax(0, 1fr) auto',\n alignItems: 'center',\n gap: 0.5,\n pad: 1,\n justifyItems: 'end'\n }}\n >\n <Count>{0}</Count>\n </Grid>\n <Flex as={StyledEmptyKanbanCards} container={{ direction: 'column', gap: 1, pad: 1 }}>\n {emptyState}\n </Flex>\n </Flex>\n );\n};\n\nexport default KanbanLane;\n"]}
|
|
@@ -7,5 +7,6 @@ declare function KanbanLaneHeader({ column, groupHeader }: KanbanLaneHeaderProps
|
|
|
7
7
|
declare namespace KanbanLaneHeader {
|
|
8
8
|
var displayName: string;
|
|
9
9
|
}
|
|
10
|
-
|
|
10
|
+
declare const _default: import("react").MemoExoticComponent<typeof KanbanLaneHeader>;
|
|
11
|
+
export default _default;
|
|
11
12
|
//# sourceMappingURL=KanbanLaneHeader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KanbanLaneHeader.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Kanban/KanbanLaneHeader.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"KanbanLaneHeader.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Kanban/KanbanLaneHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAIlE,UAAU,qBAAqB;IAC7B,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,WAAW,CAAC,cAAc,CAAC;CAC1C;AAED,iBAAS,gBAAgB,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,qBAAqB,kDAevE;kBAfQ,gBAAgB;;;;AAmBzB,wBAAsC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { memo } from 'react';
|
|
2
3
|
import RenderingEngine from '../../Components/RenderingEngine/RenderCell';
|
|
3
4
|
function KanbanLaneHeader({ column, groupHeader }) {
|
|
4
5
|
if (!column || !groupHeader) {
|
|
@@ -11,5 +12,5 @@ function KanbanLaneHeader({ column, groupHeader }) {
|
|
|
11
12
|
} }));
|
|
12
13
|
}
|
|
13
14
|
KanbanLaneHeader.displayName = 'KanbanLaneHeader';
|
|
14
|
-
export default KanbanLaneHeader;
|
|
15
|
+
export default memo(KanbanLaneHeader);
|
|
15
16
|
//# sourceMappingURL=KanbanLaneHeader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KanbanLaneHeader.js","sourceRoot":"","sources":["../../../../Core/Views/Kanban/KanbanLaneHeader.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"KanbanLaneHeader.js","sourceRoot":"","sources":["../../../../Core/Views/Kanban/KanbanLaneHeader.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAI7B,OAAO,eAAe,MAAM,6CAA6C,CAAC;AAO1E,SAAS,gBAAgB,CAAC,EAAE,MAAM,EAAE,WAAW,EAAyB;IACtE,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAEjC,OAAO,CACL,KAAC,eAAe,OACV,MAAM,CAAC,uBAAuB,EAAE,EACpC,OAAO,EAAE;YACP,QAAQ,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI;YAChC,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;SACvF,GACD,CACH,CAAC;AACJ,CAAC;AAED,gBAAgB,CAAC,WAAW,GAAG,kBAAkB,CAAC;AAElD,eAAe,IAAI,CAAC,gBAAgB,CAAC,CAAC","sourcesContent":["import { memo } from 'react';\n\nimport type { RsCoreTypes } from 'pega-repeating-structures-core';\n\nimport RenderingEngine from '../../Components/RenderingEngine/RenderCell';\n\ninterface KanbanLaneHeaderProps {\n column?: RsCoreTypes.Column;\n groupHeader?: RsCoreTypes.GroupGenerator;\n}\n\nfunction KanbanLaneHeader({ column, groupHeader }: KanbanLaneHeaderProps) {\n if (!column || !groupHeader) {\n return null;\n }\n column.setExecutionContext(null);\n\n return (\n <RenderingEngine\n {...column.getRenderingEngineProps()}\n context={{\n getValue: () => groupHeader.name,\n getExecutionContext: () => ({ getValue: () => groupHeader.data, name: 'groupHeader' })\n }}\n />\n );\n}\n\nKanbanLaneHeader.displayName = 'KanbanLaneHeader';\n\nexport default memo(KanbanLaneHeader);\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { RsCoreTypes } from 'pega-repeating-structures-core';
|
|
2
|
+
interface KanbanLaneVirtualizerProps {
|
|
3
|
+
/** Stable identifier for the lane, used to scope the virtualizer instance. */
|
|
4
|
+
laneId: string;
|
|
5
|
+
/** All rows belonging to this lane (available client-side). */
|
|
6
|
+
rows: RsCoreTypes.Row[];
|
|
7
|
+
meta: RsCoreTypes.Meta;
|
|
8
|
+
visibleColumns: RsCoreTypes.Column[];
|
|
9
|
+
headerColumn?: RsCoreTypes.Column;
|
|
10
|
+
subHeadingsColumns?: RsCoreTypes.Column[];
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Client-side vertical virtualization for the cards within a single Kanban lane.
|
|
14
|
+
*/
|
|
15
|
+
declare function KanbanLaneVirtualizer({ laneId, rows, meta, visibleColumns, headerColumn, subHeadingsColumns }: KanbanLaneVirtualizerProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
declare namespace KanbanLaneVirtualizer {
|
|
17
|
+
var displayName: string;
|
|
18
|
+
}
|
|
19
|
+
export default KanbanLaneVirtualizer;
|
|
20
|
+
//# sourceMappingURL=KanbanLaneVirtualizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KanbanLaneVirtualizer.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Kanban/KanbanLaneVirtualizer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAalE,UAAU,0BAA0B;IAClC,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,IAAI,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC;IACxB,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;IACvB,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC;IACrC,YAAY,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC;IAClC,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC;CAC3C;AAED;;GAEG;AACH,iBAAS,qBAAqB,CAAC,EAC7B,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,cAAc,EACd,YAAY,EACZ,kBAAkB,EACnB,EAAE,0BAA0B,2CAoD5B;kBA3DQ,qBAAqB;;;AA+D9B,eAAe,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
3
|
+
import VariableHeightVirtualizer, {} from '../../Components/Virtualise/VariableHeightVirtualizer/VariableHeightVirtualizer';
|
|
4
|
+
import KanbanCard from './KanbanCard';
|
|
5
|
+
/** Estimated card height (px) used before a card is measured by the virtualizer. */
|
|
6
|
+
const KANBAN_DEFAULT_CARD_HEIGHT = 600;
|
|
7
|
+
/** Extra cards rendered above and below the viewport for smooth scrolling. */
|
|
8
|
+
const KANBAN_CARD_BUFFER = 5;
|
|
9
|
+
/**
|
|
10
|
+
* Client-side vertical virtualization for the cards within a single Kanban lane.
|
|
11
|
+
*/
|
|
12
|
+
function KanbanLaneVirtualizer({ laneId, rows, meta, visibleColumns, headerColumn, subHeadingsColumns }) {
|
|
13
|
+
const totalItemCount = rows.length;
|
|
14
|
+
const [requestedRange, setRequestedRange] = useState({});
|
|
15
|
+
const [isFetching, setIsFetching] = useState(false);
|
|
16
|
+
const requestRange = useCallback(({ startIndex, endIndex }) => {
|
|
17
|
+
setRequestedRange({ startIndex, endIndex });
|
|
18
|
+
setIsFetching(true);
|
|
19
|
+
}, []);
|
|
20
|
+
// Hold the fetch gate for a single commit so the virtualizer settles the requested window
|
|
21
|
+
// before it can request the next one.
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
if (isFetching)
|
|
24
|
+
setIsFetching(false);
|
|
25
|
+
}, [isFetching]);
|
|
26
|
+
const visibleRows = useMemo(() => {
|
|
27
|
+
const { startIndex, endIndex } = requestedRange;
|
|
28
|
+
if (startIndex === undefined || endIndex === undefined)
|
|
29
|
+
return [];
|
|
30
|
+
return rows.slice(startIndex, endIndex + 1);
|
|
31
|
+
}, [rows, requestedRange]);
|
|
32
|
+
const paginationStartIndex = requestedRange.startIndex ?? 0;
|
|
33
|
+
return (_jsx(VariableHeightVirtualizer, { id: `kanbanLane:${laneId}`, totalItemCount: totalItemCount, loadedDataRange: requestedRange, isDataFetching: isFetching, apiCallback: requestRange, defaultItemHeight: KANBAN_DEFAULT_CARD_HEIGHT, buffer: KANBAN_CARD_BUFFER, itemContainerClass: 'kanban-lane-cards', children: visibleRows.map((row, index) => (_jsx(KanbanCard, { dataIndex: paginationStartIndex + index, meta: meta, row: row, visibleColumns: visibleColumns, headerColumn: headerColumn, subHeadingsColumns: subHeadingsColumns }, row.reactKey))) }));
|
|
34
|
+
}
|
|
35
|
+
KanbanLaneVirtualizer.displayName = 'KanbanLaneVirtualizer';
|
|
36
|
+
export default KanbanLaneVirtualizer;
|
|
37
|
+
//# sourceMappingURL=KanbanLaneVirtualizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KanbanLaneVirtualizer.js","sourceRoot":"","sources":["../../../../Core/Views/Kanban/KanbanLaneVirtualizer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAIlE,OAAO,yBAAyB,EAAE,EAEjC,MAAM,iFAAiF,CAAC;AAEzF,OAAO,UAAU,MAAM,cAAc,CAAC;AAEtC,oFAAoF;AACpF,MAAM,0BAA0B,GAAG,GAAG,CAAC;AACvC,8EAA8E;AAC9E,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAa7B;;GAEG;AACH,SAAS,qBAAqB,CAAC,EAC7B,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,cAAc,EACd,YAAY,EACZ,kBAAkB,EACS;IAC3B,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;IAEnC,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAkB,EAAE,CAAC,CAAC;IAC1E,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEpD,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAwD,EAAE,EAAE;QACjF,iBAAiB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5C,aAAa,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC,EACD,EAAE,CACH,CAAC;IAEF,0FAA0F;IAC1F,sCAAsC;IACtC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,UAAU;YAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE;QAC/B,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC;QAChD,IAAI,UAAU,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QAClE,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;IAC9C,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;IAE3B,MAAM,oBAAoB,GAAG,cAAc,CAAC,UAAU,IAAI,CAAC,CAAC;IAE5D,OAAO,CACL,KAAC,yBAAyB,IACxB,EAAE,EAAE,cAAc,MAAM,EAAE,EAC1B,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,cAAc,EAC/B,cAAc,EAAE,UAAU,EAC1B,WAAW,EAAE,YAAY,EACzB,iBAAiB,EAAE,0BAA0B,EAC7C,MAAM,EAAE,kBAAkB,EAC1B,kBAAkB,EAAC,mBAAmB,YAErC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAC/B,KAAC,UAAU,IAET,SAAS,EAAE,oBAAoB,GAAG,KAAK,EACvC,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,GAAG,EACR,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,YAAY,EAC1B,kBAAkB,EAAE,kBAAkB,IANjC,GAAG,CAAC,QAAQ,CAOjB,CACH,CAAC,GACwB,CAC7B,CAAC;AACJ,CAAC;AAED,qBAAqB,CAAC,WAAW,GAAG,uBAAuB,CAAC;AAE5D,eAAe,qBAAqB,CAAC","sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport type { RsCoreTypes } from 'pega-repeating-structures-core';\n\nimport VariableHeightVirtualizer, {\n type LoadedDataRange\n} from '../../Components/Virtualise/VariableHeightVirtualizer/VariableHeightVirtualizer';\n\nimport KanbanCard from './KanbanCard';\n\n/** Estimated card height (px) used before a card is measured by the virtualizer. */\nconst KANBAN_DEFAULT_CARD_HEIGHT = 600;\n/** Extra cards rendered above and below the viewport for smooth scrolling. */\nconst KANBAN_CARD_BUFFER = 5;\n\ninterface KanbanLaneVirtualizerProps {\n /** Stable identifier for the lane, used to scope the virtualizer instance. */\n laneId: string;\n /** All rows belonging to this lane (available client-side). */\n rows: RsCoreTypes.Row[];\n meta: RsCoreTypes.Meta;\n visibleColumns: RsCoreTypes.Column[];\n headerColumn?: RsCoreTypes.Column;\n subHeadingsColumns?: RsCoreTypes.Column[];\n}\n\n/**\n * Client-side vertical virtualization for the cards within a single Kanban lane.\n */\nfunction KanbanLaneVirtualizer({\n laneId,\n rows,\n meta,\n visibleColumns,\n headerColumn,\n subHeadingsColumns\n}: KanbanLaneVirtualizerProps) {\n const totalItemCount = rows.length;\n\n const [requestedRange, setRequestedRange] = useState<LoadedDataRange>({});\n const [isFetching, setIsFetching] = useState(false);\n\n const requestRange = useCallback(\n ({ startIndex, endIndex }: { startIndex: number; endIndex: number; id: string }) => {\n setRequestedRange({ startIndex, endIndex });\n setIsFetching(true);\n },\n []\n );\n\n // Hold the fetch gate for a single commit so the virtualizer settles the requested window\n // before it can request the next one.\n useEffect(() => {\n if (isFetching) setIsFetching(false);\n }, [isFetching]);\n\n const visibleRows = useMemo(() => {\n const { startIndex, endIndex } = requestedRange;\n if (startIndex === undefined || endIndex === undefined) return [];\n return rows.slice(startIndex, endIndex + 1);\n }, [rows, requestedRange]);\n\n const paginationStartIndex = requestedRange.startIndex ?? 0;\n\n return (\n <VariableHeightVirtualizer\n id={`kanbanLane:${laneId}`}\n totalItemCount={totalItemCount}\n loadedDataRange={requestedRange}\n isDataFetching={isFetching}\n apiCallback={requestRange}\n defaultItemHeight={KANBAN_DEFAULT_CARD_HEIGHT}\n buffer={KANBAN_CARD_BUFFER}\n itemContainerClass='kanban-lane-cards'\n >\n {visibleRows.map((row, index) => (\n <KanbanCard\n key={row.reactKey}\n dataIndex={paginationStartIndex + index}\n meta={meta}\n row={row}\n visibleColumns={visibleColumns}\n headerColumn={headerColumn}\n subHeadingsColumns={subHeadingsColumns}\n />\n ))}\n </VariableHeightVirtualizer>\n );\n}\n\nKanbanLaneVirtualizer.displayName = 'KanbanLaneVirtualizer';\n\nexport default KanbanLaneVirtualizer;\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { RsCoreTypes } from 'pega-repeating-structures-core';
|
|
2
|
+
interface UseKanbanLanesVirtualizationOptions {
|
|
3
|
+
groupKey?: string;
|
|
4
|
+
lanes: RsCoreTypes.GroupGenerator[];
|
|
5
|
+
}
|
|
6
|
+
interface KanbanLanesVirtualization {
|
|
7
|
+
boardRef: React.RefObject<HTMLDivElement>;
|
|
8
|
+
visibleLanes: RsCoreTypes.GroupGenerator[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Progressively mounts right-side Kanban lanes while retaining already mounted lanes and their
|
|
12
|
+
* vertical scroll positions. Resets the lane window for a new grouping or refreshed lane catalog.
|
|
13
|
+
*
|
|
14
|
+
* @param groupKey - Active lane grouping identifier.
|
|
15
|
+
* @param lanes - Lanes available for the active grouping.
|
|
16
|
+
*/
|
|
17
|
+
export default function useKanbanLanesVirtualization({ groupKey, lanes }: UseKanbanLanesVirtualizationOptions): KanbanLanesVirtualization;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=useKanbanLanesVirtualization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useKanbanLanesVirtualization.d.ts","sourceRoot":"","sources":["../../../../../Core/Views/Kanban/hooks/useKanbanLanesVirtualization.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AASlE,UAAU,mCAAmC;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,WAAW,CAAC,cAAc,EAAE,CAAC;CACrC;AAED,UAAU,yBAAyB;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC1C,YAAY,EAAE,WAAW,CAAC,cAAc,EAAE,CAAC;CAC5C;AAED;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,4BAA4B,CAAC,EACnD,QAAQ,EACR,KAAK,EACN,EAAE,mCAAmC,GAAG,yBAAyB,CA4BjE"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
2
|
+
import { useItemIntersection } from '@pega/cosmos-react-core';
|
|
3
|
+
// Lanes mounted when a board or lane grouping is first displayed.
|
|
4
|
+
const INITIAL_LANE_COUNT = 3;
|
|
5
|
+
// Additional right-side lanes mounted when the current final lane enters the scrollport.
|
|
6
|
+
const APPEND_LANE_COUNT = 2;
|
|
7
|
+
// Minimum lanes to display so the intersection observer can always fire to trigger further loading.
|
|
8
|
+
const MINIMUM_OBSERVED_LANE_COUNT = 2;
|
|
9
|
+
/**
|
|
10
|
+
* Progressively mounts right-side Kanban lanes while retaining already mounted lanes and their
|
|
11
|
+
* vertical scroll positions. Resets the lane window for a new grouping or refreshed lane catalog.
|
|
12
|
+
*
|
|
13
|
+
* @param groupKey - Active lane grouping identifier.
|
|
14
|
+
* @param lanes - Lanes available for the active grouping.
|
|
15
|
+
*/
|
|
16
|
+
export default function useKanbanLanesVirtualization({ groupKey, lanes }) {
|
|
17
|
+
const boardRef = useRef(null);
|
|
18
|
+
const totalLaneCount = lanes.length;
|
|
19
|
+
const [mountedLaneCount, setMountedLaneCount] = useState(INITIAL_LANE_COUNT);
|
|
20
|
+
const clampLaneCount = useCallback((count) => Math.max(Math.min(count, totalLaneCount), Math.min(MINIMUM_OBSERVED_LANE_COUNT, totalLaneCount)), [totalLaneCount]);
|
|
21
|
+
// A new grouping or lane catalog starts with the initial lane window.
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
setMountedLaneCount(INITIAL_LANE_COUNT);
|
|
24
|
+
}, [groupKey, totalLaneCount]);
|
|
25
|
+
const appendLanes = useCallback(() => {
|
|
26
|
+
// Keep prior lanes mounted so their independent vertical scroll positions are retained.
|
|
27
|
+
setMountedLaneCount(prev => clampLaneCount(prev + APPEND_LANE_COUNT));
|
|
28
|
+
}, [clampLaneCount]);
|
|
29
|
+
useItemIntersection(boardRef, mountedLaneCount - 1, appendLanes, ':scope > [data-kanban-lane]');
|
|
30
|
+
return { boardRef, visibleLanes: lanes.slice(0, mountedLaneCount) };
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=useKanbanLanesVirtualization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useKanbanLanesVirtualization.js","sourceRoot":"","sources":["../../../../../Core/Views/Kanban/hooks/useKanbanLanesVirtualization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG9D,kEAAkE;AAClE,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,yFAAyF;AACzF,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,oGAAoG;AACpG,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAYtC;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,4BAA4B,CAAC,EACnD,QAAQ,EACR,KAAK,EAC+B;IACpC,MAAM,QAAQ,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAE9C,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC;IACpC,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IAE7E,MAAM,cAAc,GAAG,WAAW,CAChC,CAAC,KAAa,EAAU,EAAE,CACxB,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,EAC/B,IAAI,CAAC,GAAG,CAAC,2BAA2B,EAAE,cAAc,CAAC,CACtD,EACH,CAAC,cAAc,CAAC,CACjB,CAAC;IAEF,sEAAsE;IACtE,SAAS,CAAC,GAAG,EAAE;QACb,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;IAC1C,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;IAE/B,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,wFAAwF;QACxF,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,GAAG,iBAAiB,CAAC,CAAC,CAAC;IACxE,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,CAAC,EAAE,WAAW,EAAE,6BAA6B,CAAC,CAAC;IAEhG,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,EAAE,CAAC;AACtE,CAAC","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { useItemIntersection } from '@pega/cosmos-react-core';\nimport type { RsCoreTypes } from 'pega-repeating-structures-core';\n\n// Lanes mounted when a board or lane grouping is first displayed.\nconst INITIAL_LANE_COUNT = 3;\n// Additional right-side lanes mounted when the current final lane enters the scrollport.\nconst APPEND_LANE_COUNT = 2;\n// Minimum lanes to display so the intersection observer can always fire to trigger further loading.\nconst MINIMUM_OBSERVED_LANE_COUNT = 2;\n\ninterface UseKanbanLanesVirtualizationOptions {\n groupKey?: string;\n lanes: RsCoreTypes.GroupGenerator[];\n}\n\ninterface KanbanLanesVirtualization {\n boardRef: React.RefObject<HTMLDivElement>;\n visibleLanes: RsCoreTypes.GroupGenerator[];\n}\n\n/**\n * Progressively mounts right-side Kanban lanes while retaining already mounted lanes and their\n * vertical scroll positions. Resets the lane window for a new grouping or refreshed lane catalog.\n *\n * @param groupKey - Active lane grouping identifier.\n * @param lanes - Lanes available for the active grouping.\n */\nexport default function useKanbanLanesVirtualization({\n groupKey,\n lanes\n}: UseKanbanLanesVirtualizationOptions): KanbanLanesVirtualization {\n const boardRef = useRef<HTMLDivElement>(null);\n\n const totalLaneCount = lanes.length;\n const [mountedLaneCount, setMountedLaneCount] = useState(INITIAL_LANE_COUNT);\n\n const clampLaneCount = useCallback(\n (count: number): number =>\n Math.max(\n Math.min(count, totalLaneCount),\n Math.min(MINIMUM_OBSERVED_LANE_COUNT, totalLaneCount)\n ),\n [totalLaneCount]\n );\n\n // A new grouping or lane catalog starts with the initial lane window.\n useEffect(() => {\n setMountedLaneCount(INITIAL_LANE_COUNT);\n }, [groupKey, totalLaneCount]);\n\n const appendLanes = useCallback(() => {\n // Keep prior lanes mounted so their independent vertical scroll positions are retained.\n setMountedLaneCount(prev => clampLaneCount(prev + APPEND_LANE_COUNT));\n }, [clampLaneCount]);\n\n useItemIntersection(boardRef, mountedLaneCount - 1, appendLanes, ':scope > [data-kanban-lane]');\n\n return { boardRef, visibleLanes: lanes.slice(0, mountedLaneCount) };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Kanban/index.tsx"],"names":[],"mappings":"AASA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Kanban/index.tsx"],"names":[],"mappings":"AASA,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAwB/E,iBAAS,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAA;CAAE,2CA8FnD;kBA9FQ,MAAM;;;AAkGf,eAAe,MAAM,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useMemo } from 'react';
|
|
3
3
|
import { usePrevious, useFullscreenContext, useTheme, Grid, isInstance } from '@pega/cosmos-react-core';
|
|
4
|
-
import {
|
|
4
|
+
import { getGroupKey } from 'pega-repeating-structures-core';
|
|
5
5
|
import Toolbar from '../../Components/Toolbar';
|
|
6
6
|
import RenderView from '../../Components/RenderingEngine/RenderView';
|
|
7
7
|
import { EXTERNAL_FILTERS } from '../../constants';
|
|
@@ -11,8 +11,10 @@ import LoadingIndicator from '../../Components/LoadingIndicator';
|
|
|
11
11
|
import WarningBanner from '../../Components/WarningBanner';
|
|
12
12
|
import useTranslate from '../../Hooks/useTranslate';
|
|
13
13
|
import { isFilterApplied } from '../../Utils';
|
|
14
|
+
import { getCardColumns } from '../../Components/Card';
|
|
14
15
|
import KanbanLane, { EmptyKanbanLane } from './KanbanLane';
|
|
15
16
|
import { StyledKanbanBoard, StyledKanbanContainer } from './Kanban.styles';
|
|
17
|
+
import useKanbanLanesVirtualization from './hooks/useKanbanLanesVirtualization';
|
|
16
18
|
function getLaneId(laneColumn, value) {
|
|
17
19
|
return `${laneColumn?.field.id ?? ''}:${isInstance(value, Date) ? value.toISOString() : String(value)}`;
|
|
18
20
|
}
|
|
@@ -34,6 +36,12 @@ function Kanban({ view }) {
|
|
|
34
36
|
const laneGroupKey = laneGroup ? getGroupKey(laneGroup) : undefined;
|
|
35
37
|
const hasStaleLanes = !!firstGroupHeader?.groupBy && firstGroupHeader.groupBy !== laneGroupKey;
|
|
36
38
|
const lanes = hasLaneConfiguration && !hasStaleLanes ? groupHeaders : [];
|
|
39
|
+
const laneSourceKey = laneGroup ? `${laneGroupKey}:${laneGroup.order}` : undefined;
|
|
40
|
+
// Lanes virtualization
|
|
41
|
+
const { boardRef, visibleLanes } = useKanbanLanesVirtualization({
|
|
42
|
+
groupKey: laneSourceKey,
|
|
43
|
+
lanes
|
|
44
|
+
});
|
|
37
45
|
// Empty state configuration
|
|
38
46
|
const previousTotalItemCount = usePrevious(view.totalItemCount);
|
|
39
47
|
const emptyMessage = isFilterApplied({ filterExpression, searchText, externalState }, meta.externalFilters)
|
|
@@ -41,22 +49,14 @@ function Kanban({ view }) {
|
|
|
41
49
|
: translate('No records');
|
|
42
50
|
const shouldAnnounceEmpty = (previousTotalItemCount ?? 0) > 0 && view.totalItemCount === 0;
|
|
43
51
|
const emptyState = (_jsx(EmptyContainer, { message: emptyMessage, shouldAnnounce: shouldAnnounceEmpty, domContainer: view.getDomContainer(), transparent: true }));
|
|
44
|
-
const visibleColumns = useMemo(() => {
|
|
45
|
-
|
|
46
|
-
.filter(col => !col.hidden && col.field.type !== FieldType.ACTION_FIELD_TYPE)
|
|
47
|
-
.sort((colA, colB) => (colA.order ?? 0) - (colB.order ?? 0));
|
|
48
|
-
}, [columns]);
|
|
49
|
-
const headerColumn = useMemo(() => {
|
|
50
|
-
const cardHeaderField = meta.cardConfig?.header?.field;
|
|
51
|
-
return cardHeaderField ? columns.find(col => col.field.id === cardHeaderField) : undefined;
|
|
52
|
-
}, [meta.cardConfig?.header?.field, columns]);
|
|
53
|
-
return (_jsx(RsCardWrapper, { children: _jsxs(StyledKanbanContainer, { "data-testid": 'kanban', view: view, isFullscreen: isFullscreen, children: [_jsx(WarningBanner, { warningMessages: view.warningMessages }), _jsx(Toolbar, { view: view }), _jsx(RenderView, { view: view, type: EXTERNAL_FILTERS }), _jsxs(Grid, { as: StyledKanbanBoard, role: 'list', "aria-label": meta.title ?? meta.name, container: {
|
|
52
|
+
const { visibleColumns, headerColumn, subHeadingsColumns } = useMemo(() => getCardColumns(columns, meta.cardConfig ?? {}), [columns, meta.cardConfig]);
|
|
53
|
+
return (_jsx(RsCardWrapper, { children: _jsxs(StyledKanbanContainer, { "data-testid": 'kanban', view: view, isFullscreen: isFullscreen, children: [_jsx(WarningBanner, { warningMessages: view.warningMessages }), _jsx(Toolbar, { view: view }), _jsx(RenderView, { view: view, type: EXTERNAL_FILTERS }), _jsxs(Grid, { as: StyledKanbanBoard, ref: boardRef, role: 'list', "aria-label": meta.title ?? meta.name, container: {
|
|
54
54
|
autoFlow: 'column',
|
|
55
55
|
autoCols: `minmax(min(${theme.base['content-width'].sm}, 100%), 1fr)`,
|
|
56
56
|
gap: 1.5,
|
|
57
57
|
pad: 0.5
|
|
58
58
|
}, children: [!shouldRenderEmptyLane &&
|
|
59
|
-
|
|
59
|
+
visibleLanes.map(lane => (_jsx(KanbanLane, { laneId: getLaneId(laneColumn, lane.name), lane: lane, laneColumn: laneColumn, meta: meta, visibleColumns: visibleColumns, headerColumn: headerColumn, subHeadingsColumns: subHeadingsColumns, emptyState: emptyState }, getLaneId(laneColumn, lane.name)))), shouldRenderEmptyLane && _jsx(EmptyKanbanLane, { emptyState: emptyState }), _jsx(LoadingIndicator, { view: view, show: !rows || !!view.isLoading })] })] }) }));
|
|
60
60
|
}
|
|
61
61
|
Kanban.displayName = 'Kanban';
|
|
62
62
|
export default Kanban;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../Core/Views/Kanban/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,QAAQ,EACR,IAAI,EACJ,UAAU,EACX,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../Core/Views/Kanban/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,QAAQ,EACR,IAAI,EACJ,UAAU,EACX,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAoB,MAAM,gCAAgC,CAAC;AAE/E,OAAO,OAAO,MAAM,0BAA0B,CAAC;AAC/C,OAAO,UAAU,MAAM,6CAA6C,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,cAAc,MAAM,mDAAmD,CAAC;AAC/E,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAC7C,OAAO,gBAAgB,MAAM,mCAAmC,CAAC;AACjE,OAAO,aAAa,MAAM,gCAAgC,CAAC;AAC3D,OAAO,YAAY,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,UAAU,EAAE,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,4BAA4B,MAAM,sCAAsC,CAAC;AAEhF,SAAS,SAAS,CAChB,UAA0C,EAC1C,KAAyC;IAEzC,OAAO,GAAG,UAAU,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AAC1G,CAAC;AAED,SAAS,MAAM,CAAC,EAAE,IAAI,EAA8B;IAClD,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,YAAY,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAC7D,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IACjF,MAAM,YAAY,GAAG,CAAC,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,CAAC,SAAS,CAAC,GAAG,YAAY,EAAE,CAAC;IAEnC,qBAAqB;IACrB,MAAM,gBAAgB,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,UAAU,GAAG,OAAO,CACxB,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EACrF,CAAC,OAAO,EAAE,SAAS,CAAC,CACrB,CAAC;IACF,MAAM,oBAAoB,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,SAAS,CAAC,CAAC;IAEzD,yGAAyG;IACzG,MAAM,WAAW,GACf,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,gBAAgB,EAAE,OAAO,KAAK,EAAE,IAAI,gBAAgB,CAAC,KAAK,KAAK,CAAC,CAAC;IAChG,MAAM,qBAAqB,GAAG,CAAC,CAAC,SAAS,IAAI,WAAW,CAAC;IAEzD,4HAA4H;IAC5H,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACpE,MAAM,aAAa,GAAG,CAAC,CAAC,gBAAgB,EAAE,OAAO,IAAI,gBAAgB,CAAC,OAAO,KAAK,YAAY,CAAC;IAC/F,MAAM,KAAK,GAAG,oBAAoB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,MAAM,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,YAAY,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAEnF,uBAAuB;IACvB,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,4BAA4B,CAAC;QAC9D,QAAQ,EAAE,aAAa;QACvB,KAAK;KACN,CAAC,CAAC;IAEH,4BAA4B;IAC5B,MAAM,sBAAsB,GAAG,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAChE,MAAM,YAAY,GAAG,eAAe,CAClC,EAAE,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE,EAC/C,IAAI,CAAC,eAAe,CACrB;QACC,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC;QAC/B,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC5B,MAAM,mBAAmB,GAAG,CAAC,sBAAsB,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,CAAC;IAC3F,MAAM,UAAU,GAAG,CACjB,KAAC,cAAc,IACb,OAAO,EAAE,YAAY,EACrB,cAAc,EAAE,mBAAmB,EACnC,YAAY,EAAE,IAAI,CAAC,eAAe,EAAE,EACpC,WAAW,SACX,CACH,CAAC;IAEF,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAClE,GAAG,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,EACpD,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAC3B,CAAC;IAEF,OAAO,CACL,KAAC,aAAa,cACZ,MAAC,qBAAqB,mBAAa,QAAQ,EAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,aAChF,KAAC,aAAa,IAAC,eAAe,EAAE,IAAI,CAAC,eAAe,GAAI,EACxD,KAAC,OAAO,IAAC,IAAI,EAAE,IAAI,GAAI,EACvB,KAAC,UAAU,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,GAAI,EAClD,MAAC,IAAI,IACH,EAAE,EAAE,iBAAiB,EACrB,GAAG,EAAE,QAAQ,EACb,IAAI,EAAC,MAAM,gBACC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,EACnC,SAAS,EAAE;wBACT,QAAQ,EAAE,QAAQ;wBAClB,QAAQ,EAAE,cAAc,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,eAAe;wBACrE,GAAG,EAAE,GAAG;wBACR,GAAG,EAAE,GAAG;qBACT,aAEA,CAAC,qBAAqB;4BACrB,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CACvB,KAAC,UAAU,IAET,MAAM,EAAE,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,EACxC,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,IAAI,EACV,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,YAAY,EAC1B,kBAAkB,EAAE,kBAAkB,EACtC,UAAU,EAAE,UAAU,IARjB,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CASrC,CACH,CAAC,EACH,qBAAqB,IAAI,KAAC,eAAe,IAAC,UAAU,EAAE,UAAU,GAAI,EACrE,KAAC,gBAAgB,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,GAAI,IAC5D,IACe,GACV,CACjB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC;AAE9B,eAAe,MAAM,CAAC","sourcesContent":["import { useMemo } from 'react';\n\nimport {\n usePrevious,\n useFullscreenContext,\n useTheme,\n Grid,\n isInstance\n} from '@pega/cosmos-react-core';\nimport { getGroupKey, type RsCoreTypes } from 'pega-repeating-structures-core';\n\nimport Toolbar from '../../Components/Toolbar';\nimport RenderView from '../../Components/RenderingEngine/RenderView';\nimport { EXTERNAL_FILTERS } from '../../constants';\nimport EmptyContainer from '../../Components/DefaultComponents/EmptyContainer';\nimport RsCardWrapper from '../RsCardWrapper';\nimport LoadingIndicator from '../../Components/LoadingIndicator';\nimport WarningBanner from '../../Components/WarningBanner';\nimport useTranslate from '../../Hooks/useTranslate';\nimport { isFilterApplied } from '../../Utils';\nimport { getCardColumns } from '../../Components/Card';\n\nimport KanbanLane, { EmptyKanbanLane } from './KanbanLane';\nimport { StyledKanbanBoard, StyledKanbanContainer } from './Kanban.styles';\nimport useKanbanLanesVirtualization from './hooks/useKanbanLanesVirtualization';\n\nfunction getLaneId(\n laneColumn: RsCoreTypes.Column | undefined,\n value: RsCoreTypes.GroupGenerator['name']\n): string {\n return `${laneColumn?.field.id ?? ''}:${isInstance(value, Date) ? value.toISOString() : String(value)}`;\n}\n\nfunction Kanban({ view }: { view: RsCoreTypes.View }) {\n const { columns = [], groupHeaders = [], meta, rows } = view;\n const { filterExpression, searchText, externalState, groups } = view.state ?? {};\n const isFullscreen = !!useFullscreenContext()?.[0];\n const theme = useTheme();\n const [translate] = useTranslate();\n\n // Lane configuration\n const firstGroupHeader = groupHeaders[0];\n const laneGroup = groups?.[0];\n const laneColumn = useMemo(\n () => columns.find(column => String(column.field.id) === String(laneGroup?.columnId)),\n [columns, laneGroup]\n );\n const hasLaneConfiguration = !!(laneColumn && laneGroup);\n\n // RsCore returns empty groupHeader with groupBy = '' and count = 0 when there are no records to display.\n const isEmptyLane =\n groupHeaders.length === 1 && firstGroupHeader?.groupBy === '' && firstGroupHeader.count === 0;\n const shouldRenderEmptyLane = !!laneGroup && isEmptyLane;\n\n // With instantRender from RSCore, state can contain the new groupBy while groupHeaders still reflect the previous grouping.\n const laneGroupKey = laneGroup ? getGroupKey(laneGroup) : undefined;\n const hasStaleLanes = !!firstGroupHeader?.groupBy && firstGroupHeader.groupBy !== laneGroupKey;\n const lanes = hasLaneConfiguration && !hasStaleLanes ? groupHeaders : [];\n const laneSourceKey = laneGroup ? `${laneGroupKey}:${laneGroup.order}` : undefined;\n\n // Lanes virtualization\n const { boardRef, visibleLanes } = useKanbanLanesVirtualization({\n groupKey: laneSourceKey,\n lanes\n });\n\n // Empty state configuration\n const previousTotalItemCount = usePrevious(view.totalItemCount);\n const emptyMessage = isFilterApplied(\n { filterExpression, searchText, externalState },\n meta.externalFilters\n )\n ? translate('No records found')\n : translate('No records');\n const shouldAnnounceEmpty = (previousTotalItemCount ?? 0) > 0 && view.totalItemCount === 0;\n const emptyState = (\n <EmptyContainer\n message={emptyMessage}\n shouldAnnounce={shouldAnnounceEmpty}\n domContainer={view.getDomContainer()}\n transparent\n />\n );\n\n const { visibleColumns, headerColumn, subHeadingsColumns } = useMemo(\n () => getCardColumns(columns, meta.cardConfig ?? {}),\n [columns, meta.cardConfig]\n );\n\n return (\n <RsCardWrapper>\n <StyledKanbanContainer data-testid='kanban' view={view} isFullscreen={isFullscreen}>\n <WarningBanner warningMessages={view.warningMessages} />\n <Toolbar view={view} />\n <RenderView view={view} type={EXTERNAL_FILTERS} />\n <Grid\n as={StyledKanbanBoard}\n ref={boardRef}\n role='list'\n aria-label={meta.title ?? meta.name}\n container={{\n autoFlow: 'column',\n autoCols: `minmax(min(${theme.base['content-width'].sm}, 100%), 1fr)`,\n gap: 1.5,\n pad: 0.5\n }}\n >\n {!shouldRenderEmptyLane &&\n visibleLanes.map(lane => (\n <KanbanLane\n key={getLaneId(laneColumn, lane.name)}\n laneId={getLaneId(laneColumn, lane.name)}\n lane={lane}\n laneColumn={laneColumn}\n meta={meta}\n visibleColumns={visibleColumns}\n headerColumn={headerColumn}\n subHeadingsColumns={subHeadingsColumns}\n emptyState={emptyState}\n />\n ))}\n {shouldRenderEmptyLane && <EmptyKanbanLane emptyState={emptyState} />}\n <LoadingIndicator view={view} show={!rows || !!view.isLoading} />\n </Grid>\n </StyledKanbanContainer>\n </RsCardWrapper>\n );\n}\n\nKanban.displayName = 'Kanban';\n\nexport default Kanban;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StyledTableContainer.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Table/StyledTableContainer.jsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"StyledTableContainer.d.ts","sourceRoot":"","sources":["../../../../Core/Views/Table/StyledTableContainer.jsx"],"names":[],"mappings":";AAqBA;;yJAwhCG"}
|