@blueprint-ts/core 4.1.0-beta.2 → 4.1.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bulkRequests/BulkRequestEvent.enum.d.ts +4 -0
- package/dist/bulkRequests/BulkRequestEvent.enum.js +5 -0
- package/dist/bulkRequests/BulkRequestSender.d.ts +31 -0
- package/dist/bulkRequests/BulkRequestSender.js +161 -0
- package/dist/bulkRequests/BulkRequestWrapper.d.ts +15 -0
- package/dist/bulkRequests/BulkRequestWrapper.js +50 -0
- package/dist/bulkRequests/index.d.ts +5 -0
- package/dist/bulkRequests/index.js +5 -0
- package/{src/laravel/pagination/contracts/PaginationResponseBodyContract.ts → dist/laravel/pagination/contracts/PaginationResponseBodyContract.d.ts} +4 -4
- package/dist/laravel/pagination/contracts/PaginationResponseBodyContract.js +1 -0
- package/dist/laravel/pagination/dataDrivers/RequestDriver.d.ts +10 -0
- package/dist/laravel/pagination/dataDrivers/RequestDriver.js +18 -0
- package/dist/laravel/pagination/index.d.ts +4 -0
- package/dist/laravel/pagination/index.js +2 -0
- package/dist/laravel/requests/JsonBaseRequest.d.ts +14 -0
- package/dist/laravel/requests/JsonBaseRequest.js +15 -0
- package/dist/laravel/requests/PaginationJsonBaseRequest.d.ts +8 -0
- package/dist/laravel/requests/PaginationJsonBaseRequest.js +13 -0
- package/dist/laravel/requests/index.d.ts +7 -0
- package/dist/laravel/requests/index.js +5 -0
- package/dist/laravel/requests/responses/JsonResponse.d.ts +5 -0
- package/dist/laravel/requests/responses/JsonResponse.js +6 -0
- package/dist/laravel/requests/responses/PaginationResponse.d.ts +7 -0
- package/dist/laravel/requests/responses/PaginationResponse.js +9 -0
- package/dist/pagination/BasePaginator.d.ts +19 -0
- package/dist/pagination/BasePaginator.js +65 -0
- package/dist/pagination/InfiniteScroller.d.ts +6 -0
- package/dist/pagination/InfiniteScroller.js +17 -0
- package/dist/pagination/PageAwarePaginator.d.ts +32 -0
- package/dist/pagination/PageAwarePaginator.js +86 -0
- package/dist/pagination/StatePaginator.d.ts +25 -0
- package/dist/pagination/StatePaginator.js +55 -0
- package/dist/pagination/contracts/BaseViewDriverContract.d.ts +6 -0
- package/dist/pagination/contracts/BaseViewDriverContract.js +1 -0
- package/{src/pagination/contracts/BaseViewDriverFactoryContract.ts → dist/pagination/contracts/BaseViewDriverFactoryContract.d.ts} +2 -3
- package/dist/pagination/contracts/BaseViewDriverFactoryContract.js +1 -0
- package/dist/pagination/contracts/PaginateableRequestContract.d.ts +4 -0
- package/dist/pagination/contracts/PaginateableRequestContract.js +1 -0
- package/dist/pagination/contracts/PaginationDataDriverContract.d.ts +4 -0
- package/dist/pagination/contracts/PaginationDataDriverContract.js +1 -0
- package/{src/pagination/contracts/PaginationResponseContract.ts → dist/pagination/contracts/PaginationResponseContract.d.ts} +3 -5
- package/dist/pagination/contracts/PaginationResponseContract.js +1 -0
- package/{src/pagination/contracts/PaginatorLoadDataOptions.ts → dist/pagination/contracts/PaginatorLoadDataOptions.d.ts} +2 -2
- package/dist/pagination/contracts/PaginatorLoadDataOptions.js +1 -0
- package/{src/pagination/contracts/StatePaginationDataDriverContract.ts → dist/pagination/contracts/StatePaginationDataDriverContract.d.ts} +2 -3
- package/dist/pagination/contracts/StatePaginationDataDriverContract.js +1 -0
- package/dist/pagination/contracts/ViewDriverContract.d.ts +9 -0
- package/dist/pagination/contracts/ViewDriverContract.js +1 -0
- package/dist/pagination/contracts/ViewDriverFactoryContract.d.ts +4 -0
- package/dist/pagination/contracts/ViewDriverFactoryContract.js +1 -0
- package/dist/pagination/dataDrivers/ArrayDriver.d.ts +9 -0
- package/dist/pagination/dataDrivers/ArrayDriver.js +20 -0
- package/dist/pagination/dtos/PaginationDataDto.d.ts +7 -0
- package/dist/pagination/dtos/PaginationDataDto.js +12 -0
- package/dist/pagination/dtos/StatePaginationDataDto.d.ts +7 -0
- package/dist/pagination/dtos/StatePaginationDataDto.js +13 -0
- package/dist/pagination/factories/VueBaseViewDriverFactory.d.ts +5 -0
- package/dist/pagination/factories/VueBaseViewDriverFactory.js +6 -0
- package/dist/pagination/factories/VuePaginationDriverFactory.d.ts +5 -0
- package/dist/pagination/factories/VuePaginationDriverFactory.js +6 -0
- package/dist/pagination/frontendDrivers/VueBaseViewDriver.d.ts +11 -0
- package/dist/pagination/frontendDrivers/VueBaseViewDriver.js +19 -0
- package/dist/pagination/frontendDrivers/VuePaginationDriver.d.ts +21 -0
- package/dist/pagination/frontendDrivers/VuePaginationDriver.js +41 -0
- package/dist/pagination/index.d.ts +22 -0
- package/dist/pagination/index.js +13 -0
- package/dist/persistenceDrivers/LocalStorageDriver.d.ts +9 -0
- package/dist/persistenceDrivers/LocalStorageDriver.js +18 -0
- package/dist/persistenceDrivers/NonPersistentDriver.d.ts +7 -0
- package/dist/persistenceDrivers/NonPersistentDriver.js +8 -0
- package/dist/persistenceDrivers/SessionStorageDriver.d.ts +9 -0
- package/dist/persistenceDrivers/SessionStorageDriver.js +18 -0
- package/dist/persistenceDrivers/index.d.ts +6 -0
- package/dist/persistenceDrivers/index.js +4 -0
- package/dist/persistenceDrivers/types/PersistenceDriver.d.ts +5 -0
- package/dist/persistenceDrivers/types/PersistenceDriver.js +1 -0
- package/dist/requests/BaseRequest.d.ts +62 -0
- package/dist/requests/BaseRequest.js +224 -0
- package/dist/requests/ErrorHandler.d.ts +11 -0
- package/dist/requests/ErrorHandler.js +127 -0
- package/dist/requests/RequestConcurrencyMode.enum.d.ts +6 -0
- package/dist/requests/RequestConcurrencyMode.enum.js +7 -0
- package/dist/requests/RequestErrorRouter.d.ts +38 -0
- package/dist/requests/RequestErrorRouter.js +38 -0
- package/dist/requests/RequestEvents.enum.d.ts +4 -0
- package/dist/requests/RequestEvents.enum.js +5 -0
- package/dist/requests/RequestMethod.enum.d.ts +8 -0
- package/dist/requests/RequestMethod.enum.js +9 -0
- package/dist/requests/bodies/BinaryBody.d.ts +10 -0
- package/dist/requests/bodies/BinaryBody.js +22 -0
- package/dist/requests/bodies/FormDataBody.d.ts +14 -0
- package/dist/requests/bodies/FormDataBody.js +60 -0
- package/dist/requests/bodies/JsonBody.d.ts +8 -0
- package/dist/requests/bodies/JsonBody.js +13 -0
- package/{src/requests/contracts/AbortableRequestContract.ts → dist/requests/contracts/AbortableRequestContract.d.ts} +1 -1
- package/dist/requests/contracts/AbortableRequestContract.js +1 -0
- package/dist/requests/contracts/BaseRequestContract.d.ts +23 -0
- package/dist/requests/contracts/BaseRequestContract.js +1 -0
- package/dist/requests/contracts/BodyContract.d.ts +6 -0
- package/dist/requests/contracts/BodyContract.js +1 -0
- package/dist/requests/contracts/BodyFactoryContract.d.ts +4 -0
- package/dist/requests/contracts/BodyFactoryContract.js +1 -0
- package/dist/requests/contracts/DriverConfigContract.d.ts +8 -0
- package/dist/requests/contracts/DriverConfigContract.js +1 -0
- package/dist/requests/contracts/HeadersContract.d.ts +7 -0
- package/dist/requests/contracts/HeadersContract.js +1 -0
- package/dist/requests/contracts/RequestDriverContract.d.ts +8 -0
- package/dist/requests/contracts/RequestDriverContract.js +1 -0
- package/dist/requests/contracts/RequestLoaderContract.d.ts +4 -0
- package/dist/requests/contracts/RequestLoaderContract.js +1 -0
- package/{src/requests/contracts/RequestLoaderFactoryContract.ts → dist/requests/contracts/RequestLoaderFactoryContract.d.ts} +2 -3
- package/dist/requests/contracts/RequestLoaderFactoryContract.js +1 -0
- package/dist/requests/contracts/ResponseContract.d.ts +5 -0
- package/dist/requests/contracts/ResponseContract.js +1 -0
- package/dist/requests/drivers/contracts/ResponseHandlerContract.d.ts +9 -0
- package/dist/requests/drivers/contracts/ResponseHandlerContract.js +1 -0
- package/dist/requests/drivers/fetch/FetchDriver.d.ts +26 -0
- package/dist/requests/drivers/fetch/FetchDriver.js +73 -0
- package/dist/requests/drivers/fetch/FetchResponse.d.ts +12 -0
- package/dist/requests/drivers/fetch/FetchResponse.js +38 -0
- package/dist/requests/drivers/xhr/XMLHttpRequestDriver.d.ts +13 -0
- package/dist/requests/drivers/xhr/XMLHttpRequestDriver.js +107 -0
- package/dist/requests/drivers/xhr/XMLHttpRequestResponse.d.ts +17 -0
- package/dist/requests/drivers/xhr/XMLHttpRequestResponse.js +84 -0
- package/dist/requests/exceptions/BadGatewayException.d.ts +3 -0
- package/dist/requests/exceptions/BadGatewayException.js +3 -0
- package/dist/requests/exceptions/BadRequestException.d.ts +3 -0
- package/dist/requests/exceptions/BadRequestException.js +3 -0
- package/dist/requests/exceptions/ConflictException.d.ts +3 -0
- package/dist/requests/exceptions/ConflictException.js +3 -0
- package/dist/requests/exceptions/ForbiddenException.d.ts +3 -0
- package/dist/requests/exceptions/ForbiddenException.js +3 -0
- package/dist/requests/exceptions/GatewayTimeoutException.d.ts +3 -0
- package/dist/requests/exceptions/GatewayTimeoutException.js +3 -0
- package/dist/requests/exceptions/GoneException.d.ts +3 -0
- package/dist/requests/exceptions/GoneException.js +3 -0
- package/dist/requests/exceptions/InvalidJsonException.d.ts +7 -0
- package/dist/requests/exceptions/InvalidJsonException.js +10 -0
- package/dist/requests/exceptions/LockedException.d.ts +3 -0
- package/dist/requests/exceptions/LockedException.js +3 -0
- package/dist/requests/exceptions/MethodNotAllowedException.d.ts +3 -0
- package/dist/requests/exceptions/MethodNotAllowedException.js +3 -0
- package/dist/requests/exceptions/NoResponseReceivedException.d.ts +3 -0
- package/{src/requests/exceptions/NoResponseReceivedException.ts → dist/requests/exceptions/NoResponseReceivedException.js} +3 -3
- package/dist/requests/exceptions/NotFoundException.d.ts +3 -0
- package/dist/requests/exceptions/NotFoundException.js +3 -0
- package/dist/requests/exceptions/NotImplementedException.d.ts +3 -0
- package/dist/requests/exceptions/NotImplementedException.js +3 -0
- package/dist/requests/exceptions/PageExpiredException.d.ts +3 -0
- package/dist/requests/exceptions/PageExpiredException.js +3 -0
- package/dist/requests/exceptions/PayloadTooLargeException.d.ts +3 -0
- package/dist/requests/exceptions/PayloadTooLargeException.js +3 -0
- package/dist/requests/exceptions/PreconditionFailedException.d.ts +3 -0
- package/dist/requests/exceptions/PreconditionFailedException.js +3 -0
- package/dist/requests/exceptions/RequestTimeoutException.d.ts +3 -0
- package/dist/requests/exceptions/RequestTimeoutException.js +3 -0
- package/dist/requests/exceptions/ResponseBodyException.d.ts +7 -0
- package/dist/requests/exceptions/ResponseBodyException.js +10 -0
- package/dist/requests/exceptions/ResponseException.d.ts +6 -0
- package/dist/requests/exceptions/ResponseException.js +9 -0
- package/dist/requests/exceptions/ServerErrorException.d.ts +3 -0
- package/dist/requests/exceptions/ServerErrorException.js +3 -0
- package/dist/requests/exceptions/ServiceUnavailableException.d.ts +3 -0
- package/dist/requests/exceptions/ServiceUnavailableException.js +3 -0
- package/dist/requests/exceptions/StaleResponseException.d.ts +5 -0
- package/dist/requests/exceptions/StaleResponseException.js +10 -0
- package/dist/requests/exceptions/TooManyRequestsException.d.ts +3 -0
- package/dist/requests/exceptions/TooManyRequestsException.js +3 -0
- package/dist/requests/exceptions/UnauthorizedException.d.ts +3 -0
- package/dist/requests/exceptions/UnauthorizedException.js +3 -0
- package/dist/requests/exceptions/UnsupportedMediaTypeException.d.ts +3 -0
- package/dist/requests/exceptions/UnsupportedMediaTypeException.js +3 -0
- package/dist/requests/exceptions/ValidationException.d.ts +3 -0
- package/dist/requests/exceptions/ValidationException.js +3 -0
- package/dist/requests/exceptions/index.d.ts +25 -0
- package/dist/requests/exceptions/index.js +25 -0
- package/dist/requests/factories/BinaryBodyFactory.d.ts +8 -0
- package/dist/requests/factories/BinaryBodyFactory.js +9 -0
- package/dist/requests/factories/FormDataFactory.d.ts +12 -0
- package/dist/requests/factories/FormDataFactory.js +6 -0
- package/dist/requests/factories/JsonBodyFactory.d.ts +5 -0
- package/dist/requests/factories/JsonBodyFactory.js +6 -0
- package/dist/requests/index.d.ts +31 -0
- package/dist/requests/index.js +19 -0
- package/dist/requests/responses/BaseResponse.d.ts +14 -0
- package/dist/requests/responses/BaseResponse.js +36 -0
- package/dist/requests/responses/BlobResponse.d.ts +7 -0
- package/dist/requests/responses/BlobResponse.js +16 -0
- package/dist/requests/responses/JsonResponse.d.ts +5 -0
- package/dist/requests/responses/JsonResponse.js +12 -0
- package/dist/requests/responses/PlainTextResponse.d.ts +5 -0
- package/dist/requests/responses/PlainTextResponse.js +12 -0
- package/{src/requests/types/RequestConcurrencyOptions.ts → dist/requests/types/RequestConcurrencyOptions.d.ts} +4 -5
- package/dist/requests/types/RequestConcurrencyOptions.js +1 -0
- package/dist/requests/types/RequestUploadProgress.d.ts +6 -0
- package/dist/requests/types/RequestUploadProgress.js +1 -0
- package/dist/support/DeferredPromise.d.ts +37 -0
- package/dist/support/DeferredPromise.js +55 -0
- package/dist/support/helpers.d.ts +5 -0
- package/dist/support/helpers.js +69 -0
- package/{src/support/index.ts → dist/support/index.d.ts} +3 -4
- package/dist/support/index.js +3 -0
- package/dist/vue/composables/useConfirmDialog.d.ts +20 -0
- package/dist/vue/composables/useConfirmDialog.js +52 -0
- package/dist/vue/composables/useGlobalCheckbox.d.ts +13 -0
- package/dist/vue/composables/useGlobalCheckbox.js +123 -0
- package/dist/vue/composables/useIsEmpty.d.ts +4 -0
- package/dist/vue/composables/useIsEmpty.js +27 -0
- package/dist/vue/composables/useIsOpen.d.ts +5 -0
- package/dist/vue/composables/useIsOpen.js +25 -0
- package/dist/vue/composables/useIsOpenFromVar.d.ts +6 -0
- package/dist/vue/composables/useIsOpenFromVar.js +45 -0
- package/dist/vue/composables/useModelWrapper.d.ts +9 -0
- package/dist/vue/composables/useModelWrapper.js +18 -0
- package/dist/vue/composables/useOnOpen.d.ts +7 -0
- package/dist/vue/composables/useOnOpen.js +25 -0
- package/{src/vue/contracts/ModelValueOptions.ts → dist/vue/contracts/ModelValueOptions.d.ts} +1 -1
- package/dist/vue/contracts/ModelValueOptions.js +1 -0
- package/dist/vue/contracts/ModelValueProps.d.ts +3 -0
- package/dist/vue/contracts/ModelValueProps.js +1 -0
- package/dist/vue/forms/BaseForm.d.ts +162 -0
- package/dist/vue/forms/BaseForm.js +997 -0
- package/dist/vue/forms/PropertyAwareArray.d.ts +53 -0
- package/dist/vue/forms/PropertyAwareArray.js +54 -0
- package/{src/vue/forms/index.ts → dist/vue/forms/index.d.ts} +9 -11
- package/dist/vue/forms/index.js +6 -0
- package/dist/vue/forms/types/PersistedForm.d.ts +6 -0
- package/dist/vue/forms/types/PersistedForm.js +1 -0
- package/dist/vue/forms/validation/ValidationMode.enum.d.ts +11 -0
- package/dist/vue/forms/validation/ValidationMode.enum.js +14 -0
- package/dist/vue/forms/validation/index.d.ts +12 -0
- package/dist/vue/forms/validation/index.js +9 -0
- package/dist/vue/forms/validation/rules/BaseRule.d.ts +5 -0
- package/dist/vue/forms/validation/rules/BaseRule.js +5 -0
- package/dist/vue/forms/validation/rules/ConfirmedRule.d.ts +10 -0
- package/dist/vue/forms/validation/rules/ConfirmedRule.js +26 -0
- package/dist/vue/forms/validation/rules/EmailRule.d.ts +7 -0
- package/dist/vue/forms/validation/rules/EmailRule.js +19 -0
- package/dist/vue/forms/validation/rules/JsonRule.d.ts +7 -0
- package/dist/vue/forms/validation/rules/JsonRule.js +25 -0
- package/dist/vue/forms/validation/rules/MinRule.d.ts +26 -0
- package/dist/vue/forms/validation/rules/MinRule.js +52 -0
- package/dist/vue/forms/validation/rules/RequiredRule.d.ts +7 -0
- package/dist/vue/forms/validation/rules/RequiredRule.js +16 -0
- package/dist/vue/forms/validation/rules/UrlRule.d.ts +7 -0
- package/dist/vue/forms/validation/rules/UrlRule.js +22 -0
- package/{src/vue/forms/validation/types/BidirectionalRule.ts → dist/vue/forms/validation/types/BidirectionalRule.d.ts} +4 -4
- package/dist/vue/forms/validation/types/BidirectionalRule.js +1 -0
- package/dist/vue/forms/validation/types/ValidationRules.d.ts +11 -0
- package/dist/vue/forms/validation/types/ValidationRules.js +1 -0
- package/dist/vue/index.d.ts +11 -0
- package/dist/vue/index.js +10 -0
- package/dist/vue/requests/factories/VueRequestLoaderFactory.d.ts +6 -0
- package/dist/vue/requests/factories/VueRequestLoaderFactory.js +6 -0
- package/{src/vue/requests/index.ts → dist/vue/requests/index.d.ts} +4 -5
- package/dist/vue/requests/index.js +4 -0
- package/dist/vue/requests/loaders/VueRequestBatchLoader.d.ts +12 -0
- package/dist/vue/requests/loaders/VueRequestBatchLoader.js +29 -0
- package/dist/vue/requests/loaders/VueRequestLoader.d.ts +8 -0
- package/dist/vue/requests/loaders/VueRequestLoader.js +12 -0
- package/dist/vue/router/routeResourceBinding/RouteResourceBoundView.d.ts +57 -0
- package/dist/vue/router/routeResourceBinding/RouteResourceBoundView.js +135 -0
- package/dist/vue/router/routeResourceBinding/RouteResourceRequestResolver.d.ts +6 -0
- package/dist/vue/router/routeResourceBinding/RouteResourceRequestResolver.js +20 -0
- package/dist/vue/router/routeResourceBinding/defineRoute.d.ts +23 -0
- package/dist/vue/router/routeResourceBinding/defineRoute.js +42 -0
- package/dist/vue/router/routeResourceBinding/index.d.ts +8 -0
- package/dist/vue/router/routeResourceBinding/index.js +6 -0
- package/dist/vue/router/routeResourceBinding/installRouteInjection.d.ts +14 -0
- package/dist/vue/router/routeResourceBinding/installRouteInjection.js +133 -0
- package/dist/vue/router/routeResourceBinding/types.d.ts +55 -0
- package/dist/vue/router/routeResourceBinding/types.js +1 -0
- package/dist/vue/router/routeResourceBinding/useRouteResource.d.ts +8 -0
- package/dist/vue/router/routeResourceBinding/useRouteResource.js +29 -0
- package/dist/vue/state/State.d.ts +75 -0
- package/dist/vue/state/State.js +267 -0
- package/dist/vue/state/index.d.ts +2 -0
- package/dist/vue/state/index.js +2 -0
- package/package.json +81 -23
- package/.editorconfig +0 -508
- package/.eslintrc.cjs +0 -15
- package/.prettierrc.json +0 -8
- package/CHANGELOG.md +0 -226
- package/docker-compose.yaml +0 -8
- package/docs/.vitepress/config.ts +0 -124
- package/docs/index.md +0 -13
- package/docs/laravel/pagination.md +0 -67
- package/docs/laravel/requests.md +0 -62
- package/docs/services/pagination/index.md +0 -46
- package/docs/services/pagination/infinite-scroller.md +0 -20
- package/docs/services/pagination/page-aware.md +0 -51
- package/docs/services/pagination/state-pagination.md +0 -77
- package/docs/services/pagination/updating-rows.md +0 -52
- package/docs/services/persistence/index.md +0 -46
- package/docs/services/requests/abort-requests.md +0 -29
- package/docs/services/requests/bulk-requests.md +0 -70
- package/docs/services/requests/concurrency.md +0 -58
- package/docs/services/requests/drivers.md +0 -115
- package/docs/services/requests/error-handling.md +0 -153
- package/docs/services/requests/events.md +0 -53
- package/docs/services/requests/file-uploads.md +0 -168
- package/docs/services/requests/getting-started.md +0 -201
- package/docs/services/requests/headers.md +0 -40
- package/docs/services/requests/loading.md +0 -63
- package/docs/services/requests/request-bodies.md +0 -89
- package/docs/services/requests/responses.md +0 -34
- package/docs/services/support/deferred-promise.md +0 -63
- package/docs/services/support/helpers.md +0 -77
- package/docs/services/support/index.md +0 -6
- package/docs/upgrading/v1-to-v2.md +0 -64
- package/docs/upgrading/v2-to-v3.md +0 -52
- package/docs/upgrading/v3-to-v4.md +0 -214
- package/docs/upgrading.md +0 -0
- package/docs/vue/composables/use-confirm-dialog.md +0 -96
- package/docs/vue/composables/use-global-checkbox.md +0 -73
- package/docs/vue/composables/use-is-empty.md +0 -26
- package/docs/vue/composables/use-is-open-from-var.md +0 -32
- package/docs/vue/composables/use-is-open.md +0 -28
- package/docs/vue/composables/use-model-wrapper.md +0 -29
- package/docs/vue/composables/use-on-open.md +0 -26
- package/docs/vue/forms/arrays.md +0 -102
- package/docs/vue/forms/errors.md +0 -52
- package/docs/vue/forms/index.md +0 -99
- package/docs/vue/forms/payloads.md +0 -99
- package/docs/vue/forms/persistence.md +0 -19
- package/docs/vue/forms/state-and-properties.md +0 -26
- package/docs/vue/forms/utilities.md +0 -27
- package/docs/vue/forms/validation.md +0 -189
- package/docs/vue/requests/loading.md +0 -51
- package/docs/vue/router/route-resource-binding.md +0 -240
- package/docs/vue/state.md +0 -309
- package/env.d.ts +0 -1
- package/eslint.config.js +0 -15
- package/release-tool.json +0 -26
- package/src/bulkRequests/BulkRequestEvent.enum.ts +0 -4
- package/src/bulkRequests/BulkRequestSender.ts +0 -196
- package/src/bulkRequests/BulkRequestWrapper.ts +0 -49
- package/src/bulkRequests/index.ts +0 -6
- package/src/laravel/pagination/dataDrivers/RequestDriver.ts +0 -30
- package/src/laravel/pagination/index.ts +0 -6
- package/src/laravel/requests/JsonBaseRequest.ts +0 -35
- package/src/laravel/requests/PaginationJsonBaseRequest.ts +0 -29
- package/src/laravel/requests/index.ts +0 -9
- package/src/laravel/requests/responses/JsonResponse.ts +0 -8
- package/src/laravel/requests/responses/PaginationResponse.ts +0 -16
- package/src/pagination/BasePaginator.ts +0 -94
- package/src/pagination/InfiniteScroller.ts +0 -22
- package/src/pagination/PageAwarePaginator.ts +0 -132
- package/src/pagination/StatePaginator.ts +0 -86
- package/src/pagination/contracts/BaseViewDriverContract.ts +0 -6
- package/src/pagination/contracts/PaginateableRequestContract.ts +0 -13
- package/src/pagination/contracts/PaginationDataDriverContract.ts +0 -5
- package/src/pagination/contracts/ViewDriverContract.ts +0 -10
- package/src/pagination/contracts/ViewDriverFactoryContract.ts +0 -5
- package/src/pagination/dataDrivers/ArrayDriver.ts +0 -28
- package/src/pagination/dtos/PaginationDataDto.ts +0 -14
- package/src/pagination/dtos/StatePaginationDataDto.ts +0 -19
- package/src/pagination/factories/VueBaseViewDriverFactory.ts +0 -9
- package/src/pagination/factories/VuePaginationDriverFactory.ts +0 -9
- package/src/pagination/frontendDrivers/VueBaseViewDriver.ts +0 -28
- package/src/pagination/frontendDrivers/VuePaginationDriver.ts +0 -61
- package/src/pagination/index.ts +0 -46
- package/src/persistenceDrivers/LocalStorageDriver.ts +0 -22
- package/src/persistenceDrivers/NonPersistentDriver.ts +0 -12
- package/src/persistenceDrivers/SessionStorageDriver.ts +0 -22
- package/src/persistenceDrivers/index.ts +0 -8
- package/src/persistenceDrivers/types/PersistenceDriver.ts +0 -5
- package/src/requests/BaseRequest.ts +0 -321
- package/src/requests/ErrorHandler.ts +0 -144
- package/src/requests/RequestConcurrencyMode.enum.ts +0 -6
- package/src/requests/RequestErrorRouter.ts +0 -89
- package/src/requests/RequestEvents.enum.ts +0 -4
- package/src/requests/RequestMethod.enum.ts +0 -8
- package/src/requests/bodies/BinaryBody.ts +0 -31
- package/src/requests/bodies/FormDataBody.ts +0 -81
- package/src/requests/bodies/JsonBody.ts +0 -16
- package/src/requests/contracts/BaseRequestContract.ts +0 -39
- package/src/requests/contracts/BodyContract.ts +0 -9
- package/src/requests/contracts/BodyFactoryContract.ts +0 -5
- package/src/requests/contracts/DriverConfigContract.ts +0 -9
- package/src/requests/contracts/HeadersContract.ts +0 -9
- package/src/requests/contracts/RequestDriverContract.ts +0 -15
- package/src/requests/contracts/RequestLoaderContract.ts +0 -5
- package/src/requests/contracts/ResponseContract.ts +0 -7
- package/src/requests/drivers/contracts/ResponseHandlerContract.ts +0 -10
- package/src/requests/drivers/fetch/FetchDriver.ts +0 -115
- package/src/requests/drivers/fetch/FetchResponse.ts +0 -30
- package/src/requests/drivers/xhr/XMLHttpRequestDriver.ts +0 -138
- package/src/requests/drivers/xhr/XMLHttpRequestResponse.ts +0 -95
- package/src/requests/exceptions/BadGatewayException.ts +0 -3
- package/src/requests/exceptions/BadRequestException.ts +0 -3
- package/src/requests/exceptions/ConflictException.ts +0 -3
- package/src/requests/exceptions/ForbiddenException.ts +0 -3
- package/src/requests/exceptions/GatewayTimeoutException.ts +0 -3
- package/src/requests/exceptions/GoneException.ts +0 -3
- package/src/requests/exceptions/InvalidJsonException.ts +0 -15
- package/src/requests/exceptions/LockedException.ts +0 -3
- package/src/requests/exceptions/MethodNotAllowedException.ts +0 -3
- package/src/requests/exceptions/NotFoundException.ts +0 -3
- package/src/requests/exceptions/NotImplementedException.ts +0 -3
- package/src/requests/exceptions/PageExpiredException.ts +0 -3
- package/src/requests/exceptions/PayloadTooLargeException.ts +0 -3
- package/src/requests/exceptions/PreconditionFailedException.ts +0 -3
- package/src/requests/exceptions/RequestTimeoutException.ts +0 -3
- package/src/requests/exceptions/ResponseBodyException.ts +0 -15
- package/src/requests/exceptions/ResponseException.ts +0 -11
- package/src/requests/exceptions/ServerErrorException.ts +0 -3
- package/src/requests/exceptions/ServiceUnavailableException.ts +0 -3
- package/src/requests/exceptions/StaleResponseException.ts +0 -13
- package/src/requests/exceptions/TooManyRequestsException.ts +0 -3
- package/src/requests/exceptions/UnauthorizedException.ts +0 -3
- package/src/requests/exceptions/UnsupportedMediaTypeException.ts +0 -3
- package/src/requests/exceptions/ValidationException.ts +0 -3
- package/src/requests/exceptions/index.ts +0 -51
- package/src/requests/factories/BinaryBodyFactory.ts +0 -13
- package/src/requests/factories/FormDataFactory.ts +0 -17
- package/src/requests/factories/JsonBodyFactory.ts +0 -9
- package/src/requests/index.ts +0 -68
- package/src/requests/responses/BaseResponse.ts +0 -41
- package/src/requests/responses/BlobResponse.ts +0 -19
- package/src/requests/responses/JsonResponse.ts +0 -15
- package/src/requests/responses/PlainTextResponse.ts +0 -15
- package/src/requests/types/RequestUploadProgress.ts +0 -6
- package/src/support/DeferredPromise.ts +0 -67
- package/src/support/helpers.ts +0 -78
- package/src/vue/composables/useConfirmDialog.ts +0 -63
- package/src/vue/composables/useGlobalCheckbox.ts +0 -145
- package/src/vue/composables/useIsEmpty.ts +0 -34
- package/src/vue/composables/useIsOpen.ts +0 -37
- package/src/vue/composables/useIsOpenFromVar.ts +0 -61
- package/src/vue/composables/useModelWrapper.ts +0 -27
- package/src/vue/composables/useOnOpen.ts +0 -34
- package/src/vue/contracts/ModelValueProps.ts +0 -3
- package/src/vue/forms/BaseForm.ts +0 -1192
- package/src/vue/forms/PropertyAwareArray.ts +0 -81
- package/src/vue/forms/types/PersistedForm.ts +0 -6
- package/src/vue/forms/validation/ValidationMode.enum.ts +0 -14
- package/src/vue/forms/validation/index.ts +0 -15
- package/src/vue/forms/validation/rules/BaseRule.ts +0 -7
- package/src/vue/forms/validation/rules/ConfirmedRule.ts +0 -39
- package/src/vue/forms/validation/rules/EmailRule.ts +0 -23
- package/src/vue/forms/validation/rules/JsonRule.ts +0 -28
- package/src/vue/forms/validation/rules/MinRule.ts +0 -61
- package/src/vue/forms/validation/rules/RequiredRule.ts +0 -19
- package/src/vue/forms/validation/rules/UrlRule.ts +0 -24
- package/src/vue/forms/validation/types/ValidationRules.ts +0 -15
- package/src/vue/index.ts +0 -14
- package/src/vue/requests/factories/VueRequestLoaderFactory.ts +0 -10
- package/src/vue/requests/loaders/VueRequestBatchLoader.ts +0 -35
- package/src/vue/requests/loaders/VueRequestLoader.ts +0 -18
- package/src/vue/router/routeResourceBinding/RouteResourceBoundView.ts +0 -145
- package/src/vue/router/routeResourceBinding/RouteResourceRequestResolver.ts +0 -11
- package/src/vue/router/routeResourceBinding/defineRoute.ts +0 -59
- package/src/vue/router/routeResourceBinding/index.ts +0 -11
- package/src/vue/router/routeResourceBinding/installRouteInjection.ts +0 -164
- package/src/vue/router/routeResourceBinding/types.ts +0 -53
- package/src/vue/router/routeResourceBinding/useRouteResource.ts +0 -24
- package/src/vue/state/State.ts +0 -380
- package/src/vue/state/index.ts +0 -3
- package/tests/service/bulkRequests/BulkRequestSender.test.ts +0 -76
- package/tests/service/bulkRequests/BulkRequestWrapper.test.ts +0 -51
- package/tests/service/helpers/mergeDeep.test.ts +0 -53
- package/tests/service/laravel/pagination/dataDrivers/RequestDriver.test.ts +0 -84
- package/tests/service/laravel/requests/JsonBaseRequest.test.ts +0 -43
- package/tests/service/laravel/requests/PaginationJsonBaseRequest.test.ts +0 -58
- package/tests/service/laravel/requests/responses/JsonResponse.test.ts +0 -59
- package/tests/service/laravel/requests/responses/PaginationResponse.test.ts +0 -127
- package/tests/service/pagination/BasePaginator.test.ts +0 -100
- package/tests/service/pagination/InfiniteScroller.test.ts +0 -101
- package/tests/service/pagination/PageAwarePaginator.test.ts +0 -133
- package/tests/service/pagination/StatePaginator.test.ts +0 -76
- package/tests/service/pagination/VueViewDrivers.test.ts +0 -46
- package/tests/service/pagination/dtos/PaginationDataDto.test.ts +0 -35
- package/tests/service/pagination/dtos/StatePaginationDataDto.test.ts +0 -14
- package/tests/service/pagination/factories/VuePaginationDriverFactory.test.ts +0 -32
- package/tests/service/pagination/frontendDrivers/VuePaginationDriver.test.ts +0 -66
- package/tests/service/persistenceDrivers/PersistenceDrivers.test.ts +0 -56
- package/tests/service/requests/BaseRequest.test.ts +0 -250
- package/tests/service/requests/BodiesAndFactories.test.ts +0 -52
- package/tests/service/requests/Enums.test.ts +0 -20
- package/tests/service/requests/ErrorHandler.test.ts +0 -188
- package/tests/service/requests/FormDataBody.test.ts +0 -63
- package/tests/service/requests/RequestErrorRouter.test.ts +0 -44
- package/tests/service/requests/Responses.test.ts +0 -83
- package/tests/service/requests/exceptions/Exceptions.test.ts +0 -43
- package/tests/service/requests/fetch/FetchDriver.test.ts +0 -94
- package/tests/service/requests/fetch/FetchResponse.test.ts +0 -21
- package/tests/service/requests/xhr/XMLHttpRequestDriver.test.ts +0 -197
- package/tests/service/support/DeferredPromise.test.ts +0 -40
- package/tests/service/support/helpers.test.ts +0 -37
- package/tests/vue/composables/useConfirmDialog.test.ts +0 -77
- package/tests/vue/composables/useGlobalCheckbox.test.ts +0 -126
- package/tests/vue/composables/useIsEmpty.test.ts +0 -18
- package/tests/vue/composables/useIsOpen.test.ts +0 -25
- package/tests/vue/composables/useIsOpenFromVar.test.ts +0 -22
- package/tests/vue/composables/useModelWrapper.test.ts +0 -30
- package/tests/vue/composables/useOnOpen.test.ts +0 -26
- package/tests/vue/forms/BaseForm.behavior.test.ts +0 -98
- package/tests/vue/forms/BaseForm.transformers.test.ts +0 -109
- package/tests/vue/forms/PropertyAwareArray.test.ts +0 -30
- package/tests/vue/forms/validation/ValidationRules.test.ts +0 -79
- package/tests/vue/requests/VueRequestLoaders.test.ts +0 -48
- package/tests/vue/router/routeResourceBinding/RouteResourceBoundView.test.ts +0 -344
- package/tests/vue/router/routeResourceBinding/RouteResourceUtils.test.ts +0 -70
- package/tests/vue/router/routeResourceBinding/installRouteInjection.test.ts +0 -450
- package/tests/vue/state/State.test.ts +0 -151
- package/tsconfig.json +0 -114
- package/vite.config.ts +0 -34
- package/vitest.config.ts +0 -23
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# `useModelWrapper`
|
|
2
|
-
|
|
3
|
-
`useModelWrapper` is a small helper to implement `v-model` in components. It returns a computed ref that proxies the model value and emits the update event.
|
|
4
|
-
|
|
5
|
-
Deprecated: In Vue 3.4+, prefer `defineModel()` where possible. `useModelWrapper` remains available for legacy usage or when you need a callback on update.
|
|
6
|
-
|
|
7
|
-
## Example
|
|
8
|
-
|
|
9
|
-
```vue
|
|
10
|
-
<script setup lang="ts">
|
|
11
|
-
import { useModelWrapper } from '@blueprint-ts/core/vue'
|
|
12
|
-
|
|
13
|
-
const props = defineProps<{ modelValue: boolean }>()
|
|
14
|
-
const emit = defineEmits<{ (event: 'update:modelValue', value: boolean): void }>()
|
|
15
|
-
|
|
16
|
-
const model = useModelWrapper<boolean, typeof emit>(props, emit)
|
|
17
|
-
</script>
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
Using a custom model name:
|
|
21
|
-
|
|
22
|
-
```ts
|
|
23
|
-
const model = useModelWrapper<boolean, typeof emit>(props, emit, { name: 'open' })
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## Options
|
|
27
|
-
|
|
28
|
-
- `name` (default `modelValue`): the model prop/event name
|
|
29
|
-
- `callback` (optional): invoked with the new value after emitting the update event
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
# `useOnOpen`
|
|
2
|
-
|
|
3
|
-
`useOnOpen` lets you register callbacks that run when a boolean ref toggles from closed to open or vice versa.
|
|
4
|
-
|
|
5
|
-
## Example
|
|
6
|
-
|
|
7
|
-
```ts
|
|
8
|
-
import { useOnOpen } from '@blueprint-ts/core/vue'
|
|
9
|
-
import { ref } from 'vue'
|
|
10
|
-
|
|
11
|
-
const isOpen = ref(false)
|
|
12
|
-
const { onOpen, onClose } = useOnOpen(isOpen)
|
|
13
|
-
|
|
14
|
-
onOpen(() => {
|
|
15
|
-
// opened
|
|
16
|
-
})
|
|
17
|
-
|
|
18
|
-
onClose(() => {
|
|
19
|
-
// closed
|
|
20
|
-
})
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
## Notes
|
|
24
|
-
|
|
25
|
-
Callbacks are executed on the next tick after the value changes.
|
|
26
|
-
You can register multiple callbacks for both `onOpen` and `onClose`.
|
package/docs/vue/forms/arrays.md
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
# Arrays
|
|
2
|
-
|
|
3
|
-
## PropertyAwareArray
|
|
4
|
-
|
|
5
|
-
Use `PropertyAwareArray` for arrays with per-item `v-model`, errors, and dirty state when your array contains objects.
|
|
6
|
-
|
|
7
|
-
```ts
|
|
8
|
-
import { BaseForm, PropertyAwareArray } from '@blueprint-ts/core/vue/forms'
|
|
9
|
-
|
|
10
|
-
export interface FormWithPositions {
|
|
11
|
-
positions: PositionItem[]
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export class MyComplexForm extends BaseForm<RequestType, FormWithPositions> {
|
|
15
|
-
constructor() {
|
|
16
|
-
super({
|
|
17
|
-
positions: new PropertyAwareArray([{ id: 1, value: '' }])
|
|
18
|
-
})
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
public addPosition(): void {
|
|
22
|
-
this.addToArrayProperty('positions', {
|
|
23
|
-
id: this.properties.positions.length + 1,
|
|
24
|
-
value: ''
|
|
25
|
-
})
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
public removePosition(id: number): void {
|
|
29
|
-
this.removeArrayItem('positions', (position) => position.id !== id)
|
|
30
|
-
this.resetArrayCounter('positions', 'id')
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
Example component usage:
|
|
36
|
-
|
|
37
|
-
```vue
|
|
38
|
-
<template>
|
|
39
|
-
<div v-for="(position, index) in form.properties.positions" :key="index">
|
|
40
|
-
<input v-model="position.value.model.value" />
|
|
41
|
-
<div v-if="position.value.errors.length">{{ position.value.errors[0] }}</div>
|
|
42
|
-
<div v-if="position.value.dirty">Changed</div>
|
|
43
|
-
</div>
|
|
44
|
-
</template>
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
Nested error keys like `positions.0.value` map into `position.value.errors`.
|
|
48
|
-
|
|
49
|
-
## propertyAwareToRaw
|
|
50
|
-
|
|
51
|
-
`propertyAwareToRaw` converts a property-aware object (each field wrapped in `{ model: { value } }`) into a plain object by unwrapping every field's `model.value`. It is purely a transformation: metadata such as `errors`, `dirty`, and `touched` is dropped, while arrays and nested objects are processed recursively. Keys starting with `_` are omitted from the result, and arrays are mapped element-by-element via the same unwrapping.
|
|
52
|
-
|
|
53
|
-
### Input shape (property-aware)
|
|
54
|
-
|
|
55
|
-
```ts
|
|
56
|
-
const propertyAwarePosition = {
|
|
57
|
-
id: {
|
|
58
|
-
model: { value: 'pos-1' },
|
|
59
|
-
errors: [],
|
|
60
|
-
dirty: false,
|
|
61
|
-
touched: false
|
|
62
|
-
},
|
|
63
|
-
sort_order: {
|
|
64
|
-
model: { value: 10 },
|
|
65
|
-
errors: [],
|
|
66
|
-
dirty: false,
|
|
67
|
-
touched: false
|
|
68
|
-
},
|
|
69
|
-
description: {
|
|
70
|
-
model: { value: 'Service' },
|
|
71
|
-
errors: [],
|
|
72
|
-
dirty: false,
|
|
73
|
-
touched: false
|
|
74
|
-
},
|
|
75
|
-
net_amount: {
|
|
76
|
-
model: { value: 100 },
|
|
77
|
-
errors: [],
|
|
78
|
-
dirty: false,
|
|
79
|
-
touched: false
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
Note that this is only an example of how the input shape looks When used in a form the model is a WritableComputedRef.
|
|
85
|
-
|
|
86
|
-
### Output shape (raw)
|
|
87
|
-
|
|
88
|
-
```ts
|
|
89
|
-
const rawPosition = {
|
|
90
|
-
id: 'pos-1',
|
|
91
|
-
sort_order: 10,
|
|
92
|
-
description: 'Service',
|
|
93
|
-
net_amount: 100
|
|
94
|
-
}
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### Notes
|
|
98
|
-
|
|
99
|
-
- Arrays are mapped element-by-element.
|
|
100
|
-
- Nested objects are unwrapped recursively.
|
|
101
|
-
- Any keys starting with `_` are ignored.
|
|
102
|
-
- Only the `model.value` remains; form metadata is dropped.
|
package/docs/vue/forms/errors.md
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
# Errors
|
|
2
|
-
|
|
3
|
-
`BaseForm` maps validation errors to fields and exposes them on `properties.<field>.errors`.
|
|
4
|
-
|
|
5
|
-
## Filling External Errors
|
|
6
|
-
|
|
7
|
-
`fillErrors` is intended for server-side validation responses.
|
|
8
|
-
It overwrites any existing client-side validation errors.
|
|
9
|
-
|
|
10
|
-
### Expected Error Format
|
|
11
|
-
|
|
12
|
-
`fillErrors` expects an object where each key is a field path and each value is an array of messages. For example:
|
|
13
|
-
|
|
14
|
-
```json
|
|
15
|
-
{
|
|
16
|
-
"email": ["The email field is required."],
|
|
17
|
-
"positions.0.value": ["The value is invalid."]
|
|
18
|
-
}
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
If you provide a single string instead of an array, it will be assigned as-is, but the UI helpers assume arrays.
|
|
22
|
-
This format matches Laravel's validation error response and is currently the only supported format.
|
|
23
|
-
|
|
24
|
-
```ts
|
|
25
|
-
form.fillErrors(error.response.data.errors)
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
`fillErrors` supports:
|
|
29
|
-
- direct field keys (e.g. `email`)
|
|
30
|
-
- array dot notation where the 2nd segment is a numeric index (e.g. `positions.0.value`)
|
|
31
|
-
- remapping via `errorMap` (including mapping one server key to multiple fields)
|
|
32
|
-
|
|
33
|
-
## Checking For Errors
|
|
34
|
-
|
|
35
|
-
```ts
|
|
36
|
-
form.hasErrors()
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## Advanced Usage
|
|
40
|
-
|
|
41
|
-
### Mapping Server Errors
|
|
42
|
-
|
|
43
|
-
This is especially useful for appended fields that do not exist in your form state. See [Building Payloads – Appended Fields](/vue/forms/payloads#appended-fields).
|
|
44
|
-
|
|
45
|
-
Map server error keys to your form fields with `errorMap`:
|
|
46
|
-
|
|
47
|
-
```ts
|
|
48
|
-
protected override errorMap: { [serverKey: string]: string | string[] } = {
|
|
49
|
-
started_at: ['start_date', 'start_time'],
|
|
50
|
-
ended_at: ['end_date', 'end_time']
|
|
51
|
-
}
|
|
52
|
-
```
|
package/docs/vue/forms/index.md
DELETED
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
# BaseForm
|
|
2
|
-
|
|
3
|
-
`BaseForm` is a TypeScript base class for Vue forms that gives you:
|
|
4
|
-
- Type-safe form state
|
|
5
|
-
- Dirty and touched tracking
|
|
6
|
-
- Validation and error mapping
|
|
7
|
-
- Payload transformations
|
|
8
|
-
- Optional persistence
|
|
9
|
-
- Array helpers and file handling
|
|
10
|
-
|
|
11
|
-
**Getting Started**
|
|
12
|
-
|
|
13
|
-
Minimal form class:
|
|
14
|
-
|
|
15
|
-
```ts
|
|
16
|
-
import { BaseForm, type PersistenceDriver, SessionStorageDriver } from '@blueprint-ts/core/vue/forms'
|
|
17
|
-
import { RequiredRule, ValidationMode } from '@blueprint-ts/core/vue/forms/validation'
|
|
18
|
-
|
|
19
|
-
interface FormState {
|
|
20
|
-
name: string
|
|
21
|
-
email: string
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
interface RequestPayload {
|
|
25
|
-
name: string
|
|
26
|
-
email: string
|
|
27
|
-
timestamp: string
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export class MyForm extends BaseForm<RequestPayload, FormState> {
|
|
31
|
-
protected override append: string[] = ['timestamp']
|
|
32
|
-
protected override ignore: string[] = []
|
|
33
|
-
protected override errorMap: { [serverKey: string]: string | string[] } = {}
|
|
34
|
-
|
|
35
|
-
public constructor() {
|
|
36
|
-
super(
|
|
37
|
-
{ name: '', email: '' },
|
|
38
|
-
{ persist: true, persistSuffix: 'optional-suffix' }
|
|
39
|
-
)
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
protected override getPersistenceDriver(suffix?: string): PersistenceDriver {
|
|
43
|
-
return new SessionStorageDriver(suffix)
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
protected override defineRules() {
|
|
47
|
-
return {
|
|
48
|
-
name: { rules: [new RequiredRule<FormState>('Name is required')] },
|
|
49
|
-
email: {
|
|
50
|
-
rules: [new RequiredRule<FormState>('Email is required')],
|
|
51
|
-
options: { mode: ValidationMode.DEFAULT }
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
protected getTimestamp(): string {
|
|
57
|
-
return new Date().toISOString()
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
Component usage:
|
|
63
|
-
|
|
64
|
-
```vue
|
|
65
|
-
<template>
|
|
66
|
-
<form @submit.prevent="submitForm">
|
|
67
|
-
<div>
|
|
68
|
-
<label>Name</label>
|
|
69
|
-
<input v-model="form.properties.name.model.value" />
|
|
70
|
-
<div v-if="form.properties.name.errors.length" class="error">
|
|
71
|
-
{{ form.properties.name.errors[0] }}
|
|
72
|
-
</div>
|
|
73
|
-
</div>
|
|
74
|
-
|
|
75
|
-
<div>
|
|
76
|
-
<label>Email</label>
|
|
77
|
-
<input v-model="form.properties.email.model.value" />
|
|
78
|
-
<div v-if="form.properties.email.errors.length" class="error">
|
|
79
|
-
{{ form.properties.email.errors[0] }}
|
|
80
|
-
</div>
|
|
81
|
-
</div>
|
|
82
|
-
|
|
83
|
-
<button type="submit" :disabled="!form.isDirty()">Submit</button>
|
|
84
|
-
<button type="button" @click="form.reset()">Reset</button>
|
|
85
|
-
</form>
|
|
86
|
-
</template>
|
|
87
|
-
|
|
88
|
-
<script setup lang="ts">
|
|
89
|
-
import { MyForm } from './MyForm'
|
|
90
|
-
|
|
91
|
-
const form = new MyForm()
|
|
92
|
-
|
|
93
|
-
async function submitForm() {
|
|
94
|
-
if (!form.validate(true)) return
|
|
95
|
-
const payload = form.buildPayload()
|
|
96
|
-
await api.submitForm(payload)
|
|
97
|
-
}
|
|
98
|
-
</script>
|
|
99
|
-
```
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
# Building Payloads
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
Form fields often need to be transformed before sending them to the server. You can define getters on your form class, and `buildPayload()` will use them to convert values.
|
|
6
|
-
|
|
7
|
-
`buildPayload()` supports three getter patterns.
|
|
8
|
-
|
|
9
|
-
## Getters
|
|
10
|
-
|
|
11
|
-
### Field Getters
|
|
12
|
-
|
|
13
|
-
Field getters are for fields that directly exist in the form state as top level property. They receive the current field value and return the value that should be sent in the payload.
|
|
14
|
-
|
|
15
|
-
Naming scheme: `get${upperFirst(camelCase(fieldName))}`. For example, `name` becomes `getName`, `user_id` becomes `getUserId`.
|
|
16
|
-
|
|
17
|
-
```ts
|
|
18
|
-
protected getName(value: string): string {
|
|
19
|
-
return value.trim()
|
|
20
|
-
}
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
If the form stores an object but the API expects an ID:
|
|
24
|
-
|
|
25
|
-
```ts
|
|
26
|
-
protected getBusinessAssociateId(value: BusinessAssociateResource | null): string | null {
|
|
27
|
-
return value?.id ?? null
|
|
28
|
-
}
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
### Composite Getters For Nested Properties
|
|
32
|
-
|
|
33
|
-
Composite getters are used for nested properties when no top-level field getter exists. They receive the nested value and return the payload value.
|
|
34
|
-
|
|
35
|
-
Naming scheme: `get${upperFirst(parentFieldKey)}${upperFirst(camelCase(propName))}`.
|
|
36
|
-
|
|
37
|
-
Example: if `positions` is an array of objects and each entry has a `product` resource, use a composite getter so the returned value is sent instead of the full `ProductResource`.
|
|
38
|
-
|
|
39
|
-
Before:
|
|
40
|
-
|
|
41
|
-
```ts
|
|
42
|
-
positions: [
|
|
43
|
-
{
|
|
44
|
-
product: {
|
|
45
|
-
id: '123',
|
|
46
|
-
name: 'Example'
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
]
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
After:
|
|
53
|
-
|
|
54
|
-
```ts
|
|
55
|
-
positions: [
|
|
56
|
-
{
|
|
57
|
-
product: '123'
|
|
58
|
-
}
|
|
59
|
-
]
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
```ts
|
|
63
|
-
protected getPositionsProduct(value: ProductResource | null): number | null {
|
|
64
|
-
return value?.id ?? null
|
|
65
|
-
}
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
### Appended Fields
|
|
69
|
-
|
|
70
|
-
Sometimes your server expects fields that don’t exist as a single input in the form. For example, the API may expect a `started_at` datetime, while the form has `start_date` and `start_time` fields. In this case, use an appended field.
|
|
71
|
-
|
|
72
|
-
Define a getter with the same naming scheme as a field getter. Because the field does not exist in the form state, the getter receives no parameters, but you can access other values via `this.state`. Then add the field name (snake_case) to `append`. `buildPayload()` will call the getter and append the computed value to the payload.
|
|
73
|
-
|
|
74
|
-
```ts
|
|
75
|
-
protected override append: string[] = ['started_at']
|
|
76
|
-
|
|
77
|
-
protected getStartedAt(): string {
|
|
78
|
-
return DateTime.fromFormat(`${this.state.start_date} ${this.state.start_time}`, 'dd.MM.yyyy HH:mm').toISO()
|
|
79
|
-
}
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
## Ignoring Fields
|
|
83
|
-
|
|
84
|
-
You can exclude fields from the payload using `ignore`:
|
|
85
|
-
|
|
86
|
-
```ts
|
|
87
|
-
protected override ignore: string[] = ['internal_note']
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
Ignored fields are never added to the payload. This is especially useful with appended fields, where you can ignore the source fields (`start_date`, `start_time`) after computing a combined value like `started_at`.
|
|
91
|
-
|
|
92
|
-
## Omitting Fields
|
|
93
|
-
|
|
94
|
-
Omitting is similar to ignoring, but it is dynamic at runtime. If a getter returns `undefined`, that field is not added to the payload. If you return anything else, the field is included.
|
|
95
|
-
|
|
96
|
-
## Dates And Files
|
|
97
|
-
|
|
98
|
-
- `Date` values are treated as scalars and preserved.
|
|
99
|
-
- `File`/`Blob` values are treated as scalars and preserved. Send the payload using a multipart request.
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# Persistence
|
|
2
|
-
|
|
3
|
-
Persistence is enabled by default. Disable it via `super(defaults, { persist: false })`.
|
|
4
|
-
|
|
5
|
-
Example:
|
|
6
|
-
|
|
7
|
-
```ts
|
|
8
|
-
protected override getPersistenceDriver(suffix?: string): PersistenceDriver {
|
|
9
|
-
return new SessionStorageDriver(suffix)
|
|
10
|
-
}
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
See the Persistence service for available drivers and custom implementations: [Persistence](/services/persistence/).
|
|
14
|
-
|
|
15
|
-
Notes:
|
|
16
|
-
- `persistSuffix` is passed to `getPersistenceDriver(suffix)` for namespacing.
|
|
17
|
-
- Persisted state is reused only if the stored `original` matches your current defaults.
|
|
18
|
-
- `persist: false` disables automatic rehydration and background persistence.
|
|
19
|
-
- `File`/`Blob` values are not JSON-serializable and should use `{ persist: false }`.
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
# State And Properties
|
|
2
|
-
|
|
3
|
-
`BaseForm` tracks the original state and the current state of each field.
|
|
4
|
-
|
|
5
|
-
```ts
|
|
6
|
-
form.isDirty() // any field modified
|
|
7
|
-
form.isDirty('email') // specific field modified
|
|
8
|
-
|
|
9
|
-
form.touch('email')
|
|
10
|
-
form.isTouched('email')
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
**Properties**
|
|
14
|
-
|
|
15
|
-
`properties.<field>` exposes:
|
|
16
|
-
- `model` (a `ComputedRef` compatible with `v-model`)
|
|
17
|
-
- `errors` (array)
|
|
18
|
-
- `dirty` and `touched`
|
|
19
|
-
|
|
20
|
-
Example:
|
|
21
|
-
|
|
22
|
-
```vue
|
|
23
|
-
<input v-model="form.properties.email.model.value" />
|
|
24
|
-
<div v-if="form.properties.email.dirty">This field has been changed</div>
|
|
25
|
-
<div v-if="form.properties.email.errors.length">{{ form.properties.email.errors[0] }}</div>
|
|
26
|
-
```
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
# Utilities
|
|
2
|
-
|
|
3
|
-
Update multiple fields at once:
|
|
4
|
-
|
|
5
|
-
```ts
|
|
6
|
-
form.fillState({ name: 'John Doe', email: 'john@example.com' })
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
Synchronize a value without marking dirty:
|
|
10
|
-
|
|
11
|
-
```ts
|
|
12
|
-
form.syncValue('email', 'new@example.com')
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
Reset the form to its original state:
|
|
16
|
-
|
|
17
|
-
```ts
|
|
18
|
-
form.reset()
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
Convert `properties` back to raw data:
|
|
22
|
-
|
|
23
|
-
```ts
|
|
24
|
-
import { propertyAwareToRaw } from '@blueprint-ts/core/vue/forms'
|
|
25
|
-
|
|
26
|
-
const raw = propertyAwareToRaw<FormState>(form.properties)
|
|
27
|
-
```
|
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
# Validation
|
|
2
|
-
|
|
3
|
-
Define validation rules by overriding `defineRules()` in your form class.
|
|
4
|
-
|
|
5
|
-
Validation errors are exposed on `properties.<field>.errors`, as documented in [Errors](/vue/forms/errors).
|
|
6
|
-
|
|
7
|
-
## Available Rules
|
|
8
|
-
|
|
9
|
-
- `RequiredRule` — checks that the value is not `null`, `undefined`, or `''`
|
|
10
|
-
- `MinRule` — minimum length for strings/arrays or minimum value for numbers
|
|
11
|
-
- `ConfirmedRule` — validates that two fields match (e.g. password confirmation)
|
|
12
|
-
- `UrlRule` — validates that the value is a valid URL
|
|
13
|
-
- `EmailRule` — validates that the value is a valid email address
|
|
14
|
-
- `JsonRule` — validates that the value is valid JSON
|
|
15
|
-
|
|
16
|
-
All rules are exported from `@blueprint-ts/core/vue/forms/validation`.
|
|
17
|
-
|
|
18
|
-
## Validation Modes
|
|
19
|
-
|
|
20
|
-
Validation modes are bit flags. You can use the presets below or combine flags with `|`.
|
|
21
|
-
|
|
22
|
-
**Flags**
|
|
23
|
-
|
|
24
|
-
- `ValidationMode.NEVER` — never validate this field
|
|
25
|
-
- `ValidationMode.INSTANTLY` — validate immediately when the field is evaluated, even if not dirty/touched
|
|
26
|
-
- `ValidationMode.ON_TOUCH` — validate after the field is touched
|
|
27
|
-
- `ValidationMode.ON_DIRTY` — validate when the field becomes dirty
|
|
28
|
-
- `ValidationMode.ON_SUBMIT` — validate on submit
|
|
29
|
-
- `ValidationMode.ON_DEPENDENT_CHANGE` — validate when a dependent field changes
|
|
30
|
-
|
|
31
|
-
**Presets**
|
|
32
|
-
|
|
33
|
-
- `ValidationMode.DEFAULT` — `ON_TOUCH | ON_DIRTY | ON_SUBMIT`
|
|
34
|
-
- `ValidationMode.AGGRESSIVE` — `INSTANTLY | ON_TOUCH | ON_DIRTY | ON_SUBMIT`
|
|
35
|
-
- `ValidationMode.PASSIVE` — `ON_SUBMIT`
|
|
36
|
-
|
|
37
|
-
**Custom Combination**
|
|
38
|
-
|
|
39
|
-
```ts
|
|
40
|
-
options: { mode: ValidationMode.ON_TOUCH | ValidationMode.ON_SUBMIT }
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
**Internal vs External**
|
|
44
|
-
|
|
45
|
-
- Internal means validation runs from within `BaseForm` based on user interaction or dependencies.
|
|
46
|
-
- External means you explicitly trigger validation via `validate(true)`, typically on submit.
|
|
47
|
-
|
|
48
|
-
- Internal triggers: `INSTANTLY`, `ON_TOUCH`, `ON_DIRTY`, `ON_DEPENDENT_CHANGE`
|
|
49
|
-
- External trigger (`validate(true)`): `ON_SUBMIT` (and `PASSIVE` preset)
|
|
50
|
-
- `NEVER` disables validation entirely
|
|
51
|
-
|
|
52
|
-
Rules can declare dependencies via `rule.dependsOn = ['otherField']`. Some rules, such as `ConfirmedRule`, automatically set up bidirectional dependencies.
|
|
53
|
-
|
|
54
|
-
## Externally Triggering Validation
|
|
55
|
-
|
|
56
|
-
```ts
|
|
57
|
-
const ok = form.validate(true)
|
|
58
|
-
if (!ok) return
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
Some modes (notably `PASSIVE` / `ON_SUBMIT`) only validate when you trigger validation manually.
|
|
62
|
-
|
|
63
|
-
### How `validate(isSubmitting)` Behaves
|
|
64
|
-
|
|
65
|
-
- `validate(true)` enables `ON_SUBMIT` rules. Fields with `PASSIVE` mode will validate only here.
|
|
66
|
-
- `validate(false)` still validates fields that are currently dirty, touched, or set to `INSTANTLY`.
|
|
67
|
-
- `ValidationMode.NEVER` prevents validation in all cases, even during submit.
|
|
68
|
-
|
|
69
|
-
## Typing `defineRules`
|
|
70
|
-
|
|
71
|
-
Use `ValidationRules<FormBody>` for a concise, strongly-typed return type:
|
|
72
|
-
|
|
73
|
-
```ts
|
|
74
|
-
import { type ValidationRules } from '@blueprint-ts/core/vue/forms/validation'
|
|
75
|
-
|
|
76
|
-
protected override defineRules(): ValidationRules<MyFormBody> {
|
|
77
|
-
return {
|
|
78
|
-
// ...
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
## Custom Rules
|
|
84
|
-
|
|
85
|
-
Create your own rules by extending `BaseRule`:
|
|
86
|
-
|
|
87
|
-
```ts
|
|
88
|
-
import { BaseRule } from '@blueprint-ts/core/vue/forms/validation'
|
|
89
|
-
|
|
90
|
-
export class MaxRule<FormBody extends object> extends BaseRule<FormBody> {
|
|
91
|
-
public constructor(
|
|
92
|
-
protected max: number,
|
|
93
|
-
protected message: string = 'Value is too large'
|
|
94
|
-
) {
|
|
95
|
-
super()
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
public validate(value: unknown): boolean {
|
|
99
|
-
if (value === null || value === undefined) {
|
|
100
|
-
return true
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
if (typeof value === 'string') {
|
|
104
|
-
return value.length <= this.max
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
if (typeof value === 'number') {
|
|
108
|
-
return value <= this.max
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
if (Array.isArray(value)) {
|
|
112
|
-
return value.length <= this.max
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
return false
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
public getMessage(): string {
|
|
119
|
-
return this.message
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
If a rule depends on other fields, set `dependsOn` or implement bidirectional validation:
|
|
125
|
-
|
|
126
|
-
```ts
|
|
127
|
-
import { BaseRule } from '@blueprint-ts/core/vue/forms/validation'
|
|
128
|
-
import { type BidirectionalRule } from '@blueprint-ts/core/vue/forms/validation'
|
|
129
|
-
|
|
130
|
-
export class MatchesOtherRule<FormBody extends object> extends BaseRule<FormBody> implements BidirectionalRule {
|
|
131
|
-
public dependsOn: Array<keyof FormBody> = ['other']
|
|
132
|
-
|
|
133
|
-
public validate(value: unknown, state: FormBody): boolean {
|
|
134
|
-
return value === state['other' as keyof FormBody]
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
public getMessage(): string {
|
|
138
|
-
return 'Values do not match'
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
public getBidirectionalFields(): string[] {
|
|
142
|
-
return ['other']
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
## Example
|
|
148
|
-
|
|
149
|
-
```ts
|
|
150
|
-
import { BaseForm } from '@blueprint-ts/core/vue/forms'
|
|
151
|
-
import { ConfirmedRule, MinRule, RequiredRule, type ValidationRules } from '@blueprint-ts/core/vue/forms/validation'
|
|
152
|
-
|
|
153
|
-
export interface PinUpdateFormBody {
|
|
154
|
-
current_pin: string
|
|
155
|
-
new_pin: string
|
|
156
|
-
new_pin_confirmation: string
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
export class PinUpdateForm extends BaseForm<PinUpdateFormBody, PinUpdateFormBody> {
|
|
160
|
-
public constructor() {
|
|
161
|
-
super({
|
|
162
|
-
current_pin: '',
|
|
163
|
-
new_pin: '',
|
|
164
|
-
new_pin_confirmation: ''
|
|
165
|
-
})
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
protected override defineRules(): ValidationRules<PinUpdateFormBody> {
|
|
169
|
-
return {
|
|
170
|
-
current_pin: {
|
|
171
|
-
rules: [
|
|
172
|
-
new RequiredRule('This field is required.'),
|
|
173
|
-
new MinRule(4, 'This field must be at least 4 characters long.')
|
|
174
|
-
]
|
|
175
|
-
},
|
|
176
|
-
new_pin: {
|
|
177
|
-
rules: [
|
|
178
|
-
new RequiredRule('This field is required.'),
|
|
179
|
-
new MinRule(4, 'This field must be at least 4 characters long.'),
|
|
180
|
-
new ConfirmedRule('new_pin_confirmation', 'This field must match the confirmation.')
|
|
181
|
-
]
|
|
182
|
-
},
|
|
183
|
-
new_pin_confirmation: {
|
|
184
|
-
rules: [new RequiredRule('This field is required.')]
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
```
|