Skip to content

tokijh/ViewCondition

main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 

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