Skip to content

Commit 99e9cf8

Browse files
committed
feat: convert workspaces assignment modal into sistent component
Signed-off-by: Amit Amrutiya <amitamrutiya2210@gmail.com>
1 parent 188aaf4 commit 99e9cf8

7 files changed

Lines changed: 99 additions & 2 deletions

File tree

src/custom/CatalogDesignTable/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { colViews, createDesignColumns } from './columnConfig';
44
import {
55
createDesignsColumnsConfig,
66
colViews as designColumnsColViews
7-
} from './DesignColumnConfig';
7+
} from './DesignTableColumnConfig';
88
export { TableVisibilityControl } from './TableVisibilityControl';
99
export { ViewSwitch } from './ViewSwitch';
1010
export {

src/custom/TransferModal/TransferList/TransferList.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ export interface TransferListProps {
4646
leftPermission: boolean;
4747
}
4848

49-
interface ListItemType {
49+
export interface ListItemType {
5050
id: number;
5151
name: string;
5252
kind: string | undefined;
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
import { Modal, ModalBody, ModalButtonPrimary, ModalButtonSecondary, ModalFooter } from '../Modal';
2+
import { TransferList } from '../TransferModal/TransferList';
3+
import { ListItemType } from '../TransferModal/TransferList/TransferList';
4+
import { ModalActionDiv } from './styles';
5+
6+
interface AssignmentModalProps {
7+
open: boolean;
8+
onClose: (e?: React.MouseEvent) => void;
9+
title: string;
10+
headerIcon: JSX.Element;
11+
name: string;
12+
assignableData: ListItemType[];
13+
handleAssignedData: (data: ListItemType[]) => void;
14+
originalAssignedData: ListItemType[];
15+
emptyStateIcon: JSX.Element;
16+
handleAssignablePage: () => void;
17+
handleAssignedPage: () => void;
18+
originalLeftCount: number;
19+
originalRightCount: number;
20+
onAssign: () => void;
21+
disableTransfer: boolean;
22+
isAssignDisabled: boolean;
23+
isRemoveDisabled: boolean;
24+
helpText: string;
25+
}
26+
27+
const AssignmentModal: React.FC<AssignmentModalProps> = ({
28+
open,
29+
onClose,
30+
title,
31+
headerIcon,
32+
name,
33+
assignableData,
34+
handleAssignedData,
35+
originalAssignedData,
36+
emptyStateIcon,
37+
handleAssignablePage,
38+
handleAssignedPage,
39+
originalLeftCount,
40+
originalRightCount,
41+
onAssign,
42+
disableTransfer,
43+
isAssignDisabled,
44+
isRemoveDisabled,
45+
helpText
46+
}) => {
47+
return (
48+
<Modal
49+
open={open}
50+
closeModal={onClose}
51+
title={title}
52+
headerIcon={headerIcon}
53+
maxWidth="md"
54+
reactNode={undefined}
55+
>
56+
<ModalBody>
57+
<TransferList
58+
name={name}
59+
assignableData={assignableData}
60+
assignedData={handleAssignedData}
61+
originalAssignedData={originalAssignedData}
62+
emptyStateIconLeft={emptyStateIcon}
63+
emtyStateMessageLeft={`No ${name.toLowerCase()} available`}
64+
emptyStateIconRight={emptyStateIcon}
65+
emtyStateMessageRight={`No ${name.toLowerCase()} assigned`}
66+
assignablePage={handleAssignablePage}
67+
assignedPage={handleAssignedPage}
68+
originalLeftCount={originalLeftCount}
69+
originalRightCount={originalRightCount}
70+
leftPermission={isAssignDisabled}
71+
rightPermission={isRemoveDisabled}
72+
transferComponentType={''}
73+
/>
74+
</ModalBody>
75+
<ModalFooter variant="filled" helpText={helpText}>
76+
<ModalActionDiv>
77+
<ModalButtonSecondary onClick={onClose}>Cancel</ModalButtonSecondary>
78+
<ModalButtonPrimary onClick={onAssign} disabled={disableTransfer}>
79+
Save
80+
</ModalButtonPrimary>
81+
</ModalActionDiv>
82+
</ModalFooter>
83+
</Modal>
84+
);
85+
};
86+
87+
export default AssignmentModal;

src/custom/Workspaces/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import AssignmentModal from './AssignmentModal';
2+
3+
export { AssignmentModal };

src/custom/Workspaces/styles.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { styled } from '../../theme';
2+
3+
export const ModalActionDiv = styled('div')({
4+
display: 'flex',
5+
gap: '1rem'
6+
});

src/custom/Workspaces/types.ts

Whitespace-only changes.

src/custom/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,4 +136,5 @@ export type {
136136
export * from './CatalogDesignTable';
137137
export * from './CatalogDetail';
138138
export * from './Dialog';
139+
export * from './Workspaces';
139140
export * from './permissions';

0 commit comments

Comments
 (0)