@@ -3,37 +3,52 @@ import anim from "animejs";
3
3
export class Cards {
4
4
5
5
static Init ( ) {
6
- document . querySelectorAll ( '.card' ) . forEach ( ( card : HTMLElement ) => {
7
- const cardReveal = < HTMLElement | null > Array . from ( card . children ) . find ( elem => elem . classList . contains ( 'card-reveal' ) ) ;
8
- if ( ! cardReveal ) return ;
9
- const initialOverflow = getComputedStyle ( card ) . overflow ;
10
- // Close Card
11
- const closeArea = cardReveal . querySelector ( '.card-reveal .card-title' ) ;
12
- closeArea ?. addEventListener ( 'click' , e => {
13
- anim ( {
14
- targets : cardReveal ,
15
- translateY : 0 ,
16
- duration : 225 ,
17
- easing : 'easeInOutQuad' ,
18
- complete : ( anim ) => {
19
- cardReveal . style . display = 'none' ;
20
- card . style . overflow = initialOverflow ;
6
+
7
+ document . addEventListener ( "DOMContentLoaded" , ( ) => {
8
+ document . body . addEventListener ( 'click' , e => {
9
+ const trigger = < HTMLElement > e . target ;
10
+
11
+ const card : HTMLElement = trigger . closest ( '.card' ) ;
12
+ if ( ! card ) return ;
13
+
14
+ const cardReveal = < HTMLElement | null > Array . from ( card . children ) . find ( elem => elem . classList . contains ( 'card-reveal' ) ) ;
15
+ if ( ! cardReveal ) return ;
16
+ const initialOverflow = getComputedStyle ( card ) . overflow ;
17
+
18
+ // Close Card
19
+ const closeArea = cardReveal . querySelector ( '.card-reveal .card-title' ) ;
20
+ if ( trigger === closeArea || closeArea . contains ( trigger ) ) {
21
+ anim ( {
22
+ targets : cardReveal ,
23
+ translateY : 0 ,
24
+ duration : 225 ,
25
+ easing : 'easeInOutQuad' ,
26
+ complete : ( anim ) => {
27
+ cardReveal . style . display = 'none' ;
28
+ card . style . overflow = initialOverflow ;
29
+ }
30
+ } ) ;
31
+ } ;
32
+
33
+ // Reveal Card
34
+ const activators = card . querySelectorAll ( '.activator' ) ;
35
+ activators . forEach ( activator => {
36
+ if ( trigger === activator || activator . contains ( trigger ) ) {
37
+ card . style . overflow = 'hidden' ;
38
+ cardReveal . style . display = 'block' ;
39
+ anim ( {
40
+ targets : cardReveal ,
41
+ translateY : '-100%' ,
42
+ duration : 300 ,
43
+ easing : 'easeInOutQuad'
44
+ } ) ;
21
45
}
22
46
} ) ;
23
- } ) ;
24
- // Reveal Card
25
- const activators = card . querySelectorAll ( '.activator' ) ;
26
- activators . forEach ( activator => activator . addEventListener ( 'click' , e => {
27
- card . style . overflow = 'hidden' ;
28
- cardReveal . style . display = 'block' ;
29
- anim ( {
30
- targets : cardReveal ,
31
- translateY : '-100%' ,
32
- duration : 300 ,
33
- easing : 'easeInOutQuad'
34
- } ) ;
35
- } ) ) ;
47
+
48
+
49
+ } ) ;
36
50
} ) ;
51
+
37
52
}
38
53
}
39
54
0 commit comments