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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@cbm-common/resize-container-directive

v0.0.6

Published

Directiva para ajustar automáticamente la altura de un contenedor a su contenido interno y controlar el scroll centrado. Diseñada para Angular 20 y migrada desde `mf-common`.

Readme

@cbm-common/resize-container-directive

Directiva para ajustar automáticamente la altura de un contenedor a su contenido interno y controlar el scroll centrado. Diseñada para Angular 20 y migrada desde mf-common.

Descripción

CbmResizeContainerDirective observa cambios en el DOM del elemento (mutations) y adapta la altura del contenedor padre para ajustarse al contenido. Opcionalmente puede centrar el scroll horizontalmente y reaccionar a eventos personalizados de "resize".

Características principales

  • Ajusta la altura del contenedor según el contenido interno.
  • Observa cambios (childList, subtree, attributes) mediante MutationObserver.
  • Permite centrar el scroll horizontalmente.
  • Permite escuchar eventos personalizados para forzar recalculo.
  • Compatible con Angular 20 (signals/effects).

Instalación (local / monorepo)

Si trabajas en este monorepo, referencia la librería local desde projects/resize-container-directive/src/lib/resize-container.directive en los componentes de prueba.

Si publicas y usas desde npm, instala con:

npm install @cbm-common/resize-container-directive

Asegúrate de tener en peerDependencies versiones compatibles de Angular (ver package.json).

API - Atributos / Inputs

Aplica la directiva al elemento que actúa como contenedor exterior (el hijo directo contendrá el contenido):

  • cbmResizeContainerDirective - selector de la directiva.
  • resizeHeight (string | number) - valor numérico adicional que se suma al scrollHeight del contenido (por defecto 15).
  • observerAttributes (boolean) - si observar atributos con MutationObserver (false por defecto).
  • child-list (boolean | 'true' | 'false') - si observar childList (true por defecto).
  • sub-tree (boolean | 'true' | 'false') - si observar subtree (true por defecto).
  • center-scroll (boolean) - si centrar el scroll horizontal al inicializar y cuando cambie (false por defecto).
  • resizeEvent (string) - nombre de evento personalizado para forzar recalculo (opcional).

Ejemplo de uso

<div cbmResizeContainerDirective [resizeHeight]="20" [observerAttributes]="true" [center-scroll]="true">
  <div>
    <!-- contenido dinámico aquí -->
  </div>
</div>

Ejemplo en componente standalone

import { Component } from '@angular/core';
import { CbmResizeContainerDirective } from 'projects/resize-container-directive/src/lib/resize-container.directive';

@Component({
  standalone: true,
  imports: [CbmResizeContainerDirective],
  template: `
    <div cbmResizeContainerDirective>
      <div *ngFor="let i of items">Item {{ i }}</div>
    </div>
  `
})
export class DemoComponent { items = [1,2,3]; }

Nota: en monorepo preferimos importar la directiva desde projects/.../src/lib/... durante el desarrollo.

Desarrollo y build

Desde la raíz del workspace:

# compilar la librería
npx -p @angular/cli@20 ng build resize-container-directive

# (opcional) servir la app de ejemplo
npm start

Pruebas

Ejecuta las pruebas unitarias:

ng test resize-container-directive

Publicación

  1. Ejecuta ng build resize-container-directive.
  2. Ve a dist/resize-container-directive.
  3. Ejecuta npm publish (o publica en tu registry privado).

Migración y compatibilidad

  • Esta versión apunta a Angular 20.1.5 como peerDependencies. Si migras desde Angular 17 o versiones anteriores, revisa el uso de signals, computed y effect en la directiva.

Contribuciones

Pull requests y correcciones son bienvenidas. Sigue las convenciones del monorepo y ejecuta ng test antes de enviar PR.

Licencia

Licencia del proyecto (ver package.json del monorepo).