최대한 재사용성을 고려해서 만들긴 했는데 고쳐야할 점이 너무 많아서 어떻게 고쳐야 재사용성을 극대화시키면서 편의성도 살릴지 감도 안잡히지만
일단 만들어본 오버레이형 dialog
const createDialog = (type) => { let newDialogOverlay = document.createElement('div'); if(!setDialogContent(type)) return true; let newDialogData = dialog[type]; // new popup overlay newDialogOverlay.classList.add('dialog-overlay'); // new popup let newDialogElement = document.createElement('div'); newDialogElement.classList.add('dialog-container'); // close let dialogClose = document.createElement('span'); dialogClose.classList.add('dialog-close'); dialogClose.classList.add('dialog-close-plag'); dialogClose.innerHTML = 'X'; // title let dialogTitle = document.createElement('span'); dialogTitle.classList.add('dialog-title'); dialogTitle.innerHTML = newDialogData.title; // content let dialogContent = document.createElement('div'); dialogContent.classList.add('dialog-content'); dialogContent.innerHTML = newDialogData.body; // button let btnArea = document.createElement('div'); let btnArray = []; btnArea.classList.add('dialog-button-area'); for(let i=0;i<newDialogData.button.length;i++){ let obj = document.createElement('span'); obj.classList.add('dialog-button'); obj.innerHTML = newDialogData.button[i]; btnArray.push(obj); btnArea.appendChild(obj); } // add Element in Dialog newDialogElement.appendChild(dialogClose); newDialogElement.appendChild(dialogTitle); newDialogElement.appendChild(dialogContent); newDialogElement.appendChild(btnArea); newDialogOverlay.appendChild(newDialogElement); // create popup layer let inputLocation = document.querySelector('body').firstElementChild; inputLocation.parentElement.insertBefore(newDialogOverlay, inputLocation); // set event setEventCloseDialog(newDialogOverlay); setEventCloseDialog(dialogClose); for(let i=0;i<btnArray.length;i++){ let obj = btnArray[i]; setEventButton(type, obj, newDialogData.action[i]); } }
개인 메모 : 나머지 소스는 membership-login에 존재.