Библиотека утилит для Angular | ng-hub-ui-utils

Библиотека утилит для Angular с pipe, управлением фокусом, оверлеями, переходами и хелперами перевода, общими для переиспользуемых UI-компонентов.

Справочник API

Вот полный контракт utils: всё, что можно привязать, прослушать, спроецировать и тематизировать, собрано в одном месте. Подключите то, что нужно, и оформите так, как хотите — это standalone и дружит с сигналами.

Входные свойства

Настройте utils с помощью 4 входных свойств. Привязывайте их, как любой @Input в Angular.

ИмяТипПо умолчаниюОписание
HubTranslationServiceService-Injectable service для управления переводами. Методы: getTranslation(), setTranslations()
OverlayServiceService-Service для программного создания и управления overlays
PopupService<T>Service-Упрощённый service для создания popup-элементов
HubTooltipDirectiveDirective-Директива ([hubTooltip]), показывающая позиционируемую и тематизируемую подсказку при наведении или фокусе. Входы: hubTooltip (текст), hubTooltipPlacement, hubTooltipDelay, hubTooltipOffset. Префиксы позволяют ей делить элемент с директивами, объявляющими собственный placement, например [hubDropdown].

События

Реагируйте на то, что делает utils, — 7 событий, к которым можно подключить вашу логику.

ИмяТипОписание
TranslatePipePipeПереводит ключ с помощью HubTranslationService. Использование: {{ "key" | translate }}
GetPipePipeПолучает значение вложенного свойства. Использование: {{ object | get:"path.to.property" }}
IsStringPipePipeПроверяет, является ли значение строкой. Использование: {{ value | isString }}
IsObjectPipePipeПроверяет, является ли значение объектом. Использование: {{ value | isObject }}
IsObservablePipePipeПроверяет, является ли значение Observable. Использование: {{ value | isObservable }}
UcfirstPipePipeДелает первую букву заглавной. Использование: {{ "hello" | ucfirst }} → "Hello"
UnwrapAsyncPipePipeРазворачивает значения Observable или Promise в шаблонах

Шаблоны

Сделайте его своим — 11 слотов шаблона позволяют проецировать собственную разметку.

ИмяОписаниеПример
hubFocusTrap()Удерживает фокус клавиатуры внутри элемента. Полезно для modals и диалогов.hubFocusTrap(zone, element, stopFocusTrap$, refocusOnClick)
interpolateString()Заменяет {{ placeholders }} значениями из объектаinterpolateString("Hello {{name}}", { name: "World" }) → "Hello World"
getValue()Получает вложенное свойство с использованием точечной нотацииgetValue(obj, "user.profile.name")
equals()Глубокое сравнение на равенство для объектов и массивовequals({ a: 1 }, { a: 1 }) → true
hubAnchorToViewportСтавит блок у якоря с предпочитаемой стороны, переворачивает на противоположную только когда та сторона его не вмещает, а противоположная просторнее, и удерживает по поперечной оси.hubAnchorToViewport({ anchor, box, viewport, side: 'block-start', offset: 8 }) → { x, y, side, flipped }
hubViewportOfЧитает область просмотра через собственное представление элемента; `null` там, где его нет, — например при серверном рендеринге.hubViewportOf(element) → { width, height } | null
hubFitsInViewportПомещается ли блок такого размера, поставленный в эту точку, целиком в область просмотра после вычета отступа.hubFitsInViewport({ x, y }, { width, height }, viewport, 8) → boolean
hubClampToViewportВозвращает блок внутрь области просмотра, не сдвигая его дальше необходимого, и предпочитает ближний край, когда блок больше окна.hubClampToViewport({ x, y }, { width, height }, viewport, 8) → { x, y }
hubOppositeSideСторона прямо напротив якоря — единственная разумная замена для стороны, которая не помещается.hubOppositeSide('inline-start') → 'inline-end'
hubToAnchorSide / hubToPhysicalSideПереводит физический край в логическую ось и обратно, чтобы API, записанный в `top` / `bottom` / `left` / `right`, сохранял смысл под RTL, а переворот продумывался один раз.hubToAnchorSide('left', true) → 'inline-end'; hubToPhysicalSide('inline-end', true) → 'left'
HubAnchorOptions / HubAnchoredPositionТипы, которые принимает и возвращает решатель; сплошь простые числа, поэтому арифметику можно проверить без движка вёрстки.HubAnchorRect · HubAnchorSide · HubPhysicalSide · HubAnchorAlign · HubViewportSize · HubBoxSize · HubPoint