¿Cómo se creó el componente de modal en Bootstragram?
Iniciar la creación de un modal en un proyecto como Bootstragram requiere definir una estructura clara en el código. Comenzamos con la identificación del lugar donde se integrará el modal: en la parte superior de la cart. Posteriormente:
Creamos un archivo modal.svelte donde definimos la estructura del modal.
Incluimos un div modal y div modal-overlay para generar la capa oscura que enfoca la caja de contenido a mostrar.
Utilizamos slot para permitir que componentes hijos se integren, permitiendo flexibilidad en el contenido interno.
Para adicionar funcionalidad y estilo:
Consultamos el documento de estilos existente y aplicamos los necesarios para el modal.
<divclass="modal-overlay"></div>
¿Cómo se implementa el componente de compartir?
El componente de compartir es vital para integraciones externas. Para su desarrollo:
Se genera el archivo share.svelte donde se define el contenido del modal.
Dentro de él, se implementa un encabezado (H2) y un botón que permita cerrar el modal.
Integramos un ícono de Font Awesome para Facebook, y mostramos el título "Compartir en Facebook".
La lógica para compartir se ejecuta a través de una URL de la API de Facebook, con la posibilidad de personalizarla con el propio URL del proyecto al llegar a la etapa de despliegue.
Para mantener el modal atractivo y funcional:
Importamos y aplicamos estilos desde el archivo de estilos común.
Para mejorar la interacción con el usuario, es crucial integrar el modal al sistema de eventos de la aplicación:
Creación de la lógica de clic
Se declara una variable booleana isModal inicialmente en false, controlando si el modal se muestra.
Implementamos la función handleClick para alternar el estado de isModal, permitiendo abrir y cerrar el modal con un clic.
Configuración de los eventos
Los eventos se definen en el componente que activa el modal. Se detecta un evento de clic en el ícono de compartir (paper plane).
A través de la declaración de onClick, vinculamos la función handleClick para gestionar la activación del modal.
Importante es destacar el uso de animaciones de transición para añadir un efecto visual atractivo, implementando la transición blur de Svelte. Esto no solo mejora la estética, sino también la experiencia del usuario.
let isModal =false;functionhandleClick(){ isModal =!isModal;}
¿Cómo se aseguran las mejores prácticas?
Al finalizar la implementación, es crítico revisar todos los aspectos:
Se asegura que no hay errores tipográficos ni sintácticos.
Verificar que la apertura y cierre del modal funcionan correctamente.
El uso de target="_blank" al compartir permite abrir en una nueva ventana, asegurando que el usuario no abandone la aplicación principal.
Finalmente, probamos la integridad de la aplicación, asegurando que los componentes dialoguen correctamente, brindando una experiencia interactiva y fluida al usuario. Esto es un incentivo para continuar explorando y desarrollando habilidades avanzadas de diseño y programación en nuestros proyectos Svelte.
//en el css .Share-content i {margin:00.5em 00; font-size: 20px;}.Share-facebook i {color: #3b5998;}.Share-whatsapp i {color: #1bd741;}// en el html<div class="Share-content"><div class="Share-facebook"><a href="https://www.facebook.com/sharer/sharer.php?&u=https://pugstagram.co/" target="_blank"><i class="fab fa-facebook-square"/>Compartir en Facebook!</a></div><div class="Share-whatsapp"><a href="https://api.whatsapp.com/send?&text=mira%20este%20hermoso%20pug%20https://pugstagram.co/" target="_blank"><i class="fab fa-whatsapp-square"/>Compartir en Whatsapp!</a></div></div>
Resultado:
Gracias por tu aporte! Con un poco de blur de fondo queda excelente la presentación
Al importar los componentes en svelte se puede hacer sin la extensión de la siguiente manera:
Es mas por convención y no tener problemas después con JS
Para los que no les anduvo el efecto Blur, tanto al abrir el modal, como al cerrar el modal, teniendo está version de svelte:
"dependencies":{"svelte":"^3.18.2"}
Solo tuve que editar al import del blur lo siguiente y funcionó correctamente:
// Segun documentación oficial de Svelteimport{ blur }from'svelte/transition';
Éxitos!
La animación no me la procesa debidamente, aparece de forma brusca el modal y el recuadro share. Hay alguna manera de "aligerar" la carga para el navegador? Quizás mi laptop no tiene tanto poder grafico.
Hola, la parte de la optimización del CSS para que le cueste menos al navegador según la PC de la persona no sé si se pueda lograr con Svelte, porque para este te tendrías que meter al código de la animación.
Pero si quieres aprender sobre cómo optimizar tu CSS te recomiendo el Curso de Optimización Web :D hay una sección dedicada al render del CSS y cómo optimizarlo.
Hola, estoy teniendo un pequeño error, con el modulo transition. Si alguien tiene alguna idea de como podría solucionarlo se lo voy a agradecer.
ERRORin./node_modules/svelte/transition/index.mjs2:0-50Module not found:Error:Can't resolve '../internal' in '/home/beo/svelte/pugstagram/node_modules/svelte/transition'
Hola Ezequiel, podrías compartir tu código para poder ayudarte mejor, porfa. Por lo que veo no se está encontrando el módulo de transition
Lo pude solucionar modificando
import{ blur }from'svelte/transition/index.js';
agregando el index.js al path, pero estoy teniendo problemas con varios modulos y a cada vez tengo que ir a modificar las extensiones de los fichieros dans node modules , lo mismo me pasaba con store.
En este momento me muestra otro error, en realidad el modal se muestra pero la animation que tiene que tener no funciona, lel error que tengo es el siguiente:
ERRORin./node_modules/svelte/easing/index.mjs1:0-58Can't import the named export 'identity' (reexported as 'linear')fromdefault-exporting module(only defaultexport is available)
Yo busqué donde estaba este identity y lo encontré en node_modules/svelte/esasing/index.mjs
ésta linea:
export{ identity as linear }from'../internal/index.js';```
y este error no lo he podido solucionar por ahora(he tenido problemas con webpack desde el comienzo 😏).
Puede recibir múltiples funciones un componente hijo? Y cómo sería la representación del mismo, ya que en el hijo se representa solamente "on:click"
Entiendo que si necesitas pasar mas de una función entonces las tienes que pasar como props
url de la documentación actualizada al día: 8 de Julio, 2024
Una vez que compartimos en facebook al volver a la página hay que cerrar la ventana modal...
Para que eso no suceda en el <a ... facebook..... </a> agrega on:click
Gracias!
Estilo para poder hacer scroll y permanezca el modal