diff --git a/src/autometabuilder/web/static/js/plugins/form_validator.js b/src/autometabuilder/web/static/js/plugins/form_validator.js new file mode 100644 index 0000000..dffa387 --- /dev/null +++ b/src/autometabuilder/web/static/js/plugins/form_validator.js @@ -0,0 +1,21 @@ +/** + * AutoMetabuilder - Form Validator + */ +(() => { + const FormValidator = { + init() { + document.querySelectorAll('form[data-validate]').forEach(form => { + form.addEventListener('submit', event => { + if (!form.checkValidity()) { + event.preventDefault(); + event.stopPropagation(); + } + form.classList.add('was-validated'); + }); + }); + } + }; + + window.FormValidator = FormValidator; + window.AMBPlugins?.register('form_validator', async () => FormValidator.init()); +})(); diff --git a/src/autometabuilder/web/static/js/plugins/workflow_toggle.js b/src/autometabuilder/web/static/js/plugins/workflow_toggle.js new file mode 100644 index 0000000..a439a7e --- /dev/null +++ b/src/autometabuilder/web/static/js/plugins/workflow_toggle.js @@ -0,0 +1,25 @@ +/** + * AutoMetabuilder - Workflow Toggle + */ +(() => { + const WorkflowToggle = { + init() { + document.querySelectorAll('[data-workflow-toggle]').forEach(button => { + button.addEventListener('click', () => { + const builder = window.WorkflowBuilder; + if (builder && builder.textarea && typeof builder.toggleRaw === 'function') { + builder.toggleRaw(); + return; + } + const textarea = document.getElementById('workflow-content'); + if (textarea) { + textarea.classList.toggle('d-none'); + } + }); + }); + } + }; + + window.WorkflowToggle = WorkflowToggle; + window.AMBPlugins?.register('workflow_toggle', async () => WorkflowToggle.init()); +})();