Skip to content

Commit

Permalink
Added loader in UserManagement modal.
Browse files Browse the repository at this point in the history
Signed-off-by: Aryan <aryan1bhokare@gmail.com>
  • Loading branch information
aryan-bhokare committed Feb 19, 2024
1 parent 84b76bd commit 0c5a34e
Show file tree
Hide file tree
Showing 7 changed files with 53 additions and 26 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { FontVariation } from '@harnessio/design-system';
import { Button, ButtonVariation, Container, FormInput, Layout, Text } from '@harnessio/uicore';
import { Button, ButtonVariation, Container, FormInput, Layout, OverlaySpinner, Text } from '@harnessio/uicore';
import React from 'react';
import { Icon } from '@harnessio/icons';
import { Form, Formik } from 'formik';
Expand Down Expand Up @@ -54,6 +54,7 @@ export default function AccountDetailsChangeView(props: AccountDetailsChangeView
}

return (
<OverlaySpinner show={updateDetailsMutationLoading}>
<Layout.Vertical padding="medium" style={{ gap: '1rem' }}>
<Layout.Horizontal flex={{ alignItems: 'center', justifyContent: 'space-between' }}>
<Text font={{ variation: FontVariation.H4 }}>{getString('editName')}</Text>
Expand Down Expand Up @@ -111,5 +112,6 @@ export default function AccountDetailsChangeView(props: AccountDetailsChangeView
</Formik>
</Container>
</Layout.Vertical>
</OverlaySpinner>
);
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { FontVariation } from '@harnessio/design-system';
import { Button, ButtonVariation, Container, FormInput, Layout, Text, useToaster } from '@harnessio/uicore';
import { Button, ButtonVariation, Container, FormInput, Layout, OverlaySpinner, Text, useToaster } from '@harnessio/uicore';
import React from 'react';
import { Icon } from '@harnessio/icons';
import { Form, Formik } from 'formik';
Expand Down Expand Up @@ -64,6 +64,7 @@ export default function AccountPasswordChangeView(props: AccountPasswordChangeVi
}

return (
<OverlaySpinner show={updatePasswordMutationLoading}>
<Layout.Vertical padding="medium" style={{ gap: '1rem' }}>
<Layout.Horizontal flex={{ alignItems: 'center', justifyContent: 'space-between' }}>
<Text font={{ variation: FontVariation.H4 }}>{getString('updatePassword')}</Text>
Expand Down Expand Up @@ -130,5 +131,6 @@ export default function AccountPasswordChangeView(props: AccountPasswordChangeVi
</Formik>
</Container>
</Layout.Vertical>
</OverlaySpinner>
);
}
4 changes: 3 additions & 1 deletion chaoscenter/web/src/views/CreateNewToken/CreateNewToken.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type { UseMutateFunction } from '@tanstack/react-query';
import React from 'react';
import { FontVariation } from '@harnessio/design-system';
import { Layout, Container, FormInput, ButtonVariation, Text, Button } from '@harnessio/uicore';
import { Layout, Container, FormInput, ButtonVariation, Text, Button, OverlaySpinner } from '@harnessio/uicore';
import { Formik, Form } from 'formik';
import { Icon } from '@harnessio/icons';
import * as Yup from 'yup';
Expand Down Expand Up @@ -48,6 +48,7 @@ export default function CreateNewTokenView(props: CreateNewTokenViewProps): Reac
}

return (
<OverlaySpinner show={createNewTokenMutationLoading}>
<Layout.Vertical padding="medium" style={{ gap: '1rem' }}>
<Layout.Horizontal flex={{ alignItems: 'center', justifyContent: 'space-between' }}>
<Text font={{ variation: FontVariation.H4 }}>{getString('createNewToken')}</Text>
Expand Down Expand Up @@ -109,5 +110,6 @@ export default function CreateNewTokenView(props: CreateNewTokenViewProps): Reac
</Formik>
</Container>
</Layout.Vertical>
</OverlaySpinner>
);
}
4 changes: 3 additions & 1 deletion chaoscenter/web/src/views/CreateNewUser/CreateNewUser.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import type { UseMutateFunction } from '@tanstack/react-query';
import React from 'react';
import { FontVariation } from '@harnessio/design-system';
import { Layout, Container, FormInput, ButtonVariation, Text, Button } from '@harnessio/uicore';
import { Layout, Container, FormInput, ButtonVariation, Text, Button, OverlaySpinner} from '@harnessio/uicore';
import { Formik, Form } from 'formik';
import { Icon } from '@harnessio/icons';
import * as Yup from 'yup';
Expand Down Expand Up @@ -46,6 +46,7 @@ export default function CreateNewUserView(props: CreateNewUserViewProps): React.
}

return (
<OverlaySpinner show={createNewUserMutationLoading}>
<Layout.Vertical padding="medium" style={{ gap: '1rem' }}>
<Layout.Horizontal flex={{ alignItems: 'center', justifyContent: 'space-between' }}>
<Text font={{ variation: FontVariation.H4 }}>{getString('createNewUser')}</Text>
Expand Down Expand Up @@ -128,5 +129,6 @@ export default function CreateNewUserView(props: CreateNewUserViewProps): React.
</Formik>
</Container>
</Layout.Vertical>
</OverlaySpinner>
);
}
7 changes: 5 additions & 2 deletions chaoscenter/web/src/views/DeleteApiToken/DeleteApiToken.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type { UseMutateFunction } from '@tanstack/react-query';
import React from 'react';
import { Button, ButtonVariation, Layout, Text } from '@harnessio/uicore';
import { Button, ButtonVariation, Layout, OverlaySpinner, Text } from '@harnessio/uicore';
import { FontVariation } from '@harnessio/design-system';
import { Icon } from '@harnessio/icons';
import type { RemoveApiTokenMutationProps, RemoveApiTokenOkResponse } from '@api/auth';
Expand All @@ -15,13 +15,15 @@ interface DeleteApiTokenViewProps {
unknown
>;
token: string | undefined;
mutationLoading: boolean;
}

