Tabs divide content into groups and allow you to switch between them without reloading the page.

BruteForce tab content

You can place a long list of tabs vertically so all elements can be visible without scrolling. To enable the function, use the vertical attribute.

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.

You can use untitled vertical tabs. In this case, add a tooltip for icons to clarify the name of each section.

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.

Use the underlined attribute.

If a tab contains only an icon without a label, add the iconOnly attribute to the kbqTabLabel directive - this sets a fixed size of 32×32px for the clickable area.

A disabled tab can't be selected. It doesn't have interactive states.

To specify that a tab is empty, use the empty attribute. You can select such a tab, and it has interactive states.

1005 incidents have been registered

Don't use empty tabs together with inactive tabs. They look similar, which may confuse users.

Horizontal tabs don't wrap or shrink. If there isn't enough space, some tabs are hidden and scroll buttons appear at the edges. Tabs can also be scrolled horizontally on a touchpad, with the mouse wheel while holding Shift, or by dragging.

Vertical tabs can be scrolled if they don't fit within the available height.

BruteForce tab content

By default, the width of horizontal tabs depends on the text inside them. If necessary, the panel with tabs can match the container width. For this, use the kbq-stretch-tabs attribute.

You can configure how tabs look according to your product design using the kbqTabLabel directive.

Unlike KbqTabGroup, KbqTabNavBar is used for navigation between application pages or sections (using routerLink).

A nav bar is a navigation landmark by default. It only becomes a real tablist when you point it at the region it drives with [tabNavPanel] — see Accessibility.

Create and delete tabs like in a browser. The create button is located at the end of the list of tabs. When there is scrolling, the button moves to the right to remain visible.

Vertical tabs

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.

Horizontal and vertical tabs take different arrows, and the pair that does not match the orientation does nothing.

KeyAction
←Move the focus to the previous tab (horizontal)
→Move the focus to the next tab (horizontal)
↑Move the focus to the previous tab (vertical)
↓Move the focus to the next tab (vertical)
HomeMove the focus to the first tab
EndMove the focus to the last tab
Space / EnterSelect the tab in focus

Activation is manual. Arrow keys move the focus without changing the selection: the tab in focus becomes the current one only on Space or Enter. This lets a user walk a long strip without loading every panel on the way.

The strip is a single tab stop. Exactly one tab carries tabindex="0" and the rest carry -1, so Tab enters and leaves the strip in one press and the arrows move within it. Disabled tabs stay in the strip but are skipped by the arrows, so a group whose first tab is disabled is still reachable.

KbqTabGroup emits the full tabs pattern. The label strip is a tablist (with aria-orientation="vertical" when vertical is set), each label is a tab with aria-selected and aria-controls, and each content region is a tabpanel with aria-labelledby pointing back at its label. The active panel takes a tab stop of its own so it is reachable even when it holds nothing focusable.

KbqTabNavBar needs [tabNavPanel]. Without it the nav bar is plain navigation: it emits no role="tablist", its links emit no role="tab"/aria-selected, and the active link is marked with aria-current="page" instead. Bind [tabNavPanel] to a kbqTabNavPanel element whenever the nav bar switches a region on the same page rather than navigating away.

A tab group remembers which tab was selected and restores the state after a page reload. On by default — use [useStateSaving]="false" to turn it off on a specific component.

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

Nothing is persisted while selectedIndex or activeTab is bound: the selection belongs to whatever drives that binding.

Give the tabs a tabId. It is the only identity that survives the tabs being reordered — without it the selection falls back to a position, and a dev-mode warning says so.

kbq-tab-nav-bar never persists: the router decides which link is active, and the URL is the state worth restoring. clearSavedState() removes what is stored.

Keys, storage and expiry work the same for every component that persists — see Saving component state.

Use tabs in the following cases:

  • For content navigation on a page when it's vital to have quick access to separate parts.
  • For additional navigation.

Don't use tabs in the following cases:

  • When you can place all content on a single page or screen. There's no need to hide some of its parts under tabs.
  • For selecting values in forms. Don't confuse tabs with input boxes: radio buttons and button toggles.
  • For main navigation. Use the Navbar component instead.
  • When you need to change the view for the same type of data (list, tile, or table). Instead, use a button menu or button toggle.
  • When there's already content in a tab. You can't use both vertical and horizontal tabs at the same time. Instead, use fewer tabs, use only one type of tab, a button toggle, or button menu.
  • If there's only one tab, you don't need a panel with tabs.
  • For indicating steps in the form master. Tabs have a similar appearance to steps. To make sure that there is no confusion, a designer must use different styles for these elements. It's useful to leave a comment for a developer as well. For example: Note that these are form steps, not tabs.
Suggestions for improvement
If you found a mistake or want to improve the article, create an issue on GitHub.