@redacto.io/consent-sdk-react 3.3.0 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/README.md +11 -0
- package/dist/index.d.mts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +279 -32
- package/dist/index.mjs +279 -32
- package/package.json +1 -1
- package/src/RedactoNoticeConsent/RedactoNoticeConsent.test.tsx +123 -1
- package/src/RedactoNoticeConsent/RedactoNoticeConsent.tsx +924 -652
- package/src/RedactoNoticeConsent/api/index.ts +5 -1
- package/src/RedactoNoticeConsent/api/types.ts +47 -8
- package/src/RedactoNoticeConsent/constants.ts +20 -0
- package/src/RedactoNoticeConsent/styles.ts +3 -6
- package/src/RedactoNoticeConsent/types.ts +11 -5
- package/src/RedactoNoticeConsentInline/RedactoNoticeConsentInline.tsx +12 -3
- package/src/RedactoNoticeConsentInline/api/types.ts +8 -6
- package/src/RedactoNoticeConsentInline/types.ts +9 -4
- package/src/types/react-jsx.d.ts +26 -0
- package/tests/mocks.ts +53 -7
- package/tsconfig.json +1 -5
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -226,6 +226,8 @@ A modal popup component for consent collection. Displays a full-screen modal wit
|
|
|
226
226
|
| `settings` | `object` | No | - | Custom styling options |
|
|
227
227
|
| `applicationId` | `string` | No | - | Application-specific UUID |
|
|
228
228
|
| `validateAgainst` | `"all" \| "required"` | No | `"all"` | Consent validation mode (see below) |
|
|
229
|
+
| `includeFullyConsentedData` | `boolean` | No | `false` | When true, API returns 200 with pre-selected purposes instead of 409 when user has already consented |
|
|
230
|
+
| `reviewModeButtonText` | `string` | No | `"Continue"` | Button text when in fully consented review mode (magic link flow) |
|
|
229
231
|
| `onAccept` | `() => void` | Yes | - | Callback when consent is accepted |
|
|
230
232
|
| `onDecline` | `() => void` | Yes | - | Callback when consent is declined |
|
|
231
233
|
| `onError` | `(error: Error) => void` | No | - | Error handler callback |
|
|
@@ -244,6 +246,15 @@ The `validateAgainst` prop controls how the backend validates consent status whe
|
|
|
244
246
|
- Use `"required"` for reconsent scenarios or when you only need to verify mandatory consent requirements
|
|
245
247
|
- The mode affects API caching behavior: `"all"` responses are cached for performance, while `"required"` responses bypass cache to ensure up-to-date validation
|
|
246
248
|
|
|
249
|
+
**`includeFullyConsentedData` Parameter:**
|
|
250
|
+
|
|
251
|
+
When users arrive via a magic link and have already consented, the API normally returns 409 and the SDK bypasses to "Already Consented". Set `includeFullyConsentedData={true}` to instead show a **read-only review** of what they consented to, then a single Continue button.
|
|
252
|
+
|
|
253
|
+
- **Purposes**: Green tick for each selected purpose
|
|
254
|
+
- **Data elements**: Green tick = consented, empty circle = not consented (all read-only, no editing)
|
|
255
|
+
- **Partial selection**: If a purpose is selected but some data elements within it are not, the review correctly shows green ticks for consented elements and empty circles for non-consented ones
|
|
256
|
+
- Use `reviewModeButtonText` to customize the button label (default: "Continue")
|
|
257
|
+
|
|
247
258
|
### `RedactoNoticeConsentInline`
|
|
248
259
|
|
|
249
260
|
An inline component for embedding consent directly in forms. The component can load consent content without tokens and automatically submits consent when tokens are provided and all required conditions are met.
|
package/dist/index.d.mts
CHANGED
|
@@ -40,6 +40,8 @@ type Props$1 = Readonly<{
|
|
|
40
40
|
onError?: (error: Error) => void;
|
|
41
41
|
applicationId?: string;
|
|
42
42
|
validateAgainst?: "all" | "required";
|
|
43
|
+
includeFullyConsentedData?: boolean;
|
|
44
|
+
reviewModeButtonText?: string;
|
|
43
45
|
}>;
|
|
44
46
|
|
|
45
47
|
/**
|
|
@@ -49,7 +51,7 @@ type Props$1 = Readonly<{
|
|
|
49
51
|
* to view and manage their consent preferences. Supports both initial consent
|
|
50
52
|
* collection and reconsent flows.
|
|
51
53
|
*/
|
|
52
|
-
declare const RedactoNoticeConsent: ({ noticeId, accessToken, refreshToken, baseUrl, language, blockUI, onAccept, onDecline, onError, settings, applicationId, validateAgainst, }: Props$1) => react_jsx_runtime.JSX.Element;
|
|
54
|
+
declare const RedactoNoticeConsent: ({ noticeId, accessToken, refreshToken, baseUrl, language, blockUI, onAccept, onDecline, onError, settings, applicationId, validateAgainst, includeFullyConsentedData, reviewModeButtonText, }: Props$1) => react_jsx_runtime.JSX.Element;
|
|
53
55
|
|
|
54
56
|
type Settings = {
|
|
55
57
|
button: {
|
package/dist/index.d.ts
CHANGED
|
@@ -40,6 +40,8 @@ type Props$1 = Readonly<{
|
|
|
40
40
|
onError?: (error: Error) => void;
|
|
41
41
|
applicationId?: string;
|
|
42
42
|
validateAgainst?: "all" | "required";
|
|
43
|
+
includeFullyConsentedData?: boolean;
|
|
44
|
+
reviewModeButtonText?: string;
|
|
43
45
|
}>;
|
|
44
46
|
|
|
45
47
|
/**
|
|
@@ -49,7 +51,7 @@ type Props$1 = Readonly<{
|
|
|
49
51
|
* to view and manage their consent preferences. Supports both initial consent
|
|
50
52
|
* collection and reconsent flows.
|
|
51
53
|
*/
|
|
52
|
-
declare const RedactoNoticeConsent: ({ noticeId, accessToken, refreshToken, baseUrl, language, blockUI, onAccept, onDecline, onError, settings, applicationId, validateAgainst, }: Props$1) => react_jsx_runtime.JSX.Element;
|
|
54
|
+
declare const RedactoNoticeConsent: ({ noticeId, accessToken, refreshToken, baseUrl, language, blockUI, onAccept, onDecline, onError, settings, applicationId, validateAgainst, includeFullyConsentedData, reviewModeButtonText, }: Props$1) => react_jsx_runtime.JSX.Element;
|
|
53
55
|
|
|
54
56
|
type Settings = {
|
|
55
57
|
button: {
|
package/dist/index.js
CHANGED
|
@@ -79,6 +79,7 @@ var fetchConsentContent = async ({
|
|
|
79
79
|
language = "en",
|
|
80
80
|
specific_uuid,
|
|
81
81
|
validate_against = "all",
|
|
82
|
+
include_fully_consented_data = false,
|
|
82
83
|
signal
|
|
83
84
|
// AbortSignal for request cancellation
|
|
84
85
|
}) => {
|
|
@@ -95,7 +96,7 @@ var fetchConsentContent = async ({
|
|
|
95
96
|
throw new Error("Invalid token: missing organization or workspace UUID");
|
|
96
97
|
}
|
|
97
98
|
const apiBaseUrl = baseUrl || BASE_URL;
|
|
98
|
-
const cacheKey = `${accessToken}-${noticeId}-${validate_against}-${language}-${specific_uuid || ""}`;
|
|
99
|
+
const cacheKey = `${accessToken}-${noticeId}-${validate_against}-${language}-${specific_uuid || ""}-${include_fully_consented_data}`;
|
|
99
100
|
if (validate_against === "all" && !specific_uuid) {
|
|
100
101
|
const cachedData = getCachedData(cacheKey);
|
|
101
102
|
if (cachedData) {
|
|
@@ -109,6 +110,9 @@ var fetchConsentContent = async ({
|
|
|
109
110
|
url.searchParams.append("specific_uuid", specific_uuid);
|
|
110
111
|
}
|
|
111
112
|
url.searchParams.append("validate_against", validate_against);
|
|
113
|
+
if (include_fully_consented_data) {
|
|
114
|
+
url.searchParams.append("include_fully_consented_data", "true");
|
|
115
|
+
}
|
|
112
116
|
const response = await fetch(url.toString(), {
|
|
113
117
|
method: "GET",
|
|
114
118
|
headers: {
|
|
@@ -393,6 +397,18 @@ var fetchTTSAudioUrls = async ({
|
|
|
393
397
|
// src/RedactoNoticeConsent/assets/redacto-logo.png
|
|
394
398
|
var redacto_logo_default = "data:image/png;base64,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";
|
|
395
399
|
|
|
400
|
+
// src/RedactoNoticeConsent/constants.ts
|
|
401
|
+
var DPO_AUDIO_ELEMENT_MAP = [
|
|
402
|
+
{ audioKey: "grievance_text_audio_url", elementId: "dpo-grievance-text" },
|
|
403
|
+
{ audioKey: "grievance_anchor_text_audio_url", elementId: "dpo-grievance-link" },
|
|
404
|
+
{ audioKey: "grievance_email_connector_text_audio_url", elementId: "dpo-grievance-email-connector" },
|
|
405
|
+
{ audioKey: "grievance_email_audio_url", elementId: "dpo-grievance-email" },
|
|
406
|
+
{ audioKey: "dp_board_text_audio_url", elementId: "dpo-dp-board-text" },
|
|
407
|
+
{ audioKey: "dp_board_anchor_text_audio_url", elementId: "dpo-dp-board-link" },
|
|
408
|
+
{ audioKey: "dpo_text_audio_url", elementId: "dpo-dpo-text" },
|
|
409
|
+
{ audioKey: "dpo_anchor_text_audio_url", elementId: "dpo-dpo-link" }
|
|
410
|
+
];
|
|
411
|
+
|
|
396
412
|
// src/RedactoNoticeConsent/injectStyles.ts
|
|
397
413
|
var stylesInjected = false;
|
|
398
414
|
var injectCheckboxStyles = () => {
|
|
@@ -582,8 +598,7 @@ var styles = {
|
|
|
582
598
|
justifyContent: "space-between",
|
|
583
599
|
alignItems: "center",
|
|
584
600
|
paddingBottom: "15px",
|
|
585
|
-
borderBottom: "
|
|
586
|
-
boxShadow: "0 1px 2px rgba(0, 0, 0, 0.03)",
|
|
601
|
+
borderBottom: "none",
|
|
587
602
|
backgroundColor: "#ffffff",
|
|
588
603
|
margin: 0,
|
|
589
604
|
boxSizing: "border-box",
|
|
@@ -637,7 +652,7 @@ var styles = {
|
|
|
637
652
|
backgroundColor: "#ffffff"
|
|
638
653
|
},
|
|
639
654
|
middleSection: {
|
|
640
|
-
margin: "
|
|
655
|
+
margin: "0px",
|
|
641
656
|
display: "flex",
|
|
642
657
|
flexDirection: "column",
|
|
643
658
|
gap: "12px",
|
|
@@ -652,7 +667,6 @@ var styles = {
|
|
|
652
667
|
fontSize: "16px",
|
|
653
668
|
fontWeight: 400,
|
|
654
669
|
lineHeight: "150%",
|
|
655
|
-
letterSpacing: "0.2px",
|
|
656
670
|
color: "#344054",
|
|
657
671
|
margin: 0,
|
|
658
672
|
padding: 0,
|
|
@@ -792,8 +806,7 @@ var styles = {
|
|
|
792
806
|
justifyContent: "space-between",
|
|
793
807
|
gap: "29px",
|
|
794
808
|
paddingTop: "15px",
|
|
795
|
-
borderTop: "
|
|
796
|
-
boxShadow: "0 -1px 2px rgba(0, 0, 0, 0.03)",
|
|
809
|
+
borderTop: "none",
|
|
797
810
|
backgroundColor: "#ffffff",
|
|
798
811
|
margin: 0,
|
|
799
812
|
boxSizing: "border-box"
|
|
@@ -1141,9 +1154,8 @@ var PurposeItem = ({
|
|
|
1141
1154
|
),
|
|
1142
1155
|
isAlreadyConsented && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: (() => {
|
|
1143
1156
|
const combinedId = `${purpose.uuid}-${dataElement.uuid}`;
|
|
1144
|
-
const isCurrentlySelected = selectedDataElements[combinedId] || false;
|
|
1145
1157
|
const wasOriginallySelected = initialDataElementSelections[combinedId] || false;
|
|
1146
|
-
if (
|
|
1158
|
+
if (wasOriginallySelected) {
|
|
1147
1159
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
1148
1160
|
"div",
|
|
1149
1161
|
{
|
|
@@ -1156,7 +1168,7 @@ var PurposeItem = ({
|
|
|
1156
1168
|
borderRadius: "50%",
|
|
1157
1169
|
backgroundColor: "#10B981"
|
|
1158
1170
|
},
|
|
1159
|
-
"aria-label": `
|
|
1171
|
+
"aria-label": `Consented to ${getTranslatedText(
|
|
1160
1172
|
`data_elements.name`,
|
|
1161
1173
|
dataElement.name,
|
|
1162
1174
|
dataElement.uuid
|
|
@@ -1186,17 +1198,23 @@ var PurposeItem = ({
|
|
|
1186
1198
|
);
|
|
1187
1199
|
} else {
|
|
1188
1200
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
1189
|
-
"
|
|
1201
|
+
"div",
|
|
1190
1202
|
{
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1203
|
+
style: {
|
|
1204
|
+
display: "flex",
|
|
1205
|
+
alignItems: "center",
|
|
1206
|
+
justifyContent: "center",
|
|
1207
|
+
width: "16px",
|
|
1208
|
+
height: "16px",
|
|
1209
|
+
borderRadius: "50%",
|
|
1210
|
+
border: "2px solid #d0d5dd",
|
|
1211
|
+
backgroundColor: "transparent"
|
|
1212
|
+
},
|
|
1213
|
+
"aria-label": `Not consented to ${getTranslatedText(
|
|
1196
1214
|
`data_elements.name`,
|
|
1197
1215
|
dataElement.name,
|
|
1198
1216
|
dataElement.uuid
|
|
1199
|
-
)}
|
|
1217
|
+
)}`
|
|
1200
1218
|
}
|
|
1201
1219
|
);
|
|
1202
1220
|
}
|
|
@@ -1606,7 +1624,9 @@ var RedactoNoticeConsent = ({
|
|
|
1606
1624
|
onError,
|
|
1607
1625
|
settings,
|
|
1608
1626
|
applicationId,
|
|
1609
|
-
validateAgainst = "all"
|
|
1627
|
+
validateAgainst = "all",
|
|
1628
|
+
includeFullyConsentedData = false,
|
|
1629
|
+
reviewModeButtonText = "Continue"
|
|
1610
1630
|
}) => {
|
|
1611
1631
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w;
|
|
1612
1632
|
const propValidationError = (0, import_react2.useMemo)(() => {
|
|
@@ -1648,6 +1668,7 @@ var RedactoNoticeConsent = ({
|
|
|
1648
1668
|
const [initialDataElementSelections, setInitialDataElementSelections] = (0, import_react2.useState)({});
|
|
1649
1669
|
const [collapsedPurposes, setCollapsedPurposes] = (0, import_react2.useState)({});
|
|
1650
1670
|
const [hasAlreadyConsented, setHasAlreadyConsented] = (0, import_react2.useState)(false);
|
|
1671
|
+
const [isFullyConsentedReviewMode, setIsFullyConsentedReviewMode] = (0, import_react2.useState)(false);
|
|
1651
1672
|
const [isLanguageDropdownOpen, setIsLanguageDropdownOpen] = (0, import_react2.useState)(false);
|
|
1652
1673
|
const [selectedLanguage, setSelectedLanguage] = (0, import_react2.useState)(language);
|
|
1653
1674
|
const [errorMessage, setErrorMessage] = (0, import_react2.useState)(null);
|
|
@@ -1809,10 +1830,15 @@ var RedactoNoticeConsent = ({
|
|
|
1809
1830
|
onAccept == null ? void 0 : onAccept();
|
|
1810
1831
|
}
|
|
1811
1832
|
}, [hasAlreadyConsented, onAccept]);
|
|
1833
|
+
const isDefaultLanguage = (lang) => {
|
|
1834
|
+
if (!content) return true;
|
|
1835
|
+
if (lang === "English" || lang === "en" || lang === "EN") return true;
|
|
1836
|
+
return false;
|
|
1837
|
+
};
|
|
1812
1838
|
const getTranslatedText = (key, defaultText, itemId) => {
|
|
1813
1839
|
var _a2, _b2;
|
|
1814
1840
|
if (!content) return defaultText;
|
|
1815
|
-
if (selectedLanguage
|
|
1841
|
+
if (isDefaultLanguage(selectedLanguage)) {
|
|
1816
1842
|
if (key === "privacy_policy_anchor_text" && content.privacy_policy_anchor_text) {
|
|
1817
1843
|
return content.privacy_policy_anchor_text;
|
|
1818
1844
|
}
|
|
@@ -1839,18 +1865,38 @@ var RedactoNoticeConsent = ({
|
|
|
1839
1865
|
}
|
|
1840
1866
|
if (itemId) {
|
|
1841
1867
|
if (key === "purposes.name" || key === "purposes.description") {
|
|
1842
|
-
|
|
1868
|
+
const purposeData = (_a2 = translationMap.purposes) == null ? void 0 : _a2[itemId];
|
|
1869
|
+
if (purposeData) {
|
|
1870
|
+
if (typeof purposeData === "string") {
|
|
1871
|
+
return key === "purposes.name" ? purposeData : defaultText;
|
|
1872
|
+
}
|
|
1873
|
+
return key === "purposes.name" ? purposeData.name || defaultText : purposeData.description || defaultText;
|
|
1874
|
+
}
|
|
1875
|
+
return defaultText;
|
|
1843
1876
|
}
|
|
1844
1877
|
if (key.startsWith("data_elements.")) {
|
|
1845
1878
|
return ((_b2 = translationMap.data_elements) == null ? void 0 : _b2[itemId]) || defaultText;
|
|
1846
1879
|
}
|
|
1847
1880
|
}
|
|
1848
1881
|
const value = translationMap[key];
|
|
1849
|
-
if (typeof value === "string") {
|
|
1882
|
+
if (typeof value === "string" && value) {
|
|
1850
1883
|
return value;
|
|
1851
1884
|
}
|
|
1852
1885
|
return defaultText;
|
|
1853
1886
|
};
|
|
1887
|
+
const getTranslatedDpoText = (key, defaultText) => {
|
|
1888
|
+
if (!(content == null ? void 0 : content.dpo_info)) return defaultText;
|
|
1889
|
+
if (isDefaultLanguage(selectedLanguage)) {
|
|
1890
|
+
return content.dpo_info[key] || defaultText;
|
|
1891
|
+
}
|
|
1892
|
+
if (!content.supported_languages_and_translations) return defaultText;
|
|
1893
|
+
const translationMap = content.supported_languages_and_translations[selectedLanguage];
|
|
1894
|
+
if (translationMap == null ? void 0 : translationMap.dpo_info) {
|
|
1895
|
+
const translated = translationMap.dpo_info[key];
|
|
1896
|
+
if (translated) return translated;
|
|
1897
|
+
}
|
|
1898
|
+
return content.dpo_info[key] || defaultText;
|
|
1899
|
+
};
|
|
1854
1900
|
const fetchNotice = async () => {
|
|
1855
1901
|
var _a2;
|
|
1856
1902
|
if (isRequestInProgressRef.current) {
|
|
@@ -1874,6 +1920,7 @@ var RedactoNoticeConsent = ({
|
|
|
1874
1920
|
language,
|
|
1875
1921
|
specific_uuid: applicationId,
|
|
1876
1922
|
validate_against: validateAgainst,
|
|
1923
|
+
include_fully_consented_data: includeFullyConsentedData,
|
|
1877
1924
|
signal: (_a2 = abortControllerRef.current) == null ? void 0 : _a2.signal
|
|
1878
1925
|
});
|
|
1879
1926
|
const activeConfig = consentContentData.detail.active_config;
|
|
@@ -1911,7 +1958,7 @@ var RedactoNoticeConsent = ({
|
|
|
1911
1958
|
setCategorizedPurposes(newCategorizedPurposes);
|
|
1912
1959
|
const initialPurposeState = activeConfig.purposes.reduce(
|
|
1913
1960
|
(acc, purpose) => {
|
|
1914
|
-
if (
|
|
1961
|
+
if (purposeSelections == null ? void 0 : purposeSelections[purpose.uuid]) {
|
|
1915
1962
|
acc[purpose.uuid] = purposeSelections[purpose.uuid].selected;
|
|
1916
1963
|
} else {
|
|
1917
1964
|
acc[purpose.uuid] = false;
|
|
@@ -1926,7 +1973,7 @@ var RedactoNoticeConsent = ({
|
|
|
1926
1973
|
purpose.data_elements.forEach((element) => {
|
|
1927
1974
|
var _a3, _b2;
|
|
1928
1975
|
const combinedId = `${purpose.uuid}-${element.uuid}`;
|
|
1929
|
-
if (
|
|
1976
|
+
if ((_b2 = (_a3 = purposeSelections == null ? void 0 : purposeSelections[purpose.uuid]) == null ? void 0 : _a3.data_elements) == null ? void 0 : _b2[element.uuid]) {
|
|
1930
1977
|
acc[combinedId] = purposeSelections[purpose.uuid].data_elements[element.uuid].selected;
|
|
1931
1978
|
} else {
|
|
1932
1979
|
acc[combinedId] = false;
|
|
@@ -1938,6 +1985,7 @@ var RedactoNoticeConsent = ({
|
|
|
1938
1985
|
);
|
|
1939
1986
|
setSelectedDataElements(initialDataElementState);
|
|
1940
1987
|
if (isReconsentRequired && newCategorizedPurposes) {
|
|
1988
|
+
setIsFullyConsentedReviewMode(false);
|
|
1941
1989
|
const initialSelections = {};
|
|
1942
1990
|
newCategorizedPurposes.alreadyConsented.forEach((purpose) => {
|
|
1943
1991
|
purpose.data_elements.forEach((element) => {
|
|
@@ -1951,7 +1999,36 @@ var RedactoNoticeConsent = ({
|
|
|
1951
1999
|
});
|
|
1952
2000
|
});
|
|
1953
2001
|
setInitialDataElementSelections(initialSelections);
|
|
2002
|
+
} else if (includeFullyConsentedData && purposeSelections) {
|
|
2003
|
+
const allPurposesSelected = activeConfig.purposes.length > 0 && activeConfig.purposes.every(
|
|
2004
|
+
(p) => {
|
|
2005
|
+
var _a3;
|
|
2006
|
+
return ((_a3 = purposeSelections[p.uuid]) == null ? void 0 : _a3.selected) === true;
|
|
2007
|
+
}
|
|
2008
|
+
);
|
|
2009
|
+
setIsFullyConsentedReviewMode(allPurposesSelected);
|
|
2010
|
+
if (allPurposesSelected) {
|
|
2011
|
+
const initialSelections = {};
|
|
2012
|
+
activeConfig.purposes.forEach(
|
|
2013
|
+
(purpose) => {
|
|
2014
|
+
purpose.data_elements.forEach((element) => {
|
|
2015
|
+
var _a3, _b2;
|
|
2016
|
+
const combinedId = `${purpose.uuid}-${element.uuid}`;
|
|
2017
|
+
if ((_b2 = (_a3 = purposeSelections[purpose.uuid]) == null ? void 0 : _a3.data_elements) == null ? void 0 : _b2[element.uuid]) {
|
|
2018
|
+
initialSelections[combinedId] = purposeSelections[purpose.uuid].data_elements[element.uuid].selected;
|
|
2019
|
+
} else {
|
|
2020
|
+
initialSelections[combinedId] = false;
|
|
2021
|
+
}
|
|
2022
|
+
});
|
|
2023
|
+
}
|
|
2024
|
+
);
|
|
2025
|
+
setInitialDataElementSelections(initialSelections);
|
|
2026
|
+
} else {
|
|
2027
|
+
setIsFullyConsentedReviewMode(false);
|
|
2028
|
+
setInitialDataElementSelections({});
|
|
2029
|
+
}
|
|
1954
2030
|
} else {
|
|
2031
|
+
setIsFullyConsentedReviewMode(false);
|
|
1955
2032
|
setInitialDataElementSelections({});
|
|
1956
2033
|
}
|
|
1957
2034
|
if (consentContentData.detail.is_minor) {
|
|
@@ -1983,7 +2060,8 @@ var RedactoNoticeConsent = ({
|
|
|
1983
2060
|
refreshToken,
|
|
1984
2061
|
language,
|
|
1985
2062
|
applicationId,
|
|
1986
|
-
validateAgainst
|
|
2063
|
+
validateAgainst,
|
|
2064
|
+
includeFullyConsentedData
|
|
1987
2065
|
// Removed onError and isRefreshingToken from dependencies to prevent duplicate API calls
|
|
1988
2066
|
// onError is only called on errors, not needed for initial data fetching
|
|
1989
2067
|
]);
|
|
@@ -2263,6 +2341,20 @@ var RedactoNoticeConsent = ({
|
|
|
2263
2341
|
});
|
|
2264
2342
|
}
|
|
2265
2343
|
});
|
|
2344
|
+
if (content.additional_text && ttsAudioUrls.additional_text_audio_url) {
|
|
2345
|
+
sequence.push(ttsAudioUrls.additional_text_audio_url);
|
|
2346
|
+
}
|
|
2347
|
+
if (content.privacy_center_url && ttsAudioUrls.privacy_center_anchor_text_audio_url) {
|
|
2348
|
+
sequence.push(ttsAudioUrls.privacy_center_anchor_text_audio_url);
|
|
2349
|
+
}
|
|
2350
|
+
if (content.dpo_info && ttsAudioUrls.dpo_info_audio) {
|
|
2351
|
+
const dpoAudio = ttsAudioUrls.dpo_info_audio;
|
|
2352
|
+
DPO_AUDIO_ELEMENT_MAP.forEach(({ audioKey }) => {
|
|
2353
|
+
if (dpoAudio[audioKey]) {
|
|
2354
|
+
sequence.push(dpoAudio[audioKey]);
|
|
2355
|
+
}
|
|
2356
|
+
});
|
|
2357
|
+
}
|
|
2266
2358
|
if (ttsAudioUrls.confirm_button_text_audio_url) {
|
|
2267
2359
|
sequence.push(ttsAudioUrls.confirm_button_text_audio_url);
|
|
2268
2360
|
}
|
|
@@ -2310,6 +2402,20 @@ var RedactoNoticeConsent = ({
|
|
|
2310
2402
|
});
|
|
2311
2403
|
}
|
|
2312
2404
|
});
|
|
2405
|
+
if (content.additional_text && ttsAudioUrls.additional_text_audio_url) {
|
|
2406
|
+
elementIds.push("additional-text");
|
|
2407
|
+
}
|
|
2408
|
+
if (content.privacy_center_url && ttsAudioUrls.privacy_center_anchor_text_audio_url) {
|
|
2409
|
+
elementIds.push("privacy-center-link");
|
|
2410
|
+
}
|
|
2411
|
+
if (content.dpo_info && ttsAudioUrls.dpo_info_audio) {
|
|
2412
|
+
const dpoAudio = ttsAudioUrls.dpo_info_audio;
|
|
2413
|
+
DPO_AUDIO_ELEMENT_MAP.forEach(({ audioKey, elementId }) => {
|
|
2414
|
+
if (dpoAudio[audioKey]) {
|
|
2415
|
+
elementIds.push(elementId);
|
|
2416
|
+
}
|
|
2417
|
+
});
|
|
2418
|
+
}
|
|
2313
2419
|
if (ttsAudioUrls.confirm_button_text_audio_url) {
|
|
2314
2420
|
elementIds.push("confirm-button-text");
|
|
2315
2421
|
}
|
|
@@ -3126,16 +3232,135 @@ var RedactoNoticeConsent = ({
|
|
|
3126
3232
|
onPurposeCollapse: togglePurposeCollapse,
|
|
3127
3233
|
onDataElementToggle: handleDataElementCheckboxChange,
|
|
3128
3234
|
getTranslatedText,
|
|
3129
|
-
isAlreadyConsented:
|
|
3130
|
-
selectedLanguage
|
|
3235
|
+
isAlreadyConsented: isFullyConsentedReviewMode,
|
|
3236
|
+
selectedLanguage,
|
|
3237
|
+
initialDataElementSelections
|
|
3131
3238
|
},
|
|
3132
3239
|
`${purpose.uuid}-${selectedLanguage}`
|
|
3133
3240
|
)) })
|
|
3241
|
+
),
|
|
3242
|
+
((content == null ? void 0 : content.privacy_center_url) || (content == null ? void 0 : content.dpo_info)) && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
3243
|
+
"div",
|
|
3244
|
+
{
|
|
3245
|
+
style: {
|
|
3246
|
+
...styles.privacyText,
|
|
3247
|
+
...responsiveStyles.privacyText,
|
|
3248
|
+
...componentTextStyle,
|
|
3249
|
+
fontSize: isMobile ? "13px" : "14px",
|
|
3250
|
+
lineHeight: "1.4",
|
|
3251
|
+
borderTop: "1px solid rgba(152, 162, 179, 0.3)",
|
|
3252
|
+
paddingTop: "12px",
|
|
3253
|
+
marginTop: "12px"
|
|
3254
|
+
},
|
|
3255
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { style: { margin: 0, opacity: 0.6 }, children: [
|
|
3256
|
+
content.privacy_center_url && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
3257
|
+
content.additional_text && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { id: "additional-text", children: getTranslatedText(
|
|
3258
|
+
"additional_text",
|
|
3259
|
+
content.additional_text
|
|
3260
|
+
) }),
|
|
3261
|
+
" ",
|
|
3262
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
3263
|
+
"a",
|
|
3264
|
+
{
|
|
3265
|
+
id: "privacy-center-link",
|
|
3266
|
+
style: { ...styles.link, ...linkStyle },
|
|
3267
|
+
href: content.privacy_center_url,
|
|
3268
|
+
target: "_blank",
|
|
3269
|
+
rel: "noopener noreferrer",
|
|
3270
|
+
children: getTranslatedText(
|
|
3271
|
+
"privacy_center_anchor_text",
|
|
3272
|
+
content.privacy_center_anchor_text || "Privacy Center"
|
|
3273
|
+
)
|
|
3274
|
+
}
|
|
3275
|
+
),
|
|
3276
|
+
"."
|
|
3277
|
+
] }),
|
|
3278
|
+
content.dpo_info && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
3279
|
+
content.privacy_center_url && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("br", {}),
|
|
3280
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { id: "dpo-grievance-text", children: getTranslatedDpoText(
|
|
3281
|
+
"grievance_text",
|
|
3282
|
+
content.dpo_info.grievance_text || ""
|
|
3283
|
+
) }),
|
|
3284
|
+
" ",
|
|
3285
|
+
content.dpo_info.grievance_url && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
3286
|
+
"a",
|
|
3287
|
+
{
|
|
3288
|
+
id: "dpo-grievance-link",
|
|
3289
|
+
style: { ...styles.link, ...linkStyle },
|
|
3290
|
+
href: content.dpo_info.grievance_url,
|
|
3291
|
+
target: "_blank",
|
|
3292
|
+
rel: "noopener noreferrer",
|
|
3293
|
+
children: getTranslatedDpoText(
|
|
3294
|
+
"grievance_anchor_text",
|
|
3295
|
+
content.dpo_info.grievance_anchor_text || "click here"
|
|
3296
|
+
)
|
|
3297
|
+
}
|
|
3298
|
+
),
|
|
3299
|
+
content.dpo_info.grievance_email && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
3300
|
+
" ",
|
|
3301
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { id: "dpo-grievance-email-connector", children: getTranslatedDpoText(
|
|
3302
|
+
"grievance_email_connector_text",
|
|
3303
|
+
content.dpo_info.grievance_email_connector_text || "or email to"
|
|
3304
|
+
) }),
|
|
3305
|
+
" ",
|
|
3306
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
3307
|
+
"a",
|
|
3308
|
+
{
|
|
3309
|
+
id: "dpo-grievance-email",
|
|
3310
|
+
style: { ...styles.link, ...linkStyle },
|
|
3311
|
+
href: `mailto:${content.dpo_info.grievance_email}`,
|
|
3312
|
+
children: content.dpo_info.grievance_email
|
|
3313
|
+
}
|
|
3314
|
+
)
|
|
3315
|
+
] }),
|
|
3316
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("br", {}),
|
|
3317
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { id: "dpo-dp-board-text", children: getTranslatedDpoText(
|
|
3318
|
+
"dp_board_text",
|
|
3319
|
+
content.dpo_info.dp_board_text || ""
|
|
3320
|
+
) }),
|
|
3321
|
+
" ",
|
|
3322
|
+
content.dpo_info.dp_board_url && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
3323
|
+
"a",
|
|
3324
|
+
{
|
|
3325
|
+
id: "dpo-dp-board-link",
|
|
3326
|
+
style: { ...styles.link, ...linkStyle },
|
|
3327
|
+
href: content.dpo_info.dp_board_url,
|
|
3328
|
+
target: "_blank",
|
|
3329
|
+
rel: "noopener noreferrer",
|
|
3330
|
+
children: getTranslatedDpoText(
|
|
3331
|
+
"dp_board_anchor_text",
|
|
3332
|
+
content.dpo_info.dp_board_anchor_text || "here"
|
|
3333
|
+
)
|
|
3334
|
+
}
|
|
3335
|
+
),
|
|
3336
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("br", {}),
|
|
3337
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { id: "dpo-dpo-text", children: getTranslatedDpoText(
|
|
3338
|
+
"dpo_text",
|
|
3339
|
+
content.dpo_info.dpo_text || ""
|
|
3340
|
+
) }),
|
|
3341
|
+
" ",
|
|
3342
|
+
content.dpo_info.dpo_url && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
3343
|
+
"a",
|
|
3344
|
+
{
|
|
3345
|
+
id: "dpo-dpo-link",
|
|
3346
|
+
style: { ...styles.link, ...linkStyle },
|
|
3347
|
+
href: content.dpo_info.dpo_url,
|
|
3348
|
+
target: "_blank",
|
|
3349
|
+
rel: "noopener noreferrer",
|
|
3350
|
+
children: getTranslatedDpoText(
|
|
3351
|
+
"dpo_anchor_text",
|
|
3352
|
+
content.dpo_info.dpo_anchor_text || "Click here"
|
|
3353
|
+
)
|
|
3354
|
+
}
|
|
3355
|
+
)
|
|
3356
|
+
] })
|
|
3357
|
+
] })
|
|
3358
|
+
}
|
|
3134
3359
|
)
|
|
3135
3360
|
]
|
|
3136
3361
|
}
|
|
3137
3362
|
),
|
|
3138
|
-
/* @__PURE__ */ (0, import_jsx_runtime.
|
|
3363
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
3139
3364
|
"div",
|
|
3140
3365
|
{
|
|
3141
3366
|
style: {
|
|
@@ -3143,7 +3368,22 @@ var RedactoNoticeConsent = ({
|
|
|
3143
3368
|
...responsiveStyles.bottomSection,
|
|
3144
3369
|
...sectionStyle
|
|
3145
3370
|
},
|
|
3146
|
-
children:
|
|
3371
|
+
children: isFullyConsentedReviewMode ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
3372
|
+
"button",
|
|
3373
|
+
{
|
|
3374
|
+
ref: lastFocusableRef,
|
|
3375
|
+
id: "review-mode-continue-button",
|
|
3376
|
+
style: {
|
|
3377
|
+
...styles.button,
|
|
3378
|
+
...responsiveStyles.button,
|
|
3379
|
+
...styles.acceptButton,
|
|
3380
|
+
...acceptButtonStyle
|
|
3381
|
+
},
|
|
3382
|
+
onClick: () => onAccept == null ? void 0 : onAccept(),
|
|
3383
|
+
"aria-label": reviewModeButtonText,
|
|
3384
|
+
children: reviewModeButtonText
|
|
3385
|
+
}
|
|
3386
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
3147
3387
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
3148
3388
|
"button",
|
|
3149
3389
|
{
|
|
@@ -3191,7 +3431,7 @@ var RedactoNoticeConsent = ({
|
|
|
3191
3431
|
)
|
|
3192
3432
|
}
|
|
3193
3433
|
)
|
|
3194
|
-
]
|
|
3434
|
+
] })
|
|
3195
3435
|
}
|
|
3196
3436
|
)
|
|
3197
3437
|
] })
|
|
@@ -3829,7 +4069,7 @@ var RedactoConsentInlineComponent = ({
|
|
|
3829
4069
|
const getTranslatedText = (key, defaultText, itemId) => {
|
|
3830
4070
|
var _a2, _b;
|
|
3831
4071
|
if (!content) return defaultText;
|
|
3832
|
-
if (selectedLanguage ===
|
|
4072
|
+
if (selectedLanguage === "English" || selectedLanguage === "en" || selectedLanguage === "EN") {
|
|
3833
4073
|
if (key === "privacy_policy_anchor_text" && content.privacy_policy_anchor_text) {
|
|
3834
4074
|
return content.privacy_policy_anchor_text;
|
|
3835
4075
|
}
|
|
@@ -3844,14 +4084,21 @@ var RedactoConsentInlineComponent = ({
|
|
|
3844
4084
|
}
|
|
3845
4085
|
if (itemId) {
|
|
3846
4086
|
if (key === "purposes.name" || key === "purposes.description") {
|
|
3847
|
-
|
|
4087
|
+
const purposeData = (_a2 = translationMap.purposes) == null ? void 0 : _a2[itemId];
|
|
4088
|
+
if (purposeData) {
|
|
4089
|
+
if (typeof purposeData === "string") {
|
|
4090
|
+
return key === "purposes.name" ? purposeData : defaultText;
|
|
4091
|
+
}
|
|
4092
|
+
return key === "purposes.name" ? purposeData.name || defaultText : purposeData.description || defaultText;
|
|
4093
|
+
}
|
|
4094
|
+
return defaultText;
|
|
3848
4095
|
}
|
|
3849
4096
|
if (key.startsWith("data_elements.")) {
|
|
3850
4097
|
return ((_b = translationMap.data_elements) == null ? void 0 : _b[itemId]) || defaultText;
|
|
3851
4098
|
}
|
|
3852
4099
|
}
|
|
3853
4100
|
const value = translationMap[key];
|
|
3854
|
-
if (typeof value === "string") {
|
|
4101
|
+
if (typeof value === "string" && value) {
|
|
3855
4102
|
return value;
|
|
3856
4103
|
}
|
|
3857
4104
|
return defaultText;
|