@salesforcedevs/docs-components 0.0.1 → 0.0.2-edit

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 (83) hide show
  1. package/lwc.config.json +11 -2
  2. package/package.json +13 -12
  3. package/src/modules/doc/{amfReference/utils.ts → amfModelParser/amfModelParser.ts} +10 -5
  4. package/src/modules/doc/amfReference/amfReference.css +23 -3
  5. package/src/modules/doc/amfReference/amfReference.html +34 -21
  6. package/src/modules/doc/amfReference/amfReference.ts +225 -92
  7. package/src/modules/doc/amfReference/types.ts +3 -12
  8. package/src/modules/doc/amfTopic/amfTopic.css +20 -0
  9. package/src/modules/doc/amfTopic/amfTopic.ts +35 -18
  10. package/src/modules/doc/amfTopic/types.ts +15 -13
  11. package/src/modules/doc/amfTopic/utils.ts +12 -6
  12. package/src/modules/doc/breadcrumbItem/breadcrumbItem.ts +17 -10
  13. package/src/modules/doc/breadcrumbs/breadcrumbs.html +7 -9
  14. package/src/modules/doc/breadcrumbs/breadcrumbs.ts +30 -34
  15. package/src/modules/doc/chat/README.md +179 -0
  16. package/src/modules/doc/chat/chat.css +818 -0
  17. package/src/modules/doc/chat/chat.html +241 -0
  18. package/src/modules/doc/chat/chat.ts +586 -0
  19. package/src/modules/doc/componentPlayground/componentPlayground.css +22 -0
  20. package/src/modules/doc/componentPlayground/componentPlayground.html +20 -0
  21. package/src/modules/doc/componentPlayground/componentPlayground.ts +29 -0
  22. package/src/modules/doc/content/content.css +70 -76
  23. package/src/modules/doc/content/content.html +1 -0
  24. package/src/modules/doc/content/content.ts +24 -45
  25. package/src/modules/doc/contentCallout/contentCallout.css +10 -7
  26. package/src/modules/doc/contentCallout/contentCallout.html +11 -4
  27. package/src/modules/doc/contentCallout/contentCallout.ts +8 -1
  28. package/src/modules/doc/contentLayout/contentLayout.css +1 -98
  29. package/src/modules/doc/contentLayout/contentLayout.html +41 -19
  30. package/src/modules/doc/contentLayout/contentLayout.ts +298 -89
  31. package/src/modules/doc/doDont/doDont.css +47 -0
  32. package/src/modules/doc/doDont/doDont.html +27 -0
  33. package/src/modules/doc/doDont/doDont.ts +17 -0
  34. package/src/modules/doc/editFile/editFile.css +514 -0
  35. package/src/modules/doc/editFile/editFile.html +164 -0
  36. package/src/modules/doc/editFile/editFile.ts +213 -0
  37. package/src/modules/doc/header/header.css +65 -36
  38. package/src/modules/doc/header/header.html +41 -139
  39. package/src/modules/doc/header/header.ts +54 -76
  40. package/src/modules/doc/heading/heading.css +16 -37
  41. package/src/modules/doc/heading/heading.html +4 -4
  42. package/src/modules/doc/heading/heading.ts +12 -10
  43. package/src/modules/doc/headingAnchor/headingAnchor.css +2 -2
  44. package/src/modules/doc/headingAnchor/headingAnchor.ts +2 -2
  45. package/src/modules/doc/headingContent/headingContent.css +1 -1
  46. package/src/modules/doc/headingContent/headingContent.html +2 -2
  47. package/src/modules/doc/headingContent/headingContent.ts +2 -2
  48. package/src/modules/doc/lwcContentLayout/lwcContentLayout.css +1 -0
  49. package/src/modules/doc/lwcContentLayout/lwcContentLayout.html +68 -0
  50. package/src/modules/doc/lwcContentLayout/lwcContentLayout.ts +168 -0
  51. package/src/modules/doc/overview/overview.css +40 -0
  52. package/src/modules/doc/overview/overview.html +34 -0
  53. package/src/modules/doc/overview/overview.ts +12 -0
  54. package/src/modules/doc/phase/phase.css +18 -3
  55. package/src/modules/doc/phase/phase.html +12 -2
  56. package/src/modules/doc/phase/phase.ts +44 -8
  57. package/src/modules/doc/specificationContent/specificationContent.css +36 -0
  58. package/src/modules/doc/specificationContent/specificationContent.html +171 -0
  59. package/src/modules/doc/specificationContent/specificationContent.ts +127 -0
  60. package/src/modules/doc/sprigSurvey/sprigSurvey.html +20 -0
  61. package/src/modules/doc/sprigSurvey/sprigSurvey.scoped.css +16 -0
  62. package/src/modules/doc/sprigSurvey/sprigSurvey.ts +16 -0
  63. package/src/modules/doc/toc/toc.html +1 -3
  64. package/src/modules/doc/toc/toc.ts +1 -1
  65. package/src/modules/doc/toolbar/toolbar.ts +6 -6
  66. package/src/modules/doc/versionPicker/versionPicker.css +64 -0
  67. package/src/modules/doc/versionPicker/versionPicker.html +38 -0
  68. package/src/modules/doc/versionPicker/versionPicker.ts +65 -0
  69. package/src/modules/doc/xmlContent/types.ts +9 -3
  70. package/src/modules/doc/xmlContent/utils.ts +3 -1
  71. package/src/modules/doc/xmlContent/xmlContent.css +26 -4
  72. package/src/modules/doc/xmlContent/xmlContent.html +29 -17
  73. package/src/modules/doc/xmlContent/xmlContent.ts +212 -79
  74. package/src/modules/docHelpers/amfStyle/amfStyle.css +6 -6
  75. package/src/modules/docHelpers/contentLayoutStyle/contentLayoutStyle.css +131 -0
  76. package/src/modules/docHelpers/imgStyle/imgStyle.css +59 -0
  77. package/src/modules/docHelpers/status/status.css +1 -1
  78. package/src/modules/docUtils/{SearchSyncer/SearchSyncer.ts → searchSyncer/searchSyncer.ts} +1 -0
  79. package/src/modules/docUtils/utils/__mocks__/coveo.analytics.ts +16 -0
  80. package/src/modules/docUtils/utils/coveo.analytics.d.ts +10 -0
  81. package/src/modules/docUtils/utils/utils.ts +32 -0
  82. package/src/modules/docBaseElements/lightningElementWithState/lightningElementWithState.ts +0 -93
  83. package/src/modules/docHelpers/phaseContentLayout/phaseContentLayout.css +0 -39
