Show page tags
This commit is contained in:
parent
5684196ef3
commit
93e642c3c9
@ -41,4 +41,11 @@ extension ContentLanguage {
|
||||
case .german: return .english
|
||||
}
|
||||
}
|
||||
|
||||
var text: String {
|
||||
switch self {
|
||||
case .english: return "English"
|
||||
case .german: return "German"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -64,7 +64,6 @@ struct LocalizedPageContentView: View {
|
||||
didChangeContent = true
|
||||
}
|
||||
}
|
||||
.padding()
|
||||
.onAppear(perform: loadContent)
|
||||
.onDisappear(perform: saveContent)
|
||||
}
|
||||
|
@ -24,6 +24,9 @@ struct PageContentView: View {
|
||||
@EnvironmentObject
|
||||
private var content: Content
|
||||
|
||||
@State
|
||||
private var showTagPicker = false
|
||||
|
||||
init(page: Page) {
|
||||
self.page = page
|
||||
}
|
||||
@ -40,10 +43,36 @@ struct PageContentView: View {
|
||||
Spacer()
|
||||
}.padding()
|
||||
} else {
|
||||
LocalizedPageContentView(pageId: page.id, page: page.localized(in: language), language: language)
|
||||
.id(page.id + language.rawValue)
|
||||
VStack(alignment: .leading) {
|
||||
FlowHStack {
|
||||
ForEach(page.tags, id: \.id) { tag in
|
||||
TagView(text: tag.localized(in: language).name)
|
||||
.foregroundStyle(.white)
|
||||
}
|
||||
Button(action: { showTagPicker = true }) {
|
||||
Image(systemSymbol: .squareAndPencilCircleFill)
|
||||
.resizable()
|
||||
.aspectRatio(1, contentMode: .fit)
|
||||
.frame(height: 22)
|
||||
.foregroundColor(Color.gray)
|
||||
.background(Circle()
|
||||
.fill(Color.white)
|
||||
.padding(1))
|
||||
}
|
||||
.buttonStyle(.plain)
|
||||
}
|
||||
LocalizedPageContentView(pageId: page.id, page: page.localized(in: language), language: language)
|
||||
.id(page.id + language.rawValue)
|
||||
}.padding()
|
||||
.sheet(isPresented: $showTagPicker) {
|
||||
TagSelectionView(
|
||||
presented: $showTagPicker,
|
||||
selected: $page.tags,
|
||||
tags: $content.tags)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
@ -43,6 +43,7 @@ private struct LocalizedTitle: View {
|
||||
.foregroundStyle(Color.primary)
|
||||
.textFieldStyle(.plain)
|
||||
.lineLimit(2)
|
||||
.frame(minHeight: 30)
|
||||
}
|
||||
}
|
||||
|
||||
@ -87,8 +88,11 @@ struct LocalizedPostContentView: View {
|
||||
|
||||
var body: some View {
|
||||
VStack(alignment: .leading) {
|
||||
Text("Images")
|
||||
.font(.headline)
|
||||
HStack {
|
||||
Text("Images")
|
||||
.font(.headline)
|
||||
Button("Transfer from \(language.next.text)", action: copyImagesFromOtherLanguage)
|
||||
}
|
||||
PostImagesView(post: post.localized(in: language))
|
||||
LocalizedTitle(post: post.localized(in: language))
|
||||
FlowHStack {
|
||||
@ -119,8 +123,9 @@ struct LocalizedPostContentView: View {
|
||||
}
|
||||
}
|
||||
|
||||
private func remove(tag: Tag) {
|
||||
post.tags = post.tags.filter {$0.id != tag.id }
|
||||
private func copyImagesFromOtherLanguage() {
|
||||
let images = post.localized(in: language.next).images
|
||||
post.localized(in: language).images = images
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -75,10 +75,6 @@ struct TagSelectionView: View {
|
||||
}
|
||||
|
||||
private func select(tag: Tag) {
|
||||
guard let index = tags.firstIndex(of: tag) else {
|
||||
return
|
||||
}
|
||||
tags.remove(at: index)
|
||||
selected.append(tag)
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user