MCPcopy Index your code
hub / github.com/Rails-Designer/turbo-transition

github.com/Rails-Designer/turbo-transition @v0.4.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.4.0 ↗ · + Follow
22 symbols 39 edges 4 files 0 documented · 0% updated 10mo agov0.4.0 · 2025-09-02★ 74
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Turbo Transition

A “minion” for Turbo-Frames and Streams. This custom element transitions elements as they enter or leave the DOM.

Shows a fade out and slide up transition of one message after clicking a trash can icon

Sponsored By Rails Designer

<img alt="Rails Designer" src="https://raw.githubusercontent.com/Rails-Designer/turbo-transition/HEAD/.github/logo-light.svg" width="240" style="max-width: 100%;">

Want to be able to understand this JavaScript code? 😊 👉 JavaScript for Rails Developers

Installation

# Using importmap
bin/importmap pin turbo-transition

# Using npm
npm install turbo-transition

Then add to your JavaScript entrypoint (app/javascript/application.js):

import "turbo-transition"

Usage

Turbo Transition works by wrapping your elements in a <turbo-transition> element and applying CSS classes at the right moments. Use it to transition new items sliding into lists, fade out deleted content, or any other transition effect with CSS. Each <turbo-transition> element must contain exactly one child element.

The element watches for two lifecycle events:

  • enter: when the element is added to the DOM;
  • leave: when the element is removed from the DOM.

Enter

<%# app/views/tasks/create.turbo_stream.erb %>
<%= turbo_stream.append "tasks" do %>
  <turbo-transition
    enter-from-class="fade-enter-from"
    enter-active-class="fade-enter-active"
    enter-to-class="fade-enter-to"
  >
    <%= render partial: "task", locals: {task: @task} %>
  </turbo-transition>
<% end %>

Leave

<%# app/views/tasks/_task.html.erb %>
<turbo-transition
  id="<%= dom_id(task) %>"
  leave-from-class="fade-leave-from"
  leave-active-class="fade-leave-active"
  leave-to-class="fade-leave-to"
>



    <%= task.title %>
    <%= button_to "Delete", task, method: :delete %>



</turbo-transition>

Example CSS

.fade-enter-active, .fade-leave-active { transition: opacity 300ms ease-out; }
.fade-enter-from, .fade-leave-to { opacity: 0; }
.fade-enter-to, .fade-leave-from { opacity: 1; }

For more transition examples, see examples/transitions.css. You can customize any transition using CSS properties:

<turbo-transition
  class="modal"
  enter-from-class="fade-move-enter-from"
  enter-active-class="fade-move-enter-active"
  enter-to-class="fade-move-enter-to"
>







</turbo-transition>
.modal {
  --transition-enter-y: -20px;
  --transition-duration: 400ms;
}

@media (width > 640px) {
  .modal {
    --transition-enter-y: 100%;
    --transition-enter-x: 0;
  }
}

Contributing

# Install dev dependencies
npm install

# Run basic test
npm test

# Release new version
npm version patch # or minor, or major
npm publish
git push
git push --tags

License

Turbo Transition is released under the MIT License.

Core symbols most depended-on inside this repo

remove
called by 3
src/index.js
#transition
called by 2
src/index.js
#enter
called by 1
src/index.js
#leave
called by 1
src/index.js
run
called by 1
src/utilities.js
#applyInitialState
called by 1
src/utilities.js
#applyFinalState
called by 1
src/utilities.js
#cleanup
called by 1
src/utilities.js

Shape

Method 16
Class 6

Languages

TypeScript100%

Modules by API surface

src/utilities.js8 symbols
src/index.js8 symbols
src/config.js6 symbols

For agents

$ claude mcp add turbo-transition \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact