Closed metanonum closed 2 years ago
Здесь можно так:
if (this.container.contains(event.target)) return;
this.counterPanel.classList.remove(typeDropDown.BLOCK_OPEN);
this.counterPanel.classList.add(typeDropDown.BLOCK_CLOSE);
if (this.open.classList.contains(typeDropDown.NAME_ACTIVE)) {
this.open.classList.remove(typeDropDown.NAME_ACTIVE);
}
Есть еще другие места.
Не все проверки содержащие более одного условия вынесены.
В данном случае лучше наверное подумать как вообще избавиться от этой цепочки if else
.
Это тоже анонимный обработчик.
И еще, в данном случае, если хочешь изменить стили после отображения первой картинки, то лучше на нее и повесить обработчик, а стили лучше менять через соответствующий модификатор.
if (date === undefined) return;
...
Имена это хорошо, но тут 4 условия. JS 1.9
Тут по 3 условия, отрицательные утверждения и длинная цепочка if else, что вкупе не читабельно JS 1.1
Почему бы не отрефакторить этот участок, например так:
const options = [strBedRooms, strBed, strBathRoom];
const optionsMaxCount = 2;
const selectedOptions = options.filter((option) => option !== '');
if (selectedOptions.length <= optionsMaxCount) {
this.inputName.value = selectedOptions.join(', ');
} else {
this.inputName.value = `${selectedOptions.slice(0, optionsMaxCount).join(', ')}...`;
}
По хорошему надо еще наверное обрезку делать по числу символов, а не выбранных опций, но это уже другой вопрос.
js-
префикса нужно брать из констант. В данном случае можно сложить их в объект вbutton-like/utils/buttonLikeClassNames.js
js-
. Кbody
лучше обращаться черезdocument.body
, но только там где это действительно нужно.js-
префиксами не имеют отношения к БЭМ, поэтому лучше подобрать им подходящие названия в lowercase-hyphenated (можно схожие с теми что есть)