{"version":3,"file":"CartTotals-CLwcaRuk.js","sources":["../../../app/javascript/components/cart/CartTotal.vue","../../../app/javascript/components/cart/CartTotals.vue"],"sourcesContent":["<template>\n <div class=\"cart-total flex justify-between items-center\">\n <span>{{ title }}</span>\n <div\n :data-cy=\"`cart-${title}`\"\n class=\"flex items-center\">\n {{ cartTotal.formatted }}\n <span v-if=\"estimatedTotal && showAsterisk\">*</span>\n <span\n v-if=\"hasDiscount\"\n class=\"typeset-8 mb-0 bg-sunflower strikethrough p-2 ml-2 text-ink\">\n {{ baseTotal.formatted }}\n </span>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n name: \"CartTotal\",\n props: {\n title: {\n type: String,\n default: \"\"\n },\n cartTotal: {\n type: Object,\n default: () => ({})\n },\n baseTotal: {\n type: Object,\n required: false\n },\n code: {\n type: String,\n required: false,\n default: null\n },\n estimatedTotal: {\n type: Boolean,\n default: false\n },\n showAsterisk: {\n type: Boolean,\n default: true\n }\n },\n computed: {\n hasDiscount() {\n if (this.baseTotal) {\n return this.baseTotal.raw > this.cartTotal.raw;\n }\n\n return false;\n }\n }\n};\n</script>\n","<template>\n <div>\n <fade-transition>\n <overlay v-show=\"loading\" />\n </fade-transition>\n <transition-group\n name=\"cart-totals\"\n tag=\"div\"\n class=\"cart-totals\">\n <cart-total\n key=\"subtotal\"\n :title=\"t('cart.totals.subtotal')\"\n :cart-total=\"subtotal\"\n :estimated-total=\"estimatedTotal\"\n class=\"cart-totals-line my-3\" />\n\n <cart-total\n v-if=\"negotiatedDiscount && negotiatedDiscount.raw > 0\"\n key=\"negotiated-discount\"\n title=\"Bulk order discount\"\n :cart-total=\"negotiatedDiscount\"\n class=\"text-green discount-line-promotion cart-totals-line my-3 typeset-7\" />\n\n <cart-total\n v-if=\"dynamicBundleDiscount && dynamicBundleDiscount.raw > 0\"\n key=\"dynamic-bundle-discount\"\n title=\"Set discount\"\n :cart-total=\"dynamicBundleDiscount\"\n class=\"text-green discount-line-promotion cart-totals-line my-3 typeset-7\" />\n\n <cart-total\n v-for=\"(promotion, index) in promotions\"\n :key=\"promotion.name\"\n :title=\"promotion.name\"\n :cart-total=\"promotion.discount\"\n :data-cy=\"`promotion-line-cart-total-${index}`\"\n class=\"cart-totals-line discount-line-promotion text-green my-3\" />\n\n <div key=\"cart-discount\">\n <cart-total\n v-for=\"code in discountCodes\"\n :key=\"code.name\"\n :title=\"code.name\"\n :code=\"code.code\"\n :cart-total=\"code.discount\"\n class=\"cart-totals-line text-green my-3\" />\n </div>\n\n <cart-total\n v-if=\"!simpleTotal && credit.raw < 0\"\n key=\"credit\"\n :cart-total=\"credit\"\n :title=\"t('cart.totals.credit')\"\n class=\"cart-totals-line text-ink-3 my-3\" />\n\n <cart-total\n v-if=\"strippedUkVat.raw < 0\"\n key=\"strippedUkVat\"\n :cart-total=\"strippedUkVat\"\n title=\"UK VAT reduction\"\n class=\"cart-totals-line my-3\" />\n\n <cart-total\n v-if=\"showShippingTotal\"\n key=\"shipping\"\n :show-asterisk=\"false\"\n :title=\"t('cart.totals.shipping')\"\n :cart-total=\"shipping\"\n :base-total=\"baseShipping\"\n :estimated-total=\"estimatedTotal\"\n :class=\"{ 'text-forest': shipping.raw === 0 }\"\n class=\"cart-totals-line my-3\" />\n\n <cart-total\n v-if=\"!simpleTotal && salesTax.raw > 0\"\n key=\"salesTax\"\n :cart-total=\"salesTax\"\n :estimated-total=\"estimatedTotal\"\n :title=\"t('cart.totals.tax')\"\n class=\"cart-totals-line my-3\" />\n\n <cart-total\n v-if=\"!simpleTotal && extraCharge.raw > 0\"\n key=\"extraCharge\"\n :cart-total=\"extraCharge\"\n :title=\"t('cart.totals.extra-charge')\"\n :estimated-total=\"estimatedTotal\"\n class=\"cart-totals-line my-3\" />\n\n <p\n v-if=\"estimatedTotal\"\n class=\"typeset-7 text-ink-4\">\n Subject to change, discounts applied during review stage\n </p>\n <span v-if=\"showTaxMessage && !paymentRequestModalOpen\">\n {{ t(\"cart.totals.tax-calculation-message\") }}\n </span>\n\n <div\n v-if=\"showDdpGuarantee\"\n class=\"border border-ink-2 p-4 flex gap-x-4 my-4\">\n <svg-icon\n class=\"flex-no-shrink\"\n name=\"info\"\n height=\"13px\"\n width=\"13px\" />\n <p>{{ t(\"cart.totals.ddp-guarantee\") }}</p>\n </div>\n\n <cart-total\n key=\"amount-to-pay\"\n :cart-total=\"total\"\n :title=\"totalLabelAdjustedForEstimate\"\n data-cy=\"cart-total-section\"\n class=\"cart-totals-line text-ink typeset-6 pt-4 mt-4\"\n :class=\"{ 'border-t border-ink-1': !showDdpGuarantee }\" />\n\n <div\n v-if=\"estimatedTotal && !isCheckout\"\n class=\"text-ink typeset-6 border-t border-ink-2 pt-5 my-5\">\n <p class=\"typeset-7 mb-3\">\n {{ t(\"cart.totals.negotiation-message-1\") }}\n </p>\n <p class=\"typeset-7 mb-3\">\n {{ t(\"cart.totals.negotiation-message-2\") }}\n </p>\n <p class=\"typeset-7\">\n {{ t(\"cart.totals.negotiation-message-3\") }}\n </p>\n </div>\n </transition-group>\n </div>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\n\nimport CartTotal from \"./CartTotal.vue\";\nimport FadeTransition from \"../transitions/FadeTransition.vue\";\nimport Overlay from \"../shared/Overlay.vue\";\nimport SvgIcon from \"../shared/SvgIcon.vue\";\n\nexport default {\n name: \"CartTotals\",\n components: {\n CartTotal,\n FadeTransition,\n Overlay,\n SvgIcon\n },\n props: {\n showShippingTotal: {\n type: Boolean,\n default: true\n },\n estimatedTotal: {\n type: Boolean,\n default: false\n },\n isCheckout: {\n type: Boolean,\n default: false\n },\n location: {\n type: String,\n default: null\n }\n },\n computed: {\n ...mapState(\"totals\", [\n \"loading\",\n \"subtotal\",\n \"shipping\",\n \"baseShipping\",\n \"total\",\n \"promotions\",\n \"discountCodes\",\n \"credit\",\n \"salesTax\",\n \"extraCharge\",\n \"preCreditTotal\",\n \"strippedUkVat\",\n \"negotiatedDiscount\",\n \"dynamicBundleDiscount\"\n ]),\n ...mapState(\"cart\", [\"items\", \"paymentRequestModalOpen\"]),\n showTaxMessage() {\n return (\n (window.countryCode === \"/us\" || window.countryCode === \"/ca\") &&\n this.location === \"cart\"\n );\n },\n showDdpGuarantee() {\n return window.countryCode === \"/ca\";\n },\n simpleTotal() {\n return (\n this.preCreditTotal.raw === this.total.raw && this.salesTax.raw === 0.0\n );\n },\n totalLabel() {\n return this.simpleTotal\n ? this.t(\"cart.totals.total\")\n : this.t(\"cart.totals.amount-to-pay\");\n },\n totalLabelAdjustedForEstimate() {\n if (this.estimatedTotal) {\n return `Estimated total`;\n }\n return this.totalLabel;\n },\n b2bSlaLength() {\n return this.items\n .map(item => {\n return item.negotiation ? item.negotiation.days_to_produce : 0;\n })\n .sort((a, b) => b - a)[0];\n }\n }\n};\n</script>\n\n<style lang=\"scss\">\n.cart-totals {\n position: relative;\n transform-style: preserve-3d;\n perspective: 800px;\n}\n\n.cart-totals-line {\n transition:\n opacity 0.2s ease-in-out,\n transform 0.4s ease-in-out;\n}\n\n.cart-totals-enter-from,\n.cart-totals-leave-to {\n opacity: 0;\n transform: translateZ(-200px);\n}\n\n.cart-totals-enter-active {\n transition:\n opacity 0.2s ease-in-out,\n transform 0.4s ease-in-out;\n}\n\n.cart-totals-enter-to {\n opacity: 1;\n transform: translateZ(0);\n}\n\n.cart-totals-move {\n transition:\n opacity 0.2s ease-in-out,\n transform 0.4s ease-in-out;\n}\n\n.cart-totals-leave-active {\n position: absolute;\n width: 100%;\n transition:\n opacity 0.2s ease-in-out,\n transform 0.4s ease-in-out;\n}\n</style>\n"],"names":["_sfc_main","_hoisted_1","_hoisted_2","_openBlock","_createElementBlock","_createElementVNode","$props","_createTextVNode","_toDisplayString","_hoisted_3","_createCommentVNode","$options","_hoisted_4","CartTotal","FadeTransition","Overlay","SvgIcon","mapState","item","a","b","_hoisted_6","_hoisted_7","_hoisted_8","_createVNode","_component_fade_transition","_withCtx","_component_overlay","_ctx","_TransitionGroup","_component_cart_total","_createBlock","_Fragment","_renderList","promotion","index","code","_normalizeClass","_component_svg_icon","_hoisted_5"],"mappings":"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"}