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-utilsAller à
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] elementsInternationalisation (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-uiTranslatePipe - With parameters
'greeting' | translate:{ name: 'Carlos' }→ Hello, Carlos!TranslatePipe - Nested keys
'buttons.save' | translate→ Save'buttons.cancel' | translate→ CancelProgrammatic access
translationService.getTranslation('buttons.delete')→ DeletePipe de traduction
TranslatePipe pour les traductions dans les templates
TranslatePipe - Basic usage
'welcome' | translate→ Welcome to ng-hub-uiTranslatePipe - With parameters
'greeting' | translate:{ name: 'Carlos' }→ Hello, Carlos!TranslatePipe - Nested keys
'buttons.save' | translate→ Save'buttons.cancel' | translate→ CancelProgrammatic access
translationService.getTranslation('buttons.delete')→ DeleteFournisseur de traduction
provideHubTranslations() pour la configuration de l'application
TranslatePipe - Basic usage
'welcome' | translate→ Welcome to ng-hub-uiTranslatePipe - With parameters
'greeting' | translate:{ name: 'Carlos' }→ Hello, Carlos!TranslatePipe - Nested keys
'buttons.save' | translate→ Save'buttons.cancel' | translate→ CancelProgrammatic access
translationService.getTranslation('buttons.delete')→ DeleteSystè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 Doeuser | get:'profile.address.city'→ New YorkIsStringPipe - Type checking
'Hello' | isString→ true123 | isString→ falseIsObjectPipe - Object detection
{ a: 1 } | isObject→ true'string' | isObject→ falseUcfirstPipe - Capitalize first letter
'hello world' | ucfirst→ Hello worldGetPipe
Accédez aux propriétés imbriquées avec la notation par points
GetPipe - Access nested properties
user | get:'profile.name'→ John Doeuser | get:'profile.address.city'→ New YorkIsStringPipe - Type checking
'Hello' | isString→ true123 | isString→ falseIsObjectPipe - Object detection
{ a: 1 } | isObject→ true'string' | isObject→ falseUcfirstPipe - Capitalize first letter
'hello world' | ucfirst→ Hello worldUcfirstPipe
Mettez en majuscule la première lettre d'une chaîne
GetPipe - Access nested properties
user | get:'profile.name'→ John Doeuser | get:'profile.address.city'→ New YorkIsStringPipe - Type checking
'Hello' | isString→ true123 | isString→ falseIsObjectPipe - Object detection
{ a: 1 } | isObject→ true'string' | isObject→ falseUcfirstPipe - Capitalize first letter
'hello world' | ucfirst→ Hello worldUnwrapAsyncPipe
Déballez les observables et les promesses dans les templates
GetPipe - Access nested properties
user | get:'profile.name'→ John Doeuser | get:'profile.address.city'→ New YorkIsStringPipe - Type checking
'Hello' | isString→ true123 | isString→ falseIsObjectPipe - Object detection
{ a: 1 } | isObject→ true'string' | isObject→ falseUcfirstPipe - Capitalize first letter
'hello world' | ucfirst→ Hello worldFonctions utilitaires
Fonctions helper d'usage général
Exemples:
Type guards
isString(), isNumber(), isDefined(), isPromise()
Type Guards
isString('hello')→ trueisNumber(42)→ trueisDefined(null)→ falseisDefined('value')→ trueDeep Equality
equals({a:1}, {a:1})→ trueequals([1,2], [1,2])→ trueObject Access
getValue(user, 'profile.name')→ John DoeString Interpolation
interpolateString('Hello {{name}}', {name: 'World'})→ Hello WorldString Utilities
removeAccents('Ñoño café')→ Nono cafepadNumber(5)→ 05Utilitaires de chaînes
removeAccents(), interpolateString(), regExpEscape()
Type Guards
isString('hello')→ trueisNumber(42)→ trueisDefined(null)→ falseisDefined('value')→ trueDeep Equality
equals({a:1}, {a:1})→ trueequals([1,2], [1,2])→ trueObject Access
getValue(user, 'profile.name')→ John DoeString Interpolation
interpolateString('Hello {{name}}', {name: 'World'})→ Hello WorldString Utilities
removeAccents('Ñoño café')→ Nono cafepadNumber(5)→ 05Utilitaires d'objets
equals() pour la comparaison en profondeur, getValue() pour la notation pointée.
Type Guards
isString('hello')→ trueisNumber(42)→ trueisDefined(null)→ falseisDefined('value')→ trueDeep Equality
equals({a:1}, {a:1})→ trueequals([1,2], [1,2])→ trueObject Access
getValue(user, 'profile.name')→ John DoeString Interpolation
interpolateString('Hello {{name}}', {name: 'World'})→ Hello WorldString Utilities
removeAccents('Ñoño café')→ Nono cafepadNumber(5)→ 05Utilitaires du DOM
closest(), reflow(), getActiveElement()
Type Guards
isString('hello')→ trueisNumber(42)→ trueisDefined(null)→ falseisDefined('value')→ trueDeep Equality
equals({a:1}, {a:1})→ trueequals([1,2], [1,2])→ trueObject Access
getValue(user, 'profile.name')→ John DoeString Interpolation
interpolateString('Hello {{name}}', {name: 'World'})→ Hello WorldString Utilities
removeAccents('Ñoño café')→ Nono cafepadNumber(5)→ 05Utilitaires RxJS
Opérateur runInZone() pour l'intégration avec NgZone.
Type Guards
isString('hello')→ trueisNumber(42)→ trueisDefined(null)→ falseisDefined('value')→ trueDeep Equality
equals({a:1}, {a:1})→ trueequals([1,2], [1,2])→ trueObject Access
getValue(user, 'profile.name')→ John DoeString Interpolation
interpolateString('Hello {{name}}', {name: 'World'})→ Hello WorldString Utilities
removeAccents('Ñoño café')→ Nono cafepadNumber(5)→ 05Utilitaires 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.
--hub-tooltip-* variablesFonctionnalités clés
Changements récents
Aucune entrée de changelog disponible.