diff --git a/Sources/SearchFeature/Views/SearchLeftView.swift b/Sources/SearchFeature/Views/SearchLeftView.swift index e5bbb5eb7c522d29db664eb4964bf8facd1aeb51..01000b1fe0e658a008d140d89846470ad4f5e58d 100644 --- a/Sources/SearchFeature/Views/SearchLeftView.swift +++ b/Sources/SearchFeature/Views/SearchLeftView.swift @@ -3,8 +3,10 @@ import Shared final class SearchLeftView: UIView { let tableView = UITableView() + let inputStackView = UIStackView() let inputField = SearchComponent() let emptyView = SearchLeftEmptyView() + let countryButton = SearchCountryComponent() let placeholderView = SearchLeftPlaceholderView() init() { @@ -14,8 +16,13 @@ final class SearchLeftView: UIView { backgroundColor = Asset.neutralWhite.color tableView.backgroundColor = Asset.neutralWhite.color + inputStackView.spacing = 5 + countryButton.isHidden = true + inputStackView.addArrangedSubview(countryButton) + inputStackView.addArrangedSubview(inputField) + + addSubview(inputStackView) addSubview(tableView) - addSubview(inputField) addSubview(emptyView) addSubview(placeholderView) @@ -25,6 +32,8 @@ final class SearchLeftView: UIView { required init?(coder: NSCoder) { nil } func updateUIForItem(item: SearchSegmentedControl.Item) { + countryButton.isHidden = item != .phone + let emptyTitle = Localized.Ud.Search.empty(item.written) emptyView.titleLabel.text = emptyTitle @@ -33,7 +42,7 @@ final class SearchLeftView: UIView { } private func setupConstraints() { - inputField.snp.makeConstraints { + inputStackView.snp.makeConstraints { $0.top.equalToSuperview().offset(20) $0.left.equalToSuperview().offset(20) $0.right.equalToSuperview().offset(-20) diff --git a/Sources/Shared/Views/SearchComponent.swift b/Sources/Shared/Views/SearchComponent.swift index a12c09464d63805322ae654d4ac3fca1153c0efa..9608aad71aaa56a5da852516405d069837a703c5 100644 --- a/Sources/Shared/Views/SearchComponent.swift +++ b/Sources/Shared/Views/SearchComponent.swift @@ -37,7 +37,52 @@ public final class SearchComponent: UIView { public init() { super.init(frame: .zero) - setup() + + containerView.layer.cornerRadius = 25 + containerView.backgroundColor = Asset.neutralSecondary.color + + leftImageView.image = Asset.lens.image + leftImageView.contentMode = .center + leftImageView.tintColor = Asset.neutralDisabled.color + + rightButton.tintColor = Asset.neutralBody.color + rightButton.setImage(rightImage, for: .normal) + rightButton.setContentHuggingPriority(.required, for: .horizontal) + rightButton.setContentCompressionResistancePriority(.required, for: .horizontal) + + inputField.delegate = self + inputField.textColor = Asset.neutralActive.color + inputField.font = Fonts.Mulish.regular.font(size: 16.0) + + let attrPlaceholder + = NSAttributedString( + string: Localized.Shared.Search.placeholder, + attributes: [ + .font: Fonts.Mulish.regular.font(size: 14.0) as Any, + .foregroundColor: Asset.neutralWeak.color + ]) + + inputField.attributedPlaceholder = attrPlaceholder + + inputField.textPublisher + .sink { [weak textSubject] in textSubject?.send($0) } + .store(in: &cancellables) + + rightButton.publisher(for: .touchUpInside) + .sink { [weak rightSubject, self] in + if isEditingSubject.value == true { + abortEditing() + } else { + rightSubject?.send() + } + }.store(in: &cancellables) + + addSubview(containerView) + containerView.addSubview(inputField) + containerView.addSubview(leftImageView) + containerView.addSubview(rightButton) + + setupConstraints() } required init?(coder: NSCoder) { nil } @@ -86,55 +131,6 @@ public final class SearchComponent: UIView { isEditingSubject.send(false) } - private func setup() { - containerView.layer.cornerRadius = 25 - containerView.backgroundColor = Asset.neutralSecondary.color - - leftImageView.image = Asset.lens.image - leftImageView.contentMode = .center - leftImageView.tintColor = Asset.neutralDisabled.color - - rightButton.tintColor = Asset.neutralBody.color - rightButton.setImage(rightImage, for: .normal) - rightButton.setContentHuggingPriority(.required, for: .horizontal) - rightButton.setContentCompressionResistancePriority(.required, for: .horizontal) - - inputField.delegate = self - inputField.textColor = Asset.neutralActive.color - inputField.font = Fonts.Mulish.regular.font(size: 16.0) - - let attrPlaceholder - = NSAttributedString( - string: Localized.Shared.Search.placeholder, - attributes: [ - .font: Fonts.Mulish.regular.font(size: 14.0) as Any, - .foregroundColor: Asset.neutralWeak.color - ]) - - inputField.attributedPlaceholder = attrPlaceholder - - inputField.textPublisher - .sink { [weak textSubject] in textSubject?.send($0) } - .store(in: &cancellables) - - rightButton.publisher(for: .touchUpInside) - .sink { [weak rightSubject, self] in - if isEditingSubject.value == true { - abortEditing() - } else { - rightSubject?.send() - } - }.store(in: &cancellables) - - addSubview(containerView) - containerView.addSubview(inputField) - containerView.addSubview(leftImageView) - containerView.addSubview(rightButton) - - setupConstraints() - setupAccessibility() - } - private func setupConstraints() { containerView.snp.makeConstraints { $0.top.equalToSuperview() @@ -164,11 +160,6 @@ public final class SearchComponent: UIView { } } - private func setupAccessibility() { - inputField.accessibilityIdentifier = Localized.Accessibility.Shared.Search.textField - rightButton.accessibilityIdentifier = Localized.Accessibility.Shared.Search.rightButton - } - public func textFieldDidBeginEditing(_ textField: UITextField) { rightButton.setImage(Asset.sharedCross.image, for: .normal) isEditingSubject.send(true) diff --git a/Sources/Shared/Views/SearchCountryComponent.swift b/Sources/Shared/Views/SearchCountryComponent.swift new file mode 100644 index 0000000000000000000000000000000000000000..bb5f55968eeccafe6fe2cd3fad5abdd9f691cc1e --- /dev/null +++ b/Sources/Shared/Views/SearchCountryComponent.swift @@ -0,0 +1,50 @@ +import UIKit + +public final class SearchCountryComponent: UIControl { + let flagLabel = UILabel() + let codeLabel = UILabel() + let containerView = UIView() + + public init() { + super.init(frame: .zero) + + containerView.layer.cornerRadius = 25 + containerView.backgroundColor = Asset.neutralSecondary.color + + flagLabel.text = "🇺🇸" + codeLabel.text = "+1" + codeLabel.textColor = Asset.neutralDisabled.color + codeLabel.font = Fonts.Mulish.semiBold.font(size: 14.0) + + addSubview(containerView) + containerView.addSubview(flagLabel) + containerView.addSubview(codeLabel) + + setupConstraints() + flagLabel.setContentCompressionResistancePriority(.required, for: .horizontal) + codeLabel.setContentCompressionResistancePriority(.required, for: .horizontal) + } + + required init?(coder: NSCoder) { nil } + + private func setupConstraints() { + containerView.snp.makeConstraints { + $0.top.equalToSuperview() + $0.left.equalToSuperview() + $0.right.equalToSuperview() + $0.bottom.equalToSuperview() + $0.height.equalTo(50) + } + + flagLabel.snp.makeConstraints { + $0.left.equalToSuperview().offset(13) + $0.centerY.equalToSuperview() + } + + codeLabel.snp.makeConstraints { + $0.left.equalTo(flagLabel.snp.right).offset(10) + $0.right.equalToSuperview().offset(-13) + $0.centerY.equalToSuperview() + } + } +}