Вкладки разделяют содержимое на группы и позволяют переключаться между ними без перезагрузки страницы.

BruteForce tab content

Длинный список вкладок можно разместить вертикально, чтобы все элементы были видны без прокрутки. Для включения используется атрибут vertical.

In computing [0], a denial-of-service attack (DoS attack) is a cyber-attack in which the perpetrator seeks to make a machine or network resource unavailable to its intended users by temporarily or indefinitely disrupting services of a host connected to a network. Denial of service is typically accomplished by flooding the targeted machine or resource with superfluous requests in an attempt to overload systems and prevent some or all legitimate requests from being fulfilled. The range of attacks varies widely, spanning from inundating a server with millions of requests to slow its performance, overwhelming a server with a substantial amount of invalid data, to submitting requests with an illegitimate IP address.

In a distributed denial-of-service attack [0] (DDoS attack), the incoming traffic flooding the victim originates from many different sources. More sophisticated strategies are required to mitigate this type of attack; simply attempting to block a single source is insufficient as there are multiple sources. A DoS or DDoS attack is analogous to a group of people crowding the entry door of a shop, making it hard for legitimate customers to enter, thus disrupting trade and losing the business money. Criminal perpetrators of DoS attacks often target sites or services hosted on high-profile web servers such as banks or credit card payment gateways. Revenge and blackmail, as well as hacktivism, can motivate these attacks.

Вертикальные вкладки можно использовать и без подписи. В таком случае лучше добавить тултип для иконок, чтобы пояснить название каждого раздела.

In computing, a denial-of-service attack (DoS attack) is a cyber-attack in which the perpetrator seeks to make a machine or network resource unavailable to its intended users by temporarily or indefinitely disrupting services of a host connected to a network. Denial of service is typically accomplished by flooding the targeted machine or resource with superfluous requests in an attempt to overload systems and prevent some or all legitimate requests from being fulfilled. The range of attacks varies widely, spanning from inundating a server with millions of requests to slow its performance, overwhelming a server with a substantial amount of invalid data, to submitting requests with an illegitimate IP address.

In a distributed denial-of-service attack (DDoS attack), the incoming traffic flooding the victim originates from many different sources. More sophisticated strategies are required to mitigate this type of attack; simply attempting to block a single source is insufficient as there are multiple sources. A DoS or DDoS attack is analogous to a group of people crowding the entry door of a shop, making it hard for legitimate customers to enter, thus disrupting trade and losing the business money. Criminal perpetrators of DoS attacks often target sites or services hosted on high-profile web servers such as banks or credit card payment gateways. Revenge and blackmail, as well as hacktivism, can motivate these attacks.

Настраивается при помощи атрибута underlined.

Если вкладка содержит только иконку без подписи, добавьте атрибут iconOnly к директиве kbqTabLabel - это задаёт фиксированный размер 32×32px для области нажатия.

Неактивную вкладку нельзя выбрать, она не имеет интерактивных состояний.

Если нужно обозначить, что внутри вкладки пусто, используйте атрибут empty. Такую вкладку можно выбрать, она имеет интерактивные состояния.

1005 incidents have been registered

Не используйте пустые вкладки вместе с неактивными. Они внешне похожи — это запутает пользователя.

Горизонтальные вкладки не переносятся и не сжимаются. Если места не хватает, часть скрывается, а по краям появляются кнопки прокрутки. Вкладки также прокручиваются на тачпаде, колесом мыши с нажатой клавишей Shift или перетаскиванием.

Вертикальные вкладки можно прокручивать, если они не помещаются по высоте.

BruteForce tab content

По умолчанию ширина горизонтальных вкладок зависит от подписей внутри элементов, но при необходимости панель табов может заполнять все пространство контейнера, для включения используйте атрибут kbq-stretch-tabs.

Внешний вид вкладок можно настроить под особый дизайн в продукте, при помощи директивы kbq-tab-label.

KbqTabNavBar в отличии от KbqTabGroup используется для навигации между различными страницами или разделами приложения (при помощи routerLink).

По умолчанию это навигация, а не вкладки. Настоящим tablist панель становится, только если указать область, которой она управляет, через [tabNavPanel] — см. Доступность.

Создание и удаление как в браузере. Кнопка создания располагается в конце списка вкладок. Когда есть прокрутка, то кнопка перемещается направо, чтобы всегда оставаться видимой.

Вертикальные вкладки

BruteForce

In cryptography, a brute-force attack consists of an attacker submitting many passwords or passphrases with the hope of eventually guessing correctly. The attacker systematically checks all possible passwords and passphrases until the correct one is found. Alternatively, the attacker can attempt to guess the key which is typically created from the password using a key derivation function. This is known as an exhaustive key search. This approach doesn't depend on intellectual tactics; rather, it relies on making several attempts.

