1- import type { FunctionComponent } from 'react' ;
21import { useState , useEffect } from 'react' ;
32import { Button , Content , ContentVariants , ButtonVariant } from '@patternfly/react-core' ;
43import { ModalProps , Modal , ModalVariant } from '@patternfly/react-core/deprecated' ;
@@ -18,15 +17,15 @@ export interface ColumnManagementModalColumn {
1817}
1918
2019/** extends ModalProps */
21- export interface ColumnManagementModalProps extends Omit < ModalProps , 'ref' | 'children' > {
20+ export interface ColumnManagementModalProps < T extends ColumnManagementModalColumn = ColumnManagementModalColumn > extends Omit < ModalProps , 'ref' | 'children' > {
2221 /** Flag to show the modal */
2322 isOpen ?: boolean ;
2423 /** Invoked when modal visibility is changed */
2524 onClose ?: ( event : KeyboardEvent | React . MouseEvent ) => void ;
2625 /** Current column state */
27- appliedColumns : ColumnManagementModalColumn [ ] ;
26+ appliedColumns : T [ ] ;
2827 /** Invoked with new column state after save button is clicked */
29- applyColumns : ( newColumns : ColumnManagementModalColumn [ ] ) => void ;
28+ applyColumns : ( newColumns : T [ ] ) => void ;
3029 /* Modal description text */
3130 description ?: string ;
3231 /* Modal title text */
@@ -41,7 +40,7 @@ export interface ColumnManagementModalProps extends Omit<ModalProps, 'ref' | 'ch
4140 resetToDefaultLabel ?: string ;
4241}
4342
44- const ColumnManagementModal : FunctionComponent < ColumnManagementModalProps > = ( {
43+ const ColumnManagementModal = < T extends ColumnManagementModalColumn = ColumnManagementModalColumn > ( {
4544 title = 'Manage columns' ,
4645 description = 'Selected categories will be displayed in the table.' ,
4746 isOpen = false ,
@@ -53,7 +52,7 @@ const ColumnManagementModal: FunctionComponent<ColumnManagementModalProps> = ({
5352 onReset,
5453 resetToDefaultLabel = 'Reset to default' ,
5554 ...props
56- } : ColumnManagementModalProps ) => {
55+ } : ColumnManagementModalProps < T > ) => {
5756 const [ currentColumns , setCurrentColumns ] = useState ( ( ) =>
5857 appliedColumns . map ( ( column ) => ( { ...column , isShown : column . isShown ?? column . isShownByDefault } ) )
5958 ) ;
0 commit comments