cables_dev/cables_ui/src/ui/components/collapsable.js
const Collapsable = {};
export default Collapsable;
Collapsable.setup = function (parentEle, childEle, collapsed)
{
if (!parentEle) return;
parentEle.classList.add("collapsable");
if (!childEle)
{
if (parentEle.innerHTML.indexOf("icon-chevron") == -1)
parentEle.innerHTML = "<span class=\"icon icon-chevron-down\" style=\"opacity:0\"></span>" + parentEle.innerHTML;
return;
}
if (parentEle.innerHTML.indexOf("icon-chevron") == -1)
parentEle.innerHTML = "<span class=\"icon icon-chevron-down\"></span>" + parentEle.innerHTML;
Collapsable._setGroupCollapsed(parentEle, childEle, collapsed);
parentEle.addEventListener("click", (event) =>
{
Collapsable._toggleGroupElements(parentEle, childEle);
event.stopImmediatePropagation();
});
};
Collapsable._setGroupCollapsed = (parentEle, childEle, collapsed) =>
{
if (!collapsed)
{
childEle.classList.remove("hidden");
parentEle.children[0].classList.add("icon-chevron-down");
parentEle.children[0].classList.remove("icon-chevron-right");
}
else
{
childEle.classList.add("hidden");
parentEle.children[0].classList.remove("icon-chevron-down");
parentEle.children[0].classList.add("icon-chevron-right");
}
};
Collapsable._toggleGroupElements = (parentEle, childEle) =>
{
childEle.classList.toggle("hidden");
parentEle.children[0].classList.toggle("icon-chevron-down");
parentEle.children[0].classList.toggle("icon-chevron-right");
};