@salesforcedevs/docs-components 1.34.3-final-alpha → 1.34.3-fix-alpha
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 +1 -1
- package/src/modules/doc/breadcrumbs/breadcrumbs.css +1 -0
- package/src/modules/doc/contentActionToolbar/contentActionToolbar.ts +12 -12
- package/src/modules/doc/nav/nav.css +1 -1
- package/src/modules/doc/unifiedContentLayout/unifiedContentLayout.ts +5 -42
- package/src/modules/doc/versionPicker/versionPicker.css +30 -48
- package/src/modules/doc/versionPicker/versionPicker.html +1 -1
package/package.json
CHANGED
|
@@ -127,26 +127,26 @@ export default class ContentActionToolbar extends LightningElement {
|
|
|
127
127
|
{
|
|
128
128
|
id: ACTION_COPY_MARKDOWN,
|
|
129
129
|
label: COPY_MARKDOWN_LABEL,
|
|
130
|
-
|
|
131
|
-
|
|
130
|
+
endIconSprite: "utility",
|
|
131
|
+
endIconSymbol: "copy"
|
|
132
132
|
},
|
|
133
133
|
{
|
|
134
134
|
id: ACTION_VIEW_MARKDOWN,
|
|
135
135
|
label: VIEW_MARKDOWN_LABEL,
|
|
136
|
-
|
|
137
|
-
|
|
136
|
+
endIconSprite: "utility",
|
|
137
|
+
endIconSymbol: "new_window"
|
|
138
138
|
},
|
|
139
139
|
{
|
|
140
140
|
id: ACTION_COPY_MARKDOWN_URL,
|
|
141
141
|
label: COPY_MARKDOWN_URL_LABEL,
|
|
142
|
-
|
|
143
|
-
|
|
142
|
+
endIconSprite: "utility",
|
|
143
|
+
endIconSymbol: "link"
|
|
144
144
|
},
|
|
145
145
|
...AI_ASSISTANTS.map(({ action, label }) => ({
|
|
146
146
|
id: action,
|
|
147
147
|
label,
|
|
148
|
-
|
|
149
|
-
|
|
148
|
+
endIconSprite: "utility",
|
|
149
|
+
endIconSymbol: "new_window"
|
|
150
150
|
}))
|
|
151
151
|
]
|
|
152
152
|
});
|
|
@@ -159,14 +159,14 @@ export default class ContentActionToolbar extends LightningElement {
|
|
|
159
159
|
{
|
|
160
160
|
id: ACTION_VIEW_LLMS,
|
|
161
161
|
label: VIEW_LLMS_LABEL,
|
|
162
|
-
|
|
163
|
-
|
|
162
|
+
endIconSprite: "utility",
|
|
163
|
+
endIconSymbol: "new_window"
|
|
164
164
|
},
|
|
165
165
|
{
|
|
166
166
|
id: ACTION_COPY_LLMS_URL,
|
|
167
167
|
label: COPY_LLMS_URL_LABEL,
|
|
168
|
-
|
|
169
|
-
|
|
168
|
+
endIconSprite: "utility",
|
|
169
|
+
endIconSymbol: "link"
|
|
170
170
|
}
|
|
171
171
|
]
|
|
172
172
|
});
|
|
@@ -16,36 +16,13 @@ import type { DocPhaseInfo, OptionWithLink, TreeNode } from "typings/custom";
|
|
|
16
16
|
*/
|
|
17
17
|
const TOPIC_TYPE_SPEC = "spec";
|
|
18
18
|
|
|
19
|
-
/**
|
|
20
|
-
* Walks down the first-child chain and returns the first markdown content
|
|
21
|
-
* page found, descending through nested content-less parents. Returns
|
|
22
|
-
* undefined if the chain breaks on a spec or external link before reaching a
|
|
23
|
-
* content page.
|
|
24
|
-
*/
|
|
25
|
-
function firstChildContentPage(node: TreeNode): TreeNode | undefined {
|
|
26
|
-
const firstChild = node.children?.[0];
|
|
27
|
-
if (!firstChild) {
|
|
28
|
-
return undefined;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
const isSpec =
|
|
32
|
-
(firstChild as { topicType?: string }).topicType === TOPIC_TYPE_SPEC;
|
|
33
|
-
const isExternal = firstChild.link?.target === "_blank";
|
|
34
|
-
if (isSpec || isExternal) {
|
|
35
|
-
return undefined;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
if (firstChild.link?.href) {
|
|
39
|
-
return firstChild;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
return firstChildContentPage(firstChild);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
19
|
/**
|
|
46
20
|
* Translates per-topic `topicType` into the generic `showForwardArrow` flag
|
|
47
|
-
* that `dx-tree-tile` reads (spec topics get the forward arrow icon for Redoc)
|
|
48
|
-
*
|
|
21
|
+
* that `dx-tree-tile` reads (spec topics get the forward arrow icon for Redoc).
|
|
22
|
+
*
|
|
23
|
+
* Content-less parents are left without a link. The tree treats them as
|
|
24
|
+
* parent-only sections and selects the first markdown descendant. Copying that
|
|
25
|
+
* child's href onto the parent makes the parent win selection.
|
|
49
26
|
*/
|
|
50
27
|
function decorateTopicsWithForwardArrow(
|
|
51
28
|
topics:
|
|
@@ -67,20 +44,6 @@ function decorateTopicsWithForwardArrow(
|
|
|
67
44
|
);
|
|
68
45
|
}
|
|
69
46
|
|
|
70
|
-
/** Redirect a parent that has no content of its own to its first child
|
|
71
|
-
* but only when that first child is itself a content page
|
|
72
|
-
*/
|
|
73
|
-
const isContentlessParent =
|
|
74
|
-
!!decorated.children?.length && !decorated.link?.href;
|
|
75
|
-
|
|
76
|
-
if (isContentlessParent) {
|
|
77
|
-
decorated.redirectToChild = true;
|
|
78
|
-
const firstChild = firstChildContentPage(topic);
|
|
79
|
-
if (firstChild?.link) {
|
|
80
|
-
decorated.link = { ...firstChild.link };
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
47
|
return decorated;
|
|
85
48
|
});
|
|
86
49
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
@import "dxHelpers/reset";
|
|
2
2
|
|
|
3
|
-
/*
|
|
3
|
+
/* The large picker fills its row (the sidebar sets the row padding). The small
|
|
4
|
+
menu stops at --doc-version-picker-width, which the sidebar sets. */
|
|
4
5
|
:host {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
--dx-c-popover-padding: var(--dx-g-spacing-sm) 0;
|
|
6
|
+
display: block;
|
|
7
|
+
|
|
8
|
+
/* Menu labels wrap; break long unspaced labels instead of overflowing. */
|
|
9
|
+
--dx-c-dropdown-option-overflow-wrap: anywhere;
|
|
10
10
|
--popover-container-open-transform: translateY(4px);
|
|
11
11
|
}
|
|
12
12
|
|
|
@@ -47,16 +47,31 @@
|
|
|
47
47
|
|
|
48
48
|
.version-picker-button {
|
|
49
49
|
display: flex;
|
|
50
|
-
width:
|
|
50
|
+
width: 100%;
|
|
51
51
|
|
|
52
52
|
--dx-c-button-horizontal-spacing: var(--dx-g-spacing-sm);
|
|
53
|
-
--dx-
|
|
53
|
+
--dx-c-button-icon-color: var(--dx-g-gray-50);
|
|
54
|
+
|
|
55
|
+
/* A real 1px border at rest. Hover and the open menu turn it dark blue and
|
|
56
|
+
add a 1px inset shadow, so the edge looks 2px without resizing. */
|
|
57
|
+
--dx-c-button-custom-color: var(--dx-g-gray-10);
|
|
58
|
+
--dx-c-button-custom-color-hover: var(--dx-g-gray-10);
|
|
59
|
+
--dx-c-button-custom-background: white;
|
|
60
|
+
--dx-c-button-custom-background-hover: var(--dx-g-blue-vibrant-95);
|
|
61
|
+
--dx-c-button-custom-border: var(--dx-g-gray-50);
|
|
62
|
+
--dx-c-button-custom-border-hover: var(--dx-g-blue-vibrant-20);
|
|
63
|
+
--dx-c-button-custom-border-shadow-hover: inset 0 0 0 1px
|
|
64
|
+
var(--dx-g-blue-vibrant-20);
|
|
65
|
+
|
|
66
|
+
/* Keyboard focus keeps the 2px edge inside the white band. */
|
|
67
|
+
--dx-c-button-focus-shadow: inset 0 0 0 1px var(--dx-g-blue-vibrant-20),
|
|
68
|
+
0 0 0 2px white;
|
|
54
69
|
}
|
|
55
70
|
|
|
56
71
|
.version-picker-button:hover,
|
|
57
72
|
.version-picker-button:focus-within,
|
|
58
73
|
.version-picker-button[aria-expanded="true"] {
|
|
59
|
-
--dx-
|
|
74
|
+
--dx-c-button-icon-color: var(--dx-g-blue-vibrant-20);
|
|
60
75
|
}
|
|
61
76
|
|
|
62
77
|
/**
|
|
@@ -68,27 +83,6 @@ dx-button::part(content) {
|
|
|
68
83
|
overflow: hidden;
|
|
69
84
|
}
|
|
70
85
|
|
|
71
|
-
/* The border is an inset box-shadow so thickening it on hover/focus doesn't
|
|
72
|
-
resize the small variant's fit-content box. */
|
|
73
|
-
.version-picker-button::part(container) {
|
|
74
|
-
background: white;
|
|
75
|
-
box-shadow: inset 0 0 0 1px var(--dx-g-gray-50);
|
|
76
|
-
color: var(--dx-g-gray-10);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
.version-picker-button::part(container):hover {
|
|
80
|
-
background: var(--dx-g-blue-vibrant-95);
|
|
81
|
-
box-shadow: inset 0 0 0 2px var(--dx-g-blue-vibrant-20);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/* aria-expanded keeps the focus ring while the menu is open. */
|
|
85
|
-
.version-picker-button:focus-within::part(container),
|
|
86
|
-
.version-picker-button[aria-expanded="true"]::part(container) {
|
|
87
|
-
background: var(--dx-g-blue-vibrant-95);
|
|
88
|
-
box-shadow: inset 0 0 0 2px var(--dx-g-blue-vibrant-20), 0 0 0 2px white,
|
|
89
|
-
0 0 0 4px var(--dx-g-blue-vibrant-60);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
86
|
.selected-version {
|
|
93
87
|
display: flex;
|
|
94
88
|
flex-direction: row;
|
|
@@ -112,24 +106,11 @@ dx-type-badge.not-latest-badge {
|
|
|
112
106
|
* Small "dot" variant (opt-in via `small`). Additive
|
|
113
107
|
* ------------------------------------------------------------------ */
|
|
114
108
|
|
|
115
|
-
/*
|
|
116
|
-
|
|
109
|
+
/* The small menu hugs its longest label but never grows wider than the sidebar
|
|
110
|
+
content (--doc-version-picker-width, set by the sidebar). Labels wrap only at
|
|
111
|
+
that width. The large menu always matches its trigger (width-mode="full"). */
|
|
117
112
|
.version-picker-dropdown-small {
|
|
118
|
-
--dx-c-dropdown-option-font-size: var(--dx-g-text-xs);
|
|
119
|
-
--dx-c-dropdown-option-padding: var(--dx-g-spacing-sm)
|
|
120
|
-
var(--dx-g-spacing-sm);
|
|
121
|
-
--dx-c-dropdown-option-border-radius: 0;
|
|
122
|
-
--dx-c-popover-border: none;
|
|
123
|
-
|
|
124
|
-
/* Hug the labels (down to the shortest) but never wider than the ToC
|
|
125
|
-
content: 296px on desktop, and on the smallest breakpoint the sidebar
|
|
126
|
-
variable grows with the viewport up to 720px. Long labels wrap inside
|
|
127
|
-
that cap. */
|
|
128
113
|
--dx-c-dropdown-menu-max-width: var(--doc-version-picker-width, 296px);
|
|
129
|
-
--dx-c-dropdown-fit-white-space: normal;
|
|
130
|
-
--dx-c-dropdown-fit-overflow: hidden;
|
|
131
|
-
--dx-c-dropdown-fit-text-overflow: clip;
|
|
132
|
-
--dx-c-dropdown-option-overflow-wrap: anywhere;
|
|
133
114
|
}
|
|
134
115
|
|
|
135
116
|
.version-picker-button-small {
|
|
@@ -154,7 +135,8 @@ dx-type-badge.not-latest-badge {
|
|
|
154
135
|
}
|
|
155
136
|
|
|
156
137
|
/* width:100% re-ties to the 104px-capped host (container is width:inherit,
|
|
157
|
-
which copies width but not max-width). Border
|
|
138
|
+
which copies width but not max-width). Border, fill, and states come from the
|
|
139
|
+
dx-button hooks on .version-picker-button. */
|
|
158
140
|
.version-picker-button-small::part(container) {
|
|
159
141
|
width: 100%;
|
|
160
142
|
height: var(--dx-g-spacing-lg);
|
|
@@ -186,7 +168,7 @@ dx-type-badge.not-latest-badge {
|
|
|
186
168
|
.version-picker-readonly {
|
|
187
169
|
box-sizing: border-box;
|
|
188
170
|
display: inline-block;
|
|
189
|
-
width:
|
|
171
|
+
width: 100%;
|
|
190
172
|
height: var(--dx-g-spacing-xl);
|
|
191
173
|
margin: 0;
|
|
192
174
|
padding: 0 var(--dx-g-spacing-sm);
|