Size: a a a

Front-end developers

2020 January 23

ON

Oleksandr Nikolskyi in Front-end developers
function showPreloader(ms) {
   refreshInfo('.preloader');
   const wrapper = document.getElementById('wrapper');
   const preloader = document.createElement('div');
   preloader.classList.add('preloader');
   for (let i = 0; i < 8; i++) {
       preloader.innerHTML += <div></div>
   }
   wrapper.prepend(preloader);

   return new Promise(() => {
       setTimeout(() => {
           if (!preloader.classList.contains('preloader-done')) {
               preloader.classList.add('preloader-done');
           }
       }, ms);
   });
}

showPreloader(300);
           setTimeout(() => {
               const pageNumber = parseInt(event.target.dataset.page);

               const arrayOfRangeBreakPoints = [];
               for (let i = 1; i <= products.length; i += amountOfProductsOnOnePage) {
                   arrayOfRangeBreakPoints.push(i);
               }

               if (pageNumber === (idx + 1)) {
                   for (let i = 0; i < products.length; i++) {
                       productsEntitiesItems[i].classList.remove('products__entities__item_active');
                       if (!productsEntitiesItems[i]) {
                           break;
                       }
                   }
                   for (let i = arrayOfRangeBreakPoints[idx]; i <= amountOfProductsOnOnePage * (idx + 1); i++) {
                       productsEntitiesItems[i - 1].classList.add('products__entities__item_active');
                       if (!productsEntitiesItems[i]) {
                           break;
                       }
                   }
               }
           }, 300);
источник

DE

Denis Evlampiev in Front-end developers
Oleksandr Nikolskyi
function showPreloader(ms) {
   refreshInfo('.preloader');
   const wrapper = document.getElementById('wrapper');
   const preloader = document.createElement('div');
   preloader.classList.add('preloader');
   for (let i = 0; i < 8; i++) {
       preloader.innerHTML += <div></div>
   }
   wrapper.prepend(preloader);

   return new Promise(() => {
       setTimeout(() => {
           if (!preloader.classList.contains('preloader-done')) {
               preloader.classList.add('preloader-done');
           }
       }, ms);
   });
}

showPreloader(300);
           setTimeout(() => {
               const pageNumber = parseInt(event.target.dataset.page);

               const arrayOfRangeBreakPoints = [];
               for (let i = 1; i <= products.length; i += amountOfProductsOnOnePage) {
                   arrayOfRangeBreakPoints.push(i);
               }

               if (pageNumber === (idx + 1)) {
                   for (let i = 0; i < products.length; i++) {
                       productsEntitiesItems[i].classList.remove('products__entities__item_active');
                       if (!productsEntitiesItems[i]) {
                           break;
                       }
                   }
                   for (let i = arrayOfRangeBreakPoints[idx]; i <= amountOfProductsOnOnePage * (idx + 1); i++) {
                       productsEntitiesItems[i - 1].classList.add('products__entities__item_active');
                       if (!productsEntitiesItems[i]) {
                           break;
                       }
                   }
               }
           }, 300);
showPreloader уже возвращает промис, но не резолвит его.
Надо зарезолвить промис, а второй таймер заменить на .then()

function showPreloader(ms) {
   // ...
   return new Promise((resolve) => {
       setTimeout(() => {
           // ...
 resolve()
       }, ms);
   });
}

showPreloader(300).then(() => {
   // ... все что написано в callback-е второго таймера
});
источник

DE

Denis Evlampiev in Front-end developers
Oleksandr Nikolskyi
function showPreloader(ms) {
   refreshInfo('.preloader');
   const wrapper = document.getElementById('wrapper');
   const preloader = document.createElement('div');
   preloader.classList.add('preloader');
   for (let i = 0; i < 8; i++) {
       preloader.innerHTML += <div></div>
   }
   wrapper.prepend(preloader);

   return new Promise(() => {
       setTimeout(() => {
           if (!preloader.classList.contains('preloader-done')) {
               preloader.classList.add('preloader-done');
           }
       }, ms);
   });
}

showPreloader(300);
           setTimeout(() => {
               const pageNumber = parseInt(event.target.dataset.page);

               const arrayOfRangeBreakPoints = [];
               for (let i = 1; i <= products.length; i += amountOfProductsOnOnePage) {
                   arrayOfRangeBreakPoints.push(i);
               }

               if (pageNumber === (idx + 1)) {
                   for (let i = 0; i < products.length; i++) {
                       productsEntitiesItems[i].classList.remove('products__entities__item_active');
                       if (!productsEntitiesItems[i]) {
                           break;
                       }
                   }
                   for (let i = arrayOfRangeBreakPoints[idx]; i <= amountOfProductsOnOnePage * (idx + 1); i++) {
                       productsEntitiesItems[i - 1].classList.add('products__entities__item_active');
                       if (!productsEntitiesItems[i]) {
                           break;
                       }
                   }
               }
           }, 300);
Суровый код))
// Обращаемся к объекту и если его нет получаем ошибку
productsEntitiesItems[i].classList.remove('products__entities__item_active');
// потом проверяем есть объект или нет
if (!productsEntitiesItems[i]) {
 break;
}
источник
2020 January 24

Б

