GithubHelp home page GithubHelp logo

Comments (7)

mrAJAY1 avatar mrAJAY1 commented on May 2, 2024

Can I work on this?

from lexical.

mrAJAY1 avatar mrAJAY1 commented on May 2, 2024

If no one is working on this bug, please assign it to me. 🙂

from lexical.

inaseem avatar inaseem commented on May 2, 2024

@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 avatar JavoByte commented on May 2, 2024

@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.

inaseem avatar inaseem commented on May 2, 2024

@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.

JavoByte avatar JavoByte commented on May 2, 2024

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.

oleza avatar oleza commented on May 2, 2024

@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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.