mirror of
https://github.com/discourse/discourse.git
synced 2025-02-03 00:21:44 +08:00
9f78ff5572
Allow admins to edit Community section. This includes drag and drop reorder, change names, delete and reset to default. Visual improvements introduced in edit community section modal are available in edit custom section form as well. For example: - drag and drop links to change their position; - smaller icon picker.
86 lines
2.3 KiB
Ruby
86 lines
2.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module PageObjects
|
|
module Components
|
|
class Sidebar < PageObjects::Components::Base
|
|
def visible?
|
|
page.has_css?("#d-sidebar")
|
|
end
|
|
|
|
def not_visible?
|
|
page.has_no_css?("#d-sidebar")
|
|
end
|
|
|
|
def has_category_section_link?(category)
|
|
page.has_link?(category.name, class: "sidebar-section-link")
|
|
end
|
|
|
|
def click_add_section_button
|
|
click_button(add_section_button_text)
|
|
end
|
|
|
|
def has_no_add_section_button?
|
|
page.has_no_button?(add_section_button_text)
|
|
end
|
|
|
|
def edit_custom_section(name)
|
|
find(".sidebar-section[data-section-name='#{name.parameterize}']").hover
|
|
|
|
find(
|
|
".sidebar-section[data-section-name='#{name.parameterize}'] button.sidebar-section-header-button",
|
|
).click
|
|
end
|
|
|
|
SIDEBAR_SECTION_LINK_SELECTOR = "sidebar-section-link"
|
|
|
|
def click_section_link(name)
|
|
find(".#{SIDEBAR_SECTION_LINK_SELECTOR}", text: name).click
|
|
end
|
|
|
|
def has_one_active_section_link?
|
|
has_css?(".#{SIDEBAR_SECTION_LINK_SELECTOR}--active", count: 1)
|
|
end
|
|
|
|
def has_section_link?(name, href: nil, active: false)
|
|
section_link_present?(name, href: href, active: active, present: true)
|
|
end
|
|
|
|
def has_no_section_link?(name, href: nil, active: false)
|
|
section_link_present?(name, href: href, active: active, present: false)
|
|
end
|
|
|
|
def custom_section_modal_title
|
|
find("#discourse-modal-title")
|
|
end
|
|
|
|
SIDEBAR_WRAPPER_SELECTOR = ".sidebar-wrapper"
|
|
|
|
def has_section?(name)
|
|
find(SIDEBAR_WRAPPER_SELECTOR).has_button?(name)
|
|
end
|
|
|
|
def has_no_section?(name)
|
|
find(SIDEBAR_WRAPPER_SELECTOR).has_no_button?(name)
|
|
end
|
|
|
|
def primary_section_links(slug)
|
|
all("[data-section-name='#{slug}'] .sidebar-section-link-wrapper").map(&:text)
|
|
end
|
|
|
|
private
|
|
|
|
def section_link_present?(name, href: nil, active: false, present:)
|
|
attributes = {}
|
|
attributes[:href] = href if href
|
|
attributes[:class] = SIDEBAR_SECTION_LINK_SELECTOR
|
|
attributes[:class] += "--active" if active
|
|
page.public_send(present ? :has_link? : :has_no_link?, name, **attributes)
|
|
end
|
|
|
|
def add_section_button_text
|
|
I18n.t("js.sidebar.sections.custom.add")
|
|
end
|
|
end
|
|
end
|
|
end
|