@@ -45,7 +50,7 @@ function UsersView(props: Props) {
}
- // disabled={ canAddUsers }
- // content={ `${ !canAddUsers ? (!isAdmin ? PERMISSION_WARNING : LIMIT_WARNING) : 'Add team member' }` }
+ content={ `${ !isAdmin ? PERMISSION_WARNING : (reachedLimit ? LIMIT_WARNING : 'Add team member') }` }
size="tiny"
inverted
position="top left"
@@ -74,4 +78,6 @@ function UsersView(props: Props) {
export default connect(state => ({
account: state.getIn([ 'user', 'account' ]),
isEnterprise: state.getIn([ 'user', 'client', 'edition' ]) === 'ee',
+ limits: state.getIn([ 'user', 'account', 'limits', 'teamMember' ]),
+ // remaining: this.props.account.limits.teamMember.remaining
}))(UsersView);
\ No newline at end of file
diff --git a/frontend/app/components/Client/Users/components/UserForm/UserForm.tsx b/frontend/app/components/Client/Users/components/UserForm/UserForm.tsx
index c34828ec6..25f35097c 100644
--- a/frontend/app/components/Client/Users/components/UserForm/UserForm.tsx
+++ b/frontend/app/components/Client/Users/components/UserForm/UserForm.tsx
@@ -12,9 +12,9 @@ interface Props {
}
function UserForm(props: Props) {
const { isSmtp = false, isEnterprise = false } = props;
- const isSaving = false;
const { hideModal } = useModal();
const { userStore, roleStore } = useStore();
+ const isSaving = useObserver(() => userStore.saving);
const user: any = useObserver(() => userStore.instance);
const roles = useObserver(() => roleStore.list.filter(r => r.isProtected ? user.isSuperAdmin : true).map(r => ({ label: r.name, value: r.roleId })));
@@ -98,7 +98,7 @@ function UserForm(props: Props) {
diff --git a/frontend/app/components/Client/Users/components/UserListItem/UserListItem.tsx b/frontend/app/components/Client/Users/components/UserListItem/UserListItem.tsx
index 3d28e8e37..10f2f2fe0 100644
--- a/frontend/app/components/Client/Users/components/UserListItem/UserListItem.tsx
+++ b/frontend/app/components/Client/Users/components/UserListItem/UserListItem.tsx
@@ -1,24 +1,52 @@
import React from 'react';
-import { Icon } from 'UI';
+import { Icon, CopyButton } from 'UI';
+import { checkForRecent } from 'App/date';
interface Props {
user: any;
editHandler?: any;
+ generateInvite?: any;
+ copyInviteCode?: any;
}
function UserListItem(props: Props) {
- const { user, editHandler = () => {} } = props;
+ const {
+ user,
+ editHandler = () => {},
+ generateInvite = () => {},
+ copyInviteCode = () => {},
+ } = props;
return (
-
{user.name}
+
+ {user.name}
+ {user.isAdmin && Admin}
+ {user.isSuperAdmin && Owner}
+
-
+
{user.roleName}
-
-
+
+ {user.createdAt && checkForRecent(user.createdAt, 'LLL dd, yyyy, hh:mm a')}
+
+ {/* invisible */}
+
+
+ {!user.isJoined && user.invitationLink ? (
+
+ ) :
}
+ {!user.isJoined && user.isExpiredInvite && (
+
+ )}
+
+
);
diff --git a/frontend/app/components/shared/Select/Select.tsx b/frontend/app/components/shared/Select/Select.tsx
index 85418f5fc..307fbb0ea 100644
--- a/frontend/app/components/shared/Select/Select.tsx
+++ b/frontend/app/components/shared/Select/Select.tsx
@@ -39,7 +39,7 @@ export default function({ plain = false, options, isSearchable = false, defaultV
return { ...provided, opacity, transition };
}
}
- const defaultSelected = defaultValue ? options.find(x => x.value === defaultValue) : options[0];
+ const defaultSelected = defaultValue ? options.find(x => x.value === defaultValue) : null;
return (