Skip to content

Commit

Permalink
Change dom_ready event name to use colon as the separator
Browse files Browse the repository at this point in the history
... which is the standard way for adding prefixes. The old event name still triggers for compatibility.
Refs. #3600
  • Loading branch information
mshibuya committed Feb 15, 2023
1 parent edd9f24 commit 2ee43de
Show file tree
Hide file tree
Showing 8 changed files with 62 additions and 10 deletions.
17 changes: 17 additions & 0 deletions spec/dummy_app/app/assets/javascripts/rails_admin/custom/ui.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
window.domReadyTriggered = [];

document.addEventListener("rails_admin:dom_ready", function () {
window.domReadyTriggered.push("plainjs/colon");
});

document.addEventListener("rails_admin.dom_ready", function () {
window.domReadyTriggered.push("plainjs/dot");
});

$(document).on("rails_admin:dom_ready", function () {
window.domReadyTriggered.push("jquery/colon");
});

$(document).on("rails_admin.dom_ready", function () {
window.domReadyTriggered.push("jquery/dot");
});
18 changes: 18 additions & 0 deletions spec/dummy_app/app/javascript/rails_admin.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,21 @@ import "trix";
import "@rails/actiontext";
import * as ActiveStorage from "@rails/activestorage";
ActiveStorage.start();

window.domReadyTriggered = [];

document.addEventListener("rails_admin:dom_ready", function () {
window.domReadyTriggered.push("plainjs/colon");
});

document.addEventListener("rails_admin.dom_ready", function () {
window.domReadyTriggered.push("plainjs/dot");
});

$(document).on("rails_admin:dom_ready", function () {
window.domReadyTriggered.push("jquery/colon");
});

$(document).on("rails_admin.dom_ready", function () {
window.domReadyTriggered.push("jquery/dot");
});
9 changes: 8 additions & 1 deletion spec/integration/rails_admin_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@
is_expected.to have_content 'Details for Player'
end

it 'triggers rails_admin.dom_ready right after a validation error' do
it 'triggers rails_admin:dom_ready right after a validation error' do
visit edit_path(model_name: 'player', id: player.id)
fill_in 'player[name]', with: 'on steroids'
find_button('Save').trigger 'click'
Expand All @@ -206,6 +206,13 @@
end
end

describe 'dom_ready events', js: true do
it 'trigger properly' do
visit dashboard_path
expect(evaluate_script('domReadyTriggered')).to match_array %w[plainjs/colon plainjs/dot jquery/colon jquery/dot]
end
end

context 'with invalid model name' do
it "redirects to dashboard and inform the user the model wasn't found" do
visit '/admin/whatever'
Expand Down
5 changes: 3 additions & 2 deletions src/rails_admin/nested-form-hooks.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,9 @@ import * as bootstrap from "bootstrap";
toggler = controls.find(".toggler");
nav.append(new_tab);

const event = new CustomEvent("rails_admin.dom_ready", { detail: field });
document.dispatchEvent(event);
document.dispatchEvent(
new CustomEvent("rails_admin:dom_ready", { detail: field })
);

new_tab.children("a").each(function (index, element) {
bootstrap.Tab.getOrCreateInstance(element).show();
Expand Down
5 changes: 3 additions & 2 deletions src/rails_admin/remote-form.js
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,9 @@ import * as bootstrap from "bootstrap";
})
.html(saveButtonText);

const event = new CustomEvent("rails_admin.dom_ready", { detail: form });
document.dispatchEvent(event);
document.dispatchEvent(
new CustomEvent("rails_admin:dom_ready", { detail: form })
);

form.bind("ajax:complete", function (event) {
var data = event.detail[0];
Expand Down
2 changes: 1 addition & 1 deletion src/rails_admin/sidescroll.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"use strict";

{
document.addEventListener("rails_admin.dom_ready", () => {
document.addEventListener("rails_admin:dom_ready", () => {
const scroller = document.getElementById("sidescroll");
if (!scroller) {
return;
Expand Down
14 changes: 11 additions & 3 deletions src/rails_admin/ui.js
Original file line number Diff line number Diff line change
Expand Up @@ -82,13 +82,12 @@ import I18n from "./i18n";
function triggerDomReady() {
I18n.init($("html").attr("lang"), $("#admin-js").data("i18nOptions"));

const event = new CustomEvent("rails_admin.dom_ready");
document.dispatchEvent(event);
document.dispatchEvent(new CustomEvent("rails_admin:dom_ready"));
}
$(document).ready(triggerDomReady);
document.addEventListener("turbo:render", triggerDomReady);

document.addEventListener("rails_admin.dom_ready", function () {
document.addEventListener("rails_admin:dom_ready", function (event) {
$(".nav.nav-pills li.active").removeClass("active");
$(
'.nav.nav-pills li[data-model="' + $(".page-header").data("model") + '"]'
Expand Down Expand Up @@ -129,6 +128,15 @@ import I18n from "./i18n";
$("a[data-method]").on("click", function (event) {
window.Turbo.session.drive = false;
});

// Trigger with the old event name for compatibility with existing user codes
document.dispatchEvent(
new CustomEvent("rails_admin.dom_ready", { detail: event.detail })
);
$(document).trigger(
"rails_admin.dom_ready",
event.detail ? [event.detail] : null
);
});

$(document).on("click", ".bulk-link", function (event) {
Expand Down
2 changes: 1 addition & 1 deletion src/rails_admin/widgets.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import flatpickr from "flatpickr";
import I18n from "./i18n";

(function ($) {
document.addEventListener("rails_admin.dom_ready", function (event) {
document.addEventListener("rails_admin:dom_ready", function (event) {
var $editors,
array,
config_options,
Expand Down

0 comments on commit 2ee43de

Please sign in to comment.