@formhaus/react 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +85 -0
  3. package/dist/index.d.ts +68 -6
  4. package/dist/index.js +1 -4
  5. package/dist/index.js.map +1 -1
  6. package/package.json +19 -15
  7. package/dist/FormActions.d.ts +0 -3
  8. package/dist/FormActions.d.ts.map +0 -1
  9. package/dist/FormActions.js +0 -28
  10. package/dist/FormActions.js.map +0 -1
  11. package/dist/FormField.d.ts +0 -16
  12. package/dist/FormField.d.ts.map +0 -1
  13. package/dist/FormField.js +0 -33
  14. package/dist/FormField.js.map +0 -1
  15. package/dist/FormRenderer.d.ts +0 -3
  16. package/dist/FormRenderer.d.ts.map +0 -1
  17. package/dist/FormRenderer.js +0 -94
  18. package/dist/FormRenderer.js.map +0 -1
  19. package/dist/FormStepProgress.d.ts +0 -3
  20. package/dist/FormStepProgress.d.ts.map +0 -1
  21. package/dist/FormStepProgress.js +0 -6
  22. package/dist/FormStepProgress.js.map +0 -1
  23. package/dist/fields/CheckboxField.d.ts +0 -3
  24. package/dist/fields/CheckboxField.d.ts.map +0 -1
  25. package/dist/fields/CheckboxField.js +0 -9
  26. package/dist/fields/CheckboxField.js.map +0 -1
  27. package/dist/fields/DateField.d.ts +0 -3
  28. package/dist/fields/DateField.d.ts.map +0 -1
  29. package/dist/fields/DateField.js +0 -9
  30. package/dist/fields/DateField.js.map +0 -1
  31. package/dist/fields/FileField.d.ts +0 -3
  32. package/dist/fields/FileField.d.ts.map +0 -1
  33. package/dist/fields/FileField.js +0 -12
  34. package/dist/fields/FileField.js.map +0 -1
  35. package/dist/fields/MultiselectField.d.ts +0 -3
  36. package/dist/fields/MultiselectField.d.ts.map +0 -1
  37. package/dist/fields/MultiselectField.js +0 -20
  38. package/dist/fields/MultiselectField.js.map +0 -1
  39. package/dist/fields/RadioField.d.ts +0 -3
  40. package/dist/fields/RadioField.d.ts.map +0 -1
  41. package/dist/fields/RadioField.js +0 -13
  42. package/dist/fields/RadioField.js.map +0 -1
  43. package/dist/fields/SelectField.d.ts +0 -3
  44. package/dist/fields/SelectField.d.ts.map +0 -1
  45. package/dist/fields/SelectField.js +0 -10
  46. package/dist/fields/SelectField.js.map +0 -1
  47. package/dist/fields/SwitchField.d.ts +0 -3
  48. package/dist/fields/SwitchField.d.ts.map +0 -1
  49. package/dist/fields/SwitchField.js +0 -9
  50. package/dist/fields/SwitchField.js.map +0 -1
  51. package/dist/fields/TextField.d.ts +0 -3
  52. package/dist/fields/TextField.d.ts.map +0 -1
  53. package/dist/fields/TextField.js +0 -22
  54. package/dist/fields/TextField.js.map +0 -1
  55. package/dist/fields/TextareaField.d.ts +0 -3
  56. package/dist/fields/TextareaField.d.ts.map +0 -1
  57. package/dist/fields/TextareaField.js +0 -10
  58. package/dist/fields/TextareaField.js.map +0 -1
  59. package/dist/hooks/useFieldOptions.d.ts +0 -4
  60. package/dist/hooks/useFieldOptions.d.ts.map +0 -1
  61. package/dist/hooks/useFieldOptions.js +0 -39
  62. package/dist/hooks/useFieldOptions.js.map +0 -1
  63. package/dist/hooks/useFormEngine.d.ts +0 -3
  64. package/dist/hooks/useFormEngine.d.ts.map +0 -1
  65. package/dist/hooks/useFormEngine.js +0 -14
  66. package/dist/hooks/useFormEngine.js.map +0 -1
  67. package/dist/index.d.ts.map +0 -1
  68. package/dist/types.d.ts +0 -55
  69. package/dist/types.d.ts.map +0 -1
  70. package/dist/types.js +0 -2
  71. package/dist/types.js.map +0 -1
@@ -1,94 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect } from 'react';
3
- import { FormActions } from './FormActions';
4
- import { FormField } from './FormField';
5
- import { FormStepProgress } from './FormStepProgress';
6
- import { useFieldOptions } from './hooks/useFieldOptions';
7
- import { useFormEngine } from './hooks/useFormEngine';
8
- export function FormRenderer({ schema, initialValues, onSubmit, onCancel, onStepChange, onFieldChange, validators, errors: externalErrors, loading = false, components, optionsProviders, ActionsComponent, ProgressComponent, onAnalyticsEvent, }) {
9
- const engineOptions = { validators };
10
- const engine = useFormEngine(schema, initialValues, engineOptions);
11
- const resolvedOptions = useFieldOptions(engine.visibleFields, engine.values, optionsProviders);
12
- useEffect(() => {
13
- if (externalErrors) {
14
- engine.setErrors(externalErrors);
15
- }
16
- }, [externalErrors, engine]);
17
- function handleFieldUpdate(key, value) {
18
- engine.setValue(key, value);
19
- onFieldChange?.(key, value, engine.values);
20
- }
21
- function handleFieldFocus(key) {
22
- onAnalyticsEvent?.({ type: 'field_focused', fieldKey: key });
23
- }
24
- function handleFieldBlur(key) {
25
- onAnalyticsEvent?.({
26
- type: 'field_blurred',
27
- fieldKey: key,
28
- hasValue: engine.values[key] !== undefined && engine.values[key] !== '',
29
- });
30
- }
31
- function handleSubmit(e) {
32
- e.preventDefault();
33
- const allErrors = engine.validate();
34
- for (const [key, msg] of Object.entries(allErrors)) {
35
- onAnalyticsEvent?.({ type: 'field_error', fieldKey: key, error: msg });
36
- }
37
- if (Object.keys(allErrors).length > 0)
38
- return;
39
- const submitValues = engine.getSubmitValues();
40
- onAnalyticsEvent?.({ type: 'form_submitted', fieldCount: Object.keys(submitValues).length });
41
- onSubmit(submitValues);
42
- }
43
- function handleNext() {
44
- const prevStep = engine.currentStep;
45
- const success = engine.nextStep();
46
- if (success) {
47
- if (prevStep) {
48
- onAnalyticsEvent?.({ type: 'step_completed', stepId: prevStep.id });
49
- }
50
- if (engine.currentStep) {
51
- onStepChange?.(engine.currentStep.id, 'next');
52
- onAnalyticsEvent?.({
53
- type: 'step_viewed',
54
- stepId: engine.currentStep.id,
55
- stepIndex: engine.currentStepIndex,
56
- });
57
- }
58
- }
59
- }
60
- function handlePrev() {
61
- engine.prevStep();
62
- if (engine.currentStep) {
63
- onStepChange?.(engine.currentStep.id, 'back');
64
- }
65
- }
66
- function handleCancel() {
67
- onCancel?.();
68
- }
69
- const ProgressComp = ProgressComponent ?? FormStepProgress;
70
- const ActionsComp = ActionsComponent ?? FormActions;
71
- const effectiveIsLastStep = engine.isLastStep || !engine.isMultiStep;
72
- const computedPrimaryLabel = engine.isMultiStep && !effectiveIsLastStep
73
- ? (engine.currentStep?.next?.label ?? 'Continue')
74
- : (schema.submit?.label ?? 'Submit');
75
- const computedShowBack = engine.isMultiStep && !engine.isFirstStep && engine.currentStep?.back !== false;
76
- const computedBackLabel = typeof engine.currentStep?.back === 'object'
77
- ? (engine.currentStep.back.label ?? 'Back')
78
- : 'Back';
79
- function handlePrimary() {
80
- if (engine.isMultiStep && !effectiveIsLastStep) {
81
- handleNext();
82
- }
83
- else {
84
- handleSubmit({ preventDefault: () => { } });
85
- }
86
- }
87
- return (_jsxs("form", { className: "fh-form", onSubmit: handleSubmit, children: [engine.isMultiStep && (_jsx(ProgressComp, { current: engine.progress.current, total: engine.progress.total, stepTitle: engine.currentStep?.title, stepDescription: engine.currentStep?.description })), _jsx("div", { className: "fh-form__fields", children: engine.visibleFields.map((field) => {
88
- const fieldWithOptions = resolvedOptions[field.key]
89
- ? { ...field, options: resolvedOptions[field.key] }
90
- : field;
91
- return (_jsx(FormField, { field: fieldWithOptions, value: engine.values[field.key], error: engine.errors[field.key], loading: engine.fieldLoading[field.key], disabled: loading, components: components, onChange: (v) => handleFieldUpdate(field.key, v), onBlur: () => handleFieldBlur(field.key), onFocus: () => handleFieldFocus(field.key) }, field.key));
92
- }) }), engine.topLevelErrors.length > 0 && (_jsx("div", { className: "fh-form__top-errors", children: engine.topLevelErrors.map((error) => (_jsx("p", { className: "fh-form__top-error", children: error }, error))) })), _jsx(ActionsComp, { submitAction: schema.submit, backAction: engine.currentStep?.back, cancelAction: schema.cancel, isFirstStep: engine.isFirstStep, isLastStep: effectiveIsLastStep, isMultiStep: engine.isMultiStep, loading: loading, values: engine.values, onSubmit: () => handleSubmit({ preventDefault: () => { } }), onNext: handleNext, onPrev: handlePrev, onCancel: handleCancel, primaryLabel: computedPrimaryLabel, showBack: computedShowBack, backLabel: computedBackLabel, onPrimary: handlePrimary })] }));
93
- }
94
- //# sourceMappingURL=FormRenderer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FormRenderer.js","sourceRoot":"","sources":["../src/FormRenderer.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { FormStepProgressProps } from './types';
2
- export declare function FormStepProgress({ current, total, stepTitle, stepDescription, }: FormStepProgressProps): import("react/jsx-runtime").JSX.Element;
3
- //# sourceMappingURL=FormStepProgress.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FormStepProgress.d.ts","sourceRoot":"","sources":["../src/FormStepProgress.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErD,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,KAAK,EACL,SAAS,EACT,eAAe,GAChB,EAAE,qBAAqB,2CAiBvB"}
@@ -1,6 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- export function FormStepProgress({ current, total, stepTitle, stepDescription, }) {
3
- const percent = (current / total) * 100;
4
- return (_jsxs("div", { className: "fh-step-progress", children: [_jsx("div", { className: "fh-step-progress__bar", children: _jsx("div", { className: "fh-step-progress__fill", style: { width: `${percent}%` } }) }), _jsx("div", { className: "fh-step-progress__info", children: _jsxs("span", { className: "fh-step-progress__counter", children: ["Step ", current, " of ", total] }) }), stepTitle && _jsx("h3", { className: "fh-step-progress__title", children: stepTitle }), stepDescription && _jsx("p", { className: "fh-step-progress__description", children: stepDescription })] }));
5
- }
6
- //# sourceMappingURL=FormStepProgress.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FormStepProgress.js","sourceRoot":"","sources":["../src/FormStepProgress.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,gBAAgB,CAAC,EAC/B,OAAO,EACP,KAAK,EACL,SAAS,EACT,eAAe,GACO;IACtB,MAAM,OAAO,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC;IAExC,OAAO,CACL,eAAK,SAAS,EAAC,kBAAkB,aAC/B,cAAK,SAAS,EAAC,uBAAuB,YACpC,cAAK,SAAS,EAAC,wBAAwB,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,GAAG,EAAE,GAAI,GACvE,EACN,cAAK,SAAS,EAAC,wBAAwB,YACrC,gBAAM,SAAS,EAAC,2BAA2B,sBACnC,OAAO,UAAM,KAAK,IACnB,GACH,EACL,SAAS,IAAI,aAAI,SAAS,EAAC,yBAAyB,YAAE,SAAS,GAAM,EACrE,eAAe,IAAI,YAAG,SAAS,EAAC,+BAA+B,YAAE,eAAe,GAAK,IAClF,CACP,CAAC;AACJ,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { FieldComponentProps } from '../types';
2
- export declare function CheckboxField({ field, value, error, loading, disabled, onChange, onBlur, onFocus, }: FieldComponentProps): import("react/jsx-runtime").JSX.Element;
3
- //# sourceMappingURL=CheckboxField.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CheckboxField.d.ts","sourceRoot":"","sources":["../../src/fields/CheckboxField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpD,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,GACR,EAAE,mBAAmB,2CAuCrB"}
@@ -1,9 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- export function CheckboxField({ field, value, error, loading, disabled, onChange, onBlur, onFocus, }) {
3
- const inputId = field.key;
4
- const helperId = `${field.key}-helper`;
5
- const errorId = `${field.key}-error`;
6
- const describedBy = error ? errorId : field.helperText ? helperId : undefined;
7
- return (_jsxs("div", { className: "fh-field fh-field--checkbox", children: [_jsxs("div", { className: "fh-field__checkbox-wrapper", children: [_jsx("input", { id: inputId, type: "checkbox", className: "fh-field__checkbox", checked: !!value, disabled: disabled || loading, "aria-invalid": !!error, "aria-describedby": describedBy, onChange: (e) => onChange(e.target.checked), onBlur: onBlur, onFocus: onFocus }), field.label && (_jsx("label", { className: "fh-field__label", htmlFor: inputId, children: field.label }))] }), error && (_jsx("p", { id: errorId, className: "fh-field__error", role: "alert", children: error })), !error && field.helperText && (_jsx("p", { id: helperId, className: "fh-field__helper", children: field.helperText }))] }));
8
- }
9
- //# sourceMappingURL=CheckboxField.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CheckboxField.js","sourceRoot":"","sources":["../../src/fields/CheckboxField.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,aAAa,CAAC,EAC5B,KAAK,EACL,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,GACa;IACpB,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC;IAC1B,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,GAAG,SAAS,CAAC;IACvC,MAAM,OAAO,GAAG,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC;IACrC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAE9E,OAAO,CACL,eAAK,SAAS,EAAC,6BAA6B,aAC1C,eAAK,SAAS,EAAC,4BAA4B,aACzC,gBACE,EAAE,EAAE,OAAO,EACX,IAAI,EAAC,UAAU,EACf,SAAS,EAAC,oBAAoB,EAC9B,OAAO,EAAE,CAAC,CAAC,KAAK,EAChB,QAAQ,EAAE,QAAQ,IAAI,OAAO,kBACf,CAAC,CAAC,KAAK,sBACH,WAAW,EAC7B,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAC3C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GAChB,EACD,KAAK,CAAC,KAAK,IAAI,CACd,gBAAO,SAAS,EAAC,iBAAiB,EAAC,OAAO,EAAE,OAAO,YAChD,KAAK,CAAC,KAAK,GACN,CACT,IACG,EACL,KAAK,IAAI,CACR,YAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAC,iBAAiB,EAAC,IAAI,EAAC,OAAO,YACrD,KAAK,GACJ,CACL,EACA,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,IAAI,CAC7B,YAAG,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAC,kBAAkB,YAC1C,KAAK,CAAC,UAAU,GACf,CACL,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { FieldComponentProps } from '../types';
2
- export declare function DateField({ field, value, error, loading, disabled, onChange, onBlur, onFocus, }: FieldComponentProps): import("react/jsx-runtime").JSX.Element;
3
- //# sourceMappingURL=DateField.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DateField.d.ts","sourceRoot":"","sources":["../../src/fields/DateField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpD,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,GACR,EAAE,mBAAmB,2CAsCrB"}
@@ -1,9 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- export function DateField({ field, value, error, loading, disabled, onChange, onBlur, onFocus, }) {
3
- const inputId = field.key;
4
- const helperId = `${field.key}-helper`;
5
- const errorId = `${field.key}-error`;
6
- const describedBy = error ? errorId : field.helperText ? helperId : undefined;
7
- return (_jsxs("div", { className: "fh-field", children: [field.label && (_jsxs("label", { className: "fh-field__label", htmlFor: inputId, children: [field.label, field.validation?.required && _jsx("span", { className: "fh-field__required", "aria-hidden": "true", children: " *" })] })), _jsx("input", { id: inputId, type: "date", className: "fh-field__input fh-field__input--date", value: String(value ?? ''), disabled: disabled || loading, "aria-invalid": !!error, "aria-describedby": describedBy, onChange: (e) => onChange(e.target.value), onBlur: onBlur, onFocus: onFocus }), error && (_jsx("p", { id: errorId, className: "fh-field__error", role: "alert", children: error })), !error && field.helperText && (_jsx("p", { id: helperId, className: "fh-field__helper", children: field.helperText }))] }));
8
- }
9
- //# sourceMappingURL=DateField.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DateField.js","sourceRoot":"","sources":["../../src/fields/DateField.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,SAAS,CAAC,EACxB,KAAK,EACL,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,GACa;IACpB,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC;IAC1B,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,GAAG,SAAS,CAAC;IACvC,MAAM,OAAO,GAAG,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC;IACrC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAE9E,OAAO,CACL,eAAK,SAAS,EAAC,UAAU,aACtB,KAAK,CAAC,KAAK,IAAI,CACd,iBAAO,SAAS,EAAC,iBAAiB,EAAC,OAAO,EAAE,OAAO,aAChD,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,UAAU,EAAE,QAAQ,IAAI,eAAM,SAAS,EAAC,oBAAoB,iBAAa,MAAM,mBAAU,IAC1F,CACT,EACD,gBACE,EAAE,EAAE,OAAO,EACX,IAAI,EAAC,MAAM,EACX,SAAS,EAAC,uCAAuC,EACjD,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,EAC1B,QAAQ,EAAE,QAAQ,IAAI,OAAO,kBACf,CAAC,CAAC,KAAK,sBACH,WAAW,EAC7B,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACzC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GAChB,EACD,KAAK,IAAI,CACR,YAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAC,iBAAiB,EAAC,IAAI,EAAC,OAAO,YACrD,KAAK,GACJ,CACL,EACA,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,IAAI,CAC7B,YAAG,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAC,kBAAkB,YAC1C,KAAK,CAAC,UAAU,GACf,CACL,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { FieldComponentProps } from '../types';
2
- export declare function FileField({ field, error, loading, disabled, onChange, onBlur, onFocus, }: FieldComponentProps): import("react/jsx-runtime").JSX.Element;
3
- //# sourceMappingURL=FileField.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FileField.d.ts","sourceRoot":"","sources":["../../src/fields/FileField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpD,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,GACR,EAAE,mBAAmB,2CAyCrB"}
@@ -1,12 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- export function FileField({ field, error, loading, disabled, onChange, onBlur, onFocus, }) {
3
- const inputId = field.key;
4
- const helperId = `${field.key}-helper`;
5
- const errorId = `${field.key}-error`;
6
- const describedBy = error ? errorId : field.helperText ? helperId : undefined;
7
- return (_jsxs("div", { className: "fh-field", children: [field.label && (_jsxs("label", { className: "fh-field__label", htmlFor: inputId, children: [field.label, field.validation?.required && _jsx("span", { className: "fh-field__required", "aria-hidden": "true", children: " *" })] })), _jsx("input", { id: inputId, type: "file", className: "fh-field__input fh-field__input--file", accept: field.accept, disabled: disabled || loading, "aria-invalid": !!error, "aria-describedby": describedBy, onChange: (e) => {
8
- const files = e.target.files;
9
- onChange(files && files.length > 0 ? files[0] : null);
10
- }, onBlur: onBlur, onFocus: onFocus }), error && (_jsx("p", { id: errorId, className: "fh-field__error", role: "alert", children: error })), !error && field.helperText && (_jsx("p", { id: helperId, className: "fh-field__helper", children: field.helperText }))] }));
11
- }
12
- //# sourceMappingURL=FileField.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FileField.js","sourceRoot":"","sources":["../../src/fields/FileField.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,SAAS,CAAC,EACxB,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,GACa;IACpB,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC;IAC1B,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,GAAG,SAAS,CAAC;IACvC,MAAM,OAAO,GAAG,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC;IACrC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAE9E,OAAO,CACL,eAAK,SAAS,EAAC,UAAU,aACtB,KAAK,CAAC,KAAK,IAAI,CACd,iBAAO,SAAS,EAAC,iBAAiB,EAAC,OAAO,EAAE,OAAO,aAChD,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,UAAU,EAAE,QAAQ,IAAI,eAAM,SAAS,EAAC,oBAAoB,iBAAa,MAAM,mBAAU,IAC1F,CACT,EACD,gBACE,EAAE,EAAE,OAAO,EACX,IAAI,EAAC,MAAM,EACX,SAAS,EAAC,uCAAuC,EACjD,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,QAAQ,EAAE,QAAQ,IAAI,OAAO,kBACf,CAAC,CAAC,KAAK,sBACH,WAAW,EAC7B,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;oBACd,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;oBAC7B,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACxD,CAAC,EACD,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GAChB,EACD,KAAK,IAAI,CACR,YAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAC,iBAAiB,EAAC,IAAI,EAAC,OAAO,YACrD,KAAK,GACJ,CACL,EACA,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,IAAI,CAC7B,YAAG,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAC,kBAAkB,YAC1C,KAAK,CAAC,UAAU,GACf,CACL,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { FieldComponentProps } from '../types';
2
- export declare function MultiselectField({ field, value, error, loading, disabled, onChange, onBlur, onFocus, }: FieldComponentProps): import("react/jsx-runtime").JSX.Element;
3
- //# sourceMappingURL=MultiselectField.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MultiselectField.d.ts","sourceRoot":"","sources":["../../src/fields/MultiselectField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpD,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,GACR,EAAE,mBAAmB,2CAwDrB"}
@@ -1,20 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- export function MultiselectField({ field, value, error, loading, disabled, onChange, onBlur, onFocus, }) {
3
- const groupId = field.key;
4
- const helperId = `${field.key}-helper`;
5
- const errorId = `${field.key}-error`;
6
- const describedBy = error ? errorId : field.helperText ? helperId : undefined;
7
- const options = field.options ?? [];
8
- const selected = Array.isArray(value) ? value : [];
9
- function handleToggle(optValue) {
10
- const next = selected.includes(optValue)
11
- ? selected.filter((v) => v !== optValue)
12
- : [...selected, optValue];
13
- onChange(next);
14
- }
15
- return (_jsxs("fieldset", { className: "fh-field fh-field--multiselect", "aria-invalid": !!error || undefined, "aria-describedby": describedBy, children: [field.label && _jsx("legend", { className: "fh-field__label", children: field.label }), _jsx("div", { className: "fh-field__multiselect-group", children: options.map((opt) => {
16
- const optionId = `${groupId}-${opt.value}`;
17
- return (_jsxs("div", { className: "fh-field__multiselect-option", children: [_jsx("input", { id: optionId, type: "checkbox", className: "fh-field__checkbox", checked: selected.includes(opt.value), disabled: disabled || loading, onChange: () => handleToggle(opt.value), onBlur: onBlur, onFocus: onFocus }), _jsx("label", { className: "fh-field__multiselect-label", htmlFor: optionId, children: opt.label })] }, opt.value));
18
- }) }), error && (_jsx("p", { id: errorId, className: "fh-field__error", role: "alert", children: error })), !error && field.helperText && (_jsx("p", { id: helperId, className: "fh-field__helper", children: field.helperText }))] }));
19
- }
20
- //# sourceMappingURL=MultiselectField.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MultiselectField.js","sourceRoot":"","sources":["../../src/fields/MultiselectField.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,gBAAgB,CAAC,EAC/B,KAAK,EACL,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,GACa;IACpB,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC;IAC1B,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,GAAG,SAAS,CAAC;IACvC,MAAM,OAAO,GAAG,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC;IACrC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAA6B,CAAC,CAAC,CAAC,EAAE,CAAC;IAE5E,SAAS,YAAY,CAAC,QAAgB;QACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACtC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC;YACxC,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC5B,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,CACL,oBACE,SAAS,EAAC,gCAAgC,kBAC5B,CAAC,CAAC,KAAK,IAAI,SAAS,sBAChB,WAAW,aAE5B,KAAK,CAAC,KAAK,IAAI,iBAAQ,SAAS,EAAC,iBAAiB,YAAE,KAAK,CAAC,KAAK,GAAU,EAC1E,cAAK,SAAS,EAAC,6BAA6B,YACzC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;oBACnB,MAAM,QAAQ,GAAG,GAAG,OAAO,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;oBAC3C,OAAO,CACL,eAAqB,SAAS,EAAC,8BAA8B,aAC3D,gBACE,EAAE,EAAE,QAAQ,EACZ,IAAI,EAAC,UAAU,EACf,SAAS,EAAC,oBAAoB,EAC9B,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EACrC,QAAQ,EAAE,QAAQ,IAAI,OAAO,EAC7B,QAAQ,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EACvC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GAChB,EACF,gBAAO,SAAS,EAAC,6BAA6B,EAAC,OAAO,EAAE,QAAQ,YAC7D,GAAG,CAAC,KAAK,GACJ,KAbA,GAAG,CAAC,KAAK,CAcb,CACP,CAAC;gBACJ,CAAC,CAAC,GACE,EACL,KAAK,IAAI,CACR,YAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAC,iBAAiB,EAAC,IAAI,EAAC,OAAO,YACrD,KAAK,GACJ,CACL,EACA,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,IAAI,CAC7B,YAAG,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAC,kBAAkB,YAC1C,KAAK,CAAC,UAAU,GACf,CACL,IACQ,CACZ,CAAC;AACJ,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { FieldComponentProps } from '../types';
2
- export declare function RadioField({ field, value, error, loading, disabled, onChange, onBlur, onFocus, }: FieldComponentProps): import("react/jsx-runtime").JSX.Element;
3
- //# sourceMappingURL=RadioField.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RadioField.d.ts","sourceRoot":"","sources":["../../src/fields/RadioField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpD,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,GACR,EAAE,mBAAmB,2CAkDrB"}
@@ -1,13 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- export function RadioField({ field, value, error, loading, disabled, onChange, onBlur, onFocus, }) {
3
- const groupId = field.key;
4
- const helperId = `${field.key}-helper`;
5
- const errorId = `${field.key}-error`;
6
- const describedBy = error ? errorId : field.helperText ? helperId : undefined;
7
- const options = field.options ?? [];
8
- return (_jsxs("fieldset", { className: "fh-field fh-field--radio", "aria-invalid": !!error || undefined, "aria-describedby": describedBy, children: [field.label && _jsx("legend", { className: "fh-field__label", children: field.label }), _jsx("div", { className: "fh-field__radio-group", children: options.map((opt) => {
9
- const optionId = `${groupId}-${opt.value}`;
10
- return (_jsxs("div", { className: "fh-field__radio-option", children: [_jsx("input", { id: optionId, type: "radio", className: "fh-field__radio", name: groupId, value: opt.value, checked: String(value) === String(opt.value), disabled: disabled || loading, onChange: () => onChange(opt.value), onBlur: onBlur, onFocus: onFocus }), _jsx("label", { className: "fh-field__radio-label", htmlFor: optionId, children: opt.label })] }, opt.value));
11
- }) }), error && (_jsx("p", { id: errorId, className: "fh-field__error", role: "alert", children: error })), !error && field.helperText && (_jsx("p", { id: helperId, className: "fh-field__helper", children: field.helperText }))] }));
12
- }
13
- //# sourceMappingURL=RadioField.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RadioField.js","sourceRoot":"","sources":["../../src/fields/RadioField.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,UAAU,CAAC,EACzB,KAAK,EACL,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,GACa;IACpB,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC;IAC1B,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,GAAG,SAAS,CAAC;IACvC,MAAM,OAAO,GAAG,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC;IACrC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;IAEpC,OAAO,CACL,oBACE,SAAS,EAAC,0BAA0B,kBACtB,CAAC,CAAC,KAAK,IAAI,SAAS,sBAChB,WAAW,aAE5B,KAAK,CAAC,KAAK,IAAI,iBAAQ,SAAS,EAAC,iBAAiB,YAAE,KAAK,CAAC,KAAK,GAAU,EAC1E,cAAK,SAAS,EAAC,uBAAuB,YACnC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;oBACnB,MAAM,QAAQ,GAAG,GAAG,OAAO,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;oBAC3C,OAAO,CACL,eAAqB,SAAS,EAAC,wBAAwB,aACrD,gBACE,EAAE,EAAE,QAAQ,EACZ,IAAI,EAAC,OAAO,EACZ,SAAS,EAAC,iBAAiB,EAC3B,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,GAAG,CAAC,KAAK,EAChB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAC5C,QAAQ,EAAE,QAAQ,IAAI,OAAO,EAC7B,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EACnC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GAChB,EACF,gBAAO,SAAS,EAAC,uBAAuB,EAAC,OAAO,EAAE,QAAQ,YACvD,GAAG,CAAC,KAAK,GACJ,KAfA,GAAG,CAAC,KAAK,CAgBb,CACP,CAAC;gBACJ,CAAC,CAAC,GACE,EACL,KAAK,IAAI,CACR,YAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAC,iBAAiB,EAAC,IAAI,EAAC,OAAO,YACrD,KAAK,GACJ,CACL,EACA,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,IAAI,CAC7B,YAAG,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAC,kBAAkB,YAC1C,KAAK,CAAC,UAAU,GACf,CACL,IACQ,CACZ,CAAC;AACJ,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { FieldComponentProps } from '../types';
2
- export declare function SelectField({ field, value, error, loading, disabled, onChange, onBlur, onFocus, }: FieldComponentProps): import("react/jsx-runtime").JSX.Element;
3
- //# sourceMappingURL=SelectField.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SelectField.d.ts","sourceRoot":"","sources":["../../src/fields/SelectField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpD,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,GACR,EAAE,mBAAmB,2CAiDrB"}
@@ -1,10 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- export function SelectField({ field, value, error, loading, disabled, onChange, onBlur, onFocus, }) {
3
- const inputId = field.key;
4
- const helperId = `${field.key}-helper`;
5
- const errorId = `${field.key}-error`;
6
- const describedBy = error ? errorId : field.helperText ? helperId : undefined;
7
- const options = field.options ?? [];
8
- return (_jsxs("div", { className: "fh-field", children: [field.label && (_jsxs("label", { className: "fh-field__label", htmlFor: inputId, children: [field.label, field.validation?.required && _jsx("span", { className: "fh-field__required", "aria-hidden": "true", children: " *" })] })), _jsxs("select", { id: inputId, className: "fh-field__input fh-field__input--select", value: value ?? '', disabled: disabled || loading, "aria-invalid": !!error, "aria-describedby": describedBy, onChange: (e) => onChange(e.target.value), onBlur: onBlur, onFocus: onFocus, children: [field.placeholder && (_jsx("option", { value: "", disabled: true, children: field.placeholder })), options.map((opt) => (_jsx("option", { value: opt.value, children: opt.label }, opt.value)))] }), error && (_jsx("p", { id: errorId, className: "fh-field__error", role: "alert", children: error })), !error && field.helperText && (_jsx("p", { id: helperId, className: "fh-field__helper", children: field.helperText }))] }));
9
- }
10
- //# sourceMappingURL=SelectField.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SelectField.js","sourceRoot":"","sources":["../../src/fields/SelectField.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,WAAW,CAAC,EAC1B,KAAK,EACL,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,GACa;IACpB,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC;IAC1B,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,GAAG,SAAS,CAAC;IACvC,MAAM,OAAO,GAAG,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC;IACrC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;IAEpC,OAAO,CACL,eAAK,SAAS,EAAC,UAAU,aACtB,KAAK,CAAC,KAAK,IAAI,CACd,iBAAO,SAAS,EAAC,iBAAiB,EAAC,OAAO,EAAE,OAAO,aAChD,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,UAAU,EAAE,QAAQ,IAAI,eAAM,SAAS,EAAC,oBAAoB,iBAAa,MAAM,mBAAU,IAC1F,CACT,EACD,kBACE,EAAE,EAAE,OAAO,EACX,SAAS,EAAC,yCAAyC,EACnD,KAAK,EAAG,KAAgB,IAAI,EAAE,EAC9B,QAAQ,EAAE,QAAQ,IAAI,OAAO,kBACf,CAAC,CAAC,KAAK,sBACH,WAAW,EAC7B,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACzC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,aAEf,KAAK,CAAC,WAAW,IAAI,CACpB,iBAAQ,KAAK,EAAC,EAAE,EAAC,QAAQ,kBACtB,KAAK,CAAC,WAAW,GACX,CACV,EACA,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACpB,iBAAwB,KAAK,EAAE,GAAG,CAAC,KAAK,YACrC,GAAG,CAAC,KAAK,IADC,GAAG,CAAC,KAAK,CAEb,CACV,CAAC,IACK,EACR,KAAK,IAAI,CACR,YAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAC,iBAAiB,EAAC,IAAI,EAAC,OAAO,YACrD,KAAK,GACJ,CACL,EACA,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,IAAI,CAC7B,YAAG,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAC,kBAAkB,YAC1C,KAAK,CAAC,UAAU,GACf,CACL,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { FieldComponentProps } from '../types';
2
- export declare function SwitchField({ field, value, error, loading, disabled, onChange, onBlur, onFocus, }: FieldComponentProps): import("react/jsx-runtime").JSX.Element;
3
- //# sourceMappingURL=SwitchField.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SwitchField.d.ts","sourceRoot":"","sources":["../../src/fields/SwitchField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpD,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,GACR,EAAE,mBAAmB,2CAwCrB"}
@@ -1,9 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- export function SwitchField({ field, value, error, loading, disabled, onChange, onBlur, onFocus, }) {
3
- const inputId = field.key;
4
- const helperId = `${field.key}-helper`;
5
- const errorId = `${field.key}-error`;
6
- const describedBy = error ? errorId : field.helperText ? helperId : undefined;
7
- return (_jsxs("div", { className: "fh-field fh-field--switch", children: [_jsxs("div", { className: "fh-field__switch-wrapper", children: [_jsx("input", { id: inputId, type: "checkbox", role: "switch", className: "fh-field__switch", checked: !!value, disabled: disabled || loading, "aria-invalid": !!error, "aria-describedby": describedBy, onChange: (e) => onChange(e.target.checked), onBlur: onBlur, onFocus: onFocus }), field.label && (_jsx("label", { className: "fh-field__label", htmlFor: inputId, children: field.label }))] }), error && (_jsx("p", { id: errorId, className: "fh-field__error", role: "alert", children: error })), !error && field.helperText && (_jsx("p", { id: helperId, className: "fh-field__helper", children: field.helperText }))] }));
8
- }
9
- //# sourceMappingURL=SwitchField.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SwitchField.js","sourceRoot":"","sources":["../../src/fields/SwitchField.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,WAAW,CAAC,EAC1B,KAAK,EACL,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,GACa;IACpB,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC;IAC1B,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,GAAG,SAAS,CAAC;IACvC,MAAM,OAAO,GAAG,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC;IACrC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAE9E,OAAO,CACL,eAAK,SAAS,EAAC,2BAA2B,aACxC,eAAK,SAAS,EAAC,0BAA0B,aACvC,gBACE,EAAE,EAAE,OAAO,EACX,IAAI,EAAC,UAAU,EACf,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,kBAAkB,EAC5B,OAAO,EAAE,CAAC,CAAC,KAAK,EAChB,QAAQ,EAAE,QAAQ,IAAI,OAAO,kBACf,CAAC,CAAC,KAAK,sBACH,WAAW,EAC7B,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAC3C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GAChB,EACD,KAAK,CAAC,KAAK,IAAI,CACd,gBAAO,SAAS,EAAC,iBAAiB,EAAC,OAAO,EAAE,OAAO,YAChD,KAAK,CAAC,KAAK,GACN,CACT,IACG,EACL,KAAK,IAAI,CACR,YAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAC,iBAAiB,EAAC,IAAI,EAAC,OAAO,YACrD,KAAK,GACJ,CACL,EACA,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,IAAI,CAC7B,YAAG,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAC,kBAAkB,YAC1C,KAAK,CAAC,UAAU,GACf,CACL,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { FieldComponentProps } from '../types';
2
- export declare function TextField({ field, value, error, loading, disabled, onChange, onBlur, onFocus, }: FieldComponentProps): import("react/jsx-runtime").JSX.Element;
3
- //# sourceMappingURL=TextField.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TextField.d.ts","sourceRoot":"","sources":["../../src/fields/TextField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpD,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,GACR,EAAE,mBAAmB,2CAuDrB"}
@@ -1,22 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- export function TextField({ field, value, error, loading, disabled, onChange, onBlur, onFocus, }) {
3
- const inputId = field.key;
4
- const helperId = `${field.key}-helper`;
5
- const errorId = `${field.key}-error`;
6
- const describedBy = error ? errorId : field.helperText ? helperId : undefined;
7
- const handleChange = (e) => {
8
- const v = e.target.value;
9
- onChange(field.type === 'number' ? Number(v) : v);
10
- };
11
- const inputType = field.type === 'email'
12
- ? 'email'
13
- : field.type === 'phone'
14
- ? 'tel'
15
- : field.type === 'number'
16
- ? 'number'
17
- : field.type === 'password'
18
- ? 'password'
19
- : 'text';
20
- return (_jsxs("div", { className: "fh-field", children: [field.label && (_jsxs("label", { className: "fh-field__label", htmlFor: inputId, children: [field.label, field.validation?.required && _jsx("span", { className: "fh-field__required", "aria-hidden": "true", children: " *" })] })), _jsx("input", { id: inputId, type: inputType, className: "fh-field__input", value: value != null ? String(value) : '', placeholder: field.placeholder ?? field.mask, disabled: disabled || loading, "aria-invalid": !!error, "aria-describedby": describedBy, onChange: handleChange, onBlur: onBlur, onFocus: onFocus }), error && (_jsx("p", { id: errorId, className: "fh-field__error", role: "alert", children: error })), !error && field.helperText && (_jsx("p", { id: helperId, className: "fh-field__helper", children: field.helperText }))] }));
21
- }
22
- //# sourceMappingURL=TextField.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TextField.js","sourceRoot":"","sources":["../../src/fields/TextField.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,SAAS,CAAC,EACxB,KAAK,EACL,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,GACa;IACpB,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC;IAC1B,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,GAAG,SAAS,CAAC;IACvC,MAAM,OAAO,GAAG,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC;IACrC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAE9E,MAAM,YAAY,GAAG,CAAC,CAAsC,EAAE,EAAE;QAC9D,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QACzB,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC;IAEF,MAAM,SAAS,GACb,KAAK,CAAC,IAAI,KAAK,OAAO;QACpB,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO;YACtB,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ;gBACvB,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU;oBACzB,CAAC,CAAC,UAAU;oBACZ,CAAC,CAAC,MAAM,CAAC;IAEnB,OAAO,CACL,eAAK,SAAS,EAAC,UAAU,aACtB,KAAK,CAAC,KAAK,IAAI,CACd,iBAAO,SAAS,EAAC,iBAAiB,EAAC,OAAO,EAAE,OAAO,aAChD,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,UAAU,EAAE,QAAQ,IAAI,eAAM,SAAS,EAAC,oBAAoB,iBAAa,MAAM,mBAAU,IAC1F,CACT,EACD,gBACE,EAAE,EAAE,OAAO,EACX,IAAI,EAAE,SAAS,EACf,SAAS,EAAC,iBAAiB,EAC3B,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EACzC,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,IAAI,EAC5C,QAAQ,EAAE,QAAQ,IAAI,OAAO,kBACf,CAAC,CAAC,KAAK,sBACH,WAAW,EAC7B,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GAChB,EACD,KAAK,IAAI,CACR,YAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAC,iBAAiB,EAAC,IAAI,EAAC,OAAO,YACrD,KAAK,GACJ,CACL,EACA,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,IAAI,CAC7B,YAAG,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAC,kBAAkB,YAC1C,KAAK,CAAC,UAAU,GACf,CACL,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { FieldComponentProps } from '../types';
2
- export declare function TextareaField({ field, value, error, loading, disabled, onChange, onBlur, onFocus, }: FieldComponentProps): import("react/jsx-runtime").JSX.Element;
3
- //# sourceMappingURL=TextareaField.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TextareaField.d.ts","sourceRoot":"","sources":["../../src/fields/TextareaField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAIpD,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,GACR,EAAE,mBAAmB,2CAuCrB"}
@@ -1,10 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- const DEFAULT_ROWS = 3;
3
- export function TextareaField({ field, value, error, loading, disabled, onChange, onBlur, onFocus, }) {
4
- const inputId = field.key;
5
- const helperId = `${field.key}-helper`;
6
- const errorId = `${field.key}-error`;
7
- const describedBy = error ? errorId : field.helperText ? helperId : undefined;
8
- return (_jsxs("div", { className: "fh-field", children: [field.label && (_jsxs("label", { className: "fh-field__label", htmlFor: inputId, children: [field.label, field.validation?.required && _jsx("span", { className: "fh-field__required", "aria-hidden": "true", children: " *" })] })), _jsx("textarea", { id: inputId, className: "fh-field__input fh-field__input--textarea", value: value ?? '', placeholder: field.placeholder, rows: field.rows ?? DEFAULT_ROWS, disabled: disabled || loading, "aria-invalid": !!error, "aria-describedby": describedBy, onChange: (e) => onChange(e.target.value), onBlur: onBlur, onFocus: onFocus }), error && (_jsx("p", { id: errorId, className: "fh-field__error", role: "alert", children: error })), !error && field.helperText && (_jsx("p", { id: helperId, className: "fh-field__helper", children: field.helperText }))] }));
9
- }
10
- //# sourceMappingURL=TextareaField.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TextareaField.js","sourceRoot":"","sources":["../../src/fields/TextareaField.tsx"],"names":[],"mappings":";AAEA,MAAM,YAAY,GAAG,CAAC,CAAC;AAEvB,MAAM,UAAU,aAAa,CAAC,EAC5B,KAAK,EACL,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,GACa;IACpB,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC;IAC1B,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,GAAG,SAAS,CAAC;IACvC,MAAM,OAAO,GAAG,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC;IACrC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAE9E,OAAO,CACL,eAAK,SAAS,EAAC,UAAU,aACtB,KAAK,CAAC,KAAK,IAAI,CACd,iBAAO,SAAS,EAAC,iBAAiB,EAAC,OAAO,EAAE,OAAO,aAChD,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,UAAU,EAAE,QAAQ,IAAI,eAAM,SAAS,EAAC,oBAAoB,iBAAa,MAAM,mBAAU,IAC1F,CACT,EACD,mBACE,EAAE,EAAE,OAAO,EACX,SAAS,EAAC,2CAA2C,EACrD,KAAK,EAAG,KAAgB,IAAI,EAAE,EAC9B,WAAW,EAAE,KAAK,CAAC,WAAW,EAC9B,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,YAAY,EAChC,QAAQ,EAAE,QAAQ,IAAI,OAAO,kBACf,CAAC,CAAC,KAAK,sBACH,WAAW,EAC7B,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACzC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GAChB,EACD,KAAK,IAAI,CACR,YAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAC,iBAAiB,EAAC,IAAI,EAAC,OAAO,YACrD,KAAK,GACJ,CACL,EACA,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,IAAI,CAC7B,YAAG,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAC,kBAAkB,YAC1C,KAAK,CAAC,UAAU,GACf,CACL,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -1,4 +0,0 @@
1
- import type { FieldOption, FormField } from '@formhaus/core';
2
- import type { OptionsProvider } from '../types';
3
- export declare function useFieldOptions(fields: FormField[], values: Record<string, unknown>, providers?: Record<string, OptionsProvider>): Record<string, FieldOption[]>;
4
- //# sourceMappingURL=useFieldOptions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useFieldOptions.d.ts","sourceRoot":"","sources":["../../src/hooks/useFieldOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,EAAE,EACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAC1C,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAuC/B"}
@@ -1,39 +0,0 @@
1
- import { useEffect, useRef, useState } from 'react';
2
- export function useFieldOptions(fields, values, providers) {
3
- const [resolved, setResolved] = useState({});
4
- const lastDepsRef = useRef(new Map());
5
- useEffect(() => {
6
- if (!providers)
7
- return;
8
- let isStale = false;
9
- for (const field of fields) {
10
- if (!field.optionsFrom)
11
- continue;
12
- const provider = providers[field.optionsFrom];
13
- if (!provider)
14
- continue;
15
- const depsKey = (field.optionsDependsOn ?? []).map((k) => values[k]).join('|');
16
- if (lastDepsRef.current.get(field.key) === depsKey)
17
- continue;
18
- lastDepsRef.current.set(field.key, depsKey);
19
- const result = provider(values);
20
- if (Array.isArray(result)) {
21
- if (!isStale)
22
- setResolved((prev) => ({ ...prev, [field.key]: result }));
23
- }
24
- else {
25
- result
26
- .then((options) => {
27
- if (!isStale)
28
- setResolved((prev) => ({ ...prev, [field.key]: options }));
29
- })
30
- .catch(() => {
31
- lastDepsRef.current.delete(field.key);
32
- });
33
- }
34
- }
35
- return () => { isStale = true; };
36
- }, [fields, values, providers]);
37
- return resolved;
38
- }
39
- //# sourceMappingURL=useFieldOptions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useFieldOptions.js","sourceRoot":"","sources":["../../src/hooks/useFieldOptions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGpD,MAAM,UAAU,eAAe,CAC7B,MAAmB,EACnB,MAA+B,EAC/B,SAA2C;IAE3C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAgC,EAAE,CAAC,CAAC;IAC5E,MAAM,WAAW,GAAG,MAAM,CAAsB,IAAI,GAAG,EAAE,CAAC,CAAC;IAE3D,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,WAAW;gBAAE,SAAS;YAEjC,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC9C,IAAI,CAAC,QAAQ;gBAAE,SAAS;YAExB,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAE/E,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO;gBAAE,SAAS;YAC7D,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAE5C,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;YAEhC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,OAAO;oBAAE,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YAC1E,CAAC;iBAAM,CAAC;gBACN,MAAM;qBACH,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;oBAChB,IAAI,CAAC,OAAO;wBAAE,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC3E,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,EAAE;oBACV,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACxC,CAAC,CAAC,CAAC;YACP,CAAC;QACH,CAAC;QAED,OAAO,GAAG,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IAEhC,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1,3 +0,0 @@
1
- import { FormEngine, type FormEngineOptions, type FormSchema } from '@formhaus/core';
2
- export declare function useFormEngine(schema: FormSchema, initialValues?: Record<string, unknown>, options?: FormEngineOptions): FormEngine;
3
- //# sourceMappingURL=useFormEngine.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useFormEngine.d.ts","sourceRoot":"","sources":["../../src/hooks/useFormEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGrF,wBAAgB,aAAa,CAC3B,MAAM,EAAE,UAAU,EAClB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,OAAO,CAAC,EAAE,iBAAiB,GAC1B,UAAU,CAcZ"}
@@ -1,14 +0,0 @@
1
- import { FormEngine } from '@formhaus/core';
2
- import { useRef, useSyncExternalStore } from 'react';
3
- export function useFormEngine(schema, initialValues, options) {
4
- const engineRef = useRef(null);
5
- const schemaIdRef = useRef(schema.id);
6
- if (engineRef.current === null || schemaIdRef.current !== schema.id) {
7
- engineRef.current = new FormEngine(schema, initialValues, options);
8
- schemaIdRef.current = schema.id;
9
- }
10
- const engine = engineRef.current;
11
- useSyncExternalStore(engine.subscribe.bind(engine), engine.getSnapshot.bind(engine));
12
- return engine;
13
- }
14
- //# sourceMappingURL=useFormEngine.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useFormEngine.js","sourceRoot":"","sources":["../../src/hooks/useFormEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA2C,MAAM,gBAAgB,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAErD,MAAM,UAAU,aAAa,CAC3B,MAAkB,EAClB,aAAuC,EACvC,OAA2B;IAE3B,MAAM,SAAS,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,MAAM,CAAS,MAAM,CAAC,EAAE,CAAC,CAAC;IAE9C,IAAI,SAAS,CAAC,OAAO,KAAK,IAAI,IAAI,WAAW,CAAC,OAAO,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC;QACpE,SAAS,CAAC,OAAO,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QACnE,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC;IAClC,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC;IAEjC,oBAAoB,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAErF,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,SAAS,CAAC"}
package/dist/types.d.ts DELETED
@@ -1,55 +0,0 @@
1
- import type { FieldOption, FieldType, FormAction, FormAnalyticsEvent, FormSchema, ValidatorFn } from '@formhaus/core';
2
- import type { ComponentType } from 'react';
3
- export type OptionsProvider = (values: Record<string, unknown>) => FieldOption[] | Promise<FieldOption[]>;
4
- export interface FieldComponentProps {
5
- field: import('@formhaus/core').FormField;
6
- value: unknown;
7
- error?: string;
8
- loading?: boolean;
9
- disabled?: boolean;
10
- onChange: (value: unknown) => void;
11
- onBlur: () => void;
12
- onFocus?: () => void;
13
- }
14
- export type FieldComponentMap = Partial<Record<FieldType, ComponentType<FieldComponentProps>>>;
15
- export interface FormActionsProps {
16
- submitAction?: FormAction;
17
- backAction?: FormAction | false;
18
- cancelAction?: FormAction;
19
- isFirstStep: boolean;
20
- isLastStep: boolean;
21
- isMultiStep: boolean;
22
- loading?: boolean;
23
- values?: Record<string, unknown>;
24
- primaryLabel?: string;
25
- showBack?: boolean;
26
- backLabel?: string;
27
- onSubmit: () => void;
28
- onNext: () => void;
29
- onPrev: () => void;
30
- onCancel: () => void;
31
- onPrimary?: () => void;
32
- }
33
- export interface FormStepProgressProps {
34
- current: number;
35
- total: number;
36
- stepTitle?: string;
37
- stepDescription?: string;
38
- }
39
- export interface FormRendererProps {
40
- schema: FormSchema;
41
- initialValues?: Record<string, unknown>;
42
- onSubmit: (values: Record<string, unknown>) => Promise<void> | void;
43
- onCancel?: () => void;
44
- onStepChange?: (stepId: string, direction: 'next' | 'back') => void;
45
- onFieldChange?: (key: string, value: unknown, allValues: Record<string, unknown>) => void;
46
- validators?: Record<string, ValidatorFn>;
47
- errors?: Record<string, string>;
48
- loading?: boolean;
49
- components?: FieldComponentMap;
50
- optionsProviders?: Record<string, OptionsProvider>;
51
- ActionsComponent?: ComponentType<FormActionsProps>;
52
- ProgressComponent?: ComponentType<FormStepProgressProps>;
53
- onAnalyticsEvent?: (event: FormAnalyticsEvent) => void;
54
- }
55
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACtH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,MAAM,MAAM,eAAe,GAAG,CAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;AAE5C,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,OAAO,gBAAgB,EAAE,SAAS,CAAC;IAC1C,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAE/F,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,UAAU,CAAC,EAAE,UAAU,GAAG,KAAK,CAAC;IAChC,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,UAAU,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACpE,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IACpE,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC1F,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACnD,gBAAgB,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IACnD,iBAAiB,CAAC,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;IACzD,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;CACxD"}
package/dist/types.js DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}