mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-25 16:19:40 +02:00
Fix form submission triggers (#2512)
This commit is contained in:
parent
f7f6ebb091
commit
32ec57146e
1 changed files with 46 additions and 4 deletions
|
@ -10,16 +10,14 @@ export default class extends Controller {
|
|||
|
||||
connect() {
|
||||
this.autoTargets.forEach((element) => {
|
||||
const event =
|
||||
element.dataset.autosubmitTriggerEvent || this.triggerEventValue;
|
||||
const event = this.#getTriggerEvent(element);
|
||||
element.addEventListener(event, this.handleInput);
|
||||
});
|
||||
}
|
||||
|
||||
disconnect() {
|
||||
this.autoTargets.forEach((element) => {
|
||||
const event =
|
||||
element.dataset.autosubmitTriggerEvent || this.triggerEventValue;
|
||||
const event = this.#getTriggerEvent(element);
|
||||
element.removeEventListener(event, this.handleInput);
|
||||
});
|
||||
}
|
||||
|
@ -33,6 +31,50 @@ export default class extends Controller {
|
|||
}, this.#debounceTimeout(target));
|
||||
};
|
||||
|
||||
#getTriggerEvent(element) {
|
||||
// Check if element has explicit trigger event set
|
||||
if (element.dataset.autosubmitTriggerEvent) {
|
||||
return element.dataset.autosubmitTriggerEvent;
|
||||
}
|
||||
|
||||
// Check if form has explicit trigger event set
|
||||
if (this.triggerEventValue !== "input") {
|
||||
return this.triggerEventValue;
|
||||
}
|
||||
|
||||
// Otherwise, choose trigger event based on element type
|
||||
const type = element.type || element.tagName;
|
||||
|
||||
switch (type.toLowerCase()) {
|
||||
case "text":
|
||||
case "email":
|
||||
case "password":
|
||||
case "search":
|
||||
case "tel":
|
||||
case "url":
|
||||
case "textarea":
|
||||
return "blur";
|
||||
case "number":
|
||||
case "date":
|
||||
case "datetime-local":
|
||||
case "month":
|
||||
case "time":
|
||||
case "week":
|
||||
case "color":
|
||||
return "change";
|
||||
case "checkbox":
|
||||
case "radio":
|
||||
case "select":
|
||||
case "select-one":
|
||||
case "select-multiple":
|
||||
return "change";
|
||||
case "range":
|
||||
return "input";
|
||||
default:
|
||||
return "blur";
|
||||
}
|
||||
}
|
||||
|
||||
#debounceTimeout(element) {
|
||||
if (element.dataset.autosubmitDebounceTimeout) {
|
||||
return Number.parseInt(element.dataset.autosubmitDebounceTimeout);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue