@flamingo-stack/openframe-frontend-core 0.0.596-2034.5670.1 → 0.0.596-2034.5675.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/dist/components/meeting-scheduler/booking-form.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/context-panel.d.ts +1 -9
- package/dist/components/meeting-scheduler/context-panel.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/index.cjs +18 -7
- package/dist/components/meeting-scheduler/index.cjs.map +1 -1
- package/dist/components/meeting-scheduler/index.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/index.js +18 -7
- package/dist/components/meeting-scheduler/index.js.map +1 -1
- package/dist/schemas/meeting-booking-schema.cjs +4 -1
- package/dist/schemas/meeting-booking-schema.cjs.map +1 -1
- package/dist/schemas/meeting-booking-schema.d.ts +1 -1
- package/dist/schemas/meeting-booking-schema.d.ts.map +1 -1
- package/dist/schemas/meeting-booking-schema.js +4 -1
- package/dist/schemas/meeting-booking-schema.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/booking-form-number-field.test.tsx +69 -0
- package/src/__tests__/meeting-booking-schema.test.ts +62 -0
- package/src/components/meeting-scheduler/booking-form.tsx +10 -0
- package/src/components/meeting-scheduler/context-panel.tsx +3 -13
- package/src/components/meeting-scheduler/index.tsx +0 -2
- package/src/schemas/meeting-booking-schema.ts +16 -1
- package/src/utils/__tests__/hubspot-meetings-convention.test.ts +4 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"booking-form.d.ts","sourceRoot":"","sources":["../../../src/components/meeting-scheduler/booking-form.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAa,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,EAGL,KAAK,mBAAmB,EAGzB,MAAM,sCAAsC,CAAC;AAqB9C;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACtB;AAED,MAAM,MAAM,eAAe,GAAG,gBAAgB,EAAE,CAAC;AAEjD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAcD;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,mBAAmB,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;qEACiE;IACjE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6EAA6E;IAC7E,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,uFAAuF;IACvF,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,mFAAmF;IACnF,kBAAkB,EAAE;QAAE,GAAG,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE,UAAU,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;CACnD;AAED,wBAAgB,WAAW,CAAC,EAC1B,YAAY,EACZ,SAAS,EACT,WAAW,EACX,UAAU,EACV,QAAQ,EACR,SAAiB,EACjB,aAAa,EACb,WAAW,EACX,UAAU,EACV,SAAS,EACT,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,kBAAkB,EAClB,UAAU,GACX,EAAE,gBAAgB,+
|
|
1
|
+
{"version":3,"file":"booking-form.d.ts","sourceRoot":"","sources":["../../../src/components/meeting-scheduler/booking-form.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAa,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,EAGL,KAAK,mBAAmB,EAGzB,MAAM,sCAAsC,CAAC;AAqB9C;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACtB;AAED,MAAM,MAAM,eAAe,GAAG,gBAAgB,EAAE,CAAC;AAEjD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAcD;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,mBAAmB,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;qEACiE;IACjE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6EAA6E;IAC7E,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,uFAAuF;IACvF,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,mFAAmF;IACnF,kBAAkB,EAAE;QAAE,GAAG,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE,UAAU,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;CACnD;AAED,wBAAgB,WAAW,CAAC,EAC1B,YAAY,EACZ,SAAS,EACT,WAAW,EACX,UAAU,EACV,QAAQ,EACR,SAAiB,EACjB,aAAa,EACb,WAAW,EACX,UAAU,EACV,SAAS,EACT,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,kBAAkB,EAClB,UAAU,GACX,EAAE,gBAAgB,+BA0ZlB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,gCAelC"}
|
|
@@ -38,14 +38,6 @@ export interface SchedulerContextPanelProps {
|
|
|
38
38
|
* states the length and a live selector beside a filled-in form invites a
|
|
39
39
|
* change that would throw the form away. Going Back restores them. */
|
|
40
40
|
locked?: boolean;
|
|
41
|
-
/**
|
|
42
|
-
* The link's length is not the visitor's to choose here: the static duration
|
|
43
|
-
* line renders and the chips never do, at every step. `flow="details-first"`
|
|
44
|
-
* sets it — the mock draws "30 min call" beside the host on the calendar step
|
|
45
|
-
* and offers no selector — and unlike `locked` it has NO effect on the
|
|
46
|
-
* timezone picker, which on that step is the only control the visitor has.
|
|
47
|
-
*/
|
|
48
|
-
fixedDuration?: boolean;
|
|
49
41
|
/** Whether the timezone picker renders. Default true: the zone governs every
|
|
50
42
|
* time on screen, the form's summary line included, so it stays reachable
|
|
51
43
|
* right up to the confirmation — where there is nothing left to re-read. */
|
|
@@ -62,5 +54,5 @@ export declare function ContextPanelSkeleton({ className, onBack, backLabel, }:
|
|
|
62
54
|
onBack?: () => void;
|
|
63
55
|
backLabel?: string;
|
|
64
56
|
}): import("react").JSX.Element;
|
|
65
|
-
export declare function SchedulerContextPanel({ hosts, title, description, durationsMs, selectedDurationMs, onSelectDuration, timezone, onTimezoneChange, onBack, backLabel, locked,
|
|
57
|
+
export declare function SchedulerContextPanel({ hosts, title, description, durationsMs, selectedDurationMs, onSelectDuration, timezone, onTimezoneChange, onBack, backLabel, locked, showTimezone, className, }: SchedulerContextPanelProps): import("react").JSX.Element;
|
|
66
58
|
//# sourceMappingURL=context-panel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-panel.d.ts","sourceRoot":"","sources":["../../../src/components/meeting-scheduler/context-panel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAMxE;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;gFAC4E;IAC5E,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;2EAGuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB
|
|
1
|
+
{"version":3,"file":"context-panel.d.ts","sourceRoot":"","sources":["../../../src/components/meeting-scheduler/context-panel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAMxE;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;gFAC4E;IAC5E,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;2EAGuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;iFAE6E;IAC7E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA0DD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,SAAS,EACT,MAAM,EACN,SAAkB,GACnB,EAAE;IACD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,+BA4BA;AAED,wBAAgB,qBAAqB,CAAC,EACpC,KAAK,EACL,KAAK,EACL,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,QAAQ,EACR,gBAAgB,EAChB,MAAM,EACN,SAAkB,EAClB,MAAc,EACd,YAAmB,EACnB,SAAS,GACV,EAAE,0BAA0B,+BAuH5B"}
|
|
@@ -93,7 +93,7 @@ var MEETING_BOOKING_ERROR_CODES = [
|
|
|
93
93
|
"TEMPORARILY_UNAVAILABLE",
|
|
94
94
|
"MEETING_UNAVAILABLE"
|
|
95
95
|
];
|
|
96
|
-
var SUPPORTED_FORM_FIELD_TYPES = ["text", "textarea", "select", "radio", "checkbox"];
|
|
96
|
+
var SUPPORTED_FORM_FIELD_TYPES = ["text", "textarea", "select", "radio", "checkbox", "number"];
|
|
97
97
|
function isSupportedFormField(field) {
|
|
98
98
|
return SUPPORTED_FORM_FIELD_TYPES.includes(field.type);
|
|
99
99
|
}
|
|
@@ -132,6 +132,9 @@ function buildBookingSchema(formFields, legalConsent, slot) {
|
|
|
132
132
|
case "textarea":
|
|
133
133
|
validator = _zod.z.string().max(5e3, { message: `${field.label} is too long` });
|
|
134
134
|
break;
|
|
135
|
+
case "number":
|
|
136
|
+
validator = _zod.z.string().max(32, { message: `${field.label} is too long` }).regex(/^-?\d+(\.\d+)?$/, { message: `${field.label} must be a number` });
|
|
137
|
+
break;
|
|
135
138
|
case "text":
|
|
136
139
|
default:
|
|
137
140
|
validator = _zod.z.string().max(1e3, { message: `${field.label} is too long` });
|
|
@@ -428,6 +431,17 @@ function BookingForm({
|
|
|
428
431
|
...register(`formFields.${field.name}`)
|
|
429
432
|
}
|
|
430
433
|
),
|
|
434
|
+
field.type === "number" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
435
|
+
_chunkY7ITKISQcjs.Input,
|
|
436
|
+
{
|
|
437
|
+
id: `ms-q-${field.name}`,
|
|
438
|
+
type: "number",
|
|
439
|
+
inputMode: "numeric",
|
|
440
|
+
step: "any",
|
|
441
|
+
className: "h-11 border-ods-border bg-ods-card px-3 text-ods-text-primary placeholder-ods-text-secondary md:h-12",
|
|
442
|
+
...register(`formFields.${field.name}`)
|
|
443
|
+
}
|
|
444
|
+
),
|
|
431
445
|
(field.type === "select" || field.type === "radio") && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
432
446
|
_reacthookform.Controller,
|
|
433
447
|
{
|
|
@@ -677,7 +691,6 @@ function SchedulerContextPanel({
|
|
|
677
691
|
onBack,
|
|
678
692
|
backLabel = "Back",
|
|
679
693
|
locked = false,
|
|
680
|
-
fixedDuration = false,
|
|
681
694
|
showTimezone = true,
|
|
682
695
|
className
|
|
683
696
|
}) {
|
|
@@ -721,9 +734,8 @@ function SchedulerContextPanel({
|
|
|
721
734
|
" hosts on this calendar"
|
|
722
735
|
] })
|
|
723
736
|
] }),
|
|
724
|
-
locked ||
|
|
725
|
-
// Post-selection,
|
|
726
|
-
// length: a static line,
|
|
737
|
+
locked || durationsMs.length <= 1 ? (
|
|
738
|
+
// Post-selection, or a link that offers one length: a static line,
|
|
727
739
|
// which is what sits beside the host on the header-strip layouts.
|
|
728
740
|
selectedDurationMs != null && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "shrink-0 text-ods-text-secondary text-h6", children: [
|
|
729
741
|
_chunkWCBRZCU4cjs.formatDurationCompact.call(void 0, selectedDurationMs / 1e3),
|
|
@@ -733,7 +745,7 @@ function SchedulerContextPanel({
|
|
|
733
745
|
] }),
|
|
734
746
|
title && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-primary text-h3", children: title }),
|
|
735
747
|
description && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-h6", children: description }),
|
|
736
|
-
!locked &&
|
|
748
|
+
!locked && durationsMs.length > 1 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-[var(--spacing-system-xxs)]", children: [
|
|
737
749
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: FIELD_LABEL_CLASS, children: "Duration" }),
|
|
738
750
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-wrap gap-[var(--spacing-system-xs)]", children: durationsMs.map((ms) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
739
751
|
_chunkCJBSU3XBcjs.Button,
|
|
@@ -1367,7 +1379,6 @@ function HubSpotMeetingScheduler({
|
|
|
1367
1379
|
onBack: detailsFirst ? step === "slot" ? backToDetails : onBack : step === "details" ? backToSlot : onBack,
|
|
1368
1380
|
locked: detailsFirst ? step === "confirmed" || isSubmitting : step !== "slot",
|
|
1369
1381
|
showTimezone: step !== "confirmed",
|
|
1370
|
-
fixedDuration: detailsFirst,
|
|
1371
1382
|
className: CONTEXT_PANEL_CLASS
|
|
1372
1383
|
}
|
|
1373
1384
|
),
|