This repository was archived by the owner on Feb 6, 2024. It is now read-only.
File tree Expand file tree Collapse file tree 3 files changed +20
-1
lines changed
components/deck/deckdeckgo-deck Expand file tree Collapse file tree 3 files changed +20
-1
lines changed Original file line number Diff line number Diff line change @@ -37,6 +37,7 @@ await deck.print();
3737
3838| Event | Emitted value | Description |
3939| -------------------------- | :-----------------:| :-----------------:|
40+ | slidesDidLoad | string[ ] | Emitted when the deck and all slides have loaded. Emit the an ordered list of all the tag names of the slides. |
4041| slideNextDidChange | number | Emitted when the next slide has started. Emit the index of the new active slide. |
4142| slidePrevDidChange | number | Emitted when the previous slide has ended. Emit the index of the new active slide. |
4243| slideToChange | number | Emitted when a specific slide as selected. Emit the index of the new selected slide. |
Original file line number Diff line number Diff line change @@ -33,6 +33,7 @@ export namespace Components {
3333 'onSlidePrevDidChange' ?: ( event : CustomEvent < number > ) => void ;
3434 'onSlideToChange' ?: ( event : CustomEvent < number > ) => void ;
3535 'onSlideWillChange' ?: ( event : CustomEvent < number > ) => void ;
36+ 'onSlidesDidLoad' ?: ( event : CustomEvent < string [ ] > ) => void ;
3637 'pager' ?: boolean ;
3738 'pagerPercentage' ?: boolean ;
3839 }
Original file line number Diff line number Diff line change @@ -34,6 +34,7 @@ export class DeckdeckgoDeck {
3434 @State ( )
3535 private length : number = 0 ;
3636
37+ @Event ( ) slidesDidLoad : EventEmitter < string [ ] > ;
3738 @Event ( ) slideNextDidChange : EventEmitter < number > ;
3839 @Event ( ) slidePrevDidChange : EventEmitter < number > ;
3940 @Event ( ) slideToChange : EventEmitter < number > ;
@@ -245,8 +246,24 @@ export class DeckdeckgoDeck {
245246 /* BEGIN: Slide length and active index */
246247
247248 @Listen ( 'slideDidLoad' )
248- slideDidLoad ( ) {
249+ async slideDidLoad ( ) {
249250 this . length ++ ;
251+
252+ await this . emitSlidesDidLoad ( ) ;
253+ }
254+
255+ private emitSlidesDidLoad ( ) : Promise < void > {
256+ return new Promise < void > ( ( resolve ) => {
257+ const definedSlides : HTMLCollection = this . el . children ;
258+ const loadedSlides : NodeListOf < HTMLElement > = this . el . querySelectorAll ( '.deckgo-slide-container' ) ;
259+
260+ if ( definedSlides && loadedSlides && loadedSlides . length === definedSlides . length && definedSlides . length === this . length ) {
261+ const orderedSlidesTagNames : string [ ] = Array . from ( loadedSlides ) . map ( ( slide : HTMLElement ) => { return slide . tagName } ) ;
262+ this . slidesDidLoad . emit ( orderedSlidesTagNames ) ;
263+ }
264+
265+ resolve ( ) ;
266+ } ) ;
250267 }
251268
252269 @Method ( )
You can’t perform that action at this time.
0 commit comments