Module: Sileo::Helper
- Defined in:
- lib/sileo/helper.rb
Instance Method Summary collapse
- #sileo_render_notifications(notifications = nil) ⇒ Object
- #sileo_toaster(position: nil, offset: nil, options: {}, **data_options) ⇒ Object
Instance Method Details
#sileo_render_notifications(notifications = nil) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/sileo/helper.rb', line 30 def sileo_render_notifications(notifications = nil) notifications = Array(notifications || flash[:sileo_notifications]) flash[:sileo_notifications] = [] return "".html_safe if notifications.empty? javascript_tag do <<~JS (function() { var notifications = #{JSON.generate(notifications)}; if (!window.Sileo) { window.addEventListener("sileo:ready", function() { notifications.forEach(function(notification) { window.Sileo.show(notification); }); }, { once: true }); return; } notifications.forEach(function(notification) { window.Sileo.show(notification); }); })(); JS end end |
#sileo_toaster(position: nil, offset: nil, options: {}, **data_options) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/sileo/helper.rb', line 7 def sileo_toaster(position: nil, offset: nil, options: {}, **) config = Sileo.configuration resolved_position = normalize_sileo_position(position || config.default_position) resolved_offset = normalize_sileo_offset(offset || config.default_offset) initial_toasts = Array(flash[:sileo_notifications]) flash[:sileo_notifications] = [] content_tag( :div, nil, data: { controller: "sileo--toaster", "sileo--toaster-position-value": resolved_position, "sileo--toaster-offset-value": JSON.generate(resolved_offset), "sileo--toaster-initial-value": JSON.generate(initial_toasts), "sileo--toaster-options-value": JSON.generate(), **.transform_keys { |key| "sileo--toaster-#{key.to_s.tr('_', '-')}" } }, aria: { live: "polite", atomic: "true" } ) end |