1- import React , { useState } from "react" ;
1+ import React , { useRef } from "react" ;
22import { useTranslation } from "react-i18next" ;
33import ConfirmModal from "../../shared/ConfirmModal" ;
44import {
@@ -11,7 +11,7 @@ import { useAppDispatch, useAppSelector } from "../../../store";
1111import { deleteTheme , ThemeDetailsType } from "../../../slices/themeSlice" ;
1212import { Tooltip } from "../../shared/Tooltip" ;
1313import ThemeDetails from "./wizard/ThemeDetails" ;
14- import DetailsModal from "../../shared/modals/DetailsModal " ;
14+ import { Modal , ModalHandle } from "../../shared/modals/Modal " ;
1515
1616/**
1717 * This component renders the action cells of themes in the table view
@@ -24,24 +24,24 @@ const ThemesActionsCell = ({
2424 const { t } = useTranslation ( ) ;
2525 const dispatch = useAppDispatch ( ) ;
2626
27- const [ displayDeleteConfirmation , setDeleteConfirmation ] = useState ( false ) ;
28- const [ displayThemeDetails , setThemeDetails ] = useState ( false ) ;
27+ const deleteConfirmationModalRef = useRef < ModalHandle > ( null ) ;
28+ const detailsModalRef = useRef < ModalHandle > ( null ) ;
2929
3030 const user = useAppSelector ( state => getUserInformation ( state ) ) ;
3131
3232 const hideDeleteConfirmation = ( ) => {
33- setDeleteConfirmation ( false ) ;
33+ deleteConfirmationModalRef . current ?. close ?. ( ) ;
3434 } ;
3535
3636 const hideThemeDetails = ( ) => {
37- setThemeDetails ( false ) ;
37+ detailsModalRef . current ?. close ?. ( ) ;
3838 } ;
3939
4040 const showThemeDetails = async ( ) => {
4141 await dispatch ( fetchThemeDetails ( row . id ) ) ;
4242 await dispatch ( fetchUsage ( row . id ) ) ;
4343
44- setThemeDetails ( true ) ;
44+ detailsModalRef . current ?. open ( ) ;
4545 } ;
4646
4747 const deletingTheme = ( id : number ) => {
@@ -60,35 +60,34 @@ const ThemesActionsCell = ({
6060 </ Tooltip >
6161 ) }
6262
63- { displayThemeDetails && (
64- < DetailsModal
65- handleClose = { hideThemeDetails }
66- title = { row . name }
67- prefix = { "CONFIGURATION.THEMES.DETAILS.EDITCAPTION" }
68- >
69- < ThemeDetails close = { hideThemeDetails } />
70- </ DetailsModal >
71- ) }
63+ { /* themes details modal */ }
64+ < Modal
65+ header = { t ( "CONFIGURATION.THEMES.DETAILS.EDITCAPTION" , { name : row . name } ) }
66+ classId = "theme-details-modal"
67+ ref = { detailsModalRef }
68+ >
69+ { /* component that manages tabs of theme details modal*/ }
70+ < ThemeDetails close = { hideThemeDetails } / >
71+ </ Modal >
7272
7373 { /* delete themes */ }
7474 { hasAccess ( "ROLE_UI_THEMES_DELETE" , user ) && (
7575 < Tooltip title = { t ( "CONFIGURATION.THEMES.TABLE.TOOLTIP.DELETE" ) } >
7676 < button
77- onClick = { ( ) => setDeleteConfirmation ( true ) }
77+ onClick = { ( ) => deleteConfirmationModalRef . current ?. open ( ) }
7878 className = "button-like-anchor remove ng-scope ng-isolate-scope"
7979 />
8080 </ Tooltip >
8181 ) }
8282
83- { displayDeleteConfirmation && (
84- < ConfirmModal
85- close = { hideDeleteConfirmation }
86- resourceName = { row . name }
87- resourceId = { row . id }
88- deleteMethod = { deletingTheme }
89- resourceType = "THEME"
90- />
91- ) }
83+ < ConfirmModal
84+ close = { hideDeleteConfirmation }
85+ resourceName = { row . name }
86+ resourceId = { row . id }
87+ deleteMethod = { deletingTheme }
88+ resourceType = "THEME"
89+ modalRef = { deleteConfirmationModalRef }
90+ />
9291 </ >
9392 ) ;
9493} ;
0 commit comments