From a2b137677c53df9cfb142c52928a2261c9c71bfe Mon Sep 17 00:00:00 2001 From: Oscar Reyes Date: Fri, 24 Feb 2023 09:30:07 -0600 Subject: [PATCH] feature(frontend): updating empty state UX/UI (#2044) --- web/src/components/Empty/Empty.styled.ts | 2 + web/src/components/Empty/Empty.tsx | 6 ++- .../components/TestSpecForm/TestSpecForm.tsx | 38 +++++++++---------- .../pages/Environments/EnvironmentList.tsx | 11 +++++- web/src/pages/Home/HomeFilters.tsx | 5 ++- web/src/pages/Home/Resources.tsx | 14 ++++++- 6 files changed, 50 insertions(+), 26 deletions(-) diff --git a/web/src/components/Empty/Empty.styled.ts b/web/src/components/Empty/Empty.styled.ts index e2551f3e25..c967cda8f5 100644 --- a/web/src/components/Empty/Empty.styled.ts +++ b/web/src/components/Empty/Empty.styled.ts @@ -11,4 +11,6 @@ export const Content = styled.div` export const Icon = styled.img` margin-bottom: 25px; + height: 115px; + width: 115px; `; diff --git a/web/src/components/Empty/Empty.tsx b/web/src/components/Empty/Empty.tsx index d46eacbb31..8a28e412d5 100644 --- a/web/src/components/Empty/Empty.tsx +++ b/web/src/components/Empty/Empty.tsx @@ -4,16 +4,18 @@ import icon from 'assets/empty.svg'; import * as S from './Empty.styled'; interface IProps { - message?: string; + message?: React.ReactNode; + title?: string; } -const Empty = ({message = ''}: IProps) => ( +const Empty = ({message = '', title = ''}: IProps) => (
+ {title} {message}
diff --git a/web/src/components/TestSpecForm/TestSpecForm.tsx b/web/src/components/TestSpecForm/TestSpecForm.tsx index 5b2e37f929..0834bd9d1e 100644 --- a/web/src/components/TestSpecForm/TestSpecForm.tsx +++ b/web/src/components/TestSpecForm/TestSpecForm.tsx @@ -110,26 +110,24 @@ const TestSpecForm = ({ - {!isEditing && ( - { - onClickPrevSelector(form.getFieldValue('selector')); - onClearSelectorSuggestions(); - form.setFieldsValue({ - selector: query, - }); - }} - onClickPrevSelector={query => { - onClickPrevSelector(''); - onClearSelectorSuggestions(); - form.setFieldsValue({ - selector: query, - }); - }} - prevSelector={prevSelector} - selectorSuggestions={selectorSuggestions} - /> - )} + { + onClickPrevSelector(form.getFieldValue('selector')); + onClearSelectorSuggestions(); + form.setFieldsValue({ + selector: query, + }); + }} + onClickPrevSelector={query => { + onClickPrevSelector(''); + onClearSelectorSuggestions(); + form.setFieldsValue({ + selector: query, + }); + }} + prevSelector={prevSelector} + selectorSuggestions={selectorSuggestions} + /> diff --git a/web/src/pages/Environments/EnvironmentList.tsx b/web/src/pages/Environments/EnvironmentList.tsx index 856a760b79..d2711e14db 100644 --- a/web/src/pages/Environments/EnvironmentList.tsx +++ b/web/src/pages/Environments/EnvironmentList.tsx @@ -4,6 +4,7 @@ import usePagination from 'hooks/usePagination'; import Loading from 'pages/Home/Loading'; import {useGetEnvironmentsQuery} from 'redux/apis/TraceTest.api'; import Environment from 'models/Environment.model'; +import {ENVIRONMENTS_DOCUMENTATION_URL} from 'constants/Common.constants'; import * as S from './Environment.styled'; import {EnvironmentCard} from './EnvironmentCard'; @@ -19,7 +20,15 @@ const EnvironmentList = ({onDelete, onEdit, query}: IProps) => { return ( + + Use the Create button to create your first environment. Learn more about test or transactions{' '} + here. + + } + /> } loadingComponent={} {...pagination} diff --git a/web/src/pages/Home/HomeFilters.tsx b/web/src/pages/Home/HomeFilters.tsx index 85e7d33625..2b5dd0bbb0 100644 --- a/web/src/pages/Home/HomeFilters.tsx +++ b/web/src/pages/Home/HomeFilters.tsx @@ -7,9 +7,10 @@ import * as S from './Home.styled'; interface IProps { onSearch(search: string): void; onSortBy(sortBy: SortBy, sortDirection: SortDirection): void; + isEmpty: boolean; } -const HomeFilters = ({onSearch, onSortBy}: IProps) => { +const HomeFilters = ({onSearch, onSortBy, isEmpty}: IProps) => { const handleSort = useCallback( (newSortBy: string) => { const { @@ -25,7 +26,7 @@ const HomeFilters = ({onSearch, onSortBy}: IProps) => { Sort by: - {sortOptions.map(({value, label}) => ( {label} diff --git a/web/src/pages/Home/Resources.tsx b/web/src/pages/Home/Resources.tsx index b82331c277..cc25a8db6f 100644 --- a/web/src/pages/Home/Resources.tsx +++ b/web/src/pages/Home/Resources.tsx @@ -11,6 +11,7 @@ import useTestCrud from 'providers/Test/hooks/useTestCrud'; import {useCallback, useState} from 'react'; import {useNavigate} from 'react-router-dom'; import {useGetResourcesQuery} from 'redux/apis/TraceTest.api'; +import {ADD_TEST_SPECS_DOCUMENTATION_URL} from 'constants/Common.constants'; import HomeAnalyticsService from 'services/Analytics/HomeAnalytics.service'; import {ResourceType} from 'types/Resource.type'; import useTransactionCrud from 'providers/Transaction/hooks/useTransactionCrud'; @@ -68,6 +69,7 @@ const Resources = () => { setParameters({sortBy, sortDirection})} + isEmpty={pagination.list?.length === 0} /> setIsCreateTransactionOpen(true)} @@ -77,7 +79,17 @@ const Resources = () => { emptyComponent={ - + + Use the Create button to create your first test. Learn more about test or transactions{' '} + + here. + + + } + /> } loadingComponent={} {...pagination}