From 75cc5c980a04de5bed99aade1ae57a5d236830d7 Mon Sep 17 00:00:00 2001 From: Filip Hoffmann Date: Sat, 28 Feb 2026 18:37:11 +0100 Subject: [PATCH] fix: some components don't get serialized with the type field --- CHANGELOG.md | 3 +++ src/grom/component/checkbox.gleam | 4 +++- src/grom/component/checkbox_group.gleam | 4 +++- src/grom/component/label.gleam | 4 +++- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ad4cc52..4c2dc9b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +# Unreleased +* Fix some components not being serialized with the `type` field (Filip Hoffmann) + # v5.1.2 (27/02/2026) * Fix sub-command parameters having the `parameters` field incorrectly serialized (Filip Hoffmann) diff --git a/src/grom/component/checkbox.gleam b/src/grom/component/checkbox.gleam index 079ef58..f61a8e1 100644 --- a/src/grom/component/checkbox.gleam +++ b/src/grom/component/checkbox.gleam @@ -13,6 +13,8 @@ pub type Checkbox { @internal pub fn to_json(checkbox: Checkbox) -> Json { + let type_ = [#("type", json.int(23))] + let id = case checkbox.id { Some(id) -> [#("id", json.int(id))] None -> [] @@ -24,7 +26,7 @@ pub fn to_json(checkbox: Checkbox) -> Json { #("default", json.bool(checkbox.is_default_selected)), ] - [id, custom_id, is_default_selected] + [type_, id, custom_id, is_default_selected] |> list.flatten |> json.object } diff --git a/src/grom/component/checkbox_group.gleam b/src/grom/component/checkbox_group.gleam index 413970e..3c32c29 100644 --- a/src/grom/component/checkbox_group.gleam +++ b/src/grom/component/checkbox_group.gleam @@ -32,6 +32,8 @@ pub type Option { @internal pub fn to_json(group: CheckboxGroup) -> Json { + let type_ = [#("type", json.int(22))] + let id = case group.id { Some(id) -> [#("id", json.int(id))] None -> [] @@ -53,7 +55,7 @@ pub fn to_json(group: CheckboxGroup) -> Json { let is_required = [#("required", json.bool(group.is_required))] - [id, custom_id, options, min_values, max_values, is_required] + [type_, id, custom_id, options, min_values, max_values, is_required] |> list.flatten |> json.object } diff --git a/src/grom/component/label.gleam b/src/grom/component/label.gleam index 62e313f..89624f3 100644 --- a/src/grom/component/label.gleam +++ b/src/grom/component/label.gleam @@ -40,6 +40,8 @@ pub type Component { @internal pub fn to_json(label: Label) -> Json { + let type_ = [#("type", json.int(18))] + let id = case label.id { Some(id) -> [#("id", json.int(id))] None -> [] @@ -54,7 +56,7 @@ pub fn to_json(label: Label) -> Json { let component = [#("component", component_to_json(label.component))] - [id, description, label_, component] + [type_, id, description, label_, component] |> list.flatten |> json.object } -- 2.51.2