<!--
@license
Copyright (C) 2019 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.
-->
<dom-module id="rv-reviewer">
  <template>
    <style include="shared-styles">
      #editReviewerInput {
        display: block;
        width: 250px;
      }
      .reviewerRow {
        align-items: center;
        display: flex;
      }
      #reviewerHeader,
      #editReviewerInput,
      #deleteCancelBtn,
      #addBtn,
      #reviewerField {
          margin-left: 3px;
      }
      #reviewerField {
        width: 250px;
        text-indent: 1px;
        border: 1px solid var(--border-color);
      }
    </style>
    <style include="gr-form-styles"></style>
    <div class="reviewerRow">
      <h4 id="reviewerHeader">Reviewer:</h4>
      <template is="dom-if" if="[[_computeEditing(reviewer, _originalReviewer)]]">
        <span class="value">
            <!--
              TODO:
              Investigate wether we could reuse gr-account-list.
              If the REST API returns AccountInfo instead of an account
              identifier String we should be able to use gr-account-list(size=1)
              for all reviewers, including those who are non-editable
              (#reviewerField below) and allign the plugin with how accounts
              are displayed in core Gerrit's UI.
            -->
            <gr-autocomplete
                id="editReviewerInput"
                text="{{reviewer}}"
                value="{{_reviewerSearchId}}"
                query="[[_queryReviewers]]"
                placeholder="Name Or Email">
            </gr-autocomplete>
        </span>
      </template>
      <template is="dom-if" if="[[!_computeEditing(reviewer, _originalReviewer)]]">
        <td id="reviewerField">[[reviewer]]</td>
      </template>
      <gr-button
          id="deleteCancelBtn"
          on-tap="_handleDeleteCancel"
          hidden$="[[_computeHideDeleteButton(canModifyConfig)]]"
          >[[_computeDeleteCancel(reviewer, _originalReviewer)]]</gr-button>
      <gr-button
          id="addBtn"
          on-tap="_handleAddReviewer"
          hidden$="[[_computeHideAddButton(reviewer, _originalReviewer)]]">Add</gr-button>
    </div> <!-- reviewerRow -->
  </template>
  <script src="./rv-reviewer.js"></script>
</dom-module>