@@ -0,0 +1,213 @@
1
+ import { LightningElement, api, track } from "lwc";
2
+ import cx from "classnames";
3
+ import { normalizeBoolean } from "dxUtils/normalizers";
4
+
5
+ interface ApiResponse {
6
+ success: boolean;
7
+ data?: string;
8
+ message?: string;
9
+ error?: string;
10
+ }
11
+
12
+ export default class EditFile extends LightningElement {
13
+ @api fileName: string = "";
14
+ @api apiEndpoint: string = "/api/edit-file";
15
+ @api title: string = "Edit File";
16
+
17
+ @api
18
+ get disabled() {
19
+ return this._disabled;
20
+ }
21
+
22
+ set disabled(value) {
23
+ this._disabled = normalizeBoolean(value);
24
+ }
25
+
26
+ @track isPopoverOpen: boolean = false;
27
+ @track isLoading: boolean = false;
28
+ @track isSaving: boolean = false;
29
+ @track fileContent: string = "";
30
+ @track originalContent: string = "";
31
+ @track errorMessage: string = "";
32
+
33
+ private _disabled: boolean = false;
34
+
35
+ // API Configuration
36
+ private static readonly FETCH_ENDPOINT = "/api/file/fetch";
37
+ private static readonly SAVE_ENDPOINT = "/api/file/save";
38
+
39
+ get popoverClass() {
40
+ return cx(
41
+ "edit-file-popover",
42
+ this.isPopoverOpen && "edit-file-popover_open"
43
+ );
44
+ }
45
+
46
+ get overlayClass() {
47
+ return cx(
48
+ "edit-file-overlay",
49
+ this.isPopoverOpen && "edit-file-overlay_open"
50
+ );
51
+ }
52
+
53
+ get saveButtonClass() {
54
+ return cx(
55
+ "edit-file-button",
56
+ "edit-file-button_primary",
57
+ (this.isSaving || this.isContentUnchanged) && "edit-file-button_disabled"
58
+ );
59
+ }
60
+
61
+ get isContentUnchanged() {
62
+ return this.fileContent === this.originalContent;
63
+ }
64
+
65
+ // Open the edit file popover
66
+ async handleEditClick() {
67
+ if (this.disabled) return;
68
+
69
+ this.isPopoverOpen = true;
70
+ this.errorMessage = "";
71
+ await this.fetchFileContent();
72
+ }
73
+
74
+ // Fetch file content from API
75
+ private async fetchFileContent() {
76
+ if (!this.fileName) {
77
+ this.errorMessage = "No file specified to edit";
78
+ return;
79
+ }
80
+
81
+ this.isLoading = true;
82
+
83
+ try {
84
+ const response = await fetch(EditFile.FETCH_ENDPOINT, {
85
+ method: "POST",
86
+ headers: {
87
+ "Content-Type": "application/json",
88
+ },
89
+ body: JSON.stringify({
90
+ fileName: this.fileName,
91
+ action: "fetch"
92
+ })
93
+ });
94
+
95
+ if (!response.ok) {
96
+ throw new Error(`Failed to fetch file: ${response.status}`);
97
+ }
98
+
99
+ const data: ApiResponse = await response.json();
100
+
101
+ if (data.success && data.data !== undefined) {
102
+ this.fileContent = data.data;
103
+ this.originalContent = data.data;
104
+ this.errorMessage = "";
105
+ } else {
106
+ this.errorMessage = data.error || data.message || "Failed to load file content";
107
+ }
108
+ } catch (error) {
109
+ console.error("Error fetching file content:", error);
110
+ this.errorMessage = error instanceof Error ? error.message : "Failed to connect to server";
111
+ } finally {
112
+ this.isLoading = false;
113
+ }
114
+ }
115
+
116
+ // Handle content change in textarea
117
+ handleContentChange(event: Event) {
118
+ const target = event.target as HTMLTextAreaElement;
119
+ this.fileContent = target.value;
120
+ }
121
+
122
+ // Handle cancel action
123
+ handleCancel() {
124
+ this.isPopoverOpen = false;
125
+ this.fileContent = "";
126
+ this.originalContent = "";
127
+ this.errorMessage = "";
128
+ this.isLoading = false;
129
+ this.isSaving = false;
130
+
131
+ // Dispatch cancel event
132
+ this.dispatchEvent(
133
+ new CustomEvent("editcancel", {
134
+ detail: { fileName: this.fileName }
135
+ })
136
+ );
137
+ }
138
+
139
+ // Handle save action
140
+ async handleSave() {
141
+ if (this.isSaving || this.isContentUnchanged || this.disabled) return;
142
+
143
+ this.isSaving = true;
144
+ this.errorMessage = "";
145
+
146
+ try {
147
+ const response = await fetch(EditFile.SAVE_ENDPOINT, {
148
+ method: "POST",
149
+ headers: {
150
+ "Content-Type": "application/json",
151
+ },
152
+ body: JSON.stringify({
153
+ fileName: this.fileName,
154
+ content: this.fileContent,
155
+ action: "save"
156
+ })
157
+ });
158
+
159
+ if (!response.ok) {
160
+ throw new Error(`Failed to save file: ${response.status}`);
161
+ }
162
+
163
+ const data: ApiResponse = await response.json();
164
+
165
+ if (data.success) {
166
+ this.originalContent = this.fileContent;
167
+ this.isPopoverOpen = false;
168
+
169
+ // Dispatch success event
170
+ this.dispatchEvent(
171
+ new CustomEvent("editsuccess", {
172
+ detail: {
173
+ fileName: this.fileName,
174
+ content: this.fileContent,
175
+ message: data.message || "File saved successfully"
176
+ }
177
+ })
178
+ );
179
+ } else {
180
+ this.errorMessage = data.error || data.message || "Failed to save file";
181
+ }
182
+ } catch (error) {
183
+ console.error("Error saving file:", error);
184
+ this.errorMessage = error instanceof Error ? error.message : "Failed to connect to server";
185
+ } finally {
186
+ this.isSaving = false;
187
+ }
188
+ }
189
+
190
+ // Handle overlay click to close popover
191
+ handleOverlayClick(event: Event) {
192
+ if (event.target === event.currentTarget) {
193
+ this.handleCancel();
194
+ }
195
+ }
196
+
197
+ // Handle escape key to close popover
198
+ handleKeyDown(event: KeyboardEvent) {
199
+ if (event.key === "Escape" && this.isPopoverOpen) {
200
+ this.handleCancel();
201
+ }
202
+ }
203
+
204
+ connectedCallback() {
205
+ // Add escape key listener
206
+ document.addEventListener("keydown", this.handleKeyDown.bind(this));
207
+ }
208
+
209
+ disconnectedCallback() {
210
+ // Remove escape key listener
211
+ document.removeEventListener("keydown", this.handleKeyDown.bind(this));
212
+ }
213
+ }
@@ -2,11 +2,39 @@
2
2
 
