Skip to content

Commit c4f8ee0

Browse files
Merge pull request #15939 from rhamilto/CONSOLE-5012-2
CONSOLE-5012: Migrate modals to overlay pattern
2 parents a637798 + 1664f88 commit c4f8ee0

File tree

10 files changed

+111
-97
lines changed

10 files changed

+111
-97
lines changed

frontend/packages/console-app/src/actions/hooks/useDeploymentActions.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { Action } from '@console/dynamic-plugin-sdk';
44
import { useOverlay } from '@console/dynamic-plugin-sdk/src/app/modal-support/useOverlay';
55
import { useDeepCompareMemoize } from '@console/dynamic-plugin-sdk/src/utils/k8s/hooks/useDeepCompareMemoize';
66
import { k8sPatchResource } from '@console/dynamic-plugin-sdk/src/utils/k8s/k8s-resource';
7-
import { configureUpdateStrategyModal } from '@console/internal/components/modals';
7+
import { LazyConfigureUpdateStrategyModalOverlay } from '@console/internal/components/modals';
88
import { ErrorModal } from '@console/internal/components/modals/error-modal';
99
import { asAccessReview } from '@console/internal/components/utils/rbac';
1010
import { resourceObjPath } from '@console/internal/components/utils/resource-link';
@@ -107,7 +107,7 @@ export const useDeploymentActions = <T extends readonly DeploymentActionCreator[
107107
[DeploymentActionCreator.UpdateStrategy]: (): Action => ({
108108
id: 'edit-update-strategy',
109109
label: t('console-app~Edit update strategy'),
110-
cta: () => configureUpdateStrategyModal({ deployment: resource }),
110+
cta: () => launchModal(LazyConfigureUpdateStrategyModalOverlay, { deployment: resource }),
111111
accessReview: {
112112
group: kind?.apiGroup,
113113
resource: kind?.plural,

frontend/public/components/edit-yaml.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import {
3131
} from '@console/dynamic-plugin-sdk';
3232
import { useResolvedExtensions } from '@console/dynamic-plugin-sdk/src/api/useResolvedExtensions';
3333
import { connectToFlags, WithFlagsProps } from '../reducers/connectToFlags';
34-
import { managedResourceSaveModal } from './modals';
34+
import { LazyManagedResourceSaveModalOverlay } from './modals';
3535
import ReplaceCodeModal from './modals/replace-code-modal';
3636
import { checkAccess } from './utils/rbac';
3737
import { Firehose } from './utils/firehose';
@@ -638,8 +638,7 @@ const EditYAMLInner: FC<EditYAMLInnerProps> = (props) => {
638638
}
639639

640640
if (owner) {
641-
managedResourceSaveModal({
642-
kind: obj.kind,
641+
launchModal(LazyManagedResourceSaveModalOverlay, {
643642
resource: obj,
644643
onSubmit: () => updateYAML(obj),
645644
owner,
@@ -648,7 +647,7 @@ const EditYAMLInner: FC<EditYAMLInnerProps> = (props) => {
648647
}
649648
}
650649
updateYAML(obj);
651-
}, [create, owner, t, updateYAML, validate, onSave, props.obj, editorMounted]);
650+
}, [create, owner, t, updateYAML, validate, onSave, props.obj, editorMounted, launchModal]);
652651

653652
const save = () => {
654653
setErrors([]);

frontend/public/components/modals/configure-cluster-upstream-modal.tsx

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,9 @@ import {
2020
ModalComponentProps,
2121
ModalSubmitFooter,
2222
ModalTitle,
23-
createModalLauncher,
23+
ModalWrapper,
2424
} from '../factory/modal';
25+
import { OverlayComponent } from '@console/dynamic-plugin-sdk/src/app/modal-support/OverlayProvider';
2526
import { ExternalLink } from '@console/shared/src/components/links/ExternalLink';
2627
import {
2728
documentationURLs,
@@ -30,7 +31,6 @@ import {
3031
isUpstream,
3132
} from '../utils/documentation';
3233
import { useTranslation } from 'react-i18next';
33-
import { TFunction } from 'i18next';
3434
import { CLUSTER_VERSION_DEFAULT_UPSTREAM_SERVER_URL_PLACEHOLDER } from '@console/shared/src/constants';
3535
import { usePromiseHandler } from '@console/shared/src/hooks/promise-handler';
3636

@@ -166,9 +166,20 @@ export const ConfigureClusterUpstreamModal = (props: ConfigureClusterUpstreamMod
166166
);
167167
};
168168

169-
export const configureClusterUpstreamModal = createModalLauncher(ConfigureClusterUpstreamModal);
169+
export const ConfigureClusterUpstreamModalOverlay: OverlayComponent<ConfigureClusterUpstreamModalProps> = (
170+
props,
171+
) => {
172+
return (
173+
<ModalWrapper blocking onClose={props.closeOverlay}>
174+
<ConfigureClusterUpstreamModal
175+
{...props}
176+
cancel={props.closeOverlay}
177+
close={props.closeOverlay}
178+
/>
179+
</ModalWrapper>
180+
);
181+
};
170182

171183
export type ConfigureClusterUpstreamModalProps = {
172184
cv: ClusterVersionKind;
173-
t: TFunction;
174185
} & ModalComponentProps;

frontend/public/components/modals/configure-ns-pull-secret-modal.tsx

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,15 @@ import { useTranslation } from 'react-i18next';
1616
import type { FC, ChangeEvent, FormEvent } from 'react';
1717
import { CONST } from '@console/shared';
1818
import { usePromiseHandler } from '@console/shared/src/hooks/promise-handler';
19+
import { OverlayComponent } from '@console/dynamic-plugin-sdk/src/app/modal-support/OverlayProvider';
1920
import { k8sPatchByName, k8sCreate, K8sResourceKind } from '../../module/k8s';
2021
import { SecretModel, ServiceAccountModel } from '../../models';
2122
import { useState, useCallback } from 'react';
2223
import {
23-
createModalLauncher,
2424
ModalTitle,
2525
ModalBody,
2626
ModalSubmitFooter,
27+
ModalWrapper,
2728
ModalComponentProps,
2829
} from '../factory/modal';
2930
import { ResourceIcon } from '../utils/resource-icon';
@@ -313,4 +314,16 @@ const ConfigureNamespacePullSecret: FC<ConfigureNamespacePullSecretProps> = (pro
313314
);
314315
};
315316

316-
export const configureNamespacePullSecretModal = createModalLauncher(ConfigureNamespacePullSecret);
317+
export const ConfigureNamespacePullSecretModalOverlay: OverlayComponent<ConfigureNamespacePullSecretProps> = (
318+
props,
319+
) => {
320+
return (
321+
<ModalWrapper blocking onClose={props.closeOverlay}>
322+
<ConfigureNamespacePullSecret
323+
{...props}
324+
cancel={props.closeOverlay}
325+
close={props.closeOverlay}
326+
/>
327+
</ModalWrapper>
328+
);
329+
};

frontend/public/components/modals/configure-update-strategy-modal.tsx

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,16 @@ import {
1515
Tooltip,
1616
} from '@patternfly/react-core';
1717
import { useTranslation } from 'react-i18next';
18-
18+
import { OverlayComponent } from '@console/dynamic-plugin-sdk/src/app/modal-support/OverlayProvider';
1919
import { k8sPatch, Patch, DeploymentUpdateStrategy, K8sResourceKind } from '../../module/k8s';
2020
import { DeploymentModel } from '../../models';
21-
import { createModalLauncher, ModalTitle, ModalBody, ModalSubmitFooter } from '../factory/modal';
21+
import {
22+
ModalTitle,
23+
ModalBody,
24+
ModalSubmitFooter,
25+
ModalWrapper,
26+
ModalComponentProps,
27+
} from '../factory/modal';
2228
import { usePromiseHandler } from '@console/shared/src/hooks/promise-handler';
2329

2430
export const getNumberOrPercent = (value) => {
@@ -216,7 +222,19 @@ export const ConfigureUpdateStrategyModal = ({
216222
);
217223
};
218224

219-
export const configureUpdateStrategyModal = createModalLauncher(ConfigureUpdateStrategyModal);
225+
export const ConfigureUpdateStrategyModalOverlay: OverlayComponent<ConfigureUpdateStrategyModalProps> = (
226+
props,
227+
) => {
228+
return (
229+
<ModalWrapper blocking onClose={props.closeOverlay}>
230+
<ConfigureUpdateStrategyModal
231+
{...props}
232+
cancel={props.closeOverlay}
233+
close={props.closeOverlay}
234+
/>
235+
</ModalWrapper>
236+
);
237+
};
220238

221239
export type ConfigureUpdateStrategyProps = {
222240
showDescription?: boolean;
@@ -232,8 +250,6 @@ export type ConfigureUpdateStrategyProps = {
232250

233251
export type ConfigureUpdateStrategyModalProps = {
234252
deployment: K8sResourceKind;
235-
cancel?: () => void;
236-
close?: () => void;
237-
};
253+
} & ModalComponentProps;
238254

239255
ConfigureUpdateStrategy.displayName = 'ConfigureUpdateStrategy';

frontend/public/components/modals/index.ts

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,14 @@ export const confirmModal = (props) =>
2121
export const errorModal = (props) =>
2222
import('./error-modal' /* webpackChunkName: "error-modal" */).then((m) => m.errorModal(props));
2323

24-
export const configureNamespacePullSecretModal = (props) =>
24+
// Lazy-loaded OverlayComponent for Configure Namespace Pull Secret Modal
25+
export const LazyConfigureNamespacePullSecretModalOverlay = lazy(() =>
2526
import(
2627
'./configure-ns-pull-secret-modal' /* webpackChunkName: "configure-ns-pull-secret-modal" */
27-
).then((m) => m.configureNamespacePullSecretModal(props));
28+
).then((m) => ({
29+
default: m.ConfigureNamespacePullSecretModalOverlay,
30+
})),
31+
);
2832

2933
export const labelsModalLauncher = (props) =>
3034
import('./labels-modal' /* webpackChunkName: "labels-modal" */).then((m) =>
@@ -41,10 +45,14 @@ export const rollbackModal = (props) =>
4145
m.rollbackModal(props),
4246
);
4347

44-
export const configureUpdateStrategyModal = (props) =>
48+
// Lazy-loaded OverlayComponent for Configure Update Strategy Modal
49+
export const LazyConfigureUpdateStrategyModalOverlay = lazy(() =>
4550
import(
4651
'./configure-update-strategy-modal' /* webpackChunkName: "configure-update-strategy-modal" */
47-
).then((m) => m.configureUpdateStrategyModal(props));
52+
).then((m) => ({
53+
default: m.ConfigureUpdateStrategyModalOverlay,
54+
})),
55+
);
4856

4957
export const annotationsModalLauncher = (props) =>
5058
import('./tags' /* webpackChunkName: "tags" */).then((m) => m.annotationsModalLauncher(props));
@@ -100,10 +108,14 @@ export const LazyClonePVCModalOverlay = lazy(() =>
100108
).then((m) => ({ default: m.ClonePVCModalOverlay })),
101109
);
102110

103-
export const configureClusterUpstreamModal = (props) =>
111+
// Lazy-loaded OverlayComponent for Configure Cluster Upstream Modal
112+
export const LazyConfigureClusterUpstreamModalOverlay = lazy(() =>
104113
import(
105114
'./configure-cluster-upstream-modal' /* webpackChunkName: "configure-cluster-upstream-modal" */
106-
).then((m) => m.configureClusterUpstreamModal(props));
115+
).then((m) => ({
116+
default: m.ConfigureClusterUpstreamModalOverlay,
117+
})),
118+
);
107119

108120
export const createAlertRoutingModal = (props) =>
109121
import('./alert-routing-modal' /* webpackChunkName: "alert-routing-modal" */).then((m) =>
@@ -115,19 +127,18 @@ export const createColumnManagementModal = (props) =>
115127
m.createColumnManagementModal(props),
116128
);
117129

118-
export const removeUserModal = (props) =>
119-
import('./remove-user-modal' /* webpackChunkName: "remove-user-modal" */).then((m) =>
120-
m.removeUserModal(props),
121-
);
122-
123130
// Lazy-loaded OverlayComponent for Restore PVC Modal
124131
export const LazyRestorePVCModalOverlay = lazy(() =>
125132
import(
126133
'@console/app/src/components/modals/restore-pvc/restore-pvc-modal' /* webpackChunkName: "restore-pvc-modal" */
127134
).then((m) => ({ default: m.RestorePVCModalOverlay })),
128135
);
129136

130-
export const managedResourceSaveModal = (props) =>
137+
// Lazy-loaded OverlayComponent for Managed Resource Save Modal
138+
export const LazyManagedResourceSaveModalOverlay = lazy(() =>
131139
import(
132140
'./managed-resource-save-modal' /* webpackChunkName: "managed-resource-save-modal" */
133-
).then((m) => m.managedResourceSaveModal(props));
141+
).then((m) => ({
142+
default: m.ManagedResourceSaveModalOverlay,
143+
})),
144+
);

frontend/public/components/modals/managed-resource-save-modal.tsx

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
11
import type { FC } from 'react';
22
import { Trans, useTranslation } from 'react-i18next';
33

4-
import { createModalLauncher, ModalTitle, ModalBody, ModalSubmitFooter } from '../factory/modal';
4+
import {
5+
ModalTitle,
6+
ModalBody,
7+
ModalSubmitFooter,
8+
ModalComponentProps,
9+
ModalWrapper,
10+
} from '../factory/modal';
511
import { referenceForOwnerRef, K8sResourceCommon, OwnerReference } from '../../module/k8s/';
612
import { YellowExclamationTriangleIcon } from '@console/shared/src/components/status/icons';
13+
import { OverlayComponent } from '@console/dynamic-plugin-sdk/src/app/modal-support/OverlayProvider';
714

815
import { ResourceLink } from '../utils/resource-link';
916

@@ -39,11 +46,18 @@ const ManagedResourceSaveModal: FC<ManagedResourceSaveModalProps> = (props) => {
3946
);
4047
};
4148

