diff --git a/app/javascript/shared/rails-ujs-fix.js b/app/javascript/shared/rails-ujs-fix.js index f36330901..eb169d35c 100644 --- a/app/javascript/shared/rails-ujs-fix.js +++ b/app/javascript/shared/rails-ujs-fix.js @@ -20,10 +20,20 @@ delegate('ajax:send', '[data-remote]', ({ target }) => { // jQuery-less version of rails-ujs it breaks. // https://github.com/Sology/smart_listing/blob/master/app/assets/javascripts/smart_listing.coffee.erb#L9 addEventListener('load', () => { - const { href } = Rails; + const { href, handleRemote } = Rails; Rails.href = function(element) { return element.href || href(element); }; + Rails.handleRemote = function(e) { + if (this instanceof HTMLElement) { + handleRemote.call(this, e); + } else { + let element = e.find('[data-remote]')[0]; + let event = new CustomEvent('click'); + Object.defineProperty(event, 'target', { value: element }); + return handleRemote.call(element, event); + } + }; }); // rails-ujs installs CSRFProtection for its own ajax implementation. We might need