MovieCatalog

Форк
0
67 строк · 1.5 Кб
1
//
2
//  FormItemBackground.swift
3
//  Movies
4
//
5
//  Created by Ivan Semenov on 27.10.2023.
6
//
7

8
import SwiftUI
9

10
struct FormItemBackgroundViewModifier: ViewModifier {
11

12
    enum Style {
13
        case `default`
14
        case error
15

16
        var tintColor: Color {
17
            switch self {
18
            case .default: .appAccent
19
            case .error: .appLightGray
20
            }
21
        }
22

23
        var borderColor: Color {
24
            switch self {
25
            case .default: .appGray
26
            case .error: .red
27
            }
28
        }
29

30
        var backgroundColor: Color {
31
            switch self {
32
            case .default:
33
                return .clear
34
            case .error:
35
                return .red.opacity(Constants.errorOpacity)
36
            }
37
        }
38
    }
39

40
    let style: Style
41

42
    func body(content: Content) -> some View {
43
        content
44
            .tintColor(style.tintColor)
45
            .background(background)
46
    }
47

48
    private enum Constants {
49
        static let cornerRadius: CGFloat = 10
50
        static let errorOpacity: CGFloat = 0.1
51
    }
52

53
    @ViewBuilder
54
    private var background: some View {
55
        let rectangle = RoundedRectangle(cornerRadius: Constants.cornerRadius)
56

57
        rectangle
58
            .stroke(style.borderColor)
59
            .background(rectangle.fill(style.backgroundColor))
60
    }
61
}
62

63
extension View {
64
    func formItemBackground(_ style: FormItemBackgroundViewModifier.Style = .default) -> some View {
65
        modifier(FormItemBackgroundViewModifier(style: style))
66
    }
67
}
68

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.