@strato-admin/faker-ecommerce 0.1.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dataProvider.js +1 -2
- package/dist/generate.d.ts +2 -1
- package/dist/generate.js +15 -8
- package/dist/ra-core/src/auth/LogoutOnMount.d.ts +8 -0
- package/dist/ra-core/src/auth/LogoutOnMount.js +16 -0
- package/dist/ra-core/src/auth/addRefreshAuthToAuthProvider.d.ts +22 -0
- package/dist/ra-core/src/auth/addRefreshAuthToAuthProvider.js +41 -0
- package/dist/ra-core/src/auth/addRefreshAuthToDataProvider.d.ts +21 -0
- package/dist/ra-core/src/auth/addRefreshAuthToDataProvider.js +30 -0
- package/dist/ra-core/src/auth/convertLegacyAuthProvider.d.ts +12 -0
- package/dist/ra-core/src/auth/convertLegacyAuthProvider.js +19 -0
- package/dist/ra-core/src/auth/index.d.ts +27 -0
- package/dist/ra-core/src/auth/index.js +34 -0
- package/dist/ra-core/src/auth/types.d.ts +7 -0
- package/dist/ra-core/src/auth/types.js +5 -0
- package/dist/ra-core/src/auth/useAuthProvider.d.ts +10 -0
- package/dist/ra-core/src/auth/useAuthProvider.js +11 -0
- package/dist/ra-core/src/auth/useAuthState.d.ts +48 -0
- package/dist/ra-core/src/auth/useAuthState.js +171 -0
- package/dist/ra-core/src/auth/useAuthenticated.d.ts +36 -0
- package/dist/ra-core/src/auth/useAuthenticated.js +34 -0
- package/dist/ra-core/src/auth/useCanAccess.d.ts +56 -0
- package/dist/ra-core/src/auth/useCanAccess.js +108 -0
- package/dist/ra-core/src/auth/useCanAccessCallback.d.ts +39 -0
- package/dist/ra-core/src/auth/useCanAccessCallback.js +45 -0
- package/dist/ra-core/src/auth/useCanAccessResources.d.ts +67 -0
- package/dist/ra-core/src/auth/useCanAccessResources.js +92 -0
- package/dist/ra-core/src/auth/useCheckAuth.d.ts +48 -0
- package/dist/ra-core/src/auth/useCheckAuth.js +76 -0
- package/dist/ra-core/src/auth/useGetIdentity.d.ts +41 -0
- package/dist/ra-core/src/auth/useGetIdentity.js +86 -0
- package/dist/ra-core/src/auth/useGetPermissions.d.ts +41 -0
- package/dist/ra-core/src/auth/useGetPermissions.js +47 -0
- package/dist/ra-core/src/auth/useHandleAuthCallback.d.ts +20 -0
- package/dist/ra-core/src/auth/useHandleAuthCallback.js +83 -0
- package/dist/ra-core/src/auth/useIsAuthPending.d.ts +13 -0
- package/dist/ra-core/src/auth/useIsAuthPending.js +30 -0
- package/dist/ra-core/src/auth/useLogin.d.ts +34 -0
- package/dist/ra-core/src/auth/useLogin.js +78 -0
- package/dist/ra-core/src/auth/useLogout.d.ts +31 -0
- package/dist/ra-core/src/auth/useLogout.js +117 -0
- package/dist/ra-core/src/auth/useLogoutIfAccessDenied.d.ts +42 -0
- package/dist/ra-core/src/auth/useLogoutIfAccessDenied.js +111 -0
- package/dist/ra-core/src/auth/usePermissions.d.ts +41 -0
- package/dist/ra-core/src/auth/usePermissions.js +123 -0
- package/dist/ra-core/src/controller/button/index.d.ts +7 -0
- package/dist/ra-core/src/controller/button/index.js +7 -0
- package/dist/ra-core/src/controller/button/useBulkDeleteController.d.ts +14 -0
- package/dist/ra-core/src/controller/button/useBulkDeleteController.js +66 -0
- package/dist/ra-core/src/controller/create/index.d.ts +6 -0
- package/dist/ra-core/src/controller/create/index.js +6 -0
- package/dist/ra-core/src/controller/create/useCreateController.d.ts +50 -0
- package/dist/ra-core/src/controller/create/useCreateController.js +149 -0
- package/dist/ra-core/src/controller/edit/index.d.ts +6 -0
- package/dist/ra-core/src/controller/edit/index.js +6 -0
- package/dist/ra-core/src/controller/edit/useEditController.d.ts +72 -0
- package/dist/ra-core/src/controller/edit/useEditController.js +206 -0
- package/dist/ra-core/src/controller/field/index.d.ts +12 -0
- package/dist/ra-core/src/controller/field/index.js +12 -0
- package/dist/ra-core/src/controller/field/sanitizeFieldRestProps.d.ts +1 -0
- package/dist/ra-core/src/controller/field/sanitizeFieldRestProps.js +1 -0
- package/dist/ra-core/src/controller/field/types.d.ts +28 -0
- package/dist/ra-core/src/controller/field/types.js +1 -0
- package/dist/ra-core/src/controller/field/useReferenceArrayFieldController.d.ts +39 -0
- package/dist/ra-core/src/controller/field/useReferenceArrayFieldController.js +82 -0
- package/dist/ra-core/src/controller/field/useReferenceFieldController.d.ts +14 -0
- package/dist/ra-core/src/controller/field/useReferenceFieldController.js +31 -0
- package/dist/ra-core/src/controller/field/useReferenceManyFieldController.d.ts +49 -0
- package/dist/ra-core/src/controller/field/useReferenceManyFieldController.js +264 -0
- package/dist/ra-core/src/controller/index.d.ts +17 -0
- package/dist/ra-core/src/controller/index.js +16 -0
- package/dist/ra-core/src/controller/input/ArrayInputContext.d.ts +9 -0
- package/dist/ra-core/src/controller/input/ArrayInputContext.js +8 -0
- package/dist/ra-core/src/controller/input/SimpleFormIteratorContext.d.ts +15 -0
- package/dist/ra-core/src/controller/input/SimpleFormIteratorContext.js +8 -0
- package/dist/ra-core/src/controller/input/SimpleFormIteratorItemContext.d.ts +13 -0
- package/dist/ra-core/src/controller/input/SimpleFormIteratorItemContext.js +8 -0
- package/dist/ra-core/src/controller/input/index.d.ts +17 -0
- package/dist/ra-core/src/controller/input/index.js +17 -0
- package/dist/ra-core/src/controller/input/referenceDataStatus.d.ts +32 -0
- package/dist/ra-core/src/controller/input/referenceDataStatus.js +74 -0
- package/dist/ra-core/src/controller/input/sanitizeInputRestProps.d.ts +1 -0
- package/dist/ra-core/src/controller/input/sanitizeInputRestProps.js +1 -0
- package/dist/ra-core/src/controller/input/types.d.ts +3 -0
- package/dist/ra-core/src/controller/input/types.js +1 -0
- package/dist/ra-core/src/controller/input/useArrayInput.d.ts +8 -0
- package/dist/ra-core/src/controller/input/useArrayInput.js +29 -0
- package/dist/ra-core/src/controller/input/useGetArrayInputNewItemDefaults.d.ts +3 -0
- package/dist/ra-core/src/controller/input/useGetArrayInputNewItemDefaults.js +37 -0
- package/dist/ra-core/src/controller/input/useReferenceArrayInputController.d.ts +48 -0
- package/dist/ra-core/src/controller/input/useReferenceArrayInputController.js +137 -0
- package/dist/ra-core/src/controller/input/useReferenceInputController.d.ts +54 -0
- package/dist/ra-core/src/controller/input/useReferenceInputController.js +208 -0
- package/dist/ra-core/src/controller/input/useReferenceParams.d.ts +106 -0
- package/dist/ra-core/src/controller/input/useReferenceParams.js +226 -0
- package/dist/ra-core/src/controller/input/useSimpleFormIterator.d.ts +7 -0
- package/dist/ra-core/src/controller/input/useSimpleFormIterator.js +15 -0
- package/dist/ra-core/src/controller/input/useSimpleFormIteratorItem.d.ts +7 -0
- package/dist/ra-core/src/controller/input/useSimpleFormIteratorItem.js +15 -0
- package/dist/ra-core/src/controller/list/InfinitePaginationContext.d.ts +25 -0
- package/dist/ra-core/src/controller/list/InfinitePaginationContext.js +32 -0
- package/dist/ra-core/src/controller/list/index.d.ts +30 -0
- package/dist/ra-core/src/controller/list/index.js +30 -0
- package/dist/ra-core/src/controller/list/queryReducer.d.ts +45 -0
- package/dist/ra-core/src/controller/list/queryReducer.js +85 -0
- package/dist/ra-core/src/controller/list/useFilterContext.d.ts +2 -0
- package/dist/ra-core/src/controller/list/useFilterContext.js +5 -0
- package/dist/ra-core/src/controller/list/useInfiniteListController.d.ts +44 -0
- package/dist/ra-core/src/controller/list/useInfiniteListController.js +175 -0
- package/dist/ra-core/src/controller/list/useInfinitePaginationContext.d.ts +16 -0
- package/dist/ra-core/src/controller/list/useInfinitePaginationContext.js +17 -0
- package/dist/ra-core/src/controller/list/useList.d.ts +55 -0
- package/dist/ra-core/src/controller/list/useList.js +223 -0
- package/dist/ra-core/src/controller/list/useListContext.d.ts +59 -0
- package/dist/ra-core/src/controller/list/useListContext.js +65 -0
- package/dist/ra-core/src/controller/list/useListContextWithProps.d.ts +44 -0
- package/dist/ra-core/src/controller/list/useListContextWithProps.js +84 -0
- package/dist/ra-core/src/controller/list/useListController.d.ts +296 -0
- package/dist/ra-core/src/controller/list/useListController.js +234 -0
- package/dist/ra-core/src/controller/list/useListFilterContext.d.ts +11 -0
- package/dist/ra-core/src/controller/list/useListFilterContext.js +18 -0
- package/dist/ra-core/src/controller/list/useListPaginationContext.d.ts +12 -0
- package/dist/ra-core/src/controller/list/useListPaginationContext.js +19 -0
- package/dist/ra-core/src/controller/list/useListParams.d.ts +116 -0
- package/dist/ra-core/src/controller/list/useListParams.js +281 -0
- package/dist/ra-core/src/controller/list/useListSortContext.d.ts +12 -0
- package/dist/ra-core/src/controller/list/useListSortContext.js +19 -0
- package/dist/ra-core/src/controller/list/useRecordSelection.d.ts +32 -0
- package/dist/ra-core/src/controller/list/useRecordSelection.js +93 -0
- package/dist/ra-core/src/controller/list/useSavedQueries.d.ts +14 -0
- package/dist/ra-core/src/controller/list/useSavedQueries.js +29 -0
- package/dist/ra-core/src/controller/list/useUnselect.d.ts +10 -0
- package/dist/ra-core/src/controller/list/useUnselect.js +18 -0
- package/dist/ra-core/src/controller/list/useUnselectAll.d.ts +9 -0
- package/dist/ra-core/src/controller/list/useUnselectAll.js +18 -0
- package/dist/ra-core/src/controller/record/index.d.ts +5 -0
- package/dist/ra-core/src/controller/record/index.js +5 -0
- package/dist/ra-core/src/controller/record/useRecordContext.d.ts +34 -0
- package/dist/ra-core/src/controller/record/useRecordContext.js +36 -0
- package/dist/ra-core/src/controller/saveContext/SaveContext.d.ts +20 -0
- package/dist/ra-core/src/controller/saveContext/SaveContext.js +2 -0
- package/dist/ra-core/src/controller/saveContext/index.d.ts +6 -0
- package/dist/ra-core/src/controller/saveContext/index.js +6 -0
- package/dist/ra-core/src/controller/saveContext/useMutationMiddlewares.d.ts +39 -0
- package/dist/ra-core/src/controller/saveContext/useMutationMiddlewares.js +79 -0
- package/dist/ra-core/src/controller/saveContext/usePickSaveContext.d.ts +5 -0
- package/dist/ra-core/src/controller/saveContext/usePickSaveContext.js +25 -0
- package/dist/ra-core/src/controller/saveContext/useRegisterMutationMiddleware.d.ts +6 -0
- package/dist/ra-core/src/controller/saveContext/useRegisterMutationMiddleware.js +18 -0
- package/dist/ra-core/src/controller/saveContext/useSaveContext.d.ts +14 -0
- package/dist/ra-core/src/controller/saveContext/useSaveContext.js +17 -0
- package/dist/ra-core/src/controller/show/index.d.ts +6 -0
- package/dist/ra-core/src/controller/show/index.js +6 -0
- package/dist/ra-core/src/controller/show/useShowController.d.ts +75 -0
- package/dist/ra-core/src/controller/show/useShowController.js +110 -0
- package/dist/ra-core/src/controller/useFilterState.d.ts +46 -0
- package/dist/ra-core/src/controller/useFilterState.js +70 -0
- package/dist/ra-core/src/controller/usePaginationState.d.ts +33 -0
- package/dist/ra-core/src/controller/usePaginationState.js +45 -0
- package/dist/ra-core/src/controller/usePrevNextController.d.ts +127 -0
- package/dist/ra-core/src/controller/usePrevNextController.js +215 -0
- package/dist/ra-core/src/controller/useReference.d.ts +49 -0
- package/dist/ra-core/src/controller/useReference.js +42 -0
- package/dist/ra-core/src/controller/useSortState.d.ts +61 -0
- package/dist/ra-core/src/controller/useSortState.js +96 -0
- package/dist/ra-core/src/core/DefaultTitleContext.d.ts +15 -0
- package/dist/ra-core/src/core/DefaultTitleContext.js +15 -0
- package/dist/ra-core/src/core/HasDashboardContext.d.ts +21 -0
- package/dist/ra-core/src/core/HasDashboardContext.js +22 -0
- package/dist/ra-core/src/core/ResourceContext.d.ts +19 -0
- package/dist/ra-core/src/core/ResourceContext.js +19 -0
- package/dist/ra-core/src/core/UserMenuContext.d.ts +34 -0
- package/dist/ra-core/src/core/UserMenuContext.js +28 -0
- package/dist/ra-core/src/core/index.d.ts +27 -0
- package/dist/ra-core/src/core/index.js +27 -0
- package/dist/ra-core/src/core/useGetRecordRepresentation.d.ts +13 -0
- package/dist/ra-core/src/core/useGetRecordRepresentation.js +44 -0
- package/dist/ra-core/src/core/useGetResourceLabel.d.ts +22 -0
- package/dist/ra-core/src/core/useGetResourceLabel.js +42 -0
- package/dist/ra-core/src/core/useIsOffline.d.ts +7 -0
- package/dist/ra-core/src/core/useIsOffline.js +18 -0
- package/dist/ra-core/src/core/useResourceContext.d.ts +36 -0
- package/dist/ra-core/src/core/useResourceContext.js +38 -0
- package/dist/ra-core/src/core/useResourceDefinition.d.ts +31 -0
- package/dist/ra-core/src/core/useResourceDefinition.js +48 -0
- package/dist/ra-core/src/core/useResourceDefinitionContext.d.ts +1 -0
- package/dist/ra-core/src/core/useResourceDefinitionContext.js +3 -0
- package/dist/ra-core/src/core/useResourceDefinitions.d.ts +21 -0
- package/dist/ra-core/src/core/useResourceDefinitions.js +20 -0
- package/dist/ra-core/src/core/useUserMenu.d.ts +28 -0
- package/dist/ra-core/src/core/useUserMenu.js +30 -0
- package/dist/ra-core/src/core/useWrappedSource.d.ts +11 -0
- package/dist/ra-core/src/core/useWrappedSource.js +15 -0
- package/dist/ra-core/src/dataProvider/DataProviderContext.d.ts +3 -0
- package/dist/ra-core/src/dataProvider/DataProviderContext.js +4 -0
- package/dist/ra-core/src/dataProvider/HttpError.d.ts +6 -0
- package/dist/ra-core/src/dataProvider/HttpError.js +19 -0
- package/dist/ra-core/src/dataProvider/combineDataProviders.d.ts +21 -0
- package/dist/ra-core/src/dataProvider/combineDataProviders.js +32 -0
- package/dist/ra-core/src/dataProvider/convertLegacyDataProvider.d.ts +12 -0
- package/dist/ra-core/src/dataProvider/convertLegacyDataProvider.js +40 -0
- package/dist/ra-core/src/dataProvider/dataFetchActions.d.ts +15 -0
- package/dist/ra-core/src/dataProvider/dataFetchActions.js +49 -0
- package/dist/ra-core/src/dataProvider/defaultDataProvider.d.ts +2 -0
- package/dist/ra-core/src/dataProvider/defaultDataProvider.js +12 -0
- package/dist/ra-core/src/dataProvider/fetch.d.ts +32 -0
- package/dist/ra-core/src/dataProvider/fetch.js +78 -0
- package/dist/ra-core/src/dataProvider/index.d.ts +34 -0
- package/dist/ra-core/src/dataProvider/index.js +33 -0
- package/dist/ra-core/src/dataProvider/populateQueryCache.d.ts +22 -0
- package/dist/ra-core/src/dataProvider/populateQueryCache.js +30 -0
- package/dist/ra-core/src/dataProvider/testDataProvider.d.ts +2 -0
- package/dist/ra-core/src/dataProvider/testDataProvider.js +41 -0
- package/dist/ra-core/src/dataProvider/undo/index.d.ts +6 -0
- package/dist/ra-core/src/dataProvider/undo/index.js +6 -0
- package/dist/ra-core/src/dataProvider/undo/types.d.ts +3 -0
- package/dist/ra-core/src/dataProvider/undo/types.js +1 -0
- package/dist/ra-core/src/dataProvider/undoableEventEmitter.d.ts +3 -0
- package/dist/ra-core/src/dataProvider/undoableEventEmitter.js +2 -0
- package/dist/ra-core/src/dataProvider/useCreate.d.ts +89 -0
- package/dist/ra-core/src/dataProvider/useCreate.js +155 -0
- package/dist/ra-core/src/dataProvider/useDataProvider.d.ts +2 -0
- package/dist/ra-core/src/dataProvider/useDataProvider.js +140 -0
- package/dist/ra-core/src/dataProvider/useDelete.d.ts +83 -0
- package/dist/ra-core/src/dataProvider/useDelete.js +171 -0
- package/dist/ra-core/src/dataProvider/useDeleteMany.d.ts +81 -0
- package/dist/ra-core/src/dataProvider/useDeleteMany.js +193 -0
- package/dist/ra-core/src/dataProvider/useGetList.d.ts +58 -0
- package/dist/ra-core/src/dataProvider/useGetList.js +131 -0
- package/dist/ra-core/src/dataProvider/useGetMany.d.ts +49 -0
- package/dist/ra-core/src/dataProvider/useGetMany.js +143 -0
- package/dist/ra-core/src/dataProvider/useGetManyAggregate.d.ts +62 -0
- package/dist/ra-core/src/dataProvider/useGetManyAggregate.js +295 -0
- package/dist/ra-core/src/dataProvider/useGetManyReference.d.ts +62 -0
- package/dist/ra-core/src/dataProvider/useGetManyReference.js +117 -0
- package/dist/ra-core/src/dataProvider/useGetOne.d.ts +48 -0
- package/dist/ra-core/src/dataProvider/useGetOne.js +94 -0
- package/dist/ra-core/src/dataProvider/useGetRecordId.d.ts +14 -0
- package/dist/ra-core/src/dataProvider/useGetRecordId.js +22 -0
- package/dist/ra-core/src/dataProvider/useInfiniteGetList.d.ts +64 -0
- package/dist/ra-core/src/dataProvider/useInfiniteGetList.js +177 -0
- package/dist/ra-core/src/dataProvider/useIsDataLoaded.d.ts +13 -0
- package/dist/ra-core/src/dataProvider/useIsDataLoaded.js +35 -0
- package/dist/ra-core/src/dataProvider/useLoading.d.ts +12 -0
- package/dist/ra-core/src/dataProvider/useLoading.js +41 -0
- package/dist/ra-core/src/dataProvider/useMutationWithMutationMode.d.ts +51 -0
- package/dist/ra-core/src/dataProvider/useMutationWithMutationMode.js +238 -0
- package/dist/ra-core/src/dataProvider/useRefresh.d.ts +14 -0
- package/dist/ra-core/src/dataProvider/useRefresh.js +21 -0
- package/dist/ra-core/src/dataProvider/useUpdate.d.ts +89 -0
- package/dist/ra-core/src/dataProvider/useUpdate.js +183 -0
- package/dist/ra-core/src/dataProvider/useUpdateMany.d.ts +81 -0
- package/dist/ra-core/src/dataProvider/useUpdateMany.js +171 -0
- package/dist/ra-core/src/dataProvider/validateResponseFormat.d.ts +5 -0
- package/dist/ra-core/src/dataProvider/validateResponseFormat.js +35 -0
- package/dist/ra-core/src/dataProvider/withLifecycleCallbacks.d.ts +162 -0
- package/dist/ra-core/src/dataProvider/withLifecycleCallbacks.js +377 -0
- package/dist/ra-core/src/dataTable/DataTableCallbacksContext.d.ts +18 -0
- package/dist/ra-core/src/dataTable/DataTableCallbacksContext.js +3 -0
- package/dist/ra-core/src/dataTable/DataTableColumnFilterContext.d.ts +2 -0
- package/dist/ra-core/src/dataTable/DataTableColumnFilterContext.js +3 -0
- package/dist/ra-core/src/dataTable/DataTableColumnRankContext.d.ts +2 -0
- package/dist/ra-core/src/dataTable/DataTableColumnRankContext.js +3 -0
- package/dist/ra-core/src/dataTable/DataTableConfigContext.d.ts +22 -0
- package/dist/ra-core/src/dataTable/DataTableConfigContext.js +7 -0
- package/dist/ra-core/src/dataTable/DataTableDataContext.d.ts +4 -0
- package/dist/ra-core/src/dataTable/DataTableDataContext.js +3 -0
- package/dist/ra-core/src/dataTable/DataTableRenderContext.d.ts +3 -0
- package/dist/ra-core/src/dataTable/DataTableRenderContext.js +3 -0
- package/dist/ra-core/src/dataTable/DataTableSelectedIdsContext.d.ts +3 -0
- package/dist/ra-core/src/dataTable/DataTableSelectedIdsContext.js +3 -0
- package/dist/ra-core/src/dataTable/DataTableSortContext.d.ts +3 -0
- package/dist/ra-core/src/dataTable/DataTableSortContext.js +3 -0
- package/dist/ra-core/src/dataTable/DataTableStoreContext.d.ts +8 -0
- package/dist/ra-core/src/dataTable/DataTableStoreContext.js +6 -0
- package/dist/ra-core/src/dataTable/index.d.ts +11 -0
- package/dist/ra-core/src/dataTable/index.js +11 -0
- package/dist/ra-core/src/dataTable/types.d.ts +2 -0
- package/dist/ra-core/src/dataTable/types.js +1 -0
- package/dist/ra-core/src/export/ExporterContext.d.ts +2 -0
- package/dist/ra-core/src/export/ExporterContext.js +4 -0
- package/dist/ra-core/src/export/defaultExporter.d.ts +2 -0
- package/dist/ra-core/src/export/defaultExporter.js +3 -0
- package/dist/ra-core/src/export/downloadCSV.d.ts +1 -0
- package/dist/ra-core/src/export/downloadCSV.js +17 -0
- package/dist/ra-core/src/export/fetchRelatedRecords.d.ts +14 -0
- package/dist/ra-core/src/export/fetchRelatedRecords.js +19 -0
- package/dist/ra-core/src/export/getRelatedIds.d.ts +24 -0
- package/dist/ra-core/src/export/getRelatedIds.js +26 -0
- package/dist/ra-core/src/export/index.d.ts +5 -0
- package/dist/ra-core/src/export/index.js +5 -0
- package/dist/ra-core/src/export/useBulkExport.d.ts +11 -0
- package/dist/ra-core/src/export/useBulkExport.js +30 -0
- package/dist/ra-core/src/form/WarnWhenUnsavedChanges.d.ts +5 -0
- package/dist/ra-core/src/form/WarnWhenUnsavedChanges.js +5 -0
- package/dist/ra-core/src/form/choices/ChoicesContext.d.ts +65 -0
- package/dist/ra-core/src/form/choices/ChoicesContext.js +7 -0
- package/dist/ra-core/src/form/choices/index.d.ts +4 -0
- package/dist/ra-core/src/form/choices/index.js +4 -0
- package/dist/ra-core/src/form/choices/useChoicesContext.d.ts +5 -0
- package/dist/ra-core/src/form/choices/useChoicesContext.js +62 -0
- package/dist/ra-core/src/form/getFormInitialValues.d.ts +8 -0
- package/dist/ra-core/src/form/getFormInitialValues.js +14 -0
- package/dist/ra-core/src/form/groups/FormGroupContext.d.ts +9 -0
- package/dist/ra-core/src/form/groups/FormGroupContext.js +9 -0
- package/dist/ra-core/src/form/groups/index.d.ts +6 -0
- package/dist/ra-core/src/form/groups/index.js +6 -0
- package/dist/ra-core/src/form/groups/useFormGroup.d.ts +67 -0
- package/dist/ra-core/src/form/groups/useFormGroup.js +146 -0
- package/dist/ra-core/src/form/groups/useFormGroupContext.d.ts +4 -0
- package/dist/ra-core/src/form/groups/useFormGroupContext.js +9 -0
- package/dist/ra-core/src/form/groups/useFormGroups.d.ts +4 -0
- package/dist/ra-core/src/form/groups/useFormGroups.js +9 -0
- package/dist/ra-core/src/form/index.d.ts +14 -0
- package/dist/ra-core/src/form/index.js +14 -0
- package/dist/ra-core/src/form/sanitizeEmptyValues.d.ts +7 -0
- package/dist/ra-core/src/form/sanitizeEmptyValues.js +26 -0
- package/dist/ra-core/src/form/useApplyInputDefaultValues.d.ts +19 -0
- package/dist/ra-core/src/form/useApplyInputDefaultValues.js +71 -0
- package/dist/ra-core/src/form/useAugmentedForm.d.ts +32 -0
- package/dist/ra-core/src/form/useAugmentedForm.js +101 -0
- package/dist/ra-core/src/form/useFormIsDirty.d.ts +4 -0
- package/dist/ra-core/src/form/useFormIsDirty.js +39 -0
- package/dist/ra-core/src/form/useInput.d.ts +33 -0
- package/dist/ra-core/src/form/useInput.js +100 -0
- package/dist/ra-core/src/form/useRecordFromLocation.d.ts +22 -0
- package/dist/ra-core/src/form/useRecordFromLocation.js +59 -0
- package/dist/ra-core/src/form/useSuggestions.d.ts +43 -0
- package/dist/ra-core/src/form/useSuggestions.js +186 -0
- package/dist/ra-core/src/form/validation/getSimpleValidationResolver.d.ts +31 -0
- package/dist/ra-core/src/form/validation/getSimpleValidationResolver.js +87 -0
- package/dist/ra-core/src/form/validation/index.d.ts +7 -0
- package/dist/ra-core/src/form/validation/index.js +7 -0
- package/dist/ra-core/src/form/validation/setSubmissionErrors.d.ts +21 -0
- package/dist/ra-core/src/form/validation/setSubmissionErrors.js +34 -0
- package/dist/ra-core/src/form/validation/useGetValidationErrorMessage.d.ts +26 -0
- package/dist/ra-core/src/form/validation/useGetValidationErrorMessage.js +35 -0
- package/dist/ra-core/src/form/validation/useNotifyIsFormInvalid.d.ts +9 -0
- package/dist/ra-core/src/form/validation/useNotifyIsFormInvalid.js +30 -0
- package/dist/ra-core/src/form/validation/useUnique.d.ts +57 -0
- package/dist/ra-core/src/form/validation/useUnique.js +107 -0
- package/dist/ra-core/src/form/validation/validate.d.ts +168 -0
- package/dist/ra-core/src/form/validation/validate.js +218 -0
- package/dist/ra-core/src/i18n/I18nContext.d.ts +3 -0
- package/dist/ra-core/src/i18n/I18nContext.js +11 -0
- package/dist/ra-core/src/i18n/TranslatableContext.d.ts +16 -0
- package/dist/ra-core/src/i18n/TranslatableContext.js +2 -0
- package/dist/ra-core/src/i18n/TranslationMessages.d.ts +221 -0
- package/dist/ra-core/src/i18n/TranslationMessages.js +1 -0
- package/dist/ra-core/src/i18n/TranslationUtils.d.ts +60 -0
- package/dist/ra-core/src/i18n/TranslationUtils.js +70 -0
- package/dist/ra-core/src/i18n/index.d.ts +20 -0
- package/dist/ra-core/src/i18n/index.js +20 -0
- package/dist/ra-core/src/i18n/substituteTokens.d.ts +8 -0
- package/dist/ra-core/src/i18n/substituteTokens.js +18 -0
- package/dist/ra-core/src/i18n/useI18nProvider.d.ts +12 -0
- package/dist/ra-core/src/i18n/useI18nProvider.js +14 -0
- package/dist/ra-core/src/i18n/useLocales.d.ts +31 -0
- package/dist/ra-core/src/i18n/useLocales.js +28 -0
- package/dist/ra-core/src/i18n/useResourceTranslation.d.ts +8 -0
- package/dist/ra-core/src/i18n/useResourceTranslation.js +18 -0
- package/dist/ra-core/src/i18n/useTranslatable.d.ts +29 -0
- package/dist/ra-core/src/i18n/useTranslatable.js +98 -0
- package/dist/ra-core/src/i18n/useTranslatableContext.d.ts +31 -0
- package/dist/ra-core/src/i18n/useTranslatableContext.js +38 -0
- package/dist/ra-core/src/i18n/useTranslate.d.ts +21 -0
- package/dist/ra-core/src/i18n/useTranslate.js +29 -0
- package/dist/ra-core/src/i18n/useTranslateLabel.d.ts +6 -0
- package/dist/ra-core/src/i18n/useTranslateLabel.js +26 -0
- package/dist/ra-core/src/index.d.ts +16 -0
- package/dist/ra-core/src/index.js +16 -0
- package/dist/ra-core/src/inference/InferredElement.d.ts +12 -0
- package/dist/ra-core/src/inference/InferredElement.js +40 -0
- package/dist/ra-core/src/inference/assertions.d.ts +26 -0
- package/dist/ra-core/src/inference/assertions.js +38 -0
- package/dist/ra-core/src/inference/getElementsFromRecords.d.ts +35 -0
- package/dist/ra-core/src/inference/getElementsFromRecords.js +39 -0
- package/dist/ra-core/src/inference/getValuesFromRecords.d.ts +28 -0
- package/dist/ra-core/src/inference/getValuesFromRecords.js +40 -0
- package/dist/ra-core/src/inference/index.d.ts +6 -0
- package/dist/ra-core/src/inference/index.js +6 -0
- package/dist/ra-core/src/inference/inferTypeFromValues.d.ts +21 -0
- package/dist/ra-core/src/inference/inferTypeFromValues.js +141 -0
- package/dist/ra-core/src/inference/types.d.ts +9 -0
- package/dist/ra-core/src/inference/types.js +1 -0
- package/dist/ra-core/src/notification/CloseNotificationContext.d.ts +2 -0
- package/dist/ra-core/src/notification/CloseNotificationContext.js +2 -0
- package/dist/ra-core/src/notification/NotificationContext.d.ts +37 -0
- package/dist/ra-core/src/notification/NotificationContext.js +35 -0
- package/dist/ra-core/src/notification/index.d.ts +9 -0
- package/dist/ra-core/src/notification/index.js +9 -0
- package/dist/ra-core/src/notification/types.d.ts +14 -0
- package/dist/ra-core/src/notification/types.js +1 -0
- package/dist/ra-core/src/notification/useCloseNotification.d.ts +1 -0
- package/dist/ra-core/src/notification/useCloseNotification.js +9 -0
- package/dist/ra-core/src/notification/useNotificationContext.d.ts +1 -0
- package/dist/ra-core/src/notification/useNotificationContext.js +3 -0
- package/dist/ra-core/src/notification/useNotify.d.ts +20 -0
- package/dist/ra-core/src/notification/useNotify.js +28 -0
- package/dist/ra-core/src/preferences/index.d.ts +7 -0
- package/dist/ra-core/src/preferences/index.js +7 -0
- package/dist/ra-core/src/preferences/usePreference.d.ts +18 -0
- package/dist/ra-core/src/preferences/usePreference.js +10 -0
- package/dist/ra-core/src/preferences/usePreferenceInput.d.ts +22 -0
- package/dist/ra-core/src/preferences/usePreferenceInput.js +43 -0
- package/dist/ra-core/src/preferences/usePreferencesEditor.d.ts +2 -0
- package/dist/ra-core/src/preferences/usePreferencesEditor.js +9 -0
- package/dist/ra-core/src/preferences/useSetInspectorTitle.d.ts +7 -0
- package/dist/ra-core/src/preferences/useSetInspectorTitle.js +19 -0
- package/dist/ra-core/src/routing/BasenameContext.d.ts +1 -0
- package/dist/ra-core/src/routing/BasenameContext.js +2 -0
- package/dist/ra-core/src/routing/RouterProvider.d.ts +163 -0
- package/dist/ra-core/src/routing/RouterProvider.js +1 -0
- package/dist/ra-core/src/routing/index.d.ts +28 -0
- package/dist/ra-core/src/routing/index.js +28 -0
- package/dist/ra-core/src/routing/types.d.ts +3 -0
- package/dist/ra-core/src/routing/types.js +1 -0
- package/dist/ra-core/src/routing/useBasename.d.ts +21 -0
- package/dist/ra-core/src/routing/useBasename.js +23 -0
- package/dist/ra-core/src/routing/useBlocker.d.ts +14 -0
- package/dist/ra-core/src/routing/useBlocker.js +17 -0
- package/dist/ra-core/src/routing/useCanBlock.d.ts +7 -0
- package/dist/ra-core/src/routing/useCanBlock.js +11 -0
- package/dist/ra-core/src/routing/useCreatePath.d.ts +42 -0
- package/dist/ra-core/src/routing/useCreatePath.js +69 -0
- package/dist/ra-core/src/routing/useGetPathForRecord.d.ts +42 -0
- package/dist/ra-core/src/routing/useGetPathForRecord.js +135 -0
- package/dist/ra-core/src/routing/useGetPathForRecordCallback.d.ts +6 -0
- package/dist/ra-core/src/routing/useGetPathForRecordCallback.js +82 -0
- package/dist/ra-core/src/routing/useInRouterContext.d.ts +11 -0
- package/dist/ra-core/src/routing/useInRouterContext.js +15 -0
- package/dist/ra-core/src/routing/useLocation.d.ts +10 -0
- package/dist/ra-core/src/routing/useLocation.js +13 -0
- package/dist/ra-core/src/routing/useMatch.d.ts +15 -0
- package/dist/ra-core/src/routing/useMatch.js +15 -0
- package/dist/ra-core/src/routing/useMatchPath.d.ts +17 -0
- package/dist/ra-core/src/routing/useMatchPath.js +17 -0
- package/dist/ra-core/src/routing/useNavigate.d.ts +12 -0
- package/dist/ra-core/src/routing/useNavigate.js +15 -0
- package/dist/ra-core/src/routing/useParams.d.ts +9 -0
- package/dist/ra-core/src/routing/useParams.js +13 -0
- package/dist/ra-core/src/routing/useRedirect.d.ts +30 -0
- package/dist/ra-core/src/routing/useRedirect.js +66 -0
- package/dist/ra-core/src/routing/useResetErrorBoundaryOnLocationChange.d.ts +7 -0
- package/dist/ra-core/src/routing/useResetErrorBoundaryOnLocationChange.js +17 -0
- package/dist/ra-core/src/routing/useRestoreScrollPosition.d.ts +40 -0
- package/dist/ra-core/src/routing/useRestoreScrollPosition.js +70 -0
- package/dist/ra-core/src/routing/useSplatPathBase.d.ts +13 -0
- package/dist/ra-core/src/routing/useSplatPathBase.js +21 -0
- package/dist/ra-core/src/store/index.d.ts +11 -0
- package/dist/ra-core/src/store/index.js +11 -0
- package/dist/ra-core/src/store/localStorageStore.d.ts +27 -0
- package/dist/ra-core/src/store/localStorageStore.js +198 -0
- package/dist/ra-core/src/store/types.d.ts +11 -0
- package/dist/ra-core/src/store/types.js +1 -0
- package/dist/ra-core/src/store/useRemoveFromStore.d.ts +17 -0
- package/dist/ra-core/src/store/useRemoveFromStore.js +29 -0
- package/dist/ra-core/src/store/useRemoveItemsFromStore.d.ts +17 -0
- package/dist/ra-core/src/store/useRemoveItemsFromStore.js +29 -0
- package/dist/ra-core/src/store/useResetStore.d.ts +17 -0
- package/dist/ra-core/src/store/useResetStore.js +21 -0
- package/dist/ra-core/src/store/useStore.d.ts +48 -0
- package/dist/ra-core/src/store/useStore.js +32 -0
- package/dist/ra-core/src/store/useStoreContext.d.ts +4 -0
- package/dist/ra-core/src/store/useStoreContext.js +6 -0
- package/dist/ra-core/src/test-ui/defaultI18nProvider.d.ts +2 -0
- package/dist/ra-core/src/test-ui/defaultI18nProvider.js +10 -0
- package/dist/ra-core/src/test-ui/index.d.ts +21 -0
- package/dist/ra-core/src/test-ui/index.js +21 -0
- package/dist/ra-core/src/types.d.ts +284 -0
- package/dist/ra-core/src/types.js +5 -0
- package/dist/ra-core/src/util/asyncDebounce.d.ts +7 -0
- package/dist/ra-core/src/util/asyncDebounce.js +29 -0
- package/dist/ra-core/src/util/escapePath.d.ts +11 -0
- package/dist/ra-core/src/util/escapePath.js +10 -0
- package/dist/ra-core/src/util/genericMemo.d.ts +5 -0
- package/dist/ra-core/src/util/genericMemo.js +14 -0
- package/dist/ra-core/src/util/getFieldLabelTranslationArgs.d.ts +22 -0
- package/dist/ra-core/src/util/getFieldLabelTranslationArgs.js +73 -0
- package/dist/ra-core/src/util/getMutationMode.d.ts +1 -0
- package/dist/ra-core/src/util/getMutationMode.js +13 -0
- package/dist/ra-core/src/util/hooks.d.ts +15 -0
- package/dist/ra-core/src/util/hooks.js +73 -0
- package/dist/ra-core/src/util/index.d.ts +20 -0
- package/dist/ra-core/src/util/index.js +19 -0
- package/dist/ra-core/src/util/mergeRefs.d.ts +2 -0
- package/dist/ra-core/src/util/mergeRefs.js +13 -0
- package/dist/ra-core/src/util/removeEmpty.d.ts +2 -0
- package/dist/ra-core/src/util/removeEmpty.js +16 -0
- package/dist/ra-core/src/util/removeKey.d.ts +2 -0
- package/dist/ra-core/src/util/removeKey.js +22 -0
- package/dist/ra-core/src/util/shallowEqual.d.ts +1 -0
- package/dist/ra-core/src/util/shallowEqual.js +29 -0
- package/dist/ra-core/src/util/useCheckForApplicationUpdate.d.ts +21 -0
- package/dist/ra-core/src/util/useCheckForApplicationUpdate.js +84 -0
- package/dist/ra-core/src/util/useDebouncedEvent.d.ts +8 -0
- package/dist/ra-core/src/util/useDebouncedEvent.js +28 -0
- package/dist/ra-core/src/util/useEvent.d.ts +7 -0
- package/dist/ra-core/src/util/useEvent.js +19 -0
- package/dist/ra-core/src/util/useFieldValue.d.ts +21 -0
- package/dist/ra-core/src/util/useFieldValue.js +27 -0
- package/dist/ra-core/src/util/useWhyDidYouUpdate.d.ts +12 -0
- package/dist/ra-core/src/util/useWhyDidYouUpdate.js +42 -0
- package/dist/ra-core/src/util/warning.d.ts +2 -0
- package/dist/ra-core/src/util/warning.js +5 -0
- package/dist/strato-faker-ecommerce/src/dataProvider.d.ts +2 -0
- package/dist/strato-faker-ecommerce/src/dataProvider.js +6 -0
- package/dist/strato-faker-ecommerce/src/generate.d.ts +8 -0
- package/dist/strato-faker-ecommerce/src/generate.js +148 -0
- package/dist/strato-faker-ecommerce/src/index.d.ts +3 -0
- package/dist/strato-faker-ecommerce/src/index.js +3 -0
- package/dist/strato-faker-ecommerce/src/types.d.ts +69 -0
- package/dist/strato-faker-ecommerce/src/types.js +1 -0
- package/dist/types.d.ts +1 -1
- package/package.json +5 -4
- package/src/dataProvider.ts +3 -3
- package/src/generate.test.ts +12 -12
- package/src/generate.ts +21 -14
- package/src/types.ts +1 -1
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { useCallback, useRef } from 'react';
|
|
2
|
+
import merge from 'lodash/merge.js';
|
|
3
|
+
import set from 'lodash/set.js';
|
|
4
|
+
import { useResourceContext } from '../../core';
|
|
5
|
+
import { useDataProvider } from '../../dataProvider';
|
|
6
|
+
import { useTranslate, useTranslateLabel } from '../../i18n';
|
|
7
|
+
import { asyncDebounce } from '../../util';
|
|
8
|
+
import { useRecordContext } from '../../controller';
|
|
9
|
+
import { isEmpty } from './validate';
|
|
10
|
+
/**
|
|
11
|
+
* A hook that returns a validation function checking for a record field uniqueness
|
|
12
|
+
* by calling the dataProvider getList function with a filter.
|
|
13
|
+
*
|
|
14
|
+
* @example // Passing options at declaration time
|
|
15
|
+
* const UserCreateForm = () => {
|
|
16
|
+
* const unique = useUnique({ message: 'Username is already used'});
|
|
17
|
+
* return (
|
|
18
|
+
* <SimpleForm>
|
|
19
|
+
* <TextInput source="username" validate={unique()} />
|
|
20
|
+
* </SimpleForm>
|
|
21
|
+
* );
|
|
22
|
+
* }
|
|
23
|
+
*
|
|
24
|
+
* @example // Passing options at call time
|
|
25
|
+
* const UserCreateForm = () => {
|
|
26
|
+
* const unique = useUnique();
|
|
27
|
+
* return (
|
|
28
|
+
* <SimpleForm>
|
|
29
|
+
* <TextInput source="username" validate={unique({ message: 'Username is already used'})} />
|
|
30
|
+
* </SimpleForm>
|
|
31
|
+
* );
|
|
32
|
+
* }
|
|
33
|
+
*
|
|
34
|
+
* @example // With additional filters
|
|
35
|
+
* const UserCreateForm = () => {
|
|
36
|
+
* const unique = useUnique();
|
|
37
|
+
* return (
|
|
38
|
+
* <SimpleForm>
|
|
39
|
+
* <ReferenceInput source="organization_id" reference="organizations" />
|
|
40
|
+
* <FormDataConsumer>
|
|
41
|
+
* {({ formData }) => (
|
|
42
|
+
* <TextInput
|
|
43
|
+
* source="username"
|
|
44
|
+
* validate={unique({ filter: { organization_id: formData.organization_id })}
|
|
45
|
+
* />
|
|
46
|
+
* )}
|
|
47
|
+
* </FormDataConsumer>
|
|
48
|
+
* </SimpleForm>
|
|
49
|
+
* );
|
|
50
|
+
* }
|
|
51
|
+
*/
|
|
52
|
+
export const useUnique = (options) => {
|
|
53
|
+
const dataProvider = useDataProvider();
|
|
54
|
+
const translateLabel = useTranslateLabel();
|
|
55
|
+
const resource = useResourceContext(options);
|
|
56
|
+
if (!resource) {
|
|
57
|
+
throw new Error('useUnique: missing resource prop or context');
|
|
58
|
+
}
|
|
59
|
+
const translate = useTranslate();
|
|
60
|
+
const record = useRecordContext();
|
|
61
|
+
const debouncedGetList = useRef(
|
|
62
|
+
// The initial value is here to set the correct type on useRef
|
|
63
|
+
asyncDebounce(dataProvider.getList, options?.debounce ?? DEFAULT_DEBOUNCE));
|
|
64
|
+
const validateUnique = useCallback((callTimeOptions) => {
|
|
65
|
+
const { message, filter, debounce: interval, } = merge({
|
|
66
|
+
debounce: DEFAULT_DEBOUNCE,
|
|
67
|
+
filter: {},
|
|
68
|
+
message: "strato.validation.unique',
|
|
69
|
+
}, options, callTimeOptions);
|
|
70
|
+
debouncedGetList.current = asyncDebounce(dataProvider.getList, interval);
|
|
71
|
+
return async (value, allValues, props) => {
|
|
72
|
+
if (isEmpty(value)) {
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
try {
|
|
76
|
+
const finalFilter = set(merge({}, filter), props.source, value);
|
|
77
|
+
const { data, total } = await debouncedGetList.current(resource, {
|
|
78
|
+
filter: finalFilter,
|
|
79
|
+
pagination: { page: 1, perPage: 1 },
|
|
80
|
+
sort: { field: 'id', order: 'ASC' },
|
|
81
|
+
});
|
|
82
|
+
if (typeof total !== 'undefined' &&
|
|
83
|
+
total > 0 &&
|
|
84
|
+
!data.some(r => r.id === record?.id)) {
|
|
85
|
+
return {
|
|
86
|
+
message,
|
|
87
|
+
args: {
|
|
88
|
+
source: props.source,
|
|
89
|
+
value,
|
|
90
|
+
field: translateLabel({
|
|
91
|
+
label: props.label,
|
|
92
|
+
source: props.source,
|
|
93
|
+
resource,
|
|
94
|
+
}),
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
return translate("strato.notification.http_error');
|
|
101
|
+
}
|
|
102
|
+
return undefined;
|
|
103
|
+
};
|
|
104
|
+
}, [dataProvider, options, record, resource, translate, translateLabel]);
|
|
105
|
+
return validateUnique;
|
|
106
|
+
};
|
|
107
|
+
const DEFAULT_DEBOUNCE = 1000;
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
export declare const isEmpty: (value: any) => boolean;
|
|
2
|
+
export interface ValidationErrorMessageWithArgs {
|
|
3
|
+
message: string;
|
|
4
|
+
args: {
|
|
5
|
+
[key: string]: ValidationErrorMessageWithArgs | any;
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
export type ValidationErrorMessage = string | ValidationErrorMessageWithArgs;
|
|
9
|
+
export type Validator = (value: any, values: any, props: any) => ValidationErrorMessage | null | undefined | Promise<ValidationErrorMessage | null | undefined>;
|
|
10
|
+
export interface GetValidationMessageParams {
|
|
11
|
+
args: any;
|
|
12
|
+
value: any;
|
|
13
|
+
values: any;
|
|
14
|
+
}
|
|
15
|
+
export type GetValidationMessage = (params: GetValidationMessageParams) => ValidationErrorMessage;
|
|
16
|
+
export declare const combine2Validators: (validator1: Validator, validator2: Validator) => Validator;
|
|
17
|
+
export declare const composeValidators: (...validators: any[]) => Validator;
|
|
18
|
+
export declare const composeSyncValidators: (...validators: any[]) => (value: any, values: any, meta: any) => ValidationErrorMessage | Promise<ValidationErrorMessage | null | undefined> | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* Required validator
|
|
21
|
+
*
|
|
22
|
+
* Returns an error if the value is null, undefined, or empty
|
|
23
|
+
*
|
|
24
|
+
* @param {string|Function} message
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
*
|
|
28
|
+
* const titleValidators = [required('The title is required')];
|
|
29
|
+
* <TextInput name="title" validate={titleValidators} />
|
|
30
|
+
*/
|
|
31
|
+
export declare const required: (message?: any) => ((value: any, values: any) => string | {
|
|
32
|
+
message: string;
|
|
33
|
+
args: any;
|
|
34
|
+
} | undefined) & {
|
|
35
|
+
isRequired: boolean;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Minimum length validator
|
|
39
|
+
*
|
|
40
|
+
* Returns an error if the value has a length less than the parameter
|
|
41
|
+
*
|
|
42
|
+
* @param {integer} min
|
|
43
|
+
* @param {string|Function} message
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
*
|
|
47
|
+
* const passwordValidators = [minLength(10, 'Should be at least 10 characters')];
|
|
48
|
+
* <TextInput type="password" name="password" validate={passwordValidators} />
|
|
49
|
+
*/
|
|
50
|
+
export declare const minLength: (min: any, message?: any) => (value: any, values: any) => string | {
|
|
51
|
+
message: string;
|
|
52
|
+
args: any;
|
|
53
|
+
} | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* Maximum length validator
|
|
56
|
+
*
|
|
57
|
+
* Returns an error if the value has a length higher than the parameter
|
|
58
|
+
*
|
|
59
|
+
* @param {integer} max
|
|
60
|
+
* @param {string|Function} message
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
*
|
|
64
|
+
* const nameValidators = [maxLength(10, 'Should be at most 10 characters')];
|
|
65
|
+
* <TextInput name="name" validate={nameValidators} />
|
|
66
|
+
*/
|
|
67
|
+
export declare const maxLength: (max: any, message?: any) => (value: any, values: any) => string | {
|
|
68
|
+
message: string;
|
|
69
|
+
args: any;
|
|
70
|
+
} | undefined;
|
|
71
|
+
/**
|
|
72
|
+
* Minimum validator
|
|
73
|
+
*
|
|
74
|
+
* Returns an error if the value is less than the parameter
|
|
75
|
+
*
|
|
76
|
+
* @param {integer} min
|
|
77
|
+
* @param {string|Function} message
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
*
|
|
81
|
+
* const fooValidators = [minValue(5, 'Should be more than 5')];
|
|
82
|
+
* <NumberInput name="foo" validate={fooValidators} />
|
|
83
|
+
*/
|
|
84
|
+
export declare const minValue: (min: any, message?: any) => (value: any, values: any) => string | {
|
|
85
|
+
message: string;
|
|
86
|
+
args: any;
|
|
87
|
+
} | undefined;
|
|
88
|
+
/**
|
|
89
|
+
* Maximum validator
|
|
90
|
+
*
|
|
91
|
+
* Returns an error if the value is higher than the parameter
|
|
92
|
+
*
|
|
93
|
+
* @param {integer} max
|
|
94
|
+
* @param {string|Function} message
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
*
|
|
98
|
+
* const fooValidators = [maxValue(10, 'Should be less than 10')];
|
|
99
|
+
* <NumberInput name="foo" validate={fooValidators} />
|
|
100
|
+
*/
|
|
101
|
+
export declare const maxValue: (max: any, message?: any) => (value: any, values: any) => string | {
|
|
102
|
+
message: string;
|
|
103
|
+
args: any;
|
|
104
|
+
} | undefined;
|
|
105
|
+
/**
|
|
106
|
+
* Number validator
|
|
107
|
+
*
|
|
108
|
+
* Returns an error if the value is not a number
|
|
109
|
+
*
|
|
110
|
+
* @param {string|Function} message
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
*
|
|
114
|
+
* const ageValidators = [number('Must be a number')];
|
|
115
|
+
* <TextInput name="age" validate={ageValidators} />
|
|
116
|
+
*/
|
|
117
|
+
export declare const number: (message?: any) => (value: any, values: any) => string | {
|
|
118
|
+
message: string;
|
|
119
|
+
args: any;
|
|
120
|
+
} | undefined;
|
|
121
|
+
/**
|
|
122
|
+
* Regular expression validator
|
|
123
|
+
*
|
|
124
|
+
* Returns an error if the value does not match the pattern given as parameter
|
|
125
|
+
*
|
|
126
|
+
* @param {RegExp} pattern
|
|
127
|
+
* @param {string|Function} message
|
|
128
|
+
*
|
|
129
|
+
* @example
|
|
130
|
+
*
|
|
131
|
+
* const zipValidators = [regex(/^\d{5}(?:[-\s]\d{4})?$/, 'Must be a zip code')];
|
|
132
|
+
* <TextInput name="zip" validate={zipValidators} />
|
|
133
|
+
*/
|
|
134
|
+
export declare const regex: any;
|
|
135
|
+
/**
|
|
136
|
+
* Email validator
|
|
137
|
+
*
|
|
138
|
+
* Returns an error if the value is not a valid email
|
|
139
|
+
*
|
|
140
|
+
* @param {string|Function} message
|
|
141
|
+
*
|
|
142
|
+
* @example
|
|
143
|
+
*
|
|
144
|
+
* const emailValidators = [email('Must be an email')];
|
|
145
|
+
* <TextInput name="email" validate={emailValidators} />
|
|
146
|
+
*/
|
|
147
|
+
export declare const email: (message?: any) => any;
|
|
148
|
+
/**
|
|
149
|
+
* Choices validator
|
|
150
|
+
*
|
|
151
|
+
* Returns an error if the value is not among the list passed as parameter
|
|
152
|
+
*
|
|
153
|
+
* @param {array} list
|
|
154
|
+
* @param {string|Function} message
|
|
155
|
+
*
|
|
156
|
+
* @example
|
|
157
|
+
*
|
|
158
|
+
* const genderValidators = [choices(['male', 'female'], 'Must be either Male or Female')];
|
|
159
|
+
* <TextInput name="gender" validate={genderValidators} />
|
|
160
|
+
*/
|
|
161
|
+
export declare const choices: (list: any, message?: any) => (value: any, values: any) => string | {
|
|
162
|
+
message: string;
|
|
163
|
+
args: any;
|
|
164
|
+
} | undefined;
|
|
165
|
+
/**
|
|
166
|
+
* Given a validator, returns a boolean indicating whether the field is required or not.
|
|
167
|
+
*/
|
|
168
|
+
export declare const isRequired: (validate: any) => boolean;
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import lodashMemoize from 'lodash/memoize.js';
|
|
2
|
+
/* @link http://stackoverflow.com/questions/46155/validate-email-address-in-javascript */
|
|
3
|
+
const EMAIL_REGEX = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; // eslint-disable-line no-useless-escape
|
|
4
|
+
export const isEmpty = (value) => typeof value === 'undefined' ||
|
|
5
|
+
value === null ||
|
|
6
|
+
value === '' ||
|
|
7
|
+
(Array.isArray(value) && value.length === 0);
|
|
8
|
+
// type predicate, see https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates
|
|
9
|
+
function isValidationErrorMessageWithArgs(error) {
|
|
10
|
+
return error ? error.hasOwnProperty('message') : false;
|
|
11
|
+
}
|
|
12
|
+
const getMessage = (message, messageArgs, value, values) => typeof message === 'function'
|
|
13
|
+
? message({
|
|
14
|
+
args: messageArgs,
|
|
15
|
+
value,
|
|
16
|
+
values,
|
|
17
|
+
})
|
|
18
|
+
: messageArgs
|
|
19
|
+
? {
|
|
20
|
+
message,
|
|
21
|
+
args: messageArgs,
|
|
22
|
+
}
|
|
23
|
+
: message;
|
|
24
|
+
// If we define validation functions directly in JSX, it will
|
|
25
|
+
// result in a new function at every render, and then trigger infinite re-render.
|
|
26
|
+
// Hence, we memoize every built-in validator to prevent a "Maximum call stack" error.
|
|
27
|
+
const memoize = (fn) => lodashMemoize(fn, (...args) => JSON.stringify(args));
|
|
28
|
+
const isFunction = value => typeof value === 'function';
|
|
29
|
+
export const combine2Validators = (validator1, validator2) => {
|
|
30
|
+
return (value, values, meta) => {
|
|
31
|
+
const result1 = validator1(value, values, meta);
|
|
32
|
+
if (!result1) {
|
|
33
|
+
return validator2(value, values, meta);
|
|
34
|
+
}
|
|
35
|
+
if (typeof result1 === 'string' ||
|
|
36
|
+
isValidationErrorMessageWithArgs(result1)) {
|
|
37
|
+
return result1;
|
|
38
|
+
}
|
|
39
|
+
return result1.then(resolvedResult1 => {
|
|
40
|
+
if (!resolvedResult1) {
|
|
41
|
+
return validator2(value, values, meta);
|
|
42
|
+
}
|
|
43
|
+
return resolvedResult1;
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
// Compose multiple validators into a single one for use with react-hook-form
|
|
48
|
+
export const composeValidators = (...validators) => {
|
|
49
|
+
const allValidators = (Array.isArray(validators[0]) ? validators[0] : validators).filter(isFunction);
|
|
50
|
+
return allValidators.reduce(combine2Validators, () => null);
|
|
51
|
+
};
|
|
52
|
+
// Compose multiple validators into a single one for use with react-hook-form
|
|
53
|
+
export const composeSyncValidators = (...validators) => (value, values, meta) => {
|
|
54
|
+
const allValidators = (Array.isArray(validators[0]) ? validators[0] : validators).filter(isFunction);
|
|
55
|
+
for (const validator of allValidators) {
|
|
56
|
+
const error = validator(value, values, meta);
|
|
57
|
+
if (error) {
|
|
58
|
+
return error;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Required validator
|
|
64
|
+
*
|
|
65
|
+
* Returns an error if the value is null, undefined, or empty
|
|
66
|
+
*
|
|
67
|
+
* @param {string|Function} message
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
*
|
|
71
|
+
* const titleValidators = [required('The title is required')];
|
|
72
|
+
* <TextInput name="title" validate={titleValidators} />
|
|
73
|
+
*/
|
|
74
|
+
export const required = memoize((message = "strato.validation.required') => Object.assign((value, values) => isEmpty(value)
|
|
75
|
+
? getMessage(message, undefined, value, values)
|
|
76
|
+
: undefined, { isRequired: true }));
|
|
77
|
+
/**
|
|
78
|
+
* Minimum length validator
|
|
79
|
+
*
|
|
80
|
+
* Returns an error if the value has a length less than the parameter
|
|
81
|
+
*
|
|
82
|
+
* @param {integer} min
|
|
83
|
+
* @param {string|Function} message
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
*
|
|
87
|
+
* const passwordValidators = [minLength(10, 'Should be at least 10 characters')];
|
|
88
|
+
* <TextInput type="password" name="password" validate={passwordValidators} />
|
|
89
|
+
*/
|
|
90
|
+
export const minLength = memoize((min, message = "strato.validation.minLength') => (value, values) => !isEmpty(value) && value.length < min
|
|
91
|
+
? getMessage(message, { min }, value, values)
|
|
92
|
+
: undefined);
|
|
93
|
+
/**
|
|
94
|
+
* Maximum length validator
|
|
95
|
+
*
|
|
96
|
+
* Returns an error if the value has a length higher than the parameter
|
|
97
|
+
*
|
|
98
|
+
* @param {integer} max
|
|
99
|
+
* @param {string|Function} message
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
*
|
|
103
|
+
* const nameValidators = [maxLength(10, 'Should be at most 10 characters')];
|
|
104
|
+
* <TextInput name="name" validate={nameValidators} />
|
|
105
|
+
*/
|
|
106
|
+
export const maxLength = memoize((max, message = "strato.validation.maxLength') => (value, values) => !isEmpty(value) && value.length > max
|
|
107
|
+
? getMessage(message, { max }, value, values)
|
|
108
|
+
: undefined);
|
|
109
|
+
/**
|
|
110
|
+
* Minimum validator
|
|
111
|
+
*
|
|
112
|
+
* Returns an error if the value is less than the parameter
|
|
113
|
+
*
|
|
114
|
+
* @param {integer} min
|
|
115
|
+
* @param {string|Function} message
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
*
|
|
119
|
+
* const fooValidators = [minValue(5, 'Should be more than 5')];
|
|
120
|
+
* <NumberInput name="foo" validate={fooValidators} />
|
|
121
|
+
*/
|
|
122
|
+
export const minValue = memoize((min, message = "strato.validation.minValue') => (value, values) => !isEmpty(value) && value < min
|
|
123
|
+
? getMessage(message, { min }, value, values)
|
|
124
|
+
: undefined);
|
|
125
|
+
/**
|
|
126
|
+
* Maximum validator
|
|
127
|
+
*
|
|
128
|
+
* Returns an error if the value is higher than the parameter
|
|
129
|
+
*
|
|
130
|
+
* @param {integer} max
|
|
131
|
+
* @param {string|Function} message
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
*
|
|
135
|
+
* const fooValidators = [maxValue(10, 'Should be less than 10')];
|
|
136
|
+
* <NumberInput name="foo" validate={fooValidators} />
|
|
137
|
+
*/
|
|
138
|
+
export const maxValue = memoize((max, message = "strato.validation.maxValue') => (value, values) => !isEmpty(value) && value > max
|
|
139
|
+
? getMessage(message, { max }, value, values)
|
|
140
|
+
: undefined);
|
|
141
|
+
/**
|
|
142
|
+
* Number validator
|
|
143
|
+
*
|
|
144
|
+
* Returns an error if the value is not a number
|
|
145
|
+
*
|
|
146
|
+
* @param {string|Function} message
|
|
147
|
+
*
|
|
148
|
+
* @example
|
|
149
|
+
*
|
|
150
|
+
* const ageValidators = [number('Must be a number')];
|
|
151
|
+
* <TextInput name="age" validate={ageValidators} />
|
|
152
|
+
*/
|
|
153
|
+
export const number = memoize((message = "strato.validation.number') => (value, values) => !isEmpty(value) && isNaN(Number(value))
|
|
154
|
+
? getMessage(message, undefined, value, values)
|
|
155
|
+
: undefined);
|
|
156
|
+
/**
|
|
157
|
+
* Regular expression validator
|
|
158
|
+
*
|
|
159
|
+
* Returns an error if the value does not match the pattern given as parameter
|
|
160
|
+
*
|
|
161
|
+
* @param {RegExp} pattern
|
|
162
|
+
* @param {string|Function} message
|
|
163
|
+
*
|
|
164
|
+
* @example
|
|
165
|
+
*
|
|
166
|
+
* const zipValidators = [regex(/^\d{5}(?:[-\s]\d{4})?$/, 'Must be a zip code')];
|
|
167
|
+
* <TextInput name="zip" validate={zipValidators} />
|
|
168
|
+
*/
|
|
169
|
+
export const regex = lodashMemoize((pattern, message = "strato.validation.regex') => (value, values) => !isEmpty(value) && typeof value === 'string' && !pattern.test(value)
|
|
170
|
+
? getMessage(message, { pattern }, value, values)
|
|
171
|
+
: undefined, (pattern, message) => {
|
|
172
|
+
return pattern.toString() + message;
|
|
173
|
+
});
|
|
174
|
+
/**
|
|
175
|
+
* Email validator
|
|
176
|
+
*
|
|
177
|
+
* Returns an error if the value is not a valid email
|
|
178
|
+
*
|
|
179
|
+
* @param {string|Function} message
|
|
180
|
+
*
|
|
181
|
+
* @example
|
|
182
|
+
*
|
|
183
|
+
* const emailValidators = [email('Must be an email')];
|
|
184
|
+
* <TextInput name="email" validate={emailValidators} />
|
|
185
|
+
*/
|
|
186
|
+
export const email = memoize((message = "strato.validation.email') => regex(EMAIL_REGEX, message));
|
|
187
|
+
const oneOfTypeMessage = ({ args }) => ({
|
|
188
|
+
message: "strato.validation.oneOf',
|
|
189
|
+
args,
|
|
190
|
+
});
|
|
191
|
+
/**
|
|
192
|
+
* Choices validator
|
|
193
|
+
*
|
|
194
|
+
* Returns an error if the value is not among the list passed as parameter
|
|
195
|
+
*
|
|
196
|
+
* @param {array} list
|
|
197
|
+
* @param {string|Function} message
|
|
198
|
+
*
|
|
199
|
+
* @example
|
|
200
|
+
*
|
|
201
|
+
* const genderValidators = [choices(['male', 'female'], 'Must be either Male or Female')];
|
|
202
|
+
* <TextInput name="gender" validate={genderValidators} />
|
|
203
|
+
*/
|
|
204
|
+
export const choices = memoize((list, message = oneOfTypeMessage) => (value, values) => !isEmpty(value) && list.indexOf(value) === -1
|
|
205
|
+
? getMessage(message, { list }, value, values)
|
|
206
|
+
: undefined);
|
|
207
|
+
/**
|
|
208
|
+
* Given a validator, returns a boolean indicating whether the field is required or not.
|
|
209
|
+
*/
|
|
210
|
+
export const isRequired = validate => {
|
|
211
|
+
if (validate && validate.isRequired) {
|
|
212
|
+
return true;
|
|
213
|
+
}
|
|
214
|
+
if (Array.isArray(validate)) {
|
|
215
|
+
return !!validate.find(it => it.isRequired);
|
|
216
|
+
}
|
|
217
|
+
return false;
|
|
218
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createContext } from 'react';
|
|
2
|
+
import { substituteTokens } from './substituteTokens';
|
|
3
|
+
const defaultI18nProvider = {
|
|
4
|
+
translate: (key, options) => options?._
|
|
5
|
+
? substituteTokens(options._, options)
|
|
6
|
+
: substituteTokens(key, options),
|
|
7
|
+
changeLocale: () => Promise.resolve(),
|
|
8
|
+
getLocale: () => 'en',
|
|
9
|
+
};
|
|
10
|
+
export const I18nContext = createContext(defaultI18nProvider);
|
|
11
|
+
I18nContext.displayName = 'I18nContext';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const TranslatableContext: import("react").Context<TranslatableContextValue | undefined>;
|
|
2
|
+
export interface TranslatableContextValue {
|
|
3
|
+
locales: string[];
|
|
4
|
+
selectedLocale: string;
|
|
5
|
+
selectLocale: SelectTranslatableLocale;
|
|
6
|
+
getRecordForLocale: GetRecordForLocale;
|
|
7
|
+
}
|
|
8
|
+
export type SelectTranslatableLocale = (locale: string) => void;
|
|
9
|
+
/**
|
|
10
|
+
* Returns a record where translatable fields have their values set to the value of the given locale.
|
|
11
|
+
* This is necessary because the fields rely on the RecordContext to get their values and have no knowledge of the locale.
|
|
12
|
+
*
|
|
13
|
+
* Given the record { title: { en: 'title_en', fr: 'title_fr' } } and the locale 'fr',
|
|
14
|
+
* the record for the locale 'fr' will be { title: 'title_fr' }
|
|
15
|
+
*/
|
|
16
|
+
export type GetRecordForLocale = (record: any, locale: string) => any;
|