이 방법의 핵심은 단일 <dialog> 요소를 활용하는 것입니다.
기본 설정
-
application.html.erb에id="overlay"를 가진<dialog>요소를 추가하고, 그 안에tag.turbo_frame id: :modal을 포함합니다. -
closedby="any"속성을 통해 다이얼로그 외부 클릭 또는 Escape 키로 닫히는 기능을 활성화합니다. -
Tailwind CSS 클래스를 사용하여
starting:pseudo-class와transition-all속성으로 페이드 및 스케일 애니메이션을 구현합니다.
Attractive.js 통합
app/javascript/application.js에attractivejs를 임포트하여 `dialog
openModal` 액션을 사용할 수 있도록 합니다.
link_to헬퍼에 `data: {action: “dialog
openModal”, target: “#overlay”, turbo_frame: :modal} 속성을 추가하여 모달을 엽니다. 여기서 data-action은 Attractive.js에, data-target은 ` 요소에, `data-turbo-frame`은 Turbo에 콘텐츠 로드를 지시합니다.
모달 및 슬라이더 지원 확장
-
동일한
<dialog>요소로 모달과 슬라이더를 모두 지원하기 위해type속성을 활용합니다. - CSS에서
[&[type=modal]]및[&[type=slider]]셀렉터를 사용하여 각 타입에 따른 고유한 스타일과 애니메이션을 적용합니다.- 모달: 중앙 정렬, 스케일 인 애니메이션, 모바일에서는 하단에서 위로 슬라이드 업.
- 슬라이더: 오른쪽 정렬, 화면 전체 높이, 오른쪽에서 안으로 슬라이드 인.
- 링크 클릭 시 `data: {action: “addAttribute