diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c46c6b..9b08b1c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - The popover now uses the Dialog API behind the scenes +### Fixed + +- Return early if `selected` is set as an empty string + ## [0.7.2] - 2025-07-04 ### Changed diff --git a/app/components/impulse/select_component.rb b/app/components/impulse/select_component.rb index af0bf96..9484aa5 100644 --- a/app/components/impulse/select_component.rb +++ b/app/components/impulse/select_component.rb @@ -16,7 +16,7 @@ def initialize(object_name, method_name, choices = [], selected: nil, **system_a private def value - return if @selected.nil? + return if @selected.blank? return @selected.map { |value| find_option(value) }.compact if multiple? find_option(@selected) end diff --git a/test/components/select_component_test.rb b/test/components/select_component_test.rb index 81ce9e7..ce22b89 100644 --- a/test/components/select_component_test.rb +++ b/test/components/select_component_test.rb @@ -86,6 +86,8 @@ class SelectComponentTest < ApplicationTest render_inline(Impulse::SelectComponent.new(:user, :fruit_id, ["Apple", "Guava"], selected: "Invalid")) render_inline(Impulse::SelectComponent.new(:user, :fruit_id, ["Apple", "Guava"], selected: ["", "Apple"], multiple: true)) render_inline(Impulse::SelectComponent.new(:user, :fruit_id, ["Apple", "Guava"], selected: ["Invalid", "Apple"], multiple: true)) + render_inline(Impulse::SelectComponent.new(:user, :fruit_id, ["Apple", "Guava"], selected: "", multiple: true)) + render_inline(Impulse::SelectComponent.new(:user, :fruit_id, ["Apple", "Guava"], selected: nil, multiple: true)) end end