diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/RichTextEditor/CustomHtmlRederer/CustomHtmlRederer.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/RichTextEditor/CustomHtmlRederer/CustomHtmlRederer.tsx
index b9b0a56fc11..26e2eb2b206 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/common/RichTextEditor/CustomHtmlRederer/CustomHtmlRederer.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/components/common/RichTextEditor/CustomHtmlRederer/CustomHtmlRederer.tsx
@@ -103,7 +103,6 @@ export const customHTMLRenderer: CustomHTMLRenderer = {
type: 'openTag',
tagName: 'pre',
classNames: preClasses,
- attributes: { 'data-content': codeText },
},
{
type: 'html',
@@ -116,11 +115,9 @@ export const customHTMLRenderer: CustomHTMLRenderer = {
data-testid="copied-message">
{t('label.copied')}
-
+
+
+
>
),
},
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/RichTextEditor/RichTextEditorPreviewer.test.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/RichTextEditor/RichTextEditorPreviewer.test.tsx
index b2d02c80ef1..325c6f4f91c 100644
--- a/openmetadata-ui/src/main/resources/ui/src/components/common/RichTextEditor/RichTextEditorPreviewer.test.tsx
+++ b/openmetadata-ui/src/main/resources/ui/src/components/common/RichTextEditor/RichTextEditorPreviewer.test.tsx
@@ -29,6 +29,10 @@ const mockDescription =
// eslint-disable-next-line max-len
'**Headings**\n\n# H1\n## H2\n### H3\n\n***\n**Bold**\n\n**bold text**\n\n\n***\n**Italic**\n\n*italic*\n\n***\n**BlockQuote**\n\n> blockquote\n\n***\n**Ordered List**\n\n1. First item\n2. Second item\n3. Third item\n\n\n***\n**Unordered List**\n\n- First item\n- Second item\n- Third item\n\n\n***\n**Code**\n\n`code`\n\n\n***\n**Horizontal Rule**\n\n---\n\n\n***\n**Link**\n[title](https://www.example.com)\n\n\n***\n**Image**\n\n\n\n\n***\n**Table**\n\n| Syntax | Description |\n| ----------- | ----------- |\n| Header | Title |\n| Paragraph | Text |\n***\n\n**Fenced Code Block**\n\n```\n{\n "firstName": "John",\n "lastName": "Smith",\n "age": 25\n}\n```\n\n\n***\n**Strikethrough**\n~~The world is flat.~~\n';
+const mockCodeBlockMarkdown =
+ // eslint-disable-next-line max-len
+ "```\nIFERROR ( \n IF (\n SUM ( 'Запасы'[СЗ, руб2] ) <> BLANK (),\n CALCULATE (\n DIVIDE ( SUM ( 'Запасы'[СЗ, руб2] ), [Количество дней в периоде_new] ),\n FILTER ( 'Место отгрузки', [Код предприятия] <> \"7001\" ),\n FILTER ( 'Запасы', [Код типа запаса] <> \"E\" )\n ),\n BLANK ()\n ),\n 0\n)\n```";
+
const mockProp: PreviewerProp = {
markdown: mockDescription,
className: '',
@@ -435,4 +439,22 @@ describe('Test RichTextEditor Previewer Component', () => {
expect(screen.getByText(markdown)).toBeInTheDocument();
expect(screen.queryByTestId('read-more-button')).toBeNull();
});
+
+ it('Should render code block with copy button', async () => {
+ const { container } = render(
+ ,
+ {
+ wrapper: MemoryRouter,
+ }
+ );
+
+ const markdownParser = await findByTestId(container, 'markdown-parser');
+
+ expect(markdownParser.querySelector('pre')).toBeInTheDocument();
+
+ expect(screen.getByTestId('code-block-copy-icon')).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 51c16bafb07..0b190525687 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
@@ -71,8 +71,9 @@ const RichTextEditorPreviewer = ({
const targetNodeDataTestId = targetNode.getAttribute('data-testid');
if (targetNodeDataTestId === 'code-block-copy-icon' && previousSibling) {
- const content =
- targetNode.parentElement?.getAttribute('data-content') ?? '';
+ const codeNode = previousSibling.previousElementSibling;
+
+ const content = codeNode?.textContent ?? '';
try {
await navigator.clipboard.writeText(content);