Module: Browser::DOM::Element::Custom::ClassMethods
- Defined in:
- opal/browser/dom/element/custom.rb
Instance Attribute Summary collapse
-
#custom_class ⇒ Object
readonly
Returns the value of attribute custom_class.
-
#observed_attributes ⇒ Object
This must be defined before def_custom is called!.
Instance Method Summary collapse
-
#def_custom(tag_name, base_class: nil, extends: nil) ⇒ Object
The polyfilled implementation.
Instance Attribute Details
#custom_class ⇒ Object (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_attributes ⇒ Object
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 |