brut 0.3.1 → 0.5.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 (408) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +46 -0
  3. data/Gemfile.lock +1 -1
  4. data/assets/MetroIcon.graffle +0 -0
  5. data/brut-css/package-lock.json +2 -2
  6. data/brut-css/package.json +1 -1
  7. data/brut-css/src/css/flex.css +1 -1
  8. data/brut-css/src/docs/includes/body-and-header.html.ejs +1 -1
  9. data/brut-js/package-lock.json +2 -2
  10. data/brut-js/package.json +1 -1
  11. data/brut-js/specs/AjaxSubmit.spec.js +100 -7
  12. data/brut-js/specs/ConstraintViolationMessage.spec.js +1 -1
  13. data/brut-js/specs/ConstraintViolationMessages.spec.js +2 -2
  14. data/brut-js/specs/Form.spec.js +5 -5
  15. data/brut-js/src/AjaxSubmit.js +76 -40
  16. data/brut-js/src/ConstraintViolationMessage.js +3 -3
  17. data/brut-js/src/ConstraintViolationMessages.js +2 -2
  18. data/brutrb.com/adrs.md +1 -0
  19. data/brutrb.com/database-schema.md +22 -2
  20. data/brutrb.com/dev-environment.md +1 -0
  21. data/brutrb.com/form-constraints.md +2 -2
  22. data/brutrb.com/handlers.md +1 -1
  23. data/brutrb.com/i18n.md +2 -2
  24. data/brutrb.com/layouts.md +1 -1
  25. data/docs/404.html +2 -2
  26. data/docs/adrs.html +5 -5
  27. data/docs/ai.html +3 -3
  28. data/docs/api/Brut/BackEnd/SeedData.html +1 -1
  29. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server/FlushSpans.html +1 -1
  30. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server.html +1 -1
  31. data/docs/api/Brut/BackEnd/Sidekiq/Middlewares.html +1 -1
  32. data/docs/api/Brut/BackEnd/Sidekiq.html +1 -1
  33. data/docs/api/Brut/BackEnd/Validators/FormValidator.html +1 -1
  34. data/docs/api/Brut/BackEnd/Validators.html +1 -1
  35. data/docs/api/Brut/BackEnd.html +1 -1
  36. data/docs/api/Brut/CLI/App.html +1 -1
  37. data/docs/api/Brut/CLI/AppRunner.html +1 -1
  38. data/docs/api/Brut/CLI/Apps/BuildAssets/All.html +2 -2
  39. data/docs/api/Brut/CLI/Apps/BuildAssets/CSS.html +6 -6
  40. data/docs/api/Brut/CLI/Apps/BuildAssets/Images.html +1 -1
  41. data/docs/api/Brut/CLI/Apps/BuildAssets/JS.html +6 -6
  42. data/docs/api/Brut/CLI/Apps/BuildAssets.html +2 -2
  43. data/docs/api/Brut/CLI/Apps/DB/Create.html +1 -1
  44. data/docs/api/Brut/CLI/Apps/DB/Drop.html +1 -1
  45. data/docs/api/Brut/CLI/Apps/DB/Migrate.html +1 -1
  46. data/docs/api/Brut/CLI/Apps/DB/NewMigration.html +6 -2
  47. data/docs/api/Brut/CLI/Apps/DB/Rebuild.html +1 -1
  48. data/docs/api/Brut/CLI/Apps/DB/Seed.html +1 -1
  49. data/docs/api/Brut/CLI/Apps/DB/Status.html +9 -9
  50. data/docs/api/Brut/CLI/Apps/DB.html +1 -1
  51. data/docs/api/Brut/CLI/Apps/DeployBase/GitChecks.html +1 -1
  52. data/docs/api/Brut/CLI/Apps/DeployBase.html +1 -1
  53. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy/Deploy.html +1 -1
  54. data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy.html +1 -1
  55. data/docs/api/Brut/CLI/Apps/Scaffold/Action/Route.html +1 -1
  56. data/docs/api/Brut/CLI/Apps/Scaffold/Action.html +8 -12
  57. data/docs/api/Brut/CLI/Apps/Scaffold/Component.html +1 -1
  58. data/docs/api/Brut/CLI/Apps/Scaffold/CustomElementTest.html +5 -5
  59. data/docs/api/Brut/CLI/Apps/Scaffold/DbModel.html +384 -0
  60. data/docs/api/Brut/CLI/Apps/Scaffold/E2ETest.html +1 -1
  61. data/docs/api/Brut/CLI/Apps/Scaffold/Form.html +5 -5
  62. data/docs/api/Brut/CLI/Apps/Scaffold/Page/Route.html +1 -1
  63. data/docs/api/Brut/CLI/Apps/Scaffold/Page.html +1 -1
  64. data/docs/api/Brut/CLI/Apps/Scaffold/RoutesEditor.html +36 -36
  65. data/docs/api/Brut/CLI/Apps/Scaffold/Test.html +1 -1
  66. data/docs/api/Brut/CLI/Apps/Scaffold.html +2 -2
  67. data/docs/api/Brut/CLI/Apps/Test/Audit.html +1 -1
  68. data/docs/api/Brut/CLI/Apps/Test/E2e.html +1 -1
  69. data/docs/api/Brut/CLI/Apps/Test/JS.html +1 -1
  70. data/docs/api/Brut/CLI/Apps/Test/Run.html +1 -1
  71. data/docs/api/Brut/CLI/Apps/Test.html +1 -1
  72. data/docs/api/Brut/CLI/Apps.html +1 -1
  73. data/docs/api/Brut/CLI/Command.html +29 -31
  74. data/docs/api/Brut/CLI/Error.html +1 -1
  75. data/docs/api/Brut/CLI/ExecutionResults/Result.html +1 -1
  76. data/docs/api/Brut/CLI/ExecutionResults.html +1 -1
  77. data/docs/api/Brut/CLI/Executor.html +1 -1
  78. data/docs/api/Brut/CLI/InvalidOption.html +1 -1
  79. data/docs/api/Brut/CLI/Options.html +1 -1
  80. data/docs/api/Brut/CLI/Output.html +1 -1
  81. data/docs/api/Brut/CLI/SystemExecError.html +1 -1
  82. data/docs/api/Brut/CLI.html +1 -1
  83. data/docs/api/Brut/FactoryBot.html +1 -1
  84. data/docs/api/Brut/Framework/App.html +1 -1
  85. data/docs/api/Brut/Framework/Config.html +16 -2
  86. data/docs/api/Brut/Framework/Container.html +1 -1
  87. data/docs/api/Brut/Framework/Error.html +1 -1
  88. data/docs/api/Brut/Framework/Errors/AbstractMethod.html +1 -1
  89. data/docs/api/Brut/Framework/Errors/Bug.html +1 -1
  90. data/docs/api/Brut/Framework/Errors/MissingConfiguration.html +1 -1
  91. data/docs/api/Brut/Framework/Errors/MissingParameter.html +1 -1
  92. data/docs/api/Brut/Framework/Errors/NoClassForPath.html +1 -1
  93. data/docs/api/Brut/Framework/Errors/NotFound.html +1 -1
  94. data/docs/api/Brut/Framework/Errors/NotImplemented.html +1 -1
  95. data/docs/api/Brut/Framework/Errors.html +1 -1
  96. data/docs/api/Brut/Framework/FussyTypeEnforcement.html +1 -1
  97. data/docs/api/Brut/Framework/MCP.html +1 -1
  98. data/docs/api/Brut/Framework/ProjectEnvironment.html +1 -1
  99. data/docs/api/Brut/Framework.html +1 -1
  100. data/docs/api/Brut/FrontEnd/AssetPathResolver.html +1 -1
  101. data/docs/api/Brut/FrontEnd/Component/Helpers.html +86 -2
  102. data/docs/api/Brut/FrontEnd/Component.html +78 -9
  103. data/docs/api/Brut/FrontEnd/Components/ConstraintViolations.html +5 -5
  104. data/docs/api/Brut/FrontEnd/Components/FormTag.html +3 -3
  105. data/docs/api/Brut/FrontEnd/Components/I18nTranslations.html +12 -16
  106. data/docs/api/Brut/FrontEnd/Components/Input.html +3 -3
  107. data/docs/api/Brut/FrontEnd/Components/Inputs/CsrfToken.html +3 -3
  108. data/docs/api/Brut/FrontEnd/Components/Inputs/InputTag.html +3 -3
  109. data/docs/api/Brut/FrontEnd/Components/Inputs/RadioButton.html +3 -3
  110. data/docs/api/Brut/FrontEnd/Components/Inputs/SelectTagWithOptions.html +5 -5
  111. data/docs/api/Brut/FrontEnd/Components/Inputs/TextareaTag.html +3 -3
  112. data/docs/api/Brut/FrontEnd/Components/Inputs.html +1 -1
  113. data/docs/api/Brut/FrontEnd/Components/LocaleDetection.html +3 -3
  114. data/docs/api/Brut/FrontEnd/Components/PageIdentifier.html +3 -3
  115. data/docs/api/Brut/FrontEnd/Components/TimeTag.html +3 -3
  116. data/docs/api/Brut/FrontEnd/Components/Traceparent.html +3 -3
  117. data/docs/api/Brut/FrontEnd/Components.html +1 -1
  118. data/docs/api/Brut/FrontEnd/Download.html +1 -1
  119. data/docs/api/Brut/FrontEnd/Flash.html +1 -1
  120. data/docs/api/Brut/FrontEnd/Form.html +92 -20
  121. data/docs/api/Brut/FrontEnd/Forms/ConstraintViolation.html +1 -1
  122. data/docs/api/Brut/FrontEnd/Forms/Input/Color.html +1 -1
  123. data/docs/api/Brut/FrontEnd/Forms/Input/TimeOfDay.html +1 -1
  124. data/docs/api/Brut/FrontEnd/Forms/Input.html +1 -1
  125. data/docs/api/Brut/FrontEnd/Forms/InputDeclarations.html +1 -1
  126. data/docs/api/Brut/FrontEnd/Forms/InputDefinition.html +1 -1
  127. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInput.html +1 -1
  128. data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInputDefinition.html +1 -1
  129. data/docs/api/Brut/FrontEnd/Forms/SelectInput.html +1 -1
  130. data/docs/api/Brut/FrontEnd/Forms/SelectInputDefinition.html +1 -1
  131. data/docs/api/Brut/FrontEnd/Forms/ValidityState.html +1 -1
  132. data/docs/api/Brut/FrontEnd/Forms.html +1 -1
  133. data/docs/api/Brut/FrontEnd/GenericResponse.html +1 -1
  134. data/docs/api/Brut/FrontEnd/Handler.html +1 -1
  135. data/docs/api/Brut/FrontEnd/Handlers/CspReportingHandler.html +1 -1
  136. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler/TraceParent.html +1 -1
  137. data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler.html +1 -1
  138. data/docs/api/Brut/FrontEnd/Handlers/LocaleDetectionHandler.html +1 -1
  139. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler/Form.html +2 -2
  140. data/docs/api/Brut/FrontEnd/Handlers/MissingHandler.html +1 -1
  141. data/docs/api/Brut/FrontEnd/Handlers.html +1 -1
  142. data/docs/api/Brut/FrontEnd/HandlingResults.html +1 -1
  143. data/docs/api/Brut/FrontEnd/HttpMethod.html +1 -1
  144. data/docs/api/Brut/FrontEnd/HttpStatus.html +1 -1
  145. data/docs/api/Brut/FrontEnd/InlineSvgLocator.html +1 -1
  146. data/docs/api/Brut/FrontEnd/Layout.html +3 -3
  147. data/docs/api/Brut/FrontEnd/Middleware.html +1 -1
  148. data/docs/api/Brut/FrontEnd/Middlewares/AnnotateBrutOwnedPaths.html +1 -1
  149. data/docs/api/Brut/FrontEnd/Middlewares/Favicon.html +1 -1
  150. data/docs/api/Brut/FrontEnd/Middlewares/OpenTelemetrySpan.html +1 -1
  151. data/docs/api/Brut/FrontEnd/Middlewares/ReloadApp.html +1 -1
  152. data/docs/api/Brut/FrontEnd/Middlewares.html +1 -1
  153. data/docs/api/Brut/FrontEnd/Page.html +31 -23
  154. data/docs/api/Brut/FrontEnd/Pages/MissingPage.html +3 -3
  155. data/docs/api/Brut/FrontEnd/Pages.html +1 -1
  156. data/docs/api/Brut/FrontEnd/RequestContext.html +1 -1
  157. data/docs/api/Brut/FrontEnd/RouteHook.html +1 -1
  158. data/docs/api/Brut/FrontEnd/RouteHooks/AgeFlash.html +1 -1
  159. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineScripts.html +1 -1
  160. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts/ReportOnly.html +1 -1
  161. data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts.html +1 -1
  162. data/docs/api/Brut/FrontEnd/RouteHooks/LocaleDetection.html +1 -1
  163. data/docs/api/Brut/FrontEnd/RouteHooks/SetupRequestContext.html +1 -1
  164. data/docs/api/Brut/FrontEnd/RouteHooks.html +1 -1
  165. data/docs/api/Brut/FrontEnd/Routing/FormHandlerRoute.html +1 -1
  166. data/docs/api/Brut/FrontEnd/Routing/FormRoute.html +1 -1
  167. data/docs/api/Brut/FrontEnd/Routing/MissingForm.html +1 -1
  168. data/docs/api/Brut/FrontEnd/Routing/MissingHandler.html +1 -1
  169. data/docs/api/Brut/FrontEnd/Routing/MissingPage.html +1 -1
  170. data/docs/api/Brut/FrontEnd/Routing/MissingPath.html +1 -1
  171. data/docs/api/Brut/FrontEnd/Routing/PageRoute.html +1 -1
  172. data/docs/api/Brut/FrontEnd/Routing/Route.html +1 -1
  173. data/docs/api/Brut/FrontEnd/Routing.html +1 -1
  174. data/docs/api/Brut/FrontEnd/Session.html +1 -1
  175. data/docs/api/Brut/FrontEnd.html +1 -1
  176. data/docs/api/Brut/I18n/BaseMethods.html +1 -1
  177. data/docs/api/Brut/I18n/ForBackEnd.html +1 -1
  178. data/docs/api/Brut/I18n/ForCLI.html +1 -1
  179. data/docs/api/Brut/I18n/ForHTML.html +1 -1
  180. data/docs/api/Brut/I18n/HTTPAcceptLanguage/AlwaysEnglish.html +1 -1
  181. data/docs/api/Brut/I18n/HTTPAcceptLanguage.html +1 -1
  182. data/docs/api/Brut/I18n.html +1 -1
  183. data/docs/api/Brut/Instrumentation/LoggerSpanExporter.html +1 -1
  184. data/docs/api/Brut/Instrumentation/OpenTelemetry/NormalizedAttributes.html +1 -1
  185. data/docs/api/Brut/Instrumentation/OpenTelemetry/Span.html +1 -1
  186. data/docs/api/Brut/Instrumentation/OpenTelemetry.html +1 -1
  187. data/docs/api/Brut/Instrumentation.html +1 -1
  188. data/docs/api/Brut/SinatraHelpers/ClassMethods.html +13 -11
  189. data/docs/api/Brut/SinatraHelpers.html +1 -1
  190. data/docs/api/Brut/SpecSupport/ClockSupport.html +1 -1
  191. data/docs/api/Brut/SpecSupport/ComponentSupport.html +1 -1
  192. data/docs/api/Brut/SpecSupport/E2ETestServer.html +1 -1
  193. data/docs/api/Brut/SpecSupport/E2eSupport.html +1 -1
  194. data/docs/api/Brut/SpecSupport/EnhancedNode.html +1 -1
  195. data/docs/api/Brut/SpecSupport/FlashSupport.html +1 -1
  196. data/docs/api/Brut/SpecSupport/GeneralSupport/ClassMethods.html +1 -1
  197. data/docs/api/Brut/SpecSupport/GeneralSupport.html +1 -1
  198. data/docs/api/Brut/SpecSupport/HandlerSupport.html +1 -1
  199. data/docs/api/Brut/SpecSupport/Matchers/BeABug.html +1 -1
  200. data/docs/api/Brut/SpecSupport/Matchers/BePageFor.html +1 -1
  201. data/docs/api/Brut/SpecSupport/Matchers/BeRoutingFor.html +1 -1
  202. data/docs/api/Brut/SpecSupport/Matchers/HaveConstraintViolation.html +1 -1
  203. data/docs/api/Brut/SpecSupport/Matchers/HaveGenerated.html +1 -1
  204. data/docs/api/Brut/SpecSupport/Matchers/HaveHTMLAttribute.html +1 -1
  205. data/docs/api/Brut/SpecSupport/Matchers/HaveI18nString.html +1 -1
  206. data/docs/api/Brut/SpecSupport/Matchers/HaveLinkTo.html +1 -1
  207. data/docs/api/Brut/SpecSupport/Matchers/HaveRedirectedTo.html +1 -1
  208. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedHttpStatus.html +1 -1
  209. data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedRackResponse.html +1 -1
  210. data/docs/api/Brut/SpecSupport/Matchers.html +1 -1
  211. data/docs/api/Brut/SpecSupport/RSpecSetup/OptionalSidekiqSupport.html +1 -1
  212. data/docs/api/Brut/SpecSupport/RSpecSetup.html +1 -1
  213. data/docs/api/Brut/SpecSupport/SessionSupport.html +1 -1
  214. data/docs/api/Brut/SpecSupport.html +1 -1
  215. data/docs/api/Brut.html +1 -1
  216. data/docs/api/Clock.html +1 -1
  217. data/docs/api/ModuleName.html +595 -0
  218. data/docs/api/RichString.html +1 -1
  219. data/docs/api/SemanticLogger/Appender/Async.html +1 -1
  220. data/docs/api/Sequel/Extensions/BrutInstrumentation.html +1 -1
  221. data/docs/api/Sequel/Extensions/BrutMigrations.html +1 -1
  222. data/docs/api/Sequel/Extensions.html +1 -1
  223. data/docs/api/Sequel/Plugins/CreatedAt/InstanceMethods.html +1 -1
  224. data/docs/api/Sequel/Plugins/CreatedAt.html +1 -1
  225. data/docs/api/Sequel/Plugins/ExternalId/ClassMethods.html +1 -1
  226. data/docs/api/Sequel/Plugins/ExternalId/InstanceMethods.html +1 -1
  227. data/docs/api/Sequel/Plugins/ExternalId.html +1 -1
  228. data/docs/api/Sequel/Plugins/FindBang/ClassMethods.html +1 -1
  229. data/docs/api/Sequel/Plugins/FindBang.html +1 -1
  230. data/docs/api/Sequel/Plugins.html +1 -1
  231. data/docs/api/Sequel.html +1 -1
  232. data/docs/api/_index.html +24 -12
  233. data/docs/api/class_list.html +1 -1
  234. data/docs/api/file.README.html +1 -1
  235. data/docs/api/index.html +1 -1
  236. data/docs/api/method_list.html +416 -328
  237. data/docs/api/top-level-namespace.html +2 -2
  238. data/docs/assets/{adrs.md.JRxZ5uYE.js → adrs.md.BxjHi9-8.js} +1 -1
  239. data/docs/assets/adrs.md.BxjHi9-8.lean.js +1 -0
  240. data/docs/assets/{app.C0n_5kBs.js → app.D6BuVHo9.js} +1 -1
  241. data/docs/assets/chunks/@localSearchIndexroot.COP2Bcmp.js +1 -0
  242. data/docs/assets/chunks/{VPLocalSearchBox.yICoU-Ly.js → VPLocalSearchBox.BpvHMbx6.js} +1 -1
  243. data/docs/assets/chunks/{theme.gMVDgzXI.js → theme.wlAOvi2f.js} +2 -2
  244. data/docs/assets/{components.md.DGVPNB9a.js → components.md.iLiv2E9X.js} +3 -3
  245. data/docs/assets/{configuration.md.DK3YrtYn.js → configuration.md.DmuAdsli.js} +1 -1
  246. data/docs/assets/{database-schema.md.CSYk6E6v.js → database-schema.md.C5gXexJi.js} +10 -3
  247. data/docs/assets/{database-schema.md.CSYk6E6v.lean.js → database-schema.md.C5gXexJi.lean.js} +1 -1
  248. data/docs/assets/{dev-environment.md.Dy6EldaM.js → dev-environment.md.DRH2D2-O.js} +3 -3
  249. data/docs/assets/dev-environment.md.DRH2D2-O.lean.js +1 -0
  250. data/docs/assets/{form-constraints.md.x5tNpTTI.js → form-constraints.md.DK5adCgM.js} +2 -2
  251. data/docs/assets/{forms.md.DwdQGwOK.js → forms.md.D8aa_qI-.js} +1 -1
  252. data/docs/assets/{getting-started.md.DuiTvmpG.js → getting-started.md.DLplsDUd.js} +3 -3
  253. data/docs/assets/{getting-started.md.DuiTvmpG.lean.js → getting-started.md.DLplsDUd.lean.js} +1 -1
  254. data/docs/assets/{handlers.md.Chyri6KA.js → handlers.md.h84MMB1R.js} +1 -1
  255. data/docs/assets/{i18n.md.xQhiGo1G.js → i18n.md.BAm9t9JJ.js} +1 -1
  256. data/docs/assets/{layouts.md.CJGDFY-m.js → layouts.md.CVGl9xIO.js} +1 -1
  257. data/docs/assets.html +3 -3
  258. data/docs/brut-css/brut.max.css +1 -1
  259. data/docs/brut-css/classes/appearances.html +1 -1
  260. data/docs/brut-css/classes/background-colors.html +1 -1
  261. data/docs/brut-css/classes/border-colors.html +1 -1
  262. data/docs/brut-css/classes/borders.html +1 -1
  263. data/docs/brut-css/classes/dimensions.html +1 -1
  264. data/docs/brut-css/classes/flex.html +3 -3
  265. data/docs/brut-css/classes/foreground-colors.html +1 -1
  266. data/docs/brut-css/classes/junk-drawer.html +1 -1
  267. data/docs/brut-css/classes/layout.html +1 -1
  268. data/docs/brut-css/classes/lists.html +1 -1
  269. data/docs/brut-css/classes/positioning.html +1 -1
  270. data/docs/brut-css/classes/spacings.html +1 -1
  271. data/docs/brut-css/classes/typography.html +1 -1
  272. data/docs/brut-css/customization/advanced-configuration.html +1 -1
  273. data/docs/brut-css/customization/breakpoints.html +1 -1
  274. data/docs/brut-css/customization/design-system.html +1 -1
  275. data/docs/brut-css/customization/pseudo-classes.html +1 -1
  276. data/docs/brut-css/getting-started/core-concepts.html +1 -1
  277. data/docs/brut-css/getting-started/installation.html +1 -1
  278. data/docs/brut-css/getting-started/overview.html +1 -1
  279. data/docs/brut-css/getting-started/simple-example.html +1 -1
  280. data/docs/brut-css/index.html +1 -1
  281. data/docs/brut-css/properties/colors.html +1 -1
  282. data/docs/brut-css/properties/spacings.html +1 -1
  283. data/docs/brut-css/properties/typography.html +1 -1
  284. data/docs/brut-js/api/AjaxSubmit.html +56 -7
  285. data/docs/brut-js/api/AjaxSubmit.js.html +77 -41
  286. data/docs/brut-js/api/Autosubmit.html +1 -1
  287. data/docs/brut-js/api/Autosubmit.js.html +1 -1
  288. data/docs/brut-js/api/BaseCustomElement.html +1 -1
  289. data/docs/brut-js/api/BaseCustomElement.js.html +1 -1
  290. data/docs/brut-js/api/BrutCustomElements.html +1 -1
  291. data/docs/brut-js/api/BufferedLogger.html +1 -1
  292. data/docs/brut-js/api/ConfirmSubmit.html +1 -1
  293. data/docs/brut-js/api/ConfirmSubmit.js.html +1 -1
  294. data/docs/brut-js/api/ConfirmationDialog.html +1 -1
  295. data/docs/brut-js/api/ConfirmationDialog.js.html +1 -1
  296. data/docs/brut-js/api/ConstraintViolationMessage.html +2 -2
  297. data/docs/brut-js/api/ConstraintViolationMessage.js.html +4 -4
  298. data/docs/brut-js/api/ConstraintViolationMessages.html +3 -3
  299. data/docs/brut-js/api/ConstraintViolationMessages.js.html +3 -3
  300. data/docs/brut-js/api/CopyToClipboard.html +1 -1
  301. data/docs/brut-js/api/CopyToClipboard.js.html +1 -1
  302. data/docs/brut-js/api/Form.html +1 -1
  303. data/docs/brut-js/api/Form.js.html +1 -1
  304. data/docs/brut-js/api/I18nTranslation.html +1 -1
  305. data/docs/brut-js/api/I18nTranslation.js.html +1 -1
  306. data/docs/brut-js/api/LocaleDetection.html +1 -1
  307. data/docs/brut-js/api/LocaleDetection.js.html +1 -1
  308. data/docs/brut-js/api/Logger.html +1 -1
  309. data/docs/brut-js/api/Logger.js.html +1 -1
  310. data/docs/brut-js/api/Message.html +1 -1
  311. data/docs/brut-js/api/Message.js.html +1 -1
  312. data/docs/brut-js/api/PrefixedLogger.html +1 -1
  313. data/docs/brut-js/api/RichString.html +1 -1
  314. data/docs/brut-js/api/RichString.js.html +1 -1
  315. data/docs/brut-js/api/Tabs.html +1 -1
  316. data/docs/brut-js/api/Tabs.js.html +1 -1
  317. data/docs/brut-js/api/Tracing.html +1 -1
  318. data/docs/brut-js/api/Tracing.js.html +1 -1
  319. data/docs/brut-js/api/external-CustomElementRegistry.html +1 -1
  320. data/docs/brut-js/api/external-Performance.html +1 -1
  321. data/docs/brut-js/api/external-Promise.html +1 -1
  322. data/docs/brut-js/api/external-ValidityState.html +1 -1
  323. data/docs/brut-js/api/external-Window.html +1 -1
  324. data/docs/brut-js/api/external-fetch.html +1 -1
  325. data/docs/brut-js/api/global.html +1 -1
  326. data/docs/brut-js/api/index.html +1 -1
  327. data/docs/brut-js/api/index.js.html +1 -1
  328. data/docs/brut-js/api/module-testing.html +1 -1
  329. data/docs/brut-js/api/testing.AssetMetadata.html +1 -1
  330. data/docs/brut-js/api/testing.AssetMetadataLoader.html +1 -1
  331. data/docs/brut-js/api/testing.CustomElementTest.html +1 -1
  332. data/docs/brut-js/api/testing.DOMCreator.html +1 -1
  333. data/docs/brut-js/api/testing_AssetMetadata.js.html +1 -1
  334. data/docs/brut-js/api/testing_AssetMetadataLoader.js.html +1 -1
  335. data/docs/brut-js/api/testing_CustomElementTest.js.html +1 -1
  336. data/docs/brut-js/api/testing_DOMCreator.js.html +1 -1
  337. data/docs/brut-js/api/testing_index.js.html +1 -1
  338. data/docs/brut-js.html +3 -3
  339. data/docs/business-logic.html +3 -3
  340. data/docs/cli.html +3 -3
  341. data/docs/components.html +7 -7
  342. data/docs/configuration.html +5 -5
  343. data/docs/css.html +3 -3
  344. data/docs/custom-element-tests.html +3 -3
  345. data/docs/database-access.html +3 -3
  346. data/docs/database-schema.html +12 -5
  347. data/docs/deployment.html +3 -3
  348. data/docs/dev-environment.html +5 -5
  349. data/docs/dir-structure.html +3 -3
  350. data/docs/doc-conventions.html +3 -3
  351. data/docs/end-to-end-tests.html +3 -3
  352. data/docs/features.html +3 -3
  353. data/docs/flash-and-session.html +3 -3
  354. data/docs/form-constraints.html +6 -6
  355. data/docs/forms.html +5 -5
  356. data/docs/getting-started.html +6 -6
  357. data/docs/handlers.html +5 -5
  358. data/docs/hashmap.json +1 -1
  359. data/docs/hooks.html +3 -3
  360. data/docs/i18n.html +5 -5
  361. data/docs/index.html +3 -3
  362. data/docs/instrumentation.html +3 -3
  363. data/docs/javascript.html +3 -3
  364. data/docs/jobs.html +3 -3
  365. data/docs/keyword-injection.html +3 -3
  366. data/docs/layouts.html +5 -5
  367. data/docs/lsp.html +3 -3
  368. data/docs/markdown-examples.html +3 -3
  369. data/docs/middleware.html +3 -3
  370. data/docs/overview.html +3 -3
  371. data/docs/pages.html +3 -3
  372. data/docs/recipes/alternate-layouts.html +3 -3
  373. data/docs/recipes/authentication.html +3 -3
  374. data/docs/recipes/blank-layouts.html +3 -3
  375. data/docs/recipes/custom-flash.html +3 -3
  376. data/docs/recipes/indexed-forms.html +3 -3
  377. data/docs/recipes/migrations.html +3 -3
  378. data/docs/recipes/text-field-component.html +3 -3
  379. data/docs/roadmap.html +3 -3
  380. data/docs/routes.html +3 -3
  381. data/docs/security.html +3 -3
  382. data/docs/seed-data.html +3 -3
  383. data/docs/space-time-continuum.html +3 -3
  384. data/docs/tutorial.html +3 -3
  385. data/docs/unit-tests.html +3 -3
  386. data/docs/why.html +3 -3
  387. data/lib/brut/cli/apps/scaffold.rb +77 -0
  388. data/lib/brut/cli/command.rb +1 -2
  389. data/lib/brut/framework/config.rb +7 -0
  390. data/lib/brut/front_end/component.rb +19 -0
  391. data/lib/brut/front_end/components/constraint_violations.rb +2 -2
  392. data/lib/brut/front_end/components/i18n_translations.rb +6 -10
  393. data/lib/brut/front_end/form.rb +5 -2
  394. data/lib/brut/front_end/page.rb +11 -7
  395. data/lib/brut/junk_drawer.rb +53 -0
  396. data/lib/brut/sinatra_helpers.rb +1 -0
  397. data/lib/brut/version.rb +1 -1
  398. metadata +30 -27
  399. data/docs/assets/adrs.md.JRxZ5uYE.lean.js +0 -1
  400. data/docs/assets/chunks/@localSearchIndexroot.BF2caq1f.js +0 -1
  401. data/docs/assets/dev-environment.md.Dy6EldaM.lean.js +0 -1
  402. /data/docs/assets/{components.md.DGVPNB9a.lean.js → components.md.iLiv2E9X.lean.js} +0 -0
  403. /data/docs/assets/{configuration.md.DK3YrtYn.lean.js → configuration.md.DmuAdsli.lean.js} +0 -0
  404. /data/docs/assets/{form-constraints.md.x5tNpTTI.lean.js → form-constraints.md.DK5adCgM.lean.js} +0 -0
  405. /data/docs/assets/{forms.md.DwdQGwOK.lean.js → forms.md.D8aa_qI-.lean.js} +0 -0
  406. /data/docs/assets/{handlers.md.Chyri6KA.lean.js → handlers.md.h84MMB1R.lean.js} +0 -0
  407. /data/docs/assets/{i18n.md.xQhiGo1G.lean.js → i18n.md.BAm9t9JJ.lean.js} +0 -0
  408. /data/docs/assets/{layouts.md.CJGDFY-m.lean.js → layouts.md.CVGl9xIO.lean.js} +0 -0
