diff options
Diffstat (limited to 'chromium/third_party/catapult/third_party/polymer2/bower_components/iron-validatable-behavior/iron-validatable-behavior.html')
-rw-r--r-- | chromium/third_party/catapult/third_party/polymer2/bower_components/iron-validatable-behavior/iron-validatable-behavior.html | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/iron-validatable-behavior/iron-validatable-behavior.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/iron-validatable-behavior/iron-validatable-behavior.html new file mode 100644 index 00000000000..646079ffae0 --- /dev/null +++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/iron-validatable-behavior/iron-validatable-behavior.html @@ -0,0 +1,131 @@ +<!-- +@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-meta/iron-meta.html"> + +<script> + /** + * Singleton IronMeta instance. + */ + Polymer.IronValidatableBehaviorMeta = null; + + /** + * `Use Polymer.IronValidatableBehavior` to implement an element that validates user input. + * Use the related `Polymer.IronValidatorBehavior` to add custom validation logic to an iron-input. + * + * By default, an `<iron-form>` element validates its fields when the user presses the submit button. + * To validate a form imperatively, call the form's `validate()` method, which in turn will + * call `validate()` on all its children. By using `Polymer.IronValidatableBehavior`, your + * custom element will get a public `validate()`, which + * will return the validity of the element, and a corresponding `invalid` attribute, + * which can be used for styling. + * + * To implement the custom validation logic of your element, you must override + * the protected `_getValidity()` method of this behaviour, rather than `validate()`. + * See [this](https://github.com/PolymerElements/iron-form/blob/master/demo/simple-element.html) + * for an example. + * + * ### Accessibility + * + * Changing the `invalid` property, either manually or by calling `validate()` will update the + * `aria-invalid` attribute. + * + * @demo demo/index.html + * @polymerBehavior + */ + Polymer.IronValidatableBehavior = { + + properties: { + /** + * Name of the validator to use. + */ + validator: { + type: String + }, + + /** + * True if the last call to `validate` is invalid. + */ + invalid: { + notify: true, + reflectToAttribute: true, + type: Boolean, + value: false, + observer: '_invalidChanged' + }, + }, + + registered: function() { + Polymer.IronValidatableBehaviorMeta = new Polymer.IronMeta({type: 'validator'}); + }, + + _invalidChanged: function() { + if (this.invalid) { + this.setAttribute('aria-invalid', 'true'); + } else { + this.removeAttribute('aria-invalid'); + } + }, + + /* Recompute this every time it's needed, because we don't know if the + * underlying IronValidatableBehaviorMeta has changed. */ + get _validator() { + return Polymer.IronValidatableBehaviorMeta && + Polymer.IronValidatableBehaviorMeta.byKey(this.validator); + }, + + /** + * @return {boolean} True if the validator `validator` exists. + */ + hasValidator: function() { + return this._validator != null; + }, + + /** + * Returns true if the `value` is valid, and updates `invalid`. If you want + * your element to have custom validation logic, do not override this method; + * override `_getValidity(value)` instead. + + * @param {Object} value Deprecated: The value to be validated. By default, + * it is passed to the validator's `validate()` function, if a validator is set. + * If this argument is not specified, then the element's `value` property + * is used, if it exists. + * @return {boolean} True if `value` is valid. + */ + validate: function(value) { + // If this is an element that also has a value property, and there was + // no explicit value argument passed, use the element's property instead. + if (value === undefined && this.value !== undefined) + this.invalid = !this._getValidity(this.value); + else + this.invalid = !this._getValidity(value); + return !this.invalid; + }, + + /** + * Returns true if `value` is valid. By default, it is passed + * to the validator's `validate()` function, if a validator is set. You + * should override this method if you want to implement custom validity + * logic for your element. + * + * @param {Object} value The value to be validated. + * @return {boolean} True if `value` is valid. + */ + + _getValidity: function(value) { + if (this.hasValidator()) { + return this._validator.validate(value); + } + return true; + } + }; + +</script> |