@linzjs/step-ag-grid 23.0.1 → 25.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/GridTheme.scss +1 -1
- package/dist/index.css +0 -13
- 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 +19 -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/{src/utils → dist/src/utils/__tests__}/storybookTestUtil.ts +2 -2
- package/{src/utils → dist/src/utils/__tests__}/testQuick.ts +15 -14
- package/{src/utils → dist/src/utils/__tests__}/testUtil.ts +31 -36
- package/dist/src/utils/__tests__/vitestUtil.ts +295 -0
- package/dist/src/utils/textValidator.d.ts +2 -2
- package/dist/{step-ag-grid.cjs.js → step-ag-grid.cjs} +969 -955
- package/dist/step-ag-grid.cjs.map +1 -0
- package/dist/step-ag-grid.esm.js +970 -958
- package/dist/step-ag-grid.esm.js.map +1 -1
- package/dist/vite.config.d.ts +1 -1
- package/package.json +38 -57
- package/src/components/ComponentLoadingWrapper.tsx +5 -6
- package/src/components/Grid.tsx +85 -83
- package/src/components/GridCell.test.tsx +17 -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 +15 -14
- package/src/contexts/GridContextProvider.tsx +42 -42
- 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 +19 -21
- package/src/lui/ActionButton.scss +2 -2
- package/src/lui/ActionButton.tsx +42 -41
- package/src/lui/FormError.scss +3 -4
- package/src/lui/FormError.tsx +4 -4
- package/src/lui/TextAreaInput.tsx +9 -9
- package/src/lui/TextInputFormatted.scss +1 -1
- package/src/lui/TextInputFormatted.tsx +11 -11
- package/src/lui/reactUtils.test.tsx +9 -8
- package/src/lui/reactUtils.tsx +2 -2
- package/src/lui/stateDeferredHook.tsx +3 -5
- package/src/lui/timeoutHook.test.tsx +12 -11
- 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/styles/Grid.scss +9 -9
- package/src/styles/GridIcon.scss +6 -6
- package/src/styles/GridPopoverMenu.scss +3 -3
- package/src/styles/GridTheme.scss +1 -1
- package/src/styles/react-menu-customisations.scss +26 -41
- package/src/utils/__tests__/storybookTestUtil.ts +4 -0
- package/src/utils/__tests__/testQuick.ts +157 -0
- package/src/utils/__tests__/testUtil.ts +294 -0
- package/src/utils/__tests__/vitestUtil.ts +295 -0
- package/src/utils/bearing.test.ts +47 -45
- package/src/utils/bearing.ts +20 -20
- package/src/utils/deferredPromise.ts +1 -1
- package/src/utils/textMatcher.test.ts +10 -9
- package/src/utils/textMatcher.ts +8 -8
- package/src/utils/textValidator.test.ts +61 -62
- package/src/utils/textValidator.ts +11 -11
- package/src/utils/util.test.ts +21 -20
- package/src/utils/util.ts +7 -7
- package/dist/src/utils/storybookTestUtil.d.ts +0 -3
- package/dist/src/utils/testQuick.d.ts +0 -62
- package/dist/src/utils/testUtil.d.ts +0 -46
- package/dist/step-ag-grid.cjs.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ColDef, GridApi, IRowNode } from
|
|
2
|
-
import { CsvExportParams } from
|
|
3
|
-
import { createContext, useContext } from
|
|
1
|
+
import { ColDef, GridApi, IRowNode } from 'ag-grid-community';
|
|
2
|
+
import { CsvExportParams } from 'ag-grid-community';
|
|
3
|
+
import { createContext, useContext } from 'react';
|
|
4
4
|
|
|
5
|
-
import { ColDefT, GridBaseRow } from
|
|
5
|
+
import { ColDefT, GridBaseRow } from '../components';
|
|
6
6
|
|
|
7
7
|
export type GridFilterExternal<TData extends GridBaseRow> = (data: TData, rowNode: IRowNode) => boolean;
|
|
8
8
|
|
|
@@ -17,7 +17,7 @@ export type AutoSizeColumnsResult = { width: number } | null;
|
|
|
17
17
|
|
|
18
18
|
export interface GridContextType<TData extends GridBaseRow> {
|
|
19
19
|
gridReady: boolean;
|
|
20
|
-
gridRenderState: () => null |
|
|
20
|
+
gridRenderState: () => null | 'empty' | 'rows-visible';
|
|
21
21
|
getColDef: (colId?: string) => ColDef | undefined;
|
|
22
22
|
getColumns: (
|
|
23
23
|
filter?: keyof ColDef | ((r: ColDef) => boolean | undefined | null | number | string),
|
|
@@ -72,138 +72,144 @@ export const GridContext = createContext<GridContextType<any>>({
|
|
|
72
72
|
gridReady: false,
|
|
73
73
|
gridRenderState: () => null,
|
|
74
74
|
getColDef: () => {
|
|
75
|
-
console.error(
|
|
75
|
+
console.error('no context provider for getColDef');
|
|
76
76
|
return undefined;
|
|
77
77
|
},
|
|
78
78
|
getColumns: () => {
|
|
79
|
-
console.error(
|
|
79
|
+
console.error('no context provider for getColumns');
|
|
80
80
|
return [];
|
|
81
81
|
},
|
|
82
82
|
getColumnIds: () => {
|
|
83
|
-
console.error(
|
|
83
|
+
console.error('no context provider for getColumnIds');
|
|
84
84
|
return [];
|
|
85
85
|
},
|
|
86
86
|
invisibleColumnIds: undefined,
|
|
87
87
|
setInvisibleColumnIds: () => {
|
|
88
|
-
console.error(
|
|
88
|
+
console.error('no context provider for setInvisibleColumnIds');
|
|
89
89
|
},
|
|
90
90
|
prePopupOps: () => {
|
|
91
|
-
console.error(
|
|
91
|
+
console.error('no context provider for prePopupOps');
|
|
92
92
|
},
|
|
93
93
|
postPopupOps: () => {
|
|
94
|
-
console.error(
|
|
94
|
+
console.error('no context provider for prePopupOps');
|
|
95
95
|
},
|
|
96
96
|
externallySelectedItemsAreInSync: false,
|
|
97
97
|
setApis: () => {
|
|
98
|
-
console.error(
|
|
98
|
+
console.error('no context provider for setApis');
|
|
99
99
|
},
|
|
100
100
|
setQuickFilter: () => {
|
|
101
|
-
console.error(
|
|
101
|
+
console.error('no context provider for setQuickFilter');
|
|
102
102
|
},
|
|
103
103
|
selectRowsById: () => {
|
|
104
|
-
console.error(
|
|
104
|
+
console.error('no context provider for selectRows');
|
|
105
105
|
},
|
|
106
|
-
getSelectedRows: <T
|
|
107
|
-
console.error(
|
|
106
|
+
getSelectedRows: <T,>(): T[] => {
|
|
107
|
+
console.error('no context provider for getSelectedRows');
|
|
108
108
|
return [];
|
|
109
109
|
},
|
|
110
|
-
getFilteredSelectedRows: <T
|
|
111
|
-
console.error(
|
|
110
|
+
getFilteredSelectedRows: <T,>(): T[] => {
|
|
111
|
+
console.error('no context provider for getFilteredSelectedRows');
|
|
112
112
|
return [];
|
|
113
113
|
},
|
|
114
114
|
getSelectedRowIds: () => {
|
|
115
|
-
console.error(
|
|
115
|
+
console.error('no context provider for getSelectedRowIds');
|
|
116
116
|
return [];
|
|
117
117
|
},
|
|
118
118
|
getFilteredSelectedRowIds: () => {
|
|
119
|
-
console.error(
|
|
119
|
+
console.error('no context provider for getFilteredSelectedRowIds');
|
|
120
120
|
return [];
|
|
121
121
|
},
|
|
122
|
+
// eslint-disable-next-line @typescript-eslint/require-await
|
|
122
123
|
selectRowsDiff: async () => {
|
|
123
|
-
console.error(
|
|
124
|
+
console.error('no context provider for selectRowsDiff');
|
|
124
125
|
},
|
|
125
126
|
selectRowsByIdWithFlash: () => {
|
|
126
|
-
console.error(
|
|
127
|
+
console.error('no context provider for selectRowsWithFlash');
|
|
127
128
|
},
|
|
129
|
+
// eslint-disable-next-line @typescript-eslint/require-await
|
|
128
130
|
selectRowsWithFlashDiff: async () => {
|
|
129
|
-
console.error(
|
|
131
|
+
console.error('no context provider for selectRowsWithFlashDiff');
|
|
130
132
|
},
|
|
131
133
|
flashRows: () => {
|
|
132
|
-
console.error(
|
|
134
|
+
console.error('no context provider for flashRows');
|
|
133
135
|
},
|
|
136
|
+
// eslint-disable-next-line @typescript-eslint/require-await
|
|
134
137
|
flashRowsDiff: async () => {
|
|
135
|
-
console.error(
|
|
138
|
+
console.error('no context provider for flashRows');
|
|
136
139
|
},
|
|
140
|
+
// eslint-disable-next-line @typescript-eslint/require-await,@typescript-eslint/no-misused-promises
|
|
137
141
|
focusByRowById: async () => {
|
|
138
|
-
console.error(
|
|
142
|
+
console.error('no context provider for focusByRowById');
|
|
139
143
|
},
|
|
140
144
|
ensureRowVisible: () => {
|
|
141
|
-
console.error(
|
|
145
|
+
console.error('no context provider for ensureRowVisible');
|
|
142
146
|
return true;
|
|
143
147
|
},
|
|
144
148
|
ensureSelectedRowIsVisible: () => {
|
|
145
|
-
console.error(
|
|
149
|
+
console.error('no context provider for ensureSelectedRowIsVisible');
|
|
146
150
|
},
|
|
147
151
|
getFirstRowId: () => {
|
|
148
|
-
console.error(
|
|
152
|
+
console.error('no context provider for getFirstRowId');
|
|
149
153
|
return -1;
|
|
150
154
|
},
|
|
151
155
|
autoSizeColumns: () => {
|
|
152
|
-
console.error(
|
|
156
|
+
console.error('no context provider for autoSizeColumns');
|
|
153
157
|
return null;
|
|
154
158
|
},
|
|
155
159
|
sizeColumnsToFit: () => {
|
|
156
|
-
console.error(
|
|
160
|
+
console.error('no context provider for autoSizeAllColumns');
|
|
157
161
|
return null;
|
|
158
162
|
},
|
|
159
163
|
editingCells: () => {
|
|
160
|
-
console.error(
|
|
164
|
+
console.error('no context provider for editingCells');
|
|
161
165
|
return false;
|
|
162
166
|
},
|
|
163
167
|
cancelEdit: () => {
|
|
164
|
-
console.error(
|
|
168
|
+
console.error('no context provider for cancelEdit');
|
|
165
169
|
},
|
|
166
170
|
startCellEditing: () => {
|
|
167
|
-
console.error(
|
|
171
|
+
console.error('no context provider for startCellEditing');
|
|
168
172
|
},
|
|
169
173
|
stopEditing: () => {
|
|
170
|
-
console.error(
|
|
174
|
+
console.error('no context provider for stopEditing');
|
|
171
175
|
},
|
|
176
|
+
// eslint-disable-next-line @typescript-eslint/require-await
|
|
172
177
|
updatingCells: async () => {
|
|
173
|
-
console.error(
|
|
178
|
+
console.error('no context provider for modifyUpdating');
|
|
174
179
|
return false;
|
|
175
180
|
},
|
|
176
181
|
redrawRows: () => {
|
|
177
|
-
console.error(
|
|
182
|
+
console.error('no context provider for redrawRows');
|
|
178
183
|
},
|
|
179
184
|
setExternallySelectedItemsAreInSync: () => {
|
|
180
|
-
console.error(
|
|
185
|
+
console.error('no context provider for setExternallySelectedItemsAreInSync');
|
|
181
186
|
},
|
|
187
|
+
// eslint-disable-next-line @typescript-eslint/require-await
|
|
182
188
|
waitForExternallySelectedItemsToBeInSync: async () => {
|
|
183
|
-
console.error(
|
|
189
|
+
console.error('no context provider for waitForExternallySelectedItemsToBeInSync');
|
|
184
190
|
},
|
|
185
191
|
addExternalFilter: () => {
|
|
186
|
-
console.error(
|
|
192
|
+
console.error('no context provider for addExternalFilter');
|
|
187
193
|
},
|
|
188
194
|
removeExternalFilter: () => {
|
|
189
|
-
console.error(
|
|
195
|
+
console.error('no context provider for removeExternalFilter');
|
|
190
196
|
},
|
|
191
197
|
isExternalFilterPresent: () => {
|
|
192
|
-
console.error(
|
|
198
|
+
console.error('no context provider for isExternalFilterPresent');
|
|
193
199
|
return false;
|
|
194
200
|
},
|
|
195
201
|
doesExternalFilterPass: () => {
|
|
196
|
-
console.error(
|
|
202
|
+
console.error('no context provider for doesExternalFilterPass');
|
|
197
203
|
return true;
|
|
198
204
|
},
|
|
199
205
|
downloadCsv: () => {
|
|
200
|
-
console.error(
|
|
206
|
+
console.error('no context provider for downloadCsv');
|
|
201
207
|
},
|
|
202
208
|
setOnCellEditingComplete: () => {
|
|
203
|
-
console.error(
|
|
209
|
+
console.error('no context provider for setOnCellEditingComplete');
|
|
204
210
|
},
|
|
205
211
|
showNoRowsOverlay: () => {
|
|
206
|
-
console.error(
|
|
212
|
+
console.error('no context provider for showLoadingOverlay');
|
|
207
213
|
},
|
|
208
214
|
});
|
|
209
215
|
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import { ValueFormatterParams } from
|
|
1
|
+
import { ValueFormatterParams } from 'ag-grid-community';
|
|
2
|
+
import { describe, expect, test } from 'vitest';
|
|
2
3
|
|
|
3
|
-
import { downloadCsvUseValueFormattersProcessCellCallback as Dpcc } from
|
|
4
|
+
import { downloadCsvUseValueFormattersProcessCellCallback as Dpcc } from './GridContextProvider';
|
|
4
5
|
|
|
5
|
-
describe(
|
|
6
|
-
test(
|
|
7
|
-
expect(Dpcc({ value: undefined } as any)).toBe(
|
|
8
|
-
expect(Dpcc({ value:
|
|
9
|
-
expect(Dpcc({ value:
|
|
10
|
-
expect(Dpcc({ value: null } as any)).toBe(
|
|
11
|
-
expect(Dpcc({ value: false } as any)).toBe(
|
|
12
|
-
expect(Dpcc({ value:
|
|
13
|
-
expect(Dpcc({ value: 123 } as any)).toBe(
|
|
6
|
+
describe('downloadCsvUseValueFormattersProcessCellCallback', () => {
|
|
7
|
+
test('each type of value for conversion to string', () => {
|
|
8
|
+
expect(Dpcc({ value: undefined } as any)).toBe('');
|
|
9
|
+
expect(Dpcc({ value: '-' } as any)).toBe('');
|
|
10
|
+
expect(Dpcc({ value: '–' } as any)).toBe('');
|
|
11
|
+
expect(Dpcc({ value: null } as any)).toBe('');
|
|
12
|
+
expect(Dpcc({ value: false } as any)).toBe('false');
|
|
13
|
+
expect(Dpcc({ value: 'x' } as any)).toBe('x');
|
|
14
|
+
expect(Dpcc({ value: 123 } as any)).toBe('123');
|
|
14
15
|
expect(Dpcc({ value: { a: 2 } } as any)).toBe('{"a":2}');
|
|
15
16
|
expect(Dpcc({ value: { a: 2 }, column: { getColDef: () => undefined } } as any)).toBe('{"a":2}');
|
|
16
17
|
expect(Dpcc({ value: { a: 2 }, column: { getColDef: () => ({ valueFormatter: undefined }) } } as any)).toBe(
|
|
@@ -19,7 +20,7 @@ describe("downloadCsvUseValueFormattersProcessCellCallback", () => {
|
|
|
19
20
|
expect(
|
|
20
21
|
Dpcc({
|
|
21
22
|
value: { a: 2 },
|
|
22
|
-
column: { getColDef: () => ({ valueFormatter:
|
|
23
|
+
column: { getColDef: () => ({ valueFormatter: 'registeredValueFormatter' }) },
|
|
23
24
|
} as any),
|
|
24
25
|
).toBe('{"a":2}');
|
|
25
26
|
|
|
@@ -29,11 +30,11 @@ describe("downloadCsvUseValueFormattersProcessCellCallback", () => {
|
|
|
29
30
|
column: {
|
|
30
31
|
getColDef: () => ({
|
|
31
32
|
valueFormatter: (params: ValueFormatterParams) => {
|
|
32
|
-
return
|
|
33
|
+
return 'xxx' + params.value.a;
|
|
33
34
|
},
|
|
34
35
|
}),
|
|
35
36
|
},
|
|
36
37
|
} as any),
|
|
37
|
-
).toBe(
|
|
38
|
+
).toBe('xxx2');
|
|
38
39
|
});
|
|
39
40
|
});
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { CellPosition, ColDef, GridApi, IRowNode, RowNode } from
|
|
2
|
-
import { CsvExportParams, ProcessCellForExportParams } from
|
|
3
|
-
import debounce from
|
|
4
|
-
import { compact, defer, delay, difference, filter, isEmpty, last, pull, remove, sortBy, sumBy } from
|
|
5
|
-
import { PropsWithChildren, ReactElement, useCallback, useContext, useEffect, useMemo, useRef, useState } from
|
|
6
|
-
|
|
7
|
-
import { ColDefT, GridBaseRow } from
|
|
8
|
-
import { GridCellFillerColId, isGridCellFiller } from
|
|
9
|
-
import { getColId, isFlexColumn } from
|
|
10
|
-
import { fnOrVar, isNotEmpty, sanitiseFileName, wait } from
|
|
11
|
-
import { AutoSizeColumnsProps, AutoSizeColumnsResult, GridContext, GridFilterExternal } from
|
|
12
|
-
import { GridUpdatingContext } from
|
|
1
|
+
import { CellPosition, ColDef, GridApi, IRowNode, RowNode } from 'ag-grid-community';
|
|
2
|
+
import { CsvExportParams, ProcessCellForExportParams } from 'ag-grid-community';
|
|
3
|
+
import debounce from 'debounce-promise';
|
|
4
|
+
import { compact, defer, delay, difference, filter, isEmpty, last, pull, remove, sortBy, sumBy } from 'lodash-es';
|
|
5
|
+
import { PropsWithChildren, ReactElement, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
|
|
6
|
+
|
|
7
|
+
import { ColDefT, GridBaseRow } from '../components';
|
|
8
|
+
import { GridCellFillerColId, isGridCellFiller } from '../components/GridCellFiller';
|
|
9
|
+
import { getColId, isFlexColumn } from '../components/gridUtil';
|
|
10
|
+
import { fnOrVar, isNotEmpty, sanitiseFileName, wait } from '../utils/util';
|
|
11
|
+
import { AutoSizeColumnsProps, AutoSizeColumnsResult, GridContext, GridFilterExternal } from './GridContext';
|
|
12
|
+
import { GridUpdatingContext } from './GridUpdatingContext';
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Context for AgGrid operations.
|
|
@@ -20,7 +20,7 @@ export const GridContextProvider = <TData extends GridBaseRow>(props: PropsWithC
|
|
|
20
20
|
const { modifyUpdating, checkUpdating } = useContext(GridUpdatingContext);
|
|
21
21
|
const [gridApi, setGridApi] = useState<GridApi>();
|
|
22
22
|
const [gridReady, setGridReady] = useState(false);
|
|
23
|
-
const [quickFilter, _setQuickFilter] = useState(
|
|
23
|
+
const [quickFilter, _setQuickFilter] = useState('');
|
|
24
24
|
const [invisibleColumnIds, _setInvisibleColumnIds] = useState<string[]>();
|
|
25
25
|
const testId = useRef<string | undefined>();
|
|
26
26
|
const idsBeforeUpdate = useRef<number[]>([]);
|
|
@@ -47,7 +47,7 @@ export const GridContextProvider = <TData extends GridBaseRow>(props: PropsWithC
|
|
|
47
47
|
* Set quick filter directly on grid, based on previously save quickFilter state.
|
|
48
48
|
*/
|
|
49
49
|
useEffect(() => {
|
|
50
|
-
gridApi?.setGridOption(
|
|
50
|
+
gridApi?.setGridOption('quickFilterText', quickFilter);
|
|
51
51
|
}, [gridApi, quickFilter]);
|
|
52
52
|
|
|
53
53
|
/**
|
|
@@ -57,7 +57,7 @@ export const GridContextProvider = <TData extends GridBaseRow>(props: PropsWithC
|
|
|
57
57
|
* @param noApiFn Execute if api is not ready.
|
|
58
58
|
*/
|
|
59
59
|
const gridApiOp = useCallback(
|
|
60
|
-
<T
|
|
60
|
+
<T, R>(hasApiFn: (gridApi: GridApi) => T, noApiFn?: () => R): T | R => {
|
|
61
61
|
if (!noApiFn) {
|
|
62
62
|
noApiFn = (() => {}) as () => R;
|
|
63
63
|
}
|
|
@@ -87,9 +87,9 @@ export const GridContextProvider = <TData extends GridBaseRow>(props: PropsWithC
|
|
|
87
87
|
let id = 0;
|
|
88
88
|
try {
|
|
89
89
|
gridApi?.forEachNodeAfterFilterAndSort((rowNode) => {
|
|
90
|
-
id = parseInt(rowNode.id ??
|
|
90
|
+
id = parseInt(rowNode.id ?? '0');
|
|
91
91
|
// this is the only way to get out of the loop
|
|
92
|
-
throw
|
|
92
|
+
throw 'expected exception - exit_loop';
|
|
93
93
|
});
|
|
94
94
|
} catch (ex) {
|
|
95
95
|
// ignore
|
|
@@ -104,7 +104,7 @@ export const GridContextProvider = <TData extends GridBaseRow>(props: PropsWithC
|
|
|
104
104
|
(gridApi: GridApi | undefined, dataTestId?: string) => {
|
|
105
105
|
testId.current = dataTestId;
|
|
106
106
|
setGridApi(gridApi);
|
|
107
|
-
gridApi?.setGridOption(
|
|
107
|
+
gridApi?.setGridOption('quickFilterText', quickFilter);
|
|
108
108
|
setGridReady(!!gridApi);
|
|
109
109
|
},
|
|
110
110
|
[quickFilter],
|
|
@@ -113,10 +113,10 @@ export const GridContextProvider = <TData extends GridBaseRow>(props: PropsWithC
|
|
|
113
113
|
/**
|
|
114
114
|
* Used to check if it's OK to autosize.
|
|
115
115
|
*/
|
|
116
|
-
const gridRenderState = useCallback((): null |
|
|
116
|
+
const gridRenderState = useCallback((): null | 'empty' | 'rows-visible' => {
|
|
117
117
|
if (!gridApi) return null;
|
|
118
|
-
if (!gridApi.getDisplayedRowCount()) return
|
|
119
|
-
if (!isEmpty(gridApi.getRenderedNodes())) return
|
|
118
|
+
if (!gridApi.getDisplayedRowCount()) return 'empty';
|
|
119
|
+
if (!isEmpty(gridApi.getRenderedNodes())) return 'rows-visible';
|
|
120
120
|
// If there are rows to render, but there are no rendered nodes then we should wait
|
|
121
121
|
return null;
|
|
122
122
|
}, [gridApi]);
|
|
@@ -182,7 +182,7 @@ export const GridContextProvider = <TData extends GridBaseRow>(props: PropsWithC
|
|
|
182
182
|
const _getNewNodes = useCallback((): IRowNode[] => {
|
|
183
183
|
return gridApiOp(
|
|
184
184
|
(gridApi) =>
|
|
185
|
-
compact(difference(_getAllRowIds(), idsBeforeUpdate.current).map((rowId) => gridApi.getRowNode(
|
|
185
|
+
compact(difference(_getAllRowIds(), idsBeforeUpdate.current).map((rowId) => gridApi.getRowNode('' + rowId))),
|
|
186
186
|
() => [],
|
|
187
187
|
);
|
|
188
188
|
}, [_getAllRowIds, gridApiOp]);
|
|
@@ -196,7 +196,7 @@ export const GridContextProvider = <TData extends GridBaseRow>(props: PropsWithC
|
|
|
196
196
|
const _rowIdsToNodes = useCallback(
|
|
197
197
|
(rowIds: number[]): IRowNode[] => {
|
|
198
198
|
return gridApiOp(
|
|
199
|
-
(gridApi) => compact(rowIds.map((rowId) => gridApi.getRowNode(
|
|
199
|
+
(gridApi) => compact(rowIds.map((rowId) => gridApi.getRowNode('' + rowId))),
|
|
200
200
|
() => [] as RowNode[],
|
|
201
201
|
);
|
|
202
202
|
},
|
|
@@ -362,14 +362,14 @@ export const GridContextProvider = <TData extends GridBaseRow>(props: PropsWithC
|
|
|
362
362
|
[_selectRowsWithOptionalFlash],
|
|
363
363
|
);
|
|
364
364
|
|
|
365
|
-
const getSelectedRows = useCallback(<T
|
|
365
|
+
const getSelectedRows = useCallback(<T,>(): T[] => {
|
|
366
366
|
return gridApiOp(
|
|
367
367
|
(gridApi) => gridApi.getSelectedRows(),
|
|
368
368
|
() => [],
|
|
369
369
|
);
|
|
370
370
|
}, [gridApiOp]);
|
|
371
371
|
|
|
372
|
-
const getFilteredSelectedRows = useCallback(<T
|
|
372
|
+
const getFilteredSelectedRows = useCallback(<T,>(): T[] => {
|
|
373
373
|
return gridApiOp((gridApi) => {
|
|
374
374
|
const rowData: T[] = [];
|
|
375
375
|
gridApi.forEachNodeAfterFilter((node) => {
|
|
@@ -431,7 +431,7 @@ export const GridContextProvider = <TData extends GridBaseRow>(props: PropsWithC
|
|
|
431
431
|
return {
|
|
432
432
|
width: sumBy(
|
|
433
433
|
gridApi.getColumnState().filter((col) => !col.hide),
|
|
434
|
-
|
|
434
|
+
'width',
|
|
435
435
|
),
|
|
436
436
|
};
|
|
437
437
|
},
|
|
@@ -454,7 +454,8 @@ export const GridContextProvider = <TData extends GridBaseRow>(props: PropsWithC
|
|
|
454
454
|
}, [gridApi]);
|
|
455
455
|
|
|
456
456
|
const startCellEditing = useCallback(
|
|
457
|
-
|
|
457
|
+
// eslint-disable-next-line @typescript-eslint/require-await
|
|
458
|
+
({ rowId, colId }: { rowId: number; colId: string }) => {
|
|
458
459
|
if (!gridApi) return;
|
|
459
460
|
|
|
460
461
|
const colDef = gridApi.getColumnDef(colId);
|
|
@@ -471,7 +472,7 @@ export const GridContextProvider = <TData extends GridBaseRow>(props: PropsWithC
|
|
|
471
472
|
}
|
|
472
473
|
|
|
473
474
|
// Cell already being edited, so don't re-edit until finished
|
|
474
|
-
if (checkUpdating([colDef.field ??
|
|
475
|
+
if (checkUpdating([colDef.field ?? ''], rowId)) {
|
|
475
476
|
return;
|
|
476
477
|
}
|
|
477
478
|
|
|
@@ -565,13 +566,13 @@ export const GridContextProvider = <TData extends GridBaseRow>(props: PropsWithC
|
|
|
565
566
|
let ok = false;
|
|
566
567
|
|
|
567
568
|
await modifyUpdating(
|
|
568
|
-
props.field ??
|
|
569
|
+
props.field ?? '',
|
|
569
570
|
selectedRows.map((data) => data.id),
|
|
570
571
|
async () => {
|
|
571
572
|
// Need to refresh to get spinners to work on all rows
|
|
572
573
|
gridApi.refreshCells({ rowNodes: props.selectedRows as RowNode[], force: true });
|
|
573
574
|
ok = await fnUpdate(selectedRows).catch((ex) => {
|
|
574
|
-
console.error(
|
|
575
|
+
console.error('Exception during modifyUpdating', ex);
|
|
575
576
|
return false;
|
|
576
577
|
});
|
|
577
578
|
},
|
|
@@ -611,14 +612,13 @@ export const GridContextProvider = <TData extends GridBaseRow>(props: PropsWithC
|
|
|
611
612
|
[gridApiOp, modifyUpdating, selectNextEditableCell],
|
|
612
613
|
);
|
|
613
614
|
|
|
614
|
-
const redrawRows = useMemo(
|
|
615
|
+
const redrawRows: any = useMemo(
|
|
615
616
|
() =>
|
|
616
617
|
debounce((rowNodes?: IRowNode[]) => {
|
|
617
618
|
try {
|
|
618
619
|
gridApi && gridApi.redrawRows(rowNodes ? { rowNodes } : undefined);
|
|
619
620
|
} catch (ex) {
|
|
620
|
-
|
|
621
|
-
if (typeof jest === "undefined") console.error(ex);
|
|
621
|
+
console.error(ex);
|
|
622
622
|
}
|
|
623
623
|
}, 50),
|
|
624
624
|
[gridApi],
|
|
@@ -646,7 +646,7 @@ export const GridContextProvider = <TData extends GridBaseRow>(props: PropsWithC
|
|
|
646
646
|
gridApi?.forEachNodeAfterFilter((rowNode) => {
|
|
647
647
|
arr.push(rowNode.id);
|
|
648
648
|
});
|
|
649
|
-
return arr.join(
|
|
649
|
+
return arr.join('|');
|
|
650
650
|
};
|
|
651
651
|
|
|
652
652
|
if (gridApi) {
|
|
@@ -664,12 +664,12 @@ export const GridContextProvider = <TData extends GridBaseRow>(props: PropsWithC
|
|
|
664
664
|
|
|
665
665
|
const addExternalFilter = (filter: GridFilterExternal<TData>) => {
|
|
666
666
|
externalFilters.current.push(filter);
|
|
667
|
-
onFilterChanged()
|
|
667
|
+
void onFilterChanged();
|
|
668
668
|
};
|
|
669
669
|
|
|
670
670
|
const removeExternalFilter = (filter: GridFilterExternal<TData>) => {
|
|
671
671
|
remove(externalFilters.current, (v) => v === filter);
|
|
672
|
-
onFilterChanged()
|
|
672
|
+
void onFilterChanged();
|
|
673
673
|
};
|
|
674
674
|
|
|
675
675
|
const isExternalFilterPresent = (): boolean => !isEmpty(externalFilters.current);
|
|
@@ -798,10 +798,10 @@ export const GridContextProvider = <TData extends GridBaseRow>(props: PropsWithC
|
|
|
798
798
|
export const downloadCsvUseValueFormattersProcessCellCallback = (params: ProcessCellForExportParams): string => {
|
|
799
799
|
const encodeToString = (value: any): string => {
|
|
800
800
|
// Convert nullish values to blank
|
|
801
|
-
if (value ===
|
|
802
|
-
return
|
|
801
|
+
if (value === '-' || value === '–' || value == null) {
|
|
802
|
+
return '';
|
|
803
803
|
}
|
|
804
|
-
if (typeof value ===
|
|
804
|
+
if (typeof value === 'string') {
|
|
805
805
|
return value;
|
|
806
806
|
}
|
|
807
807
|
return JSON.stringify(value);
|
|
@@ -816,14 +816,14 @@ export const downloadCsvUseValueFormattersProcessCellCallback = (params: Process
|
|
|
816
816
|
const valueFormatter = colDef.valueFormatter;
|
|
817
817
|
// If no valueFormatter then value _must_ be a string
|
|
818
818
|
if (valueFormatter == null) {
|
|
819
|
-
if (params.value != null && typeof params.value !==
|
|
819
|
+
if (params.value != null && typeof params.value !== 'string') {
|
|
820
820
|
console.error(`downloadCsv: valueFormatter missing and getValue is not a string, colId: ${colDef.colId}`);
|
|
821
821
|
}
|
|
822
822
|
return encodeToString(params.value);
|
|
823
823
|
}
|
|
824
824
|
|
|
825
825
|
// We don't have access to registered functions, so we can't call them
|
|
826
|
-
if (typeof valueFormatter !==
|
|
826
|
+
if (typeof valueFormatter !== 'function') {
|
|
827
827
|
console.error(
|
|
828
828
|
`downloadCsv: String type (registered) value formatters are unsupported in downloadCsv, colId: ${colDef.colId}`,
|
|
829
829
|
);
|
|
@@ -832,7 +832,7 @@ export const downloadCsvUseValueFormattersProcessCellCallback = (params: Process
|
|
|
832
832
|
|
|
833
833
|
const result = valueFormatter({ ...params, data: params.node?.data, colDef, node: null });
|
|
834
834
|
// type may not be string due to casting, leave the type check in
|
|
835
|
-
if (params.value != null && typeof result !==
|
|
835
|
+
if (params.value != null && typeof result !== 'string') {
|
|
836
836
|
console.error(`downloadCsv: valueFormatter is returning non string values, colDef:", colId: ${colDef.colId}`);
|
|
837
837
|
}
|
|
838
838
|
// We add an extra encodeToString here just in case valueFormatter is returning non string values
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createContext, RefObject, useContext } from 'react';
|
|
2
2
|
|
|
3
|
-
import { GridBaseRow } from
|
|
3
|
+
import { GridBaseRow } from '../components/Grid';
|
|
4
4
|
|
|
5
5
|
export interface GridPopoverContextType<TData extends GridBaseRow> {
|
|
6
6
|
anchorRef: RefObject<Element>;
|
|
@@ -11,7 +11,10 @@ export interface GridPopoverContextType<TData extends GridBaseRow> {
|
|
|
11
11
|
value: any;
|
|
12
12
|
data: TData;
|
|
13
13
|
selectedRows: TData[];
|
|
14
|
-
updateValue: (
|
|
14
|
+
updateValue: (
|
|
15
|
+
saveFn: (selectedRows: any[]) => Promise<boolean>,
|
|
16
|
+
tabDirection: 1 | 0 | -1,
|
|
17
|
+
) => Promise<boolean> | boolean;
|
|
15
18
|
formatValue: (value: any) => any;
|
|
16
19
|
}
|
|
17
20
|
|
|
@@ -19,13 +22,13 @@ export const GridPopoverContext = createContext<GridPopoverContextType<any>>({
|
|
|
19
22
|
anchorRef: { current: null },
|
|
20
23
|
saving: false,
|
|
21
24
|
setSaving: () => {},
|
|
22
|
-
colId:
|
|
23
|
-
field:
|
|
25
|
+
colId: '',
|
|
26
|
+
field: '',
|
|
24
27
|
value: null,
|
|
25
28
|
data: {} as GridBaseRow,
|
|
26
29
|
selectedRows: [],
|
|
27
|
-
updateValue:
|
|
28
|
-
formatValue: () =>
|
|
30
|
+
updateValue: () => false,
|
|
31
|
+
formatValue: () => '! No gridPopoverContextProvider !',
|
|
29
32
|
});
|
|
30
33
|
|
|
31
34
|
export const useGridPopoverContext = <TData extends GridBaseRow>() =>
|
|
@@ -1,17 +1,19 @@
|
|
|
1
|
-
import { ICellEditorParams } from
|
|
2
|
-
import { sortBy } from
|
|
3
|
-
import { PropsWithChildren, RefObject, useCallback, useContext, useMemo, useRef, useState } from
|
|
1
|
+
import { ICellEditorParams } from 'ag-grid-community';
|
|
2
|
+
import { sortBy } from 'lodash-es';
|
|
3
|
+
import { PropsWithChildren, RefObject, useCallback, useContext, useMemo, useRef, useState } from 'react';
|
|
4
4
|
|
|
5
|
-
import { GridBaseRow } from
|
|
6
|
-
import { GridContext } from
|
|
7
|
-
import { GridPopoverContext } from
|
|
5
|
+
import { GridBaseRow } from '../components/Grid';
|
|
6
|
+
import { GridContext } from './GridContext';
|
|
7
|
+
import { GridPopoverContext } from './GridPopoverContext';
|
|
8
8
|
|
|
9
9
|
interface GridPopoverContextProps {
|
|
10
|
-
props: ICellEditorParams
|
|
10
|
+
props: ICellEditorParams<any, any, any>;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
export const GridPopoverContextProvider = (
|
|
13
|
+
export const GridPopoverContextProvider = (props2: PropsWithChildren<GridPopoverContextProps>) => {
|
|
14
14
|
const { getFilteredSelectedRows, updatingCells } = useContext(GridContext);
|
|
15
|
+
const children = props2.children;
|
|
16
|
+
const props = props2.props;
|
|
15
17
|
const anchorRef = useRef<Element>(props.eGridCell);
|
|
16
18
|
|
|
17
19
|
const hasSaved = useRef(false);
|
|
@@ -27,8 +29,8 @@ export const GridPopoverContextProvider = ({ props, children }: PropsWithChildre
|
|
|
27
29
|
[getFilteredSelectedRows, multiEdit, props.data],
|
|
28
30
|
);
|
|
29
31
|
|
|
30
|
-
const field = props.colDef?.field ??
|
|
31
|
-
const colId = props.colDef?.colId ?? field ??
|
|
32
|
+
const field = props.colDef?.field ?? '';
|
|
33
|
+
const colId = props.colDef?.colId ?? field ?? '';
|
|
32
34
|
|
|
33
35
|
const updateValue = useCallback(
|
|
34
36
|
async (saveFn: (selectedRows: any[]) => Promise<boolean>, tabDirection: 1 | 0 | -1): Promise<boolean> => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createContext } from
|
|
1
|
+
import { createContext } from 'react';
|
|
2
2
|
|
|
3
3
|
export interface GridSubComponentContextType {
|
|
4
4
|
value: any;
|
|
@@ -10,16 +10,17 @@ export interface GridSubComponentContextType {
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
export const GridSubComponentContext = createContext<GridSubComponentContextType>({
|
|
13
|
-
value:
|
|
13
|
+
value: 'GridSubComponentContext value no context',
|
|
14
14
|
data: {},
|
|
15
15
|
setValue: () => {
|
|
16
|
-
console.error(
|
|
16
|
+
console.error('GridSubComponentContext setValue no context');
|
|
17
17
|
},
|
|
18
18
|
setValid: () => {
|
|
19
|
-
console.error(
|
|
19
|
+
console.error('GridSubComponentContext setValid no context');
|
|
20
20
|
},
|
|
21
|
+
// eslint-disable-next-line @typescript-eslint/require-await
|
|
21
22
|
triggerSave: async () => {
|
|
22
|
-
console.error(
|
|
23
|
+
console.error('GridSubComponentContext triggerSave no context');
|
|
23
24
|
},
|
|
24
25
|
context: null,
|
|
25
26
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createContext } from
|
|
1
|
+
import { createContext } from 'react';
|
|
2
2
|
|
|
3
3
|
export type GridUpdatingContextType = {
|
|
4
4
|
checkUpdating: (fields: string | string[], id: number | string) => boolean;
|
|
@@ -13,15 +13,16 @@ export type GridUpdatingContextType = {
|
|
|
13
13
|
|
|
14
14
|
export const GridUpdatingContext = createContext<GridUpdatingContextType>({
|
|
15
15
|
checkUpdating: () => {
|
|
16
|
-
console.error(
|
|
16
|
+
console.error('Missing GridUpdatingContext');
|
|
17
17
|
return false;
|
|
18
18
|
},
|
|
19
19
|
updatingCols: () => {
|
|
20
|
-
console.error(
|
|
20
|
+
console.error('Missing GridUpdatingContext');
|
|
21
21
|
return [];
|
|
22
22
|
},
|
|
23
|
+
// eslint-disable-next-line @typescript-eslint/require-await
|
|
23
24
|
modifyUpdating: async () => {
|
|
24
|
-
console.error(
|
|
25
|
+
console.error('Missing GridUpdatingContext');
|
|
25
26
|
},
|
|
26
27
|
updatedDep: 0,
|
|
27
28
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { castArray, flatten, remove } from
|
|
2
|
-
import { PropsWithChildren, useRef, useState } from
|
|
1
|
+
import { castArray, flatten, remove } from 'lodash-es';
|
|
2
|
+
import { PropsWithChildren, useRef, useState } from 'react';
|
|
3
3
|
|
|
4
|
-
import { GridUpdatingContext } from
|
|
4
|
+
import { GridUpdatingContext } from './GridUpdatingContext';
|
|
5
5
|
|
|
6
6
|
export type GridUpdatingContextStatus = Record<string, (number | string)[] | undefined>;
|
|
7
7
|
|