# CutBox.app

## Coverage Report

#### Created: 2024-03-12 03:40

    .../Source/Components/ValidIndicatorTextField.swift

    Line

    Count

    Source (jump to first uncovered line)

    1

    //

    2

    //  ValidIndicatorTextField.swift

    3

    //  CutBox

    4

    //

    5

    //  Created by Jason Milkins on 12/8/23.

    6

    //  Copyright © 2023 ocodo. All rights reserved.

    7

    //

    8

    9

    import Cocoa

    10

    import RxSwift

    11

    12

    /// Setting isValid updates the

    13

    /// field border color (green/red)

    14

    ///

    15

    /// Validation logic handled externally

    16

    class ValidIndicatorTextField: TextFieldKeyUpRxStream {

    17

        var isValid: Bool = false {

    18

    98

            didSet {

    19

    98

                updateBorderColor()

    20

    98

            }

    21

        }

    22

    23

    2

        override init(frame frameRect: NSRect) {

    24

    2

            super.init(frame: frameRect)

    25

    2

        }

    26

    27

    48

        required init?(coder: NSCoder) {

    28

    48

            super.init(coder: coder)

    29

    48

            self.cell?.focusRingType = .none

    30

    48

        }

    31

    32

    0

        override func draw(_ dirtyRect: NSRect) {

    33

    0

            super.draw(dirtyRect)

    34

    0

    35

    0

            if let fieldLayer = self.layer {

    36

    0

                if stringValue.isEmpty {

    37

    0

                    fieldLayer.borderColor = NSColor

    38

    0

                        .white

    39

    0

                        .withAlphaComponent(0.15).cgColor

    40

    0

                }

    41

    0

                fieldLayer.borderWidth = 1

    42

    0

                fieldLayer.cornerRadius = 0

    43

    0

                fieldLayer.backgroundColor = NSColor

    44

    0

                    .black

    45

    0

                    .withAlphaComponent(0.25).cgColor

    46

    0

            }

    47

    0

        }

    48

    49

    98

        private func updateBorderColor() {

    50

    98

            let green = NSColor.green.withAlphaComponent(0.15).cgColor

    51

    98

            let red = NSColor.red.withAlphaComponent(0.15).cgColor

    52

    98

    53

    98

            if let fieldLayer = self.layer {

    54

    2

                fieldLayer.borderColor = isValid ? green : red

    55

    2

                fieldLayer.borderWidth = 1

    56

    2

                fieldLayer.cornerRadius = 0

    57

    98

            }

    58

    98

        }

    59

    }