├── .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 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
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 | [](https://travis-ci.org/kishanraja/FloatingLabelTextFieldSwiftUI)
4 | [](https://cocoapods.org/pods/FloatingLabelTextFieldSwiftUI)
5 | [](https://cocoapods.org/pods/FloatingLabelTextFieldSwiftUI)
6 | [](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
--------------------------------------------------------------------------------