npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

set-height-elements

v2.1.0

Published

Script para colocar la altura maxima entre un conjunto de elementos.

Downloads

5

Readme

Set Height Elements

Script para calcular la altura máxima entre un conjunto de elementos.

El objetivo de este script es comparar la altura de un conjunto de elementos/nodos en el DOM y obtener la altura que sea mayor, regresando ese valor en forma de variable CSS a cada uno de los elementos/nodos, con el fin de poder lograr una alineación horizontal perfecta (por ejemplo, muchos cards en un slider, o un grid).

npm

Contenido

Instalar

Set Height Elements está disponible en NPM con el nombre de set-height-elements, se puede instalar con Yarn o NPM

yarn add set-height-elements
npm i set-height-elements

Demo

Codepen

Funcionamiento

Primero hay que importar el modulo:

  import SetHeightElements from "set-height-elements";

Despues, solo basta con crear una instancia de ella, pasando los parámetros correspondientes, como el array de los elementos y opcionalmente las configuraciones que desee agregar.

  
  const $titlesGridCard = document.querySelectorAll(".title-wrapper");


  const instanceGrid = new setHeightElements($titlesGridCard, {
    cssVariable: "--value",
    gridOptions: {
      defaultColumns: 5,
      responsive: {
        1440: 4,
        834: 3,
        680: 2
      }
    },
    on: {
      init: (value) => {
        console.log("init:  ", value);
      },
      afterResize: (value) => {
        console.log("resize:  ", value);
      },
    },
  });


  window.console.log(instanceGrid); // [object Object]

NOTA: al importar el modulo al menos una vez, este tambien crear un objeto global en window, bajo el nombre de SHE, el cual tiene el modulo para crear instancias en cualquier lugar de la pagina, y en este mismo tambien se alojan las instancias creadas.

  window.SHE = window.SHE || {
    Init: SetHeightElements,
    Instances: [],
  };

Parámentros

  • nodeElementsArray [Required] [NodeArrayElements] Este parámetro recibe el array de todos los elementos para revisar su altura.

    const titles = document.querySelectorAll(".title-wrapper");
  • Options [Optional] [Object] Este parámetro que recibe es un objeto con todas las opciones posibles. Cada que agregues una opción esta sobrescribe la default.

    const options = {
      autoInit: true,
      cssVariable: '--height',
      debug: false,
      gridOptions: null,
      initialIndex: 0,
      classElementToOmit: '',
      on: {
        init: (data, instance) => {},
        afterResize: (data, instance) => {},
        afterChanges: (data, instance) => {},
        afterUpdate: (data, instance) => {},
        afterDestroy: (instance) => {},
      },
    };
    • autoInit [Optional] [Boolean] Con este campo se indica si se inicia la configuración de manera automática una vez que se instancia, el valor default es true, pero si se coloca en false, posteriormente puede usar el método de init() para iniciar la configuración de manera manual.

      const autoInit = true;
    • cssVariable [Optional] [String] Este campo sirve para colocar la variable la cual tendrá el valor del cálculo de todas las alturas de entre todos los elementos del array. Esta variable se coloca en todos los elementos examinados.

      const cssVariable = "--height";
    • debug [Optional] [Boolean] Con este campo puedes activar mensajes de ayuda en consola, se lanzaran mensajes para cada proceso que este ocurriendo durante el ciclo de vida de la instancia.

      const autoInit = true;
    • gridOptions [Optional - Only for grid] [Object] Este parámetro se utiliza solo cuando el layout es un grid. Este es un objeto con dos propiedades los cuales contendrán información como las columnas default, los breakpoints y cuantas columnas hay en cada medida. Se basa en desktopFirst, es decir, una vez que alcanza la medida este se configura hacia abajo, dando el número de columnas pasado a esta medida, y cambia una vez alcance la siguiente medida. NOTA: El valor de ‘defaultColumns’ es Requerido, si no se coloca en código lanzará error.

      const optionsGrid = {
        defaultColumns: 5,
        responsive: {
          // window.width <= 1440px : 4 columns
          1440: 4,
          // window.width <= 834px : 3 columns
          834: 3,
          // window.width <= 680px : 2 columns
          680: 2,
        },
      };
    • initialIndex [Optional] [Number] Este campo ayuda a que el script inicie en determinada posición del array, es decir, que inicie a partir de determinado index, así evitando configurar elementos que estén por detrás de esta posición inicial.

      const initialIndex = 0;
    • classElementToOmit [Optional] [String] Este parámetro recibe el nombre de la clase que comparten los elementos en el array, es decir, esta clase se usa para saltar aquel elemento que contenga esta clase, así se omite y no es contemplado para checar su altura.

      const classElementToOmit = "element-class-to-omit";
    • on [Optional] [Object] Dentro de este objeto encontraremos los métodos/callbacks para cada evento que pase durante la vida de la instancia.

      • init [Optional] [function] Función que retorna el valor que se asignó a los elementos justo después de haber configurado los elementos por primera vez, tambien retorna la instancia completa.
      on: {
        init: (data, instance) => {
          console.log(data, instance);
        },
      };
      • afterResize [Optional] [function] Función que se ejecuta después de cada resize. Retorna los valores actualizados después del resize.
      on: {
        afterResize: (data) => {
          console.log(data);
        },
      };
      • afterChanges [Optional] [function] Función que se ejecuta después de un cambio en el DOM sobre los elementos del array. Retorna los valores actualizados después de la actualización.
      on: {
        afterChanges: (data) => {
          console.log(data);
        },
      };
      • afterUpdate [Optional] [function] Función que se invoca después de ejecutar el método update() de la instancia. Retorna los valores después de la actualización.
      on: {
        afterUpdate: (data) => {
          console.log(data);
        },
      };
      • afterDestroy [Optional] [function] Función que se invoca después de ejecutar el método destroy() de la instancia. Retorna la instancia
      on: {
        afterDestroy: (instance) => {
          console.log(instance);
        },
      };

Métodos

  • init - Este método funciona para inicializar la configuración de manera manual. (este método puede usarse si anteriormente se usó el método destroy())

      myInstance.init()
  • destroy - Este método destruye toda la configuración hecha por la app, remueve las variables css y cancelar los eventos enlazados a los elementos.

      myInstance.destroy()
  • update - Este método ayuda a actualizar de manera manual la configuración, esto hará que el callback de afterUpdate() se invoque.

      myInstance.update()
  • startResizeCalculation - Este método inicializa el observador de 'resize', esto hará que el callback de afterResize() se invoque.

      myInstance.startResizeCalculation()
  • stopChangesObserver - Este método cancela el observador de 'resize', esto hará que el callback de afterResize() deje de invocarse.

      myInstance.stopChangesObserver()
  • startChangesObserver - Este método inicializa el observador para los cambios en el DOM sobre los elementos, esto hará que el callback de afterChanges() se invoque.

      myInstance.startChangesObserver()
  • stopChangesObserver - Este método cancela el observador para los cambios en el DOM sobre los elementos, esto hará que el callback de afterChanges() deje de invocarse.

      myInstance.stopChangesObserver()