class Maglev::Uikit::Form::LinkComponent
def self.default_link_type_klass
def self.default_link_type_klass Maglev::Uikit::Form::Link::UrlLinkComponent end
def self.link_type_component(input_name:, value:, path:)
def self.link_type_component(input_name:, value:, path:) # Default to url if the link type is not found (shouldn't happen) klass = link_type_klasses_map.fetch(value[:link_type]&.to_sym, default_link_type_klass) return unless klass klass.new(input_name: input_name, link: value, path: path) end
def self.link_type_klasses_map
def self.link_type_klasses_map { email: Maglev::Uikit::Form::Link::EmailLinkComponent, url: Maglev::Uikit::Form::Link::UrlLinkComponent, page: Maglev::Uikit::Form::Link::PageLinkComponent, static_page: Maglev::Uikit::Form::Link::StaticPageLinkComponent } end
def dom_id
def dom_id name.to_s.parameterize.underscore end
def error
def error options[:error] end
def initialize(name:, path:, options: {})
def initialize(name:, path:, options: {}) @name = name @options = options @path = path.gsub(':id', dom_id) end
def label
def label options[:label] end
def link_text
def link_text { name: "#{name}[text]", value: value[:text], placeholder: t('maglev.uikit.form.link.text_placeholder') }.merge(options[:link_text] || {}) end
def link_type_component
def link_type_component self.class.link_type_component(input_name: name, value: value, path: path) end
def placeholder
def placeholder options[:placeholder].presence || t('maglev.uikit.form.link.placeholder') end
def turbo_frame_id
def turbo_frame_id "#{dom_id}-frame" end
def value
def value (options[:value] || {}).with_indifferent_access end
def value?
def value? value&.compact_blank.present? end
def with_text?
def with_text? !!options[:with_text] end