Blame view

bower_components/iron-checked-element-behavior/iron-checked-element-behavior.html 3.12 KB
73bcce88   luigser   COMPONENTS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
  <!--
  @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-validatable-behavior/iron-validatable-behavior.html">
  <link rel="import" href="../iron-form-element-behavior/iron-form-element-behavior.html">
  
  <script>
  
    /**
     * Use `Polymer.IronCheckedElementBehavior` to implement a custom element
     * that has a `checked` property, which can be used for validation if the
     * element is also `required`. Element instances implementing this behavior
     * will also be registered for use in an `iron-form` element.
     *
     * @demo demo/index.html
     * @polymerBehavior Polymer.IronCheckedElementBehavior
     */
    Polymer.IronCheckedElementBehaviorImpl = {
  
      properties: {
        /**
         * Fired when the checked state changes.
         *
         * @event iron-change
         */
  
        /**
         * Gets or sets the state, `true` is checked and `false` is unchecked.
         */
        checked: {
          type: Boolean,
          value: false,
          reflectToAttribute: true,
          notify: true,
          observer: '_checkedChanged'
        },
  
        /**
         * If true, the button toggles the active state with each tap or press
         * of the spacebar.
         */
        toggles: {
          type: Boolean,
          value: true,
          reflectToAttribute: true
        },
  
        /* Overriden from Polymer.IronFormElementBehavior */
        value: {
          type: String,
c5169e0e   Renato De Donato   a new hope
59
          value: ''
73bcce88   luigser   COMPONENTS
60
61
62
63
64
65
66
        }
      },
  
      observers: [
        '_requiredChanged(required)'
      ],
  
73bcce88   luigser   COMPONENTS
67
68
      /**
       * Returns false if the element is required and not checked, and true otherwise.
73bcce88   luigser   COMPONENTS
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
       * @return {boolean} true if `required` is false, or if `required` and `checked` are both true.
       */
      _getValidity: function(_value) {
        return this.disabled || !this.required || (this.required && this.checked);
      },
  
      /**
       * Update the aria-required label when `required` is changed.
       */
      _requiredChanged: function() {
        if (this.required) {
          this.setAttribute('aria-required', 'true');
        } else {
          this.removeAttribute('aria-required');
        }
      },
  
      /**
c5169e0e   Renato De Donato   a new hope
87
       * Update the element's value when checked.
73bcce88   luigser   COMPONENTS
88
89
90
       */
      _checkedChanged: function() {
        this.active = this.checked;
c5169e0e   Renato De Donato   a new hope
91
92
93
94
        // Unless the user has specified a value, a checked element has the
        // default value "on" when checked.
        if (this.value === '')
          this.value = this.checked ? 'on' : '';
73bcce88   luigser   COMPONENTS
95
        this.fire('iron-change');
73bcce88   luigser   COMPONENTS
96
97
98
99
100
101
102
103
104
105
106
      }
    };
  
    /** @polymerBehavior Polymer.IronCheckedElementBehavior */
    Polymer.IronCheckedElementBehavior = [
      Polymer.IronFormElementBehavior,
      Polymer.IronValidatableBehavior,
      Polymer.IronCheckedElementBehaviorImpl
    ];
  
  </script>