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
@@ -119,6 +119,29 @@ from the various methods of the component.</p>
119
119
  <li class="public ">
120
120
  <span class="summary_signature">
121
121
 
122
+ <a href="#entity-instance_method" title="#entity (instance method)">#<strong>entity</strong>(value) &#x21d2; void </a>
123
+
124
+
125
+
126
+ </span>
127
+
128
+
129
+
130
+
131
+
132
+
133
+
134
+
135
+
136
+ <span class="summary_desc"><div class='inline'><p>Add an HTML entity to the Phlex output.</p>
137
+ </div></span>
138
+
139
+ </li>
140
+
141
+
142
+ <li class="public ">
143
+ <span class="summary_signature">
144
+
122
145
  <a href="#global_component-instance_method" title="#global_component (instance method)">#<strong>global_component</strong>(component_klass) &#x21d2; Object </a>
123
146
 
124
147
 
@@ -172,7 +195,68 @@ from the various methods of the component.</p>
172
195
 
173
196
 
174
197
  <div class="method_details first">
175
- <h3 class="signature first" id="global_component-instance_method">
198
+ <h3 class="signature first" id="entity-instance_method">
199
+
200
+ #<strong>entity</strong>(value) &#x21d2; <tt>void</tt>
201
+
202
+
203
+
204
+
205
+
206
+ </h3><div class="docstring">
207
+ <div class="discussion">
208
+ <p class="note returns_void">This method returns an undefined value.</p><p>Add an HTML entity to the Phlex output. This avoids having to call <code>raw(safe("%nsbp;"))</code> or
209
+ whatever.</p>
210
+
211
+
212
+ </div>
213
+ </div>
214
+ <div class="tags">
215
+ <p class="tag_title">Parameters:</p>
216
+ <ul class="param">
217
+
218
+ <li>
219
+
220
+ <span class='name'>value</span>
221
+
222
+
223
+ <span class='type'>(<tt>Number|String</tt>)</span>
224
+
225
+
226
+
227
+ &mdash;
228
+ <div class='inline'><p>the value of the entity <strong>without</strong> leading ampersand or trailing
229
+ semicolon.</p>
230
+ </div>
231
+
232
+ </li>
233
+
234
+ </ul>
235
+
236
+
237
+ </div><table class="source_code">
238
+ <tr>
239
+ <td>
240
+ <pre class="lines">
241
+
242
+
243
+ 117
244
+ 118
245
+ 119</pre>
246
+ </td>
247
+ <td>
248
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/component.rb', line 117</span>
249
+
250
+ <span class='kw'>def</span> <span class='id identifier rubyid_entity'>entity</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
251
+ <span class='id identifier rubyid_raw'>raw</span><span class='lparen'>(</span><span class='id identifier rubyid_safe'>safe</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>&amp;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_value'>value</span><span class='embexpr_end'>}</span><span class='tstring_content'>;</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='rparen'>)</span>
252
+ <span class='kw'>end</span></pre>
253
+ </td>
254
+ </tr>
255
+ </table>
256
+ </div>
257
+
258
+ <div class="method_details ">
259
+ <h3 class="signature " id="global_component-instance_method">
176
260
 
177
261
  #<strong>global_component</strong>(component_klass) &#x21d2; <tt>Object</tt>
178
262
 
@@ -326,7 +410,7 @@ looking</p>
326
410
  </div>
327
411
 
328
412
  <div id="footer">
329
- Generated on Thu Jul 10 13:41:03 2025 by
413
+ Generated on Mon Jul 21 18:28:17 2025 by
330
414
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
331
415
  0.9.37 (ruby-3.4.4).
332
416
  </div>
@@ -192,6 +192,29 @@ the markup for your component.</p>
192
192
  <li class="public ">
193
193
  <span class="summary_signature">
194
194
 
195
+ <a href="#around_template-instance_method" title="#around_template (instance method)">#<strong>around_template</strong> &#x21d2; Object </a>
196
+
197
+
198
+
199
+ </span>
200
+
201
+
202
+
203
+
204
+
205
+
206
+
207
+
208
+
209
+ <span class="summary_desc"><div class='inline'><p>Override's Phlex' callback to add instrumentation to the <code>view_template</code> method.</p>
210
+ </div></span>
211
+
212
+ </li>
213
+
214
+
215
+ <li class="public ">
216
+ <span class="summary_signature">
217
+
195
218
  <a href="#component_name-instance_method" title="#component_name (instance method)">#<strong>component_name</strong> &#x21d2; Object </a>
196
219
 
197
220
 
@@ -225,7 +248,7 @@ the markup for your component.</p>
225
248
 
226
249
 
227
250
  <h3 class="inherited">Methods included from <span class='object_link'><a href="Component/Helpers.html" title="Brut::FrontEnd::Component::Helpers (module)">Helpers</a></span></h3>
228
- <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>
251
+ <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>
229
252
 
230
253
 
231
254
 
@@ -292,12 +315,12 @@ override this.</p>
292
315
  <pre class="lines">
293
316
 
294
317
 
295
- 115
296
- 116
297
- 117</pre>
318
+ 126
319
+ 127
320
+ 128</pre>
298
321
  </td>
299
322
  <td>
300
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/component.rb', line 115</span>
323
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/component.rb', line 126</span>
301
324
 
302
325
  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_component_name'>component_name</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span>
303
326
  <span class='comment'># Convenience method to get the component name. This just calls the class
@@ -314,7 +337,53 @@ override this.</p>
314
337
 
315
338
 
316
339
  <div class="method_details first">
317
- <h3 class="signature first" id="component_name-instance_method">
340
+ <h3 class="signature first" id="around_template-instance_method">
341
+
342
+ #<strong>around_template</strong> &#x21d2; <tt>Object</tt>
343
+
344
+
345
+
346
+
347
+
348
+ </h3><div class="docstring">
349
+ <div class="discussion">
350
+ <p>Override's Phlex' callback to add instrumentation to the <code>view_template</code> method.</p>
351
+
352
+
353
+ </div>
354
+ </div>
355
+ <div class="tags">
356
+
357
+
358
+ </div><table class="source_code">
359
+ <tr>
360
+ <td>
361
+ <pre class="lines">
362
+
363
+
364
+ 141
365
+ 142
366
+ 143
367
+ 144
368
+ 145
369
+ 146</pre>
370
+ </td>
371
+ <td>
372
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/component.rb', line 141</span>
373
+
374
+ <span class='kw'>def</span> <span class='id identifier rubyid_around_template'>around_template</span>
375
+ <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_span'>span</span><span class='lparen'>(</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_name'>name</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>#view_template</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_span'>span</span><span class='op'>|</span>
376
+ <span class='id identifier rubyid_span'>span</span><span class='period'>.</span><span class='id identifier rubyid_add_prefixed_attributes'>add_prefixed_attributes</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>brut</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='label'>type:</span> <span class='symbol'>:component</span><span class='comma'>,</span> <span class='label'>class:</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='rparen'>)</span>
377
+ <span class='kw'>super</span>
378
+ <span class='kw'>end</span>
379
+ <span class='kw'>end</span></pre>
380
+ </td>
381
+ </tr>
382
+ </table>
383
+ </div>
384
+
385
+ <div class="method_details ">
386
+ <h3 class="signature " id="component_name-instance_method">
318
387
 
