Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

298
Vistas
configurar el ancho de sweetalert2 automáticamente según el mensaje de texto

Estoy usando la biblioteca sweetalert2 para mostrar mensajes de alerta básicos, pero hay algunos mensajes más extensos que otros.

Es posible configurar el ancho del contenedor de alerta en automático, ¿entonces el mensaje se corrige en una línea?

ingrese la descripción de la imagen aquí

Como comportamiento predeterminado, creo que el ancho está establecido en 360px, pero necesito una solución para que sea automático... espero que alguien pueda ayudarme... gracias

PD: Si importa, estoy usando Symfony 4.4. La configuración predeterminada es:

 const Toast = Swal.mixin({ toast: true, position: 'top', showConfirmButton: false, timer: 3000, timerProgressBar: true, });

y el evento de fuego en la plantilla:

 <script> {% for type, msgs in app.session.flashBag.all() %} {% for msg in msgs %} Toast.fire({ icon: '{{ type }}', title: '{{ msg }}' }); {% endfor %} {% endfor %} </script>
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Después de algunas investigaciones y sin suerte, la prueba y el error fueron la mejor manera de obtener una solución adecuada.

Primero, sobrescriba algunos estilos css de la biblioteca sweetalert2:

 .swal2-container { padding: 0.4em; } .swal2-toast { max-width: inherit; } body.swal2-toast-shown .swal2-container { width: unset; } .swal2-popup.swal2-toast .swal2-title { margin: 9px 5px auto; }

Luego, en la etiqueta del script, cree un elemento de lienzo y, utilizando el estilo de fuente, calcule el ancho del lienzo...

 <script> {% for type, msgs in app.session.flashBag.all() %} {% for msg in msgs %} inputText = '{{ msg }}'; font = "0.875rem Nimrod MT"; canvas = document.createElement("canvas"); context = canvas.getContext("2d"); context.font = font; width = context.measureText(inputText).width; formattedWidth = Math.ceil(width) + 100; Toast.fire({ icon: '{{ type }}', title: '{{ msg }}', width: formattedWidth, }); {% endfor %} {% endfor %} </script>

El resultado final:

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Espero que esta solución ayude a otros...

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda