treege 3.0.0-beta.7 → 3.0.0-beta.70
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/LICENSE +18 -12
- package/README.md +476 -81
- package/dist/DefaultSubmitButton-PXs4TMgX.js +1766 -0
- package/dist/ThemeContext-CdHMLHiw.js +942 -0
- package/dist/editor/components/input/ComboboxWithCreate.d.ts +2 -1
- package/dist/editor/components/styles/EditorStyles.d.ts +2 -0
- package/dist/editor/constants/defaultNode.d.ts +1 -1
- package/dist/editor/constants/edgeTypes.d.ts +3 -2
- package/dist/editor/constants/inputTypeIcons.d.ts +3 -0
- package/dist/editor/constants/nodeSpacing.d.ts +25 -0
- package/dist/editor/constants/nodeTypes.d.ts +4 -5
- package/dist/editor/context/OpenApiContext.d.ts +79 -0
- package/dist/editor/context/TreegeEditorRuntimeProvider.d.ts +78 -0
- package/dist/editor/features/TreegeEditor/TreegeEditor.d.ts +1 -1
- package/dist/editor/features/TreegeEditor/controls/MiniMapControl.d.ts +6 -0
- package/dist/editor/features/TreegeEditor/dialogs/AuthorizeDialog.d.ts +20 -0
- package/dist/editor/features/TreegeEditor/dialogs/ChangeNodeTypeDialog.d.ts +2 -0
- package/dist/editor/features/TreegeEditor/dialogs/DeleteNodeDialog.d.ts +2 -0
- package/dist/editor/features/TreegeEditor/dialogs/HeadersDialog.d.ts +19 -0
- package/dist/editor/features/TreegeEditor/dialogs/OpenApiDialog.d.ts +6 -0
- package/dist/editor/features/TreegeEditor/edges/ConditionalEdge.d.ts +2 -2
- package/dist/editor/features/TreegeEditor/edges/DefaultEdge.d.ts +3 -0
- package/dist/editor/features/TreegeEditor/forms/JsonTemplateEditor.d.ts +13 -0
- package/dist/editor/features/TreegeEditor/forms/OptionsMappingFields.d.ts +34 -0
- package/dist/editor/features/TreegeEditor/forms/OptionsSourceForm.d.ts +7 -0
- package/dist/editor/features/TreegeEditor/forms/SensitiveHeaderWarning.d.ts +13 -0
- package/dist/editor/features/TreegeEditor/forms/SubmitConfigForm.d.ts +7 -0
- package/dist/editor/features/TreegeEditor/inputs/ApiUrlCombobox.d.ts +20 -0
- package/dist/editor/features/TreegeEditor/inputs/ComboboxPattern.d.ts +2 -1
- package/dist/editor/features/TreegeEditor/inputs/OptionImageField.d.ts +6 -0
- package/dist/editor/features/TreegeEditor/inputs/SelectNodeGroup.d.ts +22 -1
- package/dist/editor/features/TreegeEditor/layout/AutoLayout.d.ts +15 -0
- package/dist/editor/features/TreegeEditor/nodes/TreegeNode.d.ts +5 -0
- package/dist/editor/features/TreegeEditor/nodes/components/BottomHandleDropdown.d.ts +25 -0
- package/dist/editor/features/TreegeEditor/nodes/components/NodeGroupBadge.d.ts +6 -0
- package/dist/editor/features/TreegeEditor/nodes/components/NodeImage.d.ts +5 -0
- package/dist/editor/features/TreegeEditor/nodes/components/NodeImageButton.d.ts +6 -0
- package/dist/editor/features/TreegeEditor/nodes/components/NodeInputPreview.d.ts +12 -0
- package/dist/editor/features/TreegeEditor/nodes/components/NodeLabelInput.d.ts +10 -0
- package/dist/editor/features/TreegeEditor/nodes/components/NodeMoreMenu.d.ts +6 -0
- package/dist/editor/features/TreegeEditor/nodes/components/NodeRequiredButton.d.ts +6 -0
- package/dist/editor/features/TreegeEditor/nodes/components/NodeStackOrderButtons.d.ts +6 -0
- package/dist/editor/features/TreegeEditor/nodes/components/NodeTypeBadge.d.ts +7 -0
- package/dist/editor/features/TreegeEditor/nodes/components/NodeTypePickerMenuContent.d.ts +12 -0
- package/dist/editor/features/TreegeEditor/nodes/layout/NodeWrapper.d.ts +4 -2
- package/dist/editor/features/TreegeEditor/panel/AIGeneratorDialog.d.ts +16 -0
- package/dist/editor/features/TreegeEditor/panel/ActionsPanel.d.ts +7 -2
- package/dist/editor/features/TreegeEditor/panel/MultiSelectionPanel.d.ts +7 -0
- package/dist/editor/hooks/useAvailableParentFields.d.ts +13 -0
- package/dist/editor/hooks/useFlowActions.d.ts +6 -2
- package/dist/editor/hooks/useFlowConnections.d.ts +14 -0
- package/dist/editor/hooks/useHistoryStore.d.ts +26 -0
- package/dist/editor/hooks/useIsStackedEdge.d.ts +8 -0
- package/dist/editor/hooks/useKeyValueRows.d.ts +15 -0
- package/dist/editor/hooks/useNodesSelection.d.ts +5 -5
- package/dist/editor/hooks/useStackPosition.d.ts +14 -0
- package/dist/editor/hooks/useTranslate.d.ts +1 -1
- package/dist/editor/hooks/useUndoRedo.d.ts +31 -0
- package/dist/editor/types/ai.d.ts +65 -0
- package/dist/editor/types/editor.d.ts +97 -10
- package/dist/editor/types/openapi.d.ts +106 -0
- package/dist/editor/utils/aiFlowGenerator.d.ts +5 -0
- package/dist/editor/utils/cleanNodeConfig.d.ts +5 -0
- package/dist/editor/utils/dagreLayout.d.ts +8 -0
- package/dist/editor/utils/edge.d.ts +50 -0
- package/dist/editor/utils/groupColor.d.ts +14 -0
- package/dist/editor/utils/image.d.ts +7 -0
- package/dist/editor/utils/inputTypeIcon.d.ts +6 -0
- package/dist/editor/utils/jsonBindTarget.d.ts +15 -0
- package/dist/editor/utils/openApiPayload.d.ts +12 -0
- package/dist/editor/utils/openapi.d.ts +35 -0
- package/dist/editor/utils/sensitiveHeaders.d.ts +20 -0
- package/dist/editor/utils/stackPositionIndex.d.ts +9 -0
- package/dist/editor-Bh4AR91O.js +6407 -0
- package/dist/editor.js +3 -7
- package/dist/main.js +6 -52
- package/dist/renderer/context/TreegeRenderRuntimeProvider.d.ts +135 -0
- package/dist/renderer/context/TreegeRendererProvider.d.ts +15 -0
- package/dist/renderer/features/TreegeRenderer/native/TreegeRenderer.d.ts +19 -11
- package/dist/renderer/features/TreegeRenderer/native/components/DefaultFormWrapper.d.ts +7 -7
- package/dist/renderer/features/TreegeRenderer/native/components/DefaultInputWrapper.d.ts +9 -0
- package/dist/renderer/features/TreegeRenderer/native/components/DefaultInputs.d.ts +20 -15
- package/dist/renderer/features/TreegeRenderer/native/components/DefaultLoadingSkeleton.d.ts +8 -0
- package/dist/renderer/features/TreegeRenderer/native/components/DefaultStep.d.ts +3 -0
- package/dist/renderer/features/TreegeRenderer/native/components/DefaultSubmitButton.d.ts +9 -7
- package/dist/renderer/features/TreegeRenderer/native/components/DefaultSubmitButtonWrapper.d.ts +11 -0
- package/dist/renderer/features/TreegeRenderer/native/components/DefaultUI.d.ts +8 -7
- package/dist/renderer/features/TreegeRenderer/native/components/DependencyHint.d.ts +15 -0
- package/dist/renderer/features/TreegeRenderer/native/components/OptionItemContent.d.ts +17 -0
- package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultAddressInput.d.ts +3 -0
- package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultAutocompleteInput.d.ts +3 -0
- package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultCheckboxInput.d.ts +3 -0
- package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultDateInput.d.ts +3 -0
- package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultDateRangeInput.d.ts +3 -0
- package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultFileInput.d.ts +3 -0
- package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultHiddenInput.d.ts +3 -0
- package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultHttpInput.d.ts +3 -0
- package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultNumberInput.d.ts +3 -0
- package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultPasswordInput.d.ts +3 -0
- package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultRadioInput.d.ts +3 -0
- package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultSelectInput.d.ts +3 -0
- package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultSubmitInput.d.ts +11 -0
- package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultSwitchInput.d.ts +3 -0
- package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTextInput.d.ts +3 -0
- package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTextareaInput.d.ts +3 -0
- package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTimeInput.d.ts +3 -0
- package/dist/renderer/features/TreegeRenderer/native/components/inputs/DefaultTimeRangeInput.d.ts +3 -0
- package/dist/renderer/features/TreegeRenderer/useTreegeRenderer.d.ts +97 -24
- package/dist/renderer/features/TreegeRenderer/web/TreegeRenderer.d.ts +1 -1
- package/dist/renderer/features/TreegeRenderer/web/components/DefaultFormWrapper.d.ts +3 -2
- package/dist/renderer/features/TreegeRenderer/web/components/DefaultInputWrapper.d.ts +9 -0
- package/dist/renderer/features/TreegeRenderer/web/components/DefaultLoadingSkeleton.d.ts +7 -0
- package/dist/renderer/features/TreegeRenderer/web/components/DefaultStep.d.ts +3 -0
- package/dist/renderer/features/TreegeRenderer/web/components/DefaultSubmitButton.d.ts +5 -1
- package/dist/renderer/features/TreegeRenderer/web/components/DependencyHint.d.ts +22 -0
- package/dist/renderer/features/TreegeRenderer/web/components/OptionItemContent.d.ts +17 -0
- package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultAddressInput.d.ts +1 -1
- package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultAutocompleteInput.d.ts +1 -1
- package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultCheckboxInput.d.ts +1 -1
- package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultDateInput.d.ts +1 -1
- package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultDateRangeInput.d.ts +1 -1
- package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultFileInput.d.ts +1 -1
- package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultHiddenInput.d.ts +1 -1
- package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultHttpInput.d.ts +1 -1
- package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultNumberInput.d.ts +1 -1
- package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultPasswordInput.d.ts +1 -1
- package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultRadioInput.d.ts +1 -1
- package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultSelectInput.d.ts +1 -1
- package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultSubmitInput.d.ts +11 -0
- package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultSwitchInput.d.ts +1 -1
- package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTextAreaInput.d.ts +1 -1
- package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTextInput.d.ts +1 -1
- package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTimeInput.d.ts +1 -1
- package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTimeRangeInput.d.ts +1 -1
- package/dist/renderer/features/TreegeRenderer/web/components/styles/RendererStyles.d.ts +2 -0
- package/dist/renderer/hooks/useInputOptions.d.ts +28 -0
- package/dist/renderer/hooks/useRenderNode.d.ts +61 -0
- package/dist/renderer/hooks/useSubmitHandler.d.ts +36 -0
- package/dist/renderer/hooks/useTranslate.d.ts +7 -5
- package/dist/renderer/index.d.ts +4 -2
- package/dist/renderer/index.native.d.ts +19 -0
- package/dist/renderer/types/renderer.d.ts +279 -42
- package/dist/renderer/utils/flow.d.ts +1 -18
- package/dist/renderer/utils/form.d.ts +38 -2
- package/dist/renderer/utils/http.d.ts +161 -0
- package/dist/renderer/utils/jsonTemplate.d.ts +30 -0
- package/dist/renderer/utils/node.d.ts +29 -1
- package/dist/renderer/utils/sanitize.d.ts +85 -0
- package/dist/renderer/utils/sanitize.native.d.ts +69 -0
- package/dist/renderer/utils/step.d.ts +27 -0
- package/dist/renderer/utils/submit.d.ts +49 -0
- package/dist/renderer/utils/templateDependencies.d.ts +17 -0
- package/dist/renderer-DFzpylQb.js +255 -0
- package/dist/renderer-native.d.ts +2 -0
- package/dist/renderer-native.js +3746 -0
- package/dist/renderer.js +5 -45
- package/dist/shared/components/ui/badge.d.ts +2 -2
- package/dist/shared/components/ui/button.d.ts +3 -3
- package/dist/shared/components/ui/collapsible.d.ts +1 -1
- package/dist/shared/components/ui/command.d.ts +1 -1
- package/dist/shared/components/ui/dropdown-menu.d.ts +1 -1
- package/dist/shared/components/ui/field.d.ts +24 -0
- package/dist/shared/components/ui/form.d.ts +1 -1
- package/dist/shared/components/ui/item.d.ts +23 -0
- package/dist/shared/components/ui/popover.d.ts +10 -2
- package/dist/shared/components/ui/select.d.ts +3 -1
- package/dist/shared/components/ui/sheet.d.ts +1 -1
- package/dist/shared/components/ui/skeleton.d.ts +3 -0
- package/dist/shared/components/ui/toggle-group.d.ts +7 -0
- package/dist/shared/components/ui/toggle.d.ts +9 -0
- package/dist/shared/components/ui/tooltip.d.ts +1 -1
- package/dist/shared/constants/colors.d.ts +45 -0
- package/dist/shared/constants/inputType.d.ts +6 -0
- package/dist/shared/constants/node.d.ts +0 -1
- package/dist/shared/context/PortalContainerContext.d.ts +5 -0
- package/dist/shared/context/ThemeContext.d.ts +2 -0
- package/dist/shared/context/ThemeContext.native.d.ts +22 -0
- package/dist/shared/hooks/useMediaQuery.d.ts +12 -0
- package/dist/shared/hooks/useThemeColors.d.ts +37 -0
- package/dist/shared/locales/ar.json.d.ts +253 -19
- package/dist/shared/locales/de.json.d.ts +254 -20
- package/dist/shared/locales/en.json.d.ts +255 -21
- package/dist/shared/locales/es.json.d.ts +254 -20
- package/dist/shared/locales/fr.json.d.ts +254 -20
- package/dist/shared/locales/it.json.d.ts +254 -20
- package/dist/shared/locales/pt.json.d.ts +254 -20
- package/dist/shared/types/edge.d.ts +6 -0
- package/dist/shared/types/node.d.ts +146 -18
- package/dist/shared/utils/httpRecord.d.ts +20 -0
- package/dist/shared/utils/inputTypeGuards.d.ts +7 -0
- package/dist/shared/utils/nodeTypeGuards.d.ts +1 -6
- package/dist/useRenderNode-DJGmt663.js +514 -0
- package/package.json +54 -22
- package/dist/ThemeContext-BIvs8Kw-.js +0 -758
- package/dist/TreegeEditor-Lv5Tn9_F.js +0 -2152
- package/dist/TreegeRenderer-D3EvsEfJ.js +0 -1413
- package/dist/editor/context/TreegeEditorContext.d.ts +0 -12
- package/dist/editor/features/TreegeEditor/forms/FlowNodeForm.d.ts +0 -2
- package/dist/editor/features/TreegeEditor/inputs/SelectInputType.d.ts +0 -7
- package/dist/editor/features/TreegeEditor/nodes/FlowNode.d.ts +0 -6
- package/dist/editor/features/TreegeEditor/nodes/GroupNode.d.ts +0 -6
- package/dist/editor/features/TreegeEditor/nodes/InputNode.d.ts +0 -6
- package/dist/editor/features/TreegeEditor/nodes/UINode.d.ts +0 -6
- package/dist/editor/hooks/useEdgesSelection.d.ts +0 -11
- package/dist/renderer/context/TreegeConfigContext.d.ts +0 -39
- package/dist/renderer/context/TreegeRendererContext.d.ts +0 -25
- package/dist/renderer/features/TreegeRenderer/native/components/DefaultGroup.d.ts +0 -7
- package/dist/renderer/features/TreegeRenderer/web/components/DefaultGroup.d.ts +0 -6
- /package/dist/editor/components/{data-display/logo.d.ts → branding/Logo.d.ts} +0 -0
|
@@ -1,43 +1,111 @@
|
|
|
1
1
|
import { Node } from '@xyflow/react';
|
|
2
|
-
import { FormValues } from '../../types/renderer';
|
|
3
|
-
import {
|
|
2
|
+
import { FormValues, TreegeRendererProps } from '../../types/renderer';
|
|
3
|
+
import { GroupNodeData, TreegeNodeData } from '../../../shared/types/node';
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* Main TreegeRenderer hook
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* All state is keyed by nodeId for uniqueness.
|
|
7
|
+
* Manages all form state, configuration, validation, and submission logic.
|
|
8
|
+
* Can be used directly in custom components for headless mode.
|
|
10
9
|
*
|
|
11
10
|
* Responsibilities:
|
|
11
|
+
* - Config merging (props + global provider)
|
|
12
12
|
* - Form values state (keyed by nodeId)
|
|
13
13
|
* - Errors state
|
|
14
14
|
* - Node visibility calculation (progressive rendering)
|
|
15
|
-
* - Form validation (built-in: required, pattern)
|
|
16
|
-
* - Submit
|
|
15
|
+
* - Form validation (built-in: required, pattern + custom validation)
|
|
16
|
+
* - Submit handling (with HTTP integration support)
|
|
17
|
+
* - Side effects (onChange callbacks, validation modes, reference field sync)
|
|
17
18
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* - Side effects like onChange callbacks (done in component)
|
|
21
|
-
* - Custom validation (passed to component)
|
|
19
|
+
* @param props - Configuration props (flow, initialValues, callbacks, etc.)
|
|
20
|
+
* @returns Complete form state and control methods
|
|
22
21
|
*/
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
*
|
|
26
|
-
* @param flows - Flow or array of flows (can be null/undefined)
|
|
27
|
-
* @param initialValues - Initial form values (will be merged with node defaults)
|
|
28
|
-
* @param language - Preferred language for translations (defaults to 'en')
|
|
29
|
-
* @returns Pure state and computed values (no side effects)
|
|
30
|
-
*/
|
|
31
|
-
export declare const useTreegeRenderer: (flows: Flow | Flow[] | null | undefined, initialValues?: FormValues, language?: string) => {
|
|
22
|
+
export declare const useTreegeRenderer: ({ baseUrl, components, flow, googleApiKey, headers, language, onChange, onSubmit, showPoweredBy, theme, validate, validationMode, initialValues, }: Pick<TreegeRendererProps, "baseUrl" | "components" | "flow" | "googleApiKey" | "headers" | "initialValues" | "language" | "onChange" | "onSubmit" | "showPoweredBy" | "theme" | "validate" | "validationMode">) => {
|
|
23
|
+
canContinueStep: boolean;
|
|
32
24
|
canSubmit: boolean;
|
|
25
|
+
clearSubmitMessage: () => void;
|
|
26
|
+
config: {
|
|
27
|
+
baseUrl: string | undefined;
|
|
28
|
+
components: {
|
|
29
|
+
form: ((props: {
|
|
30
|
+
children: import('react').ReactNode;
|
|
31
|
+
id?: string;
|
|
32
|
+
onSubmit: (e: import('react').FormEvent<HTMLFormElement>) => void;
|
|
33
|
+
}) => import('react').ReactNode) | undefined;
|
|
34
|
+
inputs: {
|
|
35
|
+
number?: import('../../types/renderer').InputRenderer<"number"> | undefined;
|
|
36
|
+
checkbox?: import('../../types/renderer').InputRenderer<"checkbox"> | undefined;
|
|
37
|
+
radio?: import('../../types/renderer').InputRenderer<"radio"> | undefined;
|
|
38
|
+
switch?: import('../../types/renderer').InputRenderer<"switch"> | undefined;
|
|
39
|
+
address?: import('../../types/renderer').InputRenderer<"address"> | undefined;
|
|
40
|
+
autocomplete?: import('../../types/renderer').InputRenderer<"autocomplete"> | undefined;
|
|
41
|
+
date?: import('../../types/renderer').InputRenderer<"date"> | undefined;
|
|
42
|
+
daterange?: import('../../types/renderer').InputRenderer<"daterange"> | undefined;
|
|
43
|
+
file?: import('../../types/renderer').InputRenderer<"file"> | undefined;
|
|
44
|
+
hidden?: import('../../types/renderer').InputRenderer<"hidden"> | undefined;
|
|
45
|
+
http?: import('../../types/renderer').InputRenderer<"http"> | undefined;
|
|
46
|
+
password?: import('../../types/renderer').InputRenderer<"password"> | undefined;
|
|
47
|
+
select?: import('../../types/renderer').InputRenderer<"select"> | undefined;
|
|
48
|
+
submit?: import('../../types/renderer').InputRenderer<"submit"> | undefined;
|
|
49
|
+
text?: import('../../types/renderer').InputRenderer<"text"> | undefined;
|
|
50
|
+
textarea?: import('../../types/renderer').InputRenderer<"textarea"> | undefined;
|
|
51
|
+
time?: import('../../types/renderer').InputRenderer<"time"> | undefined;
|
|
52
|
+
timerange?: import('../../types/renderer').InputRenderer<"timerange"> | undefined;
|
|
53
|
+
};
|
|
54
|
+
loadingSkeleton: (() => import('react').ReactNode) | undefined;
|
|
55
|
+
step: ((props: import('../../types/renderer').StepRenderProps) => import('react').ReactNode) | undefined;
|
|
56
|
+
submitButton: ((props: {
|
|
57
|
+
label?: string;
|
|
58
|
+
disabled?: boolean;
|
|
59
|
+
isSubmitting?: boolean;
|
|
60
|
+
[key: string]: unknown;
|
|
61
|
+
} | {
|
|
62
|
+
children?: import('react').ReactNode;
|
|
63
|
+
disabled?: boolean;
|
|
64
|
+
isSubmitting?: boolean;
|
|
65
|
+
onPress?: () => void;
|
|
66
|
+
[key: string]: unknown;
|
|
67
|
+
}) => import('react').ReactNode) | undefined;
|
|
68
|
+
submitButtonWrapper: ((props: {
|
|
69
|
+
children: import('react').ReactNode;
|
|
70
|
+
missingFields?: string[];
|
|
71
|
+
}) => import('react').ReactNode) | undefined;
|
|
72
|
+
ui: {
|
|
73
|
+
divider?: ((props: import('../../types/renderer').NodeRenderProps) => import('react').ReactNode) | undefined;
|
|
74
|
+
title?: ((props: import('../../types/renderer').NodeRenderProps) => import('react').ReactNode) | undefined;
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
googleApiKey: string | undefined;
|
|
78
|
+
headers: import('../../../shared/types/node').HttpHeaders;
|
|
79
|
+
language: string;
|
|
80
|
+
showPoweredBy: boolean;
|
|
81
|
+
theme: "dark" | "light";
|
|
82
|
+
validationMode: "onChange" | "onSubmit";
|
|
83
|
+
};
|
|
84
|
+
currentStep: import('../../utils/step').FlowStep;
|
|
85
|
+
currentStepGroupNode: Node<GroupNodeData> | undefined;
|
|
86
|
+
currentStepIndex: number;
|
|
87
|
+
firstErrorFieldId: string | undefined;
|
|
33
88
|
formErrors: Record<string, string>;
|
|
34
89
|
formValues: FormValues;
|
|
90
|
+
goToNextStep: () => void;
|
|
91
|
+
goToPreviousStep: () => void;
|
|
92
|
+
handleSubmit: () => Promise<boolean>;
|
|
93
|
+
hasSubmitInput: boolean;
|
|
35
94
|
inputNodes: Node<import('../../../shared/types/node').InputNodeData>[];
|
|
36
|
-
|
|
95
|
+
isFirstStep: boolean;
|
|
96
|
+
isLastStep: boolean;
|
|
97
|
+
isSubmitting: boolean;
|
|
37
98
|
missingRequiredFields: string[];
|
|
99
|
+
prevFormValuesRef: import('react').RefObject<FormValues>;
|
|
100
|
+
setFieldErrors: import('react').Dispatch<import('react').SetStateAction<Record<string, string>>>;
|
|
38
101
|
setFieldValue: (fieldName: string, value: unknown) => void;
|
|
39
|
-
|
|
40
|
-
|
|
102
|
+
setMultipleFieldValues: (updates: FormValues) => void;
|
|
103
|
+
steps: import('../../utils/step').FlowStep[];
|
|
104
|
+
submitMessage: {
|
|
105
|
+
type: "success" | "error";
|
|
106
|
+
message: string;
|
|
107
|
+
} | null;
|
|
108
|
+
t: (key?: import('../../../main').Translatable | string) => string;
|
|
41
109
|
validateForm: (customValidate?: (values: FormValues, visibleNodesList: Node<TreegeNodeData>[]) => Record<string, string>) => {
|
|
42
110
|
errors: {
|
|
43
111
|
[x: string]: string;
|
|
@@ -48,3 +116,8 @@ export declare const useTreegeRenderer: (flows: Flow | Flow[] | null | undefined
|
|
|
48
116
|
visibleNodes: Node<TreegeNodeData>[];
|
|
49
117
|
visibleRootNodes: Node<TreegeNodeData>[];
|
|
50
118
|
};
|
|
119
|
+
/**
|
|
120
|
+
* Type for the return value of useTreegeRenderer
|
|
121
|
+
* Useful for TypeScript users building custom components
|
|
122
|
+
*/
|
|
123
|
+
export type UseTreegeRendererReturn = ReturnType<typeof useTreegeRenderer>;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { TreegeRendererProps } from '../../../types/renderer';
|
|
2
|
-
declare const TreegeRenderer: ({ components,
|
|
2
|
+
declare const TreegeRenderer: ({ baseUrl, components, className, flow, formId, googleApiKey, headers, language, onBack, onChange, onSubmit, showPoweredBy, theme, validate, validationMode, initialValues, isLoading, isSubmitting: isSubmittingProp, }: TreegeRendererProps) => import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
export default TreegeRenderer;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { FormEvent, ReactNode } from 'react';
|
|
2
|
-
declare const DefaultFormWrapper: ({ children, onSubmit }: {
|
|
2
|
+
declare const DefaultFormWrapper: ({ children, id, onSubmit, }: {
|
|
3
3
|
children: ReactNode;
|
|
4
|
-
|
|
4
|
+
id?: string;
|
|
5
|
+
onSubmit: (e: FormEvent<HTMLFormElement>) => void;
|
|
5
6
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
6
7
|
export default DefaultFormWrapper;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Node } from '@xyflow/react';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
import { InputNodeData } from '../../../../../shared/types/node';
|
|
4
|
+
interface DefaultInputWrapperProps {
|
|
5
|
+
node: Node<InputNodeData>;
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
}
|
|
8
|
+
export declare const DefaultInputWrapper: ({ node, children }: DefaultInputWrapperProps) => import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export default DefaultInputWrapper;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default loading skeleton displayed by `TreegeRenderer` while `isLoading` is
|
|
3
|
+
* true. Mimics the visual structure of a step (title, a few fields and the
|
|
4
|
+
* navigation buttons) so the layout doesn't shift once the real form renders.
|
|
5
|
+
*/
|
|
6
|
+
declare const DefaultLoadingSkeleton: () => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export default DefaultLoadingSkeleton;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { StepRenderProps } from '../../../../types/renderer';
|
|
2
|
+
declare const DefaultStep: ({ step, label, children, canGoBack, isLastStep, canContinue, isSubmitting, onBack, onContinue, missingFields, }: StepRenderProps) => import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
export default DefaultStep;
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import { ButtonHTMLAttributes } from 'react';
|
|
2
2
|
export interface SubmitButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
3
3
|
label?: string;
|
|
4
|
+
/**
|
|
5
|
+
* When true, shows a spinner inside the button (and keeps it disabled).
|
|
6
|
+
*/
|
|
7
|
+
isSubmitting?: boolean;
|
|
4
8
|
}
|
|
5
9
|
/**
|
|
6
10
|
* Default submit button
|
|
7
11
|
*/
|
|
8
|
-
declare const DefaultSubmitButton: (
|
|
12
|
+
declare const DefaultSubmitButton: import('react').ForwardRefExoticComponent<SubmitButtonProps & import('react').RefAttributes<HTMLButtonElement>>;
|
|
9
13
|
export default DefaultSubmitButton;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { MissingDependency } from '../../../../types/renderer';
|
|
3
|
+
interface MissingProps {
|
|
4
|
+
/** Unfilled fields the input depends on (from `extra.missingDependencies`). */
|
|
5
|
+
missing: MissingDependency[];
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Wraps a disabled input control with a tooltip listing the fields the user
|
|
9
|
+
* must fill before the input's dynamic options can load. Renders children
|
|
10
|
+
* untouched when there are no missing dependencies, so it's safe to wrap any
|
|
11
|
+
* trigger-based dynamic input (select, autocomplete, http) unconditionally.
|
|
12
|
+
*/
|
|
13
|
+
declare const DependencyHint: ({ missing, children }: MissingProps & {
|
|
14
|
+
children: ReactNode;
|
|
15
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
/**
|
|
17
|
+
* Inline variant for inputs that have no single trigger to hover (radio,
|
|
18
|
+
* checkbox): renders the same hint as always-visible muted text. Renders
|
|
19
|
+
* nothing when there are no missing dependencies.
|
|
20
|
+
*/
|
|
21
|
+
export declare const DependencyHintMessage: ({ missing }: MissingProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
22
|
+
export default DependencyHint;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
interface OptionItemContentProps {
|
|
2
|
+
/** Already-translated option label. */
|
|
3
|
+
label: string;
|
|
4
|
+
/** Already-translated option description (optional). */
|
|
5
|
+
description?: string;
|
|
6
|
+
/** Option image — base64 data URL or remote URL (optional). */
|
|
7
|
+
image?: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Shared content for an option row in a dropdown/combobox/select, built from the
|
|
11
|
+
* shadcn `Item` primitives: an optional leading image, the label, and an
|
|
12
|
+
* optional muted description underneath. Rendered as a fragment — the enclosing
|
|
13
|
+
* `CommandItem`/`SelectItem` already provides the flex row. The selection
|
|
14
|
+
* indicator (check) is left to the caller so it can sit outside this block.
|
|
15
|
+
*/
|
|
16
|
+
declare const OptionItemContent: ({ label, description, image }: OptionItemContentProps) => import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export default OptionItemContent;
|
package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultAddressInput.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { InputRenderProps } from '../../../../../types/renderer';
|
|
2
|
-
declare const DefaultAddressInput: ({
|
|
2
|
+
declare const DefaultAddressInput: ({ field, extra }: InputRenderProps<"address">) => import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
export default DefaultAddressInput;
|
package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultAutocompleteInput.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { InputRenderProps } from '../../../../../types/renderer';
|
|
2
|
-
declare const DefaultAutocompleteInput: ({
|
|
2
|
+
declare const DefaultAutocompleteInput: ({ field, extra }: InputRenderProps<"autocomplete">) => import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
export default DefaultAutocompleteInput;
|
package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultCheckboxInput.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { InputRenderProps } from '../../../../../types/renderer';
|
|
2
|
-
declare const DefaultCheckboxInput: ({
|
|
2
|
+
declare const DefaultCheckboxInput: ({ field, extra }: InputRenderProps<"checkbox">) => import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
export default DefaultCheckboxInput;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { InputRenderProps } from '../../../../../types/renderer';
|
|
2
|
-
declare const DefaultDateInput: ({
|
|
2
|
+
declare const DefaultDateInput: ({ field, extra }: InputRenderProps<"date">) => import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
export default DefaultDateInput;
|
package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultDateRangeInput.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { InputRenderProps } from '../../../../../types/renderer';
|
|
2
|
-
declare const DefaultDateRangeInput: ({
|
|
2
|
+
declare const DefaultDateRangeInput: ({ field, extra }: InputRenderProps<"daterange">) => import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
export default DefaultDateRangeInput;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { InputRenderProps } from '../../../../../types/renderer';
|
|
2
|
-
declare const DefaultFileInput: ({
|
|
2
|
+
declare const DefaultFileInput: ({ field, extra }: InputRenderProps<"file">) => import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
export default DefaultFileInput;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { InputRenderProps } from '../../../../../types/renderer';
|
|
2
|
-
declare const DefaultHiddenInput: ({
|
|
2
|
+
declare const DefaultHiddenInput: ({ field }: InputRenderProps<"hidden">) => import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
export default DefaultHiddenInput;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { InputRenderProps } from '../../../../../types/renderer';
|
|
2
|
-
declare const DefaultHttpInput: ({
|
|
2
|
+
declare const DefaultHttpInput: ({ field, extra }: InputRenderProps<"http">) => import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
export default DefaultHttpInput;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { InputRenderProps } from '../../../../../types/renderer';
|
|
2
|
-
declare const DefaultNumberInput: ({
|
|
2
|
+
declare const DefaultNumberInput: ({ field, extra }: InputRenderProps<"number">) => import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
export default DefaultNumberInput;
|
package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultPasswordInput.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { InputRenderProps } from '../../../../../types/renderer';
|
|
2
|
-
declare const DefaultPasswordInput: ({
|
|
2
|
+
declare const DefaultPasswordInput: ({ field, extra }: InputRenderProps<"password">) => import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
export default DefaultPasswordInput;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { InputRenderProps } from '../../../../../types/renderer';
|
|
2
|
-
declare const DefaultRadioInput: ({
|
|
2
|
+
declare const DefaultRadioInput: ({ field, extra }: InputRenderProps<"radio">) => import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
export default DefaultRadioInput;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { InputRenderProps } from '../../../../../types/renderer';
|
|
2
|
-
declare const DefaultSelectInput: ({
|
|
2
|
+
declare const DefaultSelectInput: ({ field, extra }: InputRenderProps<"select">) => import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
export default DefaultSelectInput;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { InputRenderProps } from '../../../../../types/renderer';
|
|
2
|
+
/**
|
|
3
|
+
* The `submit` input node is declarative only: it marks where the flow submits
|
|
4
|
+
* and carries the optional custom label / `submitConfig`. The actual submit
|
|
5
|
+
* button is rendered once by the step (in its action row, next to Back) — see
|
|
6
|
+
* `DefaultStep` — so the node itself renders nothing. This guarantees a single,
|
|
7
|
+
* consistently-placed button whether submission comes from an explicit submit
|
|
8
|
+
* node, the default "Submit", or a "Continue" step.
|
|
9
|
+
*/
|
|
10
|
+
declare const DefaultSubmitInput: (_props: InputRenderProps<"submit">) => null;
|
|
11
|
+
export default DefaultSubmitInput;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { InputRenderProps } from '../../../../../types/renderer';
|
|
2
|
-
declare const DefaultSwitchInput: ({
|
|
2
|
+
declare const DefaultSwitchInput: ({ field, extra }: InputRenderProps<"switch">) => import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
export default DefaultSwitchInput;
|
package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTextAreaInput.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { InputRenderProps } from '../../../../../types/renderer';
|
|
2
|
-
declare const DefaultTextAreaInput: ({
|
|
2
|
+
declare const DefaultTextAreaInput: ({ field, extra }: InputRenderProps<"textarea">) => import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
export default DefaultTextAreaInput;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { InputRenderProps } from '../../../../../types/renderer';
|
|
2
|
-
declare const DefaultTextInput: ({
|
|
2
|
+
declare const DefaultTextInput: ({ field, extra }: InputRenderProps<"text">) => import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
export default DefaultTextInput;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { InputRenderProps } from '../../../../../types/renderer';
|
|
2
|
-
declare const DefaultTimeInput: ({
|
|
2
|
+
declare const DefaultTimeInput: ({ field, extra }: InputRenderProps<"time">) => import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
export default DefaultTimeInput;
|
package/dist/renderer/features/TreegeRenderer/web/components/inputs/DefaultTimeRangeInput.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { InputRenderProps } from '../../../../../types/renderer';
|
|
2
|
-
declare const DefaultTimeRangeInput: ({
|
|
2
|
+
declare const DefaultTimeRangeInput: ({ field, extra }: InputRenderProps<"timerange">) => import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
export default DefaultTimeRangeInput;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Node } from '@xyflow/react';
|
|
2
|
+
import { InputNodeData, InputOption } from '../../shared/types/node';
|
|
3
|
+
interface UseInputOptionsResult {
|
|
4
|
+
/**
|
|
5
|
+
* Resolved options for the input. When the node has an `optionsSource`,
|
|
6
|
+
* these are the fetched options (or the static fallback while loading or
|
|
7
|
+
* if the fetch errors). Otherwise the static `options` from the node data.
|
|
8
|
+
*/
|
|
9
|
+
options: InputOption[];
|
|
10
|
+
/** True while a remote fetch is in flight. */
|
|
11
|
+
isLoading: boolean;
|
|
12
|
+
/** Error message if the latest remote fetch failed; otherwise `null`. */
|
|
13
|
+
error: string | null;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Resolves the options for an option-based input (radio, checkbox, select,
|
|
17
|
+
* autocomplete). If the node declares an `optionsSource`, options are fetched
|
|
18
|
+
* from that API at runtime, with `{{templateVar}}` substitution from form
|
|
19
|
+
* values and merging of global + field-level headers. While loading, before
|
|
20
|
+
* the first successful fetch, or on error, falls back to the static
|
|
21
|
+
* `options` array (if any).
|
|
22
|
+
*
|
|
23
|
+
* The fetch plan is computed once and serialized to JSON. The fetch effect
|
|
24
|
+
* keys off this string: changes that don't affect the actual request (e.g.
|
|
25
|
+
* an unrelated form field) produce the same JSON and don't re-trigger.
|
|
26
|
+
*/
|
|
27
|
+
export declare const useInputOptions: (node: Node<InputNodeData>) => UseInputOptionsResult;
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Node } from '@xyflow/react';
|
|
2
|
+
import { ComponentType, ReactNode } from 'react';
|
|
3
|
+
import { FormValues, InputRenderers, TreegeRendererComponents } from '../types/renderer';
|
|
4
|
+
import { InputNodeData, TreegeNodeData } from '../../shared/types/node';
|
|
5
|
+
type AnyComponent = ComponentType<any>;
|
|
6
|
+
type UseRenderNodeParams = {
|
|
7
|
+
config: {
|
|
8
|
+
components: TreegeRendererComponents;
|
|
9
|
+
language: string;
|
|
10
|
+
};
|
|
11
|
+
DefaultFormWrapper: AnyComponent;
|
|
12
|
+
DefaultInputWrapper: ComponentType<{
|
|
13
|
+
node: Node<InputNodeData>;
|
|
14
|
+
children: ReactNode;
|
|
15
|
+
}>;
|
|
16
|
+
DefaultSubmitButton: AnyComponent;
|
|
17
|
+
DefaultSubmitButtonWrapper?: AnyComponent;
|
|
18
|
+
defaultInputRenderers: InputRenderers;
|
|
19
|
+
defaultUI: Record<string, AnyComponent>;
|
|
20
|
+
formErrors: Record<string, string>;
|
|
21
|
+
formValues: FormValues;
|
|
22
|
+
inputNodes: Node<InputNodeData>[];
|
|
23
|
+
isSubmitting?: boolean;
|
|
24
|
+
missingRequiredFields: string[];
|
|
25
|
+
setFieldValue: (fieldId: string, value: unknown) => void;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Hook that returns rendering utilities for TreegeRenderer
|
|
29
|
+
* Shared between web and native TreegeRenderer
|
|
30
|
+
*
|
|
31
|
+
* Returns:
|
|
32
|
+
* - renderNode: Function to render individual nodes
|
|
33
|
+
* - FormWrapper: Form wrapper component with fallback
|
|
34
|
+
* - SubmitButton: Submit button component with fallback
|
|
35
|
+
* - SubmitButtonWrapper: Submit button wrapper component with fallback (web only, undefined for native)
|
|
36
|
+
*/
|
|
37
|
+
export declare const useRenderNode: ({ DefaultFormWrapper, DefaultInputWrapper, DefaultSubmitButton, DefaultSubmitButtonWrapper, config, defaultInputRenderers, defaultUI, formErrors, formValues, inputNodes, isSubmitting, missingRequiredFields, setFieldValue, }: UseRenderNodeParams) => {
|
|
38
|
+
FormWrapper: ((props: {
|
|
39
|
+
children: ReactNode;
|
|
40
|
+
id?: string;
|
|
41
|
+
onSubmit: (e: import('react').FormEvent<HTMLFormElement>) => void;
|
|
42
|
+
}) => ReactNode) | AnyComponent;
|
|
43
|
+
renderNode: (node: Node<TreegeNodeData>) => ReactNode;
|
|
44
|
+
SubmitButton: ((props: {
|
|
45
|
+
label?: string;
|
|
46
|
+
disabled?: boolean;
|
|
47
|
+
isSubmitting?: boolean;
|
|
48
|
+
[key: string]: unknown;
|
|
49
|
+
} | {
|
|
50
|
+
children?: ReactNode;
|
|
51
|
+
disabled?: boolean;
|
|
52
|
+
isSubmitting?: boolean;
|
|
53
|
+
onPress?: () => void;
|
|
54
|
+
[key: string]: unknown;
|
|
55
|
+
}) => ReactNode) | AnyComponent;
|
|
56
|
+
SubmitButtonWrapper: ((props: {
|
|
57
|
+
children: ReactNode;
|
|
58
|
+
missingFields?: string[];
|
|
59
|
+
}) => ReactNode) | AnyComponent;
|
|
60
|
+
};
|
|
61
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Node } from '@xyflow/react';
|
|
2
|
+
import { FormValues } from '../types/renderer';
|
|
3
|
+
import { SubmitResult } from '../utils/submit';
|
|
4
|
+
import { HttpHeaders, InputNodeData, TreegeNodeData } from '../../shared/types/node';
|
|
5
|
+
/**
|
|
6
|
+
* Hook for handling form submission with submit button configuration
|
|
7
|
+
*
|
|
8
|
+
* This hook provides:
|
|
9
|
+
* - Submit button node detection
|
|
10
|
+
* - HTTP submission handling
|
|
11
|
+
* - Loading state management
|
|
12
|
+
* - Success/error message handling
|
|
13
|
+
* - Redirect handling
|
|
14
|
+
*
|
|
15
|
+
* @param visibleNodes - Currently visible nodes in the form
|
|
16
|
+
* @param formValues - Current form values
|
|
17
|
+
* @param language - Current language for translations
|
|
18
|
+
* @param inputNodes - All input nodes for form data conversion
|
|
19
|
+
* @param headers
|
|
20
|
+
* @param baseUrl - Base URL prepended to a relative submit url
|
|
21
|
+
* @returns Submit handler state and functions
|
|
22
|
+
*/
|
|
23
|
+
export declare const useSubmitHandler: (visibleNodes: Node<TreegeNodeData>[], formValues: FormValues, language: string, inputNodes: Node<InputNodeData>[], headers?: HttpHeaders, baseUrl?: string) => {
|
|
24
|
+
clearSubmitMessage: () => void;
|
|
25
|
+
handleSubmitWithConfig: (onSuccess?: (data: unknown) => void) => Promise<SubmitResult | null>;
|
|
26
|
+
hasSubmitConfig: boolean;
|
|
27
|
+
isSubmitting: boolean;
|
|
28
|
+
submitButtonNode: {
|
|
29
|
+
id: string;
|
|
30
|
+
data: InputNodeData;
|
|
31
|
+
} | null;
|
|
32
|
+
submitMessage: {
|
|
33
|
+
type: "success" | "error";
|
|
34
|
+
message: string;
|
|
35
|
+
} | null;
|
|
36
|
+
};
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
import { Translatable } from '../../shared/types/translate';
|
|
1
2
|
/**
|
|
2
3
|
* Hook for translating text in the renderer with context-aware language preference.
|
|
3
4
|
*
|
|
4
|
-
* This hook uses the language from
|
|
5
|
+
* This hook uses the language from TreegeRenderRuntimeContext (or explicit override) and delegates to the shared useTranslate hook.
|
|
6
|
+
* All translations are automatically sanitized to prevent XSS attacks.
|
|
5
7
|
*
|
|
6
8
|
* @param language - Optional language override. If not provided, uses language from context.
|
|
7
|
-
* @returns A function that translates either a translation key or a Translatable object
|
|
9
|
+
* @returns A function that translates either a translation key or a Translatable object (with XSS protection)
|
|
8
10
|
*
|
|
9
11
|
* @example
|
|
10
12
|
* // Static translation (from translation files)
|
|
@@ -12,13 +14,13 @@
|
|
|
12
14
|
* const errorMsg = t("validation.required"); // "This field is required"
|
|
13
15
|
*
|
|
14
16
|
* @example
|
|
15
|
-
* // Dynamic translation (from node data)
|
|
17
|
+
* // Dynamic translation (from node data) - automatically sanitized
|
|
16
18
|
* const t = useTranslate();
|
|
17
|
-
* const label = t(node.data.label); // Translates user-defined content
|
|
19
|
+
* const label = t(node.data.label); // Translates and sanitizes user-defined content
|
|
18
20
|
*
|
|
19
21
|
* @example
|
|
20
22
|
* // With explicit language
|
|
21
23
|
* const t = useTranslate("fr");
|
|
22
24
|
* const errorMsg = t("validation.required"); // "Ce champ est requis"
|
|
23
25
|
*/
|
|
24
|
-
export declare const useTranslate: (language?: string) => (key?:
|
|
26
|
+
export declare const useTranslate: (language?: string) => (key?: Translatable | string) => string;
|
package/dist/renderer/index.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { TreegeRendererProvider, useTreegeRendererConfig } from './context/TreegeRendererProvider';
|
|
2
|
+
export type { UseTreegeRendererReturn } from './features/TreegeRenderer/useTreegeRenderer';
|
|
2
3
|
export { useTreegeRenderer } from './features/TreegeRenderer/useTreegeRenderer';
|
|
3
4
|
export * from './features/TreegeRenderer/web/components/DefaultFormWrapper';
|
|
4
|
-
export * from './features/TreegeRenderer/web/components/DefaultGroup';
|
|
5
5
|
export * from './features/TreegeRenderer/web/components/DefaultInputs';
|
|
6
|
+
export * from './features/TreegeRenderer/web/components/DefaultStep';
|
|
6
7
|
export * from './features/TreegeRenderer/web/components/DefaultSubmitButton';
|
|
7
8
|
export * from './features/TreegeRenderer/web/components/DefaultUI';
|
|
8
9
|
export * from './features/TreegeRenderer/web/TreegeRenderer';
|
|
@@ -13,5 +14,6 @@ export * from './utils/conditions';
|
|
|
13
14
|
export * from './utils/file';
|
|
14
15
|
export * from './utils/flow';
|
|
15
16
|
export * from './utils/form';
|
|
17
|
+
export * from './utils/sanitize';
|
|
16
18
|
export { ThemeProvider, useTheme } from '../shared/context/ThemeContext';
|
|
17
19
|
export { getTranslatedText } from '../shared/utils/translations';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export { TreegeRendererProvider, useTreegeRendererConfig } from './context/TreegeRendererProvider';
|
|
2
|
+
export * from './features/TreegeRenderer/native/components/DefaultFormWrapper';
|
|
3
|
+
export * from './features/TreegeRenderer/native/components/DefaultInputs';
|
|
4
|
+
export * from './features/TreegeRenderer/native/components/DefaultStep';
|
|
5
|
+
export * from './features/TreegeRenderer/native/components/DefaultSubmitButton';
|
|
6
|
+
export * from './features/TreegeRenderer/native/components/DefaultSubmitButtonWrapper';
|
|
7
|
+
export * from './features/TreegeRenderer/native/components/DefaultUI';
|
|
8
|
+
export type { TreegeRendererNativeProps } from './features/TreegeRenderer/native/TreegeRenderer';
|
|
9
|
+
export { default as TreegeRenderer } from './features/TreegeRenderer/native/TreegeRenderer';
|
|
10
|
+
export type { UseTreegeRendererReturn } from './features/TreegeRenderer/useTreegeRenderer';
|
|
11
|
+
export { useTreegeRenderer } from './features/TreegeRenderer/useTreegeRenderer';
|
|
12
|
+
export type { TreegeRendererConfig } from './types/renderer';
|
|
13
|
+
export * from './types/renderer';
|
|
14
|
+
export * from './utils/conditions';
|
|
15
|
+
export * from './utils/file';
|
|
16
|
+
export * from './utils/flow';
|
|
17
|
+
export * from './utils/form';
|
|
18
|
+
export * from './utils/sanitize.native';
|
|
19
|
+
export { getTranslatedText } from '../shared/utils/translations';
|