@webiny/app-admin 0.0.0-unstable.a4f3e4ea8b → 0.0.0-unstable.a85ef555b2
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/base/Admin.d.ts +2 -4
- package/base/Admin.js +26 -13
- package/base/Admin.js.map +1 -1
- package/base/Base/DefaultFieldRenderers.js +4 -0
- package/base/Base/DefaultFieldRenderers.js.map +1 -1
- package/base/Base/FieldRenderers/AutoCompleteRenderer.js +1 -0
- package/base/Base/FieldRenderers/AutoCompleteRenderer.js.map +1 -1
- package/base/Base/FieldRenderers/BirthdayInputRenderer.d.ts +21 -0
- package/base/Base/FieldRenderers/BirthdayInputRenderer.js +39 -0
- package/base/Base/FieldRenderers/BirthdayInputRenderer.js.map +1 -0
- package/base/Base/FieldRenderers/BirthdayInputRenderer.test.d.ts +1 -0
- package/base/Base/FieldRenderers/BirthdayInputRenderer.test.js +123 -0
- package/base/Base/FieldRenderers/BirthdayInputRenderer.test.js.map +1 -0
- package/base/Base/FieldRenderers/HorizontalTabsRenderer.d.ts +2 -2
- package/base/Base/FieldRenderers/InputRenderer.js +1 -0
- package/base/Base/FieldRenderers/InputRenderer.js.map +1 -1
- package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZone.d.ts +2 -2
- package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZone.js +1 -1
- package/base/Base/FieldRenderers/ObjectRenderer/MultiValueDynamicZone/MultiValueDynamicZone.js.map +1 -1
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.d.ts +10 -4
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.js +13 -5
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectFieldComponents.js.map +1 -1
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js +8 -26
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js.map +1 -1
- package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.d.ts +2 -2
- package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.js +1 -1
- package/base/Base/FieldRenderers/ObjectRenderer/SingleValueDynamicZone.js.map +1 -1
- package/base/Base/FieldRenderers/ObjectRenderer/{TemplatePicker.d.ts → TemplatePicker/AddTemplateButton.d.ts} +1 -1
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/AddTemplateButton.js +24 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/AddTemplateButton.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/SelectableTemplate.d.ts +13 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/SelectableTemplate.js +21 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/SelectableTemplate.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateCard.d.ts +3 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateCard.js +35 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateCard.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGallery.d.ts +8 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGallery.js +22 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGallery.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGalleryToolbar.d.ts +10 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGalleryToolbar.js +52 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateGalleryToolbar.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateIcon.d.ts +8 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateIcon.js +16 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateIcon.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateList.d.ts +10 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateList.js +22 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateList.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateListItem.d.ts +3 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateListItem.js +35 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/TemplateListItem.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/index.d.ts +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/index.js +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/types.d.ts +6 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker/types.js +0 -0
- package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.d.ts +8 -3
- package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.js +25 -17
- package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.js.map +1 -1
- package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.test.d.ts +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.test.js +106 -0
- package/base/Base/FieldRenderers/ObjectRenderer/resolveItemTitle.test.js.map +1 -0
- package/base/Base/FieldRenderers/SelectRenderer.js +1 -0
- package/base/Base/FieldRenderers/SelectRenderer.js.map +1 -1
- package/base/Base/FieldRenderers/VerticalTabsRenderer.d.ts +2 -2
- package/base/Base/Menus.js +4 -4
- package/base/Base/Menus.js.map +1 -1
- package/base/Base.js +2 -1
- package/base/Base.js.map +1 -1
- package/base/createRootContainer.js +10 -5
- package/base/createRootContainer.js.map +1 -1
- package/base/resolveApiUrl.d.ts +13 -0
- package/base/resolveApiUrl.js +26 -0
- package/base/resolveApiUrl.js.map +1 -0
- package/base/ui/AssumedPermissionsSelector.d.ts +47 -0
- package/base/ui/AssumedPermissionsSelector.js +7 -0
- package/base/ui/AssumedPermissionsSelector.js.map +1 -0
- package/base/ui/DebuggerIndicator.d.ts +23 -0
- package/base/ui/DebuggerIndicator.js +5 -0
- package/base/ui/DebuggerIndicator.js.map +1 -0
- package/components/DeveloperMode/DeveloperMode.d.ts +1 -3
- package/components/DeveloperMode/DeveloperMode.js.map +1 -1
- package/components/Filters/Filters.js +7 -1
- package/components/Filters/Filters.js.map +1 -1
- package/components/IconPicker/IconPickerComponent.d.ts +2 -2
- package/components/IconPicker/plugins/customPlugin.js +4 -19
- package/components/IconPicker/plugins/customPlugin.js.map +1 -1
- package/components/ListView/ListViewBulkActions.d.ts +2 -2
- package/components/ListView/ListViewContent.d.ts +2 -2
- package/components/ListView/ListViewFilters.d.ts +2 -2
- package/components/ListView/index.d.ts +6 -6
- package/components/Permissions/Permissions.js +2 -1
- package/components/Permissions/Permissions.js.map +1 -1
- package/components/Permissions/index.d.ts +1 -0
- package/components/Permissions/index.js +1 -0
- package/components/Permissions/mergeByName.d.ts +11 -0
- package/components/Permissions/mergeByName.js +33 -0
- package/components/Permissions/mergeByName.js.map +1 -0
- package/components/RolesMultiAutocomplete/index.d.ts +5 -1
- package/components/RolesMultiAutocomplete/index.js +18 -19
- package/components/RolesMultiAutocomplete/index.js.map +1 -1
- package/components/SplitView/SplitView.d.ts +2 -2
- package/components/SplitView/SplitView.js +8 -8
- package/components/SplitView/SplitView.js.map +1 -1
- package/components/Table/components/Table/TableInner.d.ts +2 -2
- package/components/TeamAutocomplete/index.d.ts +5 -1
- package/components/TeamAutocomplete/index.js +13 -14
- package/components/TeamAutocomplete/index.js.map +1 -1
- package/components/TeamsMultiAutocomplete/index.d.ts +5 -1
- package/components/TeamsMultiAutocomplete/index.js +18 -19
- package/components/TeamsMultiAutocomplete/index.js.map +1 -1
- package/components/index.d.ts +0 -1
- package/components/index.js +0 -1
- package/config/AdminConfig/Breadcrumbs.d.ts +42 -0
- package/config/AdminConfig/Breadcrumbs.js +24 -0
- package/config/AdminConfig/Breadcrumbs.js.map +1 -0
- package/config/AdminConfig/SecurityPermissions.js +2 -1
- package/config/AdminConfig/SecurityPermissions.js.map +1 -1
- package/config/AdminConfig/Widget.d.ts +9 -1
- package/config/AdminConfig/Widget.js +6 -2
- package/config/AdminConfig/Widget.js.map +1 -1
- package/config/AdminConfig.d.ts +3 -0
- package/config/AdminConfig.js +3 -0
- package/config/AdminConfig.js.map +1 -1
- package/errors/ErrorOverlayNetworkErrorHandler.js +4 -4
- package/errors/ErrorOverlayNetworkErrorHandler.js.map +1 -1
- package/features/accessManagement/permissions/feature.d.ts +1 -1
- package/features/accessManagement/types.d.ts +3 -3
- package/features/adminAssistant/AdminAssistantGateway.d.ts +30 -0
- package/features/adminAssistant/AdminAssistantGateway.js +41 -0
- package/features/adminAssistant/AdminAssistantGateway.js.map +1 -0
- package/features/adminAssistant/AdminAssistantPresenter.d.ts +32 -0
- package/features/adminAssistant/AdminAssistantPresenter.js +220 -0
- package/features/adminAssistant/AdminAssistantPresenter.js.map +1 -0
- package/features/adminAssistant/abstractions.d.ts +124 -0
- package/features/adminAssistant/abstractions.js +6 -0
- package/features/adminAssistant/abstractions.js.map +1 -0
- package/features/adminAssistant/feature.d.ts +3 -0
- package/features/adminAssistant/feature.js +19 -0
- package/features/adminAssistant/feature.js.map +1 -0
- package/features/adminAssistant/index.d.ts +6 -0
- package/features/adminAssistant/index.js +3 -0
- package/features/adminUsers/account/getCurrentUser/GetCurrentUserGateway.d.ts +11 -0
- package/features/adminUsers/account/getCurrentUser/GetCurrentUserGateway.js +44 -0
- package/features/adminUsers/account/getCurrentUser/GetCurrentUserGateway.js.map +1 -0
- package/features/adminUsers/account/getCurrentUser/GetCurrentUserUseCase.d.ts +10 -0
- package/features/adminUsers/account/getCurrentUser/GetCurrentUserUseCase.js +19 -0
- package/features/adminUsers/account/getCurrentUser/GetCurrentUserUseCase.js.map +1 -0
- package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserGateway.d.ts +16 -0
- package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserGateway.js +5 -0
- package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserGateway.js.map +1 -0
- package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserUseCase.d.ts +10 -0
- package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserUseCase.js +5 -0
- package/features/adminUsers/account/getCurrentUser/abstractions/GetCurrentUserUseCase.js.map +1 -0
- package/features/adminUsers/account/getCurrentUser/abstractions/index.d.ts +6 -0
- package/features/adminUsers/account/getCurrentUser/abstractions/index.js +2 -0
- package/features/adminUsers/account/getCurrentUser/feature.d.ts +3 -0
- package/features/adminUsers/account/getCurrentUser/feature.js +19 -0
- package/features/adminUsers/account/getCurrentUser/feature.js.map +1 -0
- package/features/adminUsers/account/getCurrentUser/index.d.ts +1 -0
- package/features/adminUsers/account/getCurrentUser/index.js +1 -0
- package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserGateway.d.ts +11 -0
- package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserGateway.js +48 -0
- package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserGateway.js.map +1 -0
- package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserUseCase.d.ts +10 -0
- package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserUseCase.js +19 -0
- package/features/adminUsers/account/updateCurrentUser/UpdateCurrentUserUseCase.js.map +1 -0
- package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserGateway.d.ts +26 -0
- package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserGateway.js +5 -0
- package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserGateway.js.map +1 -0
- package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserUseCase.d.ts +13 -0
- package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserUseCase.js +5 -0
- package/features/adminUsers/account/updateCurrentUser/abstractions/UpdateCurrentUserUseCase.js.map +1 -0
- package/features/adminUsers/account/updateCurrentUser/abstractions/index.d.ts +8 -0
- package/features/adminUsers/account/updateCurrentUser/abstractions/index.js +2 -0
- package/features/adminUsers/account/updateCurrentUser/feature.d.ts +3 -0
- package/features/adminUsers/account/updateCurrentUser/feature.js +19 -0
- package/features/adminUsers/account/updateCurrentUser/feature.js.map +1 -0
- package/features/adminUsers/account/updateCurrentUser/index.d.ts +1 -0
- package/features/adminUsers/account/updateCurrentUser/index.js +1 -0
- package/features/adminUsers/passwordPolicy/RulesPasswordPolicy.d.ts +6 -0
- package/features/adminUsers/passwordPolicy/RulesPasswordPolicy.js +22 -0
- package/features/adminUsers/passwordPolicy/RulesPasswordPolicy.js.map +1 -0
- package/features/adminUsers/passwordPolicy/abstractions.d.ts +20 -0
- package/features/adminUsers/passwordPolicy/abstractions.js +5 -0
- package/features/adminUsers/passwordPolicy/abstractions.js.map +1 -0
- package/features/adminUsers/passwordPolicy/feature.d.ts +8 -0
- package/features/adminUsers/passwordPolicy/feature.js +18 -0
- package/features/adminUsers/passwordPolicy/feature.js.map +1 -0
- package/features/adminUsers/passwordPolicy/index.d.ts +3 -0
- package/features/adminUsers/passwordPolicy/index.js +3 -0
- package/features/adminUsers/passwordPolicy/readPasswordPolicyRules.d.ts +10 -0
- package/features/adminUsers/passwordPolicy/readPasswordPolicyRules.js +11 -0
- package/features/adminUsers/passwordPolicy/readPasswordPolicyRules.js.map +1 -0
- package/features/adminUsers/permissions/abstractions.d.ts +17 -0
- package/features/adminUsers/permissions/abstractions.js +6 -0
- package/features/adminUsers/permissions/abstractions.js.map +1 -0
- package/features/adminUsers/permissions/feature.d.ts +14 -0
- package/features/adminUsers/permissions/feature.js +7 -0
- package/features/adminUsers/permissions/feature.js.map +1 -0
- package/features/adminUsers/permissionsSchema.d.ts +10 -0
- package/features/adminUsers/permissionsSchema.js +18 -0
- package/features/adminUsers/permissionsSchema.js.map +1 -0
- package/features/adminUsers/users/createUser/CreateUserGateway.d.ts +11 -0
- package/features/adminUsers/users/createUser/CreateUserGateway.js +49 -0
- package/features/adminUsers/users/createUser/CreateUserGateway.js.map +1 -0
- package/features/adminUsers/users/createUser/CreateUserUseCase.d.ts +10 -0
- package/features/adminUsers/users/createUser/CreateUserUseCase.js +18 -0
- package/features/adminUsers/users/createUser/CreateUserUseCase.js.map +1 -0
- package/features/adminUsers/users/createUser/abstractions/CreateUserGateway.d.ts +21 -0
- package/features/adminUsers/users/createUser/abstractions/CreateUserGateway.js +5 -0
- package/features/adminUsers/users/createUser/abstractions/CreateUserGateway.js.map +1 -0
- package/features/adminUsers/users/createUser/abstractions/CreateUserUseCase.d.ts +14 -0
- package/features/adminUsers/users/createUser/abstractions/CreateUserUseCase.js +5 -0
- package/features/adminUsers/users/createUser/abstractions/CreateUserUseCase.js.map +1 -0
- package/features/adminUsers/users/createUser/abstractions/index.d.ts +2 -0
- package/features/adminUsers/users/createUser/abstractions/index.js +2 -0
- package/features/adminUsers/users/createUser/feature.d.ts +3 -0
- package/features/adminUsers/users/createUser/feature.js +19 -0
- package/features/adminUsers/users/createUser/feature.js.map +1 -0
- package/features/adminUsers/users/createUser/index.d.ts +2 -0
- package/features/adminUsers/users/createUser/index.js +2 -0
- package/features/adminUsers/users/deleteUser/DeleteUserGateway.d.ts +11 -0
- package/features/adminUsers/users/deleteUser/DeleteUserGateway.js +40 -0
- package/features/adminUsers/users/deleteUser/DeleteUserGateway.js.map +1 -0
- package/features/adminUsers/users/deleteUser/DeleteUserUseCase.d.ts +10 -0
- package/features/adminUsers/users/deleteUser/DeleteUserUseCase.js +18 -0
- package/features/adminUsers/users/deleteUser/DeleteUserUseCase.js.map +1 -0
- package/features/adminUsers/users/deleteUser/abstractions/DeleteUserGateway.d.ts +11 -0
- package/features/adminUsers/users/deleteUser/abstractions/DeleteUserGateway.js +5 -0
- package/features/adminUsers/users/deleteUser/abstractions/DeleteUserGateway.js.map +1 -0
- package/features/adminUsers/users/deleteUser/abstractions/DeleteUserUseCase.d.ts +11 -0
- package/features/adminUsers/users/deleteUser/abstractions/DeleteUserUseCase.js +5 -0
- package/features/adminUsers/users/deleteUser/abstractions/DeleteUserUseCase.js.map +1 -0
- package/features/adminUsers/users/deleteUser/abstractions/index.d.ts +2 -0
- package/features/adminUsers/users/deleteUser/abstractions/index.js +2 -0
- package/features/adminUsers/users/deleteUser/feature.d.ts +3 -0
- package/features/adminUsers/users/deleteUser/feature.js +19 -0
- package/features/adminUsers/users/deleteUser/feature.js.map +1 -0
- package/features/adminUsers/users/deleteUser/index.d.ts +2 -0
- package/features/adminUsers/users/deleteUser/index.js +2 -0
- package/features/adminUsers/users/getUser/GetUserGateway.d.ts +11 -0
- package/features/adminUsers/users/getUser/GetUserGateway.js +57 -0
- package/features/adminUsers/users/getUser/GetUserGateway.js.map +1 -0
- package/features/adminUsers/users/getUser/GetUserUseCase.d.ts +10 -0
- package/features/adminUsers/users/getUser/GetUserUseCase.js +18 -0
- package/features/adminUsers/users/getUser/GetUserUseCase.js.map +1 -0
- package/features/adminUsers/users/getUser/abstractions/GetUserGateway.d.ts +32 -0
- package/features/adminUsers/users/getUser/abstractions/GetUserGateway.js +5 -0
- package/features/adminUsers/users/getUser/abstractions/GetUserGateway.js.map +1 -0
- package/features/adminUsers/users/getUser/abstractions/GetUserUseCase.d.ts +14 -0
- package/features/adminUsers/users/getUser/abstractions/GetUserUseCase.js +5 -0
- package/features/adminUsers/users/getUser/abstractions/GetUserUseCase.js.map +1 -0
- package/features/adminUsers/users/getUser/abstractions/index.d.ts +2 -0
- package/features/adminUsers/users/getUser/abstractions/index.js +2 -0
- package/features/adminUsers/users/getUser/feature.d.ts +3 -0
- package/features/adminUsers/users/getUser/feature.js +19 -0
- package/features/adminUsers/users/getUser/feature.js.map +1 -0
- package/features/adminUsers/users/getUser/index.d.ts +2 -0
- package/features/adminUsers/users/getUser/index.js +2 -0
- package/features/adminUsers/users/listUsers/ListUsersGateway.d.ts +11 -0
- package/features/adminUsers/users/listUsers/ListUsersGateway.js +39 -0
- package/features/adminUsers/users/listUsers/ListUsersGateway.js.map +1 -0
- package/features/adminUsers/users/listUsers/ListUsersUseCase.d.ts +10 -0
- package/features/adminUsers/users/listUsers/ListUsersUseCase.js +18 -0
- package/features/adminUsers/users/listUsers/ListUsersUseCase.js.map +1 -0
- package/features/adminUsers/users/listUsers/abstractions/ListUsersGateway.d.ts +17 -0
- package/features/adminUsers/users/listUsers/abstractions/ListUsersGateway.js +5 -0
- package/features/adminUsers/users/listUsers/abstractions/ListUsersGateway.js.map +1 -0
- package/features/adminUsers/users/listUsers/abstractions/ListUsersUseCase.d.ts +10 -0
- package/features/adminUsers/users/listUsers/abstractions/ListUsersUseCase.js +5 -0
- package/features/adminUsers/users/listUsers/abstractions/ListUsersUseCase.js.map +1 -0
- package/features/adminUsers/users/listUsers/abstractions/index.d.ts +2 -0
- package/features/adminUsers/users/listUsers/abstractions/index.js +2 -0
- package/features/adminUsers/users/listUsers/feature.d.ts +3 -0
- package/features/adminUsers/users/listUsers/feature.js +19 -0
- package/features/adminUsers/users/listUsers/feature.js.map +1 -0
- package/features/adminUsers/users/listUsers/index.d.ts +2 -0
- package/features/adminUsers/users/listUsers/index.js +2 -0
- package/features/adminUsers/users/updateUser/UpdateUserGateway.d.ts +11 -0
- package/features/adminUsers/users/updateUser/UpdateUserGateway.js +59 -0
- package/features/adminUsers/users/updateUser/UpdateUserGateway.js.map +1 -0
- package/features/adminUsers/users/updateUser/UpdateUserUseCase.d.ts +10 -0
- package/features/adminUsers/users/updateUser/UpdateUserUseCase.js +18 -0
- package/features/adminUsers/users/updateUser/UpdateUserUseCase.js.map +1 -0
- package/features/adminUsers/users/updateUser/abstractions/UpdateUserGateway.d.ts +33 -0
- package/features/adminUsers/users/updateUser/abstractions/UpdateUserGateway.js +5 -0
- package/features/adminUsers/users/updateUser/abstractions/UpdateUserGateway.js.map +1 -0
- package/features/adminUsers/users/updateUser/abstractions/UpdateUserUseCase.d.ts +15 -0
- package/features/adminUsers/users/updateUser/abstractions/UpdateUserUseCase.js +5 -0
- package/features/adminUsers/users/updateUser/abstractions/UpdateUserUseCase.js.map +1 -0
- package/features/adminUsers/users/updateUser/abstractions/index.d.ts +2 -0
- package/features/adminUsers/users/updateUser/abstractions/index.js +2 -0
- package/features/adminUsers/users/updateUser/feature.d.ts +3 -0
- package/features/adminUsers/users/updateUser/feature.js +19 -0
- package/features/adminUsers/users/updateUser/feature.js.map +1 -0
- package/features/adminUsers/users/updateUser/index.d.ts +2 -0
- package/features/adminUsers/users/updateUser/index.js +2 -0
- package/features/assumePermissions/ApiStreamClientDecorator.d.ts +16 -0
- package/features/assumePermissions/ApiStreamClientDecorator.js +29 -0
- package/features/assumePermissions/ApiStreamClientDecorator.js.map +1 -0
- package/features/assumePermissions/AssumePermissionsContext.d.ts +17 -0
- package/features/assumePermissions/AssumePermissionsContext.js +32 -0
- package/features/assumePermissions/AssumePermissionsContext.js.map +1 -0
- package/features/assumePermissions/AssumePermissionsUseCase.d.ts +33 -0
- package/features/assumePermissions/AssumePermissionsUseCase.js +48 -0
- package/features/assumePermissions/AssumePermissionsUseCase.js.map +1 -0
- package/features/assumePermissions/GraphQLClientDecorator.d.ts +16 -0
- package/features/assumePermissions/GraphQLClientDecorator.js +29 -0
- package/features/assumePermissions/GraphQLClientDecorator.js.map +1 -0
- package/features/assumePermissions/ListAssumableTargetsGateway.d.ts +13 -0
- package/features/assumePermissions/ListAssumableTargetsGateway.js +74 -0
- package/features/assumePermissions/ListAssumableTargetsGateway.js.map +1 -0
- package/features/assumePermissions/ListAssumableTargetsUseCase.d.ts +16 -0
- package/features/assumePermissions/ListAssumableTargetsUseCase.js +38 -0
- package/features/assumePermissions/ListAssumableTargetsUseCase.js.map +1 -0
- package/features/assumePermissions/LogInUseCaseDecorator.d.ts +33 -0
- package/features/assumePermissions/LogInUseCaseDecorator.js +36 -0
- package/features/assumePermissions/LogInUseCaseDecorator.js.map +1 -0
- package/features/assumePermissions/LogOutUseCaseDecorator.d.ts +16 -0
- package/features/assumePermissions/LogOutUseCaseDecorator.js +21 -0
- package/features/assumePermissions/LogOutUseCaseDecorator.js.map +1 -0
- package/features/assumePermissions/abstractions.d.ts +78 -0
- package/features/assumePermissions/abstractions.js +8 -0
- package/features/assumePermissions/abstractions.js.map +1 -0
- package/features/assumePermissions/assumePermissionsHeader.d.ts +3 -0
- package/features/assumePermissions/assumePermissionsHeader.js +7 -0
- package/features/assumePermissions/assumePermissionsHeader.js.map +1 -0
- package/features/assumePermissions/feature.d.ts +4 -0
- package/features/assumePermissions/feature.js +32 -0
- package/features/assumePermissions/feature.js.map +1 -0
- package/features/assumePermissions/index.d.ts +4 -0
- package/features/assumePermissions/index.js +2 -0
- package/features/banners/Banners.d.ts +15 -0
- package/features/banners/Banners.js +39 -0
- package/features/banners/Banners.js.map +1 -0
- package/features/banners/abstractions.d.ts +34 -0
- package/features/banners/abstractions.js +5 -0
- package/features/banners/abstractions.js.map +1 -0
- package/features/banners/feature.d.ts +3 -0
- package/features/banners/feature.js +17 -0
- package/features/banners/feature.js.map +1 -0
- package/features/banners/index.d.ts +2 -0
- package/features/banners/index.js +2 -0
- package/features/debugger/DebugSessionsRepository.d.ts +35 -0
- package/features/debugger/DebugSessionsRepository.js +57 -0
- package/features/debugger/DebugSessionsRepository.js.map +1 -0
- package/features/debugger/GraphQLExtensionsDebugHandler.d.ts +17 -0
- package/features/debugger/GraphQLExtensionsDebugHandler.js +21 -0
- package/features/debugger/GraphQLExtensionsDebugHandler.js.map +1 -0
- package/features/debugger/GraphQLExtensionsDebugHandler.test.d.ts +1 -0
- package/features/debugger/GraphQLExtensionsDebugHandler.test.js +112 -0
- package/features/debugger/GraphQLExtensionsDebugHandler.test.js.map +1 -0
- package/features/debugger/abstractions.d.ts +50 -0
- package/features/debugger/abstractions.js +5 -0
- package/features/debugger/abstractions.js.map +1 -0
- package/features/debugger/constants.d.ts +1 -0
- package/features/debugger/constants.js +4 -0
- package/features/debugger/constants.js.map +1 -0
- package/features/debugger/feature.d.ts +3 -0
- package/features/debugger/feature.js +19 -0
- package/features/debugger/feature.js.map +1 -0
- package/features/debugger/index.d.ts +3 -0
- package/features/debugger/index.js +3 -0
- package/features/featureFlags/FeatureFlagsGateway.d.ts +10 -0
- package/features/featureFlags/FeatureFlagsGateway.js +40 -0
- package/features/featureFlags/FeatureFlagsGateway.js.map +1 -0
- package/features/featureFlags/FeatureFlagsService.d.ts +16 -0
- package/features/featureFlags/FeatureFlagsService.js +64 -0
- package/features/featureFlags/FeatureFlagsService.js.map +1 -0
- package/features/featureFlags/abstractions.d.ts +19 -0
- package/features/featureFlags/abstractions.js +6 -0
- package/features/featureFlags/abstractions.js.map +1 -0
- package/features/featureFlags/feature.d.ts +3 -0
- package/features/featureFlags/feature.js +19 -0
- package/features/featureFlags/feature.js.map +1 -0
- package/features/formModel/AccessControlRuleEvaluator.d.ts +12 -0
- package/features/formModel/AccessControlRuleEvaluator.js +30 -0
- package/features/formModel/AccessControlRuleEvaluator.js.map +1 -0
- package/features/formModel/AccessControlRuleEvaluator.test.d.ts +1 -0
- package/features/formModel/AccessControlRuleEvaluator.test.js +219 -0
- package/features/formModel/AccessControlRuleEvaluator.test.js.map +1 -0
- package/features/formModel/ConditionRuleEvaluator.js +34 -4
- package/features/formModel/ConditionRuleEvaluator.js.map +1 -1
- package/features/formModel/Field.d.ts +13 -1
- package/features/formModel/Field.js +25 -5
- package/features/formModel/Field.js.map +1 -1
- package/features/formModel/FieldBuilder.d.ts +1 -0
- package/features/formModel/FieldBuilder.js +4 -0
- package/features/formModel/FieldBuilder.js.map +1 -1
- package/features/formModel/FieldBuilder.test.js +153 -1
- package/features/formModel/FieldBuilder.test.js.map +1 -1
- package/features/formModel/FormErrors.d.ts +2 -2
- package/features/formModel/FormErrors.js +1 -1
- package/features/formModel/FormErrors.js.map +1 -1
- package/features/formModel/FormModel.d.ts +2 -0
- package/features/formModel/FormModel.js +25 -0
- package/features/formModel/FormModel.js.map +1 -1
- package/features/formModel/FormModel.test.js +591 -4
- package/features/formModel/FormModel.test.js.map +1 -1
- package/features/formModel/FormView.d.ts +8 -4
- package/features/formModel/ObjectField.d.ts +11 -1
- package/features/formModel/ObjectField.js +45 -20
- package/features/formModel/ObjectField.js.map +1 -1
- package/features/formModel/PresenterErrors.d.ts +2 -2
- package/features/formModel/Rules.test.js +224 -16
- package/features/formModel/Rules.test.js.map +1 -1
- package/features/formModel/abstractions.d.ts +51 -3
- package/features/formModel/abstractions.js +2 -1
- package/features/formModel/abstractions.js.map +1 -1
- package/features/formModel/createFieldRenderer.js +3 -4
- package/features/formModel/createFieldRenderer.js.map +1 -1
- package/features/formModel/demo/FormModelDemo.d.ts +2 -2
- package/features/formModel/feature.js +2 -0
- package/features/formModel/feature.js.map +1 -1
- package/features/formModel/fieldTypes/DateTimeFieldType.d.ts +67 -4
- package/features/formModel/fieldTypes/DateTimeFieldType.js +88 -22
- package/features/formModel/fieldTypes/DateTimeFieldType.js.map +1 -1
- package/features/formModel/fieldTypes/ObjectFieldType.d.ts +3 -1
- package/features/formModel/fieldTypes/ObjectFieldType.js +23 -1
- package/features/formModel/fieldTypes/ObjectFieldType.js.map +1 -1
- package/features/formModel/fieldTypes/dateLimits.d.ts +37 -0
- package/features/formModel/fieldTypes/dateLimits.js +64 -0
- package/features/formModel/fieldTypes/dateLimits.js.map +1 -0
- package/features/formModel/fieldTypes/dateLimits.test.d.ts +1 -0
- package/features/formModel/fieldTypes/dateLimits.test.js +60 -0
- package/features/formModel/fieldTypes/dateLimits.test.js.map +1 -0
- package/features/formModel/index.d.ts +2 -2
- package/features/formModel/index.js +1 -1
- package/features/formModel/jsonSchema/JsonSchema.d.ts +18 -0
- package/features/formModel/jsonSchema/JsonSchema.js +0 -0
- package/features/formModel/jsonSchema/JsonSchemaFieldOptions.d.ts +4 -0
- package/features/formModel/jsonSchema/JsonSchemaFieldOptions.js +0 -0
- package/features/formModel/jsonSchema/JsonSchemaIssue.d.ts +4 -0
- package/features/formModel/jsonSchema/JsonSchemaIssue.js +0 -0
- package/features/formModel/jsonSchema/JsonSchemaValidationResult.d.ts +5 -0
- package/features/formModel/jsonSchema/JsonSchemaValidationResult.js +0 -0
- package/features/formModel/jsonSchema/JsonSchemaValidator.d.ts +4 -0
- package/features/formModel/jsonSchema/JsonSchemaValidator.js +0 -0
- package/features/formModel/jsonSchema/PlainObject.d.ts +1 -0
- package/features/formModel/jsonSchema/PlainObject.js +0 -0
- package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.d.ts +5 -0
- package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.js +154 -0
- package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.js.map +1 -0
- package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.test.d.ts +1 -0
- package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.test.js +643 -0
- package/features/formModel/jsonSchema/buildFieldsFromJsonSchema.test.js.map +1 -0
- package/features/formModel/jsonSchema/createJsonSchemaValidator.d.ts +3 -0
- package/features/formModel/jsonSchema/createJsonSchemaValidator.js +40 -0
- package/features/formModel/jsonSchema/createJsonSchemaValidator.js.map +1 -0
- package/features/formModel/jsonSchema/createJsonSchemaValidator.test.d.ts +1 -0
- package/features/formModel/jsonSchema/createJsonSchemaValidator.test.js +141 -0
- package/features/formModel/jsonSchema/createJsonSchemaValidator.test.js.map +1 -0
- package/features/formModel/jsonSchema/formDataToJsonSchemaValue.d.ts +3 -0
- package/features/formModel/jsonSchema/formDataToJsonSchemaValue.js +52 -0
- package/features/formModel/jsonSchema/formDataToJsonSchemaValue.js.map +1 -0
- package/features/formModel/jsonSchema/formDataToJsonSchemaValue.test.d.ts +1 -0
- package/features/formModel/jsonSchema/formDataToJsonSchemaValue.test.js +250 -0
- package/features/formModel/jsonSchema/formDataToJsonSchemaValue.test.js.map +1 -0
- package/features/formModel/jsonSchema/getJsonSchemaKind.d.ts +3 -0
- package/features/formModel/jsonSchema/getJsonSchemaKind.js +31 -0
- package/features/formModel/jsonSchema/getJsonSchemaKind.js.map +1 -0
- package/features/formModel/jsonSchema/getJsonSchemaKind.test.d.ts +1 -0
- package/features/formModel/jsonSchema/getJsonSchemaKind.test.js +123 -0
- package/features/formModel/jsonSchema/getJsonSchemaKind.test.js.map +1 -0
- package/features/formModel/jsonSchema/isPlainObject.d.ts +2 -0
- package/features/formModel/jsonSchema/isPlainObject.js +4 -0
- package/features/formModel/jsonSchema/isPlainObject.js.map +1 -0
- package/features/formModel/jsonSchema/jsonSchemaValueToFormData.d.ts +3 -0
- package/features/formModel/jsonSchema/jsonSchemaValueToFormData.js +30 -0
- package/features/formModel/jsonSchema/jsonSchemaValueToFormData.js.map +1 -0
- package/features/formModel/jsonSchema/jsonSchemaValueToFormData.test.d.ts +1 -0
- package/features/formModel/jsonSchema/jsonSchemaValueToFormData.test.js +207 -0
- package/features/formModel/jsonSchema/jsonSchemaValueToFormData.test.js.map +1 -0
- package/features/formModel/jsonSchema/normalizeJsonSchema.d.ts +2 -0
- package/features/formModel/jsonSchema/normalizeJsonSchema.js +10 -0
- package/features/formModel/jsonSchema/normalizeJsonSchema.js.map +1 -0
- package/features/formModel/renderers.d.ts +1 -0
- package/features/formModel/renderers.js +1 -0
- package/features/iconPicker/listCustomIcons/ListCustomIconsGateway.d.ts +11 -0
- package/features/iconPicker/listCustomIcons/ListCustomIconsGateway.js +49 -0
- package/features/iconPicker/listCustomIcons/ListCustomIconsGateway.js.map +1 -0
- package/features/iconPicker/listCustomIcons/abstractions.d.ts +12 -0
- package/features/iconPicker/listCustomIcons/abstractions.js +5 -0
- package/features/iconPicker/listCustomIcons/abstractions.js.map +1 -0
- package/features/iconPicker/listCustomIcons/feature.d.ts +1 -0
- package/features/iconPicker/listCustomIcons/feature.js +11 -0
- package/features/iconPicker/listCustomIcons/feature.js.map +1 -0
- package/features/iconPicker/listCustomIcons/index.d.ts +3 -0
- package/features/iconPicker/listCustomIcons/index.js +2 -0
- package/features/notifications/Notifications.d.ts +1 -0
- package/features/notifications/Notifications.js +3 -0
- package/features/notifications/Notifications.js.map +1 -1
- package/features/notifications/Notifications.test.d.ts +1 -0
- package/features/notifications/Notifications.test.js +106 -0
- package/features/notifications/Notifications.test.js.map +1 -0
- package/features/notifications/NotificationsRenderer.d.ts +3 -2
- package/features/notifications/NotificationsRenderer.js +23 -4
- package/features/notifications/NotificationsRenderer.js.map +1 -1
- package/features/notifications/NotificationsRenderer.test.d.ts +1 -0
- package/features/notifications/NotificationsRenderer.test.js +261 -0
- package/features/notifications/NotificationsRenderer.test.js.map +1 -0
- package/features/notifications/abstractions.d.ts +13 -2
- package/features/notifications/abstractions.js.map +1 -1
- package/features/security/AuthenticationContext/ApiStreamClientDecorator.d.ts +22 -0
- package/features/security/AuthenticationContext/ApiStreamClientDecorator.js +32 -0
- package/features/security/AuthenticationContext/ApiStreamClientDecorator.js.map +1 -0
- package/features/security/AuthenticationContext/feature.js +2 -0
- package/features/security/AuthenticationContext/feature.js.map +1 -1
- package/features/security/LogIn/LogInUseCase.d.ts +0 -1
- package/features/security/LogIn/LogInUseCase.js +2 -5
- package/features/security/LogIn/LogInUseCase.js.map +1 -1
- package/features/security/LogIn/hasAppPermissions.d.ts +2 -0
- package/features/security/LogIn/hasAppPermissions.js +8 -0
- package/features/security/LogIn/hasAppPermissions.js.map +1 -0
- package/features/slugify/DefaultSlugify.d.ts +8 -0
- package/features/slugify/DefaultSlugify.js +20 -0
- package/features/slugify/DefaultSlugify.js.map +1 -0
- package/features/slugify/abstractions.d.ts +12 -0
- package/features/slugify/abstractions.js +5 -0
- package/features/slugify/abstractions.js.map +1 -0
- package/features/slugify/feature.d.ts +1 -0
- package/features/slugify/feature.js +11 -0
- package/features/slugify/feature.js.map +1 -0
- package/features/slugify/index.d.ts +3 -0
- package/features/slugify/index.js +3 -0
- package/features/stringFormatter/DefaultStringFormatter.d.ts +17 -0
- package/features/stringFormatter/DefaultStringFormatter.js +19 -0
- package/features/stringFormatter/DefaultStringFormatter.js.map +1 -0
- package/features/stringFormatter/abstractions.d.ts +11 -0
- package/features/stringFormatter/abstractions.js +5 -0
- package/features/stringFormatter/abstractions.js.map +1 -0
- package/features/stringFormatter/feature.d.ts +3 -0
- package/features/stringFormatter/feature.js +19 -0
- package/features/stringFormatter/feature.js.map +1 -0
- package/features/stringFormatter/index.d.ts +4 -0
- package/features/stringFormatter/index.js +4 -0
- package/features/stringFormatter/useStringFormatter.d.ts +5 -0
- package/features/stringFormatter/useStringFormatter.js +8 -0
- package/features/stringFormatter/useStringFormatter.js.map +1 -0
- package/features/tenancy/ApiStreamClientDecorator.d.ts +16 -0
- package/features/tenancy/ApiStreamClientDecorator.js +30 -0
- package/features/tenancy/ApiStreamClientDecorator.js.map +1 -0
- package/features/tenancy/feature.js +2 -0
- package/features/tenancy/feature.js.map +1 -1
- package/features/wcp/ReactLicense.d.ts +8 -0
- package/features/wcp/ReactLicense.js +24 -0
- package/features/wcp/ReactLicense.js.map +1 -1
- package/features/wcp/WcpGateway.js +7 -0
- package/features/wcp/WcpGateway.js.map +1 -1
- package/features/webinySdk/WebinySdk.d.ts +2 -1
- package/features/webinySdk/WebinySdk.js.map +1 -1
- package/hooks/useHotkeys.js +7 -5
- package/hooks/useHotkeys.js.map +1 -1
- package/hooks/useSnackbar.js.map +1 -1
- package/index.d.ts +30 -3
- package/index.js +31 -13
- package/modules/AccessManagementExtension.js +55 -23
- package/modules/AccessManagementExtension.js.map +1 -1
- package/modules/DebuggerExtension.d.ts +2 -0
- package/modules/DebuggerExtension.js +55 -0
- package/modules/DebuggerExtension.js.map +1 -0
- package/package.json +32 -39
- package/permissions/createPermissions.js.map +1 -1
- package/presentation/accessManagement/SecurityPermissions.js +3 -3
- package/presentation/accessManagement/SecurityPermissions.js.map +1 -1
- package/presentation/accessManagement/apiKeys/ApiKeysPresenter.d.ts +3 -1
- package/presentation/accessManagement/apiKeys/ApiKeysPresenter.js +13 -16
- package/presentation/accessManagement/apiKeys/ApiKeysPresenter.js.map +1 -1
- package/presentation/accessManagement/apiKeys/components/ApiKeysView.d.ts +2 -2
- package/presentation/accessManagement/apiKeys/components/ApiKeysView.js +13 -7
- package/presentation/accessManagement/apiKeys/components/ApiKeysView.js.map +1 -1
- package/presentation/accessManagement/roles/RolesPresenter.d.ts +3 -1
- package/presentation/accessManagement/roles/RolesPresenter.js +11 -14
- package/presentation/accessManagement/roles/RolesPresenter.js.map +1 -1
- package/presentation/accessManagement/roles/components/RolesDataList.d.ts +10 -0
- package/presentation/accessManagement/roles/components/RolesDataList.js +146 -0
- package/presentation/accessManagement/roles/components/RolesDataList.js.map +1 -0
- package/presentation/accessManagement/roles/components/RolesForm.d.ts +13 -0
- package/presentation/accessManagement/roles/components/RolesForm.js +114 -0
- package/presentation/accessManagement/roles/components/RolesForm.js.map +1 -0
- package/presentation/accessManagement/roles/components/RolesView.d.ts +2 -2
- package/presentation/accessManagement/roles/components/RolesView.js +6 -212
- package/presentation/accessManagement/roles/components/RolesView.js.map +1 -1
- package/presentation/accessManagement/roles/rolesAutocomplete/RolesAutocompletePresenter.d.ts +15 -0
- package/presentation/accessManagement/roles/rolesAutocomplete/RolesAutocompletePresenter.js +42 -0
- package/presentation/accessManagement/roles/rolesAutocomplete/RolesAutocompletePresenter.js.map +1 -0
- package/presentation/accessManagement/roles/rolesAutocomplete/abstractions.d.ts +18 -0
- package/presentation/accessManagement/roles/rolesAutocomplete/abstractions.js +5 -0
- package/presentation/accessManagement/roles/rolesAutocomplete/abstractions.js.map +1 -0
- package/presentation/accessManagement/roles/rolesAutocomplete/feature.d.ts +3 -0
- package/presentation/accessManagement/roles/rolesAutocomplete/feature.js +17 -0
- package/presentation/accessManagement/roles/rolesAutocomplete/feature.js.map +1 -0
- package/presentation/accessManagement/roles/rolesAutocomplete/index.d.ts +3 -0
- package/presentation/accessManagement/roles/rolesAutocomplete/index.js +2 -0
- package/presentation/accessManagement/teams/TeamsPresenter.d.ts +3 -1
- package/presentation/accessManagement/teams/TeamsPresenter.js +11 -14
- package/presentation/accessManagement/teams/TeamsPresenter.js.map +1 -1
- package/presentation/accessManagement/teams/components/TeamsDataList.d.ts +10 -0
- package/presentation/accessManagement/teams/components/TeamsDataList.js +146 -0
- package/presentation/accessManagement/teams/components/TeamsDataList.js.map +1 -0
- package/presentation/accessManagement/teams/components/TeamsForm.d.ts +13 -0
- package/presentation/accessManagement/teams/components/TeamsForm.js +96 -0
- package/presentation/accessManagement/teams/components/TeamsForm.js.map +1 -0
- package/presentation/accessManagement/teams/components/TeamsView.d.ts +2 -2
- package/presentation/accessManagement/teams/components/TeamsView.js +6 -194
- package/presentation/accessManagement/teams/components/TeamsView.js.map +1 -1
- package/presentation/accessManagement/teams/teamsAutocomplete/TeamsAutocompletePresenter.d.ts +15 -0
- package/presentation/accessManagement/teams/teamsAutocomplete/TeamsAutocompletePresenter.js +42 -0
- package/presentation/accessManagement/teams/teamsAutocomplete/TeamsAutocompletePresenter.js.map +1 -0
- package/presentation/accessManagement/teams/teamsAutocomplete/abstractions.d.ts +18 -0
- package/presentation/accessManagement/teams/teamsAutocomplete/abstractions.js +5 -0
- package/presentation/accessManagement/teams/teamsAutocomplete/abstractions.js.map +1 -0
- package/presentation/accessManagement/teams/teamsAutocomplete/feature.d.ts +3 -0
- package/presentation/accessManagement/teams/teamsAutocomplete/feature.js +17 -0
- package/presentation/accessManagement/teams/teamsAutocomplete/feature.js.map +1 -0
- package/presentation/accessManagement/teams/teamsAutocomplete/index.d.ts +3 -0
- package/presentation/accessManagement/teams/teamsAutocomplete/index.js +2 -0
- package/presentation/adminUsers/AdminUsers.d.ts +10 -0
- package/presentation/adminUsers/AdminUsers.js +77 -0
- package/presentation/adminUsers/AdminUsers.js.map +1 -0
- package/presentation/adminUsers/SecurityPermission.d.ts +2 -0
- package/presentation/adminUsers/SecurityPermission.js +15 -0
- package/presentation/adminUsers/SecurityPermission.js.map +1 -0
- package/presentation/adminUsers/UserItem.d.ts +10 -0
- package/presentation/adminUsers/UserItem.js +0 -0
- package/presentation/adminUsers/components/AvatarImage/AvatarImage.d.ts +3 -0
- package/presentation/adminUsers/components/AvatarImage/AvatarImage.js +31 -0
- package/presentation/adminUsers/components/AvatarImage/AvatarImage.js.map +1 -0
- package/presentation/adminUsers/components/AvatarImage/AvatarImagePreview.d.ts +10 -0
- package/presentation/adminUsers/components/AvatarImage/AvatarImagePreview.js +53 -0
- package/presentation/adminUsers/components/AvatarImage/AvatarImagePreview.js.map +1 -0
- package/presentation/adminUsers/components/AvatarImage/AvatarImageTrigger.d.ts +7 -0
- package/presentation/adminUsers/components/AvatarImage/AvatarImageTrigger.js +28 -0
- package/presentation/adminUsers/components/AvatarImage/AvatarImageTrigger.js.map +1 -0
- package/presentation/adminUsers/components/AvatarImage/index.d.ts +1 -0
- package/presentation/adminUsers/components/AvatarImage/index.js +1 -0
- package/presentation/adminUsers/routes.d.ts +10 -0
- package/presentation/adminUsers/routes.js +20 -0
- package/presentation/adminUsers/routes.js.map +1 -0
- package/presentation/adminUsers/userMenu/AccountDetails.d.ts +6 -0
- package/presentation/adminUsers/userMenu/AccountDetails.js +20 -0
- package/presentation/adminUsers/userMenu/AccountDetails.js.map +1 -0
- package/presentation/adminUsers/userMenu/useIsDefaultTenant.d.ts +1 -0
- package/presentation/adminUsers/userMenu/useIsDefaultTenant.js +9 -0
- package/presentation/adminUsers/userMenu/useIsDefaultTenant.js.map +1 -0
- package/presentation/adminUsers/views/Account/Account.d.ts +2 -0
- package/presentation/adminUsers/views/Account/Account.js +137 -0
- package/presentation/adminUsers/views/Account/Account.js.map +1 -0
- package/presentation/adminUsers/views/Account/index.d.ts +1 -0
- package/presentation/adminUsers/views/Account/index.js +1 -0
- package/presentation/adminUsers/views/Users/UsersDataList.d.ts +3 -0
- package/presentation/adminUsers/views/Users/UsersDataList.js +180 -0
- package/presentation/adminUsers/views/Users/UsersDataList.js.map +1 -0
- package/presentation/adminUsers/views/Users/UsersForm.d.ts +5 -0
- package/presentation/adminUsers/views/Users/UsersForm.js +175 -0
- package/presentation/adminUsers/views/Users/UsersForm.js.map +1 -0
- package/presentation/adminUsers/views/Users/UsersView.d.ts +2 -0
- package/presentation/adminUsers/views/Users/UsersView.js +15 -0
- package/presentation/adminUsers/views/Users/UsersView.js.map +1 -0
- package/presentation/adminUsers/views/Users/components/DeleteAction.d.ts +7 -0
- package/presentation/adminUsers/views/Users/components/DeleteAction.js +29 -0
- package/presentation/adminUsers/views/Users/components/DeleteAction.js.map +1 -0
- package/presentation/adminUsers/views/Users/hooks/useUserForm.d.ts +27 -0
- package/presentation/adminUsers/views/Users/hooks/useUserForm.js +101 -0
- package/presentation/adminUsers/views/Users/hooks/useUserForm.js.map +1 -0
- package/presentation/adminUsers/views/Users/search.js +21 -0
- package/presentation/adminUsers/views/Users/search.js.map +1 -0
- package/presentation/adminUsers/views/Users/search.svg +20 -0
- package/presentation/adminUsers/views/utils.d.ts +3 -0
- package/presentation/adminUsers/views/utils.js +12 -0
- package/presentation/adminUsers/views/utils.js.map +1 -0
- package/presentation/assumePermissions/AssumePermissionsPresenter.d.ts +36 -0
- package/presentation/assumePermissions/AssumePermissionsPresenter.js +153 -0
- package/presentation/assumePermissions/AssumePermissionsPresenter.js.map +1 -0
- package/presentation/assumePermissions/abstractions.d.ts +30 -0
- package/presentation/assumePermissions/abstractions.js +5 -0
- package/presentation/assumePermissions/abstractions.js.map +1 -0
- package/presentation/assumePermissions/components/AssumePermissionsButton.d.ts +14 -0
- package/presentation/assumePermissions/components/AssumePermissionsButton.js +42 -0
- package/presentation/assumePermissions/components/AssumePermissionsButton.js.map +1 -0
- package/presentation/assumePermissions/components/AssumedPermissionsBanner.d.ts +11 -0
- package/presentation/assumePermissions/components/AssumedPermissionsBanner.js +25 -0
- package/presentation/assumePermissions/components/AssumedPermissionsBanner.js.map +1 -0
- package/presentation/assumePermissions/components/AssumedPermissionsSelector.d.ts +2 -0
- package/presentation/assumePermissions/components/AssumedPermissionsSelector.js +68 -0
- package/presentation/assumePermissions/components/AssumedPermissionsSelector.js.map +1 -0
- package/presentation/assumePermissions/feature.d.ts +3 -0
- package/presentation/assumePermissions/feature.js +17 -0
- package/presentation/assumePermissions/feature.js.map +1 -0
- package/presentation/assumePermissions/index.d.ts +4 -0
- package/presentation/assumePermissions/index.js +4 -0
- package/presentation/banners/BannersPresenter.d.ts +14 -0
- package/presentation/banners/BannersPresenter.js +60 -0
- package/presentation/banners/BannersPresenter.js.map +1 -0
- package/presentation/banners/abstractions.d.ts +24 -0
- package/presentation/banners/abstractions.js +5 -0
- package/presentation/banners/abstractions.js.map +1 -0
- package/presentation/banners/components/Banner.d.ts +10 -0
- package/presentation/banners/components/Banner.js +32 -0
- package/presentation/banners/components/Banner.js.map +1 -0
- package/presentation/banners/components/BannerBar.d.ts +11 -0
- package/presentation/banners/components/BannerBar.js +51 -0
- package/presentation/banners/components/BannerBar.js.map +1 -0
- package/presentation/banners/feature.d.ts +3 -0
- package/presentation/banners/feature.js +17 -0
- package/presentation/banners/feature.js.map +1 -0
- package/presentation/banners/index.d.ts +6 -0
- package/presentation/banners/index.js +4 -0
- package/presentation/banners/useBanner.d.ts +10 -0
- package/presentation/banners/useBanner.js +15 -0
- package/presentation/banners/useBanner.js.map +1 -0
- package/presentation/commandPalette/CommandPalettePresenter.d.ts +5 -0
- package/presentation/commandPalette/CommandPalettePresenter.js +25 -4
- package/presentation/commandPalette/CommandPalettePresenter.js.map +1 -1
- package/presentation/commandPalette/abstractions.d.ts +17 -1
- package/presentation/commandPalette/abstractions.js.map +1 -1
- package/presentation/commandPalette/commands/AskAiCommand.d.ts +25 -0
- package/presentation/commandPalette/commands/AskAiCommand.js +33 -0
- package/presentation/commandPalette/commands/AskAiCommand.js.map +1 -0
- package/presentation/commandPalette/commands/SendMessageCommand.js +1 -1
- package/presentation/commandPalette/commands/SendMessageCommand.js.map +1 -1
- package/presentation/commandPalette/commands/feature.js +2 -0
- package/presentation/commandPalette/commands/feature.js.map +1 -1
- package/presentation/createReactiveComponent.d.ts +1 -0
- package/presentation/createReactiveComponent.js +1 -0
- package/presentation/debugger/DebuggerPresenter.d.ts +14 -0
- package/presentation/debugger/DebuggerPresenter.js +45 -0
- package/presentation/debugger/DebuggerPresenter.js.map +1 -0
- package/presentation/debugger/abstractions.d.ts +17 -0
- package/presentation/debugger/abstractions.js +5 -0
- package/presentation/debugger/abstractions.js.map +1 -0
- package/presentation/debugger/components/DebuggerIndicator.d.ts +2 -0
- package/presentation/debugger/components/DebuggerIndicator.js +45 -0
- package/presentation/debugger/components/DebuggerIndicator.js.map +1 -0
- package/presentation/debugger/components/DebuggerView.d.ts +4 -0
- package/presentation/debugger/components/DebuggerView.js +44 -0
- package/presentation/debugger/components/DebuggerView.js.map +1 -0
- package/presentation/debugger/downloadJson.d.ts +7 -0
- package/presentation/debugger/downloadJson.js +17 -0
- package/presentation/debugger/downloadJson.js.map +1 -0
- package/presentation/debugger/feature.d.ts +3 -0
- package/presentation/debugger/feature.js +17 -0
- package/presentation/debugger/feature.js.map +1 -0
- package/presentation/debugger/routes.d.ts +4 -0
- package/presentation/debugger/routes.js +10 -0
- package/presentation/debugger/routes.js.map +1 -0
- package/presentation/featureFlags/FeatureFlagsProvider.d.ts +7 -0
- package/presentation/featureFlags/FeatureFlagsProvider.js +22 -0
- package/presentation/featureFlags/FeatureFlagsProvider.js.map +1 -0
- package/presentation/featureFlags/useFeatureFlags.d.ts +2 -0
- package/presentation/featureFlags/useFeatureFlags.js +17 -0
- package/presentation/featureFlags/useFeatureFlags.js.map +1 -0
- package/presentation/iconPicker/customIcons/CustomIconsPresenter.d.ts +16 -0
- package/presentation/iconPicker/customIcons/CustomIconsPresenter.js +40 -0
- package/presentation/iconPicker/customIcons/CustomIconsPresenter.js.map +1 -0
- package/presentation/iconPicker/customIcons/abstractions.d.ts +14 -0
- package/presentation/iconPicker/customIcons/abstractions.js +5 -0
- package/presentation/iconPicker/customIcons/abstractions.js.map +1 -0
- package/presentation/iconPicker/customIcons/feature.d.ts +3 -0
- package/presentation/iconPicker/customIcons/feature.js +17 -0
- package/presentation/iconPicker/customIcons/feature.js.map +1 -0
- package/presentation/iconPicker/customIcons/index.d.ts +3 -0
- package/presentation/iconPicker/customIcons/index.js +2 -0
- package/presentation/installation/components/SystemInstaller/SystemInstaller.d.ts +2 -2
- package/presentation/installation/components/SystemInstaller/steps/AdminUserStep.js +9 -7
- package/presentation/installation/components/SystemInstaller/steps/AdminUserStep.js.map +1 -1
- package/presentation/installation/components/SystemInstaller/steps/FinishSetup/handleStartUsing.js +0 -3
- package/presentation/installation/components/SystemInstaller/steps/FinishSetup/handleStartUsing.js.map +1 -1
- package/presentation/installation/components/SystemInstaller/steps/FinishSetup.js +1 -1
- package/presentation/installation/components/SystemInstaller/steps/FinishSetup.js.map +1 -1
- package/presentation/installation/presenters/SystemInstaller/SystemInstallerPresenter.js +7 -5
- package/presentation/installation/presenters/SystemInstaller/SystemInstallerPresenter.js.map +1 -1
- package/presentation/listPresenter/FolderAwareDataSource.d.ts +5 -0
- package/presentation/listPresenter/FolderAwareDataSource.js +4 -3
- package/presentation/listPresenter/FolderAwareDataSource.js.map +1 -1
- package/presentation/listPresenter/QueryMatcher.d.ts +28 -5
- package/presentation/listPresenter/QueryMatcher.js +74 -4
- package/presentation/listPresenter/QueryMatcher.js.map +1 -1
- package/presentation/listPresenter/QueryMatcher.test.d.ts +1 -0
- package/presentation/listPresenter/QueryMatcher.test.js +345 -0
- package/presentation/listPresenter/QueryMatcher.test.js.map +1 -0
- package/presentation/tenancy/TenancyProvider.js +0 -4
- package/presentation/tenancy/TenancyProvider.js.map +1 -1
- package/presentation/trashBin/TrashBinPresenter.js +3 -1
- package/presentation/trashBin/TrashBinPresenter.js.map +1 -1
- package/presentation/trashBin/TrashBinPresenter.test.d.ts +1 -0
- package/presentation/trashBin/TrashBinPresenter.test.js +91 -0
- package/presentation/trashBin/TrashBinPresenter.test.js.map +1 -0
- package/presentation/trashBin/abstractions.d.ts +1 -1
- package/presentation/trashBin/abstractions.js.map +1 -1
- package/presentation/trashBin/components/BulkActions/DeleteItems.d.ts +2 -2
- package/presentation/trashBin/components/BulkActions/DeleteItems.js +5 -1
- package/presentation/trashBin/components/BulkActions/DeleteItems.js.map +1 -1
- package/presentation/trashBin/components/BulkActions/DeleteItems.test.d.ts +1 -0
- package/presentation/trashBin/components/BulkActions/DeleteItems.test.js +100 -0
- package/presentation/trashBin/components/BulkActions/DeleteItems.test.js.map +1 -0
- package/presentation/trashBin/components/BulkActions/RestoreItems.d.ts +2 -2
- package/presentation/trashBin/components/TrashBinOverlay.d.ts +2 -2
- package/presentation/trashBin/hooks/useDeleteTrashBinItem.js +2 -1
- package/presentation/trashBin/hooks/useDeleteTrashBinItem.js.map +1 -1
- package/presentation/trashBin/hooks/useDeleteTrashBinItem.test.d.ts +1 -0
- package/presentation/trashBin/hooks/useDeleteTrashBinItem.test.js +67 -0
- package/presentation/trashBin/hooks/useDeleteTrashBinItem.test.js.map +1 -0
- package/static/svg/search.43fa797c.svg +20 -0
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker.js +0 -68
- package/base/Base/FieldRenderers/ObjectRenderer/TemplatePicker.js.map +0 -1
- package/base/Base/Menus/WebinyVersion.d.ts +0 -2
- package/base/Base/Menus/WebinyVersion.js +0 -23
- package/base/Base/Menus/WebinyVersion.js.map +0 -1
- package/base/WebinyVersion.d.ts +0 -2
- package/base/WebinyVersion.js +0 -23
- package/base/WebinyVersion.js.map +0 -1
- package/base/plugins/AddGraphQLQuerySelection.d.ts +0 -8
- package/base/plugins/AddGraphQLQuerySelection.js +0 -19
- package/base/plugins/AddGraphQLQuerySelection.js.map +0 -1
- package/base/providers/ApolloProvider.d.ts +0 -13
- package/base/providers/ApolloProvider.js +0 -10
- package/base/providers/ApolloProvider.js.map +0 -1
- package/components/IconPicker/plugins/graphql.d.ts +0 -20
- package/components/IconPicker/plugins/graphql.js +0 -22
- package/components/IconPicker/plugins/graphql.js.map +0 -1
- package/components/RolesMultiAutocomplete/graphql.d.ts +0 -1
- package/components/RolesMultiAutocomplete/graphql.js +0 -24
- package/components/RolesMultiAutocomplete/graphql.js.map +0 -1
- package/components/TeamAutocomplete/graphql.d.ts +0 -1
- package/components/TeamAutocomplete/graphql.js +0 -19
- package/components/TeamAutocomplete/graphql.js.map +0 -1
- package/components/TeamsMultiAutocomplete/graphql.d.ts +0 -1
- package/components/TeamsMultiAutocomplete/graphql.js +0 -24
- package/components/TeamsMultiAutocomplete/graphql.js.map +0 -1
- package/components/Wcp.d.ts +0 -19
- package/components/Wcp.js +0 -37
- package/components/Wcp.js.map +0 -1
- package/features/apolloClient/abstraction.d.ts +0 -5
- package/features/apolloClient/abstraction.js +0 -5
- package/features/apolloClient/abstraction.js.map +0 -1
- package/features/apolloClient/feature.d.ts +0 -2
- package/features/apolloClient/feature.js +0 -31
- package/features/apolloClient/feature.js.map +0 -1
- package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.d.ts +0 -8
- package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.js +0 -17
- package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/createPasswordValidator.js.map +0 -1
- package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/usePasswordValidator.d.ts +0 -1
- package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/usePasswordValidator.js +0 -16
- package/presentation/installation/components/SystemInstaller/steps/AdminUserStep/usePasswordValidator.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features/formModel/fieldTypes/DateTimeFieldType.js","sources":["../../../../src/features/formModel/fieldTypes/DateTimeFieldType.ts"],"sourcesContent":["import { FieldType, type IFieldTypeFactory } from \"../abstractions.js\";\nimport { FieldBuilder } from \"../FieldBuilder.js\";\n\ntype DateTimeSubtype =\n | \"date\"\n | \"time\"\n | \"dateTimeWithTimezone\"\n | \"dateTimeWithoutTimezone\"\n | \"month\"\n | \"week\"\n | \"year\"\n | \"dateRange\"\n | \"multipleDates\"\n | \"multipleMonths\"\n | \"multipleYears\";\n\nexport class DateTimeFieldBuilder extends FieldBuilder<\"datetime\"> {\n private _subtype: DateTimeSubtype = \"date\";\n\n constructor() {\n super(\"datetime\");\n this._config.renderer = \"dateTimeInput\";\n this._config.rendererSettings = { type: \"date\" };\n }\n\n override list(): this {\n super.list();\n this._config.renderer = \"dateTimeInputs\";\n return this;\n }\n\n /**\n * Calendar date only.\n * @example datetime().dateOnly()\n *\n * Value format: `\"2026-05-01\"` (YYYY-MM-DD)\n */\n dateOnly(): this {\n this._subtype = \"date\";\n this._config.renderer = \"dateTimeInput\";\n this._config.rendererSettings = { ...this._config.rendererSettings, type: \"date\" };\n return this;\n }\n\n /**\n * Time only, no date component.\n * @example datetime().timeOnly()\n *\n * Value format: `\"14:30:00\"` (HH:mm:ss)\n */\n timeOnly(): this {\n this._subtype = \"time\";\n this._config.renderer = \"dateTimeInput\";\n this._config.rendererSettings = { ...this._config.rendererSettings, type: \"time\" };\n return this;\n }\n\n /**\n * Date and time with explicit timezone offset.\n * @example datetime().withTimezone()\n *\n * Value format: `\"2026-05-01T14:30:00+02:00\"` (ISO 8601 with offset)\n */\n withTimezone(): this {\n this._subtype = \"dateTimeWithTimezone\";\n this._config.renderer = \"dateTimeInput\";\n this._config.rendererSettings = {\n ...this._config.rendererSettings,\n type: \"dateTimeWithTimezone\"\n };\n return this;\n }\n\n /**\n * Date and time in UTC, no timezone offset.\n * @example datetime().withoutTimezone()\n *\n * Value format: `\"2026-05-01T14:30:00.000Z\"` (ISO 8601 UTC)\n */\n withoutTimezone(): this {\n this._subtype = \"dateTimeWithoutTimezone\";\n this._config.renderer = \"dateTimeInput\";\n this._config.rendererSettings = {\n ...this._config.rendererSettings,\n type: \"dateTimeWithoutTimezone\"\n };\n return this;\n }\n\n /**\n * Month and year picker.\n * @example datetime().monthOnly()\n *\n * Value format: `\"2026-05\"` (YYYY-MM)\n */\n monthOnly(): this {\n this._subtype = \"month\";\n this._config.renderer = \"dateTimeInput\";\n this._config.rendererSettings = { ...this._config.rendererSettings, type: \"month\" };\n return this;\n }\n\n /**\n * ISO week picker. Selecting any day highlights and selects the full week.\n * @example\n * datetime().weekOnly()\n * datetime().weekOnly({ startsOn: 1 }) // weeks start on Monday\n *\n * Value format: `\"2026-W18\"` (YYYY-Www)\n */\n weekOnly(options?: { startsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 }): this {\n this._subtype = \"week\";\n this._config.renderer = \"dateTimeInput\";\n this._config.rendererSettings = {\n ...this._config.rendererSettings,\n type: \"week\",\n ...(options?.startsOn !== undefined && { weekStartsOn: options.startsOn })\n };\n return this;\n }\n\n /**\n * Year picker with a scrollable grid.\n * @example\n * datetime().yearOnly()\n * datetime().yearOnly({ range: [2010, 2030] })\n *\n * Value format: `2026` (number)\n */\n yearOnly(options?: { range?: [number, number] }): this {\n this._subtype = \"year\";\n this._config.renderer = \"dateTimeInput\";\n this._config.rendererSettings = {\n ...this._config.rendererSettings,\n type: \"year\",\n ...(options?.range && { yearRange: options.range })\n };\n return this;\n }\n\n /**\n * Date range picker with a two-month calendar.\n * @example datetime().dateRange()\n *\n * Value format: `{ from: \"2026-05-01\", to: \"2026-05-15\" }`\n */\n dateRange(): this {\n this._subtype = \"dateRange\";\n this._config.renderer = \"dateTimeInput\";\n this._config.rendererSettings = { ...this._config.rendererSettings, type: \"dateRange\" };\n return this;\n }\n\n /**\n * Select multiple individual dates.\n * @example datetime().multipleDates()\n *\n * Value format: `[\"2026-05-01\", \"2026-05-03\"]`\n */\n multipleDates(): this {\n this._subtype = \"multipleDates\";\n this._config.renderer = \"dateTimeInput\";\n this._config.rendererSettings = {\n ...this._config.rendererSettings,\n type: \"multipleDates\"\n };\n return this;\n }\n\n /**\n * Select multiple months.\n * @example datetime().multipleMonths()\n *\n * Value format: `[\"2026-01\", \"2026-03\"]`\n */\n multipleMonths(): this {\n this._subtype = \"multipleMonths\";\n this._config.renderer = \"dateTimeInput\";\n this._config.rendererSettings = {\n ...this._config.rendererSettings,\n type: \"multipleMonths\"\n };\n return this;\n }\n\n /**\n * Select multiple years.\n * @example\n * datetime().multipleYears()\n * datetime().multipleYears({ range: [2020, 2035] })\n *\n * Value format: `[2024, 2025, 2026]`\n */\n multipleYears(options?: { range?: [number, number] }): this {\n this._subtype = \"multipleYears\";\n this._config.renderer = \"dateTimeInput\";\n this._config.rendererSettings = {\n ...this._config.rendererSettings,\n type: \"multipleYears\",\n ...(options?.range && { yearRange: options.range })\n };\n return this;\n }\n\n /**\n * Add quick-select preset buttons to the picker. Available on all variants.\n * Each preset's `value` function is called at click time, and the variant\n * handles formatting the Date into its value type.\n * @example\n * datetime().dateOnly().presets([\n * { label: \"Today\", value: () => new Date() },\n * { label: \"In a week\", value: () => addDays(new Date(), 7) }\n * ])\n */\n presets(presets: Array<{ label: string; value: () => Date }>): this {\n this._config.rendererSettings = { ...this._config.rendererSettings, presets };\n return this;\n }\n\n /**\n * Customize the display format shown in the picker trigger.\n * Uses date-fns format tokens.\n * @example\n * datetime().dateOnly().displayFormat(\"MM/dd/yyyy\") // \"05/01/2026\"\n * datetime().dateOnly().displayFormat(\"dd MMM yyyy\") // \"01 May 2026\"\n * datetime().monthOnly().displayFormat(\"MMMM yyyy\") // \"May 2026\"\n */\n displayFormat(format: string): this {\n this._config.rendererSettings = { ...this._config.rendererSettings, displayFormat: format };\n return this;\n }\n\n override normalizeValue(value: unknown): unknown {\n if (value == null || value === \"\") {\n return value;\n }\n switch (this._subtype) {\n case \"date\":\n return normalizeDateOnly(String(value));\n case \"time\":\n return normalizeTime(String(value));\n case \"dateTimeWithoutTimezone\":\n return normalizeDateTimeWithoutTimezone(String(value));\n case \"dateTimeWithTimezone\":\n return normalizeDateTimeWithTimezone(String(value));\n case \"month\":\n return normalizeMonth(String(value));\n case \"week\":\n return normalizeWeek(String(value));\n case \"year\":\n return normalizeYear(value);\n case \"dateRange\":\n case \"multipleDates\":\n case \"multipleMonths\":\n return value;\n case \"multipleYears\":\n return normalizeMultipleYears(value);\n default:\n return value;\n }\n }\n}\n\nfunction normalizeDateOnly(value: string): string {\n try {\n return new Date(value).toISOString().slice(0, 10);\n } catch {\n return value;\n }\n}\n\nfunction normalizeTime(value: string): string {\n if (!value.includes(\":\")) {\n return value;\n }\n const parts = value.split(\":\");\n if (parts.length === 3) {\n return value;\n }\n if (parts.length === 2) {\n return `${value}:00`;\n }\n return value;\n}\n\nfunction normalizeDateTimeWithoutTimezone(value: string): string {\n if (!value.includes(\" \") && !value.includes(\"T\")) {\n return value;\n }\n try {\n const normalized = value.includes(\" \") ? value.replace(\" \", \"T\") : value;\n const withZ =\n normalized.endsWith(\"Z\") ||\n normalized.includes(\"+\") ||\n /\\d-\\d{2}:\\d{2}$/.test(normalized)\n ? normalized\n : `${normalized}.000Z`;\n return new Date(withZ).toISOString();\n } catch {\n return value;\n }\n}\n\nfunction normalizeDateTimeWithTimezone(value: string): string {\n if (!value.includes(\"T\")) {\n return value;\n }\n const [initialDate, rest] = value.split(\"T\");\n if (!rest) {\n return value;\n }\n\n let date: string;\n try {\n date = new Date(initialDate).toISOString().slice(0, 10);\n } catch {\n return value;\n }\n\n const sign = rest.includes(\"+\") ? \"+\" : \"-\";\n const [timePart, tz] = rest.split(sign);\n const time = normalizeTime(timePart);\n\n return `${date}T${time}${sign}${tz}`;\n}\n\nfunction normalizeMonth(value: string): string {\n if (/^\\d{4}-\\d{2}$/.test(value)) {\n return value;\n }\n try {\n const d = new Date(value);\n const y = d.getFullYear();\n const m = String(d.getMonth() + 1).padStart(2, \"0\");\n return `${y}-${m}`;\n } catch {\n return value;\n }\n}\n\nfunction normalizeWeek(value: string): string {\n if (/^\\d{4}-W\\d{2}$/.test(value)) {\n return value;\n }\n return value;\n}\n\nfunction normalizeYear(value: unknown): number | unknown {\n const num = Number(value);\n if (!Number.isNaN(num) && Number.isFinite(num)) {\n return Math.round(num);\n }\n return value;\n}\n\nfunction normalizeMultipleYears(value: unknown): unknown {\n if (!Array.isArray(value)) {\n return value;\n }\n return value.map(v => {\n const num = Number(v);\n return !Number.isNaN(num) && Number.isFinite(num) ? Math.round(num) : v;\n });\n}\n\nclass DateTimeFieldTypeFactory implements IFieldTypeFactory {\n readonly type = \"datetime\";\n create(_registry: any) {\n return new DateTimeFieldBuilder();\n }\n}\n\nexport const DateTimeFieldType = FieldType.createImplementation({\n implementation: DateTimeFieldTypeFactory,\n dependencies: []\n});\n\ndeclare module \"../abstractions.js\" {\n interface IFieldBuilderRegistry {\n /**\n * Defines a field that stores date and/or time values.\n *\n * Variant methods (pick one):\n * - `dateOnly()` — \"2026-05-01\"\n * - `timeOnly()` — \"14:30:00\"\n * - `withoutTimezone()` — \"2026-05-01T14:30:00.000Z\"\n * - `withTimezone()` — \"2026-05-01T14:30:00+02:00\"\n * - `monthOnly()` — \"2026-05\"\n * - `weekOnly()` — \"2026-W18\"\n * - `yearOnly()` — 2026\n * - `dateRange()` — { from: \"2026-05-01\", to: \"2026-05-15\" }\n * - `multipleDates()` — [\"2026-05-01\", \"2026-05-03\"]\n * - `multipleMonths()` — [\"2026-01\", \"2026-03\"]\n * - `multipleYears()` — [2024, 2025, 2026]\n *\n * Configuration methods (chain after variant):\n * - `.presets([...])` — quick-select buttons (all variants)\n * - `.displayFormat(\"MM/dd/yyyy\")` — customize trigger display\n *\n * Variant-specific options (passed to variant method):\n * - `yearOnly({ range: [2020, 2030] })` — year range\n * - `multipleYears({ range: [2020, 2035] })` — year range\n * - `weekOnly({ startsOn: 1 })` — first day of week (0=Sun, 1=Mon)\n *\n * @example\n * datetime() // full UTC datetime (default)\n * datetime().dateOnly() // birthdays, due dates, holidays\n * datetime().timeOnly() // opening hours, daily reminders\n * datetime().withTimezone() // events tied to a specific locale\n * datetime().withoutTimezone() // timestamps, logs, sortable moments\n * datetime().monthOnly() // billing cycles, report periods\n * datetime().weekOnly() // sprint planning, weekly schedules\n * datetime().yearOnly({ range: [2010, 2030] }) // fiscal years\n * datetime().dateRange() // vacation requests, booking windows\n * datetime().multipleDates() // blackout dates, recurring events\n * datetime().multipleMonths() // seasonal availability\n * datetime().multipleYears({ range: [2020, 2035] }) // multi-year budgets\n * datetime().dateOnly().presets([...]).displayFormat(\"dd/MM/yyyy\")\n */\n datetime(): DateTimeFieldBuilder;\n }\n}\n"],"names":["DateTimeFieldBuilder","FieldBuilder","options","undefined","presets","format","value","normalizeDateOnly","String","normalizeTime","normalizeDateTimeWithoutTimezone","normalizeDateTimeWithTimezone","normalizeMonth","normalizeWeek","normalizeYear","normalizeMultipleYears","Date","parts","normalized","withZ","initialDate","rest","date","sign","timePart","tz","time","d","y","m","num","Number","Math","Array","v","DateTimeFieldTypeFactory","_registry","DateTimeFieldType","FieldType"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"features/formModel/fieldTypes/DateTimeFieldType.js","sources":["../../../../src/features/formModel/fieldTypes/DateTimeFieldType.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { FieldType, type IFieldConfig, type IFieldTypeFactory } from \"../abstractions.js\";\nimport { FieldBuilder } from \"../FieldBuilder.js\";\nimport { DateFormatter } from \"~/features/dateFormatter/abstractions.js\";\nimport {\n createDateLimitsSchema,\n type DateBound,\n type DateLimitFormatter,\n type IDateLimit,\n type IDateLimits\n} from \"./dateLimits.js\";\n\ntype DateTimeSubtype =\n | \"date\"\n | \"time\"\n | \"dateTimeWithTimezone\"\n | \"dateTimeWithoutTimezone\"\n | \"month\"\n | \"week\"\n | \"year\"\n | \"dateRange\"\n | \"multipleDates\"\n | \"multipleMonths\"\n | \"multipleYears\";\n\nexport class DateTimeFieldBuilder extends FieldBuilder<\"datetime\"> {\n private _subtype: DateTimeSubtype = \"date\";\n private _dateGte: IDateLimit[] = [];\n private _dateLte: IDateLimit[] = [];\n\n /**\n * @param dateFormatter shows a limit in its message's `{date}` in the admin's date format;\n * without it, the limit shows as it is stored.\n */\n constructor(private readonly dateFormatter?: DateFormatter.Interface) {\n super(\"datetime\");\n this._config.renderer = \"dateTimeInput\";\n this._config.rendererSettings = { type: \"date\" };\n }\n\n override list(): this {\n super.list();\n this._config.renderer = \"dateTimeInputs\";\n return this;\n }\n\n /** Subtype methods reset the renderer; a list field keeps the list renderer. */\n private _defaultRenderer(): \"dateTimeInput\" | \"dateTimeInputs\" {\n return this._config.isList ? \"dateTimeInputs\" : \"dateTimeInput\";\n }\n\n /**\n * Calendar date only.\n * @example\n * datetime().dateOnly()\n * // day, then month, then year; suits dates far in the past, like a date of birth.\n * // The picker offers only the dates the `dateGte`/`dateLte` limits allow.\n * datetime()\n * .dateOnly()\n * .dateGte({ expression: \"today-100y\" })\n * .dateLte({ expression: \"today-18y\" }, \"You must be 18 or older.\")\n * .renderer(\"birthdayInput\")\n *\n * Value format: `\"2026-05-01\"` (YYYY-MM-DD)\n */\n dateOnly(): this {\n this._subtype = \"date\";\n this._config.renderer =\n this._isBirthdayPicker() && !this._config.isList\n ? \"birthdayInput\"\n : this._defaultRenderer();\n this._config.rendererSettings = { ...this._config.rendererSettings, type: \"date\" };\n return this;\n }\n\n /**\n * The CMS form sets a field's renderer before its subtype, so a birthday picker set\n * earlier survives `dateOnly()`, since it renders the same value. Every other subtype\n * resets it.\n */\n private _isBirthdayPicker(): boolean {\n return this._config.renderer === \"birthdayInput\";\n }\n\n /**\n * Time only, no date component.\n * @example datetime().timeOnly()\n *\n * Value format: `\"14:30:00\"` (HH:mm:ss)\n */\n timeOnly(): this {\n this._subtype = \"time\";\n this._config.renderer = this._defaultRenderer();\n this._config.rendererSettings = { ...this._config.rendererSettings, type: \"time\" };\n return this;\n }\n\n /**\n * Date and time with explicit timezone offset.\n * @example datetime().withTimezone()\n *\n * Value format: `\"2026-05-01T14:30:00+02:00\"` (ISO 8601 with offset)\n */\n withTimezone(): this {\n this._subtype = \"dateTimeWithTimezone\";\n this._config.renderer = this._defaultRenderer();\n this._config.rendererSettings = {\n ...this._config.rendererSettings,\n type: \"dateTimeWithTimezone\"\n };\n return this;\n }\n\n /**\n * Date and time in UTC, no timezone offset.\n * @example datetime().withoutTimezone()\n *\n * Value format: `\"2026-05-01T14:30:00.000Z\"` (ISO 8601 UTC)\n */\n withoutTimezone(): this {\n this._subtype = \"dateTimeWithoutTimezone\";\n this._config.renderer = this._defaultRenderer();\n this._config.rendererSettings = {\n ...this._config.rendererSettings,\n type: \"dateTimeWithoutTimezone\"\n };\n return this;\n }\n\n /**\n * Month and year picker.\n * @example datetime().monthOnly()\n *\n * Value format: `\"2026-05\"` (YYYY-MM)\n */\n monthOnly(): this {\n this._subtype = \"month\";\n this._config.renderer = this._defaultRenderer();\n this._config.rendererSettings = { ...this._config.rendererSettings, type: \"month\" };\n return this;\n }\n\n /**\n * ISO week picker. Selecting any day highlights and selects the full week.\n * @example\n * datetime().weekOnly()\n * datetime().weekOnly({ startsOn: 1 }) // weeks start on Monday\n *\n * Value format: `\"2026-W18\"` (YYYY-Www)\n */\n weekOnly(options?: { startsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 }): this {\n this._subtype = \"week\";\n this._config.renderer = this._defaultRenderer();\n this._config.rendererSettings = {\n ...this._config.rendererSettings,\n type: \"week\",\n ...(options?.startsOn !== undefined && { weekStartsOn: options.startsOn })\n };\n return this;\n }\n\n /**\n * Year picker with a scrollable grid.\n * @example\n * datetime().yearOnly()\n * datetime().yearOnly({ range: [2010, 2030] })\n *\n * Value format: `2026` (number)\n */\n yearOnly(options?: { range?: [number, number] }): this {\n this._subtype = \"year\";\n this._config.renderer = this._defaultRenderer();\n this._config.rendererSettings = {\n ...this._config.rendererSettings,\n type: \"year\",\n ...(options?.range && { yearRange: options.range })\n };\n return this;\n }\n\n /**\n * Date range picker with a two-month calendar.\n * @example datetime().dateRange()\n *\n * Value format: `{ from: \"2026-05-01\", to: \"2026-05-15\" }`\n */\n dateRange(): this {\n this._subtype = \"dateRange\";\n this._config.renderer = this._defaultRenderer();\n this._config.rendererSettings = { ...this._config.rendererSettings, type: \"dateRange\" };\n return this;\n }\n\n /**\n * Select multiple individual dates.\n * @example datetime().multipleDates()\n *\n * Value format: `[\"2026-05-01\", \"2026-05-03\"]`\n */\n multipleDates(): this {\n this._subtype = \"multipleDates\";\n this._config.renderer = this._defaultRenderer();\n this._config.rendererSettings = {\n ...this._config.rendererSettings,\n type: \"multipleDates\"\n };\n return this;\n }\n\n /**\n * Select multiple months.\n * @example datetime().multipleMonths()\n *\n * Value format: `[\"2026-01\", \"2026-03\"]`\n */\n multipleMonths(): this {\n this._subtype = \"multipleMonths\";\n this._config.renderer = this._defaultRenderer();\n this._config.rendererSettings = {\n ...this._config.rendererSettings,\n type: \"multipleMonths\"\n };\n return this;\n }\n\n /**\n * Select multiple years.\n * @example\n * datetime().multipleYears()\n * datetime().multipleYears({ range: [2020, 2035] })\n *\n * Value format: `[2024, 2025, 2026]`\n */\n multipleYears(options?: { range?: [number, number] }): this {\n this._subtype = \"multipleYears\";\n this._config.renderer = this._defaultRenderer();\n this._config.rendererSettings = {\n ...this._config.rendererSettings,\n type: \"multipleYears\",\n ...(options?.range && { yearRange: options.range })\n };\n return this;\n }\n\n /**\n * Add quick-select preset buttons to the picker. Available on all variants.\n * Each preset's `value` function is called at click time, and the variant\n * handles formatting the Date into its value type.\n * @example\n * datetime().dateOnly().presets([\n * { label: \"Today\", value: () => new Date() },\n * { label: \"In a week\", value: () => addDays(new Date(), 7) }\n * ])\n */\n presets(presets: Array<{ label: string; value: () => Date }>): this {\n this._config.rendererSettings = { ...this._config.rendererSettings, presets };\n return this;\n }\n\n /**\n * The value must be on or after the given one: a fixed value, or, on a date-only field, an\n * expression worked out from the editor's local date every time the value is checked.\n * Expressions: `today`, or `today` plus or minus a number of days (`d`), months (`m`) or\n * years (`y`). The birthday picker offers only the dates the limits allow.\n * @example\n * datetime().dateOnly().dateGte(\"1900-01-01\")\n * datetime().dateOnly().dateGte({ expression: \"today-100y\" }) // not older than 100 years\n * datetime().dateOnly().dateGte({ expression: \"today+1d\" }, \"Pick a date in the future.\")\n */\n dateGte(bound: DateBound, message?: string): this {\n this._dateGte.push({ bound, message });\n return this;\n }\n\n /**\n * The value must be on or before the given one: a fixed value, or, on a date-only field, an\n * expression worked out from the editor's local date every time the value is checked.\n * In `message`, `{date}` is the limit in the admin's date format; the default message is\n * \"Must be on or before {date}.\" (`dateGte`: \"Must be on or after {date}.\").\n * @example\n * datetime().dateOnly().dateLte(\"2026-12-31\")\n * datetime()\n * .dateOnly()\n * .dateLte({ expression: \"today-18y\" }, \"You must be 18 or older.\")\n * .renderer(\"birthdayInput\")\n */\n dateLte(bound: DateBound, message?: string): this {\n this._dateLte.push({ bound, message });\n return this;\n }\n\n /**\n * The limits are applied here, so a `renderer()` or `schema()` call after `dateGte()` or\n * `dateLte()` doesn't drop them: the check runs after the field's own schema, and the\n * renderer finds them in `rendererSettings.dateLimits`.\n */\n override build(name: string): IFieldConfig {\n const config = super.build(name);\n if (this._dateGte.length === 0 && this._dateLte.length === 0) {\n return config;\n }\n const dateLimits: IDateLimits = {\n gte: this._dateGte.map(limit => limit.bound),\n lte: this._dateLte.map(limit => limit.bound)\n };\n const limitsSchema = createDateLimitsSchema(\n this._dateGte,\n this._dateLte,\n this._formatDateLimit()\n );\n return {\n ...config,\n rendererSettings: { ...config.rendererSettings, dateLimits },\n schema: config.schema ? z.intersection(config.schema, limitsSchema) : limitsSchema\n };\n }\n\n /** A limit in the admin's date format: the date alone on a date-only field. */\n private _formatDateLimit(): DateLimitFormatter | undefined {\n const formatter = this.dateFormatter;\n if (!formatter) {\n return undefined;\n }\n switch (this._subtype) {\n case \"date\":\n // A `YYYY-MM-DD` limit is midnight UTC, so it's shown in UTC to keep its day.\n return date =>\n formatter.format(date, {\n hour: undefined,\n minute: undefined,\n timeZone: \"UTC\"\n });\n case \"dateTimeWithTimezone\":\n case \"dateTimeWithoutTimezone\":\n return date => formatter.format(date);\n default:\n return undefined;\n }\n }\n\n /**\n * Customize the display format shown in the picker trigger.\n * Uses date-fns format tokens.\n * @example\n * datetime().dateOnly().displayFormat(\"MM/dd/yyyy\") // \"05/01/2026\"\n * datetime().dateOnly().displayFormat(\"dd MMM yyyy\") // \"01 May 2026\"\n * datetime().monthOnly().displayFormat(\"MMMM yyyy\") // \"May 2026\"\n */\n displayFormat(format: string): this {\n this._config.rendererSettings = { ...this._config.rendererSettings, displayFormat: format };\n return this;\n }\n\n override normalizeValue(value: unknown): unknown {\n if (value == null || value === \"\") {\n return value;\n }\n switch (this._subtype) {\n case \"date\":\n return normalizeDateOnly(String(value));\n case \"time\":\n return normalizeTime(String(value));\n case \"dateTimeWithoutTimezone\":\n return normalizeDateTimeWithoutTimezone(String(value));\n case \"dateTimeWithTimezone\":\n return normalizeDateTimeWithTimezone(String(value));\n case \"month\":\n return normalizeMonth(String(value));\n case \"week\":\n return normalizeWeek(String(value));\n case \"year\":\n return normalizeYear(value);\n case \"dateRange\":\n case \"multipleDates\":\n case \"multipleMonths\":\n return value;\n case \"multipleYears\":\n return normalizeMultipleYears(value);\n default:\n return value;\n }\n }\n}\n\nfunction normalizeDateOnly(value: string): string {\n try {\n return new Date(value).toISOString().slice(0, 10);\n } catch {\n return value;\n }\n}\n\nfunction normalizeTime(value: string): string {\n if (!value.includes(\":\")) {\n return value;\n }\n const parts = value.split(\":\");\n if (parts.length === 3) {\n return value;\n }\n if (parts.length === 2) {\n return `${value}:00`;\n }\n return value;\n}\n\nfunction normalizeDateTimeWithoutTimezone(value: string): string {\n if (!value.includes(\" \") && !value.includes(\"T\")) {\n return value;\n }\n try {\n const normalized = value.includes(\" \") ? value.replace(\" \", \"T\") : value;\n const withZ =\n normalized.endsWith(\"Z\") ||\n normalized.includes(\"+\") ||\n /\\d-\\d{2}:\\d{2}$/.test(normalized)\n ? normalized\n : `${normalized}.000Z`;\n return new Date(withZ).toISOString();\n } catch {\n return value;\n }\n}\n\nfunction normalizeDateTimeWithTimezone(value: string): string {\n if (!value.includes(\"T\")) {\n return value;\n }\n const [initialDate, rest] = value.split(\"T\");\n if (!rest) {\n return value;\n }\n\n const match = rest.match(/^(.+?)(Z|[+-]\\d{2}:\\d{2})$/);\n if (!match) {\n return value;\n }\n const [, timePart, zone] = match;\n\n let date: string;\n try {\n date = new Date(initialDate).toISOString().slice(0, 10);\n } catch {\n return value;\n }\n\n // A UTC value is valid; express it with the explicit offset the API expects.\n const tz = zone === \"Z\" ? \"+00:00\" : zone;\n\n return `${date}T${normalizeTime(timePart)}${tz}`;\n}\n\nfunction normalizeMonth(value: string): string {\n if (/^\\d{4}-\\d{2}$/.test(value)) {\n return value;\n }\n try {\n const d = new Date(value);\n const y = d.getFullYear();\n const m = String(d.getMonth() + 1).padStart(2, \"0\");\n return `${y}-${m}`;\n } catch {\n return value;\n }\n}\n\nfunction normalizeWeek(value: string): string {\n if (/^\\d{4}-W\\d{2}$/.test(value)) {\n return value;\n }\n return value;\n}\n\nfunction normalizeYear(value: unknown): number | unknown {\n const num = Number(value);\n if (!Number.isNaN(num) && Number.isFinite(num)) {\n return Math.round(num);\n }\n return value;\n}\n\nfunction normalizeMultipleYears(value: unknown): unknown {\n if (!Array.isArray(value)) {\n return value;\n }\n return value.map(v => {\n const num = Number(v);\n return !Number.isNaN(num) && Number.isFinite(num) ? Math.round(num) : v;\n });\n}\n\nclass DateTimeFieldTypeFactory implements IFieldTypeFactory {\n readonly type = \"datetime\";\n\n constructor(private readonly dateFormatter?: DateFormatter.Interface) {}\n\n create(_registry: any) {\n return new DateTimeFieldBuilder(this.dateFormatter);\n }\n}\n\nexport const DateTimeFieldType = FieldType.createImplementation({\n implementation: DateTimeFieldTypeFactory,\n dependencies: [[DateFormatter, { optional: true }]]\n});\n\ndeclare module \"../abstractions.js\" {\n interface IFieldBuilderRegistry {\n /**\n * Defines a field that stores date and/or time values.\n *\n * Variant methods (pick one):\n * - `dateOnly()` — \"2026-05-01\"\n * - `timeOnly()` — \"14:30:00\"\n * - `withoutTimezone()` — \"2026-05-01T14:30:00.000Z\"\n * - `withTimezone()` — \"2026-05-01T14:30:00+02:00\"\n * - `monthOnly()` — \"2026-05\"\n * - `weekOnly()` — \"2026-W18\"\n * - `yearOnly()` — 2026\n * - `dateRange()` — { from: \"2026-05-01\", to: \"2026-05-15\" }\n * - `multipleDates()` — [\"2026-05-01\", \"2026-05-03\"]\n * - `multipleMonths()` — [\"2026-01\", \"2026-03\"]\n * - `multipleYears()` — [2024, 2025, 2026]\n *\n * Configuration methods (chain after variant):\n * - `.presets([...])` — quick-select buttons (all variants)\n * - `.displayFormat(\"MM/dd/yyyy\")` — customize trigger display\n * - `.dateGte(bound)` / `.dateLte(bound)` — limits: a fixed value, or\n * `{ expression: \"today-18y\" }` on a date-only field\n *\n * Variant-specific options (passed to variant method):\n * - `yearOnly({ range: [2020, 2030] })` — year range\n * - `multipleYears({ range: [2020, 2035] })` — year range\n * - `weekOnly({ startsOn: 1 })` — first day of week (0=Sun, 1=Mon)\n *\n * @example\n * datetime() // full UTC datetime (default)\n * datetime().dateOnly() // due dates, holidays\n * datetime().dateOnly().renderer(\"birthdayInput\") // dates of birth\n * datetime().dateOnly().dateLte({ expression: \"today-18y\" }) // 18 or older\n * datetime().timeOnly() // opening hours, daily reminders\n * datetime().withTimezone() // events tied to a specific locale\n * datetime().withoutTimezone() // timestamps, logs, sortable moments\n * datetime().monthOnly() // billing cycles, report periods\n * datetime().weekOnly() // sprint planning, weekly schedules\n * datetime().yearOnly({ range: [2010, 2030] }) // fiscal years\n * datetime().dateRange() // vacation requests, booking windows\n * datetime().multipleDates() // blackout dates, recurring events\n * datetime().multipleMonths() // seasonal availability\n * datetime().multipleYears({ range: [2020, 2035] }) // multi-year budgets\n * datetime().dateOnly().presets([...]).displayFormat(\"dd/MM/yyyy\")\n */\n datetime(): DateTimeFieldBuilder;\n }\n}\n"],"names":["DateTimeFieldBuilder","FieldBuilder","dateFormatter","options","undefined","presets","bound","message","name","config","dateLimits","limit","limitsSchema","createDateLimitsSchema","z","formatter","date","format","value","normalizeDateOnly","String","normalizeTime","normalizeDateTimeWithoutTimezone","normalizeDateTimeWithTimezone","normalizeMonth","normalizeWeek","normalizeYear","normalizeMultipleYears","Date","parts","normalized","withZ","initialDate","rest","match","timePart","zone","tz","d","y","m","num","Number","Math","Array","v","DateTimeFieldTypeFactory","_registry","DateTimeFieldType","FieldType","DateFormatter"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { z } from "zod";
|
|
2
|
-
import { type IFieldTypeFactory, type IFieldBuilder, type IFieldBuilderRegistry, type IObjectFieldBuilder, type IObjectFieldConfig, type ITemplateBuilder, type ITemplateConfig } from "../abstractions.js";
|
|
2
|
+
import { type IFieldTypeFactory, type IFieldBuilder, type IFieldBuilderRegistry, type ILayoutBuilder, type ILayoutNodeBuilder, type IObjectFieldBuilder, type IObjectFieldConfig, type ITemplateBuilder, type ITemplateConfig } from "../abstractions.js";
|
|
3
3
|
import { FieldBuilder } from "../FieldBuilder.js";
|
|
4
4
|
interface TemplateBuilderInternal extends ITemplateBuilder {
|
|
5
5
|
_build(id: string, registry: IFieldBuilderRegistry): ITemplateConfig;
|
|
@@ -11,12 +11,14 @@ export declare class ObjectFieldBuilder extends FieldBuilder<"object"> implement
|
|
|
11
11
|
private _listSchema?;
|
|
12
12
|
private _templates?;
|
|
13
13
|
private _templateIds;
|
|
14
|
+
private _layout?;
|
|
14
15
|
private _registry;
|
|
15
16
|
constructor(registry: IFieldBuilderRegistry);
|
|
16
17
|
fields(fn: (registry: IFieldBuilderRegistry) => Record<string, IFieldBuilder>): this;
|
|
17
18
|
list(): this;
|
|
18
19
|
listSchema(schema: z.ZodTypeAny): this;
|
|
19
20
|
template(id: string, configure: (t: ITemplateBuilder) => void): this;
|
|
21
|
+
layout(factory: (layout: ILayoutBuilder) => ILayoutNodeBuilder[]): this;
|
|
20
22
|
build(name: string): IObjectFieldConfig;
|
|
21
23
|
}
|
|
22
24
|
declare class ObjectFieldTypeFactory implements IFieldTypeFactory {
|
|
@@ -1,15 +1,25 @@
|
|
|
1
1
|
import { FieldType } from "../abstractions.js";
|
|
2
2
|
import { FieldBuilder } from "../FieldBuilder.js";
|
|
3
|
+
import { LayoutBuilderFactory } from "../LayoutBuilderFactory.js";
|
|
4
|
+
function resolveInnerLayout(factory) {
|
|
5
|
+
return LayoutBuilderFactory.resolveObjectInner(factory);
|
|
6
|
+
}
|
|
3
7
|
function createTemplateBuilder() {
|
|
4
8
|
let label = "";
|
|
9
|
+
let description;
|
|
5
10
|
let icon;
|
|
6
11
|
let fieldsFactory;
|
|
12
|
+
let layout;
|
|
7
13
|
let visibleFn;
|
|
8
14
|
const builder = {
|
|
9
15
|
label (text) {
|
|
10
16
|
label = text;
|
|
11
17
|
return builder;
|
|
12
18
|
},
|
|
19
|
+
description (text) {
|
|
20
|
+
description = text;
|
|
21
|
+
return builder;
|
|
22
|
+
},
|
|
13
23
|
icon (i) {
|
|
14
24
|
icon = i;
|
|
15
25
|
return builder;
|
|
@@ -18,6 +28,10 @@ function createTemplateBuilder() {
|
|
|
18
28
|
fieldsFactory = factory;
|
|
19
29
|
return builder;
|
|
20
30
|
},
|
|
31
|
+
layout (factory) {
|
|
32
|
+
layout = resolveInnerLayout(factory);
|
|
33
|
+
return builder;
|
|
34
|
+
},
|
|
21
35
|
visible (predicate) {
|
|
22
36
|
visibleFn = predicate;
|
|
23
37
|
return builder;
|
|
@@ -29,8 +43,10 @@ function createTemplateBuilder() {
|
|
|
29
43
|
return {
|
|
30
44
|
id,
|
|
31
45
|
label,
|
|
46
|
+
description,
|
|
32
47
|
icon,
|
|
33
48
|
childBuilders,
|
|
49
|
+
layout,
|
|
34
50
|
visible: visibleFn
|
|
35
51
|
};
|
|
36
52
|
}
|
|
@@ -67,15 +83,21 @@ class ObjectFieldBuilder extends FieldBuilder {
|
|
|
67
83
|
if ("objectAccordionSingle" === this._config.renderer || "objectAccordionMultiple" === this._config.renderer) this._config.renderer = "dynamicZone";
|
|
68
84
|
return this;
|
|
69
85
|
}
|
|
86
|
+
layout(factory) {
|
|
87
|
+
this._layout = resolveInnerLayout(factory);
|
|
88
|
+
return this;
|
|
89
|
+
}
|
|
70
90
|
build(name) {
|
|
71
91
|
this._config.name = name;
|
|
72
92
|
if (this._templates && Object.keys(this._childBuilders).length > 0) throw new Error(`Object field "${name}" has both .fields() and .template() defined. Templates are mutually exclusive with .fields(); each template defines its own children.`);
|
|
93
|
+
if (this._templates && this._layout) throw new Error(`Object field "${name}" has both .layout() and .template() defined. Templated objects declare their layouts per template.`);
|
|
73
94
|
return {
|
|
74
95
|
...this._config,
|
|
75
96
|
childBuilders: this._childBuilders,
|
|
76
97
|
isList: this._isList,
|
|
77
98
|
listSchema: this._listSchema,
|
|
78
|
-
templates: this._templates
|
|
99
|
+
templates: this._templates,
|
|
100
|
+
layout: this._layout
|
|
79
101
|
};
|
|
80
102
|
}
|
|
81
103
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features/formModel/fieldTypes/ObjectFieldType.js","sources":["../../../../src/features/formModel/fieldTypes/ObjectFieldType.ts"],"sourcesContent":["import type { z } from \"zod\";\nimport {\n FieldType,\n type IFieldTypeFactory,\n type IFieldBuilder,\n type IFieldBuilderRegistry,\n type IObjectFieldBuilder,\n type IObjectFieldConfig,\n type ITemplateBuilder,\n type ITemplateConfig,\n type ITemplateIcon\n} from \"../abstractions.js\";\nimport type { IFormModel } from \"../abstractions.js\";\nimport { FieldBuilder } from \"../FieldBuilder.js\";\n\ninterface TemplateBuilderInternal extends ITemplateBuilder {\n _build(id: string, registry: IFieldBuilderRegistry): ITemplateConfig;\n}\n\nexport function createTemplateBuilder(): TemplateBuilderInternal {\n let label = \"\";\n let icon: ITemplateIcon | undefined;\n let fieldsFactory:\n | ((registry: IFieldBuilderRegistry) => Record<string, IFieldBuilder>)\n | undefined;\n let visibleFn: ((form: IFormModel) => boolean) | undefined;\n\n const builder: TemplateBuilderInternal = {\n label(text: string) {\n label = text;\n return builder;\n },\n icon(i: ITemplateIcon) {\n icon = i;\n return builder;\n },\n fields(factory) {\n fieldsFactory = factory;\n return builder;\n },\n visible(predicate) {\n visibleFn = predicate;\n return builder;\n },\n _build(id: string, registry: IFieldBuilderRegistry): ITemplateConfig {\n const childBuilders = fieldsFactory ? fieldsFactory(registry) : {};\n if (\"_templateId\" in childBuilders) {\n throw new Error(\n `Template \"${id}\" defines a reserved field \"_templateId\". ` +\n `The discriminator is added automatically.`\n );\n }\n for (const [fieldName, builder] of Object.entries(childBuilders)) {\n if (builder) {\n builder.build(fieldName);\n }\n }\n return { id, label, icon, childBuilders, visible: visibleFn };\n }\n };\n return builder;\n}\n\nexport class ObjectFieldBuilder extends FieldBuilder<\"object\"> implements IObjectFieldBuilder {\n private _childBuilders: Record<string, IFieldBuilder> = {};\n private _isList = false;\n private _listSchema?: z.ZodTypeAny;\n private _templates?: ITemplateConfig[];\n private _templateIds = new Set<string>();\n private _registry: IFieldBuilderRegistry;\n\n constructor(registry: IFieldBuilderRegistry) {\n super(\"object\");\n this._config.renderer = \"objectAccordionSingle\";\n this._registry = registry;\n }\n\n fields(fn: (registry: IFieldBuilderRegistry) => Record<string, IFieldBuilder>): this {\n this._childBuilders = fn(this._registry);\n return this;\n }\n\n override list(): this {\n this._isList = true;\n if (this._config.renderer === \"objectAccordionSingle\") {\n this._config.renderer = \"objectAccordionMultiple\";\n }\n return this;\n }\n\n listSchema(schema: z.ZodTypeAny): this {\n this._listSchema = schema;\n return this;\n }\n\n template(id: string, configure: (t: ITemplateBuilder) => void): this {\n if (id === \"_templateId\") {\n throw new Error(`Template id \"_templateId\" is reserved. Choose a different id.`);\n }\n if (this._templateIds.has(id)) {\n throw new Error(`Duplicate template id \"${id}\".`);\n }\n this._templateIds.add(id);\n\n const tb = createTemplateBuilder();\n configure(tb);\n\n if (!this._templates) {\n this._templates = [];\n }\n this._templates.push(tb._build(id, this._registry));\n\n if (\n this._config.renderer === \"objectAccordionSingle\" ||\n this._config.renderer === \"objectAccordionMultiple\"\n ) {\n this._config.renderer = \"dynamicZone\";\n }\n\n return this;\n }\n\n override build(name: string): IObjectFieldConfig {\n this._config.name = name;\n\n if (this._templates && Object.keys(this._childBuilders).length > 0) {\n throw new Error(\n `Object field \"${name}\" has both .fields() and .template() defined. ` +\n `Templates are mutually exclusive with .fields(); each template defines its own children.`\n );\n }\n\n return {\n ...this._config,\n childBuilders: this._childBuilders,\n isList: this._isList,\n listSchema: this._listSchema,\n templates: this._templates\n };\n }\n}\n\nclass ObjectFieldTypeFactory implements IFieldTypeFactory {\n readonly type = \"object\";\n create(registry: IFieldBuilderRegistry) {\n return new ObjectFieldBuilder(registry);\n }\n}\n\nexport const ObjectFieldType = FieldType.createImplementation({\n implementation: ObjectFieldTypeFactory,\n dependencies: []\n});\n\ndeclare module \"../abstractions.js\" {\n interface IFieldBuilderRegistry {\n object(): IObjectFieldBuilder;\n }\n}\n"],"names":["createTemplateBuilder","label","icon","fieldsFactory","visibleFn","builder","text","i","
|
|
1
|
+
{"version":3,"file":"features/formModel/fieldTypes/ObjectFieldType.js","sources":["../../../../src/features/formModel/fieldTypes/ObjectFieldType.ts"],"sourcesContent":["import type { z } from \"zod\";\nimport {\n FieldType,\n type IFieldTypeFactory,\n type IFieldBuilder,\n type IFieldBuilderRegistry,\n type ILayoutBuilder,\n type ILayoutNodeBuilder,\n type IObjectFieldBuilder,\n type IObjectFieldConfig,\n type ITemplateBuilder,\n type ITemplateConfig,\n type ITemplateIcon,\n type LayoutNode\n} from \"../abstractions.js\";\nimport type { IFormModel } from \"../abstractions.js\";\nimport { FieldBuilder } from \"../FieldBuilder.js\";\nimport { LayoutBuilderFactory } from \"../LayoutBuilderFactory.js\";\n\nfunction resolveInnerLayout(\n factory: (layout: ILayoutBuilder) => ILayoutNodeBuilder[]\n): LayoutNode[] {\n return LayoutBuilderFactory.resolveObjectInner(factory) as LayoutNode[];\n}\n\ninterface TemplateBuilderInternal extends ITemplateBuilder {\n _build(id: string, registry: IFieldBuilderRegistry): ITemplateConfig;\n}\n\nexport function createTemplateBuilder(): TemplateBuilderInternal {\n let label = \"\";\n let description: string | undefined;\n let icon: ITemplateIcon | undefined;\n let fieldsFactory:\n | ((registry: IFieldBuilderRegistry) => Record<string, IFieldBuilder>)\n | undefined;\n let layout: LayoutNode[] | undefined;\n let visibleFn: ((form: IFormModel) => boolean) | undefined;\n\n const builder: TemplateBuilderInternal = {\n label(text: string) {\n label = text;\n return builder;\n },\n description(text: string) {\n description = text;\n return builder;\n },\n icon(i: ITemplateIcon) {\n icon = i;\n return builder;\n },\n fields(factory) {\n fieldsFactory = factory;\n return builder;\n },\n layout(factory) {\n layout = resolveInnerLayout(factory);\n return builder;\n },\n visible(predicate) {\n visibleFn = predicate;\n return builder;\n },\n _build(id: string, registry: IFieldBuilderRegistry): ITemplateConfig {\n const childBuilders = fieldsFactory ? fieldsFactory(registry) : {};\n if (\"_templateId\" in childBuilders) {\n throw new Error(\n `Template \"${id}\" defines a reserved field \"_templateId\". ` +\n `The discriminator is added automatically.`\n );\n }\n for (const [fieldName, builder] of Object.entries(childBuilders)) {\n if (builder) {\n builder.build(fieldName);\n }\n }\n return { id, label, description, icon, childBuilders, layout, visible: visibleFn };\n }\n };\n return builder;\n}\n\nexport class ObjectFieldBuilder extends FieldBuilder<\"object\"> implements IObjectFieldBuilder {\n private _childBuilders: Record<string, IFieldBuilder> = {};\n private _isList = false;\n private _listSchema?: z.ZodTypeAny;\n private _templates?: ITemplateConfig[];\n private _templateIds = new Set<string>();\n private _layout?: LayoutNode[];\n private _registry: IFieldBuilderRegistry;\n\n constructor(registry: IFieldBuilderRegistry) {\n super(\"object\");\n this._config.renderer = \"objectAccordionSingle\";\n this._registry = registry;\n }\n\n fields(fn: (registry: IFieldBuilderRegistry) => Record<string, IFieldBuilder>): this {\n this._childBuilders = fn(this._registry);\n return this;\n }\n\n override list(): this {\n this._isList = true;\n if (this._config.renderer === \"objectAccordionSingle\") {\n this._config.renderer = \"objectAccordionMultiple\";\n }\n return this;\n }\n\n listSchema(schema: z.ZodTypeAny): this {\n this._listSchema = schema;\n return this;\n }\n\n template(id: string, configure: (t: ITemplateBuilder) => void): this {\n if (id === \"_templateId\") {\n throw new Error(`Template id \"_templateId\" is reserved. Choose a different id.`);\n }\n if (this._templateIds.has(id)) {\n throw new Error(`Duplicate template id \"${id}\".`);\n }\n this._templateIds.add(id);\n\n const tb = createTemplateBuilder();\n configure(tb);\n\n if (!this._templates) {\n this._templates = [];\n }\n this._templates.push(tb._build(id, this._registry));\n\n if (\n this._config.renderer === \"objectAccordionSingle\" ||\n this._config.renderer === \"objectAccordionMultiple\"\n ) {\n this._config.renderer = \"dynamicZone\";\n }\n\n return this;\n }\n\n layout(factory: (layout: ILayoutBuilder) => ILayoutNodeBuilder[]): this {\n this._layout = resolveInnerLayout(factory);\n return this;\n }\n\n override build(name: string): IObjectFieldConfig {\n this._config.name = name;\n\n if (this._templates && Object.keys(this._childBuilders).length > 0) {\n throw new Error(\n `Object field \"${name}\" has both .fields() and .template() defined. ` +\n `Templates are mutually exclusive with .fields(); each template defines its own children.`\n );\n }\n\n if (this._templates && this._layout) {\n throw new Error(\n `Object field \"${name}\" has both .layout() and .template() defined. ` +\n `Templated objects declare their layouts per template.`\n );\n }\n\n return {\n ...this._config,\n childBuilders: this._childBuilders,\n isList: this._isList,\n listSchema: this._listSchema,\n templates: this._templates,\n layout: this._layout\n };\n }\n}\n\nclass ObjectFieldTypeFactory implements IFieldTypeFactory {\n readonly type = \"object\";\n create(registry: IFieldBuilderRegistry) {\n return new ObjectFieldBuilder(registry);\n }\n}\n\nexport const ObjectFieldType = FieldType.createImplementation({\n implementation: ObjectFieldTypeFactory,\n dependencies: []\n});\n\ndeclare module \"../abstractions.js\" {\n interface IFieldBuilderRegistry {\n object(): IObjectFieldBuilder;\n }\n}\n"],"names":["resolveInnerLayout","factory","LayoutBuilderFactory","createTemplateBuilder","label","description","icon","fieldsFactory","layout","visibleFn","builder","text","i","predicate","id","registry","childBuilders","Error","fieldName","Object","ObjectFieldBuilder","FieldBuilder","Set","fn","schema","configure","tb","name","ObjectFieldTypeFactory","ObjectFieldType","FieldType"],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { type DateBound } from "@webiny/utils";
|
|
3
|
+
export type { DateBound };
|
|
4
|
+
export interface IDateLimit {
|
|
5
|
+
bound: DateBound;
|
|
6
|
+
message?: string;
|
|
7
|
+
}
|
|
8
|
+
/** A field's date limits, as `datetime()` hands them to its renderer in `rendererSettings`. */
|
|
9
|
+
export interface IDateLimits {
|
|
10
|
+
gte: DateBound[];
|
|
11
|
+
lte: DateBound[];
|
|
12
|
+
}
|
|
13
|
+
/** The resolved limits: the latest lower limit and the earliest upper one. */
|
|
14
|
+
export interface IResolvedDateLimits {
|
|
15
|
+
min?: string;
|
|
16
|
+
max?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* A field's limits as dates, with expressions worked out against `today` (the editor's local
|
|
20
|
+
* date by default). An expression that can't be read is left out.
|
|
21
|
+
*/
|
|
22
|
+
export declare function resolveDateLimits(limits: IDateLimits | undefined, today?: string): IResolvedDateLimits;
|
|
23
|
+
/** Reads the limits `datetime()` put into a field's renderer settings. */
|
|
24
|
+
export declare function getDateLimits(rendererSettings: unknown): IDateLimits | undefined;
|
|
25
|
+
/** Shows a worked-out limit in a message; by default as it is stored (`2008-10-19`). */
|
|
26
|
+
export type DateLimitFormatter = (date: string) => string;
|
|
27
|
+
/** The message when a limit has none of its own. */
|
|
28
|
+
export declare const DEFAULT_DATE_GTE_MESSAGE = "Must be on or after {date}.";
|
|
29
|
+
export declare const DEFAULT_DATE_LTE_MESSAGE = "Must be on or before {date}.";
|
|
30
|
+
/** Puts the worked-out limit into a message's `{date}`. */
|
|
31
|
+
export declare function formatDateLimitMessage(message: string, date: string): string;
|
|
32
|
+
/**
|
|
33
|
+
* A schema that checks a value, or each value of a list, against the limits. Expressions are
|
|
34
|
+
* worked out against the editor's local date at the moment of the check, so a form left open
|
|
35
|
+
* overnight checks against the new day. A message's `{date}` is the worked-out limit.
|
|
36
|
+
*/
|
|
37
|
+
export declare function createDateLimitsSchema(gte: IDateLimit[], lte: IDateLimit[], formatDate?: DateLimitFormatter): z.ZodTypeAny;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { getLocalToday, resolveDateBound } from "@webiny/utils";
|
|
3
|
+
const describeBound = (bound)=>"string" == typeof bound ? bound : `"${bound.expression}"`;
|
|
4
|
+
function resolveDateLimits(limits, today = getLocalToday()) {
|
|
5
|
+
const resolve = (bounds = [])=>bounds.flatMap((bound)=>{
|
|
6
|
+
try {
|
|
7
|
+
return [
|
|
8
|
+
resolveDateBound(bound, today)
|
|
9
|
+
];
|
|
10
|
+
} catch {
|
|
11
|
+
return [];
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
const gte = resolve(limits?.gte);
|
|
15
|
+
const lte = resolve(limits?.lte);
|
|
16
|
+
return {
|
|
17
|
+
min: gte.length ? gte.reduce((a, b)=>a > b ? a : b) : void 0,
|
|
18
|
+
max: lte.length ? lte.reduce((a, b)=>a < b ? a : b) : void 0
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function getDateLimits(rendererSettings) {
|
|
22
|
+
if (!rendererSettings || "object" != typeof rendererSettings) return;
|
|
23
|
+
return rendererSettings.dateLimits;
|
|
24
|
+
}
|
|
25
|
+
const DEFAULT_DATE_GTE_MESSAGE = "Must be on or after {date}.";
|
|
26
|
+
const DEFAULT_DATE_LTE_MESSAGE = "Must be on or before {date}.";
|
|
27
|
+
function formatDateLimitMessage(message, date) {
|
|
28
|
+
return message.replace(/\{date}/g, date);
|
|
29
|
+
}
|
|
30
|
+
function createDateLimitsSchema(gte, lte, formatDate = (date)=>date) {
|
|
31
|
+
return z.any().superRefine((value, ctx)=>{
|
|
32
|
+
const values = (Array.isArray(value) ? value : [
|
|
33
|
+
value
|
|
34
|
+
]).filter((v)=>null != v && "" !== v);
|
|
35
|
+
if (0 === values.length) return;
|
|
36
|
+
const today = getLocalToday();
|
|
37
|
+
const check = (limit, kind)=>{
|
|
38
|
+
let date;
|
|
39
|
+
try {
|
|
40
|
+
date = resolveDateBound(limit.bound, today);
|
|
41
|
+
} catch {
|
|
42
|
+
ctx.addIssue({
|
|
43
|
+
code: "custom",
|
|
44
|
+
message: `Invalid date limit ${describeBound(limit.bound)}.`
|
|
45
|
+
});
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
const ok = values.every((v)=>"gte" === kind ? String(v) >= date : String(v) <= date);
|
|
49
|
+
if (!ok) {
|
|
50
|
+
const message = limit.message || ("gte" === kind ? DEFAULT_DATE_GTE_MESSAGE : DEFAULT_DATE_LTE_MESSAGE);
|
|
51
|
+
ctx.addIssue({
|
|
52
|
+
code: "custom",
|
|
53
|
+
message: formatDateLimitMessage(message, formatDate(date))
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
return ok;
|
|
57
|
+
};
|
|
58
|
+
for (const limit of gte)if (!check(limit, "gte")) return;
|
|
59
|
+
for (const limit of lte)if (!check(limit, "lte")) return;
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
export { DEFAULT_DATE_GTE_MESSAGE, DEFAULT_DATE_LTE_MESSAGE, createDateLimitsSchema, formatDateLimitMessage, getDateLimits, resolveDateLimits };
|
|
63
|
+
|
|
64
|
+
//# sourceMappingURL=dateLimits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/formModel/fieldTypes/dateLimits.js","sources":["../../../../src/features/formModel/fieldTypes/dateLimits.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { getLocalToday, resolveDateBound, type DateBound } from \"@webiny/utils\";\n\nexport type { DateBound };\n\nexport interface IDateLimit {\n bound: DateBound;\n message?: string;\n}\n\n/** A field's date limits, as `datetime()` hands them to its renderer in `rendererSettings`. */\nexport interface IDateLimits {\n gte: DateBound[];\n lte: DateBound[];\n}\n\n/** The resolved limits: the latest lower limit and the earliest upper one. */\nexport interface IResolvedDateLimits {\n min?: string;\n max?: string;\n}\n\nconst describeBound = (bound: DateBound) =>\n typeof bound === \"string\" ? bound : `\"${bound.expression}\"`;\n\n/**\n * A field's limits as dates, with expressions worked out against `today` (the editor's local\n * date by default). An expression that can't be read is left out.\n */\nexport function resolveDateLimits(\n limits: IDateLimits | undefined,\n today: string = getLocalToday()\n): IResolvedDateLimits {\n const resolve = (bounds: DateBound[] = []) =>\n bounds.flatMap(bound => {\n try {\n return [resolveDateBound(bound, today)];\n } catch {\n return [];\n }\n });\n const gte = resolve(limits?.gte);\n const lte = resolve(limits?.lte);\n return {\n min: gte.length ? gte.reduce((a, b) => (a > b ? a : b)) : undefined,\n max: lte.length ? lte.reduce((a, b) => (a < b ? a : b)) : undefined\n };\n}\n\n/** Reads the limits `datetime()` put into a field's renderer settings. */\nexport function getDateLimits(rendererSettings: unknown): IDateLimits | undefined {\n if (!rendererSettings || typeof rendererSettings !== \"object\") {\n return undefined;\n }\n return (rendererSettings as { dateLimits?: IDateLimits }).dateLimits;\n}\n\n/** Shows a worked-out limit in a message; by default as it is stored (`2008-10-19`). */\nexport type DateLimitFormatter = (date: string) => string;\n\n/** The message when a limit has none of its own. */\nexport const DEFAULT_DATE_GTE_MESSAGE = \"Must be on or after {date}.\";\nexport const DEFAULT_DATE_LTE_MESSAGE = \"Must be on or before {date}.\";\n\n/** Puts the worked-out limit into a message's `{date}`. */\nexport function formatDateLimitMessage(message: string, date: string): string {\n return message.replace(/\\{date}/g, date);\n}\n\n/**\n * A schema that checks a value, or each value of a list, against the limits. Expressions are\n * worked out against the editor's local date at the moment of the check, so a form left open\n * overnight checks against the new day. A message's `{date}` is the worked-out limit.\n */\nexport function createDateLimitsSchema(\n gte: IDateLimit[],\n lte: IDateLimit[],\n formatDate: DateLimitFormatter = date => date\n): z.ZodTypeAny {\n return z.any().superRefine((value, ctx) => {\n const values = (Array.isArray(value) ? value : [value]).filter(\n v => v !== null && v !== undefined && v !== \"\"\n );\n if (values.length === 0) {\n return;\n }\n const today = getLocalToday();\n const check = (limit: IDateLimit, kind: \"gte\" | \"lte\") => {\n let date: string;\n try {\n date = resolveDateBound(limit.bound, today);\n } catch {\n ctx.addIssue({\n code: \"custom\",\n message: `Invalid date limit ${describeBound(limit.bound)}.`\n });\n return false;\n }\n const ok = values.every(v => (kind === \"gte\" ? String(v) >= date : String(v) <= date));\n if (!ok) {\n const message =\n limit.message ||\n (kind === \"gte\" ? DEFAULT_DATE_GTE_MESSAGE : DEFAULT_DATE_LTE_MESSAGE);\n ctx.addIssue({\n code: \"custom\",\n message: formatDateLimitMessage(message, formatDate(date))\n });\n }\n return ok;\n };\n for (const limit of gte) {\n if (!check(limit, \"gte\")) {\n return;\n }\n }\n for (const limit of lte) {\n if (!check(limit, \"lte\")) {\n return;\n }\n }\n });\n}\n"],"names":["describeBound","bound","resolveDateLimits","limits","today","getLocalToday","resolve","bounds","resolveDateBound","gte","lte","a","b","undefined","getDateLimits","rendererSettings","DEFAULT_DATE_GTE_MESSAGE","DEFAULT_DATE_LTE_MESSAGE","formatDateLimitMessage","message","date","createDateLimitsSchema","formatDate","z","value","ctx","values","Array","v","check","limit","kind","ok","String"],"mappings":";;AAsBA,MAAMA,gBAAgB,CAACC,QACnB,AAAiB,YAAjB,OAAOA,QAAqBA,QAAQ,CAAC,CAAC,EAAEA,MAAM,UAAU,CAAC,CAAC,CAAC;AAMxD,SAASC,kBACZC,MAA+B,EAC/BC,QAAgBC,eAAe;IAE/B,MAAMC,UAAU,CAACC,SAAsB,EAAE,GACrCA,OAAO,OAAO,CAACN,CAAAA;YACX,IAAI;gBACA,OAAO;oBAACO,iBAAiBP,OAAOG;iBAAO;YAC3C,EAAE,OAAM;gBACJ,OAAO,EAAE;YACb;QACJ;IACJ,MAAMK,MAAMH,QAAQH,QAAQ;IAC5B,MAAMO,MAAMJ,QAAQH,QAAQ;IAC5B,OAAO;QACH,KAAKM,IAAI,MAAM,GAAGA,IAAI,MAAM,CAAC,CAACE,GAAGC,IAAOD,IAAIC,IAAID,IAAIC,KAAMC;QAC1D,KAAKH,IAAI,MAAM,GAAGA,IAAI,MAAM,CAAC,CAACC,GAAGC,IAAOD,IAAIC,IAAID,IAAIC,KAAMC;IAC9D;AACJ;AAGO,SAASC,cAAcC,gBAAyB;IACnD,IAAI,CAACA,oBAAoB,AAA4B,YAA5B,OAAOA,kBAC5B;IAEJ,OAAQA,iBAAkD,UAAU;AACxE;AAMO,MAAMC,2BAA2B;AACjC,MAAMC,2BAA2B;AAGjC,SAASC,uBAAuBC,OAAe,EAAEC,IAAY;IAChE,OAAOD,QAAQ,OAAO,CAAC,YAAYC;AACvC;AAOO,SAASC,uBACZZ,GAAiB,EACjBC,GAAiB,EACjBY,aAAiCF,CAAAA,OAAQA,IAAI;IAE7C,OAAOG,EAAE,GAAG,GAAG,WAAW,CAAC,CAACC,OAAOC;QAC/B,MAAMC,SAAUC,AAAAA,CAAAA,MAAM,OAAO,CAACH,SAASA,QAAQ;YAACA;SAAK,A,EAAG,MAAM,CAC1DI,CAAAA,IAAKA,QAAAA,KAAiCA,AAAM,OAANA;QAE1C,IAAIF,AAAkB,MAAlBA,OAAO,MAAM,EACb;QAEJ,MAAMtB,QAAQC;QACd,MAAMwB,QAAQ,CAACC,OAAmBC;YAC9B,IAAIX;YACJ,IAAI;gBACAA,OAAOZ,iBAAiBsB,MAAM,KAAK,EAAE1B;YACzC,EAAE,OAAM;gBACJqB,IAAI,QAAQ,CAAC;oBACT,MAAM;oBACN,SAAS,CAAC,mBAAmB,EAAEzB,cAAc8B,MAAM,KAAK,EAAE,CAAC,CAAC;gBAChE;gBACA,OAAO;YACX;YACA,MAAME,KAAKN,OAAO,KAAK,CAACE,CAAAA,IAAMG,AAAS,UAATA,OAAiBE,OAAOL,MAAMR,OAAOa,OAAOL,MAAMR;YAChF,IAAI,CAACY,IAAI;gBACL,MAAMb,UACFW,MAAM,OAAO,IACZC,CAAAA,AAAS,UAATA,OAAiBf,2BAA2BC,wBAAuB;gBACxEQ,IAAI,QAAQ,CAAC;oBACT,MAAM;oBACN,SAASP,uBAAuBC,SAASG,WAAWF;gBACxD;YACJ;YACA,OAAOY;QACX;QACA,KAAK,MAAMF,SAASrB,IAChB,IAAI,CAACoB,MAAMC,OAAO,QACd;QAGR,KAAK,MAAMA,SAASpB,IAChB,IAAI,CAACmB,MAAMC,OAAO,QACd;IAGZ;AACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { getDateLimits, resolveDateLimits } from "./dateLimits.js";
|
|
3
|
+
describe("resolveDateLimits", ()=>{
|
|
4
|
+
it("takes the latest lower limit and the earliest upper one", ()=>{
|
|
5
|
+
expect(resolveDateLimits({
|
|
6
|
+
gte: [
|
|
7
|
+
"1900-01-01",
|
|
8
|
+
{
|
|
9
|
+
expression: "today-100y"
|
|
10
|
+
}
|
|
11
|
+
],
|
|
12
|
+
lte: [
|
|
13
|
+
{
|
|
14
|
+
expression: "today-18y"
|
|
15
|
+
},
|
|
16
|
+
"2020-01-01"
|
|
17
|
+
]
|
|
18
|
+
}, "2026-10-19")).toEqual({
|
|
19
|
+
min: "1926-10-19",
|
|
20
|
+
max: "2008-10-19"
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
it("leaves out a side without limits and an expression it can't read", ()=>{
|
|
24
|
+
expect(resolveDateLimits({
|
|
25
|
+
gte: [],
|
|
26
|
+
lte: [
|
|
27
|
+
{
|
|
28
|
+
expression: "nope"
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
}, "2026-10-19")).toEqual({
|
|
32
|
+
min: void 0,
|
|
33
|
+
max: void 0
|
|
34
|
+
});
|
|
35
|
+
expect(resolveDateLimits(void 0, "2026-10-19")).toEqual({
|
|
36
|
+
min: void 0,
|
|
37
|
+
max: void 0
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
describe("getDateLimits", ()=>{
|
|
42
|
+
it("reads the limits from renderer settings", ()=>{
|
|
43
|
+
const dateLimits = {
|
|
44
|
+
gte: [
|
|
45
|
+
"2000-01-01"
|
|
46
|
+
],
|
|
47
|
+
lte: []
|
|
48
|
+
};
|
|
49
|
+
expect(getDateLimits({
|
|
50
|
+
type: "date",
|
|
51
|
+
dateLimits
|
|
52
|
+
})).toBe(dateLimits);
|
|
53
|
+
expect(getDateLimits({
|
|
54
|
+
type: "date"
|
|
55
|
+
})).toBeUndefined();
|
|
56
|
+
expect(getDateLimits(void 0)).toBeUndefined();
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
//# sourceMappingURL=dateLimits.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/formModel/fieldTypes/dateLimits.test.js","sources":["../../../../src/features/formModel/fieldTypes/dateLimits.test.ts"],"sourcesContent":["import { describe, it, expect } from \"vitest\";\nimport { getDateLimits, resolveDateLimits } from \"./dateLimits.js\";\n\ndescribe(\"resolveDateLimits\", () => {\n it(\"takes the latest lower limit and the earliest upper one\", () => {\n expect(\n resolveDateLimits(\n {\n gte: [\"1900-01-01\", { expression: \"today-100y\" }],\n lte: [{ expression: \"today-18y\" }, \"2020-01-01\"]\n },\n \"2026-10-19\"\n )\n ).toEqual({ min: \"1926-10-19\", max: \"2008-10-19\" });\n });\n\n it(\"leaves out a side without limits and an expression it can't read\", () => {\n expect(resolveDateLimits({ gte: [], lte: [{ expression: \"nope\" }] }, \"2026-10-19\")).toEqual(\n { min: undefined, max: undefined }\n );\n expect(resolveDateLimits(undefined, \"2026-10-19\")).toEqual({\n min: undefined,\n max: undefined\n });\n });\n});\n\ndescribe(\"getDateLimits\", () => {\n it(\"reads the limits from renderer settings\", () => {\n const dateLimits = { gte: [\"2000-01-01\"], lte: [] };\n expect(getDateLimits({ type: \"date\", dateLimits })).toBe(dateLimits);\n expect(getDateLimits({ type: \"date\" })).toBeUndefined();\n expect(getDateLimits(undefined)).toBeUndefined();\n });\n});\n"],"names":["describe","it","expect","resolveDateLimits","undefined","dateLimits","getDateLimits"],"mappings":";;AAGAA,SAAS,qBAAqB;IAC1BC,GAAG,2DAA2D;QAC1DC,OACIC,kBACI;YACI,KAAK;gBAAC;gBAAc;oBAAE,YAAY;gBAAa;aAAE;YACjD,KAAK;gBAAC;oBAAE,YAAY;gBAAY;gBAAG;aAAa;QACpD,GACA,eAEN,OAAO,CAAC;YAAE,KAAK;YAAc,KAAK;QAAa;IACrD;IAEAF,GAAG,oEAAoE;QACnEC,OAAOC,kBAAkB;YAAE,KAAK,EAAE;YAAE,KAAK;gBAAC;oBAAE,YAAY;gBAAO;aAAE;QAAC,GAAG,eAAe,OAAO,CACvF;YAAE,KAAKC;YAAW,KAAKA;QAAU;QAErCF,OAAOC,kBAAkBC,QAAW,eAAe,OAAO,CAAC;YACvD,KAAKA;YACL,KAAKA;QACT;IACJ;AACJ;AAEAJ,SAAS,iBAAiB;IACtBC,GAAG,2CAA2C;QAC1C,MAAMI,aAAa;YAAE,KAAK;gBAAC;aAAa;YAAE,KAAK,EAAE;QAAC;QAClDH,OAAOI,cAAc;YAAE,MAAM;YAAQD;QAAW,IAAI,IAAI,CAACA;QACzDH,OAAOI,cAAc;YAAE,MAAM;QAAO,IAAI,aAAa;QACrDJ,OAAOI,cAAcF,SAAY,aAAa;IAClD;AACJ"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { FormModelFeature } from "./feature.js";
|
|
2
2
|
import "./renderers.js";
|
|
3
|
-
export { FormModelFactory, RuleEvaluator, FieldType, FieldBuilderRegistry } from "./abstractions.js";
|
|
4
|
-
export type { FormModel, IFieldRendererRegistry, FieldRendererName, FieldRendererSettings, IFormModelFactory, IFormModelConfig, ILayoutBuilder, ILayoutNodeBuilder, IRowBuilder, ISeparatorBuilder, ITabBuilder, ITabsBuilder, IElementBuilder, IObjectBuilder, IFieldBuilder, IOptionsFieldBuilder, IObjectFieldBuilder, IFieldBuilderRegistry, IFormModel, IField, IObjectField, IObjectFieldConfig, IListItemField, IObjectFieldVM, IObjectFieldItemVM, ITemplateBuilder, ITemplateIcon, ITemplateConfig, ITemplateVM, IObjectFieldTemplates, FieldTypeMap, ITypedField, IFieldConfig, IFieldVM, IFieldValidation, IFormVM, IFormError, IValueOption, IRowNode, IRowNodeHandle, IRowNodeVM, ISeparatorNode, ISeparatorNodeVM, IAlertNode, IAlertNodeVM, ITabsNode, ITabDefinition, ITabsNodeVM, ITabDefinitionVM, IElementNode, IElementNodeVM, IObjectNode, ILayoutNodeAccessHandle, LayoutNodeHandleMap, ITabsHandle, ITabHandle, LayoutNode, LayoutNodeVM, LayoutPosition, IPositionedLayoutNode, ILayoutNodeHandle, ILayoutModifier, IFormModifier, IRule, IRuleEvaluator, RuleAction, BeforeChangeCallback, AfterChangeCallback, AfterSetValueCallback, OnBlurCallback, CloneValueCallback, IFieldTypeFactory, FileValue } from "./abstractions.js";
|
|
3
|
+
export { FormModelFactory, RuleEvaluator, FieldType, FieldValueFormatter, FieldBuilderRegistry } from "./abstractions.js";
|
|
4
|
+
export type { FormModel, IFieldRendererRegistry, FieldRendererName, FieldRendererSettings, IFormModelFactory, IFormModelConfig, ILayoutBuilder, ILayoutNodeBuilder, IRowBuilder, ISeparatorBuilder, ITabBuilder, ITabsBuilder, IElementBuilder, IObjectBuilder, IFieldBuilder, IOptionsFieldBuilder, IObjectFieldBuilder, IFieldBuilderRegistry, IFormModel, IField, IObjectField, IObjectFieldConfig, IListItemField, IObjectFieldVM, IObjectFieldItemVM, ITemplateBuilder, ITemplateIcon, ITemplateConfig, ITemplateVM, IObjectFieldTemplates, FieldTypeMap, ITypedField, IFieldConfig, IFieldVM, IFieldValueFormatter, IFieldValidation, IFormVM, IFormError, IValueOption, IRowNode, IRowNodeHandle, IRowNodeVM, ISeparatorNode, ISeparatorNodeVM, IAlertNode, IAlertNodeVM, ITabsNode, ITabDefinition, ITabsNodeVM, ITabDefinitionVM, IElementNode, IElementNodeVM, IObjectNode, ILayoutNodeAccessHandle, LayoutNodeHandleMap, ITabsHandle, ITabHandle, LayoutNode, LayoutNodeVM, LayoutPosition, IPositionedLayoutNode, ILayoutNodeHandle, ILayoutModifier, IFormModifier, IRule, IRuleEvaluator, RuleAction, BeforeChangeCallback, AfterChangeCallback, AfterSetValueCallback, OnBlurCallback, CloneValueCallback, IFieldTypeFactory, FileValue } from "./abstractions.js";
|
|
5
5
|
export { Field } from "./Field.js";
|
|
6
6
|
export { FieldBuilder, createFieldBuilderRegistry } from "./FieldBuilder.js";
|
|
7
7
|
import "./fieldTypes/TextFieldType.js";
|
|
@@ -7,7 +7,7 @@ import "./fieldTypes/TextFieldType.js";
|
|
|
7
7
|
import "./fieldTypes/NumberFieldType.js";
|
|
8
8
|
import "./fieldTypes/BooleanFieldType.js";
|
|
9
9
|
export { FormModelFeature } from "./feature.js";
|
|
10
|
-
export { FieldBuilderRegistry, FieldType, FormModelFactory, RuleEvaluator } from "./abstractions.js";
|
|
10
|
+
export { FieldBuilderRegistry, FieldType, FieldValueFormatter, FormModelFactory, RuleEvaluator } from "./abstractions.js";
|
|
11
11
|
export { Field } from "./Field.js";
|
|
12
12
|
export { FieldBuilder, createFieldBuilderRegistry } from "./FieldBuilder.js";
|
|
13
13
|
export { BooleanFieldBuilder, BooleanFieldType, DateTimeFieldBuilder, DateTimeFieldType, FileFieldBuilder, FileFieldType, FileUrlFieldBuilder, FileUrlFieldType, NumberFieldBuilder, NumberFieldType, ObjectFieldBuilder, ObjectFieldType, TextFieldBuilder, TextFieldType } from "./fieldTypes/index.js";
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type JsonSchemaType = "object" | "array" | "string" | "number" | "boolean" | "null" | "integer";
|
|
2
|
+
export type JsonSchemaEnumValue = string | number | boolean | null;
|
|
3
|
+
export interface JsonSchema {
|
|
4
|
+
type?: JsonSchemaType;
|
|
5
|
+
title?: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
default?: unknown;
|
|
8
|
+
enum?: JsonSchemaEnumValue[];
|
|
9
|
+
properties?: Record<string, JsonSchema>;
|
|
10
|
+
required?: string[];
|
|
11
|
+
items?: JsonSchema;
|
|
12
|
+
minimum?: number;
|
|
13
|
+
maximum?: number;
|
|
14
|
+
exclusiveMinimum?: number;
|
|
15
|
+
exclusiveMaximum?: number;
|
|
16
|
+
ui?: string;
|
|
17
|
+
[keyword: string]: unknown;
|
|
18
|
+
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type PlainObject = Record<string, unknown>;
|
|
File without changes
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IFieldBuilder } from "../abstractions.js";
|
|
2
|
+
import type { IFieldBuilderRegistry } from "../abstractions.js";
|
|
3
|
+
import type { JsonSchema } from "./JsonSchema.js";
|
|
4
|
+
import type { JsonSchemaFieldOptions } from "./JsonSchemaFieldOptions.js";
|
|
5
|
+
export declare const buildFieldsFromJsonSchema: (schema: JsonSchema, registry: IFieldBuilderRegistry, options: JsonSchemaFieldOptions) => Record<string, IFieldBuilder>;
|