@salesforcedevs/docs-components 1.3.228-version-picker3 → 1.3.242-dc-alpha3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesforcedevs/docs-components",
3
- "version": "1.3.228-version-picker3",
3
+ "version": "1.3.242-dc-alpha3",
4
4
  "description": "Docs Lightning web components for DSC",
5
5
  "license": "MIT",
6
6
  "main": "index.js",
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <doc-content-layout
3
- if:true={isVersionFetched}
3
+ lwc:if={isVersionFetched}
4
4
  use-old-sidebar={useOldSidebar}
5
5
  class="content-type content-type-reference"
6
6
  coveo-organization-id={coveoOrganizationId}
@@ -19,21 +19,22 @@
19
19
  enable-slot-change="true"
20
20
  languages={languages}
21
21
  language={language}
22
+ show-footer={enableFooter}
22
23
  >
23
24
  <doc-phase
24
25
  slot="doc-phase"
25
- if:true={docPhaseInfo}
26
+ lwc:if={docPhaseInfo}
26
27
  doc-phase-info={docPhaseInfo}
27
28
  ></doc-phase>
28
29
  <doc-phase
29
30
  slot="version-banner"
30
- if:true={showVersionBanner}
31
+ lwc:if={showVersionBanner}
31
32
  doc-phase-info={oldVersionInfo}
32
33
  icon-name="warning"
33
34
  dismissible="true"
34
35
  ondismissphase={handleDismissVersionBanner}
35
36
  ></doc-phase>
36
- <div if:true={isVersionEnabled} slot="sidebar-header">
37
+ <div lwc:if={isVersionEnabled} slot="sidebar-header">
37
38
  <doc-version-picker
38
39
  onchange={handleVersionChange}
39
40
  data-type="version"
@@ -42,18 +43,18 @@
42
43
  latest-version={latestVersion}
43
44
  ></doc-version-picker>
44
45
  </div>
45
- <template if:false={showSpecBasedReference}>
46
- <slot></slot>
47
- </template>
48
- <template if:true={showSpecBasedReference}>
46
+ <template lwc:if={showSpecBasedReference}>
49
47
  <div class="container">
50
48
  <div class="api-documentation">
51
49
  <doc-amf-topic
52
- if:true={topicModel}
50
+ lwc:if={topicModel}
53
51
  model={topicModel}
54
52
  ></doc-amf-topic>
55
53
  </div>
56
54
  </div>
57
55
  </template>
56
+ <template lwc:else>
57
+ <slot></slot>
58
+ </template>
58
59
  </doc-content-layout>
59
60
  </template>
