Bibliothèque Utilitaire Angular | ng-hub-ui-utils

Bibliothèque utilitaire Angular avec pipes, gestion du focus, overlays, transitions et helpers de traduction partagés entre les composants UI réutilisables.

Vue d’ensemble

Pourquoi les équipes recherchent cette bibliothèque

Utilisez cette bibliothèque utilitaire Angular pour éviter de réécrire les briques de bas niveau derrière les overlays, les focus traps, les helpers de traduction et les utilitaires de template courants.

Installation

npm install ng-hub-ui-utils

Aller à

Idéal pour

  • infrastructure UI partagée
  • systèmes d'overlay
  • gestion du focus
  • helpers de template

À propos de utils

ng-hub-ui-utils est la base partagée derrière de nombreux schémas d'UI réutilisables. Elle est utile lorsque les équipes Angular veulent centraliser les briques de bas niveau qui maintiennent cohérents les systèmes d'overlay, la gestion du focus, les pipes et les helpers de traduction entre les projets.

Guides de fonctionnalités

Gestion du focus

Capturez et gérez le focus clavier au sein des éléments

Exemples:
Piège de focus

Maintenez le focus contenu dans une modale ou une boîte de dialogue à l'aide de hubFocusTrap().

Focus Trap Demo

Click "Enable Focus Trap" and try to Tab outside the blue box. Focus will stay trapped inside.

Focus Trap Area

Status: 🔓 Free

Focusable Elements

The selector FOCUSABLE_ELEMENTS_SELECTOR finds all focusable elements.

getFocusableBoundaryElements(container)→ [first, last] elements
Éléments focusables

Interrogez les éléments focusables aux limites avec getFocusableBoundaryElements().

Focus Trap Demo

Click "Enable Focus Trap" and try to Tab outside the blue box. Focus will stay trapped inside.

Focus Trap Area

Status: 🔓 Free

Focusable Elements

The selector FOCUSABLE_ELEMENTS_SELECTOR finds all focusable elements.

getFocusableBoundaryElements(container)→ [first, last] elements

Internationalisation (i18n)

Services et pipes de traduction pour la prise en charge multilingue

Exemples:
Service de traduction

HubTranslationService pour gérer les traductions

TranslatePipe - Basic usage

'welcome' | translate→ Welcome to ng-hub-ui

TranslatePipe - With parameters

'greeting' | translate:{ name: 'Carlos' }→ Hello, Carlos!

TranslatePipe - Nested keys

'buttons.save' | translate→ Save
'buttons.cancel' | translate→ Cancel

Programmatic access

translationService.getTranslation('buttons.delete')→ Delete
Pipe de traduction

TranslatePipe pour les traductions dans les templates

TranslatePipe - Basic usage

'welcome' | translate→ Welcome to ng-hub-ui

TranslatePipe - With parameters

'greeting' | translate:{ name: 'Carlos' }→ Hello, Carlos!

TranslatePipe - Nested keys

'buttons.save' | translate→ Save
'buttons.cancel' | translate→ Cancel

Programmatic access

translationService.getTranslation('buttons.delete')→ Delete
Fournisseur de traduction

provideHubTranslations() pour la configuration de l'application

TranslatePipe - Basic usage

'welcome' | translate→ Welcome to ng-hub-ui

TranslatePipe - With parameters

'greeting' | translate:{ name: 'Carlos' }→ Hello, Carlos!

TranslatePipe - Nested keys

'buttons.save' | translate→ Save
'buttons.cancel' | translate→ Cancel

Programmatic access

translationService.getTranslation('buttons.delete')→ Delete

Système de superposition

Créez des overlays positionnés et des éléments flottants

Exemples:
Service d'overlay

HubOverlayService pour la création programmatique d'overlays

A connected overlay positioned below the trigger, with a backdrop that closes it on outside click.

Référence d'overlay

OverlayRef pour gérer le cycle de vie de l'overlay

A connected overlay positioned below the trigger, with a backdrop that closes it on outside click.

Positionnement

ConnectionPositionPair pour un positionnement flexible

A connected overlay positioned below the trigger, with a backdrop that closes it on outside click.

Service de popup

Gestion simplifiée des popups

Exemples:
Création de popup

HubPopupService pour créer rapidement des popups

A connected overlay positioned below the trigger, with a backdrop that closes it on outside click.

Pipes

Pipes utilitaires pour les templates

Exemples:
Pipes de vérification de type

IsStringPipe, IsObjectPipe, IsObservablePipe

GetPipe - Access nested properties

user | get:'profile.name'→ John Doe
user | get:'profile.address.city'→ New York

IsStringPipe - Type checking

'Hello' | isString→ true
123 | isString→ false

IsObjectPipe - Object detection

{ a: 1 } | isObject→ true
'string' | isObject→ false

UcfirstPipe - Capitalize first letter

'hello world' | ucfirst→ Hello world
GetPipe

Accédez aux propriétés imbriquées avec la notation par points

GetPipe - Access nested properties

user | get:'profile.name'→ John Doe
user | get:'profile.address.city'→ New York

IsStringPipe - Type checking

'Hello' | isString→ true
123 | isString→ false

IsObjectPipe - Object detection

{ a: 1 } | isObject→ true
'string' | isObject→ false

UcfirstPipe - Capitalize first letter

'hello world' | ucfirst→ Hello world
UcfirstPipe

Mettez en majuscule la première lettre d'une chaîne

