diff --git a/clients/admin-ui/src/features/privacy-experience/PrivacyExperienceTranslationForm.tsx b/clients/admin-ui/src/features/privacy-experience/PrivacyExperienceTranslationForm.tsx index 0a63d45d76..bc6cc60825 100644 --- a/clients/admin-ui/src/features/privacy-experience/PrivacyExperienceTranslationForm.tsx +++ b/clients/admin-ui/src/features/privacy-experience/PrivacyExperienceTranslationForm.tsx @@ -182,7 +182,7 @@ const PrivacyExperienceTranslationForm = ({ : "Edit experience text"} {isOOB ? : null} - {translationsEnabled ? ( + {translationsEnabled && ( <> setNewDefaultTranslation(translationIndex)} /> - ) : null} + )} {values.component === ComponentType.BANNER_AND_MODAL || - values.component === ComponentType.TCF_OVERLAY ? ( - <> - - - - ) : null} + (values.component === ComponentType.TCF_OVERLAY && ( + <> + + + + ))} - {formConfig.privacy_preferences_link_label?.included ? ( + {formConfig.privacy_preferences_link_label?.included && ( - ) : null} - {formConfig.save_button_label?.included ? ( + )} + {formConfig.save_button_label?.included && ( - ) : null} - {formConfig.acknowledge_button_label?.included ? ( + )} + {formConfig.acknowledge_button_label?.included && ( - ) : null} - {formConfig.privacy_policy_link_label?.included ? ( + )} + {formConfig.privacy_policy_link_label?.included && ( - ) : null} - {formConfig.privacy_policy_url?.included ? ( + )} + {formConfig.privacy_policy_url?.included && ( - ) : null} + )} + {formConfig.modal_link_label?.included && ( + + )} ); }; diff --git a/clients/admin-ui/src/features/privacy-experience/form/helpers.tsx b/clients/admin-ui/src/features/privacy-experience/form/helpers.tsx index 90da27de01..b2d999abf8 100644 --- a/clients/admin-ui/src/features/privacy-experience/form/helpers.tsx +++ b/clients/admin-ui/src/features/privacy-experience/form/helpers.tsx @@ -121,6 +121,7 @@ export const getTranslationFormFields = ( reject_button_label: { included: true, required: true }, privacy_policy_link_label: { included: true }, privacy_policy_url: { included: true }, + modal_link_label: { included: true }, }; } if (component === ComponentType.MODAL) { @@ -134,6 +135,7 @@ export const getTranslationFormFields = ( privacy_policy_link_label: { included: true }, privacy_policy_url: { included: true }, privacy_preferences_link_label: { included: true }, + modal_link_label: { included: true }, }; } @@ -150,6 +152,7 @@ export const getTranslationFormFields = ( privacy_policy_link_label: { included: true }, privacy_policy_url: { included: true }, privacy_preferences_link_label: { included: true, required: true }, + modal_link_label: { included: true }, }; } // For TCF overlay / default @@ -163,5 +166,6 @@ export const getTranslationFormFields = ( privacy_policy_link_label: { included: true }, privacy_policy_url: { included: true }, privacy_preferences_link_label: { included: true, required: true }, + modal_link_label: { included: true }, }; }; diff --git a/clients/admin-ui/src/features/privacy-experience/preview/helpers.ts b/clients/admin-ui/src/features/privacy-experience/preview/helpers.ts index aa7867ee4f..95e74bd523 100644 --- a/clients/admin-ui/src/features/privacy-experience/preview/helpers.ts +++ b/clients/admin-ui/src/features/privacy-experience/preview/helpers.ts @@ -16,6 +16,7 @@ const defaultTranslation: ExperienceTranslation = { description: "Description", privacy_policy_link_label: "", privacy_policy_url: "", + modal_link_label: "", privacy_preferences_link_label: "Privacy preferences", reject_button_label: "Reject All", save_button_label: "Save", @@ -78,7 +79,9 @@ export const buildBaseConfig = ( }, }); -// fill in any empty strings in a translation with the defaults above +/** + * fill in any empty strings in a translation with the defaults from `buildBaseConfig` + */ export const translationOrDefault = ( translation: ExperienceTranslation ): ExperienceTranslation => { diff --git a/clients/admin-ui/src/features/privacy-experience/privacy-experience.slice.ts b/clients/admin-ui/src/features/privacy-experience/privacy-experience.slice.ts index a7157949ce..d3ff04143c 100644 --- a/clients/admin-ui/src/features/privacy-experience/privacy-experience.slice.ts +++ b/clients/admin-ui/src/features/privacy-experience/privacy-experience.slice.ts @@ -37,7 +37,8 @@ type ExperienceConfigOptionalFields = | "banner_title" | "banner_description" | "privacy_policy_link_label" - | "privacy_policy_url"; + | "privacy_policy_url" + | "modal_link_label"; export type ExperienceConfigUpdateParams = Omit< Partial, ExperienceConfigOptionalFields @@ -47,6 +48,7 @@ export type ExperienceConfigUpdateParams = Omit< banner_description?: string | null; privacy_policy_link_label?: string | null; privacy_policy_url?: string | null; + modal_link_label?: string | null; }; type ExperienceConfigEnableDisableParams = ExperienceConfigDisabledUpdate & { id: string; @@ -59,6 +61,7 @@ export type ExperienceConfigCreateParams = Omit< banner_description?: string | null; privacy_policy_link_label?: string | null; privacy_policy_url?: string | null; + modal_link_label?: string | null; }; const privacyExperienceConfigApi = baseApi.injectEndpoints({ diff --git a/clients/admin-ui/src/types/api/models/ExperienceTranslation.ts b/clients/admin-ui/src/types/api/models/ExperienceTranslation.ts index c9f46f45c2..8923e1f952 100644 --- a/clients/admin-ui/src/types/api/models/ExperienceTranslation.ts +++ b/clients/admin-ui/src/types/api/models/ExperienceTranslation.ts @@ -57,4 +57,8 @@ export type ExperienceTranslation = { * Overall description - used for banner as well if applicable. HTML descriptions are supported so links can be included. */ description?: string; + /** + * Custom link/button trigger label + */ + modal_link_label?: string; }; diff --git a/clients/admin-ui/src/types/api/models/ExperienceTranslationCreate.ts b/clients/admin-ui/src/types/api/models/ExperienceTranslationCreate.ts index 40e581d55b..9a675e5d84 100644 --- a/clients/admin-ui/src/types/api/models/ExperienceTranslationCreate.ts +++ b/clients/admin-ui/src/types/api/models/ExperienceTranslationCreate.ts @@ -51,4 +51,8 @@ export type ExperienceTranslationCreate = { */ banner_description?: string; description: string; + /** + * Custom link/button trigger label + */ + modal_link_label?: string; }; diff --git a/clients/fides-js/src/lib/i18n/locales/index.ts b/clients/fides-js/src/lib/i18n/locales/index.ts index 7901b8508b..ad9b933636 100644 --- a/clients/fides-js/src/lib/i18n/locales/index.ts +++ b/clients/fides-js/src/lib/i18n/locales/index.ts @@ -6,7 +6,8 @@ import type { Locale, Messages, Language } from ".."; * * NOTE: This process isn't automatic. To add a new static locale, follow these steps: * 1) Add the static import of the new ./{locale}/messages.json file - * 2) Add the locale to the LOCALES object below + * 2) Add the locale to the STATIC_MESSAGES object below + * 3) Add the locale to the LOCALE_LANGUAGE_MAP object below */ import ar from "./ar/messages.json"; import bg from "./bg/messages.json"; diff --git a/clients/fides-js/src/lib/tcf/i18n/locales/index.ts b/clients/fides-js/src/lib/tcf/i18n/locales/index.ts index 76c3508cc4..1e10e067d9 100644 --- a/clients/fides-js/src/lib/tcf/i18n/locales/index.ts +++ b/clients/fides-js/src/lib/tcf/i18n/locales/index.ts @@ -6,7 +6,7 @@ import type { Locale, Messages } from "../../../i18n"; * * NOTE: This process isn't automatic. To add a new static locale, follow these steps: * 1) Add the static import of the new ./{locale}/messages-tcf.json file - * 2) Add the locale to the LOCALES object below + * 2) Add the locale to the STATIC_MESSAGES_TCF object below */ import ar from "./ar/messages-tcf.json"; import bg from "./bg/messages-tcf.json";