Skip to content

tokijh/ViewCondition

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ViewCondition

✨ Super sweet syntactic sugar for SwiftUI.View initializers.

At a Glance

struct BorderTextView: View {
  var color: Color?

  @ViewBuilder
  var body: some View {
    Text("Hello")
      .if(let: color) {
        $0.border($1)
      }
  }
}

This is equivalent to:

struct BorderTextView: View {
  var color: Color?

  @ViewBuilder
  var body: some View {
    let text = Text("Hello")
    if let color = color {
      text.border(color) // border doesn't allow optional
    } else {
      text
    }
  }
}

Operators

if let

let color: Color?
Text("Hello")
  .if(let: color) {
    $0.border($1)
  }

if

let text = ""
Text("Hello")
  .if(text == "Hello") {
    $0.bold()
  }

ifNot

let text = ""
Text("Hello")
  .ifNot(text == "Hello") {
    $0.bold()
  }

then

let text = ""
Text("Hello")
  .then {
    if text == "Hello" {
      $0.bold()
    } else {
      $0.italic()
    }
  }

⚠️ Becareful

If you don't return view in else, the view may not come out.

Installation

Using Swift Package Manager:

import PackageDescription

let package = Package(
  name: "MyAwesomeApp",
  dependencies: [
    .package(url: "https://github.com/tokijh/ViewCondition.git", from: "1.0.0")
  ]
)

Special thanks to..

License

ViewCondition is under MIT license. See the LICENSE file for more info.

About

✨ Super sweet syntactic sugar for SwiftUI.View initializers.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages