Comment rendre une partie du texte d'un paragraphe en gras/italique/etc. à l'aide des fonctions de helper.h ?

Peut-être une question simple, mais cela m’a bloqué un moment :sweat_smile:

Comment réaliser cela en utilisant la fonction helper.h de Discourse ?

<div>
<p>Ce texte <i>est en italique</i> </p>
</div>

Le plus proche que j’ai obtenu est ceci :

    html() {
      return [  h('div'),
                h('p', "Ce texte" + h('i', "est en italique"))
             ]
    }

Ce qui retourne ceci :
image

Sinon, quelques autres variantes que j’ai essayées retournent soit Ce texte, soit est en italique, mais pas les deux :thinking:

Par exemple, ceci :

    html() {
      return [  h('div'),
                h('p', "Ce texte", [h('i', "est en italique")])
             ]
    }

retourne uniquement est en italique
image

Presque arrivé ?
Celui-ci :

    html() {
      return [  h('div', ),
                h('p', [h('i', "est en italique"), "Ce texte"])
             ]
    }

Me donne ceci :sweat_smile:

image

Les paramètres de la fonction h sont tagName, properties, children. Vous pouvez ignorer properties si vous le souhaitez et utiliser simplement tagName, children. Les enfants peuvent être un seul nœud ou un tableau de plusieurs nœuds.

Donc, je pense que vous voulez quelque chose comme

h('div',   // <div>
  h('p', [   // <p>
    'Ce texte ',
    h('i', 'est en italique')  // <i></i>
  ])  // </p>
);  // </div>
6 « J'aime »

Merci, je ne réalisais pas qu’un nœud unique pouvait aussi être un simple texte. C’est maintenant assez puissant.

Par ailleurs, avez-vous déjà envisagé d’introduire un simple convertisseur de HTML vers la fonction h ? Cela accélérerait grandement le développement à certains moments :slight_smile:

Il est possible d’utiliser un modèle comme celui-ci dans certains cas

https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/app/widgets/embedded-post.js#L11

5 « J'aime »