{"version":3,"sources":["webpack:///./resources/js/src/app/woerner/QuantityInputWoerner.vue?9188","webpack:///resources/js/src/app/woerner/QuantityInputWoerner.vue","webpack:///./resources/js/src/app/woerner/QuantityInputWoerner.vue?95fe","webpack:///./resources/js/src/app/woerner/QuantityInputWoerner.vue"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","ref","attrs","type","disabled","waiting","$translate","domProps","value","displayValue","on","change","$event","setValue","target","_v","directives","name","rawName","isMaximum","compMax","expression","class","useAppearance","title","maximumHint","click","increaseValue","isMinimum","minimumHint","decreaseValue","_withStripped","component","options","__file"],"mappings":"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","file":"chunks/ceres-46.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: \"qty-box d-flex h-100\" }, [\n _c(\"input\", {\n ref: \"quantityInputField\",\n staticClass: \"qty-input text-center\",\n attrs: {\n type: \"text\",\n disabled: _vm.waiting,\n \"aria-label\": _vm.$translate(\"Ceres::Template.itemQuantityInput\")\n },\n domProps: { value: _vm.displayValue },\n on: {\n change: function($event) {\n return _vm.setValue($event.target.value)\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"qty-btn-container d-flex flex-column\" }, [\n _c(\n \"button\",\n {\n directives: [\n {\n name: \"tooltip\",\n rawName: \"v-tooltip\",\n value: _vm.isMaximum && _vm.compMax !== 0,\n expression: \"isMaximum && compMax !== 0\"\n }\n ],\n staticClass:\n \"btn qty-btn flex-fill d-flex justify-content-center p-0\",\n class: {\n disabled: _vm.isMaximum || _vm.waiting,\n \"btn-appearance\": _vm.useAppearance\n },\n attrs: {\n \"data-toggle\": \"tooltip\",\n \"data-placement\": \"top\",\n \"aria-label\": _vm.$translate(\n \"Ceres::Template.itemQuantityInputDecrease\"\n ),\n title: _vm.maximumHint\n },\n on: {\n click: function($event) {\n return _vm.increaseValue()\n }\n }\n },\n [\n _c(\"i\", {\n staticClass: \"fa fa-plus default-float\",\n attrs: { \"aria-hidden\": \"true\" }\n })\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"button\",\n {\n directives: [\n {\n name: \"tooltip\",\n rawName: \"v-tooltip\",\n value: _vm.isMinimum && _vm.compMax !== 0,\n expression: \"isMinimum && compMax !== 0\"\n }\n ],\n staticClass:\n \"btn qty-btn flex-fill d-flex justify-content-center p-0\",\n class: {\n disabled: _vm.isMinimum || _vm.waiting,\n \"btn-appearance\": _vm.useAppearance\n },\n attrs: {\n \"data-toggle\": \"tooltip\",\n \"data-placement\": \"bottom\",\n \"aria-label\": _vm.$translate(\n \"Ceres::Template.itemQuantityInputDecrease\"\n ),\n title: _vm.minimumHint\n },\n on: {\n click: function($event) {\n return _vm.decreaseValue()\n }\n }\n },\n [\n _c(\"i\", {\n staticClass: \"fa fa-minus default-float\",\n attrs: { \"aria-hidden\": \"true\" }\n })\n ]\n )\n ])\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","<template>\n <div class=\"qty-box d-flex h-100\">\n <input class=\"qty-input text-center\"\n type=\"text\"\n :value=\"displayValue\"\n @change=\"setValue($event.target.value)\"\n :disabled=\"waiting\"\n :aria-label=\"$translate('Ceres::Template.itemQuantityInput')\"\n ref=\"quantityInputField\">\n\n <div class=\"qty-btn-container d-flex flex-column\">\n <button class=\"btn qty-btn flex-fill d-flex justify-content-center p-0\"\n @click=\"increaseValue()\"\n :class=\"{ 'disabled': isMaximum || waiting, 'btn-appearance': useAppearance }\"\n v-tooltip=\"isMaximum && compMax !== 0\"\n data-toggle=\"tooltip\"\n data-placement=\"top\"\n :aria-label=\"$translate('Ceres::Template.itemQuantityInputDecrease')\"\n :title=\"maximumHint\">\n <i class=\"fa fa-plus default-float\" aria-hidden=\"true\"></i>\n </button>\n\n <button class=\"btn qty-btn flex-fill d-flex justify-content-center p-0\"\n @click=\"decreaseValue()\"\n :class=\"{ 'disabled': isMinimum || waiting, 'btn-appearance': useAppearance }\"\n v-tooltip=\"isMinimum && compMax !== 0\"\n data-toggle=\"tooltip\"\n data-placement=\"bottom\"\n :aria-label=\"$translate('Ceres::Template.itemQuantityInputDecrease')\"\n :title=\"minimumHint\">\n <i class=\"fa fa-minus default-float\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n</template>\n\n<script>\nimport { floatLength, formatFloat, limit } from \"../helper/number\";\nimport { defaultValue, isDefined, isNullOrUndefined } from \"../helper/utils\";\nimport { debounce } from \"../helper/debounce\";\nimport { mapState } from \"vuex\";\n\nexport default {\n name: \"quantity-input\",\n\n props: {\n value: {\n type: Number,\n required: true\n },\n timeout: {\n type: Number,\n required: false,\n default: 500\n },\n min: {\n type: Number,\n required: false,\n default: 0\n },\n max: {\n type: Number,\n required: false\n },\n interval: {\n type: Number,\n required: false,\n default: 1\n },\n waiting: {\n type: Boolean,\n required: false\n },\n variationId: {\n type: Number,\n required: false\n },\n useAppearance: Boolean,\n itemId:0\n },\n\n data()\n {\n return {\n compValue: this.value,\n compMin: this.min,\n compMax: this.max,\n compInterval: this.interval,\n compDecimals: 0,\n onValueChanged: null\n };\n },\n\n created()\n {\n this.compInterval = defaultValue(this.compInterval, 1);\n this.compInterval = this.compInterval === 0 ? 1 : this.compInterval;\n\n this.compDecimals = floatLength(this.compInterval);\n\n this.onValueChanged = debounce(() =>\n {\n this.$emit(\"quantity-change\", this.compValue);\n }, defaultValue(this.timeout, 500));\n\n if (!isNullOrUndefined(this.variationId))\n {\n this.fetchQuantityFromBasket();\n }\n },\n\n computed:\n {\n variationBasketQuantity()\n {\n if (isNullOrUndefined(this.variationId))\n {\n return 0;\n }\n\n if(this.itemSetVariationId <= 0 || this.variationId === this.itemSetVariationId)\n {\n const basketObject = this.$store.state.basket.items.find(variations => variations.variationId === this.variationId);\n\n return basketObject ? basketObject.quantity : 0;\n }\n\n return 0;\n },\n\n isMinimum()\n {\n return isDefined(this.compMin) && (this.compValue - this.compInterval) < this.compMin;\n },\n\n isMaximum()\n {\n return isDefined(this.compMax) && (this.compValue + this.compInterval) > this.compMax;\n },\n\n minimumHint()\n {\n return this.$translate(\n \"Ceres::Template.singleItemQuantityMin\",\n {\n min: this.min\n }\n );\n },\n\n maximumHint()\n {\n return this.$translate(\n \"Ceres::Template.singleItemQuantityMax\",\n {\n max: this.max\n }\n );\n },\n\n displayValue()\n {\n return this.$options.filters.numberFormat(this.compValue);\n },\n\n itemSetVariationId()\n {\n if (this.$store.state.items.itemSetId > 0)\n {\n return this.$store.getters[`${this.$store.state.items.itemSetId}/currentItemVariation`].variation.id;\n }\n\n return 0;\n },\n\n ...mapState({\n basketItems: state => state.basket.items\n })\n },\n\n watch:\n {\n basketItems:\n {\n handler(newValue, oldValue)\n {\n if (isDefined(this.variationId))\n {\n this.fetchQuantityFromBasket();\n }\n },\n deep: true\n },\n\n min(newValue)\n {\n this.compMin = newValue;\n this.fetchQuantityFromBasket();\n },\n\n max(newValue)\n {\n this.compMax = newValue;\n this.fetchQuantityFromBasket();\n },\n\n value(newValue, oldValue)\n {\n if (newValue !== oldValue)\n {\n this.setValue(newValue);\n }\n }\n },\n\n methods:\n {\n increaseValue()\n {\n const newValue = formatFloat(this.compValue + this.compInterval, this.compDecimals);\n\n if ((isNullOrUndefined(this.compMax) || newValue <= this.compMax) && !this.waiting)\n {\n this.setValue(newValue);\n }\n },\n\n decreaseValue()\n {\n const newValue = formatFloat(this.compValue - this.compInterval, this.compDecimals);\n\n if ((isNullOrUndefined(this.compMin) || newValue >= this.compMin) && !this.waiting)\n {\n this.setValue(newValue);\n }\n },\n\n setValue(value)\n {\n // consider the configured decimal seperator (if the input is typed in the input field)\n if (typeof value === \"string\")\n {\n value = value.replace(App.decimalSeparator || \",\", \".\");\n }\n\n value = parseFloat(value);\n if (isNaN(value))\n {\n value = defaultValue(this.compMin, 1);\n }\n\n // limit new value to min/ max value\n value = limit(value, this.compMin, this.compMax);\n\n // make sure, new value is an even multiple of interval\n const diff = formatFloat(value % this.compInterval, this.compDecimals, true);\n\n if (diff > 0 && diff !== this.compInterval)\n {\n if (diff < this.compInterval / 2)\n {\n value -= diff;\n }\n else\n {\n value += this.compInterval - diff;\n }\n value = limit(value, this.compMin, this.compMax);\n }\n\n // cut fraction\n value = formatFloat(value, this.compDecimals);\n\n if (value !== this.compValue)\n {\n this.compValue = value;\n this.onValueChanged();\n }\n else if (!isNullOrUndefined(this.$refs.quantityInputField))\n {\n this.$refs.quantityInputField.value = value;\n }\n },\n\n fetchQuantityFromBasket()\n {\n if (!isNullOrUndefined(this.min) && this.variationBasketQuantity >= this.min && this.variationBasketQuantity !== 0)\n {\n // minimum quantity already in basket\n this.compMin = this.compInterval;\n }\n else if (this.variationBasketQuantity === 0)\n {\n this.compMin = this.min;\n }\n\n if (!isNullOrUndefined(this.max))\n {\n // decrease maximum quantity by quantity of variations already in basket\n this.compMax = this.max - this.variationBasketQuantity;\n\n if (this.variationBasketQuantity + this.compInterval > this.max)\n {\n this.compMin = 0;\n this.compMax = 0;\n this.$emit(\"out-of-stock\", true);\n }\n else\n {\n this.$emit(\"out-of-stock\", false);\n }\n }\n else\n {\n this.$emit(\"out-of-stock\", false);\n }\n\n this.setValue(this.compMin);\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!./QuantityInputWoerner.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!./QuantityInputWoerner.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./QuantityInputWoerner.vue?vue&type=template&id=4b64ca87&\"\nimport script from \"./QuantityInputWoerner.vue?vue&type=script&lang=js&\"\nexport * from \"./QuantityInputWoerner.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(\"C:\\\\Users\\\\lenna\\\\Arbeit\\\\Plenty\\\\Plenty1\\\\51881\\\\189\\\\Woerner\\\\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('4b64ca87')) {\n api.createRecord('4b64ca87', component.options)\n } else {\n api.reload('4b64ca87', component.options)\n }\n module.hot.accept(\"./QuantityInputWoerner.vue?vue&type=template&id=4b64ca87&\", function () {\n api.rerender('4b64ca87', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"resources/js/src/app/woerner/QuantityInputWoerner.vue\"\nexport default component.exports"],"sourceRoot":""}