diff --git a/src/components/DomainFormModal.test.ts b/src/components/DomainFormModal.test.ts index a4b8287..e36c1d8 100644 --- a/src/components/DomainFormModal.test.ts +++ b/src/components/DomainFormModal.test.ts @@ -57,3 +57,22 @@ describe("DomainFormModal routing-only hostnames", () => { expect(saved.route_only_aliases).toEqual(["dashboard.example.com"]); }); }); + +describe("DomainFormModal static caching", () => { + it("emits the static-cache toggle when enabled on the domain", async () => { + const wrapper = mountModal({ + id: "d1", + service: "web", + container_port: 80, + domain: "api.example.com", + ssl: { enabled: false, auto_cert: false }, + static_cache: true, + }); + + document.querySelector(".btn-primary")?.click(); + await wrapper.vm.$nextTick(); + + const saved = wrapper.emitted("save")?.[0]?.[0] as DomainConfig; + expect(saved.static_cache).toBe(true); + }); +}); diff --git a/src/components/DomainFormModal.vue b/src/components/DomainFormModal.vue index db5c897..78e4a4a 100644 --- a/src/components/DomainFormModal.vue +++ b/src/components/DomainFormModal.vue @@ -73,6 +73,17 @@ +
+ + + Sets a long cache on static files (styles, scripts, images, fonts). Dynamic responses keep the app's own + cache headers. + +
+
@@ -155,6 +166,7 @@ const form = ref<{ ssl: { enabled: boolean; auto_cert: boolean }; aliases: string[]; route_only_aliases: string[]; + static_cache: boolean; }>({ domain: "", service: "", @@ -164,6 +176,7 @@ const form = ref<{ ssl: { enabled: false, auto_cert: false }, aliases: [], route_only_aliases: [], + static_cache: false, }); watch( @@ -183,6 +196,7 @@ watch( }, aliases: [...(props.domain.aliases || [])], route_only_aliases: [...(props.domain.route_only_aliases || [])], + static_cache: props.domain.static_cache || false, }; } else { form.value = { @@ -194,6 +208,7 @@ watch( ssl: { enabled: false, auto_cert: false }, aliases: [], route_only_aliases: [], + static_cache: false, }; } } @@ -234,6 +249,7 @@ function handleSubmit() { ssl: form.value.ssl, aliases: form.value.aliases.filter((a) => a.trim() !== ""), route_only_aliases: form.value.route_only_aliases.filter((a) => a.trim() !== ""), + static_cache: form.value.static_cache || undefined, }; emit("save", domainData); diff --git a/src/types/index.ts b/src/types/index.ts index 5859fc9..5233c23 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -62,6 +62,7 @@ export interface DomainConfig { ssl: SSLConfig; aliases?: string[]; route_only_aliases?: string[]; + static_cache?: boolean; } export interface QuickAction {