Библиотека форм для Angular | ng-hub-ui-forms

Доступные поля форм для Angular (input, textarea, slider, select, datepicker) с автоматическим выводом ошибок на уровне контрола, группы и формы, реактивными формами и CSS-переменными.

Справочник API

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

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

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

ИмяТипПо умолчаниюОписание
formControlName / [formControl]string | FormControlПривязывает любое поле к реактивному контролу. Ошибки отображаются автоматически, когда контрол был затронут (touched) и недействителен.
labelstring''Текст метки поля.
labelType'stacked' | 'floating' | 'horizontal''stacked'Расположение метки.
placeholderstring''Текст placeholder.
formTextstringВспомогательный текст, отображаемый под контролом.
type (hub-input)'text' | 'number' | 'password' | 'email' | 'tel' | 'url' | 'color' | 'checkbox' | 'switch' | 'counter' | 'file''text'Формат hub-input.
prepend / append (hub-input)string | string[]Текст дополнения input-group перед / после контрола.
mask (hub-input)stringМаска шаблона для текстовых форматов. Токены: 0 = цифра, A = буква, * = буквенно-цифровой символ; остальные символы являются буквальными разделителями. Например, "0000 0000 0000 0000".
unmaskValue (hub-input)booleanfalseПри заданной маске сохранять в форме необработанные введённые символы (без разделителей) вместо форматированного текста.
range (hub-slider)booleanfalseПолзунок диапазона с двумя бегунками; значение становится кортежем [lower, upper].
format (hub-select)'dropdown' | 'buttons' | 'checkbox' | 'radio''dropdown'Как select отображает одно и то же значение.
items / bindLabel / bindValue / multiple (hub-select)any[] / string / string / booleanОпции, имена свойств label/value для объектных элементов и множественный выбор.
mode (hub-datepicker)'single' | 'range''single'Одна дата или диапазон дат.
min / max / disabledDates (hub-datepicker)string | Date / (date) => booleanГраницы выбираемых дат и предикат отключения для каждой даты.

События

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

ИмяТипОписание
valueChangeEventEmitter<value>Вызывается при каждом изменении значения поля.
submit (form[hubForm])EventEmitter<void>Вызывается при отправке, после того как дерево помечено как touched.
opened / closed / cleared / viewChange (hub-datepicker)EventEmitterСобытия жизненного цикла и навигации календаря.
onOpen / onClose / onClear / onSearch / onAdd / onRemove (hub-select)EventEmitterСобытия жизненного цикла выпадающего списка и события tag/typeahead.

Шаблоны

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

ИмяОписаниеПример
hubFormTextПроецирование насыщенного содержимого вспомогательного текста.<ng-template hubFormText>…</ng-template>
hubValidationErrorПереопределение сообщения для заданного ключа ошибки.<ng-template hubValidationError key="min">…</ng-template>
hubLegendПользовательское содержимое легенды fieldset.<ng-template hubLegend>…</ng-template>
ng-option-tmp (hub-select)Пользовательская отрисовка опций выпадающего списка (реэкспортированная директива ng-select).<ng-template ng-option-tmp let-item="item">…</ng-template>

CSS-переменные

Тематизируйте каждый пиксель с помощью 17 CSS-переменных. Переопределите их в :root или ограничьте их областью обёртки.

Общие токены полей

Оформление, общее для каждого поля: метка, вспомогательный текст, обратная связь валидации и кольцо фокуса.

ПеременнаяПо умолчаниюТипОписание
--hub-label-font-weightvar(--hub-ref-font-weight-medium)string Насыщенность метки поля.
--hub-form-feedback-colorvar(--hub-sys-color-danger)color Цвет текста ошибки валидации.
--hub-form-text-colorvar(--hub-sys-text-muted)color Цвет вспомогательного текста.
--hub-form-focus-ring-colorvar(--hub-sys-focus-ring-color)color Цвет кольца фокуса.
--hub-form-invalid-border-colorvar(--hub-sys-color-danger)color Цвет границы недопустимого элемента управления.

Input

Оформление текстового элемента управления, общее для input, textarea и триггера select.

ПеременнаяПо умолчаниюТипОписание
--hub-input-bgvar(--hub-sys-surface-page)color Фон элемента управления.
--hub-input-border-colorvar(--hub-sys-border-color-default)color Цвет границы элемента управления.
--hub-input-border-radiusvar(--hub-ref-radius-md)length Радиус скругления элемента управления.
--hub-input-padding-y0.375remlength Вертикальный внутренний отступ элемента управления.
--hub-input-padding-x0.75remlength Горизонтальный внутренний отступ элемента управления.
--hub-input-focus-border-colorvar(--hub-sys-color-primary)color Цвет границы при фокусе.

Select, slider и datepicker

Специфичные для компонентов акценты, связанные с системными токенами.

ПеременнаяПо умолчаниюТипОписание
--hub-select-option-selected-bgvar(--hub-sys-color-primary)color Фон выбранной опции выпадающего списка.
--hub-select-value-bgvar(--hub-sys-surface-elevated)color Фон чипа множественного выбора.
--hub-slider-track-fill-bgvar(--hub-sys-color-primary)color Заполненная часть дорожки slider.
--hub-slider-thumb-bgvar(--hub-sys-color-primary)color Цвет ползунка slider.
--hub-daterangepicker-active-bgvar(--hub-sys-color-primary)color Фон выбранного дня календаря.
--hub-daterangepicker-in-range-bgcolor-mix(in srgb, var(--hub-sys-color-primary) 14%, transparent)color Фон дня календаря в диапазоне.

Стилизация и тематизация

Примеры стилизации пока не задокументированы. В этом разделе будут рецепты кастомизации и примеры тематизации.