update labels view to checkmark style cells

This commit is contained in:
Satindar Dhillon 2022-06-02 14:07:34 -07:00
parent 89164a353f
commit 5b228d9c1b
2 changed files with 26 additions and 39 deletions

View file

@ -34,43 +34,12 @@ struct ApplyLabelsView: View {
@Environment(\.presentationMode) private var presentationMode
@StateObject var viewModel = LabelsViewModel()
func isSelected(_ label: LinkedItemLabel) -> Bool {
viewModel.selectedLabels.contains(where: { $0.id == label.id })
}
var innerBody: some View {
List {
Section(header: Text("Assigned Labels")) {
if viewModel.selectedLabels.isEmpty {
Text("No labels are currently assigned.")
}
ForEach(viewModel.selectedLabels.applySearchFilter(viewModel.labelSearchFilter), id: \.self) { label in
HStack {
TextChip(feedItemLabel: label)
Spacer()
Button(
action: {
withAnimation {
viewModel.removeLabelFromItem(label)
}
},
label: { Image(systemName: "xmark.circle").foregroundColor(.appGrayTextContrast) }
)
}
}
}
Section(header: Text("Available Labels")) {
ForEach(viewModel.unselectedLabels.applySearchFilter(viewModel.labelSearchFilter), id: \.self) { label in
HStack {
TextChip(feedItemLabel: label)
Spacer()
Button(
action: {
withAnimation {
viewModel.addLabelToItem(label)
}
},
label: { Image(systemName: "plus").foregroundColor(.appGrayTextContrast) }
)
}
}
}
Section {
Button(
action: { viewModel.showCreateEmailModal = true },
@ -84,6 +53,28 @@ struct ApplyLabelsView: View {
)
.disabled(viewModel.isLoading)
}
Section {
ForEach(viewModel.labels.applySearchFilter(viewModel.labelSearchFilter), id: \.self) { label in
Button(
action: {
if isSelected(label) {
viewModel.selectedLabels.removeAll(where: { $0.id == label.id })
} else {
viewModel.selectedLabels.append(label)
}
},
label: {
HStack {
TextChip(feedItemLabel: label)
Spacer()
if isSelected(label) {
Image(systemName: "checkmark")
}
}
}
)
}
}
}
.navigationTitle(mode.navTitle)
#if os(iOS)

View file

@ -12,10 +12,6 @@ struct FilterByLabelsView: View {
@EnvironmentObject var dataService: DataService
@Environment(\.presentationMode) private var presentationMode
// init(initiallySelected: [LinkedItemLabel], initiallyNegated: [LinkedItemLabel], onSave:) {
//
// }
func isNegated(_ label: LinkedItemLabel) -> Bool {
viewModel.negatedLabels.contains(where: { $0.id == label.id })
}