Skip to content

Commit

Permalink
Remove nearly all jQuery from ra.sidescroll.js
Browse files Browse the repository at this point in the history
All DOM methods now use native browser features.

The only remaining jQuery is used to listen to the custom jQuery event
"rails_admin.dom_ready".

Refs #2893
  • Loading branch information
jdufresne committed Nov 15, 2021
1 parent e9e6908 commit e660464
Showing 1 changed file with 14 additions and 21 deletions.
35 changes: 14 additions & 21 deletions app/assets/javascripts/rails_admin/ra.sidescroll.js
Original file line number Diff line number Diff line change
@@ -1,34 +1,27 @@
(function ($) {
function setFrozenColPositions() {
var $listForm, frozenColumns;
"use strict";

$listForm = $("#bulk_form");
if (!$listForm.is(".ra-sidescroll")) {
$(document).on("rails_admin.dom_ready", () => {
const listForm = document.getElementById("bulk_form");
if (!listForm || !listForm.classList.contains("ra-sidescroll")) {
return;
}
frozenColumns = $listForm.data("ra-sidescroll");

$listForm.find("table tr").each(function (index, tr) {
var firstPosition = 0;

$(tr)
.children()
const frozenColumns = Number(listForm.dataset.raSidescroll);
listForm.querySelectorAll("tr").forEach((tr, index) => {
let firstPosition;
Array.from(tr.children)
.slice(0, frozenColumns)
.each(function (idx, td) {
var tdLeft;
$(td).addClass("ra-sidescroll-frozen");
.forEach((td, idx) => {
td.classList.add("ra-sidescroll-frozen");
if (idx === frozenColumns - 1) {
$(td).addClass("last-of-frozen");
td.classList.add("last-of-frozen");
}
tdLeft = $(td).position().left;
if (idx === 0) {
firstPosition = tdLeft;
firstPosition = td.offsetLeft;
}
td.style.left = tdLeft - firstPosition + "px";
td.style.left = `${td.offsetLeft - firstPosition}px`;
});
});
}

$(window).on("load", setFrozenColPositions);
$(document).on("rails_admin.dom_ready", setFrozenColPositions);
});
})(jQuery);

0 comments on commit e660464

Please sign in to comment.