brut 0.12.1 → 0.13.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 (356) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/Gemfile.lock +1 -1
  4. data/brut-css/package-lock.json +2 -2
  5. data/brut-css/package.json +1 -1
  6. data/brut-js/package-lock.json +18 -288
  7. data/brut-js/package.json +2 -2
  8. data/brut-js/specs/AjaxSubmit.spec.js +48 -0
  9. data/brut-js/src/AjaxSubmit.js +77 -18
  10. data/brutrb.com/recipes/authentication.md +6 -6
  11. data/docs/404.html +2 -2
  12. data/docs/adrs.html +3 -3
  13. data/docs/ai.html +3 -3
  14. data/docs/api/Brut/BackEnd/SeedData.html +1 -1
  15. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server/FlushSpans.html +1 -1
  16. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server.html +1 -1
  17. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares.html +1 -1
  18. data/docs/api/Brut/BackEnd/Sidekiq.html +1 -1
  19. data/docs/api/Brut/BackEnd/Validators/FormValidator.html +1 -1
  20. data/docs/api/Brut/BackEnd/Validators.html +1 -1
  21. data/docs/api/Brut/BackEnd.html +1 -1
  22. data/docs/api/Brut/CLI/App.html +1 -1
  23. data/docs/api/Brut/CLI/AppRunner.html +1 -1
  24. data/docs/api/Brut/CLI/Apps/BuildAssets/All.html +1 -1
  25. data/docs/api/Brut/CLI/Apps/BuildAssets/CSS.html +1 -1
  26. data/docs/api/Brut/CLI/Apps/BuildAssets/Images.html +1 -1
  27. data/docs/api/Brut/CLI/Apps/BuildAssets/JS.html +1 -1
  28. data/docs/api/Brut/CLI/Apps/BuildAssets.html +1 -1
  29. data/docs/api/Brut/CLI/Apps/DB/Create.html +1 -1
  30. data/docs/api/Brut/CLI/Apps/DB/Drop.html +1 -1
  31. data/docs/api/Brut/CLI/Apps/DB/Migrate.html +1 -1
  32. data/docs/api/Brut/CLI/Apps/DB/NewMigration.html +1 -1
  33. data/docs/api/Brut/CLI/Apps/DB/Rebuild.html +1 -1
  34. data/docs/api/Brut/CLI/Apps/DB/Seed.html +1 -1
  35. data/docs/api/Brut/CLI/Apps/DB/Status.html +1 -1
  36. data/docs/api/Brut/CLI/Apps/DB.html +1 -1
  37. data/docs/api/Brut/CLI/Apps/DeployBase/GitChecks.html +1 -1
  38. data/docs/api/Brut/CLI/Apps/DeployBase.html +1 -1
  39. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy/Deploy.html +1 -1
  40. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy.html +1 -1
  41. data/docs/api/Brut/CLI/Apps/Scaffold/Action/Route.html +1 -1
  42. data/docs/api/Brut/CLI/Apps/Scaffold/Action.html +1 -1
  43. data/docs/api/Brut/CLI/Apps/Scaffold/Component.html +1 -1
  44. data/docs/api/Brut/CLI/Apps/Scaffold/CustomElementTest.html +1 -1
  45. data/docs/api/Brut/CLI/Apps/Scaffold/DbModel.html +1 -1
  46. data/docs/api/Brut/CLI/Apps/Scaffold/E2ETest.html +1 -1
  47. data/docs/api/Brut/CLI/Apps/Scaffold/Form.html +1 -1
  48. data/docs/api/Brut/CLI/Apps/Scaffold/Page/Route.html +1 -1
  49. data/docs/api/Brut/CLI/Apps/Scaffold/Page.html +1 -1
  50. data/docs/api/Brut/CLI/Apps/Scaffold/RoutesEditor.html +1 -1
  51. data/docs/api/Brut/CLI/Apps/Scaffold/Test.html +1 -1
  52. data/docs/api/Brut/CLI/Apps/Scaffold.html +1 -1
  53. data/docs/api/Brut/CLI/Apps/Test/Audit.html +1 -1
  54. data/docs/api/Brut/CLI/Apps/Test/E2e.html +1 -1
  55. data/docs/api/Brut/CLI/Apps/Test/JS.html +1 -1
  56. data/docs/api/Brut/CLI/Apps/Test/Run.html +1 -1
  57. data/docs/api/Brut/CLI/Apps/Test.html +1 -1
  58. data/docs/api/Brut/CLI/Apps.html +1 -1
  59. data/docs/api/Brut/CLI/Command.html +1 -1
  60. data/docs/api/Brut/CLI/Error.html +1 -1
  61. data/docs/api/Brut/CLI/ExecutionResults/Result.html +1 -1
  62. data/docs/api/Brut/CLI/ExecutionResults.html +1 -1
  63. data/docs/api/Brut/CLI/Executor.html +1 -1
  64. data/docs/api/Brut/CLI/InvalidOption.html +1 -1
  65. data/docs/api/Brut/CLI/Options.html +1 -1
  66. data/docs/api/Brut/CLI/Output.html +1 -1
  67. data/docs/api/Brut/CLI/SystemExecError.html +1 -1
  68. data/docs/api/Brut/CLI.html +1 -1
  69. data/docs/api/Brut/FactoryBot.html +1 -1
  70. data/docs/api/Brut/Framework/App.html +1 -1
  71. data/docs/api/Brut/Framework/Config.html +1 -1
  72. data/docs/api/Brut/Framework/Container.html +1 -1
  73. data/docs/api/Brut/Framework/Error.html +1 -1
  74. data/docs/api/Brut/Framework/Errors/AbstractMethod.html +1 -1
  75. data/docs/api/Brut/Framework/Errors/Bug.html +1 -1
  76. data/docs/api/Brut/Framework/Errors/MissingConfiguration.html +1 -1
  77. data/docs/api/Brut/Framework/Errors/MissingParameter.html +1 -1
  78. data/docs/api/Brut/Framework/Errors/NoClassForPath.html +1 -1
  79. data/docs/api/Brut/Framework/Errors/NotFound.html +1 -1
  80. data/docs/api/Brut/Framework/Errors/NotImplemented.html +1 -1
  81. data/docs/api/Brut/Framework/Errors.html +1 -1
  82. data/docs/api/Brut/Framework/FussyTypeEnforcement.html +1 -1
  83. data/docs/api/Brut/Framework/MCP.html +1 -1
  84. data/docs/api/Brut/Framework/ProjectEnvironment.html +1 -1
  85. data/docs/api/Brut/Framework.html +1 -1
  86. data/docs/api/Brut/FrontEnd/AssetPathResolver.html +1 -1
  87. data/docs/api/Brut/FrontEnd/Component/Helpers.html +1 -1
  88. data/docs/api/Brut/FrontEnd/Component.html +1 -1
  89. data/docs/api/Brut/FrontEnd/Components/ConstraintViolations.html +1 -1
  90. data/docs/api/Brut/FrontEnd/Components/FormTag.html +1 -1
  91. data/docs/api/Brut/FrontEnd/Components/I18nTranslations.html +1 -1
  92. data/docs/api/Brut/FrontEnd/Components/Input.html +1 -1
  93. data/docs/api/Brut/FrontEnd/Components/Inputs/ButtonTag.html +1 -1
  94. data/docs/api/Brut/FrontEnd/Components/Inputs/CsrfToken.html +1 -1
  95. data/docs/api/Brut/FrontEnd/Components/Inputs/InputTag.html +1 -1
  96. data/docs/api/Brut/FrontEnd/Components/Inputs/RadioButton.html +1 -1
  97. data/docs/api/Brut/FrontEnd/Components/Inputs/SelectTagWithOptions.html +1 -1
  98. data/docs/api/Brut/FrontEnd/Components/Inputs/TextareaTag.html +1 -1
  99. data/docs/api/Brut/FrontEnd/Components/Inputs.html +1 -1
  100. data/docs/api/Brut/FrontEnd/Components/LocaleDetection.html +1 -1
  101. data/docs/api/Brut/FrontEnd/Components/PageIdentifier.html +1 -1
  102. data/docs/api/Brut/FrontEnd/Components/TimeTag.html +1 -1
  103. data/docs/api/Brut/FrontEnd/Components/Traceparent.html +1 -1
  104. data/docs/api/Brut/FrontEnd/Components.html +1 -1
  105. data/docs/api/Brut/FrontEnd/CsrfProtector.html +1 -1
  106. data/docs/api/Brut/FrontEnd/Download.html +1 -1
  107. data/docs/api/Brut/FrontEnd/Flash.html +1 -1
  108. data/docs/api/Brut/FrontEnd/Form.html +1 -1
  109. data/docs/api/Brut/FrontEnd/Forms/Button.html +1 -1
  110. data/docs/api/Brut/FrontEnd/Forms/ButtonInputDefinition.html +1 -1
  111. data/docs/api/Brut/FrontEnd/Forms/ConstraintViolation.html +1 -1
  112. data/docs/api/Brut/FrontEnd/Forms/Input/Color.html +1 -1
  113. data/docs/api/Brut/FrontEnd/Forms/Input/TimeOfDay.html +1 -1
  114. data/docs/api/Brut/FrontEnd/Forms/Input.html +1 -1
  115. data/docs/api/Brut/FrontEnd/Forms/InputDeclarations.html +1 -1
  116. data/docs/api/Brut/FrontEnd/Forms/InputDefinition.html +1 -1
  117. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInput.html +1 -1
  118. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInputDefinition.html +1 -1
  119. data/docs/api/Brut/FrontEnd/Forms/SelectInput.html +1 -1
  120. data/docs/api/Brut/FrontEnd/Forms/SelectInputDefinition.html +1 -1
  121. data/docs/api/Brut/FrontEnd/Forms/ValidityState.html +1 -1
  122. data/docs/api/Brut/FrontEnd/Forms.html +1 -1
  123. data/docs/api/Brut/FrontEnd/GenericResponse.html +1 -1
  124. data/docs/api/Brut/FrontEnd/Handler.html +1 -1
  125. data/docs/api/Brut/FrontEnd/Handlers/CspReportingHandler.html +1 -1
  126. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler/TraceParent.html +1 -1
  127. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler.html +1 -1
  128. data/docs/api/Brut/FrontEnd/Handlers/LocaleDetectionHandler.html +1 -1
  129. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler/Form.html +1 -1
  130. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler.html +1 -1
  131. data/docs/api/Brut/FrontEnd/Handlers.html +1 -1
  132. data/docs/api/Brut/FrontEnd/HandlingResults.html +1 -1
  133. data/docs/api/Brut/FrontEnd/HttpMethod.html +1 -1
  134. data/docs/api/Brut/FrontEnd/HttpStatus.html +1 -1
  135. data/docs/api/Brut/FrontEnd/InlineSvgLocator.html +1 -1
  136. data/docs/api/Brut/FrontEnd/Layout.html +1 -1
  137. data/docs/api/Brut/FrontEnd/Middleware.html +1 -1
  138. data/docs/api/Brut/FrontEnd/Middlewares/AnnotateBrutOwnedPaths.html +1 -1
  139. data/docs/api/Brut/FrontEnd/Middlewares/Favicon.html +1 -1
  140. data/docs/api/Brut/FrontEnd/Middlewares/OpenTelemetrySpan.html +1 -1
  141. data/docs/api/Brut/FrontEnd/Middlewares/ReloadApp.html +1 -1
  142. data/docs/api/Brut/FrontEnd/Middlewares.html +1 -1
  143. data/docs/api/Brut/FrontEnd/Page.html +1 -1
  144. data/docs/api/Brut/FrontEnd/Pages/MissingPage.html +1 -1
  145. data/docs/api/Brut/FrontEnd/Pages.html +1 -1
  146. data/docs/api/Brut/FrontEnd/RequestContext.html +1 -1
  147. data/docs/api/Brut/FrontEnd/RouteHook.html +1 -1
  148. data/docs/api/Brut/FrontEnd/RouteHooks/AgeFlash.html +1 -1
  149. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineScripts.html +1 -1
  150. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts/ReportOnly.html +1 -1
  151. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts.html +1 -1
  152. data/docs/api/Brut/FrontEnd/RouteHooks/LocaleDetection.html +1 -1
  153. data/docs/api/Brut/FrontEnd/RouteHooks/SetupRequestContext.html +1 -1
  154. data/docs/api/Brut/FrontEnd/RouteHooks.html +1 -1
  155. data/docs/api/Brut/FrontEnd/Routing/FormHandlerRoute.html +1 -1
  156. data/docs/api/Brut/FrontEnd/Routing/FormRoute.html +1 -1
  157. data/docs/api/Brut/FrontEnd/Routing/MissingForm.html +1 -1
  158. data/docs/api/Brut/FrontEnd/Routing/MissingHandler.html +1 -1
  159. data/docs/api/Brut/FrontEnd/Routing/MissingPage.html +1 -1
  160. data/docs/api/Brut/FrontEnd/Routing/MissingPath.html +1 -1
  161. data/docs/api/Brut/FrontEnd/Routing/PageRoute.html +1 -1
  162. data/docs/api/Brut/FrontEnd/Routing/Route.html +1 -1
  163. data/docs/api/Brut/FrontEnd/Routing.html +1 -1
  164. data/docs/api/Brut/FrontEnd/Session.html +1 -1
  165. data/docs/api/Brut/FrontEnd.html +1 -1
  166. data/docs/api/Brut/I18n/BaseMethods.html +1 -1
  167. data/docs/api/Brut/I18n/ForBackEnd.html +1 -1
  168. data/docs/api/Brut/I18n/ForCLI.html +1 -1
  169. data/docs/api/Brut/I18n/ForHTML.html +1 -1
  170. data/docs/api/Brut/I18n/HTTPAcceptLanguage/AlwaysEnglish.html +1 -1
  171. data/docs/api/Brut/I18n/HTTPAcceptLanguage.html +1 -1
  172. data/docs/api/Brut/I18n.html +1 -1
  173. data/docs/api/Brut/Instrumentation/LoggerSpanExporter.html +1 -1
  174. data/docs/api/Brut/Instrumentation/Methods/ClassMethods.html +1 -1
  175. data/docs/api/Brut/Instrumentation/Methods.html +1 -1
  176. data/docs/api/Brut/Instrumentation/OpenTelemetry/NormalizedAttributes.html +1 -1
  177. data/docs/api/Brut/Instrumentation/OpenTelemetry/Span.html +1 -1
  178. data/docs/api/Brut/Instrumentation/OpenTelemetry.html +1 -1
  179. data/docs/api/Brut/Instrumentation.html +1 -1
  180. data/docs/api/Brut/RubocopConfig.html +1 -1
  181. data/docs/api/Brut/SinatraHelpers/ClassMethods.html +1 -1
  182. data/docs/api/Brut/SinatraHelpers.html +1 -1
  183. data/docs/api/Brut/SpecSupport/ClockSupport.html +1 -1
  184. data/docs/api/Brut/SpecSupport/ComponentSupport.html +1 -1
  185. data/docs/api/Brut/SpecSupport/E2ETestServer.html +1 -1
  186. data/docs/api/Brut/SpecSupport/E2eSupport.html +1 -1
  187. data/docs/api/Brut/SpecSupport/EnhancedNode.html +1 -1
  188. data/docs/api/Brut/SpecSupport/FlashSupport.html +1 -1
  189. data/docs/api/Brut/SpecSupport/GeneralSupport/ClassMethods.html +1 -1
  190. data/docs/api/Brut/SpecSupport/GeneralSupport.html +1 -1
  191. data/docs/api/Brut/SpecSupport/HandlerSupport.html +1 -1
  192. data/docs/api/Brut/SpecSupport/Matchers/BeABug.html +1 -1
  193. data/docs/api/Brut/SpecSupport/Matchers/BePageFor.html +1 -1
  194. data/docs/api/Brut/SpecSupport/Matchers/BeRoutingFor.html +1 -1
  195. data/docs/api/Brut/SpecSupport/Matchers/HaveConstraintViolation.html +1 -1
  196. data/docs/api/Brut/SpecSupport/Matchers/HaveGenerated.html +1 -1
  197. data/docs/api/Brut/SpecSupport/Matchers/HaveHTMLAttribute.html +1 -1
  198. data/docs/api/Brut/SpecSupport/Matchers/HaveI18nString.html +1 -1
  199. data/docs/api/Brut/SpecSupport/Matchers/HaveLinkTo.html +1 -1
  200. data/docs/api/Brut/SpecSupport/Matchers/HaveRedirectedTo.html +1 -1
  201. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedHttpStatus.html +1 -1
  202. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedRackResponse.html +1 -1
  203. data/docs/api/Brut/SpecSupport/Matchers.html +1 -1
  204. data/docs/api/Brut/SpecSupport/RSpecSetup/OptionalSidekiqSupport.html +1 -1
  205. data/docs/api/Brut/SpecSupport/RSpecSetup.html +1 -1
  206. data/docs/api/Brut/SpecSupport/SessionSupport.html +1 -1
  207. data/docs/api/Brut/SpecSupport.html +1 -1
  208. data/docs/api/Brut.html +1 -1
  209. data/docs/api/Clock.html +1 -1
  210. data/docs/api/ModuleName.html +1 -1
  211. data/docs/api/RichString.html +1 -1
  212. data/docs/api/SemanticLogger/Appender/Async.html +1 -1
  213. data/docs/api/Sequel/Extensions/BrutInstrumentation.html +1 -1
  214. data/docs/api/Sequel/Extensions/BrutMigrations.html +1 -1
  215. data/docs/api/Sequel/Extensions.html +1 -1
  216. data/docs/api/Sequel/Plugins/CreatedAt/InstanceMethods.html +1 -1
  217. data/docs/api/Sequel/Plugins/CreatedAt.html +1 -1
  218. data/docs/api/Sequel/Plugins/ExternalId/ClassMethods.html +1 -1
  219. data/docs/api/Sequel/Plugins/ExternalId/InstanceMethods.html +1 -1
  220. data/docs/api/Sequel/Plugins/ExternalId.html +1 -1
  221. data/docs/api/Sequel/Plugins/FindBang/ClassMethods.html +1 -1
  222. data/docs/api/Sequel/Plugins/FindBang.html +1 -1
  223. data/docs/api/Sequel/Plugins.html +1 -1
  224. data/docs/api/Sequel.html +1 -1
  225. data/docs/api/_index.html +1 -1
  226. data/docs/api/file.README.html +1 -1
  227. data/docs/api/index.html +1 -1
  228. data/docs/api/top-level-namespace.html +1 -1
  229. data/docs/assets/{app.CGHFI-MA.js → app.BDtsVxyd.js} +1 -1
  230. data/docs/assets/chunks/@localSearchIndexroot.BWVzhs5N.js +1 -0
  231. data/docs/assets/chunks/{VPLocalSearchBox.-c-Kihwo.js → VPLocalSearchBox.DCJk5nAW.js} +1 -1
  232. data/docs/assets/chunks/{theme.DpqrgXG8.js → theme.DZKmijwi.js} +2 -2
  233. data/docs/assets/{components.md.X4h_TEG-.js → components.md.rMhQ0WdZ.js} +3 -3
  234. data/docs/assets/{configuration.md.CPCyUo5A.js → configuration.md.BK42Yjp_.js} +1 -1
  235. data/docs/assets/{forms.md.BwmfAZ6Z.js → forms.md.v9qIbmUM.js} +2 -2
  236. data/docs/assets/{forms.md.BwmfAZ6Z.lean.js → forms.md.v9qIbmUM.lean.js} +1 -1
  237. data/docs/assets/{getting-started.md.mPgbkbBv.js → getting-started.md.DTOl4c2g.js} +2 -2
  238. data/docs/assets/{recipes_authentication.md.BAISoxmN.js → recipes_authentication.md.nwO6F7Ou.js} +6 -6
  239. data/docs/assets/{tutorials_02-dialog.md.DOonTBrE.js → tutorials_02-dialog.md.CPNK1SC_.js} +2 -2
  240. data/docs/assets/{tutorials_02-dialog.md.DOonTBrE.lean.js → tutorials_02-dialog.md.CPNK1SC_.lean.js} +1 -1
  241. data/docs/assets.html +3 -3
  242. data/docs/brut-js/api/AjaxSubmit.html +29 -10
  243. data/docs/brut-js/api/AjaxSubmit.js.html +78 -19
  244. data/docs/brut-js/api/Autosubmit.html +1 -1
  245. data/docs/brut-js/api/Autosubmit.js.html +1 -1
  246. data/docs/brut-js/api/BaseCustomElement.html +1 -1
  247. data/docs/brut-js/api/BaseCustomElement.js.html +1 -1
  248. data/docs/brut-js/api/BrutCustomElements.html +1 -1
  249. data/docs/brut-js/api/BufferedLogger.html +1 -1
  250. data/docs/brut-js/api/ConfirmSubmit.html +1 -1
  251. data/docs/brut-js/api/ConfirmSubmit.js.html +1 -1
  252. data/docs/brut-js/api/ConfirmationDialog.html +1 -1
  253. data/docs/brut-js/api/ConfirmationDialog.js.html +1 -1
  254. data/docs/brut-js/api/ConstraintViolationMessage.html +1 -1
  255. data/docs/brut-js/api/ConstraintViolationMessage.js.html +1 -1
  256. data/docs/brut-js/api/ConstraintViolationMessages.html +1 -1
  257. data/docs/brut-js/api/ConstraintViolationMessages.js.html +1 -1
  258. data/docs/brut-js/api/CopyToClipboard.html +1 -1
  259. data/docs/brut-js/api/CopyToClipboard.js.html +1 -1
  260. data/docs/brut-js/api/Form.html +1 -1
  261. data/docs/brut-js/api/Form.js.html +1 -1
  262. data/docs/brut-js/api/I18nTranslation.html +1 -1
  263. data/docs/brut-js/api/I18nTranslation.js.html +1 -1
  264. data/docs/brut-js/api/LocaleDetection.html +1 -1
  265. data/docs/brut-js/api/LocaleDetection.js.html +1 -1
  266. data/docs/brut-js/api/Logger.html +1 -1
  267. data/docs/brut-js/api/Logger.js.html +1 -1
  268. data/docs/brut-js/api/Message.html +1 -1
  269. data/docs/brut-js/api/Message.js.html +1 -1
  270. data/docs/brut-js/api/PrefixedLogger.html +1 -1
  271. data/docs/brut-js/api/RichString.html +1 -1
  272. data/docs/brut-js/api/RichString.js.html +1 -1
  273. data/docs/brut-js/api/Tabs.html +1 -1
  274. data/docs/brut-js/api/Tabs.js.html +1 -1
  275. data/docs/brut-js/api/Tracing.html +1 -1
  276. data/docs/brut-js/api/Tracing.js.html +1 -1
  277. data/docs/brut-js/api/external-CustomElementRegistry.html +1 -1
  278. data/docs/brut-js/api/external-Performance.html +1 -1
  279. data/docs/brut-js/api/external-Promise.html +1 -1
  280. data/docs/brut-js/api/external-ValidityState.html +1 -1
  281. data/docs/brut-js/api/external-Window.html +1 -1
  282. data/docs/brut-js/api/external-fetch.html +1 -1
  283. data/docs/brut-js/api/global.html +1 -1
  284. data/docs/brut-js/api/index.html +1 -1
  285. data/docs/brut-js/api/index.js.html +1 -1
  286. data/docs/brut-js/api/module-testing.html +1 -1
  287. data/docs/brut-js/api/testing.AssetMetadata.html +1 -1
  288. data/docs/brut-js/api/testing.AssetMetadataLoader.html +1 -1
  289. data/docs/brut-js/api/testing.CustomElementTest.html +1 -1
  290. data/docs/brut-js/api/testing.DOMCreator.html +1 -1
  291. data/docs/brut-js/api/testing_AssetMetadata.js.html +1 -1
  292. data/docs/brut-js/api/testing_AssetMetadataLoader.js.html +1 -1
  293. data/docs/brut-js/api/testing_CustomElementTest.js.html +1 -1
  294. data/docs/brut-js/api/testing_DOMCreator.js.html +1 -1
  295. data/docs/brut-js/api/testing_index.js.html +1 -1
  296. data/docs/brut-js.html +3 -3
  297. data/docs/business-logic.html +3 -3
  298. data/docs/cli.html +3 -3
  299. data/docs/components.html +7 -7
  300. data/docs/configuration.html +5 -5
  301. data/docs/css.html +3 -3
  302. data/docs/custom-element-tests.html +3 -3
  303. data/docs/database-access.html +3 -3
  304. data/docs/database-schema.html +3 -3
  305. data/docs/deployment.html +3 -3
  306. data/docs/dev-environment.html +3 -3
  307. data/docs/dir-structure.html +3 -3
  308. data/docs/doc-conventions.html +3 -3
  309. data/docs/end-to-end-tests.html +3 -3
  310. data/docs/features.html +3 -3
  311. data/docs/flash-and-session.html +3 -3
  312. data/docs/form-constraints.html +3 -3
  313. data/docs/forms.html +5 -5
  314. data/docs/getting-started.html +6 -6
  315. data/docs/handlers.html +3 -3
  316. data/docs/hashmap.json +1 -1
  317. data/docs/hooks.html +3 -3
  318. data/docs/i18n.html +3 -3
  319. data/docs/index.html +3 -3
  320. data/docs/instrumentation.html +3 -3
  321. data/docs/javascript.html +3 -3
  322. data/docs/jobs.html +3 -3
  323. data/docs/keyword-injection.html +3 -3
  324. data/docs/layouts.html +3 -3
  325. data/docs/lsp.html +3 -3
  326. data/docs/markdown-examples.html +3 -3
  327. data/docs/middleware.html +3 -3
  328. data/docs/overview.html +3 -3
  329. data/docs/pages.html +3 -3
  330. data/docs/recipes/alternate-layouts.html +3 -3
  331. data/docs/recipes/authentication.html +10 -10
  332. data/docs/recipes/blank-layouts.html +3 -3
  333. data/docs/recipes/custom-flash.html +3 -3
  334. data/docs/recipes/form-errors.html +3 -3
  335. data/docs/recipes/indexed-forms.html +3 -3
  336. data/docs/recipes/migrations.html +3 -3
  337. data/docs/recipes/text-field-component.html +3 -3
  338. data/docs/roadmap.html +3 -3
  339. data/docs/routes.html +3 -3
  340. data/docs/security.html +3 -3
  341. data/docs/seed-data.html +3 -3
  342. data/docs/space-time-continuum.html +3 -3
  343. data/docs/tutorial.html +3 -3
  344. data/docs/tutorials/01-intro.html +3 -3
  345. data/docs/tutorials/02-dialog.html +5 -5
  346. data/docs/unit-tests.html +3 -3
  347. data/docs/why.html +3 -3
  348. data/lib/brut/version.rb +1 -1
  349. data/mkbrut/Gemfile.lock +1 -1
  350. data/mkbrut/lib/mkbrut/version.rb +1 -1
  351. metadata +17 -17
  352. data/docs/assets/chunks/@localSearchIndexroot.DcMsFVrO.js +0 -1
  353. /data/docs/assets/{components.md.X4h_TEG-.lean.js → components.md.rMhQ0WdZ.lean.js} +0 -0
  354. /data/docs/assets/{configuration.md.CPCyUo5A.lean.js → configuration.md.BK42Yjp_.lean.js} +0 -0
  355. /data/docs/assets/{getting-started.md.mPgbkbBv.lean.js → getting-started.md.DTOl4c2g.lean.js} +0 -0
  356. /data/docs/assets/{recipes_authentication.md.BAISoxmN.lean.js → recipes_authentication.md.nwO6F7Ou.lean.js} +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cb8c1989e7e038f567c72a0850b5bd3e26eb9c7a474cdcaa41f644b8ed2a6c71
4
- data.tar.gz: 0aa26cdacbd44602b4702b5e00561f17c990231835bf1766b19a9dc719dbde45
3
+ metadata.gz: 3bd46fe65d3487de66c4e13c73eb6a7de32e95fdbade6667c75490386e7400f6
4
+ data.tar.gz: 34945a93e94083e72a62b363f46a9b6a0a933830803525a4df52e68d6b9f419c
5
5
  SHA512:
6
- metadata.gz: 37331b22821e530899d8963f0d77ff46369c995bd414e46ff5fd9e88532d19d5ac7000031c3780797691b59616708338a9451aad6fb0e8cc6fb0084b91e11639
7
- data.tar.gz: 6fa08ff822476fa905e079c59dcb3f9bda9229b8746aa20c04c1e322090c01669d037f79786156f11e39b5fb77b765d272d4e5c48845480b583e11c8060fd36c
6
+ metadata.gz: 41905f5926fdfa0460a8151a29feb85f6c3051e56cf38b4c4b577c4c5f32446b778a0f372a2fe62cfd1b63cf77eabb5b40e744a1c8ef3894eb5111467760dbea
7
+ data.tar.gz: 01e29954900a7c4c5c1329d9cbbb3ee7506ab7b4e2e0b63e040b17bf43fb962f35729068873c3e967c66c39537b784acae843c1cde05c0936c41e949161fa423
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Brut CHANGELOG
2
2
 
