@fayz-ai/plugin-agenda 0.15.0 → 0.16.0
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/dist/components/AppointmentModal.d.ts.map +1 -1
- package/dist/config.d.ts +11 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/data/supabase.d.ts.map +1 -1
- package/dist/index.js +117 -8
- package/dist/index.js.map +1 -1
- package/dist/locales/en.d.ts.map +1 -1
- package/dist/locales/pt-BR.d.ts.map +1 -1
- package/dist/types.d.ts +33 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppointmentModal.d.ts","sourceRoot":"","sources":["../../src/components/AppointmentModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAA;AAoBnE,OAAO,KAAK,EAAE,kBAAkB,EAAiB,MAAM,UAAU,CAAA;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAiPtD,UAAU,KAAK;IACb,IAAI,EAAE,OAAO,CAAA;IACb,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,qBAAqB,CAAA;IACtC,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAA;CACxE;
|
|
1
|
+
{"version":3,"file":"AppointmentModal.d.ts","sourceRoot":"","sources":["../../src/components/AppointmentModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAA;AAoBnE,OAAO,KAAK,EAAE,kBAAkB,EAAiB,MAAM,UAAU,CAAA;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAiPtD,UAAU,KAAK;IACb,IAAI,EAAE,OAAO,CAAA;IACb,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,qBAAqB,CAAA;IACtC,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAA;CACxE;AASD,wBAAgB,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,KAAK,qBAw3BzH"}
|
package/dist/config.d.ts
CHANGED
|
@@ -107,6 +107,16 @@ export interface AgendaPluginOptions {
|
|
|
107
107
|
autoCreateOrder?: boolean;
|
|
108
108
|
/** Contact/client lookup */
|
|
109
109
|
contactLookup?: EntityLookup;
|
|
110
|
+
/** De onde saem os CONVIDADOS.
|
|
111
|
+
*
|
|
112
|
+
* Separado de `contactLookup` de propósito. O lookup de cliente costuma ser
|
|
113
|
+
* estreito — numa casa é `customer|supplier|lead` —, e com razão: o cliente
|
|
114
|
+
* de um compromisso é uma dessas coisas.
|
|
115
|
+
*
|
|
116
|
+
* Convidado não. Numa reunião comercial senta gente da casa junto com gente
|
|
117
|
+
* de fora, e herdar o recorte do cliente deixaria de fora exatamente os
|
|
118
|
+
* colegas. O padrão é PESSOA, sem recorte. */
|
|
119
|
+
attendeeLookup?: EntityLookup;
|
|
110
120
|
/** Client entity definition for the Client tab in booking modal */
|
|
111
121
|
clientEntityDef?: EntityDef;
|
|
112
122
|
/** Service lookup */
|
|
@@ -219,6 +229,7 @@ export interface ResolvedAgendaConfig {
|
|
|
219
229
|
source?: ExternalBookingSource;
|
|
220
230
|
}) => void | Promise<void>;
|
|
221
231
|
contactLookup?: EntityLookup;
|
|
232
|
+
attendeeLookup?: EntityLookup;
|
|
222
233
|
clientEntityDef?: EntityDef;
|
|
223
234
|
serviceLookup?: EntityLookup;
|
|
224
235
|
professionalLookup?: EntityLookup;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC/E,OAAO,EAAyB,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAC9D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAM9C,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,2BAA2B;IAC1C,WAAW,IAAI,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAA;IAClD,uBAAuB,CAAC,KAAK,EAAE;QAC7B,SAAS,EAAE,MAAM,CAAA;QACjB,QAAQ,EAAE,MAAM,CAAA;QAChB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE;QACR,YAAY,CAAC,EAAE,OAAO,CAAA;QACtB,aAAa,CAAC,EAAE,OAAO,CAAA;QACvB,iBAAiB,CAAC,EAAE,OAAO,CAAA;QAC3B,WAAW,CAAC,EAAE,OAAO,CAAA;QACrB,iBAAiB,CAAC,EAAE,OAAO,CAAA;QAC3B,mFAAmF;QACnF,SAAS,CAAC,EAAE,OAAO,CAAA;KACpB,CAAA;IACD,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IACpC,QAAQ,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAE9D,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB,uDAAuD;IACvD,YAAY,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAElC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,QAAQ,CAAA;IAEpB,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAA;IAEzB,2IAA2I;IAC3I,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAE5B,6DAA6D;IAC7D,aAAa,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;IAEtD,6CAA6C;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAEzB;;;;;;;;;;;kFAW8E;IAC9E,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAE9B,mEAAmE;IACnE,eAAe,CAAC,EAAE,OAAO,CAAA;IAEzB,4BAA4B;IAC5B,aAAa,CAAC,EAAE,YAAY,CAAA;IAE5B;;;;;;;;mDAQ+C;IAC/C,cAAc,CAAC,EAAE,YAAY,CAAA;IAE7B,mEAAmE;IACnE,eAAe,CAAC,EAAE,SAAS,CAAA;IAE3B,qBAAqB;IACrB,aAAa,CAAC,EAAE,YAAY,CAAA;IAE5B,gCAAgC;IAChC,kBAAkB,CAAC,EAAE,YAAY,CAAA;IAEjC,sBAAsB;IACtB,cAAc,CAAC,EAAE,YAAY,CAAA;IAE7B,gFAAgF;IAChF,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,cAAc,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAEjF,4CAA4C;IAC5C,SAAS,CAAC,EAAE,cAAc,EAAE,CAAA;IAE5B,mCAAmC;IACnC,oBAAoB,CAAC,EAAE,yBAAyB,EAAE,CAAA;IAElD,iEAAiE;IACjE,mBAAmB,CAAC,EAAE,2BAA2B,CAAA;IAEjD,6EAA6E;IAC7E,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,qBAAqB,CAAA;KAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEzG,oEAAoE;IACpE,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAExC,uEAAuE;IACvE,eAAe,CAAC,EAAE,qBAAqB,CAAA;IAEvC,+DAA+D;IAC/D,YAAY,CAAC,EAAE,kBAAkB,CAAA;IAEjC,0DAA0D;IAC1D,qBAAqB,CAAC,EAAE;QACtB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,eAAe,CAAC,EAAE,MAAM,CAAA;QACxB,cAAc,CAAC,EAAE,MAAM,CAAA;KACxB,CAAA;IAED,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW,CAAA;IACjC;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,KAAK,IAAI,CAAA;IACvG,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,UAAU,CAAC,EAAE,UAAU,CAAA;CACxB;AA2ED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,OAAO,CAAA;IACrB,aAAa,EAAE,OAAO,CAAA;IACtB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,WAAW,EAAE,OAAO,CAAA;IACpB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,SAAS,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,OAAO,CAAA;IACf,YAAY,EAAE,OAAO,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,aAAa,CAAA;IACtB,wFAAwF;IACxF,UAAU,EAAE,OAAO,CAAA;IACnB,+DAA+D;IAC/D,YAAY,EAAE,kBAAkB,CAAA;IAChC,MAAM,EAAE,kBAAkB,CAAA;IAC1B,QAAQ,EAAE,cAAc,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,YAAY,EAAE,CAAA;IACxB,YAAY,EAAE,iBAAiB,EAAE,CAAA;IACjC,aAAa,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;IACrD,YAAY,EAAE,MAAM,CAAA;IACpB,gBAAgB,EAAE,MAAM,CAAA;IACxB,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC7B,eAAe,EAAE,OAAO,CAAA;IACxB,SAAS,EAAE,cAAc,EAAE,CAAA;IAC3B,oBAAoB,EAAE,yBAAyB,EAAE,CAAA;IACjD,mBAAmB,CAAC,EAAE,2BAA2B,CAAA;IACjD,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,qBAAqB,CAAA;KAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzG,aAAa,CAAC,EAAE,YAAY,CAAA;IAC5B,cAAc,CAAC,EAAE,YAAY,CAAA;IAC7B,eAAe,CAAC,EAAE,SAAS,CAAA;IAC3B,aAAa,CAAC,EAAE,YAAY,CAAA;IAC5B,kBAAkB,CAAC,EAAE,YAAY,CAAA;IACjC,cAAc,CAAC,EAAE,YAAY,CAAA;IAC7B,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,cAAc,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACjF,eAAe,CAAC,EAAE,qBAAqB,CAAA;IACvC,qBAAqB,EAAE;QACrB,aAAa,EAAE,MAAM,CAAA;QACrB,aAAa,EAAE,MAAM,CAAA;QACrB,eAAe,EAAE,MAAM,CAAA;QACvB,cAAc,EAAE,MAAM,CAAA;KACvB,CAAA;IACD,mBAAmB,EAAE,MAAM,CAAA;CAC5B;AAMD,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,oBAAoB,CAiFjF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supabase.d.ts","sourceRoot":"","sources":["../../src/data/supabase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAkOjD,MAAM,WAAW,6BAA6B;IAC5C,uGAAuG;IACvG,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;
|
|
1
|
+
{"version":3,"file":"supabase.d.ts","sourceRoot":"","sources":["../../src/data/supabase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAkOjD,MAAM,WAAW,6BAA6B;IAC5C,uGAAuG;IACvG,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAyDD,wBAAgB,4BAA4B,CAAC,eAAe,CAAC,EAAE,6BAA6B,GAAG,kBAAkB,CAigBhH"}
|
package/dist/index.js
CHANGED
|
@@ -10,7 +10,7 @@ import resourceTimeGridPlugin from '@fullcalendar/resource-timegrid';
|
|
|
10
10
|
import interactionPlugin from '@fullcalendar/interaction';
|
|
11
11
|
import listPlugin from '@fullcalendar/list';
|
|
12
12
|
import ptBrLocale from '@fullcalendar/core/locales/pt-br';
|
|
13
|
-
import { Loader2, AlertCircle, RefreshCw, CalendarPlus, X, CheckCircle2, Search, LogIn, User, Clock, CalendarDays, Plus, Settings, ChevronLeft, ChevronRight, CircleAlert, CircleDollarSign, Ban, CheckSquare, Calendar, DollarSign, AlertTriangle, MapPin, Briefcase, CircleDot, FileText, Check, HandCoins, Pencil, Trash2, FileCheck, ArrowRightLeft, CreditCard, QrCode, Banknote, ExternalLink } from 'lucide-react';
|
|
13
|
+
import { Loader2, AlertCircle, RefreshCw, CalendarPlus, X, CheckCircle2, Search, LogIn, User, Clock, CalendarDays, Plus, Settings, ChevronLeft, ChevronRight, CircleAlert, CircleDollarSign, Ban, CheckSquare, Calendar, DollarSign, AlertTriangle, Users, MapPin, Briefcase, CircleDot, FileText, Check, HandCoins, Pencil, Trash2, FileCheck, ArrowRightLeft, CreditCard, QrCode, Banknote, ExternalLink } from 'lucide-react';
|
|
14
14
|
import { toast, Button, Checkbox, Badge, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, SubpageHeader, FilterSection, MiniCalendar, PageHeaderActions, ConfirmDialog, FilterCheckRow, SearchCombobox, cn, TooltipProvider, Tooltip, TooltipTrigger, TooltipContent } from '@fayz-ai/ui';
|
|
15
15
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
16
16
|
import { createPortal } from 'react-dom';
|
|
@@ -322,6 +322,10 @@ function resolveConfig(options) {
|
|
|
322
322
|
cancellationDetails: options?.cancellationDetails,
|
|
323
323
|
onBookingCreated: options?.onBookingCreated,
|
|
324
324
|
contactLookup: options?.contactLookup,
|
|
325
|
+
// Sem recorte quando ninguém disse o contrário: convidado é qualquer
|
|
326
|
+
// pessoa. Herdar `contactLookup` aqui seria herdar um recorte pensado
|
|
327
|
+
// para outra pergunta.
|
|
328
|
+
attendeeLookup: options?.attendeeLookup ?? createArchetypeLookup({ archetype: "person" }),
|
|
325
329
|
clientEntityDef: options?.clientEntityDef,
|
|
326
330
|
// Um PADRÃO, e não `undefined`.
|
|
327
331
|
//
|
|
@@ -1248,6 +1252,11 @@ function LocationSelect({ value, onChange, locations }) {
|
|
|
1248
1252
|
)) })
|
|
1249
1253
|
] });
|
|
1250
1254
|
}
|
|
1255
|
+
function rotuloDoTipo(t2, id, fallback) {
|
|
1256
|
+
const chave = `agenda.bookingType.${id}`;
|
|
1257
|
+
const traduzido = t2(chave);
|
|
1258
|
+
return !traduzido || traduzido === chave ? fallback : traduzido;
|
|
1259
|
+
}
|
|
1251
1260
|
function AppointmentModal({ open, mode, bookingId, prefill, initialTab, externalSource, onClose, onCreated }) {
|
|
1252
1261
|
const t2 = useTranslation();
|
|
1253
1262
|
const locale = getCurrentLocale();
|
|
@@ -1272,6 +1281,8 @@ function AppointmentModal({ open, mode, bookingId, prefill, initialTab, external
|
|
|
1272
1281
|
const [professionalId, setProfessionalId] = useState(prefill?.professionalId ?? "");
|
|
1273
1282
|
const [locationId, setLocationId] = useState(prefill?.locationId ?? "");
|
|
1274
1283
|
const [services, setServices] = useState([]);
|
|
1284
|
+
const [attendees, setAttendees] = useState([]);
|
|
1285
|
+
const [attendeeSeq, setAttendeeSeq] = useState(0);
|
|
1275
1286
|
const [serviceSearch, setServiceSearch] = useState("");
|
|
1276
1287
|
const [date, setDate] = useState(() => {
|
|
1277
1288
|
if (prefill?.startsAt) return prefill.startsAt.slice(0, 10);
|
|
@@ -1327,6 +1338,7 @@ function AppointmentModal({ open, mode, bookingId, prefill, initialTab, external
|
|
|
1327
1338
|
setProfessionalId(prefill?.professionalId ?? "");
|
|
1328
1339
|
setLocationId(prefill?.locationId ?? "");
|
|
1329
1340
|
setServices([]);
|
|
1341
|
+
setAttendees([]);
|
|
1330
1342
|
setServiceSearch("");
|
|
1331
1343
|
setNotes("");
|
|
1332
1344
|
setStatus("scheduled");
|
|
@@ -1394,6 +1406,7 @@ function AppointmentModal({ open, mode, bookingId, prefill, initialTab, external
|
|
|
1394
1406
|
durationMinutes: s.durationMinutes,
|
|
1395
1407
|
price: s.price
|
|
1396
1408
|
})));
|
|
1409
|
+
if (b.attendees) setAttendees(b.attendees.map((a) => ({ personId: a.personId, name: a.name })));
|
|
1397
1410
|
setEditOrderId(b.orderId ?? null);
|
|
1398
1411
|
setEditOrderTotal(b.orderTotal ?? 0);
|
|
1399
1412
|
setEditPaymentStatus(b.paymentStatus ?? "none");
|
|
@@ -1409,7 +1422,12 @@ function AppointmentModal({ open, mode, bookingId, prefill, initialTab, external
|
|
|
1409
1422
|
notes: b.notes ?? "",
|
|
1410
1423
|
cancellationReasonId: "",
|
|
1411
1424
|
cancellationNotes: "",
|
|
1412
|
-
services: svcSnap
|
|
1425
|
+
services: svcSnap,
|
|
1426
|
+
// Sem isto, uma edição que SÓ acrescenta um convidado não conta como
|
|
1427
|
+
// alteração e o botão "Atualizar" fica desabilitado para sempre — o
|
|
1428
|
+
// mesmo defeito que os serviços tiveram e que fez a lista vazia travar
|
|
1429
|
+
// o formulário.
|
|
1430
|
+
attendees: (b.attendees ?? []).map((a) => a.personId).sort()
|
|
1413
1431
|
});
|
|
1414
1432
|
setLoading(false);
|
|
1415
1433
|
if (b.orderId && config.financialBridge) {
|
|
@@ -1530,7 +1548,8 @@ function AppointmentModal({ open, mode, bookingId, prefill, initialTab, external
|
|
|
1530
1548
|
startsAt,
|
|
1531
1549
|
notes: notes || void 0,
|
|
1532
1550
|
title: activeType.fields.title ? title.trim() : void 0,
|
|
1533
|
-
services: services.map((s) => ({ serviceId: s.serviceId, name: s.name, durationMinutes: s.durationMinutes, price: s.price }))
|
|
1551
|
+
services: services.map((s) => ({ serviceId: s.serviceId, name: s.name, durationMinutes: s.durationMinutes, price: s.price })),
|
|
1552
|
+
attendees: activeType.fields.attendees ? attendees.map((a) => ({ personId: a.personId })) : void 0
|
|
1534
1553
|
});
|
|
1535
1554
|
invalidateLimit("bookings_month");
|
|
1536
1555
|
onClose();
|
|
@@ -1544,7 +1563,8 @@ function AppointmentModal({ open, mode, bookingId, prefill, initialTab, external
|
|
|
1544
1563
|
notes: notes || void 0,
|
|
1545
1564
|
status,
|
|
1546
1565
|
title: activeType.fields.title ? title.trim() : void 0,
|
|
1547
|
-
services: services.map((s) => ({ serviceId: s.serviceId, name: s.name, durationMinutes: s.durationMinutes, price: s.price }))
|
|
1566
|
+
services: services.map((s) => ({ serviceId: s.serviceId, name: s.name, durationMinutes: s.durationMinutes, price: s.price })),
|
|
1567
|
+
attendees: activeType.fields.attendees ? attendees.map((a) => ({ personId: a.personId })) : void 0
|
|
1548
1568
|
});
|
|
1549
1569
|
if (status === "cancelled" && config.cancellationDetails && cancellationReasonId) {
|
|
1550
1570
|
await config.cancellationDetails.saveCancellationDetails({
|
|
@@ -1577,8 +1597,8 @@ function AppointmentModal({ open, mode, bookingId, prefill, initialTab, external
|
|
|
1577
1597
|
const needsCancellationReason = mode === "edit" && status === "cancelled" && !!config.cancellationDetails;
|
|
1578
1598
|
const needsCancellationNotes = needsCancellationReason && !!selectedCancellationReason?.requiresNotes;
|
|
1579
1599
|
const formSnapshot = useMemo(
|
|
1580
|
-
() => JSON.stringify({ title, clientId, professionalId, locationId, date, startTime, status, notes, cancellationReasonId, cancellationNotes, services: services.map((s) => ({ id: s.serviceId, dur: s.durationMinutes, price: s.price })) }),
|
|
1581
|
-
[title, clientId, professionalId, locationId, date, startTime, status, notes, cancellationReasonId, cancellationNotes, services]
|
|
1600
|
+
() => JSON.stringify({ title, clientId, professionalId, locationId, date, startTime, status, notes, cancellationReasonId, cancellationNotes, services: services.map((s) => ({ id: s.serviceId, dur: s.durationMinutes, price: s.price })), attendees: attendees.map((a) => a.personId).sort() }),
|
|
1601
|
+
[title, clientId, professionalId, locationId, date, startTime, status, notes, cancellationReasonId, cancellationNotes, services, attendees]
|
|
1582
1602
|
);
|
|
1583
1603
|
const isDirty = mode === "create" || formSnapshot !== initialSnapshot.current;
|
|
1584
1604
|
const canSubmit = (!activeType.fields.title || title.trim()) && (!activeType.requiresClient || clientId) && (!activeType.fields.professional || professionalId) && (!activeType.requiresServices || services.length > 0) && (!needsCancellationReason || !!cancellationReasonId) && (!needsCancellationNotes || !!cancellationNotes.trim()) && !conflict && !saving;
|
|
@@ -1592,7 +1612,7 @@ function AppointmentModal({ open, mode, bookingId, prefill, initialTab, external
|
|
|
1592
1612
|
/* @__PURE__ */ jsxs(RightRailPage, { title: railTitle, open, onClose, width: "max-w-lg", children: [
|
|
1593
1613
|
/* @__PURE__ */ jsxs("div", { className: "px-5 pt-3 pb-3 shrink-0 space-y-3", children: [
|
|
1594
1614
|
showTabs && mode === "create" ? /* @__PURE__ */ jsx("div", { className: "flex gap-1 border-b fayz-glass-divider", children: config.bookingTypes.map((bt) => {
|
|
1595
|
-
const label = t2
|
|
1615
|
+
const label = rotuloDoTipo(t2, bt.id, bt.label);
|
|
1596
1616
|
const isActive = bookingType === bt.id;
|
|
1597
1617
|
const BtIcon = BOOKING_TYPE_ICONS[bt.icon] ?? Calendar;
|
|
1598
1618
|
return /* @__PURE__ */ jsxs(
|
|
@@ -1610,7 +1630,7 @@ function AppointmentModal({ open, mode, bookingId, prefill, initialTab, external
|
|
|
1610
1630
|
bt.id
|
|
1611
1631
|
);
|
|
1612
1632
|
}) }) : mode === "edit" && (config.clientEntityDef && clientId || config.modules.financial && editOrderId ? /* @__PURE__ */ jsx("div", { className: "flex gap-1 border-b fayz-glass-divider", children: [
|
|
1613
|
-
{ id: "appointment", label: t2
|
|
1633
|
+
{ id: "appointment", label: rotuloDoTipo(t2, bookingType, activeType.label), icon: Calendar, show: true },
|
|
1614
1634
|
{ id: "client", label: t2("agenda.appointment.clientTab"), icon: User, show: !!config.clientEntityDef && !!clientId },
|
|
1615
1635
|
{ id: "financial", label: t2("agenda.payment.title"), icon: DollarSign, show: config.modules.financial && !!editOrderId }
|
|
1616
1636
|
].filter((tab) => tab.show).map((tab) => {
|
|
@@ -1796,6 +1816,48 @@ function AppointmentModal({ open, mode, bookingId, prefill, initialTab, external
|
|
|
1796
1816
|
}
|
|
1797
1817
|
) })
|
|
1798
1818
|
] }),
|
|
1819
|
+
activeType.fields.attendees && /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3 py-1", children: [
|
|
1820
|
+
/* @__PURE__ */ jsx(Users, { className: "h-4 w-4 mt-1.5 text-muted-foreground shrink-0" }),
|
|
1821
|
+
/* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
1822
|
+
attendees.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1.5 mb-1.5", children: attendees.map((a) => /* @__PURE__ */ jsxs(
|
|
1823
|
+
"span",
|
|
1824
|
+
{
|
|
1825
|
+
className: "inline-flex items-center gap-1 rounded-full bg-muted/40 pl-2.5 pr-1 py-0.5 text-sm",
|
|
1826
|
+
children: [
|
|
1827
|
+
a.name,
|
|
1828
|
+
/* @__PURE__ */ jsx(
|
|
1829
|
+
"button",
|
|
1830
|
+
{
|
|
1831
|
+
type: "button",
|
|
1832
|
+
"aria-label": t2("agenda.attendees.remove"),
|
|
1833
|
+
onClick: () => setAttendees((p) => p.filter((x) => x.personId !== a.personId)),
|
|
1834
|
+
className: "rounded-full p-0.5 hover:bg-muted transition-colors",
|
|
1835
|
+
children: /* @__PURE__ */ jsx(X, { className: "h-3 w-3" })
|
|
1836
|
+
}
|
|
1837
|
+
)
|
|
1838
|
+
]
|
|
1839
|
+
},
|
|
1840
|
+
a.personId
|
|
1841
|
+
)) }),
|
|
1842
|
+
/* @__PURE__ */ jsx(
|
|
1843
|
+
ContactPicker,
|
|
1844
|
+
{
|
|
1845
|
+
value: null,
|
|
1846
|
+
onChange: (contact) => {
|
|
1847
|
+
if (!contact?.id) return;
|
|
1848
|
+
setAttendees((p) => p.some((x) => x.personId === contact.id) ? p : [...p, { personId: contact.id, name: contact.name ?? "" }]);
|
|
1849
|
+
setAttendeeSeq((n) => n + 1);
|
|
1850
|
+
},
|
|
1851
|
+
lookup: config.attendeeLookup,
|
|
1852
|
+
createEntityDef: config.clientEntityDef,
|
|
1853
|
+
variant: "inline",
|
|
1854
|
+
placeholder: t2("agenda.attendees.add"),
|
|
1855
|
+
createLabel: t2("agenda.appointment.newClient")
|
|
1856
|
+
},
|
|
1857
|
+
attendeeSeq
|
|
1858
|
+
)
|
|
1859
|
+
] })
|
|
1860
|
+
] }),
|
|
1799
1861
|
activeType.fields.location && config.modules.locationSelection && (storeLocations.length > 0 || config.locations.length > 0) && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 py-1", children: [
|
|
1800
1862
|
/* @__PURE__ */ jsx(MapPin, { className: "h-4 w-4 text-muted-foreground shrink-0" }),
|
|
1801
1863
|
/* @__PURE__ */ jsx(
|
|
@@ -4059,6 +4121,33 @@ async function getCanonicalBookingById(core, id) {
|
|
|
4059
4121
|
return booking ?? null;
|
|
4060
4122
|
}
|
|
4061
4123
|
var bookingChangesChannelSequence = 0;
|
|
4124
|
+
async function lerConvidados(core, bookingId) {
|
|
4125
|
+
const { data, error } = await core.from("appointment_attendees").select("id, person_id, role, people(name, email, avatar_url)").eq("booking_id", bookingId).order("created_at", { ascending: true });
|
|
4126
|
+
if (error || !data) return [];
|
|
4127
|
+
return data.map((r) => ({
|
|
4128
|
+
id: r.id,
|
|
4129
|
+
personId: r.person_id,
|
|
4130
|
+
name: r.people?.name ?? "",
|
|
4131
|
+
role: r.role ?? "required",
|
|
4132
|
+
email: r.people?.email ?? null,
|
|
4133
|
+
avatarUrl: r.people?.avatar_url ?? null
|
|
4134
|
+
}));
|
|
4135
|
+
}
|
|
4136
|
+
async function sincronizarConvidados(core, bookingId, tenantId, attendees) {
|
|
4137
|
+
if (attendees === void 0) return;
|
|
4138
|
+
const { error: delErr } = await core.from("appointment_attendees").delete().eq("booking_id", bookingId);
|
|
4139
|
+
if (delErr) throw delErr;
|
|
4140
|
+
if (!attendees.length) return;
|
|
4141
|
+
const { error } = await core.from("appointment_attendees").insert(
|
|
4142
|
+
attendees.map((a) => ({
|
|
4143
|
+
tenant_id: tenantId,
|
|
4144
|
+
booking_id: bookingId,
|
|
4145
|
+
person_id: a.personId,
|
|
4146
|
+
role: a.role ?? "required"
|
|
4147
|
+
}))
|
|
4148
|
+
);
|
|
4149
|
+
if (error) throw error;
|
|
4150
|
+
}
|
|
4062
4151
|
function createSupabaseAgendaProvider(providerOptions) {
|
|
4063
4152
|
const professionalKind = providerOptions?.professionalKind ?? "staff";
|
|
4064
4153
|
return {
|
|
@@ -4108,6 +4197,7 @@ function createSupabaseAgendaProvider(providerOptions) {
|
|
|
4108
4197
|
if (itemDuration) booking.totalDurationMinutes = itemDuration;
|
|
4109
4198
|
}
|
|
4110
4199
|
}
|
|
4200
|
+
booking.attendees = await lerConvidados(core, booking.id);
|
|
4111
4201
|
return booking;
|
|
4112
4202
|
}
|
|
4113
4203
|
return getCanonicalBookingById(core, id);
|
|
@@ -4159,6 +4249,11 @@ function createSupabaseAgendaProvider(providerOptions) {
|
|
|
4159
4249
|
});
|
|
4160
4250
|
if (rpcErr) throw rpcErr;
|
|
4161
4251
|
const booking = { id: created.appointment_id };
|
|
4252
|
+
try {
|
|
4253
|
+
await sincronizarConvidados(core, booking.id, tenantId, input.attendees);
|
|
4254
|
+
} catch (e) {
|
|
4255
|
+
console.error("[agenda] a reserva foi criada, os convidados n\xE3o:", e);
|
|
4256
|
+
}
|
|
4162
4257
|
const createdBooking = await this.getBookingById(booking.id);
|
|
4163
4258
|
if (!createdBooking) throw new Error("Created booking did not resolve from agenda read model");
|
|
4164
4259
|
return createdBooking;
|
|
@@ -4192,6 +4287,8 @@ function createSupabaseAgendaProvider(providerOptions) {
|
|
|
4192
4287
|
const effectiveAssigneeId = data.professionalId ?? existing?.assignee_id ?? null;
|
|
4193
4288
|
const { error } = await core.from("appointments").update(updates).eq("id", id);
|
|
4194
4289
|
if (error) throw error;
|
|
4290
|
+
const tid = getTenantId();
|
|
4291
|
+
if (tid) await sincronizarConvidados(core, id, tid, data.attendees);
|
|
4195
4292
|
const orderId = existing?.order_id;
|
|
4196
4293
|
if (orderId) {
|
|
4197
4294
|
const orderUpdates = {};
|
|
@@ -4951,6 +5048,12 @@ var en = {
|
|
|
4951
5048
|
"agenda.appointment.title": "Title",
|
|
4952
5049
|
"agenda.appointment.addTitle": "Add a title",
|
|
4953
5050
|
"agenda.appointment.untitled": "(no title)",
|
|
5051
|
+
"agenda.attendees.label": "Attendees",
|
|
5052
|
+
"agenda.attendees.add": "Add attendee",
|
|
5053
|
+
"agenda.attendees.remove": "Remove attendee",
|
|
5054
|
+
"agenda.attendees.required": "Required",
|
|
5055
|
+
"agenda.attendees.optional": "Optional",
|
|
5056
|
+
"agenda.bookingType.meeting": "Meeting",
|
|
4954
5057
|
"agenda.bookingType.appointment": "Appointment",
|
|
4955
5058
|
"agenda.bookingType.event": "Event",
|
|
4956
5059
|
"agenda.bookingType.task": "Task",
|
|
@@ -5174,6 +5277,12 @@ var ptBR = {
|
|
|
5174
5277
|
"agenda.appointment.title": "T\xEDtulo",
|
|
5175
5278
|
"agenda.appointment.addTitle": "Adicionar um t\xEDtulo",
|
|
5176
5279
|
"agenda.appointment.untitled": "(sem t\xEDtulo)",
|
|
5280
|
+
"agenda.attendees.label": "Convidados",
|
|
5281
|
+
"agenda.attendees.add": "Adicionar convidado",
|
|
5282
|
+
"agenda.attendees.remove": "Remover convidado",
|
|
5283
|
+
"agenda.attendees.required": "Obrigat\xF3rio",
|
|
5284
|
+
"agenda.attendees.optional": "Opcional",
|
|
5285
|
+
"agenda.bookingType.meeting": "Reuni\xE3o",
|
|
5177
5286
|
"agenda.bookingType.appointment": "Agendamento",
|
|
5178
5287
|
"agenda.bookingType.event": "Evento",
|
|
5179
5288
|
"agenda.bookingType.task": "Tarefa",
|