Sha256: 0ebddc7d1344dd0f1dab72d49f46594793798c86a06335c21b9eb11fd9b0ebb8

Contents?: true

Size: 1.34 KB

Versions: 2

Compression:

Stored size: 1.34 KB

Contents

import { getSelect2Config } from "alchemy_solidus/select2_config"

$.fn.alchemyVariantSelect = function (options) {
  const config = getSelect2Config(options)

  function formatSelection(variant) {
    return variant.options_text
      ? `${variant.name} - ${variant.options_text}`
      : variant.name
  }

  function formatResult(variant, _el, query) {
    const matchTerm = new RegExp(query.term, "gi")
    const formatMatch = (match) => `<em>${match}</em>`
    const name = variant.name.replace(matchTerm, formatMatch)
    const sku = variant.sku.replace(matchTerm, formatMatch)
    return `
      <div class="variant-select-result">
        <div>
          <span>${name}</span>
        </div>
        <div>
          <span>${variant.options_text}</span>
          <span>${sku}</span>
        </div>
      </div>
    `
  }

  this.select2(
    $.extend(true, config, {
      ajax: {
        data(term, page) {
          return {
            q: $.extend(
              {
                product_name_or_sku_cont: term,
              },
              options.query_params
            ),
            page: page,
          }
        },
        results(data, page) {
          return {
            results: data.variants,
            more: page * data.per_page < data.total_count,
          }
        },
      },
      formatSelection,
      formatResult,
    })
  )
}

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
alchemy-solidus-7.5.1 app/javascript/alchemy_solidus/variant_select.js
alchemy-solidus-7.5.0 app/javascript/alchemy_solidus/variant_select.js