RailsToastify
Rails Toastify allows you to easily add notifications to your app. Please CONTRIBUTE.
The Rails Toastify gem is completely inspired by the React Toastify lib and is specially made for those React developers who are migrating to Rails thanks to Hotwire or for any other reason, and who love using Toasts and wanted a gem that makes it as easy as it is in React. 🎉
To see the pure html, css and javascript that originated this gem, just access this codepen link.
Installation
Add gem in your Gemfile:
gem 'rails_toastify'
and run bundle install
After run:
rails generate rails_toastify:install
This will create a file config/initializers/rails_toastify.rb where you can define what configuration you want to use:
RailsToastify.setup do |configuration|
configuration.position = 'toast-container-top-right'
configuration.notice_animation = 'bounce'
configuration.alert_animation = 'slide'
configuration.notice_duration = 3000
configuration.alert_duration = 3000
configuration.notice_theme = 'light'
configuration.alert_theme = 'light'
configuration.notice_type = 'default'
configuration.alert_type = 'error'
end
Usage
In your application.html.erb add in your header:
<%= stylesheet_link_tag 'rails_toastify', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'rails_toastify', 'data-turbo-track': 'reload' %>
And in your body:
<%= rails_toastify_container %>
<%= rails_toastify_script %>
And call function RailsToastify.show
any javascript or console:
RailsToastify.show('This is a message!', { theme: 'light', type: 'default', animation: 'bounce', duration: 3000 });
To see notice or alert in a toast add this in application.html.erb:
<% if notice %>
<script>
RailsToastify.show('<%= notice %>',
{ theme: '<%= RailsToastify.configuration.notice_theme %>',
type: '<%= RailsToastify.configuration.notice_type %>',
animation: '<%= RailsToastify.configuration.notice_animation %>',
duration: <%= RailsToastify.configuration.notice_duration %>
})
</script>
<% end %>
<% if alert %>
<script>
RailsToastify.show('<%= alert %>',
{ theme: '<%= RailsToastify.configuration.alert_theme %>',
type: '<%= RailsToastify.configuration.alert_type %>',
animation: '<%= RailsToastify.configuration.alert_animation %>',
duration: <%= RailsToastify.configuration.alert_duration %>
})
</script>
<% end %>
** Note that toast can be configured for either notice type or alert type. Both types or just one of the types can be used.
Next steps
- Add tests
- Add others positions (left, center, bottom)
- Add fade in and fade out animation
- In addition to the colors, allow the user to choose any color for the progress bar
Requirements
- Ruby >= 2.6.0 (recommended 2.7+)
- Rails >= 6.0 (compatible up to Rails 7)
Contributing to Rails Toastify
Fork, fix, then send a pull request. Bug reports and pull requests are welcome on GitHub at https://github.com/eltonsantos/rails_toastify.
License
This gem is available as open-source under the terms of The MIT License (MIT).
Copyright (c) 2024 Elton Santos. See MIT-LICENSE for further details and see CHANGELOG to see what was changed.