diff --git a/packages/webapp/src/containers/Dialogs/InviteUserDialog/InviteUserForm.tsx b/packages/webapp/src/containers/Dialogs/InviteUserDialog/InviteUserForm.tsx index 4132d39af..8deab1349 100644 --- a/packages/webapp/src/containers/Dialogs/InviteUserDialog/InviteUserForm.tsx +++ b/packages/webapp/src/containers/Dialogs/InviteUserDialog/InviteUserForm.tsx @@ -16,6 +16,11 @@ import { transformApiErrors } from './utils'; import { compose, objectKeysTransform } from '@/utils'; +const initialValues = { + email: '', + role_id: '' +} + function InviteUserForm({ // #withDialogActions closeDialog, @@ -23,7 +28,8 @@ function InviteUserForm({ const { dialogName, isEditMode, inviteUserMutate, userId } = useInviteUserFormContext(); - const initialValues = { + const initialFormValues = { + ...initialValues, status: 1, ...(isEditMode && pick( @@ -66,7 +72,7 @@ function InviteUserForm({ return ( diff --git a/packages/webapp/src/containers/Dialogs/InviteUserDialog/InviteUserFormContent.tsx b/packages/webapp/src/containers/Dialogs/InviteUserDialog/InviteUserFormContent.tsx index 33bb67de7..a4867a99b 100644 --- a/packages/webapp/src/containers/Dialogs/InviteUserDialog/InviteUserFormContent.tsx +++ b/packages/webapp/src/containers/Dialogs/InviteUserDialog/InviteUserFormContent.tsx @@ -6,6 +6,8 @@ import { ListSelect, FieldRequiredHint, FormattedMessage as T, + FFormGroup, + FInputGroup, } from '@/components'; import { CLASSES } from '@/constants/classes'; import classNames from 'classnames'; @@ -32,19 +34,13 @@ function InviteUserFormContent({

{/* ----------- Email ----------- */} - - {({ field, meta: { error, touched } }) => ( - } - labelInfo={} - className={classNames('form-group--email', CLASSES.FILL)} - intent={inputIntent({ error, touched })} - helperText={} - > - - - )} - + } + labelInfo={} + > + + {/* ----------- Role name ----------- */} {({ form, field: { value }, meta: { error, touched } }) => ( @@ -78,7 +74,13 @@ function InviteUserFormContent({ - diff --git a/packages/webapp/src/containers/Dialogs/UserFormDialog/UserFormContent.tsx b/packages/webapp/src/containers/Dialogs/UserFormDialog/UserFormContent.tsx index 54f3af717..d1c4ca3f8 100644 --- a/packages/webapp/src/containers/Dialogs/UserFormDialog/UserFormContent.tsx +++ b/packages/webapp/src/containers/Dialogs/UserFormDialog/UserFormContent.tsx @@ -41,17 +41,29 @@ function UserFormContent({ {/* ----------- Email ----------- */} - }> + } + labelInfo={} + > {/* ----------- First name ----------- */} - }> + } + labelInfo={} + > {/* ----------- Last name ----------- */} - }> + } + labelInfo={} + > @@ -94,6 +106,7 @@ function UserFormContent({ type="submit" disabled={isSubmitting} loading={isSubmitting} + style={{ minWidth: '85px' }} > diff --git a/packages/webapp/src/containers/Preferences/Currencies/components.tsx b/packages/webapp/src/containers/Preferences/Currencies/components.tsx index 50602c13c..c7c9679af 100644 --- a/packages/webapp/src/containers/Preferences/Currencies/components.tsx +++ b/packages/webapp/src/containers/Preferences/Currencies/components.tsx @@ -1,6 +1,7 @@ // @ts-nocheck import React, { useMemo } from 'react'; import intl from 'react-intl-universal'; +import styled from 'styled-components'; import { Menu, Popover, @@ -9,6 +10,7 @@ import { MenuItem, MenuDivider, Intent, + Tag, } from '@blueprintjs/core'; import { Icon } from '@/components'; import { safeCallback } from '@/utils'; @@ -52,12 +54,25 @@ export const ActionsCell = (props) => { ); }; +export const CurrencyNameAccessor = (value) => { + return ( + + {value.currency_name} {value.is_base_currency && Base Currency} + + ); +}; + +const CurrencyNameRoot = styled.div` + display: flex; + gap: 8px; +`; + export function useCurrenciesTableColumns() { return useMemo( () => [ { Header: intl.get('currency_name'), - accessor: 'currency_name', + accessor: CurrencyNameAccessor, width: 150, }, { diff --git a/packages/webapp/src/containers/Preferences/Users/UsersDataTable.tsx b/packages/webapp/src/containers/Preferences/Users/UsersDataTable.tsx index d9482d774..1c023888b 100644 --- a/packages/webapp/src/containers/Preferences/Users/UsersDataTable.tsx +++ b/packages/webapp/src/containers/Preferences/Users/UsersDataTable.tsx @@ -22,6 +22,14 @@ function UsersDataTable({ // #withAlertActions openAlert, }) { + const { mutateAsync: resendInviation } = useResendInvitation(); + + // Users list columns. + const columns = useUsersListColumns(); + + // Users list context. + const { users, isUsersLoading, isUsersFetching } = useUsersListContext(); + // Handle edit user action. const handleEditUserAction = useCallback( (user) => { @@ -50,9 +58,6 @@ function UsersDataTable({ }, [openAlert], ); - - const { mutateAsync: resendInviation } = useResendInvitation(); - const handleResendInvitation = useCallback((user) => { resendInviation(user.id) .then(() => { @@ -71,17 +76,12 @@ function UsersDataTable({ AppToaster.show({ message: 'This person was recently invited. No need to invite them again just yet.', - intent: Intent.DANGER, + intent: Intent.WARNING, }); } }, ); }); - // Users list columns. - const columns = useUsersListColumns(); - - // Users list context. - const { users, isUsersLoading, isUsersFetching } = useUsersListContext(); return ( { { id: 'role_name', Header: intl.get('users.column.role_name'), - accessor: 'role.name', + accessor: 'role_name', width: 120, }, - // { - // id: 'phone_number', - // Header: intl.get('phone_number'), - // accessor: 'phone_number', - // width: 120, - // }, { id: 'status', Header: intl.get('status'), diff --git a/packages/webapp/src/lang/en/index.json b/packages/webapp/src/lang/en/index.json index 8a4dc1411..2c77bbd0e 100644 --- a/packages/webapp/src/lang/en/index.json +++ b/packages/webapp/src/lang/en/index.json @@ -2228,5 +2228,8 @@ "project_billable_entries.dialog.show": "Show", "project_billable_entries.alert.there_is_no_billable_entries": "There is no billable entries for that project.", "project_billable_entries.billable_type": "Billable {value}", - "add_billable_entries": "Add Billable Entries" + "add_billable_entries": "Add Billable Entries", + + "invite_user.label.email": "Email", + "invite_user.label.role_name": "Role name" } \ No newline at end of file