Skip to content

Commit dba2f06

Browse files
authored
fix(heading): issue #20 - heading rendering of inner content format blocks (#22)
* fix(heading): issue #20 - heading rendering of inner content format blocks * fix defaults
1 parent d0ebd12 commit dba2f06

4 files changed

Lines changed: 74 additions & 11 deletions

File tree

README.md

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,15 @@ type StrapiBlockUserTheme = {
130130
h4?: string[];
131131
h5?: string[];
132132
h6?: string[];
133+
content: {
134+
block?: string[];
135+
span?: string[];
136+
strong?: string[];
137+
italic?: string[];
138+
underline?: string[];
139+
strikethrough?: string[];
140+
link?: string[];
141+
}
133142
};
134143
paragraph?: {
135144
block?: string[];
@@ -185,7 +194,16 @@ const StrapiBlockThemeDefault = {
185194
h3: ['text-2xl', 'font-bold', 'mb-3'],
186195
h4: ['text-xl', 'font-bold', 'mb-2'],
187196
h5: ['text-lg', 'font-bold', 'mb-2'],
188-
h6: ['text-base', 'font-bold', 'mb-2']
197+
h6: ['text-base', 'font-bold', 'mb-2'],
198+
content: {
199+
block: [],
200+
span: [],
201+
strong: ['font-bold'],
202+
italic: ['italic'],
203+
underline: ['underline'],
204+
strikethrough: ['line-through'],
205+
link: ['text-blue-500', 'underline', 'hover:text-blue-800'],
206+
},
189207
},
190208
paragraph: {
191209
block: ['mb-4'],

src/components/blocks/StrapiBlockHeading.astro

Lines changed: 45 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
---
22
import StrapiBlockCustom from "./StrapiBlockCustom.astro";
3+
import StrapiBlockTextItemComponent from "./items/StrapiBlockTextItem.astro";
34
45
import { StrapiBlockThemeDefault, getPropertyClass } from "../../lib";
5-
import type { AstroComponent, StrapiBlockTextItem, StrapiBlockTheme } from "../../types";
6+
import type {
7+
AstroComponent,
8+
StrapiBlockTextItem,
9+
StrapiBlockTheme,
10+
} from "../../types";
611
712
type Props = {
813
level: number;
@@ -12,23 +17,53 @@ type Props = {
1217
theme: StrapiBlockTheme;
1318
};
1419
15-
const { data, level = 2, class: classes = '', theme = StrapiBlockThemeDefault, block } = Astro.props;
20+
const {
21+
data,
22+
level = 2,
23+
class: classes = "",
24+
theme = StrapiBlockThemeDefault,
25+
block,
26+
} = Astro.props;
1627
1728
const sanitizedData = data.filter(({ text }: StrapiBlockTextItem) => text);
18-
const headingTag = `h${level}` as keyof StrapiBlockTheme['heading'];
29+
const headingTag = `h${level}` as keyof StrapiBlockTheme["heading"];
1930
const Tag = headingTag;
2031
21-
const blockClasses = classes ? classes.split(' ') : [];
22-
const headingClasses = [...blockClasses, ...getPropertyClass(theme, ['heading', headingTag])];
23-
32+
const blockClasses = classes ? classes.split(" ") : [];
33+
const headingClasses = [
34+
...blockClasses,
35+
...getPropertyClass(theme, ["heading", headingTag]),
36+
];
2437
---
38+
2539
{
2640
sanitizedData.length && (
2741
<>
28-
{ block && (<StrapiBlockCustom {...Astro.props} comp={block} data={sanitizedData[0]} />)}
29-
{ !block && (sanitizedData.map(({ text }: StrapiBlockTextItem) => {
30-
return (<Tag class={headingClasses.join(' ')}>{text}</Tag>);
31-
})
42+
{block && (
43+
<StrapiBlockCustom
44+
{...Astro.props}
45+
comp={block}
46+
data={sanitizedData[0]}
47+
/>
48+
)}
49+
{!block &&
50+
sanitizedData.map(({ text }: StrapiBlockTextItem) => {
51+
return <Tag class={headingClasses.join(" ")}>{text}</Tag>;
52+
})}
53+
{!block && (
54+
<Tag class={headingClasses.join(" ")}>
55+
{sanitizedData.map((item: StrapiBlockTextItem) => {
56+
if (typeof item === "string") {
57+
return item;
58+
}
59+
return (
60+
<StrapiBlockTextItemComponent
61+
data={item}
62+
theme={theme.heading.content || theme.paragraph || {}}
63+
/>
64+
);
65+
})}
66+
</Tag>
3267
)}
3368
</>
3469
)

src/lib/theme.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,15 @@ export const StrapiBlockThemeDefault: StrapiBlockTheme = {
1010
h4: ['text-3xl', 'font-bold', 'mb-4'],
1111
h5: ['text-2xl', 'font-bold', 'mb-4'],
1212
h6: ['text-xl', 'font-bold', 'mb-4'],
13+
content: {
14+
block: [],
15+
span: [],
16+
strong: ['font-bold'],
17+
italic: ['italic'],
18+
underline: ['underline'],
19+
strikethrough: ['line-through'],
20+
link: ['text-blue-500', 'underline', 'hover:text-blue-800'],
21+
},
1322
},
1423
paragraph: {
1524
block: ['astro-strapi-block-paragraph', 'mb-4'],

src/types/theme.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export type StrapiBlockThemeHeading = {
1010
h4: Array<string>;
1111
h5: Array<string>;
1212
h6: Array<string>;
13+
content: StrapiBlockThemeParagraph;
1314
}
1415

1516
export type StrapiBlockThemeParagraph = {

0 commit comments

Comments
 (0)