Компонент навигационного меню для Angular | ng-hub-ui-nav

Навигационный компонент для Angular с выпадающими меню, панелями drill-down, адаптивным сворачиванием, интеграцией с Router и тематизацией через CSS-переменные.

Справочник API

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

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

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

ИмяТипПо умолчаниюОписание
itemsОбязательноHubNavItem[]Массив элементов навигации для отрисовки. Каждый элемент определяет свой тип (link, dropdown, header, separator, custom), label, route, icon, badge, children и многое другое.
configPartial<HubNavConfig>{}Частичные переопределения конфигурации, объединяемые с глобальными значениями по умолчанию. Управляет ориентацией, триггером выпадающего списка, режимом сворачивания, breakpoint, позицией и многим другим.
navClassstring''Дополнительный CSS-класс, применяемый к элементу контейнера nav.
itemTemplateTemplateRef<HubNavItemTemplateContext> | nullnullНеобязательный пользовательский шаблон для отрисовки элементов nav через input-привязку. Директива hubNavItemTemplate имеет приоритет над этим input.

События

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

ИмяТипОписание
itemClickOutputEmitterRef<HubNavItem>Вызывается при клике по элементу link. Предоставляет нажатый HubNavItem.
dropdownOpenOutputEmitterRef<HubNavItem>Вызывается при открытии элемента dropdown.
dropdownCloseOutputEmitterRef<HubNavItem>Вызывается при закрытии элемента dropdown.
mobileToggleOutputEmitterRef<boolean>Вызывается при переключении мобильной панели. Предоставляет true при открытии, false при закрытии.
panelChangeOutputEmitterRef<HubNavPanelEvent>Вызывается при открытии, закрытии, углублении (drill-down) или возврате панели. Предоставляет элемент, индекс панели и тип действия.

Шаблоны

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

ИмяОписаниеПример
hubNavStartПроецирует пользовательское содержимое в слот start. Горизонтально: визуальное начало (слева в LTR, справа в RTL). Вертикально: верх основной колонки.<hub-nav [items]="items"> <ng-template hubNavStart let-collapsed="collapsed"> <img src="logo.svg" alt="Brand" /> @if (!collapsed) { <span>App Name</span> } </ng-template> </hub-nav>
hubNavEndПроецирует пользовательское содержимое в слот end. Горизонтально: визуальный конец (справа в LTR, слева в RTL). Вертикально: низ основной колонки.<hub-nav [items]="items"> <ng-template hubNavEnd> <button type="button">Sign out</button> </ng-template> </hub-nav>
hubNavItemTemplateПереопределяет отрисовку элемента по умолчанию пользовательским шаблоном. Получает HubNavItemTemplateContext со свойствами $implicit (item), active, expanded и depth.<hub-nav [items]="items"> <ng-template hubNavItemTemplate let-item let-active="active"> <span [class.fw-bold]="active">{{ item.label }}</span> @if (item.badge) { <span class="badge">{{ item.badge }}</span> } </ng-template> </hub-nav>

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

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

Компоновка

Управление общими размерами nav, внутренними отступами и интервалами.

ПеременнаяПо умолчаниюТипОписание
--hub-nav-height3.5remlength Высота панели навигации. 3rem4remauto
--hub-nav-padding-x1remlength Горизонтальный внутренний отступ контейнера nav. 0.5rem1.5rem2rem
--hub-nav-padding-y0.5remlength Вертикальный внутренний отступ контейнера nav. 0.25rem0.75rem1rem
--hub-nav-gap0.25remlength Промежуток между элементами nav. 00.5rem1rem

Цвета и фон

Управление цветовой схемой и границами nav.

ПеременнаяПо умолчаниюТипОписание
--hub-nav-bg#fffcolor Цвет фона панели навигации. #f8f9fatransparentvar(--hub-sys-surface-page)
--hub-nav-color#212529color Базовый цвет текста навигации. #333#fffvar(--hub-sys-text-primary)
--hub-nav-border-color#dee2e6color Цвет границы панели навигации. transparent#cccvar(--hub-sys-border-color-default)

Элементы

Стилизация отдельных элементов навигации во всех состояниях.

ПеременнаяПо умолчаниюТипОписание
--hub-nav-item-padding-x1remlength Горизонтальный внутренний отступ внутри элементов nav. 0.5rem1.25rem1.5rem
--hub-nav-item-padding-y0.5remlength Вертикальный внутренний отступ внутри элементов nav. 0.25rem0.75rem1rem
--hub-nav-item-color#212529color Цвет текста элементов nav. #495057#fffinherit
--hub-nav-item-border-radius0.25remlength Радиус скругления элементов nav. 00.375rem50rem
--hub-nav-item-hover-bgrgba(0, 0, 0, 0.04)color Цвет фона при наведении. #e9ecefrgba(255, 255, 255, 0.1)transparent
--hub-nav-item-hover-color#0d6efdcolor Цвет текста при наведении. #0a58ca#fffvar(--hub-sys-color-primary)
--hub-nav-item-active-bg#0d6efdcolor Цвет фона, когда элемент активен. #0a58catransparentvar(--hub-sys-color-primary)
--hub-nav-item-active-color#fffcolor Цвет текста, когда элемент активен. #0d6efd#212529var(--hub-sys-text-inverse)
--hub-nav-item-disabled-color#6c757dcolor Цвет текста отключённых элементов. #adb5bdvar(--hub-sys-text-muted)
--hub-nav-item-disabled-opacity0.65number Прозрачность отключённых элементов. 0.50.41

