diff --git a/CHDataManagement/Generator/HeaderElement.swift b/CHDataManagement/Generator/HeaderElement.swift
index e3b133b..393cc39 100644
--- a/CHDataManagement/Generator/HeaderElement.swift
+++ b/CHDataManagement/Generator/HeaderElement.swift
@@ -50,11 +50,14 @@ enum HeaderElement {
case robots
+ case manifest(FileResource)
+
var order: Int {
switch self {
case .charset: 1
case .robots: 2
case .viewport: 3
+ case .manifest: 4
case .icon: 10
case .css(_, let order): order
case .js: 20
@@ -79,6 +82,8 @@ enum HeaderElement {
return file
case .jsModule(let file):
return file
+ case .manifest(let file):
+ return file
default:
return nil
}
@@ -129,6 +134,8 @@ extension HeaderElement {
return ""
case .robots:
return ""
+ case .manifest(let file):
+ return ""
}
}
}
@@ -165,6 +172,8 @@ extension HeaderElement: CustomStringConvertible {
return "viewport"
case .robots:
return "robots"
+ case .manifest:
+ return "manifest"
}
}
}
diff --git a/CHDataManagement/Model/Content+Generation.swift b/CHDataManagement/Model/Content+Generation.swift
index b1d4a22..915408d 100644
--- a/CHDataManagement/Model/Content+Generation.swift
+++ b/CHDataManagement/Model/Content+Generation.swift
@@ -175,6 +175,9 @@ extension Content {
if let css {
result.insert(.css(file: css, order: HeaderElement.defaultCssFileOrder))
}
+ if let manifest = settings.pages.manifestFile {
+ result.insert(.manifest(manifest))
+ }
return result
}
diff --git a/CHDataManagement/Model/Settings/PageSettings.swift b/CHDataManagement/Model/Settings/PageSettings.swift
index 0524e02..2791527 100644
--- a/CHDataManagement/Model/Settings/PageSettings.swift
+++ b/CHDataManagement/Model/Settings/PageSettings.swift
@@ -26,6 +26,9 @@ final class PageSettings: ObservableObject {
@Published
var imageCompareCssFile: FileResource?
+ @Published
+ var manifestFile: FileResource?
+
@Published
var german: LocalizedPageSettings
@@ -40,6 +43,7 @@ final class PageSettings: ObservableObject {
modelViewerJsFile: FileResource? = nil,
imageCompareJsFile: FileResource? = nil,
imageCompareCssFile: FileResource? = nil,
+ manifestFile: FileResource? = nil,
german: LocalizedPageSettings,
english: LocalizedPageSettings) {
self.contentWidth = contentWidth
@@ -50,6 +54,7 @@ final class PageSettings: ObservableObject {
self.modelViewerJsFile = modelViewerJsFile
self.imageCompareJsFile = imageCompareJsFile
self.imageCompareCssFile = imageCompareCssFile
+ self.manifestFile = manifestFile
self.german = german
self.english = english
}
@@ -70,6 +75,9 @@ final class PageSettings: ObservableObject {
if imageCompareCssFile == file {
imageCompareCssFile = nil
}
+ if manifestFile == file {
+ manifestFile = nil
+ }
}
}
@@ -87,6 +95,7 @@ extension PageSettings {
modelViewerJsFile: data.modelViewerJsFile.map(context.file),
imageCompareJsFile: data.imageCompareJsFile.map(context.file),
imageCompareCssFile: data.imageCompareCssFile.map(context.file),
+ manifestFile: data.manifestFile.map(context.file),
german: .init(data: data.german),
english: .init(data: data.english))
}
@@ -100,6 +109,7 @@ extension PageSettings {
modelViewerJsFile: modelViewerJsFile?.id,
imageCompareJsFile: imageCompareJsFile?.id,
imageCompareCssFile: imageCompareCssFile?.id,
+ manifestFile: manifestFile?.id,
german: german.data,
english: english.data)
}
@@ -113,6 +123,7 @@ extension PageSettings {
let modelViewerJsFile: String?
let imageCompareJsFile: String?
let imageCompareCssFile: String?
+ let manifestFile: String?
let german: LocalizedPageSettings.Data
let english: LocalizedPageSettings.Data
}
diff --git a/CHDataManagement/Views/Settings/Pages/PageSettingsDetailView.swift b/CHDataManagement/Views/Settings/Pages/PageSettingsDetailView.swift
index 93f846e..66fe61e 100644
--- a/CHDataManagement/Views/Settings/Pages/PageSettingsDetailView.swift
+++ b/CHDataManagement/Views/Settings/Pages/PageSettingsDetailView.swift
@@ -57,6 +57,11 @@ struct PageSettingsDetailView: View {
selectedFile: $pageSettings.imageCompareJsFile,
allowedType: .code)
+ FilePropertyView(
+ title: "Web App Manifest File",
+ footer: "The manifest file with the properties of the website when used as a progressive web app",
+ selectedFile: $pageSettings.manifestFile)
+
LocalizedPageSettingsView(settings: pageSettings.localized(in: language))
.id(language)
}