mirror of
https://github.com/ae-utbm/sith.git
synced 2024-12-22 15:51:19 +00:00
Fix markdown input initial value and crash when alpine is not loaded
This commit is contained in:
parent
45441c351d
commit
301fc73687
@ -13,16 +13,22 @@ const loadEasyMde = (textarea: HTMLTextAreaElement) => {
|
||||
element: textarea,
|
||||
spellChecker: false,
|
||||
autoDownloadFontAwesome: false,
|
||||
previewRender: Alpine.debounce((plainText: string, preview: MarkdownInput) => {
|
||||
const func = async (plainText: string, preview: MarkdownInput): Promise<null> => {
|
||||
preview.innerHTML = (
|
||||
await markdownRenderMarkdown({ body: { text: plainText } })
|
||||
).data as string;
|
||||
previewRender: (plainText: string, preview: MarkdownInput) => {
|
||||
/* This is wrapped this way to allow time for Alpine to be loaded on the page */
|
||||
return Alpine.debounce((plainText: string, preview: MarkdownInput) => {
|
||||
const func = async (
|
||||
plainText: string,
|
||||
preview: MarkdownInput,
|
||||
): Promise<null> => {
|
||||
preview.innerHTML = (
|
||||
await markdownRenderMarkdown({ body: { text: plainText } })
|
||||
).data as string;
|
||||
return null;
|
||||
};
|
||||
func(plainText, preview);
|
||||
return null;
|
||||
};
|
||||
func(plainText, preview);
|
||||
return null;
|
||||
}, 300),
|
||||
}, 300)(plainText, preview);
|
||||
},
|
||||
forceSync: true, // Avoid validation error on generic create view
|
||||
toolbar: [
|
||||
{
|
||||
@ -187,6 +193,10 @@ const loadEasyMde = (textarea: HTMLTextAreaElement) => {
|
||||
class MarkdownInput extends inheritHtmlElement("textarea") {
|
||||
connectedCallback() {
|
||||
super.connectedCallback();
|
||||
const initialValue = this.querySelector("slot[name='initial']");
|
||||
if (initialValue as HTMLSlotElement) {
|
||||
this.node.textContent = initialValue.textContent;
|
||||
}
|
||||
loadEasyMde(this.node);
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,8 @@
|
||||
<script-once src="{{ statics.js }}" defer></script-once>
|
||||
<link-once rel="stylesheet" type="text/css" href="{{ statics.css }}" defer></link-once>
|
||||
|
||||
<markdown-input name="{{ widget.name }}"{% include "django/forms/widgets/attrs.html" %}>{% if widget.value %}{{ widget.value }}{% endif %}</markdown-input>
|
||||
<markdown-input name="{{ widget.name }}"{% include "django/forms/widgets/attrs.html" %}>
|
||||
<slot name="initial" style="display: none">{% if widget.value %}{{ widget.value }}{% endif %}</slot>
|
||||
</markdown-input>
|
||||
|
||||
</div>
|
||||
|
Loading…
Reference in New Issue
Block a user