├── .gitignore ├── .swiftpm └── xcode │ └── package.xcworkspace │ └── contents.xcworkspacedata ├── .travis.yml ├── Example ├── FloatingLabelTextFieldSwiftUI.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── xcshareddata │ │ └── xcschemes │ │ └── FloatingLabelTextFieldSwiftUI-Example.xcscheme ├── FloatingLabelTextFieldSwiftUI.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── FloatingLabelTextFieldSwiftUI │ ├── AppDelegate.swift │ ├── Base.lproj │ │ └── LaunchScreen.xib │ ├── ContentView.swift │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ ├── eye_close.imageset │ │ │ ├── Contents.json │ │ │ ├── eye_close.png │ │ │ ├── eye_close@2x.png │ │ │ └── eye_close@3x.png │ │ └── eye_show.imageset │ │ │ ├── Contents.json │ │ │ ├── eye_show.png │ │ │ ├── eye_show@2x.png │ │ │ └── eye_show@3x.png │ ├── Info.plist │ └── SceneDelegate.swift ├── Podfile ├── Podfile.lock ├── Pods │ ├── Local Podspecs │ │ └── FloatingLabelTextFieldSwiftUI.podspec.json │ ├── Manifest.lock │ ├── Pods.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── Target Support Files │ │ ├── FloatingLabelTextFieldSwiftUI │ │ ├── FloatingLabelTextFieldSwiftUI-Info.plist │ │ ├── FloatingLabelTextFieldSwiftUI-dummy.m │ │ ├── FloatingLabelTextFieldSwiftUI-prefix.pch │ │ ├── FloatingLabelTextFieldSwiftUI-umbrella.h │ │ ├── FloatingLabelTextFieldSwiftUI.debug.xcconfig │ │ ├── FloatingLabelTextFieldSwiftUI.modulemap │ │ └── FloatingLabelTextFieldSwiftUI.release.xcconfig │ │ ├── Pods-FloatingLabelTextFieldSwiftUI_Example │ │ ├── Pods-FloatingLabelTextFieldSwiftUI_Example-Info.plist │ │ ├── Pods-FloatingLabelTextFieldSwiftUI_Example-acknowledgements.markdown │ │ ├── Pods-FloatingLabelTextFieldSwiftUI_Example-acknowledgements.plist │ │ ├── Pods-FloatingLabelTextFieldSwiftUI_Example-dummy.m │ │ ├── Pods-FloatingLabelTextFieldSwiftUI_Example-frameworks.sh │ │ ├── Pods-FloatingLabelTextFieldSwiftUI_Example-umbrella.h │ │ ├── Pods-FloatingLabelTextFieldSwiftUI_Example.debug.xcconfig │ │ ├── Pods-FloatingLabelTextFieldSwiftUI_Example.modulemap │ │ └── Pods-FloatingLabelTextFieldSwiftUI_Example.release.xcconfig │ │ └── Pods-FloatingLabelTextFieldSwiftUI_Tests │ │ ├── Pods-FloatingLabelTextFieldSwiftUI_Tests-Info.plist │ │ ├── Pods-FloatingLabelTextFieldSwiftUI_Tests-acknowledgements.markdown │ │ ├── Pods-FloatingLabelTextFieldSwiftUI_Tests-acknowledgements.plist │ │ ├── Pods-FloatingLabelTextFieldSwiftUI_Tests-dummy.m │ │ ├── Pods-FloatingLabelTextFieldSwiftUI_Tests-umbrella.h │ │ ├── Pods-FloatingLabelTextFieldSwiftUI_Tests.debug.xcconfig │ │ ├── Pods-FloatingLabelTextFieldSwiftUI_Tests.modulemap │ │ └── Pods-FloatingLabelTextFieldSwiftUI_Tests.release.xcconfig └── Tests │ ├── Info.plist │ └── Tests.swift ├── FloatingLabelTextFieldSwiftUI.podspec ├── FloatingLabelTextFieldSwiftUI ├── Assets │ └── .gitkeep └── Classes │ └── .gitkeep ├── Graphics ├── FloatingLabelTextFieldSwiftUI.gif ├── email_validation.gif ├── left-right-view.gif ├── name_validation.gif ├── normal_text_field.gif └── secure_text_field.gif ├── LICENSE ├── Package.swift ├── README.md ├── Sources └── FloatingLabelTextFieldSwiftUI │ ├── Extensions │ ├── String+Extension.swift │ ├── TextAlignment+Extension.swift │ ├── UIControl+Extension.swift │ ├── UIResponder+Extesnion.swift │ ├── UITextField+Extension.swift │ └── View+Extension.swift │ ├── FloatingLabelTextField.swift │ ├── ObservableObject │ └── ObservableObject.swift │ └── TextFieldValidator │ └── Validator.swift ├── Tests ├── FloatingLabelTextFieldSwiftUITests │ ├── FloatingLabelTextFieldSwiftUITests.swift │ └── XCTestManifests.swift └── LinuxMain.swift └── _Pods.xcodeproj /.gitignore: -------------------------------------------------------------------------------- 1 | # OS X 2 | .DS_Store 3 | 4 | # Xcode 5 | build/ 6 | *.pbxuser 7 | !default.pbxuser 8 | *.mode1v3 9 | !default.mode1v3 10 | *.mode2v3 11 | !default.mode2v3 12 | *.perspectivev3 13 | !default.perspectivev3 14 | xcuserdata/ 15 | *.xccheckout 16 | profile 17 | *.moved-aside 18 | DerivedData 19 | *.hmap 20 | *.ipa 21 | 22 | # Bundler 23 | .bundle 24 | 25 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 26 | # Carthage/Checkouts 27 | 28 | Carthage/Build 29 | 30 | # We recommend against adding the Pods directory to your .gitignore. However 31 | # you should judge for yourself, the pros and cons are mentioned at: 32 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control 33 | # 34 | # Note: if you ignore the Pods directory, make sure to uncomment 35 | # `pod install` in .travis.yml 36 | # 37 | # Pods/ 38 | -------------------------------------------------------------------------------- /.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | # references: 2 | # * https://www.objc.io/issues/6-build-tools/travis-ci/ 3 | # * https://github.com/supermarin/xcpretty#usage 4 | 5 | osx_image: xcode7.3 6 | language: objective-c 7 | # cache: cocoapods 8 | # podfile: Example/Podfile 9 | # before_install: 10 | # - gem install cocoapods # Since Travis is not always on latest version 11 | # - pod install --project-directory=Example 12 | script: 13 | - set -o pipefail && xcodebuild test -enableCodeCoverage YES -workspace Example/FloatingLabelTextFieldSwiftUI.xcworkspace -scheme FloatingLabelTextFieldSwiftUI-Example -sdk iphonesimulator9.3 ONLY_ACTIVE_ARCH=NO | xcpretty 14 | - pod lib lint 15 | -------------------------------------------------------------------------------- /Example/FloatingLabelTextFieldSwiftUI.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 5D2E0F392469AF5A008BBE68 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D2E0F382469AF5A008BBE68 /* ContentView.swift */; }; 11 | 5D2E0F3B2469B017008BBE68 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D2E0F3A2469B017008BBE68 /* SceneDelegate.swift */; }; 12 | 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD51AFB9204008FA782 /* AppDelegate.swift */; }; 13 | 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDC1AFB9204008FA782 /* Images.xcassets */; }; 14 | 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */; }; 15 | 607FACEC1AFB9204008FA782 /* Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACEB1AFB9204008FA782 /* Tests.swift */; }; 16 | 7F396E48226F9FE209BB86CD /* Pods_FloatingLabelTextFieldSwiftUI_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D09E579A9A53332E181158A7 /* Pods_FloatingLabelTextFieldSwiftUI_Tests.framework */; }; 17 | A868B6088A44A7BAC00C6847 /* Pods_FloatingLabelTextFieldSwiftUI_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DD73685EEA1A12C2CDDE2B3 /* Pods_FloatingLabelTextFieldSwiftUI_Example.framework */; }; 18 | /* End PBXBuildFile section */ 19 | 20 | /* Begin PBXContainerItemProxy section */ 21 | 607FACE61AFB9204008FA782 /* PBXContainerItemProxy */ = { 22 | isa = PBXContainerItemProxy; 23 | containerPortal = 607FACC81AFB9204008FA782 /* Project object */; 24 | proxyType = 1; 25 | remoteGlobalIDString = 607FACCF1AFB9204008FA782; 26 | remoteInfo = FloatingLabelTextFieldSwiftUI; 27 | }; 28 | /* End PBXContainerItemProxy section */ 29 | 30 | /* Begin PBXFileReference section */ 31 | 1DAF48517260411B42D760B3 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; 32 | 1DD73685EEA1A12C2CDDE2B3 /* Pods_FloatingLabelTextFieldSwiftUI_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_FloatingLabelTextFieldSwiftUI_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 33 | 5D2E0F382469AF5A008BBE68 /* ContentView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; 34 | 5D2E0F3A2469B017008BBE68 /* SceneDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; 35 | 607FACD01AFB9204008FA782 /* FloatingLabelTextFieldSwiftUI_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FloatingLabelTextFieldSwiftUI_Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; 36 | 607FACD41AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 37 | 607FACD51AFB9204008FA782 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 38 | 607FACDC1AFB9204008FA782 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 39 | 607FACDF1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; 40 | 607FACE51AFB9204008FA782 /* FloatingLabelTextFieldSwiftUI_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FloatingLabelTextFieldSwiftUI_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 41 | 607FACEA1AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 42 | 607FACEB1AFB9204008FA782 /* Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests.swift; sourceTree = ""; }; 43 | 7C8A588D4B53B8A064A89A8C /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; 44 | 833A7BF5E04083B3ED4BCD47 /* Pods-FloatingLabelTextFieldSwiftUI_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FloatingLabelTextFieldSwiftUI_Tests.release.xcconfig"; path = "Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Tests/Pods-FloatingLabelTextFieldSwiftUI_Tests.release.xcconfig"; sourceTree = ""; }; 45 | 869E8BF7135C205B543CA458 /* Pods-FloatingLabelTextFieldSwiftUI_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FloatingLabelTextFieldSwiftUI_Example.debug.xcconfig"; path = "Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Example/Pods-FloatingLabelTextFieldSwiftUI_Example.debug.xcconfig"; sourceTree = ""; }; 46 | B389C0DC0FC117DF19AD04B7 /* Pods-FloatingLabelTextFieldSwiftUI_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FloatingLabelTextFieldSwiftUI_Example.release.xcconfig"; path = "Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Example/Pods-FloatingLabelTextFieldSwiftUI_Example.release.xcconfig"; sourceTree = ""; }; 47 | C7B7674DF740DD3A2D3347CE /* Pods-FloatingLabelTextFieldSwiftUI_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FloatingLabelTextFieldSwiftUI_Tests.debug.xcconfig"; path = "Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Tests/Pods-FloatingLabelTextFieldSwiftUI_Tests.debug.xcconfig"; sourceTree = ""; }; 48 | D09E579A9A53332E181158A7 /* Pods_FloatingLabelTextFieldSwiftUI_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_FloatingLabelTextFieldSwiftUI_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 49 | D740010D6509D2CE52A2E063 /* FloatingLabelTextFieldSwiftUI.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = FloatingLabelTextFieldSwiftUI.podspec; path = ../FloatingLabelTextFieldSwiftUI.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 50 | /* End PBXFileReference section */ 51 | 52 | /* Begin PBXFrameworksBuildPhase section */ 53 | 607FACCD1AFB9204008FA782 /* Frameworks */ = { 54 | isa = PBXFrameworksBuildPhase; 55 | buildActionMask = 2147483647; 56 | files = ( 57 | A868B6088A44A7BAC00C6847 /* Pods_FloatingLabelTextFieldSwiftUI_Example.framework in Frameworks */, 58 | ); 59 | runOnlyForDeploymentPostprocessing = 0; 60 | }; 61 | 607FACE21AFB9204008FA782 /* Frameworks */ = { 62 | isa = PBXFrameworksBuildPhase; 63 | buildActionMask = 2147483647; 64 | files = ( 65 | 7F396E48226F9FE209BB86CD /* Pods_FloatingLabelTextFieldSwiftUI_Tests.framework in Frameworks */, 66 | ); 67 | runOnlyForDeploymentPostprocessing = 0; 68 | }; 69 | /* End PBXFrameworksBuildPhase section */ 70 | 71 | /* Begin PBXGroup section */ 72 | 1FCC8E025A5578CE19888A84 /* Pods */ = { 73 | isa = PBXGroup; 74 | children = ( 75 | 869E8BF7135C205B543CA458 /* Pods-FloatingLabelTextFieldSwiftUI_Example.debug.xcconfig */, 76 | B389C0DC0FC117DF19AD04B7 /* Pods-FloatingLabelTextFieldSwiftUI_Example.release.xcconfig */, 77 | C7B7674DF740DD3A2D3347CE /* Pods-FloatingLabelTextFieldSwiftUI_Tests.debug.xcconfig */, 78 | 833A7BF5E04083B3ED4BCD47 /* Pods-FloatingLabelTextFieldSwiftUI_Tests.release.xcconfig */, 79 | ); 80 | path = Pods; 81 | sourceTree = ""; 82 | }; 83 | 2CA25EF8E71A6B2A850D343E /* Frameworks */ = { 84 | isa = PBXGroup; 85 | children = ( 86 | 1DD73685EEA1A12C2CDDE2B3 /* Pods_FloatingLabelTextFieldSwiftUI_Example.framework */, 87 | D09E579A9A53332E181158A7 /* Pods_FloatingLabelTextFieldSwiftUI_Tests.framework */, 88 | ); 89 | name = Frameworks; 90 | sourceTree = ""; 91 | }; 92 | 607FACC71AFB9204008FA782 = { 93 | isa = PBXGroup; 94 | children = ( 95 | 607FACF51AFB993E008FA782 /* Podspec Metadata */, 96 | 607FACD21AFB9204008FA782 /* Example for FloatingLabelTextFieldSwiftUI */, 97 | 607FACE81AFB9204008FA782 /* Tests */, 98 | 607FACD11AFB9204008FA782 /* Products */, 99 | 1FCC8E025A5578CE19888A84 /* Pods */, 100 | 2CA25EF8E71A6B2A850D343E /* Frameworks */, 101 | ); 102 | sourceTree = ""; 103 | }; 104 | 607FACD11AFB9204008FA782 /* Products */ = { 105 | isa = PBXGroup; 106 | children = ( 107 | 607FACD01AFB9204008FA782 /* FloatingLabelTextFieldSwiftUI_Example.app */, 108 | 607FACE51AFB9204008FA782 /* FloatingLabelTextFieldSwiftUI_Tests.xctest */, 109 | ); 110 | name = Products; 111 | sourceTree = ""; 112 | }; 113 | 607FACD21AFB9204008FA782 /* Example for FloatingLabelTextFieldSwiftUI */ = { 114 | isa = PBXGroup; 115 | children = ( 116 | 607FACD51AFB9204008FA782 /* AppDelegate.swift */, 117 | 5D2E0F3A2469B017008BBE68 /* SceneDelegate.swift */, 118 | 5D2E0F382469AF5A008BBE68 /* ContentView.swift */, 119 | 607FACDC1AFB9204008FA782 /* Images.xcassets */, 120 | 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */, 121 | 607FACD31AFB9204008FA782 /* Supporting Files */, 122 | ); 123 | name = "Example for FloatingLabelTextFieldSwiftUI"; 124 | path = FloatingLabelTextFieldSwiftUI; 125 | sourceTree = ""; 126 | }; 127 | 607FACD31AFB9204008FA782 /* Supporting Files */ = { 128 | isa = PBXGroup; 129 | children = ( 130 | 607FACD41AFB9204008FA782 /* Info.plist */, 131 | ); 132 | name = "Supporting Files"; 133 | sourceTree = ""; 134 | }; 135 | 607FACE81AFB9204008FA782 /* Tests */ = { 136 | isa = PBXGroup; 137 | children = ( 138 | 607FACEB1AFB9204008FA782 /* Tests.swift */, 139 | 607FACE91AFB9204008FA782 /* Supporting Files */, 140 | ); 141 | path = Tests; 142 | sourceTree = ""; 143 | }; 144 | 607FACE91AFB9204008FA782 /* Supporting Files */ = { 145 | isa = PBXGroup; 146 | children = ( 147 | 607FACEA1AFB9204008FA782 /* Info.plist */, 148 | ); 149 | name = "Supporting Files"; 150 | sourceTree = ""; 151 | }; 152 | 607FACF51AFB993E008FA782 /* Podspec Metadata */ = { 153 | isa = PBXGroup; 154 | children = ( 155 | D740010D6509D2CE52A2E063 /* FloatingLabelTextFieldSwiftUI.podspec */, 156 | 7C8A588D4B53B8A064A89A8C /* README.md */, 157 | 1DAF48517260411B42D760B3 /* LICENSE */, 158 | ); 159 | name = "Podspec Metadata"; 160 | sourceTree = ""; 161 | }; 162 | /* End PBXGroup section */ 163 | 164 | /* Begin PBXNativeTarget section */ 165 | 607FACCF1AFB9204008FA782 /* FloatingLabelTextFieldSwiftUI_Example */ = { 166 | isa = PBXNativeTarget; 167 | buildConfigurationList = 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "FloatingLabelTextFieldSwiftUI_Example" */; 168 | buildPhases = ( 169 | 26FD364B23EFC5B6E413DA7F /* [CP] Check Pods Manifest.lock */, 170 | 607FACCC1AFB9204008FA782 /* Sources */, 171 | 607FACCD1AFB9204008FA782 /* Frameworks */, 172 | 607FACCE1AFB9204008FA782 /* Resources */, 173 | 7F374F6697B882EBCA16CACA /* [CP] Embed Pods Frameworks */, 174 | ); 175 | buildRules = ( 176 | ); 177 | dependencies = ( 178 | ); 179 | name = FloatingLabelTextFieldSwiftUI_Example; 180 | productName = FloatingLabelTextFieldSwiftUI; 181 | productReference = 607FACD01AFB9204008FA782 /* FloatingLabelTextFieldSwiftUI_Example.app */; 182 | productType = "com.apple.product-type.application"; 183 | }; 184 | 607FACE41AFB9204008FA782 /* FloatingLabelTextFieldSwiftUI_Tests */ = { 185 | isa = PBXNativeTarget; 186 | buildConfigurationList = 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "FloatingLabelTextFieldSwiftUI_Tests" */; 187 | buildPhases = ( 188 | 738FE7886ACFA2A58797508A /* [CP] Check Pods Manifest.lock */, 189 | 607FACE11AFB9204008FA782 /* Sources */, 190 | 607FACE21AFB9204008FA782 /* Frameworks */, 191 | 607FACE31AFB9204008FA782 /* Resources */, 192 | ); 193 | buildRules = ( 194 | ); 195 | dependencies = ( 196 | 607FACE71AFB9204008FA782 /* PBXTargetDependency */, 197 | ); 198 | name = FloatingLabelTextFieldSwiftUI_Tests; 199 | productName = Tests; 200 | productReference = 607FACE51AFB9204008FA782 /* FloatingLabelTextFieldSwiftUI_Tests.xctest */; 201 | productType = "com.apple.product-type.bundle.unit-test"; 202 | }; 203 | /* End PBXNativeTarget section */ 204 | 205 | /* Begin PBXProject section */ 206 | 607FACC81AFB9204008FA782 /* Project object */ = { 207 | isa = PBXProject; 208 | attributes = { 209 | LastSwiftUpdateCheck = 0830; 210 | LastUpgradeCheck = 1130; 211 | ORGANIZATIONNAME = CocoaPods; 212 | TargetAttributes = { 213 | 607FACCF1AFB9204008FA782 = { 214 | CreatedOnToolsVersion = 6.3.1; 215 | LastSwiftMigration = 1130; 216 | }; 217 | 607FACE41AFB9204008FA782 = { 218 | CreatedOnToolsVersion = 6.3.1; 219 | LastSwiftMigration = 1130; 220 | TestTargetID = 607FACCF1AFB9204008FA782; 221 | }; 222 | }; 223 | }; 224 | buildConfigurationList = 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "FloatingLabelTextFieldSwiftUI" */; 225 | compatibilityVersion = "Xcode 3.2"; 226 | developmentRegion = en; 227 | hasScannedForEncodings = 0; 228 | knownRegions = ( 229 | en, 230 | Base, 231 | ); 232 | mainGroup = 607FACC71AFB9204008FA782; 233 | productRefGroup = 607FACD11AFB9204008FA782 /* Products */; 234 | projectDirPath = ""; 235 | projectRoot = ""; 236 | targets = ( 237 | 607FACCF1AFB9204008FA782 /* FloatingLabelTextFieldSwiftUI_Example */, 238 | 607FACE41AFB9204008FA782 /* FloatingLabelTextFieldSwiftUI_Tests */, 239 | ); 240 | }; 241 | /* End PBXProject section */ 242 | 243 | /* Begin PBXResourcesBuildPhase section */ 244 | 607FACCE1AFB9204008FA782 /* Resources */ = { 245 | isa = PBXResourcesBuildPhase; 246 | buildActionMask = 2147483647; 247 | files = ( 248 | 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */, 249 | 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */, 250 | ); 251 | runOnlyForDeploymentPostprocessing = 0; 252 | }; 253 | 607FACE31AFB9204008FA782 /* Resources */ = { 254 | isa = PBXResourcesBuildPhase; 255 | buildActionMask = 2147483647; 256 | files = ( 257 | ); 258 | runOnlyForDeploymentPostprocessing = 0; 259 | }; 260 | /* End PBXResourcesBuildPhase section */ 261 | 262 | /* Begin PBXShellScriptBuildPhase section */ 263 | 26FD364B23EFC5B6E413DA7F /* [CP] Check Pods Manifest.lock */ = { 264 | isa = PBXShellScriptBuildPhase; 265 | buildActionMask = 2147483647; 266 | files = ( 267 | ); 268 | inputFileListPaths = ( 269 | ); 270 | inputPaths = ( 271 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 272 | "${PODS_ROOT}/Manifest.lock", 273 | ); 274 | name = "[CP] Check Pods Manifest.lock"; 275 | outputFileListPaths = ( 276 | ); 277 | outputPaths = ( 278 | "$(DERIVED_FILE_DIR)/Pods-FloatingLabelTextFieldSwiftUI_Example-checkManifestLockResult.txt", 279 | ); 280 | runOnlyForDeploymentPostprocessing = 0; 281 | shellPath = /bin/sh; 282 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 283 | showEnvVarsInLog = 0; 284 | }; 285 | 738FE7886ACFA2A58797508A /* [CP] Check Pods Manifest.lock */ = { 286 | isa = PBXShellScriptBuildPhase; 287 | buildActionMask = 2147483647; 288 | files = ( 289 | ); 290 | inputFileListPaths = ( 291 | ); 292 | inputPaths = ( 293 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 294 | "${PODS_ROOT}/Manifest.lock", 295 | ); 296 | name = "[CP] Check Pods Manifest.lock"; 297 | outputFileListPaths = ( 298 | ); 299 | outputPaths = ( 300 | "$(DERIVED_FILE_DIR)/Pods-FloatingLabelTextFieldSwiftUI_Tests-checkManifestLockResult.txt", 301 | ); 302 | runOnlyForDeploymentPostprocessing = 0; 303 | shellPath = /bin/sh; 304 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 305 | showEnvVarsInLog = 0; 306 | }; 307 | 7F374F6697B882EBCA16CACA /* [CP] Embed Pods Frameworks */ = { 308 | isa = PBXShellScriptBuildPhase; 309 | buildActionMask = 2147483647; 310 | files = ( 311 | ); 312 | inputPaths = ( 313 | "${PODS_ROOT}/Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Example/Pods-FloatingLabelTextFieldSwiftUI_Example-frameworks.sh", 314 | "${BUILT_PRODUCTS_DIR}/FloatingLabelTextFieldSwiftUI/FloatingLabelTextFieldSwiftUI.framework", 315 | ); 316 | name = "[CP] Embed Pods Frameworks"; 317 | outputPaths = ( 318 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FloatingLabelTextFieldSwiftUI.framework", 319 | ); 320 | runOnlyForDeploymentPostprocessing = 0; 321 | shellPath = /bin/sh; 322 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Example/Pods-FloatingLabelTextFieldSwiftUI_Example-frameworks.sh\"\n"; 323 | showEnvVarsInLog = 0; 324 | }; 325 | /* End PBXShellScriptBuildPhase section */ 326 | 327 | /* Begin PBXSourcesBuildPhase section */ 328 | 607FACCC1AFB9204008FA782 /* Sources */ = { 329 | isa = PBXSourcesBuildPhase; 330 | buildActionMask = 2147483647; 331 | files = ( 332 | 5D2E0F392469AF5A008BBE68 /* ContentView.swift in Sources */, 333 | 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */, 334 | 5D2E0F3B2469B017008BBE68 /* SceneDelegate.swift in Sources */, 335 | ); 336 | runOnlyForDeploymentPostprocessing = 0; 337 | }; 338 | 607FACE11AFB9204008FA782 /* Sources */ = { 339 | isa = PBXSourcesBuildPhase; 340 | buildActionMask = 2147483647; 341 | files = ( 342 | 607FACEC1AFB9204008FA782 /* Tests.swift in Sources */, 343 | ); 344 | runOnlyForDeploymentPostprocessing = 0; 345 | }; 346 | /* End PBXSourcesBuildPhase section */ 347 | 348 | /* Begin PBXTargetDependency section */ 349 | 607FACE71AFB9204008FA782 /* PBXTargetDependency */ = { 350 | isa = PBXTargetDependency; 351 | target = 607FACCF1AFB9204008FA782 /* FloatingLabelTextFieldSwiftUI_Example */; 352 | targetProxy = 607FACE61AFB9204008FA782 /* PBXContainerItemProxy */; 353 | }; 354 | /* End PBXTargetDependency section */ 355 | 356 | /* Begin PBXVariantGroup section */ 357 | 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */ = { 358 | isa = PBXVariantGroup; 359 | children = ( 360 | 607FACDF1AFB9204008FA782 /* Base */, 361 | ); 362 | name = LaunchScreen.xib; 363 | sourceTree = ""; 364 | }; 365 | /* End PBXVariantGroup section */ 366 | 367 | /* Begin XCBuildConfiguration section */ 368 | 607FACED1AFB9204008FA782 /* Debug */ = { 369 | isa = XCBuildConfiguration; 370 | buildSettings = { 371 | ALWAYS_SEARCH_USER_PATHS = NO; 372 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 373 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 374 | CLANG_CXX_LIBRARY = "libc++"; 375 | CLANG_ENABLE_MODULES = YES; 376 | CLANG_ENABLE_OBJC_ARC = YES; 377 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 378 | CLANG_WARN_BOOL_CONVERSION = YES; 379 | CLANG_WARN_COMMA = YES; 380 | CLANG_WARN_CONSTANT_CONVERSION = YES; 381 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 382 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 383 | CLANG_WARN_EMPTY_BODY = YES; 384 | CLANG_WARN_ENUM_CONVERSION = YES; 385 | CLANG_WARN_INFINITE_RECURSION = YES; 386 | CLANG_WARN_INT_CONVERSION = YES; 387 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 388 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 389 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 390 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 391 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 392 | CLANG_WARN_STRICT_PROTOTYPES = YES; 393 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 394 | CLANG_WARN_UNREACHABLE_CODE = YES; 395 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 396 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 397 | COPY_PHASE_STRIP = NO; 398 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 399 | ENABLE_STRICT_OBJC_MSGSEND = YES; 400 | ENABLE_TESTABILITY = YES; 401 | GCC_C_LANGUAGE_STANDARD = gnu99; 402 | GCC_DYNAMIC_NO_PIC = NO; 403 | GCC_NO_COMMON_BLOCKS = YES; 404 | GCC_OPTIMIZATION_LEVEL = 0; 405 | GCC_PREPROCESSOR_DEFINITIONS = ( 406 | "DEBUG=1", 407 | "$(inherited)", 408 | ); 409 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 410 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 411 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 412 | GCC_WARN_UNDECLARED_SELECTOR = YES; 413 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 414 | GCC_WARN_UNUSED_FUNCTION = YES; 415 | GCC_WARN_UNUSED_VARIABLE = YES; 416 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 417 | MTL_ENABLE_DEBUG_INFO = YES; 418 | ONLY_ACTIVE_ARCH = YES; 419 | SDKROOT = iphoneos; 420 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 421 | }; 422 | name = Debug; 423 | }; 424 | 607FACEE1AFB9204008FA782 /* Release */ = { 425 | isa = XCBuildConfiguration; 426 | buildSettings = { 427 | ALWAYS_SEARCH_USER_PATHS = NO; 428 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 429 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 430 | CLANG_CXX_LIBRARY = "libc++"; 431 | CLANG_ENABLE_MODULES = YES; 432 | CLANG_ENABLE_OBJC_ARC = YES; 433 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 434 | CLANG_WARN_BOOL_CONVERSION = YES; 435 | CLANG_WARN_COMMA = YES; 436 | CLANG_WARN_CONSTANT_CONVERSION = YES; 437 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 438 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 439 | CLANG_WARN_EMPTY_BODY = YES; 440 | CLANG_WARN_ENUM_CONVERSION = YES; 441 | CLANG_WARN_INFINITE_RECURSION = YES; 442 | CLANG_WARN_INT_CONVERSION = YES; 443 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 444 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 445 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 446 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 447 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 448 | CLANG_WARN_STRICT_PROTOTYPES = YES; 449 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 450 | CLANG_WARN_UNREACHABLE_CODE = YES; 451 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 452 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 453 | COPY_PHASE_STRIP = NO; 454 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 455 | ENABLE_NS_ASSERTIONS = NO; 456 | ENABLE_STRICT_OBJC_MSGSEND = YES; 457 | GCC_C_LANGUAGE_STANDARD = gnu99; 458 | GCC_NO_COMMON_BLOCKS = YES; 459 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 460 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 461 | GCC_WARN_UNDECLARED_SELECTOR = YES; 462 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 463 | GCC_WARN_UNUSED_FUNCTION = YES; 464 | GCC_WARN_UNUSED_VARIABLE = YES; 465 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 466 | MTL_ENABLE_DEBUG_INFO = NO; 467 | SDKROOT = iphoneos; 468 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 469 | VALIDATE_PRODUCT = YES; 470 | }; 471 | name = Release; 472 | }; 473 | 607FACF01AFB9204008FA782 /* Debug */ = { 474 | isa = XCBuildConfiguration; 475 | baseConfigurationReference = 869E8BF7135C205B543CA458 /* Pods-FloatingLabelTextFieldSwiftUI_Example.debug.xcconfig */; 476 | buildSettings = { 477 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 478 | INFOPLIST_FILE = FloatingLabelTextFieldSwiftUI/Info.plist; 479 | IPHONEOS_DEPLOYMENT_TARGET = 15.0; 480 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 481 | MODULE_NAME = ExampleApp; 482 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; 483 | PRODUCT_NAME = "$(TARGET_NAME)"; 484 | SWIFT_SWIFT3_OBJC_INFERENCE = Default; 485 | SWIFT_VERSION = 5.0; 486 | }; 487 | name = Debug; 488 | }; 489 | 607FACF11AFB9204008FA782 /* Release */ = { 490 | isa = XCBuildConfiguration; 491 | baseConfigurationReference = B389C0DC0FC117DF19AD04B7 /* Pods-FloatingLabelTextFieldSwiftUI_Example.release.xcconfig */; 492 | buildSettings = { 493 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 494 | INFOPLIST_FILE = FloatingLabelTextFieldSwiftUI/Info.plist; 495 | IPHONEOS_DEPLOYMENT_TARGET = 15.0; 496 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 497 | MODULE_NAME = ExampleApp; 498 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; 499 | PRODUCT_NAME = "$(TARGET_NAME)"; 500 | SWIFT_SWIFT3_OBJC_INFERENCE = Default; 501 | SWIFT_VERSION = 5.0; 502 | }; 503 | name = Release; 504 | }; 505 | 607FACF31AFB9204008FA782 /* Debug */ = { 506 | isa = XCBuildConfiguration; 507 | baseConfigurationReference = C7B7674DF740DD3A2D3347CE /* Pods-FloatingLabelTextFieldSwiftUI_Tests.debug.xcconfig */; 508 | buildSettings = { 509 | FRAMEWORK_SEARCH_PATHS = ( 510 | "$(PLATFORM_DIR)/Developer/Library/Frameworks", 511 | "$(inherited)", 512 | ); 513 | GCC_PREPROCESSOR_DEFINITIONS = ( 514 | "DEBUG=1", 515 | "$(inherited)", 516 | ); 517 | INFOPLIST_FILE = Tests/Info.plist; 518 | IPHONEOS_DEPLOYMENT_TARGET = 15.0; 519 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 520 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; 521 | PRODUCT_NAME = "$(TARGET_NAME)"; 522 | SWIFT_SWIFT3_OBJC_INFERENCE = Default; 523 | SWIFT_VERSION = 5.0; 524 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/FloatingLabelTextFieldSwiftUI_Example.app/FloatingLabelTextFieldSwiftUI_Example"; 525 | }; 526 | name = Debug; 527 | }; 528 | 607FACF41AFB9204008FA782 /* Release */ = { 529 | isa = XCBuildConfiguration; 530 | baseConfigurationReference = 833A7BF5E04083B3ED4BCD47 /* Pods-FloatingLabelTextFieldSwiftUI_Tests.release.xcconfig */; 531 | buildSettings = { 532 | FRAMEWORK_SEARCH_PATHS = ( 533 | "$(PLATFORM_DIR)/Developer/Library/Frameworks", 534 | "$(inherited)", 535 | ); 536 | INFOPLIST_FILE = Tests/Info.plist; 537 | IPHONEOS_DEPLOYMENT_TARGET = 15.0; 538 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 539 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; 540 | PRODUCT_NAME = "$(TARGET_NAME)"; 541 | SWIFT_SWIFT3_OBJC_INFERENCE = Default; 542 | SWIFT_VERSION = 5.0; 543 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/FloatingLabelTextFieldSwiftUI_Example.app/FloatingLabelTextFieldSwiftUI_Example"; 544 | }; 545 | name = Release; 546 | }; 547 | /* End XCBuildConfiguration section */ 548 | 549 | /* Begin XCConfigurationList section */ 550 | 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "FloatingLabelTextFieldSwiftUI" */ = { 551 | isa = XCConfigurationList; 552 | buildConfigurations = ( 553 | 607FACED1AFB9204008FA782 /* Debug */, 554 | 607FACEE1AFB9204008FA782 /* Release */, 555 | ); 556 | defaultConfigurationIsVisible = 0; 557 | defaultConfigurationName = Release; 558 | }; 559 | 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "FloatingLabelTextFieldSwiftUI_Example" */ = { 560 | isa = XCConfigurationList; 561 | buildConfigurations = ( 562 | 607FACF01AFB9204008FA782 /* Debug */, 563 | 607FACF11AFB9204008FA782 /* Release */, 564 | ); 565 | defaultConfigurationIsVisible = 0; 566 | defaultConfigurationName = Release; 567 | }; 568 | 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "FloatingLabelTextFieldSwiftUI_Tests" */ = { 569 | isa = XCConfigurationList; 570 | buildConfigurations = ( 571 | 607FACF31AFB9204008FA782 /* Debug */, 572 | 607FACF41AFB9204008FA782 /* Release */, 573 | ); 574 | defaultConfigurationIsVisible = 0; 575 | defaultConfigurationName = Release; 576 | }; 577 | /* End XCConfigurationList section */ 578 | }; 579 | rootObject = 607FACC81AFB9204008FA782 /* Project object */; 580 | } 581 | -------------------------------------------------------------------------------- /Example/FloatingLabelTextFieldSwiftUI.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/FloatingLabelTextFieldSwiftUI.xcodeproj/xcshareddata/xcschemes/FloatingLabelTextFieldSwiftUI-Example.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 29 | 35 | 36 | 37 | 38 | 39 | 44 | 45 | 51 | 52 | 53 | 54 | 56 | 62 | 63 | 64 | 65 | 66 | 76 | 78 | 84 | 85 | 86 | 87 | 93 | 95 | 101 | 102 | 103 | 104 | 106 | 107 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /Example/FloatingLabelTextFieldSwiftUI.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Example/FloatingLabelTextFieldSwiftUI.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Example/FloatingLabelTextFieldSwiftUI/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // FloatingLabelTextFieldSwiftUI 4 | // 5 | // Created by kishanraja on 05/11/2020. 6 | // Copyright (c) 2020 kishanraja. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @UIApplicationMain 12 | class AppDelegate: UIResponder, UIApplicationDelegate { 13 | 14 | var window: UIWindow? 15 | 16 | 17 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 18 | // Override point for customization after application launch. 19 | return true 20 | } 21 | 22 | func applicationWillResignActive(_ application: UIApplication) { 23 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 24 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 25 | } 26 | 27 | func applicationDidEnterBackground(_ application: UIApplication) { 28 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 29 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 30 | } 31 | 32 | func applicationWillEnterForeground(_ application: UIApplication) { 33 | // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. 34 | } 35 | 36 | func applicationDidBecomeActive(_ application: UIApplication) { 37 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 38 | } 39 | 40 | func applicationWillTerminate(_ application: UIApplication) { 41 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 42 | } 43 | 44 | 45 | } 46 | 47 | -------------------------------------------------------------------------------- /Example/FloatingLabelTextFieldSwiftUI/Base.lproj/LaunchScreen.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 25 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /Example/FloatingLabelTextFieldSwiftUI/ContentView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ContentView.swift 3 | // Example 4 | // 5 | // Created by KISHAN_RAJA on 10/05/20. 6 | // Copyright © 2020 KISHAN_RAJA. All rights reserved. 7 | // 8 | 9 | import SwiftUI 10 | import FloatingLabelTextFieldSwiftUI 11 | 12 | struct ContentView: View { 13 | 14 | @State private var firstName: String = "" 15 | @State private var isValidFirstName: Bool = false 16 | 17 | @State private var lastName: String = "" 18 | @State private var isValidLastName: Bool = false 19 | 20 | @State private var mobileNumber: String = "" 21 | @State private var email: String = "" 22 | @State private var isValidEmail: Bool = false 23 | @State private var password: String = "" 24 | @State private var date: Date = Date() 25 | @State private var birthDate: String = "" 26 | @State private var showDatePicker: Bool = false 27 | 28 | @State private var isPasswordShow: Bool = false 29 | 30 | @State private var notes: String = "" 31 | 32 | private var selectedDate: Binding { 33 | Binding(get: { self.date}, set : { 34 | self.date = $0 35 | self.setDateFormatterString() 36 | }) 37 | } 38 | 39 | private func setDateFormatterString() { 40 | let formatter = DateFormatter() 41 | formatter.dateFormat = "dd - MMMM, yyyy" 42 | 43 | self.birthDate = formatter.string(from: self.date) 44 | } 45 | 46 | var body: some View { 47 | VStack { 48 | 49 | HStack(spacing: 20) { 50 | FloatingLabelTextField($firstName, validtionChecker: $isValidFirstName, placeholder: "First Name", editingChanged: { (isChanged) in 51 | 52 | }) { 53 | 54 | } 55 | .addDisableEditingAction([.all]) 56 | .isShowError(true) 57 | .addValidations([.init(condition: firstName.isValid(.alphabet), errorMessage: "Invalid Name"), 58 | .init(condition: firstName.count >= 2, errorMessage: "Minimum two character long") 59 | ]) 60 | .isRequiredField(true, with: "Name field is required") 61 | .floatingStyle(ThemeTextFieldStyle()) 62 | .modifier(ThemeTextField()) 63 | 64 | 65 | FloatingLabelTextField($lastName, validtionChecker: $isValidLastName, placeholder: "Last Name", editingChanged: { (isChanged) in 66 | 67 | }) { 68 | 69 | } 70 | .addDisableEditingAction([.paste]) 71 | .isShowError(true) 72 | .addValidations([.init(condition: lastName.isValid(.alphabet), errorMessage: "Invalid Name"), 73 | .init(condition: lastName.count >= 2, errorMessage: "Minimum two character long") 74 | ]) 75 | .floatingStyle(ThemeTextFieldStyle2()) 76 | .modifier(ThemeTextField()) 77 | } 78 | 79 | FloatingLabelTextField($birthDate, placeholder: "Birth Date", editingChanged: { (isChanged) in 80 | self.showDatePicker = isChanged 81 | }) { 82 | 83 | } 84 | .modifier(ThemeTextField()) 85 | 86 | if showDatePicker { 87 | DatePicker("", selection: selectedDate, 88 | displayedComponents: .date) 89 | } 90 | 91 | FloatingLabelTextField($mobileNumber, placeholder: "Phone Number", editingChanged: { (isChanged) in 92 | 93 | }) { 94 | 95 | } 96 | .addDisableEditingAction([.paste]) 97 | .keyboardType(.phonePad) 98 | .modifier(ThemeTextField()) 99 | FloatingLabelTextField($email, validtionChecker: $isValidEmail, placeholder: "Email", editingChanged: { (isChanged) in 100 | 101 | }) { 102 | 103 | } 104 | .addValidations([.init(condition: email.isValid(.email), errorMessage: "Invalid Email") 105 | ]) 106 | .isShowError(true) 107 | .keyboardType(.emailAddress) 108 | .modifier(ThemeTextField()) 109 | 110 | 111 | FloatingLabelTextField($notes, placeholder: "Notes", axis: .vertical) 112 | .spaceBetweenTitleText(8.0) 113 | .lineLimit(5) 114 | .frame(minHeight: 80) 115 | 116 | FloatingLabelTextField($password, placeholder: "Password", editingChanged: { (isChanged) in 117 | 118 | }) { 119 | 120 | } 121 | .addDisableEditingAction([.all]) 122 | .isShowError(true) 123 | .isRequiredField(true, with: "Password field is required") 124 | .rightView({ 125 | Button(action: { 126 | withAnimation { 127 | self.isPasswordShow.toggle() 128 | } 129 | 130 | }) { 131 | Image(self.isPasswordShow ? "eye_close" : "eye_show") 132 | } 133 | }) 134 | .isSecureTextEntry(!self.isPasswordShow) 135 | .modifier(ThemeTextField()) 136 | 137 | Button(action: { 138 | self.endEditing(true) 139 | 140 | print("First Name--->", isValidFirstName) 141 | print("Last Name--->", isValidLastName) 142 | print("Email--->", isValidEmail) 143 | 144 | if self.isValidEmail && isValidFirstName && isValidLastName { 145 | print("Valid field") 146 | 147 | } else { 148 | print("Invalid field") 149 | } 150 | 151 | }) { 152 | Text("Create") 153 | } 154 | .buttonStyle(CreateButtonStyle()) 155 | Spacer() 156 | } 157 | 158 | .padding() 159 | 160 | } 161 | 162 | } 163 | 164 | //MARK: Create floating style 165 | struct ThemeTextFieldStyle: FloatingLabelTextFieldStyle { 166 | func body(content: FloatingLabelTextField) -> FloatingLabelTextField { 167 | content.titleColor(.black) 168 | } 169 | } 170 | 171 | struct ThemeTextFieldStyle2: FloatingLabelTextFieldStyle { 172 | func body(content: FloatingLabelTextField) -> FloatingLabelTextField { 173 | content.titleColor(.black).errorColor(.init(UIColor.green)) 174 | } 175 | } 176 | 177 | //MARK: ViewModifier 178 | struct ThemeTextField: ViewModifier { 179 | func body(content: Content) -> some View { 180 | content.frame(height: 80) 181 | } 182 | } 183 | 184 | //MARK: Button style 185 | struct CreateButtonStyle: ButtonStyle { 186 | func makeBody(configuration: Self.Configuration) -> some View { 187 | configuration.label 188 | .foregroundColor(Color.white) 189 | .padding() 190 | .background(Color.orange) 191 | .cornerRadius(10.0) 192 | } 193 | } 194 | 195 | //MARK: Preview 196 | struct ContentView_Previews: PreviewProvider { 197 | static var previews: some View { 198 | ContentView() 199 | } 200 | } 201 | -------------------------------------------------------------------------------- /Example/FloatingLabelTextFieldSwiftUI/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ios-marketing", 45 | "size" : "1024x1024", 46 | "scale" : "1x" 47 | } 48 | ], 49 | "info" : { 50 | "version" : 1, 51 | "author" : "xcode" 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /Example/FloatingLabelTextFieldSwiftUI/Images.xcassets/eye_close.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "eye_close.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "eye_close@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "eye_close@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /Example/FloatingLabelTextFieldSwiftUI/Images.xcassets/eye_close.imageset/eye_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kishanraja/FloatingLabelTextFieldSwiftUI/2f69aac37adc5f7dfd89cac10f1c8dff3219fd49/Example/FloatingLabelTextFieldSwiftUI/Images.xcassets/eye_close.imageset/eye_close.png -------------------------------------------------------------------------------- /Example/FloatingLabelTextFieldSwiftUI/Images.xcassets/eye_close.imageset/eye_close@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kishanraja/FloatingLabelTextFieldSwiftUI/2f69aac37adc5f7dfd89cac10f1c8dff3219fd49/Example/FloatingLabelTextFieldSwiftUI/Images.xcassets/eye_close.imageset/eye_close@2x.png -------------------------------------------------------------------------------- /Example/FloatingLabelTextFieldSwiftUI/Images.xcassets/eye_close.imageset/eye_close@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kishanraja/FloatingLabelTextFieldSwiftUI/2f69aac37adc5f7dfd89cac10f1c8dff3219fd49/Example/FloatingLabelTextFieldSwiftUI/Images.xcassets/eye_close.imageset/eye_close@3x.png -------------------------------------------------------------------------------- /Example/FloatingLabelTextFieldSwiftUI/Images.xcassets/eye_show.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "eye_show.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "eye_show@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "eye_show@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /Example/FloatingLabelTextFieldSwiftUI/Images.xcassets/eye_show.imageset/eye_show.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kishanraja/FloatingLabelTextFieldSwiftUI/2f69aac37adc5f7dfd89cac10f1c8dff3219fd49/Example/FloatingLabelTextFieldSwiftUI/Images.xcassets/eye_show.imageset/eye_show.png -------------------------------------------------------------------------------- /Example/FloatingLabelTextFieldSwiftUI/Images.xcassets/eye_show.imageset/eye_show@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kishanraja/FloatingLabelTextFieldSwiftUI/2f69aac37adc5f7dfd89cac10f1c8dff3219fd49/Example/FloatingLabelTextFieldSwiftUI/Images.xcassets/eye_show.imageset/eye_show@2x.png -------------------------------------------------------------------------------- /Example/FloatingLabelTextFieldSwiftUI/Images.xcassets/eye_show.imageset/eye_show@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kishanraja/FloatingLabelTextFieldSwiftUI/2f69aac37adc5f7dfd89cac10f1c8dff3219fd49/Example/FloatingLabelTextFieldSwiftUI/Images.xcassets/eye_show.imageset/eye_show@3x.png -------------------------------------------------------------------------------- /Example/FloatingLabelTextFieldSwiftUI/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | UIApplicationSceneManifest 26 | 27 | UIApplicationSupportsMultipleScenes 28 | 29 | UISceneConfigurations 30 | 31 | UIWindowSceneSessionRoleApplication 32 | 33 | 34 | UISceneConfigurationName 35 | Default Configuration 36 | UISceneDelegateClassName 37 | $(PRODUCT_MODULE_NAME).SceneDelegate 38 | 39 | 40 | 41 | 42 | UILaunchStoryboardName 43 | LaunchScreen 44 | UIRequiredDeviceCapabilities 45 | 46 | armv7 47 | 48 | UISupportedInterfaceOrientations 49 | 50 | UIInterfaceOrientationPortrait 51 | UIInterfaceOrientationLandscapeLeft 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /Example/FloatingLabelTextFieldSwiftUI/SceneDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SceneDelegate.swift 3 | // FloatingLabelTextFieldSwiftUI 4 | // 5 | // Created by KISHAN_RAJA on 10/05/20. 6 | // Copyright © 2020 KISHAN_RAJA. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import SwiftUI 11 | 12 | class SceneDelegate: UIResponder, UIWindowSceneDelegate { 13 | 14 | var window: UIWindow? 15 | 16 | 17 | func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { 18 | // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. 19 | // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. 20 | // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). 21 | 22 | // Create the SwiftUI view that provides the window contents. 23 | let contentView = ContentView() 24 | 25 | // Use a UIHostingController as window root view controller. 26 | if let windowScene = scene as? UIWindowScene { 27 | let window = UIWindow(windowScene: windowScene) 28 | window.rootViewController = UIHostingController(rootView: contentView) 29 | self.window = window 30 | window.makeKeyAndVisible() 31 | } 32 | } 33 | 34 | func sceneDidDisconnect(_ scene: UIScene) { 35 | // Called as the scene is being released by the system. 36 | // This occurs shortly after the scene enters the background, or when its session is discarded. 37 | // Release any resources associated with this scene that can be re-created the next time the scene connects. 38 | // The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead). 39 | } 40 | 41 | func sceneDidBecomeActive(_ scene: UIScene) { 42 | // Called when the scene has moved from an inactive state to an active state. 43 | // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. 44 | } 45 | 46 | func sceneWillResignActive(_ scene: UIScene) { 47 | // Called when the scene will move from an active state to an inactive state. 48 | // This may occur due to temporary interruptions (ex. an incoming phone call). 49 | } 50 | 51 | func sceneWillEnterForeground(_ scene: UIScene) { 52 | // Called as the scene transitions from the background to the foreground. 53 | // Use this method to undo the changes made on entering the background. 54 | } 55 | 56 | func sceneDidEnterBackground(_ scene: UIScene) { 57 | // Called as the scene transitions from the foreground to the background. 58 | // Use this method to save data, release shared resources, and store enough scene-specific state information 59 | // to restore the scene back to its current state. 60 | } 61 | 62 | 63 | } 64 | 65 | -------------------------------------------------------------------------------- /Example/Podfile: -------------------------------------------------------------------------------- 1 | use_frameworks! 2 | 3 | target 'FloatingLabelTextFieldSwiftUI_Example' do 4 | pod 'FloatingLabelTextFieldSwiftUI', :path => '../' 5 | 6 | target 'FloatingLabelTextFieldSwiftUI_Tests' do 7 | inherit! :search_paths 8 | 9 | 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /Example/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - FloatingLabelTextFieldSwiftUI (3.1.0) 3 | 4 | DEPENDENCIES: 5 | - FloatingLabelTextFieldSwiftUI (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | FloatingLabelTextFieldSwiftUI: 9 | :path: "../" 10 | 11 | SPEC CHECKSUMS: 12 | FloatingLabelTextFieldSwiftUI: 5fba58befe912c46f445735532412b82e62d0cf6 13 | 14 | PODFILE CHECKSUM: 1d492ab90cedd45c2169a52444eb492f5ae66dbf 15 | 16 | COCOAPODS: 1.9.1 17 | -------------------------------------------------------------------------------- /Example/Pods/Local Podspecs/FloatingLabelTextFieldSwiftUI.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "FloatingLabelTextFieldSwiftUI", 3 | "version": "3.1.0", 4 | "summary": "A beautiful floating label textfield library written in SwiftUI.", 5 | "description": "FloatingLabelTextField is a small and lightweight SwiftUI framework that allows to create beautiful and customisable floating label textfield!", 6 | "homepage": "https://github.com/kishanraja/FloatingLabelTextFieldSwiftUI", 7 | "license": { 8 | "type": "MIT", 9 | "file": "LICENSE" 10 | }, 11 | "authors": { 12 | "kishanraja": "rajakishanrk1996@gmail.com" 13 | }, 14 | "source": { 15 | "git": "https://github.com/kishanraja/FloatingLabelTextFieldSwiftUI.git", 16 | "tag": "3.1.0" 17 | }, 18 | "social_media_url": "https://twitter.com/RajaKishan4", 19 | "platforms": { 20 | "ios": "13.0" 21 | }, 22 | "source_files": "Sources/**/*.swift", 23 | "swift_versions": "5.0", 24 | "swift_version": "5.0" 25 | } 26 | -------------------------------------------------------------------------------- /Example/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - FloatingLabelTextFieldSwiftUI (3.1.0) 3 | 4 | DEPENDENCIES: 5 | - FloatingLabelTextFieldSwiftUI (from `../`) 6 | 7 | EXTERNAL SOURCES: 8 | FloatingLabelTextFieldSwiftUI: 9 | :path: "../" 10 | 11 | SPEC CHECKSUMS: 12 | FloatingLabelTextFieldSwiftUI: 5fba58befe912c46f445735532412b82e62d0cf6 13 | 14 | PODFILE CHECKSUM: 1d492ab90cedd45c2169a52444eb492f5ae66dbf 15 | 16 | COCOAPODS: 1.9.1 17 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 00B445DA37711B17D3B5BF61B107D9BC /* Pods-FloatingLabelTextFieldSwiftUI_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F68BA006B402BAB59668AC6A0C2B034C /* Pods-FloatingLabelTextFieldSwiftUI_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 11 | 047CB0BE0830C3359216F689E3BF986D /* UIResponder+Extesnion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50DC2CB7FBD71A7CBF3786E72FF53A49 /* UIResponder+Extesnion.swift */; }; 12 | 0C6A91CB7E7B145CC7B93D895A7CA575 /* ObservableObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 964F4088B401ACCC9879144150636345 /* ObservableObject.swift */; }; 13 | 1EC95B678A0CEB64339DCD6A7282A499 /* Pods-FloatingLabelTextFieldSwiftUI_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 33B87B774B6B67EE2736D0B3DF2074CC /* Pods-FloatingLabelTextFieldSwiftUI_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 14 | 25B2FD0FCD64AE18FB6BDD266758D3CB /* View+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1447985B68B4F254BA91FE835F50987 /* View+Extension.swift */; }; 15 | 529AC9170C1266E4CED03C7D4EF38DB8 /* TextAlignment+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A1C0E7DDCE1229A3A81653C4B0845FE /* TextAlignment+Extension.swift */; }; 16 | 5D25032625652F2B00DC5927 /* UITextField+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D25032525652F2B00DC5927 /* UITextField+Extension.swift */; }; 17 | 5D3CE01F249BC5CE003DC54C /* String+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D3CE01E249BC5CE003DC54C /* String+Extension.swift */; }; 18 | 5D3CE056249BDB50003DC54C /* Validator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D3CE055249BDB50003DC54C /* Validator.swift */; }; 19 | 69330D52C647DC65452DE8BE13D6E743 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; }; 20 | 74863C5D4183CE32FDEBC4C8111967E4 /* Pods-FloatingLabelTextFieldSwiftUI_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = EB532DD9194AA050448BC8BE4B6F100B /* Pods-FloatingLabelTextFieldSwiftUI_Tests-dummy.m */; }; 21 | 78DCFBBED4CA94D1B49926ED23ACB7D1 /* UIControl+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = D88957F8945597CD27821C0E7AD2B450 /* UIControl+Extension.swift */; }; 22 | ADBBA635D4793CBBDF9C0F7B5785C5F8 /* Pods-FloatingLabelTextFieldSwiftUI_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2576CA6743DBD278D07BF77002228968 /* Pods-FloatingLabelTextFieldSwiftUI_Example-dummy.m */; }; 23 | B23D4D22E076BF2B1EE653CF63738C28 /* FloatingLabelTextFieldSwiftUI-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AE9186A6BA0B8358AB5B6DFFA1E9F9E9 /* FloatingLabelTextFieldSwiftUI-dummy.m */; }; 24 | EA1534356550BCA26D1F0E3A4316A6D1 /* FloatingLabelTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = ABFC5BCA7A2DAFDD187AC5E37E878676 /* FloatingLabelTextField.swift */; }; 25 | EFC9F1C33300780EBAF20C94ACF76B79 /* FloatingLabelTextFieldSwiftUI-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D8C18C8E9433C5AC2717795605C0635D /* FloatingLabelTextFieldSwiftUI-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 26 | F3B72B454C7B3A1C1EC438D425D2DCD5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; }; 27 | FC803E38E63C96D8B701EE7FCFB86B0D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; }; 28 | /* End PBXBuildFile section */ 29 | 30 | /* Begin PBXContainerItemProxy section */ 31 | 2DE8DE34C6DBE26E6E3E28D43EADBB77 /* PBXContainerItemProxy */ = { 32 | isa = PBXContainerItemProxy; 33 | containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; 34 | proxyType = 1; 35 | remoteGlobalIDString = 39AED5B13D90A639FED583687DD69045; 36 | remoteInfo = "Pods-FloatingLabelTextFieldSwiftUI_Example"; 37 | }; 38 | FCDA340248E60F2A3943421D096ECE53 /* PBXContainerItemProxy */ = { 39 | isa = PBXContainerItemProxy; 40 | containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; 41 | proxyType = 1; 42 | remoteGlobalIDString = F6129FEE7258F0F621C402FA13E86152; 43 | remoteInfo = FloatingLabelTextFieldSwiftUI; 44 | }; 45 | /* End PBXContainerItemProxy section */ 46 | 47 | /* Begin PBXFileReference section */ 48 | 08352AAD8A2E6FACB0846B9EF61199D0 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; 49 | 0F265636405B4704A69D9B2B958E03B4 /* FloatingLabelTextFieldSwiftUI.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; path = FloatingLabelTextFieldSwiftUI.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 50 | 2085E560DBC07477383DC0170312E29B /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; 51 | 2576CA6743DBD278D07BF77002228968 /* Pods-FloatingLabelTextFieldSwiftUI_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-FloatingLabelTextFieldSwiftUI_Example-dummy.m"; sourceTree = ""; }; 52 | 2A1C0E7DDCE1229A3A81653C4B0845FE /* TextAlignment+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "TextAlignment+Extension.swift"; sourceTree = ""; }; 53 | 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 54 | 33B87B774B6B67EE2736D0B3DF2074CC /* Pods-FloatingLabelTextFieldSwiftUI_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-FloatingLabelTextFieldSwiftUI_Tests-umbrella.h"; sourceTree = ""; }; 55 | 379E19BC27CAD1B499B2626FA17DF32F /* Pods-FloatingLabelTextFieldSwiftUI_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-FloatingLabelTextFieldSwiftUI_Example.release.xcconfig"; sourceTree = ""; }; 56 | 4EFE66E7FD8BADD7412A7F69C1AD9FE0 /* FloatingLabelTextFieldSwiftUI.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FloatingLabelTextFieldSwiftUI.debug.xcconfig; sourceTree = ""; }; 57 | 50DC2CB7FBD71A7CBF3786E72FF53A49 /* UIResponder+Extesnion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIResponder+Extesnion.swift"; sourceTree = ""; }; 58 | 5D25032525652F2B00DC5927 /* UITextField+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITextField+Extension.swift"; sourceTree = ""; }; 59 | 5D3CE01E249BC5CE003DC54C /* String+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+Extension.swift"; sourceTree = ""; }; 60 | 5D3CE055249BDB50003DC54C /* Validator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Validator.swift; sourceTree = ""; }; 61 | 5DA2B90C9EF9C267037122FCBFFC32FB /* Pods-FloatingLabelTextFieldSwiftUI_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-FloatingLabelTextFieldSwiftUI_Example-acknowledgements.plist"; sourceTree = ""; }; 62 | 86A69F4F3096C8F4DEF7164078CE3E30 /* FloatingLabelTextFieldSwiftUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = FloatingLabelTextFieldSwiftUI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 63 | 8FBD2D598C9F0F52E54A8E7820D2877C /* Pods-FloatingLabelTextFieldSwiftUI_Tests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-FloatingLabelTextFieldSwiftUI_Tests-Info.plist"; sourceTree = ""; }; 64 | 9158B5E60774F307FC287D2307E4A17E /* Pods-FloatingLabelTextFieldSwiftUI_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-FloatingLabelTextFieldSwiftUI_Tests.release.xcconfig"; sourceTree = ""; }; 65 | 964F4088B401ACCC9879144150636345 /* ObservableObject.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ObservableObject.swift; sourceTree = ""; }; 66 | 9717BD50521A42A36A027377A5F8D88E /* Pods-FloatingLabelTextFieldSwiftUI_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-FloatingLabelTextFieldSwiftUI_Example-acknowledgements.markdown"; sourceTree = ""; }; 67 | 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 68 | A1447985B68B4F254BA91FE835F50987 /* View+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "View+Extension.swift"; sourceTree = ""; }; 69 | A66F6EFBA7A2FF5E4F3E354280068E89 /* FloatingLabelTextFieldSwiftUI.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FloatingLabelTextFieldSwiftUI.release.xcconfig; sourceTree = ""; }; 70 | A6ED3E022A8C4476D628C203A738F814 /* Pods-FloatingLabelTextFieldSwiftUI_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-FloatingLabelTextFieldSwiftUI_Tests-acknowledgements.plist"; sourceTree = ""; }; 71 | ABFC5BCA7A2DAFDD187AC5E37E878676 /* FloatingLabelTextField.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FloatingLabelTextField.swift; path = Sources/FloatingLabelTextFieldSwiftUI/FloatingLabelTextField.swift; sourceTree = ""; }; 72 | AE9186A6BA0B8358AB5B6DFFA1E9F9E9 /* FloatingLabelTextFieldSwiftUI-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FloatingLabelTextFieldSwiftUI-dummy.m"; sourceTree = ""; }; 73 | BBAE5643B708D6D6FAA6C8705BE24979 /* FloatingLabelTextFieldSwiftUI-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FloatingLabelTextFieldSwiftUI-prefix.pch"; sourceTree = ""; }; 74 | C2D1D4053A7F3486EC71C8CAD7ABFC39 /* Pods-FloatingLabelTextFieldSwiftUI_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-FloatingLabelTextFieldSwiftUI_Example.modulemap"; sourceTree = ""; }; 75 | C39E0E7B66FC87CD98B5722E71EC598E /* Pods_FloatingLabelTextFieldSwiftUI_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_FloatingLabelTextFieldSwiftUI_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 76 | C720DB79CD940C5191AAF9E8849778BF /* FloatingLabelTextFieldSwiftUI.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FloatingLabelTextFieldSwiftUI.modulemap; sourceTree = ""; }; 77 | C93C627C88DC3D28875A3D229AB6ED4C /* Pods-FloatingLabelTextFieldSwiftUI_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-FloatingLabelTextFieldSwiftUI_Tests.modulemap"; sourceTree = ""; }; 78 | D0226F1148958C267735A53677AC4E48 /* Pods-FloatingLabelTextFieldSwiftUI_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-FloatingLabelTextFieldSwiftUI_Tests.debug.xcconfig"; sourceTree = ""; }; 79 | D2250C0BC386E22EA82073CDDD920C70 /* Pods-FloatingLabelTextFieldSwiftUI_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-FloatingLabelTextFieldSwiftUI_Example.debug.xcconfig"; sourceTree = ""; }; 80 | D62B2968F7942E8B9BCC6758997EE9CF /* Pods_FloatingLabelTextFieldSwiftUI_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_FloatingLabelTextFieldSwiftUI_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 81 | D88957F8945597CD27821C0E7AD2B450 /* UIControl+Extension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIControl+Extension.swift"; sourceTree = ""; }; 82 | D8C18C8E9433C5AC2717795605C0635D /* FloatingLabelTextFieldSwiftUI-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FloatingLabelTextFieldSwiftUI-umbrella.h"; sourceTree = ""; }; 83 | DFFD1EEC3C54E6D1974BE0B7FE6812A2 /* Pods-FloatingLabelTextFieldSwiftUI_Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-FloatingLabelTextFieldSwiftUI_Example-Info.plist"; sourceTree = ""; }; 84 | EB532DD9194AA050448BC8BE4B6F100B /* Pods-FloatingLabelTextFieldSwiftUI_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-FloatingLabelTextFieldSwiftUI_Tests-dummy.m"; sourceTree = ""; }; 85 | EE99B8AA756188D122D1672E78105565 /* Pods-FloatingLabelTextFieldSwiftUI_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-FloatingLabelTextFieldSwiftUI_Tests-acknowledgements.markdown"; sourceTree = ""; }; 86 | F4187CF6B83F601132CB7B4D7872EF78 /* Pods-FloatingLabelTextFieldSwiftUI_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-FloatingLabelTextFieldSwiftUI_Example-frameworks.sh"; sourceTree = ""; }; 87 | F68BA006B402BAB59668AC6A0C2B034C /* Pods-FloatingLabelTextFieldSwiftUI_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-FloatingLabelTextFieldSwiftUI_Example-umbrella.h"; sourceTree = ""; }; 88 | F74AE088E14DD0689AF8776133295D11 /* FloatingLabelTextFieldSwiftUI-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FloatingLabelTextFieldSwiftUI-Info.plist"; sourceTree = ""; }; 89 | /* End PBXFileReference section */ 90 | 91 | /* Begin PBXFrameworksBuildPhase section */ 92 | 2BE77113FB5872FD6F8CD58600DA95BB /* Frameworks */ = { 93 | isa = PBXFrameworksBuildPhase; 94 | buildActionMask = 2147483647; 95 | files = ( 96 | F3B72B454C7B3A1C1EC438D425D2DCD5 /* Foundation.framework in Frameworks */, 97 | ); 98 | runOnlyForDeploymentPostprocessing = 0; 99 | }; 100 | C02F0EDC7E226D8109BD69CF3BB25141 /* Frameworks */ = { 101 | isa = PBXFrameworksBuildPhase; 102 | buildActionMask = 2147483647; 103 | files = ( 104 | FC803E38E63C96D8B701EE7FCFB86B0D /* Foundation.framework in Frameworks */, 105 | ); 106 | runOnlyForDeploymentPostprocessing = 0; 107 | }; 108 | F777CED05BEEFDC2DCB316576B3F8721 /* Frameworks */ = { 109 | isa = PBXFrameworksBuildPhase; 110 | buildActionMask = 2147483647; 111 | files = ( 112 | 69330D52C647DC65452DE8BE13D6E743 /* Foundation.framework in Frameworks */, 113 | ); 114 | runOnlyForDeploymentPostprocessing = 0; 115 | }; 116 | /* End PBXFrameworksBuildPhase section */ 117 | 118 | /* Begin PBXGroup section */ 119 | 257DD4D8C4A99FEDDC956E108854186D /* Extensions */ = { 120 | isa = PBXGroup; 121 | children = ( 122 | 2A1C0E7DDCE1229A3A81653C4B0845FE /* TextAlignment+Extension.swift */, 123 | D88957F8945597CD27821C0E7AD2B450 /* UIControl+Extension.swift */, 124 | 50DC2CB7FBD71A7CBF3786E72FF53A49 /* UIResponder+Extesnion.swift */, 125 | A1447985B68B4F254BA91FE835F50987 /* View+Extension.swift */, 126 | 5D3CE01E249BC5CE003DC54C /* String+Extension.swift */, 127 | 5D25032525652F2B00DC5927 /* UITextField+Extension.swift */, 128 | ); 129 | name = Extensions; 130 | path = Sources/FloatingLabelTextFieldSwiftUI/Extensions; 131 | sourceTree = ""; 132 | }; 133 | 4F94AF7B98DB58C936A178227C8D80E1 /* Products */ = { 134 | isa = PBXGroup; 135 | children = ( 136 | 86A69F4F3096C8F4DEF7164078CE3E30 /* FloatingLabelTextFieldSwiftUI.framework */, 137 | D62B2968F7942E8B9BCC6758997EE9CF /* Pods_FloatingLabelTextFieldSwiftUI_Example.framework */, 138 | C39E0E7B66FC87CD98B5722E71EC598E /* Pods_FloatingLabelTextFieldSwiftUI_Tests.framework */, 139 | ); 140 | name = Products; 141 | sourceTree = ""; 142 | }; 143 | 50B9E512C60058FE92580A1233B46547 /* ObservableObject */ = { 144 | isa = PBXGroup; 145 | children = ( 146 | 964F4088B401ACCC9879144150636345 /* ObservableObject.swift */, 147 | ); 148 | name = ObservableObject; 149 | path = Sources/FloatingLabelTextFieldSwiftUI/ObservableObject; 150 | sourceTree = ""; 151 | }; 152 | 5D3CE054249BDB4F003DC54C /* TextFieldValidator */ = { 153 | isa = PBXGroup; 154 | children = ( 155 | 5D3CE055249BDB50003DC54C /* Validator.swift */, 156 | ); 157 | name = TextFieldValidator; 158 | path = Sources/FloatingLabelTextFieldSwiftUI/TextFieldValidator; 159 | sourceTree = ""; 160 | }; 161 | 6F8B90393B1133D7854837F6CF129691 /* Development Pods */ = { 162 | isa = PBXGroup; 163 | children = ( 164 | BF2C109B4BED78083048B04D15170292 /* FloatingLabelTextFieldSwiftUI */, 165 | ); 166 | name = "Development Pods"; 167 | sourceTree = ""; 168 | }; 169 | 73FAB3BB879DB5CFED5D691F05A4D0C7 /* Pod */ = { 170 | isa = PBXGroup; 171 | children = ( 172 | 0F265636405B4704A69D9B2B958E03B4 /* FloatingLabelTextFieldSwiftUI.podspec */, 173 | 2085E560DBC07477383DC0170312E29B /* LICENSE */, 174 | 08352AAD8A2E6FACB0846B9EF61199D0 /* README.md */, 175 | ); 176 | name = Pod; 177 | sourceTree = ""; 178 | }; 179 | 78B0A611A6D1CDB9EFBCA3E6881F7D68 /* Pods-FloatingLabelTextFieldSwiftUI_Tests */ = { 180 | isa = PBXGroup; 181 | children = ( 182 | C93C627C88DC3D28875A3D229AB6ED4C /* Pods-FloatingLabelTextFieldSwiftUI_Tests.modulemap */, 183 | EE99B8AA756188D122D1672E78105565 /* Pods-FloatingLabelTextFieldSwiftUI_Tests-acknowledgements.markdown */, 184 | A6ED3E022A8C4476D628C203A738F814 /* Pods-FloatingLabelTextFieldSwiftUI_Tests-acknowledgements.plist */, 185 | EB532DD9194AA050448BC8BE4B6F100B /* Pods-FloatingLabelTextFieldSwiftUI_Tests-dummy.m */, 186 | 8FBD2D598C9F0F52E54A8E7820D2877C /* Pods-FloatingLabelTextFieldSwiftUI_Tests-Info.plist */, 187 | 33B87B774B6B67EE2736D0B3DF2074CC /* Pods-FloatingLabelTextFieldSwiftUI_Tests-umbrella.h */, 188 | D0226F1148958C267735A53677AC4E48 /* Pods-FloatingLabelTextFieldSwiftUI_Tests.debug.xcconfig */, 189 | 9158B5E60774F307FC287D2307E4A17E /* Pods-FloatingLabelTextFieldSwiftUI_Tests.release.xcconfig */, 190 | ); 191 | name = "Pods-FloatingLabelTextFieldSwiftUI_Tests"; 192 | path = "Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Tests"; 193 | sourceTree = ""; 194 | }; 195 | B0365C0A5DE85852D26751E1C0258D8D /* Pods-FloatingLabelTextFieldSwiftUI_Example */ = { 196 | isa = PBXGroup; 197 | children = ( 198 | C2D1D4053A7F3486EC71C8CAD7ABFC39 /* Pods-FloatingLabelTextFieldSwiftUI_Example.modulemap */, 199 | 9717BD50521A42A36A027377A5F8D88E /* Pods-FloatingLabelTextFieldSwiftUI_Example-acknowledgements.markdown */, 200 | 5DA2B90C9EF9C267037122FCBFFC32FB /* Pods-FloatingLabelTextFieldSwiftUI_Example-acknowledgements.plist */, 201 | 2576CA6743DBD278D07BF77002228968 /* Pods-FloatingLabelTextFieldSwiftUI_Example-dummy.m */, 202 | F4187CF6B83F601132CB7B4D7872EF78 /* Pods-FloatingLabelTextFieldSwiftUI_Example-frameworks.sh */, 203 | DFFD1EEC3C54E6D1974BE0B7FE6812A2 /* Pods-FloatingLabelTextFieldSwiftUI_Example-Info.plist */, 204 | F68BA006B402BAB59668AC6A0C2B034C /* Pods-FloatingLabelTextFieldSwiftUI_Example-umbrella.h */, 205 | D2250C0BC386E22EA82073CDDD920C70 /* Pods-FloatingLabelTextFieldSwiftUI_Example.debug.xcconfig */, 206 | 379E19BC27CAD1B499B2626FA17DF32F /* Pods-FloatingLabelTextFieldSwiftUI_Example.release.xcconfig */, 207 | ); 208 | name = "Pods-FloatingLabelTextFieldSwiftUI_Example"; 209 | path = "Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Example"; 210 | sourceTree = ""; 211 | }; 212 | BF2C109B4BED78083048B04D15170292 /* FloatingLabelTextFieldSwiftUI */ = { 213 | isa = PBXGroup; 214 | children = ( 215 | ABFC5BCA7A2DAFDD187AC5E37E878676 /* FloatingLabelTextField.swift */, 216 | 5D3CE054249BDB4F003DC54C /* TextFieldValidator */, 217 | 257DD4D8C4A99FEDDC956E108854186D /* Extensions */, 218 | 50B9E512C60058FE92580A1233B46547 /* ObservableObject */, 219 | 73FAB3BB879DB5CFED5D691F05A4D0C7 /* Pod */, 220 | F34C6FE2D82B74515D39BA41F4469B8A /* Support Files */, 221 | ); 222 | name = FloatingLabelTextFieldSwiftUI; 223 | path = ../..; 224 | sourceTree = ""; 225 | }; 226 | C0834CEBB1379A84116EF29F93051C60 /* iOS */ = { 227 | isa = PBXGroup; 228 | children = ( 229 | 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */, 230 | ); 231 | name = iOS; 232 | sourceTree = ""; 233 | }; 234 | CF1408CF629C7361332E53B88F7BD30C = { 235 | isa = PBXGroup; 236 | children = ( 237 | 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, 238 | 6F8B90393B1133D7854837F6CF129691 /* Development Pods */, 239 | D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */, 240 | 4F94AF7B98DB58C936A178227C8D80E1 /* Products */, 241 | D1F52DA913503CA7A87BF02897EFB51F /* Targets Support Files */, 242 | ); 243 | sourceTree = ""; 244 | }; 245 | D1F52DA913503CA7A87BF02897EFB51F /* Targets Support Files */ = { 246 | isa = PBXGroup; 247 | children = ( 248 | B0365C0A5DE85852D26751E1C0258D8D /* Pods-FloatingLabelTextFieldSwiftUI_Example */, 249 | 78B0A611A6D1CDB9EFBCA3E6881F7D68 /* Pods-FloatingLabelTextFieldSwiftUI_Tests */, 250 | ); 251 | name = "Targets Support Files"; 252 | sourceTree = ""; 253 | }; 254 | D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */ = { 255 | isa = PBXGroup; 256 | children = ( 257 | C0834CEBB1379A84116EF29F93051C60 /* iOS */, 258 | ); 259 | name = Frameworks; 260 | sourceTree = ""; 261 | }; 262 | F34C6FE2D82B74515D39BA41F4469B8A /* Support Files */ = { 263 | isa = PBXGroup; 264 | children = ( 265 | C720DB79CD940C5191AAF9E8849778BF /* FloatingLabelTextFieldSwiftUI.modulemap */, 266 | AE9186A6BA0B8358AB5B6DFFA1E9F9E9 /* FloatingLabelTextFieldSwiftUI-dummy.m */, 267 | F74AE088E14DD0689AF8776133295D11 /* FloatingLabelTextFieldSwiftUI-Info.plist */, 268 | BBAE5643B708D6D6FAA6C8705BE24979 /* FloatingLabelTextFieldSwiftUI-prefix.pch */, 269 | D8C18C8E9433C5AC2717795605C0635D /* FloatingLabelTextFieldSwiftUI-umbrella.h */, 270 | 4EFE66E7FD8BADD7412A7F69C1AD9FE0 /* FloatingLabelTextFieldSwiftUI.debug.xcconfig */, 271 | A66F6EFBA7A2FF5E4F3E354280068E89 /* FloatingLabelTextFieldSwiftUI.release.xcconfig */, 272 | ); 273 | name = "Support Files"; 274 | path = "Example/Pods/Target Support Files/FloatingLabelTextFieldSwiftUI"; 275 | sourceTree = ""; 276 | }; 277 | /* End PBXGroup section */ 278 | 279 | /* Begin PBXHeadersBuildPhase section */ 280 | 2D8642FB9F8F084C2D4F1EB3CEB741A9 /* Headers */ = { 281 | isa = PBXHeadersBuildPhase; 282 | buildActionMask = 2147483647; 283 | files = ( 284 | 00B445DA37711B17D3B5BF61B107D9BC /* Pods-FloatingLabelTextFieldSwiftUI_Example-umbrella.h in Headers */, 285 | ); 286 | runOnlyForDeploymentPostprocessing = 0; 287 | }; 288 | 783E4C162D5D84807EA6CAFF8798C15F /* Headers */ = { 289 | isa = PBXHeadersBuildPhase; 290 | buildActionMask = 2147483647; 291 | files = ( 292 | EFC9F1C33300780EBAF20C94ACF76B79 /* FloatingLabelTextFieldSwiftUI-umbrella.h in Headers */, 293 | ); 294 | runOnlyForDeploymentPostprocessing = 0; 295 | }; 296 | 7F1B74F8B5F2A6613CDB6B72E0E4F10D /* Headers */ = { 297 | isa = PBXHeadersBuildPhase; 298 | buildActionMask = 2147483647; 299 | files = ( 300 | 1EC95B678A0CEB64339DCD6A7282A499 /* Pods-FloatingLabelTextFieldSwiftUI_Tests-umbrella.h in Headers */, 301 | ); 302 | runOnlyForDeploymentPostprocessing = 0; 303 | }; 304 | /* End PBXHeadersBuildPhase section */ 305 | 306 | /* Begin PBXNativeTarget section */ 307 | 39AED5B13D90A639FED583687DD69045 /* Pods-FloatingLabelTextFieldSwiftUI_Example */ = { 308 | isa = PBXNativeTarget; 309 | buildConfigurationList = 421E764DD8CE8BE49ED38156C9EF2812 /* Build configuration list for PBXNativeTarget "Pods-FloatingLabelTextFieldSwiftUI_Example" */; 310 | buildPhases = ( 311 | 2D8642FB9F8F084C2D4F1EB3CEB741A9 /* Headers */, 312 | 3EB0CFE80AE815BBED3BBD16B0DF35C1 /* Sources */, 313 | 2BE77113FB5872FD6F8CD58600DA95BB /* Frameworks */, 314 | 1A94EE7E00D66E4D29BE5B4535483FB7 /* Resources */, 315 | ); 316 | buildRules = ( 317 | ); 318 | dependencies = ( 319 | 2411B89C8B13880FC3DB32739DB60436 /* PBXTargetDependency */, 320 | ); 321 | name = "Pods-FloatingLabelTextFieldSwiftUI_Example"; 322 | productName = "Pods-FloatingLabelTextFieldSwiftUI_Example"; 323 | productReference = D62B2968F7942E8B9BCC6758997EE9CF /* Pods_FloatingLabelTextFieldSwiftUI_Example.framework */; 324 | productType = "com.apple.product-type.framework"; 325 | }; 326 | 48B000E20376AD7DCCEE447AA743086F /* Pods-FloatingLabelTextFieldSwiftUI_Tests */ = { 327 | isa = PBXNativeTarget; 328 | buildConfigurationList = 914ACF1501A1FD8E232393D8865C2825 /* Build configuration list for PBXNativeTarget "Pods-FloatingLabelTextFieldSwiftUI_Tests" */; 329 | buildPhases = ( 330 | 7F1B74F8B5F2A6613CDB6B72E0E4F10D /* Headers */, 331 | E57AEBB74F144C4D193637A5DF781EDA /* Sources */, 332 | C02F0EDC7E226D8109BD69CF3BB25141 /* Frameworks */, 333 | 1D3BAED4720C257C273DA49332D94469 /* Resources */, 334 | ); 335 | buildRules = ( 336 | ); 337 | dependencies = ( 338 | 92A1888B3DCD7EBA70AB595C641E57DA /* PBXTargetDependency */, 339 | ); 340 | name = "Pods-FloatingLabelTextFieldSwiftUI_Tests"; 341 | productName = "Pods-FloatingLabelTextFieldSwiftUI_Tests"; 342 | productReference = C39E0E7B66FC87CD98B5722E71EC598E /* Pods_FloatingLabelTextFieldSwiftUI_Tests.framework */; 343 | productType = "com.apple.product-type.framework"; 344 | }; 345 | F6129FEE7258F0F621C402FA13E86152 /* FloatingLabelTextFieldSwiftUI */ = { 346 | isa = PBXNativeTarget; 347 | buildConfigurationList = 9D765CFEB937E83BF566AC11AC19169E /* Build configuration list for PBXNativeTarget "FloatingLabelTextFieldSwiftUI" */; 348 | buildPhases = ( 349 | 783E4C162D5D84807EA6CAFF8798C15F /* Headers */, 350 | ED4F4BF1729E8ABDABB828174EDC02A3 /* Sources */, 351 | F777CED05BEEFDC2DCB316576B3F8721 /* Frameworks */, 352 | 514FD42BF98E6BB2517B131E09961ED2 /* Resources */, 353 | ); 354 | buildRules = ( 355 | ); 356 | dependencies = ( 357 | ); 358 | name = FloatingLabelTextFieldSwiftUI; 359 | productName = FloatingLabelTextFieldSwiftUI; 360 | productReference = 86A69F4F3096C8F4DEF7164078CE3E30 /* FloatingLabelTextFieldSwiftUI.framework */; 361 | productType = "com.apple.product-type.framework"; 362 | }; 363 | /* End PBXNativeTarget section */ 364 | 365 | /* Begin PBXProject section */ 366 | BFDFE7DC352907FC980B868725387E98 /* Project object */ = { 367 | isa = PBXProject; 368 | attributes = { 369 | LastSwiftUpdateCheck = 1100; 370 | LastUpgradeCheck = 1100; 371 | }; 372 | buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; 373 | compatibilityVersion = "Xcode 3.2"; 374 | developmentRegion = en; 375 | hasScannedForEncodings = 0; 376 | knownRegions = ( 377 | en, 378 | Base, 379 | ); 380 | mainGroup = CF1408CF629C7361332E53B88F7BD30C; 381 | productRefGroup = 4F94AF7B98DB58C936A178227C8D80E1 /* Products */; 382 | projectDirPath = ""; 383 | projectRoot = ""; 384 | targets = ( 385 | F6129FEE7258F0F621C402FA13E86152 /* FloatingLabelTextFieldSwiftUI */, 386 | 39AED5B13D90A639FED583687DD69045 /* Pods-FloatingLabelTextFieldSwiftUI_Example */, 387 | 48B000E20376AD7DCCEE447AA743086F /* Pods-FloatingLabelTextFieldSwiftUI_Tests */, 388 | ); 389 | }; 390 | /* End PBXProject section */ 391 | 392 | /* Begin PBXResourcesBuildPhase section */ 393 | 1A94EE7E00D66E4D29BE5B4535483FB7 /* Resources */ = { 394 | isa = PBXResourcesBuildPhase; 395 | buildActionMask = 2147483647; 396 | files = ( 397 | ); 398 | runOnlyForDeploymentPostprocessing = 0; 399 | }; 400 | 1D3BAED4720C257C273DA49332D94469 /* Resources */ = { 401 | isa = PBXResourcesBuildPhase; 402 | buildActionMask = 2147483647; 403 | files = ( 404 | ); 405 | runOnlyForDeploymentPostprocessing = 0; 406 | }; 407 | 514FD42BF98E6BB2517B131E09961ED2 /* Resources */ = { 408 | isa = PBXResourcesBuildPhase; 409 | buildActionMask = 2147483647; 410 | files = ( 411 | ); 412 | runOnlyForDeploymentPostprocessing = 0; 413 | }; 414 | /* End PBXResourcesBuildPhase section */ 415 | 416 | /* Begin PBXSourcesBuildPhase section */ 417 | 3EB0CFE80AE815BBED3BBD16B0DF35C1 /* Sources */ = { 418 | isa = PBXSourcesBuildPhase; 419 | buildActionMask = 2147483647; 420 | files = ( 421 | ADBBA635D4793CBBDF9C0F7B5785C5F8 /* Pods-FloatingLabelTextFieldSwiftUI_Example-dummy.m in Sources */, 422 | ); 423 | runOnlyForDeploymentPostprocessing = 0; 424 | }; 425 | E57AEBB74F144C4D193637A5DF781EDA /* Sources */ = { 426 | isa = PBXSourcesBuildPhase; 427 | buildActionMask = 2147483647; 428 | files = ( 429 | 74863C5D4183CE32FDEBC4C8111967E4 /* Pods-FloatingLabelTextFieldSwiftUI_Tests-dummy.m in Sources */, 430 | ); 431 | runOnlyForDeploymentPostprocessing = 0; 432 | }; 433 | ED4F4BF1729E8ABDABB828174EDC02A3 /* Sources */ = { 434 | isa = PBXSourcesBuildPhase; 435 | buildActionMask = 2147483647; 436 | files = ( 437 | 5D3CE01F249BC5CE003DC54C /* String+Extension.swift in Sources */, 438 | 5D3CE056249BDB50003DC54C /* Validator.swift in Sources */, 439 | EA1534356550BCA26D1F0E3A4316A6D1 /* FloatingLabelTextField.swift in Sources */, 440 | B23D4D22E076BF2B1EE653CF63738C28 /* FloatingLabelTextFieldSwiftUI-dummy.m in Sources */, 441 | 0C6A91CB7E7B145CC7B93D895A7CA575 /* ObservableObject.swift in Sources */, 442 | 5D25032625652F2B00DC5927 /* UITextField+Extension.swift in Sources */, 443 | 529AC9170C1266E4CED03C7D4EF38DB8 /* TextAlignment+Extension.swift in Sources */, 444 | 78DCFBBED4CA94D1B49926ED23ACB7D1 /* UIControl+Extension.swift in Sources */, 445 | 047CB0BE0830C3359216F689E3BF986D /* UIResponder+Extesnion.swift in Sources */, 446 | 25B2FD0FCD64AE18FB6BDD266758D3CB /* View+Extension.swift in Sources */, 447 | ); 448 | runOnlyForDeploymentPostprocessing = 0; 449 | }; 450 | /* End PBXSourcesBuildPhase section */ 451 | 452 | /* Begin PBXTargetDependency section */ 453 | 2411B89C8B13880FC3DB32739DB60436 /* PBXTargetDependency */ = { 454 | isa = PBXTargetDependency; 455 | name = FloatingLabelTextFieldSwiftUI; 456 | target = F6129FEE7258F0F621C402FA13E86152 /* FloatingLabelTextFieldSwiftUI */; 457 | targetProxy = FCDA340248E60F2A3943421D096ECE53 /* PBXContainerItemProxy */; 458 | }; 459 | 92A1888B3DCD7EBA70AB595C641E57DA /* PBXTargetDependency */ = { 460 | isa = PBXTargetDependency; 461 | name = "Pods-FloatingLabelTextFieldSwiftUI_Example"; 462 | target = 39AED5B13D90A639FED583687DD69045 /* Pods-FloatingLabelTextFieldSwiftUI_Example */; 463 | targetProxy = 2DE8DE34C6DBE26E6E3E28D43EADBB77 /* PBXContainerItemProxy */; 464 | }; 465 | /* End PBXTargetDependency section */ 466 | 467 | /* Begin XCBuildConfiguration section */ 468 | 1422B121EAEAEA11307496903FA623C6 /* Release */ = { 469 | isa = XCBuildConfiguration; 470 | buildSettings = { 471 | ALWAYS_SEARCH_USER_PATHS = NO; 472 | CLANG_ANALYZER_NONNULL = YES; 473 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 474 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 475 | CLANG_CXX_LIBRARY = "libc++"; 476 | CLANG_ENABLE_MODULES = YES; 477 | CLANG_ENABLE_OBJC_ARC = YES; 478 | CLANG_ENABLE_OBJC_WEAK = YES; 479 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 480 | CLANG_WARN_BOOL_CONVERSION = YES; 481 | CLANG_WARN_COMMA = YES; 482 | CLANG_WARN_CONSTANT_CONVERSION = YES; 483 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 484 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 485 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 486 | CLANG_WARN_EMPTY_BODY = YES; 487 | CLANG_WARN_ENUM_CONVERSION = YES; 488 | CLANG_WARN_INFINITE_RECURSION = YES; 489 | CLANG_WARN_INT_CONVERSION = YES; 490 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 491 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 492 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 493 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 494 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 495 | CLANG_WARN_STRICT_PROTOTYPES = YES; 496 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 497 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 498 | CLANG_WARN_UNREACHABLE_CODE = YES; 499 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 500 | COPY_PHASE_STRIP = NO; 501 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 502 | ENABLE_NS_ASSERTIONS = NO; 503 | ENABLE_STRICT_OBJC_MSGSEND = YES; 504 | GCC_C_LANGUAGE_STANDARD = gnu11; 505 | GCC_NO_COMMON_BLOCKS = YES; 506 | GCC_PREPROCESSOR_DEFINITIONS = ( 507 | "POD_CONFIGURATION_RELEASE=1", 508 | "$(inherited)", 509 | ); 510 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 511 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 512 | GCC_WARN_UNDECLARED_SELECTOR = YES; 513 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 514 | GCC_WARN_UNUSED_FUNCTION = YES; 515 | GCC_WARN_UNUSED_VARIABLE = YES; 516 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 517 | MTL_ENABLE_DEBUG_INFO = NO; 518 | MTL_FAST_MATH = YES; 519 | PRODUCT_NAME = "$(TARGET_NAME)"; 520 | STRIP_INSTALLED_PRODUCT = NO; 521 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 522 | SWIFT_VERSION = 5.0; 523 | SYMROOT = "${SRCROOT}/../build"; 524 | }; 525 | name = Release; 526 | }; 527 | 402EF2B958273A7355C4450F61574151 /* Release */ = { 528 | isa = XCBuildConfiguration; 529 | baseConfigurationReference = 379E19BC27CAD1B499B2626FA17DF32F /* Pods-FloatingLabelTextFieldSwiftUI_Example.release.xcconfig */; 530 | buildSettings = { 531 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 532 | ARCHS = "$(ARCHS_STANDARD_64_BIT)"; 533 | CLANG_ENABLE_OBJC_WEAK = NO; 534 | CODE_SIGN_IDENTITY = ""; 535 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 536 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 537 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 538 | CURRENT_PROJECT_VERSION = 1; 539 | DEFINES_MODULE = YES; 540 | DYLIB_COMPATIBILITY_VERSION = 1; 541 | DYLIB_CURRENT_VERSION = 1; 542 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 543 | INFOPLIST_FILE = "Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Example/Pods-FloatingLabelTextFieldSwiftUI_Example-Info.plist"; 544 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 545 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 546 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 547 | MACH_O_TYPE = staticlib; 548 | MODULEMAP_FILE = "Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Example/Pods-FloatingLabelTextFieldSwiftUI_Example.modulemap"; 549 | OTHER_LDFLAGS = ""; 550 | OTHER_LIBTOOLFLAGS = ""; 551 | PODS_ROOT = "$(SRCROOT)"; 552 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 553 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 554 | SDKROOT = iphoneos; 555 | SKIP_INSTALL = YES; 556 | TARGETED_DEVICE_FAMILY = "1,2"; 557 | VALIDATE_PRODUCT = YES; 558 | VERSIONING_SYSTEM = "apple-generic"; 559 | VERSION_INFO_PREFIX = ""; 560 | }; 561 | name = Release; 562 | }; 563 | 666E0424D06EC7972F003E9791313EF3 /* Debug */ = { 564 | isa = XCBuildConfiguration; 565 | baseConfigurationReference = 4EFE66E7FD8BADD7412A7F69C1AD9FE0 /* FloatingLabelTextFieldSwiftUI.debug.xcconfig */; 566 | buildSettings = { 567 | ARCHS = "$(ARCHS_STANDARD_64_BIT)"; 568 | CLANG_ENABLE_OBJC_WEAK = NO; 569 | CODE_SIGN_IDENTITY = ""; 570 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 571 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 572 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 573 | CURRENT_PROJECT_VERSION = 1; 574 | DEFINES_MODULE = YES; 575 | DYLIB_COMPATIBILITY_VERSION = 1; 576 | DYLIB_CURRENT_VERSION = 1; 577 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 578 | GCC_PREFIX_HEADER = "Target Support Files/FloatingLabelTextFieldSwiftUI/FloatingLabelTextFieldSwiftUI-prefix.pch"; 579 | INFOPLIST_FILE = "Target Support Files/FloatingLabelTextFieldSwiftUI/FloatingLabelTextFieldSwiftUI-Info.plist"; 580 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 581 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 582 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 583 | MODULEMAP_FILE = "Target Support Files/FloatingLabelTextFieldSwiftUI/FloatingLabelTextFieldSwiftUI.modulemap"; 584 | PRODUCT_MODULE_NAME = FloatingLabelTextFieldSwiftUI; 585 | PRODUCT_NAME = FloatingLabelTextFieldSwiftUI; 586 | SDKROOT = iphoneos; 587 | SKIP_INSTALL = YES; 588 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; 589 | SWIFT_VERSION = 5.0; 590 | TARGETED_DEVICE_FAMILY = "1,2"; 591 | VERSIONING_SYSTEM = "apple-generic"; 592 | VERSION_INFO_PREFIX = ""; 593 | }; 594 | name = Debug; 595 | }; 596 | 6D95FF82CD35E0E8AB69F362E5563720 /* Debug */ = { 597 | isa = XCBuildConfiguration; 598 | baseConfigurationReference = D0226F1148958C267735A53677AC4E48 /* Pods-FloatingLabelTextFieldSwiftUI_Tests.debug.xcconfig */; 599 | buildSettings = { 600 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 601 | ARCHS = "$(ARCHS_STANDARD_64_BIT)"; 602 | CLANG_ENABLE_OBJC_WEAK = NO; 603 | CODE_SIGN_IDENTITY = ""; 604 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 605 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 606 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 607 | CURRENT_PROJECT_VERSION = 1; 608 | DEFINES_MODULE = YES; 609 | DYLIB_COMPATIBILITY_VERSION = 1; 610 | DYLIB_CURRENT_VERSION = 1; 611 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 612 | INFOPLIST_FILE = "Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Tests/Pods-FloatingLabelTextFieldSwiftUI_Tests-Info.plist"; 613 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 614 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 615 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 616 | MACH_O_TYPE = staticlib; 617 | MODULEMAP_FILE = "Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Tests/Pods-FloatingLabelTextFieldSwiftUI_Tests.modulemap"; 618 | OTHER_LDFLAGS = ""; 619 | OTHER_LIBTOOLFLAGS = ""; 620 | PODS_ROOT = "$(SRCROOT)"; 621 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 622 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 623 | SDKROOT = iphoneos; 624 | SKIP_INSTALL = YES; 625 | TARGETED_DEVICE_FAMILY = "1,2"; 626 | VERSIONING_SYSTEM = "apple-generic"; 627 | VERSION_INFO_PREFIX = ""; 628 | }; 629 | name = Debug; 630 | }; 631 | 8C48CA736A49F0A1B7EDD61662DD56C7 /* Release */ = { 632 | isa = XCBuildConfiguration; 633 | baseConfigurationReference = A66F6EFBA7A2FF5E4F3E354280068E89 /* FloatingLabelTextFieldSwiftUI.release.xcconfig */; 634 | buildSettings = { 635 | ARCHS = "$(ARCHS_STANDARD_64_BIT)"; 636 | CLANG_ENABLE_OBJC_WEAK = NO; 637 | CODE_SIGN_IDENTITY = ""; 638 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 639 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 640 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 641 | CURRENT_PROJECT_VERSION = 1; 642 | DEFINES_MODULE = YES; 643 | DYLIB_COMPATIBILITY_VERSION = 1; 644 | DYLIB_CURRENT_VERSION = 1; 645 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 646 | GCC_PREFIX_HEADER = "Target Support Files/FloatingLabelTextFieldSwiftUI/FloatingLabelTextFieldSwiftUI-prefix.pch"; 647 | INFOPLIST_FILE = "Target Support Files/FloatingLabelTextFieldSwiftUI/FloatingLabelTextFieldSwiftUI-Info.plist"; 648 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 649 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 650 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 651 | MODULEMAP_FILE = "Target Support Files/FloatingLabelTextFieldSwiftUI/FloatingLabelTextFieldSwiftUI.modulemap"; 652 | PRODUCT_MODULE_NAME = FloatingLabelTextFieldSwiftUI; 653 | PRODUCT_NAME = FloatingLabelTextFieldSwiftUI; 654 | SDKROOT = iphoneos; 655 | SKIP_INSTALL = YES; 656 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; 657 | SWIFT_VERSION = 5.0; 658 | TARGETED_DEVICE_FAMILY = "1,2"; 659 | VALIDATE_PRODUCT = YES; 660 | VERSIONING_SYSTEM = "apple-generic"; 661 | VERSION_INFO_PREFIX = ""; 662 | }; 663 | name = Release; 664 | }; 665 | AD879CD905AEBD3957D4009422F0D9BF /* Debug */ = { 666 | isa = XCBuildConfiguration; 667 | baseConfigurationReference = D2250C0BC386E22EA82073CDDD920C70 /* Pods-FloatingLabelTextFieldSwiftUI_Example.debug.xcconfig */; 668 | buildSettings = { 669 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 670 | ARCHS = "$(ARCHS_STANDARD_64_BIT)"; 671 | CLANG_ENABLE_OBJC_WEAK = NO; 672 | CODE_SIGN_IDENTITY = ""; 673 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 674 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 675 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 676 | CURRENT_PROJECT_VERSION = 1; 677 | DEFINES_MODULE = YES; 678 | DYLIB_COMPATIBILITY_VERSION = 1; 679 | DYLIB_CURRENT_VERSION = 1; 680 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 681 | INFOPLIST_FILE = "Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Example/Pods-FloatingLabelTextFieldSwiftUI_Example-Info.plist"; 682 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 683 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 684 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 685 | MACH_O_TYPE = staticlib; 686 | MODULEMAP_FILE = "Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Example/Pods-FloatingLabelTextFieldSwiftUI_Example.modulemap"; 687 | OTHER_LDFLAGS = ""; 688 | OTHER_LIBTOOLFLAGS = ""; 689 | PODS_ROOT = "$(SRCROOT)"; 690 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 691 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 692 | SDKROOT = iphoneos; 693 | SKIP_INSTALL = YES; 694 | TARGETED_DEVICE_FAMILY = "1,2"; 695 | VERSIONING_SYSTEM = "apple-generic"; 696 | VERSION_INFO_PREFIX = ""; 697 | }; 698 | name = Debug; 699 | }; 700 | ED7888FA6713EABBF66D26A8003AD1CA /* Debug */ = { 701 | isa = XCBuildConfiguration; 702 | buildSettings = { 703 | ALWAYS_SEARCH_USER_PATHS = NO; 704 | CLANG_ANALYZER_NONNULL = YES; 705 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 706 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 707 | CLANG_CXX_LIBRARY = "libc++"; 708 | CLANG_ENABLE_MODULES = YES; 709 | CLANG_ENABLE_OBJC_ARC = YES; 710 | CLANG_ENABLE_OBJC_WEAK = YES; 711 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 712 | CLANG_WARN_BOOL_CONVERSION = YES; 713 | CLANG_WARN_COMMA = YES; 714 | CLANG_WARN_CONSTANT_CONVERSION = YES; 715 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 716 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 717 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 718 | CLANG_WARN_EMPTY_BODY = YES; 719 | CLANG_WARN_ENUM_CONVERSION = YES; 720 | CLANG_WARN_INFINITE_RECURSION = YES; 721 | CLANG_WARN_INT_CONVERSION = YES; 722 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 723 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 724 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 725 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 726 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 727 | CLANG_WARN_STRICT_PROTOTYPES = YES; 728 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 729 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 730 | CLANG_WARN_UNREACHABLE_CODE = YES; 731 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 732 | COPY_PHASE_STRIP = NO; 733 | DEBUG_INFORMATION_FORMAT = dwarf; 734 | ENABLE_STRICT_OBJC_MSGSEND = YES; 735 | ENABLE_TESTABILITY = YES; 736 | GCC_C_LANGUAGE_STANDARD = gnu11; 737 | GCC_DYNAMIC_NO_PIC = NO; 738 | GCC_NO_COMMON_BLOCKS = YES; 739 | GCC_OPTIMIZATION_LEVEL = 0; 740 | GCC_PREPROCESSOR_DEFINITIONS = ( 741 | "POD_CONFIGURATION_DEBUG=1", 742 | "DEBUG=1", 743 | "$(inherited)", 744 | ); 745 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 746 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 747 | GCC_WARN_UNDECLARED_SELECTOR = YES; 748 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 749 | GCC_WARN_UNUSED_FUNCTION = YES; 750 | GCC_WARN_UNUSED_VARIABLE = YES; 751 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 752 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 753 | MTL_FAST_MATH = YES; 754 | ONLY_ACTIVE_ARCH = YES; 755 | PRODUCT_NAME = "$(TARGET_NAME)"; 756 | STRIP_INSTALLED_PRODUCT = NO; 757 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 758 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 759 | SWIFT_VERSION = 5.0; 760 | SYMROOT = "${SRCROOT}/../build"; 761 | }; 762 | name = Debug; 763 | }; 764 | FEBD6D93A7B62788B00D67221DCE56CC /* Release */ = { 765 | isa = XCBuildConfiguration; 766 | baseConfigurationReference = 9158B5E60774F307FC287D2307E4A17E /* Pods-FloatingLabelTextFieldSwiftUI_Tests.release.xcconfig */; 767 | buildSettings = { 768 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; 769 | ARCHS = "$(ARCHS_STANDARD_64_BIT)"; 770 | CLANG_ENABLE_OBJC_WEAK = NO; 771 | CODE_SIGN_IDENTITY = ""; 772 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; 773 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; 774 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; 775 | CURRENT_PROJECT_VERSION = 1; 776 | DEFINES_MODULE = YES; 777 | DYLIB_COMPATIBILITY_VERSION = 1; 778 | DYLIB_CURRENT_VERSION = 1; 779 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 780 | INFOPLIST_FILE = "Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Tests/Pods-FloatingLabelTextFieldSwiftUI_Tests-Info.plist"; 781 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 782 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 783 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 784 | MACH_O_TYPE = staticlib; 785 | MODULEMAP_FILE = "Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Tests/Pods-FloatingLabelTextFieldSwiftUI_Tests.modulemap"; 786 | OTHER_LDFLAGS = ""; 787 | OTHER_LIBTOOLFLAGS = ""; 788 | PODS_ROOT = "$(SRCROOT)"; 789 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; 790 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 791 | SDKROOT = iphoneos; 792 | SKIP_INSTALL = YES; 793 | TARGETED_DEVICE_FAMILY = "1,2"; 794 | VALIDATE_PRODUCT = YES; 795 | VERSIONING_SYSTEM = "apple-generic"; 796 | VERSION_INFO_PREFIX = ""; 797 | }; 798 | name = Release; 799 | }; 800 | /* End XCBuildConfiguration section */ 801 | 802 | /* Begin XCConfigurationList section */ 803 | 421E764DD8CE8BE49ED38156C9EF2812 /* Build configuration list for PBXNativeTarget "Pods-FloatingLabelTextFieldSwiftUI_Example" */ = { 804 | isa = XCConfigurationList; 805 | buildConfigurations = ( 806 | AD879CD905AEBD3957D4009422F0D9BF /* Debug */, 807 | 402EF2B958273A7355C4450F61574151 /* Release */, 808 | ); 809 | defaultConfigurationIsVisible = 0; 810 | defaultConfigurationName = Release; 811 | }; 812 | 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { 813 | isa = XCConfigurationList; 814 | buildConfigurations = ( 815 | ED7888FA6713EABBF66D26A8003AD1CA /* Debug */, 816 | 1422B121EAEAEA11307496903FA623C6 /* Release */, 817 | ); 818 | defaultConfigurationIsVisible = 0; 819 | defaultConfigurationName = Release; 820 | }; 821 | 914ACF1501A1FD8E232393D8865C2825 /* Build configuration list for PBXNativeTarget "Pods-FloatingLabelTextFieldSwiftUI_Tests" */ = { 822 | isa = XCConfigurationList; 823 | buildConfigurations = ( 824 | 6D95FF82CD35E0E8AB69F362E5563720 /* Debug */, 825 | FEBD6D93A7B62788B00D67221DCE56CC /* Release */, 826 | ); 827 | defaultConfigurationIsVisible = 0; 828 | defaultConfigurationName = Release; 829 | }; 830 | 9D765CFEB937E83BF566AC11AC19169E /* Build configuration list for PBXNativeTarget "FloatingLabelTextFieldSwiftUI" */ = { 831 | isa = XCConfigurationList; 832 | buildConfigurations = ( 833 | 666E0424D06EC7972F003E9791313EF3 /* Debug */, 834 | 8C48CA736A49F0A1B7EDD61662DD56C7 /* Release */, 835 | ); 836 | defaultConfigurationIsVisible = 0; 837 | defaultConfigurationName = Release; 838 | }; 839 | /* End XCConfigurationList section */ 840 | }; 841 | rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; 842 | } 843 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/Pods/Pods.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FloatingLabelTextFieldSwiftUI/FloatingLabelTextFieldSwiftUI-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 3.1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FloatingLabelTextFieldSwiftUI/FloatingLabelTextFieldSwiftUI-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_FloatingLabelTextFieldSwiftUI : NSObject 3 | @end 4 | @implementation PodsDummy_FloatingLabelTextFieldSwiftUI 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FloatingLabelTextFieldSwiftUI/FloatingLabelTextFieldSwiftUI-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FloatingLabelTextFieldSwiftUI/FloatingLabelTextFieldSwiftUI-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double FloatingLabelTextFieldSwiftUIVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char FloatingLabelTextFieldSwiftUIVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FloatingLabelTextFieldSwiftUI/FloatingLabelTextFieldSwiftUI.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FloatingLabelTextFieldSwiftUI 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 11 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FloatingLabelTextFieldSwiftUI/FloatingLabelTextFieldSwiftUI.modulemap: -------------------------------------------------------------------------------- 1 | framework module FloatingLabelTextFieldSwiftUI { 2 | umbrella header "FloatingLabelTextFieldSwiftUI-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/FloatingLabelTextFieldSwiftUI/FloatingLabelTextFieldSwiftUI.release.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FloatingLabelTextFieldSwiftUI 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 11 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Example/Pods-FloatingLabelTextFieldSwiftUI_Example-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Example/Pods-FloatingLabelTextFieldSwiftUI_Example-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## FloatingLabelTextFieldSwiftUI 5 | 6 | Copyright (c) 2020 kishanraja 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | 26 | Generated by CocoaPods - https://cocoapods.org 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Example/Pods-FloatingLabelTextFieldSwiftUI_Example-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Copyright (c) 2020 kishanraja <rajakishanrk1996@gmail.com> 18 | 19 | Permission is hereby granted, free of charge, to any person obtaining a copy 20 | of this software and associated documentation files (the "Software"), to deal 21 | in the Software without restriction, including without limitation the rights 22 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 23 | copies of the Software, and to permit persons to whom the Software is 24 | furnished to do so, subject to the following conditions: 25 | 26 | The above copyright notice and this permission notice shall be included in 27 | all copies or substantial portions of the Software. 28 | 29 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 30 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 31 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 32 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 33 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 34 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 35 | THE SOFTWARE. 36 | 37 | License 38 | MIT 39 | Title 40 | FloatingLabelTextFieldSwiftUI 41 | Type 42 | PSGroupSpecifier 43 | 44 | 45 | FooterText 46 | Generated by CocoaPods - https://cocoapods.org 47 | Title 48 | 49 | Type 50 | PSGroupSpecifier 51 | 52 | 53 | StringsTable 54 | Acknowledgements 55 | Title 56 | Acknowledgements 57 | 58 | 59 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Example/Pods-FloatingLabelTextFieldSwiftUI_Example-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_FloatingLabelTextFieldSwiftUI_Example : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_FloatingLabelTextFieldSwiftUI_Example 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Example/Pods-FloatingLabelTextFieldSwiftUI_Example-frameworks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | set -u 4 | set -o pipefail 5 | 6 | function on_error { 7 | echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" 8 | } 9 | trap 'on_error $LINENO' ERR 10 | 11 | if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then 12 | # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy 13 | # frameworks to, so exit 0 (signalling the script phase was successful). 14 | exit 0 15 | fi 16 | 17 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 18 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 19 | 20 | COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" 21 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" 22 | 23 | # Used as a return value for each invocation of `strip_invalid_archs` function. 24 | STRIP_BINARY_RETVAL=0 25 | 26 | # This protects against multiple targets copying the same framework dependency at the same time. The solution 27 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html 28 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") 29 | 30 | # Copies and strips a vendored framework 31 | install_framework() 32 | { 33 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then 34 | local source="${BUILT_PRODUCTS_DIR}/$1" 35 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then 36 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" 37 | elif [ -r "$1" ]; then 38 | local source="$1" 39 | fi 40 | 41 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 42 | 43 | if [ -L "${source}" ]; then 44 | echo "Symlinked..." 45 | source="$(readlink "${source}")" 46 | fi 47 | 48 | # Use filter instead of exclude so missing patterns don't throw errors. 49 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" 50 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" 51 | 52 | local basename 53 | basename="$(basename -s .framework "$1")" 54 | binary="${destination}/${basename}.framework/${basename}" 55 | 56 | if ! [ -r "$binary" ]; then 57 | binary="${destination}/${basename}" 58 | elif [ -L "${binary}" ]; then 59 | echo "Destination binary is symlinked..." 60 | dirname="$(dirname "${binary}")" 61 | binary="${dirname}/$(readlink "${binary}")" 62 | fi 63 | 64 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 65 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then 66 | strip_invalid_archs "$binary" 67 | fi 68 | 69 | # Resign the code if required by the build settings to avoid unstable apps 70 | code_sign_if_enabled "${destination}/$(basename "$1")" 71 | 72 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. 73 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then 74 | local swift_runtime_libs 75 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u) 76 | for lib in $swift_runtime_libs; do 77 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" 78 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" 79 | code_sign_if_enabled "${destination}/${lib}" 80 | done 81 | fi 82 | } 83 | 84 | # Copies and strips a vendored dSYM 85 | install_dsym() { 86 | local source="$1" 87 | warn_missing_arch=${2:-true} 88 | if [ -r "$source" ]; then 89 | # Copy the dSYM into the targets temp dir. 90 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" 91 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" 92 | 93 | local basename 94 | basename="$(basename -s .dSYM "$source")" 95 | binary_name="$(ls "$source/Contents/Resources/DWARF")" 96 | binary="${DERIVED_FILES_DIR}/${basename}.dSYM/Contents/Resources/DWARF/${binary_name}" 97 | 98 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 99 | if [[ "$(file "$binary")" == *"Mach-O "*"dSYM companion"* ]]; then 100 | strip_invalid_archs "$binary" "$warn_missing_arch" 101 | fi 102 | 103 | if [[ $STRIP_BINARY_RETVAL == 1 ]]; then 104 | # Move the stripped file into its final destination. 105 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" 106 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.dSYM" "${DWARF_DSYM_FOLDER_PATH}" 107 | else 108 | # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. 109 | touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.dSYM" 110 | fi 111 | fi 112 | } 113 | 114 | # Copies the bcsymbolmap files of a vendored framework 115 | install_bcsymbolmap() { 116 | local bcsymbolmap_path="$1" 117 | local destination="${BUILT_PRODUCTS_DIR}" 118 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}"" 119 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${bcsymbolmap_path}" "${destination}" 120 | } 121 | 122 | # Signs a framework with the provided identity 123 | code_sign_if_enabled() { 124 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then 125 | # Use the current code_sign_identity 126 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 127 | local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" 128 | 129 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 130 | code_sign_cmd="$code_sign_cmd &" 131 | fi 132 | echo "$code_sign_cmd" 133 | eval "$code_sign_cmd" 134 | fi 135 | } 136 | 137 | # Strip invalid architectures 138 | strip_invalid_archs() { 139 | binary="$1" 140 | warn_missing_arch=${2:-true} 141 | # Get architectures for current target binary 142 | binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" 143 | # Intersect them with the architectures we are building for 144 | intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" 145 | # If there are no archs supported by this binary then warn the user 146 | if [[ -z "$intersected_archs" ]]; then 147 | if [[ "$warn_missing_arch" == "true" ]]; then 148 | echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." 149 | fi 150 | STRIP_BINARY_RETVAL=0 151 | return 152 | fi 153 | stripped="" 154 | for arch in $binary_archs; do 155 | if ! [[ "${ARCHS}" == *"$arch"* ]]; then 156 | # Strip non-valid architectures in-place 157 | lipo -remove "$arch" -output "$binary" "$binary" 158 | stripped="$stripped $arch" 159 | fi 160 | done 161 | if [[ "$stripped" ]]; then 162 | echo "Stripped $binary of architectures:$stripped" 163 | fi 164 | STRIP_BINARY_RETVAL=1 165 | } 166 | 167 | install_artifact() { 168 | artifact="$1" 169 | base="$(basename "$artifact")" 170 | case $base in 171 | *.framework) 172 | install_framework "$artifact" 173 | ;; 174 | *.dSYM) 175 | # Suppress arch warnings since XCFrameworks will include many dSYM files 176 | install_dsym "$artifact" "false" 177 | ;; 178 | *.bcsymbolmap) 179 | install_bcsymbolmap "$artifact" 180 | ;; 181 | *) 182 | echo "error: Unrecognized artifact "$artifact"" 183 | ;; 184 | esac 185 | } 186 | 187 | copy_artifacts() { 188 | file_list="$1" 189 | while read artifact; do 190 | install_artifact "$artifact" 191 | done <$file_list 192 | } 193 | 194 | ARTIFACT_LIST_FILE="${BUILT_PRODUCTS_DIR}/cocoapods-artifacts-${CONFIGURATION}.txt" 195 | if [ -r "${ARTIFACT_LIST_FILE}" ]; then 196 | copy_artifacts "${ARTIFACT_LIST_FILE}" 197 | fi 198 | 199 | if [[ "$CONFIGURATION" == "Debug" ]]; then 200 | install_framework "${BUILT_PRODUCTS_DIR}/FloatingLabelTextFieldSwiftUI/FloatingLabelTextFieldSwiftUI.framework" 201 | fi 202 | if [[ "$CONFIGURATION" == "Release" ]]; then 203 | install_framework "${BUILT_PRODUCTS_DIR}/FloatingLabelTextFieldSwiftUI/FloatingLabelTextFieldSwiftUI.framework" 204 | fi 205 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 206 | wait 207 | fi 208 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Example/Pods-FloatingLabelTextFieldSwiftUI_Example-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_FloatingLabelTextFieldSwiftUI_ExampleVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_FloatingLabelTextFieldSwiftUI_ExampleVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Example/Pods-FloatingLabelTextFieldSwiftUI_Example.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FloatingLabelTextFieldSwiftUI" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FloatingLabelTextFieldSwiftUI/FloatingLabelTextFieldSwiftUI.framework/Headers" 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 6 | OTHER_LDFLAGS = $(inherited) -framework "FloatingLabelTextFieldSwiftUI" 7 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 8 | PODS_BUILD_DIR = ${BUILD_DIR} 9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Example/Pods-FloatingLabelTextFieldSwiftUI_Example.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_FloatingLabelTextFieldSwiftUI_Example { 2 | umbrella header "Pods-FloatingLabelTextFieldSwiftUI_Example-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Example/Pods-FloatingLabelTextFieldSwiftUI_Example.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FloatingLabelTextFieldSwiftUI" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FloatingLabelTextFieldSwiftUI/FloatingLabelTextFieldSwiftUI.framework/Headers" 5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 6 | OTHER_LDFLAGS = $(inherited) -framework "FloatingLabelTextFieldSwiftUI" 7 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 8 | PODS_BUILD_DIR = ${BUILD_DIR} 9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Tests/Pods-FloatingLabelTextFieldSwiftUI_Tests-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Tests/Pods-FloatingLabelTextFieldSwiftUI_Tests-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | Generated by CocoaPods - https://cocoapods.org 4 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Tests/Pods-FloatingLabelTextFieldSwiftUI_Tests-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Generated by CocoaPods - https://cocoapods.org 18 | Title 19 | 20 | Type 21 | PSGroupSpecifier 22 | 23 | 24 | StringsTable 25 | Acknowledgements 26 | Title 27 | Acknowledgements 28 | 29 | 30 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Tests/Pods-FloatingLabelTextFieldSwiftUI_Tests-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_FloatingLabelTextFieldSwiftUI_Tests : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_FloatingLabelTextFieldSwiftUI_Tests 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Tests/Pods-FloatingLabelTextFieldSwiftUI_Tests-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_FloatingLabelTextFieldSwiftUI_TestsVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_FloatingLabelTextFieldSwiftUI_TestsVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Tests/Pods-FloatingLabelTextFieldSwiftUI_Tests.debug.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FloatingLabelTextFieldSwiftUI" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FloatingLabelTextFieldSwiftUI/FloatingLabelTextFieldSwiftUI.framework/Headers" 4 | OTHER_LDFLAGS = $(inherited) -framework "FloatingLabelTextFieldSwiftUI" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 8 | PODS_ROOT = ${SRCROOT}/Pods 9 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 10 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Tests/Pods-FloatingLabelTextFieldSwiftUI_Tests.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_FloatingLabelTextFieldSwiftUI_Tests { 2 | umbrella header "Pods-FloatingLabelTextFieldSwiftUI_Tests-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-FloatingLabelTextFieldSwiftUI_Tests/Pods-FloatingLabelTextFieldSwiftUI_Tests.release.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FloatingLabelTextFieldSwiftUI" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FloatingLabelTextFieldSwiftUI/FloatingLabelTextFieldSwiftUI.framework/Headers" 4 | OTHER_LDFLAGS = $(inherited) -framework "FloatingLabelTextFieldSwiftUI" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 8 | PODS_ROOT = ${SRCROOT}/Pods 9 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 10 | -------------------------------------------------------------------------------- /Example/Tests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /Example/Tests/Tests.swift: -------------------------------------------------------------------------------- 1 | import XCTest 2 | import FloatingLabelTextFieldSwiftUI 3 | 4 | class Tests: XCTestCase { 5 | 6 | override func setUp() { 7 | super.setUp() 8 | // Put setup code here. This method is called before the invocation of each test method in the class. 9 | } 10 | 11 | override func tearDown() { 12 | // Put teardown code here. This method is called after the invocation of each test method in the class. 13 | super.tearDown() 14 | } 15 | 16 | func testExample() { 17 | // This is an example of a functional test case. 18 | XCTAssert(true, "Pass") 19 | } 20 | 21 | func testPerformanceExample() { 22 | // This is an example of a performance test case. 23 | self.measure() { 24 | // Put the code you want to measure the time of here. 25 | } 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /FloatingLabelTextFieldSwiftUI.podspec: -------------------------------------------------------------------------------- 1 | # 2 | # Be sure to run `pod lib lint FloatingLabelTextFieldSwiftUI.podspec' to ensure this is a 3 | # valid spec before submitting. 4 | # 5 | # Any lines starting with a # are optional, but their use is encouraged 6 | # To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html 7 | # 8 | 9 | Pod::Spec.new do |s| 10 | s.name = 'FloatingLabelTextFieldSwiftUI' 11 | s.version = '4.2.1' 12 | s.summary = 'A beautiful floating label textfield library written in SwiftUI.' 13 | 14 | s.description = <<-DESC 15 | FloatingLabelTextField is a small and lightweight SwiftUI framework that allows to create beautiful and customisable floating label textfield! 16 | DESC 17 | 18 | s.homepage = 'https://github.com/kishanraja/FloatingLabelTextFieldSwiftUI' 19 | s.license = { :type => 'MIT', :file => 'LICENSE' } 20 | s.author = { 'kishanraja' => 'rajakishanrk1996@gmail.com' } 21 | s.source = { :git => 'https://github.com/kishanraja/FloatingLabelTextFieldSwiftUI.git', :tag => s.version.to_s } 22 | s.social_media_url = 'https://twitter.com/RajaKishan4' 23 | 24 | s.ios.deployment_target = '13.0' 25 | 26 | s.source_files = 'Sources/**/*.swift' 27 | 28 | s.swift_version = '5.0' 29 | s.platforms = { 30 | "ios": "13.0" 31 | } 32 | 33 | end 34 | -------------------------------------------------------------------------------- /FloatingLabelTextFieldSwiftUI/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kishanraja/FloatingLabelTextFieldSwiftUI/2f69aac37adc5f7dfd89cac10f1c8dff3219fd49/FloatingLabelTextFieldSwiftUI/Assets/.gitkeep -------------------------------------------------------------------------------- /FloatingLabelTextFieldSwiftUI/Classes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kishanraja/FloatingLabelTextFieldSwiftUI/2f69aac37adc5f7dfd89cac10f1c8dff3219fd49/FloatingLabelTextFieldSwiftUI/Classes/.gitkeep -------------------------------------------------------------------------------- /Graphics/FloatingLabelTextFieldSwiftUI.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kishanraja/FloatingLabelTextFieldSwiftUI/2f69aac37adc5f7dfd89cac10f1c8dff3219fd49/Graphics/FloatingLabelTextFieldSwiftUI.gif -------------------------------------------------------------------------------- /Graphics/email_validation.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kishanraja/FloatingLabelTextFieldSwiftUI/2f69aac37adc5f7dfd89cac10f1c8dff3219fd49/Graphics/email_validation.gif -------------------------------------------------------------------------------- /Graphics/left-right-view.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kishanraja/FloatingLabelTextFieldSwiftUI/2f69aac37adc5f7dfd89cac10f1c8dff3219fd49/Graphics/left-right-view.gif -------------------------------------------------------------------------------- /Graphics/name_validation.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kishanraja/FloatingLabelTextFieldSwiftUI/2f69aac37adc5f7dfd89cac10f1c8dff3219fd49/Graphics/name_validation.gif -------------------------------------------------------------------------------- /Graphics/normal_text_field.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kishanraja/FloatingLabelTextFieldSwiftUI/2f69aac37adc5f7dfd89cac10f1c8dff3219fd49/Graphics/normal_text_field.gif -------------------------------------------------------------------------------- /Graphics/secure_text_field.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kishanraja/FloatingLabelTextFieldSwiftUI/2f69aac37adc5f7dfd89cac10f1c8dff3219fd49/Graphics/secure_text_field.gif -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2020 kishanraja 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /Package.swift: -------------------------------------------------------------------------------- 1 | // swift-tools-version:5.7 2 | // The swift-tools-version declares the minimum version of Swift required to build this package. 3 | 4 | import PackageDescription 5 | 6 | let package = Package( 7 | name: "FloatingLabelTextFieldSwiftUI", 8 | platforms: [ 9 | .iOS(.v15), 10 | .macOS(.v12), 11 | .tvOS(.v15) 12 | ], 13 | products: [ 14 | // Products define the executables and libraries produced by a package, and make them visible to other packages. 15 | .library( 16 | name: "FloatingLabelTextFieldSwiftUI", 17 | targets: ["FloatingLabelTextFieldSwiftUI"]), 18 | ], 19 | dependencies: [ 20 | // Dependencies declare other packages that this package depends on. 21 | // .package(url: /* package url */, from: "1.0.0"), 22 | ], 23 | targets: [ 24 | // Targets are the basic building blocks of a package. A target can define a module or a test suite. 25 | // Targets can depend on other targets in this package, and on products in packages which this package depends on. 26 | .target( 27 | name: "FloatingLabelTextFieldSwiftUI", 28 | dependencies: []), 29 | .testTarget( 30 | name: "FloatingLabelTextFieldSwiftUITests", 31 | dependencies: ["FloatingLabelTextFieldSwiftUI"]), 32 | ] 33 | ) 34 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # FloatingLabelTextFieldSwiftUI 2 | 3 | [![CI Status](https://img.shields.io/travis/kishanraja/FloatingLabelTextFieldSwiftUI.svg?style=flat)](https://travis-ci.org/kishanraja/FloatingLabelTextFieldSwiftUI) 4 | [![Version](https://img.shields.io/cocoapods/v/FloatingLabelTextFieldSwiftUI.svg?style=flat)](https://cocoapods.org/pods/FloatingLabelTextFieldSwiftUI) 5 | [![License](https://img.shields.io/cocoapods/l/FloatingLabelTextFieldSwiftUI.svg?style=flat)](https://cocoapods.org/pods/FloatingLabelTextFieldSwiftUI) 6 | [![Platform](https://img.shields.io/cocoapods/p/FloatingLabelTextFieldSwiftUI.svg?style=flat)](https://cocoapods.org/pods/FloatingLabelTextFieldSwiftUI) 7 | 8 | 9 | FloatingLabelTextFieldSwiftUI is a small and lightweight SwiftUI framework written in completely swiftUI (not using UIViewRepresentable) that allows to create beautiful and customisable floating label textfield! This library support RTL text (eg. Arabic) and easy to add left view and right view to your text field and customizable. 10 | 11 |

12 | 13 | 14 |

15 | 16 | If you like the project, please do not forget to `star ★` this repository and follow me on GitHub. 17 | 18 | 19 | ## 📦 Requirements 20 | 21 | - iOS 13.0+ 22 | - Xcode 11.2+ 23 | - Swift 5.0 24 | 25 | ## 💻 Usage 26 | 27 | To start using the component add it to your project using CocoaPods or Swift Package. First of all import FloatingLabelTextFieldSwiftUI 28 | 29 | ```swift 30 | import FloatingLabelTextFieldSwiftUI 31 | ``` 32 | 33 |

34 | 35 | 36 |

37 | 38 | ```swift 39 | struct ContentView: View { 40 | 41 | @State private var firstName: String = "" 42 | 43 | var body: some View { 44 | 45 | FloatingLabelTextField($firstName, placeholder: "First Name", editingChanged: { (isChanged) in 46 | 47 | }) { 48 | 49 | }.frame(height: 70) 50 | } 51 | } 52 | ``` 53 | 54 | ### FloatingLabelTextFieldStyle and Colors: 55 | 56 | You can customize the colors of the textfield by using FloatingLabelTextFieldStyle property or create your own style and set a few properties. 57 | 58 | #### Property 59 | 60 | ```swift 61 | struct ContentView: View { 62 | 63 | @State private var firstName: String = "" 64 | 65 | var body: some View { 66 | 67 | FloatingLabelTextField($firstName, placeholder: "First Name", editingChanged: { (isChanged) in 68 | 69 | }) { 70 | 71 | } 72 | .titleColor(.green) 73 | .selectedLineColor(.blue) 74 | .selectedTextColor(.blue) 75 | .selectedTitleColor(.blue) 76 | .frame(height: 70) 77 | } 78 | } 79 | ``` 80 | #### FloatingLabelTextFieldStyle 81 | 82 | Just two step for create and add style to FloatingLabelTextField. 83 | 84 | 1. Create your own theme style. Set property as per your theme. 85 | 86 | ```swift 87 | struct ThemeTextFieldStyle: FloatingLabelTextFieldStyle { 88 | func body(content: FloatingLabelTextField) -> FloatingLabelTextField { 89 | content 90 | .spaceBetweenTitleText(15) // Sets the space between title and text. 91 | .textAlignment(.leading) // Sets the alignment for text. 92 | .lineHeight(1) // Sets the line height. 93 | .selectedLineHeight(1.5) // Sets the selected line height. 94 | .lineColor(.gray) // Sets the line color. 95 | .selectedLineColor(.blue) // Sets the selected line color. 96 | .titleColor(.gray) // Sets the title color. 97 | .selectedTitleColor(.blue) // Sets the selected title color. 98 | .titleFont(.system(size: 12)) // Sets the title font. 99 | .textColor(.black) // Sets the text color. 100 | .selectedTextColor(.blue) // Sets the selected text color. 101 | .textFont(.system(size: 15)) // Sets the text font. 102 | .placeholderColor(.gray) // Sets the placeholder color. 103 | .placeholderFont(.system(size: 15)) // Sets the placeholder font. 104 | .errorColor(.red) // Sets the error color. 105 | .addDisableEditingAction([.paste]) // Disable text field editing action. Like cut, copy, past, all etc. 106 | .enablePlaceholderOnFocus(true) // Enable the placeholder label when the textfield is focused. 107 | .allowsHitTesting(true) // Whether this view participates in hit test operations. 108 | .disabled(false) // Whether users can interact with this. 109 | } 110 | } 111 | ``` 112 | 113 | 2. Add style to FloatingLabelTextField. 114 | 115 | ```swift 116 | struct ContentView: View { 117 | 118 | @State private var firstName: String = "" 119 | 120 | var body: some View { 121 | FloatingLabelTextField($firstName, placeholder: "First Name", editingChanged: { (isChanged) in 122 | 123 | }) { 124 | 125 | } 126 | .floatingStyle(ThemeTextFieldStyle()) 127 | .frame(height: 70) 128 | } 129 | } 130 | ``` 131 | 132 | ### Secure Text Entry 133 | To enable Secure Text Entry use .isSecureTextEntry(true) property. 134 | 135 |

136 | 137 | 138 |

139 | 140 | ```swift 141 | struct ContentView: View { 142 | 143 | @State private var password: String = "" 144 | 145 | var body: some View { 146 | HStack(spacing: 20) { 147 | FloatingLabelTextField($password, placeholder: "Password", editingChanged: { (isChanged) in 148 | 149 | }) { 150 | 151 | } 152 | .isSecureTextEntry(true) 153 | .frame(height: 70) 154 | } 155 | } 156 | } 157 | ``` 158 | 159 | ### Left - Right View 160 | Yes, you can easily add your own views, buttons or image to left view or right view of the FloatingLabelTextField. 161 | 162 |

163 | 164 | 165 |

166 | 167 | ```swift 168 | struct ContentView: View { 169 | 170 | @State private var password: String = "" 171 | @State private var isPasswordShow: Bool = false 172 | 173 | var body: some View { 174 | FloatingLabelTextField($password, placeholder: "Password", editingChanged: { (isChanged) in 175 | 176 | }) { 177 | 178 | } 179 | .isSecureTextEntry(!self.isPasswordShow) 180 | .leftView({ // Add left view. 181 | Image("password") 182 | }) 183 | .rightView({ // Add right view. 184 | Button(action: { 185 | withAnimation { 186 | self.isPasswordShow.toggle() 187 | } 188 | 189 | }) { 190 | Image(self.isPasswordShow ? "eye_close" : "eye_show") 191 | } 192 | }) 193 | .frame(height: 70) 194 | .padding() 195 | } 196 | } 197 | ``` 198 | 199 | ### Error Message & Validation 200 | 201 | FloatingLableTextFieldSwiftUI supports displaying an error and add text field validations. This can be helpfull for adding validation on your form text field. To enable isShowError property to true and pass text field validations array to text field with message according condition. You can also add validation checker variable to check is text field is valid or not on submit button action. 202 | 203 | FloatingLabelTextFieldSwiftUI also have some inbuilt validation regex checker fields like email, password, name, number.. etc. 204 | 205 | Here is some example 206 | 207 | 1. Email Validation 208 |

