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";