3
+ ## v0.13.0 - Sep 8, 2025
4
+
5
+ * `<brut-ajax-submit>` now works on forms that have `method="GET"`.
6
+ * `<brut-ajax-submit>` can now allow an additional `AbortSignal` to cancel inflight requests, beyond the builtin timeout.
7
+
3
8
  ## v0.12.1 - Sep 5, 2025
4
9
 
5
10
  * Changed where a button's default value is set to avoid it
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- brut (0.12.1)
4
+ brut (0.13.0)
5
5
  concurrent-ruby
6
6
  i18n
7
7
  irb
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "brut-css",
3
- "version": "0.12.1",
3
+ "version": "0.13.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "brut-css",
9
- "version": "0.12.1",
9
+ "version": "0.13.0",
10
10
  "license": "Hippocratic-2.1",
11
11
  "devDependencies": {
12
12
  "comment-parser": "^1.4.1",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "brut-css",
3
- "version": "0.12.1",
3
+ "version": "0.13.0",
4
4
  "description": "Utility CSS Library for Full Stack Developers",
5
5
  "keywords": [
6
6
  "css"
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "brut-js",
3
- "version": "0.12.1",
3
+ "version": "0.13.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "brut-js",
9
- "version": "0.12.1",
9
+ "version": "0.13.0",
10
10
  "license": "Hippocratic-2.1",
11
11
  "devDependencies": {
12
12
  "esbuild": "^0.24.2",
13
- "jsdom": "^25.0.1",
13
+ "jsdom": "^26.1.0",
14
14
  "mocha": "^10.8.2"
15
15
  }
16
16
  },
@@ -635,13 +635,6 @@
635
635
  "dev": true,
636
636
  "license": "Python-2.0"
637
637
  },