3
3
  dx-logo {
4
4
  min-width: fit-content;
5
- min-width: -moz-fit-content;
5
+ }
6
+
7
+ .dev-center-link {
8
+ display: inline-block;
9
+ padding: var(--dx-g-spacing-smd) var(--dx-g-spacing-lg) 0
10
+ var(--dx-g-global-header-padding-horizontal);
11
+ height: var(--dx-g-spacing-xl);
12
+ }
13
+
14
+ .dev-center-content {
15
+ display: flex;
16
+ align-items: center;
17
+ text-decoration: none;
18
+ color: inherit;
19
+ font-weight: var(--dx-g-font-bold);
20
+ }
21
+
22
+ dx-icon {
23
+ --dx-c-icon-size: var(--dx-g-icon-size-xs);
24
+ --dx-c-icon-color: var(--dx-g-blue-vibrant-20);
25
+ }
26
+
27
+ .dev-center-content > * + * {
28
+ margin-left: 8px; /* Adjust this value to your desired spacing */
6
29
  }
7
30
 
8
31
  .header_l2 {
9
32
  justify-content: space-between;
33
+ height: var(--dx-g-doc-header-main-nav-height);
34
+ }
35
+
36
+ .has-brand .header_l2 {
37
+ height: var(--dx-g-spacing-3xl);
10
38
  }
11
39
 
12
40
  .nav_menu-button {
@@ -16,50 +44,44 @@ dx-logo {
16
44
  );
17
45
  }
18
46
 
47
+ .has-brand.has-scoped-nav-items {
48
+ border-bottom: 1px solid var(--dx-g-gray-90);
49
+ border-top: 1px solid var(--dx-g-gray-90);
50
+ }
51
+
19
52
  .nav_menu-ctas {
20
53
  margin-right: var(--dx-g-spacing-sm);
21
54
  }
22
55
 
23
56
  header:not(.has-brand) > .header_l1 {
24
- background: var(--dx-g-brand-current-color-background);
57
+ background: white;
58
+ border-bottom: 1px solid var(--dx-g-gray-90);
25
59
  }
26
60
 
27
61
  header:not(.has-brand) > .header_l2 {
28
- background: var(--dx-g-brand-current-color-background-2);
62
+ border-bottom: 1px solid var(--dx-g-gray-90);
63
+ border-top: 1px solid var(--dx-g-gray-90);
29
64
  }
30
65
 
31
66
  .header_l2_group.header_l2_group-right-ctas {
32
67
  align-items: baseline;
33
68
  }
34
69
 
35
- .header_bail-link {
36
- --dx-c-button-horizontal-spacing: var(--dx-g-spacing-sm);
37
-
38
- margin-left: var(--dx-g-spacing-sm);
39
- }
40
-
41
- .header_lang-dropdown {
42
- --button-primary-color: var(--dx-g-blue-vibrant-50);
43
- --button-primary-color-hover: var(--dx-g-blue-vibrant-40);
44
- }
45
-
46
- .header_lang-dropdown > dx-button {
47
- --dx-c-button-primary-color: var(--button-primary-color);
48
- --dx-c-button-primary-color-hover: var(--button-primary-color-hover);
49
- --dx-c-slot-empty-width: min-content;
50
- --border-color: var(--button-primary-color);
51
-
52
- border-bottom: 1px dashed var(--border-color);
70
+ .has-brand .header_l2_group-title {
71
+ padding: var(--dx-g-spacing-sm) var(--dx-g-spacing-xl)
72
+ calc(var(--dx-g-spacing-smd) - 1px) 0;
73
+ min-width: 320px;
53
74
  }
54
75
 
55
- .header_lang-dropdown > dx-button:hover {
56
- --border-color: var(--button-primary-color-hover);
76
+ .no-header-content {
77
+ border-top: 1px solid var(--dx-g-gray-90);
57
78
  }
58
79
 
59
- @media (max-width: 740px) {
80
+ @media (max-width: 768px) {
60
81
  .header_l2 {
61
82
  padding: 0;
62
83
  flex-wrap: wrap;
84
+ height: 100%;
63
85
  }
64
86
 
65
87
  .has-nav-items .header_l2 {
@@ -70,34 +92,41 @@ header:not(.has-brand) > .header_l2 {
70
92
  width: 100%;
71
93
  }
72
94
 
95
+ .header_l2_group-title {
96
+ margin-right: 0;
97
+ padding: var(--dx-g-spacing-sm) 0 2px
98
+ var(--dx-g-global-header-padding-horizontal);
99
+ min-height: var(--dx-g-doc-header-main-nav-height);
100
+ }
101
+
73
102
  .header_l2_group-nav {
74
103
  height: var(--dx-g-spacing-3xl);
75
104
  padding: 0;
76
- padding-left: var(--dx-g-spacing-sm);
105
+ margin-top: calc(var(--dx-g-spacing-2xs) + 1px);
77
106
  }
78
107
 
79
108
  .header_l2_group-nav_overflow {
109
+ height: var(--dx-g-spacing-3xl);
80
110
  margin-right: var(--dx-g-spacing-sm);
81
111
  }
82
112
 
83
- .header_l2_group-title {
84
- margin-right: 0;
85
- padding: var(--dx-g-spacing-smd) var(--dx-g-page-padding-horizontal);
113
+ .subtitle {
114
+ font-weight: var(--dx-g-font-demi);
115
+ letter-spacing: -0.08px;
86
116
  }
87
117
 
88
- .header_l2_group-title .header_lang-dropdown {
89
- margin-left: auto;
90
- }
91
-
92
- .header_lang-dropdown > dx-button {
93
- padding: var(--dx-g-spacing-2xs) 0;
118
+ .has-brand .header_l2_group-title {
119
+ margin-right: 0;
120
+ padding: var(--dx-g-spacing-sm) 0 var(--dx-g-spacing-2xs)
121
+ var(--dx-g-global-header-padding-horizontal);
94
122
  }
95
123
 
96
124
  .has-scoped-nav-items > .header_l2 {
97
125
  height: unset;
98
126
  }
99
127
 
100
- .has-scoped-nav-items .header_l2_group-title {
101
- border-bottom: 1px solid var(--dx-g-brand-current-color-border-2);
128
+ header:not(.has-brand) > .header_l2 {
129
+ padding-bottom: 0;
130
+ border: 0;
102
131
  }
103
132
  }
@@ -1,153 +1,55 @@
1
1
  <template>
2
- <dx-brand-theme-provider brand={brand}>
3
- <header class={className}>
4
- <dx-skip-nav-link></dx-skip-nav-link>
5
- <dx-banner
6
- if:true={bannerMarkup}
7
- banner-markup={bannerMarkup}
8
- ></dx-banner>
9
- <div class="header_l1">
10
- <div if:true={showMenuButton} class="nav_menu-ctas">
11
- <dx-button
12
- aria-label="Menu Button"
13
- class="nav_menu-button"
14
- icon-size="large"
15
- icon-symbol={mobileMenuIconSymbol}
16
- variant="tertiary"
17
- onclick={toggleMobileNavMenu}
18
- ></dx-button>
19
- </div>
20
- <dx-logo label={title}></dx-logo>
21
- <dx-header-nav
22
- if:true={showDesktopNavItems}
23
- aria-label="Global Navigation Bar"
24
- nav-items={navItems}
25
- onrequestopennavmenu={onRequestOpenNavMenu}
26
- pathname={pathname}
27
- variant="small"
28
- ></dx-header-nav>
29
- <div class="header-cta-container">
30
- <dx-header-search
31
- if:true={hasSearch}
32
- coveo-organization-id={coveoOrganizationId}
33
- coveo-public-access-token={coveoPublicAccessToken}
34
- coveo-search-pipeline={coveoSearchPipeline}
35
- coveo-search-hub={coveoSearchHub}
36
- mobile={tablet}
37
- onstatechange={handleStateChange}
38
- ></dx-header-search>
39
- </div>
40
- <div if:true={showSignup} class="header-login-signup">
41
- <dx-button
42
- aria-label="Sign Up For Salesforce Developer Edition"
43
- size="small"
44
- href={signupLink}
45
- onclick={handleSignUpClick}
46
- >
47
- Sign Up
48
- </dx-button>
49
- </div>
50
- <dx-header-mobile-nav-menu
51
- if:true={hasNavItems}
52
- nav-items={navItems}
53
- open={showMobileNavMenu}
54
- pathname={pathname}
55
- value={mobileNavMenuValue}
56
- onchange={onMobileNavMenuChange}
57
- onrequestclose={closeMobileNavMenu}
58
- >
59
- <dx-button
60
- aria-label={bailLabel}
61
- if:true={hasBailLink}
62
- href={bailHref}
63
- variant="tertiary"
64
- icon-symbol="new_window"
65
- >
66
- {bailLabel}
67
- </dx-button>
68
- </dx-header-mobile-nav-menu>
69
- </div>
70
- <div class="header_l2">
71
- <div class="header_l2_group header_l2_group-title">
72
- <a href={headerHref} class="home-link">
2
+ <template lwc:if={shouldRender}>
3
+ <dx-brand-theme-provider brand={brand}>
4
+ <header class={className}>
5
+ <dx-banner
6
+ lwc:if={showBanner}
7
+ banner-markup={bannerMarkup}
8
+ ></dx-banner>
9
+ <!-- To-Do: Move the devCenter as a new component and use it here, as devCenter is also used in Sidebar now -->
10
+ <div lwc:if={devCenter} class="dev-center-link">
11
+ <a href={devCenter.link} class="dev-center-content">
12
+ <dx-icon symbol="back"></dx-icon>
73
13
  <dx-icon
74
14
  class="brand-icon"
75
- if:true={isValidBrand}
15
+ lwc:if={devCenter.icon}
76
16
  sprite="salesforcebrand"
77
17
  symbol={brand}
78
- size="xlarge"
18
+ size="large"
79
19
  ></dx-icon>
80
- <span class="subtitle dx-text-heading-4">
81
- {subtitle}
20
+ <span class="subtitle dx-text-body-4">
21
+ {devCenter.title}
82
22
  </span>
83
23
  </a>
84
- <dx-dropdown
85
- if:true={showMobileLanguages}
86
- class="header_lang-dropdown"
87
- options={languages}
88
- small
89
- value={language}
90
- value-path={langValuePath}
91
- onchange={onLangChange}
92
- >
93
- <dx-button
94
- aria-label="Select Language"
95
- variant="inline"
96
- icon-size="large"
97
- icon-symbol="world"
98
- ></dx-button>
99
- </dx-dropdown>
100
24
  </div>
101
- <div
102
- if:true={hasScopedNavItems}
103
- class="header_l2_group header_l2_group-nav"
104
- >
105
- <div
106
- class="header_l2_group-nav_overflow"
107
- onscroll={onNavScroll}
108
- >
109
- <dx-header-nav
110
- aria-label="Scoped Navigation Bar"
111
- nav-items={scopedNavItems}
112
- pathname={pathname}
113
- ></dx-header-nav>
25
+ <div class="header_l2">
26
+ <div class="header_l2_group header_l2_group-title">
27
+ <a href={headerHref} class="home-link">
28
+ <span class="subtitle dx-text-display-7">
29
+ {subtitle}
30
+ </span>
31
+ </a>
114
32
  </div>
115
- </div>
116
- <div
117
- if:false={smallMobile}
118
- class="header_l2_group header_l2_group-right-ctas"
119
- >
120
- <dx-dropdown
121
- if:true={hasLanguages}
122
- class="header_lang-dropdown"
123
- options={languages}
124
- small
125
- value-path={langValuePath}
126
- value={language}
127
- onchange={onLangChange}
33
+ <div
34
+ lwc:if={showScopedNavItems}
35
+ class="header_l2_group header_l2_group-nav"
128
36
  >
129
- <dx-button
130
- aria-label="Select Language"
131
- variant="inline"
132
- icon-size="small"
133
- icon-symbol="world"
37
+ <div
38
+ class="header_l2_group-nav_overflow"
39
+ onscroll={onNavScroll}
134
40
  >
135
- {languageLabel}
136
- </dx-button>
137
- </dx-dropdown>
138
- <dx-button
139
- if:true={hasBailLink}
140
- aria-label={bailLabel}
141
- class="header_bail-link"
142
- href={bailHref}
143
- variant="tertiary"
144
- icon-symbol="new_window"
145
- target="_blank"
146
- >
147
- {bailLabel}
148
- </dx-button>
41
+ <dx-header-nav
42
+ aria-label="Scoped Navigation Bar"
43
+ nav-items={scopedNavItems}
44
+ pathname={pathname}
45
+ ></dx-header-nav>
46
+ </div>
47
+ </div>
149
48
  </div>
150
- </div>
151
- </header>
152
- </dx-brand-theme-provider>
49
+ </header>
50
+ </dx-brand-theme-provider>
51
+ </template>
52
+ <template lwc:if={shouldHideHeader}>
53
+ <div class="no-header-content"></div>
54
+ </template>
153
55
  </template>