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

Unified Diff: polymer_1.0.4/bower_components/iron-form/iron-form.html

Issue 1205703007: Add polymer 1.0 to npm_modules (Closed) Base URL: https://chromium.googlesource.com/infra/third_party/npm_modules.git@master
Patch Set: Renamed folder to 1.0.4 Created 5 years, 6 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: polymer_1.0.4/bower_components/iron-form/iron-form.html
diff --git a/polymer_1.0.4/bower_components/iron-form/iron-form.html b/polymer_1.0.4/bower_components/iron-form/iron-form.html
new file mode 100644
index 0000000000000000000000000000000000000000..1bd36e1f972e38ba2bfbb33df7a3ecad6b193d4b
--- /dev/null
+++ b/polymer_1.0.4/bower_components/iron-form/iron-form.html
@@ -0,0 +1,243 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<link rel="import" href="../polymer/polymer.html">
+<link rel="import" href="../iron-ajax/iron-ajax.html">
+
+<script>
+/*
+``<iron-form>` is an HTML `<form>` element that can validate and submit any custom
+elements that implement `Polymer.IronFormElementBehavior`, as well as any
+native HTML elements.
+
+It supports both `get` and `post` methods, and uses an `iron-ajax` element to
+submit the form data to the action URL.
+
+ Example:
+
+ <form is="iron-form" id="form" method="post" action="/form/handler">
+ <paper-input name="name" label="name"></paper-input>
+ <input name="address">
+ ...
+ </form>
+
+By default, a native `<button>` element will submit this form. However, if you
+want to submit it from a custom element's click handler, you need to explicitly
+call the form's `submit` method.
+
+ Example:
+
+ <paper-button raised onclick="submitForm()">Submit</paper-button>
+
+ function submitForm() {
+ document.getElementById('form').submit();
+ }
+
+@demo demo/index.html
+*/
+
+ Polymer({
+
+ is: 'iron-form',
+
+ extends: 'form',
+
+ properties: {
+ /**
+ * Content type to use when sending data.
+ */
+ contentType: {
+ type: String,
+ value: "application/x-www-form-urlencoded"
+ }
+ },
+ /**
+ * Fired if the form cannot be submitted because it's invalid.
+ *
+ * @event iron-form-invalid
+ */
+
+ /**
+ * Fired after the form is submitted.
+ *
+ * @event iron-form-submit
+ */
+
+ /**
+ * Fired after the form is submitted and a response is received.
+ *
+ * @event iron-form-response
+ */
+
+ /**
+ * Fired after the form is submitted and an error is received.
+ *
+ * @event iron-form-error
+ */
+ listeners: {
+ 'iron-form-element-register': '_registerElement',
+ 'submit': '_onSubmit'
+ },
+
+ ready: function() {
+ // Object that handles the ajax form submission request.
+ this._requestBot = document.createElement('iron-ajax');
+ this._requestBot.addEventListener('response', this._handleFormResponse.bind(this));
+ this._requestBot.addEventListener('error', this._handleFormError.bind(this));
+
+ // Holds all the custom elements registered with this form.
+ this._customElements = [];
+ },
+
+ /**
+ * Called to submit the form.
+ */
+ submit: function() {
+ if (!this.noValidate && !this._validate()) {
+
+ // In order to trigger the native browser invalid-form UI, we need
+ // to do perform a fake form submit.
+ this._doFakeSubmitForValidation();
+ this.fire('iron-form-invalid');
+ return;
+ }
+
+ var json = this.serialize();
+
+ this._requestBot.url = this.action;
+ this._requestBot.method = this.method;
+ this._requestBot.contentType = this.contentType;
+
+ if (this.method.toUpperCase() == 'POST') {
+ this._requestBot.body = JSON.stringify(json);
+ } else {
+ this._requestBot.params = json;
+ }
+
+ this._requestBot.generateRequest();
+ this.fire('iron-form-submit', json);
+ },
+
+ _onSubmit: function(event) {
+ this.submit();
+
+ // Don't perform a page refresh.
+ if (event) {
+ event.preventDefault();
+ }
+
+ return false;
+ },
+
+ /**
+ * Returns a json object containing name/value pairs for all the registered
+ * custom components and native elements of the form. If there are elements
+ * with duplicate names, then their values will get aggregated into an
+ * array of values.
+ */
+ serialize: function() {
+ var json = {};
+
+ function addSerializedElement(el) {
+ // If the name doesn't exist, add it. Otherwise, serialize it to
+ // an array,
+ if (!json[el.name]) {
+ json[el.name] = el.value;
+ } else {
+ if (!Array.isArray(json[el.name])) {
+ json[el.name] = [json[el.name]];
+ }
+ json[el.name].push(el.value);
+ }
+ }
+
+ // Go through all of the registered custom components.
+ for (var el, i = 0; el = this._customElements[i], i < this._customElements.length; i++) {
+ if (el.name) {
+ addSerializedElement(el);
+ }
+ }
+
+ // Also go through the form's native elements.
+ for (var el, i = 0; el = this.elements[i], i < this.elements.length; i++) {
+ // Checkboxes and radio buttons should only use their value if they're checked.
+ // Also, custom elements that extend native elements (like an
+ // `<input is="fancy-input">`) will appear in both lists. Since they
+ // were already added as a custom element, they don't need
+ // to be re-added.
+ if (!el.name || !this._useValue(el) ||
+ (el.hasAttribute('is') && json[el.name])) {
+ continue;
+ }
+ addSerializedElement(el);
+ }
+
+ return json;
+ },
+
+ _handleFormResponse: function (event) {
+ this.fire('iron-form-response', event.detail.response);
+ },
+
+ _handleFormError: function (event) {
+ this.fire('iron-form-error', event.detail);
+ },
+
+ _registerElement: function(e) {
+ this._customElements.push(e.target);
+ },
+
+ _validate: function() {
+ var valid = true;
+
+ // Validate all the custom elements.
+ var validatable;
+ for (var el, i = 0; el = this._customElements[i], i < this._customElements.length; i++) {
+ if (el.required) {
+ validatable = /** @type {{validate: (function() : boolean)}} */ (el);
+ valid = validatable.validate() && valid;
+ }
+ }
+
+ // Validate the form's native elements.
+ for (var el, i = 0; el = this.elements[i], i < this.elements.length; i++) {
+ // Custom elements that extend a native element will also appear in
+ // this list, but they've already been validated.
+ if (!el.hasAttribute('is') && el.willValidate && el.checkValidity) {
+ valid = el.checkValidity() && valid;
+ }
+ }
+
+ return valid;
+ },
+
+ _useValue: function(el) {
+ // Checkboxes and radio buttons should only use their value if they're checked.
+ if (el.type !== 'checkbox' && el.type !== 'radio') {
+ return true;
+ } else {
+ return el.checked;
+ }
+ },
+
+ _doFakeSubmitForValidation: function() {
+ var fakeSubmit = document.createElement('input');
+ fakeSubmit.setAttribute('type', 'submit');
+ fakeSubmit.style.display = 'none';
+ this.appendChild(fakeSubmit);
+
+ fakeSubmit.click();
+
+ this.removeChild(fakeSubmit);
+ }
+
+ });
+
+</script>
« no previous file with comments | « polymer_1.0.4/bower_components/iron-form/index.html ('k') | polymer_1.0.4/bower_components/iron-form/test/basic.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698