{"version":3,"sources":["webpack:///resources/js/src/app/components/basket/Coupon.vue","webpack:///./resources/js/src/app/components/basket/Coupon.vue?36ed","webpack:///./resources/js/src/app/components/basket/Coupon.vue","webpack:///./resources/js/src/app/components/basket/Coupon.vue?523c","webpack:///./resources/js/src/app/components/basket/Coupon.vue?6b15"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CA;;AAEA;AACA;AACA;AAEA;AACA,gBADA;AAGA;AACA,cACA;AACA,kBADA;AAEA;AAFA;AAFA,GAHA;AAWA,MAXA,kBAYA;AACA;AACA,oBADA;AAEA;AAFA;AAIA,GAjBA;AAmBA,SACA;AACA,sBADA,8BACA,GADA,EAEA;AACA;AACA;AAJA,GApBA;AA2BA;AAEA,YAFA,sBAGA;AACA,mCACA;AACA;AACA;;AAEA;AACA;AAVA,KAYA;AACA;AAAA;AAAA,KADA;AAEA;AAAA;AAAA,KAFA;AAGA;AAAA;AAAA;AAHA,IAZA,CA3BA;AA8CA,SA9CA,qBA+CA;AAAA;;AACA,+BACA;AACA,oCACA;AACA;AACA;AACA,KANA;AAOA,GAvDA;AAyDA,WACA;AACA,cADA,wBAEA;AAAA;;AACA;AACA;;AAEA,sCACA;AACA;AAEA,uEACA,oBACA;AACA;AACA,sCACA,sHADA,EAEA,UAFA,CAEA,KAFA;AAGA,SAPA,EAQA,iBACA;AACA;AACA;AACA,SAZA;AAaA,OAjBA,MAmBA;AACA,kCACA,gHADA,EAEA,UAFA,CAEA,KAFA;AAGA;AACA,KA9BA;AAgCA,cAhCA,wBAiCA;AAAA;;AACA;AAEA,qEACA,oBACA;AACA;AACA,oCACA,sHADA,EAEA,UAFA,CAEA,KAFA;AAGA,OAPA,EAQA,iBACA;AACA;AACA,kCACA,sHADA,EAEA,UAFA,CAEA,KAFA;AAGA,OAdA;AAeA,KAnDA;AAqDA,mCArDA,2CAqDA,KArDA,EAsDA;AACA;;AACA,wHACA;AACA;AACA;;AAEA;AACA;AA9DA;AA1DA,G;;;;;;;;;;;;AClDA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,qBAAqB,wBAAwB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,oBAAoB,iCAAiC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,8BAA8B,SAAS,qCAAqC,EAAE;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,4BAA4B;AAC5B,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACtHA;AAAA;AAAA;AAAA;AAAqF;AAC3B;AACL;;;AAGrD;AACsG;AACtG,gBAAgB,2GAAU;AAC1B,EAAE,4EAAM;AACR,EAAE,iFAAM;AACR,EAAE,0FAAe;AACjB;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI,KAAU,EAAE,YAiBf;AACD;AACe,gF;;;;;;;;;;;;ACtCf;AAAA;AAAA,wCAA8L,CAAgB,0OAAG,EAAC,C;;;;;;;;;;;;ACAlN;AAAA;AAAA;AAAA;AAAA;AAAA","file":"chunks/ceres-23.js","sourcesContent":["<template>\n <div class=\"cmp\">\n <p v-if=\"isCheckoutReadonly && !!$translate('Ceres::Template.couponReadonlyInfoText')\">\n {{ couponReadonlyInfoText }}\n </p>\n <div :class=\"{'input-group':true, 'component-loading':isCheckoutReadonly, 'is-loading':isCheckoutReadonly}\">\n <input\n type=\"text\"\n class=\"form-control\"\n v-model=\"couponCode\"\n :placeholder=\"$translate('Ceres::Template.couponEnterCoupon')\"\n @keyup.enter=\"redeemCode()\"\n :disabled=\"disabled || isCheckoutReadonly\"\n data-testing=\"coupon-input\"\n >\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-medium btn-primary btn-appearance\"\n type=\"button\"\n @click=\"redeemCode()\"\n :disabled=\"waiting || isCheckoutReadonly\" v-if=\"!disabled\"\n data-testing=\"coupon-redeem\"\n >\n <icon icon=\"gift\" :loading=\"waiting\"></icon>\n {{ $translate(\"Ceres::Template.couponRedeem\") }}\n </button>\n <button\n class=\"btn btn-medium btn-danger\"\n type=\"button\"\n @click=\"removeCode()\"\n :disabled=\"waiting || isCheckoutReadonly\"\n v-else\n data-testing=\"coupon-remove\"\n >\n <icon icon=\"trash\" :loading=\"waiting\"></icon>\n {{ $translate(\"Ceres::Template.couponRemove\") }}\n </button>\n </span>\n </div>\n </div>\n</template>\n\n<script>\n\nconst NotificationService = require(\"../../services/NotificationService\");\n\nimport ExceptionMap from \"../../exceptions/ExceptionMap\";\nimport TranslationService from \"../../services/TranslationService\";\nimport { mapState } from \"vuex\";\n\nexport default {\n name: \"coupon\",\n\n props: {\n template:\n {\n type: String,\n default: \"#vue-coupon\"\n }\n },\n\n data()\n {\n return {\n waiting: false,\n couponCode: \"\"\n };\n },\n\n watch:\n {\n redeemedCouponCode(val)\n {\n this.couponCode = val;\n }\n },\n\n computed:\n {\n disabled()\n {\n if (this.redeemedCouponCode)\n {\n return true;\n }\n\n return false;\n },\n\n ...mapState({\n redeemedCouponCode: state => state.basket.data.couponCode,\n isBasketLoading: state => state.basket.isBasketLoading,\n isCheckoutReadonly: state => state.checkout.readOnly\n })\n },\n\n mounted()\n {\n this.$nextTick(() =>\n {\n if (this.redeemedCouponCode)\n {\n this.couponCode = this.redeemedCouponCode;\n }\n });\n },\n\n methods:\n {\n redeemCode()\n {\n // remove whitespaces\n this.couponCode = this.couponCode.replace(/\\s/g, \"\");\n\n if (this.couponCode.length > 0)\n {\n this.waiting = true;\n\n this.$store.dispatch(\"redeemCouponCode\", this.couponCode).then(\n response =>\n {\n this.waiting = false;\n NotificationService.success(\n TranslationService.translate(\"Ceres::Template.couponRedeemSuccess\")\n ).closeAfter(10000);\n },\n error =>\n {\n this.waiting = false;\n NotificationService.error(this.getCouponRedemptionErrorMessage(error)).closeAfter(10000);\n });\n }\n else\n {\n NotificationService.error(\n TranslationService.translate(\"Ceres::Template.couponIsEmpty\")\n ).closeAfter(10000);\n }\n },\n\n removeCode()\n {\n this.waiting = true;\n\n this.$store.dispatch(\"removeCouponCode\", this.couponCode).then(\n response =>\n {\n this.waiting = false;\n NotificationService.success(\n TranslationService.translate(\"Ceres::Template.couponRemoveSuccess\")\n ).closeAfter(10000);\n },\n error =>\n {\n this.waiting = false;\n NotificationService.error(\n TranslationService.translate(\"Ceres::Template.couponRemoveFailure\")\n ).closeAfter(10000);\n });\n },\n\n getCouponRedemptionErrorMessage(error)\n {\n const errorCode = error && error.warn && error.warn.code || 0;\n if (errorCode > 0 && ExceptionMap.has(errorCode.toString()))\n {\n return TranslationService.translate(\"Ceres::Template.\" + ExceptionMap.get(errorCode.toString()));\n }\n\n return TranslationService.translate(\"Ceres::Template.couponRedeemFailure\");\n }\n }\n}\n</script>\n","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"cmp\" }, [\n _vm.isCheckoutReadonly &&\n !!_vm.$translate(\"Ceres::Template.couponReadonlyInfoText\")\n ? _c(\"p\", [\n _vm._v(\"\\n \" + _vm._s(_vm.couponReadonlyInfoText) + \"\\n \")\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n class: {\n \"input-group\": true,\n \"component-loading\": _vm.isCheckoutReadonly,\n \"is-loading\": _vm.isCheckoutReadonly\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.couponCode,\n expression: \"couponCode\"\n }\n ],\n staticClass: \"form-control\",\n attrs: {\n type: \"text\",\n placeholder: _vm.$translate(\"Ceres::Template.couponEnterCoupon\"),\n disabled: _vm.disabled || _vm.isCheckoutReadonly,\n \"data-testing\": \"coupon-input\"\n },\n domProps: { value: _vm.couponCode },\n on: {\n keyup: function($event) {\n if (\n !$event.type.indexOf(\"key\") &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n return _vm.redeemCode()\n },\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.couponCode = $event.target.value\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"input-group-btn\" }, [\n !_vm.disabled\n ? _c(\n \"button\",\n {\n staticClass: \"btn btn-medium btn-primary btn-appearance\",\n attrs: {\n type: \"button\",\n disabled: _vm.waiting || _vm.isCheckoutReadonly,\n \"data-testing\": \"coupon-redeem\"\n },\n on: {\n click: function($event) {\n return _vm.redeemCode()\n }\n }\n },\n [\n _c(\"icon\", { attrs: { icon: \"gift\", loading: _vm.waiting } }),\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.$translate(\"Ceres::Template.couponRedeem\")) +\n \"\\n \"\n )\n ],\n 1\n )\n : _c(\n \"button\",\n {\n staticClass: \"btn btn-medium btn-danger\",\n attrs: {\n type: \"button\",\n disabled: _vm.waiting || _vm.isCheckoutReadonly,\n \"data-testing\": \"coupon-remove\"\n },\n on: {\n click: function($event) {\n return _vm.removeCode()\n }\n }\n },\n [\n _c(\"icon\", {\n attrs: { icon: \"trash\", loading: _vm.waiting }\n }),\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.$translate(\"Ceres::Template.couponRemove\")) +\n \"\\n \"\n )\n ],\n 1\n )\n ])\n ]\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./Coupon.vue?vue&type=template&id=127bda26&\"\nimport script from \"./Coupon.vue?vue&type=script&lang=js&\"\nexport * from \"./Coupon.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/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\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/runner/work/plugin-ceres/plugin-ceres/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('127bda26')) {\n api.createRecord('127bda26', component.options)\n } else {\n api.reload('127bda26', component.options)\n }\n module.hot.accept(\"./Coupon.vue?vue&type=template&id=127bda26&\", function () {\n api.rerender('127bda26', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"resources/js/src/app/components/basket/Coupon.vue\"\nexport default component.exports","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Coupon.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Coupon.vue?vue&type=script&lang=js&\"","export * from \"-!../../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Coupon.vue?vue&type=template&id=127bda26&\""],"sourceRoot":""}