@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.
Files changed (509) hide show
  1. package/dist/bulkRequests/BulkRequestEvent.enum.d.ts +4 -0
  2. package/dist/bulkRequests/BulkRequestEvent.enum.js +5 -0
  3. package/dist/bulkRequests/BulkRequestSender.d.ts +31 -0
  4. package/dist/bulkRequests/BulkRequestSender.js +161 -0
  5. package/dist/bulkRequests/BulkRequestWrapper.d.ts +15 -0
  6. package/dist/bulkRequests/BulkRequestWrapper.js +50 -0
  7. package/dist/bulkRequests/index.d.ts +5 -0
  8. package/dist/bulkRequests/index.js +5 -0
  9. package/{src/laravel/pagination/contracts/PaginationResponseBodyContract.ts → dist/laravel/pagination/contracts/PaginationResponseBodyContract.d.ts} +4 -4
  10. package/dist/laravel/pagination/contracts/PaginationResponseBodyContract.js +1 -0
  11. package/dist/laravel/pagination/dataDrivers/RequestDriver.d.ts +10 -0
  12. package/dist/laravel/pagination/dataDrivers/RequestDriver.js +18 -0
  13. package/dist/laravel/pagination/index.d.ts +4 -0
  14. package/dist/laravel/pagination/index.js +2 -0
  15. package/dist/laravel/requests/JsonBaseRequest.d.ts +14 -0
  16. package/dist/laravel/requests/JsonBaseRequest.js +15 -0
  17. package/dist/laravel/requests/PaginationJsonBaseRequest.d.ts +8 -0
  18. package/dist/laravel/requests/PaginationJsonBaseRequest.js +13 -0
  19. package/dist/laravel/requests/index.d.ts +7 -0
  20. package/dist/laravel/requests/index.js +5 -0
  21. package/dist/laravel/requests/responses/JsonResponse.d.ts +5 -0
  22. package/dist/laravel/requests/responses/JsonResponse.js +6 -0
  23. package/dist/laravel/requests/responses/PaginationResponse.d.ts +7 -0
  24. package/dist/laravel/requests/responses/PaginationResponse.js +9 -0
  25. package/dist/pagination/BasePaginator.d.ts +19 -0
  26. package/dist/pagination/BasePaginator.js +65 -0
  27. package/dist/pagination/InfiniteScroller.d.ts +6 -0
  28. package/dist/pagination/InfiniteScroller.js +17 -0
  29. package/dist/pagination/PageAwarePaginator.d.ts +32 -0
  30. package/dist/pagination/PageAwarePaginator.js +86 -0
  31. package/dist/pagination/StatePaginator.d.ts +25 -0
  32. package/dist/pagination/StatePaginator.js +55 -0
  33. package/dist/pagination/contracts/BaseViewDriverContract.d.ts +6 -0
  34. package/dist/pagination/contracts/BaseViewDriverContract.js +1 -0
  35. package/{src/pagination/contracts/BaseViewDriverFactoryContract.ts → dist/pagination/contracts/BaseViewDriverFactoryContract.d.ts} +2 -3
  36. package/dist/pagination/contracts/BaseViewDriverFactoryContract.js +1 -0
  37. package/dist/pagination/contracts/PaginateableRequestContract.d.ts +4 -0
  38. package/dist/pagination/contracts/PaginateableRequestContract.js +1 -0
  39. package/dist/pagination/contracts/PaginationDataDriverContract.d.ts +4 -0
  40. package/dist/pagination/contracts/PaginationDataDriverContract.js +1 -0
  41. package/{src/pagination/contracts/PaginationResponseContract.ts → dist/pagination/contracts/PaginationResponseContract.d.ts} +3 -5
  42. package/dist/pagination/contracts/PaginationResponseContract.js +1 -0
  43. package/{src/pagination/contracts/PaginatorLoadDataOptions.ts → dist/pagination/contracts/PaginatorLoadDataOptions.d.ts} +2 -2
  44. package/dist/pagination/contracts/PaginatorLoadDataOptions.js +1 -0
  45. package/{src/pagination/contracts/StatePaginationDataDriverContract.ts → dist/pagination/contracts/StatePaginationDataDriverContract.d.ts} +2 -3
  46. package/dist/pagination/contracts/StatePaginationDataDriverContract.js +1 -0
  47. package/dist/pagination/contracts/ViewDriverContract.d.ts +9 -0
  48. package/dist/pagination/contracts/ViewDriverContract.js +1 -0
  49. package/dist/pagination/contracts/ViewDriverFactoryContract.d.ts +4 -0
  50. package/dist/pagination/contracts/ViewDriverFactoryContract.js +1 -0
  51. package/dist/pagination/dataDrivers/ArrayDriver.d.ts +9 -0
  52. package/dist/pagination/dataDrivers/ArrayDriver.js +20 -0
  53. package/dist/pagination/dtos/PaginationDataDto.d.ts +7 -0
  54. package/dist/pagination/dtos/PaginationDataDto.js +12 -0
  55. package/dist/pagination/dtos/StatePaginationDataDto.d.ts +7 -0
  56. package/dist/pagination/dtos/StatePaginationDataDto.js +13 -0
  57. package/dist/pagination/factories/VueBaseViewDriverFactory.d.ts +5 -0
  58. package/dist/pagination/factories/VueBaseViewDriverFactory.js +6 -0
  59. package/dist/pagination/factories/VuePaginationDriverFactory.d.ts +5 -0
  60. package/dist/pagination/factories/VuePaginationDriverFactory.js +6 -0
  61. package/dist/pagination/frontendDrivers/VueBaseViewDriver.d.ts +11 -0
  62. package/dist/pagination/frontendDrivers/VueBaseViewDriver.js +19 -0
  63. package/dist/pagination/frontendDrivers/VuePaginationDriver.d.ts +21 -0
  64. package/dist/pagination/frontendDrivers/VuePaginationDriver.js +41 -0
  65. package/dist/pagination/index.d.ts +22 -0
  66. package/dist/pagination/index.js +13 -0
  67. package/dist/persistenceDrivers/LocalStorageDriver.d.ts +9 -0
  68. package/dist/persistenceDrivers/LocalStorageDriver.js +18 -0
  69. package/dist/persistenceDrivers/NonPersistentDriver.d.ts +7 -0
  70. package/dist/persistenceDrivers/NonPersistentDriver.js +8 -0
  71. package/dist/persistenceDrivers/SessionStorageDriver.d.ts +9 -0
  72. package/dist/persistenceDrivers/SessionStorageDriver.js +18 -0
  73. package/dist/persistenceDrivers/index.d.ts +6 -0
  74. package/dist/persistenceDrivers/index.js +4 -0
  75. package/dist/persistenceDrivers/types/PersistenceDriver.d.ts +5 -0
  76. package/dist/persistenceDrivers/types/PersistenceDriver.js +1 -0
  77. package/dist/requests/BaseRequest.d.ts +62 -0
  78. package/dist/requests/BaseRequest.js +224 -0
  79. package/dist/requests/ErrorHandler.d.ts +11 -0
  80. package/dist/requests/ErrorHandler.js +127 -0
  81. package/dist/requests/RequestConcurrencyMode.enum.d.ts +6 -0
  82. package/dist/requests/RequestConcurrencyMode.enum.js +7 -0
  83. package/dist/requests/RequestErrorRouter.d.ts +38 -0
  84. package/dist/requests/RequestErrorRouter.js +38 -0
  85. package/dist/requests/RequestEvents.enum.d.ts +4 -0
  86. package/dist/requests/RequestEvents.enum.js +5 -0
  87. package/dist/requests/RequestMethod.enum.d.ts +8 -0
  88. package/dist/requests/RequestMethod.enum.js +9 -0
  89. package/dist/requests/bodies/BinaryBody.d.ts +10 -0
  90. package/dist/requests/bodies/BinaryBody.js +22 -0
  91. package/dist/requests/bodies/FormDataBody.d.ts +14 -0
  92. package/dist/requests/bodies/FormDataBody.js +60 -0
  93. package/dist/requests/bodies/JsonBody.d.ts +8 -0
  94. package/dist/requests/bodies/JsonBody.js +13 -0
  95. package/{src/requests/contracts/AbortableRequestContract.ts → dist/requests/contracts/AbortableRequestContract.d.ts} +1 -1
  96. package/dist/requests/contracts/AbortableRequestContract.js +1 -0
  97. package/dist/requests/contracts/BaseRequestContract.d.ts +23 -0
  98. package/dist/requests/contracts/BaseRequestContract.js +1 -0
  99. package/dist/requests/contracts/BodyContract.d.ts +6 -0
  100. package/dist/requests/contracts/BodyContract.js +1 -0
  101. package/dist/requests/contracts/BodyFactoryContract.d.ts +4 -0
  102. package/dist/requests/contracts/BodyFactoryContract.js +1 -0
  103. package/dist/requests/contracts/DriverConfigContract.d.ts +8 -0
  104. package/dist/requests/contracts/DriverConfigContract.js +1 -0
  105. package/dist/requests/contracts/HeadersContract.d.ts +7 -0
  106. package/dist/requests/contracts/HeadersContract.js +1 -0
  107. package/dist/requests/contracts/RequestDriverContract.d.ts +8 -0
  108. package/dist/requests/contracts/RequestDriverContract.js +1 -0
  109. package/dist/requests/contracts/RequestLoaderContract.d.ts +4 -0
  110. package/dist/requests/contracts/RequestLoaderContract.js +1 -0
  111. package/{src/requests/contracts/RequestLoaderFactoryContract.ts → dist/requests/contracts/RequestLoaderFactoryContract.d.ts} +2 -3
  112. package/dist/requests/contracts/RequestLoaderFactoryContract.js +1 -0
  113. package/dist/requests/contracts/ResponseContract.d.ts +5 -0
  114. package/dist/requests/contracts/ResponseContract.js +1 -0
  115. package/dist/requests/drivers/contracts/ResponseHandlerContract.d.ts +9 -0
  116. package/dist/requests/drivers/contracts/ResponseHandlerContract.js +1 -0
  117. package/dist/requests/drivers/fetch/FetchDriver.d.ts +26 -0
  118. package/dist/requests/drivers/fetch/FetchDriver.js +73 -0
  119. package/dist/requests/drivers/fetch/FetchResponse.d.ts +12 -0
  120. package/dist/requests/drivers/fetch/FetchResponse.js +38 -0
  121. package/dist/requests/drivers/xhr/XMLHttpRequestDriver.d.ts +13 -0
  122. package/dist/requests/drivers/xhr/XMLHttpRequestDriver.js +107 -0
  123. package/dist/requests/drivers/xhr/XMLHttpRequestResponse.d.ts +17 -0
  124. package/dist/requests/drivers/xhr/XMLHttpRequestResponse.js +84 -0
  125. package/dist/requests/exceptions/BadGatewayException.d.ts +3 -0
  126. package/dist/requests/exceptions/BadGatewayException.js +3 -0
  127. package/dist/requests/exceptions/BadRequestException.d.ts +3 -0
  128. package/dist/requests/exceptions/BadRequestException.js +3 -0
  129. package/dist/requests/exceptions/ConflictException.d.ts +3 -0
  130. package/dist/requests/exceptions/ConflictException.js +3 -0
  131. package/dist/requests/exceptions/ForbiddenException.d.ts +3 -0
  132. package/dist/requests/exceptions/ForbiddenException.js +3 -0
  133. package/dist/requests/exceptions/GatewayTimeoutException.d.ts +3 -0
  134. package/dist/requests/exceptions/GatewayTimeoutException.js +3 -0
  135. package/dist/requests/exceptions/GoneException.d.ts +3 -0
  136. package/dist/requests/exceptions/GoneException.js +3 -0
  137. package/dist/requests/exceptions/InvalidJsonException.d.ts +7 -0
  138. package/dist/requests/exceptions/InvalidJsonException.js +10 -0
  139. package/dist/requests/exceptions/LockedException.d.ts +3 -0
  140. package/dist/requests/exceptions/LockedException.js +3 -0
  141. package/dist/requests/exceptions/MethodNotAllowedException.d.ts +3 -0
  142. package/dist/requests/exceptions/MethodNotAllowedException.js +3 -0
  143. package/dist/requests/exceptions/NoResponseReceivedException.d.ts +3 -0
  144. package/{src/requests/exceptions/NoResponseReceivedException.ts → dist/requests/exceptions/NoResponseReceivedException.js} +3 -3
  145. package/dist/requests/exceptions/NotFoundException.d.ts +3 -0
  146. package/dist/requests/exceptions/NotFoundException.js +3 -0
  147. package/dist/requests/exceptions/NotImplementedException.d.ts +3 -0
  148. package/dist/requests/exceptions/NotImplementedException.js +3 -0
  149. package/dist/requests/exceptions/PageExpiredException.d.ts +3 -0
  150. package/dist/requests/exceptions/PageExpiredException.js +3 -0
  151. package/dist/requests/exceptions/PayloadTooLargeException.d.ts +3 -0
  152. package/dist/requests/exceptions/PayloadTooLargeException.js +3 -0
  153. package/dist/requests/exceptions/PreconditionFailedException.d.ts +3 -0
  154. package/dist/requests/exceptions/PreconditionFailedException.js +3 -0
  155. package/dist/requests/exceptions/RequestTimeoutException.d.ts +3 -0
  156. package/dist/requests/exceptions/RequestTimeoutException.js +3 -0
  157. package/dist/requests/exceptions/ResponseBodyException.d.ts +7 -0
  158. package/dist/requests/exceptions/ResponseBodyException.js +10 -0
  159. package/dist/requests/exceptions/ResponseException.d.ts +6 -0
  160. package/dist/requests/exceptions/ResponseException.js +9 -0
  161. package/dist/requests/exceptions/ServerErrorException.d.ts +3 -0
  162. package/dist/requests/exceptions/ServerErrorException.js +3 -0
  163. package/dist/requests/exceptions/ServiceUnavailableException.d.ts +3 -0
  164. package/dist/requests/exceptions/ServiceUnavailableException.js +3 -0
  165. package/dist/requests/exceptions/StaleResponseException.d.ts +5 -0
  166. package/dist/requests/exceptions/StaleResponseException.js +10 -0
  167. package/dist/requests/exceptions/TooManyRequestsException.d.ts +3 -0
  168. package/dist/requests/exceptions/TooManyRequestsException.js +3 -0
  169. package/dist/requests/exceptions/UnauthorizedException.d.ts +3 -0
  170. package/dist/requests/exceptions/UnauthorizedException.js +3 -0
  171. package/dist/requests/exceptions/UnsupportedMediaTypeException.d.ts +3 -0
  172. package/dist/requests/exceptions/UnsupportedMediaTypeException.js +3 -0
  173. package/dist/requests/exceptions/ValidationException.d.ts +3 -0
  174. package/dist/requests/exceptions/ValidationException.js +3 -0
  175. package/dist/requests/exceptions/index.d.ts +25 -0
  176. package/dist/requests/exceptions/index.js +25 -0
  177. package/dist/requests/factories/BinaryBodyFactory.d.ts +8 -0
  178. package/dist/requests/factories/BinaryBodyFactory.js +9 -0
  179. package/dist/requests/factories/FormDataFactory.d.ts +12 -0
  180. package/dist/requests/factories/FormDataFactory.js +6 -0
  181. package/dist/requests/factories/JsonBodyFactory.d.ts +5 -0
  182. package/dist/requests/factories/JsonBodyFactory.js +6 -0
  183. package/dist/requests/index.d.ts +31 -0
  184. package/dist/requests/index.js +19 -0
  185. package/dist/requests/responses/BaseResponse.d.ts +14 -0
  186. package/dist/requests/responses/BaseResponse.js +36 -0
  187. package/dist/requests/responses/BlobResponse.d.ts +7 -0
  188. package/dist/requests/responses/BlobResponse.js +16 -0
  189. package/dist/requests/responses/JsonResponse.d.ts +5 -0
  190. package/dist/requests/responses/JsonResponse.js +12 -0
  191. package/dist/requests/responses/PlainTextResponse.d.ts +5 -0
  192. package/dist/requests/responses/PlainTextResponse.js +12 -0
  193. package/{src/requests/types/RequestConcurrencyOptions.ts → dist/requests/types/RequestConcurrencyOptions.d.ts} +4 -5
  194. package/dist/requests/types/RequestConcurrencyOptions.js +1 -0
  195. package/dist/requests/types/RequestUploadProgress.d.ts +6 -0
  196. package/dist/requests/types/RequestUploadProgress.js +1 -0
  197. package/dist/support/DeferredPromise.d.ts +37 -0
  198. package/dist/support/DeferredPromise.js +55 -0
  199. package/dist/support/helpers.d.ts +5 -0
  200. package/dist/support/helpers.js +69 -0
  201. package/{src/support/index.ts → dist/support/index.d.ts} +3 -4
  202. package/dist/support/index.js +3 -0
  203. package/dist/vue/composables/useConfirmDialog.d.ts +20 -0
  204. package/dist/vue/composables/useConfirmDialog.js +52 -0
  205. package/dist/vue/composables/useGlobalCheckbox.d.ts +13 -0
  206. package/dist/vue/composables/useGlobalCheckbox.js +123 -0
  207. package/dist/vue/composables/useIsEmpty.d.ts +4 -0
  208. package/dist/vue/composables/useIsEmpty.js +27 -0
  209. package/dist/vue/composables/useIsOpen.d.ts +5 -0
  210. package/dist/vue/composables/useIsOpen.js +25 -0
  211. package/dist/vue/composables/useIsOpenFromVar.d.ts +6 -0
  212. package/dist/vue/composables/useIsOpenFromVar.js +45 -0
  213. package/dist/vue/composables/useModelWrapper.d.ts +9 -0
  214. package/dist/vue/composables/useModelWrapper.js +18 -0
  215. package/dist/vue/composables/useOnOpen.d.ts +7 -0
  216. package/dist/vue/composables/useOnOpen.js +25 -0
  217. package/{src/vue/contracts/ModelValueOptions.ts → dist/vue/contracts/ModelValueOptions.d.ts} +1 -1
  218. package/dist/vue/contracts/ModelValueOptions.js +1 -0
  219. package/dist/vue/contracts/ModelValueProps.d.ts +3 -0
  220. package/dist/vue/contracts/ModelValueProps.js +1 -0
  221. package/dist/vue/forms/BaseForm.d.ts +162 -0
  222. package/dist/vue/forms/BaseForm.js +997 -0
  223. package/dist/vue/forms/PropertyAwareArray.d.ts +53 -0
  224. package/dist/vue/forms/PropertyAwareArray.js +54 -0
  225. package/{src/vue/forms/index.ts → dist/vue/forms/index.d.ts} +9 -11
  226. package/dist/vue/forms/index.js +6 -0
  227. package/dist/vue/forms/types/PersistedForm.d.ts +6 -0
  228. package/dist/vue/forms/types/PersistedForm.js +1 -0
  229. package/dist/vue/forms/validation/ValidationMode.enum.d.ts +11 -0
  230. package/dist/vue/forms/validation/ValidationMode.enum.js +14 -0
  231. package/dist/vue/forms/validation/index.d.ts +12 -0
  232. package/dist/vue/forms/validation/index.js +9 -0
  233. package/dist/vue/forms/validation/rules/BaseRule.d.ts +5 -0
  234. package/dist/vue/forms/validation/rules/BaseRule.js +5 -0
  235. package/dist/vue/forms/validation/rules/ConfirmedRule.d.ts +10 -0
  236. package/dist/vue/forms/validation/rules/ConfirmedRule.js +26 -0
  237. package/dist/vue/forms/validation/rules/EmailRule.d.ts +7 -0
  238. package/dist/vue/forms/validation/rules/EmailRule.js +19 -0
  239. package/dist/vue/forms/validation/rules/JsonRule.d.ts +7 -0
  240. package/dist/vue/forms/validation/rules/JsonRule.js +25 -0
  241. package/dist/vue/forms/validation/rules/MinRule.d.ts +26 -0
  242. package/dist/vue/forms/validation/rules/MinRule.js +52 -0
  243. package/dist/vue/forms/validation/rules/RequiredRule.d.ts +7 -0
  244. package/dist/vue/forms/validation/rules/RequiredRule.js +16 -0
  245. package/dist/vue/forms/validation/rules/UrlRule.d.ts +7 -0
  246. package/dist/vue/forms/validation/rules/UrlRule.js +22 -0
  247. package/{src/vue/forms/validation/types/BidirectionalRule.ts → dist/vue/forms/validation/types/BidirectionalRule.d.ts} +4 -4
  248. package/dist/vue/forms/validation/types/BidirectionalRule.js +1 -0
  249. package/dist/vue/forms/validation/types/ValidationRules.d.ts +11 -0
  250. package/dist/vue/forms/validation/types/ValidationRules.js +1 -0
  251. package/dist/vue/index.d.ts +11 -0
  252. package/dist/vue/index.js +10 -0
  253. package/dist/vue/requests/factories/VueRequestLoaderFactory.d.ts +6 -0
  254. package/dist/vue/requests/factories/VueRequestLoaderFactory.js +6 -0
  255. package/{src/vue/requests/index.ts → dist/vue/requests/index.d.ts} +4 -5
  256. package/dist/vue/requests/index.js +4 -0
  257. package/dist/vue/requests/loaders/VueRequestBatchLoader.d.ts +12 -0
  258. package/dist/vue/requests/loaders/VueRequestBatchLoader.js +29 -0
  259. package/dist/vue/requests/loaders/VueRequestLoader.d.ts +8 -0
  260. package/dist/vue/requests/loaders/VueRequestLoader.js +12 -0
  261. package/dist/vue/router/routeResourceBinding/RouteResourceBoundView.d.ts +57 -0
  262. package/dist/vue/router/routeResourceBinding/RouteResourceBoundView.js +135 -0
  263. package/dist/vue/router/routeResourceBinding/RouteResourceRequestResolver.d.ts +6 -0
  264. package/dist/vue/router/routeResourceBinding/RouteResourceRequestResolver.js +20 -0
  265. package/dist/vue/router/routeResourceBinding/defineRoute.d.ts +23 -0
  266. package/dist/vue/router/routeResourceBinding/defineRoute.js +42 -0
  267. package/dist/vue/router/routeResourceBinding/index.d.ts +8 -0
  268. package/dist/vue/router/routeResourceBinding/index.js +6 -0
  269. package/dist/vue/router/routeResourceBinding/installRouteInjection.d.ts +14 -0
  270. package/dist/vue/router/routeResourceBinding/installRouteInjection.js +133 -0
  271. package/dist/vue/router/routeResourceBinding/types.d.ts +55 -0
  272. package/dist/vue/router/routeResourceBinding/types.js +1 -0
  273. package/dist/vue/router/routeResourceBinding/useRouteResource.d.ts +8 -0
  274. package/dist/vue/router/routeResourceBinding/useRouteResource.js +29 -0
  275. package/dist/vue/state/State.d.ts +75 -0
  276. package/dist/vue/state/State.js +267 -0
  277. package/dist/vue/state/index.d.ts +2 -0
  278. package/dist/vue/state/index.js +2 -0
  279. package/package.json +81 -23
  280. package/.editorconfig +0 -508
  281. package/.eslintrc.cjs +0 -15
  282. package/.prettierrc.json +0 -8
  283. package/CHANGELOG.md +0 -226
  284. package/docker-compose.yaml +0 -8
  285. package/docs/.vitepress/config.ts +0 -124
  286. package/docs/index.md +0 -13
  287. package/docs/laravel/pagination.md +0 -67
  288. package/docs/laravel/requests.md +0 -62
  289. package/docs/services/pagination/index.md +0 -46
  290. package/docs/services/pagination/infinite-scroller.md +0 -20
  291. package/docs/services/pagination/page-aware.md +0 -51
  292. package/docs/services/pagination/state-pagination.md +0 -77
  293. package/docs/services/pagination/updating-rows.md +0 -52
  294. package/docs/services/persistence/index.md +0 -46
  295. package/docs/services/requests/abort-requests.md +0 -29
  296. package/docs/services/requests/bulk-requests.md +0 -70
  297. package/docs/services/requests/concurrency.md +0 -58
  298. package/docs/services/requests/drivers.md +0 -115
  299. package/docs/services/requests/error-handling.md +0 -153
  300. package/docs/services/requests/events.md +0 -53
  301. package/docs/services/requests/file-uploads.md +0 -168
  302. package/docs/services/requests/getting-started.md +0 -201
  303. package/docs/services/requests/headers.md +0 -40
  304. package/docs/services/requests/loading.md +0 -63
  305. package/docs/services/requests/request-bodies.md +0 -89
  306. package/docs/services/requests/responses.md +0 -34
  307. package/docs/services/support/deferred-promise.md +0 -63
  308. package/docs/services/support/helpers.md +0 -77
  309. package/docs/services/support/index.md +0 -6
  310. package/docs/upgrading/v1-to-v2.md +0 -64
  311. package/docs/upgrading/v2-to-v3.md +0 -52
  312. package/docs/upgrading/v3-to-v4.md +0 -214
  313. package/docs/upgrading.md +0 -0
  314. package/docs/vue/composables/use-confirm-dialog.md +0 -96
  315. package/docs/vue/composables/use-global-checkbox.md +0 -73
  316. package/docs/vue/composables/use-is-empty.md +0 -26
  317. package/docs/vue/composables/use-is-open-from-var.md +0 -32
  318. package/docs/vue/composables/use-is-open.md +0 -28
  319. package/docs/vue/composables/use-model-wrapper.md +0 -29
  320. package/docs/vue/composables/use-on-open.md +0 -26
  321. package/docs/vue/forms/arrays.md +0 -102
  322. package/docs/vue/forms/errors.md +0 -52
  323. package/docs/vue/forms/index.md +0 -99
  324. package/docs/vue/forms/payloads.md +0 -99
  325. package/docs/vue/forms/persistence.md +0 -19
  326. package/docs/vue/forms/state-and-properties.md +0 -26
  327. package/docs/vue/forms/utilities.md +0 -27
  328. package/docs/vue/forms/validation.md +0 -189
  329. package/docs/vue/requests/loading.md +0 -51
  330. package/docs/vue/router/route-resource-binding.md +0 -240
  331. package/docs/vue/state.md +0 -309
  332. package/env.d.ts +0 -1
  333. package/eslint.config.js +0 -15
  334. package/release-tool.json +0 -26
  335. package/src/bulkRequests/BulkRequestEvent.enum.ts +0 -4
  336. package/src/bulkRequests/BulkRequestSender.ts +0 -196
  337. package/src/bulkRequests/BulkRequestWrapper.ts +0 -49
  338. package/src/bulkRequests/index.ts +0 -6
  339. package/src/laravel/pagination/dataDrivers/RequestDriver.ts +0 -30
  340. package/src/laravel/pagination/index.ts +0 -6
  341. package/src/laravel/requests/JsonBaseRequest.ts +0 -35
  342. package/src/laravel/requests/PaginationJsonBaseRequest.ts +0 -29
  343. package/src/laravel/requests/index.ts +0 -9
  344. package/src/laravel/requests/responses/JsonResponse.ts +0 -8
  345. package/src/laravel/requests/responses/PaginationResponse.ts +0 -16
  346. package/src/pagination/BasePaginator.ts +0 -94
  347. package/src/pagination/InfiniteScroller.ts +0 -22
  348. package/src/pagination/PageAwarePaginator.ts +0 -132
  349. package/src/pagination/StatePaginator.ts +0 -86
  350. package/src/pagination/contracts/BaseViewDriverContract.ts +0 -6
  351. package/src/pagination/contracts/PaginateableRequestContract.ts +0 -13
  352. package/src/pagination/contracts/PaginationDataDriverContract.ts +0 -5
  353. package/src/pagination/contracts/ViewDriverContract.ts +0 -10
  354. package/src/pagination/contracts/ViewDriverFactoryContract.ts +0 -5
  355. package/src/pagination/dataDrivers/ArrayDriver.ts +0 -28
  356. package/src/pagination/dtos/PaginationDataDto.ts +0 -14
  357. package/src/pagination/dtos/StatePaginationDataDto.ts +0 -19
  358. package/src/pagination/factories/VueBaseViewDriverFactory.ts +0 -9
  359. package/src/pagination/factories/VuePaginationDriverFactory.ts +0 -9
  360. package/src/pagination/frontendDrivers/VueBaseViewDriver.ts +0 -28
  361. package/src/pagination/frontendDrivers/VuePaginationDriver.ts +0 -61
  362. package/src/pagination/index.ts +0 -46
  363. package/src/persistenceDrivers/LocalStorageDriver.ts +0 -22
  364. package/src/persistenceDrivers/NonPersistentDriver.ts +0 -12
  365. package/src/persistenceDrivers/SessionStorageDriver.ts +0 -22
  366. package/src/persistenceDrivers/index.ts +0 -8
  367. package/src/persistenceDrivers/types/PersistenceDriver.ts +0 -5
  368. package/src/requests/BaseRequest.ts +0 -321
  369. package/src/requests/ErrorHandler.ts +0 -144
  370. package/src/requests/RequestConcurrencyMode.enum.ts +0 -6
  371. package/src/requests/RequestErrorRouter.ts +0 -89
  372. package/src/requests/RequestEvents.enum.ts +0 -4
  373. package/src/requests/RequestMethod.enum.ts +0 -8
  374. package/src/requests/bodies/BinaryBody.ts +0 -31
  375. package/src/requests/bodies/FormDataBody.ts +0 -81
  376. package/src/requests/bodies/JsonBody.ts +0 -16
  377. package/src/requests/contracts/BaseRequestContract.ts +0 -39
  378. package/src/requests/contracts/BodyContract.ts +0 -9
  379. package/src/requests/contracts/BodyFactoryContract.ts +0 -5
  380. package/src/requests/contracts/DriverConfigContract.ts +0 -9
  381. package/src/requests/contracts/HeadersContract.ts +0 -9
  382. package/src/requests/contracts/RequestDriverContract.ts +0 -15
  383. package/src/requests/contracts/RequestLoaderContract.ts +0 -5
  384. package/src/requests/contracts/ResponseContract.ts +0 -7
  385. package/src/requests/drivers/contracts/ResponseHandlerContract.ts +0 -10
  386. package/src/requests/drivers/fetch/FetchDriver.ts +0 -115
  387. package/src/requests/drivers/fetch/FetchResponse.ts +0 -30
  388. package/src/requests/drivers/xhr/XMLHttpRequestDriver.ts +0 -138
  389. package/src/requests/drivers/xhr/XMLHttpRequestResponse.ts +0 -95
  390. package/src/requests/exceptions/BadGatewayException.ts +0 -3
  391. package/src/requests/exceptions/BadRequestException.ts +0 -3
  392. package/src/requests/exceptions/ConflictException.ts +0 -3
  393. package/src/requests/exceptions/ForbiddenException.ts +0 -3
  394. package/src/requests/exceptions/GatewayTimeoutException.ts +0 -3
  395. package/src/requests/exceptions/GoneException.ts +0 -3
  396. package/src/requests/exceptions/InvalidJsonException.ts +0 -15
  397. package/src/requests/exceptions/LockedException.ts +0 -3
  398. package/src/requests/exceptions/MethodNotAllowedException.ts +0 -3
  399. package/src/requests/exceptions/NotFoundException.ts +0 -3
  400. package/src/requests/exceptions/NotImplementedException.ts +0 -3
  401. package/src/requests/exceptions/PageExpiredException.ts +0 -3
  402. package/src/requests/exceptions/PayloadTooLargeException.ts +0 -3
  403. package/src/requests/exceptions/PreconditionFailedException.ts +0 -3
  404. package/src/requests/exceptions/RequestTimeoutException.ts +0 -3
  405. package/src/requests/exceptions/ResponseBodyException.ts +0 -15
  406. package/src/requests/exceptions/ResponseException.ts +0 -11
  407. package/src/requests/exceptions/ServerErrorException.ts +0 -3
  408. package/src/requests/exceptions/ServiceUnavailableException.ts +0 -3
  409. package/src/requests/exceptions/StaleResponseException.ts +0 -13
  410. package/src/requests/exceptions/TooManyRequestsException.ts +0 -3
  411. package/src/requests/exceptions/UnauthorizedException.ts +0 -3
  412. package/src/requests/exceptions/UnsupportedMediaTypeException.ts +0 -3
  413. package/src/requests/exceptions/ValidationException.ts +0 -3
  414. package/src/requests/exceptions/index.ts +0 -51
  415. package/src/requests/factories/BinaryBodyFactory.ts +0 -13
  416. package/src/requests/factories/FormDataFactory.ts +0 -17
  417. package/src/requests/factories/JsonBodyFactory.ts +0 -9
  418. package/src/requests/index.ts +0 -68
  419. package/src/requests/responses/BaseResponse.ts +0 -41
  420. package/src/requests/responses/BlobResponse.ts +0 -19
  421. package/src/requests/responses/JsonResponse.ts +0 -15
  422. package/src/requests/responses/PlainTextResponse.ts +0 -15
  423. package/src/requests/types/RequestUploadProgress.ts +0 -6
  424. package/src/support/DeferredPromise.ts +0 -67
  425. package/src/support/helpers.ts +0 -78
  426. package/src/vue/composables/useConfirmDialog.ts +0 -63
  427. package/src/vue/composables/useGlobalCheckbox.ts +0 -145
  428. package/src/vue/composables/useIsEmpty.ts +0 -34
  429. package/src/vue/composables/useIsOpen.ts +0 -37
  430. package/src/vue/composables/useIsOpenFromVar.ts +0 -61
  431. package/src/vue/composables/useModelWrapper.ts +0 -27
  432. package/src/vue/composables/useOnOpen.ts +0 -34
  433. package/src/vue/contracts/ModelValueProps.ts +0 -3
  434. package/src/vue/forms/BaseForm.ts +0 -1192
  435. package/src/vue/forms/PropertyAwareArray.ts +0 -81
  436. package/src/vue/forms/types/PersistedForm.ts +0 -6
  437. package/src/vue/forms/validation/ValidationMode.enum.ts +0 -14
  438. package/src/vue/forms/validation/index.ts +0 -15
  439. package/src/vue/forms/validation/rules/BaseRule.ts +0 -7
  440. package/src/vue/forms/validation/rules/ConfirmedRule.ts +0 -39
  441. package/src/vue/forms/validation/rules/EmailRule.ts +0 -23
  442. package/src/vue/forms/validation/rules/JsonRule.ts +0 -28
  443. package/src/vue/forms/validation/rules/MinRule.ts +0 -61
  444. package/src/vue/forms/validation/rules/RequiredRule.ts +0 -19
  445. package/src/vue/forms/validation/rules/UrlRule.ts +0 -24
  446. package/src/vue/forms/validation/types/ValidationRules.ts +0 -15
  447. package/src/vue/index.ts +0 -14
  448. package/src/vue/requests/factories/VueRequestLoaderFactory.ts +0 -10
  449. package/src/vue/requests/loaders/VueRequestBatchLoader.ts +0 -35
  450. package/src/vue/requests/loaders/VueRequestLoader.ts +0 -18
  451. package/src/vue/router/routeResourceBinding/RouteResourceBoundView.ts +0 -145
  452. package/src/vue/router/routeResourceBinding/RouteResourceRequestResolver.ts +0 -11
  453. package/src/vue/router/routeResourceBinding/defineRoute.ts +0 -59
  454. package/src/vue/router/routeResourceBinding/index.ts +0 -11
  455. package/src/vue/router/routeResourceBinding/installRouteInjection.ts +0 -164
  456. package/src/vue/router/routeResourceBinding/types.ts +0 -53
  457. package/src/vue/router/routeResourceBinding/useRouteResource.ts +0 -24
  458. package/src/vue/state/State.ts +0 -380
  459. package/src/vue/state/index.ts +0 -3
  460. package/tests/service/bulkRequests/BulkRequestSender.test.ts +0 -76
  461. package/tests/service/bulkRequests/BulkRequestWrapper.test.ts +0 -51
  462. package/tests/service/helpers/mergeDeep.test.ts +0 -53
  463. package/tests/service/laravel/pagination/dataDrivers/RequestDriver.test.ts +0 -84
  464. package/tests/service/laravel/requests/JsonBaseRequest.test.ts +0 -43
  465. package/tests/service/laravel/requests/PaginationJsonBaseRequest.test.ts +0 -58
  466. package/tests/service/laravel/requests/responses/JsonResponse.test.ts +0 -59
  467. package/tests/service/laravel/requests/responses/PaginationResponse.test.ts +0 -127
  468. package/tests/service/pagination/BasePaginator.test.ts +0 -100
  469. package/tests/service/pagination/InfiniteScroller.test.ts +0 -101
  470. package/tests/service/pagination/PageAwarePaginator.test.ts +0 -133
  471. package/tests/service/pagination/StatePaginator.test.ts +0 -76
  472. package/tests/service/pagination/VueViewDrivers.test.ts +0 -46
  473. package/tests/service/pagination/dtos/PaginationDataDto.test.ts +0 -35
  474. package/tests/service/pagination/dtos/StatePaginationDataDto.test.ts +0 -14
  475. package/tests/service/pagination/factories/VuePaginationDriverFactory.test.ts +0 -32
  476. package/tests/service/pagination/frontendDrivers/VuePaginationDriver.test.ts +0 -66
  477. package/tests/service/persistenceDrivers/PersistenceDrivers.test.ts +0 -56
  478. package/tests/service/requests/BaseRequest.test.ts +0 -250
  479. package/tests/service/requests/BodiesAndFactories.test.ts +0 -52
  480. package/tests/service/requests/Enums.test.ts +0 -20
  481. package/tests/service/requests/ErrorHandler.test.ts +0 -188
  482. package/tests/service/requests/FormDataBody.test.ts +0 -63
  483. package/tests/service/requests/RequestErrorRouter.test.ts +0 -44
  484. package/tests/service/requests/Responses.test.ts +0 -83
  485. package/tests/service/requests/exceptions/Exceptions.test.ts +0 -43
  486. package/tests/service/requests/fetch/FetchDriver.test.ts +0 -94
  487. package/tests/service/requests/fetch/FetchResponse.test.ts +0 -21
  488. package/tests/service/requests/xhr/XMLHttpRequestDriver.test.ts +0 -197
  489. package/tests/service/support/DeferredPromise.test.ts +0 -40
  490. package/tests/service/support/helpers.test.ts +0 -37
  491. package/tests/vue/composables/useConfirmDialog.test.ts +0 -77
  492. package/tests/vue/composables/useGlobalCheckbox.test.ts +0 -126
  493. package/tests/vue/composables/useIsEmpty.test.ts +0 -18
  494. package/tests/vue/composables/useIsOpen.test.ts +0 -25
  495. package/tests/vue/composables/useIsOpenFromVar.test.ts +0 -22
  496. package/tests/vue/composables/useModelWrapper.test.ts +0 -30
  497. package/tests/vue/composables/useOnOpen.test.ts +0 -26
  498. package/tests/vue/forms/BaseForm.behavior.test.ts +0 -98
  499. package/tests/vue/forms/BaseForm.transformers.test.ts +0 -109
  500. package/tests/vue/forms/PropertyAwareArray.test.ts +0 -30
  501. package/tests/vue/forms/validation/ValidationRules.test.ts +0 -79
  502. package/tests/vue/requests/VueRequestLoaders.test.ts +0 -48
  503. package/tests/vue/router/routeResourceBinding/RouteResourceBoundView.test.ts +0 -344
  504. package/tests/vue/router/routeResourceBinding/RouteResourceUtils.test.ts +0 -70
  505. package/tests/vue/router/routeResourceBinding/installRouteInjection.test.ts +0 -450
  506. package/tests/vue/state/State.test.ts +0 -151
  507. package/tsconfig.json +0 -114
  508. package/vite.config.ts +0 -34
  509. 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`.
@@ -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.
@@ -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
- ```
@@ -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
- ```