Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix: ComboBox show all items on open (#2328)
DH-18088 & DH-18087: ComboBox now clears search filter when opening the ComboBox unless it is triggered by user input. ### Testing - Typing in a combobox should open it filtered by the search text - Clicking the dropdown should open the CombBox unfiltered - Typing while open should filter results > Note that there seems to be a Spectrum bug that can cause some weird scrolling behavior when typing in an opened ComboBox adobe/react-spectrum#7573 #### menu_trigger="focus" - Clicking search input should open it unfiltered Here's a script with a few different configurations ```python import deephaven.ui as ui from deephaven import time_table import datetime # Ticking table with initial row count of 200 that adds a row every second initial_row_count = 200 _table = time_table( "PT1S", start_time=datetime.datetime.now() - datetime.timedelta(seconds=initial_row_count), ).update( [ "Int=new Integer(i)", "Text=new String(`Display `+i)", ] ) item_list = [ui.item(f"Display {i}") for i in range(1, 201)] # Basic ComboBox @ui.component def ui_combo_box_basic(): value, set_value = ui.use_state("Display 91") return ui.combo_box( item_list, label=f"Basic ({value})", selected_key=value, on_change=set_value, width="size-3000" ) # Uncontrolled ComboBox (Table source) @ui.component def ui_combo_box_uncontrolled(table): value, set_value = ui.use_state("") combo1 = ui.combo_box( ui.item_table_source(table, key_column="Text", label_column="Text"), default_selected_key="Display 92", label=f"Uncontrolled Table Source ({value or 'None'})", on_change=set_value, width="size-3000" ) return combo1 # Controlled ComboBox (Table source) @ui.component def ui_combo_box_controlled(table, menu_trigger): value, set_value = ui.use_state("Display 93") combo1 = ui.combo_box( ui.item_table_source(table, key_column="Text", label_column="Text"), selected_key=value, label=f"Controlled Table Source ({value}) {menu_trigger or ''}", menu_trigger=menu_trigger, on_change=set_value, width="size-3000" ) btn = ui.button("Set Value", on_press=lambda: set_value("Display 104")) return combo1, btn # Controlled input ComboBox (Table source) @ui.component def ui_combo_box_input_controlled(table, menu_trigger): input_value, set_input_value = ui.use_state("Display 94") value, set_value = ui.use_state("Display 94") combo1 = ui.combo_box( ui.item_table_source(table, key_column="Text", label_column="Text"), input_value=input_value, on_input_change=set_input_value, default_selected_key=value, label=f"Controlled Input Table Source ({value}) {menu_trigger or ''}", menu_trigger=menu_trigger, on_change=set_value, width="size-3000" ) btn = ui.button("Set Input", on_press=lambda: set_input_value("Display 104")) return combo1, btn # Layout @ui.component def ui_layout(): return ( ui_combo_box_basic(), ui_combo_box_uncontrolled(_table), ui_combo_box_controlled(_table, None), ui_combo_box_controlled(_table, "focus"), ui_combo_box_input_controlled(_table, None), ) tests = ui_layout() ```
- Loading branch information