diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Classifications/ClassificationDetails/ClassificationDetails.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Classifications/ClassificationDetails/ClassificationDetails.tsx index f8e9d9a317c..b1a9825c63d 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/Classifications/ClassificationDetails/ClassificationDetails.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/Classifications/ClassificationDetails/ClassificationDetails.tsx @@ -16,7 +16,7 @@ import ButtonGroup from 'antd/lib/button/button-group'; import { ColumnsType } from 'antd/lib/table'; import { AxiosError } from 'axios'; import classNames from 'classnames'; -import { capitalize, isUndefined, toString } from 'lodash'; +import { capitalize, isEmpty, isUndefined, toString } from 'lodash'; import React, { forwardRef, useCallback, @@ -93,7 +93,6 @@ const ClassificationDetails = forwardRef( const history = useHistory(); const [tags, setTags] = useState([]); const [isTagsLoading, setIsTagsLoading] = useState(false); - const { currentPage, paging, @@ -478,7 +477,6 @@ const ClassificationDetails = forwardRef( )} -
= ({ entityName={mlModelName} entityType={EntityType.MLMODEL} hasEditAccess={editDescriptionPermission} + isDescriptionExpanded={isEmpty(mlModelDetail.mlFeatures)} isEdit={isEdit} owner={mlModelDetail.owner} showActions={!deleted} diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Pipeline/PipelineDetails/PipelineDetails.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Pipeline/PipelineDetails/PipelineDetails.component.tsx index 527becf7c0e..2906bdb6f69 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/Pipeline/PipelineDetails/PipelineDetails.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/Pipeline/PipelineDetails/PipelineDetails.component.tsx @@ -582,6 +582,7 @@ const PipelineDetails = ({ entityName={entityName} entityType={EntityType.PIPELINE} hasEditAccess={editDescriptionPermission} + isDescriptionExpanded={isEmpty(tasksInternal)} isEdit={isEdit} owner={owner} showActions={!deleted} diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Topic/TopicDetails/TopicDetails.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Topic/TopicDetails/TopicDetails.component.tsx index 41e7fba0d4a..0d7cb3e614f 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/Topic/TopicDetails/TopicDetails.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/Topic/TopicDetails/TopicDetails.component.tsx @@ -13,6 +13,7 @@ import { Col, Row, Tabs } from 'antd'; import { AxiosError } from 'axios'; +import { isEmpty } from 'lodash'; import { EntityTags } from 'Models'; import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; @@ -313,6 +314,9 @@ const TopicDetails: React.FC = ({ entityName={entityName} entityType={EntityType.TOPIC} hasEditAccess={editDescriptionPermission} + isDescriptionExpanded={isEmpty( + topicDetails.messageSchema?.schemaFields + )} isEdit={isEdit} owner={topicDetails.owner} showActions={!deleted} diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/EntityDescription/Description.interface.ts b/openmetadata-ui/src/main/resources/ui/src/components/common/EntityDescription/Description.interface.ts index 0ccff2dd611..0ee89349913 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/common/EntityDescription/Description.interface.ts +++ b/openmetadata-ui/src/main/resources/ui/src/components/common/EntityDescription/Description.interface.ts @@ -36,4 +36,5 @@ export interface DescriptionProps { reduceDescription?: boolean; className?: string; showSuggestions?: boolean; + isDescriptionExpanded?: boolean; } diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/EntityDescription/DescriptionV1.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/EntityDescription/DescriptionV1.tsx index 864fd2e40fa..25fb5e368db 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/common/EntityDescription/DescriptionV1.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/common/EntityDescription/DescriptionV1.tsx @@ -57,6 +57,7 @@ const DescriptionV1 = ({ showCommentsIcon = true, reduceDescription, showSuggestions = false, + isDescriptionExpanded, }: DescriptionProps) => { const history = useHistory(); const { suggestions = [], selectedUserSuggestions = [] } = @@ -191,13 +192,14 @@ const DescriptionV1 = ({ ) : ( {t('label.no-description')} ); } - }, [description, suggestionData]); + }, [description, suggestionData, isDescriptionExpanded]); const content = ( { @@ -457,4 +458,27 @@ describe('Test RichTextEditor Previewer Component', () => { expect(screen.getByTestId('code-block-copy-icon')).toBeInTheDocument(); }); + + it('Should render read less button if isDescriptionExpanded is true', async () => { + const { container } = render( + , + { + wrapper: MemoryRouter, + } + ); + + const readLessButton = await findByTestId(container, 'read-less-button'); + + expect(readLessButton).toBeInTheDocument(); + }); + + it('Should render read more button if isDescriptionExpanded is false', async () => { + const { container } = render(, { + wrapper: MemoryRouter, + }); + + const readMoreButton = await findByTestId(container, 'read-more-button'); + + expect(readMoreButton).toBeInTheDocument(); + }); }); diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/RichTextEditor/RichTextEditorPreviewer.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/RichTextEditor/RichTextEditorPreviewer.tsx index ee3689afaba..b1b5282b3d4 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/common/RichTextEditor/RichTextEditorPreviewer.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/common/RichTextEditor/RichTextEditorPreviewer.tsx @@ -31,10 +31,10 @@ const RichTextEditorPreviewer = ({ textVariant = 'black', showReadMoreBtn = true, maxLength = DESCRIPTION_MAX_PREVIEW_CHARACTERS, + isDescriptionExpanded = false, }: PreviewerProp) => { const { t, i18n } = useTranslation(); const [content, setContent] = useState(''); - // initially read more will be false const [readMore, setReadMore] = useState(false); @@ -95,6 +95,10 @@ const RichTextEditorPreviewer = ({ return () => window.removeEventListener('mousedown', handleMouseDownEvent); }, [handleMouseDownEvent]); + useEffect(() => { + setReadMore(Boolean(isDescriptionExpanded)); + }, [isDescriptionExpanded]); + return (
{ entityName={entityName} entityType={EntityType.CONTAINER} hasEditAccess={editDescriptionPermission} + isDescriptionExpanded={isEmpty(containerChildrenData)} isEdit={isEditDescription} owner={owner} showActions={!deleted} diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/DatabaseDetailsPage/DatabaseDetailsPage.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/DatabaseDetailsPage/DatabaseDetailsPage.tsx index de87e9d3ace..ade77bdce5d 100644 --- a/openmetadata-ui/src/main/resources/ui/src/pages/DatabaseDetailsPage/DatabaseDetailsPage.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/pages/DatabaseDetailsPage/DatabaseDetailsPage.tsx @@ -516,6 +516,7 @@ const DatabaseDetails: FunctionComponent = () => { entityName={getEntityName(database)} entityType={EntityType.DATABASE} hasEditAccess={editDescriptionPermission} + isDescriptionExpanded={isEmpty(database)} isEdit={isEdit} showActions={!database.deleted} onCancel={onCancel} diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/DatabaseSchemaPage/SchemaTablesTab.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/DatabaseSchemaPage/SchemaTablesTab.tsx index 4b174851d8b..a319199ab34 100644 --- a/openmetadata-ui/src/main/resources/ui/src/pages/DatabaseSchemaPage/SchemaTablesTab.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/pages/DatabaseSchemaPage/SchemaTablesTab.tsx @@ -13,6 +13,7 @@ import { Col, Row, Switch, Typography } from 'antd'; import { ColumnsType } from 'antd/lib/table'; +import { isEmpty } from 'lodash'; import { PagingResponse } from 'Models'; import React, { useMemo } from 'react'; import { useTranslation } from 'react-i18next'; @@ -114,6 +115,7 @@ function SchemaTablesTab({ description={description} entityFqn={databaseSchemaDetails.fullyQualifiedName} entityType={EntityType.DATABASE_SCHEMA} + isDescriptionExpanded={isEmpty(tableData.data)} showActions={false} /> ) : ( @@ -123,6 +125,7 @@ function SchemaTablesTab({ entityName={getEntityName(databaseSchemaDetails)} entityType={EntityType.DATABASE_SCHEMA} hasEditAccess={editDescriptionPermission} + isDescriptionExpanded={isEmpty(tableData.data)} isEdit={isEdit} showActions={!databaseSchemaDetails.deleted} onCancel={onCancel} diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/SearchIndexDetailsPage/SearchIndexDetailsPage.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/SearchIndexDetailsPage/SearchIndexDetailsPage.tsx index d5038729cde..98d216cbcb4 100644 --- a/openmetadata-ui/src/main/resources/ui/src/pages/SearchIndexDetailsPage/SearchIndexDetailsPage.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/pages/SearchIndexDetailsPage/SearchIndexDetailsPage.tsx @@ -14,7 +14,7 @@ import { Col, Row, Tabs } from 'antd'; import { AxiosError } from 'axios'; import { compare } from 'fast-json-patch'; -import { isEqual, isUndefined, omitBy } from 'lodash'; +import { isEmpty, isEqual, isUndefined, omitBy } from 'lodash'; import { EntityTags } from 'Models'; import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; @@ -392,6 +392,7 @@ function SearchIndexDetailsPage() { entityName={entityName} entityType={EntityType.SEARCH_INDEX} hasEditAccess={editDescriptionPermission} + isDescriptionExpanded={isEmpty(searchIndexDetails?.fields)} isEdit={isEdit} owner={searchIndexDetails?.owner} showActions={!searchIndexDetails?.deleted} diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/StoredProcedure/StoredProcedurePage.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/StoredProcedure/StoredProcedurePage.tsx index 3375e355365..6575d0c25b3 100644 --- a/openmetadata-ui/src/main/resources/ui/src/pages/StoredProcedure/StoredProcedurePage.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/pages/StoredProcedure/StoredProcedurePage.tsx @@ -22,6 +22,7 @@ import { ActivityFeedTab } from '../../components/ActivityFeed/ActivityFeedTab/A import ActivityThreadPanel from '../../components/ActivityFeed/ActivityThreadPanel/ActivityThreadPanel'; import { withActivityFeed } from '../../components/AppRouter/withActivityFeed'; +import { isEmpty } from 'lodash'; import { CustomPropertyTable } from '../../components/common/CustomPropertyTable/CustomPropertyTable'; import DescriptionV1 from '../../components/common/EntityDescription/DescriptionV1'; import ErrorPlaceHolder from '../../components/common/ErrorWithPlaceholder/ErrorPlaceHolder'; @@ -550,6 +551,7 @@ const StoredProcedurePage = () => { entityName={entityName} entityType={EntityType.STORED_PROCEDURE} hasEditAccess={editDescriptionPermission} + isDescriptionExpanded={isEmpty(code)} isEdit={isEdit} owner={owner} showActions={!deleted} diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/TableDetailsPageV1/TableDetailsPageV1.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/TableDetailsPageV1/TableDetailsPageV1.tsx index 9e9999e3624..75fc6233904 100644 --- a/openmetadata-ui/src/main/resources/ui/src/pages/TableDetailsPageV1/TableDetailsPageV1.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/pages/TableDetailsPageV1/TableDetailsPageV1.tsx @@ -518,6 +518,7 @@ const TableDetailsPageV1: React.FC = () => { entityName={entityName} entityType={EntityType.TABLE} hasEditAccess={editDescriptionPermission} + isDescriptionExpanded={isEmpty(tableDetails?.columns)} isEdit={isEdit} owner={tableDetails?.owner} showActions={!deleted}