React to content change event dispatched by plugin
The editor view must listen for the content-change event in order to
react to changes made by the codemirror-editor plugin. Updating the
value of _newContent in the view-level component is used for:
- Enabling/disabling the save button
- Caching edits to localStorage (TODO)
- Probably many more things
Bug: Issue 4437
Change-Id: I81b7db5dea9a40ddaeee9924428ffcd78f4abf4a
diff --git a/polygerrit-ui/app/elements/edit/gr-editor-view/gr-editor-view.html b/polygerrit-ui/app/elements/edit/gr-editor-view/gr-editor-view.html
index 1dade20..10da09b 100644
--- a/polygerrit-ui/app/elements/edit/gr-editor-view/gr-editor-view.html
+++ b/polygerrit-ui/app/elements/edit/gr-editor-view/gr-editor-view.html
@@ -83,7 +83,7 @@
</header>
</gr-fixed-panel>
<div class="textareaWrapper">
- <gr-endpoint-decorator name="editor">
+ <gr-endpoint-decorator id="editorEndpoint" name="editor">
<gr-endpoint-param name="fileContent" value="[[_newContent]]"></gr-endpoint-param>
<gr-endpoint-param name="prefs" value="[[_prefs]]"></gr-endpoint-param>
<gr-endpoint-param name="fileType" value="[[_type]]"></gr-endpoint-param>
diff --git a/polygerrit-ui/app/elements/edit/gr-editor-view/gr-editor-view.js b/polygerrit-ui/app/elements/edit/gr-editor-view/gr-editor-view.js
index f31608d..447c258 100644
--- a/polygerrit-ui/app/elements/edit/gr-editor-view/gr-editor-view.js
+++ b/polygerrit-ui/app/elements/edit/gr-editor-view/gr-editor-view.js
@@ -53,6 +53,10 @@
Gerrit.PathListBehavior,
],
+ listeners: {
+ 'content-change': '_handleContentChange',
+ },
+
attached() {
this._getEditPrefs().then(prefs => { this._prefs = prefs; });
},
@@ -132,5 +136,9 @@
// TODO(kaspern): Add a confirm dialog if there are unsaved changes.
this._viewEditInChangeView();
},
+
+ _handleContentChange(e) {
+ if (e.detail.value) { this.set('_newContent', e.detail.value); }
+ },
});
})();
diff --git a/polygerrit-ui/app/elements/edit/gr-editor-view/gr-editor-view_test.html b/polygerrit-ui/app/elements/edit/gr-editor-view/gr-editor-view_test.html
index 32ab15c..fa9bcec 100644
--- a/polygerrit-ui/app/elements/edit/gr-editor-view/gr-editor-view_test.html
+++ b/polygerrit-ui/app/elements/edit/gr-editor-view/gr-editor-view_test.html
@@ -114,6 +114,17 @@
});
});
+ test('reacts to content-change event', () => {
+ element._newContent = 'test';
+ element.$.editorEndpoint.dispatchEvent(new CustomEvent('content-change', {
+ bubbles: true,
+ detail: {value: 'new content value'},
+ }));
+ flushAsynchronousOperations();
+
+ assert.equal(element._newContent, 'new content value');
+ });
+
suite('edit file content', () => {
const originalText = 'file text';
const newText = 'file text changed';