638
- "node_modules/asynckit": {
639
- "version": "0.4.0",
640
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
641
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
642
- "dev": true,
643
- "license": "MIT"
644
- },
645
638
  "node_modules/balanced-match": {
646
639
  "version": "1.0.2",
647
640
  "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@@ -692,20 +685,6 @@
692
685
  "dev": true,
693
686
  "license": "ISC"
694
687
  },
695
- "node_modules/call-bind-apply-helpers": {
696
- "version": "1.0.2",
697
- "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
698
- "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
699
- "dev": true,
700
- "license": "MIT",
701
- "dependencies": {
702
- "es-errors": "^1.3.0",
703
- "function-bind": "^1.1.2"
704
- },
705
- "engines": {
706
- "node": ">= 0.4"
707
- }
708
- },
709
688
  "node_modules/camelcase": {
710
689
  "version": "6.3.0",
711
690
  "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
@@ -806,19 +785,6 @@
806
785
  "dev": true,
807
786
  "license": "MIT"
808
787
  },
809
- "node_modules/combined-stream": {
810
- "version": "1.0.8",
811
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
812
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
813
- "dev": true,
814
- "license": "MIT",
815
- "dependencies": {
816
- "delayed-stream": "~1.0.0"
817
- },
818
- "engines": {
819
- "node": ">= 0.8"
820
- }
821
- },
822
788
  "node_modules/cssstyle": {
823
789
  "version": "4.4.0",
824
790
  "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.4.0.tgz",
@@ -833,13 +799,6 @@
833
799
  "node": ">=18"
834
800
  }
