diff --git a/ui/src/components/Modals/AddUserModal/AddUserModal.sass b/ui/src/components/Modals/AddUserModal/AddUserModal.sass index 767a0a00e..414bfc33a 100644 --- a/ui/src/components/Modals/AddUserModal/AddUserModal.sass +++ b/ui/src/components/Modals/AddUserModal/AddUserModal.sass @@ -1,5 +1,30 @@ @import '../../../variables.module' +@mixin generate-icon + display: block + text-indent: -9999px + width: 26px + height: 26px + background-repeat: no-repeat + background-size: 26px + margin-right: 10px + + +.generate-link-button + &:disabled + background: #BCC6DD; + .generate-link-button__icon + @include generate-icon + background-image: url('../../assets/copy-disabled.svg') + + &__icon + @include generate-icon + background-image: url('../../assets/copy-enabled.svg') + + + + + .user &__details display: flex; diff --git a/ui/src/components/Modals/AddUserModal/AddUserModal.tsx b/ui/src/components/Modals/AddUserModal/AddUserModal.tsx index acfd95a5c..7b5e24d32 100644 --- a/ui/src/components/Modals/AddUserModal/AddUserModal.tsx +++ b/ui/src/components/Modals/AddUserModal/AddUserModal.tsx @@ -1,10 +1,11 @@ -import { FormControl, InputLabel, MenuItem, Select } from '@material-ui/core'; +import { Button, FormControl, InputLabel, MenuItem, Select } from '@material-ui/core'; import { FC, useEffect, useState } from 'react'; // import Api from '../../../helpers/api'; import { useCommonStyles } from '../../../helpers/commonStyle'; import ConfirmationModal from '../../UI/Modals/ConfirmationModal'; import SelectList from '../../UI/SelectList'; import './AddUserModal.sass'; +import spinner from "../../assets/spinner.svg"; export type UserData = { role:string; @@ -24,12 +25,12 @@ export const AddUserModal: FC = ({isOpen, onCloseModal, userD //const [editUserData, setEditUserData] = useState(userData) const [searchValue, setSearchValue] = useState(""); - //const [userRole,setUserRole] = useState("") const [workspaces, setWorkspaces] = useState({}) const roles = [{key:"1",value:"Admin"}] const classes = useCommonStyles() const [userDataModel, setUserData] = useState(userData as UserData) + const isLoading = false; // useEffect(() => { // setIsOpen(isOpen) @@ -68,20 +69,39 @@ export const AddUserModal: FC = ({isOpen, onCloseModal, userD setUserData(data) } + function isFormValid(): boolean { + return true; + } + + const generateLink = () => { + try { + api.genareteInviteLink(userDataModel) + } catch (e) { + console.error(e); + } + + } + + const modalCustomActions = <> + + ; + return (<> + +

DETAILS

{}}> - {/* - {roles.map((role) => ( - - {role.value} - - ))} - */} User Role setSearchValue(event.target.value)}/>
- +
); }; -export default AddUserModal; diff --git a/ui/src/components/UI/Modals/ConfirmationModal.tsx b/ui/src/components/UI/Modals/ConfirmationModal.tsx index 0e1425e76..75d3b640a 100644 --- a/ui/src/components/UI/Modals/ConfirmationModal.tsx +++ b/ui/src/components/UI/Modals/ConfirmationModal.tsx @@ -22,14 +22,26 @@ interface ConfirmationModalProps { img?: ReactElement; isLoading?: boolean; className?: any; + customActions? : ReactElement } const ConfirmationModal: React.FC = observer(({title, isOpen, onClose, onConfirm, confirmButtonText, closeButtonText, subContent, confirmDisabled = false, isWide, confirmButtonColor, titleColor, img, isLoading,children, - className}) => { + className, customActions}) => { const classes = useCommonStyles(); - const confirmStyle = {width: 100, marginLeft: 20} + const confirmStyle = {width: 100, marginLeft: 20} + + const defualtActions = <> + + return (
@@ -50,15 +62,7 @@ const ConfirmationModal: React.FC = observer(({title, is
- - + {customActions}
) diff --git a/ui/src/components/UserSettings/UserSettings.tsx b/ui/src/components/UserSettings/UserSettings.tsx index e6debaa5f..d3994d310 100644 --- a/ui/src/components/UserSettings/UserSettings.tsx +++ b/ui/src/components/UserSettings/UserSettings.tsx @@ -2,7 +2,7 @@ import "./UserSettings.sass" import {ColsType, FilterableTableAction} from "../UI/FilterableTableAction" // import Api from "../../helpers/api" import { useEffect, useState } from "react"; -import AddUserModal, { UserData } from "../Modals/AddUserModal/AddUserModal"; +import { UserData,AddUserModal } from "../Modals/AddUserModal/AddUserModal"; interface Props { diff --git a/ui/src/components/assets/copy-disabled.svg b/ui/src/components/assets/copy-disabled.svg new file mode 100644 index 000000000..8b59bdb47 --- /dev/null +++ b/ui/src/components/assets/copy-disabled.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/ui/src/components/assets/copy-enabled.svg b/ui/src/components/assets/copy-enabled.svg new file mode 100644 index 000000000..d3c2fbb0c --- /dev/null +++ b/ui/src/components/assets/copy-enabled.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/ui/src/helpers/api.js b/ui/src/helpers/api.js index 8a48105f0..5177d01cd 100644 --- a/ui/src/helpers/api.js +++ b/ui/src/helpers/api.js @@ -53,10 +53,10 @@ export default class Api { return response.data; } - // getRoles = async(filter = "") =>{ - // const response = await this.client.get(`/user/listUsers?usernameFilter=${filter}`); - // return response.data; - // } + genareteInviteLink = async(userData) =>{ + const response = await this.client.post(`/user/createUserAndInvite`,userData); + return response.data; + } getWorkspaces = async() =>{ const response = await this.client.get(``);