this repo has no description
4
fork

Configure Feed

Select the types of activity you want to include in your feed.

make list_field take a straight list of strings

move old list_field to indexed_enum_field

+43 -24
+2 -2
formz/src/formz/field.gleam
··· 53 53 Field(input.empty_field(widget), pair.second(first), transform) 54 54 } 55 55 56 - pub fn list_field( 56 + pub fn indexed_enum_field( 57 57 variants: List(#(String, enum)), 58 58 widget: fn(Input(format), input.WidgetArgs) -> format, 59 59 ) -> Field(format, enum) { 60 - let transform = validation.list_item(variants) 60 + let transform = validation.enum_by_index(variants) 61 61 // todo should i force this to be a non empty list? 62 62 // https://github.com/giacomocavalieri/non_empty_list 63 63 // on the one hand it needs to be non empty, on the other
+7 -2
formz/src/formz/string_generator/fields.gleam
··· 30 30 field.text_field(widgets.hidden_widget()) |> field.set_hidden(True) 31 31 } 32 32 33 - pub fn list_field(variants: List(#(String, enum))) { 33 + pub fn indexed_enum_field(variants: List(#(String, enum))) { 34 34 let keys_indexed = list.index_map(variants, fn(t, i) { #(t.0, i) }) 35 - field.list_field(variants, widgets.select_widget(keys_indexed)) 35 + field.indexed_enum_field(variants, widgets.select_widget(keys_indexed)) 36 + } 37 + 38 + pub fn list_field(variants: List(String)) { 39 + let tuple_list = list.map(variants, fn(s) { #(s, s) }) 40 + indexed_enum_field(tuple_list) 36 41 }
+1 -1
formz/src/formz/validation.gleam
··· 61 61 } 62 62 } 63 63 64 - pub fn list_item( 64 + pub fn enum_by_index( 65 65 variants: List(#(String, enum)), 66 66 ) -> fn(String) -> Result(enum, String) { 67 67 fn(str) {
+7 -7
formz/test/formz/validation_test.gleam
··· 102 102 103 103 pub fn list_item_test() { 104 104 "x" 105 - |> validation.list_item(variants() |> list.take(1)) 105 + |> validation.enum_by_index(variants() |> list.take(1)) 106 106 |> should.equal(Error("Must be A")) 107 107 "x" 108 - |> validation.list_item(variants() |> list.take(2)) 108 + |> validation.enum_by_index(variants() |> list.take(2)) 109 109 |> should.equal(Error("Must be one of A, B")) 110 110 "x" 111 - |> validation.list_item(variants() |> list.take(3)) 111 + |> validation.enum_by_index(variants() |> list.take(3)) 112 112 |> should.equal(Error("Must be one of A, B, C")) 113 113 "x" 114 - |> validation.list_item(variants() |> list.take(4)) 114 + |> validation.enum_by_index(variants() |> list.take(4)) 115 115 |> should.equal(Error("Must be one of A, B, C, D")) 116 116 "x" 117 - |> validation.list_item(variants()) 117 + |> validation.enum_by_index(variants()) 118 118 |> should.equal(Error("Must be one of A, B, C, D...")) 119 - "0" |> validation.list_item(variants()) |> should.equal(Ok(A)) 120 - "24" |> validation.list_item(variants()) |> should.equal(Ok(Y)) 119 + "0" |> validation.enum_by_index(variants()) |> should.equal(Ok(A)) 120 + "24" |> validation.enum_by_index(variants()) |> should.equal(Ok(Y)) 121 121 } 122 122 123 123 pub fn boolean_test() {
+3 -2
formz_demo/src/formz_demo/examples/all_the_inputs.gleam
··· 13 13 use e <- formz.with(field("e", fields.email_field())) 14 14 use f <- formz.with(field("f", fields.hidden_field())) 15 15 use g <- formz.with(field("g", fields.enum_field(letters()))) 16 - use h <- formz.with(field("h", fields.list_field(choices))) 16 + use h <- formz.with(field("h", fields.indexed_enum_field(choices))) 17 + use i <- formz.with(field("i", fields.list_field(["Dog", "Cat", "Bird"]))) 17 18 18 - formz.create_form(#(a, b, c, d, e, f, g, h)) 19 + formz.create_form(#(a, b, c, d, e, f, g, h, i)) 19 20 } 20 21 21 22 pub fn handle_get(form) {
+7 -2
formz_lustre/src/formz_lustre/fields.gleam
··· 26 26 field.enum_field(variants, widgets.select_widget(variants)) 27 27 } 28 28 29 - pub fn list_field(variants: List(#(String, enum))) { 29 + pub fn indexed_enum_field(variants: List(#(String, enum))) { 30 30 let keys_indexed = list.index_map(variants, fn(t, i) { #(t.0, i) }) 31 - field.list_field(variants, widgets.select_widget(keys_indexed)) 31 + field.indexed_enum_field(variants, widgets.select_widget(keys_indexed)) 32 + } 33 + 34 + pub fn list_field(variants: List(String)) { 35 + let tuple_list = list.map(variants, fn(s) { #(s, s) }) 36 + indexed_enum_field(tuple_list) 32 37 } 33 38 34 39 pub fn hidden_field() {
+5 -3
formz_lustre/test/formz_lustre/fields_test.gleam
··· 73 73 fields_should_be_equal_except_widget(lustre_field, string_field) 74 74 } 75 75 76 - pub fn list_field_test() { 77 - let string_field = string_fields.list_field([#("a", "A"), #("b", "B")]) 78 - let lustre_field = lustre_fields.list_field([#("a", "A"), #("b", "B")]) 76 + pub fn indexed_enum_field_test() { 77 + let string_field = 78 + string_fields.indexed_enum_field([#("a", "A"), #("b", "B")]) 79 + let lustre_field = 80 + lustre_fields.indexed_enum_field([#("a", "A"), #("b", "B")]) 79 81 80 82 fields_should_be_equal_except_widget(lustre_field, string_field) 81 83 }
+7 -2
formz_nakai/src/formz_nakai/fields.gleam
··· 26 26 field.enum_field(variants, widgets.select_widget(variants)) 27 27 } 28 28 29 - pub fn list_field(variants: List(#(String, enum))) { 29 + pub fn indexed_enum_field(variants: List(#(String, enum))) { 30 30 let keys_indexed = list.index_map(variants, fn(t, i) { #(t.0, i) }) 31 - field.list_field(variants, widgets.select_widget(keys_indexed)) 31 + field.indexed_enum_field(variants, widgets.select_widget(keys_indexed)) 32 + } 33 + 34 + pub fn list_field(variants: List(String)) { 35 + let tuple_list = list.map(variants, fn(s) { #(s, s) }) 36 + indexed_enum_field(tuple_list) 32 37 } 33 38 34 39 pub fn hidden_field() {
+4 -3
formz_nakai/test/formz_nakai/fields_test.gleam
··· 73 73 fields_should_be_equal_except_widget(nakai_field, string_field) 74 74 } 75 75 76 - pub fn list_field_test() { 77 - let string_field = string_fields.list_field([#("a", "A"), #("b", "B")]) 78 - let nakai_field = nakai_fields.list_field([#("a", "A"), #("b", "B")]) 76 + pub fn indexed_enum_field_test() { 77 + let string_field = 78 + string_fields.indexed_enum_field([#("a", "A"), #("b", "B")]) 79 + let nakai_field = nakai_fields.indexed_enum_field([#("a", "A"), #("b", "B")]) 79 80 80 81 fields_should_be_equal_except_widget(nakai_field, string_field) 81 82 }