diff --git a/frontend/packages/console-app/src/actions/hooks/useDeploymentActions.ts b/frontend/packages/console-app/src/actions/hooks/useDeploymentActions.ts index df952300a0f..baab011a98d 100644 --- a/frontend/packages/console-app/src/actions/hooks/useDeploymentActions.ts +++ b/frontend/packages/console-app/src/actions/hooks/useDeploymentActions.ts @@ -16,7 +16,7 @@ import { k8sCreate, K8sModel, } from '@console/internal/module/k8s'; -import { resourceLimitsModal } from '../../components/modals/resource-limits'; +import { LazyResourceLimitsModalOverlay } from '../../components/modals/resource-limits'; import { DeploymentActionCreator, ActionObject } from './types'; const restartRollout = (model: K8sModel | undefined, obj: K8sResourceKind | undefined) => { @@ -171,7 +171,7 @@ export const useDeploymentActions = - resourceLimitsModal({ + launchModal(LazyResourceLimitsModalOverlay, { model: kind, resource, }), diff --git a/frontend/packages/console-app/src/actions/hooks/usePDBActions.ts b/frontend/packages/console-app/src/actions/hooks/usePDBActions.ts index bd3045a587c..eee4b7de7a7 100644 --- a/frontend/packages/console-app/src/actions/hooks/usePDBActions.ts +++ b/frontend/packages/console-app/src/actions/hooks/usePDBActions.ts @@ -2,11 +2,12 @@ import { useMemo } from 'react'; import * as _ from 'lodash'; import { useTranslation } from 'react-i18next'; import { Action } from '@console/dynamic-plugin-sdk'; +import { useOverlay } from '@console/dynamic-plugin-sdk/src/app/modal-support/useOverlay'; import { useDeepCompareMemoize } from '@console/dynamic-plugin-sdk/src/utils/k8s/hooks/useDeepCompareMemoize'; import { useK8sWatchResource } from '@console/internal/components/utils/k8s-watch-hook'; import { asAccessReview } from '@console/internal/components/utils/rbac'; import { K8sPodControllerKind, K8sModel, referenceFor } from '@console/internal/module/k8s'; -import { deletePDBModal } from '../../components/pdb/modals'; +import { LazyDeletePDBModalOverlay } from '../../components/pdb/modals'; import { PodDisruptionBudgetKind } from '../../components/pdb/types'; import { getPDBResource } from '../../components/pdb/utils/get-pdb-resources'; import { PodDisruptionBudgetModel } from '../../models'; @@ -42,6 +43,7 @@ export const usePDBActions = ( const namespace = resource?.metadata?.namespace; const memoizedFilterActions = useDeepCompareMemoize(filterActions); const { t } = useTranslation(); + const launchModal = useOverlay(); const watchedResource = useMemo( () => ({ isList: true, @@ -88,16 +90,15 @@ export const usePDBActions = ( id: 'delete-pdb', label: t('console-app~Remove PodDisruptionBudget'), insertBefore: 'edit-resource-limits', - cta: () => { - deletePDBModal({ + cta: () => + launchModal(LazyDeletePDBModalOverlay, { workloadName: resource.metadata.name, pdb: matchedPDB, - }); - }, + }), accessReview: asAccessReview(kindObj, resource, 'delete'), }), }; - }, [loaded, kindObj, resource, matchedPDB, t]); + }, [loaded, kindObj, resource, matchedPDB, t, launchModal]); const actions = useMemo(() => { if (!loaded || !kindObj || !resource) return []; diff --git a/frontend/packages/console-app/src/components/modals/resource-limits/ResourceLimitsModalLauncher.tsx b/frontend/packages/console-app/src/components/modals/resource-limits/ResourceLimitsModalLauncher.tsx index 4349768d61c..2c06a352c9d 100644 --- a/frontend/packages/console-app/src/components/modals/resource-limits/ResourceLimitsModalLauncher.tsx +++ b/frontend/packages/console-app/src/components/modals/resource-limits/ResourceLimitsModalLauncher.tsx @@ -4,7 +4,8 @@ import { TFunction } from 'i18next'; import { useTranslation } from 'react-i18next'; import * as yup from 'yup'; import { limitsValidationSchema } from '@console/dev-console/src/components/import/validation-schema'; -import { createModalLauncher, ModalComponentProps } from '@console/internal/components/factory'; +import { OverlayComponent } from '@console/dynamic-plugin-sdk/src/app/modal-support/OverlayProvider'; +import { ModalComponentProps, ModalWrapper } from '@console/internal/components/factory'; import { K8sKind, k8sPatch, K8sResourceKind } from '@console/internal/module/k8s'; import { getLimitsDataFromResource, getResourceLimitsData } from '@console/shared/src'; import ResourceLimitsModal from './ResourceLimitsModal'; @@ -60,6 +61,10 @@ const ResourceLimitsModalLauncher: FC = (props ); }; -export const resourceLimitsModal = createModalLauncher( - (props: ResourceLimitsModalLauncherProps) => , +export const ResourceLimitsModalOverlay: OverlayComponent = ( + props, +) => ( + + + ); diff --git a/frontend/packages/console-app/src/components/modals/resource-limits/index.ts b/frontend/packages/console-app/src/components/modals/resource-limits/index.ts index 6329d442d18..3c77873e4f4 100644 --- a/frontend/packages/console-app/src/components/modals/resource-limits/index.ts +++ b/frontend/packages/console-app/src/components/modals/resource-limits/index.ts @@ -1,4 +1,10 @@ -export const resourceLimitsModal = (props) => - import( - './ResourceLimitsModalLauncher' /* webpackChunkName: "resource-limits-modal" */ - ).then((m) => m.resourceLimitsModal(props)); +import { lazy } from 'react'; + +// Lazy-loaded OverlayComponent for Resource Limits Modal +export const LazyResourceLimitsModalOverlay = lazy(() => + import('./ResourceLimitsModalLauncher' /* webpackChunkName: "resource-limits-modal" */).then( + (m) => ({ + default: m.ResourceLimitsModalOverlay, + }), + ), +); diff --git a/frontend/packages/console-app/src/components/nodes/menu-actions.tsx b/frontend/packages/console-app/src/components/nodes/menu-actions.tsx index c8683b9cd01..61164e17328 100644 --- a/frontend/packages/console-app/src/components/nodes/menu-actions.tsx +++ b/frontend/packages/console-app/src/components/nodes/menu-actions.tsx @@ -2,6 +2,7 @@ import { useMemo } from 'react'; import { useTranslation } from 'react-i18next'; import { useCommonResourceActions } from '@console/app/src/actions//hooks/useCommonResourceActions'; import { Action } from '@console/dynamic-plugin-sdk'; +import { useOverlay } from '@console/dynamic-plugin-sdk/src/app/modal-support/useOverlay'; import { useK8sModel } from '@console/dynamic-plugin-sdk/src/lib-core'; import { k8sUpdateResource } from '@console/dynamic-plugin-sdk/src/utils/k8s'; import { asAccessReview } from '@console/internal/components/utils/rbac'; @@ -14,7 +15,7 @@ import { } from '@console/internal/module/k8s'; import { isNodeUnschedulable } from '@console/shared/src/selectors/node'; import { makeNodeSchedulable } from '../../k8s/requests/nodes'; -import { createConfigureUnschedulableModal } from './modals'; +import { LazyConfigureUnschedulableModalOverlay } from './modals'; const updateCSR = (csr: CertificateSigningRequestKind, type: 'Approved' | 'Denied') => { const approvedCSR = { @@ -47,6 +48,7 @@ export const denyCSR = (csr: CertificateSigningRequestKind) => updateCSR(csr, 'D export const useNodeActions: ExtensionHook = (obj) => { const [kindObj, inFlight] = useK8sModel(referenceFor(obj)); const { t } = useTranslation(); + const launchModal = useOverlay(); const deleteMessage = useMemo( () => (

@@ -71,14 +73,14 @@ export const useNodeActions: ExtensionHook = (obj) => { actions.push({ id: 'mark-as-unschedulable', label: t('console-app~Mark as unschedulable'), - cta: () => createConfigureUnschedulableModal({ resource: obj }), + cta: () => launchModal(LazyConfigureUnschedulableModalOverlay, { resource: obj }), accessReview: asAccessReview(kindObj, obj, 'patch'), }); } actions.push(...commonActions); return actions; - }, [kindObj, obj, t, commonActions]); + }, [kindObj, obj, t, commonActions, launchModal]); return [nodeActions, !inFlight, undefined]; }; diff --git a/frontend/packages/console-app/src/components/nodes/modals/ConfigureUnschedulableModal.tsx b/frontend/packages/console-app/src/components/nodes/modals/ConfigureUnschedulableModal.tsx index d9716ee353b..9235117454d 100644 --- a/frontend/packages/console-app/src/components/nodes/modals/ConfigureUnschedulableModal.tsx +++ b/frontend/packages/console-app/src/components/nodes/modals/ConfigureUnschedulableModal.tsx @@ -1,10 +1,12 @@ import type { FC } from 'react'; import { useTranslation } from 'react-i18next'; +import { OverlayComponent } from '@console/dynamic-plugin-sdk/src/app/modal-support/OverlayProvider'; import { ModalTitle, ModalBody, ModalSubmitFooter, - createModalLauncher, + ModalComponentProps, + ModalWrapper, } from '@console/internal/components/factory/modal'; import { NodeKind } from '@console/internal/module/k8s'; import { usePromiseHandler } from '@console/shared/src/hooks/promise-handler'; @@ -12,9 +14,7 @@ import { makeNodeUnschedulable } from '../../../k8s/requests/nodes'; type ConfigureUnschedulableModalProps = { resource: NodeKind; - cancel?: () => void; - close?: () => void; -}; +} & ModalComponentProps; const ConfigureUnschedulableModal: FC = ({ resource, @@ -48,4 +48,14 @@ const ConfigureUnschedulableModal: FC = ({ ); }; -export default createModalLauncher(ConfigureUnschedulableModal); +export const ConfigureUnschedulableModalOverlay: OverlayComponent = ( + props, +) => ( + + + +); diff --git a/frontend/packages/console-app/src/components/nodes/modals/index.ts b/frontend/packages/console-app/src/components/nodes/modals/index.ts index 222850138c8..0761643d531 100644 --- a/frontend/packages/console-app/src/components/nodes/modals/index.ts +++ b/frontend/packages/console-app/src/components/nodes/modals/index.ts @@ -1,6 +1,10 @@ -import { NodeKind } from '@console/internal/module/k8s'; +import { lazy } from 'react'; -export const createConfigureUnschedulableModal = (props: { resource: NodeKind }) => +// Lazy-loaded OverlayComponent for Configure Unschedulable Modal +export const LazyConfigureUnschedulableModalOverlay = lazy(() => import( './ConfigureUnschedulableModal' /* webpackChunkName: "configure-unschedulable-modal" */ - ).then((m) => m.default(props)); + ).then((m) => ({ + default: m.ConfigureUnschedulableModalOverlay, + })), +); diff --git a/frontend/packages/console-app/src/components/pdb/modals/DeletePDBModal.tsx b/frontend/packages/console-app/src/components/pdb/modals/DeletePDBModal.tsx index 18a7121fb07..b5aa86ac1db 100644 --- a/frontend/packages/console-app/src/components/pdb/modals/DeletePDBModal.tsx +++ b/frontend/packages/console-app/src/components/pdb/modals/DeletePDBModal.tsx @@ -4,12 +4,13 @@ import { Form } from '@patternfly/react-core'; import { ExclamationTriangleIcon } from '@patternfly/react-icons/dist/esm/icons/exclamation-triangle-icon'; import { t_global_icon_color_status_warning_default as warningColor } from '@patternfly/react-tokens'; import { useTranslation, Trans } from 'react-i18next'; +import { OverlayComponent } from '@console/dynamic-plugin-sdk/src/app/modal-support/OverlayProvider'; import { - createModalLauncher, ModalBody, ModalComponentProps, ModalSubmitFooter, ModalTitle, + ModalWrapper, } from '@console/internal/components/factory/modal'; import { LoadingInline } from '@console/internal/components/utils/status-box'; import { k8sKill } from '@console/internal/module/k8s'; @@ -72,7 +73,11 @@ const DeletePDBModal: FC = ({ close, pdb, workloadName }) = ); }; -export const deletePDBModal = createModalLauncher(DeletePDBModal); +export const DeletePDBModalOverlay: OverlayComponent = (props) => ( + + + +); export type DeletePDBModalProps = ModalComponentProps & { pdb: PodDisruptionBudgetKind; diff --git a/frontend/packages/console-app/src/components/pdb/modals/index.ts b/frontend/packages/console-app/src/components/pdb/modals/index.ts index 6643d2aa108..6df80630ec0 100644 --- a/frontend/packages/console-app/src/components/pdb/modals/index.ts +++ b/frontend/packages/console-app/src/components/pdb/modals/index.ts @@ -1,6 +1,8 @@ -import { DeletePDBModalProps } from './DeletePDBModal'; +import { lazy } from 'react'; -export const deletePDBModal = (props: DeletePDBModalProps) => - import('./DeletePDBModal' /* webpackChunkName: "shared-modals" */).then((m) => - m.deletePDBModal(props), - ); +// Lazy-loaded OverlayComponent for Delete PDB Modal +export const LazyDeletePDBModalOverlay = lazy(() => + import('./DeletePDBModal' /* webpackChunkName: "delete-pdb-modal" */).then((m) => ({ + default: m.DeletePDBModalOverlay, + })), +);