From ff4f6f8f70965ab7ee02f161d7bae0e35a94513a Mon Sep 17 00:00:00 2001 From: johndoe6345789 Date: Fri, 9 Jan 2026 20:35:14 +0000 Subject: [PATCH] Add WorkflowToggle and FormValidator plugins: - Introduce `workflow_toggle.js` for toggling workflow visibility. - Implement `form_validator.js` for form validation on submission. - Register plugins with `AMBPlugins` for initialization. --- .../web/static/js/plugins/form_validator.js | 21 ++++++++++++++++ .../web/static/js/plugins/workflow_toggle.js | 25 +++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 src/autometabuilder/web/static/js/plugins/form_validator.js create mode 100644 src/autometabuilder/web/static/js/plugins/workflow_toggle.js 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()); +})();