Богдан in Front-end developers
Всем привет. Есть трабла с реактом.
Мне нужно сделать HOC который бы оборачивал Transition из react-group-transition.(понимаю что дичь, но это не для работы а чисто любопытство)

1) Я при помощи инверсивного наследования получаю все поля и методы от родителя, который в данном случае оборачиваемый компонент (делаю за тем что бы вызывать его методы, пропсы и состояние).

2) Суть моей проблемы. Доступ то к его компонентам я получил то получил, а вот Render приходиться переопределять. А сделать это не могу так как изначально мне нужно обернуть этот компонент в Transition.
Можно ли каким то образом вызвать вставить дерево, получаемое от super.render() в дерево, которое будет создано this.render()
источник

В

Влад Егоров in Front-end developers
Привет всем)
В vscode можно както заменить содержание ссылоке в атрибуте href, если ссылки в каждом href разные?
Примерно вот так:
Заменить это - href="какая-то уникальная ссылка",
на вот это href="".
Мне нужно просто сделать href на всем сайте пустым. Если бы на всем сайте href имел однинаковое значение, то было бы легко.
источник

PH

Pavlo Huk in Front-end developers
через регулярку
источник

PH

Pavlo Huk in Front-end developers
источник

В

Влад Егоров in Front-end developers
Pavlo Huk
через регулярку
спасибо большое, очень выручил!)
источник

A

Alexandr in Front-end developers
Всем привет! Как сделать, чтобы Angular-приложение по ссылке отображалось таким образом? (нужна картинка и title приложения)  Заранее спасибо
источник

А

Артём in Front-end developers
Народ, кто может подсказать. Начал изучать БЕМ структуру и вот задался вопросом, а как правильно называть блоки, которые находятся внутри. Т.е. если у  нас есть допустим блок...в нем эелементы
scheme-work__list и в нем уже scheme-work__item
А вот в item еще идет блоки такие как title, img и т.д то как правильно называть их? Это же по сути отдельные блоки уже
https://jsfiddle.net/xzsw4aj8/
Пример накидал, на сколько я правильно вообще формулирую селекторы?
источник

VN

Vladimir Naumenko in Front-end developers
Артём
Народ, кто может подсказать. Начал изучать БЕМ структуру и вот задался вопросом, а как правильно называть блоки, которые находятся внутри. Т.е. если у  нас есть допустим блок...в нем эелементы
scheme-work__list и в нем уже scheme-work__item
А вот в item еще идет блоки такие как title, img и т.д то как правильно называть их? Это же по сути отдельные блоки уже
https://jsfiddle.net/xzsw4aj8/
Пример накидал, на сколько я правильно вообще формулирую селекторы?
в этом и есть главная проблема БЕМ. Будут блоки scheme-work__list__content__info__inner__data__box
источник

А

Артём in Front-end developers
Vladimir Naumenko
в этом и есть главная проблема БЕМ. Будут блоки scheme-work__list__content__info__inner__data__box
Т.е. поулчаются вообще безумные селекторы. А на сколько это адекватно, стоит ли на таких уровнях вложенности придерживаться или лучше уже изменять селекторы?)
источник

VN

Vladimir Naumenko in Front-end developers
Артём
Т.е. поулчаются вообще безумные селекторы. А на сколько это адекватно, стоит ли на таких уровнях вложенности придерживаться или лучше уже изменять селекторы?)
я не спец в БЕМе, но вроде есть сборщики типа gulp которые вот так могут
https://jsfiddle.net/0s7Lzhpf/
источник

А

Артём in Front-end developers
Vladimir Naumenko
я не спец в БЕМе, но вроде есть сборщики типа gulp которые вот так могут
https://jsfiddle.net/0s7Lzhpf/
Да это понятно, я  больше имел ввиду про саму длину классов)
источник

MP

Maksym Pohribniak in Front-end developers
Vladimir Naumenko
в этом и есть главная проблема БЕМ. Будут блоки scheme-work__list__content__info__inner__data__box
это что у тебя за БЭМ такой?
источник

MP

Maksym Pohribniak in Front-end developers
__ отделяют элементы
источник

MP

Maksym Pohribniak in Front-end developers
у элементов не может быть элементов
источник

MP

Maksym Pohribniak in Front-end developers
Дока: Элемент — всегда часть блока, а не другого элемента. Это означает, что в названии элементов нельзя прописывать иерархию вида block__elem1__elem2.
источник

А

Артём in Front-end developers
Maksym Pohribniak
Дока: Элемент — всегда часть блока, а не другого элемента. Это означает, что в названии элементов нельзя прописывать иерархию вида block__elem1__elem2.
Моежете тогда посмотреть мое сообщение выше и объяснить?)
источник

А

Артём in Front-end developers
Артём
Народ, кто может подсказать. Начал изучать БЕМ структуру и вот задался вопросом, а как правильно называть блоки, которые находятся внутри. Т.е. если у  нас есть допустим блок...в нем эелементы
scheme-work__list и в нем уже scheme-work__item
А вот в item еще идет блоки такие как title, img и т.д то как правильно называть их? Это же по сути отдельные блоки уже
https://jsfiddle.net/xzsw4aj8/
Пример накидал, на сколько я правильно вообще формулирую селекторы?
Вот его
источник