UI feedbacks (#13684)

* fix: minor ui feedbacks

* fix: feedbacks

* fix: css on explore

* fix: domain cypress

* fix: profile picture alignment issues
This commit is contained in:
karanh37 2023-10-23 22:41:45 +05:30 committed by GitHub
parent 954b223927
commit 21a3b14c28
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
27 changed files with 107 additions and 37 deletions

View File

@ -132,6 +132,10 @@ export const updateAssets = (domainObj) => {
cy.get('[data-testid="domain-link"]').should('contain', domainObj.name); cy.get('[data-testid="domain-link"]').should('contain', domainObj.name);
cy.get('[data-testid="app-bar-item-domain"]')
.should('be.visible')
.click({ force: true });
goToAssetsTab(domainObj); goToAssetsTab(domainObj);
cy.get('.assets-data-container [data-testid="entity-header-display-name"]') cy.get('.assets-data-container [data-testid="entity-header-display-name"]')
@ -147,7 +151,7 @@ export const removeAssets = (domainObj) => {
verifyResponseStatusCode('@assetTab', 200); verifyResponseStatusCode('@assetTab', 200);
interceptURL('GET', '/api/v1/domain*', 'domains'); interceptURL('GET', '/api/v1/domain*', 'domains');
interceptURL('PATCH', '/api/v1/table/*', 'patchDomain'); interceptURL('PATCH', '/api/v1/tables/*', 'patchDomain');
cy.get('[data-testid="entity-header-display-name"]') cy.get('[data-testid="entity-header-display-name"]')
.contains(entity.term) .contains(entity.term)
@ -160,6 +164,10 @@ export const removeAssets = (domainObj) => {
cy.get('[data-testid="remove-owner"]').click(); cy.get('[data-testid="remove-owner"]').click();
verifyResponseStatusCode('@patchDomain', 200); verifyResponseStatusCode('@patchDomain', 200);
cy.get('[data-testid="app-bar-item-domain"]')
.should('be.visible')
.click({ force: true });
goToAssetsTab(domainObj); goToAssetsTab(domainObj);
cy.contains('Adding a new Asset is easy, just give it a spin!').should( cy.contains('Adding a new Asset is easy, just give it a spin!').should(
'be.visible' 'be.visible'

View File

@ -57,7 +57,7 @@ describe('Domain page should work properly', () => {
updateDomainDetails(DOMAIN_1); updateDomainDetails(DOMAIN_1);
}); });
it.skip('Assets Tab should work properly', () => { it('Assets Tab should work properly', () => {
updateAssets(DOMAIN_1); updateAssets(DOMAIN_1);
}); });

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 997 B

View File

@ -289,7 +289,7 @@ const DataProductsDetailsPage = ({
entityType: t('label.data-product'), entityType: t('label.data-product'),
} }
)} )}
icon={<DeleteIcon color={DE_ACTIVE_COLOR} width="18px" />} icon={<DeleteIcon color={DE_ACTIVE_COLOR} width="14px" />}
id="delete-button" id="delete-button"
name={t('label.delete')} name={t('label.delete')}
/> />

View File

@ -65,6 +65,7 @@ function DomainExperts({
id={expert.id} id={expert.id}
name={expert.name ?? ''} name={expert.name ?? ''}
textClass="text-xs" textClass="text-xs"
type="circle"
width="20" width="20"
/> />
<Link to={getUserPath(expert.name ?? '')}> <Link to={getUserPath(expert.name ?? '')}>

View File

@ -91,9 +91,7 @@ function GlossaryTermSummary({
<Typography.Text <Typography.Text
className="text-grey-body" className="text-grey-body"
data-testid="no-reviewer-header"> data-testid="no-reviewer-header">
{t('label.no-entity', { {t('label.no-reviewer')}
entity: t('label.children-lowercase'),
})}
</Typography.Text> </Typography.Text>
)} )}
</Col> </Col>

View File

@ -68,6 +68,7 @@
.custom-menu.ant-menu-root.ant-menu-inline { .custom-menu.ant-menu-root.ant-menu-inline {
.ant-menu-item { .ant-menu-item {
height: 40px; height: 40px;
width: 100%;
} }
} }
} }

View File

@ -117,6 +117,7 @@ const GlossaryDetailsRightPanel = ({
id={owner?.id || ''} id={owner?.id || ''}
name={owner?.name ?? ''} name={owner?.name ?? ''}
textClass="text-xs" textClass="text-xs"
type="circle"
width="20" width="20"
/> />
<Link <Link

View File

@ -73,6 +73,7 @@ function GlossaryReviewers({
id={reviewer.id} id={reviewer.id}
name={reviewer.name ?? ''} name={reviewer.name ?? ''}
textClass="text-xs" textClass="text-xs"
type="circle"
width="20" width="20"
/> />
<Link to={getUserPath(reviewer.name ?? '')}> <Link to={getUserPath(reviewer.name ?? '')}>

View File

@ -255,7 +255,7 @@ const TagsContainerV2 = ({
: t('label.request-tag-plural') : t('label.request-tag-plural')
}> }>
<IconRequest <IconRequest
className="cursor-pointer" className="cursor-pointer align-middle"
data-testid="request-entity-tags" data-testid="request-entity-tags"
height={14} height={14}
name="request-tags" name="request-tags"
@ -276,7 +276,7 @@ const TagsContainerV2 = ({
entity: t('label.conversation'), entity: t('label.conversation'),
})}> })}>
<IconComments <IconComments
className="cursor-pointer" className="cursor-pointer align-middle"
data-testid="tag-thread" data-testid="tag-thread"
height={14} height={14}
name="comments" name="comments"
@ -306,7 +306,7 @@ const TagsContainerV2 = ({
{!isEmpty(tags?.[tagType]) && !isEditTags && ( {!isEmpty(tags?.[tagType]) && !isEditTags && (
<Col> <Col>
<EditIcon <EditIcon
className="cursor-pointer" className="cursor-pointer align-middle"
color={DE_ACTIVE_COLOR} color={DE_ACTIVE_COLOR}
data-testid="edit-button" data-testid="edit-button"
width="14px" width="14px"
@ -341,7 +341,7 @@ const TagsContainerV2 = ({
() => () =>
permission && !isEmpty(tags?.[tagType]) ? ( permission && !isEmpty(tags?.[tagType]) ? (
<EditIcon <EditIcon
className="hover-cell-icon cursor-pointer" className="hover-cell-icon cursor-pointer align-middle"
data-testid="edit-button" data-testid="edit-button"
height={14} height={14}
name={t('label.edit')} name={t('label.edit')}

View File

@ -127,7 +127,7 @@ const UserPopOverCard: FC<Props> = ({ children, userName, type = 'user' }) => {
return ( return (
<Space align="center"> <Space align="center">
<ProfilePicture id="" name={userName} width="24" /> <ProfilePicture id="" name={userName} type="circle" width="24" />
<div className="self-center"> <div className="self-center">
<Button <Button
className="text-info p-0" className="text-info p-0"

View File

@ -589,7 +589,7 @@
"mark-deleted-entity": "{{entity}} als gelöscht markieren", "mark-deleted-entity": "{{entity}} als gelöscht markieren",
"mark-deleted-table-plural": "Gelöschte Tabellen markieren", "mark-deleted-table-plural": "Gelöschte Tabellen markieren",
"markdown-guide": "Markdown-Leitfaden", "markdown-guide": "Markdown-Leitfaden",
"market-place": "Market Place", "market-place": "Marketplace",
"matches": "Entspricht", "matches": "Entspricht",
"max": "Maximal", "max": "Maximal",
"maximum-size-lowercase": "Maximale Größe", "maximum-size-lowercase": "Maximale Größe",

View File

@ -589,7 +589,7 @@
"mark-deleted-entity": "Mark Deleted {{entity}}", "mark-deleted-entity": "Mark Deleted {{entity}}",
"mark-deleted-table-plural": "Mark Deleted Tables", "mark-deleted-table-plural": "Mark Deleted Tables",
"markdown-guide": "Markdown Guide", "markdown-guide": "Markdown Guide",
"market-place": "Market Place", "market-place": "Marketplace",
"matches": "Matches", "matches": "Matches",
"max": "Max", "max": "Max",
"maximum-size-lowercase": "maximum size", "maximum-size-lowercase": "maximum size",

View File

@ -589,7 +589,7 @@
"mark-deleted-entity": "Marcar {{entity}} como Eliminado", "mark-deleted-entity": "Marcar {{entity}} como Eliminado",
"mark-deleted-table-plural": "Marcar Tablas como Eliminadas", "mark-deleted-table-plural": "Marcar Tablas como Eliminadas",
"markdown-guide": "Guía de Markdown", "markdown-guide": "Guía de Markdown",
"market-place": "Market Place", "market-place": "Marketplace",
"matches": "Coincide", "matches": "Coincide",
"max": "Máx", "max": "Máx",
"maximum-size-lowercase": "tamaño máximo", "maximum-size-lowercase": "tamaño máximo",

View File

@ -589,7 +589,7 @@
"mark-deleted-entity": "Marquer {{entity}} Supprimé·e", "mark-deleted-entity": "Marquer {{entity}} Supprimé·e",
"mark-deleted-table-plural": "Marquer les Tables Supprimé·e", "mark-deleted-table-plural": "Marquer les Tables Supprimé·e",
"markdown-guide": "Guide Markdown", "markdown-guide": "Guide Markdown",
"market-place": "Market Place", "market-place": "Marketplace",
"matches": "Correspond", "matches": "Correspond",
"max": "Max", "max": "Max",
"maximum-size-lowercase": "taille maximum", "maximum-size-lowercase": "taille maximum",

View File

@ -589,7 +589,7 @@
"mark-deleted-entity": "Mark Deleted {{entity}}", "mark-deleted-entity": "Mark Deleted {{entity}}",
"mark-deleted-table-plural": "Mark Deleted Tables", "mark-deleted-table-plural": "Mark Deleted Tables",
"markdown-guide": "Markdownガイド", "markdown-guide": "Markdownガイド",
"market-place": "Market Place", "market-place": "Marketplace",
"matches": "マッチ", "matches": "マッチ",
"max": "最大", "max": "最大",
"maximum-size-lowercase": "最大サイズ", "maximum-size-lowercase": "最大サイズ",

View File

@ -589,7 +589,7 @@
"mark-deleted-entity": "Mark Deleted {{entity}}", "mark-deleted-entity": "Mark Deleted {{entity}}",
"mark-deleted-table-plural": "Marcar tabelas excluídas", "mark-deleted-table-plural": "Marcar tabelas excluídas",
"markdown-guide": "Guia Markdown", "markdown-guide": "Guia Markdown",
"market-place": "Market Place", "market-place": "Marketplace",
"matches": "Combinar", "matches": "Combinar",
"max": "Max", "max": "Max",
"maximum-size-lowercase": "tamanho máximo", "maximum-size-lowercase": "tamanho máximo",

View File

@ -589,7 +589,7 @@
"mark-deleted-entity": "Отметить как удаленное {{entity}}", "mark-deleted-entity": "Отметить как удаленное {{entity}}",
"mark-deleted-table-plural": "Отметить удаленные таблицы", "mark-deleted-table-plural": "Отметить удаленные таблицы",
"markdown-guide": "Markdown Guide", "markdown-guide": "Markdown Guide",
"market-place": "Market Place", "market-place": "Marketplace",
"matches": "Совпадения", "matches": "Совпадения",
"max": "Максимум", "max": "Максимум",
"maximum-size-lowercase": "максимальный размер", "maximum-size-lowercase": "максимальный размер",

View File

@ -589,7 +589,7 @@
"mark-deleted-entity": "标记已删除的{{entity}}", "mark-deleted-entity": "标记已删除的{{entity}}",
"mark-deleted-table-plural": "标记已删除的表", "mark-deleted-table-plural": "标记已删除的表",
"markdown-guide": "Markdown 指南", "markdown-guide": "Markdown 指南",
"market-place": "Market Place", "market-place": "Marketplace",
"matches": "匹配", "matches": "匹配",
"max": "最大值", "max": "最大值",
"maximum-size-lowercase": "最大", "maximum-size-lowercase": "最大",

View File

@ -20,9 +20,14 @@ import { ReactComponent as HeadingIcon } from '../../assets/svg/marketplace-head
import ApplicationCard from '../../components/Applications/ApplicationCard/ApplicationCard.component'; import ApplicationCard from '../../components/Applications/ApplicationCard/ApplicationCard.component';
import NextPrevious from '../../components/common/next-previous/NextPrevious'; import NextPrevious from '../../components/common/next-previous/NextPrevious';
import { PagingHandlerParams } from '../../components/common/next-previous/NextPrevious.interface'; import { PagingHandlerParams } from '../../components/common/next-previous/NextPrevious.interface';
import TitleBreadcrumb from '../../components/common/title-breadcrumb/title-breadcrumb.component';
import PageLayoutV1 from '../../components/containers/PageLayoutV1'; import PageLayoutV1 from '../../components/containers/PageLayoutV1';
import PageHeader from '../../components/header/PageHeader.component'; import PageHeader from '../../components/header/PageHeader.component';
import Loader from '../../components/Loader/Loader'; import Loader from '../../components/Loader/Loader';
import {
GlobalSettingOptions,
GlobalSettingsMenuCategory,
} from '../../constants/GlobalSettings.constants';
import { PAGE_HEADERS } from '../../constants/PageHeaders.constant'; import { PAGE_HEADERS } from '../../constants/PageHeaders.constant';
import { AppMarketPlaceDefinition } from '../../generated/entity/applications/marketplace/appMarketPlaceDefinition'; import { AppMarketPlaceDefinition } from '../../generated/entity/applications/marketplace/appMarketPlaceDefinition';
import { Paging } from '../../generated/type/paging'; import { Paging } from '../../generated/type/paging';
@ -30,7 +35,10 @@ import { usePaging } from '../../hooks/paging/usePaging';
import { getMarketPlaceApplicationList } from '../../rest/applicationMarketPlaceAPI'; import { getMarketPlaceApplicationList } from '../../rest/applicationMarketPlaceAPI';
import { showPagination } from '../../utils/CommonUtils'; import { showPagination } from '../../utils/CommonUtils';
import { getEntityName } from '../../utils/EntityUtils'; import { getEntityName } from '../../utils/EntityUtils';
import { getMarketPlaceAppDetailsPath } from '../../utils/RouterUtils'; import {
getMarketPlaceAppDetailsPath,
getSettingPath,
} from '../../utils/RouterUtils';
import { showErrorToast } from '../../utils/ToastUtils'; import { showErrorToast } from '../../utils/ToastUtils';
import './market-place.less'; import './market-place.less';
@ -95,14 +103,37 @@ const MarketPlacePage = () => {
<PageLayoutV1 <PageLayoutV1
className="p-0 marketplace-page" className="p-0 marketplace-page"
pageTitle={t('label.market-place')}> pageTitle={t('label.market-place')}>
<Row className="marketplace-header" justify="center"> <Row className="marketplace-header">
<Col span={18}> <Col span={24}>
<div className="d-flex items-center justify-between h-full"> <TitleBreadcrumb
<PageHeader data={PAGE_HEADERS.APPLICATION} /> className="p-md"
<HeadingIcon /> titleLinks={[
</div> {
name: t('label.application-plural'),
url: getSettingPath(
GlobalSettingsMenuCategory.INTEGRATIONS,
GlobalSettingOptions.APPLICATIONS
),
},
{
name: t('label.market-place'),
url: '',
},
]}
/>
</Col>
<Col span={24}>
<Row className="marketplace-header-row" justify="center">
<Col span={18}>
<div className="d-flex items-center justify-between h-full">
<PageHeader data={PAGE_HEADERS.APPLICATION} />
<HeadingIcon />
</div>
</Col>
</Row>
</Col> </Col>
</Row> </Row>
<Row className="m-t-lg" justify="center"> <Row className="m-t-lg" justify="center">
<Col span={18}> <Col span={18}>
<div className="d-flex flex-wrap gap-3"> <div className="d-flex flex-wrap gap-3">

View File

@ -15,10 +15,12 @@
.marketplace-header { .marketplace-header {
height: 300px; height: 300px;
background-color: rgba(9, 80, 197, 0.05); background-color: rgba(9, 80, 197, 0.05);
padding: 0 4rem;
.heading { .heading {
font-size: 30px; font-size: 30px;
} }
.marketplace-header-row {
padding: 0 4rem;
}
} }
.page-layout-v1-center { .page-layout-v1-center {
padding: 0; padding: 0;

View File

@ -17,3 +17,9 @@
padding: 2px 3px; padding: 2px 3px;
margin: 1px 2px; margin: 1px 2px;
} }
.assignee-item {
.profile-image {
vertical-align: middle;
}
}

View File

@ -17,6 +17,7 @@ import { groupBy, isUndefined } from 'lodash';
import React, { FC, useMemo } from 'react'; import React, { FC, useMemo } from 'react';
import { ReactComponent as TeamIcon } from '../../../assets/svg/teams-grey.svg'; import { ReactComponent as TeamIcon } from '../../../assets/svg/teams-grey.svg';
import { UserTag } from '../../../components/common/UserTag/UserTag.component'; import { UserTag } from '../../../components/common/UserTag/UserTag.component';
import { UserTagSize } from '../../../components/common/UserTag/UserTag.interface';
import { OwnerType } from '../../../enums/user.enum'; import { OwnerType } from '../../../enums/user.enum';
import { Option } from '../TasksPage.interface'; import { Option } from '../TasksPage.interface';
import './Assignee.less'; import './Assignee.less';
@ -72,7 +73,12 @@ const Assignees: FC<Props> = ({
...user, ...user,
label: ( label: (
<div data-testid={`assignee-option-${user.label}`}> <div data-testid={`assignee-option-${user.label}`}>
<UserTag id={user.value} name={user.label} /> <UserTag
className="assignee-item"
id={user.value}
name={user.label}
size={UserTagSize.small}
/>
</div> </div>
), ),
})), })),
@ -85,7 +91,7 @@ const Assignees: FC<Props> = ({
return ( return (
<Select <Select
showSearch showSearch
className="ant-select-custom" className="ant-select-custom select-assignee"
data-testid="select-assignee" data-testid="select-assignee"
defaultActiveFirstOption={false} defaultActiveFirstOption={false}
filterOption={false} filterOption={false}

View File

@ -318,10 +318,6 @@ a[href].link-text-grey,
white-space: nowrap; white-space: nowrap;
} }
.gap-2 {
gap: 0.5rem /* 8px */;
}
/* SSO layout style */ /* SSO layout style */
.sso-container { .sso-container {
width: 100%; width: 100%;

View File

@ -18,7 +18,7 @@
.profile-image svg, .profile-image svg,
.profile-image img { .profile-image img {
display: inline-block; display: flex;
height: 100%; height: 100%;
width: 100%; width: 100%;
} }

View File

@ -44,6 +44,7 @@ export const getOwner = (
id={owner?.id || ''} id={owner?.id || ''}
name={owner?.name ?? ''} name={owner?.name ?? ''}
textClass="text-xs" textClass="text-xs"
type="circle"
width="20" width="20"
/> />
<Link <Link

View File

@ -90,7 +90,12 @@ import {
getTableFQNFromColumnFQN, getTableFQNFromColumnFQN,
sortTagsCaseInsensitive, sortTagsCaseInsensitive,
} from './CommonUtils'; } from './CommonUtils';
import { getGlossaryPath, getSettingPath } from './RouterUtils'; import {
getDataProductsDetailsPath,
getDomainDetailsPath,
getGlossaryPath,
getSettingPath,
} from './RouterUtils';
import { getSearchIndexDetailsPath } from './SearchIndexUtils'; import { getSearchIndexDetailsPath } from './SearchIndexUtils';
import { serviceTypeLogo } from './ServiceUtils'; import { serviceTypeLogo } from './ServiceUtils';
import { getDecodedFqn, ordinalize } from './StringsUtils'; import { getDecodedFqn, ordinalize } from './StringsUtils';
@ -286,6 +291,14 @@ export const getEntityLink = (
case SearchIndex.SEARCH_INDEX: case SearchIndex.SEARCH_INDEX:
return getSearchIndexDetailsPath(fullyQualifiedName); return getSearchIndexDetailsPath(fullyQualifiedName);
case EntityType.DOMAIN:
case SearchIndex.DOMAIN:
return getDomainDetailsPath(fullyQualifiedName);
case EntityType.DATA_PRODUCT:
case SearchIndex.DATA_PRODUCT:
return getDataProductsDetailsPath(fullyQualifiedName);
case SearchIndex.TABLE: case SearchIndex.TABLE:
case EntityType.TABLE: case EntityType.TABLE:
default: default: