Skip to content
This repository was archived by the owner on Feb 6, 2024. It is now read-only.

Commit 5fe773e

Browse files
feat(#41): implement scrolling into the code template to fix the moving page problem related to rtl
1 parent 5640fe1 commit 5fe773e

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

src/components/slides/deckdeckgo-slide-code/deckdeckgo-slide-code.scss

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ div.deckgo-slide-code-container {
1010
width: 100%;
1111
overflow-y: auto;
1212

13+
scroll-behavior: smooth;
14+
1315
&.deckgo-slide-code-container-mobile {
1416
overflow-y: hidden;
1517
}

src/components/slides/deckdeckgo-slide-code/deckdeckgo-slide-code.tsx

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,25 @@ export class DeckdeckgoSlideCode implements DeckdeckgoSlide {
8181
private scrollToNext(enter: boolean): Promise<boolean> {
8282
const element: HTMLElement = this.el.shadowRoot.querySelector('deckgo-highlight-code');
8383

84-
if (element && element.hasOwnProperty('scrollToNext')) {
85-
return (element as any).scrollToNext(enter);
84+
if (element && element.hasOwnProperty('findNextAnchor')) {
85+
return new Promise<boolean>(async (resolve) => {
86+
const nextAnchor: any = await (element as any).findNextAnchor(enter);
87+
88+
const container: HTMLElement = this.el.shadowRoot.querySelector('div.deckgo-slide-code-container');
89+
90+
if (nextAnchor && container) {
91+
const previousScrollTop: number = container.scrollTop;
92+
container.scrollTop = nextAnchor.offsetTop;
93+
94+
if (element.hasOwnProperty('zoomCode')) {
95+
await (element as any).zoomCode(nextAnchor.hasLineZoom);
96+
}
97+
98+
resolve(nextAnchor.offsetTop === 0 && previousScrollTop === 0);
99+
} else {
100+
resolve(true);
101+
}
102+
});
86103
} else {
87104
return new Promise<boolean>((resolve) => {
88105
resolve(true);

0 commit comments

Comments
 (0)