@salesforcedevs/docs-components 1.3.227-docheader3-alpha → 1.3.227-newdocux-alpha1

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/lwc.config.json CHANGED
@@ -17,6 +17,7 @@
17
17
  "doc/headingAnchor",
18
18
  "doc/overview",
19
19
  "doc/phase",
20
+ "doc/versionPicker",
20
21
  "doc/xmlContent",
21
22
  "docUtils/utils"
22
23
  ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforcedevs/docs-components",
3
- "version": "1.3.227-docheader3-alpha",
3
+ "version": "1.3.227-newdocux-alpha1",
4
4
  "description": "Docs Lightning web components for DSC",
5
5
  "license": "MIT",
6
6
  "main": "index.js",
@@ -22,11 +22,3 @@ doc-phase:nth-child(2) {
22
22
  .api-documentation {
23
23
  margin-top: 48px;
24
24
  }
25
-
26
- .version-picker {
27
- margin-left: auto;
28
- }
29
-
30
- .version-picker-text {
31
- border-bottom: 1px dashed var(--dx-g-blue-vibrant-50);
32
- }
@@ -33,20 +33,14 @@
33
33
  dismissible="true"
34
34
  ondismissphase={handleDismissVersionBanner}
35
35
  ></doc-phase>
36
- <div slot="sidebar-header" class="version-picker">
37
- <template if:true={isVersionEnabled}>
38
- <dx-dropdown
39
- onchange={handleVersionChange}
40
- data-type="version"
41
- options={versions}
42
- value={selectedVersion.id}
43
- width="290px"
44
- >
45
- <dx-button variant="inline" class="version-picker-text">
46
- {selectedVersion.id}
47
- </dx-button>
48
- </dx-dropdown>
49
- </template>
36
+ <div if:true={isVersionEnabled} slot="sidebar-header">
37
+ <doc-version-picker
38
+ onchange={handleVersionChange}
39
+ data-type="version"
40
+ versions={versions}
41
+ selected-version={selectedVersion}
42
+ latest-version={latestVersion}
43
+ ></doc-version-picker>
50
44
  </div>
51
45
  <template if:false={showSpecBasedReference}>
52
46
  <slot></slot>
@@ -121,6 +121,8 @@ export default class AmfReference extends LightningElement {
121
121
  this.isVersionFetched = true;
122
122
  if (this.oldVersionInfo) {
123
123
  this.showVersionBanner = true;
124
+ } else {
125
+ this.latestVersion = true;
124
126
  }
125
127
  }
126
128
  } else {
@@ -203,6 +205,7 @@ export default class AmfReference extends LightningElement {
203
205
  private selectedReferenceDocPhase?: string | null = null;
204
206
  private _expandChildren?: boolean = false;
205
207
  private isVersionFetched = false;
208
+ private latestVersion = false;
206
209
 
207
210
  /**
208
211
  * Key for storing the currently selected reference url. This will be used to save the
@@ -1313,6 +1316,8 @@ export default class AmfReference extends LightningElement {
1313
1316
  this.versions = this.getVersions();
1314
1317
  if (this.oldVersionInfo) {
1315
1318
  this.showVersionBanner = true;
1319
+ } else {
1320
+ this.latestVersion = true;
1316
1321
  }
1317
1322
 
1318
1323
  this.isVersionFetched = true;
@@ -22,7 +22,7 @@ doc-breadcrumbs {
22
22
 
23
23
  dx-sidebar,
24
24
  dx-sidebar-old {
25
- --dx-c-sidebar-vertical-padding: var(--dx-c-content-vertical-spacing);
25
+ --dx-c-sidebar-vertical-padding: var(--dx-g-spacing-md);
26
26
 
27
27
  z-index: calc(var(--dx-g-z-index-100) + 5);
28
28
  }
@@ -54,6 +54,7 @@ dx-toc {
54
54
 
55
55
  .content-body-doc-phase-container {
56
56
  flex: 1;
57
+ border-left: 1px solid var(--dx-g-gray-90);
57
58
  }
58
59
 
59
60
  .content-body-container {
@@ -96,6 +97,10 @@ dx-toc {
96
97
  .content-body {
97
98
  margin-top: var(--dx-c-content-vertical-spacing);
98
99
  }
100
+
101
+ .content-body-doc-phase-container {
102
+ border-left: 0;
103
+ }
99
104
  }
100
105
 
101
106
  @media screen and (max-width: 768px) {
@@ -115,7 +120,6 @@ dx-toc {
115
120
 
116
121
  .left-nav-bar {
117
122
  height: unset;
118
- z-index: 10;
119
123
  }
120
124
 
121
125
  .content-body {
@@ -12,7 +12,7 @@
12
12
  bail-href={bailHref}
13
13
  bail-label={bailLabel}
14
14
  >
15
- <slot name="sidebar-header" slot="header"></slot>
15
+ <slot name="sidebar-header" slot="version-picker"></slot>
16
16
  </dx-sidebar-old>
17
17
  </template>
18
18
  <template if:false={useOldSidebar}>
@@ -31,7 +31,7 @@
31
31
  bail-href={bailHref}
32
32
  bail-label={bailLabel}
33
33
  >
34
- <slot name="sidebar-header" slot="header"></slot>
34
+ <slot name="sidebar-header" slot="version-picker"></slot>
35
35
  </dx-sidebar>
36
36
  </template>
37
37
  <div class="content-body-doc-phase-container">
@@ -40,10 +40,15 @@ header:not(.has-brand) > .header_l2 {
40
40
  }
41
41
 
42
42
  .has-brand .header_l2_group-title {
43
- padding: 12px 32px 11px 0;
43
+ padding: var(--dx-g-spacing-smd) var(--dx-g-spacing-xl)
44
+ calc(var(--dx-g-spacing-smd) - 1px) 0;
44
45
  min-width: 320px;
45
46
  }
46
47
 
48
+ .no-header-content {
49
+ border-top: 1px solid var(--dx-g-gray-90);
50
+ }
51
+
47
52
  @media (max-width: 768px) {
48
53
  .header_l2 {
49
54
  padding: 0;
@@ -63,13 +68,13 @@ header:not(.has-brand) > .header_l2 {
63
68
  margin-right: 0;
64
69
  padding: var(--dx-g-spacing-sm) 0 2px
65
70
  var(--dx-g-global-header-padding-horizontal);
66
- min-height: 41px;
71
+ min-height: var(--dx-g-doc-header-main-nav-height);
67
72
  }
68
73
 
69
74
  .header_l2_group-nav {
70
75
  height: var(--dx-g-spacing-3xl);
71
76
  padding: 0;
72
- margin-top: 3px;
77
+ margin-top: calc(var(--dx-g-spacing-2xs) + 1px);
73
78
  }
74
79
 
75
80
  .header_l2_group-nav_overflow {
@@ -84,9 +89,8 @@ header:not(.has-brand) > .header_l2 {
84
89
 
85
90
  .has-brand .header_l2_group-title {
86
91
  margin-right: 0;
87
- padding: var(--dx-g-spacing-sm) 0 2px
92
+ padding: var(--dx-g-spacing-sm) 0 var(--dx-g-spacing-2xs)
88
93
  var(--dx-g-global-header-padding-horizontal);
89
- min-height: 41px;
90
94
  }
91
95
 
92
96
  .has-scoped-nav-items > .header_l2 {
@@ -40,4 +40,7 @@
40
40
  </header>
41
41
  </dx-brand-theme-provider>
42
42
  </template>
43
+ <template if:true={showDocDivider}>
44
+ <div class="no-header-content"></div>
45
+ </template>
43
46
  </template>
@@ -5,7 +5,7 @@ import { HeaderBase } from "dxBaseElements/headerBase";
5
5
  import { toJson } from "dxUtils/normalizers";
6
6
 
7
7
  const TABLET_MATCH = "980px";
8
- const MOBILE_MATCH = "880px";
8
+ const MOBILE_MATCH = "768px";
9
9
 
10
10
  export default class Header extends HeaderBase {
11
11
  @api langValuePath: string = "id"; // allows to override how language property is interpreted, follows valuePath dropdown api.
@@ -23,7 +23,8 @@ export default class Header extends HeaderBase {
23
23
  private _scopedNavItems!: OptionWithNested[];
24
24
  private tablet = false;
25
25
  private tabletMatchMedia!: MediaQueryList;
26
- private shouldRender = false;
26
+ private shouldRender: boolean = false;
27
+ private showDocDivider: boolean = false;
27
28
 
28
29
  protected mobileBreakpoint(): string {
29
30
  return MOBILE_MATCH;
@@ -51,6 +52,13 @@ export default class Header extends HeaderBase {
51
52
  ) {
52
53
  this.shouldRender = true;
53
54
  }
55
+
56
+ if (this.shouldRender && window.location.pathname.includes("/docs/")) {
57
+ if (!this.brand && !this.mobile) {
58
+ this.shouldRender = false;
59
+ this.showDocDivider = true;
60
+ }
61
+ }
54
62
  }
55
63
 
56
64
  disconnectedCallback(): void {
@@ -0,0 +1,64 @@
1
+ @import "dxHelpers/reset";
2
+
3
+ /* NOTE: doc-version-picker-width width variable is used by both dx-button and dx-dropdown to maintain a consistent width. */
4
+ :host {
5
+ --dx-c-dropdown-option-font-weight: normal;
6
+ --dx-c-dropdown-option-label-color: var(--dx-g-gray-10);
7
+ --popover-container-open-transform: translateY(4px);
8
+ }
9
+
10
+ .version-picker-container {
11
+ padding: 8px var(--dx-g-spacing-lg) 8px
12
+ var(--dx-g-global-header-padding-horizontal);
13
+ border-top: 1px solid var(--dx-g-gray-90);
14
+ border-bottom: 1px solid var(--dx-g-gray-90);
15
+ }
16
+
17
+ .version-picker-button {
18
+ display: flex;
19
+ width: var(--doc-version-picker-width, 296px);
20
+ }
21
+
22
+ .version-picker-button:hover,
23
+ .version-picker-button:active,
24
+ .version-picker-button:focus {
25
+ --dx-c-button-secondary-color-hover: var(--dx-g-cloud-blue-vibrant-95);
26
+ --dx-c-button-primary-color: var(--dx-g-blue-vibrant-40);
27
+ }
28
+
29
+ /**
30
+ * NOTE: This CSS ensures the span inside the button stays within the parent's width, avoiding overflow.
31
+ * Not keeping this in common component to ensure that existing functionality works as it is.
32
+ */
33
+ dx-button::part(content) {
34
+ width: inherit;
35
+ overflow: hidden;
36
+ }
37
+
38
+ .selected-version {
39
+ display: flex;
40
+ flex-direction: row;
41
+ align-items: center;
42
+ }
43
+
44
+ .selected-version-label {
45
+ flex: 1;
46
+ overflow: hidden;
47
+ text-align: left;
48
+ text-overflow: ellipsis;
49
+ white-space: nowrap;
50
+ }
51
+
52
+ dx-type-badge.latest-badge {
53
+ --dx-c-type-badge-color: var(--dx-g-green-vibrant-40);
54
+ --dx-c-type-badge-background: var(--dx-g-green-vibrant-95);
55
+
56
+ margin-left: var(--dx-g-spacing-sm);
57
+ }
58
+
59
+ dx-type-badge.not-latest-badge {
60
+ --dx-c-type-badge-color: var(--dx-g-red-vibrant-40);
61
+ --dx-c-type-badge-background: var(--dx-g-red-vibrant-95);
62
+
63
+ margin-left: var(--dx-g-spacing-sm);
64
+ }
@@ -0,0 +1,37 @@
1
+ <template>
2
+ <div if:true={showVersionPicker} class="version-picker-container">
3
+ <dx-dropdown
4
+ options={versions}
5
+ value={selectedVersion.id}
6
+ width="var(--doc-version-picker-width)"
7
+ >
8
+ <dx-button
9
+ class="version-picker-button"
10
+ variant="tertiary"
11
+ size="small"
12
+ icon-symbol="chevrondown"
13
+ icon-size="medium"
14
+ >
15
+ <div class="selected-version">
16
+ <p class="selected-version-label">
17
+ {selectedVersion.label}
18
+ </p>
19
+ <template if:false={hideBadge}>
20
+ <dx-type-badge
21
+ class="latest-badge"
22
+ if:true={latestVersion}
23
+ value="Latest"
24
+ size="small"
25
+ ></dx-type-badge>
26
+ <dx-type-badge
27
+ class="not-latest-badge"
28
+ if:false={latestVersion}
29
+ value="Not Latest"
30
+ size="small"
31
+ ></dx-type-badge>
32
+ </template>
33
+ </div>
34
+ </dx-button>
35
+ </dx-dropdown>
36
+ </div>
37
+ </template>
@@ -0,0 +1,57 @@
1
+ import { LightningElement, api } from "lwc";
2
+
3
+ import { AnalyticsPayload, OptionWithNested } from "typings/custom";
4
+
5
+ import { toJson, normalizeBoolean } from "dxUtils/normalizers";
6
+
7
+ export default class VersionPicker extends LightningElement {
8
+ @api analyticsEvent?: string;
9
+ @api analyticsPayload?: AnalyticsPayload;
10
+
11
+ private _versions!: OptionWithNested[];
12
+ private _selectedVersion?: OptionWithNested;
13
+ private _latestVersion: boolean = false;
14
+ private _hideBadge: boolean = false;
15
+
16
+ @api
17
+ get versions() {
18
+ return this._versions;
19
+ }
20
+
21
+ set versions(value: OptionWithNested[]) {
22
+ this._versions = toJson(value);
23
+ }
24
+
25
+ @api
26
+ get selectedVersion(): OptionWithNested | undefined {
27
+ return this._selectedVersion || this.versions[0];
28
+ }
29
+
30
+ set selectedVersion(value: OptionWithNested) {
31
+ if (value) {
32
+ this._selectedVersion = toJson(value);
33
+ }
34
+ }
35
+
36
+ @api
37
+ get latestVersion() {
38
+ return this._latestVersion;
39
+ }
40
+
41
+ set latestVersion(value) {
42
+ this._latestVersion = normalizeBoolean(value);
43
+ }
44
+
45
+ @api
46
+ get hideBadge() {
47
+ return this._hideBadge;
48
+ }
49
+
50
+ set hideBadge(value) {
51
+ this._hideBadge = normalizeBoolean(value);
52
+ }
53
+
54
+ private get showVersionPicker() {
55
+ return this._versions && this._versions.length !== 0;
56
+ }
57
+ }
@@ -4,17 +4,8 @@
4
4
  }
5
5
 
6
6
  doc-content-layout {
7
- --dx-c-content-sidebar-sticky-top: calc(
8
- var(--dx-g-global-header-height) +
9
- var(--dx-g-doc-header-main-nav-height)
10
- );
11
- --dx-c-sidebar-height: calc(
12
- 100vh -
13
- calc(
14
- var(--dx-g-global-header-height) +
15
- var(--dx-g-doc-header-main-nav-height)
16
- )
17
- );
7
+ --dx-c-content-sidebar-sticky-top: var(--dx-g-global-header-height);
8
+ --dx-c-sidebar-height: calc(100vh - var(--dx-g-global-header-height));
18
9
  }
19
10
 
20
11
  doc-breadcrumbs {
@@ -40,13 +31,24 @@ dx-dropdown > dx-button:hover {
40
31
  --border-color: var(--button-primary-color-hover);
41
32
  }
42
33
 
43
- .document-pickers {
44
- margin-left: auto;
45
- margin-right: var(--dx-g-spacing-sm);
46
- }
47
-
48
34
  doc-phase {
49
- --doc-c-phase-top: calc(
50
- var(--dx-g-global-header-height) + var(--dx-g-doc-header-height)
51
- );
35
+ --doc-c-phase-top: var(--dx-g-global-header-height);
36
+ }
37
+
38
+ @media screen and (max-width: 768px) {
39
+ doc-content-layout {
40
+ --dx-g-doc-header-main-nav-height: 41px;
41
+ --dx-g-doc-header-height: calc(
42
+ var(--dx-g-doc-header-main-nav-height) + 40px
43
+ );
44
+ --dx-c-content-sidebar-sticky-top: calc(
45
+ var(--dx-g-global-header-height) + var(--dx-g-doc-header-height)
46
+ );
47
+ }
48
+
49
+ doc-phase {
50
+ --doc-c-phase-top: calc(
51
+ var(--dx-g-global-header-height) + var(--dx-g-doc-header-height)
52
+ );
53
+ }
52
54
  }
@@ -6,11 +6,12 @@
6
6
  coveo-analytics-token={coveoAnalyticsToken}
7
7
  coveo-search-hub={coveoSearchHub}
8
8
  coveo-advanced-query-config={coveoAdvancedQueryConfig}
9
- sidebar-header="Pages"
9
+ sidebar-header={docTitle}
10
10
  sidebar-content={sidebarContent}
11
11
  sidebar-value={sidebarValue}
12
12
  onselect={handleSelect}
13
13
  use-old-sidebar={useOldSidebar}
14
+ onlangchange={handleLanguageChange}
14
15
  languages={sidebarFooterContent.languages}
15
16
  language={sidebarFooterContent.language}
16
17
  bail-href={sidebarFooterContent.bailHref}
@@ -24,19 +25,16 @@
24
25
  dismissible="true"
25
26
  ondismissphase={handleDismissVersionBanner}
26
27
  ></doc-phase>
27
- <div slot="sidebar-header" class="document-pickers">
28
- <dx-dropdown
28
+ <div if:false={disableVersion} slot="sidebar-header">
29
+ <doc-version-picker
29
30
  data-type="version"
30
31
  analytics-event="custEv_ctaLinkClick"
31
32
  analytics-payload={ANALYTICS_PAYLOAD}
32
- options={versionOptions}
33
- value={version.id}
34
- width="290px"
35
- >
36
- <dx-button variant="inline" disabled={disableVersion}>
37
- {version.releaseVersion}
38
- </dx-button>
39
- </dx-dropdown>
33
+ versions={versionOptions}
34
+ selected-version={version}
35
+ latest-version={latestVersion}
36
+ hide-badge={previewVersion}
37
+ ></doc-version-picker>
40
38
  </div>
41
39
  <doc-breadcrumbs
42
40
  if:true={showBreadcrumbs}
@@ -81,6 +81,8 @@ export default class DocXmlContent extends LightningElementWithState<{
81
81
  private listenerAttached = false;
82
82
  private _enableCoveo?: boolean = false;
83
83
  private sidebarFooterContent: SiderbarFooter = { ...defaultSidebarFooter };
84
+ private latestVersion = false;
85
+ private previewVersion = false;
84
86
 
85
87
  private searchSyncer = new SearchSyncer({
86
88
  callbacks: {
@@ -135,6 +137,10 @@ export default class DocXmlContent extends LightningElementWithState<{
135
137
  try {
136
138
  if (parseFloat(this.version.id) < parseFloat(versionNo)) {
137
139
  info = oldVersionDocInfo(currentGAVersion.link.href);
140
+ } else if (
141
+ parseFloat(this.version.id) > parseFloat(versionNo)
142
+ ) {
143
+ this.previewVersion = true;
138
144
  }
139
145
  } catch (exception) {
140
146
  /* Ideally this use case should not happen, but just added to not to break the page*/
@@ -477,6 +483,8 @@ export default class DocXmlContent extends LightningElementWithState<{
477
483
 
478
484
  if (this.oldVersionInfo) {
479
485
  this.showVersionBanner = true;
486
+ } else {
487
+ this.latestVersion = true;
480
488
  }
481
489
 
482
490
  if (