angular / angular/components

bug(cdk/overlay): scroll blocking overlay persists when documentElement shrinks to the point it is not needed

Aperta
#30,943 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
area: cdk/overlay P4
Lingua principale
TypeScript
Stelle
25k
Fork
6.8k
Merge medio
1g 8h
PR unite (30g)
91

Descrizione

### Description

This came up for an app that had a button to launch a full screen dialog. When you click the button it essentially hides the main app and launches the dialog. However, at the time the dialog launches, the content is still showing so it calculates the height based on documentElement here (https://github.com/angular/components/blob/main/src/cdk/overlay/scroll/block-scroll-strategy.ts#L111) and determines the scroll blocking class is needed. The main content then disappears making the blocking class unnecessary, but it never updates after the initial calculation. This results in a disabled scrollbar being shown in the app.

As a workaround, apps in this situation should ensure that they remove content they want to hide & wait for that change to be rendered in the DOM before launching the dialog.

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia in src/cdk/overlay/scroll/block-scroll-strategy.ts intorno alla riga 111, dove la dimensione di documentElement viene usata per decidere se è necessario bloccare lo scorrimento. Riproduci la sequenza aprendo una finestra di dialogo a schermo intero mentre il contenuto principale è ancora presente, quindi nascondi quel contenuto. Il lavoro è completato quando lo stato di blocco non necessario non rimane più attivo e la barra di scorrimento disabilitata non viene mostrata.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
angular, typescript
Ambito
frontend
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
45/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.