summaryrefslogtreecommitdiff
path: root/ext/js/display/display-generator.js
diff options
context:
space:
mode:
authortoasted-nutbread <toasted-nutbread@users.noreply.github.com>2022-05-29 21:24:41 -0400
committerGitHub <noreply@github.com>2022-05-29 21:24:41 -0400
commit331a2e62941e04a4d50a21faefed663a92ddc00a (patch)
tree1212a1e7cd57ea2331fab2101afdc325cb3a4766 /ext/js/display/display-generator.js
parentf3024c50186344aa6a6b09500ea02540463ce5c9 (diff)
Add support for guiEditNote to view notes (#2143)
* Add AnkiConnect.guiEditNote * Update _onApiNoteView to first try guiEditNote * Add setting * Update noteView API * Use setting * Return which mode was used * Update DisplayGenerator * Handle errors in DisplayAnki * Update docs * Add isErrorUnsupportedAction function * Add an allowFallback option to noteView * Disambiguate * Simplify now that preferredMode isn't used * Update settings info * Implement test buttons * Update styles * Update status visibility * Wrap layout * Update description * Update date
Diffstat (limited to 'ext/js/display/display-generator.js')
-rw-r--r--ext/js/display/display-generator.js38
1 files changed, 23 insertions, 15 deletions
diff --git a/ext/js/display/display-generator.js b/ext/js/display/display-generator.js
index 95080e27..851808f2 100644
--- a/ext/js/display/display-generator.js
+++ b/ext/js/display/display-generator.js
@@ -220,23 +220,27 @@ class DisplayGenerator {
for (const error of errors) {
const div = document.createElement('li');
div.className = 'anki-note-error-message';
- let message = isObject(error) && typeof error.message === 'string' ? error.message : `${error}`;
- let link = null;
- if (isObject(error) && isObject(error.data)) {
- const {referenceUrl} = error.data;
- if (typeof referenceUrl === 'string') {
- message = message.trimEnd();
- if (!/[.!?]^/.test()) { message += '.'; }
- message += ' ';
- link = document.createElement('a');
- link.href = referenceUrl;
- link.target = '_blank';
- link.rel = 'noreferrer noopener';
- link.textContent = 'More info';
+ if (error instanceof DocumentFragment || error instanceof Node) {
+ div.appendChild(error);
+ } else {
+ let message = isObject(error) && typeof error.message === 'string' ? error.message : `${error}`;
+ let link = null;
+ if (isObject(error) && isObject(error.data)) {
+ const {referenceUrl} = error.data;
+ if (typeof referenceUrl === 'string') {
+ message = message.trimEnd();
+ if (!/[.!?]^/.test()) { message += '.'; }
+ message += ' ';
+ link = document.createElement('a');
+ link.href = referenceUrl;
+ link.target = '_blank';
+ link.rel = 'noreferrer noopener';
+ link.textContent = 'More info';
+ }
}
+ this._setTextContent(div, message);
+ if (link !== null) { div.appendChild(link); }
}
- this._setTextContent(div, message);
- if (link !== null) { div.appendChild(link); }
list.appendChild(div);
}
@@ -251,6 +255,10 @@ class DisplayGenerator {
return this._templates.instantiate(name);
}
+ instantiateTemplateFragment(name) {
+ return this._templates.instantiateFragment(name);
+ }
+
// Private
_createTermHeadword(headword, headwordIndex, pronunciations) {