<!--
@license
Copyright (C) 2016 The Android Open Source Project

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<link rel="import" href="../../../behaviors/gr-change-table-behavior/gr-change-table-behavior.html">
<link rel="import" href="/bower_components/polymer/polymer.html">
<link rel="import" href="../../shared/gr-button/gr-button.html">
<link rel="import" href="../../shared/gr-date-formatter/gr-date-formatter.html">
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
<link rel="import" href="../../../styles/shared-styles.html">
<link rel="import" href="../../../styles/gr-form-styles.html">

<dom-module id="gr-change-table-editor">
  <template>
    <style include="shared-styles"></style>
    <style include="gr-form-styles">
      #changeCols {
        width: auto;
      }
      #changeCols .visibleHeader {
        text-align: center;
      }
      .checkboxContainer {
        cursor: pointer;
        text-align: center;
      }
      .checkboxContainer input {
        cursor: pointer;
      }
      .checkboxContainer:hover {
        outline: 1px solid var(--border-color);
      }
    </style>
    <div class="gr-form-styles">
      <table id="changeCols">
        <thead>
          <tr>
            <th class="nameHeader">Column</th>
            <th class="visibleHeader">Visible</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>Number</td>
            <td class="checkboxContainer"
                on-tap="_handleCheckboxContainerTap">
              <input
                  type="checkbox"
                  name="number"
                  on-tap="_handleNumberCheckboxTap"
                  checked$="[[showNumber]]">
            </td>
          </tr>
          <template is="dom-repeat" items="[[columnNames]]">
            <tr>
              <td>[[item]]</td>
              <td class="checkboxContainer"
                  on-tap="_handleCheckboxContainerTap">
                <input
                    type="checkbox"
                    name="[[item]]"
                    on-tap="_handleTargetTap"
                    checked$="[[!isColumnHidden(item, displayedColumns)]]">
              </td>
            </tr>
          </template>
        </tbody>
      </table>
    </div>
  </template>
  <script src="gr-change-table-editor.js"></script>
</dom-module>
