Blame view

bower_components/iron-selector/iron-selection.html 3.2 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
  
  <!--
  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">
  
  <script>
  
    /**
     * @param {!Function} selectCallback
     * @constructor
     */
    Polymer.IronSelection = function(selectCallback) {
      this.selection = [];
      this.selectCallback = selectCallback;
    };
  
    Polymer.IronSelection.prototype = {
  
      /**
       * Retrieves the selected item(s).
       *
       * @method get
       * @returns Returns the selected item(s). If the multi property is true,
       * `get` will return an array, otherwise it will return
       * the selected item or undefined if there is no selection.
       */
      get: function() {
e619a3b0   Luigi Serra   Controllet cross ...
35
        return this.multi ? this.selection.slice() : this.selection[0];
73bcce88   luigser   COMPONENTS
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
      },
  
      /**
       * Clears all the selection except the ones indicated.
       *
       * @method clear
       * @param {Array} excludes items to be excluded.
       */
      clear: function(excludes) {
        this.selection.slice().forEach(function(item) {
          if (!excludes || excludes.indexOf(item) < 0) {
            this.setItemSelected(item, false);
          }
        }, this);
      },
  
      /**
       * Indicates if a given item is selected.
       *
       * @method isSelected
       * @param {*} item The item whose selection state should be checked.
       * @returns Returns true if `item` is selected.
       */
      isSelected: function(item) {
        return this.selection.indexOf(item) >= 0;
      },
  
      /**
       * Sets the selection state for a given item to either selected or deselected.
       *
       * @method setItemSelected
       * @param {*} item The item to select.
       * @param {boolean} isSelected True for selected, false for deselected.
       */
      setItemSelected: function(item, isSelected) {
        if (item != null) {
          if (isSelected) {
            this.selection.push(item);
          } else {
            var i = this.selection.indexOf(item);
            if (i >= 0) {
              this.selection.splice(i, 1);
            }
          }
          if (this.selectCallback) {
            this.selectCallback(item, isSelected);
          }
        }
      },
  
      /**
       * Sets the selection state for a given item. If the `multi` property
       * is true, then the selected state of `item` will be toggled; otherwise
       * the `item` will be selected.
       *
       * @method select
       * @param {*} item The item to select.
       */
      select: function(item) {
        if (this.multi) {
          this.toggle(item);
        } else if (this.get() !== item) {
          this.setItemSelected(this.get(), false);
          this.setItemSelected(item, true);
        }
      },
  
      /**
       * Toggles the selection state for `item`.
       *
       * @method toggle
       * @param {*} item The item to toggle.
       */
      toggle: function(item) {
        this.setItemSelected(item, !this.isSelected(item));
      }
  
    };
  
  </script>