Skip to content

feat(ios): add iPad two-column layout with table sidebar and data detail#691

Open
datlechin wants to merge 1 commit intomainfrom
feat/ios-ipad-layout
Open

feat(ios): add iPad two-column layout with table sidebar and data detail#691
datlechin wants to merge 1 commit intomainfrom
feat/ios-ipad-layout

Conversation

@datlechin
Copy link
Copy Markdown
Collaborator

Summary

On iPad, ConnectedView now shows a two-column split view (table list sidebar + data browser detail) instead of the single-column segmented control layout. iPhone layout is unchanged.

iPad Layout

  • Left column (sidebar): Table list with search, context menus, pull-to-refresh
  • Right column (detail): Data browser for selected table, or query editor
  • Bottom bar: Segmented control to switch between Tables/Query mode
  • Uses .balanced NavigationSplitView style (both columns visible in landscape)

iPhone Layout

  • Unchanged. Segmented control at top, push navigation to DataBrowserView.

Architecture

  • ConnectedView checks horizontalSizeClass and renders iPadContent or iPhoneContent
  • TableListView accepts optional selectedTable: Binding<TableInfo?>? parameter
    • iPad: Uses List(selection:) with .sidebar style (selection-based)
    • iPhone: Uses NavigationLink(value:) with .insetGrouped style (push-based)
  • Extracted reusable helpers: tabPicker, databaseSwitcherMenu, schemaSwitcherMenu, tableContextMenu, sectionHeader
  • All existing modifiers preserved (haptics, alerts, lifecycle, Handoff, state restoration)

Files Changed (2)

File Changes
ConnectedView.swift Size class detection, iPadContent/iPhoneContent split, bottom segmented picker for iPad
TableListView.swift Optional selection binding, dual mode (sidebar vs push), extracted shared helpers

Test plan

  • iPad landscape: table list sidebar + data browser side-by-side
  • iPad portrait: data browser with overlay sidebar
  • iPad: tap table in sidebar, data shows on right
  • iPad: switch to Query tab, editor fills detail area
  • iPad: long-press table in sidebar, context menu works
  • iPad: search tables in sidebar
  • iPad: pull-to-refresh in sidebar
  • iPhone: unchanged, segmented control + push navigation
  • iPhone: tap table, DataBrowserView pushes full-screen
  • Rotation: layout adapts between portrait and landscape

@datlechin datlechin force-pushed the feat/ios-ipad-layout branch 9 times, most recently from 00f7bbd to 7658170 Compare April 11, 2026 20:08
@datlechin datlechin force-pushed the feat/ios-ipad-layout branch from 7658170 to 7a64252 Compare April 11, 2026 20:12
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.

1 participant