Skip to content

Commit

Permalink
View transitions API demo doesn't transition (#502)
Browse files Browse the repository at this point in the history
Fixes #501
  • Loading branch information
delaneyj authored Jan 20, 2025
1 parent 2e2ef7d commit 7c8e255
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ const VIEW_TRANSITION = 'view-transition'

export const ViewTransition: AttributePlugin = {
type: PluginType.Attribute,
name: VIEW_TRANSITION,
name: 'viewTransition',
keyReq: Requirement.Denied,
valReq: Requirement.Must,
onGlobalInit() {
Expand Down
14 changes: 6 additions & 8 deletions site/routes_examples_view_transition_api.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,20 @@ func setupExamplesViewTransitionAPI(examplesRouter chi.Router) error {

examplesRouter.Get("/view_transition_api/watch", func(w http.ResponseWriter, r *http.Request) {
// You can comment out the below block and still persist the session
transition := r.URL.Query().Get("transition")
useSlide := transition == "slide"

signals := &viewTransitionAPISignals{}
if err := datastar.ReadSignals(r, signals); err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}

vt := datastar.WithUseViewTransitions(true)
sse := datastar.NewSSE(w, r)
sse.MergeFragmentTempl(viewTransitionAPIUpdate(signals.UseSlide))
sse.MergeFragmentTempl(viewTransitionAPIUpdate(useSlide), vt)

t := time.NewTicker(time.Second)
for {
select {
case <-r.Context().Done():
return
case <-t.C:
sse.MergeFragmentTempl(viewTransitionAPIUpdate(signals.UseSlide))
sse.MergeFragmentTempl(viewTransitionAPIUpdate(useSlide), vt)
}
}
})
Expand Down
4 changes: 0 additions & 4 deletions site/routes_examples_view_transition_api.templ
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,6 @@ package site

import "time"

type viewTransitionAPISignals struct {
UseSlide bool `json:"useSlide"`
}

templ viewTransitionAPIUpdate(useSlide bool) {
<div
id="stuff"
Expand Down
22 changes: 11 additions & 11 deletions site/static/md/examples/view_transition_api.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,16 +36,16 @@ animation-duration: 0.5s;

## Demo

<div class="flex flex-col gap-4" data-signals="{supportsViewTransitionAPI:!!document.startViewTransition, useSlide: false}">
<div data-text="`View Transition API supported in browser? ${$supportsViewTransitionAPI}`"></div>
<div id="stuff" class="flex gap-4">
<button class="btn btn-accent" data-show="$supportsViewTransitionAPI" data-on-click="@get('/examples/view_transition_api/watch')">
Fade transition
</button>
<button class="btn btn-accent" data-show="$supportsViewTransitionAPI" data-on-click="$useSlide = true; @get('/examples/view_transition_api/watch')">
Slide transition
</button>
</div>
<div class="flex flex-col gap-4" data-signals="{supportsViewTransitionAPI:!!document.startViewTransition}">
<div data-text="`View Transition API supported in browser? ${$supportsViewTransitionAPI}`"></div>
<div id="stuff" class="flex gap-4" data-show="$supportsViewTransitionAPI">
<button class="btn btn-accent" data-on-click="@get('/examples/view_transition_api/watch')">
Fade transition
</button>
<button class="btn btn-accent" data-on-click="@get('/examples/view_transition_api/watch?transition=slide')">
Slide transition
</button>
</div>
</div>

## Explanation
Expand All @@ -58,7 +58,7 @@ Datastar automatically adds the proper `<meta/>` tags to properly transition ful

## Inter-page transitions

By default, if `docuument.startViewTransition` exists each SSE fragment update will be wrapped in a `startViewTransition` async call. This will automatically fade in/out. If you want custom animation, such as
By default, if `docuument.startViewTransition` exists and incoming SSE fragment has [data: useViewTransition true](https://data-star.dev/reference/sse_events#event-types) update will be wrapped in a `startViewTransition` async call. This will automatically fade in/out. If you want custom animation, such as

```html
<style>
Expand Down

0 comments on commit 7c8e255

Please sign in to comment.