1"use strict";(self.webpackChunkmia_platform_docs=self.webpackChunkmia_platform_docs||[]).push([["1291"],{778553(e,t,n){n.r(t),n.d(t,{metadata:()=>i,default:()=>h,frontMatter:()=>o,contentTitle:()=>d,toc:()=>l,assets:()=>a});var i=JSON.parse('{"id":"runtime-components/plugins/care-kit/components/am-calendar","title":"am-calendar","description":"The web component is based on the external component react-big-calendar, here is the documentation for more information.","source":"@site/versioned_docs/version-15.1.0/runtime-components/plugins/care-kit/20_components/10_am-calendar.md","sourceDirName":"runtime-components/plugins/care-kit/20_components","slug":"/runtime-components/plugins/care-kit/components/am-calendar","permalink":"/docs/runtime-components/plugins/care-kit/components/am-calendar","draft":false,"unlisted":false,"tags":[],"version":"15.1.0","sidebarPosition":10,"frontMatter":{"id":"am-calendar","title":"am-calendar","sidebar_label":"Am calendar"},"sidebar":"marketplace","previous":{"title":"Overview","permalink":"/docs/runtime-components/plugins/care-kit/overview"},"next":{"title":"Ck form export","permalink":"/docs/runtime-components/plugins/care-kit/components/ck-form-export"}}'),r=n(474848),s=n(28453);let o={id:"am-calendar",title:"am-calendar",sidebar_label:"Am calendar"},d,a={},l=[{value:"Events type",id:"events-type",level:2},{value:"Modes",id:"modes",level:2},{value:"Availability Mode",id:"availability-mode",level:3},{value:"Appointment Mode",id:"appointment-mode",level:3},{value:"Extra features",id:"extra-features",level:2},{value:"Appointment participants",id:"appointment-participants",level:3},{value:"Permissions",id:"permissions",level:3},{value:"Properties & Attributes",id:"properties--attributes",level:2},{value:"Custom types",id:"custom-types",level:2},{value:"AppointmentConfig",id:"appointmentconfig",level:3},{value:"EventBoxPopoverConfig",id:"eventboxpopoverconfig",level:3},{value:"ResourceConfig",id:"resourceconfig",level:3},{value:"AvailabilityConfig",id:"availabilityconfig",level:3},{value:"SlotConfig",id:"slotconfig",level:3},{value:"Listens to",id:"listens-to",level:2},{value:"Emits",id:"emits",level:2}];function c(e){let t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(t.p,{children:["The web component is based on the external component ",(0,r.jsx)(t.code,{children:"react-big-calendar"}),", ",(0,r.jsx)(t.a,{href:"https://jquense.github.io/react-big-calendar/examples/?path=/story/about-big-calendar--page",children:"here is the documentation for more information"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["The web component has been created as the front-end counterpart of the ",(0,r.jsx)(t.a,{href:"/docs/runtime-components/plugins/appointment-manager/overview",children:"appointment-manager"})," microservice to be used in a Microfrontend Composer configuration."]}),"\n",(0,r.jsx)(t.admonition,{type:"caution",children:(0,r.jsxs)(t.p,{children:["The web-component has been implemented to work with the ",(0,r.jsx)(t.a,{href:"/docs/runtime-components/plugins/appointment-manager/overview",children:"appointment-manager"})," set in ",(0,r.jsx)(t.a,{href:"/docs/runtime-components/plugins/appointment-manager/configuration",children:"full mode"}),"."]})}),"\n",(0,r.jsx)(t.h2,{id:"events-type",children:"Events type"}),"\n",(0,r.jsx)(t.p,{children:"The calendar is able to represent three kind if events: availabilities, exceptions and appointments."}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Availability"}),": Availability event represents the range of time in which a resource is available. The availability cannot start and end in different days, but it is possible to create periodic (daily, weekly, monthly) availability.\nAt the creation of an availability, the user can decide if the availability contains or does not contain slots. If the availability event is created with slots the event is divided in multiple time ranges. Each slot defines the availability's time range that the user can book."]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"availability",src:n(427594).A+"",width:"348",height:"191"})}),"\n",(0,r.jsx)(t.p,{children:"If the availability is created without slots, the availability is displayed as a single event on the calendar. An appointment can be booked with any duration inside the start time and end time of the availability."}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"immediate availability",src:n(167773).A+"",width:"204",he
1ight:"270"})}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Exception"}),": Exception events represent when the resource is not available. Exceptions can span multiple days, but cannot be periodic"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"exception",src:n(375424).A+"",width:"356",height:"131"})}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Appointment"}),": Appointment are usually represented inside an availability. Appointment events represent the booking of a slot. If exception is created on top of an appointment the appointment event is shown in red in the calendar and must be rescheduled. If the availability containing an appointment is delete or edited to not contain a previous appointment, the appointment will be flagged and shown as an independent event."]}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.img,{alt:"exception",src:n(610078).A+"",width:"393",height:"223"}),"\n",(0,r.jsx)(t.img,{alt:"exception",src:n(365516).A+"",width:"400",height:"154"})]}),"\n",(0,r.jsxs)(t.p,{children:["For more information regarding the type of events read the ",(0,r.jsx)(t.a,{href:"/docs/runtime-components/plugins/appointment-manager/overview",children:"appointment manager documentation"}),"."]}),"\n",(0,r.jsx)(t.h2,{id:"modes",children:"Modes"}),"\n",(0,r.jsx)(t.p,{children:"The components can be utilized in two different modes."}),"\n",(0,r.jsx)(t.h3,{id:"availability-mode",children:"Availability Mode"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"availability_mode",src:n(923137).A+"",width:"1574",height:"998"})}),"\n",(0,r.jsx)(t.p,{children:'The "availability mode" is used to show the availabilities and exceptions of a single resource. The calendar in this configuration will show the events of type availability and exceptions. The appointments are not displayed in this mode.'}),"\n",(0,r.jsxs)(t.p,{children:["When the calendar is set in availability mode the events are fetched through the back kit web component ",(0,r.jsx)(t.a,{href:"/docs/products/microfrontend-composer/back-kit/components/crud_client",children:"bk-crud-client"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["Even though this calendar mode has been designed to display the events of only one resource, the event filtering is not performed by the component itself. To filter out the events for a specific property is suggested to pass the filtering property as a URL parameter and filter the data received from the backend utilizing the back-kit component ",(0,r.jsx)(t.a,{href:"/docs/products/microfrontend-composer/back-kit/components/url_parameters_adapter",children:"bk-url-parameters"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["To improve performance not all the events are loaded in the calendar at the same time. In availability mode, the events are filtered sending ",(0,r.jsx)(t.a,{href:"/docs/products/microfrontend-composer/back-kit/events#change-query",children:"change-query"}),". If the calendar view is day or week the calendar loads events ranging from the first day of the previous week to the last day of the next week of the current visualized date. In month view the events from the previous month until the next one are loaded."]}),"\n",(0,r.jsxs)(t.p,{children:["Click on an event calendar will trigger the emission of a ",(0,r.jsx)(t.a,{href:"/docs/products/microfrontend-composer/back-kit/events#selected-data",children:"select-data"})," event which contains in the payload the data of the event clicked."]}),"\n",(0,r.jsxs)(t.p,{children:["This mode is compatible with version 1.x of the ",(0,r.jsx)(t.a,{href:"/docs/runtime-components/plugins/appointment-manager/overview",children:"appointment manager backend"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:["Here can be found an example ",(0,r.jsx)("a",{download:!0,target:"_blank",href:"/docs_files_to_download/care-kit/availabilities.json",children:"configuration"}),"."]}),"\n",(0,r.jsx)(t.h3,{id:"appointment-mode",children:"Appointment Mode"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"appointment_mode",src:n(10508).A+"",width:"1849",height:"915"})}),"\n",(0,r.jsx)(t.p,{children:'The "appointment mode" is used to show the events of multiple resources in the same view. In this mode, it is possible to book an appointment in one of the availabilities created for each resource.'}),"\n",(0,r.jsx)(t.p,{children:"A resource is the entity which time is managed through the calendar."}),"\n",(0,r.jsxs)(t.p,{children:["The resources are displayed in the top row of the calendar. The components accept the property ",(0,r.jsx)(t.a,{href:"#resourceconfig",children:"resourceConfig"})," the contains the main configuration options regarding the resources. In particular, ",(0,r.jsx)(t.code,{children:"resourceConfig"})," contains the property resourcesEndpoint which is where you must configure the endpoint from which the resources are fetched.\nIt is possible to set the calendar to work with only one resource by setting the property ",(0,r.jsx)(t.code,{children:"singleResource"})," of ",(0,r.jsx)(t.code,{children:"resourceConfig"})," true.\nWhen ",(0,r.jsx)(t.code,{children:"singleResource"})," is set to true the resource header will not be shown. To let the calendar to properly fetch the inforamation regarding the single resource selected its ",(0,r.jsx)(t.code,{children:"resourceId"})," must be in the page href. Ex. ",(0,r.jsx)(t.a,{href:"http://host/pluginName/%60resourceId%60",children:"http://host/pluginName/`resourceId`"}),". It is possible to specify how to retrieve the resourceId in href through the ",(0,r.jsx)(t.code,{children:"resourceConfig"}),"'s ",(0,r.jsx)(t.code,{children:"urlMask"})," property. If the ",(0,r.jsx)(t.code,{children:"resourceConfig"})," property ",(0,r.jsx)(t.code,{children:"currentUser"})," is also set to true the ",(0,r.jsx)(t.code,{children:"resourceId"})," used will be the one of the logged user."]}),"\n",(0,r.jsx)(t.p,{children:"The resources and the events in the calendar must share a common property used by the calendar to display the events in the correct resource sections. If a event is not associated to any resource it is not displayed in the calendar."}),"\n",(0,r.jsxs)(t.p,{children:["In appointment mode, the events are not fetched using ",(0,r.jsx)(t.code,{children:"bk-crud-cl
1ient"})," like in availability mode, but they are fetched from the endpoint configured in the property ",(0,r.jsx)(t.code,{children:"calendarEndpoint"})," (this endpoint should coincide with the GET /calendar of the ",(0,r.jsx)(t.a,{href:"/docs/runtime-components/plugins/appointment-manager/overview",children:"appointment manager backend"}),"). Not using the ",(0,r.jsx)(t.code,{children:"bk-crud-client"})," to fetch the events allows us to filter the events using the ",(0,r.jsx)(t.code,{children:"bk-filters-manager"}),". The filtering on the time range of events loaded is executed internally to the component. The web components computes the start and end date of the range as in availability mode and than adds them as query parameter to ",(0,r.jsx)(t.code,{children:"calendarEndpoint"})," call."]}),"\n",(0,r.jsx)(t.p,{children:"Clicking on a slot will make appear a draggable window containing some information about the slot clicked. A slot can be in 3 different states: available, booked, and unavailable. Depending on the state the action button present in the footer allows the user to book an appointment, change or delete an appointment, or visualize the information of the appointment in the selected slot. Unavailable slots and exception are not clickable in this configuration."}),"\n",(0,r.jsxs)(t.p,{children:["All the action buttons present in the appointment detail modal are performed using back-kit events. For this reason, it is needed in the page a ",(0,r.jsx)(t.code,{children:"bk-crud-client"})," configured with the ",(0,r.jsx)(t.a,{href:"/docs/runtime-components/plugins/appointment-manager/overview",children:"appointment manager"})," appointment endpoint as URL."]}),"\n",(0,r.jsxs)(t.p,{children:["This mode is compatible with version 2.x of the ",(0,r.jsx)(t.a,{href:"/docs/runtime-components/plugins/appointment-manager/overview",children:"appointment manager backend"}),"."]}),"\n",(0,r.jsxs)(t.p,{children:['It is possible to filter the resource and the events shown by the calendar. The component in "appointment mode" listen to ',(0,r.jsx)(t.a,{href:"/docs/products/microfrontend-composer/back-kit/events#change-query",children:"change-query events"})," and applies the filters inside tge change-query event payload to the events and resources displayed by the calendar. Only on the events' properties declared in the ",(0,r.jsx)(t.code,{children:"filterProperties"})," property the filering is applied. The same ",(0,r.jsx)(t.code,{children:"filterProperties"})," property is present inside the ",(0,r.jsx)(t.code,{children:"resourceConfig"})," object and used to declare the resource properties eligible for filtering."]}),"\n",(0,r.jsxs)(t.p,{children:["Here can be found an example ",(0,r.jsx)("a",{download:!0,target:"_blank",href:"/docs_files_to_download/care-kit/appointments.json",children:"configuration"}),"."]}),"\n",(0,r.jsx)(t.h2,{id:"extra-features",children:"Extra features"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"setting-menu",src:n(856857).A+"",width:"356",height:"532"})}),"\n",(0,r.jsx)(t.p,{children:"Through the setting button in the top right it is possible to filter out the events based on their type. In other words it is possible to hide the exceptions, the availability, or both types of event.\nIn the same dropdown menu is present the time zoom option that allows the user to zoom in the calendar. This feature is especially useful when very short events are present. The default zoom is 1 hour. It is possible to zoom in up to 10 minutes."}),"\n",(0,r.jsx)(t.h3,{id:"appointment-participants",children:"Appointment participants"}),"\n",(0,r.jsxs)(t.p,{children:["If the appointment manager is configured to support ",(0,r.jsx)(t.a,{href:"/docs/runtime-components/plugins/appointment-manager/overview#user-participants",children:"user participants"}),", appointments slots will have a custom appearance to show the status of the current logged user and the other appointment attendants, as shown in figure:"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"appointment-ap",src:n(840819).A+"",width:"1270",height:"144"})}),"\n",(0,r.jsx)(t.p,{children:"The status of a slot is inferred from its participants acceptance status, with the following rules:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["The slot is said to be ",(0,r.jsx)(t.strong,{children:"AVAILABLE"})," if it has not yet been booked by anyone"]}),"\n",(0,r.jsxs)(t.li,{children:["The slot is said to be ",(0,r.jsx)(t.strong,{children:"BOOKED"})," if it has been booked from someone and is no longer available to be booked by someone else."]}),"\n",(0,r.jsxs)(t.li,{children:["The slot is set to ",(0,r.jsx)(t.strong,{children:"ACCEPTED"})," if the current logged user has confirmed its participation in the appointment."]}),"\n",(0,r.jsxs)(t.li,{children:["The slot is said to be ",(0,r.jsx)(t.strong,{children:"DECLINED"})," if the current logged user has declined its participation in the appointment."]}),"\n",(0,r.jsxs)(t.li,{children:["The slot is said to be ",(0,r.jsx)(t.strong,{children:"NOT_CONFIRMED"})," if the current user has not yet confirmed or declined the appointment."]}),"\n",(0,r.jsxs)(t.li,{children:["The slot is said to be ",(0,r.jsx)(t.strong,{children:"ABANDONED"})," if all participants in the related appointment have declined their participation.\nThe slot is said to be ",(0,r.jsx)(t.strong,{children:"CANCELLED"})," if an exception overlaps the related availability and the related appointment in inaccessible"]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:"Hovering the parent slot displays the appointment status in the tooltip and modal, as well as an option to configure the appointment participation for the logged user."}),"\n",(0,r.jsx)(t.admonition,{type:"caution",children:(0,r.jsxs)(t.p,{children:["For the participant status to be correctly shown, please ensure the calendar is set to work in [Appointment Mode](#Appointment mode) and the AppointmentConfig ",(0,r.jsx)(t.em,{children:(0,r.jsx)(t.strong,{children:"currentUserFieldName"})})," and ",(0,r.jsx)(t.em,{children:(0,r.jsx)(t.strong,{children:"updateParticipantsStatusEndpoint"})})," properties are properly configured, as well the Resource config to be set to ",(0,r.jsx)(t.strong,{children:(0,r.jsx)(t.em,{children:"currentUser"})}),"=true."]})}),"\n",(0,r.jsx)(t.h3,{id:"permissions",children:"Permissions"}),"\n",(0,r.jsxs)(t.p,{children:["If the ",(0,r.jsx)(t.code,{children:"permissions"})," property is set to true in the component configuration, the actions that the user is able to perform interacting with a slot or appointment are limited by the permission indicated respectively in the property ",(0,r.jsx)(t.code,{children:"slotPermissions"})," and ",(0,r.jsx)(t.code,{children:"appointmentPermissions"}),".\nThe component reads for each slot the ",(0,r.jsx)(t.code,{children:"slotPermissions"}
1)," property, which should be an array of strings containing the permissions that the user has for that specific slot.\nThe valid permissions for a slot are the following:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"CREATE"})," \u2192 Permission to create an appointment. If the permission is not granted, in the draggable window the creation button will not be present."]}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["Likewise, the ",(0,r.jsx)(t.code,{children:"appointmentPermissions"})," property of each appointment contains the array of permissions that the user has for that specific appointment.\nThe valid permissions for an appointment are the following:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"VIEW"})," \u2192 Permission to visualize the appointment's details. If the permission is not granted, in the draggable window the edit button will not be present."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"DELETE"})," \u2192 Permission to delete an appointment. If the permission is not granted, in the draggable window the delete button will not be present."]}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.strong,{children:"EDIT"})," \u2192 Permission to edit an appointment. If the permission is not granted, the edit button will send the event to open the appointment detail modal in read-only mode. If the VIEW permission is not granted, the EDIT permission will not have any effect since will not be possible to open the detail modal."]}),"\n"]}),"\n",(0,r.jsx)(t.admonition,{type:"caution",children:(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.code,{children:"slotPermissions"})," and ",(0,r.jsx)(t.code,{children:"appointmentPermissions"})," properties are not added to slots and appointments by the ",(0,r.jsx)(t.a,{href:"/docs/runtime-components/plugins/appointment-manager/overview",children:"appointment-manager"}),". The property should be computed and added to the appointment object by ",(0,r.jsx)(t.a,{href:"https://rond-authz.io/",children:"R\xf6nd"})," or a middleware service that manipulates the response of the ",(0,r.jsx)(t.a,{href:"/docs/runtime-components/plugins/appointment-manager/overview",children:"appointment-manager's"})," ",(0,r.jsx)(t.code,{children:"GET /calendar/"})," endpoint."]})}),"\n",(0,r.jsx)(t.h2,{id:"properties--attributes",children:"Properties & Attributes"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"property"}),(0,r.jsx)(t.th,{children:"type"}),(0,r.jsx)(t.th,{children:"required"}),(0,r.jsx)(t.th,{children:"default"}),(0,r.jsx)(t.th,{children:"description"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"addressProperty"})}),(0,r.jsx)(t.td,{children:"string"}),(0,r.jsx)(t.td,{children:"false"}),(0,r.jsx)(t.td,{children:"address"}),(0,r.jsx)(t.td,{children:"Name of the event property that contains the location of the event. If present it is shown in the modal detail popover"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"appointmentConfig"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"#appointmentconfig",children:"AppointmentConfig"})}),(0,r.jsx)(t.td,{children:"false"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"Object that contains the name of the appointments properties used to populate booked slot and the draggable modal"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"availabilityConfig"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"#availabilityconfig",children:"AvailabilityConfig"})}),(0,r.jsx)(t.td,{children:"false"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"Object that contains the name of the availability properties used to populate slot and the draggable modal"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"appointmentMode"})}),(0,r.jsx)(t.td,{children:"boolean"}),(0,r.jsx)(t.td,{children:"false"}),(0,r.jsx)(t.td,{children:"false"}),(0,r.jsx)(t.td,{children:"Boolean the define which calendar mode is in use. If false the calendar is in availability mode, if true in appointment mode"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"modalFooterVisible"})}),(0,r.jsx)(t.td,{children:"boolean"}),(0,r.jsx)(t.td,{children:"false"}),(0,r.jsx)(t.td,{children:"true"}),(0,r.jsx)(t.td,{children:"Boolean the define if the modal with the appointment detail has the footer with the actions buttons"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"appointmentManagerUrl"})}),(0,r.jsx)(t.td,{children:"string"}),(0,r.jsx)(t.td,{children:"false"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsxs)(t.td,{children:["The base path of the ",(0,r.jsx)(t.a,{href:"/docs/runtime-components/plugins/appointment-manager/overview",children:"Appointment manager"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"calendarEndpoint"})}),(0,r.jsx)(t.td,{children:"string"}),(0,r.jsx)(t.td,{children:"false"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"The endpoint used to fetched the events in appointment mode"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"updateParticipantsStatusEndpoint"})}),(0,r.jsx)(t.td,{children:"string"}),(0,r.jsx)(t.td,{children:"false"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"The endpoint used to set the user's participation status for a certain event"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"currentUserIdFieldName"})}),(0,r.jsx)(t.td,{children:"string"}),(0,r.jsx)(t.td,{children:"false"}),(0,r.jsx)(t.td,{children:"sub"}),(0,r.jsxs)(t.td,{children:["The userinfo property field name to be matched with to determine the particpation status for any event (",(0,r.jsx)(t.strong,{children:"N.B."})," this property must be properly set if the ",(0,r.jsx)(t.a,{href:"/docs/runtime-components/plugins/appointment-manager/overview",children:"Appointment Manager"})," if configured with the ",(0,r.jsx)(t.code,{children:"isParticipantStatusAvailable"})," flag.)"]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"date"})}),(0,r.jsx)(t.td,{children:"string"}),(0,r.jsx)(t.td,{children:"false"}),(0,r.jsx)(t.td,{children:"new Date()"}),(0,r.jsx)(t.td,{children:"The date on which the calendar is on load"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"height"})}),(0,r.jsx)(t.td,{children:"string"}),(0,r.jsx)(t.td,{children:"false"}),(0,r.jsx)(t.td,{children:"'75vh'"}),(0,r.jsxs)(t.td,{children:["css-height the calendar should occupy in the page as de
1scribed here: [",(0,r.jsx)(t.a,{href:"https://developer.mozilla.org/en-US/docs/Web/CSS/height",children:"https://developer.mozilla.org/en-US/docs/Web/CSS/height"}),"]"]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"filterProperties"})}),(0,r.jsx)(t.td,{children:"string[]"}),(0,r.jsx)(t.td,{children:"false"}),(0,r.jsx)(t.td,{children:"[]"}),(0,r.jsx)(t.td,{children:"List of availabilities' properties on which filters can be applied"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"popoverConfig"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"#eventboxpopoverconfig",children:"EventBoxPopoverConfig"})}),(0,r.jsx)(t.td,{children:"false"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"Object that contains the name of the properties used to populate the popover that appears when an event is hovered"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"resourceConfig"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"#resourceconfig",children:"ResourceConfig"})}),(0,r.jsx)(t.td,{children:"false"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"Object that contains the name of the resource properties used to populate the header containing the resource information and the endpoint from which the resources are fetched"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"resourceId"})}),(0,r.jsx)(t.td,{children:"string"}),(0,r.jsx)(t.td,{children:"false"}),(0,r.jsx)(t.td,{children:"resourceId"}),(0,r.jsx)(t.td,{children:"Provides a unique identifier for each resource in the resources array. Each event should have the same property to be shown in its calendar resource column"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"eventResourceId"})}),(0,r.jsx)(t.td,{children:"string"}),(0,r.jsx)(t.td,{children:"false"}),(0,r.jsx)(t.td,{children:"resourceId"}),(0,r.jsx)(t.td,{children:"Provides a unique identifier for each event. Each Resource should have the same property to be shown in its calendar resource column"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"reminderMilliseconds"})}),(0,r.jsx)(t.td,{children:"number"}),(0,r.jsx)(t.td,{children:"false"}),(0,r.jsx)(t.td,{children:"90000"}),(0,r.jsx)(t.td,{children:"Number of milliseconds before the booked appointment that the reminder is sent"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"slotConfig"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"#slotconfig",children:"SlotConfig"})}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"Object that contains the name of the appointments properties used to populate free slot and the draggable modal"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"view"})}),(0,r.jsx)(t.td,{children:"'month' | 'week' | 'day'"}),(0,r.jsx)(t.td,{children:"false"}),(0,r.jsx)(t.td,{children:"week"}),(0,r.jsx)(t.td,{children:"The current view value of the calendar. Determines the visible 'view'"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"permissions"})}),(0,r.jsx)(t.td,{children:"boolean"}),(0,r.jsx)(t.td,{children:"false"}),(0,r.jsx)(t.td,{children:"false"}),(0,r.jsxs)(t.td,{children:["If set to true, the user interaction with an appointment are delimited by his/her permissions defined in the appointment's ",(0,r.jsx)(t.code,{children:"permissions"})," property"]})]})]})]}),"\n",(0,r.jsx)(t.h2,{id:"custom-types",children:"Custom types"}),"\n",(0,r.jsx)(t.h3,{id:"appointmentconfig",children:"AppointmentConfig"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:"{\n titleProperty: string[]\n ownerProperty: string\n additionalProperty?: {property: string; label: Record<string, string>; type: string}[]\n}\n"})}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"property"}),(0,r.jsx)(t.th,{children:"description"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"titleProperty"})}),(0,r.jsx)(t.td,{children:"Names of the property whose value is shown inside a slot when an appointment is booked"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"ownerProperty"})}),(0,r.jsx)(t.td,{children:"Name of the property that contains the identifier of the owner of the slot (ex. customerId)"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"additionalProperty"})}),(0,r.jsx)(t.td,{children:"Array of the custom property that is shown in the draggable modal that spawn when clicking an appointment. Each element of the array should contain a field property with the name of the custom property and an object label containing specific translations according to ISO 639-1 code."})]})]})]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Example"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:'"appointmentConfig": {\n "titleProperty": ["client", "performance"],\n "ownerProperty": "client",\n "additionalProperty": [\n {\n "property": "performance",\n "label": {\n "it": "Prestazione",\n "en": "Performance"\n },\n "type": "string\n }\n ]\n}\n'})}),"\n",(0,r.jsx)(t.h3,{id:"eventboxpopoverconfig",children:"EventBoxPopoverConfig"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:"{\n title:{property: string; value?: Record<string, Record<string, string>> }\n details: { property: string; label: Record<string, string>; value?: Record<string, Record<string, string>> }[]\n}\n"})}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"property"}),(0,r.jsx)(t.th,{children:"description"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"title"})}),(0,r.jsx)(t.td,{children:"Names of the property whose value is shown in the header of the popover. If not present the popover will not have a header"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"details"})}),(0,r.jsx)(t.td,{children:"Array of the custom properties that are shown in the popover. Each element of the array should contain a field property with the name of the custom property and an object value containing the mapping of the value to the localized translation."})]})]})]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Example"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:'"popoverConfig": {\n "details": [\n {\n "property": "status",\n "label": {\n "it": "Stato",\n "en": "Status"\n },\n "value": {\n "AVAILABLE": {\n "it": "Disponibile",\n "en": "Available"\n }
1,\n "BOOKED": {\n "it": "Prenotato",\n "en": "Booked"\n },\n "UNAVAILABLE": {\n "it": "Non disponibile",\n "en": "Unavailable"\n }\n }\n }\n ]\n}\n'})}),"\n",(0,r.jsx)(t.h3,{id:"resourceconfig",children:"ResourceConfig"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:"ResourceConfig = {\n resourcesEndpoint: string\n singleResource: boolean\n currentUser: boolean\n filterProperties`: string[]\n details: ResourceDetails[]\n delimiter: string\n}\n\nResourceDetails = {\n property: string[]\n delimiter: string\n}\n"})}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"property"}),(0,r.jsx)(t.th,{children:"type"}),(0,r.jsx)(t.th,{children:"description"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"resourcesEndpoint"})}),(0,r.jsx)(t.td,{children:"string"}),(0,r.jsx)(t.td,{children:"The endpoint from which the resources are fetched."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"singleResource"})}),(0,r.jsx)(t.td,{children:"boolean"}),(0,r.jsxs)(t.td,{children:["If true the calendar in appointment mode handles only one resource. The ",(0,r.jsx)(t.code,{children:"resourceId"})," of the resource is recovered from the URL through the ",(0,r.jsx)(t.code,{children:"urlMask"})]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"filterProperties"})}),(0,r.jsx)(t.td,{children:"string[]"}),(0,r.jsx)(t.td,{children:"List of availabilities' properties on which filters can be applied"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"currentUser"})}),(0,r.jsx)(t.td,{children:"boolean"}),(0,r.jsxs)(t.td,{children:["if true and ",(0,r.jsx)(t.code,{children:"singleResource"})," is also true filters event for the ",(0,r.jsx)(t.code,{children:"resourceId"})," of the current logged user"]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"details"})}),(0,r.jsx)(t.td,{children:"ResourceDetails[]"}),(0,r.jsx)(t.td,{children:"List of the property inside each resource to be shown in the header and popover. Each detail can be the chian of multiple property divided by a specific delimiter."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"delimiter"})}),(0,r.jsx)(t.td,{children:"string"}),(0,r.jsx)(t.td,{children:"Character used between details in the popover."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"urlMask"})}),(0,r.jsx)(t.td,{children:"string"}),(0,r.jsxs)(t.td,{children:["Mask used to recover the ",(0,r.jsx)(t.code,{children:"resourceId"})," from the URL in case ",(0,r.jsx)(t.code,{children:"singleResource"})," is ",(0,r.jsx)(t.code,{children:"true"}),". The key must be the same in the ",(0,r.jsx)(t.code,{children:"resourceId"})," property of the calendar"]})]})]})]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Example"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:'"resourceConfig": {\n "resourcesEndpoint": "http://localhost:3456/api/v1/resources",\n "details": [\n "name",\n "specialization"\n ]\n}\n'})}),"\n",(0,r.jsx)(t.h3,{id:"availabilityconfig",children:"AvailabilityConfig"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:"{\n additionalProperty?: {property: string; label: Record<string, string>; type: string}[]\n}\n"})}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"property"}),(0,r.jsx)(t.th,{children:"description"})]})}),(0,r.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"additionalProperty"})}),(0,r.jsx)(t.td,{children:"Array of the custom properties that are shown in the draggable modal that spawn when clicking a free slot. Each element of the array should contain a field property with the name of the custom property and an object label containing specific translations according to ISO 639-1 code."})]})})]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Example"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:'"availabilityConfig": {\n "additionalProperty":[\n {\n "property": "slotDuration",\n "label": {\n "it": "Durata",\n "en": "Duration"\n },\n "type": "number"\n }\n ]\n}\n'})}),"\n",(0,r.jsx)(t.h3,{id:"slotconfig",children:"SlotConfig"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:"{\n centeredPopover: boolean\n additionalProperty?: {property: string; label: Record<string, string> }[]\n}\n"})}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"property"}),(0,r.jsx)(t.th,{children:"description"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"centeredPopover"})}),(0,r.jsx)(t.td,{children:"Boolean to control the spawning position of the draggable modal. If false the modal will spawn near the clicked event, if false in the center of the page"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"additionalProperty"})}),(0,r.jsx)(t.td,{children:"Array of the custom properties that are shown in the draggable modal that spawn when clicking a free slot. Each element of the array should contain a field property with the name of the custom property and an object label containing specific translations according to ISO 639-1 code."})]})]})]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"Example"})}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{children:'"slotConfig": {\n "centeredPopover": false,\n "additionalProperty":[\n {\n "property": "performance",\n "label": {\n "it": "Prestazione",\n "en": "Performance"\n },\n "type": "string"\n }\n ]\n}\n'})}),"\n",(0,r.jsx)(t.h2,{id:"listens-to",children:"Listens to"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"event"}),(0,r.jsx)(t.th,{children:"action"}),(0,r.jsx)(t.th,{children:"emits"}),(0,r.jsx)(t.th,{children:"on error"})]})}),(0,r.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"/docs/products/microfrontend-composer/back-kit/events#display-data",children:"display-data"})}),(0,r.jsx)(t.td,{children:"receives data to display"}),(0,r.jsx)(t.td,{children:"-"}),(0,r.jsx)(t.td,{children:"-"})]})})]}),"\n",(0,r.jsx)(t.h2,{id:"emits",children:"Emits"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"event"}),(0,r.jsx)(t.th,{children:"description"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"/docs/products/microfrontend-composer/back-kit/events#change-query",children:"change-query"})}),(0,r.jsx)(t.td,{children:"used to updated the filters in availability mode"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"/docs/products/microfrontend-composer/back-kit/events#add-new",children:"add-new"})}),(0,r.jsx)(t.td,{children:"trigger for the opening of the component used to add a new event"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"/docs/products/microfrontend-composer/back-kit/events#add-new-external",children:"add-new-external"})}),(0,r.jsx)(t.td,{children:"trigger for the opening of the appointment detail modal in read-only mode"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"/docs/products/microfrontend-composer/back-kit/events#delete-data",children:"deleteData"})}
1),(0,r.jsx)(t.td,{children:"notifies the request for deletion of event"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"/docs/products/microfrontend-composer/back-kit/events#require-confirm",children:"require-confirm"})}),(0,r.jsx)(t.td,{children:"trigger for the opening of the confirmation modal before deleting an appointment"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"/docs/products/microfrontend-composer/back-kit/events#selected-data",children:"selected-data"})}),(0,r.jsx)(t.td,{children:"notifies about the click on an event"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"/docs/products/microfrontend-composer/back-kit/events#update-data",children:"update-data"})}),(0,r.jsx)(t.td,{children:"trigger for the opening of the component to modify the appointment in the clicked slot"})]})]})]})]})}function h(e={}){let{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},365516(e,t,n){n.d(t,{A:()=>i});let i="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAACaCAYAAACHUx4eAAAABHNCSVQICAgIfAhkiAAAABl0RVh0U29mdHdhcmUAZ25vbWUtc2NyZWVuc2hvdO8Dvz4AAB0ZSURBVHic7d1/VNR13vfxpwOc7+jOOnpjwNEUDyksgphwWW6GpkuW6d6tP9q2da9y9b5b877X0tpI9nRxyJPF1sEfe2Vt15rV5tru0cpdrUwykehSubEEyQsSjozCxSBzYNxpmAkY7z8GExER2IQZfD3O4RznM9/P9/P5/uDz/n7fn+8XB50/f/48fayyspKYmJi+blZEZMDqj3HV1KetiYjIgBHq8Xj6peH+aldEZKDq63E11Gw292mDF/RXuyIiA1Vfj6tKYYmISK8ogIiISK9oDkREZIDQHIiIiPSK5kBERCQoKIUlIjJAKIUlIiK9ohSWiIgEBaWwREQGCKWwRESkV5TCEhGRoKAUlojIAKEUloiI9IpSWCIiEhQUQEREpFc0ByIiMkBoDkRERHpFcyAiIhIUlMISERkglMISEZFeUQpLRESCwqCKiorz/d0JEREJPoOampr6PIDU1NQwcuRIAEJCQggJCcFk0s2QiIjP56O1tZXW1tYe1Ws/rvYVzYGIiAQQk8mEyWQiLCysx3U1ByIiIkGh3x7j9fl8SluJiHTB5/PxzTffdHv56+Yx3s6Ch/PoMb5a9yL1uQdobdJ7IiIy8IUMNjMi7Q7GZzyBNXnSJd+ZTKYepaX6ejwP7dPWuuA8eoz/nDVPgUNEriutTR7sf/+Q+twD/HD/7suCSCALmBzSV+teVPAQketWa5OHr9a92N/d6JF+mwPpqD73QH93QUSkX3U2DvZkjL5u5kA60t2HiFzvOhsHA3kOJGBSWCIiElwCJoUlIiKXUwpLRER6RSksEREZcJTCEhEJYEphfUfCp0/r9rKOgwXXsCciIn0jkFNYAfMm+tWET5/GxJdzur18ySOrexFEDMJf2E/KtD0cmr6Ocy09rH49CJ3IuP3vMvqL5eStzMXX3/0RkX4TVCksT81/c+jOn1x1uan73uviWyvDl61h3K9+zIi4CEw4cZcVUpudzomdNpo+3UHN2RK8wRQ8zKkkFW9nyIZkDm2uu7ZttdhoeG8HIVXlPQgeBiP/XMHkhcalxVVbOJT0FI7gOQVF+pxSWAHDSvhz73LLCiv1m9ZR9Otims2RDJ50C2G1dgDcu9ZzvJ97GdicOHKewtHjeh58ezLJX7XvYuBpcRJE1y8i/SKQU1hB+RSWJT6OqfveIyFnHQAJOeuYuu89LPFxXVdMWMqEFWNoWDOfwqe3UXe4hIa8XGo2raOqwAvA0Mz9zDm4iiGhgDmV+COlzHGeZa6zlBl/XcHwYRdWZmX4yle4rfIMc78+w+zyrYyO9peHr95Kalt52mevEDPD+m2dqPX7mWk7yZyvzzLXUcRtr2aR+LcC0hxnmOso5bbNC7FcSCxaJhL96vvMtLe1/04GEaN6uLO62IYhD71CavlJ/3dtfY2e5L9LCFu2nbnes5f8zNyUiokIoj86w4wXpvT45Gn1NOKusl38qXb6g8lNC0ncX8Tsr88y13GS1OdS/euetIqplf59Nae6iCmZaRi92Y9EEP7k1rZtPcnM/c8z8qbO+2jclUHKkdK2NgtIvNd/7Iy5GUw5Wsqcr88wu/x9kpZNbNt+g4i17zDj235uJ3pUx/51PHdgyL1Z/vU5zzD7y+3E3RXR9o2VqFeLmO24eP6MTuhw5yYSIIIygLhOlFG6Mp0RM6czZdd2RsyczvGV6bhOlHVZb8hddzLUk4/tz7buNeQp5vSvf0ZebAKf/M8/4p2WQfzDsQAYizeQkjkR17MPkJc0i0P/OwdHNRgPbSDlt7E4s+aTlzyfsi8mEvenDYyMBDAwEmLhw8fIj00h/+F9hN2/gvAzORTddhv5D/+dsMXPMP5eA7ASkfM6E263U/nTaeTNSqduxFJu3rqi3cD4z21D6NhYLK5tHLklhU9uW8JpVxoT1i9jSCg0v7GED8Jv5IPwceQ/XUhzfT5VW45cgzkPg4jHn2F06E4KY8fxUdI9HHu92N9O1R7K7ruH/TEpHHqmGOuTWcTc2tP9CMayjaQ8Hk39b+5hf/JyalhE4vplXDYsx61g8ptLMfL+jUPJKeQveArbISckrCDlzaWE7U2nIHkWRRvshOe8TuJd/uM0+NZbMB1IJ39CAvn3ZFJbfaF/6eQnpZD305dw/0sGSelT/O0krOLm1xYRsmM5eRNmUbw3kpj/eIaoYQBOGl5azmfJyeQmL6GaecSvXUTP/286kWsvqOZA2vvHiTI+/+Uj3PbJbj6bOe+qwQPAuMEKzmK8HTbZsnAFES25VO4q71DDietwif+f9s3YDj/OhHFjMNFI1EN3ws4lHN+S7x/sKgAiiFl8J76dSzj+RiE+wPVkJsPvfp0xCyOo2exflc9px11tw7drG7VlvyDCXkJDmQ0q2j4nRsPeiYy+10r9k49RlecEyjnxmylEfLSIUQmbKTvW3T11pW1o21ZXI00VNtwtNr7akk/0pikMCwW3x4vPBaZpjzMpPRrHyplUHvNeuZlbs5ixvy24efI5HruAKnv7BcyE3buRuxwb2z57aMiaxaFNdpq/boSo8Qwda+AsKOfchSqN5TQU+f/pfWMbdemvY/mBAYd7sB93NjLq/lR8u5ZQtqscH+V8tTGX6NduJ9yyhRrXxR4O/dkihtu3cWjNThpaAPwXGkP/72Ks1ds49PRu/4MVZY9xMq2I+IfmcXxvvr8vDhvuqjp8VXVARFv/bLgrbPgqtlC5exm3pCRhUIjxs0VYq3Zw6Hf5uFvA/ewW6h/MIOJWg9q9XrzHCvHv6VyqdhQzdkksllDa+iTXG82BXAPfj49j8taXcRz8jMlbX+boz5fxj6sEEe9ZJ1gjMS65gjcYen8GcS12TnUMIDfNI379GkbdGk1YqIdWDHy7zBAazZAo8B6wXXpFHhqN0bHcY8NdC8NHRwL2S9ffYqfZBSZzW4qrxUmzp+1zZCSG2cm5U+1OiDIbXiIxogzoajDvzjZ0pt5OszmakG9TaKlMeHkFoX9ZQvG2q0zOl77E57N2EwKAE/dlkyQefB/nULDm4pNbvmr/AN3w7HKOG1nEvHOU8VX7OLUmnZMf12H8aBWJa39BeFwkIS0esEB9Z213tR9DrRhRBsa07cxZ3L5OPmYr8G0AMTCPioQzNlyXDNQG5shhHco9uKuchEyKpHu/PV6aHU4wDyWkbX2mhBXc5lzRbhkntSMAcyyjc54nZl4SQ6xmWj1gshd2qxUZmDQHcg0kbMqm/pODFN77APWfHCRhU/ZV50DceZ/isqQyamFEl8v5GURlbmDssD18nnwTH4SncPxjp/+rFjveejDGjrl0B7ZU4a3tUG4e4w82pzsEjyu5MEjZ7Xg9VgaPbXdCxI3BwI63tpvBo6tt6Ebd8LXPM7rlLYqfzKX5aou76jh3uJCGw4U0HC7v9Cm2VpcdV2n5tz/uxrYvGks4vXIBeXGz+PKLWMZvfYao8FTG//5xLP8vk0+jb+SDm5ZTXd3NrsPF/dhix1vvxb1lAR987wb2XPixLqDykvV58Tga4cYxHVKEXjz2juVmhkRbaa210+PrvVB/O75j68mztuvP98ZRtM2L8VAWifd6OX1fCnutN5L3bLEelZaAFbQprPaP85auzuhepaI/UrZtIZNz3mVyZA62vSV4W6x8f
1wRQ20U9sxmTpX3G3EbtX/IZty6LxCIvlblVmKIi8ZUWUr0tn3E5WSQWOKk8BMMfzWJU6D6O7bqY2ugWVy6ndzlJSd9A9KnnOOuKJfqFxRiHc6gu7byK6YZoLHEXZmo9+ByNF7+8bBu6Zro1g8QHzVQ/mEMDBiYL0OLF90+cLiHmYQyJHtNuQPTQbK8jLCWNwfXFnLM34vovO60LrYS1G8RN37Niau1tqzZqdxxhXGYWE4oyOXWgCt+waAa3FOMovTSYnnt7B66H/w/xLxRz4pVCms3RhHmO0PD2NpwrVhO/tpDjfywn7K41jPuRk9qf5+K7fCblqs69vQfXw4tJ/G0xZW8X422xMjjKS0NBOWAAXsBKiMVDSM9DlAwwSmEFjDpqV8yn6FQG45Zkc0umFVOLE291OfUfdpxY91KXnUn1y6tJKV5FGF58jXacr/oHHfcfHqXIms2E9O3M2GTgsxdSed98yt5YTlH4BiasfZcZ4eA9tpuyf02npidXzwA4qVu9hC9zson5awGJZieuj1/ji19v7pBiucBgeMb7zGgXS91/WEB+F9twZQbDfzYPi2UMlndKGd1W6tu5nL0/z+/phrQxY5r7PDPmPt+uzEbV7JnU/SSLpAdjMSzgqy6h9ulHqbaX4Hj6LSxrN5D6Kysmj5dmRxU1jVds4Ircm5dTNCybCZnbiX7VwNdooyF7CY7SkksXPLaeoqXDSMh8hqkPR4Cnjvqn51O4eTNFDw4jae0Gpq200lpdSO3qJRzf46RHFwXftrOOoqUGCZnZTH0yAlOLE/eeTA4fLse97TnKZmQT834R8RbwNdbhKejGHaAMWIGcwhp0/vz5833aIlBZWUlMTMwlZXuMG7qs0zdvoouI9K+53rO9qtfZuHqtBU0Ky3GwgJJHVvdoeRGRYKcU1ndEQUFErjeBnMIK2qewRESkfwVNCktE5HqkFJaIiPSKUlgiIjLgBEwACRmsOyERub4F2zgYMHMgI9LuwP73D/u7GyIi/WZE2h2XlWkOpBvGZzxBfe4BWpsCI6CJiPSlkMFmxmc8cVm55kC6wZo8iR/u303kj+8Outs4EZHeChlsJvLHd/PD/buxJk/q7+70yKCmpqY+/1MmNTU1jB07FpMpYOKXiEjA8fl8fPPNN91atqamhpEjR17jHl2q31JYCh4iIl0zmUxKYYmIyMAzqKKios9TWO1ZLBaGDh2KYRgMGjSoP7siItKvzp8/j9fr5dy5c7hcrqtX6Gf9NgdyIVcXEhJCSEiIUloiIvjnPVpbW2lt7dn/onZdzYEEyuPDIiKBxGQyYTKZCAsL63FdzYGIiEhQ6Lc30X0+n9JWIiJd6MljvHAdvYneWfBwHj3GV+te1BvpInLdCBlsZkTaHYzPeOKyFwkD/THe0D5trQvOo8f4z1nzFDhE5LrS2uTB/vcPqc89EHRvowdMDumrdS8qeIjIdau1ycNX617s7270SMD8Nd763AP93QURkX7V2Tiov8bbDbr7EJHrXWfjYCDPgQRMCktERIJLwKSwRETkckphiYhIryiFJSIiA45SWCIiAUwprO9I+PRp3V7WcbDgGvYETCPGYMaGu/6aNnONWbFMS8J0Mp9z9v7ui4h0JpBTWAHzJvrVhE+fxsSXc7q9fMkjq69dEDFPYcLBd7FsTODQH5w9rm5a+AqzNkXw1fQFVFVcg/51l2Ue8X/LwPvzZIr3evuxIyISjIIqheWp+W8O3fmTqy43dd97nX8xKYPUz1Yx9JKw6aV26U0Ubeu7AdR3fB/Vfx323Vz1m6cQt387MZOsmELB56rDU3qE08+mc3Jv3XfQQD/r9JiBY+W4XgVvkWCjFFYgaSmnasEDVP7XxaJmRx9ffZft5MSq72plZowRZpxZ0yh6w0PY2CQiHs0i7s+v0Jy8gKqq76qdftTJMWt1KHjI9SGQU1hB+RSWJT6OqfveIyFnHQAJOeuYuu89LPFx3ajtpbnWhrvq4k+zCyCC8Ce3klp+kjnOk8zc/zwjb7pQx8By//NM/fIkc74+w+yjG7ghsv06u6ibsIzJnxUx23GWuV+fYcYLqYT+6HlmOrcz2uJfxHTTPOL/VsBs51nmOkpJXZuKCRjyq63MtJ9h7tdnmF3+PokLx1xxq3xOO167Ddfh3VQ+/RbO0DisPzCgR+uxEr56K6mV/mXTPnuFmBnWdjt+IqM3v+Nfl/MMae+v8N8ZdFEe/er7zLSfZa6zlBnvZBAxqhuH6DKXHzOvy9/f4au3MsN2Ydu2MjraXx71ahGzHRe3Y3SCf18waQUpRy8ej9lHt5L4wivcduHYFm9nXLttNiUsJPGjAtIcZ5hjKyBl9RQ6/W9+rrAPTHELSXy/iNnOs8ypLmLq+oVYLvyOd3JumNr3z9t2vO5vd7yGTSH6tfeZWX2GOY5SUl9bxtC284hJq5haeZI5X/vbmpKZhtGb3S3STUEZQFwnyihdmc6ImdOZsms7I2ZO5/jKdFwnynq9TmPZRlIej6b+N/ewP3k5NSwicf0y/y9gyuNM3rwIdj5GQdIsCp/OxdvSvbqmqPEMS7BTdU8KuRNmUfTvR/C1b9g8hfHbX2FU6B6KZ03jk+lLOP52MT7A82EOX0xPJjd2DscPWBm9fjURV7vAMEcQvuROLK5iGo7776y6ux7joQ2k/DYWZ9Z88pLnU/bFROL+tIGRkQAGEb97ncQ7nFQ9OIdPbpnD51m7cbVcqdxKRM7rTLjdTuVPp5E3K526EUu5eesKLN/VzFv0YuIzkzi3ZhYfRSbw6QM51FUDOGl4aTmfJSeTm7yEauYRv3YRYfgffhh6k53KWSnkJj/AyTO3EH2/lbpV88lLfoCTp5IY/9xSfx/NU4j700ZuaHyNouRkCp4uYWjmK8TN6DgsX2EfhE4hbvtGolre4ovp0yhY+hatCzeS8tspmOj83OBC/2an8EnSfI7vMTN6UxYjRwBYifrd60z4l3LK7kkmb8FLeO7IYtLKif5uVO2h7L572B+TwqFnirE+mUXMrd/RvhbpRFDNgbT3jxNlfP7LR7jtk918NnNe94NH6ERiDp4hpi0AtJZtpnD6Hxl+fyq+XUso21WOj3K+2phL9Gu3E27ZgmvRXCxVr1GQtZtzLUD1bs45luG/8ItgVBd1awFw4i71XzV7AdO4i90xTVvIyLhiKh9YR23bhLq77TtfVQkNANRR84dcxt8/BUsk1F2WljIIX1fE7H+DkGFWTKFOGn73S2qrr7IeR/t1RDBq8Z34di7h+BuF+ADXk5kMv/t1xiyMoObNVEYvtFL/5GNU7nVe7Kdl4ZXL7/WXV+U5gXJO/GYKER8tYlTCZsqOXez76HcqSJrrH5Tdf1hA3sr8S4Nsh2OG/S2Kkp+izuOk2WNl8M2xGLvKcRWVfFvFe6wQf/jMpWpHMWOXxGIJBWfb8fBW2PC6bJzadoRxKeDKK8HtgVN/OcK4nCSGhoJ7xmJG3VRM5fwtNFQB23I4/av9jEqLhbyLbWGZ1+k+MP1otb/+feupqwCOlVO64U5mLF/I8GcL245JZ+eGE2+ZDbfLhvv5bYxZuoL/Mcmg5nAao+41qH8yk5pjTmALJ3ctY2paKsa6EryN5TQUtW3/G9uoS38dyw8MOKwHJIKZ5kCuge/HxzF568s4Dn7G5K0vc/Tny/hHd4JISzmnH/wlp062ffbYcRNLVJSBMW07cxa3XzYfs9WgJXIY1NppaulkfaHRGFes240NuTEas8uGu7rjF1aGr8wmfnka1lFmWl0eQkLLMXV69e6lIXs+X/zFCRYrlqmLGffMdqY2zSF/na176wmNxogC7wHbxcHbY8NdC8NHR0JkJIbZyblTHU7QnpSX2fASiRFlwLELg5qX2jXzcWX7P7XWFl8aPODyY9bSiNsDeLZR+mAEcZnZpFZl0fDmOo6v2YmLWEbnPE/MvCSGWM20esBkL+xsx0GjE585krDQdp9DIwkJBaIiCTNPIf7Ls8S3q+L+IhITJRf7eaV9cGMkYR2OrafKRmt4NENCaQsgV+FspNljJszS1o7FyvDNJ5m7ud0ypcMwQoEZq0hc+wvC4yIJafGABYL6KXMBAnsOJGge4+0oYVM29Z8cpHR1Bgk560jYlN3NNJaX5lPluErbl9nx1ntxH3jg8qtfYGh1I/zLGCyh0NAxiLR0Xdf0g6t0p95OsyWWIaOA9o/0xi0lce0UXCvvoXBbOa2TMkjdf/sVV+Nz2nBXtV39lmZizP0FibffQlhcWvfW01KFtxaMsWMwUe7fDvMYhkSB97QdHE6aW6wMHmuGvHZXtFcqt9vxejqUx43BwE5D7aVXxM1lhVcZTDs7Zn7uvev5fO9mjB+tYPKbG0k6W0KRI4vEe72ULUjh1GEnYSvfZ9b/6rK
1BztXbaXbl89WEBVR19cTclfZB7eXH1hw9hhBHMe7OLkauxuGk2eOkdkUCRX/pcFdhTiXx949jyV3Op7N34yaNpKOvaw5ErqmgTWG1f5y3dHXGP7k2G7U7jjAuM4sJRZmcOlCFb1g0g1uKcZQ6Off2NpwPryYxp5wvX8qnKXQMYebu1b0aX95Oaqu3E/P7DNxZOzjXaDB4mBOH68ISBiaLAaFcfmXejskaiTHKSsiwSCwzFjN2Brg2HaE5NO3K62lx4muxYpkUS9jHJVRvy2dcThaJBU4qD8HwR7MYFbqPY7vqoHE3p/dkMPm3G4ipzaH2pBfjRgN33pXKczm9y0lK+gaiTz3HWVcs0S8sxjicQ3UngaBrBmFRYxjS2K7IY8f9dSzh06CpyEbzqRJcDgj/vhUcBv6EkJUQi4cQeneO+/J2UmvfTszvV9CUvRtXvRljnBVvXuGlAeCK+2Yb1RXvErN+Fa41O3HfuJD4x5Jwv5FJQ2+61Lib6j0ZTErfSHT9S5w96cQUFY3pVD7n2p1qpu9ZMbX2apMlACmFFQTcm5dTNCybCZnbiX7VwNdooyF7CY7SEijdTNGDBolrM7hlWQQmvDRXl1NzxnP1ulfjyufL+x6F9RkkfbSKMJy4d6bz6dLX+DLnFhLXfUDaqwZ4nHircvFedn548NZ7GLW2gLS1tC1XTsOm5ZzILgGP7crr8eRz6tViJqdvZNzHszjxxnKKwjcwYe27zAgH77HdlP1rOjVtE9O1K5fw5e+yiHnzA+It0Fz2Fl/c9tQVy+tWL+HLnGxi/lpAotmJ6+PX+OLXm3H19Oo7NJbovxUR3b7s46f46DcQ8/s1jIi2YvI4cRVsoezfC/E6n6NsRjYx7xcRbwFfYx2eglyae9gsrny+fCCdCS+s5ub9WYSFevGW7eD4rELc7YNZF/um7IFHCVmfwc2fZRDistHw10cpetY/x9TzJ1ic1KxcQlhOFjF//oDEYQY+ewmnfjmHcx/nU/n0W1jWbiD1V1ZMHi/NjipqGq++VglsgZzCGnT+/PnzfdoiUFlZSUxMzCVle4wbuqwTUG+ii4hcI3O9Z3tVr7Nx9VoLmhSW42ABJY+s7tHyIiLBTims74iCgohcbwI5hRWULxKKiEj/C5oUlojI9UgpLBER6RWlsEREZMAJmAASMlh3QiJyfQu2cTBg5kBGpN2B/e8f9nc3RET6zYi0Oy4r0xxIN4zPeIL63AO0NgVGQBMR6Ushg82Mz3jisnLNgXSDNXkSP9y/m8gf3x10t3EiIr0VMthM5I/v5of7d2NNntTf3emRQU1NTX3+p0xqamoYO3YsJlPAxC8RkYDj8/n45ptvurVsTU0NI0eOvMY9ulS/pbAUPEREumYymZTCEhGRgWdQRUVFn6ew2rNYLAwdOhTDMBg0aFB/dkVEpF+dP38er9fLuXPncLlcV6/Qz/ptDqSvc3UiIgPZdTUHEiiPD4uIDBSaAxERkaDQb2+iB8ob8CIiA8V18ya6UlgiIt8tpbBERCQoKICIiEivaA5ERGSA0ByIiIj0iuZAREQkKCiFJSIyQCiFJSIivaIUloiIBAWlsEREBgilsEREpFeUwhIRkaCgFJaIyAChFJaIiPSKUlgiIhIUFEBERKRXNAciIjJAaA5ERER6RXMgIiISFJTCEhEZIJTCEhGRXlEKS0REgoJSWCIiA4RSWCIi0itKYYmISFBQCktEZIBQCktERHpFKSwREQkKCiAiItIrmgMRERkgNAciIiK9ojkQEREJCkphiYgMEEphiYhIryiFJSIiQWFQRUXF+f7uhIiIBJ9BTU1NfR5AampqGDlyZF83KyIyYPXHuKo5EBGRAUJzICIiEhT0GK+IyAChx3hFRKRXlMISEZGgoAAiIiK9ojkQEZEBoq/H1f8PW5ZKgLGiiMoAAAAASUVORK5CYII="},10508(e,t,n){n.d(t,{A:()=>i});let i=n.p+"assets/images/appointment_mode-728f64e4450bbf4d3c01d3bee46d9436.png"},840819(e,t,n){n.d(t,{A:()=>i});let i=n.p+"assets/images/appointment_participants-077d2b831194fd4a8ee5388641176674.png"},427594(e,t,n){n.d(t,{A:()=>i});let i=n.p+"assets/images/availability-62f5f694b85ae0d38e13f20797896093.png"},923137(e,t,n){n.d(t,{A:()=>i});let i=n.p+"assets/images/availability_mode_2-a4db73c76419150491ff7ca5d41159fb.png"},375424(e,t,n){n.d(t,{A:()=>i});let i="data:image/png;base64,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"},610078(e,t,n){n.d(t,{A:()=>i});let i=n.p+"assets/images/flagged-appointment-c11d4ea8b9205c244728f2622c6a3a3e.png"},167773(e,t,n){n.d(t,{A:()=>i});let i=n.p+"assets/images/immediate_availablity-b8357677b67957b5d7f60fd02fcf8999.png"},856857(e,t,n){n.d(t,{A:()=>i});let i=n.p+"assets/images/setting_menu-0b25d4d1eb83cebf3fe22ec86308cc3d.png"},28453(e,t,n){n.d(t,{R:()=>o,x:()=>d});var i=n(296540);let r={},s=i.createContext(r);function o(e){let t=i.useContext(s);return i.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),i.createElement(s.Provider,{value:t},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.