@linzjs/step-ag-grid 23.0.1 → 24.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/components/ComponentLoadingWrapper.d.ts +1 -1
- package/dist/src/components/Grid.d.ts +17 -17
- package/dist/src/components/GridCell.d.ts +9 -9
- package/dist/src/components/GridCellFiller.d.ts +2 -2
- package/dist/src/components/GridCellMultiEditor.d.ts +6 -6
- package/dist/src/components/GridCellMultiSelectClassRules.d.ts +1 -1
- package/dist/src/components/GridIcon.d.ts +2 -2
- package/dist/src/components/GridNoRowsOverlay.d.ts +1 -1
- package/dist/src/components/GridPopoverHook.d.ts +2 -2
- package/dist/src/components/GridWrapper.d.ts +1 -1
- package/dist/src/components/PostSortRowsHook.d.ts +1 -1
- package/dist/src/components/clickInputWhenContainingCellClicked.d.ts +1 -1
- package/dist/src/components/gridFilter/GridFilterButtons.d.ts +5 -5
- package/dist/src/components/gridFilter/GridFilterColumnsToggle.d.ts +1 -1
- package/dist/src/components/gridFilter/GridFilterDownloadCsvButton.d.ts +1 -1
- package/dist/src/components/gridFilter/GridFilterHeaderIconButton.d.ts +2 -2
- package/dist/src/components/gridFilter/GridFilters.d.ts +1 -1
- package/dist/src/components/gridFilter/index.d.ts +7 -7
- package/dist/src/components/gridFilter/useGridFilter.d.ts +2 -2
- package/dist/src/components/gridForm/GridFormDropDown.d.ts +8 -8
- package/dist/src/components/gridForm/GridFormEditBearing.d.ts +2 -2
- package/dist/src/components/gridForm/GridFormMessage.d.ts +3 -3
- package/dist/src/components/gridForm/GridFormMultiSelect.d.ts +4 -4
- package/dist/src/components/gridForm/GridFormMultiSelectGrid.d.ts +4 -4
- package/dist/src/components/gridForm/GridFormPopoverMenu.d.ts +5 -5
- package/dist/src/components/gridForm/GridFormSubComponentTextArea.d.ts +4 -4
- package/dist/src/components/gridForm/GridFormSubComponentTextInput.d.ts +4 -4
- package/dist/src/components/gridForm/GridFormTextArea.d.ts +4 -4
- package/dist/src/components/gridForm/GridFormTextInput.d.ts +3 -3
- package/dist/src/components/gridForm/index.d.ts +10 -10
- package/dist/src/components/gridHeader/GridHeaderSelect.d.ts +1 -1
- package/dist/src/components/gridHeader/index.d.ts +1 -1
- package/dist/src/components/gridHook/index.d.ts +1 -1
- package/dist/src/components/gridHook/useGridContextMenu.d.ts +4 -4
- package/dist/src/components/gridPopoverEdit/GridButton.d.ts +5 -5
- package/dist/src/components/gridPopoverEdit/GridEditBoolean.d.ts +4 -4
- package/dist/src/components/gridPopoverEdit/GridPopoutEditMultiSelect.d.ts +4 -4
- package/dist/src/components/gridPopoverEdit/GridPopoutEditMultiSelectGrid.d.ts +4 -4
- package/dist/src/components/gridPopoverEdit/GridPopoverEditBearing.d.ts +4 -4
- package/dist/src/components/gridPopoverEdit/GridPopoverEditDropDown.d.ts +4 -4
- package/dist/src/components/gridPopoverEdit/GridPopoverMenu.d.ts +4 -4
- package/dist/src/components/gridPopoverEdit/GridPopoverMessage.d.ts +4 -4
- package/dist/src/components/gridPopoverEdit/GridPopoverTextArea.d.ts +4 -4
- package/dist/src/components/gridPopoverEdit/GridPopoverTextInput.d.ts +4 -4
- package/dist/src/components/gridPopoverEdit/index.d.ts +11 -11
- package/dist/src/components/gridRender/GridRenderGenericCell.d.ts +5 -5
- package/dist/src/components/gridRender/GridRenderPopoutMenuCell.d.ts +1 -1
- package/dist/src/components/gridRender/index.d.ts +2 -2
- package/dist/src/components/gridUtil.d.ts +1 -1
- package/dist/src/components/index.d.ts +19 -19
- package/dist/src/contexts/GridContext.d.ts +4 -4
- package/dist/src/contexts/GridContextProvider.d.ts +3 -3
- package/dist/src/contexts/GridPopoverContext.d.ts +3 -3
- package/dist/src/contexts/GridPopoverContextProvider.d.ts +4 -4
- package/dist/src/contexts/GridUpdatingContextProvider.d.ts +1 -1
- package/dist/src/index.d.ts +17 -17
- package/dist/src/lui/ActionButton.d.ts +9 -9
- package/dist/src/lui/FormError.d.ts +2 -2
- package/dist/src/lui/TextAreaInput.d.ts +1 -1
- package/dist/src/lui/TextInputFormatted.d.ts +2 -2
- package/dist/src/lui/reactUtils.d.ts +1 -1
- package/dist/src/lui/stateDeferredHook.d.ts +1 -1
- package/dist/src/react-menu3/components/ControlledMenu.d.ts +2 -2
- package/dist/src/react-menu3/components/FocusableItem.d.ts +3 -3
- package/dist/src/react-menu3/components/Menu.d.ts +3 -3
- package/dist/src/react-menu3/components/MenuButton.d.ts +2 -2
- package/dist/src/react-menu3/components/MenuDivider.d.ts +1 -1
- package/dist/src/react-menu3/components/MenuGroup.d.ts +2 -2
- package/dist/src/react-menu3/components/MenuHeader.d.ts +2 -2
- package/dist/src/react-menu3/components/MenuItem.d.ts +3 -3
- package/dist/src/react-menu3/components/MenuList.d.ts +1 -1
- package/dist/src/react-menu3/components/MenuRadioGroup.d.ts +2 -2
- package/dist/src/react-menu3/components/SubMenu.d.ts +5 -5
- package/dist/src/react-menu3/contexts/EventHandlersContext.d.ts +1 -1
- package/dist/src/react-menu3/contexts/MenuListContext.d.ts +2 -2
- package/dist/src/react-menu3/contexts/MenuListItemContext.d.ts +1 -1
- package/dist/src/react-menu3/contexts/RadioGroupContext.d.ts +1 -1
- package/dist/src/react-menu3/contexts/SettingsContext.d.ts +2 -2
- package/dist/src/react-menu3/hooks/index.d.ts +9 -9
- package/dist/src/react-menu3/hooks/useBEM.d.ts +1 -1
- package/dist/src/react-menu3/hooks/useCombinedRef.d.ts +1 -1
- package/dist/src/react-menu3/hooks/useIsomorphicLayoutEffect.d.ts +1 -1
- package/dist/src/react-menu3/hooks/useItemEffect.d.ts +1 -1
- package/dist/src/react-menu3/hooks/useItemState.d.ts +1 -1
- package/dist/src/react-menu3/hooks/useItems.d.ts +2 -2
- package/dist/src/react-menu3/hooks/useMenuChange.d.ts +1 -1
- package/dist/src/react-menu3/hooks/useMenuState.d.ts +1 -1
- package/dist/src/react-menu3/hooks/useMenuStateAndFocus.d.ts +1 -1
- package/dist/src/react-menu3/index.d.ts +11 -11
- package/dist/src/react-menu3/positionUtils/getPositionHelpers.d.ts +1 -1
- package/dist/src/react-menu3/positionUtils/index.d.ts +3 -3
- package/dist/src/react-menu3/positionUtils/placeArrowHorizontal.d.ts +1 -1
- package/dist/src/react-menu3/positionUtils/placeArrowVertical.d.ts +1 -1
- package/dist/src/react-menu3/positionUtils/placeLeftorRight.d.ts +4 -4
- package/dist/src/react-menu3/positionUtils/placeToporBottom.d.ts +5 -5
- package/dist/src/react-menu3/positionUtils/positionContextMenu.d.ts +2 -2
- package/dist/src/react-menu3/positionUtils/positionMenu.d.ts +5 -5
- package/dist/src/react-menu3/style-utils/index.d.ts +1 -1
- package/dist/src/react-menu3/types.d.ts +15 -15
- package/dist/src/react-menu3/utils/constants.d.ts +1 -1
- package/dist/src/react-menu3/utils/index.d.ts +3 -3
- package/dist/src/react-menu3/utils/utils.d.ts +5 -5
- package/dist/src/react-menu3/utils/withHovering.d.ts +1 -1
- package/dist/src/utils/testQuick.d.ts +2 -2
- package/dist/src/utils/testUtil.d.ts +2 -2
- package/dist/src/utils/textValidator.d.ts +2 -2
- package/dist/step-ag-grid.cjs.js +966 -952
- package/dist/step-ag-grid.cjs.js.map +1 -1
- package/dist/step-ag-grid.esm.js +968 -954
- package/dist/step-ag-grid.esm.js.map +1 -1
- package/package.json +26 -41
- package/src/components/ComponentLoadingWrapper.tsx +5 -6
- package/src/components/Grid.tsx +85 -83
- package/src/components/GridCell.test.tsx +15 -15
- package/src/components/GridCell.tsx +46 -44
- package/src/components/GridCellFiller.tsx +5 -4
- package/src/components/GridCellMultiEditor.tsx +7 -7
- package/src/components/GridCellMultiSelectClassRules.tsx +3 -3
- package/src/components/GridIcon.tsx +6 -7
- package/src/components/GridLoadableCell.tsx +2 -2
- package/src/components/GridNoRowsOverlay.tsx +8 -8
- package/src/components/GridPopoverHook.tsx +16 -16
- package/src/components/GridWrapper.tsx +2 -2
- package/src/components/PostSortRowsHook.ts +11 -11
- package/src/components/clickInputWhenContainingCellClicked.tsx +5 -5
- package/src/components/gridFilter/GridFilterButtons.tsx +8 -9
- package/src/components/gridFilter/GridFilterColumnsToggle.tsx +25 -26
- package/src/components/gridFilter/GridFilterDownloadCsvButton.tsx +12 -13
- package/src/components/gridFilter/GridFilterHeaderIconButton.tsx +9 -10
- package/src/components/gridFilter/GridFilterQuick.tsx +6 -6
- package/src/components/gridFilter/GridFilters.tsx +1 -1
- package/src/components/gridFilter/index.ts +7 -7
- package/src/components/gridFilter/useGridFilter.ts +3 -3
- package/src/components/gridForm/GridFormDropDown.tsx +56 -52
- package/src/components/gridForm/GridFormEditBearing.tsx +12 -12
- package/src/components/gridForm/GridFormMessage.tsx +10 -10
- package/src/components/gridForm/GridFormMultiSelect.tsx +53 -51
- package/src/components/gridForm/GridFormMultiSelectGrid.tsx +25 -26
- package/src/components/gridForm/GridFormPopoverMenu.tsx +32 -29
- package/src/components/gridForm/GridFormSubComponentTextArea.tsx +10 -10
- package/src/components/gridForm/GridFormSubComponentTextInput.tsx +8 -8
- package/src/components/gridForm/GridFormTextArea.tsx +11 -11
- package/src/components/gridForm/GridFormTextInput.tsx +11 -11
- package/src/components/gridForm/index.ts +10 -10
- package/src/components/gridHeader/GridHeaderSelect.tsx +9 -9
- package/src/components/gridHeader/index.ts +1 -1
- package/src/components/gridHook/index.ts +1 -1
- package/src/components/gridHook/useGridContextMenu.tsx +7 -7
- package/src/components/gridPopoverEdit/GridButton.tsx +13 -12
- package/src/components/gridPopoverEdit/GridEditBoolean.tsx +19 -18
- package/src/components/gridPopoverEdit/GridPopoutEditMultiSelect.ts +7 -6
- package/src/components/gridPopoverEdit/GridPopoutEditMultiSelectGrid.ts +7 -6
- package/src/components/gridPopoverEdit/GridPopoverEditBearing.ts +9 -9
- package/src/components/gridPopoverEdit/GridPopoverEditDropDown.ts +8 -7
- package/src/components/gridPopoverEdit/GridPopoverMenu.tsx +6 -6
- package/src/components/gridPopoverEdit/GridPopoverMessage.ts +4 -4
- package/src/components/gridPopoverEdit/GridPopoverTextArea.ts +4 -4
- package/src/components/gridPopoverEdit/GridPopoverTextInput.ts +4 -4
- package/src/components/gridPopoverEdit/index.ts +11 -11
- package/src/components/gridRender/GridRenderGenericCell.tsx +5 -5
- package/src/components/gridRender/GridRenderPopoutMenuCell.tsx +8 -9
- package/src/components/gridRender/index.ts +2 -2
- package/src/components/gridUtil.ts +3 -3
- package/src/components/index.ts +19 -19
- package/src/contexts/GridContext.tsx +52 -46
- package/src/contexts/GridContextProvider.test.tsx +14 -14
- package/src/contexts/GridContextProvider.tsx +42 -41
- package/src/contexts/GridPopoverContext.tsx +10 -7
- package/src/contexts/GridPopoverContextProvider.tsx +12 -10
- package/src/contexts/GridSubComponentContext.ts +6 -5
- package/src/contexts/GridUpdatingContext.tsx +5 -4
- package/src/contexts/GridUpdatingContextProvider.tsx +3 -3
- package/src/index.ts +17 -21
- package/src/lui/ActionButton.tsx +42 -41
- package/src/lui/FormError.tsx +4 -4
- package/src/lui/TextAreaInput.tsx +9 -9
- package/src/lui/TextInputFormatted.tsx +11 -11
- package/src/lui/reactUtils.test.tsx +8 -8
- package/src/lui/reactUtils.tsx +2 -2
- package/src/lui/stateDeferredHook.tsx +3 -5
- package/src/lui/timeoutHook.test.tsx +5 -5
- package/src/lui/timeoutHook.tsx +1 -1
- package/src/react-app-env.d.ts +1 -1
- package/src/react-menu3/components/ControlledMenu.tsx +48 -48
- package/src/react-menu3/components/FocusableItem.tsx +7 -7
- package/src/react-menu3/components/Menu.tsx +11 -11
- package/src/react-menu3/components/MenuButton.tsx +4 -4
- package/src/react-menu3/components/MenuDivider.tsx +4 -4
- package/src/react-menu3/components/MenuGroup.tsx +5 -5
- package/src/react-menu3/components/MenuHeader.tsx +4 -4
- package/src/react-menu3/components/MenuItem.tsx +14 -14
- package/src/react-menu3/components/MenuList.tsx +55 -55
- package/src/react-menu3/components/MenuRadioGroup.tsx +7 -7
- package/src/react-menu3/components/SubMenu.tsx +24 -24
- package/src/react-menu3/contexts/EventHandlersContext.ts +2 -2
- package/src/react-menu3/contexts/HoverItemContext.ts +1 -1
- package/src/react-menu3/contexts/ItemSettingsContext.ts +1 -1
- package/src/react-menu3/contexts/MenuListContext.ts +2 -2
- package/src/react-menu3/contexts/MenuListItemContext.ts +2 -2
- package/src/react-menu3/contexts/RadioGroupContext.ts +2 -2
- package/src/react-menu3/contexts/SettingsContext.ts +2 -2
- package/src/react-menu3/hooks/index.ts +9 -9
- package/src/react-menu3/hooks/useBEM.ts +4 -4
- package/src/react-menu3/hooks/useCombinedRef.ts +2 -2
- package/src/react-menu3/hooks/useIsomorphicLayoutEffect.ts +4 -4
- package/src/react-menu3/hooks/useItemEffect.ts +3 -3
- package/src/react-menu3/hooks/useItemState.ts +5 -5
- package/src/react-menu3/hooks/useItems.ts +8 -8
- package/src/react-menu3/hooks/useMenuChange.ts +3 -3
- package/src/react-menu3/hooks/useMenuState.ts +5 -5
- package/src/react-menu3/hooks/useMenuStateAndFocus.ts +4 -4
- package/src/react-menu3/index.ts +11 -11
- package/src/react-menu3/positionUtils/getPositionHelpers.ts +2 -2
- package/src/react-menu3/positionUtils/index.ts +3 -3
- package/src/react-menu3/positionUtils/placeArrowHorizontal.ts +1 -1
- package/src/react-menu3/positionUtils/placeArrowVertical.ts +1 -1
- package/src/react-menu3/positionUtils/placeLeftorRight.ts +13 -13
- package/src/react-menu3/positionUtils/placeToporBottom.ts +15 -15
- package/src/react-menu3/positionUtils/positionContextMenu.ts +4 -4
- package/src/react-menu3/positionUtils/positionMenu.ts +14 -14
- package/src/react-menu3/style-utils/index.ts +24 -24
- package/src/react-menu3/types.ts +15 -15
- package/src/react-menu3/utils/constants.ts +33 -33
- package/src/react-menu3/utils/index.ts +3 -4
- package/src/react-menu3/utils/propTypes2.ts +10 -10
- package/src/react-menu3/utils/utils.ts +14 -14
- package/src/react-menu3/utils/withHovering.tsx +3 -3
- package/src/stories/components/ActionButton.stories.tsx +23 -24
- package/src/stories/grid/FormTest.tsx +15 -16
- package/src/stories/grid/GridDragRow.stories.tsx +33 -34
- package/src/stories/grid/GridFilterButtons.stories.tsx +32 -33
- package/src/stories/grid/GridNoRowsOverlay.stories.tsx +9 -10
- package/src/stories/grid/GridNonEditableRow.stories.tsx +40 -41
- package/src/stories/grid/GridPinnedRow.stories.tsx +25 -26
- package/src/stories/grid/GridPopoutContextMenu.stories.tsx +33 -32
- package/src/stories/grid/GridPopoutEditBoolean.stories.tsx +21 -22
- package/src/stories/grid/GridPopoutEditGeneric.stories.tsx +18 -19
- package/src/stories/grid/GridPopoutEditGenericTextArea.stories.tsx +50 -49
- package/src/stories/grid/GridPopoverEditBearing.stories.tsx +25 -26
- package/src/stories/grid/GridPopoverEditDropDown.stories.tsx +93 -94
- package/src/stories/grid/GridPopoverEditMultiSelect.stories.tsx +62 -63
- package/src/stories/grid/GridPopoverEditMultiSelectGrid.stories.tsx +28 -28
- package/src/stories/grid/GridReadOnly.stories.tsx +66 -67
- package/src/stories/grid/GridViewList.stories.tsx +37 -38
- package/src/stories/grid/gridFormInteraction/GridFormDropDownInteraction.stories.tsx +37 -38
- package/src/stories/grid/gridFormInteraction/GridFormEditBearingCorrectionInteraction.stories.tsx +25 -26
- package/src/stories/grid/gridFormInteraction/GridFormEditBearingInteraction.stories.tsx +25 -26
- package/src/stories/grid/gridFormInteraction/GridFormMultiSelectGridInteraction.stories.tsx +31 -31
- package/src/stories/grid/gridFormInteraction/GridFormMultiSelectInteraction.stories.tsx +47 -48
- package/src/stories/grid/gridFormInteraction/GridFormPopoverMenuInteraction.stories.tsx +44 -45
- package/src/stories/grid/gridFormInteraction/GridFormTextAreaInteraction.stories.tsx +19 -20
- package/src/stories/grid/gridFormInteraction/GridFormTextInputInteraction.stories.tsx +21 -22
- package/src/stories/grid/gridFormStatic/GridFormDropDown.stories.tsx +40 -41
- package/src/stories/grid/gridFormStatic/GridFormEditBearing.stories.tsx +14 -15
- package/src/stories/grid/gridFormStatic/GridFormEditBearingCorrection.stories.tsx +14 -15
- package/src/stories/grid/gridFormStatic/GridFormMessage.stories.tsx +10 -11
- package/src/stories/grid/gridFormStatic/GridFormMultiSelect.stories.tsx +20 -21
- package/src/stories/grid/gridFormStatic/GridFormPopoverMenu.stories.tsx +16 -17
- package/src/stories/grid/gridFormStatic/GridFormTextArea.stories.tsx +13 -14
- package/src/stories/grid/gridFormStatic/GridFormTextInput.stories.tsx +13 -14
- package/src/stories/grid/interactions/GridKeyboardInteractions.stories.tsx +68 -71
- package/src/stories/react-menu/ReactMenu.stories.tsx +26 -26
- package/src/utils/bearing.test.ts +44 -44
- package/src/utils/bearing.ts +20 -20
- package/src/utils/deferredPromise.ts +1 -1
- package/src/utils/storybookTestUtil.ts +2 -2
- package/src/utils/testQuick.ts +15 -14
- package/src/utils/testUtil.ts +31 -36
- package/src/utils/textMatcher.test.ts +9 -9
- package/src/utils/textMatcher.ts +8 -8
- package/src/utils/textValidator.test.ts +56 -56
- package/src/utils/textValidator.ts +11 -11
- package/src/utils/util.test.ts +20 -20
- package/src/utils/util.ts +7 -7
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@linzjs/step-ag-grid",
|
|
3
3
|
"repository": "github:linz/step-ag-grid.git",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"version": "
|
|
5
|
+
"version": "24.0.0",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"aggrid",
|
|
8
8
|
"ag-grid",
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
},
|
|
29
29
|
"peerDependencies": {
|
|
30
30
|
"@linzjs/lui": ">=21",
|
|
31
|
-
"ag-grid-community": "^32.
|
|
32
|
-
"ag-grid-react": "^32.
|
|
31
|
+
"ag-grid-community": "^32.3.3",
|
|
32
|
+
"ag-grid-react": "^32.3.3",
|
|
33
33
|
"lodash-es": ">=4",
|
|
34
34
|
"react": ">=18",
|
|
35
35
|
"react-dom": ">=18"
|
|
@@ -50,12 +50,14 @@
|
|
|
50
50
|
"stylelint": "stylelint src/**/*.scss src/**/*.css --fix",
|
|
51
51
|
"css": "sass ./src/styles/index.scss:dist/index.css --no-source-map",
|
|
52
52
|
"test": "jest",
|
|
53
|
-
"lint": "eslint ./src --ext .js,.ts,.tsx --
|
|
53
|
+
"lint": "eslint ./src --ext .js,.ts,.tsx --cache --ignore-path .gitignore",
|
|
54
|
+
"lint:fix": "eslint ./src --ext .js,.ts,.tsx --fix --cache --ignore-path .gitignore",
|
|
54
55
|
"storybook": "storybook dev -p 6006",
|
|
55
56
|
"build-storybook": "storybook build",
|
|
56
57
|
"deploy-storybook": "npx --yes -p @storybook/storybook-deployer storybook-to-ghpages",
|
|
57
58
|
"chromatic": "chromatic --exit-zero-on-changes",
|
|
58
|
-
"semantic-release": "semantic-release"
|
|
59
|
+
"semantic-release": "semantic-release",
|
|
60
|
+
"upgrade": "npx ncu -i --format group"
|
|
59
61
|
},
|
|
60
62
|
"eslintConfig": {
|
|
61
63
|
"extends": [
|
|
@@ -78,53 +80,37 @@
|
|
|
78
80
|
"devDependencies": {
|
|
79
81
|
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
|
|
80
82
|
"@chromatic-com/storybook": "^3.2.4",
|
|
81
|
-
"@linzjs/lui": "^22.2
|
|
82
|
-
"@
|
|
83
|
+
"@linzjs/lui": "^22.4.2",
|
|
84
|
+
"@linzjs/style": "^5.4.0",
|
|
85
|
+
"@rollup/plugin-commonjs": "^26.0.3",
|
|
83
86
|
"@rollup/plugin-json": "^6.1.0",
|
|
84
|
-
"@rollup/plugin-node-resolve": "^15.
|
|
85
|
-
"@semantic-release/changelog": "^6.0.3",
|
|
87
|
+
"@rollup/plugin-node-resolve": "^15.3.1",
|
|
86
88
|
"@semantic-release/git": "^10.0.1",
|
|
87
|
-
"@storybook/addon-essentials": "^8.5.
|
|
88
|
-
"@storybook/addon-interactions": "^8.5.
|
|
89
|
-
"@storybook/addon-links": "^8.5.
|
|
90
|
-
"@storybook/react": "^8.5.
|
|
91
|
-
"@storybook/react-vite": "^8.5.
|
|
92
|
-
"@storybook/test": "^8.5.
|
|
89
|
+
"@storybook/addon-essentials": "^8.5.2",
|
|
90
|
+
"@storybook/addon-interactions": "^8.5.2",
|
|
91
|
+
"@storybook/addon-links": "^8.5.2",
|
|
92
|
+
"@storybook/react": "^8.5.2",
|
|
93
|
+
"@storybook/react-vite": "^8.5.2",
|
|
94
|
+
"@storybook/test": "^8.5.2",
|
|
93
95
|
"@storybook/test-runner": "^0.21.0",
|
|
94
96
|
"@testing-library/dom": "^10.4.0",
|
|
95
97
|
"@testing-library/jest-dom": "^6.6.3",
|
|
96
98
|
"@testing-library/react": "^16.2.0",
|
|
97
|
-
"@testing-library/user-event": "^14.6.
|
|
98
|
-
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
|
|
99
|
+
"@testing-library/user-event": "^14.6.1",
|
|
99
100
|
"@types/debounce-promise": "^3.1.9",
|
|
100
101
|
"@types/jest": "^29.5.14",
|
|
101
102
|
"@types/lodash-es": "^4.17.12",
|
|
102
|
-
"@types/node": "^22.
|
|
103
|
+
"@types/node": "^22.12.0",
|
|
103
104
|
"@types/react": "^18.3.8",
|
|
104
|
-
"@types/react-dom": "^18.3.
|
|
105
|
+
"@types/react-dom": "^18.3.5",
|
|
105
106
|
"@types/uuid": "^10.0.0",
|
|
106
|
-
"@typescript-eslint/eslint-plugin": "^7.15.0",
|
|
107
|
-
"@typescript-eslint/parser": "^7.15.0",
|
|
108
107
|
"@vitejs/plugin-react-swc": "^3.7.2",
|
|
109
|
-
"ag-grid-community": "^32.
|
|
110
|
-
"ag-grid-react": "^32.
|
|
108
|
+
"ag-grid-community": "^32.3.3",
|
|
109
|
+
"ag-grid-react": "^32.3.3",
|
|
111
110
|
"babel-jest": "^29.7.0",
|
|
112
111
|
"babel-preset-react-app": "^10.0.1",
|
|
113
|
-
"chromatic": "^11.25.
|
|
112
|
+
"chromatic": "^11.25.1",
|
|
114
113
|
"css-loader": "^7.1.2",
|
|
115
|
-
"esbuild": "^0.24.2",
|
|
116
|
-
"eslint": "^8.57.0",
|
|
117
|
-
"eslint-config-prettier": "^9.1.0",
|
|
118
|
-
"eslint-config-react-app": "^7.0.1",
|
|
119
|
-
"eslint-plugin-deprecation": "^2.0.0",
|
|
120
|
-
"eslint-plugin-import": "^2.31.0",
|
|
121
|
-
"eslint-plugin-jest": "^28.11.0",
|
|
122
|
-
"eslint-plugin-jsx-a11y": "^6.10.2",
|
|
123
|
-
"eslint-plugin-prettier": "^5.2.3",
|
|
124
|
-
"eslint-plugin-react": "^7.37.4",
|
|
125
|
-
"eslint-plugin-react-hooks": "^4.6.2",
|
|
126
|
-
"eslint-plugin-storybook": "^0.11.2",
|
|
127
|
-
"eslint-plugin-testing-library": "^6.3.0",
|
|
128
114
|
"jest": "^29.7.0",
|
|
129
115
|
"jest-canvas-mock": "^2.5.2",
|
|
130
116
|
"jest-environment-jsdom": "^29.7.0",
|
|
@@ -134,11 +120,10 @@
|
|
|
134
120
|
"postcss": "^8.5.1",
|
|
135
121
|
"postcss-loader": "^7.3.4",
|
|
136
122
|
"postcss-scss": "^4.0.9",
|
|
137
|
-
"prettier": "^3.4.2",
|
|
138
123
|
"react": ">=18",
|
|
139
124
|
"react-app-polyfill": "^3.0.0",
|
|
140
125
|
"react-dom": "^18.3.1",
|
|
141
|
-
"rollup": "^4.
|
|
126
|
+
"rollup": "^4.32.1",
|
|
142
127
|
"rollup-plugin-copy": "^3.5.0",
|
|
143
128
|
"rollup-plugin-peer-deps-external": "^2.2.4",
|
|
144
129
|
"rollup-plugin-postcss": "^4.0.2",
|
|
@@ -146,7 +131,7 @@
|
|
|
146
131
|
"sass": "^1.83.4",
|
|
147
132
|
"sass-loader": "^14.2.1",
|
|
148
133
|
"semantic-release": "^22.0.12",
|
|
149
|
-
"storybook": "^8.5.
|
|
134
|
+
"storybook": "^8.5.2",
|
|
150
135
|
"storybook-css-modules-preset": "^1.1.1",
|
|
151
136
|
"style-loader": "^4.0.0",
|
|
152
137
|
"stylelint": "^15.11.0",
|
|
@@ -155,7 +140,7 @@
|
|
|
155
140
|
"stylelint-prettier": "^4.1.0",
|
|
156
141
|
"stylelint-scss": "^5.3.2",
|
|
157
142
|
"typescript": "^5.7.3",
|
|
158
|
-
"vite": "^6.0.
|
|
143
|
+
"vite": "^6.0.11",
|
|
159
144
|
"vite-plugin-html": "^3.2.2",
|
|
160
145
|
"vite-tsconfig-paths": "^5.1.4"
|
|
161
146
|
},
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { LuiMiniSpinner } from "@linzjs/lui";
|
|
1
|
+
import { LuiMiniSpinner } from '@linzjs/lui';
|
|
2
|
+
import { PropsWithChildren, ReactElement } from 'react';
|
|
4
3
|
|
|
5
4
|
/**
|
|
6
5
|
* If loading is true this returns a loading spinner, otherwise it returns its children.
|
|
@@ -13,10 +12,10 @@ export const ComponentLoadingWrapper = (
|
|
|
13
12
|
}>,
|
|
14
13
|
): ReactElement => {
|
|
15
14
|
return props.loading ? (
|
|
16
|
-
<LuiMiniSpinner size={22} divProps={{ role:
|
|
15
|
+
<LuiMiniSpinner size={22} divProps={{ role: 'status', ['aria-label']: 'Loading', style: { padding: 16 } }} />
|
|
17
16
|
) : (
|
|
18
|
-
<div style={{ pointerEvents: props.saving ?
|
|
19
|
-
{props.saving && <div className={
|
|
17
|
+
<div style={{ pointerEvents: props.saving ? 'none' : 'inherit' }} className={props.className}>
|
|
18
|
+
{props.saving && <div className={'ComponentLoadingWrapper-saveOverlay'} />}
|
|
20
19
|
{props.children}
|
|
21
20
|
</div>
|
|
22
21
|
);
|
package/src/components/Grid.tsx
CHANGED
|
@@ -20,21 +20,21 @@ import {
|
|
|
20
20
|
RowHighlightPosition,
|
|
21
21
|
RowNode,
|
|
22
22
|
SelectionChangedEvent,
|
|
23
|
-
} from
|
|
24
|
-
import { AgGridReact } from
|
|
25
|
-
import clsx from
|
|
26
|
-
import { defer, difference, isEmpty, last, omit, xorBy } from
|
|
27
|
-
import { ReactElement, useCallback, useContext, useEffect, useMemo, useRef, useState } from
|
|
28
|
-
import { useInterval } from
|
|
29
|
-
|
|
30
|
-
import { GridContext } from
|
|
31
|
-
import { GridUpdatingContext } from
|
|
32
|
-
import { fnOrVar, isNotEmpty } from
|
|
33
|
-
import {
|
|
34
|
-
import {
|
|
35
|
-
import {
|
|
36
|
-
import {
|
|
37
|
-
import {
|
|
23
|
+
} from 'ag-grid-community';
|
|
24
|
+
import { AgGridReact } from 'ag-grid-react';
|
|
25
|
+
import clsx from 'clsx';
|
|
26
|
+
import { defer, difference, isEmpty, last, omit, xorBy } from 'lodash-es';
|
|
27
|
+
import { ReactElement, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
|
|
28
|
+
import { useInterval } from 'usehooks-ts';
|
|
29
|
+
|
|
30
|
+
import { GridContext } from '../contexts/GridContext';
|
|
31
|
+
import { GridUpdatingContext } from '../contexts/GridUpdatingContext';
|
|
32
|
+
import { fnOrVar, isNotEmpty } from '../utils/util';
|
|
33
|
+
import { clickInputWhenContainingCellClicked } from './clickInputWhenContainingCellClicked';
|
|
34
|
+
import { GridHeaderSelect } from './gridHeader';
|
|
35
|
+
import { GridContextMenuComponent, useGridContextMenu } from './gridHook';
|
|
36
|
+
import { GridNoRowsOverlay } from './GridNoRowsOverlay';
|
|
37
|
+
import { usePostSortRowsHook } from './PostSortRowsHook';
|
|
38
38
|
|
|
39
39
|
export interface GridBaseRow {
|
|
40
40
|
id: string | number;
|
|
@@ -45,29 +45,29 @@ export interface GridProps {
|
|
|
45
45
|
defaultPostSort?: boolean; // Retain sort order after edit, Defaults to true.
|
|
46
46
|
selectable?: boolean;
|
|
47
47
|
theme?: string; // should have prefix ag-theme-
|
|
48
|
-
[
|
|
49
|
-
domLayout?: GridOptions[
|
|
48
|
+
['data-testid']?: string;
|
|
49
|
+
domLayout?: GridOptions['domLayout'];
|
|
50
50
|
externalSelectedItems?: any[];
|
|
51
51
|
setExternalSelectedItems?: (items: any[]) => void;
|
|
52
|
-
defaultColDef?: GridOptions[
|
|
52
|
+
defaultColDef?: GridOptions['defaultColDef'];
|
|
53
53
|
columnDefs: ColDef[];
|
|
54
|
-
rowData: GridOptions[
|
|
54
|
+
rowData: GridOptions['rowData'];
|
|
55
55
|
/**
|
|
56
56
|
* Whether select column is pinned. Defaults to "left".
|
|
57
57
|
*/
|
|
58
|
-
selectColumnPinned?: ColDef[
|
|
58
|
+
selectColumnPinned?: ColDef['pinned'];
|
|
59
59
|
noRowsOverlayText?: string;
|
|
60
60
|
noRowsMatchingOverlayText?: string;
|
|
61
61
|
animateRows?: boolean;
|
|
62
62
|
rowHeight?: number;
|
|
63
|
-
rowClassRules?: GridOptions[
|
|
64
|
-
rowSelection?:
|
|
63
|
+
rowClassRules?: GridOptions['rowClassRules'];
|
|
64
|
+
rowSelection?: 'single' | 'multiple';
|
|
65
65
|
autoSelectFirstRow?: boolean;
|
|
66
|
-
onColumnMoved?: GridOptions[
|
|
67
|
-
rowDragText?: GridOptions[
|
|
68
|
-
onRowDragEnd?: (movedRow: any, targetRow: any, targetIndex: number) => Promise<void
|
|
66
|
+
onColumnMoved?: GridOptions['onColumnMoved'];
|
|
67
|
+
rowDragText?: GridOptions['rowDragText'];
|
|
68
|
+
onRowDragEnd?: (movedRow: any, targetRow: any, targetIndex: number) => Promise<void> | void;
|
|
69
69
|
alwaysShowVerticalScroll?: boolean;
|
|
70
|
-
suppressColumnVirtualization?: GridOptions[
|
|
70
|
+
suppressColumnVirtualization?: GridOptions['suppressColumnVirtualisation'];
|
|
71
71
|
/**
|
|
72
72
|
* When the grid is rendered using sizeColumns=="auto" this is called initially with the required container size to fit all content.
|
|
73
73
|
* This allows you set the size of the panel to fit perfectly.
|
|
@@ -85,7 +85,7 @@ export interface GridProps {
|
|
|
85
85
|
*
|
|
86
86
|
* If you want to stretch to container width if width is greater than the container add a flex column.
|
|
87
87
|
*/
|
|
88
|
-
sizeColumns?:
|
|
88
|
+
sizeColumns?: 'fit' | 'auto' | 'auto-skip-headers' | 'none';
|
|
89
89
|
/**
|
|
90
90
|
* When pressing tab whilst editing the grid will select and edit the next cell if available.
|
|
91
91
|
* Once the last cell to edit closes this callback is called.
|
|
@@ -109,25 +109,25 @@ export interface GridProps {
|
|
|
109
109
|
|
|
110
110
|
loading?: boolean;
|
|
111
111
|
suppressCellFocus?: boolean;
|
|
112
|
-
pinnedTopRowData?: GridOptions[
|
|
113
|
-
pinnedBottomRowData?: GridOptions[
|
|
112
|
+
pinnedTopRowData?: GridOptions['pinnedTopRowData'];
|
|
113
|
+
pinnedBottomRowData?: GridOptions['pinnedBottomRowData'];
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
/**
|
|
117
117
|
* Wrapper for AgGrid to add commonly used functionality.
|
|
118
118
|
*/
|
|
119
119
|
export const Grid = ({
|
|
120
|
-
|
|
120
|
+
'data-testid': dataTestId,
|
|
121
121
|
defaultPostSort = true,
|
|
122
|
-
rowSelection =
|
|
122
|
+
rowSelection = 'multiple',
|
|
123
123
|
suppressColumnVirtualization = true,
|
|
124
|
-
theme =
|
|
125
|
-
sizeColumns =
|
|
124
|
+
theme = 'ag-theme-step-default',
|
|
125
|
+
sizeColumns = 'auto',
|
|
126
126
|
selectColumnPinned = null,
|
|
127
127
|
contextMenuSelectRow = false,
|
|
128
128
|
singleClickEdit = false,
|
|
129
129
|
rowData,
|
|
130
|
-
rowHeight = theme ===
|
|
130
|
+
rowHeight = theme === 'ag-theme-step-default' ? 40 : theme === 'ag-theme-step-compact' ? 36 : 40,
|
|
131
131
|
...params
|
|
132
132
|
}: GridProps): ReactElement => {
|
|
133
133
|
const {
|
|
@@ -186,19 +186,19 @@ export const Grid = ({
|
|
|
186
186
|
return;
|
|
187
187
|
}
|
|
188
188
|
|
|
189
|
-
const skipHeader = sizeColumns ===
|
|
190
|
-
if (sizeColumns ===
|
|
189
|
+
const skipHeader = sizeColumns === 'auto-skip-headers' && gridRendered === 'rows-visible';
|
|
190
|
+
if (sizeColumns === 'auto' || skipHeader) {
|
|
191
191
|
const result = autoSizeColumns({ skipHeader, userSizedColIds: userSizedColIds.current, includeFlex: true });
|
|
192
192
|
if (!result) {
|
|
193
193
|
needsAutoSize.current = true;
|
|
194
194
|
return;
|
|
195
195
|
}
|
|
196
|
-
if (gridRendered ===
|
|
196
|
+
if (gridRendered === 'empty') {
|
|
197
197
|
if (!hasSetContentSizeEmpty.current && !hasSetContentSize.current) {
|
|
198
198
|
hasSetContentSizeEmpty.current = true;
|
|
199
199
|
params.onContentSize?.(result);
|
|
200
200
|
}
|
|
201
|
-
} else if (gridRendered ===
|
|
201
|
+
} else if (gridRendered === 'rows-visible') {
|
|
202
202
|
if (!hasSetContentSize.current) {
|
|
203
203
|
if (lastFullResize.current === result.width) {
|
|
204
204
|
hasSetContentSize.current = true;
|
|
@@ -210,11 +210,11 @@ export const Grid = ({
|
|
|
210
210
|
}
|
|
211
211
|
} else {
|
|
212
212
|
// It should be impossible to get here
|
|
213
|
-
console.error(
|
|
213
|
+
console.error('Unknown value returned from hasGridRendered');
|
|
214
214
|
}
|
|
215
215
|
}
|
|
216
216
|
|
|
217
|
-
if (sizeColumns !==
|
|
217
|
+
if (sizeColumns !== 'none') {
|
|
218
218
|
sizeColumnsToFit();
|
|
219
219
|
}
|
|
220
220
|
setAutoSized(true);
|
|
@@ -235,7 +235,7 @@ export const Grid = ({
|
|
|
235
235
|
needsAutoSize.current = true;
|
|
236
236
|
}
|
|
237
237
|
}
|
|
238
|
-
if (needsAutoSize.current || (!hasSetContentSize.current && sizeColumns ===
|
|
238
|
+
if (needsAutoSize.current || (!hasSetContentSize.current && sizeColumns === 'auto')) {
|
|
239
239
|
needsAutoSize.current = false;
|
|
240
240
|
setInitialContentSize();
|
|
241
241
|
}
|
|
@@ -280,7 +280,7 @@ export const Grid = ({
|
|
|
280
280
|
const selectedRows = api.getSelectedRows();
|
|
281
281
|
// We don't want to update selected Items if it hasn't changed to prevent excess renders
|
|
282
282
|
if (
|
|
283
|
-
params.externalSelectedItems.length
|
|
283
|
+
params.externalSelectedItems.length !== selectedRows.length ||
|
|
284
284
|
isNotEmpty(xorBy(selectedRows, params.externalSelectedItems, (row) => row.id))
|
|
285
285
|
) {
|
|
286
286
|
setExternallySelectedItemsAreInSync(false);
|
|
@@ -347,7 +347,7 @@ export const Grid = ({
|
|
|
347
347
|
editable,
|
|
348
348
|
cellClassRules: {
|
|
349
349
|
...colDef.cellClassRules,
|
|
350
|
-
|
|
350
|
+
'GridCell-readonly': (ccp: CellClassParams) => !editable(ccp as any as EditableCallbackParams),
|
|
351
351
|
},
|
|
352
352
|
};
|
|
353
353
|
});
|
|
@@ -355,7 +355,7 @@ export const Grid = ({
|
|
|
355
355
|
return params.selectable || params.onRowDragEnd
|
|
356
356
|
? [
|
|
357
357
|
{
|
|
358
|
-
colId:
|
|
358
|
+
colId: 'selection',
|
|
359
359
|
editable: false,
|
|
360
360
|
rowDrag: !!params.onRowDragEnd,
|
|
361
361
|
minWidth: params.selectable && params.onRowDragEnd ? 76 : 48,
|
|
@@ -365,11 +365,11 @@ export const Grid = ({
|
|
|
365
365
|
exportable: false,
|
|
366
366
|
},
|
|
367
367
|
checkboxSelection: params.selectable,
|
|
368
|
-
headerClass: params.onRowDragEnd ?
|
|
369
|
-
headerComponent: rowSelection ===
|
|
368
|
+
headerClass: params.onRowDragEnd ? 'ag-header-select-draggable' : undefined,
|
|
369
|
+
headerComponent: rowSelection === 'multiple' ? GridHeaderSelect : null,
|
|
370
370
|
suppressHeaderKeyboardEvent: (e) => {
|
|
371
371
|
if (!params.selectable) return false;
|
|
372
|
-
if ((e.event.key ===
|
|
372
|
+
if ((e.event.key === 'Enter' || e.event.key === ' ') && !e.event.repeat) {
|
|
373
373
|
if (isEmpty(e.api.getSelectedRows())) {
|
|
374
374
|
e.api.selectAllFiltered();
|
|
375
375
|
} else {
|
|
@@ -426,7 +426,7 @@ export const Grid = ({
|
|
|
426
426
|
// Don't update while there are spinners
|
|
427
427
|
if (!isEmpty(updatingCols())) return;
|
|
428
428
|
|
|
429
|
-
const skipHeader = sizeColumns ===
|
|
429
|
+
const skipHeader = sizeColumns === 'auto-skip-headers';
|
|
430
430
|
if (hasSetContentSize.current) {
|
|
431
431
|
autoSizeColumns({ skipHeader, userSizedColIds: userSizedColIds.current, colIds: colIdsEdited.current });
|
|
432
432
|
}
|
|
@@ -460,7 +460,7 @@ export const Grid = ({
|
|
|
460
460
|
event.node.setSelected(true, true);
|
|
461
461
|
}
|
|
462
462
|
// Cell already being edited, so don't re-edit until finished
|
|
463
|
-
if (checkUpdating([event.colDef.field ??
|
|
463
|
+
if (checkUpdating([event.colDef.field ?? ''], event.data.id)) {
|
|
464
464
|
return;
|
|
465
465
|
}
|
|
466
466
|
|
|
@@ -519,10 +519,10 @@ export const Grid = ({
|
|
|
519
519
|
const onCellKeyPress = useCallback(
|
|
520
520
|
(e: CellKeyDownEvent) => {
|
|
521
521
|
const kbe = e.event as KeyboardEvent;
|
|
522
|
-
if (kbe.key ===
|
|
522
|
+
if (kbe.key === 'Enter') {
|
|
523
523
|
if (!invokeEditAction(e)) startCellEditing(e);
|
|
524
524
|
}
|
|
525
|
-
if (kbe.key ===
|
|
525
|
+
if (kbe.key === 'Tab') {
|
|
526
526
|
// eslint-disable-next-line
|
|
527
527
|
prePopupOps();
|
|
528
528
|
}
|
|
@@ -536,7 +536,7 @@ export const Grid = ({
|
|
|
536
536
|
*/
|
|
537
537
|
const columnDefsAdjusted = useMemo(() => {
|
|
538
538
|
const adjustColDefOrGroup = (colDef: ColDef | ColGroupDef) =>
|
|
539
|
-
|
|
539
|
+
'children' in colDef ? adjustGroupColDef(colDef) : adjustColDef(colDef);
|
|
540
540
|
|
|
541
541
|
const adjustGroupColDef = (colDef: ColGroupDef): ColGroupDef => ({
|
|
542
542
|
...colDef,
|
|
@@ -545,7 +545,7 @@ export const Grid = ({
|
|
|
545
545
|
|
|
546
546
|
const adjustColDef = (colDef: ColDef): ColDef => ({
|
|
547
547
|
...colDef,
|
|
548
|
-
suppressSizeToFit: (sizeColumns ===
|
|
548
|
+
suppressSizeToFit: (sizeColumns === 'auto' || sizeColumns === 'auto-skip-headers') && !colDef.flex,
|
|
549
549
|
sortable: colDef.sortable && params.defaultColDef?.sortable !== false,
|
|
550
550
|
});
|
|
551
551
|
|
|
@@ -570,8 +570,8 @@ export const Grid = ({
|
|
|
570
570
|
if (isEmpty(colIds)) {
|
|
571
571
|
// Columns to resize?
|
|
572
572
|
if (!isEmpty(colIdsEdited.current)) {
|
|
573
|
-
const skipHeader = sizeColumns ===
|
|
574
|
-
if (sizeColumns ===
|
|
573
|
+
const skipHeader = sizeColumns === 'auto-skip-headers';
|
|
574
|
+
if (sizeColumns === 'auto' || skipHeader) {
|
|
575
575
|
defer(() => {
|
|
576
576
|
if (hasSetContentSize.current) {
|
|
577
577
|
autoSizeColumns({
|
|
@@ -608,7 +608,7 @@ export const Grid = ({
|
|
|
608
608
|
* Resize columns to fit if required on window/container resize
|
|
609
609
|
*/
|
|
610
610
|
const onGridSizeChanged = useCallback(() => {
|
|
611
|
-
if (sizeColumns !==
|
|
611
|
+
if (sizeColumns !== 'none') {
|
|
612
612
|
sizeColumnsToFit();
|
|
613
613
|
}
|
|
614
614
|
}, [sizeColumns, sizeColumnsToFit]);
|
|
@@ -625,10 +625,10 @@ export const Grid = ({
|
|
|
625
625
|
const colId = e.column?.getColId();
|
|
626
626
|
if (colId == null) return;
|
|
627
627
|
switch (e.source) {
|
|
628
|
-
case
|
|
628
|
+
case 'uiColumnDragged':
|
|
629
629
|
userSizedColIds.current.add(colId);
|
|
630
630
|
break;
|
|
631
|
-
case
|
|
631
|
+
case 'autosizeColumns':
|
|
632
632
|
userSizedColIds.current.delete(colId);
|
|
633
633
|
break;
|
|
634
634
|
}
|
|
@@ -657,27 +657,29 @@ export const Grid = ({
|
|
|
657
657
|
}, []);
|
|
658
658
|
|
|
659
659
|
const onRowDragEnd = useCallback(
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
660
|
+
(event: RowDragEndEvent) => {
|
|
661
|
+
void (async () => {
|
|
662
|
+
const clientSideRowModel = event.api.getModel() as IClientSideRowModel;
|
|
663
|
+
if (event.node.rowIndex != null) {
|
|
664
|
+
const lastHighlightedRowNode = clientSideRowModel.getLastHighlightedRowNode();
|
|
665
|
+
const isBelow = lastHighlightedRowNode && lastHighlightedRowNode.highlighted === RowHighlightPosition.Below;
|
|
666
|
+
|
|
667
|
+
let targetIndex = event.overIndex;
|
|
668
|
+
if (event.node.rowIndex > event.overIndex) {
|
|
669
|
+
targetIndex += isBelow ? 1 : 0;
|
|
670
|
+
} else {
|
|
671
|
+
targetIndex += isBelow ? 0 : -1;
|
|
672
|
+
}
|
|
672
673
|
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
674
|
+
const moved = event.node.data;
|
|
675
|
+
const target = event.overNode?.data;
|
|
676
|
+
moved.id !== target?.id && //moved over a different row
|
|
677
|
+
event.node.rowIndex != targetIndex && //moved to a different index
|
|
678
|
+
params.onRowDragEnd &&
|
|
679
|
+
(await params.onRowDragEnd(moved, target, targetIndex));
|
|
680
|
+
}
|
|
681
|
+
clientSideRowModel.highlightRowAtPixel(null);
|
|
682
|
+
})();
|
|
681
683
|
},
|
|
682
684
|
[params],
|
|
683
685
|
);
|
|
@@ -691,11 +693,11 @@ export const Grid = ({
|
|
|
691
693
|
<div
|
|
692
694
|
data-testid={dataTestId}
|
|
693
695
|
className={clsx(
|
|
694
|
-
|
|
696
|
+
'Grid-container',
|
|
695
697
|
theme,
|
|
696
|
-
|
|
697
|
-
staleGrid &&
|
|
698
|
-
gridReady && rowData && autoSized &&
|
|
698
|
+
'theme-specific',
|
|
699
|
+
staleGrid && 'Grid-sortIsStale',
|
|
700
|
+
gridReady && rowData && autoSized && 'Grid-ready',
|
|
699
701
|
)}
|
|
700
702
|
>
|
|
701
703
|
{gridContextMenu.component}
|
|
@@ -721,7 +723,7 @@ export const Grid = ({
|
|
|
721
723
|
onCellEditingStarted={refreshSelectedRows}
|
|
722
724
|
domLayout={params.domLayout}
|
|
723
725
|
onColumnResized={onColumnResized}
|
|
724
|
-
defaultColDef={{ minWidth: 48, ...omit(params.defaultColDef, [
|
|
726
|
+
defaultColDef={{ minWidth: 48, ...omit(params.defaultColDef, ['editable']) }}
|
|
725
727
|
columnDefs={columnDefsAdjusted}
|
|
726
728
|
rowData={rowData}
|
|
727
729
|
noRowsOverlayComponent={(event: AgGridEvent) => {
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
import { GridBaseRow } from
|
|
2
|
-
import { generateFilterGetter, SAValueGetterParams } from
|
|
1
|
+
import { GridBaseRow } from './Grid';
|
|
2
|
+
import { generateFilterGetter, SAValueGetterParams } from './GridCell';
|
|
3
3
|
|
|
4
|
-
describe(
|
|
5
|
-
test(
|
|
6
|
-
const filterValueGetter = () =>
|
|
7
|
-
expect(generateFilterGetter(undefined, filterValueGetter, () =>
|
|
8
|
-
expect(generateFilterGetter(
|
|
4
|
+
describe('GridCell', () => {
|
|
5
|
+
test('generateFilterGetter returns passed filterValueGetter', () => {
|
|
6
|
+
const filterValueGetter = () => 'a';
|
|
7
|
+
expect(generateFilterGetter(undefined, filterValueGetter, () => 'b')).toBe(filterValueGetter);
|
|
8
|
+
expect(generateFilterGetter('xxx', filterValueGetter, undefined)).toBe(filterValueGetter);
|
|
9
9
|
expect(generateFilterGetter(undefined, filterValueGetter, undefined)).toBe(filterValueGetter);
|
|
10
10
|
});
|
|
11
11
|
|
|
12
|
-
test(
|
|
13
|
-
expect(generateFilterGetter(
|
|
12
|
+
test('generateFilterGetter', () => {
|
|
13
|
+
expect(generateFilterGetter('xxx', undefined, undefined)).toBeUndefined();
|
|
14
14
|
|
|
15
15
|
const tests = [
|
|
16
|
-
{ formatted:
|
|
17
|
-
{ formatted:
|
|
18
|
-
{ formatted:
|
|
16
|
+
{ formatted: 'f1', value: 'v1', expected: 'f1 v1' },
|
|
17
|
+
{ formatted: 'f2', value: {}, expected: 'f2' },
|
|
18
|
+
{ formatted: '', value: 'v3', expected: 'v3' },
|
|
19
19
|
];
|
|
20
20
|
|
|
21
21
|
tests.forEach((test) => {
|
|
22
|
-
const field =
|
|
22
|
+
const field = 'xxx';
|
|
23
23
|
const valueFormatter = test.formatted == null ? undefined : () => test.formatted;
|
|
24
24
|
const filterGetter = generateFilterGetter(field, undefined, valueFormatter);
|
|
25
|
-
expect(typeof filterGetter).toBe(
|
|
26
|
-
if (typeof filterGetter !==
|
|
25
|
+
expect(typeof filterGetter).toBe('function');
|
|
26
|
+
if (typeof filterGetter !== 'function') return;
|
|
27
27
|
expect(filterGetter({ getValue: () => test.value } as any as SAValueGetterParams<GridBaseRow>)).toBe(
|
|
28
28
|
test.expected,
|
|
29
29
|
);
|