mirror of
https://github.com/we-promise/sure.git
synced 2026-04-19 12:04:08 +00:00
New select component (#1071)
* feat: add new UI component to display dropdown select with filter * feat: use new dropdown componet for category selection in transactions * feat: improve dropdown controller * feat: Add checkbox indicator to highlight selected element in list * feat: add possibility to define dropdown without search * feat: initial implementation of variants * feat: Add default color for dropdown menu * feat: add "icon" variant for dropdown * refactor: component + controller refactoring * refactor: view + component * fix: adjust min width in selection for mobile * feat: refactor collection_select method to use new filter dropdown component * fix: compute fixed position for dropdown * feat: controller improvements * lint issues * feat: add dot color if no icon is available * refactor: controller refactor + update naming for variant from icon to logo * fix: set width to 100% for select dropdown * feat: add variant to collection_select in new transaction form * fix: typo in placeholder value * fix: add back include_blank property * refactor: rename component from FilterDropdown to Select * fix: translate placeholder and keep value_method and text_method * fix: remove duplicate variable assignment * fix: translate placeholder * fix: verify color format * fix: use right autocomplete value * fix: selection issue + controller adjustments * fix: move calls to startAutoUpdate and stopAutoUpdate * Update app/javascript/controllers/select_controller.js Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Signed-off-by: Alessio Cappa <104093777+alessiocappa@users.noreply.github.com> * fix: add aria-labels * fix: pass html_options to DS::Select * fix: unnecessary closing tag * fix: use offsetvalue for position checks * fix: use right classes for dropdown transitions * include options[:prompt] in placeholder init * fix: remove unused locale key * fix: Emit a native change event after updating the input value. * fix: Guard against negative maxHeight in constrained layouts. * fix: Update test * fix: lint issues * Update test/system/transfers_test.rb Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Signed-off-by: Alessio Cappa <104093777+alessiocappa@users.noreply.github.com> * Update test/system/transfers_test.rb Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Signed-off-by: Alessio Cappa <104093777+alessiocappa@users.noreply.github.com> * refactor: move CSS class for button select form in maybe-design-system.css --------- Signed-off-by: Alessio Cappa <104093777+alessiocappa@users.noreply.github.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
This commit is contained in:
@@ -12,20 +12,41 @@ class TransfersTest < ApplicationSystemTestCase
|
||||
transfer_date = Date.current
|
||||
|
||||
click_on "New transaction"
|
||||
|
||||
# Will navigate to different route in same modal
|
||||
click_on "Transfer"
|
||||
assert_text "New transfer"
|
||||
|
||||
select checking_name, from: "From"
|
||||
select savings_name, from: "To"
|
||||
# Select accounts using DS::Select
|
||||
select_ds("From", checking_name)
|
||||
select_ds("To", savings_name)
|
||||
|
||||
fill_in "transfer[amount]", with: 500
|
||||
fill_in "Date", with: transfer_date
|
||||
|
||||
click_button "Create transfer"
|
||||
|
||||
within "#entry-group-" + transfer_date.to_s do
|
||||
within "#entry-group-#{transfer_date}" do
|
||||
assert_text "Payment to"
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def select_ds(label_text, option_text)
|
||||
field_label = find("label", exact_text: label_text)
|
||||
container = field_label.ancestor("div.relative")
|
||||
|
||||
# Click the button to open the dropdown
|
||||
container.find("button").click
|
||||
|
||||
# If searchable, type in the search input
|
||||
if container.has_selector?("input[type='search']", visible: true)
|
||||
container.find("input[type='search']", visible: true).set(option_text)
|
||||
end
|
||||
|
||||
# Wait for the listbox to appear inside the relative container
|
||||
listbox = container.find("[role='listbox']", visible: true)
|
||||
|
||||
# Click the option inside the listbox
|
||||
listbox.find("[role='option']", exact_text: option_text, visible: true).click
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user