|
5 | 5 | // Created by Kanz on 2021/01/01.
|
6 | 6 | //
|
7 | 7 |
|
| 8 | +import SwiftUI |
| 9 | + |
8 | 10 | public enum UIComponents: String, CaseIterable {
|
9 | 11 |
|
10 | 12 | case label
|
@@ -37,21 +39,17 @@ public enum UIComponents: String, CaseIterable {
|
37 | 39 | case navigationBar
|
38 | 40 | case tabBar
|
39 | 41 |
|
40 |
| - case none = "_VariableName_" |
41 |
| - |
42 | 42 | init(variableName: String) {
|
43 | 43 | let lowerCasedVariableName = variableName.lowercased()
|
44 | 44 | let target = UIComponents.allCases
|
45 | 45 | .filter { lowerCasedVariableName.hasSuffix($0.rawValue.lowercased()) }
|
46 | 46 | .first
|
47 | 47 |
|
48 |
| - self = target ?? .none |
| 48 | + self = target ?? .view |
49 | 49 | }
|
50 | 50 |
|
51 |
| - var fullName: String { |
| 51 | + var viewInitName: String { |
52 | 52 | switch self {
|
53 |
| - case .none: |
54 |
| - return self.rawValue |
55 | 53 | case .collectionView:
|
56 | 54 | return "UICollectionView(frame: .zero, collectionViewLayout: <#UICollectionViewLayout#>)"
|
57 | 55 | case .visualEffectView:
|
@@ -84,8 +82,7 @@ public enum UIComponents: String, CaseIterable {
|
84 | 82 | }
|
85 | 83 | }
|
86 | 84 |
|
87 |
| - |
88 |
| - func getThenDataModel() -> ThenModelProtocol? { |
| 85 | + public func getThenDataModel() -> ThenModelProtocol? { |
89 | 86 | switch self {
|
90 | 87 | case .label:
|
91 | 88 | return UILabelModel()
|
@@ -137,8 +134,137 @@ public enum UIComponents: String, CaseIterable {
|
137 | 134 | return UITabBarModel()
|
138 | 135 | case .segmentedControl:
|
139 | 136 | return UISegmentedControlModel()
|
140 |
| - case .none: |
141 |
| - return NoneModel() |
142 | 137 | }
|
143 | 138 | }
|
| 139 | + |
| 140 | + // MARK: - For View |
| 141 | + var fullName: String? { |
| 142 | + return "UI" + rawValue.prefix(1).uppercased() + rawValue.dropFirst() |
| 143 | + } |
| 144 | + |
| 145 | + var category: ModelCategory { |
| 146 | + switch self { |
| 147 | + case .label, |
| 148 | + .textField, |
| 149 | + .textView, |
| 150 | + .searchBar: |
| 151 | + return .text |
| 152 | + case .scrollView, |
| 153 | + .tableView, |
| 154 | + .collectionView: |
| 155 | + return .scroll |
| 156 | + case .button, |
| 157 | + .pageControl, |
| 158 | + .`switch`, |
| 159 | + .slider, |
| 160 | + .stepper, |
| 161 | + .segmentedControl: |
| 162 | + return .control |
| 163 | + case .activityIndicatorView, |
| 164 | + .refreshControl, |
| 165 | + .progressView: |
| 166 | + return .loading |
| 167 | + case .pickerView, |
| 168 | + .datePicker: |
| 169 | + return .picker |
| 170 | + case .view, |
| 171 | + .imageView, |
| 172 | + .stackView, |
| 173 | + .visualEffectView, |
| 174 | + .navigationBar, |
| 175 | + .tabBar, |
| 176 | + .toolBar: |
| 177 | + return .view |
| 178 | + } |
| 179 | + } |
| 180 | + |
| 181 | + @ViewBuilder |
| 182 | + func makeView() -> some View { |
| 183 | + switch self { |
| 184 | + case .label: |
| 185 | + UILabelComponent() |
| 186 | + case .textField: |
| 187 | + UITextFieldComponent() |
| 188 | + case .textView: |
| 189 | + UITextViewComponent() |
| 190 | + case .searchBar: |
| 191 | + UISearchBarComponent() |
| 192 | + case .tableView: |
| 193 | + UITableViewComponent() |
| 194 | + case .collectionView: |
| 195 | + UICollectionViewComponent() |
| 196 | + case .scrollView: |
| 197 | + UIScrollViewComponent() |
| 198 | + case .button: |
| 199 | + UIButtonComponent() |
| 200 | + case .segmentedControl: |
| 201 | + UISegmentedControlComponent() |
| 202 | + case .slider: |
| 203 | + UISliderComponent() |
| 204 | + case .switch: |
| 205 | + UISwitchComponent() |
| 206 | + case .stepper: |
| 207 | + UIStepperComponent() |
| 208 | + case .pageControl: |
| 209 | + UIPageControlComponent() |
| 210 | + case .activityIndicatorView: |
| 211 | + UIActivityIndicatorViewComponent() |
| 212 | + case .progressView: |
| 213 | + UIProgressViewComponent() |
| 214 | + case .refreshControl: |
| 215 | + UIRefreshControlComponent() |
| 216 | + case .datePicker: |
| 217 | + UIDatePickerComponent() |
| 218 | + case .pickerView: |
| 219 | + UIPickerViewComponent() |
| 220 | + case .stackView: |
| 221 | + UIStackViewComponent() |
| 222 | + case .imageView: |
| 223 | + UIImageViewComponent() |
| 224 | + case .visualEffectView: |
| 225 | + UIVisualEffectViewComponent() |
| 226 | + case .view: |
| 227 | + UIViewComponent() |
| 228 | + case .toolBar: |
| 229 | + UIToolBarComponent() |
| 230 | + case .navigationBar: |
| 231 | + UINavigationBarComponent() |
| 232 | + case .tabBar: |
| 233 | + UITabBarComponent() |
| 234 | + } |
| 235 | + } |
| 236 | +} |
| 237 | + |
| 238 | +// MARK: - Component Category |
| 239 | +public enum ModelCategory: String, CaseIterable { |
| 240 | + case text |
| 241 | + case scroll |
| 242 | + case control |
| 243 | + case loading |
| 244 | + case picker |
| 245 | + case view |
| 246 | + case common |
| 247 | + |
| 248 | + var iconName: String { |
| 249 | + switch self { |
| 250 | + case .text: |
| 251 | + return "textformat" |
| 252 | + case .scroll: |
| 253 | + return "arrow.up.and.down.square" |
| 254 | + case .control: |
| 255 | + return "gamecontroller" |
| 256 | + case .loading: |
| 257 | + return "rays" |
| 258 | + case .picker: |
| 259 | + return "eyedropper.halffull" |
| 260 | + case .view: |
| 261 | + return "eyeglasses" |
| 262 | + case .common: |
| 263 | + return "gearshape" |
| 264 | + } |
| 265 | + } |
| 266 | + |
| 267 | + var title: String { |
| 268 | + return rawValue.prefix(1).uppercased() + rawValue.dropFirst() |
| 269 | + } |
144 | 270 | }
|
0 commit comments