@salt-ds/lab 1.0.0-alpha.98 → 1.0.0-alpha.99
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/CHANGELOG.md +18 -0
- package/css/salt-lab.css +147 -1
- package/dist-cjs/breadcrumbs-next/BreadcrumbNext.css.js +6 -0
- package/dist-cjs/breadcrumbs-next/BreadcrumbNext.css.js.map +1 -0
- package/dist-cjs/breadcrumbs-next/BreadcrumbNext.js +99 -0
- package/dist-cjs/breadcrumbs-next/BreadcrumbNext.js.map +1 -0
- package/dist-cjs/breadcrumbs-next/BreadcrumbNextLabel.js +21 -0
- package/dist-cjs/breadcrumbs-next/BreadcrumbNextLabel.js.map +1 -0
- package/dist-cjs/breadcrumbs-next/BreadcrumbNextTrigger.js +55 -0
- package/dist-cjs/breadcrumbs-next/BreadcrumbNextTrigger.js.map +1 -0
- package/dist-cjs/breadcrumbs-next/BreadcrumbsNext.css.js +6 -0
- package/dist-cjs/breadcrumbs-next/BreadcrumbsNext.css.js.map +1 -0
- package/dist-cjs/breadcrumbs-next/BreadcrumbsNext.js +146 -0
- package/dist-cjs/breadcrumbs-next/BreadcrumbsNext.js.map +1 -0
- package/dist-cjs/breadcrumbs-next/internal/BreadcrumbNextContext.js +12 -0
- package/dist-cjs/breadcrumbs-next/internal/BreadcrumbNextContext.js.map +1 -0
- package/dist-cjs/breadcrumbs-next/internal/BreadcrumbOverflowDisclosure.js +236 -0
- package/dist-cjs/breadcrumbs-next/internal/BreadcrumbOverflowDisclosure.js.map +1 -0
- package/dist-cjs/breadcrumbs-next/internal/breadcrumbItems.js +21 -0
- package/dist-cjs/breadcrumbs-next/internal/breadcrumbItems.js.map +1 -0
- package/dist-cjs/index.js +8 -0
- package/dist-cjs/index.js.map +1 -1
- package/dist-es/breadcrumbs-next/BreadcrumbNext.css.js +4 -0
- package/dist-es/breadcrumbs-next/BreadcrumbNext.css.js.map +1 -0
- package/dist-es/breadcrumbs-next/BreadcrumbNext.js +97 -0
- package/dist-es/breadcrumbs-next/BreadcrumbNext.js.map +1 -0
- package/dist-es/breadcrumbs-next/BreadcrumbNextLabel.js +19 -0
- package/dist-es/breadcrumbs-next/BreadcrumbNextLabel.js.map +1 -0
- package/dist-es/breadcrumbs-next/BreadcrumbNextTrigger.js +53 -0
- package/dist-es/breadcrumbs-next/BreadcrumbNextTrigger.js.map +1 -0
- package/dist-es/breadcrumbs-next/BreadcrumbsNext.css.js +4 -0
- package/dist-es/breadcrumbs-next/BreadcrumbsNext.css.js.map +1 -0
- package/dist-es/breadcrumbs-next/BreadcrumbsNext.js +144 -0
- package/dist-es/breadcrumbs-next/BreadcrumbsNext.js.map +1 -0
- package/dist-es/breadcrumbs-next/internal/BreadcrumbNextContext.js +9 -0
- package/dist-es/breadcrumbs-next/internal/BreadcrumbNextContext.js.map +1 -0
- package/dist-es/breadcrumbs-next/internal/BreadcrumbOverflowDisclosure.js +234 -0
- package/dist-es/breadcrumbs-next/internal/BreadcrumbOverflowDisclosure.js.map +1 -0
- package/dist-es/breadcrumbs-next/internal/breadcrumbItems.js +19 -0
- package/dist-es/breadcrumbs-next/internal/breadcrumbItems.js.map +1 -0
- package/dist-es/index.js +4 -0
- package/dist-es/index.js.map +1 -1
- package/dist-types/breadcrumbs-next/BreadcrumbNext.d.ts +23 -0
- package/dist-types/breadcrumbs-next/BreadcrumbNextLabel.d.ts +4 -0
- package/dist-types/breadcrumbs-next/BreadcrumbNextTrigger.d.ts +8 -0
- package/dist-types/breadcrumbs-next/BreadcrumbsNext.d.ts +32 -0
- package/dist-types/breadcrumbs-next/index.d.ts +4 -0
- package/dist-types/breadcrumbs-next/internal/BreadcrumbNextContext.d.ts +14 -0
- package/dist-types/breadcrumbs-next/internal/BreadcrumbOverflowDisclosure.d.ts +9 -0
- package/dist-types/breadcrumbs-next/internal/breadcrumbItems.d.ts +9 -0
- package/dist-types/index.d.ts +1 -0
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @salt-ds/lab
|
|
2
2
|
|
|
3
|
+
## 1.0.0-alpha.99
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 9c9b83e: Added `BreadcrumbsNext`, `BreadcrumbNext`, `BreadcrumbNextTrigger`, and `BreadcrumbNextLabel` for accessible breadcrumb navigation. Supports wrapping, disclosure collapse, and routing integration via `render` props.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- d37a311: Updated Floating UI from `0.26.28` to `0.27.19`.
|
|
12
|
+
- Updated dependencies [747cb08]
|
|
13
|
+
- Updated dependencies [d84df88]
|
|
14
|
+
- Updated dependencies [56855cb]
|
|
15
|
+
- Updated dependencies [e226b17]
|
|
16
|
+
- Updated dependencies [9c9b83e]
|
|
17
|
+
- Updated dependencies [747cb08]
|
|
18
|
+
- Updated dependencies [d37a311]
|
|
19
|
+
- @salt-ds/core@1.67.0
|
|
20
|
+
|
|
3
21
|
## 1.0.0-alpha.98
|
|
4
22
|
|
|
5
23
|
### Minor Changes
|
package/css/salt-lab.css
CHANGED
|
@@ -174,6 +174,152 @@
|
|
|
174
174
|
margin-bottom: var(--breadcrumbs-ol-wrap-li-marginBottom);
|
|
175
175
|
}
|
|
176
176
|
|
|
177
|
+
/* src/breadcrumbs-next/BreadcrumbNext.css */
|
|
178
|
+
.saltBreadcrumbNext {
|
|
179
|
+
align-items: center;
|
|
180
|
+
display: inline-flex;
|
|
181
|
+
flex: 0 1 auto;
|
|
182
|
+
gap: var(--salt-spacing-100);
|
|
183
|
+
list-style: none;
|
|
184
|
+
min-width: 0;
|
|
185
|
+
}
|
|
186
|
+
.saltBreadcrumbNext-current,
|
|
187
|
+
.saltBreadcrumbNext-label,
|
|
188
|
+
.saltBreadcrumbNext-link,
|
|
189
|
+
.saltBreadcrumbNext-trigger {
|
|
190
|
+
min-width: 0;
|
|
191
|
+
}
|
|
192
|
+
.saltBreadcrumbNext-trigger {
|
|
193
|
+
align-items: center;
|
|
194
|
+
display: inline-flex;
|
|
195
|
+
gap: var(--salt-spacing-50);
|
|
196
|
+
max-width: 100%;
|
|
197
|
+
}
|
|
198
|
+
.saltBreadcrumbNext-link.saltLink {
|
|
199
|
+
--link-color-visited: var(--link-color);
|
|
200
|
+
--link-textDecoration-visited: var(--link-textDecoration);
|
|
201
|
+
}
|
|
202
|
+
.saltBreadcrumbNext-current.saltLink {
|
|
203
|
+
cursor: var(--salt-cursor-text);
|
|
204
|
+
}
|
|
205
|
+
.saltBreadcrumbNext-separator {
|
|
206
|
+
--saltIcon-color: var(--salt-content-secondary-foreground);
|
|
207
|
+
--saltIcon-size: var(--salt-size-icon);
|
|
208
|
+
flex: 0 0 auto;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/* src/breadcrumbs-next/BreadcrumbsNext.css */
|
|
212
|
+
.saltBreadcrumbsNext {
|
|
213
|
+
display: block;
|
|
214
|
+
margin-block: var(--salt-spacing-25);
|
|
215
|
+
}
|
|
216
|
+
.saltBreadcrumbsNext-ol {
|
|
217
|
+
display: flex;
|
|
218
|
+
align-items: center;
|
|
219
|
+
flex-wrap: nowrap;
|
|
220
|
+
gap: var(--salt-spacing-100);
|
|
221
|
+
justify-content: flex-start;
|
|
222
|
+
list-style: none;
|
|
223
|
+
margin: 0;
|
|
224
|
+
padding: 0;
|
|
225
|
+
}
|
|
226
|
+
.saltBreadcrumbsNext-ol-wrap {
|
|
227
|
+
flex-wrap: wrap;
|
|
228
|
+
}
|
|
229
|
+
.saltBreadcrumbsNext-collapseItem {
|
|
230
|
+
align-items: center;
|
|
231
|
+
display: inline-flex;
|
|
232
|
+
flex: 0 1 auto;
|
|
233
|
+
gap: var(--salt-spacing-100);
|
|
234
|
+
list-style: none;
|
|
235
|
+
min-width: 0;
|
|
236
|
+
}
|
|
237
|
+
.saltBreadcrumbsNext-collapseButton[aria-expanded=true] {
|
|
238
|
+
background: var(--saltButton-background-active, var(--button-background-active));
|
|
239
|
+
border-color: var(--saltButton-borderColor-active, var(--button-borderColor-active));
|
|
240
|
+
color: var(--saltButton-text-color-active, var(--button-text-color-active));
|
|
241
|
+
cursor: var(--salt-cursor-active);
|
|
242
|
+
}
|
|
243
|
+
.saltBreadcrumbsNext-disclosure {
|
|
244
|
+
background: var(--salt-container-primary-background);
|
|
245
|
+
border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-selectable-borderColor-selected);
|
|
246
|
+
overflow: hidden;
|
|
247
|
+
overflow-y: auto;
|
|
248
|
+
min-width: 10em;
|
|
249
|
+
position: relative;
|
|
250
|
+
z-index: var(--salt-zIndex-flyover);
|
|
251
|
+
box-shadow: var(--salt-overlayable-shadow-popout);
|
|
252
|
+
box-sizing: border-box;
|
|
253
|
+
border-radius: var(--salt-palette-corner, 0);
|
|
254
|
+
}
|
|
255
|
+
.saltBreadcrumbsNext-disclosureList {
|
|
256
|
+
list-style: none;
|
|
257
|
+
margin: 0;
|
|
258
|
+
padding: 0;
|
|
259
|
+
}
|
|
260
|
+
.saltBreadcrumbsNext-disclosureListItem {
|
|
261
|
+
list-style: none;
|
|
262
|
+
margin: 0;
|
|
263
|
+
padding: 0;
|
|
264
|
+
}
|
|
265
|
+
.saltBreadcrumbsNext-disclosureItem {
|
|
266
|
+
color: var(--salt-content-primary-foreground);
|
|
267
|
+
background: var(--salt-selectable-background);
|
|
268
|
+
font-size: var(--salt-text-fontSize);
|
|
269
|
+
font-weight: var(--salt-text-fontWeight);
|
|
270
|
+
font-family: var(--salt-text-fontFamily);
|
|
271
|
+
line-height: var(--salt-text-lineHeight);
|
|
272
|
+
letter-spacing: var(--salt-text-letterSpacing);
|
|
273
|
+
min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));
|
|
274
|
+
padding: calc(var(--salt-spacing-100) + var(--salt-spacing-25)) var(--salt-spacing-100);
|
|
275
|
+
display: flex;
|
|
276
|
+
gap: var(--salt-spacing-100);
|
|
277
|
+
position: relative;
|
|
278
|
+
cursor: var(--salt-cursor-hover);
|
|
279
|
+
box-sizing: border-box;
|
|
280
|
+
flex-shrink: 0;
|
|
281
|
+
text-decoration: none;
|
|
282
|
+
width: 100%;
|
|
283
|
+
}
|
|
284
|
+
.saltBreadcrumbsNext-disclosureItem.saltLink {
|
|
285
|
+
--link-color: var(--salt-content-primary-foreground);
|
|
286
|
+
--link-color-hover: var(--salt-content-primary-foreground);
|
|
287
|
+
--link-color-active: var(--salt-content-primary-foreground);
|
|
288
|
+
--link-color-focus: var(--salt-content-primary-foreground);
|
|
289
|
+
--link-color-visited: var(--salt-content-primary-foreground);
|
|
290
|
+
--link-textDecoration: var(--salt-typography-textDecoration-none);
|
|
291
|
+
--link-textDecoration-hover: var(--salt-typography-textDecoration-none);
|
|
292
|
+
--link-textDecoration-active: var(--salt-typography-textDecoration-none);
|
|
293
|
+
--link-textDecoration-focus: var(--salt-typography-textDecoration-none);
|
|
294
|
+
--link-textDecoration-visited: var(--salt-typography-textDecoration-none);
|
|
295
|
+
}
|
|
296
|
+
.saltBreadcrumbsNext-disclosureItem.saltLink:focus:not(:focus-visible) {
|
|
297
|
+
outline: none;
|
|
298
|
+
}
|
|
299
|
+
.saltBreadcrumbsNext-disclosureItem:focus-visible,
|
|
300
|
+
.saltBreadcrumbsNext-disclosureItem.saltLink:focus-visible {
|
|
301
|
+
outline: var(--salt-focused-outline);
|
|
302
|
+
outline-offset: calc(var(--salt-size-fixed-100) * -2);
|
|
303
|
+
}
|
|
304
|
+
.saltBreadcrumbsNext-disclosureItem:hover {
|
|
305
|
+
outline: none;
|
|
306
|
+
}
|
|
307
|
+
.saltBreadcrumbsNext-disclosureItem:hover,
|
|
308
|
+
.saltBreadcrumbsNext-disclosureItem:focus-visible {
|
|
309
|
+
background: var(--salt-selectable-background-hover);
|
|
310
|
+
}
|
|
311
|
+
.saltBreadcrumbsNext-disclosureItem:active {
|
|
312
|
+
background: var(--salt-selectable-background-selected);
|
|
313
|
+
box-shadow: 0 calc(var(--salt-size-fixed-100) * -1) 0 0 var(--salt-selectable-borderColor-selected), 0 var(--salt-size-fixed-100) 0 0 var(--salt-selectable-borderColor-selected);
|
|
314
|
+
}
|
|
315
|
+
.saltBreadcrumbsNext-disclosureItem[aria-disabled=true],
|
|
316
|
+
.saltBreadcrumbsNext-disclosureItem[aria-disabled=true]:active {
|
|
317
|
+
background: var(--salt-selectable-background-disabled);
|
|
318
|
+
color: var(--salt-content-primary-foreground-disabled);
|
|
319
|
+
cursor: var(--salt-cursor-disabled);
|
|
320
|
+
box-shadow: none;
|
|
321
|
+
}
|
|
322
|
+
|
|
177
323
|
/* src/button-bar/ButtonBar.css */
|
|
178
324
|
.saltButtonBar {
|
|
179
325
|
width: 100%;
|
|
@@ -3116,4 +3262,4 @@
|
|
|
3116
3262
|
margin: calc(var(--salt-size-unit) / 2) 0;
|
|
3117
3263
|
}
|
|
3118
3264
|
|
|
3119
|
-
/* src/
|
|
3265
|
+
/* src/a1e4b79c-9deb-4780-be8e-e16a36fe360d.css */
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var css_248z = ".saltBreadcrumbNext {\n align-items: center;\n display: inline-flex;\n flex: 0 1 auto;\n gap: var(--salt-spacing-100);\n list-style: none;\n min-width: 0;\n}\n\n.saltBreadcrumbNext-current,\n.saltBreadcrumbNext-label,\n.saltBreadcrumbNext-link,\n.saltBreadcrumbNext-trigger {\n min-width: 0;\n}\n\n.saltBreadcrumbNext-trigger {\n align-items: center;\n display: inline-flex;\n gap: var(--salt-spacing-50);\n max-width: 100%;\n}\n\n.saltBreadcrumbNext-link.saltLink {\n --link-color-visited: var(--link-color);\n --link-textDecoration-visited: var(--link-textDecoration);\n}\n\n.saltBreadcrumbNext-current.saltLink {\n cursor: var(--salt-cursor-text);\n}\n\n.saltBreadcrumbNext-separator {\n --saltIcon-color: var(--salt-content-secondary-foreground);\n --saltIcon-size: var(--salt-size-icon);\n\n flex: 0 0 auto;\n}\n";
|
|
4
|
+
|
|
5
|
+
module.exports = css_248z;
|
|
6
|
+
//# sourceMappingURL=BreadcrumbNext.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BreadcrumbNext.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var core = require('@salt-ds/core');
|
|
5
|
+
var styles = require('@salt-ds/styles');
|
|
6
|
+
var window = require('@salt-ds/window');
|
|
7
|
+
var clsx = require('clsx');
|
|
8
|
+
var react = require('react');
|
|
9
|
+
var BreadcrumbNext$1 = require('./BreadcrumbNext.css.js');
|
|
10
|
+
var BreadcrumbNextLabel = require('./BreadcrumbNextLabel.js');
|
|
11
|
+
var BreadcrumbNextTrigger = require('./BreadcrumbNextTrigger.js');
|
|
12
|
+
var BreadcrumbNextContext = require('./internal/BreadcrumbNextContext.js');
|
|
13
|
+
|
|
14
|
+
const withBaseName = core.makePrefixer("saltBreadcrumbNext");
|
|
15
|
+
const withBreadcrumbsBaseName = core.makePrefixer("saltBreadcrumbsNext");
|
|
16
|
+
function isPrimitiveBreadcrumbLabel(children) {
|
|
17
|
+
return typeof children === "string" && children.trim() !== "" || typeof children === "number";
|
|
18
|
+
}
|
|
19
|
+
function isMissingBreadcrumbContent(children) {
|
|
20
|
+
const childArray = react.Children.toArray(children);
|
|
21
|
+
return childArray.length === 0 || childArray.every(
|
|
22
|
+
(child) => typeof child === "string" && child.trim() === ""
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
let missingBreadcrumbContentWarningShown = false;
|
|
26
|
+
function warnIfMissingBreadcrumbContent() {
|
|
27
|
+
if (process.env.NODE_ENV === "production" || missingBreadcrumbContentWarningShown) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
missingBreadcrumbContentWarningShown = true;
|
|
31
|
+
console.warn(
|
|
32
|
+
"BreadcrumbNext requires children to render a named breadcrumb item. Use text children for simple items or BreadcrumbNextTrigger with BreadcrumbNextLabel for composed items."
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
const BreadcrumbNext = react.forwardRef(
|
|
36
|
+
function BreadcrumbNext2(props, ref) {
|
|
37
|
+
const {
|
|
38
|
+
children,
|
|
39
|
+
className,
|
|
40
|
+
current: currentProp,
|
|
41
|
+
href,
|
|
42
|
+
render,
|
|
43
|
+
...rest
|
|
44
|
+
} = props;
|
|
45
|
+
const targetWindow = window.useWindow();
|
|
46
|
+
styles.useComponentCssInjection({
|
|
47
|
+
testId: "salt-breadcrumb-next",
|
|
48
|
+
css: BreadcrumbNext$1,
|
|
49
|
+
window: targetWindow
|
|
50
|
+
});
|
|
51
|
+
const parentContext = BreadcrumbNextContext.useBreadcrumbNextContext();
|
|
52
|
+
const current = (parentContext == null ? void 0 : parentContext.current) ?? Boolean(currentProp);
|
|
53
|
+
const onNavigate = parentContext == null ? void 0 : parentContext.onNavigate;
|
|
54
|
+
const placement = (parentContext == null ? void 0 : parentContext.placement) ?? "trail";
|
|
55
|
+
const showSeparator = (parentContext == null ? void 0 : parentContext.showSeparator) ?? false;
|
|
56
|
+
const triggerRef = parentContext == null ? void 0 : parentContext.triggerRef;
|
|
57
|
+
const resolvedRender = render ?? (parentContext == null ? void 0 : parentContext.render);
|
|
58
|
+
const { LevelSeparatorIcon } = core.useIcon();
|
|
59
|
+
const missingContent = isMissingBreadcrumbContent(children);
|
|
60
|
+
if (missingContent) {
|
|
61
|
+
warnIfMissingBreadcrumbContent();
|
|
62
|
+
}
|
|
63
|
+
const primitiveChildren = isPrimitiveBreadcrumbLabel(children) ? children : void 0;
|
|
64
|
+
const content = missingContent ? null : primitiveChildren !== void 0 ? /* @__PURE__ */ jsxRuntime.jsx(BreadcrumbNextTrigger.BreadcrumbNextTrigger, { children: /* @__PURE__ */ jsxRuntime.jsx(BreadcrumbNextLabel.BreadcrumbNextLabel, { children: primitiveChildren }) }) : children;
|
|
65
|
+
const context = {
|
|
66
|
+
current,
|
|
67
|
+
href,
|
|
68
|
+
onNavigate,
|
|
69
|
+
placement,
|
|
70
|
+
render: resolvedRender,
|
|
71
|
+
showSeparator,
|
|
72
|
+
triggerRef
|
|
73
|
+
};
|
|
74
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
75
|
+
"li",
|
|
76
|
+
{
|
|
77
|
+
ref,
|
|
78
|
+
className: clsx.clsx(
|
|
79
|
+
placement === "disclosure" ? withBreadcrumbsBaseName("disclosureListItem") : withBaseName(),
|
|
80
|
+
className
|
|
81
|
+
),
|
|
82
|
+
...rest,
|
|
83
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(BreadcrumbNextContext.BreadcrumbNextContext.Provider, { value: context, children: [
|
|
84
|
+
content,
|
|
85
|
+
placement === "trail" && showSeparator ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
86
|
+
LevelSeparatorIcon,
|
|
87
|
+
{
|
|
88
|
+
"aria-hidden": true,
|
|
89
|
+
className: withBaseName("separator")
|
|
90
|
+
}
|
|
91
|
+
) : null
|
|
92
|
+
] })
|
|
93
|
+
}
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
);
|
|
97
|
+
|
|
98
|
+
exports.BreadcrumbNext = BreadcrumbNext;
|
|
99
|
+
//# sourceMappingURL=BreadcrumbNext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BreadcrumbNext.js","sources":["../src/breadcrumbs-next/BreadcrumbNext.tsx"],"sourcesContent":["import { makePrefixer, type RenderPropsType, useIcon } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n Children,\n type ComponentPropsWithoutRef,\n forwardRef,\n type ReactNode,\n} from \"react\";\nimport breadcrumbNextCss from \"./BreadcrumbNext.css\";\nimport { BreadcrumbNextLabel } from \"./BreadcrumbNextLabel\";\nimport { BreadcrumbNextTrigger } from \"./BreadcrumbNextTrigger\";\nimport {\n BreadcrumbNextContext,\n useBreadcrumbNextContext,\n} from \"./internal/BreadcrumbNextContext\";\n\nconst withBaseName = makePrefixer(\"saltBreadcrumbNext\");\nconst withBreadcrumbsBaseName = makePrefixer(\"saltBreadcrumbsNext\");\n\nfunction isPrimitiveBreadcrumbLabel(children: ReactNode) {\n return (\n (typeof children === \"string\" && children.trim() !== \"\") ||\n typeof children === \"number\"\n );\n}\n\nfunction isMissingBreadcrumbContent(children: ReactNode) {\n const childArray = Children.toArray(children);\n\n return (\n childArray.length === 0 ||\n childArray.every(\n (child) => typeof child === \"string\" && child.trim() === \"\",\n )\n );\n}\n\nlet missingBreadcrumbContentWarningShown = false;\n\nfunction warnIfMissingBreadcrumbContent() {\n if (\n process.env.NODE_ENV === \"production\" ||\n missingBreadcrumbContentWarningShown\n ) {\n return;\n }\n\n missingBreadcrumbContentWarningShown = true;\n console.warn(\n \"BreadcrumbNext requires children to render a named breadcrumb item. Use text children for simple items or BreadcrumbNextTrigger with BreadcrumbNextLabel for composed items.\",\n );\n}\n\nexport interface BreadcrumbNextProps\n extends Omit<ComponentPropsWithoutRef<\"li\">, \"children\"> {\n /**\n * Custom breadcrumb content. Use this for advanced composition with\n * `BreadcrumbNextTrigger` and `BreadcrumbNextLabel`.\n */\n children?: ReactNode;\n /**\n * If `true`, the breadcrumb represents the current page.\n */\n current?: boolean;\n /**\n * The URL for the breadcrumb. Provide this for the current breadcrumb so it\n * renders as a focusable link with `aria-current=\"page\"`.\n */\n href?: string;\n /**\n * Render prop to enable customization of the underlying link element.\n */\n render?: RenderPropsType[\"render\"];\n}\n\nexport const BreadcrumbNext = forwardRef<HTMLLIElement, BreadcrumbNextProps>(\n function BreadcrumbNext(props, ref) {\n const {\n children,\n className,\n current: currentProp,\n href,\n render,\n ...rest\n } = props;\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-breadcrumb-next\",\n css: breadcrumbNextCss,\n window: targetWindow,\n });\n\n const parentContext = useBreadcrumbNextContext();\n const current = parentContext?.current ?? Boolean(currentProp);\n const onNavigate = parentContext?.onNavigate;\n const placement = parentContext?.placement ?? \"trail\";\n const showSeparator = parentContext?.showSeparator ?? false;\n const triggerRef = parentContext?.triggerRef;\n const resolvedRender = render ?? parentContext?.render;\n const { LevelSeparatorIcon } = useIcon();\n const missingContent = isMissingBreadcrumbContent(children);\n\n if (missingContent) {\n warnIfMissingBreadcrumbContent();\n }\n\n const primitiveChildren = isPrimitiveBreadcrumbLabel(children)\n ? children\n : undefined;\n const content = missingContent ? null : primitiveChildren !== undefined ? (\n <BreadcrumbNextTrigger>\n <BreadcrumbNextLabel>{primitiveChildren}</BreadcrumbNextLabel>\n </BreadcrumbNextTrigger>\n ) : (\n children\n );\n const context = {\n current,\n href,\n onNavigate,\n placement,\n render: resolvedRender,\n showSeparator,\n triggerRef,\n };\n\n return (\n <li\n ref={ref}\n className={clsx(\n placement === \"disclosure\"\n ? withBreadcrumbsBaseName(\"disclosureListItem\")\n : withBaseName(),\n className,\n )}\n {...rest}\n >\n <BreadcrumbNextContext.Provider value={context}>\n {content}\n {placement === \"trail\" && showSeparator ? (\n <LevelSeparatorIcon\n aria-hidden\n className={withBaseName(\"separator\")}\n />\n ) : null}\n </BreadcrumbNextContext.Provider>\n </li>\n );\n },\n);\n"],"names":["makePrefixer","Children","forwardRef","BreadcrumbNext","useWindow","useComponentCssInjection","breadcrumbNextCss","useBreadcrumbNextContext","useIcon","jsx","BreadcrumbNextTrigger","BreadcrumbNextLabel","clsx","jsxs","BreadcrumbNextContext"],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var core = require('@salt-ds/core');
|
|
5
|
+
var clsx = require('clsx');
|
|
6
|
+
var react = require('react');
|
|
7
|
+
|
|
8
|
+
const withBaseName = core.makePrefixer("saltBreadcrumbNext");
|
|
9
|
+
const BreadcrumbNextLabel = react.forwardRef(function BreadcrumbNextLabel2({ className, ...rest }, ref) {
|
|
10
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
11
|
+
"span",
|
|
12
|
+
{
|
|
13
|
+
ref,
|
|
14
|
+
className: clsx.clsx(withBaseName("label"), className),
|
|
15
|
+
...rest
|
|
16
|
+
}
|
|
17
|
+
);
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
exports.BreadcrumbNextLabel = BreadcrumbNextLabel;
|
|
21
|
+
//# sourceMappingURL=BreadcrumbNextLabel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BreadcrumbNextLabel.js","sources":["../src/breadcrumbs-next/BreadcrumbNextLabel.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport { type ComponentPropsWithoutRef, forwardRef } from \"react\";\n\nconst withBaseName = makePrefixer(\"saltBreadcrumbNext\");\n\nexport interface BreadcrumbNextLabelProps\n extends ComponentPropsWithoutRef<\"span\"> {}\n\nexport const BreadcrumbNextLabel = forwardRef<\n HTMLSpanElement,\n BreadcrumbNextLabelProps\n>(function BreadcrumbNextLabel({ className, ...rest }, ref) {\n return (\n <span\n ref={ref}\n className={clsx(withBaseName(\"label\"), className)}\n {...rest}\n />\n );\n});\n"],"names":["makePrefixer","forwardRef","BreadcrumbNextLabel","jsx","clsx"],"mappings":";;;;;;;AAIA,MAAM,YAAA,GAAeA,kBAAa,oBAAoB,CAAA;AAK/C,MAAM,mBAAA,GAAsBC,iBAGjC,SAASC,oBAAAA,CAAoB,EAAE,SAAA,EAAW,GAAG,IAAA,EAAK,EAAG,GAAA,EAAK;AAC1D,EAAA,uBACEC,cAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAWC,SAAA,CAAK,YAAA,CAAa,OAAO,GAAG,SAAS,CAAA;AAAA,MAC/C,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;;;;"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var core = require('@salt-ds/core');
|
|
5
|
+
var clsx = require('clsx');
|
|
6
|
+
var react = require('react');
|
|
7
|
+
var BreadcrumbNextContext = require('./internal/BreadcrumbNextContext.js');
|
|
8
|
+
|
|
9
|
+
const withBaseName = core.makePrefixer("saltBreadcrumbNext");
|
|
10
|
+
const withBreadcrumbsBaseName = core.makePrefixer("saltBreadcrumbsNext");
|
|
11
|
+
const BreadcrumbNextTrigger = react.forwardRef(function BreadcrumbNextTrigger2(props, ref) {
|
|
12
|
+
const { children, className, onClick, ...rest } = props;
|
|
13
|
+
const context = BreadcrumbNextContext.useBreadcrumbNextContext();
|
|
14
|
+
if (!context) {
|
|
15
|
+
throw new Error(
|
|
16
|
+
"BreadcrumbNextTrigger must be rendered inside BreadcrumbNext"
|
|
17
|
+
);
|
|
18
|
+
}
|
|
19
|
+
const { current, href, onNavigate, placement, render, triggerRef } = context;
|
|
20
|
+
const handleRef = core.useForkRef(ref, triggerRef);
|
|
21
|
+
const isDisclosure = placement === "disclosure";
|
|
22
|
+
const triggerClassName = clsx.clsx(
|
|
23
|
+
isDisclosure ? withBreadcrumbsBaseName("disclosureItem") : withBaseName("trigger"),
|
|
24
|
+
className
|
|
25
|
+
);
|
|
26
|
+
const isNavigable = href !== void 0;
|
|
27
|
+
const handleClick = (event) => {
|
|
28
|
+
onClick == null ? void 0 : onClick(event);
|
|
29
|
+
if (isDisclosure || !event.defaultPrevented) {
|
|
30
|
+
onNavigate == null ? void 0 : onNavigate();
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
34
|
+
core.Link,
|
|
35
|
+
{
|
|
36
|
+
"aria-current": current ? "page" : void 0,
|
|
37
|
+
className: clsx.clsx(triggerClassName, {
|
|
38
|
+
[withBaseName("link")]: isNavigable,
|
|
39
|
+
[withBaseName("current")]: current
|
|
40
|
+
}),
|
|
41
|
+
color: isDisclosure ? "inherit" : void 0,
|
|
42
|
+
href,
|
|
43
|
+
onClick: isNavigable ? handleClick : onClick,
|
|
44
|
+
ref: handleRef,
|
|
45
|
+
render: isNavigable ? render : void 0,
|
|
46
|
+
styleAs: "label",
|
|
47
|
+
underline: current || !isNavigable || isDisclosure ? "never" : void 0,
|
|
48
|
+
...rest,
|
|
49
|
+
children
|
|
50
|
+
}
|
|
51
|
+
);
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
exports.BreadcrumbNextTrigger = BreadcrumbNextTrigger;
|
|
55
|
+
//# sourceMappingURL=BreadcrumbNextTrigger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BreadcrumbNextTrigger.js","sources":["../src/breadcrumbs-next/BreadcrumbNextTrigger.tsx"],"sourcesContent":["import { Link, makePrefixer, useForkRef } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type MouseEventHandler,\n type ReactNode,\n} from \"react\";\nimport { useBreadcrumbNextContext } from \"./internal/BreadcrumbNextContext\";\n\nconst withBaseName = makePrefixer(\"saltBreadcrumbNext\");\nconst withBreadcrumbsBaseName = makePrefixer(\"saltBreadcrumbsNext\");\n\nexport interface BreadcrumbNextTriggerProps\n extends Omit<ComponentPropsWithoutRef<\"a\">, \"children\" | \"color\" | \"href\"> {\n /**\n * Breadcrumb trigger content.\n */\n children?: ReactNode;\n}\n\nexport const BreadcrumbNextTrigger = forwardRef<\n HTMLAnchorElement,\n BreadcrumbNextTriggerProps\n>(function BreadcrumbNextTrigger(props, ref) {\n const { children, className, onClick, ...rest } = props;\n const context = useBreadcrumbNextContext();\n\n if (!context) {\n throw new Error(\n \"BreadcrumbNextTrigger must be rendered inside BreadcrumbNext\",\n );\n }\n\n const { current, href, onNavigate, placement, render, triggerRef } = context;\n const handleRef = useForkRef(ref, triggerRef);\n const isDisclosure = placement === \"disclosure\";\n const triggerClassName = clsx(\n isDisclosure\n ? withBreadcrumbsBaseName(\"disclosureItem\")\n : withBaseName(\"trigger\"),\n className,\n );\n const isNavigable = href !== undefined;\n const handleClick: MouseEventHandler<HTMLAnchorElement> = (event) => {\n onClick?.(event);\n\n if (isDisclosure || !event.defaultPrevented) {\n onNavigate?.();\n }\n };\n\n return (\n <Link\n aria-current={current ? \"page\" : undefined}\n className={clsx(triggerClassName, {\n [withBaseName(\"link\")]: isNavigable,\n [withBaseName(\"current\")]: current,\n })}\n color={isDisclosure ? \"inherit\" : undefined}\n href={href}\n onClick={isNavigable ? handleClick : onClick}\n ref={handleRef}\n render={isNavigable ? render : undefined}\n styleAs=\"label\"\n underline={current || !isNavigable || isDisclosure ? \"never\" : undefined}\n {...rest}\n >\n {children}\n </Link>\n );\n});\n"],"names":["makePrefixer","forwardRef","BreadcrumbNextTrigger","useBreadcrumbNextContext","useForkRef","clsx","jsx","Link"],"mappings":";;;;;;;;AAUA,MAAM,YAAA,GAAeA,kBAAa,oBAAoB,CAAA;AACtD,MAAM,uBAAA,GAA0BA,kBAAa,qBAAqB,CAAA;AAU3D,MAAM,qBAAA,GAAwBC,gBAAA,CAGnC,SAASC,sBAAAA,CAAsB,OAAO,GAAA,EAAK;AAC3C,EAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAW,OAAA,EAAS,GAAG,MAAK,GAAI,KAAA;AAClD,EAAA,MAAM,UAAUC,8CAAA,EAAyB;AAEzC,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAM,EAAE,OAAA,EAAS,IAAA,EAAM,YAAY,SAAA,EAAW,MAAA,EAAQ,YAAW,GAAI,OAAA;AACrE,EAAA,MAAM,SAAA,GAAYC,eAAA,CAAW,GAAA,EAAK,UAAU,CAAA;AAC5C,EAAA,MAAM,eAAe,SAAA,KAAc,YAAA;AACnC,EAAA,MAAM,gBAAA,GAAmBC,SAAA;AAAA,IACvB,YAAA,GACI,uBAAA,CAAwB,gBAAgB,CAAA,GACxC,aAAa,SAAS,CAAA;AAAA,IAC1B;AAAA,GACF;AACA,EAAA,MAAM,cAAc,IAAA,KAAS,MAAA;AAC7B,EAAA,MAAM,WAAA,GAAoD,CAAC,KAAA,KAAU;AACnE,IAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAU,KAAA,CAAA;AAEV,IAAA,IAAI,YAAA,IAAgB,CAAC,KAAA,CAAM,gBAAA,EAAkB;AAC3C,MAAA,UAAA,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,EAAA;AAAA,IACF;AAAA,EACF,CAAA;AAEA,EAAA,uBACEC,cAAA;AAAA,IAACC,SAAA;AAAA,IAAA;AAAA,MACC,cAAA,EAAc,UAAU,MAAA,GAAS,MAAA;AAAA,MACjC,SAAA,EAAWF,UAAK,gBAAA,EAAkB;AAAA,QAChC,CAAC,YAAA,CAAa,MAAM,CAAC,GAAG,WAAA;AAAA,QACxB,CAAC,YAAA,CAAa,SAAS,CAAC,GAAG;AAAA,OAC5B,CAAA;AAAA,MACD,KAAA,EAAO,eAAe,SAAA,GAAY,MAAA;AAAA,MAClC,IAAA;AAAA,MACA,OAAA,EAAS,cAAc,WAAA,GAAc,OAAA;AAAA,MACrC,GAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAQ,cAAc,MAAA,GAAS,MAAA;AAAA,MAC/B,OAAA,EAAQ,OAAA;AAAA,MACR,SAAA,EAAW,OAAA,IAAW,CAAC,WAAA,IAAe,eAAe,OAAA,GAAU,MAAA;AAAA,MAC9D,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;;;;"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var css_248z = ".saltBreadcrumbsNext {\n display: block;\n margin-block: var(--salt-spacing-25);\n}\n\n.saltBreadcrumbsNext-ol {\n display: flex;\n align-items: center;\n flex-wrap: nowrap;\n gap: var(--salt-spacing-100);\n justify-content: flex-start;\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.saltBreadcrumbsNext-ol-wrap {\n flex-wrap: wrap;\n}\n\n.saltBreadcrumbsNext-collapseItem {\n align-items: center;\n display: inline-flex;\n flex: 0 1 auto;\n gap: var(--salt-spacing-100);\n list-style: none;\n min-width: 0;\n}\n\n.saltBreadcrumbsNext-collapseButton[aria-expanded=\"true\"] {\n background: var(--saltButton-background-active, var(--button-background-active));\n border-color: var(--saltButton-borderColor-active, var(--button-borderColor-active));\n color: var(--saltButton-text-color-active, var(--button-text-color-active));\n cursor: var(--salt-cursor-active);\n}\n\n.saltBreadcrumbsNext-disclosure {\n background: var(--salt-container-primary-background);\n border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-selectable-borderColor-selected);\n overflow: hidden;\n overflow-y: auto;\n min-width: 10em;\n position: relative;\n z-index: var(--salt-zIndex-flyover);\n box-shadow: var(--salt-overlayable-shadow-popout);\n box-sizing: border-box;\n border-radius: var(--salt-palette-corner, 0);\n}\n\n.saltBreadcrumbsNext-disclosureList {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.saltBreadcrumbsNext-disclosureListItem {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.saltBreadcrumbsNext-disclosureItem {\n color: var(--salt-content-primary-foreground);\n background: var(--salt-selectable-background);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-fontWeight);\n font-family: var(--salt-text-fontFamily);\n line-height: var(--salt-text-lineHeight);\n letter-spacing: var(--salt-text-letterSpacing);\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n padding: calc(var(--salt-spacing-100) + var(--salt-spacing-25)) var(--salt-spacing-100);\n display: flex;\n gap: var(--salt-spacing-100);\n position: relative;\n cursor: var(--salt-cursor-hover);\n box-sizing: border-box;\n flex-shrink: 0;\n text-decoration: none;\n width: 100%;\n}\n\n.saltBreadcrumbsNext-disclosureItem.saltLink {\n --link-color: var(--salt-content-primary-foreground);\n --link-color-hover: var(--salt-content-primary-foreground);\n --link-color-active: var(--salt-content-primary-foreground);\n --link-color-focus: var(--salt-content-primary-foreground);\n --link-color-visited: var(--salt-content-primary-foreground);\n --link-textDecoration: var(--salt-typography-textDecoration-none);\n --link-textDecoration-hover: var(--salt-typography-textDecoration-none);\n --link-textDecoration-active: var(--salt-typography-textDecoration-none);\n --link-textDecoration-focus: var(--salt-typography-textDecoration-none);\n --link-textDecoration-visited: var(--salt-typography-textDecoration-none);\n}\n\n.saltBreadcrumbsNext-disclosureItem.saltLink:focus:not(:focus-visible) {\n outline: none;\n}\n\n.saltBreadcrumbsNext-disclosureItem:focus-visible,\n.saltBreadcrumbsNext-disclosureItem.saltLink:focus-visible {\n outline: var(--salt-focused-outline);\n outline-offset: calc(var(--salt-size-fixed-100) * -2);\n}\n\n.saltBreadcrumbsNext-disclosureItem:hover {\n outline: none;\n}\n\n.saltBreadcrumbsNext-disclosureItem:hover,\n.saltBreadcrumbsNext-disclosureItem:focus-visible {\n background: var(--salt-selectable-background-hover);\n}\n\n.saltBreadcrumbsNext-disclosureItem:active {\n background: var(--salt-selectable-background-selected);\n box-shadow:\n 0 calc(var(--salt-size-fixed-100) * -1) 0 0 var(--salt-selectable-borderColor-selected),\n 0 var(--salt-size-fixed-100) 0 0 var(--salt-selectable-borderColor-selected);\n}\n\n.saltBreadcrumbsNext-disclosureItem[aria-disabled=\"true\"],\n.saltBreadcrumbsNext-disclosureItem[aria-disabled=\"true\"]:active {\n background: var(--salt-selectable-background-disabled);\n color: var(--salt-content-primary-foreground-disabled);\n cursor: var(--salt-cursor-disabled);\n box-shadow: none;\n}\n";
|
|
4
|
+
|
|
5
|
+
module.exports = css_248z;
|
|
6
|
+
//# sourceMappingURL=BreadcrumbsNext.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BreadcrumbsNext.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var core = require('@salt-ds/core');
|
|
5
|
+
var styles = require('@salt-ds/styles');
|
|
6
|
+
var window = require('@salt-ds/window');
|
|
7
|
+
var clsx = require('clsx');
|
|
8
|
+
var react = require('react');
|
|
9
|
+
var BreadcrumbNext = require('./BreadcrumbNext.js');
|
|
10
|
+
var BreadcrumbsNext$1 = require('./BreadcrumbsNext.css.js');
|
|
11
|
+
var BreadcrumbNextContext = require('./internal/BreadcrumbNextContext.js');
|
|
12
|
+
var BreadcrumbOverflowDisclosure = require('./internal/BreadcrumbOverflowDisclosure.js');
|
|
13
|
+
var breadcrumbItems = require('./internal/breadcrumbItems.js');
|
|
14
|
+
|
|
15
|
+
const withBaseName = core.makePrefixer("saltBreadcrumbsNext");
|
|
16
|
+
const withItemBaseName = core.makePrefixer("saltBreadcrumbNext");
|
|
17
|
+
function isBreadcrumbNextElement(child) {
|
|
18
|
+
return react.isValidElement(child) && child.type === BreadcrumbNext.BreadcrumbNext;
|
|
19
|
+
}
|
|
20
|
+
function getCurrentIndex(items) {
|
|
21
|
+
const explicitCurrentIndex = items.findIndex(({ props }) => props.current);
|
|
22
|
+
return explicitCurrentIndex === -1 ? Math.max(items.length - 1, 0) : explicitCurrentIndex;
|
|
23
|
+
}
|
|
24
|
+
function getCollapseRange({
|
|
25
|
+
currentIndex,
|
|
26
|
+
items,
|
|
27
|
+
itemsAfterCollapse,
|
|
28
|
+
itemsBeforeCollapse
|
|
29
|
+
}) {
|
|
30
|
+
const itemCount = items.length;
|
|
31
|
+
const effectiveItemsAfterCollapse = Math.max(
|
|
32
|
+
itemsAfterCollapse,
|
|
33
|
+
itemCount - currentIndex
|
|
34
|
+
);
|
|
35
|
+
if (itemsBeforeCollapse + effectiveItemsAfterCollapse >= itemCount) {
|
|
36
|
+
return void 0;
|
|
37
|
+
}
|
|
38
|
+
const hiddenStart = itemsBeforeCollapse;
|
|
39
|
+
const hiddenEnd = itemCount - effectiveItemsAfterCollapse;
|
|
40
|
+
const hiddenItems = items.slice(hiddenStart, hiddenEnd);
|
|
41
|
+
return {
|
|
42
|
+
hiddenItems,
|
|
43
|
+
visibleAfter: items.slice(hiddenEnd),
|
|
44
|
+
visibleBefore: items.slice(0, hiddenStart)
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
function renderSeparator(SeparatorIcon) {
|
|
48
|
+
return /* @__PURE__ */ jsxRuntime.jsx(SeparatorIcon, { "aria-hidden": true, className: withItemBaseName("separator") });
|
|
49
|
+
}
|
|
50
|
+
const BreadcrumbsNext = react.forwardRef(
|
|
51
|
+
function BreadcrumbsNext2(props, ref) {
|
|
52
|
+
const {
|
|
53
|
+
children,
|
|
54
|
+
className,
|
|
55
|
+
itemsAfterCollapse = 1,
|
|
56
|
+
itemsBeforeCollapse = 1,
|
|
57
|
+
maxItems,
|
|
58
|
+
render,
|
|
59
|
+
wrap = false,
|
|
60
|
+
...rest
|
|
61
|
+
} = props;
|
|
62
|
+
const targetWindow = window.useWindow();
|
|
63
|
+
const { LevelSeparatorIcon } = core.useIcon();
|
|
64
|
+
styles.useComponentCssInjection({
|
|
65
|
+
testId: "salt-breadcrumbs-next",
|
|
66
|
+
css: BreadcrumbsNext$1,
|
|
67
|
+
window: targetWindow
|
|
68
|
+
});
|
|
69
|
+
const items = breadcrumbItems.flattenBreadcrumbItems(children).filter(isBreadcrumbNextElement).map((element, index) => ({
|
|
70
|
+
element,
|
|
71
|
+
index,
|
|
72
|
+
key: element.key ?? index,
|
|
73
|
+
props: element.props
|
|
74
|
+
}));
|
|
75
|
+
const currentIndex = getCurrentIndex(items);
|
|
76
|
+
const shouldCollapse = !wrap && maxItems !== void 0 && items.length > maxItems;
|
|
77
|
+
const collapseRange = shouldCollapse ? getCollapseRange({
|
|
78
|
+
currentIndex,
|
|
79
|
+
items,
|
|
80
|
+
itemsAfterCollapse,
|
|
81
|
+
itemsBeforeCollapse
|
|
82
|
+
}) : void 0;
|
|
83
|
+
const renderParts = collapseRange ? [
|
|
84
|
+
...collapseRange.visibleBefore.map(
|
|
85
|
+
(item) => ({ item, type: "breadcrumb" })
|
|
86
|
+
),
|
|
87
|
+
{
|
|
88
|
+
hiddenItems: collapseRange.hiddenItems,
|
|
89
|
+
type: "collapse"
|
|
90
|
+
},
|
|
91
|
+
...collapseRange.visibleAfter.map(
|
|
92
|
+
(item) => ({ item, type: "breadcrumb" })
|
|
93
|
+
)
|
|
94
|
+
] : items.map((item) => ({ item, type: "breadcrumb" }));
|
|
95
|
+
return /* @__PURE__ */ jsxRuntime.jsx("nav", { ref, className: clsx.clsx(withBaseName(), className), ...rest, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
96
|
+
"ol",
|
|
97
|
+
{
|
|
98
|
+
className: clsx.clsx(withBaseName("ol"), {
|
|
99
|
+
[withBaseName("ol-wrap")]: wrap
|
|
100
|
+
}),
|
|
101
|
+
children: renderParts.map((part, index) => {
|
|
102
|
+
const showSeparator = index < renderParts.length - 1;
|
|
103
|
+
if (part.type === "collapse") {
|
|
104
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
105
|
+
"li",
|
|
106
|
+
{
|
|
107
|
+
className: clsx.clsx(
|
|
108
|
+
withItemBaseName(),
|
|
109
|
+
withBaseName("collapseItem")
|
|
110
|
+
),
|
|
111
|
+
children: [
|
|
112
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
113
|
+
BreadcrumbOverflowDisclosure.BreadcrumbOverflowDisclosure,
|
|
114
|
+
{
|
|
115
|
+
currentIndex,
|
|
116
|
+
items: part.hiddenItems,
|
|
117
|
+
render
|
|
118
|
+
}
|
|
119
|
+
),
|
|
120
|
+
showSeparator ? renderSeparator(LevelSeparatorIcon) : null
|
|
121
|
+
]
|
|
122
|
+
},
|
|
123
|
+
"breadcrumbs-next-collapse"
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
127
|
+
BreadcrumbNextContext.BreadcrumbNextContext.Provider,
|
|
128
|
+
{
|
|
129
|
+
value: {
|
|
130
|
+
current: part.item.index === currentIndex,
|
|
131
|
+
placement: "trail",
|
|
132
|
+
render,
|
|
133
|
+
showSeparator
|
|
134
|
+
},
|
|
135
|
+
children: part.item.element
|
|
136
|
+
},
|
|
137
|
+
part.item.key
|
|
138
|
+
);
|
|
139
|
+
})
|
|
140
|
+
}
|
|
141
|
+
) });
|
|
142
|
+
}
|
|
143
|
+
);
|
|
144
|
+
|
|
145
|
+
exports.BreadcrumbsNext = BreadcrumbsNext;
|
|
146
|
+
//# sourceMappingURL=BreadcrumbsNext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BreadcrumbsNext.js","sources":["../src/breadcrumbs-next/BreadcrumbsNext.tsx"],"sourcesContent":["import { makePrefixer, type RenderPropsType, useIcon } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type ElementType,\n forwardRef,\n isValidElement,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport { BreadcrumbNext, type BreadcrumbNextProps } from \"./BreadcrumbNext\";\nimport breadcrumbsNextCss from \"./BreadcrumbsNext.css\";\nimport { BreadcrumbNextContext } from \"./internal/BreadcrumbNextContext\";\nimport { BreadcrumbOverflowDisclosure } from \"./internal/BreadcrumbOverflowDisclosure\";\nimport {\n flattenBreadcrumbItems,\n type NormalizedBreadcrumb,\n} from \"./internal/breadcrumbItems\";\n\nconst withBaseName = makePrefixer(\"saltBreadcrumbsNext\");\nconst withItemBaseName = makePrefixer(\"saltBreadcrumbNext\");\n\ninterface CollapseRange {\n hiddenItems: NormalizedBreadcrumb[];\n visibleAfter: NormalizedBreadcrumb[];\n visibleBefore: NormalizedBreadcrumb[];\n}\n\ntype RenderPart =\n | {\n item: NormalizedBreadcrumb;\n type: \"breadcrumb\";\n }\n | {\n hiddenItems: NormalizedBreadcrumb[];\n type: \"collapse\";\n };\n\nexport interface BreadcrumbsNextProps\n extends Omit<ComponentPropsWithoutRef<\"nav\">, \"children\"> {\n /**\n * Breadcrumb items.\n */\n children?: ReactNode;\n /**\n * The number of items to keep after the collapse point.\n * Defaults to 1.\n */\n itemsAfterCollapse?: number;\n /**\n * The number of items to keep before the collapse point.\n * Defaults to 1.\n */\n itemsBeforeCollapse?: number;\n /**\n * The maximum number of breadcrumbs to render before collapsing.\n */\n maxItems?: number;\n /**\n * Render prop to enable customization of the underlying link elements.\n */\n render?: RenderPropsType[\"render\"];\n /**\n * If `true`, breadcrumbs can wrap onto multiple lines.\n * Defaults to `false`.\n */\n wrap?: boolean;\n}\n\nfunction isBreadcrumbNextElement(\n child: ReactNode,\n): child is ReactElement<BreadcrumbNextProps> {\n return (\n isValidElement<BreadcrumbNextProps>(child) && child.type === BreadcrumbNext\n );\n}\n\nfunction getCurrentIndex(items: NormalizedBreadcrumb[]) {\n const explicitCurrentIndex = items.findIndex(({ props }) => props.current);\n\n return explicitCurrentIndex === -1\n ? Math.max(items.length - 1, 0)\n : explicitCurrentIndex;\n}\n\nfunction getCollapseRange({\n currentIndex,\n items,\n itemsAfterCollapse,\n itemsBeforeCollapse,\n}: {\n currentIndex: number;\n items: NormalizedBreadcrumb[];\n itemsAfterCollapse: number;\n itemsBeforeCollapse: number;\n}): CollapseRange | undefined {\n const itemCount = items.length;\n const effectiveItemsAfterCollapse = Math.max(\n itemsAfterCollapse,\n itemCount - currentIndex,\n );\n\n if (itemsBeforeCollapse + effectiveItemsAfterCollapse >= itemCount) {\n return undefined;\n }\n\n const hiddenStart = itemsBeforeCollapse;\n const hiddenEnd = itemCount - effectiveItemsAfterCollapse;\n const hiddenItems = items.slice(hiddenStart, hiddenEnd);\n\n return {\n hiddenItems,\n visibleAfter: items.slice(hiddenEnd),\n visibleBefore: items.slice(0, hiddenStart),\n };\n}\n\nfunction renderSeparator(SeparatorIcon: ElementType) {\n return (\n <SeparatorIcon aria-hidden className={withItemBaseName(\"separator\")} />\n );\n}\n\nexport const BreadcrumbsNext = forwardRef<HTMLElement, BreadcrumbsNextProps>(\n function BreadcrumbsNext(props, ref) {\n const {\n children,\n className,\n itemsAfterCollapse = 1,\n itemsBeforeCollapse = 1,\n maxItems,\n render,\n wrap = false,\n ...rest\n } = props;\n const targetWindow = useWindow();\n const { LevelSeparatorIcon } = useIcon();\n\n useComponentCssInjection({\n testId: \"salt-breadcrumbs-next\",\n css: breadcrumbsNextCss,\n window: targetWindow,\n });\n\n const items = flattenBreadcrumbItems(children)\n .filter(isBreadcrumbNextElement)\n .map((element, index) => ({\n element,\n index,\n key: element.key ?? index,\n props: element.props,\n }));\n\n const currentIndex = getCurrentIndex(items);\n const shouldCollapse =\n !wrap && maxItems !== undefined && items.length > maxItems;\n\n const collapseRange = shouldCollapse\n ? getCollapseRange({\n currentIndex,\n items,\n itemsAfterCollapse,\n itemsBeforeCollapse,\n })\n : undefined;\n\n const renderParts: RenderPart[] = collapseRange\n ? [\n ...collapseRange.visibleBefore.map(\n (item): RenderPart => ({ item, type: \"breadcrumb\" }),\n ),\n {\n hiddenItems: collapseRange.hiddenItems,\n type: \"collapse\",\n },\n ...collapseRange.visibleAfter.map(\n (item): RenderPart => ({ item, type: \"breadcrumb\" }),\n ),\n ]\n : items.map((item): RenderPart => ({ item, type: \"breadcrumb\" }));\n\n return (\n <nav ref={ref} className={clsx(withBaseName(), className)} {...rest}>\n <ol\n className={clsx(withBaseName(\"ol\"), {\n [withBaseName(\"ol-wrap\")]: wrap,\n })}\n >\n {renderParts.map((part, index) => {\n const showSeparator = index < renderParts.length - 1;\n\n if (part.type === \"collapse\") {\n return (\n <li\n className={clsx(\n withItemBaseName(),\n withBaseName(\"collapseItem\"),\n )}\n key=\"breadcrumbs-next-collapse\"\n >\n <BreadcrumbOverflowDisclosure\n currentIndex={currentIndex}\n items={part.hiddenItems}\n render={render}\n />\n {showSeparator ? renderSeparator(LevelSeparatorIcon) : null}\n </li>\n );\n }\n\n return (\n <BreadcrumbNextContext.Provider\n key={part.item.key}\n value={{\n current: part.item.index === currentIndex,\n placement: \"trail\",\n render,\n showSeparator,\n }}\n >\n {part.item.element}\n </BreadcrumbNextContext.Provider>\n );\n })}\n </ol>\n </nav>\n );\n },\n);\n"],"names":["makePrefixer","isValidElement","BreadcrumbNext","forwardRef","BreadcrumbsNext","useWindow","useIcon","useComponentCssInjection","breadcrumbsNextCss","flattenBreadcrumbItems","jsx","clsx","jsxs","BreadcrumbOverflowDisclosure","BreadcrumbNextContext"],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var react = require('react');
|
|
4
|
+
|
|
5
|
+
const BreadcrumbNextContext = react.createContext(void 0);
|
|
6
|
+
function useBreadcrumbNextContext() {
|
|
7
|
+
return react.useContext(BreadcrumbNextContext);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
exports.BreadcrumbNextContext = BreadcrumbNextContext;
|
|
11
|
+
exports.useBreadcrumbNextContext = useBreadcrumbNextContext;
|
|
12
|
+
//# sourceMappingURL=BreadcrumbNextContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BreadcrumbNextContext.js","sources":["../src/breadcrumbs-next/internal/BreadcrumbNextContext.ts"],"sourcesContent":["import type { RenderPropsType } from \"@salt-ds/core\";\nimport { createContext, type Ref, useContext } from \"react\";\n\nexport type BreadcrumbNextPlacement = \"disclosure\" | \"trail\";\n\nexport interface BreadcrumbNextContextValue {\n current: boolean;\n href?: string;\n onNavigate?: () => void;\n placement: BreadcrumbNextPlacement;\n render?: RenderPropsType[\"render\"];\n showSeparator: boolean;\n triggerRef?: Ref<HTMLAnchorElement>;\n}\n\nexport const BreadcrumbNextContext = createContext<\n BreadcrumbNextContextValue | undefined\n>(undefined);\n\nexport function useBreadcrumbNextContext() {\n return useContext(BreadcrumbNextContext);\n}\n"],"names":["createContext","useContext"],"mappings":";;;;AAeO,MAAM,qBAAA,GAAwBA,oBAEnC,MAAS;AAEJ,SAAS,wBAAA,GAA2B;AACzC,EAAA,OAAOC,iBAAW,qBAAqB,CAAA;AACzC;;;;;"}
|