git.iko.soy/parseable-macos
on master help sign in
Refactor connection selector to use Picker instead of Menu (#23)
b3a700aiko
ParseableViewer/Views/SidebarView.swift+15−13
@@ -208,17 +208,23 @@ struct ConnectionStatusView: View {
208 .fill(appState.isConnected ? .green : .red)
208 .fill(appState.isConnected ? .green : .red)
209 .frame(width: 8, height: 8)
209 .frame(width: 8, height: 8)
210 .accessibilityLabel(appState.isConnected ? "Connected" : "Disconnected")
210 .accessibilityLabel(appState.isConnected ? "Connected" : "Disconnected")
211+ Picker("Connection", selection: Binding<UUID>(
211− Text(connection.name)
212+ get: { connection.id },
212− .font(.headline)
213+ set: { newID in
213− .lineLimit(1)
214− Spacer()
215− Menu {
216− ForEach(appState.connections) { conn in
214+ if let conn = appState.connections.first(where: { $0.id == newID }) {
217− Button(conn.name) {
218 Task { await appState.connect(to: conn) }
215 Task { await appState.connect(to: conn) }
219 }
216 }
220 }
217 }
221− Divider()
218+ )) {
219+ ForEach(appState.connections) { conn in
220+ Text(conn.name).tag(conn.id)
221+ }
222+ }
223+ .labelsHidden()
224+ .pickerStyle(.menu)
225+ .accessibilityLabel("Connection selector")
226+ Spacer()
227+ Menu {
222 Button("Add Connection...") {
228 Button("Add Connection...") {
223 appState.editingConnection = nil
229 appState.editingConnection = nil
224 appState.showConnectionSheet = true
230 appState.showConnectionSheet = true
@@ -232,16 +238,12 @@ struct ConnectionStatusView: View {
232 appState.disconnect()
238 appState.disconnect()
233 }
239 }
234 } label: {
240 } label: {
235− Image(systemName: "ellipsis.circle")
241+ Image(systemName: "gear")
236 }
242 }
237 .menuStyle(.borderlessButton)
243 .menuStyle(.borderlessButton)
238 .frame(width: 24)
244 .frame(width: 24)
239 .accessibilityLabel("Connection options")
245 .accessibilityLabel("Connection options")
240 }
246 }
241− Text(connection.url)
242− .font(.caption)
243− .foregroundStyle(.secondary)
244− .lineLimit(1)
245 } else if appState.isConnecting {
247 } else if appState.isConnecting {
246 HStack {
248 HStack {
247 ProgressView()
249 ProgressView()