Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

277
Views
Lit-Html js-api no reemplaza los elementos de icono

He instalado los paquetes lit y fontawesome como npm. También uso el paquete Vaadin Router para algunas rutas.

Ahora quiero insertar algunos íconos en mis propios elementos. Si bien los íconos se reemplazan correctamente en el índice html, no se encuentran en todos los elementos separados. Para reemplazar los iconos utilizo el método dom.i2svg de js-api de fontawesome. Si entendí correctamente, esto también debería usarse y activarse automáticamente usando el paquete npm de frontawesome.

Los archivos de interés son los siguientes:

índice.html

 <body> <navigation-element></navigation-element> <i class="fab fa-linkedin"></i> <main> <div id="outlet"></div> </main> <footer-element></footer-element> <script src="./vendor/webcomponents-loader.js"></script> </body>

índice.js

 import { dom, library } from '@fortawesome/fontawesome-svg-core' import { fas } from '@fortawesome/free-solid-svg-icons' import { fab } from '@fortawesome/free-brands-svg-icons' const outlet = document.getElementById('outlet'); const router = new Router(outlet); router.setRoutes([ { path: '/', component: 'my-element' }, ]); library.add(fas, fab); dom.i2svg();

mi-elemento.js

 import { dom } from '@fortawesome/fontawesome-svg-core'; class MyElement extends LitElement { static styles = css ` :host { display: block; } `; connectedCallback() { super.connectedCallback(); dom.i2svg(); // does not work in here } render() { return html ` <i class="fas fa-kiwi-bird"></i> <i class="fab fa-linkedin"></i> <div> <p> text </p> <p> text </p> </div> `; } } customElements.define('my-element', MyElement);

En el index.js agregué mis íconos a la biblioteca y en el index.html el elemento i se reemplazó correctamente. Pero para el my-element no pasa nada. La biblioteca se llena con los iconos, pero no se reemplaza ningún elemento. Traté de llamar a dom.i2svg() y/o dom.watch(params) dentro de la función connecedCallback, así como en el constructor.

También probé varias otras cosas/funciones como importar css. Alguien más tuvo un problema similar que podría resolverse en github, pero esta solución no funciona para mí.

¿Alguien tiene una idea de por qué? ¿Qué hice mal, es tal vez el enrutador o la API está rota?

about 4 years ago · Santiago Gelvez
1 answers
Answer question

0

Su componente se extiende desde LitElement , lo que significa que tiene un DOM oculto que protege su HTML interno del CSS externo. Puedes:

  1. Extender desde View en lugar de LitElement para evitar el uso de Shadow DOM (si su proyecto se basa en el iniciador Hilla de Vaadin)
  2. Anular createRenderRoot() { return this; } en su LitElement para no usar shadow DOM. Esto deshabilitará el shadow DOM para todo el componente.
  3. Incluya estilos fontawesome en su plantilla de componentes con <style>
  4. Use la ranura para el contenido destinado a estar en DOM ligero. Este es un mejor enfoque cuando desea proteger parcialmente la implementación, por ejemplo, su componente es un diseño con contenido dinámico.
about 4 years ago · Santiago Gelvez Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!