diff --git a/src/lib/components/FieldItem.svelte b/src/lib/components/FieldItem.svelte index c8a9e47..e9821e2 100644 --- a/src/lib/components/FieldItem.svelte +++ b/src/lib/components/FieldItem.svelte @@ -240,6 +240,16 @@ {/if} +
+ { + field.is_language_independent = detail + }} + /> +
+ {#each field.fields as subfield, i (subfield.id)} diff --git a/src/lib/const.js b/src/lib/const.js index 9ce28e9..e91f13f 100644 --- a/src/lib/const.js +++ b/src/lib/const.js @@ -14,6 +14,7 @@ export const Field = (field = {}) => ({ fields: [], options: {}, is_static: false, + is_language_independent: false, ...field }) diff --git a/src/lib/converter.js b/src/lib/converter.js index fdc0a31..bdde16a 100644 --- a/src/lib/converter.js +++ b/src/lib/converter.js @@ -166,6 +166,7 @@ export function validate_site_structure_v2(site) { fields: [], options: {}, is_static: false, + is_language_independent: false, }], content: { en: { @@ -426,6 +427,7 @@ export function convertFields(fields = [], fn = () => { }) { options: field.options || {}, default: field.default || '', is_static: field.is_static || false, + is_language_independent: field.is_language_independent || false, } }) } diff --git a/src/lib/index.d.ts b/src/lib/index.d.ts index bffe7ac..c6a557c 100644 --- a/src/lib/index.d.ts +++ b/src/lib/index.d.ts @@ -48,6 +48,7 @@ export type Field = { fields: Array, options: object, is_static: boolean, + is_language_independent: false, value?: any } diff --git a/src/lib/stores/helpers.js b/src/lib/stores/helpers.js index b085651..3c779b0 100644 --- a/src/lib/stores/helpers.js +++ b/src/lib/stores/helpers.js @@ -174,11 +174,19 @@ export function get_content_with_static({ component, symbol, loc }) { const field_value = component.content?.[loc]?.[field.key] // if field is static, use value from symbol content if (field.is_static) { - const symbol_value = symbol.content?.[loc]?.[field.key] + const symbol_value = field.is_language_independent + ? symbol.content?.['en']?.[field.key] + : symbol.content?.[loc]?.[field.key] return { key: field.key, value: symbol_value } + } else if (field.is_language_independent) { + const default_value = symbol.content?.['en']?.[field.key] + return { + key: field.key, + value: default_value + } } else if (field_value !== undefined) { return { key: field.key, @@ -199,6 +207,7 @@ export function get_content_with_static({ component, symbol, loc }) { return _.cloneDeep(content) } + export function getPageData({ page = get(activePage), site = get(activeSite), loc = get(locale) }) { const page_content = page.content[loc] const site_content = site.content[loc]