Skip to content

Commit 32a8bf6

Browse files
committed
refactor: cards, datepicker removed jquery and adapted tests
1 parent 9eff934 commit 32a8bf6

File tree

9 files changed

+252
-366
lines changed

9 files changed

+252
-366
lines changed

docs/js/materialize.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pug/page-contents/pickers_content.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<h3 class="header">Date Picker</h3>
88
<p>The datepicker allows users to select a date from an interactive calendar.</p>
99
<div class="input-field">
10-
<input id="birthdate" type="text" class="datepicker">
10+
<input id="birthdate" type="text" class="datepicker" placeholder=" ">
1111
<label for="birthdate">Birthdate</label>
1212
</div>
1313
<pre><code class="language-markup">

src/bounding.ts

+5-14
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,6 @@
1-
2-
/**
3-
* @typedef {Object} Bounding
4-
* @property {Number} left left offset coordinate
5-
* @property {Number} top top offset coordinate
6-
* @property {Number} width
7-
* @property {Number} height
8-
*/
9-
export class Bounding
10-
{
11-
public left: number;
12-
public top: number;
13-
public width: number;
14-
public height: number;
1+
export class Bounding {
2+
public left: number; // left offset coordinate
3+
public top: number;
4+
public width: number;
5+
public height: number;
156
}

src/cards.ts

+43-28
Original file line numberDiff line numberDiff line change
@@ -3,37 +3,52 @@ import anim from "animejs";
33
export class Cards {
44

55
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+
});
2145
}
2246
});
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+
});
3650
});
51+
3752
}
3853
}
3954

0 commit comments

Comments
 (0)