@cratis/scene.components 4.2.0 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. package/bindings/resolveElementBinding.ts +17 -1
  2. package/cratisComponentsDescriptors.ts +48 -0
  3. package/cratisComponentsPackage.ts +2 -0
  4. package/dist/cjs/bindings/resolveElementBinding.js +13 -1
  5. package/dist/cjs/bindings/resolveElementBinding.js.map +1 -1
  6. package/dist/cjs/cratisComponentsDescriptors.js +83 -0
  7. package/dist/cjs/cratisComponentsDescriptors.js.map +1 -0
  8. package/dist/cjs/cratisComponentsPackage.js +3 -1
  9. package/dist/cjs/cratisComponentsPackage.js.map +1 -1
  10. package/dist/cjs/index.js +2 -0
  11. package/dist/cjs/index.js.map +1 -1
  12. package/dist/esm/bindings/resolveElementBinding.d.ts.map +1 -1
  13. package/dist/esm/bindings/resolveElementBinding.js +13 -1
  14. package/dist/esm/bindings/resolveElementBinding.js.map +1 -1
  15. package/dist/esm/cratisComponentsDescriptors.d.ts +3 -0
  16. package/dist/esm/cratisComponentsDescriptors.d.ts.map +1 -0
  17. package/dist/esm/cratisComponentsDescriptors.js +81 -0
  18. package/dist/esm/cratisComponentsDescriptors.js.map +1 -0
  19. package/dist/esm/cratisComponentsPackage.d.ts.map +1 -1
  20. package/dist/esm/cratisComponentsPackage.js +3 -1
  21. package/dist/esm/cratisComponentsPackage.js.map +1 -1
  22. package/dist/esm/index.d.ts +1 -0
  23. package/dist/esm/index.d.ts.map +1 -1
  24. package/dist/esm/index.js +1 -0
  25. package/dist/esm/index.js.map +1 -1
  26. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  27. package/index.ts +1 -0
  28. package/package.json +17 -16
  29. package/bindings/for_bindingRegistry/when_a_command_is_registered.ts +0 -30
  30. package/bindings/for_bindingRegistry/when_a_query_is_not_registered.ts +0 -17
  31. package/bindings/for_bindingRegistry/when_a_query_is_registered.ts +0 -30
  32. package/bindings/for_bindingRegistry/when_bindings_are_cleared.ts +0 -29
  33. package/bindings/for_bindingRegistry/when_registering_query_identities.ts +0 -81
  34. package/bindings/for_requireArcProxy/NativeProxies.ts +0 -28
  35. package/bindings/for_requireArcProxy/when_mounting_bound_adapters.tsx +0 -73
  36. package/bindings/for_requireArcProxy/when_previewing_without_arc.tsx +0 -37
  37. package/bindings/for_requireArcProxy/when_validating_a_proxy.ts +0 -44
  38. package/bindings/for_resolveElementBinding/when_resolving_a_command_binding.ts +0 -34
  39. package/bindings/for_resolveElementBinding/when_resolving_a_query_binding.ts +0 -45
  40. package/data/for_SceneDataTable/when_forwarding_query_arguments.tsx +0 -123
  41. package/data/for_SceneDataTable/when_the_query_binding_is_missing.tsx +0 -48
  42. package/data/for_SceneSingleResult/when_executing_a_native_query.tsx +0 -290
  43. package/data/for_SceneSingleResult/when_gating_the_lazy_runtime.tsx +0 -60
  44. package/dist/esm/bindings/for_bindingRegistry/when_a_command_is_registered.d.ts +0 -2
  45. package/dist/esm/bindings/for_bindingRegistry/when_a_command_is_registered.d.ts.map +0 -1
  46. package/dist/esm/bindings/for_bindingRegistry/when_a_command_is_registered.js +0 -25
  47. package/dist/esm/bindings/for_bindingRegistry/when_a_command_is_registered.js.map +0 -1
  48. package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_not_registered.d.ts +0 -2
  49. package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_not_registered.d.ts.map +0 -1
  50. package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_not_registered.js +0 -12
  51. package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_not_registered.js.map +0 -1
  52. package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_registered.d.ts +0 -2
  53. package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_registered.d.ts.map +0 -1
  54. package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_registered.js +0 -23
  55. package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_registered.js.map +0 -1
  56. package/dist/esm/bindings/for_bindingRegistry/when_bindings_are_cleared.d.ts +0 -2
  57. package/dist/esm/bindings/for_bindingRegistry/when_bindings_are_cleared.d.ts.map +0 -1
  58. package/dist/esm/bindings/for_bindingRegistry/when_bindings_are_cleared.js +0 -18
  59. package/dist/esm/bindings/for_bindingRegistry/when_bindings_are_cleared.js.map +0 -1
  60. package/dist/esm/bindings/for_bindingRegistry/when_registering_query_identities.d.ts +0 -2
  61. package/dist/esm/bindings/for_bindingRegistry/when_registering_query_identities.d.ts.map +0 -1
  62. package/dist/esm/bindings/for_bindingRegistry/when_registering_query_identities.js +0 -73
  63. package/dist/esm/bindings/for_bindingRegistry/when_registering_query_identities.js.map +0 -1
  64. package/dist/esm/bindings/for_requireArcProxy/NativeProxies.d.ts +0 -25
  65. package/dist/esm/bindings/for_requireArcProxy/NativeProxies.d.ts.map +0 -1
  66. package/dist/esm/bindings/for_requireArcProxy/NativeProxies.js +0 -23
  67. package/dist/esm/bindings/for_requireArcProxy/NativeProxies.js.map +0 -1
  68. package/dist/esm/bindings/for_requireArcProxy/when_mounting_bound_adapters.d.ts +0 -2
  69. package/dist/esm/bindings/for_requireArcProxy/when_mounting_bound_adapters.d.ts.map +0 -1
  70. package/dist/esm/bindings/for_requireArcProxy/when_mounting_bound_adapters.js +0 -56
  71. package/dist/esm/bindings/for_requireArcProxy/when_mounting_bound_adapters.js.map +0 -1
  72. package/dist/esm/bindings/for_requireArcProxy/when_previewing_without_arc.d.ts +0 -2
  73. package/dist/esm/bindings/for_requireArcProxy/when_previewing_without_arc.d.ts.map +0 -1
  74. package/dist/esm/bindings/for_requireArcProxy/when_previewing_without_arc.js +0 -32
  75. package/dist/esm/bindings/for_requireArcProxy/when_previewing_without_arc.js.map +0 -1
  76. package/dist/esm/bindings/for_requireArcProxy/when_validating_a_proxy.d.ts +0 -2
  77. package/dist/esm/bindings/for_requireArcProxy/when_validating_a_proxy.d.ts.map +0 -1
  78. package/dist/esm/bindings/for_requireArcProxy/when_validating_a_proxy.js +0 -45
  79. package/dist/esm/bindings/for_requireArcProxy/when_validating_a_proxy.js.map +0 -1
  80. package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_command_binding.d.ts +0 -2
  81. package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_command_binding.d.ts.map +0 -1
  82. package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_command_binding.js +0 -25
  83. package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_command_binding.js.map +0 -1
  84. package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_query_binding.d.ts +0 -2
  85. package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_query_binding.d.ts.map +0 -1
  86. package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_query_binding.js +0 -33
  87. package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_query_binding.js.map +0 -1
  88. package/dist/esm/data/for_SceneDataTable/when_forwarding_query_arguments.d.ts +0 -2
  89. package/dist/esm/data/for_SceneDataTable/when_forwarding_query_arguments.d.ts.map +0 -1
  90. package/dist/esm/data/for_SceneDataTable/when_forwarding_query_arguments.js +0 -107
  91. package/dist/esm/data/for_SceneDataTable/when_forwarding_query_arguments.js.map +0 -1
  92. package/dist/esm/data/for_SceneDataTable/when_the_query_binding_is_missing.d.ts +0 -2
  93. package/dist/esm/data/for_SceneDataTable/when_the_query_binding_is_missing.d.ts.map +0 -1
  94. package/dist/esm/data/for_SceneDataTable/when_the_query_binding_is_missing.js +0 -36
  95. package/dist/esm/data/for_SceneDataTable/when_the_query_binding_is_missing.js.map +0 -1
  96. package/dist/esm/data/for_SceneSingleResult/when_executing_a_native_query.d.ts +0 -2
  97. package/dist/esm/data/for_SceneSingleResult/when_executing_a_native_query.d.ts.map +0 -1
  98. package/dist/esm/data/for_SceneSingleResult/when_executing_a_native_query.js +0 -255
  99. package/dist/esm/data/for_SceneSingleResult/when_executing_a_native_query.js.map +0 -1
  100. package/dist/esm/data/for_SceneSingleResult/when_gating_the_lazy_runtime.d.ts +0 -2
  101. package/dist/esm/data/for_SceneSingleResult/when_gating_the_lazy_runtime.d.ts.map +0 -1
  102. package/dist/esm/data/for_SceneSingleResult/when_gating_the_lazy_runtime.js +0 -54
  103. package/dist/esm/data/for_SceneSingleResult/when_gating_the_lazy_runtime.js.map +0 -1
  104. package/dist/esm/editors/for_SceneObjectNavigationalBar/when_navigating_back_up_the_trail.d.ts +0 -2
  105. package/dist/esm/editors/for_SceneObjectNavigationalBar/when_navigating_back_up_the_trail.d.ts.map +0 -1
  106. package/dist/esm/editors/for_SceneObjectNavigationalBar/when_navigating_back_up_the_trail.js +0 -15
  107. package/dist/esm/editors/for_SceneObjectNavigationalBar/when_navigating_back_up_the_trail.js.map +0 -1
  108. package/dist/esm/editors/for_filterDefinitions/when_reading_filter_definitions.d.ts +0 -2
  109. package/dist/esm/editors/for_filterDefinitions/when_reading_filter_definitions.d.ts.map +0 -1
  110. package/dist/esm/editors/for_filterDefinitions/when_reading_filter_definitions.js +0 -39
  111. package/dist/esm/editors/for_filterDefinitions/when_reading_filter_definitions.js.map +0 -1
  112. package/dist/esm/editors/for_timeMachineVersions/when_reading_versions.d.ts +0 -2
  113. package/dist/esm/editors/for_timeMachineVersions/when_reading_versions.d.ts.map +0 -1
  114. package/dist/esm/editors/for_timeMachineVersions/when_reading_versions.js +0 -32
  115. package/dist/esm/editors/for_timeMachineVersions/when_reading_versions.js.map +0 -1
  116. package/dist/esm/for_cratisComponents/when_rendering_a_screen_through_the_real_renderer.d.ts +0 -2
  117. package/dist/esm/for_cratisComponents/when_rendering_a_screen_through_the_real_renderer.d.ts.map +0 -1
  118. package/dist/esm/for_cratisComponents/when_rendering_a_screen_through_the_real_renderer.js +0 -25
  119. package/dist/esm/for_cratisComponents/when_rendering_a_screen_through_the_real_renderer.js.map +0 -1
  120. package/dist/esm/for_cratisComponentsPackage/when_a_profile_ranks_it_above_the_packages_it_layers_on.d.ts +0 -2
  121. package/dist/esm/for_cratisComponentsPackage/when_a_profile_ranks_it_above_the_packages_it_layers_on.d.ts.map +0 -1
  122. package/dist/esm/for_cratisComponentsPackage/when_a_profile_ranks_it_above_the_packages_it_layers_on.js +0 -34
  123. package/dist/esm/for_cratisComponentsPackage/when_a_profile_ranks_it_above_the_packages_it_layers_on.js.map +0 -1
  124. package/dist/esm/for_cratisComponentsPackage/when_declaring_command_form_peers.d.ts +0 -2
  125. package/dist/esm/for_cratisComponentsPackage/when_declaring_command_form_peers.d.ts.map +0 -1
  126. package/dist/esm/for_cratisComponentsPackage/when_declaring_command_form_peers.js +0 -16
  127. package/dist/esm/for_cratisComponentsPackage/when_declaring_command_form_peers.js.map +0 -1
  128. package/dist/esm/for_cratisComponentsPackage/when_describing_query_arguments.d.ts +0 -2
  129. package/dist/esm/for_cratisComponentsPackage/when_describing_query_arguments.d.ts.map +0 -1
  130. package/dist/esm/for_cratisComponentsPackage/when_describing_query_arguments.js +0 -11
  131. package/dist/esm/for_cratisComponentsPackage/when_describing_query_arguments.js.map +0 -1
  132. package/dist/esm/for_cratisComponentsPackage/when_describing_query_input_form.d.ts +0 -2
  133. package/dist/esm/for_cratisComponentsPackage/when_describing_query_input_form.d.ts.map +0 -1
  134. package/dist/esm/for_cratisComponentsPackage/when_describing_query_input_form.js +0 -14
  135. package/dist/esm/for_cratisComponentsPackage/when_describing_query_input_form.js.map +0 -1
  136. package/dist/esm/for_cratisComponentsPackage/when_describing_single_result.d.ts +0 -2
  137. package/dist/esm/for_cratisComponentsPackage/when_describing_single_result.d.ts.map +0 -1
  138. package/dist/esm/for_cratisComponentsPackage/when_describing_single_result.js +0 -16
  139. package/dist/esm/for_cratisComponentsPackage/when_describing_single_result.js.map +0 -1
  140. package/dist/esm/for_cratisComponentsPackage/when_resolving_its_dependencies.d.ts +0 -2
  141. package/dist/esm/for_cratisComponentsPackage/when_resolving_its_dependencies.d.ts.map +0 -1
  142. package/dist/esm/for_cratisComponentsPackage/when_resolving_its_dependencies.js +0 -49
  143. package/dist/esm/for_cratisComponentsPackage/when_resolving_its_dependencies.js.map +0 -1
  144. package/dist/esm/for_cratisComponentsPackage/when_validating_the_bundle.d.ts +0 -2
  145. package/dist/esm/for_cratisComponentsPackage/when_validating_the_bundle.d.ts.map +0 -1
  146. package/dist/esm/for_cratisComponentsPackage/when_validating_the_bundle.js +0 -27
  147. package/dist/esm/for_cratisComponentsPackage/when_validating_the_bundle.js.map +0 -1
  148. package/dist/esm/for_properties/when_a_property_has_the_wrong_type.d.ts +0 -2
  149. package/dist/esm/for_properties/when_a_property_has_the_wrong_type.d.ts.map +0 -1
  150. package/dist/esm/for_properties/when_a_property_has_the_wrong_type.js +0 -24
  151. package/dist/esm/for_properties/when_a_property_has_the_wrong_type.js.map +0 -1
  152. package/dist/esm/for_properties/when_a_property_is_missing.d.ts +0 -2
  153. package/dist/esm/for_properties/when_a_property_is_missing.d.ts.map +0 -1
  154. package/dist/esm/for_properties/when_a_property_is_missing.js +0 -13
  155. package/dist/esm/for_properties/when_a_property_is_missing.js.map +0 -1
  156. package/dist/esm/for_properties/when_a_property_is_present.d.ts +0 -2
  157. package/dist/esm/for_properties/when_a_property_is_present.d.ts.map +0 -1
  158. package/dist/esm/for_properties/when_a_property_is_present.js +0 -21
  159. package/dist/esm/for_properties/when_a_property_is_present.js.map +0 -1
  160. package/dist/esm/forms/fields/for_CommandFormField/when_the_field_names_no_property.d.ts +0 -2
  161. package/dist/esm/forms/fields/for_CommandFormField/when_the_field_names_no_property.d.ts.map +0 -1
  162. package/dist/esm/forms/fields/for_CommandFormField/when_the_field_names_no_property.js +0 -12
  163. package/dist/esm/forms/fields/for_CommandFormField/when_the_field_names_no_property.js.map +0 -1
  164. package/dist/esm/forms/fields/for_SceneRadioButtonField/when_mapping_the_group_name.d.ts +0 -2
  165. package/dist/esm/forms/fields/for_SceneRadioButtonField/when_mapping_the_group_name.d.ts.map +0 -1
  166. package/dist/esm/forms/fields/for_SceneRadioButtonField/when_mapping_the_group_name.js +0 -38
  167. package/dist/esm/forms/fields/for_SceneRadioButtonField/when_mapping_the_group_name.js.map +0 -1
  168. package/dist/esm/forms/fields/for_resolveFieldBinding/when_resolving_a_field_binding.d.ts +0 -2
  169. package/dist/esm/forms/fields/for_resolveFieldBinding/when_resolving_a_field_binding.d.ts.map +0 -1
  170. package/dist/esm/forms/fields/for_resolveFieldBinding/when_resolving_a_field_binding.js +0 -28
  171. package/dist/esm/forms/fields/for_resolveFieldBinding/when_resolving_a_field_binding.js.map +0 -1
  172. package/dist/esm/forms/for_SceneCommandForm/given/RecordNote.d.ts +0 -22
  173. package/dist/esm/forms/for_SceneCommandForm/given/RecordNote.d.ts.map +0 -1
  174. package/dist/esm/forms/for_SceneCommandForm/given/RecordNote.js +0 -30
  175. package/dist/esm/forms/for_SceneCommandForm/given/RecordNote.js.map +0 -1
  176. package/dist/esm/forms/for_SceneCommandForm/given/StartProject.d.ts +0 -32
  177. package/dist/esm/forms/for_SceneCommandForm/given/StartProject.d.ts.map +0 -1
  178. package/dist/esm/forms/for_SceneCommandForm/given/StartProject.js +0 -32
  179. package/dist/esm/forms/for_SceneCommandForm/given/StartProject.js.map +0 -1
  180. package/dist/esm/forms/for_SceneCommandForm/when_forwarding_to_the_lazy_runtime.d.ts +0 -2
  181. package/dist/esm/forms/for_SceneCommandForm/when_forwarding_to_the_lazy_runtime.d.ts.map +0 -1
  182. package/dist/esm/forms/for_SceneCommandForm/when_forwarding_to_the_lazy_runtime.js +0 -66
  183. package/dist/esm/forms/for_SceneCommandForm/when_forwarding_to_the_lazy_runtime.js.map +0 -1
  184. package/dist/esm/forms/for_SceneCommandForm/when_native_custom_field_errors_block_submission.d.ts +0 -2
  185. package/dist/esm/forms/for_SceneCommandForm/when_native_custom_field_errors_block_submission.d.ts.map +0 -1
  186. package/dist/esm/forms/for_SceneCommandForm/when_native_custom_field_errors_block_submission.js +0 -26
  187. package/dist/esm/forms/for_SceneCommandForm/when_native_custom_field_errors_block_submission.js.map +0 -1
  188. package/dist/esm/forms/for_SceneCommandForm/when_preserving_guid_error_ownership.d.ts +0 -2
  189. package/dist/esm/forms/for_SceneCommandForm/when_preserving_guid_error_ownership.d.ts.map +0 -1
  190. package/dist/esm/forms/for_SceneCommandForm/when_preserving_guid_error_ownership.js +0 -44
  191. package/dist/esm/forms/for_SceneCommandForm/when_preserving_guid_error_ownership.js.map +0 -1
  192. package/dist/esm/forms/for_SceneCommandForm/when_rendering_submit_in_native_context.d.ts +0 -2
  193. package/dist/esm/forms/for_SceneCommandForm/when_rendering_submit_in_native_context.d.ts.map +0 -1
  194. package/dist/esm/forms/for_SceneCommandForm/when_rendering_submit_in_native_context.js +0 -49
  195. package/dist/esm/forms/for_SceneCommandForm/when_rendering_submit_in_native_context.js.map +0 -1
  196. package/dist/esm/forms/for_SceneCommandForm/when_submitting_explicit_inputs.d.ts +0 -2
  197. package/dist/esm/forms/for_SceneCommandForm/when_submitting_explicit_inputs.d.ts.map +0 -1
  198. package/dist/esm/forms/for_SceneCommandForm/when_submitting_explicit_inputs.js +0 -176
  199. package/dist/esm/forms/for_SceneCommandForm/when_submitting_explicit_inputs.js.map +0 -1
  200. package/dist/esm/forms/for_SceneCommandForm/when_submitting_the_native_form.d.ts +0 -2
  201. package/dist/esm/forms/for_SceneCommandForm/when_submitting_the_native_form.d.ts.map +0 -1
  202. package/dist/esm/forms/for_SceneCommandForm/when_submitting_the_native_form.js +0 -110
  203. package/dist/esm/forms/for_SceneCommandForm/when_submitting_the_native_form.js.map +0 -1
  204. package/dist/esm/forms/for_SceneQueryInputForm/ProjectLookup.d.ts +0 -26
  205. package/dist/esm/forms/for_SceneQueryInputForm/ProjectLookup.d.ts.map +0 -1
  206. package/dist/esm/forms/for_SceneQueryInputForm/ProjectLookup.js +0 -44
  207. package/dist/esm/forms/for_SceneQueryInputForm/ProjectLookup.js.map +0 -1
  208. package/dist/esm/forms/for_SceneQueryInputForm/when_submitting_generated_guid_parameters.d.ts +0 -2
  209. package/dist/esm/forms/for_SceneQueryInputForm/when_submitting_generated_guid_parameters.d.ts.map +0 -1
  210. package/dist/esm/forms/for_SceneQueryInputForm/when_submitting_generated_guid_parameters.js +0 -175
  211. package/dist/esm/forms/for_SceneQueryInputForm/when_submitting_generated_guid_parameters.js.map +0 -1
  212. package/dist/esm/forms/for_SceneQueryInputForm/when_submitting_native_queries.d.ts +0 -2
  213. package/dist/esm/forms/for_SceneQueryInputForm/when_submitting_native_queries.d.ts.map +0 -1
  214. package/dist/esm/forms/for_SceneQueryInputForm/when_submitting_native_queries.js +0 -413
  215. package/dist/esm/forms/for_SceneQueryInputForm/when_submitting_native_queries.js.map +0 -1
  216. package/dist/esm/pages/for_ScenePage/when_rendering_a_page.d.ts +0 -2
  217. package/dist/esm/pages/for_ScenePage/when_rendering_a_page.d.ts.map +0 -1
  218. package/dist/esm/pages/for_ScenePage/when_rendering_a_page.js +0 -31
  219. package/dist/esm/pages/for_ScenePage/when_rendering_a_page.js.map +0 -1
  220. package/editors/for_SceneObjectNavigationalBar/when_navigating_back_up_the_trail.tsx +0 -24
  221. package/editors/for_filterDefinitions/when_reading_filter_definitions.ts +0 -49
  222. package/editors/for_timeMachineVersions/when_reading_versions.ts +0 -39
  223. package/for_cratisComponents/when_rendering_a_screen_through_the_real_renderer.tsx +0 -37
  224. package/for_cratisComponentsPackage/when_a_profile_ranks_it_above_the_packages_it_layers_on.ts +0 -49
  225. package/for_cratisComponentsPackage/when_declaring_command_form_peers.ts +0 -26
  226. package/for_cratisComponentsPackage/when_describing_query_arguments.ts +0 -15
  227. package/for_cratisComponentsPackage/when_describing_query_input_form.ts +0 -17
  228. package/for_cratisComponentsPackage/when_describing_single_result.ts +0 -20
  229. package/for_cratisComponentsPackage/when_resolving_its_dependencies.ts +0 -78
  230. package/for_cratisComponentsPackage/when_validating_the_bundle.ts +0 -39
  231. package/for_properties/when_a_property_has_the_wrong_type.ts +0 -41
  232. package/for_properties/when_a_property_is_missing.ts +0 -26
  233. package/for_properties/when_a_property_is_present.ts +0 -36
  234. package/forms/fields/for_CommandFormField/when_the_field_names_no_property.tsx +0 -16
  235. package/forms/fields/for_SceneRadioButtonField/when_mapping_the_group_name.tsx +0 -45
  236. package/forms/fields/for_resolveFieldBinding/when_resolving_a_field_binding.ts +0 -40
  237. package/forms/for_SceneCommandForm/given/RecordNote.ts +0 -37
  238. package/forms/for_SceneCommandForm/given/StartProject.ts +0 -41
  239. package/forms/for_SceneCommandForm/when_forwarding_to_the_lazy_runtime.tsx +0 -69
  240. package/forms/for_SceneCommandForm/when_native_custom_field_errors_block_submission.tsx +0 -33
  241. package/forms/for_SceneCommandForm/when_preserving_guid_error_ownership.tsx +0 -50
  242. package/forms/for_SceneCommandForm/when_rendering_submit_in_native_context.tsx +0 -56
  243. package/forms/for_SceneCommandForm/when_submitting_explicit_inputs.tsx +0 -189
  244. package/forms/for_SceneCommandForm/when_submitting_the_native_form.tsx +0 -120
  245. package/forms/for_SceneQueryInputForm/ProjectLookup.ts +0 -54
  246. package/forms/for_SceneQueryInputForm/when_submitting_generated_guid_parameters.tsx +0 -188
  247. package/forms/for_SceneQueryInputForm/when_submitting_native_queries.tsx +0 -423
  248. package/pages/for_ScenePage/when_rendering_a_page.tsx +0 -39
