2024-02-09 15:29:31 +00:00
|
|
|
module FormsHelper
|
2024-04-20 14:07:06 +02:00
|
|
|
def form_field_tag(options = {}, &block)
|
|
|
|
options[:class] = [ "form-field", options[:class] ].compact.join(" ")
|
|
|
|
tag.div **options, &block
|
2024-02-09 15:29:31 +00:00
|
|
|
end
|
2024-04-16 12:44:31 -06:00
|
|
|
|
|
|
|
def radio_tab_tag(form:, name:, value:, label:, icon:, checked: false, disabled: false)
|
|
|
|
form.label name, for: form.field_id(name, value), class: "group has-[:disabled]:cursor-not-allowed" do
|
|
|
|
concat radio_tab_contents(label:, icon:)
|
|
|
|
concat form.radio_button(name, value, checked:, disabled:, class: "hidden")
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2024-07-01 10:49:43 -04:00
|
|
|
def selectable_categories
|
|
|
|
Current.family.categories.alphabetically
|
|
|
|
end
|
|
|
|
|
|
|
|
def selectable_merchants
|
|
|
|
Current.family.merchants.alphabetically
|
|
|
|
end
|
|
|
|
|
|
|
|
def selectable_accounts
|
|
|
|
Current.family.accounts.alphabetically
|
|
|
|
end
|
|
|
|
|
|
|
|
def selectable_tags
|
|
|
|
Current.family.tags.alphabetically.pluck(:name, :id)
|
|
|
|
end
|
|
|
|
|
2024-04-16 12:44:31 -06:00
|
|
|
private
|
|
|
|
def radio_tab_contents(label:, icon:)
|
|
|
|
tag.div(class: "flex px-4 py-1 rounded-lg items-center space-x-2 justify-center text-gray-400 group-has-[:checked]:bg-white group-has-[:checked]:text-gray-800 group-has-[:checked]:shadow-sm") do
|
|
|
|
concat lucide_icon(icon, class: "w-5 h-5")
|
|
|
|
concat tag.span(label, class: "group-has-[:checked]:font-semibold")
|
|
|
|
end
|
|
|
|
end
|
2024-02-09 15:29:31 +00:00
|
|
|
end
|