| <!-- |
| @license |
| Copyright (C) 2017 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="../../../bower_components/polymer/polymer.html"> |
| |
| <link rel="import" href="../../../behaviors/gr-access-behavior/gr-access-behavior.html"> |
| <link rel="import" href="../../../bower_components/iron-input/iron-input.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-icons/gr-icons.html"> |
| <link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html"> |
| <link rel="import" href="../gr-permission/gr-permission.html"> |
| |
| <script src="../../../scripts/util.js"></script> |
| |
| <dom-module id="gr-access-section"> |
| <template> |
| <style include="shared-styles"> |
| :host { |
| display: block; |
| margin-bottom: 1em; |
| } |
| fieldset { |
| border: 1px solid var(--border-color); |
| } |
| .name { |
| align-items: center; |
| display: flex; |
| } |
| .header, |
| #deletedContainer { |
| align-items: center; |
| background: var(--table-header-background-color); |
| border-bottom: 1px dotted var(--border-color); |
| display: flex; |
| justify-content: space-between; |
| min-height: 3em; |
| padding: 0 .7em; |
| } |
| #deletedContainer { |
| border-bottom: 0; |
| } |
| .sectionContent { |
| padding: .7em; |
| } |
| #editBtn, |
| .editing #editBtn.global, |
| #deletedContainer, |
| .deleted #mainContainer, |
| #addPermission, |
| #deleteBtn, |
| .editingRef .name, |
| #editRefInput { |
| display: none; |
| } |
| .editing #editBtn, |
| .editingRef #editRefInput { |
| display: flex; |
| } |
| .deleted #deletedContainer { |
| display: flex; |
| } |
| .editing #addPermission, |
| #mainContainer, |
| .editing #deleteBtn { |
| display: block; |
| } |
| .editing #deleteBtn, |
| #undoRemoveBtn { |
| padding-right: .7em; |
| } |
| </style> |
| <style include="gr-form-styles"></style> |
| <fieldset id="section" |
| class$="gr-form-styles [[_computeSectionClass(editing, canUpload, ownerOf, _editingRef, _deleted)]]"> |
| <div id="mainContainer"> |
| <div class="header"> |
| <div class="name"> |
| <h3>[[_computeSectionName(section.id)]]</h3> |
| <gr-button |
| id="editBtn" |
| link |
| class$="[[_computeEditBtnClass(section.id)]]" |
| on-tap="editReference"> |
| <iron-icon id="icon" icon="gr-icons:create"></iron-icon> |
| </gr-button> |
| </div> |
| <input |
| id="editRefInput" |
| bind-value="{{section.id}}" |
| is="iron-input" |
| type="text" |
| on-input="_handleValueChange"> |
| <gr-button |
| link |
| id="deleteBtn" |
| on-tap="_handleRemoveReference">Remove</gr-button> |
| </div><!-- end header --> |
| <div class="sectionContent"> |
| <template |
| is="dom-repeat" |
| items="{{_permissions}}" |
| as="permission"> |
| <gr-permission |
| name="[[_computePermissionName(section.id, permission, permissionValues, capabilities)]]" |
| permission="{{permission}}" |
| labels="[[labels]]" |
| section="[[section.id]]" |
| editing="[[editing]]" |
| groups="[[groups]]" |
| on-added-permission-removed="_handleAddedPermissionRemoved"> |
| </gr-permission> |
| </template> |
| <div id="addPermission"> |
| Add permission: |
| <select id="permissionSelect"> |
| <!-- called with a third parameter so that permissions update |
| after a new section is added. --> |
| <template |
| is="dom-repeat" |
| items="[[_computePermissions(section.id, capabilities, labels, section.value.permissions.*)]]"> |
| <option value="[[item.value.id]]">[[item.value.name]]</option> |
| </template> |
| </select> |
| <gr-button |
| link |
| id="addBtn" |
| on-tap="_handleAddPermission">Add</gr-button> |
| </div> |
| <!-- end addPermission --> |
| </div><!-- end sectionContent --> |
| </div><!-- end mainContainer --> |
| <div id="deletedContainer"> |
| <span>[[_computeSectionName(section.id)]] was deleted</span> |
| <gr-button |
| link |
| id="undoRemoveBtn" |
| on-tap="_handleUndoRemove">Undo</gr-button> |
| </div><!-- end deletedContainer --> |
| </fieldset> |
| <gr-rest-api-interface id="restAPI"></gr-rest-api-interface> |
| </template> |
| <script src="gr-access-section.js"></script> |
| </dom-module> |