Skip to content

Commit 674ef1b

Browse files
committed
fix label edit form submit
1 parent 2ef46e6 commit 674ef1b

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

web_src/js/features/common-fetch-action.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,12 @@ async function fetchActionDoRequest(actionElem: HTMLElement, url: string, opt: R
5656
actionElem.classList.remove('is-loading', 'loading-icon-2px');
5757
}
5858

59-
async function formFetchAction(formEl: HTMLFormElement, e: SubmitEvent) {
59+
async function onFormFetchActionSubmit(formEl: HTMLFormElement, e: SubmitEvent) {
6060
e.preventDefault();
61+
await submitFormFetchAction(formEl, submitEventSubmitter(e));
62+
}
63+
64+
export async function submitFormFetchAction(formEl: HTMLFormElement, formSubmitter?: HTMLElement) {
6165
if (formEl.classList.contains('is-loading')) return;
6266

6367
formEl.classList.add('is-loading');
@@ -68,7 +72,6 @@ async function formFetchAction(formEl: HTMLFormElement, e: SubmitEvent) {
6872
const formMethod = formEl.getAttribute('method') || 'get';
6973
const formActionUrl = formEl.getAttribute('action');
7074
const formData = new FormData(formEl);
71-
const formSubmitter = submitEventSubmitter(e);
7275
const [submitterName, submitterValue] = [formSubmitter?.getAttribute('name'), formSubmitter?.getAttribute('value')];
7376
if (submitterName) {
7477
formData.append(submitterName, submitterValue || '');
@@ -96,7 +99,7 @@ async function formFetchAction(formEl: HTMLFormElement, e: SubmitEvent) {
9699
await fetchActionDoRequest(formEl, reqUrl, reqOpt);
97100
}
98101

99-
async function linkAction(el: HTMLElement, e: Event) {
102+
async function onLinkActionClick(el: HTMLElement, e: Event) {
100103
// A "link-action" can post AJAX request to its "data-url"
101104
// Then the browser is redirected to: the "redirect" in response, or "data-redirect" attribute, or current URL by reloading.
102105
// If the "link-action" has "data-modal-confirm" attribute, a confirm modal dialog will be shown before taking action.
@@ -126,6 +129,6 @@ async function linkAction(el: HTMLElement, e: Event) {
126129
}
127130

128131
export function initGlobalFetchAction() {
129-
addDelegatedEventListener(document, 'submit', '.form-fetch-action', formFetchAction);
130-
addDelegatedEventListener(document, 'click', '.link-action', linkAction);
132+
addDelegatedEventListener(document, 'submit', '.form-fetch-action', onFormFetchActionSubmit);
133+
addDelegatedEventListener(document, 'click', '.link-action', onLinkActionClick);
131134
}

web_src/js/features/comp/LabelEdit.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import {toggleElem} from '../../utils/dom.ts';
22
import {fomanticQuery} from '../../modules/fomantic/base.ts';
3+
import {submitFormFetchAction} from "../common-fetch-action.ts";
34

45
function nameHasScope(name: string): boolean {
56
return /.*[^/]\/[^/].*/.test(name);
@@ -70,7 +71,7 @@ export function initCompLabelEdit(pageSelector: string) {
7071
form.reportValidity();
7172
return false;
7273
}
73-
form.dispatchEvent(new Event('submit', {bubbles: true}));
74+
submitFormFetchAction(form);
7475
},
7576
}).modal('show');
7677
};

0 commit comments

Comments
 (0)