Sha256: f018fb3d300ea9f586f05fff2201793ec50981c481423f7212b3a1fac188e31c
Contents?: true
Size: 1.18 KB
Versions: 11
Compression:
Stored size: 1.18 KB
Contents
# frozen_string_literal: true module Bs5 class AccordionComponent < ViewComponent::Base 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
11 entries across 11 versions & 1 rubygems