diff --git a/inventory/static/js/widget.js b/inventory/static/js/widget.js index 2c7dc0b..bd2c239 100644 --- a/inventory/static/js/widget.js +++ b/inventory/static/js/widget.js @@ -53,6 +53,37 @@ function renderToast({ message, type = ToastConfig.defaultType, timeout = ToastC }); } +const EditorWidget = (() => { + let tempIdCounter = 1; + + function autoResizeTextarea(textarea) { + textarea.style.height = 'auto'; + textarea.style.height = `${textarea.scrollHeight + 2}px`; + } + + function createEditorWidget(template, id, timestamp, content = '') { + let html = template.innerHTML + .replace(/__ID__/g, id) + .replace(/__TIMESTAMP__/g, timestamp) + .replace(/__CONTENT__/g, content); + + const wrapper = document.createElement("div"); + wrapper.innerHTML = html; + + return wrapper.firstElementChild; + } + + function createTempId(prefix = "temp") { + return `${prefix}-${tempIdCounter++}`; + } + + return { + autoResizeTextarea, + createEditorWidget, + createTempId + }; +})(); + const ComboBoxWidget = (() => { let tempIdCounter = 1; diff --git a/inventory/templates/fragments/_editor_fragment.html b/inventory/templates/fragments/_editor_fragment.html new file mode 100644 index 0000000..3a58d7f --- /dev/null +++ b/inventory/templates/fragments/_editor_fragment.html @@ -0,0 +1,47 @@ +{% import "fragments/_icon_fragment.html" as icons %} + +{% macro render_editor(id, title, mode='edit', content=None) %} + +