jellyflood/Shared/Extensions/ViewExtensions/Modifiers/ScrollIfLargerThanContainerModifier.swift
Glenn Hevey e6cc848138
[tvOS] Move AddUserButton to the bottom bar of Select User View (#1468)
* Added add user button to select user bottom bar

* Replaced AddUserButton with NoUserView

This commit removes the AddUserButton as it is no longer required.
Also when no user is logged in the GridView shows a new NoUserView

* Added multi server support

- When no user is logged in. Grid view shows the original AddUserButton.
- When there is a logged in user AddUserButton is replaced with AddUserBottomButton
- AddUserBottomButton will show a menu when in all server mode (just like AddUserbutton)
- Removed NoUserView as it isn't required anymore
- changed bottom bar layout to  allow for a larger service selection button

* cleaned up AddUserBottomButton

* cleaned up AddUserBottomButton

fixed formatting

* cleanup

* fix conflict

* cleaned up unused localisation

* cleanup

* removed debug background

---------

Co-authored-by: Ethan Pippin <ethanpippin2343@gmail.com>
2025-04-06 16:51:44 -04:00

43 lines
1.1 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 SwiftUI
// TODO: both axes
// TODO: add scrollClipDisabled() to iOS when iOS 15 dropped
struct ScrollIfLargerThanContainerModifier: ViewModifier {
@State
private var contentSize: CGSize = .zero
@State
private var layoutSize: CGSize = .zero
let padding: CGFloat
func body(content: Content) -> some View {
AlternateLayoutView {
Color.clear
.trackingSize($layoutSize)
} content: {
ScrollView {
content
.trackingSize($contentSize)
}
#if os(tvOS)
.scrollClipDisabled()
#endif
.frame(maxHeight: contentSize.height >= layoutSize.height ? .infinity : contentSize.height)
.backport
.scrollDisabled(contentSize.height < layoutSize.height)
.backport
.scrollIndicators(.never)
}
}
}