A Gleam package for parsing and generating accessible HTML forms.

update demo

Changed files
+81 -78
formz_demo
+9 -9
formz_demo/gleam.toml
··· 17 17 formz_lustre = { path = "../formz_lustre" } 18 18 formz_nakai = { path = "../formz_nakai" } 19 19 formz_string = { path = "../formz_string" } 20 - gleam_http = ">= 3.7.0 and < 4.0.0" 21 - gleam_erlang = ">= 0.27.0 and < 1.0.0" 22 - gleam_stdlib = ">= 0.34.0 and < 2.0.0" 23 - mist = ">= 3.0.0 and < 4.0.0" 24 - wisp = ">= 1.2.0 and < 2.0.0" 25 - lustre = ">= 4.5.1 and < 5.0.0" 26 - nakai = ">= 1.0.0 and < 2.0.0" 20 + gleam_http = ">= 3.0.0 and < 5.0.0" 21 + gleam_erlang = ">= 0.34.0 and < 1.0.0" 22 + gleam_stdlib = ">= 0.53.0 and < 2.0.0" 23 + mist = ">= 4.0.0 and < 5.0.0" 24 + wisp = ">= 1.5.0 and < 2.0.0" 25 + lustre = ">= 4.6.0 and < 5.0.0" 26 + nakai = ">= 1.1.0 and < 2.0.0" 27 27 simplifile = ">= 2.2.0 and < 3.0.0" 28 - justin = ">= 1.0.1 and < 2.0.0" 29 - pprint = ">= 1.0.3 and < 2.0.0" 28 + justin = ">= 1.0.0 and < 2.0.0" 29 + pprint = ">= 1.0.0 and < 2.0.0" 30 30 31 31 [dev-dependencies] 32 32 gleeunit = ">= 1.0.0 and < 2.0.0"
+24 -25
formz_demo/manifest.toml
··· 2 2 # You typically do not need to edit this file 3 3 4 4 packages = [ 5 - { name = "birl", version = "1.7.1", build_tools = ["gleam"], requirements = ["gleam_stdlib", "ranger"], otp_app = "birl", source = "hex", outer_checksum = "5C66647D62BCB11FE327E7A6024907C4A17954EF22865FE0940B54A852446D01" }, 6 5 { name = "directories", version = "1.1.0", build_tools = ["gleam"], requirements = ["envoy", "gleam_stdlib", "platform", "simplifile"], otp_app = "directories", source = "hex", outer_checksum = "BDA521A4EB9EE3A7894F0DC863797878E91FF5C7826F7084B2E731E208BDB076" }, 7 6 { name = "envoy", version = "1.0.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "envoy", source = "hex", outer_checksum = "95FD059345AA982E89A0B6E2A3BF1CF43E17A7048DCD85B5B65D3B9E4E39D359" }, 8 7 { name = "exception", version = "2.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "exception", source = "hex", outer_checksum = "F5580D584F16A20B7FCDCABF9E9BE9A2C1F6AC4F9176FA6DD0B63E3B20D450AA" }, 9 8 { name = "filepath", version = "1.1.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "filepath", source = "hex", outer_checksum = "67A6D15FB39EEB69DD31F8C145BB5A421790581BD6AA14B33D64D5A55DBD6587" }, 10 - { name = "formz", version = "1.0.1", build_tools = ["gleam"], requirements = ["gleam_stdlib", "justin"], source = "local", path = "../formz" }, 11 - { name = "formz_lustre", version = "1.0.0", build_tools = ["gleam"], requirements = ["formz", "gleam_stdlib", "lustre"], source = "local", path = "../formz_lustre" }, 12 - { name = "formz_nakai", version = "1.0.0", build_tools = ["gleam"], requirements = ["formz", "gleam_stdlib", "nakai"], source = "local", path = "../formz_nakai" }, 13 - { name = "formz_string", version = "1.0.0", build_tools = ["gleam"], requirements = ["formz", "gleam_stdlib"], source = "local", path = "../formz_string" }, 9 + { name = "formz", version = "2.0.1", build_tools = ["gleam"], requirements = ["gleam_stdlib", "justin"], source = "local", path = "../formz" }, 10 + { name = "formz_lustre", version = "2.0.1", build_tools = ["gleam"], requirements = ["formz", "gleam_stdlib", "lustre"], source = "local", path = "../formz_lustre" }, 11 + { name = "formz_nakai", version = "2.0.1", build_tools = ["gleam"], requirements = ["formz", "gleam_stdlib", "nakai"], source = "local", path = "../formz_nakai" }, 12 + { name = "formz_string", version = "2.0.1", build_tools = ["gleam"], requirements = ["formz", "gleam_stdlib"], source = "local", path = "../formz_string" }, 14 13 { name = "glam", version = "2.0.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "glam", source = "hex", outer_checksum = "66EC3BCD632E51EED029678F8DF419659C1E57B1A93D874C5131FE220DFAD2B2" }, 15 14 { name = "gleam_crypto", version = "1.4.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_crypto", source = "hex", outer_checksum = "8AE56026B3E05EBB1F076778478A762E9EB62B31AEEB4285755452F397029D22" }, 16 - { name = "gleam_erlang", version = "0.32.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_erlang", source = "hex", outer_checksum = "B18643083A0117AC5CFD0C1AEEBE5469071895ECFA426DCC26517A07F6AD9948" }, 17 - { name = "gleam_http", version = "3.7.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_http", source = "hex", outer_checksum = "A9EE0722106FCCAB8AD3BF9D0A3EFF92BFE8561D59B83BAE96EB0BE1938D4E0F" }, 18 - { name = "gleam_json", version = "2.1.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_json", source = "hex", outer_checksum = "0A57FB5666E695FD2BEE74C0428A98B0FC11A395D2C7B4CDF5E22C5DD32C74C6" }, 19 - { name = "gleam_otp", version = "0.14.1", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_stdlib"], otp_app = "gleam_otp", source = "hex", outer_checksum = "5A8CE8DBD01C29403390A7BD5C0A63D26F865C83173CF9708E6E827E53159C65" }, 20 - { name = "gleam_stdlib", version = "0.45.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "206FCE1A76974AECFC55AEBCD0217D59EDE4E408C016E2CFCCC8FF51278F186E" }, 21 - { name = "gleeunit", version = "1.2.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "F7A7228925D3EE7D0813C922E062BFD6D7E9310F0BEE585D3A42F3307E3CFD13" }, 22 - { name = "glisten", version = "6.0.0", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_otp", "gleam_stdlib", "logging", "telemetry"], otp_app = "glisten", source = "hex", outer_checksum = "912132751031473CB38F454120124FFC96AF6B0EA33D92C9C90DB16327A2A972" }, 23 - { name = "gramps", version = "2.0.3", build_tools = ["gleam"], requirements = ["gleam_crypto", "gleam_erlang", "gleam_http", "gleam_stdlib"], otp_app = "gramps", source = "hex", outer_checksum = "3CCAA6E081225180D95C79679D383BBF51C8D1FDC1B84DA1DA444F628C373793" }, 15 + { name = "gleam_erlang", version = "0.34.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_erlang", source = "hex", outer_checksum = "0C38F2A128BAA0CEF17C3000BD2097EB80634E239CE31A86400C4416A5D0FDCC" }, 16 + { name = "gleam_http", version = "3.7.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_http", source = "hex", outer_checksum = "8A70D2F70BB7CFEB5DF048A2183FFBA91AF6D4CF5798504841744A16999E33D2" }, 17 + { name = "gleam_json", version = "2.3.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_json", source = "hex", outer_checksum = "C55C5C2B318533A8072D221C5E06E5A75711C129E420DD1CE463342106012E5D" }, 18 + { name = "gleam_otp", version = "0.16.1", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_stdlib"], otp_app = "gleam_otp", source = "hex", outer_checksum = "50DA1539FC8E8FA09924EB36A67A2BBB0AD6B27BCDED5A7EF627057CF69D035E" }, 19 + { name = "gleam_stdlib", version = "0.54.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "723BA61A2BAE8D67406E59DD88CEA1B3C3F266FC8D70F64BE9FEC81B4505B927" }, 20 + { name = "gleam_yielder", version = "1.1.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_yielder", source = "hex", outer_checksum = "8E4E4ECFA7982859F430C57F549200C7749823C106759F4A19A78AEA6687717A" }, 21 + { name = "gleeunit", version = "1.3.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "0E6C83834BA65EDCAAF4FE4FB94AC697D9262D83E6F58A750D63C9F6C8A9D9FF" }, 22 + { name = "glisten", version = "7.0.1", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_otp", "gleam_stdlib", "logging", "telemetry"], otp_app = "glisten", source = "hex", outer_checksum = "1A53CF9FB3231A93FF7F1BD519A43DC968C1722F126CDD278403A78725FC5189" }, 23 + { name = "gramps", version = "3.0.0", build_tools = ["gleam"], requirements = ["gleam_crypto", "gleam_erlang", "gleam_http", "gleam_stdlib"], otp_app = "gramps", source = "hex", outer_checksum = "630BDE35E465511945253A06EBCDE8D5E4B8B1988F4AC6B8FAC297DEF55B4CA2" }, 24 24 { name = "hpack_erl", version = "0.3.0", build_tools = ["rebar3"], requirements = [], otp_app = "hpack", source = "hex", outer_checksum = "D6137D7079169D8C485C6962DFE261AF5B9EF60FBC557344511C1E65E3D95FB0" }, 25 25 { name = "justin", version = "1.0.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "justin", source = "hex", outer_checksum = "7FA0C6DB78640C6DC5FBFD59BF3456009F3F8B485BF6825E97E1EB44E9A1E2CD" }, 26 26 { name = "logging", version = "1.3.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "logging", source = "hex", outer_checksum = "1098FBF10B54B44C2C7FDF0B01C1253CAFACDACABEFB4B0D027803246753E06D" }, 27 27 { name = "lustre", version = "4.6.3", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_json", "gleam_otp", "gleam_stdlib"], otp_app = "lustre", source = "hex", outer_checksum = "BDF833368F6C8F152F948D5B6A79866E9881CB80CB66C0685B3327E7DCBFB12F" }, 28 28 { name = "marceau", version = "1.3.0", build_tools = ["gleam"], requirements = [], otp_app = "marceau", source = "hex", outer_checksum = "2D1C27504BEF45005F5DFB18591F8610FB4BFA91744878210BDC464412EC44E9" }, 29 - { name = "mist", version = "3.0.0", build_tools = ["gleam"], requirements = ["birl", "gleam_erlang", "gleam_http", "gleam_otp", "gleam_stdlib", "glisten", "gramps", "hpack_erl", "logging"], otp_app = "mist", source = "hex", outer_checksum = "CDA1A74E768419235E16886463EC4722EFF4AB3F8D820A76EAD45D7C167D7282" }, 29 + { name = "mist", version = "4.0.6", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_http", "gleam_otp", "gleam_stdlib", "gleam_yielder", "glisten", "gramps", "hpack_erl", "logging"], otp_app = "mist", source = "hex", outer_checksum = "ED319E5A7F2056E08340B6976EA5E717F3C3BB36056219AF826D280D9C077952" }, 30 30 { name = "nakai", version = "1.1.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "nakai", source = "hex", outer_checksum = "58D863966CFCAFCE60CE67C609B2C803551F76FEED8F3BAF6CD03F3C4B16C954" }, 31 31 { name = "platform", version = "1.0.0", build_tools = ["gleam"], requirements = [], otp_app = "platform", source = "hex", outer_checksum = "8339420A95AD89AAC0F82F4C3DB8DD401041742D6C3F46132A8739F6AEB75391" }, 32 32 { name = "pprint", version = "1.0.4", build_tools = ["gleam"], requirements = ["glam", "gleam_stdlib"], otp_app = "pprint", source = "hex", outer_checksum = "C310A98BDC0995644847C3C8702DE19656D6BCD638B2A8A358B97824379ECAA1" }, 33 - { name = "ranger", version = "1.3.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "ranger", source = "hex", outer_checksum = "B8F3AFF23A3A5B5D9526B8D18E7C43A7DFD3902B151B97EC65397FE29192B695" }, 34 33 { name = "simplifile", version = "2.2.0", build_tools = ["gleam"], requirements = ["filepath", "gleam_stdlib"], otp_app = "simplifile", source = "hex", outer_checksum = "0DFABEF7DC7A9E2FF4BB27B108034E60C81BEBFCB7AB816B9E7E18ED4503ACD8" }, 35 34 { name = "telemetry", version = "1.3.0", build_tools = ["rebar3"], requirements = [], otp_app = "telemetry", source = "hex", outer_checksum = "7015FC8919DBE63764F4B4B87A95B7C0996BD539E0D499BE6EC9D7F3875B79E6" }, 36 - { name = "wisp", version = "1.3.0", build_tools = ["gleam"], requirements = ["directories", "exception", "gleam_crypto", "gleam_erlang", "gleam_http", "gleam_json", "gleam_stdlib", "logging", "marceau", "mist", "simplifile"], otp_app = "wisp", source = "hex", outer_checksum = "D12384EE63ADEE833B40A6D26EF8014A6E4BFC10EC2CDC8B57D325DD4B52740E" }, 35 + { name = "wisp", version = "1.5.3", build_tools = ["gleam"], requirements = ["directories", "exception", "gleam_crypto", "gleam_erlang", "gleam_http", "gleam_json", "gleam_stdlib", "logging", "marceau", "mist", "simplifile"], otp_app = "wisp", source = "hex", outer_checksum = "DCD083E0ED3D30EA8CF2EECCA01A8108F7987D7BD908F527862E3D2725436444" }, 37 36 ] 38 37 39 38 [requirements] ··· 41 40 formz_lustre = { path = "../formz_lustre" } 42 41 formz_nakai = { path = "../formz_nakai" } 43 42 formz_string = { path = "../formz_string" } 44 - gleam_erlang = { version = ">= 0.27.0 and < 1.0.0" } 45 - gleam_http = { version = ">= 3.7.0 and < 4.0.0" } 46 - gleam_stdlib = { version = ">= 0.34.0 and < 2.0.0" } 43 + gleam_erlang = { version = ">= 0.34.0 and < 1.0.0" } 44 + gleam_http = { version = ">= 3.0.0 and < 5.0.0" } 45 + gleam_stdlib = { version = ">= 0.53.0 and < 2.0.0" } 47 46 gleeunit = { version = ">= 1.0.0 and < 2.0.0" } 48 - justin = { version = ">= 1.0.1 and < 2.0.0" } 49 - lustre = { version = ">= 4.5.1 and < 5.0.0" } 50 - mist = { version = ">= 3.0.0 and < 4.0.0" } 51 - nakai = { version = ">= 1.0.0 and < 2.0.0" } 52 - pprint = { version = ">= 1.0.3 and < 2.0.0" } 47 + justin = { version = ">= 1.0.0 and < 2.0.0" } 48 + lustre = { version = ">= 4.6.0 and < 5.0.0" } 49 + mist = { version = ">= 4.0.0 and < 5.0.0" } 50 + nakai = { version = ">= 1.1.0 and < 2.0.0" } 51 + pprint = { version = ">= 1.0.0 and < 2.0.0" } 53 52 simplifile = { version = ">= 2.2.0 and < 3.0.0" } 54 - wisp = { version = ">= 1.2.0 and < 2.0.0" } 53 + wisp = { version = ">= 1.5.0 and < 2.0.0" }
+48 -44
formz_demo/priv/static/stylesheet.css
··· 1 - body { font-family: sans-serif; } 1 + body { 2 + font-family: sans-serif; 3 + } 2 4 3 5 h1 { 4 - margin: 10px; 5 - font-size: 1.5em; 6 + margin: 10px; 7 + font-size: 1.5em; 6 8 } 7 9 8 10 .container { 9 - display: grid; 10 - grid-template-columns: 60% auto; 11 - grid-template-rows: auto; 12 - grid-template-areas: 13 - "forms post" 14 - "code post" 15 - ; 16 - width: 100%; 11 + display: grid; 12 + grid-template-columns: 60% auto; 13 + grid-template-rows: auto; 14 + grid-template-areas: 15 + "forms post" 16 + "code post"; 17 + width: 100%; 17 18 } 18 19 19 20 .post { ··· 23 24 margin: 0 7px 20px; 24 25 25 26 > div { 26 - font-family: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, 'DejaVu Sans Mono', monospace; 27 + font-family: 28 + ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, 29 + Consolas, "DejaVu Sans Mono", monospace; 27 30 min-height: 18px; 28 31 } 29 32 30 33 > div.success { 31 34 padding: 10px; 32 - background: #90EE90; 35 + background: #90ee90; 33 36 white-space: pre-wrap; 34 37 } 35 38 36 39 > div.error { 37 40 padding: 10px; 38 - background: #FF5733; 41 + background: #ff5733; 39 42 } 40 43 41 44 h2 { ··· 49 52 } 50 53 } 51 54 table.input_data { 52 - border-spacing: 0; 53 - border-collapse: collapse; 54 - width: 100%; 55 + border-spacing: 0; 56 + border-collapse: collapse; 57 + width: 100%; 55 58 56 - th { 57 - text-align: left; 58 - font-weight: normal; 59 - background: #bbb; 60 - padding: 10px; 61 - } 59 + th { 60 + text-align: left; 61 + font-weight: normal; 62 + background: #bbb; 63 + padding: 10px; 64 + } 62 65 63 - td:nth-child(1), td:nth-child(2) { 64 - font-family: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, 'DejaVu Sans Mono', monospace; 65 - } 66 - td:nth-child(3) { 67 - color: #bd2901; 68 - } 69 - td { 70 - background: #eee; 71 - padding: 10px; 72 - } 66 + td:nth-child(1), 67 + td:nth-child(2) { 68 + font-family: 69 + ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, 70 + Consolas, "DejaVu Sans Mono", monospace; 71 + } 72 + td:nth-child(3) { 73 + color: #bd2901; 74 + } 75 + td { 76 + background: #eee; 77 + padding: 10px; 78 + } 73 79 } 74 - } 80 + } 75 81 76 - .form { 82 + .form { 77 83 grid-area: forms; 78 84 padding: 0 15px; 79 85 background: #f3f3f3; ··· 106 112 .formz_help_text { 107 113 display: block; 108 114 } */ 109 - 110 - 111 115 } 112 116 .formz_error { 113 117 color: #bd2901; ··· 116 120 fieldset { 117 121 margin: 15px 0; 118 122 } 119 - } 123 + } 120 124 121 - .code { 125 + .code { 122 126 grid-area: code; 123 127 margin: 0 7px 20px; 124 128 ··· 134 138 padding: 10px; 135 139 } 136 140 code { 137 - font-family: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, 'DejaVu Sans Mono', monospace; 138 - font-weight: normal; 139 - font-size: 1em; 141 + font-family: 142 + ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, 143 + "DejaVu Sans Mono", monospace; 144 + font-weight: normal; 145 + font-size: 1em; 140 146 } 141 - } 142 - 143 147 }