UX: Allow users to filter categories in edit sidebar categories modal (#21996)

What does this change do?

This change is a continuation of
2191b879c693f898bf7602b4f9ab6780b1eead67 and adds an input filter to the
edit sidebar categories modal which the user can use to filter through
the list of categories by the category's name.

Note that if a child category is being shown, all of its ancestors will
be shown even if the names of the ancestors do not match the given
filter. This is to ensure that we continue to display the hierarchy of a
child category even if the parent category does not match the filter.
This commit is contained in:
Alan Guo Xiang Tan
2023-06-08 13:54:51 +09:00
committed by GitHub
parent e48750281e
commit 853bce2abc
11 changed files with 281 additions and 58 deletions

View File

@ -3,26 +3,67 @@
module PageObjects
module Modals
class SidebarEditCategories < PageObjects::Modals::Base
MODAL_SELECTOR = ".sidebar-categories-form-modal"
def closed?
has_no_css?(MODAL_SELECTOR)
has_no_css?(".sidebar-categories-form-modal")
end
def has_right_title?(title)
has_css?("#{MODAL_SELECTOR} #discourse-modal-title", text: title)
has_css?(".sidebar-categories-form-modal #discourse-modal-title", text: title)
end
def has_parent_category_color?(category)
has_css?(
".sidebar-categories-form-modal .sidebar-categories-form__row",
style: "border-left-color: ##{category.color} ",
)
end
def has_category_description_excerpt?(category)
has_css?(
".sidebar-categories-form-modal .sidebar-categories-form__category-row",
text: category.description_excerpt,
)
end
def has_no_categories?
has_no_css?(".sidebar-categories-form-modal .sidebar-categories-form__category-row") &&
has_css?(
".sidebar-categories-form-modal .sidebar-categories-form__no-categories",
text: I18n.t("js.sidebar.categories_form.no_categories"),
)
end
def has_categories?(categories)
category_ids = categories.map(&:id)
has_css?(
".sidebar-categories-form-modal .sidebar-categories-form__category-row",
count: category_ids.length,
) &&
all(".sidebar-categories-form-modal .sidebar-categories-form__category-row").all? do |row|
category_ids.include?(row["data-category-id"].to_i)
end
end
def toggle_category_checkbox(category)
find(
"#{MODAL_SELECTOR} .sidebar-categories-form__category-row[data-category-id='#{category.id}'] .sidebar-categories-form__input",
".sidebar-categories-form-modal .sidebar-categories-form__category-row[data-category-id='#{category.id}'] .sidebar-categories-form__input",
).click
self
end
def save
find("#{MODAL_SELECTOR} .sidebar-categories-form__save-button").click
find(".sidebar-categories-form-modal .sidebar-categories-form__save-button").click
self
end
def filter(text)
find(".sidebar-categories-form-modal .sidebar-categories-form__filter-input-field").fill_in(
with: text,
)
self
end
end
end