Module: Browser::DOM::Element::Custom::ClassMethods

Defined in:
opal/browser/dom/element/custom.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#custom_classObject (readonly)

Returns the value of attribute custom_class.



126
127
128
# File 'opal/browser/dom/element/custom.rb', line 126

def custom_class
  @custom_class
end

#observed_attributesObject

This must be defined before def_custom is called!



124
125
126
# File 'opal/browser/dom/element/custom.rb', line 124

def observed_attributes
  @observed_attributes
end

Instance Method Details

#def_custom(tag_name, base_class: nil, extends: nil) ⇒ Object

The polyfilled implementation. Define the selector and then try to upgrade the elements that are already in the document.



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'opal/browser/dom/element/custom.rb', line 59

def def_custom(tag_name, base_class: nil, extends: nil)
  if `base_class !== nil`
  elsif self.superclass == Custom
    base_class = `HTMLElement`
  elsif self.ancestors.include? Custom
    base_class = `#{self.superclass}.custom_class`
  else
    raise ArgumentError, "You must define base_class"
  end

  @custom_class = `make_custom_class(self, #{base_class})`
  @observed_attributes ||= []

  def_selector tag_name

  %x{
    if ($truthy(#{extends})) customElements.define(#{tag_name}, #{@custom_class}, {extends: #{extends}});
    else customElements.define(#{tag_name}, #{@custom_class});
  }
end