42-
export const managedResourceSaveModal = createModalLauncher(ManagedResourceSaveModal);
49+
export const ManagedResourceSaveModalOverlay: OverlayComponent<ManagedResourceSaveModalProps> = (
50+
props,
51+
) => {
52+
return (
53+
<ModalWrapper blocking onClose={props.closeOverlay}>
54+
<ManagedResourceSaveModal {...props} close={props.closeOverlay} />
55+
</ModalWrapper>
56+
);
57+
};
4358

4459
type ManagedResourceSaveModalProps = {
4560
onSubmit: () => void;
46-
close: () => void;
4761
resource: K8sResourceCommon;
4862
owner: OwnerReference;
49-
};
63+
} & ModalComponentProps;

frontend/public/components/modals/remove-user-modal.tsx

Lines changed: 0 additions & 58 deletions
This file was deleted.

frontend/public/components/namespace.jsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import { DASH } from '@console/shared/src/constants/ui';
4141
import { ByteDataTypes } from '@console/shared/src/graph-helper/data-utils';
4242
import * as k8sActions from '@console/dynamic-plugin-sdk/src/app/k8s/actions/k8s';
4343
import { useActivePerspective } from '@console/dynamic-plugin-sdk';
44+
import { useOverlay } from '@console/dynamic-plugin-sdk/src/app/modal-support/useOverlay';
4445
import PaneBody from '@console/shared/src/components/layout/PaneBody';
4546
import {
4647
ConsoleLinkModel,
@@ -71,7 +72,7 @@ import {
7172
import { navFactory } from './utils/horizontal-nav';
7273
import { useAccessReview } from './utils/rbac';
7374
import { Timestamp } from '@console/shared/src/components/datetime/Timestamp';
74-
import { configureNamespacePullSecretModal } from './modals';
75+
import { LazyConfigureNamespacePullSecretModalOverlay } from './modals';
7576
import { RoleBindingsPage } from './RBAC';
7677
import { Bar } from './graphs/bar';
7778
import { Area } from './graphs/area';
@@ -856,6 +857,7 @@ export const PullSecret = (props) => {
856857
const [error, setError] = useState(false);
857858
const { t } = useTranslation();
858859
const { namespace, canViewSecrets } = props;
860+
const launchModal = useOverlay();
859861

860862
useEffect(() => {
861863
k8sGet(ServiceAccountModel, 'default', namespace.metadata.name, {})
@@ -873,7 +875,11 @@ export const PullSecret = (props) => {
873875
});
874876
}, [namespace.metadata.name]);
875877

876-
const modal = () => configureNamespacePullSecretModal({ namespace, pullSecret: undefined });
878+
const modal = () =>
879+
launchModal(LazyConfigureNamespacePullSecretModalOverlay, {
880+
namespace,
881+
pullSecret: undefined,
882+
});
877883

878884
const secrets = () => {
879885
if (error) {

0 commit comments

Comments
 (0)