Table of Contents

Class PanelIds

Namespace
GrindFest
Assembly
GrindFest.dll

Element ids of the OneJS panel roots, as set on the JSX side (OneJS maps a JSX id to VisualElement.name, which is what FindByName(string) reads).

Why ids instead of text: a test that wants to know "is the main menu open?" cannot answer that from text reliably. The same words appear in several panels - the Settings panel carries a "Settings" title, so the menu's own "Settings" entry is not unique - and any copy change (or localization) breaks the probe. An id is one stable handle per panel, and it survives a panel rewrite as long as the id is kept.

Text keeps its own job: clicking what a player reads, and proving the CONTENT rendered. A panel can be open while its content renders nothing, which is exactly the bug SettingsUiTests guards, so a panel-id check alone would not have caught it.

Keep in sync with the TSX: panel-main-menu App/src/components/MainMenu.tsx panel-settings App/src/components/Settings/SettingsPanel.tsx panel-character-screen App/src/components/CharacterScreen/CharacterScreenView.tsx panel-prestige-tree App/src/components/PrestigeTree/PrestigeTreeView.tsx panel-achievements App/src/components/AchievementsPanel/AchievementsPanel.tsx panel-mod-browser App/src/components/ModBrowser/ModBrowser.tsx panel-report-bug App/src/components/ReportBug/ReportBugPanel.tsx panel-bot-config App/src/components/BotConfig/BotConfigPanel.tsx panel-character-selection App/src/components/CharacterSelection.tsx panel-character-creation App/src/components/CharacterCreation.tsx

public static class PanelIds
Inheritance
object
PanelIds

Fields

Achievements
All

Every panel id - for code that has to walk all of them (see CloseAllPanels()).

BotConfig
CharacterCreation
CharacterScreen
CharacterSelection
MainMenu
ModBrowser
PrestigeTree
ReportBug
Settings