@pega/lists-core 9.0.0-build.6.8 → 9.0.0-build.7.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.
Files changed (35) hide show
  1. package/lib/src/core/features/uIFeatures/beforeRender/columnReOrder.d.ts.map +1 -1
  2. package/lib/src/core/features/uIFeatures/beforeRender/columnReOrder.js +2 -3
  3. package/lib/src/core/features/uIFeatures/beforeRender/columnReOrder.js.map +1 -1
  4. package/lib/src/core/features/uIFeatures/beforeRender/grouping.d.ts.map +1 -1
  5. package/lib/src/core/features/uIFeatures/beforeRender/grouping.js +4 -6
  6. package/lib/src/core/features/uIFeatures/beforeRender/grouping.js.map +1 -1
  7. package/lib/src/core/features/uIFeatures/beforeRender/rowDragDrop.d.ts.map +1 -1
  8. package/lib/src/core/features/uIFeatures/beforeRender/rowDragDrop.js +11 -3
  9. package/lib/src/core/features/uIFeatures/beforeRender/rowDragDrop.js.map +1 -1
  10. package/lib/src/core/features/uIFeatures/beforeRender/stateHydration.d.ts.map +1 -1
  11. package/lib/src/core/features/uIFeatures/beforeRender/stateHydration.js +2 -1
  12. package/lib/src/core/features/uIFeatures/beforeRender/stateHydration.js.map +1 -1
  13. package/lib/src/core/features/uIFeatures/index.d.ts.map +1 -1
  14. package/lib/src/core/generators/ColumnGenerator.types.d.ts +1 -1
  15. package/lib/src/core/generators/ColumnGenerator.types.d.ts.map +1 -1
  16. package/lib/src/core/generators/ColumnGenerator.types.js.map +1 -1
  17. package/lib/src/core/generators/GroupGenerator.d.ts +4 -1
  18. package/lib/src/core/generators/GroupGenerator.d.ts.map +1 -1
  19. package/lib/src/core/generators/GroupGenerator.js +4 -1
  20. package/lib/src/core/generators/GroupGenerator.js.map +1 -1
  21. package/lib/src/core/reducers/error.d.ts.map +1 -1
  22. package/lib/src/core/reducers/index.d.ts.map +1 -1
  23. package/lib/types/ApiContext.types.d.ts +21 -1
  24. package/lib/types/ApiContext.types.d.ts.map +1 -1
  25. package/lib/types/ApiContext.types.js.map +1 -1
  26. package/lib/types/Meta.types.d.ts +3 -1
  27. package/lib/types/Meta.types.d.ts.map +1 -1
  28. package/lib/types/Meta.types.js.map +1 -1
  29. package/lib/types/State.types.d.ts +20 -1
  30. package/lib/types/State.types.d.ts.map +1 -1
  31. package/lib/types/State.types.js.map +1 -1
  32. package/lib/types.d.ts +4 -1
  33. package/lib/types.d.ts.map +1 -1
  34. package/lib/types.js.map +1 -1
  35. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"columnReOrder.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/columnReOrder.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AA+OrE;;;;;;GAMG;+BAIuB,cAAc,wBAAwB;AAHhE,wBAcE"}
1
+ {"version":3,"file":"columnReOrder.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/columnReOrder.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AA8OrE;;;;;;GAMG;+BAIuB,cAAc,wBAAwB;AAHhE,wBAcE"}
@@ -83,9 +83,8 @@ const columnReOrder = ([{ getView, getState, dispatch }]) => {
83
83
  document.body.appendChild(emptyImg);
84
84
  if (e.dataTransfer) {
85
85
  e.dataTransfer.setDragImage(emptyImg, 0, 0);
86
- // e.dataTransfer.setDragImage(new Image(0, 0), 0, 0);
87
- e.dataTransfer.effectAllowed = 'none';
88
- e.dataTransfer.dropEffect = 'none';
86
+ e.dataTransfer.effectAllowed = 'move';
87
+ e.dataTransfer.setData('text/plain', sourceElem?.dataset.colId || '');
89
88
  }
90
89
  document.addEventListener('dragover', documentDragOver);
91
90
  fieldDragHelper.virtualizeOffsetLeft = virtualizeEle.getBoundingClientRect().left;
@@ -1 +1 @@
1
- {"version":3,"file":"columnReOrder.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/columnReOrder.ts"],"names":[],"mappings":"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","sourcesContent":["import { actionColumnDragDrop } from '../../../actions/actions';\nimport {\n rowActionColumnMeta,\n rowDragDropColumnMeta,\n rowSelectColumnMeta\n} from '../../../constants';\nimport type RsStore from '../../../RsStore';\nimport { withMemoization } from '../../../utils/util';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { State } from '../../../../../types/State.types';\n\ntype FieldDragHelper = {\n mouseX: number;\n mouseY: number;\n dragLineNode: HTMLElement;\n dragProxyNode: HTMLElement;\n sourceElemIndex: number;\n dragProxyOffset: number;\n virtualizeOffsetLeft: number;\n dropTarget: string;\n};\n\nconst ColIdSelector = '[data-col-id]';\nconst SomeNegativeBigOffset = `${Number.MIN_SAFE_INTEGER}px`;\n\n// Todo: comeback and see if there is any other way to just have no drag image\nconst emptyImg = document.createElement('img');\nemptyImg.src = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';\n\nfunction createElement(type: string, className: string): HTMLElement {\n const domNode = document.createElement(type);\n domNode.classList.add(className);\n return domNode;\n}\n\nconst columnReOrder = ([{ getView, getState, dispatch }]: [\n featureProps: BeforeRenderFeatureProps\n]): RsStore['fieldReorderProps'] => {\n if (!getView().meta.reorderFields) {\n return null;\n }\n const { columnWidths, freezeColumns = [] } = getState();\n let fieldDragHelper: FieldDragHelper = {} as FieldDragHelper;\n const allPositions = (() => {\n const allWidths: {\n width: number;\n order: number;\n offset?: number;\n id: string;\n }[] = getView()\n .columns!.filter(column => !column.hidden) // Take all visible columns\n .map(column => ({\n width: (columnWidths?.[column.field.id] ?? column.field.width)!,\n order: column.style?.order,\n id: column.field.id\n }));\n // Bail out when AllWidths/Visible columns is empty\n if (allWidths.length === 0) {\n return {\n allWidths,\n freezeColumnsWidth: 0\n };\n }\n\n allWidths.sort((a, b) => a.order - b.order);\n\n let previousColOffset = 0;\n allWidths.forEach(column => {\n column.offset = previousColOffset;\n previousColOffset += column.width;\n });\n allWidths.push({\n width: 0,\n order: allWidths[allWidths.length - 1].order + 1,\n offset: allWidths[allWidths.length - 1].offset! + allWidths[allWidths.length - 1].width,\n id: 'last$'\n });\n const visibleFreezeColumns = getView().columns!.filter(col => col.frozen && !col.hidden);\n const freezeColumnsWidth = allWidths[visibleFreezeColumns.length]?.offset;\n return {\n allWidths,\n freezeColumnsWidth\n };\n })();\n\n const { allWidths, freezeColumnsWidth } = allPositions;\n\n // https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n // This DragOver on document is the hack for the above bug as clientX is not proper in firefox\n const documentDragOver = (e: DragEvent) => {\n fieldDragHelper.mouseX = e.clientX;\n fieldDragHelper.mouseY = e.clientY;\n };\n\n const onDragStart = (e: DragEvent) => {\n fieldDragHelper = {} as FieldDragHelper;\n const domContainer = getView().getDomContainer();\n const scrollNode = getView().getScrollNode();\n const virtualizeEle = getView()\n .getVirtualizeElement('rootVirtualiser')\n ?.getParentContainer?.()!;\n fieldDragHelper.dragLineNode = createElement('div', 'table-drag-line');\n fieldDragHelper.dragProxyNode = createElement('div', 'table-drag-proxy');\n const container = domContainer?.getElementsByClassName('container')[0]!;\n const Header = domContainer?.getElementsByClassName('sticky-header')[0]!;\n container.appendChild(fieldDragHelper.dragProxyNode);\n virtualizeEle.appendChild(fieldDragHelper.dragLineNode);\n fieldDragHelper.dragLineNode.style.height = `${\n // eslint-disable-next-line no-unsafe-optional-chaining\n scrollNode?.clientHeight! + Header.clientHeight\n }px`;\n\n const sourceElem = (e.target as HTMLElement).closest(ColIdSelector) as HTMLElement;\n fieldDragHelper.sourceElemIndex = allWidths.findIndex(xCol => {\n return `${xCol.id}` === sourceElem.dataset.colId;\n });\n\n if (!sourceElem) return;\n\n document.body.appendChild(emptyImg);\n if (e.dataTransfer) {\n e.dataTransfer.setDragImage(emptyImg, 0, 0);\n // e.dataTransfer.setDragImage(new Image(0, 0), 0, 0);\n e.dataTransfer.effectAllowed = 'none';\n e.dataTransfer.dropEffect = 'none';\n }\n document.addEventListener('dragover', documentDragOver);\n\n fieldDragHelper.virtualizeOffsetLeft = virtualizeEle.getBoundingClientRect().left;\n fieldDragHelper.dragProxyOffset =\n sourceElem.offsetLeft -\n (virtualizeEle.scrollLeft + fieldDragHelper.mouseX - fieldDragHelper.virtualizeOffsetLeft);\n fieldDragHelper.dragProxyNode.style.width = sourceElem.style.width;\n fieldDragHelper.dragProxyNode.style.marginLeft = `${fieldDragHelper.dragProxyOffset}px`;\n fieldDragHelper.dragProxyNode.style.left = SomeNegativeBigOffset;\n fieldDragHelper.dragLineNode.style.left = SomeNegativeBigOffset;\n fieldDragHelper.dragProxyNode.style.display = 'block';\n fieldDragHelper.dragLineNode.style.display = 'block';\n\n return false; // required for browser allowing image drag out of container\n };\n\n const onDrag = (e: DragEvent) => {\n e.preventDefault();\n const virtualizeEle = getView()\n .getVirtualizeElement('rootVirtualiser')\n ?.getParentContainer?.()!;\n const distanceFromFreezeB =\n fieldDragHelper.mouseX - fieldDragHelper.virtualizeOffsetLeft - freezeColumnsWidth!;\n // is our cursor pointer near to freeze columBoundary?\n if (\n freezeColumnsWidth !== 0 &&\n distanceFromFreezeB < 100 &&\n distanceFromFreezeB > 0 &&\n virtualizeEle.scrollLeft > 0\n ) {\n // is something there to scroll?\n if (distanceFromFreezeB > 50) {\n virtualizeEle.scrollLeft -= 1;\n } else {\n virtualizeEle.scrollLeft -= 3;\n }\n fieldDragHelper.dragProxyNode.style.left = `${\n fieldDragHelper.mouseX - fieldDragHelper.virtualizeOffsetLeft\n }px`;\n fieldDragHelper.dropTarget = allWidths[freezeColumns.length].id;\n fieldDragHelper.dragLineNode.style.left = SomeNegativeBigOffset;\n return false;\n }\n\n fieldDragHelper.dragProxyNode.style.left = `${\n fieldDragHelper.mouseX - fieldDragHelper.virtualizeOffsetLeft\n }px`;\n let currentDragLeftOffset = parseInt(\n // @ts-expect-error parseInt expects string.\n virtualizeEle.scrollLeft + fieldDragHelper.mouseX - fieldDragHelper.virtualizeOffsetLeft,\n 10\n );\n\n if (distanceFromFreezeB < 0) {\n // if we are in freezeZone do not consider scrollLeft for targetColLine calc\n currentDragLeftOffset -= virtualizeEle.scrollLeft;\n }\n\n let xColIndex = allWidths.findIndex(xCol => {\n return currentDragLeftOffset < xCol.offset! + xCol.width / 2;\n });\n\n if (xColIndex === -1) {\n xColIndex = allWidths.length - 1;\n }\n fieldDragHelper.dragLineNode.style.left = `${allWidths[xColIndex].offset}px`;\n\n if (distanceFromFreezeB < 0) {\n // if we are in freezeZone consider scrollLeft for dragLine calculation\n fieldDragHelper.dragLineNode.style.left = `${\n allWidths[xColIndex].offset! + virtualizeEle.scrollLeft\n }px`;\n }\n\n if (xColIndex <= fieldDragHelper.sourceElemIndex) {\n fieldDragHelper.dropTarget = allWidths[xColIndex].id;\n } else {\n fieldDragHelper.dropTarget = allWidths[xColIndex - 1].id;\n }\n\n // Edge Case to not show dragLine when the col is under frozen area\n if (\n distanceFromFreezeB > 0 &&\n allWidths[xColIndex].offset! < virtualizeEle.scrollLeft + freezeColumnsWidth!\n ) {\n fieldDragHelper.dragLineNode.style.left = SomeNegativeBigOffset;\n }\n\n return false;\n };\n\n const onDragEnd = (e: DragEvent) => {\n e.preventDefault();\n fieldDragHelper.dragProxyNode.style.display = 'none';\n fieldDragHelper.dragLineNode.style.display = 'none';\n const sourceElem: HTMLElement | null = (e.target as HTMLElement).closest(ColIdSelector);\n if (\n rowSelectColumnMeta.field.id !== fieldDragHelper.dropTarget &&\n rowDragDropColumnMeta.field.id !== fieldDragHelper.dropTarget &&\n rowActionColumnMeta.field.id !== fieldDragHelper.dropTarget &&\n sourceElem &&\n `${sourceElem.dataset.colId}` !== `${fieldDragHelper.dropTarget}`\n ) {\n dispatch(actionColumnDragDrop(sourceElem.dataset.colId!, fieldDragHelper.dropTarget));\n }\n document.body.removeChild(emptyImg);\n fieldDragHelper.dragLineNode.remove();\n fieldDragHelper.dragProxyNode.remove();\n document.removeEventListener('dragover', documentDragOver);\n fieldDragHelper = {} as FieldDragHelper;\n return false;\n };\n\n return {\n onDragStart,\n onDrag,\n onDragEnd\n };\n};\n\n/**\n * Sets the column {@link RsStore. getFieldReorderProps reorder} props (onDragStart, onDrag, onDragEnd). This feature is executed when any of the following state slices are changed:\n * - {@link State.columnWidths}\n * - {@link State.freezeColumns}\n * - {@link State.colOrder}\n * - {@link State.hiddenColumns}\n */\nexport default () => {\n const memoizedColReOrder = withMemoization(columnReOrder);\n\n return function execute(featureProps: BeforeRenderFeatureProps) {\n const state = featureProps.getState();\n featureProps\n .getRsStore()\n .setFieldReorderProps(\n memoizedColReOrder(\n [featureProps],\n [state.columnWidths, state.freezeColumns, state.colOrder, state.hiddenColumns]\n )\n );\n };\n};\n"]}
1
+ {"version":3,"file":"columnReOrder.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/columnReOrder.ts"],"names":[],"mappings":"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","sourcesContent":["import { actionColumnDragDrop } from '../../../actions/actions';\nimport {\n rowActionColumnMeta,\n rowDragDropColumnMeta,\n rowSelectColumnMeta\n} from '../../../constants';\nimport type RsStore from '../../../RsStore';\nimport { withMemoization } from '../../../utils/util';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { State } from '../../../../../types/State.types';\n\ntype FieldDragHelper = {\n mouseX: number;\n mouseY: number;\n dragLineNode: HTMLElement;\n dragProxyNode: HTMLElement;\n sourceElemIndex: number;\n dragProxyOffset: number;\n virtualizeOffsetLeft: number;\n dropTarget: string;\n};\n\nconst ColIdSelector = '[data-col-id]';\nconst SomeNegativeBigOffset = `${Number.MIN_SAFE_INTEGER}px`;\n\n// Todo: comeback and see if there is any other way to just have no drag image\nconst emptyImg = document.createElement('img');\nemptyImg.src = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';\n\nfunction createElement(type: string, className: string): HTMLElement {\n const domNode = document.createElement(type);\n domNode.classList.add(className);\n return domNode;\n}\n\nconst columnReOrder = ([{ getView, getState, dispatch }]: [\n featureProps: BeforeRenderFeatureProps\n]): RsStore['fieldReorderProps'] => {\n if (!getView().meta.reorderFields) {\n return null;\n }\n const { columnWidths, freezeColumns = [] } = getState();\n let fieldDragHelper: FieldDragHelper = {} as FieldDragHelper;\n const allPositions = (() => {\n const allWidths: {\n width: number;\n order: number;\n offset?: number;\n id: string;\n }[] = getView()\n .columns!.filter(column => !column.hidden) // Take all visible columns\n .map(column => ({\n width: (columnWidths?.[column.field.id] ?? column.field.width)!,\n order: column.style?.order,\n id: column.field.id\n }));\n // Bail out when AllWidths/Visible columns is empty\n if (allWidths.length === 0) {\n return {\n allWidths,\n freezeColumnsWidth: 0\n };\n }\n\n allWidths.sort((a, b) => a.order - b.order);\n\n let previousColOffset = 0;\n allWidths.forEach(column => {\n column.offset = previousColOffset;\n previousColOffset += column.width;\n });\n allWidths.push({\n width: 0,\n order: allWidths[allWidths.length - 1].order + 1,\n offset: allWidths[allWidths.length - 1].offset! + allWidths[allWidths.length - 1].width,\n id: 'last$'\n });\n const visibleFreezeColumns = getView().columns!.filter(col => col.frozen && !col.hidden);\n const freezeColumnsWidth = allWidths[visibleFreezeColumns.length]?.offset;\n return {\n allWidths,\n freezeColumnsWidth\n };\n })();\n\n const { allWidths, freezeColumnsWidth } = allPositions;\n\n // https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n // This DragOver on document is the hack for the above bug as clientX is not proper in firefox\n const documentDragOver = (e: DragEvent) => {\n fieldDragHelper.mouseX = e.clientX;\n fieldDragHelper.mouseY = e.clientY;\n };\n\n const onDragStart = (e: DragEvent) => {\n fieldDragHelper = {} as FieldDragHelper;\n const domContainer = getView().getDomContainer();\n const scrollNode = getView().getScrollNode();\n const virtualizeEle = getView()\n .getVirtualizeElement('rootVirtualiser')\n ?.getParentContainer?.()!;\n fieldDragHelper.dragLineNode = createElement('div', 'table-drag-line');\n fieldDragHelper.dragProxyNode = createElement('div', 'table-drag-proxy');\n const container = domContainer?.getElementsByClassName('container')[0]!;\n const Header = domContainer?.getElementsByClassName('sticky-header')[0]!;\n container.appendChild(fieldDragHelper.dragProxyNode);\n virtualizeEle.appendChild(fieldDragHelper.dragLineNode);\n fieldDragHelper.dragLineNode.style.height = `${\n // eslint-disable-next-line no-unsafe-optional-chaining\n scrollNode?.clientHeight! + Header.clientHeight\n }px`;\n\n const sourceElem = (e.target as HTMLElement).closest(ColIdSelector) as HTMLElement;\n fieldDragHelper.sourceElemIndex = allWidths.findIndex(xCol => {\n return `${xCol.id}` === sourceElem.dataset.colId;\n });\n\n if (!sourceElem) return;\n\n document.body.appendChild(emptyImg);\n if (e.dataTransfer) {\n e.dataTransfer.setDragImage(emptyImg, 0, 0);\n e.dataTransfer.effectAllowed = 'move';\n e.dataTransfer.setData('text/plain', sourceElem?.dataset.colId || '');\n }\n document.addEventListener('dragover', documentDragOver);\n\n fieldDragHelper.virtualizeOffsetLeft = virtualizeEle.getBoundingClientRect().left;\n fieldDragHelper.dragProxyOffset =\n sourceElem.offsetLeft -\n (virtualizeEle.scrollLeft + fieldDragHelper.mouseX - fieldDragHelper.virtualizeOffsetLeft);\n fieldDragHelper.dragProxyNode.style.width = sourceElem.style.width;\n fieldDragHelper.dragProxyNode.style.marginLeft = `${fieldDragHelper.dragProxyOffset}px`;\n fieldDragHelper.dragProxyNode.style.left = SomeNegativeBigOffset;\n fieldDragHelper.dragLineNode.style.left = SomeNegativeBigOffset;\n fieldDragHelper.dragProxyNode.style.display = 'block';\n fieldDragHelper.dragLineNode.style.display = 'block';\n\n return false; // required for browser allowing image drag out of container\n };\n\n const onDrag = (e: DragEvent) => {\n e.preventDefault();\n const virtualizeEle = getView()\n .getVirtualizeElement('rootVirtualiser')\n ?.getParentContainer?.()!;\n const distanceFromFreezeB =\n fieldDragHelper.mouseX - fieldDragHelper.virtualizeOffsetLeft - freezeColumnsWidth!;\n // is our cursor pointer near to freeze columBoundary?\n if (\n freezeColumnsWidth !== 0 &&\n distanceFromFreezeB < 100 &&\n distanceFromFreezeB > 0 &&\n virtualizeEle.scrollLeft > 0\n ) {\n // is something there to scroll?\n if (distanceFromFreezeB > 50) {\n virtualizeEle.scrollLeft -= 1;\n } else {\n virtualizeEle.scrollLeft -= 3;\n }\n fieldDragHelper.dragProxyNode.style.left = `${\n fieldDragHelper.mouseX - fieldDragHelper.virtualizeOffsetLeft\n }px`;\n fieldDragHelper.dropTarget = allWidths[freezeColumns.length].id;\n fieldDragHelper.dragLineNode.style.left = SomeNegativeBigOffset;\n return false;\n }\n\n fieldDragHelper.dragProxyNode.style.left = `${\n fieldDragHelper.mouseX - fieldDragHelper.virtualizeOffsetLeft\n }px`;\n let currentDragLeftOffset = parseInt(\n // @ts-expect-error parseInt expects string.\n virtualizeEle.scrollLeft + fieldDragHelper.mouseX - fieldDragHelper.virtualizeOffsetLeft,\n 10\n );\n\n if (distanceFromFreezeB < 0) {\n // if we are in freezeZone do not consider scrollLeft for targetColLine calc\n currentDragLeftOffset -= virtualizeEle.scrollLeft;\n }\n\n let xColIndex = allWidths.findIndex(xCol => {\n return currentDragLeftOffset < xCol.offset! + xCol.width / 2;\n });\n\n if (xColIndex === -1) {\n xColIndex = allWidths.length - 1;\n }\n fieldDragHelper.dragLineNode.style.left = `${allWidths[xColIndex].offset}px`;\n\n if (distanceFromFreezeB < 0) {\n // if we are in freezeZone consider scrollLeft for dragLine calculation\n fieldDragHelper.dragLineNode.style.left = `${\n allWidths[xColIndex].offset! + virtualizeEle.scrollLeft\n }px`;\n }\n\n if (xColIndex <= fieldDragHelper.sourceElemIndex) {\n fieldDragHelper.dropTarget = allWidths[xColIndex].id;\n } else {\n fieldDragHelper.dropTarget = allWidths[xColIndex - 1].id;\n }\n\n // Edge Case to not show dragLine when the col is under frozen area\n if (\n distanceFromFreezeB > 0 &&\n allWidths[xColIndex].offset! < virtualizeEle.scrollLeft + freezeColumnsWidth!\n ) {\n fieldDragHelper.dragLineNode.style.left = SomeNegativeBigOffset;\n }\n\n return false;\n };\n\n const onDragEnd = (e: DragEvent) => {\n e.preventDefault();\n fieldDragHelper.dragProxyNode.style.display = 'none';\n fieldDragHelper.dragLineNode.style.display = 'none';\n const sourceElem: HTMLElement | null = (e.target as HTMLElement).closest(ColIdSelector);\n if (\n rowSelectColumnMeta.field.id !== fieldDragHelper.dropTarget &&\n rowDragDropColumnMeta.field.id !== fieldDragHelper.dropTarget &&\n rowActionColumnMeta.field.id !== fieldDragHelper.dropTarget &&\n sourceElem &&\n `${sourceElem.dataset.colId}` !== `${fieldDragHelper.dropTarget}`\n ) {\n dispatch(actionColumnDragDrop(sourceElem.dataset.colId!, fieldDragHelper.dropTarget));\n }\n document.body.removeChild(emptyImg);\n fieldDragHelper.dragLineNode.remove();\n fieldDragHelper.dragProxyNode.remove();\n document.removeEventListener('dragover', documentDragOver);\n fieldDragHelper = {} as FieldDragHelper;\n return false;\n };\n\n return {\n onDragStart,\n onDrag,\n onDragEnd\n };\n};\n\n/**\n * Sets the column {@link RsStore. getFieldReorderProps reorder} props (onDragStart, onDrag, onDragEnd). This feature is executed when any of the following state slices are changed:\n * - {@link State.columnWidths}\n * - {@link State.freezeColumns}\n * - {@link State.colOrder}\n * - {@link State.hiddenColumns}\n */\nexport default () => {\n const memoizedColReOrder = withMemoization(columnReOrder);\n\n return function execute(featureProps: BeforeRenderFeatureProps) {\n const state = featureProps.getState();\n featureProps\n .getRsStore()\n .setFieldReorderProps(\n memoizedColReOrder(\n [featureProps],\n [state.columnWidths, state.freezeColumns, state.colOrder, state.hiddenColumns]\n )\n );\n };\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"grouping.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/grouping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAa1D,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAOrE,OAAO,KAAK,EACV,WAAW,EACX,uBAAuB,EAGxB,MAAM,uCAAuC,CAAC;AAE/C,MAAM,WAAW,kBAAkB;IACjC,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;IAChD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,GAC5D,kBAAkB,GAAG;IACnB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B,CAAC;AAEJ,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAAC,uBAAuB,EAAE,UAAU,CAAC,GACpF,kBAAkB,GAAG;IACnB,QAAQ,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;CAChD,CAAC;AAoiBJ;;;;;;;;GAQG;yBACa,YAAY,UAAU,qBAYC,wBAAwB;AAZ/D,wBAoEE"}
1
+ {"version":3,"file":"grouping.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/grouping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAa1D,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAOrE,OAAO,KAAK,EACV,WAAW,EACX,uBAAuB,EAGxB,MAAM,uCAAuC,CAAC;AAE/C,MAAM,WAAW,kBAAkB;IACjC,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;IAChD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,GAC5D,kBAAkB,GAAG;IACnB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B,CAAC;AAEJ,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAAC,uBAAuB,EAAE,UAAU,CAAC,GACpF,kBAAkB,GAAG;IACnB,QAAQ,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;CAChD,CAAC;AA+hBJ;;;;;;;;GAQG;yBACa,YAAY,UAAU,qBAYC,wBAAwB;AAZ/D,wBAoEE"}
@@ -89,8 +89,9 @@ const prepareGroupHeaders = (props) => {
89
89
  aggregation: child.agg,
90
90
  showHierarchicalFooter: child.showHierarchicalFooter,
91
91
  isHierarchical: child.isHierarchical,
92
- info: child.info,
93
- data: child.data
92
+ info: 'info' in child ? child.info : undefined,
93
+ data: 'data' in child ? child.data : undefined,
94
+ additionalFieldsData: 'additionalFieldsData' in child ? child.additionalFieldsData : undefined
94
95
  }, rsInternal);
95
96
  // If header node is a leaf node then , add start index and endIndex to resolve data.
96
97
  if ((viewHeader.isLeafNode || viewHeader.isHierarchical) &&
@@ -183,10 +184,7 @@ function getRecordsCount(group, count, includedRowCount, parentGroup, from, to,
183
184
  }
184
185
  count = innerCount;
185
186
  }
186
- if (group[i].isHierarchical &&
187
- aggregationInfo &&
188
- aggregationInfo.length > 0 &&
189
- isExpanded) {
187
+ if (group[i].isHierarchical && aggregationInfo && aggregationInfo.length > 0 && isExpanded) {
190
188
  count += 1;
191
189
  group[i].showHierarchicalFooter = true;
192
190
  if (group[i].visibleRow && includedRowCount <= to) {
@@ -1 +1 @@
1
- {"version":3,"file":"grouping.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/grouping.ts"],"names":[],"mappings":"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","sourcesContent":["import type { OmitStrict } from '@pega/cosmos-react-core';\n\nimport {\n getGroupKey,\n getGroupFromKey,\n withMemoization,\n compareArray,\n dateFunctionLabels,\n deepCopy,\n isEmpty\n} from '../../../utils/util';\nimport { actionGroupingExpandCollapseAll } from '../../../actions/actions';\nimport { AFTER_FETCH } from '../../../pubSub/events';\nimport type RsInternal from '../../../RsInternal';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\nimport type { MemoizedFunction } from '../../../utils/util.types';\nimport type { Group, GroupFilter, GroupToggle, State } from '../../../../../types/State.types';\nimport type { HierarchicalInfo } from '../../../../../types/Meta.types';\nimport GroupGenerator from '../../../generators/GroupGenerator';\nimport type View from '../../../generators/ViewGenerator';\nimport type RsStore from '../../../RsStore';\nimport type {\n GroupedInfo,\n HierarchicalGroupedInfo,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ApiContext\n} from '../../../../../types/ApiContext.types';\n\nexport interface CommonGroupingInfo {\n /** Id of the field on which grouping is applied. */\n groupBy: string;\n /** Current group level, starts with 0 for 1st level of grouping. */\n level: number;\n /** Path of the grouped column value. */\n hierarchy: (string | number | boolean | Date)[];\n visibleRow?: boolean;\n showHierarchicalFooter?: boolean;\n groupFrom?: number;\n groupTo?: number;\n isHierarchical?: boolean;\n}\n\nexport type GroupingInfo = OmitStrict<GroupedInfo, 'children'> &\n CommonGroupingInfo & {\n children?: GroupingInfo[];\n };\n\nexport type HierarchicalGroupingInfo = OmitStrict<HierarchicalGroupedInfo, 'children'> &\n CommonGroupingInfo & {\n children?: HierarchicalGroupingInfo[];\n parentId?: string;\n targetId?: string;\n name?: null | string | number | boolean | Date;\n };\n\nfunction isNodeExpanded(\n groupToggle: GroupToggle | undefined,\n node: GroupingInfo | HierarchicalGroupingInfo,\n defaultState: boolean | undefined\n): boolean {\n /** Groups with 0 count should not be expandable. */\n if (node.count === 0) {\n return false;\n }\n\n const index = groupToggle?.[node.groupBy!]?.findIndex(gct => compareArray(gct, node.hierarchy!));\n const childToggleState = index! >= 0 ? !defaultState : !!defaultState;\n return childToggleState === true;\n}\n\nconst getLabel = (view: View, groupBy: string, getState: BeforeRenderFeatureProps['getState']) => {\n const { columnId, dateFunction } = getGroupFromKey(groupBy, getState().groups)!;\n let { label } = view.columns!.find(column => column.field.id.toString() === columnId.toString())!;\n if (dateFunction) {\n // @ts-expect-error dateFunction cannot be used to index dateFunctionLabels. Check this.\n label += ` (${dateFunctionLabels[dateFunction]})`;\n }\n return label;\n};\n\n// This function checks if hierarchy exist or not.\n// which will decide whether start and end Index would be there on leaf node or on hierarchical node.\nconst doesExistInViewInfo = (\n viewInfo: GroupFilter[],\n hierarchy: (string | number | boolean | Date)[] = [],\n isHierarchical = false\n) => {\n return viewInfo.some(v => {\n const filters = Object.values(v.filters);\n\n if (isHierarchical) {\n return filters.every(value => value === [...hierarchy].pop());\n }\n\n if (filters.length === hierarchy.length) {\n const tempHierarchy = [...hierarchy];\n // eslint-disable-next-line @typescript-eslint/require-array-sort-compare\n tempHierarchy.sort();\n // eslint-disable-next-line @typescript-eslint/require-array-sort-compare\n return filters.sort().every((value, index) => value === tempHierarchy[index]);\n }\n return false;\n });\n};\n\nconst prepareGroupHeaders = (\n props: [\n groupingInfo: RsStore['groupingInfo'],\n groupFilters: RsStore['groupFilters'],\n rsInternal: RsInternal,\n groupToggle?: State['groupToggle'],\n allGroupsExpanded?: boolean\n ]\n) => {\n const [groupingInfo = [], viewInfo = [], rsInternal, groupToggle = {}, allGroupsExpanded] = props;\n\n // If group and viewInfo are empty, prerape group header for top level leaf node.\n // This is for easing on UI , one contract whether grouping is in place/not.\n // TODO: support for enabling feature on view.\n const view = rsInternal.getView();\n const { getState } = rsInternal.getRsStateResolver();\n if (groupingInfo.length === 0) {\n // construct view header object.\n\n const viewHeader = new GroupGenerator(\n {\n isVisible: false,\n isLeafNode: true,\n isExpanded: true,\n name: '',\n groupBy: '',\n level: 0,\n label: '',\n hierarchy: [],\n count: view.rows!.length\n },\n rsInternal\n );\n viewHeader.startIndex = 0;\n viewHeader.endIndex = view.rows ? view.rows.length : 0;\n view.setProp('groupHeaders', [viewHeader]);\n return;\n }\n // Creating flat objects from view group info using DFT.\n const result = [];\n let counter = 0;\n\n const stack = groupingInfo.map(v => ({ ...v }));\n let leafNodeCountInView = 0;\n let lastDataIndex = 0;\n while (stack.length) {\n const child = stack.shift();\n if (child) {\n const isExpanded = isNodeExpanded(groupToggle, child, allGroupsExpanded);\n const isSubGroupPresent = child.children && child.children.length;\n const label = child.isHierarchical ? '' : getLabel(view, child.groupBy!, getState);\n // construct view header object.\n const viewHeader = new GroupGenerator(\n {\n isVisible: !!child.visibleRow,\n isLeafNode: !isSubGroupPresent,\n isExpanded,\n name: child.name!,\n groupBy: child.groupBy,\n level: child.level,\n label: label!,\n hierarchy: child.hierarchy,\n count: child.count,\n aggregation: child.agg,\n showHierarchicalFooter: child.showHierarchicalFooter,\n isHierarchical: child.isHierarchical,\n info: (child as HierarchicalGroupingInfo).info,\n data: (child as GroupingInfo).data\n },\n rsInternal\n );\n // If header node is a leaf node then , add start index and endIndex to resolve data.\n if (\n (viewHeader.isLeafNode || viewHeader.isHierarchical) &&\n viewHeader.isExpanded &&\n doesExistInViewInfo(viewInfo, viewHeader.hierarchy, viewHeader.isHierarchical)\n ) {\n const { groupFrom, groupTo } = viewInfo[leafNodeCountInView] || {};\n if (groupFrom >= 0 && groupTo >= 0) {\n viewHeader.startIndex = lastDataIndex;\n viewHeader.endIndex = viewHeader.startIndex + groupTo - groupFrom;\n lastDataIndex = viewHeader.endIndex;\n leafNodeCountInView += 1;\n }\n }\n // BUG-775861 - Adding index to visible groupHeaders so that this can be used to set the z-index for groupHeaders\n if (viewHeader.isVisible) {\n viewHeader.index = counter;\n counter += 1;\n }\n result.push(viewHeader);\n if (isExpanded && isSubGroupPresent) {\n stack.unshift(...child.children!);\n }\n }\n }\n view.setProp('groupHeaders', result);\n};\n\nfunction includeGroup(\n group: GroupingInfo | HierarchicalGroupingInfo,\n groupFrom: number,\n groupTo: number,\n parentGroups: Record<string, any>,\n groupFilters: GroupFilter[]\n) {\n group.groupFrom = groupFrom;\n group.groupTo = groupTo;\n groupFilters.push({ groupFrom, groupTo, filters: parentGroups });\n}\n\nfunction getRecordsCount(\n group: NonNullable<RsStore['groupingInfo']>,\n count: number,\n includedRowCount: number,\n parentGroup: Record<string, any>,\n from: number,\n to: number,\n groupFilters: GroupFilter[],\n groupToggle: GroupToggle | undefined,\n allGroupsExpanded: boolean | undefined,\n state: State,\n getView: BeforeRenderFeatureProps['getView']\n): [count: number, includedRowCount: number] {\n const { aggregationInfo } = state;\n\n for (let i = 0; i < group.length; i += 1) {\n const parentGroups = { ...parentGroup };\n if ((group[i] as HierarchicalGroupingInfo).isHierarchical) {\n const currentGroup = group[i] as HierarchicalGroupingInfo;\n parentGroups[currentGroup.parentId!] = currentGroup.info![currentGroup.targetId!];\n } else {\n const currentGroup = group![i] as GroupingInfo;\n parentGroups[currentGroup.groupBy!] = currentGroup.name;\n }\n count += 1;\n // group has subgroups and group is expanded\n const isExpanded = isNodeExpanded(groupToggle, group[i], allGroupsExpanded);\n let includeThisGroup = false;\n if (count > from && count - 1 <= to) {\n includeThisGroup = true;\n includedRowCount += 1;\n }\n group[i].visibleRow = includeThisGroup;\n // Footer should be shown only if node expands.\n // groupToggle will effect footer visibility so reset footer flag.\n group[i].showHierarchicalFooter = false;\n\n if (group[i].children && isExpanded) {\n [count, includedRowCount] = getRecordsCount(\n group[i].children!,\n count,\n includedRowCount,\n parentGroups,\n from,\n to,\n groupFilters,\n groupToggle,\n allGroupsExpanded,\n state,\n getView\n );\n group[i].visibleRow =\n group[i].visibleRow ||\n !!group[i].children!.find(\n g => g.visibleRow && ((g as HierarchicalGroupingInfo).isHierarchical || !g.children)\n );\n } else if (!group[i].children && isExpanded) {\n // group doesn't have subgroups and group is expanded\n const innerCount = count + group[i].count;\n if (count <= to) {\n let groupFrom = 0;\n let groupTo = 0;\n if (innerCount >= from) {\n groupFrom = Math.max(from - count, 0);\n if (innerCount <= to + 1) {\n groupTo = group[i].count;\n } else {\n groupTo = groupFrom + (to + 1 - from - includedRowCount);\n }\n group[i].visibleRow = true;\n let updatedGroupFrom = groupFrom;\n // Sticky group header logic\n if (!includeThisGroup && groupTo > groupFrom + 2) {\n if (group[i].level! >= 1) {\n updatedGroupFrom = groupFrom + 2;\n } else {\n updatedGroupFrom = groupFrom + 1;\n }\n }\n includeGroup(group[i], updatedGroupFrom, groupTo, parentGroups, groupFilters);\n }\n includedRowCount += groupTo - groupFrom;\n }\n count = innerCount;\n }\n\n if (\n (group[i] as HierarchicalGroupingInfo).isHierarchical &&\n aggregationInfo &&\n aggregationInfo.length > 0 &&\n isExpanded\n ) {\n count += 1;\n group[i].showHierarchicalFooter = true;\n\n if (group[i].visibleRow && includedRowCount <= to) {\n includedRowCount += 1;\n }\n }\n }\n return [count, includedRowCount];\n}\n\nconst constructGroupingPagination = (\n groupingInfo: NonNullable<RsStore['groupingInfo']>,\n groupToggle: GroupToggle | undefined,\n paginationOptions: NonNullable<State['paginationOptions']>[keyof NonNullable<\n State['paginationOptions']\n >],\n allGroupsExpanded: boolean | undefined,\n state: State,\n getView: BeforeRenderFeatureProps['getView']\n) => {\n const groupFilters = [] as GroupFilter[];\n getRecordsCount(\n groupingInfo,\n 0,\n 0,\n {},\n paginationOptions.startIndex,\n paginationOptions.endIndex,\n groupFilters,\n groupToggle,\n allGroupsExpanded,\n state,\n getView\n );\n return groupFilters;\n};\n\n// This is basically used to update count on non leaf node.\n// which is sum of count of leaf node children in their hierarchy.\nfunction updateCountOnNonLeafNode(groupingInfo: GroupedInfo[]) {\n const updateCount = (child: GroupedInfo) => {\n if (child.count !== undefined) return child.count;\n child.count = child.children!.reduce((acc, c) => {\n acc += updateCount(c)!;\n return acc;\n }, 0);\n };\n groupingInfo.forEach(g => updateCount(g));\n}\n\nfunction updateGroupInfo(groupingInfo: GroupedInfo[], groups: Group[]): GroupingInfo[] {\n // iterate groupingInfo using BFS and update basic information.\n const queue = [...groupingInfo] as GroupingInfo[];\n while (queue.length) {\n const child = queue.pop();\n if (child) {\n if (!child.hierarchy) child.hierarchy = [child.name!];\n child.level = child.level || 0;\n const matchingGroup = groups.find(g => g.level === child.level);\n child.groupBy = getGroupKey(matchingGroup!);\n\n if (child.children) {\n // update level before pushing children to queue.\n child.children.forEach(c => {\n c.level = child.level + 1;\n c.hierarchy = [...child.hierarchy];\n c.hierarchy.push(c.name!);\n });\n queue.push(...child.children);\n }\n }\n }\n return groupingInfo as GroupingInfo[];\n}\n\nfunction updateCountFromGroupingInfo(\n getView: BeforeRenderFeatureProps['getView'],\n getRsStore: BeforeRenderFeatureProps['getRsStore']\n) {\n if (getView().countGeneratedInternally || isEmpty(getView().resultsCount)) {\n const countFromGroupingInfo = getRsStore().groupingInfo?.reduce(\n (acc, group) => (group.count ? acc + group.count : acc),\n 0\n );\n\n const countPayload = { count: countFromGroupingInfo, _countGeneratedInternally: true };\n getView().type.setRecordCount(countPayload);\n }\n}\n\nasync function onGroupsChange([{ getRsProps, getRsStore, getView, getState }]: [\n featureProps: BeforeRenderFeatureProps\n]) {\n const rsStore = getRsStore();\n const rsProps = getRsProps();\n const state = getState();\n const { groups } = state;\n\n if (groups?.length! > 0 && getView().meta.grouping) {\n try {\n const groupingInfo =\n (await rsProps.apiContext.fetchGroupedInfo?.(deepCopy(state), getView().meta, {\n ...(getRsStore().refreshInProgress && {\n invalidateCache: true,\n invalidateCacheToken: getRsStore().refreshToken\n })\n })) || [];\n // Here update group info with basic properties like level, group by, expand state etc.\n // to make calculation easy.\n // TODO: FIXME - Check if count on non leaf node is required\n updateCountOnNonLeafNode(groupingInfo);\n rsStore.groupingInfo = updateGroupInfo(groupingInfo, groups!);\n\n // FIXME: once infinite virtualizer supports the grouping, we need not compute the count from grouping\n // Prepare the count from the groups count until the actual count returns\n updateCountFromGroupingInfo(getView, getRsStore);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('API call failed', err);\n }\n } else rsStore.groupingInfo = [];\n\n getView().columns!.forEach(column => {\n const grouped = groups?.findIndex(group => group.columnId === column.field.id)! >= 0;\n column = column.setProp('grouped', grouped);\n });\n}\n\nfunction autoExpandGroups([{ dispatch, getState }]: [featureProps: BeforeRenderFeatureProps]) {\n const { allGroupsExpanded = true } = getState();\n dispatch(actionGroupingExpandCollapseAll(allGroupsExpanded));\n}\n\nfunction updateHierarchicalGroupInfo(\n groupingInfo: HierarchicalGroupedInfo[],\n hierarchicalGroup: HierarchicalInfo\n) {\n const queue = [...groupingInfo] as HierarchicalGroupingInfo[];\n\n while (queue.length) {\n const child = queue.pop();\n const node = child!.info;\n\n if (child) {\n child.level = child.level || 0;\n child.isHierarchical = true;\n child.parentId = hierarchicalGroup.parentId;\n child.targetId = hierarchicalGroup.targetId;\n child.groupBy = (hierarchicalGroup.sortById || hierarchicalGroup.targetId)!;\n\n if (node) {\n child.name = node[(hierarchicalGroup.sortById || hierarchicalGroup.targetId)!] as string;\n child.hierarchy = [node[hierarchicalGroup.targetId!] as string];\n }\n\n if (child.children) {\n // update level before pushing children to queue.\n child.children.forEach(c => {\n c.level = child.level! + 1;\n });\n queue.push(...child.children);\n }\n }\n }\n}\n\nasync function onHierarchicalGroupChange([{ getState, getRsProps, getRsStore, getView }]: [\n featureProps: BeforeRenderFeatureProps\n]) {\n const { hierarchicalGroup } = getState();\n const rsProps = getRsProps();\n const rsStore = getRsStore();\n if (hierarchicalGroup && hierarchicalGroup.parentId) {\n try {\n const groupingInfo =\n (await rsProps.apiContext.fetchHierarchicalGroupedInfo?.(\n deepCopy(getState()),\n getView().meta,\n {\n ...(getRsStore().refreshInProgress && {\n invalidateCache: true,\n invalidateCacheToken: getRsStore().refreshToken\n })\n }\n )) || [];\n\n getView().setProp('hierarchicalGroupEnabled', true);\n\n updateHierarchicalGroupInfo(groupingInfo, hierarchicalGroup);\n rsStore.groupingInfo = groupingInfo as HierarchicalGroupingInfo[];\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('API call failed', err);\n }\n } else {\n getView().setProp('hierarchicalGroupEnabled', false);\n }\n}\n\nconst getTotalItemCount = (\n getView: BeforeRenderFeatureProps['getView'],\n state: State,\n groupingInfo: NonNullable<RsStore['groupingInfo']>\n) => {\n // Calculate total group count and update instance.\n // and datanode count based on group expand state.\n let totalItemCount = 0;\n const stack = [...groupingInfo];\n const { groupToggle, allGroupsExpanded } = state;\n\n while (stack.length) {\n const child = stack.shift();\n // We are considering header count whether if it is of hierarchical node or\n // a normal group node and it has data associated with it in its hierarchy.\n if (child) {\n totalItemCount += 1;\n const isSubGroupPresent = child.children && child.children.length;\n const isExpanded = isNodeExpanded(groupToggle, child, allGroupsExpanded);\n if (isExpanded && isSubGroupPresent) {\n stack.unshift(...child.children!);\n } else if (isExpanded && !isSubGroupPresent) {\n totalItemCount += child.count;\n }\n\n if (child.showHierarchicalFooter) {\n totalItemCount += 1;\n }\n }\n }\n return totalItemCount;\n};\n\nconst updateGroupFilters = ([{ getState, getRsStore, getView }]: [\n featureProps: BeforeRenderFeatureProps\n]) => {\n const { paginationOptions, groupToggle, allGroupsExpanded } = getState();\n const rsStore = getRsStore();\n const { groupingInfo } = rsStore;\n // group info is expected to be [] when there are no groups.\n if (groupingInfo) {\n if (!groupingInfo.length && rsStore.groupFilters && !rsStore.groupFilters.length) return;\n rsStore.groupFilters = constructGroupingPagination(\n groupingInfo,\n groupToggle,\n paginationOptions!.rootVirtualiser,\n allGroupsExpanded,\n getState(),\n getView\n );\n }\n};\n\nfunction postFetch(\n rsInternal: RsInternal,\n memoizedPrepareGroupHeaders: MemoizedFunction<\n [\n groupingInfo: RsStore['groupingInfo'],\n groupFilters: RsStore['groupFilters'],\n rsInternal: RsInternal,\n groupToggle?: State['groupToggle'],\n allGroupsExpanded?: State['allGroupsExpanded']\n ],\n ReturnType<typeof prepareGroupHeaders>\n >\n) {\n const { getRsStore, getView, getRsStateResolver } = rsInternal;\n const rsStore = getRsStore();\n const { getState } = getRsStateResolver();\n if (!rsStore.groupingInfo || !rsStore.groupingInfo.length) {\n // As we are giving ways to always use header though grouping is not in place\n // update total item count given by API.\n getView().setProp('totalItemCount', getView().resultsCount);\n memoizedPrepareGroupHeaders([[], [], rsInternal], [getView().rows!.length]);\n } else {\n // As our group headers are representing data in UI , so\n // like data after every fetch group headers should also change so that\n // UI get to know about latest group.\n getView().setProp(\n 'totalItemCount',\n getTotalItemCount(getView, getState(), rsStore.groupingInfo)\n );\n memoizedPrepareGroupHeaders([\n rsStore.groupingInfo,\n rsStore.groupFilters,\n rsInternal,\n getState().groupToggle,\n getState().allGroupsExpanded\n ]);\n }\n}\n\n// TODO: Need to make changes in grouping to support 0 based indexing inclusive start and end index.\n/**\n * Handles the grouping feature for repeating structures.\n *\n * This method performs the following tasks:\n * - Fetches the grouping information, either via {@link ApiContext.fetchGroupedInfo} or {@link ApiContext.fetchHierarchicalGroupedInfo}, and stores the result in {@link RsStore.groupingInfo}.\n * - Prepares group filters based on the grouping information, then sets these filters in {@link RsStore.groupFilters}.\n * - Manages the automatic expansion of groups.\n * - Prepares group headers from the fetched grouping information and sets them in {@link View.groupHeaders}.\n */\nexport default (rsInternal: RsInternal) => {\n const memoizedOnGroupsChange = withMemoization(onGroupsChange);\n const memorizeOnHierarchicalGroupChange = withMemoization(onHierarchicalGroupChange);\n const memoizedUpdateGroupFilters = withMemoization(updateGroupFilters);\n const memoizedAutoExpandGroups = withMemoization(autoExpandGroups);\n\n // Prepare group header even though groups are not present to have one flow.\n // depend on after fetch event as , it depends on data when no grouping is there.\n rsInternal\n .getPubSubUtils()\n .subscribe(AFTER_FETCH, () => postFetch(rsInternal, withMemoization(prepareGroupHeaders)));\n\n async function execute(featureProps: BeforeRenderFeatureProps) {\n const { getState, getRsStore } = featureProps;\n const state = getState();\n // TOdo: Fixme ISSUE-76344... try to not rely on state.personalization?.active\n await memoizedOnGroupsChange(\n [featureProps],\n [\n state.groups,\n state.filterExpression,\n state.search?.query,\n state.personalization?.active,\n state.refresh,\n state.aggregationInfo,\n state.hiddenColumns\n ]\n );\n\n memoizedAutoExpandGroups([featureProps], [state.personalization?.active]);\n\n await memorizeOnHierarchicalGroupChange(\n [featureProps],\n [\n state.hierarchicalGroup,\n state.filterExpression,\n state.search?.query,\n state.aggregationInfo,\n state.personalization?.active\n ]\n );\n // In new grouping, update group info in state.\n // Action dispatched for group info will prepare group headers.\n if (state.paginationOptions) {\n // TODO: use this comarator for optimization but isVisible calculated prop on grouping info needs to be handled.ISSUE-80012\n // const comparator =(prev, next) => {\n // if (prev[1] !== next[1] || prev[3] !== next[3]) return false;\n // return compareArray(prev[2], next[2], ['children', 'count', 'name']);\n // };\n memoizedUpdateGroupFilters(\n [featureProps],\n [\n state.paginationOptions[Object.keys(state.paginationOptions || {})[0]],\n getRsStore().groupingInfo,\n state.groupToggle,\n state.allGroupsExpanded\n ]\n );\n }\n }\n\n // As we are generating one flow, this is required. TODO: Need to take decision\n // conditional block on UI or feature push though not enabled.\n if (rsInternal.getView().meta.grouping) {\n return execute;\n }\n\n return undefined;\n};\n"]}
1
+ {"version":3,"file":"grouping.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/grouping.ts"],"names":[],"mappings":"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","sourcesContent":["import type { OmitStrict } from '@pega/cosmos-react-core';\n\nimport {\n getGroupKey,\n getGroupFromKey,\n withMemoization,\n compareArray,\n dateFunctionLabels,\n deepCopy,\n isEmpty\n} from '../../../utils/util';\nimport { actionGroupingExpandCollapseAll } from '../../../actions/actions';\nimport { AFTER_FETCH } from '../../../pubSub/events';\nimport type RsInternal from '../../../RsInternal';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\nimport type { MemoizedFunction } from '../../../utils/util.types';\nimport type { Group, GroupFilter, GroupToggle, State } from '../../../../../types/State.types';\nimport type { HierarchicalInfo } from '../../../../../types/Meta.types';\nimport GroupGenerator from '../../../generators/GroupGenerator';\nimport type View from '../../../generators/ViewGenerator';\nimport type RsStore from '../../../RsStore';\nimport type {\n GroupedInfo,\n HierarchicalGroupedInfo,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ApiContext\n} from '../../../../../types/ApiContext.types';\n\nexport interface CommonGroupingInfo {\n /** Id of the field on which grouping is applied. */\n groupBy: string;\n /** Current group level, starts with 0 for 1st level of grouping. */\n level: number;\n /** Path of the grouped column value. */\n hierarchy: (string | number | boolean | Date)[];\n visibleRow?: boolean;\n showHierarchicalFooter?: boolean;\n groupFrom?: number;\n groupTo?: number;\n isHierarchical?: boolean;\n}\n\nexport type GroupingInfo = OmitStrict<GroupedInfo, 'children'> &\n CommonGroupingInfo & {\n children?: GroupingInfo[];\n };\n\nexport type HierarchicalGroupingInfo = OmitStrict<HierarchicalGroupedInfo, 'children'> &\n CommonGroupingInfo & {\n children?: HierarchicalGroupingInfo[];\n parentId?: string;\n targetId?: string;\n name?: null | string | number | boolean | Date;\n };\n\nfunction isNodeExpanded(\n groupToggle: GroupToggle | undefined,\n node: GroupingInfo | HierarchicalGroupingInfo,\n defaultState: boolean | undefined\n): boolean {\n /** Groups with 0 count should not be expandable. */\n if (node.count === 0) {\n return false;\n }\n\n const index = groupToggle?.[node.groupBy!]?.findIndex(gct => compareArray(gct, node.hierarchy!));\n const childToggleState = index! >= 0 ? !defaultState : !!defaultState;\n return childToggleState === true;\n}\n\nconst getLabel = (view: View, groupBy: string, getState: BeforeRenderFeatureProps['getState']) => {\n const { columnId, dateFunction } = getGroupFromKey(groupBy, getState().groups)!;\n let { label } = view.columns!.find(column => column.field.id.toString() === columnId.toString())!;\n if (dateFunction) {\n // @ts-expect-error dateFunction cannot be used to index dateFunctionLabels. Check this.\n label += ` (${dateFunctionLabels[dateFunction]})`;\n }\n return label;\n};\n\n// This function checks if hierarchy exist or not.\n// which will decide whether start and end Index would be there on leaf node or on hierarchical node.\nconst doesExistInViewInfo = (\n viewInfo: GroupFilter[],\n hierarchy: (string | number | boolean | Date)[] = [],\n isHierarchical = false\n) => {\n return viewInfo.some(v => {\n const filters = Object.values(v.filters);\n\n if (isHierarchical) {\n return filters.every(value => value === [...hierarchy].pop());\n }\n\n if (filters.length === hierarchy.length) {\n const tempHierarchy = [...hierarchy];\n // eslint-disable-next-line @typescript-eslint/require-array-sort-compare\n tempHierarchy.sort();\n // eslint-disable-next-line @typescript-eslint/require-array-sort-compare\n return filters.sort().every((value, index) => value === tempHierarchy[index]);\n }\n return false;\n });\n};\n\nconst prepareGroupHeaders = (\n props: [\n groupingInfo: RsStore['groupingInfo'],\n groupFilters: RsStore['groupFilters'],\n rsInternal: RsInternal,\n groupToggle?: State['groupToggle'],\n allGroupsExpanded?: boolean\n ]\n) => {\n const [groupingInfo = [], viewInfo = [], rsInternal, groupToggle = {}, allGroupsExpanded] = props;\n\n // If group and viewInfo are empty, prerape group header for top level leaf node.\n // This is for easing on UI , one contract whether grouping is in place/not.\n // TODO: support for enabling feature on view.\n const view = rsInternal.getView();\n const { getState } = rsInternal.getRsStateResolver();\n if (groupingInfo.length === 0) {\n // construct view header object.\n\n const viewHeader = new GroupGenerator(\n {\n isVisible: false,\n isLeafNode: true,\n isExpanded: true,\n name: '',\n groupBy: '',\n level: 0,\n label: '',\n hierarchy: [],\n count: view.rows!.length\n },\n rsInternal\n );\n viewHeader.startIndex = 0;\n viewHeader.endIndex = view.rows ? view.rows.length : 0;\n view.setProp('groupHeaders', [viewHeader]);\n return;\n }\n // Creating flat objects from view group info using DFT.\n const result = [];\n let counter = 0;\n\n const stack = groupingInfo.map(v => ({ ...v }));\n let leafNodeCountInView = 0;\n let lastDataIndex = 0;\n while (stack.length) {\n const child = stack.shift();\n if (child) {\n const isExpanded = isNodeExpanded(groupToggle, child, allGroupsExpanded);\n const isSubGroupPresent = child.children && child.children.length;\n const label = child.isHierarchical ? '' : getLabel(view, child.groupBy!, getState);\n // construct view header object.\n const viewHeader = new GroupGenerator(\n {\n isVisible: !!child.visibleRow,\n isLeafNode: !isSubGroupPresent,\n isExpanded,\n name: child.name!,\n groupBy: child.groupBy,\n level: child.level,\n label: label!,\n hierarchy: child.hierarchy,\n count: child.count,\n aggregation: child.agg,\n showHierarchicalFooter: child.showHierarchicalFooter,\n isHierarchical: child.isHierarchical,\n info: 'info' in child ? child.info : undefined,\n data: 'data' in child ? child.data : undefined,\n additionalFieldsData:\n 'additionalFieldsData' in child ? child.additionalFieldsData : undefined\n },\n rsInternal\n );\n // If header node is a leaf node then , add start index and endIndex to resolve data.\n if (\n (viewHeader.isLeafNode || viewHeader.isHierarchical) &&\n viewHeader.isExpanded &&\n doesExistInViewInfo(viewInfo, viewHeader.hierarchy, viewHeader.isHierarchical)\n ) {\n const { groupFrom, groupTo } = viewInfo[leafNodeCountInView] || {};\n if (groupFrom >= 0 && groupTo >= 0) {\n viewHeader.startIndex = lastDataIndex;\n viewHeader.endIndex = viewHeader.startIndex + groupTo - groupFrom;\n lastDataIndex = viewHeader.endIndex;\n leafNodeCountInView += 1;\n }\n }\n // BUG-775861 - Adding index to visible groupHeaders so that this can be used to set the z-index for groupHeaders\n if (viewHeader.isVisible) {\n viewHeader.index = counter;\n counter += 1;\n }\n result.push(viewHeader);\n if (isExpanded && isSubGroupPresent) {\n stack.unshift(...child.children!);\n }\n }\n }\n view.setProp('groupHeaders', result);\n};\n\nfunction includeGroup(\n group: GroupingInfo | HierarchicalGroupingInfo,\n groupFrom: number,\n groupTo: number,\n parentGroups: Record<string, any>,\n groupFilters: GroupFilter[]\n) {\n group.groupFrom = groupFrom;\n group.groupTo = groupTo;\n groupFilters.push({ groupFrom, groupTo, filters: parentGroups });\n}\n\nfunction getRecordsCount(\n group: NonNullable<RsStore['groupingInfo']>,\n count: number,\n includedRowCount: number,\n parentGroup: Record<string, any>,\n from: number,\n to: number,\n groupFilters: GroupFilter[],\n groupToggle: GroupToggle | undefined,\n allGroupsExpanded: boolean | undefined,\n state: State,\n getView: BeforeRenderFeatureProps['getView']\n): [count: number, includedRowCount: number] {\n const { aggregationInfo } = state;\n\n for (let i = 0; i < group.length; i += 1) {\n const parentGroups = { ...parentGroup };\n if (group[i].isHierarchical) {\n const currentGroup = group[i] as HierarchicalGroupingInfo;\n parentGroups[currentGroup.parentId!] = currentGroup.info![currentGroup.targetId!];\n } else {\n const currentGroup = group![i] as GroupingInfo;\n parentGroups[currentGroup.groupBy!] = currentGroup.name;\n }\n count += 1;\n // group has subgroups and group is expanded\n const isExpanded = isNodeExpanded(groupToggle, group[i], allGroupsExpanded);\n let includeThisGroup = false;\n if (count > from && count - 1 <= to) {\n includeThisGroup = true;\n includedRowCount += 1;\n }\n group[i].visibleRow = includeThisGroup;\n // Footer should be shown only if node expands.\n // groupToggle will effect footer visibility so reset footer flag.\n group[i].showHierarchicalFooter = false;\n\n if (group[i].children && isExpanded) {\n [count, includedRowCount] = getRecordsCount(\n group[i].children!,\n count,\n includedRowCount,\n parentGroups,\n from,\n to,\n groupFilters,\n groupToggle,\n allGroupsExpanded,\n state,\n getView\n );\n group[i].visibleRow =\n group[i].visibleRow ||\n !!group[i].children!.find(g => g.visibleRow && (g.isHierarchical || !g.children));\n } else if (!group[i].children && isExpanded) {\n // group doesn't have subgroups and group is expanded\n const innerCount = count + group[i].count;\n if (count <= to) {\n let groupFrom = 0;\n let groupTo = 0;\n if (innerCount >= from) {\n groupFrom = Math.max(from - count, 0);\n if (innerCount <= to + 1) {\n groupTo = group[i].count;\n } else {\n groupTo = groupFrom + (to + 1 - from - includedRowCount);\n }\n group[i].visibleRow = true;\n let updatedGroupFrom = groupFrom;\n // Sticky group header logic\n if (!includeThisGroup && groupTo > groupFrom + 2) {\n if (group[i].level! >= 1) {\n updatedGroupFrom = groupFrom + 2;\n } else {\n updatedGroupFrom = groupFrom + 1;\n }\n }\n includeGroup(group[i], updatedGroupFrom, groupTo, parentGroups, groupFilters);\n }\n includedRowCount += groupTo - groupFrom;\n }\n count = innerCount;\n }\n\n if (group[i].isHierarchical && aggregationInfo && aggregationInfo.length > 0 && isExpanded) {\n count += 1;\n group[i].showHierarchicalFooter = true;\n\n if (group[i].visibleRow && includedRowCount <= to) {\n includedRowCount += 1;\n }\n }\n }\n return [count, includedRowCount];\n}\n\nconst constructGroupingPagination = (\n groupingInfo: NonNullable<RsStore['groupingInfo']>,\n groupToggle: GroupToggle | undefined,\n paginationOptions: NonNullable<State['paginationOptions']>[keyof NonNullable<\n State['paginationOptions']\n >],\n allGroupsExpanded: boolean | undefined,\n state: State,\n getView: BeforeRenderFeatureProps['getView']\n) => {\n const groupFilters: GroupFilter[] = [];\n getRecordsCount(\n groupingInfo,\n 0,\n 0,\n {},\n paginationOptions.startIndex,\n paginationOptions.endIndex,\n groupFilters,\n groupToggle,\n allGroupsExpanded,\n state,\n getView\n );\n return groupFilters;\n};\n\n// This is basically used to update count on non leaf node.\n// which is sum of count of leaf node children in their hierarchy.\nfunction updateCountOnNonLeafNode(groupingInfo: GroupedInfo[]) {\n const updateCount = (child: GroupedInfo) => {\n if (child.count !== undefined) return child.count;\n child.count = child.children!.reduce((acc, c) => {\n acc += updateCount(c)!;\n return acc;\n }, 0);\n };\n groupingInfo.forEach(g => updateCount(g));\n}\n\nfunction updateGroupInfo(groupingInfo: GroupedInfo[], groups: Group[]): GroupingInfo[] {\n // iterate groupingInfo using BFS and update basic information.\n const queue = [...groupingInfo] as GroupingInfo[];\n while (queue.length) {\n const child = queue.pop();\n if (child) {\n if (!child.hierarchy) child.hierarchy = [child.name!];\n child.level = child.level || 0;\n const matchingGroup = groups.find(g => g.level === child.level);\n child.groupBy = getGroupKey(matchingGroup!);\n\n if (child.children) {\n // update level before pushing children to queue.\n child.children.forEach(c => {\n c.level = child.level + 1;\n c.hierarchy = [...child.hierarchy];\n c.hierarchy.push(c.name!);\n });\n queue.push(...child.children);\n }\n }\n }\n return groupingInfo as GroupingInfo[];\n}\n\nfunction updateCountFromGroupingInfo(\n getView: BeforeRenderFeatureProps['getView'],\n getRsStore: BeforeRenderFeatureProps['getRsStore']\n) {\n if (getView().countGeneratedInternally || isEmpty(getView().resultsCount)) {\n const countFromGroupingInfo = getRsStore().groupingInfo?.reduce(\n (acc, group) => (group.count ? acc + group.count : acc),\n 0\n );\n\n const countPayload = { count: countFromGroupingInfo, _countGeneratedInternally: true };\n getView().type.setRecordCount(countPayload);\n }\n}\n\nasync function onGroupsChange([{ getRsProps, getRsStore, getView, getState }]: [\n featureProps: BeforeRenderFeatureProps\n]) {\n const rsStore = getRsStore();\n const rsProps = getRsProps();\n const state = getState();\n const { groups } = state;\n\n if (groups?.length! > 0 && getView().meta.grouping) {\n try {\n const groupingInfo =\n (await rsProps.apiContext.fetchGroupedInfo?.(deepCopy(state), getView().meta, {\n ...(getRsStore().refreshInProgress && {\n invalidateCache: true,\n invalidateCacheToken: getRsStore().refreshToken\n })\n })) || [];\n // Here update group info with basic properties like level, group by, expand state etc.\n // to make calculation easy.\n // TODO: FIXME - Check if count on non leaf node is required\n updateCountOnNonLeafNode(groupingInfo);\n rsStore.groupingInfo = updateGroupInfo(groupingInfo, groups!);\n\n // FIXME: once infinite virtualizer supports the grouping, we need not compute the count from grouping\n // Prepare the count from the groups count until the actual count returns\n updateCountFromGroupingInfo(getView, getRsStore);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('API call failed', err);\n }\n } else rsStore.groupingInfo = [];\n\n getView().columns!.forEach(column => {\n const grouped = groups?.findIndex(group => group.columnId === column.field.id)! >= 0;\n column = column.setProp('grouped', grouped);\n });\n}\n\nfunction autoExpandGroups([{ dispatch, getState }]: [featureProps: BeforeRenderFeatureProps]) {\n const { allGroupsExpanded = true } = getState();\n dispatch(actionGroupingExpandCollapseAll(allGroupsExpanded));\n}\n\nfunction updateHierarchicalGroupInfo(\n groupingInfo: HierarchicalGroupedInfo[],\n hierarchicalGroup: HierarchicalInfo\n) {\n const queue = [...groupingInfo] as HierarchicalGroupingInfo[];\n\n while (queue.length) {\n const child = queue.pop();\n const node = child!.info;\n\n if (child) {\n child.level = child.level || 0;\n child.isHierarchical = true;\n child.parentId = hierarchicalGroup.parentId;\n child.targetId = hierarchicalGroup.targetId;\n child.groupBy = (hierarchicalGroup.sortById || hierarchicalGroup.targetId)!;\n\n if (node) {\n child.name = node[(hierarchicalGroup.sortById || hierarchicalGroup.targetId)!] as string;\n child.hierarchy = [node[hierarchicalGroup.targetId!] as string];\n }\n\n if (child.children) {\n // update level before pushing children to queue.\n child.children.forEach(c => {\n c.level = child.level! + 1;\n });\n queue.push(...child.children);\n }\n }\n }\n}\n\nasync function onHierarchicalGroupChange([{ getState, getRsProps, getRsStore, getView }]: [\n featureProps: BeforeRenderFeatureProps\n]) {\n const { hierarchicalGroup } = getState();\n const rsProps = getRsProps();\n const rsStore = getRsStore();\n if (hierarchicalGroup && hierarchicalGroup.parentId) {\n try {\n const groupingInfo =\n (await rsProps.apiContext.fetchHierarchicalGroupedInfo?.(\n deepCopy(getState()),\n getView().meta,\n {\n ...(getRsStore().refreshInProgress && {\n invalidateCache: true,\n invalidateCacheToken: getRsStore().refreshToken\n })\n }\n )) || [];\n\n getView().setProp('hierarchicalGroupEnabled', true);\n\n updateHierarchicalGroupInfo(groupingInfo, hierarchicalGroup);\n rsStore.groupingInfo = groupingInfo as HierarchicalGroupingInfo[];\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('API call failed', err);\n }\n } else {\n getView().setProp('hierarchicalGroupEnabled', false);\n }\n}\n\nconst getTotalItemCount = (\n getView: BeforeRenderFeatureProps['getView'],\n state: State,\n groupingInfo: NonNullable<RsStore['groupingInfo']>\n) => {\n // Calculate total group count and update instance.\n // and datanode count based on group expand state.\n let totalItemCount = 0;\n const stack = [...groupingInfo];\n const { groupToggle, allGroupsExpanded } = state;\n\n while (stack.length) {\n const child = stack.shift();\n // We are considering header count whether if it is of hierarchical node or\n // a normal group node and it has data associated with it in its hierarchy.\n if (child) {\n totalItemCount += 1;\n const isSubGroupPresent = child.children && child.children.length;\n const isExpanded = isNodeExpanded(groupToggle, child, allGroupsExpanded);\n if (isExpanded && isSubGroupPresent) {\n stack.unshift(...child.children!);\n } else if (isExpanded && !isSubGroupPresent) {\n totalItemCount += child.count;\n }\n\n if (child.showHierarchicalFooter) {\n totalItemCount += 1;\n }\n }\n }\n return totalItemCount;\n};\n\nconst updateGroupFilters = ([{ getState, getRsStore, getView }]: [\n featureProps: BeforeRenderFeatureProps\n]) => {\n const { paginationOptions, groupToggle, allGroupsExpanded } = getState();\n const rsStore = getRsStore();\n const { groupingInfo } = rsStore;\n // group info is expected to be [] when there are no groups.\n if (groupingInfo) {\n if (!groupingInfo.length && rsStore.groupFilters && !rsStore.groupFilters.length) return;\n rsStore.groupFilters = constructGroupingPagination(\n groupingInfo,\n groupToggle,\n paginationOptions!.rootVirtualiser,\n allGroupsExpanded,\n getState(),\n getView\n );\n }\n};\n\nfunction postFetch(\n rsInternal: RsInternal,\n memoizedPrepareGroupHeaders: MemoizedFunction<\n [\n groupingInfo: RsStore['groupingInfo'],\n groupFilters: RsStore['groupFilters'],\n rsInternal: RsInternal,\n groupToggle?: State['groupToggle'],\n allGroupsExpanded?: State['allGroupsExpanded']\n ],\n ReturnType<typeof prepareGroupHeaders>\n >\n) {\n const { getRsStore, getView, getRsStateResolver } = rsInternal;\n const rsStore = getRsStore();\n const { getState } = getRsStateResolver();\n if (!rsStore.groupingInfo || !rsStore.groupingInfo.length) {\n // As we are giving ways to always use header though grouping is not in place\n // update total item count given by API.\n getView().setProp('totalItemCount', getView().resultsCount);\n memoizedPrepareGroupHeaders([[], [], rsInternal], [getView().rows!.length]);\n } else {\n // As our group headers are representing data in UI , so\n // like data after every fetch group headers should also change so that\n // UI get to know about latest group.\n getView().setProp(\n 'totalItemCount',\n getTotalItemCount(getView, getState(), rsStore.groupingInfo)\n );\n memoizedPrepareGroupHeaders([\n rsStore.groupingInfo,\n rsStore.groupFilters,\n rsInternal,\n getState().groupToggle,\n getState().allGroupsExpanded\n ]);\n }\n}\n\n// TODO: Need to make changes in grouping to support 0 based indexing inclusive start and end index.\n/**\n * Handles the grouping feature for repeating structures.\n *\n * This method performs the following tasks:\n * - Fetches the grouping information, either via {@link ApiContext.fetchGroupedInfo} or {@link ApiContext.fetchHierarchicalGroupedInfo}, and stores the result in {@link RsStore.groupingInfo}.\n * - Prepares group filters based on the grouping information, then sets these filters in {@link RsStore.groupFilters}.\n * - Manages the automatic expansion of groups.\n * - Prepares group headers from the fetched grouping information and sets them in {@link View.groupHeaders}.\n */\nexport default (rsInternal: RsInternal) => {\n const memoizedOnGroupsChange = withMemoization(onGroupsChange);\n const memorizeOnHierarchicalGroupChange = withMemoization(onHierarchicalGroupChange);\n const memoizedUpdateGroupFilters = withMemoization(updateGroupFilters);\n const memoizedAutoExpandGroups = withMemoization(autoExpandGroups);\n\n // Prepare group header even though groups are not present to have one flow.\n // depend on after fetch event as , it depends on data when no grouping is there.\n rsInternal\n .getPubSubUtils()\n .subscribe(AFTER_FETCH, () => postFetch(rsInternal, withMemoization(prepareGroupHeaders)));\n\n async function execute(featureProps: BeforeRenderFeatureProps) {\n const { getState, getRsStore } = featureProps;\n const state = getState();\n // TOdo: Fixme ISSUE-76344... try to not rely on state.personalization?.active\n await memoizedOnGroupsChange(\n [featureProps],\n [\n state.groups,\n state.filterExpression,\n state.search?.query,\n state.personalization?.active,\n state.refresh,\n state.aggregationInfo,\n state.hiddenColumns\n ]\n );\n\n memoizedAutoExpandGroups([featureProps], [state.personalization?.active]);\n\n await memorizeOnHierarchicalGroupChange(\n [featureProps],\n [\n state.hierarchicalGroup,\n state.filterExpression,\n state.search?.query,\n state.aggregationInfo,\n state.personalization?.active\n ]\n );\n // In new grouping, update group info in state.\n // Action dispatched for group info will prepare group headers.\n if (state.paginationOptions) {\n // TODO: use this comarator for optimization but isVisible calculated prop on grouping info needs to be handled.ISSUE-80012\n // const comparator =(prev, next) => {\n // if (prev[1] !== next[1] || prev[3] !== next[3]) return false;\n // return compareArray(prev[2], next[2], ['children', 'count', 'name']);\n // };\n memoizedUpdateGroupFilters(\n [featureProps],\n [\n state.paginationOptions[Object.keys(state.paginationOptions || {})[0]],\n getRsStore().groupingInfo,\n state.groupToggle,\n state.allGroupsExpanded\n ]\n );\n }\n }\n\n // As we are generating one flow, this is required. TODO: Need to take decision\n // conditional block on UI or feature push though not enabled.\n if (rsInternal.getView().meta.grouping) {\n return execute;\n }\n\n return undefined;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"rowDragDrop.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/rowDragDrop.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAyQrE;;;GAGG;yBACa,YAAY,UAAU,MASZ,cAAc,wBAAwB;AAThE,wBAgBE"}
1
+ {"version":3,"file":"rowDragDrop.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/rowDragDrop.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAkRrE;;;GAGG;yBACa,YAAY,UAAU,MASZ,cAAc,wBAAwB;AAThE,wBAgBE"}
@@ -27,7 +27,9 @@ const setGhostImage = ({ getView }, e) => {
27
27
  dragProxy.style.background = 'rgba(0, 0, 0, 0.21)';
28
28
  dragProxy.style.zIndex = '-1';
29
29
  getView().getDomContainer().appendChild(dragProxy);
30
- e.dataTransfer.setDragImage(dragProxy, 0, 0);
30
+ if (e.dataTransfer) {
31
+ e.dataTransfer.setDragImage(dragProxy, 0, 0);
32
+ }
31
33
  setTimeout(() => {
32
34
  dragProxy.parentNode.removeChild(dragProxy);
33
35
  }, 1000);
@@ -108,7 +110,11 @@ const dragStartCb = (featureProps, ev) => {
108
110
  featureProps.getRsStore().rowDragDropRef.contextDropCb = dropCallBack;
109
111
  featureProps.getRsStore().rowDragDropRef.contextDragOverCb = dragOverCallBack;
110
112
  setGhostImage(featureProps, ev);
111
- ev.dataTransfer.effectAllowed = 'move';
113
+ if (ev.dataTransfer) {
114
+ ev.dataTransfer.effectAllowed = 'move';
115
+ // Setting up some dummy data(dragged row item key) to make drag drop work in firefox. Refer https://medium.com/%40reiberdatschi/common-pitfalls-with-html5-drag-n-drop-api-9f011a09ee6c
116
+ ev.dataTransfer.setData('text/plain', 'RS_Dragged_Row_Item');
117
+ }
112
118
  // fail safe reset drag target.
113
119
  if (featureProps.getRsStore().rowDragDropRef.dragTarget)
114
120
  featureProps.getRsStore().rowDragDropRef.dragTarget = undefined;
@@ -159,7 +165,9 @@ const dragEnterCb = ({ getRsStore }, ev) => {
159
165
  : [];
160
166
  rsStore.rowDragDropRef.dropTarget.push(ev.currentTarget);
161
167
  ev.currentTarget.classList.add('dragEnter');
162
- ev.dataTransfer.dropEffect = 'move';
168
+ if (ev.dataTransfer) {
169
+ ev.dataTransfer.dropEffect = 'move';
170
+ }
163
171
  rsStore.rowDragDropRef.dropTargetCoord = ev.currentTarget.getBoundingClientRect();
164
172
  addDropEffect(ev.currentTarget);
165
173
  if (rsStore.rowDragDropRef.dropTarget.length > 1) {
@@ -1 +1 @@
1
- {"version":3,"file":"rowDragDrop.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/rowDragDrop.ts"],"names":[],"mappings":"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","sourcesContent":["import { withMemoization } from '../../../utils/util';\nimport { AFTER_FETCH } from '../../../pubSub/events';\nimport type RsInternal from '../../../RsInternal';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\nimport type RsStore from '../../../RsStore';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type View from '../../../generators/ViewGenerator';\n\nconst DropSelector = '[data-drop]';\nconst getSelector = (t: HTMLElement): HTMLElement | null => t.closest(DropSelector);\n\nconst addDragEffect = (target: HTMLElement) => {\n const t = getSelector(target);\n const elms = Array.isArray(t) ? t : [t];\n elms.forEach(elm => {\n elm.style.opacity = '0.5';\n });\n};\n\nconst removeDragEffect = (target: HTMLElement) => {\n const t = getSelector(target);\n const elms = Array.isArray(t) ? t : [t];\n elms.forEach(elm => {\n elm.style.opacity = '1';\n });\n};\n\nconst setGhostImage = ({ getView }: BeforeRenderFeatureProps, e: DragEvent) => {\n const dragProxy = document.createElement('div');\n const elem = getSelector(e.currentTarget as HTMLElement)!;\n dragProxy.style.height = `${Math.min(\n elem.offsetHeight,\n getView().getScrollNode()!.offsetHeight\n )}px`;\n dragProxy.style.width = `${Math.min(\n elem.offsetWidth,\n getView().virtualizeElements.rootVirtualiser.getParentContainer().clientWidth\n )}px`;\n dragProxy.style.position = 'absolute';\n dragProxy.style.top = '-1000000px';\n dragProxy.style.left = '-10000000px';\n dragProxy.style.background = 'rgba(0, 0, 0, 0.21)';\n dragProxy.style.zIndex = '-1';\n getView().getDomContainer()!.appendChild(dragProxy);\n e.dataTransfer!.setDragImage(dragProxy, 0, 0);\n\n setTimeout(() => {\n dragProxy.parentNode!.removeChild(dragProxy);\n }, 1000);\n};\n\nconst isColliding = (x: DOMRect['x'], y: DOMRect['y'], coord: DOMRect) => {\n const smallBuffer = 2;\n return !(\n x < coord.left - smallBuffer ||\n x > coord.right + smallBuffer ||\n y > coord.bottom + smallBuffer ||\n y < coord.top - smallBuffer\n );\n};\n\nconst addDropEffect = (target: HTMLElement) => {\n const t = getSelector(target);\n const elms = Array.isArray(t) ? t : [t];\n elms.forEach(elm => {\n // Need to handle this in better way.TODO: need clean up as well.\n elm.style.transition = 'transform 0.25s';\n elm.style.transform = 'translate(20px)';\n });\n};\n\nconst removeDropEffect = (target: HTMLElement) => {\n const t = getSelector(target);\n const elms = Array.isArray(t) ? t : [t];\n elms.forEach(elm => {\n elm.style.transition = null;\n elm.style.transform = null;\n });\n};\n\nconst contextDragOverCb = ({ getRsStore, getView }: BeforeRenderFeatureProps, e: DragEvent) => {\n e.stopPropagation();\n e.preventDefault();\n const rsStore = getRsStore();\n const domContainerCoord = getView().getDomContainer()!.getBoundingClientRect();\n if (\n rsStore.rowDragDropRef.dragLeaveSkipped &&\n rsStore.rowDragDropRef.dropTarget &&\n rsStore.rowDragDropRef.dropTarget[rsStore.rowDragDropRef.dropTarget.length - 1] &&\n (!isColliding(e.clientX, e.clientY, rsStore.rowDragDropRef.dropTargetCoord!) ||\n // Force trigger drag leave on the drop target when the dragged row moves outside the RS DOM container.\n e.clientX > domContainerCoord.right ||\n e.clientX < domContainerCoord.left)\n ) {\n rsStore.rowDragDropRef.forcedDragLeave = true;\n rsStore.rowDragDropRef.dragLeaveSkipped = false;\n const elm = rsStore.rowDragDropRef.dropTarget.shift()!;\n rsStore.rowDragDropRef.dropTarget = [...rsStore.rowDragDropRef.dropTarget];\n elm.dispatchEvent(\n new MouseEvent('dragleave', {\n bubbles: true,\n cancelable: true,\n view: window\n })\n );\n }\n};\n\nconst contextDropCb = ({ getRsStore, getView }: BeforeRenderFeatureProps, ev: DragEvent) => {\n ev.stopPropagation();\n ev.preventDefault();\n const rsStore = getRsStore();\n const elm = rsStore.rowDragDropRef.dropTarget[rsStore.rowDragDropRef.dropTarget.length - 1];\n if (\n rsStore.rowDragDropRef.dropTargetCoord &&\n elm !== rsStore.rowDragDropRef.dragTarget &&\n isColliding(ev.clientX, ev.clientY, rsStore.rowDragDropRef.dropTargetCoord)\n ) {\n removeDropEffect(elm);\n elm.classList.remove('dragEnter');\n const destinationKey = elm.closest('.row')!.getAttribute('data-key')!;\n const sourceKey = rsStore.rowDragDropRef.dragTarget?.closest('.row')!.getAttribute('data-key')!;\n rsStore.rowDragDropRef.dragTarget = undefined;\n rsStore.rowDragDropRef.dropTargetCoord = null;\n rsStore.rowDragDropRef.isDragTargetTypeRow = false;\n rsStore.rowDragDropRef.dropTarget = [];\n getView().type.handleRowReorder(sourceKey, destinationKey);\n }\n};\n\nconst dragStartCb = (featureProps: BeforeRenderFeatureProps, ev: DragEvent) => {\n const dragOverCallBack = contextDragOverCb.bind(null, featureProps);\n document.addEventListener('dragover', dragOverCallBack);\n const dropCallBack = contextDropCb.bind(null, featureProps);\n featureProps.getView().getDomContainer()!.addEventListener('drop', dropCallBack);\n\n // We have to keep event handler in reference so that we can remove right handler when drag ends.\n // Handler might change in between because of deps.\n featureProps.getRsStore().rowDragDropRef.contextDropCb = dropCallBack;\n featureProps.getRsStore().rowDragDropRef.contextDragOverCb = dragOverCallBack;\n\n setGhostImage(featureProps, ev);\n ev.dataTransfer!.effectAllowed = 'move';\n // fail safe reset drag target.\n if (featureProps.getRsStore().rowDragDropRef.dragTarget)\n featureProps.getRsStore().rowDragDropRef.dragTarget = undefined;\n featureProps.getRsStore().rowDragDropRef.isDragTargetTypeRow =\n (ev.currentTarget as HTMLElement).getAttribute('data-drag-type') === 'row';\n featureProps.getRsStore().rowDragDropRef.dragTarget = getSelector(\n ev.currentTarget as HTMLElement\n )!;\n (ev.currentTarget as HTMLElement).classList.add('dragStart');\n addDragEffect(ev.currentTarget as HTMLElement);\n};\n\nconst dragEndCb = ({ getRsStore, getView }: BeforeRenderFeatureProps, ev: DragEvent) => {\n const rsStore = getRsStore();\n document.removeEventListener('dragover', rsStore.rowDragDropRef.contextDragOverCb!);\n getView().getDomContainer()!.removeEventListener('drop', rsStore.rowDragDropRef.contextDropCb!);\n rsStore.rowDragDropRef.dropTarget = [];\n rsStore.rowDragDropRef.dropTargetCoord = null;\n rsStore.rowDragDropRef.forcedDragLeave = false;\n rsStore.rowDragDropRef.dragLeaveSkipped = false;\n rsStore.rowDragDropRef.isDragTargetTypeRow = false;\n (ev.currentTarget as HTMLElement).classList.remove('dragStart');\n removeDragEffect(ev.currentTarget as HTMLElement);\n};\n\nconst isValidDragEnter = (rsStore: RsStore, e: DragEvent) => {\n let isValid = true;\n if (!rsStore.rowDragDropRef.isDragTargetTypeRow) return false;\n if (rsStore.rowDragDropRef.dragTarget === e.currentTarget) isValid = false;\n else if (\n rsStore.rowDragDropRef.dropTarget[rsStore.rowDragDropRef.dropTarget.length - 1] ===\n e.currentTarget\n )\n isValid = false;\n else if (\n rsStore.rowDragDropRef.dropTarget[rsStore.rowDragDropRef.dropTarget.length - 1] &&\n rsStore.rowDragDropRef.dropTarget[rsStore.rowDragDropRef.dropTarget.length - 1] !==\n e.currentTarget\n ) {\n const currentTargetCoord = (e.currentTarget as HTMLElement).getBoundingClientRect();\n const dropTargetCoord =\n rsStore.rowDragDropRef.dropTarget[\n rsStore.rowDragDropRef.dropTarget.length - 1\n ].getBoundingClientRect();\n if (\n !isColliding(e.clientX, e.clientY, currentTargetCoord) &&\n isColliding(e.clientX, e.clientY, dropTargetCoord)\n )\n isValid = false;\n }\n return isValid;\n};\n\nconst dragEnterCb = ({ getRsStore }: BeforeRenderFeatureProps, ev: DragEvent) => {\n ev.stopPropagation();\n const rsStore = getRsStore();\n if (isValidDragEnter(rsStore, ev)) {\n rsStore.rowDragDropRef.dropTarget = rsStore.rowDragDropRef.dropTarget.length\n ? [...rsStore.rowDragDropRef.dropTarget]\n : [];\n rsStore.rowDragDropRef.dropTarget.push(ev.currentTarget as HTMLElement);\n (ev.currentTarget as HTMLElement).classList.add('dragEnter');\n ev.dataTransfer!.dropEffect = 'move';\n rsStore.rowDragDropRef.dropTargetCoord = (\n ev.currentTarget as HTMLElement\n ).getBoundingClientRect();\n addDropEffect(ev.currentTarget as HTMLElement);\n\n if (rsStore.rowDragDropRef.dropTarget.length > 1) {\n const elm = rsStore.rowDragDropRef.dropTarget.shift()!;\n rsStore.rowDragDropRef.dropTarget = [...rsStore.rowDragDropRef.dropTarget];\n rsStore.rowDragDropRef.forcedDragLeave = true;\n elm.dispatchEvent(\n new MouseEvent('dragleave', {\n bubbles: true,\n cancelable: true,\n view: window\n })\n );\n }\n }\n};\n\nconst dragLeaveCb = ({ getRsStore }: BeforeRenderFeatureProps, ev: DragEvent) => {\n ev.stopPropagation();\n const rsStore = getRsStore();\n if (rsStore.rowDragDropRef.forcedDragLeave) {\n rsStore.rowDragDropRef.forcedDragLeave = false;\n (ev.currentTarget as HTMLElement).classList.remove('dragEnter');\n removeDropEffect(ev.currentTarget as HTMLElement);\n } else if (\n !(ev.currentTarget as HTMLElement).contains(ev.relatedTarget as HTMLElement) &&\n rsStore.rowDragDropRef.dragTarget !== ev.currentTarget\n ) {\n rsStore.rowDragDropRef.dragLeaveSkipped = true;\n }\n};\n\nconst dragProps = (featureProps: BeforeRenderFeatureProps) => ({\n 'data-drag-type': 'row',\n draggable: true,\n onDragStart: dragStartCb.bind(null, featureProps),\n onDragEnd: dragEndCb.bind(null, featureProps)\n});\n\nconst dropProps = (featureProps: BeforeRenderFeatureProps) => ({\n onDragEnter: dragEnterCb.bind(null, featureProps),\n onDragLeave: dragLeaveCb.bind(null, featureProps),\n 'data-drop': 'dropzone'\n});\n\nfunction addDragDropBehavior([featureProps]: [featureProps: BeforeRenderFeatureProps]) {\n if (!featureProps.getView().meta.reorderItems) {\n return;\n }\n featureProps.getView().rows!.forEach(r => {\n if (!(r.dragProps && r.dropProps)) {\n r.setProp({\n dragProps: dragProps(featureProps),\n dropProps: dropProps(featureProps)\n });\n }\n });\n}\n\n/**\n * Manages drag drop behavior of rows whenever the {@link View.rows rows} are changed in the view on publish of `AFTER_FETCH` event.\n *\n */\nexport default (rsInternal: RsInternal) => {\n rsInternal.getRsStore().rowDragDropRef = {\n dropTarget: [],\n dragTarget: undefined,\n dropZones: []\n };\n const memoizedAddDragDropBehavior = withMemoization(addDragDropBehavior);\n\n // TODO: Move subscription outside execute function\n return function execute(featureProps: BeforeRenderFeatureProps) {\n rsInternal\n .getPubSubUtils()\n .subscribe(AFTER_FETCH, () =>\n memoizedAddDragDropBehavior([featureProps], [featureProps.getView().rows])\n );\n };\n};\n"]}
1
+ {"version":3,"file":"rowDragDrop.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/rowDragDrop.ts"],"names":[],"mappings":"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","sourcesContent":["import { withMemoization } from '../../../utils/util';\nimport { AFTER_FETCH } from '../../../pubSub/events';\nimport type RsInternal from '../../../RsInternal';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\nimport type RsStore from '../../../RsStore';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type View from '../../../generators/ViewGenerator';\n\nconst DropSelector = '[data-drop]';\nconst getSelector = (t: HTMLElement): HTMLElement | null => t.closest(DropSelector);\n\nconst addDragEffect = (target: HTMLElement) => {\n const t = getSelector(target);\n const elms = Array.isArray(t) ? t : [t];\n elms.forEach(elm => {\n elm.style.opacity = '0.5';\n });\n};\n\nconst removeDragEffect = (target: HTMLElement) => {\n const t = getSelector(target);\n const elms = Array.isArray(t) ? t : [t];\n elms.forEach(elm => {\n elm.style.opacity = '1';\n });\n};\n\nconst setGhostImage = ({ getView }: BeforeRenderFeatureProps, e: DragEvent) => {\n const dragProxy = document.createElement('div');\n const elem = getSelector(e.currentTarget as HTMLElement)!;\n dragProxy.style.height = `${Math.min(\n elem.offsetHeight,\n getView().getScrollNode()!.offsetHeight\n )}px`;\n dragProxy.style.width = `${Math.min(\n elem.offsetWidth,\n getView().virtualizeElements.rootVirtualiser.getParentContainer().clientWidth\n )}px`;\n dragProxy.style.position = 'absolute';\n dragProxy.style.top = '-1000000px';\n dragProxy.style.left = '-10000000px';\n dragProxy.style.background = 'rgba(0, 0, 0, 0.21)';\n dragProxy.style.zIndex = '-1';\n getView().getDomContainer()!.appendChild(dragProxy);\n if (e.dataTransfer) {\n e.dataTransfer.setDragImage(dragProxy, 0, 0);\n }\n\n setTimeout(() => {\n dragProxy.parentNode!.removeChild(dragProxy);\n }, 1000);\n};\n\nconst isColliding = (x: DOMRect['x'], y: DOMRect['y'], coord: DOMRect) => {\n const smallBuffer = 2;\n return !(\n x < coord.left - smallBuffer ||\n x > coord.right + smallBuffer ||\n y > coord.bottom + smallBuffer ||\n y < coord.top - smallBuffer\n );\n};\n\nconst addDropEffect = (target: HTMLElement) => {\n const t = getSelector(target);\n const elms = Array.isArray(t) ? t : [t];\n elms.forEach(elm => {\n // Need to handle this in better way.TODO: need clean up as well.\n elm.style.transition = 'transform 0.25s';\n elm.style.transform = 'translate(20px)';\n });\n};\n\nconst removeDropEffect = (target: HTMLElement) => {\n const t = getSelector(target);\n const elms = Array.isArray(t) ? t : [t];\n elms.forEach(elm => {\n elm.style.transition = null;\n elm.style.transform = null;\n });\n};\n\nconst contextDragOverCb = ({ getRsStore, getView }: BeforeRenderFeatureProps, e: DragEvent) => {\n e.stopPropagation();\n e.preventDefault();\n const rsStore = getRsStore();\n const domContainerCoord = getView().getDomContainer()!.getBoundingClientRect();\n if (\n rsStore.rowDragDropRef.dragLeaveSkipped &&\n rsStore.rowDragDropRef.dropTarget &&\n rsStore.rowDragDropRef.dropTarget[rsStore.rowDragDropRef.dropTarget.length - 1] &&\n (!isColliding(e.clientX, e.clientY, rsStore.rowDragDropRef.dropTargetCoord!) ||\n // Force trigger drag leave on the drop target when the dragged row moves outside the RS DOM container.\n e.clientX > domContainerCoord.right ||\n e.clientX < domContainerCoord.left)\n ) {\n rsStore.rowDragDropRef.forcedDragLeave = true;\n rsStore.rowDragDropRef.dragLeaveSkipped = false;\n const elm = rsStore.rowDragDropRef.dropTarget.shift()!;\n rsStore.rowDragDropRef.dropTarget = [...rsStore.rowDragDropRef.dropTarget];\n elm.dispatchEvent(\n new MouseEvent('dragleave', {\n bubbles: true,\n cancelable: true,\n view: window\n })\n );\n }\n};\n\nconst contextDropCb = ({ getRsStore, getView }: BeforeRenderFeatureProps, ev: DragEvent) => {\n ev.stopPropagation();\n ev.preventDefault();\n const rsStore = getRsStore();\n const elm = rsStore.rowDragDropRef.dropTarget[rsStore.rowDragDropRef.dropTarget.length - 1];\n if (\n rsStore.rowDragDropRef.dropTargetCoord &&\n elm !== rsStore.rowDragDropRef.dragTarget &&\n isColliding(ev.clientX, ev.clientY, rsStore.rowDragDropRef.dropTargetCoord)\n ) {\n removeDropEffect(elm);\n elm.classList.remove('dragEnter');\n const destinationKey = elm.closest('.row')!.getAttribute('data-key')!;\n const sourceKey = rsStore.rowDragDropRef.dragTarget?.closest('.row')!.getAttribute('data-key')!;\n rsStore.rowDragDropRef.dragTarget = undefined;\n rsStore.rowDragDropRef.dropTargetCoord = null;\n rsStore.rowDragDropRef.isDragTargetTypeRow = false;\n rsStore.rowDragDropRef.dropTarget = [];\n getView().type.handleRowReorder(sourceKey, destinationKey);\n }\n};\n\nconst dragStartCb = (featureProps: BeforeRenderFeatureProps, ev: DragEvent) => {\n const dragOverCallBack = contextDragOverCb.bind(null, featureProps);\n document.addEventListener('dragover', dragOverCallBack);\n const dropCallBack = contextDropCb.bind(null, featureProps);\n featureProps.getView().getDomContainer()!.addEventListener('drop', dropCallBack);\n\n // We have to keep event handler in reference so that we can remove right handler when drag ends.\n // Handler might change in between because of deps.\n featureProps.getRsStore().rowDragDropRef.contextDropCb = dropCallBack;\n featureProps.getRsStore().rowDragDropRef.contextDragOverCb = dragOverCallBack;\n\n setGhostImage(featureProps, ev);\n if (ev.dataTransfer) {\n ev.dataTransfer.effectAllowed = 'move';\n // Setting up some dummy data(dragged row item key) to make drag drop work in firefox. Refer https://medium.com/%40reiberdatschi/common-pitfalls-with-html5-drag-n-drop-api-9f011a09ee6c\n ev.dataTransfer.setData('text/plain', 'RS_Dragged_Row_Item');\n }\n\n // fail safe reset drag target.\n if (featureProps.getRsStore().rowDragDropRef.dragTarget)\n featureProps.getRsStore().rowDragDropRef.dragTarget = undefined;\n featureProps.getRsStore().rowDragDropRef.isDragTargetTypeRow =\n (ev.currentTarget as HTMLElement).getAttribute('data-drag-type') === 'row';\n featureProps.getRsStore().rowDragDropRef.dragTarget = getSelector(\n ev.currentTarget as HTMLElement\n )!;\n (ev.currentTarget as HTMLElement).classList.add('dragStart');\n addDragEffect(ev.currentTarget as HTMLElement);\n};\n\nconst dragEndCb = ({ getRsStore, getView }: BeforeRenderFeatureProps, ev: DragEvent) => {\n const rsStore = getRsStore();\n document.removeEventListener('dragover', rsStore.rowDragDropRef.contextDragOverCb!);\n getView().getDomContainer()!.removeEventListener('drop', rsStore.rowDragDropRef.contextDropCb!);\n rsStore.rowDragDropRef.dropTarget = [];\n rsStore.rowDragDropRef.dropTargetCoord = null;\n rsStore.rowDragDropRef.forcedDragLeave = false;\n rsStore.rowDragDropRef.dragLeaveSkipped = false;\n rsStore.rowDragDropRef.isDragTargetTypeRow = false;\n (ev.currentTarget as HTMLElement).classList.remove('dragStart');\n removeDragEffect(ev.currentTarget as HTMLElement);\n};\n\nconst isValidDragEnter = (rsStore: RsStore, e: DragEvent) => {\n let isValid = true;\n if (!rsStore.rowDragDropRef.isDragTargetTypeRow) return false;\n if (rsStore.rowDragDropRef.dragTarget === e.currentTarget) isValid = false;\n else if (\n rsStore.rowDragDropRef.dropTarget[rsStore.rowDragDropRef.dropTarget.length - 1] ===\n e.currentTarget\n )\n isValid = false;\n else if (\n rsStore.rowDragDropRef.dropTarget[rsStore.rowDragDropRef.dropTarget.length - 1] &&\n rsStore.rowDragDropRef.dropTarget[rsStore.rowDragDropRef.dropTarget.length - 1] !==\n e.currentTarget\n ) {\n const currentTargetCoord = (e.currentTarget as HTMLElement).getBoundingClientRect();\n const dropTargetCoord =\n rsStore.rowDragDropRef.dropTarget[\n rsStore.rowDragDropRef.dropTarget.length - 1\n ].getBoundingClientRect();\n if (\n !isColliding(e.clientX, e.clientY, currentTargetCoord) &&\n isColliding(e.clientX, e.clientY, dropTargetCoord)\n )\n isValid = false;\n }\n return isValid;\n};\n\nconst dragEnterCb = ({ getRsStore }: BeforeRenderFeatureProps, ev: DragEvent) => {\n ev.stopPropagation();\n const rsStore = getRsStore();\n if (isValidDragEnter(rsStore, ev)) {\n rsStore.rowDragDropRef.dropTarget = rsStore.rowDragDropRef.dropTarget.length\n ? [...rsStore.rowDragDropRef.dropTarget]\n : [];\n rsStore.rowDragDropRef.dropTarget.push(ev.currentTarget as HTMLElement);\n (ev.currentTarget as HTMLElement).classList.add('dragEnter');\n if (ev.dataTransfer) {\n ev.dataTransfer.dropEffect = 'move';\n }\n rsStore.rowDragDropRef.dropTargetCoord = (\n ev.currentTarget as HTMLElement\n ).getBoundingClientRect();\n addDropEffect(ev.currentTarget as HTMLElement);\n\n if (rsStore.rowDragDropRef.dropTarget.length > 1) {\n const elm = rsStore.rowDragDropRef.dropTarget.shift()!;\n rsStore.rowDragDropRef.dropTarget = [...rsStore.rowDragDropRef.dropTarget];\n rsStore.rowDragDropRef.forcedDragLeave = true;\n elm.dispatchEvent(\n new MouseEvent('dragleave', {\n bubbles: true,\n cancelable: true,\n view: window\n })\n );\n }\n }\n};\n\nconst dragLeaveCb = ({ getRsStore }: BeforeRenderFeatureProps, ev: DragEvent) => {\n ev.stopPropagation();\n const rsStore = getRsStore();\n if (rsStore.rowDragDropRef.forcedDragLeave) {\n rsStore.rowDragDropRef.forcedDragLeave = false;\n (ev.currentTarget as HTMLElement).classList.remove('dragEnter');\n removeDropEffect(ev.currentTarget as HTMLElement);\n } else if (\n !(ev.currentTarget as HTMLElement).contains(ev.relatedTarget as HTMLElement) &&\n rsStore.rowDragDropRef.dragTarget !== ev.currentTarget\n ) {\n rsStore.rowDragDropRef.dragLeaveSkipped = true;\n }\n};\n\nconst dragProps = (featureProps: BeforeRenderFeatureProps) => ({\n 'data-drag-type': 'row',\n draggable: true,\n onDragStart: dragStartCb.bind(null, featureProps),\n onDragEnd: dragEndCb.bind(null, featureProps)\n});\n\nconst dropProps = (featureProps: BeforeRenderFeatureProps) => ({\n onDragEnter: dragEnterCb.bind(null, featureProps),\n onDragLeave: dragLeaveCb.bind(null, featureProps),\n 'data-drop': 'dropzone'\n});\n\nfunction addDragDropBehavior([featureProps]: [featureProps: BeforeRenderFeatureProps]) {\n if (!featureProps.getView().meta.reorderItems) {\n return;\n }\n featureProps.getView().rows!.forEach(r => {\n if (!(r.dragProps && r.dropProps)) {\n r.setProp({\n dragProps: dragProps(featureProps),\n dropProps: dropProps(featureProps)\n });\n }\n });\n}\n\n/**\n * Manages drag drop behavior of rows whenever the {@link View.rows rows} are changed in the view on publish of `AFTER_FETCH` event.\n *\n */\nexport default (rsInternal: RsInternal) => {\n rsInternal.getRsStore().rowDragDropRef = {\n dropTarget: [],\n dragTarget: undefined,\n dropZones: []\n };\n const memoizedAddDragDropBehavior = withMemoization(addDragDropBehavior);\n\n // TODO: Move subscription outside execute function\n return function execute(featureProps: BeforeRenderFeatureProps) {\n rsInternal\n .getPubSubUtils()\n .subscribe(AFTER_FETCH, () =>\n memoizedAddDragDropBehavior([featureProps], [featureProps.getView().rows])\n );\n };\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"stateHydration.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/stateHydration.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAI9D,OAAO,KAAK,MAAM,MAAM,qCAAqC,CAAC;AAG9D;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,KAAK,CAiEzE;AA0FD;;;;;;GAMG;+BAKuB,cAAc,wBAAwB;AAJhE,wBAQE"}
1
+ {"version":3,"file":"stateHydration.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/stateHydration.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAI9D,OAAO,KAAK,MAAM,MAAM,qCAAqC,CAAC;AAG9D;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,KAAK,CAkEzE;AA0FD;;;;;;GAMG;+BAKuB,cAAc,wBAAwB;AAJhE,wBAQE"}
@@ -43,7 +43,8 @@ export function convertMetaIntoState(meta, columns) {
43
43
  columnId: col.id,
44
44
  order,
45
45
  level,
46
- dateFunction: col.groupedDateFunction
46
+ dateFunction: col.groupedDateFunction,
47
+ additionalFields: col.groupedAdditionalFields
47
48
  });
48
49
  }
49
50
  if (col.conditionalStyleFormats) {
@@ -1 +1 @@
1
- {"version":3,"file":"stateHydration.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/stateHydration.ts"],"names":[],"mappings":"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","sourcesContent":["import { actionHydrateState } from '../../../actions/actions';\nimport { withMemoization, pickProperties, isEmpty } from '../../../utils/util';\nimport { personalizationProps } from '../../../reducers/personalizationReducer';\nimport { TEMPLATES } from '../../../constants';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\nimport type { Meta } from '../../../../../types/Meta.types';\nimport type { State } from '../../../../../types/State.types';\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport type RsProps from '../../../RsProps';\nimport type { ApiContext } from '../../../../../types/ApiContext.types';\nimport type Column from '../../../generators/ColumnGenerator';\n/* eslint-enable @typescript-eslint/no-unused-vars */\n\n/**\n * @param {import('../../../../../types/Meta.types').Meta} meta\n * @returns {import('../../../../../types/State.types').State}\n */\nexport function convertMetaIntoState(meta: Meta, columns: Column[]): State {\n const sortingOrder: State['sortingOrder'] = [];\n const hiddenColumns: State['hiddenColumns'] = [];\n const groups: State['groups'] = [];\n const aggregationInfo: State['aggregationInfo'] = [];\n let conditionalStyleFormats: State['conditionalStyleFormats'] = [];\n const { filterExpression, showHeaderIcons, defaultRowHeight } = meta;\n\n // default RowHeight as short\n // update selectedHeightOption if defaultRowHeight is set in meta\n const selectedHeightOption = meta.template === TEMPLATES.TABLE ? defaultRowHeight : undefined;\n\n columns.forEach(({ field: col }) => {\n // hydrating sorting\n if (col.sort && col.sortPriority && col.sortDirection)\n sortingOrder.push({\n columnId: col.id,\n order: col.sortDirection,\n sequence: col.sortPriority\n });\n\n // hydrating column visibility\n if (!col.show) hiddenColumns.push(`${col.id}`);\n\n // hydrating aggregated Fields\n if (col.aggregated && (col.type === 'number' || col.type === 'currency'))\n aggregationInfo.push({\n columnId: col.id,\n type: meta.aggregateOptions?.[col.type]?.[0]!\n });\n\n // hydrating grouping\n // consider sort direction of column for group order if its provided otherwise default to ascending.\n if (meta.grouping && col.grouping && col.grouped) {\n const level = 'groupOrder' in col ? col.groupOrder! : groups.length;\n const order = col.sort && col.sortDirection ? col.sortDirection : 'asc';\n groups.splice(level, 0, {\n columnId: col.id,\n order,\n level,\n dateFunction: col.groupedDateFunction\n });\n }\n\n if (col.conditionalStyleFormats) {\n conditionalStyleFormats = col.conditionalStyleFormats.map(conditionalStyleFormat => ({\n ...conditionalStyleFormat,\n fieldName: col.name\n }));\n }\n });\n\n // BUG-752261 Maintaining sort sequence in state\n sortingOrder.sort((col1, col2) => col1.sequence - col2.sequence);\n\n return {\n sortingOrder,\n hiddenColumns,\n groups,\n aggregationInfo,\n filterExpression,\n showHeaderIcons,\n selectedHeightOption,\n conditionalStyleFormats\n };\n}\n\nconst hydrateComponentState = async ([{ getRsProps, getRsStore, dispatch, getState }]: [\n featureProps: BeforeRenderFeatureProps\n]) => {\n let componentState;\n const rsProps = getRsProps();\n const rsStore = getRsStore();\n rsStore.componentState = null;\n if (rsProps?.apiContext?.getComponentState) {\n componentState = await rsProps?.apiContext?.getComponentState();\n }\n const { personalization } = getState();\n // if client set component state somewhere for persisting changes\n if (componentState && Object.keys(componentState).length) {\n rsStore.componentState = componentState;\n const activeComponentPersonalization = componentState.activePersonalization;\n const activeComponentState = pickProperties(componentState, personalizationProps);\n const payload = {\n personalization: {\n ...personalization,\n active: activeComponentPersonalization\n },\n ...activeComponentState\n };\n // @ts-expect-error Check this.\n dispatch(actionHydrateState(payload));\n }\n};\n\n// Todo: onLoad sorting, filterBy, GroupBy, Freeze, HiddenColumn,\n// the structure in meta and hydration of state from it\nconst hydrate = ([{ getRsStore, getRsProps, getView, dispatch, getState }]: [\n featureProps: BeforeRenderFeatureProps\n]) => {\n const state = getState();\n const rsStore = getRsStore();\n const rsProps = getRsProps();\n const payload: State = {};\n\n if (rsProps.persistedInfo && rsStore.presets[0].id === state.personalization?.active) {\n if (!getView().meta.grouping) rsProps.persistedInfo.groups = [];\n return dispatch(actionHydrateState(rsProps.persistedInfo));\n }\n\n if (rsStore.componentState) {\n rsStore.componentState = null;\n return null;\n }\n\n if (\n !rsProps.persistedInfo &&\n !rsStore.componentState &&\n state.personalization?.allPersonalizations?.[state.personalization?.active]?.isPreset\n ) {\n // If preset has its own personalization state then pick it else derive from meta\n const presetPersonalizationState =\n state.personalization.allPersonalizations[state.personalization.active]\n .personalizationState || {};\n if (!isEmpty(presetPersonalizationState)) {\n return dispatch(actionHydrateState(presetPersonalizationState));\n }\n\n const {\n sortingOrder,\n hiddenColumns,\n groups,\n aggregationInfo,\n filterExpression,\n showHeaderIcons,\n selectedHeightOption,\n conditionalStyleFormats\n } = convertMetaIntoState(getView().meta, getView().columns!);\n\n if (showHeaderIcons !== undefined) payload.showHeaderIcons = showHeaderIcons;\n if (filterExpression) payload.filterExpression = filterExpression;\n if (sortingOrder) payload.sortingOrder = sortingOrder;\n if (hiddenColumns) payload.hiddenColumns = hiddenColumns;\n if (aggregationInfo) payload.aggregationInfo = aggregationInfo;\n if (groups && getView().meta.grouping) payload.groups = groups;\n if (selectedHeightOption) payload.selectedHeightOption = selectedHeightOption;\n if (conditionalStyleFormats) payload.conditionalStyleFormats = conditionalStyleFormats;\n\n payload.template = getView().meta.template;\n payload.presetId = getView().meta.id;\n }\n dispatch(actionHydrateState(payload));\n return null;\n};\n\n/**\n * Hydrates the repeating structure state on bootstrap, following this priority order:\n * 1. {@link RsProps.persistedInfo}\n * 2. Component state from {@link ApiContext.getComponentState}\n * 3. Personalized state from the preset\n * 4. {@link Meta}\n */\nexport default () => {\n const memoizedHydrateComponentState = withMemoization(hydrateComponentState);\n const memoizedHydrate = withMemoization(hydrate);\n\n return function execute(featureProps: BeforeRenderFeatureProps) {\n memoizedHydrateComponentState([featureProps], []);\n memoizedHydrate([featureProps], [featureProps.getView().meta]);\n };\n};\n"]}
1
+ {"version":3,"file":"stateHydration.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/stateHydration.ts"],"names":[],"mappings":"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","sourcesContent":["import { actionHydrateState } from '../../../actions/actions';\nimport { withMemoization, pickProperties, isEmpty } from '../../../utils/util';\nimport { personalizationProps } from '../../../reducers/personalizationReducer';\nimport { TEMPLATES } from '../../../constants';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\nimport type { Meta } from '../../../../../types/Meta.types';\nimport type { State } from '../../../../../types/State.types';\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport type RsProps from '../../../RsProps';\nimport type { ApiContext } from '../../../../../types/ApiContext.types';\nimport type Column from '../../../generators/ColumnGenerator';\n/* eslint-enable @typescript-eslint/no-unused-vars */\n\n/**\n * @param {import('../../../../../types/Meta.types').Meta} meta\n * @returns {import('../../../../../types/State.types').State}\n */\nexport function convertMetaIntoState(meta: Meta, columns: Column[]): State {\n const sortingOrder: State['sortingOrder'] = [];\n const hiddenColumns: State['hiddenColumns'] = [];\n const groups: State['groups'] = [];\n const aggregationInfo: State['aggregationInfo'] = [];\n let conditionalStyleFormats: State['conditionalStyleFormats'] = [];\n const { filterExpression, showHeaderIcons, defaultRowHeight } = meta;\n\n // default RowHeight as short\n // update selectedHeightOption if defaultRowHeight is set in meta\n const selectedHeightOption = meta.template === TEMPLATES.TABLE ? defaultRowHeight : undefined;\n\n columns.forEach(({ field: col }) => {\n // hydrating sorting\n if (col.sort && col.sortPriority && col.sortDirection)\n sortingOrder.push({\n columnId: col.id,\n order: col.sortDirection,\n sequence: col.sortPriority\n });\n\n // hydrating column visibility\n if (!col.show) hiddenColumns.push(`${col.id}`);\n\n // hydrating aggregated Fields\n if (col.aggregated && (col.type === 'number' || col.type === 'currency'))\n aggregationInfo.push({\n columnId: col.id,\n type: meta.aggregateOptions?.[col.type]?.[0]!\n });\n\n // hydrating grouping\n // consider sort direction of column for group order if its provided otherwise default to ascending.\n if (meta.grouping && col.grouping && col.grouped) {\n const level = 'groupOrder' in col ? col.groupOrder! : groups.length;\n const order = col.sort && col.sortDirection ? col.sortDirection : 'asc';\n groups.splice(level, 0, {\n columnId: col.id,\n order,\n level,\n dateFunction: col.groupedDateFunction,\n additionalFields: col.groupedAdditionalFields\n });\n }\n\n if (col.conditionalStyleFormats) {\n conditionalStyleFormats = col.conditionalStyleFormats.map(conditionalStyleFormat => ({\n ...conditionalStyleFormat,\n fieldName: col.name\n }));\n }\n });\n\n // BUG-752261 Maintaining sort sequence in state\n sortingOrder.sort((col1, col2) => col1.sequence - col2.sequence);\n\n return {\n sortingOrder,\n hiddenColumns,\n groups,\n aggregationInfo,\n filterExpression,\n showHeaderIcons,\n selectedHeightOption,\n conditionalStyleFormats\n };\n}\n\nconst hydrateComponentState = async ([{ getRsProps, getRsStore, dispatch, getState }]: [\n featureProps: BeforeRenderFeatureProps\n]) => {\n let componentState;\n const rsProps = getRsProps();\n const rsStore = getRsStore();\n rsStore.componentState = null;\n if (rsProps?.apiContext?.getComponentState) {\n componentState = await rsProps?.apiContext?.getComponentState();\n }\n const { personalization } = getState();\n // if client set component state somewhere for persisting changes\n if (componentState && Object.keys(componentState).length) {\n rsStore.componentState = componentState;\n const activeComponentPersonalization = componentState.activePersonalization;\n const activeComponentState = pickProperties(componentState, personalizationProps);\n const payload = {\n personalization: {\n ...personalization,\n active: activeComponentPersonalization\n },\n ...activeComponentState\n };\n // @ts-expect-error Check this.\n dispatch(actionHydrateState(payload));\n }\n};\n\n// Todo: onLoad sorting, filterBy, GroupBy, Freeze, HiddenColumn,\n// the structure in meta and hydration of state from it\nconst hydrate = ([{ getRsStore, getRsProps, getView, dispatch, getState }]: [\n featureProps: BeforeRenderFeatureProps\n]) => {\n const state = getState();\n const rsStore = getRsStore();\n const rsProps = getRsProps();\n const payload: State = {};\n\n if (rsProps.persistedInfo && rsStore.presets[0].id === state.personalization?.active) {\n if (!getView().meta.grouping) rsProps.persistedInfo.groups = [];\n return dispatch(actionHydrateState(rsProps.persistedInfo));\n }\n\n if (rsStore.componentState) {\n rsStore.componentState = null;\n return null;\n }\n\n if (\n !rsProps.persistedInfo &&\n !rsStore.componentState &&\n state.personalization?.allPersonalizations?.[state.personalization?.active]?.isPreset\n ) {\n // If preset has its own personalization state then pick it else derive from meta\n const presetPersonalizationState =\n state.personalization.allPersonalizations[state.personalization.active]\n .personalizationState || {};\n if (!isEmpty(presetPersonalizationState)) {\n return dispatch(actionHydrateState(presetPersonalizationState));\n }\n\n const {\n sortingOrder,\n hiddenColumns,\n groups,\n aggregationInfo,\n filterExpression,\n showHeaderIcons,\n selectedHeightOption,\n conditionalStyleFormats\n } = convertMetaIntoState(getView().meta, getView().columns!);\n\n if (showHeaderIcons !== undefined) payload.showHeaderIcons = showHeaderIcons;\n if (filterExpression) payload.filterExpression = filterExpression;\n if (sortingOrder) payload.sortingOrder = sortingOrder;\n if (hiddenColumns) payload.hiddenColumns = hiddenColumns;\n if (aggregationInfo) payload.aggregationInfo = aggregationInfo;\n if (groups && getView().meta.grouping) payload.groups = groups;\n if (selectedHeightOption) payload.selectedHeightOption = selectedHeightOption;\n if (conditionalStyleFormats) payload.conditionalStyleFormats = conditionalStyleFormats;\n\n payload.template = getView().meta.template;\n payload.presetId = getView().meta.id;\n }\n dispatch(actionHydrateState(payload));\n return null;\n};\n\n/**\n * Hydrates the repeating structure state on bootstrap, following this priority order:\n * 1. {@link RsProps.persistedInfo}\n * 2. Component state from {@link ApiContext.getComponentState}\n * 3. Personalized state from the preset\n * 4. {@link Meta}\n */\nexport default () => {\n const memoizedHydrateComponentState = withMemoization(hydrateComponentState);\n const memoizedHydrate = withMemoization(hydrate);\n\n return function execute(featureProps: BeforeRenderFeatureProps) {\n memoizedHydrateComponentState([featureProps], []);\n memoizedHydrate([featureProps], [featureProps.getView().meta]);\n };\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/features/uIFeatures/index.ts"],"names":[],"mappings":"AAuCA,OAAO,WAAW,MAAM,4BAA4B,CAAC;;;4EALb,kEACpB;6BAnBf,kEAAsC;6BAyE4+D,kEAAsC;uBAbzjE,kEAEK;;0BAxD2C,kEAChB;;uBAQoB,kEACpC;6BAyDgV,kEAAsC;;4BA/DhY,kEACF;8BA8Du9L,kEAAsC;kCA7B3/L,kEACQ;6BA1C8B,kEAC1C;2BASyC,kEAChB;2EA2D28C,kEAAsC;yCAzDvgD,kEAAsC;+BAyDw5G,kEAAsC;4BArDx9G,kEACR;kCAoD00L,kEAAsC;;;gCAlEv2L,kEAChB;kCALmD,kEAC1C;4BAoDT,kEAEM;qBAe8zC,kEAAsC;kCApEz1C,kEAAsC;sCAQpB,kEAChB;0EA2D0oO,kEAAsC;wEAAh1H,kEAAsC;wCA3C15G,kEAEQ;4BA+BJ,kEAEI;6BAtEiD,kEAC5B;sEAwBF,kEACR;2BAoDe,kEAAsC;4BAjE/B,kEACtB;;uCAgEo0B,kEAAsC;;;0BAA6qC,sDAA0B;iCAAywD,sDAA0B;yCA5D52H,sDAA0B;;;AAa1B,wBA8CE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/features/uIFeatures/index.ts"],"names":[],"mappings":"AAuCA,OAAO,WAAW,MAAM,4BAA4B,CAAC;;;4EALb,kEACpB;6BAnBf,kEAAsC;6BAyE4+D,kEAAsC;uBAbzjE,kEAEK;;0BAxD2C,kEAChB;;uBAQoB,kEACpC;6BAyDgV,kEAAsC;;4BA/DhY,kEACF;8BA8D67L,kEAAsC;kCA7Bj+L,kEACQ;6BA1C8B,kEAC1C;2BASyC,kEAChB;2EA2D28C,kEAAsC;yCAzDvgD,kEAAsC;+BAyD+8G,kEAAsC;4BArD/gH,kEACR;kCAoD00L,kEAAsC;;;gCAlEv2L,kEAChB;kCALmD,kEAC1C;4BAoDT,kEAEM;qBAe8zC,kEAAsC;kCApEz1C,kEAAsC;sCAQpB,kEAChB;0EA2Du+O,kEAAsC;wEAA7qI,kEAAsC;wCA3C15G,kEAEQ;4BA+BJ,kEAEI;6BAtEiD,kEAC5B;sEAwBF,kEACR;2BAoDe,kEAAsC;4BAjE/B,kEACtB;;uCAgEo0B,kEAAsC;;;0BAA6qC,sDAA0B;iCAAywD,sDAA0B;yCA5D52H,sDAA0B;;;AAa1B,wBA8CE"}
@@ -41,7 +41,7 @@ export interface SortProperties {
41
41
  }
42
42
  export interface ColumnContext {
43
43
  /** @default 'column' */
44
- name: 'column';
44
+ name: 'column' | 'GroupAdditionalField';
45
45
  /** Returns {@link Column.field fieldDef} for this column. */
46
46
  getField: () => FieldDef;
47
47
  /** Returns the value of cell for this column based on {@link Column.executionContext} or overriddenExecutionContext. */