{"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":""}