Home Reference Source

cables_dev/cables_ui/src/ui/components/collapsable.js

  1. const Collapsable = {};
  2. export default Collapsable;
  3. Collapsable.setup = function (parentEle, childEle, collapsed)
  4. {
  5. if (!parentEle) return;
  6. parentEle.classList.add("collapsable");
  7. if (!childEle)
  8. {
  9. if (parentEle.innerHTML.indexOf("icon-chevron") == -1)
  10. parentEle.innerHTML = "<span class=\"icon icon-chevron-down\" style=\"opacity:0\"></span>" + parentEle.innerHTML;
  11. return;
  12. }
  13. if (parentEle.innerHTML.indexOf("icon-chevron") == -1)
  14. parentEle.innerHTML = "<span class=\"icon icon-chevron-down\"></span>" + parentEle.innerHTML;
  15. Collapsable._setGroupCollapsed(parentEle, childEle, collapsed);
  16. parentEle.addEventListener("click", (event) =>
  17. {
  18. Collapsable._toggleGroupElements(parentEle, childEle);
  19. event.stopImmediatePropagation();
  20. });
  21. };
  22. Collapsable._setGroupCollapsed = (parentEle, childEle, collapsed) =>
  23. {
  24. if (!collapsed)
  25. {
  26. childEle.classList.remove("hidden");
  27. parentEle.children[0].classList.add("icon-chevron-down");
  28. parentEle.children[0].classList.remove("icon-chevron-right");
  29. }
  30. else
  31. {
  32. childEle.classList.add("hidden");
  33. parentEle.children[0].classList.remove("icon-chevron-down");
  34. parentEle.children[0].classList.add("icon-chevron-right");
  35. }
  36. };
  37. Collapsable._toggleGroupElements = (parentEle, childEle) =>
  38. {
  39. childEle.classList.toggle("hidden");
  40. parentEle.children[0].classList.toggle("icon-chevron-down");
  41. parentEle.children[0].classList.toggle("icon-chevron-right");
  42. };