brut 0.0.28 → 0.1.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.
- checksums.yaml +4 -4
- data/.gitignore +6 -0
- data/.projections.json +10 -0
- data/.rspec +3 -0
- data/Dockerfile.dx +32 -14
- data/Gemfile.lock +1 -1
- data/README.md +23 -2
- data/assets/Logo-Square.pxd +0 -0
- data/assets/LogoPylon.pxd +0 -0
- data/assets/LogoStop.pxd +0 -0
- data/assets/LogoTall.pxd +0 -0
- data/assets/MetroLogo.graffle +0 -0
- data/assets/SocialImage.png +0 -0
- data/assets/SocialImage.pxd +0 -0
- data/bin/docs +24 -2
- data/bin/rspec +27 -0
- data/bin/setup +3 -3
- data/brutrb.com/.vitepress/config.mjs +45 -8
- data/brutrb.com/.vitepress/theme/custom.css +7 -0
- data/brutrb.com/.vitepress/theme/style.css +29 -17
- data/brutrb.com/ai.md +10 -15
- data/brutrb.com/assets.md +2 -9
- data/brutrb.com/brut-js.md +12 -2
- data/brutrb.com/cli.md +9 -13
- data/brutrb.com/components.md +118 -96
- data/brutrb.com/configuration.md +3 -4
- data/brutrb.com/css.md +2 -2
- data/brutrb.com/custom-element-tests.md +3 -4
- data/brutrb.com/database-access.md +1 -1
- data/brutrb.com/database-schema.md +29 -41
- data/brutrb.com/deployment.md +123 -45
- data/brutrb.com/dev-environment.md +7 -7
- data/brutrb.com/dir-structure.md +120 -0
- data/brutrb.com/doc-conventions.md +18 -15
- data/brutrb.com/dx +1 -0
- data/brutrb.com/end-to-end-tests.md +12 -10
- data/brutrb.com/features.md +373 -0
- data/brutrb.com/flash-and-session.md +115 -131
- data/brutrb.com/form-constraints.md +266 -0
- data/brutrb.com/forms.md +140 -765
- data/brutrb.com/getting-started.md +10 -11
- data/brutrb.com/handlers.md +119 -95
- data/brutrb.com/hooks.md +18 -20
- data/brutrb.com/i18n.md +6 -4
- data/brutrb.com/images/LogoPylon.png +0 -0
- data/brutrb.com/images/LogoSquare.png +0 -0
- data/brutrb.com/images/LogoStop.png +0 -0
- data/brutrb.com/images/LogoTall.png +0 -0
- data/brutrb.com/images/OverviewMetro.graffle +0 -0
- data/brutrb.com/images/OverviewMetro.png +0 -0
- data/brutrb.com/index.md +4 -3
- data/brutrb.com/instrumentation.md +7 -10
- data/brutrb.com/javascript.md +14 -14
- data/brutrb.com/keyword-injection.md +72 -114
- data/brutrb.com/layouts.md +20 -52
- data/brutrb.com/lsp.md +1 -1
- data/brutrb.com/overview.md +35 -377
- data/brutrb.com/pages.md +119 -207
- data/brutrb.com/public/SocialImage.png +0 -0
- data/brutrb.com/public/favicon.ico +0 -0
- data/brutrb.com/recipes/alternate-layouts.md +32 -0
- data/brutrb.com/recipes/authentication.md +315 -6
- data/brutrb.com/recipes/blank-layouts.md +22 -0
- data/brutrb.com/recipes/custom-flash.md +51 -0
- data/brutrb.com/recipes/indexed-forms.md +149 -0
- data/brutrb.com/recipes/text-field-component.md +182 -0
- data/brutrb.com/routes.md +56 -82
- data/brutrb.com/security.md +0 -3
- data/brutrb.com/space-time-continuum.md +8 -12
- data/brutrb.com/tutorial.md +1 -1
- data/brutrb.com/why.md +19 -0
- data/docker-compose.dx.yml +5 -2
- data/docs/404.html +8 -3
- data/docs/SocialImage.png +0 -0
- data/docs/ai.html +11 -6
- data/docs/api/Brut/BackEnd/SeedData.html +1 -1
- data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server/FlushSpans.html +1 -1
- data/docs/api/Brut/BackEnd/Sidekiq/Middlewares/Server.html +1 -1
- data/docs/api/Brut/BackEnd/Sidekiq/Middlewares.html +1 -1
- data/docs/api/Brut/BackEnd/Sidekiq.html +1 -1
- data/docs/api/Brut/BackEnd/Validators/FormValidator.html +1 -1
- data/docs/api/Brut/BackEnd/Validators.html +1 -1
- data/docs/api/Brut/BackEnd.html +1 -1
- data/docs/api/Brut/CLI/App.html +1 -1
- data/docs/api/Brut/CLI/AppRunner.html +1 -1
- data/docs/api/Brut/CLI/Apps/BuildAssets/All.html +1 -1
- data/docs/api/Brut/CLI/Apps/BuildAssets/CSS.html +1 -1
- data/docs/api/Brut/CLI/Apps/BuildAssets/Images.html +1 -1
- data/docs/api/Brut/CLI/Apps/BuildAssets/JS.html +1 -1
- data/docs/api/Brut/CLI/Apps/BuildAssets.html +1 -1
- data/docs/api/Brut/CLI/Apps/DB/Create.html +1 -1
- data/docs/api/Brut/CLI/Apps/DB/Drop.html +1 -1
- data/docs/api/Brut/CLI/Apps/DB/Migrate.html +1 -1
- data/docs/api/Brut/CLI/Apps/DB/NewMigration.html +1 -1
- data/docs/api/Brut/CLI/Apps/DB/Rebuild.html +1 -1
- data/docs/api/Brut/CLI/Apps/DB/Seed.html +1 -1
- data/docs/api/Brut/CLI/Apps/DB/Status.html +1 -1
- data/docs/api/Brut/CLI/Apps/DB.html +1 -1
- data/docs/api/Brut/CLI/Apps/DeployBase/GitChecks.html +1 -1
- data/docs/api/Brut/CLI/Apps/DeployBase.html +1 -1
- data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy/Deploy.html +1 -1
- data/docs/api/Brut/CLI/Apps/HerokuContainerBasedDeploy.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/Action/Route.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/Action.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/Component.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/CustomElementTest.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/E2ETest.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/Form.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/Page/Route.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/Page.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/RoutesEditor.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold/Test.html +1 -1
- data/docs/api/Brut/CLI/Apps/Scaffold.html +1 -1
- data/docs/api/Brut/CLI/Apps/Test/Audit.html +1 -1
- data/docs/api/Brut/CLI/Apps/Test/E2e.html +1 -1
- data/docs/api/Brut/CLI/Apps/Test/JS.html +1 -1
- data/docs/api/Brut/CLI/Apps/Test/Run.html +1 -1
- data/docs/api/Brut/CLI/Apps/Test.html +1 -1
- data/docs/api/Brut/CLI/Apps.html +1 -1
- data/docs/api/Brut/CLI/Command.html +1 -1
- data/docs/api/Brut/CLI/Error.html +1 -1
- data/docs/api/Brut/CLI/ExecutionResults/Result.html +1 -1
- data/docs/api/Brut/CLI/ExecutionResults.html +1 -1
- data/docs/api/Brut/CLI/Executor.html +1 -1
- data/docs/api/Brut/CLI/InvalidOption.html +1 -1
- data/docs/api/Brut/CLI/Options.html +1 -1
- data/docs/api/Brut/CLI/Output.html +1 -1
- data/docs/api/Brut/CLI/SystemExecError.html +1 -1
- data/docs/api/Brut/CLI.html +1 -1
- data/docs/api/Brut/FactoryBot.html +1 -1
- data/docs/api/Brut/Framework/App.html +1 -1
- data/docs/api/Brut/Framework/Config.html +1 -1
- data/docs/api/Brut/Framework/Container.html +1 -1
- data/docs/api/Brut/Framework/Error.html +1 -1
- data/docs/api/Brut/Framework/Errors/AbstractMethod.html +1 -1
- data/docs/api/Brut/Framework/Errors/Bug.html +1 -1
- data/docs/api/Brut/Framework/Errors/MissingConfiguration.html +1 -1
- data/docs/api/Brut/Framework/Errors/MissingParameter.html +1 -1
- data/docs/api/Brut/Framework/Errors/NoClassForPath.html +1 -1
- data/docs/api/Brut/Framework/Errors/NotFound.html +1 -1
- data/docs/api/Brut/Framework/Errors/NotImplemented.html +1 -1
- data/docs/api/Brut/Framework/Errors.html +1 -1
- data/docs/api/Brut/Framework/FussyTypeEnforcement.html +1 -1
- data/docs/api/Brut/Framework/MCP.html +1 -1
- data/docs/api/Brut/Framework/ProjectEnvironment.html +1 -1
- data/docs/api/Brut/Framework.html +1 -1
- data/docs/api/Brut/FrontEnd/AssetPathResolver.html +1 -1
- data/docs/api/Brut/FrontEnd/Component/Helpers.html +1 -1
- data/docs/api/Brut/FrontEnd/Component.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/ConstraintViolations.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/FormTag.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/I18nTranslations.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/Input.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/Inputs/CsrfToken.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/Inputs/InputTag.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/Inputs/RadioButton.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/Inputs/SelectTagWithOptions.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/Inputs/TextareaTag.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/Inputs.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/LocaleDetection.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/PageIdentifier.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/TimeTag.html +1 -1
- data/docs/api/Brut/FrontEnd/Components/Traceparent.html +1 -1
- data/docs/api/Brut/FrontEnd/Components.html +1 -1
- data/docs/api/Brut/FrontEnd/Download.html +1 -1
- data/docs/api/Brut/FrontEnd/Flash.html +1 -1
- data/docs/api/Brut/FrontEnd/Form.html +9 -11
- data/docs/api/Brut/FrontEnd/Forms/ConstraintViolation.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/Input/Color.html +201 -0
- data/docs/api/Brut/FrontEnd/Forms/Input/TimeOfDay.html +535 -0
- data/docs/api/Brut/FrontEnd/Forms/Input.html +983 -35
- data/docs/api/Brut/FrontEnd/Forms/InputDeclarations.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/InputDefinition.html +29 -19
- data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInput.html +141 -20
- data/docs/api/Brut/FrontEnd/Forms/RadioButtonGroupInputDefinition.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/SelectInput.html +141 -20
- data/docs/api/Brut/FrontEnd/Forms/SelectInputDefinition.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms/ValidityState.html +1 -1
- data/docs/api/Brut/FrontEnd/Forms.html +1 -1
- data/docs/api/Brut/FrontEnd/GenericResponse.html +1 -1
- data/docs/api/Brut/FrontEnd/Handler.html +1 -1
- data/docs/api/Brut/FrontEnd/Handlers/CspReportingHandler.html +1 -1
- data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler/TraceParent.html +1 -1
- data/docs/api/Brut/FrontEnd/Handlers/InstrumentationHandler.html +1 -1
- data/docs/api/Brut/FrontEnd/Handlers/LocaleDetectionHandler.html +1 -1
- data/docs/api/Brut/FrontEnd/Handlers/MissingHandler/Form.html +1 -1
- data/docs/api/Brut/FrontEnd/Handlers/MissingHandler.html +1 -1
- data/docs/api/Brut/FrontEnd/Handlers.html +1 -1
- data/docs/api/Brut/FrontEnd/HandlingResults.html +1 -1
- data/docs/api/Brut/FrontEnd/HttpMethod.html +1 -1
- data/docs/api/Brut/FrontEnd/HttpStatus.html +1 -1
- data/docs/api/Brut/FrontEnd/InlineSvgLocator.html +1 -1
- data/docs/api/Brut/FrontEnd/Layout.html +1 -1
- data/docs/api/Brut/FrontEnd/Middleware.html +1 -1
- data/docs/api/Brut/FrontEnd/Middlewares/AnnotateBrutOwnedPaths.html +1 -1
- data/docs/api/Brut/FrontEnd/Middlewares/Favicon.html +1 -1
- data/docs/api/Brut/FrontEnd/Middlewares/OpenTelemetrySpan.html +1 -1
- data/docs/api/Brut/FrontEnd/Middlewares/ReloadApp.html +1 -1
- data/docs/api/Brut/FrontEnd/Middlewares.html +1 -1
- data/docs/api/Brut/FrontEnd/Page.html +1 -1
- data/docs/api/Brut/FrontEnd/Pages/MissingPage.html +1 -1
- data/docs/api/Brut/FrontEnd/Pages.html +1 -1
- data/docs/api/Brut/FrontEnd/RequestContext.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHook.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHooks/AgeFlash.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineScripts.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts/ReportOnly.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHooks/CSPNoInlineStylesOrScripts.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHooks/LocaleDetection.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHooks/SetupRequestContext.html +1 -1
- data/docs/api/Brut/FrontEnd/RouteHooks.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/FormHandlerRoute.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/FormRoute.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/MissingForm.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/MissingHandler.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/MissingPage.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/MissingPath.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/PageRoute.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing/Route.html +1 -1
- data/docs/api/Brut/FrontEnd/Routing.html +1 -1
- data/docs/api/Brut/FrontEnd/Session.html +1 -1
- data/docs/api/Brut/FrontEnd.html +1 -1
- data/docs/api/Brut/I18n/BaseMethods.html +1 -1
- data/docs/api/Brut/I18n/ForBackEnd.html +1 -1
- data/docs/api/Brut/I18n/ForCLI.html +1 -1
- data/docs/api/Brut/I18n/ForHTML.html +1 -1
- data/docs/api/Brut/I18n/HTTPAcceptLanguage/AlwaysEnglish.html +1 -1
- data/docs/api/Brut/I18n/HTTPAcceptLanguage.html +1 -1
- data/docs/api/Brut/I18n.html +1 -1
- data/docs/api/Brut/Instrumentation/LoggerSpanExporter.html +1 -1
- data/docs/api/Brut/Instrumentation/OpenTelemetry/NormalizedAttributes.html +1 -1
- data/docs/api/Brut/Instrumentation/OpenTelemetry/Span.html +1 -1
- data/docs/api/Brut/Instrumentation/OpenTelemetry.html +1 -1
- data/docs/api/Brut/Instrumentation.html +1 -1
- data/docs/api/Brut/SinatraHelpers/ClassMethods.html +1 -1
- data/docs/api/Brut/SinatraHelpers.html +1 -1
- data/docs/api/Brut/SpecSupport/ClockSupport.html +1 -1
- data/docs/api/Brut/SpecSupport/ComponentSupport.html +1 -1
- data/docs/api/Brut/SpecSupport/E2ETestServer.html +1 -1
- data/docs/api/Brut/SpecSupport/E2eSupport.html +1 -1
- data/docs/api/Brut/SpecSupport/EnhancedNode.html +1 -1
- data/docs/api/Brut/SpecSupport/FlashSupport.html +1 -1
- data/docs/api/Brut/SpecSupport/GeneralSupport/ClassMethods.html +1 -1
- data/docs/api/Brut/SpecSupport/GeneralSupport.html +1 -1
- data/docs/api/Brut/SpecSupport/HandlerSupport.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/BeABug.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/BePageFor.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/BeRoutingFor.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveConstraintViolation.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveGenerated.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveHTMLAttribute.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveI18nString.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveLinkTo.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveRedirectedTo.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedHttpStatus.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers/HaveReturnedRackResponse.html +1 -1
- data/docs/api/Brut/SpecSupport/Matchers.html +1 -1
- data/docs/api/Brut/SpecSupport/RSpecSetup/OptionalSidekiqSupport.html +1 -1
- data/docs/api/Brut/SpecSupport/RSpecSetup.html +1 -1
- data/docs/api/Brut/SpecSupport/SessionSupport.html +1 -1
- data/docs/api/Brut/SpecSupport.html +1 -1
- data/docs/api/Brut.html +1 -1
- data/docs/api/Clock.html +1 -1
- data/docs/api/RichString.html +1 -1
- data/docs/api/SemanticLogger/Appender/Async.html +1 -1
- data/docs/api/Sequel/Extensions/BrutInstrumentation.html +1 -1
- data/docs/api/Sequel/Extensions/BrutMigrations.html +1 -1
- data/docs/api/Sequel/Extensions.html +1 -1
- data/docs/api/Sequel/Plugins/CreatedAt/InstanceMethods.html +1 -1
- data/docs/api/Sequel/Plugins/CreatedAt.html +1 -1
- data/docs/api/Sequel/Plugins/ExternalId/ClassMethods.html +1 -1
- data/docs/api/Sequel/Plugins/ExternalId/InstanceMethods.html +1 -1
- data/docs/api/Sequel/Plugins/ExternalId.html +1 -1
- data/docs/api/Sequel/Plugins/FindBang/ClassMethods.html +1 -1
- data/docs/api/Sequel/Plugins/FindBang.html +1 -1
- data/docs/api/Sequel/Plugins.html +1 -1
- data/docs/api/Sequel.html +1 -1
- data/docs/api/_index.html +15 -1
- data/docs/api/class_list.html +1 -1
- data/docs/api/css/full_list.css +2 -1
- data/docs/api/css/style.css +14 -13
- data/docs/api/file.README.html +22 -3
- data/docs/api/index.html +22 -3
- data/docs/api/method_list.html +435 -275
- data/docs/api/top-level-namespace.html +1 -1
- data/docs/assets/LogoStop.Gb3tDhL1.png +0 -0
- data/docs/assets/OverviewMetro.DUS-5fUZ.png +0 -0
- data/docs/assets/{ai.md._6HCDL6d.js → ai.md.Cy9GWnER.js} +1 -1
- data/docs/assets/ai.md.Cy9GWnER.lean.js +1 -0
- data/docs/assets/{app.BX81XO4N.js → app.ClaS47Ru.js} +1 -1
- data/docs/assets/{assets.md.D3wunzLx.js → assets.md.7C3HWkga.js} +3 -3
- data/docs/assets/{assets.md.D3wunzLx.lean.js → assets.md.7C3HWkga.lean.js} +1 -1
- data/docs/assets/{brut-js.md.o2DAO2s2.js → brut-js.md.B4GYxQVw.js} +1 -1
- data/docs/assets/{brut-js.md.o2DAO2s2.lean.js → brut-js.md.B4GYxQVw.lean.js} +1 -1
- data/docs/assets/chunks/@localSearchIndexroot.Biqy1A4t.js +1 -0
- data/docs/assets/chunks/{VPLocalSearchBox.gABXcTWp.js → VPLocalSearchBox.DtgDfde2.js} +1 -1
- data/docs/assets/chunks/{theme.DwUXXAL3.js → theme.B45bvibT.js} +2 -2
- data/docs/assets/{cli.md.RmeA2b0i.js → cli.md.CjsktgFz.js} +15 -20
- data/docs/assets/components.md.DatoNgFo.js +96 -0
- data/docs/assets/{components.md.CRUMdRoN.lean.js → components.md.DatoNgFo.lean.js} +1 -1
- data/docs/assets/{configuration.md.BGHl8oRC.js → configuration.md.DeyhpqEx.js} +3 -3
- data/docs/assets/{css.md.DJgj2clw.js → css.md.CltvJqAa.js} +3 -3
- data/docs/assets/{custom-element-tests.md.BrYJQEl3.js → custom-element-tests.md.B_rbta32.js} +3 -3
- data/docs/assets/{database-access.md.C7l-Vuvb.js → database-access.md.gnluu54N.js} +1 -1
- data/docs/assets/{database-schema.md.BUjR0VS1.js → database-schema.md.CSYk6E6v.js} +6 -6
- data/docs/assets/{database-schema.md.BUjR0VS1.lean.js → database-schema.md.CSYk6E6v.lean.js} +1 -1
- data/docs/assets/deployment.md.BLseERGV.js +48 -0
- data/docs/assets/deployment.md.BLseERGV.lean.js +1 -0
- data/docs/assets/dev-environment.md.BroAOLhF.js +11 -0
- data/docs/assets/dir-structure.md.CWir1pic.js +46 -0
- data/docs/assets/dir-structure.md.CWir1pic.lean.js +1 -0
- data/docs/assets/doc-conventions.md.BzmSrTEW.js +1 -0
- data/docs/assets/doc-conventions.md.BzmSrTEW.lean.js +1 -0
- data/docs/assets/{end-to-end-tests.md.yfQHC0b5.js → end-to-end-tests.md.DzqRpZ43.js} +5 -3
- data/docs/assets/end-to-end-tests.md.DzqRpZ43.lean.js +1 -0
- data/docs/assets/features.md.DPFXsy0z.js +154 -0
- data/docs/assets/features.md.DPFXsy0z.lean.js +1 -0
- data/docs/assets/flash-and-session.md.nPvUpnUx.js +79 -0
- data/docs/assets/{flash-and-session.md.BXY8RvT0.lean.js → flash-and-session.md.nPvUpnUx.lean.js} +1 -1
- data/docs/assets/form-constraints.md.x5tNpTTI.js +90 -0
- data/docs/assets/form-constraints.md.x5tNpTTI.lean.js +1 -0
- data/docs/assets/forms.md.C2Dizvzq.js +64 -0
- data/docs/assets/forms.md.C2Dizvzq.lean.js +1 -0
- data/docs/assets/{getting-started.md.Ciz82L0m.js → getting-started.md.C93e0odB.js} +5 -5
- data/docs/assets/{getting-started.md.Ciz82L0m.lean.js → getting-started.md.C93e0odB.lean.js} +1 -1
- data/docs/assets/handlers.md.Chyri6KA.js +54 -0
- data/docs/assets/handlers.md.Chyri6KA.lean.js +1 -0
- data/docs/assets/{hooks.md.C4-moMny.js → hooks.md.Jmb5VOLA.js} +4 -4
- data/docs/assets/{hooks.md.C4-moMny.lean.js → hooks.md.Jmb5VOLA.lean.js} +1 -1
- data/docs/assets/{i18n.md.Do9i1qWl.js → i18n.md.xQhiGo1G.js} +2 -2
- data/docs/assets/{i18n.md.Do9i1qWl.lean.js → i18n.md.xQhiGo1G.lean.js} +1 -1
- data/docs/assets/index.md.CAMqGBJE.js +1 -0
- data/docs/assets/index.md.CAMqGBJE.lean.js +1 -0
- data/docs/assets/{instrumentation.md.a9Pjps4P.js → instrumentation.md.BgcaGVYH.js} +2 -2
- data/docs/assets/{instrumentation.md.a9Pjps4P.lean.js → instrumentation.md.BgcaGVYH.lean.js} +1 -1
- data/docs/assets/{javascript.md.GWbhRS51.js → javascript.md.DzrMxUmI.js} +7 -7
- data/docs/assets/{javascript.md.GWbhRS51.lean.js → javascript.md.DzrMxUmI.lean.js} +1 -1
- data/docs/assets/keyword-injection.md.95Zgh2eN.js +21 -0
- data/docs/assets/{keyword-injection.md.Dt2tKREs.lean.js → keyword-injection.md.95Zgh2eN.lean.js} +1 -1
- data/docs/assets/{layouts.md.cPnh3NId.js → layouts.md.CJGDFY-m.js} +2 -15
- data/docs/assets/layouts.md.CJGDFY-m.lean.js +1 -0
- data/docs/assets/{lsp.md.Bsu-f6VU.js → lsp.md.Dn1rIiW0.js} +1 -1
- data/docs/assets/{lsp.md.Bsu-f6VU.lean.js → lsp.md.Dn1rIiW0.lean.js} +1 -1
- data/docs/assets/overview.md.Bdq4qt3L.js +1 -0
- data/docs/assets/overview.md.Bdq4qt3L.lean.js +1 -0
- data/docs/assets/pages.md.B7Hc-i6H.js +45 -0
- data/docs/assets/pages.md.B7Hc-i6H.lean.js +1 -0
- data/docs/assets/recipes_alternate-layouts.md.BwEytl59.js +22 -0
- data/docs/assets/recipes_alternate-layouts.md.BwEytl59.lean.js +1 -0
- data/docs/assets/recipes_authentication.md.Dzvi_g69.js +156 -0
- data/docs/assets/recipes_authentication.md.Dzvi_g69.lean.js +1 -0
- data/docs/assets/recipes_blank-layouts.md.fyAUJyJR.js +15 -0
- data/docs/assets/recipes_blank-layouts.md.fyAUJyJR.lean.js +1 -0
- data/docs/assets/recipes_custom-flash.md.CrQbI5eH.js +26 -0
- data/docs/assets/recipes_custom-flash.md.CrQbI5eH.lean.js +1 -0
- data/docs/assets/recipes_indexed-forms.md.CstYyOSo.js +74 -0
- data/docs/assets/recipes_indexed-forms.md.CstYyOSo.lean.js +1 -0
- data/docs/assets/recipes_text-field-component.md.H4wLAK0Z.js +101 -0
- data/docs/assets/recipes_text-field-component.md.H4wLAK0Z.lean.js +1 -0
- data/docs/assets/routes.md.B8kfUPHU.js +21 -0
- data/docs/assets/{routes.md.BMM7peut.lean.js → routes.md.B8kfUPHU.lean.js} +1 -1
- data/docs/assets/{security.md.C668yXCi.js → security.md.C0G_AZR-.js} +1 -1
- data/docs/assets/{security.md.C668yXCi.lean.js → security.md.C0G_AZR-.lean.js} +1 -1
- data/docs/assets/space-time-continuum.md.xl44xDos.js +1 -0
- data/docs/assets/{space-time-continuum.md.KPUIKysQ.lean.js → space-time-continuum.md.xl44xDos.lean.js} +1 -1
- data/docs/assets/{style.D73IYGCX.css → style.prAgp4yQ.css} +1 -1
- data/docs/assets/tutorial.md.a4a0eVOy.js +1 -0
- data/docs/assets/tutorial.md.a4a0eVOy.lean.js +1 -0
- data/docs/assets/why.md.C-hk5xgJ.js +1 -0
- data/docs/assets/why.md.C-hk5xgJ.lean.js +1 -0
- data/docs/assets.html +12 -7
- data/docs/brut-js/api/AjaxSubmit.html +1 -1
- data/docs/brut-js/api/AjaxSubmit.js.html +1 -1
- data/docs/brut-js/api/Autosubmit.html +1 -1
- data/docs/brut-js/api/Autosubmit.js.html +1 -1
- data/docs/brut-js/api/BaseCustomElement.html +1 -1
- data/docs/brut-js/api/BaseCustomElement.js.html +1 -1
- data/docs/brut-js/api/BrutCustomElements.html +1 -1
- data/docs/brut-js/api/BufferedLogger.html +1 -1
- data/docs/brut-js/api/ConfirmSubmit.html +1 -1
- data/docs/brut-js/api/ConfirmSubmit.js.html +1 -1
- data/docs/brut-js/api/ConfirmationDialog.html +1 -1
- data/docs/brut-js/api/ConfirmationDialog.js.html +1 -1
- data/docs/brut-js/api/ConstraintViolationMessage.html +1 -1
- data/docs/brut-js/api/ConstraintViolationMessage.js.html +1 -1
- data/docs/brut-js/api/ConstraintViolationMessages.html +1 -1
- data/docs/brut-js/api/ConstraintViolationMessages.js.html +1 -1
- data/docs/brut-js/api/CopyToClipboard.html +1 -1
- data/docs/brut-js/api/CopyToClipboard.js.html +1 -1
- data/docs/brut-js/api/Form.html +1 -1
- data/docs/brut-js/api/Form.js.html +1 -1
- data/docs/brut-js/api/I18nTranslation.html +1 -1
- data/docs/brut-js/api/I18nTranslation.js.html +1 -1
- data/docs/brut-js/api/LocaleDetection.html +1 -1
- data/docs/brut-js/api/LocaleDetection.js.html +1 -1
- data/docs/brut-js/api/Logger.html +1 -1
- data/docs/brut-js/api/Logger.js.html +1 -1
- data/docs/brut-js/api/Message.html +1 -1
- data/docs/brut-js/api/Message.js.html +1 -1
- data/docs/brut-js/api/PrefixedLogger.html +1 -1
- data/docs/brut-js/api/RichString.html +1 -1
- data/docs/brut-js/api/RichString.js.html +1 -1
- data/docs/brut-js/api/Tabs.html +1 -1
- data/docs/brut-js/api/Tabs.js.html +1 -1
- data/docs/brut-js/api/Tracing.html +1 -1
- data/docs/brut-js/api/Tracing.js.html +1 -1
- data/docs/brut-js/api/external-CustomElementRegistry.html +1 -1
- data/docs/brut-js/api/external-Performance.html +1 -1
- data/docs/brut-js/api/external-Promise.html +1 -1
- data/docs/brut-js/api/external-ValidityState.html +1 -1
- data/docs/brut-js/api/external-Window.html +1 -1
- data/docs/brut-js/api/external-fetch.html +1 -1
- data/docs/brut-js/api/global.html +1 -1
- data/docs/brut-js/api/index.html +1 -1
- data/docs/brut-js/api/index.js.html +1 -1
- data/docs/brut-js/api/module-testing.html +1 -1
- data/docs/brut-js/api/testing.AssetMetadata.html +1 -1
- data/docs/brut-js/api/testing.AssetMetadataLoader.html +1 -1
- data/docs/brut-js/api/testing.CustomElementTest.html +1 -1
- data/docs/brut-js/api/testing.DOMCreator.html +1 -1
- data/docs/brut-js/api/testing_AssetMetadata.js.html +1 -1
- data/docs/brut-js/api/testing_AssetMetadataLoader.js.html +1 -1
- data/docs/brut-js/api/testing_CustomElementTest.js.html +1 -1
- data/docs/brut-js/api/testing_DOMCreator.js.html +1 -1
- data/docs/brut-js/api/testing_index.js.html +1 -1
- data/docs/brut-js.html +12 -7
- data/docs/business-logic.html +10 -5
- data/docs/cli.html +26 -26
- data/docs/components.html +61 -64
- data/docs/configuration.html +13 -8
- data/docs/css.html +14 -9
- data/docs/custom-element-tests.html +14 -9
- data/docs/database-access.html +12 -7
- data/docs/database-schema.html +15 -10
- data/docs/deployment.html +58 -6
- data/docs/dev-environment.html +12 -7
- data/docs/dir-structure.html +74 -0
- data/docs/doc-conventions.html +11 -6
- data/docs/end-to-end-tests.html +15 -8
- data/docs/favicon.ico +0 -0
- data/docs/features.html +182 -0
- data/docs/flash-and-session.html +73 -82
- data/docs/form-constraints.html +118 -0
- data/docs/forms.html +57 -367
- data/docs/getting-started.html +15 -10
- data/docs/handlers.html +51 -61
- data/docs/hashmap.json +1 -1
- data/docs/hooks.html +14 -9
- data/docs/i18n.html +12 -7
- data/docs/index.html +11 -6
- data/docs/instrumentation.html +12 -7
- data/docs/javascript.html +17 -12
- data/docs/jobs.html +10 -5
- data/docs/keyword-injection.html +22 -21
- data/docs/layouts.html +12 -20
- data/docs/lsp.html +11 -6
- data/docs/markdown-examples.html +10 -5
- data/docs/middleware.html +10 -5
- data/docs/not-released.html +10 -5
- data/docs/overview.html +11 -138
- data/docs/pages.html +49 -121
- data/docs/recipes/alternate-layouts.html +50 -0
- data/docs/recipes/authentication.html +166 -6
- data/docs/recipes/blank-layouts.html +43 -0
- data/docs/recipes/custom-flash.html +54 -0
- data/docs/recipes/indexed-forms.html +102 -0
- data/docs/recipes/text-field-component.html +129 -0
- data/docs/routes.html +16 -19
- data/docs/security.html +11 -6
- data/docs/seed-data.html +10 -5
- data/docs/space-time-continuum.html +11 -6
- data/docs/tutorial.html +11 -6
- data/docs/unit-tests.html +10 -5
- data/docs/why.html +29 -0
- data/dx/bash_customizations +7 -0
- data/dx/build +13 -2
- data/dx/docker-compose.env +1 -1
- data/dx/exec +25 -8
- data/lib/brut/front_end/form.rb +8 -8
- data/lib/brut/front_end/forms/input.rb +253 -20
- data/lib/brut/front_end/forms/input_definition.rb +15 -12
- data/lib/brut/front_end/forms/radio_button_group_input.rb +8 -1
- data/lib/brut/front_end/forms/select_input.rb +8 -1
- data/lib/brut/front_end.rb +1 -0
- data/lib/brut/version.rb +1 -1
- data/specs/brut/front_end/forms/input.spec.rb +978 -0
- data/specs/brut/front_end/forms/radio_button_group_input.spec.rb +54 -0
- data/specs/brut/front_end/forms/select_input.spec.rb +54 -0
- data/specs/spec_helper.rb +27 -0
- data/specs/support/matchers/have_constraint_violation.rb +23 -0
- data/specs/support/matchers.rb +5 -0
- data/specs/support.rb +3 -0
- metadata +141 -77
- data/brutrb.com/public/images/logo-300.png +0 -0
- data/brutrb.com/public/images/logo.png +0 -0
- data/docs/assets/ai.md._6HCDL6d.lean.js +0 -1
- data/docs/assets/chunks/@localSearchIndexroot.CoYzciVi.js +0 -1
- data/docs/assets/components.md.CRUMdRoN.js +0 -104
- data/docs/assets/deployment.md.Dbka4OTr.js +0 -1
- data/docs/assets/deployment.md.Dbka4OTr.lean.js +0 -1
- data/docs/assets/dev-environment.md.GZv6xvi9.js +0 -11
- data/docs/assets/doc-conventions.md.-kN3Xo5C.js +0 -1
- data/docs/assets/doc-conventions.md.-kN3Xo5C.lean.js +0 -1
- data/docs/assets/end-to-end-tests.md.yfQHC0b5.lean.js +0 -1
- data/docs/assets/flash-and-session.md.BXY8RvT0.js +0 -93
- data/docs/assets/forms.md.B-koVgyw.js +0 -379
- data/docs/assets/forms.md.B-koVgyw.lean.js +0 -1
- data/docs/assets/handlers.md.089DVD3v.js +0 -69
- data/docs/assets/handlers.md.089DVD3v.lean.js +0 -1
- data/docs/assets/index.md.B28EwVpq.js +0 -1
- data/docs/assets/index.md.B28EwVpq.lean.js +0 -1
- data/docs/assets/keyword-injection.md.Dt2tKREs.js +0 -25
- data/docs/assets/layouts.md.cPnh3NId.lean.js +0 -1
- data/docs/assets/overview.Da81cB9R.png +0 -0
- data/docs/assets/overview.md.C5wlBcR5.js +0 -133
- data/docs/assets/overview.md.C5wlBcR5.lean.js +0 -1
- data/docs/assets/pages.md.BE3kfOc5.js +0 -122
- data/docs/assets/pages.md.BE3kfOc5.lean.js +0 -1
- data/docs/assets/recipes_authentication.md.CAsXf7hk.js +0 -1
- data/docs/assets/recipes_authentication.md.CAsXf7hk.lean.js +0 -1
- data/docs/assets/routes.md.BMM7peut.js +0 -29
- data/docs/assets/space-time-continuum.md.KPUIKysQ.js +0 -1
- data/docs/assets/tutorial.md.BnoGjrdK.js +0 -1
- data/docs/assets/tutorial.md.BnoGjrdK.lean.js +0 -1
- data/docs/images/logo-300.png +0 -0
- data/docs/images/logo.png +0 -0
- /data/docs/assets/{cli.md.RmeA2b0i.lean.js → cli.md.CjsktgFz.lean.js} +0 -0
- /data/docs/assets/{configuration.md.BGHl8oRC.lean.js → configuration.md.DeyhpqEx.lean.js} +0 -0
- /data/docs/assets/{css.md.DJgj2clw.lean.js → css.md.CltvJqAa.lean.js} +0 -0
- /data/docs/assets/{custom-element-tests.md.BrYJQEl3.lean.js → custom-element-tests.md.B_rbta32.lean.js} +0 -0
- /data/docs/assets/{database-access.md.C7l-Vuvb.lean.js → database-access.md.gnluu54N.lean.js} +0 -0
- /data/docs/assets/{dev-environment.md.GZv6xvi9.lean.js → dev-environment.md.BroAOLhF.lean.js} +0 -0
@@ -537,7 +537,7 @@ Components::Inputs::Select</p>
|
|
537
537
|
</div>
|
538
538
|
|
539
539
|
<div id="footer">
|
540
|
-
Generated on
|
540
|
+
Generated on Tue Jul 8 01:36:09 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>
|
@@ -418,7 +418,7 @@ such as implementing a <span class='object_link'><a href="../../BackEnd/Validato
|
|
418
418
|
<li class="public ">
|
419
419
|
<span class="summary_signature">
|
420
420
|
|
421
|
-
<a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(max: nil, maxlength: nil, min: nil, minlength: nil, name: nil, pattern:
|
421
|
+
<a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(max: nil, maxlength: nil, min: nil, minlength: nil, name: nil, pattern: :based_on_type, required: :based_on_type, step: nil, type: nil, array: false) ⇒ InputDefinition </a>
|
422
422
|
|
423
423
|
|
424
424
|
|
@@ -483,7 +483,7 @@ such as implementing a <span class='object_link'><a href="../../BackEnd/Validato
|
|
483
483
|
<div class="method_details first">
|
484
484
|
<h3 class="signature first" id="initialize-instance_method">
|
485
485
|
|
486
|
-
#<strong>initialize</strong>(max: nil, maxlength: nil, min: nil, minlength: nil, name: nil, pattern:
|
486
|
+
#<strong>initialize</strong>(max: nil, maxlength: nil, min: nil, minlength: nil, name: nil, pattern: :based_on_type, required: :based_on_type, step: nil, type: nil, array: false) ⇒ <tt><span class='object_link'><a href="" title="Brut::FrontEnd::Forms::InputDefinition (class)">InputDefinition</a></span></tt>
|
487
487
|
|
488
488
|
|
489
489
|
|
@@ -595,7 +595,7 @@ we can in Ruby so that client side validations can be safely used for user exper
|
|
595
595
|
<span class='type'>(<tt>Regexp</tt>)</span>
|
596
596
|
|
597
597
|
|
598
|
-
<em class="default">(defaults to: <tt
|
598
|
+
<em class="default">(defaults to: <tt>:based_on_type</tt>)</em>
|
599
599
|
|
600
600
|
|
601
601
|
—
|
@@ -690,6 +690,8 @@ we can in Ruby so that client side validations can be safely used for user exper
|
|
690
690
|
<pre class="lines">
|
691
691
|
|
692
692
|
|
693
|
+
60
|
694
|
+
61
|
693
695
|
62
|
694
696
|
63
|
695
697
|
64
|
@@ -734,10 +736,13 @@ we can in Ruby so that client side validations can be safely used for user exper
|
|
734
736
|
103
|
735
737
|
104
|
736
738
|
105
|
737
|
-
106
|
739
|
+
106
|
740
|
+
107
|
741
|
+
108
|
742
|
+
109</pre>
|
738
743
|
</td>
|
739
744
|
<td>
|
740
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input_definition.rb', line
|
745
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input_definition.rb', line 60</span>
|
741
746
|
|
742
747
|
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span>
|
743
748
|
<span class='label'>max:</span> <span class='kw'>nil</span><span class='comma'>,</span>
|
@@ -745,7 +750,7 @@ we can in Ruby so that client side validations can be safely used for user exper
|
|
745
750
|
<span class='label'>min:</span> <span class='kw'>nil</span><span class='comma'>,</span>
|
746
751
|
<span class='label'>minlength:</span> <span class='kw'>nil</span><span class='comma'>,</span>
|
747
752
|
<span class='label'>name:</span> <span class='kw'>nil</span><span class='comma'>,</span>
|
748
|
-
<span class='label'>pattern:</span> <span class='
|
753
|
+
<span class='label'>pattern:</span> <span class='symbol'>:based_on_type</span><span class='comma'>,</span>
|
749
754
|
<span class='label'>required:</span> <span class='symbol'>:based_on_type</span><span class='comma'>,</span>
|
750
755
|
<span class='label'>step:</span> <span class='kw'>nil</span><span class='comma'>,</span>
|
751
756
|
<span class='label'>type:</span> <span class='kw'>nil</span><span class='comma'>,</span>
|
@@ -769,20 +774,25 @@ we can in Ruby so that client side validations can be safely used for user exper
|
|
769
774
|
<span class='id identifier rubyid_required'>required</span> <span class='op'>=</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>!=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>checkbox</span><span class='tstring_end'>"</span></span>
|
770
775
|
<span class='kw'>end</span>
|
771
776
|
|
772
|
-
<span class='ivar'>@max</span> <span class='op'>=</span> <span class='id identifier
|
777
|
+
<span class='ivar'>@max</span> <span class='op'>=</span> <span class='id identifier rubyid_max'>max</span>
|
773
778
|
<span class='ivar'>@maxlength</span> <span class='op'>=</span> <span class='id identifier rubyid_type!'>type!</span><span class='lparen'>(</span> <span class='id identifier rubyid_maxlength'>maxlength</span> <span class='comma'>,</span> <span class='const'>Numeric</span> <span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>maxlength</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
774
|
-
<span class='ivar'>@min</span> <span class='op'>=</span> <span class='id identifier
|
779
|
+
<span class='ivar'>@min</span> <span class='op'>=</span> <span class='id identifier rubyid_min'>min</span>
|
775
780
|
<span class='ivar'>@minlength</span> <span class='op'>=</span> <span class='id identifier rubyid_type!'>type!</span><span class='lparen'>(</span> <span class='id identifier rubyid_minlength'>minlength</span> <span class='comma'>,</span> <span class='const'>Numeric</span> <span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>minlength</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
776
781
|
<span class='ivar'>@name</span> <span class='op'>=</span> <span class='id identifier rubyid_type!'>type!</span><span class='lparen'>(</span> <span class='id identifier rubyid_name'>name</span> <span class='comma'>,</span> <span class='const'>String</span> <span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>name</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='label'>required:</span> <span class='kw'>true</span><span class='rparen'>)</span>
|
777
|
-
<span class='ivar'>@pattern</span> <span class='op'>=</span> <span class='id identifier rubyid_type!'>type!</span><span class='lparen'>(</span> <span class='id identifier rubyid_pattern'>pattern</span> <span class='comma'>,</span> <span class='const'>String</span> <span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>pattern</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
778
782
|
<span class='ivar'>@required</span> <span class='op'>=</span> <span class='id identifier rubyid_type!'>type!</span><span class='lparen'>(</span> <span class='id identifier rubyid_required'>required</span> <span class='comma'>,</span> <span class='lbracket'>[</span><span class='kw'>true</span><span class='comma'>,</span> <span class='kw'>false</span><span class='rbracket'>]</span> <span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>required</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='label'>required:</span> <span class='kw'>true</span><span class='rparen'>)</span>
|
779
783
|
<span class='ivar'>@step</span> <span class='op'>=</span> <span class='id identifier rubyid_type!'>type!</span><span class='lparen'>(</span> <span class='id identifier rubyid_step'>step</span> <span class='comma'>,</span> <span class='const'>Numeric</span> <span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>step</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
780
784
|
<span class='ivar'>@type</span> <span class='op'>=</span> <span class='id identifier rubyid_type!'>type!</span><span class='lparen'>(</span> <span class='id identifier rubyid_type'>type</span> <span class='comma'>,</span> <span class='const'>INPUT_TYPES_TO_CLASS</span><span class='period'>.</span><span class='id identifier rubyid_keys'>keys</span> <span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>type</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='label'>required:</span> <span class='kw'>true</span><span class='rparen'>)</span>
|
781
785
|
<span class='ivar'>@array</span> <span class='op'>=</span> <span class='id identifier rubyid_type!'>type!</span><span class='lparen'>(</span> <span class='id identifier rubyid_array'>array</span> <span class='comma'>,</span> <span class='lbracket'>[</span><span class='kw'>true</span><span class='comma'>,</span> <span class='kw'>false</span><span class='rbracket'>]</span> <span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>array</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='label'>required:</span> <span class='kw'>true</span><span class='rparen'>)</span>
|
782
786
|
|
783
|
-
<span class='
|
784
|
-
|
785
|
-
|
787
|
+
<span class='ivar'>@pattern</span> <span class='op'>=</span> <span class='kw'>if</span> <span class='id identifier rubyid_pattern'>pattern</span> <span class='op'>==</span> <span class='symbol'>:based_on_type</span>
|
788
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>email</span><span class='tstring_end'>"</span></span>
|
789
|
+
<span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^[^@]+@[^@]+\.[^@]+$</span><span class='regexp_end'>/</span></span><span class='period'>.</span><span class='id identifier rubyid_source'>source</span>
|
790
|
+
<span class='kw'>else</span>
|
791
|
+
<span class='kw'>nil</span>
|
792
|
+
<span class='kw'>end</span>
|
793
|
+
<span class='kw'>else</span>
|
794
|
+
<span class='id identifier rubyid_type!'>type!</span><span class='lparen'>(</span> <span class='id identifier rubyid_pattern'>pattern</span><span class='comma'>,</span> <span class='const'>String</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>pattern</span><span class='tstring_end'>"</span></span> <span class='rparen'>)</span>
|
795
|
+
<span class='kw'>end</span>
|
786
796
|
<span class='kw'>end</span></pre>
|
787
797
|
</td>
|
788
798
|
</tr>
|
@@ -1217,10 +1227,10 @@ we can in Ruby so that client side validations can be safely used for user exper
|
|
1217
1227
|
<pre class="lines">
|
1218
1228
|
|
1219
1229
|
|
1220
|
-
|
1230
|
+
111</pre>
|
1221
1231
|
</td>
|
1222
1232
|
<td>
|
1223
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input_definition.rb', line
|
1233
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input_definition.rb', line 111</span>
|
1224
1234
|
|
1225
1235
|
<span class='kw'>def</span> <span class='id identifier rubyid_array?'>array?</span> <span class='op'>=</span> <span class='ivar'>@array</span></pre>
|
1226
1236
|
</td>
|
@@ -1288,12 +1298,12 @@ inputs. <code>nil</code> is allowed only if the input definition is not for an a
|
|
1288
1298
|
<pre class="lines">
|
1289
1299
|
|
1290
1300
|
|
1291
|
-
|
1292
|
-
|
1293
|
-
|
1301
|
+
118
|
1302
|
+
119
|
1303
|
+
120</pre>
|
1294
1304
|
</td>
|
1295
1305
|
<td>
|
1296
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input_definition.rb', line
|
1306
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/input_definition.rb', line 118</span>
|
1297
1307
|
|
1298
1308
|
<span class='kw'>def</span> <span class='id identifier rubyid_make_input'>make_input</span><span class='lparen'>(</span><span class='label'>value:</span><span class='comma'>,</span> <span class='label'>index:</span><span class='rparen'>)</span>
|
1299
1309
|
<span class='const'><span class='object_link'><a href="../../../Brut.html" title="Brut (module)">Brut</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../../FrontEnd.html" title="Brut::FrontEnd (module)">FrontEnd</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="../Forms.html" title="Brut::FrontEnd::Forms (module)">Forms</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Input.html" title="Brut::FrontEnd::Forms::Input (class)">Input</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="Input.html#initialize-instance_method" title="Brut::FrontEnd::Forms::Input#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='label'>input_definition:</span> <span class='kw'>self</span><span class='comma'>,</span> <span class='label'>value:</span><span class='comma'>,</span> <span class='label'>index:</span><span class='rparen'>)</span>
|
@@ -1308,7 +1318,7 @@ inputs. <code>nil</code> is allowed only if the input definition is not for an a
|
|
1308
1318
|
</div>
|
1309
1319
|
|
1310
1320
|
<div id="footer">
|
1311
|
-
Generated on
|
1321
|
+
Generated on Tue Jul 8 01:36:10 2025 by
|
1312
1322
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
1313
1323
|
0.9.37 (ruby-3.4.4).
|
1314
1324
|
</div>
|
@@ -111,6 +111,34 @@
|
|
111
111
|
<h2>Instance Attribute Summary <small><a href="#" class="summary_toggle">collapse</a></small></h2>
|
112
112
|
<ul class="summary">
|
113
113
|
|
114
|
+
<li class="public ">
|
115
|
+
<span class="summary_signature">
|
116
|
+
|
117
|
+
<a href="#typed_value-instance_method" title="#typed_value (instance method)">#<strong>typed_value</strong> ⇒ Date|Time|BigDecimal|String|true|false|nil </a>
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
</span>
|
122
|
+
|
123
|
+
|
124
|
+
|
125
|
+
|
126
|
+
<span class="note title readonly">readonly</span>
|
127
|
+
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
|
134
|
+
|
135
|
+
|
136
|
+
<span class="summary_desc"><div class='inline'><p>The value of the input, as coerced to the type used to evaluate constraints.</p>
|
137
|
+
</div></span>
|
138
|
+
|
139
|
+
</li>
|
140
|
+
|
141
|
+
|
114
142
|
<li class="public ">
|
115
143
|
<span class="summary_signature">
|
116
144
|
|
@@ -307,18 +335,18 @@
|
|
307
335
|
<pre class="lines">
|
308
336
|
|
309
337
|
|
310
|
-
11
|
311
|
-
12
|
312
|
-
13
|
313
|
-
14
|
314
338
|
15
|
315
339
|
16
|
316
340
|
17
|
317
341
|
18
|
318
|
-
19
|
342
|
+
19
|
343
|
+
20
|
344
|
+
21
|
345
|
+
22
|
346
|
+
23</pre>
|
319
347
|
</td>
|
320
348
|
<td>
|
321
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/radio_button_group_input.rb', line
|
349
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/radio_button_group_input.rb', line 15</span>
|
322
350
|
|
323
351
|
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>input_definition:</span><span class='comma'>,</span> <span class='label'>value:</span><span class='comma'>,</span> <span class='label'>index:</span><span class='rparen'>)</span>
|
324
352
|
<span class='ivar'>@input_definition</span> <span class='op'>=</span> <span class='id identifier rubyid_input_definition'>input_definition</span>
|
@@ -342,7 +370,94 @@
|
|
342
370
|
|
343
371
|
<span id=""></span>
|
344
372
|
<div class="method_details first">
|
345
|
-
<h3 class="signature first" id="
|
373
|
+
<h3 class="signature first" id="typed_value-instance_method">
|
374
|
+
|
375
|
+
#<strong>typed_value</strong> ⇒ <tt>Date|Time|BigDecimal|String|true|false|nil</tt> <span class="extras">(readonly)</span>
|
376
|
+
|
377
|
+
|
378
|
+
|
379
|
+
|
380
|
+
|
381
|
+
</h3><div class="docstring">
|
382
|
+
<div class="discussion">
|
383
|
+
<p>The value of the input,
|
384
|
+
as coerced to the type used to evaluate constraints.
|
385
|
+
Returns <code>nil</code> if the value could not be coerced (which likely means
|
386
|
+
there is or will be a constraint violation), <strong>or</strong>
|
387
|
+
if it is a blank String.</p>
|
388
|
+
|
389
|
+
<p>Of note, <code>type=color</code> will return a String here, but that String
|
390
|
+
should be parseable into a hex code, i.e. #XXXXXX, where each "X"
|
391
|
+
is 0-9 or a-f. Further, <code>type=time</code> will also return a string
|
392
|
+
in the format HH:MM or HH:MM:SS, where the time is in 24 hour
|
393
|
+
time. Lastly, <code>type=datetime-local</code> will return a <code>Time</code>, even
|
394
|
+
though the control allows the visitor to choose an invalid time.
|
395
|
+
If there is no <code>valueMissing</code> constraint violation, but this
|
396
|
+
attribute returns <code>nil</code>, <span class='object_link'><a href="#value-instance_method" title="Brut::FrontEnd::Forms::RadioButtonGroupInput#value (method)">#value</a></span> <em>will</em> return the string sent by
|
397
|
+
the browser, even if it's not a real timestamp.</p>
|
398
|
+
|
399
|
+
|
400
|
+
</div>
|
401
|
+
</div>
|
402
|
+
<div class="tags">
|
403
|
+
|
404
|
+
<p class="tag_title">Returns:</p>
|
405
|
+
<ul class="return">
|
406
|
+
|
407
|
+
<li>
|
408
|
+
|
409
|
+
|
410
|
+
<span class='type'>(<tt>Date|Time|BigDecimal|String|true|false|nil</tt>)</span>
|
411
|
+
|
412
|
+
|
413
|
+
|
414
|
+
—
|
415
|
+
<div class='inline'><p>the value of the input,
|
416
|
+
as coerced to the type used to evaluate constraints.
|
417
|
+
Returns <code>nil</code> if the value could not be coerced (which likely means
|
418
|
+
there is or will be a constraint violation), <strong>or</strong>
|
419
|
+
if it is a blank String.</p>
|
420
|
+
|
421
|
+
<p>Of note, <code>type=color</code> will return a String here, but that String
|
422
|
+
should be parseable into a hex code, i.e. #XXXXXX, where each "X"
|
423
|
+
is 0-9 or a-f. Further, <code>type=time</code> will also return a string
|
424
|
+
in the format HH:MM or HH:MM:SS, where the time is in 24 hour
|
425
|
+
time. Lastly, <code>type=datetime-local</code> will return a <code>Time</code>, even
|
426
|
+
though the control allows the visitor to choose an invalid time.
|
427
|
+
If there is no <code>valueMissing</code> constraint violation, but this
|
428
|
+
attribute returns <code>nil</code>, <span class='object_link'><a href="#value-instance_method" title="Brut::FrontEnd::Forms::RadioButtonGroupInput#value (method)">#value</a></span> <em>will</em> return the string sent by
|
429
|
+
the browser, even if it's not a real timestamp.</p>
|
430
|
+
</div>
|
431
|
+
|
432
|
+
</li>
|
433
|
+
|
434
|
+
</ul>
|
435
|
+
|
436
|
+
</div><table class="source_code">
|
437
|
+
<tr>
|
438
|
+
<td>
|
439
|
+
<pre class="lines">
|
440
|
+
|
441
|
+
|
442
|
+
9
|
443
|
+
10
|
444
|
+
11</pre>
|
445
|
+
</td>
|
446
|
+
<td>
|
447
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/radio_button_group_input.rb', line 9</span>
|
448
|
+
|
449
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_typed_value'>typed_value</span>
|
450
|
+
<span class='ivar'>@typed_value</span>
|
451
|
+
<span class='kw'>end</span></pre>
|
452
|
+
</td>
|
453
|
+
</tr>
|
454
|
+
</table>
|
455
|
+
</div>
|
456
|
+
|
457
|
+
|
458
|
+
<span id=""></span>
|
459
|
+
<div class="method_details ">
|
460
|
+
<h3 class="signature " id="validity_state-instance_method">
|
346
461
|
|
347
462
|
#<strong>validity_state</strong> ⇒ <tt><span class='object_link'><a href="ValidityState.html" title="Brut::FrontEnd::Forms::ValidityState (class)">Brut::FrontEnd::Forms::ValidityState</a></span></tt> <span class="extras">(readonly)</span>
|
348
463
|
|
@@ -383,12 +498,12 @@
|
|
383
498
|
<pre class="lines">
|
384
499
|
|
385
500
|
|
386
|
-
|
387
|
-
|
388
|
-
|
501
|
+
12
|
502
|
+
13
|
503
|
+
14</pre>
|
389
504
|
</td>
|
390
505
|
<td>
|
391
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/radio_button_group_input.rb', line
|
506
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/radio_button_group_input.rb', line 12</span>
|
392
507
|
|
393
508
|
<span class='kw'>def</span> <span class='id identifier rubyid_validity_state'>validity_state</span>
|
394
509
|
<span class='ivar'>@validity_state</span>
|
@@ -411,7 +526,10 @@
|
|
411
526
|
|
412
527
|
</h3><div class="docstring">
|
413
528
|
<div class="discussion">
|
414
|
-
<p>Returns the input's value
|
529
|
+
<p>Returns the input's value. <strong>DO NOTE</strong> this returns a string. This is
|
530
|
+
because HTML stores these values as Strings. When using a checkbox, in
|
531
|
+
particular, the value will <em>not</em> be a boolean. You cannot do <code>if
|
532
|
+
input.value</code> and expect that work. See <span class='object_link'><a href="#typed_value-instance_method" title="Brut::FrontEnd::Forms::RadioButtonGroupInput#typed_value (method)">#typed_value</a></span> instead.</p>
|
415
533
|
|
416
534
|
|
417
535
|
</div>
|
@@ -429,7 +547,10 @@
|
|
429
547
|
|
430
548
|
|
431
549
|
—
|
432
|
-
<div class='inline'><p>the input's value</
|
550
|
+
<div class='inline'><p>the input's value. <strong>DO NOTE</strong> this returns a string. This is
|
551
|
+
because HTML stores these values as Strings. When using a checkbox, in
|
552
|
+
particular, the value will <em>not</em> be a boolean. You cannot do <code>if
|
553
|
+
input.value</code> and expect that work. See <span class='object_link'><a href="#typed_value-instance_method" title="Brut::FrontEnd::Forms::RadioButtonGroupInput#typed_value (method)">#typed_value</a></span> instead.</p>
|
433
554
|
</div>
|
434
555
|
|
435
556
|
</li>
|
@@ -526,12 +647,12 @@ that <code>key</code> should not be a key used for client-side validations.</p>
|
|
526
647
|
<pre class="lines">
|
527
648
|
|
528
649
|
|
529
|
-
|
530
|
-
|
531
|
-
|
650
|
+
48
|
651
|
+
49
|
652
|
+
50</pre>
|
532
653
|
</td>
|
533
654
|
<td>
|
534
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/radio_button_group_input.rb', line
|
655
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/radio_button_group_input.rb', line 48</span>
|
535
656
|
|
536
657
|
<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='id identifier rubyid_key'>key</span><span class='comma'>,</span><span class='id identifier rubyid_context'>context</span><span class='op'>=</span><span class='kw'>true</span><span class='rparen'>)</span>
|
537
658
|
<span class='ivar'>@validity_state</span><span class='period'>.</span><span class='id identifier rubyid_server_side_constraint_violation'>server_side_constraint_violation</span><span class='lparen'>(</span><span class='label'>key:</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='label'>context:</span> <span class='id identifier rubyid_context'>context</span><span class='rparen'>)</span>
|
@@ -583,10 +704,10 @@ that <code>key</code> should not be a key used for client-side validations.</p>
|
|
583
704
|
<pre class="lines">
|
584
705
|
|
585
706
|
|
586
|
-
|
707
|
+
53</pre>
|
587
708
|
</td>
|
588
709
|
<td>
|
589
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/radio_button_group_input.rb', line
|
710
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/radio_button_group_input.rb', line 53</span>
|
590
711
|
|
591
712
|
<span class='kw'>def</span> <span class='id identifier rubyid_valid?'>valid?</span> <span class='op'>=</span> <span class='ivar'>@validity_state</span><span class='period'>.</span><span class='id identifier rubyid_valid?'>valid?</span></pre>
|
592
713
|
</td>
|
@@ -599,7 +720,7 @@ that <code>key</code> should not be a key used for client-side validations.</p>
|
|
599
720
|
</div>
|
600
721
|
|
601
722
|
<div id="footer">
|
602
|
-
Generated on
|
723
|
+
Generated on Tue Jul 8 01:36:10 2025 by
|
603
724
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
604
725
|
0.9.37 (ruby-3.4.4).
|
605
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
|
580
|
+
Generated on Tue Jul 8 01:36:11 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>
|
@@ -121,6 +121,34 @@
|
|
121
121
|
<h2>Instance Attribute Summary <small><a href="#" class="summary_toggle">collapse</a></small></h2>
|
122
122
|
<ul class="summary">
|
123
123
|
|
124
|
+
<li class="public ">
|
125
|
+
<span class="summary_signature">
|
126
|
+
|
127
|
+
<a href="#typed_value-instance_method" title="#typed_value (instance method)">#<strong>typed_value</strong> ⇒ Date|Time|BigDecimal|String|true|false|nil </a>
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
</span>
|
132
|
+
|
133
|
+
|
134
|
+
|
135
|
+
|
136
|
+
<span class="note title readonly">readonly</span>
|
137
|
+
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
|
146
|
+
<span class="summary_desc"><div class='inline'><p>The value of the input, as coerced to the type used to evaluate constraints.</p>
|
147
|
+
</div></span>
|
148
|
+
|
149
|
+
</li>
|
150
|
+
|
151
|
+
|
124
152
|
<li class="public ">
|
125
153
|
<span class="summary_signature">
|
126
154
|
|
@@ -317,15 +345,15 @@
|
|
317
345
|
<pre class="lines">
|
318
346
|
|
319
347
|
|
320
|
-
12
|
321
|
-
13
|
322
|
-
14
|
323
|
-
15
|
324
348
|
16
|
325
|
-
17
|
349
|
+
17
|
350
|
+
18
|
351
|
+
19
|
352
|
+
20
|
353
|
+
21</pre>
|
326
354
|
</td>
|
327
355
|
<td>
|
328
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/select_input.rb', line
|
356
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/select_input.rb', line 16</span>
|
329
357
|
|
330
358
|
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='label'>input_definition:</span><span class='comma'>,</span> <span class='label'>value:</span><span class='comma'>,</span> <span class='label'>index:</span><span class='rparen'>)</span>
|
331
359
|
<span class='ivar'>@input_definition</span> <span class='op'>=</span> <span class='id identifier rubyid_input_definition'>input_definition</span>
|
@@ -346,7 +374,94 @@
|
|
346
374
|
|
347
375
|
<span id=""></span>
|
348
376
|
<div class="method_details first">
|
349
|
-
<h3 class="signature first" id="
|
377
|
+
<h3 class="signature first" id="typed_value-instance_method">
|
378
|
+
|
379
|
+
#<strong>typed_value</strong> ⇒ <tt>Date|Time|BigDecimal|String|true|false|nil</tt> <span class="extras">(readonly)</span>
|
380
|
+
|
381
|
+
|
382
|
+
|
383
|
+
|
384
|
+
|
385
|
+
</h3><div class="docstring">
|
386
|
+
<div class="discussion">
|
387
|
+
<p>The value of the input,
|
388
|
+
as coerced to the type used to evaluate constraints.
|
389
|
+
Returns <code>nil</code> if the value could not be coerced (which likely means
|
390
|
+
there is or will be a constraint violation), <strong>or</strong>
|
391
|
+
if it is a blank String.</p>
|
392
|
+
|
393
|
+
<p>Of note, <code>type=color</code> will return a String here, but that String
|
394
|
+
should be parseable into a hex code, i.e. #XXXXXX, where each "X"
|
395
|
+
is 0-9 or a-f. Further, <code>type=time</code> will also return a string
|
396
|
+
in the format HH:MM or HH:MM:SS, where the time is in 24 hour
|
397
|
+
time. Lastly, <code>type=datetime-local</code> will return a <code>Time</code>, even
|
398
|
+
though the control allows the visitor to choose an invalid time.
|
399
|
+
If there is no <code>valueMissing</code> constraint violation, but this
|
400
|
+
attribute returns <code>nil</code>, <span class='object_link'><a href="#value-instance_method" title="Brut::FrontEnd::Forms::SelectInput#value (method)">#value</a></span> <em>will</em> return the string sent by
|
401
|
+
the browser, even if it's not a real timestamp.</p>
|
402
|
+
|
403
|
+
|
404
|
+
</div>
|
405
|
+
</div>
|
406
|
+
<div class="tags">
|
407
|
+
|
408
|
+
<p class="tag_title">Returns:</p>
|
409
|
+
<ul class="return">
|
410
|
+
|
411
|
+
<li>
|
412
|
+
|
413
|
+
|
414
|
+
<span class='type'>(<tt>Date|Time|BigDecimal|String|true|false|nil</tt>)</span>
|
415
|
+
|
416
|
+
|
417
|
+
|
418
|
+
—
|
419
|
+
<div class='inline'><p>the value of the input,
|
420
|
+
as coerced to the type used to evaluate constraints.
|
421
|
+
Returns <code>nil</code> if the value could not be coerced (which likely means
|
422
|
+
there is or will be a constraint violation), <strong>or</strong>
|
423
|
+
if it is a blank String.</p>
|
424
|
+
|
425
|
+
<p>Of note, <code>type=color</code> will return a String here, but that String
|
426
|
+
should be parseable into a hex code, i.e. #XXXXXX, where each "X"
|
427
|
+
is 0-9 or a-f. Further, <code>type=time</code> will also return a string
|
428
|
+
in the format HH:MM or HH:MM:SS, where the time is in 24 hour
|
429
|
+
time. Lastly, <code>type=datetime-local</code> will return a <code>Time</code>, even
|
430
|
+
though the control allows the visitor to choose an invalid time.
|
431
|
+
If there is no <code>valueMissing</code> constraint violation, but this
|
432
|
+
attribute returns <code>nil</code>, <span class='object_link'><a href="#value-instance_method" title="Brut::FrontEnd::Forms::SelectInput#value (method)">#value</a></span> <em>will</em> return the string sent by
|
433
|
+
the browser, even if it's not a real timestamp.</p>
|
434
|
+
</div>
|
435
|
+
|
436
|
+
</li>
|
437
|
+
|
438
|
+
</ul>
|
439
|
+
|
440
|
+
</div><table class="source_code">
|
441
|
+
<tr>
|
442
|
+
<td>
|
443
|
+
<pre class="lines">
|
444
|
+
|
445
|
+
|
446
|
+
10
|
447
|
+
11
|
448
|
+
12</pre>
|
449
|
+
</td>
|
450
|
+
<td>
|
451
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/select_input.rb', line 10</span>
|
452
|
+
|
453
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_typed_value'>typed_value</span>
|
454
|
+
<span class='ivar'>@typed_value</span>
|
455
|
+
<span class='kw'>end</span></pre>
|
456
|
+
</td>
|
457
|
+
</tr>
|
458
|
+
</table>
|
459
|
+
</div>
|
460
|
+
|
461
|
+
|
462
|
+
<span id=""></span>
|
463
|
+
<div class="method_details ">
|
464
|
+
<h3 class="signature " id="validity_state-instance_method">
|
350
465
|
|
351
466
|
#<strong>validity_state</strong> ⇒ <tt><span class='object_link'><a href="ValidityState.html" title="Brut::FrontEnd::Forms::ValidityState (class)">Brut::FrontEnd::Forms::ValidityState</a></span></tt> <span class="extras">(readonly)</span>
|
352
467
|
|
@@ -387,12 +502,12 @@
|
|
387
502
|
<pre class="lines">
|
388
503
|
|
389
504
|
|
390
|
-
|
391
|
-
|
392
|
-
|
505
|
+
13
|
506
|
+
14
|
507
|
+
15</pre>
|
393
508
|
</td>
|
394
509
|
<td>
|
395
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/select_input.rb', line
|
510
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/select_input.rb', line 13</span>
|
396
511
|
|
397
512
|
<span class='kw'>def</span> <span class='id identifier rubyid_validity_state'>validity_state</span>
|
398
513
|
<span class='ivar'>@validity_state</span>
|
@@ -415,7 +530,10 @@
|
|
415
530
|
|
416
531
|
</h3><div class="docstring">
|
417
532
|
<div class="discussion">
|
418
|
-
<p>Returns the input's value
|
533
|
+
<p>Returns the input's value. <strong>DO NOTE</strong> this returns a string. This is
|
534
|
+
because HTML stores these values as Strings. When using a checkbox, in
|
535
|
+
particular, the value will <em>not</em> be a boolean. You cannot do <code>if
|
536
|
+
input.value</code> and expect that work. See <span class='object_link'><a href="#typed_value-instance_method" title="Brut::FrontEnd::Forms::SelectInput#typed_value (method)">#typed_value</a></span> instead.</p>
|
419
537
|
|
420
538
|
|
421
539
|
</div>
|
@@ -433,7 +551,10 @@
|
|
433
551
|
|
434
552
|
|
435
553
|
—
|
436
|
-
<div class='inline'><p>the input's value</
|
554
|
+
<div class='inline'><p>the input's value. <strong>DO NOTE</strong> this returns a string. This is
|
555
|
+
because HTML stores these values as Strings. When using a checkbox, in
|
556
|
+
particular, the value will <em>not</em> be a boolean. You cannot do <code>if
|
557
|
+
input.value</code> and expect that work. See <span class='object_link'><a href="#typed_value-instance_method" title="Brut::FrontEnd::Forms::SelectInput#typed_value (method)">#typed_value</a></span> instead.</p>
|
437
558
|
</div>
|
438
559
|
|
439
560
|
</li>
|
@@ -530,12 +651,12 @@ that <code>key</code> should not be a key used for client-side validations.</p>
|
|
530
651
|
<pre class="lines">
|
531
652
|
|
532
653
|
|
533
|
-
|
534
|
-
|
535
|
-
|
654
|
+
46
|
655
|
+
47
|
656
|
+
48</pre>
|
536
657
|
</td>
|
537
658
|
<td>
|
538
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/select_input.rb', line
|
659
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/select_input.rb', line 46</span>
|
539
660
|
|
540
661
|
<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='id identifier rubyid_key'>key</span><span class='comma'>,</span><span class='id identifier rubyid_context'>context</span><span class='op'>=</span><span class='kw'>true</span><span class='rparen'>)</span>
|
541
662
|
<span class='ivar'>@validity_state</span><span class='period'>.</span><span class='id identifier rubyid_server_side_constraint_violation'>server_side_constraint_violation</span><span class='lparen'>(</span><span class='label'>key:</span> <span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='label'>context:</span> <span class='id identifier rubyid_context'>context</span><span class='rparen'>)</span>
|
@@ -587,10 +708,10 @@ that <code>key</code> should not be a key used for client-side validations.</p>
|
|
587
708
|
<pre class="lines">
|
588
709
|
|
589
710
|
|
590
|
-
|
711
|
+
51</pre>
|
591
712
|
</td>
|
592
713
|
<td>
|
593
|
-
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/select_input.rb', line
|
714
|
+
<pre class="code"><span class="info file"># File 'lib/brut/front_end/forms/select_input.rb', line 51</span>
|
594
715
|
|
595
716
|
<span class='kw'>def</span> <span class='id identifier rubyid_valid?'>valid?</span> <span class='op'>=</span> <span class='ivar'>@validity_state</span><span class='period'>.</span><span class='id identifier rubyid_valid?'>valid?</span></pre>
|
596
717
|
</td>
|
@@ -603,7 +724,7 @@ that <code>key</code> should not be a key used for client-side validations.</p>
|
|
603
724
|
</div>
|
604
725
|
|
605
726
|
<div id="footer">
|
606
|
-
Generated on
|
727
|
+
Generated on Tue Jul 8 01:36:10 2025 by
|
607
728
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
608
729
|
0.9.37 (ruby-3.4.4).
|
609
730
|
</div>
|