Skip to content

Commit a3b4e6b

Browse files
fix error
"React does not recognize the `resetTabIndex` & `resetNodeAliases` props on a DOM element."
1 parent da88f3a commit a3b4e6b

File tree

5 files changed

+41
-57
lines changed

5 files changed

+41
-57
lines changed

src/components/spreadsheet-view/add-spreadsheet/add-spreadsheet-button.tsx

Lines changed: 18 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
66
*/
77

8-
import { FC, MouseEvent, useCallback, useState } from 'react';
9-
import { Button, Menu, MenuItem, Theme, Tooltip } from '@mui/material';
8+
import { FC, type FunctionComponent, MouseEvent, useCallback, useState } from 'react';
9+
import { Button, type ButtonProps, Menu, MenuItem, Theme, Tooltip } from '@mui/material';
1010
import AddIcon from '@mui/icons-material/Add';
1111
import { useStateBoolean, UseStateBooleanReturn } from '@gridsuite/commons-ui';
1212
import { FormattedMessage } from 'react-intl';
@@ -15,25 +15,20 @@ import { ResetNodeAliasCallback } from '../hooks/use-node-aliases';
1515
import AddEmptySpreadsheetDialog from './dialogs/add-empty-spreadsheet-dialog';
1616
import AddSpreadsheetFromModelDialog from './dialogs/add-spreadsheet-from-model-dialog';
1717
import AddSpreadsheetsFromCollectionDialog from './dialogs/add-spreadsheets-from-collection-dialog';
18+
import type { DialogComponent } from './types';
1819

19-
interface AddSpreadsheetButtonProps {
20+
export type AddSpreadsheetButtonProps = {
2021
disabled: boolean;
2122
resetTabIndex: (newTablesDefinitions: SpreadsheetTabDefinition[]) => void;
2223
resetNodeAliases: ResetNodeAliasCallback;
23-
}
24+
};
2425

2526
const styles = {
2627
addButton: (theme: Theme) => ({
2728
color: theme.palette.primary.main,
2829
}),
2930
};
3031

