formanitor 0.0.22 → 0.0.24
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/index.cjs +531 -250
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +46 -4
- package/dist/index.d.ts +46 -4
- package/dist/index.mjs +373 -97
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -1
package/dist/index.mjs
CHANGED
|
@@ -1,14 +1,19 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
import
|
|
1
|
+
import * as React13 from 'react';
|
|
2
|
+
import React13__default, { createContext, useContext, useRef, useEffect, useState, useMemo, useCallback, useReducer } from 'react';
|
|
3
3
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
4
4
|
import { clsx } from 'clsx';
|
|
5
5
|
import { twMerge } from 'tailwind-merge';
|
|
6
6
|
import * as LabelPrimitive from '@radix-ui/react-label';
|
|
7
7
|
import { cva } from 'class-variance-authority';
|
|
8
|
+
import { useEditor, EditorContent } from '@tiptap/react';
|
|
9
|
+
import StarterKit from '@tiptap/starter-kit';
|
|
10
|
+
import Placeholder from '@tiptap/extension-placeholder';
|
|
11
|
+
import Underline from '@tiptap/extension-underline';
|
|
12
|
+
import { ChevronDown, ChevronUp, Check, Circle, X, Image, Upload, Trash2, Plus, Loader2, PenTool, Undo, Redo, ChevronRight, Calendar as Calendar$1, ChevronLeft, RefreshCw, Clock, Bold, Italic, Underline as Underline$1, Strikethrough, List, ListOrdered } from 'lucide-react';
|
|
13
|
+
import { Slot } from '@radix-ui/react-slot';
|
|
14
|
+
import * as SeparatorPrimitive from '@radix-ui/react-separator';
|
|
8
15
|
import * as SelectPrimitive from '@radix-ui/react-select';
|
|
9
|
-
import { ChevronDown, ChevronUp, Check, Circle, X, Image, Upload, Trash2, Plus, Loader2, PenTool, ChevronRight, Calendar as Calendar$1, ChevronLeft, RefreshCw, Clock } from 'lucide-react';
|
|
10
16
|
import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
|
|
11
|
-
import { Slot } from '@radix-ui/react-slot';
|
|
12
17
|
import { format, addDays, addWeeks, addMonths, differenceInCalendarDays, parseISO } from 'date-fns';
|
|
13
18
|
import { DayPicker } from 'react-day-picker';
|
|
14
19
|
import * as PopoverPrimitive from '@radix-ui/react-popover';
|
|
@@ -749,7 +754,7 @@ function useField(fieldId) {
|
|
|
749
754
|
function cn(...inputs) {
|
|
750
755
|
return twMerge(clsx(inputs));
|
|
751
756
|
}
|
|
752
|
-
var Input =
|
|
757
|
+
var Input = React13.forwardRef(
|
|
753
758
|
({ className, type, ...props }, ref) => {
|
|
754
759
|
return /* @__PURE__ */ jsx(
|
|
755
760
|
"input",
|
|
@@ -769,7 +774,7 @@ Input.displayName = "Input";
|
|
|
769
774
|
var labelVariants = cva(
|
|
770
775
|
"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
|
|
771
776
|
);
|
|
772
|
-
var Label =
|
|
777
|
+
var Label = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
773
778
|
LabelPrimitive.Root,
|
|
774
779
|
{
|
|
775
780
|
ref,
|
|
@@ -778,7 +783,7 @@ var Label = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
|
778
783
|
}
|
|
779
784
|
));
|
|
780
785
|
Label.displayName = LabelPrimitive.Root.displayName;
|
|
781
|
-
var Textarea =
|
|
786
|
+
var Textarea = React13.forwardRef(
|
|
782
787
|
({ className, height, style, ...props }, ref) => {
|
|
783
788
|
return /* @__PURE__ */ jsx(
|
|
784
789
|
"textarea",
|
|
@@ -824,8 +829,8 @@ var TextWidget = ({ fieldId }) => {
|
|
|
824
829
|
const { state } = useForm();
|
|
825
830
|
const showError = !!error && (touched || state.submitAttempted);
|
|
826
831
|
if (!fieldDef) return null;
|
|
827
|
-
const Component = fieldDef.type === "textarea"
|
|
828
|
-
const isTextarea = fieldDef.type === "textarea"
|
|
832
|
+
const Component = fieldDef.type === "textarea" ? Textarea : Input;
|
|
833
|
+
const isTextarea = fieldDef.type === "textarea";
|
|
829
834
|
const height = isTextarea && "height" in fieldDef ? fieldDef.height : void 0;
|
|
830
835
|
const theme = getThemeConfig(
|
|
831
836
|
isTextarea ? "textarea" : "text",
|
|
@@ -857,9 +862,298 @@ var TextWidget = ({ fieldId }) => {
|
|
|
857
862
|
showError && /* @__PURE__ */ jsx("p", { className: "text-xs text-red-500", children: error })
|
|
858
863
|
] });
|
|
859
864
|
};
|
|
865
|
+
var buttonVariants = cva(
|
|
866
|
+
"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
|
|
867
|
+
{
|
|
868
|
+
variants: {
|
|
869
|
+
variant: {
|
|
870
|
+
default: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
871
|
+
destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
872
|
+
outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
|
|
873
|
+
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
874
|
+
ghost: "hover:bg-accent hover:text-accent-foreground",
|
|
875
|
+
link: "text-primary underline-offset-4 hover:underline"
|
|
876
|
+
},
|
|
877
|
+
size: {
|
|
878
|
+
default: "h-10 px-4 py-2",
|
|
879
|
+
sm: "h-9 rounded-md px-3",
|
|
880
|
+
lg: "h-11 rounded-md px-8",
|
|
881
|
+
icon: "h-10 w-10"
|
|
882
|
+
}
|
|
883
|
+
},
|
|
884
|
+
defaultVariants: {
|
|
885
|
+
variant: "default",
|
|
886
|
+
size: "default"
|
|
887
|
+
}
|
|
888
|
+
}
|
|
889
|
+
);
|
|
890
|
+
var Button = React13.forwardRef(
|
|
891
|
+
({ className, variant, size, asChild = false, ...props }, ref) => {
|
|
892
|
+
const Comp = asChild ? Slot : "button";
|
|
893
|
+
return /* @__PURE__ */ jsx(
|
|
894
|
+
Comp,
|
|
895
|
+
{
|
|
896
|
+
className: cn(buttonVariants({ variant, size, className })),
|
|
897
|
+
ref,
|
|
898
|
+
...props
|
|
899
|
+
}
|
|
900
|
+
);
|
|
901
|
+
}
|
|
902
|
+
);
|
|
903
|
+
Button.displayName = "Button";
|
|
904
|
+
var Separator = React13.forwardRef(
|
|
905
|
+
({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
906
|
+
SeparatorPrimitive.Root,
|
|
907
|
+
{
|
|
908
|
+
ref,
|
|
909
|
+
decorative,
|
|
910
|
+
orientation,
|
|
911
|
+
className: cn(
|
|
912
|
+
"shrink-0 bg-border",
|
|
913
|
+
orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
|
|
914
|
+
className
|
|
915
|
+
),
|
|
916
|
+
...props
|
|
917
|
+
}
|
|
918
|
+
)
|
|
919
|
+
);
|
|
920
|
+
Separator.displayName = SeparatorPrimitive.Root.displayName;
|
|
921
|
+
function isEmptyHtml(html) {
|
|
922
|
+
const t = html.trim();
|
|
923
|
+
return t === "" || t === "<p></p>" || t === "<p><br></p>" || t === '<p><br class="ProseMirror-trailingBreak"></p>';
|
|
924
|
+
}
|
|
925
|
+
function RichTextToolbar({
|
|
926
|
+
editor,
|
|
927
|
+
disabled
|
|
928
|
+
}) {
|
|
929
|
+
const [, rerender] = useReducer((n) => n + 1, 0);
|
|
930
|
+
useEffect(() => {
|
|
931
|
+
if (!editor) return;
|
|
932
|
+
const handler = () => rerender();
|
|
933
|
+
editor.on("selectionUpdate", handler);
|
|
934
|
+
editor.on("transaction", handler);
|
|
935
|
+
return () => {
|
|
936
|
+
editor.off("selectionUpdate", handler);
|
|
937
|
+
editor.off("transaction", handler);
|
|
938
|
+
};
|
|
939
|
+
}, [editor]);
|
|
940
|
+
if (!editor) {
|
|
941
|
+
return /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1 border-b border-input bg-muted/30 px-2 py-1.5 min-h-[42px]" });
|
|
942
|
+
}
|
|
943
|
+
const fmtBtn = (active, onClick, icon, title) => /* @__PURE__ */ jsx(
|
|
944
|
+
Button,
|
|
945
|
+
{
|
|
946
|
+
type: "button",
|
|
947
|
+
variant: active ? "secondary" : "outline",
|
|
948
|
+
size: "icon",
|
|
949
|
+
className: "h-8 w-8 shrink-0",
|
|
950
|
+
disabled,
|
|
951
|
+
title,
|
|
952
|
+
onClick: () => {
|
|
953
|
+
if (!disabled) onClick();
|
|
954
|
+
},
|
|
955
|
+
children: icon
|
|
956
|
+
}
|
|
957
|
+
);
|
|
958
|
+
return /* @__PURE__ */ jsxs(
|
|
959
|
+
"div",
|
|
960
|
+
{
|
|
961
|
+
className: "flex flex-wrap items-center gap-1 border-b border-input bg-muted/30 px-2 py-1.5",
|
|
962
|
+
role: "toolbar",
|
|
963
|
+
"aria-label": "Rich text formatting",
|
|
964
|
+
children: [
|
|
965
|
+
fmtBtn(
|
|
966
|
+
editor.isActive("bold"),
|
|
967
|
+
() => editor.chain().focus().toggleBold().run(),
|
|
968
|
+
/* @__PURE__ */ jsx(Bold, { className: "h-4 w-4" }),
|
|
969
|
+
"Bold"
|
|
970
|
+
),
|
|
971
|
+
fmtBtn(
|
|
972
|
+
editor.isActive("italic"),
|
|
973
|
+
() => editor.chain().focus().toggleItalic().run(),
|
|
974
|
+
/* @__PURE__ */ jsx(Italic, { className: "h-4 w-4" }),
|
|
975
|
+
"Italic"
|
|
976
|
+
),
|
|
977
|
+
fmtBtn(
|
|
978
|
+
editor.isActive("underline"),
|
|
979
|
+
() => editor.chain().focus().toggleUnderline().run(),
|
|
980
|
+
/* @__PURE__ */ jsx(Underline$1, { className: "h-4 w-4" }),
|
|
981
|
+
"Underline"
|
|
982
|
+
),
|
|
983
|
+
fmtBtn(
|
|
984
|
+
editor.isActive("strike"),
|
|
985
|
+
() => editor.chain().focus().toggleStrike().run(),
|
|
986
|
+
/* @__PURE__ */ jsx(Strikethrough, { className: "h-4 w-4" }),
|
|
987
|
+
"Strikethrough"
|
|
988
|
+
),
|
|
989
|
+
/* @__PURE__ */ jsx(Separator, { orientation: "vertical", className: "mx-0.5 h-6" }),
|
|
990
|
+
fmtBtn(
|
|
991
|
+
editor.isActive("bulletList"),
|
|
992
|
+
() => editor.chain().focus().toggleBulletList().run(),
|
|
993
|
+
/* @__PURE__ */ jsx(List, { className: "h-4 w-4" }),
|
|
994
|
+
"Bullet list"
|
|
995
|
+
),
|
|
996
|
+
fmtBtn(
|
|
997
|
+
editor.isActive("orderedList"),
|
|
998
|
+
() => editor.chain().focus().toggleOrderedList().run(),
|
|
999
|
+
/* @__PURE__ */ jsx(ListOrdered, { className: "h-4 w-4" }),
|
|
1000
|
+
"Numbered list"
|
|
1001
|
+
),
|
|
1002
|
+
/* @__PURE__ */ jsx(Separator, { orientation: "vertical", className: "mx-0.5 h-6" }),
|
|
1003
|
+
/* @__PURE__ */ jsx(
|
|
1004
|
+
Button,
|
|
1005
|
+
{
|
|
1006
|
+
type: "button",
|
|
1007
|
+
variant: "outline",
|
|
1008
|
+
size: "icon",
|
|
1009
|
+
className: "h-8 w-8 shrink-0",
|
|
1010
|
+
disabled: disabled || !editor.can().undo(),
|
|
1011
|
+
title: "Undo",
|
|
1012
|
+
onClick: () => editor.chain().focus().undo().run(),
|
|
1013
|
+
children: /* @__PURE__ */ jsx(Undo, { className: "h-4 w-4" })
|
|
1014
|
+
}
|
|
1015
|
+
),
|
|
1016
|
+
/* @__PURE__ */ jsx(
|
|
1017
|
+
Button,
|
|
1018
|
+
{
|
|
1019
|
+
type: "button",
|
|
1020
|
+
variant: "outline",
|
|
1021
|
+
size: "icon",
|
|
1022
|
+
className: "h-8 w-8 shrink-0",
|
|
1023
|
+
disabled: disabled || !editor.can().redo(),
|
|
1024
|
+
title: "Redo",
|
|
1025
|
+
onClick: () => editor.chain().focus().redo().run(),
|
|
1026
|
+
children: /* @__PURE__ */ jsx(Redo, { className: "h-4 w-4" })
|
|
1027
|
+
}
|
|
1028
|
+
)
|
|
1029
|
+
]
|
|
1030
|
+
}
|
|
1031
|
+
);
|
|
1032
|
+
}
|
|
1033
|
+
var RichTextWidget = ({ fieldId }) => {
|
|
1034
|
+
const { fieldDef, value, setValue, setTouched, error, disabled, touched } = useField(fieldId);
|
|
1035
|
+
const { state } = useForm();
|
|
1036
|
+
const showError = !!error && (touched || state.submitAttempted);
|
|
1037
|
+
const def = fieldDef;
|
|
1038
|
+
const placeholder = def?.placeholder ?? "Start typing\u2026";
|
|
1039
|
+
const minHeight = def?.minHeight ?? 160;
|
|
1040
|
+
const extensions = useMemo(
|
|
1041
|
+
() => [
|
|
1042
|
+
StarterKit.configure({
|
|
1043
|
+
// Disable headings entirely so the UI/content can't introduce H2/H3.
|
|
1044
|
+
heading: false,
|
|
1045
|
+
bulletList: {
|
|
1046
|
+
HTMLAttributes: {
|
|
1047
|
+
class: "list-disc pl-6 my-2"
|
|
1048
|
+
}
|
|
1049
|
+
},
|
|
1050
|
+
orderedList: {
|
|
1051
|
+
HTMLAttributes: {
|
|
1052
|
+
class: "list-decimal pl-6 my-2"
|
|
1053
|
+
}
|
|
1054
|
+
},
|
|
1055
|
+
listItem: {
|
|
1056
|
+
HTMLAttributes: {
|
|
1057
|
+
class: "my-1"
|
|
1058
|
+
}
|
|
1059
|
+
}
|
|
1060
|
+
}),
|
|
1061
|
+
Underline,
|
|
1062
|
+
Placeholder.configure({
|
|
1063
|
+
placeholder
|
|
1064
|
+
})
|
|
1065
|
+
],
|
|
1066
|
+
[placeholder]
|
|
1067
|
+
);
|
|
1068
|
+
const stringValue = typeof value === "string" ? value : "";
|
|
1069
|
+
const editor = useEditor(
|
|
1070
|
+
{
|
|
1071
|
+
extensions,
|
|
1072
|
+
content: stringValue || "",
|
|
1073
|
+
editable: !disabled,
|
|
1074
|
+
immediatelyRender: false,
|
|
1075
|
+
onUpdate: ({ editor: ed }) => {
|
|
1076
|
+
const html = ed.getHTML();
|
|
1077
|
+
setValue(isEmptyHtml(html) ? "" : html);
|
|
1078
|
+
},
|
|
1079
|
+
onBlur: () => setTouched(),
|
|
1080
|
+
editorProps: {
|
|
1081
|
+
attributes: {
|
|
1082
|
+
id: fieldId,
|
|
1083
|
+
class: "focus:outline-none",
|
|
1084
|
+
style: `min-height: ${minHeight}px`
|
|
1085
|
+
}
|
|
1086
|
+
}
|
|
1087
|
+
},
|
|
1088
|
+
[extensions, fieldId]
|
|
1089
|
+
);
|
|
1090
|
+
useEffect(() => {
|
|
1091
|
+
if (!editor || editor.isDestroyed) return;
|
|
1092
|
+
editor.setEditable(!disabled);
|
|
1093
|
+
}, [editor, disabled]);
|
|
1094
|
+
useEffect(() => {
|
|
1095
|
+
if (!editor || editor.isDestroyed) return;
|
|
1096
|
+
const el = editor.view.dom;
|
|
1097
|
+
el.style.minHeight = `${minHeight}px`;
|
|
1098
|
+
}, [editor, minHeight]);
|
|
1099
|
+
useEffect(() => {
|
|
1100
|
+
if (!editor || editor.isDestroyed) return;
|
|
1101
|
+
const fromForm = stringValue;
|
|
1102
|
+
const fromEditor = editor.getHTML();
|
|
1103
|
+
if (isEmptyHtml(fromForm) && isEmptyHtml(fromEditor)) return;
|
|
1104
|
+
if (fromForm && fromForm !== fromEditor) {
|
|
1105
|
+
editor.commands.setContent(fromForm, { emitUpdate: false });
|
|
1106
|
+
}
|
|
1107
|
+
if (!fromForm && !isEmptyHtml(fromEditor)) {
|
|
1108
|
+
editor.commands.setContent("", { emitUpdate: false });
|
|
1109
|
+
}
|
|
1110
|
+
}, [stringValue, editor]);
|
|
1111
|
+
if (!fieldDef) return null;
|
|
1112
|
+
const labelContent = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1113
|
+
fieldDef.label,
|
|
1114
|
+
" ",
|
|
1115
|
+
fieldDef.required && /* @__PURE__ */ jsx("span", { className: "text-red-500", children: "*" })
|
|
1116
|
+
] });
|
|
1117
|
+
return /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
1118
|
+
/* @__PURE__ */ jsx(Label, { htmlFor: fieldId, children: labelContent }),
|
|
1119
|
+
/* @__PURE__ */ jsxs(
|
|
1120
|
+
"div",
|
|
1121
|
+
{
|
|
1122
|
+
className: cn(
|
|
1123
|
+
"rounded-md border border-input bg-background text-sm ring-offset-background overflow-hidden",
|
|
1124
|
+
showError && "border-red-500",
|
|
1125
|
+
disabled && "opacity-60"
|
|
1126
|
+
),
|
|
1127
|
+
children: [
|
|
1128
|
+
/* @__PURE__ */ jsx(RichTextToolbar, { editor, disabled }),
|
|
1129
|
+
/* @__PURE__ */ jsx(
|
|
1130
|
+
"div",
|
|
1131
|
+
{
|
|
1132
|
+
className: cn(
|
|
1133
|
+
"px-3 py-2",
|
|
1134
|
+
"[&_.ProseMirror]:outline-none",
|
|
1135
|
+
"[&_.ProseMirror_ul]:list-disc [&_.ProseMirror_ul]:pl-6 [&_.ProseMirror_ul]:my-2",
|
|
1136
|
+
"[&_.ProseMirror_ol]:list-decimal [&_.ProseMirror_ol]:pl-6 [&_.ProseMirror_ol]:my-2",
|
|
1137
|
+
"[&_.ProseMirror_li]:list-item",
|
|
1138
|
+
"[&_.ProseMirror_blockquote]:border-l-4 [&_.ProseMirror_blockquote]:border-muted-foreground/40 [&_.ProseMirror_blockquote]:pl-3 [&_.ProseMirror_blockquote]:italic [&_.ProseMirror_blockquote]:my-2",
|
|
1139
|
+
"[&_.ProseMirror_p.is-editor-empty:first-child::before]:text-muted-foreground",
|
|
1140
|
+
"[&_.ProseMirror_p.is-editor-empty:first-child::before]:content-[attr(data-placeholder)]",
|
|
1141
|
+
"[&_.ProseMirror_p.is-editor-empty:first-child::before]:float-left",
|
|
1142
|
+
"[&_.ProseMirror_p.is-editor-empty:first-child::before]:pointer-events-none",
|
|
1143
|
+
"[&_.ProseMirror_p.is-editor-empty:first-child::before]:h-0"
|
|
1144
|
+
),
|
|
1145
|
+
children: /* @__PURE__ */ jsx(EditorContent, { editor })
|
|
1146
|
+
}
|
|
1147
|
+
)
|
|
1148
|
+
]
|
|
1149
|
+
}
|
|
1150
|
+
),
|
|
1151
|
+
showError && /* @__PURE__ */ jsx("p", { className: "text-xs text-red-500", children: error })
|
|
1152
|
+
] });
|
|
1153
|
+
};
|
|
860
1154
|
var Select = SelectPrimitive.Root;
|
|
861
1155
|
var SelectValue = SelectPrimitive.Value;
|
|
862
|
-
var SelectTrigger =
|
|
1156
|
+
var SelectTrigger = React13.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
863
1157
|
SelectPrimitive.Trigger,
|
|
864
1158
|
{
|
|
865
1159
|
ref,
|
|
@@ -875,7 +1169,7 @@ var SelectTrigger = React11.forwardRef(({ className, children, ...props }, ref)
|
|
|
875
1169
|
}
|
|
876
1170
|
));
|
|
877
1171
|
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
|
|
878
|
-
var SelectScrollUpButton =
|
|
1172
|
+
var SelectScrollUpButton = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
879
1173
|
SelectPrimitive.ScrollUpButton,
|
|
880
1174
|
{
|
|
881
1175
|
ref,
|
|
@@ -888,7 +1182,7 @@ var SelectScrollUpButton = React11.forwardRef(({ className, ...props }, ref) =>
|
|
|
888
1182
|
}
|
|
889
1183
|
));
|
|
890
1184
|
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
|
|
891
|
-
var SelectScrollDownButton =
|
|
1185
|
+
var SelectScrollDownButton = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
892
1186
|
SelectPrimitive.ScrollDownButton,
|
|
893
1187
|
{
|
|
894
1188
|
ref,
|
|
@@ -901,7 +1195,7 @@ var SelectScrollDownButton = React11.forwardRef(({ className, ...props }, ref) =
|
|
|
901
1195
|
}
|
|
902
1196
|
));
|
|
903
1197
|
SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
|
|
904
|
-
var SelectContent =
|
|
1198
|
+
var SelectContent = React13.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs(
|
|
905
1199
|
SelectPrimitive.Content,
|
|
906
1200
|
{
|
|
907
1201
|
ref,
|
|
@@ -929,7 +1223,7 @@ var SelectContent = React11.forwardRef(({ className, children, position = "poppe
|
|
|
929
1223
|
}
|
|
930
1224
|
) }));
|
|
931
1225
|
SelectContent.displayName = SelectPrimitive.Content.displayName;
|
|
932
|
-
var SelectLabel =
|
|
1226
|
+
var SelectLabel = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
933
1227
|
SelectPrimitive.Label,
|
|
934
1228
|
{
|
|
935
1229
|
ref,
|
|
@@ -938,7 +1232,7 @@ var SelectLabel = React11.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
938
1232
|
}
|
|
939
1233
|
));
|
|
940
1234
|
SelectLabel.displayName = SelectPrimitive.Label.displayName;
|
|
941
|
-
var SelectItem =
|
|
1235
|
+
var SelectItem = React13.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
942
1236
|
SelectPrimitive.Item,
|
|
943
1237
|
{
|
|
944
1238
|
ref,
|
|
@@ -954,7 +1248,7 @@ var SelectItem = React11.forwardRef(({ className, children, ...props }, ref) =>
|
|
|
954
1248
|
}
|
|
955
1249
|
));
|
|
956
1250
|
SelectItem.displayName = SelectPrimitive.Item.displayName;
|
|
957
|
-
var SelectSeparator =
|
|
1251
|
+
var SelectSeparator = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
958
1252
|
SelectPrimitive.Separator,
|
|
959
1253
|
{
|
|
960
1254
|
ref,
|
|
@@ -1043,7 +1337,7 @@ var SelectWidget = ({ fieldId }) => {
|
|
|
1043
1337
|
showError && /* @__PURE__ */ jsx("p", { className: "text-xs text-red-500", children: error })
|
|
1044
1338
|
] });
|
|
1045
1339
|
};
|
|
1046
|
-
var Checkbox =
|
|
1340
|
+
var Checkbox = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1047
1341
|
CheckboxPrimitive.Root,
|
|
1048
1342
|
{
|
|
1049
1343
|
ref,
|
|
@@ -1117,46 +1411,7 @@ var MultiSelectWidget = ({ fieldId }) => {
|
|
|
1117
1411
|
showError && /* @__PURE__ */ jsx("p", { className: "text-xs text-red-500", children: error })
|
|
1118
1412
|
] });
|
|
1119
1413
|
};
|
|
1120
|
-
var
|
|
1121
|
-
"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
|
|
1122
|
-
{
|
|
1123
|
-
variants: {
|
|
1124
|
-
variant: {
|
|
1125
|
-
default: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
1126
|
-
destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
1127
|
-
outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
|
|
1128
|
-
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
1129
|
-
ghost: "hover:bg-accent hover:text-accent-foreground",
|
|
1130
|
-
link: "text-primary underline-offset-4 hover:underline"
|
|
1131
|
-
},
|
|
1132
|
-
size: {
|
|
1133
|
-
default: "h-10 px-4 py-2",
|
|
1134
|
-
sm: "h-9 rounded-md px-3",
|
|
1135
|
-
lg: "h-11 rounded-md px-8",
|
|
1136
|
-
icon: "h-10 w-10"
|
|
1137
|
-
}
|
|
1138
|
-
},
|
|
1139
|
-
defaultVariants: {
|
|
1140
|
-
variant: "default",
|
|
1141
|
-
size: "default"
|
|
1142
|
-
}
|
|
1143
|
-
}
|
|
1144
|
-
);
|
|
1145
|
-
var Button = React11.forwardRef(
|
|
1146
|
-
({ className, variant, size, asChild = false, ...props }, ref) => {
|
|
1147
|
-
const Comp = asChild ? Slot : "button";
|
|
1148
|
-
return /* @__PURE__ */ jsx(
|
|
1149
|
-
Comp,
|
|
1150
|
-
{
|
|
1151
|
-
className: cn(buttonVariants({ variant, size, className })),
|
|
1152
|
-
ref,
|
|
1153
|
-
...props
|
|
1154
|
-
}
|
|
1155
|
-
);
|
|
1156
|
-
}
|
|
1157
|
-
);
|
|
1158
|
-
Button.displayName = "Button";
|
|
1159
|
-
var Table = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ jsx(
|
|
1414
|
+
var Table = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ jsx(
|
|
1160
1415
|
"table",
|
|
1161
1416
|
{
|
|
1162
1417
|
ref,
|
|
@@ -1165,9 +1420,9 @@ var Table = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
|
1165
1420
|
}
|
|
1166
1421
|
) }));
|
|
1167
1422
|
Table.displayName = "Table";
|
|
1168
|
-
var TableHeader =
|
|
1423
|
+
var TableHeader = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("thead", { ref, className: cn("[&_tr]:border-b", className), ...props }));
|
|
1169
1424
|
TableHeader.displayName = "TableHeader";
|
|
1170
|
-
var TableBody =
|
|
1425
|
+
var TableBody = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1171
1426
|
"tbody",
|
|
1172
1427
|
{
|
|
1173
1428
|
ref,
|
|
@@ -1176,7 +1431,7 @@ var TableBody = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
|
1176
1431
|
}
|
|
1177
1432
|
));
|
|
1178
1433
|
TableBody.displayName = "TableBody";
|
|
1179
|
-
var TableFooter =
|
|
1434
|
+
var TableFooter = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1180
1435
|
"tfoot",
|
|
1181
1436
|
{
|
|
1182
1437
|
ref,
|
|
@@ -1188,7 +1443,7 @@ var TableFooter = React11.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
1188
1443
|
}
|
|
1189
1444
|
));
|
|
1190
1445
|
TableFooter.displayName = "TableFooter";
|
|
1191
|
-
var TableRow =
|
|
1446
|
+
var TableRow = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1192
1447
|
"tr",
|
|
1193
1448
|
{
|
|
1194
1449
|
ref,
|
|
@@ -1200,7 +1455,7 @@ var TableRow = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
1200
1455
|
}
|
|
1201
1456
|
));
|
|
1202
1457
|
TableRow.displayName = "TableRow";
|
|
1203
|
-
var TableHead =
|
|
1458
|
+
var TableHead = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1204
1459
|
"th",
|
|
1205
1460
|
{
|
|
1206
1461
|
ref,
|
|
@@ -1212,7 +1467,7 @@ var TableHead = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
|
1212
1467
|
}
|
|
1213
1468
|
));
|
|
1214
1469
|
TableHead.displayName = "TableHead";
|
|
1215
|
-
var TableCell =
|
|
1470
|
+
var TableCell = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1216
1471
|
"td",
|
|
1217
1472
|
{
|
|
1218
1473
|
ref,
|
|
@@ -1221,7 +1476,7 @@ var TableCell = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
|
1221
1476
|
}
|
|
1222
1477
|
));
|
|
1223
1478
|
TableCell.displayName = "TableCell";
|
|
1224
|
-
var TableCaption =
|
|
1479
|
+
var TableCaption = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
1225
1480
|
"caption",
|
|
1226
1481
|
{
|
|
1227
1482
|
ref,
|
|
@@ -1237,7 +1492,7 @@ var RepeatableWidget = ({
|
|
|
1237
1492
|
if (!fieldDef || fieldDef.type !== "repeatable") return null;
|
|
1238
1493
|
const def = fieldDef;
|
|
1239
1494
|
const rows = Array.isArray(value) ? value : [];
|
|
1240
|
-
const [hasInteracted, setHasInteracted] =
|
|
1495
|
+
const [hasInteracted, setHasInteracted] = React13__default.useState(false);
|
|
1241
1496
|
const showError = !!error && (touched || hasInteracted);
|
|
1242
1497
|
const addRow = () => {
|
|
1243
1498
|
setValue([...rows, {}]);
|
|
@@ -1406,7 +1661,7 @@ function Calendar({
|
|
|
1406
1661
|
Calendar.displayName = "Calendar";
|
|
1407
1662
|
var Popover = PopoverPrimitive.Root;
|
|
1408
1663
|
var PopoverTrigger = PopoverPrimitive.Trigger;
|
|
1409
|
-
var PopoverContent =
|
|
1664
|
+
var PopoverContent = React13.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
|
|
1410
1665
|
PopoverPrimitive.Content,
|
|
1411
1666
|
{
|
|
1412
1667
|
ref,
|
|
@@ -1485,14 +1740,14 @@ function DateTimePicker({
|
|
|
1485
1740
|
className,
|
|
1486
1741
|
placeholder = "Pick date & time"
|
|
1487
1742
|
}) {
|
|
1488
|
-
const [internalDate, setInternalDate] =
|
|
1489
|
-
const [timeString, setTimeString] =
|
|
1743
|
+
const [internalDate, setInternalDate] = React13.useState(dateTime);
|
|
1744
|
+
const [timeString, setTimeString] = React13.useState(() => {
|
|
1490
1745
|
if (!dateTime) return "";
|
|
1491
1746
|
const hours = dateTime.getHours().toString().padStart(2, "0");
|
|
1492
1747
|
const minutes = dateTime.getMinutes().toString().padStart(2, "0");
|
|
1493
1748
|
return `${hours}:${minutes}`;
|
|
1494
1749
|
});
|
|
1495
|
-
|
|
1750
|
+
React13.useEffect(() => {
|
|
1496
1751
|
setInternalDate(dateTime);
|
|
1497
1752
|
if (!dateTime) {
|
|
1498
1753
|
setTimeString("");
|
|
@@ -1636,7 +1891,7 @@ var ImageUploadWidget = ({ fieldId }) => {
|
|
|
1636
1891
|
/* @__PURE__ */ jsx("div", { className: "border-2 border-red-300 rounded-lg p-4 bg-red-50", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-red-600", children: "Upload handler not configured. Please provide an onUpload function in FormProvider config." }) })
|
|
1637
1892
|
] });
|
|
1638
1893
|
}
|
|
1639
|
-
|
|
1894
|
+
React13__default.useEffect(() => {
|
|
1640
1895
|
if (value && typeof value === "string") {
|
|
1641
1896
|
setPreview(value);
|
|
1642
1897
|
} else {
|
|
@@ -2275,7 +2530,7 @@ var EditableTableWidget = ({
|
|
|
2275
2530
|
] })
|
|
2276
2531
|
] });
|
|
2277
2532
|
};
|
|
2278
|
-
var RadioGroup =
|
|
2533
|
+
var RadioGroup = React13.forwardRef(({ className, ...props }, ref) => {
|
|
2279
2534
|
return /* @__PURE__ */ jsx(
|
|
2280
2535
|
RadioGroupPrimitive.Root,
|
|
2281
2536
|
{
|
|
@@ -2286,7 +2541,7 @@ var RadioGroup = React11.forwardRef(({ className, ...props }, ref) => {
|
|
|
2286
2541
|
);
|
|
2287
2542
|
});
|
|
2288
2543
|
RadioGroup.displayName = RadioGroupPrimitive.Root.displayName;
|
|
2289
|
-
var RadioGroupItem =
|
|
2544
|
+
var RadioGroupItem = React13.forwardRef(({ className, ...props }, ref) => {
|
|
2290
2545
|
return /* @__PURE__ */ jsx(
|
|
2291
2546
|
RadioGroupPrimitive.Item,
|
|
2292
2547
|
{
|
|
@@ -2433,7 +2688,7 @@ function useAISuggestions() {
|
|
|
2433
2688
|
var AISuggestionsProvider = AISuggestionsContext.Provider;
|
|
2434
2689
|
var Dialog = DialogPrimitive.Root;
|
|
2435
2690
|
var DialogPortal = DialogPrimitive.Portal;
|
|
2436
|
-
var DialogOverlay =
|
|
2691
|
+
var DialogOverlay = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2437
2692
|
DialogPrimitive.Overlay,
|
|
2438
2693
|
{
|
|
2439
2694
|
ref,
|
|
@@ -2445,7 +2700,7 @@ var DialogOverlay = React11.forwardRef(({ className, ...props }, ref) => /* @__P
|
|
|
2445
2700
|
}
|
|
2446
2701
|
));
|
|
2447
2702
|
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
2448
|
-
var DialogContent =
|
|
2703
|
+
var DialogContent = React13.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(DialogPortal, { children: [
|
|
2449
2704
|
/* @__PURE__ */ jsx(DialogOverlay, {}),
|
|
2450
2705
|
/* @__PURE__ */ jsxs(
|
|
2451
2706
|
DialogPrimitive.Content,
|
|
@@ -2481,7 +2736,7 @@ var DialogHeader = ({
|
|
|
2481
2736
|
}
|
|
2482
2737
|
);
|
|
2483
2738
|
DialogHeader.displayName = "DialogHeader";
|
|
2484
|
-
var DialogTitle =
|
|
2739
|
+
var DialogTitle = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2485
2740
|
DialogPrimitive.Title,
|
|
2486
2741
|
{
|
|
2487
2742
|
ref,
|
|
@@ -2493,7 +2748,7 @@ var DialogTitle = React11.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
2493
2748
|
}
|
|
2494
2749
|
));
|
|
2495
2750
|
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
2496
|
-
var DialogDescription =
|
|
2751
|
+
var DialogDescription = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
2497
2752
|
DialogPrimitive.Description,
|
|
2498
2753
|
{
|
|
2499
2754
|
ref,
|
|
@@ -2523,6 +2778,22 @@ var AddEntityDialog = ({
|
|
|
2523
2778
|
actionSlot != null && /* @__PURE__ */ jsx("div", { className: "px-6 py-4 flex justify-end shrink-0 border-t border-border bg-background", children: actionSlot })
|
|
2524
2779
|
] }) });
|
|
2525
2780
|
};
|
|
2781
|
+
var BEFORE_AFTER_OPTIONS = [
|
|
2782
|
+
{ label: "Blank", value: "" },
|
|
2783
|
+
{ label: "AFTER FOOD", value: "AFTER FOOD" },
|
|
2784
|
+
{ label: "BEFORE FOOD", value: "BEFORE FOOD" },
|
|
2785
|
+
{ label: "WITH FOOD", value: "WITH FOOD" },
|
|
2786
|
+
{ label: "SINGLE DOSE", value: "SINGLE DOSE" },
|
|
2787
|
+
{ label: "BED TIME", value: "BED TIME" },
|
|
2788
|
+
{ label: "EMPTY STOMACH", value: "EMPTY STOMACH" },
|
|
2789
|
+
{ label: "LOCAL APPLICATION", value: "LOCAL APPLICATION" },
|
|
2790
|
+
{ label: "STAT", value: "STAT" },
|
|
2791
|
+
{ label: "INHALATION", value: "INHALATION" }
|
|
2792
|
+
];
|
|
2793
|
+
var BEFORE_AFTER_NORMALIZATION_MAP = {
|
|
2794
|
+
AF: "AFTER FOOD",
|
|
2795
|
+
BF: "BEFORE FOOD"
|
|
2796
|
+
};
|
|
2526
2797
|
function mapToMedication(result) {
|
|
2527
2798
|
return {
|
|
2528
2799
|
id: result.id,
|
|
@@ -2586,7 +2857,7 @@ function mapFrequentItemToMedication(item) {
|
|
|
2586
2857
|
const parsed = parseDuration(item.duration);
|
|
2587
2858
|
const duration_value = item.duration_value ?? parsed.value;
|
|
2588
2859
|
const duration_unit = item.duration_unit ?? parsed.unit;
|
|
2589
|
-
const before_after = item.before_after
|
|
2860
|
+
const before_after = normalizeBeforeAfter(item.before_after);
|
|
2590
2861
|
const routeNote = item.route ? `Route: ${item.route}` : "";
|
|
2591
2862
|
const baseNotes = item.notes?.trim() || "";
|
|
2592
2863
|
const combinedNotes = [baseNotes, routeNote.trim()].filter((part) => part.length > 0).join(" \u2014 ");
|
|
@@ -2605,6 +2876,13 @@ function mapFrequentItemToMedication(item) {
|
|
|
2605
2876
|
notes: combinedNotes
|
|
2606
2877
|
};
|
|
2607
2878
|
}
|
|
2879
|
+
function normalizeBeforeAfter(value) {
|
|
2880
|
+
if (value == null) return "AFTER FOOD";
|
|
2881
|
+
const mapped = BEFORE_AFTER_NORMALIZATION_MAP[value];
|
|
2882
|
+
if (mapped) return mapped;
|
|
2883
|
+
const validValues = BEFORE_AFTER_OPTIONS.map((option) => option.value);
|
|
2884
|
+
return validValues.includes(value) ? value : "AFTER FOOD";
|
|
2885
|
+
}
|
|
2608
2886
|
function Spinner({
|
|
2609
2887
|
value,
|
|
2610
2888
|
onChange
|
|
@@ -2712,16 +2990,13 @@ function MedicationCard({
|
|
|
2712
2990
|
)
|
|
2713
2991
|
] }),
|
|
2714
2992
|
/* @__PURE__ */ jsx("div", { className: "flex gap-2 items-center flex-1 min-w-0 justify-end", children: ["morning", "afternoon", "night"].map((slot) => /* @__PURE__ */ jsx("div", { className: "flex flex-col items-center gap-0.5", children: /* @__PURE__ */ jsx(Spinner, { value: med[slot], onChange: (v) => set(slot, v) }) }, slot)) }),
|
|
2715
|
-
/* @__PURE__ */
|
|
2993
|
+
/* @__PURE__ */ jsx(
|
|
2716
2994
|
"select",
|
|
2717
2995
|
{
|
|
2718
2996
|
className: "text-xs border border-border rounded px-2 py-1 bg-white shrink-0",
|
|
2719
|
-
value: med.before_after
|
|
2720
|
-
onChange: (e) => set("before_after", e.target.value
|
|
2721
|
-
children:
|
|
2722
|
-
/* @__PURE__ */ jsx("option", { value: "AF", children: "AF" }),
|
|
2723
|
-
/* @__PURE__ */ jsx("option", { value: "BF", children: "BF" })
|
|
2724
|
-
]
|
|
2997
|
+
value: normalizeBeforeAfter(med.before_after),
|
|
2998
|
+
onChange: (e) => set("before_after", e.target.value),
|
|
2999
|
+
children: BEFORE_AFTER_OPTIONS.map((option) => /* @__PURE__ */ jsx("option", { value: option.value, children: option.label }, option.label))
|
|
2725
3000
|
}
|
|
2726
3001
|
)
|
|
2727
3002
|
] }),
|
|
@@ -3588,7 +3863,7 @@ var DifferentialDiagnosisWidget = ({ fieldId }) => {
|
|
|
3588
3863
|
const items = Array.isArray(value) ? value : [];
|
|
3589
3864
|
return /* @__PURE__ */ jsx(DifferentialDiagnosis, { differentialDiagnosis: items });
|
|
3590
3865
|
};
|
|
3591
|
-
var Spinner2 =
|
|
3866
|
+
var Spinner2 = React13.forwardRef(
|
|
3592
3867
|
({ className, size = "md", ...props }, ref) => {
|
|
3593
3868
|
const sizeClasses = {
|
|
3594
3869
|
sm: "h-4 w-4 border-2",
|
|
@@ -3944,7 +4219,7 @@ var ReferralWidget = ({ fieldId }) => {
|
|
|
3944
4219
|
showError && /* @__PURE__ */ jsx("p", { className: "text-xs text-red-500", children: error })
|
|
3945
4220
|
] });
|
|
3946
4221
|
};
|
|
3947
|
-
var Card =
|
|
4222
|
+
var Card = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3948
4223
|
"div",
|
|
3949
4224
|
{
|
|
3950
4225
|
ref,
|
|
@@ -3956,7 +4231,7 @@ var Card = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
|
3956
4231
|
}
|
|
3957
4232
|
));
|
|
3958
4233
|
Card.displayName = "Card";
|
|
3959
|
-
var CardHeader =
|
|
4234
|
+
var CardHeader = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3960
4235
|
"div",
|
|
3961
4236
|
{
|
|
3962
4237
|
ref,
|
|
@@ -3965,7 +4240,7 @@ var CardHeader = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
3965
4240
|
}
|
|
3966
4241
|
));
|
|
3967
4242
|
CardHeader.displayName = "CardHeader";
|
|
3968
|
-
var CardTitle =
|
|
4243
|
+
var CardTitle = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3969
4244
|
"h3",
|
|
3970
4245
|
{
|
|
3971
4246
|
ref,
|
|
@@ -3977,7 +4252,7 @@ var CardTitle = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE_
|
|
|
3977
4252
|
}
|
|
3978
4253
|
));
|
|
3979
4254
|
CardTitle.displayName = "CardTitle";
|
|
3980
|
-
var CardDescription =
|
|
4255
|
+
var CardDescription = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3981
4256
|
"p",
|
|
3982
4257
|
{
|
|
3983
4258
|
ref,
|
|
@@ -3986,9 +4261,9 @@ var CardDescription = React11.forwardRef(({ className, ...props }, ref) => /* @_
|
|
|
3986
4261
|
}
|
|
3987
4262
|
));
|
|
3988
4263
|
CardDescription.displayName = "CardDescription";
|
|
3989
|
-
var CardContent =
|
|
4264
|
+
var CardContent = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("p-6 pt-0", className), ...props }));
|
|
3990
4265
|
CardContent.displayName = "CardContent";
|
|
3991
|
-
var CardFooter =
|
|
4266
|
+
var CardFooter = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
3992
4267
|
"div",
|
|
3993
4268
|
{
|
|
3994
4269
|
ref,
|
|
@@ -4410,7 +4685,7 @@ var SmartTextareaWidget = ({ fieldId }) => {
|
|
|
4410
4685
|
},
|
|
4411
4686
|
[setValue]
|
|
4412
4687
|
);
|
|
4413
|
-
|
|
4688
|
+
React13__default.useEffect(() => {
|
|
4414
4689
|
if (nextKeywords !== currentKeywords) {
|
|
4415
4690
|
writeValue(textValue, nextKeywords);
|
|
4416
4691
|
}
|
|
@@ -6370,7 +6645,7 @@ var OphthalDiagnosisWidget = ({ fieldId }) => {
|
|
|
6370
6645
|
] })
|
|
6371
6646
|
] });
|
|
6372
6647
|
};
|
|
6373
|
-
var Slider =
|
|
6648
|
+
var Slider = React13.forwardRef(({ className, trackClassName, thumbClassName, ...props }, ref) => /* @__PURE__ */ jsxs(
|
|
6374
6649
|
SliderPrimitive.Root,
|
|
6375
6650
|
{
|
|
6376
6651
|
ref,
|
|
@@ -6763,8 +7038,9 @@ var FieldRenderer = ({ fieldId }) => {
|
|
|
6763
7038
|
case "number":
|
|
6764
7039
|
return /* @__PURE__ */ jsx(TextWidget, { fieldId });
|
|
6765
7040
|
case "textarea":
|
|
6766
|
-
case "richtext":
|
|
6767
7041
|
return /* @__PURE__ */ jsx(TextWidget, { fieldId });
|
|
7042
|
+
case "richtext":
|
|
7043
|
+
return /* @__PURE__ */ jsx(RichTextWidget, { fieldId });
|
|
6768
7044
|
case "date":
|
|
6769
7045
|
return /* @__PURE__ */ jsx(DateWidget, { fieldId });
|
|
6770
7046
|
case "datetime":
|
|
@@ -6882,7 +7158,7 @@ var DynamicForm = () => {
|
|
|
6882
7158
|
children: child.children.map((fieldId) => /* @__PURE__ */ jsx(FieldRenderer, { fieldId }, fieldId))
|
|
6883
7159
|
},
|
|
6884
7160
|
child.id
|
|
6885
|
-
) : /* @__PURE__ */ jsx(
|
|
7161
|
+
) : /* @__PURE__ */ jsx(React13__default.Fragment, {}, child.id ?? index)
|
|
6886
7162
|
) }, node.id);
|
|
6887
7163
|
}
|
|
6888
7164
|
if (node.type === "column_layout") {
|
|
@@ -7466,7 +7742,7 @@ var ReadOnlyForm = ({ schema, submission }) => {
|
|
|
7466
7742
|
child.id
|
|
7467
7743
|
);
|
|
7468
7744
|
}
|
|
7469
|
-
return /* @__PURE__ */ jsx(
|
|
7745
|
+
return /* @__PURE__ */ jsx(React13__default.Fragment, {}, child.id ?? index);
|
|
7470
7746
|
};
|
|
7471
7747
|
const hasContent = node.children.some(
|
|
7472
7748
|
(child) => typeof child === "string" ? fieldMap.has(child) : child.type === "column_layout" && child.children?.some((id) => fieldMap.has(id))
|
|
@@ -7594,6 +7870,6 @@ function createUploadHandler(options) {
|
|
|
7594
7870
|
};
|
|
7595
7871
|
}
|
|
7596
7872
|
|
|
7597
|
-
export { AddInvestigationField, AddMedicationField, DifferentialDiagnosis, DynamicForm, EMAIL_REGEX, FieldRenderer, FormControls, FormProvider, FormStore, ImageUploadWidget, ReadOnlyForm, ReadOnlyImageUpload, ReadOnlySignature, ReadOnlyTable, SignatureUploadWidget, SmartForm, SmartTextareaWidget, createUploadHandler, evaluateRules, useField, useFieldHandlers, useForm, useFormStore, useFrequentItems, useSmartKeywords, validateField, validateForm };
|
|
7873
|
+
export { AddInvestigationField, AddMedicationField, DifferentialDiagnosis, DynamicForm, EMAIL_REGEX, FieldRenderer, FormControls, FormProvider, FormStore, ImageUploadWidget, ReadOnlyForm, ReadOnlyImageUpload, ReadOnlySignature, ReadOnlyTable, RichTextWidget, SignatureUploadWidget, SmartForm, SmartTextareaWidget, createUploadHandler, evaluateRules, useField, useFieldHandlers, useForm, useFormStore, useFrequentItems, useSmartKeywords, validateField, validateForm };
|
|
7598
7874
|
//# sourceMappingURL=index.mjs.map
|
|
7599
7875
|
//# sourceMappingURL=index.mjs.map
|