commercetools-8.x-1.2-alpha1/modules/commercetools_decoupled/js/organisms/ProductTitles.js

modules/commercetools_decoupled/js/organisms/ProductTitles.js
class ProductTitles extends HTMLElement {
  connectedCallback() {
    this.productTitles = [];
    const container = document.createElement('div');
    container.classList.add(
      'container',
      'commercetools-product-titles',
      'py-3',
    );
    const row = document.createElement('div');
    row.classList.add('row');
    container.appendChild(row);
    const ul = document.createElement('ul');
    ul.classList.add('list-group');
    row.appendChild(ul);

    this.innerHTML = '';
    this.renderProducts(ul).catch((error) => {
      new Drupal.Message().add(
        Drupal.t('An error occurred while loading products.'),
        {
          type: 'error',
        },
      );
      throw error;
    });

    this.appendChild(container);
  }

  setLoadingState(state) {
    this.productTitles.forEach((card) => {
      card.setLoadingState(state);
    });
  }

  async renderProducts(ul) {
    ul.innerHTML = '';
    this.products.forEach((product) => {
      const li = document.createElement('li');
      li.classList.add('list-group-item');
      const productTitle = document.createElement('ct-product-title');
      productTitle.product = product;
      productTitle.isLoading = this.isLoading;
      this.productTitles.push(productTitle);
      li.appendChild(productTitle);
      ul.appendChild(li);
    });
  }
}

customElements.define('ct-product-titles', ProductTitles);

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc