feat(slideshow): gray out play button on last slide in sequential mode#296
Merged
Merged
Conversation
When stopped on the final slide in sequential mode (album or search results), the play button now grays out and ignores clicks — there is nothing left to advance to. Shuffle mode (no "end") and wrap-navigation (always resolves to a real index) are unaffected, and the Pause button is never disabled. Reuses slideState.resolveOffset(+1) — the same end-of-list signal the auto-pause path from #293 relies on — and refreshes the button via the existing slideChanged listener so it updates on every navigation path. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
A tiny UI tweak: when the slideshow mode is sequential and the current slide is the last slide (album or search results), the play button now grays out and is inactivated.
Behavior
cursor: default) and clicks are ignored.resolveOffsetalways resolves to a real index).Implementation
slideshow.js— newatSequentialEnd()helper reusesslideState.resolveOffset(+1)(the same end-of-list signal the auto-pause path from fix(slideshow): stop on last slide in linear mode; reshuffle endlessly in shuffle mode #293 relies on).updateSlideshowButtonIcon()toggles aslideshow-disabledclass;toggleSlideshowWithIndicator()no-ops a click in that state.events.js— wired the icon refresh into the existing (previously empty)slideChangedlistener so the button stays in sync across every navigation path (swipe, seek slider, UMAP, etc.).control-and-search-panels.css— extended the existing.back-nav-disabledrule to also cover.slideshow-disabled, following the established disabled-button convention.Testing
npm test— 343 frontend tests passnpm run lint+npm run format:check— clean🤖 Generated with Claude Code