Sha256: dffb2f0c1c44499378374c0c0c2a61c63acb018b48f76b77389ba0113261e31c
Contents?: true
Size: 1.27 KB
Versions: 1
Compression:
Stored size: 1.27 KB
Contents
require "view_component" require "dry-initializer" module Plutonium::Ui class Base < ViewComponent::Base extend Dry::Initializer include Plutonium::Helpers::ComponentHelper delegate_missing_to :helpers option :id, optional: true option :data, default: proc { {} } option :classname, optional: true option :tooltip, optional: true option :attributes, default: proc { {} } private def base_classname = nil def merged_classname [base_classname, classname].compact.join.presence end def component_attributes {id:, data:, class: merged_classname, title: tooltip}.merge(attributes).compact end def render_component_attributes attributes_to_string(component_attributes).html_safe end def render_icon(icon) Plutonium::Icons.render(icon).html_safe end def attributes_to_string(attributes, prefix = nil) attributes.map do |key, value| if value.is_a?(Hash) attributes_to_string(value, "#{prefix ? "#{prefix}-" : ""}#{key}") else "#{prefix ? "#{prefix}-" : ""}#{key}=\"#{value}\"" end end.join(" ") end end end # Require components Dir.glob(File.expand_path("**/*.rb", __dir__)) { |component| load component unless component == __FILE__ }
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
plutonium-0.8.0 | app/views/components/base.rb |