Sha256: 86fbd95f0c48d9b317045a3d4171b8aaa437f8b0652b3ad0fa6909474031b31f

Contents?: true

Size: 1.29 KB

Versions: 19

Compression:

Stored size: 1.29 KB

Contents

export class IngredientGroup extends HTMLDetailsElement {
  #localStorageKey = "Alchemy.expanded_ingredient_groups"

  constructor() {
    super()

    this.addEventListener("toggle", this)

    if (this.isInLocalStorage) {
      this.open = true
    }
  }

  /**
   * Toggle visibility of the ingredient fields in this group
   */
  handleEvent() {
    let expanded_ingredient_groups = this.localStorageItem

    if (this.open) {
      this.toggleIcon.name = "arrow-down-s"
      if (!this.isInLocalStorage) expanded_ingredient_groups.push(this.id)
    } else {
      this.toggleIcon.name = "arrow-left-s"
      expanded_ingredient_groups = expanded_ingredient_groups.filter(
        (value) => value !== this.id
      )
    }

    localStorage.setItem(
      this.#localStorageKey,
      JSON.stringify(expanded_ingredient_groups)
    )
  }

  get isInLocalStorage() {
    return this.localStorageItem.includes(this.id)
  }

  get localStorageItem() {
    const item = localStorage.getItem(this.#localStorageKey)

    if (!item) return []

    try {
      return JSON.parse(item)
    } catch (error) {
      console.error(error)
      return []
    }
  }

  get toggleIcon() {
    return this.querySelector("alchemy-icon")
  }
}

customElements.define("alchemy-ingredient-group", IngredientGroup, {
  extends: "details"
})

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
alchemy_cms-7.4.2 app/javascript/alchemy_admin/components/ingredient_group.js
alchemy_cms-7.3.6 app/javascript/alchemy_admin/components/ingredient_group.js
alchemy_cms-7.2.9 app/javascript/alchemy_admin/components/ingredient_group.js
alchemy_cms-7.4.1 app/javascript/alchemy_admin/components/ingredient_group.js
alchemy_cms-7.4.0 app/javascript/alchemy_admin/components/ingredient_group.js
alchemy_cms-7.3.5 app/javascript/alchemy_admin/components/ingredient_group.js
alchemy_cms-7.2.8 app/javascript/alchemy_admin/components/ingredient_group.js
alchemy_cms-7.3.4 app/javascript/alchemy_admin/components/ingredient_group.js
alchemy_cms-7.3.3 app/javascript/alchemy_admin/components/ingredient_group.js
alchemy_cms-7.3.2 app/javascript/alchemy_admin/components/ingredient_group.js
alchemy_cms-7.2.7 app/javascript/alchemy_admin/components/ingredient_group.js
alchemy_cms-7.3.1 app/javascript/alchemy_admin/components/ingredient_group.js
alchemy_cms-7.3.0 app/javascript/alchemy_admin/components/ingredient_group.js
alchemy_cms-7.2.6 app/javascript/alchemy_admin/components/ingredient_group.js
alchemy_cms-7.2.5 app/javascript/alchemy_admin/components/ingredient_group.js
alchemy_cms-7.2.4 app/javascript/alchemy_admin/components/ingredient_group.js
alchemy_cms-7.2.3 app/javascript/alchemy_admin/components/ingredient_group.js
alchemy_cms-7.2.2 app/javascript/alchemy_admin/components/ingredient_group.js
alchemy_cms-7.2.1 app/javascript/alchemy_admin/components/ingredient_group.js