@@ -127,12 +127,16 @@ struct GroupHomeView: View {
127
127
128
128
struct GroupOptionsListView : View {
129
129
130
- var isSettleUpEnable : Bool
130
+ @Binding var showShareSheet : Bool
131
+ @Binding var showExportOptions : Bool
132
+
133
+ let isSettleUpEnable : Bool
131
134
132
135
let onSettleUpTap : ( ) -> Void
133
136
let onTransactionsTap : ( ) -> Void
134
137
let onBalanceTap : ( ) -> Void
135
138
let onTotalsTap : ( ) -> Void
139
+ let onExportTap : ( ExportOptions , @escaping ( Bool ) -> Void ) -> Void
136
140
137
141
var body : some View {
138
142
ScrollView ( . horizontal, showsIndicators: false ) {
@@ -144,10 +148,51 @@ struct GroupOptionsListView: View {
144
148
GroupOptionsButtonView ( text: " Balances " , onTap: onBalanceTap)
145
149
146
150
GroupOptionsButtonView ( text: " Totals " , onTap: onTotalsTap)
151
+
152
+ GroupOptionsButtonView ( text: " Export " ) {
153
+ showExportOptions = true
154
+ }
147
155
}
148
156
. padding ( [ . horizontal, . bottom] , 16 )
149
157
. padding ( . top, 24 )
150
158
}
159
+ . confirmationDialog ( " " , isPresented: $showExportOptions, titleVisibility: . hidden) {
160
+ ForEach ( ExportOptions . allCases, id: \. self) { option in
161
+ Button ( option. option. localized) {
162
+ showExportOptions = false
163
+ onExportTap ( option) { _ in
164
+ showShareSheet = true
165
+ }
166
+ }
167
+ }
168
+ }
169
+ . sheet ( isPresented: $showShareSheet) {
170
+ ShareSheetView ( activityItems: [ " " ] ) { isCompleted in
171
+ if isCompleted {
172
+ showShareSheet = false
173
+ }
174
+ }
175
+ }
176
+ }
177
+ }
178
+
179
+ enum ExportOptions : Int , CaseIterable {
180
+
181
+ case month, threeMonths, sixMonths, year, all
182
+
183
+ var option : String {
184
+ switch self {
185
+ case . month:
186
+ return " Month "
187
+ case . threeMonths:
188
+ return " Three months "
189
+ case . sixMonths:
190
+ return " Six months "
191
+ case . year:
192
+ return " Year "
193
+ case . all:
194
+ return " All "
195
+ }
151
196
}
152
197
}
153
198
0 commit comments