Sha256: da6475a8d3b860c4a1f255e0c82ba50fc711ba9546b73cc1959acd77df1b7ae7
Contents?: true
Size: 1.21 KB
Versions: 5
Compression:
Stored size: 1.21 KB
Contents
# frozen_string_literal: true module Bs5 class AccordionComponent < ViewComponent::Base include ComponentsHelper include ViewComponent::Slotable with_slot :item, collection: true, class_name: 'Item' def initialize(flush: false) @flush = flush end def flush? @flush end def id "accordion-#{object_id}" end def component_class class_names = ['accordion'] class_names << %w[accordion-flush] if flush? class_names.join(' ') end class Item < ViewComponent::Slot attr_reader :title def initialize(title:, collapsed: true) @title = title @collapsed = collapsed end def id object_id end def header_id "header-#{id}" end def collapse_id "collapse-#{id}" end def collapsed? @collapsed end def button_class class_names = ['accordion-button'] class_names << %w[collapsed] if collapsed? class_names.join(' ') end def collapse_class class_names = %w[accordion-collapse collapse] class_names << %w[show] unless collapsed? class_names.join(' ') end end end end
Version data entries
5 entries across 5 versions & 1 rubygems