319
388
  #<strong>component_name</strong> &#x21d2; <tt>Object</tt>
320
389
 
@@ -339,10 +408,10 @@ method <span class='object_link'><a href="#component_name-class_method" title="B
339
408
  <pre class="lines">
340
409
 
341
410
 
342
- 118</pre>
411
+ 129</pre>
343
412
  </td>
344
413
  <td>
345
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/component.rb', line 118</span>
414
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/component.rb', line 129</span>
346
415
 
347
416
  <span class='kw'>def</span> <span class='id identifier rubyid_component_name'>component_name</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_component_name'>component_name</span></pre>
348
417
  </td>
@@ -355,7 +424,7 @@ method <span class='object_link'><a href="#component_name-class_method" title="B
355
424
  </div>
356
425
 
357
426
  <div id="footer">
358
- Generated on Thu Jul 10 13:41:04 2025 by
427
+ Generated on Mon Jul 21 18:28:18 2025 by
359
428
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
360
429
  0.9.37 (ruby-3.4.4).
361
430
  </div>
@@ -105,7 +105,7 @@
105
105
 
106
106
  <h2>Overview</h2><div class="docstring">
107
107
  <div class="discussion">
108
- <p>Renders the custom elements used to manage both client- and server-side constraint violations via the <code>&lt;brut-cv-messages&gt;</code> and <code>&lt;brut-cv&gt;</code> tags. Each constraint violation on the input's <span class='object_link'><a href="../Forms/ValidityState.html" title="Brut::FrontEnd::Forms::ValidityState (class)">Forms::ValidityState</a></span> will generate a <code>&lt;brut-cv server-side&gt;</code> tag that will contain the I18n translation of the violation's <span class='object_link'><a href="../Forms/ConstraintViolation.html#key-instance_method" title="Brut::FrontEnd::Forms::ConstraintViolation#key (method)">Forms::ConstraintViolation#key</a></span> prefixed with <code>"cv.be"</code>.</p>
108
+ <p>Renders the custom elements used to manage both client- and server-side constraint violations via the <code>&lt;brut-cv-messages&gt;</code> and <code>&lt;brut-cv&gt;</code> tags. Each constraint violation on the input's <span class='object_link'><a href="../Forms/ValidityState.html" title="Brut::FrontEnd::Forms::ValidityState (class)">Forms::ValidityState</a></span> will generate a <code>&lt;brut-cv server-side&gt;</code> tag that will contain the I18n translation of the violation's <span class='object_link'><a href="../Forms/ConstraintViolation.html#key-instance_method" title="Brut::FrontEnd::Forms::ConstraintViolation#key (method)">Forms::ConstraintViolation#key</a></span> prefixed with <code>"cv.ss"</code>.</p>
109
109
 