@@ -50,6 +50,7 @@ export default class AmfReference extends LightningElement {
50
50
  @api tocOptions?: string;
51
51
  @api languages!: OptionWithLink[];
52
52
  @api language!: string;
53
+ @api hideFooter = false;
53
54
  @track navigation = [] as NavigationItem[];
54
55
  @track versions: Array<ReferenceVersion> = [];
55
56
  @track showVersionBanner = false;
@@ -184,6 +185,10 @@ export default class AmfReference extends LightningElement {
184
185
  this._coveoAdvancedQueryConfig = toJson(config);
185
186
  }
186
187
 
188
+ private get enableFooter(): boolean {
189
+ return !this.hideFooter;
190
+ }
191
+
187
192
  // model
188
193
  protected _amfConfigList: AmfConfig[] = [];
189
194
  protected _amfConfigMap: Map<string, AmfConfig> = new Map();
@@ -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 {
@@ -70,7 +71,7 @@ dx-toc {
70
71
  }
71
72
 
72
73
  .content-body {
73
- margin: var(--dx-g-spacing-sm) 0 0;
74
+ margin: var(--dx-g-spacing-md) 0 0;
74
75
  max-width: 900px;
75
76
  flex: 1;
76
77
  width: 0;
@@ -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 {
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div class="content">
3
- <template if:true={useOldSidebar}>
3
+ <template lwc:if={useOldSidebar}>
4
4
  <dx-sidebar-old
5
5
  class="is-sticky left-nav-bar"
6
6
  trees={sidebarContent}
@@ -15,7 +15,7 @@
15
15
  <slot name="sidebar-header" slot="version-picker"></slot>
16
16
  </dx-sidebar-old>
17
17
  </template>
18
- <template if:false={useOldSidebar}>
18
+ <template lwc:else>
19
19
  <dx-sidebar
20
20
  class="is-sticky left-nav-bar"
21
21
  trees={sidebarContent}
@@ -40,15 +40,15 @@
40
40
  <div class="content-body-container">
41
41
  <div class="content-body">
42
42
  <doc-breadcrumbs
43
- if:true={showBreadcrumbs}
43
+ lwc:if={showBreadcrumbs}
44
44
  breadcrumbs={breadcrumbs}
45
45
  ></doc-breadcrumbs>
46
46
  <slot onslotchange={onSlotChange}></slot>
47
47
  <doc-sprig-survey
48
- if:true={shouldDisplayFeedback}
48
+ lwc:if={shouldDisplayFeedback}
49
49
  ></doc-sprig-survey>
50
50
  </div>
51
- <div if:true={showToc} class="right-nav-bar is-sticky">
51
+ <div lwc:if={showToc} class="right-nav-bar is-sticky">
52
52
  <dx-toc
53
53
  title={tocTitle}
54
54
  options={tocOptions}
@@ -56,7 +56,7 @@
56
56
  ></dx-toc>
57
57
  </div>
58
58
  </div>
59
- <div class="footer-container">
59
+ <div lwc:if={showFooter} class="footer-container">
60
60
  <dx-footer variant="no-signup"></dx-footer>
61
61
  </div>
62
62
  </div>
@@ -42,6 +42,9 @@ export default class ContentLayout extends LightningElement {
42
42
  @api bailHref!: string;
43
43
  @api bailLabel!: string;
44
44
 
45
+ // This is needed for now to prevent failing snapshot tests due to links in the footer
46
+ @api showFooter = false;
47
+
45
48
  @api
46
49
  get breadcrumbs() {
47
50
  return this._breadcrumbs;
@@ -4,11 +4,37 @@ dx-logo {
4
4
  min-width: fit-content;
5
5
  }
6
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 */
29
+ }
30
+
7
31
  .header_l2 {
8
32
  justify-content: space-between;
9
33
  height: var(--dx-g-doc-header-main-nav-height);
10
- padding-bottom: var(--dx-g-spacing-xs);
11
- background: white;
34
+ }
35
+
36
+ .has-brand .header_l2 {
37
+ height: var(--dx-g-spacing-3xl);
12
38
  }
13
39
 
14
40
  .nav_menu-button {
@@ -35,7 +61,6 @@ header:not(.has-brand) > .header_l1 {
35
61
  header:not(.has-brand) > .header_l2 {
36
62
  border-bottom: 1px solid var(--dx-g-gray-90);
37
63
  border-top: 1px solid var(--dx-g-gray-90);
38
- padding-bottom: var(--dx-g-spacing-lg);
39
64
  }
40
65
 
41
66
  .header_l2_group.header_l2_group-right-ctas {
@@ -43,7 +68,13 @@ header:not(.has-brand) > .header_l2 {
43
68
  }
44
69
 
45
70
  .has-brand .header_l2_group-title {
46
- padding-bottom: calc(var(--dx-g-spacing-md) + 2px);
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;
74
+ }
75
+
76
+ .no-header-content {
77
+ border-top: 1px solid var(--dx-g-gray-90);
47
78
  }
48
79
 
49
80
  @media (max-width: 768px) {
@@ -61,37 +92,41 @@ header:not(.has-brand) > .header_l2 {
61
92
  width: 100%;
62
93
  }
63
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
+
64
102
  .header_l2_group-nav {
65
103
  height: var(--dx-g-spacing-3xl);
66
104
  padding: 0;
67
- padding-left: var(--dx-g-spacing-sm);
105
+ margin-top: calc(var(--dx-g-spacing-2xs) + 1px);
68
106
  }
69
107
 
70
108
  .header_l2_group-nav_overflow {
71
- height: 48px;
109
+ height: var(--dx-g-spacing-3xl);
72
110
  margin-right: var(--dx-g-spacing-sm);
73
111
  }
74
112
 
75
- .has-brand .header_l2_group-title {
76
- padding-bottom: var(--dx-g-spacing-smd);
113
+ .subtitle {
114
+ font-weight: var(--dx-g-font-demi);
115
+ letter-spacing: -0.08px;
77
116
  }
78
117
 
79
- .header_l2_group-title {
118
+ .has-brand .header_l2_group-title {
80
119
  margin-right: 0;
81
- padding: var(--dx-g-spacing-smd)
120
+ padding: var(--dx-g-spacing-sm) 0 var(--dx-g-spacing-2xs)
82
121
  var(--dx-g-global-header-padding-horizontal);
83
- min-height: var(--dx-g-doc-header-main-nav-height);
84
122
  }
85
123
 
86
124
  .has-scoped-nav-items > .header_l2 {
87
125
  height: unset;
88
126
  }
89
127
 
90
- .has-scoped-nav-items .header_l2_group-title {
91
- border-bottom: 1px solid var(--dx-g-gray-90);
92
- }
93
-
94
128
  header:not(.has-brand) > .header_l2 {
95
129
  padding-bottom: 0;
130
+ border: 0;
96
131
  }
97
132
  }
@@ -1,28 +1,36 @@
1
1
  <template>
2
- <template if:true={shouldRender}>
2
+ <template lwc:if={shouldRender}>
3
3
  <dx-brand-theme-provider brand={brand}>
4
4
  <header class={className}>
5
5
  <dx-banner
6
- if:true={showBanner}
6
+ lwc:if={showBanner}
7
7
  banner-markup={bannerMarkup}
8
8
  ></dx-banner>
9
+ <div lwc:if={devCenter} class="dev-center-link">
10
+ <a href={devCenter.link} class="dev-center-content">
11
+ <dx-icon symbol="back"></dx-icon>
12
+ <dx-icon
13
+ class="brand-icon"
14
+ lwc:if={devCenter.icon}
15
+ sprite="salesforcebrand"
16
+ symbol={brand}
17
+ size="large"
18
+ ></dx-icon>
19
+ <span class="subtitle dx-text-body-4">
20
+ {devCenter.title}
21
+ </span>
22
+ </a>
23
+ </div>
9
24
  <div class="header_l2">
10
25
  <div class="header_l2_group header_l2_group-title">
11
26
  <a href={headerHref} class="home-link">
12
- <dx-icon
13
- class="brand-icon"
14
- if:true={isValidBrand}
15
- sprite="salesforcebrand"
16
- symbol={brand}
17
- size="large"
18
- ></dx-icon>
19
27
  <span class="subtitle dx-text-display-7">
20
28
  {subtitle}
21
29
  </span>
22
30
  </a>
23
31
  </div>
24
32
  <div
25
- if:true={hasScopedNavItems}
33
+ lwc:if={hasScopedNavItems}
26
34
  class="header_l2_group header_l2_group-nav"
27
35
  >
28
36
  <div
@@ -40,4 +48,7 @@
40
48
  </header>
41
49
  </dx-brand-theme-provider>
42
50
  </template>
51
+ <template lwc:if={showDocDivider}>
52
+ <div class="no-header-content"></div>
53
+ </template>
43
54
  </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.
@@ -20,10 +20,21 @@ export default class Header extends HeaderBase {
20
20
  this._scopedNavItems = toJson(value);
21
21
  }
22
22
 
23
+ @api
24
+ get devCenter() {
25
+ return this._devCenter;
26
+ }
27
+
28
+ set devCenter(value) {
29
+ this._devCenter = toJson(value);
30
+ }
31
+
23
32
  private _scopedNavItems!: OptionWithNested[];
24
33
  private tablet = false;
25
34
  private tabletMatchMedia!: MediaQueryList;
26
- private shouldRender = false;
35
+ private shouldRender: boolean = false;
36
+ private showDocDivider: boolean = false;
37
+ private _devCenter: any;
27
38
 
28
39
  protected mobileBreakpoint(): string {
29
40
  return MOBILE_MATCH;
@@ -51,6 +62,13 @@ export default class Header extends HeaderBase {
51
62
  ) {
52
63
  this.shouldRender = true;
53
64
  }
65
+
66
+ if (this.shouldRender && window.location.pathname.includes("/docs/")) {
67
+ if (!this.brand && !this.mobile) {
68
+ this.shouldRender = false;
69
+ this.showDocDivider = true;
70
+ }
71
+ }
54
72
  }
55
73
 
56
74
  disconnectedCallback(): void {
@@ -1,9 +1,10 @@
1
1
  <template>
2
- <div if:true={showVersionPicker} class="version-picker-container">
2
+ <div lwc:if={showVersionPicker} class="version-picker-container">
3
3
  <dx-dropdown
4
4
  options={versions}
5
5
  value={selectedVersion.id}
6
6
  width="var(--doc-version-picker-width)"
7
+ onchange={onVersionChange}
7
8
  >
8
9
  <dx-button
9
10
  class="version-picker-button"
@@ -16,16 +17,16 @@
16
17
  <p class="selected-version-label">
17
18
  {selectedVersion.label}
18
19
  </p>
19
- <template if:false={hideBadge}>
20
+ <template lwc:if={showLatestTag}>
20
21
  <dx-type-badge
21
22
  class="latest-badge"
22
- if:true={latestVersion}
23
+ lwc:if={latestVersion}
23
24
  value="Latest"
24
25
  size="small"
25
26
  ></dx-type-badge>
26
27
  <dx-type-badge
27
28
  class="not-latest-badge"
28
- if:false={latestVersion}
29
+ lwc:else
29
30
  value="Not Latest"
30
31
  size="small"
31
32
  ></dx-type-badge>
@@ -1,4 +1,4 @@
1
- import { LightningElement, api } from "lwc";
1
+ import { LightningElement, api, track } from "lwc";
2
2
 
3
3
  import { AnalyticsPayload, OptionWithNested } from "typings/custom";
4
4
 
@@ -8,7 +8,7 @@ export default class VersionPicker extends LightningElement {
8
8
  @api analyticsEvent?: string;
9
9
  @api analyticsPayload?: AnalyticsPayload;
10
10
 
11
- private _versions!: OptionWithNested[];
11
+ @track private _versions!: OptionWithNested[];
12
12
  private _selectedVersion?: OptionWithNested;
13
13
  private _latestVersion: boolean = false;
14
14
  private _hideBadge: boolean = false;
@@ -54,4 +54,12 @@ export default class VersionPicker extends LightningElement {
54
54
  private get showVersionPicker() {
55
55
  return this._versions && this._versions.length !== 0;
56
56
  }
57
+
58
+ private get showLatestTag(): boolean {
59
+ return !this.hideBadge;
60
+ }
61
+
62
+ private onVersionChange(e: CustomEvent) {
63
+ this.dispatchEvent(new CustomEvent("change", { detail: e.detail }));
64
+ }
57
65
  }
@@ -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 {
@@ -41,7 +32,23 @@ dx-dropdown > dx-button:hover {
41
32
  }
42
33
 
43
34
  doc-phase {
44
- --doc-c-phase-top: calc(
45
- var(--dx-g-global-header-height) + var(--dx-g-doc-header-height)
46
- );
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
+ }
47
54
  }
@@ -1,30 +1,33 @@
1
1
  <template>
2
2
  <doc-content-layout
3
- if:true={loaded}
3
+ lwc:if={loaded}
4
+ lwc:ref="docContentLayout"
4
5
  coveo-organization-id={coveoOrganizationId}
5
6
  coveo-public-access-token={coveoPublicAccessToken}
6
7
  coveo-analytics-token={coveoAnalyticsToken}
7
8
  coveo-search-hub={coveoSearchHub}
8
9
  coveo-advanced-query-config={coveoAdvancedQueryConfig}
9
- sidebar-header="Pages"
10
+ sidebar-header={docTitle}
10
11
  sidebar-content={sidebarContent}
11
12
  sidebar-value={sidebarValue}
12
13
  onselect={handleSelect}
13
14
  use-old-sidebar={useOldSidebar}
15
+ onlangchange={handleLanguageChange}
14
16
  languages={sidebarFooterContent.languages}
15
17
  language={sidebarFooterContent.language}
16
18
  bail-href={sidebarFooterContent.bailHref}
17
19
  bail-label={sidebarFooterContent.bailLabel}
20
+ show-footer={enableFooter}
18
21
  >
19
22
  <doc-phase
20
23
  slot="version-banner"
21
- if:true={showVersionBanner}
24
+ lwc:if={showVersionBanner}
22
25
  doc-phase-info={oldVersionInfo}
23
26
  icon-name="warning"
24
27
  dismissible="true"
25
28
  ondismissphase={handleDismissVersionBanner}
26
29
  ></doc-phase>
27
- <div if:false={disableVersion} slot="sidebar-header">
30
+ <div lwc:if={showVersionPicker} slot="sidebar-header">
28
31
  <doc-version-picker
29
32
  data-type="version"
30
33
  analytics-event="custEv_ctaLinkClick"
@@ -36,7 +39,7 @@
36
39
  ></doc-version-picker>
37
40
  </div>
38
41
  <doc-breadcrumbs
39
- if:true={showBreadcrumbs}
42
+ lwc:if={showBreadcrumbs}
40
43
  breadcrumbs={breadcrumbs}
41
44
  pixel-per-character={breadcrumbPixelPerCharacter}
42
45
  ></doc-breadcrumbs>
@@ -44,6 +44,7 @@ export default class DocXmlContent extends LightningElementWithState<{
44
44
  @api coveoPublicAccessToken!: string;
45
45
  @api coveoAnalyticsToken!: string;
46
46
  @api coveoSearchHub!: string;
47
+ @api hideFooter = false;
47
48
 
48
49
  @api
49
50
  get allLanguages(): Array<Language> {
@@ -66,7 +67,7 @@ export default class DocXmlContent extends LightningElementWithState<{
66
67
  }
67
68
 
68
69
  private availableLanguages: Array<DocLanguage> = [];
69
- private availableVersions: Array<DocVersion> = [];
70
+ @track private availableVersions: Array<DocVersion> = [];
70
71
  private contentProvider?: FetchContent;
71
72
  private docContent = "";
72
73
  private language?: DocLanguage | null = null;
@@ -84,6 +85,10 @@ export default class DocXmlContent extends LightningElementWithState<{
84
85
  private latestVersion = false;
85
86
  private previewVersion = false;
86
87
 
88
+ private get enableFooter(): boolean {
89
+ return !this.hideFooter;
90
+ }
91
+
87
92
  private searchSyncer = new SearchSyncer({
88
93
  callbacks: {
89
94
  onSearchChange: (nextSearchString: string): void => {
@@ -578,9 +583,7 @@ export default class DocXmlContent extends LightningElementWithState<{
578
583
  }
579
584
 
580
585
  private updateSearchInput(searchParam: string): void {
581
- (
582
- this.template.querySelector("doc-content-layout") as any
583
- )?.setSidebarInputValue(searchParam);
586
+ (this.refs.docContentLayout as any)?.setSidebarInputValue(searchParam);
584
587
  }
585
588
 
586
589
  private pageReferenceToString(reference: PageReference): string {
@@ -770,4 +773,8 @@ export default class DocXmlContent extends LightningElementWithState<{
770
773
  headTag[0].appendChild(robotsMeta);
771
774
  }
772
775
  }
776
+
777
+ private get showVersionPicker(): boolean {
778
+ return !this.disableVersion;
779
+ }
773
780
  }