(
anotherLabel: { root: 'self' },
yetAnotherLabel: { rootSelector: '.root-class-name' },
},
+ properties: { arr: ['c', 'd'] },
},
})}
>
diff --git a/src/internal/analytics-metadata/__tests__/page-scanner-utils.test.tsx b/src/internal/analytics-metadata/__tests__/page-scanner-utils.test.tsx
index 7666bfb..08a6b73 100644
--- a/src/internal/analytics-metadata/__tests__/page-scanner-utils.test.tsx
+++ b/src/internal/analytics-metadata/__tests__/page-scanner-utils.test.tsx
@@ -54,6 +54,7 @@ describe('getComponentsTree', () => {
expect(getComponentsTree(container.querySelector('#outer-target-1') as HTMLElement)).toEqual([
{
name: 'ComponentThree',
+ properties: { arr: ['a', 'b'] },
children: [
{
name: 'ComponentTwo',
@@ -76,6 +77,7 @@ describe('getComponentsTree', () => {
expect(getComponentsTree(container.querySelector('#outer-target-1') as HTMLElement)).toEqual([
{
name: 'ComponentThree',
+ properties: { arr: ['a', 'b'] },
children: [
{
name: 'ComponentTwo',
@@ -97,6 +99,7 @@ describe('getComponentsTree', () => {
expect(getComponentsTree()).toEqual([
{
name: 'ComponentThree',
+ properties: { arr: ['a', 'b'] },
children: [
{
name: 'ComponentTwo',
diff --git a/src/internal/analytics-metadata/__tests__/testing-utils.test.tsx b/src/internal/analytics-metadata/__tests__/testing-utils.test.tsx
index 99be044..a33ab40 100644
--- a/src/internal/analytics-metadata/__tests__/testing-utils.test.tsx
+++ b/src/internal/analytics-metadata/__tests__/testing-utils.test.tsx
@@ -63,11 +63,13 @@ describe('getRawAnalyticsMetadata', () => {
rootSelector: '.root-class-name',
},
},
+ properties: { arr: ['c', 'd'] },
},
},
{
component: {
name: 'ComponentThree',
+ properties: { arr: ['a', 'b'] },
},
},
],
diff --git a/src/internal/analytics-metadata/__tests__/utils.test.tsx b/src/internal/analytics-metadata/__tests__/utils.test.tsx
index 88e6946..7b903eb 100644
--- a/src/internal/analytics-metadata/__tests__/utils.test.tsx
+++ b/src/internal/analytics-metadata/__tests__/utils.test.tsx
@@ -66,6 +66,7 @@ describe('getGeneratedAnalyticsMetadata', () => {
type: 'component',
detail: {
name: 'ComponentThree',
+ properties: { arr: ['a', 'b'] },
innerContext: {
position: '2',
columnLabel: '',
diff --git a/src/internal/analytics-metadata/interfaces.ts b/src/internal/analytics-metadata/interfaces.ts
index 383dd3c..8a4bed6 100644
--- a/src/internal/analytics-metadata/interfaces.ts
+++ b/src/internal/analytics-metadata/interfaces.ts
@@ -23,7 +23,7 @@ interface GeneratedAnalyticsMetadataComponent {
instanceIdentifier?: string;
// relevant properties of the component. For example: {variant: 'primary'} for Button, {external: 'true', href: '...'} for Link
- properties?: Record;
+ properties?: Record>;
// relevant information on the specific area of the component in which the interaction happened
innerContext?: Record;
diff --git a/src/internal/analytics-metadata/metadata-utils.ts b/src/internal/analytics-metadata/metadata-utils.ts
index 3cce6f3..51a8705 100644
--- a/src/internal/analytics-metadata/metadata-utils.ts
+++ b/src/internal/analytics-metadata/metadata-utils.ts
@@ -20,7 +20,7 @@ export const processMetadata = (node: HTMLElement | null, localMetadata: any): G
return Object.keys(localMetadata).reduce((acc: any, key: string) => {
if (key.toLowerCase().match(/label$/)) {
acc[key] = processLabel(node, localMetadata[key]);
- } else if (typeof localMetadata[key] !== 'string') {
+ } else if (typeof localMetadata[key] !== 'string' && !Array.isArray(localMetadata[key])) {
acc[key] = processMetadata(node, localMetadata[key]);
} else {
acc[key] = localMetadata[key];
@@ -45,7 +45,7 @@ export const merge = (inputTarget: any, inputSource: any): any => {
merged[key] = target[key];
} else if (!target[key] && !isNil(source[key])) {
merged[key] = source[key];
- } else if (typeof target[key] === 'string') {
+ } else if (typeof target[key] === 'string' || Array.isArray(target[key])) {
merged[key] = source[key];
} else {
merged[key] = merge(target[key], source[key]);
diff --git a/src/internal/analytics-metadata/page-scanner-utils.ts b/src/internal/analytics-metadata/page-scanner-utils.ts
index 2ac1b98..cff2cf5 100644
--- a/src/internal/analytics-metadata/page-scanner-utils.ts
+++ b/src/internal/analytics-metadata/page-scanner-utils.ts
@@ -8,7 +8,7 @@ import { getGeneratedAnalyticsMetadata } from './utils';
interface GeneratedAnalyticsMetadataComponentTree {
name: string;
label: string;
- properties?: Record;
+ properties?: Record>;
children?: Array;
}