@donotdev/crud 0.0.6 → 0.0.7
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/README.md +18 -2
- package/dist/CrudService.d.ts +91 -8
- package/dist/CrudService.d.ts.map +1 -1
- package/dist/CrudService.js +1 -1
- package/dist/CrudStore.d.ts +45 -2
- package/dist/CrudStore.d.ts.map +1 -1
- package/dist/CrudStore.js +1 -1
- package/dist/FieldRegistry.d.ts +56 -20
- package/dist/FieldRegistry.d.ts.map +1 -1
- package/dist/FieldRegistry.js +1 -1
- package/dist/adapters/FirestoreAdapter.d.ts +4 -4
- package/dist/adapters/FirestoreAdapter.d.ts.map +1 -1
- package/dist/adapters/FirestoreAdapter.js +1 -1
- package/dist/adapters/FunctionsAdapter.d.ts +3 -2
- package/dist/adapters/FunctionsAdapter.d.ts.map +1 -1
- package/dist/adapters/FunctionsAdapter.js +1 -1
- package/dist/builtinFieldTypes.d.ts +4 -0
- package/dist/builtinFieldTypes.d.ts.map +1 -1
- package/dist/builtinFieldTypes.js +1 -1
- package/dist/components/CrudButton.d.ts +1 -1
- package/dist/components/CrudButton.d.ts.map +1 -1
- package/dist/components/CrudButton.js +1 -1
- package/dist/components/DisplayFieldRenderer.d.ts +15 -11
- package/dist/components/DisplayFieldRenderer.d.ts.map +1 -1
- package/dist/components/DisplayFieldRenderer.js +1 -1
- package/dist/components/EntityCardList.d.ts +27 -0
- package/dist/components/EntityCardList.d.ts.map +1 -0
- package/dist/components/EntityCardList.js +1 -0
- package/dist/components/EntityDisplayRenderer.d.ts +43 -0
- package/dist/components/EntityDisplayRenderer.d.ts.map +1 -0
- package/dist/components/EntityDisplayRenderer.js +1 -0
- package/dist/components/EntityFormRenderer.d.ts +21 -26
- package/dist/components/EntityFormRenderer.d.ts.map +1 -1
- package/dist/components/EntityFormRenderer.js +1 -5
- package/dist/components/EntityList.d.ts +24 -0
- package/dist/components/EntityList.d.ts.map +1 -0
- package/dist/components/EntityList.js +1 -0
- package/dist/components/FormFieldRenderer.d.ts +3 -10
- package/dist/components/FormFieldRenderer.d.ts.map +1 -1
- package/dist/components/FormFieldRenderer.js +1 -1
- package/dist/components/FormLayout.d.ts +1 -9
- package/dist/components/FormLayout.d.ts.map +1 -1
- package/dist/components/controlled/complex/ControlledAddressField.d.ts +8 -0
- package/dist/components/controlled/complex/ControlledAddressField.d.ts.map +1 -0
- package/dist/components/controlled/complex/ControlledAddressField.js +1 -0
- package/dist/components/controlled/complex/ControlledDateField.d.ts +8 -0
- package/dist/components/controlled/complex/ControlledDateField.d.ts.map +1 -0
- package/dist/components/controlled/complex/ControlledDateField.js +1 -0
- package/dist/components/controlled/complex/ControlledGeoPointField.d.ts +8 -0
- package/dist/components/controlled/complex/ControlledGeoPointField.d.ts.map +1 -0
- package/dist/components/controlled/complex/ControlledGeoPointField.js +1 -0
- package/dist/components/controlled/complex/ControlledMapField.d.ts +8 -0
- package/dist/components/controlled/complex/ControlledMapField.d.ts.map +1 -0
- package/dist/components/controlled/complex/ControlledMapField.js +1 -0
- package/dist/components/controlled/complex/ControlledMultiInputField.d.ts +8 -0
- package/dist/components/controlled/complex/ControlledMultiInputField.d.ts.map +1 -0
- package/dist/components/controlled/complex/ControlledMultiInputField.js +1 -0
- package/dist/components/controlled/complex/ControlledRichTextField.d.ts +8 -0
- package/dist/components/controlled/complex/ControlledRichTextField.d.ts.map +1 -0
- package/dist/components/controlled/complex/ControlledRichTextField.js +1 -0
- package/dist/components/controlled/complex/ControlledTimestampField.d.ts +8 -0
- package/dist/components/controlled/complex/ControlledTimestampField.d.ts.map +1 -0
- package/dist/components/controlled/complex/ControlledTimestampField.js +1 -0
- package/dist/components/controlled/complex/index.d.ts +8 -0
- package/dist/components/controlled/complex/index.d.ts.map +1 -0
- package/dist/components/controlled/complex/index.js +1 -0
- package/dist/components/controlled/file/ControlledDocumentField.d.ts +8 -0
- package/dist/components/controlled/file/ControlledDocumentField.d.ts.map +1 -0
- package/dist/components/controlled/file/ControlledDocumentField.js +1 -0
- package/dist/components/controlled/file/ControlledFileField.d.ts +8 -0
- package/dist/components/controlled/file/ControlledFileField.d.ts.map +1 -0
- package/dist/components/controlled/file/ControlledFileField.js +1 -0
- package/dist/components/controlled/file/ControlledImageField.d.ts +8 -0
- package/dist/components/controlled/file/ControlledImageField.d.ts.map +1 -0
- package/dist/components/controlled/file/ControlledImageField.js +1 -0
- package/dist/components/controlled/file/ControlledMultiDocumentField.d.ts +8 -0
- package/dist/components/controlled/file/ControlledMultiDocumentField.d.ts.map +1 -0
- package/dist/components/controlled/file/ControlledMultiDocumentField.js +1 -0
- package/dist/components/controlled/file/ControlledMultiFileField.d.ts +8 -0
- package/dist/components/controlled/file/ControlledMultiFileField.d.ts.map +1 -0
- package/dist/components/controlled/file/ControlledMultiFileField.js +1 -0
- package/dist/components/controlled/file/ControlledMultiImageField.d.ts +8 -0
- package/dist/components/controlled/file/ControlledMultiImageField.d.ts.map +1 -0
- package/dist/components/controlled/file/ControlledMultiImageField.js +1 -0
- package/dist/components/controlled/file/index.d.ts +7 -0
- package/dist/components/controlled/file/index.d.ts.map +1 -0
- package/dist/components/controlled/file/index.js +1 -0
- package/dist/components/controlled/index.d.ts +12 -0
- package/dist/components/controlled/index.d.ts.map +1 -0
- package/dist/components/controlled/index.js +1 -0
- package/dist/components/controlled/input/ControlledCheckboxField.d.ts +8 -0
- package/dist/components/controlled/input/ControlledCheckboxField.d.ts.map +1 -0
- package/dist/components/controlled/input/ControlledCheckboxField.js +1 -0
- package/dist/components/controlled/input/ControlledNumberField.d.ts +8 -0
- package/dist/components/controlled/input/ControlledNumberField.d.ts.map +1 -0
- package/dist/components/controlled/input/ControlledNumberField.js +1 -0
- package/dist/components/controlled/input/ControlledPasswordField.d.ts +8 -0
- package/dist/components/controlled/input/ControlledPasswordField.d.ts.map +1 -0
- package/dist/components/controlled/input/ControlledPasswordField.js +1 -0
- package/dist/components/controlled/input/ControlledPhoneField.d.ts +8 -0
- package/dist/components/controlled/input/ControlledPhoneField.d.ts.map +1 -0
- package/dist/components/controlled/input/ControlledPhoneField.js +1 -0
- package/dist/components/controlled/input/ControlledRangeField.d.ts +8 -0
- package/dist/components/controlled/input/ControlledRangeField.d.ts.map +1 -0
- package/dist/components/controlled/input/ControlledRangeField.js +1 -0
- package/dist/components/controlled/input/ControlledSwitchField.d.ts +8 -0
- package/dist/components/controlled/input/ControlledSwitchField.d.ts.map +1 -0
- package/dist/components/controlled/input/ControlledSwitchField.js +1 -0
- package/dist/components/controlled/input/ControlledTextField.d.ts +8 -0
- package/dist/components/controlled/input/ControlledTextField.d.ts.map +1 -0
- package/dist/components/controlled/input/ControlledTextField.js +1 -0
- package/dist/components/controlled/input/ControlledTextareaField.d.ts +8 -0
- package/dist/components/controlled/input/ControlledTextareaField.d.ts.map +1 -0
- package/dist/components/controlled/input/ControlledTextareaField.js +1 -0
- package/dist/components/controlled/input/index.d.ts +9 -0
- package/dist/components/controlled/input/index.d.ts.map +1 -0
- package/dist/components/controlled/input/index.js +1 -0
- package/dist/components/controlled/select/ControlledComboboxField.d.ts +9 -0
- package/dist/components/controlled/select/ControlledComboboxField.d.ts.map +1 -0
- package/dist/components/controlled/select/ControlledComboboxField.js +1 -0
- package/dist/components/controlled/select/ControlledDropdownField.d.ts +9 -0
- package/dist/components/controlled/select/ControlledDropdownField.d.ts.map +1 -0
- package/dist/components/controlled/select/ControlledDropdownField.js +1 -0
- package/dist/components/controlled/select/ControlledMultiDropdownField.d.ts +9 -0
- package/dist/components/controlled/select/ControlledMultiDropdownField.d.ts.map +1 -0
- package/dist/components/controlled/select/ControlledMultiDropdownField.js +1 -0
- package/dist/components/controlled/select/ControlledRadioField.d.ts +9 -0
- package/dist/components/controlled/select/ControlledRadioField.d.ts.map +1 -0
- package/dist/components/controlled/select/ControlledRadioField.js +1 -0
- package/dist/components/controlled/select/index.d.ts +5 -0
- package/dist/components/controlled/select/index.d.ts.map +1 -0
- package/dist/components/controlled/select/index.js +1 -0
- package/dist/components/controlled/types.d.ts +23 -0
- package/dist/components/controlled/types.d.ts.map +1 -0
- package/dist/components/controlled/types.js +1 -0
- package/dist/components/form/fields/AddressFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/AddressFieldComponent.js +1 -1
- package/dist/components/form/fields/AvatarFieldComponent.d.ts +2 -2
- package/dist/components/form/fields/BadgeFieldComponent.d.ts +2 -2
- package/dist/components/form/fields/ButtonFieldComponent.d.ts +1 -9
- package/dist/components/form/fields/ButtonFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/ButtonFieldComponent.js +1 -1
- package/dist/components/form/fields/ComboboxComponent.d.ts.map +1 -1
- package/dist/components/form/fields/CurrencyFieldComponent.d.ts +1 -9
- package/dist/components/form/fields/CurrencyFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/CurrencyFieldComponent.js +1 -1
- package/dist/components/form/fields/DateFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/DateFieldComponent.js +1 -1
- package/dist/components/form/fields/DocumentFieldComponent.d.ts +47 -0
- package/dist/components/form/fields/DocumentFieldComponent.d.ts.map +1 -0
- package/dist/components/form/fields/DocumentFieldComponent.js +1 -0
- package/dist/components/form/fields/DropdownComponent.d.ts.map +1 -1
- package/dist/components/form/fields/DropdownComponent.js +1 -1
- package/dist/components/form/fields/FileFieldComponent.d.ts +31 -15
- package/dist/components/form/fields/FileFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/FileFieldComponent.js +1 -1
- package/dist/components/form/fields/GeoPointFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/GeoPointFieldComponent.js +1 -1
- package/dist/components/form/fields/HiddenFieldComponent.d.ts +1 -1
- package/dist/components/form/fields/HiddenFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/HiddenFieldComponent.js +1 -1
- package/dist/components/form/fields/ImageFieldComponent.d.ts +8 -14
- package/dist/components/form/fields/ImageFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/ImageFieldComponent.js +1 -1
- package/dist/components/form/fields/MapFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/MapFieldComponent.js +1 -1
- package/dist/components/form/fields/MultiDropdownComponent.js +1 -1
- package/dist/components/form/fields/MultiInputTextFieldComponent.d.ts +1 -9
- package/dist/components/form/fields/MultiInputTextFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/MultiInputTextFieldComponent.js +1 -1
- package/dist/components/form/fields/NumberFieldComponent.d.ts +2 -0
- package/dist/components/form/fields/NumberFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/NumberFieldComponent.js +1 -1
- package/dist/components/form/fields/PasswordFieldComponent.d.ts +1 -9
- package/dist/components/form/fields/PasswordFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/PhoneNumberComponent.d.ts +1 -9
- package/dist/components/form/fields/PhoneNumberComponent.d.ts.map +1 -1
- package/dist/components/form/fields/PhoneNumberComponent.js +1 -1
- package/dist/components/form/fields/RadioFieldComponent.d.ts +1 -9
- package/dist/components/form/fields/RadioFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/ReferenceFieldComponent.d.ts +33 -12
- package/dist/components/form/fields/ReferenceFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/ReferenceFieldComponent.js +1 -1
- package/dist/components/form/fields/RichTextComponent.d.ts +32 -0
- package/dist/components/form/fields/RichTextComponent.d.ts.map +1 -0
- package/dist/components/form/fields/RichTextComponent.js +1 -0
- package/dist/components/form/fields/SwitchFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/TextAreaComponent.d.ts +1 -9
- package/dist/components/form/fields/TextAreaComponent.d.ts.map +1 -1
- package/dist/components/form/fields/TextAreaComponent.js +1 -1
- package/dist/components/form/fields/TextFieldComponent.d.ts +1 -9
- package/dist/components/form/fields/TextFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/index.d.ts +4 -2
- package/dist/components/form/fields/index.d.ts.map +1 -1
- package/dist/components/form/fields/index.js +1 -1
- package/dist/components/form/fields/internal/TiptapEditor.d.ts +13 -0
- package/dist/components/form/fields/internal/TiptapEditor.d.ts.map +1 -0
- package/dist/components/form/fields/internal/TiptapEditor.js +52 -0
- package/dist/components/form/index.d.ts +10 -0
- package/dist/components/form/index.d.ts.map +1 -0
- package/dist/components/form/index.js +1 -0
- package/dist/components/form/internal/ImageViewerDialog.d.ts +1 -1
- package/dist/components/form/internal/ImageViewerDialog.d.ts.map +1 -1
- package/dist/components/index.d.ts +8 -2
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +1 -1
- package/dist/contexts/UploadContext.d.ts +16 -0
- package/dist/contexts/UploadContext.d.ts.map +1 -0
- package/dist/contexts/UploadContext.js +1 -0
- package/dist/contexts/index.d.ts +3 -0
- package/dist/contexts/index.d.ts.map +1 -0
- package/dist/contexts/index.js +1 -0
- package/dist/forms/hooks/index.d.ts +2 -0
- package/dist/forms/hooks/index.d.ts.map +1 -1
- package/dist/forms/hooks/index.js +1 -1
- package/dist/forms/hooks/useController.d.ts +29 -0
- package/dist/forms/hooks/useController.d.ts.map +1 -0
- package/dist/forms/hooks/useController.js +1 -0
- package/dist/forms/hooks/useEntityField.d.ts.map +1 -1
- package/dist/forms/hooks/useEntityField.js +1 -1
- package/dist/forms/hooks/useEntityForm.d.ts +8 -76
- package/dist/forms/hooks/useEntityForm.d.ts.map +1 -1
- package/dist/forms/hooks/useEntityForm.js +1 -1
- package/dist/forms/index.d.ts +6 -4
- package/dist/forms/index.d.ts.map +1 -1
- package/dist/forms/index.js +1 -1
- package/dist/forms/types.d.ts +31 -5
- package/dist/forms/types.d.ts.map +1 -1
- package/dist/forms/utils/getFieldsForOperation.d.ts +5 -5
- package/dist/forms/utils/getFieldsForOperation.d.ts.map +1 -1
- package/dist/forms/utils/getFieldsForOperation.js +1 -1
- package/dist/forms/utils/index.d.ts +9 -5
- package/dist/forms/utils/index.d.ts.map +1 -1
- package/dist/forms/utils/index.js +1 -1
- package/dist/forms/utils/isFieldEditable.d.ts +0 -8
- package/dist/forms/utils/isFieldEditable.d.ts.map +1 -1
- package/dist/forms/utils/optionHelpers.d.ts +54 -0
- package/dist/forms/utils/optionHelpers.d.ts.map +1 -0
- package/dist/forms/utils/optionHelpers.js +1 -0
- package/dist/forms/utils/translateFieldLabel.d.ts +70 -0
- package/dist/forms/utils/translateFieldLabel.d.ts.map +1 -0
- package/dist/forms/utils/translateFieldLabel.js +1 -0
- package/dist/forms/utils/validateEntity.d.ts +5 -2
- package/dist/forms/utils/validateEntity.d.ts.map +1 -1
- package/dist/forms/utils/validateEntity.js +1 -1
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/useFileUpload.d.ts +67 -0
- package/dist/hooks/useFileUpload.d.ts.map +1 -0
- package/dist/hooks/useFileUpload.js +1 -0
- package/dist/index.d.ts +15 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/stores/FormStore.d.ts +78 -0
- package/dist/stores/FormStore.d.ts.map +1 -0
- package/dist/stores/FormStore.js +1 -0
- package/dist/stores/UploadStore.d.ts +105 -0
- package/dist/stores/UploadStore.d.ts.map +1 -0
- package/dist/stores/UploadStore.js +1 -0
- package/dist/stores/index.d.ts +11 -0
- package/dist/stores/index.d.ts.map +1 -0
- package/dist/stores/index.js +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/useCrud.d.ts +32 -74
- package/dist/useCrud.d.ts.map +1 -1
- package/dist/useCrud.js +1 -1
- package/dist/useCrudCardList.d.ts +62 -0
- package/dist/useCrudCardList.d.ts.map +1 -0
- package/dist/useCrudCardList.js +1 -0
- package/dist/useCrudList.d.ts +61 -0
- package/dist/useCrudList.d.ts.map +1 -0
- package/dist/useCrudList.js +1 -0
- package/dist/utils/fileStorage.d.ts +58 -0
- package/dist/utils/fileStorage.d.ts.map +1 -0
- package/dist/utils/fileStorage.js +1 -0
- package/dist/utils/imageProcessing.d.ts +1 -1
- package/dist/utils/imageProcessing.d.ts.map +1 -1
- package/dist/utils/imageProcessing.js +1 -1
- package/dist/utils/imageStorage.d.ts +1 -10
- package/dist/utils/imageStorage.d.ts.map +1 -1
- package/dist/utils/imageStorage.js +1 -1
- package/dist/utils/mergeWithOptimistic.d.ts +27 -0
- package/dist/utils/mergeWithOptimistic.d.ts.map +1 -0
- package/dist/utils/mergeWithOptimistic.js +1 -0
- package/dist/utils/uploadValidation.d.ts +37 -0
- package/dist/utils/uploadValidation.d.ts.map +1 -0
- package/dist/utils/uploadValidation.js +1 -0
- package/package.json +22 -5
- package/dist/components/ControlledFields.d.ts +0 -49
- package/dist/components/ControlledFields.d.ts.map +0 -1
- package/dist/components/ControlledFields.js +0 -1
- package/dist/context/FormUploadContext.d.ts +0 -36
- package/dist/context/FormUploadContext.d.ts.map +0 -1
- package/dist/context/FormUploadContext.js +0 -1
- package/dist/context/index.d.ts +0 -2
- package/dist/context/index.d.ts.map +0 -1
- package/dist/context/index.js +0 -1
- package/dist/forms/utils/createEntitySchema.d.ts +0 -53
- package/dist/forms/utils/createEntitySchema.d.ts.map +0 -1
- package/dist/forms/utils/createEntitySchema.js +0 -1
- package/dist/forms/utils/normalizeToFieldConfig.d.ts +0 -47
- package/dist/forms/utils/normalizeToFieldConfig.d.ts.map +0 -1
- package/dist/forms/utils/normalizeToFieldConfig.js +0 -1
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { type Control, type ControllerRenderProps, type FieldErrors, type FieldValues, type Path } from 'react-hook-form';
|
|
2
|
-
import type { FieldConfig, FieldType, ValueTypeForField } from '@donotdev/core';
|
|
3
|
-
import type { ReactElement } from 'react';
|
|
4
|
-
export interface ControlledFieldProps<T extends FieldValues = FieldValues, FT extends FieldType = FieldType> {
|
|
5
|
-
control: Control<T>;
|
|
6
|
-
errors: FieldErrors<T>;
|
|
7
|
-
fieldConfig: FieldConfig<FT>;
|
|
8
|
-
t: (key: string, options?: Record<string, unknown>) => string;
|
|
9
|
-
onChange?: (value: ValueTypeForField<FT>) => void;
|
|
10
|
-
placeholder?: string;
|
|
11
|
-
/** Field object from react-hook-form (provided by framework, no need to use useController) */
|
|
12
|
-
field?: ControllerRenderProps<T, Path<T>>;
|
|
13
|
-
/** Field state from react-hook-form (provided by framework, no need to use useController) */
|
|
14
|
-
fieldState?: {
|
|
15
|
-
error?: {
|
|
16
|
-
message?: string;
|
|
17
|
-
};
|
|
18
|
-
isDirty: boolean;
|
|
19
|
-
isTouched: boolean;
|
|
20
|
-
invalid: boolean;
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
export declare const ControlledCheckboxField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
|
|
24
|
-
/**
|
|
25
|
-
* ControlledSwitchField - Switch with custom value mapping
|
|
26
|
-
* Supports uncheckedValue/checkedValue for string values like 'Manual'/'Automatic'
|
|
27
|
-
*/
|
|
28
|
-
export declare function ControlledSwitchField(props: ControlledFieldProps): ReactElement;
|
|
29
|
-
export declare const ControlledDateField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
|
|
30
|
-
export declare const ControlledDropdownField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
|
|
31
|
-
export declare const ControlledComboboxField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
|
|
32
|
-
export declare const ControlledFileField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
|
|
33
|
-
export declare const ControlledGeoPointField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
|
|
34
|
-
export declare const ControlledImageField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
|
|
35
|
-
export declare const ControlledMultiImageField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
|
|
36
|
-
export declare const ControlledMapField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
|
|
37
|
-
export declare const ControlledMultiDropdownField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
|
|
38
|
-
export declare const ControlledMultiInputField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
|
|
39
|
-
export declare const ControlledNumberField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
|
|
40
|
-
export declare const ControlledPhoneField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
|
|
41
|
-
export declare const ControlledRangeField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
|
|
42
|
-
export declare const ControlledRadioField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
|
|
43
|
-
export declare const ControlledReferenceField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
|
|
44
|
-
export declare const ControlledTextField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
|
|
45
|
-
export declare const ControlledPasswordField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
|
|
46
|
-
export declare const ControlledTimestampField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
|
|
47
|
-
export declare const ControlledAddressField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
|
|
48
|
-
export declare const ControlledTextareaField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
|
|
49
|
-
//# sourceMappingURL=ControlledFields.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ControlledFields.d.ts","sourceRoot":"","sources":["../../src/components/ControlledFields.tsx"],"names":[],"mappings":"AAIA,OAAO,EAIL,KAAK,OAAO,EACZ,KAAK,qBAAqB,EAC1B,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,IAAI,EAEV,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,iBAAiB,EAElB,MAAM,gBAAgB,CAAC;AAgDxB,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AAEzD,MAAM,WAAW,oBAAoB,CACnC,CAAC,SAAS,WAAW,GAAG,WAAW,EACnC,EAAE,SAAS,SAAS,GAAG,SAAS;IAEhC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;IAC9D,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8FAA8F;IAC9F,KAAK,CAAC,EAAE,qBAAqB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,6FAA6F;IAC7F,UAAU,CAAC,EAAE;QACX,KAAK,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC7B,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;CACH;AAuUD,eAAO,MAAM,uBAAuB,8bAzQ/B,YA8QF,CAAC;AAEJ;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,oBAAoB,GAC1B,YAAY,CA6Cd;AAED,eAAO,MAAM,mBAAmB,8bArU3B,YAyUJ,CAAC;AAEF,eAAO,MAAM,uBAAuB,8bA3U/B,YA+UJ,CAAC;AAEF,eAAO,MAAM,uBAAuB,8bAjV/B,YAqVJ,CAAC;AAEF,eAAO,MAAM,mBAAmB,8bAvV3B,YA2VJ,CAAC;AAEF,eAAO,MAAM,uBAAuB,8bA7V/B,YAkWF,CAAC;AAEJ,eAAO,MAAM,oBAAoB,8bApW5B,YAwWJ,CAAC;AAQF,eAAO,MAAM,yBAAyB,8bAhXjC,YAqXF,CAAC;AAEJ,eAAO,MAAM,kBAAkB,8bAvX1B,YA2XJ,CAAC;AAEF,eAAO,MAAM,4BAA4B,8bA7XpC,YAkYF,CAAC;AAEJ,eAAO,MAAM,yBAAyB,8bApYjC,YAyYF,CAAC;AAEJ,eAAO,MAAM,qBAAqB,8bA3Y7B,YAuZF,CAAC;AAEJ,eAAO,MAAM,oBAAoB,8bAzZ5B,YA6ZJ,CAAC;AAEF,eAAO,MAAM,oBAAoB,8bA/Z5B,YAmaJ,CAAC;AAEF,eAAO,MAAM,oBAAoB,8bAra5B,YAyaJ,CAAC;AAEF,eAAO,MAAM,wBAAwB,8bA3ahC,YAgbF,CAAC;AAEJ,eAAO,MAAM,mBAAmB,8bAlb3B,YAsbJ,CAAC;AAEF,eAAO,MAAM,uBAAuB,8bAxb/B,YA6bF,CAAC;AAEJ,eAAO,MAAM,wBAAwB,8bA/bhC,YAocF,CAAC;AAEJ,eAAO,MAAM,sBAAsB,8bAtc9B,YA2cF,CAAC;AAEJ,eAAO,MAAM,uBAAuB,8bA7c/B,YAidJ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use client";import{jsx as L}from"react/jsx-runtime";import{useMemo as v}from"react";import{Controller as _,useWatch as Y,useFormContext as Z}from"react-hook-form";import{handleError as j}from"@donotdev/core";import{CheckboxFieldComponent as ee,ComboboxComponent as ne,DateFieldComponent as te,DropdownComponent as oe,FileFieldComponent as re,GeoPointFieldComponent as le,ImageFieldComponent as $,MultiDropdownComponent as ie,MultiInputTextFieldComponent as se,NumberFieldComponent as de,PhoneNumberComponent as ce,PasswordFieldComponent as ae,RadioFieldComponent as ue,RangeFieldComponent as pe,MapFieldComponent as fe,ReferenceFieldComponent as me,TextFieldComponent as Ce,TextAreaComponent as he,TimestampFieldComponent as ge,AddressFieldComponent as xe,SwitchFieldComponent as Fe}from"./form/fields";function be(e){if(e){if(e instanceof RegExp)return e;try{const t=/^\/(.*)\/([gimyus]*)$/.exec(e);if(t){const[,l,a]=t;if(l)return new RegExp(l,a)}return new RegExp(e)}catch{return}}}function ye(e){if(!e)return{};const t={};return e.required!==void 0&&(t.required=e.required),e.min!==void 0&&(t.min=e.min),e.max!==void 0&&(t.max=e.max),e.minLength!==void 0&&(t.minLength=e.minLength),e.maxLength!==void 0&&(t.maxLength=e.maxLength),e.pattern&&typeof e.pattern=="string"&&(t.pattern={value:be(e.pattern)||/.*/,message:"Invalid format"}),t}function n(e,t,l){return function(f){const{control:g,errors:A,fieldConfig:m,t:x,onChange:d,placeholder:M}=f,{name:i,label:r,options:u={},validation:C}=m,F="dependsOn"in m?m.dependsOn:void 0,T=i,D=C?ye(C):void 0,{fieldSpecific:h}=u||{},q=Z()?.setValue,k=Y({control:g}),G=F&&k?k[F.field]:void 0,B=v(()=>{const s=C?.options;if(!s)return[];if(typeof s=="function")return s(k||{});if(typeof s=="object"&&"type"in s&&s.type==="range"){const{start:b,end:w,step:O=1,reverse:E=!1}=s,V=[];if(E)for(let c=w;c>=b;c-=O){const p=String(c);V.push({value:p,label:p})}else for(let c=b;c<=w;c+=O){const p=String(c);V.push({value:p,label:p})}return V}return s},[C?.options,k,G]);return L(_,{name:T,control:g,rules:D,render:({field:s})=>{const{value:b,onChange:w,ref:O,...E}=s,V=(()=>{try{return t?t(b):b}catch(o){return j(o,{userMessage:`Error transforming value for field ${r||i}`,context:{fieldName:i,fieldType:m.type},severity:"warning"}),b}})(),c=o=>{try{const P=l?l(o):o;if(F&&q){const R=h?.setParentOnChange;if(typeof R=="function"){const S=R(P,k||{});S!=null&&q(F.field,S,{shouldValidate:!0,shouldDirty:!0})}}w(P),d&&d(o)}catch(P){j(P,{userMessage:`Error updating field ${r||i}`,context:{fieldName:i,fieldType:m.type},severity:"warning"}),w(o),d&&d(o)}},{prefixIcon:p,suffixIcon:W,...z}=u||{},N=o=>{const{children:P,...R}=o;return R},H=N(E),J=h?N(h):void 0,K=N(z),Q=typeof r=="string"&&r.includes(":")?x(r.split(":")[1]??r,{ns:r.split(":")[0]}):x(r),U=B.map(o=>({...o,label:typeof o.label=="string"&&o.label.includes(":")?x(o.label.split(":")[1]??o.label,{ns:o.label.split(":")[0]}):x(o.label)})),X={...H,label:Q,value:V,onChange:c,error:!!A[i],helperText:A[i]?.message||void 0,placeholder:M||u.placeholder,clearable:u.clearable,className:u.className,options:U,required:C?.required||!1,...J||{},...K,...p&&{prefixIcon:p},...W&&{suffixIcon:W}};return L(e,{...X})}})}}function y(e,t){return function(a){const f=v(()=>{try{return t(a)}catch{return a}},[a]);return L(e,{...f})}}const Ae=y(oe,e=>({...e,options:Array.isArray(e.options)?e.options:[]})),ke=y(ne,e=>{const{children:t,...l}=e;return{...l,options:Array.isArray(e.options)?e.options:[],creatable:e.creatable??!1}}),we=y(ie,e=>({...e,options:Array.isArray(e.options)?e.options:[]})),Ve=y(me,e=>e),Pe=y(ue,e=>({...e,options:Array.isArray(e.options)?e.options:[]})),Ee=n(ee,e=>!!e,e=>e?.target?.checked);function Ne(e){const{control:t,errors:l,fieldConfig:a,t:f,onChange:g}=e,{name:A,label:m,options:x={}}=a,d=x.fieldSpecific,M=d?.uncheckedValue??!1,i=d?.checkedValue??!0,r=d?.uncheckedLabel,u=d?.checkedLabel;return L(_,{name:A,control:t,render:({field:{value:C,onChange:F}})=>{const T=C===i,D=h=>{const I=h?i:M;F(I),g&&g(I)};return L(Fe,{label:f(m),checked:T,onChange:h=>D(h.target.checked),uncheckedLabel:r?f(r):void 0,checkedLabel:u?f(u):void 0,helperText:l[A]?.message})}})}const Se=n(te,e=>e??null,e=>e?.target?.value),qe=n(Ae,e=>e??null,e=>e?.target?.value),We=n(ke,e=>e??"",e=>e?.target?.value),ve=n(re,e=>e??null,e=>e?.target?.value),_e=n(le,e=>e||{lat:0,lng:0},e=>e?.target?.value),je=n($,e=>e??null,e=>e),Le=y($,e=>({...e,multiple:!0})),$e=n(Le,e=>Array.isArray(e)?e:e?[e]:[],e=>e),Ge=n(fe,e=>e||{},e=>e?.target?.value),Be=n(we,e=>Array.isArray(e)?e:[],e=>e?.target?.value),ze=n(se,e=>Array.isArray(e)?e:[],e=>e),He=n(de,e=>e??"",e=>{if(e?.target?.value===""||e?.target?.value===null)return null;try{return parseFloat(e?.target?.value)}catch{return 0}}),Je=n(ce,e=>typeof e=="string"?e:"",e=>e?.target?.value||""),Ke=n(pe,e=>e??null,e=>e),Qe=n(Pe,e=>e??null,e=>e),Ue=n(Ve,e=>e??null,e=>e),Xe=n(Ce,e=>e??"",e=>e?.target?.value),Ye=n(ae,e=>e??"",e=>e?.target?.value),Ze=n(ge,e=>e??null,e=>e),en=n(xe,e=>e??null,e=>e),nn=n(he,e=>e??"",e=>e?.target?.value);export{en as ControlledAddressField,Ee as ControlledCheckboxField,We as ControlledComboboxField,Se as ControlledDateField,qe as ControlledDropdownField,ve as ControlledFileField,_e as ControlledGeoPointField,je as ControlledImageField,Ge as ControlledMapField,Be as ControlledMultiDropdownField,$e as ControlledMultiImageField,ze as ControlledMultiInputField,He as ControlledNumberField,Ye as ControlledPasswordField,Je as ControlledPhoneField,Qe as ControlledRadioField,Ke as ControlledRangeField,Ue as ControlledReferenceField,Ne as ControlledSwitchField,Xe as ControlledTextField,nn as ControlledTextareaField,Ze as ControlledTimestampField};
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Form Upload Context
|
|
3
|
-
* @description Context for coordinating deferred uploads (images, files) before form submit.
|
|
4
|
-
* Components register their upload functions, EntityFormRenderer calls them before validation.
|
|
5
|
-
*
|
|
6
|
-
* @version 0.0.1
|
|
7
|
-
* @since 0.0.1
|
|
8
|
-
* @author AMBROISE PARK Consulting
|
|
9
|
-
*/
|
|
10
|
-
import { type ReactNode } from 'react';
|
|
11
|
-
type UploadFunction = () => Promise<void>;
|
|
12
|
-
interface FormUploadContextValue {
|
|
13
|
-
/** Register an upload function for a field */
|
|
14
|
-
registerUpload: (fieldName: string, uploadFn: UploadFunction) => void;
|
|
15
|
-
/** Unregister upload function when field unmounts */
|
|
16
|
-
unregisterUpload: (fieldName: string) => void;
|
|
17
|
-
/** Call all registered upload functions (before form submit) */
|
|
18
|
-
uploadAll: () => Promise<void>;
|
|
19
|
-
/** Check if any uploads are pending */
|
|
20
|
-
hasPendingUploads: () => boolean;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Hook to access form upload context
|
|
24
|
-
* Returns null if not within FormUploadProvider (for standalone usage)
|
|
25
|
-
*/
|
|
26
|
-
export declare function useFormUpload(): FormUploadContextValue | null;
|
|
27
|
-
interface FormUploadProviderProps {
|
|
28
|
-
children: ReactNode;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Provider for form upload coordination
|
|
32
|
-
* Wrap forms that contain deferred upload fields (images, files)
|
|
33
|
-
*/
|
|
34
|
-
export declare function FormUploadProvider({ children }: FormUploadProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
35
|
-
export {};
|
|
36
|
-
//# sourceMappingURL=FormUploadContext.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FormUploadContext.d.ts","sourceRoot":"","sources":["../../src/context/FormUploadContext.tsx"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AAEH,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,KAAK,cAAc,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1C,UAAU,sBAAsB;IAC9B,8CAA8C;IAC9C,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;IACtE,qDAAqD;IACrD,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,gEAAgE;IAChE,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,uCAAuC;IACvC,iBAAiB,EAAE,MAAM,OAAO,CAAC;CAClC;AAID;;;GAGG;AACH,wBAAgB,aAAa,IAAI,sBAAsB,GAAG,IAAI,CAE7D;AAED,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,EAAE,uBAAuB,2CAiCvE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use client";import{jsx as i}from"react/jsx-runtime";import{createContext as p,useContext as d,useCallback as t,useRef as m}from"react";const n=p(null);function U(){return d(n)}function g({children:s}){const r=m(new Map),a=t((e,o)=>{r.current.set(e,o)},[]),l=t(e=>{r.current.delete(e)},[]),u=t(async()=>{const e=Array.from(r.current.values());e.length!==0&&await Promise.all(e.map(o=>o()))},[]),c=t(()=>r.current.size>0,[]);return i(n.Provider,{value:{registerUpload:a,unregisterUpload:l,uploadAll:u,hasPendingUploads:c},children:s})}export{g as FormUploadProvider,U as useFormUpload};
|
package/dist/context/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/context/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{FormUploadProvider as d,useFormUpload as e}from"./FormUploadContext";export{d as FormUploadProvider,e as useFormUpload};
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import type { Entity, dndevSchema } from '@donotdev/core';
|
|
2
|
-
/**
|
|
3
|
-
* Schema operation type
|
|
4
|
-
* - 'create': Makes technical fields optional (backend creates them automatically)
|
|
5
|
-
* - 'update': Makes all fields optional except id (for partial updates). Technical fields can be updated if provided.
|
|
6
|
-
* - 'full': Includes all fields as-is
|
|
7
|
-
* - 'draft': Like create, but all required fields become optional (for saving drafts)
|
|
8
|
-
*/
|
|
9
|
-
export type SchemaOperation = 'create' | 'update' | 'full' | 'draft';
|
|
10
|
-
/**
|
|
11
|
-
* Creates a Valibot schema from an entity definition.
|
|
12
|
-
*
|
|
13
|
-
* Handles visibility and operation type to generate appropriate schemas:
|
|
14
|
-
* - 'create': Makes technical fields optional (backend creates them automatically: id, timestamps, status)
|
|
15
|
-
* - 'update': Makes all fields optional except id. Technical fields can be updated if provided.
|
|
16
|
-
* - 'full': Includes all fields as-is
|
|
17
|
-
* - 'draft': Like create, but all required fields become optional (for saving drafts)
|
|
18
|
-
*
|
|
19
|
-
* @param entity - Entity definition from defineEntity()
|
|
20
|
-
* @param operation - Schema operation type
|
|
21
|
-
* @returns Valibot schema with dndev metadata
|
|
22
|
-
*
|
|
23
|
-
* @example
|
|
24
|
-
* ```typescript
|
|
25
|
-
* import { createEntitySchema } from '@donotdev/crud/forms';
|
|
26
|
-
* import { productEntity } from './entities/product';
|
|
27
|
-
*
|
|
28
|
-
* // For create form validation (full required validation)
|
|
29
|
-
* const createSchema = createEntitySchema(productEntity, 'create');
|
|
30
|
-
*
|
|
31
|
-
* // For draft saves (all required fields optional)
|
|
32
|
-
* const draftSchema = createEntitySchema(productEntity, 'draft');
|
|
33
|
-
*
|
|
34
|
-
* // For update form validation
|
|
35
|
-
* const updateSchema = createEntitySchema(productEntity, 'update');
|
|
36
|
-
*
|
|
37
|
-
* // Use with React Hook Form
|
|
38
|
-
* import { valibotResolver } from '@hookform/resolvers/valibot';
|
|
39
|
-
*
|
|
40
|
-
* const form = useForm({
|
|
41
|
-
* resolver: valibotResolver(createSchema)
|
|
42
|
-
* });
|
|
43
|
-
* ```
|
|
44
|
-
*
|
|
45
|
-
* @see {@link Entity} for entity definition structure
|
|
46
|
-
* @see {@link SchemaOperation} for operation types
|
|
47
|
-
*
|
|
48
|
-
* @version 0.0.1
|
|
49
|
-
* @since 0.0.1
|
|
50
|
-
* @author AMBROISE PARK Consulting
|
|
51
|
-
*/
|
|
52
|
-
export declare function createEntitySchema<E extends Entity>(entity: E, operation?: SchemaOperation): dndevSchema<Record<string, unknown>>;
|
|
53
|
-
//# sourceMappingURL=createEntitySchema.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createEntitySchema.d.ts","sourceRoot":"","sources":["../../../src/forms/utils/createEntitySchema.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,MAAM,EAAe,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAyIvE;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EACjD,MAAM,EAAE,CAAC,EACT,SAAS,GAAE,eAA0B,GACpC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAkDtC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import*as e from"valibot";import{TECHNICAL_FIELD_NAMES as m}from"@donotdev/core";function f(n,t={}){const{type:l,validation:a}=n,{isDraft:s=!1}=t;let i;switch(l){case"number":case"range":i=e.number(),a?.min!==void 0&&(i=e.pipe(i,e.minValue(a.min))),a?.max!==void 0&&(i=e.pipe(i,e.maxValue(a.max)));break;case"boolean":case"checkbox":i=e.boolean();break;case"email":i=e.pipe(e.string(),e.email());break;case"url":i=e.pipe(e.string(),e.url());break;case"multiselect":case"array":i=e.array(e.string());break;case"select":case"radio":if(a?.options&&Array.isArray(a.options)){const c=a.options.map(o=>o.value);i=e.picklist(c)}else i=e.string();break;case"date":case"datetime-local":case"time":case"month":case"week":case"timestamp":i=e.string();break;case"image":i=e.object({fullUrl:e.string(),thumbUrl:e.optional(e.string())});break;case"images":i=e.array(e.object({fullUrl:e.string(),thumbUrl:e.optional(e.string())}));break;default:i=e.string(),a?.minLength!==void 0&&(i=e.pipe(i,e.minLength(a.minLength))),a?.maxLength!==void 0&&(i=e.pipe(i,e.maxLength(a.maxLength))),a?.pattern&&(i=e.pipe(i,e.regex(new RegExp(a.pattern))));break}return(!a?.required||s)&&(i=e.optional(i)),i}function d(n,t="create"){const l=t==="draft",a={};for(const[i,c]of Object.entries(n.fields)){if(c.visibility==="hidden")continue;const o=m.includes(i);let r=f(c,{isDraft:l});(t==="create"||t==="draft")&&o&&(r=e.optional(r)),t==="update"&&i!=="id"&&(r=e.optional(r)),a[i]=r}t==="update"&&(a.id=e.pipe(e.string(),e.minLength(1,"ID is required")));const s=e.object(a);return s.metadata={collection:n.collection,entity:n.name},s}export{d as createEntitySchema};
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Field config normalization utility
|
|
3
|
-
* @description Converts EntityField (from defineEntity) to FieldConfig format used by form components.
|
|
4
|
-
* Preserves generic type parameter for type-safe form handling.
|
|
5
|
-
*
|
|
6
|
-
* @version 0.0.2
|
|
7
|
-
* @since 0.0.1
|
|
8
|
-
* @author AMBROISE PARK Consulting
|
|
9
|
-
*/
|
|
10
|
-
import type { FieldConfig, EntityField, FieldType } from '@donotdev/core';
|
|
11
|
-
/**
|
|
12
|
-
* Normalizes EntityField to FieldConfig format, preserving type parameter.
|
|
13
|
-
*
|
|
14
|
-
* Handles conversion from entity definitions (defineEntity) to form-compatible format.
|
|
15
|
-
* If the field already has a `name` property (is already a FieldConfig), returns as-is.
|
|
16
|
-
*
|
|
17
|
-
* @template T - The field type, preserved from input for type-safe validation
|
|
18
|
-
* @param name - Field name/key from the entity definition
|
|
19
|
-
* @param field - Field definition (EntityField or FieldConfig)
|
|
20
|
-
* @returns Normalized FieldConfig ready for form rendering
|
|
21
|
-
*
|
|
22
|
-
* @example
|
|
23
|
-
* ```typescript
|
|
24
|
-
* // From EntityField (defineEntity output) - type is preserved
|
|
25
|
-
* const entityField: EntityField<'email'> = {
|
|
26
|
-
* type: 'email',
|
|
27
|
-
* visibility: 'user',
|
|
28
|
-
* validation: { required: true }
|
|
29
|
-
* };
|
|
30
|
-
* const config = normalizeToFieldConfig('email', entityField);
|
|
31
|
-
* // FieldConfig<'email'> - TypeScript knows value type is string
|
|
32
|
-
*
|
|
33
|
-
* // Already a FieldConfig (passes through)
|
|
34
|
-
* const fieldConfig: FieldConfig<'text'> = { name: 'email', type: 'text', label: 'Email' };
|
|
35
|
-
* const config2 = normalizeToFieldConfig('email', fieldConfig);
|
|
36
|
-
* // Same as input, type preserved
|
|
37
|
-
* ```
|
|
38
|
-
*
|
|
39
|
-
* @see {@link EntityField} for entity field definition
|
|
40
|
-
* @see {@link FieldConfig} for form field configuration
|
|
41
|
-
*
|
|
42
|
-
* @version 0.0.2
|
|
43
|
-
* @since 0.0.1
|
|
44
|
-
* @author AMBROISE PARK Consulting
|
|
45
|
-
*/
|
|
46
|
-
export declare function normalizeToFieldConfig<T extends FieldType>(name: string, field: FieldConfig<T> | EntityField<T>): FieldConfig<T>;
|
|
47
|
-
//# sourceMappingURL=normalizeToFieldConfig.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"normalizeToFieldConfig.d.ts","sourceRoot":"","sources":["../../../src/forms/utils/normalizeToFieldConfig.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,SAAS,EACxD,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GACrC,WAAW,CAAC,CAAC,CAAC,CA2BhB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function n(t,e){if("name"in e&&typeof e.name=="string")return e;const i=e;return{name:t,type:i.type,label:i.label||t.charAt(0).toUpperCase()+t.slice(1).replace(/([A-Z])/g," $1"),required:i.validation?.required??!1,visibility:i.visibility,editable:i.editable,validation:i.validation,options:i.options,dependsOn:i.dependsOn,hint:i.hint,i18n:i.i18n,group:i.group}}export{n as normalizeToFieldConfig};
|