Skip to content

Commit 025cadc

Browse files
committed
feat: code-style
1 parent 28e56d9 commit 025cadc

File tree

8 files changed

+181
-22
lines changed

8 files changed

+181
-22
lines changed

src/components/MyPets/index.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ const events = [''];
77

88
const html = `
99
<div class="my-pets" data-select="my-pets">
10-
1110
</div>
1211
`;
1312

@@ -18,9 +17,12 @@ export default function MyPets() {
1817

1918
const myPetsCard = new MyPetsCard({
2019
name: 'Kelvo',
20+
gender: 'male',
2121
race: 'Cachorro',
2222
type: 'Humano',
23+
desc: 'Mistura marrom-escura-branca, com sobrancelhas claras e uma mancha em forma de coração na pata esquerda.',
2324
});
25+
2426
const div = document.createElement('div');
2527
myPetsCard.mount(div);
2628

src/components/MyPetsCard/index.js

Lines changed: 35 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,56 +4,75 @@ import PetAvatar from '../PetAvatar';
44
import akita from '../AddPet/assets/akita.svg';
55

66
import './index.scss';
7+
import PetGender from '../PetGender';
78

89
const events = [''];
910

1011
const html = `
1112
<div class="my-pets-card" data-select="my-pets-card">
1213
<div class="my-pets-card__text">
13-
<span class="my-pets-card__pet-name" data-select="my-pets-card-name"></span>
14-
<div class="my-pets-card__pet-info"/>
15-
<span data-select="my-pets-card-race"></span>
16-
|
17-
<span data-select="my-pets-card-type"></span>
14+
<div data-select="icon-container"></div>
15+
<div>
16+
<span class="my-pets-card__pet-name" data-select="name"></span>
17+
<div class="my-pets-card__pet-info"/>
18+
<span data-select="race"></span>
19+
|
20+
<span data-select="type"></span>
21+
</div>
1822
</div>
23+
<p class="my-pets-card__pet-desc" data-select="desc">
24+
</p>
1925
</div>
20-
<div data-select="my-pets-card-avatar">
21-
</div>
26+
<div class="my-pets-card__avatar" data-select="avatar"/>
2227
</div>
2328
`;
2429

2530
export default function MyPetsCard({
2631
name = '',
2732
type = '',
2833
race = '',
34+
desc = '',
35+
gender = 'male',
2936
avatar,
3037
}) {
3138
Component.call(this, { html, events });
3239

33-
this.insertText({ name, type, race, avatar });
40+
this.insertText({ name, type, race, avatar, desc });
41+
42+
const $iconContainer = this.selected.get('icon-container');
43+
44+
const petGender = new PetGender({ gender });
45+
petGender.selected
46+
.get('pet-gender-icon')
47+
.classList.add('my-pets-card__pet-gender');
48+
49+
petGender.mount($iconContainer);
3450
}
3551

3652
MyPetsCard.prototype = Object.assign(
3753
MyPetsCard.prototype,
3854
Component.prototype,
3955
{
40-
insertText({ name, type, race }) {
41-
const $name = this.selected.get('my-pets-card-name');
42-
const $type = this.selected.get('my-pets-card-type');
43-
const $race = this.selected.get('my-pets-card-race');
44-
const $avatar = this.selected.get('my-pets-card-avatar');
56+
insertText({ name, type, race, desc }) {
57+
const $name = this.selected.get('name');
58+
const $type = this.selected.get('type');
59+
const $race = this.selected.get('race');
60+
const $desc = this.selected.get('desc');
61+
const $avatar = this.selected.get('avatar');
4562

4663
const petAvatar = new PetAvatar({
4764
imgAlt: 'breed alt description',
4865
imgSrc: akita,
4966
});
50-
const $petAvatarDiv = document.createElement('div');
51-
petAvatar.mount($petAvatarDiv);
67+
petAvatar.mount($avatar);
68+
69+
const $petAvatarImg = petAvatar.selected.get('pet-image');
70+
$petAvatarImg.classList.add('my-pets-card__pet-avatar-image');
5271

5372
$name.textContent = name;
5473
$type.textContent = type;
5574
$race.textContent = race;
56-
$avatar.appendChild($petAvatarDiv);
75+
$desc.textContent = desc;
5776
},
5877
},
5978
);

src/components/MyPetsCard/index.scss

Lines changed: 98 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,134 @@
11
@use '~styles/colors.scss' as colors;
22
@use '~styles/fonts.scss' as fonts;
3+
@use '~styles/breakpoints.scss' as breakpoints;
34

45
.my-pets-card {
6+
max-width: 63.8rem;
7+
height: 100%;
8+
max-height: 13.7rem;
9+
510
display: flex;
611

712
justify-content: space-between;
813

9-
padding: 1.6rem 2rem;
14+
padding: 1.5rem 2rem;
15+
1016
border: 1px solid colors.$gray100;
1117

1218
background-color: colors.$primary200;
1319
border-radius: 14px;
1420

1521
&__text {
22+
width: 50%;
1623
height: 100%;
1724

1825
display: flex;
1926
flex-direction: column;
2027

21-
gap: 0.4rem;
28+
color: colors.$white;
29+
30+
margin: auto 0;
2231
}
2332

2433
&__pet-name {
2534
font-family: fonts.$primaryFont;
2635

27-
color: colors.$white;
2836
font-size: fonts.$md;
2937
font-weight: fonts.$semiBold;
30-
line-height: 30px;
38+
line-height: 2;
3139
}
3240

3341
&__pet-info {
3442
font-family: fonts.$fourthFont;
3543

36-
color: colors.$white;
3744
font-size: fonts.$xs;
3845
font-weight: fonts.$regular;
3946
line-height: 20px;
4047
}
48+
49+
&__pet-desc {
50+
display: none;
51+
}
52+
53+
&__gradient {
54+
height: 100%;
55+
56+
padding: 2rem;
57+
58+
background: rgba(255, 255, 255, 0.0392156862745098);
59+
60+
border-radius: 50%;
61+
}
62+
63+
&__avatar {
64+
max-width: 50%;
65+
max-height: 50%;
66+
67+
padding: 2rem;
68+
69+
background: rgb(62, 152, 244);
70+
71+
box-shadow:
72+
0 0 0 2rem rgb(45, 143, 243),
73+
0 0 0 4rem rgb(36, 138, 243);
74+
75+
border-radius: 50%;
76+
}
77+
78+
&__pet-avatar-image {
79+
max-width: 100px;
80+
max-height: 100px;
81+
82+
background: colors.$white !important;
83+
}
84+
85+
&__pet-gender {
86+
display: none;
87+
}
88+
}
89+
90+
@include breakpoints.from667 {
91+
.my-pets-card {
92+
max-height: none;
93+
94+
padding: 4rem;
95+
96+
&__pet-name {
97+
font-family: fonts.$primaryFont;
98+
99+
font-size: fonts.$lg;
100+
font-weight: fonts.$semiBold;
101+
line-height: 34px;
102+
103+
margin-top: 0.4rem;
104+
}
105+
106+
&__pet-info {
107+
font-family: fonts.$fourthFont;
108+
109+
font-size: fonts.$md;
110+
font-weight: fonts.$regular;
111+
line-height: 2;
112+
113+
margin-top: 0.2rem;
114+
}
115+
116+
&__pet-desc {
117+
display: block;
118+
119+
font-family: fonts.$fourthFont;
120+
font-size: 1.6rem;
121+
font-weight: fonts.$regular;
122+
line-height: 24px;
123+
124+
margin-top: 3.6rem;
125+
}
126+
127+
&__pet-avatar-image {
128+
max-width: none;
129+
max-height: none;
130+
131+
background: colors.$white;
132+
}
133+
}
41134
}

src/components/PetAvatar/index.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ export default function PetAvatar({ id = '', title, imgSrc, imgAlt } = {}) {
1919
if (imgSrc) this.setImgSrc(imgSrc);
2020
if (imgAlt) this.setImgAlt(imgAlt);
2121

22+
const $title = this.selected.get('pet-title');
23+
if (!title) $title.classList.add('hidden');
24+
2225
if (routeLocation().pathname === `/petperfil/${id}`) {
2326
this.activate();
2427
}

src/components/PetAvatar/index.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@
4545
color: colors.$primary200;
4646
font-weight: fonts.$semiBold;
4747
}
48+
49+
&--hidden {
50+
display: none;
51+
}
4852
}
4953

5054
&:hover {
Lines changed: 4 additions & 0 deletions
Loading
Lines changed: 4 additions & 0 deletions
Loading

src/components/PetGender/index.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { Component } from 'pet-dex-utilities';
2+
import female from './images/femaleIcon.svg';
3+
import male from './images/maleIcon.svg';
4+
5+
const events = [''];
6+
7+
const html = `
8+
<img class="pet-gender__img" data-select="pet-gender-icon"/>
9+
`;
10+
11+
export default function PetGender({ gender = 'male' }) {
12+
Component.call(this, { html, events });
13+
14+
if (gender === 'male') this.setGender('male');
15+
if (gender === 'female') this.setGender('female');
16+
}
17+
18+
PetGender.prototype = Object.assign(PetGender.prototype, Component.prototype, {
19+
getGender() {},
20+
setGender(gender) {
21+
const icon = this.selected.get('pet-gender-icon');
22+
23+
if (gender === 'male') {
24+
icon.src = male;
25+
}
26+
if (gender === 'female') {
27+
icon.src = female;
28+
}
29+
},
30+
});

0 commit comments

Comments
 (0)