Skip to content

Latest commit

 

History

History
75 lines (55 loc) · 1.79 KB

README.md

File metadata and controls

75 lines (55 loc) · 1.79 KB

gaia-component devDependency Status

A wrapper around document.registerElement() to define a custom-element with workarounds for gaps in the Gecko platform, plus some convenience methods.

Installation

$ bower install gaia-components/gaia-component

Usage

var MyComponent = component.register('my-component', {
  // extend component from the given prototype
  extends: HTMLButtonElement.prototype,

  created: function() {

    // Creates a shadow-root and
    // puts your template in it
    this.setupShadowRoot();
  },

  attributeChanged: function() {},
  attached: function() {},
  detached: function() {},

  template: `
    <button>I live in shadow-dom</button>
    <style>
      button { color: red }
    </style>
  `,

  // Some CSS doesn't work
  // in shadow-dom stylesheets,
  // this CSS gets put in the <head>
  globalCss: `
    @keyframes my-animation { ... }
    @font-face { ... }
  `,

  // Property descriptors that get defined
  // on the prototype and get called
  // when matching attributes change
  attrs: {
    customAttr: {
      get: function() { return this._customAttr; },
      set: function(value) { this._customAttr = value; }
    }
  }
});

var myComponent = new MyComponent();

myComponent.setAttribute('custom-attr', 'foo');
myComponent.customAttr; //=> 'foo';

Tests

  1. Ensure Firefox Nightly is installed on your machine.
  2. $ npm install
  3. $ npm test

If your would like tests to run on file change use:

$ npm run test-dev

Lint check

Run lint check with command:

$ npm run lint