From 5bf23a8ff639a79773bd4901a65d06474728c935 Mon Sep 17 00:00:00 2001 From: Jason Smith Date: Wed, 7 Feb 2024 18:39:28 +1100 Subject: [PATCH] feat: :sparkles: add image captions in content --- .../src/utils/markup-transpiler/cheerio.test.ts | 2 +- .../src/utils/markup-transpiler/default-plugins.ts | 11 +++++++++-- .../components/basic-text/basic-text-mapping.test.ts | 2 +- .../src/components/content/RplContent.css | 1 + .../ripple-ui-core/src/styles/components/_img.css | 6 ++++++ 5 files changed, 18 insertions(+), 4 deletions(-) diff --git a/packages/ripple-tide-api/src/utils/markup-transpiler/cheerio.test.ts b/packages/ripple-tide-api/src/utils/markup-transpiler/cheerio.test.ts index 6da2a7e424..ea310cb078 100644 --- a/packages/ripple-tide-api/src/utils/markup-transpiler/cheerio.test.ts +++ b/packages/ripple-tide-api/src/utils/markup-transpiler/cheerio.test.ts @@ -65,7 +65,7 @@ const fixed = { `, - image: `Image`, + image: `
Image
`, button: `Button`, link: `Link(opens in a new window)`, iframe: `
` diff --git a/packages/ripple-tide-api/src/utils/markup-transpiler/default-plugins.ts b/packages/ripple-tide-api/src/utils/markup-transpiler/default-plugins.ts index 4ad8ba33ec..59eba46fd4 100644 --- a/packages/ripple-tide-api/src/utils/markup-transpiler/default-plugins.ts +++ b/packages/ripple-tide-api/src/utils/markup-transpiler/default-plugins.ts @@ -185,12 +185,19 @@ const pluginImages = function (this: any) { const width = $img.attr('width') const src = $img.attr('src') const alt = $img.attr('alt') + const $caption = this.find(el) + .find('div.field--name-field-media-caption') + ?.text() // this is the max width of the content area const contentWidth = 720 return this.find(el).replaceWith( - `${alt}` + } 2x">${ + $caption + ? '
' + $caption + '
' + : '' + }` ) }) } diff --git a/packages/ripple-tide-landing-page/mapping/components/basic-text/basic-text-mapping.test.ts b/packages/ripple-tide-landing-page/mapping/components/basic-text/basic-text-mapping.test.ts index 05360f3f20..2d2255c703 100644 --- a/packages/ripple-tide-landing-page/mapping/components/basic-text/basic-text-mapping.test.ts +++ b/packages/ripple-tide-landing-page/mapping/components/basic-text/basic-text-mapping.test.ts @@ -52,7 +52,7 @@ const result: TideDynamicPageComponent = { } ], props: { - html: '

Nulla ultricies dignissim leo, posuere vestibulum erat cursus vitae

\n

Phasellus congue aliquam vehicula

\n

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam tincidunt sit amet ligula sit amet lacinia. In a leo nec tortor aliquet faucibus. Quisque nec congue ligula, vitae condimentum tellus. Nulla nec urna augue. Curabitur commodo nisi est, eu pulvinar tortor cursus vel. Morbi dictum ex est, et semper diam finibus eu. Cras rutrum, nunc a fringilla convallis, massa est vulputate velit, in blandit augue dui vitae elit. Donec hendrerit commodo augue, in maximus orci tempor congue. Mauris ultricies euismod orci, nec vehicula quam vehicula ac. Nunc dictum tortor dolor, nec eleifend orci luctus sed.

\n

Donec scelerisque cursus ex varius efficitur

\n

Lorem ipsum dolor sit amet

\n

Morbi cursus placerat mi

\n
Nullam laoreet ante placerat
\n

Integer interdum nisl ut neque dictum, et sagittis metus feugiat. Sed in mattis neque. Duis at risus non ipsum semper dapibus. Sed enim sapien, molestie sed commodo vel, lacinia vitae risus. Proin sagittis diam nisi, sed rhoncus diam varius id. Sed malesuada felis tortor, scelerisque pretium elit tempor non. Pellentesque ultrices volutpat tincidunt. Fusce quis viverra urna, quis finibus nulla.

\n\n
\n
\n

Mauris tincidunt tincidunt felis vel tempus. Vestibulum rhoncus blandit justo quis finibus. Phasellus lacus lectus, sollicitudin sed posuere non, ultricies ut quam.

\n
\n
Duis ligula lacusPhasellus est turpis, efficitur nec odio imperdiet
\n
\n\nMauris tincidunt tincidunt felis vel tempus\nDemo: Melbourne tram\n

Phasellus in varius leo. Suspendisse potenti. Donec scelerisque cursus ex varius efficitur. Vivamus pretium nisi sed libero accumsan mattis. Duis convallis, velit eget varius tempus, orci erat aliquam sem, eget porta mauris nisl at mauris.

\n\n
\n \n \n \n \n
\n Demo Sample Document\n
\n Word\n 7.53 KB\n
\n
\n (opens in a new window)\n
\n
\n\n' + html: '

Nulla ultricies dignissim leo, posuere vestibulum erat cursus vitae

\n

Phasellus congue aliquam vehicula

\n

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam tincidunt sit amet ligula sit amet lacinia. In a leo nec tortor aliquet faucibus. Quisque nec congue ligula, vitae condimentum tellus. Nulla nec urna augue. Curabitur commodo nisi est, eu pulvinar tortor cursus vel. Morbi dictum ex est, et semper diam finibus eu. Cras rutrum, nunc a fringilla convallis, massa est vulputate velit, in blandit augue dui vitae elit. Donec hendrerit commodo augue, in maximus orci tempor congue. Mauris ultricies euismod orci, nec vehicula quam vehicula ac. Nunc dictum tortor dolor, nec eleifend orci luctus sed.

\n

Donec scelerisque cursus ex varius efficitur

\n

Lorem ipsum dolor sit amet

\n

Morbi cursus placerat mi

\n
Nullam laoreet ante placerat
\n

Integer interdum nisl ut neque dictum, et sagittis metus feugiat. Sed in mattis neque. Duis at risus non ipsum semper dapibus. Sed enim sapien, molestie sed commodo vel, lacinia vitae risus. Proin sagittis diam nisi, sed rhoncus diam varius id. Sed malesuada felis tortor, scelerisque pretium elit tempor non. Pellentesque ultrices volutpat tincidunt. Fusce quis viverra urna, quis finibus nulla.

\n\n
\n
\n

Mauris tincidunt tincidunt felis vel tempus. Vestibulum rhoncus blandit justo quis finibus. Phasellus lacus lectus, sollicitudin sed posuere non, ultricies ut quam.

\n
\n
Duis ligula lacusPhasellus est turpis, efficitur nec odio imperdiet
\n
\n\nMauris tincidunt tincidunt felis vel tempus\n
Demo: Melbourne tram
\n

Phasellus in varius leo. Suspendisse potenti. Donec scelerisque cursus ex varius efficitur. Vivamus pretium nisi sed libero accumsan mattis. Duis convallis, velit eget varius tempus, orci erat aliquam sem, eget porta mauris nisl at mauris.

\n\n
\n \n \n \n \n
\n Demo Sample Document\n
\n Word\n 7.53 KB\n
\n
\n (opens in a new window)\n
\n
\n\n' } } diff --git a/packages/ripple-ui-core/src/components/content/RplContent.css b/packages/ripple-ui-core/src/components/content/RplContent.css index 5cf96f6f9b..9e57773db8 100644 --- a/packages/ripple-ui-core/src/components/content/RplContent.css +++ b/packages/ripple-ui-core/src/components/content/RplContent.css @@ -15,6 +15,7 @@ margin-top: 0; } + figure:not(:first-child), .rpl-img:not(:first-child), .rpl-media-embed:not(:first-child) { margin-top: var(--rpl-sp-5); diff --git a/packages/ripple-ui-core/src/styles/components/_img.css b/packages/ripple-ui-core/src/styles/components/_img.css index 5064939964..f15195cf5b 100644 --- a/packages/ripple-ui-core/src/styles/components/_img.css +++ b/packages/ripple-ui-core/src/styles/components/_img.css @@ -2,3 +2,9 @@ object-fit: cover; max-width: 100%; } + +.rpl-img__caption { + margin-bottom: var(--rpl-sp-3); + margin-top: var(--rpl-sp-3); + color: var(--rpl-clr-neutral-600); +}