brut 0.11.0 → 0.12.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 (376) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/Gemfile.lock +8 -8
  4. data/brut-css/package-lock.json +94 -97
  5. data/brut-css/package.json +2 -2
  6. data/brut-js/package-lock.json +3 -3
  7. data/brut-js/package.json +6 -3
  8. data/brut-js/specs/AjaxSubmit.spec.js +62 -6
  9. data/brut-js/src/AjaxSubmit.js +26 -6
  10. data/brutrb.com/forms.md +1 -0
  11. data/brutrb.com/recipes/authentication.md +1 -0
  12. data/brutrb.com/tutorials/01-intro.md +26 -2
  13. data/docs/404.html +2 -2
  14. data/docs/adrs.html +3 -3
  15. data/docs/ai.html +3 -3
  16. data/docs/api/Brut/BackEnd/SeedData.html +1 -1
  17. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server/FlushSpans.html +1 -1
  18. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server.html +1 -1
  19. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares.html +1 -1
  20. data/docs/api/Brut/BackEnd/Sidekiq.html +1 -1
  21. data/docs/api/Brut/BackEnd/Validators/FormValidator.html +1 -1
  22. data/docs/api/Brut/BackEnd/Validators.html +1 -1
  23. data/docs/api/Brut/BackEnd.html +1 -1
  24. data/docs/api/Brut/CLI/App.html +1 -1
  25. data/docs/api/Brut/CLI/AppRunner.html +1 -1
  26. data/docs/api/Brut/CLI/Apps/BuildAssets/All.html +1 -1
  27. data/docs/api/Brut/CLI/Apps/BuildAssets/CSS.html +1 -1
  28. data/docs/api/Brut/CLI/Apps/BuildAssets/Images.html +1 -1
  29. data/docs/api/Brut/CLI/Apps/BuildAssets/JS.html +1 -1
  30. data/docs/api/Brut/CLI/Apps/BuildAssets.html +1 -1
  31. data/docs/api/Brut/CLI/Apps/DB/Create.html +1 -1
  32. data/docs/api/Brut/CLI/Apps/DB/Drop.html +1 -1
  33. data/docs/api/Brut/CLI/Apps/DB/Migrate.html +1 -1
  34. data/docs/api/Brut/CLI/Apps/DB/NewMigration.html +1 -1
  35. data/docs/api/Brut/CLI/Apps/DB/Rebuild.html +1 -1
  36. data/docs/api/Brut/CLI/Apps/DB/Seed.html +1 -1
  37. data/docs/api/Brut/CLI/Apps/DB/Status.html +1 -1
  38. data/docs/api/Brut/CLI/Apps/DB.html +1 -1
  39. data/docs/api/Brut/CLI/Apps/DeployBase/GitChecks.html +1 -1
  40. data/docs/api/Brut/CLI/Apps/DeployBase.html +1 -1
  41. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy/Deploy.html +1 -1
  42. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy.html +1 -1
  43. data/docs/api/Brut/CLI/Apps/Scaffold/Action/Route.html +1 -1
  44. data/docs/api/Brut/CLI/Apps/Scaffold/Action.html +1 -1
  45. data/docs/api/Brut/CLI/Apps/Scaffold/Component.html +1 -1
  46. data/docs/api/Brut/CLI/Apps/Scaffold/CustomElementTest.html +1 -1
  47. data/docs/api/Brut/CLI/Apps/Scaffold/DbModel.html +1 -1
  48. data/docs/api/Brut/CLI/Apps/Scaffold/E2ETest.html +1 -1
  49. data/docs/api/Brut/CLI/Apps/Scaffold/Form.html +1 -1
  50. data/docs/api/Brut/CLI/Apps/Scaffold/Page/Route.html +1 -1
  51. data/docs/api/Brut/CLI/Apps/Scaffold/Page.html +1 -1
  52. data/docs/api/Brut/CLI/Apps/Scaffold/RoutesEditor.html +1 -1
  53. data/docs/api/Brut/CLI/Apps/Scaffold/Test.html +1 -1
  54. data/docs/api/Brut/CLI/Apps/Scaffold.html +1 -1
  55. data/docs/api/Brut/CLI/Apps/Test/Audit.html +1 -1
  56. data/docs/api/Brut/CLI/Apps/Test/E2e.html +1 -1
  57. data/docs/api/Brut/CLI/Apps/Test/JS.html +1 -1
  58. data/docs/api/Brut/CLI/Apps/Test/Run.html +1 -1
  59. data/docs/api/Brut/CLI/Apps/Test.html +1 -1
  60. data/docs/api/Brut/CLI/Apps.html +1 -1
  61. data/docs/api/Brut/CLI/Command.html +1 -1
  62. data/docs/api/Brut/CLI/Error.html +1 -1
  63. data/docs/api/Brut/CLI/ExecutionResults/Result.html +1 -1
  64. data/docs/api/Brut/CLI/ExecutionResults.html +1 -1
  65. data/docs/api/Brut/CLI/Executor.html +1 -1
  66. data/docs/api/Brut/CLI/InvalidOption.html +1 -1
  67. data/docs/api/Brut/CLI/Options.html +1 -1
  68. data/docs/api/Brut/CLI/Output.html +1 -1
  69. data/docs/api/Brut/CLI/SystemExecError.html +1 -1
  70. data/docs/api/Brut/CLI.html +1 -1
  71. data/docs/api/Brut/FactoryBot.html +1 -1
  72. data/docs/api/Brut/Framework/App.html +1 -1
  73. data/docs/api/Brut/Framework/Config.html +1 -1
  74. data/docs/api/Brut/Framework/Container.html +1 -1
  75. data/docs/api/Brut/Framework/Error.html +1 -1
  76. data/docs/api/Brut/Framework/Errors/AbstractMethod.html +1 -1
  77. data/docs/api/Brut/Framework/Errors/Bug.html +1 -1
  78. data/docs/api/Brut/Framework/Errors/MissingConfiguration.html +1 -1
  79. data/docs/api/Brut/Framework/Errors/MissingParameter.html +1 -1
  80. data/docs/api/Brut/Framework/Errors/NoClassForPath.html +1 -1
  81. data/docs/api/Brut/Framework/Errors/NotFound.html +1 -1
  82. data/docs/api/Brut/Framework/Errors/NotImplemented.html +1 -1
  83. data/docs/api/Brut/Framework/Errors.html +1 -1
  84. data/docs/api/Brut/Framework/FussyTypeEnforcement.html +2 -2
  85. data/docs/api/Brut/Framework/MCP.html +1 -1
  86. data/docs/api/Brut/Framework/ProjectEnvironment.html +1 -1
  87. data/docs/api/Brut/Framework.html +1 -1
  88. data/docs/api/Brut/FrontEnd/AssetPathResolver.html +1 -1
  89. data/docs/api/Brut/FrontEnd/Component/Helpers.html +1 -1
  90. data/docs/api/Brut/FrontEnd/Component.html +1 -1
  91. data/docs/api/Brut/FrontEnd/Components/ConstraintViolations.html +1 -1
  92. data/docs/api/Brut/FrontEnd/Components/FormTag.html +1 -1
  93. data/docs/api/Brut/FrontEnd/Components/I18nTranslations.html +1 -1
  94. data/docs/api/Brut/FrontEnd/Components/Input.html +2 -2
  95. data/docs/api/Brut/FrontEnd/Components/Inputs/ButtonTag.html +443 -0
  96. data/docs/api/Brut/FrontEnd/Components/Inputs/CsrfToken.html +1 -1
  97. data/docs/api/Brut/FrontEnd/Components/Inputs/InputTag.html +14 -9
  98. data/docs/api/Brut/FrontEnd/Components/Inputs/RadioButton.html +1 -1
  99. data/docs/api/Brut/FrontEnd/Components/Inputs/SelectTagWithOptions.html +8 -9
  100. data/docs/api/Brut/FrontEnd/Components/Inputs/TextareaTag.html +10 -11
  101. data/docs/api/Brut/FrontEnd/Components/Inputs.html +2 -2
  102. data/docs/api/Brut/FrontEnd/Components/LocaleDetection.html +1 -1
  103. data/docs/api/Brut/FrontEnd/Components/PageIdentifier.html +1 -1
  104. data/docs/api/Brut/FrontEnd/Components/TimeTag.html +1 -1
  105. data/docs/api/Brut/FrontEnd/Components/Traceparent.html +1 -1
  106. data/docs/api/Brut/FrontEnd/Components.html +1 -1
  107. data/docs/api/Brut/FrontEnd/CsrfProtector.html +1 -1
  108. data/docs/api/Brut/FrontEnd/Download.html +1 -1
  109. data/docs/api/Brut/FrontEnd/Flash.html +1 -1
  110. data/docs/api/Brut/FrontEnd/Form.html +39 -39
  111. data/docs/api/Brut/FrontEnd/Forms/Button.html +331 -0
  112. data/docs/api/Brut/FrontEnd/Forms/ButtonInputDefinition.html +544 -0
  113. data/docs/api/Brut/FrontEnd/Forms/ConstraintViolation.html +1 -1
  114. data/docs/api/Brut/FrontEnd/Forms/Input/Color.html +1 -1
  115. data/docs/api/Brut/FrontEnd/Forms/Input/TimeOfDay.html +1 -1
  116. data/docs/api/Brut/FrontEnd/Forms/Input.html +6 -2
  117. data/docs/api/Brut/FrontEnd/Forms/InputDeclarations.html +111 -23
  118. data/docs/api/Brut/FrontEnd/Forms/InputDefinition.html +20 -12
  119. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInput.html +1 -1
  120. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInputDefinition.html +1 -1
  121. data/docs/api/Brut/FrontEnd/Forms/SelectInput.html +1 -1
  122. data/docs/api/Brut/FrontEnd/Forms/SelectInputDefinition.html +1 -1
  123. data/docs/api/Brut/FrontEnd/Forms/ValidityState.html +1 -1
  124. data/docs/api/Brut/FrontEnd/Forms.html +2 -2
  125. data/docs/api/Brut/FrontEnd/GenericResponse.html +1 -1
  126. data/docs/api/Brut/FrontEnd/Handler.html +1 -1
  127. data/docs/api/Brut/FrontEnd/Handlers/CspReportingHandler.html +1 -1
  128. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler/TraceParent.html +1 -1
  129. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler.html +1 -1
  130. data/docs/api/Brut/FrontEnd/Handlers/LocaleDetectionHandler.html +1 -1
  131. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler/Form.html +2 -2
  132. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler.html +1 -1
  133. data/docs/api/Brut/FrontEnd/Handlers.html +1 -1
  134. data/docs/api/Brut/FrontEnd/HandlingResults.html +1 -1
  135. data/docs/api/Brut/FrontEnd/HttpMethod.html +1 -1
  136. data/docs/api/Brut/FrontEnd/HttpStatus.html +1 -1
  137. data/docs/api/Brut/FrontEnd/InlineSvgLocator.html +1 -1
  138. data/docs/api/Brut/FrontEnd/Layout.html +1 -1
  139. data/docs/api/Brut/FrontEnd/Middleware.html +1 -1
  140. data/docs/api/Brut/FrontEnd/Middlewares/AnnotateBrutOwnedPaths.html +1 -1
  141. data/docs/api/Brut/FrontEnd/Middlewares/Favicon.html +1 -1
  142. data/docs/api/Brut/FrontEnd/Middlewares/OpenTelemetrySpan.html +1 -1
  143. data/docs/api/Brut/FrontEnd/Middlewares/ReloadApp.html +1 -1
  144. data/docs/api/Brut/FrontEnd/Middlewares.html +1 -1
  145. data/docs/api/Brut/FrontEnd/Page.html +1 -1
  146. data/docs/api/Brut/FrontEnd/Pages/MissingPage.html +1 -1
  147. data/docs/api/Brut/FrontEnd/Pages.html +1 -1
  148. data/docs/api/Brut/FrontEnd/RequestContext.html +1 -1
  149. data/docs/api/Brut/FrontEnd/RouteHook.html +1 -1
  150. data/docs/api/Brut/FrontEnd/RouteHooks/AgeFlash.html +1 -1
  151. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineScripts.html +1 -1
  152. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts/ReportOnly.html +1 -1
  153. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts.html +1 -1
  154. data/docs/api/Brut/FrontEnd/RouteHooks/LocaleDetection.html +1 -1
  155. data/docs/api/Brut/FrontEnd/RouteHooks/SetupRequestContext.html +1 -1
  156. data/docs/api/Brut/FrontEnd/RouteHooks.html +1 -1
  157. data/docs/api/Brut/FrontEnd/Routing/FormHandlerRoute.html +1 -1
  158. data/docs/api/Brut/FrontEnd/Routing/FormRoute.html +1 -1
  159. data/docs/api/Brut/FrontEnd/Routing/MissingForm.html +1 -1
  160. data/docs/api/Brut/FrontEnd/Routing/MissingHandler.html +1 -1
  161. data/docs/api/Brut/FrontEnd/Routing/MissingPage.html +1 -1
  162. data/docs/api/Brut/FrontEnd/Routing/MissingPath.html +1 -1
  163. data/docs/api/Brut/FrontEnd/Routing/PageRoute.html +1 -1
  164. data/docs/api/Brut/FrontEnd/Routing/Route.html +1 -1
  165. data/docs/api/Brut/FrontEnd/Routing.html +1 -1
  166. data/docs/api/Brut/FrontEnd/Session.html +1 -1
  167. data/docs/api/Brut/FrontEnd.html +1 -1
  168. data/docs/api/Brut/I18n/BaseMethods.html +1 -1
  169. data/docs/api/Brut/I18n/ForBackEnd.html +1 -1
  170. data/docs/api/Brut/I18n/ForCLI.html +1 -1
  171. data/docs/api/Brut/I18n/ForHTML.html +1 -1
  172. data/docs/api/Brut/I18n/HTTPAcceptLanguage/AlwaysEnglish.html +1 -1
  173. data/docs/api/Brut/I18n/HTTPAcceptLanguage.html +1 -1
  174. data/docs/api/Brut/I18n.html +1 -1
  175. data/docs/api/Brut/Instrumentation/LoggerSpanExporter.html +1 -1
  176. data/docs/api/Brut/Instrumentation/Methods/ClassMethods.html +596 -0
  177. data/docs/api/Brut/Instrumentation/Methods.html +173 -0
  178. data/docs/api/Brut/Instrumentation/OpenTelemetry/NormalizedAttributes.html +7 -7
  179. data/docs/api/Brut/Instrumentation/OpenTelemetry/Span.html +7 -7
  180. data/docs/api/Brut/Instrumentation/OpenTelemetry.html +19 -17
  181. data/docs/api/Brut/Instrumentation.html +3 -1
  182. data/docs/api/Brut/RubocopConfig.html +1 -1
  183. data/docs/api/Brut/SinatraHelpers/ClassMethods.html +1 -1
  184. data/docs/api/Brut/SinatraHelpers.html +1 -1
  185. data/docs/api/Brut/SpecSupport/ClockSupport.html +1 -1
  186. data/docs/api/Brut/SpecSupport/ComponentSupport.html +1 -1
  187. data/docs/api/Brut/SpecSupport/E2ETestServer.html +1 -1
  188. data/docs/api/Brut/SpecSupport/E2eSupport.html +1 -1
  189. data/docs/api/Brut/SpecSupport/EnhancedNode.html +1 -1
  190. data/docs/api/Brut/SpecSupport/FlashSupport.html +1 -1
  191. data/docs/api/Brut/SpecSupport/GeneralSupport/ClassMethods.html +1 -1
  192. data/docs/api/Brut/SpecSupport/GeneralSupport.html +1 -1
  193. data/docs/api/Brut/SpecSupport/HandlerSupport.html +1 -1
  194. data/docs/api/Brut/SpecSupport/Matchers/BeABug.html +1 -1
  195. data/docs/api/Brut/SpecSupport/Matchers/BePageFor.html +1 -1
  196. data/docs/api/Brut/SpecSupport/Matchers/BeRoutingFor.html +1 -1
  197. data/docs/api/Brut/SpecSupport/Matchers/HaveConstraintViolation.html +1 -1
  198. data/docs/api/Brut/SpecSupport/Matchers/HaveGenerated.html +1 -1
  199. data/docs/api/Brut/SpecSupport/Matchers/HaveHTMLAttribute.html +1 -1
  200. data/docs/api/Brut/SpecSupport/Matchers/HaveI18nString.html +1 -1
  201. data/docs/api/Brut/SpecSupport/Matchers/HaveLinkTo.html +1 -1
  202. data/docs/api/Brut/SpecSupport/Matchers/HaveRedirectedTo.html +1 -1
  203. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedHttpStatus.html +1 -1
  204. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedRackResponse.html +1 -1
  205. data/docs/api/Brut/SpecSupport/Matchers.html +1 -1
  206. data/docs/api/Brut/SpecSupport/RSpecSetup/OptionalSidekiqSupport.html +1 -1
  207. data/docs/api/Brut/SpecSupport/RSpecSetup.html +1 -1
  208. data/docs/api/Brut/SpecSupport/SessionSupport.html +1 -1
  209. data/docs/api/Brut/SpecSupport.html +1 -1
  210. data/docs/api/Brut.html +1 -1
  211. data/docs/api/Clock.html +1 -1
  212. data/docs/api/ModuleName.html +1 -1
  213. data/docs/api/RichString.html +1 -1
  214. data/docs/api/SemanticLogger/Appender/Async.html +1 -1
  215. data/docs/api/Sequel/Extensions/BrutInstrumentation.html +1 -1
  216. data/docs/api/Sequel/Extensions/BrutMigrations.html +1 -1
  217. data/docs/api/Sequel/Extensions.html +1 -1
  218. data/docs/api/Sequel/Plugins/CreatedAt/InstanceMethods.html +1 -1
  219. data/docs/api/Sequel/Plugins/CreatedAt.html +1 -1
  220. data/docs/api/Sequel/Plugins/ExternalId/ClassMethods.html +1 -1
  221. data/docs/api/Sequel/Plugins/ExternalId/InstanceMethods.html +1 -1
  222. data/docs/api/Sequel/Plugins/ExternalId.html +1 -1
  223. data/docs/api/Sequel/Plugins/FindBang/ClassMethods.html +1 -1
  224. data/docs/api/Sequel/Plugins/FindBang.html +1 -1
  225. data/docs/api/Sequel/Plugins.html +1 -1
  226. data/docs/api/Sequel.html +1 -1
  227. data/docs/api/_index.html +36 -1
  228. data/docs/api/class_list.html +1 -1
  229. data/docs/api/file.README.html +1 -1
  230. data/docs/api/index.html +1 -1
  231. data/docs/api/method_list.html +364 -252
  232. data/docs/api/top-level-namespace.html +1 -1
  233. data/docs/assets/{app.0-aKXKdt.js → app.V2GOcOrg.js} +1 -1
  234. data/docs/assets/chunks/@localSearchIndexroot.3Lsq4QTb.js +1 -0
  235. data/docs/assets/chunks/{VPLocalSearchBox.CW-UBkNA.js → VPLocalSearchBox.CZTadcAy.js} +1 -1
  236. data/docs/assets/chunks/{theme.a6feKWJO.js → theme.FeuYNxyp.js} +2 -2
  237. data/docs/assets/{components.md.BzVRwegp.js → components.md.f4cdTyvV.js} +3 -3
  238. data/docs/assets/{configuration.md.eM5wFVi5.js → configuration.md.Bs4-rxnS.js} +1 -1
  239. data/docs/assets/{forms.md.B3BHvCV3.js → forms.md.Sys-XxVf.js} +3 -3
  240. data/docs/assets/{forms.md.B3BHvCV3.lean.js → forms.md.Sys-XxVf.lean.js} +1 -1
  241. data/docs/assets/{getting-started.md.BgR0ZHsl.js → getting-started.md.CFIW0bcE.js} +2 -2
  242. data/docs/assets/instrumentation.md._lNSriEZ.js +90 -0
  243. data/docs/assets/instrumentation.md._lNSriEZ.lean.js +1 -0
  244. data/docs/assets/{recipes_authentication.md.Dzvi_g69.js → recipes_authentication.md.BAISoxmN.js} +1 -0
  245. data/docs/assets/{tutorials_01-intro.md.BXvYWcO9.js → tutorials_01-intro.md.B4sUBY3X.js} +10 -10
  246. data/docs/assets/{tutorials_01-intro.md.BXvYWcO9.lean.js → tutorials_01-intro.md.B4sUBY3X.lean.js} +1 -1
  247. data/docs/assets/{tutorials_02-dialog.md.CIeg8R--.js → tutorials_02-dialog.md.QTFeHdiA.js} +1 -1
  248. data/docs/assets.html +3 -3
  249. data/docs/brut-js/api/AjaxSubmit.html +16 -6
  250. data/docs/brut-js/api/AjaxSubmit.js.html +27 -7
  251. data/docs/brut-js/api/Autosubmit.html +1 -1
  252. data/docs/brut-js/api/Autosubmit.js.html +1 -1
  253. data/docs/brut-js/api/BaseCustomElement.html +1 -1
  254. data/docs/brut-js/api/BaseCustomElement.js.html +1 -1
  255. data/docs/brut-js/api/BrutCustomElements.html +1 -1
  256. data/docs/brut-js/api/BufferedLogger.html +1 -1
  257. data/docs/brut-js/api/ConfirmSubmit.html +1 -1
  258. data/docs/brut-js/api/ConfirmSubmit.js.html +1 -1
  259. data/docs/brut-js/api/ConfirmationDialog.html +1 -1
  260. data/docs/brut-js/api/ConfirmationDialog.js.html +1 -1
  261. data/docs/brut-js/api/ConstraintViolationMessage.html +1 -1
  262. data/docs/brut-js/api/ConstraintViolationMessage.js.html +1 -1
  263. data/docs/brut-js/api/ConstraintViolationMessages.html +1 -1
  264. data/docs/brut-js/api/ConstraintViolationMessages.js.html +1 -1
  265. data/docs/brut-js/api/CopyToClipboard.html +1 -1
  266. data/docs/brut-js/api/CopyToClipboard.js.html +1 -1
  267. data/docs/brut-js/api/Form.html +1 -1
  268. data/docs/brut-js/api/Form.js.html +1 -1
  269. data/docs/brut-js/api/I18nTranslation.html +1 -1
  270. data/docs/brut-js/api/I18nTranslation.js.html +1 -1
  271. data/docs/brut-js/api/LocaleDetection.html +1 -1
  272. data/docs/brut-js/api/LocaleDetection.js.html +1 -1
  273. data/docs/brut-js/api/Logger.html +1 -1
  274. data/docs/brut-js/api/Logger.js.html +1 -1
  275. data/docs/brut-js/api/Message.html +1 -1
  276. data/docs/brut-js/api/Message.js.html +1 -1
  277. data/docs/brut-js/api/PrefixedLogger.html +1 -1
  278. data/docs/brut-js/api/RichString.html +1 -1
  279. data/docs/brut-js/api/RichString.js.html +1 -1
  280. data/docs/brut-js/api/Tabs.html +1 -1
  281. data/docs/brut-js/api/Tabs.js.html +1 -1
  282. data/docs/brut-js/api/Tracing.html +1 -1
  283. data/docs/brut-js/api/Tracing.js.html +1 -1
  284. data/docs/brut-js/api/external-CustomElementRegistry.html +1 -1
  285. data/docs/brut-js/api/external-Performance.html +1 -1
  286. data/docs/brut-js/api/external-Promise.html +1 -1
  287. data/docs/brut-js/api/external-ValidityState.html +1 -1
  288. data/docs/brut-js/api/external-Window.html +1 -1
  289. data/docs/brut-js/api/external-fetch.html +1 -1
  290. data/docs/brut-js/api/global.html +1 -1
  291. data/docs/brut-js/api/index.html +1 -1
  292. data/docs/brut-js/api/index.js.html +1 -1
  293. data/docs/brut-js/api/module-testing.html +1 -1
  294. data/docs/brut-js/api/testing.AssetMetadata.html +1 -1
  295. data/docs/brut-js/api/testing.AssetMetadataLoader.html +1 -1
  296. data/docs/brut-js/api/testing.CustomElementTest.html +1 -1
  297. data/docs/brut-js/api/testing.DOMCreator.html +1 -1
  298. data/docs/brut-js/api/testing_AssetMetadata.js.html +1 -1
  299. data/docs/brut-js/api/testing_AssetMetadataLoader.js.html +1 -1
  300. data/docs/brut-js/api/testing_CustomElementTest.js.html +1 -1
  301. data/docs/brut-js/api/testing_DOMCreator.js.html +1 -1
  302. data/docs/brut-js/api/testing_index.js.html +1 -1
  303. data/docs/brut-js.html +3 -3
  304. data/docs/business-logic.html +3 -3
  305. data/docs/cli.html +3 -3
  306. data/docs/components.html +7 -7
  307. data/docs/configuration.html +5 -5
  308. data/docs/css.html +3 -3
  309. data/docs/custom-element-tests.html +3 -3
  310. data/docs/database-access.html +3 -3
  311. data/docs/database-schema.html +3 -3
  312. data/docs/deployment.html +3 -3
  313. data/docs/dev-environment.html +3 -3
  314. data/docs/dir-structure.html +3 -3
  315. data/docs/doc-conventions.html +3 -3
  316. data/docs/end-to-end-tests.html +3 -3
  317. data/docs/features.html +3 -3
  318. data/docs/flash-and-session.html +3 -3
  319. data/docs/form-constraints.html +3 -3
  320. data/docs/forms.html +6 -6
  321. data/docs/getting-started.html +6 -6
  322. data/docs/handlers.html +3 -3
  323. data/docs/hashmap.json +1 -1
  324. data/docs/hooks.html +3 -3
  325. data/docs/i18n.html +3 -3
  326. data/docs/index.html +3 -3
  327. data/docs/instrumentation.html +61 -6
  328. data/docs/javascript.html +3 -3
  329. data/docs/jobs.html +3 -3
  330. data/docs/keyword-injection.html +3 -3
  331. data/docs/layouts.html +3 -3
  332. data/docs/lsp.html +3 -3
  333. data/docs/markdown-examples.html +3 -3
  334. data/docs/middleware.html +3 -3
  335. data/docs/overview.html +3 -3
  336. data/docs/pages.html +3 -3
  337. data/docs/recipes/alternate-layouts.html +3 -3
  338. data/docs/recipes/authentication.html +5 -4
  339. data/docs/recipes/blank-layouts.html +3 -3
  340. data/docs/recipes/custom-flash.html +3 -3
  341. data/docs/recipes/form-errors.html +3 -3
  342. data/docs/recipes/indexed-forms.html +3 -3
  343. data/docs/recipes/migrations.html +3 -3
  344. data/docs/recipes/text-field-component.html +3 -3
  345. data/docs/roadmap.html +3 -3
  346. data/docs/routes.html +3 -3
  347. data/docs/security.html +3 -3
  348. data/docs/seed-data.html +3 -3
  349. data/docs/space-time-continuum.html +3 -3
  350. data/docs/tutorial.html +3 -3
  351. data/docs/tutorials/01-intro.html +12 -12
  352. data/docs/tutorials/02-dialog.html +5 -5
  353. data/docs/unit-tests.html +3 -3
  354. data/docs/why.html +3 -3
  355. data/lib/brut/front_end/components/input.rb +1 -0
  356. data/lib/brut/front_end/components/inputs/button_tag.rb +40 -0
  357. data/lib/brut/front_end/components/inputs/input_tag.rb +3 -1
  358. data/lib/brut/front_end/components/inputs/select_tag_with_options.rb +0 -1
  359. data/lib/brut/front_end/components/inputs/textarea_tag.rb +0 -1
  360. data/lib/brut/front_end/form.rb +7 -5
  361. data/lib/brut/front_end/forms/button.rb +21 -0
  362. data/lib/brut/front_end/forms/button_input_definition.rb +37 -0
  363. data/lib/brut/front_end/forms/input_declarations.rb +10 -0
  364. data/lib/brut/front_end/forms/input_definition.rb +7 -2
  365. data/lib/brut/version.rb +1 -1
  366. data/mkbrut/Gemfile.lock +1 -1
  367. data/mkbrut/lib/mkbrut/version.rb +1 -1
  368. metadata +29 -21
  369. data/docs/assets/chunks/@localSearchIndexroot.DPhqaz1b.js +0 -1
  370. data/docs/assets/instrumentation.md.BgcaGVYH.js +0 -35
  371. data/docs/assets/instrumentation.md.BgcaGVYH.lean.js +0 -1
  372. /data/docs/assets/{components.md.BzVRwegp.lean.js → components.md.f4cdTyvV.lean.js} +0 -0
  373. /data/docs/assets/{configuration.md.eM5wFVi5.lean.js → configuration.md.Bs4-rxnS.lean.js} +0 -0
  374. /data/docs/assets/{getting-started.md.BgR0ZHsl.lean.js → getting-started.md.CFIW0bcE.lean.js} +0 -0
  375. /data/docs/assets/{recipes_authentication.md.Dzvi_g69.lean.js → recipes_authentication.md.BAISoxmN.lean.js} +0 -0
  376. /data/docs/assets/{tutorials_02-dialog.md.CIeg8R--.lean.js → tutorials_02-dialog.md.QTFeHdiA.lean.js} +0 -0
@@ -280,8 +280,7 @@
280
280
 
281
281
  </h3><div class="docstring">
282
282
  <div class="discussion">
283
- <p>Creates the appropriate textarea for the given <span class='object_link'><a href="../../Form.html" title="Brut::FrontEnd::Form (class)">Form</a></span> and input name.
284
- Generally, you want to use this method over the initializer.</p>
283
+ <p>Creates the appropriate textarea for the given <span class='object_link'><a href="../../Form.html" title="Brut::FrontEnd::Form (class)">Form</a></span> and input name.</p>
285
284
 
286
285
 
287
286
  </div>
@@ -361,6 +360,7 @@ Generally, you want to use this method over the initializer.</p>
361
360
  <pre class="lines">
362
361
 
363
362
 
363
+ 10
364
364
  11
365
365
  12
366
366
  13
@@ -389,11 +389,10 @@ Generally, you want to use this method over the initializer.</p>
389
389
  36
390
390
  37
391
391
  38
392
- 39
393
- 40</pre>
392
+ 39</pre>
394
393
  </td>
395
394
  <td>
396
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/components/inputs/textarea_tag.rb', line 11</span>
395
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/components/inputs/textarea_tag.rb', line 10</span>
397
396
 
398
397
  <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>form:</span><span class='comma'>,</span> <span class='label'>input_name:</span><span class='comma'>,</span> <span class='label'>index:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_html_attributes'>html_attributes</span><span class='rparen'>)</span>
399
398
  <span class='id identifier rubyid_html_attributes'>html_attributes</span> <span class='op'>=</span> <span class='id identifier rubyid_html_attributes'>html_attributes</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span><span class='id identifier rubyid_value'>value</span><span class='op'>|</span> <span class='lbracket'>[</span> <span class='id identifier rubyid_key'>key</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span> <span class='rbracket'>]</span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_to_h'>to_h</span>
@@ -475,10 +474,10 @@ Generally, you want to use this method over the initializer.</p>
475
474
  <pre class="lines">
476
475
 
477
476
 
478
- 42</pre>
477
+ 41</pre>
479
478
  </td>
480
479
  <td>
481
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/components/inputs/textarea_tag.rb', line 42</span>
480
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/components/inputs/textarea_tag.rb', line 41</span>
482
481
 
483
482
  <span class='kw'>def</span> <span class='id identifier rubyid_invalid?'>invalid?</span> <span class='op'>=</span> <span class='ivar'>@attributes</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>data-invalid</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='kw'>true</span></pre>
484
483
  </td>
@@ -501,14 +500,14 @@ Generally, you want to use this method over the initializer.</p>
501
500
  <pre class="lines">
502
501
 
503
502
 
503
+ 43
504
504
  44
505
505
  45
506
506
  46
507
- 47
508
- 48</pre>
507
+ 47</pre>
509
508
  </td>
510
509
  <td>
511
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/components/inputs/textarea_tag.rb', line 44</span>
510
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/components/inputs/textarea_tag.rb', line 43</span>
512
511
 
513
512
  <span class='kw'>def</span> <span class='id identifier rubyid_view_template'>view_template</span>
514
513
  <span class='id identifier rubyid_textarea'>textarea</span><span class='lparen'>(</span><span class='op'>**</span><span class='ivar'>@attributes</span><span class='rparen'>)</span> <span class='lbrace'>{</span>
@@ -525,7 +524,7 @@ Generally, you want to use this method over the initializer.</p>
525
524
  </div>
526
525
 
527
526
  <div id="footer">
528
- Generated on Fri Aug 15 22:12:02 2025 by
527
+ Generated on Fri Sep 5 13:46:24 2025 by
529
528
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
530
529
  0.9.37 (ruby-3.4.5).
531
530
  </div>
@@ -99,7 +99,7 @@
99
99
 
100
100
 
101
101
 
102
- <strong class="classes">Classes:</strong> <span class='object_link'><a href="Inputs/CsrfToken.html" title="Brut::FrontEnd::Components::Inputs::CsrfToken (class)">CsrfToken</a></span>, <span class='object_link'><a href="Inputs/InputTag.html" title="Brut::FrontEnd::Components::Inputs::InputTag (class)">InputTag</a></span>, <span class='object_link'><a href="Inputs/RadioButton.html" title="Brut::FrontEnd::Components::Inputs::RadioButton (class)">RadioButton</a></span>, <span class='object_link'><a href="Inputs/SelectTagWithOptions.html" title="Brut::FrontEnd::Components::Inputs::SelectTagWithOptions (class)">SelectTagWithOptions</a></span>, <span class='object_link'><a href="Inputs/TextareaTag.html" title="Brut::FrontEnd::Components::Inputs::TextareaTag (class)">TextareaTag</a></span>
102
+ <strong class="classes">Classes:</strong> <span class='object_link'><a href="Inputs/ButtonTag.html" title="Brut::FrontEnd::Components::Inputs::ButtonTag (class)">ButtonTag</a></span>, <span class='object_link'><a href="Inputs/CsrfToken.html" title="Brut::FrontEnd::Components::Inputs::CsrfToken (class)">CsrfToken</a></span>, <span class='object_link'><a href="Inputs/InputTag.html" title="Brut::FrontEnd::Components::Inputs::InputTag (class)">InputTag</a></span>, <span class='object_link'><a href="Inputs/RadioButton.html" title="Brut::FrontEnd::Components::Inputs::RadioButton (class)">RadioButton</a></span>, <span class='object_link'><a href="Inputs/SelectTagWithOptions.html" title="Brut::FrontEnd::Components::Inputs::SelectTagWithOptions (class)">SelectTagWithOptions</a></span>, <span class='object_link'><a href="Inputs/TextareaTag.html" title="Brut::FrontEnd::Components::Inputs::TextareaTag (class)">TextareaTag</a></span>
103
103
 
104
104
 
105
105
  </p>
@@ -115,7 +115,7 @@
115
115
  </div>
116
116
 
117
117
  <div id="footer">
118
- Generated on Fri Aug 15 22:12:00 2025 by
118
+ Generated on Fri Sep 5 13:46:22 2025 by
119
119
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
120
120
  0.9.37 (ruby-3.4.5).
121
121
  </div>
@@ -357,7 +357,7 @@ ask the browser to send it, or not.</p>
357
357
  </div>
358
358
 
359
359
  <div id="footer">
360
- Generated on Fri Aug 15 22:12:02 2025 by
360
+ Generated on Fri Sep 5 13:46:23 2025 by
361
361
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
362
362
  0.9.37 (ruby-3.4.5).
363
363
  </div>
@@ -326,7 +326,7 @@
326
326
  </div>
327
327
 
328
328
  <div id="footer">
329
- Generated on Fri Aug 15 22:12:02 2025 by
329
+ Generated on Fri Sep 5 13:46:23 2025 by
330
330
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
331
331
  0.9.37 (ruby-3.4.5).
332
332
  </div>
@@ -645,7 +645,7 @@ you would like to be accessible. If omitted, the tag's contents will be the for
645
645
  </div>
646
646
 
647
647
  <div id="footer">
648
- Generated on Fri Aug 15 22:12:01 2025 by
648
+ Generated on Fri Sep 5 13:46:23 2025 by
649
649
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
650
650
  0.9.37 (ruby-3.4.5).
651
651
  </div>
@@ -342,7 +342,7 @@
342
342
  </div>
343
343
 
344
344
  <div id="footer">
345
- Generated on Fri Aug 15 22:12:02 2025 by
345
+ Generated on Fri Sep 5 13:46:23 2025 by
346
346
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
347
347
  0.9.37 (ruby-3.4.5).
348
348
  </div>
@@ -146,7 +146,7 @@ end</code></pre>
146
146
  </div>
147
147
 
148
148
  <div id="footer">
149
- Generated on Fri Aug 15 22:12:00 2025 by
149
+ Generated on Fri Sep 5 13:46:22 2025 by
150
150
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
151
151
  0.9.37 (ruby-3.4.5).
152
152
  </div>
@@ -240,7 +240,7 @@ class App &lt; Brut::Framework::App
240
240
  </div>
241
241
 
242
242
  <div id="footer">
243
- Generated on Fri Aug 15 22:12:01 2025 by
243
+ Generated on Fri Sep 5 13:46:23 2025 by
244
244
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
245
245
  0.9.37 (ruby-3.4.5).
246
246
  </div>
@@ -457,7 +457,7 @@ download the same file mulitple times but you want to make each name different a
457
457
  </div>
458
458
 
459
459
  <div id="footer">
460
- Generated on Fri Aug 15 22:12:01 2025 by
460
+ Generated on Fri Sep 5 13:46:23 2025 by
461
461
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
462
462
  0.9.37 (ruby-3.4.5).
463
463
  </div>
@@ -1140,7 +1140,7 @@ flash from being more than 1 request old. This is usually sufficient for a hand
1140
1140
  </div>
1141
1141
 
1142
1142
  <div id="footer">
1143
- Generated on Fri Aug 15 22:12:01 2025 by
1143
+ Generated on Fri Sep 5 13:46:23 2025 by
1144
1144
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1145
1145
  0.9.37 (ruby-3.4.5).
1146
1146
  </div>
@@ -380,7 +380,7 @@ for processing them or for testing.</p>
380
380
 
381
381
 
382
382
  <h3 class="inherited">Methods included from <span class='object_link'><a href="Forms/InputDeclarations.html" title="Brut::FrontEnd::Forms::InputDeclarations (module)">Brut::FrontEnd::Forms::InputDeclarations</a></span></h3>
383
- <p class="inherited"><span class='object_link'><a href="Forms/InputDeclarations.html#inputs_from-instance_method" title="Brut::FrontEnd::Forms::InputDeclarations#inputs_from (method)">inputs_from</a></span>, <span class='object_link'><a href="Forms/InputDeclarations.html#radio_button_group-instance_method" title="Brut::FrontEnd::Forms::InputDeclarations#radio_button_group (method)">radio_button_group</a></span>, <span class='object_link'><a href="Forms/InputDeclarations.html#select-instance_method" title="Brut::FrontEnd::Forms::InputDeclarations#select (method)">select</a></span></p>
383
+ <p class="inherited"><span class='object_link'><a href="Forms/InputDeclarations.html#button-instance_method" title="Brut::FrontEnd::Forms::InputDeclarations#button (method)">button</a></span>, <span class='object_link'><a href="Forms/InputDeclarations.html#inputs_from-instance_method" title="Brut::FrontEnd::Forms::InputDeclarations#inputs_from (method)">inputs_from</a></span>, <span class='object_link'><a href="Forms/InputDeclarations.html#radio_button_group-instance_method" title="Brut::FrontEnd::Forms::InputDeclarations#radio_button_group (method)">radio_button_group</a></span>, <span class='object_link'><a href="Forms/InputDeclarations.html#select-instance_method" title="Brut::FrontEnd::Forms::InputDeclarations#select (method)">select</a></span></p>
384
384
  <div id="constructor_details" class="method_details_list">
385
385
  <h2>Constructor Details</h2>
386
386
 
@@ -412,8 +412,6 @@ defined.</p>
412
412
  <pre class="lines">
413
413
 
414
414
 
415
- 32
416
- 33
417
415
  34
418
416
  35
419
417
  36
@@ -462,10 +460,12 @@ defined.</p>
462
460
  79
463
461
  80
464
462
  81
465
- 82</pre>
463
+ 82
464
+ 83
465
+ 84</pre>
466
466
  </td>
467
467
  <td>
468
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 32</span>
468
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 34</span>
469
469
 
470
470
  <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>params:</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
471
471
  <span class='id identifier rubyid_params'>params</span> <span class='op'>=</span> <span class='id identifier rubyid_convert_to_string_or_nil'>convert_to_string_or_nil</span><span class='lparen'>(</span><span class='id identifier rubyid_params'>params</span><span class='period'>.</span><span class='id identifier rubyid_to_h'>to_h</span><span class='rparen'>)</span>
@@ -476,11 +476,11 @@ defined.</p>
476
476
  <span class='const'><span class='object_link'><a href="../../Brut.html" title="Brut (module)">Brut</a></span></span><span class='period'>.</span><span class='id identifier rubyid_container'><span class='object_link'><a href="../../Brut.html#container-class_method" title="Brut.container (method)">container</a></span></span><span class='period'>.</span><span class='id identifier rubyid_instrumentation'>instrumentation</span><span class='period'>.</span><span class='id identifier rubyid_add_attributes'>add_attributes</span><span class='lparen'>(</span><span class='label'>prefix:</span> <span class='symbol'>:brut</span><span class='comma'>,</span> <span class='label'>ignored_unknown_params:</span> <span class='id identifier rubyid_unknown_params'>unknown_params</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>,</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='rparen'>)</span>
477
477
  <span class='kw'>end</span>
478
478
  <span class='ivar'>@params</span> <span class='op'>=</span> <span class='id identifier rubyid_params'>params</span><span class='period'>.</span><span class='id identifier rubyid_except'>except</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_unknown_params'>unknown_params</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span><span class='id identifier rubyid_value'>value</span><span class='op'>|</span>
479
- <span class='id identifier rubyid_input_definition'>input_definition</span> <span class='op'>=</span> <span class='kw'>begin</span>
480
- <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_input_definitions'>input_definitions</span><span class='lbracket'>[</span><span class='id identifier rubyid_name'>name</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_input_definitions'>input_definitions</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span>
481
- <span class='kw'>rescue</span> <span class='const'>KeyError</span>
482
- <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>cannot find input definition for &#39;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_content'>&#39;. Have these: </span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_input_definitions'>input_definitions</span><span class='period'>.</span><span class='id identifier rubyid_keys'>keys</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
483
- <span class='kw'>end</span>
479
+ <span class='id identifier rubyid_input_definition'>input_definition</span> <span class='op'>=</span> <span class='kw'>begin</span>
480
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_input_definitions'>input_definitions</span><span class='lbracket'>[</span><span class='id identifier rubyid_name'>name</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_input_definitions'>input_definitions</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span>
481
+ <span class='kw'>rescue</span> <span class='const'>KeyError</span>
482
+ <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>cannot find input definition for &#39;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_name'>name</span><span class='embexpr_end'>}</span><span class='tstring_content'>&#39;. Have these: </span><span class='embexpr_beg'>#{</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_input_definitions'>input_definitions</span><span class='period'>.</span><span class='id identifier rubyid_keys'>keys</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
483
+ <span class='kw'>end</span>
484
484
  <span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</span><span class='lparen'>(</span><span class='const'>Array</span><span class='rparen'>)</span>
485
485
  <span class='id identifier rubyid_input_definition'>input_definition</span> <span class='op'>=</span> <span class='kw'>begin</span>
486
486
  <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_input_definitions'>input_definitions</span><span class='lbracket'>[</span><span class='id identifier rubyid_name'>name</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_input_definitions'>input_definitions</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span>
@@ -614,8 +614,6 @@ name.</p>
614
614
  <pre class="lines">
615
615
 
616
616
 
617
- 151
618
- 152
619
617
  153
620
618
  154
621
619
  155
@@ -636,10 +634,12 @@ name.</p>
636
634
  170
637
635
  171
638
636
  172
639
- 173</pre>
637
+ 173
638
+ 174
639
+ 175</pre>
640
640
  </td>
641
641
  <td>
642
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 151</span>
642
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 153</span>
643
643
 
644
644
  <span class='kw'>def</span> <span class='id identifier rubyid_constraint_violations'>constraint_violations</span><span class='lparen'>(</span><span class='label'>server_side_only:</span> <span class='kw'>false</span><span class='rparen'>)</span>
645
645
  <span class='ivar'>@inputs</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_input_name'>input_name</span><span class='comma'>,</span> <span class='id identifier rubyid_inputs'>inputs</span><span class='op'>|</span>
@@ -707,10 +707,10 @@ name.</p>
707
707
  <pre class="lines">
708
708
 
709
709
 
710
- 117</pre>
710
+ 119</pre>
711
711
  </td>
712
712
  <td>
713
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 117</span>
713
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 119</span>
714
714
 
715
715
  <span class='kw'>def</span> <span class='id identifier rubyid_constraint_violations?'>constraint_violations?</span> <span class='op'>=</span> <span class='op'>!</span><span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_valid?'>valid?</span></pre>
716
716
  </td>
@@ -792,8 +792,6 @@ name.</p>
792
792
  <pre class="lines">
793
793
 
794
794
 
795
- 95
796
- 96
797
795
  97
798
796
  98
799
797
  99
@@ -802,10 +800,12 @@ name.</p>
802
800
  102
803
801
  103
804
802
  104
805
- 105</pre>
803
+ 105
804
+ 106
805
+ 107</pre>
806
806
  </td>
807
807
  <td>
808
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 95</span>
808
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 97</span>
809
809
 
810
810
  <span class='kw'>def</span> <span class='id identifier rubyid_input'>input</span><span class='lparen'>(</span><span class='id identifier rubyid_input_name'>input_name</span><span class='comma'>,</span> <span class='label'>index:</span> <span class='kw'>nil</span><span class='rparen'>)</span>
811
811
  <span class='id identifier rubyid_index'>index</span> <span class='op'>||=</span> <span class='int'>0</span>
@@ -880,14 +880,14 @@ name.</p>
880
880
  <pre class="lines">
881
881
 
882
882
 
883
- 110
884
- 111
885
883
  112
886
884
  113
887
- 114</pre>
885
+ 114
886
+ 115
887
+ 116</pre>
888
888
  </td>
889
889
  <td>
890
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 110</span>
890
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 112</span>
891
891
 
892
892
  <span class='kw'>def</span> <span class='id identifier rubyid_inputs'>inputs</span><span class='lparen'>(</span><span class='id identifier rubyid_input_name'>input_name</span><span class='rparen'>)</span>
893
893
  <span class='ivar'>@inputs</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span><span class='lparen'>(</span><span class='id identifier rubyid_input_name'>input_name</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='rparen'>)</span>
@@ -940,10 +940,10 @@ Generally, don't override this. Instead, override <span class='object_link'><a h
940
940
  <pre class="lines">
941
941
 
942
942
 
943
- 88</pre>
943
+ 90</pre>
944
944
  </td>
945
945
  <td>
946
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 88</span>
946
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 90</span>
947
947
 
948
948
  <span class='kw'>def</span> <span class='id identifier rubyid_new?'>new?</span> <span class='op'>=</span> <span class='ivar'>@new</span></pre>
949
949
  </td>
@@ -992,10 +992,10 @@ values provided by the user. This can allow a form with values in it to be cons
992
992
  <pre class="lines">
993
993
 
994
994
 
995
- 179</pre>
995
+ 181</pre>
996
996
  </td>
997
997
  <td>
998
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 179</span>
998
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 181</span>
999
999
 
1000
1000
  <span class='kw'>def</span> <span class='id identifier rubyid_params_empty?'>params_empty?</span><span class='lparen'>(</span><span class='id identifier rubyid_params'>params</span><span class='rparen'>)</span> <span class='op'>=</span> <span class='id identifier rubyid_params'>params</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>||</span> <span class='id identifier rubyid_params'>params</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span></pre>
1001
1001
  </td>
@@ -1081,13 +1081,13 @@ values provided by the user. This can allow a form with values in it to be cons
1081
1081
  <pre class="lines">
1082
1082
 
1083
1083
 
1084
- 128
1085
- 129
1086
1084
  130
1087
- 131</pre>
1085
+ 131
1086
+ 132
1087
+ 133</pre>
1088
1088
  </td>
1089
1089
  <td>
1090
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 128</span>
1090
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 130</span>
1091
1091
 
1092
1092
  <span class='kw'>def</span> <span class='id identifier rubyid_server_side_constraint_violation'>server_side_constraint_violation</span><span class='lparen'>(</span><span class='label'>input_name:</span><span class='comma'>,</span> <span class='label'>key:</span><span class='comma'>,</span> <span class='label'>index:</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='label'>context:</span><span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
1093
1093
  <span class='id identifier rubyid_index'>index</span> <span class='op'>||=</span> <span class='int'>0</span>
@@ -1144,14 +1144,14 @@ will be represented as a key in the resulting hash—only those keys that were p
1144
1144
  <pre class="lines">
1145
1145
 
1146
1146
 
1147
- 187
1148
- 188
1149
1147
  189
1150
1148
  190
1151
- 191</pre>
1149
+ 191
1150
+ 192
1151
+ 193</pre>
1152
1152
  </td>
1153
1153
  <td>
1154
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 187</span>
1154
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 189</span>
1155
1155
 
1156
1156
  <span class='kw'>def</span> <span class='id identifier rubyid_to_h'>to_h</span>
1157
1157
  <span class='ivar'>@params</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span><span class='id identifier rubyid_value'>value</span><span class='op'>|</span>
@@ -1201,10 +1201,10 @@ will be represented as a key in the resulting hash—only those keys that were p
1201
1201
  <pre class="lines">
1202
1202
 
1203
1203
 
1204
- 120</pre>
1204
+ 122</pre>
1205
1205
  </td>
1206
1206
  <td>
1207
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 120</span>
1207
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 122</span>
1208
1208
 
1209
1209
  <span class='kw'>def</span> <span class='id identifier rubyid_valid?'>valid?</span> <span class='op'>=</span> <span class='ivar'>@inputs</span><span class='period'>.</span><span class='id identifier rubyid_values'>values</span><span class='period'>.</span><span class='id identifier rubyid_flatten'>flatten</span><span class='period'>.</span><span class='id identifier rubyid_all?'>all?</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:valid?</span><span class='rparen'>)</span></pre>
1210
1210
  </td>
@@ -1217,7 +1217,7 @@ will be represented as a key in the resulting hash—only those keys that were p
1217
1217
  </div>
1218
1218
 
1219
1219
  <div id="footer">
1220
- Generated on Fri Aug 15 22:12:01 2025 by
1220
+ Generated on Fri Sep 5 13:46:22 2025 by
1221
1221
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1222
1222
  0.9.37 (ruby-3.4.5).
1223
1223
  </div>