@@ -220,7 +220,7 @@
220
220
 
221
221
 
222
222
  <h3 class="inherited">Methods inherited from <span class='object_link'><a href="../../Component.html" title="Brut::FrontEnd::Component (class)">Brut::FrontEnd::Component</a></span></h3>
223
- <p class="inherited"><span class='object_link'><a href="../../Component.html#component_name-class_method" title="Brut::FrontEnd::Component.component_name (method)">component_name</a></span>, <span class='object_link'><a href="../../Component.html#component_name-instance_method" title="Brut::FrontEnd::Component#component_name (method)">#component_name</a></span></p>
223
+ <p class="inherited"><span class='object_link'><a href="../../Component.html#around_template-instance_method" title="Brut::FrontEnd::Component#around_template (method)">#around_template</a></span>, <span class='object_link'><a href="../../Component.html#component_name-class_method" title="Brut::FrontEnd::Component.component_name (method)">component_name</a></span>, <span class='object_link'><a href="../../Component.html#component_name-instance_method" title="Brut::FrontEnd::Component#component_name (method)">#component_name</a></span></p>
224
224
 
225
225
 
226
226
 
@@ -231,7 +231,7 @@
231
231
 
232
232
 
233
233
  <h3 class="inherited">Methods included from <span class='object_link'><a href="../../Component/Helpers.html" title="Brut::FrontEnd::Component::Helpers (module)">Brut::FrontEnd::Component::Helpers</a></span></h3>
234
- <p class="inherited"><span class='object_link'><a href="../../Component/Helpers.html#global_component-instance_method" title="Brut::FrontEnd::Component::Helpers#global_component (method)">#global_component</a></span>, <span class='object_link'><a href="../../Component/Helpers.html#inline_svg-instance_method" title="Brut::FrontEnd::Component::Helpers#inline_svg (method)">#inline_svg</a></span></p>
234
+ <p class="inherited"><span class='object_link'><a href="../../Component/Helpers.html#entity-instance_method" title="Brut::FrontEnd::Component::Helpers#entity (method)">#entity</a></span>, <span class='object_link'><a href="../../Component/Helpers.html#global_component-instance_method" title="Brut::FrontEnd::Component::Helpers#global_component (method)">#global_component</a></span>, <span class='object_link'><a href="../../Component/Helpers.html#inline_svg-instance_method" title="Brut::FrontEnd::Component::Helpers#inline_svg (method)">#inline_svg</a></span></p>
235
235
 
236
236
 
237
237
 
@@ -525,7 +525,7 @@ Generally, you want to use this method over the initializer.</p>
525
525
  </div>
526
526
 
527
527
  <div id="footer">
528
- Generated on Thu Jul 10 13:41:05 2025 by
528
+ Generated on Mon Jul 21 18:28:18 2025 by
529
529
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
530
530
  0.9.37 (ruby-3.4.4).
531
531
  </div>
@@ -115,7 +115,7 @@
115
115
  </div>
116
116
 
117
117
  <div id="footer">
118
- Generated on Thu Jul 10 13:41:03 2025 by
118
+ Generated on Mon Jul 21 18:28:17 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.4).
121
121
  </div>
@@ -196,7 +196,7 @@ ask the browser to send it, or not.</p>
196
196
 
197
197
 
198
198
  <h3 class="inherited">Methods inherited from <span class='object_link'><a href="../Component.html" title="Brut::FrontEnd::Component (class)">Brut::FrontEnd::Component</a></span></h3>
199
- <p class="inherited"><span class='object_link'><a href="../Component.html#component_name-class_method" title="Brut::FrontEnd::Component.component_name (method)">component_name</a></span>, <span class='object_link'><a href="../Component.html#component_name-instance_method" title="Brut::FrontEnd::Component#component_name (method)">#component_name</a></span></p>
199
+ <p class="inherited"><span class='object_link'><a href="../Component.html#around_template-instance_method" title="Brut::FrontEnd::Component#around_template (method)">#around_template</a></span>, <span class='object_link'><a href="../Component.html#component_name-class_method" title="Brut::FrontEnd::Component.component_name (method)">component_name</a></span>, <span class='object_link'><a href="../Component.html#component_name-instance_method" title="Brut::FrontEnd::Component#component_name (method)">#component_name</a></span></p>
200
200
 
201
201
 
202
202
 
@@ -207,7 +207,7 @@ ask the browser to send it, or not.</p>
207
207
 
208
208
 
209
209
  <h3 class="inherited">Methods included from <span class='object_link'><a href="../Component/Helpers.html" title="Brut::FrontEnd::Component::Helpers (module)">Brut::FrontEnd::Component::Helpers</a></span></h3>
210
- <p class="inherited"><span class='object_link'><a href="../Component/Helpers.html#global_component-instance_method" title="Brut::FrontEnd::Component::Helpers#global_component (method)">#global_component</a></span>, <span class='object_link'><a href="../Component/Helpers.html#inline_svg-instance_method" title="Brut::FrontEnd::Component::Helpers#inline_svg (method)">#inline_svg</a></span></p>
210
+ <p class="inherited"><span class='object_link'><a href="../Component/Helpers.html#entity-instance_method" title="Brut::FrontEnd::Component::Helpers#entity (method)">#entity</a></span>, <span class='object_link'><a href="../Component/Helpers.html#global_component-instance_method" title="Brut::FrontEnd::Component::Helpers#global_component (method)">#global_component</a></span>, <span class='object_link'><a href="../Component/Helpers.html#inline_svg-instance_method" title="Brut::FrontEnd::Component::Helpers#inline_svg (method)">#inline_svg</a></span></p>
211
211
 
212
212
 
213
213
 
@@ -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 Thu Jul 10 13:41:05 2025 by
360
+ Generated on Mon Jul 21 18:28:18 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.4).
363
363
  </div>
@@ -189,7 +189,7 @@
189
189
 
190
190
 
191
191
  <h3 class="inherited">Methods inherited from <span class='object_link'><a href="../Component.html" title="Brut::FrontEnd::Component (class)">Brut::FrontEnd::Component</a></span></h3>
192
- <p class="inherited"><span class='object_link'><a href="../Component.html#component_name-class_method" title="Brut::FrontEnd::Component.component_name (method)">component_name</a></span>, <span class='object_link'><a href="../Component.html#component_name-instance_method" title="Brut::FrontEnd::Component#component_name (method)">#component_name</a></span></p>
192
+ <p class="inherited"><span class='object_link'><a href="../Component.html#around_template-instance_method" title="Brut::FrontEnd::Component#around_template (method)">#around_template</a></span>, <span class='object_link'><a href="../Component.html#component_name-class_method" title="Brut::FrontEnd::Component.component_name (method)">component_name</a></span>, <span class='object_link'><a href="../Component.html#component_name-instance_method" title="Brut::FrontEnd::Component#component_name (method)">#component_name</a></span></p>
193
193
 
194
194
 
195
195
 
@@ -200,7 +200,7 @@
200
200
 
201
201
 
202
202
  <h3 class="inherited">Methods included from <span class='object_link'><a href="../Component/Helpers.html" title="Brut::FrontEnd::Component::Helpers (module)">Brut::FrontEnd::Component::Helpers</a></span></h3>
203
- <p class="inherited"><span class='object_link'><a href="../Component/Helpers.html#global_component-instance_method" title="Brut::FrontEnd::Component::Helpers#global_component (method)">#global_component</a></span>, <span class='object_link'><a href="../Component/Helpers.html#inline_svg-instance_method" title="Brut::FrontEnd::Component::Helpers#inline_svg (method)">#inline_svg</a></span></p>
203
+ <p class="inherited"><span class='object_link'><a href="../Component/Helpers.html#entity-instance_method" title="Brut::FrontEnd::Component::Helpers#entity (method)">#entity</a></span>, <span class='object_link'><a href="../Component/Helpers.html#global_component-instance_method" title="Brut::FrontEnd::Component::Helpers#global_component (method)">#global_component</a></span>, <span class='object_link'><a href="../Component/Helpers.html#inline_svg-instance_method" title="Brut::FrontEnd::Component::Helpers#inline_svg (method)">#inline_svg</a></span></p>
204
204
 
205
205
 
206
206
 
@@ -326,7 +326,7 @@
326
326
  </div>
327
327
 
328
328
  <div id="footer">
329
- Generated on Thu Jul 10 13:41:05 2025 by
329
+ Generated on Mon Jul 21 18:28:18 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.4).
332
332
  </div>
@@ -217,7 +217,7 @@ This will account for the current request's time zone. See <span class='object_l
217
217
 
218
218
 
219
219
  <h3 class="inherited">Methods inherited from <span class='object_link'><a href="../Component.html" title="Brut::FrontEnd::Component (class)">Brut::FrontEnd::Component</a></span></h3>
220
- <p class="inherited"><span class='object_link'><a href="../Component.html#component_name-class_method" title="Brut::FrontEnd::Component.component_name (method)">component_name</a></span>, <span class='object_link'><a href="../Component.html#component_name-instance_method" title="Brut::FrontEnd::Component#component_name (method)">#component_name</a></span></p>
220
+ <p class="inherited"><span class='object_link'><a href="../Component.html#around_template-instance_method" title="Brut::FrontEnd::Component#around_template (method)">#around_template</a></span>, <span class='object_link'><a href="../Component.html#component_name-class_method" title="Brut::FrontEnd::Component.component_name (method)">component_name</a></span>, <span class='object_link'><a href="../Component.html#component_name-instance_method" title="Brut::FrontEnd::Component#component_name (method)">#component_name</a></span></p>
221
221
 
222
222
 
223
223
 
@@ -228,7 +228,7 @@ This will account for the current request's time zone. See <span class='object_l
228
228
 
229
229
 
230
230
  <h3 class="inherited">Methods included from <span class='object_link'><a href="../Component/Helpers.html" title="Brut::FrontEnd::Component::Helpers (module)">Brut::FrontEnd::Component::Helpers</a></span></h3>
231
- <p class="inherited"><span class='object_link'><a href="../Component/Helpers.html#global_component-instance_method" title="Brut::FrontEnd::Component::Helpers#global_component (method)">#global_component</a></span>, <span class='object_link'><a href="../Component/Helpers.html#inline_svg-instance_method" title="Brut::FrontEnd::Component::Helpers#inline_svg (method)">#inline_svg</a></span></p>
231
+ <p class="inherited"><span class='object_link'><a href="../Component/Helpers.html#entity-instance_method" title="Brut::FrontEnd::Component::Helpers#entity (method)">#entity</a></span>, <span class='object_link'><a href="../Component/Helpers.html#global_component-instance_method" title="Brut::FrontEnd::Component::Helpers#global_component (method)">#global_component</a></span>, <span class='object_link'><a href="../Component/Helpers.html#inline_svg-instance_method" title="Brut::FrontEnd::Component::Helpers#inline_svg (method)">#inline_svg</a></span></p>
232
232
 
233
233
 
234
234
 
@@ -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 Thu Jul 10 13:41:04 2025 by
648
+ Generated on Mon Jul 21 18:28:18 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.4).
651
651
  </div>
@@ -189,7 +189,7 @@
189
189
 
190
190
 
191
191
  <h3 class="inherited">Methods inherited from <span class='object_link'><a href="../Component.html" title="Brut::FrontEnd::Component (class)">Brut::FrontEnd::Component</a></span></h3>
192
- <p class="inherited"><span class='object_link'><a href="../Component.html#component_name-class_method" title="Brut::FrontEnd::Component.component_name (method)">component_name</a></span>, <span class='object_link'><a href="../Component.html#component_name-instance_method" title="Brut::FrontEnd::Component#component_name (method)">#component_name</a></span></p>
192
+ <p class="inherited"><span class='object_link'><a href="../Component.html#around_template-instance_method" title="Brut::FrontEnd::Component#around_template (method)">#around_template</a></span>, <span class='object_link'><a href="../Component.html#component_name-class_method" title="Brut::FrontEnd::Component.component_name (method)">component_name</a></span>, <span class='object_link'><a href="../Component.html#component_name-instance_method" title="Brut::FrontEnd::Component#component_name (method)">#component_name</a></span></p>
193
193
 
194
194
 
195
195
 
@@ -200,7 +200,7 @@
200
200
 
201
201
 
202
202
  <h3 class="inherited">Methods included from <span class='object_link'><a href="../Component/Helpers.html" title="Brut::FrontEnd::Component::Helpers (module)">Brut::FrontEnd::Component::Helpers</a></span></h3>
203
- <p class="inherited"><span class='object_link'><a href="../Component/Helpers.html#global_component-instance_method" title="Brut::FrontEnd::Component::Helpers#global_component (method)">#global_component</a></span>, <span class='object_link'><a href="../Component/Helpers.html#inline_svg-instance_method" title="Brut::FrontEnd::Component::Helpers#inline_svg (method)">#inline_svg</a></span></p>
203
+ <p class="inherited"><span class='object_link'><a href="../Component/Helpers.html#entity-instance_method" title="Brut::FrontEnd::Component::Helpers#entity (method)">#entity</a></span>, <span class='object_link'><a href="../Component/Helpers.html#global_component-instance_method" title="Brut::FrontEnd::Component::Helpers#global_component (method)">#global_component</a></span>, <span class='object_link'><a href="../Component/Helpers.html#inline_svg-instance_method" title="Brut::FrontEnd::Component::Helpers#inline_svg (method)">#inline_svg</a></span></p>
204
204
 
205
205
 
206
206
 
@@ -342,7 +342,7 @@
342
342
  </div>
343
343
 
344
344
  <div id="footer">
345
- Generated on Thu Jul 10 13:41:05 2025 by
345
+ Generated on Mon Jul 21 18:28:18 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.4).
348
348
  </div>
@@ -146,7 +146,7 @@ end</code></pre>
146
146
  </div>
147
147
 
148
148
  <div id="footer">
149
- Generated on Thu Jul 10 13:41:03 2025 by
149
+ Generated on Mon Jul 21 18:28:17 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.4).
152
152
  </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 Thu Jul 10 13:41:04 2025 by
460
+ Generated on Mon Jul 21 18:28:18 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.4).
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 Thu Jul 10 13:41:04 2025 by
1143
+ Generated on Mon Jul 21 18:28:17 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.4).
1146
1146
  </div>
@@ -341,6 +341,29 @@ for processing them or for testing.</p>
341
341
  <span class="summary_desc"><div class='inline'><p>Return this form as a hash, which is a map of its parameters' current values.</p>
342
342
  </div></span>
343
343
 
344
+ </li>
345
+
346
+
347
+ <li class="public ">
348
+ <span class="summary_signature">
349
+
350
+ <a href="#valid%3F-instance_method" title="#valid? (instance method)">#<strong>valid?</strong> &#x21d2; Boolean </a>
351
+
352
+
353
+
354
+ </span>
355
+
356
+
357
+
358
+
359
+
360
+
361
+
362
+
363
+
364
+ <span class="summary_desc"><div class='inline'><p>Returns true if this form has no constraint violations.</p>
365
+ </div></span>
366
+
344
367
  </li>
345
368
 
346
369
 
@@ -591,9 +614,6 @@ name.</p>
591
614
  <pre class="lines">
592
615
 
593
616
 
594
- 148
595
- 149
596
- 150
597
617
  151
598
618
  152
599
619
  153
@@ -613,10 +633,13 @@ name.</p>
613
633
  167
614
634
  168
615
635
  169
616
- 170</pre>
636
+ 170
637
+ 171
638
+ 172
639
+ 173</pre>
617
640
  </td>
618
641
  <td>
619
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 148</span>
642
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 151</span>
620
643
 
621
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>
622
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>
@@ -689,7 +712,7 @@ name.</p>
689
712
  <td>
690
713
  <pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 117</span>
691
714
 
692
- <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='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>
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>
693
716
  </td>
694
717
  </tr>
695
718
  </table>
@@ -969,10 +992,10 @@ values provided by the user. This can allow a form with values in it to be cons
969
992
  <pre class="lines">
970
993
 
971
994
 
972
- 176</pre>
995
+ 179</pre>
973
996
  </td>
974
997
  <td>
975
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 176</span>
998
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 179</span>
976
999
 
977
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>
978
1001
  </td>
@@ -1027,7 +1050,7 @@ values provided by the user. This can allow a form with values in it to be cons
1027
1050
 
1028
1051
 
1029
1052
  &mdash;
1030
- <div class='inline'><p>the i18n key fragment representing the constraint. Assume this will be appended to <code>cv.be.</code> in order</p>
1053
+ <div class='inline'><p>the i18n key fragment representing the constraint. Assume this will be appended to <code>cv.ss.</code> in order</p>
1031
1054
  </div>
1032
1055
 
1033
1056
  </li>
@@ -1058,13 +1081,13 @@ values provided by the user. This can allow a form with values in it to be cons
1058
1081
  <pre class="lines">
1059
1082
 
1060
1083
 
1061
- 125
1062
- 126
1063
- 127
1064
- 128</pre>
1084
+ 128
1085
+ 129
1086
+ 130
1087
+ 131</pre>
1065
1088
  </td>
1066
1089
  <td>
1067
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 125</span>
1090
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 128</span>
1068
1091
 
1069
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>
1070
1093
  <span class='id identifier rubyid_index'>index</span> <span class='op'>||=</span> <span class='int'>0</span>
@@ -1121,14 +1144,14 @@ will be represented as a key in the resulting hash—only those keys that were p
1121
1144
  <pre class="lines">
1122
1145
 
1123
1146
 
1124
- 184
1125
- 185
1126
- 186
1127
1147
  187
1128
- 188</pre>
1148
+ 188
1149
+ 189
1150
+ 190
1151
+ 191</pre>
1129
1152
  </td>
1130
1153
  <td>
1131
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 184</span>
1154
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 187</span>
1132
1155
 
1133
1156
  <span class='kw'>def</span> <span class='id identifier rubyid_to_h'>to_h</span>
1134
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>
@@ -1138,6 +1161,55 @@ will be represented as a key in the resulting hash—only those keys that were p
1138
1161
  </td>
1139
1162
  </tr>
1140
1163
  </table>
1164
+ </div>
1165
+
1166
+ <div class="method_details ">
1167
+ <h3 class="signature " id="valid?-instance_method">
1168
+
1169
+ #<strong>valid?</strong> &#x21d2; <tt>Boolean</tt>
1170
+
1171
+
1172
+
1173
+
1174
+
1175
+ </h3><div class="docstring">
1176
+ <div class="discussion">
1177
+ <p>Returns true if this form has no constraint violations.</p>
1178
+
1179
+
1180
+ </div>
1181
+ </div>
1182
+ <div class="tags">
1183
+
1184
+ <p class="tag_title">Returns:</p>
1185
+ <ul class="return">
1186
+
1187
+ <li>
1188
+
1189
+
1190
+ <span class='type'>(<tt>Boolean</tt>)</span>
1191
+
1192
+
1193
+
1194
+ </li>
1195
+
1196
+ </ul>
1197
+
1198
+ </div><table class="source_code">
1199
+ <tr>
1200
+ <td>
1201
+ <pre class="lines">
1202
+
1203
+
1204
+ 120</pre>
1205
+ </td>
1206
+ <td>
1207
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/form.rb', line 120</span>
1208
+
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
+ </td>
1211
+ </tr>
1212
+ </table>
1141
1213
  </div>
1142
1214
 
1143
1215
  </div>
@@ -1145,7 +1217,7 @@ will be represented as a key in the resulting hash—only those keys that were p
1145
1217
  </div>
1146
1218
 
1147
1219
  <div id="footer">
1148
- Generated on Thu Jul 10 13:41:04 2025 by
1220
+ Generated on Mon Jul 21 18:28:17 2025 by
1149
1221
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1150
1222
  0.9.37 (ruby-3.4.4).
1151
1223
  </div>
@@ -580,7 +580,7 @@ form-related classes.</p>
580
580
  </div>
581
581
 
582
582
  <div id="footer">
583
- Generated on Thu Jul 10 13:41:05 2025 by
583
+ Generated on Mon Jul 21 18:28:18 2025 by
584
584
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
585
585
  0.9.37 (ruby-3.4.4).
586
586
  </div>
@@ -191,7 +191,7 @@
191
191
  </div>
192
192
 
193
193
  <div id="footer">
194
- Generated on Thu Jul 10 13:41:04 2025 by
194
+ Generated on Mon Jul 21 18:28:18 2025 by
195
195
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
196
196
  0.9.37 (ruby-3.4.4).
197
197
  </div>
@@ -525,7 +525,7 @@
525
525
  </div>
526
526
 
527
527
  <div id="footer">
528
- Generated on Thu Jul 10 13:41:04 2025 by
528
+ Generated on Mon Jul 21 18:28:18 2025 by
529
529
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
530
530
  0.9.37 (ruby-3.4.4).
531
531
  </div>
@@ -1553,7 +1553,7 @@ initializer</p>
1553
1553
  </div>
1554
1554
 
1555
1555
  <div id="footer">
1556
- Generated on Thu Jul 10 13:41:04 2025 by
1556
+ Generated on Mon Jul 21 18:28:18 2025 by
1557
1557
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1558
1558
  0.9.37 (ruby-3.4.4).
1559
1559
  </div>
@@ -537,7 +537,7 @@ Components::Inputs::Select</p>
537
537
  </div>
538
538
 
539
539
  <div id="footer">
540
- Generated on Thu Jul 10 13:41:03 2025 by
540
+ Generated on Mon Jul 21 18:28:17 2025 by
541
541
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
542
542
  0.9.37 (ruby-3.4.4).
543
543
  </div>
@@ -1318,7 +1318,7 @@ inputs. <code>nil</code> is allowed only if the input definition is not for an a
1318
1318
  </div>
1319
1319
 
1320
1320
  <div id="footer">
1321
- Generated on Thu Jul 10 13:41:05 2025 by
1321
+ Generated on Mon Jul 21 18:28:18 2025 by
1322
1322
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1323
1323
  0.9.37 (ruby-3.4.4).
1324
1324
  </div>
@@ -720,7 +720,7 @@ that <code>key</code> should not be a key used for client-side validations.</p>
720
720
  </div>
721
721
 
722
722
  <div id="footer">
723
- Generated on Thu Jul 10 13:41:05 2025 by
723
+ Generated on Mon Jul 21 18:28:18 2025 by
724
724
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
725
725
  0.9.37 (ruby-3.4.4).
726
726
  </div>
@@ -577,7 +577,7 @@ supported by the browser. Also note that arrays of radio button groups are not
577
577
  </div>
578
578
 
579
579
  <div id="footer">
580
- Generated on Thu Jul 10 13:41:05 2025 by
580
+ Generated on Mon Jul 21 18:28:19 2025 by
581
581
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
582
582
  0.9.37 (ruby-3.4.4).
583
583
  </div>
@@ -724,7 +724,7 @@ that <code>key</code> should not be a key used for client-side validations.</p>
724
724
  </div>
725
725
 
726
726
  <div id="footer">
727
- Generated on Thu Jul 10 13:41:04 2025 by
727
+ Generated on Mon Jul 21 18:28:18 2025 by
728
728
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
729
729
  0.9.37 (ruby-3.4.4).
730
730
  </div>
@@ -572,7 +572,7 @@ such as implementing a <span class='object_link'><a href="../../BackEnd/Validato
572
572
  </div>
573
573
 
574
574
  <div id="footer">
575
- Generated on Thu Jul 10 13:41:05 2025 by
575
+ Generated on Mon Jul 21 18:28:18 2025 by
576
576
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
577
577
  0.9.37 (ruby-3.4.4).
578
578
  </div>
@@ -649,7 +649,7 @@ on your use-case.</p>
649
649
  </div>
650
650
 
651
651
  <div id="footer">
652
- Generated on Thu Jul 10 13:41:04 2025 by
652
+ Generated on Mon Jul 21 18:28:18 2025 by
653
653
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
654
654
  0.9.37 (ruby-3.4.4).
655
655
  </div>
@@ -117,7 +117,7 @@
117
117
  </div>
118
118
 
119
119
  <div id="footer">
120
- Generated on Thu Jul 10 13:41:03 2025 by
120
+ Generated on Mon Jul 21 18:28:17 2025 by
121
121
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
122
122
  0.9.37 (ruby-3.4.4).
123
123
  </div>
@@ -367,7 +367,7 @@ something that responds to <code>each</code>.</p>
367
367
  </div>
368
368
 
369
369
  <div id="footer">
370
- Generated on Thu Jul 10 13:41:04 2025 by
370
+ Generated on Mon Jul 21 18:28:18 2025 by
371
371
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
372
372
  0.9.37 (ruby-3.4.4).
373
373
  </div>
@@ -432,7 +432,7 @@ returns is returned here.</p>
432
432
  </div>
433
433
 
434
434
  <div id="footer">
435
- Generated on Thu Jul 10 13:41:04 2025 by
435
+ Generated on Mon Jul 21 18:28:18 2025 by
436
436
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
437
437
  0.9.37 (ruby-3.4.4).
438
438
  </div>
@@ -308,7 +308,7 @@ configured in <span class='object_link'><a href="../RouteHooks/CSPNoInlineStyles
308
308
  </div>
309
309
 
310
310
  <div id="footer">
311
- Generated on Thu Jul 10 13:41:05 2025 by
311
+ Generated on Mon Jul 21 18:28:18 2025 by
312
312
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
313
313
  0.9.37 (ruby-3.4.4).
314
314
  </div>
@@ -326,7 +326,7 @@
326
326
  </div>
327
327
 
328
328
  <div id="footer">
329
- Generated on Thu Jul 10 13:41:05 2025 by
329
+ Generated on Mon Jul 21 18:28:19 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.4).
332
332
  </div>
@@ -389,7 +389,7 @@
389
389
  </div>
390
390
 
391
391
  <div id="footer">
392
- Generated on Thu Jul 10 13:41:05 2025 by
392
+ Generated on Mon Jul 21 18:28:18 2025 by
393
393
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
394
394
  0.9.37 (ruby-3.4.4).
395
395
  </div>
@@ -344,7 +344,7 @@ the app.</p>
344
344
  </div>
345
345
 
346
346
  <div id="footer">
347
- Generated on Thu Jul 10 13:41:05 2025 by
347
+ Generated on Mon Jul 21 18:28:19 2025 by
348
348
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
349
349
  0.9.37 (ruby-3.4.4).
350
350
  </div>
@@ -118,7 +118,7 @@
118
118
  <h2>Method Summary</h2>
119
119
 
120
120
  <h3 class="inherited">Methods inherited from <span class='object_link'><a href="../../Form.html" title="Brut::FrontEnd::Form (class)">Form</a></span></h3>
121
- <p class="inherited"><span class='object_link'><a href="../../Form.html#constraint_violations-instance_method" title="Brut::FrontEnd::Form#constraint_violations (method)">#constraint_violations</a></span>, <span class='object_link'><a href="../../Form.html#constraint_violations%3F-instance_method" title="Brut::FrontEnd::Form#constraint_violations? (method)">#constraint_violations?</a></span>, <span class='object_link'><a href="../../Form.html#initialize-instance_method" title="Brut::FrontEnd::Form#initialize (method)">#initialize</a></span>, <span class='object_link'><a href="../../Form.html#input-instance_method" title="Brut::FrontEnd::Form#input (method)">#input</a></span>, <span class='object_link'><a href="../../Form.html#inputs-instance_method" title="Brut::FrontEnd::Form#inputs (method)">#inputs</a></span>, <span class='object_link'><a href="../../Form.html#new%3F-instance_method" title="Brut::FrontEnd::Form#new? (method)">#new?</a></span>, <span class='object_link'><a href="../../Form.html#params_empty%3F-instance_method" title="Brut::FrontEnd::Form#params_empty? (method)">#params_empty?</a></span>, <span class='object_link'><a href="../../Form.html#server_side_constraint_violation-instance_method" title="Brut::FrontEnd::Form#server_side_constraint_violation (method)">#server_side_constraint_violation</a></span>, <span class='object_link'><a href="../../Form.html#to_h-instance_method" title="Brut::FrontEnd::Form#to_h (method)">#to_h</a></span></p>
121
+ <p class="inherited"><span class='object_link'><a href="../../Form.html#constraint_violations-instance_method" title="Brut::FrontEnd::Form#constraint_violations (method)">#constraint_violations</a></span>, <span class='object_link'><a href="../../Form.html#constraint_violations%3F-instance_method" title="Brut::FrontEnd::Form#constraint_violations? (method)">#constraint_violations?</a></span>, <span class='object_link'><a href="../../Form.html#initialize-instance_method" title="Brut::FrontEnd::Form#initialize (method)">#initialize</a></span>, <span class='object_link'><a href="../../Form.html#input-instance_method" title="Brut::FrontEnd::Form#input (method)">#input</a></span>, <span class='object_link'><a href="../../Form.html#inputs-instance_method" title="Brut::FrontEnd::Form#inputs (method)">#inputs</a></span>, <span class='object_link'><a href="../../Form.html#new%3F-instance_method" title="Brut::FrontEnd::Form#new? (method)">#new?</a></span>, <span class='object_link'><a href="../../Form.html#params_empty%3F-instance_method" title="Brut::FrontEnd::Form#params_empty? (method)">#params_empty?</a></span>, <span class='object_link'><a href="../../Form.html#server_side_constraint_violation-instance_method" title="Brut::FrontEnd::Form#server_side_constraint_violation (method)">#server_side_constraint_violation</a></span>, <span class='object_link'><a href="../../Form.html#to_h-instance_method" title="Brut::FrontEnd::Form#to_h (method)">#to_h</a></span>, <span class='object_link'><a href="../../Form.html#valid%3F-instance_method" title="Brut::FrontEnd::Form#valid? (method)">#valid?</a></span></p>
122
122
 
123
123
 
124
124
 
@@ -141,7 +141,7 @@
141
141
  </div>
142
142
 
143
143
  <div id="footer">
144
- Generated on Thu Jul 10 13:41:05 2025 by
144
+ Generated on Mon Jul 21 18:28:18 2025 by
145
145
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
146
146
  0.9.37 (ruby-3.4.4).
147
147
  </div>
@@ -305,7 +305,7 @@
305
305
  </div>
306
306
 
307
307
  <div id="footer">
308
- Generated on Thu Jul 10 13:41:05 2025 by
308
+ Generated on Mon Jul 21 18:28:18 2025 by
309
309
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
310
310
  0.9.37 (ruby-3.4.4).
311
311
  </div>
@@ -115,7 +115,7 @@
115
115
  </div>
116
116
 
117
117
  <div id="footer">
118
- Generated on Thu Jul 10 13:41:03 2025 by
118
+ Generated on Mon Jul 21 18:28:17 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.4).
121
121
  </div>