1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-08-06 05:55:21 +02:00

[claudesquad] update from 'entry-drawer-form-behavior' on 23 Jul 25 10:07 EDT

This commit is contained in:
Zach Gollwitzer 2025-07-23 10:07:50 -04:00
parent 27133f665c
commit bf3c0e7c13
2 changed files with 46 additions and 6 deletions

View file

@ -5,21 +5,19 @@ export default class extends Controller {
// will trigger a form submission when the configured event is triggered.
static targets = ["auto"];
static values = {
triggerEvent: { type: String, default: "input" },
triggerEvent: { type: String },
};
connect() {
this.autoTargets.forEach((element) => {
const event =
element.dataset.autosubmitTriggerEvent || this.triggerEventValue;
const event = this.#getEventForElement(element);
element.addEventListener(event, this.handleInput);
});
}
disconnect() {
this.autoTargets.forEach((element) => {
const event =
element.dataset.autosubmitTriggerEvent || this.triggerEventValue;
const event = this.#getEventForElement(element);
element.removeEventListener(event, this.handleInput);
});
}
@ -33,6 +31,48 @@ export default class extends Controller {
}, this.#debounceTimeout(target));
};
#getEventForElement(element) {
// Check for explicitly set event first
if (element.dataset.autosubmitTriggerEvent) {
return element.dataset.autosubmitTriggerEvent;
}
// Check form-level trigger event value
if (this.triggerEventValue) {
return this.triggerEventValue;
}
// Determine event based on input type
const type = element.type || element.tagName.toLowerCase();
switch (type) {
case "text":
case "email":
case "password":
case "search":
case "tel":
case "url":
case "number":
case "textarea":
return "blur";
case "select-one":
case "select-multiple":
case "checkbox":
case "radio":
return "change";
case "date":
case "datetime-local":
case "month":
case "time":
case "week":
case "color":
case "range":
return "change";
default:
return "blur";
}
}
#debounceTimeout(element) {
if (element.dataset.autosubmitDebounceTimeout) {
return Number.parseInt(element.dataset.autosubmitDebounceTimeout);

View file

@ -44,7 +44,7 @@
url: valuation_path(entry),
method: :patch,
class: "space-y-2",
data: { controller: "auto-submit-form", auto_submit_form_trigger_event_value: "blur" } do |f| %>
data: { controller: "auto-submit-form" } do |f| %>
<%= f.text_area :notes,
label: t(".note_label"),
placeholder: t(".note_placeholder"),