diff --git a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Glossary.spec.ts b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Glossary.spec.ts index c06297481c0..a30f2649e1a 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Glossary.spec.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/e2e/Pages/Glossary.spec.ts @@ -1237,8 +1237,8 @@ test.describe('Glossary tests', () => { expect(columnText).toEqual( columnText.includes('Actions') - ? ['Terms', 'Description', 'Status', 'Owners', 'Actions'] - : ['Terms', 'Description', 'Status', 'Owners'] + ? ['Terms', 'Description', 'Owners', 'Status', 'Actions'] + : ['Terms', 'Description', 'Owners', 'Status'] ); } finally { await glossaryTerm1.delete(apiContext); diff --git a/openmetadata-ui/src/main/resources/ui/playwright/utils/entity.ts b/openmetadata-ui/src/main/resources/ui/playwright/utils/entity.ts index 462ff59ac0d..d134f3d623d 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/utils/entity.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/utils/entity.ts @@ -746,7 +746,7 @@ export const followEntity = async ( await followResponse; await expect(page.getByTestId('entity-follow-button')).toContainText( - 'Following' + 'Unfollow' ); }; diff --git a/openmetadata-ui/src/main/resources/ui/playwright/utils/glossary.ts b/openmetadata-ui/src/main/resources/ui/playwright/utils/glossary.ts index 6919eb86983..56d19a685cf 100644 --- a/openmetadata-ui/src/main/resources/ui/playwright/utils/glossary.ts +++ b/openmetadata-ui/src/main/resources/ui/playwright/utils/glossary.ts @@ -1246,7 +1246,7 @@ export const filterStatus = async ( const rows = glossaryTermsTable.locator( 'tbody.ant-table-tbody > tr:not([aria-hidden="true"])' ); - const statusColumnIndex = 3; + const statusColumnIndex = 2; for (let i = 0; i < (await rows.count()); i++) { const statusCell = rows diff --git a/openmetadata-ui/src/main/resources/ui/src/assets/svg/ic-inherit.svg b/openmetadata-ui/src/main/resources/ui/src/assets/svg/ic-inherit.svg index 2c72cea0fe1..7d9f2a0e4a5 100644 --- a/openmetadata-ui/src/main/resources/ui/src/assets/svg/ic-inherit.svg +++ b/openmetadata-ui/src/main/resources/ui/src/assets/svg/ic-inherit.svg @@ -1,10 +1,15 @@ - - - + + + + + + + + - - + + - + \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/src/components/DataAssets/DomainLabelV2/DomainLabelV2.tsx b/openmetadata-ui/src/main/resources/ui/src/components/DataAssets/DomainLabelV2/DomainLabelV2.tsx index 8ccee5a4de2..b3f44216307 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/DataAssets/DomainLabelV2/DomainLabelV2.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/DataAssets/DomainLabelV2/DomainLabelV2.tsx @@ -174,7 +174,7 @@ export const DomainLabelV2 = < +
{t('label.domain')} diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Entity/EntityHeaderTitle/EntityHeaderTitle.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Entity/EntityHeaderTitle/EntityHeaderTitle.component.tsx index 8fa241710ec..23bb689fb10 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/Entity/EntityHeaderTitle/EntityHeaderTitle.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/Entity/EntityHeaderTitle/EntityHeaderTitle.component.tsx @@ -79,6 +79,30 @@ const EntityHeaderTitle = ({ [showOnlyDisplayName, displayName, name] ); + const badges = useMemo( + () => ( + <> + {isDisabled && ( + + )} + {deleted && ( + + + + {t('label.deleted')} + + + )} + {badge && {badge}} + + ), + [isDisabled, deleted, badge] + ); + const content = ( {icon && {icon}} + className={classNames('d-flex flex-col gap-2', { + 'w-max-full-140': deleted || badge, + })}> {/* If we do not have displayName name only be shown in the bold from the below code */} {!isEmpty(displayName) && showName ? ( - - - {stringToHTML(displayName ?? name)} - - +
+ + + {stringToHTML(displayName ?? name)} + + + {badges} +
) : null}
- {isFollowing ? 'Following' : 'Follow'} + {t(`label.${isFollowing ? 'un-follow' : 'follow'}`)} @@ -163,28 +192,13 @@ const EntityHeaderTitle = ({
- {isDisabled && ( - - )} - {deleted && ( - - - - {t('label.deleted')} - - - )} - {badge && {badge}} + {isEmpty(displayName) ? badges : null}
); return link && !isTourRoute ? ( diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Explore/EntitySummaryPanel/CommonEntitySummaryInfo/CommonEntitySummaryInfo.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Explore/EntitySummaryPanel/CommonEntitySummaryInfo/CommonEntitySummaryInfo.tsx index c5dcccab494..6c928193d12 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/Explore/EntitySummaryPanel/CommonEntitySummaryInfo/CommonEntitySummaryInfo.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/Explore/EntitySummaryPanel/CommonEntitySummaryInfo/CommonEntitySummaryInfo.tsx @@ -43,7 +43,7 @@ function CommonEntitySummaryInfo({ <> {info.name} diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Glossary/GlossaryTermTab/GlossaryTermTab.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Glossary/GlossaryTermTab/GlossaryTermTab.component.tsx index 8479d1007ad..79f7e8540a3 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/Glossary/GlossaryTermTab/GlossaryTermTab.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/Glossary/GlossaryTermTab/GlossaryTermTab.component.tsx @@ -419,7 +419,6 @@ const GlossaryTermTab = ({ isGlossary, className }: GlossaryTermTabProps) => { ); }, }, - ...ownerTableObject(), { title: t('label.status'), dataIndex: GLOSSARY_TERM_TABLE_COLUMNS_KEYS.STATUS, @@ -458,6 +457,7 @@ const GlossaryTermTab = ({ isGlossary, className }: GlossaryTermTabProps) => { }, onFilter: (value, record) => record.status === value, }, + ...ownerTableObject(), ]; if (permissions.Create) { data.push({ @@ -667,8 +667,10 @@ const GlossaryTermTab = ({ isGlossary, className }: GlossaryTermTabProps) => { trigger={['click']} onOpenChange={setIsStatusDropdownVisible}>
); }; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/OwnerAvtar/owner-avtar.less b/openmetadata-ui/src/main/resources/ui/src/components/common/OwnerAvtar/owner-avtar.less index 42445de9053..4b7865cb5ea 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/common/OwnerAvtar/owner-avtar.less +++ b/openmetadata-ui/src/main/resources/ui/src/components/common/OwnerAvtar/owner-avtar.less @@ -15,3 +15,39 @@ .anticon.owner-team-icon { color: @grey-700; } + +.owner-avatar-icon { + position: relative; + + .inherited-icon-styling { + position: absolute; + bottom: -4px; + right: -4px; + background-color: white; + border-radius: 50%; + + width: 16px; + height: 16px; + z-index: 1; + border: 1px solid @blue-9; + svg { + color: @blue-9; + } + } +} + +// Styling for the avatar group layout (for the overlapping effect) +.avatar-group { + display: flex; + + .owner-avatar-icon { + margin-right: -8px; + + border-radius: 50%; + overflow: hidden; + + &:hover { + z-index: 2; + } + } +} diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/OwnerItem/OwnerItem.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/OwnerItem/OwnerItem.tsx index 15063ac1f17..e5d17008d39 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/common/OwnerItem/OwnerItem.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/common/OwnerItem/OwnerItem.tsx @@ -45,7 +45,7 @@ export const OwnerItem: React.FC = ({ title={t('label.inherited-entity', { entity: t('label.owner-plural'), })}> - + ) : null; @@ -58,7 +58,11 @@ export const OwnerItem: React.FC = ({ {!isCompactView ? ( - + ) : ( @@ -77,9 +81,9 @@ export const OwnerItem: React.FC = ({ {ownerDisplayName ?? displayName} + {inheritedIcon &&
{inheritedIcon}
} )} - {inheritedIcon &&
{inheritedIcon}
} ); }; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/OwnerLabel/OwnerLabel.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/OwnerLabel/OwnerLabel.component.tsx index 973679d6e67..217f1ac7da2 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/common/OwnerLabel/OwnerLabel.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/common/OwnerLabel/OwnerLabel.component.tsx @@ -62,9 +62,7 @@ export const OwnerLabel = ({ multiple={multiple} owner={owners} tooltipText={tooltipText} - onUpdate={(updatedUsers) => { - onUpdate(updatedUsers); - }} + onUpdate={onUpdate} /> )} @@ -128,9 +126,10 @@ export const OwnerLabel = ({ {/* Owner avatars list */}
+ )}> {visibleOwners.map((owner, index) => ( { - onUpdate(updatedUsers); - }} + onUpdate={onUpdate} /> )}
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/RolesCard/RolesCard.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/RolesCard/RolesCard.component.tsx index 89263892e25..0395e0bdeba 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/common/RolesCard/RolesCard.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/common/RolesCard/RolesCard.component.tsx @@ -17,7 +17,7 @@ import { isArray, isNil, toLower } from 'lodash'; import React, { useState } from 'react'; import { useTranslation } from 'react-i18next'; import { ReactComponent as EditIcon } from '../../../assets/svg/edit-new.svg'; -import { TERM_ADMIN } from '../../../constants/constants'; +import { DE_ACTIVE_COLOR, TERM_ADMIN } from '../../../constants/constants'; import { useAuth } from '../../../hooks/authHooks'; import { getEntityName } from '../../../utils/EntityUtils'; import RolesElement from '../RolesElement/RolesElement.component'; @@ -93,7 +93,7 @@ const RolesCard = ({ diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/Table/table.less b/openmetadata-ui/src/main/resources/ui/src/components/common/Table/table.less index 649971ab5e4..f35e5e05960 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/common/Table/table.less +++ b/openmetadata-ui/src/main/resources/ui/src/components/common/Table/table.less @@ -33,7 +33,6 @@ .custom-column-dropdown-menu { margin-right: 10px; - padding: 0; border: none; color: @primary-color; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/UserTeamSelectableList/UserTeamSelectableList.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/UserTeamSelectableList/UserTeamSelectableList.component.tsx index 074d6eb545a..c6f4e459606 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/common/UserTeamSelectableList/UserTeamSelectableList.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/common/UserTeamSelectableList/UserTeamSelectableList.component.tsx @@ -159,8 +159,11 @@ export const UserTeamSelectableList = ({ updateData = updateItems; } - await onUpdate(updateData); - setPopupVisible(false); + try { + await onUpdate(updateData); + } finally { + setPopupVisible(false); + } }; // Fetch and store count for Users tab diff --git a/openmetadata-ui/src/main/resources/ui/src/generated/entity/services/connections/database/snowflakeConnection.ts b/openmetadata-ui/src/main/resources/ui/src/generated/entity/services/connections/database/snowflakeConnection.ts index f3315a6295b..4e16a056d48 100644 --- a/openmetadata-ui/src/main/resources/ui/src/generated/entity/services/connections/database/snowflakeConnection.ts +++ b/openmetadata-ui/src/main/resources/ui/src/generated/entity/services/connections/database/snowflakeConnection.ts @@ -44,15 +44,15 @@ export interface SnowflakeConnection { * Regex to only include/exclude databases that matches the pattern. */ databaseFilterPattern?: DefaultDatabaseFilterPattern; + /** + * Optional configuration for ingestion of streams, By default, it will skip the streams. + */ + includeStreams?: boolean; /** * Optional configuration for ingestion of TRANSIENT tables, By default, it will skip the * TRANSIENT tables. */ includeTransientTables?: boolean; - /** - * Optional configuration for ingestion of streams, By default, it will skip the streams. - */ - includeStreams?: boolean; /** * Password to connect to Snowflake. */ diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/AlertDetailsPage/AlertDetailsPage.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/AlertDetailsPage/AlertDetailsPage.tsx index 8e1c59c2dfb..da7241b4673 100644 --- a/openmetadata-ui/src/main/resources/ui/src/pages/AlertDetailsPage/AlertDetailsPage.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/pages/AlertDetailsPage/AlertDetailsPage.tsx @@ -32,7 +32,7 @@ import { OwnerLabel } from '../../components/common/OwnerLabel/OwnerLabel.compon import ResizablePanels from '../../components/common/ResizablePanels/ResizablePanels'; import TitleBreadcrumb from '../../components/common/TitleBreadcrumb/TitleBreadcrumb.component'; import EntityHeaderTitle from '../../components/Entity/EntityHeaderTitle/EntityHeaderTitle.component'; -import { ROUTES } from '../../constants/constants'; +import { DE_ACTIVE_COLOR, ROUTES } from '../../constants/constants'; import { GlobalSettingsMenuCategory } from '../../constants/GlobalSettings.constants'; import { usePermissionProvider } from '../../context/PermissionProvider/PermissionProvider'; import { @@ -408,7 +408,13 @@ function AlertDetailsPage({