@govflanders/vl-widget-global-header-types 2.0.5 → 2.0.7

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.
Files changed (51) hide show
  1. package/README.md +56 -0
  2. package/dist/client/access-menu.d.ts +16 -0
  3. package/dist/client/branding.d.ts +22 -0
  4. package/dist/client/client.d.ts +28 -7
  5. package/dist/client/contact.d.ts +30 -0
  6. package/docs/assets/highlight.css +7 -0
  7. package/docs/functions/bootstrap.html +1 -1
  8. package/docs/index.html +137 -1
  9. package/docs/interfaces/AccessMenuMethods.html +33 -9
  10. package/docs/interfaces/AlertConfig.html +4 -4
  11. package/docs/interfaces/Application.html +4 -4
  12. package/docs/interfaces/ApplicationMenuLink.html +5 -5
  13. package/docs/interfaces/Authorization.html +4 -4
  14. package/docs/interfaces/BUR.html +5 -5
  15. package/docs/interfaces/BaseEntity.html +4 -4
  16. package/docs/interfaces/BrandingConfigColors.html +3 -3
  17. package/docs/interfaces/BrandingConfigHost.html +5 -5
  18. package/docs/interfaces/BrandingConfigUmbrella.html +4 -4
  19. package/docs/interfaces/BrandingMethods.html +45 -12
  20. package/docs/interfaces/Channel.html +11 -11
  21. package/docs/interfaces/ContactMethods.html +29 -8
  22. package/docs/interfaces/ContactOption.html +14 -14
  23. package/docs/interfaces/ContactOptionRef.html +4 -4
  24. package/docs/interfaces/EA.html +4 -4
  25. package/docs/interfaces/EnrichedServicePoints.html +5 -5
  26. package/docs/interfaces/GID.html +4 -4
  27. package/docs/interfaces/GlobalHeaderClient.html +36 -12
  28. package/docs/interfaces/IDPData.html +4 -4
  29. package/docs/interfaces/Image.html +4 -4
  30. package/docs/interfaces/LB.html +4 -4
  31. package/docs/interfaces/Link.html +3 -3
  32. package/docs/interfaces/LinkWithTarget.html +4 -4
  33. package/docs/interfaces/MainLink.html +5 -5
  34. package/docs/interfaces/OV.html +4 -4
  35. package/docs/interfaces/ProfileConfig.html +7 -7
  36. package/docs/interfaces/ServicePoints.html +5 -5
  37. package/docs/interfaces/Session.html +2 -2
  38. package/docs/interfaces/User.html +3 -3
  39. package/docs/interfaces/VER.html +4 -4
  40. package/docs/types/AlertModifier.html +1 -1
  41. package/docs/types/BrandingConfigLevel.html +1 -1
  42. package/docs/types/CapacityCode.html +1 -1
  43. package/docs/types/ChannelIcon.html +1 -1
  44. package/docs/types/ChannelType.html +1 -1
  45. package/docs/types/CobrowseChannel.html +1 -1
  46. package/docs/types/ContactOptionSocialPlatform.html +1 -1
  47. package/docs/types/ContactServiceEndpoints.html +1 -1
  48. package/docs/types/EnrichedServicePoint.html +1 -1
  49. package/docs/types/Entity.html +1 -1
  50. package/docs/types/ServicePoint.html +1 -1
  51. package/package.json +1 -1
package/README.md CHANGED
@@ -277,6 +277,62 @@ client.accessMenu.setMainLinks([
277
277
  ]);
278
278
  ```
279
279
 
280
+ ## Content Security Policy (CSP)
281
+
282
+ To ensure the secure integration of the **Global Header Widget**, you need to configure your Content Security Policy (CSP) with the following directives:
283
+
284
+ ### Production Environment CSP Configuration
285
+
286
+ The minimum required CSP directives for using the global-header in a production environment are:
287
+
288
+ | Directive | Value |
289
+ |--------------|--------------------------------------------|
290
+ | `connect-src`| `https://widgets.vlaanderen.be` |
291
+ | `connect-src`| `wss://chat.contactcenter.vlaanderen.be` |
292
+ | `connect-src`| `https://chat.contactcenter.vlaanderen.be` |
293
+ | `connect-src`| `https://contactapi.vlaanderen.be` |
294
+ | `font-src` | `https://ui.vlaanderen.be` |
295
+ | `font-src` | `https://assets.vlaanderen.be` |
296
+ | `font-src` | `https://widgets.vlaanderen.be` |
297
+ | `img-src` | `data:` |
298
+ | `img-src` | `https://assets.vlaanderen.be` |
299
+ | `img-src` | `https://widgets.vlaanderen.be` |
300
+ | `script-src` | `https://widgets.vlaanderen.be` |
301
+
302
+ ### TNI Environment CSP Configuration
303
+
304
+ The minimum required CSP directives for using the global-header in a TNI environment are:
305
+
306
+ | Directive | Value |
307
+ |--------------|---------------------------------------------|
308
+ | `connect-src`| `https://tni.widgets.dev-vlaanderen.be` |
309
+ | `connect-src`| `wss://tni.contactapi.uat-vlaanderen.be` |
310
+ | `connect-src`| `https://chat.contactcenter.dev-vlaanderen.be` |
311
+ | `connect-src`| `https://tni.contactapi.uat-vlaanderen.be` |
312
+ | `font-src` | `https://ui.vlaanderen.be` |
313
+ | `font-src` | `https://assets.vlaanderen.be` |
314
+ | `font-src` | `https://tni.widgets.vlaanderen.be` |
315
+ | `img-src` | `data:` |
316
+ | `img-src` | `https://assets.vlaanderen.be` |
317
+ | `img-src` | `https://tni.widgets.vlaanderen.be` |
318
+ | `script-src` | `https://tni.widgets.vlaanderen.be` |
319
+
320
+ ### Additional CSP for Screensharing
321
+
322
+ If you're using the screensharing extension in the contact menu, include the following additional directives:
323
+
324
+ | Directive | Value (Production & TNI) |
325
+ |--------------|------------------------------------------|
326
+ | `connect-src`| `cobrowse.io` |
327
+ | `connect-src`| `*.cobrowse.io` |
328
+ | `connect-src`| `wss://*.cobrowse.io` |
329
+
330
+ ### Further Information
331
+
332
+ For more detailed information about the cobrowse CSP settings, please refer to the [Cobrowse SDK Installation Guide](https://docs.cobrowse.io/sdk-installation/web#content-security-policies-csps).
333
+
334
+ Ensure that your CSP settings are correctly configured to avoid any issues with the widget's functionality and security. If you have any questions or need further assistance, please refer to the [Contact Information](#contact-information) section.
335
+
280
336
  ## Contact Information
281
337
 
282
338
  If you need assistance or have any questions regarding the **Global Header Widget**, feel free to reach out to us:
@@ -5,46 +5,62 @@ export interface AccessMenuMethods {
5
5
  * Set the main links
6
6
  * @param mainLinks The main links to set
7
7
  * @returns The result of the operation
8
+ * @example
9
+ * const success = await globalHeaderClient.accessMenu.setMainLinks([{ label: 'Home', href: '/', isExternal: false }]);
8
10
  */
9
11
  setMainLinks: (mainLinks: Translatable<MainLink>[]) => Promise<boolean>;
10
12
  /**
11
13
  * Add an application menu link
12
14
  * @param link The application menu link to add
13
15
  * @returns The updated list of application menu links
16
+ * @example
17
+ * const updatedLinks = await globalHeaderClient.accessMenu.addApplicationMenuLink({ label: 'Dashboard', href: '/dashboard' });
14
18
  */
15
19
  addApplicationMenuLink: (link: Translatable<ApplicationMenuLink>) => Promise<Translatable<ApplicationMenuLink>[]>;
16
20
  /**
17
21
  * Add multiple application menu links
18
22
  * @param links The application menu links to add
19
23
  * @returns The updated list of application menu links
24
+ * @example
25
+ * const updatedLinks = await globalHeaderClient.accessMenu.addApplicationMenuLinks([{ label: 'Profile', href: '/profile' }]);
20
26
  */
21
27
  addApplicationMenuLinks: (links: Translatable<ApplicationMenuLink>[]) => Promise<Translatable<ApplicationMenuLink>[]>;
22
28
  /**
23
29
  * Set all application menu links
24
30
  * @param links The application menu links to set
25
31
  * @returns The updated list of application menu links
32
+ * @example
33
+ * const updatedLinks = await globalHeaderClient.accessMenu.setApplicationMenuLinks([{ label: 'Settings', href: '/settings' }]);
26
34
  */
27
35
  setApplicationMenuLinks: (links: Translatable<ApplicationMenuLink>[]) => Promise<Translatable<ApplicationMenuLink>[]>;
28
36
  /**
29
37
  * Set the profile configuration
30
38
  * @param profileConfig The profile configuration to set
31
39
  * @returns The result of the operation
40
+ * @example
41
+ * const success = await globalHeaderClient.accessMenu.setProfile({ active: true, loginUrl: '/login', logoutUrl: '/logout' });
32
42
  */
33
43
  setProfile: (profileConfig: Partial<ProfileConfig>) => Promise<boolean>;
34
44
  /**
35
45
  * Get the profile configuration
36
46
  * @returns The profile configuration
47
+ * @example
48
+ * const profile = await globalHeaderClient.accessMenu.getProfile();
37
49
  */
38
50
  getProfile: () => Promise<Partial<ProfileConfig>>;
39
51
  /**
40
52
  * Get the application name
41
53
  * @returns The application name
54
+ * @example
55
+ * const appName = await globalHeaderClient.accessMenu.getApplicationName();
42
56
  */
43
57
  getApplicationName: () => Promise<string>;
44
58
  /**
45
59
  * Set the application name
46
60
  * @param applicationName The application name to set
47
61
  * @returns The result of the operation
62
+ * @example
63
+ * const success = await globalHeaderClient.accessMenu.setApplicationName('My Application');
48
64
  */
49
65
  setApplicationName: (applicationName: Translatable<string>) => Promise<boolean>;
50
66
  }
@@ -3,35 +3,47 @@ export interface BrandingMethods {
3
3
  /**
4
4
  * Get the branding level
5
5
  * @returns The branding level
6
+ * @example
7
+ * const level = await globalHeaderClient.branding.getLevel();
6
8
  */
7
9
  getLevel: () => Promise<number>;
8
10
  /**
9
11
  * Set the branding level
10
12
  * @param level The branding level to set
11
13
  * @returns A boolean indicating the success of the operation
14
+ * @example
15
+ * const success = await globalHeaderClient.branding.setLevel(2);
12
16
  */
13
17
  setLevel: (level: number) => Promise<boolean>;
14
18
  /**
15
19
  * Get the branding colors
16
20
  * @returns The branding colors
21
+ * @example
22
+ * const colors = await globalHeaderClient.branding.getColors();
17
23
  */
18
24
  getColors: () => Promise<BrandingConfigColors>;
19
25
  /**
20
26
  * Get a specific branding color
21
27
  * @param type The type of the branding color to retrieve
22
28
  * @returns The requested branding color
29
+ * @example
30
+ * const color = await globalHeaderClient.branding.getColor('primary');
23
31
  */
24
32
  getColor: (type: keyof BrandingConfigColors) => Promise<string>;
25
33
  /**
26
34
  * Set the branding colors
27
35
  * @param colors The branding colors to set
28
36
  * @returns A boolean indicating the success of the operation
37
+ * @example
38
+ * const success = await globalHeaderClient.branding.setColors({ primary: '#000000', functional: '#FFFFFF' });
29
39
  */
30
40
  setColors: (colors: BrandingConfigColors) => Promise<boolean>;
31
41
  /**
32
42
  * Set a specific branding color
33
43
  * @param args The branding color type and value to set
34
44
  * @returns A boolean indicating the success of the operation
45
+ * @example
46
+ * const success = await globalHeaderClient.branding.setColor({ type: 'primary', value: '#FF0000' });
35
47
  */
36
48
  setColor: (args: {
37
49
  type: keyof BrandingConfigColors;
@@ -40,28 +52,38 @@ export interface BrandingMethods {
40
52
  /**
41
53
  * Get the branding host configuration
42
54
  * @returns The branding host configuration
55
+ * @example
56
+ * const hostConfig = await globalHeaderClient.branding.getHost();
43
57
  */
44
58
  getHost: () => Promise<Partial<BrandingConfigHost>>;
45
59
  /**
46
60
  * Set the branding host configuration
47
61
  * @param host The branding host configuration to set
48
62
  * @returns A boolean indicating the success of the operation
63
+ * @example
64
+ * const success = await globalHeaderClient.branding.setHost({ label: 'My Host', href: 'https://example.com', logo: { src: 'logo.png', alt: 'Logo' } });
49
65
  */
50
66
  setHost: (host: Partial<BrandingConfigHost>) => Promise<boolean>;
51
67
  /**
52
68
  * Get the branding umbrella configuration
53
69
  * @returns The branding umbrella configuration
70
+ * @example
71
+ * const umbrellaConfig = await globalHeaderClient.branding.getUmbrella();
54
72
  */
55
73
  getUmbrella: () => Promise<Partial<BrandingConfigUmbrella>>;
56
74
  /**
57
75
  * Set the branding umbrella configuration
58
76
  * @param umbrella The branding umbrella configuration to set
59
77
  * @returns A boolean indicating the success of the operation
78
+ * @example
79
+ * const success = await globalHeaderClient.branding.setUmbrella({ label: 'Umbrella', href: 'https://umbrella.com' });
60
80
  */
61
81
  setUmbrella: (umbrella: Partial<BrandingConfigUmbrella>) => Promise<boolean>;
62
82
  /**
63
83
  * Get the branding variables
64
84
  * @returns A record of CSS variable names and their values
85
+ * @example
86
+ * const variables = await globalHeaderClient.branding.getVariables();
65
87
  */
66
88
  getVariables: () => Promise<Record<string, string>>;
67
89
  }
@@ -9,37 +9,58 @@ import { Config } from '../config';
9
9
  */
10
10
  export interface GlobalHeaderClient {
11
11
  /**
12
- * The contact methods TODO: add description
12
+ * Methods related to the **hulp nodig?** menu.
13
13
  */
14
14
  contact: ContactMethods;
15
15
  /**
16
- * The access menu methods TODO: add description
16
+ * Methods related to the **Aanmelden** menu.
17
17
  */
18
18
  accessMenu: AccessMenuMethods;
19
19
  /**
20
- * The branding methods TODO: add description
20
+ * Methods related to the branding of the widget. This includes:
21
+ * - Colors
22
+ * - Branding level
23
+ * - Umbrella
24
+ * - Host
21
25
  */
22
26
  branding: BrandingMethods;
23
27
  /**
24
- * Set whether navigation is enabled.
25
- * @param enabled The navigation enabled state.
26
- * @returns A boolean indicating if the navigation state was set.
28
+ * Enable or disable navigation within the global header.
29
+ * When navigation is disabled, all interactive elements like the access menu,
30
+ * contact menu, and header links will not work or be hidden.
31
+ *
32
+ * This is useful for scenarios like consent screens, where you don't want users
33
+ * to navigate away from the page by clicking on the header.
34
+ *
35
+ * @param enabled - A boolean value indicating whether navigation should be enabled (true) or disabled (false).
36
+ * @returns A promise that resolves to a boolean, confirming if the navigation state was successfully updated.
37
+ * @example
38
+ * const success = await globalHeaderClient.setNavigationEnabled(false);
27
39
  */
28
40
  setNavigationEnabled: (enabled: boolean) => Promise<boolean>;
29
41
  /**
30
42
  * Get the current configuration.
31
- * @returns The current configuration.
43
+ * This is the configuration for the widget ID given in the embed or entry script.
44
+ *
45
+ * @returns A promise that resolves to the current configuration.
46
+ * If an error occurs during retrieval, the promise will be rejected with an error message.
47
+ * @example
48
+ * const config = await globalHeaderClient.getConfig();
32
49
  */
33
50
  getConfig: () => Promise<Config>;
34
51
  /**
35
52
  * Mount the Global Header Widget.
36
53
  * @param element The element to mount the widget to. If omitted, mounts at the top of the page.
37
54
  * @returns A boolean indicating if the widget was mounted successfully.
55
+ * @example
56
+ * const success = await globalHeaderClient.mount(document.getElementById('header'));
38
57
  */
39
58
  mount: (element?: HTMLElement) => Promise<boolean>;
40
59
  /**
41
60
  * Unmount the Global Header Widget.
42
61
  * @returns A boolean indicating if the widget was unmounted successfully.
62
+ * @example
63
+ * const success = await globalHeaderClient.unmount();
43
64
  */
44
65
  unmount: () => Promise<boolean>;
45
66
  }
@@ -4,37 +4,67 @@ export interface ContactMethods {
4
4
  /**
5
5
  * Get the current service points
6
6
  * @returns A promise that resolves to the current service points
7
+ * @example
8
+ * const servicePoints = await globalHeaderClient.contact.getServicePoints();
7
9
  */
8
10
  getServicePoints: () => Promise<EnrichedServicePoints>;
9
11
  /**
10
12
  * Set the service points
11
13
  * @param servicePoints The service points to set
12
14
  * @returns A promise that resolves to the set service points
15
+ * @example
16
+ * const updatedServicePoints = await globalHeaderClient.contact.setServicePoints({
17
+ * displayMode: "grouped",
18
+ * groupLabel: "Neem contact op met een woonmaatschappij",
19
+ * contextual: [
20
+ * { type: "contactOption", contactGroupId: "OVO002919" },
21
+ * { type: "contactOption", contactGroupId: "OVO002884" },
22
+ * { type: "contactOption", contactGroupId: "OVO002940" },
23
+ * { type: "contactOption", contactGroupId: "OVO039151" },
24
+ * { type: "contactOption", contactGroupId: "OVO025805" },
25
+ * { type: "contactOption", contactGroupId: "OVO002499" },
26
+ * { type: "link", href: "https://www.vlaanderen.be/wonen-in-vlaanderen/zoek-een-organisatie/", label: "Zoek een woonmaatschappij in uw buurt" }
27
+ * ],
28
+ * defaults: [
29
+ * { type: "contactOption", contactGroupId: "vlaanderen", label: "Algemene contactopties van de Vlaamse overheid" },
30
+ * { type: "link", href: "https://www.google.be" }
31
+ * ]
32
+ * });
13
33
  */
14
34
  setServicePoints: (args: Translatable<ServicePoints>) => Promise<Translatable<ServicePoints>>;
15
35
  /**
16
36
  * Reset the service points to the initial values from the configuration.
17
37
  * @returns A promise that resolves when the service points have been reset.
38
+ * @example
39
+ * const success = await globalHeaderClient.contact.resetServicePoints();
18
40
  */
19
41
  resetServicePoints: () => Promise<boolean>;
20
42
  /**
21
43
  * Open the contact panel.
22
44
  * @returns A promise that resolves to true if the contact panel was opened.
45
+ * @example
46
+ * const isOpen = await globalHeaderClient.contact.open();
23
47
  */
24
48
  open: () => Promise<boolean>;
25
49
  /**
26
50
  * Close the contact panel.
27
51
  * @returns A promise that resolves to true if the contact panel was closed.
52
+ * @example
53
+ * const isClosed = await globalHeaderClient.contact.close();
28
54
  */
29
55
  close: () => Promise<boolean>;
30
56
  /**
31
57
  * Toggle the contact panel.
32
58
  * @returns A promise that resolves to true if the contact panel is now open.
59
+ * @example
60
+ * const isToggled = await globalHeaderClient.contact.toggle();
33
61
  */
34
62
  toggle: () => Promise<boolean>;
35
63
  /**
36
64
  * Check if the contact panel is open.
37
65
  * @returns A promise that resolves to true if the contact panel is open.
66
+ * @example
67
+ * const isOpen = await globalHeaderClient.contact.isOpen();
38
68
  */
39
69
  isOpen: () => Promise<boolean>;
40
70
  }
@@ -27,6 +27,8 @@
27
27
  --dark-hl-12: #C586C0;
28
28
  --light-hl-13: #267F99;
29
29
  --dark-hl-13: #4EC9B0;
30
+ --light-hl-14: #098658;
31
+ --dark-hl-14: #B5CEA8;
30
32
  --light-code-background: #FFFFFF;
31
33
  --dark-code-background: #1E1E1E;
32
34
  }
@@ -46,6 +48,7 @@
46
48
  --hl-11: var(--light-hl-11);
47
49
  --hl-12: var(--light-hl-12);
48
50
  --hl-13: var(--light-hl-13);
51
+ --hl-14: var(--light-hl-14);
49
52
  --code-background: var(--light-code-background);
50
53
  } }
51
54
 
@@ -64,6 +67,7 @@
64
67
  --hl-11: var(--dark-hl-11);
65
68
  --hl-12: var(--dark-hl-12);
66
69
  --hl-13: var(--dark-hl-13);
70
+ --hl-14: var(--dark-hl-14);
67
71
  --code-background: var(--dark-code-background);
68
72
  } }
69
73
 
@@ -82,6 +86,7 @@
82
86
  --hl-11: var(--light-hl-11);
83
87
  --hl-12: var(--light-hl-12);
84
88
  --hl-13: var(--light-hl-13);
89
+ --hl-14: var(--light-hl-14);
85
90
  --code-background: var(--light-code-background);
86
91
  }
87
92
 
@@ -100,6 +105,7 @@
100
105
  --hl-11: var(--dark-hl-11);
101
106
  --hl-12: var(--dark-hl-12);
102
107
  --hl-13: var(--dark-hl-13);
108
+ --hl-14: var(--dark-hl-14);
103
109
  --code-background: var(--dark-code-background);
104
110
  }
105
111
 
@@ -117,4 +123,5 @@
117
123
  .hl-11 { color: var(--hl-11); }
118
124
  .hl-12 { color: var(--hl-12); }
119
125
  .hl-13 { color: var(--hl-13); }
126
+ .hl-14 { color: var(--hl-14); }
120
127
  pre, code { background: var(--code-background); }
@@ -5,4 +5,4 @@
5
5
  </div></div></section><section class="tsd-panel"><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="bootstrap" class="tsd-anchor"></a><span class="tsd-kind-call-signature">bootstrap</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">url</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/GlobalHeaderClient.html" class="tsd-signature-type tsd-kind-interface">GlobalHeaderClient</a><span class="tsd-signature-symbol">&gt;</span><a href="#bootstrap" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">url</span>: <span class="tsd-signature-type">string</span></span><div class="tsd-comment tsd-typography"><p>The entry URL which has a form like this:
6
6
  <code>https://prod.widgets.burgerprofiel.vlaanderen.be/api/v2/widget/your-widget-id/entry</code></p>
7
7
  </div><div class="tsd-comment tsd-typography"></div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/GlobalHeaderClient.html" class="tsd-signature-type tsd-kind-interface">GlobalHeaderClient</a><span class="tsd-signature-symbol">&gt;</span></h4><p>The GlobalHeaderClient object.</p>
8
- <div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://bitbucket.org/vlaamseoverheid/vl-widgets/src/bc07449f7b640862a92318043b257e10e0bc8a9d/packages/global-header-types/src/bootstrap.ts#lines-21">global-header-types/src/bootstrap.ts:21</a></li></ul></aside></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">Global Header</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
8
+ <div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://bitbucket.org/vlaamseoverheid/vl-widgets/src/49037f41489a2e8c74cc8d7cdeaedc409bd90176/packages/global-header-types/src/bootstrap.ts#lines-21">global-header-types/src/bootstrap.ts:21</a></li></ul></aside></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">Global Header</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
package/docs/index.html CHANGED
@@ -146,6 +146,142 @@ Action Required:</p>
146
146
  <pre><code class="typescript"><span class="hl-12">import</span><span class="hl-2"> { </span><span class="hl-7">GlobalHeaderClient</span><span class="hl-2">, </span><span class="hl-7">MainLink</span><span class="hl-2"> } </span><span class="hl-12">from</span><span class="hl-2"> </span><span class="hl-11">&#39;@govflanders/vl-widget-global-header-types&#39;</span><span class="hl-2">;</span><br/><br/><span class="hl-9">const</span><span class="hl-2"> </span><span class="hl-10">client</span><span class="hl-2">: </span><span class="hl-13">GlobalHeaderClient</span><span class="hl-2"> = </span><span class="hl-7">window</span><span class="hl-2">.</span><span class="hl-7">globalHeaderClient</span><span class="hl-2">;</span><br/><br/><span class="hl-9">const</span><span class="hl-2"> </span><span class="hl-10">contactLink</span><span class="hl-2">: </span><span class="hl-13">MainLink</span><span class="hl-2"> = {</span><br/><span class="hl-2"> </span><span class="hl-7">label:</span><span class="hl-2"> </span><span class="hl-11">&#39;Contact&#39;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">href:</span><span class="hl-2"> </span><span class="hl-11">&#39;/contact&#39;</span><span class="hl-2">,</span><br/><span class="hl-2">};</span><br/><br/><span class="hl-9">const</span><span class="hl-2"> </span><span class="hl-10">feedbackLink</span><span class="hl-2">: </span><span class="hl-13">MainLink</span><span class="hl-2"> = {</span><br/><span class="hl-2"> </span><span class="hl-7">label:</span><span class="hl-2"> </span><span class="hl-11">&#39;Feedback&#39;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">href:</span><span class="hl-2"> </span><span class="hl-11">&#39;https://example.com/feedback&#39;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">isExternal:</span><span class="hl-2"> </span><span class="hl-9">true</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">target:</span><span class="hl-2"> </span><span class="hl-11">&#39;_blank&#39;</span><span class="hl-2">,</span><br/><span class="hl-2">};</span><br/><br/><span class="hl-7">client</span><span class="hl-2">.</span><span class="hl-7">accessMenu</span><span class="hl-2">.</span><span class="hl-8">setMainLinks</span><span class="hl-2">([</span><br/><span class="hl-2"> </span><span class="hl-7">contactLink</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-7">feedbackLink</span><span class="hl-2">,</span><br/><span class="hl-2">]);</span>
147
147
  </code><button type="button">Copy</button></pre>
148
148
 
149
+ <a id="content-security-policy-csp" class="tsd-anchor"></a><h2 class="tsd-anchor-link">Content Security Policy (CSP)<a href="#content-security-policy-csp" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p>To ensure the secure integration of the <strong>Global Header Widget</strong>, you need to configure your Content Security Policy (CSP) with the following directives:</p>
150
+ <a id="production-environment-csp-configuration" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Production Environment CSP Configuration<a href="#production-environment-csp-configuration" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>The minimum required CSP directives for using the global-header in a production environment are:</p>
151
+ <table>
152
+ <thead>
153
+ <tr>
154
+ <th>Directive</th>
155
+ <th>Value</th>
156
+ </tr>
157
+ </thead>
158
+ <tbody>
159
+ <tr>
160
+ <td><code>connect-src</code></td>
161
+ <td><code>https://widgets.vlaanderen.be</code></td>
162
+ </tr>
163
+ <tr>
164
+ <td><code>connect-src</code></td>
165
+ <td><code>wss://chat.contactcenter.vlaanderen.be</code></td>
166
+ </tr>
167
+ <tr>
168
+ <td><code>connect-src</code></td>
169
+ <td><code>https://chat.contactcenter.vlaanderen.be</code></td>
170
+ </tr>
171
+ <tr>
172
+ <td><code>connect-src</code></td>
173
+ <td><code>https://contactapi.vlaanderen.be</code></td>
174
+ </tr>
175
+ <tr>
176
+ <td><code>font-src</code></td>
177
+ <td><code>https://ui.vlaanderen.be</code></td>
178
+ </tr>
179
+ <tr>
180
+ <td><code>font-src</code></td>
181
+ <td><code>https://assets.vlaanderen.be</code></td>
182
+ </tr>
183
+ <tr>
184
+ <td><code>font-src</code></td>
185
+ <td><code>https://widgets.vlaanderen.be</code></td>
186
+ </tr>
187
+ <tr>
188
+ <td><code>img-src</code></td>
189
+ <td><code>data:</code></td>
190
+ </tr>
191
+ <tr>
192
+ <td><code>img-src</code></td>
193
+ <td><code>https://assets.vlaanderen.be</code></td>
194
+ </tr>
195
+ <tr>
196
+ <td><code>img-src</code></td>
197
+ <td><code>https://widgets.vlaanderen.be</code></td>
198
+ </tr>
199
+ <tr>
200
+ <td><code>script-src</code></td>
201
+ <td><code>https://widgets.vlaanderen.be</code></td>
202
+ </tr>
203
+ </tbody>
204
+ </table>
205
+ <a id="tni-environment-csp-configuration" class="tsd-anchor"></a><h3 class="tsd-anchor-link">TNI Environment CSP Configuration<a href="#tni-environment-csp-configuration" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>The minimum required CSP directives for using the global-header in a TNI environment are:</p>
206
+ <table>
207
+ <thead>
208
+ <tr>
209
+ <th>Directive</th>
210
+ <th>Value</th>
211
+ </tr>
212
+ </thead>
213
+ <tbody>
214
+ <tr>
215
+ <td><code>connect-src</code></td>
216
+ <td><code>https://tni.widgets.dev-vlaanderen.be</code></td>
217
+ </tr>
218
+ <tr>
219
+ <td><code>connect-src</code></td>
220
+ <td><code>wss://tni.contactapi.uat-vlaanderen.be</code></td>
221
+ </tr>
222
+ <tr>
223
+ <td><code>connect-src</code></td>
224
+ <td><code>https://chat.contactcenter.dev-vlaanderen.be</code></td>
225
+ </tr>
226
+ <tr>
227
+ <td><code>connect-src</code></td>
228
+ <td><code>https://tni.contactapi.uat-vlaanderen.be</code></td>
229
+ </tr>
230
+ <tr>
231
+ <td><code>font-src</code></td>
232
+ <td><code>https://ui.vlaanderen.be</code></td>
233
+ </tr>
234
+ <tr>
235
+ <td><code>font-src</code></td>
236
+ <td><code>https://assets.vlaanderen.be</code></td>
237
+ </tr>
238
+ <tr>
239
+ <td><code>font-src</code></td>
240
+ <td><code>https://tni.widgets.vlaanderen.be</code></td>
241
+ </tr>
242
+ <tr>
243
+ <td><code>img-src</code></td>
244
+ <td><code>data:</code></td>
245
+ </tr>
246
+ <tr>
247
+ <td><code>img-src</code></td>
248
+ <td><code>https://assets.vlaanderen.be</code></td>
249
+ </tr>
250
+ <tr>
251
+ <td><code>img-src</code></td>
252
+ <td><code>https://tni.widgets.vlaanderen.be</code></td>
253
+ </tr>
254
+ <tr>
255
+ <td><code>script-src</code></td>
256
+ <td><code>https://tni.widgets.vlaanderen.be</code></td>
257
+ </tr>
258
+ </tbody>
259
+ </table>
260
+ <a id="additional-csp-for-screensharing" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Additional CSP for Screensharing<a href="#additional-csp-for-screensharing" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>If you're using the screensharing extension in the contact menu, include the following additional directives:</p>
261
+ <table>
262
+ <thead>
263
+ <tr>
264
+ <th>Directive</th>
265
+ <th>Value (Production &amp; TNI)</th>
266
+ </tr>
267
+ </thead>
268
+ <tbody>
269
+ <tr>
270
+ <td><code>connect-src</code></td>
271
+ <td><code>cobrowse.io</code></td>
272
+ </tr>
273
+ <tr>
274
+ <td><code>connect-src</code></td>
275
+ <td><code>*.cobrowse.io</code></td>
276
+ </tr>
277
+ <tr>
278
+ <td><code>connect-src</code></td>
279
+ <td><code>wss://*.cobrowse.io</code></td>
280
+ </tr>
281
+ </tbody>
282
+ </table>
283
+ <a id="further-information" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Further Information<a href="#further-information" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>For more detailed information about the cobrowse CSP settings, please refer to the <a href="https://docs.cobrowse.io/sdk-installation/web#content-security-policies-csps" target="_blank" class="external">Cobrowse SDK Installation Guide</a>.</p>
284
+ <p>Ensure that your CSP settings are correctly configured to avoid any issues with the widget's functionality and security. If you have any questions or need further assistance, please refer to the <a href="#contact-information">Contact Information</a> section.</p>
149
285
  <a id="contact-information" class="tsd-anchor"></a><h2 class="tsd-anchor-link">Contact Information<a href="#contact-information" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p>If you need assistance or have any questions regarding the <strong>Global Header Widget</strong>, feel free to reach out to us:</p>
150
286
  <ul>
151
287
  <li><strong>Support Portal</strong>: <a href="https://vlaamseoverheid.atlassian.net/wiki/spaces/IKPubliek/pages/2339897467/Widget-platform" target="_blank" class="external">Widget platform</a></li>
@@ -168,4 +304,4 @@ Action Required:</p>
168
304
  <li>Flanders Widget API Usage</li>
169
305
  <li>V4 to V5 Migration Guide</li>
170
306
  </ul>
171
- </div></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><a href="#introduction"><span>Introduction</span></a><a href="#adding-a-flanders-global-header-to-your-website"><span>Adding a <wbr/>Flanders <wbr/>Global <wbr/>Header to <wbr/>Your <wbr/>Website</span></a><ul><li><a href="#using-the-embed-script-automatic-mounting"><span>Using the <wbr/>Embed <wbr/>Script (<wbr/>Automatic <wbr/>Mounting)</span></a></li><li><a href="#using-the-entry-script-manual-mounting"><span>Using the <wbr/>Entry <wbr/>Script (<wbr/>Manual <wbr/>Mounting)</span></a></li><li><a href="#summary"><span>Summary</span></a></li></ul><a href="#using-the-windowglobalheaderclient-api"><span>Using the window.global<wbr/>Header<wbr/>Client API</span></a><a href="#migration-guide-upgrading-from-v4-to-v5"><span>Migration guide: <wbr/>Upgrading from v4 to v5</span></a><ul><li><a href="#remove-client-library-script-links"><span>Remove client library script links</span></a></li><li><a href="#eliminate-installable-packages"><span>Eliminate installable packages</span></a></li><li><a href="#update-embed-script-links"><span>Update <wbr/>Embed script links</span></a></li><li><a href="#update-api-usage"><span>Update API usage</span></a></li><li><ul><li><a href="#changes-in-session-management"><span>Changes in <wbr/>Session <wbr/>Management</span></a></li><li><a href="#changes-in-the-profile-method"><span>Changes in the <wbr/>Profile <wbr/>Method</span></a></li></ul></li><li><a href="#accessing-windowglobalheaderclient"><span>Accessing window.global<wbr/>Header<wbr/>Client</span></a></li><li><a href="#verify-styling-and-rendering"><span>Verify <wbr/>Styling and <wbr/>Rendering</span></a></li></ul><a href="#language-switching"><span>Language <wbr/>Switching</span></a><a href="#browser-support"><span>Browser <wbr/>Support</span></a><a href="#typescript-support"><span>Typescript <wbr/>Support</span></a><ul><li><a href="#installation"><span>Installation</span></a></li><li><a href="#usage-example"><span>Usage example</span></a></li></ul><a href="#contact-information"><span>Contact <wbr/>Information</span></a><a href="#search-keywords"><span>Search <wbr/>Keywords</span></a></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="modules.html">Global Header</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
307
+ </div></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><a href="#introduction"><span>Introduction</span></a><a href="#adding-a-flanders-global-header-to-your-website"><span>Adding a <wbr/>Flanders <wbr/>Global <wbr/>Header to <wbr/>Your <wbr/>Website</span></a><ul><li><a href="#using-the-embed-script-automatic-mounting"><span>Using the <wbr/>Embed <wbr/>Script (<wbr/>Automatic <wbr/>Mounting)</span></a></li><li><a href="#using-the-entry-script-manual-mounting"><span>Using the <wbr/>Entry <wbr/>Script (<wbr/>Manual <wbr/>Mounting)</span></a></li><li><a href="#summary"><span>Summary</span></a></li></ul><a href="#using-the-windowglobalheaderclient-api"><span>Using the window.global<wbr/>Header<wbr/>Client API</span></a><a href="#migration-guide-upgrading-from-v4-to-v5"><span>Migration guide: <wbr/>Upgrading from v4 to v5</span></a><ul><li><a href="#remove-client-library-script-links"><span>Remove client library script links</span></a></li><li><a href="#eliminate-installable-packages"><span>Eliminate installable packages</span></a></li><li><a href="#update-embed-script-links"><span>Update <wbr/>Embed script links</span></a></li><li><a href="#update-api-usage"><span>Update API usage</span></a></li><li><ul><li><a href="#changes-in-session-management"><span>Changes in <wbr/>Session <wbr/>Management</span></a></li><li><a href="#changes-in-the-profile-method"><span>Changes in the <wbr/>Profile <wbr/>Method</span></a></li></ul></li><li><a href="#accessing-windowglobalheaderclient"><span>Accessing window.global<wbr/>Header<wbr/>Client</span></a></li><li><a href="#verify-styling-and-rendering"><span>Verify <wbr/>Styling and <wbr/>Rendering</span></a></li></ul><a href="#language-switching"><span>Language <wbr/>Switching</span></a><a href="#browser-support"><span>Browser <wbr/>Support</span></a><a href="#typescript-support"><span>Typescript <wbr/>Support</span></a><ul><li><a href="#installation"><span>Installation</span></a></li><li><a href="#usage-example"><span>Usage example</span></a></li></ul><a href="#content-security-policy-csp"><span>Content <wbr/>Security <wbr/>Policy (CSP)</span></a><ul><li><a href="#production-environment-csp-configuration"><span>Production <wbr/>Environment CSP <wbr/>Configuration</span></a></li><li><a href="#tni-environment-csp-configuration"><span>TNI <wbr/>Environment CSP <wbr/>Configuration</span></a></li><li><a href="#additional-csp-for-screensharing"><span>Additional CSP for <wbr/>Screensharing</span></a></li><li><a href="#further-information"><span>Further <wbr/>Information</span></a></li></ul><a href="#contact-information"><span>Contact <wbr/>Information</span></a><a href="#search-keywords"><span>Search <wbr/>Keywords</span></a></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="modules.html">Global Header</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>