31-
type DialogComponent = FC<{
32-
open: UseStateBooleanReturn;
33-
resetTabIndex: (newTablesDefinitions: SpreadsheetTabDefinition[]) => void;
34-
resetNodeAliases: ResetNodeAliasCallback;
35-
}>;
36-
3732
export interface SpreadsheetOption {
3833
id: string;
3934
label: string;
@@ -43,7 +38,7 @@ export interface SpreadsheetOption {
4338
/**
4439
* Constants for spreadsheet creation options with associated dialog components
4540
*/
46-
const NEW_SPREADSHEET_CREATION_OPTIONS: Record<string, SpreadsheetOption> = {
41+
const NEW_SPREADSHEET_CREATION_OPTIONS = {
4742
EMPTY: {
4843
id: 'EMPTY',
4944
label: 'spreadsheet/create_new_spreadsheet/empty_spreadsheet_option',
@@ -59,20 +54,23 @@ const NEW_SPREADSHEET_CREATION_OPTIONS: Record<string, SpreadsheetOption> = {
5954
label: 'spreadsheet/create_new_spreadsheet/apply_collection_option',
6055
dialog: AddSpreadsheetsFromCollectionDialog,
6156
},
62-
};
57+
} as const satisfies Record<string, SpreadsheetOption>;
6358

64-
const AddSpreadsheetButton: React.FC<AddSpreadsheetButtonProps> = ({ disabled, resetTabIndex, resetNodeAliases }) => {
59+
export default function AddSpreadsheetButton({
60+
disabled,
61+
resetTabIndex,
62+
resetNodeAliases,
63+
}: Readonly<AddSpreadsheetButtonProps>) {
6564
const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);
6665
const dialogOpen = useStateBoolean(false);
6766
const [selectedOption, setSelectedOption] = useState<SpreadsheetOption | undefined>();
6867

69-
const handleClick = useCallback((event: MouseEvent<HTMLButtonElement>) => {
70-
setAnchorEl(event.currentTarget);
71-
}, []);
68+
const handleClick = useCallback<NonNullable<ButtonProps['onClick']>>(
69+
(event) => setAnchorEl(event.currentTarget),
70+
[]
71+
);
7272

73-
const handleClose = useCallback(() => {
74-
setAnchorEl(null);
75-
}, []);
73+
const handleClose = useCallback(() => setAnchorEl(null), []);
7674

7775
const handleMenuItemClick = useCallback(
7876
(option: SpreadsheetOption) => {
@@ -101,12 +99,9 @@ const AddSpreadsheetButton: React.FC<AddSpreadsheetButtonProps> = ({ disabled, r
10199
</MenuItem>
102100
))}
103101
</Menu>
104-
105102
{SelectedDialog && (
106103
<SelectedDialog open={dialogOpen} resetTabIndex={resetTabIndex} resetNodeAliases={resetNodeAliases} />
107104
)}
108105
</>
109106
);
110-
};
111-
112-
export default AddSpreadsheetButton;
107+
}

src/components/spreadsheet-view/add-spreadsheet/dialogs/add-empty-spreadsheet-dialog.tsx

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,7 @@
77

88
import { useCallback, useEffect, useMemo } from 'react';
99
import { Grid } from '@mui/material';
10-
import {
11-
CustomFormProvider,
12-
SelectInput,
13-
TextInput,
14-
useSnackMessage,
15-
UseStateBooleanReturn,
16-
} from '@gridsuite/commons-ui';
10+
import { CustomFormProvider, SelectInput, TextInput, useSnackMessage } from '@gridsuite/commons-ui';
1711
import { useForm } from 'react-hook-form';
1812
import { yupResolver } from '@hookform/resolvers/yup';
1913
import { useDispatch, useSelector } from 'react-redux';
@@ -32,10 +26,9 @@ import { addNewSpreadsheet } from './add-spreadsheet-utils';
3226
import { COLUMN_TYPES } from 'components/custom-aggrid/custom-aggrid-header.type';
3327
import { ColumnDefinitionDto, SpreadsheetEquipmentType } from '../../types/spreadsheet.type';
3428
import { v4 as uuid4 } from 'uuid';
29+
import type { DialogComponentProps } from '../types';
3530

36-
interface AddEmptySpreadsheetDialogProps {
37-
open: UseStateBooleanReturn;
38-
}
31+
export type AddEmptySpreadsheetDialogProps = Pick<DialogComponentProps, 'open'>;
3932

4033
const TABLES_OPTIONS = Object.values(SpreadsheetEquipmentType).map(
4134
(elementType) => ({ id: elementType, label: elementType }) as const
@@ -53,7 +46,7 @@ const DEFAULT_ID_COLUMN = {
5346
/**
5447
* Dialog for creating an empty spreadsheet
5548
*/
56-
export default function AddEmptySpreadsheetDialog({ open, ...dialogProps }: Readonly<AddEmptySpreadsheetDialogProps>) {
49+
export default function AddEmptySpreadsheetDialog({ open }: Readonly<AddEmptySpreadsheetDialogProps>) {
5750
const dispatch = useDispatch();
5851
const { snackError } = useSnackMessage();
5952
const studyUuid = useSelector((state: AppState) => state.studyUuid);
@@ -105,7 +98,6 @@ export default function AddEmptySpreadsheetDialog({ open, ...dialogProps }: Read
10598
onSave={onSubmit}
10699
onClear={() => {}}
107100
PaperProps={{ sx: dialogStyles.dialogContent }}
108-
{...dialogProps}
109101
>
110102
<Grid container spacing={2} direction="column" marginTop="auto">
111103
<Grid item xs>

src/components/spreadsheet-view/add-spreadsheet/dialogs/add-spreadsheet-from-model-dialog.tsx

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,38 +12,33 @@ import {
1212
DirectoryItemsInput,
1313
ElementType,
1414
TextInput,
15-
UseStateBooleanReturn,
1615
useSnackMessage,
1716
} from '@gridsuite/commons-ui';
1817
import { useForm, useWatch } from 'react-hook-form';
1918
import { yupResolver } from '@hookform/resolvers/yup';
2019
import { useDispatch, useSelector } from 'react-redux';
2120
import { AppState } from 'redux/reducer';
2221
import {
23-
SPREADSHEET_MODEL,
24-
SPREADSHEET_NAME,
2522
getSpreadsheetFromModelFormSchema,
2623
initialSpreadsheetFromModelForm,
24+
SPREADSHEET_MODEL,
25+
SPREADSHEET_NAME,
2726
} from './add-spreadsheet-form';
2827
import { addNewSpreadsheet } from './add-spreadsheet-utils';
2928
import { getSpreadsheetModel } from 'services/study-config';
3029
import { UUID } from 'crypto';
3130
import { ModificationDialog } from 'components/dialogs/commons/modificationDialog';
3231
import { dialogStyles } from '../styles/styles';
33-
import { ResetNodeAliasCallback } from '../../hooks/use-node-aliases';
32+
import type { DialogComponentProps } from '../types';
3433

35-
interface AddSpreadsheetFromModelDialogProps {
36-
open: UseStateBooleanReturn;
37-
resetNodeAliases: ResetNodeAliasCallback;
38-
}
34+
export type AddSpreadsheetFromModelDialogProps = Pick<DialogComponentProps, 'open' | 'resetNodeAliases'>;
3935

4036
/**
4137
* Dialog for creating a spreadsheet from an existing model
4238
*/
4339
export default function AddSpreadsheetFromModelDialog({
4440
open,
4541
resetNodeAliases,
46-
...dialogProps
4742
}: Readonly<AddSpreadsheetFromModelDialogProps>) {
4843
const dispatch = useDispatch();
4944
const { snackError } = useSnackMessage();
@@ -126,7 +121,6 @@ export default function AddSpreadsheetFromModelDialog({
126121
onSave={onSubmit}
127122
onClear={() => null}
128123
PaperProps={{ sx: dialogStyles.dialogContent }}
129-
{...dialogProps}
130124
>
131125
<Grid container spacing={2} direction="column" marginTop="auto">
132126
<Grid item xs>

src/components/spreadsheet-view/add-spreadsheet/dialogs/add-spreadsheets-from-collection-dialog.tsx

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import {
1313
ElementType,
1414
PopupConfirmationDialog,
1515
RadioInput,
16-
UseStateBooleanReturn,
1716
useSnackMessage,
1817
} from '@gridsuite/commons-ui';
1918
import { useForm } from 'react-hook-form';
@@ -26,8 +25,7 @@ import { initTableDefinitions } from 'redux/actions';
2625
import { UUID } from 'crypto';
2726
import { ModificationDialog } from 'components/dialogs/commons/modificationDialog';
2827
import { dialogStyles } from '../styles/styles';
29-
import { SpreadsheetCollectionDto, SpreadsheetTabDefinition } from 'components/spreadsheet-view/types/spreadsheet.type';
30-
import { ResetNodeAliasCallback } from 'components/spreadsheet-view/hooks/use-node-aliases';
28+
import { SpreadsheetCollectionDto } from 'components/spreadsheet-view/types/spreadsheet.type';
3129
import {
3230
getSpreadsheetCollectionFormSchema,
3331
initialSpreadsheetCollectionForm,
@@ -37,12 +35,7 @@ import {
3735
SpreadsheetCollectionImportMode,
3836
} from './add-spreadsheet-form';
3937
import { processSpreadsheetsCollectionData } from './add-spreadsheet-utils';
40-
41-
interface AddSpreadsheetsFromCollectionDialogProps {
42-
open: UseStateBooleanReturn;
43-
resetTabIndex: (newTablesDefinitions: SpreadsheetTabDefinition[]) => void;
44-
resetNodeAliases: ResetNodeAliasCallback;
45-
}
38+
import type { DialogComponentProps } from '../types';
4639

4740
/**
4841
* Dialog for importing a spreadsheet collection
@@ -51,8 +44,7 @@ export default function AddSpreadsheetsFromCollectionDialog({
5144
open,
5245
resetTabIndex,
5346
resetNodeAliases,
54-
...dialogProps
55-
}: Readonly<AddSpreadsheetsFromCollectionDialogProps>) {
47+
}: Readonly<DialogComponentProps>) {
5648
const dispatch = useDispatch();
5749
const intl = useIntl();
5850
const { snackError } = useSnackMessage();
@@ -153,7 +145,6 @@ export default function AddSpreadsheetsFromCollectionDialog({
153145
onSave={onSubmit}
154146
onClear={() => null}
155147
PaperProps={{ sx: dialogStyles.dialogContent }}
156-
{...dialogProps}
157148
>
158149
<Grid container spacing={2} direction="column">
159150
<Grid item>{updateModeSelectionField}</Grid>

src/components/spreadsheet-view/add-spreadsheet/types.d.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,15 @@
55
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
66
*/
77

8+
import type { ComponentType } from 'react';
9+
import type { UseStateBooleanReturn } from '@gridsuite/commons-ui';
10+
import type { SpreadsheetTabDefinition } from '../types/spreadsheet.type';
11+
import type { ResetNodeAliasCallback } from '../hooks/use-node-aliases';
12+
13+
export type DialogComponentProps = {
14+
open: UseStateBooleanReturn;
15+
resetTabIndex: (newTablesDefinitions: SpreadsheetTabDefinition[]) => void;
16+
resetNodeAliases: ResetNodeAliasCallback;
17+
};
18+
19+
export type DialogComponent = ComponentType<DialogComponentProps>;

0 commit comments

Comments
 (0)