@redacto.io/consent-sdk-react 5.3.0 → 6.0.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/.turbo/turbo-build.log +24 -0
- package/CHANGELOG.md +6 -0
- package/dist/privacy-center.d.mts +98 -38
- package/dist/privacy-center.d.ts +98 -38
- package/dist/privacy-center.js +3679 -1491
- package/dist/privacy-center.mjs +3614 -1423
- package/package.json +1 -1
- package/src/RedactoPrivacyCenter/api/actions.ts +52 -8
- package/src/RedactoPrivacyCenter/api/client.ts +58 -15
- package/src/RedactoPrivacyCenter/components/ConsentManager.tsx +722 -273
- package/src/RedactoPrivacyCenter/components/ConsentManagerCells.tsx +187 -0
- package/src/RedactoPrivacyCenter/components/ConsentManagerColumns.tsx +65 -165
- package/src/RedactoPrivacyCenter/components/ConsentManagerExpandedRow.tsx +179 -0
- package/src/RedactoPrivacyCenter/components/ConsentManagerGroupedColumns.tsx +318 -0
- package/src/RedactoPrivacyCenter/components/ConsentManagerProductCards.tsx +333 -0
- package/src/RedactoPrivacyCenter/components/ConsentManagerPurposeCards.tsx +102 -0
- package/src/RedactoPrivacyCenter/components/ConsentManagerTableSkeleton.tsx +6 -2
- package/src/RedactoPrivacyCenter/components/ModifyConsentModal.tsx +8 -5
- package/src/RedactoPrivacyCenter/components/NotificationHub/NotificationBell.tsx +1 -1
- package/src/RedactoPrivacyCenter/components/PrivacyCenterLayout.tsx +102 -53
- package/src/RedactoPrivacyCenter/components/types.ts +2 -5
- package/src/RedactoPrivacyCenter/context/PageChromeContext.tsx +21 -1
- package/src/RedactoPrivacyCenter/lib/api.ts +70 -28
- package/src/RedactoPrivacyCenter/lib/consent-manager/utils.tsx +4 -2
- package/src/RedactoPrivacyCenter/lib/types.ts +57 -36
- package/src/RedactoPrivacyCenter/locales/as/translation.json +12 -1
- package/src/RedactoPrivacyCenter/locales/bho/translation.json +12 -1
- package/src/RedactoPrivacyCenter/locales/bn/translation.json +12 -1
- package/src/RedactoPrivacyCenter/locales/brx/translation.json +12 -1
- package/src/RedactoPrivacyCenter/locales/doi/translation.json +12 -1
- package/src/RedactoPrivacyCenter/locales/en/translation.json +16 -1
- package/src/RedactoPrivacyCenter/locales/gom/translation.json +12 -1
- package/src/RedactoPrivacyCenter/locales/gu/translation.json +12 -1
- package/src/RedactoPrivacyCenter/locales/hi/translation.json +15 -1
- package/src/RedactoPrivacyCenter/locales/kn/translation.json +12 -1
- package/src/RedactoPrivacyCenter/locales/ks/translation.json +12 -1
- package/src/RedactoPrivacyCenter/locales/mai/translation.json +12 -1
- package/src/RedactoPrivacyCenter/locales/ml/translation.json +12 -1
- package/src/RedactoPrivacyCenter/locales/mni-Mtei/translation.json +12 -1
- package/src/RedactoPrivacyCenter/locales/mr/translation.json +12 -1
- package/src/RedactoPrivacyCenter/locales/ne/translation.json +12 -1
- package/src/RedactoPrivacyCenter/locales/or/translation.json +12 -1
- package/src/RedactoPrivacyCenter/locales/pa/translation.json +12 -1
- package/src/RedactoPrivacyCenter/locales/sa/translation.json +12 -1
- package/src/RedactoPrivacyCenter/locales/sat/translation.json +12 -1
- package/src/RedactoPrivacyCenter/locales/sd/translation.json +12 -1
- package/src/RedactoPrivacyCenter/locales/ta/translation.json +12 -1
- package/src/RedactoPrivacyCenter/locales/te/translation.json +12 -1
- package/src/RedactoPrivacyCenter/locales/ur/translation.json +12 -1
- package/src/RedactoPrivacyCenter/styles/injectStyles.ts +527 -5
- package/src/RedactoPrivacyCenter/styles/variables.css +5 -0
- package/src/RedactoPrivacyCenter/table/AdvancedTable.tsx +36 -16
- package/src/RedactoPrivacyCenter/table/AdvancedTablePagination.tsx +4 -12
- package/src/RedactoPrivacyCenter/ui/PCInput.tsx +1 -1
- package/src/RedactoPrivacyCenter/ui/PCSelect.tsx +51 -5
- package/src/RedactoPrivacyCenter/ui/ThemeToggle.tsx +2 -4
- package/src/privacy-center.ts +7 -3
package/package.json
CHANGED
|
@@ -39,6 +39,7 @@ import type {
|
|
|
39
39
|
UploadCaseDocumentParams,
|
|
40
40
|
UploadDocumentResponse,
|
|
41
41
|
UserConsentDetail,
|
|
42
|
+
GroupPurposesOut,
|
|
42
43
|
} from '../lib/types';
|
|
43
44
|
|
|
44
45
|
function buildBaseRequest(organizationId: string, workspaceId: string, authToken?: string): BaseRequest {
|
|
@@ -266,9 +267,10 @@ export async function fetchProductsServer(params: {
|
|
|
266
267
|
export async function fetchUserConsentsServer(params: {
|
|
267
268
|
organizationId: string;
|
|
268
269
|
workspaceId: string;
|
|
269
|
-
contact: string;
|
|
270
270
|
offset?: number;
|
|
271
271
|
limit?: number;
|
|
272
|
+
nominatedOffset?: number;
|
|
273
|
+
nominatedLimit?: number;
|
|
272
274
|
search?: string;
|
|
273
275
|
status?: string;
|
|
274
276
|
product_uuid?: string;
|
|
@@ -285,13 +287,16 @@ export async function fetchUserConsentsServer(params: {
|
|
|
285
287
|
|
|
286
288
|
const result = await params.consentClient.getUserConsents(
|
|
287
289
|
baseRequest,
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
290
|
+
{
|
|
291
|
+
offset: params.offset,
|
|
292
|
+
limit: params.limit,
|
|
293
|
+
nominated_offset: params.nominatedOffset,
|
|
294
|
+
nominated_limit: params.nominatedLimit,
|
|
295
|
+
status: params.status,
|
|
296
|
+
product_uuid: params.product_uuid,
|
|
297
|
+
search: params.search,
|
|
298
|
+
language: params.language,
|
|
299
|
+
},
|
|
295
300
|
params.authToken
|
|
296
301
|
);
|
|
297
302
|
|
|
@@ -301,6 +306,45 @@ export async function fetchUserConsentsServer(params: {
|
|
|
301
306
|
}
|
|
302
307
|
}
|
|
303
308
|
|
|
309
|
+
export async function fetchGroupPurposesServer(params: {
|
|
310
|
+
organizationId: string;
|
|
311
|
+
workspaceId: string;
|
|
312
|
+
productUuid: string;
|
|
313
|
+
offset?: number;
|
|
314
|
+
limit?: number;
|
|
315
|
+
status?: string;
|
|
316
|
+
search?: string;
|
|
317
|
+
language?: string;
|
|
318
|
+
nominatorUuid?: string;
|
|
319
|
+
authToken?: string;
|
|
320
|
+
consentClient?: ReturnType<typeof import('./client').createConsentClient>;
|
|
321
|
+
}): Promise<GroupPurposesOut | null> {
|
|
322
|
+
try {
|
|
323
|
+
if (!params.consentClient) {
|
|
324
|
+
throw new Error('Consent client is required');
|
|
325
|
+
}
|
|
326
|
+
const baseRequest = buildBaseRequest(params.organizationId, params.workspaceId, params.authToken);
|
|
327
|
+
|
|
328
|
+
const result = await params.consentClient.getGroupPurposes(
|
|
329
|
+
baseRequest,
|
|
330
|
+
params.productUuid,
|
|
331
|
+
{
|
|
332
|
+
offset: params.offset,
|
|
333
|
+
limit: params.limit,
|
|
334
|
+
status: params.status,
|
|
335
|
+
search: params.search,
|
|
336
|
+
language: params.language,
|
|
337
|
+
nominator_uuid: params.nominatorUuid,
|
|
338
|
+
},
|
|
339
|
+
params.authToken
|
|
340
|
+
);
|
|
341
|
+
|
|
342
|
+
return result as GroupPurposesOut;
|
|
343
|
+
} catch (error: any) {
|
|
344
|
+
return handleServerActionError(error, 'fetching group purposes');
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
|
|
304
348
|
export async function manageConsentServer(params: {
|
|
305
349
|
organizationId: string;
|
|
306
350
|
workspaceId: string;
|
|
@@ -338,29 +338,72 @@ export function createConsentClient(baseUrl: string) {
|
|
|
338
338
|
*/
|
|
339
339
|
async getUserConsents(
|
|
340
340
|
baseRequest: BaseRequest,
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
341
|
+
params: {
|
|
342
|
+
offset?: number;
|
|
343
|
+
limit?: number;
|
|
344
|
+
nominated_offset?: number;
|
|
345
|
+
nominated_limit?: number;
|
|
346
|
+
status?: string;
|
|
347
|
+
product_uuid?: string;
|
|
348
|
+
search?: string;
|
|
349
|
+
language?: string;
|
|
350
|
+
},
|
|
348
351
|
authToken?: string,
|
|
349
352
|
options?: Omit<ApiFetchOptions, "getAuthToken">
|
|
350
353
|
): Promise<unknown> {
|
|
351
354
|
const queryParams = new URLSearchParams();
|
|
352
|
-
if (offset !== undefined) queryParams.append("offset", offset.toString());
|
|
353
|
-
if (limit !== undefined) queryParams.append("limit", limit.toString());
|
|
354
|
-
if (
|
|
355
|
-
if (
|
|
356
|
-
if (
|
|
357
|
-
if (
|
|
355
|
+
if (params.offset !== undefined) queryParams.append("offset", params.offset.toString());
|
|
356
|
+
if (params.limit !== undefined) queryParams.append("limit", params.limit.toString());
|
|
357
|
+
if (params.nominated_offset !== undefined) queryParams.append("nominated_offset", params.nominated_offset.toString());
|
|
358
|
+
if (params.nominated_limit !== undefined) queryParams.append("nominated_limit", params.nominated_limit.toString());
|
|
359
|
+
if (params.search) queryParams.append("search", params.search);
|
|
360
|
+
if (params.status) queryParams.append("status", params.status);
|
|
361
|
+
if (params.product_uuid) queryParams.append("product_uuid", params.product_uuid);
|
|
362
|
+
if (params.language) queryParams.append("language", params.language);
|
|
358
363
|
const queryString = queryParams.toString();
|
|
359
364
|
const url = privacyCenterUrl(baseRequest, `/user-consents${queryString ? `?${queryString}` : ""}`);
|
|
360
365
|
return privacyCenterApiFetch(url, {
|
|
361
366
|
...options,
|
|
362
|
-
method: "
|
|
363
|
-
|
|
367
|
+
method: "GET",
|
|
368
|
+
cache: "no-store",
|
|
369
|
+
authToken: resolveAuthToken(authToken, baseRequest),
|
|
370
|
+
});
|
|
371
|
+
},
|
|
372
|
+
|
|
373
|
+
/**
|
|
374
|
+
* Get purposes for a single product card (privacy center) — sister endpoint
|
|
375
|
+
* for lazy-loading purposes when a card returns has_more_purposes: true.
|
|
376
|
+
*/
|
|
377
|
+
async getGroupPurposes(
|
|
378
|
+
baseRequest: BaseRequest,
|
|
379
|
+
productUuid: string,
|
|
380
|
+
params: {
|
|
381
|
+
offset?: number;
|
|
382
|
+
limit?: number;
|
|
383
|
+
status?: string;
|
|
384
|
+
search?: string;
|
|
385
|
+
language?: string;
|
|
386
|
+
nominator_uuid?: string;
|
|
387
|
+
},
|
|
388
|
+
authToken?: string,
|
|
389
|
+
options?: Omit<ApiFetchOptions, "getAuthToken">
|
|
390
|
+
): Promise<unknown> {
|
|
391
|
+
const queryParams = new URLSearchParams();
|
|
392
|
+
if (params.offset !== undefined) queryParams.append("offset", params.offset.toString());
|
|
393
|
+
if (params.limit !== undefined) queryParams.append("limit", params.limit.toString());
|
|
394
|
+
if (params.status) queryParams.append("status", params.status);
|
|
395
|
+
if (params.search) queryParams.append("search", params.search);
|
|
396
|
+
if (params.language) queryParams.append("language", params.language);
|
|
397
|
+
if (params.nominator_uuid) queryParams.append("nominator_uuid", params.nominator_uuid);
|
|
398
|
+
const queryString = queryParams.toString();
|
|
399
|
+
const url = privacyCenterUrl(
|
|
400
|
+
baseRequest,
|
|
401
|
+
`/user-consents/${productUuid}/purposes${queryString ? `?${queryString}` : ""}`
|
|
402
|
+
);
|
|
403
|
+
return privacyCenterApiFetch(url, {
|
|
404
|
+
...options,
|
|
405
|
+
method: "GET",
|
|
406
|
+
cache: "no-store",
|
|
364
407
|
authToken: resolveAuthToken(authToken, baseRequest),
|
|
365
408
|
});
|
|
366
409
|
},
|