<!--
ag-data-grid-filter-toggle renders a boolean filter.
The value of the filter is provided to the ```dataSource's fetch``` function
as a value in the filters map. ```filters[key]: <boolean>```

Usage:
  ```
    <ag-data-grid-filter-toggle
      key="withPhone"
      label="Only show contacts that have a phone number">
    </ag-data-grid-filter-toggle>
  ```
@element ag-data-grid-filter-toggle
-->
<link rel="import" href="../../../polymer/polymer.html">
<link rel="import" href="../../../paper-toggle-button/paper-toggle-button.html">
<polymer-element name="ag-data-grid-filter-toggle" attributes="key checked label" grid-filter expects-grid-state>
  <template>
    <link rel="stylesheet" href="ag-data-grid-filter-toggle.css">
    <link rel="stylesheet" href="../common.css">
    <div class="filter-container">
      <h3>{{label}}</h3>
      <paper-toggle-button id="toggle" on-change="{{ updateGridState }}" checked?="{{ checked }}"></paper-toggle-button>
    </div>
  </template>
  <script>
    Polymer('ag-data-grid-filter-toggle', {
      /**
       * Label text for the toggle filter
       * @attribute label
       * @type string
       * @default ''
       */
      label: '',

      /**
       * Whether toggle is checked or not
       * @attribute checked
       * @type boolean
       * @default false
       */
      checked: false,

      /**
       * Key that will be added to filters map passed to the fetch() function of
       * your data source with the value of the filter (boolean in this case)
       * @attribute key
       * @type string
       * @default ''
       */
      key: '',

      updateGridState: function() {
        this.gridState.filters[this.key] = this.$.toggle.checked;
      }
    });
    </script>
</polymer-element>
