Merge remote-tracking branch 'origin/master' into fix/workspace-route-swap

# Conflicts:
#	apps/web/src/app/app.config.ts
#	libs/portal/catalog/feature/src/lib/category-content-view/category-content-view.component.spec.ts
#	libs/portal/catalog/feature/src/lib/category-content-view/category-content-view.component.ts
#	libs/ui/playback/src/lib/player-controls/player-controls.component.settings-panel.spec.ts
#	libs/ui/playback/src/lib/player-controls/player-settings-panel.component.ts
This commit is contained in:
4gray committed 2026-10-14 00:15:48 +02:00
commit ab71105a54
54 files changed
+2031 -684

No files matched your search

+3 -8
View File
@@ -234,14 +234,9 @@ records no shift. `app.config.spec.ts` keeps the animations renderer out, and
`workspace-route-swap.e2e.ts` asserts that no mutation checkpoint holds both
pages and that neither the dashboard nor the content pane shifts.
Destroy hooks therefore run with the view's DOM already detached, where
`scrollTop` reads 0 and focus has dropped to `body`. Chromium blurs a focused
element synchronously while removing it, so its `focusout` (no
`relatedTarget`) arrives before the hook. The deferred removal used to hide
this. Record what a hook needs while the view is attached: the catalog keeps
the offset of the grid that scrolled last, and the player settings panel
judges a `focusout` a microtask later, when a removed panel is detached and a
pointer-blurred one is not.
Destroy hooks therefore run with the view's DOM already detached; the
[UI guidelines](./iptvnator-ui-guidelines.md) ("No animations module") say
how hooks record geometry and focus instead.
Do not add `provideAnimations()` or `provideAnimationsAsync()` back; animate
with CSS. A leave animation (`animate.leave` included) delays its element's