@mediquo/elements 0.8.2 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -1
- package/dist/chunks/{api-chat-client-CJ1EGJe3.js → api-chat-client-DLpFzml6.js} +1 -1
- package/dist/chunks/{apple-pay-outcomes-B1LrUXHR.js → apple-pay-outcomes-B2Y333xu.js} +1 -1
- package/dist/chunks/appointment-card-skeleton-hIRGcKmO.js +1 -0
- package/dist/chunks/appointment-details-BriSqXWj.js +1 -0
- package/dist/chunks/ca_ES-Cvua2ilS.js +1 -0
- package/dist/chunks/chunk-2TKJJNS7-BGwxtEg7.js +1 -0
- package/dist/chunks/de_DE-B3TduWuH.js +1 -0
- package/dist/chunks/documentation-view-DjNSPW_K.js +1 -0
- package/dist/chunks/en_US-f0buppez.js +1 -0
- package/dist/chunks/{index-uHvVQMNc.js → index-B7uU0VJH.js} +1 -1
- package/dist/chunks/{index-D6Hg-beW.js → index-CZOI1VRs.js} +1 -1
- package/dist/chunks/{index-iaTXVzFa.js → index-DEEAEB_4.js} +1 -1
- package/dist/chunks/{mq-layout-E5mKSz4A.js → mq-layout-CVfDDjsX.js} +1 -1
- package/dist/chunks/next-appointment-card-Bc65OZ1_.d.ts +61 -0
- package/dist/chunks/next-appointment-card-DDzJ1hMB.js +1 -0
- package/dist/chunks/pt_PT-DQenaZN8.js +1 -0
- package/dist/chunks/{refund-cancel-policy-CcsJ-pMx.js → refund-cancel-policy-QG_OE6g5.js} +1 -1
- package/dist/chunks/{telemetry-client-7fvNqUSU.js → telemetry-client-BdPx4SXu.js} +1 -1
- package/dist/env.js +1 -1
- package/dist/i18n.js +1 -1
- package/dist/mq-api-client-provider.js +1 -1
- package/dist/mq-apple-pay-checkout.js +1 -1
- package/dist/mq-appointment-checkout.js +1 -1
- package/dist/mq-appointment-documentation.js +1 -1
- package/dist/mq-chat-room.js +1 -1
- package/dist/mq-checkout.js +1 -1
- package/dist/mq-dashboard.js +1 -1
- package/dist/mq-documents.d.ts +4 -8
- package/dist/mq-documents.js +1 -1
- package/dist/mq-google-pay-checkout.js +1 -1
- package/dist/mq-immediate-videocall-checkout.js +1 -1
- package/dist/mq-my-appointments.d.ts +5 -3
- package/dist/mq-my-appointments.js +1 -1
- package/dist/mq-next-appointments.d.ts +8 -47
- package/dist/mq-next-appointments.js +1 -1
- package/dist/mq-payment-poller.js +1 -1
- package/dist/mq-professional-presence-sync.js +1 -1
- package/dist/mq-recent-documents.js +1 -1
- package/dist/mq-schedule-success.js +2 -2
- package/dist/mq-schedule.d.ts +13 -1
- package/dist/mq-schedule.js +1 -1
- package/dist/mq-support-chat.d.ts +1 -0
- package/dist/mq-support-chat.js +1 -1
- package/dist/mq-terms-and-conditions.js +1 -1
- package/dist/mq-videocall.js +1 -1
- package/dist/react/mq-api-client-provider.js +1 -1
- package/dist/react/mq-apple-pay-checkout.js +1 -1
- package/dist/react/mq-appointment-checkout.js +1 -1
- package/dist/react/mq-appointment-documentation.js +1 -1
- package/dist/react/mq-chat-room.js +1 -1
- package/dist/react/mq-checkout.js +1 -1
- package/dist/react/mq-dashboard.js +1 -1
- package/dist/react/mq-documents-page.d.ts +0 -1
- package/dist/react/mq-documents-page.js +1 -1
- package/dist/react/mq-documents.d.ts +0 -1
- package/dist/react/mq-documents.js +1 -1
- package/dist/react/mq-google-pay-checkout.js +1 -1
- package/dist/react/mq-immediate-videocall-checkout.js +1 -1
- package/dist/react/mq-my-appointments.d.ts +2 -1
- package/dist/react/mq-my-appointments.js +1 -1
- package/dist/react/mq-next-appointments.d.ts +2 -0
- package/dist/react/mq-next-appointments.js +1 -1
- package/dist/react/mq-payment-poller.js +1 -1
- package/dist/react/mq-professional-presence-sync.js +1 -1
- package/dist/react/mq-recent-documents.js +1 -1
- package/dist/react/mq-schedule-success.js +1 -1
- package/dist/react/mq-schedule.d.ts +4 -0
- package/dist/react/mq-schedule.js +1 -1
- package/dist/react/mq-support-chat.d.ts +3 -0
- package/dist/react/mq-support-chat.js +1 -1
- package/dist/react/mq-terms-and-conditions.js +1 -1
- package/dist/react/mq-videocall.js +1 -1
- package/dist/theme.d.ts +1 -0
- package/dist/theme.js +1 -1
- package/dist/ui/icons/alert-circle-icon.js +1 -1
- package/dist/ui/icons/annotation-question-icon.d.ts +1 -1
- package/dist/ui/icons/annotation-question-icon.js +1 -1
- package/dist/ui/icons/arrow-narrow-left-icon.js +1 -1
- package/dist/ui/icons/arrow-right-icon.js +1 -1
- package/dist/ui/icons/briefcase-icon.d.ts +1 -1
- package/dist/ui/icons/briefcase-icon.js +1 -1
- package/dist/ui/icons/calendar-icon.d.ts +1 -1
- package/dist/ui/icons/calendar-icon.js +1 -1
- package/dist/ui/icons/chat-bubble-icon.d.ts +1 -1
- package/dist/ui/icons/chat-bubble-icon.js +1 -1
- package/dist/ui/icons/check-double-icon.js +1 -1
- package/dist/ui/icons/check-icon.js +1 -1
- package/dist/ui/icons/chevron-down-icon.js +1 -1
- package/dist/ui/icons/chevron-left-icon.js +1 -1
- package/dist/ui/icons/chevron-right-icon.js +1 -1
- package/dist/ui/icons/clock-icon.d.ts +1 -1
- package/dist/ui/icons/clock-icon.js +1 -1
- package/dist/ui/icons/dots-horizontal-icon.js +1 -1
- package/dist/ui/icons/download-02-icon.d.ts +1 -1
- package/dist/ui/icons/download-02-icon.js +1 -1
- package/dist/ui/icons/download-icon.d.ts +1 -1
- package/dist/ui/icons/download-icon.js +1 -1
- package/dist/ui/icons/file-icon.d.ts +1 -1
- package/dist/ui/icons/file-icon.js +1 -1
- package/dist/ui/icons/heartbeat-icon.js +1 -1
- package/dist/ui/icons/info-circle-outine-icon.d.ts +1 -1
- package/dist/ui/icons/info-circle-outine-icon.js +1 -1
- package/dist/ui/icons/message-bubble-icon.d.ts +1 -1
- package/dist/ui/icons/message-bubble-icon.js +1 -1
- package/dist/ui/icons/message-square-icon.d.ts +1 -1
- package/dist/ui/icons/message-square-icon.js +1 -1
- package/dist/ui/icons/mic-icon.d.ts +1 -1
- package/dist/ui/icons/mic-icon.js +1 -1
- package/dist/ui/icons/mic-off-icon.d.ts +1 -1
- package/dist/ui/icons/mic-off-icon.js +1 -1
- package/dist/ui/icons/phone-icon.d.ts +1 -1
- package/dist/ui/icons/phone-icon.js +1 -1
- package/dist/ui/icons/tag-icon.d.ts +1 -1
- package/dist/ui/icons/tag-icon.js +1 -1
- package/dist/ui/icons/time-left-icon.js +1 -1
- package/dist/ui/icons/types.d.ts +2 -1
- package/dist/ui/icons/types.js +1 -1
- package/dist/ui/icons/upload-icon.d.ts +1 -1
- package/dist/ui/icons/upload-icon.js +1 -1
- package/dist/ui/icons/video-icon.d.ts +1 -1
- package/dist/ui/icons/video-icon.js +1 -1
- package/dist/ui/icons/video-off-icon.d.ts +1 -1
- package/dist/ui/icons/video-off-icon.js +1 -1
- package/dist/ui/icons/x-icon.d.ts +1 -1
- package/dist/ui/icons/x-icon.js +1 -1
- package/dist/ui/mq-callout.js +1 -1
- package/dist/ui/mq-dialog.js +1 -1
- package/dist/ui/mq-input.d.ts +1 -1
- package/dist/ui/mq-select.d.ts +1 -1
- package/dist/ui/mq-tabs.d.ts +27 -7
- package/dist/ui/mq-tabs.js +79 -1
- package/dist/ui/mq-text-button.js +1 -1
- package/dist/ui/mq-textarea.d.ts +1 -1
- package/dist/ui/mq-unread-badge.js +1 -1
- package/package.json +2 -1
- package/dist/chunks/appointment-card-skeleton-D8gypuKh.js +0 -1
- package/dist/chunks/appointment-details-DXLBQnPN.js +0 -1
- package/dist/chunks/ca_ES-nttMFJzr.js +0 -1
- package/dist/chunks/chunk-HN62IQ7S-xbkIy7k_.js +0 -1
- package/dist/chunks/de_DE-CrwfSJnS.js +0 -1
- package/dist/chunks/documentation-view-BbMbGneD.js +0 -1
- package/dist/chunks/en_US-BslWF9nj.js +0 -1
- package/dist/chunks/pt_PT-CFbbWowX.js +0 -1
- package/dist/ui/icons/check-circle-icon.d.ts +0 -5
- package/dist/ui/icons/check-circle-icon.js +0 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
export { A as AppointmentDetails } from './chunks/appointment-details-CVEDe_k0.js';
|
|
2
2
|
import * as lit_html from 'lit-html';
|
|
3
3
|
import * as lit from 'lit';
|
|
4
|
-
import { LitElement } from 'lit';
|
|
5
|
-
import { z } from 'zod';
|
|
4
|
+
import { LitElement, PropertyValues } from 'lit';
|
|
6
5
|
import { MqTabsSelectEvent } from './ui/mq-tabs.js';
|
|
6
|
+
import { z } from 'zod';
|
|
7
7
|
import { M as MediquoApiChatClient } from './chunks/index.d-XSe7Hy-Q.js';
|
|
8
8
|
import './chunks/appointment-card-skeleton-C2Sim4nR.js';
|
|
9
9
|
import './ui/mq-button.js';
|
|
10
|
-
import './
|
|
10
|
+
import './chunks/next-appointment-card-Bc65OZ1_.js';
|
|
11
11
|
export { P as ProfessionalOverview } from './chunks/professional-overview-mO3tuMuH.js';
|
|
12
12
|
import './chunks/appointment.model.d-BWwBLaEL.js';
|
|
13
13
|
import 'axios';
|
|
@@ -63,6 +63,8 @@ declare global {
|
|
|
63
63
|
declare class MqMyAppointments extends LitElement {
|
|
64
64
|
static styles: lit.CSSResult;
|
|
65
65
|
tab: MqMyAppointmentsTabs;
|
|
66
|
+
locale?: string;
|
|
67
|
+
protected willUpdate(changed: PropertyValues<this>): void;
|
|
66
68
|
handleSelect(event: MqTabsSelectEvent): void;
|
|
67
69
|
render(): lit_html.TemplateResult<1>;
|
|
68
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{A as AppointmentDetails}from"./chunks/appointment-details-DXLBQnPN.js";import{_ as t,c as e}from"./chunks/custom-element-D2ziPxYE.js";import{m as i}from"./chunks/runtime-Bg1WXVCx.js";import{l as s}from"./chunks/localized-decorator-BlOuLhym.js";import{a as n,i as o,x as a}from"./chunks/lit-element-DiWJYFwC.js";import{n as r}from"./chunks/property-scuRaFcM.js";import{e as p}from"./chunks/external-CJj32K_p.js";import{MqHomeEvent as c}from"./events.js";import"./ui/mq-tabs.js";import{c as m}from"./chunks/consume-CovVqBjI.js";import{A as l}from"./chunks/api-client-context-V1UAGtKW.js";import{a as d}from"./chunks/api-chat-client-CJ1EGJe3.js";import"./chunks/appointment-card-skeleton-D8gypuKh.js";import"./ui/mq-button.js";import{Q as u}from"./chunks/query-controller-BlO1Ax65.js";import{a as h}from"./chunks/action-unavailable-message-BIgsXk9u.js";import"./ui/mq-page-title.js";export{P as ProfessionalOverview}from"./chunks/professional-overview-C4H_znIJ.js";import"./chunks/chunk-HN62IQ7S-xbkIy7k_.js";import"./chunks/parseISO-Dj3qSTG8.js";import"./chunks/format-CRFiCNHw.js";import"./chunks/addSeconds-ofMnxlgT.js";import"./chunks/class-map-Co76I6aw.js";import"./chunks/directive-2EDmOukv.js";import"./i18n.js";import"./chunks/chunk-4FFT6DC2-CVWibomC.js";import"./ui/icons/briefcase-icon.js";import"./ui/icons/types.js";import"./ui/icons/calendar-icon.js";import"./ui/icons/clock-icon.js";import"./ui/icons/message-bubble-icon.js";import"./ui/icons/phone-icon.js";import"./chunks/context-consumer-ESdICVAb.js";import"./chunks/context-request-event-Dfydf1ub.js";import"./chunks/create-context-DqP79qjF.js";import"./chunks/isBefore-CPpTogxo.js";import"./env.js";import"./chunks/get-organization-setup-query-Dr1cXnHl.js";import"./chunks/chunk-6CCJWPGL-TiaqZaPV.js";import"./chunks/telemetry-client-7fvNqUSU.js";import"./chunks/get-schedule-services-query-Fzvb9ug9.js";import"./chunks/chunk-Y4EKUX25-QqMl3eiq.js";import"./chunks/state-LQivXIgA.js";import"./ui/mq-card.js";import"./chunks/chunk-S5RWG6G2-DPesx3Od.js";import"./mq-chat-room.js";import"./chunks/provide-BwI4DDGF.js";import"./theme.js";import"./ui/icons/x-icon.js";import"./ui/mq-avatar.js";import"./ui/mq-skeleton.js";import"./chunks/style-map-CIdqdn7C.js";import"./chunks/chunk-BUV4MGML-CkhBbfUu.js";import"./chunks/if-defined-BYeVdwgd.js";import"./ui/icons/chevron-left-icon.js";import"./chunks/query-CeeutdfT.js";import"./ui/icons/check-double-icon.js";import"./ui/icons/check-icon.js";import"./chunks/chunk-YTQUGGS3-DmCGIoFy.js";import"./chunks/chunk-RCFIJTXZ-C6Ir0-sM.js";import"./chunks/mutation-controller-CR2qcqhH.js";import"./chunks/query-Cjvi4_dT.js";import"./ui/mq-floating-bubble.js";import"./ui/icons/video-icon.js";import"./ui/mq-unread-badge.js";import"./chunks/refund-cancel-policy-CcsJ-pMx.js";import"./ui/mq-toast.js";import"./chunks/price-DU3YLTpk.js";import"./ui/mq-dialog.js";import"./ui/icons/arrow-narrow-left-icon.js";import"./ui/icons/chevron-down-icon.js";import"./ui/mq-text-button.js";const v=p(["next","history"]).enum;class MqMyAppointmentsSelectEvent extends Event{static{this.eventName="ontabchange"}constructor(t){super(MqMyAppointmentsSelectEvent.eventName,{bubbles:!0,composed:!0}),this.value=t}}let g=class EmptyState extends n{static{this.styles=o`.container{border-radius:var(--border-radius-md);background-color:var(--color-neutrals-background-weak);padding:var(--sp-10) var(--sp-6)}.card{border-radius:var(--border-radius-md);max-width:512px;margin:0 auto;background-color:var(--color-neutrals-background-extraWeak);padding:var(--sp-6);display:flex;flex-direction:column;align-items:center;gap:var(--sp-3)}.card>*{max-width:323px;margin:0 auto}.title{font-family:var(--font-body);font-size:var(--text-lg);line-height:var(--text-lg--line-height);font-weight:var(--font-weight-bold);color:var(--color-neutrals-text-default);margin:0}.description{font-family:var(--font-body);font-size:var(--text-xs);line-height:var(--text-xs--line-height);font-weight:var(--font-weight-normal);text-align:center;color:var(--color-neutrals-text-default);margin:0}@media (min-width:768px){.container{padding:var(--sp-6)}mq-button{max-width:323px}}`}handleRequestAppointment(){this.dispatchEvent(new CustomEvent("request-appointment",{bubbles:!0,composed:!0}))}render(){return a`<div class="container"><div class="card">${function({color:t="currentColor"}){return a`<svg width="31" height="32" viewBox="0 0 31 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M29.6 2.4H23.2V0H21.6V2.4H18.4V0H16.8V2.4H13.6V0H12V2.4H8.8V0H7.2V2.4H0.8C0.587827 2.4 0.384344 2.48429 0.234315 2.63431C0.0842855 2.78434 0 2.98783 0 3.2V31.2C0 31.4122 0.0842855 31.6157 0.234315 31.7657C0.384344 31.9157 0.587827 32 0.8 32H29.6C29.8122 32 30.0157 31.9157 30.1657 31.7657C30.3157 31.6157 30.4 31.4122 30.4 31.2V3.2C30.4 2.98783 30.3157 2.78434 30.1657 2.63431C30.0157 2.48429 29.8122 2.4 29.6 2.4ZM28.8 30.4H1.6V10.4H27.2V8.8H1.6V4H7.2V7.2H8.8V4H12V7.2H13.6V4H16.8V7.2H18.4V4H21.6V7.2H23.2V4H28.8V30.4ZM3.2 19.2H9.6V12.8H3.2V19.2ZM4.8 14.4H8V17.6H4.8V14.4ZM20.8 19.2H27.2V12.8H20.8V19.2ZM22.4 14.4H25.6V17.6H22.4V14.4ZM12 19.2H18.4V12.8H12V19.2ZM13.6 14.4H16.8V17.6H13.6V14.4ZM3.2 28H9.6V21.6H3.2V28ZM4.8 23.2H8V26.4H4.8V23.2ZM20.8 28H27.2V21.6H20.8V28ZM22.4 23.2H25.6V26.4H22.4V23.2ZM12 28H18.4V21.6H12V28ZM13.6 23.2H16.8V26.4H13.6V23.2Z" fill="${t}"/></svg>`}({color:"var(--color-primary)"})}<p class="title">${this.title}</p><p class="description">${this.description}</p><mq-button variant="primary" size="md" fullwidth @click="${this.handleRequestAppointment}">${i("Pedir cita")}</mq-button></div></div>`}};t([r({type:String})],g.prototype,"title",void 0),t([r({type:String})],g.prototype,"description",void 0),g=t([e("empty-state")],g);const b=[d.pending,d.accepted],x=o`.appointments-list{display:grid;grid-template-columns:1fr;gap:var(--sp-6);margin-bottom:var(--sp-6)}@media (min-width:768px){.appointments-list{grid-template-columns:repeat(2,1fr)}}`;let f=class NextAppointmentsTab extends n{constructor(){super(...arguments),this.getAppointmentsQuery=new u(this,()=>h(this.apiClient,{status:b,order:{field:"starts_at",direction:"asc"}}))}static{this.styles=x}render(){return this.getAppointmentsQuery.render({complete:t=>a`${t.data.length>0?a`<div class="appointments-list">${t.data.map(t=>a`<appointment-card .appointmentResource="${t}" .specialtyId="${t.speciality?.id}"></appointment-card>`)}</div>`:a`<empty-state title="${i("No tienes próximas citas")}" description="${i("Agenda una consulta médica cuando la necesites. Aquí verás todos los detalles y podrás gestionar tus próximas citas.")}"></empty-state>`}`,pending:()=>a`<div class="appointments-list"><appointment-card-skeleton></appointment-card-skeleton><appointment-card-skeleton></appointment-card-skeleton><appointment-card-skeleton></appointment-card-skeleton></div>`})}};t([m({context:l,subscribe:!0})],f.prototype,"apiClient",void 0),f=t([s(),e("next-appointments-tab")],f);const k=[d.finished,d.reporting];let y=class AppointmentsHistoryTab extends n{constructor(){super(...arguments),this.getAppointmentsQuery=new u(this,()=>h(this.apiClient,{status:k,order:{field:"starts_at",direction:"desc"}}))}static{this.styles=o`.appointments-list{display:grid;grid-template-columns:1fr;gap:var(--sp-6);margin-bottom:var(--sp-6)}@media (min-width:768px){.appointments-list{grid-template-columns:repeat(2,1fr)}}`}render(){return this.getAppointmentsQuery.render({complete:t=>a`${t.data.length>0?a`<div class="appointments-list">${t.data.map(t=>a`<appointment-card .appointmentResource="${t}" .specialtyId="${t.speciality?.id}" variant="history"></appointment-card>`)}</div>`:a`<empty-state title="${i("No tienes citas en el historial")}" description="${i("Aquí verás todas las citas que has tenido. Puedes acceder a los documentos de cada consulta y reagendar una cita si es necesario.")}"></empty-state>`}`,pending:()=>a`<div class="appointments-list"><appointment-card-skeleton></appointment-card-skeleton><appointment-card-skeleton></appointment-card-skeleton><appointment-card-skeleton></appointment-card-skeleton></div>`})}};t([m({context:l,subscribe:!0})],y.prototype,"apiClient",void 0),y=t([s(),e("appointments-history-tab")],y);const j=o`.container{display:flex;flex-direction:column;gap:var(--size-3)}@media (min-width:768px){mq-tabs-list{max-width:435px}}`;let q=class MqMyAppointments extends n{constructor(){super(...arguments),this.tab=v.next}static{this.styles=j}handleSelect(t){this.dispatchEvent(new MqMyAppointmentsSelectEvent(t.value))}render(){return a`<div class="container"><mq-page-title .title="${i("Mis citas")}" @mq-back="${t=>{t.stopPropagation(),this.dispatchEvent(new c)}}"></mq-page-title><mq-tabs .value="${this.tab}" @onvaluechange="${this.handleSelect}"><mq-tabs-list><mq-tabs-trigger value="${v.next}">${i("Próximas citas")}</mq-tabs-trigger><mq-tabs-trigger value="${v.history}">${i("Histórico")}</mq-tabs-trigger></mq-tabs-list><mq-tabs-content value="${v.next}"><next-appointments-tab></next-appointments-tab></mq-tabs-content><mq-tabs-content value="${v.history}"><appointments-history-tab></appointments-history-tab></mq-tabs-content></mq-tabs></div>`}};t([r({type:String,reflect:!0})],q.prototype,"tab",void 0),q=t([s(),e("mq-my-appointments")],q);const H=o`:host{display:block}.request-appointment-cta{box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:var(--sp-12) var(--sp-4);background:var(--color-card);gap:var(--sp-4)}.title-body{display:flex;flex-direction:column;gap:var(--sp-2);flex:1}.title{font-family:var(--font-titles);font-size:var(--text-2xl);line-height:var(--text-2xl--line-height);font-weight:var(--font-weight-bold);color:var(--color-neutrals-text-default);margin:0;text-align:center}.subtitle{font-family:var(--font-body);font-size:var(--text-base);line-height:var(--text-base--line-height);font-weight:var(--font-weight-normal);color:var(--color-neutrals-text-default);margin:0;display:none}mq-button{width:100%}.button-text-desktop{display:none}.button-text-mobile{display:inline}@media (min-width:768px){.request-appointment-cta{flex-direction:row;padding:var(--sp-12) var(--sp-20);gap:var(--sp-2)}.title-body{align-items:flex-start;flex:1;max-width:843px}.title{font-size:var(--text-3xl);line-height:var(--text-3xl--line-height);font-weight:var(--font-weight-extrabold);text-align:left}.subtitle{display:block}mq-button{width:auto;flex-shrink:0;--button-height-md:var(--button-height-lg);--text-sm:var(--text-base);--text-sm--line-height:var(--text-base--line-height)}.button-text-desktop{display:inline}.button-text-mobile{display:none}}`;class RequestAppointmentEvent extends Event{static{this.eventName="request-appointment"}constructor(){super(RequestAppointmentEvent.eventName,{bubbles:!0,composed:!0})}}let V=class RequestAppointmentCta extends n{static{this.styles=H}handleRequestAppointment(){this.dispatchEvent(new RequestAppointmentEvent)}render(){return a`<div class="request-appointment-cta"><div class="title-body"><h2 class="title">${i("Nueva cita de especialidades digitales")}</h2><p class="subtitle">${i("Realiza la búsqueda en tu cuadro médico digital")}</p></div><mq-button variant="primary" size="md" fullwidth @click="${this.handleRequestAppointment}"><span class="button-text-mobile">${i("Pedir cita")}</span> <span class="button-text-desktop">${i("Pedir una nueva cita")}</span></mq-button></div>`}};V=t([s(),e("request-appointment-cta")],V);export{q as MqMyAppointments,MqMyAppointmentsSelectEvent,V as RequestAppointmentCta,RequestAppointmentEvent};
|
|
1
|
+
import{isValidLocale as t,setLocale as e,initLocalization as i}from"./i18n.js";export{A as AppointmentDetails}from"./chunks/appointment-details-BriSqXWj.js";import{_ as s,c as n}from"./chunks/custom-element-D2ziPxYE.js";import{m as o}from"./chunks/runtime-Bg1WXVCx.js";import{l as a}from"./chunks/localized-decorator-BlOuLhym.js";import{a as r,i as p,x as c}from"./chunks/lit-element-DiWJYFwC.js";import{n as l}from"./chunks/property-scuRaFcM.js";import{e as m}from"./chunks/external-CJj32K_p.js";import"./ui/mq-tabs.js";import{c as d}from"./chunks/consume-CovVqBjI.js";import{A as u}from"./chunks/api-client-context-V1UAGtKW.js";import{a as h}from"./chunks/api-chat-client-DLpFzml6.js";import"./chunks/appointment-card-skeleton-hIRGcKmO.js";import"./ui/mq-button.js";import"./chunks/next-appointment-card-DDzJ1hMB.js";import{Q as v}from"./chunks/query-controller-BlO1Ax65.js";import{a as b}from"./chunks/action-unavailable-message-BIgsXk9u.js";export{P as ProfessionalOverview}from"./chunks/professional-overview-C4H_znIJ.js";import"./chunks/chunk-4FFT6DC2-CVWibomC.js";import"./chunks/chunk-2TKJJNS7-BGwxtEg7.js";import"./chunks/parseISO-Dj3qSTG8.js";import"./chunks/format-CRFiCNHw.js";import"./chunks/addSeconds-ofMnxlgT.js";import"./chunks/class-map-Co76I6aw.js";import"./chunks/directive-2EDmOukv.js";import"./ui/icons/briefcase-icon.js";import"./chunks/if-defined-BYeVdwgd.js";import"./ui/icons/types.js";import"./ui/icons/calendar-icon.js";import"./ui/icons/clock-icon.js";import"./ui/icons/message-bubble-icon.js";import"./ui/icons/phone-icon.js";import"./chunks/context-consumer-ESdICVAb.js";import"./chunks/context-request-event-Dfydf1ub.js";import"./chunks/create-context-DqP79qjF.js";import"./chunks/isBefore-CPpTogxo.js";import"./env.js";import"./chunks/get-organization-setup-query-Dr1cXnHl.js";import"./chunks/chunk-6CCJWPGL-TiaqZaPV.js";import"./chunks/telemetry-client-BdPx4SXu.js";import"./chunks/get-schedule-services-query-Fzvb9ug9.js";import"./chunks/chunk-Y4EKUX25-QqMl3eiq.js";import"./chunks/state-LQivXIgA.js";import"./ui/mq-card.js";import"./chunks/chunk-S5RWG6G2-DPesx3Od.js";import"./mq-chat-room.js";import"./chunks/provide-BwI4DDGF.js";import"./theme.js";import"./ui/icons/x-icon.js";import"./ui/mq-avatar.js";import"./ui/mq-skeleton.js";import"./chunks/style-map-CIdqdn7C.js";import"./chunks/chunk-BUV4MGML-CkhBbfUu.js";import"./ui/icons/chevron-left-icon.js";import"./chunks/query-CeeutdfT.js";import"./events.js";import"./ui/icons/check-double-icon.js";import"./ui/icons/check-icon.js";import"./chunks/chunk-YTQUGGS3-DmCGIoFy.js";import"./chunks/chunk-RCFIJTXZ-C6Ir0-sM.js";import"./chunks/mutation-controller-CR2qcqhH.js";import"./ui/mq-floating-bubble.js";import"./ui/icons/video-icon.js";import"./ui/mq-unread-badge.js";import"./chunks/refund-cancel-policy-QG_OE6g5.js";import"./ui/mq-toast.js";import"./ui/icons/dots-horizontal-icon.js";import"./chunks/query-Cjvi4_dT.js";import"./chunks/price-DU3YLTpk.js";import"./ui/mq-dialog.js";import"./ui/icons/chevron-down-icon.js";import"./ui/mq-text-button.js";const g=m(["next","history"]).enum;class MqMyAppointmentsSelectEvent extends Event{static{this.eventName="ontabchange"}constructor(t){super(MqMyAppointmentsSelectEvent.eventName,{bubbles:!0,composed:!0}),this.value=t}}let x=class EmptyState extends r{static{this.styles=p`.container{border-radius:var(--border-radius-md);background-color:var(--color-neutrals-background-weak);padding:var(--sp-10) var(--sp-6)}.card{border-radius:var(--border-radius-md);max-width:512px;margin:0 auto;background-color:var(--color-neutrals-background-extraWeak);padding:var(--sp-6);display:flex;flex-direction:column;align-items:center;gap:var(--sp-3)}.card>*{max-width:323px;margin:0 auto}.title{font-family:var(--font-body);font-size:var(--text-lg);line-height:var(--text-lg--line-height);font-weight:var(--font-weight-bold);color:var(--color-neutrals-text-default);margin:0}.description{font-family:var(--font-body);font-size:var(--text-xs);line-height:var(--text-xs--line-height);font-weight:var(--font-weight-normal);text-align:center;color:var(--color-neutrals-text-default);margin:0}@media (min-width:768px){.container{padding:var(--sp-6)}mq-button{max-width:323px}}`}handleRequestAppointment(){this.dispatchEvent(new CustomEvent("request-appointment",{bubbles:!0,composed:!0}))}render(){return c`<div class="container"><div class="card">${function({color:t="currentColor"}){return c`<svg width="31" height="32" viewBox="0 0 31 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M29.6 2.4H23.2V0H21.6V2.4H18.4V0H16.8V2.4H13.6V0H12V2.4H8.8V0H7.2V2.4H0.8C0.587827 2.4 0.384344 2.48429 0.234315 2.63431C0.0842855 2.78434 0 2.98783 0 3.2V31.2C0 31.4122 0.0842855 31.6157 0.234315 31.7657C0.384344 31.9157 0.587827 32 0.8 32H29.6C29.8122 32 30.0157 31.9157 30.1657 31.7657C30.3157 31.6157 30.4 31.4122 30.4 31.2V3.2C30.4 2.98783 30.3157 2.78434 30.1657 2.63431C30.0157 2.48429 29.8122 2.4 29.6 2.4ZM28.8 30.4H1.6V10.4H27.2V8.8H1.6V4H7.2V7.2H8.8V4H12V7.2H13.6V4H16.8V7.2H18.4V4H21.6V7.2H23.2V4H28.8V30.4ZM3.2 19.2H9.6V12.8H3.2V19.2ZM4.8 14.4H8V17.6H4.8V14.4ZM20.8 19.2H27.2V12.8H20.8V19.2ZM22.4 14.4H25.6V17.6H22.4V14.4ZM12 19.2H18.4V12.8H12V19.2ZM13.6 14.4H16.8V17.6H13.6V14.4ZM3.2 28H9.6V21.6H3.2V28ZM4.8 23.2H8V26.4H4.8V23.2ZM20.8 28H27.2V21.6H20.8V28ZM22.4 23.2H25.6V26.4H22.4V23.2ZM12 28H18.4V21.6H12V28ZM13.6 23.2H16.8V26.4H13.6V23.2Z" fill="${t}"/></svg>`}({color:"var(--color-primary)"})}<p class="title">${this.title}</p><p class="description">${this.description}</p><mq-button variant="primary" size="md" fullwidth @click="${this.handleRequestAppointment}">${o("Pedir cita")}</mq-button></div></div>`}};s([l({type:String})],x.prototype,"title",void 0),s([l({type:String})],x.prototype,"description",void 0),x=s([n("empty-state")],x);const f=[h.pending,h.accepted],k=p`.appointments-list{display:grid;grid-template-columns:1fr;align-items:start;gap:var(--sp-6);margin-bottom:var(--sp-6)}@media (min-width:768px){.appointments-list{grid-template-columns:repeat(2,1fr)}}.card{display:flex;flex-direction:column;min-width:0;box-sizing:border-box;background-color:var(--color-card,#fff);border:1px solid var(--color-border-subtle,#edecf1);border-radius:12px;padding:var(--sp-6)}`;let y=class NextAppointmentsTab extends r{constructor(){super(...arguments),this.getAppointmentsQuery=new v(this,()=>b(this.apiClient,{status:f,order:{field:"starts_at",direction:"asc"}}))}static{this.styles=k}render(){return this.getAppointmentsQuery.render({complete:t=>c`${t.data.length>0?c`<div class="appointments-list">${t.data.map(t=>c`<div class="card"><next-appointment-card .appointmentResource="${t}"></next-appointment-card></div>`)}</div>`:c`<empty-state title="${o("No tienes próximas citas")}" description="${o("Agenda una consulta médica cuando la necesites. Aquí verás todos los detalles y podrás gestionar tus próximas citas.")}"></empty-state>`}`,pending:()=>c`<div class="appointments-list"><appointment-card-skeleton></appointment-card-skeleton><appointment-card-skeleton></appointment-card-skeleton><appointment-card-skeleton></appointment-card-skeleton></div>`})}};s([d({context:u,subscribe:!0})],y.prototype,"apiClient",void 0),y=s([a(),n("next-appointments-tab")],y);const j=[h.finished,h.reporting];let q=class AppointmentsHistoryTab extends r{constructor(){super(...arguments),this.getAppointmentsQuery=new v(this,()=>b(this.apiClient,{status:j,order:{field:"starts_at",direction:"desc"}}))}static{this.styles=p`.appointments-list{display:grid;grid-template-columns:1fr;gap:var(--sp-6);margin-bottom:var(--sp-6)}@media (min-width:768px){.appointments-list{grid-template-columns:repeat(2,1fr)}}`}render(){return this.getAppointmentsQuery.render({complete:t=>c`${t.data.length>0?c`<div class="appointments-list">${t.data.map(t=>c`<appointment-card .appointmentResource="${t}" .specialtyId="${t.speciality?.id}" variant="history"></appointment-card>`)}</div>`:c`<empty-state title="${o("No tienes citas en el historial")}" description="${o("Aquí verás todas las citas que has tenido. Puedes acceder a los documentos de cada consulta y reagendar una cita si es necesario.")}"></empty-state>`}`,pending:()=>c`<div class="appointments-list"><appointment-card-skeleton></appointment-card-skeleton><appointment-card-skeleton></appointment-card-skeleton><appointment-card-skeleton></appointment-card-skeleton></div>`})}};s([d({context:u,subscribe:!0})],q.prototype,"apiClient",void 0),q=s([a(),n("appointments-history-tab")],q);const H=p`.container{display:flex;flex-direction:column;gap:var(--size-3)}`;let V=class MqMyAppointments extends r{constructor(){super(...arguments),this.tab=g.next}static{this.styles=H}willUpdate(i){i.has("locale")&&this.locale&&t(this.locale)&&e(this.locale)}handleSelect(t){this.dispatchEvent(new MqMyAppointmentsSelectEvent(t.value))}render(){return c`<div class="container"><mq-tabs .value="${this.tab}" @onvaluechange="${this.handleSelect}"><mq-tabs-list label="${o("Mis citas")}"><mq-tabs-trigger value="${g.next}">${o("Próximas citas")}</mq-tabs-trigger><mq-tabs-trigger value="${g.history}">${o("Histórico")}</mq-tabs-trigger></mq-tabs-list><mq-tabs-content value="${g.next}"><next-appointments-tab></next-appointments-tab></mq-tabs-content><mq-tabs-content value="${g.history}"><appointments-history-tab></appointments-history-tab></mq-tabs-content></mq-tabs></div>`}};s([l({type:String,reflect:!0})],V.prototype,"tab",void 0),s([l({type:String,attribute:"locale"})],V.prototype,"locale",void 0),V=s([a(),n("mq-my-appointments")],V);const w=p`:host{display:block}.request-appointment-cta{box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:var(--sp-12) var(--sp-4);background:var(--color-card);gap:var(--sp-4)}.title-body{display:flex;flex-direction:column;gap:var(--sp-2);flex:1}.title{font-family:var(--font-titles);font-size:var(--text-2xl);line-height:var(--text-2xl--line-height);font-weight:var(--font-weight-bold);color:var(--color-neutrals-text-default);margin:0;text-align:center}.subtitle{font-family:var(--font-body);font-size:var(--text-base);line-height:var(--text-base--line-height);font-weight:var(--font-weight-normal);color:var(--color-neutrals-text-default);margin:0;display:none}mq-button{width:100%}.button-text-desktop{display:none}.button-text-mobile{display:inline}@media (min-width:768px){.request-appointment-cta{flex-direction:row;padding:var(--sp-12) var(--sp-20);gap:var(--sp-2)}.title-body{align-items:flex-start;flex:1;max-width:843px}.title{font-size:var(--text-3xl);line-height:var(--text-3xl--line-height);font-weight:var(--font-weight-extrabold);text-align:left}.subtitle{display:block}mq-button{width:auto;flex-shrink:0;--button-height-md:var(--button-height-lg);--text-sm:var(--text-base);--text-sm--line-height:var(--text-base--line-height)}.button-text-desktop{display:inline}.button-text-mobile{display:none}}`;class RequestAppointmentEvent extends Event{static{this.eventName="request-appointment"}constructor(){super(RequestAppointmentEvent.eventName,{bubbles:!0,composed:!0})}}let $=class RequestAppointmentCta extends r{static{this.styles=w}handleRequestAppointment(){this.dispatchEvent(new RequestAppointmentEvent)}render(){return c`<div class="request-appointment-cta"><div class="title-body"><h2 class="title">${o("Nueva cita de especialidades digitales")}</h2><p class="subtitle">${o("Realiza la búsqueda en tu cuadro médico digital")}</p></div><mq-button variant="primary" size="md" fullwidth @click="${this.handleRequestAppointment}"><span class="button-text-mobile">${o("Pedir cita")}</span> <span class="button-text-desktop">${o("Pedir una nueva cita")}</span></mq-button></div>`}};$=s([a(),n("request-appointment-cta")],$),i();export{V as MqMyAppointments,MqMyAppointmentsSelectEvent,$ as RequestAppointmentCta,RequestAppointmentEvent};
|
|
@@ -1,65 +1,28 @@
|
|
|
1
1
|
import * as lit_html from 'lit-html';
|
|
2
2
|
import * as lit from 'lit';
|
|
3
3
|
import { LitElement, PropertyValues } from 'lit';
|
|
4
|
-
import {
|
|
4
|
+
import { M as MediquoApiChatClient } from './chunks/index.d-XSe7Hy-Q.js';
|
|
5
5
|
import { Env } from './env.js';
|
|
6
6
|
import './chunks/index-Nf3nZ9O3.js';
|
|
7
7
|
import './chunks/index-DTEtqjQF.js';
|
|
8
8
|
import './ui/mq-skeleton.js';
|
|
9
|
-
import './chunks/
|
|
10
|
-
import './chunks/appointment-action-unavailable-dialog-CTiL4nMo.js';
|
|
11
|
-
import './chunks/professional-overview-mO3tuMuH.js';
|
|
12
|
-
import './ui/mq-button.js';
|
|
13
|
-
import './ui/mq-floating-bubble.js';
|
|
9
|
+
import './chunks/next-appointment-card-Bc65OZ1_.js';
|
|
14
10
|
export { MqAppointmentJoinVideocallEvent, MqAppointmentRescheduleEvent, MqViewAppointmentsEvent } from './events.js';
|
|
15
11
|
import 'axios';
|
|
16
12
|
import 'zod';
|
|
17
13
|
import './chunks/schemas.d-b6_AekBb.js';
|
|
14
|
+
import './chunks/mq-chat-room-jeDvIF1Z.js';
|
|
18
15
|
import './ui/mq-avatar.js';
|
|
16
|
+
import './ui/mq-button.js';
|
|
19
17
|
import './chunks/appointment.model.d-BWwBLaEL.js';
|
|
20
18
|
import '@tanstack/query-core';
|
|
19
|
+
import './chunks/appointment-action-unavailable-dialog-CTiL4nMo.js';
|
|
21
20
|
import './chunks/price.d-CwLosdAN.js';
|
|
22
21
|
import './ui/mq-dialog.js';
|
|
22
|
+
import './chunks/professional-overview-mO3tuMuH.js';
|
|
23
23
|
import './ui/mq-text-button.js';
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
static styles: lit.CSSResult;
|
|
27
|
-
appointmentResource: GetAppointmentsResponse["data"][number];
|
|
28
|
-
specialtyName: string;
|
|
29
|
-
token: string;
|
|
30
|
-
patientHash: string;
|
|
31
|
-
timezone?: string;
|
|
32
|
-
hasChatSupport: boolean;
|
|
33
|
-
isExpired: boolean;
|
|
34
|
-
isModifyUnavailable: boolean;
|
|
35
|
-
isCancelUnavailable: boolean;
|
|
36
|
-
modifyUnavailableMessage: string;
|
|
37
|
-
cancelUnavailableMessage: string;
|
|
38
|
-
private isChatOpen;
|
|
39
|
-
private isMenuOpen;
|
|
40
|
-
private isCancelDialogOpen;
|
|
41
|
-
private openDialog;
|
|
42
|
-
private closeMenuOnOutsideClick;
|
|
43
|
-
private closeMenuOnEscape;
|
|
44
|
-
connectedCallback(): void;
|
|
45
|
-
disconnectedCallback(): void;
|
|
46
|
-
private get appointmentId();
|
|
47
|
-
private get channel();
|
|
48
|
-
private channelIcon;
|
|
49
|
-
private channelLabel;
|
|
50
|
-
private formatWhen;
|
|
51
|
-
private handleJoinVideocall;
|
|
52
|
-
private handleToggleChat;
|
|
53
|
-
private handleModify;
|
|
54
|
-
private handleCancel;
|
|
55
|
-
private renderActions;
|
|
56
|
-
render(): lit_html.TemplateResult<1>;
|
|
57
|
-
}
|
|
58
|
-
declare global {
|
|
59
|
-
interface HTMLElementTagNameMap {
|
|
60
|
-
"next-appointment-card": NextAppointmentCard;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
24
|
+
import './ui/mq-floating-bubble.js';
|
|
25
|
+
import './ui/mq-unread-badge.js';
|
|
63
26
|
|
|
64
27
|
declare class MqNextAppointments extends LitElement {
|
|
65
28
|
static styles: lit.CSSResult;
|
|
@@ -79,8 +42,6 @@ declare class MqNextAppointments extends LitElement {
|
|
|
79
42
|
protected willUpdate(changed: PropertyValues<this>): void;
|
|
80
43
|
private getPatientProfileQuery;
|
|
81
44
|
private getAppointmentsQuery;
|
|
82
|
-
private getOrganizationSetupQuery;
|
|
83
|
-
private getOrganizationSpecialtiesQuery;
|
|
84
45
|
private get patientHash();
|
|
85
46
|
private get accessToken();
|
|
86
47
|
private get patientTimezone();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{getLocale as t,isValidLocale as e,setLocale as i,initLocalization as n}from"./i18n.js";import{_ as o,c as a}from"./chunks/custom-element-D2ziPxYE.js";import{e as s}from"./chunks/provide-BwI4DDGF.js";import{c as r}from"./chunks/consume-CovVqBjI.js";import{m as p,s as c}from"./chunks/runtime-Bg1WXVCx.js";import{l}from"./chunks/localized-decorator-BlOuLhym.js";import{Q as m}from"./chunks/query-controller-BlO1Ax65.js";import{A as h}from"./chunks/api-client-context-V1UAGtKW.js";import{l as d}from"./chunks/chunk-S5RWG6G2-DPesx3Od.js";import{A as u,a as g,c as v,n as f,i as y}from"./chunks/api-chat-client-CJ1EGJe3.js";import{a as b,g as k}from"./chunks/action-unavailable-message-BIgsXk9u.js";import{g as x}from"./chunks/get-organization-setup-query-Dr1cXnHl.js";import{t as j,j as $,l as C,f as w,h as O,a as M,g as q}from"./chunks/telemetry-client-7fvNqUSU.js";import{g as z}from"./chunks/get-patient-profile-query-4AO6xvVn.js";import{c as S}from"./chunks/refund-cancel-policy-CcsJ-pMx.js";import{i as I,a as E,E as U,x as A}from"./chunks/lit-element-DiWJYFwC.js";import{n as D}from"./chunks/property-scuRaFcM.js";import{r as T}from"./chunks/state-LQivXIgA.js";import{setEnv as _}from"./env.js";import{MqAppointmentJoinVideocallEvent as N,MqAppointmentRescheduleEvent as R,MqViewAppointmentsEvent as Q}from"./events.js";import"./chunks/index-iaTXVzFa.js";import"./chunks/index-Bw-MbGKw.js";import"./ui/mq-skeleton.js";import{calendarIcon as H}from"./ui/icons/calendar-icon.js";import{dotsHorizontalIcon as P}from"./ui/icons/dots-horizontal-icon.js";import{messageBubbleIcon as V}from"./ui/icons/message-bubble-icon.js";import{phoneIcon as B}from"./ui/icons/phone-icon.js";import{videoIcon as L}from"./ui/icons/video-icon.js";import"./mq-chat-room.js";import"./chunks/professional-overview-C4H_znIJ.js";import"./ui/mq-button.js";import"./ui/mq-floating-bubble.js";import{toast as F}from"./ui/mq-toast.js";import"./chunks/chunk-4FFT6DC2-CVWibomC.js";import"./chunks/external-CJj32K_p.js";import"./chunks/context-request-event-Dfydf1ub.js";import"./chunks/context-consumer-ESdICVAb.js";import"./chunks/chunk-RCFIJTXZ-C6Ir0-sM.js";import"./chunks/create-context-DqP79qjF.js";import"./chunks/query-Cjvi4_dT.js";import"./chunks/chunk-HN62IQ7S-xbkIy7k_.js";import"./chunks/parseISO-Dj3qSTG8.js";import"./chunks/format-CRFiCNHw.js";import"./chunks/isBefore-CPpTogxo.js";import"./chunks/chunk-6CCJWPGL-TiaqZaPV.js";import"./chunks/mutation-controller-CR2qcqhH.js";import"./chunks/price-DU3YLTpk.js";import"./ui/mq-dialog.js";import"./ui/icons/x-icon.js";import"./ui/icons/types.js";import"./ui/icons/file-icon.js";import"./ui/icons/arrow-right-icon.js";import"./chunks/if-defined-BYeVdwgd.js";import"./chunks/style-map-CIdqdn7C.js";import"./chunks/directive-2EDmOukv.js";import"./theme.js";import"./ui/mq-avatar.js";import"./chunks/class-map-Co76I6aw.js";import"./chunks/chunk-BUV4MGML-CkhBbfUu.js";import"./ui/icons/chevron-left-icon.js";import"./chunks/query-CeeutdfT.js";import"./chunks/chunk-Y4EKUX25-QqMl3eiq.js";import"./ui/icons/check-double-icon.js";import"./ui/icons/check-icon.js";import"./chunks/chunk-YTQUGGS3-DmCGIoFy.js";import"./ui/icons/chevron-down-icon.js";import"./ui/mq-text-button.js";const G=I`:host{display:flex;flex-direction:column;justify-content:space-between;gap:var(--sp-6);flex:1;width:100%;min-width:0;box-sizing:border-box;color:var(--color-text-icons--primary,#0a0a22)}professional-overview{--avatar-size-lg:66px;display:block}.details{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-3)}.detail-row{display:inline-flex;align-items:center;gap:var(--sp-2);font-family:var(--font-body);font-size:var(--text-sm);line-height:1.35;font-weight:var(--font-weight-normal)}.detail-row svg{flex-shrink:0}.detail-row span::first-letter{text-transform:uppercase}.footer{display:flex;flex-direction:column;gap:var(--sp-4)}.reminder{font-family:var(--font-body);font-size:var(--text-sm);line-height:1.35;font-weight:var(--font-weight-normal);color:var(--color-text-icons--secondary,#6d658b);margin:0}.actions{--button-height-md:2.75rem;display:flex;align-items:stretch;gap:10px}.actions>mq-button{flex:1;min-width:0}.overflow{position:relative;flex:0 0 auto}@media (max-width:767px){.actions{flex-wrap:wrap}.actions>mq-button.join{order:1;flex:1 0 100%}}.menu{position:absolute;right:0;bottom:calc(100% + var(--sp-2));z-index:2;display:flex;flex-direction:column;min-width:176px;padding:var(--sp-1);background-color:var(--color-card,#fff);border:1px solid var(--color-border-subtle,#edecf1);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-lg)}.menu-item{display:block;width:100%;background:0 0;border:none;border-radius:var(--border-radius-sm);padding:var(--sp-2) var(--sp-3);cursor:pointer;text-align:left;font-family:var(--font-body);font-size:var(--text-sm);line-height:1.35;color:var(--color-text-icons--primary,#0a0a22)}.menu-item:hover{background-color:var(--color-muted)}.menu-item.negative{color:var(--color-negative)}`;let J=class NextAppointmentCard extends E{constructor(){super(...arguments),this.specialtyName="",this.token="",this.patientHash="",this.hasChatSupport=!1,this.isExpired=!1,this.isModifyUnavailable=!1,this.isCancelUnavailable=!1,this.modifyUnavailableMessage="",this.cancelUnavailableMessage="",this.isChatOpen=!1,this.isMenuOpen=!1,this.isCancelDialogOpen=!1,this.openDialog=null,this.closeMenuOnOutsideClick=t=>{t.composedPath().includes(this)||(this.isMenuOpen=!1)},this.closeMenuOnEscape=t=>{"Escape"===t.key&&(this.isMenuOpen=!1)},this.handleJoinVideocall=()=>{j.track($(this.patientHash,this.appointmentId)),this.dispatchEvent(new N({appointmentId:this.appointmentId}))},this.handleToggleChat=()=>{this.isChatOpen=!this.isChatOpen,this.isChatOpen&&j.track(C(this.patientHash,this.appointmentId))},this.handleModify=()=>{this.isMenuOpen=!1,this.isModifyUnavailable?this.openDialog="modify":(j.track(w(this.patientHash,this.appointmentId)),this.dispatchEvent(new R({appointmentId:this.appointmentId})))},this.handleCancel=()=>{this.isMenuOpen=!1,this.isCancelUnavailable?this.openDialog="cancel":(j.track(O(this.patientHash,this.appointmentId)),this.isCancelDialogOpen=!0)}}static{this.styles=G}connectedCallback(){super.connectedCallback(),document.addEventListener("click",this.closeMenuOnOutsideClick),document.addEventListener("keydown",this.closeMenuOnEscape)}disconnectedCallback(){document.removeEventListener("click",this.closeMenuOnOutsideClick),document.removeEventListener("keydown",this.closeMenuOnEscape),super.disconnectedCallback()}get appointmentId(){return this.appointmentResource.appointment.id??""}get channel(){return this.appointmentResource.appointment.channel}channelIcon(){switch(this.channel){case u.videocall:return L({size:20});case u.phonecall:return B({size:20});default:return V({size:20})}}channelLabel(){switch(this.channel){case u.videocall:return p("Videoconsulta");case u.phonecall:return p("Consulta telefónica");default:return p("Chat")}}formatWhen(){const e=t().replace("_","-"),i=this.timezone?{timeZone:this.timezone}:{},n=new Date(this.appointmentResource.appointment.starts_at);if(Number.isNaN(n.getTime()))return"";const o=new Intl.DateTimeFormat(e,{weekday:"long",day:"numeric",month:"long",year:"numeric",...i}).format(n),a=new Intl.DateTimeFormat(e,{timeStyle:"short",...i}).format(n);return p(c`${o}, ${a} h`)}renderActions(){const t=this.channel===u.videocall;return A`<div class="actions">${this.hasChatSupport?A`<mq-button variant="outline" @click="${this.handleToggleChat}">${p("Ir a chat")}</mq-button>`:U} ${t?A`<mq-button class="join" variant="primary" @click="${this.handleJoinVideocall}">${p("Unirse a la videoconsulta")}</mq-button>`:U}<div class="overflow"><mq-button variant="outline" size="icon-lg" aria-label="${p("Más opciones")}" aria-haspopup="menu" aria-expanded="${this.isMenuOpen}" @click="${()=>{this.isMenuOpen=!this.isMenuOpen}}">${P({size:16})}</mq-button>${this.isMenuOpen?A`<div class="menu" role="menu"><button class="menu-item" type="button" role="menuitem" @click="${this.handleModify}">${p("Modificar cita")}</button> <button class="menu-item negative" type="button" role="menuitem" @click="${this.handleCancel}">${p("Anular cita")}</button></div>`:U}</div></div>`}render(){const{professional:t}=this.appointmentResource,e=this.formatWhen();return A`<professional-overview .name="${t.name}" .specialtyName="${this.specialtyName}" .collegiateNumber="${t.collegiate_number??void 0}" .description="${t.description??""}" .languages="${t.languages??[]}" .avatar="${t.avatar??""}"></professional-overview><div class="details">${e?A`<div class="detail-row">${H({size:20})} <span>${e}</span></div>`:U}<div class="detail-row">${this.channelIcon()} <span>${this.channelLabel()}</span></div></div><div class="footer"><p class="reminder">${p("Recibirás un recordatorio 15 minutos antes de la consulta")}</p>${this.renderActions()}</div><mq-floating-bubble ?dismissable="${!1}" .open="${this.isChatOpen}" hideCloseButton @mq-close="${()=>{this.isChatOpen=!1}}">${this.isChatOpen?A`<mq-chat-room slot="content" .consultationId="${this.appointmentResource.appointment.id}" consultation-type="appointment" token="${this.token}" .roomId="${this.appointmentResource.room.id}" .professionalHash="${t.hash}" ?readonly="${this.isExpired}" @mq-chat-room-close="${()=>{this.isChatOpen=!1}}"></mq-chat-room>`:U}</mq-floating-bubble><appointment-action-unavailable-dialog .open="${"modify"===this.openDialog}" .heading="${p("Modificar cita")}" .message="${this.modifyUnavailableMessage}" @close="${()=>{this.openDialog=null}}"></appointment-action-unavailable-dialog><appointment-action-unavailable-dialog .open="${"cancel"===this.openDialog}" .heading="${p("Anular cita")}" .message="${this.cancelUnavailableMessage}" @close="${()=>{this.openDialog=null}}"></appointment-action-unavailable-dialog><cancel-appointment-confirmation-dialog .appointmentId="${this.appointmentResource.appointment.id}" .price="${this.appointmentResource.price??void 0}" .open="${this.isCancelDialogOpen}" @cancel="${()=>{this.isCancelDialogOpen=!1}}" @success="${()=>{this.isCancelDialogOpen=!1,F.success(p("Consulta anulada correctamente")),this.dispatchEvent(new CustomEvent("appointment-cancel-confirmed",{bubbles:!0,composed:!0,detail:{id:this.appointmentId}}))}}"></cancel-appointment-confirmation-dialog>`}};o([D({type:Object})],J.prototype,"appointmentResource",void 0),o([D({type:String})],J.prototype,"specialtyName",void 0),o([D({type:String})],J.prototype,"token",void 0),o([D({type:String})],J.prototype,"patientHash",void 0),o([D({type:String})],J.prototype,"timezone",void 0),o([D({type:Boolean})],J.prototype,"hasChatSupport",void 0),o([D({type:Boolean})],J.prototype,"isExpired",void 0),o([D({type:Boolean})],J.prototype,"isModifyUnavailable",void 0),o([D({type:Boolean})],J.prototype,"isCancelUnavailable",void 0),o([D({type:String})],J.prototype,"modifyUnavailableMessage",void 0),o([D({type:String})],J.prototype,"cancelUnavailableMessage",void 0),o([T()],J.prototype,"isChatOpen",void 0),o([T()],J.prototype,"isMenuOpen",void 0),o([T()],J.prototype,"isCancelDialogOpen",void 0),o([T()],J.prototype,"openDialog",void 0),J=o([l(),a("next-appointment-card")],J);const W=[g.pending,g.accepted],K=I`:host{display:flex;flex-direction:column;gap:var(--sp-4);width:100%;min-width:0;box-sizing:border-box}:host([empty]){align-self:start}:host([empty]) .card{flex:0 0 auto}.card{display:flex;flex-direction:column;flex:1;min-width:0;box-sizing:border-box;background-color:var(--color-card,#fff);border:1px solid var(--color-border-subtle,#edecf1);border-radius:var(--mq-next-appointments-radius,12px);padding:var(--mq-next-appointments-padding,var(--sp-6))}`;let X=class MqNextAppointments extends E{constructor(){super(...arguments),this.apiClient=v(),this.getPatientProfileQuery=new m(this,()=>z(this.apiClient,{enabled:!this.loginToken})),this.getAppointmentsQuery=new m(this,()=>b(this.apiClient,{status:W,order:{field:"starts_at",direction:"asc"},page:1,per_page:1})),this.getOrganizationSetupQuery=new m(this,()=>x(this.apiClient)),this.getOrganizationSpecialtiesQuery=new m(this,()=>M(this.apiClient)),this.handleViewAll=()=>{this.dispatchEvent(new Q({tab:"next"}))}}static{this.styles=K}willUpdate(t){t.has("env")&&this.env&&_(this.env),t.has("locale")&&this.locale&&e(this.locale)&&i(this.locale);const n=f(t,{env:this.env,apiKey:this.apiKey,token:this.token,locale:this.locale},this.inheritedApiClient);n&&(this.apiClient=n)}get patientHash(){return this.loginToken?.patient.hash??this.getPatientProfileQuery.result?.data?.hash??""}get accessToken(){return this.token||this.loginToken?.access_token||""}get patientTimezone(){return this.timezone??this.loginToken?.patient.timezone}get isEmpty(){const t=this.getAppointmentsQuery.result;return!0===t?.isSuccess&&!t.data?.data?.[0]}updated(){this.toggleAttribute("empty",this.isEmpty)}renderAppointment(){return this.getAppointmentsQuery.render({complete:e=>{const i=e.data?.[0];if(!i)return A`<widget-empty-state icon="calendar" heading="${p("No tienes próximas citas")}" description="${p("Cuando agendes una cita, aparecerá aquí para que puedas consultarla, modificarla o cancelarla.")}"></widget-empty-state>`;const n=this.getOrganizationSetupQuery.result?.data,o=n?.appointments?.seconds_before_start_to_refund_on_cancel,a=S({startsAtIso:i.appointment.starts_at,refundPolicySeconds:o}),s=y(i.appointment.expires_at),r=0===i.slots.length,c=this.getOrganizationSpecialtiesQuery.result?.data?.find(t=>t.id===i.speciality.id);return A`<next-appointment-card .appointmentResource="${i}" .specialtyName="${q(c?.code??"",t(),c?.name??i.speciality.name)}" .token="${this.accessToken}" .patientHash="${this.patientHash}" .timezone="${this.patientTimezone}" .hasChatSupport="${!0===n?.appointments?.has_chat_in_appointment}" .isExpired="${s}" .isModifyUnavailable="${s||r||!a}" .isCancelUnavailable="${s||!a}" .modifyUnavailableMessage="${k({action:"modify",refundPolicySeconds:o})}" .cancelUnavailableMessage="${k({action:"cancel",refundPolicySeconds:o})}"></next-appointment-card>`},pending:()=>A`<mq-skeleton height="257px"></mq-skeleton>`,error:()=>A`<widget-empty-state icon="calendar" heading="${p("No hemos podido cargar tu próxima cita")}" description="${p("Vuelve a intentarlo en unos minutos.")}"></widget-empty-state>`})}render(){return A`<section-header heading="${p("Próxima cita")}" action-label="${p("Ver todas")}" @section-action="${this.handleViewAll}"></section-header><div class="card">${this.renderAppointment()}</div>`}};o([D({type:String,attribute:"api-key"})],X.prototype,"apiKey",void 0),o([D({type:String,attribute:"token"})],X.prototype,"token",void 0),o([D({type:String,attribute:"locale"})],X.prototype,"locale",void 0),o([D({type:String,attribute:"env"})],X.prototype,"env",void 0),o([D({type:String,attribute:"timezone"})],X.prototype,"timezone",void 0),o([r({context:d,subscribe:!0})],X.prototype,"loginToken",void 0),o([r({context:h,subscribe:!0}),T()],X.prototype,"inheritedApiClient",void 0),o([s({context:h}),T()],X.prototype,"apiClient",void 0),X=o([l(),a("mq-next-appointments")],X),n();export{N as MqAppointmentJoinVideocallEvent,R as MqAppointmentRescheduleEvent,X as MqNextAppointments,Q as MqViewAppointmentsEvent};
|
|
1
|
+
import{isValidLocale as t,setLocale as e,initLocalization as i}from"./i18n.js";import{_ as o,c as s}from"./chunks/custom-element-D2ziPxYE.js";import{e as n}from"./chunks/provide-BwI4DDGF.js";import{c as r}from"./chunks/consume-CovVqBjI.js";import{m as a}from"./chunks/runtime-Bg1WXVCx.js";import{l as p}from"./chunks/localized-decorator-BlOuLhym.js";import{Q as c}from"./chunks/query-controller-BlO1Ax65.js";import{A as m}from"./chunks/api-client-context-V1UAGtKW.js";import{l as u}from"./chunks/chunk-S5RWG6G2-DPesx3Od.js";import{a as h,c as l,n as d}from"./chunks/api-chat-client-DLpFzml6.js";import{a as k}from"./chunks/action-unavailable-message-BIgsXk9u.js";import{g as j}from"./chunks/get-patient-profile-query-4AO6xvVn.js";import{i as g,a as f,x as y}from"./chunks/lit-element-DiWJYFwC.js";import{n as v}from"./chunks/property-scuRaFcM.js";import{r as x}from"./chunks/state-LQivXIgA.js";import{setEnv as b}from"./env.js";import{MqViewAppointmentsEvent as q}from"./events.js";export{MqAppointmentJoinVideocallEvent,MqAppointmentRescheduleEvent}from"./events.js";import"./chunks/index-DEEAEB_4.js";import"./chunks/index-Bw-MbGKw.js";import"./ui/mq-skeleton.js";import"./chunks/next-appointment-card-DDzJ1hMB.js";import"./chunks/chunk-4FFT6DC2-CVWibomC.js";import"./chunks/external-CJj32K_p.js";import"./chunks/context-request-event-Dfydf1ub.js";import"./chunks/context-consumer-ESdICVAb.js";import"./chunks/chunk-RCFIJTXZ-C6Ir0-sM.js";import"./chunks/create-context-DqP79qjF.js";import"./chunks/query-Cjvi4_dT.js";import"./chunks/chunk-2TKJJNS7-BGwxtEg7.js";import"./chunks/parseISO-Dj3qSTG8.js";import"./chunks/format-CRFiCNHw.js";import"./chunks/isBefore-CPpTogxo.js";import"./chunks/chunk-6CCJWPGL-TiaqZaPV.js";import"./chunks/mutation-controller-CR2qcqhH.js";import"./chunks/price-DU3YLTpk.js";import"./ui/mq-button.js";import"./chunks/class-map-Co76I6aw.js";import"./chunks/directive-2EDmOukv.js";import"./chunks/if-defined-BYeVdwgd.js";import"./ui/mq-dialog.js";import"./ui/icons/x-icon.js";import"./ui/icons/types.js";import"./ui/icons/calendar-icon.js";import"./ui/icons/file-icon.js";import"./ui/icons/arrow-right-icon.js";import"./chunks/style-map-CIdqdn7C.js";import"./chunks/get-organization-setup-query-Dr1cXnHl.js";import"./chunks/telemetry-client-BdPx4SXu.js";import"./chunks/chunk-Y4EKUX25-QqMl3eiq.js";import"./chunks/refund-cancel-policy-QG_OE6g5.js";import"./ui/icons/dots-horizontal-icon.js";import"./ui/icons/message-bubble-icon.js";import"./ui/icons/phone-icon.js";import"./ui/icons/video-icon.js";import"./mq-chat-room.js";import"./theme.js";import"./ui/mq-avatar.js";import"./chunks/chunk-BUV4MGML-CkhBbfUu.js";import"./ui/icons/chevron-left-icon.js";import"./chunks/query-CeeutdfT.js";import"./ui/icons/check-double-icon.js";import"./ui/icons/check-icon.js";import"./chunks/chunk-YTQUGGS3-DmCGIoFy.js";import"./chunks/professional-overview-C4H_znIJ.js";import"./ui/icons/chevron-down-icon.js";import"./ui/mq-text-button.js";import"./ui/mq-floating-bubble.js";import"./ui/mq-unread-badge.js";import"./ui/mq-toast.js";const w=[h.pending,h.accepted],A=g`:host{display:flex;flex-direction:column;gap:var(--sp-4);width:100%;min-width:0;box-sizing:border-box}:host([empty]){align-self:start}:host([empty]) .card{flex:0 0 auto}.card{display:flex;flex-direction:column;flex:1;min-width:0;box-sizing:border-box;background-color:var(--color-card,#fff);border:1px solid var(--color-border-subtle,#edecf1);border-radius:var(--mq-next-appointments-radius,12px);padding:var(--mq-next-appointments-padding,var(--sp-6))}`;let T=class MqNextAppointments extends f{constructor(){super(...arguments),this.apiClient=l(),this.getPatientProfileQuery=new c(this,()=>j(this.apiClient,{enabled:!this.loginToken})),this.getAppointmentsQuery=new c(this,()=>k(this.apiClient,{status:w,order:{field:"starts_at",direction:"asc"},page:1,per_page:1})),this.handleViewAll=()=>{this.dispatchEvent(new q({tab:"next"}))}}static{this.styles=A}willUpdate(i){i.has("env")&&this.env&&b(this.env),i.has("locale")&&this.locale&&t(this.locale)&&e(this.locale);const o=d(i,{env:this.env,apiKey:this.apiKey,token:this.token,locale:this.locale},this.inheritedApiClient);o&&(this.apiClient=o)}get patientHash(){return this.loginToken?.patient.hash??this.getPatientProfileQuery.result?.data?.hash??""}get accessToken(){return this.token||this.loginToken?.access_token||""}get patientTimezone(){return this.timezone??this.loginToken?.patient.timezone}get isEmpty(){const t=this.getAppointmentsQuery.result;return!0===t?.isSuccess&&!t.data?.data?.[0]}updated(){this.toggleAttribute("empty",this.isEmpty)}renderAppointment(){return this.getAppointmentsQuery.render({complete:t=>{const e=t.data?.[0];return e?y`<next-appointment-card .appointmentResource="${e}" .token="${this.accessToken}" .patientHash="${this.patientHash}" .timezone="${this.patientTimezone}"></next-appointment-card>`:y`<widget-empty-state icon="calendar" heading="${a("No tienes próximas citas")}" description="${a("Cuando agendes una cita, aparecerá aquí para que puedas consultarla, modificarla o cancelarla.")}"></widget-empty-state>`},pending:()=>y`<mq-skeleton height="257px"></mq-skeleton>`,error:()=>y`<widget-empty-state icon="calendar" heading="${a("No hemos podido cargar tu próxima cita")}" description="${a("Vuelve a intentarlo en unos minutos.")}"></widget-empty-state>`})}render(){return y`<section-header heading="${a("Próxima cita")}" action-label="${a("Ver todas")}" @section-action="${this.handleViewAll}"></section-header><div class="card">${this.renderAppointment()}</div>`}};o([v({type:String,attribute:"api-key"})],T.prototype,"apiKey",void 0),o([v({type:String,attribute:"token"})],T.prototype,"token",void 0),o([v({type:String,attribute:"locale"})],T.prototype,"locale",void 0),o([v({type:String,attribute:"env"})],T.prototype,"env",void 0),o([v({type:String,attribute:"timezone"})],T.prototype,"timezone",void 0),o([r({context:u,subscribe:!0})],T.prototype,"loginToken",void 0),o([r({context:m,subscribe:!0}),x()],T.prototype,"inheritedApiClient",void 0),o([n({context:m}),x()],T.prototype,"apiClient",void 0),T=o([p(),s("mq-next-appointments")],T),i();export{T as MqNextAppointments,q as MqViewAppointmentsEvent};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{isValidLocale as t,setLocale as e,initLocalization as i}from"./i18n.js";import{_ as s,c as o}from"./chunks/custom-element-D2ziPxYE.js";import{e as r}from"./chunks/provide-BwI4DDGF.js";import{c as n}from"./chunks/consume-CovVqBjI.js";import{m as a}from"./chunks/runtime-Bg1WXVCx.js";import{l}from"./chunks/localized-decorator-BlOuLhym.js";import{c,n as d,P as p}from"./chunks/api-chat-client-
|
|
1
|
+
import{isValidLocale as t,setLocale as e,initLocalization as i}from"./i18n.js";import{_ as s,c as o}from"./chunks/custom-element-D2ziPxYE.js";import{e as r}from"./chunks/provide-BwI4DDGF.js";import{c as n}from"./chunks/consume-CovVqBjI.js";import{m as a}from"./chunks/runtime-Bg1WXVCx.js";import{l}from"./chunks/localized-decorator-BlOuLhym.js";import{c,n as d,P as p}from"./chunks/api-chat-client-DLpFzml6.js";import{A as h}from"./chunks/api-client-context-V1UAGtKW.js";import{i as m,a as u,x as v}from"./chunks/lit-element-DiWJYFwC.js";import{n as f}from"./chunks/property-scuRaFcM.js";import{r as g}from"./chunks/state-LQivXIgA.js";import{setEnv as y}from"./env.js";import{MqBackEvent as _,MqPaymentSucceededEvent as x}from"./events.js";import{spinnerIcon as k}from"./ui/icons/spinner-icon.js";import"./ui/mq-button.js";import"./chunks/chunk-4FFT6DC2-CVWibomC.js";import"./chunks/external-CJj32K_p.js";import"./chunks/context-request-event-Dfydf1ub.js";import"./chunks/context-consumer-ESdICVAb.js";import"./chunks/chunk-2TKJJNS7-BGwxtEg7.js";import"./chunks/parseISO-Dj3qSTG8.js";import"./chunks/format-CRFiCNHw.js";import"./chunks/isBefore-CPpTogxo.js";import"./chunks/create-context-DqP79qjF.js";import"./ui/icons/types.js";import"./chunks/class-map-Co76I6aw.js";import"./chunks/directive-2EDmOukv.js";import"./chunks/if-defined-BYeVdwgd.js";const b="support@mediquo.com",j=m`:host{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;min-height:320px;padding:var(--sp-6);box-sizing:border-box}.card{width:100%;max-width:460px;box-sizing:border-box;padding:var(--sp-10);background:var(--color-card);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-lg)}.verifying{display:flex;flex-direction:column;align-items:center;gap:var(--sp-4);text-align:center}.outcome{display:flex;flex-direction:column;gap:var(--sp-4)}.title{font-family:var(--font-titles);font-size:var(--text-2xl);line-height:var(--text-2xl--line-height);font-weight:var(--font-weight-bold);color:var(--color-negative);margin:0}.verifying .title{font-size:var(--text-lg);line-height:var(--text-lg--line-height);font-weight:var(--font-weight-semibold);color:var(--color-neutrals-text-default)}.message{font-family:var(--font-body);font-size:var(--text-base);line-height:var(--text-base--line-height);color:var(--color-neutrals-text-subtle);margin:0}.support a{color:var(--color-primary-text-link);font-weight:var(--font-weight-medium);text-decoration:none}.support a:hover{text-decoration:underline}.actions{display:flex;flex-direction:column;gap:var(--sp-3);margin-top:var(--sp-2)}`;let w=class MqPaymentPoller extends u{constructor(){super(...arguments),this.timeoutMs=9e4,this._view="verifying",this._deadline=0,this._settled=!1,this.apiClient=c(),this._onRetry=()=>{this._restart()},this._onBack=()=>{this.dispatchEvent(new _({source:"payment-poller"}))}}static{this.styles=j}willUpdate(i){i.has("env")&&this.env&&y(this.env),i.has("locale")&&this.locale&&t(this.locale)&&e(this.locale);const s=d(i,{env:this.env,apiKey:this.apiKey,token:this.token,locale:this.locale},this.inheritedApiClient);s&&(this.apiClient=s)}updated(t){t.has("sessionId")&&this._restart()}disconnectedCallback(){this._stop(),super.disconnectedCallback()}_restart(){this._stop(),this._settled=!1,this._view="verifying",this.sessionId&&(this._deadline=Date.now()+this.timeoutMs,this._pollOnce(),this._intervalId=setInterval(()=>{this._pollOnce()},2e3))}_stop(){void 0!==this._intervalId&&(clearInterval(this._intervalId),this._intervalId=void 0)}_settle(t){this._stop(),this._settled=!0,this._view=t}async _pollOnce(){const t=this.sessionId;if(this._settled||!t)return;if(Date.now()>=this._deadline)return void this._settle("timeout");let e;try{e=await this.apiClient.payments.getPaymentSession(t)}catch{return}return this._settled||t!==this.sessionId?void 0:e.status===p.Paid?(this._stop(),this._settled=!0,void this.dispatchEvent(new x({appointmentId:e.consultation_id,consultationType:e.consultation_type}))):void(e.status===p.Denied&&this._settle("denied"))}_renderVerifying(){return v`<div class="card"><div class="verifying" role="status" aria-live="polite">${k({size:28,color:"var(--color-primary)"})}<p class="title">${a("Confirmando tu pago")}</p><p class="message">${a("No cierres, vuelvas atrás ni actualices la ventana; esto puede tardar unos momentos.")}</p></div></div>`}_renderDenied(){return v`<div class="card"><div class="outcome" role="alert"><p class="title">${a("Tu pago no se ha completado")}</p><p class="message">${a("El pago ha sido rechazado y no hemos creado la cita. No se te ha cobrado nada: vuelve a intentarlo con otro método de pago.")}</p><div class="actions"><mq-button variant="primary" size="lg" fullwidth @click="${this._onBack}">${a("Volver")}</mq-button></div></div></div>`}_renderTimeout(){return v`<div class="card"><div class="outcome" role="alert"><p class="title">${a("Ha ocurrido un error")}</p><p class="message">${a("No hemos podido confirmar tu pago. Por favor, inténtalo de nuevo más tarde.")}</p><p class="message support">${a("Si se te ha cobrado sin una cita confirmada, contacta con nuestro equipo en")} <a href="mailto:${b}">${b}</a></p><div class="actions"><mq-button variant="primary" size="lg" fullwidth @click="${this._onRetry}">${a("Reintentar verificación")}</mq-button><mq-button variant="secondary" size="lg" fullwidth @click="${this._onBack}">${a("Volver")}</mq-button></div></div></div>`}render(){switch(this._view){case"denied":return this._renderDenied();case"timeout":return this._renderTimeout();default:return this._renderVerifying()}}};s([f({type:String,attribute:"session-id"})],w.prototype,"sessionId",void 0),s([f({type:String,attribute:"api-key"})],w.prototype,"apiKey",void 0),s([f({type:String,attribute:"token"})],w.prototype,"token",void 0),s([f({type:String,attribute:"locale"})],w.prototype,"locale",void 0),s([f({type:String,attribute:"env"})],w.prototype,"env",void 0),s([f({type:Number,attribute:"timeout-ms"})],w.prototype,"timeoutMs",void 0),s([g()],w.prototype,"_view",void 0),s([n({context:h,subscribe:!0}),g()],w.prototype,"inheritedApiClient",void 0),s([r({context:h}),g()],w.prototype,"apiClient",void 0),w=s([l(),o("mq-payment-poller")],w),i();export{w as MqPaymentPoller,x as MqPaymentSucceededEvent};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,c as s}from"./chunks/custom-element-D2ziPxYE.js";import{a as t,E as n}from"./chunks/lit-element-DiWJYFwC.js";import{s as c}from"./chunks/context-consumer-ESdICVAb.js";import{Q as r}from"./chunks/chunk-RCFIJTXZ-C6Ir0-sM.js";import{A as i}from"./chunks/api-client-context-V1UAGtKW.js";import{S as o,a}from"./chunks/chunk-YTQUGGS3-DmCGIoFy.js";import{g as h}from"./chunks/chunk-BUV4MGML-CkhBbfUu.js";import{
|
|
1
|
+
import{_ as e,c as s}from"./chunks/custom-element-D2ziPxYE.js";import{a as t,E as n}from"./chunks/lit-element-DiWJYFwC.js";import{s as c}from"./chunks/context-consumer-ESdICVAb.js";import{Q as r}from"./chunks/chunk-RCFIJTXZ-C6Ir0-sM.js";import{A as i}from"./chunks/api-client-context-V1UAGtKW.js";import{S as o,a}from"./chunks/chunk-YTQUGGS3-DmCGIoFy.js";import{g as h}from"./chunks/chunk-BUV4MGML-CkhBbfUu.js";import{b as l}from"./chunks/chunk-2TKJJNS7-BGwxtEg7.js";import"./chunks/context-request-event-Dfydf1ub.js";import"./chunks/create-context-DqP79qjF.js";import"./chunks/external-CJj32K_p.js";import"./chunks/chunk-6CCJWPGL-TiaqZaPV.js";import"./chunks/parseISO-Dj3qSTG8.js";import"./chunks/format-CRFiCNHw.js";class ProfessionalPresenceSyncController{constructor(e){this.host=e,this.clearTimers=new Map,this._onAbsenceCreated=e=>{if(!e?.professional_hash||!e.finishes_at)return;const{professional_hash:s,id:t,finishes_at:n}=e;this._setActiveAbsence(s,{id:t,finishes_at:n}),this._clearTimer(s);const c=l(n).getTime()-Date.now();c>0&&c<2147483647&&this.clearTimers.set(s,setTimeout(()=>{this.clearTimers.delete(s),this._setActiveAbsence(s,null)},c))},this._onAbsenceCancelled=e=>{e?.professional_hash&&(this._clearTimer(e.professional_hash),this._setActiveAbsence(e.professional_hash,null))},new c(this.host,{context:o,subscribe:!0,callback:e=>{e&&e!==this.socket&&(this.socket=e,this.socket.on(a.absence_created,this._onAbsenceCreated),this.socket.on(a.absence_cancelled,this._onAbsenceCancelled))}}),new c(this.host,{context:r,subscribe:!0,callback:e=>{e&&(this.queryClient=e)}}),new c(this.host,{context:i,subscribe:!0,callback:e=>{this.apiClient=e}}),this.host.addController(this)}_queryKey(e){if(this.apiClient)return h(this.apiClient,{hash:e}).queryKey}_setActiveAbsence(e,s){const t=this._queryKey(e);t&&this.queryClient?.setQueryData(t,e=>e?{...e,active_absence:s}:void 0)}_clearTimer(e){const s=this.clearTimers.get(e);s&&(clearTimeout(s),this.clearTimers.delete(e))}hostConnected(){}hostDisconnected(){this.socket?.off(a.absence_created,this._onAbsenceCreated),this.socket?.off(a.absence_cancelled,this._onAbsenceCancelled);for(const e of this.clearTimers.values())clearTimeout(e);this.clearTimers.clear()}}let u=class MqProfessionalPresenceSync extends t{constructor(){super(...arguments),this._controller=new ProfessionalPresenceSyncController(this)}createRenderRoot(){return this}render(){return n}};u=e([s("mq-professional-presence-sync")],u);export{u as MqProfessionalPresenceSync,ProfessionalPresenceSyncController};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{isValidLocale as t,setLocale as e,getLocale as i,initLocalization as s}from"./i18n.js";import{_ as r,c as n}from"./chunks/custom-element-D2ziPxYE.js";import{e as o}from"./chunks/provide-BwI4DDGF.js";import{c as a}from"./chunks/consume-CovVqBjI.js";import{m as c}from"./chunks/runtime-Bg1WXVCx.js";import{l as p}from"./chunks/localized-decorator-BlOuLhym.js";import{Q as m}from"./chunks/query-controller-BlO1Ax65.js";import{A as h}from"./chunks/api-client-context-V1UAGtKW.js";import{l as u}from"./chunks/chunk-S5RWG6G2-DPesx3Od.js";import{
|
|
1
|
+
import{isValidLocale as t,setLocale as e,getLocale as i,initLocalization as s}from"./i18n.js";import{_ as r,c as n}from"./chunks/custom-element-D2ziPxYE.js";import{e as o}from"./chunks/provide-BwI4DDGF.js";import{c as a}from"./chunks/consume-CovVqBjI.js";import{m as c}from"./chunks/runtime-Bg1WXVCx.js";import{l as p}from"./chunks/localized-decorator-BlOuLhym.js";import{Q as m}from"./chunks/query-controller-BlO1Ax65.js";import{A as h}from"./chunks/api-client-context-V1UAGtKW.js";import{l as u}from"./chunks/chunk-S5RWG6G2-DPesx3Od.js";import{g as l,t as d,r as k}from"./chunks/telemetry-client-BdPx4SXu.js";import{g as j}from"./chunks/get-patient-documents-query-NC9xCa_N.js";import{g}from"./chunks/get-patient-profile-query-4AO6xvVn.js";import{i as f,a as y,x as v}from"./chunks/lit-element-DiWJYFwC.js";import{n as b}from"./chunks/property-scuRaFcM.js";import{r as x}from"./chunks/state-LQivXIgA.js";import{setEnv as w}from"./env.js";import{t as S}from"./chunks/index-B7uU0VJH.js";import{MqViewDocumentsEvent as q}from"./events.js";export{DownloadFileEvent}from"./events.js";import{c as C,n as $}from"./chunks/api-chat-client-DLpFzml6.js";import"./chunks/index-Bw-MbGKw.js";import"./chunks/index-DEEAEB_4.js";import"./chunks/chunk-4FFT6DC2-CVWibomC.js";import"./chunks/external-CJj32K_p.js";import"./chunks/context-request-event-Dfydf1ub.js";import"./chunks/context-consumer-ESdICVAb.js";import"./chunks/chunk-RCFIJTXZ-C6Ir0-sM.js";import"./chunks/create-context-DqP79qjF.js";import"./chunks/query-Cjvi4_dT.js";import"./chunks/chunk-6CCJWPGL-TiaqZaPV.js";import"./chunks/blob-to-base64-CUL1trde.js";import"./ui/icons/download-02-icon.js";import"./chunks/if-defined-BYeVdwgd.js";import"./ui/icons/types.js";import"./ui/mq-button.js";import"./chunks/class-map-Co76I6aw.js";import"./chunks/directive-2EDmOukv.js";import"./ui/mq-toast.js";import"./ui/mq-skeleton.js";import"./chunks/style-map-CIdqdn7C.js";import"./chunks/chunk-2TKJJNS7-BGwxtEg7.js";import"./chunks/parseISO-Dj3qSTG8.js";import"./chunks/format-CRFiCNHw.js";import"./chunks/isBefore-CPpTogxo.js";import"./ui/icons/arrow-right-icon.js";import"./ui/icons/calendar-icon.js";import"./ui/icons/file-icon.js";const P=f`:host{display:flex;flex-direction:column;align-self:start;gap:var(--sp-4);width:100%;min-width:0;box-sizing:border-box}.card{display:flex;flex-direction:column;gap:var(--sp-3);min-width:0;box-sizing:border-box;background-color:var(--color-card,#fff);border:1px solid var(--color-border-subtle,#edecf1);border-radius:var(--mq-recent-documents-radius,12px);padding:var(--mq-recent-documents-padding,var(--sp-6))}`;let D=class MqRecentDocuments extends y{constructor(){super(...arguments),this.apiClient=C(),this.getPatientProfileQuery=new m(this,()=>g(this.apiClient,{enabled:!this.loginToken})),this.getPatientDocumentsQuery=new m(this,()=>({...j(this.apiClient,{patient_hash:this.patientHash,page:1,per_page:3}),enabled:!!this.patientHash})),this.getOrganizationSpecialtiesQuery=new m(this,()=>l(this.apiClient)),this.handleViewAll=()=>{d.track(k(this.patientHash)),this.dispatchEvent(new q)}}static{this.styles=P}willUpdate(i){i.has("env")&&this.env&&w(this.env),i.has("locale")&&this.locale&&t(this.locale)&&e(this.locale);const s=$(i,{env:this.env,apiKey:this.apiKey,token:this.token,locale:this.locale},this.inheritedApiClient);s&&(this.apiClient=s)}get patientHash(){return this.loginToken?.patient.hash??this.getPatientProfileQuery.result?.data?.hash??""}renderEmptyState(){return v`<widget-empty-state icon="document" heading="${c("No tienes documentación")}" description="${c("Aquí se mostrarán tus recetas e informes médicos.")}"></widget-empty-state>`}renderSkeleton(){return v`<document-list placeholders="${3}"></document-list>`}renderError(){return v`<widget-empty-state icon="document" heading="${c("No hemos podido cargar tu documentación")}" description="${c("Vuelve a intentarlo en unos minutos.")}"></widget-empty-state>`}renderDocuments(){return this.getPatientDocumentsQuery.render({complete:t=>0===t.data.length?this.renderEmptyState():v`<document-list .documents="${S(t.data,this.getOrganizationSpecialtiesQuery.result?.data,i())}" patientHash="${this.patientHash}"></document-list>`,initial:()=>this.getPatientProfileQuery.result?.isError?this.renderError():this.renderSkeleton(),pending:()=>this.renderSkeleton(),error:()=>this.renderError()})}render(){return v`<section-header heading="${c("Documentos recientes")}" action-label="${c("Ver todas")}" @section-action="${this.handleViewAll}"></section-header><div class="card">${this.renderDocuments()}</div>`}};r([b({type:String,attribute:"api-key"})],D.prototype,"apiKey",void 0),r([b({type:String,attribute:"token"})],D.prototype,"token",void 0),r([b({type:String,attribute:"locale"})],D.prototype,"locale",void 0),r([b({type:String,attribute:"env"})],D.prototype,"env",void 0),r([a({context:h,subscribe:!0}),x()],D.prototype,"inheritedApiClient",void 0),r([o({context:h}),x()],D.prototype,"apiClient",void 0),r([a({context:u,subscribe:!0})],D.prototype,"loginToken",void 0),D=r([p(),n("mq-recent-documents")],D),s();export{D as MqRecentDocuments,q as MqViewDocumentsEvent};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{isValidLocale as t,setLocale as e,getLocale as i,initLocalization as o}from"./i18n.js";import{_ as n,c as a}from"./chunks/custom-element-D2ziPxYE.js";import{m as s,s as r}from"./chunks/runtime-Bg1WXVCx.js";import{l as c}from"./chunks/localized-decorator-BlOuLhym.js";import{A as p}from"./chunks/api-client-context-V1UAGtKW.js";import{i as l,a as d,x as m,E as u}from"./chunks/lit-element-DiWJYFwC.js";import{n as h}from"./chunks/property-scuRaFcM.js";import{r as v}from"./chunks/state-LQivXIgA.js";import{setEnv as g}from"./env.js";import{MqViewAppointmentsEvent as f,MqHomeEvent as k}from"./events.js";import{c as b,A as y,n as x,C as j}from"./chunks/api-chat-client-
|
|
1
|
+
import{isValidLocale as t,setLocale as e,getLocale as i,initLocalization as o}from"./i18n.js";import{_ as n,c as a}from"./chunks/custom-element-D2ziPxYE.js";import{m as s,s as r}from"./chunks/runtime-Bg1WXVCx.js";import{l as c}from"./chunks/localized-decorator-BlOuLhym.js";import{A as p}from"./chunks/api-client-context-V1UAGtKW.js";import{i as l,a as d,x as m,E as u}from"./chunks/lit-element-DiWJYFwC.js";import{n as h}from"./chunks/property-scuRaFcM.js";import{r as v}from"./chunks/state-LQivXIgA.js";import{setEnv as g}from"./env.js";import{MqViewAppointmentsEvent as f,MqHomeEvent as k}from"./events.js";import{c as b,A as y,n as x,C as j}from"./chunks/api-chat-client-DLpFzml6.js";import{checkIcon as w}from"./ui/icons/check-icon.js";import"./ui/mq-callout.js";import"./ui/mq-button.js";import{e as $}from"./chunks/provide-BwI4DDGF.js";import{c as q}from"./chunks/consume-CovVqBjI.js";import{l as C}from"./chunks/chunk-S5RWG6G2-DPesx3Od.js";import"./chunks/professional-overview-C4H_znIJ.js";import"./chunks/appointment-details-BriSqXWj.js";import{Q as _}from"./chunks/query-controller-BlO1Ax65.js";import{s as S}from"./chunks/chunk-6CCJWPGL-TiaqZaPV.js";import{g as z}from"./chunks/get-appointment-query-C-gTTuiQ.js";import{g as I}from"./chunks/get-patient-profile-query-4AO6xvVn.js";import{g as A}from"./chunks/chunk-Y4EKUX25-QqMl3eiq.js";import{b as T}from"./chunks/chunk-2TKJJNS7-BGwxtEg7.js";import{calendarIcon as O}from"./ui/icons/calendar-icon.js";import{chatbubbleIcon as Q}from"./ui/icons/chat-bubble-icon.js";import{videoIcon as P}from"./ui/icons/video-icon.js";import"./mq-chat-room.js";import"./ui/mq-floating-bubble.js";import"./ui/mq-unread-badge.js";import{g as E,t as N,m as V,e as B,n as H,o as U,p as F}from"./chunks/telemetry-client-BdPx4SXu.js";import{f as G}from"./chunks/price-DU3YLTpk.js";import"./ui/mq-skeleton.js";import"./ui/mq-card.js";import{Q as K}from"./chunks/chunk-RCFIJTXZ-C6Ir0-sM.js";import{a as M}from"./chunks/addSeconds-ofMnxlgT.js";import"./chunks/chunk-4FFT6DC2-CVWibomC.js";import"./chunks/external-CJj32K_p.js";import"./chunks/create-context-DqP79qjF.js";import"./chunks/isBefore-CPpTogxo.js";import"./chunks/parseISO-Dj3qSTG8.js";import"./chunks/if-defined-BYeVdwgd.js";import"./ui/icons/types.js";import"./ui/icons/info-circle-outine-icon.js";import"./chunks/class-map-Co76I6aw.js";import"./chunks/directive-2EDmOukv.js";import"./chunks/context-request-event-Dfydf1ub.js";import"./chunks/context-consumer-ESdICVAb.js";import"./ui/icons/chevron-down-icon.js";import"./ui/mq-text-button.js";import"./ui/mq-avatar.js";import"./ui/icons/briefcase-icon.js";import"./ui/icons/clock-icon.js";import"./ui/icons/message-bubble-icon.js";import"./ui/icons/phone-icon.js";import"./chunks/query-Cjvi4_dT.js";import"./chunks/format-CRFiCNHw.js";import"./theme.js";import"./ui/icons/x-icon.js";import"./chunks/chunk-BUV4MGML-CkhBbfUu.js";import"./ui/icons/chevron-left-icon.js";import"./chunks/query-CeeutdfT.js";import"./ui/icons/check-double-icon.js";import"./chunks/chunk-YTQUGGS3-DmCGIoFy.js";import"./chunks/mutation-controller-CR2qcqhH.js";import"./chunks/style-map-CIdqdn7C.js";const R=l`header{padding:var(--sp-6) var(--sp-4);display:flex;align-items:center;gap:var(--sp-2);max-width:var(--content-max-width);margin:0 auto}.summary{padding:var(--sp-6) var(--sp-4);background-color:var(--color-neutrals-background-weak);max-width:var(--content-max-width);margin:0 auto}.summary-content{display:flex;flex-direction:column;gap:var(--sp-4)}.manage-appointment{box-sizing:border-box;max-width:var(--content-max-width);margin:0 auto}`;let J=class MqScheduleSuccessSkeleton extends d{static{this.styles=R}render(){return m`<div><header><mq-skeleton width="220px" height="40px" border-radius="md"></mq-skeleton></header><div class="summary"><div class="summary-content"><mq-skeleton width="280px" height="32px" border-radius="md"></mq-skeleton><mq-skeleton width="100%" height="400px" border-radius="lg"></mq-skeleton><mq-skeleton width="100%" height="80px" border-radius="lg"></mq-skeleton></div></div><div class="manage-appointment"><mq-skeleton width="100%" height="313px" border-radius="lg"></mq-skeleton></div></div>`}};J=n([a("mq-schedule-success-skeleton")],J);const L=l`.success-title{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-4)}header h1{font-family:var(--font-titles);font-size:var(--text-3xl);line-height:var(--text-3xl--line-height);font-weight:var(--font-weight-bold);margin:0}h2{font-family:var(--font-titles);font-size:var(--text-2xl);line-height:var(--text-2xl--line-height);font-weight:var(--font-weight-bold);margin:0;margin-bottom:var(--sp-6)}.summary{padding:var(--sp-6) var(--sp-4)}.professional-card{padding:var(--sp-4)}.appointment-summary{margin-bottom:var(--sp-2);display:flex;flex-direction:column;gap:var(--sp-4)}.add-to-calendar-container{padding-top:var(--sp-4);border-top:1px solid var(--color-neutrals-border-disabled)}.price-breakdown{display:flex;flex-direction:column;gap:var(--sp-2)}.price-row{display:flex;justify-content:space-between;gap:var(--sp-4);font-family:var(--font-body);font-size:var(--text-base);line-height:var(--text-base--line-height);color:var(--color-neutrals-text-default)}.price-row--total{font-weight:var(--font-weight-semibold)}.price-breakdown hr{width:100%;border:none;border-top:1px solid var(--color-neutrals-border-disabled);margin:var(--sp-1) 0}.floating-content{height:100%}.actions{display:flex;flex-direction:column;gap:var(--sp-4)}@media (min-width:768px){.actions{flex-direction:row}}.footer-cta{margin-top:var(--sp-4);padding:var(--sp-6) var(--sp-4)}.footer-cta h2{margin-bottom:var(--sp-2)}.footer-cta .description{font-family:var(--font-body);font-size:var(--text-base);line-height:var(--text-base--line-height);color:var(--color-neutrals-text-default);margin:0 0 var(--sp-6)}.footer-cta .actions{display:flex;flex-direction:column;gap:var(--sp-3)}`;class OpenVideocallEvent extends Event{static{this.eventName="open-videocall"}constructor(t){super(OpenVideocallEvent.eventName,{bubbles:!0,composed:!0}),this.detail=t}}let D=class MqScheduleSuccess extends d{constructor(){super(...arguments),this.kind="schedule",this.showNavCtas=!1,this._trackedPageView=!1,this.apiClient=b(),this.getPatientProfileQuery=new _(this,()=>I(this.apiClient)),this.getAppointmentQuery=new _(this,()=>z(this.apiClient,{id:this.appointmentId})),this.getCouponQuery=new _(this,()=>{return t=this.apiClient,e={appointmentId:this.appointmentId},i={enabled:!!this.appointmentId},{queryKey:S(t,"appointment-consultation-coupon",e.appointmentId),queryFn:()=>t.payments.getAppointmentConsultationCoupon(e.appointmentId),retry:!1,...i};var t,e,i}),this.getOrganizationSpecialtiesQuery=new _(this,()=>E(this.apiClient)),this.isChatOpen=!1,this.unreadQuery=new _(this,()=>A(this.apiClient,{roomId:Number(this.getAppointmentQuery.result?.data?.room_id)},{enabled:!!this.getAppointmentQuery.result?.data?.room_id})),this._getCalloutText=t=>{switch(t.channel){case y.videocall:return s("Te enviaremos un enlace al email indicado cuando sea el momento de conectarte a la vídeoconsulta. Asegúrate de tener buena conexión a internet y un dispositivo con cámara y micrófono.");case y.phonecall:return s(r`El profesional te llamará al
|
|
2
2
|
${this.getPatientProfileQuery.result?.data?.profile.phone??""} en el horario
|
|
3
3
|
seleccionado. Asegúrate de tener buena cobertura y poder atender en
|
|
4
|
-
el horario elegido.`);case y.chat:return s("El profesional te enviará un mensaje para que podamos coordinar la cita. Asegúrate de tener buena cobertura y poder atender en el horario elegido.");default:return u}}}static{this.styles=
|
|
4
|
+
el horario elegido.`);case y.chat:return s("El profesional te enviará un mensaje para que podamos coordinar la cita. Asegúrate de tener buena cobertura y poder atender en el horario elegido.");default:return u}}}static{this.styles=L}get _accessToken(){return this.token??this.loginToken?.access_token}get _timezone(){return this.timezone||Intl.DateTimeFormat().resolvedOptions().timeZone||"UTC"}willUpdate(i){i.has("env")&&this.env&&g(this.env),i.has("locale")&&this.locale&&t(this.locale)&&e(this.locale);const o=x(i,{env:this.env,apiKey:this.apiKey,token:this.token,locale:this.locale},this.inheritedApiClient);o&&(this.apiClient=o)}get _patientHash(){return this.getPatientProfileQuery.result?.data?.hash??""}connectedCallback(){super.connectedCallback(),this.queryClientContext?.invalidateQueries()}updated(){!this._trackedPageView&&this._patientHash&&(this._trackedPageView=!0,N.track(V(this._patientHash,this.appointmentId)))}renderPriceBreakdown(t,e,i){const o=t.price;if(null==o||o<=0)return u;const n=t.currency??"EUR",a=t.discount_amount??0,r=a>0,c=o-a,p=this.getCouponQuery.result?.data,l=p?.name??p?.code,d=r?p?.percent_off??Math.round(a/o*100):0,h=l?`${s("Promoción")} ${l}`:s("Promoción");return m`<div class="price-breakdown"><div class="price-row"><span>${i}</span> <span>${G({amount:o,currency:n},e)}</span></div>${r?m`<div class="price-row"><span>${h} (-${d}%)</span> <span>${G({amount:-a,currency:n},e)}</span></div><hr><div class="price-row price-row--total"><span>${s("Total")}</span> <span>${G({amount:c,currency:n},e)}</span></div>`:u}</div>`}render(){return this.getAppointmentQuery.render({pending:()=>m`<mq-schedule-success-skeleton></mq-schedule-success-skeleton>`,complete:t=>{const e=i(),o=T(t.start_date),n=M(o,t.duration),a=this.getOrganizationSpecialtiesQuery.result?.data?.find(e=>e.id===Number(t.speciality_id)),c=B(a?.code??"",e,a?.name),p=t.channel===y.videocall,l=t.channel===y.phonecall,d=!0===t.has_chat_in_appointment,h=(p||l)&&d,v=this._accessToken;return m`<div><header><div class="success-title">${w()}<h1>${"schedule"===this.kind?s("Cita confirmada"):s("Cita modificada")}</h1></div><h2>${s(r`Resumen de la cita para ${t?.to?.name??""}`)}</h2></header><mq-card class="summary" roundness="md"><div class="appointment-summary"><professional-overview .name="${t.from.name??""}" .specialtyName="${c}" .collegiateNumber="${t.from.collegiate_number??void 0}" .description="${t.from.description??""}" .languages="${t.from.languages??[]}" .avatar="${t.from.avatar??""}" always-expanded-on-desktop></professional-overview><appointment-details .startsAt="${o.toISOString()}" .duration="${t.duration}" .channel="${t.channel}" .timezone="${this._timezone}"></appointment-details>${this.renderPriceBreakdown(t,e,c||s("Consulta"))}<div class="add-to-calendar-container"><mq-text-button fontWeight="bold" size="sm" @click="${()=>{N.track(H(this._patientHash,this.appointmentId));const e=function({title:t,description:e,startsAt:i,endsAt:o}){const n=t=>t.toISOString().replace(/[-:]/g,"").replace(/\.\d{3}/,""),a=n(i),s=n(o);return`https://www.google.com/calendar/render?${new URLSearchParams({action:"TEMPLATE",text:t,dates:`${a}/${s}`,...e&&{details:e}}).toString()}`}({title:s(r`Cita agendada de ${t.from.speciality??""}`),startsAt:o,endsAt:n,description:p&&t.consultation_short_url?s(r`Enlace a la cita: ${t.consultation_short_url}`):void 0});window.open(e,"_blank")}}">${O({size:24})} ${s("Añadir al calendario")}</mq-text-button></div>${h||p?m`<div class="actions">${h?m`<mq-button variant="primary" fullwidth size="md" @click="${()=>{N.track(U(this._patientHash,this.appointmentId)),this.isChatOpen=!this.isChatOpen}}">${Q({size:24})} ${s("Chatear con el profesional")} ${(this.unreadQuery.result?.data?.unread_count??0)>0?m`<mq-unread-badge></mq-unread-badge>`:u}</mq-button>`:u} ${p?m`<mq-button variant="outline" fullwidth size="md" @click="${()=>{N.track(F(this._patientHash,this.appointmentId)),this.dispatchEvent(new OpenVideocallEvent({appointmentId:this.appointmentId}))}}">${P({size:24})} ${s("Ir a videollamada")}</mq-button>`:u}</div>`:u}</div><mq-callout background="default" variant="info" ?noPadding="${!(h||p)}">${this._getCalloutText(t)}</mq-callout></mq-card>${this.showNavCtas?m`<mq-card class="footer-cta" roundness="md"><h2>${s("Tus citas")}</h2><p class="description">${s("Accede, modifica o anula tus citas.")}</p><div class="actions"><mq-button variant="primary" size="md" fullwidth @click="${()=>{this.dispatchEvent(new f({tab:"next"}))}}">${s("Ver mis citas")}</mq-button><mq-button variant="outline" size="md" fullwidth @click="${()=>{this.dispatchEvent(new k)}}">${s("Volver al inicio")}</mq-button></div></mq-card>`:u}</div><mq-floating-bubble ?dismissable="${!1}" .open="${this.isChatOpen}" @mq-close="${()=>{this.isChatOpen=!1}}" hideCloseButton>${this.isChatOpen&&v?m`<div slot="content" class="floating-content"><mq-chat-room .consultationId="${t.id}" .consultationType="${j.appointment}" .token="${v}" .roomId="${Number(t.room_id)}" .professionalHash="${t.from.hash}" @mq-chat-room-close="${()=>{this.isChatOpen=!1}}"></mq-chat-room></div>`:u}</mq-floating-bubble>`}})}};n([h({type:String})],D.prototype,"kind",void 0),n([h({type:String})],D.prototype,"appointmentId",void 0),n([h({type:String,attribute:"api-key"})],D.prototype,"apiKey",void 0),n([h({type:String,attribute:"token"})],D.prototype,"token",void 0),n([h({type:String,attribute:"timezone"})],D.prototype,"timezone",void 0),n([h({type:String,attribute:"locale"})],D.prototype,"locale",void 0),n([h({type:String,attribute:"env"})],D.prototype,"env",void 0),n([h({type:Boolean,attribute:"show-nav-ctas"})],D.prototype,"showNavCtas",void 0),n([q({context:K,subscribe:!0})],D.prototype,"queryClientContext",void 0),n([q({context:C})],D.prototype,"loginToken",void 0),n([q({context:p,subscribe:!0}),v()],D.prototype,"inheritedApiClient",void 0),n([$({context:p}),v()],D.prototype,"apiClient",void 0),n([v()],D.prototype,"isChatOpen",void 0),D=n([c(),a("mq-schedule-success")],D),o();export{D as MqScheduleSuccess,OpenVideocallEvent};
|
package/dist/mq-schedule.d.ts
CHANGED
|
@@ -370,12 +370,18 @@ declare global {
|
|
|
370
370
|
* Payment method picker for the schedule flow.
|
|
371
371
|
*
|
|
372
372
|
* @element payment-method-selector
|
|
373
|
+
* @attr {boolean} show-google-pay - Offer Google Pay, when the device supports it
|
|
374
|
+
* @attr {boolean} show-apple-pay - Offer Apple Pay, when the device supports it
|
|
373
375
|
* @fires payment-method-selected - Fired when the user confirms a method (bubbles, composed; `method` on the event)
|
|
374
376
|
*/
|
|
375
377
|
declare class PaymentMethodSelector extends LitElement {
|
|
376
378
|
static styles: lit.CSSResult;
|
|
377
379
|
showWallets: boolean;
|
|
380
|
+
showGooglePay: boolean;
|
|
381
|
+
showApplePay: boolean;
|
|
378
382
|
private _selected;
|
|
383
|
+
private get _googlePayVisible();
|
|
384
|
+
private get _applePayVisible();
|
|
379
385
|
protected willUpdate(changed: PropertyValues<this>): void;
|
|
380
386
|
private _select;
|
|
381
387
|
private _confirm;
|
|
@@ -426,6 +432,8 @@ declare class PaymentStep extends LitElement {
|
|
|
426
432
|
countryCode: string;
|
|
427
433
|
successUrl?: string;
|
|
428
434
|
provider?: PaymentProvider;
|
|
435
|
+
googlePayEnabled: boolean;
|
|
436
|
+
applePayEnabled: boolean;
|
|
429
437
|
queryClientContext: QueryClient | undefined;
|
|
430
438
|
private _view;
|
|
431
439
|
private _walletWaiting;
|
|
@@ -580,7 +588,6 @@ declare class SelectProfessionalStep extends LitElement {
|
|
|
580
588
|
patient: SchedulePatient;
|
|
581
589
|
defaultSpecialty: string | undefined;
|
|
582
590
|
defaultService: string | undefined;
|
|
583
|
-
showBack: boolean;
|
|
584
591
|
formData: {
|
|
585
592
|
service_id: string;
|
|
586
593
|
specialty_id: string;
|
|
@@ -699,6 +706,7 @@ declare global {
|
|
|
699
706
|
|
|
700
707
|
declare class SelectSlotStepSkeleton extends LitElement {
|
|
701
708
|
static styles: lit.CSSResult;
|
|
709
|
+
showTitle: boolean;
|
|
702
710
|
render(): lit_html.TemplateResult<1>;
|
|
703
711
|
}
|
|
704
712
|
declare global {
|
|
@@ -754,6 +762,10 @@ declare class MqSchedule extends LitElement {
|
|
|
754
762
|
*/
|
|
755
763
|
applePaySuccessUrl?: string;
|
|
756
764
|
returnUrl?: string;
|
|
765
|
+
/** Offer Google Pay in the payment step, when the device supports it. */
|
|
766
|
+
googlePayEnabled: boolean;
|
|
767
|
+
/** Offer Apple Pay in the payment step, when the device supports it. */
|
|
768
|
+
applePayEnabled: boolean;
|
|
757
769
|
/** IANA timezone for slot times; the host supplies it (not in the profile),
|
|
758
770
|
* defaulting to the browser's. */
|
|
759
771
|
timezone?: string;
|