Utilities
Rails Designer has various smaller utilities packed. They range from small, reusable Stimulus controllers, to little JavaScript helpers to a custom confirmation dialog for Turbo and a reusable way to nested forms.
You can get any of the following utilities by running:
bin/rails generate rails_designer:utility #{utility_name}
All available utilities
The currently available utilities.
Toggle Class Controller
Useful little Stimulus controller that allows you to add one or many CSS classes to the given element.
bin/rails generate rails_designer:utility toggle_class
Turbo Frame Load Controller
This small controller allows you to load screens in modals or slide overs on page load. It listens for a URL param that can be customizable (the default is v
, like so: localhost:3000?v=settings).
bin/rails generate rails_designer:utility turbo_frame_load
Smooth Turbo Stream Transitions
Add or remove elements from the page with grace.
To add elements use the following:
<%= turbo_stream_action_tag_with_block "prepend", target: "resources", data: {transition_enter: "transition ease-in duration-300", transition_enter_start: "opacity-0", transition_enter_end: "opacity-100"} do %>
<%= render ResourceComponent.new(resource: @resource) %>
<% end %>
To remove an element use this:
<%= turbo_stream_action_tag_with_block "remove", target: dom_id(@resource), data: {transition_leave: "transition ease-out duration-300", transition_leave_start: "opacity-100", transition_leave_end: "opacity-0"} %>
bin/rails generate rails_designer:utility turbo_stream_transitions
Then add to your app/javascript/application.js: import "./utilities/turbo_stream_render.js"
. Make sure to run ./bin/rails stimulus:manifest:update
to pick the new Stimulus controller.
String Helpers
General string helpers that every Rails developer misses in their JavaScript toolbox.
bin/rails generate rails_designer:utility string_helpers
Included are:
capitalize
dasherize
isBlank
Cookies helpers
Need to store or get a cookie. No need to rewrite that logic again and again.
bin/rails generate rails_designer:utility cookies_helpers
Local Storage helpers
Easier implementation for setting, getting and resetting a key/value into the localStorage.
bin/rails generate rails_designer:utility local_storage_helpers
Custom Confirm dialog
Turbo allows you to override the default confirm dialog. By adding this utility + just a few lines of code, your confirm dialogs have never looked this good!
bin/rails generate rails_designer:utility confirm_modal
Usage:
button_to "Delete…",
filters_path(filter),
method: :delete,
data: {
turbo_method: "delete",
turbo_confirm: "Really delete this filter?",
turbo_confirm_confirm_label: "Yes, put it in the shredder!",
turbo_confirm_cancel_label: "Oops, no go back…",
}
Comes with three themes: light
, dark
, lightGlass
Nested Attributes
Rails Designer has a nested_attributes
utility that gives you a reusable way to add nested forms for your ActiveModel’s. Read more about nested forms with Rails using Turbo in this article.
bin/rails generate rails_designer:utility nested_attributes survey question
The first attribute is the “parent” resource, the second argument the “nested/child” recource. After successfully running the generator, you are guided through a few steps to finalize the implementation.