@@ -32,56 +32,6 @@ struct FindNavigatorForm: View {
3232 selectedMode = state. selectedMode
3333 }
3434
35- private func getMenuList( _ index: Int ) -> [ SearchModeModel ] {
36- index == 0 ? SearchModeModel . SearchModes : selectedMode [ index - 1 ] . children
37- }
38-
39- private func onSelectMenuItem( _ index: Int , searchMode: SearchModeModel ) {
40- var newSelectedMode : [ SearchModeModel ] = [ ]
41- switch index {
42- case 0 :
43- newSelectedMode. append ( searchMode)
44- self . updateSelectedMode ( searchMode, searchModel: & newSelectedMode)
45- self . selectedMode = newSelectedMode
46- case 1 :
47- if let firstMode = selectedMode. first {
48- newSelectedMode. append ( contentsOf: [ firstMode, searchMode] )
49- if let thirdMode = searchMode. children. first {
50- if let selectedThirdMode = selectedMode. third, searchMode. children. contains ( selectedThirdMode) {
51- newSelectedMode. append ( selectedThirdMode)
52- } else {
53- newSelectedMode. append ( thirdMode)
54- }
55- }
56- }
57- self . selectedMode = newSelectedMode
58- case 2 :
59- if let firstMode = selectedMode. first, let secondMode = selectedMode. second {
60- newSelectedMode. append ( contentsOf: [ firstMode, secondMode, searchMode] )
61- }
62- self . selectedMode = newSelectedMode
63- default :
64- return
65- }
66- }
67-
68- private func updateSelectedMode( _ searchMode: SearchModeModel , searchModel: inout [ SearchModeModel ] ) {
69- if let secondMode = searchMode. children. first {
70- if let selectedSecondMode = selectedMode. second, searchMode. children. contains ( selectedSecondMode) {
71- searchModel. append ( contentsOf: selectedMode. dropFirst ( ) )
72- } else {
73- searchModel. append ( secondMode)
74- if let thirdMode = secondMode. children. first, let selectedThirdMode = selectedMode. third {
75- if secondMode. children. contains ( selectedThirdMode) {
76- searchModel. append ( selectedThirdMode)
77- } else {
78- searchModel. append ( thirdMode)
79- }
80- }
81- }
82- }
83- }
84-
8535 private var chevron : some View {
8636 Image ( systemName: " chevron.compact.right " )
8737 . foregroundStyle ( . tertiary)
@@ -273,12 +223,55 @@ struct FindNavigatorForm: View {
273223 }
274224}
275225
276- extension Array {
277- var second : Element ? {
278- self . count > 1 ? self [ 1 ] : nil
226+ extension FindNavigatorForm {
227+ private func getMenuList( _ index: Int ) -> [ SearchModeModel ] {
228+ index == 0 ? SearchModeModel . SearchModes : selectedMode [ index - 1 ] . children
229+ }
230+
231+ private func onSelectMenuItem( _ index: Int , searchMode: SearchModeModel ) {
232+ var newSelectedMode : [ SearchModeModel ] = [ ]
233+
234+ switch index {
235+ case 0 :
236+ newSelectedMode. append ( searchMode)
237+ self . updateSelectedMode ( searchMode, searchModel: & newSelectedMode)
238+ self . selectedMode = newSelectedMode
239+ case 1 :
240+ if let firstMode = selectedMode. first {
241+ newSelectedMode. append ( contentsOf: [ firstMode, searchMode] )
242+ if let thirdMode = searchMode. children. first {
243+ if let selectedThirdMode = selectedMode. third, searchMode. children. contains ( selectedThirdMode) {
244+ newSelectedMode. append ( selectedThirdMode)
245+ } else {
246+ newSelectedMode. append ( thirdMode)
247+ }
248+ }
249+ }
250+ self . selectedMode = newSelectedMode
251+ case 2 :
252+ if let firstMode = selectedMode. first, let secondMode = selectedMode. second {
253+ newSelectedMode. append ( contentsOf: [ firstMode, secondMode, searchMode] )
254+ }
255+ self . selectedMode = newSelectedMode
256+ default :
257+ return
258+ }
279259 }
280260
281- var third : Element ? {
282- self . count > 2 ? self [ 2 ] : nil
261+ private func updateSelectedMode( _ searchMode: SearchModeModel , searchModel: inout [ SearchModeModel ] ) {
262+ if let secondMode = searchMode. children. first {
263+ if let selectedSecondMode = selectedMode. second, searchMode. children. contains ( selectedSecondMode) {
264+ searchModel. append ( contentsOf: selectedMode. dropFirst ( ) )
265+ } else {
266+ searchModel. append ( secondMode)
267+ if let thirdMode = secondMode. children. first, let selectedThirdMode = selectedMode. third {
268+ if secondMode. children. contains ( selectedThirdMode) {
269+ searchModel. append ( selectedThirdMode)
270+ } else {
271+ searchModel. append ( thirdMode)
272+ }
273+ }
274+ }
275+ }
283276 }
284277}
0 commit comments