Our original Web Component library.
Go to file
Daniel Freedman dca0dda6c1 Update to gulp-eslint v2
Also update del and lazypipe modules
2016-02-16 10:30:20 -08:00
explainer Fixes https://github.com/Polymer/polymer/issues/1241 2015-03-04 21:03:00 -08:00
src Merge branch 'master' into nazar-pc-fix-for-2348 2016-02-12 19:29:19 -08:00
test Merge branch 'master' into nazar-pc-fix-for-2348 2016-02-12 19:29:19 -08:00
.eslintignore Lint the tests 2016-02-12 12:25:01 -08:00
.eslintrc.json Update to gulp-eslint v2 2016-02-16 10:30:20 -08:00
.gitignore Refactor build process 2015-05-25 14:30:59 -07:00
.travis.yml [ci skip] move linting into before_script stage 2016-02-11 12:38:48 -08:00
bower.json prepare v1.2.4 2016-01-27 14:09:12 -08:00
CHANGELOG.md [ci skip] update CHANGELOG 2016-01-27 14:14:02 -08:00
CONTRIBUTING.md Fix Formatting 2015-11-08 00:42:19 +05:30
gen-changelog.sh Update Changelog 2015-08-20 11:47:26 -07:00
gulpfile.js Update to gulp-eslint v2 2016-02-16 10:30:20 -08:00
index.html Update index.html 2015-07-13 14:44:49 +08:00
LICENSE.txt Add audit task 2015-05-14 11:30:46 -07:00
package.json Update to gulp-eslint v2 2016-02-16 10:30:20 -08:00
polymer-micro.html Fixes #3108. Moves debounce functionality from polymer-micro to polymer-mini. The functionality belongs at the mini tier and was never actually functional in micro. 2015-11-30 14:29:34 -08:00
polymer-mini.html Fixes #3108. Moves debounce functionality from polymer-micro to polymer-mini. The functionality belongs at the mini tier and was never actually functional in micro. 2015-11-30 14:29:34 -08:00
polymer.html Minor factoring; ensure base properties set on instance. 2015-11-20 14:52:13 -08:00
PRIMER.md Update PRIMER.md 2015-12-17 15:32:32 +01:00
README.md Remove undesired full-stop from outputs 2015-11-08 01:05:28 +05:30
wct.conf.json Fix the config 2015-04-30 23:22:23 -07:00

Polymer

Build Status

Polymer lets you build encapsulated, re-usable elements that work just like HTML elements, to use in building web applications.

<!-- Polyfill Web Components for older browsers -->
<script src="webcomponentsjs/webcomponents-lite.min.js"></script>

<!-- Import element -->
<link rel="import" href="google-map.html">

<!-- Use element -->
<google-map latitude="37.790" longitude="-122.390"></google-map>

Getting Started

Check out polymer-project.org for all of the library documentation, including getting started guides, tutorials, developer reference, and more.

Or if you'd just like to download the library, check out our releases page.

Polymer in 1 Minute

The Polymer library is a lightweight sugaring layer on top of the web components API's to help in building your own web components. It adds convenient features to make it easy to build complex elements:

Create and register a custom element

/**
 * A not-very-useful inline element
 */
Polymer({
    is: 'my-element'
});
<!-- use the element -->
<my-element></my-element>

Add markup to your element

<!-- define the markup that your element will use -->
<dom-module id="my-simple-namecard">
  <template>
    <div>
      Hi! My name is <span>Jane</span>
    </div>
  </template>

  <script>
    Polymer({
        is: 'my-simple-namecard'
    });
  </script>
</dom-module>

Configure properties on your element...

// Create an element that takes a property
Polymer({
    is: 'my-property-namecard',
    properties: {
      myName: {
        type: String
      }
    },
    ready: function() {
      this.textContent = 'Hi! My name is ' + this.myName;
    }
});

...and have them set using declarative attributes

<!-- using the element -->
<my-property-namecard my-name="Jim"></my-property-namecard>

Hi! My name is Jim

Bind data into your element using the familiar mustache-syntax

<!-- define markup with bindings -->
<dom-module id="my-bound-namecard">
  <template>
    <div>
      Hi! My name is <span>{{myName}}</span>
    </div>
  </template>

  <script>
    Polymer({
      is: 'my-bound-namecard',
      properties: {
        myName: {
          type: String
        }
      }
    });
  </script>
</dom-module>
<!-- using the element -->
<my-bound-namecard my-name="Josh"></my-bound-namecard>

Hi! My name is Josh

Style the internals of your element, without the style leaking out

<!-- add style to your element -->
<dom-module id="my-styled-namecard">
  <template>
    <style>
      /* This would be crazy in non webcomponents. */
      span {
        font-weight: bold;
      }
    </style>

    <div>
      Hi! My name is <span>{{myName}}</span>
    </div>
  </template>

  <script>
    Polymer({
      is: 'my-styled-namecard',
      properties: {
        myName: {
          type: String
        }
      }
    });
  </script>
</dom-module>
<!-- using the element -->
<my-styled-namecard my-name="Jesse"></my-styled-namecard>

Hi! My name is Jesse

and so much more!

Web components are an incredibly powerful new set of primitives baked into the web platform, and open up a whole new world of possibility when it comes to componentizing front-end code and easily creating powerful, immersive, app-like experiences on the web.

By being based on Web Components, elements built with Polymer are:

  • Built from the platform up
  • Self-contained
  • Don't require an overarching framework - are interoperable across frameworks
  • Re-usable

Contributing

The Polymer team loves contributions from the community! Take a look at our contributing guide for more information on how to contribute.

Communicating with the Polymer team

Beyond Github, we try to have a variety of different lines of communication available:

License

The Polymer library uses a BSD-like license available here