In cryptography, a brute-force attack consists of an attacker submitting many passwords or passphrases with the hope of eventually guessing correctly. The attacker systematically checks all possible passwords and passphrases until the correct one is found. Alternatively, the attacker can attempt to guess the key which is typically created from the password using a key derivation function. This is known as an exhaustive key search. This approach doesn't depend on intellectual tactics; rather, it relies on making several attempts.

Горизонтальные и вертикальные вкладки используют разные стрелки: пара, не совпадающая с ориентацией, ничего не делает.

КлавишаДействие
←Переместить фокус на предыдущую вкладку (горизонтальные)
→Переместить фокус на следующую вкладку (горизонтальные)
↑Переместить фокус на предыдущую вкладку (вертикальные)
↓Переместить фокус на следующую вкладку (вертикальные)
HomeПереместить фокус на первую вкладку
EndПереместить фокус на последнюю вкладку
Space / EnterПереключиться на сфокусированную вкладку

Переключение — ручное. Стрелки перемещают фокус, не меняя выбор: вкладка в фокусе становится активной только по Space или Enter. Это позволяет пройти длинный список вкладок, не загружая содержимое каждой по пути.

Панель вкладок — одна остановка Tab. Ровно одна вкладка имеет tabindex="0", остальные — -1, поэтому Tab входит в панель и выходит из неё за одно нажатие, а перемещение внутри выполняется стрелками. Отключённые вкладки остаются в панели, но стрелками пропускаются, поэтому группа с отключённой первой вкладкой всё равно доступна с клавиатуры.

KbqTabGroup реализует паттерн вкладок полностью. Панель ярлыков — это tablist (с aria-orientation="vertical" при vertical), каждый ярлык — tab с aria-selected и aria-controls, а каждая область содержимого — tabpanel с aria-labelledby, ссылающимся обратно на свой ярлык. Активная область получает собственную остановку Tab, поэтому она достижима, даже если внутри нет фокусируемых элементов.

KbqTabNavBar требует [tabNavPanel]. Без него это обычная навигация: панель не отдаёт role="tablist", ссылки не отдают role="tab"/aria-selected, а активная ссылка помечается aria-current="page". Указывайте [tabNavPanel] на элемент с kbqTabNavPanel всякий раз, когда панель переключает область на той же странице, а не ведёт на другую.

Группа вкладок запоминает, какая вкладка была выбрана, и восстанавливает состояние после перезагрузки страницы. Включено по умолчанию — используйте [useStateSaving]="false" для отключения у компонента.

Данный текст используется для иллюстрации содержимого вкладки

Пока привязаны selectedIndex или activeTab, не сохраняется ничего: выбор принадлежит тому, кто управляет привязкой.

Задавайте вкладкам tabId. Только идентификатор переживает перестановку вкладок — без него выбор откатывается на позицию, о чём в режиме разработки выводится предупреждение.

kbq-tab-nav-bar не сохраняет состояние никогда: активную ссылку определяет роутер, а восстанавливать имеет смысл URL. Удалить сохранённое: clearSavedState().

Ключи, хранилище и срок жизни записи одинаковы у всех компонентов, которые сохраняются, — см. Сохранение состояния компонентов.

Используйте вкладки:

  • Для навигации по контенту на странице, когда важно дать быстрый доступ к отдельным частям.
  • Для второстепенной навигации.

Не используйте вкладки:

  • Когда весь контент можно разместить на одной странице, на одном экране. Незачем прятать отдельные части во вкладки.
  • Для выбора значения в формах. Не путай вкладки с полями ввода: радиокнопками, кнопками-переключателями.
  • Для основной навигации. Для этого есть компонент Navbar.
  • Когда надо изменить представление одних и тех же данных (список, плитка, таблица). Взамен используйте кнопку-меню или кнопку-переключатель.
  • Когда контент уже вложен во вкладку. В том числе нельзя одновременно использовать вертикальные и горизонтальные вкладки. Вместо этого сократите количество вкладок, используйте только один вид вкладок или кнопку-переключатель, кнопку-меню.
  • Когда предполагается всего один таб. В этом случае панель вкладок вовсе не нужна.
  • Для обозначения шагов в форме-мастере. По внешним признакам вкладки похожи на шаги, и дизайнеру стоит избегать этой путаницы, поэтому стилизовать эти элементы нужно по‑разному. Полезно подстраховаться и оставить заметку для разработчика. Например: обрати внимание, это не вкладки, а шаги формы.
Предложения по улучшению
Если вы нашли ошибку или хотите доработать статью, создайте запрос на GitHub.