| <!-- |
| 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-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 #d1d2d3; |
| } |
| .header, |
| .editingRef .editContainer, |
| #deletedContainer { |
| align-items: baseline; |
| background: #f6f6f6; |
| border-bottom: 1px dotted #d1d2d3; |
| display: flex; |
| justify-content: space-between; |
| padding: .7em .7em; |
| } |
| #deletedContainer { |
| border-bottom: 0; |
| } |
| .sectionContent { |
| padding: .7em; |
| } |
| #deletedContainer, |
| .deleted #mainContainer, |
| .global, |
| #addPermission, |
| #updateBtns, |
| .editingRef .header, |
| .editContainer { |
| display: none; |
| } |
| .deleted #deletedContainer, |
| #mainContainer, |
| .editing #addPermission, |
| .editing #updateBtns { |
| display: block; |
| } |
| .editingRef .editContainer { |
| display: flex; |
| } |
| </style> |
| <style include="gr-form-styles"></style> |
| <fieldset id="section" |
| class$="gr-form-styles [[_computeSectionClass(editing, _editingRef, _deleted)]]"> |
| <div id="mainContainer"> |
| <div class="header"> |
| <span class="name"> |
| <h3>[[_computeSectionName(section.id)]]</h3> |
| </span> |
| <div id="updateBtns"> |
| <gr-button |
| id="editBtn" |
| class$="[[_computeEditBtnClass(section.id)]]" |
| on-tap="_handleEditReference">Edit Reference</gr-button> |
| <gr-button |
| id="deleteBtn" |
| on-tap="_handleRemoveReference">Remove</gr-button> |
| </div><!-- end updateBtns --> |
| </div><!-- end header --> |
| <div class="editContainer"> |
| <input |
| id="editRefInput" |
| bind-value="{{section.id}}" |
| is="iron-input" |
| type="text"> |
| <gr-button |
| id="undoEdit" |
| on-tap="_undoReferenceEdit">Undo</gr-button> |
| </div><!-- end editContainer --> |
| <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]]"> |
| </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 id="addBtn" on-tap="_handleAddPermission">Add</gr-button> |
| </div><!-- end addPermission --> |
| </div><!-- end sectionContent --> |
| </div><!-- end mainContainer --> |
| <div id="deletedContainer"> |
| [[_computeSectionName(section.id)]] was deleted |
| <gr-button |
| 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> |