orenchuck

estee lauder 3 dropdowns

Jun 20th, 2022 (edited)
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (function() {
  2.         const currentLB = document.querySelector('.' + self.identifier + '.__ADORIC__ [tabindex]');
  3.         const step1Field = currentLB.querySelector('.step1');
  4.         const step3Field = currentLB.querySelector('.step3');
  5.         const step2Field = currentLB.querySelector('.step2');
  6.         step2Field.style.setProperty('pointer-events', 'none');
  7.         step3Field.style.setProperty('pointer-events', 'none');
  8.         let data = {};
  9.         let step1arr = [];
  10.         let AllProducts = [];
  11.         const DATA_URL = 'https://static.adoric.com/dropdownEsteeLauder.json';
  12.  
  13.         function filterArray(arr, key) {
  14.             const newArr = [];
  15.             arr.map(i => {
  16.                 if (!newArr.includes(i[key])) {
  17.                     newArr.push(i[key]);
  18.                 }
  19.             });
  20.             return newArr;
  21.         };
  22.         fetch(DATA_URL).then(result => result.json()).then(res => {
  23.             AllProducts = res;
  24.             step1arr = filterArray(AllProducts, 'Brand');
  25.             fillCustomDropDown(step1Field, step1arr);
  26.             const dropdownStep1 = step1Field.querySelector('.element-input-select-design-container-dropdown');
  27.             dropdownStep1.addEventListener('click', (event) => {
  28.                 step2Field.style.setProperty('pointer-events', 'auto');
  29.                 const placeholderStep2 = step2Field.querySelector('.element-input-select-design-container-placeholder');
  30.                 const placeholderStep3 = step3Field.querySelector('.element-input-select-design-container-placeholder');
  31.                 if (placeholderStep2.textContent !== 'שם מותג') {
  32.                     placeholderStep2.textContent = 'שם מותג';
  33.                 }
  34.                 if (placeholderStep3.textContent !== 'גוון') {
  35.                     placeholderStep3.textContent = 'גוון';
  36.                     step3Field.style.setProperty('pointer-events', 'none');
  37.                 }
  38.                 const filteredData = AllProducts.filter(j => j.Brand == event.target.textContent);
  39.                 const step2arr = filterArray(filteredData, 'Product');
  40.                 fillCustomDropDown(step2Field, step2arr);
  41.                 const dropdownStep2 = step2Field.querySelector('.element-input-select-design-container-dropdown');
  42.                 dropdownStep2.addEventListener('click', (event2) => {
  43.                     const placeholderLastStep = step3Field.querySelector('.element-input-select-design-container-placeholder');
  44.                     step3Field.style.setProperty('pointer-events', 'auto');
  45.                     if (placeholderLastStep.textContent !== 'גוון') {
  46.                         placeholderLastStep.textContent = 'גוון';
  47.                     }
  48.                     const filteredDataLastStep = AllProducts.filter(n => n.Product == event2.target.textContent);
  49.                     const step3arr = filteredDataLastStep.map(item => item.Shade);
  50.                    
  51.                     fillCustomDropDown(step3Field, step3arr);
  52.                     const dropdownStep3 = step3Field.querySelector('.element-input-select-design-container-dropdown');
  53.                     dropdownStep3.addEventListener('click', (event3) => {
  54.                         filteredDataLastStep.map(item => {
  55.                             if (item.Shade == event3.target.textContent) {
  56.                                 data = JSON.stringify(item);
  57.                                 sessionStorage.setItem('adoricDropdownData', data);
  58.                             }
  59.                         })
  60.                     });
  61.                 });
  62.             });
  63.         }).catch(error => console.log(error));
  64.  
  65.         function fillCustomDropDown(fieldSet, dataArray) {
  66.             /*clone template span*/
  67.             var templateSpan = fieldSet.querySelector('.element-input-select-design-container-dropdown SPAN');
  68.             var dropdownSpans = templateSpan.parentNode; /*clone template option*/
  69.             var options = fieldSet.querySelectorAll('SELECT>OPTION');
  70.             var templateOption = options[1];
  71.             var dropdownOptions = templateOption.parentNode; /*clean dropdown*/
  72.             while (dropdownSpans.firstChild) {
  73.                 dropdownSpans.removeChild(dropdownSpans.lastChild);
  74.             }
  75.             while (dropdownOptions.firstChild.nextSibling) {
  76.                 /*leave first option as dummy*/
  77.                 dropdownOptions.removeChild(dropdownOptions.lastChild);
  78.             } /* fill spans*/
  79.             for (var i = 0; i < dataArray.length; i++) {
  80.                 var templateDiv = templateSpan.cloneNode();
  81.                 templateDiv.dataset.optionValue = dataArray[i];
  82.                 templateDiv.textContent = dataArray[i]; /*templateDiv.setAttribute(dataArray[i].dataNextStepOption, dataArray[i].dataNextStepOptionName);*/
  83.                 dropdownSpans.append(templateDiv);
  84.             } /* fill Options*/
  85.             for (var i = 0; i < dataArray.length; i++) {
  86.                 var templateDiv = templateOption.cloneNode();
  87.                 templateDiv.value = dataArray[i];
  88.                 templateDiv.textContent = dataArray[i];
  89.                 dropdownOptions.append(templateDiv);
  90.             }
  91.         }
  92.     })();
Add Comment
Please, Sign In to add comment