Add Draftail init fallback for StreamField/InlinePanel templated fields. Fix #4295

pull/4312/head
Thibaud Colas 2018-02-22 23:26:13 +02:00 zatwierdzone przez Matt Westcott
rodzic f6bcfbf31e
commit c62c58c492
2 zmienionych plików z 15 dodań i 1 usunięć

Wyświetl plik

@ -50,7 +50,9 @@ export const wrapWagtailIcon = type => {
const initEditor = (selector, options, currentScript) => {
// document.currentScript is not available in IE11. Use a fallback instead.
const context = currentScript ? currentScript.parentNode : document.body;
const field = context.querySelector(selector);
// If the field is not in the current context, look for it in the whole body.
// Fallback for sequence.js jQuery eval-ed scripts running in document.head.
const field = context.querySelector(selector) || document.body.querySelector(selector);
const editorWrapper = document.createElement('div');
editorWrapper.className = 'Draftail-Editor__wrapper';

Wyświetl plik

@ -88,6 +88,18 @@ describe('Draftail', () => {
expect(document.querySelector('[name="last"]').draftailEditor).toBeDefined();
});
it('uses fallback document.body when currentScript context is wrong', () => {
window.draftail = draftail;
document.body.innerHTML = `
<input id="description" value="null" />
<div>
<script>window.draftail.initEditor('#description', {}, document.currentScript);</script>
</div>
`;
expect(document.querySelector('#description').draftailEditor).toBeDefined();
});
});
});