{"version":3,"file":"Listing-CH1Rlxqx.js","sources":["../../../app/javascript/components/shared/Listing.vue"],"sourcesContent":["<template>\n  <div\n    class=\"favourite-listing product relative flex flex-col\"\n    :class=\"`text-${textAlign}`\">\n    <div\n      v-if=\"showCross\"\n      class=\"absolute top-0 right-0 p-3 flex items-center justify-center z-1 cursor-pointer\"\n      @click.prevent=\"$emit('cross-click')\">\n      <svg-icon\n        width=\"10px\"\n        height=\"10px\"\n        name=\"cross\" />\n    </div>\n    <a\n      :href=\"listing.link\"\n      :target=\"openInNewTab ? '_blank' : null\"\n      @click.prevent=\"goToListing\">\n      <div\n        :class=\"imageBgClass\"\n        class=\"product-image\">\n        <img\n          :src=\"listing.imageUrl\"\n          :alt=\"listing.name\"\n          class=\"img-responsive\" />\n        <div\n          v-if=\"!disableFavourites\"\n          v-tippy=\"favouriteTippy\"\n          :class=\"{\n            active: favourited,\n            'js-favourite-container': allowFavouritesControls\n          }\"\n          class=\"absolute js-favourite-container favourite-listing-container p-3 flex items-center justify-center text-paper-6 z-1 cursor-pointer bottom-0 right-0\"\n          data-cy=\"favourite-heart\"\n          v-bind=\"additionalDataProperties\"\n          @click=\"$emit('favourite-toggled', listing)\">\n          <svg-icon\n            name=\"faveheart\"\n            height=\"16px\"\n            width=\"16px\" />\n          <svg-icon\n            name=\"faveheart-filled\"\n            height=\"16px\"\n            width=\"16px\" />\n        </div>\n      </div>\n    </a>\n    <div class=\"product-name\">\n      <a\n        :href=\"listing.link\"\n        :target=\"openInNewTab ? '_blank' : null\"\n        @click.prevent=\"goToListing\">\n        <h4 class=\"product-name typeset-6 mb-1\">{{ listing.name }}</h4>\n        <a\n          v-if=\"listing.designer.hasDesigner\"\n          :href=\"listing.designer.link\"\n          :target=\"openInNewTab ? '_blank' : null\"\n          class=\"typeset-7 product-designer ellipsis mb-1\">\n          {{ listing.designer.name }}\n        </a>\n        <h5 class=\"typeset-7 product-type-name ellipsis mb-4\">\n          {{ listing.product_type_name }}\n        </h5>\n      </a>\n    </div>\n    <div\n      class=\"flex flex-wrap listing-price\"\n      :class=\"justifyPosition\">\n      <template v-if=\"listing.price.has_discount\">\n        <h5\n          class=\"flex-no-shrink typeset-6\"\n          v-html=\"listing.price.actual\"></h5>\n        <h5\n          class=\"flex items-center flex-no-shrink p-2 ml-3 bg-sunflower line-height-1 typeset-8 strikethrough\"\n          v-html=\"listing.price.base\"></h5>\n      </template>\n      <h5\n        v-else\n        class=\"flex-no-shrink typeset-6\"\n        v-html=\"listing.price.actual\"></h5>\n    </div>\n    <div\n      v-if=\"showStockStatus && listing.outOfStock\"\n      class=\"mt-4\">\n      <button\n        disabled\n        class=\"btn btn-delete btn-block mb-4\">\n        {{ listing.stockStatus.ctaText }}\n      </button>\n      <div\n        v-if=\"listing.stockStatus.longText\"\n        class=\"text-center parsed-markdown\"\n        v-html=\"listing.stockStatus.longText\"></div>\n    </div>\n    <div\n      v-if=\"$slots.action\"\n      class=\"mt-3\">\n      <slot name=\"action\"></slot>\n    </div>\n  </div>\n</template>\n\n<script>\nimport SvgIcon from \"./SvgIcon.vue\";\n\nexport default {\n  name: \"Listing\",\n  components: {\n    SvgIcon\n  },\n  props: {\n    listing: {\n      type: Object,\n      required: true\n    },\n    favourited: {\n      type: Boolean,\n      required: true,\n      default: false\n    },\n    disableFavourites: {\n      type: Boolean,\n      default: false\n    },\n    openInNewTab: {\n      type: Boolean,\n      default: false\n    },\n    showStockStatus: {\n      type: Boolean,\n      default: true\n    },\n    showCross: {\n      type: Boolean,\n      default: false\n    },\n    imageBgClass: {\n      type: String,\n      default: \"\"\n    },\n    showActionButton: {\n      type: Boolean,\n      default: false\n    },\n    actionButtonText: {\n      type: String,\n      default: \"Remove\"\n    },\n    trackEventName: {\n      type: String,\n      default: \"\"\n    },\n    allowFavouritesControls: {\n      type: Boolean,\n      default: false\n    },\n    textAlign: {\n      type: String,\n      default: \"left\"\n    }\n  },\n  emits: [\"favourite-toggled\", \"cross-click\", \"listing-clicked\"],\n  computed: {\n    favouriteTippy() {\n      return {\n        content: \"Remove\",\n        theme: \"dark\",\n        placement: \"top\",\n        arrow: true,\n        animation: \"shift-away\"\n      };\n    },\n    justifyPosition() {\n      switch (this.textAlign) {\n        case \"left\":\n          return \"justify-start\";\n        case \"center\":\n          return \"justify-center\";\n        case \"right\":\n          return \"justify-end\";\n        default:\n          return \"justify-start\";\n      }\n    },\n    additionalDataProperties() {\n      if (!this.allowFavouritesControls) {\n        return {};\n      }\n\n      return {\n        \"data-id\": this.listing.id,\n        \"data-type\": this.listing.type\n      };\n    }\n  },\n  methods: {\n    goToListing(e) {\n      if (!e.target.closest(\".js-favourite-container\")) {\n        this.$emit(\"listing-clicked\");\n        if (this.trackEventName) {\n          analytics.track(\n            this.trackEventName,\n            {\n              id: this.listing.analytics_id\n            },\n            () => {\n              window.location.href = this.listing.link;\n            }\n          );\n        } else {\n          window.location.href = this.listing.link;\n        }\n      }\n    }\n  }\n};\n</script>\n"],"names":["_sfc_main","SvgIcon","e","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_13","_createElementBlock","_normalizeClass","$props","_cache","_withModifiers","_ctx","_createVNode","_component_svg_icon","_createCommentVNode","_createElementVNode","$options","args","_withDirectives","_openBlock","_mergeProps","$event","_toDisplayString","_Fragment","_hoisted_11","_hoisted_12","_hoisted_14","_renderSlot"],"mappings":"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"}