Sha256: 03d69dfaee97a87db13203c0fdc1a7ebf8547e25d6c9981663b3f1b265747930

Contents?: true

Size: 1.5 KB

Versions: 133

Compression:

Stored size: 1.5 KB

Contents

import ElementObserver from './element_observer.js'

export default class PbEnhancedElement {
  static get elements() {
    return this._elements = (this._elements || new Map)
  }

  static get observer() {
    return this._observer = (this._observer || new ElementObserver(this))
  }

  static get selector() {
    // eslint-disable-next-line no-console
    console.warn('Define a static property for selector or redefine the matches function in a subclass.', this)
    return null
  }

  static matches(node) {
    if (!this.selector) return []

    const matches = []
    if (node.nodeType === Node.ELEMENT_NODE && node.matches(this.selector)) matches.push(node)
    matches.push(...node.querySelectorAll(this.selector))

    return (matches)
  }

  static addMatch(element) {
    if (element._pbEnhanced || this.elements.has(element)) return

    const enhansedElement = new this(element)
    enhansedElement.connect()
    this.elements.set(element, enhansedElement)
    element._pbEnhanced = enhansedElement
  }

  static removeMatch(element) {
    if (!this.elements.has(element)) return

    const enhansedElement = this.elements.get(element)
    enhansedElement.disconnect()
    this.elements.delete(element)
  }

  static start() {
    this.observer.start()
  }

  static stop() {
    this.mutationObserver.stop()
  }

  constructor(element) {
    this.element = element
  }

  connect() {
    // eslint-disable-next-line no-console
    console.warn('Redefine the connect function in a subclass.', this)
  }

  disconnect() { }
}

Version data entries

133 entries across 133 versions & 1 rubygems

Version Path
playbook_ui-14.5.0.pre.alpha.javascriptassets3939 app/pb_kits/playbook/pb_enhanced_element/index.js
playbook_ui-14.5.0.pre.alpha.javascriptassets3932 app/pb_kits/playbook/pb_enhanced_element/index.js
playbook_ui-11.12.1.pre.alpha.charts1 app/pb_kits/playbook/pb_enhanced_element/index.js
playbook_ui-11.12.1.pre.alpha.passphrase1 app/pb_kits/playbook/pb_enhanced_element/index.js
playbook_ui-11.12.1 app/pb_kits/playbook/pb_enhanced_element/index.js
playbook_ui-11.13.0.pre.alpha.fileupload1 app/pb_kits/playbook/pb_enhanced_element/index.js
playbook_ui-11.12.0 app/pb_kits/playbook/pb_enhanced_element/index.js
playbook_ui-11.11.0.pre.alpha.paginate2 app/pb_kits/playbook/pb_enhanced_element/index.js
playbook_ui-11.11.0.pre.alpha.dialog2 app/pb_kits/playbook/pb_enhanced_element/index.js
playbook_ui-11.11.0.pre.alpha.paginate1 app/pb_kits/playbook/pb_enhanced_element/index.js
playbook_ui-11.11.0.pre.alpha.renderer1 app/pb_kits/playbook/pb_enhanced_element/index.js
playbook_ui-11.11.0.pre.alpha.dialog1 app/pb_kits/playbook/pb_enhanced_element/index.js
playbook_ui-11.11.0 app/pb_kits/playbook/pb_enhanced_element/index.js
playbook_ui-11.10.0.pre.alpha.pre.bold1 app/pb_kits/playbook/pb_enhanced_element/index.js
playbook_ui-11.10.0.pre.alpha.pagination1 app/pb_kits/playbook/pb_enhanced_element/index.js
playbook_ui-11.10.0 app/pb_kits/playbook/pb_enhanced_element/index.js
playbook_ui-11.9.0 app/pb_kits/playbook/pb_enhanced_element/index.js
playbook_ui-11.9.0.pre.alpha.fileupload1 app/pb_kits/playbook/pb_enhanced_element/index.js
playbook_ui-11.8.1 app/pb_kits/playbook/pb_enhanced_element/index.js
playbook_ui-11.8.0 app/pb_kits/playbook/pb_enhanced_element/index.js