mirror of
https://github.com/ueberdosis/tiptap.git
synced 2024-11-24 03:39:01 +08:00
fix(font-family): Prevent removal of quotes in parseHTML (#5828)
Removed the quote removal step in font-family parsing to support fonts that contain both spaces and numbers, such as "Exo 2", which require quotes for proper recognition. --------- Co-authored-by: Sander <sander@blueberry.nl> Co-authored-by: Nick Perez <nicholas.perez@tiptap.dev>
This commit is contained in:
parent
177868a286
commit
38abfdf9ea
5
.changeset/tiny-buckets-behave.md
Normal file
5
.changeset/tiny-buckets-behave.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@tiptap/extension-font-family": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Font-family extension: Prevent removal of quotes in parseHTML
|
@ -18,6 +18,7 @@ export default () => {
|
|||||||
<p><span style="font-family: monospace">The cool kids can apply monospace fonts aswell.</span></p>
|
<p><span style="font-family: monospace">The cool kids can apply monospace fonts aswell.</span></p>
|
||||||
<p><span style="font-family: cursive">But hopefully we all can agree, that cursive fonts are the best.</span></p>
|
<p><span style="font-family: cursive">But hopefully we all can agree, that cursive fonts are the best.</span></p>
|
||||||
<p><span style="font-family: var(--title-font-family)">Then there are CSS variables, the new hotness.</span></p>
|
<p><span style="font-family: var(--title-font-family)">Then there are CSS variables, the new hotness.</span></p>
|
||||||
|
<p><span style="font-family: 'Exo 2'">TipTap even can handle exotic fonts as Exo 2.</span></p>
|
||||||
`,
|
`,
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -27,6 +28,9 @@ export default () => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
<link
|
||||||
|
href="https://fonts.googleapis.com/css2?family=Exo+2:ital,wght@0,100..900;1,100..900&display=swap"
|
||||||
|
rel="stylesheet"/>
|
||||||
<div className="control-group">
|
<div className="control-group">
|
||||||
<div className="button-group">
|
<div className="button-group">
|
||||||
<button
|
<button
|
||||||
@ -82,12 +86,20 @@ export default () => {
|
|||||||
>
|
>
|
||||||
Comic Sans quoted
|
Comic Sans quoted
|
||||||
</button>
|
</button>
|
||||||
<button onClick={() => editor.chain().focus().unsetFontFamily().run()} data-test-id="unsetFontFamily">
|
<button
|
||||||
|
onClick={() => editor.chain().focus().setFontFamily('"Exo 2"').run()}
|
||||||
|
className={editor.isActive('textStyle', { fontFamily: '"Exo 2"' }) ? 'is-active' : ''}
|
||||||
|
data-test-id="exo2"
|
||||||
|
>
|
||||||
|
Exo 2
|
||||||
|
</button>
|
||||||
|
<button onClick={() => editor.chain().focus().unsetFontFamily().run()}
|
||||||
|
data-test-id="unsetFontFamily">
|
||||||
Unset font family
|
Unset font family
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<EditorContent editor={editor} />
|
<EditorContent editor={editor}/>
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -46,4 +46,12 @@ context('/src/Extensions/FontFamily/React/', () => {
|
|||||||
|
|
||||||
cy.get('.tiptap').find('span').should('have.attr', 'style', 'font-family: var(--title-font-family)')
|
cy.get('.tiptap').find('span').should('have.attr', 'style', 'font-family: var(--title-font-family)')
|
||||||
})
|
})
|
||||||
|
it('should allow fonts containing a space and number as a font-family', () => {
|
||||||
|
cy.get('[data-test-id="exo2"]')
|
||||||
|
.should('not.have.class', 'is-active')
|
||||||
|
.click()
|
||||||
|
.should('have.class', 'is-active')
|
||||||
|
|
||||||
|
cy.get('.tiptap').find('span').should('have.attr', 'style', 'font-family: "Exo 2"')
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
@ -49,7 +49,7 @@ export const FontFamily = Extension.create<FontFamilyOptions>({
|
|||||||
attributes: {
|
attributes: {
|
||||||
fontFamily: {
|
fontFamily: {
|
||||||
default: null,
|
default: null,
|
||||||
parseHTML: element => element.style.fontFamily?.replace(/['"]+/g, ''),
|
parseHTML: element => element.style.fontFamily,
|
||||||
renderHTML: attributes => {
|
renderHTML: attributes => {
|
||||||
if (!attributes.fontFamily) {
|
if (!attributes.fontFamily) {
|
||||||
return {}
|
return {}
|
||||||
|
Loading…
Reference in New Issue
Block a user