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

Commit 57880a0

Browse files
feat(#25): clone background
1 parent d930521 commit 57880a0

File tree

14 files changed

+82
-9
lines changed

14 files changed

+82
-9
lines changed

src/components.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import '@stencil/core';
1313
export namespace Components {
1414

1515
interface DeckgoDeck {
16+
'cloneBackground': boolean;
1617
'doPrint': () => Promise<void>;
1718
'embedded': boolean;
1819
'getActiveIndex': () => Promise<number>;
@@ -29,6 +30,7 @@ export namespace Components {
2930
'toggleFullScreen': () => Promise<void>;
3031
}
3132
interface DeckgoDeckAttributes extends StencilHTMLAttributes {
33+
'cloneBackground'?: boolean;
3234
'embedded'?: boolean;
3335
'keyboard'?: boolean;
3436
'onSlideDrag'?: (event: CustomEvent<number>) => void;

src/components/deck/deckdeckgo-deck/deckdeckgo-deck.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ div.deckgo-pager {
2929
}
3030

3131
::slotted([slot="background"]) {
32+
display: var(--background-display);
3233
pointer-events: none;
3334
}
3435

src/components/deck/deckdeckgo-deck/deckdeckgo-deck.tsx

Lines changed: 52 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ export class DeckdeckgoDeck {
2626

2727
@Prop() embedded: boolean = false;
2828

29+
@Prop() cloneBackground: boolean = true;
30+
2931
@State()
3032
private rtl: boolean = false;
3133

@@ -61,8 +63,6 @@ export class DeckdeckgoDeck {
6163

6264
this.initWindowResize();
6365
this.initKeyboardAssist();
64-
65-
await this.lazyBackgroungImages();
6666
}
6767

6868
private initRtl(): Promise<void> {
@@ -358,9 +358,12 @@ export class DeckdeckgoDeck {
358358

359359
this.slidesDidLoad.emit(orderedSlidesTagNames);
360360

361-
await this.lazyLoadFirstSlides();
361+
const promises: Promise<void>[] = [];
362+
promises.push(this.lazyLoadFirstSlides());
363+
promises.push(this.cloneSlots(filteredSlides, 'actions'));
364+
promises.push(this.loadBackground(filteredSlides));
362365

363-
await this.cloneActionsSlot(filteredSlides);
366+
await Promise.all(promises);
364367
}
365368

366369
resolve();
@@ -378,18 +381,59 @@ export class DeckdeckgoDeck {
378381
});
379382
}
380383

381-
private cloneActionsSlot(slides: Element[]): Promise<void> {
384+
private loadBackground(slides: Element[]): Promise<void> {
385+
return new Promise<void>(async (resolve) => {
386+
387+
const background: HTMLElement = this.el.querySelector('[slot=\'background\']');
388+
389+
if (!background) {
390+
resolve();
391+
return;
392+
}
393+
394+
await this.lazyBackgroungImages();
395+
396+
if (this.cloneBackground) {
397+
await this.cloneSlots(slides, 'background');
398+
}
399+
400+
await this.showHideBackgroundSlot();
401+
402+
resolve();
403+
});
404+
}
405+
406+
private showHideBackgroundSlot(): Promise<void> {
407+
return new Promise<void>(async (resolve) => {
408+
const slider: HTMLElement = this.el.shadowRoot.querySelector('div.deckgo-deck');
409+
410+
if (!slider) {
411+
resolve();
412+
return;
413+
}
414+
415+
if (this.cloneBackground) {
416+
slider.style.setProperty('--background-display', 'none');
417+
} else {
418+
slider.style.removeProperty('--background-display');
419+
}
420+
421+
resolve();
422+
});
423+
}
424+
425+
private cloneSlots(slides: Element[], slotName: string): Promise<void> {
382426
return new Promise<void>((resolve) => {
383427
if (!slides || slides.length <= 0) {
384428
resolve();
385429
return;
386430
}
387431

388-
const actions: HTMLElement = this.el.querySelector('[slot=\'actions\']');
432+
const slotElement: HTMLElement = this.el.querySelector('[slot=\'' + slotName + '\']');
389433

390-
if (actions) {
434+
if (slotElement) {
391435
slides.forEach((slide: Element) => {
392-
slide.appendChild(actions.cloneNode(true));
436+
slide.appendChild(slotElement.cloneNode(true));
393437
});
394438
}
395439

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ export class DeckdeckgoSlideAuthor implements DeckdeckgoSlide {
5959
</div>
6060
<slot name="notes"></slot>
6161
<slot name="actions"></slot>
62+
<slot name="background"></slot>
6263
</div>;
6364
}
6465

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ export class DeckdeckgoSlideChart implements DeckdeckgoSlide {
120120
</div>
121121
<slot name="notes"></slot>
122122
<slot name="actions"></slot>
123+
<slot name="background"></slot>
123124
</div>
124125
}
125126

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,7 @@ export class DeckdeckgoSlideCode implements DeckdeckgoSlide {
222222
<slot name="info"></slot>
223223
<slot name="notes"></slot>
224224
<slot name="actions"></slot>
225+
<slot name="background"></slot>
225226
</div>;
226227
}
227228

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ export class DeckdeckgoSlideContent implements DeckdeckgoSlide {
4848
<slot name="content"></slot>
4949
<slot name="notes"></slot>
5050
<slot name="actions"></slot>
51+
<slot name="background"></slot>
5152
</div>;
5253
}
5354

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ export class DeckdeckgoSlideGif implements DeckdeckgoSlide {
7474
<slot name="footer"></slot>
7575
<slot name="notes"></slot>
7676
<slot name="actions"></slot>
77+
<slot name="background"></slot>
7778
</div>
7879
</div>
7980
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ export class DeckdeckgoSlideQrcode implements DeckdeckgoSlide {
9393
</div>
9494
<slot name="notes"></slot>
9595
<slot name="actions"></slot>
96+
<slot name="background"></slot>
9697
</div>;
9798
}
9899

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ export class DeckdeckgoSlideSplit implements DeckdeckgoSlide {
4949
<div class="deckgo-slide-split deckgo-slide-split-end"><slot name="end"></slot></div>
5050
<slot name="notes"></slot>
5151
<slot name="actions"></slot>
52+
<slot name="background"></slot>
5253
</div>;
5354
}
5455

0 commit comments

Comments
 (0)