All files / src zms-appointment.ce.vue

0% Statements 0/39
100% Branches 1/1
100% Functions 1/1
0% Lines 0/39

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102                                                                                                                                                                                                           
<template>
  <link
    href="https://assets.muenchen.de/mde/1.0.10/css/style.css"
    rel="stylesheet"
  />
  <main>
    <div>
      <div v-html="sanitizeHtml(mucIconsSprite)"></div>
      <div v-html="sanitizeHtml(customIconsSprit)"></div>
      <appointment-view
        :base-url="baseUrl"
        :service-id="serviceId"
        :location-id="locationId"
        :exclusive-location="exclusiveLocation"
        :appointment-hash="appointmentHash"
        :confirm-appointment-hash="confirmAppointmentHash"
        :t="t"
      />
    </div>
  </main>
</template>
 
<script lang="ts">
const hash = window.location.hash || "";
const path = window.location.pathname || "";
 
const confirmHashMatch =
  hash.match(/#\/appointment\/confirm\/(.+)/) ||
  path.match(/\/appointment\/confirm\/(.+)/);
const appointmentHashMatch =
  hash.match(/#\/appointment\/([^/]+)$/) ||
  path.match(/\/appointment\/([^/]+)$/);
 
const hashMatch = hash.match(/services\/([^/]+)(?:\/locations\/([^/]+))?/);
const pathMatch = path.match(/services\/([^/]+)(?:\/locations\/([^/]+))?/);
 
export const fallbackConfirmAppointmentHash = confirmHashMatch?.[1];
export const fallbackAppointmentHash = appointmentHashMatch?.[1];
 
export const fallbackServiceId = hashMatch?.[1] || pathMatch?.[1];
export const fallbackLocationId = hashMatch?.[2] || pathMatch?.[2];
</script>
 
<script lang="ts" setup>
import customIconsSprit from "@muenchen/muc-patternlab-vue/assets/icons/custom-icons.svg?raw";
import mucIconsSprite from "@muenchen/muc-patternlab-vue/assets/icons/muc-icons.svg?raw";
import { useI18n } from "vue-i18n";
 
import AppointmentView from "@/components/Appointment/AppointmentView.vue";
import { sanitizeHtml } from "@/utils/sanitizeHtml";
 
defineProps({
  baseUrl: {
    type: String,
    required: false,
    default: undefined,
  },
  serviceId: {
    type: String,
    required: false,
    default: fallbackServiceId,
  },
  locationId: {
    type: String,
    required: false,
    default: fallbackLocationId,
  },
  exclusiveLocation: {
    type: String,
    required: false,
    default: undefined,
  },
  appointmentHash: {
    type: String,
    required: false,
    default: fallbackAppointmentHash,
  },
  confirmAppointmentHash: {
    type: String,
    required: false,
    default: fallbackConfirmAppointmentHash,
  },
});
 
const { t } = useI18n();
</script>
 
<style>
@import "@muenchen/muc-patternlab-vue/assets/css/custom-style.css";
@import "@muenchen/muc-patternlab-vue/style.css";
 
:host {
  font-family:
    Open Sans,
    sans-serif;
}
 
main {
  padding-bottom: 32px;
}
</style>