From f7d35903c5e42b9a87616cae9f97636951bb186d Mon Sep 17 00:00:00 2001 From: Artem Belik Date: Mon, 10 Aug 2026 16:33:48 +0300 Subject: [PATCH 1/6] feat(scrollbar): independent scrollbar implimentation (#DS-3176) --- apps/docs/src/app/app.component.html | 1 - .../component-viewer.component.ts | 6 +- .../design-tokens-viewer.ts | 2 +- .../icons-viewer/icons-viewer.component.ts | 6 +- .../src/app/components/sidenav/sidenav.html | 4 +- .../src/app/components/sidenav/sidenav.ts | 13 +- .../stackblitz/stackblitz-writer.ts | 4 +- .../components/welcome/welcome.component.html | 52 +- .../components/welcome/welcome.component.scss | 13 +- .../components/welcome/welcome.component.ts | 6 +- docs/guides/migration.en.md | 45 + docs/guides/migration.ru.md | 45 + .../scrollbar-scroll-to-top-example.ts | 7 +- .../scrollbar-with-custom-config-example.ts | 7 +- packages/components-dev/scrollbar/module.ts | 135 +-- packages/components-dev/scrollbar/styles.scss | 29 +- .../components-dev/scrollbar/template.html | 60 +- packages/components-dev/toast/module.ts | 4 +- packages/components-dev/toast/template.html | 4 +- .../app-switcher/app-switcher.en.md | 13 - .../components/app-switcher/app-switcher.html | 4 +- .../app-switcher/app-switcher.ru.md | 13 - .../components/app-switcher/app-switcher.ts | 4 +- .../components/code-block/code-block.html | 5 +- packages/components/code-block/code-block.ts | 10 +- .../content-panel/content-panel.en.md | 13 - .../content-panel/content-panel.ru.md | 13 - .../components/content-panel/content-panel.ts | 27 +- .../content-panel/e2e.playwright-spec.ts | 4 +- .../components/core/styles/_koobiq-theme.scss | 1 + .../core/styles/theming/_scrollbar-theme.scss | 5 + .../core/styles/theming/scrollbar-tokens.scss | 3 + .../notification-center.en.md | 13 - .../notification-center.html | 4 +- .../notification-center.ru.md | 13 - .../notification-center.scss | 21 +- .../notification-center.spec.ts | 20 +- .../notification-center.ts | 12 +- .../scrollbar/__screenshots__/01-dark.png | Bin 36279 -> 4125 bytes .../scrollbar/__screenshots__/01-light.png | Bin 35657 -> 3798 bytes .../deprecated/__screenshots__/01-dark.png | Bin 0 -> 46469 bytes .../deprecated/__screenshots__/01-light.png | Bin 0 -> 43924 bytes .../_scrollbar-component-theme.scss | 2 +- .../deprecated/e2e.playwright-spec.ts | 21 + .../components/scrollbar/deprecated/e2e.ts | 73 ++ .../components/scrollbar/deprecated/index.ts | 1 + .../scrollbar/deprecated/ng-package.json | 5 + .../scrollbar/deprecated/public-api.ts | 4 + .../{ => deprecated}/scrollbar-tokens.scss | 0 .../{ => deprecated}/scrollbar.component.scss | 2 +- .../scrollbar.component.spec.ts | 0 .../{ => deprecated}/scrollbar.component.ts | 5 + .../{ => deprecated}/scrollbar.directive.ts | 4 + .../scrollbar/deprecated/scrollbar.module.ts | 22 + .../{ => deprecated}/scrollbar.types.ts | 0 .../scrollbar/e2e.playwright-spec.ts | 414 +++++++- packages/components/scrollbar/e2e.ts | 348 +++++-- .../scrollbar/examples.scrollbar.en.md | 6 +- .../scrollbar/examples.scrollbar.ru.md | 6 +- packages/components/scrollbar/index.ts | 2 +- packages/components/scrollbar/public-api.ts | 4 +- .../components/scrollbar/scrollbar-track.scss | 102 ++ .../scrollbar/scrollbar-viewport.scss | 43 + packages/components/scrollbar/scrollbar.en.md | 49 +- .../components/scrollbar/scrollbar.module.ts | 8 +- packages/components/scrollbar/scrollbar.ru.md | 49 +- packages/components/scrollbar/scrollbar.scss | 24 + .../components/scrollbar/scrollbar.spec.ts | 932 ++++++++++++++++++ packages/components/scrollbar/scrollbar.ts | 650 ++++++++++++ .../ag-grid-infinite-selection-example.ts | 2 +- .../list-intermediate-state-example.ts | 4 +- .../components/scrollbar/index.ts | 12 +- .../scrollbar-overview-example.ts | 93 +- .../scrollbar-scroll-to-example.ts | 126 +++ .../scrollbar-virtual-scroll-example.ts | 52 + packages/docs-examples/example-module.ts | 34 +- packages/e2e/routes.ts | 18 +- packages/schematics/src/collection.json | 5 + packages/schematics/src/migrations.json | 5 + .../scrollbar-deprecated-path/index.spec.ts | 183 ++++ .../scrollbar-deprecated-path/index.ts | 68 ++ .../scrollbar-deprecated-path/schema.json | 20 + .../scrollbar-deprecated-path/schema.ts | 6 + tools/api-extractor/api-extractor.ts | 8 +- tools/cspell-locales/ru.json | 3 + .../components/scrollbar-deprecated.api.md | 158 +++ .../components/scrollbar.api.md | 187 ++-- tsconfig.json | 1 + 88 files changed, 3706 insertions(+), 696 deletions(-) rename packages/{docs-examples/components/scrollbar/scrollbar-scroll-to-top => components-dev/scrollbar/deprecated}/scrollbar-scroll-to-top-example.ts (86%) rename packages/{docs-examples/components/scrollbar/scrollbar-with-custom-config => components-dev/scrollbar/deprecated}/scrollbar-with-custom-config-example.ts (78%) create mode 100644 packages/components/scrollbar/deprecated/__screenshots__/01-dark.png create mode 100644 packages/components/scrollbar/deprecated/__screenshots__/01-light.png rename packages/components/scrollbar/{ => deprecated}/_scrollbar-component-theme.scss (97%) create mode 100644 packages/components/scrollbar/deprecated/e2e.playwright-spec.ts create mode 100644 packages/components/scrollbar/deprecated/e2e.ts create mode 100644 packages/components/scrollbar/deprecated/index.ts create mode 100644 packages/components/scrollbar/deprecated/ng-package.json create mode 100644 packages/components/scrollbar/deprecated/public-api.ts rename packages/components/scrollbar/{ => deprecated}/scrollbar-tokens.scss (100%) rename packages/components/scrollbar/{ => deprecated}/scrollbar.component.scss (99%) rename packages/components/scrollbar/{ => deprecated}/scrollbar.component.spec.ts (100%) rename packages/components/scrollbar/{ => deprecated}/scrollbar.component.ts (96%) rename packages/components/scrollbar/{ => deprecated}/scrollbar.directive.ts (96%) create mode 100644 packages/components/scrollbar/deprecated/scrollbar.module.ts rename packages/components/scrollbar/{ => deprecated}/scrollbar.types.ts (100%) create mode 100644 packages/components/scrollbar/scrollbar-track.scss create mode 100644 packages/components/scrollbar/scrollbar-viewport.scss create mode 100644 packages/components/scrollbar/scrollbar.scss create mode 100644 packages/components/scrollbar/scrollbar.spec.ts create mode 100644 packages/components/scrollbar/scrollbar.ts create mode 100644 packages/docs-examples/components/scrollbar/scrollbar-scroll-to/scrollbar-scroll-to-example.ts create mode 100644 packages/docs-examples/components/scrollbar/scrollbar-virtual-scroll/scrollbar-virtual-scroll-example.ts create mode 100644 packages/schematics/src/migrations/scrollbar-deprecated-path/index.spec.ts create mode 100644 packages/schematics/src/migrations/scrollbar-deprecated-path/index.ts create mode 100644 packages/schematics/src/migrations/scrollbar-deprecated-path/schema.json create mode 100644 packages/schematics/src/migrations/scrollbar-deprecated-path/schema.ts create mode 100644 tools/public_api_guard/components/scrollbar-deprecated.api.md diff --git a/apps/docs/src/app/app.component.html b/apps/docs/src/app/app.component.html index e5a73bee6e..d110f36e0b 100644 --- a/apps/docs/src/app/app.component.html +++ b/apps/docs/src/app/app.component.html @@ -4,7 +4,6 @@ } @else { + -
+
- {{ t('welcomeTitle') }} - +
+
+ {{ t('welcomeTitle') }} +
-
- {{ t('welcomeDescription') }} -
+
+ {{ t('welcomeDescription') }} +
-@for (category of structureCategories; track category) { -
-
{{ category.name[locale()] }}
-
- @let theme = currentTheme(); + @for (category of structureCategories; track category) { +
+
{{ category.name[locale()] }}
+
+ @let theme = currentTheme(); - @for (item of category.items; track item) { - - -
{{ item.name[locale()] }}
-
- } + @for (item of category.items; track item) { + + +
{{ item.name[locale()] }}
+
+ } +
-
-} + } +
diff --git a/apps/docs/src/app/components/welcome/welcome.component.scss b/apps/docs/src/app/components/welcome/welcome.component.scss index 448caf3a06..63ae2aeaed 100644 --- a/apps/docs/src/app/components/welcome/welcome.component.scss +++ b/apps/docs/src/app/components/welcome/welcome.component.scss @@ -9,6 +9,13 @@ scroll-behavior: smooth; min-width: 0; +} + +// Padding lives on the inner wrapper, not on the scroll host, so the custom scrollbar track hugs the +// right edge instead of being pushed inward by the host's horizontal padding. +.docs-welcome__content { + display: flex; + flex-direction: column; padding-bottom: 160px; padding-left: 160px; @@ -50,7 +57,7 @@ } @media (width < 768px) { - .docs-welcome { + .docs-welcome__content { padding: var(--kbq-size-l) var(--kbq-size-l) 160px; } @@ -64,13 +71,13 @@ } @media (768px <= width < 1200px) { - .docs-welcome { + .docs-welcome__content { padding: 0 var(--kbq-size-xxl) 160px var(--kbq-size-xxl); } } @media (1200px <= width < 1920px) { - .docs-welcome { + .docs-welcome__content { padding: 0 var(--kbq-size-7xl) 160px var(--kbq-size-7xl); } } diff --git a/apps/docs/src/app/components/welcome/welcome.component.ts b/apps/docs/src/app/components/welcome/welcome.component.ts index 025879891d..893e75e2a1 100644 --- a/apps/docs/src/app/components/welcome/welcome.component.ts +++ b/apps/docs/src/app/components/welcome/welcome.component.ts @@ -5,6 +5,7 @@ import { RouterLink } from '@angular/router'; import { ThemeService } from '@koobiq/components/core'; import { KbqIconModule } from '@koobiq/components/icon'; import { KbqLinkModule } from '@koobiq/components/link'; +import { KbqScrollbarViewport } from '@koobiq/components/scrollbar'; import { fromEvent } from 'rxjs'; import { debounceTime, map } from 'rxjs/operators'; import { DocsDocStates } from 'src/app/services/doc-states'; @@ -26,8 +27,9 @@ import { DocsRegisterHeaderDirective } from '../register-header/register-header. changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { - class: 'docs-welcome kbq-scrollbar' - } + class: 'docs-welcome' + }, + hostDirectives: [KbqScrollbarViewport] }) export class DocsWelcomeComponent extends DocsLocaleState implements OnInit { private readonly themeService = inject(ThemeService); diff --git a/docs/guides/migration.en.md b/docs/guides/migration.en.md index 99a42d591a..85ec9cd936 100644 --- a/docs/guides/migration.en.md +++ b/docs/guides/migration.en.md @@ -16,6 +16,7 @@ New versions include improvements but also contain **breaking changes**; they mu 10. **20.3.0**: button supported colors — a default color of its own per style. 11. **20.3.0**: the button-toggle review — ARIA semantics, keyboard navigation and signal inputs. 12. **20.3.0**: the form-field review — signals, accessibility and the removal of `mixinColor`. +13. **20.3.0**: deprecation of the overlayscrollbars-based Scrollbar implementation. ### 1. Upgrade to 18.5.3 @@ -741,6 +742,50 @@ A receiver is matched by its explicit type annotation (`KbqFormField`, `KbqHint` **Stylesheets that fought `!important`.** `.kbq-form-field_no-borders` and `.kbq-form-field_in-overlay` used `!important` to beat the state theme; they now override the `--kbq-form-field-*` tokens instead. The computed result is the same, but an override written specifically to outrank the old `!important` can be simplified. +### 13. Scrollbar overlayscrollbars implementation deprecation (20.3.0) + +Until 20.3.0, `@koobiq/components/scrollbar` wrapped the third-party `overlayscrollbars` library: the `KbqScrollbar` component (`kbq-scrollbar` / `[kbq-scrollbar]`) and the low-level `KbqScrollbarDirective` (`[kbqScrollbar]`), with `options`, `events`, `defer` inputs and raw access to `scrollbarInstance`. + +As of 20.3.0, `@koobiq/components/scrollbar` provides a new dependency-free `KbqScrollbar` component with the `` selector and a different public API. The previous implementation has not gone away — it moved, unchanged, to `@koobiq/components/scrollbar/deprecated` and will be removed in a future major version. + +#### Running the migration + +The `scrollbar-deprecated-path` schematic runs automatically: + +```bash +ng update @koobiq/components@20 +``` + +Or manually: + +```bash +ng g @koobiq/components:scrollbar-deprecated-path --project +``` + +#### What is fixed automatically + +**The `@koobiq/components/scrollbar` import path is rewritten to `@koobiq/components/scrollbar/deprecated`** — in every `.ts` file, in both single- and double-quoted specifiers. The implementation itself and its public API (`options` / `events` / `defer` / `scrollbarInstance`, the `kbq-scrollbar` / `[kbq-scrollbar]` / `[kbqScrollbar]` selectors) are unchanged — only where you import them from changes. + +```ts +// Before +import { KbqScrollbarModule } from '@koobiq/components/scrollbar'; + +// After +import { KbqScrollbarModule } from '@koobiq/components/scrollbar/deprecated'; +``` + +#### What you need to fix manually + +**Moving to the new implementation** is a separate, manual migration, not just an import path change: the new component uses the `` selector and does not support the `[kbq-scrollbar]` or `[kbqScrollbar]` attribute selectors. Its public API differs from the previous implementation — see the [Scrollbar component documentation](/en/components/scrollbar) for details. + +**Do not import both the old and the new implementation into the same standalone component.** Both use the `kbq-scrollbar` element selector, so Angular cannot choose a component unambiguously. During a gradual manual migration, keep old and new usage in separate components. + ### After the migration +After fully moving to the new component and removing imports from `@koobiq/components/scrollbar/deprecated`, the `overlayscrollbars` dependency is no longer needed and can be removed: + +```bash +npm uninstall overlayscrollbars +``` + The migration is regex-based and does not rewrite aliased imports, local variables, or re-exports — **review the diff before committing**, rebuild the project and run your tests. The full list of breaking changes is on the [Angular 20 breaking changes](https://github.com/koobiq/angular-components/blob/main/docs/guides/angular-20-breaking-changes.en.md) page. diff --git a/docs/guides/migration.ru.md b/docs/guides/migration.ru.md index 9367bf05d6..11c9dc4eab 100644 --- a/docs/guides/migration.ru.md +++ b/docs/guides/migration.ru.md @@ -16,6 +16,7 @@ 10. **20.3.0**: поддерживаемые цвета кнопки — свой дефолтный цвет у каждого стиля. 11. **20.3.0**: ревью группы кнопок — ARIA-семантика, навигация с клавиатуры и сигнальные входы. 12. **20.3.0**: ревью поля формы — сигналы, доступность и удаление `mixinColor`. +13. **20.3.0**: устаревание overlayscrollbars-реализации Scrollbar. ### 1. Обновление до 18.5.3 @@ -741,6 +742,50 @@ if (formField.hasCleaner() && formField.hint().length && hint.fillTextOff()) { **Стили, боровшиеся с `!important`.** `.kbq-form-field_no-borders` и `.kbq-form-field_in-overlay` использовали `!important`, чтобы перебить тему состояний; теперь они переопределяют токены `--kbq-form-field-*`. Итоговое значение то же, но переопределение, написанное специально ради победы над старым `!important`, можно упростить. +### 13. Устаревание overlayscrollbars-реализации Scrollbar (20.3.0) + +До 20.3.0 `@koobiq/components/scrollbar` оборачивал стороннюю библиотеку `overlayscrollbars`: компонент `KbqScrollbar` (`kbq-scrollbar` / `[kbq-scrollbar]`) и низкоуровневая директива `KbqScrollbarDirective` (`[kbqScrollbar]`) со входами `options`, `events`, `defer` и сырым доступом к `scrollbarInstance`. + +В 20.3.0 `@koobiq/components/scrollbar` — это новый, не зависящий от сторонних библиотек компонент `KbqScrollbar` с селектором `` и другим публичным API. Прежняя реализация никуда не делась — она переехала без изменений в `@koobiq/components/scrollbar/deprecated` и будет удалена в одном из будущих мажорных релизов. + +#### Запуск миграции + +Схематик `scrollbar-deprecated-path` запускается автоматически: + +```bash +ng update @koobiq/components@20 +``` + +Или вручную: + +```bash +ng g @koobiq/components:scrollbar-deprecated-path --project +``` + +#### Что исправляется автоматически + +**Путь импорта `@koobiq/components/scrollbar` заменяется на `@koobiq/components/scrollbar/deprecated`** — во всех `.ts`-файлах, в одинарных и двойных кавычках. Сама реализация и её публичный API (`options` / `events` / `defer` / `scrollbarInstance`, селекторы `kbq-scrollbar` / `[kbq-scrollbar]` / `[kbqScrollbar]`) не меняются — меняется только путь, откуда их импортировать. + +```ts +// Было +import { KbqScrollbarModule } from '@koobiq/components/scrollbar'; + +// Стало +import { KbqScrollbarModule } from '@koobiq/components/scrollbar/deprecated'; +``` + +#### Что нужно поправить вручную + +**Переход на новую реализацию** — это отдельная, ручная миграция, а не просто смена пути импорта: новый компонент использует селектор ``, а атрибутные селекторы `[kbq-scrollbar]` и `[kbqScrollbar]` не поддерживает. Его публичный API отличается от прежнего — подробности смотрите в [документации компонента Scrollbar](/ru/components/scrollbar). + +**Не импортируйте старую и новую реализацию в одном standalone-компоненте одновременно.** Обе используют элементный селектор `kbq-scrollbar`, поэтому Angular не сможет однозначно выбрать компонент. При постепенном ручном переходе держите старое и новое использование в разных компонентах. + ### После миграции +После полного перехода на новый компонент и удаления импортов из `@koobiq/components/scrollbar/deprecated` зависимость `overlayscrollbars` больше не нужна — её можно удалить: + +```bash +npm uninstall overlayscrollbars +``` + Миграция работает на регулярных выражениях и не переписывает алиасные импорты, локальные переменные и ре-экспорты — **проверьте диф перед коммитом**, пересоберите проект и прогоните тесты. Полный список ломающих изменений — на странице [Ломающие изменения — Angular 20](https://github.com/koobiq/angular-components/blob/main/docs/guides/angular-20-breaking-changes.ru.md). diff --git a/packages/docs-examples/components/scrollbar/scrollbar-scroll-to-top/scrollbar-scroll-to-top-example.ts b/packages/components-dev/scrollbar/deprecated/scrollbar-scroll-to-top-example.ts similarity index 86% rename from packages/docs-examples/components/scrollbar/scrollbar-scroll-to-top/scrollbar-scroll-to-top-example.ts rename to packages/components-dev/scrollbar/deprecated/scrollbar-scroll-to-top-example.ts index 56ec036eb4..a607033be0 100644 --- a/packages/docs-examples/components/scrollbar/scrollbar-scroll-to-top/scrollbar-scroll-to-top-example.ts +++ b/packages/components-dev/scrollbar/deprecated/scrollbar-scroll-to-top-example.ts @@ -1,12 +1,13 @@ import { ChangeDetectionStrategy, Component } from '@angular/core'; import { KbqButtonModule } from '@koobiq/components/button'; -import { KbqScrollbarModule } from '@koobiq/components/scrollbar'; +import { KbqScrollbarModule } from '@koobiq/components/scrollbar/deprecated'; /** * @title Scrollbar scroll to top + * @deprecated Should be removed in a future major version. */ @Component({ - selector: 'scrollbar-scroll-to-top-example', + selector: 'dev-scrollbar-scroll-to-example', imports: [ KbqScrollbarModule, KbqButtonModule @@ -28,7 +29,7 @@ import { KbqScrollbarModule } from '@koobiq/components/scrollbar'; `, changeDetection: ChangeDetectionStrategy.OnPush }) -export class ScrollbarScrollToTopExample { +export class DevScrollbarScrollToTopExample { readonly items = Array.from({ length: 1000 }).map((_, i) => `Item #${i}`); onScroll(event): void { diff --git a/packages/docs-examples/components/scrollbar/scrollbar-with-custom-config/scrollbar-with-custom-config-example.ts b/packages/components-dev/scrollbar/deprecated/scrollbar-with-custom-config-example.ts similarity index 78% rename from packages/docs-examples/components/scrollbar/scrollbar-with-custom-config/scrollbar-with-custom-config-example.ts rename to packages/components-dev/scrollbar/deprecated/scrollbar-with-custom-config-example.ts index d35b747528..4a3a5fa8ae 100644 --- a/packages/docs-examples/components/scrollbar/scrollbar-with-custom-config/scrollbar-with-custom-config-example.ts +++ b/packages/components-dev/scrollbar/deprecated/scrollbar-with-custom-config-example.ts @@ -1,11 +1,12 @@ import { ChangeDetectionStrategy, Component } from '@angular/core'; -import { KBQ_SCROLLBAR_CONFIG, KbqScrollbarModule, KbqScrollbarOptions } from '@koobiq/components/scrollbar'; +import { KBQ_SCROLLBAR_CONFIG, KbqScrollbarModule, KbqScrollbarOptions } from '@koobiq/components/scrollbar/deprecated'; /** * @title Scrollbar with custom KBQ_SCROLLBAR_CONFIG + * @deprecated Should be removed in a future major version. */ @Component({ - selector: 'scrollbar-with-custom-config-example', + selector: 'dev-scrollbar-with-custom-config-example', imports: [KbqScrollbarModule], template: `
@@ -27,6 +28,6 @@ import { KBQ_SCROLLBAR_CONFIG, KbqScrollbarModule, KbqScrollbarOptions } from '@ ], changeDetection: ChangeDetectionStrategy.OnPush }) -export class ScrollbarWithCustomConfigExample { +export class DevScrollbarWithCustomConfigExample { readonly items = Array.from({ length: 1000 }).map((_, i) => `Item #${i}`); } diff --git a/packages/components-dev/scrollbar/module.ts b/packages/components-dev/scrollbar/module.ts index 1de4924ec9..a72c51289a 100644 --- a/packages/components-dev/scrollbar/module.ts +++ b/packages/components-dev/scrollbar/module.ts @@ -1,105 +1,34 @@ import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core'; -import { KbqButtonModule } from '@koobiq/components/button'; import { - KBQ_SCROLLBAR_CONFIG, - KbqScrollbarEvents, - KbqScrollbarModule, - KbqScrollbarOptions -} from '@koobiq/components/scrollbar'; + ScrollbarOverviewExample, + ScrollbarScrollToExample, + ScrollbarVirtualScrollExample +} from 'packages/docs-examples/components/scrollbar'; import { DevThemeToggle } from '../theme-toggle'; @Component({ - selector: 'dev-scrollbar-with-options', - imports: [KbqScrollbarModule], - template: ` -

ScrollbarWithOptions:

- - @for (item of items; track item) { -
{{ item }}
-
- } -
- `, - changeDetection: ChangeDetectionStrategy.OnPush -}) -export class DevScrollbarWithOptions { - readonly options: KbqScrollbarOptions = { - scrollbars: { - autoHide: 'never' - } - }; - readonly items = Array.from({ length: 1000 }).map((_, i) => `Item #${i}`); -} - -@Component({ - selector: 'dev-scrollbar-with-custom-config', - imports: [KbqScrollbarModule], - template: ` -

ScrollbarWithCustomConfig:

-
- @for (item of items; track item) { -
{{ item }}
-
- } -
- `, - providers: [ - { - provide: KBQ_SCROLLBAR_CONFIG, - useValue: { - scrollbars: { - autoHide: 'never' - } - } satisfies KbqScrollbarOptions - } - ], - changeDetection: ChangeDetectionStrategy.OnPush -}) -export class DevScrollbarWithCustomConfig { - readonly items = Array.from({ length: 1000 }).map((_, i) => `Item #${i}`); -} - -@Component({ - selector: 'dev-scrollbar-scroll-to-top', + selector: 'dev-examples', imports: [ - KbqScrollbarModule, - KbqButtonModule + ScrollbarOverviewExample, + ScrollbarVirtualScrollExample, + ScrollbarScrollToExample ], template: ` -

ScrollbarScrollToTop:

- - @for (item of items; track item) { -
{{ item }}
-
- } -
- + +
+ +
+ +
`, changeDetection: ChangeDetectionStrategy.OnPush }) -export class DevScrollbarScrollToTop { - readonly items = Array.from({ length: 1000 }).map((_, i) => `Item #${i}`); - - onScroll(event): void { - console.log('onScroll', event); - } -} +export class DevDocsExamples {} @Component({ selector: 'dev-app', imports: [ - KbqScrollbarModule, - KbqButtonModule, - // components - DevScrollbarWithOptions, - DevScrollbarWithCustomConfig, - DevScrollbarScrollToTop, + DevDocsExamples, DevThemeToggle ], templateUrl: './template.html', @@ -107,34 +36,4 @@ export class DevScrollbarScrollToTop { changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None }) -export class DevApp { - options: KbqScrollbarOptions; - events: KbqScrollbarEvents = { - initialized: (...args) => this.onInitialize(args) - }; - - onScroll([instance, args]) { - console.log('onScroll', instance, args); - } - - onInitialize($event) { - console.log($event); - } - - longText: string = `Vivamus suscipit tortor eget felis porttitor volutpat. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Quisque velit nisi, pretium ut lacinia in, elementum id enim. Pellentesque in ipsum id orci porta dapibus. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem. Donec sollicitudin molestie malesuada. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. - Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec velit neque, auctor sit amet aliquam vel, ullamcorper sit amet ligula. Nulla porttitor accumsan tincidunt. Nulla quis lorem ut libero malesuada feugiat. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Pellentesque in ipsum id orci porta dapibus. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Donec rutrum congue leo eget malesuada. - Proin eget tortor risus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Donec sollicitudin molestie malesuada. Pellentesque in ipsum id orci porta dapibus. Curabitur aliquet quam id dui posuere blandit. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed porttitor lectus nibh. - Donec sollicitudin molestie malesuada. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem. Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a. Vivamus suscipit tortor eget felis porttitor volutpat. Nulla quis lorem ut libero malesuada feugiat. Curabitur aliquet quam id dui posuere blandit. Donec sollicitudin molestie malesuada. Quisque velit nisi, pretium ut lacinia in, elementum id enim. Donec sollicitudin molestie malesuada. - Proin eget tortor risus. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Cras ultricies ligula sed magna dictum porta. Cras ultricies ligula sed magna dictum porta. Cras ultricies ligula sed magna dictum porta. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin eget tortor risus. Proin eget tortor risus. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec velit neque, auctor sit amet aliquam vel, ullamcorper sit amet ligula. - Vivamus suscipit tortor eget felis porttitor volutpat. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Quisque velit nisi, pretium ut lacinia in, elementum id enim. Pellentesque in ipsum id orci porta dapibus. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem. Donec sollicitudin molestie malesuada. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. - Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec velit neque, auctor sit amet aliquam vel, ullamcorper sit amet ligula. Nulla porttitor accumsan tincidunt. Nulla quis lorem ut libero malesuada feugiat. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Pellentesque in ipsum id orci porta dapibus. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Donec rutrum congue leo eget malesuada. - Proin eget tortor risus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Donec sollicitudin molestie malesuada. Pellentesque in ipsum id orci porta dapibus. Curabitur aliquet quam id dui posuere blandit. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed porttitor lectus nibh. - Donec sollicitudin molestie malesuada. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem. Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a. Vivamus suscipit tortor eget felis porttitor volutpat. Nulla quis lorem ut libero malesuada feugiat. Curabitur aliquet quam id dui posuere blandit. Donec sollicitudin molestie malesuada. Quisque velit nisi, pretium ut lacinia in, elementum id enim. Donec sollicitudin molestie malesuada. - Proin eget tortor risus. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Cras ultricies ligula sed magna dictum porta. Cras ultricies ligula sed magna dictum porta. Cras ultricies ligula sed magna dictum porta. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin eget tortor risus. Proin eget tortor risus. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec velit neque, auctor sit amet aliquam vel, ullamcorper sit amet ligula. - Vivamus suscipit tortor eget felis porttitor volutpat. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Quisque velit nisi, pretium ut lacinia in, elementum id enim. Pellentesque in ipsum id orci porta dapibus. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem. Donec sollicitudin molestie malesuada. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. - Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec velit neque, auctor sit amet aliquam vel, ullamcorper sit amet ligula. Nulla porttitor accumsan tincidunt. Nulla quis lorem ut libero malesuada feugiat. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Pellentesque in ipsum id orci porta dapibus. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Donec rutrum congue leo eget malesuada. - Proin eget tortor risus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Donec sollicitudin molestie malesuada. Pellentesque in ipsum id orci porta dapibus. Curabitur aliquet quam id dui posuere blandit. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed porttitor lectus nibh. - Donec sollicitudin molestie malesuada. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem. Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a. Vivamus suscipit tortor eget felis porttitor volutpat. Nulla quis lorem ut libero malesuada feugiat. Curabitur aliquet quam id dui posuere blandit. Donec sollicitudin molestie malesuada. Quisque velit nisi, pretium ut lacinia in, elementum id enim. Donec sollicitudin molestie malesuada. - Proin eget tortor risus. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Cras ultricies ligula sed magna dictum porta. Cras ultricies ligula sed magna dictum porta. Cras ultricies ligula sed magna dictum porta. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin eget tortor risus. Proin eget tortor risus. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Donec velit neque, auctor sit amet aliquam vel, ullamcorper sit amet ligula. - `; -} +export class DevApp {} diff --git a/packages/components-dev/scrollbar/styles.scss b/packages/components-dev/scrollbar/styles.scss index 75e6e33886..e7f3e5945c 100644 --- a/packages/components-dev/scrollbar/styles.scss +++ b/packages/components-dev/scrollbar/styles.scss @@ -1,29 +1,4 @@ -.dev-container { - padding: 24px; -} - -textarea { - margin: 10px; +dev-app { + max-width: 608px; display: block; } - -.dev-with-horizontal { - white-space: nowrap; - overflow-x: visible; -} - -.dev-with-buttons { - white-space: nowrap; - overflow: visible; -} - -.dev-nested-scroll { - width: 200px; - height: 200px; - overflow: auto; - margin: 10px; -} - -.dev-nested-scroll__content { - width: 800px; -} diff --git a/packages/components-dev/scrollbar/template.html b/packages/components-dev/scrollbar/template.html index 1236796d25..9eff7f844b 100644 --- a/packages/components-dev/scrollbar/template.html +++ b/packages/components-dev/scrollbar/template.html @@ -1,63 +1,5 @@ -
- -
- - -
- -
-
-
-

Simple Scrollbar Component

- -

Simple example

-
-
{{ longText }}
-
- -
-

Bidi support

-
-
{{ longText }}
-
-
-
- -
-

Scrollbar Via CSS

- -

Horizontal

- - -

Buttons & Resize corner

- - -

Nested scroll — class on wrapper

-
-
-
{{ longText }}
-
-
- -

Nested scroll — class on scroller (reference)

-
-
{{ longText }}
-
-
-
-
+ diff --git a/packages/components-dev/toast/module.ts b/packages/components-dev/toast/module.ts index 06bbc8bf99..ebc7fa26af 100644 --- a/packages/components-dev/toast/module.ts +++ b/packages/components-dev/toast/module.ts @@ -6,7 +6,7 @@ import { KbqIconModule } from '@koobiq/components/icon'; import { KbqLinkModule } from '@koobiq/components/link'; import { KbqModalModule, KbqModalService } from '@koobiq/components/modal'; import { KbqProgressBarModule } from '@koobiq/components/progress-bar'; -import { KbqScrollbarModule } from '@koobiq/components/scrollbar'; +import { KbqScrollbar } from '@koobiq/components/scrollbar'; import { KbqSidepanelModule, KbqSidepanelPosition, KbqSidepanelService } from '@koobiq/components/sidepanel'; import { KbqToastComponent, @@ -91,7 +91,7 @@ export class DevToastComponent extends KbqToastComponent { KbqDropdownModule, KbqModalModule, KbqSidepanelModule, - KbqScrollbarModule, + KbqScrollbar, DevToastComponent, DevDocsExamples ], diff --git a/packages/components-dev/toast/template.html b/packages/components-dev/toast/template.html index 5b74da437a..c20f643e99 100644 --- a/packages/components-dev/toast/template.html +++ b/packages/components-dev/toast/template.html @@ -1,7 +1,7 @@
-
+ @@ -231,5 +231,5 @@ -
+
diff --git a/packages/components/app-switcher/app-switcher.en.md b/packages/components/app-switcher/app-switcher.en.md index a2bff7d254..5965d659bb 100644 --- a/packages/components/app-switcher/app-switcher.en.md +++ b/packages/components/app-switcher/app-switcher.en.md @@ -1,18 +1,5 @@ A menu for switching between applications and platforms. -
-
Note
-
- -The component uses [Scrollbar](/en/components/scrollbar), so its dependencies must be installed: - -```bash -npm install overlayscrollbars@2.7.3 -``` - -
-
- ### Application icons diff --git a/packages/components/app-switcher/app-switcher.html b/packages/components/app-switcher/app-switcher.html index c717495393..246e63d2a3 100644 --- a/packages/components/app-switcher/app-switcher.html +++ b/packages/components/app-switcher/app-switcher.html @@ -23,7 +23,7 @@ the panel styling) would otherwise break that ownership chain. The scrollbar host cannot carry the menu role for the same reason - it injects its own focusable viewport element in between. --> -
+ @if (!searchControl.getRawValue()) {
@@ -193,4 +193,4 @@
} -
+ diff --git a/packages/components/app-switcher/app-switcher.ru.md b/packages/components/app-switcher/app-switcher.ru.md index 492f9a428f..adc0f82a35 100644 --- a/packages/components/app-switcher/app-switcher.ru.md +++ b/packages/components/app-switcher/app-switcher.ru.md @@ -1,18 +1,5 @@ Меню для переключения между приложениями и площадками. -
-
Обрати внимание
-
- -Компонент использует [Scrollbar](/ru/components/scrollbar), поэтому необходимо установить его зависимости: - -```bash -npm install overlayscrollbars@2.7.3 -``` - -
-
- ### Иконки приложений diff --git a/packages/components/app-switcher/app-switcher.ts b/packages/components/app-switcher/app-switcher.ts index 52a321fb60..4933799fbc 100644 --- a/packages/components/app-switcher/app-switcher.ts +++ b/packages/components/app-switcher/app-switcher.ts @@ -60,7 +60,7 @@ import { KbqDropdown, KbqDropdownItem, KbqDropdownModule } from '@koobiq/compone import { KbqIconModule } from '@koobiq/components/icon'; import { KbqInput, KbqInputModule } from '@koobiq/components/input'; import { defaultOffsetYWithArrow } from '@koobiq/components/popover'; -import { KbqScrollbarModule } from '@koobiq/components/scrollbar'; +import { KbqScrollbar } from '@koobiq/components/scrollbar'; import { Subscription, merge } from 'rxjs'; import { auditTime, distinctUntilChanged, startWith } from 'rxjs/operators'; import { kbqAppSwitcherAnimations } from './app-switcher-animations'; @@ -243,7 +243,7 @@ export function kbqAppSwitcherProvider(): Provider[] { KbqDividerModule, KbqBadgeModule, KbqDropdownModule, - KbqScrollbarModule, + KbqScrollbar, KbqOptionModule, KbqAppSwitcherDropdownApp, KbqAppSwitcherDropdownSite, diff --git a/packages/components/code-block/code-block.html b/packages/components/code-block/code-block.html index dc0a28b13d..61853356fd 100644 --- a/packages/components/code-block/code-block.html +++ b/packages/components/code-block/code-block.html @@ -95,11 +95,10 @@
diff --git a/packages/components/code-block/code-block.ts b/packages/components/code-block/code-block.ts index 44f91736e6..55197360fa 100644 --- a/packages/components/code-block/code-block.ts +++ b/packages/components/code-block/code-block.ts @@ -1,8 +1,8 @@ -import { A11yModule, FocusMonitor } from '@angular/cdk/a11y'; +import { FocusMonitor } from '@angular/cdk/a11y'; import { Clipboard } from '@angular/cdk/clipboard'; import { SharedResizeObserver } from '@angular/cdk/observers/private'; import { Platform } from '@angular/cdk/platform'; -import { CdkScrollable, CdkScrollableModule, ExtendedScrollToOptions } from '@angular/cdk/scrolling'; +import { CdkScrollable, ExtendedScrollToOptions } from '@angular/cdk/scrolling'; import { DOCUMENT, NgTemplateOutlet } from '@angular/common'; import { AfterViewInit, @@ -42,6 +42,7 @@ import { ruRULocaleData } from '@koobiq/components/core'; import { KbqIconModule } from '@koobiq/components/icon'; +import { KbqScrollbarViewport } from '@koobiq/components/scrollbar'; import { KbqTabsModule } from '@koobiq/components/tabs'; import { KbqToolTipModule, KbqTooltipTrigger } from '@koobiq/components/tooltip'; import { debounceTime, EMPTY, filter, fromEvent, merge, startWith, switchMap, take } from 'rxjs'; @@ -87,13 +88,12 @@ export class KbqCodeBlockTabLinkContent {} KbqTabsModule, KbqButtonModule, KbqCodeBlockHighlight, - A11yModule, - CdkScrollableModule, KbqToolTipModule, KbqIconModule, NgTemplateOutlet, KbqOverflowShadowContainer, - KbqOverflowShadowTop + KbqOverflowShadowTop, + KbqScrollbarViewport ], templateUrl: './code-block.html', styleUrls: ['./code-block.scss', './code-block-tokens.scss'], diff --git a/packages/components/content-panel/content-panel.en.md b/packages/components/content-panel/content-panel.en.md index 4c809ca57b..9900829978 100644 --- a/packages/components/content-panel/content-panel.en.md +++ b/packages/components/content-panel/content-panel.en.md @@ -1,18 +1,5 @@ `KbqContentPanel` - a slide-out side panel that shifts adjacent content. Often used to implement a quick preview mode for entities from a table. -
-
Note
-
- -The component uses [Scrollbar](/en/components/scrollbar), so its dependencies must be installed: - -```bash -npm install overlayscrollbars@2.7.3 -``` - -
-
- ### Grid and content-panel diff --git a/packages/components/content-panel/content-panel.ru.md b/packages/components/content-panel/content-panel.ru.md index 9c23233c8f..1fe730172a 100644 --- a/packages/components/content-panel/content-panel.ru.md +++ b/packages/components/content-panel/content-panel.ru.md @@ -1,18 +1,5 @@ `KbqContentPanel` - выезжающая сбоку панель, которая сдвигает соседний контент. Часто используется, чтобы реализовать режим быстрого просмотра сущности из таблицы. -
-
Обрати внимание
-
- -Компонент использует [Scrollbar](/ru/components/scrollbar), поэтому необходимо установить его зависимости: - -```bash -npm install overlayscrollbars@2.7.3 -``` - -
-
- ### Грид и контент-панель diff --git a/packages/components/content-panel/content-panel.ts b/packages/components/content-panel/content-panel.ts index 93dad914af..8d6822abf7 100644 --- a/packages/components/content-panel/content-panel.ts +++ b/packages/components/content-panel/content-panel.ts @@ -25,7 +25,7 @@ import { } from '@koobiq/components/core'; import { KbqIconModule } from '@koobiq/components/icon'; import { KbqResizable, KbqResizer, KbqResizerSizeChangeEvent } from '@koobiq/components/resizer'; -import { KbqScrollbar, KbqScrollbarModule } from '@koobiq/components/scrollbar'; +import { KbqScrollbar } from '@koobiq/components/scrollbar'; import { SizeL } from '@koobiq/design-tokens'; const KBQ_CONTENT_PANEL_CONTAINER_CONTENT_ANIMATION = trigger('contentAnimation', [ @@ -139,14 +139,12 @@ export class KbqContentPanelHeader { @Component({ selector: 'kbq-content-panel-body', - imports: [KbqScrollbarModule, KbqOverflowShadowContainer], + imports: [KbqScrollbar, KbqOverflowShadowContainer], template: ` - - + +
+ +
`, styleUrl: './content-panel-body.scss', @@ -206,7 +204,10 @@ export class KbqContentPanelFooter { export class KbqContentPanel { private readonly contentPanelBody = contentChild(KbqContentPanelBody); - /** Current body overflow state. Read by the header and footer to render their `box-shadow`. */ + /** + * Current body overflow state. Read by the header and footer to render their `box-shadow`. + * @docs-private + */ readonly bodyOverflow = computed( () => this.contentPanelBody()?.overflowContainer().overflow() ?? { top: false, bottom: false } ); @@ -214,10 +215,12 @@ export class KbqContentPanel { @Component({ selector: 'kbq-content-panel-container', - imports: [KbqResizable, KbqResizer, KbqScrollbarModule], + imports: [KbqResizable, KbqResizer, KbqScrollbar], template: ` - - + +
+ +
@if (openedState()) {
{ test('should show header shadow after scrolling down', async ({ page }) => { await page.goto('/E2eContentPanelScrollOverflow'); - await page.locator('.kbq-content-panel-body [data-overlayscrollbars-contents]').evaluate((el) => { + await page.locator('.kbq-content-panel-body .kbq-scrollbar-viewport').evaluate((el) => { el.scrollTop = 50; }); @@ -35,7 +35,7 @@ test.describe('KbqContentPanelModule', () => { test('should show both shadows when scrolled to the middle', async ({ page }) => { await page.goto('/E2eContentPanelScrollOverflow'); - await page.locator('.kbq-content-panel-body [data-overlayscrollbars-contents]').evaluate((el) => { + await page.locator('.kbq-content-panel-body .kbq-scrollbar-viewport').evaluate((el) => { el.scrollTop = Math.floor((el.scrollHeight - el.clientHeight) / 2); }); diff --git a/packages/components/core/styles/_koobiq-theme.scss b/packages/components/core/styles/_koobiq-theme.scss index 1f541c76bb..6383b884c7 100644 --- a/packages/components/core/styles/_koobiq-theme.scss +++ b/packages/components/core/styles/_koobiq-theme.scss @@ -21,6 +21,7 @@ // link is a directive, so styles for it should be applied globally @include link-theme.kbq-link-theme(); @include kbq-markdown-theme(); + // @deprecated Will be removed in next major release. @include kbq-scrollbar-theme(); @include kbq-tabs-theme(); @include kbq-tag-theme(); diff --git a/packages/components/core/styles/theming/_scrollbar-theme.scss b/packages/components/core/styles/theming/_scrollbar-theme.scss index ece1944ca7..966e4f65e5 100644 --- a/packages/components/core/styles/theming/_scrollbar-theme.scss +++ b/packages/components/core/styles/theming/_scrollbar-theme.scss @@ -1,3 +1,6 @@ +// @deprecated The `.kbq-scrollbar` selector and related mixins are deprecated. +// Use the `KbqScrollbar` component instead. Will be removed in the next major version. + /* stylelint-disable selector-pseudo-class-no-unknown */ @use '../common/tokens'; @@ -18,6 +21,8 @@ } @mixin _kbq-scrollbar() { + @warn 'The `.kbq-scrollbar` selector and related mixins/tokens are deprecated. Use the `KbqScrollbar` component instead. Will be removed in the next major version.'; + // For Firefox compatibility @supports not selector(::-webkit-scrollbar) { /* stylelint-disable-next-line no-invalid-position-declaration */ diff --git a/packages/components/core/styles/theming/scrollbar-tokens.scss b/packages/components/core/styles/theming/scrollbar-tokens.scss index 5bb28ff53e..3e57741832 100644 --- a/packages/components/core/styles/theming/scrollbar-tokens.scss +++ b/packages/components/core/styles/theming/scrollbar-tokens.scss @@ -1,3 +1,6 @@ +// @deprecated The `--kbq-scrollbar-*` tokens are deprecated. +// Use the `KbqScrollbar` component instead. Will be removed in the next major version. + :where(.kbq-scrollbar) { --kbq-scrollbar-size-track-dimension: var(--kbq-size-l); --kbq-scrollbar-size-track-padding-vertical: var(--kbq-size-3xs); diff --git a/packages/components/notification-center/notification-center.en.md b/packages/components/notification-center/notification-center.en.md index 60a7205d50..91e8b931af 100644 --- a/packages/components/notification-center/notification-center.en.md +++ b/packages/components/notification-center/notification-center.en.md @@ -1,18 +1,5 @@ Notification center — a panel for application notifications. -
-
Note
-
- -The component uses [Scrollbar](/en/components/scrollbar), so its dependencies must be installed: - -```bash -npm install overlayscrollbars@2.7.3 -``` - -
-
- The notification list opens from the main menu. The menu shows an unread message counter: it is hidden when the count is 0, and displays "99+" when the count exceeds 99. diff --git a/packages/components/notification-center/notification-center.html b/packages/components/notification-center/notification-center.html index 1db6935527..1da7b00196 100644 --- a/packages/components/notification-center/notification-center.html +++ b/packages/components/notification-center/notification-center.html @@ -50,13 +50,13 @@
@if (!service.errorMode.value) { @if (!service.loadingMode.value) { diff --git a/packages/components/notification-center/notification-center.ru.md b/packages/components/notification-center/notification-center.ru.md index 0fd37c35b9..7200df2d1e 100644 --- a/packages/components/notification-center/notification-center.ru.md +++ b/packages/components/notification-center/notification-center.ru.md @@ -1,18 +1,5 @@ Notification center — панель уведомлений о работе приложений -
-
Обрати внимание
-
- -Компонент использует [Scrollbar](/ru/components/scrollbar), поэтому необходимо установить его зависимости: - -```bash -npm install overlayscrollbars@2.7.3 -``` - -
-
- Список уведомлений открывается из главного меню. В меню показывается счётчик непрочитанных сообщений: при 0 он скрыт, при количестве больше 99 отображается «99+». diff --git a/packages/components/notification-center/notification-center.scss b/packages/components/notification-center/notification-center.scss index a4350ebf60..9db72f6b11 100644 --- a/packages/components/notification-center/notification-center.scss +++ b/packages/components/notification-center/notification-center.scss @@ -85,22 +85,25 @@ } .kbq-notification-center-container { + // Overrides the default z-index of .kbq-scrollbar-viewport to ensure the scrollbar track is always above the .kbq-notification-center-sub-header content. + --kbq-scrollbar-track-z-index: 101; + height: 100%; + overflow: auto; + border-radius: inherit; padding-bottom: var(--kbq-size-xl); // Smoothly reveal the just-appended "load more" spinner / error row. The row is scrolled into - // view via KbqScrollbar.scrollTo(), which calls a behavior-less scroll on the overlayscrollbars - // viewport — so `scroll-behavior` on the viewport controls the animation. Disabled for users who - // prefer reduced motion. - & [data-overlayscrollbars-viewport] { - scroll-behavior: smooth; - - @media (prefers-reduced-motion: reduce) { - scroll-behavior: auto; - } + // view via KbqScrollbarViewport.scrollTo(), which calls a behavior-less scroll on this element + // (it's the scroll container itself now that KbqScrollbarViewport is applied to it directly). + // Disabled for users who prefer reduced motion. + scroll-behavior: smooth; + + @media (prefers-reduced-motion: reduce) { + scroll-behavior: auto; } & .kbq-loader-overlay_parent { diff --git a/packages/components/notification-center/notification-center.spec.ts b/packages/components/notification-center/notification-center.spec.ts index 1bf0b09973..8f50d620bd 100644 --- a/packages/components/notification-center/notification-center.spec.ts +++ b/packages/components/notification-center/notification-center.spec.ts @@ -11,7 +11,6 @@ import { KbqNotificationCenterTrigger, KbqNotificationItem } from '@koobiq/components/notification-center'; -import { KbqScrollbarModule } from '@koobiq/components/scrollbar'; import { KbqToastService } from '@koobiq/components/toast'; import { AsyncScheduler } from 'rxjs/internal/scheduler/AsyncScheduler'; import { TestScheduler } from 'rxjs/testing'; @@ -46,7 +45,7 @@ describe('KbqNotificationCenter', () => { const createComponent = (component: Type, providers: Provider[] = []): ComponentFixture => { TestBed.configureTestingModule({ - imports: [component, NoopAnimationsModule, KbqLuxonDateModule, KbqFormattersModule, KbqScrollbarModule], + imports: [component, NoopAnimationsModule, KbqLuxonDateModule, KbqFormattersModule], providers: [ { provide: AsyncScheduler, useValue: testScheduler }, ...providers @@ -60,11 +59,12 @@ describe('KbqNotificationCenter', () => { }; describe('Check test cases', () => { - // jsdom does not implement Element.prototype.scroll; the container reveal calls it via - // KbqScrollbar.scrollTo. Stub it only when it's missing so a real implementation is never shadowed. + // jsdom does not implement Element.prototype.scrollTo; the container reveal calls it via + // KbqScrollbarViewport.scrollTo (CdkScrollable). Stub it only when it's missing so a real + // implementation is never shadowed. beforeAll(() => { - if (!HTMLElement.prototype.scroll) { - Object.defineProperty(HTMLElement.prototype, 'scroll', { configurable: true, value: () => {} }); + if (!HTMLElement.prototype.scrollTo) { + Object.defineProperty(HTMLElement.prototype, 'scrollTo', { configurable: true, value: () => {} }); } }); @@ -115,7 +115,7 @@ describe('KbqNotificationCenter', () => { componentInstance.trigger() as unknown as { instance: { scrollContainer: () => { - contentElement: () => { nativeElement: HTMLElement }; + getNativeElement: () => HTMLElement; scrollTo: (options?: ScrollToOptions) => void; }; onContainerScroll: () => void; @@ -123,10 +123,10 @@ describe('KbqNotificationCenter', () => { } ).instance; - // Fakes the container geometry. Both `scrollContainer` and `contentElement` are signal - // queries, so they must be called to reach the native element. + // Fakes the container geometry. `scrollContainer` is a signal query, so it must be called + // to reach the native element. const setGeometry = (geometry: { scrollHeight: number; clientHeight: number; scrollTop: number }) => { - const element = getCenter().scrollContainer().contentElement().nativeElement; + const element = getCenter().scrollContainer().getNativeElement(); Object.defineProperty(element, 'scrollHeight', { configurable: true, value: geometry.scrollHeight }); Object.defineProperty(element, 'clientHeight', { configurable: true, value: geometry.clientHeight }); diff --git a/packages/components/notification-center/notification-center.ts b/packages/components/notification-center/notification-center.ts index 4c590b7617..585d4aa7a7 100644 --- a/packages/components/notification-center/notification-center.ts +++ b/packages/components/notification-center/notification-center.ts @@ -47,7 +47,7 @@ import { KbqDropdownModule } from '@koobiq/components/dropdown'; import { KbqIconModule } from '@koobiq/components/icon'; import { KbqLoaderOverlayModule } from '@koobiq/components/loader-overlay'; import { KbqProgressSpinnerModule } from '@koobiq/components/progress-spinner'; -import { KbqScrollbar, KbqScrollbarModule } from '@koobiq/components/scrollbar'; +import { KbqScrollbarViewport } from '@koobiq/components/scrollbar'; import { KbqToolTipModule } from '@koobiq/components/tooltip'; import { BehaviorSubject, Subject, Subscription, merge } from 'rxjs'; import { auditTime, distinctUntilChanged, filter, map, pairwise } from 'rxjs/operators'; @@ -104,7 +104,7 @@ export const KBQ_NOTIFICATION_CENTER_SCROLL_STRATEGY_FACTORY_PROVIDER = { imports: [ KbqIconModule, KbqBadgeModule, - KbqScrollbarModule, + KbqScrollbarViewport, KbqButtonModule, KbqDividerModule, KbqDropdownModule, @@ -173,7 +173,7 @@ export class KbqNotificationCenterComponent extends KbqPopUp implements AfterVie readonly switcher = viewChild.required('notificationSwitcher'); /** Scrollable list container; used to measure scroll position for infinite scroll. */ - private readonly scrollContainer = viewChild.required(KbqScrollbar); + private readonly scrollContainer = viewChild.required(KbqScrollbarViewport); get popoverHeight(): string { return this._popoverHeight; @@ -275,7 +275,7 @@ export class KbqNotificationCenterComponent extends KbqPopUp implements AfterVie /** Whether the list is scrolled to within `scrolledToBottomOffset` pixels of the bottom. * Sub-pixel measurement error is absorbed by `SCROLLED_TO_BOTTOM_TOLERANCE`. */ private isScrolledToBottom(): boolean { - const { scrollTop, clientHeight, scrollHeight } = this.scrollContainer().contentElement().nativeElement; + const { scrollTop, clientHeight, scrollHeight } = this.scrollContainer().getNativeElement(); return scrollHeight - scrollTop - clientHeight <= this.scrolledToBottomOffset + SCROLLED_TO_BOTTOM_TOLERANCE; } @@ -311,13 +311,13 @@ export class KbqNotificationCenterComponent extends KbqPopUp implements AfterVie /** Scrolls the list container to its bottom so a freshly-appended bottom row becomes visible. */ private scrollToBottom(): void { - const { scrollHeight } = this.scrollContainer().contentElement().nativeElement; + const { scrollHeight } = this.scrollContainer().getNativeElement(); this.scrollContainer().scrollTo({ top: scrollHeight }); } private focusScrollContainer(): void { - const element = this.scrollContainer().contentElement().nativeElement; + const element = this.scrollContainer().getNativeElement(); // tabindex -1 keeps the container out of the Tab order while allowing programmatic focus. element.setAttribute('tabindex', '-1'); diff --git a/packages/components/scrollbar/__screenshots__/01-dark.png b/packages/components/scrollbar/__screenshots__/01-dark.png index a9c36b5a699f685b41004897c0a07a13b87ffe32..b8952f0ad942dc907351c319071b0a89f5da56bb 100644 GIT binary patch literal 4125 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 G?7skhf5x5w literal 36279 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 literal 35657 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 literal 0 HcmV?d00001 diff --git a/packages/components/scrollbar/_scrollbar-component-theme.scss b/packages/components/scrollbar/deprecated/_scrollbar-component-theme.scss similarity index 97% rename from packages/components/scrollbar/_scrollbar-component-theme.scss rename to packages/components/scrollbar/deprecated/_scrollbar-component-theme.scss index ec8035ecc6..5aa2d77697 100644 --- a/packages/components/scrollbar/_scrollbar-component-theme.scss +++ b/packages/components/scrollbar/deprecated/_scrollbar-component-theme.scss @@ -1,4 +1,4 @@ -@use '../core/styles/common/tokens' as *; +@use '../../core/styles/common/tokens' as *; @mixin kbq-scrollbar-component-theme() { .kbq-scrollbar-component { diff --git a/packages/components/scrollbar/deprecated/e2e.playwright-spec.ts b/packages/components/scrollbar/deprecated/e2e.playwright-spec.ts new file mode 100644 index 0000000000..c801b06fac --- /dev/null +++ b/packages/components/scrollbar/deprecated/e2e.playwright-spec.ts @@ -0,0 +1,21 @@ +import { expect, Locator, Page, test } from '@playwright/test'; +import { e2eEnableDarkTheme } from '../../../e2e/utils'; + +test.use({ browserName: 'webkit' }); + +test.describe('KbqScrollbar (deprecated)', () => { + test.describe('E2eDeprecatedScrollbarStateAndStyle', () => { + const getComponent = (page: Page) => page.getByTestId('e2eDeprecatedScrollbarStateAndStyle'); + const getTestTable = (locator: Locator) => locator.getByTestId('e2eScrollbarTable'); + + test('states', async ({ page }) => { + await page.goto('/E2eDeprecatedScrollbarStateAndStyle'); + const locator = getComponent(page); + const screenshotTarget = getTestTable(locator); + + await expect(screenshotTarget).toHaveScreenshot('01-light.png'); + await e2eEnableDarkTheme(page); + await expect(screenshotTarget).toHaveScreenshot('01-dark.png'); + }); + }); +}); diff --git a/packages/components/scrollbar/deprecated/e2e.ts b/packages/components/scrollbar/deprecated/e2e.ts new file mode 100644 index 0000000000..c991b7aa03 --- /dev/null +++ b/packages/components/scrollbar/deprecated/e2e.ts @@ -0,0 +1,73 @@ +import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { KbqScrollbarModule } from './scrollbar.module'; +import { KBQ_SCROLLBAR_CONFIG, KbqScrollbarOptions } from './scrollbar.types'; + +type ScrollbarState = { + state: 'default' | 'disabled' | 'active' | 'hover'; +}; + +@Component({ + selector: 'e2e-deprecated-scrollbar-state-and-style', + imports: [ + KbqScrollbarModule + ], + template: ` +
+ + @for (row of states; track $index) { + + + + + } +
+
+ @for (item of items; track item) { +
{{ item }}
+
+ } +
+
+
+ @for (item of items; track item) { +
{{ item }}
+
+ } +
+
+
+ `, + providers: [ + { + provide: KBQ_SCROLLBAR_CONFIG, + useValue: { + scrollbars: { + autoHide: 'never' + } + } satisfies KbqScrollbarOptions + } + ], + changeDetection: ChangeDetectionStrategy.OnPush, + host: { + 'data-testid': 'e2eDeprecatedScrollbarStateAndStyle' + } +}) +export class E2eDeprecatedScrollbarStateAndStyle { + readonly items = Array.from({ length: 25 }).map((_, i) => `Item #${i}`); + + readonly states: ScrollbarState[] = [ + { state: 'default' }, + { state: 'hover' }, + { state: 'active' } + ]; +} diff --git a/packages/components/scrollbar/deprecated/index.ts b/packages/components/scrollbar/deprecated/index.ts new file mode 100644 index 0000000000..7e1a213e3e --- /dev/null +++ b/packages/components/scrollbar/deprecated/index.ts @@ -0,0 +1 @@ +export * from './public-api'; diff --git a/packages/components/scrollbar/deprecated/ng-package.json b/packages/components/scrollbar/deprecated/ng-package.json new file mode 100644 index 0000000000..bebf62dcb5 --- /dev/null +++ b/packages/components/scrollbar/deprecated/ng-package.json @@ -0,0 +1,5 @@ +{ + "lib": { + "entryFile": "index.ts" + } +} diff --git a/packages/components/scrollbar/deprecated/public-api.ts b/packages/components/scrollbar/deprecated/public-api.ts new file mode 100644 index 0000000000..7a9c54992a --- /dev/null +++ b/packages/components/scrollbar/deprecated/public-api.ts @@ -0,0 +1,4 @@ +export * from './scrollbar.component'; +export * from './scrollbar.directive'; +export * from './scrollbar.module'; +export * from './scrollbar.types'; diff --git a/packages/components/scrollbar/scrollbar-tokens.scss b/packages/components/scrollbar/deprecated/scrollbar-tokens.scss similarity index 100% rename from packages/components/scrollbar/scrollbar-tokens.scss rename to packages/components/scrollbar/deprecated/scrollbar-tokens.scss diff --git a/packages/components/scrollbar/scrollbar.component.scss b/packages/components/scrollbar/deprecated/scrollbar.component.scss similarity index 99% rename from packages/components/scrollbar/scrollbar.component.scss rename to packages/components/scrollbar/deprecated/scrollbar.component.scss index 21960db384..0f65225e99 100644 --- a/packages/components/scrollbar/scrollbar.component.scss +++ b/packages/components/scrollbar/deprecated/scrollbar.component.scss @@ -1,4 +1,4 @@ -@use '../core/styles/common/tokens' as *; +@use '../../core/styles/common/tokens' as *; @use './scrollbar-component-theme' as *; .kbq-scrollbar-component { diff --git a/packages/components/scrollbar/scrollbar.component.spec.ts b/packages/components/scrollbar/deprecated/scrollbar.component.spec.ts similarity index 100% rename from packages/components/scrollbar/scrollbar.component.spec.ts rename to packages/components/scrollbar/deprecated/scrollbar.component.spec.ts diff --git a/packages/components/scrollbar/scrollbar.component.ts b/packages/components/scrollbar/deprecated/scrollbar.component.ts similarity index 96% rename from packages/components/scrollbar/scrollbar.component.ts rename to packages/components/scrollbar/deprecated/scrollbar.component.ts index 83d8670da3..114aa8c877 100644 --- a/packages/components/scrollbar/scrollbar.component.ts +++ b/packages/components/scrollbar/deprecated/scrollbar.component.ts @@ -42,6 +42,11 @@ const filterEvents = (emits: KbqScrollbarEvents, events: KbqScrollbarEvents) => ); /** + * @deprecated Wraps `overlayscrollbars`. Superseded by the dependency-free + * `@koobiq/components/scrollbar`. Will be removed in a future major version — see + * `@koobiq/components/scrollbar/deprecated`'s migration path via `ng update`. + * @docs-private + * * The component-wrapper for `overlayscrollbars` library. */ @Component({ diff --git a/packages/components/scrollbar/scrollbar.directive.ts b/packages/components/scrollbar/deprecated/scrollbar.directive.ts similarity index 96% rename from packages/components/scrollbar/scrollbar.directive.ts rename to packages/components/scrollbar/deprecated/scrollbar.directive.ts index 1081574c96..3f13ecc8e3 100644 --- a/packages/components/scrollbar/scrollbar.directive.ts +++ b/packages/components/scrollbar/deprecated/scrollbar.directive.ts @@ -50,6 +50,10 @@ const createDefer = (): Defer => { }; /** + * @deprecated Wraps `overlayscrollbars`. Superseded by the dependency-free + * `@koobiq/components/scrollbar`. Will be removed in a future major version. + * @docs-private + * * A directive for adding `overlayscrollbars` to an element. */ @Directive({ diff --git a/packages/components/scrollbar/deprecated/scrollbar.module.ts b/packages/components/scrollbar/deprecated/scrollbar.module.ts new file mode 100644 index 0000000000..f218886843 --- /dev/null +++ b/packages/components/scrollbar/deprecated/scrollbar.module.ts @@ -0,0 +1,22 @@ +import { NgModule } from '@angular/core'; +import { KbqScrollbar } from './scrollbar.component'; +import { KbqScrollbarDirective } from './scrollbar.directive'; +import { KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG_PROVIDER } from './scrollbar.types'; + +const COMPONENTS = [ + KbqScrollbar, + KbqScrollbarDirective +]; + +/** + * @deprecated Wraps `overlayscrollbars`. Superseded by the dependency-free + * `@koobiq/components/scrollbar`. Will be removed in a future major version — an `ng update` + * migration rewrites `@koobiq/components/scrollbar` imports of this module to + * `@koobiq/components/scrollbar/deprecated` automatically. + */ +@NgModule({ + imports: COMPONENTS, + providers: [KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG_PROVIDER], + exports: COMPONENTS +}) +export class KbqScrollbarModule {} diff --git a/packages/components/scrollbar/scrollbar.types.ts b/packages/components/scrollbar/deprecated/scrollbar.types.ts similarity index 100% rename from packages/components/scrollbar/scrollbar.types.ts rename to packages/components/scrollbar/deprecated/scrollbar.types.ts diff --git a/packages/components/scrollbar/e2e.playwright-spec.ts b/packages/components/scrollbar/e2e.playwright-spec.ts index f5176eb561..7f04707dfc 100644 --- a/packages/components/scrollbar/e2e.playwright-spec.ts +++ b/packages/components/scrollbar/e2e.playwright-spec.ts @@ -1,21 +1,417 @@ import { expect, Locator, Page, test } from '@playwright/test'; -import { e2eEnableDarkTheme } from '../../e2e/utils'; - -test.use({ browserName: 'webkit' }); +import { e2eEnableDarkTheme } from 'packages/e2e/utils'; test.describe('KbqScrollbar', () => { test.describe('E2eScrollbarStateAndStyle', () => { const getComponent = (page: Page) => page.getByTestId('e2eScrollbarStateAndStyle'); - const getTestTable = (locator: Locator) => locator.getByTestId('e2eScrollbarTable'); + const getScrollbar = (page: Page) => getComponent(page).locator('kbq-scrollbar'); + const getThumb = (page: Page) => + getComponent(page).locator('.kbq-scrollbar-track__bar_vertical .kbq-scrollbar-track__thumb'); + const getHorizontalThumb = (page: Page) => + getComponent(page).locator('.kbq-scrollbar-track__bar_horizontal .kbq-scrollbar-track__thumb'); + + // Resolves a CSS custom property the same way the browser would resolve it as a `background-color` + // (via a disposable probe element in the same cascade scope), rather than comparing against the + // custom property's raw text — which isn't guaranteed to be formatted the same way `getComputedStyle` + // normalizes an actual `background-color` (e.g. `rgba(0,0,0,.5)` vs `rgba(0, 0, 0, 0.5)`). + const resolveBackgroundColorVar = (locator: Locator, variableName: string) => + locator.evaluate((el, name) => { + const probe = document.createElement('div'); + + probe.style.backgroundColor = `var(${name})`; + el.appendChild(probe); + + const color = getComputedStyle(probe).backgroundColor; + + probe.remove(); - test('states', async ({ page }) => { + return color; + }, variableName); + + test.beforeEach(async ({ page }) => { await page.goto('/E2eScrollbarStateAndStyle'); - const locator = getComponent(page); - const screenshotTarget = getTestTable(locator); + }); + + test('shows the track on hover', async ({ page }) => { + const component = getComponent(page); + + await getScrollbar(page).hover(); - await expect(screenshotTarget).toHaveScreenshot('01-light.png'); + await expect(component).toHaveScreenshot('01-light.png'); await e2eEnableDarkTheme(page); - await expect(screenshotTarget).toHaveScreenshot('01-dark.png'); + await expect(component).toHaveScreenshot('01-dark.png'); + }); + + test('hovering the thumb applies --kbq-scrollbar-thumb-hover-background', async ({ page }) => { + const thumb = getThumb(page); + + await getScrollbar(page).hover(); // reveals the track — mode defaults to "hover" + const expected = await resolveBackgroundColorVar(thumb, '--kbq-scrollbar-thumb-hover-background'); + + await thumb.hover(); + + await expect(thumb).toHaveCSS('background-color', expected); + }); + + test('vertical thumb is 14px wide and horizontal thumb is 14px tall', async ({ page }) => { + await getScrollbar(page).hover(); + + const verticalThumb = getThumb(page); + const horizontalThumb = getHorizontalThumb(page); + + await expect(verticalThumb).toBeVisible(); + await expect(horizontalThumb).toBeVisible(); + + expect(await verticalThumb.evaluate((el) => el.getBoundingClientRect().width)).toBe(14); + expect(await horizontalThumb.evaluate((el) => el.getBoundingClientRect().height)).toBe(14); + }); + + test('pressing the thumb applies --kbq-scrollbar-thumb-active-background', async ({ page }) => { + const thumb = getThumb(page); + + await getScrollbar(page).hover(); + const expected = await resolveBackgroundColorVar(thumb, '--kbq-scrollbar-thumb-active-background'); + + await thumb.hover(); + await page.mouse.down(); + + await expect(thumb).toHaveCSS('background-color', expected); + + await page.mouse.up(); + }); + }); + + test.describe('E2eScrollbarTrack', () => { + const getScrollbarY = (page: Page) => page.getByTestId('e2eScrollbarTrackY'); + const getScrollbarX = (page: Page) => page.getByTestId('e2eScrollbarTrackX'); + const getScrollbarXY = (page: Page) => page.getByTestId('e2eScrollbarTrackXY'); + const getVerticalBar = (scrollbar: Locator) => scrollbar.locator('.kbq-scrollbar-track__bar_vertical'); + const getHorizontalBar = (scrollbar: Locator) => scrollbar.locator('.kbq-scrollbar-track__bar_horizontal'); + + // Insets of `bar` relative to `` — the containing block its `position: + // absolute` insets (`inset-block`/`inset-inline`) actually resolve against — not the outer + // `` host, which pads its content instead. + const insetsOf = async (scrollbar: Locator, bar: Locator) => { + const track = scrollbar.locator('kbq-scrollbar-track'); + const [trackRect, barRect] = await Promise.all([ + track.evaluate((el) => el.getBoundingClientRect()), + bar.evaluate((el) => el.getBoundingClientRect()) + ]); + + return { + top: barRect.top - trackRect.top, + bottom: trackRect.bottom - barRect.bottom, + left: barRect.left - trackRect.left, + right: trackRect.right - barRect.right + }; + }; + + test.beforeEach(async ({ page }) => { + await page.goto('/E2eScrollbarTrack'); + }); + + test('a vertical-only track spans the full height, flush with the top and bottom edges', async ({ page }) => { + const scrollbar = getScrollbarY(page); + + await scrollbar.hover(); + + const inset = await insetsOf(scrollbar, getVerticalBar(scrollbar)); + + expect(inset.top).toBe(0); + expect(inset.bottom).toBe(0); + }); + + test('a horizontal-only track spans the full width, flush with the left and right edges', async ({ page }) => { + const scrollbar = getScrollbarX(page); + + await scrollbar.hover(); + + const inset = await insetsOf(scrollbar, getHorizontalBar(scrollbar)); + + expect(inset.left).toBe(0); + expect(inset.right).toBe(0); + }); + + test('the vertical and horizontal tracks meet at the corner without overlapping', async ({ page }) => { + const scrollbar = getScrollbarXY(page); + + await scrollbar.hover(); + + const vertical = await getVerticalBar(scrollbar).evaluate((el) => el.getBoundingClientRect()); + const horizontal = await getHorizontalBar(scrollbar).evaluate((el) => el.getBoundingClientRect()); + + expect(vertical.bottom).toBeLessThanOrEqual(horizontal.top); + expect(horizontal.right).toBeLessThanOrEqual(vertical.left); + }); + + test('when both tracks are visible, each reserves exactly the other track’s thickness at the corner', async ({ + page + }) => { + const scrollbar = getScrollbarXY(page); + + await scrollbar.hover(); + + const vertical = await insetsOf(scrollbar, getVerticalBar(scrollbar)); + const horizontal = await insetsOf(scrollbar, getHorizontalBar(scrollbar)); + + expect(vertical.top).toBe(0); + expect(vertical.bottom).toBe(14); + expect(horizontal.left).toBe(0); + expect(horizontal.right).toBe(14); + }); + }); + + test.describe('E2eScrollbarMode', () => { + const getScrollbar = (page: Page) => page.getByTestId('e2eScrollbarModeTarget'); + const getTrack = (page: Page) => getScrollbar(page).locator('kbq-scrollbar-track'); + const setMode = (page: Page, mode: string) => page.getByTestId(`mode-${mode}`).click(); + + test.beforeEach(async ({ page }) => { + await page.goto('/E2eScrollbarMode'); + // Keep the pointer away from the scrollbar so :hover doesn't mask mode-driven visibility. + await page.mouse.move(0, 0); + }); + + test('hover mode: track exists but stays hidden until hovered', async ({ page }) => { + await setMode(page, 'hover'); + const track = getTrack(page); + + await expect(track).toBeAttached(); + await expect(track).toHaveCSS('opacity', '0'); + + await getScrollbar(page).hover(); + await expect(track).toHaveCSS('opacity', '1'); + }); + + test('always mode: track is visible without hovering', async ({ page }) => { + await setMode(page, 'always'); + const track = getTrack(page); + + await expect(track).toBeAttached(); + await expect(track).toHaveCSS('opacity', '1'); + }); + + test('native mode: no custom track is rendered', async ({ page }) => { + await setMode(page, 'native'); + + await expect(getTrack(page)).not.toBeAttached(); + }); + + test('hidden mode: no custom track is rendered and the native scrollbar is hidden', async ({ page }) => { + await setMode(page, 'hidden'); + + await expect(getTrack(page)).not.toBeAttached(); + await expect(getScrollbar(page)).toHaveClass(/kbq-scrollbar-viewport_native-scrollbar-hidden/); + }); + + test('reacts to repeated mode switches on the same track instance, not just the first one', async ({ + page + }) => { + // `showTrack()` stays true across hover<->always, so is never + // destroyed/recreated here — this is what exposes a stale (non-reactive) mode input, + // unlike switching through native/hidden, which recreates the component either way. + const track = getTrack(page); + + await expect(track).toHaveCSS('opacity', '0'); // starts at the default 'hover' mode + + await setMode(page, 'always'); + await expect(track).toHaveCSS('opacity', '1'); + + await setMode(page, 'hover'); + await expect(track).toHaveCSS('opacity', '0'); + + await setMode(page, 'always'); + await expect(track).toHaveCSS('opacity', '1'); + }); + + test('hover mode: clicking a focusable descendant with the mouse does not keep the track visible after the pointer leaves', async ({ + page + }) => { + // Regression test: the track used to stay visible relying on `:focus-within`, which also + // matches DOM focus left behind by a mouse click (e.g. a dropdown item), not just keyboard + // navigation. Fixed by keying off `.cdk-keyboard-focused` instead. + await setMode(page, 'hover'); + const track = getTrack(page); + + // `force: true`: the horizontal thumb overlaps the button (the shared fixture content + // overflows both axes), which is irrelevant here — only the resulting focus origin matters. + await page.getByTestId('e2eScrollbarModeFocusable').click({ force: true }); + await page.mouse.move(0, 0); + + await expect(track).toHaveCSS('opacity', '0'); + }); + + test('hover mode: keyboard-focusing a plain descendant keeps the track visible', async ({ page }) => { + // The button isn't individually wired up to `FocusMonitor` — `KbqScrollbarViewport` monitors + // its whole subtree, so this works for any projected content, not just components that opt in. + await setMode(page, 'hover'); + const track = getTrack(page); + + // `Locator.focus()` is program-origin, not keyboard-origin — real Tab navigation is required + // so `FocusMonitor` classifies the resulting focus as `cdk-keyboard-focused`. Nothing between + // the last mode button and the target is tabbable, so a single Tab reaches it. + await page.getByTestId('mode-hidden').focus(); + await page.keyboard.press('Tab'); + + await expect(track).toHaveCSS('opacity', '1'); + }); + + test('hover mode: keyboard-scrolling via a focused descendant shows the track', async ({ page }) => { + // macOS-style expectation: the track should appear while the content is actively being + // scrolled from the keyboard. Tabbing to (and, belt-and-suspenders, arrow-key-scrolling past) + // a focused-but-non-scroll-handling element scrolls the nearest scrollable ancestor natively, + // even though DOM focus itself never leaves that element. + await setMode(page, 'hover'); + const track = getTrack(page); + const viewport = getScrollbar(page); + + const before = await viewport.evaluate((el) => el.scrollTop); + + await page.getByTestId('mode-hidden').focus(); + await page.keyboard.press('Tab'); + await expect(page.getByTestId('e2eScrollbarModeFocusable')).toBeFocused(); + await page.keyboard.press('ArrowDown'); + + await expect.poll(() => viewport.evaluate((el) => el.scrollTop)).toBeGreaterThan(before); + + await expect(track).toHaveCSS('opacity', '1'); + }); + }); + + test.describe('E2eScrollbarScrollTo', () => { + const getScrollbar = (page: Page) => page.getByTestId('e2eScrollbarScrollToTarget'); + const scrollTop = (page: Page) => getScrollbar(page).evaluate((el) => el.scrollTop); + const scrollLeft = (page: Page) => getScrollbar(page).evaluate((el) => el.scrollLeft); + + test.beforeEach(async ({ page }) => { + await page.goto('/E2eScrollbarScrollTo'); + }); + + test('scrollToBottom/scrollToTop scroll the vertical axis to the exact edges', async ({ page }) => { + // 5 blocks * 150px = 750px content, 150px viewport => 600px of vertical scroll range. + expect(await scrollTop(page)).toBe(0); + + await page.getByTestId('scroll-bottom').click(); + await expect.poll(() => scrollTop(page)).toBe(600); + + await page.getByTestId('scroll-top').click(); + await expect.poll(() => scrollTop(page)).toBe(0); + }); + + test('scrollEnd/scrollStart scroll the horizontal axis to the exact edges', async ({ page }) => { + // Each block is 300px wide inside a 150px viewport => 150px of horizontal scroll range. + expect(await scrollLeft(page)).toBe(0); + + await page.getByTestId('scroll-end').click(); + await expect.poll(() => scrollLeft(page)).toBe(150); + + await page.getByTestId('scroll-start').click(); + await expect.poll(() => scrollLeft(page)).toBe(0); + }); + + test('scrollToElement scrolls the target to the top of the viewport', async ({ page }) => { + // The target is the 3rd of 5 equal 150px blocks, so its offsetTop is exactly 300px. + await page.getByTestId('scroll-to-element').click(); + + await expect.poll(() => scrollTop(page)).toBe(300); + }); + }); + + test.describe('E2eScrollbarVirtualScroll', () => { + const getViewport = (page: Page) => page.getByTestId('e2eScrollbarVirtualScrollTarget'); + const getThumb = (page: Page) => getViewport(page).locator('.kbq-scrollbar-track__thumb'); + const thumbMetrics = (page: Page) => + getThumb(page).evaluate((el) => ({ top: parseFloat(el.style.top), height: parseFloat(el.style.height) })); + + test.beforeEach(async ({ page }) => { + await page.goto('/E2eScrollbarVirtualScroll'); + }); + + test('thumb shrinks and rises when items are appended while scrolled to the bottom', async ({ page }) => { + const viewport = getViewport(page); + + // Scroll to the bottom of the initial 20 items (20 * 32px = 640px content, 200px viewport). + await viewport.evaluate((el) => el.scrollTo({ top: el.scrollHeight })); + + // The thumb's own top/height are updated via a separately throttled RAF stream, not + // synchronously with the scroll event — wait for it to actually catch up before sampling, + // or `before` can be captured mid-flight and make the assertions below flaky. + await expect.poll(async () => (await thumbMetrics(page)).top).toBeGreaterThan(0); + + const before = await thumbMetrics(page); + + await page.getByTestId('add-items').click(); + + // scrollTop stays put while scrollHeight grows, so both the thumb's proportional size and + // its proportional offset shrink — the thumb visually rises and shrinks, exactly like macOS + // when content is appended below the current scroll position. + await expect.poll(async () => (await thumbMetrics(page)).height).toBeLessThan(before.height); + await expect.poll(async () => (await thumbMetrics(page)).top).toBeLessThan(before.top); + }); + + test('adding items does not shrink the thumb below its minimum size', async ({ page }) => { + await page.getByTestId('add-items').click(); + await page.getByTestId('add-items').click(); + await page.getByTestId('add-items').click(); + + const thumb = getThumb(page); + const boxHeight = () => thumb.evaluate((el) => el.getBoundingClientRect().height); + + // 32px visible min-size + 3px border on each side (--kbq-scrollbar-thumb-gap in scrollbar-viewport.scss). + await expect.poll(boxHeight).toBeGreaterThanOrEqual(38); + }); + + test('the thumb does not overhang the track when its CSS-enforced min size kicks in at the end of the scroll range', async ({ + page + }) => { + // Enough items that the natural (proportional) thumb size falls well under the + // CSS-enforced minimum, so `min-block-size` in scrollbar-track.scss clamps the rendered + // thumb larger than the `top`/`height` percentages alone would produce. + await page.getByTestId('add-items').click(); + await page.getByTestId('add-items').click(); + await page.getByTestId('add-items').click(); + + const viewport = getViewport(page); + + await viewport.evaluate((el) => el.scrollTo({ top: el.scrollHeight })); + await expect.poll(async () => (await thumbMetrics(page)).top).toBeGreaterThan(0); + + const bar = viewport.locator('.kbq-scrollbar-track__bar_vertical'); + const [barRect, thumbRect] = await Promise.all([ + bar.evaluate((el) => el.getBoundingClientRect()), + getThumb(page).evaluate((el) => el.getBoundingClientRect()) + ]); + + // Sub-pixel tolerance only, for the `height` percentage's own rounding (see + // `getViewFraction`) — not the multi-pixel overhang a wrong compensation formula produces. + expect(thumbRect.bottom).toBeLessThanOrEqual(barRect.bottom + 1); + }); + }); + + test.describe('E2eScrollbarNested', () => { + const getOuter = (page: Page) => page.getByTestId('e2eScrollbarNestedOuter'); + const getInner = (page: Page) => page.getByTestId('e2eScrollbarNestedInner'); + const outerScrollTop = (page: Page) => getOuter(page).evaluate((el) => el.scrollTop); + const innerScrollTop = (page: Page) => getInner(page).evaluate((el) => el.scrollTop); + + test.beforeEach(async ({ page }) => { + await page.goto('/E2eScrollbarNested'); + }); + + test('scrolling the outer scrollbar does not move the inner one', async ({ page }) => { + // Outer content: 200px spacer + 150px inner + 200px spacer = 550px in a 200px viewport. + await getOuter(page).evaluate((el) => el.scrollTo({ top: el.scrollHeight })); + + await expect.poll(() => outerScrollTop(page)).toBe(350); + expect(await innerScrollTop(page)).toBe(0); + }); + + test('scrolling the inner scrollbar does not move the outer one', async ({ page }) => { + // Inner content: 5 * 150px blocks = 750px in a 150px viewport. + await getInner(page).evaluate((el) => el.scrollTo({ top: el.scrollHeight })); + + await expect.poll(() => innerScrollTop(page)).toBe(600); + expect(await outerScrollTop(page)).toBe(0); }); }); }); diff --git a/packages/components/scrollbar/e2e.ts b/packages/components/scrollbar/e2e.ts index 063786a815..6508bda843 100644 --- a/packages/components/scrollbar/e2e.ts +++ b/packages/components/scrollbar/e2e.ts @@ -1,73 +1,297 @@ -import { ChangeDetectionStrategy, Component } from '@angular/core'; -import { KbqScrollbarModule } from './scrollbar.module'; -import { KBQ_SCROLLBAR_CONFIG, KbqScrollbarOptions } from './scrollbar.types'; - -type ScrollbarState = { - state: 'default' | 'disabled' | 'active' | 'hover'; -}; +import { ScrollingModule } from '@angular/cdk/scrolling'; +import { ChangeDetectionStrategy, Component, signal } from '@angular/core'; +import { KbqScrollbar, KbqScrollbarMode, KbqScrollbarViewport } from './scrollbar'; @Component({ selector: 'e2e-scrollbar-state-and-style', - imports: [ - KbqScrollbarModule - ], + imports: [KbqScrollbar], template: ` -
- - @for (row of states; track $index) { - - - - - } -
-
- @for (item of items; track item) { -
{{ item }}
-
- } -
-
-
- @for (item of items; track item) { -
{{ item }}
-
- } -
-
-
+ +

content

+
+ `, + styles: ` + :host { + display: inline-block; + padding: var(--kbq-size-xs); + } + + .e2e-scrollbar { + width: 100px; + height: 100px; + border-radius: var(--kbq-size-border-radius); + background-color: var(--kbq-background-bg-secondary); + } + + p { + width: 200%; + height: 200%; + margin: var(--kbq-size-l); + } `, - providers: [ - { - provide: KBQ_SCROLLBAR_CONFIG, - useValue: { - scrollbars: { - autoHide: 'never' - } - } satisfies KbqScrollbarOptions - } - ], changeDetection: ChangeDetectionStrategy.OnPush, host: { 'data-testid': 'e2eScrollbarStateAndStyle' } }) -export class E2eScrollbarStateAndStyle { - readonly items = Array.from({ length: 25 }).map((_, i) => `Item #${i}`); - - readonly states: ScrollbarState[] = [ - { state: 'default' }, - { state: 'hover' }, - { state: 'active' } - ]; +export class E2eScrollbarStateAndStyle {} + +@Component({ + selector: 'e2e-scrollbar-track', + imports: [KbqScrollbar], + template: ` + +

track Y

+
+ + +

track X

+
+ + +

track X and Y

+
+ `, + styles: ` + :host { + display: inline-flex; + gap: var(--kbq-size-m); + padding: var(--kbq-size-xs); + } + + .e2e-scrollbar { + --kbq-scrollbar-track-background: cyan; + --kbq-scrollbar-thumb-default-background: orange; + + width: 125px; + height: 125px; + background-color: var(--kbq-background-bg-secondary); + } + + p { + margin: var(--kbq-size-l); + } + `, + changeDetection: ChangeDetectionStrategy.OnPush, + host: { + 'data-testid': 'e2eScrollbarTrack' + } +}) +export class E2eScrollbarTrack {} + +@Component({ + selector: 'e2e-scrollbar-mode', + imports: [KbqScrollbar], + template: ` +
+ @for (m of modes; track m) { + + } +
+ + +

content

+ + +
+ `, + styles: ` + :host { + display: block; + padding: var(--kbq-size-xs); + } + + .e2e-scrollbar { + width: 200px; + height: 100px; + border-radius: var(--kbq-size-border-radius); + background-color: var(--kbq-background-bg-secondary); + } + + p { + width: 200%; + height: 200%; + margin: var(--kbq-size-l); + } + `, + changeDetection: ChangeDetectionStrategy.OnPush, + host: { + 'data-testid': 'e2eScrollbarMode' + } +}) +export class E2eScrollbarMode { + protected readonly modes: KbqScrollbarMode[] = ['hover', 'always', 'native', 'hidden']; + protected readonly mode = signal('hover'); + + protected modeTestId(mode: KbqScrollbarMode): string { + return `mode-${mode}`; + } } + +@Component({ + selector: 'e2e-scrollbar-scroll-to', + imports: [KbqScrollbar], + template: ` +
+ + + + + +
+ + +
1
+
2
+
3
+
4
+
5
+
+ `, + styles: ` + :host { + display: block; + padding: var(--kbq-size-xs); + } + + .e2e-buttons { + display: flex; + gap: var(--kbq-size-s); + } + + .e2e-scrollbar { + width: 150px; + height: 150px; + border-radius: var(--kbq-size-border-radius); + background-color: var(--kbq-background-bg-secondary); + } + + .e2e-block { + box-sizing: border-box; + width: 300px; + height: 150px; + } + `, + changeDetection: ChangeDetectionStrategy.OnPush, + host: { + 'data-testid': 'e2eScrollbarScrollTo' + } +}) +export class E2eScrollbarScrollTo {} + +@Component({ + selector: 'e2e-scrollbar-virtual-scroll', + imports: [KbqScrollbarViewport, ScrollingModule], + template: ` + + + + @for (item of items(); track item) { +
{{ item }}
+ } +
+ `, + styles: ` + :host { + display: block; + padding: var(--kbq-size-xs); + } + + .e2e-scrollbar { + --kbq-scrollbar-track-background: cyan; + --kbq-scrollbar-thumb-default-background: orange; + + width: 200px; + height: 200px; + background-color: var(--kbq-background-bg-secondary); + } + + .e2e-item { + box-sizing: border-box; + height: 32px; + } + `, + changeDetection: ChangeDetectionStrategy.OnPush, + host: { + 'data-testid': 'e2eScrollbarVirtualScroll' + } +}) +export class E2eScrollbarVirtualScroll { + protected readonly items = signal(Array.from({ length: 20 }).map((_, i) => `Item #${i}`)); + + protected addItems(): void { + const nextIndex = this.items().length; + const newItems = Array.from({ length: 50 }).map((_, i) => `Item #${nextIndex + i}`); + + this.items.update((items) => [...items, ...newItems]); + } +} + +@Component({ + selector: 'e2e-scrollbar-nested', + imports: [KbqScrollbar], + template: ` + +
+ + +
1
+
2
+
3
+
4
+
5
+
+ +
+
+ `, + styles: ` + :host { + display: block; + padding: var(--kbq-size-xs); + } + + .e2e-outer { + width: 300px; + height: 200px; + border-radius: var(--kbq-size-border-radius); + background-color: var(--kbq-background-bg-secondary); + } + + .e2e-outer-spacer { + box-sizing: border-box; + height: 200px; + } + + .e2e-inner { + width: 250px; + height: 150px; + background-color: var(--kbq-background-bg-tertiary); + } + + .e2e-inner-block { + box-sizing: border-box; + width: 100%; + height: 150px; + } + `, + changeDetection: ChangeDetectionStrategy.OnPush, + host: { + 'data-testid': 'e2eScrollbarNested' + } +}) +export class E2eScrollbarNested {} diff --git a/packages/components/scrollbar/examples.scrollbar.en.md b/packages/components/scrollbar/examples.scrollbar.en.md index d6f3d9fc4e..2faef3848c 100644 --- a/packages/components/scrollbar/examples.scrollbar.en.md +++ b/packages/components/scrollbar/examples.scrollbar.en.md @@ -1 +1,5 @@ - +🚧 **Documentation in progress** 🚧 + +Unfortunately, the documentation for this section is not ready yet. We are actively working on its creation and plan to add it soon. + +If you would like to contribute to the documentation or have any questions, please feel free to [open an issue](https://github.com/koobiq/angular-components/issues) in our GitHub repository. diff --git a/packages/components/scrollbar/examples.scrollbar.ru.md b/packages/components/scrollbar/examples.scrollbar.ru.md index d6f3d9fc4e..b7a203c6ab 100644 --- a/packages/components/scrollbar/examples.scrollbar.ru.md +++ b/packages/components/scrollbar/examples.scrollbar.ru.md @@ -1 +1,5 @@ - +🚧 **Документация в процессе написания** 🚧 + +К сожалению, документация для этого раздела еще не готова. Мы активно работаем над ее созданием и планируем добавить в ближайшее время. + +Если вы хотите помочь в написании документации или у вас есть вопросы, пожалуйста, [создайте issue](https://github.com/koobiq/angular-components/issues) в нашем репозитории на GitHub. diff --git a/packages/components/scrollbar/index.ts b/packages/components/scrollbar/index.ts index 7e1a213e3e..17863d47fe 100644 --- a/packages/components/scrollbar/index.ts +++ b/packages/components/scrollbar/index.ts @@ -1 +1 @@ -export * from './public-api'; +export * from './scrollbar'; diff --git a/packages/components/scrollbar/public-api.ts b/packages/components/scrollbar/public-api.ts index 7a9c54992a..983c1f6eca 100644 --- a/packages/components/scrollbar/public-api.ts +++ b/packages/components/scrollbar/public-api.ts @@ -1,4 +1,2 @@ -export * from './scrollbar.component'; -export * from './scrollbar.directive'; +export * from './scrollbar'; export * from './scrollbar.module'; -export * from './scrollbar.types'; diff --git a/packages/components/scrollbar/scrollbar-track.scss b/packages/components/scrollbar/scrollbar-track.scss new file mode 100644 index 0000000000..9a0fed3643 --- /dev/null +++ b/packages/components/scrollbar/scrollbar-track.scss @@ -0,0 +1,102 @@ +:host { + position: sticky; + z-index: var(--kbq-scrollbar-track-z-index, 1); + display: block; + // When the viewport host is a flex container, the track is a flex sibling of the (typically tall) + // content. Without this it keeps `flex-shrink: 1` and, having no intrinsic min-height, absorbs all + // the container's negative free space — collapsing to 0 height so the bar/thumb never render. The + // negative `margin-inline-end`/`margin-block-end` already cancels its layout contribution, so + // pinning shrink to 0 is layout-neutral (and ignored entirely in a block container). + flex-shrink: 0; + inset-block-start: 0; + inset-inline-start: 0; + min-inline-size: calc(100% - 1px); + max-inline-size: calc(100% - 1px); + margin-inline-end: calc(-100% + 1px); + pointer-events: none; + overflow: hidden; + // Lets a consumer theme one scrollbar instance without a class hook to target — the track may be + // created dynamically (see KbqScrollbarViewport) rather than declared in a consumer's own template. + color: var(--kbq-scrollbar-color, currentColor); +} + +@keyframes kbq-scrollbar-fade { + from { + opacity: 0; + } + + to { + opacity: 1; + } +} + +.kbq-scrollbar-track__bar { + position: absolute; + inset-inline-end: 0; + background: var(--kbq-scrollbar-track-background, transparent); + pointer-events: auto; +} + +.kbq-scrollbar-track__bar_enter, +.kbq-scrollbar-track__bar_leave { + animation: kbq-scrollbar-fade var(--kbq-scrollbar-transition-duration) ease-in-out; +} + +.kbq-scrollbar-track__bar_leave { + animation-direction: reverse; +} + +.kbq-scrollbar-track__bar_vertical { + inset-block: 0; + inline-size: var(--kbq-scrollbar-track-size); +} + +.kbq-scrollbar-track__bar_horizontal { + inset-block-end: 0; + inset-inline-start: 0; + block-size: var(--kbq-scrollbar-track-size); +} + +.kbq-scrollbar-track__bar_has-horizontal { + inset-block-end: var(--kbq-scrollbar-track-size); +} + +.kbq-scrollbar-track__bar_has-vertical { + inset-inline-end: var(--kbq-scrollbar-track-size); +} + +.kbq-scrollbar-track__thumb { + transition: background-color var(--kbq-scrollbar-transition-duration) ease; + position: absolute; + // The thumb has no explicit cross-axis size of its own: `inset-inline: 0`/`inset-block: 0` below + // stretch it to fill the bar's `--kbq-scrollbar-track-size` cross-axis, border-box included. + // Transparent border (not margin) carves out the gap from the bar's edges — box-sizing: border-box + // keeps the border inside the thumb's own hit area, and background-clip: content-box keeps the + // visible fill out of it, so the painted thumb is smaller than its clickable/draggable box. + border: var(--kbq-scrollbar-thumb-gap) solid transparent; + border-radius: var(--kbq-size-border-radius); + box-sizing: border-box; + background-color: var(--kbq-scrollbar-thumb-default-background); + background-clip: content-box; + cursor: default; + user-select: none; + pointer-events: auto; +} + +.kbq-scrollbar-track__thumb:hover { + background-color: var(--kbq-scrollbar-thumb-hover-background); +} + +.kbq-scrollbar-track__thumb:active { + background-color: var(--kbq-scrollbar-thumb-active-background); +} + +.kbq-scrollbar-track__bar_vertical .kbq-scrollbar-track__thumb { + inset-inline: 0; + min-block-size: calc(var(--kbq-scrollbar-thumb-min-size) + var(--kbq-scrollbar-thumb-gap) * 2); +} + +.kbq-scrollbar-track__bar_horizontal .kbq-scrollbar-track__thumb { + inset-block: 0; + min-inline-size: calc(var(--kbq-scrollbar-thumb-min-size) + var(--kbq-scrollbar-thumb-gap) * 2); +} diff --git a/packages/components/scrollbar/scrollbar-viewport.scss b/packages/components/scrollbar/scrollbar-viewport.scss new file mode 100644 index 0000000000..db515d8056 --- /dev/null +++ b/packages/components/scrollbar/scrollbar-viewport.scss @@ -0,0 +1,43 @@ +:where(.kbq-scrollbar-viewport) { + --kbq-scrollbar-thumb-min-size: var(--kbq-size-3xl); + --kbq-scrollbar-thumb-gap: 3px; + --kbq-scrollbar-track-size: 14px; + --kbq-scrollbar-track-z-index: 1; + --kbq-scrollbar-transition-duration: 0.15s; + --kbq-scrollbar-thumb-default-background: var(--kbq-semantic-contrast-a3, var(--kbq-palette-grey-50-a32)); + --kbq-scrollbar-thumb-hover-background: var(--kbq-semantic-contrast-a4, var(--kbq-palette-grey-50-a48)); + --kbq-scrollbar-thumb-active-background: var(--kbq-semantic-contrast-a5, var(--kbq-palette-grey-20-a55)); + --kbq-scrollbar-track-background: transparent; +} + +:where(.kbq-dark .kbq-scrollbar-viewport) { + --kbq-scrollbar-thumb-default-background: var(--kbq-semantic-dark-contrast-a9, var(--kbq-palette-grey-50-a48)); + --kbq-scrollbar-thumb-hover-background: var(--kbq-semantic-dark-contrast-a10, var(--kbq-palette-grey-50-a60)); + --kbq-scrollbar-thumb-active-background: var(--kbq-semantic-dark-contrast-a11, var(--kbq-palette-grey-50-a80)); +} + +.kbq-scrollbar-viewport_native-scrollbar-hidden { + scrollbar-width: none; + -ms-overflow-style: none; +} + +.kbq-scrollbar-viewport_native-scrollbar-hidden::-webkit-scrollbar, +.kbq-scrollbar-viewport_native-scrollbar-hidden::-webkit-scrollbar-thumb { + display: none; +} + +.kbq-scrollbar-track_hover:not(:active) { + transition: opacity var(--kbq-scrollbar-transition-duration) ease; + opacity: 0; +} + +// `:focus-within` also matches DOM focus a mouse click leaves behind on a descendant (e.g. a dropdown +// item) after the pointer leaves, keeping the track visible indefinitely. `cdk-keyboard-focused` is +// scoped to keyboard-originated focus (`KbqScrollbarViewport` monitors its subtree via +// `cdkMonitorSubtreeFocus`), so the track stays hidden for mouse focus but visible while, e.g., arrow +// keys scroll the content. +.kbq-scrollbar-viewport:hover > .kbq-scrollbar-track_hover, +.kbq-scrollbar-viewport.cdk-keyboard-focused > .kbq-scrollbar-track_hover { + transition: opacity var(--kbq-scrollbar-transition-duration) ease; + opacity: 1; +} diff --git a/packages/components/scrollbar/scrollbar.en.md b/packages/components/scrollbar/scrollbar.en.md index 105897bd94..e3b65f23e1 100644 --- a/packages/components/scrollbar/scrollbar.en.md +++ b/packages/components/scrollbar/scrollbar.en.md @@ -1,37 +1,34 @@ -`` is a component used to configure scrollbar parameters. +`KbqScrollbar` adds a customizable scrollbar to a scrollable content area. Scrolling uses the browser's native mechanism, preserving mouse wheel, touch gesture, and keyboard controls. -
-
Note
-
+## Display mode -For the component to work, the [`overlayscrollbars@2.7.3`](https://github.com/KingSora/OverlayScrollbars/tree/v2.7.0) dependency is required: +The `mode` input controls how the scrollbar is displayed: -```bash -npm install overlayscrollbars@2.7.3 -``` +- `hover` — shows the scrollbar on pointer hover or keyboard focus. This is the default mode. +- `always` — always shows the scrollbar when the content overflows its container. +- `native` — shows the browser's native scrollbar. +- `hidden` — hides the scrollbar while keeping the content scrollable. -
-
+Use `kbqScrollbarOptionsProvider` to change the default mode for the application or a specific dependency injection scope. -## Configuration and passing parameters: + -- for a specific scrollbar, using the `options` attribute: +## Virtual scroll - +Apply the `kbqScrollbarViewport` directive to `cdk-virtual-scroll-viewport` to add a custom scrollbar. The directive supports the same display modes. + + + +## Programmatic scrolling -- for all scrollbars in a module, using _Dependency Injection_ with the `KBQ_SCROLLBAR_CONFIG` token: +Access the component through its `kbqScrollbar` export and use its public methods: - +- `scrollTo` — scrolls to specified coordinates; +- `scrollToTop` and `scrollToBottom` — scroll to the start or end of the vertical axis; +- `scrollStart` and `scrollEnd` — scroll to the logical start or end of the horizontal axis, respecting RTL; +- `scrollToElement` — scrolls to an element or CSS selector with optional offsets; +- `scrollIntoView` — centers an element within the viewport. -### Event handling: +Methods that accept a `behavior` parameter support the native `auto` and `smooth` scrolling behaviors. Scroll events are available through `scrollChanges`. -```ts - - ... - -``` + diff --git a/packages/components/scrollbar/scrollbar.module.ts b/packages/components/scrollbar/scrollbar.module.ts index 31ba23bd7e..ceb1836ba7 100644 --- a/packages/components/scrollbar/scrollbar.module.ts +++ b/packages/components/scrollbar/scrollbar.module.ts @@ -1,16 +1,14 @@ import { NgModule } from '@angular/core'; -import { KbqScrollbar } from './scrollbar.component'; -import { KbqScrollbarDirective } from './scrollbar.directive'; -import { KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG_PROVIDER } from './scrollbar.types'; +import { KbqScrollbar, KbqScrollbarViewport } from './scrollbar'; const COMPONENTS = [ KbqScrollbar, - KbqScrollbarDirective + KbqScrollbarViewport ]; +/** @docs-private */ @NgModule({ imports: COMPONENTS, - providers: [KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG_PROVIDER], exports: COMPONENTS }) export class KbqScrollbarModule {} diff --git a/packages/components/scrollbar/scrollbar.ru.md b/packages/components/scrollbar/scrollbar.ru.md index 7128e41a89..509f3c7ab8 100644 --- a/packages/components/scrollbar/scrollbar.ru.md +++ b/packages/components/scrollbar/scrollbar.ru.md @@ -1,37 +1,34 @@ -`` - это компонент который используется для настройки параметров скроллбара. +`KbqScrollbar` добавляет настраиваемый скроллбар к области с прокручиваемым содержимым. Прокрутка выполняется нативным механизмом браузера, поэтому сохраняется управление колёсиком мыши, жестами и клавиатурой. -
-
Обрати внимание
-
+## Режим отображения -Для работы компонента, необходимо наличие [`overlayscrollbars@2.7.3`](https://github.com/KingSora/OverlayScrollbars/tree/v2.7.0) зависимости: +Режим задаётся входным параметром `mode`: -```bash -npm install overlayscrollbars@2.7.3 -``` +- `hover` — скроллбар появляется при наведении указателя или клавиатурном фокусе. Используется по умолчанию. +- `always` — скроллбар отображается постоянно, если содержимое выходит за границы области. +- `native` — отображается системный скроллбар браузера. +- `hidden` — скроллбар скрыт, но содержимое можно прокручивать. -
-
+Режим по умолчанию для приложения или отдельной области DI можно изменить с помощью `kbqScrollbarOptionsProvider`. -## Настройка и передача параметров: + -- для определенного скроллбара, при помощи атрибута `options`: +## Виртуальный скролл - +Чтобы добавить кастомный скроллбар к `cdk-virtual-scroll-viewport`, примените к нему директиву `kbqScrollbarViewport`. Директива поддерживает те же режимы отображения. + + + +## Программное управление прокруткой -- для всех скроллбаров в модуле, при помощи _Dependency Injection_ c использованием `KBQ_SCROLLBAR_CONFIG` токена: +Получите компонент через экспорт `kbqScrollbar` и используйте его публичные методы: - +- `scrollTo` — прокрутить до заданных координат; +- `scrollToTop` и `scrollToBottom` — прокрутить к началу или концу вертикальной оси; +- `scrollStart` и `scrollEnd` — прокрутить к логическому началу или концу горизонтальной оси с учётом RTL; +- `scrollToElement` — прокрутить до элемента или CSS-селектора с необязательными отступами; +- `scrollIntoView` — расположить элемент в центре области просмотра. -### Обработка событий: +В методах с параметром `behavior` можно выбрать нативное поведение прокрутки `auto` или `smooth`. События прокрутки доступны через `scrollChanges`. -```ts - - ... - -``` + diff --git a/packages/components/scrollbar/scrollbar.scss b/packages/components/scrollbar/scrollbar.scss new file mode 100644 index 0000000000..49019e5589 --- /dev/null +++ b/packages/components/scrollbar/scrollbar.scss @@ -0,0 +1,24 @@ +:host { + position: relative; + display: flex; + // Lets the host fill available space along whichever axis is the parent's main axis + // (cross-axis sizing is already handled by the parent's default `align-items: stretch`), + // so it behaves like a block element regardless of the parent's layout mode. + flex: 1; + min-inline-size: 0; + min-block-size: 0; + max-block-size: 100%; + isolation: isolate; + overflow: auto; +} + +.kbq-scrollbar__content { + isolation: isolate; + flex: 1; + flex-basis: auto; + inline-size: 100%; + // A hard 100% (not `min-block-size`) so a `height: 100%` chain inside projected content (e.g. a + // grid that needs a definite pixel height to render at all) resolves correctly — content taller + // than the host still overflows past it normally and is measured via `scrollHeight` regardless. + block-size: 100%; +} diff --git a/packages/components/scrollbar/scrollbar.spec.ts b/packages/components/scrollbar/scrollbar.spec.ts new file mode 100644 index 0000000000..b36beae1bb --- /dev/null +++ b/packages/components/scrollbar/scrollbar.spec.ts @@ -0,0 +1,932 @@ +import { CdkScrollable } from '@angular/cdk/scrolling'; +import { Component, ElementRef, Provider, Type, viewChild } from '@angular/core'; +import { ComponentFixture, discardPeriodicTasks, fakeAsync, TestBed, tick } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { dispatchMouseEvent, KbqOverflowShadowContainer } from '@koobiq/components/core'; +import { + KbqScrollbar, + KbqScrollbarMode, + kbqScrollbarOptionsProvider, + KbqScrollbarThumb, + KbqScrollbarViewport +} from './scrollbar'; + +const createComponent = (component: Type, providers: Provider[] = []): ComponentFixture => { + TestBed.configureTestingModule({ imports: [component], providers }); + const fixture = TestBed.createComponent(component); + + fixture.autoDetectChanges(); + + return fixture; +}; + +type ElementMetrics = Partial< + Record< + | 'clientHeight' + | 'scrollHeight' + | 'clientWidth' + | 'scrollWidth' + | 'offsetHeight' + | 'offsetWidth' + | 'scrollTop' + | 'scrollLeft', + number + > +>; + +const setMetrics = (el: HTMLElement, metrics: ElementMetrics): void => { + for (const [key, value] of Object.entries(metrics)) { + Object.defineProperty(el, key, { configurable: true, value }); + } +}; + +/** `CdkScrollable` lives on ``'s own element injector (via `KbqScrollbarViewport`'s hostDirectives), not the test host root. */ +const getScrollable = (fixture: ComponentFixture): CdkScrollable => + fixture.debugElement.query(By.directive(KbqScrollbar)).injector.get(CdkScrollable); + +const setRect = (el: HTMLElement, rect: Partial): void => { + jest.spyOn(el, 'getBoundingClientRect').mockReturnValue({ + top: 0, + left: 0, + right: 0, + bottom: 0, + width: 0, + height: 0, + x: 0, + y: 0, + toJSON: () => ({}), + ...rect + } as DOMRect); +}; + +describe(KbqScrollbar.name, () => { + describe('options', () => { + @Component({ + selector: 'test-scrollbar-default-options', + imports: [KbqScrollbar], + template: ` + content + ` + }) + class TestScrollbarDefaultOptions { + readonly scrollbar = viewChild.required(KbqScrollbar); + } + + it('defaults mode to "hover"', () => { + const fixture = createComponent(TestScrollbarDefaultOptions); + + expect(fixture.componentInstance.scrollbar().mode()).toBe('hover'); + }); + + it('honors kbqScrollbarOptionsProvider at the injector level', () => { + const fixture = createComponent(TestScrollbarDefaultOptions, [ + kbqScrollbarOptionsProvider({ mode: 'always' }) + ]); + + expect(fixture.componentInstance.scrollbar().mode()).toBe('always'); + }); + + it('lets a per-instance [mode] override the injected default', () => { + @Component({ + selector: 'test-scrollbar-mode-override', + imports: [KbqScrollbar], + template: ` + content + ` + }) + class TestScrollbarModeOverride { + readonly scrollbar = viewChild.required(KbqScrollbar); + } + + const fixture = createComponent(TestScrollbarModeOverride, [ + kbqScrollbarOptionsProvider({ mode: 'always' }) + ]); + + expect(fixture.componentInstance.scrollbar().mode()).toBe('native'); + }); + }); + + describe('mode-driven rendering', () => { + @Component({ + selector: 'test-scrollbar-mode', + imports: [KbqScrollbar], + template: ` + content + ` + }) + class TestScrollbarMode { + mode: KbqScrollbarMode = 'hover'; + } + + const getHost = (fixture: ComponentFixture) => + fixture.nativeElement.querySelector('kbq-scrollbar'); + const getTrack = (fixture: ComponentFixture) => + fixture.nativeElement.querySelector('kbq-scrollbar-track'); + + it.each<[KbqScrollbarMode, boolean]>([ + ['hover', true], + ['always', true], + ['native', false], + ['hidden', false] + ])('renders the custom track for mode="%s": %s', (mode, expected) => { + const fixture = createComponent(TestScrollbarMode); + + fixture.componentInstance.mode = mode; + fixture.detectChanges(); + + expect(!!getTrack(fixture)).toBe(expected); + }); + + it.each<[KbqScrollbarMode, boolean]>([ + ['hover', true], + ['always', true], + ['native', false], + ['hidden', true] + ])('sets kbq-scrollbar-viewport_native-scrollbar-hidden for mode="%s": %s', (mode, expected) => { + const fixture = createComponent(TestScrollbarMode); + + fixture.componentInstance.mode = mode; + fixture.detectChanges(); + + expect(getHost(fixture).classList.contains('kbq-scrollbar-viewport_native-scrollbar-hidden')).toBe( + expected + ); + }); + + it('reacts to mode changing at runtime, creating the track once it starts being needed', () => { + const fixture = createComponent(TestScrollbarMode); + + fixture.componentInstance.mode = 'native'; + fixture.detectChanges(); + + expect(getTrack(fixture)).toBeNull(); + + fixture.componentInstance.mode = 'always'; + fixture.detectChanges(); + + expect(getTrack(fixture)).not.toBeNull(); + }); + + it('updates mode on the same track instance rather than recreating it when switching between hover and always', () => { + const fixture = createComponent(TestScrollbarMode); + + fixture.componentInstance.mode = 'hover'; + fixture.detectChanges(); + + const trackBeforeSwitch = getTrack(fixture); + + fixture.componentInstance.mode = 'always'; + fixture.detectChanges(); + + expect(getTrack(fixture)).toBe(trackBeforeSwitch); + }); + + it('destroys and recreates the track when mode leaves and re-enters native/hidden', () => { + const fixture = createComponent(TestScrollbarMode); + + fixture.componentInstance.mode = 'hover'; + fixture.detectChanges(); + + const trackBeforeSwitch = getTrack(fixture); + + fixture.componentInstance.mode = 'hidden'; + fixture.detectChanges(); + + expect(getTrack(fixture)).toBeNull(); + + fixture.componentInstance.mode = 'always'; + fixture.detectChanges(); + + expect(getTrack(fixture)).not.toBeNull(); + expect(getTrack(fixture)).not.toBe(trackBeforeSwitch); + }); + }); + + describe('KbqScrollbarTrack visibility', () => { + @Component({ + selector: 'test-scrollbar-track-visibility', + imports: [KbqScrollbar], + template: ` + content + ` + }) + class TestScrollbarTrackVisibility { + readonly scrollbar = viewChild.required(KbqScrollbar, { read: ElementRef }); + } + + const getViewportEl = (fixture: ComponentFixture): HTMLElement => + fixture.componentInstance.scrollbar().nativeElement; + + it('shows only the vertical bar when content overflows vertically only', fakeAsync(() => { + const fixture = createComponent(TestScrollbarTrackVisibility); + + setMetrics(getViewportEl(fixture), { + clientHeight: 100, + scrollHeight: 500, + clientWidth: 100, + scrollWidth: 100 + }); + + tick(300); + fixture.detectChanges(); + + expect(fixture.nativeElement.querySelector('.kbq-scrollbar-track__bar_vertical')).not.toBeNull(); + expect(fixture.nativeElement.querySelector('.kbq-scrollbar-track__bar_horizontal')).toBeNull(); + + discardPeriodicTasks(); + })); + + it('shows only the horizontal bar when content overflows horizontally only', fakeAsync(() => { + const fixture = createComponent(TestScrollbarTrackVisibility); + + setMetrics(getViewportEl(fixture), { + clientHeight: 100, + scrollHeight: 100, + clientWidth: 100, + scrollWidth: 500 + }); + + tick(300); + fixture.detectChanges(); + + expect(fixture.nativeElement.querySelector('.kbq-scrollbar-track__bar_vertical')).toBeNull(); + expect(fixture.nativeElement.querySelector('.kbq-scrollbar-track__bar_horizontal')).not.toBeNull(); + + discardPeriodicTasks(); + })); + + it('marks both bars _has-horizontal/_has-vertical when both axes overflow', fakeAsync(() => { + const fixture = createComponent(TestScrollbarTrackVisibility); + + setMetrics(getViewportEl(fixture), { + clientHeight: 100, + scrollHeight: 500, + clientWidth: 100, + scrollWidth: 500 + }); + + tick(300); + fixture.detectChanges(); + + expect(fixture.nativeElement.querySelector('.kbq-scrollbar-track__bar_has-horizontal')).not.toBeNull(); + expect(fixture.nativeElement.querySelector('.kbq-scrollbar-track__bar_has-vertical')).not.toBeNull(); + + discardPeriodicTasks(); + })); + + it('shows no bars when content does not overflow, even in "always" mode', fakeAsync(() => { + const fixture = createComponent(TestScrollbarTrackVisibility); + + setMetrics(getViewportEl(fixture), { + clientHeight: 100, + scrollHeight: 100, + clientWidth: 100, + scrollWidth: 100 + }); + + tick(300); + fixture.detectChanges(); + + expect(fixture.nativeElement.querySelector('.kbq-scrollbar-track__bar')).toBeNull(); + + discardPeriodicTasks(); + })); + + it('mirrors the viewport clientHeight into block-size/margin-block-end, one pixel short', fakeAsync(() => { + const fixture = createComponent(TestScrollbarTrackVisibility); + const trackEl: HTMLElement = fixture.nativeElement.querySelector('kbq-scrollbar-track'); + + setMetrics(getViewportEl(fixture), { clientHeight: 50 }); + + tick(300); + fixture.detectChanges(); + + expect(trackEl.style.blockSize).toBe('49px'); + expect(trackEl.style.marginBlockEnd).toBe('-49px'); + + discardPeriodicTasks(); + })); + + it('is inserted as the first child of the scrollable element', () => { + const fixture = createComponent(TestScrollbarTrackVisibility); + + expect(getViewportEl(fixture).firstChild).toBe(fixture.nativeElement.querySelector('kbq-scrollbar-track')); + }); + }); + + describe(KbqScrollbarThumb.name, () => { + @Component({ + selector: 'test-scrollbar-thumb', + imports: [KbqScrollbarViewport, KbqScrollbarThumb], + template: ` +
+
+
+
+
+ ` + }) + class TestScrollbarThumb { + orientation: 'vertical' | 'horizontal' = 'vertical'; + readonly viewport = viewChild.required>('viewport'); + readonly bar = viewChild.required>('bar'); + readonly thumb = viewChild.required>('thumb'); + } + + it('applies top/height to a vertical thumb, not insetInlineStart/width', () => { + const fixture = createComponent(TestScrollbarThumb); + const { viewport, thumb } = fixture.componentInstance; + + setMetrics(viewport().nativeElement, { scrollTop: 50, scrollHeight: 200, clientHeight: 100 }); + viewport().nativeElement.dispatchEvent(new Event('scroll')); + + expect(thumb().nativeElement.style.top).not.toBe(''); + expect(thumb().nativeElement.style.height).not.toBe(''); + expect(thumb().nativeElement.style.insetInlineStart).toBe(''); + }); + + it('applies insetInlineStart/width to a horizontal thumb, not top/height (orientation forwarding)', () => { + const fixture = createComponent(TestScrollbarThumb); + + fixture.componentInstance.orientation = 'horizontal'; + fixture.detectChanges(); + + const { viewport, thumb } = fixture.componentInstance; + + setMetrics(viewport().nativeElement, { scrollLeft: 50, scrollWidth: 200, clientWidth: 100 }); + viewport().nativeElement.dispatchEvent(new Event('scroll')); + + expect(thumb().nativeElement.style.insetInlineStart).not.toBe(''); + expect(thumb().nativeElement.style.width).not.toBe(''); + expect(thumb().nativeElement.style.top).toBe(''); + }); + + it('drags the vertical thumb to update the viewport scrollTop, not scrollLeft', fakeAsync(() => { + const fixture = createComponent(TestScrollbarThumb); + const { viewport, bar, thumb } = fixture.componentInstance; + + setMetrics(viewport().nativeElement, { scrollHeight: 300, scrollWidth: 300 }); + setMetrics(thumb().nativeElement, { offsetHeight: 0, offsetWidth: 0 }); + setRect(thumb().nativeElement, { top: 0, left: 0, height: 1, width: 1 }); + setRect(bar().nativeElement, { top: 0, left: 0, height: 100, width: 100, right: 100, bottom: 100 }); + + dispatchMouseEvent(thumb().nativeElement, 'mousedown', 0, 0); + tick(); + dispatchMouseEvent(document, 'mousemove', 50, 50); + tick(); + dispatchMouseEvent(document, 'mouseup'); + tick(); + + expect(viewport().nativeElement.scrollTop).toBe(100); + expect(viewport().nativeElement.scrollLeft).toBe(0); + + discardPeriodicTasks(); + })); + + it('jumps to the click position when clicking the track, not the thumb', fakeAsync(() => { + const fixture = createComponent(TestScrollbarThumb); + const { viewport, bar, thumb } = fixture.componentInstance; + + setMetrics(viewport().nativeElement, { scrollHeight: 300, scrollWidth: 300 }); + setMetrics(thumb().nativeElement, { offsetHeight: 0, offsetWidth: 0 }); + setRect(bar().nativeElement, { top: 0, left: 0, height: 100, width: 100, right: 100, bottom: 100 }); + + dispatchMouseEvent(bar().nativeElement, 'mousedown', 50, 50); + tick(); + + expect(viewport().nativeElement.scrollTop).toBe(100); + + discardPeriodicTasks(); + })); + + it('drags the horizontal thumb to update the viewport scrollLeft, not scrollTop', fakeAsync(() => { + const fixture = createComponent(TestScrollbarThumb); + + fixture.componentInstance.orientation = 'horizontal'; + fixture.detectChanges(); + + const { viewport, bar, thumb } = fixture.componentInstance; + + setMetrics(viewport().nativeElement, { scrollHeight: 300, scrollWidth: 300 }); + setMetrics(thumb().nativeElement, { offsetHeight: 0, offsetWidth: 0 }); + setRect(thumb().nativeElement, { top: 0, left: 0, height: 1, width: 1 }); + setRect(bar().nativeElement, { top: 0, left: 0, height: 100, width: 100, right: 100, bottom: 100 }); + + dispatchMouseEvent(thumb().nativeElement, 'mousedown', 0, 0); + tick(); + dispatchMouseEvent(document, 'mousemove', 50, 50); + tick(); + dispatchMouseEvent(document, 'mouseup'); + tick(); + + expect(viewport().nativeElement.scrollLeft).toBe(100); + expect(viewport().nativeElement.scrollTop).toBe(0); + + discardPeriodicTasks(); + })); + + it('negates the horizontal offset in RTL when clicking the track', fakeAsync(() => { + @Component({ + selector: 'test-scrollbar-thumb-rtl', + imports: [KbqScrollbarViewport, KbqScrollbarThumb], + template: ` +
+
+
+
+
+
+
+ ` + }) + class TestScrollbarThumbRtl { + readonly viewport = viewChild.required>('viewport'); + readonly bar = viewChild.required>('bar'); + readonly thumb = viewChild.required>('thumb'); + } + + const fixture = createComponent(TestScrollbarThumbRtl); + const { viewport, bar, thumb } = fixture.componentInstance; + + // jsdom's `.matches()` doesn't support `:scope` combined with a descendant combinator + // (confirmed: `el.matches('[dir="rtl"] :scope')` returns false even with a real dir="rtl" + // ancestor, while `el.closest('[dir="rtl"]')` correctly finds it) — so the `dir="rtl"` + // wrapper above only documents intent; the RTL branch itself has to be forced here. + jest.spyOn(thumb().nativeElement, 'matches').mockReturnValue(true); + + setMetrics(viewport().nativeElement, { scrollHeight: 300, scrollWidth: 300 }); + setMetrics(thumb().nativeElement, { offsetHeight: 0, offsetWidth: 0 }); + setRect(bar().nativeElement, { top: 0, left: 0, height: 100, width: 100, right: 100, bottom: 100 }); + + dispatchMouseEvent(bar().nativeElement, 'mousedown', 50, 50); + tick(); + + // Mirrors the LTR "jumps to the click position" test's +100, negated: RTL measures the + // click offset from the track's right edge instead of its left. + expect(viewport().nativeElement.scrollLeft).toBe(-100); + + discardPeriodicTasks(); + })); + + it('reserves top-offset room for the CSS-enforced min thumb size on very long content', () => { + const fixture = createComponent(TestScrollbarThumb); + const { viewport, thumb } = fixture.componentInstance; + + // Content is long enough that the natural view fraction (1%) is far below what the + // CSS-enforced min thumb box size (32px min-size + 3px gap on each side = 38px) would + // need — the compensation formula should reserve 38% of top-offset room so the + // min-size thumb still reaches the track's bottom edge instead of overhanging it. + setMetrics(viewport().nativeElement, { scrollTop: 9900, scrollHeight: 10000, clientHeight: 100 }); + viewport().nativeElement.dispatchEvent(new Event('scroll')); + + expect(parseFloat(thumb().nativeElement.style.top)).toBeCloseTo(62, 5); + }); + + describe('ARIA', () => { + it('marks the thumb with role="scrollbar"', () => { + const fixture = createComponent(TestScrollbarThumb); + + expect(fixture.componentInstance.thumb().nativeElement.getAttribute('role')).toBe('scrollbar'); + }); + + it.each<['vertical' | 'horizontal']>([['vertical'], ['horizontal']])( + 'sets aria-orientation to the current orientation: %s', + (orientation) => { + const fixture = createComponent(TestScrollbarThumb); + + fixture.componentInstance.orientation = orientation; + fixture.detectChanges(); + + expect(fixture.componentInstance.thumb().nativeElement.getAttribute('aria-orientation')).toBe( + orientation + ); + } + ); + + it('points aria-controls at the viewport element', () => { + const fixture = createComponent(TestScrollbarThumb); + const { viewport, thumb } = fixture.componentInstance; + + expect(viewport().nativeElement.id).not.toBe(''); + expect(thumb().nativeElement.getAttribute('aria-controls')).toBe(viewport().nativeElement.id); + }); + + it('sets a fixed 0/100 aria-valuemin/aria-valuemax percentage range', () => { + const fixture = createComponent(TestScrollbarThumb); + const { thumb } = fixture.componentInstance; + + expect(thumb().nativeElement.getAttribute('aria-valuemin')).toBe('0'); + expect(thumb().nativeElement.getAttribute('aria-valuemax')).toBe('100'); + }); + + it('sets aria-valuenow synchronously at creation, before any scroll or animation frame', () => { + const fixture = createComponent(TestScrollbarThumb); + + expect(fixture.componentInstance.thumb().nativeElement.getAttribute('aria-valuenow')).not.toBeNull(); + }); + + it('reflects the scrolled percentage in aria-valuenow', () => { + const fixture = createComponent(TestScrollbarThumb); + const { viewport, thumb } = fixture.componentInstance; + + setMetrics(viewport().nativeElement, { scrollTop: 0, scrollHeight: 300, clientHeight: 100 }); + viewport().nativeElement.dispatchEvent(new Event('scroll')); + expect(thumb().nativeElement.getAttribute('aria-valuenow')).toBe('0'); + + setMetrics(viewport().nativeElement, { scrollTop: 100, scrollHeight: 300, clientHeight: 100 }); + viewport().nativeElement.dispatchEvent(new Event('scroll')); + expect(thumb().nativeElement.getAttribute('aria-valuenow')).toBe('50'); + + setMetrics(viewport().nativeElement, { scrollTop: 200, scrollHeight: 300, clientHeight: 100 }); + viewport().nativeElement.dispatchEvent(new Event('scroll')); + expect(thumb().nativeElement.getAttribute('aria-valuenow')).toBe('100'); + }); + + it('defaults aria-valuenow to 0 rather than NaN when there is nothing to scroll', () => { + const fixture = createComponent(TestScrollbarThumb); + const { viewport, thumb } = fixture.componentInstance; + + setMetrics(viewport().nativeElement, { scrollTop: 0, scrollHeight: 100, clientHeight: 100 }); + viewport().nativeElement.dispatchEvent(new Event('scroll')); + + expect(thumb().nativeElement.getAttribute('aria-valuenow')).toBe('0'); + }); + }); + }); + + describe('scroll-to API', () => { + @Component({ + selector: 'test-scrollbar-scroll-to', + imports: [KbqScrollbar], + template: ` + +
target
+
+ ` + }) + class TestScrollbarScrollTo { + readonly scrollbar = viewChild.required(KbqScrollbar); + readonly scrollbarEl = viewChild.required(KbqScrollbar, { read: ElementRef }); + readonly target = viewChild.required>('target'); + } + + const spyOnScrollTo = (fixture: ComponentFixture) => + jest.spyOn(getScrollable(fixture), 'scrollTo').mockImplementation(); + + it('scrollTo delegates to CdkScrollable.scrollTo', () => { + const fixture = createComponent(TestScrollbarScrollTo); + const scrollToSpy = spyOnScrollTo(fixture); + + fixture.componentInstance.scrollbar().scrollTo({ top: 10, left: 20, behavior: 'smooth' }); + + expect(scrollToSpy).toHaveBeenCalledWith({ top: 10, left: 20, behavior: 'smooth' }); + }); + + it('scrollToTop scrolls to top: 0', () => { + const fixture = createComponent(TestScrollbarScrollTo); + const scrollToSpy = spyOnScrollTo(fixture); + + fixture.componentInstance.scrollbar().scrollToTop('smooth'); + + expect(scrollToSpy).toHaveBeenCalledWith({ top: 0, behavior: 'smooth' }); + }); + + it('scrollToBottom scrolls to top: scrollHeight', () => { + const fixture = createComponent(TestScrollbarScrollTo); + + setMetrics(fixture.componentInstance.scrollbarEl().nativeElement, { scrollHeight: 999 }); + const scrollToSpy = spyOnScrollTo(fixture); + + fixture.componentInstance.scrollbar().scrollToBottom(); + + expect(scrollToSpy).toHaveBeenCalledWith({ top: 999, behavior: undefined }); + }); + + it('scrollStart scrolls to start: 0', () => { + const fixture = createComponent(TestScrollbarScrollTo); + const scrollToSpy = spyOnScrollTo(fixture); + + fixture.componentInstance.scrollbar().scrollStart(); + + expect(scrollToSpy).toHaveBeenCalledWith({ start: 0, behavior: undefined }); + }); + + it('scrollEnd scrolls to end: 0', () => { + const fixture = createComponent(TestScrollbarScrollTo); + const scrollToSpy = spyOnScrollTo(fixture); + + fixture.componentInstance.scrollbar().scrollEnd(); + + expect(scrollToSpy).toHaveBeenCalledWith({ end: 0, behavior: undefined }); + }); + + it('scrollToElement accepts an HTMLElement target', () => { + const fixture = createComponent(TestScrollbarScrollTo); + const scrollToSpy = spyOnScrollTo(fixture); + + fixture.componentInstance.scrollbar().scrollToElement(fixture.componentInstance.target().nativeElement); + + expect(scrollToSpy).toHaveBeenCalled(); + }); + + it('scrollToElement accepts a selector string resolved against the scrollbar', () => { + const fixture = createComponent(TestScrollbarScrollTo); + const scrollToSpy = spyOnScrollTo(fixture); + + fixture.componentInstance.scrollbar().scrollToElement('div'); + + expect(scrollToSpy).toHaveBeenCalled(); + }); + + it('scrollToElement no-ops for an unmatched selector', () => { + const fixture = createComponent(TestScrollbarScrollTo); + const scrollToSpy = spyOnScrollTo(fixture); + + fixture.componentInstance.scrollbar().scrollToElement('.does-not-exist'); + + expect(scrollToSpy).not.toHaveBeenCalled(); + }); + + it('scrollToElement applies top/left gap options', () => { + const fixture = createComponent(TestScrollbarScrollTo); + const target = fixture.componentInstance.target().nativeElement; + + Object.defineProperty(target, 'offsetTop', { configurable: true, value: 100 }); + Object.defineProperty(target, 'offsetLeft', { configurable: true, value: 100 }); + Object.defineProperty(target, 'offsetParent', { configurable: true, value: null }); + + const scrollToSpy = spyOnScrollTo(fixture); + + fixture.componentInstance.scrollbar().scrollToElement(target, { top: 16, left: 16 }); + + expect(scrollToSpy).toHaveBeenCalledWith({ top: 84, left: 84, behavior: undefined }); + }); + + it('scrollIntoView centers the target within the viewport', () => { + const fixture = createComponent(TestScrollbarScrollTo); + const scrollbarEl = fixture.componentInstance.scrollbarEl().nativeElement; + const target = fixture.componentInstance.target().nativeElement; + + setMetrics(scrollbarEl, { clientHeight: 100, clientWidth: 100 }); + Object.defineProperty(target, 'offsetTop', { configurable: true, value: 200 }); + Object.defineProperty(target, 'offsetLeft', { configurable: true, value: 200 }); + Object.defineProperty(target, 'offsetParent', { configurable: true, value: null }); + Object.defineProperty(target, 'offsetHeight', { configurable: true, value: 50 }); + Object.defineProperty(target, 'offsetWidth', { configurable: true, value: 50 }); + + const scrollToSpy = spyOnScrollTo(fixture); + + fixture.componentInstance.scrollbar().scrollIntoView(target); + + expect(scrollToSpy).toHaveBeenCalledWith({ top: 175, left: 175 }); + }); + }); + + describe('scrollChanges', () => { + @Component({ + selector: 'test-scrollbar-scroll-changes', + imports: [KbqScrollbar], + template: ` + content + ` + }) + class TestScrollbarScrollChanges { + readonly scrollbar = viewChild.required(KbqScrollbar); + } + + it('emits on the native scroll event', () => { + const fixture = createComponent(TestScrollbarScrollChanges); + const scrollbar = fixture.componentInstance.scrollbar(); + const handler = jest.fn(); + + scrollbar.scrollChanges.subscribe(handler); + scrollbar.getNativeElement().dispatchEvent(new Event('scroll')); + + expect(handler).toHaveBeenCalledTimes(1); + }); + }); + + describe('kbqOverflowShadowContainer integration', () => { + it('a co-located kbqOverflowShadowContainer tracks scroll via the native fallback (no KBQ_OVERFLOW_SHADOW_SOURCE wiring needed — the scrollbar host is the scroll element itself)', () => { + @Component({ + selector: 'test-scrollbar-overflow-shadow-container', + imports: [KbqScrollbar, KbqOverflowShadowContainer], + template: ` + + content + + ` + }) + class TestScrollbarOverflowShadowContainer { + readonly scrollbar = viewChild.required(KbqScrollbar); + readonly container = viewChild.required(KbqOverflowShadowContainer); + } + + const fixture = createComponent(TestScrollbarOverflowShadowContainer); + const { scrollbar, container } = fixture.componentInstance; + + setMetrics(scrollbar().getNativeElement(), { scrollTop: 0, clientHeight: 100, scrollHeight: 300 }); + container().checkOverflow(); + + expect(container().overflow()).toEqual({ top: false, bottom: true }); + + setMetrics(scrollbar().getNativeElement(), { scrollTop: 50, clientHeight: 100, scrollHeight: 300 }); + scrollbar().getNativeElement().dispatchEvent(new Event('scroll')); + + expect(container().overflow()).toEqual({ top: true, bottom: true }); + }); + }); + + describe(KbqScrollbarViewport.name, () => { + @Component({ + selector: 'test-standalone-viewport', + imports: [KbqScrollbarViewport], + template: ` +
+
target
+
+ ` + }) + class TestStandaloneViewport { + mode: KbqScrollbarMode | undefined; + readonly viewport = viewChild.required(KbqScrollbarViewport); + readonly viewportEl = viewChild.required(KbqScrollbarViewport, { read: ElementRef }); + readonly scrollable = viewChild.required(CdkScrollable); + readonly target = viewChild.required>('target'); + } + + const spyOnScrollTo = (fixture: ComponentFixture) => + jest + .spyOn( + fixture.debugElement.query(By.directive(KbqScrollbarViewport)).injector.get(CdkScrollable), + 'scrollTo' + ) + .mockImplementation(); + + it('exposes CdkScrollable on the same host element when used standalone', () => { + const fixture = createComponent(TestStandaloneViewport); + + expect(fixture.componentInstance.scrollable().getElementRef().nativeElement).toBe( + fixture.componentInstance.viewportEl().nativeElement + ); + }); + + describe('id', () => { + it('generates an id when the host element does not already have one', () => { + const fixture = createComponent(TestStandaloneViewport); + + expect(fixture.componentInstance.viewportEl().nativeElement.id).not.toBe(''); + }); + + it('preserves an id the consumer already set instead of overwriting it', () => { + @Component({ + selector: 'test-standalone-viewport-existing-id', + imports: [KbqScrollbarViewport], + template: ` +
+ ` + }) + class TestStandaloneViewportExistingId { + readonly viewportEl = viewChild.required(KbqScrollbarViewport, { read: ElementRef }); + } + + const fixture = createComponent(TestStandaloneViewportExistingId); + + expect(fixture.componentInstance.viewportEl().nativeElement.id).toBe('consumer-id'); + }); + + it('generates different ids for different instances', () => { + @Component({ + selector: 'test-standalone-viewport-pair', + imports: [KbqScrollbarViewport], + template: ` +
+
+ ` + }) + class TestStandaloneViewportPair {} + + const fixture = createComponent(TestStandaloneViewportPair); + const ids = fixture.debugElement + .queryAll(By.directive(KbqScrollbarViewport)) + .map((debugEl) => debugEl.nativeElement.id); + + expect(ids[0]).not.toBe(ids[1]); + }); + }); + + it('defaults mode from KBQ_SCROLLBAR_OPTIONS when used standalone', () => { + // No [mode] binding at all here — even binding to `undefined` counts as "a value was + // provided" and would bypass input()'s default-value fallback. + @Component({ + selector: 'test-standalone-viewport-default-mode', + imports: [KbqScrollbarViewport], + template: ` +
+ ` + }) + class TestStandaloneViewportDefaultMode { + readonly viewport = viewChild.required(KbqScrollbarViewport); + } + + const fixture = createComponent(TestStandaloneViewportDefaultMode, [ + kbqScrollbarOptionsProvider({ mode: 'always' }) + ]); + + expect(fixture.componentInstance.viewport().mode()).toBe('always'); + }); + + it.each<[KbqScrollbarMode, boolean]>([ + ['hover', true], + ['always', true], + ['native', false], + ['hidden', true] + ])('sets kbq-scrollbar-viewport_native-scrollbar-hidden for mode="%s": %s', (mode, expected) => { + const fixture = createComponent(TestStandaloneViewport); + + fixture.componentInstance.mode = mode; + fixture.detectChanges(); + + expect( + fixture.componentInstance + .viewportEl() + .nativeElement.classList.contains('kbq-scrollbar-viewport_native-scrollbar-hidden') + ).toBe(expected); + }); + + it.each<[KbqScrollbarMode, boolean]>([ + ['hover', true], + ['always', true], + ['native', false], + ['hidden', false] + ])('creates the track for the standalone viewport too, for mode="%s": %s', (mode, expected) => { + const fixture = createComponent(TestStandaloneViewport); + + fixture.componentInstance.mode = mode; + fixture.detectChanges(); + + const trackEl = fixture.nativeElement.querySelector('kbq-scrollbar-track'); + + expect(!!trackEl).toBe(expected); + + if (expected) { + expect(fixture.componentInstance.viewportEl().nativeElement.firstChild).toBe(trackEl); + } + }); + + it('scrollTo delegates to CdkScrollable.scrollTo', () => { + const fixture = createComponent(TestStandaloneViewport); + const scrollToSpy = spyOnScrollTo(fixture); + + fixture.componentInstance.viewport().scrollTo({ top: 10, left: 20, behavior: 'smooth' }); + + expect(scrollToSpy).toHaveBeenCalledWith({ top: 10, left: 20, behavior: 'smooth' }); + }); + + it('scrollToBottom scrolls to top: scrollHeight', () => { + const fixture = createComponent(TestStandaloneViewport); + + setMetrics(fixture.componentInstance.viewportEl().nativeElement, { scrollHeight: 999 }); + const scrollToSpy = spyOnScrollTo(fixture); + + fixture.componentInstance.viewport().scrollToBottom(); + + expect(scrollToSpy).toHaveBeenCalledWith({ top: 999, behavior: undefined }); + }); + + it('scrollToElement accepts an HTMLElement target and applies top/left gap options', () => { + const fixture = createComponent(TestStandaloneViewport); + const target = fixture.componentInstance.target().nativeElement; + + Object.defineProperty(target, 'offsetTop', { configurable: true, value: 100 }); + Object.defineProperty(target, 'offsetLeft', { configurable: true, value: 100 }); + Object.defineProperty(target, 'offsetParent', { configurable: true, value: null }); + + const scrollToSpy = spyOnScrollTo(fixture); + + fixture.componentInstance.viewport().scrollToElement(target, { top: 16, left: 16 }); + + expect(scrollToSpy).toHaveBeenCalledWith({ top: 84, left: 84, behavior: undefined }); + }); + + it('scrollIntoView centers the target within the viewport', () => { + const fixture = createComponent(TestStandaloneViewport); + const viewportEl = fixture.componentInstance.viewportEl().nativeElement; + const target = fixture.componentInstance.target().nativeElement; + + setMetrics(viewportEl, { clientHeight: 100, clientWidth: 100 }); + Object.defineProperty(target, 'offsetTop', { configurable: true, value: 200 }); + Object.defineProperty(target, 'offsetLeft', { configurable: true, value: 200 }); + Object.defineProperty(target, 'offsetParent', { configurable: true, value: null }); + Object.defineProperty(target, 'offsetHeight', { configurable: true, value: 50 }); + Object.defineProperty(target, 'offsetWidth', { configurable: true, value: 50 }); + + const scrollToSpy = spyOnScrollTo(fixture); + + fixture.componentInstance.viewport().scrollIntoView(target); + + // top/left = offset + size/2 - viewportSize/2 = 200 + 25 - 50 = 175 + expect(scrollToSpy).toHaveBeenCalledWith({ top: 175, left: 175 }); + }); + }); +}); diff --git a/packages/components/scrollbar/scrollbar.ts b/packages/components/scrollbar/scrollbar.ts new file mode 100644 index 0000000000..c9640ee180 --- /dev/null +++ b/packages/components/scrollbar/scrollbar.ts @@ -0,0 +1,650 @@ +import { _IdGenerator, CdkMonitorFocus } from '@angular/cdk/a11y'; +import { _CdkPrivateStyleLoader } from '@angular/cdk/private'; +import { CdkScrollable, type ExtendedScrollToOptions } from '@angular/cdk/scrolling'; +import { DOCUMENT } from '@angular/common'; +import { + afterNextRender, + ChangeDetectionStrategy, + Component, + Directive, + effect, + ElementRef, + inject, + InjectionToken, + Injector, + input, + NgZone, + ViewContainerRef, + ViewEncapsulation, + type ComponentRef, + type Provider +} from '@angular/core'; +import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop'; +import { KBQ_WINDOW, kbqInjectNativeElement } from '@koobiq/components/core'; +import { + asyncScheduler, + distinctUntilChanged, + filter, + fromEvent, + map, + merge, + Observable, + startWith, + switchMap, + takeUntil, + throttleTime, + type MonoTypeOperatorFunction, + type SchedulerAction, + type SchedulerLike, + type Subscription +} from 'rxjs'; + +/** Emits `requestAnimationFrame` timestamps outside Angular's zone; never emits during SSR, where there's no frame to wait on. */ +function animationFrame(): Observable { + const window = inject(KBQ_WINDOW); + const ngZone = inject(NgZone); + + return new Observable((subscriber) => { + if (typeof window.requestAnimationFrame === 'undefined') { + return undefined; + } + + // `requestAnimationFrame` runs its callback in whatever zone was active when it was scheduled, + // so the recursive re-scheduling below must itself run outside Angular's zone too — otherwise + // this loop (which never stops on its own) keeps `NgZone` perpetually unstable for as long as + // the subscription is alive. + return ngZone.runOutsideAngular(() => { + let frameId = window.requestAnimationFrame(function loop(timestamp) { + subscriber.next(timestamp); + frameId = window.requestAnimationFrame(loop); + }); + + return () => window.cancelAnimationFrame(frameId); + }); + }); +} + +/** Runs the source subscription outside Angular's zone so it doesn't trigger change detection. */ +function zoneFree(): MonoTypeOperatorFunction { + const ngZone = inject(NgZone); + + return (source) => new Observable((subscriber) => ngZone.runOutsideAngular(() => source.subscribe(subscriber))); +} + +/** A scheduler that always schedules its work outside Angular's zone. */ +function zoneFreeScheduler(): SchedulerLike { + const ngZone = inject(NgZone); + + return { + now: () => Date.now(), + schedule(work: (this: SchedulerAction, state?: T) => void, delay?: number, state?: T): Subscription { + let subscription!: Subscription; + + ngZone.runOutsideAngular(() => { + subscription = asyncScheduler.schedule(work, delay, state); + }); + + return subscription; + } + }; +} + +/** Re-enters Angular's zone for every emission so change detection is triggered. */ +function zoneOptimized(): MonoTypeOperatorFunction { + const ngZone = inject(NgZone); + + return (source) => + new Observable((subscriber) => + source.subscribe({ + next: (value) => ngZone.run(() => subscriber.next(value)), + error: (error) => subscriber.error(error), + complete: () => subscriber.complete() + }) + ); +} + +/** Sums `offsetTop`/`offsetLeft` from `element` up to (excluding) `ancestor`. */ +function getElementOffset(ancestor: HTMLElement, element: HTMLElement): { offsetTop: number; offsetLeft: number } { + let offsetTop = 0; + let offsetLeft = 0; + let current: HTMLElement | null = element; + + while (current && current !== ancestor) { + offsetTop += current.offsetTop; + offsetLeft += current.offsetLeft; + current = current.offsetParent as HTMLElement | null; + } + + return { offsetTop, offsetLeft }; +} + +/** + * A DI token pointing to the element whose scroll state the scrollbar tracks and controls. + * By default resolves to {@link KbqScrollbar}'s own host element; place `[kbqScrollbarViewport]` on a + * nested element to delegate to it instead. + */ +export const KBQ_SCROLLBAR_VIEWPORT = new InjectionToken>('KBQ_SCROLLBAR_VIEWPORT', { + factory: () => new ElementRef(inject(DOCUMENT).documentElement) +}); + +export type KbqScrollbarMode = 'always' | 'hidden' | 'hover' | 'native'; + +/** Configuration for {@link KbqScrollbar}. */ +export type KbqScrollbarOptions = { + mode: KbqScrollbarMode; +}; + +const KBQ_SCROLLBAR_DEFAULT_OPTIONS: KbqScrollbarOptions = { + mode: 'hover' +}; + +/** Injection token holding the current {@link KbqScrollbarOptions}. */ +export const KBQ_SCROLLBAR_OPTIONS = new InjectionToken('KBQ_SCROLLBAR_OPTIONS', { + factory: () => KBQ_SCROLLBAR_DEFAULT_OPTIONS +}); + +/** Overrides the default scrollbar options within the given injector scope. */ +export function kbqScrollbarOptionsProvider(options: Partial): Provider { + return { + provide: KBQ_SCROLLBAR_OPTIONS, + useValue: { ...KBQ_SCROLLBAR_DEFAULT_OPTIONS, ...options } + }; +} + +/** The axis a scrollbar thumb/track moves along. */ +type Orientation = 'horizontal' | 'vertical'; + +/** Based on --kbq-scrollbar-thumb-min-size */ +const MIN_THUMB_SIZE = 32; + +/** Based on --kbq-scrollbar-thumb-gap */ +const THUMB_GAP = 3; + +// The CSS-enforced floor on the thumb's own main-axis box size — mirrors `min-block-size`/ +// `min-inline-size` in scrollbar-track.scss (`--kbq-scrollbar-thumb-min-size` plus the transparent +// border on both sides). `getCompensation` below needs this exact box size, not just +// `MIN_THUMB_SIZE`, or the reserved top-offset room falls short of what the CSS actually enforces +// and the thumb overhangs the track's trailing edge at the very end of the scroll range. +const MIN_THUMB_BOX_SIZE = MIN_THUMB_SIZE + THUMB_GAP * 2; + +type Dimension = { + scrollTop: number; + scrollHeight: number; + clientHeight: number; + scrollLeft: number; + scrollWidth: number; + clientWidth: number; +}; + +/** `[vertical, horizontal]` overflow flags. */ +type ScrollbarVisibility = readonly [boolean, boolean]; + +/** Loads the global `.kbq-scrollbar-viewport_native-scrollbar-hidden` utility class once per app (see {@link KbqScrollbarViewport}). */ +@Component({ + selector: 'scrollbar-viewport-style-loader', + template: '', + styleUrl: './scrollbar-viewport.scss', + encapsulation: ViewEncapsulation.None +}) +class ScrollbarViewportStyleLoader {} + +/** Options accepted by {@link KbqScrollbarViewport.scrollTo}/{@link KbqScrollbar.scrollTo} — RTL-normalized, see `CdkScrollable.scrollTo`. */ +export type KbqScrollbarScrollToOptions = ExtendedScrollToOptions; + +/** Options accepted by {@link KbqScrollbarViewport.scrollToElement}/{@link KbqScrollbar.scrollToElement}. */ +export type KbqScrollbarScrollToElementOptions = { + /** Extra gap to leave above the target, in px — e.g. so it doesn't end up under a sticky header. */ + top?: number; + /** Extra gap to leave to the left of the target, in px. */ + left?: number; + behavior?: ScrollBehavior; +}; + +/** `[top, left]` scroll offsets in pixels. */ +type ScrollPosition = [number, number]; + +/** Marks its host element as the scroll target for {@link KBQ_SCROLLBAR_VIEWPORT} consumers, hiding its native scrollbar whenever a custom scrollbar track replaces it. */ +@Directive({ + selector: '[kbqScrollbarViewport]', + providers: [{ provide: KBQ_SCROLLBAR_VIEWPORT, useExisting: ElementRef }], + host: { + class: 'kbq-scrollbar-viewport', + '[class.kbq-scrollbar-viewport_native-scrollbar-hidden]': 'mode() !== "native"', + // Monitors the whole subtree (not just this element) so `cdk-keyboard-focused` lands on the + // viewport itself whenever ANY descendant is keyboard-focused — projected content doesn't have + // to opt in individually with its own `cdkMonitorElementFocus`. Drives the hover-mode track's + // visibility in scrollbar-viewport.scss. + '[attr.cdkMonitorSubtreeFocus]': 'true', + // A stable id for the thumb's `aria-controls` to point at, preserving one a consumer already + // set rather than clobbering it. + '[attr.id]': 'id' + }, + hostDirectives: [CdkScrollable, CdkMonitorFocus] +}) +export class KbqScrollbarViewport { + private readonly styleLoader = inject(_CdkPrivateStyleLoader); + private readonly scrollable = inject(CdkScrollable); + private readonly viewContainerRef = inject(ViewContainerRef); + private readonly injector = inject(Injector); + private readonly idGenerator = inject(_IdGenerator); + + protected readonly id = this.getNativeElement().id || this.idGenerator.getId('kbq-scrollbar-viewport-'); + + readonly mode = input(inject(KBQ_SCROLLBAR_OPTIONS).mode); + + // Owns the {@link KbqScrollbarTrack} instance instead of requiring consumers to declare + // `` by hand, so `{@link KbqScrollbar}` and standalone + // `[kbqScrollbarViewport]` usage share one creation path. + private trackRef: ComponentRef | null = null; + + constructor() { + this.styleLoader.load(ScrollbarViewportStyleLoader); + + effect(() => { + const mode = this.mode(); + const showTrack = mode !== 'native' && mode !== 'hidden'; + + if (!showTrack) { + this.trackRef?.destroy(); + this.trackRef = null; + + return; + } + + if (!this.trackRef) { + this.trackRef = this.createTrack(); + } + + this.trackRef.setInput('mode', mode); + }); + } + + getNativeElement(): HTMLElement { + return this.scrollable.getElementRef().nativeElement; + } + + /** Emits on every native `scroll` event of the viewport. Emits outside Angular's zone — see `CdkScrollable.elementScrolled`. */ + get scrollChanges(): Observable { + return this.scrollable.elementScrolled(); + } + + /** Scrolls to the specified offsets. RTL-normalized — see `CdkScrollable.scrollTo`. */ + scrollTo(options: KbqScrollbarScrollToOptions): void { + this.scrollable.scrollTo(options); + } + + /** Scrolls to the start of the vertical axis. */ + scrollToTop(behavior?: ScrollBehavior): void { + this.scrollTo({ top: 0, behavior }); + } + + /** Scrolls to the end of the vertical axis. */ + scrollToBottom(behavior?: ScrollBehavior): void { + this.scrollTo({ top: this.getNativeElement().scrollHeight, behavior }); + } + + /** Scrolls to the logical start of the horizontal axis — the right edge in RTL, left in LTR. */ + scrollStart(behavior?: ScrollBehavior): void { + this.scrollTo({ start: 0, behavior }); + } + + /** Scrolls to the logical end of the horizontal axis — the left edge in RTL, right in LTR. */ + scrollEnd(behavior?: ScrollBehavior): void { + this.scrollTo({ end: 0, behavior }); + } + + /** Scrolls `target` (an element, or a selector resolved against this viewport) into view. */ + scrollToElement(target: HTMLElement | string, options?: KbqScrollbarScrollToElementOptions): void { + const _target = + typeof target === 'string' ? this.getNativeElement().querySelector(target) : target; + + if (!_target) return; + + const { offsetTop, offsetLeft } = getElementOffset(this.getNativeElement(), _target); + + this.scrollTo({ + top: offsetTop - (options?.top ?? 0), + left: offsetLeft - (options?.left ?? 0), + behavior: options?.behavior + }); + } + + /** Scrolls `target` to the center of the viewport. */ + scrollIntoView(target: HTMLElement, behavior?: ScrollBehavior): void { + const { offsetHeight, offsetWidth } = target; + const { offsetTop, offsetLeft } = getElementOffset(this.getNativeElement(), target); + + this.scrollTo({ + top: offsetTop + offsetHeight / 2 - this.getNativeElement().clientHeight / 2, + left: offsetLeft + offsetWidth / 2 - this.getNativeElement().clientWidth / 2, + behavior + }); + } + + private createTrack(): ComponentRef { + const track = this.viewContainerRef.createComponent(KbqScrollbarTrack, { injector: this.injector }); + + // The track needs to be a direct child of the scrollable element itself (for the sticky + // positioning in scrollbar-track.scss to work) regardless of where `createComponent` happens to + // insert its view, so move it there explicitly. Captures `track` itself, not `this.trackRef` — + // by the time this fires the viewport may already have destroyed/replaced it (e.g. mode flipping + // through native/hidden and back before the next render), and relocating a stale, already-detached + // node is harmless, but dereferencing a by-then-cleared `this.trackRef` would throw. + afterNextRender( + () => { + this.getNativeElement().insertBefore(track.location.nativeElement, this.getNativeElement().firstChild); + }, + { injector: this.injector } + ); + + return track; + } +} + +/** Draggable thumb element: turns drags/track clicks into scroll positions of {@link KBQ_SCROLLBAR_VIEWPORT}, and mirrors its scroll position/size back onto its own CSS position. */ +@Directive({ + selector: '[kbqScrollbarThumb]', + host: { + role: 'scrollbar', + '[attr.aria-orientation]': 'orientation()', + '[attr.aria-controls]': 'viewport.nativeElement.id', + '[attr.aria-valuemin]': '0', + '[attr.aria-valuemax]': '100' + }, + exportAs: 'kbqScrollbarThumb' +}) +export class KbqScrollbarThumb { + /** @docs-private */ + protected readonly viewport = inject(KBQ_SCROLLBAR_VIEWPORT); + private readonly nativeElement = kbqInjectNativeElement(); + private readonly style = this.nativeElement.style; + + readonly orientation = input('vertical'); + + constructor() { + merge( + fromEvent(this.nativeElement.parentElement!, 'mousedown').pipe( + filter(({ target }) => target !== this.nativeElement), + map((event) => this.getScrolled(event, 0.5, 0.5)) + ), + fromEvent(this.nativeElement, 'mousedown').pipe( + zoneFree(), + switchMap((event) => { + const { ownerDocument } = this.nativeElement; + const { top, left, height, width } = this.nativeElement.getBoundingClientRect(); + const vertical = (event.clientY - top) / height; + const horizontal = (event.clientX - left) / width; + + return fromEvent(ownerDocument, 'mousemove').pipe( + map((event) => this.getScrolled(event, vertical, horizontal)), + takeUntil(fromEvent(ownerDocument, 'mouseup')) + ); + }) + ) + ) + .pipe(takeUntilDestroyed()) + .subscribe(([top, left]) => { + this.viewport.nativeElement.style.scrollBehavior = 'auto'; + + if (this.orientation() === 'horizontal') { + this.viewport.nativeElement.scrollLeft = left; + } else { + this.viewport.nativeElement.scrollTop = top; + } + + this.viewport.nativeElement.style.scrollBehavior = ''; + }); + + merge( + animationFrame().pipe(throttleTime(100, zoneFreeScheduler())), + fromEvent(this.viewport.nativeElement, 'scroll').pipe(zoneFree()) + ) + .pipe( + zoneFree(), + map(() => this.getDimension()), + takeUntilDestroyed() + ) + .subscribe((dimension) => { + this.applyPosition(this.getPosition(dimension)); + this.applyValueNow(this.getValueNow(dimension)); + }); + + // Not applied directly here: `orientation()` still reads its default value at this point in + // the constructor — Angular hasn't applied the template-bound input yet — so reading it now + // would compute a wrong-axis position for a horizontal thumb. `afterNextRender` runs once the + // input is actually set, while still landing before the first throttled animation-frame/scroll + // update above — `role="scrollbar"` requires `aria-valuenow` to be present from the start, or + // axe (and any screen reader) could observe it missing. + afterNextRender(() => { + const dimension = this.getDimension(); + + this.applyPosition(this.getPosition(dimension)); + this.applyValueNow(this.getValueNow(dimension)); + }); + } + + private getScrolled({ clientY, clientX }: MouseEvent, offsetY: number, offsetX: number): ScrollPosition { + const { offsetHeight, offsetWidth } = this.nativeElement; + const { top, left, right, width, height } = this.nativeElement.parentElement!.getBoundingClientRect(); + const rtl = this.nativeElement.matches('[dir="rtl"] :scope'); + const inline = rtl ? right : left; + const multiplier = rtl ? -1 : 1; + const maxTop = this.viewport.nativeElement.scrollHeight - height; + const maxLeft = this.viewport.nativeElement.scrollWidth - width; + const scrolledTop = (clientY - top - offsetHeight * offsetY) / (height - offsetHeight); + const scrolledLeft = (clientX - inline - offsetWidth * offsetX * multiplier) / (width - offsetWidth); + + return [maxTop * scrolledTop, maxLeft * scrolledLeft]; + } + + private applyPosition(style: Partial): void { + Object.assign(this.style, style); + } + + private applyValueNow(valueNow: number): void { + this.nativeElement.setAttribute('aria-valuenow', `${valueNow}`); + } + + private getDimension(): Dimension { + const { scrollTop, scrollHeight, clientHeight, scrollLeft, scrollWidth, clientWidth } = + this.viewport.nativeElement; + + return { scrollTop, scrollHeight, clientHeight, scrollLeft, scrollWidth, clientWidth }; + } + + private getPosition(dimension: Dimension): Partial { + const thumb = `${this.getThumbFraction(dimension) * 100}%`; + const view = `${this.getViewFraction(dimension) * 100}%`; + + return this.orientation() === 'vertical' + ? { top: thumb, height: view } + : { insetInlineStart: thumb, width: view }; + } + + private getValueNow(dimension: Dimension): number { + const scrolledFraction = this.getScrolledFraction(dimension); + + // `getScrolledFraction` divides by zero (NaN) when there's nothing to scroll — 0% in that case. + return Number.isNaN(scrolledFraction) ? 0 : Math.round(Math.abs(scrolledFraction) * 100); + } + + private getThumbFraction(dimension: Dimension): number { + const compensation = this.getCompensation(dimension) || this.getViewFraction(dimension); + + return Math.abs(this.getScrolledFraction(dimension) * (1 - compensation)); + } + + private getViewFraction(dimension: Dimension): number { + return this.orientation() === 'vertical' + ? Math.ceil((dimension.clientHeight / dimension.scrollHeight) * 100) / 100 + : Math.ceil((dimension.clientWidth / dimension.scrollWidth) * 100) / 100; + } + + private getScrolledFraction({ + scrollTop, + scrollHeight, + clientHeight, + scrollLeft, + scrollWidth, + clientWidth + }: Dimension): number { + return this.orientation() === 'vertical' + ? scrollTop / (scrollHeight - clientHeight) + : scrollLeft / (scrollWidth - clientWidth); + } + + private getCompensation({ clientHeight, clientWidth, scrollWidth, scrollHeight }: Dimension): number { + if ( + ((clientHeight * clientHeight) / scrollHeight > MIN_THUMB_BOX_SIZE && this.orientation() === 'vertical') || + ((clientWidth * clientWidth) / scrollWidth > MIN_THUMB_BOX_SIZE && this.orientation() === 'horizontal') + ) { + return 0; + } + + return this.orientation() === 'vertical' ? MIN_THUMB_BOX_SIZE / clientHeight : MIN_THUMB_BOX_SIZE / clientWidth; + } +} + +/** + * Renders the visual scroll bars/thumbs for {@link KBQ_SCROLLBAR_VIEWPORT}. + * + * Created and positioned exclusively by `KbqScrollbarViewport` — not exported, never place this + * directly in a template. It only ever exists for `mode="hover"`/`"always"` (`KbqScrollbarViewport` + * destroys it instead for `"native"`/`"hidden"`), so it carries no native/hidden handling itself. + */ +@Component({ + selector: 'kbq-scrollbar-track', + imports: [KbqScrollbarThumb], + template: ` + @if (visibility()[0]) { +
+
+
+ } + @if (visibility()[1]) { +
+
+
+ } + `, + styleUrl: './scrollbar-track.scss', + changeDetection: ChangeDetectionStrategy.OnPush, + host: { + class: 'kbq-scrollbar-track', + '[class.kbq-scrollbar-track_hover]': "mode() === 'hover'", + '[style.block-size.px]': 'hostBlockSize() - 1', + '[style.margin-block-end.px]': '-(hostBlockSize() - 1)' + } +}) +class KbqScrollbarTrack { + private readonly viewport = inject(KBQ_SCROLLBAR_VIEWPORT); + protected readonly visibility = toSignal( + animationFrame().pipe( + throttleTime(300, zoneFreeScheduler()), + map(() => this.scrollbars), + startWith([false, false] as const), + distinctUntilChanged((a, b) => a[0] === b[0] && a[1] === b[1]), + zoneOptimized() + ), + { requireSync: true } + ); + /** The scroll container's own pixel height — percentage-based `margin-block-end` can't cancel a sticky element's height contribution (percentages in the block direction resolve against width, not height, per the CSS spec), so we track and apply the cancellation in exact pixels instead. */ + protected readonly hostBlockSize = toSignal( + animationFrame().pipe( + throttleTime(300, zoneFreeScheduler()), + map(() => this.viewport.nativeElement.clientHeight), + startWith(0), + distinctUntilChanged(), + zoneOptimized() + ), + { requireSync: true } + ); + + readonly mode = input.required(); + + private get scrollbars(): ScrollbarVisibility { + const { clientHeight, scrollHeight, clientWidth, scrollWidth } = this.viewport.nativeElement; + + return [ + Math.ceil((clientHeight / scrollHeight) * 100) < 100, + Math.ceil((clientWidth / scrollWidth) * 100) < 100 + ]; + } +} + +/** Custom scrollbar wrapper: projects content and overlays a scrollbar track over it (created by its {@link KbqScrollbarViewport} host directive). */ +@Component({ + selector: 'kbq-scrollbar', + template: ` +
+ +
+ `, + styleUrl: './scrollbar.scss', + changeDetection: ChangeDetectionStrategy.OnPush, + hostDirectives: [{ directive: KbqScrollbarViewport, inputs: ['mode'] }], + exportAs: 'kbqScrollbar' +}) +export class KbqScrollbar { + private readonly options = inject(KBQ_SCROLLBAR_OPTIONS); + private readonly viewport = inject(KbqScrollbarViewport); + + readonly mode = input(this.options.mode); + + /** The scrollbar's native scrollable element. */ + getNativeElement(): HTMLElement { + return this.viewport.getNativeElement(); + } + + /** Scrolls to the specified offsets. RTL-normalized — see `CdkScrollable.scrollTo`. */ + scrollTo(options: KbqScrollbarScrollToOptions): void { + this.viewport.scrollTo(options); + } + + /** Scrolls to the start of the vertical axis. */ + scrollToTop(behavior?: ScrollBehavior): void { + this.viewport.scrollToTop(behavior); + } + + /** Scrolls to the end of the vertical axis. */ + scrollToBottom(behavior?: ScrollBehavior): void { + this.viewport.scrollToBottom(behavior); + } + + /** Scrolls to the logical start of the horizontal axis — the right edge in RTL, left in LTR. */ + scrollStart(behavior?: ScrollBehavior): void { + this.viewport.scrollStart(behavior); + } + + /** Scrolls to the logical end of the horizontal axis — the left edge in RTL, right in LTR. */ + scrollEnd(behavior?: ScrollBehavior): void { + this.viewport.scrollEnd(behavior); + } + + /** Scrolls `target` (an element, or a selector resolved against this scrollbar) into view. */ + scrollToElement(target: HTMLElement | string, options?: KbqScrollbarScrollToElementOptions): void { + this.viewport.scrollToElement(target, options); + } + + /** Scrolls `target` to the center of the viewport. */ + scrollIntoView(target: HTMLElement, behavior?: ScrollBehavior): void { + this.viewport.scrollIntoView(target, behavior); + } + + /** Emits on every native `scroll` event of the viewport. Emits outside Angular's zone — see `CdkScrollable.elementScrolled`. */ + get scrollChanges(): Observable { + return this.viewport.scrollChanges; + } +} diff --git a/packages/docs-examples/components/ag-grid/ag-grid-infinite-selection/ag-grid-infinite-selection-example.ts b/packages/docs-examples/components/ag-grid/ag-grid-infinite-selection/ag-grid-infinite-selection-example.ts index 781964225a..98575a99ef 100644 --- a/packages/docs-examples/components/ag-grid/ag-grid-infinite-selection/ag-grid-infinite-selection-example.ts +++ b/packages/docs-examples/components/ag-grid/ag-grid-infinite-selection/ag-grid-infinite-selection-example.ts @@ -72,7 +72,7 @@ type SelectionDto = { />
DTO sent to the backend: -
{{ selectionDto() | json }}
+
{{ selectionDto() | json }}
`, styles: ` diff --git a/packages/docs-examples/components/list/list-intermediate-state/list-intermediate-state-example.ts b/packages/docs-examples/components/list/list-intermediate-state/list-intermediate-state-example.ts index 052620f03e..24d8f44ee1 100644 --- a/packages/docs-examples/components/list/list-intermediate-state/list-intermediate-state-example.ts +++ b/packages/docs-examples/components/list/list-intermediate-state/list-intermediate-state-example.ts @@ -9,7 +9,7 @@ import { KbqIconModule } from '@koobiq/components/icon'; import { KbqInput, KbqInputModule } from '@koobiq/components/input'; import { KbqListModule, KbqListSelectionChange } from '@koobiq/components/list'; import { KbqPopoverModule, KbqPopoverTrigger } from '@koobiq/components/popover'; -import { KbqScrollbarModule } from '@koobiq/components/scrollbar'; +import { KbqScrollbar } from '@koobiq/components/scrollbar'; import { KbqUsernameModule } from '@koobiq/components/username'; import { merge, Observable, of } from 'rxjs'; import { map } from 'rxjs/operators'; @@ -41,7 +41,7 @@ interface ExampleUser { ReactiveFormsModule, AsyncPipe, KbqEmptyState, - KbqScrollbarModule + KbqScrollbar ], templateUrl: './list-intermediate-state-example.html', styles: ` diff --git a/packages/docs-examples/components/scrollbar/index.ts b/packages/docs-examples/components/scrollbar/index.ts index 45f5dd136d..6f79238fee 100644 --- a/packages/docs-examples/components/scrollbar/index.ts +++ b/packages/docs-examples/components/scrollbar/index.ts @@ -1,20 +1,18 @@ import { NgModule } from '@angular/core'; -import { KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG_PROVIDER } from '@koobiq/components/scrollbar'; import { ScrollbarOverviewExample } from './scrollbar-overview/scrollbar-overview-example'; -import { ScrollbarScrollToTopExample } from './scrollbar-scroll-to-top/scrollbar-scroll-to-top-example'; -import { ScrollbarWithCustomConfigExample } from './scrollbar-with-custom-config/scrollbar-with-custom-config-example'; +import { ScrollbarScrollToExample } from './scrollbar-scroll-to/scrollbar-scroll-to-example'; +import { ScrollbarVirtualScrollExample } from './scrollbar-virtual-scroll/scrollbar-virtual-scroll-example'; -export { ScrollbarOverviewExample, ScrollbarScrollToTopExample, ScrollbarWithCustomConfigExample }; +export { ScrollbarOverviewExample, ScrollbarScrollToExample, ScrollbarVirtualScrollExample }; const EXAMPLES = [ - ScrollbarScrollToTopExample, ScrollbarOverviewExample, - ScrollbarWithCustomConfigExample + ScrollbarVirtualScrollExample, + ScrollbarScrollToExample ]; @NgModule({ imports: EXAMPLES, - providers: [KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG_PROVIDER], exports: EXAMPLES }) export class ScrollbarExamplesModule {} diff --git a/packages/docs-examples/components/scrollbar/scrollbar-overview/scrollbar-overview-example.ts b/packages/docs-examples/components/scrollbar/scrollbar-overview/scrollbar-overview-example.ts index 2bdf3303fd..3c195d271e 100644 --- a/packages/docs-examples/components/scrollbar/scrollbar-overview/scrollbar-overview-example.ts +++ b/packages/docs-examples/components/scrollbar/scrollbar-overview/scrollbar-overview-example.ts @@ -1,28 +1,87 @@ -import { ChangeDetectionStrategy, Component } from '@angular/core'; -import { KbqScrollbarModule, KbqScrollbarOptions } from '@koobiq/components/scrollbar'; +import { ChangeDetectionStrategy, Component, model } from '@angular/core'; +import { FormsModule } from '@angular/forms'; +import { KbqScrollbar, KbqScrollbarMode } from '@koobiq/components/scrollbar'; +import { KbqSelectModule } from '@koobiq/components/select'; /** - * @title Scrollbar with options + * @title Scrollbar overview example */ @Component({ selector: 'scrollbar-overview-example', - imports: [KbqScrollbarModule], + imports: [KbqScrollbar, KbqSelectModule, FormsModule], template: ` - - @for (item of items; track item) { -
{{ item }}
-
- } -
+ + + @for (mode of modes; track mode) { + {{ mode }} + } + + + +
+ +

+ In cryptography, a brute-force attack or exhaustive key search is a cryptanalytic attack that + consists of an attacker submitting many possible keys or passwords with the hope of eventually + guessing correctly. This strategy can theoretically be used to break any form of encryption that is + not information-theoretically secure.[1] However, in a properly designed cryptosystem the chance of + successfully guessing the key is negligible. +

+

+ When cracking passwords, this method is very fast when used to check all short passwords, but for + longer passwords other methods such as the dictionary attack are used because a brute-force search + takes too long. Longer passwords, passphrases and keys have more possible values, making them + exponentially more difficult to crack than shorter ones due to the diversity of characters.[2] +

+

+ Brute-force attacks can be made less effective by implementing key stretching techniques making it + more difficult for an attacker to recognize when the code has been cracked or by making the attacker + do more work to test each guess. One of the measures of the strength of an encryption system is how + long it would theoretically take an attacker to mount a successful brute-force attack against it.[3] +

+

+ Brute-force attacks are an application of brute-force search, the general problem-solving technique + of enumerating all candidates and checking each one. The word 'hammering' is sometimes used to + describe a brute-force attack,[4] with 'anti-hammering' for countermeasures.[5] +

+
+
+ `, + styles: ` + :host { + display: flex; + flex-direction: column; + align-items: center; + gap: var(--kbq-size-l); + overflow: hidden; + padding: var(--kbq-size-l); + } + + .example-form-field { + width: 200px; + } + + .example-scrollbar { + overflow: auto; + resize: both; + height: 200px; + min-height: 200px; + max-height: 400px; + width: 100%; + min-width: 200px; + max-width: 100%; + border-radius: var(--kbq-size-border-radius); + background-color: var(--kbq-background-bg-secondary); + } + + p { + width: 150%; + margin: var(--kbq-size-l); + } `, changeDetection: ChangeDetectionStrategy.OnPush }) export class ScrollbarOverviewExample { - readonly options: KbqScrollbarOptions = { - scrollbars: { - autoHide: 'never' - } - }; - - readonly items = Array.from({ length: 1000 }).map((_, i) => `Item #${i}`); + protected readonly modes: KbqScrollbarMode[] = ['hover', 'always', 'native', 'hidden'] as const; + protected readonly mode = model('hover'); } diff --git a/packages/docs-examples/components/scrollbar/scrollbar-scroll-to/scrollbar-scroll-to-example.ts b/packages/docs-examples/components/scrollbar/scrollbar-scroll-to/scrollbar-scroll-to-example.ts new file mode 100644 index 0000000000..ce42576905 --- /dev/null +++ b/packages/docs-examples/components/scrollbar/scrollbar-scroll-to/scrollbar-scroll-to-example.ts @@ -0,0 +1,126 @@ +import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { KbqButtonModule } from '@koobiq/components/button'; +import { KbqScrollbar } from '@koobiq/components/scrollbar'; + +/** + * @title Scrollbar scrollTo methods + */ +@Component({ + selector: 'scrollbar-scroll-to-example', + imports: [KbqScrollbar, KbqButtonModule], + template: ` +
+ + + + + + +
+ + +

+ In cryptography, a brute-force attack or exhaustive key search is a cryptanalytic attack that consists + of an attacker submitting many possible keys or passwords with the hope of eventually guessing + correctly. This strategy can theoretically be used to break any form of encryption that is not + information-theoretically secure.[1] However, in a properly designed cryptosystem the chance of + successfully guessing the key is negligible. +

+

+ Brute-force attacks can be made less effective by implementing key stretching techniques making it more + difficult for an attacker to recognize when the code has been cracked or by making the attacker do more + work to test each guess. One of the measures of the strength of an encryption system is how long it + would theoretically take an attacker to mount a successful brute-force attack against it.[3] +

+

+ Brute-force attacks can be made less effective by implementing key stretching techniques making it more + difficult for an attacker to recognize when the code has been cracked or by making the attacker do more + work to test each guess. One of the measures of the strength of an encryption system is how long it + would theoretically take an attacker to mount a successful brute-force attack against it.[3] +

+

+ Brute-force attacks can be made less effective by implementing key stretching techniques making it more + difficult for an attacker to recognize when the code has been cracked or by making the attacker do more + work to test each guess. One of the measures of the strength of an encryption system is how long it + would theoretically take an attacker to mount a successful brute-force attack against it.[3] +

+

+ [SCROLL TO ELEMENT] + When cracking passwords, this method is very fast when used to check all short passwords, but for longer + passwords other methods such as the dictionary attack are used because a brute-force search takes too + long. Longer passwords, passphrases and keys have more possible values, making them exponentially more + difficult to crack than shorter ones due to the diversity of characters.[2] +

+

+ Brute-force attacks can be made less effective by implementing key stretching techniques making it more + difficult for an attacker to recognize when + [SCROLL INTO VIEW] + the code has been cracked or by making the attacker do more work to test each guess. One of the measures + of the strength of an encryption system is how long it would theoretically take an attacker to mount a + successful brute-force attack against it.[3] +

+

+ Brute-force attacks can be made less effective by implementing key stretching techniques making it more + difficult for an attacker to recognize when the code has been cracked or by making the attacker do more + work to test each guess. One of the measures of the strength of an encryption system is how long it + would theoretically take an attacker to mount a successful brute-force attack against it.[3] +

+

+ Brute-force attacks can be made less effective by implementing key stretching techniques making it more + difficult for an attacker to recognize when the code has been cracked or by making the attacker do more + work to test each guess. One of the measures of the strength of an encryption system is how long it + would theoretically take an attacker to mount a successful brute-force attack against it.[3] +

+

+ In cryptography, a brute-force attack or exhaustive key search is a cryptanalytic attack that consists + of an attacker submitting many possible keys or passwords with the hope of eventually guessing + correctly. This strategy can theoretically be used to break any form of encryption that is not + information-theoretically secure.[1] However, in a properly designed cryptosystem the chance of + successfully guessing the key is negligible. +

+
+ `, + styles: ` + :host { + display: flex; + flex-direction: column; + align-items: center; + gap: var(--kbq-size-l); + overflow: hidden; + padding: var(--kbq-size-l); + } + + .example-buttons { + display: flex; + flex-wrap: wrap; + gap: var(--kbq-size-s); + } + + .example-scrollbar { + overflow: auto; + resize: both; + height: 200px; + min-height: 200px; + max-height: 400px; + width: 100%; + min-width: 200px; + max-width: 100%; + border-radius: var(--kbq-size-border-radius); + background-color: var(--kbq-background-bg-secondary); + } + + p { + width: 150%; + margin: var(--kbq-size-l); + } + `, + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ScrollbarScrollToExample {} diff --git a/packages/docs-examples/components/scrollbar/scrollbar-virtual-scroll/scrollbar-virtual-scroll-example.ts b/packages/docs-examples/components/scrollbar/scrollbar-virtual-scroll/scrollbar-virtual-scroll-example.ts new file mode 100644 index 0000000000..4da0e796cf --- /dev/null +++ b/packages/docs-examples/components/scrollbar/scrollbar-virtual-scroll/scrollbar-virtual-scroll-example.ts @@ -0,0 +1,52 @@ +import { ScrollingModule } from '@angular/cdk/scrolling'; +import { ChangeDetectionStrategy, Component, signal } from '@angular/core'; +import { KbqButtonModule } from '@koobiq/components/button'; +import { KbqScrollbarViewport } from '@koobiq/components/scrollbar'; + +/** + * @title Scrollbar with virtual scroll + */ +@Component({ + selector: 'scrollbar-virtual-scroll-example', + imports: [KbqScrollbarViewport, ScrollingModule, KbqButtonModule], + template: ` + + + +
{{ item }}
+
+ `, + styles: ` + :host { + display: flex; + flex-direction: column; + align-items: center; + gap: var(--kbq-size-l); + padding: var(--kbq-size-l); + } + + .example-scrollbar { + height: 320px; + width: 320px; + border-radius: var(--kbq-size-border-radius); + background-color: var(--kbq-background-bg-secondary); + } + + .example-item { + padding: 0 var(--kbq-size-s); + line-height: 32px; + height: 32px; + } + `, + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ScrollbarVirtualScrollExample { + protected readonly items = signal(Array.from({ length: 100 }).map((_, i) => `Item #${i}`)); + + protected addItems(): void { + const nextIndex = this.items().length; + const newItems = Array.from({ length: 100 }).map((_, i) => `Item #${nextIndex + i}`); + + this.items.update((items) => [...items, ...newItems]); + } +} diff --git a/packages/docs-examples/example-module.ts b/packages/docs-examples/example-module.ts index deeb641bc0..23717c0704 100644 --- a/packages/docs-examples/example-module.ts +++ b/packages/docs-examples/example-module.ts @@ -4732,7 +4732,7 @@ export const EXAMPLE_COMPONENTS: {[id: string]: LiveExample} = { }, "scrollbar-overview": { "packagePath": "components/scrollbar/scrollbar-overview", - "title": "Scrollbar with options", + "title": "Scrollbar overview example", "componentName": "ScrollbarOverviewExample", "files": [ "scrollbar-overview-example.ts" @@ -4743,30 +4743,30 @@ export const EXAMPLE_COMPONENTS: {[id: string]: LiveExample} = { "primaryFile": "scrollbar-overview-example.ts", "importPath": "components/scrollbar" }, - "scrollbar-scroll-to-top": { - "packagePath": "components/scrollbar/scrollbar-scroll-to-top", - "title": "Scrollbar scroll to top", - "componentName": "ScrollbarScrollToTopExample", + "scrollbar-scroll-to": { + "packagePath": "components/scrollbar/scrollbar-scroll-to", + "title": "Scrollbar scrollTo methods", + "componentName": "ScrollbarScrollToExample", "files": [ - "scrollbar-scroll-to-top-example.ts" + "scrollbar-scroll-to-example.ts" ], "localImportFiles": [], - "selector": "scrollbar-scroll-to-top-example", + "selector": "scrollbar-scroll-to-example", "additionalComponents": [], - "primaryFile": "scrollbar-scroll-to-top-example.ts", + "primaryFile": "scrollbar-scroll-to-example.ts", "importPath": "components/scrollbar" }, - "scrollbar-with-custom-config": { - "packagePath": "components/scrollbar/scrollbar-with-custom-config", - "title": "Scrollbar with custom KBQ_SCROLLBAR_CONFIG", - "componentName": "ScrollbarWithCustomConfigExample", + "scrollbar-virtual-scroll": { + "packagePath": "components/scrollbar/scrollbar-virtual-scroll", + "title": "Scrollbar with virtual scroll", + "componentName": "ScrollbarVirtualScrollExample", "files": [ - "scrollbar-with-custom-config-example.ts" + "scrollbar-virtual-scroll-example.ts" ], "localImportFiles": [], - "selector": "scrollbar-with-custom-config-example", + "selector": "scrollbar-virtual-scroll-example", "additionalComponents": [], - "primaryFile": "scrollbar-with-custom-config-example.ts", + "primaryFile": "scrollbar-virtual-scroll-example.ts", "importPath": "components/scrollbar" }, "search-expandable-in-header": { @@ -8265,9 +8265,9 @@ return import('@koobiq/docs-examples/components/radio'); return import('@koobiq/docs-examples/components/resizer'); case 'scrollbar-overview': return import('@koobiq/docs-examples/components/scrollbar'); - case 'scrollbar-scroll-to-top': + case 'scrollbar-scroll-to': return import('@koobiq/docs-examples/components/scrollbar'); - case 'scrollbar-with-custom-config': + case 'scrollbar-virtual-scroll': return import('@koobiq/docs-examples/components/scrollbar'); case 'search-expandable-in-header': return import('@koobiq/docs-examples/components/search-expandable'); diff --git a/packages/e2e/routes.ts b/packages/e2e/routes.ts index 3d25457877..fb1a7090f6 100644 --- a/packages/e2e/routes.ts +++ b/packages/e2e/routes.ts @@ -1,6 +1,14 @@ import { Routes } from '@angular/router'; import { E2eFormHorizontal } from 'packages/components/core/forms/e2e'; import { E2eTypographyStyles } from 'packages/components/core/styles/typography/e2e'; +import { + E2eScrollbarMode, + E2eScrollbarNested, + E2eScrollbarScrollTo, + E2eScrollbarStateAndStyle, + E2eScrollbarTrack, + E2eScrollbarVirtualScroll +} from 'packages/components/scrollbar/e2e'; import { E2eAccordionStates } from '../components/accordion/e2e'; import { E2eActionsPanelWithOverlayContainer } from '../components/actions-panel/e2e'; import { E2eAlertStateAndStyle } from '../components/alert/e2e'; @@ -74,7 +82,7 @@ import { E2ePopoverPositioning, E2ePopoverStates, E2ePopoverWithTooltip } from ' import { E2eProgressBarStateAndStyle } from '../components/progress-bar/e2e'; import { E2eProgressSpinnerStates } from '../components/progress-spinner/e2e'; import { E2eRadioStateAndStyle } from '../components/radio/e2e'; -import { E2eScrollbarStateAndStyle } from '../components/scrollbar/e2e'; +import { E2eDeprecatedScrollbarStateAndStyle } from '../components/scrollbar/deprecated/e2e'; import { E2eSearchExpandableStates } from '../components/search-expandable/e2e'; import { E2eMultilineSelectStates, @@ -215,6 +223,10 @@ const components = [ E2eSearchExpandableStates, E2eInputStateAndStyle, E2eScrollbarStateAndStyle, + E2eScrollbarMode, + E2eScrollbarScrollTo, + E2eScrollbarVirtualScroll, + E2eScrollbarNested, E2eRadioStateAndStyle, E2eProgressBarStateAndStyle, E2eProgressSpinnerStates, @@ -279,7 +291,9 @@ const components = [ E2eOverflowItemsHorizontal, E2eOverflowItemsVertical, E2eOverflowItemsOrdered, - E2eOverflowItemsDynamic + E2eOverflowItemsDynamic, + E2eDeprecatedScrollbarStateAndStyle, + E2eScrollbarTrack ]; export const e2eRoutes: Routes = components.map((component) => { diff --git a/packages/schematics/src/collection.json b/packages/schematics/src/collection.json index 37ff7cdaab..85eb7959f6 100644 --- a/packages/schematics/src/collection.json +++ b/packages/schematics/src/collection.json @@ -96,6 +96,11 @@ "description": "Migrates KbqButtonToggleGroup consumers to its signal inputs (vertical/multiple reads become calls) and reports the ARIA, tab-order and keyboard changes of the button-toggle review, including icon-only toggles left without an accessible name", "factory": "./migrations/button-toggle-signals-and-aria/index", "schema": "./migrations/button-toggle-signals-and-aria/schema.json" + }, + "scrollbar-deprecated-path": { + "description": "Rewrites @koobiq/components/scrollbar imports to @koobiq/components/scrollbar/deprecated — the overlayscrollbars-based implementation moved there when the dependency-free implementation was promoted to @koobiq/components/scrollbar", + "factory": "./migrations/scrollbar-deprecated-path/index", + "schema": "./migrations/scrollbar-deprecated-path/schema.json" } } } diff --git a/packages/schematics/src/migrations.json b/packages/schematics/src/migrations.json index 29a7405feb..0f723e878d 100644 --- a/packages/schematics/src/migrations.json +++ b/packages/schematics/src/migrations.json @@ -60,6 +60,11 @@ "version": "20.3.0-0", "description": "Migrates consumers to the narrowed button color set. `color` on KbqButton, KbqButtonGroupRoot and KbqSplitButton (and `kbqOkType` on KbqModalComponent / ModalOptions) now accepts theme, theme-fade, contrast and contrast-fade only — every other value matched no rule in kbq-button-theme() and rendered the button as a native one. Removes such a color written as a literal from templates, which is appearance-preserving now that each style falls back to its own default color, and warns about the ones it cannot resolve (enum members, programmatic assignment, members still typed KbqComponentColors / ThemePalette). Also flags the silent part: a transparent button with no explicit color now defaults to contrast instead of contrast-fade, so a `.kbq-button_transparent.kbq-contrast-fade` override stops matching.", "factory": "./migrations/button-supported-colors/index" + }, + "scrollbar-deprecated-path": { + "version": "20.3.0-0", + "description": "Rewrites `@koobiq/components/scrollbar` imports to `@koobiq/components/scrollbar/deprecated`. `@koobiq/components/scrollbar` now resolves to a new, dependency-free scrollbar directive; the previous `overlayscrollbars`-based component/directive (`options`/`events`/`defer`/`scrollbarInstance`, the `kbq-scrollbar` element selector) moved to `@koobiq/components/scrollbar/deprecated` unchanged and will be removed in a future major version.", + "factory": "./migrations/scrollbar-deprecated-path/index" } } } diff --git a/packages/schematics/src/migrations/scrollbar-deprecated-path/index.spec.ts b/packages/schematics/src/migrations/scrollbar-deprecated-path/index.spec.ts new file mode 100644 index 0000000000..d292937040 --- /dev/null +++ b/packages/schematics/src/migrations/scrollbar-deprecated-path/index.spec.ts @@ -0,0 +1,183 @@ +import { workspaces } from '@angular-devkit/core'; +import { Tree } from '@angular-devkit/schematics'; +import { SchematicTestRunner } from '@angular-devkit/schematics/testing'; +import { getWorkspace } from '@schematics/angular/utility/workspace'; +import * as path from 'path'; +import { createTestApp } from '../../utils/testing'; +import { Schema } from './schema'; + +const collectionPath = path.join(__dirname, '../../collection.json'); +const migrationsPath = path.join(__dirname, '../../migrations.json'); +const SCHEMATIC_NAME = 'scrollbar-deprecated-path'; + +describe(SCHEMATIC_NAME, () => { + let runner: SchematicTestRunner; + let appTree: Tree; + let projects: workspaces.ProjectDefinitionCollection; + + beforeEach(async () => { + runner = new SchematicTestRunner('schematics', collectionPath); + appTree = await createTestApp(runner, { style: 'scss' }); + const workspace = await getWorkspace(appTree); + + projects = workspace.projects as unknown as workspaces.ProjectDefinitionCollection; + }); + + function paths(project: workspaces.ProjectDefinition) { + // The exact file names from @schematics/angular:application vary across versions + // (app.ts vs app.component.ts), so discover them from the tree. + const root = `/${project.root}/src/app`; + + return { ts: appTree.exists(`${root}/app.ts`) ? `${root}/app.ts` : `${root}/app.component.ts` }; + } + + function run(project: string, fix = true) { + return runner.runSchematic(SCHEMATIC_NAME, { project, fix } satisfies Schema, appTree); + } + + function collectLogs(): string[] { + const messages: string[] = []; + + runner.logger.subscribe((entry) => messages.push(entry.message)); + + return messages; + } + + it('rewrites a bare @koobiq/components/scrollbar import to /deprecated', async () => { + const [first] = projects.keys(); + const { ts } = paths(projects.get(first)!); + + appTree.overwrite( + ts, + "import { KbqScrollbarModule } from '@koobiq/components/scrollbar';\n" + + 'const x: any = KbqScrollbarModule;\n' + ); + + const updated = (await run(first)).readText(ts); + + expect(updated).toContain("from '@koobiq/components/scrollbar/deprecated'"); + expect(updated).not.toMatch(/from '@koobiq\/components\/scrollbar';/); + }); + + it('rewrites both single- and double-quoted specifiers', async () => { + const [first] = projects.keys(); + const { ts } = paths(projects.get(first)!); + + appTree.overwrite( + ts, + 'import { KbqScrollbarModule } from "@koobiq/components/scrollbar";\n' + + 'const x: any = KbqScrollbarModule;\n' + ); + + const updated = (await run(first)).readText(ts); + + expect(updated).toContain('from "@koobiq/components/scrollbar/deprecated"'); + }); + + it('does not touch an already-migrated /deprecated import (idempotent)', async () => { + const [first] = projects.keys(); + const { ts } = paths(projects.get(first)!); + const original = + "import { KbqScrollbarModule } from '@koobiq/components/scrollbar/deprecated';\n" + + 'const x: any = KbqScrollbarModule;\n'; + + appTree.overwrite(ts, original); + + expect((await run(first)).readText(ts)).toBe(original); + }); + + it('running the migration twice does not double-append /deprecated', async () => { + const [first] = projects.keys(); + const { ts } = paths(projects.get(first)!); + + appTree.overwrite( + ts, + "import { KbqScrollbarModule } from '@koobiq/components/scrollbar';\n" + + 'const x: any = KbqScrollbarModule;\n' + ); + + const once = (await run(first)).readText(ts); + + appTree.overwrite(ts, once); + + const twice = (await run(first)).readText(ts); + + expect(twice).toBe(once); + expect(twice).not.toContain('/deprecated/deprecated'); + }); + + it('leaves the new @koobiq/components/scrollbar/private path untouched (already internal-only)', async () => { + const [first] = projects.keys(); + const { ts } = paths(projects.get(first)!); + const original = + "import { KbqScrollbar } from '@koobiq/components/scrollbar/private';\nconst x: any = KbqScrollbar;\n"; + + appTree.overwrite(ts, original); + + expect((await run(first)).readText(ts)).toBe(original); + }); + + it('does not touch an unrelated sibling package whose name merely starts with "scrollbar"', async () => { + const [first] = projects.keys(); + const { ts } = paths(projects.get(first)!); + const original = "import { Whatever } from '@koobiq/components/scrollbar-x';\nconst x: any = Whatever;\n"; + + appTree.overwrite(ts, original); + + expect((await run(first)).readText(ts)).toBe(original); + }); + + describe('ng update entry point', () => { + it('applies the fix when invoked without options', async () => { + const [first] = projects.keys(); + const { ts } = paths(projects.get(first)!); + + appTree.overwrite( + ts, + "import { KbqScrollbarModule } from '@koobiq/components/scrollbar';\n" + + 'const x: any = KbqScrollbarModule;\n' + ); + + // `ng update` passes no options, and migrations.json declares no schema, so the + // schema default never reaches the rule — it has to default `fix` itself. + const runnerFromMigrations = new SchematicTestRunner('migrations', migrationsPath); + const result = await runnerFromMigrations.runSchematic(SCHEMATIC_NAME, {}, appTree); + + expect(result.readText(ts)).toContain("from '@koobiq/components/scrollbar/deprecated'"); + }); + }); + + describe('dry run', () => { + it('reports without writing when fix is false', async () => { + const [first] = projects.keys(); + const { ts } = paths(projects.get(first)!); + const original = + "import { KbqScrollbarModule } from '@koobiq/components/scrollbar';\n" + + 'const x: any = KbqScrollbarModule;\n'; + const messages = collectLogs(); + + appTree.overwrite(ts, original); + + const result = await run(first, false); + + expect(result.readText(ts)).toBe(original); + expect(messages.join('\n')).toContain('would update'); + }); + }); + + it('leaves the second project untouched when scoped to the first', async () => { + const [first, second] = projects.keys(); + const { ts: firstTs } = paths(projects.get(first)!); + const { ts: secondTs } = paths(projects.get(second)!); + const original = + "import { KbqScrollbarModule } from '@koobiq/components/scrollbar';\nconst x: any = KbqScrollbarModule;\n"; + + appTree.overwrite(firstTs, original); + appTree.overwrite(secondTs, original); + + const result = await run(first); + + expect(result.readText(firstTs)).toContain('/deprecated'); + expect(result.readText(secondTs)).toBe(original); + }); +}); diff --git a/packages/schematics/src/migrations/scrollbar-deprecated-path/index.ts b/packages/schematics/src/migrations/scrollbar-deprecated-path/index.ts new file mode 100644 index 0000000000..3538cb1058 --- /dev/null +++ b/packages/schematics/src/migrations/scrollbar-deprecated-path/index.ts @@ -0,0 +1,68 @@ +import { Path } from '@angular-devkit/core'; +import { Rule, SchematicContext, Tree } from '@angular-devkit/schematics'; +import { logMessage } from '../../utils/messages'; +import { setupOptions } from '../../utils/package-config'; +import { Schema } from './schema'; + +const TS_EXT = '.ts'; +const LABEL = '[scrollbar-deprecated-path]'; + +/** + * `@koobiq/components/scrollbar` now resolves to the new, dependency-free directive — + * the `overlayscrollbars`-based component/directive it used to export moved to + * `@koobiq/components/scrollbar/deprecated`. This rewrites the import specifier only; + * the API itself (`options`/`events`/`defer`/`scrollbarInstance`, the `kbq-scrollbar` + * element selector) is unchanged at its new path. + * + * Quote-anchored (`(['"])@koobiq/components/scrollbar\1`) so it matches only the exact, + * bare module specifier — never a prefix of an already-migrated `/deprecated` import, nor + * an unrelated sibling package whose name merely starts with "scrollbar". + */ +const FROM = `(['"])@koobiq/components/scrollbar\\1`; +const TO = `$1@koobiq/components/scrollbar/deprecated$1`; + +function migrate(content: string): { content: string; changed: boolean } { + const migrated = content.replace(new RegExp(FROM, 'g'), TO); + + return { content: migrated, changed: migrated !== content }; +} + +export default function scrollbarDeprecatedPath(options: Schema): Rule { + return async (tree: Tree, context: SchematicContext) => { + const { project } = options; + // `ng update` invokes migrations with no options at all, and migrations.json + // declares no schema, so the schema default never reaches us — applying the + // fix is the intended behaviour there. + const fix = options.fix ?? true; + const projectDefinition = await setupOptions(project, tree); + const root = projectDefinition?.root ?? ''; + const rootDir = root ? tree.getDir(root as Path) : tree.root; + let touched = 0; + + rootDir.visit((filePath: Path, entry) => { + if (filePath.includes('node_modules') || filePath.includes('/dist/')) return; + if (!filePath.endsWith(TS_EXT)) return; + + const originalContent = entry?.content.toString(); + + if (!originalContent || !originalContent.includes('@koobiq/components/scrollbar')) return; + + const { content, changed } = migrate(originalContent); + + if (!changed) return; + + touched++; + + if (fix) { + tree.overwrite(filePath, content); + } else { + logMessage(context.logger, [`${LABEL} would update ${filePath} (run with --fix to apply)`]); + } + }); + + logMessage(context.logger, [ + `${LABEL} processed tree under "${root || ''}", ` + + `${fix ? 'updated' : 'would update'} ${touched} file(s).` + ]); + }; +} diff --git a/packages/schematics/src/migrations/scrollbar-deprecated-path/schema.json b/packages/schematics/src/migrations/scrollbar-deprecated-path/schema.json new file mode 100644 index 0000000000..714bafb758 --- /dev/null +++ b/packages/schematics/src/migrations/scrollbar-deprecated-path/schema.json @@ -0,0 +1,20 @@ +{ + "$schema": "http://json-schema.org/schema", + "$id": "koobiq-components-scrollbar-deprecated-path", + "title": "Koobiq components scrollbar deprecated-path rewrite", + "type": "object", + "properties": { + "project": { + "type": "string", + "description": "Name of the project to migrate. If omitted, the migration runs over the whole tree.", + "$default": { + "$source": "projectName" + } + }, + "fix": { + "type": "boolean", + "default": true, + "description": "When true, applies all auto-fix replacements. When false, prints what would change without writing." + } + } +} diff --git a/packages/schematics/src/migrations/scrollbar-deprecated-path/schema.ts b/packages/schematics/src/migrations/scrollbar-deprecated-path/schema.ts new file mode 100644 index 0000000000..fefc5cd6b3 --- /dev/null +++ b/packages/schematics/src/migrations/scrollbar-deprecated-path/schema.ts @@ -0,0 +1,6 @@ +export interface Schema { + /** Name of the project to migrate. */ + project?: string; + /** When true, applies replacements; when false, only logs what would change. Defaults to true. */ + fix?: boolean; +} diff --git a/tools/api-extractor/api-extractor.ts b/tools/api-extractor/api-extractor.ts index deccafaaf5..ada2e85465 100644 --- a/tools/api-extractor/api-extractor.ts +++ b/tools/api-extractor/api-extractor.ts @@ -34,7 +34,13 @@ function runExtractor(folder: string, component: string): ExtractorResult { .replace('components', folder) .replace('button', component); const reportFolder = configObject!.apiReport!.reportFolder!.replace('components', folder); - const reportFileName = configObject!.apiReport!.reportFileName!.replace('', component); + // `reportFileName` must be a plain filename — api-extractor rejects path separators — so a + // nested entry point like "scrollbar/deprecated" flattens to "scrollbar-deprecated.api.md" here, + // while `mainEntryPointFilePath` above keeps the real nested dist path unchanged. + const reportFileName = configObject!.apiReport!.reportFileName!.replace( + '', + component.replace('/', '-') + ); configObject.mainEntryPointFilePath = mainEntryPointFilePath; configObject!.apiReport!.reportFolder = reportFolder; diff --git a/tools/cspell-locales/ru.json b/tools/cspell-locales/ru.json index bb1362f8e4..80680b73be 100644 --- a/tools/cspell-locales/ru.json +++ b/tools/cspell-locales/ru.json @@ -42,6 +42,7 @@ "виджете", "виджетом", "викисклада", + "вьюпорта", "гггг", "гига", "грид", @@ -192,8 +193,10 @@ "скроллбар", "скроллбара", "скроллбаров", + "скроллбары", "скролле", "скроллеру", + "скроллить", "скроллом", "снапшоты", "спиcка", diff --git a/tools/public_api_guard/components/scrollbar-deprecated.api.md b/tools/public_api_guard/components/scrollbar-deprecated.api.md new file mode 100644 index 0000000000..fdbafb91fd --- /dev/null +++ b/tools/public_api_guard/components/scrollbar-deprecated.api.md @@ -0,0 +1,158 @@ +## API Report File for "koobiq" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +import { AfterViewInit } from '@angular/core'; +import { ElementRef } from '@angular/core'; +import { EventEmitter } from '@angular/core'; +import { EventListenerArgs } from 'overlayscrollbars'; +import { EventListeners } from 'overlayscrollbars'; +import * as i0 from '@angular/core'; +import * as i1 from '@angular/cdk/overlay'; +import { InitializationTarget } from 'overlayscrollbars'; +import { InjectionToken } from '@angular/core'; +import { KbqOverflowShadowSource } from '@koobiq/components/core'; +import { OnDestroy } from '@angular/core'; +import { OverlayScrollbars } from 'overlayscrollbars'; +import * as overlayscrollbars from 'overlayscrollbars'; +import { PartialOptions } from 'overlayscrollbars'; +import { Provider } from '@angular/core'; + +// @public (undocumented) +export const KBQ_SCROLLBAR_CONFIG: InjectionToken<{ + paddingAbsolute?: boolean | undefined; + showNativeOverlaidScrollbars?: boolean | undefined; + update?: { + elementEvents?: [elementSelector: string, eventNames: string][] | null | undefined; + debounce?: number | [timeout: number, maxWait: number] | null | undefined; + attributes?: string[] | null | undefined; + ignoreMutation?: ((mutation: MutationRecord) => any) | null | undefined; + } | undefined; + overflow?: { + x?: overlayscrollbars.OverflowBehavior | undefined; + y?: overlayscrollbars.OverflowBehavior | undefined; + } | undefined; + scrollbars?: { + theme?: string | null | undefined; + visibility?: overlayscrollbars.ScrollbarsVisibilityBehavior | undefined; + autoHide?: overlayscrollbars.ScrollbarsAutoHideBehavior | undefined; + autoHideDelay?: number | undefined; + autoHideSuspend?: boolean | undefined; + dragScroll?: boolean | undefined; + clickScroll?: boolean | undefined; + pointers?: string[] | null | undefined; + } | undefined; +}>; + +// @public (undocumented) +export const KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG: KbqScrollbarOptions; + +// @public +export const KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG_PROVIDER: Provider; + +// @public @deprecated (undocumented) +export class KbqScrollbar implements AfterViewInit, OnDestroy, KbqOverflowShadowSource { + readonly contentElement: i0.Signal>; + readonly defer: i0.InputSignal; + // (undocumented) + get element(): HTMLElement; + // (undocumented) + readonly events: i0.InputSignal<{ + initialized?: ((instance: overlayscrollbars.OverlayScrollbars) => void) | ((instance: overlayscrollbars.OverlayScrollbars) => void)[] | null | undefined; + updated?: ((instance: overlayscrollbars.OverlayScrollbars, onUpdatedArgs: overlayscrollbars.OnUpdatedEventListenerArgs) => void) | ((instance: overlayscrollbars.OverlayScrollbars, onUpdatedArgs: overlayscrollbars.OnUpdatedEventListenerArgs) => void)[] | null | undefined; + destroyed?: ((instance: overlayscrollbars.OverlayScrollbars, canceled: boolean) => void) | ((instance: overlayscrollbars.OverlayScrollbars, canceled: boolean) => void)[] | null | undefined; + scroll?: ((instance: overlayscrollbars.OverlayScrollbars, event: Event) => void) | ((instance: overlayscrollbars.OverlayScrollbars, event: Event) => void)[] | null | undefined; + }>; + getScrollElement(): HTMLElement | null; + readonly initializationTarget: i0.InputSignal; + // (undocumented) + mergeEvents(): KbqScrollbarEvents; + // (undocumented) + ngAfterViewInit(): void; + // (undocumented) + ngOnDestroy(): void; + readonly onDestroy: EventEmitter<[instance: overlayscrollbars.OverlayScrollbars, canceled: boolean]>; + // (undocumented) + readonly onInitialize: EventEmitter<[instance: overlayscrollbars.OverlayScrollbars]>; + // (undocumented) + readonly onScroll: EventEmitter<[instance: overlayscrollbars.OverlayScrollbars, event: Event]>; + readonly onUpdate: EventEmitter<[instance: overlayscrollbars.OverlayScrollbars, onUpdatedArgs: overlayscrollbars.OnUpdatedEventListenerArgs]>; + readonly options: i0.InputSignal<{ + paddingAbsolute?: boolean | undefined; + showNativeOverlaidScrollbars?: boolean | undefined; + update?: { + elementEvents?: [elementSelector: string, eventNames: string][] | null | undefined; + debounce?: number | [timeout: number, maxWait: number] | null | undefined; + attributes?: string[] | null | undefined; + ignoreMutation?: ((mutation: MutationRecord) => any) | null | undefined; + } | undefined; + overflow?: { + x?: overlayscrollbars.OverflowBehavior | undefined; + y?: overlayscrollbars.OverflowBehavior | undefined; + } | undefined; + scrollbars?: { + theme?: string | null | undefined; + visibility?: overlayscrollbars.ScrollbarsVisibilityBehavior | undefined; + autoHide?: overlayscrollbars.ScrollbarsAutoHideBehavior | undefined; + autoHideDelay?: number | undefined; + autoHideSuspend?: boolean | undefined; + dragScroll?: boolean | undefined; + clickScroll?: boolean | undefined; + pointers?: string[] | null | undefined; + } | undefined; + }>; + scrollTo(options?: ScrollToOptions): void; + // (undocumented) + static ɵcmp: i0.ɵɵComponentDeclaration; + // (undocumented) + static ɵfac: i0.ɵɵFactoryDeclaration; +} + +// @public @deprecated (undocumented) +export class KbqScrollbarDirective implements OnDestroy { + constructor(); + readonly defer: i0.InputSignal; + set events(value: KbqScrollbarEvents); + // (undocumented) + get events(): KbqScrollbarEvents | undefined; + // (undocumented) + initialize(target: KbqScrollbarTarget): void; + // (undocumented) + ngOnDestroy(): void; + set options(value: KbqScrollbarOptions); + get options(): KbqScrollbarOptions | undefined; + // (undocumented) + scrollbarInstance?: OverlayScrollbars; + // (undocumented) + static ɵdir: i0.ɵɵDirectiveDeclaration; + // (undocumented) + static ɵfac: i0.ɵɵFactoryDeclaration; +} + +// @public (undocumented) +export type KbqScrollbarEventListenerArgs = EventListenerArgs; + +// @public (undocumented) +export type KbqScrollbarEvents = EventListeners; + +// @public @deprecated (undocumented) +export class KbqScrollbarModule { + // (undocumented) + static ɵfac: i0.ɵɵFactoryDeclaration; + // (undocumented) + static ɵinj: i0.ɵɵInjectorDeclaration; + // (undocumented) + static ɵmod: i0.ɵɵNgModuleDeclaration; +} + +// @public (undocumented) +export type KbqScrollbarOptions = PartialOptions; + +// @public (undocumented) +export type KbqScrollbarTarget = InitializationTarget; + +// (No @packageDocumentation comment for this package) + +``` diff --git a/tools/public_api_guard/components/scrollbar.api.md b/tools/public_api_guard/components/scrollbar.api.md index 29910ddfe7..34d70b57e4 100644 --- a/tools/public_api_guard/components/scrollbar.api.md +++ b/tools/public_api_guard/components/scrollbar.api.md @@ -4,155 +4,98 @@ ```ts -import { AfterViewInit } from '@angular/core'; import { ElementRef } from '@angular/core'; -import { EventEmitter } from '@angular/core'; -import { EventListenerArgs } from 'overlayscrollbars'; -import { EventListeners } from 'overlayscrollbars'; +import { ExtendedScrollToOptions } from '@angular/cdk/scrolling'; import * as i0 from '@angular/core'; -import * as i1 from '@angular/cdk/overlay'; -import { InitializationTarget } from 'overlayscrollbars'; +import * as i1 from '@angular/cdk/scrolling'; +import * as i2 from '@angular/cdk/a11y'; import { InjectionToken } from '@angular/core'; -import { KbqOverflowShadowSource } from '@koobiq/components/core'; -import { OnDestroy } from '@angular/core'; -import { OverlayScrollbars } from 'overlayscrollbars'; -import * as overlayscrollbars from 'overlayscrollbars'; -import { PartialOptions } from 'overlayscrollbars'; +import { Observable } from 'rxjs'; import { Provider } from '@angular/core'; -// @public (undocumented) -export const KBQ_SCROLLBAR_CONFIG: InjectionToken<{ - paddingAbsolute?: boolean | undefined; - showNativeOverlaidScrollbars?: boolean | undefined; - update?: { - elementEvents?: [elementSelector: string, eventNames: string][] | null | undefined; - debounce?: number | [timeout: number, maxWait: number] | null | undefined; - attributes?: string[] | null | undefined; - ignoreMutation?: ((mutation: MutationRecord) => any) | null | undefined; - } | undefined; - overflow?: { - x?: overlayscrollbars.OverflowBehavior | undefined; - y?: overlayscrollbars.OverflowBehavior | undefined; - } | undefined; - scrollbars?: { - theme?: string | null | undefined; - visibility?: overlayscrollbars.ScrollbarsVisibilityBehavior | undefined; - autoHide?: overlayscrollbars.ScrollbarsAutoHideBehavior | undefined; - autoHideDelay?: number | undefined; - autoHideSuspend?: boolean | undefined; - dragScroll?: boolean | undefined; - clickScroll?: boolean | undefined; - pointers?: string[] | null | undefined; - } | undefined; -}>; - -// @public (undocumented) -export const KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG: KbqScrollbarOptions; +// @public +export const KBQ_SCROLLBAR_OPTIONS: InjectionToken; // @public -export const KBQ_SCROLLBAR_OPTIONS_DEFAULT_CONFIG_PROVIDER: Provider; +export const KBQ_SCROLLBAR_VIEWPORT: InjectionToken>; // @public -export class KbqScrollbar implements AfterViewInit, OnDestroy, KbqOverflowShadowSource { - readonly contentElement: i0.Signal>; - readonly defer: i0.InputSignal; - // (undocumented) - get element(): HTMLElement; - // (undocumented) - readonly events: i0.InputSignal<{ - initialized?: ((instance: overlayscrollbars.OverlayScrollbars) => void) | ((instance: overlayscrollbars.OverlayScrollbars) => void)[] | null | undefined; - updated?: ((instance: overlayscrollbars.OverlayScrollbars, onUpdatedArgs: overlayscrollbars.OnUpdatedEventListenerArgs) => void) | ((instance: overlayscrollbars.OverlayScrollbars, onUpdatedArgs: overlayscrollbars.OnUpdatedEventListenerArgs) => void)[] | null | undefined; - destroyed?: ((instance: overlayscrollbars.OverlayScrollbars, canceled: boolean) => void) | ((instance: overlayscrollbars.OverlayScrollbars, canceled: boolean) => void)[] | null | undefined; - scroll?: ((instance: overlayscrollbars.OverlayScrollbars, event: Event) => void) | ((instance: overlayscrollbars.OverlayScrollbars, event: Event) => void)[] | null | undefined; - }>; - getScrollElement(): HTMLElement | null; - readonly initializationTarget: i0.InputSignal; - // (undocumented) - mergeEvents(): KbqScrollbarEvents; - // (undocumented) - ngAfterViewInit(): void; - // (undocumented) - ngOnDestroy(): void; - readonly onDestroy: EventEmitter<[instance: overlayscrollbars.OverlayScrollbars, canceled: boolean]>; +export class KbqScrollbar { + getNativeElement(): HTMLElement; // (undocumented) - readonly onInitialize: EventEmitter<[instance: overlayscrollbars.OverlayScrollbars]>; + readonly mode: i0.InputSignal; + get scrollChanges(): Observable; + scrollEnd(behavior?: ScrollBehavior): void; + scrollIntoView(target: HTMLElement, behavior?: ScrollBehavior): void; + scrollStart(behavior?: ScrollBehavior): void; + scrollTo(options: KbqScrollbarScrollToOptions): void; + scrollToBottom(behavior?: ScrollBehavior): void; + scrollToElement(target: HTMLElement | string, options?: KbqScrollbarScrollToElementOptions): void; + scrollToTop(behavior?: ScrollBehavior): void; // (undocumented) - readonly onScroll: EventEmitter<[instance: overlayscrollbars.OverlayScrollbars, event: Event]>; - readonly onUpdate: EventEmitter<[instance: overlayscrollbars.OverlayScrollbars, onUpdatedArgs: overlayscrollbars.OnUpdatedEventListenerArgs]>; - readonly options: i0.InputSignal<{ - paddingAbsolute?: boolean | undefined; - showNativeOverlaidScrollbars?: boolean | undefined; - update?: { - elementEvents?: [elementSelector: string, eventNames: string][] | null | undefined; - debounce?: number | [timeout: number, maxWait: number] | null | undefined; - attributes?: string[] | null | undefined; - ignoreMutation?: ((mutation: MutationRecord) => any) | null | undefined; - } | undefined; - overflow?: { - x?: overlayscrollbars.OverflowBehavior | undefined; - y?: overlayscrollbars.OverflowBehavior | undefined; - } | undefined; - scrollbars?: { - theme?: string | null | undefined; - visibility?: overlayscrollbars.ScrollbarsVisibilityBehavior | undefined; - autoHide?: overlayscrollbars.ScrollbarsAutoHideBehavior | undefined; - autoHideDelay?: number | undefined; - autoHideSuspend?: boolean | undefined; - dragScroll?: boolean | undefined; - clickScroll?: boolean | undefined; - pointers?: string[] | null | undefined; - } | undefined; - }>; - scrollTo(options?: ScrollToOptions): void; - // (undocumented) - static ɵcmp: i0.ɵɵComponentDeclaration; + static ɵcmp: i0.ɵɵComponentDeclaration; // (undocumented) static ɵfac: i0.ɵɵFactoryDeclaration; } +// @public (undocumented) +export type KbqScrollbarMode = 'always' | 'hidden' | 'hover' | 'native'; + +// @public +export type KbqScrollbarOptions = { + mode: KbqScrollbarMode; +}; + +// @public +export function kbqScrollbarOptionsProvider(options: Partial): Provider; + +// @public +export type KbqScrollbarScrollToElementOptions = { + top?: number; + left?: number; + behavior?: ScrollBehavior; +}; + // @public -export class KbqScrollbarDirective implements OnDestroy { +export type KbqScrollbarScrollToOptions = ExtendedScrollToOptions; + +// @public +export class KbqScrollbarThumb { constructor(); - readonly defer: i0.InputSignal; - set events(value: KbqScrollbarEvents); - // (undocumented) - get events(): KbqScrollbarEvents | undefined; - // (undocumented) - initialize(target: KbqScrollbarTarget): void; - // (undocumented) - ngOnDestroy(): void; - set options(value: KbqScrollbarOptions); - get options(): KbqScrollbarOptions | undefined; + // Warning: (ae-forgotten-export) The symbol "Orientation" needs to be exported by the entry point index.d.ts + // // (undocumented) - scrollbarInstance?: OverlayScrollbars; + readonly orientation: i0.InputSignal; + protected readonly viewport: ElementRef; // (undocumented) - static ɵdir: i0.ɵɵDirectiveDeclaration; + static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } -// @public (undocumented) -export type KbqScrollbarEventListenerArgs = EventListenerArgs; - -// @public (undocumented) -export type KbqScrollbarEvents = EventListeners; - -// @public (undocumented) -export class KbqScrollbarModule { +// @public +export class KbqScrollbarViewport { + constructor(); + // (undocumented) + getNativeElement(): HTMLElement; + // (undocumented) + protected readonly id: string; // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; + readonly mode: i0.InputSignal; + get scrollChanges(): Observable; + scrollEnd(behavior?: ScrollBehavior): void; + scrollIntoView(target: HTMLElement, behavior?: ScrollBehavior): void; + scrollStart(behavior?: ScrollBehavior): void; + scrollTo(options: KbqScrollbarScrollToOptions): void; + scrollToBottom(behavior?: ScrollBehavior): void; + scrollToElement(target: HTMLElement | string, options?: KbqScrollbarScrollToElementOptions): void; + scrollToTop(behavior?: ScrollBehavior): void; // (undocumented) - static ɵinj: i0.ɵɵInjectorDeclaration; + static ɵdir: i0.ɵɵDirectiveDeclaration; // (undocumented) - static ɵmod: i0.ɵɵNgModuleDeclaration; + static ɵfac: i0.ɵɵFactoryDeclaration; } -// @public (undocumented) -export type KbqScrollbarOptions = PartialOptions; - -// @public (undocumented) -export type KbqScrollbarTarget = InitializationTarget; - // (No @packageDocumentation comment for this package) ``` diff --git a/tsconfig.json b/tsconfig.json index 7c213e4df4..8435523fec 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -71,6 +71,7 @@ "@koobiq/components/sidepanel": ["packages/components/sidepanel/index.ts"], "@koobiq/components/skeleton": ["packages/components/skeleton/index.ts"], "@koobiq/components/scrollbar": ["packages/components/scrollbar/index.ts"], + "@koobiq/components/scrollbar/deprecated": ["packages/components/scrollbar/deprecated/index.ts"], "@koobiq/components/splitter": ["packages/components/splitter/index.ts"], "@koobiq/components/split-button": ["packages/components/split-button/index.ts"], "@koobiq/components/table": ["packages/components/table/index.ts"], From f04450f6e8c93f3dc0b09cb66989dfbc082b9417 Mon Sep 17 00:00:00 2001 From: Artem Belik Date: Wed, 12 Aug 2026 10:33:36 +0300 Subject: [PATCH 2/6] refactor: review --- packages/components/scrollbar/scrollbar.ts | 20 +++++++++++++++++-- .../components/scrollbar.api.md | 20 +------------------ 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/packages/components/scrollbar/scrollbar.ts b/packages/components/scrollbar/scrollbar.ts index c9640ee180..764c4556ce 100644 --- a/packages/components/scrollbar/scrollbar.ts +++ b/packages/components/scrollbar/scrollbar.ts @@ -127,6 +127,13 @@ export const KBQ_SCROLLBAR_VIEWPORT = new InjectionToken factory: () => new ElementRef(inject(DOCUMENT).documentElement) }); +/** + * How the scrollbar is presented: + * - `hover` — track appears on pointer hover or keyboard focus (default); + * - `always` — track is always visible while the content overflows; + * - `native` — the browser's native scrollbar is used; + * - `hidden` — no scrollbar is shown, but the content stays scrollable. + */ export type KbqScrollbarMode = 'always' | 'hidden' | 'hover' | 'native'; /** Configuration for {@link KbqScrollbar}. */ @@ -228,8 +235,10 @@ export class KbqScrollbarViewport { private readonly injector = inject(Injector); private readonly idGenerator = inject(_IdGenerator); + /** Stable id on the viewport element, used as the `aria-controls` target for the scrollbar thumb. */ protected readonly id = this.getNativeElement().id || this.idGenerator.getId('kbq-scrollbar-viewport-'); + /** Visibility mode for this viewport's scrollbar. Defaults to the app-wide {@link KBQ_SCROLLBAR_OPTIONS}. */ readonly mode = input(inject(KBQ_SCROLLBAR_OPTIONS).mode); // Owns the {@link KbqScrollbarTrack} instance instead of requiring consumers to declare @@ -259,6 +268,7 @@ export class KbqScrollbarViewport { }); } + /** The viewport's native scrollable element — the host this directive is applied to. */ getNativeElement(): HTMLElement { return this.scrollable.getElementRef().nativeElement; } @@ -341,7 +351,10 @@ export class KbqScrollbarViewport { } } -/** Draggable thumb element: turns drags/track clicks into scroll positions of {@link KBQ_SCROLLBAR_VIEWPORT}, and mirrors its scroll position/size back onto its own CSS position. */ +/** + * Draggable thumb element: turns drags/track clicks into scroll positions of + * {@link KBQ_SCROLLBAR_VIEWPORT}, and mirrors its scroll position/size back onto its own CSS position. + */ @Directive({ selector: '[kbqScrollbarThumb]', host: { @@ -353,12 +366,13 @@ export class KbqScrollbarViewport { }, exportAs: 'kbqScrollbarThumb' }) -export class KbqScrollbarThumb { +class KbqScrollbarThumb { /** @docs-private */ protected readonly viewport = inject(KBQ_SCROLLBAR_VIEWPORT); private readonly nativeElement = kbqInjectNativeElement(); private readonly style = this.nativeElement.style; + /** Axis the thumb scrolls along — `'vertical'` (default) or `'horizontal'`. */ readonly orientation = input('vertical'); constructor() { @@ -572,6 +586,7 @@ class KbqScrollbarTrack { { requireSync: true } ); + /** Visibility mode, forwarded from the owning {@link KbqScrollbarViewport}; only `hover`/`always` reach the track. */ readonly mode = input.required(); private get scrollbars(): ScrollbarVisibility { @@ -601,6 +616,7 @@ export class KbqScrollbar { private readonly options = inject(KBQ_SCROLLBAR_OPTIONS); private readonly viewport = inject(KbqScrollbarViewport); + /** Visibility mode for the scrollbar. Defaults to the app-wide {@link KBQ_SCROLLBAR_OPTIONS}. */ readonly mode = input(this.options.mode); /** The scrollbar's native scrollable element. */ diff --git a/tools/public_api_guard/components/scrollbar.api.md b/tools/public_api_guard/components/scrollbar.api.md index 34d70b57e4..6bd3b06e44 100644 --- a/tools/public_api_guard/components/scrollbar.api.md +++ b/tools/public_api_guard/components/scrollbar.api.md @@ -22,7 +22,6 @@ export const KBQ_SCROLLBAR_VIEWPORT: InjectionToken>; // @public export class KbqScrollbar { getNativeElement(): HTMLElement; - // (undocumented) readonly mode: i0.InputSignal; get scrollChanges(): Observable; scrollEnd(behavior?: ScrollBehavior): void; @@ -38,7 +37,7 @@ export class KbqScrollbar { static ɵfac: i0.ɵɵFactoryDeclaration; } -// @public (undocumented) +// @public export type KbqScrollbarMode = 'always' | 'hidden' | 'hover' | 'native'; // @public @@ -59,28 +58,11 @@ export type KbqScrollbarScrollToElementOptions = { // @public export type KbqScrollbarScrollToOptions = ExtendedScrollToOptions; -// @public -export class KbqScrollbarThumb { - constructor(); - // Warning: (ae-forgotten-export) The symbol "Orientation" needs to be exported by the entry point index.d.ts - // - // (undocumented) - readonly orientation: i0.InputSignal; - protected readonly viewport: ElementRef; - // (undocumented) - static ɵdir: i0.ɵɵDirectiveDeclaration; - // (undocumented) - static ɵfac: i0.ɵɵFactoryDeclaration; -} - // @public export class KbqScrollbarViewport { constructor(); - // (undocumented) getNativeElement(): HTMLElement; - // (undocumented) protected readonly id: string; - // (undocumented) readonly mode: i0.InputSignal; get scrollChanges(): Observable; scrollEnd(behavior?: ScrollBehavior): void; From 6b2d2ba5bfe96e4b2f8f2d64eafc145b93d0e545 Mon Sep 17 00:00:00 2001 From: Artem Belik Date: Wed, 12 Aug 2026 14:06:20 +0300 Subject: [PATCH 3/6] refactor: e2e --- .../app-switcher/app-switcher.spec.ts | 28 +++++++++--- .../components/app-switcher/app-switcher.ts | 41 ++++++++---------- .../scrollbar/__screenshots__/01-dark.png | Bin 4125 -> 3746 bytes .../scrollbar/__screenshots__/01-light.png | Bin 3798 -> 3544 bytes .../deprecated/__screenshots__/01-dark.png | Bin 46469 -> 36279 bytes .../deprecated/__screenshots__/01-light.png | Bin 43924 -> 35657 bytes .../components/app-switcher.api.md | 2 - 7 files changed, 42 insertions(+), 29 deletions(-) diff --git a/packages/components/app-switcher/app-switcher.spec.ts b/packages/components/app-switcher/app-switcher.spec.ts index f8fbcc38db..fd8c398310 100644 --- a/packages/components/app-switcher/app-switcher.spec.ts +++ b/packages/components/app-switcher/app-switcher.spec.ts @@ -1812,7 +1812,7 @@ describe('KbqAppSwitcher', () => { afterEach(() => overlayContainer?.ngOnDestroy()); - it('unsubscribes the inner-scroll guard when the host is destroyed while open', fakeAsync(() => { + it('excludes scrolls originating inside the popup from its closing actions', fakeAsync(() => { const fixture = createComponent(AppSwitcherMultiSite); overlayContainer = TestBed.inject(OverlayContainer); @@ -1823,13 +1823,31 @@ describe('KbqAppSwitcher', () => { tick(); fixture.detectChanges(); - const guard = trigger['preventClosingByInnerScrollSubscription']; + // The popup wraps its menu in ``, whose viewport is a registered `CdkScrollable`. + const innerViewport = overlayContainer + .getContainerElement() + .querySelector('.kbq-app-switcher .kbq-scrollbar-viewport') as HTMLElement; - expect(guard.closed).toBe(false); + expect(innerViewport).toBeTruthy(); - fixture.destroy(); + const emissions: unknown[] = []; + const subscription = trigger.closingActions().subscribe((event) => emissions.push(event)); + + // Scrolling the popup's own scrollbar viewport (as keyboard navigation does when it scrolls + // the focused item into view) must not count as a closing action. + innerViewport.dispatchEvent(new Event('scroll')); + tick(50); + + expect(emissions).toHaveLength(0); - expect(guard.closed).toBe(true); + // A window/ancestor scroll — one that could move the popup out of view — still is one. + window.document.dispatchEvent(new Event('scroll')); + tick(50); + + expect(emissions.length).toBeGreaterThan(0); + + subscription.unsubscribe(); + fixture.destroy(); })); it('does not throw when the popup reports hidden before it was ever shown', fakeAsync(() => { diff --git a/packages/components/app-switcher/app-switcher.ts b/packages/components/app-switcher/app-switcher.ts index 4933799fbc..5eb30d4cac 100644 --- a/packages/components/app-switcher/app-switcher.ts +++ b/packages/components/app-switcher/app-switcher.ts @@ -61,8 +61,8 @@ import { KbqIconModule } from '@koobiq/components/icon'; import { KbqInput, KbqInputModule } from '@koobiq/components/input'; import { defaultOffsetYWithArrow } from '@koobiq/components/popover'; import { KbqScrollbar } from '@koobiq/components/scrollbar'; -import { Subscription, merge } from 'rxjs'; -import { auditTime, distinctUntilChanged, startWith } from 'rxjs/operators'; +import { merge } from 'rxjs'; +import { auditTime, distinctUntilChanged, filter, startWith } from 'rxjs/operators'; import { kbqAppSwitcherAnimations } from './app-switcher-animations'; import { KbqAppSwitcherDropdownApp } from './app-switcher-dropdown-app'; import { KbqAppSwitcherDropdownSite } from './app-switcher-dropdown-site'; @@ -801,9 +801,6 @@ export class KbqAppSwitcherTrigger }; } - /** @docs-private */ - protected preventClosingByInnerScrollSubscription: Subscription; - private readonly originalSitesSignal = signal([]); private readonly groupBySignal = signal(defaultGroupBy); @@ -869,23 +866,11 @@ export class KbqAppSwitcherTrigger } }); + // On close, return focus to the trigger. Inner-scroll close suppression lives in + // `closingActions()` (it filters scrolls originating inside the popup), so no per-visibility + // subscription is needed here. this.visibleChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((visible: boolean) => { - if (visible) { - // Scrolling inside the popup reaches the root `ScrollDispatcher` and would otherwise be - // treated as a closing action; flag those events instead of closing. - // `takeUntilDestroyed` covers the case where the host is removed while the popup is open, - // which the `else` branch below never sees. - this.preventClosingByInnerScrollSubscription = this.closingActions() - .pipe(takeUntilDestroyed(this.destroyRef)) - // eslint-disable-next-line rxjs-x/no-nested-subscribe - .subscribe((event) => { - if (event['scrollDispatcher']) { - event['kbqPopoverPreventHide'] = true; - event['type'] = 'click'; - } - }); - } else { - this.preventClosingByInnerScrollSubscription?.unsubscribe(); + if (!visible) { this.focus(); } }); @@ -922,7 +907,19 @@ export class KbqAppSwitcherTrigger return merge( this.overlayRef!.outsidePointerEvents(), this.overlayRef!.backdropClick(), - this.scrollDispatcher.scrolled() + // Only an outer/ancestor scroll that moves the popup out of view should close it. Scrolling + // the popup's own content must not: its `KbqScrollbar` viewport is a `CdkScrollable`, so it + // reaches the root `ScrollDispatcher`, and keyboard navigation scrolls the focused item into + // view through that viewport - without this filter every arrow key would close the panel. + this.scrollDispatcher.scrolled().pipe(filter((scrollable) => !this.isInnerScroll(scrollable))) + ); + } + + /** Whether a `ScrollDispatcher` emission originates from inside this popup's own scrollable content. */ + private isInnerScroll(scrollable: CdkScrollable | void): boolean { + return ( + scrollable instanceof CdkScrollable && + !!scrollable.getElementRef().nativeElement.closest('.kbq-app-switcher, .kbq-app-switcher-sites') ); } diff --git a/packages/components/scrollbar/__screenshots__/01-dark.png b/packages/components/scrollbar/__screenshots__/01-dark.png index b8952f0ad942dc907351c319071b0a89f5da56bb..62034bac0383fde7f21ba49871775a273f43e738 100644 GIT binary patch literal 3746 zcmeH~_fr#E7ROofQKdWqK|n+S2~wqq^dcIN5~NBE0-;C|REkLu0|){_=v6`qpfp1f zq!%HCjzL<05T%z;Lko3%`*vq%c6N9657-}WnS17*J9o}Gb3WflVkg4-eyzpJlR58|PUKa9#*!kJ^Q z=XMy+gw?hgD5sba)AWlyJI;YGw5jNlpHW-GBJ%mBH9&@(Akz5fwsX-U=LEz>G8U|bg%Nf6rE;r z{9o9^H4*aXnewk03$h^2xifI;-p$eEJ@?xXJ0R}wCP+nvpq|zHHo)aiPBL3z^lw5C znu0tR%0CzIeUw;qhV%k1*78l>XvX%Wy!?nzw;O|5@tUwD1=BSeLPU(fCNq~| za39@4lh9H1bE{k!$(T6Fo@c~!ZP3;s>lrsmc_E|kI9n|Pyt=+!ZNI!1(7_rjpW(5B zuTPf=J;1=7DOGvzZRyyt`(u08al`I%GoGC7KT{SuOANWGW#eqaFxX+(V0wPz@wr?C z9j(T#uSzOAa`Wj|_EWeXedr`X_%8J1t1y+BHYj7Ts1`nvBI$3qj<*7#j`tYD>z%f< zlnRgWxU}tl_#^U(sxXR!Lx>lk!R$oykh<`-3uQ-hwew4L#eVdnFef0`o+cB-!E=_V4)*Ll@FD_So@;CHp#I2Q>o(%zy3APda`7plb(vs)UqpRQquc}3r(x@`Pp`tb9IerQo zUAStnuc(x@&Z;&r41pBLkuT{5D8iRjSECf~d#-T0WYdJ%i;98MJG@!+(y8APS1r^{ zWM3Yfc!`ouC?50!)bqF!7GN=n5cFdwZY$*t-!!xU&Py5fBs?lh#lQ+H`=GN;)~0JP zm10(9bHYRF;iR}L?zG>0u&p0tp0&x61>GAQE48WXyG4e;p-p~QH(>iG6ZaLCi$dR} zhq+$0EYP?KdUCvcHqz15qQB-G$ntWSunHXKuH{3L)-lo!TOYd5|a16LDjBJaoA)7&-FAo)q3aT1oPT zy&9q2n_4vuSh~S+){<0UkX^OZ1`FXf%Ho@nVKNG8HdM^`5Z$LfO}-bK-wDIW|M~#v zM{@l#c?L3>r@&{~ha^un;`Yqf)E)#y1ym}F9A`?9S9jWL! zWj@xKkUsHpYEoF{s6%@}xF{#z5i83_%6D7bZ)!vz>U?i41X12o-Ea$Q*-)xi!5rd< z{A^~c!G8Q@Y1X~HvgG7wFQH3M44$kFl$q0`BYo;WtZ!hnjS)2MlT-4-T1Owi_g1s>3RuW<7 z!FWJ}>u7~=QAth~9rm3MESw{?GTc11LJc<93@yT*UF4C@oIAB^kVfxH%l z4Xn*oXMKR^#S9$bb}pzDcRpV8L|vN1JPAo`a*Ik=I2;m?wsGMED!y2ozU^lqhaXwe zLQ8Z*Dc!Rl%;-p>*G2W}8>YGJyem@Gj2$D1a+i`Mf)CS2dbtPROEAY+@<;dNm8f3% zbf|xhzPcM;Jk4yxrs0zmwb=h0P+_WH3CS>T8wh%5Y~^CoqP{~Y($%XGX(Nt0_WE_UWDeMcTxBHOUrM$b zJ<}aU5JCcz>p-4F3I?fhIyu@iWF~jTYcDdqPrGSF`CwYZs3g8>w#Vz~Q=6mBMtA&% zAp#9=2Tvc)Ix@GcscjFo4F<3 z;^hk~!i9Tc<<@j#@8m7}QA@);?~^gjb&sjqlbQwbu4y%1L3v?FGv{hT$p?AA5P~R= zwx!%M_vuNee{Z27G8wQ}IS-;Jj;!LD$+RTCUHC3vLxj{jT)n+j zyaL5coqMC`ZgotwxXY&GPKKBM=q7|ZJ89{qp<2FKG)gH-Hq1l;9`et7fW^R*CD5i~ z=PJYX?4~hl+ovE=)gpnT8)-q>*ZkBzuB%nRC>!A71&|l;tZe*nmF%Ul?>nCKp7b_x@2pFAc#eL|^o*`2P2(=+ep+-?~hkKUULWZ_7tq`U{#D!0s&t(6lOm9n63oo8-fxclX$RMn30VN+lipn23K zwC!UWb9$T1cF<2B{pYju(cmo`v}#D#23E*e*J_;fbM^RB43LNQHxVa`JDfxH%F37^ zSOK0eJ)sKClK6h=L+hOH9ZVnWMB?KQ{r5EYKQ{hgm=XbU@&rFtiAzWW?6r7<$^2%@g>>ExLH>0l%DV1pX7NUnWFXeALuDbH~T?< z&EU@co?dC)JGv>)9XI6vL7gs-vLv=c3k>Sf-;}FMDAqY3R~e(jo#`+q6AikizcD8~ zrNV&faw;N|BZ<|d^uLK$gN4t6&ym<<1SPPVlBR{O(1MBS@-}FOB3j?Vps;#O zy`4n6ogbLIhUa+~;gADzPJ5Korb+(&u0BP?u>Z#iy6|vPHTCj4dX%X#S=DB#E^xp> z{y~ELj1kzQs?EWy?@fAOMc1#i|LGXNb&+9bs|?kpi~seogGG%e&t=EIS3oejJvYa> zPqtIX09cLzt*$IJ?yV)?cZGS#t?*03DFh+7vq-)1;8po=A6#(_rA3n@M6bA(EjWAN zYo1MnFe-X%*S>V{ZpH!1ZtiA-R=1tR(D(0GdX7g#c%)TP0+Mx*#JO|xD$wRuPS)8a zmV{2r1=#0xXSS2X=Bd~-_7?#~As-xQP7X|<0hXyhs(^P3{1r^o&H&C^RZyh}X^mU2 zGnpf_kI5o}H4<0FcS$RArrV0I?6a@9QW*uGX?B6e6O~1xlGia;D9hALVTdms+POBi zt%E~=bEaXZHI1J>wrvAjwKVaU*att4UJL2|M{)Mg!aUOWB{0v<@G}@m{j*9nc@JtLh@+72Oq1ytuFAOHXW literal 4125 zcmeHKXHXMbx1}iCH%6TE>hW{ zCh}(&0C*VoK$ek~hE*i`V#RtivCz`w=u;S{X%5w`QgxbJZ~rQHoVWyL#V2L+>^T9u z#Q#21P{>o-nr@QgnI({nmR3J{5oyUV^%S9!RLqu|>Tf{*8#E(mZ)&1#vA+-u-{B<# zG%K$t-hBQNHoJ8Ypu&aMvrZ)+DZQ6qT}vNBRfKpaqX>^RcGlD1ISUf2NMjOa%CJ{o zEz=knUfquda?(47Gd-2Ed95nmF7u(3SN1Vje z$XqfPM1yrKU4-s8!I`}0L-9bFykxR}YQ#d^2($KN&ZZ0nDIpE}YC)e5HG^sjdNm&{~WHtNVID7+lVGD*F zt0s*8K0rSXG*kLh&rte7K4a<#!S$v3xKK%_!N>zVHFe2zoub5vP!~zJC{|Wir!4zE zE)Hl3P8LZ#m9IiOOOzI#yiKl|3TxZnNRi3k3(y%y513TG1)wR=ZBsPN@k`zZ8IXjf z%1LOX!HCq|Q$G^}>Fg1hEPIKarrA9-&R_1Xw}5v9JjgL97L7T7*)K!kinay3<9U<| zxhGU#_?evoP{Z^84XU|Spoh8%Yr|D(lcYnbwiO z0gmwZ;>HMwqZHjHqVIyce)Lq%+FeazTQSG46)uEb2dlVqlwdL;hXlkWCyp(%g*Oae zMl)q*HrU_KsOV&D+*`k1akM^bM-TObLW8a@{I;6+jK`{|*;q`oj3U6Qmn&@ys`Bd_ zUcD$8L4JN>Rp;JW=Fe&v_7b_+WwO{&V5zPvyfJN~+O)T6HA3`*JQ+7MRI<106D~~0 zIbvHfQ7G<-r?T0r^V{?MCL6KNJ=-@u>~<@{!ot|HL?OWwg!ZR`E2E@+NoNu3PjkPM zRLv~76usY_*E0Me@p8VnU8h9S8=%+Co>vAnx58Tb+^-*|N3(J^ z?nMv#g+FvgyZ*#9f8)60nj{d4iA}2qcIf`k3mN!y*X2uNVl|LiOK~0IX~% zc%2@si|2&+Z?zt6E~fFLR6G~5e|MN-1%yq8UR~Z``ytiP&?gRek-FhAqNxz<-uZF4 zz-Q@L(zz!)$iv^CfaqNbXXqnMpK+(~7azv7l)YMt-*Jx5miN8>UT1h53}&TH2D>ZY zdo3q^b6{Ev5;egY6ZYfZIrbx?mU`m? zTofnLXxaL!sxDcw>?~j~VZQ`7uHa-tu{?ir0BXMOmaH7ZT4 ztRx*yy~lHhAZ2&HHbrr#`otzG0Ko$sZ?nS#bfzEidkMH06jb#R%9co+b1vF96ha0k?29a|4&7i=M;jFvN?9GD9 zUkz}P;c|TV@(xcM8Bk>r)M^MJbxV&vi?#m42T5sZLn>nXBiCP;7%Nm{ybN_QSDq6L zsmKDX*!v=AK5PrRH!>2!wOv5maw%Kd#HspFf8#4`XlOuk%G%F`RyfV%e z5uQS~@5_q3$m8#9ex_@cjexNH?6w@tK?MVdzGQB3hHO{uu`G2G=Wp)}3q+F2;sk_Y zwE<_-N0{bKMFO9<)$W=gXVbA!xg*4em4MhGNb&FtI~hzjq>NGl&SEWK2B7U0mJ-PNZ4UKUredA5|A8WG1f^gb2iD`rPPwnfsl*4X^w6Tgc8;IPOX%Q}X7 zwP9)%(!KPvJG1502?$7KuvE@_TtB7Pti#wdPGVA^LeF6?~b@ z@AKdOvejy1lm%r|zLd|87;U=A#zM#SSW7%Na4Q#L+p@RZ;96Z>9d%nFvmoY$XH~|< zep-@tG45)o<3k6RZiMG={{Fb+OhXvPa%cVYpg8==zEg@3hn(v9XG-LJWU+ceX5DnL zx2lwfI}{2a&T|?Cf!J%C7aF547RQPbh=;k zJw9hFfkPH|!oBnNb@-9id}3=J0!$;oo`}2X z;xAi9f>wxmiRncp!0*tIX@>3+cf6czwB@^-%<^YSl(A|jWTT8G_H^VCpZpp2E~EYy z*40qwai`ba_~7s~;~`HWqg;hbVoy6%fr$d(SzU{{eGy^5j&Q_d8Z~&yuUQ26A$-wh zWOxd0yM|QIVq!GW(=viu^|VYr$CIX;HFzvjXYJ@-;z zUw08A;R47>Z-7epz#ao9!+>Fub*=1wTL8sG1ehWa-Q`OXp`$vdNaPH3(CkrEOd~*g z3b6dIqI?gpy3 z1SgkdphHhD=I;l%`IL15bEHvyFc_R?PA~d4)ErH*wioaf_vv4<*H*$4n}!#WH1bRj zG+C}$0m?=xB*$z06F0f@eJ5w8m8dvxG4m%i#`T~v?bPe5bk=UKa*jsKpVwO(2Ivq2 zKkE5F$9rqnlfq05l(a91FgPt*wotVdjFm&kL{X&#f5DwLMxI*Vp(!w{03m!{&)To; zy}Ex$Nq6QdjPoeYVjc7^?Z0a3)_*7ry}EK?Tcc!FZv|Jxna#RacT5UDQURo%$|-&y zm@{1)SW{26&H*O5m+(wX-hlw{ABkc8bVkE-hqnZCBM7DmH9 G?7skhf5x5w diff --git a/packages/components/scrollbar/__screenshots__/01-light.png b/packages/components/scrollbar/__screenshots__/01-light.png index f89c62df1847b6ec0ab46cb26144351ae55547be..51e85b08f2cfe45d24579d1bbc68807aff743666 100644 GIT binary patch literal 3544 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
ZY#~qaxMclz-LI;vl>p6Dhx~9y=c!b$j$gy5Cs9 z(BNOh#~9&eQ%ta`>*Vll5WdSUP6Jd|SF0DE+%qXCN(B5jX8m7C>2Hwt|9yRs-}&F@ zz0=kf+L=D;4j%maPyD_Sv;bygK0UQeHgkm=e_Dd!Uy12xzc)>jO@VtkYc_W}Tz_^s z<@40Ciak_g(GM{u;fx{hKxshJ&-oNk*?woK(I zcD+aqeS`C+wHzK2GDBLXeIf)DN=W-jqi9!t9+Luro|}6>i6-jy&tHJ4Wt!CbwfQZ1 zKL9SY4M4dHEiaei?D1#|fPN(U_6EH$3sUp=t0{OL~V{<5Xi6fdObE+r|s2Y*&5^t6mM(drJ-{{U;L`*8pO diff --git a/packages/components/scrollbar/deprecated/__screenshots__/01-dark.png b/packages/components/scrollbar/deprecated/__screenshots__/01-dark.png index 5ae1f3d07fc332b9725333098f8e6f035faaf6e5..a9c36b5a699f685b41004897c0a07a13b87ffe32 100644 GIT binary patch literal 36279 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 rR@O+|X|Jz!-kO+u62Yba7e=)ppl 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 diff --git a/tools/public_api_guard/components/app-switcher.api.md b/tools/public_api_guard/components/app-switcher.api.md index 52c493690a..674f7c14c5 100644 --- a/tools/public_api_guard/components/app-switcher.api.md +++ b/tools/public_api_guard/components/app-switcher.api.md @@ -32,7 +32,6 @@ import { QueryList } from '@angular/core'; import * as rxjs from 'rxjs'; import { SafeHtml } from '@angular/platform-browser'; import { ScrollStrategy } from '@angular/cdk/overlay'; -import { Subscription } from 'rxjs'; import { TemplateRef } from '@angular/core'; import { Type } from '@angular/core'; @@ -225,7 +224,6 @@ export class KbqAppSwitcherTrigger extends KbqPopUpTrigger; placement: KbqPopUpPlacementValues; readonly placementChange: EventEmitter; - protected preventClosingByInnerScrollSubscription: Subscription; protected scrollStrategy: () => ScrollStrategy; readonly selectedApp: i0.ModelSignal; readonly selectedSite: i0.ModelSignal; From 6c9306c6e57d064ebe58d71707e3d58281dc0598 Mon Sep 17 00:00:00 2001 From: Artem Belik Date: Wed, 12 Aug 2026 14:19:30 +0300 Subject: [PATCH 4/6] refactor: code-block --- .../code-block/__screenshots__/01-dark.png | Bin 593454 -> 594020 bytes .../code-block/__screenshots__/01-light.png | Bin 582330 -> 582236 bytes .../components/code-block/code-block.html | 8 +++----- packages/components/code-block/code-block.ts | 10 +++++----- 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/packages/components/code-block/__screenshots__/01-dark.png b/packages/components/code-block/__screenshots__/01-dark.png index 614c2377008f49687cfc29ec81c6ce1bb28aeebc..dbe81162098088957ef5f6fdcbf6405ede109162 100644 GIT binary patch literal 594020 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
OB!|6n#&>7;GCL90PPL0o?1a?a4Q0;aL#x>wDp za;f4WVf2kKBK+uh{`G{KeUzP03o_9l7CH7aqy59Cl{)!f+AF@#pWj+Otff3hS@*2J zm{-y%M_(I^gJ7h-wf{NnU}n-~!X9hg{IMwmT8hMYZ9P+~4aJg`BdB_uvU2oG4@)um zZ!dsm%Vr0X*tkFZ-j{x>;ocuvAKe^TzTMSfxFp14XTld?NbdUXiLg86jmw6i$pCzf4d?tC08~%{3C2TXJ?Egf=PBc4&B8=$L7*?SDo9)xT9gO6+^} zJ0QKsimz!}@m?8Gj_VEdquipU)jMQ1oZRo-+^3|Y8hK#3oe!|8e?di?dahJXTwiyU zXcFt3O&-yU>ie7=kRZXRgFEI_Fp5J*NLu8peY^r%AZ~Bl%&&AcGgxKhzw2GFg)V3) zWWa&&!6xnYyO~?^B`lAp_~Z~nW%NMtE~^Q8PITE-`|_;c^V)P+?IsoR$>$IF92Z|8 z`IqfLJ}~Etr%@obB~B%5nCbZLa#);onRILJ?}}k9ufRaJpi!x1^fDO|+wVOc4#~j; z(T>3u>pXWkGwt>|BPb6$X`pPIlcBU=90pm=8&HBkx*X-@Gt>n7v~_x~<>5&FYtS6e z*L}YNF1|hnXOH6#jJ@PeJ}E67ce+lh#S()D@gi0(X4{=FqBr_l+vur&-0)o7JJ+dk z4PBGCJy=b7FNNEK40v9&KHMO3q%F#vr?vE{RHGSnxWbm!_Ty9NTyyl+i}PZa-&;P9 zN=?*XVz=O%iMP5jv*V*|ulf_)Cnbq}<#BdYlxy3&?K7d%&Y#NhW2_{Wm(J9zg7;u2 zc-83vzl6y$*%J2=jH->dP5zj|!g$#;tL22Zf~eo{=VJ}kHP?q(HO+e_$evE%IB1k| zJgjlAv+Bh7-gsNeBkAbm-5Hs)n6-In2_XS~7RyvUWX~WTlkjTVS6~TP*8ms;Athbs z!S3rCEY0Z3=lsAceFpdQ6Hyl`iTDpOy_$~{B|A4Z+javs%LQ$9t+zuusj>EVLoVtM z^5`x7xeMI{>X~sLLpRy(y4iqsF^x=sYChd6;L)T_#?5+h(y@c>qD`AoM@=p_7Wr6k z#R5^pQqRJJp=7-{=zQOtYc6cTRM)Us(+-Qhpv39VRud}DXxiH?3oAOT9hL&T`Ye)` zvk~{cl_~9vZurXM45{I;D4emf42ki-aQ)IX8~#!k2yuvfHdGLIjY{cd$HS_y4stw60;tv{bPM`$s1azC8b6W&!Y+2Ga> z`vHUx-=}wPG|QwbYGhQgK^OGesXRA7S5LIs8)?>3=6YmgBBr;?RTWmP2Qs% zHiu)~i9c7Up}65t6xDNZaH;o#L)@-2He zZfPP7F&C-yLAGb?iicZuiu-SgRoyK!+W6UU0(naK;*s&=dS;3F_TmnI&5EZ}gx*$= zni@w(!ir8C>x4J2RLnJeIc>EKcr-77&1KSeS4B^fM1)TWnJm5W*zS&8z1xay^2HOl zuAxVw&+Ki#wm$oWe>gO*(;}5F4b3dZEo`8!ii5d5`ap1m3@G@vI1L3ShAe^8MnhJ zr&;IN`vX<@WY7*t=XT597COUGv5NXEW_ggD?Yd>$lQZpG3!fRz%qkHakHr^76~B`f zgUz~a(pz1Rs!8g08FeAxgRTN`CpANDmIPUS%i!O=#1951ql<=`5XVueXS2YgRme8R z40Jp-47Xg3uRBeDkH;e0Y9Ju0lrp|z0l^GcHVu}Q&l`>#hPH>-dgTdCd7Jmji=U#= z@xndfvDp%=GC=`Q^Ahi5J-nQwPY+;{SRE^E^$Vd!ng{iUk8Oi5z7 z_b~sRaadc#a3c7b5m_!rMY6g;_BD1&1A!ElO?L3nRgK$TR3c~Nrk-@S°_r;RfDq@Wro$swfSaq)T@W%0O0sR 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

h_irdJ&iUFE{V| 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 z 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