export default function DeleteApiTokenView(props: DeleteApiTokenViewProps): React.ReactElement {
const { handleClose, deleteApiTokenMutation, token } = props;
const { handleClose, deleteApiTokenMutation, token, mutationLoading} = props;
const { getString } = useStrings();

return (
<OverlaySpinner show={mutationLoading}>
<Layout.Vertical padding="medium" style={{ gap: '1rem' }}>
<Layout.Horizontal flex={{ alignItems: 'center', justifyContent: 'space-between' }}>
<Text font={{ variation: FontVariation.H4 }}>{getString('delete')}</Text>
Expand All @@ -45,5 +47,6 @@ export default function DeleteApiTokenView(props: DeleteApiTokenViewProps): Reac
<Button variation={ButtonVariation.TERTIARY} text={getString('cancel')} onClick={() => handleClose()} />
</Layout.Horizontal>
</Layout.Vertical>
</OverlaySpinner>
);
}
39 changes: 24 additions & 15 deletions chaoscenter/web/src/views/EnableDisableUser/EnableDisableUser.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React from 'react';
import { Button, ButtonVariation, Layout, Text } from '@harnessio/uicore';
import React, { useState } from 'react';
import { Button, ButtonVariation, Layout, OverlaySpinner, Text } from '@harnessio/uicore';
import { Icon } from '@harnessio/icons';
import { FontVariation } from '@harnessio/design-system';
import type { UseMutateFunction } from '@tanstack/react-query';
Expand All @@ -16,8 +16,28 @@ interface EnableDisableUserViewProps {
export default function EnableDisableUserView(props: EnableDisableUserViewProps): React.ReactElement {
const { handleClose, username, currentState, updateStateMutation } = props;
const { getString } = useStrings();
const [isLoading, setIsLoading] = useState<boolean>(false);

const handleMutation = () => {
setIsLoading(true);
updateStateMutation(
{
body: {
username: username ?? '',
isDeactivate: !currentState
}
},
{
onSuccess: () => {
setIsLoading(false);
handleClose();
}
}
)
}

return (
<OverlaySpinner show={isLoading}>
<Layout.Vertical padding="medium" style={{ gap: '1rem' }}>
<Layout.Horizontal flex={{ alignItems: 'center', justifyContent: 'space-between' }}>
<Text font={{ variation: FontVariation.H4 }}>
Expand All @@ -34,22 +54,11 @@ export default function EnableDisableUserView(props: EnableDisableUserViewProps)
variation={ButtonVariation.PRIMARY}
intent={!currentState ? 'danger' : 'primary'}
text={getString('confirm')}
onClick={() =>
updateStateMutation(
{
body: {
username: username ?? '',
isDeactivate: !currentState
}
},
{
onSuccess: () => handleClose()
}
)
}
onClick={handleMutation}
/>
<Button variation={ButtonVariation.TERTIARY} text={getString('cancel')} onClick={() => handleClose()} />
</Layout.Horizontal>
</Layout.Vertical>
</OverlaySpinner>
);
}
17 changes: 12 additions & 5 deletions chaoscenter/web/src/views/ResetPassword/ResetPassword.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React from 'react';
import React, {useState} from 'react';
import { FontVariation } from '@harnessio/design-system';
import { Layout, Container, FormInput, ButtonVariation, Text, Button } from '@harnessio/uicore';
import { Layout, Container, FormInput, ButtonVariation, Text, Button, OverlaySpinner } from '@harnessio/uicore';
import type { UseMutateFunction } from '@tanstack/react-query';
import { Formik, Form } from 'formik';
import { Icon } from '@harnessio/icons';
Expand All @@ -26,6 +26,7 @@ interface ResetPasswordFormProps {
export default function ResetPasswordView(props: ResetPasswordViewProps): React.ReactElement {
const { handleClose, resetPasswordMutation, username } = props;
const { getString } = useStrings();
const [isLoading, setIsLoading] = useState<boolean>(false);

function isSubmitButtonDisabled(values: ResetPasswordFormProps): boolean {
if (values.password === '' || values.reEnterPassword === '') {
Expand All @@ -45,8 +46,8 @@ export default function ResetPasswordView(props: ResetPasswordViewProps): React.
}

function handleSubmit(values: ResetPasswordFormProps): void {
doesNewPasswordMatch(values) &&
username &&
if (doesNewPasswordMatch(values) && username) {
setIsLoading(true);
resetPasswordMutation(
{
body: {
Expand All @@ -56,12 +57,17 @@ export default function ResetPasswordView(props: ResetPasswordViewProps): React.
}
},
{
onSuccess: () => handleClose()
onSuccess: () => {
setIsLoading(false);
handleClose();
}
}
);
}
}

return (
<OverlaySpinner show={isLoading}>
<Layout.Vertical padding="medium" style={{ gap: '1rem' }}>
<Layout.Horizontal flex={{ alignItems: 'center', justifyContent: 'space-between' }}>
<Text font={{ variation: FontVariation.H4 }}>{getString('resetPassword')}</Text>
Expand Down Expand Up @@ -120,5 +126,6 @@ export default function ResetPasswordView(props: ResetPasswordViewProps): React.
</Formik>
</Container>
</Layout.Vertical>
</OverlaySpinner>
);
}

0 comments on commit 0c5a34e

Please sign in to comment.