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

modules/commercetools_decoupled/js/organisms/ProductList.js
class ProductList extends HTMLElement {
  connectedCallback() {
    this.productCards = [];
    const container = document.createElement('div');
    container.classList.add('container', 'commercetools-product-list');
    const row = document.createElement('div');
    row.classList.add('row');
    container.appendChild(row);

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

    this.appendChild(container);
  }

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

  async renderProducts(row) {
    row.innerHTML = '';
    const bootstrapColumns = Math.floor(12 / this.columnsNumber);
    const columnClass = `col-lg-${bootstrapColumns}`;
    this.products.forEach((product) => {
      const productWrapper = document.createElement('div');
      productWrapper.classList.add(
        'col-12',
        'col-md-12',
        'my-2',
        'ps-0',
        columnClass,
      );
      const productCard = document.createElement('ct-product-list-item');
      productCard.product = product;
      productCard.isLoading = this.isLoading;
      this.productCards.push(productCard);
      productWrapper.appendChild(productCard);
      row.appendChild(productWrapper);
    });
  }
}

customElements.define('ct-product-list', ProductList);

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

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