Skip to content

Commit fdcf0e1

Browse files
committed
maint(pat subform): Wait for click event to bubble to subform and catch it there instead for searching for submit buttons. This allows for changing tree contents and canceling the event withing the DOM‌ hierachy before it reaches subform. Also, use own event listener and remove click on destroy.
1 parent f1c3b43 commit fdcf0e1

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

src/pat/subform/subform.js

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,25 @@ export default Base.extend({
1616
name: "subform",
1717
trigger: ".pat-subform",
1818

19-
init($el) {
20-
$el.submit(this.submit.bind(this));
21-
$el.find("input").on("keyup keypress keydown", this.keyboard_handler.bind(this));
22-
$el.find("button[type=submit]").on("click", this.submitClicked.bind(this));
19+
init() {
20+
this.$el
21+
.find("input")
22+
.on("keyup keypress keydown", this.keyboard_handler.bind(this));
23+
events.add_event_listener(this.el, "submit", "pat-subform--submit", (e) => {
24+
log.debug("Handle submit event.");
25+
this.submit(e);
26+
});
27+
events.add_event_listener(this.el, "click", "pat-subform--click", (e) => {
28+
if (e.target.matches("button[type=submit]")) {
29+
log.debug("Submit button pressed");
30+
this.submitClicked(e);
31+
}
32+
});
2333
},
2434

25-
destroy($el) {
26-
$el.off("submit");
35+
destroy() {
36+
events.remove_event_listener(this.el, "pat-subform--submit");
37+
events.remove_event_listener(this.el, "pat-subform--click");
2738
},
2839

2940
scopedSubmit($el) {

0 commit comments

Comments
 (0)