site.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. // Please see documentation at https://learn.microsoft.com/aspnet/core/client-side/bundling-and-minification
  2. // for details on configuring this project to bundle and minify static web assets.
  3. // Write your JavaScript code.
  4. class Aside {
  5. constructor() {
  6. this.body = document.body;
  7. this.aside = document.getElementById("aside");
  8. this.btnAsideToggle = document.getElementById("btnAsideToggle");
  9. }
  10. // 사이드 바 토글 시
  11. toggleAside(e) {
  12. let isHidden = this.isHidden();
  13. if (isHidden) {
  14. aside.showAside();
  15. } else {
  16. aside.hideAside();
  17. }
  18. setCookie("hidden-aside", isHidden ? "visible" : "hidden", 7);
  19. }
  20. // 사이드 바 토글 시 아이콘 변경
  21. toggleAsideIcon (isHidden) {
  22. let icon = this.btnAsideToggle.querySelector("i");
  23. if (isHidden) {
  24. icon.classList.remove("bi-arrow-left");
  25. icon.classList.add("bi-arrow-right");
  26. } else {
  27. icon.classList.remove("bi-arrow-right");
  28. icon.classList.add("bi-arrow-left");
  29. }
  30. };
  31. // 숨김 여부 확인
  32. isHidden() {
  33. let isHidden = getCookie("hidden-aside") ;
  34. if (isHidden == "") {
  35. isHidden = this.body.classList.contains("hidden-aside");
  36. }
  37. return (isHidden === "hidden");
  38. }
  39. // 보이기
  40. showAside() {
  41. this.body.classList.remove("hidden-aside");
  42. this.toggleAsideIcon(0);
  43. setCookie("hidden-aside", "visible", 7);
  44. }
  45. // 숨기기
  46. hideAside() {
  47. this.body.classList.add("hidden-aside");
  48. this.toggleAsideIcon(1);
  49. setCookie("hidden-aside", "hidden", 7);
  50. }
  51. }
  52. const aside = new Aside();
  53. $(function () {
  54. // 사이드 바 토글 유지
  55. let isHidden = aside.isHidden();
  56. if (isHidden) {
  57. aside.hideAside();
  58. } else {
  59. aside.showAside();
  60. }
  61. });
  62. document.getElementById("btnAsideToggle").addEventListener("click", (e) => aside.toggleAside(e));
  63. // 화면이 작아지면
  64. window.addEventListener("resize", function () {
  65. if (window.innerWidth > 768) {
  66. aside.showAside(0);
  67. } else {
  68. aside.hideAside(1);
  69. }
  70. });
  71. // 메뉴 토글 유지
  72. const collapseElementList = document.querySelectorAll('.collapse');
  73. collapseElementList.forEach(collapseEl => {
  74. const collapseID = collapseEl.id;
  75. const collapseState = getCookie(collapseID);
  76. if (collapseState === 'open') {
  77. new bootstrap.Collapse(collapseEl, { show: true });
  78. } else if (collapseState === 'closed') {
  79. new bootstrap.Collapse(collapseEl, { toggle: false });
  80. }
  81. collapseEl.addEventListener('show.bs.collapse', () => {
  82. setCookie(collapseID, 'open', 7);
  83. });
  84. collapseEl.addEventListener('hide.bs.collapse', () => {
  85. setCookie(collapseID, 'closed', 7);
  86. });
  87. });
  88. // 드롭박스 적용
  89. const dropdownElementList = document.querySelectorAll('.dropdown-toggle');
  90. const dropdownList = [...dropdownElementList].map(dropdownToggleEl => new bootstrap.Dropdown(dropdownToggleEl));
  91. // 삭제 처리
  92. $(document).on("click", ".btn-delete-row", function (e) {
  93. e.preventDefault();
  94. if (confirm("삭제하시겠습니까?")) {
  95. location.href = e.target.closest("a").href;
  96. }
  97. });