class StimulusReflex::Element

Attributes

attributes[R]
data_attributes[R]

Public Class Methods

new(data = {}) click to toggle source
Calls superclass method
# File lib/stimulus_reflex/element.rb, line 6
def initialize(data = {})
  @attributes = HashWithIndifferentAccess.new(data["attrs"] || {})
  @data_attributes = HashWithIndifferentAccess.new(data["dataset"] || {})
  all_attributes = @attributes.merge(@data_attributes)
  super all_attributes.merge(all_attributes.transform_keys(&:underscore))
  @data_attributes.transform_keys! { |key| key.delete_prefix "data-" }
end

Public Instance Methods

dataset() click to toggle source
# File lib/stimulus_reflex/element.rb, line 22
def dataset
  @dataset ||= OpenStruct.new(data_attributes.merge(data_attributes.transform_keys(&:underscore)))
end
signed() click to toggle source
# File lib/stimulus_reflex/element.rb, line 14
def signed
  @signed ||= ->(accessor) { GlobalID::Locator.locate_signed(dataset[accessor]) }
end
unsigned() click to toggle source
# File lib/stimulus_reflex/element.rb, line 18
def unsigned
  @unsigned ||= ->(accessor) { GlobalID::Locator.locate(dataset[accessor]) }
end