835
801
  },
836
- "node_modules/cssstyle/node_modules/rrweb-cssom": {
837
- "version": "0.8.0",
838
- "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz",
839
- "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==",
840
- "dev": true,
841
- "license": "MIT"
842
- },
843
802
  "node_modules/data-urls": {
844
803
  "version": "5.0.0",
845
804
  "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz",
@@ -892,16 +851,6 @@
892
851
  "dev": true,
893
852
  "license": "MIT"
894
853
  },
895
- "node_modules/delayed-stream": {
896
- "version": "1.0.0",
897
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
898
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
899
- "dev": true,
900
- "license": "MIT",
901
- "engines": {
902
- "node": ">=0.4.0"
903
- }
904
- },
905
854
  "node_modules/diff": {
906
855
  "version": "5.2.0",
907
856
  "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
@@ -912,21 +861,6 @@
912
861
  "node": ">=0.3.1"
913
862
  }
914
863
  },
915
- "node_modules/dunder-proto": {
916
- "version": "1.0.1",
917
- "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
918
- "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
919
- "dev": true,
920
- "license": "MIT",
921
- "dependencies": {
922
- "call-bind-apply-helpers": "^1.0.1",
923
- "es-errors": "^1.3.0",
924
- "gopd": "^1.2.0"
925
- },
926
- "engines": {
927
- "node": ">= 0.4"
928
- }
929
- },
930
864
  "node_modules/emoji-regex": {
931
865
  "version": "8.0.0",
932
866
  "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
@@ -934,55 +868,6 @@
934
868
  "dev": true,
935
869
  "license": "MIT"
936
870
  },
937
- "node_modules/es-define-property": {
938
- "version": "1.0.1",
939
- "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
940
- "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
941
- "dev": true,
942
- "license": "MIT",
943
- "engines": {
944
- "node": ">= 0.4"
945
- }
946
- },
947
- "node_modules/es-errors": {
948
- "version": "1.3.0",
949
- "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
950
- "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
951
- "dev": true,
952
- "license": "MIT",
953
- "engines": {
954
- "node": ">= 0.4"
955
- }
956
- },
957
- "node_modules/es-object-atoms": {
958
- "version": "1.1.1",
959
- "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
960
- "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
961
- "dev": true,
962
- "license": "MIT",
963
- "dependencies": {
964
- "es-errors": "^1.3.0"
965
- },
966
- "engines": {
967
- "node": ">= 0.4"
968
- }
969
- },
970
- "node_modules/es-set-tostringtag": {
971
- "version": "2.1.0",
972
- "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
973
- "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
974
- "dev": true,
975
- "license": "MIT",
976
- "dependencies": {
977
- "es-errors": "^1.3.0",
978
- "get-intrinsic": "^1.2.6",
979
- "has-tostringtag": "^1.0.2",
980
- "hasown": "^2.0.2"
981
- },
982
- "engines": {
983
- "node": ">= 0.4"
984
- }
985
- },
986
871
  "node_modules/esbuild": {
987
872
  "version": "0.24.2",
988
873
  "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz",
@@ -1074,23 +959,6 @@
1074
959
  "flat": "cli.js"
1075
960
  }
1076
961
  },
1077
- "node_modules/form-data": {
1078
- "version": "4.0.3",
1079
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz",
1080
- "integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==",
1081
- "dev": true,
1082
- "license": "MIT",
1083
- "dependencies": {
1084
- "asynckit": "^0.4.0",
1085
- "combined-stream": "^1.0.8",
1086
- "es-set-tostringtag": "^2.1.0",
1087
- "hasown": "^2.0.2",
1088
- "mime-types": "^2.1.12"
1089
- },
1090
- "engines": {
1091
- "node": ">= 6"
1092
- }
1093
- },
1094
962
  "node_modules/fs.realpath": {
1095
963
  "version": "1.0.0",
1096
964
  "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
@@ -1113,16 +981,6 @@
1113
981
  "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
1114
982
  }
1115
983
  },
1116
- "node_modules/function-bind": {
1117
- "version": "1.1.2",
1118
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
1119
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
1120
- "dev": true,
1121
- "license": "MIT",
1122
- "funding": {
1123
- "url": "https://github.com/sponsors/ljharb"
1124
- }
1125
- },
1126
984
  "node_modules/get-caller-file": {
1127
985
  "version": "2.0.5",
1128
986
  "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
@@ -1133,45 +991,6 @@
1133
991
  "node": "6.* || 8.* || >= 10.*"
1134
992
  }
1135
993
  },
1136
- "node_modules/get-intrinsic": {
1137
- "version": "1.3.0",
1138
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
1139
- "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
1140
- "dev": true,
1141
- "license": "MIT",
1142
- "dependencies": {
1143
- "call-bind-apply-helpers": "^1.0.2",
1144
- "es-define-property": "^1.0.1",
1145
- "es-errors": "^1.3.0",
1146
- "es-object-atoms": "^1.1.1",
1147
- "function-bind": "^1.1.2",
1148
- "get-proto": "^1.0.1",
1149
- "gopd": "^1.2.0",
1150
- "has-symbols": "^1.1.0",
1151
- "hasown": "^2.0.2",
1152
- "math-intrinsics": "^1.1.0"
1153
- },
1154
- "engines": {
1155
- "node": ">= 0.4"
1156
- },
1157
- "funding": {
1158
- "url": "https://github.com/sponsors/ljharb"
1159
- }
1160
- },
1161
- "node_modules/get-proto": {
1162
- "version": "1.0.1",
1163
- "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
1164
- "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
1165
- "dev": true,
1166
- "license": "MIT",
1167
- "dependencies": {
1168
- "dunder-proto": "^1.0.1",
1169
- "es-object-atoms": "^1.0.0"
1170
- },
1171
- "engines": {
1172
- "node": ">= 0.4"
1173
- }
1174
- },
1175
994
  "node_modules/glob": {
1176
995
  "version": "8.1.0",
1177
996
  "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
@@ -1206,19 +1025,6 @@
1206
1025
  "node": ">= 6"
1207
1026
  }
1208
1027
  },
1209
- "node_modules/gopd": {
1210
- "version": "1.2.0",
1211
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
1212
- "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
1213
- "dev": true,
1214
- "license": "MIT",
1215
- "engines": {
1216
- "node": ">= 0.4"
1217
- },
1218
- "funding": {
1219
- "url": "https://github.com/sponsors/ljharb"
1220
- }
1221
- },
1222
1028
  "node_modules/has-flag": {
1223
1029
  "version": "4.0.0",
1224
1030
  "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -1229,48 +1035,6 @@
1229
1035
  "node": ">=8"
1230
1036
  }
1231
1037
  },
1232
- "node_modules/has-symbols": {
1233
- "version": "1.1.0",
1234
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
1235
- "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
1236
- "dev": true,
1237
- "license": "MIT",
1238
- "engines": {
1239
- "node": ">= 0.4"
1240
- },
1241
- "funding": {
1242
- "url": "https://github.com/sponsors/ljharb"
1243
- }
1244
- },
1245
- "node_modules/has-tostringtag": {
1246
- "version": "1.0.2",
1247
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
1248
- "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
1249
- "dev": true,
1250
- "license": "MIT",
1251
- "dependencies": {
1252
- "has-symbols": "^1.0.3"
1253
- },
1254
- "engines": {
1255
- "node": ">= 0.4"
1256
- },
1257
- "funding": {
1258
- "url": "https://github.com/sponsors/ljharb"
1259
- }
1260
- },
1261
- "node_modules/hasown": {
1262
- "version": "2.0.2",
1263
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
1264
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
1265
- "dev": true,
1266
- "license": "MIT",
1267
- "dependencies": {
1268
- "function-bind": "^1.1.2"
1269
- },
1270
- "engines": {
1271
- "node": ">= 0.4"
1272
- }
1273
- },
1274
1038
  "node_modules/he": {
1275
1039
  "version": "1.2.0",
1276
1040
  "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
@@ -1454,31 +1218,30 @@
1454
1218
  }
1455
1219
  },
1456
1220
  "node_modules/jsdom": {
1457
- "version": "25.0.1",
1458
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-25.0.1.tgz",
1459
- "integrity": "sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==",
1221
+ "version": "26.1.0",
1222
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.1.0.tgz",
1223
+ "integrity": "sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==",
1460
1224
  "dev": true,
1461
1225
  "license": "MIT",
1462
1226
  "dependencies": {
1463
- "cssstyle": "^4.1.0",
1227
+ "cssstyle": "^4.2.1",
1464
1228
  "data-urls": "^5.0.0",
1465
- "decimal.js": "^10.4.3",
1466
- "form-data": "^4.0.0",
1229
+ "decimal.js": "^10.5.0",
1467
1230
  "html-encoding-sniffer": "^4.0.0",
1468
1231
  "http-proxy-agent": "^7.0.2",
1469
- "https-proxy-agent": "^7.0.5",
1232
+ "https-proxy-agent": "^7.0.6",
1470
1233
  "is-potential-custom-element-name": "^1.0.1",
1471
- "nwsapi": "^2.2.12",
1472
- "parse5": "^7.1.2",
1473
- "rrweb-cssom": "^0.7.1",
1234
+ "nwsapi": "^2.2.16",
1235
+ "parse5": "^7.2.1",
1236
+ "rrweb-cssom": "^0.8.0",
1474
1237
  "saxes": "^6.0.0",
1475
1238
  "symbol-tree": "^3.2.4",
1476
- "tough-cookie": "^5.0.0",
1239
+ "tough-cookie": "^5.1.1",
1477
1240
  "w3c-xmlserializer": "^5.0.0",
1478
1241
  "webidl-conversions": "^7.0.0",
1479
1242
  "whatwg-encoding": "^3.1.1",
1480
1243
  "whatwg-mimetype": "^4.0.0",
1481
- "whatwg-url": "^14.0.0",
1244
+ "whatwg-url": "^14.1.1",
1482
1245
  "ws": "^8.18.0",
1483
1246
  "xml-name-validator": "^5.0.0"
1484
1247
  },
@@ -1486,7 +1249,7 @@
1486
1249
  "node": ">=18"
1487
1250
  },
1488
1251
  "peerDependencies": {
1489
- "canvas": "^2.11.2"
1252
+ "canvas": "^3.0.0"
1490
1253
  },
1491
1254
  "peerDependenciesMeta": {
1492
1255
  "canvas": {
@@ -1534,39 +1297,6 @@
1534
1297
  "dev": true,
1535
1298
  "license": "ISC"
1536
1299
  },
1537
- "node_modules/math-intrinsics": {
1538
- "version": "1.1.0",
1539
- "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
1540
- "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
1541
- "dev": true,
1542
- "license": "MIT",
1543
- "engines": {
1544
- "node": ">= 0.4"
1545
- }
1546
- },
1547
- "node_modules/mime-db": {
1548
- "version": "1.52.0",
1549
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
1550
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
1551
- "dev": true,
1552
- "license": "MIT",
1553
- "engines": {
1554
- "node": ">= 0.6"
1555
- }
1556
- },
1557
- "node_modules/mime-types": {
1558
- "version": "2.1.35",
1559
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
1560
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
1561
- "dev": true,
1562
- "license": "MIT",
1563
- "dependencies": {
1564
- "mime-db": "1.52.0"
1565
- },
1566
- "engines": {
1567
- "node": ">= 0.6"
1568
- }
1569
- },
1570
1300
  "node_modules/minimatch": {
1571
1301
  "version": "5.1.6",
1572
1302
  "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
@@ -1788,9 +1518,9 @@
1788
1518
  }
1789
1519
  },
1790
1520
  "node_modules/rrweb-cssom": {
1791
- "version": "0.7.1",
1792
- "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz",
1793
- "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==",
1521
+ "version": "0.8.0",
1522
+ "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz",
1523
+ "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==",
1794
1524
  "dev": true,
1795
1525
  "license": "MIT"
1796
1526
  },
data/brut-js/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "brut-js",
3
- "version": "0.12.1",
3
+ "version": "0.13.0",
4
4
  "type": "module",
5
5
  "keywords": [
6
6
  "WebComponents",
@@ -29,7 +29,7 @@
29
29
  },
30
30
  "devDependencies": {
31
31
  "esbuild": "^0.24.2",
32
- "jsdom": "^25.0.1",
32
+ "jsdom": "^26.1.0",
33
33
  "mocha": "^10.8.2"
34
34
  }
35
35
  }
@@ -75,6 +75,54 @@ describe("<brut-ajax-submit>", () => {
75
75
  assert.equal(fetchRequests.length,0)
76
76
  assert(!okReceived)
77
77
  })
78
+
79
+ withHTML(`
80
+ <form action="http://example.net/foo" method="GET">
81
+ <input required type="text" name="some-text">
82
+ <input required type="number" name="some-number">
83
+ <brut-ajax-submit submitted-lifetime="10">
84
+ <button name="button-name" value="button-value">Submit</button>
85
+ </brut-ajax-submit>
86
+ </form>
87
+ `).onFetch( "/foo?some-text=Some+Text&some-number=11&button-name=button-value", [
88
+ { then: { status: 200, text: "<div>some html</div>" }},
89
+ ]
90
+ ).test("submits the form via GET, setting various attributes during the lifecycle",
91
+ ({document,assert,fetchRequests,waitForSetTimeout,readRequestBodyIntoString}) => {
92
+
93
+ const element = document.querySelector("brut-ajax-submit")
94
+ const button = element.querySelector("button")
95
+ const text = document.querySelector("input[name=some-text]")
96
+ const number = document.querySelector("input[name=some-number]")
97
+
98
+ let okReceived = false
99
+ let detailReceived = null
100
+ element.addEventListener("brut:submitok", (event) => {
101
+ okReceived = true
102
+ detailReceived = event.detail
103
+ })
104
+
105
+ text.value = "Some Text"
106
+ number.value = "11"
107
+
108
+ button.click()
109
+ assert(element.getAttribute("requesting") != null)
110
+
111
+ const promises = fetchRequests.
112
+ filter( (fetchRequest) => fetchRequest.promiseReturned ).
113
+ map( (fetchRequest) => fetchRequest.promiseReturned )
114
+
115
+ return Promise.all(promises).then( () => {
116
+ assert(okReceived)
117
+ assert(detailReceived)
118
+ assert.equal(detailReceived.body.innerHTML,"<div>some html</div>")
119
+ assert(element.getAttribute("requesting") == null)
120
+ assert(element.getAttribute("submitted") != null)
121
+ return waitForSetTimeout(11).then( () => {
122
+ assert(element.getAttribute("submitted") == null)
123
+ })
124
+ })
125
+ })
78
126
  withHTML(`
79
127
  <form action="http://example.net/foo" method="POST">
80
128
  <input required type="text" name="some-text">