209 | 210 | 211 |

212 | 213 | ```swift 214 | struct ContentView: View { 215 | 216 | @State private var email: String = "" 217 | @State private var isValidEmail: Bool = false 218 | 219 | var body: some View { 220 | VStack { 221 | FloatingLabelTextField($email, validtionChecker: $isValidEmail, placeholder: "Email", editingChanged: { (isChanged) in 222 | 223 | }) { 224 | 225 | } 226 | .addValidation(.init(condition: email.isValid(.email), errorMessage: "Invalid Email")) /// Sets the validation condition. 227 | .isShowError(true) /// Sets the is show error message. 228 | .errorColor(.red) /// Sets the error color. 229 | .keyboardType(.emailAddress) 230 | .frame(height: 70) 231 | .padding() 232 | 233 | Button(action: { 234 | self.endEditing(true) 235 | 236 | if self.isValidEmail { 237 | print("Valid Email") 238 | 239 | } else { 240 | print("Invalid Email") 241 | } 242 | 243 | }) { 244 | Text("Create") 245 | } 246 | } 247 | } 248 | } 249 | ``` 250 | 251 | 252 | 2. Name Validation 253 |

254 | 255 | 256 |

257 | 258 | ```swift 259 | struct ContentView: View { 260 | 261 | @State private var lastName: String = "" 262 | 263 | var body: some View { 264 | FloatingLabelTextField($lastName, placeholder: "Last Name", editingChanged: { (isChanged) in 265 | 266 | }) { 267 | 268 | } 269 | .isShowError(true) /// Sets the is show error message. 270 | .addValidations([.init(condition: lastName.isValid(.alphabet), errorMessage: "Invalid Name"), 271 | .init(condition: lastName.count >= 2, errorMessage: "Minimum two character long") 272 | ]) /// Sets the validation conditions. 273 | .floatingStyle(ThemeTextFieldStyle2()) 274 | .frame(height: 70) 275 | } 276 | } 277 | ``` 278 | 279 | 280 | ## 🐾 Examples 281 | 282 | To run the example project, clone the repo, and run `pod install` from the Example directory first. 283 | 284 | ## 💾 Installation 285 | 286 | ### CocoaPods: 287 | 288 | FloatingLabelTextFieldSwiftUI is available through [CocoaPods](https://cocoapods.org). To install 289 | it, simply add the following line to your Podfile: 290 | 291 | ```ruby 292 | pod 'FloatingLabelTextFieldSwiftUI' 293 | ``` 294 | 295 | ### Swift Package Manager 296 | 297 | The [Swift Package Manager](https://swift.org/package-manager/) is a tool for managing the distribution of Swift code. It’s integrated with the Swift build system to automate the process of downloading, compiling, and linking dependencies. 298 | 299 | To integrate `FloatingLabelTextFieldSwiftUI` into your Xcode project using Xcode 11+, specify it in `File > Swift Packages > Add`: 300 | 301 | ```ogdl 302 | https://github.com/kishanraja/FloatingLabelTextFieldSwiftUI.git 303 | ``` 304 | 305 | ### Manual 306 | 307 | You can download the latest files from our [Releases page](https://github.com/kishanraja/FloatingLabelTextFieldSwiftUI/releases). After doing so, copy the files in the `Sources` folder to your project. 308 | 309 | 310 | ## 🙋🏻‍♂️ Author 311 | 312 | kishanraja, rajakishanrk1996@gmail.com 313 | 314 | ## 💰 Contribution 315 | 316 | Feel free to fork the project and send me a pull-request! 317 | 318 | ## 📝 Feedback 319 | Please file an [Issue](https://github.com/kishanraja/FloatingLabelTextFieldSwiftUI/issues). 320 | 321 | ## 📜 License 322 | 323 | FloatingLabelTextFieldSwiftUI is available under the MIT license. See the LICENSE file for more info. 324 | -------------------------------------------------------------------------------- /Sources/FloatingLabelTextFieldSwiftUI/Extensions/String+Extension.swift: -------------------------------------------------------------------------------- 1 | // 2 | // String+Extension.swift 3 | // FloatingLabelTextFieldSwiftUI 4 | // 5 | // Created by KISHAN_RAJA on 18/06/20. 6 | // 7 | 8 | import Foundation 9 | 10 | public extension String { 11 | 12 | enum ValidationType { 13 | case alphabet 14 | case alphabetWithSpace 15 | case alphabetNum 16 | case alphabetNumWithSpace 17 | case userName 18 | case name 19 | case email 20 | case number 21 | case password 22 | case mobileNumber 23 | case postalCode 24 | case zipcode 25 | case currency 26 | case amount 27 | case custom(String) 28 | 29 | var regex: String { 30 | switch self { 31 | case .alphabet: 32 | return "[A-Za-z]+" 33 | case .alphabetWithSpace: 34 | return "[A-Za-z ]*" 35 | case .alphabetNum: 36 | return "[A-Za-z-0-9]*" 37 | case .alphabetNumWithSpace: 38 | return "[A-Za-z0-9 ]*" 39 | case .userName: 40 | return "[A-Za-z0-9_]*" 41 | case .name: 42 | return "^[A-Z a-z]*$" 43 | case .email: 44 | return "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}" 45 | case .number: 46 | return "[0-9]+" 47 | case .password: 48 | return "^(?=.*[a-zA-Z])(?=.*[0-9]).{6,}$" 49 | case .mobileNumber: 50 | return "^[0-9]{8,11}$" 51 | case .postalCode: 52 | return "^[A-Za-z0-9- ]{1,10}$" 53 | case .zipcode: 54 | return "^[A-Za-z0-9]{4,}$" 55 | case .currency: 56 | return "^([0-9]+)(\\.([0-9]{0,2})?)?$" 57 | case .amount: 58 | return "^\\s*(?=.*[1-9])\\d*(?:\\.\\d{1,2})?\\s*$" 59 | case .custom(let customRegex): 60 | return customRegex 61 | } 62 | } 63 | } 64 | 65 | func isValid(_ type: ValidationType) -> Bool { 66 | guard !isEmpty else { return false } 67 | let regTest = NSPredicate(format: "SELF MATCHES %@", type.regex) 68 | return regTest.evaluate(with: self) 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /Sources/FloatingLabelTextFieldSwiftUI/Extensions/TextAlignment+Extension.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TextAlignment+Extension.swift 3 | // FloatingLabelTextFieldSwiftUI 4 | // 5 | // Created by KISHAN_RAJA on 01/05/20. 6 | // Copyright © 2020 KISHAN_RAJA. All rights reserved. 7 | // 8 | 9 | import SwiftUI 10 | @available(iOS 13.0, *) 11 | extension TextAlignment { 12 | func getAlignment() -> Alignment { 13 | self == .leading ? Alignment.leading : self == .trailing ? Alignment.trailing : Alignment.center 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Sources/FloatingLabelTextFieldSwiftUI/Extensions/UIControl+Extension.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIControl+Extension.swift 3 | // FloatingLabelTextFieldSwiftUI 4 | // 5 | // Created by KISHAN_RAJA on 03/05/20. 6 | // Copyright © 2020 KISHAN_RAJA. All rights reserved. 7 | // 8 | 9 | import SwiftUI 10 | 11 | extension UIControl { 12 | func addAction(for controlEvents: UIControl.Event, action: @escaping () -> ()) { 13 | let sleeve = ClosureSleeve(attachTo: self, closure: action) 14 | addTarget(sleeve, action: #selector(ClosureSleeve.invoke), for: controlEvents) 15 | } 16 | } 17 | 18 | var AssociatedObjectHandle: UInt8 = 0 19 | 20 | class ClosureSleeve { 21 | let closure: () -> () 22 | 23 | init(attachTo: AnyObject, closure: @escaping () -> ()) { 24 | self.closure = closure 25 | objc_setAssociatedObject(attachTo, &AssociatedObjectHandle, self, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) 26 | } 27 | 28 | @objc func invoke() { 29 | closure() 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Sources/FloatingLabelTextFieldSwiftUI/Extensions/UIResponder+Extesnion.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIResponder+Extesnion.swift 3 | // FloatingLabelTextFieldSwiftUI 4 | // 5 | // Created by KISHAN_RAJA on 03/05/20. 6 | // Copyright © 2020 KISHAN_RAJA. All rights reserved. 7 | // 8 | 9 | import SwiftUI 10 | 11 | // From https://stackoverflow.com/a/14135456/6870041 12 | extension UIResponder { 13 | static var currentFirstResponder: UIResponder? { 14 | _currentFirstResponder = nil 15 | UIApplication.shared.sendAction(#selector(UIResponder.findFirstResponder(_:)), to: nil, from: nil, for: nil) 16 | return _currentFirstResponder 17 | } 18 | 19 | private static weak var _currentFirstResponder: UIResponder? 20 | 21 | @objc private func findFirstResponder(_ sender: Any) { 22 | UIResponder._currentFirstResponder = self 23 | } 24 | 25 | var globalView: UIView? { 26 | return self as? UIView 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Sources/FloatingLabelTextFieldSwiftUI/Extensions/UITextField+Extension.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UITextField+Extension.swift 3 | // FloatingLabelTextFieldSwiftUI 4 | // 5 | // Created by KISHAN_RAJA on 18/11/20. 6 | // Copyright © 2020 KISHAN_RAJA. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | /// All the text field editing actions with selector. 12 | public enum TextFieldEditActions { 13 | case all 14 | case copy, paste, select, selectAll, delete, cut 15 | case decreaseSize, increaseSize 16 | case toggleItalics, toggleBoldface, toggleUnderline 17 | case makeTextWritingDirectionLeftToRight, makeTextWritingDirectionRightToLeft 18 | 19 | var selector: Selector { 20 | switch self { 21 | case .all: 22 | return #selector(UIResponderStandardEditActions.`self`) 23 | case .copy: 24 | return #selector(UIResponderStandardEditActions.copy) 25 | case .paste: 26 | return #selector(UIResponderStandardEditActions.paste) 27 | case .select: 28 | return #selector(UIResponderStandardEditActions.select) 29 | case .selectAll: 30 | return #selector(UIResponderStandardEditActions.selectAll) 31 | case .delete: 32 | return #selector(UIResponderStandardEditActions.delete) 33 | case .cut: 34 | return #selector(UIResponderStandardEditActions.cut) 35 | case .decreaseSize: 36 | return #selector(UIResponderStandardEditActions.decreaseSize) 37 | case .increaseSize: 38 | return #selector(UIResponderStandardEditActions.increaseSize) 39 | case .toggleItalics: 40 | return #selector(UIResponderStandardEditActions.toggleItalics) 41 | case .toggleBoldface: 42 | return #selector(UIResponderStandardEditActions.toggleBoldface) 43 | case .toggleUnderline: 44 | return #selector(UIResponderStandardEditActions.toggleUnderline) 45 | case .makeTextWritingDirectionLeftToRight: 46 | return #selector(UIResponderStandardEditActions.makeTextWritingDirectionLeftToRight) 47 | case .makeTextWritingDirectionRightToLeft: 48 | return #selector(UIResponderStandardEditActions.makeTextWritingDirectionRightToLeft) 49 | } 50 | } 51 | } 52 | 53 | /// To store the editing action which is not allowed the user to show.. 54 | public var arrTextFieldEditActions: [TextFieldEditActions] = [] 55 | 56 | extension UITextField { 57 | open override func target(forAction action: Selector, withSender sender: Any?) -> Any? { 58 | 59 | if arrTextFieldEditActions.contains(where: {$0 == .all}) || arrTextFieldEditActions.contains(where: {$0.selector == action}) { 60 | return nil 61 | } 62 | 63 | return super.target(forAction: action, withSender: sender) 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /Sources/FloatingLabelTextFieldSwiftUI/Extensions/View+Extension.swift: -------------------------------------------------------------------------------- 1 | // 2 | // View+Extension.swift 3 | // FloatingLabelTextFieldSwiftUI 4 | // 5 | // Created by KISHAN_RAJA on 02/05/20. 6 | // Copyright © 2020 KISHAN_RAJA. All rights reserved. 7 | // 8 | 9 | import SwiftUI 10 | 11 | @available(iOS 13.0, *) 12 | extension View { 13 | public func endEditing(_ force: Bool) { 14 | UIApplication.shared.windows.forEach { $0.endEditing(force)} 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Sources/FloatingLabelTextFieldSwiftUI/FloatingLabelTextField.swift: -------------------------------------------------------------------------------- 1 | // 2 | // FloatingLabelTextField.swift 3 | // FloatingLabelTextFieldSwiftUI 4 | // 5 | // Created by KISHAN_RAJA on 01/05/20. 6 | // Copyright © 2020 KISHAN_RAJA. All rights reserved. 7 | // 8 | 9 | import SwiftUI 10 | 11 | //MARK: FloatingLabelTextField Style Protocol 12 | @available(iOS 15.0, *) 13 | public protocol FloatingLabelTextFieldStyle { 14 | func body(content: FloatingLabelTextField) -> FloatingLabelTextField 15 | } 16 | 17 | //MARK: FloatingLabelTextField View 18 | @available(iOS 15.0, *) 19 | public struct FloatingLabelTextField: View { 20 | 21 | //MARK: Binding Property 22 | @Binding private var textFieldValue: String 23 | @State var isSelected: Bool = false 24 | @Binding private var validtionChecker: Bool 25 | 26 | private var currentError: TextFieldValidator { 27 | if notifier.isRequiredField && isShowError && textFieldValue.isEmpty { 28 | return TextFieldValidator(condition: false, errorMessage: notifier.requiredFieldMessage) 29 | } 30 | 31 | if let firstError = notifier.arrValidator.filter({!$0.condition}).first { 32 | return firstError 33 | } 34 | return TextFieldValidator(condition: true, errorMessage: "") 35 | } 36 | 37 | @State var isShowError: Bool = false 38 | 39 | @FocusState fileprivate var isFocused: Bool 40 | @State private var textFieldHeight: CGFloat = 0.0 41 | 42 | //MARK: Observed Object 43 | @ObservedObject private var notifier = FloatingLabelTextFieldNotifier() 44 | 45 | //MARK: Properties 46 | private let axis: Axis 47 | private var placeholderText: String = "" 48 | private var editingChanged: (Bool) -> () = { _ in } 49 | private var commit: () -> () = { } 50 | 51 | //MARK: Init 52 | public init(_ text: Binding, validtionChecker: Binding? = nil, placeholder: String = "", 53 | axis: Axis = .horizontal, editingChanged: @escaping (Bool)->() = { _ in }, commit: @escaping ()->() = { }) { 54 | self._textFieldValue = text 55 | self.placeholderText = placeholder 56 | self.axis = axis 57 | self.editingChanged = editingChanged 58 | self.commit = commit 59 | self._validtionChecker = validtionChecker ?? Binding.constant(false) 60 | } 61 | 62 | // MARK: Center View 63 | var centerTextFieldView: some View { 64 | ZStack(alignment: notifier.textAlignment.getAlignment()) { 65 | 66 | if (notifier.isAnimateOnFocus ? (!isSelected && textFieldValue.isEmpty) : textFieldValue.isEmpty) { 67 | Text(placeholderText) 68 | .font(notifier.placeholderFont) 69 | .multilineTextAlignment(notifier.textAlignment) 70 | .foregroundColor(notifier.placeholderColor) 71 | } 72 | 73 | if notifier.isSecureTextEntry { 74 | SecureField("", text: $textFieldValue.animation()) { 75 | } 76 | .onTapGesture { 77 | self.isShowError = self.notifier.isRequiredField 78 | self.validtionChecker = self.currentError.condition 79 | self.editingChanged(self.isSelected) 80 | if !self.isSelected { 81 | UIResponder.currentFirstResponder?.resignFirstResponder() 82 | } 83 | DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { 84 | if let currentResponder = UIResponder.currentFirstResponder, let currentTextField = currentResponder.globalView as? UITextField{ 85 | arrTextFieldEditActions = self.notifier.arrTextFieldEditActions 86 | withAnimation { 87 | self.isSelected = self.notifier.isSecureTextEntry 88 | } 89 | currentTextField.addAction(for: .editingDidEnd) { 90 | self.isSelected = false 91 | self.isShowError = self.notifier.isRequiredField 92 | self.validtionChecker = self.currentError.condition 93 | self.commit() 94 | arrTextFieldEditActions = [] 95 | } 96 | } 97 | } 98 | } 99 | .disabled(self.notifier.disabled) 100 | .allowsHitTesting(self.notifier.allowsHitTesting) 101 | .font(notifier.font) 102 | .multilineTextAlignment(notifier.textAlignment) 103 | .foregroundColor((self.currentError.condition || !notifier.isShowError) ? (isSelected ? notifier.selectedTextColor : notifier.textColor) : notifier.errorColor) 104 | 105 | } else { 106 | if #available(iOS 16.0, *) { 107 | TextField("", text: $textFieldValue.animation(), axis: axis) 108 | .focused($isFocused) 109 | .onChange(of: isFocused, perform: { (isChanged) in 110 | withAnimation { 111 | DispatchQueue.main.async { 112 | self.isSelected = isChanged 113 | } 114 | } 115 | 116 | DispatchQueue.main.async { 117 | self.isShowError = self.notifier.isRequiredField 118 | } 119 | 120 | self.validtionChecker = self.currentError.condition 121 | self.editingChanged(isChanged) 122 | arrTextFieldEditActions = self.notifier.arrTextFieldEditActions 123 | }) 124 | .onSubmit({ 125 | self.isShowError = self.notifier.isRequiredField 126 | self.validtionChecker = self.currentError.condition 127 | self.commit() 128 | arrTextFieldEditActions = [] 129 | }) 130 | .lineLimit(notifier.lineLimit) 131 | .disabled(self.notifier.disabled) 132 | .allowsHitTesting(self.notifier.allowsHitTesting) 133 | .multilineTextAlignment(notifier.textAlignment) 134 | .font(notifier.font) 135 | .foregroundColor((self.currentError.condition || !notifier.isShowError) ? (isSelected ? notifier.selectedTextColor : notifier.textColor) : notifier.errorColor) 136 | .background( 137 | GeometryReader(content: set(geometry:)) 138 | ) 139 | } else { 140 | TextField("", text: $textFieldValue.animation(), onEditingChanged: { (isChanged) in 141 | withAnimation { 142 | DispatchQueue.main.async { 143 | self.isSelected = isChanged 144 | } 145 | } 146 | 147 | DispatchQueue.main.async { 148 | self.isShowError = self.notifier.isRequiredField 149 | } 150 | 151 | self.validtionChecker = self.currentError.condition 152 | self.editingChanged(isChanged) 153 | arrTextFieldEditActions = self.notifier.arrTextFieldEditActions 154 | }, onCommit: { 155 | self.isShowError = self.notifier.isRequiredField 156 | self.validtionChecker = self.currentError.condition 157 | self.commit() 158 | arrTextFieldEditActions = [] 159 | }) 160 | .disabled(self.notifier.disabled) 161 | .allowsHitTesting(self.notifier.allowsHitTesting) 162 | .multilineTextAlignment(notifier.textAlignment) 163 | .font(notifier.font) 164 | .foregroundColor((self.currentError.condition || !notifier.isShowError) ? (isSelected ? notifier.selectedTextColor : notifier.textColor) : notifier.errorColor) 165 | } 166 | } 167 | } 168 | } 169 | 170 | private func set(geometry: GeometryProxy) -> some View { 171 | DispatchQueue.main.async { 172 | self.textFieldHeight = geometry.size.height 173 | } 174 | return Color.clear 175 | } 176 | 177 | // MARK: Top error and title lable view 178 | var topTitleLable: some View { 179 | Text((self.currentError.condition || !notifier.isShowError) ? placeholderText : self.currentError.errorMessage) 180 | .frame(alignment: notifier.textAlignment.getAlignment()) 181 | .animation(.default) 182 | .foregroundColor((self.currentError.condition || !notifier.isShowError) ? (self.isSelected ? notifier.selectedTitleColor : notifier.titleColor) : notifier.errorColor) 183 | .font(notifier.titleFont) 184 | } 185 | 186 | // MARK: Bottom Line View 187 | var bottomLine: some View { 188 | Divider() 189 | .frame(height: self.isSelected ? notifier.selectedLineHeight : notifier.lineHeight, alignment: .leading) 190 | } 191 | 192 | //MARK: Body View 193 | public var body: some View { 194 | VStack () { 195 | ZStack(alignment: .bottomLeading) { 196 | 197 | //Top error and title lable view 198 | if notifier.isShowError && self.isShowError && textFieldValue.isEmpty || (notifier.isAnimateOnFocus && isSelected){ 199 | self.topTitleLable.padding(.bottom, CGFloat(notifier.spaceBetweenTitleText)).opacity(1) 200 | 201 | } else { 202 | let padding = notifier.spaceBetweenTitleText + (axis == .vertical ? textFieldHeight : 0) 203 | self.topTitleLable.padding(.bottom, !textFieldValue.isEmpty ? padding : 0) 204 | .opacity((textFieldValue.isEmpty) ? 0 : 1) 205 | } 206 | 207 | HStack { 208 | // Left View 209 | notifier.leftView 210 | 211 | // Center View 212 | centerTextFieldView 213 | 214 | //Right View 215 | notifier.rightView 216 | } 217 | } 218 | 219 | //MARK: Line View 220 | if textFieldValue.isEmpty || !notifier.isShowError { 221 | bottomLine 222 | .background((self.isSelected ? notifier.selectedLineColor : notifier.lineColor)) 223 | 224 | } else { 225 | bottomLine 226 | .background((self.currentError.condition) ? (self.isSelected ? notifier.selectedLineColor : notifier.lineColor) : notifier.errorColor) 227 | } 228 | 229 | } 230 | .frame(alignment: .bottomLeading) 231 | } 232 | } 233 | 234 | //MARK: FloatingLabelTextField Style Funcation 235 | @available(iOS 15.0, *) 236 | extension FloatingLabelTextField { 237 | public func floatingStyle(_ style: S) -> some View where S: FloatingLabelTextFieldStyle { 238 | return style.body(content: self) 239 | } 240 | } 241 | 242 | //MARK: View Property Funcation 243 | @available(iOS 15.0, *) 244 | extension FloatingLabelTextField { 245 | /// Sets the left view. 246 | public func leftView(@ViewBuilder _ view: @escaping () -> LRView) -> Self { 247 | notifier.leftView = AnyView(view()) 248 | return self 249 | } 250 | 251 | /// Sets the right view. 252 | public func rightView(@ViewBuilder _ view: @escaping () -> LRView) -> Self { 253 | notifier.rightView = AnyView(view()) 254 | return self 255 | } 256 | } 257 | 258 | //MARK: Text Property Funcation 259 | @available(iOS 15.0, *) 260 | extension FloatingLabelTextField { 261 | /// Sets the alignment for text. 262 | public func textAlignment(_ alignment: TextAlignment) -> Self { 263 | notifier.textAlignment = alignment 264 | return self 265 | } 266 | 267 | /// Sets the secure text entry for TextField. 268 | public func isSecureTextEntry(_ isSecure: Bool) -> Self { 269 | notifier.isSecureTextEntry = isSecure 270 | return self 271 | } 272 | 273 | /// Whether users can interact with this. 274 | public func disabled(_ isDisabled: Bool) -> Self { 275 | notifier.disabled = isDisabled 276 | return self 277 | } 278 | 279 | /// Whether this view participates in hit test operations. 280 | public func allowsHitTesting(_ isAllowsHitTesting: Bool) -> Self { 281 | notifier.allowsHitTesting = isAllowsHitTesting 282 | return self 283 | } 284 | } 285 | 286 | @available(iOS 16.0, *) 287 | extension FloatingLabelTextField { 288 | public func lineLimit(_ limit: Int) -> Self { 289 | notifier.lineLimit = limit 290 | return self 291 | } 292 | } 293 | 294 | //MARK: Line Property Funcation 295 | @available(iOS 15.0, *) 296 | extension FloatingLabelTextField { 297 | /// Sets the line height. 298 | public func lineHeight(_ height: CGFloat) -> Self { 299 | notifier.lineHeight = height 300 | return self 301 | } 302 | 303 | /// Sets the selected line height. 304 | public func selectedLineHeight(_ height: CGFloat) -> Self { 305 | notifier.selectedLineHeight = height 306 | return self 307 | } 308 | 309 | /// Sets the line color. 310 | public func lineColor(_ color: Color) -> Self { 311 | notifier.lineColor = color 312 | return self 313 | } 314 | 315 | /// Sets the selected line color. 316 | public func selectedLineColor(_ color: Color) -> Self { 317 | notifier.selectedLineColor = color 318 | return self 319 | } 320 | } 321 | 322 | //MARK: Title Property Funcation 323 | @available(iOS 15.0, *) 324 | extension FloatingLabelTextField { 325 | /// Sets the title color. 326 | public func titleColor(_ color: Color) -> Self { 327 | notifier.titleColor = color 328 | return self 329 | } 330 | 331 | /// Sets the selected title color. 332 | public func selectedTitleColor(_ color: Color) -> Self { 333 | notifier.selectedTitleColor = color 334 | return self 335 | } 336 | 337 | /// Sets the title font. 338 | public func titleFont(_ font: Font) -> Self { 339 | notifier.titleFont = font 340 | return self 341 | } 342 | 343 | /// Sets the space between title and text. 344 | public func spaceBetweenTitleText(_ space: Double) -> Self { 345 | notifier.spaceBetweenTitleText = space 346 | return self 347 | } 348 | } 349 | 350 | //MARK: Text Property Funcation 351 | @available(iOS 15.0, *) 352 | extension FloatingLabelTextField { 353 | /// Sets the text color. 354 | public func textColor(_ color: Color) -> Self { 355 | notifier.textColor = color 356 | return self 357 | } 358 | 359 | /// Sets the selected text color. 360 | public func selectedTextColor(_ color: Color) -> Self { 361 | notifier.selectedTextColor = color 362 | return self 363 | } 364 | 365 | /// Sets the text font. 366 | public func textFont(_ font: Font) -> Self { 367 | notifier.font = font 368 | return self 369 | } 370 | } 371 | 372 | //MARK: Placeholder Property Funcation 373 | @available(iOS 15.0, *) 374 | extension FloatingLabelTextField { 375 | /// Sets the placeholder color. 376 | public func placeholderColor(_ color: Color) -> Self { 377 | notifier.placeholderColor = color 378 | return self 379 | } 380 | 381 | /// Sets the placeholder font. 382 | public func placeholderFont(_ font: Font) -> Self { 383 | notifier.placeholderFont = font 384 | return self 385 | } 386 | } 387 | 388 | //MARK: Error Property Funcation 389 | @available(iOS 15.0, *) 390 | extension FloatingLabelTextField { 391 | /// Sets the is show error message. 392 | public func isShowError(_ show: Bool) -> Self { 393 | notifier.isShowError = show 394 | return self 395 | } 396 | 397 | /// Sets the validation conditions. 398 | public func addValidations(_ conditions: [TextFieldValidator]) -> Self { 399 | notifier.arrValidator.append(contentsOf: conditions) 400 | return self 401 | } 402 | 403 | /// Sets the validation condition. 404 | public func addValidation(_ condition: TextFieldValidator) -> Self { 405 | notifier.arrValidator.append(condition) 406 | return self 407 | } 408 | 409 | /// Sets the error color. 410 | public func errorColor(_ color: Color) -> Self { 411 | notifier.errorColor = color 412 | return self 413 | } 414 | 415 | /// Sets the field is required or not with message. 416 | public func isRequiredField(_ required: Bool, with message: String) -> Self { 417 | notifier.isRequiredField = required 418 | notifier.requiredFieldMessage = message 419 | return self 420 | } 421 | } 422 | 423 | //MARK: Text Field Editing Funcation 424 | @available(iOS 15.0, *) 425 | extension FloatingLabelTextField { 426 | /// Disable text field editing action. Like cut, copy, past, all etc. 427 | public func addDisableEditingAction(_ actions: [TextFieldEditActions]) -> Self { 428 | notifier.arrTextFieldEditActions = actions 429 | return self 430 | } 431 | } 432 | 433 | //MARK: Animation Style Funcation 434 | @available(iOS 15.0, *) 435 | extension FloatingLabelTextField { 436 | /// Enable the placeholder label when the textfield is focused. 437 | public func enablePlaceholderOnFocus(_ isEanble: Bool) -> Self { 438 | notifier.isAnimateOnFocus = isEanble 439 | return self 440 | } 441 | } 442 | 443 | -------------------------------------------------------------------------------- /Sources/FloatingLabelTextFieldSwiftUI/ObservableObject/ObservableObject.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ObservableObject.swift 3 | // FloatingLabelTextFieldSwiftUI 4 | // 5 | // Created by KISHAN_RAJA on 01/05/20. 6 | // Copyright © 2020 KISHAN_RAJA. All rights reserved. 7 | // 8 | 9 | import SwiftUI 10 | 11 | @available(iOS 13.0, *) 12 | class FloatingLabelTextFieldNotifier: ObservableObject { 13 | 14 | //MARK: Views Properties 15 | @Published var leftView: AnyView? 16 | @Published var rightView: AnyView? 17 | 18 | //MARK: Alignment Properties 19 | @Published var textAlignment: TextAlignment = .leading 20 | 21 | //MARK: Line Properties 22 | @Published var lineHeight: CGFloat = 1 23 | @Published var selectedLineHeight: CGFloat = 1.5 24 | @Published var lineColor: Color = .black 25 | @Published var selectedLineColor: Color = .blue 26 | 27 | //MARK: Title Properties 28 | @Published var titleColor: Color = .gray 29 | @Published var selectedTitleColor: Color = .blue 30 | @Published var titleFont: Font = .system(size: 12) 31 | 32 | //MARK: Text Properties 33 | @Published var textColor: Color = .black 34 | @Published var selectedTextColor: Color = .blue 35 | @Published var font: Font = .system(size: 15) 36 | @Published var lineLimit: Int = 1 37 | 38 | //MARK: Placeholder Properties 39 | @Published var placeholderColor: Color = .gray 40 | @Published var placeholderFont: Font = .system(size: 15) 41 | 42 | //MARK: Other Properties 43 | @Published var spaceBetweenTitleText: Double = 30 44 | @Published var isSecureTextEntry: Bool = false 45 | @Published var disabled: Bool = false 46 | @Published var allowsHitTesting: Bool = true 47 | 48 | //MARK: Error Properties 49 | @Published var isShowError: Bool = false 50 | @Published var errorColor: Color = .red 51 | @Published var arrValidator: [TextFieldValidator] = [] 52 | @Published var isRequiredField: Bool = false 53 | @Published var requiredFieldMessage: String = "" 54 | 55 | //MARK: Action Editing Properties 56 | @Published var arrTextFieldEditActions: [TextFieldEditActions] = [] 57 | 58 | //MARK: Animation Style Properties 59 | @Published var isAnimateOnFocus: Bool = false 60 | } 61 | -------------------------------------------------------------------------------- /Sources/FloatingLabelTextFieldSwiftUI/TextFieldValidator/Validator.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TextFieldValidator.swift 3 | // FloatingLabelTextFieldSwiftUI 4 | // 5 | // Created by KISHAN_RAJA on 18/06/20. 6 | // 7 | 8 | import Foundation 9 | 10 | public struct TextFieldValidator { 11 | public var condition: Bool = true 12 | public var errorMessage: String = "" 13 | 14 | public init(condition: Bool, errorMessage: String) { 15 | self.condition = condition 16 | self.errorMessage = errorMessage 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Tests/FloatingLabelTextFieldSwiftUITests/FloatingLabelTextFieldSwiftUITests.swift: -------------------------------------------------------------------------------- 1 | import XCTest 2 | @testable import FloatingLabelTextFieldSwiftUI 3 | 4 | final class FloatingLabelTextFieldSwiftUITests: XCTestCase { 5 | func testExample() { 6 | // This is an example of a functional test case. 7 | // Use XCTAssert and related functions to verify your tests produce the correct 8 | // results. 9 | XCTAssertEqual(FloatingLabelTextFieldSwiftUI().text, "Hello, World!") 10 | } 11 | 12 | static var allTests = [ 13 | ("testExample", testExample), 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /Tests/FloatingLabelTextFieldSwiftUITests/XCTestManifests.swift: -------------------------------------------------------------------------------- 1 | import XCTest 2 | 3 | #if !canImport(ObjectiveC) 4 | public func allTests() -> [XCTestCaseEntry] { 5 | return [ 6 | testCase(FloatingLabelTextFieldSwiftUITests.allTests), 7 | ] 8 | } 9 | #endif 10 | -------------------------------------------------------------------------------- /Tests/LinuxMain.swift: -------------------------------------------------------------------------------- 1 | import XCTest 2 | 3 | import FloatingLabelTextFieldSwiftUITests 4 | 5 | var tests = [XCTestCaseEntry]() 6 | tests += FloatingLabelTextFieldSwiftUITests.allTests() 7 | XCTMain(tests) 8 | -------------------------------------------------------------------------------- /_Pods.xcodeproj: -------------------------------------------------------------------------------- 1 | Example/Pods/Pods.xcodeproj --------------------------------------------------------------------------------