110
110
  <p>The general form of this component will be:</p>
111
111
 
@@ -204,7 +204,7 @@
204
204
 
205
205
 
206
206
  <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>
207
- <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>
207
+ <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>
208
208
 
209
209
 
210
210
 
@@ -215,7 +215,7 @@
215
215
 
216
216
 
217
217
  <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>
218
- <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>
218
+ <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>
219
219
 
220
220
 
221
221
 
@@ -445,7 +445,7 @@
445
445
  <span class='op'>!</span><span class='id identifier rubyid_constraint'>constraint</span><span class='period'>.</span><span class='id identifier rubyid_client_side?'>client_side?</span>
446
446
  <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_constraint'>constraint</span><span class='op'>|</span>
447
447
  <span class='id identifier rubyid_brut_cv'>brut_cv</span><span class='lparen'>(</span><span class='op'>**</span><span class='id identifier rubyid_message_html_attributes'>message_html_attributes</span><span class='rparen'>)</span> <span class='kw'>do</span>
448
- <span class='id identifier rubyid_t'>t</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>cv.be.</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_constraint'>constraint</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_constraint'>constraint</span><span class='period'>.</span><span class='id identifier rubyid_context'>context</span><span class='rparen'>)</span>
448
+ <span class='id identifier rubyid_t'>t</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>cv.ss.</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_constraint'>constraint</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_constraint'>constraint</span><span class='period'>.</span><span class='id identifier rubyid_context'>context</span><span class='rparen'>)</span>
449
449
  <span class='kw'>end</span>
450
450
  <span class='kw'>end</span>
451
451
  <span class='kw'>end</span>
@@ -460,7 +460,7 @@
460
460
  </div>
461
461
 
462
462
  <div id="footer">
463
- Generated on Thu Jul 10 13:41:05 2025 by
463
+ Generated on Mon Jul 21 18:28:18 2025 by
464
464
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
465
465
  0.9.37 (ruby-3.4.4).
