diff --git a/src/pat/auto-submit/auto-submit.js b/src/pat/auto-submit/auto-submit.js index 0f968031c..29a4838c3 100644 --- a/src/pat/auto-submit/auto-submit.js +++ b/src/pat/auto-submit/auto-submit.js @@ -1,6 +1,7 @@ import "../../core/jquery-ext"; import $ from "jquery"; import Base from "../../core/base"; +import dom from "../../core/dom"; import events from "../../core/events"; import input_change_events from "../../lib/input-change-events"; import logging from "../../core/logging"; @@ -46,7 +47,7 @@ export default Base.extend({ data?.pattern === "sortable" ) { // Directly submit when removing a clone or changing the sorting. - this.el.dispatchEvent(events.submit_event()); + dom.find_form(this.el).dispatchEvent(events.submit_event()); log.debug( `triggered by pat-update, pattern: ${data.pattern}, action: ${data.action}` ); @@ -128,7 +129,9 @@ export default Base.extend({ onInputChange(e) { e.stopPropagation(); - this.el.dispatchEvent(events.submit_event({ submitter: e.target })); + dom.find_form(this.el).dispatchEvent( + events.submit_event({ submitter: e.target }) + ); log.debug( `submit event triggered by event ${e.type} by submitter (1) on (2)`, e.target, diff --git a/src/pat/auto-submit/auto-submit.test.js b/src/pat/auto-submit/auto-submit.test.js index f5f1e0828..63cfe3b63 100644 --- a/src/pat/auto-submit/auto-submit.test.js +++ b/src/pat/auto-submit/auto-submit.test.js @@ -82,17 +82,12 @@ describe("pat-autosubmit", function () { `; const input = document.querySelector(".pat-autosubmit"); new Pattern(input); - let submit_input_dispatched = false; let submit_form_dispatched = false; - input.addEventListener("submit", () => { - submit_input_dispatched = true; - }); document.querySelector("form").addEventListener("submit", () => { submit_form_dispatched = true; }); input.dispatchEvent(events.input_event()); await utils.timeout(1); - expect(submit_input_dispatched).toBe(true); expect(submit_form_dispatched).toBe(true); }); @@ -179,23 +174,41 @@ describe("pat-autosubmit", function () { `; const input = document.querySelector(".pat-autosubmit"); new Pattern(input); - let submit_input_dispatched = false; let submit_form_dispatched = false; - input.addEventListener("submit", () => { - submit_input_dispatched = true; - }); document.querySelector("form").addEventListener("submit", () => { submit_form_dispatched = true; }); input.dispatchEvent(events.input_event()); await utils.timeout(1); - expect(submit_input_dispatched).toBe(false); expect(submit_form_dispatched).toBe(false); await utils.timeout(9); - expect(submit_input_dispatched).toBe(false); expect(submit_form_dispatched).toBe(false); await utils.timeout(10); - expect(submit_input_dispatched).toBe(true); + expect(submit_form_dispatched).toBe(true); + }); + + it("2.6 - when pat-autosubmit is defined not on aform element", async function () { + document.body.innerHTML = ` +
+ `; + const input = document.querySelector("input"); + const autosubmit = document.querySelector(".pat-autosubmit"); + new Pattern(autosubmit); + + let submit_form_dispatched = false; + document.querySelector("form").addEventListener("submit", () => { + submit_form_dispatched = true; + }); + + input.dispatchEvent(events.input_event()); + await utils.timeout(1); expect(submit_form_dispatched).toBe(true); }); }); diff --git a/src/pat/auto-suggest/auto-suggest.test.js b/src/pat/auto-suggest/auto-suggest.test.js index 84678fe9e..e0daebae5 100644 --- a/src/pat/auto-suggest/auto-suggest.test.js +++ b/src/pat/auto-suggest/auto-suggest.test.js @@ -428,17 +428,20 @@ describe("pat-autosuggest", function () { describe("4 - Integration...", function () { it("4.1 - Works with pat-auto-submit", async function () { document.body.innerHTML = ` - + `; const pattern_autosubmit = (await import("../auto-submit/auto-submit")).default; // prettier-ignore const input = document.querySelector("input"); + let submit_dispatched = false; - input.addEventListener("submit", () => { + document.querySelector("form").addEventListener("submit", () => { submit_dispatched = true; });