| Index: third_party/polymer/v0_8/components-chromium/iron-selector/iron-multi-selectable-extracted.js
|
| diff --git a/third_party/polymer/v0_8/components-chromium/iron-selector/iron-multi-selectable-extracted.js b/third_party/polymer/v0_8/components-chromium/iron-selector/iron-multi-selectable-extracted.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..2aef4e49a34ad31cfab510ebea935f04badc3b62
|
| --- /dev/null
|
| +++ b/third_party/polymer/v0_8/components-chromium/iron-selector/iron-multi-selectable-extracted.js
|
| @@ -0,0 +1,114 @@
|
| +
|
| +
|
| + Polymer.IronMultiSelectableBehavior = [
|
| + Polymer.IronSelectableBehavior, {
|
| +
|
| + properties: {
|
| +
|
| + /**
|
| + * If true, multiple selections are allowed.
|
| + *
|
| + * @attribute multi
|
| + * @type Boolean
|
| + * @default false
|
| + */
|
| + multi: {
|
| + type: Boolean,
|
| + value: false,
|
| + observer: 'multiChanged'
|
| + },
|
| +
|
| + /**
|
| + * Gets or sets the selected elements. This is used instead of `selected` when `multi`
|
| + * is true.
|
| + *
|
| + * @attribute selectedValues
|
| + * @type Array
|
| + */
|
| + selectedValues: {
|
| + type: Array,
|
| + notify: true
|
| + },
|
| +
|
| + /**
|
| + * Returns an array of currently selected items.
|
| + *
|
| + * @attribute selectedItems
|
| + * @type Array
|
| + */
|
| + selectedItems: {
|
| + type: Array,
|
| + readOnly: true,
|
| + notify: true
|
| + },
|
| +
|
| + },
|
| +
|
| + observers: [
|
| + '_updateSelected(attrForSelected, selectedValues)'
|
| + ],
|
| +
|
| + /**
|
| + * Selects the given value. If the `multi` property is true, then the selected state of the
|
| + * `value` will be toggled; otherwise the `value` will be selected.
|
| + *
|
| + * @method select
|
| + * @param {String} value the value to select.
|
| + */
|
| + select: function(value) {
|
| + if (this.multi) {
|
| + if (this.selectedValues) {
|
| + this._toggleSelected(value);
|
| + } else {
|
| + this.selectedValues = [value];
|
| + }
|
| + } else {
|
| + this.selected = value;
|
| + }
|
| + },
|
| +
|
| + multiChanged: function(multi) {
|
| + this._selection.multi = multi;
|
| + },
|
| +
|
| + _updateSelected: function() {
|
| + if (this.multi) {
|
| + this._selectMulti(this.selectedValues);
|
| + } else {
|
| + this._selectSelected(this.selected);
|
| + }
|
| + },
|
| +
|
| + _selectMulti: function(values) {
|
| + this._selection.clear();
|
| + if (values) {
|
| + for (var i = 0; i < values.length; i++) {
|
| + this._selection.setItemSelected(this._valueToItem(values[i]), true);
|
| + }
|
| + }
|
| + },
|
| +
|
| + _selectionChange: function() {
|
| + var s = this._selection.get();
|
| + if (this.multi) {
|
| + this._setSelectedItems(s);
|
| + } else {
|
| + this._setSelectedItems([s]);
|
| + this._setSelectedItem(s);
|
| + }
|
| + },
|
| +
|
| + _toggleSelected: function(value) {
|
| + var i = this.selectedValues.indexOf(value);
|
| + var unselected = i < 0;
|
| + if (unselected) {
|
| + this.selectedValues.push(value);
|
| + } else {
|
| + this.selectedValues.splice(i, 1);
|
| + }
|
| + this._selection.setItemSelected(this._valueToItem(value), unselected);
|
| + }
|
| +
|
| + }
|
| + ];
|
| +
|
|
|