Comments (7)
Can I work on this?
from lexical.
If no one is working on this bug, please assign it to me. 🙂
from lexical.
@JavoByte the styles on the playground are being picked up from the theme object which is passed on in the initalConfig. That's why those are getting applied in the playground. When you are serializing the contents to html, the styles from theme theme classes are not applied only the styles which are applied inline would remain in the serialized html. You can use the theme css file to the document where you are rendering the serialized html. This should work.
from lexical.
@JavoByte the styles on the playground are being picked up from the theme object which is passed on in the initalConfig. That's why those are getting applied in the playground. When you are serializing the contents to html, the styles from theme theme classes are not applied only the styles which are applied inline would remain in the serialized html. You can use the theme css file to the document where you are rendering the serialized html. This should work.
I don't think that's the case. I see the classes applied in the generated HTML. I see additional tags that shouldn't be there IMO. I would be ok with classes not applied but since they are, a mix of styling is being applied that does not match with what user entered
from lexical.
@JavoByte I meant the css associated with those css classes are not applied to the serialized html. For this to work correctly, you will have to include the css file either as as import or as style in the head of serialized html.
from lexical.
Styles of course are not added (if you mean inline styling) but the classes are.
So, I'm having this in the editor:
<p><span class="underline-strikethrough">this text is underlined and striked through</span></p>
but when I serialize that, I end up with:
<p><u><s><span class="underline-strikethrough">this text is underlined and striked through</span></s></u></p>
My point is that the u
and s
tags should not be there together with the class name.
from lexical.
@JavoByte that's how it's implemented to support both underline and strike-through, as far is I got. Wrapping are applied during export but merged back on import. This functionality is controlled within the exportDOM
method of the TextNode
class. You can customize this behavior by replacing the TextNode class. For example,
TextNode
:
exportDOM(editor: LexicalEditor) {
if (this.hasFormat("strikethrough")) {
element = wrapElementWith(element, "s");
}
if (this.hasFormat("underline")) {
element = wrapElementWith(element, "u");
}
CustomTextNode
:
exportDOM(editor: LexicalEditor) {
const element = super.createDOM(editor._config);
if (element instanceof HTMLElement) {
if (element.className.match("underline-strikethrough")) {
element.style.textDecoration = "underline line-through";
} else if (this.hasFormat("bold")) {
will apply inline styles, instead of wrapping it with respective element. But than hasFormat
behaviour should be adjusted as well, to support both from inline.
from lexical.
Related Issues (20)
- How to keep formatting between lines? HOT 7
- Bug: Unable to use toolbar on Android. How can I disable the context menu on text selection? HOT 1
- Selection breaks when table is the last node HOT 1
- Bug: Duplication of input text in setting styles that occurs when Japanese IME is inputed and on iOS devices
- Bug: App breaks while writing into table and Convert into after inserting the table
- Bug: Key Combination Breaks Text Editor Within List Items
- Bug: The selection changes unexpectedly when changing font family (or anything using inline style)
- Bug: codesandbox for simple setup on docs landing page is not found
- Feature: 🤖 LLM search (ChatGPT) in Docs
- Bug: UpdateListener with debounce HOT 3
- Bug: Change text alignment in multiple cells
- Bug: data-gutter not exported in <code/> after export to html HOT 1
- Bug: Deleting selected text node not working on Android (Chrome) HOT 1
- Bug: Header becomes a numbered list HOT 2
- Bug: TypeError: Class constructor TextNode cannot be invoked without 'new' HOT 11
- Bug: If editable is false, $setSelection doesn't update the visual highlight of selection in page
- Bug: Indenting a DecoratorNode (ie TweetNode) causes exception and makes editor unresponsive.
- Bug: cursor size does not align with font-size
- Bug: Using AOSP-based keyboards on Android is very broken HOT 1
- Bug: Full table selected after cells copy/paste
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from lexical.