GetPipe - Access nested properties

user | get:'profile.name'→ John Doe
user | get:'profile.address.city'→ New York

IsStringPipe - Type checking

'Hello' | isString→ true
123 | isString→ false

IsObjectPipe - Object detection

{ a: 1 } | isObject→ true
'string' | isObject→ false

UcfirstPipe - Capitalize first letter

'hello world' | ucfirst→ Hello world
UnwrapAsyncPipe

Déballez les observables et les promesses dans les templates

GetPipe - Access nested properties

user | get:'profile.name'→ John Doe
user | get:'profile.address.city'→ New York

IsStringPipe - Type checking

'Hello' | isString→ true
123 | isString→ false

IsObjectPipe - Object detection

{ a: 1 } | isObject→ true
'string' | isObject→ false

UcfirstPipe - Capitalize first letter

'hello world' | ucfirst→ Hello world

Fonctions utilitaires

Fonctions helper d'usage général

Exemples:
Type guards

isString(), isNumber(), isDefined(), isPromise()

Type Guards

isString('hello')→ true
isNumber(42)→ true
isDefined(null)→ false
isDefined('value')→ true

Deep Equality

equals({a:1}, {a:1})→ true
equals([1,2], [1,2])→ true

Object Access

getValue(user, 'profile.name')→ John Doe

String Interpolation

interpolateString('Hello {{name}}', {name: 'World'})→ Hello World

String Utilities

removeAccents('Ñoño café')→ Nono cafe
padNumber(5)→ 05
Utilitaires de chaînes

removeAccents(), interpolateString(), regExpEscape()

Type Guards

isString('hello')→ true
isNumber(42)→ true
isDefined(null)→ false
isDefined('value')→ true

Deep Equality

equals({a:1}, {a:1})→ true
equals([1,2], [1,2])→ true

Object Access

getValue(user, 'profile.name')→ John Doe

String Interpolation

interpolateString('Hello {{name}}', {name: 'World'})→ Hello World

String Utilities

removeAccents('Ñoño café')→ Nono cafe
padNumber(5)→ 05
Utilitaires d'objets

equals() pour la comparaison en profondeur, getValue() pour la notation pointée.

Type Guards

isString('hello')→ true
isNumber(42)→ true
isDefined(null)→ false
isDefined('value')→ true

Deep Equality

equals({a:1}, {a:1})→ true
equals([1,2], [1,2])→ true

Object Access

getValue(user, 'profile.name')→ John Doe

String Interpolation

interpolateString('Hello {{name}}', {name: 'World'})→ Hello World

String Utilities

removeAccents('Ñoño café')→ Nono cafe
padNumber(5)→ 05
Utilitaires du DOM

closest(), reflow(), getActiveElement()

Type Guards

isString('hello')→ true
isNumber(42)→ true
isDefined(null)→ false
isDefined('value')→ true

Deep Equality

equals({a:1}, {a:1})→ true
equals([1,2], [1,2])→ true

Object Access

getValue(user, 'profile.name')→ John Doe

String Interpolation

interpolateString('Hello {{name}}', {name: 'World'})→ Hello World

String Utilities

removeAccents('Ñoño café')→ Nono cafe
padNumber(5)→ 05
Utilitaires RxJS

Opérateur runInZone() pour l'intégration avec NgZone.

Type Guards

isString('hello')→ true
isNumber(42)→ true
isDefined(null)→ false
isDefined('value')→ true

Deep Equality

equals({a:1}, {a:1})→ true
equals([1,2], [1,2])→ true

Object Access

getValue(user, 'profile.name')→ John Doe

String Interpolation

interpolateString('Hello {{name}}', {name: 'World'})→ Hello World

String Utilities

removeAccents('Ñoño café')→ Nono cafe
padNumber(5)→ 05

Utilitaires de scrollbar

Mesurez et compensez la largeur de la scrollbar

Exemples:
Largeur de la scrollbar

Fonctions scrollbarWidth() et scrollbarPadding()

ScrollBar Service

The ScrollBar service helps manage scrollbar visibility and compensate for layout shifts when hiding scrollbars (e.g., when opening modals).

Use Case: Modal Body Lock

When opening a modal, you typically hide the body scrollbar. The ScrollBar.hide() method handles this automatically and returns a reverter function.

Status: 🔓 Normal scrolling

Code Example

import { inject } from '@angular/core';
import { ScrollBar } from 'ng-hub-ui-utils';

export class ModalService {
  private scrollBar = inject(ScrollBar);
  private revertScrollbar: (() => void) | null = null;

  openModal() {
    // Hide scrollbar and get reverter function
    this.revertScrollbar = this.scrollBar.hide();
  }

  closeModal() {
    // Restore scrollbar
    if (this.revertScrollbar) {
      this.revertScrollbar();
      this.revertScrollbar = null;
    }
  }
}

Transitions

Helpers de transition CSS

Exemples:
Exécuter une transition

hubRunTransition() pour des transitions CSS programmatiques

L’aperçu en direct n’est pas encore disponible pour cet exemple.

Tooltip

Lightweight, themeable tooltips for any element via the [tooltip] directive.

Exemples:
Tooltip Directive

Apply [tooltip] with a placement to show a positioned label on hover or focus, themed with --hub-tooltip-* variables.

Placements (hover the buttons)
Themed with --hub-tooltip-* variables

Fonctionnalités clés

Changements récents

Aucune entrée de changelog disponible.