85 lines
2.6 KiB
Swift
85 lines
2.6 KiB
Swift
//
|
|
// SearchBarView.swift
|
|
// MattermostShare
|
|
//
|
|
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
//
|
|
|
|
import SwiftUI
|
|
|
|
struct SearchBarView: View {
|
|
@EnvironmentObject var shareViewModel: ShareViewModel
|
|
@State private var isEditing: Bool = false
|
|
|
|
var body: some View {
|
|
HStack {
|
|
TextField("", text: $shareViewModel.search)
|
|
.placeholder(when: shareViewModel.search.isEmpty) {
|
|
Text(
|
|
NSLocalizedString("channel_list.find_channels", value: "Find channels...", comment: "")
|
|
)
|
|
.foregroundColor(Color.theme.centerChannelColor.opacity(0.64))
|
|
}
|
|
.padding(.leading, 40)
|
|
.padding(.trailing, 30)
|
|
.frame(height: 40)
|
|
.background(
|
|
RoundedRectangle(cornerRadius: 8)
|
|
.fill(Color.theme.centerChannelColor.opacity(0.08))
|
|
)
|
|
.foregroundColor(Color.theme.centerChannelColor)
|
|
.overlay(
|
|
HStack {
|
|
Image(systemName: "magnifyingglass")
|
|
.foregroundColor(
|
|
shareViewModel.search.isEmpty ?
|
|
Color.theme.centerChannelColor.opacity(0.64) :
|
|
Color.theme.centerChannelColor
|
|
)
|
|
.frame(minWidth: 0, maxWidth: .infinity, alignment: .leading)
|
|
.padding(.leading, 12)
|
|
|
|
if isEditing && shareViewModel.search.count != 0 {
|
|
Button(action: {
|
|
shareViewModel.search = ""
|
|
}) {
|
|
Image(systemName: "multiply.circle.fill")
|
|
.foregroundColor(Color.theme.centerChannelColor.opacity(0.56))
|
|
.padding(.leading, 10)
|
|
.padding(.trailing, 7.5)
|
|
.padding(.vertical, 10)
|
|
}
|
|
}
|
|
}
|
|
)
|
|
.onTapGesture {
|
|
withAnimation(.linear(duration: 0.15)) {
|
|
isEditing = true
|
|
}
|
|
}
|
|
|
|
if isEditing {
|
|
Button(action: dismissKeyboard) {
|
|
Text(
|
|
NSLocalizedString("mobile.post.cancel", value: "Cancel", comment: "")
|
|
)
|
|
.foregroundColor(Color.theme.centerChannelColor)
|
|
.font(Font.custom("OpenSans", size: 14))
|
|
}
|
|
.transition(.move(edge: .trailing))
|
|
.animation(.linear(duration: 0.15))
|
|
}
|
|
}
|
|
.font(Font.custom("OpenSans", size: 16))
|
|
}
|
|
|
|
func dismissKeyboard() {
|
|
withAnimation{
|
|
shareViewModel.search = ""
|
|
isEditing = false
|
|
}
|
|
|
|
NotificationCenter.default.post(name: Notification.Name("dismissKeyboard"), object: nil)
|
|
}
|
|
}
|