a11yist/app/helpers/application_helper.rb

69 lines
2.1 KiB
Ruby
Raw Permalink Normal View History

2024-07-15 14:31:54 +02:00
# frozen_string_literal: true
module ApplicationHelper
2024-07-21 00:33:38 +02:00
include Pagy::Frontend
delegate :filter_params, to: :controller
2024-09-05 22:54:38 +02:00
def multilang_form_field(form, attribute, as: :text_field)
2024-09-11 20:44:33 +02:00
return form.send(as, "#{attribute}_de")
2024-09-05 22:54:38 +02:00
col_width = as == :rich_text_area ? 12 : 12 / I18n.available_locales.count
tag.div(class: "row") do
fields = I18n.available_locales.map { _1.to_s.split("-").first }.map do |lang|
tag.div(class: "col-lg-#{col_width}") do
form.send(as, "#{attribute}_#{lang}")
end
end
safe_join(fields)
end
end
2024-09-11 22:04:55 +02:00
def safe_display(value, &block)
return if value.blank?
2024-09-11 22:04:55 +02:00
yield(value)
end
2024-11-03 21:58:25 +01:00
def current_page_displayed(page)
@current_page&.id == page.id ? "open" : nil
end
2024-11-12 23:55:00 +01:00
def turbo_stream_toast(content, alert)
turbo_stream.append("toasts", partial: "layouts/toast", locals: { content:, alert: })
end
2024-11-17 13:44:51 +01:00
def dropdown_menu(items, klass: "")
tag.details(class: "details-dropdown #{klass}", data: { controller: "dropdown-menu" }) do
2024-11-17 13:44:51 +01:00
tag.summary do
tag.div(class: "details-dropdown-trigger") do
tag.div(tag.i(class: "bi bi-three-dots"), class: "btn btn-outline-body")
2024-11-17 13:44:51 +01:00
end
end +
tag.div(class: "details-dropdown-content bg-secondary") do
2024-11-17 19:00:52 +01:00
tag.div(class: "list-group") do
2024-11-17 13:44:51 +01:00
safe_join(items.map do |item|
2024-11-17 19:00:52 +01:00
c = "list-group-item list-group-item-action #{ item[:color] ? " list-group-item-#{item[:color]}" : "list-group-item-secondary"}"
text = item[:icon] ? tag.i(class: "bi bi-#{item[:icon]} me-2") + " #{item[:text]}".html_safe : item[:text]
case item[:method]
when nil, :get
link_to(text, item[:href], class: "#{c}", data: { turbo_frame: item[:turbo_frame], action: item[:action] })
2024-11-17 19:00:52 +01:00
else
button_to(text,
item[:href],
method: item[:method],
class: "#{c}",
data: { turbo_confirm: item[:confirm] })
2024-11-17 13:44:51 +01:00
end
end)
end
end
end
end
def modal?
turbo_frame_request_id == "modal"
end
end