69 lines
2.2 KiB
Swift
69 lines
2.2 KiB
Swift
//
|
|
// CommonTextFieldSearch.swift
|
|
// Malinka
|
|
//
|
|
// Created by NUT.Tech on 07.02.2023.
|
|
// Copyright © 2023 NUT.Tech. All rights reserved.
|
|
//
|
|
|
|
import SwiftUI
|
|
import WalletUIComponents
|
|
|
|
struct CommonTextFieldSearch: View {
|
|
|
|
private enum Constants {
|
|
enum Image {
|
|
static let search = "common-search"
|
|
static let close = "common-close"
|
|
}
|
|
enum Geometry {
|
|
static let imageSize: CGFloat = 14
|
|
static let textSize: CGFloat = 14
|
|
static let buttonSize: CGFloat = 24
|
|
static let leadingPadding: CGFloat = 12
|
|
static let trailingPadding: CGFloat = 8
|
|
static let hSpace: CGFloat = 8
|
|
static let height: CGFloat = 40
|
|
static let cornerRadius: CGFloat = 8
|
|
}
|
|
}
|
|
|
|
@ObservedObject
|
|
var viewModel: TextFieldViewModel
|
|
|
|
var body: some View {
|
|
HStack(alignment: .center, spacing: Constants.Geometry.hSpace) {
|
|
Image(Constants.Image.search)
|
|
.frame(width: Constants.Geometry.imageSize,
|
|
height: Constants.Geometry.imageSize)
|
|
|
|
TextField(viewModel: viewModel,
|
|
font: .font(style: .medium, size: Constants.Geometry.textSize),
|
|
textColor: Asset.textGranite.color)
|
|
|
|
if self.viewModel.isCloseButtonVisible {
|
|
Button(action: {
|
|
self.viewModel.clearButtonAction()
|
|
}, label: {
|
|
Image(Constants.Image.close)
|
|
})
|
|
.frame(width: Constants.Geometry.buttonSize,
|
|
height: Constants.Geometry.buttonSize)
|
|
}
|
|
}
|
|
.padding(.leading, Constants.Geometry.leadingPadding)
|
|
.padding(.trailing, Constants.Geometry.trailingPadding)
|
|
.frame(height: Constants.Geometry.height)
|
|
.background(Color(Asset.marble.color))
|
|
.cornerRadius(Constants.Geometry.cornerRadius)
|
|
}
|
|
}
|
|
|
|
struct CommonTextFieldSearchNew_Previews: PreviewProvider {
|
|
static var previews: some View {
|
|
CommonTextFieldSearch(viewModel: TextFieldViewModel())
|
|
.previewLayout(.sizeThatFits)
|
|
.padding()
|
|
}
|
|
}
|