formanitor 0.2.0 → 0.2.2
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/{AddInvestigationWidget-G7NPTSFY.cjs → AddInvestigationWidget-7FLINCTT.cjs} +7 -7
- package/dist/{AddInvestigationWidget-G7NPTSFY.cjs.map → AddInvestigationWidget-7FLINCTT.cjs.map} +1 -1
- package/dist/{AddInvestigationWidget-TQUKTGAW.mjs → AddInvestigationWidget-FABXZDEZ.mjs} +3 -3
- package/dist/{AddInvestigationWidget-TQUKTGAW.mjs.map → AddInvestigationWidget-FABXZDEZ.mjs.map} +1 -1
- package/dist/{AddMedicationWidget-26RHKIA6.cjs → AddMedicationWidget-45T4XVEL.cjs} +6 -6
- package/dist/{AddMedicationWidget-26RHKIA6.cjs.map → AddMedicationWidget-45T4XVEL.cjs.map} +1 -1
- package/dist/{AddMedicationWidget-I5UIT3WG.mjs → AddMedicationWidget-B5RXRYBK.mjs} +3 -3
- package/dist/{AddMedicationWidget-I5UIT3WG.mjs.map → AddMedicationWidget-B5RXRYBK.mjs.map} +1 -1
- package/dist/{AddProcedureWidget-NB46COB6.mjs → AddProcedureWidget-F74WGSFX.mjs} +3 -3
- package/dist/{AddProcedureWidget-NB46COB6.mjs.map → AddProcedureWidget-F74WGSFX.mjs.map} +1 -1
- package/dist/{AddProcedureWidget-B6OUF3BM.cjs → AddProcedureWidget-HK7UNRXH.cjs} +6 -6
- package/dist/{AddProcedureWidget-B6OUF3BM.cjs.map → AddProcedureWidget-HK7UNRXH.cjs.map} +1 -1
- package/dist/{BiometryIolWorkupWidget-F7HRYMOJ.mjs → BiometryIolWorkupWidget-5RZP34FF.mjs} +4 -4
- package/dist/{BiometryIolWorkupWidget-F7HRYMOJ.mjs.map → BiometryIolWorkupWidget-5RZP34FF.mjs.map} +1 -1
- package/dist/{BiometryIolWorkupWidget-TCU4MMVI.cjs → BiometryIolWorkupWidget-FWO3IWTF.cjs} +6 -6
- package/dist/{BiometryIolWorkupWidget-TCU4MMVI.cjs.map → BiometryIolWorkupWidget-FWO3IWTF.cjs.map} +1 -1
- package/dist/{DateTimeWidget-WKQIEQSA.mjs → DateTimeWidget-3AUBZYYK.mjs} +4 -4
- package/dist/{DateTimeWidget-WKQIEQSA.mjs.map → DateTimeWidget-3AUBZYYK.mjs.map} +1 -1
- package/dist/{DateTimeWidget-72YUK7PX.cjs → DateTimeWidget-OS7ER5F6.cjs} +6 -6
- package/dist/{DateTimeWidget-72YUK7PX.cjs.map → DateTimeWidget-OS7ER5F6.cjs.map} +1 -1
- package/dist/{DateWidget-K2TVTZ7Z.mjs → DateWidget-KCTE6N5G.mjs} +4 -4
- package/dist/{DateWidget-K2TVTZ7Z.mjs.map → DateWidget-KCTE6N5G.mjs.map} +1 -1
- package/dist/{DateWidget-SYDMSGWO.cjs → DateWidget-UNLX544Z.cjs} +6 -6
- package/dist/{DateWidget-SYDMSGWO.cjs.map → DateWidget-UNLX544Z.cjs.map} +1 -1
- package/dist/{DiagnosisTextareaWidget-RD65PGDY.mjs → DiagnosisTextareaWidget-6UCYCCSB.mjs} +4 -4
- package/dist/{DiagnosisTextareaWidget-RD65PGDY.mjs.map → DiagnosisTextareaWidget-6UCYCCSB.mjs.map} +1 -1
- package/dist/{DiagnosisTextareaWidget-UKWLE2SQ.cjs → DiagnosisTextareaWidget-XJ47OZYH.cjs} +7 -7
- package/dist/{DiagnosisTextareaWidget-UKWLE2SQ.cjs.map → DiagnosisTextareaWidget-XJ47OZYH.cjs.map} +1 -1
- package/dist/{DifferentialDiagnosisWidget-FENJP245.mjs → DifferentialDiagnosisWidget-IZEZVW5F.mjs} +3 -3
- package/dist/{DifferentialDiagnosisWidget-FENJP245.mjs.map → DifferentialDiagnosisWidget-IZEZVW5F.mjs.map} +1 -1
- package/dist/{DifferentialDiagnosisWidget-ZGFXP2BH.cjs → DifferentialDiagnosisWidget-XESNHNQQ.cjs} +4 -4
- package/dist/{DifferentialDiagnosisWidget-ZGFXP2BH.cjs.map → DifferentialDiagnosisWidget-XESNHNQQ.cjs.map} +1 -1
- package/dist/{DischargeMedicationOrdersWidget-26ALTGJM.mjs → DischargeMedicationOrdersWidget-KA3HANHE.mjs} +4 -4
- package/dist/{DischargeMedicationOrdersWidget-26ALTGJM.mjs.map → DischargeMedicationOrdersWidget-KA3HANHE.mjs.map} +1 -1
- package/dist/{DischargeMedicationOrdersWidget-B4CJQ3QS.cjs → DischargeMedicationOrdersWidget-WRJRYL6F.cjs} +7 -7
- package/dist/{DischargeMedicationOrdersWidget-B4CJQ3QS.cjs.map → DischargeMedicationOrdersWidget-WRJRYL6F.cjs.map} +1 -1
- package/dist/{EditableTable-YB4IC3ZK.cjs → EditableTable-VQ72UEFF.cjs} +4 -4
- package/dist/{EditableTable-YB4IC3ZK.cjs.map → EditableTable-VQ72UEFF.cjs.map} +1 -1
- package/dist/{EditableTable-LPAYCK36.mjs → EditableTable-XFCPKSUY.mjs} +3 -3
- package/dist/{EditableTable-LPAYCK36.mjs.map → EditableTable-XFCPKSUY.mjs.map} +1 -1
- package/dist/{FollowupWidget-NJ4QDBOG.mjs → FollowupWidget-BFZ6P2JE.mjs} +3 -3
- package/dist/{FollowupWidget-NJ4QDBOG.mjs.map → FollowupWidget-BFZ6P2JE.mjs.map} +1 -1
- package/dist/{FollowupWidget-EEKOI2TW.cjs → FollowupWidget-MAYTHM2E.cjs} +4 -4
- package/dist/{FollowupWidget-EEKOI2TW.cjs.map → FollowupWidget-MAYTHM2E.cjs.map} +1 -1
- package/dist/{FunctionalImpairmentScoreWidget-HAAPCMIS.cjs → FunctionalImpairmentScoreWidget-FCA4UKQA.cjs} +6 -6
- package/dist/{FunctionalImpairmentScoreWidget-HAAPCMIS.cjs.map → FunctionalImpairmentScoreWidget-FCA4UKQA.cjs.map} +1 -1
- package/dist/{FunctionalImpairmentScoreWidget-ZNLKKBYN.mjs → FunctionalImpairmentScoreWidget-TKS6KE7K.mjs} +4 -4
- package/dist/{FunctionalImpairmentScoreWidget-ZNLKKBYN.mjs.map → FunctionalImpairmentScoreWidget-TKS6KE7K.mjs.map} +1 -1
- package/dist/{GsExaminationWidget-MEIUHRQQ.mjs → GsExaminationWidget-ESIEZCP3.mjs} +4 -4
- package/dist/{GsExaminationWidget-MEIUHRQQ.mjs.map → GsExaminationWidget-ESIEZCP3.mjs.map} +1 -1
- package/dist/{GsExaminationWidget-EX6C3EF5.cjs → GsExaminationWidget-KKE5I5GX.cjs} +10 -10
- package/dist/{GsExaminationWidget-EX6C3EF5.cjs.map → GsExaminationWidget-KKE5I5GX.cjs.map} +1 -1
- package/dist/{GsGradingWidget-4UPOEYNL.mjs → GsGradingWidget-HC4MJ4KJ.mjs} +4 -4
- package/dist/{GsGradingWidget-4UPOEYNL.mjs.map → GsGradingWidget-HC4MJ4KJ.mjs.map} +1 -1
- package/dist/{GsGradingWidget-IV3UF63W.cjs → GsGradingWidget-NGCQQVYA.cjs} +12 -12
- package/dist/{GsGradingWidget-IV3UF63W.cjs.map → GsGradingWidget-NGCQQVYA.cjs.map} +1 -1
- package/dist/{GsSmartHistoryWidget-LGN7W2AV.mjs → GsSmartHistoryWidget-7HYGDU4O.mjs} +4 -4
- package/dist/{GsSmartHistoryWidget-LGN7W2AV.mjs.map → GsSmartHistoryWidget-7HYGDU4O.mjs.map} +1 -1
- package/dist/{GsSmartHistoryWidget-7QNJZEI4.cjs → GsSmartHistoryWidget-AAB427Q2.cjs} +12 -12
- package/dist/{GsSmartHistoryWidget-7QNJZEI4.cjs.map → GsSmartHistoryWidget-AAB427Q2.cjs.map} +1 -1
- package/dist/{HiddenVitalsWidget-AMH32HT2.cjs → HiddenVitalsWidget-5GFBDDPT.cjs} +6 -6
- package/dist/{HiddenVitalsWidget-AMH32HT2.cjs.map → HiddenVitalsWidget-5GFBDDPT.cjs.map} +1 -1
- package/dist/{HiddenVitalsWidget-W23IFSEF.mjs → HiddenVitalsWidget-CIE3KERT.mjs} +4 -4
- package/dist/{HiddenVitalsWidget-W23IFSEF.mjs.map → HiddenVitalsWidget-CIE3KERT.mjs.map} +1 -1
- package/dist/{LensAssessmentWidget-SJ6YUTSN.mjs → LensAssessmentWidget-B4OMHTOE.mjs} +4 -4
- package/dist/{LensAssessmentWidget-SJ6YUTSN.mjs.map → LensAssessmentWidget-B4OMHTOE.mjs.map} +1 -1
- package/dist/{LensAssessmentWidget-LSHBUTT5.cjs → LensAssessmentWidget-SIKJVVAE.cjs} +6 -6
- package/dist/{LensAssessmentWidget-LSHBUTT5.cjs.map → LensAssessmentWidget-SIKJVVAE.cjs.map} +1 -1
- package/dist/{MarMedicationOrdersWidget-ZKZLSZRN.cjs → MarMedicationOrdersWidget-767F65K6.cjs} +7 -7
- package/dist/{MarMedicationOrdersWidget-ZKZLSZRN.cjs.map → MarMedicationOrdersWidget-767F65K6.cjs.map} +1 -1
- package/dist/{MarMedicationOrdersWidget-IKMAFPRG.mjs → MarMedicationOrdersWidget-LG3WOXN7.mjs} +4 -4
- package/dist/{MarMedicationOrdersWidget-IKMAFPRG.mjs.map → MarMedicationOrdersWidget-LG3WOXN7.mjs.map} +1 -1
- package/dist/{OBGExaminationWidget-BK4ERETW.mjs → OBGExaminationWidget-HQKTHSOZ.mjs} +4 -4
- package/dist/{OBGExaminationWidget-BK4ERETW.mjs.map → OBGExaminationWidget-HQKTHSOZ.mjs.map} +1 -1
- package/dist/{OBGExaminationWidget-SMFZ2WCL.cjs → OBGExaminationWidget-MRTGWLXJ.cjs} +11 -11
- package/dist/{OBGExaminationWidget-SMFZ2WCL.cjs.map → OBGExaminationWidget-MRTGWLXJ.cjs.map} +1 -1
- package/dist/{OBGPathwayWidget-U5BCAESB.mjs → OBGPathwayWidget-X67XKRIH.mjs} +5 -5
- package/dist/{OBGPathwayWidget-U5BCAESB.mjs.map → OBGPathwayWidget-X67XKRIH.mjs.map} +1 -1
- package/dist/{OBGPathwayWidget-5YTUDBEH.cjs → OBGPathwayWidget-XGN3HEWS.cjs} +17 -17
- package/dist/{OBGPathwayWidget-5YTUDBEH.cjs.map → OBGPathwayWidget-XGN3HEWS.cjs.map} +1 -1
- package/dist/{ObstetricHistoryWidget-GC63CB3U.cjs → ObstetricHistoryWidget-RP7NY4PV.cjs} +12 -12
- package/dist/{ObstetricHistoryWidget-GC63CB3U.cjs.map → ObstetricHistoryWidget-RP7NY4PV.cjs.map} +1 -1
- package/dist/{ObstetricHistoryWidget-WD572Q7H.mjs → ObstetricHistoryWidget-Z4VAXH3E.mjs} +4 -4
- package/dist/{ObstetricHistoryWidget-WD572Q7H.mjs.map → ObstetricHistoryWidget-Z4VAXH3E.mjs.map} +1 -1
- package/dist/{OphthalDiagnosisWidget-Y3AHD6AG.mjs → OphthalDiagnosisWidget-MZYBQTFV.mjs} +3 -3
- package/dist/{OphthalDiagnosisWidget-Y3AHD6AG.mjs.map → OphthalDiagnosisWidget-MZYBQTFV.mjs.map} +1 -1
- package/dist/{OphthalDiagnosisWidget-QXFK446I.cjs → OphthalDiagnosisWidget-UXXYGKD5.cjs} +4 -4
- package/dist/{OphthalDiagnosisWidget-QXFK446I.cjs.map → OphthalDiagnosisWidget-UXXYGKD5.cjs.map} +1 -1
- package/dist/{OphthalmologyWidget-CRQMN5QU.mjs → OphthalmologyWidget-27ZN2E3F.mjs} +3 -3
- package/dist/{OphthalmologyWidget-CRQMN5QU.mjs.map → OphthalmologyWidget-27ZN2E3F.mjs.map} +1 -1
- package/dist/{OphthalmologyWidget-U2HQMZ4J.cjs → OphthalmologyWidget-WFSFIHT4.cjs} +4 -4
- package/dist/{OphthalmologyWidget-U2HQMZ4J.cjs.map → OphthalmologyWidget-WFSFIHT4.cjs.map} +1 -1
- package/dist/{OrthopedicExamWidget-LP7VN3W5.cjs → OrthopedicExamWidget-ULZTDFXJ.cjs} +6 -6
- package/dist/{OrthopedicExamWidget-LP7VN3W5.cjs.map → OrthopedicExamWidget-ULZTDFXJ.cjs.map} +1 -1
- package/dist/{OrthopedicExamWidget-PAOIVU6Z.mjs → OrthopedicExamWidget-WM55M3Y4.mjs} +4 -4
- package/dist/{OrthopedicExamWidget-PAOIVU6Z.mjs.map → OrthopedicExamWidget-WM55M3Y4.mjs.map} +1 -1
- package/dist/{PainScaleFlagsWidget-MRMQ7HPJ.mjs → PainScaleFlagsWidget-5KN7T4JK.mjs} +4 -4
- package/dist/{PainScaleFlagsWidget-MRMQ7HPJ.mjs.map → PainScaleFlagsWidget-5KN7T4JK.mjs.map} +1 -1
- package/dist/{PainScaleFlagsWidget-IBNGVVHD.cjs → PainScaleFlagsWidget-IFA3RCEL.cjs} +8 -8
- package/dist/{PainScaleFlagsWidget-IBNGVVHD.cjs.map → PainScaleFlagsWidget-IFA3RCEL.cjs.map} +1 -1
- package/dist/{ReferralWidget-PDNEKHFO.cjs → ReferralWidget-27VGZCOQ.cjs} +7 -7
- package/dist/{ReferralWidget-PDNEKHFO.cjs.map → ReferralWidget-27VGZCOQ.cjs.map} +1 -1
- package/dist/{ReferralWidget-IYTS32TS.mjs → ReferralWidget-GU3JYED2.mjs} +4 -4
- package/dist/{ReferralWidget-IYTS32TS.mjs.map → ReferralWidget-GU3JYED2.mjs.map} +1 -1
- package/dist/{RichTextWidget-XWLOHKLE.cjs → RichTextWidget-2KLV65QP.cjs} +7 -7
- package/dist/{RichTextWidget-5OOJ2LJN.mjs.map → RichTextWidget-2KLV65QP.cjs.map} +1 -1
- package/dist/RichTextWidget-ZBX554ZJ.mjs +11 -0
- package/dist/{RichTextWidget-XWLOHKLE.cjs.map → RichTextWidget-ZBX554ZJ.mjs.map} +1 -1
- package/dist/SmartTextarea-LQDXFCYT.mjs +10 -0
- package/dist/{SmartTextarea-L7Q4CORK.cjs.map → SmartTextarea-LQDXFCYT.mjs.map} +1 -1
- package/dist/SmartTextarea-WITNRNDU.cjs +19 -0
- package/dist/{SmartTextarea-ZCXGMZLG.mjs.map → SmartTextarea-WITNRNDU.cjs.map} +1 -1
- package/dist/{SuggestionTextareaWidget-2TEITBPF.cjs → SuggestionTextareaWidget-DY6M5JPO.cjs} +18 -18
- package/dist/{SuggestionTextareaWidget-2TEITBPF.cjs.map → SuggestionTextareaWidget-DY6M5JPO.cjs.map} +1 -1
- package/dist/{SuggestionTextareaWidget-RN5LZYFC.mjs → SuggestionTextareaWidget-GQTWCFBG.mjs} +7 -7
- package/dist/{SuggestionTextareaWidget-RN5LZYFC.mjs.map → SuggestionTextareaWidget-GQTWCFBG.mjs.map} +1 -1
- package/dist/{SurgicalRiskFlagsWidget-JCSL3GWS.cjs → SurgicalRiskFlagsWidget-OJKCZIWJ.cjs} +6 -6
- package/dist/{SurgicalRiskFlagsWidget-JCSL3GWS.cjs.map → SurgicalRiskFlagsWidget-OJKCZIWJ.cjs.map} +1 -1
- package/dist/{SurgicalRiskFlagsWidget-DBICX4MB.mjs → SurgicalRiskFlagsWidget-ZTQJ6CDF.mjs} +4 -4
- package/dist/{SurgicalRiskFlagsWidget-DBICX4MB.mjs.map → SurgicalRiskFlagsWidget-ZTQJ6CDF.mjs.map} +1 -1
- package/dist/{UrologyExaminationWidget-74L3IN2X.cjs → UrologyExaminationWidget-GQLMV4FB.cjs} +12 -12
- package/dist/{UrologyExaminationWidget-74L3IN2X.cjs.map → UrologyExaminationWidget-GQLMV4FB.cjs.map} +1 -1
- package/dist/{UrologyExaminationWidget-IQEBP6CI.mjs → UrologyExaminationWidget-GRBL2SDG.mjs} +4 -4
- package/dist/{UrologyExaminationWidget-IQEBP6CI.mjs.map → UrologyExaminationWidget-GRBL2SDG.mjs.map} +1 -1
- package/dist/{UrologyPathwayWidget-UJY5EW2G.cjs → UrologyPathwayWidget-D6EWSOGW.cjs} +7 -7
- package/dist/{UrologyPathwayWidget-UJY5EW2G.cjs.map → UrologyPathwayWidget-D6EWSOGW.cjs.map} +1 -1
- package/dist/{UrologyPathwayWidget-S4QY6RD6.mjs → UrologyPathwayWidget-PEO5BVQX.mjs} +4 -4
- package/dist/{UrologyPathwayWidget-S4QY6RD6.mjs.map → UrologyPathwayWidget-PEO5BVQX.mjs.map} +1 -1
- package/dist/{UrologySmartHistoryWidget-NFTHHK6A.mjs → UrologySmartHistoryWidget-BDKRFBYN.mjs} +4 -4
- package/dist/{UrologySmartHistoryWidget-NFTHHK6A.mjs.map → UrologySmartHistoryWidget-BDKRFBYN.mjs.map} +1 -1
- package/dist/{UrologySmartHistoryWidget-XKZF63BV.cjs → UrologySmartHistoryWidget-P3KTQE7L.cjs} +15 -15
- package/dist/{UrologySmartHistoryWidget-XKZF63BV.cjs.map → UrologySmartHistoryWidget-P3KTQE7L.cjs.map} +1 -1
- package/dist/{VitalsWidget-MBYDGC7U.mjs → VitalsWidget-63HTXK2M.mjs} +3 -3
- package/dist/{VitalsWidget-MBYDGC7U.mjs.map → VitalsWidget-63HTXK2M.mjs.map} +1 -1
- package/dist/{VitalsWidget-44UWQGIF.cjs → VitalsWidget-MS3OOZSW.cjs} +5 -5
- package/dist/{VitalsWidget-44UWQGIF.cjs.map → VitalsWidget-MS3OOZSW.cjs.map} +1 -1
- package/dist/{chunk-ZGPHTPAN.mjs → chunk-2BGJZ44Q.mjs} +74 -3
- package/dist/chunk-2BGJZ44Q.mjs.map +1 -0
- package/dist/{chunk-YYPMIUDW.mjs → chunk-4HDMR2LX.mjs} +3 -3
- package/dist/{chunk-YYPMIUDW.mjs.map → chunk-4HDMR2LX.mjs.map} +1 -1
- package/dist/{chunk-KPGTPJDH.cjs → chunk-7DISRJAB.cjs} +4 -4
- package/dist/{chunk-KPGTPJDH.cjs.map → chunk-7DISRJAB.cjs.map} +1 -1
- package/dist/{chunk-GFDE2KZC.mjs → chunk-MBZRRYJB.mjs} +4 -4
- package/dist/{chunk-GFDE2KZC.mjs.map → chunk-MBZRRYJB.mjs.map} +1 -1
- package/dist/{chunk-NJJTIL3U.cjs → chunk-ML47UEDU.cjs} +6 -6
- package/dist/{chunk-NJJTIL3U.cjs.map → chunk-ML47UEDU.cjs.map} +1 -1
- package/dist/{chunk-ZSOIQVB3.mjs → chunk-Q3K646K4.mjs} +3 -3
- package/dist/{chunk-ZSOIQVB3.mjs.map → chunk-Q3K646K4.mjs.map} +1 -1
- package/dist/{chunk-JNVSA77L.cjs → chunk-RZK44P3C.cjs} +7 -7
- package/dist/{chunk-JNVSA77L.cjs.map → chunk-RZK44P3C.cjs.map} +1 -1
- package/dist/{chunk-CTW65YW2.cjs → chunk-T2IKWRV2.cjs} +9 -9
- package/dist/{chunk-CTW65YW2.cjs.map → chunk-T2IKWRV2.cjs.map} +1 -1
- package/dist/{chunk-XR2ZM654.mjs → chunk-T3UHPMFX.mjs} +3 -3
- package/dist/{chunk-XR2ZM654.mjs.map → chunk-T3UHPMFX.mjs.map} +1 -1
- package/dist/{chunk-IDSBJOFY.cjs → chunk-TB33A4PD.cjs} +77 -2
- package/dist/chunk-TB33A4PD.cjs.map +1 -0
- package/dist/{chunk-DE7VZVKR.cjs → chunk-TVFUWRTE.cjs} +11 -11
- package/dist/{chunk-DE7VZVKR.cjs.map → chunk-TVFUWRTE.cjs.map} +1 -1
- package/dist/{chunk-FZEEWRW3.cjs → chunk-XIUXYHGG.cjs} +5 -5
- package/dist/{chunk-FZEEWRW3.cjs.map → chunk-XIUXYHGG.cjs.map} +1 -1
- package/dist/{chunk-MIUUO4CI.mjs → chunk-XLCTFYFD.mjs} +5 -5
- package/dist/{chunk-MIUUO4CI.mjs.map → chunk-XLCTFYFD.mjs.map} +1 -1
- package/dist/{chunk-AZVJU7NZ.mjs → chunk-XN2QLBLT.mjs} +5 -5
- package/dist/{chunk-AZVJU7NZ.mjs.map → chunk-XN2QLBLT.mjs.map} +1 -1
- package/dist/index.cjs +598 -125
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +74 -6
- package/dist/index.d.ts +74 -6
- package/dist/index.mjs +546 -74
- package/dist/index.mjs.map +1 -1
- package/dist/read-only-table.d.cts +1 -1
- package/dist/read-only-table.d.ts +1 -1
- package/dist/rich-text.cjs +5 -5
- package/dist/rich-text.mjs +4 -4
- package/dist/smart.cjs +5 -5
- package/dist/smart.d.cts +1 -1
- package/dist/smart.d.ts +1 -1
- package/dist/smart.mjs +3 -3
- package/dist/{types-D0iYXUOo.d.cts → types-CYtJk8H9.d.cts} +49 -3
- package/dist/{types-D0iYXUOo.d.ts → types-CYtJk8H9.d.ts} +49 -3
- package/package.json +1 -1
- package/dist/RichTextWidget-5OOJ2LJN.mjs +0 -11
- package/dist/SmartTextarea-L7Q4CORK.cjs +0 -19
- package/dist/SmartTextarea-ZCXGMZLG.mjs +0 -10
- package/dist/chunk-IDSBJOFY.cjs.map +0 -1
- package/dist/chunk-ZGPHTPAN.mjs.map +0 -1
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SelectWidget, TextWidget } from './chunk-
|
|
1
|
+
import { SelectWidget, TextWidget } from './chunk-XN2QLBLT.mjs';
|
|
2
2
|
import { parseFunctionalImpairmentScore, functionalImpairmentTotal } from './chunk-LQYWMYEC.mjs';
|
|
3
3
|
import { normalizeObgPathway } from './chunk-IKAKE7TR.mjs';
|
|
4
4
|
import { Checkbox } from './chunk-GNZWSVTB.mjs';
|
|
@@ -13,24 +13,87 @@ import './chunk-4BAKQIPJ.mjs';
|
|
|
13
13
|
import { getThemeConfig } from './chunk-Y7TIWH4I.mjs';
|
|
14
14
|
import { richTextHtmlClassName } from './chunk-I4AV6BQF.mjs';
|
|
15
15
|
export { richTextHtmlClassName } from './chunk-I4AV6BQF.mjs';
|
|
16
|
-
import './chunk-
|
|
16
|
+
import './chunk-Q3K646K4.mjs';
|
|
17
17
|
import { isLabelVisible, FieldRequiredIndicator, fieldLabelClass, fieldWrapperClass, fieldControlClass, fieldDescriptionClass, fieldErrorClass } from './chunk-WYVXXEZI.mjs';
|
|
18
18
|
export { FieldRequiredIndicator, fieldControlClass, fieldDescriptionClass, fieldErrorClass, fieldLabelClass, fieldWrapperClass, isLabelVisible } from './chunk-WYVXXEZI.mjs';
|
|
19
|
-
import { useForm } from './chunk-
|
|
20
|
-
export { useForm } from './chunk-
|
|
19
|
+
import { useForm } from './chunk-T3UHPMFX.mjs';
|
|
20
|
+
export { useForm } from './chunk-T3UHPMFX.mjs';
|
|
21
21
|
import { Table, TableHeader, TableRow, TableHead, TableBody, TableCell } from './chunk-UULLSS4O.mjs';
|
|
22
22
|
import { Input } from './chunk-VNFBUAZD.mjs';
|
|
23
23
|
import './chunk-AZHTIUOL.mjs';
|
|
24
24
|
import { Button } from './chunk-GXXWMHAA.mjs';
|
|
25
|
-
import { useField, useFormStore, normalizeGeneralSurgerySmartHistory, normalizeUrologySmartHistory, normalizePainScaleFlags } from './chunk-
|
|
26
|
-
export { EMAIL_REGEX, FormProvider, FormStore, evaluateRules, useField, useFieldHandlers, useFormStore, useFrequentItems, usePackages, validateField, validateForm } from './chunk-
|
|
25
|
+
import { useField, useFormStore, parseCampDateValue, normalizeGeneralSurgerySmartHistory, normalizeUrologySmartHistory, normalizePainScaleFlags, campDateSelectionFromOption, MOCK_CAMP_TIME_SLOTS, MOCK_CAMP_DATES } from './chunk-2BGJZ44Q.mjs';
|
|
26
|
+
export { EMAIL_REGEX, FormProvider, FormStore, evaluateRules, useField, useFieldHandlers, useFormStore, useFrequentItems, usePackages, validateField, validateForm } from './chunk-2BGJZ44Q.mjs';
|
|
27
27
|
import { Label } from './chunk-HEFZA2AH.mjs';
|
|
28
28
|
import { cn } from './chunk-VPU66PI6.mjs';
|
|
29
29
|
import * as React6 from 'react';
|
|
30
30
|
import React6__default, { useState, useRef, useEffect, useMemo } from 'react';
|
|
31
31
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
32
|
-
import { Circle, X, Image, Upload, Trash2, Check, PenTool,
|
|
32
|
+
import { Circle, X, Image, Upload, Trash2, Check, PenTool, Calendar, ChevronLeft, ChevronRight, ChevronDown, MapPin } from 'lucide-react';
|
|
33
33
|
import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
|
|
34
|
+
import { format, parseISO, startOfMonth, isSameMonth, addDays, parse } from 'date-fns';
|
|
35
|
+
|
|
36
|
+
// src/core/persistence/campBooking.ts
|
|
37
|
+
var CampBookingPersistenceProvider = class {
|
|
38
|
+
/** Camp booking is submit-only; field changes must not POST /book/. */
|
|
39
|
+
autoSave = false;
|
|
40
|
+
config;
|
|
41
|
+
constructor(config) {
|
|
42
|
+
this.config = config;
|
|
43
|
+
}
|
|
44
|
+
async save(_formId, state) {
|
|
45
|
+
const {
|
|
46
|
+
baseUrl,
|
|
47
|
+
authToken,
|
|
48
|
+
patientId,
|
|
49
|
+
campDateFieldId = "camp_date",
|
|
50
|
+
slotFieldId = "camp_time_slot",
|
|
51
|
+
bookingFormDataFields
|
|
52
|
+
} = this.config;
|
|
53
|
+
const campDateValue = state.values[campDateFieldId];
|
|
54
|
+
const instanceId = campDateValue && typeof campDateValue === "object" && !Array.isArray(campDateValue) ? campDateValue.id : null;
|
|
55
|
+
if (!instanceId || typeof instanceId !== "string") {
|
|
56
|
+
throw new Error("Camp booking: no instance selected (camp_date field is empty or invalid).");
|
|
57
|
+
}
|
|
58
|
+
const primarySlotId = state.values[slotFieldId];
|
|
59
|
+
if (!primarySlotId || typeof primarySlotId !== "string") {
|
|
60
|
+
throw new Error("Camp booking: no time slot selected.");
|
|
61
|
+
}
|
|
62
|
+
const excludeKeys = /* @__PURE__ */ new Set([campDateFieldId, slotFieldId]);
|
|
63
|
+
const bookingFormData = {};
|
|
64
|
+
const fieldKeys = bookingFormDataFields ?? Object.keys(state.values);
|
|
65
|
+
for (const key of fieldKeys) {
|
|
66
|
+
if (!excludeKeys.has(key)) {
|
|
67
|
+
bookingFormData[key] = state.values[key];
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
const idempotencyKey = typeof crypto !== "undefined" && typeof crypto.randomUUID === "function" ? crypto.randomUUID() : `${Date.now()}-${Math.random().toString(36).slice(2)}`;
|
|
71
|
+
const payload = {
|
|
72
|
+
primary_slot_id: primarySlotId,
|
|
73
|
+
patient_id: patientId,
|
|
74
|
+
booking_form_data: bookingFormData,
|
|
75
|
+
idempotency_key: idempotencyKey
|
|
76
|
+
};
|
|
77
|
+
const headers = { "Content-Type": "application/json" };
|
|
78
|
+
if (authToken) headers["Authorization"] = `Bearer ${authToken}`;
|
|
79
|
+
const response = await fetch(`${baseUrl}/api/camps/instances/${instanceId}/book/`, {
|
|
80
|
+
method: "POST",
|
|
81
|
+
headers,
|
|
82
|
+
body: JSON.stringify(payload)
|
|
83
|
+
});
|
|
84
|
+
if (!response.ok) {
|
|
85
|
+
const errorText = await response.text().catch(() => "");
|
|
86
|
+
throw new Error(
|
|
87
|
+
`Camp booking failed: ${response.status} ${response.statusText}${errorText ? ` \u2013 ${errorText}` : ""}`
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
async load(_formId) {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
async clear(_formId) {
|
|
95
|
+
}
|
|
96
|
+
};
|
|
34
97
|
|
|
35
98
|
// src/core/marMedicationOrdersMeta.ts
|
|
36
99
|
var MAR_MEDICATION_ORDERS_META_KEY = "mar_medication_orders";
|
|
@@ -1717,6 +1780,387 @@ var OtpInputWidget = ({ fieldId }) => {
|
|
|
1717
1780
|
showError && /* @__PURE__ */ jsx("p", { className: fieldErrorClass(fieldDef, "text-xs text-red-500"), children: error })
|
|
1718
1781
|
] });
|
|
1719
1782
|
};
|
|
1783
|
+
function formatCampDatePill(date) {
|
|
1784
|
+
const parsed = parseISO(date);
|
|
1785
|
+
return {
|
|
1786
|
+
day: format(parsed, "d"),
|
|
1787
|
+
weekday: format(parsed, "EEE"),
|
|
1788
|
+
label: format(parsed, "EEE, MMM d, yyyy")
|
|
1789
|
+
};
|
|
1790
|
+
}
|
|
1791
|
+
async function fetchBookableInstances(base, campId, token) {
|
|
1792
|
+
const today = format(/* @__PURE__ */ new Date(), "yyyy-MM-dd");
|
|
1793
|
+
const end = format(addDays(/* @__PURE__ */ new Date(), 30), "yyyy-MM-dd");
|
|
1794
|
+
const headers = token ? { Authorization: `Bearer ${token}` } : {};
|
|
1795
|
+
const res = await fetch(
|
|
1796
|
+
`${base}/api/camps/${campId}/instances/?start_date=${today}&end_date=${end}`,
|
|
1797
|
+
{ headers }
|
|
1798
|
+
);
|
|
1799
|
+
if (!res.ok) throw new Error(`Instances fetch failed: ${res.status}`);
|
|
1800
|
+
const data = await res.json();
|
|
1801
|
+
const results = data.results ?? [];
|
|
1802
|
+
const withAvailability = await Promise.all(
|
|
1803
|
+
results.map(async (inst) => {
|
|
1804
|
+
const avRes = await fetch(`${base}/api/camps/instances/${inst.id}/availability/`, {
|
|
1805
|
+
headers
|
|
1806
|
+
});
|
|
1807
|
+
const avData = avRes.ok ? await avRes.json() : { windows: [] };
|
|
1808
|
+
const windows = avData.windows ?? [];
|
|
1809
|
+
return { inst, windows };
|
|
1810
|
+
})
|
|
1811
|
+
);
|
|
1812
|
+
return withAvailability.filter(
|
|
1813
|
+
({ windows }) => windows.some((w) => w.is_bookable && w.primary_available_capacity > 0)
|
|
1814
|
+
).map(({ inst, windows }) => ({
|
|
1815
|
+
id: inst.id,
|
|
1816
|
+
date: inst.date,
|
|
1817
|
+
location: inst.notes || "",
|
|
1818
|
+
spotsLeft: windows.reduce(
|
|
1819
|
+
(sum, w) => sum + (w.is_bookable ? w.primary_available_capacity ?? 0 : 0),
|
|
1820
|
+
0
|
|
1821
|
+
)
|
|
1822
|
+
}));
|
|
1823
|
+
}
|
|
1824
|
+
var datesScrollClass = "flex gap-2.5 overflow-x-auto overflow-y-visible pb-4 pt-2 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden";
|
|
1825
|
+
var CAMP_DATE_PRIMARY_GRADIENT = "linear-gradient(328deg, #1F30A0 19.08%, #914BFA 80.92%)";
|
|
1826
|
+
var campDatePillShadow = {
|
|
1827
|
+
unselected: "rgba(0, 0, 0, 0.12) 0px 6px 14px",
|
|
1828
|
+
selected: "rgba(99, 99, 99, 0.2) 0px 2px 8px 0px"
|
|
1829
|
+
};
|
|
1830
|
+
var CampDatesWidget = ({ fieldId }) => {
|
|
1831
|
+
const { fieldDef, value, setValue, setTouched, error, disabled, touched } = useField(fieldId);
|
|
1832
|
+
const { state } = useForm();
|
|
1833
|
+
const store = useFormStore();
|
|
1834
|
+
const showError = !!error && (touched || state.submitAttempted);
|
|
1835
|
+
const [fetchedOptions, setFetchedOptions] = useState([]);
|
|
1836
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
1837
|
+
const [fetchError, setFetchError] = useState(null);
|
|
1838
|
+
const [monthIndex, setMonthIndex] = useState(0);
|
|
1839
|
+
const def = fieldDef;
|
|
1840
|
+
const campId = def?.meta?.campId;
|
|
1841
|
+
const hasStaticOptions = (def?.options?.length ?? 0) > 0;
|
|
1842
|
+
useEffect(() => {
|
|
1843
|
+
if (!campId || hasStaticOptions) return;
|
|
1844
|
+
const cfg = store.getConfig();
|
|
1845
|
+
const base = cfg.auth?.baseUrl ?? (typeof process !== "undefined" ? process.env?.NEXT_PUBLIC_API_URL ?? "" : "");
|
|
1846
|
+
const token = cfg.camps?.authToken ?? "";
|
|
1847
|
+
setIsLoading(true);
|
|
1848
|
+
setFetchError(null);
|
|
1849
|
+
fetchBookableInstances(base, campId, token).then(setFetchedOptions).catch(() => setFetchError("Failed to load available dates. Please try again.")).finally(() => setIsLoading(false));
|
|
1850
|
+
}, [campId, hasStaticOptions]);
|
|
1851
|
+
const camps = hasStaticOptions ? def?.options ?? [] : fetchedOptions;
|
|
1852
|
+
const selected = parseCampDateValue(value, camps);
|
|
1853
|
+
const sortedCamps = useMemo(
|
|
1854
|
+
() => [...camps].sort((a, b) => a.date.localeCompare(b.date)),
|
|
1855
|
+
[camps]
|
|
1856
|
+
);
|
|
1857
|
+
const months = useMemo(() => {
|
|
1858
|
+
const seen = /* @__PURE__ */ new Set();
|
|
1859
|
+
const result = [];
|
|
1860
|
+
for (const camp of sortedCamps) {
|
|
1861
|
+
const monthStart = startOfMonth(parseISO(camp.date));
|
|
1862
|
+
const key = format(monthStart, "yyyy-MM");
|
|
1863
|
+
if (!seen.has(key)) {
|
|
1864
|
+
seen.add(key);
|
|
1865
|
+
result.push(monthStart);
|
|
1866
|
+
}
|
|
1867
|
+
}
|
|
1868
|
+
return result;
|
|
1869
|
+
}, [sortedCamps]);
|
|
1870
|
+
useEffect(() => {
|
|
1871
|
+
if (months.length === 0) return;
|
|
1872
|
+
if (selected?.date) {
|
|
1873
|
+
const idx = months.findIndex((m) => isSameMonth(m, parseISO(selected.date)));
|
|
1874
|
+
if (idx >= 0) {
|
|
1875
|
+
setMonthIndex(idx);
|
|
1876
|
+
return;
|
|
1877
|
+
}
|
|
1878
|
+
}
|
|
1879
|
+
setMonthIndex(0);
|
|
1880
|
+
}, [months, selected?.date]);
|
|
1881
|
+
if (!fieldDef || !def) return null;
|
|
1882
|
+
const showLabel = isLabelVisible(fieldDef);
|
|
1883
|
+
const currentMonth = months[monthIndex] ?? null;
|
|
1884
|
+
const visibleCamps = currentMonth ? sortedCamps.filter((camp) => isSameMonth(parseISO(camp.date), currentMonth)) : sortedCamps;
|
|
1885
|
+
const canGoPrev = monthIndex > 0;
|
|
1886
|
+
const canGoNext = monthIndex < months.length - 1;
|
|
1887
|
+
const handleSelect = (campOptId) => {
|
|
1888
|
+
if (disabled) return;
|
|
1889
|
+
const camp = camps.find((c) => c.id === campOptId);
|
|
1890
|
+
if (!camp) return;
|
|
1891
|
+
const nextSelection = campDateSelectionFromOption(camp);
|
|
1892
|
+
const prevId = selected?.id ?? null;
|
|
1893
|
+
setValue(nextSelection);
|
|
1894
|
+
setTouched();
|
|
1895
|
+
store.setExternalError(fieldId, null);
|
|
1896
|
+
const timeSlotFieldId = def.meta?.timeSlotFieldId;
|
|
1897
|
+
if (timeSlotFieldId && prevId !== campOptId) {
|
|
1898
|
+
store.setValue(timeSlotFieldId, null);
|
|
1899
|
+
}
|
|
1900
|
+
};
|
|
1901
|
+
return /* @__PURE__ */ jsxs("div", { className: fieldWrapperClass(fieldDef, "space-y-3"), children: [
|
|
1902
|
+
showLabel || months.length > 0 ? /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-3", children: [
|
|
1903
|
+
showLabel ? /* @__PURE__ */ jsxs("h3", { className: "text-sm font-normal text-[#727272]", children: [
|
|
1904
|
+
fieldDef.label,
|
|
1905
|
+
/* @__PURE__ */ jsx(FieldRequiredIndicator, { fieldDef })
|
|
1906
|
+
] }) : /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "shrink-0" }),
|
|
1907
|
+
months.length > 0 && currentMonth ? /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center gap-1 text-[#191919]", children: [
|
|
1908
|
+
/* @__PURE__ */ jsx(
|
|
1909
|
+
"button",
|
|
1910
|
+
{
|
|
1911
|
+
type: "button",
|
|
1912
|
+
"aria-label": "Previous month",
|
|
1913
|
+
disabled: !canGoPrev || disabled,
|
|
1914
|
+
onClick: () => setMonthIndex((i) => Math.max(0, i - 1)),
|
|
1915
|
+
className: cn(
|
|
1916
|
+
"rounded p-0.5 transition-opacity",
|
|
1917
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
1918
|
+
(!canGoPrev || disabled) && "cursor-not-allowed opacity-30"
|
|
1919
|
+
),
|
|
1920
|
+
children: /* @__PURE__ */ jsx(ChevronLeft, { className: "h-4 w-4", "aria-hidden": true })
|
|
1921
|
+
}
|
|
1922
|
+
),
|
|
1923
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-[3.5rem] text-center text-sm font-medium", children: format(currentMonth, "MMMM") }),
|
|
1924
|
+
/* @__PURE__ */ jsx(
|
|
1925
|
+
"button",
|
|
1926
|
+
{
|
|
1927
|
+
type: "button",
|
|
1928
|
+
"aria-label": "Next month",
|
|
1929
|
+
disabled: !canGoNext || disabled,
|
|
1930
|
+
onClick: () => setMonthIndex((i) => Math.min(months.length - 1, i + 1)),
|
|
1931
|
+
className: cn(
|
|
1932
|
+
"rounded p-0.5 transition-opacity",
|
|
1933
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
1934
|
+
(!canGoNext || disabled) && "cursor-not-allowed opacity-30"
|
|
1935
|
+
),
|
|
1936
|
+
children: /* @__PURE__ */ jsx(ChevronRight, { className: "h-4 w-4", "aria-hidden": true })
|
|
1937
|
+
}
|
|
1938
|
+
)
|
|
1939
|
+
] }) : null
|
|
1940
|
+
] }) : null,
|
|
1941
|
+
fieldDef.description ? /* @__PURE__ */ jsx("p", { className: fieldDescriptionClass(fieldDef, "text-sm text-muted-foreground"), children: fieldDef.description }) : null,
|
|
1942
|
+
isLoading ? /* @__PURE__ */ jsx("div", { className: datesScrollClass, children: [0, 1, 2, 3, 4].map((i) => /* @__PURE__ */ jsx(
|
|
1943
|
+
"div",
|
|
1944
|
+
{
|
|
1945
|
+
className: "h-[76px] w-12 shrink-0 animate-pulse rounded-full bg-[#D9D9D9]"
|
|
1946
|
+
},
|
|
1947
|
+
i
|
|
1948
|
+
)) }) : fetchError ? /* @__PURE__ */ jsx("p", { className: "text-sm text-red-500", children: fetchError }) : camps.length === 0 && campId ? /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "No available dates in the next 30 days." }) : /* @__PURE__ */ jsx("div", { role: "radiogroup", "aria-label": fieldDef.label, className: datesScrollClass, children: visibleCamps.map((camp) => {
|
|
1949
|
+
const { day, weekday, label } = formatCampDatePill(camp.date);
|
|
1950
|
+
const isSelected = selected?.id === camp.id;
|
|
1951
|
+
return /* @__PURE__ */ jsxs(
|
|
1952
|
+
"button",
|
|
1953
|
+
{
|
|
1954
|
+
type: "button",
|
|
1955
|
+
role: "radio",
|
|
1956
|
+
"aria-checked": isSelected,
|
|
1957
|
+
"aria-label": label,
|
|
1958
|
+
disabled,
|
|
1959
|
+
onClick: () => handleSelect(camp.id),
|
|
1960
|
+
className: cn(
|
|
1961
|
+
"relative flex h-[76px] w-12 shrink-0 flex-col items-center justify-between gap-2.5 rounded-full p-1.5",
|
|
1962
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
1963
|
+
!isSelected && "bg-white",
|
|
1964
|
+
disabled && "cursor-not-allowed opacity-60"
|
|
1965
|
+
),
|
|
1966
|
+
style: {
|
|
1967
|
+
boxShadow: isSelected ? "none" : campDatePillShadow.unselected
|
|
1968
|
+
},
|
|
1969
|
+
children: [
|
|
1970
|
+
/* @__PURE__ */ jsx(
|
|
1971
|
+
"div",
|
|
1972
|
+
{
|
|
1973
|
+
"aria-hidden": true,
|
|
1974
|
+
className: cn(
|
|
1975
|
+
"absolute inset-0 rounded-full bg-[#2F2F2F] transition-opacity duration-400",
|
|
1976
|
+
isSelected ? "opacity-100" : "opacity-0"
|
|
1977
|
+
),
|
|
1978
|
+
style: { boxShadow: campDatePillShadow.selected }
|
|
1979
|
+
}
|
|
1980
|
+
),
|
|
1981
|
+
/* @__PURE__ */ jsx(
|
|
1982
|
+
"div",
|
|
1983
|
+
{
|
|
1984
|
+
className: cn(
|
|
1985
|
+
"relative z-10 flex h-9 w-9 items-center justify-center rounded-full text-[12px] font-medium transition-colors duration-200",
|
|
1986
|
+
isSelected ? "text-white" : "bg-[#D9D9D9] text-[#1E1E1E]"
|
|
1987
|
+
),
|
|
1988
|
+
style: isSelected ? { backgroundImage: CAMP_DATE_PRIMARY_GRADIENT } : void 0,
|
|
1989
|
+
children: day
|
|
1990
|
+
}
|
|
1991
|
+
),
|
|
1992
|
+
/* @__PURE__ */ jsx(
|
|
1993
|
+
"span",
|
|
1994
|
+
{
|
|
1995
|
+
className: cn(
|
|
1996
|
+
"relative z-10 mb-1.5 text-center text-[10px] font-normal transition-colors duration-400",
|
|
1997
|
+
isSelected ? "text-white" : "text-[#1E1E1E]"
|
|
1998
|
+
),
|
|
1999
|
+
children: weekday
|
|
2000
|
+
}
|
|
2001
|
+
)
|
|
2002
|
+
]
|
|
2003
|
+
},
|
|
2004
|
+
camp.id
|
|
2005
|
+
);
|
|
2006
|
+
}) }),
|
|
2007
|
+
showError ? /* @__PURE__ */ jsx("p", { className: fieldErrorClass(fieldDef, "text-xs text-red-500"), children: error }) : null
|
|
2008
|
+
] });
|
|
2009
|
+
};
|
|
2010
|
+
function formatSlotTime(time) {
|
|
2011
|
+
try {
|
|
2012
|
+
return format(parse(time, "HH:mm:ss", /* @__PURE__ */ new Date()), "hh:mm a");
|
|
2013
|
+
} catch {
|
|
2014
|
+
return time;
|
|
2015
|
+
}
|
|
2016
|
+
}
|
|
2017
|
+
function mapWindowsToSlots(windows) {
|
|
2018
|
+
return windows.map((w) => ({
|
|
2019
|
+
id: w.primary_slot_id,
|
|
2020
|
+
time: formatSlotTime(w.start_time),
|
|
2021
|
+
spotsLeft: w.is_bookable ? w.primary_available_capacity ?? 0 : 0,
|
|
2022
|
+
capacity: w.primary_available_capacity ?? 0
|
|
2023
|
+
}));
|
|
2024
|
+
}
|
|
2025
|
+
var slotsScrollClass = "w-full overflow-x-auto pb-1 [scrollbar-width:thin] [&::-webkit-scrollbar]:h-1 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-border/70";
|
|
2026
|
+
var slotPillShadow = "0 2.596px 5.193px 0 rgba(0, 0, 0, 0.10)";
|
|
2027
|
+
var CampTimeSlotsWidget = ({ fieldId }) => {
|
|
2028
|
+
const { fieldDef, value, setValue, setTouched, error, disabled, touched } = useField(fieldId);
|
|
2029
|
+
const { state } = useForm();
|
|
2030
|
+
const store = useFormStore();
|
|
2031
|
+
const campDateFieldId = fieldDef?.meta?.campDateFieldId ?? "camp_date";
|
|
2032
|
+
const { value: campDateValue, fieldDef: campDateFieldDef } = useField(campDateFieldId);
|
|
2033
|
+
const showError = !!error && (touched || state.submitAttempted);
|
|
2034
|
+
const def = fieldDef;
|
|
2035
|
+
const campDateOptions = campDateFieldDef?.options;
|
|
2036
|
+
const selectedCamp = parseCampDateValue(campDateValue, campDateOptions);
|
|
2037
|
+
const prevCampIdRef = useRef(selectedCamp?.id ?? null);
|
|
2038
|
+
const [fetchedSlots, setFetchedSlots] = useState([]);
|
|
2039
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
2040
|
+
const [fetchError, setFetchError] = useState(null);
|
|
2041
|
+
const hasStaticOptions = (def?.options?.length ?? 0) > 0;
|
|
2042
|
+
const slots = hasStaticOptions ? def?.options ?? [] : fetchedSlots;
|
|
2043
|
+
const selectedSlotId = value != null ? String(value) : null;
|
|
2044
|
+
useEffect(() => {
|
|
2045
|
+
if (hasStaticOptions || !selectedCamp?.id) {
|
|
2046
|
+
if (!selectedCamp?.id) {
|
|
2047
|
+
setFetchedSlots([]);
|
|
2048
|
+
setFetchError(null);
|
|
2049
|
+
}
|
|
2050
|
+
return;
|
|
2051
|
+
}
|
|
2052
|
+
const instanceId = selectedCamp.id;
|
|
2053
|
+
const cfg = store.getConfig();
|
|
2054
|
+
const base = cfg.auth?.baseUrl ?? (typeof process !== "undefined" ? process.env?.NEXT_PUBLIC_API_URL ?? "" : "");
|
|
2055
|
+
const token = cfg.camps?.authToken ?? "";
|
|
2056
|
+
const headers = token ? { Authorization: `Bearer ${token}` } : {};
|
|
2057
|
+
setIsLoading(true);
|
|
2058
|
+
setFetchError(null);
|
|
2059
|
+
fetch(`${base}/api/camps/instances/${instanceId}/availability/`, { headers }).then((r) => {
|
|
2060
|
+
if (!r.ok) throw new Error(`Availability fetch failed: ${r.status}`);
|
|
2061
|
+
return r.json();
|
|
2062
|
+
}).then((data) => {
|
|
2063
|
+
setFetchedSlots(mapWindowsToSlots(data.windows ?? []));
|
|
2064
|
+
}).catch(() => setFetchError("Failed to load time slots. Please try again.")).finally(() => setIsLoading(false));
|
|
2065
|
+
}, [selectedCamp?.id, hasStaticOptions]);
|
|
2066
|
+
useEffect(() => {
|
|
2067
|
+
const campId = selectedCamp?.id ?? null;
|
|
2068
|
+
if (prevCampIdRef.current !== null && prevCampIdRef.current !== campId && selectedSlotId) {
|
|
2069
|
+
setValue(null);
|
|
2070
|
+
}
|
|
2071
|
+
prevCampIdRef.current = campId;
|
|
2072
|
+
}, [selectedCamp?.id, selectedSlotId, setValue]);
|
|
2073
|
+
useEffect(() => {
|
|
2074
|
+
if (!selectedSlotId) return;
|
|
2075
|
+
const slotStillValid = slots.some((slot) => slot.id === selectedSlotId && slot.spotsLeft > 0);
|
|
2076
|
+
if (!slotStillValid) {
|
|
2077
|
+
setValue(null);
|
|
2078
|
+
}
|
|
2079
|
+
}, [selectedSlotId, setValue, slots]);
|
|
2080
|
+
if (!fieldDef || !def) return null;
|
|
2081
|
+
const showLabel = isLabelVisible(fieldDef);
|
|
2082
|
+
const handleSelect = (slotId, button) => {
|
|
2083
|
+
if (disabled) return;
|
|
2084
|
+
setValue(slotId);
|
|
2085
|
+
setTouched();
|
|
2086
|
+
button?.scrollIntoView({ behavior: "smooth", block: "nearest", inline: "center" });
|
|
2087
|
+
};
|
|
2088
|
+
const dateLabel = selectedCamp?.date ? format(parseISO(selectedCamp.date), "EEE, MMM d, yyyy") : null;
|
|
2089
|
+
return /* @__PURE__ */ jsxs("div", { className: fieldWrapperClass(fieldDef, "space-y-3"), children: [
|
|
2090
|
+
showLabel ? /* @__PURE__ */ jsxs("div", { className: "space-y-0.5", children: [
|
|
2091
|
+
/* @__PURE__ */ jsxs(
|
|
2092
|
+
"h3",
|
|
2093
|
+
{
|
|
2094
|
+
className: fieldLabelClass(
|
|
2095
|
+
fieldDef,
|
|
2096
|
+
"text-lg font-semibold leading-tight text-foreground"
|
|
2097
|
+
),
|
|
2098
|
+
children: [
|
|
2099
|
+
fieldDef.label,
|
|
2100
|
+
/* @__PURE__ */ jsx(FieldRequiredIndicator, { fieldDef })
|
|
2101
|
+
]
|
|
2102
|
+
}
|
|
2103
|
+
),
|
|
2104
|
+
dateLabel ? /* @__PURE__ */ jsxs("p", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
|
|
2105
|
+
/* @__PURE__ */ jsx(Calendar, { className: "h-3.5 w-3.5 shrink-0", "aria-hidden": true }),
|
|
2106
|
+
dateLabel
|
|
2107
|
+
] }) : null
|
|
2108
|
+
] }) : null,
|
|
2109
|
+
isLoading ? /* @__PURE__ */ jsx("div", { className: slotsScrollClass, children: /* @__PURE__ */ jsxs("div", { className: "relative", style: { minWidth: "max-content" }, children: [
|
|
2110
|
+
/* @__PURE__ */ jsx("div", { className: "absolute left-0 right-0 top-0 h-0.5 w-full bg-[#DCDCDC]" }),
|
|
2111
|
+
/* @__PURE__ */ jsx("div", { className: "flex gap-4 pt-3", children: [0, 1, 2, 3].map((i) => /* @__PURE__ */ jsx(
|
|
2112
|
+
"div",
|
|
2113
|
+
{
|
|
2114
|
+
className: "mb-2 h-[34px] w-[86px] shrink-0 animate-pulse rounded-full bg-[#DCDCDC]"
|
|
2115
|
+
},
|
|
2116
|
+
i
|
|
2117
|
+
)) })
|
|
2118
|
+
] }) }) : fetchError ? /* @__PURE__ */ jsx("p", { className: "text-sm text-red-500", children: fetchError }) : !selectedCamp?.id ? /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "Select a date to see available time slots." }) : slots.length === 0 ? /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "No time slots available for this date." }) : /* @__PURE__ */ jsx(
|
|
2119
|
+
"div",
|
|
2120
|
+
{
|
|
2121
|
+
role: "radiogroup",
|
|
2122
|
+
"aria-label": fieldDef.label,
|
|
2123
|
+
className: slotsScrollClass,
|
|
2124
|
+
children: /* @__PURE__ */ jsxs("div", { className: "relative", style: { minWidth: "max-content" }, children: [
|
|
2125
|
+
/* @__PURE__ */ jsx("div", { className: "absolute left-0 right-0 top-0 h-0.5 w-full bg-[#DCDCDC]" }),
|
|
2126
|
+
/* @__PURE__ */ jsx("div", { className: "flex gap-4 pt-3", children: slots.map((slot) => {
|
|
2127
|
+
const isFull = slot.spotsLeft <= 0;
|
|
2128
|
+
const selected = selectedSlotId === slot.id;
|
|
2129
|
+
return /* @__PURE__ */ jsxs(
|
|
2130
|
+
"button",
|
|
2131
|
+
{
|
|
2132
|
+
type: "button",
|
|
2133
|
+
role: "radio",
|
|
2134
|
+
"aria-checked": selected,
|
|
2135
|
+
disabled: disabled || isFull,
|
|
2136
|
+
onClick: (e) => handleSelect(slot.id, e.currentTarget),
|
|
2137
|
+
className: cn(
|
|
2138
|
+
"relative mb-2 w-[86px] shrink-0 rounded-full px-3 py-2 text-xs font-medium transition-colors",
|
|
2139
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
2140
|
+
isFull ? "cursor-not-allowed bg-[#DCDCDC]/60 text-black/40" : selected ? "bg-[#2F2F2F] text-white" : "bg-[#DCDCDC] text-black",
|
|
2141
|
+
disabled && !isFull && "cursor-not-allowed opacity-60"
|
|
2142
|
+
),
|
|
2143
|
+
style: isFull ? void 0 : { boxShadow: slotPillShadow },
|
|
2144
|
+
children: [
|
|
2145
|
+
selected && !isFull ? /* @__PURE__ */ jsx(
|
|
2146
|
+
"span",
|
|
2147
|
+
{
|
|
2148
|
+
className: "absolute -top-3 left-0 right-0 h-0.5 bg-[#6641D8]",
|
|
2149
|
+
"aria-hidden": true
|
|
2150
|
+
}
|
|
2151
|
+
) : null,
|
|
2152
|
+
/* @__PURE__ */ jsx("span", { className: "whitespace-nowrap", children: slot.time })
|
|
2153
|
+
]
|
|
2154
|
+
},
|
|
2155
|
+
slot.id
|
|
2156
|
+
);
|
|
2157
|
+
}) })
|
|
2158
|
+
] })
|
|
2159
|
+
}
|
|
2160
|
+
),
|
|
2161
|
+
showError ? /* @__PURE__ */ jsx("p", { className: fieldErrorClass(fieldDef, "text-xs text-red-500"), children: error }) : null
|
|
2162
|
+
] });
|
|
2163
|
+
};
|
|
1720
2164
|
var Switch = React6.forwardRef(
|
|
1721
2165
|
({ className, checked, onCheckedChange, disabled, ...props }, ref) => {
|
|
1722
2166
|
return /* @__PURE__ */ jsx(
|
|
@@ -1754,40 +2198,40 @@ Switch.displayName = "Switch";
|
|
|
1754
2198
|
function lazyNamed(loader, name) {
|
|
1755
2199
|
return React6__default.lazy(async () => ({ default: (await loader())[name] }));
|
|
1756
2200
|
}
|
|
1757
|
-
var RichTextWidget = lazyNamed(() => import('./RichTextWidget-
|
|
1758
|
-
var DateWidget = lazyNamed(() => import('./DateWidget-
|
|
1759
|
-
var DateTimeWidget = lazyNamed(() => import('./DateTimeWidget-
|
|
1760
|
-
var EditableTableWidget = lazyNamed(() => import('./EditableTable-
|
|
1761
|
-
var AddMedicationWidget = lazyNamed(() => import('./AddMedicationWidget-
|
|
1762
|
-
var DischargeMedicationOrdersWidget = lazyNamed(() => import('./DischargeMedicationOrdersWidget-
|
|
1763
|
-
var AddInvestigationWidget = lazyNamed(() => import('./AddInvestigationWidget-
|
|
1764
|
-
var AddProcedureWidget = lazyNamed(() => import('./AddProcedureWidget-
|
|
1765
|
-
var DifferentialDiagnosisWidget = lazyNamed(() => import('./DifferentialDiagnosisWidget-
|
|
1766
|
-
var VitalsWidget = lazyNamed(() => import('./VitalsWidget-
|
|
1767
|
-
var HiddenVitalsWidget = lazyNamed(() => import('./HiddenVitalsWidget-
|
|
1768
|
-
var ReferralWidget = lazyNamed(() => import('./ReferralWidget-
|
|
1769
|
-
var FollowupWidget = lazyNamed(() => import('./FollowupWidget-
|
|
1770
|
-
var SmartTextareaWidget = lazyNamed(() => import('./SmartTextarea-
|
|
1771
|
-
var DiagnosisTextareaWidget = lazyNamed(() => import('./DiagnosisTextareaWidget-
|
|
1772
|
-
var ObstetricHistoryWidget = lazyNamed(() => import('./ObstetricHistoryWidget-
|
|
1773
|
-
var OphthalmologyWidget = lazyNamed(() => import('./OphthalmologyWidget-
|
|
1774
|
-
var OphthalDiagnosisWidget = lazyNamed(() => import('./OphthalDiagnosisWidget-
|
|
1775
|
-
var OrthopedicExamWidget = lazyNamed(() => import('./OrthopedicExamWidget-
|
|
1776
|
-
var MarMedicationOrdersWidget = lazyNamed(() => import('./MarMedicationOrdersWidget-
|
|
1777
|
-
var SuggestionTextareaWidget = lazyNamed(() => import('./SuggestionTextareaWidget-
|
|
1778
|
-
var LensAssessmentWidget = lazyNamed(() => import('./LensAssessmentWidget-
|
|
1779
|
-
var FunctionalImpairmentScoreWidget = lazyNamed(() => import('./FunctionalImpairmentScoreWidget-
|
|
1780
|
-
var BiometryIolWorkupWidget = lazyNamed(() => import('./BiometryIolWorkupWidget-
|
|
1781
|
-
var SurgicalRiskFlagsWidget = lazyNamed(() => import('./SurgicalRiskFlagsWidget-
|
|
1782
|
-
var GsSmartHistoryWidget = lazyNamed(() => import('./GsSmartHistoryWidget-
|
|
1783
|
-
var GsExaminationWidget = lazyNamed(() => import('./GsExaminationWidget-
|
|
1784
|
-
var GsGradingWidget = lazyNamed(() => import('./GsGradingWidget-
|
|
1785
|
-
var PainScaleFlagsWidget = lazyNamed(() => import('./PainScaleFlagsWidget-
|
|
1786
|
-
var UrologySmartHistoryWidget = lazyNamed(() => import('./UrologySmartHistoryWidget-
|
|
1787
|
-
var UrologyExaminationWidget = lazyNamed(() => import('./UrologyExaminationWidget-
|
|
1788
|
-
var UrologyPathwayWidget = lazyNamed(() => import('./UrologyPathwayWidget-
|
|
1789
|
-
var OBGExaminationWidget = lazyNamed(() => import('./OBGExaminationWidget-
|
|
1790
|
-
var OBGPathwayWidget = lazyNamed(() => import('./OBGPathwayWidget-
|
|
2201
|
+
var RichTextWidget = lazyNamed(() => import('./RichTextWidget-ZBX554ZJ.mjs'), "RichTextWidget");
|
|
2202
|
+
var DateWidget = lazyNamed(() => import('./DateWidget-KCTE6N5G.mjs'), "DateWidget");
|
|
2203
|
+
var DateTimeWidget = lazyNamed(() => import('./DateTimeWidget-3AUBZYYK.mjs'), "DateTimeWidget");
|
|
2204
|
+
var EditableTableWidget = lazyNamed(() => import('./EditableTable-XFCPKSUY.mjs'), "EditableTableWidget");
|
|
2205
|
+
var AddMedicationWidget = lazyNamed(() => import('./AddMedicationWidget-B5RXRYBK.mjs'), "AddMedicationWidget");
|
|
2206
|
+
var DischargeMedicationOrdersWidget = lazyNamed(() => import('./DischargeMedicationOrdersWidget-KA3HANHE.mjs'), "DischargeMedicationOrdersWidget");
|
|
2207
|
+
var AddInvestigationWidget = lazyNamed(() => import('./AddInvestigationWidget-FABXZDEZ.mjs'), "AddInvestigationWidget");
|
|
2208
|
+
var AddProcedureWidget = lazyNamed(() => import('./AddProcedureWidget-F74WGSFX.mjs'), "AddProcedureWidget");
|
|
2209
|
+
var DifferentialDiagnosisWidget = lazyNamed(() => import('./DifferentialDiagnosisWidget-IZEZVW5F.mjs'), "DifferentialDiagnosisWidget");
|
|
2210
|
+
var VitalsWidget = lazyNamed(() => import('./VitalsWidget-63HTXK2M.mjs'), "VitalsWidget");
|
|
2211
|
+
var HiddenVitalsWidget = lazyNamed(() => import('./HiddenVitalsWidget-CIE3KERT.mjs'), "HiddenVitalsWidget");
|
|
2212
|
+
var ReferralWidget = lazyNamed(() => import('./ReferralWidget-GU3JYED2.mjs'), "ReferralWidget");
|
|
2213
|
+
var FollowupWidget = lazyNamed(() => import('./FollowupWidget-BFZ6P2JE.mjs'), "FollowupWidget");
|
|
2214
|
+
var SmartTextareaWidget = lazyNamed(() => import('./SmartTextarea-LQDXFCYT.mjs'), "SmartTextareaWidget");
|
|
2215
|
+
var DiagnosisTextareaWidget = lazyNamed(() => import('./DiagnosisTextareaWidget-6UCYCCSB.mjs'), "DiagnosisTextareaWidget");
|
|
2216
|
+
var ObstetricHistoryWidget = lazyNamed(() => import('./ObstetricHistoryWidget-Z4VAXH3E.mjs'), "ObstetricHistoryWidget");
|
|
2217
|
+
var OphthalmologyWidget = lazyNamed(() => import('./OphthalmologyWidget-27ZN2E3F.mjs'), "OphthalmologyWidget");
|
|
2218
|
+
var OphthalDiagnosisWidget = lazyNamed(() => import('./OphthalDiagnosisWidget-MZYBQTFV.mjs'), "OphthalDiagnosisWidget");
|
|
2219
|
+
var OrthopedicExamWidget = lazyNamed(() => import('./OrthopedicExamWidget-WM55M3Y4.mjs'), "OrthopedicExamWidget");
|
|
2220
|
+
var MarMedicationOrdersWidget = lazyNamed(() => import('./MarMedicationOrdersWidget-LG3WOXN7.mjs'), "MarMedicationOrdersWidget");
|
|
2221
|
+
var SuggestionTextareaWidget = lazyNamed(() => import('./SuggestionTextareaWidget-GQTWCFBG.mjs'), "SuggestionTextareaWidget");
|
|
2222
|
+
var LensAssessmentWidget = lazyNamed(() => import('./LensAssessmentWidget-B4OMHTOE.mjs'), "LensAssessmentWidget");
|
|
2223
|
+
var FunctionalImpairmentScoreWidget = lazyNamed(() => import('./FunctionalImpairmentScoreWidget-TKS6KE7K.mjs'), "FunctionalImpairmentScoreWidget");
|
|
2224
|
+
var BiometryIolWorkupWidget = lazyNamed(() => import('./BiometryIolWorkupWidget-5RZP34FF.mjs'), "BiometryIolWorkupWidget");
|
|
2225
|
+
var SurgicalRiskFlagsWidget = lazyNamed(() => import('./SurgicalRiskFlagsWidget-ZTQJ6CDF.mjs'), "SurgicalRiskFlagsWidget");
|
|
2226
|
+
var GsSmartHistoryWidget = lazyNamed(() => import('./GsSmartHistoryWidget-7HYGDU4O.mjs'), "GsSmartHistoryWidget");
|
|
2227
|
+
var GsExaminationWidget = lazyNamed(() => import('./GsExaminationWidget-ESIEZCP3.mjs'), "GsExaminationWidget");
|
|
2228
|
+
var GsGradingWidget = lazyNamed(() => import('./GsGradingWidget-HC4MJ4KJ.mjs'), "GsGradingWidget");
|
|
2229
|
+
var PainScaleFlagsWidget = lazyNamed(() => import('./PainScaleFlagsWidget-5KN7T4JK.mjs'), "PainScaleFlagsWidget");
|
|
2230
|
+
var UrologySmartHistoryWidget = lazyNamed(() => import('./UrologySmartHistoryWidget-BDKRFBYN.mjs'), "UrologySmartHistoryWidget");
|
|
2231
|
+
var UrologyExaminationWidget = lazyNamed(() => import('./UrologyExaminationWidget-GRBL2SDG.mjs'), "UrologyExaminationWidget");
|
|
2232
|
+
var UrologyPathwayWidget = lazyNamed(() => import('./UrologyPathwayWidget-PEO5BVQX.mjs'), "UrologyPathwayWidget");
|
|
2233
|
+
var OBGExaminationWidget = lazyNamed(() => import('./OBGExaminationWidget-HQKTHSOZ.mjs'), "OBGExaminationWidget");
|
|
2234
|
+
var OBGPathwayWidget = lazyNamed(() => import('./OBGPathwayWidget-X67XKRIH.mjs'), "OBGPathwayWidget");
|
|
1791
2235
|
function lazyWidget(node) {
|
|
1792
2236
|
return /* @__PURE__ */ jsx(React6__default.Suspense, { fallback: null, children: node });
|
|
1793
2237
|
}
|
|
@@ -1888,6 +2332,10 @@ function renderWidget(fieldId, fieldDef) {
|
|
|
1888
2332
|
return /* @__PURE__ */ jsx(PhoneInputWidget, { fieldId });
|
|
1889
2333
|
case "otp_input":
|
|
1890
2334
|
return /* @__PURE__ */ jsx(OtpInputWidget, { fieldId });
|
|
2335
|
+
case "camp_dates":
|
|
2336
|
+
return /* @__PURE__ */ jsx(CampDatesWidget, { fieldId });
|
|
2337
|
+
case "camp_time_slots":
|
|
2338
|
+
return /* @__PURE__ */ jsx(CampTimeSlotsWidget, { fieldId });
|
|
1891
2339
|
case "toggle": {
|
|
1892
2340
|
const { value, setValue, setTouched, disabled } = useField(fieldId);
|
|
1893
2341
|
const store = useFormStore();
|
|
@@ -2119,6 +2567,14 @@ function isFieldComplete(id, state, fieldMap) {
|
|
|
2119
2567
|
const v = state.values[id];
|
|
2120
2568
|
if (v === null || v === void 0 || v === "") return false;
|
|
2121
2569
|
if (Array.isArray(v) && v.length === 0) return false;
|
|
2570
|
+
if (def.type === "camp_dates") {
|
|
2571
|
+
if (!parseCampDateValue(v, def.options)?.id) return false;
|
|
2572
|
+
}
|
|
2573
|
+
if (def.type === "otp_input") {
|
|
2574
|
+
if (!v || typeof v !== "object" || v.verified !== true) {
|
|
2575
|
+
return false;
|
|
2576
|
+
}
|
|
2577
|
+
}
|
|
2122
2578
|
}
|
|
2123
2579
|
return true;
|
|
2124
2580
|
}
|
|
@@ -2198,17 +2654,27 @@ var Stepper = ({ steps, statuses, variant }) => {
|
|
|
2198
2654
|
return /* @__PURE__ */ jsx("div", { className: "flex items-center gap-0 mb-6", children: steps.map((step, i) => {
|
|
2199
2655
|
const status = statuses[i];
|
|
2200
2656
|
return /* @__PURE__ */ jsxs(React6__default.Fragment, { children: [
|
|
2201
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2657
|
+
/* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center gap-2", children: [
|
|
2202
2658
|
/* @__PURE__ */ jsx(
|
|
2203
2659
|
"div",
|
|
2204
2660
|
{
|
|
2205
2661
|
className: cn(
|
|
2206
|
-
"flex h-7 w-7 items-center justify-center rounded-full text-xs font-semibold
|
|
2207
|
-
status === "complete" && "border-primary bg-primary
|
|
2208
|
-
status === "active" && "border-primary bg-background
|
|
2209
|
-
status === "locked" && "border-border bg-background
|
|
2662
|
+
"inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-full border-2 text-xs font-semibold leading-none transition-colors",
|
|
2663
|
+
status === "complete" && "border-primary bg-primary",
|
|
2664
|
+
status === "active" && "border-primary bg-background",
|
|
2665
|
+
status === "locked" && "border-border bg-background"
|
|
2210
2666
|
),
|
|
2211
|
-
children: status === "complete" ? /* @__PURE__ */ jsx(Check, { className: "h-3.5 w-3.5" }) :
|
|
2667
|
+
children: status === "complete" ? /* @__PURE__ */ jsx(Check, { className: "h-3.5 w-3.5 shrink-0 text-primary-foreground" }) : /* @__PURE__ */ jsx(
|
|
2668
|
+
"span",
|
|
2669
|
+
{
|
|
2670
|
+
className: cn(
|
|
2671
|
+
"tabular-nums",
|
|
2672
|
+
status === "active" && "text-primary",
|
|
2673
|
+
status === "locked" && "text-muted-foreground"
|
|
2674
|
+
),
|
|
2675
|
+
children: i + 1
|
|
2676
|
+
}
|
|
2677
|
+
)
|
|
2212
2678
|
}
|
|
2213
2679
|
),
|
|
2214
2680
|
/* @__PURE__ */ jsx(
|
|
@@ -2248,11 +2714,6 @@ var Wizard = ({ node }) => {
|
|
|
2248
2714
|
}));
|
|
2249
2715
|
useEffect(() => {
|
|
2250
2716
|
return store.subscribe((state) => {
|
|
2251
|
-
console.log("[MultiStepForm] store update \u2192", {
|
|
2252
|
-
values: state.values,
|
|
2253
|
-
errors: state.errors,
|
|
2254
|
-
visibility: state.visibility
|
|
2255
|
-
});
|
|
2256
2717
|
setFormState({ ...state });
|
|
2257
2718
|
});
|
|
2258
2719
|
}, [store]);
|
|
@@ -2265,17 +2726,10 @@ var Wizard = ({ node }) => {
|
|
|
2265
2726
|
const showStepper = meta?.showStepper !== false;
|
|
2266
2727
|
const variant = meta?.stepperVariant ?? "numbered";
|
|
2267
2728
|
const collapseCompleted = meta?.collapseCompleted !== false;
|
|
2268
|
-
const stepComplete = steps.map(
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
console.log(`[MultiStepForm] step "${s.id}" fieldIds=${JSON.stringify(fieldIds)} complete=${complete}`, {
|
|
2272
|
-
errors: fieldIds.map((id) => ({ id, error: formState.errors[id] })),
|
|
2273
|
-
values: fieldIds.map((id) => ({ id, value: formState.values[id] }))
|
|
2274
|
-
});
|
|
2275
|
-
return complete;
|
|
2276
|
-
});
|
|
2729
|
+
const stepComplete = steps.map(
|
|
2730
|
+
(s) => isStepComplete(s, formState, fieldMap)
|
|
2731
|
+
);
|
|
2277
2732
|
const activeIndex = stepComplete.findIndex((c) => !c) === -1 ? steps.length : stepComplete.findIndex((c) => !c);
|
|
2278
|
-
console.log(`[MultiStepForm] activeIndex=${activeIndex} stepComplete=${JSON.stringify(stepComplete)}`);
|
|
2279
2733
|
const statuses = steps.map((_, i) => {
|
|
2280
2734
|
if (i < activeIndex) return "complete";
|
|
2281
2735
|
if (i === activeIndex) return "active";
|
|
@@ -2292,17 +2746,7 @@ var Wizard = ({ node }) => {
|
|
|
2292
2746
|
if (collapseCompleted) {
|
|
2293
2747
|
return /* @__PURE__ */ jsx(Section, { title: step.title, children }, step.id);
|
|
2294
2748
|
}
|
|
2295
|
-
return /* @__PURE__ */
|
|
2296
|
-
"div",
|
|
2297
|
-
{
|
|
2298
|
-
className: "mb-4 opacity-60 pointer-events-none select-none space-y-4",
|
|
2299
|
-
children: [
|
|
2300
|
-
/* @__PURE__ */ jsx("h2", { className: "text-base font-medium text-foreground", children: step.title }),
|
|
2301
|
-
children
|
|
2302
|
-
]
|
|
2303
|
-
},
|
|
2304
|
-
step.id
|
|
2305
|
-
);
|
|
2749
|
+
return /* @__PURE__ */ jsx(ActiveStep, { title: step.title, children }, step.id);
|
|
2306
2750
|
}
|
|
2307
2751
|
return /* @__PURE__ */ jsx(ActiveStep, { title: step.title, children }, step.id);
|
|
2308
2752
|
}) })
|
|
@@ -2880,6 +3324,30 @@ var ReadOnlyDischargeMedicationOrders = ({ fieldDef, value }) => {
|
|
|
2880
3324
|
}) })
|
|
2881
3325
|
] });
|
|
2882
3326
|
};
|
|
3327
|
+
var ReadOnlyCampDates = ({ fieldDef, value }) => {
|
|
3328
|
+
const camps = fieldDef.options?.length ? fieldDef.options : MOCK_CAMP_DATES;
|
|
3329
|
+
const selected = parseCampDateValue(value, camps);
|
|
3330
|
+
const isEmpty = !selected;
|
|
3331
|
+
return /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
3332
|
+
/* @__PURE__ */ jsx(Label, { className: "text-sm font-medium text-gray-700", children: fieldDef.label }),
|
|
3333
|
+
/* @__PURE__ */ jsx("div", { className: "rounded-md border border-gray-200 bg-gray-50 p-3 min-h-[2.5rem]", children: isEmpty ? /* @__PURE__ */ jsx("span", { className: "text-gray-400 italic", children: "No value" }) : /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
|
|
3334
|
+
/* @__PURE__ */ jsx("p", { className: "font-medium text-gray-900", children: format(parseISO(selected.date), "EEE, MMM d, yyyy") }),
|
|
3335
|
+
selected.location ? /* @__PURE__ */ jsxs("p", { className: "flex items-center gap-1 text-sm text-gray-600", children: [
|
|
3336
|
+
/* @__PURE__ */ jsx(MapPin, { className: "h-3.5 w-3.5 shrink-0", "aria-hidden": true }),
|
|
3337
|
+
selected.location
|
|
3338
|
+
] }) : null
|
|
3339
|
+
] }) })
|
|
3340
|
+
] });
|
|
3341
|
+
};
|
|
3342
|
+
var ReadOnlyCampTimeSlots = ({ fieldDef, value }) => {
|
|
3343
|
+
const slots = fieldDef.options?.length ? fieldDef.options : MOCK_CAMP_TIME_SLOTS;
|
|
3344
|
+
const selected = slots.find((slot) => String(slot.id) === String(value));
|
|
3345
|
+
const isEmpty = value == null || value === "";
|
|
3346
|
+
return /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
3347
|
+
/* @__PURE__ */ jsx(Label, { className: "text-sm font-medium text-gray-700", children: fieldDef.label }),
|
|
3348
|
+
/* @__PURE__ */ jsx("div", { className: "min-h-[2.5rem] rounded-md border border-gray-200 bg-gray-50 p-3", children: isEmpty || !selected ? /* @__PURE__ */ jsx("span", { className: "text-gray-400 italic", children: "No value" }) : /* @__PURE__ */ jsx("span", { className: "font-medium text-gray-900", children: selected.time }) })
|
|
3349
|
+
] });
|
|
3350
|
+
};
|
|
2883
3351
|
var ReadOnlyTable = React6__default.lazy(
|
|
2884
3352
|
() => import('./ReadOnlyTable-4Y2XW4MX.mjs').then((m) => ({ default: m.ReadOnlyTable }))
|
|
2885
3353
|
);
|
|
@@ -2925,6 +3393,10 @@ var ReadOnlyFieldRenderer = ({
|
|
|
2925
3393
|
return /* @__PURE__ */ jsx(ReadOnlyReferral, { fieldDef, value });
|
|
2926
3394
|
case "discharge_medication_orders":
|
|
2927
3395
|
return /* @__PURE__ */ jsx(ReadOnlyDischargeMedicationOrders, { fieldDef, value });
|
|
3396
|
+
case "camp_dates":
|
|
3397
|
+
return /* @__PURE__ */ jsx(ReadOnlyCampDates, { fieldDef, value });
|
|
3398
|
+
case "camp_time_slots":
|
|
3399
|
+
return /* @__PURE__ */ jsx(ReadOnlyCampTimeSlots, { fieldDef, value });
|
|
2928
3400
|
case "toggle": {
|
|
2929
3401
|
const isOn = value === true;
|
|
2930
3402
|
return /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
|
|
@@ -3422,6 +3894,6 @@ function createUploadHandler(options) {
|
|
|
3422
3894
|
);
|
|
3423
3895
|
}
|
|
3424
3896
|
|
|
3425
|
-
export { DynamicForm, DynamicFormV2, FieldRenderer, FormControls, FormFileUploadWidget, ImageUploadWidget, MAR_MEDICATION_ORDERS_META_KEY, MediaUploadWidget, MultiStepForm, ReadOnlyForm, ReadOnlyImageUpload, ReadOnlyMediaUpload, ReadOnlySignature, SignatureUploadWidget, SmartForm, Upload3 as Upload, createUploadHandler, fieldMetaRequestsMarMedicationOrdersButton };
|
|
3897
|
+
export { CampBookingPersistenceProvider, DynamicForm, DynamicFormV2, FieldRenderer, FormControls, FormFileUploadWidget, ImageUploadWidget, MAR_MEDICATION_ORDERS_META_KEY, MediaUploadWidget, MultiStepForm, ReadOnlyForm, ReadOnlyImageUpload, ReadOnlyMediaUpload, ReadOnlySignature, SignatureUploadWidget, SmartForm, Upload3 as Upload, createUploadHandler, fieldMetaRequestsMarMedicationOrdersButton };
|
|
3426
3898
|
//# sourceMappingURL=index.mjs.map
|
|
3427
3899
|
//# sourceMappingURL=index.mjs.map
|