Skip to content

Lift Tier A components into library and restructure folders by category#512

Merged
jschick04 merged 1 commit intomainfrom
jschick/components-lift-and-restructure
May 4, 2026
Merged

Lift Tier A components into library and restructure folders by category#512
jschick04 merged 1 commit intomainfrom
jschick/components-lift-and-restructure

Conversation

@jschick04
Copy link
Copy Markdown
Collaborator

Summary

PR1 of a 3-PR sequence. Pure refactor — zero behavior changes. Lifts shareable components into the library and reorganizes both projects by category for Blazor convention alignment.

Changes

  1. Lifted 18 Tier A components + 3 base classes from MAUI head into EventLogExpert.Components library, organized by category:

    • Inputs/ — TextInput, ValueSelect, ValueSelectItem (BooleanSelect already there)
    • Modals/ — ModalHost, DebugLogModal, ReleaseNotesModal
    • Modals/Alerts/ — AlertModal, PromptModal
    • Filters/ — FilterRow, AdvancedFilterRow, FilterCacheRow, FilterCategoryEditor, FilterGroupRow, FilterRowChrome, SubFilterRow
    • Filters/Base/ — FilterRowBase, EditableFilterRowBase
    • Menu/ — MenuBar, MenuHost, MenuRenderer
    • Base/ — ModalBase
  2. Reorganized library existing files into Database/.

  3. Restructured MAUI head per Blazor convention; deleted Shared/:

    • Components/Layout/ — MainLayout, UnhandledExceptionHandler
    • Components/Sections/ — EventTable, DetailsPane, FilterPane, SplitLogTabPane, StatusBar
    • Components/Modals/ — SettingsModal (Tier B, lifts in PR2)
    • Components/Modals/Filters/ — FilterCacheModal, FilterGroup, FilterGroupModal, FilterGroupSection (Tier B, lift in PR2)
  4. Moved ExtensionMethods.cs from MAUI head to EventLogExpert.UI so lifted components can reach the extensions.

  5. Updated all consumers_Imports.razor (both projects), MauiProgram.cs, MauiMenuActionService.cs, Main.razor, MainLayout.razor, FilterPane.razor[.cs].

Tier B (deferred to PR2)

5 modals stay in the head this PR because they have Microsoft.Maui.Storage.FilePicker / Windows.Storage.Pickers dependencies: SettingsModal, FilterCacheModal, FilterGroup, FilterGroupModal, FilterGroupSection. They were re-foldered to Components/Modals/[Filters/] so PR2 can lift them by simply moving the folder and re-pointing namespaces.

Verification

  • dotnet build src/EventLogExpert.slnx0 warnings, 0 errors
  • dotnet testall 1,765 tests pass (Components 113 / EventDbTool 19 / Eventing 628 / UI 1,005)
  • All file moves used git mv — history preserved (rename similarity 80–100%)
  • Sweep for residual EventLogExpert.Shared.* references: 0 matches
  • Multi-model code review (Claude Opus + GPT-5.5) — both clean, no findings

@jschick04 jschick04 requested a review from a team as a code owner May 3, 2026 19:27
@jschick04 jschick04 marked this pull request as draft May 3, 2026 19:28
@jschick04 jschick04 requested a review from Copilot May 3, 2026 19:56
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Refactors the Blazor/MAUI UI layer by moving shared (“Tier A”) Razor components into the EventLogExpert.Components library and reorganizing both the library and MAUI head folders/namespaces to align with category-based conventions, updating imports/usings accordingly.

Changes:

  • Reorganized component namespaces and _Imports.razor to match new category folders (Inputs/Filters/Menu/Modals/Sections/Layout/Database).
  • Lifted/refoldered components and base classes into EventLogExpert.Components, updating consumers and services to reference new namespaces.
  • Moved shared extension methods into EventLogExpert.UI and widened visibility to support cross-assembly usage.

Reviewed changes

Copilot reviewed 62 out of 105 changed files in this pull request and generated no comments.

Show a summary per file
File Description
src/EventLogExpert/_Imports.razor Update usings for new namespaces
src/EventLogExpert/Services/MauiMenuActionService.cs Update modal/filter using directives
src/EventLogExpert/MauiProgram.cs Update alert modal namespace reference
src/EventLogExpert/Components/Sections/StatusBar.razor.css Add isolated styles for StatusBar
src/EventLogExpert/Components/Sections/StatusBar.razor.cs Move StatusBar into Sections namespace
src/EventLogExpert/Components/Sections/StatusBar.razor Add StatusBar markup in new folder
src/EventLogExpert/Components/Sections/SplitLogTabPane.razor.css Add isolated styles for tab pane
src/EventLogExpert/Components/Sections/SplitLogTabPane.razor.cs Move SplitLogTabPane into Sections namespace
src/EventLogExpert/Components/Sections/SplitLogTabPane.razor Add tab pane markup in new folder
src/EventLogExpert/Components/Sections/FilterPane.razor.css Add isolated styles for FilterPane
src/EventLogExpert/Components/Sections/FilterPane.razor.cs Update FilterPane namespace/usings
src/EventLogExpert/Components/Sections/FilterPane.razor Remove old Shared filters using
src/EventLogExpert/Components/Sections/EventTable.razor.css Add isolated styles for EventTable
src/EventLogExpert/Components/Sections/EventTable.razor.cs Move EventTable into Sections namespace
src/EventLogExpert/Components/Sections/EventTable.razor Add EventTable markup in new folder
src/EventLogExpert/Components/Sections/DetailsPane.razor.css Add isolated styles for DetailsPane
src/EventLogExpert/Components/Sections/DetailsPane.razor.cs Move DetailsPane into Sections namespace
src/EventLogExpert/Components/Sections/DetailsPane.razor Add DetailsPane markup in new folder
src/EventLogExpert/Components/Modals/SettingsModal.razor.css Add isolated styles for SettingsModal
src/EventLogExpert/Components/Modals/SettingsModal.razor.cs Update SettingsModal base/namespace
src/EventLogExpert/Components/Modals/SettingsModal.razor Remove old Shared base using
src/EventLogExpert/Components/Modals/Filters/FilterGroupSection.razor.cs Update FilterGroupSection namespace
src/EventLogExpert/Components/Modals/Filters/FilterGroupSection.razor Add FilterGroupSection markup
src/EventLogExpert/Components/Modals/Filters/FilterGroupModal.razor.cs Update FilterGroupModal base/namespace
src/EventLogExpert/Components/Modals/Filters/FilterGroupModal.razor Remove old Shared base using
src/EventLogExpert/Components/Modals/Filters/FilterGroup.razor.cs Update FilterGroup namespace
src/EventLogExpert/Components/Modals/Filters/FilterGroup.razor Add FilterGroup markup
src/EventLogExpert/Components/Modals/Filters/FilterCacheModal.razor.css Add isolated styles for FilterCacheModal
src/EventLogExpert/Components/Modals/Filters/FilterCacheModal.razor.cs Update FilterCacheModal base/namespace
src/EventLogExpert/Components/Modals/Filters/FilterCacheModal.razor Remove old Shared base using
src/EventLogExpert/Components/Layout/UnhandledExceptionHandler.razor.cs Move handler into Layout namespace
src/EventLogExpert/Components/Layout/UnhandledExceptionHandler.razor Add handler markup in new folder
src/EventLogExpert/Components/Layout/MainLayout.razor.css Add skip-link styling
src/EventLogExpert/Components/Layout/MainLayout.razor.cs Move MainLayout into Layout namespace
src/EventLogExpert/Components/Layout/MainLayout.razor Remove old Shared usings
src/EventLogExpert.UI/ExtensionMethods.cs Move/widen extensions for reuse
src/EventLogExpert.Components/_Imports.razor Add library-level component usings
src/EventLogExpert.Components/Modals/ReleaseNotesModal.razor.css Add isolated styles for ReleaseNotesModal
src/EventLogExpert.Components/Modals/ReleaseNotesModal.razor.cs Update ReleaseNotesModal base/namespace
src/EventLogExpert.Components/Modals/ReleaseNotesModal.razor Remove old Shared base using
src/EventLogExpert.Components/Modals/ModalHost.razor.cs Move ModalHost into Modals namespace
src/EventLogExpert.Components/Modals/ModalHost.razor Add ModalHost markup
src/EventLogExpert.Components/Modals/DebugLogModal.razor.cs Update DebugLogModal base/namespace
src/EventLogExpert.Components/Modals/DebugLogModal.razor Remove old Shared base using
src/EventLogExpert.Components/Modals/Alerts/PromptModal.razor.css Add isolated styles for PromptModal
src/EventLogExpert.Components/Modals/Alerts/PromptModal.razor.cs Move PromptModal into Modals.Alerts
src/EventLogExpert.Components/Modals/Alerts/PromptModal.razor Remove old Shared base using
src/EventLogExpert.Components/Modals/Alerts/AlertModal.razor.css Add isolated styles for AlertModal
src/EventLogExpert.Components/Modals/Alerts/AlertModal.razor.cs Move AlertModal into Modals.Alerts
src/EventLogExpert.Components/Modals/Alerts/AlertModal.razor Remove old Shared base using
src/EventLogExpert.Components/Menu/MenuRenderer.razor.css Add isolated styles for MenuRenderer
src/EventLogExpert.Components/Menu/MenuRenderer.razor.cs Move MenuRenderer into Menu namespace
src/EventLogExpert.Components/Menu/MenuRenderer.razor Add MenuRenderer markup
src/EventLogExpert.Components/Menu/MenuHost.razor.css Add isolated styles for MenuHost
src/EventLogExpert.Components/Menu/MenuHost.razor.cs Move MenuHost into Menu namespace
src/EventLogExpert.Components/Menu/MenuHost.razor Add MenuHost markup
src/EventLogExpert.Components/Menu/MenuBar.razor.css Add isolated styles for MenuBar
src/EventLogExpert.Components/Menu/MenuBar.razor.cs Move MenuBar into Menu namespace
src/EventLogExpert.Components/Menu/MenuBar.razor Add MenuBar markup
src/EventLogExpert.Components/Inputs/ValueSelectItem.razor.css Add isolated styles for ValueSelectItem
src/EventLogExpert.Components/Inputs/ValueSelectItem.razor.cs Move ValueSelectItem into Inputs namespace
src/EventLogExpert.Components/Inputs/ValueSelectItem.razor Add ValueSelectItem markup
src/EventLogExpert.Components/Inputs/ValueSelect.razor.css Add isolated styles for ValueSelect
src/EventLogExpert.Components/Inputs/ValueSelect.razor.cs Move ValueSelect into Inputs namespace
src/EventLogExpert.Components/Inputs/ValueSelect.razor Add ValueSelect markup
src/EventLogExpert.Components/Inputs/TextInput.razor.cs Move TextInput into Inputs namespace
src/EventLogExpert.Components/Inputs/TextInput.razor Add TextInput markup
src/EventLogExpert.Components/Inputs/BooleanSelect.razor.css Add isolated styles for BooleanSelect
src/EventLogExpert.Components/Inputs/BooleanSelect.razor.cs Move BooleanSelect into Inputs namespace
src/EventLogExpert.Components/Inputs/BooleanSelect.razor Add BooleanSelect markup
src/EventLogExpert.Components/Filters/SubFilterRow.razor.cs Move SubFilterRow + base namespace update
src/EventLogExpert.Components/Filters/SubFilterRow.razor Remove old Shared base using
src/EventLogExpert.Components/Filters/FilterRowChrome.razor.css Add isolated styles for FilterRowChrome
src/EventLogExpert.Components/Filters/FilterRowChrome.razor.cs Move FilterRowChrome into Filters namespace
src/EventLogExpert.Components/Filters/FilterRowChrome.razor Add FilterRowChrome markup
src/EventLogExpert.Components/Filters/FilterRow.razor.cs Move FilterRow + base namespace update
src/EventLogExpert.Components/Filters/FilterRow.razor Remove old Shared base using
src/EventLogExpert.Components/Filters/FilterGroupRow.razor.css Add isolated styles for FilterGroupRow
src/EventLogExpert.Components/Filters/FilterGroupRow.razor.cs Move FilterGroupRow + base namespace update
src/EventLogExpert.Components/Filters/FilterGroupRow.razor Remove old Shared base using
src/EventLogExpert.Components/Filters/FilterCategoryEditor.razor.cs Move FilterCategoryEditor into Filters namespace
src/EventLogExpert.Components/Filters/FilterCategoryEditor.razor Add FilterCategoryEditor markup
src/EventLogExpert.Components/Filters/FilterCacheRow.razor.css Add isolated styles for FilterCacheRow
src/EventLogExpert.Components/Filters/FilterCacheRow.razor.cs Move FilterCacheRow + base namespace update
src/EventLogExpert.Components/Filters/FilterCacheRow.razor Remove old Shared base using
src/EventLogExpert.Components/Filters/Base/FilterRowBase.cs Move FilterRowBase into Filters.Base
src/EventLogExpert.Components/Filters/Base/EditableFilterRowBase.cs Move EditableFilterRowBase into Filters.Base
src/EventLogExpert.Components/Filters/AdvancedFilterRow.razor.cs Move AdvancedFilterRow + base namespace update
src/EventLogExpert.Components/Filters/AdvancedFilterRow.razor Remove old Shared base using
src/EventLogExpert.Components/Database/SettingsUpgradeProgressBanner.razor.css Add isolated styles for progress banner
src/EventLogExpert.Components/Database/SettingsUpgradeProgressBanner.razor.cs Move banner into Database namespace
src/EventLogExpert.Components/Database/SettingsUpgradeProgressBanner.razor Remove explicit @namespace directive
src/EventLogExpert.Components/Database/DatabaseRecoveryHost.razor.cs Move recovery host into Database namespace
src/EventLogExpert.Components/Database/DatabaseRecoveryHost.razor Add recovery host markup
src/EventLogExpert.Components/Database/DatabaseRecoveryDialog.razor.css Add isolated styles for recovery dialog
src/EventLogExpert.Components/Database/DatabaseRecoveryDialog.razor.cs Move recovery dialog into Database namespace
src/EventLogExpert.Components/Database/DatabaseRecoveryDialog.razor Add recovery dialog markup
src/EventLogExpert.Components/Database/DatabaseEntryRow.razor.css Add isolated styles for database entry row
src/EventLogExpert.Components/Database/DatabaseEntryRow.razor.cs Move entry row into Database namespace
src/EventLogExpert.Components/Database/DatabaseEntryRow.razor Add entry row markup
src/EventLogExpert.Components/Base/ModalBase.cs Move ModalBase into Components.Base and widen method access
src/EventLogExpert.Components.Tests/Database/SettingsUpgradeProgressBannerTests.cs Update test namespace/usings for Database components
src/EventLogExpert.Components.Tests/Database/DatabaseRecoveryHostTests.cs Update test namespace/usings for Database components
src/EventLogExpert.Components.Tests/Database/DatabaseRecoveryDialogTests.cs Update test namespace/usings for Database components
src/EventLogExpert.Components.Tests/Database/DatabaseEntryRowTests.cs Update test namespace/usings for Database components

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@jschick04 jschick04 marked this pull request as ready for review May 3, 2026 20:03
@jschick04 jschick04 marked this pull request as draft May 4, 2026 02:08
@jschick04 jschick04 force-pushed the jschick/db-upgrade branch 3 times, most recently from 2958101 to c145edc Compare May 4, 2026 16:40
Base automatically changed from jschick/db-upgrade to main May 4, 2026 17:14
@jschick04 jschick04 force-pushed the jschick/components-lift-and-restructure branch from d4c1edc to f90a81d Compare May 4, 2026 17:26
@jschick04 jschick04 marked this pull request as ready for review May 4, 2026 17:29
Copilot AI review requested due to automatic review settings May 4, 2026 17:29
@jschick04 jschick04 merged commit c13185d into main May 4, 2026
6 checks passed
@jschick04 jschick04 deleted the jschick/components-lift-and-restructure branch May 4, 2026 17:37
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 62 out of 105 changed files in this pull request and generated no new comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants