@donotdev/crud 0.0.8 → 0.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CrudService.d.ts +30 -60
- package/dist/CrudService.d.ts.map +1 -1
- package/dist/CrudService.js +1 -1
- package/dist/CrudStore.d.ts +1 -94
- package/dist/CrudStore.d.ts.map +1 -1
- package/dist/CrudStore.js +1 -1
- package/dist/FieldRegistry.js +1 -1
- package/dist/adapters/FirestoreAdapter.d.ts +3 -1
- package/dist/adapters/FirestoreAdapter.d.ts.map +1 -1
- package/dist/adapters/FirestoreAdapter.js +1 -1
- package/dist/adapters/FunctionsAdapter.d.ts +8 -1
- package/dist/adapters/FunctionsAdapter.d.ts.map +1 -1
- package/dist/adapters/FunctionsAdapter.js +1 -1
- package/dist/adapters/index.js +1 -1
- package/dist/builtinFieldTypes.d.ts +17 -4
- package/dist/builtinFieldTypes.d.ts.map +1 -1
- package/dist/builtinFieldTypes.js +1 -1
- package/dist/components/CrudButton.js +1 -1
- package/dist/components/DisplayFieldRenderer.d.ts +2 -0
- package/dist/components/DisplayFieldRenderer.d.ts.map +1 -1
- package/dist/components/DisplayFieldRenderer.js +1 -1
- package/dist/components/EntityDisplayRenderer.d.ts +3 -3
- package/dist/components/EntityDisplayRenderer.d.ts.map +1 -1
- package/dist/components/EntityDisplayRenderer.js +1 -1
- package/dist/components/EntityFilters.d.ts +61 -0
- package/dist/components/EntityFilters.d.ts.map +1 -0
- package/dist/components/EntityFilters.js +1 -0
- package/dist/components/EntityFormRenderer.d.ts +22 -1
- package/dist/components/EntityFormRenderer.d.ts.map +1 -1
- package/dist/components/EntityFormRenderer.js +1 -1
- package/dist/components/FormFieldRenderer.d.ts.map +1 -1
- package/dist/components/FormFieldRenderer.js +1 -1
- package/dist/components/FormLayout.js +1 -1
- package/dist/components/controlled/complex/ControlledAddressField.d.ts +3 -0
- package/dist/components/controlled/complex/ControlledAddressField.d.ts.map +1 -1
- package/dist/components/controlled/complex/ControlledAddressField.js +1 -1
- package/dist/components/controlled/complex/ControlledDateField.d.ts +3 -0
- package/dist/components/controlled/complex/ControlledDateField.d.ts.map +1 -1
- package/dist/components/controlled/complex/ControlledDateField.js +1 -1
- package/dist/components/controlled/complex/ControlledGeoPointField.d.ts +3 -0
- package/dist/components/controlled/complex/ControlledGeoPointField.d.ts.map +1 -1
- package/dist/components/controlled/complex/ControlledGeoPointField.js +1 -1
- package/dist/components/controlled/complex/ControlledMapField.d.ts +3 -0
- package/dist/components/controlled/complex/ControlledMapField.d.ts.map +1 -1
- package/dist/components/controlled/complex/ControlledMapField.js +1 -1
- package/dist/components/controlled/complex/ControlledMultiInputField.d.ts +3 -0
- package/dist/components/controlled/complex/ControlledMultiInputField.d.ts.map +1 -1
- package/dist/components/controlled/complex/ControlledMultiInputField.js +1 -1
- package/dist/components/controlled/complex/ControlledRichTextField.d.ts +3 -0
- package/dist/components/controlled/complex/ControlledRichTextField.d.ts.map +1 -1
- package/dist/components/controlled/complex/ControlledRichTextField.js +1 -1
- package/dist/components/controlled/complex/ControlledTimestampField.d.ts +3 -0
- package/dist/components/controlled/complex/ControlledTimestampField.d.ts.map +1 -1
- package/dist/components/controlled/complex/ControlledTimestampField.js +1 -1
- package/dist/components/controlled/complex/index.d.ts.map +1 -1
- package/dist/components/controlled/complex/index.js +1 -1
- package/dist/components/controlled/file/ControlledDocumentField.d.ts +3 -0
- package/dist/components/controlled/file/ControlledDocumentField.d.ts.map +1 -1
- package/dist/components/controlled/file/ControlledDocumentField.js +1 -1
- package/dist/components/controlled/file/ControlledFileField.d.ts +3 -0
- package/dist/components/controlled/file/ControlledFileField.d.ts.map +1 -1
- package/dist/components/controlled/file/ControlledFileField.js +1 -1
- package/dist/components/controlled/file/ControlledImageField.d.ts +3 -0
- package/dist/components/controlled/file/ControlledImageField.d.ts.map +1 -1
- package/dist/components/controlled/file/ControlledImageField.js +1 -1
- package/dist/components/controlled/file/ControlledMultiDocumentField.d.ts +3 -0
- package/dist/components/controlled/file/ControlledMultiDocumentField.d.ts.map +1 -1
- package/dist/components/controlled/file/ControlledMultiDocumentField.js +1 -1
- package/dist/components/controlled/file/ControlledMultiFileField.d.ts +3 -0
- package/dist/components/controlled/file/ControlledMultiFileField.d.ts.map +1 -1
- package/dist/components/controlled/file/ControlledMultiFileField.js +1 -1
- package/dist/components/controlled/file/ControlledMultiImageField.d.ts +3 -0
- package/dist/components/controlled/file/ControlledMultiImageField.d.ts.map +1 -1
- package/dist/components/controlled/file/ControlledMultiImageField.js +1 -1
- package/dist/components/controlled/file/index.d.ts.map +1 -1
- package/dist/components/controlled/file/index.js +1 -1
- package/dist/components/controlled/index.d.ts +4 -0
- package/dist/components/controlled/index.d.ts.map +1 -1
- package/dist/components/controlled/index.js +1 -1
- package/dist/components/controlled/input/ControlledCheckboxField.d.ts +3 -0
- package/dist/components/controlled/input/ControlledCheckboxField.d.ts.map +1 -1
- package/dist/components/controlled/input/ControlledCheckboxField.js +1 -1
- package/dist/components/controlled/input/ControlledCurrencyField.d.ts +8 -0
- package/dist/components/controlled/input/ControlledCurrencyField.d.ts.map +1 -0
- package/dist/components/controlled/input/ControlledCurrencyField.js +1 -0
- package/dist/components/controlled/input/ControlledGdprConsentField.d.ts +8 -0
- package/dist/components/controlled/input/ControlledGdprConsentField.d.ts.map +1 -0
- package/dist/components/controlled/input/ControlledGdprConsentField.js +1 -0
- package/dist/components/controlled/input/ControlledNumberField.d.ts +3 -0
- package/dist/components/controlled/input/ControlledNumberField.d.ts.map +1 -1
- package/dist/components/controlled/input/ControlledNumberField.js +1 -1
- package/dist/components/controlled/input/ControlledPasswordField.d.ts +3 -0
- package/dist/components/controlled/input/ControlledPasswordField.d.ts.map +1 -1
- package/dist/components/controlled/input/ControlledPasswordField.js +1 -1
- package/dist/components/controlled/input/ControlledPhoneField.d.ts +3 -0
- package/dist/components/controlled/input/ControlledPhoneField.d.ts.map +1 -1
- package/dist/components/controlled/input/ControlledPhoneField.js +1 -1
- package/dist/components/controlled/input/ControlledPriceField.d.ts +8 -0
- package/dist/components/controlled/input/ControlledPriceField.d.ts.map +1 -0
- package/dist/components/controlled/input/ControlledPriceField.js +1 -0
- package/dist/components/controlled/input/ControlledRangeField.d.ts +3 -0
- package/dist/components/controlled/input/ControlledRangeField.d.ts.map +1 -1
- package/dist/components/controlled/input/ControlledRangeField.js +1 -1
- package/dist/components/controlled/input/ControlledRatingField.d.ts +8 -0
- package/dist/components/controlled/input/ControlledRatingField.d.ts.map +1 -0
- package/dist/components/controlled/input/ControlledRatingField.js +1 -0
- package/dist/components/controlled/input/ControlledSwitchField.d.ts +3 -0
- package/dist/components/controlled/input/ControlledSwitchField.d.ts.map +1 -1
- package/dist/components/controlled/input/ControlledSwitchField.js +1 -1
- package/dist/components/controlled/input/ControlledTextField.d.ts +3 -0
- package/dist/components/controlled/input/ControlledTextField.d.ts.map +1 -1
- package/dist/components/controlled/input/ControlledTextField.js +1 -1
- package/dist/components/controlled/input/ControlledTextareaField.d.ts +3 -0
- package/dist/components/controlled/input/ControlledTextareaField.d.ts.map +1 -1
- package/dist/components/controlled/input/ControlledTextareaField.js +1 -1
- package/dist/components/controlled/input/index.d.ts +4 -0
- package/dist/components/controlled/input/index.d.ts.map +1 -1
- package/dist/components/controlled/input/index.js +1 -1
- package/dist/components/controlled/select/ControlledComboboxField.d.ts +4 -0
- package/dist/components/controlled/select/ControlledComboboxField.d.ts.map +1 -1
- package/dist/components/controlled/select/ControlledComboboxField.js +1 -1
- package/dist/components/controlled/select/ControlledDropdownField.d.ts +4 -0
- package/dist/components/controlled/select/ControlledDropdownField.d.ts.map +1 -1
- package/dist/components/controlled/select/ControlledDropdownField.js +1 -1
- package/dist/components/controlled/select/ControlledMultiDropdownField.d.ts +4 -0
- package/dist/components/controlled/select/ControlledMultiDropdownField.d.ts.map +1 -1
- package/dist/components/controlled/select/ControlledMultiDropdownField.js +1 -1
- package/dist/components/controlled/select/ControlledRadioField.d.ts +4 -0
- package/dist/components/controlled/select/ControlledRadioField.d.ts.map +1 -1
- package/dist/components/controlled/select/ControlledRadioField.js +1 -1
- package/dist/components/controlled/select/ControlledYearField.d.ts +9 -0
- package/dist/components/controlled/select/ControlledYearField.d.ts.map +1 -0
- package/dist/components/controlled/select/ControlledYearField.js +1 -0
- package/dist/components/controlled/select/index.d.ts +1 -0
- package/dist/components/controlled/select/index.d.ts.map +1 -1
- package/dist/components/controlled/select/index.js +1 -1
- package/dist/components/controlled/types.d.ts +6 -0
- package/dist/components/controlled/types.d.ts.map +1 -1
- package/dist/components/controlled/types.js +1 -1
- package/dist/components/fields/display/AvatarFieldDisplay.d.ts +23 -0
- package/dist/components/fields/display/AvatarFieldDisplay.d.ts.map +1 -0
- package/dist/components/fields/display/AvatarFieldDisplay.js +1 -0
- package/dist/components/fields/display/BadgeFieldDisplay.d.ts +21 -0
- package/dist/components/fields/display/BadgeFieldDisplay.d.ts.map +1 -0
- package/dist/components/fields/display/BadgeFieldDisplay.js +1 -0
- package/dist/components/fields/display/ButtonFieldDisplay.d.ts +29 -0
- package/dist/components/fields/display/ButtonFieldDisplay.d.ts.map +1 -0
- package/dist/components/fields/display/ButtonFieldDisplay.js +1 -0
- package/dist/components/fields/display/CheckboxFieldDisplay.d.ts +21 -0
- package/dist/components/fields/display/CheckboxFieldDisplay.d.ts.map +1 -0
- package/dist/components/fields/display/CheckboxFieldDisplay.js +1 -0
- package/dist/components/fields/display/DateFieldDisplay.d.ts +24 -0
- package/dist/components/fields/display/DateFieldDisplay.d.ts.map +1 -0
- package/dist/components/fields/display/DateFieldDisplay.js +1 -0
- package/dist/components/fields/display/DropdownDisplay.d.ts +21 -0
- package/dist/components/fields/display/DropdownDisplay.d.ts.map +1 -0
- package/dist/components/fields/display/DropdownDisplay.js +1 -0
- package/dist/components/fields/display/FileFieldDisplay.d.ts +21 -0
- package/dist/components/fields/display/FileFieldDisplay.d.ts.map +1 -0
- package/dist/components/fields/display/FileFieldDisplay.js +1 -0
- package/dist/components/fields/display/GeoPointFieldDisplay.d.ts +25 -0
- package/dist/components/fields/display/GeoPointFieldDisplay.d.ts.map +1 -0
- package/dist/components/fields/display/GeoPointFieldDisplay.js +1 -0
- package/dist/components/fields/display/HiddenFieldDisplay.d.ts +30 -0
- package/dist/components/fields/display/HiddenFieldDisplay.d.ts.map +1 -0
- package/dist/components/fields/display/HiddenFieldDisplay.js +1 -0
- package/dist/components/fields/display/ImageFieldDisplay.d.ts +24 -0
- package/dist/components/fields/display/ImageFieldDisplay.d.ts.map +1 -0
- package/dist/components/fields/display/ImageFieldDisplay.js +1 -0
- package/dist/components/fields/display/LinkFieldDisplay.d.ts +22 -0
- package/dist/components/fields/display/LinkFieldDisplay.d.ts.map +1 -0
- package/dist/components/fields/display/LinkFieldDisplay.js +1 -0
- package/dist/components/fields/display/MapFieldDisplay.d.ts +25 -0
- package/dist/components/fields/display/MapFieldDisplay.d.ts.map +1 -0
- package/dist/components/fields/display/MapFieldDisplay.js +1 -0
- package/dist/components/fields/display/MultiDropdownDisplay.d.ts +22 -0
- package/dist/components/fields/display/MultiDropdownDisplay.d.ts.map +1 -0
- package/dist/components/fields/display/MultiDropdownDisplay.js +1 -0
- package/dist/components/fields/display/MultiInputTextFieldDisplay.d.ts +22 -0
- package/dist/components/fields/display/MultiInputTextFieldDisplay.d.ts.map +1 -0
- package/dist/components/fields/display/MultiInputTextFieldDisplay.js +1 -0
- package/dist/components/fields/display/NumberFieldDisplay.d.ts +24 -0
- package/dist/components/fields/display/NumberFieldDisplay.d.ts.map +1 -0
- package/dist/components/fields/display/NumberFieldDisplay.js +1 -0
- package/dist/components/fields/display/PasswordFieldDisplay.d.ts +24 -0
- package/dist/components/fields/display/PasswordFieldDisplay.d.ts.map +1 -0
- package/dist/components/fields/display/PasswordFieldDisplay.js +1 -0
- package/dist/components/fields/display/PhoneNumberDisplay.d.ts +22 -0
- package/dist/components/fields/display/PhoneNumberDisplay.d.ts.map +1 -0
- package/dist/components/fields/display/PhoneNumberDisplay.js +1 -0
- package/dist/components/fields/display/RadioFieldDisplay.d.ts +22 -0
- package/dist/components/fields/display/RadioFieldDisplay.d.ts.map +1 -0
- package/dist/components/fields/display/RadioFieldDisplay.js +1 -0
- package/dist/components/fields/display/RangeFieldDisplay.d.ts +22 -0
- package/dist/components/fields/display/RangeFieldDisplay.d.ts.map +1 -0
- package/dist/components/fields/display/RangeFieldDisplay.js +1 -0
- package/dist/components/fields/display/ReferenceFieldDisplay.d.ts +22 -0
- package/dist/components/fields/display/ReferenceFieldDisplay.d.ts.map +1 -0
- package/dist/components/fields/display/ReferenceFieldDisplay.js +1 -0
- package/dist/components/fields/display/RichTextDisplay.d.ts +25 -0
- package/dist/components/fields/display/RichTextDisplay.d.ts.map +1 -0
- package/dist/components/fields/display/RichTextDisplay.js +61 -0
- package/dist/components/fields/display/TextAreaDisplay.d.ts +22 -0
- package/dist/components/fields/display/TextAreaDisplay.d.ts.map +1 -0
- package/dist/components/fields/display/TextAreaDisplay.js +1 -0
- package/dist/components/fields/display/TextFieldDisplay.d.ts +42 -0
- package/dist/components/fields/display/TextFieldDisplay.d.ts.map +1 -0
- package/dist/components/fields/display/TextFieldDisplay.js +1 -0
- package/dist/components/fields/display/TimestampFieldDisplay.d.ts +22 -0
- package/dist/components/fields/display/TimestampFieldDisplay.d.ts.map +1 -0
- package/dist/components/fields/display/TimestampFieldDisplay.js +1 -0
- package/dist/components/fields/display/index.d.ts +32 -0
- package/dist/components/fields/display/index.d.ts.map +1 -0
- package/dist/components/fields/display/index.js +1 -0
- package/dist/components/form/fields/AddressFieldComponent.js +1 -1
- package/dist/components/form/fields/AvatarFieldComponent.js +1 -1
- package/dist/components/form/fields/BadgeFieldComponent.js +1 -1
- package/dist/components/form/fields/ButtonFieldComponent.js +1 -1
- package/dist/components/form/fields/CheckboxFieldComponent.d.ts +3 -3
- package/dist/components/form/fields/CheckboxFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/CheckboxFieldComponent.js +1 -1
- package/dist/components/form/fields/ComboboxComponent.d.ts +6 -0
- package/dist/components/form/fields/ComboboxComponent.d.ts.map +1 -1
- package/dist/components/form/fields/ComboboxComponent.js +1 -1
- package/dist/components/form/fields/CurrencyFieldComponent.js +1 -1
- package/dist/components/form/fields/DateFieldComponent.js +1 -1
- package/dist/components/form/fields/DocumentFieldComponent.d.ts.map +1 -1
- package/dist/components/form/fields/DocumentFieldComponent.js +1 -1
- package/dist/components/form/fields/DropdownComponent.js +1 -1
- 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/GdprConsentFieldComponent.d.ts +26 -0
- package/dist/components/form/fields/GdprConsentFieldComponent.d.ts.map +1 -0
- package/dist/components/form/fields/GdprConsentFieldComponent.js +1 -0
- package/dist/components/form/fields/GeoPointFieldComponent.js +1 -1
- package/dist/components/form/fields/HiddenFieldComponent.js +1 -1
- package/dist/components/form/fields/ImageFieldComponent.d.ts +3 -2
- 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.js +1 -1
- package/dist/components/form/fields/MultiDropdownComponent.js +1 -1
- package/dist/components/form/fields/MultiInputTextFieldComponent.js +1 -1
- package/dist/components/form/fields/NumberFieldComponent.js +1 -1
- package/dist/components/form/fields/PasswordFieldComponent.js +1 -1
- 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/PriceFieldComponent.d.ts +34 -0
- package/dist/components/form/fields/PriceFieldComponent.d.ts.map +1 -0
- package/dist/components/form/fields/PriceFieldComponent.js +1 -0
- package/dist/components/form/fields/RadioFieldComponent.js +1 -1
- package/dist/components/form/fields/RangeFieldComponent.js +1 -1
- package/dist/components/form/fields/RatingFieldComponent.d.ts +37 -0
- package/dist/components/form/fields/RatingFieldComponent.d.ts.map +1 -0
- package/dist/components/form/fields/RatingFieldComponent.js +1 -0
- package/dist/components/form/fields/ReferenceFieldComponent.js +1 -1
- package/dist/components/form/fields/RichTextComponent.d.ts +2 -21
- package/dist/components/form/fields/RichTextComponent.d.ts.map +1 -1
- package/dist/components/form/fields/RichTextComponent.js +1 -1
- package/dist/components/form/fields/SwitchFieldComponent.js +1 -1
- 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.js +1 -1
- package/dist/components/form/fields/TimestampFieldComponent.js +1 -1
- package/dist/components/form/fields/index.d.ts +7 -1
- 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 +1 -1
- package/dist/components/form/fields/internal/TiptapEditor.d.ts.map +1 -1
- package/dist/components/form/fields/internal/TiptapEditor.js +2 -2
- package/dist/components/form/fields/types.d.ts +33 -0
- package/dist/components/form/fields/types.d.ts.map +1 -0
- package/dist/components/form/fields/types.js +0 -0
- package/dist/components/form/internal/ImageViewerDialog.d.ts +2 -1
- package/dist/components/form/internal/ImageViewerDialog.d.ts.map +1 -1
- package/dist/components/form/internal/ImageViewerDialog.js +1 -1
- package/dist/components/index.d.ts +4 -8
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +1 -1
- package/dist/contexts/UploadContext.d.ts.map +1 -1
- package/dist/contexts/UploadContext.js +1 -1
- package/dist/contexts/index.js +1 -1
- package/dist/fieldTypeRegistry.d.ts +92 -0
- package/dist/fieldTypeRegistry.d.ts.map +1 -0
- package/dist/fieldTypeRegistry.js +1 -0
- package/dist/forms/hooks/index.js +1 -1
- package/dist/forms/hooks/useController.js +1 -1
- package/dist/forms/hooks/useEntityField.js +1 -1
- package/dist/forms/hooks/useEntityForm.d.ts.map +1 -1
- package/dist/forms/hooks/useEntityForm.js +1 -1
- package/dist/forms/index.d.ts +2 -2
- package/dist/forms/index.d.ts.map +1 -1
- package/dist/forms/index.js +1 -1
- package/dist/forms/types.d.ts +15 -0
- package/dist/forms/types.d.ts.map +1 -1
- package/dist/forms/utils/getFieldsForOperation.js +1 -1
- package/dist/forms/utils/index.d.ts +0 -2
- package/dist/forms/utils/index.d.ts.map +1 -1
- package/dist/forms/utils/index.js +1 -1
- package/dist/forms/utils/isFieldEditable.js +1 -1
- package/dist/forms/utils/translateFieldLabel.js +1 -1
- package/dist/forms/utils/validateEntity.js +1 -1
- package/dist/hooks/index.d.ts +5 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -1
- package/dist/hooks/useEntityFavorites.d.ts +53 -0
- package/dist/hooks/useEntityFavorites.d.ts.map +1 -0
- package/dist/hooks/useEntityFavorites.js +1 -0
- package/dist/hooks/useFileUpload.d.ts.map +1 -1
- package/dist/hooks/useFileUpload.js +1 -1
- package/dist/hooks/useFormNavigationGuard.d.ts +34 -0
- package/dist/hooks/useFormNavigationGuard.d.ts.map +1 -0
- package/dist/hooks/useFormNavigationGuard.js +1 -0
- package/dist/hooks/useRelatedItems.d.ts +37 -0
- package/dist/hooks/useRelatedItems.d.ts.map +1 -0
- package/dist/hooks/useRelatedItems.js +1 -0
- package/dist/hooks/useUnsavedChangesWarning.d.ts +51 -0
- package/dist/hooks/useUnsavedChangesWarning.d.ts.map +1 -0
- package/dist/hooks/useUnsavedChangesWarning.js +1 -0
- package/dist/index.d.ts +9 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/registerBuiltinFieldTypes.d.ts +6 -0
- package/dist/registerBuiltinFieldTypes.d.ts.map +1 -0
- package/dist/registerBuiltinFieldTypes.js +1 -0
- package/dist/stores/FormStore.d.ts +17 -0
- package/dist/stores/FormStore.d.ts.map +1 -1
- package/dist/stores/FormStore.js +1 -1
- package/dist/stores/UploadStore.js +1 -1
- package/dist/stores/index.d.ts +1 -1
- package/dist/stores/index.d.ts.map +1 -1
- package/dist/stores/index.js +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types.d.ts +202 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +0 -0
- package/dist/useBaseCrudList.d.ts +53 -0
- package/dist/useBaseCrudList.d.ts.map +1 -0
- package/dist/useBaseCrudList.js +1 -0
- package/dist/useCrud.d.ts +4 -8
- package/dist/useCrud.d.ts.map +1 -1
- package/dist/useCrud.js +1 -1
- package/dist/useCrudCardList.d.ts +10 -4
- package/dist/useCrudCardList.d.ts.map +1 -1
- package/dist/useCrudCardList.js +1 -1
- package/dist/useCrudList.d.ts +19 -5
- package/dist/useCrudList.d.ts.map +1 -1
- package/dist/useCrudList.js +1 -1
- package/dist/utils/collections.js +1 -1
- package/dist/utils/fileStorage.js +1 -1
- package/dist/utils/imageProcessing.js +1 -1
- package/dist/utils/imageStorage.js +1 -1
- package/dist/utils/imageUtils.js +1 -1
- package/dist/utils/mergeWithOptimistic.d.ts +5 -6
- package/dist/utils/mergeWithOptimistic.d.ts.map +1 -1
- package/dist/utils/mergeWithOptimistic.js +1 -1
- package/dist/utils/scopeUtils.d.ts +38 -0
- package/dist/utils/scopeUtils.d.ts.map +1 -0
- package/dist/utils/scopeUtils.js +1 -0
- package/dist/utils/uploadValidation.d.ts.map +1 -1
- package/dist/utils/uploadValidation.js +1 -1
- package/package.json +24 -17
- package/dist/components/EntityCardList.d.ts +0 -27
- package/dist/components/EntityCardList.d.ts.map +0 -1
- package/dist/components/EntityCardList.js +0 -1
- package/dist/components/EntityList.d.ts +0 -24
- package/dist/components/EntityList.d.ts.map +0 -1
- package/dist/components/EntityList.js +0 -1
- package/dist/forms/utils/optionHelpers.d.ts +0 -54
- package/dist/forms/utils/optionHelpers.d.ts.map +0 -1
- package/dist/forms/utils/optionHelpers.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function n(s,e){const o=[],a=new Set;for(const i of s){const t=e[i.id];t?.operation!=="delete"&&(t?.operation==="update"&&t.optimisticData?o.push(t.optimisticData):o.push(i),a.add(i.id))}for(const[i,t]of Object.entries(e))t.operation==="add"&&!a.has(i)&&t.optimisticData&&o.push(t.optimisticData);return o}export{n as mergeWithOptimistic};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ScopeConfig } from '@donotdev/core';
|
|
2
|
+
import type { QueryOptions } from '../CrudService';
|
|
3
|
+
/**
|
|
4
|
+
* Injects scope value into data object for create/update operations
|
|
5
|
+
*
|
|
6
|
+
* @param data - Original data
|
|
7
|
+
* @param scope - Scope configuration from entity
|
|
8
|
+
* @returns Data with scope value injected
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const scopedData = injectScope({ name: 'Acme' }, scope);
|
|
13
|
+
* // Result: { name: 'Acme', companyId: 'abc123' }
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export declare function injectScope<T>(data: T, scope: ScopeConfig | undefined): T;
|
|
17
|
+
/**
|
|
18
|
+
* Injects scope filter into query options for list/query operations
|
|
19
|
+
*
|
|
20
|
+
* @param queryOptions - Original query options
|
|
21
|
+
* @param scope - Scope configuration from entity
|
|
22
|
+
* @returns Query options with scope filter added
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* const scopedOptions = injectScopeFilter({ orderBy: [{ field: 'name' }] }, scope);
|
|
27
|
+
* // Result: { orderBy: [...], where: [{ field: 'companyId', operator: '==', value: 'abc123' }] }
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare function injectScopeFilter(queryOptions: QueryOptions | undefined, scope: ScopeConfig | undefined): QueryOptions;
|
|
31
|
+
/**
|
|
32
|
+
* Gets current scope value for cache key generation
|
|
33
|
+
*
|
|
34
|
+
* @param scope - Scope configuration from entity
|
|
35
|
+
* @returns Scope value or null
|
|
36
|
+
*/
|
|
37
|
+
export declare function getCurrentScopeValue(scope: ScopeConfig | undefined): string | null;
|
|
38
|
+
//# sourceMappingURL=scopeUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scopeUtils.d.ts","sourceRoot":"","sources":["../../src/utils/scopeUtils.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,CAAC,CAkBzE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,YAAY,GAAG,SAAS,EACtC,KAAK,EAAE,WAAW,GAAG,SAAS,GAC7B,YAAY,CA4Bd;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,WAAW,GAAG,SAAS,GAC7B,MAAM,GAAG,IAAI,CAGf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{getScopeValue as n}from"@donotdev/core";function u(r,t){if(!t)return r;const e=n(t.provider);return e?{...r,[t.field]:e}:r}function c(r,t){const e=r??{};if(!t)return e;const i=n(t.provider);if(!i)return e;const o={field:t.field,operator:"==",value:i};return{...e,where:e.where?[...e.where,o]:[o]}}function f(r){return r?n(r.provider):null}export{f as getCurrentScopeValue,u as injectScope,c as injectScopeFilter};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploadValidation.d.ts","sourceRoot":"","sources":["../../src/utils/uploadValidation.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGjD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"uploadValidation.d.ts","sourceRoot":"","sources":["../../src/utils/uploadValidation.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGjD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAGzD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,SAAK,GAAG,MAAM,EAAE,CA2C/D;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAE9C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";function
|
|
1
|
+
"use client";function e(t){return!t||typeof t!="string"?!1:t.startsWith("https://")&&!t.startsWith("blob:")}function n(t){return!t||typeof t!="object"?!1:e(t.fullUrl)&&e(t.thumbUrl)}function u(t,o=""){const s=[];if(t==null)return s;if(typeof t=="string")return t.startsWith("blob:")&&s.push(o||"root"),s;if(typeof t!="object")return s;if(Array.isArray(t))t.forEach((l,r)=>{const i=o?`${o}[${r}]`:`[${r}]`;s.push(...u(l,i))});else if(t.fullUrl!==void 0&&t.thumbUrl!==void 0){if(!e(t.fullUrl)||!e(t.thumbUrl)){const l=o||"root";s.push(`${l}.fullUrl or ${l}.thumbUrl contains blob URL`)}}else Object.entries(t).forEach(([l,r])=>{const i=o?`${o}.${l}`:l;s.push(...u(r,i))});return s}function f(t){return u(t).length>0}export{u as checkForBlobUrls,f as hasBlobUrls,e as isStorageUrl,n as validatePicture};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@donotdev/crud",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.10",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
}
|
|
16
16
|
},
|
|
17
17
|
"sideEffects": [
|
|
18
|
-
"./src/builtinFieldTypes.tsx"
|
|
18
|
+
"./src/builtinFieldTypes.tsx",
|
|
19
|
+
"./src/registerBuiltinFieldTypes.tsx"
|
|
19
20
|
],
|
|
20
21
|
"files": [
|
|
21
22
|
"dist",
|
|
@@ -49,35 +50,41 @@
|
|
|
49
50
|
"type-check": "tsc --noEmit"
|
|
50
51
|
},
|
|
51
52
|
"dependencies": {
|
|
52
|
-
"@
|
|
53
|
-
"@
|
|
53
|
+
"@dnd-kit/core": "^6.3.1",
|
|
54
|
+
"@dnd-kit/sortable": "^10.0.0",
|
|
55
|
+
"@dnd-kit/utilities": "^3.2.2",
|
|
56
|
+
"@donotdev/components": "^0.0.15",
|
|
57
|
+
"@donotdev/core": "^0.0.19",
|
|
54
58
|
"@hookform/resolvers": "^5.2.2",
|
|
55
59
|
"react-easy-crop": "^5.5.6"
|
|
56
60
|
},
|
|
57
61
|
"peerDependencies": {
|
|
58
|
-
"@donotdev/firebase": "^0.0.
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"react": "^19.
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"
|
|
62
|
+
"@donotdev/firebase": "^0.0.8",
|
|
63
|
+
"@tiptap/extension-placeholder": "^3.19.0",
|
|
64
|
+
"@tiptap/pm": "^3.19.0",
|
|
65
|
+
"@tiptap/react": "^3.19.0",
|
|
66
|
+
"@tiptap/starter-kit": "^3.19.0",
|
|
67
|
+
"firebase": "^12.8.0",
|
|
68
|
+
"lucide-react": "^0.563.0",
|
|
69
|
+
"react": "^19.2.4",
|
|
70
|
+
"react-dom": "^19.2.4",
|
|
71
|
+
"react-hook-form": "^7.71.1",
|
|
72
|
+
"valibot": "^1.2.0"
|
|
69
73
|
},
|
|
70
74
|
"peerDependenciesMeta": {
|
|
71
|
-
"@tiptap/
|
|
75
|
+
"@tiptap/extension-placeholder": {
|
|
72
76
|
"optional": true
|
|
73
77
|
},
|
|
74
78
|
"@tiptap/pm": {
|
|
75
79
|
"optional": true
|
|
76
80
|
},
|
|
81
|
+
"@tiptap/react": {
|
|
82
|
+
"optional": true
|
|
83
|
+
},
|
|
77
84
|
"@tiptap/starter-kit": {
|
|
78
85
|
"optional": true
|
|
79
86
|
},
|
|
80
|
-
"
|
|
87
|
+
"tiptap": {
|
|
81
88
|
"optional": true
|
|
82
89
|
}
|
|
83
90
|
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import type { Entity } from '@donotdev/core';
|
|
2
|
-
export interface EntityCardListProps {
|
|
3
|
-
/** The entity definition */
|
|
4
|
-
entity: Entity;
|
|
5
|
-
/** Optional view handler. If not provided, defaults to navigate(`/${entity.collection}/${id}`) */
|
|
6
|
-
onView?: (id: string) => void;
|
|
7
|
-
/** Grid columns (responsive) - defaults to [1, 2, 3, 4] */
|
|
8
|
-
cols?: number | [number, number, number, number];
|
|
9
|
-
/** Cache stale time is ms - defaults to 30 mins */
|
|
10
|
-
staleTime?: number;
|
|
11
|
-
/** Optional filter function to filter items client-side */
|
|
12
|
-
filter?: (item: any) => boolean;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Entity Card List Component - Card grid view for public/user-facing browsing
|
|
16
|
-
*
|
|
17
|
-
* Features:
|
|
18
|
-
* - Responsive card grid layout
|
|
19
|
-
* - Image + key fields display
|
|
20
|
-
* - Click card to navigate to detail
|
|
21
|
-
* - Simple formatted text display (no boxes, just labels + values)
|
|
22
|
-
* - Empty state handling
|
|
23
|
-
* - Default routing: `/${entity.collection}/${id}` for view
|
|
24
|
-
*/
|
|
25
|
-
export declare function EntityCardList({ entity, onView, cols, staleTime, // 30 minutes default cache
|
|
26
|
-
filter, }: EntityCardListProps): import("react/jsx-runtime").JSX.Element;
|
|
27
|
-
//# sourceMappingURL=EntityCardList.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EntityCardList.d.ts","sourceRoot":"","sources":["../../src/components/EntityCardList.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAO7C,MAAM,WAAW,mBAAmB;IAClC,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,kGAAkG;IAClG,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;CACjC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,MAAM,EACN,IAAmB,EACnB,SAA0B,EAAE,2BAA2B;AACvD,MAAM,GACP,EAAE,mBAAmB,2CAsKrB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use client";import{jsx as l,jsxs as p}from"react/jsx-runtime";import{useMemo as d,useCallback as A}from"react";import{Grid as I,Card as T,Stack as h,Text as c,Spinner as U}from"@donotdev/components";import{useTranslation as k}from"@donotdev/core";import{useNavigate as D}from"@donotdev/ui";import{translateFieldLabel as O}from"../forms/utils";import{useCrudCardList as R}from"../useCrudCardList";import{formatValue as _}from"./DisplayFieldRenderer";function J({entity:r,onView:u,cols:w=[1,2,3,4],staleTime:L=1e3*60*30,filter:m}){const v=D(),{data:S,loading:y}=R(r,{staleTime:L}),f=S?.items||[],C=d(()=>m?f.filter(m):f,[f,m]),$=`entity-${r.name.toLowerCase()}`,{t:F}=k($),{t:b}=k("crud"),V=A(e=>{u?u(e):v(`/${r.collection}/${e}`)},[u,v,r.collection]),s=d(()=>{const e=r.listCardFields??r.listFields;return e&&e.length>0?e:Object.keys(r.fields).slice(0,4)},[r.listCardFields,r.listFields,r.fields]),o=d(()=>{const e=s.filter(a=>{const i=r.fields[a];return i?.type==="image"||i?.type==="images"});return e.length>0?e[0]:Object.keys(r.fields).filter(a=>{const i=r.fields[a];return i?.type==="image"||i?.type==="images"})[0]||null},[s,r.fields]),j=d(()=>s.filter(e=>e!==o),[s,o]);return y?l(U,{overlay:!0}):C.length===0?p(h,{align:"center",justify:"center",gap:"medium",style:{padding:"var(--gap-3xl)",textAlign:"center"},children:[l(c,{level:"h3",style:{color:"var(--muted-foreground)"},children:b("emptyState.title",{defaultValue:`No ${r.name.toLowerCase()} found`})}),l(c,{style:{color:"var(--muted-foreground)"},children:b("emptyState.description",{defaultValue:`No ${r.name.toLowerCase()} available at this time.`})})]}):l(I,{cols:w,gap:"medium",children:C.map(e=>{const t=o?e[o]:null,a=t?typeof t=="string"?t:t?.url||t?.thumbUrl||Array.isArray(t)&&t[0]?.url||t[0]?.thumbUrl||t[0]:null,i=j[0],x=i?e[i]:e.id;return l(T,{title:String(x||""),clickable:!0,onClick:()=>V(e.id),elevated:!0,children:p(h,{direction:"column",gap:"medium",children:[a&&l("div",{style:{width:"100%",aspectRatio:"16/9",borderRadius:"var(--radius-md)",overflow:"hidden",backgroundColor:"var(--muted)"},children:l("img",{src:a,alt:String(x||""),style:{width:"100%",height:"100%",objectFit:"cover"}})}),l(h,{direction:"column",gap:"tight",children:j.slice(1,4).map(n=>{const g=r.fields[n];return g?p("div",{children:[l(c,{level:"small",variant:"muted",children:O(n,g,F)}),l(c,{children:_(e[n],g,F,{compact:!0})})]},n):null})})]})},e.id)})})}export{J as EntityCardList};
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { Entity } from '@donotdev/core';
|
|
2
|
-
export interface EntityListProps {
|
|
3
|
-
/** The entity definition */
|
|
4
|
-
entity: Entity;
|
|
5
|
-
/** Current user role (for UI toggle only - backend enforces security) */
|
|
6
|
-
userRole?: string;
|
|
7
|
-
/** Optional edit handler. If not provided, defaults to navigate(`/${entity.collection}/${id}`) */
|
|
8
|
-
onEdit?: (id: string) => void;
|
|
9
|
-
/** Optional view handler (row click). If not provided, defaults to navigate(`/${entity.collection}/${id}`) */
|
|
10
|
-
onView?: (id: string) => void;
|
|
11
|
-
/** Fields to show as filters (array of field names) */
|
|
12
|
-
filterFields?: string[];
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Entity List Component - Table view for admin/internal operations
|
|
16
|
-
*
|
|
17
|
-
* Features:
|
|
18
|
-
* - Filters section (collapsible) with actions and filter inputs
|
|
19
|
-
* - Results section (collapsible) with DataTable
|
|
20
|
-
* - Excel-like table display with formatted values
|
|
21
|
-
* - Edit and Delete actions (admin only)
|
|
22
|
-
*/
|
|
23
|
-
export declare function EntityList({ entity, userRole, onEdit, onView, filterFields, }: EntityListProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
-
//# sourceMappingURL=EntityList.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EntityList.d.ts","sourceRoot":"","sources":["../../src/components/EntityList.tsx"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAU7C,MAAM,WAAW,eAAe;IAC9B,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kGAAkG;IAClG,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,8GAA8G;IAC9G,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,QAAkB,EAClB,MAAM,EACN,MAAM,EACN,YAAiB,GAClB,EAAE,eAAe,2CAsVjB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use client";import{jsx as i,jsxs as m,Fragment as K}from"react/jsx-runtime";import{RefreshCw as N,Plus as U,Trash2 as W,Edit as X,Search as Y}from"lucide-react";import{useMemo as y,useCallback as f,useState as I}from"react";import{DataTable as Z,Button as b,Stack as k,ActionButton as ee,Section as R,Input as _,Select as te}from"@donotdev/components";import{useTranslation as B}from"@donotdev/core";import{useNavigate as le}from"@donotdev/ui";import{translateFieldLabel as P}from"../forms/utils";import{useCrud as ae}from"../useCrud";import{useCrudList as ne}from"../useCrudList";import{formatValue as re}from"./DisplayFieldRenderer";function ve({entity:a,userRole:oe="guest",onEdit:w,onView:C,filterFields:h=[]}){const p=le(),{data:E,loading:v,mutate:x}=ne(a),{delete:j}=ae(a),{t}=B("crud"),L=E?.items||[],Q=`entity-${a.name.toLowerCase()}`,{t:c}=B(Q),[s,T]=I({}),[g,M]=I(""),q=f(async()=>{await x()},[x]),F=f(e=>{w?w(e):p(`/${a.collection}/${e}`)},[w,p,a.collection]),z=f(e=>{C?C(e):p(`/${a.collection}/${e}`)},[C,p,a.collection]),D=f(async e=>{await j(e)},[j]),V=f((e,o)=>{T(n=>({...n,[e]:o||void 0}))},[]),$=f(()=>{T({})},[]),O=y(()=>{let e=L;if(g){const o=g.toLowerCase();e=e.filter(n=>Object.values(n).some(l=>l==null?!1:String(l).toLowerCase().includes(o)))}return h.length>0&&Object.keys(s).length>0&&(e=e.filter(o=>Object.entries(s).every(([n,l])=>{if(!l)return!0;const r=o[n];if(r==null)return!1;const u=String(l).toLowerCase();return String(r).toLowerCase().includes(u)}))),e},[L,g,s,h.length]),G=y(()=>h.length===0?null:m(k,{direction:"row",wrap:"wrap",children:[h.map(e=>{const o=a.fields[e];if(!o)return null;const n=P(e,o,c),l=o.type||"text";if(l==="select"||l==="radio"){const r=o.validation?.options||[],u=Array.isArray(r)?r:typeof r=="function"?r():[];return i(te,{label:n,value:s[e]||"",onValueChange:d=>V(e,d),options:u.map(d=>({value:d.value,label:d.label})),placeholder:t("filter.selectPlaceholder",{defaultValue:"All"})},e)}return i(_,{label:n,value:s[e]||"",onChange:r=>V(e,r.target.value),placeholder:t("filter.placeholder",{defaultValue:"Filter..."})},e)}),Object.keys(s).length>0&&i(b,{variant:"outline",onClick:$,children:t("filter.clear",{defaultValue:"Clear Filters"})})]}),[h,a.fields,c,t,s,V,$]),H=y(()=>{const o=(a.listFields||Object.keys(a.fields)).map(n=>{const l=a.fields[n];if(!l)return null;const r=P(n,l,c),u=l.type||"text";return{key:n,title:r,dataIndex:n,sortable:!0,filterable:!0,align:u==="number"||u==="range"?"end":"start",render:(J,se)=>re(J,l,c,{compact:!0})}}).filter(Boolean);return o.unshift({key:"_actions",title:"",dataIndex:void 0,sortable:!1,filterable:!1,width:120,align:"center",render:(n,l)=>m(k,{direction:"row",gap:"tight",align:"center",justify:"center",children:[i(b,{variant:"outline",icon:X,onClick:r=>{r.stopPropagation(),F(l.id)},"aria-label":t("edit",{defaultValue:"Edit"})}),i(ee,{action:async()=>{await D(l.id)},confirmText:t("delete.confirm",{defaultValue:"Are you sure you want to delete this item?"}),confirmTitle:t("delete.title",{defaultValue:"Delete Item"}),loadingText:t("delete.loading",{defaultValue:"Deleting..."}),variant:"destructive",icon:W,"aria-label":t("delete",{defaultValue:"Delete"}),children:t("delete",{defaultValue:"Delete"})})]})}),o},[a,c,t,F,D]),A=c("name",{defaultValue:a.name}),S=O.length;return m(K,{children:[m(R,{title:t("filters.title",{entity:A,defaultValue:`Browse ${A} - Filters`}),collapsible:!0,defaultOpen:!0,children:[m(k,{direction:"row",gap:"tight",align:"center",className:"dndev-w-full",children:[i("div",{className:"dndev-flex-1",children:i(_,{placeholder:t("search.placeholder",{defaultValue:"Search..."}),value:g,onChange:e=>M(e.target.value),icon:Y,className:"dndev-w-full"})}),i(b,{icon:N,variant:"outline",onClick:q,disabled:v,display:"compact","aria-label":t("refresh",{defaultValue:"Refresh"})}),i(b,{icon:U,onClick:()=>p(`/${a.collection}/new`),display:"compact",children:t("addNew",{defaultValue:"Add New"})})]}),G]}),i(R,{title:v?t("results.title.fetching",{defaultValue:"Fetching..."}):t("results.title.count",{count:S,defaultValue:S===1?"Found 1 occurrence":`Found ${S} occurrences`}),collapsible:!0,defaultOpen:!0,children:i(Z,{data:O,columns:H,sortable:!0,filterable:!1,searchable:!1,pagination:!0,loading:v,onRowClick:e=>z(e.id)})})]})}export{ve as EntityList};
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Option generation helpers for select fields
|
|
3
|
-
* @description Simple utilities to generate options arrays for select/dropdown fields.
|
|
4
|
-
*
|
|
5
|
-
* @version 0.0.1
|
|
6
|
-
* @since 0.0.1
|
|
7
|
-
* @author AMBROISE PARK Consulting
|
|
8
|
-
*/
|
|
9
|
-
/** Standard option format for select fields */
|
|
10
|
-
export interface SelectOption {
|
|
11
|
-
value: string;
|
|
12
|
-
label: string;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Generates year options for a select field.
|
|
16
|
-
*
|
|
17
|
-
* @param startYear - First year in the range
|
|
18
|
-
* @param endYear - Last year in the range (defaults to current year)
|
|
19
|
-
* @param descending - Whether to sort descending (newest first, default: true)
|
|
20
|
-
* @returns Array of options with value and label
|
|
21
|
-
*
|
|
22
|
-
* @example
|
|
23
|
-
* ```ts
|
|
24
|
-
* // In entity definition
|
|
25
|
-
* year: {
|
|
26
|
-
* type: 'select',
|
|
27
|
-
* validation: {
|
|
28
|
-
* required: true,
|
|
29
|
-
* options: yearOptions(1995) // 2026, 2025, 2024, ... 1995
|
|
30
|
-
* }
|
|
31
|
-
* }
|
|
32
|
-
* ```
|
|
33
|
-
*/
|
|
34
|
-
export declare function yearOptions(startYear: number, endYear?: number, descending?: boolean): SelectOption[];
|
|
35
|
-
/**
|
|
36
|
-
* Generates numeric range options for a select field.
|
|
37
|
-
*
|
|
38
|
-
* @param start - First number in the range
|
|
39
|
-
* @param end - Last number in the range
|
|
40
|
-
* @param step - Increment between numbers (default: 1)
|
|
41
|
-
* @param descending - Whether to sort descending (default: false)
|
|
42
|
-
* @returns Array of options with value and label
|
|
43
|
-
*
|
|
44
|
-
* @example
|
|
45
|
-
* ```ts
|
|
46
|
-
* // Quantities 1-10
|
|
47
|
-
* options: rangeOptions(1, 10)
|
|
48
|
-
*
|
|
49
|
-
* // Percentages 0-100 by 10
|
|
50
|
-
* options: rangeOptions(0, 100, 10)
|
|
51
|
-
* ```
|
|
52
|
-
*/
|
|
53
|
-
export declare function rangeOptions(start: number, end: number, step?: number, descending?: boolean): SelectOption[];
|
|
54
|
-
//# sourceMappingURL=optionHelpers.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"optionHelpers.d.ts","sourceRoot":"","sources":["../../../src/forms/utils/optionHelpers.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,+CAA+C;AAC/C,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,WAAW,CACzB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,MAAiC,EAC1C,UAAU,GAAE,OAAc,GACzB,YAAY,EAAE,CAchB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,MAAU,EAChB,UAAU,GAAE,OAAe,GAC1B,YAAY,EAAE,CAchB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function o(n,t=new Date().getFullYear(),i=!0){const r=[];if(i)for(let e=t;e>=n;e--)r.push({value:String(e),label:String(e)});else for(let e=n;e<=t;e++)r.push({value:String(e),label:String(e)});return r}function u(n,t,i=1,r=!1){const e=[];if(r)for(let l=t;l>=n;l-=i)e.push({value:String(l),label:String(l)});else for(let l=n;l<=t;l+=i)e.push({value:String(l),label:String(l)});return e}export{u as rangeOptions,o as yearOptions};
|