<!--
Copyright (C) 2018 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/base-url-behavior/base-url-behavior.html">
<link rel="import" href="../../../bower_components/iron-input/iron-input.html">
<link rel="import" href="../../../bower_components/polymer/polymer.html">
<link rel="import" href="../../../styles/gr-form-styles.html">
<link rel="import" href="../../../styles/shared-styles.html">
<link rel="import" href="../../shared/gr-button/gr-button.html">
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">

<dom-module id="gr-cla-view">
  <template>
    <style include="shared-styles">
      h1 {
        margin-bottom: .6em;
      }
      h3 {
        margin-bottom: .5em;
      }
      .agreementsUrl {
        border: 0.1em solid #b0bdcc;
        margin-bottom: 1.25em;
        margin-left: 1.25em;
        margin-right: 1.25em;
        padding: 0.3em;
      }
      #claNewAgreementsLabel {
        font-family: var(--font-family-bold);
      }
      #claNewAgreement {
        display: none;
      }
      #claNewAgreement.show {
        display: block;
      }
      .contributorAgreementButton {
        font-family: var(--font-family-bold);
      }
      .alreadySubmittedText {
        color: red;
        margin: 0 2em;
        padding: .5em;
      }
      .alreadySubmittedText.hide {
        display: none;
      }
      main {
        margin: 2em auto;
        max-width: 50em;
      }
    </style>
    <style include="gr-form-styles"></style>
    <main>
      <h1>New Contributor Agreement</h1>
      <h3>Select an agreement type:</h3>
      <template is="dom-repeat" items="[[_serverConfig.auth.contributor_agreements]]">
        <span class="contributorAgreementButton">
          <input id$="claNewAgreementsInput[[item.name]]"
              name="claNewAgreementsRadio"
              type="radio"
              data-name$="[[item.name]]"
              data-url$="[[item.url]]"
              on-tap="_handleShowAgreement"
              disabled$="[[_disableAggreements(item, _groups)]]">
          <label id="claNewAgreementsLabel">[[item.name]]</label>
        </span>
        <div class$="alreadySubmittedText [[_hideAggreements(item, _groups)]]">
          Agreement already submitted.
        </div>
        <div class="agreementsUrl">
          [[item.description]]
        </div>
      </template>
      <div id="claNewAgreement" class$="[[_computeShowAgreementsClass(_showAgreements)]]">
        <h3 class="smallHeading">Review the agreement:</h3>
        <div id="agreementsUrl" class="agreementsUrl">
          <a href$="[[_agreementsUrl]]" target="blank" rel="noopener">
            Please review the agreement.</a>
        </div>
        <div class$="agreementsTextBox [[_computeHideAgreementClass(_agreementName, _serverConfig.auth.contributor_agreements)]]">
          <h3 class="smallHeading">Complete the agreement:</h3>
          <input id="input-agreements" is="iron-input" bind-value="{{_agreementsText}}" placeholder="Enter 'I agree' here" />
          <gr-button on-tap="_handleSaveAgreements" disabled="[[_disableAgreementsText(_agreementsText)]]">
            Submit
          </gr-button>
        </div>
      </div>
    </main>
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
  </template>
  <script src="gr-cla-view.js"></script>
</dom-module>