commit
23e3409247
3 changed files with 28 additions and 0 deletions
|
@ -10,6 +10,7 @@ import 'babel-polyfill';
|
|||
|
||||
import '../shared/sentry';
|
||||
import '../shared/rails-ujs-fix';
|
||||
import '../shared/safari-11-file-xhr-workaround';
|
||||
import '../shared/autocomplete';
|
||||
|
||||
// Start Rails helpers
|
||||
|
|
|
@ -12,6 +12,7 @@ import 'babel-polyfill';
|
|||
|
||||
import '../shared/sentry';
|
||||
import '../shared/rails-ujs-fix';
|
||||
import '../shared/safari-11-file-xhr-workaround';
|
||||
import '../shared/autocomplete';
|
||||
|
||||
import '../new_design/buttons';
|
||||
|
|
26
app/javascript/shared/safari-11-file-xhr-workaround.js
Normal file
26
app/javascript/shared/safari-11-file-xhr-workaround.js
Normal file
|
@ -0,0 +1,26 @@
|
|||
// iOS 11.3 Safari / macOS Safari 11.1 empty <input type="file"> XHR bug workaround.
|
||||
// This should work with every modern browser which supports ES5 (including IE9).
|
||||
// https://stackoverflow.com/questions/49614091/safari-11-1-ajax-xhr-form-submission-fails-when-inputtype-file-is-empty
|
||||
// https://github.com/rails/rails/issues/32440
|
||||
|
||||
document.addEventListener('ajax:before', function(e) {
|
||||
let inputs = e.target.querySelectorAll('input[type="file"]:not([disabled])');
|
||||
inputs.forEach(function(input) {
|
||||
if (input.files.length > 0) {
|
||||
return;
|
||||
}
|
||||
input.setAttribute('data-safari-temp-disabled', 'true');
|
||||
input.setAttribute('disabled', '');
|
||||
});
|
||||
});
|
||||
|
||||
// You should call this by yourself when you aborted an ajax request by stopping a event in ajax:before hook.
|
||||
document.addEventListener('ajax:beforeSend', function(e) {
|
||||
let inputs = e.target.querySelectorAll(
|
||||
'input[type="file"][data-safari-temp-disabled]'
|
||||
);
|
||||
inputs.forEach(function(input) {
|
||||
input.removeAttribute('data-safari-temp-disabled');
|
||||
input.removeAttribute('disabled');
|
||||
});
|
||||
});
|
Loading…
Reference in a new issue