{"version":3,"sources":["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"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","isCheckoutReadonly","$translate","_v","_s","couponReadonlyInfoText","_e","class","directives","name","rawName","value","couponCode","expression","attrs","type","placeholder","disabled","domProps","on","keyup","$event","indexOf","_k","keyCode","key","redeemCode","input","target","composing","waiting","click","removeCode","icon","loading","_withStripped","component","options","__file"],"mappings":"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","file":"chunks/ceres-22.min.js","sourcesContent":["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 }","<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","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&\"","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"],"sourceRoot":""}