Skip to content

Commit 3680b33

Browse files
committed
[PRAC/cont] Correct logic for adding icons
Exclude spans, change to ::before/after logic in "add-client" btn. Worth noting: - not full states/transitions synchronization, i.e. the button and icons. core: B-3 / JS-BL
1 parent 78952df commit 3680b33

File tree

2 files changed

+33
-49
lines changed

2 files changed

+33
-49
lines changed

core-courses/3-js-basic-level/practicum-js-basic-level/sb-crm-client/css/crm-add.css

Lines changed: 32 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -24,64 +24,56 @@
2424
color: var(--main-purple);
2525
background: transparent;
2626
outline: none;
27-
overflow: hidden;
2827
transition-property: border, color, background-color;
29-
transition-duration: var(--short);
28+
transition-duration: 0.2s;
3029
transition-timing-function: ease;
3130
}
3231

33-
.crm__add-btn:focus-visible:not(:hover) {
34-
color: var(--white);
35-
background-color: var(--dark-purple);
36-
}
37-
38-
.crm__add-btn:focus-visible:not(:hover) .default-add-icon {
39-
opacity: 0;
32+
.crm__add-btn::before,
33+
.crm__add-btn::after {
34+
content: "";
35+
position: absolute;
36+
left: 22px;
37+
width: 22px;
38+
height: 16px;
39+
background-repeat: no-repeat;
40+
background-position: center;
41+
background-size: contain;
42+
transition: opacity 0.2s ease;
4043
}
4144

42-
.crm__add-btn:focus-visible:not(:hover) .white-add-icon {
45+
.crm__add-btn::before {
46+
background-image: url('../images/add-client.svg');
4347
opacity: 1;
4448
}
4549

46-
.crm__add-btn:focus-visible:active {
47-
color: var(--gray);
48-
}
49-
50-
.crm__add-btn:active {
51-
border: 1px solid var(--gray);
52-
color: var(--gray);
53-
background-color: transparent;
54-
}
55-
56-
.crm__add-btn:active .default-add-icon {
50+
.crm__add-btn::after {
5751
opacity: 0;
5852
}
5953

60-
.crm__add-btn:active .gray-add-icon {
54+
.crm__add-btn:focus-visible::after {
55+
background-image: url('../images/add-client-white.svg');
6156
opacity: 1;
6257
}
6358

64-
.crm__add-btn-icon {
65-
position: absolute;
66-
left: 27px;
67-
width: 22px;
68-
height: 16px;
69-
transition: opacity var(--short) ease;
59+
.crm__add-btn:active::after {
60+
background-image: url('../images/add-client-gray.svg');
61+
opacity: 1;
7062
}
7163

72-
.default-add-icon {
73-
background: url('../images/add-client.svg') no-repeat center / contain;
74-
opacity: 1;
64+
.crm__add-btn:focus-visible:not(:hover) {
65+
color: var(--white);
66+
background-color: var(--dark-purple);
7567
}
7668

77-
.white-add-icon {
78-
background: url('../images/add-client-white.svg') no-repeat center / contain;
79-
opacity: 0;
69+
.crm__add-btn:focus-visible:active {
70+
color: var(--gray);
8071
}
8172

82-
.gray-add-icon {
83-
background: url('../images/add-client-gray.svg') no-repeat center / contain;
84-
opacity: 0;
73+
.crm__add-btn:active {
74+
border: 1px solid var(--gray);
75+
color: var(--gray);
76+
background-color: transparent;
8577
}
8678

8779
/* media queries, any-hover */
@@ -92,11 +84,12 @@
9284
background-color: var(--light-purple);
9385
}
9486

95-
.crm__add-btn:hover:not(:active) .default-add-icon {
87+
.crm__add-btn:hover::before {
9688
opacity: 0;
9789
}
9890

99-
.crm__add-btn:hover:not(:active) .white-add-icon {
91+
.crm__add-btn:hover:not(:active)::after {
92+
background-image: url('../images/add-client-white.svg');
10093
opacity: 1;
10194
}
10295
}

core-courses/3-js-basic-level/practicum-js-basic-level/sb-crm-client/js/index.js

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -234,10 +234,6 @@
234234
// организация кнопки/модального окна для добавления клиентов (удаления/изменения)
235235
const addBtnWrap = document.createElement('div');
236236
const addBtn = document.createElement('button');
237-
const addBtnDefaultIcon = document.createElement('span');
238-
const addBtnWhiteIcon = document.createElement('span');
239-
const addBtnGrayIcon = document.createElement('span');
240-
const addBtnText = document.createElement('span');
241237
const addModalWrap = document.createElement('div');
242238
const addModalDialog = document.createElement('div');
243239
const addModalContent = document.createElement('div');
@@ -274,10 +270,6 @@
274270

275271
addBtnWrap.classList.add('crm__add-btn-wrap');
276272
addBtn.classList.add('crm__add-btn');
277-
addBtnDefaultIcon.classList.add('crm__add-btn-icon', 'default-add-icon');
278-
addBtnWhiteIcon.classList.add('crm__add-btn-icon', 'white-add-icon');
279-
addBtnGrayIcon.classList.add('crm__add-btn-icon', 'gray-add-icon');
280-
addBtnText.classList.add('crm__add-btn-text');
281273
addModalWrap.classList.add('modal', 'crm__add-btn-modal', 'fade');
282274
addModalDialog.classList.add('modal__add-dialog', 'modal-dialog');
283275
addModalContent.classList.add('modal__add-content-wrap', 'modal-content');
@@ -434,7 +426,7 @@
434426
addModalFooterCancelBtn.setAttribute('type', 'button');
435427
addModalFooterCancelBtn.setAttribute('data-bs-dismiss', 'modal');
436428

437-
addBtnText.textContent = 'Добавить клиента';
429+
addBtn.textContent = 'Добавить клиента';
438430
addModalHeaderTitle.textContent = 'Новый клиент';
439431
addModalBodySurnameInputLabel.textContent = 'Фамилия';
440432
addModalBodySurnameLabelSpan.textContent = '*';
@@ -451,7 +443,6 @@
451443
addModalBodySaveBtn.textContent = 'Сохранить';
452444
addModalFooterCancelBtn.textContent = 'Отмена';
453445

454-
addBtn.append(addBtnDefaultIcon, addBtnWhiteIcon, addBtnGrayIcon, addBtnText);
455446
addBtnWrap.append(addBtn);
456447
addModalHeader.append(addModalHeaderTitle, addModalHeaderXBtn);
457448
addModalBodySurnameInputLabel.append(addModalBodySurnameLabelSpan);

0 commit comments

Comments
 (0)