Allow deleting ref sections in project access
Also fixes an issue where the deleted bit was not removed from permissions when editing was cancelled. Bug: Issue 8035 Change-Id: I333fda2986117a82ed19bc5e55310469b17e451b
This commit is contained in:
@@ -66,7 +66,7 @@ limitations under the License.
|
||||
.deleted #mainContainer,
|
||||
.global,
|
||||
#addPermission,
|
||||
#updateBtns,
|
||||
#deleteBtn,
|
||||
.editingRef .header,
|
||||
.editContainer {
|
||||
display: none;
|
||||
@@ -74,13 +74,19 @@ limitations under the License.
|
||||
.editing #editBtn {
|
||||
display: flex;
|
||||
}
|
||||
/* TODO @beckysiegel add back when editing allowed */
|
||||
/* .deleted #deletedContainer,
|
||||
.deleted #deletedContainer {
|
||||
display: flex;
|
||||
}
|
||||
/* TODO @beckysiegel add back when adding permission allowed */
|
||||
/* .editing #addPermission, */
|
||||
#mainContainer,
|
||||
.editing #addPermission,
|
||||
.editing #updateBtns {
|
||||
.editing #deleteBtn {
|
||||
display: block;
|
||||
} */
|
||||
}
|
||||
.editing #deleteBtn,
|
||||
#undoRemoveBtn {
|
||||
padding-right: .7em;
|
||||
}
|
||||
.editingRef .editContainer {
|
||||
display: flex;
|
||||
}
|
||||
@@ -100,11 +106,10 @@ limitations under the License.
|
||||
<iron-icon id="icon" icon="gr-icons:create"></iron-icon>
|
||||
</gr-button>
|
||||
</div>
|
||||
<div id="updateBtns">
|
||||
<gr-button
|
||||
id="deleteBtn"
|
||||
on-tap="_handleRemoveReference">Remove</gr-button>
|
||||
</div><!-- end updateBtns -->
|
||||
link
|
||||
id="deleteBtn"
|
||||
on-tap="_handleRemoveReference">Remove</gr-button>
|
||||
</div><!-- end header -->
|
||||
<div class="editContainer">
|
||||
<input
|
||||
@@ -145,8 +150,9 @@ limitations under the License.
|
||||
</div><!-- end sectionContent -->
|
||||
</div><!-- end mainContainer -->
|
||||
<div id="deletedContainer">
|
||||
[[_computeSectionName(section.id)]] was deleted
|
||||
<span>[[_computeSectionName(section.id)]] was deleted</span>
|
||||
<gr-button
|
||||
link
|
||||
id="undoRemoveBtn"
|
||||
on-tap="_handleUndoRemove">Undo</gr-button>
|
||||
</div><!-- end deletedContainer -->
|
||||
|
||||
@@ -14,6 +14,12 @@
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* Fired when the section has been modified or removed.
|
||||
*
|
||||
* @event access-modified
|
||||
*/
|
||||
|
||||
const GLOBAL_NAME = 'GLOBAL_CAPABILITIES';
|
||||
|
||||
// The name that gets automatically input when a new reference is added.
|
||||
@@ -85,6 +91,8 @@
|
||||
// Restore original values if no longer editing.
|
||||
if (!editing) {
|
||||
this._editingRef = false;
|
||||
this._deleted = false;
|
||||
delete this.section.value.deleted;
|
||||
// Restore section ref.
|
||||
this.set(['section', 'id'], this._originalId);
|
||||
}
|
||||
@@ -159,7 +167,8 @@
|
||||
|
||||
_handleRemoveReference() {
|
||||
this._deleted = true;
|
||||
this.set('section.value.deleted', true);
|
||||
this.section.value.deleted = true;
|
||||
this.dispatchEvent(new CustomEvent('access-modified', {bubbles: true}));
|
||||
},
|
||||
|
||||
_handleUndoRemove() {
|
||||
|
||||
@@ -462,9 +462,11 @@ limitations under the License.
|
||||
test('remove section', () => {
|
||||
element.editing = true;
|
||||
assert.isFalse(element._deleted);
|
||||
assert.isNotOk(element.section.value.deleted);
|
||||
MockInteractions.tap(element.$.deleteBtn);
|
||||
flushAsynchronousOperations();
|
||||
assert.isTrue(element._deleted);
|
||||
assert.isTrue(element.section.value.deleted);
|
||||
assert.isTrue(element.$.section.classList.contains('deleted'));
|
||||
assert.isTrue(element.section.value.deleted);
|
||||
|
||||
@@ -472,6 +474,13 @@ limitations under the License.
|
||||
flushAsynchronousOperations();
|
||||
assert.isFalse(element._deleted);
|
||||
assert.isNotOk(element.section.value.deleted);
|
||||
|
||||
MockInteractions.tap(element.$.deleteBtn);
|
||||
assert.isTrue(element._deleted);
|
||||
assert.isTrue(element.section.value.deleted);
|
||||
element.editing = false;
|
||||
assert.isFalse(element._deleted);
|
||||
assert.isNotOk(element.section.value.deleted);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -99,6 +99,7 @@
|
||||
// Restore original values if no longer editing.
|
||||
if (!editing) {
|
||||
this._deleted = false;
|
||||
delete this.permission.value.deleted;
|
||||
this._groupFilter = '';
|
||||
this._rules = this._rules.filter(rule => !rule.value.added);
|
||||
|
||||
|
||||
@@ -237,10 +237,15 @@ limitations under the License.
|
||||
});
|
||||
|
||||
test('_handleRemovePermission', () => {
|
||||
element.editing = true;
|
||||
element.permission = {value: {rules: {}}};
|
||||
element._handleRemovePermission();
|
||||
assert.isTrue(element._deleted);
|
||||
assert.isTrue(element.permission.value.deleted);
|
||||
|
||||
element.editing = false;
|
||||
assert.isFalse(element._deleted);
|
||||
assert.isNotOk(element.permission.value.deleted);
|
||||
});
|
||||
|
||||
test('_handleUndoRemove', () => {
|
||||
|
||||
@@ -367,7 +367,7 @@ limitations under the License.
|
||||
assert.deepEqual(element._computeAddAndRemove(), {add: {}, remove: {}});
|
||||
element._local['refs/*'].updatedId = 'refs/for/bar';
|
||||
element._local['refs/*'].modified = true;
|
||||
const expectedInput = {
|
||||
let expectedInput = {
|
||||
add: {
|
||||
'refs/for/bar': {
|
||||
modified: true,
|
||||
@@ -394,6 +394,16 @@ limitations under the License.
|
||||
},
|
||||
};
|
||||
assert.deepEqual(element._computeAddAndRemove(), expectedInput);
|
||||
element._local['refs/*'].deleted = true;
|
||||
expectedInput = {
|
||||
add: {},
|
||||
remove: {
|
||||
'refs/*': {
|
||||
permissions: {},
|
||||
},
|
||||
},
|
||||
};
|
||||
assert.deepEqual(element._computeAddAndRemove(), expectedInput);
|
||||
});
|
||||
|
||||
test('_computeAddAndRemove combinations', () => {
|
||||
@@ -500,6 +510,17 @@ limitations under the License.
|
||||
},
|
||||
};
|
||||
assert.deepEqual(element._computeAddAndRemove(), expectedInput);
|
||||
|
||||
expectedInput = {
|
||||
add: {},
|
||||
remove: {
|
||||
'refs/*': {
|
||||
permissions: {},
|
||||
},
|
||||
},
|
||||
};
|
||||
element._local['refs/*'].deleted = true;
|
||||
assert.deepEqual(element._computeAddAndRemove(), expectedInput);
|
||||
});
|
||||
|
||||
test('_handleSaveForReview', done => {
|
||||
|
||||
Reference in New Issue
Block a user