Mercurial > public > lazybear
annotate LazyBear/Views/Search/SearchView.swift @ 346:80bfa88c6b0f
Implementing Prop API
author | Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com> |
---|---|
date | Sun, 11 Apr 2021 19:55:47 +0200 |
parents | 276e17f11c19 |
children | 280cbc5653b5 |
rev | line source |
---|---|
338
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
1 // |
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
2 // SearchView.swift |
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
3 // LazyBear |
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
4 // |
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
5 // Created by Dennis Concepción Martín on 1/4/21. |
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
6 // |
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
7 |
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
8 import SwiftUI |
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
9 import SwiftlySearch |
71a9c0e61783
Implementing SearchView
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
diff
changeset
|
10 |
346
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
11 //struct SearchView: View { |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
12 // @ObservedObject var searchData = SearchData() |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
13 // @State private var searchedText: String = "" |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
14 // @State private var showingSearchList = false |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
15 // @EnvironmentObject var hudManager: HudManager |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
16 // |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
17 // var body: some View { |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
18 // NavigationView { |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
19 // VStack(alignment: .leading) { |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
20 // if showingSearchList { |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
21 // CompanyList(searchResult: searchData.searchResult) |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
22 // } else { |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
23 // VStack(alignment: .center) { |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
24 // Image("bearSleeping") |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
25 // .resizable() |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
26 // .scaledToFit() |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
27 // |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
28 // Text("Are you looking for something?") |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
29 // .font(.title2) |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
30 // .fontWeight(.semibold) |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
31 // .multilineTextAlignment(.center) |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
32 // .padding(.bottom) |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
33 // |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
34 // Text("Use the search bar to find your favourite company. Type the stock symbol or name, we'll find it!") |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
35 // .multilineTextAlignment(.center) |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
36 // } |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
37 // .padding(.horizontal) |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
38 // } |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
39 // } |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
40 // .onDisappear { self.searchedText = ""; self.showingSearchList = false } |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
41 // .navigationTitle("Search") |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
42 // .navigationBarTitleDisplayMode(.inline) |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
43 // .navigationBarSearch($searchedText) |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
44 // .onChange(of: searchedText, perform: { searchedText in |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
45 // showSearchList(searchedText) |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
46 // }) |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
47 // .toolbar { |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
48 // ToolbarItem(placement: .navigationBarTrailing) { |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
49 // Button(action: { self.hudManager.showSearchHelper = true }) { |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
50 // Image(systemName: "questionmark.circle") |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
51 // } |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
52 // } |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
53 // } |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
54 // } |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
55 // } |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
56 // |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
57 // private func showSearchList(_ searchedText: String) { |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
58 // if !searchedText.isEmpty { |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
59 // // Encode string with spaces |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
60 // let encodedSearchedText = searchedText.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
61 // searchData.get(encodedSearchedText!) |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
62 // self.showingSearchList = true |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
63 // } |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
64 // } |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
65 //} |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
66 // |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
67 //struct SearchView_Previews: PreviewProvider { |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
68 // static var previews: some View { |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
69 // SearchView() |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
70 // } |
80bfa88c6b0f
Implementing Prop API
Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
parents:
344
diff
changeset
|
71 //} |