Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(102)

Unified Diff: pkg/polymer/lib/elements/polymer-meta/polymer-meta.html

Issue 175443005: [polymer] import all elements (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: updated from bower Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/polymer/lib/elements/polymer-meta/polymer-meta.html
diff --git a/pkg/polymer/lib/elements/polymer-meta/polymer-meta.html b/pkg/polymer/lib/elements/polymer-meta/polymer-meta.html
new file mode 100644
index 0000000000000000000000000000000000000000..163a16f2fc5fa956f52b5a04e36f7eab2fb6e589
--- /dev/null
+++ b/pkg/polymer/lib/elements/polymer-meta/polymer-meta.html
@@ -0,0 +1,141 @@
+<!--
+Copyright 2013 The Polymer Authors. All rights reserved.
+Use of this source code is governed by a BSD-style
+license that can be found in the LICENSE file.
+-->
+<!--
+/**
+ * @module Polymer Elements
+ */
+/**
+ * The `polymer-meta` elements provides a method of constructing a
+ * self-organizing database. It is useful to collate element meta-data for
+ * things like catalogs and for sandbox.
+ *
+ * Example, an element folder has a `metadata.html` file in it, that contains a
+ * polymer-meta, something like this:
+ *
+ * <polymer-meta id="my-element">
+ * <property name="color" type="color"></property>
+ * </polymer-meta>
+ *
+ * An application can import as many of these files as it wants, and then use
+ * polymer-meta again to access the collected data.
+ *
+ * <script>
+ * var meta = document.createElement('polymer-meta');
+ * console.log(meta.list); // dump a list of all meta-data elements that have been created
+ * </script>
+ *
+ * Use `byId(id)` to retrive a specific polymer-meta.
+ *
+ * <script>
+ * var meta = document.createElement('polymer-meta');
+ * console.log(meta.byId('my-element'));
+ * </script>
+ *
+ * By default all meta-data are stored in a signle databse. If your meta-data
+ * have different types and want them to be stored separately, use `type` to
+ * differentiate them.
+ *
+ * @class polymer-meta
+ */
+-->
+<link rel="import" href="../polymer/polymer.html">
+
+<polymer-element name="polymer-meta" attributes="list label type">
+ <script>
+ (function() {
+ var SKIP_ID = 'meta';
+ var metaData = {}, metaArray = {};
+
+ Polymer('polymer-meta', {
+ alwaysPrepare: true,
+ /**
+ * The type of meta-data. All meta-data with the same type with be
+ * stored together.
+ *
+ * @attribute type
+ * @type string
+ * @default 'default'
+ */
+ type: 'default',
+ ready: function() {
+ this.idChanged();
+ },
+ get metaArray() {
+ var t = this.type;
+ if (!metaArray[t]) {
+ metaArray[t] = [];
+ }
+ return metaArray[t];
+ },
+ get metaData() {
+ var t = this.type;
+ if (!metaData[t]) {
+ metaData[t] = {};
+ }
+ return metaData[t];
+ },
+ idChanged: function(old) {
+ if (this.id && this.id !== SKIP_ID) {
+ this.unregister(this, old);
+ this.metaData[this.id] = this;
+ this.metaArray.push(this);
+ }
+ },
+ unregister: function(meta, id) {
+ delete this.metaData[id || meta.id];
+ var i = this.metaArray.indexOf(meta);
+ if (i >= 0) {
+ this.metaArray.splice(i, 1);
+ }
+ },
+ /**
+ * Returns a list of all meta-data elements with the same type.
+ *
+ * @attribute list
+ * @type array
+ * @default []
+ */
+ get list() {
+ return this.metaArray;
+ },
+ /**
+ * Returns the first `<template>` in the `<polymer-meta>` subtree. This
+ * is useful to store element example.
+ *
+ * <polymer-meta id="polymer-ui-toolbar" label="Polymer Toolbar">
+ * <template>
+ * <polymer-ui-toolbar theme="polymer-ui-light-theme">
+ * <polymer-ui-icon-button icon="menu"></polymer-ui-icon-button>
+ * <div flex>Title</div>
+ * <polymer-ui-icon-button icon="add"></polymer-ui-icon-button>
+ * </polymer-ui-toolbar>
+ * </template>
+ * </polymer-meta>
+ *
+ * @attribute archetype
+ * @type node
+ * @default null
+ */
+ get archetype() {
+ return this.querySelector('template');
+ },
+ /**
+ * Retrieves meta-data by ID.
+ *
+ * @method byId
+ * @param {String} id The ID of the meta-data to be returned.
+ * @returns Returns meta-data.
+ */
+ byId: function(id) {
+ return this.metaData[id];
+ },
+ get childMetas() {
+ return this.querySelectorAll(this.localName);
+ }
+ });
+ })();
+ </script>
+</polymer-element>
« no previous file with comments | « pkg/polymer/lib/elements/polymer-meta/index.html ('k') | pkg/polymer/lib/elements/polymer-mock-data/.bower.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698