Merge "Convert legacy Polymer elements to class-based"
diff --git a/rv-reviewers/rv-edit-screen.js b/rv-reviewers/rv-edit-screen.js
index 05e0df8..be302a8 100644
--- a/rv-reviewers/rv-edit-screen.js
+++ b/rv-reviewers/rv-edit-screen.js
@@ -12,57 +12,61 @@
// See the License for the specific language governing permissions and
// limitations under the License.
(function() {
- Polymer({
- is: 'rv-edit-screen',
+ class RvEditScreen extends Polymer.Element {
+ static get is() { return 'rv-edit-screen'; }
- properties: {
- pluginRestApi: {
- type: Object,
- observer: '_loadFilterSections'
- },
- repoName: String,
- loading: Boolean,
- canModifyConfig: Boolean,
- _editingFilter: {
- type: Boolean,
- value: false,
- },
- _filterSections: Array,
- },
+ static get properties() {
+ return {
+ pluginRestApi: {
+ type: Object,
+ observer: '_loadFilterSections',
+ },
+ repoName: String,
+ loading: Boolean,
+ canModifyConfig: Boolean,
+ _editingFilter: {
+ type: Boolean,
+ value: false,
+ },
+ _filterSections: Array,
+ };
+ }
_loadFilterSections() {
this.pluginRestApi.get(this._getReviewersUrl(this.repoName))
.then(filterSections => {
this._filterSections = filterSections;
});
- },
+ }
_computeAddFilterBtnHidden(canModifyConfig, editingFilter) {
return !canModifyConfig || editingFilter;
- },
+ }
_computeLoadingClass(loading) {
return loading ? 'loading' : '';
- },
+ }
_getReviewersUrl(repoName) {
return `/projects/${encodeURIComponent(repoName)}/reviewers`;
- },
+ }
_handleCreateSection() {
const section = {filter: '', reviewers: [], editing: true};
this._editingFilter = true;
this.push('_filterSections', section);
- },
+ }
_handleCloseTap(e) {
e.preventDefault();
this.fire('close', null, {bubbles: false});
- },
+ }
_handleReviewerChanged(e) {
this._filterSections = e.detail.result;
this._editingFilter = false;
- },
- });
+ }
+ }
+
+ customElements.define(RvEditScreen.is, RvEditScreen);
})();
diff --git a/rv-reviewers/rv-filter-section.js b/rv-reviewers/rv-filter-section.js
index 110c27d..962a54f 100644
--- a/rv-reviewers/rv-filter-section.js
+++ b/rv-reviewers/rv-filter-section.js
@@ -12,53 +12,56 @@
// See the License for the specific language governing permissions and
// limitations under the License.
(function() {
- Polymer({
- is: 'rv-filter-section',
+ class RvFilterSection extends Polymer.Element {
+ static get is() { return 'rv-filter-section'; }
- properties: {
- pluginRestApi: Object,
- repoName: String,
- reviewers: Array,
- filter: String,
- canModifyConfig: Boolean,
- _originalFilter: String,
- _editingReviewer: {
- type: Boolean,
- value: false,
- },
- reviewersUrl: String,
- },
+ static get properties() {
+ return {
+ pluginRestApi: Object,
+ repoName: String,
+ reviewers: Array,
+ filter: String,
+ canModifyConfig: Boolean,
+ _originalFilter: String,
+ _editingReviewer: {
+ type: Boolean,
+ value: false,
+ },
+ reviewersUrl: String,
+ };
+ }
- attached() {
+ connectedCallback() {
+ super.connectedCallback();
this._updateSection();
- },
+ }
_updateSection() {
this._originalFilter = this.filter;
- },
+ }
_computeEditing(filter, _originalFilter) {
if (_originalFilter === '') {
return true;
}
return filter === '';
- },
+ }
_computeCancelHidden(filter, _originalFilter) {
return !this._computeEditing(filter, _originalFilter);
- },
+ }
_computeAddBtnHidden(canModifyConfig, editingReviewer) {
return !(canModifyConfig && !editingReviewer);
- },
+ }
_computeFilterInputDisabled(canModifyConfig, originalFilter) {
return !canModifyConfig || originalFilter !== '';
- },
+ }
_handleCancel() {
this.remove();
- },
+ }
_handleReviewerDeleted(e) {
if (e.detail.editing) {
@@ -69,7 +72,7 @@
const deleted = this.reviewers[index];
this._putReviewer(deleted, 'DELETE');
}
- },
+ }
_handleReviewerAdded(e) {
this._editingReviewer = false;
@@ -77,7 +80,7 @@
this.fire('show-alert', {message: err});
throw err;
});
- },
+ }
_putReviewer(reviewer, action) {
return this.pluginRestApi.put(this.reviewersUrl, {
@@ -89,11 +92,13 @@
this.dispatchEvent(
new CustomEvent('reviewer-changed', {detail, bubbles: true}));
});
- },
+ }
_handleAddReviewer() {
this.push('reviewers', '');
this._editingReviewer = true;
- },
- });
+ }
+ }
+
+ customElements.define(RvFilterSection.is, RvFilterSection);
})();
diff --git a/rv-reviewers/rv-reviewer.js b/rv-reviewers/rv-reviewer.js
index 681a17e..bb0b792 100644
--- a/rv-reviewers/rv-reviewer.js
+++ b/rv-reviewers/rv-reviewer.js
@@ -12,53 +12,56 @@
// See the License for the specific language governing permissions and
// limitations under the License.
(function() {
- Polymer({
- is: 'rv-reviewer',
+ class RvReviewer extends Polymer.Element {
+ static get is() { return 'rv-reviewer'; }
- properties: {
- canModifyConfig: Boolean,
- pluginRestAPi: Object,
- repoName: String,
- reviewer: String,
- _reviewerSearchId: String,
- _queryReviewers: {
- type: Function,
- value() {
- return this._getReviewerSuggestions.bind(this);
+ static get properties() {
+ return {
+ canModifyConfig: Boolean,
+ pluginRestAPi: Object,
+ repoName: String,
+ reviewer: String,
+ _reviewerSearchId: String,
+ _queryReviewers: {
+ type: Function,
+ value() {
+ return this._getReviewerSuggestions.bind(this);
+ },
},
- },
- _originalReviewer: String,
- _deleted: Boolean,
- _editing: {
- type: Boolean,
- computed: '_computeEditing(reviewer, _originalReviewer)',
- },
- },
+ _originalReviewer: String,
+ _deleted: Boolean,
+ _editing: {
+ type: Boolean,
+ computed: '_computeEditing(reviewer, _originalReviewer)',
+ },
+ };
+ }
- attached() {
+ connectedCallback() {
+ super.connectedCallback();
this._originalReviewer = this.reviewer;
- },
+ }
_computeEditing(reviewer, _originalReviewer) {
if (_originalReviewer === '') {
return true;
}
return reviewer === '';
- },
+ }
_computeDeleteCancel(reviewer, _originalReviewer) {
return this._computeEditing(reviewer, _originalReviewer) ?
- 'Cancel' : 'Delete';
- },
+ 'Cancel' : 'Delete';
+ }
_computeHideAddButton(reviewer, _originalReviewer) {
return !(this._computeEditing(reviewer, _originalReviewer)
&& this._reviewerSearchId);
- },
+ }
_computeHideDeleteButton(canModifyConfig) {
return !canModifyConfig;
- },
+ }
_getReviewerSuggestions(input) {
if (input.length === 0) { return Promise.resolve([]); }
@@ -68,7 +71,7 @@
return Promise.all(promises).then(result => {
return result.flat();
});
- },
+ }
_getSuggestedGroups(input) {
const suggestUrl = `/groups/?suggest=${input}&p=${this.repoName}`;
@@ -84,7 +87,7 @@
}
return groupSuggestions;
});
- },
+ }
_getSuggestedAccounts(input) {
const suggestUrl = `/accounts/?suggest&q=${input}`;
@@ -115,7 +118,7 @@
}
return accountSuggestions;
});
- },
+ }
_handleDeleteCancel() {
const detail = {editing: this._editing};
@@ -124,13 +127,15 @@
}
this.dispatchEvent(
new CustomEvent('reviewer-deleted', {detail, bubbles: true}));
- },
+ }
_handleAddReviewer() {
const detail = {reviewer: this._reviewerSearchId};
this._originalReviewer = this.reviewer;
this.dispatchEvent(
new CustomEvent('reviewer-added', {detail, bubbles: true}));
- },
- });
+ }
+ }
+
+ customElements.define(RvReviewer.is, RvReviewer);
})();
diff --git a/rv-reviewers/rv-reviewers.js b/rv-reviewers/rv-reviewers.js
index e40e03a..8c10ea4 100644
--- a/rv-reviewers/rv-reviewers.js
+++ b/rv-reviewers/rv-reviewers.js
@@ -12,42 +12,45 @@
// See the License for the specific language governing permissions and
// limitations under the License.
(function() {
- Polymer({
- is: 'rv-reviewers',
+ class RvReviewers extends Polymer.Element {
+ static get is() { return 'rv-reviewers'; }
- properties: {
- pluginRestApi: Object,
- repoName: String,
- _canModifyConfig: {
- type: Boolean,
- computed: '_computeCanModifyConfig(_isOwner, _hasModifyCapability)',
- },
- _loading: {
- type: Boolean,
- value: true,
- },
- _isOwner: {
- type: Boolean,
- value: false,
- },
- _hasModifyCapability: {
- type: Boolean,
- value: false,
- },
- },
+ static get properties() {
+ return {
+ pluginRestApi: Object,
+ repoName: String,
+ _canModifyConfig: {
+ type: Boolean,
+ computed: '_computeCanModifyConfig(_isOwner, _hasModifyCapability)',
+ },
+ _loading: {
+ type: Boolean,
+ value: true,
+ },
+ _isOwner: {
+ type: Boolean,
+ value: false,
+ },
+ _hasModifyCapability: {
+ type: Boolean,
+ value: false,
+ },
+ };
+ }
- attached() {
+ connectedCallback() {
+ super.connectedCallback();
this.pluginRestApi = this.plugin.restApi();
this._setCanModifyConfig();
- },
+ }
_handleCommandTap() {
this.$.rvScreenOverlay.open();
- },
+ }
_handleRvEditScreenClose() {
this.$.rvScreenOverlay.close();
- },
+ }
_setCanModifyConfig() {
const promises = [];
@@ -64,19 +67,21 @@
Promise.all(promises).then(() => {
this._loading = false;
});
- },
+ }
_computeCanModifyConfig(isOwner, hasModifyCapability) {
return isOwner || hasModifyCapability;
- },
+ }
_getRepoAccess(repoName) {
return this.pluginRestApi.get(
'/access/?project=' + encodeURIComponent(repoName));
- },
+ }
_getCapabilities() {
return this.pluginRestApi.get('/accounts/self/capabilities');
- },
- });
+ }
+ }
+
+ customElements.define(RvReviewers.is, RvReviewers);
})();