466
466
  </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
 
@@ -516,7 +516,7 @@ If the form's action is GET, it will not.</p>
516
516
  </div>
517
517
 
518
518
  <div id="footer">
519
- Generated on Thu Jul 10 13:41:04 2025 by
519
+ Generated on Mon Jul 21 18:28:18 2025 by
520
520
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
521
521
  0.9.37 (ruby-3.4.4).
522
522
  </div>
@@ -110,21 +110,17 @@ JavaScript. The <code>&lt;brut-constraint-violation-message&gt;</code> tag uses
110
110
 
111
111
  <p>The default layout included in new Brut apps includes this:</p>
112
112
 
113
- <pre class="code html"><code class="html">&lt;%= component(
114
- Brut::FrontEnd::Components::I18nTranslations.new(
115
- &quot;general.cv.fe&quot;
116
- )
117
- ) %&gt;
113
+ <pre class="code ruby"><code class="ruby"><span class='const'>I18nTranslations</span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="#initialize-instance_method" title="Brut::FrontEnd::Components::I18nTranslations#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>cv.cs</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
118
114
  </code></pre>
119
115
 
120
116
  <p>At runtime, this will produce this:</p>
121
117
 
122
118
  <pre class="code html"><code class="html">&lt;brut-i18n-translation
123
- key=&quot;general.cv.fe.badInput&quot;
119
+ key=&quot;cv.cs.badInput&quot;
124
120
  value=&quot;%{field} is the wrong type of data&quot;&gt;
125
121
  &lt;/brut-i18n-translation&gt;
126
122
  &lt;brut-i18n-translation
127
- key=&quot;general.cv.fe.patternMismatch&quot;
123
+ key=&quot;cv.cs.patternMismatch&quot;
128
124
  value=&quot;%{field} isn&#39;t in the right format&quot;&gt;
129
125
  &lt;/brut-i18n-translation&gt;
130
126
  &lt;!-- etc --&gt;
@@ -132,7 +128,7 @@ JavaScript. The <code>&lt;brut-constraint-violation-message&gt;</code> tag uses
132
128
 
133
129
  <p>Thus, it will render the translations for all client side errors supported by the browser. This means that if a
134
130
  client side <code>ValidityState</code> returns true for, say, <code>badInput</code>, JavaScript can look up by the <code>key</code>
135
- <code>general.cv.fe.badInput</code> and find the <code>value</code> to produce the string "This field is the wrong type of data".</p>
131
+ <code>cv.cs.badInput</code> and find the <code>value</code> to produce the string "This field is the wrong type of data".</p>
136
132
 
137
133
 
138
134
  </div>
@@ -193,7 +189,7 @@ client side <code>ValidityState</code> returns true for, say, <code>badInput</co
193
189
 
194
190
 
195
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>
196
- <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>
197
193
 
198
194
 
199
195
 
@@ -204,7 +200,7 @@ client side <code>ValidityState</code> returns true for, say, <code>badInput</co
204
200
 
205
201
 
206
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>
207
- <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>
208
204
 
209
205
 
210
206
 
@@ -272,7 +268,7 @@ client side <code>ValidityState</code> returns true for, say, <code>badInput</co
272
268
 
273
269
 
274
270
  &mdash;
275
- <div class='inline'><p>A prefix or full key for the i18n messages to render. For example, if you have <code>en.cv.fe.valueMissing</code> and <code>en.cv.fe.badInput</code>, an <code>i18n_key_root</code> value of <code>"en.cv.fe"</code> will result in both of those keys being rendered.</p>
271
+ <div class='inline'><p>A prefix or full key for the i18n messages to render. For example, if you have <code>cv.cs.valueMissing</code> and <code>cv.cs.badInput</code>, an <code>i18n_key_root</code> value of <code>"cv.cs"</code> will result in both of those keys being rendered.</p>
276
272
  </div>
277
273
 
278
274
  </li>
@@ -286,12 +282,12 @@ client side <code>ValidityState</code> returns true for, say, <code>badInput</co
286
282
  <pre class="lines">
