Releases: oddbird/slide-deck
Releases · oddbird/slide-deck
version 0.2.0
Not sure why this spent so long as a pre-release, but here it is. Note that there are a number of breaking changes:
- 🚀 NEW: The
key-controlattribute
accepts values ofnoneorescape,
to turn off keyboard navigation
(and optionally leave escape-to-blur intact).
This attribute can be applied to individual elements in a deck,
for more detailed control --
eg turning off navigation while a form has focus. - 🚀 NEW: Provide a
slide-deck.webccomponent. - 🚀 NEW: All attributes have associated getters and setters:
key-control->keyControl(boolean | 'none' | 'escape')follow-active->followActive(boolean)full-screen->fullScreen(boolean)slide-view->slideView(string)
- 🚀 NEW: Use the
?slide-view=viewNamequery parameter
to create links to specific slide views.
When present on load, the query parameter will override
the session storage as well as any hardcoded attribute value. - 💥 BREAKING: The
slideViewproperty setter
should be used for changing views,
rather than manipulating theslide-viewattribute directly.
This will also update session storage and the url query parameter. - 💥 BREAKING: When the
startandresumeevents are fired,
the slide-deck is put into apublicView
(the default isslideshow).
When thejoin-as-speakerevent is fired,
the slide-deck is put into aprivateView
(the default isspeaker).
These can be changed by setting the
publicViewandprivateViewproperties with JS,
or by setting thepublic-viewandprivate-viewattributes in HTML. - 💥 BREAKING: Renamed the custom event handlers and matching public methods:
reset=reset()join=join()resume=resume()start=start()join-as-speaker=joinAsSpeaker()blank-slide=blankSlide()next=next()previous=previous()to-slide=toSlide()to-saved=toSavedSlide()scroll-to-active=scrollToActive()full-screen=toggleFullScreen()key-control=toggleKeyControl()follow-active=toggleFollowActive()
- 🐞 FIXED: Keyboard events are given proper priority, so that
(for example) you can open the control panel from a blank slide. - 🐞 FIXED: Navigation shortcuts aren't invoked
when a modifier key is being pressed. - 🐞 FIXED: Slideshow view maintains
16/9slide ratio
when in portrait orientation. - 🚀 NEW:
--slide-active-idcontains the id of the currently active slide. - 🚀 NEW:
--slide-deck-progressis a percentage based on the current active slide. - 💥 BREAKING: Renamed some of the
slide-deck.csscustom properties,
and made minor changes to the styles (especially sizing/spacing). - 👀 INTERNAL: Renamed static
storageKeystostoreValues,
and staticcontrolKeystonavKeysfor clarity.
v0.2.0-rc.2 - No navigation when modifiers are pressed
This is a small fix, so that we're not hijacking keystrokes for slide navigation when modifier keys are being pressed.
v0.2.0-rc.1
- 🚀 NEW: The
key-controlattribute
accepts values ofnoneorescape,
to turn off keyboard navigation
(and optionally leave escape-to-blur intact).
This attribute can be applied to individual elements in a deck,
for more detailed control --
eg turning off navigation while a form has focus. - 🚀 NEW: Provide a
slide-deck.webccomponent. - 🚀 NEW: All attributes have associated getters and setters:
key-control->keyControl(boolean | 'none' | 'escape')follow-active->followActive(boolean)full-screen->fullScreen(boolean)slide-view->slideView(string)
- 🚀 NEW: Use the
?slide-view=viewNamequery parameter
to create links to specific slide views.
When present on load, the query parameter will override
the session storage as well as any hardcoded attribute value. - 💥 BREAKING: The
slideViewproperty setter
should be used for changing views,
rather than manipulating theslide-viewattribute directly.
This will also update session storage and the url query parameter. - 💥 BREAKING: When the
startandresumeevents are fired,
the slide-deck is put into apublicView
(the default isslideshow).
When thejoin-as-speakerevent is fired,
the slide-deck is put into aprivateView
(the default isspeaker).
These can be changed by setting the
publicViewandprivateViewproperties with JS,
or by setting thepublic-viewandprivate-viewattributes in HTML. - 💥 BREAKING: Renamed the custom event handlers and matching public methods:
reset=reset()join=join()resume=resume()start=start()join-as-speaker=joinAsSpeaker()blank-slide=blankSlide()next=next()previous=previous()to-slide=toSlide()to-saved=toSavedSlide()scroll-to-active=scrollToActive()full-screen=toggleFullScreen()key-control=toggleKeyControl()follow-active=toggleFollowActive()
- 🐞 FIXED: Keyboard events are given proper priority, so that
(for example) you can open the control panel from a blank slide - 👀 INTERNAL: Renamed static
storageKeystostoreValues,
and staticcontrolKeystonavKeysfor clarity.
v0.1.4 - sessionStorage slide-view takes priority
- 🐞 FIXED: session view preference overrides attribute when deck is first constructed
To-slide buttons, and other improvements
- 💥 BREAKING: All events and
slide-eventcontrols use lowercase hyphenated names, for consistency with html conventions (toggleControl->toggle-control,toggleFollow->toggle-follow,toggleFullscreen->toggle-fullscreen) - 🚀 NEW: Use the
to-slideattribute on buttons in the slide deck to move focus to any slide -- either the parent slide of the button, or the slide index given as a value of the attribute - 🚀 NEW: Custom
goToSlideevent accepts an integer value in theevent.detailproperty - 🚀 NEW:
--slide-count-stringand--slide-index-stringcan be used for CSS generated content - 🐞 FIXED: Less nesting for lower specificity in the
slide-deck.csstheme - 🐞 FIXED: Provide shadow-DOM control-panel styles
attributes, parts, slots, and views
There's a lot of general cleanup here around our organizational approach and developer API:
- 💥 BREAKING: Disabled the fullscreen keyboard shortcut, until we have a chance to address the various fullscreen browser issues
- 💥 BREAKING: Removed the 'end presentation' event and keyboard shortcuts, which were more confusing than useful
- 💥 BREAKING: Removed the shadow DOM content wrapper, and all shadow DOM styles for slide layout
- 💥 BREAKING: The
resetevent targets the first slide rather than the slide-deck container - 🚀 NEW / 💥 BREAKING: Renamed and added control-panel parts, to allow for more customization of the default panel including pressed buttons with
:part(button pressed) - 🚀 NEW: Set
aria-current='true'on active slide - 🚀 NEW: View settings are maintained across page refresh using
sessionStorage - 🚀 NEW: Add support for slide parts –
slide-canvas&slide-note - 🚀 NEW: Each slide is labeled with either
slide-item='container'(if it has nested parts) orslide-item='canvas' slide-canvas(if there are no nested parts) - 🚀 NEW: The
slide-deckhas a--slide-countproperty, and each slide has a--slide-index - 🚀 NEW: Default layout styles are in
slide-deck.cssand can be applied from the light DOM - 🚀 NEW: The entire control panel can be replaced from the light DOM using
slot=control-panelon a dialog element - 🚀 NEW: Blank slides are implemented as shadow DOM dialogues, which can be replaced from the light DOM using
slot=blank-slideon a slotteddialogelement - 🚀 NEW: When
key-controlis activated (including on-load), we target the stored active slide (or the first slide) - 🚀 NEW: Support for keyboard shortcuts on Windows/Linux using
controlinstead ofcommand - 🐞 FIXED: Slotted controls are no longer treated as slides
- 🐞 FIXED: When restoring the active slide from memory, we go to the first slide if there's no stored state
- 🐞 FIXED: Use any key to exit a blank-slide mode
Bug fixes and keyboard shortcuts
- 💥 BREAKING: Updated keyboard shortcuts
to match PowerPoint,
includingcommand-.as 'end presentation'
rather than 'toggle full-screen' (nowcommand-shift-f) - 🚀 NEW: Support for blank-screen shortcuts
(inspired by Curtis Wilcox) - 🚀 NEW: Both start/resume events target active slides
- 🚀 NEW: Control panel includes toggle for keyboard controls
- 🚀 NEW: Control panel buttons have
aria-pressedstyles - 🚀 NEW: All slide-event buttons that toggle a boolean state
getaria-pressedvalues that update with the state - 🐞 FIXED: Scroll to the active slide when changing views
- 🐞 FIXED: Control panel view toggles were broken
- 🐞 FIXED: Control panel prevents propagation of keyboard shortcuts
- 👀 INTERNAL: The current slide is stored in an
activeSlideproperty
v0.1.0 Initial release
An initial release with basic support for:
- keyboard-control
- fullscreen
- following along in a second tab
- custom control buttons, and a variety of custom event listeners
- grid and list views