@@ -1,66 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { act, cleanup, render, screen } from '@testing-library/react';
3
- import { vi } from 'vitest';
4
- import { externalComponent } from '../../given';
5
- describe('when forwarding command forms to the lazy runtime', () => {
6
- const received = vi.fn();
7
- const loaded = vi.fn();
8
- let bindings;
9
- let Form;
10
- class Original {
11
- }
12
- class Replacement {
13
- }
14
- beforeEach(async () => {
15
- vi.resetModules();
16
- received.mockClear();
17
- loaded.mockClear();
18
- vi.doMock('../CommandFormRuntime', () => {
19
- loaded();
20
- return { default: (props) => { received(props); return _jsx("span", { children: "Runtime boundary" }); } };
21
- });
22
- bindings = await import('../../bindings/bindingRegistry');
23
- bindings.clearBindings();
24
- ({ SceneCommandForm: Form } = await import('../SceneCommandForm'));
25
- });
26
- afterEach(() => {
27
- cleanup();
28
- bindings.clearBindings();
29
- vi.doUnmock('../CommandFormRuntime');
30
- vi.resetModules();
31
- });
32
- it('should preserve the exact registered constructor, exclusions and explicit label', async () => {
33
- bindings.registerCommand('RecordNote', Original);
34
- const exclude = ['internalValue'];
35
- await act(async () => {
36
- render(_jsx(Form, { element: externalComponent('Cratis.Components:commandForm', {
37
- command: 'RecordNote', exclude, submitLabel: 'Record note',
38
- }), slots: {} }));
39
- });
40
- received.mock.calls.at(-1)[0].should.deep.equal({ command: Original, exclude, inputs: undefined, submitLabel: 'Record note' });
41
- });
42
- for (const submitLabel of [undefined, 42, false]) {
43
- it(`should default a missing or non-string label (${String(submitLabel)}) to Submit`, async () => {
44
- bindings.registerCommand('RecordNote', Original);
45
- await act(async () => {
46
- render(_jsx(Form, { element: externalComponent('Cratis.Components:commandForm', {
47
- command: 'RecordNote', exclude: 'not-an-array', submitLabel,
48
- }), slots: {} }));
49
- });
50
- received.mock.calls.at(-1)[0].should.deep.equal({ command: Original, exclude: undefined, inputs: undefined, submitLabel: 'Submit' });
51
- });
52
- }
53
- it('should preserve legacy last-registration-wins command binding', async () => {
54
- bindings.registerCommand('RecordNote', Original);
55
- bindings.registerCommand('RecordNote', Replacement);
56
- await act(async () => { render(_jsx(Form, { element: externalComponent('Cratis.Components:commandForm', { command: 'RecordNote' }), slots: {} })); });
57
- (received.mock.calls.at(-1)[0].command === Replacement).should.equal(true);
58
- });
59
- it('should keep an unbound preview Arc-free even when a query has that name', async () => {
60
- bindings.registerQuery('RecordNote', Original);
61
- await act(async () => { render(_jsx(Form, { element: externalComponent('Cratis.Components:commandForm', { command: 'RecordNote' }), slots: {} })); });
62
- Boolean(screen.getByText("Unresolved command binding 'RecordNote' on Cratis.Components:commandForm")).should.equal(true);
63
- loaded.mock.calls.should.have.lengthOf(0);
64
- });
65
- });
66
- //# sourceMappingURL=when_forwarding_to_the_lazy_runtime.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"when_forwarding_to_the_lazy_runtime.js","sourceRoot":"","sources":["../../../../forms/for_SceneCommandForm/when_forwarding_to_the_lazy_runtime.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=when_native_custom_field_errors_block_submission.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"when_native_custom_field_errors_block_submission.d.ts","sourceRoot":"","sources":["../../../../forms/for_SceneCommandForm/when_native_custom_field_errors_block_submission.tsx"],"names":[],"mappings":""}
@@ -1,26 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { act, cleanup, fireEvent, render, screen } from '@testing-library/react';
3
- import { vi } from 'vitest';
4
- import { CommandForm } from '@cratis/arc.react/commands';
5
- import { InputTextField } from '@cratis/components/CommandForm';
6
- import { CommandFormSubmit } from '../CommandFormSubmit';
7
- import { RecordNote, successfulResponse } from './given/RecordNote';
8
- describe('when native custom field errors block submission', () => {
9
- const fetch = vi.fn();
10
- beforeEach(() => { fetch.mockReset(); fetch.mockResolvedValue(successfulResponse()); vi.stubGlobal('fetch', fetch); });
11
- afterEach(() => { cleanup(); vi.unstubAllGlobals(); });
12
- it('should leave submit enabled for feedback but let the native form reject a custom field error', async () => {
13
- await act(async () => {
14
- render(_jsxs(CommandForm, { command: RecordNote, onFieldValidate: () => 'Subject is rejected by the field', children: [_jsx(InputTextField, { value: (command) => command.subject, title: 'Subject' }), _jsx(CommandFormSubmit, { label: 'Record note' })] }));
15
- });
16
- const input = screen.getByRole('textbox', { name: 'Subject' });
17
- fireEvent.change(input, { target: { value: 'Passes the command validator' } });
18
- await act(async () => { fireEvent.blur(input); });
19
- (await screen.findAllByText('Subject is rejected by the field')).length.should.be.greaterThan(0);
20
- const button = screen.getByRole('button', { name: 'Record note' });
21
- button.disabled.should.equal(false);
22
- await act(async () => { fireEvent.click(button); });
23
- fetch.mock.calls.should.have.lengthOf(0);
24
- });
25
- });
26
- //# sourceMappingURL=when_native_custom_field_errors_block_submission.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"when_native_custom_field_errors_block_submission.js","sourceRoot":"","sources":["../../../../forms/for_SceneCommandForm/when_native_custom_field_errors_block_submission.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIpE,QAAQ,CAAC,kDAAkD,EAAE,GAAG,EAAE;IAC9D,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,EAA2B,CAAC;IAC/C,UAAU,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvH,SAAS,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvD,EAAE,CAAC,8FAA8F,EAAE,KAAK,IAAI,EAAE;QAC1G,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE;YAAG,MAAM,CAAC,MAAC,WAAW,IAAC,OAAO,EAAE,UAAU,EAC3D,eAAe,EAAE,GAAG,EAAE,CAAC,kCAAkC,aACzD,KAAC,cAAc,IAAC,KAAK,EAAE,CAAC,OAAmB,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAC,SAAS,GAAG,EACnF,KAAC,iBAAiB,IAAC,KAAK,EAAC,aAAa,GAAG,IAC/B,CAAC,CAAC;QAAC,CAAC,CAAC,CAAC;QACpB,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAC/D,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,8BAA8B,EAAE,EAAE,CAAC,CAAC;QAC/E,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,kCAAkC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACjG,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAoB,QAAQ,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QACtF,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=when_preserving_guid_error_ownership.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"when_preserving_guid_error_ownership.d.ts","sourceRoot":"","sources":["../../../../forms/for_SceneCommandForm/when_preserving_guid_error_ownership.tsx"],"names":[],"mappings":""}
@@ -1,44 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { act, cleanup, fireEvent, render, screen } from '@testing-library/react';
3
- import { CommandForm, useCommandFormContext } from '@cratis/arc.react/commands';
4
- import { Guid } from '@cratis/fundamentals';
5
- import { PropertyDescriptor } from '@cratis/arc/reflection';
6
- import { ExplicitCommandField } from '../ExplicitCommandField';
7
- import { StartProject } from './given/StartProject';
8
- class OptionalProject extends StartProject {
9
- propertyDescriptors = [new PropertyDescriptor('projectId', Guid, true), new PropertyDescriptor('name', String)];
10
- }
11
- const input = { property: 'projectId', type: 'guid', label: 'Project ID' };
12
- describe('native explicit Guid field error ownership', () => {
13
- afterEach(cleanup);
14
- it('leaves a caller-owned error intact when the invalid field unmounts in the same event', async () => {
15
- let context;
16
- function Capture() { context = useCommandFormContext(); return null; }
17
- function form(show) {
18
- return _jsxs(CommandForm, { command: StartProject, children: [_jsx(Capture, {}), show && _jsx(ExplicitCommandField, { input: input })] });
19
- }
20
- const result = render(form(true));
21
- fireEvent.change(screen.getByRole('textbox', { name: 'Project ID' }), { target: { value: 'bad' } });
22
- context.getFieldError('projectId').should.equal('Project ID must be a valid GUID');
23
- await act(async () => {
24
- context.setCustomFieldError('projectId', 'Caller-owned error');
25
- result.rerender(form(false));
26
- });
27
- context.getFieldError('projectId').should.equal('Caller-owned error');
28
- });
29
- it('clears its own malformed optional Guid error on unmount', async () => {
30
- let context;
31
- function Capture() { context = useCommandFormContext(); return null; }
32
- function form(show) {
33
- return _jsxs(CommandForm, { command: OptionalProject, children: [_jsx(Capture, {}), show && _jsx(ExplicitCommandField, { input: input })] });
34
- }
35
- const result = render(form(true));
36
- await act(async () => {
37
- fireEvent.change(screen.getByRole('textbox', { name: 'Project ID' }), { target: { value: 'bad' } });
38
- context.getFieldError('projectId').should.equal('Project ID must be a valid GUID');
39
- result.rerender(form(false));
40
- });
41
- (Object.hasOwn(context.customFieldErrors, 'projectId')).should.equal(false);
42
- });
43
- });
44
- //# sourceMappingURL=when_preserving_guid_error_ownership.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"when_preserving_guid_error_ownership.js","sourceRoot":"","sources":["../../../../forms/for_SceneCommandForm/when_preserving_guid_error_ownership.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,eAAgB,SAAQ,YAAY;IAC7B,mBAAmB,GAAG,CAAC,IAAI,kBAAkB,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC5H;AAED,MAAM,KAAK,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,MAAe,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;AAEpF,QAAQ,CAAC,4CAA4C,EAAE,GAAG,EAAE;IACxD,SAAS,CAAC,OAAO,CAAC,CAAC;IAEnB,EAAE,CAAC,sFAAsF,EAAE,KAAK,IAAI,EAAE;QAClG,IAAI,OAAkD,CAAC;QACvD,SAAS,OAAO,KAAK,OAAO,GAAG,qBAAqB,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;QACtE,SAAS,IAAI,CAAC,IAAa;YACvB,OAAO,MAAC,WAAW,IAAC,OAAO,EAAE,YAAY,aAAE,KAAC,OAAO,KAAG,EAAC,IAAI,IAAI,KAAC,oBAAoB,IAAC,KAAK,EAAE,KAAK,GAAI,IAAe,CAAC;QACzH,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAClC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACpG,OAAO,CAAC,aAAa,CAAC,WAAW,CAAE,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACpF,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE;YACjB,OAAO,CAAC,mBAAmB,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;YAC/D,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,aAAa,CAAC,WAAW,CAAE,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACrE,IAAI,OAAkD,CAAC;QACvD,SAAS,OAAO,KAAK,OAAO,GAAG,qBAAqB,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;QACtE,SAAS,IAAI,CAAC,IAAa;YACvB,OAAO,MAAC,WAAW,IAAC,OAAO,EAAE,eAAe,aAAE,KAAC,OAAO,KAAG,EAAC,IAAI,IAAI,KAAC,oBAAoB,IAAC,KAAK,EAAE,KAAK,GAAI,IAAe,CAAC;QAC5H,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAClC,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE;YACjB,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACpG,OAAO,CAAC,aAAa,CAAC,WAAW,CAAE,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACpF,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=when_rendering_submit_in_native_context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"when_rendering_submit_in_native_context.d.ts","sourceRoot":"","sources":["../../../../forms/for_SceneCommandForm/when_rendering_submit_in_native_context.tsx"],"names":[],"mappings":""}
@@ -1,49 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { act, cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react';
3
- import { vi } from 'vitest';
4
- import { CommandForm } from '@cratis/arc.react/commands';
5
- import { InputTextField } from '@cratis/components/CommandForm';
6
- import { CommandFormSubmit } from '../CommandFormSubmit';
7
- import { RecordNote, RestrictedNote, successfulResponse } from './given/RecordNote';
8
- describe('when rendering the submit child inside native CommandForm', () => {
9
- const fetch = vi.fn();
10
- beforeEach(() => { fetch.mockReset(); fetch.mockResolvedValue(successfulResponse()); vi.stubGlobal('fetch', fetch); });
11
- afterEach(() => { cleanup(); vi.unstubAllGlobals(); });
12
- it('should let native submit expose invalid untouched fields without HTTP', async () => {
13
- await act(async () => {
14
- render(_jsxs(CommandForm, { command: RecordNote, children: [_jsx(InputTextField, { value: (command) => command.subject, title: 'Subject' }), _jsx(CommandFormSubmit, { label: 'Record note' })] }));
15
- });
16
- const button = screen.getByRole('button', { name: 'Record note' });
17
- button.disabled.should.equal(false);
18
- await act(async () => { fireEvent.click(button); });
19
- (await screen.findAllByText('Subject is required')).length.should.be.greaterThan(0);
20
- fetch.mock.calls.should.have.lengthOf(0);
21
- });
22
- it('should follow native busy state through completion without executing directly', async () => {
23
- let complete;
24
- fetch.mockReturnValueOnce(new Promise(resolve => { complete = resolve; }));
25
- await act(async () => {
26
- render(_jsx(CommandForm, { command: RecordNote, initialValues: { subject: 'Valid' }, children: _jsx(CommandFormSubmit, { label: 'Record note' }) }));
27
- });
28
- const button = screen.getByRole('button', { name: 'Record note' });
29
- button.disabled.should.equal(false);
30
- await act(async () => { fireEvent.click(button); });
31
- await waitFor(() => button.disabled.should.equal(true));
32
- button.getAttribute('aria-busy').should.equal('true');
33
- fireEvent.click(button);
34
- fetch.mock.calls.should.have.lengthOf(1);
35
- await act(async () => { complete(successfulResponse()); });
36
- await waitFor(() => button.disabled.should.equal(false));
37
- button.getAttribute('aria-busy').should.equal('false');
38
- });
39
- it('should respect native role authorization instead of deriving it in Scene', async () => {
40
- await act(async () => {
41
- render(_jsx(CommandForm, { command: RestrictedNote, children: _jsx(CommandFormSubmit, { label: 'Record note' }) }));
42
- });
43
- const button = screen.getByRole('button', { name: 'Record note' });
44
- button.disabled.should.equal(true);
45
- fireEvent.click(button);
46
- fetch.mock.calls.should.have.lengthOf(0);
47
- });
48
- });
49
- //# sourceMappingURL=when_rendering_submit_in_native_context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"when_rendering_submit_in_native_context.js","sourceRoot":"","sources":["../../../../forms/for_SceneCommandForm/when_rendering_submit_in_native_context.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=when_submitting_explicit_inputs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"when_submitting_explicit_inputs.d.ts","sourceRoot":"","sources":["../../../../forms/for_SceneCommandForm/when_submitting_explicit_inputs.tsx"],"names":[],"mappings":""}
@@ -1,176 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { act, cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react';
3
- import { vi } from 'vitest';
4
- import { ArcContext } from '@cratis/arc.react';
5
- import { SceneElementView } from '@cratis/scene.react';
6
- import { clearBindings, registerCommand } from '../../bindings';
7
- import { cratisComponents } from '../../cratisComponents';
8
- import { externalComponent } from '../../given';
9
- import { AmbiguousProject, OptionalUnsupported, RequiredUnsupported, RestrictedProject, StartProject } from './given/StartProject';
10
- import { RecordNote, successfulResponse } from './given/RecordNote';
11
- const inputs = [{ property: 'projectId', type: 'guid', label: 'Project ID' }, { property: 'name', type: 'string', label: 'Name' }];
12
- const guid = 'AABBCCDD-1234-5678-9ABC-001122334455';
13
- function view(properties = {}, explicit = true) {
14
- return _jsx(ArcContext.Provider, { value: { origin: 'https://example.test', apiBasePath: '/backend', microservice: 'projects', httpHeadersCallback: () => ({ 'x-host': 'scene' }) }, children: _jsx(SceneElementView, { element: externalComponent('Cratis.Components:commandForm', { command: 'StartProject', ...(explicit ? { inputs } : {}), submitLabel: 'Create project', ...properties }), registry: cratisComponents, resolveBinding: () => undefined }) });
15
- }
16
- describe('explicit Scene command form using native Arc proxy and execution', () => {
17
- const fetch = vi.fn();
18
- beforeEach(() => { clearBindings(); registerCommand('StartProject', StartProject); fetch.mockReset(); fetch.mockResolvedValue(successfulResponse()); vi.stubGlobal('fetch', fetch); });
19
- afterEach(() => { cleanup(); clearBindings(); vi.unstubAllGlobals(); });
20
- it('rejects untouched, blank and malformed GUIDs, and blank name without HTTP; corrected fields submit the typed payload', async () => {
21
- render(view());
22
- const button = await screen.findByRole('button', { name: 'Create project' });
23
- const id = screen.getByRole('textbox', { name: 'Project ID' });
24
- const name = screen.getByRole('textbox', { name: 'Name' });
25
- (button.form === id.closest('form')).should.equal(true);
26
- await act(async () => { fireEvent.submit(button.form); });
27
- (await screen.findAllByText('Project ID is required')).length.should.be.greaterThan(0);
28
- fetch.mock.calls.should.have.lengthOf(0);
29
- fireEvent.change(id, { target: { value: 'not-a-guid' } });
30
- fireEvent.change(name, { target: { value: '' } });
31
- await act(async () => { fireEvent.submit(button.form); });
32
- (await screen.findAllByText('Project ID must be a valid GUID')).length.should.be.greaterThan(0);
33
- fetch.mock.calls.should.have.lengthOf(0);
34
- fireEvent.change(id, { target: { value: guid } });
35
- await act(async () => { fireEvent.submit(button.form); });
36
- (await screen.findAllByText('Name is required')).length.should.be.greaterThan(0);
37
- fetch.mock.calls.should.have.lengthOf(0);
38
- fireEvent.change(name, { target: { value: ' My Project ' } });
39
- await act(async () => { fireEvent.click(button); });
40
- await waitFor(() => fetch.mock.calls.should.have.lengthOf(1));
41
- const [url, request] = fetch.mock.calls[0];
42
- String(url).should.equal('https://example.test/backend/synthetic/projects');
43
- request.method.should.equal('POST');
44
- JSON.parse(String(request.body)).should.deep.equal({ projectId: guid.toLowerCase(), name: ' My Project ' });
45
- new Headers(request.headers).get('x-host').should.equal('scene');
46
- new Headers(request.headers).get('x-cratis-microservice').should.equal('projects');
47
- fireEvent.change(id, { target: { value: 'broken again' } });
48
- await act(async () => { fireEvent.submit(button.form); });
49
- fetch.mock.calls.should.have.lengthOf(1);
50
- });
51
- it('keeps a typed Guid valid across a label change and executes exactly once', async () => {
52
- const result = render(view());
53
- await screen.findByRole('button', { name: 'Create project' });
54
- fireEvent.change(screen.getByRole('textbox', { name: 'Project ID' }), { target: { value: guid } });
55
- fireEvent.change(screen.getByRole('textbox', { name: 'Name' }), { target: { value: 'Renamed label' } });
56
- result.rerender(view({ inputs: [{ ...inputs[0], label: 'Project identifier' }, inputs[1]] }));
57
- const id = screen.getByRole('textbox', { name: 'Project identifier' });
58
- id.value.should.equal(guid);
59
- await act(async () => { fireEvent.click(screen.getByRole('button', { name: 'Create project' })); });
60
- await waitFor(() => fetch.mock.calls.should.have.lengthOf(1));
61
- JSON.parse(String(fetch.mock.calls[0][1].body)).should.deep.equal({ projectId: guid.toLowerCase(), name: 'Renamed label' });
62
- });
63
- it('keeps a malformed Guid blocked when its label changes, then submits the corrected typed value', async () => {
64
- const result = render(view());
65
- await screen.findByRole('button', { name: 'Create project' });
66
- fireEvent.change(screen.getByRole('textbox', { name: 'Name' }), { target: { value: 'After correction' } });
67
- fireEvent.change(screen.getByRole('textbox', { name: 'Project ID' }), { target: { value: 'not-a-guid' } });
68
- (await screen.findAllByText('Project ID must be a valid GUID')).length.should.be.greaterThan(0);
69
- result.rerender(view({ inputs: [{ ...inputs[0], label: 'Project identifier' }, inputs[1]] }));
70
- const id = screen.getByRole('textbox', { name: 'Project identifier' });
71
- id.value.should.equal('not-a-guid');
72
- (await screen.findAllByText('Project identifier must be a valid GUID')).length.should.be.greaterThan(0);
73
- (screen.queryByText('Project ID must be a valid GUID') === null).should.equal(true);
74
- await act(async () => { fireEvent.submit(id.closest('form')); });
75
- fetch.mock.calls.should.have.lengthOf(0);
76
- fireEvent.change(id, { target: { value: guid } });
77
- await act(async () => { fireEvent.submit(id.closest('form')); });
78
- await waitFor(() => fetch.mock.calls.should.have.lengthOf(1));
79
- JSON.parse(String(fetch.mock.calls[0][1].body)).should.deep.equal({ projectId: guid.toLowerCase(), name: 'After correction' });
80
- });
81
- it('remounts the native explicit proxy on a binding switch and same-name hot replacement', async () => {
82
- class MovedProject extends StartProject {
83
- route = '/synthetic/moved-projects';
84
- }
85
- class HotProject extends StartProject {
86
- route = '/synthetic/hot-projects';
87
- }
88
- registerCommand('MovedProject', MovedProject);
89
- const result = render(view());
90
- await screen.findByRole('button', { name: 'Create project' });
91
- result.rerender(view({ command: 'MovedProject' }));
92
- await screen.findByRole('textbox', { name: 'Project ID' });
93
- fireEvent.change(screen.getByRole('textbox', { name: 'Project ID' }), { target: { value: guid } });
94
- fireEvent.change(screen.getByRole('textbox', { name: 'Name' }), { target: { value: 'Moved' } });
95
- await act(async () => { fireEvent.click(screen.getByRole('button', { name: 'Create project' })); });
96
- await waitFor(() => fetch.mock.calls.should.have.lengthOf(1));
97
- String(fetch.mock.calls[0][0]).should.equal('https://example.test/backend/synthetic/moved-projects');
98
- registerCommand('MovedProject', RestrictedProject);
99
- result.rerender(view({ command: 'MovedProject' }));
100
- const denied = await screen.findByRole('button', { name: 'Create project' });
101
- denied.disabled.should.equal(true);
102
- fireEvent.click(denied);
103
- fetch.mock.calls.should.have.lengthOf(1);
104
- registerCommand('MovedProject', HotProject);
105
- result.rerender(view({ command: 'MovedProject' }));
106
- const allowed = await screen.findByRole('button', { name: 'Create project' });
107
- allowed.disabled.should.equal(false);
108
- fireEvent.change(screen.getByRole('textbox', { name: 'Project ID' }), { target: { value: guid } });
109
- fireEvent.change(screen.getByRole('textbox', { name: 'Name' }), { target: { value: 'Hot' } });
110
- await act(async () => { fireEvent.click(allowed); });
111
- await waitFor(() => fetch.mock.calls.should.have.lengthOf(2));
112
- String(fetch.mock.calls[1][0]).should.equal('https://example.test/backend/synthetic/hot-projects');
113
- });
114
- it('uses native authorization and executing state', async () => {
115
- registerCommand('StartProject', RestrictedProject);
116
- render(view());
117
- const button = await screen.findByRole('button', { name: 'Create project' });
118
- button.disabled.should.equal(true);
119
- fireEvent.click(button);
120
- fetch.mock.calls.should.have.lengthOf(0);
121
- });
122
- it('reflects native execution state and blocks a second button click while pending', async () => {
123
- let complete;
124
- fetch.mockReturnValueOnce(new Promise(resolve => { complete = resolve; }));
125
- render(view());
126
- const button = await screen.findByRole('button', { name: 'Create project' });
127
- fireEvent.change(screen.getByRole('textbox', { name: 'Project ID' }), { target: { value: guid } });
128
- fireEvent.change(screen.getByRole('textbox', { name: 'Name' }), { target: { value: 'Pending' } });
129
- await act(async () => { fireEvent.click(button); });
130
- await waitFor(() => button.disabled.should.equal(true));
131
- button.getAttribute('aria-busy').should.equal('true');
132
- fireEvent.click(button);
133
- fetch.mock.calls.should.have.lengthOf(1);
134
- await act(async () => { complete(successfulResponse()); });
135
- await waitFor(() => button.disabled.should.equal(false));
136
- });
137
- it('blocks malformed declarations, unknown names, mismatches, uncovered and ambiguous required descriptors', async () => {
138
- const invalid = [
139
- { inputs: [] }, { inputs: [{ property: 'name', type: 'string', label: 'Name' }, { property: 'name', type: 'string', label: 'Again' }] },
140
- { inputs: [{ property: 'PROJECTID', type: 'guid', label: 'ID' }, inputs[1]] },
141
- { inputs: [{ ...inputs[0], type: 'string' }, inputs[1]] },
142
- { inputs: [inputs[1]] }, { inputs: [{ ...inputs[0], type: 'number' }, inputs[1]] },
143
- ];
144
- for (const properties of invalid) {
145
- const result = render(view(properties));
146
- (await screen.findByRole('alert')).textContent.length.should.be.greaterThan(0);
147
- (screen.queryByRole('button', { name: 'Create project' }) === null).should.equal(true);
148
- result.unmount();
149
- }
150
- registerCommand('StartProject', AmbiguousProject);
151
- render(view());
152
- (await screen.findByRole('alert')).textContent.should.contain('Ambiguous');
153
- fetch.mock.calls.should.have.lengthOf(0);
154
- });
155
- it('accepts optional unsupported descriptors when unbound but rejects required unsupported descriptors', async () => {
156
- registerCommand('StartProject', OptionalUnsupported);
157
- const result = render(view());
158
- Boolean(await screen.findByRole('button', { name: 'Create project' })).should.equal(true);
159
- result.unmount();
160
- registerCommand('StartProject', RequiredUnsupported);
161
- render(view());
162
- (await screen.findByRole('alert')).textContent.should.contain("Required command property 'details'");
163
- });
164
- it('refuses automatic forms with required GUID rather than silently dropping it', async () => {
165
- render(view({}, false));
166
- (await screen.findByRole('alert')).textContent.should.contain("Required command property 'projectId'");
167
- fetch.mock.calls.should.have.lengthOf(0);
168
- });
169
- it('does not allow auto exclusions to hide required supported fields', async () => {
170
- registerCommand('StartProject', RecordNote);
171
- render(view({ exclude: ['subject'] }, false));
172
- (await screen.findByRole('alert')).textContent.should.contain("Required command property 'subject'");
173
- fetch.mock.calls.should.have.lengthOf(0);
174
- });
175
- });
176
- //# sourceMappingURL=when_submitting_explicit_inputs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"when_submitting_explicit_inputs.js","sourceRoot":"","sources":["../../../../forms/for_SceneCommandForm/when_submitting_explicit_inputs.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=when_submitting_the_native_form.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"when_submitting_the_native_form.d.ts","sourceRoot":"","sources":["../../../../forms/for_SceneCommandForm/when_submitting_the_native_form.tsx"],"names":[],"mappings":""}
@@ -1,110 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { act, cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react';
3
- import { vi } from 'vitest';
4
- import { ArcContext } from '@cratis/arc.react';
5
- import { SceneElementView } from '@cratis/scene.react';
6
- import { clearBindings, registerCommand } from '../../bindings';
7
- import { cratisComponents } from '../../cratisComponents';
8
- import { externalComponent } from '../../given';
9
- import { RecordNote, RestrictedNote, successfulResponse } from './given/RecordNote';
10
- function view(properties = {}) {
11
- return _jsx(ArcContext.Provider, { value: { origin: 'https://example.test', apiBasePath: '/backend', microservice: 'notes', httpHeadersCallback: () => ({ 'x-host': 'scene' }) }, children: _jsx(SceneElementView, { element: externalComponent('Cratis.Components:commandForm', {
12
- command: 'RecordNote', exclude: ['internalValue'], ...properties,
13
- }), registry: cratisComponents, resolveBinding: () => undefined }) });
14
- }
15
- describe('when submitting a Scene command form through native AutoCommandForm', () => {
16
- const fetch = vi.fn();
17
- beforeEach(() => {
18
- clearBindings();
19
- registerCommand('RecordNote', RecordNote);
20
- fetch.mockReset();
21
- fetch.mockResolvedValue(successfulResponse());
22
- vi.stubGlobal('fetch', fetch);
23
- });
24
- afterEach(() => { cleanup(); clearBindings(); vi.unstubAllGlobals(); });
25
- it('should submit the actual form with a labeled button and preserve native payload and context', async () => {
26
- render(view({ submitLabel: 'Record note' }));
27
- const button = await screen.findByRole('button', { name: 'Record note' });
28
- button.type.should.equal('submit');
29
- (button.form === screen.getByRole('textbox', { name: 'Subject' }).closest('form')).should.equal(true);
30
- screen.queryAllByRole('textbox').should.have.lengthOf(1);
31
- fireEvent.change(screen.getByRole('textbox', { name: 'Subject' }), { target: { value: 'A synthetic note' } });
32
- fetch.mock.calls.should.have.lengthOf(0);
33
- await act(async () => { fireEvent.click(button); });
34
- await waitFor(() => fetch.mock.calls.should.have.lengthOf(1));
35
- const [url, request] = fetch.mock.calls[0];
36
- String(url).should.equal('https://example.test/backend/synthetic/notes');
37
- request.method.should.equal('POST');
38
- JSON.parse(String(request.body)).should.deep.equal({ subject: 'A synthetic note', internalValue: 'proxy default' });
39
- new Headers(request.headers).get('x-host').should.equal('scene');
40
- new Headers(request.headers).get('x-cratis-microservice').should.equal('notes');
41
- });
42
- it('should allow untouched invalid submit to reveal native feedback and correction to execute', async () => {
43
- render(view());
44
- const button = await screen.findByRole('button', { name: 'Submit' });
45
- button.disabled.should.equal(false);
46
- (screen.queryByText('Subject is required') === null).should.equal(true);
47
- await act(async () => { fireEvent.click(button); });
48
- (await screen.findAllByText('Subject is required')).length.should.be.greaterThan(0);
49
- fetch.mock.calls.should.have.lengthOf(0);
50
- button.disabled.should.equal(false);
51
- fireEvent.change(screen.getByRole('textbox', { name: 'Subject' }), { target: { value: 'Corrected' } });
52
- await act(async () => { fireEvent.click(button); });
53
- await waitFor(() => fetch.mock.calls.should.have.lengthOf(1));
54
- });
55
- it('should reflect native execution until HTTP settles and prevent a second button click', async () => {
56
- let complete;
57
- fetch.mockReturnValueOnce(new Promise(resolve => { complete = resolve; }));
58
- render(view());
59
- const button = await screen.findByRole('button', { name: 'Submit' });
60
- fireEvent.change(screen.getByRole('textbox', { name: 'Subject' }), { target: { value: 'Pending' } });
61
- await act(async () => { fireEvent.click(button); });
62
- await waitFor(() => button.disabled.should.equal(true));
63
- button.getAttribute('aria-busy').should.equal('true');
64
- fireEvent.click(button);
65
- fetch.mock.calls.should.have.lengthOf(1);
66
- await act(async () => { complete(successfulResponse()); });
67
- await waitFor(() => button.disabled.should.equal(false));
68
- button.getAttribute('aria-busy').should.equal('false');
69
- });
70
- it('remounts the automatic native form on binding switches and same-name hot replacement', async () => {
71
- class MovedNote extends RecordNote {
72
- route = '/synthetic/moved-notes';
73
- }
74
- class HotNote extends RecordNote {
75
- route = '/synthetic/hot-notes';
76
- }
77
- registerCommand('MovedNote', MovedNote);
78
- const result = render(view());
79
- await screen.findByRole('button', { name: 'Submit' });
80
- result.rerender(view({ command: 'MovedNote' }));
81
- await screen.findByRole('textbox', { name: 'Subject' });
82
- fireEvent.change(screen.getByRole('textbox', { name: 'Subject' }), { target: { value: 'Moved' } });
83
- await act(async () => { fireEvent.click(screen.getByRole('button', { name: 'Submit' })); });
84
- await waitFor(() => fetch.mock.calls.should.have.lengthOf(1));
85
- String(fetch.mock.calls[0][0]).should.equal('https://example.test/backend/synthetic/moved-notes');
86
- registerCommand('MovedNote', RestrictedNote);
87
- result.rerender(view({ command: 'MovedNote' }));
88
- const denied = await screen.findByRole('button', { name: 'Submit' });
89
- denied.disabled.should.equal(true);
90
- fireEvent.click(denied);
91
- fetch.mock.calls.should.have.lengthOf(1);
92
- registerCommand('MovedNote', HotNote);
93
- result.rerender(view({ command: 'MovedNote' }));
94
- const allowed = await screen.findByRole('button', { name: 'Submit' });
95
- allowed.disabled.should.equal(false);
96
- fireEvent.change(screen.getByRole('textbox', { name: 'Subject' }), { target: { value: 'Hot' } });
97
- await act(async () => { fireEvent.click(allowed); });
98
- await waitFor(() => fetch.mock.calls.should.have.lengthOf(2));
99
- String(fetch.mock.calls[1][0]).should.equal('https://example.test/backend/synthetic/hot-notes');
100
- });
101
- it('should disable the button when native command authorization denies the identity', async () => {
102
- registerCommand('RecordNote', RestrictedNote);
103
- render(view());
104
- const button = await screen.findByRole('button', { name: 'Submit' });
105
- button.disabled.should.equal(true);
106
- fireEvent.click(button);
107
- fetch.mock.calls.should.have.lengthOf(0);
108
- });
109
- });
110
- //# sourceMappingURL=when_submitting_the_native_form.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"when_submitting_the_native_form.js","sourceRoot":"","sources":["../../../../forms/for_SceneCommandForm/when_submitting_the_native_form.tsx"],"names":[],"mappings":"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"}