287
283
 
288
284
 
289
- 35
290
- 36
291
- 37</pre>
285
+ 31
286
+ 32
287
+ 33</pre>
292
288
  </td>
293
289
  <td>
294
- <pre class="code"><span class="info file"># File 'lib/brut/front_end/components/i18n_translations.rb', line 35</span>
290
+ <pre class="code"><span class="info file"># File 'lib/brut/front_end/components/i18n_translations.rb', line 31</span>
295
291
 
296
292
  <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_i18n_key_root'>i18n_key_root</span><span class='rparen'>)</span>
297
293
  <span class='ivar'>@i18n_key_root</span> <span class='op'>=</span> <span class='id identifier rubyid_i18n_key_root'>i18n_key_root</span>
@@ -307,7 +303,7 @@ client side <code>ValidityState</code> returns true for, say, <code>badInput</co
307
303
  </div>
308
304
 
309
305
  <div id="footer">
310
- Generated on Thu Jul 10 13:41:05 2025 by
306
+ Generated on Mon Jul 21 18:28:18 2025 by
311
307
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
312
308
  0.9.37 (ruby-3.4.4).
313
309
  </div>
@@ -134,7 +134,7 @@
134
134
  <h2>Method Summary</h2>
135
135
 
136
136
  <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>
137
- <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>
137
+ <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>
138
138
 
139
139
 
140
140
 
@@ -145,7 +145,7 @@
145
145
 
146
146
 
147
147
  <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>
148
- <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>
148
+ <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>
149
149
 
150
150
 
151
151
 
@@ -185,7 +185,7 @@
185
185
  </div>
186
186
 
187
187
  <div id="footer">
188
- Generated on Thu Jul 10 13:41:04 2025 by
188
+ Generated on Mon Jul 21 18:28:18 2025 by
189
189
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
190
190
  0.9.37 (ruby-3.4.4).
191
191
  </div>
@@ -198,7 +198,7 @@ to use this directly if you are building a form without <span class='object_link
198
198
 
199
199
 
200
200
  <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>
201
- <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>
201
+ <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>
202
202
 
203
203
 
204
204
 
@@ -209,7 +209,7 @@ to use this directly if you are building a form without <span class='object_link
209
209
 
210
210
 
211
211
  <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>
212
- <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>
212
+ <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>
213
213
 
214
214
 
215
215
 
@@ -329,7 +329,7 @@ to use this directly if you are building a form without <span class='object_link
329
329
  </div>
330
330
 
331
331
  <div id="footer">
332
- Generated on Thu Jul 10 13:41:05 2025 by
332
+ Generated on Mon Jul 21 18:28:18 2025 by
333
333
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
334
334
  0.9.37 (ruby-3.4.4).
335
335
  </div>
@@ -224,7 +224,7 @@
224
224
 
225
225
 
226
226
  <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>
227
- <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>
227
+ <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>
228
228
 
229
229
 
230
230
 
@@ -235,7 +235,7 @@
235
235
 
236
236
 
237
237
  <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>
238
- <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>
238
+ <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>
239
239
 
240
240
 
241
241
 
@@ -553,7 +553,7 @@ Generally, you want to use this method over the initializer.</p>
553
553
  </div>
554
554
 
555
555
  <div id="footer">
556
- Generated on Thu Jul 10 13:41:05 2025 by
556
+ Generated on Mon Jul 21 18:28:18 2025 by
557
557
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
558
558
  0.9.37 (ruby-3.4.4).
559
559
  </div>
@@ -191,7 +191,7 @@ to generate a single radio button from a group.</p>
191
191
 
192
192
 
193
193
  <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>
194
- <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>
194
+ <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>
195
195
 
196
196
 
197
197
 
@@ -202,7 +202,7 @@ to generate a single radio button from a group.</p>
202
202
 
203
203
 
204
204
  <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>
205
- <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>
205
+ <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>
206
206
 
207
207
 
208
208
 
@@ -409,7 +409,7 @@ method once for each radio button in the group.</p>
409
409
  </div>
