Skip to content

Commit 3dfc452

Browse files
authored
Merge pull request #1185 from Patternslib/fix-submit
Fix submit working with pat-inject
2 parents a6314d5 + 79436cb commit 3dfc452

File tree

5 files changed

+20
-13
lines changed

5 files changed

+20
-13
lines changed

src/pat/ajax/ajax.test.js

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
import registry from "../../core/registry";
2-
import pattern from "./ajax";
31
import $ from "jquery";
2+
import events from "../../core/events";
3+
import pattern from "./ajax";
4+
import registry from "../../core/registry";
45
import { jest } from "@jest/globals";
56

67
var $lab;
@@ -47,13 +48,13 @@ describe("pat-ajax", function () {
4748
});
4849

4950
it("triggers ajax request on submit", function () {
50-
$form.submit();
51+
$form[0].dispatchEvent(events.submit_event());
5152
expect(spy_ajax).toHaveBeenCalled();
5253
});
5354

5455
it("honors method='post'", function () {
5556
$form.attr("method", "post");
56-
$form.submit();
57+
$form[0].dispatchEvent(events.submit_event());
5758
var ajaxargs = $.ajax.mock.calls[$.ajax.mock.calls.length - 1][0];
5859
expect(ajaxargs.url).toEqual("action.html");
5960
expect(ajaxargs.method).toEqual("POST");
@@ -73,7 +74,7 @@ describe("pat-ajax", function () {
7374
});
7475

7576
it("does not include submit buttons if not clicked", function () {
76-
$form.submit();
77+
$form[0].dispatchEvent(events.submit_event());
7778
var ajaxargs = $.ajax.mock.calls[$.ajax.mock.calls.length - 1][0];
7879
expect(ajaxargs.url).toEqual("action.html");
7980
expect(ajaxargs.data).toEqual("input1=value1");
@@ -99,7 +100,7 @@ describe("pat-ajax", function () {
99100
document.body.innerHTML = `<form class="pat-ajax" action="somewhere.html"/>`;
100101
registry.scan(document.body);
101102
jest.spyOn($, "ajax");
102-
$(".pat-ajax").submit();
103+
$(".pat-ajax")[0].dispatchEvent(events.submit_event());
103104
const ajaxargs = $.ajax.mock.calls[$.ajax.mock.calls.length - 1][0];
104105
expect(ajaxargs.url).toEqual("somewhere.html");
105106
});
@@ -127,7 +128,7 @@ describe("pat-ajax", function () {
127128
`;
128129
registry.scan(document.body);
129130
jest.spyOn($, "ajax");
130-
$(".pat-ajax").submit();
131+
$(".pat-ajax")[0].dispatchEvent(events.submit_event());
131132
const ajaxargs = $.ajax.mock.calls[$.ajax.mock.calls.length - 1][0];
132133
expect(ajaxargs.url).toEqual("else.html");
133134
});
@@ -214,7 +215,7 @@ describe("pat-ajax", function () {
214215
data-pat-ajax="browser-cache: cache"
215216
/>`;
216217
registry.scan(document.body);
217-
$(".pat-ajax").submit(); // need jquery submit here
218+
$(".pat-ajax")[0].dispatchEvent(events.submit_event());
218219
const ajaxargs = spy_ajax.mock.calls[spy_ajax.mock.calls.length - 1][0];
219220
expect(ajaxargs.cache).toBe(false);
220221
spy_ajax.mockRestore();

src/pat/inject/inject.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1874,7 +1874,7 @@ describe("pat-inject", function () {
18741874
registry.scan(document.body);
18751875
await utils.timeout(1);
18761876

1877-
$(".pat-inject").submit(); // need jquery submit here
1877+
document.querySelector(".pat-inject").dispatchEvent(events.submit_event());
18781878
const ajaxargs = spy_ajax.mock.calls[spy_ajax.mock.calls.length - 1][0];
18791879
expect(ajaxargs.cache).toBe(false);
18801880
spy_ajax.mockRestore();

src/pat/push/push.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ export default Base.extend({
4141
if (this.options.mode === "desktop-notification") {
4242
this.desktop_notification();
4343
} else if (this.el.tagName === "FORM") {
44-
this.el.submit();
44+
this.el.dispatchEvent(events.submit_event());
4545
} else {
4646
this.perform_inject();
4747
}

src/pat/sortable/sortable.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ describe("pat-sortable", function () {
118118
$("#item3").prependTo($("ol")); // Simulate dragging it to the top.
119119
const submitCallback = jest.fn();
120120
submitCallback.mockReturnValue(false);
121-
$(form).submit(submitCallback);
121+
form.addEventListener("submit", submitCallback);
122122
document
123123
.querySelector("#item3 a.sortable-handle")
124124
.dispatchEvent(events.dragend_event());

src/pat/subform/subform.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import $ from "jquery";
77
import ajax from "../ajax/ajax";
88
import Base from "../../core/base";
9+
import events from "../../core/events";
910
import inject from "../inject/inject";
1011
import logging from "../../core/logging";
1112

@@ -16,7 +17,12 @@ export default Base.extend({
1617
trigger: ".pat-subform",
1718

1819
init($el) {
19-
$el.submit(this.submit.bind(this));
20+
events.add_event_listener(
21+
$el[0],
22+
"submit",
23+
"pat-subform--submit",
24+
this.submit.bind(this)
25+
);
2026
$el.find("input").on("keyup keypress keydown", this.keyboard_handler.bind(this));
2127
$el.find("button[type=submit]").on("click", this.submitClicked.bind(this));
2228
},
@@ -76,7 +82,7 @@ export default Base.extend({
7682
if (!$subform.is(".pat-autosubmit")) {
7783
return;
7884
}
79-
return $subform.submit();
85+
$subform[0].dispatchEvent(events.submit_event());
8086
},
8187

8288
submitClicked(ev) {

0 commit comments

Comments
 (0)