Выпадающий список

Настройка внешнего вида и позиционирования панели выпадающего списка.

ПеременнаяПо умолчаниюТипОписание
--hub-nav-dropdown-bg#fffcolor Цвет фона панелей выпадающего списка. #f8f9fa#343a40var(--hub-sys-surface-elevated)
--hub-nav-dropdown-border-color#dee2e6color Цвет границы панелей выпадающего списка. transparent#ccc
--hub-nav-dropdown-border-radius0.375remlength Радиус скругления панелей выпадающего списка. 00.25rem0.5rem
--hub-nav-dropdown-shadow0 0.5rem 1rem rgba(0, 0, 0, 0.15)shadow Тень панелей выпадающего списка. none0 4px 8px rgba(0,0,0,0.1)0 1rem 3rem rgba(0,0,0,0.175)
--hub-nav-dropdown-min-width12remlength Минимальная ширина панелей выпадающего списка. 10rem15rem200px

Бренд

Стилизация области слота бренда.

ПеременнаяПо умолчаниюТипОписание
--hub-nav-brand-font-size1.25remlength Размер шрифта текста бренда. 1rem1.5rem2rem
--hub-nav-brand-font-weight600number Насыщенность шрифта текста бренда. 400700800
--hub-nav-brand-color#212529color Цвет текста бренда. #fff#0d6efdinherit

Мобильная панель

Конфигурация адаптивной мобильной панели навигации.

ПеременнаяПо умолчаниюТипОписание
--hub-nav-mobile-bg#fffcolor Цвет фона мобильной панели. #f8f9fa#212529var(--hub-sys-surface-page)
--hub-nav-mobile-width18remlength Ширина выдвижной мобильной панели. 15rem20rem80vw
--hub-nav-mobile-backdrop-bgrgba(0, 0, 0, 0.5)color Цвет затемнения позади мобильной панели. rgba(0, 0, 0, 0.3)rgba(0, 0, 0, 0.75)transparent
--hub-nav-mobile-transition300ms easetransition Тайминг перехода для анимации открытия/закрытия мобильной панели. 200ms ease-in-out400ms ease150ms linear

Accordion и иконки

Вертикальный отступ accordion и размер иконок.

ПеременнаяПо умолчаниюТипОписание
--hub-nav-accordion-indent1remlength Левый отступ на каждый уровень вложенности в вертикальном режиме accordion. 0.5rem1.5rem2rem
--hub-nav-icon-size1.25remlength Размер иконок элементов навигации. 1rem1.5rem2rem
--hub-nav-icon-gap0.5remlength Промежуток между иконкой и текстом метки. 0.25rem0.75rem1rem

Панель

Стилизация многоуровневой навигации со стопкой панелей.

ПеременнаяПо умолчаниюТипОписание
--hub-nav-panel-width16remlength Ширина каждой панели по умолчанию. 14rem18rem20rem
--hub-nav-panel-zindex100number Порядок наложения панелей (должен быть ниже z-index выпадающего списка). 50100200
--hub-nav-panel-bgvar(--hub-sys-surface-page, #fff)color Цвет фона панелей. #f8f9fa#fffvar(--hub-sys-surface-elevated)
--hub-nav-panel-colorvar(--hub-sys-text-primary, #212529)color Цвет текста внутри панелей. #333#fffinherit
--hub-nav-panel-border-colorvar(--hub-sys-border-color-default, #dee2e6)color Цвет границы между панелями. transparent#ccc
--hub-nav-panel-shadowinset 4px 0 8px -4px rgba(0, 0, 0, 0.1)shadow Тень панелей. none2px 0 4px rgba(0,0,0,0.05)
--hub-nav-panel-header-height3remlength Высота заголовка панели. 2.5rem3.5rem4rem
--hub-nav-panel-header-bgvar(--hub-sys-surface-elevated, #f8f9fa)color Цвет фона заголовка панели. #fff#e9eceftransparent
--hub-nav-panel-back-colorvar(--hub-sys-text-secondary, #6c757d)color Цвет кнопки «назад» в заголовке панели. #212529#0d6efdinherit
--hub-nav-panel-back-hover-bgrgba(0, 0, 0, 0.04)color Фон при наведении для кнопок заголовка панели. #e9ecefrgba(0,0,0,0.08)

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

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