Ejemplo webcomponent – ddr-counter

Hola a todos, hoy os voy explicar como podemos hacer un pequeño contador como webcomponent.

Vamos a realizar paso a paso un pequeño contador como este:

Te recomiendo leer antes este articulo:

Creando nuestro primer webcomponent

Empezaremos definiendo la clase:

Vamos a crear los siguientes atributos:

  • value: valor actual del input
  • step: paso al que va incremento/decremento.
  • min: valor minimo permitido.
  • max: valor maximo permitido.

Recuerda que se realiza haciendo simplemente get y set.

Ahora vamos a crear su propio HTML y CSS.

La idea es añadir en una cadena el contenido en HTML y CSS (en una etiqueta style).

Para que nos sea más fácil, vamos a obtener como atributos propios, los botones y el input.

Lo podemos hacer con querySelector, te recomiendo poner id o clases propias.

En la función connectedCallback, que se llama cuando se carga el componente, llamaremos a esta función que acabamos de realizar.

También si tenemos un valor inicial en el atributo value, lo asociaremos. En el caso de que tenga un mínimo y no le damos un valor, lo iniciamos a ese valor mínimo

Ahora, vamos a hacer la función que se realizará cuando pulsemos el botón de incremento.

Los pasos que haremos son los siguientes:

  • Obtenemos el paso, sino le indicamos ninguno, seria 1.
  • Sumamos el valor con el paso.
  • Si hay un máximo y el valor es mayor que el máximo, el valor sera el máximo sino el valor calculado.
  • Asociamos el valor al input.

Lo mismo con el de decremento, solo que en lugar de usar el máximo, usamos el mínimo.

Nos falta asociar estos eventos a los botones con addEventListener en connectedCallback y bind en el constructor, sino lo hacemos no funcionaran al pulsar sobre ellos.

La función bind lo que hace es crear una nueva función que forzará a this dentro de la función a ser el parámetro pasado a bind().

Con esto tendríamos nuestro webcomponent ya listo para funcionar. Lo probamos en un HTML.

Te dejo el proyecto en stackblitz.

Aquí os dejo videos donde hacemos el webcomponent en el canal de youtube.

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


Warning: Trying to access array offset on value of type null in /home2/discodur/public_html/discoduroderoer/wp-content/themes/disto/single.php on line 539