410
410
 
411
411
  <div id="footer">
412
- Generated on Thu Jul 10 13:41:05 2025 by
412
+ Generated on Mon Jul 21 18:28:18 2025 by
413
413
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
414
414
  0.9.37 (ruby-3.4.4).
415
415
  </div>
@@ -197,7 +197,7 @@
197
197
 
198
198
 
199
199
  <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>
200
- <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>
200
+ <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>
201
201
 
202
202
 
203
203
 
@@ -208,7 +208,7 @@
208
208
 
209
209
 
210
210
  <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>
211
- <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>
211
+ <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>
212
212
 
213
213
 
214
214
 
@@ -507,7 +507,7 @@ to be used as the <code>value</code> attribute and option text content, respecti
507
507
  <span class='ivar'>@html_attributes</span> <span class='op'>=</span> <span class='id identifier rubyid_default_html_attributes'>default_html_attributes</span><span class='period'>.</span><span class='id identifier rubyid_merge'>merge</span><span class='lparen'>(</span><span class='id identifier rubyid_html_attributes'>html_attributes</span><span class='rparen'>)</span>
508
508
  <span class='ivar'>@html_attributes</span><span class='lbracket'>[</span><span class='symbol'>:name</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_name'>name</span>
509
509
 
510
- <span class='kw'>if</span> <span class='id identifier rubyid_input_value'>input_value</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
510
+ <span class='kw'>if</span> <span class='id identifier rubyid_input_value'>input_value</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>||</span> <span class='id identifier rubyid_input_value'>input_value</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_strip'>strip</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_end'>&quot;</span></span>
511
511
  <span class='ivar'>@selected_value</span> <span class='op'>=</span> <span class='kw'>nil</span> <span class='comment'># explicitly nothing is selected
512
512
  </span> <span class='kw'>else</span>
513
513
  <span class='kw'>if</span> <span class='id identifier rubyid_input_value'>input_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>
@@ -516,7 +516,7 @@ to be used as the <code>value</code> attribute and option text content, respecti
516
516
  <span class='id identifier rubyid_option'>option</span> <span class='op'>=</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_detect'>detect</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_option'>option</span><span class='op'>|</span>
517
517
  <span class='id identifier rubyid_input_value'>input_value</span> <span class='op'>==</span> <span class='id identifier rubyid_option'>option</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='ivar'>@value_attribute</span><span class='rparen'>)</span>
518
518
  <span class='rbrace'>}</span>
519
- <span class='kw'>if</span> <span class='id identifier rubyid_option'>option</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_option'>option</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='period'>.</span><span class='id identifier rubyid_strip'>strip</span> <span class='op'>!=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_end'>&quot;</span></span>
519
+ <span class='kw'>if</span> <span class='id identifier rubyid_option'>option</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
520
520
  <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>selected_value </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_input_value'>input_value</span><span class='embexpr_end'>}</span><span class='tstring_content'>/</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_input_value'>input_value</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='embexpr_end'>}</span><span class='tstring_content'> was not the value for </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_value_attribute'>value_attribute</span><span class='embexpr_end'>}</span><span class='tstring_content'> on any of the options: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_options'>options</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_option'>option</span><span class='op'>|</span> <span class='id identifier rubyid_option'>option</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_value_attribute'>value_attribute</span><span class='rparen'>)</span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>, </span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
521
521
  <span class='kw'>end</span>
522
522
  <span class='ivar'>@selected_value</span> <span class='op'>=</span> <span class='id identifier rubyid_option'>option</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='ivar'>@value_attribute</span><span class='rparen'>)</span>
@@ -601,7 +601,7 @@ to be used as the <code>value</code> attribute and option text content, respecti
601
601
  </div>
602
602
 
603
603
  <div id="footer">
604
- Generated on Thu Jul 10 13:41:05 2025 by
604
+ Generated on Mon Jul 21 18:28:19 2025 by
605
605
  <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
606
606
  0.9.37 (ruby-3.4.4).
607
607
  </div>