@@ -23,31 +23,44 @@ export default function SilkyModalPage() {
2323 < dialog id = "mydialog" ref = { ( e ) => {
2424 if ( ! e ) return
2525 const content = e . querySelector < HTMLDivElement > ( '[data-dialog-content]' ) !
26- const observer = new IntersectionObserver ( ( [ entry ] ) => ! entry . isIntersecting && e . close ( ) )
26+ let visible = false
27+ const observer = new IntersectionObserver ( ( [ entry ] ) => {
28+ visible = entry . isIntersecting
29+ if ( ! visible ) e . close ( )
30+ } )
2731 observer . observe ( content )
2832 return ( ) => observer . disconnect ( )
2933 } } >
3034 < div data-dialog-bumper = "top" />
31- < div data-dialog-content >
32- < button commandfor = "mydialog" command = "close" > Close</ button >
33- < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
34- < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
35- < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
36- < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
37- < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
38- < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
39- < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
40- < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
41- < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
42- < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
43- < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
44- < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
45- < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
46- < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
47- < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
48- < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
49- < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
50- < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
35+ < div data-dialog-area >
36+ < div data-dialog-content >
37+ < button
38+ commandfor = "mydialog"
39+ command = "close"
40+ onClick = { ( e ) => {
41+ e . preventDefault ( )
42+ e . currentTarget . closest < HTMLDialogElement > ( 'dialog' ) ! . scrollTo ( { top : 0 , behavior : 'smooth' } )
43+ } }
44+ > Close</ button >
45+ < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
46+ < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
47+ < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
48+ < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
49+ < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
50+ < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
51+ < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
52+ < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
53+ < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
54+ < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
55+ < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
56+ < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
57+ < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
58+ < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
59+ < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
60+ < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
61+ < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
62+ < p > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque aliquam odio et faucibus.</ p >
63+ </ div >
5164 </ div >
5265 < div data-dialog-bumper = "bottom" />
5366 </ dialog >
0 commit comments