mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Enable multiple submit buttons for Active Storage forms
This commit is contained in:
parent
87d5415f0a
commit
880f977925
2 changed files with 22 additions and 2 deletions
|
@ -855,14 +855,21 @@
|
|||
return DirectUploadsController;
|
||||
}();
|
||||
var processingAttribute = "data-direct-uploads-processing";
|
||||
var submitButtonsByForm = new WeakMap;
|
||||
var started = false;
|
||||
function start() {
|
||||
if (!started) {
|
||||
started = true;
|
||||
document.addEventListener("click", didClick, true);
|
||||
document.addEventListener("submit", didSubmitForm);
|
||||
document.addEventListener("ajax:before", didSubmitRemoteElement);
|
||||
}
|
||||
}
|
||||
function didClick(event) {
|
||||
if (event.target.tagName == "INPUT" && event.target.type == "submit" && event.target.form) {
|
||||
submitButtonsByForm.set(event.target.form, event.target);
|
||||
}
|
||||
}
|
||||
function didSubmitForm(event) {
|
||||
handleFormSubmissionEvent(event);
|
||||
}
|
||||
|
@ -894,7 +901,8 @@
|
|||
}
|
||||
}
|
||||
function submitForm(form) {
|
||||
var button = findElement(form, "input[type=submit]");
|
||||
var button = submitButtonsByForm.get(form) || findElement(form, "input[type=submit]");
|
||||
|
||||
if (button) {
|
||||
var _button = button, disabled = _button.disabled;
|
||||
button.disabled = false;
|
||||
|
@ -909,6 +917,7 @@
|
|||
button.click();
|
||||
form.removeChild(button);
|
||||
}
|
||||
submitButtonsByForm.delete(form);
|
||||
}
|
||||
function disable(input) {
|
||||
input.disabled = true;
|
||||
|
|
|
@ -2,16 +2,25 @@ import { DirectUploadsController } from "./direct_uploads_controller"
|
|||
import { findElement } from "./helpers"
|
||||
|
||||
const processingAttribute = "data-direct-uploads-processing"
|
||||
const submitButtonsByForm = new WeakMap
|
||||
let started = false
|
||||
|
||||
export function start() {
|
||||
if (!started) {
|
||||
started = true
|
||||
document.addEventListener("click", didClick, true)
|
||||
document.addEventListener("submit", didSubmitForm)
|
||||
document.addEventListener("ajax:before", didSubmitRemoteElement)
|
||||
}
|
||||
}
|
||||
|
||||
function didClick(event) {
|
||||
const { target } = event
|
||||
if (target.tagName == "INPUT" && target.type == "submit" && target.form) {
|
||||
submitButtonsByForm.set(target.form, target)
|
||||
}
|
||||
}
|
||||
|
||||
function didSubmitForm(event) {
|
||||
handleFormSubmissionEvent(event)
|
||||
}
|
||||
|
@ -49,7 +58,8 @@ function handleFormSubmissionEvent(event) {
|
|||
}
|
||||
|
||||
function submitForm(form) {
|
||||
let button = findElement(form, "input[type=submit]")
|
||||
let button = submitButtonsByForm.get(form) || findElement(form, "input[type=submit]")
|
||||
|
||||
if (button) {
|
||||
const { disabled } = button
|
||||
button.disabled = false
|
||||
|
@ -64,6 +74,7 @@ function submitForm(form) {
|
|||
button.click()
|
||||
form.removeChild(button)
|
||||
}
|
||||
submitButtonsByForm.delete(form)
|
||||
}
|
||||
|
||||
function disable(input) {
|
||||
|
|
Loading…
Reference in a new issue