Skip to content

Commit aa8131b

Browse files
darkeriossssezr-ondrej
authored andcommitted
fix(RHINENG-11369): CreateGroupModal returns to previous modal
1 parent d76abbf commit aa8131b

10 files changed

Lines changed: 53 additions & 50 deletions

File tree

src/Routes/Devices/AddDeviceModal.js

Lines changed: 41 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React from 'react';
1+
import React, { useState } from 'react';
22
import PropTypes from 'prop-types';
33
import validatorTypes from '@data-driven-forms/react-form-renderer/validator-types';
44
import componentTypes from '@data-driven-forms/react-form-renderer/component-types';
@@ -14,6 +14,7 @@ import { Button, Text } from '@patternfly/react-core';
1414
import useInventoryGroups from '../../hooks/useInventoryGroups';
1515
import { useFeatureFlags } from '../../utils';
1616
import { FEATURE_INVENTORY_WORKSPACES_RENAME } from '../../constants/features';
17+
import CreateGroupModal from '../Groups/CreateGroupModal';
1718

1819
const CreateGroupButton = ({ closeModal, workspaceRename }) => (
1920
<>
@@ -61,13 +62,13 @@ const createSchema = (deviceIds, workspaceRename) => ({
6162
const AddDeviceModal = ({
6263
isModalOpen,
6364
setIsModalOpen,
64-
setIsCreateGroupModalOpen,
6565
reloadData,
6666
deviceIds,
6767
}) => {
6868
const dispatch = useDispatch();
6969

7070
const [inventoryGroupsEnabled] = useInventoryGroups(false);
71+
const [isCreateGroupModalOpen, setIsCreateGroupModalOpen] = useState(false);
7172
const useWorkspacesRename = useFeatureFlags(
7273
FEATURE_INVENTORY_WORKSPACES_RENAME
7374
);
@@ -98,33 +99,46 @@ const AddDeviceModal = ({
9899
apiWithToast(dispatch, addDevicesToGroupFunc, statusMessages);
99100
};
100101
return (
101-
<Modal
102-
isOpen={isModalOpen}
103-
closeModal={() => setIsModalOpen(false)}
104-
title={`Add to ${
105-
inventoryGroupsEnabled && useWorkspacesRename ? 'workspace' : 'group'
106-
}`}
107-
submitLabel="Add"
108-
additionalMappers={{
109-
'search-input': {
110-
component: SearchInputApi,
111-
},
112-
'create-group-btn': {
113-
component: CreateGroupButton,
114-
closeModal: () => {
115-
setIsCreateGroupModalOpen(true);
116-
setIsModalOpen(false);
102+
<>
103+
<Modal
104+
isOpen={isModalOpen && !isCreateGroupModalOpen}
105+
closeModal={() => setIsModalOpen(false)}
106+
title={`Add to ${
107+
inventoryGroupsEnabled && useWorkspacesRename ? 'workspace' : 'group'
108+
}`}
109+
submitLabel="Add"
110+
additionalMappers={{
111+
'search-input': {
112+
component: SearchInputApi,
113+
},
114+
'create-group-btn': {
115+
component: CreateGroupButton,
116+
closeModal: () => {
117+
setIsCreateGroupModalOpen(true);
118+
},
119+
workspaceRename: inventoryGroupsEnabled && useWorkspacesRename,
117120
},
118-
workspaceRename: inventoryGroupsEnabled && useWorkspacesRename,
119-
},
120-
}}
121-
schema={createSchema(
122-
deviceIds,
123-
inventoryGroupsEnabled && useWorkspacesRename
121+
}}
122+
schema={createSchema(
123+
deviceIds,
124+
inventoryGroupsEnabled && useWorkspacesRename
125+
)}
126+
onSubmit={handleAddDevices}
127+
reloadData={reloadData}
128+
/>
129+
{isCreateGroupModalOpen && (
130+
<CreateGroupModal
131+
isModalOpen={isCreateGroupModalOpen}
132+
setIsModalOpen={setIsCreateGroupModalOpen}
133+
reloadData={reloadData}
134+
deviceIds={deviceIds}
135+
// hasHostModal makes sure the host modal is opened
136+
// after this modal is closed
137+
hasHostModal
138+
setIsHostModalOpen={setIsModalOpen}
139+
/>
124140
)}
125-
onSubmit={handleAddDevices}
126-
reloadData={reloadData}
127-
/>
141+
</>
128142
);
129143
};
130144

@@ -133,7 +147,6 @@ export default AddDeviceModal;
133147
AddDeviceModal.propTypes = {
134148
isModalOpen: PropTypes.bool,
135149
setIsModalOpen: PropTypes.func,
136-
setIsCreateGroupModalOpen: PropTypes.func,
137150
reloadData: PropTypes.func,
138151
deviceIds: PropTypes.array,
139152
};

src/Routes/Devices/Inventory.js

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import useChrome from '@redhat-cloud-services/frontend-components/useChrome';
77
import DeviceTable from './DeviceTable';
88
import AddDeviceModal from './AddDeviceModal';
99
import RemoveDeviceModal from './RemoveDeviceModal';
10-
import CreateGroupModal from '../Groups/CreateGroupModal';
1110
import useApi from '../../hooks/useApi';
1211
import { getInventory } from '../../api/devices';
1312
import { useHistory, useLocation } from 'react-router-dom';
@@ -71,7 +70,6 @@ const Inventory = ({
7170
const [checkedDeviceIds, setCheckedDeviceIds] = useState([]);
7271
const [isRowSelected, setIsRowSelected] = useState(false);
7372
const [hasModalSubmitted, setHasModalSubmitted] = useState(false);
74-
const [isCreateGroupModalOpen, setIsCreateGroupModalOpen] = useState(false);
7573
const dispatch = useDispatch();
7674

7775
const [updateModal, setUpdateModal] = useState({
@@ -368,15 +366,6 @@ const Inventory = ({
368366
<AddDeviceModal
369367
isModalOpen={isAddDeviceModalOpen}
370368
setIsModalOpen={setIsAddDeviceModalOpen}
371-
setIsCreateGroupModalOpen={setIsCreateGroupModalOpen}
372-
reloadData={reloadData}
373-
deviceIds={isRowSelected ? deviceId : checkedDeviceIds}
374-
/>
375-
)}
376-
{isCreateGroupModalOpen && (
377-
<CreateGroupModal
378-
isModalOpen={isCreateGroupModalOpen}
379-
setIsModalOpen={setIsCreateGroupModalOpen}
380369
reloadData={reloadData}
381370
deviceIds={isRowSelected ? deviceId : checkedDeviceIds}
382371
/>

src/Routes/Groups/CreateGroupModal.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ const CreateGroupModal = ({
7575
setIsModalOpen,
7676
deviceIds,
7777
reloadData,
78+
hasHostModal = false,
79+
setIsHostModalOpen,
7880
}) => {
7981
const dispatch = useDispatch();
8082

@@ -131,10 +133,15 @@ const CreateGroupModal = ({
131133
apiWithToast(dispatch, addDevicesToGroupFunc, statusMessages);
132134
};
133135

136+
const onClose = () => {
137+
setIsModalOpen(false);
138+
hasHostModal && setIsHostModalOpen(true);
139+
};
140+
134141
return (
135142
<Modal
136143
isOpen={isModalOpen}
137-
closeModal={() => setIsModalOpen(false)}
144+
closeModal={onClose}
138145
title={`Create ${
139146
inventoryGroupsEnabled && useWorkspacesRename ? 'workspace' : 'group'
140147
}`}
@@ -156,4 +163,6 @@ CreateGroupModal.propTypes = {
156163
setIsModalOpen: PropTypes.func,
157164
reloadData: PropTypes.func,
158165
deviceIds: PropTypes.array,
166+
hasHostModal: PropTypes.bool,
167+
setIsHostModalOpen: PropTypes.func,
159168
};

src/Routes/ImageManagerDetail/__snapshots__/ImagePackagesTab.test.js.snap

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ exports[`ImagePackagesTab renders correctly 1`] = `
88
data-ouia-safe="true"
99
data-testid="toolbar-header-testid"
1010
id="toolbar-header"
11-
style="padding: 0px;"
1211
>
1312
<div
1413
class="pf-v5-c-toolbar__content"

src/Routes/ImageManagerDetail/__snapshots__/ImageVersionsTab.test.js.snap

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ exports[`ImageVersionsTab renders correctly 1`] = `
88
data-ouia-safe="true"
99
data-testid="toolbar-header-testid"
1010
id="toolbar-header"
11-
style="padding: 0px;"
1211
>
1312
<div
1413
class="pf-v5-c-toolbar__content"

src/Routes/Repositories/__snapshots__/RepositoryTable.test.js.snap

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ exports[`RepositoryTable renders correctly 1`] = `
88
data-ouia-safe="true"
99
data-testid="toolbar-header-testid"
1010
id="toolbar-header"
11-
style="padding: 0px;"
1211
>
1312
<div
1413
class="pf-v5-c-toolbar__content"

src/components/Modal.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ RepoModal.propTypes = {
7272
additionalMappers: PropTypes.object,
7373
titleIconVariant: PropTypes.any,
7474
validatorMapper: PropTypes.object,
75+
onCancel: PropTypes.func,
7576
};
7677

7778
export default RepoModal;

src/components/general-table/ToolbarHeader.js

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,7 @@ const ToolbarHeader = ({
4444
kebabItems,
4545
}) => {
4646
return (
47-
<Toolbar
48-
style={{ padding: '0' }}
49-
id="toolbar-header"
50-
data-testid="toolbar-header-testid"
51-
>
47+
<Toolbar id="toolbar-header" data-testid="toolbar-header-testid">
5248
<ToolbarContent>
5349
<FilterControls
5450
filters={filters}

src/components/general-table/__snapshots__/GeneralTable.test.js.snap

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ exports[`General table should render correctly 1`] = `
88
data-ouia-safe="true"
99
data-testid="toolbar-header-testid"
1010
id="toolbar-header"
11-
style="padding: 0px;"
1211
>
1312
<div
1413
class="pf-v5-c-toolbar__content"

src/components/general-table/__snapshots__/ToolbarHeader.test.js.snap

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ exports[`Toolbar Header should render correctly 1`] = `
88
data-ouia-safe="true"
99
data-testid="toolbar-header-testid"
1010
id="toolbar-header"
11-
style="padding: 0px;"
1211
>
1312
<div
1413
class="pf-v5-c-toolbar__content"

0 commit comments

Comments
 (0)