{"version":3,"sources":["webpack:///./src/components/general/side-drawer-dialog.vue?d05f","webpack:///./src/shared/constants/dialog/PromiseDialogEvent.js","webpack:///./src/models/dialog/promiseDialogActionsDto.js","webpack:///./src/models/dialog/promiseDialogDto.js","webpack:///./src/components/general/promise-dialog.vue?6b7b","webpack:///src/components/general/promise-dialog.vue","webpack:///./src/components/general/promise-dialog.vue?1ec4","webpack:///./src/components/general/promise-dialog.vue","webpack:///src/components/general/side-drawer-dialog.vue","webpack:///./src/components/general/side-drawer-dialog.vue?f17f","webpack:///./src/components/general/side-drawer-dialog.vue","webpack:///./src/components/booking/grade-list.vue?99a4","webpack:///src/components/booking/grade-list.vue","webpack:///./src/components/booking/grade-list.vue?e039","webpack:///./src/components/booking/grade-list.vue","webpack:///./src/components/layout/styled-dialog-header.vue?af9c","webpack:///./src/router/views/bookings/pending-approval.vue?1856","webpack:///./src/components/booking/pendingApprovals/booking-pending-approvals-container.vue?ff2c","webpack:///./src/components/booking/pendingApprovals/booking-pending-approvals-list.vue?2db7","webpack:///./src/components/booking/pendingApprovals/booking-pending-approvals-list-error-block.vue?6138","webpack:///src/components/booking/pendingApprovals/booking-pending-approvals-list-error-block.vue","webpack:///./src/components/booking/pendingApprovals/booking-pending-approvals-list-error-block.vue?b9f4","webpack:///./src/components/booking/pendingApprovals/booking-pending-approvals-list-error-block.vue","webpack:///./src/components/booking/pendingApprovals/booking-pending-approvals-list-non-consecutive-dates-shape.vue?e085","webpack:///src/components/booking/pendingApprovals/booking-pending-approvals-list-non-consecutive-dates-shape.vue","webpack:///./src/components/booking/pendingApprovals/booking-pending-approvals-list-non-consecutive-dates-shape.vue?46e2","webpack:///./src/components/booking/pendingApprovals/booking-pending-approvals-list-non-consecutive-dates-shape.vue","webpack:///src/components/booking/pendingApprovals/booking-pending-approvals-list.vue","webpack:///./src/components/booking/pendingApprovals/booking-pending-approvals-list.vue?e723","webpack:///./src/components/booking/pendingApprovals/booking-pending-approvals-list.vue","webpack:///./src/components/booking/details/booking-details-content.vue?95f1","webpack:///./src/shared/constants/booking/BookingApprovalStatus.js","webpack:///./src/mixins/bookingDetailsMixin.js","webpack:///./src/components/booking/details/booking-details-request-alert.vue?1e6a","webpack:///src/components/booking/details/booking-details-request-alert.vue","webpack:///./src/components/booking/details/booking-details-request-alert.vue?6114","webpack:///./src/components/booking/details/booking-details-request-alert.vue","webpack:///./src/components/booking/details/booking-details-header-card.vue?5409","webpack:///./src/components/booking/details/booking-details-action-btn.vue?0bdf","webpack:///./src/components/booking/pendingApprovals/booking-pending-approvals-reject-booking-dialog.vue?6bcf","webpack:///src/components/booking/pendingApprovals/booking-pending-approvals-reject-booking-dialog.vue","webpack:///./src/components/booking/pendingApprovals/booking-pending-approvals-reject-booking-dialog.vue?0c08","webpack:///./src/components/booking/pendingApprovals/booking-pending-approvals-reject-booking-dialog.vue","webpack:///src/components/booking/details/booking-details-action-btn.vue","webpack:///./src/components/booking/details/booking-details-action-btn.vue?6652","webpack:///./src/components/booking/details/booking-details-action-btn.vue","webpack:///src/components/booking/details/booking-details-header-card.vue","webpack:///./src/components/booking/details/booking-details-header-card.vue?8bab","webpack:///./src/components/booking/details/booking-details-header-card.vue","webpack:///./src/components/booking/details/booking-details-client-info-card.vue?dd4f","webpack:///./src/components/general/info-label.vue?2667","webpack:///src/components/general/info-label.vue","webpack:///./src/components/general/info-label.vue?7912","webpack:///./src/components/general/info-label.vue","webpack:///src/components/booking/details/booking-details-client-info-card.vue","webpack:///./src/components/booking/details/booking-details-client-info-card.vue?3766","webpack:///./src/components/booking/details/booking-details-client-info-card.vue","webpack:///./src/components/booking/details/booking-details-tab-group.vue?792b","webpack:///./src/components/booking/details/booking-details-tab-days.vue?2fc5","webpack:///src/components/booking/details/booking-details-tab-days.vue","webpack:///./src/components/booking/details/booking-details-tab-days.vue?f537","webpack:///./src/components/booking/details/booking-details-tab-days.vue","webpack:///./src/components/booking/details/booking-details-tab-history.vue?847c","webpack:///./src/models/comments/commentModel.js","webpack:///./src/shared/constants/comments/CommentType.js","webpack:///./src/components/booking/comments/comment-list.vue?e38f","webpack:///./src/components/booking/comments/comment-control.vue?ab8f","webpack:///./src/components/booking/comments/comment-default.vue?e6ec","webpack:///./src/components/booking/comments/comment-base.vue?0f75","webpack:///./src/components/booking/comments/comment-base-avatar.vue?6f52","webpack:///src/components/booking/comments/comment-base-avatar.vue","webpack:///./src/components/booking/comments/comment-base-avatar.vue?15c8","webpack:///./src/components/booking/comments/comment-base-avatar.vue","webpack:///./src/components/booking/comments/comment-base-text.vue?e947","webpack:///src/components/booking/comments/comment-base-text.vue","webpack:///./src/components/booking/comments/comment-base-text.vue?2a4f","webpack:///./src/components/booking/comments/comment-base-text.vue","webpack:///./src/components/booking/comments/comment-base-subtitle.vue?423a","webpack:///src/components/booking/comments/comment-base-subtitle.vue","webpack:///./src/components/booking/comments/comment-base-subtitle.vue?50d5","webpack:///./src/components/booking/comments/comment-base-subtitle.vue","webpack:///src/components/booking/comments/comment-base.vue","webpack:///./src/components/booking/comments/comment-base.vue?f16e","webpack:///./src/components/booking/comments/comment-base.vue","webpack:///src/components/booking/comments/comment-default.vue","webpack:///./src/components/booking/comments/comment-default.vue?7e60","webpack:///./src/components/booking/comments/comment-default.vue","webpack:///src/components/booking/comments/comment-control.vue","webpack:///./src/components/booking/comments/comment-control.vue?c9ad","webpack:///./src/components/booking/comments/comment-control.vue","webpack:///src/components/booking/comments/comment-list.vue","webpack:///./src/components/booking/comments/comment-list.vue?4798","webpack:///./src/components/booking/comments/comment-list.vue","webpack:///src/components/booking/details/booking-details-tab-history.vue","webpack:///./src/components/booking/details/booking-details-tab-history.vue?620a","webpack:///./src/components/booking/details/booking-details-tab-history.vue","webpack:///./src/components/booking/details/booking-details-tab-confirmations.vue?a08d","webpack:///src/components/booking/details/booking-details-tab-confirmations.vue","webpack:///./src/components/booking/details/booking-details-tab-confirmations.vue?5534","webpack:///./src/components/booking/details/booking-details-tab-confirmations.vue","webpack:///./src/components/booking/details/booking-details-tab-details.vue?0834","webpack:///src/components/booking/details/booking-details-tab-details.vue","webpack:///./src/components/booking/details/booking-details-tab-details.vue?398a","webpack:///./src/components/booking/details/booking-details-tab-details.vue","webpack:///src/components/booking/details/booking-details-tab-group.vue","webpack:///./src/components/booking/details/booking-details-tab-group.vue?eeaf","webpack:///./src/components/booking/details/booking-details-tab-group.vue","webpack:///src/components/booking/details/booking-details-content.vue","webpack:///./src/components/booking/details/booking-details-content.vue?f49a","webpack:///./src/components/booking/details/booking-details-content.vue","webpack:///./src/components/booking/pendingApprovals/booking-pending-approvals-details-dialog-header.vue?77a9","webpack:///./src/components/booking/pendingApprovals/booking-pending-approvals-details-status-label.vue?3383","webpack:///src/components/booking/pendingApprovals/booking-pending-approvals-details-status-label.vue","webpack:///./src/components/booking/pendingApprovals/booking-pending-approvals-details-status-label.vue?653d","webpack:///./src/components/booking/pendingApprovals/booking-pending-approvals-details-status-label.vue","webpack:///src/components/booking/pendingApprovals/booking-pending-approvals-details-dialog-header.vue","webpack:///./src/components/booking/pendingApprovals/booking-pending-approvals-details-dialog-header.vue?77e9","webpack:///./src/components/booking/pendingApprovals/booking-pending-approvals-details-dialog-header.vue","webpack:///src/components/booking/pendingApprovals/booking-pending-approvals-container.vue","webpack:///./src/components/booking/pendingApprovals/booking-pending-approvals-container.vue?771b","webpack:///./src/components/booking/pendingApprovals/booking-pending-approvals-container.vue","webpack:///src/router/views/bookings/pending-approval.vue","webpack:///./src/router/views/bookings/pending-approval.vue?f460","webpack:///./src/router/views/bookings/pending-approval.vue","webpack:///./src/mixins/formMixin.js","webpack:///./src/components/general/info-label.vue?ce9f","webpack:///./src/components/general/info-label.vue?d5d3","webpack:///../../../src/components/VTextarea/VTextarea.ts","webpack:///./src/helpers/date-helpers.js","webpack:///./src/components/layout/styled-dialog-header.vue?a843","webpack:///src/components/layout/styled-dialog-header.vue","webpack:///./src/components/layout/styled-dialog-header.vue?9177","webpack:///./src/components/layout/styled-dialog-header.vue"],"names":["render","_vm","this","_h","$createElement","_c","_self","attrs","show","compTransition","staticClass","_b","on","$event","persistent","close","compOverlayColumns","compDialogColumns","_t","compDescription","loading","title","class","noGutters","hideActions","_e","isMediumOrLower","_v","_s","$t","ref","staticRenderFns","Object","freeze","OK","Cancel","PromiseDialogActionsDto","constructor","text","icon","attributes","event","PromiseDialogEvent","key","nanoid","actions","PromiseDialogDto","color","VuetifyColourClass","primary","isNullOrEmptyArray","map","action","width","isPersistent","model","value","callback","$$v","showDialog","expression","hasColor","options","_l","resolveEvent","name","mixins","baseMixin","props","type","String","default","resolve","computed","hasOptions","methods","opts","Promise","component","VBtn","VCard","VCardActions","VCardText","VDialog","VDivider","VIcon","VSpacer","components","prop","description","dialogOnClose","xl","Number","validator","lg","md","sm","xs","$emit","closeDialog","result","$refs","dialog","VCol","VOverlay","VRow","p","index","id","small","xSmall","grades","Array","Boolean","VChip","handleTableRowClick","showFlyout","closeFlyout","scopedSlots","_u","fn","proxy","loadBookingDetails","activeBooking","handleEvent","loadApprovals","tableHeaders","pendingApprovals","isLoadingApprovalsList","getTableItemClass","itemsPerPageOptions","item","bookingDatesString","details","earliestDate","latestDate","staticStyle","areDatesConsecutive","bookingTimeString","startTime","endTime","days","location","clientAndGroupString","client","getClientGroupName","covering","reason","createdBy","createdDate","createdOnUtc","UserAvatar","BookingPendingApprovalsListErrorBlock","BookingPendingApprovalsListNonConsecutiveDatesShape","data","failedToLoad","loadPendingApprovals","resetLoadFailureState","isSuccess","earliest","latest","start","end","clientName","groupName","date","pascal","VBadge","VDataTable","booking","BookingApprovalStatus","PendingApproval","mapGetters","hasLocationBookingCreatePermission","isBookingRequest","status","bookingRequestStatuses","includes","canActionBookingRequest","locationId","required","VAlert","isDarkMode","bookingDate","classification","onlineTitle","compIdText","isLargeOrHigher","dense","isLoadingSubmitPendingApproval","acceptBookingRequest","promptForReasonOnRejection","companyNameShort","rejectBookingRequest","showRejectBookingDialog","compInputLabel","rules","reasonForRejection","isSubmitButtonDisabled","rejectBookingAndClose","isMobileViewPort","trim","VCardTitle","VTextarea","BookingPendingApprovalsRejectBookingDialog","bookingId","respondToBookingRequest","VList","VListItem","VListItemContent","VListItemIcon","VListItemTitle","BookingDetailsActionBtn","payload","groupAndLocationString","$style","infoLabelStyling","label","injectStyles","context","locals","InfoLabel","locationName","tab","layout","mapDatesForCalendar","isABookingRequest","formatDate","dates","VBtnToggle","VDatePicker","VSimpleTable","compBookingHistoryComments","CommentModel","params","commentText","addedBy","dateCreated","dayjs","getDateCreatedTimestamp","format","DateFormatToken","ddddDoMMMMatLT","CommentType","ClientCancelledBookingClientLogin","ReplaceMeBookingCreate","GeneralBookingComment","BookingRunningLate","R2WUnavailableFromMondayToFriday","BookingDiscountApplied","BookingDiscountIgnored","BookingShiftRecordAdded","BookingTimesheetAdded","BookingApprovedCandidate","BookingApprovedClient","BookingDisputedClient","BookingDisputedCandidate","BookingDisputeResolved","TravelPlanStatusUpdated","PhonecallOutboundCandidate","PhonecallInboundCandidate","PhonecallOutboundContact","PhonecallInboundContact","BookingUpdated","BookingStatusChanged","InvoicePayslipGeneralComment","BookingApprovalCreated","comment","commentControlDefinition","_g","tag","events","hover","active","compActiveClass","compHoverClass","isSmallOrLower","hideAvatar","avatarIcon","avatarColor","subtitle","disableHover","activeClass","hoverClass","hasCustomHoverClass","defaultHoverClass","hasCustomActiveClass","VHover","VSheet","commentControlFactory","extraProps","comments","hasConfirmations","email","getSMSNumber","getVoiceNumber","EmptyStateBlock","confirmations","length","directives","rawName","hasCertifications","GradeList","certifications","BookingDetailsTabDays","BookingDetailsTabHistory","BookingDetailsTabConfirmations","BookingDetailsTabDetails","VTab","VTabItem","VTabs","VTabsItems","BookingDetailsRequestAlert","BookingDetailsHeaderCard","BookingDetailsClientInfoCard","BookingDetailsTabGroup","compFlyoutTitle","isLoadingFlyout","compStatusText","StyledDialogHeader","BookingPendingApprovalsDetailsStatusLabel","flyoutHasError","BookingPendingApprovalsList","SideDrawerDialog","BookingPendingApprovalsDetailsDialogHeader","BookingDetailsContent","activeBookingId","showDetailsContent","resetFlyout","openFlyout","setFlyout","loadApprovalDetails","submitPendingApproval","pendingApprovalsTable","loadApprovalsList","submitPendingApprovalResponse","Error","VProgressCircular","meta","v","min","config","get","uppercase","toLowerCase","lowercase","toUpperCase","number","test","passwordsMatch","newPass","special","submit","emit","module","exports","baseMixins","autoGrow","noResize","rowHeight","isNaN","parseFloat","rows","parseInt","watch","val","$nextTick","setTimeout","input","height","minHeight","Math","isFocused","e","isMonthBeforeDay","locale","$dayjs","localeData","longDateFormat","sortDate","firstDate","secondDate","diff","hasDescription","compTitleClass","VToolbar","VToolbarTitle"],"mappings":"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","file":"js/chunk-39e07481.4c153739.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-dialog',{attrs:{\"data-testid\":\"side-drawer-dialog\",\"value\":_vm.show,\"transition\":_vm.compTransition,\"fullscreen\":\"\",\"hide-overlay\":\"\",\"persistent\":\"\",\"no-click-animation\":\"\",\"scrollable\":\"\"}},[_c('v-row',{staticClass:\"fill-height\",attrs:{\"no-gutters\":\"\"}},[_c('v-col',_vm._b({attrs:{\"cols\":\"0\",\"data-testid\":\"side-drawer-dialog-overlay\"},on:{\"click\":function($event){!_vm.persistent ? _vm.close() : null}}},'v-col',_vm.compOverlayColumns,false)),_c('v-col',_vm._b({staticClass:\"fill-height\",attrs:{\"cols\":\"12\"}},'v-col',_vm.compDialogColumns,false),[_c('v-card',{staticClass:\"fill-height d-flex flex-column\",attrs:{\"tile\":\"\"}},[_vm._t(\"header\",[_c('StyledDialogHeader',{attrs:{\"description\":_vm.compDescription,\"loading\":_vm.loading,\"title\":_vm.title},on:{\"close\":_vm.close}})],{\"close\":_vm.close}),_c('v-card-text',{class:[\n              'flex-grow-1 fill-height overflow-auto',\n              _vm.noGutters ? 'pa-0' : 'px-sm-8 px-xs-0 pt-4' ]},[_vm._t(\"default\")],2),(!_vm.hideActions)?_c('v-card-actions',{staticClass:\"px-sm-8 pb-sm-4 px-xs-4 pb-xs-4\"},[_vm._t(\"actions\",[_c('v-spacer'),_c('v-btn',{attrs:{\"data-testid\":\"side-drawer-dialog-close-btn\",\"large\":!_vm.isMediumOrLower,\"text\":\"\"},on:{\"click\":_vm.close}},[_vm._v(\" \"+_vm._s(_vm.$t('general.close'))+\" \")])],{\"close\":_vm.close})],2):_vm._e()],2)],1)],1)],1),_c('v-overlay',{attrs:{\"value\":_vm.show,\"z-index\":\"10\"}}),_c('PromiseDialog',{ref:\"dialog\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * Describes different types of events fired from the promise dialog\n */\nexport default Object.freeze({\n  /**\n   * A confirmation or submit response\n   */\n  OK: 'ok',\n  /**\n   * Indicating that the dialog should be closed\n   */\n  Cancel: 'cancel',\n})\n","/* eslint-disable no-unused-vars */\nimport { nanoid } from 'nanoid'\nimport PromiseDialogEvent from '@/shared/constants/dialog/PromiseDialogEvent'\n\n/**\n * @class\n * @public\n */\nexport default class PromiseDialogActionsDto {\n  /**\n   * @constructor\n   */\n  constructor({\n    text = '',\n    icon,\n    attributes = {},\n    event = PromiseDialogEvent.OK,\n  } = {}) {\n    /**\n     * Unique key to facilitate the v-for loop. Generated by nanoid\n     * @type {String}\n     */\n    this.key = nanoid()\n\n    /**\n     * Text displayed on the action button\n     * @type {String}\n     */\n    this.text = text\n\n    /**\n     * Object that configure the action buttons on the dialog\n     * @type {Array<Object>}\n     */\n    this.actions = icon\n\n    /**\n     * Object containing attributes to style the action button\n     * @type {Object}\n     * @see https://v2.vuetifyjs.com/en/api/v-btn/ for full list of attributes\n     * @example\n     *\n     * ```\n     * {\n     *    id: 'confirm-btn',\n     *    color: VuetifyColourClass.primary,\n     *    text: true,\n     *    title: 'Click here to accept the terms',\n     *    'data-testid': 'promise-dialog--confirm-btn'\n     * }\n     * ```\n     */\n    this.attributes = attributes\n\n    /**\n     * Event returned when action button is clicked\n     * @type {String}\n     * @see {PromiseDialogEvent} for valid range of values\n     */\n    this.event = event\n  }\n}\n","/* eslint-disable no-unused-vars */\nimport { isNullOrEmptyArray } from '@/helpers/array-helpers'\nimport VuetifyColourClass from '@/shared/constants/core/VuetifyColourClass'\nimport PromiseDialogActionsDto from './promiseDialogActionsDto'\n\n/**\n * @class\n * @public\n */\nexport default class PromiseDialogDto {\n  /**\n   * @constructor\n   */\n  constructor({\n    title = '',\n    text = '',\n    actions = [],\n    color = VuetifyColourClass.primary,\n    icon,\n    persistent = false,\n  } = {}) {\n    /**\n     * Dialog title text\n     * @type {String}\n     */\n    this.title = title\n\n    /**\n     * Description text displayed under the title\n     * @type {String}\n     */\n    this.text = text\n\n    /**\n     * List of objects that configure the action buttons on the dialog.\n     * Each object will generate a button. Actions will be generated in LIFO\n     * order.\n     * @type {Array<PromiseDialogActionsDto>}\n     */\n    this.actions = isNullOrEmptyArray(actions)\n      ? []\n      : actions.map((action) => new PromiseDialogActionsDto(action))\n\n    /**\n     * Vuetify color class that will style the icon\n     * @type {String}\n     * @see {VuetifyColourClass} for valid range of values.\n     */\n    this.color = color\n\n    /**\n     * Icon displayed above the title, center aligned. MDI icon string.\n     * @type {String}\n     * @see https://pictogrammers.com/library/mdi for valid range of values.  Needs to be prefixed with `mdi-`\n     */\n    this.icon = icon\n\n    /**\n     * Disables being able to close the dialog by clicking outside the dialog\n     * card\n     * @type {Boolean}\n     */\n    this.persistent = persistent\n  }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"width\":_vm.width,\"persistent\":_vm.isPersistent,\"data-testid\":\"promise-dialog\"},model:{value:(_vm.showDialog),callback:function ($$v) {_vm.showDialog=$$v},expression:\"showDialog\"}},[(_vm.hasOptions)?_c('v-card',{staticClass:\"rounded-xl\"},[_vm._t(\"icon\",[(_vm.hasIcon)?_c('div',{staticClass:\"pt-6 pb-4\"},[_c('v-icon',{attrs:{\"color\":_vm.hasColor ? _vm.options.color : '',\"large\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.options.icon)+\" \")])],1):_vm._e()]),_vm._t(\"title\",[_c('v-card-text',{staticClass:\"text-subtitle-1 text-center mb-0 pb-0 text--dark font-weight-medium\"},[_vm._v(\" \"+_vm._s(_vm.options.title)+\" \")])]),_vm._t(\"text\",[_c('v-card-text',{staticClass:\"mt-0\"},[_vm._v(\" \"+_vm._s(_vm.options.text)+\" \")])]),_c('v-divider'),(_vm.hasActions)?_c('v-card-actions',[_c('v-spacer'),_vm._l((_vm.options.actions),function(action){return _c('v-btn',_vm._b({key:action.key,on:{\"click\":function($event){return _vm.resolveEvent(action.event)}}},'v-btn',action.attributes,false),[(action.icon)?_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\" \"+_vm._s(action.icon)+\" \")]):_vm._e(),_vm._v(\" \"+_vm._s(action.text)+\" \")],1)})],2):_vm._e()],2):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport baseMixin from '@/mixins/baseMixin'\nimport PromiseDialogDto from '@/models/dialog/promiseDialogDto'\nimport { isNullOrEmptyArray } from '@/helpers/array-helpers'\n\nexport default {\n  name: 'PromiseDialog',\n  mixins: [baseMixin],\n  props: {\n    width: {\n      type: String,\n      default: '500',\n    },\n  },\n  data() {\n    return {\n      showDialog: false,\n      resolve: null,\n      /**\n       * @type {PromiseDialogDto}\n       */\n      options: null,\n    }\n  },\n  computed: {\n    hasOptions() {\n      return !!this.options\n    },\n    isPersistent() {\n      if (!this.hasOptions) return false\n      return this.options?.persistent\n    },\n    hasIcon() {\n      if (!this.hasOptions) return false\n      return !!this.options?.icon\n    },\n    hasColor() {\n      if (!this.hasOptions) return false\n      return !!this.options?.color\n    },\n    hasActions() {\n      if (!this.hasOptions) return false\n      return !isNullOrEmptyArray(this.options?.actions)\n    },\n  },\n  methods: {\n    /**\n     * @param {PromiseDialogDto} opts\n     */\n    async show(opts) {\n      this.options = opts || new PromiseDialogDto({})\n\n      return new Promise((resolve) => {\n        this.resolve = resolve\n        this.showDialog = true\n      })\n    },\n    resolveEvent(value) {\n      this.showDialog = false\n      this.resolve && this.resolve(value)\n    },\n  },\n}\n</script>\n\n<template>\n  <v-dialog\n    v-model=\"showDialog\"\n    :width=\"width\"\n    :persistent=\"isPersistent\"\n    data-testid=\"promise-dialog\"\n  >\n    <v-card v-if=\"hasOptions\" class=\"rounded-xl\">\n      <slot name=\"icon\">\n        <div v-if=\"hasIcon\" class=\"pt-6 pb-4\">\n          <v-icon :color=\"hasColor ? options.color : ''\" large>\n            {{ options.icon }}\n          </v-icon>\n        </div>\n      </slot>\n\n      <slot name=\"title\">\n        <v-card-text\n          class=\"text-subtitle-1 text-center mb-0 pb-0 text--dark font-weight-medium\"\n        >\n          {{ options.title }}\n        </v-card-text>\n      </slot>\n\n      <slot name=\"text\">\n        <v-card-text class=\"mt-0\">\n          {{ options.text }}\n        </v-card-text>\n      </slot>\n\n      <v-divider></v-divider>\n\n      <v-card-actions v-if=\"hasActions\">\n        <v-spacer></v-spacer>\n\n        <v-btn\n          v-for=\"action in options.actions\"\n          :key=\"action.key\"\n          v-bind=\"action.attributes\"\n          @click=\"resolveEvent(action.event)\"\n        >\n          <v-icon v-if=\"action.icon\" left>\n            {{ action.icon }}\n          </v-icon>\n          {{ action.text }}\n        </v-btn>\n      </v-card-actions>\n    </v-card>\n  </v-dialog>\n</template>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./promise-dialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./promise-dialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./promise-dialog.vue?vue&type=template&id=5cfdc32e&\"\nimport script from \"./promise-dialog.vue?vue&type=script&lang=js&\"\nexport * from \"./promise-dialog.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\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VDialog,VDivider,VIcon,VSpacer})\n","<script>\nimport PromiseDialogDto from '@/models/dialog/promiseDialogDto'\nimport baseMixin from '@/mixins/baseMixin'\nimport PromiseDialogEvent from '@/shared/constants/dialog/PromiseDialogEvent'\nimport markdownToHtmlConverter from '@/utils/markdown-to-html-converter'\nimport StyledDialogHeader from '../layout/styled-dialog-header.vue'\nimport PromiseDialog from './promise-dialog.vue'\n\nexport default {\n  name: 'SideDrawerDialog',\n  components: { PromiseDialog, StyledDialogHeader },\n  mixins: [baseMixin],\n  model: {\n    prop: 'show',\n    event: 'showUpdated',\n  },\n  props: {\n    show: { type: Boolean },\n    /**\n     * Prevents the dialog from being closed when clicking on the overlay\n     */\n    persistent: { type: Boolean },\n    /**\n     * Dialog title\n     */\n    title: { type: String, default: '' },\n    description: { type: String, default: '' },\n    loading: { type: Boolean, default: false },\n    /**\n     * Displays a confirmation dialog when attempting to close this dialog.\n     * If null, no dialog will appear.\n     */\n    dialogOnClose: { type: PromiseDialogDto, default: () => null },\n    /**\n     * Hides the card actions\n     */\n    hideActions: { type: Boolean },\n    /**\n     * Disables padding around the dialog's body content\n     */\n    noGutters: { type: Boolean },\n    /**\n     * Changes the width of the dialog.\n     * Relates to the xl breakpoint on v-col.\n     */\n    xl: {\n      type: Number,\n      default: 6,\n      validator: function(value) {\n        return value >= 0 && value <= 12\n      },\n    },\n    /**\n     * Changes the width of the dialog.\n     * Relates to the lg breakpoint on v-col.\n     */\n    lg: {\n      type: Number,\n      default: 9,\n      validator: function(value) {\n        return value >= 0 && value <= 12\n      },\n    },\n    /**\n     * Changes the width of the dialog.\n     * Relates to the md breakpoint on v-col.\n     */\n    md: {\n      type: Number,\n      default: 12,\n      validator: function(value) {\n        return value >= 0 && value <= 12\n      },\n    },\n    /**\n     * Changes the width of the dialog.\n     * Relates to the sm breakpoint on v-col.\n     */\n    sm: {\n      type: Number,\n      default: 12,\n      validator: function(value) {\n        return value >= 0 && value <= 12\n      },\n    },\n    /**\n     * Changes the width of the dialog.\n     * Relates to the xs breakpoint on v-col.\n     */\n    xs: {\n      type: Number,\n      default: 12,\n      validator: function(value) {\n        return value >= 0 && value <= 12\n      },\n    },\n  },\n  computed: {\n    compTransition() {\n      return this.isMediumOrLower\n        ? 'slide-y-reverse-transition'\n        : 'slide-x-reverse-transition'\n    },\n\n    compDescription() {\n      if (!this.description) return ''\n      return markdownToHtmlConverter(this.description)\n    },\n    compDialogColumns() {\n      return { xl: this.xl, lg: this.lg, md: this.md, sm: this.sm, xs: this.xs }\n    },\n    compOverlayColumns() {\n      return {\n        xl: 12 - this.xl,\n        lg: 12 - this.lg,\n        md: 12 - this.md,\n        sm: 12 - this.sm,\n        xs: 12 - this.xs,\n      }\n    },\n  },\n  methods: {\n    closeDialog() {\n      this.$emit('closeDialog')\n      this.$emit('showUpdated', false)\n    },\n    async close() {\n      if (!this.dialogOnClose) return this.closeDialog()\n\n      const result = await this.$refs.dialog.show(this.dialogOnClose)\n      if (result === PromiseDialogEvent.OK) this.closeDialog()\n    },\n  },\n}\n</script>\n\n<template>\n  <div>\n    <v-dialog\n      data-testid=\"side-drawer-dialog\"\n      :value=\"show\"\n      :transition=\"compTransition\"\n      fullscreen\n      hide-overlay\n      persistent\n      no-click-animation\n      scrollable\n    >\n      <v-row no-gutters class=\"fill-height\">\n        <v-col\n          cols=\"0\"\n          v-bind=\"compOverlayColumns\"\n          data-testid=\"side-drawer-dialog-overlay\"\n          @click=\"!persistent ? close() : null\"\n        ></v-col>\n        <v-col cols=\"12\" v-bind=\"compDialogColumns\" class=\"fill-height\">\n          <v-card class=\"fill-height d-flex flex-column\" tile>\n            <slot name=\"header\" :close=\"close\">\n              <StyledDialogHeader\n                :description=\"compDescription\"\n                :loading=\"loading\"\n                :title=\"title\"\n                @close=\"close\"\n              />\n            </slot>\n\n            <v-card-text\n              :class=\"[\n                'flex-grow-1 fill-height overflow-auto',\n                noGutters ? 'pa-0' : 'px-sm-8 px-xs-0 pt-4',\n              ]\"\n            >\n              <slot> </slot>\n            </v-card-text>\n            <v-card-actions\n              v-if=\"!hideActions\"\n              class=\"px-sm-8 pb-sm-4 px-xs-4 pb-xs-4\"\n            >\n              <slot name=\"actions\" :close=\"close\">\n                <v-spacer />\n                <v-btn\n                  data-testid=\"side-drawer-dialog-close-btn\"\n                  :large=\"!isMediumOrLower\"\n                  text\n                  @click=\"close\"\n                >\n                  {{ $t('general.close') }}\n                </v-btn>\n              </slot>\n            </v-card-actions>\n          </v-card>\n        </v-col>\n      </v-row>\n    </v-dialog>\n    <v-overlay :value=\"show\" z-index=\"10\" />\n\n    <PromiseDialog ref=\"dialog\" />\n  </div>\n</template>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./side-drawer-dialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./side-drawer-dialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./side-drawer-dialog.vue?vue&type=template&id=51dec8b6&\"\nimport script from \"./side-drawer-dialog.vue?vue&type=script&lang=js&\"\nexport * from \"./side-drawer-dialog.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\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VOverlay } from 'vuetify/lib/components/VOverlay';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCol,VDialog,VOverlay,VRow,VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"mb-1\",attrs:{\"title\":_vm.$t('booking.gradesLabel')}},_vm._l((_vm.grades),function(p,index){return _c('v-chip',{key:'grade' + index + p.id,staticClass:\"mr-1 mt-1 blue--text\",attrs:{\"small\":_vm.small,\"x-small\":_vm.xSmall,\"color\":\"light-blue lighten-5\"}},[_vm._v(\" \"+_vm._s(p.title)+\" \")])}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nexport default {\n  name: 'GradeList',\n  props: {\n    grades: {\n      type: Array,\n      default: function() {\n        return []\n      },\n    },\n    small: {\n      type: Boolean,\n    },\n    xSmall: {\n      type: Boolean,\n    },\n  },\n}\n</script>\n\n<template>\n  <section :title=\"$t('booking.gradesLabel')\" class=\"mb-1\">\n    <v-chip\n      v-for=\"(p, index) in grades\"\n      :key=\"'grade' + index + p.id\"\n      :small=\"small\"\n      :x-small=\"xSmall\"\n      color=\"light-blue lighten-5\"\n      class=\"mr-1 mt-1 blue--text\"\n    >\n      {{ p.title }}\n    </v-chip>\n  </section>\n</template>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./grade-list.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./grade-list.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./grade-list.vue?vue&type=template&id=350ad5b3&\"\nimport script from \"./grade-list.vue?vue&type=script&lang=js&\"\nexport * from \"./grade-list.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\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VChip } from 'vuetify/lib/components/VChip';\ninstallComponents(component, {VChip})\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./styled-dialog-header.vue?vue&type=style&index=0&id=60ec2c2d&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Layout',[_c('BasePageTitle',{attrs:{\"title\":_vm.$t('booking.pendingApproval.pageTitle'),\"subtitle\":\"Manage your incoming booking requests here\"}}),_c('BookingPendingApprovalsContainer')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('BookingPendingApprovalsList',{ref:\"pendingApprovalsTable\",on:{\"loadBookingDetails\":_vm.handleTableRowClick}}),_c('SideDrawerDialog',{attrs:{\"show\":_vm.showFlyout,\"xl\":5,\"lg\":6,\"md\":10},on:{\"closeDialog\":_vm.closeFlyout},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('BookingPendingApprovalsDetailsDialogHeader',{on:{\"close\":_vm.closeFlyout}})]},proxy:true},{key:\"actions\",fn:function(){return undefined},proxy:true}])},[(_vm.isLoadingFlyout)?_c('div',{staticClass:\"w-full h-100 d-flex justify-center align-center\"},[_c('v-progress-circular',{attrs:{\"size\":\"60\",\"color\":\"primary\",\"indeterminate\":\"\"}})],1):(_vm.flyoutHasError)?_c('EmptyStateBlock',{attrs:{\"title\":_vm.$t('booking.details.loading.failure.title'),\"description\":_vm.$t('booking.details.loading.failure.description'),\"border\":\"\"},scopedSlots:_vm._u([{key:\"button\",fn:function(){return [_c('div',{staticClass:\"mt-4\"},[_c('v-btn',{attrs:{\"color\":\"primary\",\"depressed\":\"\",\"large\":\"\"},on:{\"click\":_vm.loadBookingDetails}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\" mdi-refresh \")]),_vm._v(\" \"+_vm._s(_vm.$t('general.retry'))+\" \")],1)],1)]},proxy:true}])}):(_vm.showDetailsContent)?_c('BookingDetailsContent',{attrs:{\"booking\":_vm.activeBooking},on:{\"actionEvent\":_vm.handleEvent}}):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.failedToLoad)?_c('div',[_c('BookingPendingApprovalsListErrorBlock',{on:{\"retry\":_vm.loadApprovals}})],1):_c('v-data-table',{class:['rounded-xl custom-elevation pt-2'],attrs:{\"headers\":_vm.tableHeaders,\"items\":_vm.pendingApprovals,\"loading\":_vm.isLoadingApprovalsList,\"item-class\":_vm.getTableItemClass,\"footer-props\":{\n      itemsPerPageOptions: [5, 10, 15, 20],\n    },\"item-key\":\"bookingId\",\"data-testid\":\"booking-pending-approvals-table\"},on:{\"click:row\":_vm.loadBookingDetails},scopedSlots:_vm._u([{key:\"item.details.earliestDate\",fn:function(ref){\n    var item = ref.item;\nreturn [_c('div',{staticClass:\"d-flex\"},[_c('div',[_c('div',{staticClass:\"d-flex\"},[_c('p',{staticClass:\"mb-0 font-weight-medium\"},[_vm._v(\" \"+_vm._s(_vm.bookingDatesString( item.details.earliestDate, item.details.latestDate ))+\" \")]),_c('div',{staticClass:\"ml-2\",staticStyle:{\"position\":\"relative\",\"top\":\"3px\"}},[(!item.details.areDatesConsecutive)?_c('BookingPendingApprovalsListNonConsecutiveDatesShape'):_vm._e()],1)]),_c('p',{staticClass:\"mb-0 text-caption\"},[_vm._v(_vm._s(_vm.bookingTimeString(item.details.startTime, item.details.endTime)))])])])]}},{key:\"item.days\",fn:function(ref){\n    var item = ref.item;\nreturn [_c('div',{staticClass:\"text-center\"},[_vm._v(\" \"+_vm._s(item.days)+\" \")])]}},{key:\"item.location.name\",fn:function(ref){\n    var item = ref.item;\nreturn [_c('p',{staticClass:\"mb-0 font-weight-medium\"},[_vm._v(_vm._s(item.location.name))]),_c('p',{staticClass:\"mb-0 text-caption\"},[_vm._v(_vm._s(_vm.clientAndGroupString(item.client.name, _vm.getClientGroupName(item))))])]}},{key:\"item.details.covering.name\",fn:function(ref){\n    var item = ref.item;\nreturn [_c('div',{staticClass:\"d-flex align-center\"},[_c('UserAvatar',{attrs:{\"size\":\"sm\",\"name\":item.details.covering.name}}),_c('div',{staticClass:\"ml-2\"},[_c('p',{staticClass:\"mb-0 font-weight-medium\"},[_vm._v(_vm._s(item.details.covering.name))]),_c('p',{staticClass:\"mb-0 caption\"},[_vm._v(_vm._s(item.details.covering.reason))])])],1)]}},{key:\"item.createdOnUtc\",fn:function(ref){\n    var item = ref.item;\nreturn [_c('p',{staticClass:\"mb-0 font-weight-medium\"},[_vm._v(_vm._s(item.createdBy.name))]),_c('p',{staticClass:\"mb-0 text-caption\"},[_vm._v(_vm._s(_vm.createdDate(item.createdOnUtc)))])]}},{key:\"item.status\",fn:function(){return [_c('v-badge',{attrs:{\"color\":\"warning\",\"dot\":\"\",\"inline\":\"\",\"left\":\"\",\"offset-x\":20}},[_c('p',{staticClass:\"mb-0 ml-2\"},[_vm._v(_vm._s('Pending'))])])]},proxy:true},{key:\"item.actions\",fn:function(){return [_c('v-icon',{staticClass:\"opacity-7\",attrs:{\"size\":\"20\"}},[_vm._v(\"mdi-chevron-right\")])]},proxy:true}],null,true)})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('EmptyStateBlock',{attrs:{\"title\":_vm.$t('booking.details.loading.failure.title'),\"description\":_vm.$t('booking.details.loading.failure.description'),\"border\":\"\"},scopedSlots:_vm._u([{key:\"button\",fn:function(){return [_c('div',{staticClass:\"mt-4\"},[_c('v-btn',{staticClass:\"white--text\",attrs:{\"data-testid\":\"file-not-found-block-retry-btn\",\"color\":\"primary\",\"depressed\":\"\",\"large\":\"\"},on:{\"click\":function($event){return _vm.$emit('retry')}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\" mdi-refresh \")]),_vm._v(\" \"+_vm._s(_vm.$t('general.retry'))+\" \")],1)],1)]},proxy:true}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport baseMixin from '@/mixins/baseMixin'\nimport EmptyStateBlock from '@components/general/empty-state-block.vue'\n\nexport default {\n  name: 'BookingPendingApprovalsListErrorBlock',\n  components: { EmptyStateBlock },\n  mixins: [baseMixin],\n}\n</script>\n\n<template>\n  <div>\n    <EmptyStateBlock\n      :title=\"$t('booking.details.loading.failure.title')\"\n      :description=\"$t('booking.details.loading.failure.description')\"\n      border\n    >\n      <template v-slot:button>\n        <div class=\"mt-4\">\n          <v-btn\n            data-testid=\"file-not-found-block-retry-btn\"\n            color=\"primary\"\n            class=\"white--text\"\n            depressed\n            large\n            @click=\"$emit('retry')\"\n          >\n            <v-icon left> mdi-refresh </v-icon>\n            {{ $t('general.retry') }}\n          </v-btn>\n        </div>\n      </template>\n    </EmptyStateBlock>\n  </div>\n</template>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-pending-approvals-list-error-block.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-pending-approvals-list-error-block.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-pending-approvals-list-error-block.vue?vue&type=template&id=15284750&\"\nimport script from \"./booking-pending-approvals-list-error-block.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-pending-approvals-list-error-block.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\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VBtn,VIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":\"32\",\"height\":\"15\",\"viewBox\":\"0 0 32 18\",\"fill\":\"none\"}},[_c('path',{attrs:{\"fill-rule\":\"evenodd\",\"clip-rule\":\"evenodd\",\"d\":\"M9.58744 0.5H8.5C3.80558 0.5 0 4.30558 0 9C0 12.1419 1.70465 14.8856 4.23952 16.3568L9.58744 0.5ZM6.08227 17.1512C6.84859 17.3782 7.66007 17.5 8.5 17.5H23.5C28.1944 17.5 32 13.6944 32 9C32 4.30558 28.1944 0.5 23.5 0.5H11.6981L6.08227 17.1512Z\",\"fill\":\"#D9D9D9\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport baseMixin from '@/mixins/baseMixin'\n\nexport default {\n  name: 'BookingPendingApprovalsListNonConsecutiveDatesShape',\n  mixins: [baseMixin],\n}\n</script>\n\n<template>\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"32\"\n    height=\"15\"\n    viewBox=\"0 0 32 18\"\n    fill=\"none\"\n  >\n    <path\n      fill-rule=\"evenodd\"\n      clip-rule=\"evenodd\"\n      d=\"M9.58744 0.5H8.5C3.80558 0.5 0 4.30558 0 9C0 12.1419 1.70465 14.8856 4.23952 16.3568L9.58744 0.5ZM6.08227 17.1512C6.84859 17.3782 7.66007 17.5 8.5 17.5H23.5C28.1944 17.5 32 13.6944 32 9C32 4.30558 28.1944 0.5 23.5 0.5H11.6981L6.08227 17.1512Z\"\n      fill=\"#D9D9D9\"\n    />\n  </svg>\n</template>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-pending-approvals-list-non-consecutive-dates-shape.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-pending-approvals-list-non-consecutive-dates-shape.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-pending-approvals-list-non-consecutive-dates-shape.vue?vue&type=template&id=6c1005a2&\"\nimport script from \"./booking-pending-approvals-list-non-consecutive-dates-shape.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-pending-approvals-list-non-consecutive-dates-shape.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\nexport default component.exports","<script>\nimport baseMixin from '@/mixins/baseMixin'\nimport { mapActions, mapGetters } from 'vuex'\nimport dayjs from '@/services/date'\nimport DateFormatToken from '@/shared/constants/date/DateFormatToken'\nimport { camelCase, flow, upperFirst } from 'lodash'\nimport UserAvatar from '@/components/user/user-avatar.vue'\nimport { sortDate } from '@/helpers/date-helpers'\nimport BookingPendingApprovalsListErrorBlock from './booking-pending-approvals-list-error-block.vue'\nimport BookingPendingApprovalsListNonConsecutiveDatesShape from './booking-pending-approvals-list-non-consecutive-dates-shape.vue'\n\nexport default {\n  name: 'BookingPendingApprovalsList',\n  components: {\n    UserAvatar,\n    BookingPendingApprovalsListErrorBlock,\n    BookingPendingApprovalsListNonConsecutiveDatesShape,\n  },\n  mixins: [baseMixin],\n  data: () => {\n    return {\n      tableHeaders: [\n        {\n          text: 'Date',\n          align: 'start',\n          value: 'details.earliestDate',\n          width: '20%',\n        },\n        {\n          text: 'Days',\n          align: 'center',\n          value: 'days',\n          width: '8%',\n        },\n        { text: 'Location', value: 'location.name' },\n        { text: 'Covering', value: 'details.covering.name' },\n        { text: 'Created By', value: 'createdOnUtc', sort: sortDate },\n        { text: 'Status', value: 'status', align: 'end' },\n        { text: '', value: 'actions', align: 'end', sortable: false },\n      ],\n      failedToLoad: false,\n      pendingApprovals: [],\n    }\n  },\n  computed: {\n    ...mapGetters({\n      isLoadingApprovalsList: 'bookingApprovals/isLoadingApprovalsList',\n    }),\n  },\n  async created() {\n    await this.loadApprovals()\n  },\n  methods: {\n    ...mapActions({\n      loadPendingApprovals: 'bookingApprovals/loadPendingApprovals',\n    }),\n    loadBookingDetails(item) {\n      this.$emit('loadBookingDetails', item)\n    },\n    resetLoadFailureState() {\n      this.failedToLoad = false\n    },\n    async loadApprovals() {\n      this.resetLoadFailureState()\n      const result = await this.loadPendingApprovals()\n\n      if (!result.isSuccess) {\n        this.failedToLoad = true\n      }\n\n      this.pendingApprovals = result.data\n    },\n    bookingDatesString(earliest, latest) {\n      const earliestDate = dayjs(earliest).format(DateFormatToken.LL)\n\n      // Check if request only contains a single date\n      if (earliest === latest) {\n        return earliestDate\n      }\n\n      const latestDate = dayjs(latest).format(DateFormatToken.LL)\n\n      return `${earliestDate} - ${latestDate}`\n    },\n    bookingTimeString(start, end) {\n      return `${dayjs(start, DateFormatToken.HHmm).format(\n        DateFormatToken.LT\n      )} - ${dayjs(end, DateFormatToken.HHmm).format(DateFormatToken.LT)}`\n    },\n    clientAndGroupString(clientName, groupName) {\n      return `${clientName}${groupName ? ` - ${groupName}` : groupName}`\n    },\n    createdDate(date) {\n      return dayjs().to(date)\n    },\n    pascal: flow(camelCase, upperFirst),\n    /**\n     * The table expects a function to return the item class.\n     */\n    getTableItemClass() {\n      return 'cursor-pointer'\n    },\n    getClientGroupName(item) {\n      return item.clientGroup?.name ?? ''\n    },\n  },\n}\n</script>\n\n<template>\n  <div>\n    <div v-if=\"failedToLoad\">\n      <BookingPendingApprovalsListErrorBlock @retry=\"loadApprovals\" />\n    </div>\n    <v-data-table\n      v-else\n      :headers=\"tableHeaders\"\n      :items=\"pendingApprovals\"\n      :loading=\"isLoadingApprovalsList\"\n      :class=\"['rounded-xl custom-elevation pt-2']\"\n      :item-class=\"getTableItemClass\"\n      :footer-props=\"{\n        itemsPerPageOptions: [5, 10, 15, 20],\n      }\"\n      item-key=\"bookingId\"\n      data-testid=\"booking-pending-approvals-table\"\n      @click:row=\"loadBookingDetails\"\n    >\n      <template v-slot:[`item.details.earliestDate`]=\"{ item }\">\n        <div class=\"d-flex\">\n          <div>\n            <div class=\"d-flex\">\n              <p class=\"mb-0 font-weight-medium\">\n                {{\n                  bookingDatesString(\n                    item.details.earliestDate,\n                    item.details.latestDate\n                  )\n                }}\n              </p>\n              <div style=\"position:relative; top:3px;\" class=\"ml-2\">\n                <BookingPendingApprovalsListNonConsecutiveDatesShape\n                  v-if=\"!item.details.areDatesConsecutive\"\n                />\n              </div>\n            </div>\n            <p class=\"mb-0 text-caption\">{{\n              bookingTimeString(item.details.startTime, item.details.endTime)\n            }}</p>\n          </div>\n        </div>\n      </template>\n\n      <template v-slot:[`item.days`]=\"{ item }\">\n        <div class=\"text-center\"> {{ item.days }} </div>\n      </template>\n\n      <template v-slot:[`item.location.name`]=\"{ item }\">\n        <p class=\"mb-0 font-weight-medium\">{{ item.location.name }}</p>\n        <p class=\"mb-0 text-caption\">{{\n          clientAndGroupString(item.client.name, getClientGroupName(item))\n        }}</p>\n      </template>\n\n      <template v-slot:[`item.details.covering.name`]=\"{ item }\">\n        <div class=\"d-flex align-center\">\n          <UserAvatar size=\"sm\" :name=\"item.details.covering.name\" />\n          <div class=\"ml-2\">\n            <p class=\"mb-0 font-weight-medium\">{{\n              item.details.covering.name\n            }}</p>\n            <p class=\"mb-0 caption\">{{ item.details.covering.reason }}</p>\n          </div>\n        </div>\n      </template>\n\n      <template v-slot:[`item.createdOnUtc`]=\"{ item }\">\n        <p class=\"mb-0 font-weight-medium\">{{ item.createdBy.name }}</p>\n        <p class=\"mb-0 text-caption\">{{ createdDate(item.createdOnUtc) }}</p>\n      </template>\n\n      <template v-slot:[`item.status`]>\n        <v-badge color=\"warning\" dot inline left :offset-x=\"20\">\n          <p class=\"mb-0 ml-2\">{{ 'Pending' }}</p>\n        </v-badge>\n      </template>\n\n      <template v-slot:[`item.actions`] class=\"text-align-right\">\n        <v-icon size=\"20\" class=\"opacity-7\">mdi-chevron-right</v-icon>\n      </template>\n    </v-data-table>\n  </div>\n</template>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-pending-approvals-list.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-pending-approvals-list.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-pending-approvals-list.vue?vue&type=template&id=37bfdbd8&\"\nimport script from \"./booking-pending-approvals-list.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-pending-approvals-list.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\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBadge } from 'vuetify/lib/components/VBadge';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VBadge,VDataTable,VIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.showRequestActionAlert)?_c('BookingDetailsRequestAlert',{attrs:{\"booking\":_vm.booking}}):_vm._e(),_c('BookingDetailsHeaderCard',{attrs:{\"booking\":_vm.booking},on:{\"actionEvent\":_vm.handleEvent}}),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('BookingDetailsClientInfoCard',{attrs:{\"booking\":_vm.booking}})],1)],1),_c('BookingDetailsTabGroup',{attrs:{\"booking\":_vm.booking}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// TODO: Align statuses with backend when endpoints are integrated\nexport const BookingApprovalStatus = Object.freeze({\n  PendingApproval: 'pendingApproval',\n})\n","import { BookingApprovalStatus } from '@/shared/constants/booking/BookingApprovalStatus'\nimport { mapGetters } from 'vuex'\n\nexport default {\n  computed: {\n    ...mapGetters({\n      hasLocationBookingCreatePermission:\n        'auth/hasLocationBookingCreatePermission',\n    }),\n  },\n  methods: {\n    isBookingRequest(status) {\n      const bookingRequestStatuses = [BookingApprovalStatus.PendingApproval]\n      return bookingRequestStatuses.includes(status)\n    },\n    canActionBookingRequest(status, locationId) {\n      return (\n        this.isBookingRequest(status) &&\n        this.hasLocationBookingCreatePermission(locationId)\n      )\n    },\n  },\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-alert',{attrs:{\"color\":\"primary\",\"text\":\"\"}},[_c('div',{staticClass:\"d-flex align-center\"},[_c('v-icon',{staticClass:\"mr-4\",attrs:{\"left\":\"\",\"color\":\"primary\"}},[_vm._v(\"mdi-information\")]),_vm._v(_vm._s(_vm.$t('booking.details.pendingApprovalAlertText'))+\" \")],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport baseMixin from '@/mixins/baseMixin'\n\nexport default {\n  name: 'BookingDetailsRequestAlert',\n  mixins: [baseMixin],\n  props: {\n    booking: {\n      type: Object,\n      required: true,\n    },\n  },\n}\n</script>\n\n<template>\n  <v-alert color=\"primary\" text>\n    <div class=\"d-flex align-center\">\n      <v-icon left class=\"mr-4\" color=\"primary\">mdi-information</v-icon\n      >{{ $t('booking.details.pendingApprovalAlertText') }}\n    </div>\n  </v-alert>\n</template>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-details-request-alert.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-details-request-alert.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-details-request-alert.vue?vue&type=template&id=a8550cf4&\"\nimport script from \"./booking-details-request-alert.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-details-request-alert.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\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VAlert,VIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-alert',{staticClass:\"rounded-lg mt-2 grey lighten-4\"},[_c('v-row',{class:['align-center py-2', _vm.isDarkMode ? '' : 'black--text']},[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"8\",\"sm\":\"12\"}},[_c('div',{staticClass:\"d-flex\"},[_c('h3',{staticClass:\"font-weight-medium\",attrs:{\"data-testid\":\"booking-date-text\"}},[_vm._v(_vm._s(_vm.bookingDate))]),(!_vm.booking.details.areDatesConsecutive)?_c('BookingPendingApprovalsListNonConsecutiveDatesShape',{staticClass:\"ml-2\",staticStyle:{\"margin-top\":\"2px\"}}):_vm._e()],1),_c('p',{staticClass:\"mt-2 mb-0\"},[_vm._v(_vm._s(_vm.bookingTimeString))]),_c('p',{staticClass:\"mb-0 mt-2 opacity-8\"},[_vm._v(_vm._s(_vm.booking.details.classification.onlineTitle))]),_c('p',{staticClass:\"mb-0 mt-2 opacity-8\"},[_vm._v(_vm._s(_vm.compIdText))])]),_c('v-col',{class:[_vm.isLargeOrHigher ? 'text-right' : ''],attrs:{\"cols\":\"12\",\"md\":\"4\",\"sm\":\"12\"}},[_c('BookingDetailsActionBtn',{attrs:{\"booking\":_vm.booking},on:{\"actionEvent\":_vm.handleEvent}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.showSubmitPendingApprovalButton)?_c('BaseSplitBtn',{attrs:{\"data-testid\":\"booking-action-btn\",\"color\":\"primary\",\"dense\":_vm.dense,\"depressed\":\"\",\"loading\":_vm.isLoadingSubmitPendingApproval},on:{\"click\":_vm.acceptBookingRequest},scopedSlots:_vm._u([{key:\"menu\",fn:function(){return [_c('v-list',[_c('v-list-item',{on:{\"click\":_vm.promptForReasonOnRejection}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"mdi-close\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('booking.details.actions.rejectBookingBtn')))])],1)],1)],1)]},proxy:true}],null,false,4030306819)},[_c('p',{staticClass:\"mb-0 px-4\"},[_vm._v(_vm._s(_vm.$t('booking.details.actions.sendToAnzukBtn', { companyNameShort: _vm.$t('app.companyNameShort'), })))])]):_vm._e(),(_vm.showRejectBookingDialog)?_c('BookingPendingApprovalsRejectBookingDialog',{on:{\"rejectRequest\":_vm.rejectBookingRequest},model:{value:(_vm.showRejectBookingDialog),callback:function ($$v) {_vm.showRejectBookingDialog=$$v},expression:\"showRejectBookingDialog\"}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"value\":_vm.show,\"max-width\":\"600\",\"persistent\":_vm.isLoadingSubmitPendingApproval},on:{\"input\":_vm.closeDialog}},[_c('v-card',{attrs:{\"id\":\"reject-booking-dialog\"}},[_c('v-card-title',[_vm._v(\" \"+_vm._s(_vm.$t('booking.details.approvals.submit.rejectReasonDialogTitle'))+\" \")]),_c('v-card-text',[_c('v-textarea',{attrs:{\"data-testid\":\"reject-booking-dialog__reason-textarea\",\"label\":_vm.compInputLabel,\"required\":\"\",\"auto-grow\":\"\",\"autofocus\":\"\",\"rules\":[_vm.rules.required]},model:{value:(_vm.reasonForRejection),callback:function ($$v) {_vm.reasonForRejection=$$v},expression:\"reasonForRejection\"}})],1),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\",\"disabled\":_vm.isLoadingSubmitPendingApproval},on:{\"click\":_vm.closeDialog}},[_vm._v(\" \"+_vm._s(_vm.$t('general.close'))+\" \")]),_c('v-btn',{attrs:{\"data-testid\":\"reject-booking-dialog__submit-btn\",\"disabled\":_vm.isSubmitButtonDisabled,\"color\":\"red\",\"text\":\"\",\"loading\":_vm.isLoadingSubmitPendingApproval},on:{\"click\":_vm.rejectBookingAndClose}},[_vm._v(\" \"+_vm._s(_vm.$t('booking.details.actions.rejectBookingBtn'))+\" \")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport baseMixin from '@/mixins/baseMixin'\nimport formMixin from '@/mixins/formMixin'\nimport { mapGetters } from 'vuex'\n\nexport default {\n  name: 'BookingPendingApprovalsRejectBookingDialog',\n  mixins: [baseMixin, formMixin],\n  model: {\n    prop: 'show',\n    event: 'showUpdated',\n  },\n  props: {\n    show: {\n      type: Boolean,\n      required: true,\n    },\n  },\n  data: () => {\n    return {\n      reasonForRejection: '',\n    }\n  },\n  computed: {\n    ...mapGetters({\n      isLoadingSubmitPendingApproval:\n        'bookingApprovals/isLoadingSubmitPendingApproval',\n    }),\n    compInputLabel() {\n      return this.isMobileViewPort\n        ? this.$t('booking.details.approvals.submit.rejectReasonMobileLabel')\n        : this.$t('booking.details.approvals.submit.rejectReasonLabel')\n    },\n    isSubmitButtonDisabled() {\n      return this.reasonForRejection.trim() === ''\n    },\n  },\n  methods: {\n    closeDialog() {\n      this.$emit('showUpdated', false)\n    },\n    rejectBookingAndClose() {\n      this.$emit('rejectRequest', this.reasonForRejection)\n      this.$emit('showUpdated', false)\n    },\n  },\n}\n</script>\n\n<template>\n  <v-dialog\n    :value=\"show\"\n    max-width=\"600\"\n    :persistent=\"isLoadingSubmitPendingApproval\"\n    @input=\"closeDialog\"\n  >\n    <v-card id=\"reject-booking-dialog\">\n      <v-card-title>\n        {{ $t('booking.details.approvals.submit.rejectReasonDialogTitle') }}\n      </v-card-title>\n      <v-card-text>\n        <v-textarea\n          v-model=\"reasonForRejection\"\n          data-testid=\"reject-booking-dialog__reason-textarea\"\n          :label=\"compInputLabel\"\n          required\n          auto-grow\n          autofocus\n          :rules=\"[rules.required]\"\n        ></v-textarea>\n      </v-card-text>\n      <v-card-actions>\n        <v-spacer />\n        <v-btn\n          text\n          :disabled=\"isLoadingSubmitPendingApproval\"\n          @click=\"closeDialog\"\n        >\n          {{ $t('general.close') }}\n        </v-btn>\n        <v-btn\n          data-testid=\"reject-booking-dialog__submit-btn\"\n          :disabled=\"isSubmitButtonDisabled\"\n          color=\"red\"\n          text\n          :loading=\"isLoadingSubmitPendingApproval\"\n          @click=\"rejectBookingAndClose\"\n        >\n          {{ $t('booking.details.actions.rejectBookingBtn') }}\n        </v-btn>\n      </v-card-actions>\n    </v-card>\n  </v-dialog>\n</template>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-pending-approvals-reject-booking-dialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-pending-approvals-reject-booking-dialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-pending-approvals-reject-booking-dialog.vue?vue&type=template&id=35ed7435&\"\nimport script from \"./booking-pending-approvals-reject-booking-dialog.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-pending-approvals-reject-booking-dialog.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\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VDialog,VSpacer,VTextarea})\n","<script>\nimport baseMixin from '@/mixins/baseMixin'\nimport bookingDetailsMixin from '@/mixins/bookingDetailsMixin'\nimport { mapGetters } from 'vuex'\nimport BookingPendingApprovalsRejectBookingDialog from '../pendingApprovals/booking-pending-approvals-reject-booking-dialog.vue'\n\nexport default {\n  name: 'BookingDetailsActionBtn',\n  components: {\n    BookingPendingApprovalsRejectBookingDialog,\n  },\n  mixins: [baseMixin, bookingDetailsMixin],\n  props: {\n    booking: {\n      type: Object,\n      required: true,\n    },\n    dense: {\n      type: Boolean,\n    },\n  },\n  data() {\n    return {\n      showRejectBookingDialog: false,\n    }\n  },\n  computed: {\n    ...mapGetters({\n      isLoadingSubmitPendingApproval:\n        'bookingApprovals/isLoadingSubmitPendingApproval',\n    }),\n    showSubmitPendingApprovalButton() {\n      return this.canActionBookingRequest(\n        this.booking.status,\n        this.booking.location.id\n      )\n    },\n  },\n  methods: {\n    async respondToBookingRequest(action, reason = '') {\n      this.$emit('actionEvent', {\n        event: 'submitPendingApproval',\n        value: {\n          action,\n          reason,\n          bookingId: this.booking.id,\n        },\n      })\n    },\n    acceptBookingRequest() {\n      return this.respondToBookingRequest('accept')\n    },\n    promptForReasonOnRejection() {\n      this.reasonForRejection = ''\n      this.showRejectBookingDialog = true\n    },\n    rejectBookingRequest(reason) {\n      return this.respondToBookingRequest('reject', reason)\n    },\n  },\n}\n</script>\n\n<template>\n  <div>\n    <BaseSplitBtn\n      v-if=\"showSubmitPendingApprovalButton\"\n      data-testid=\"booking-action-btn\"\n      color=\"primary\"\n      :dense=\"dense\"\n      depressed\n      :loading=\"isLoadingSubmitPendingApproval\"\n      @click=\"acceptBookingRequest\"\n    >\n      <p class=\"mb-0 px-4\">{{\n        $t('booking.details.actions.sendToAnzukBtn', {\n          companyNameShort: $t('app.companyNameShort'),\n        })\n      }}</p>\n      <template v-slot:menu>\n        <v-list>\n          <v-list-item @click=\"promptForReasonOnRejection\">\n            <v-list-item-icon>\n              <v-icon>mdi-close</v-icon>\n            </v-list-item-icon>\n            <v-list-item-content>\n              <v-list-item-title>{{\n                $t('booking.details.actions.rejectBookingBtn')\n              }}</v-list-item-title>\n            </v-list-item-content>\n          </v-list-item>\n        </v-list>\n      </template>\n    </BaseSplitBtn>\n    <BookingPendingApprovalsRejectBookingDialog\n      v-if=\"showRejectBookingDialog\"\n      v-model=\"showRejectBookingDialog\"\n      @rejectRequest=\"rejectBookingRequest\"\n    />\n  </div>\n</template>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-details-action-btn.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-details-action-btn.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-details-action-btn.vue?vue&type=template&id=50ecc75a&\"\nimport script from \"./booking-details-action-btn.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-details-action-btn.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\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\ninstallComponents(component, {VIcon,VList,VListItem,VListItemContent,VListItemIcon,VListItemTitle})\n","<script>\nimport baseMixin from '@/mixins/baseMixin'\nimport dayjs from '@/services/date/index'\nimport DateFormatToken from '@/shared/constants/date/DateFormatToken'\nimport bookingDetailsMixin from '@/mixins/bookingDetailsMixin'\nimport BookingPendingApprovalsListNonConsecutiveDatesShape from '../pendingApprovals/booking-pending-approvals-list-non-consecutive-dates-shape.vue'\nimport BookingDetailsActionBtn from './booking-details-action-btn.vue'\n\nexport default {\n  name: 'BookingDetailsHeaderCard',\n  components: {\n    BookingPendingApprovalsListNonConsecutiveDatesShape,\n    BookingDetailsActionBtn,\n  },\n  mixins: [baseMixin, bookingDetailsMixin],\n  props: {\n    booking: {\n      type: Object,\n      required: true,\n    },\n  },\n  computed: {\n    isABookingRequest() {\n      return this.isBookingRequest(this.booking.status)\n    },\n    bookingDate() {\n      const earliestDate = dayjs(this.booking.details.earliestDate).format(\n        DateFormatToken.LL\n      )\n\n      // Check if request only contains a single date\n      if (\n        this.booking.details.earliestDate === this.booking.details.latestDate\n      ) {\n        return earliestDate\n      }\n\n      const latestDate = dayjs(this.booking.details.latestDate).format(\n        DateFormatToken.LL\n      )\n\n      return `${earliestDate} - ${latestDate}`\n    },\n    bookingTimeString() {\n      return `${dayjs(\n        this.booking.details.startTime,\n        DateFormatToken.HHmm\n      ).format(DateFormatToken.LT)} - ${dayjs(\n        this.booking.details.endTime,\n        DateFormatToken.HHmm\n      ).format(DateFormatToken.LT)}`\n    },\n    compButtonText() {\n      return ''\n    },\n    compIdText() {\n      return this.isBookingRequest\n        ? `REF#${this.booking.id}`\n        : `#${this.booking.id}`\n    },\n  },\n  methods: {\n    handleEvent(payload) {\n      this.$emit('actionEvent', payload)\n    },\n  },\n}\n</script>\n\n<template>\n  <v-alert class=\"rounded-lg mt-2 grey lighten-4\">\n    <v-row :class=\"['align-center py-2', isDarkMode ? '' : 'black--text']\">\n      <v-col cols=\"12\" md=\"8\" sm=\"12\">\n        <div class=\"d-flex\">\n          <h3 class=\"font-weight-medium\" data-testid=\"booking-date-text\">{{\n            bookingDate\n          }}</h3>\n          <BookingPendingApprovalsListNonConsecutiveDatesShape\n            v-if=\"!booking.details.areDatesConsecutive\"\n            class=\"ml-2\"\n            style=\"margin-top: 2px;\"\n          />\n        </div>\n\n        <p class=\"mt-2 mb-0\">{{ bookingTimeString }}</p>\n        <p class=\"mb-0 mt-2 opacity-8\">{{\n          booking.details.classification.onlineTitle\n        }}</p>\n        <p class=\"mb-0 mt-2 opacity-8\">{{ compIdText }}</p>\n      </v-col>\n      <v-col\n        cols=\"12\"\n        md=\"4\"\n        sm=\"12\"\n        :class=\"[isLargeOrHigher ? 'text-right' : '']\"\n      >\n        <BookingDetailsActionBtn\n          :booking=\"booking\"\n          @actionEvent=\"handleEvent\"\n        />\n      </v-col>\n    </v-row>\n  </v-alert>\n</template>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-details-header-card.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-details-header-card.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-details-header-card.vue?vue&type=template&id=f2200c76&\"\nimport script from \"./booking-details-header-card.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-details-header-card.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\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VAlert,VCol,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{staticClass:\"rounded-lg\",attrs:{\"elevation\":\"0\"}},[_c('v-card-text',[_c('InfoLabel',{staticClass:\"info-label__client-name mb-4\",scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('p',{staticClass:\"mb-0 font-weight-medium\"},[_vm._v(_vm._s(_vm.booking.client.name))])]},proxy:true}])},[_c('p',{staticClass:\"mb-0 font-weight-medium opacity-5\"},[_vm._v(\" \"+_vm._s(_vm.groupAndLocationString( _vm.getClientGroupName(_vm.booking), _vm.booking.location.name )))])])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"d-flex flex-column\"},[_vm._t(\"label\",[_c('label',{class:[_vm.$style.infoLabelStyling, 'opacity-8 font-weight-medium']},[_vm._v(\" \"+_vm._s(_vm.label)+\" \")])],{\"label\":_vm.label}),_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport baseMixin from '@/mixins/baseMixin'\n\nexport default {\n  name: 'InfoLabel',\n  mixins: [baseMixin],\n  props: {\n    label: {\n      type: String,\n      default: '',\n    },\n  },\n}\n</script>\n\n<template>\n  <div class=\"d-flex flex-column\">\n    <slot name=\"label\" :label=\"label\">\n      <label :class=\"[$style.infoLabelStyling, 'opacity-8 font-weight-medium']\">\n        {{ label }}\n      </label>\n    </slot>\n\n    <slot></slot>\n  </div>\n</template>\n\n<style lang=\"scss\" module>\n@import '@styles';\n\n.infoLabelStyling {\n  display: block;\n  line-height: 25px;\n  transform-origin: top left;\n}\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./info-label.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./info-label.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./info-label.vue?vue&type=template&id=72a1910d&\"\nimport script from \"./info-label.vue?vue&type=script&lang=js&\"\nexport * from \"./info-label.vue?vue&type=script&lang=js&\"\nimport style0 from \"./info-label.vue?vue&type=style&index=0&lang=scss&module=true&\"\n\n\n\n\nfunction injectStyles (context) {\n  \n  this[\"$style\"] = (style0.locals || style0)\n\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  injectStyles,\n  null,\n  null\n  \n)\n\nexport default component.exports","<script>\nimport InfoLabel from '@/components/general/info-label.vue'\nimport baseMixin from '@/mixins/baseMixin'\n\nexport default {\n  name: 'BookingDetailsClientInfoCard',\n  components: {\n    InfoLabel,\n  },\n  mixins: [baseMixin],\n  props: {\n    booking: {\n      type: Object,\n      required: true,\n    },\n  },\n  methods: {\n    getClientGroupName(booking) {\n      return booking.clientGroup?.name ?? ''\n    },\n    groupAndLocationString(groupName, locationName) {\n      return `${groupName ? `${groupName} - ` : groupName}${locationName}`\n    },\n  },\n}\n</script>\n\n<template>\n  <v-card class=\"rounded-lg\" elevation=\"0\">\n    <v-card-text>\n      <InfoLabel class=\"info-label__client-name mb-4\">\n        <template v-slot:label>\n          <p class=\"mb-0 font-weight-medium\">{{ booking.client.name }}</p>\n        </template>\n        <p class=\"mb-0 font-weight-medium opacity-5\">\n          {{\n            groupAndLocationString(\n              getClientGroupName(booking),\n              booking.location.name\n            )\n          }}</p\n        >\n      </InfoLabel>\n    </v-card-text>\n  </v-card>\n</template>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-details-client-info-card.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-details-client-info-card.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-details-client-info-card.vue?vue&type=template&id=41eefa14&\"\nimport script from \"./booking-details-client-info-card.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-details-client-info-card.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\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\ninstallComponents(component, {VCard,VCardText})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-tabs',{staticClass:\"mx-n4-\",model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},_vm._l((_vm.compTabs),function(item){return _c('v-tab',{key:item.tab,staticClass:\"text-capitalize\",staticStyle:{\"letter-spacing\":\"normal\"}},[_vm._v(\" \"+_vm._s(item.title)+\" \")])}),1),_c('v-tabs-items',{model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tab-item',[_c('v-card',{attrs:{\"flat\":\"\"}},[_c('BookingDetailsTabDetails',{staticClass:\"mt-4\",attrs:{\"booking\":_vm.booking}})],1)],1),_c('v-tab-item',[_c('BookingDetailsTabDays',{staticClass:\"mt-4\",attrs:{\"booking\":_vm.booking}})],1),_c('v-tab-item',[_c('v-card',{attrs:{\"flat\":\"\"}},[_c('BookingDetailsTabHistory',{staticClass:\"mt-4\",attrs:{\"booking\":_vm.booking}})],1)],1),_c('v-tab-item',[_c('v-card',{attrs:{\"flat\":\"\"}},[_c('BookingDetailsTabConfirmations',{staticClass:\"mt-4\",attrs:{\"booking\":_vm.booking}})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"mt-4\"},[_c('div',{staticClass:\"d-flex justify-end\"},[_c('v-btn-toggle',{staticClass:\"mb-4\",attrs:{\"dense\":\"\",\"color\":\"primary\"},model:{value:(_vm.layout),callback:function ($$v) {_vm.layout=$$v},expression:\"layout\"}},[_c('v-btn',{attrs:{\"value\":\"calendar\"}},[_c('v-icon',[_vm._v(\"mdi-calendar\")])],1),_c('v-btn',{attrs:{\"value\":\"table\"}},[_c('v-icon',[_vm._v(\"mdi-view-list\")])],1)],1)],1),(_vm.showCalendar)?_c('v-date-picker',{attrs:{\"readonly\":\"\",\"color\":\"primary\",\"show-adjacent-months\":\"\",\"multiple\":\"\",\"no-title\":\"\",\"full-width\":\"\"},model:{value:(_vm.mapDatesForCalendar),callback:function ($$v) {_vm.mapDatesForCalendar=$$v},expression:\"mapDatesForCalendar\"}}):_c('v-simple-table',{attrs:{\"fixed-header\":\"\",\"height\":\"300px\"},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('thead',[_c('tr',[_c('th',{staticClass:\"text-left\"},[_vm._v(\" \"+_vm._s(_vm.$t('booking.details.days.table.idColumn'))+\" \")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\" \"+_vm._s(_vm.$t('booking.details.days.table.dateColumn'))+\" \")])])]),_c('tbody',_vm._l((_vm.booking.dates),function(item){return _c('tr',{key:item.id},[_c('td',[_vm._v(_vm._s((\"\" + (_vm.isABookingRequest ? 'REF#' : '')))+_vm._s(item.id))]),_c('td',[_vm._v(\" \"+_vm._s(_vm.formatDate(item.date))+\" \")])])}),0)]},proxy:true}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport baseMixin from '@/mixins/baseMixin'\nimport bookingDetailsMixin from '@/mixins/bookingDetailsMixin'\nimport dayjs from '@/services/date/index'\nimport DateFormatToken from '@/shared/constants/date/DateFormatToken'\n\nexport default {\n  name: 'BookingDetailsTabDays',\n  mixins: [baseMixin, bookingDetailsMixin],\n  props: {\n    booking: {\n      type: Object,\n      required: true,\n    },\n  },\n  data: () => {\n    return {\n      layout: 'calendar',\n    }\n  },\n  computed: {\n    mapDatesForCalendar() {\n      return this.booking.dates.map((bookingDate) => bookingDate.date)\n    },\n    isABookingRequest() {\n      return this.isBookingRequest(this.booking.status)\n    },\n    showCalendar() {\n      return this.layout === 'calendar'\n    },\n  },\n  methods: {\n    formatDate(date) {\n      return dayjs(date).format(DateFormatToken.ddddLL)\n    },\n  },\n}\n</script>\n\n<template>\n  <div class=\"mt-4\">\n    <div class=\"d-flex justify-end\">\n      <v-btn-toggle v-model=\"layout\" dense class=\"mb-4\" color=\"primary\">\n        <v-btn value=\"calendar\">\n          <v-icon>mdi-calendar</v-icon>\n        </v-btn>\n\n        <v-btn value=\"table\">\n          <v-icon>mdi-view-list</v-icon>\n        </v-btn>\n      </v-btn-toggle>\n    </div>\n\n    <v-date-picker\n      v-if=\"showCalendar\"\n      v-model=\"mapDatesForCalendar\"\n      readonly\n      color=\"primary\"\n      show-adjacent-months\n      multiple\n      no-title\n      full-width\n    ></v-date-picker>\n\n    <v-simple-table v-else fixed-header height=\"300px\">\n      <template v-slot>\n        <thead>\n          <tr>\n            <th class=\"text-left\">\n              {{ $t('booking.details.days.table.idColumn') }}\n            </th>\n            <th class=\"text-left\">\n              {{ $t('booking.details.days.table.dateColumn') }}\n            </th>\n          </tr>\n        </thead>\n        <tbody>\n          <tr v-for=\"item in booking.dates\" :key=\"item.id\">\n            <td>{{ `${isABookingRequest ? 'REF#' : ''}` }}{{ item.id }}</td\n            ><td>\n              {{ formatDate(item.date) }}\n            </td>\n          </tr>\n        </tbody>\n      </template>\n    </v-simple-table>\n  </div>\n</template>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-details-tab-days.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-details-tab-days.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-details-tab-days.vue?vue&type=template&id=7cc69fac&\"\nimport script from \"./booking-details-tab-days.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-details-tab-days.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\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VBtnToggle } from 'vuetify/lib/components/VBtnToggle';\nimport { VDatePicker } from 'vuetify/lib/components/VDatePicker';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSimpleTable } from 'vuetify/lib/components/VDataTable';\ninstallComponents(component, {VBtn,VBtnToggle,VDatePicker,VIcon,VSimpleTable})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('CommentList',{attrs:{\"comments\":_vm.compBookingHistoryComments}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @typedef {Object} CommentModelType\n * @property {number} id - Unique identifier\n * @property {string} commentText - Comment text or a JSON string\n * @property {string} addedBy - Name of the user who added the comment\n * @property {number} type - Comment type\n * @property {Date} dateCreated - Date comment was created\n */\n\nimport DateFormatToken from '@/shared/constants/date/DateFormatToken'\nimport dayjs from '@/services/date/index'\n\n/**\n * @class\n */\nexport default class CommentModel {\n  /**\n   * Create a new CommentModel.\n   * @param {CommentModelType} params\n   */\n  constructor(params) {\n    this.id = params.id\n    this.commentText = params.commentText\n    this.addedBy = params.addedBy\n    this.type = params.type\n    this.dateCreated = params.dateCreated ? dayjs(params.dateCreated) : null\n  }\n\n  /**\n   * Get the formatted date created timestamp\n   * @returns {string} - The timestamp text\n   */\n  getDateCreatedTimestamp() {\n    if (!this.dateCreated) return ''\n    return dayjs(this.dateCreated).format(DateFormatToken.ddddDoMMMMatLT)\n  }\n}\n","/**\n * Enum representing different comment types.\n * @enum {number}\n */\nconst CommentType = {\n  ClientCancelledBookingClientLogin: 305,\n  /**\n   * Contact used R2B to create a replace me booking.\n   * @type {number}\n   */\n  ReplaceMeBookingCreate: 11008,\n  /**\n   * A general comment placed on a booking.\n   * @type {number}\n   */\n  GeneralBookingComment: 200,\n  /**\n   * Stores information about a candidate running late for a booking.\n   * @type {number}\n   */\n  BookingRunningLate: 201,\n  /**\n   * Ready2Work - Permanent Availability - Unavailable from Monday to Friday.\n   * @type {number}\n   */\n  R2WUnavailableFromMondayToFriday: 102,\n  /**\n   * Denotes that a discount has been applied to a booking.\n   * @type {number}\n   */\n  BookingDiscountApplied: 362,\n  /**\n   * Denotes that an eligible discount has been ignored during the invoicing process.\n   * @type {number}\n   */\n  BookingDiscountIgnored: 363,\n  /**\n   * A candidate added a new shift record.\n   * @type {number}\n   */\n  BookingShiftRecordAdded: 353,\n  /**\n   * A client added a new timesheet.\n   * @type {number}\n   */\n  BookingTimesheetAdded: 354,\n  /**\n   * The booking has been approved by the candidate.\n   * @type {number}\n   */\n  BookingApprovedCandidate: 350,\n  /**\n   * The booking has been approved by the client.\n   * @type {number}\n   */\n  BookingApprovedClient: 351,\n  /**\n   * The booking has been disputed by the client.\n   * @type {number}\n   */\n  BookingDisputedClient: 361,\n  /**\n   * The booking has been disputed by the candidate.\n   * @type {number}\n   */\n  BookingDisputedCandidate: 360,\n  /**\n   * The booking dispute has been resolved.\n   * @type {number}\n   */\n  BookingDisputeResolved: 364,\n  /**\n   * The travel plan's status has been updated.\n   * @type {number}\n   */\n  TravelPlanStatusUpdated: 20007,\n  /**\n   * A phone call has been made from a consultant to the candidate.\n   * @type {number}\n   */\n  PhonecallOutboundCandidate: 112,\n  /**\n   * A phone call has been made by the candidate to ANZUK.\n   * @type {number}\n   */\n  PhonecallInboundCandidate: 113,\n  /**\n   * A phone call has been made from a consultant to the candidate.\n   * @type {number}\n   */\n  PhonecallOutboundContact: 114,\n  /**\n   * A phone call has been made by the candidate to ANZUK.\n   * @type {number}\n   */\n  PhonecallInboundContact: 115,\n  /**\n   * The booking has been updated.\n   * @type {number}\n   */\n  BookingUpdated: 301,\n  /**\n   * The booking's status has changed.\n   * @type {number}\n   */\n  BookingStatusChanged: 302,\n  /**\n   * General comment for invoice/payslip.\n   * @type {number}\n   */\n  InvoicePayslipGeneralComment: 500,\n\n  /**\n   * Custom Comment Types:\n   * These types are used locally and should not be referenced by the backend.\n   */\n\n  /**\n   * For use with the booking details flyout\n   */\n  BookingApprovalCreated: -99999901,\n}\n\nexport default CommentType\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._t(\"title\",[(_vm.title)?_c('h6',{staticClass:\"text-h6\"},[_vm._v(_vm._s(_vm.title))]):_vm._e()],{\"title\":_vm.title}),_c('div',{class:_vm.title ? 'mt-4' : ''},_vm._l((_vm.comments),function(comment){return _c('CommentControl',{key:comment.id,attrs:{\"comment\":comment}})}),1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.commentControlDefinition)?_c(_vm.commentControlDefinition.component,_vm._g(_vm._b({tag:\"component\",attrs:{\"data-testid\":\"comment-control-component\",\"data-type\":_vm.comment.type}},'component',_vm.commentControlDefinition.props,false),_vm.commentControlDefinition.events)):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('CommentBase',{attrs:{\"added-by\":_vm.comment.addedBy,\"text\":_vm.comment.commentText,\"subtitle\":_vm.comment.getDateCreatedTimestamp()}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-hover',{scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar hover = ref.hover;\nreturn [_c('v-sheet',{class:[\n      _vm.active ? _vm.compActiveClass : '',\n      hover ? _vm.compHoverClass : '',\n      _vm.isSmallOrLower ? '' : 'd-flex',\n      'rounded-lg px-4 py-3 align-center' ]},[_c('div',{staticClass:\"d-flex flex-grow-1 align-top\"},[(!_vm.hideAvatar)?_vm._t(\"avatar\",[_c('CommentBaseAvatar',{attrs:{\"name\":_vm.addedBy,\"icon\":_vm.avatarIcon,\"color\":_vm.avatarColor}})]):_vm._e(),_c('div',{staticClass:\"overflow-wrap-anywhere\"},[_vm._t(\"default\",[_c('CommentBaseText',[_vm._v(\" \"+_vm._s(_vm.text)+\" \")])]),_vm._t(\"subtitle\",[_c('CommentBaseSubtitle',[_vm._v(\" \"+_vm._s(_vm.subtitle)+\" \")])])],2)],2),_c('div',{staticClass:\"flex-shrink-1 text-right\"},[_vm._t(\"actions\")],2)])]}}],null,true)})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('UserAvatar',{staticClass:\"mr-4\",attrs:{\"name\":_vm.name,\"icon\":_vm.icon,\"color-set\":_vm.color,\"size\":\"40\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport baseMixin from '@/mixins/baseMixin'\nimport ColorSet from '@/models/general/colorSet'\nimport UserAvatar from '@/components/user/user-avatar.vue'\n\nexport default {\n  name: 'CommentBaseAvatar',\n  components: { UserAvatar },\n  mixins: [baseMixin],\n  props: {\n    name: {\n      type: String,\n      default: '',\n    },\n    icon: {\n      type: String,\n      default: '',\n    },\n    color: {\n      type: ColorSet,\n      default: () => null,\n    },\n  },\n}\n</script>\n\n<template>\n  <UserAvatar\n    :name=\"name\"\n    :icon=\"icon\"\n    :color-set=\"color\"\n    size=\"40\"\n    class=\"mr-4\"\n  />\n</template>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./comment-base-avatar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./comment-base-avatar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./comment-base-avatar.vue?vue&type=template&id=5ca34380&\"\nimport script from \"./comment-base-avatar.vue?vue&type=script&lang=js&\"\nexport * from \"./comment-base-avatar.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\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',{staticClass:\"text-subtitle-2 font-weight-medium mb-0\"},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport baseMixin from '@/mixins/baseMixin'\n\nexport default {\n  name: 'CommentBaseText',\n  mixins: [baseMixin],\n}\n</script>\n\n<template>\n  <p class=\"text-subtitle-2 font-weight-medium mb-0\">\n    <slot></slot>\n  </p>\n</template>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./comment-base-text.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./comment-base-text.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./comment-base-text.vue?vue&type=template&id=6274106a&\"\nimport script from \"./comment-base-text.vue?vue&type=script&lang=js&\"\nexport * from \"./comment-base-text.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\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',{staticClass:\"opacity-7 mb-0\"},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport baseMixin from '@/mixins/baseMixin'\n\nexport default {\n  name: 'CommentBaseSubtitle',\n  mixins: [baseMixin],\n}\n</script>\n\n<template>\n  <p class=\"opacity-7 mb-0\"> <slot></slot> </p>\n</template>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./comment-base-subtitle.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./comment-base-subtitle.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./comment-base-subtitle.vue?vue&type=template&id=6e29d3c8&\"\nimport script from \"./comment-base-subtitle.vue?vue&type=script&lang=js&\"\nexport * from \"./comment-base-subtitle.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\nexport default component.exports","<script>\nimport baseMixin from '@/mixins/baseMixin'\nimport ColorSet from '@/models/general/colorSet'\nimport VuetifyColourClass from '@/shared/constants/core/VuetifyColourClass'\nimport CommentBaseAvatar from './comment-base-avatar.vue'\nimport CommentBaseText from './comment-base-text.vue'\nimport CommentBaseSubtitle from './comment-base-subtitle.vue'\n\nexport default {\n  name: 'CommentBase',\n  components: { CommentBaseAvatar, CommentBaseText, CommentBaseSubtitle },\n  mixins: [baseMixin],\n  props: {\n    hideAvatar: {\n      type: Boolean,\n    },\n    addedBy: {\n      type: String,\n      default: '',\n    },\n    avatarIcon: {\n      type: String,\n      default: '',\n    },\n    avatarColor: {\n      type: ColorSet,\n      default: () => null,\n    },\n    text: {\n      type: String,\n      default: '',\n    },\n    subtitle: {\n      type: String,\n      default: '',\n    },\n    disableHover: {\n      type: Boolean,\n    },\n    active: {\n      type: Boolean,\n    },\n    color: {\n      type: String,\n      default: VuetifyColourClass.grey,\n    },\n    activeClass: {\n      type: String,\n      default: '',\n    },\n    hoverClass: {\n      type: String,\n      default: '',\n    },\n  },\n  computed: {\n    defaultActiveClass() {\n      return `${this.color} lighten-4`\n    },\n    defaultHoverClass() {\n      return `${this.color} lighten-4`\n    },\n    hasCustomActiveClass() {\n      return !!this.activeClass\n    },\n    hasCustomHoverClass() {\n      return !!this.hoverClass\n    },\n    compHoverClass() {\n      if (this.disableHover) return ''\n\n      return this.hasCustomHoverClass ? this.hoverClass : this.defaultHoverClass\n    },\n    compActiveClass() {\n      return this.hasCustomActiveClass\n        ? this.activeClass\n        : this.defaultActiveClass\n    },\n  },\n}\n</script>\n\n<template>\n  <v-hover v-slot=\"{ hover }\">\n    <v-sheet\n      :class=\"[\n        active ? compActiveClass : '',\n        hover ? compHoverClass : '',\n        isSmallOrLower ? '' : 'd-flex',\n        'rounded-lg px-4 py-3 align-center',\n      ]\"\n    >\n      <div class=\"d-flex flex-grow-1 align-top\">\n        <slot v-if=\"!hideAvatar\" name=\"avatar\">\n          <CommentBaseAvatar\n            :name=\"addedBy\"\n            :icon=\"avatarIcon\"\n            :color=\"avatarColor\"\n          />\n        </slot>\n        <div class=\"overflow-wrap-anywhere\">\n          <slot>\n            <CommentBaseText>\n              {{ text }}\n            </CommentBaseText>\n          </slot>\n          <slot name=\"subtitle\">\n            <CommentBaseSubtitle>\n              {{ subtitle }}\n            </CommentBaseSubtitle>\n          </slot>\n        </div>\n      </div>\n      <div class=\"flex-shrink-1 text-right\">\n        <slot name=\"actions\"></slot>\n      </div>\n    </v-sheet>\n  </v-hover>\n</template>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./comment-base.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./comment-base.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./comment-base.vue?vue&type=template&id=50b9e5d0&\"\nimport script from \"./comment-base.vue?vue&type=script&lang=js&\"\nexport * from \"./comment-base.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\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VHover } from 'vuetify/lib/components/VHover';\nimport { VSheet } from 'vuetify/lib/components/VSheet';\ninstallComponents(component, {VHover,VSheet})\n","<script>\nimport baseMixin from '@/mixins/baseMixin'\nimport CommentModel from '@/models/comments/commentModel'\nimport CommentBase from './comment-base.vue'\n\nexport default {\n  name: 'CommentDefault',\n  components: { CommentBase },\n  mixins: [baseMixin],\n  props: {\n    comment: {\n      type: CommentModel,\n      required: true,\n    },\n  },\n}\n</script>\n\n<template>\n  <CommentBase\n    :added-by=\"comment.addedBy\"\n    :text=\"comment.commentText\"\n    :subtitle=\"comment.getDateCreatedTimestamp()\"\n  />\n</template>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./comment-default.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./comment-default.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./comment-default.vue?vue&type=template&id=752c6e3a&\"\nimport script from \"./comment-default.vue?vue&type=script&lang=js&\"\nexport * from \"./comment-default.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\nexport default component.exports","<script>\nimport baseMixin from '@/mixins/baseMixin'\nimport CommentModel from '@/models/comments/commentModel'\n// import CommentType from '@/constants/comments/CommentType'\nimport CommentDefault from './comment-default.vue'\n\nexport default {\n  name: 'CommentControl',\n  mixins: [baseMixin],\n  props: {\n    comment: {\n      type: CommentModel,\n      required: true,\n    },\n  },\n  data: () => {\n    return {}\n  },\n  computed: {\n    commentControlDefinition() {\n      switch (this.comment.type) {\n        // TODO: Add comment control types when required\n        // e.g.\n        // case CommentType.BookingUpdated:\n        //   return this.commentControlFactory(CommentBookingUpdated)\n        default:\n          return this.commentControlFactory(CommentDefault)\n      }\n    },\n  },\n  methods: {\n    commentControlFactory(component, extraProps = {}) {\n      return {\n        component,\n        props: {\n          ...extraProps,\n          comment: this.comment,\n        },\n        events: {},\n      }\n    },\n  },\n}\n</script>\n\n<template>\n  <component\n    :is=\"commentControlDefinition.component\"\n    v-if=\"commentControlDefinition\"\n    data-testid=\"comment-control-component\"\n    :data-type=\"comment.type\"\n    v-bind=\"commentControlDefinition.props\"\n    v-on=\"commentControlDefinition.events\"\n  />\n</template>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./comment-control.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./comment-control.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./comment-control.vue?vue&type=template&id=c9be281c&\"\nimport script from \"./comment-control.vue?vue&type=script&lang=js&\"\nexport * from \"./comment-control.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\nexport default component.exports","<script>\nimport baseMixin from '@/mixins/baseMixin'\nimport CommentModel from '@/models/comments/commentModel'\nimport CommentControl from './comment-control.vue'\n\nexport default {\n  name: 'CommentList',\n  components: { CommentControl },\n  mixins: [baseMixin],\n  props: {\n    title: {\n      type: String,\n      default: '',\n    },\n    comments: {\n      type: Array,\n      default: () => [],\n      validator: (list) => list.every((e) => e instanceof CommentModel),\n    },\n  },\n}\n</script>\n\n<template>\n  <div>\n    <slot name=\"title\" :title=\"title\">\n      <h6 v-if=\"title\" class=\"text-h6\">{{ title }}</h6>\n    </slot>\n\n    <div :class=\"title ? 'mt-4' : ''\">\n      <CommentControl\n        v-for=\"comment of comments\"\n        :key=\"comment.id\"\n        :comment=\"comment\"\n      />\n    </div>\n  </div>\n</template>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./comment-list.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./comment-list.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./comment-list.vue?vue&type=template&id=2dc2480a&\"\nimport script from \"./comment-list.vue?vue&type=script&lang=js&\"\nexport * from \"./comment-list.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\nexport default component.exports","<script>\nimport baseMixin from '@/mixins/baseMixin'\nimport CommentModel from '@/models/comments/commentModel'\nimport bookingDetailsMixin from '@/mixins/bookingDetailsMixin'\nimport CommentType from '@/shared/constants/comments/CommentType'\nimport CommentList from '../comments/comment-list.vue'\n\nexport default {\n  name: 'BookingDetailsTabHistory',\n  components: { CommentList },\n  mixins: [baseMixin, bookingDetailsMixin],\n  props: {\n    booking: {\n      type: Object,\n      required: true,\n    },\n  },\n  computed: {\n    isABookingRequest() {\n      return this.isBookingRequest(this.booking.status)\n    },\n    compRequestComments() {\n      // TODO: If we need to factor in comments left on the approval or different statuses\n      // this will need to be updated\n      switch (this.booking.status) {\n        case 'pendingApproval':\n          return [\n            new CommentModel({\n              id: 1,\n              commentText: this.$t(\n                'booking.details.comments.pendingApprovalText',\n                [this.booking.createdBy.name]\n              ),\n              addedBy: this.booking.createdBy.name,\n              type: CommentType.BookingApprovalCreated,\n              dateCreated: this.booking.createdOnUtc,\n            }),\n          ]\n        default:\n          return []\n      }\n    },\n    compBookingHistoryComments() {\n      return this.isABookingRequest\n        ? this.compRequestComments\n        : this.booking.comments.map((comment) => new CommentModel(comment))\n    },\n  },\n}\n</script>\n\n<template>\n  <CommentList :comments=\"compBookingHistoryComments\" />\n</template>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-details-tab-history.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-details-tab-history.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-details-tab-history.vue?vue&type=template&id=cebad97c&\"\nimport script from \"./booking-details-tab-history.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-details-tab-history.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\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(!_vm.hasConfirmations)?_c('EmptyStateBlock',{attrs:{\"border\":\"\",\"icon\":\"mdi-account-alert\",\"title\":'No confirmation contacts',\"description\":'No one will receive notifications with updates for this booking'}}):_c('v-simple-table',{attrs:{\"fixed-header\":\"\",\"height\":\"300px\"},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('thead',[_c('tr',[_c('th',{staticClass:\"text-left\"},[_vm._v(\" \"+_vm._s(_vm.$t('booking.details.confirmations.table.nameColumn'))+\" \")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\" \"+_vm._s(_vm.$t('booking.details.confirmations.table.emailColumn'))+\" \")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\" \"+_vm._s(_vm.$t('booking.details.confirmations.table.smsColumn'))+\" \")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\" \"+_vm._s(_vm.$t('booking.details.confirmations.table.voiceColumn'))+\" \")])])]),_c('tbody',_vm._l((_vm.confirmations),function(item){return _c('tr',{key:item.name},[_c('td',{staticClass:\"d-flex align-center\"},[_c('UserAvatar',{staticClass:\"mr-2\",attrs:{\"name\":item.name,\"size\":\"xs\"}}),_c('p',{staticClass:\"mb-0 font-weight-medium\"},[_vm._v(_vm._s(item.name))])],1),_c('td',[(item.email)?_c('BaseLink',{attrs:{\"title\":_vm.$t('booking.details.confirmations.table.emailLinkTooltip'),\"href\":(\"mailto:\" + (item.email)),\"target\":\"_self\"}},[_vm._v(_vm._s(item.email))]):_vm._e()],1),_c('td',[(_vm.getSMSNumber(item))?_c('BaseLink',{attrs:{\"title\":_vm.$t('booking.details.confirmations.table.smsLinkTooltip'),\"href\":(\"tel:\" + (_vm.getSMSNumber(item))),\"target\":\"_self\"}},[_vm._v(_vm._s(_vm.getSMSNumber(item)))]):_vm._e()],1),_c('td',[(_vm.getVoiceNumber(item))?_c('BaseLink',{attrs:{\"title\":_vm.$t('booking.details.confirmations.table.voiceLinkTooltip'),\"href\":(\"tel:\" + (_vm.getVoiceNumber(item))),\"target\":\"_self\"}},[_vm._v(_vm._s(_vm.getVoiceNumber(item)))]):_vm._e()],1)])}),0)]},proxy:true}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport EmptyStateBlock from '@/components/general/empty-state-block.vue'\nimport UserAvatar from '@/components/user/user-avatar.vue'\nimport baseMixin from '@/mixins/baseMixin'\n\nexport default {\n  name: 'BookingDetailsTabConfirmations',\n  components: {\n    EmptyStateBlock,\n    UserAvatar,\n  },\n  mixins: [baseMixin],\n  props: {\n    booking: {\n      type: Object,\n      required: true,\n    },\n  },\n  computed: {\n    confirmations() {\n      return this.booking.details.confirmations\n    },\n    hasConfirmations() {\n      return this.confirmations.length > 0\n    },\n  },\n  methods: {\n    getSMSNumber(item) {\n      return item.sms?.number || ''\n    },\n    getVoiceNumber(item) {\n      return item.voice?.number || ''\n    },\n  },\n}\n</script>\n\n<template>\n  <div>\n    <EmptyStateBlock\n      v-if=\"!hasConfirmations\"\n      border\n      icon=\"mdi-account-alert\"\n      :title=\"'No confirmation contacts'\"\n      :description=\"\n        'No one will receive notifications with updates for this booking'\n      \"\n    />\n    <v-simple-table v-else fixed-header height=\"300px\">\n      <template v-slot>\n        <thead>\n          <tr>\n            <th class=\"text-left\">\n              {{ $t('booking.details.confirmations.table.nameColumn') }}\n            </th>\n            <th class=\"text-left\">\n              {{ $t('booking.details.confirmations.table.emailColumn') }}\n            </th>\n            <th class=\"text-left\">\n              {{ $t('booking.details.confirmations.table.smsColumn') }}\n            </th>\n            <th class=\"text-left\">\n              {{ $t('booking.details.confirmations.table.voiceColumn') }}\n            </th>\n            <!-- <th class=\"text-left\">\n              {{\n                $t('booking.details.confirmations.table.pushNotificationColumn')\n              }}\n            </th> -->\n          </tr>\n        </thead>\n        <tbody>\n          <tr v-for=\"item in confirmations\" :key=\"item.name\">\n            <td class=\"d-flex align-center\"\n              ><UserAvatar :name=\"item.name\" size=\"xs\" class=\"mr-2\" />\n              <p class=\"mb-0 font-weight-medium\">{{ item.name }}</p></td\n            >\n            <td>\n              <BaseLink\n                v-if=\"item.email\"\n                :title=\"\n                  $t('booking.details.confirmations.table.emailLinkTooltip')\n                \"\n                :href=\"`mailto:${item.email}`\"\n                target=\"_self\"\n                >{{ item.email }}</BaseLink\n              >\n            </td>\n            <td>\n              <BaseLink\n                v-if=\"getSMSNumber(item)\"\n                :title=\"\n                  $t('booking.details.confirmations.table.smsLinkTooltip')\n                \"\n                :href=\"`tel:${getSMSNumber(item)}`\"\n                target=\"_self\"\n                >{{ getSMSNumber(item) }}</BaseLink\n              >\n            </td>\n            <td>\n              <BaseLink\n                v-if=\"getVoiceNumber(item)\"\n                :title=\"\n                  $t('booking.details.confirmations.table.voiceLinkTooltip')\n                \"\n                :href=\"`tel:${getVoiceNumber(item)}`\"\n                target=\"_self\"\n                >{{ getVoiceNumber(item) }}</BaseLink\n              ></td\n            >\n            <!-- <td>\n              <v-icon\n                v-if=\"item.pushNotifications\"\n                :title=\"\n                  $t(\n                    'booking.details.confirmations.table.pushNotificationLinkTooltip'\n                  )\n                \"\n                >mdi-check</v-icon\n              ></td\n            > -->\n          </tr>\n        </tbody>\n      </template>\n    </v-simple-table>\n  </div>\n</template>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-details-tab-confirmations.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-details-tab-confirmations.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-details-tab-confirmations.vue?vue&type=template&id=7a345108&\"\nimport script from \"./booking-details-tab-confirmations.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-details-tab-confirmations.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\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VSimpleTable } from 'vuetify/lib/components/VDataTable';\ninstallComponents(component, {VSimpleTable})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('InfoLabel',{attrs:{\"label\":_vm.$t('booking.details.info.coveringLabel')}},[_c('div',{staticClass:\"d-flex align-center mt-2\"},[_c('UserAvatar',{attrs:{\"size\":\"sm\",\"name\":_vm.booking.details.covering.name}}),_c('div',{staticClass:\"ml-2\"},[_c('p',{staticClass:\"mb-0 font-weight-medium\"},[_vm._v(_vm._s(_vm.booking.details.covering.name))]),_c('p',{staticClass:\"mb-0 caption\"},[_vm._v(_vm._s(_vm.booking.details.covering.reason))])])],1)]),_c('InfoLabel',{staticClass:\"mt-6\",attrs:{\"label\":_vm.$t('booking.details.info.gradesLabel')}},[_c('GradeList',{attrs:{\"small\":\"\",\"grades\":_vm.grades}})],1),_c('InfoLabel',{staticClass:\"mt-6\",attrs:{\"label\":_vm.$t('booking.details.info.notesLabel')}},[_c('p',{directives:[{name:\"sanitized-html\",rawName:\"v-sanitized-html\",value:(_vm.booking.details.notes),expression:\"booking.details.notes\"}],staticClass:\"mb-0 font-weight-medium\"})]),(_vm.booking.details.room)?_c('InfoLabel',{staticClass:\"mt-6\",attrs:{\"label\":_vm.$t('booking.details.info.roomLabel')}},[_c('p',{directives:[{name:\"sanitized-html\",rawName:\"v-sanitized-html\",value:(_vm.booking.details.room),expression:\"booking.details.room\"}],staticClass:\"mb-0 font-weight-medium\"})]):_vm._e(),(!_vm.hasCertifications)?_c('EmptyStateBlock',{staticClass:\"mt-6\",attrs:{\"border\":\"\",\"icon\":\"mdi-file-document-alert\",\"title\":_vm.$t('booking.details.info.certifications.emptyTitle'),\"description\":_vm.$t('booking.details.info.certifications.emptyDescription')}}):_c('InfoLabel',{staticClass:\"mt-6\",attrs:{\"label\":_vm.$t('booking.details.info.certifications.label')}},[_c('v-simple-table',{attrs:{\"fixed-header\":\"\",\"height\":\"300px\"},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('tbody',_vm._l((_vm.certifications),function(item){return _c('tr',{key:item.name},[_c('td',{staticClass:\"d-flex align-center\"},[_c('p',{staticClass:\"mb-0 font-weight-medium\"},[_vm._v(_vm._s(item.name))])])])}),0)]},proxy:true}])})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport EmptyStateBlock from '@/components/general/empty-state-block.vue'\nimport InfoLabel from '@/components/general/info-label.vue'\nimport UserAvatar from '@/components/user/user-avatar.vue'\nimport GradeList from '@/components/booking/grade-list.vue'\nimport baseMixin from '@/mixins/baseMixin'\n\nexport default {\n  name: 'BookingDetailsTabDetails',\n  components: {\n    UserAvatar,\n    InfoLabel,\n    EmptyStateBlock,\n    GradeList,\n  },\n  mixins: [baseMixin],\n  props: {\n    booking: {\n      type: Object,\n      required: true,\n    },\n  },\n  computed: {\n    certifications() {\n      return this.booking.details.certifications\n    },\n    hasCertifications() {\n      return this.certifications.length > 0\n    },\n    grades() {\n      return this.booking.details.grades\n    },\n  },\n}\n</script>\n\n<template>\n  <div>\n    <InfoLabel :label=\"$t('booking.details.info.coveringLabel')\">\n      <div class=\"d-flex align-center mt-2\">\n        <UserAvatar size=\"sm\" :name=\"booking.details.covering.name\" />\n        <div class=\"ml-2\">\n          <p class=\"mb-0 font-weight-medium\">{{\n            booking.details.covering.name\n          }}</p>\n          <p class=\"mb-0 caption\">{{ booking.details.covering.reason }}</p>\n        </div>\n      </div>\n    </InfoLabel>\n\n    <InfoLabel :label=\"$t('booking.details.info.gradesLabel')\" class=\"mt-6\">\n      <GradeList small :grades=\"grades\"></GradeList>\n    </InfoLabel>\n\n    <InfoLabel :label=\"$t('booking.details.info.notesLabel')\" class=\"mt-6\">\n      <p\n        v-sanitized-html=\"booking.details.notes\"\n        class=\"mb-0 font-weight-medium\"\n      ></p>\n    </InfoLabel>\n\n    <InfoLabel\n      v-if=\"booking.details.room\"\n      :label=\"$t('booking.details.info.roomLabel')\"\n      class=\"mt-6\"\n    >\n      <p\n        v-sanitized-html=\"booking.details.room\"\n        class=\"mb-0 font-weight-medium\"\n      ></p>\n    </InfoLabel>\n\n    <EmptyStateBlock\n      v-if=\"!hasCertifications\"\n      class=\"mt-6\"\n      border\n      icon=\"mdi-file-document-alert\"\n      :title=\"$t('booking.details.info.certifications.emptyTitle')\"\n      :description=\"$t('booking.details.info.certifications.emptyDescription')\"\n    />\n    <InfoLabel\n      v-else\n      class=\"mt-6\"\n      :label=\"$t('booking.details.info.certifications.label')\"\n    >\n      <v-simple-table fixed-header height=\"300px\">\n        <template v-slot>\n          <tbody>\n            <tr v-for=\"item in certifications\" :key=\"item.name\">\n              <td class=\"d-flex align-center\"\n                ><p class=\"mb-0 font-weight-medium\">{{ item.name }}</p></td\n              >\n            </tr>\n          </tbody>\n        </template>\n      </v-simple-table>\n    </InfoLabel>\n  </div>\n</template>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-details-tab-details.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-details-tab-details.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-details-tab-details.vue?vue&type=template&id=15cfc6e5&\"\nimport script from \"./booking-details-tab-details.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-details-tab-details.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\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VSimpleTable } from 'vuetify/lib/components/VDataTable';\ninstallComponents(component, {VSimpleTable})\n","<script>\nimport baseMixin from '@/mixins/baseMixin'\nimport BookingDetailsTabDays from './booking-details-tab-days.vue'\nimport BookingDetailsTabHistory from './booking-details-tab-history.vue'\nimport BookingDetailsTabConfirmations from './booking-details-tab-confirmations.vue'\nimport BookingDetailsTabDetails from './booking-details-tab-details.vue'\n\nexport default {\n  name: 'BookingDetailsTabGroup',\n  components: {\n    BookingDetailsTabDays,\n    BookingDetailsTabHistory,\n    BookingDetailsTabConfirmations,\n    BookingDetailsTabDetails,\n  },\n  mixins: [baseMixin],\n  props: {\n    booking: {\n      type: Object,\n      required: true,\n    },\n  },\n  data: () => {\n    return {\n      tab: null,\n    }\n  },\n  computed: {\n    compTabs() {\n      return [\n        { tab: 'details', title: this.$t('booking.details.tabs.detailsLabel') },\n        {\n          tab: 'days',\n          title: this.$t('booking.details.tabs.daysLabel', [\n            this.booking.dates.length,\n          ]),\n        },\n        { tab: 'history', title: this.$t('booking.details.tabs.historyLabel') },\n        {\n          tab: 'confirmations',\n          title: this.$t('booking.details.tabs.confirmationsLabel'),\n        },\n      ]\n    },\n  },\n}\n</script>\n\n<template>\n  <div>\n    <v-tabs v-model=\"tab\" class=\"mx-n4-\">\n      <v-tab\n        v-for=\"item in compTabs\"\n        :key=\"item.tab\"\n        class=\"text-capitalize\"\n        style=\"letter-spacing: normal;\"\n      >\n        {{ item.title }}\n      </v-tab>\n    </v-tabs>\n\n    <v-tabs-items v-model=\"tab\">\n      <v-tab-item>\n        <v-card flat>\n          <BookingDetailsTabDetails :booking=\"booking\" class=\"mt-4\" />\n        </v-card>\n      </v-tab-item>\n      <v-tab-item>\n        <BookingDetailsTabDays :booking=\"booking\" class=\"mt-4\" />\n      </v-tab-item>\n      <v-tab-item>\n        <v-card flat>\n          <BookingDetailsTabHistory :booking=\"booking\" class=\"mt-4\" />\n        </v-card>\n      </v-tab-item>\n      <v-tab-item>\n        <v-card flat>\n          <BookingDetailsTabConfirmations :booking=\"booking\" class=\"mt-4\" />\n        </v-card>\n      </v-tab-item>\n    </v-tabs-items>\n  </div>\n</template>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-details-tab-group.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-details-tab-group.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-details-tab-group.vue?vue&type=template&id=0ffb7f7f&\"\nimport script from \"./booking-details-tab-group.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-details-tab-group.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\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VTab } from 'vuetify/lib/components/VTabs';\nimport { VTabItem } from 'vuetify/lib/components/VTabs';\nimport { VTabs } from 'vuetify/lib/components/VTabs';\nimport { VTabsItems } from 'vuetify/lib/components/VTabs';\ninstallComponents(component, {VCard,VTab,VTabItem,VTabs,VTabsItems})\n","<script>\nimport baseMixin from '@/mixins/baseMixin'\nimport bookingDetailsMixin from '@/mixins/bookingDetailsMixin'\nimport BookingDetailsRequestAlert from './booking-details-request-alert.vue'\nimport BookingDetailsHeaderCard from './booking-details-header-card.vue'\nimport BookingDetailsClientInfoCard from './booking-details-client-info-card.vue'\nimport BookingDetailsTabGroup from './booking-details-tab-group.vue'\n\nexport default {\n  name: 'BookingDetailsContent',\n  components: {\n    BookingDetailsRequestAlert,\n    BookingDetailsHeaderCard,\n    BookingDetailsClientInfoCard,\n    BookingDetailsTabGroup,\n  },\n  mixins: [baseMixin, bookingDetailsMixin],\n  props: {\n    booking: {\n      type: Object,\n      required: true,\n    },\n  },\n  computed: {\n    showRequestActionAlert() {\n      return this.canActionBookingRequest(\n        this.booking.status,\n        this.booking.location.id\n      )\n    },\n  },\n  methods: {\n    handleEvent(payload) {\n      this.$emit('actionEvent', payload)\n    },\n  },\n}\n</script>\n\n<template>\n  <div>\n    <BookingDetailsRequestAlert\n      v-if=\"showRequestActionAlert\"\n      :booking=\"booking\"\n    />\n    <BookingDetailsHeaderCard :booking=\"booking\" @actionEvent=\"handleEvent\" />\n\n    <v-row>\n      <v-col cols=\"12\" md=\"6\">\n        <BookingDetailsClientInfoCard :booking=\"booking\" />\n      </v-col>\n    </v-row>\n\n    <BookingDetailsTabGroup :booking=\"booking\" />\n  </div>\n</template>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-details-content.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-details-content.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-details-content.vue?vue&type=template&id=2f33017d&\"\nimport script from \"./booking-details-content.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-details-content.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\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCol,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('StyledDialogHeader',{attrs:{\"title\":_vm.compFlyoutTitle,\"subtitle\":\"Booking Request\",\"description\":\" \"},on:{\"close\":function($event){return _vm.$emit('close')}},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [(!_vm.isLoadingFlyout)?_c('BookingPendingApprovalsDetailsStatusLabel',{staticClass:\"mr-4\"}):_vm._e()]},proxy:true}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-chip',[_vm._v(\" \"+_vm._s(_vm.compStatusText)+\" \")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport baseMixin from '@/mixins/baseMixin'\nimport { mapGetters } from 'vuex'\n\nexport default {\n  name: 'BookingPendingApprovalsDetailsStatusLabel',\n  mixins: [baseMixin],\n  computed: {\n    ...mapGetters({\n      activeBooking: 'bookingApprovals/activeBooking',\n    }),\n    compStatusText() {\n      switch (this.activeBooking?.status) {\n        case 'pendingApproval':\n          return 'Pending Approval'\n        default:\n          return ''\n      }\n    },\n  },\n}\n</script>\n\n<template>\n  <v-chip>\n    {{ compStatusText }}\n  </v-chip>\n</template>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-pending-approvals-details-status-label.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-pending-approvals-details-status-label.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-pending-approvals-details-status-label.vue?vue&type=template&id=4c21a177&\"\nimport script from \"./booking-pending-approvals-details-status-label.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-pending-approvals-details-status-label.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\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VChip } from 'vuetify/lib/components/VChip';\ninstallComponents(component, {VChip})\n","<script>\nimport baseMixin from '@/mixins/baseMixin'\nimport { mapGetters } from 'vuex'\nimport StyledDialogHeader from '@/components/layout/styled-dialog-header.vue'\nimport BookingPendingApprovalsDetailsStatusLabel from './booking-pending-approvals-details-status-label.vue'\n\nexport default {\n  name: 'BookingPendingApprovalsDetailsDialogHeader',\n  components: {\n    StyledDialogHeader,\n    BookingPendingApprovalsDetailsStatusLabel,\n  },\n  mixins: [baseMixin],\n  computed: {\n    ...mapGetters({\n      isLoadingFlyout: 'bookingApprovals/isLoadingFlyout',\n      flyoutHasError: 'bookingApprovals/flyoutHasError',\n      activeBooking: 'bookingApprovals/activeBooking',\n    }),\n    compFlyoutTitle() {\n      if (this.isLoadingFlyout) return 'Loading...'\n      if (this.flyoutHasError) return ''\n      return `REF#${this.activeBooking?.id}`\n    },\n  },\n}\n</script>\n\n<template>\n  <StyledDialogHeader\n    :title=\"compFlyoutTitle\"\n    subtitle=\"Booking Request\"\n    description=\" \"\n    @close=\"$emit('close')\"\n  >\n    <template v-slot:actions>\n      <BookingPendingApprovalsDetailsStatusLabel\n        v-if=\"!isLoadingFlyout\"\n        class=\"mr-4\"\n      />\n    </template>\n  </StyledDialogHeader>\n</template>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-pending-approvals-details-dialog-header.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-pending-approvals-details-dialog-header.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-pending-approvals-details-dialog-header.vue?vue&type=template&id=4659be9a&\"\nimport script from \"./booking-pending-approvals-details-dialog-header.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-pending-approvals-details-dialog-header.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\nexport default component.exports","<script>\nimport baseMixin from '@/mixins/baseMixin'\nimport BookingPendingApprovalsList from '@/components/booking/pendingApprovals/booking-pending-approvals-list.vue'\nimport { mapGetters, mapActions } from 'vuex'\nimport EmptyStateBlock from '@/components/general/empty-state-block.vue'\nimport SideDrawerDialog from '@/components/general/side-drawer-dialog.vue'\nimport BookingDetailsContent from '../details/booking-details-content.vue'\nimport BookingPendingApprovalsDetailsDialogHeader from './booking-pending-approvals-details-dialog-header.vue'\n\nexport default {\n  name: 'BookingPendingApprovalsContainer',\n  components: {\n    BookingPendingApprovalsList,\n    SideDrawerDialog,\n    BookingPendingApprovalsDetailsDialogHeader,\n    BookingDetailsContent,\n    EmptyStateBlock,\n  },\n  mixins: [baseMixin],\n  data: () => {\n    return {\n      activeBookingId: null,\n    }\n  },\n  computed: {\n    ...mapGetters({\n      isLoadingFlyout: 'bookingApprovals/isLoadingFlyout',\n      activeBooking: 'bookingApprovals/activeBooking',\n      flyoutHasError: 'bookingApprovals/flyoutHasError',\n      showFlyout: 'bookingApprovals/showFlyout',\n      showDetailsContent: 'bookingApprovals/showDetailsContent',\n    }),\n  },\n  methods: {\n    ...mapActions({\n      resetFlyout: 'bookingApprovals/resetFlyout',\n      openFlyout: 'bookingApprovals/openFlyout',\n      setFlyout: 'bookingApprovals/setFlyout',\n      loadApprovalDetails: 'bookingApprovals/loadApprovalDetails',\n      submitPendingApproval: 'bookingApprovals/submitPendingApproval',\n    }),\n    async closeFlyout() {\n      this.activeBookingId = null\n      await this.resetFlyout()\n    },\n    async loadBookingDetails() {\n      await this.setFlyout({\n        key: 'error',\n        value: false,\n      })\n      await this.openFlyout()\n      const { isSuccess, data } = await this.loadApprovalDetails(\n        this.activeBookingId\n      )\n\n      if (!isSuccess) {\n        return await this.setFlyout({\n          key: 'error',\n          value: true,\n        })\n      }\n\n      await this.setFlyout({\n        key: 'booking',\n        value: data,\n      })\n    },\n    async handleTableRowClick(item) {\n      this.activeBookingId = item.id\n      await this.loadBookingDetails()\n    },\n    async loadApprovalsList() {\n      await this.$refs.pendingApprovalsTable.loadApprovals()\n    },\n    async submitPendingApprovalResponse(payload) {\n      const { isSuccess } = await this.submitPendingApproval(payload)\n\n      if (!isSuccess) return\n\n      this.closeFlyout()\n      await this.loadApprovalsList()\n    },\n    async handleEvent(payload) {\n      switch (payload.event) {\n        case 'submitPendingApproval':\n          return await this.submitPendingApprovalResponse(payload.value)\n        default:\n          throw new Error(`Unhandled event: ${payload.event}`)\n      }\n    },\n  },\n}\n</script>\n\n<template>\n  <div>\n    <BookingPendingApprovalsList\n      ref=\"pendingApprovalsTable\"\n      @loadBookingDetails=\"handleTableRowClick\"\n    />\n\n    <SideDrawerDialog\n      :show=\"showFlyout\"\n      :xl=\"5\"\n      :lg=\"6\"\n      :md=\"10\"\n      @closeDialog=\"closeFlyout\"\n    >\n      <template v-slot:header>\n        <BookingPendingApprovalsDetailsDialogHeader @close=\"closeFlyout\" />\n      </template>\n\n      <div\n        v-if=\"isLoadingFlyout\"\n        class=\"w-full h-100 d-flex justify-center align-center\"\n      >\n        <v-progress-circular size=\"60\" color=\"primary\" indeterminate />\n      </div>\n\n      <EmptyStateBlock\n        v-else-if=\"flyoutHasError\"\n        :title=\"$t('booking.details.loading.failure.title')\"\n        :description=\"$t('booking.details.loading.failure.description')\"\n        border\n      >\n        <template v-slot:button>\n          <div class=\"mt-4\">\n            <v-btn color=\"primary\" depressed large @click=\"loadBookingDetails\">\n              <v-icon left> mdi-refresh </v-icon>\n              {{ $t('general.retry') }}\n            </v-btn>\n          </div>\n        </template>\n      </EmptyStateBlock>\n\n      <BookingDetailsContent\n        v-else-if=\"showDetailsContent\"\n        :booking=\"activeBooking\"\n        @actionEvent=\"handleEvent\"\n      />\n      <template v-slot:actions> </template>\n    </SideDrawerDialog>\n  </div>\n</template>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-pending-approvals-container.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./booking-pending-approvals-container.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./booking-pending-approvals-container.vue?vue&type=template&id=3a8d6b7c&\"\nimport script from \"./booking-pending-approvals-container.vue?vue&type=script&lang=js&\"\nexport * from \"./booking-pending-approvals-container.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\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\ninstallComponents(component, {VBtn,VIcon,VProgressCircular})\n","<script>\nimport Layout from '@layouts/main.vue'\nimport baseMixin from '@/mixins/baseMixin'\nimport BookingPendingApprovalsContainer from '@/components/booking/pendingApprovals/booking-pending-approvals-container.vue'\n\nexport default {\n  name: 'PendingApprovalView',\n  metaInfo() {\n    return {\n      title: this.$route?.meta?.title,\n      meta: [{ name: 'description', content: 'Pending Approval page.' }],\n    }\n  },\n  components: { Layout, BookingPendingApprovalsContainer },\n  mixins: [baseMixin],\n}\n</script>\n\n<template>\n  <Layout>\n    <BasePageTitle\n      :title=\"$t('booking.pendingApproval.pageTitle')\"\n      subtitle=\"Manage your incoming booking requests here\"\n    />\n    <BookingPendingApprovalsContainer />\n  </Layout>\n</template>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pending-approval.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pending-approval.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./pending-approval.vue?vue&type=template&id=1a8a525a&\"\nimport script from \"./pending-approval.vue?vue&type=script&lang=js&\"\nexport * from \"./pending-approval.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\nexport default component.exports","import config from '@/common/config'\n\nexport default {\n  data: function() {\n    return {\n      rules: {\n        required: (v) => !!v || this.$t('input.inputRequiredValidationText'),\n        min: (v) =>\n          (!!v && v.length >= config.get('password.minChars')) ||\n          this.$t('input.passwordRuleMinCharacters', {\n            min: config.get('password.minChars'),\n          }),\n        uppercase: (v) =>\n          (!!v && v.toLowerCase() !== v) ||\n          this.$t('input.passwordRuleUpperCase'),\n        lowercase: (v) =>\n          (!!v && v.toUpperCase() !== v) ||\n          this.$t('input.passwordRuleLowerCase'),\n        number: (v) =>\n          (!!v && /\\d/.test(v)) || this.$t('input.passwordRuleNumber'),\n        passwordsMatch: (v) =>\n          (!!v && v === this.newPass) || this.$t('input.passwordRuleMustMatch'),\n        special: (v) =>\n          (!!v && config.get('password.allowedCharsRegex').test(v)) ||\n          this.$t('input.passwordRuleSpecialCharacter'),\n        email: (v) =>\n          /.+@.+/.test(v) || this.$t('input.emailRequiredValidationText'),\n      },\n    }\n  },\n  methods: {\n    /**\n     * Should be paired with this form definition <v-form @keydown.enter.native=\"submit\" ... />\n     * Use this submit helper if your form doesn't have a button inside of it\n     * (@submit.prevent won't work if there isn't a button within the form)\n     * @param {*} payload\n     * @param {String} emit\n     */\n    submit(payload, emit = 'submit') {\n      this.$emit(emit, payload)\n    },\n  },\n}\n","export { default } from  \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-0-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-0-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-0-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-0-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./info-label.vue?vue&type=style&index=0&lang=scss&module=true&\"; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-0-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-0-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-0-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-0-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./info-label.vue?vue&type=style&index=0&lang=scss&module=true&\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"font-monospace\":\"info-label_font-monospace_1C1Sy\",\"text-overflow-unset\":\"info-label_text-overflow-unset_1hUpc\",\"text-overflow-clip\":\"info-label_text-overflow-clip_3GamI\",\"text-overflow-ellipsis\":\"info-label_text-overflow-ellipsis_ZfhJM\",\"text-overflow-fade\":\"info-label_text-overflow-fade_19THP\",\"white-space-unset\":\"info-label_white-space-unset_26uV8\",\"white-space-normal\":\"info-label_white-space-normal_3RUCT\",\"white-space-nowrap\":\"info-label_white-space-nowrap_1a_ym\",\"white-space-pre\":\"info-label_white-space-pre_2uJ13\",\"white-space-pre-wrap\":\"info-label_white-space-pre-wrap_2Wpl1\",\"white-space-pre-line\":\"info-label_white-space-pre-line_1vDOp\",\"white-space-break-spaces\":\"info-label_white-space-break-spaces_2YHcO\",\"animation--clockwise\":\"info-label_animation--clockwise_3pVcR\",\"clockwise\":\"info-label_clockwise_1VMl8\",\"animation--anti-clockwise\":\"info-label_animation--anti-clockwise_1BqMQ\",\"anti-clockwise\":\"info-label_anti-clockwise_3CGE4\",\"animation--rotating\":\"info-label_animation--rotating_3MHb9\",\"rotating\":\"info-label_rotating_2oETc\",\"animation--rotating-diagonal\":\"info-label_animation--rotating-diagonal_3K_vD\",\"rotating-diagonal\":\"info-label_rotating-diagonal_2sONK\",\"animation--rotate-180\":\"info-label_animation--rotate-180_3adLL\",\"rotate-180\":\"info-label_rotate-180_2Ad6f\",\"animation\":\"info-label_animation_3mHdx\",\"typed-cursor\":\"info-label_typed-cursor_3jgaA\",\"blink\":\"info-label_blink_3ukDH\",\"floating\":\"info-label_floating_2PJRR\",\"infoLabelStyling\":\"info-label_infoLabelStyling_1MbzD\",\"jump\":\"info-label_jump_2hIpz\",\"fade-out\":\"info-label_fade-out_tUM0o\",\"bubble-v\":\"info-label_bubble-v_1lF3r\",\"bubble-v-left\":\"info-label_bubble-v-left_3U1YS\",\"bubble-v-right\":\"info-label_bubble-v-right_1zJmX\",\"shake-v\":\"info-label_shake-v_31ue1\",\"shake-left-right\":\"info-label_shake-left-right_2wt9J\",\"fade-down\":\"info-label_fade-down_1VIGQ\"};","// Styles\nimport './VTextarea.sass'\n\n// Extensions\nimport VTextField from '../VTextField/VTextField'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport Vue from 'vue'\n\ninterface options extends Vue {\n  $refs: {\n    input: HTMLTextAreaElement\n  }\n}\n\nconst baseMixins = mixins<options &\n  InstanceType<typeof VTextField>\n>(\n  VTextField\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n  name: 'v-textarea',\n\n  props: {\n    autoGrow: Boolean,\n    noResize: Boolean,\n    rowHeight: {\n      type: [Number, String],\n      default: 24,\n      validator: (v: any) => !isNaN(parseFloat(v)),\n    },\n    rows: {\n      type: [Number, String],\n      default: 5,\n      validator: (v: any) => !isNaN(parseInt(v, 10)),\n    },\n  },\n\n  computed: {\n    classes (): object {\n      return {\n        'v-textarea': true,\n        'v-textarea--auto-grow': this.autoGrow,\n        'v-textarea--no-resize': this.noResizeHandle,\n        ...VTextField.options.computed.classes.call(this),\n      }\n    },\n    noResizeHandle (): boolean {\n      return this.noResize || this.autoGrow\n    },\n  },\n\n  watch: {\n    autoGrow (val: boolean) {\n      this.$nextTick(() => {\n        val\n          ? this.calculateInputHeight()\n          : this.$refs.input?.style.removeProperty('height')\n      })\n    },\n    lazyValue () {\n      this.autoGrow && this.$nextTick(this.calculateInputHeight)\n    },\n    rowHeight () {\n      this.autoGrow && this.$nextTick(this.calculateInputHeight)\n    },\n  },\n\n  mounted () {\n    setTimeout(() => {\n      this.autoGrow && this.calculateInputHeight()\n    }, 0)\n  },\n\n  methods: {\n    calculateInputHeight () {\n      const input = this.$refs.input\n      if (!input) return\n\n      input.style.height = '0'\n      const height = input.scrollHeight\n      const minHeight = parseInt(this.rows, 10) * parseFloat(this.rowHeight)\n      // This has to be done ASAP, waiting for Vue\n      // to update the DOM causes ugly layout jumping\n      input.style.height = Math.max(minHeight, height) + 'px'\n    },\n    genInput () {\n      const input = VTextField.options.methods.genInput.call(this)\n\n      input.tag = 'textarea'\n      delete input.data!.attrs!.type\n      input.data!.attrs!.rows = this.rows\n\n      return input\n    },\n    onInput (e: Event) {\n      VTextField.options.methods.onInput.call(this, e)\n      this.autoGrow && this.calculateInputHeight()\n    },\n    onKeyDown (e: KeyboardEvent) {\n      // Prevents closing of a\n      // dialog when pressing\n      // enter\n      if (this.isFocused && e.keyCode === 13) {\n        e.stopPropagation()\n      }\n\n      this.$emit('keydown', e)\n    },\n  },\n})\n","import $dayjs from '@/services/date'\n\n/**\n * Determines whether the month component of a date to be presented should\n * proceed the day component for a specified locale.\n *\n * @param locale The locale to check\n * @returns {Boolean}\n */\nconst isMonthBeforeDay = (locale) => {\n  return (\n    $dayjs()\n      .locale(locale.toLowerCase())\n      .localeData()\n      .longDateFormat('L') === 'MM/DD/YYYY'\n  )\n}\n\n/**\n * Helps with sorting Dates by providing a difference in time between\n * two Dates expressed in milliseconds.\n *\n * @param {Date} firstDate\n * @param {Date} secondDate\n * @returns {Number}\n */\nconst sortDate = (firstDate, secondDate) =>\n  $dayjs(firstDate).diff($dayjs(secondDate))\n\nexport { isMonthBeforeDay, sortDate }\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[\n    'styled-dialog-header__header pa-sm-4',\n    _vm.hasDescription ? '' : 'overflow-hidden' ],staticStyle:{\"position\":\"relative\"}},[_c('v-toolbar',{staticClass:\"transparent mb-0 styled-dialog-header__toolbar\",attrs:{\"flat\":\"\",\"dark\":\"\"}},[_c('v-toolbar-title',{class:_vm.compTitleClass,attrs:{\"title\":_vm.title}},[_vm._t(\"title\",[(!_vm.loading)?_c('span',[_vm._v(_vm._s(_vm.title))]):_vm._e()]),_vm._t(\"subtitle\",[(_vm.subtitle)?_c('p',{staticClass:\"mb-0 text-subtitle-2 opacity-8\"},[_vm._v(_vm._s(_vm.subtitle))]):_vm._e()])],2),_c('v-spacer'),_c('div',{staticClass:\"d-flex align-center\"},[_vm._t(\"actions\"),_c('v-btn',{attrs:{\"title\":_vm.$t('general.close'),\"icon\":\"\",\"small\":_vm.isSmallOrLower,\"data-testid\":\"styled-dialog-header-icon-close-btn\"},on:{\"click\":function($event){return _vm.$emit('close')}}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1)],2)],1),_vm._t(\"description\",[(_vm.hasDescription)?_c('p',{directives:[{name:\"sanitized-html\",rawName:\"v-sanitized-html\",value:(_vm.description),expression:\"description\"}],staticClass:\"mb-0 px-4 white--text styled-dialog-header__description\",attrs:{\"data-testid\":\"styled-dialog-header-description\"}}):_vm._e()])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport baseMixin from '@/mixins/baseMixin'\n\nexport default {\n  name: 'StyledDialogHeader',\n  mixins: [baseMixin],\n  props: {\n    title: {\n      type: String,\n      default: '',\n    },\n    subtitle: {\n      type: String,\n      default: '',\n    },\n    description: {\n      type: String,\n      default: '',\n    },\n    loading: {\n      type: Boolean,\n    },\n  },\n  computed: {\n    compTitleClass() {\n      return this.isMediumOrLower\n        ? 'text-subtitle-1 font-weight-medium'\n        : 'font-weight-medium'\n    },\n    hasDescription() {\n      return !!this.description\n    },\n  },\n}\n</script>\n\n<template>\n  <div\n    :class=\"[\n      'styled-dialog-header__header pa-sm-4',\n      hasDescription ? '' : 'overflow-hidden',\n    ]\"\n    style=\"position: relative\"\n  >\n    <v-toolbar flat dark class=\"transparent mb-0 styled-dialog-header__toolbar\">\n      <v-toolbar-title :title=\"title\" :class=\"compTitleClass\">\n        <slot name=\"title\">\n          <span v-if=\"!loading\">{{ title }}</span>\n        </slot>\n        <slot name=\"subtitle\">\n          <p v-if=\"subtitle\" class=\"mb-0 text-subtitle-2 opacity-8\">{{\n            subtitle\n          }}</p>\n        </slot>\n      </v-toolbar-title>\n\n      <v-spacer></v-spacer>\n\n      <div class=\"d-flex align-center\">\n        <slot name=\"actions\"> </slot>\n        <v-btn\n          :title=\"$t('general.close')\"\n          icon\n          :small=\"isSmallOrLower\"\n          data-testid=\"styled-dialog-header-icon-close-btn\"\n          @click=\"$emit('close')\"\n        >\n          <v-icon>mdi-close</v-icon>\n        </v-btn>\n      </div>\n    </v-toolbar>\n\n    <slot name=\"description\">\n      <p\n        v-if=\"hasDescription\"\n        v-sanitized-html=\"description\"\n        data-testid=\"styled-dialog-header-description\"\n        class=\"mb-0 px-4 white--text styled-dialog-header__description\"\n      ></p>\n    </slot>\n  </div>\n</template>\n\n<style lang=\"scss\" scoped>\n@import '@/styles/colors';\n\n.styled-dialog-header__header {\n  background: linear-gradient(\n    0deg,\n    $color-blue-400 100%,\n    $color-blue-400,\n    $color-blue-400 37%,\n    $color-blue-400 0\n  );\n}\n\n.styled-dialog-header__toolbar {\n  z-index: 2; // To sit above the shapes and allow for toolbar actions to be clickable\n}\n\n.styled-dialog-header__description {\n  position: relative; // Ensures z-index is applied\n  z-index: 2; // To sit above the shapes and allow links to be clickable and text to be highlighted\n}\n\n.styled-dialog-header__description::v-deep a {\n  color: $color-white; // Overwrites link color so it doesn't blend into panel header\n}\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./styled-dialog-header.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./styled-dialog-header.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./styled-dialog-header.vue?vue&type=template&id=60ec2c2d&scoped=true&\"\nimport script from \"./styled-dialog-header.vue?vue&type=script&lang=js&\"\nexport * from \"./styled-dialog-header.vue?vue&type=script&lang=js&\"\nimport style0 from \"./styled-dialog-header.vue?vue&type=style&index=0&id=60ec2c2d&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  \"60ec2c2d\",\n  null\n  \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VBtn,VIcon,VSpacer,VToolbar,VToolbarTitle})\n"],"sourceRoot":""}