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

Commit 772d120

Browse files
fix: slide gif header and footer not moved anymore for editor compatibility
1 parent 70b0e15 commit 772d120

File tree

5 files changed

+45
-25
lines changed

5 files changed

+45
-25
lines changed

studio/src/components.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
import '@stencil/core';
99

1010
import '@ionic/core';
11-
import 'ionicons';
1211
import 'deckdeckgo';
1312
import 'deckdeckgo-inline-editor';
13+
import 'ionicons';
1414
import {
1515
EventEmitter,
1616
} from '@stencil/core';

webcomponents/core/src/components.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ export namespace Components {
5757
interface DeckgoGifAttributes extends StencilHTMLAttributes {
5858
'alt'?: string;
5959
'fullscreen'?: boolean;
60+
'onGifLoaded'?: (event: CustomEvent<boolean>) => void;
6061
'src'?: string;
6162
}
6263

webcomponents/core/src/components/extra/deckdeckgo-gif/deckdeckgo-gif.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {Component, Element, Prop, Method, State} from '@stencil/core';
1+
import {Component, Element, Prop, Method, State, Event, EventEmitter} from '@stencil/core';
22

33
import {DeckdeckgoUtils} from '../../utils/deckdeckgo-utils';
44
import {DeckdeckgoExtra} from '../deckdeckgo-extra';
@@ -19,6 +19,8 @@ export class DeckdeckgoGif implements DeckdeckgoExtra {
1919

2020
@State() loaded: boolean = false;
2121

22+
@Event() gifLoaded: EventEmitter<boolean>;
23+
2224
async componentDidLoad() {
2325
await DeckdeckgoUtils.hideLazyLoadImages(this.el);
2426

@@ -27,6 +29,7 @@ export class DeckdeckgoGif implements DeckdeckgoExtra {
2729
if (img) {
2830
img.addEventListener('load', () => {
2931
this.loaded = true;
32+
this.gifLoaded.emit(true);
3033
}, false);
3134
}
3235
}

webcomponents/core/src/components/slides/deckdeckgo-slide-gif/deckdeckgo-slide-gif.scss

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,38 @@ div.deckgo-gif-container {
1616
width: 100%;
1717
height: 100%;
1818

19+
position: relative;
20+
1921
display: flex;
2022
align-items: center;
2123
justify-content: center;
24+
25+
::slotted([slot="header"]), ::slotted([slot="footer"]) {
26+
position: absolute;
27+
28+
left: 50%;
29+
transform: translate(-50%, 0);
30+
31+
text-align: center;
32+
33+
background: var(--background);
34+
color: var(--color);
35+
padding: var(--padding, 8px);
36+
37+
z-index: var(--zIndex, 2);
38+
}
39+
40+
::slotted([slot="header"]) {
41+
top: 0;
42+
}
43+
44+
::slotted([slot="footer"]) {
45+
bottom: 0;
46+
}
47+
}
48+
49+
:host(.deckgo-slide-gif-hidden) {
50+
::slotted([slot="header"]), ::slotted([slot="footer"]) {
51+
display: none;
52+
}
2253
}

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

Lines changed: 8 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {Component, Element, Event, EventEmitter, Method, Prop} from '@stencil/core';
1+
import {Component, Element, Event, EventEmitter, Method, Prop, Listen, State} from '@stencil/core';
22

33
import {DeckdeckgoSlide, DeckdeckgoSlideUtils} from '../deckdeckgo-slide';
44
import {DeckdeckgoUtils} from '../../utils/deckdeckgo-utils';
@@ -19,12 +19,12 @@ export class DeckdeckgoSlideGif implements DeckdeckgoSlide {
1919

2020
@Prop() fullscreen: boolean = false;
2121

22+
@State() loaded: boolean = false;
23+
2224
async componentDidLoad() {
2325
await DeckdeckgoUtils.hideLazyLoadImages(this.el);
2426

2527
this.slideDidLoad.emit();
26-
27-
await this.moveSlots();
2828
}
2929

3030
@Method()
@@ -44,25 +44,9 @@ export class DeckdeckgoSlideGif implements DeckdeckgoSlide {
4444
return DeckdeckgoSlideUtils.lazyLoadContent(this.el);
4545
}
4646

47-
private moveSlots(): Promise<void> {
48-
return new Promise<void>((resolve) => {
49-
const header: HTMLElement = this.el.querySelector('[slot=\'header\']');
50-
const footer: HTMLElement = this.el.querySelector('[slot=\'footer\']');
51-
52-
const gif: HTMLDeckgoGifElement = this.el.shadowRoot.querySelector('deckgo-gif');
53-
54-
if (gif) {
55-
if (header) {
56-
gif.appendChild(header);
57-
}
58-
59-
if (footer) {
60-
gif.appendChild(footer);
61-
}
62-
}
63-
64-
resolve();
65-
});
47+
@Listen('gifLoaded')
48+
onGifLoaded($event: CustomEvent) {
49+
this.loaded = $event && $event.detail;
6650
}
6751

6852
render() {
@@ -83,7 +67,8 @@ export class DeckdeckgoSlideGif implements DeckdeckgoSlide {
8367
return {
8468
class: {
8569
'deckgo-slide-container': true,
86-
'deckgo-slide-container-fullscreen': this.fullscreen
70+
'deckgo-slide-container-fullscreen': this.fullscreen,
71+
'deckgo-slide-gif-hidden': !this.loaded
8772
}
8873
}
8974
}

0 commit comments

Comments
 (0)