{"version":3,"sources":["webpack:///./node_modules/nespresso-components/AddToCart/QuantitySelector.vue?93c4","webpack:///node_modules/nespresso-components/AddToCart/QuantitySelector.vue","webpack:///./node_modules/nespresso-components/AddToCart/QuantitySelector.vue?bab9","webpack:///./node_modules/nespresso-components/AddToCart/QuantitySelector.vue","webpack:///./node_modules/nespresso-components/AddToCart/QuantitySelector.vue?0773"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","ref","attrs","on","$event","$emit","domProps","_s","voices","close","howTo","preventDefault","style","product","images","_e","name","directives","rawName","value","expression","inStock","displayedPrice","_l","quantity","class","g_activeQuantity","activeQuantity","maxQuantity","set","btnLabelAdd","Infinity","warningProductLimit","_uid","chooseQuantity","step","otherQuantity","target","composing","customQuantity","_v","staticRenderFns","component"],"mappings":"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","file":"js/QuantitySelector.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"g_quantity_scene\"},[_c('div',{ref:\"quantityPopin\",staticClass:\"g_quantity_popin\",attrs:{\"tabindex\":\"-1\"}},[_c('div',{staticClass:\"g_quantity-popin-content\"},[(_vm.opened)?[_c('button',{staticClass:\"g_close\",on:{\"click\":function($event){return _vm.$emit('update:opened', false)}}},[_c('i',{staticClass:\"fn_close\",attrs:{\"aria-hidden\":\"true\"}}),_c('span',{staticClass:\"g_visually_hidden\",domProps:{\"textContent\":_vm._s(_vm.voices.close)}})]),_c('p',{staticClass:\"g_visually_hidden\",domProps:{\"textContent\":_vm._s(_vm.voices.howTo)}}),_c('form',{attrs:{\"role\":\"form\"},on:{\"submit\":function($event){$event.preventDefault();}}},[_c('div',{staticClass:\"g_productRow\"},[_c('div',{staticClass:\"g_product\"},[(_vm.isTouch)?_c('div',{staticClass:\"g_productImage\",style:((\"background-image: url(\" + (_vm.product.images.icon) + \")\"))}):_vm._e(),_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.product.name)}}),_c('p',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showPriceInQS),expression:\"showPriceInQS\"}],staticClass:\"g_productPrice\",attrs:{\"data-disabled\":!_vm.product.inStock},domProps:{\"textContent\":_vm._s(_vm.product.displayedPrice)}})])]),_c('div',{staticClass:\"g_quantitySelectorRow\"},[_c('ul',{staticClass:\"g_quantitySelector\"},_vm._l((_vm.quantities),function(quantity){return _c('li',[_c('button',{class:{g_activeQuantity: quantity === _vm.activeQuantity },attrs:{\"disabled\":quantity > _vm.maxQuantity},on:{\"click\":function($event){return _vm.set(quantity)}}},[_c('span',{staticClass:\"g_visually_hidden\",domProps:{\"textContent\":_vm._s(_vm.btnLabelAdd)}}),_c('span',{domProps:{\"textContent\":_vm._s(quantity)}}),_c('span',{staticClass:\"g_visually_hidden\",domProps:{\"innerHTML\":_vm._s(_vm.product.name)}})])])}),0)]),_c('div',{staticClass:\"g_quantityOtherRow\"},[_c('div',{staticClass:\"g_quantityOther\"},[(_vm.maxQuantity < Infinity)?_c('label',{domProps:{\"textContent\":_vm._s(_vm.warningProductLimit)}}):[_c('label',{staticClass:\"g_visually_hidden\",attrs:{\"for\":'g_quantity_selector_other' + _vm._uid},domProps:{\"textContent\":_vm._s(_vm.voices.chooseQuantity)}}),(_vm.isTouch)?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.customQuantity),expression:\"customQuantity\"}],attrs:{\"type\":\"number\",\"step\":_vm.step,\"min\":0,\"pattern\":\"[0-9]*\",\"inputmode\":\"numeric\",\"id\":'g_quantity_selector_other' + _vm._uid,\"placeholder\":_vm.voices.otherQuantity,\"aria-describedby\":'g_quantity_selector_hint' + _vm._uid,\"maxlength\":\"4\"},domProps:{\"value\":(_vm.customQuantity)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.customQuantity=$event.target.value}}}):_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.customQuantity),expression:\"customQuantity\"}],attrs:{\"type\":\"text\",\"step\":_vm.step,\"min\":0,\"pattern\":\"[0-9]*\",\"inputmode\":\"numeric\",\"id\":'g_quantity_selector_other' + _vm._uid,\"placeholder\":_vm.voices.otherQuantity,\"aria-describedby\":'g_quantity_selector_hint' + _vm._uid,\"maxlength\":\"4\"},domProps:{\"value\":(_vm.customQuantity)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.customQuantity=$event.target.value}}}),_c('span',{staticClass:\"g_visually_hidden\",attrs:{\"id\":'g_quantity_selector_hint' + _vm._uid},domProps:{\"textContent\":_vm._s(_vm.voices.otherQuantity)}}),_c('button',{staticClass:\"g_valid\",on:{\"click\":function($event){return _vm.set(_vm.customQuantity)}}},[_c('span',[_vm._v(\"OK\")])])]],2)])])]:_vm._e()],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<style lang=\"sass\">\n    @import ~nespresso-bi/utilities\n    @import ~nespresso-bi/brand/variables\n    @import variables\n    @import quantitySelector\n</style>\n\n<template lang=\"html\">\n    <div class=\"g_quantity_scene\">\n        <div class=\"g_quantity_popin\" ref=\"quantityPopin\" tabindex=\"-1\">\n            <div class=\"g_quantity-popin-content\">\n                <template v-if=\"opened\">\n                    <button class=\"g_close\" @click=\"$emit('update:opened', false)\">\n                        <i aria-hidden=\"true\" class=\"fn_close\"></i>\n                        <span class=\"g_visually_hidden\" v-text=\"voices.close\"></span>\n                    </button>\n                    <p class=\"g_visually_hidden\" v-text=\"voices.howTo\"></p>\n                    <form role=\"form\" @submit.prevent>\n                        <div class=\"g_productRow\">\n                            <div class=\"g_product\">\n                                <div class=\"g_productImage\" v-if=\"isTouch\" :style=\"`background-image: url(${product.images.icon})`\"></div>\n                                <span v-html=\"product.name\"></span>\n                                <p class=\"g_productPrice\" v-text=\"product.displayedPrice\" v-show=\"showPriceInQS\" :data-disabled=\"!product.inStock\"></p>\n                            </div>\n                        </div>\n                        <div class=\"g_quantitySelectorRow\">\n                            <ul class=\"g_quantitySelector\">\n                                <li v-for=\"quantity in quantities\">\n                                    <button @click=\"set(quantity)\" :class=\"{g_activeQuantity: quantity === activeQuantity }\" :disabled=\"quantity > maxQuantity\">\n                                        <span class=\"g_visually_hidden\" v-text=\"btnLabelAdd\"></span>\n                                        <span v-text=\"quantity\"></span>\n                                        <span v-html=\"product.name\" class=\"g_visually_hidden\"></span>\n                                    </button>\n                                </li>\n                            </ul>\n                        </div>\n                        <div class=\"g_quantityOtherRow\">\n                            <div class=\"g_quantityOther\">\n                                <label v-if=\"maxQuantity < Infinity\" v-text=\"warningProductLimit\"></label>\n                                <template v-else>\n                                    <label :for=\"'g_quantity_selector_other' + _uid\" v-text=\"voices.chooseQuantity\" class=\"g_visually_hidden\"></label><!--\n                                    --><input v-if=\"isTouch\" v-model=\"customQuantity\" type=\"number\" :step=\"step\" :min=\"0\" pattern=\"[0-9]*\" inputmode=\"numeric\" :id=\"'g_quantity_selector_other' + _uid\" :placeholder=\"voices.otherQuantity\" :aria-describedby=\"'g_quantity_selector_hint' + _uid\" maxlength=\"4\"><!--\n                                    --><input v-else v-model=\"customQuantity\" type=\"text\" :step=\"step\" :min=\"0\" pattern=\"[0-9]*\" inputmode=\"numeric\" :id=\"'g_quantity_selector_other' + _uid\" :placeholder=\"voices.otherQuantity\" :aria-describedby=\"'g_quantity_selector_hint' + _uid\" maxlength=\"4\"><!--\n                                    --><span :id=\"'g_quantity_selector_hint' + _uid\" class=\"g_visually_hidden\" v-text=\"voices.otherQuantity\"></span><!--\n                                    --><button class=\"g_valid\" @click=\"set(customQuantity)\">\n                                           <span>OK</span>\n                                       </button>\n                                </template>\n                            </div>\n                        </div>\n                    </form>\n                </template>\n            </div>\n        </div>\n    </div>\n</template>\n\n<script>\nimport { on, off, toggleClass, contains } from 'gaspard'\nimport dataLayer from 'nespresso-library/src/core/dataLayer'\nimport isTouch from 'nespresso-library/src/utils/isTouch'\n\nconst html = document.documentElement\n\nexport default {\n    props: {\n        opened: Boolean,\n        product: Object,\n        quantities: Array,\n        voices: Object,\n        activeQuantity: Number,\n        step: Number,\n        btnLabelAdd: String,\n        showPriceInQS: {\n            type: Boolean,\n            default: false\n        }\n    },\n    data () {\n        return {\n            customQuantity: null,\n            // voiceClickToRemove: null,\n            warningProductLimit: null,\n            maxQuantity: Infinity,\n            isTouch\n        }\n    },\n    created () {\n        this.setRule()\n    },\n    watch: {\n        product (value, oldValue) {\n            if (value.sku !== oldValue.sku) {\n                this.setRule()\n            }\n        },\n        opened (value) {\n            this.$emit('update:opened', value)\n            window.setTimeout(() => (value ? on : off)(document, 'click', this.clickOutside))\n            if (value) {\n                toggleClass(html, 'QSOpened', true)\n                if (isTouch) {\n                    this._lastPageYScroll = window.pageYOffset\n                }\n            } else {\n                window.setTimeout(() => toggleClass(html, 'QSOpened', false), 1500)\n                if (isTouch && (this._lastPageYScroll !== window.pageYOffset)) {\n                    window.scrollTo(0, this._lastPageYScroll)\n                }\n            }\n        },\n        activeQuantity (value) {\n            this.customQuantity = ~this.quantities.indexOf(value) ? null : value\n        }\n    },\n    methods: {\n        set (quantity) {\n            quantity = Number(quantity)\n            if (isNaN(quantity)) {\n                quantity = this.quantities[this.quantities.length - 1]\n            } else if (quantity > this.maxQuantity) {\n                quantity = this.maxQuantity\n            }\n            if (Number(this.customQuantity) === 0) {\n                this.customQuantity = null\n            }\n            this.$emit('setQuantity', quantity, true)\n        },\n        clickOutside (e) {\n            if (this.opened && !contains(this.$refs.quantityPopin, e.target)) {\n                this.$emit('update:opened', false)\n            }\n        },\n        setRule () {\n            window.napi\n                .market()\n                .getPackagingRules()\n                .then(packagingRules => {\n                    for (const packagingRule of packagingRules) {\n                        for (const product of packagingRule.products) {\n                            if (product === this.product.id) {\n                                if (packagingRule.type === 'MAX') {\n                                    this.maxQuantity = packagingRule.value / this.product.unitQuantity\n                                    let warningProductLimit = window.config\n                                    if (dataLayer.isMobile) {\n                                        warningProductLimit = warningProductLimit.warningProductLimit\n                                    } else if (dataLayer.isResponsive || dataLayer.isMosaic) {\n                                        warningProductLimit = warningProductLimit.labels.quantitySelector.warningProductLimit\n                                    } else {\n                                        warningProductLimit = ''\n                                    }\n                                    this.warningProductLimit = warningProductLimit.replace('{0}', packagingRule.value)\n                                }\n                                break\n                            }\n                        }\n                    }\n                })\n        }\n    }\n}\n</script>\n","import mod from \"-!../../cache-loader/dist/cjs.js??ref--12-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./QuantitySelector.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../cache-loader/dist/cjs.js??ref--12-0!../../thread-loader/dist/cjs.js!../../babel-loader/lib/index.js!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./QuantitySelector.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./QuantitySelector.vue?vue&type=template&id=9aa9ae18&lang=html&\"\nimport script from \"./QuantitySelector.vue?vue&type=script&lang=js&\"\nexport * from \"./QuantitySelector.vue?vue&type=script&lang=js&\"\nimport style0 from \"./QuantitySelector.vue?vue&type=style&index=0&lang=sass&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","export * from \"-!../../mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../css-loader/index.js??ref--9-oneOf-1-1!../../vue-loader/lib/loaders/stylePostLoader.js!../../postcss-loader/src/index.js??ref--9-oneOf-1-2!../../sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../style-resources-loader/lib/index.js??ref--9-oneOf-1-4!../../cache-loader/dist/cjs.js??ref--0-0!../../vue-loader/lib/index.js??vue-loader-options!./QuantitySelector.vue?vue&type=style&index=0&lang=sass&\""],"sourceRoot":""}