jellyflood/jellypig iOS/Components/LetterPickerBar/LetterPickerBar.swift

50 lines
1.2 KiB
Swift

//
// Swiftfin is subject to the terms of the Mozilla Public
// License, v2.0. If a copy of the MPL was not distributed with this
// file, you can obtain one at https://mozilla.org/MPL/2.0/.
//
// Copyright (c) 2025 Jellyfin & Jellyfin Contributors
//
import Defaults
import SwiftUI
struct LetterPickerBar: View {
@ObservedObject
var viewModel: FilterViewModel
// MARK: - Body
@ViewBuilder
var body: some View {
VStack(spacing: 0) {
Spacer()
ForEach(ItemLetter.allCases, id: \.hashValue) { filterLetter in
LetterPickerButton(
letter: filterLetter,
size: LetterPickerBar.size,
viewModel: viewModel
)
.environment(\.isSelected, viewModel.currentFilters.letter.contains(filterLetter))
}
Spacer()
}
.scrollIfLargerThanContainer()
.frame(width: LetterPickerBar.size, alignment: .center)
}
// MARK: - Letter Button Size
static var size: CGFloat {
String().height(
withConstrainedWidth: CGFloat.greatestFiniteMagnitude,
font: UIFont.preferredFont(
forTextStyle: .headline
)
)
}
}