Sha256: 44871182412dd43acfef25dfea028db2cfdae75487ec3cb7af07bd27bf3acae5

Contents?: true

Size: 1.41 KB

Versions: 29

Compression:

Stored size: 1.41 KB

Contents

export default function navItemComponent({ id, matchers }) {
  return {
    filteredOut: false,

    get open() {
      return this.isCollection && this.isOpen(id);
    },

    get active() {
      if (this.$refs.link) {
        return (
          this.location &&
          this.location.pathname === this.$refs.link.getAttribute("href")
        );
      }
      return false;
    },

    get children() {
      return this.$refs.items ? Array.from(this.$refs.items.children) : [];
    },

    get isCollection() {
      return !this.$refs.link;
    },

    toggle() {
      this.toggleOpen(id);
    },

    async filter(text) {
      if (this.isCollection) {
        this.filteredOut = true;
        this.children.forEach(async (child) => {
          const data = Alpine.$data(child);
          await data.filter(text);
          if (!data.filteredOut) {
            this.filteredOut = false;
          }
        });
      } else {
        this.filteredOut = !this.match(text);
      }
      return this;
    },

    match(text) {
      if (text.length) {
        const matched = (matchers || []).map((m) => m.includes(text));
        return matched.filter((m) => m).length;
      }
      return true;
    },

    bindings: {
      toggle: {
        ["@click.stop"]: "toggle",
        ["x-ref"]: "toggle",
      },
      link: {
        [":class"]: "{'!bg-lookbook-nav-item-active':active}",
        ["x-ref"]: "link",
      },
    },
  };
}

Version data entries

29 entries across 29 versions & 1 rubygems

Version Path
lookbook-1.3.4 app/components/lookbook/nav/item/component.js
lookbook-1.3.3 app/components/lookbook/nav/item/component.js
lookbook-1.3.1 app/components/lookbook/nav/item/component.js
lookbook-1.3.0 app/components/lookbook/nav/item/component.js
lookbook-1.2.1 app/components/lookbook/nav/item/component.js
lookbook-1.2.0 app/components/lookbook/nav/item/component.js
lookbook-1.1.1 app/components/lookbook/nav/item/component.js
lookbook-1.1.0 app/components/lookbook/nav/item/component.js
lookbook-1.0.8 app/components/lookbook/nav/item/component.js
lookbook-1.0.7 app/components/lookbook/nav/item/component.js
lookbook-1.0.6 app/components/lookbook/nav/item/component.js
lookbook-1.0.5 app/components/lookbook/nav/item/component.js
lookbook-1.0.4 app/components/lookbook/nav/item/component.js
lookbook-1.0.3 app/components/lookbook/nav/item/component.js
lookbook-1.0.2 app/components/lookbook/nav/item/component.js
lookbook-1.0.1 app/components/lookbook/nav/item/component.js
lookbook-1.0.0 app/components/lookbook/nav/item/component.js
lookbook-1.0.0.rc.3 app/components/lookbook/nav/item/component.js
lookbook-1.0.0.rc.2 app/components/lookbook/nav/item/component.js
lookbook-1.0.0.rc.1 app/components/lookbook/nav/item/component.js