{"version":3,"sources":["webpack:///./src/components/Reservations/ModalEditExternalLink.vue","webpack:///src/components/Reservations/ModalEditExternalLink.vue","webpack:///./src/components/Reservations/ModalEditExternalLink.vue?842c","webpack:///./src/components/Reservations/ModalEditExternalLink.vue?6e76","webpack:///./src/components/Reservations/ModalEditExternalLink.vue?24d1"],"names":["render","_vm","this","_c","_self","attrs","$t","isSaving","isSavingError","disableSaveButton","onClickCancel","saveEditedLink","showModal","on","scopedSlots","_u","key","fn","staticClass","_v","_s","directives","name","rawName","value","mExternalLink","LinkType","expression","$event","$$selectedVal","Array","prototype","filter","call","target","options","o","selected","map","val","_value","$set","multiple","domProps","Link","composing","proxy","slot","staticRenderFns","components","props","type","Boolean","default","Function","required","externalLink","Object","data","isSavingSuccess","computed","_objectSpread","mapState","urlEmpty","link","replace","trim","linkTypeSelected","isUrlValid","matcher","parsedLink","cleanSource","test","includes","created","methods","mapMutations","_this","self","ReservationId","reservation","Id","ReservationKey","Key","checkURLforHTTPS","removeXSS","reservationProvider","editExternalLink","then","response","status","$emit","EventBus","message","catch","error","finally","url","afterHttps","slice","component"],"mappings":"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","file":"js/chunk-25882d59.js?id=65b3f8add2baa93aa856","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ui-component-modal',{attrs:{\"modalTitle\":_vm.$t('Components.Reservations.ModalEditExternalLink.Modal_Title'),\"isSaving\":_vm.isSaving,\"isSavingError\":_vm.isSavingError,\"disableSaveButton\":_vm.disableSaveButton,\"hideFooterButtons\":_vm.isSavingError,\"onClickCancel\":_vm.onClickCancel,\"onClickSave\":_vm.saveEditedLink,\"showModal\":_vm.showModal},on:{\"closeModal\":_vm.onClickCancel},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('table',{staticClass:\"table is-fullwidth is-striped\"},[_c('tbody',[_c('tr',[_c('td',[_vm._v(\" \"+_vm._s(_vm.$t( `Components.Reservation.ModalEditExternalLink.Label_EditNewLinkType` ))+\" \")]),_c('td',[_c('div',{staticClass:\"select\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.mExternalLink.LinkType),expression:\"mExternalLink.LinkType\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.mExternalLink, \"LinkType\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},[_c('option',{domProps:{\"value\":'None',\"selected\":_vm.mExternalLink.LinkType === 'None'}},[_vm._v(\" \"+_vm._s(_vm.$t( `Components.Reservation.ModalEditExternalLink.Please_select_type` ))+\" \")]),_c('option',{domProps:{\"value\":'VideoCall',\"selected\":_vm.mExternalLink.LinkType === 'VideoCall'}},[_vm._v(\" \"+_vm._s(_vm.$t( `Components.Reservation.ModalEditExternalLink.Label_VideoCall` ))+\" \")]),_c('option',{domProps:{\"value\":'Document',\"selected\":_vm.mExternalLink.LinkType === 'Document'}},[_vm._v(\" \"+_vm._s(_vm.$t( `Components.Reservation.ModalEditExternalLink.Label_Document` ))+\" \")])])])])]),_c('tr',[_c('td',[_vm._v(\" \"+_vm._s(_vm.$t( `Components.Reservation.ModalEditExternalLink.Label_EditNewLinkUrl` ))+\" \")]),_c('td',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.mExternalLink.Link),expression:\"mExternalLink.Link\"}],staticClass:\"input\",attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.mExternalLink.Link)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.mExternalLink, \"Link\", $event.target.value)}}})])])])])]},proxy:true}])},[_c('template',{slot:\"modalTitle\"})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <ui-component-modal\n    :modalTitle=\"\n      $t('Components.Reservations.ModalEditExternalLink.Modal_Title')\n    \"\n    :isSaving=\"isSaving\"\n    :isSavingError=\"isSavingError\"\n    :disableSaveButton=\"disableSaveButton\"\n    :hideFooterButtons=\"isSavingError\"\n    :onClickCancel=\"onClickCancel\"\n    :onClickSave=\"saveEditedLink\"\n    :showModal=\"showModal\"\n    @closeModal=\"onClickCancel\"\n  >\n    <template slot=\"modalTitle\"></template>\n    <template v-slot:content>\n      <table class=\"table is-fullwidth is-striped\">\n        <tbody>\n          <tr>\n            <td>\n              {{\n                $t(\n                  `Components.Reservation.ModalEditExternalLink.Label_EditNewLinkType`\n                )\n              }}\n            </td>\n            <td>\n              <div class=\"select\">\n                <select v-model=\"mExternalLink.LinkType\">\n                  <option\n                    :value=\"'None'\"\n                    :selected=\"mExternalLink.LinkType === 'None'\"\n                  >\n                    {{\n                      $t(\n                        `Components.Reservation.ModalEditExternalLink.Please_select_type`\n                      )\n                    }}\n                  </option>\n                  <option\n                    :value=\"'VideoCall'\"\n                    :selected=\"mExternalLink.LinkType === 'VideoCall'\"\n                  >\n                    {{\n                      $t(\n                        `Components.Reservation.ModalEditExternalLink.Label_VideoCall`\n                      )\n                    }}\n                  </option>\n                  <option\n                    :value=\"'Document'\"\n                    :selected=\"mExternalLink.LinkType === 'Document'\"\n                  >\n                    {{\n                      $t(\n                        `Components.Reservation.ModalEditExternalLink.Label_Document`\n                      )\n                    }}\n                  </option>\n                </select>\n              </div>\n            </td>\n          </tr>\n          <tr>\n            <td>\n              {{\n                $t(\n                  `Components.Reservation.ModalEditExternalLink.Label_EditNewLinkUrl`\n                )\n              }}\n            </td>\n            <td>\n              <input\n                type=\"text\"\n                v-model=\"mExternalLink.Link\"\n                class=\"input\"\n              />\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </template>\n  </ui-component-modal>\n</template>\n\n<script>\nimport { EventBus } from '@/eventbus/event-bus'\nimport reservationProvider from '@/providers/reservation'\nimport { mapMutations, mapState } from 'vuex';\nimport { removeXSS } from '../../utils/stringHelper';\nimport { cleanSource } from '../../utils/objectHelper';\n\nexport default {\n  components: {},\n\n  props: {\n    showModal: {\n      type: Boolean,\n      default: false,\n    },\n\n    onClickCancel: {\n      type: Function,\n      required: true,\n    },\n\n    externalLink: {\n      type: Object,\n      default: null,\n    },\n  },\n\n  data() {\n    return {\n      isSaving: false,\n      isSavingSuccess: false,\n      isSavingError: false,\n      mExternalLink: null,\n    }\n  },\n\n  computed: {\n    ...mapState('reservationStore', ['reservation']),\n\n    urlEmpty() {\n      if (!this.mExternalLink) { return true }\n      const link = this.mExternalLink.Link.replace(/^https?:\\/\\//i, '').trim();\n      return link === '';\n    },\n\n    linkTypeSelected() {\n      return this.mExternalLink.LinkType !== 'None'\n    },\n\n    isUrlValid() {\n      let matcher = /^(?:\\w+:)?\\/\\/([^\\s\\.]+\\.\\S{2}|localhost[\\:?\\d]*)\\S*$/\n      let parsedLink = cleanSource(this.mExternalLink.Link)\n\n      return matcher.test(parsedLink) &&\n        !parsedLink.includes('..') &&\n        !parsedLink.includes(',')\n    },\n\n    disableSaveButton() {\n      return this.urlEmpty || !this.linkTypeSelected || !this.isUrlValid || this.isSaving\n    }\n  },\n\n  created() {\n    if (this.externalLink) {\n      this.mExternalLink = cleanSource(this.externalLink)\n    }\n  },\n\n  methods: {\n    ...mapMutations('reservationStore', ['setReservation']),\n\n    saveEditedLink() {\n      if (this.disableSaveButton) { return }\n\n      let self = this\n      self.mExternalLink.ReservationId = self.reservation.Id;\n      self.mExternalLink.ReservationKey = self.reservation.Key;\n      self.mExternalLink.Link = self.checkURLforHTTPS(removeXSS(self.mExternalLink.Link));\n\n      if (self.mExternalLink.Link === \"\") {\n        self.isSavingError = true;\n        return;\n      }\n\n      if (!self.isSaving) {\n        self.isSaving = true\n\n        reservationProvider.methods\n          .editExternalLink(self.mExternalLink)\n          .then((response) => {\n            if (response.status === 200) {\n              this.$emit('externalLinkEdited', response.data)\n\n              EventBus.$emit('showToast', {\n                type: 'info',\n                message: this.$t('Components.Reservation.ModalEditExternalLink.Toast_LinkUpdated'),\n              })\n\n              self.onClickCancel()\n            }\n          })\n          .catch((error) => {\n            self.isSavingError = true\n          })\n          .finally(() => {\n            self.isSaving = false\n          })\n      }\n    },\n\n    checkURLforHTTPS(url) {\n      url = url.trim();\n      if (!url) return \"\";\n\n      url = url.replace(/^(https?:?\\/{0,10})+/gi, \"\");\n\n      url = url.replace(/^[^a-zA-Z0-9]+/, \"\");\n\n      url = \"https://\" + url;\n\n      const afterHttps = url.slice(8);\n      if (!/^[a-zA-Z0-9]/.test(afterHttps)) return \"\";\n\n      return url;\n    },\n  },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.table {\n  td:nth-child(1) {\n    padding-top: 14px;\n  }\n}\n</style>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalEditExternalLink.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalEditExternalLink.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ModalEditExternalLink.vue?vue&type=template&id=a87166c8&scoped=true\"\nimport script from \"./ModalEditExternalLink.vue?vue&type=script&lang=js\"\nexport * from \"./ModalEditExternalLink.vue?vue&type=script&lang=js\"\nimport style0 from \"./ModalEditExternalLink.vue?vue&type=style&index=0&id=a87166c8&prod&lang=scss&scoped=true\"\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  \"a87166c8\",\n  null\n  \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ModalEditExternalLink.vue?vue&type=style&index=0&id=a87166c8&prod&lang=scss&scoped=true\""],"sourceRoot":""}