le-kit 0.3.1 → 0.3.3
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/dist/cjs/{index-CNRmviSz.js → index-BDXkMiZB.js} +27 -2
- package/dist/cjs/index-BDXkMiZB.js.map +1 -0
- package/dist/cjs/index.cjs.js +3 -2
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/{le-button_13.cjs.entry.js → le-bar_16.cjs.entry.js} +967 -7
- package/dist/cjs/le-box.cjs.entry.js +2 -2
- package/dist/cjs/le-card.cjs.entry.js +2 -2
- package/dist/cjs/le-combobox.cjs.entry.js +1 -1
- package/dist/cjs/le-header-placeholder.cjs.entry.js +1 -1
- package/dist/cjs/le-kit.cjs.js +2 -2
- package/dist/cjs/le-multiselect.cjs.entry.js +1 -1
- package/dist/cjs/le-number-input.cjs.entry.js +2 -2
- package/dist/cjs/le-round-progress.cjs.entry.js +1 -1
- package/dist/cjs/le-segmented-control.cjs.entry.js +1 -1
- package/dist/cjs/le-stack.cjs.entry.js +2 -2
- package/dist/cjs/le-tab-bar.cjs.entry.js +1 -1
- package/dist/cjs/le-tab-panel.cjs.entry.js +1 -1
- package/dist/cjs/le-tab.cjs.entry.js +2 -2
- package/dist/cjs/le-tabs.cjs.entry.js +2 -2
- package/dist/cjs/le-tag.cjs.entry.js +1 -1
- package/dist/cjs/le-text.cjs.entry.js +2 -2
- package/dist/cjs/le-turntable.cjs.entry.js +1 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/{utils-CZG22_vQ.js → utils-Co3xnkR-.js} +3 -3
- package/dist/cjs/{utils-CZG22_vQ.js.map → utils-Co3xnkR-.js.map} +1 -1
- package/dist/collection/components/le-bar/le-bar.js +59 -7
- package/dist/collection/components/le-bar/le-bar.js.map +1 -1
- package/dist/collection/components/le-component/le-component.js +1 -1
- package/dist/collection/components/le-component/le-component.js.map +1 -1
- package/dist/collection/components/le-icon/le-icon.js +19 -4
- package/dist/collection/components/le-icon/le-icon.js.map +1 -1
- package/dist/collection/components/le-navigation/le-navigation.js +3 -3
- package/dist/collection/components/le-navigation/le-navigation.js.map +1 -1
- package/dist/collection/components/le-select/le-select.js +3 -3
- package/dist/collection/components/le-select/le-select.js.map +1 -1
- package/dist/collection/dist/components/assets/custom-elements.json +1057 -1039
- package/dist/collection/global/app.js +24 -0
- package/dist/collection/global/app.js.map +1 -1
- package/dist/collection/index.js +1 -1
- package/dist/collection/index.js.map +1 -1
- package/dist/components/app.js +194 -0
- package/dist/components/app.js.map +1 -0
- package/dist/components/assets/custom-elements.json +1057 -1039
- package/dist/components/index.js +3 -2
- package/dist/components/index.js.map +1 -1
- package/dist/components/le-bar2.js +41 -8
- package/dist/components/le-bar2.js.map +1 -1
- package/dist/components/le-box.js +1 -1
- package/dist/components/le-button2.js +6 -5
- package/dist/components/le-button2.js.map +1 -1
- package/dist/components/le-card.js +1 -1
- package/dist/components/le-header.js +1 -1
- package/dist/components/le-icon2.js +19 -4
- package/dist/components/le-icon2.js.map +1 -1
- package/dist/components/le-navigation.js +3 -3
- package/dist/components/le-navigation.js.map +1 -1
- package/dist/components/le-number-input.js +1 -1
- package/dist/components/le-popover2.js +1 -1
- package/dist/components/le-stack.js +1 -1
- package/dist/components/le-tab2.js +1 -1
- package/dist/components/le-tabs.js +1 -1
- package/dist/components/utils.js +2 -166
- package/dist/components/utils.js.map +1 -1
- package/dist/docs.json +33 -4
- package/dist/esm/{index-BqH-zsXr.js → index-Bb6rgQY0.js} +27 -3
- package/dist/esm/index-Bb6rgQY0.js.map +1 -0
- package/dist/esm/index.js +2 -2
- package/dist/esm/{le-button_13.entry.js → le-bar_16.entry.js} +965 -8
- package/dist/esm/le-box.entry.js +2 -2
- package/dist/esm/le-card.entry.js +2 -2
- package/dist/esm/le-combobox.entry.js +1 -1
- package/dist/esm/le-header-placeholder.entry.js +1 -1
- package/dist/esm/le-kit.js +3 -3
- package/dist/esm/le-multiselect.entry.js +1 -1
- package/dist/esm/le-number-input.entry.js +2 -2
- package/dist/esm/le-round-progress.entry.js +1 -1
- package/dist/esm/le-segmented-control.entry.js +1 -1
- package/dist/esm/le-stack.entry.js +2 -2
- package/dist/esm/le-tab-bar.entry.js +1 -1
- package/dist/esm/le-tab-panel.entry.js +1 -1
- package/dist/esm/le-tab.entry.js +2 -2
- package/dist/esm/le-tabs.entry.js +2 -2
- package/dist/esm/le-tag.entry.js +1 -1
- package/dist/esm/le-text.entry.js +2 -2
- package/dist/esm/le-turntable.entry.js +1 -1
- package/dist/esm/loader.js +3 -3
- package/dist/esm/{utils-CdBk0DdF.js → utils-CDrgAR8V.js} +3 -3
- package/dist/esm/{utils-CdBk0DdF.js.map → utils-CDrgAR8V.js.map} +1 -1
- package/dist/le-kit/dist/components/assets/custom-elements.json +1057 -1039
- package/dist/le-kit/index.esm.js +1 -1
- package/dist/le-kit/le-kit.esm.js +1 -1
- package/dist/le-kit/{p-ebd86d4f.entry.js → p-166d31fd.entry.js} +2 -2
- package/dist/le-kit/{p-73f7de28.entry.js → p-1d4f84f6.entry.js} +2 -2
- package/dist/le-kit/{p-4b88b0da.entry.js → p-43a17d84.entry.js} +2 -2
- package/dist/le-kit/{p-b21277e8.entry.js → p-52cc2518.entry.js} +2 -2
- package/dist/le-kit/p-5a0efabf.entry.js +2 -0
- package/dist/le-kit/p-5a0efabf.entry.js.map +1 -0
- package/dist/le-kit/{p-b6997587.entry.js → p-5ad31bd2.entry.js} +2 -2
- package/dist/le-kit/{p-ac822433.entry.js → p-5e7e2d06.entry.js} +2 -2
- package/dist/le-kit/{p-07705c61.entry.js → p-68d94a06.entry.js} +2 -2
- package/dist/le-kit/{p-43f87acb.entry.js → p-84a778b1.entry.js} +2 -2
- package/dist/le-kit/{p-c0ccc9aa.entry.js → p-957f50aa.entry.js} +2 -2
- package/dist/le-kit/p-Bb6rgQY0.js +3 -0
- package/dist/le-kit/p-Bb6rgQY0.js.map +1 -0
- package/dist/le-kit/{p-VG5nXRzT.js → p-DG6SMiyr.js} +2 -2
- package/dist/le-kit/{p-VG5nXRzT.js.map → p-DG6SMiyr.js.map} +1 -1
- package/dist/le-kit/{p-249db213.entry.js → p-a44540d7.entry.js} +2 -2
- package/dist/le-kit/{p-0a270831.entry.js → p-bb7a199f.entry.js} +2 -2
- package/dist/le-kit/{p-3a0a57e9.entry.js → p-c8a9e104.entry.js} +2 -2
- package/dist/le-kit/{p-244ff3d7.entry.js → p-ca766522.entry.js} +2 -2
- package/dist/le-kit/{p-764005e3.entry.js → p-cb392b4b.entry.js} +2 -2
- package/dist/le-kit/{p-61edb398.entry.js → p-eb4b678f.entry.js} +2 -2
- package/dist/le-kit/{p-6d0090c1.entry.js → p-f45d86de.entry.js} +2 -2
- package/dist/types/components/le-bar/le-bar.d.ts +6 -0
- package/dist/types/components.d.ts +14 -4
- package/dist/types/global/app.d.ts +22 -0
- package/dist/types/index.d.ts +1 -1
- package/package.json +1 -1
- package/dist/cjs/index-CNRmviSz.js.map +0 -1
- package/dist/cjs/le-bar.cjs.entry.js +0 -428
- package/dist/cjs/le-icon.cjs.entry.js +0 -110
- package/dist/cjs/le-navigation.cjs.entry.js +0 -393
- package/dist/esm/index-BqH-zsXr.js.map +0 -1
- package/dist/esm/le-bar.entry.js +0 -426
- package/dist/esm/le-bar.entry.js.map +0 -1
- package/dist/esm/le-icon.entry.js +0 -108
- package/dist/esm/le-icon.entry.js.map +0 -1
- package/dist/esm/le-navigation.entry.js +0 -391
- package/dist/esm/le-navigation.entry.js.map +0 -1
- package/dist/le-kit/p-0efce278.entry.js +0 -2
- package/dist/le-kit/p-0efce278.entry.js.map +0 -1
- package/dist/le-kit/p-2102a152.entry.js +0 -2
- package/dist/le-kit/p-2102a152.entry.js.map +0 -1
- package/dist/le-kit/p-53d9c363.entry.js +0 -2
- package/dist/le-kit/p-53d9c363.entry.js.map +0 -1
- package/dist/le-kit/p-94f774af.entry.js +0 -2
- package/dist/le-kit/p-94f774af.entry.js.map +0 -1
- package/dist/le-kit/p-BqH-zsXr.js +0 -3
- package/dist/le-kit/p-BqH-zsXr.js.map +0 -1
- /package/dist/le-kit/{p-ebd86d4f.entry.js.map → p-166d31fd.entry.js.map} +0 -0
- /package/dist/le-kit/{p-73f7de28.entry.js.map → p-1d4f84f6.entry.js.map} +0 -0
- /package/dist/le-kit/{p-4b88b0da.entry.js.map → p-43a17d84.entry.js.map} +0 -0
- /package/dist/le-kit/{p-b21277e8.entry.js.map → p-52cc2518.entry.js.map} +0 -0
- /package/dist/le-kit/{p-b6997587.entry.js.map → p-5ad31bd2.entry.js.map} +0 -0
- /package/dist/le-kit/{p-ac822433.entry.js.map → p-5e7e2d06.entry.js.map} +0 -0
- /package/dist/le-kit/{p-07705c61.entry.js.map → p-68d94a06.entry.js.map} +0 -0
- /package/dist/le-kit/{p-43f87acb.entry.js.map → p-84a778b1.entry.js.map} +0 -0
- /package/dist/le-kit/{p-c0ccc9aa.entry.js.map → p-957f50aa.entry.js.map} +0 -0
- /package/dist/le-kit/{p-249db213.entry.js.map → p-a44540d7.entry.js.map} +0 -0
- /package/dist/le-kit/{p-0a270831.entry.js.map → p-bb7a199f.entry.js.map} +0 -0
- /package/dist/le-kit/{p-3a0a57e9.entry.js.map → p-c8a9e104.entry.js.map} +0 -0
- /package/dist/le-kit/{p-244ff3d7.entry.js.map → p-ca766522.entry.js.map} +0 -0
- /package/dist/le-kit/{p-764005e3.entry.js.map → p-cb392b4b.entry.js.map} +0 -0
- /package/dist/le-kit/{p-61edb398.entry.js.map → p-eb4b678f.entry.js.map} +0 -0
- /package/dist/le-kit/{p-6d0090c1.entry.js.map → p-f45d86de.entry.js.map} +0 -0
|
@@ -1,391 +0,0 @@
|
|
|
1
|
-
import { r as registerInstance, d as createEvent, c as getElement, h, H as Host } from './index-BqH-zsXr.js';
|
|
2
|
-
import { g as generateId, c as classnames } from './utils-CdBk0DdF.js';
|
|
3
|
-
|
|
4
|
-
const leNavigationCss = () => `:host{display:block;--le-nav-radius:var(--le-radius-md);--le-nav-gap:var(--le-spacing-2);--le-nav-item-padding-x:var(--le-spacing-1);--le-nav-item-padding-y:var(--le-spacing-2);--le-nav-item-gap:var(--le-spacing-2);--le-nav-color:var(--le-color-text-primary);--le-nav-muted:var(--le-color-text-secondary);--le-nav-hover-bg:var(--le-color-gray-100);--le-nav-selected-bg:var(--le-color-primary);--le-nav-selected-color:var(--le-color-primary-contrast)}:host([orientation='horizontal']:not([wrap])){flex:1 1 0%;min-width:0}.nav-vertical{display:flex;flex-direction:column;gap:var(--le-nav-gap)}.nav-search{width:100%}.nav-search-input{--le-input-radius:var(--le-radius-md)}.nav-empty{padding:var(--le-spacing-2);color:var(--le-nav-muted);font-size:var(--le-font-size-sm)}.nav-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--le-spacing-1)}.nav-row{display:flex;align-items:stretch;gap:var(--le-spacing-1);border-radius:var(--le-nav-radius)}.nav-row:hover{background:var(--le-nav-hover-bg)}.nav-toggle,.nav-toggle-spacer{box-sizing:border-box;width:var(--le-spacing-4);min-width:var(--le-spacing-4);display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:var(--le-nav-radius);color:inherit}.nav-toggle{background:transparent;cursor:pointer;opacity:0.4}.nav-toggle:hover:not(:disabled){opacity:1}.nav-toggle:focus-visible{outline:2px solid var(--le-color-focus);outline-offset:2px;opacity:1}.nav-chevron{display:inline-block;transition:transform var(--le-transition-fast)}.nav-chevron svg{display:block;width:var(--le-spacing-4);height:var(--le-spacing-4)}.nav-node>div>button>.nav-chevron{transform:rotate(-90deg)}.nav-node.open>div>button>.nav-chevron{transform:rotate(0deg)}.nav-item{flex:1;display:inline-flex;align-items:center;gap:var(--le-nav-item-gap);padding:var(--le-nav-item-padding-y) var(--le-nav-item-padding-x) var(--le-nav-item-padding-y) 0;border-radius:var(--le-nav-radius);border:1px solid transparent;background:transparent;text-decoration:none;color:var(--le-nav-color);font-family:var(--le-font-family-base);font-size:var(--le-font-size-md);line-height:var(--le-line-height-tight);cursor:pointer}.nav-item:focus-visible{outline:2px solid var(--le-color-focus);outline-offset:2px}.nav-node.selected>.nav-row{background:var(--le-nav-selected-bg);color:var(--le-nav-selected-color)}.nav-node.selected>.nav-row>.nav-item{color:inherit}.nav-node.disabled>.nav-row>.nav-item{opacity:0.5;cursor:not-allowed}.nav-text{display:flex;flex-direction:column;min-width:0}.nav-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav-description{color:color-mix(in srgb, var(--le-nav-muted) 90%, transparent);font-size:var(--le-font-size-sm);line-height:var(--le-line-height-tight)}.nav-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.nav-icon-end{margin-left:auto}.nav-children{margin-top:var(--le-spacing-1)}.nav-horizontal-wrapper{display:flex;align-items:center;gap:var(--le-spacing-2)}.nav-bar{flex:1 1 0%;min-width:0;--le-bar-gap:var(--le-spacing-2)}.nav-bar.align-end{--le-bar-justify:flex-end}.nav-bar.align-center{--le-bar-justify:center}.nav-bar.align-space-between{--le-bar-justify:space-between}.h-item{display:flex;align-items:center}.h-link{display:inline-flex;align-items:center;gap:var(--le-spacing-2);padding:var(--le-spacing-2) var(--le-spacing-3);border-radius:var(--le-nav-radius);border:1px solid transparent;background:transparent;text-decoration:none;color:var(--le-nav-color);font-family:var(--le-font-family-base);font-size:var(--le-font-size-md);cursor:pointer}.h-link:hover{background:var(--le-nav-hover-bg)}.h-link:focus-visible{outline:2px solid var(--le-color-focus);outline-offset:2px}.h-link.disabled,.h-trigger.disabled{opacity:0.5;pointer-events:none}.h-link.selected,.h-trigger.selected{background:var(--le-nav-selected-bg);color:var(--le-nav-selected-color)}.h-label{white-space:nowrap}.h-trigger{display:inline-flex;align-items:center;gap:var(--le-spacing-1);border-radius:var(--le-nav-radius)}.h-submenu-toggle{width:var(--le-spacing-3);height:var(--le-spacing-3);display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:var(--le-nav-radius);background:transparent;color:currentColor;cursor:pointer}.h-submenu-toggle:hover{background:var(--le-nav-hover-bg)}.overflow-trigger{display:inline-flex;align-items:center;justify-content:center;gap:var(--le-spacing-2);padding:var(--le-spacing-2) var(--le-spacing-3);border-radius:var(--le-nav-radius);border:1px solid transparent;background:transparent;color:var(--le-nav-color);cursor:pointer;font-family:var(--le-font-family-base);font-size:var(--le-font-size-md)}.overflow-trigger:hover{background:var(--le-nav-hover-bg)}.overflow-trigger:focus-visible{outline:2px solid var(--le-color-focus);outline-offset:2px}.nav-overflow-trigger{display:flex;align-items:center}le-popover::part(content){padding:var(--le-spacing-1)}`;
|
|
5
|
-
|
|
6
|
-
const LeNavigation = class {
|
|
7
|
-
constructor(hostRef) {
|
|
8
|
-
registerInstance(this, hostRef);
|
|
9
|
-
this.leNavItemSelect = createEvent(this, "leNavItemSelect");
|
|
10
|
-
this.leNavItemToggle = createEvent(this, "leNavItemToggle");
|
|
11
|
-
}
|
|
12
|
-
get el() { return getElement(this); }
|
|
13
|
-
/**
|
|
14
|
-
* Navigation items.
|
|
15
|
-
* Can be passed as an array or JSON string (same pattern as le-select).
|
|
16
|
-
*/
|
|
17
|
-
items = [];
|
|
18
|
-
/**
|
|
19
|
-
* Layout orientation.
|
|
20
|
-
*/
|
|
21
|
-
orientation = 'horizontal';
|
|
22
|
-
/**
|
|
23
|
-
* Horizontal wrapping behavior.
|
|
24
|
-
* If false, overflow behavior depends on `overflowMode`.
|
|
25
|
-
*/
|
|
26
|
-
wrap = true;
|
|
27
|
-
/**
|
|
28
|
-
* Overflow behavior for horizontal, non-wrapping menus.
|
|
29
|
-
* - more: moves overflow items into a "More" popover
|
|
30
|
-
* - hamburger: turns the whole nav into a hamburger popover
|
|
31
|
-
*/
|
|
32
|
-
overflowMode = 'more';
|
|
33
|
-
/**
|
|
34
|
-
* Minimum number of visible top-level items required to use the "More" overflow.
|
|
35
|
-
* If fewer would be visible, the navigation falls back to hamburger.
|
|
36
|
-
*/
|
|
37
|
-
minVisibleItemsForMore = 2;
|
|
38
|
-
/**
|
|
39
|
-
* Alignment of the menu items within the navigation bar.
|
|
40
|
-
*/
|
|
41
|
-
align = 'start';
|
|
42
|
-
/**
|
|
43
|
-
* Active url for automatic selection.
|
|
44
|
-
*/
|
|
45
|
-
activeUrl = '';
|
|
46
|
-
/**
|
|
47
|
-
* Enables a search input for the vertical navigation.
|
|
48
|
-
*/
|
|
49
|
-
searchable = false;
|
|
50
|
-
/**
|
|
51
|
-
* Placeholder text for the search input.
|
|
52
|
-
*/
|
|
53
|
-
searchPlaceholder = 'Search...';
|
|
54
|
-
/**
|
|
55
|
-
* Text shown when no items match the filter.
|
|
56
|
-
*/
|
|
57
|
-
emptyText = 'No results found';
|
|
58
|
-
/**
|
|
59
|
-
* Whether submenu popovers should include a filter input.
|
|
60
|
-
*/
|
|
61
|
-
submenuSearchable = false;
|
|
62
|
-
/**
|
|
63
|
-
* Fired when a navigation item is activated.
|
|
64
|
-
*
|
|
65
|
-
* This event is cancelable. Call `event.preventDefault()` to prevent
|
|
66
|
-
* default browser navigation and implement custom routing.
|
|
67
|
-
*/
|
|
68
|
-
leNavItemSelect;
|
|
69
|
-
/**
|
|
70
|
-
* Fired when a tree branch is toggled.
|
|
71
|
-
*/
|
|
72
|
-
leNavItemToggle;
|
|
73
|
-
searchQuery = '';
|
|
74
|
-
openState = {};
|
|
75
|
-
/** IDs of items currently in overflow (from le-bar) */
|
|
76
|
-
overflowIds = [];
|
|
77
|
-
/** Whether hamburger mode is active (from le-bar) */
|
|
78
|
-
hamburgerActive = false;
|
|
79
|
-
submenuQueries = {};
|
|
80
|
-
/** Whether the overflow popover is open */
|
|
81
|
-
overflowPopoverOpen = false;
|
|
82
|
-
popoverRefs = new Map();
|
|
83
|
-
instanceId = generateId('le-nav');
|
|
84
|
-
partFromOptionPart(base, part) {
|
|
85
|
-
const raw = (part ?? '').trim();
|
|
86
|
-
if (!raw)
|
|
87
|
-
return base;
|
|
88
|
-
const tokens = raw
|
|
89
|
-
.split(/\s+/)
|
|
90
|
-
.map(t => t.replace(/[^a-zA-Z0-9_-]/g, ''))
|
|
91
|
-
.filter(Boolean);
|
|
92
|
-
if (tokens.length === 0)
|
|
93
|
-
return base;
|
|
94
|
-
return [base, ...tokens.map(t => `${base}-${t}`)].join(' ');
|
|
95
|
-
}
|
|
96
|
-
handleLayoutInputsChange() {
|
|
97
|
-
// Reset overflow state when layout inputs change
|
|
98
|
-
this.overflowIds = [];
|
|
99
|
-
this.hamburgerActive = false;
|
|
100
|
-
}
|
|
101
|
-
disconnectedCallback() {
|
|
102
|
-
// Cleanup if needed
|
|
103
|
-
}
|
|
104
|
-
get parsedItems() {
|
|
105
|
-
if (typeof this.items === 'string') {
|
|
106
|
-
try {
|
|
107
|
-
return JSON.parse(this.items);
|
|
108
|
-
}
|
|
109
|
-
catch {
|
|
110
|
-
return [];
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
return this.items;
|
|
114
|
-
}
|
|
115
|
-
getItemId(item, path) {
|
|
116
|
-
return item.id ?? `${this.instanceId}:${path}`;
|
|
117
|
-
}
|
|
118
|
-
getChildItems(item) {
|
|
119
|
-
return Array.isArray(item.children) ? item.children : [];
|
|
120
|
-
}
|
|
121
|
-
isOpen(item, id) {
|
|
122
|
-
const fromState = this.openState[id];
|
|
123
|
-
if (typeof fromState === 'boolean')
|
|
124
|
-
return fromState;
|
|
125
|
-
return !!item.open;
|
|
126
|
-
}
|
|
127
|
-
setOpen(id, open) {
|
|
128
|
-
if (this.openState[id] === open)
|
|
129
|
-
return;
|
|
130
|
-
this.openState = {
|
|
131
|
-
...this.openState,
|
|
132
|
-
[id]: open,
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
matchesQuery(option, query) {
|
|
136
|
-
if (!query)
|
|
137
|
-
return true;
|
|
138
|
-
const q = query.toLowerCase();
|
|
139
|
-
return (option.label.toLowerCase().includes(q) ||
|
|
140
|
-
(option.description?.toLowerCase().includes(q) ?? false));
|
|
141
|
-
}
|
|
142
|
-
filterTree(items, query, pathPrefix, autoOpen) {
|
|
143
|
-
if (!query)
|
|
144
|
-
return items;
|
|
145
|
-
const result = [];
|
|
146
|
-
items.forEach((item, index) => {
|
|
147
|
-
const path = pathPrefix ? `${pathPrefix}.${index}` : String(index);
|
|
148
|
-
const id = this.getItemId(item, path);
|
|
149
|
-
const children = this.getChildItems(item);
|
|
150
|
-
const filteredChildren = this.filterTree(children, query, path, autoOpen);
|
|
151
|
-
const selfMatch = this.matchesQuery(item, query);
|
|
152
|
-
const childMatch = filteredChildren.length > 0;
|
|
153
|
-
if (selfMatch || childMatch) {
|
|
154
|
-
if (childMatch) {
|
|
155
|
-
autoOpen.add(id);
|
|
156
|
-
}
|
|
157
|
-
if (childMatch && filteredChildren !== children) {
|
|
158
|
-
result.push({
|
|
159
|
-
...item,
|
|
160
|
-
children: filteredChildren,
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
164
|
-
result.push(item);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
});
|
|
168
|
-
return result;
|
|
169
|
-
}
|
|
170
|
-
handleItemSelect = (e, item, id) => {
|
|
171
|
-
if (item.disabled) {
|
|
172
|
-
e.preventDefault();
|
|
173
|
-
e.stopPropagation();
|
|
174
|
-
return;
|
|
175
|
-
}
|
|
176
|
-
const emitted = this.leNavItemSelect.emit({
|
|
177
|
-
item,
|
|
178
|
-
id,
|
|
179
|
-
href: item.href,
|
|
180
|
-
originalEvent: e,
|
|
181
|
-
});
|
|
182
|
-
if (emitted.defaultPrevented) {
|
|
183
|
-
e.preventDefault();
|
|
184
|
-
}
|
|
185
|
-
};
|
|
186
|
-
handleToggle = (e, item, id) => {
|
|
187
|
-
e.preventDefault();
|
|
188
|
-
e.stopPropagation();
|
|
189
|
-
if (item.disabled)
|
|
190
|
-
return;
|
|
191
|
-
const next = !this.isOpen(item, id);
|
|
192
|
-
this.setOpen(id, next);
|
|
193
|
-
this.leNavItemToggle.emit({
|
|
194
|
-
item,
|
|
195
|
-
id,
|
|
196
|
-
open: next,
|
|
197
|
-
originalEvent: e,
|
|
198
|
-
});
|
|
199
|
-
};
|
|
200
|
-
handleSearchInput = (e) => {
|
|
201
|
-
const target = e.target;
|
|
202
|
-
this.searchQuery = target.value;
|
|
203
|
-
};
|
|
204
|
-
handleSubmenuSearchInput = (submenuId, e) => {
|
|
205
|
-
const target = e.target;
|
|
206
|
-
const value = target.value;
|
|
207
|
-
if (this.submenuQueries[submenuId] === value)
|
|
208
|
-
return;
|
|
209
|
-
this.submenuQueries = {
|
|
210
|
-
...this.submenuQueries,
|
|
211
|
-
[submenuId]: value,
|
|
212
|
-
};
|
|
213
|
-
// Position may change as items filter.
|
|
214
|
-
requestAnimationFrame(() => this.popoverRefs.get(submenuId)?.updatePosition());
|
|
215
|
-
};
|
|
216
|
-
handleBarOverflowChange = (e) => {
|
|
217
|
-
this.overflowIds = e.detail.overflowingIds || [];
|
|
218
|
-
this.hamburgerActive = e.detail.hamburgerActive || false;
|
|
219
|
-
};
|
|
220
|
-
openOverflowPopover = () => {
|
|
221
|
-
this.overflowPopoverOpen = true;
|
|
222
|
-
};
|
|
223
|
-
closeOverflowPopover = () => {
|
|
224
|
-
this.overflowPopoverOpen = false;
|
|
225
|
-
};
|
|
226
|
-
renderVerticalList(items, { depth, pathPrefix, autoOpenIds, searchable, searchQuery, searchPlaceholder, emptyText, submenuId, closePopover, }) {
|
|
227
|
-
const query = searchQuery ?? '';
|
|
228
|
-
const openFromSearch = autoOpenIds ?? new Set();
|
|
229
|
-
const filtered = query ? this.filterTree(items, query, pathPrefix, openFromSearch) : items;
|
|
230
|
-
return (h("div", { class: classnames('nav-vertical', { 'is-submenu': !!submenuId }) }, searchable && (h("div", { class: "nav-search" }, h("le-string-input", { mode: "default", class: "nav-search-input", placeholder: searchPlaceholder ?? 'Search...', value: query, onInput: (e) => submenuId ? this.handleSubmenuSearchInput(submenuId, e) : this.handleSearchInput(e) }))), filtered.length === 0 ? (h("div", { class: "nav-empty" }, emptyText ?? this.emptyText)) : (h("ul", { class: "nav-list", role: "tree" }, filtered.map((item, index) => {
|
|
231
|
-
const path = pathPrefix ? `${pathPrefix}.${index}` : String(index);
|
|
232
|
-
const id = this.getItemId(item, path);
|
|
233
|
-
const children = this.getChildItems(item);
|
|
234
|
-
const hasChildren = children.length > 0;
|
|
235
|
-
const open = hasChildren && (this.isOpen(item, id) || openFromSearch.has(id));
|
|
236
|
-
const paddingLeft = `calc(var(--le-nav-item-padding-x) + ${depth} * var(--le-spacing-4))`;
|
|
237
|
-
const TagType = item.href && !item.disabled ? 'a' : 'button';
|
|
238
|
-
const attrs = TagType === 'a'
|
|
239
|
-
? { href: item.href, role: 'treeitem' }
|
|
240
|
-
: { type: 'button', role: 'treeitem' };
|
|
241
|
-
const itemPart = this.partFromOptionPart('item', item.part);
|
|
242
|
-
return (h("li", { class: classnames('nav-node', {
|
|
243
|
-
'disabled': item.disabled,
|
|
244
|
-
'selected': item.selected || (this.activeUrl && item.href === this.activeUrl),
|
|
245
|
-
open,
|
|
246
|
-
'has-children': hasChildren,
|
|
247
|
-
}), key: id, role: "none" }, h("div", { class: "nav-row", style: { paddingLeft } }, hasChildren ? (h("button", { type: "button", class: "nav-toggle", "aria-label": open ? 'Collapse' : 'Expand', "aria-expanded": open ? 'true' : 'false', onClick: (e) => this.handleToggle(e, item, id), disabled: item.disabled }, h("le-icon", { name: "chevron-down", class: "nav-chevron", "aria-hidden": "true" }))) : (h("span", { class: "nav-toggle-spacer", "aria-hidden": "true" })), h(TagType, { class: "nav-item", part: itemPart, ...attrs, "aria-disabled": item.disabled ? 'true' : undefined, onClick: (e) => {
|
|
248
|
-
// For buttons, also toggle if this is a purely structural node.
|
|
249
|
-
this.handleItemSelect(e, item, id);
|
|
250
|
-
if (!item.href && hasChildren && !item.disabled) {
|
|
251
|
-
this.handleToggle(e, item, id);
|
|
252
|
-
return;
|
|
253
|
-
}
|
|
254
|
-
if (!item.disabled && closePopover) {
|
|
255
|
-
closePopover();
|
|
256
|
-
}
|
|
257
|
-
} }, item.iconStart && (h("span", { class: "nav-icon", "aria-hidden": "true" }, item.iconStart)), h("span", { class: "nav-text" }, h("span", { class: "nav-label" }, item.label), item.description && (h("span", { class: "nav-description" }, item.description))), item.iconEnd && (h("span", { class: "nav-icon nav-icon-end", "aria-hidden": "true" }, item.iconEnd)))), hasChildren && (h("le-collapse", { class: "nav-children", closed: !open, noFading: true, role: "group" }, this.renderVerticalList(children, {
|
|
258
|
-
depth: depth + 1,
|
|
259
|
-
pathPrefix: path,
|
|
260
|
-
autoOpenIds: openFromSearch,
|
|
261
|
-
submenuId,
|
|
262
|
-
closePopover,
|
|
263
|
-
})))));
|
|
264
|
-
})))));
|
|
265
|
-
}
|
|
266
|
-
renderHorizontalItem(item, index) {
|
|
267
|
-
const id = this.getItemId(item, String(index));
|
|
268
|
-
const children = this.getChildItems(item);
|
|
269
|
-
const hasChildren = children.length > 0;
|
|
270
|
-
if (!hasChildren) {
|
|
271
|
-
const TagType = item.href && !item.disabled ? 'a' : 'button';
|
|
272
|
-
const attrs = TagType === 'a'
|
|
273
|
-
? { href: item.href, role: 'menuitem' }
|
|
274
|
-
: { type: 'button', role: 'menuitem' };
|
|
275
|
-
const itemPart = this.partFromOptionPart('item', item.part);
|
|
276
|
-
return (h("div", { class: "h-item", "data-bar-id": id }, h(TagType, { class: classnames('h-link', {
|
|
277
|
-
disabled: item.disabled,
|
|
278
|
-
selected: item.selected || (this.activeUrl && item.href === this.activeUrl),
|
|
279
|
-
}), part: itemPart, ...attrs, "aria-disabled": item.disabled ? 'true' : undefined, onClick: (e) => this.handleItemSelect(e, item, id) }, item.iconStart && (h("span", { class: "nav-icon", "aria-hidden": "true" }, item.iconStart)), h("span", { class: "h-label" }, item.label), item.iconEnd && (h("span", { class: "nav-icon nav-icon-end", "aria-hidden": "true" }, item.iconEnd)))));
|
|
280
|
-
}
|
|
281
|
-
const submenuId = id;
|
|
282
|
-
const itemPart = this.partFromOptionPart('item', item.part);
|
|
283
|
-
return (h("div", { class: "h-item", "data-bar-id": id }, h("le-popover", { ref: el => {
|
|
284
|
-
if (el)
|
|
285
|
-
this.popoverRefs.set(submenuId, el);
|
|
286
|
-
}, mode: "default", showClose: false, closeOnClickOutside: true, closeOnEscape: true, position: "bottom", align: "start", minWidth: "240px" }, h("div", { slot: "trigger", class: classnames('h-trigger', {
|
|
287
|
-
disabled: item.disabled,
|
|
288
|
-
selected: item.selected || (this.activeUrl && item.href === this.activeUrl),
|
|
289
|
-
}), part: itemPart, role: "menuitem", "aria-disabled": item.disabled ? 'true' : undefined, onClick: (e) => {
|
|
290
|
-
// Don’t let le-popover auto-toggle from its internal wrapper.
|
|
291
|
-
e.stopPropagation();
|
|
292
|
-
if (item.disabled)
|
|
293
|
-
return;
|
|
294
|
-
if (item.href) {
|
|
295
|
-
this.handleItemSelect(e, item, id);
|
|
296
|
-
this.popoverRefs.get(submenuId)?.hide();
|
|
297
|
-
}
|
|
298
|
-
else {
|
|
299
|
-
this.popoverRefs.get(submenuId)?.toggle();
|
|
300
|
-
}
|
|
301
|
-
} }, item.href ? (h("a", { class: "h-link", href: item.href, onClick: (e) => {
|
|
302
|
-
e.stopPropagation();
|
|
303
|
-
this.handleItemSelect(e, item, id);
|
|
304
|
-
} }, item.iconStart && (h("span", { class: "nav-icon", "aria-hidden": "true" }, item.iconStart)), h("span", { class: "h-label" }, item.label), h("span", { class: "nav-chevron", "aria-hidden": "true" }, h("le-icon", { name: "chevron-down" })))) : (h("button", { type: "button", class: "h-link", onClick: (e) => {
|
|
305
|
-
e.stopPropagation();
|
|
306
|
-
if (item.disabled)
|
|
307
|
-
return;
|
|
308
|
-
this.popoverRefs.get(submenuId)?.toggle();
|
|
309
|
-
} }, item.iconStart && (h("span", { class: "nav-icon", "aria-hidden": "true" }, item.iconStart)), h("span", { class: "h-label" }, item.label), h("span", { class: "nav-chevron", "aria-hidden": "true" }, h("le-icon", { name: "chevron-down" }))))), h("div", { class: "popover-menu" }, this.renderVerticalList(children, {
|
|
310
|
-
depth: 0,
|
|
311
|
-
pathPrefix: String(index),
|
|
312
|
-
searchable: this.submenuSearchable,
|
|
313
|
-
searchQuery: this.submenuQueries[submenuId] ?? '',
|
|
314
|
-
searchPlaceholder: this.searchPlaceholder,
|
|
315
|
-
emptyText: this.emptyText,
|
|
316
|
-
submenuId,
|
|
317
|
-
closePopover: () => this.popoverRefs.get(submenuId)?.hide(),
|
|
318
|
-
})))));
|
|
319
|
-
}
|
|
320
|
-
getOverflowMode() {
|
|
321
|
-
if (this.wrap)
|
|
322
|
-
return 'wrap';
|
|
323
|
-
return this.overflowMode;
|
|
324
|
-
}
|
|
325
|
-
getBarAlignment() {
|
|
326
|
-
// Map le-navigation align to le-bar alignItems
|
|
327
|
-
// 'space-between' doesn't map directly, use 'stretch' as closest
|
|
328
|
-
if (this.align === 'space-between')
|
|
329
|
-
return 'stretch';
|
|
330
|
-
return this.align;
|
|
331
|
-
}
|
|
332
|
-
renderOverflowPopover() {
|
|
333
|
-
const items = this.parsedItems;
|
|
334
|
-
const overflowSet = new Set(this.overflowIds || []);
|
|
335
|
-
// Determine which items to show in the popover
|
|
336
|
-
let itemsToShow;
|
|
337
|
-
if (this.hamburgerActive) {
|
|
338
|
-
// In hamburger mode, show all items
|
|
339
|
-
itemsToShow = items;
|
|
340
|
-
}
|
|
341
|
-
else {
|
|
342
|
-
// In "more" mode, show only overflow items
|
|
343
|
-
itemsToShow = items.filter((item, index) => {
|
|
344
|
-
const id = this.getItemId(item, String(index));
|
|
345
|
-
return overflowSet.has(id);
|
|
346
|
-
});
|
|
347
|
-
}
|
|
348
|
-
if (itemsToShow.length === 0)
|
|
349
|
-
return null;
|
|
350
|
-
const isHamburger = this.hamburgerActive;
|
|
351
|
-
return (h("le-popover", { mode: "default", open: this.overflowPopoverOpen, showClose: false, closeOnClickOutside: true, closeOnEscape: true, position: "bottom", align: "end", minWidth: "260px", onLePopoverClose: this.closeOverflowPopover }, h("button", { slot: "trigger", type: "button", class: "overflow-trigger", part: isHamburger ? 'hamburger-trigger' : 'more-trigger', "aria-label": isHamburger ? 'Open menu' : 'More', onClick: this.openOverflowPopover }, h("slot", { name: isHamburger ? 'hamburger-trigger' : 'more-trigger' }, h("le-icon", { name: isHamburger ? 'hamburger' : 'ellipsis-horizontal' }))), h("div", { class: "popover-menu" }, this.renderVerticalList(itemsToShow, {
|
|
352
|
-
depth: 0,
|
|
353
|
-
pathPrefix: '',
|
|
354
|
-
closePopover: this.closeOverflowPopover,
|
|
355
|
-
}))));
|
|
356
|
-
}
|
|
357
|
-
renderHorizontal() {
|
|
358
|
-
const items = this.parsedItems;
|
|
359
|
-
const overflowMode = this.getOverflowMode();
|
|
360
|
-
const showOverflowButton = (this.overflowIds?.length ?? 0) > 0 || this.hamburgerActive;
|
|
361
|
-
return (h("div", { class: "nav-horizontal-wrapper" }, h("le-bar", { class: classnames('nav-bar', {
|
|
362
|
-
'align-end': this.align === 'end',
|
|
363
|
-
'align-center': this.align === 'center',
|
|
364
|
-
'align-space-between': this.align === 'space-between',
|
|
365
|
-
}), overflow: overflowMode, alignItems: this.getBarAlignment(), disablePopover: true, onLeBarOverflowChange: this.handleBarOverflowChange }, items.map((item, index) => this.renderHorizontalItem(item, index))), showOverflowButton && this.renderOverflowPopover()));
|
|
366
|
-
}
|
|
367
|
-
render() {
|
|
368
|
-
const items = this.parsedItems;
|
|
369
|
-
if (this.orientation === 'horizontal') {
|
|
370
|
-
return (h(Host, null, h("le-component", { component: "le-navigation" }, this.renderHorizontal())));
|
|
371
|
-
}
|
|
372
|
-
return (h(Host, null, h("le-component", { component: "le-navigation" }, this.renderVerticalList(items, {
|
|
373
|
-
depth: 0,
|
|
374
|
-
pathPrefix: '',
|
|
375
|
-
searchable: this.searchable,
|
|
376
|
-
searchQuery: this.searchQuery,
|
|
377
|
-
searchPlaceholder: this.searchPlaceholder,
|
|
378
|
-
emptyText: this.emptyText,
|
|
379
|
-
}))));
|
|
380
|
-
}
|
|
381
|
-
static get watchers() { return {
|
|
382
|
-
"items": ["handleLayoutInputsChange"],
|
|
383
|
-
"orientation": ["handleLayoutInputsChange"],
|
|
384
|
-
"wrap": ["handleLayoutInputsChange"],
|
|
385
|
-
"overflowMode": ["handleLayoutInputsChange"]
|
|
386
|
-
}; }
|
|
387
|
-
};
|
|
388
|
-
LeNavigation.style = leNavigationCss();
|
|
389
|
-
|
|
390
|
-
export { LeNavigation as le_navigation };
|
|
391
|
-
//# sourceMappingURL=le-navigation.entry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"le-navigation.entry.js","sources":["src/components/le-navigation/le-navigation.css?tag=le-navigation&encapsulation=shadow","src/components/le-navigation/le-navigation.tsx"],"sourcesContent":[":host {\n display: block;\n\n --le-nav-radius: var(--le-radius-md);\n --le-nav-gap: var(--le-spacing-2);\n --le-nav-item-padding-x: var(--le-spacing-1);\n --le-nav-item-padding-y: var(--le-spacing-2);\n --le-nav-item-gap: var(--le-spacing-2);\n\n --le-nav-color: var(--le-color-text-primary);\n --le-nav-muted: var(--le-color-text-secondary);\n --le-nav-hover-bg: var(--le-color-gray-100);\n --le-nav-selected-bg: var(--le-color-primary);\n --le-nav-selected-color: var(--le-color-primary-contrast);\n}\n\n/*\n * In horizontal nowrap mode, this component is commonly used inside flex layouts\n * (e.g. headers). If the host shrink-wraps to its contents, enabling overflow\n * (moving items into \"More\") changes the host width, which can cause oscillation\n * between states. Make the host participate in flex sizing instead.\n */\n:host([orientation='horizontal']:not([wrap])) {\n flex: 1 1 0%;\n min-width: 0;\n}\n\n/* ==========================================\n * Vertical navigation\n * ========================================== */\n\n.nav-vertical {\n display: flex;\n flex-direction: column;\n gap: var(--le-nav-gap);\n}\n\n.nav-search {\n width: 100%;\n}\n\n.nav-search-input {\n --le-input-radius: var(--le-radius-md);\n}\n\n.nav-empty {\n padding: var(--le-spacing-2);\n color: var(--le-nav-muted);\n font-size: var(--le-font-size-sm);\n}\n\n.nav-list {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: var(--le-spacing-1);\n}\n\n.nav-row {\n display: flex;\n align-items: stretch;\n gap: var(--le-spacing-1);\n border-radius: var(--le-nav-radius);\n}\n\n.nav-row:hover {\n background: var(--le-nav-hover-bg);\n}\n\n.nav-toggle,\n.nav-toggle-spacer {\n box-sizing: border-box;\n width: var(--le-spacing-4);\n min-width: var(--le-spacing-4);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border: 1px solid transparent;\n border-radius: var(--le-nav-radius);\n color: inherit;\n}\n\n.nav-toggle {\n background: transparent;\n cursor: pointer;\n opacity: 0.4;\n}\n\n.nav-toggle:hover:not(:disabled) {\n opacity: 1;\n}\n\n.nav-toggle:focus-visible {\n outline: 2px solid var(--le-color-focus);\n outline-offset: 2px;\n opacity: 1;\n}\n\n.nav-chevron {\n display: inline-block;\n transition: transform var(--le-transition-fast);\n}\n\n.nav-chevron svg {\n display: block;\n width: var(--le-spacing-4);\n height: var(--le-spacing-4);\n}\n\n.nav-node > div > button > .nav-chevron {\n transform: rotate(-90deg);\n}\n.nav-node.open > div > button > .nav-chevron {\n transform: rotate(0deg);\n}\n\n.nav-item {\n flex: 1;\n display: inline-flex;\n align-items: center;\n gap: var(--le-nav-item-gap);\n padding: var(--le-nav-item-padding-y) var(--le-nav-item-padding-x) var(--le-nav-item-padding-y) 0;\n border-radius: var(--le-nav-radius);\n border: 1px solid transparent;\n background: transparent;\n text-decoration: none;\n color: var(--le-nav-color);\n font-family: var(--le-font-family-base);\n font-size: var(--le-font-size-md);\n line-height: var(--le-line-height-tight);\n cursor: pointer;\n}\n\n.nav-item:focus-visible {\n outline: 2px solid var(--le-color-focus);\n outline-offset: 2px;\n}\n\n.nav-node.selected > .nav-row {\n background: var(--le-nav-selected-bg);\n color: var(--le-nav-selected-color);\n}\n.nav-node.selected > .nav-row > .nav-item {\n color: inherit;\n}\n\n.nav-node.disabled > .nav-row > .nav-item {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.nav-text {\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n\n.nav-label {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.nav-description {\n color: color-mix(in srgb, var(--le-nav-muted) 90%, transparent);\n font-size: var(--le-font-size-sm);\n line-height: var(--le-line-height-tight);\n}\n\n.nav-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.nav-icon-end {\n margin-left: auto;\n}\n\n.nav-children {\n margin-top: var(--le-spacing-1);\n}\n\n/* ==========================================\n * Horizontal navigation (using le-bar)\n * ========================================== */\n\n.nav-horizontal-wrapper {\n display: flex;\n align-items: center;\n gap: var(--le-spacing-2);\n}\n\n.nav-bar {\n flex: 1 1 0%;\n min-width: 0;\n --le-bar-gap: var(--le-spacing-2);\n}\n\n.nav-bar.align-end {\n --le-bar-justify: flex-end;\n}\n\n.nav-bar.align-center {\n --le-bar-justify: center;\n}\n\n.nav-bar.align-space-between {\n --le-bar-justify: space-between;\n}\n\n.h-item {\n display: flex;\n align-items: center;\n}\n\n.h-link {\n display: inline-flex;\n align-items: center;\n gap: var(--le-spacing-2);\n padding: var(--le-spacing-2) var(--le-spacing-3);\n border-radius: var(--le-nav-radius);\n border: 1px solid transparent;\n background: transparent;\n text-decoration: none;\n color: var(--le-nav-color);\n font-family: var(--le-font-family-base);\n font-size: var(--le-font-size-md);\n cursor: pointer;\n}\n\n.h-link:hover {\n background: var(--le-nav-hover-bg);\n}\n\n.h-link:focus-visible {\n outline: 2px solid var(--le-color-focus);\n outline-offset: 2px;\n}\n\n.h-link.disabled,\n.h-trigger.disabled {\n opacity: 0.5;\n pointer-events: none;\n}\n\n.h-link.selected,\n.h-trigger.selected {\n background: var(--le-nav-selected-bg);\n color: var(--le-nav-selected-color);\n}\n\n.h-label {\n white-space: nowrap;\n}\n\n.h-trigger {\n display: inline-flex;\n align-items: center;\n gap: var(--le-spacing-1);\n border-radius: var(--le-nav-radius);\n}\n\n.h-submenu-toggle {\n width: var(--le-spacing-3);\n height: var(--le-spacing-3);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border: 1px solid transparent;\n border-radius: var(--le-nav-radius);\n background: transparent;\n color: currentColor;\n cursor: pointer;\n}\n\n.h-submenu-toggle:hover {\n background: var(--le-nav-hover-bg);\n}\n\n.overflow-trigger {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--le-spacing-2);\n padding: var(--le-spacing-2) var(--le-spacing-3);\n border-radius: var(--le-nav-radius);\n border: 1px solid transparent;\n background: transparent;\n color: var(--le-nav-color);\n cursor: pointer;\n font-family: var(--le-font-family-base);\n font-size: var(--le-font-size-md);\n}\n\n.overflow-trigger:hover {\n background: var(--le-nav-hover-bg);\n}\n\n.overflow-trigger:focus-visible {\n outline: 2px solid var(--le-color-focus);\n outline-offset: 2px;\n}\n\n/* Overflow trigger wrapper in le-bar slot */\n.nav-overflow-trigger {\n display: flex;\n align-items: center;\n}\n\n/* Popover list container */\nle-popover::part(content) {\n padding: var(--le-spacing-1);\n}\n","import {\n Component,\n Prop,\n State,\n Event,\n EventEmitter,\n Element,\n Watch,\n h,\n Host,\n} from '@stencil/core';\nimport { LeOption } from '../../types/options';\nimport { classnames, generateId } from '../../utils/utils';\nimport { LeBarOverflowChangeDetail } from '../le-bar/le-bar';\n\nexport interface LeNavigationItemSelectDetail {\n item: LeOption;\n id: string;\n href?: string;\n originalEvent: MouseEvent;\n}\n\nexport interface LeNavigationItemToggleDetail {\n item: LeOption;\n id: string;\n open: boolean;\n originalEvent: MouseEvent;\n}\n\ninterface VerticalListRenderOptions {\n depth: number;\n pathPrefix: string;\n autoOpenIds?: Set<string>;\n searchable?: boolean;\n searchQuery?: string;\n searchPlaceholder?: string;\n emptyText?: string;\n submenuId?: string;\n closePopover?: () => void;\n}\n\n/**\n * Navigation component with vertical (tree) and horizontal (menu) layouts.\n *\n * - Accepts items as `LeOption[]` or a JSON string.\n * - Supports hierarchical items via `children`.\n * - Supports persisted expansion via `open` on items.\n *\n * @slot hamburger-trigger - Custom trigger contents for the hamburger button\n * @slot more-trigger - Custom trigger contents for the \"More\" button\n *\n * @cmsEditable true\n * @cmsCategory Navigation\n */\n@Component({\n tag: 'le-navigation',\n styleUrl: 'le-navigation.css',\n shadow: true,\n})\nexport class LeNavigation {\n @Element() el: HTMLElement;\n\n /**\n * Navigation items.\n * Can be passed as an array or JSON string (same pattern as le-select).\n */\n @Prop() items: LeOption[] | string = [];\n\n /**\n * Layout orientation.\n */\n @Prop({ reflect: true }) orientation: 'vertical' | 'horizontal' = 'horizontal';\n\n /**\n * Horizontal wrapping behavior.\n * If false, overflow behavior depends on `overflowMode`.\n */\n @Prop({ reflect: true }) wrap: boolean = true;\n\n /**\n * Overflow behavior for horizontal, non-wrapping menus.\n * - more: moves overflow items into a \"More\" popover\n * - hamburger: turns the whole nav into a hamburger popover\n */\n @Prop({ reflect: true }) overflowMode: 'more' | 'hamburger' = 'more';\n\n /**\n * Minimum number of visible top-level items required to use the \"More\" overflow.\n * If fewer would be visible, the navigation falls back to hamburger.\n */\n @Prop() minVisibleItemsForMore: number = 2;\n\n /**\n * Alignment of the menu items within the navigation bar.\n */\n @Prop({ reflect: true }) align: 'start' | 'end' | 'center' | 'space-between' = 'start';\n\n /**\n * Active url for automatic selection.\n */\n @Prop() activeUrl: string = '';\n\n /**\n * Enables a search input for the vertical navigation.\n */\n @Prop() searchable: boolean = false;\n\n /**\n * Placeholder text for the search input.\n */\n @Prop() searchPlaceholder: string = 'Search...';\n\n /**\n * Text shown when no items match the filter.\n */\n @Prop() emptyText: string = 'No results found';\n\n /**\n * Whether submenu popovers should include a filter input.\n */\n @Prop() submenuSearchable: boolean = false;\n\n /**\n * Fired when a navigation item is activated.\n *\n * This event is cancelable. Call `event.preventDefault()` to prevent\n * default browser navigation and implement custom routing.\n */\n @Event({ cancelable: true }) leNavItemSelect: EventEmitter<LeNavigationItemSelectDetail>;\n\n /**\n * Fired when a tree branch is toggled.\n */\n @Event() leNavItemToggle: EventEmitter<LeNavigationItemToggleDetail>;\n\n @State() private searchQuery: string = '';\n\n @State() private openState: Record<string, boolean> = {};\n\n /** IDs of items currently in overflow (from le-bar) */\n @State() private overflowIds: string[] = [];\n\n /** Whether hamburger mode is active (from le-bar) */\n @State() private hamburgerActive: boolean = false;\n\n @State() private submenuQueries: Record<string, string> = {};\n\n /** Whether the overflow popover is open */\n @State() private overflowPopoverOpen: boolean = false;\n\n private popoverRefs: Map<string, HTMLLePopoverElement> = new Map();\n\n private instanceId: string = generateId('le-nav');\n\n private partFromOptionPart(base: string, part?: string): string {\n const raw = (part ?? '').trim();\n if (!raw) return base;\n\n const tokens = raw\n .split(/\\s+/)\n .map(t => t.replace(/[^a-zA-Z0-9_-]/g, ''))\n .filter(Boolean);\n\n if (tokens.length === 0) return base;\n\n return [base, ...tokens.map(t => `${base}-${t}`)].join(' ');\n }\n\n @Watch('items')\n @Watch('orientation')\n @Watch('wrap')\n @Watch('overflowMode')\n handleLayoutInputsChange() {\n // Reset overflow state when layout inputs change\n this.overflowIds = [];\n this.hamburgerActive = false;\n }\n\n disconnectedCallback() {\n // Cleanup if needed\n }\n\n private get parsedItems(): LeOption[] {\n if (typeof this.items === 'string') {\n try {\n return JSON.parse(this.items);\n } catch {\n return [];\n }\n }\n\n return this.items;\n }\n\n private getItemId(item: LeOption, path: string): string {\n return item.id ?? `${this.instanceId}:${path}`;\n }\n\n private getChildItems(item: LeOption): LeOption[] {\n return Array.isArray(item.children) ? item.children : [];\n }\n\n private isOpen(item: LeOption, id: string): boolean {\n const fromState = this.openState[id];\n if (typeof fromState === 'boolean') return fromState;\n return !!item.open;\n }\n\n private setOpen(id: string, open: boolean) {\n if (this.openState[id] === open) return;\n this.openState = {\n ...this.openState,\n [id]: open,\n };\n }\n\n private matchesQuery(option: LeOption, query: string): boolean {\n if (!query) return true;\n\n const q = query.toLowerCase();\n return (\n option.label.toLowerCase().includes(q) ||\n (option.description?.toLowerCase().includes(q) ?? false)\n );\n }\n\n private filterTree(\n items: LeOption[],\n query: string,\n pathPrefix: string,\n autoOpen: Set<string>,\n ): LeOption[] {\n if (!query) return items;\n\n const result: LeOption[] = [];\n\n items.forEach((item, index) => {\n const path = pathPrefix ? `${pathPrefix}.${index}` : String(index);\n const id = this.getItemId(item, path);\n\n const children = this.getChildItems(item);\n const filteredChildren = this.filterTree(children, query, path, autoOpen);\n const selfMatch = this.matchesQuery(item, query);\n const childMatch = filteredChildren.length > 0;\n\n if (selfMatch || childMatch) {\n if (childMatch) {\n autoOpen.add(id);\n }\n\n if (childMatch && filteredChildren !== children) {\n result.push({\n ...item,\n children: filteredChildren,\n });\n } else {\n result.push(item);\n }\n }\n });\n\n return result;\n }\n\n private handleItemSelect = (e: MouseEvent, item: LeOption, id: string) => {\n if (item.disabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n\n const emitted = this.leNavItemSelect.emit({\n item,\n id,\n href: item.href,\n originalEvent: e,\n });\n\n if (emitted.defaultPrevented) {\n e.preventDefault();\n }\n };\n\n private handleToggle = (e: MouseEvent, item: LeOption, id: string) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (item.disabled) return;\n\n const next = !this.isOpen(item, id);\n this.setOpen(id, next);\n\n this.leNavItemToggle.emit({\n item,\n id,\n open: next,\n originalEvent: e,\n });\n };\n\n private handleSearchInput = (e: Event) => {\n const target = e.target as HTMLInputElement;\n this.searchQuery = target.value;\n };\n\n private handleSubmenuSearchInput = (submenuId: string, e: Event) => {\n const target = e.target as HTMLInputElement;\n const value = target.value;\n\n if (this.submenuQueries[submenuId] === value) return;\n\n this.submenuQueries = {\n ...this.submenuQueries,\n [submenuId]: value,\n };\n\n // Position may change as items filter.\n requestAnimationFrame(() => this.popoverRefs.get(submenuId)?.updatePosition());\n };\n\n private handleBarOverflowChange = (e: CustomEvent<LeBarOverflowChangeDetail>) => {\n this.overflowIds = e.detail.overflowingIds || [];\n this.hamburgerActive = e.detail.hamburgerActive || false;\n };\n\n private openOverflowPopover = () => {\n this.overflowPopoverOpen = true;\n };\n\n private closeOverflowPopover = () => {\n this.overflowPopoverOpen = false;\n };\n\n private renderVerticalList(\n items: LeOption[],\n {\n depth,\n pathPrefix,\n autoOpenIds,\n searchable,\n searchQuery,\n searchPlaceholder,\n emptyText,\n submenuId,\n closePopover,\n }: VerticalListRenderOptions,\n ) {\n const query = searchQuery ?? '';\n const openFromSearch = autoOpenIds ?? new Set<string>();\n\n const filtered = query ? this.filterTree(items, query, pathPrefix, openFromSearch) : items;\n\n return (\n <div class={classnames('nav-vertical', { 'is-submenu': !!submenuId })}>\n {searchable && (\n <div class=\"nav-search\">\n <le-string-input\n mode=\"default\"\n class=\"nav-search-input\"\n placeholder={searchPlaceholder ?? 'Search...'}\n value={query}\n onInput={(e: Event) =>\n submenuId ? this.handleSubmenuSearchInput(submenuId, e) : this.handleSearchInput(e)\n }\n />\n </div>\n )}\n\n {filtered.length === 0 ? (\n <div class=\"nav-empty\">{emptyText ?? this.emptyText}</div>\n ) : (\n <ul class=\"nav-list\" role=\"tree\">\n {filtered.map((item, index) => {\n const path = pathPrefix ? `${pathPrefix}.${index}` : String(index);\n const id = this.getItemId(item, path);\n const children = this.getChildItems(item);\n const hasChildren = children.length > 0;\n const open = hasChildren && (this.isOpen(item, id) || openFromSearch.has(id));\n\n const paddingLeft = `calc(var(--le-nav-item-padding-x) + ${depth} * var(--le-spacing-4))`;\n\n const TagType = item.href && !item.disabled ? 'a' : 'button';\n const attrs =\n TagType === 'a'\n ? { href: item.href, role: 'treeitem' }\n : { type: 'button', role: 'treeitem' };\n\n const itemPart = this.partFromOptionPart('item', item.part);\n\n return (\n <li\n class={classnames('nav-node', {\n 'disabled': item.disabled,\n 'selected': item.selected || (this.activeUrl && item.href === this.activeUrl),\n open,\n 'has-children': hasChildren,\n })}\n key={id}\n role=\"none\"\n >\n <div class=\"nav-row\" style={{ paddingLeft }}>\n {hasChildren ? (\n <button\n type=\"button\"\n class=\"nav-toggle\"\n aria-label={open ? 'Collapse' : 'Expand'}\n aria-expanded={open ? 'true' : 'false'}\n onClick={(e: MouseEvent) => this.handleToggle(e, item, id)}\n disabled={item.disabled}\n >\n <le-icon name=\"chevron-down\" class=\"nav-chevron\" aria-hidden=\"true\" />\n </button>\n ) : (\n <span class=\"nav-toggle-spacer\" aria-hidden=\"true\" />\n )}\n\n <TagType\n class=\"nav-item\"\n part={itemPart}\n {...attrs}\n aria-disabled={item.disabled ? 'true' : undefined}\n onClick={(e: MouseEvent) => {\n // For buttons, also toggle if this is a purely structural node.\n this.handleItemSelect(e, item, id);\n if (!item.href && hasChildren && !item.disabled) {\n this.handleToggle(e, item, id);\n return;\n }\n\n if (!item.disabled && closePopover) {\n closePopover();\n }\n }}\n >\n {item.iconStart && (\n <span class=\"nav-icon\" aria-hidden=\"true\">\n {item.iconStart}\n </span>\n )}\n <span class=\"nav-text\">\n <span class=\"nav-label\">{item.label}</span>\n {item.description && (\n <span class=\"nav-description\">{item.description}</span>\n )}\n </span>\n {item.iconEnd && (\n <span class=\"nav-icon nav-icon-end\" aria-hidden=\"true\">\n {item.iconEnd}\n </span>\n )}\n </TagType>\n </div>\n\n {hasChildren && (\n <le-collapse class=\"nav-children\" closed={!open} noFading={true} role=\"group\">\n {this.renderVerticalList(children, {\n depth: depth + 1,\n pathPrefix: path,\n autoOpenIds: openFromSearch,\n submenuId,\n closePopover,\n })}\n </le-collapse>\n )}\n </li>\n );\n })}\n </ul>\n )}\n </div>\n );\n }\n\n private renderHorizontalItem(item: LeOption, index: number) {\n const id = this.getItemId(item, String(index));\n const children = this.getChildItems(item);\n const hasChildren = children.length > 0;\n\n if (!hasChildren) {\n const TagType = item.href && !item.disabled ? 'a' : 'button';\n const attrs =\n TagType === 'a'\n ? { href: item.href, role: 'menuitem' }\n : { type: 'button', role: 'menuitem' };\n\n const itemPart = this.partFromOptionPart('item', item.part);\n\n return (\n <div class=\"h-item\" data-bar-id={id}>\n <TagType\n class={classnames('h-link', {\n disabled: item.disabled,\n selected: item.selected || (this.activeUrl && item.href === this.activeUrl),\n })}\n part={itemPart}\n {...attrs}\n aria-disabled={item.disabled ? 'true' : undefined}\n onClick={(e: MouseEvent) => this.handleItemSelect(e, item, id)}\n >\n {item.iconStart && (\n <span class=\"nav-icon\" aria-hidden=\"true\">\n {item.iconStart}\n </span>\n )}\n <span class=\"h-label\">{item.label}</span>\n {item.iconEnd && (\n <span class=\"nav-icon nav-icon-end\" aria-hidden=\"true\">\n {item.iconEnd}\n </span>\n )}\n </TagType>\n </div>\n );\n }\n\n const submenuId = id;\n\n const itemPart = this.partFromOptionPart('item', item.part);\n\n return (\n <div class=\"h-item\" data-bar-id={id}>\n <le-popover\n ref={el => {\n if (el) this.popoverRefs.set(submenuId, el);\n }}\n mode=\"default\"\n showClose={false}\n closeOnClickOutside={true}\n closeOnEscape={true}\n position=\"bottom\"\n align=\"start\"\n minWidth=\"240px\"\n >\n <div\n slot=\"trigger\"\n class={classnames('h-trigger', {\n disabled: item.disabled,\n selected: item.selected || (this.activeUrl && item.href === this.activeUrl),\n })}\n part={itemPart}\n role=\"menuitem\"\n aria-disabled={item.disabled ? 'true' : undefined}\n onClick={(e: MouseEvent) => {\n // Don’t let le-popover auto-toggle from its internal wrapper.\n e.stopPropagation();\n if (item.disabled) return;\n\n if (item.href) {\n this.handleItemSelect(e, item, id);\n this.popoverRefs.get(submenuId)?.hide();\n } else {\n this.popoverRefs.get(submenuId)?.toggle();\n }\n }}\n >\n {item.href ? (\n <a\n class=\"h-link\"\n href={item.href}\n onClick={(e: MouseEvent) => {\n e.stopPropagation();\n this.handleItemSelect(e, item, id);\n }}\n >\n {item.iconStart && (\n <span class=\"nav-icon\" aria-hidden=\"true\">\n {item.iconStart}\n </span>\n )}\n <span class=\"h-label\">{item.label}</span>\n <span class=\"nav-chevron\" aria-hidden=\"true\">\n <le-icon name=\"chevron-down\" />\n </span>\n </a>\n ) : (\n <button\n type=\"button\"\n class=\"h-link\"\n onClick={(e: MouseEvent) => {\n e.stopPropagation();\n if (item.disabled) return;\n this.popoverRefs.get(submenuId)?.toggle();\n }}\n >\n {item.iconStart && (\n <span class=\"nav-icon\" aria-hidden=\"true\">\n {item.iconStart}\n </span>\n )}\n <span class=\"h-label\">{item.label}</span>\n <span class=\"nav-chevron\" aria-hidden=\"true\">\n <le-icon name=\"chevron-down\" />\n </span>\n </button>\n )}\n </div>\n\n <div class=\"popover-menu\">\n {this.renderVerticalList(children, {\n depth: 0,\n pathPrefix: String(index),\n searchable: this.submenuSearchable,\n searchQuery: this.submenuQueries[submenuId] ?? '',\n searchPlaceholder: this.searchPlaceholder,\n emptyText: this.emptyText,\n submenuId,\n closePopover: () => this.popoverRefs.get(submenuId)?.hide(),\n })}\n </div>\n </le-popover>\n </div>\n );\n }\n\n private getOverflowMode(): 'more' | 'scroll' | 'hamburger' | 'wrap' {\n if (this.wrap) return 'wrap';\n return this.overflowMode;\n }\n\n private getBarAlignment(): 'start' | 'end' | 'center' | 'stretch' {\n // Map le-navigation align to le-bar alignItems\n // 'space-between' doesn't map directly, use 'stretch' as closest\n if (this.align === 'space-between') return 'stretch';\n return this.align;\n }\n\n private renderOverflowPopover() {\n const items = this.parsedItems;\n const overflowSet = new Set(this.overflowIds || []);\n\n // Determine which items to show in the popover\n let itemsToShow: LeOption[];\n\n if (this.hamburgerActive) {\n // In hamburger mode, show all items\n itemsToShow = items;\n } else {\n // In \"more\" mode, show only overflow items\n itemsToShow = items.filter((item, index) => {\n const id = this.getItemId(item, String(index));\n return overflowSet.has(id);\n });\n }\n\n if (itemsToShow.length === 0) return null;\n\n const isHamburger = this.hamburgerActive;\n\n return (\n <le-popover\n mode=\"default\"\n open={this.overflowPopoverOpen}\n showClose={false}\n closeOnClickOutside={true}\n closeOnEscape={true}\n position=\"bottom\"\n align=\"end\"\n minWidth=\"260px\"\n onLePopoverClose={this.closeOverflowPopover}\n >\n <button\n slot=\"trigger\"\n type=\"button\"\n class=\"overflow-trigger\"\n part={isHamburger ? 'hamburger-trigger' : 'more-trigger'}\n aria-label={isHamburger ? 'Open menu' : 'More'}\n onClick={this.openOverflowPopover}\n >\n <slot name={isHamburger ? 'hamburger-trigger' : 'more-trigger'}>\n <le-icon name={isHamburger ? 'hamburger' : 'ellipsis-horizontal'} />\n </slot>\n </button>\n <div class=\"popover-menu\">\n {this.renderVerticalList(itemsToShow, {\n depth: 0,\n pathPrefix: '',\n closePopover: this.closeOverflowPopover,\n })}\n </div>\n </le-popover>\n );\n }\n\n private renderHorizontal() {\n const items = this.parsedItems;\n const overflowMode = this.getOverflowMode();\n const showOverflowButton = (this.overflowIds?.length ?? 0) > 0 || this.hamburgerActive;\n\n return (\n <div class=\"nav-horizontal-wrapper\">\n <le-bar\n class={classnames('nav-bar', {\n 'align-end': this.align === 'end',\n 'align-center': this.align === 'center',\n 'align-space-between': this.align === 'space-between',\n })}\n overflow={overflowMode}\n alignItems={this.getBarAlignment()}\n disablePopover={true}\n onLeBarOverflowChange={this.handleBarOverflowChange}\n >\n {items.map((item, index) => this.renderHorizontalItem(item, index))}\n </le-bar>\n\n {/* Overflow popover - rendered outside le-bar to have full control over content */}\n {showOverflowButton && this.renderOverflowPopover()}\n </div>\n );\n }\n\n render() {\n const items = this.parsedItems;\n\n if (this.orientation === 'horizontal') {\n return (\n <Host>\n <le-component component=\"le-navigation\">{this.renderHorizontal()}</le-component>\n </Host>\n );\n }\n\n return (\n <Host>\n <le-component component=\"le-navigation\">\n {this.renderVerticalList(items, {\n depth: 0,\n pathPrefix: '',\n searchable: this.searchable,\n searchQuery: this.searchQuery,\n searchPlaceholder: this.searchPlaceholder,\n emptyText: this.emptyText,\n })}\n </le-component>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r,d as e,c as t,h as s,H as o}from"./p-BqH-zsXr.js";import{g as a,c as i}from"./p-VG5nXRzT.js";const n=()=>`:host{display:block;--le-bar-gap:var(--le-spacing-2);--le-bar-padding:var(--le-spacing-2);--le-bar-min-height:2.5rem;--le-bar-background:transparent;--le-bar-border-color:var(--le-color-border);--le-bar-border-radius:var(--le-radius-md);--le-bar-button-size:2rem;--le-bar-button-color:var(--le-color-text-primary);--le-bar-button-hover-bg:var(--le-color-gray-100);--le-bar-button-border-radius:var(--le-radius-sm);--le-bar-arrow-size:1.5rem;--le-bar-popover-min-width:200px;--le-bar-popover-gap:var(--le-spacing-1)}.bar-container{display:flex;align-items:center;gap:var(--le-bar-gap);min-height:var(--le-bar-min-height);background:var(--le-bar-background);border-radius:var(--le-bar-border-radius);padding:var(--le-bar-padding)}.bar-container.align-start{justify-content:flex-start}.bar-container.align-end .bar-items{justify-content:flex-end}.bar-container.align-center .bar-items{justify-content:center}.bar-container.align-stretch .bar-items{justify-content:space-evenly}.bar-items{display:flex;flex-wrap:wrap;align-items:center;gap:var(--le-bar-gap);overflow:hidden;min-width:0;flex:1 1 0%;position:relative}.bar-items[style*="height"]{overflow:hidden}.bar-items.is-scrollable{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none}.bar-items.is-scrollable::-webkit-scrollbar{display:none}.bar-items.is-scrollable ::slotted(*){scroll-snap-align:start;flex-shrink:0}.bar-items.is-wrapping{flex-wrap:wrap;overflow:visible;height:auto !important}.bar-controls{display:flex;align-items:center;gap:var(--le-spacing-1);flex-shrink:0}.bar-controls-start{order:-1}.bar-controls-end{order:1}.bar-more-button,.bar-hamburger-button,.bar-all-menu-button{display:inline-flex;align-items:center;justify-content:center;width:var(--le-bar-button-size);height:var(--le-bar-button-size);padding:0;border:none;background:transparent;color:var(--le-bar-button-color);border-radius:var(--le-bar-button-border-radius);cursor:pointer;transition:background-color 0.15s ease}.bar-more-button:hover,.bar-hamburger-button:hover,.bar-all-menu-button:hover{background:var(--le-bar-button-hover-bg)}.bar-more-button:focus-visible,.bar-hamburger-button:focus-visible,.bar-all-menu-button:focus-visible{outline:2px solid var(--le-color-focus);outline-offset:2px}.bar-arrow{display:inline-flex;align-items:center;justify-content:center;width:var(--le-bar-arrow-size);height:var(--le-bar-arrow-size);padding:0;border:none;background:transparent;color:var(--le-bar-button-color);border-radius:var(--le-bar-button-border-radius);cursor:pointer;transition:background-color 0.15s ease, opacity 0.15s ease}.bar-arrow:hover:not(:disabled){background:var(--le-bar-button-hover-bg)}.bar-arrow:focus-visible{outline:2px solid var(--le-color-focus);outline-offset:2px}.bar-arrow:disabled,.bar-arrow.disabled{opacity:0.3;cursor:not-allowed}.arrow-icon-start{transform:rotate(90deg)}.arrow-icon-end{transform:rotate(-90deg)}.bar-overflow-trigger,.bar-all-menu-trigger{display:inline-flex}.bar-popover-content{display:flex;flex-direction:column;gap:var(--le-bar-popover-gap);min-width:var(--le-bar-popover-min-width);padding:var(--le-spacing-2)}.bar-popover-item{cursor:pointer}.bar-popover-item:hover{background:var(--le-bar-button-hover-bg);border-radius:var(--le-bar-button-border-radius)}:host(.hamburger-active) .bar-items{visibility:hidden;pointer-events:none}`;const l=class{constructor(t){r(this,t);this.leBarOverflowChange=e(this,"leBarOverflowChange")}get el(){return t(this)}overflow="more";alignItems="start";arrows=false;disablePopover=false;showAllMenu=false;leBarOverflowChange;popoverOpen=false;hamburgerActive=false;overflowingIds=new Set;canScrollStart=false;canScrollEnd=false;allMenuOpen=false;containerHeight=null;itemsContainerEl;moreButtonEl;resizeObserver;mutationObserver;instanceId=a("le-bar");itemMap=new Map;pendingRecalc=null;handleOverflowChange(){this.resetOverflowState();this.scheduleOverflowRecalc()}handleSlotChange(){this.scheduleOverflowRecalc()}connectedCallback(){this.setupObservers()}componentDidLoad(){this.scheduleOverflowRecalc()}componentDidRender(){this.scheduleOverflowRecalc()}disconnectedCallback(){this.resizeObserver?.disconnect();this.mutationObserver?.disconnect()}async recalculate(){this.computeOverflow()}setupObservers(){if(typeof ResizeObserver!=="undefined"){this.resizeObserver=new ResizeObserver((()=>{this.computeOverflow();this.updateScrollState()}))}this.mutationObserver=new MutationObserver((()=>{this.scheduleOverflowRecalc()}));this.mutationObserver.observe(this.el,{childList:true,subtree:false})}observeContainer(r){if(!this.resizeObserver)return;this.resizeObserver.disconnect();if(r)this.resizeObserver.observe(r)}scheduleOverflowRecalc(){if(this.pendingRecalc!==null){cancelAnimationFrame(this.pendingRecalc)}this.pendingRecalc=requestAnimationFrame((()=>{this.pendingRecalc=null;this.computeOverflow()}))}resetOverflowState(){this.hamburgerActive=false;this.overflowingIds=new Set;this.containerHeight=null;this.popoverOpen=false}getSlottedItems(){return Array.from(this.el.children).filter((r=>r instanceof HTMLElement&&!r.hasAttribute("slot")))}getItemId(r,e){return r.id||r.dataset.barId||`${this.instanceId}-item-${e}`}computeOverflow(){if(this.overflow==="wrap"||this.overflow==="scroll"){this.resetOverflowState();this.updateScrollState();return}const r=this.itemsContainerEl;if(!r)return;const e=this.getSlottedItems();if(e.length===0){this.resetOverflowState();return}this.itemMap.clear();e.forEach(((r,e)=>{const t=this.getItemId(r,e);this.itemMap.set(t,r)}));const t=e.map(((r,e)=>({item:r,id:this.getItemId(r,e),rect:r.getBoundingClientRect()})));if(t.length===0){return}const s=r.getBoundingClientRect();const o=t.map((r=>r.rect.top-s.top));const a=Math.min(...o);const i=15;const n=t.filter((r=>r.rect.top-s.top<=a+i));const l=t.filter((r=>r.rect.top-s.top>a+i));const h=n.length>0?Math.max(...n.map((r=>r.rect.bottom-s.top))):0;if(this.overflow==="hamburger"){const r=l.length>0;if(r!==this.hamburgerActive){this.hamburgerActive=r;this.emitOverflowChange()}if(r&&h>0){this.containerHeight=h}else{this.containerHeight=null}}else{const r=new Set(l.map((r=>r.id)));if(r.size>0&&this.moreButtonEl){const e=this.moreButtonEl.getBoundingClientRect();const t=e.top-s.top;if(t>a+i){const e=n[n.length-1];if(e){r.add(e.id)}}}const e=r.size!==this.overflowingIds.size||![...r].every((r=>this.overflowingIds.has(r)));if(e){this.overflowingIds=r;this.emitOverflowChange()}if((r?.size??0)>0&&h>0){this.containerHeight=h}else{this.containerHeight=null}}}emitOverflowChange(){this.leBarOverflowChange.emit({overflowingIds:[...this.overflowingIds??[]],hamburgerActive:this.hamburgerActive})}updateScrollState(){if(this.overflow!=="scroll"||!this.itemsContainerEl){this.canScrollStart=false;this.canScrollEnd=false;return}const r=this.itemsContainerEl;this.canScrollStart=r.scrollLeft>0;this.canScrollEnd=r.scrollLeft<r.scrollWidth-r.clientWidth-1}handleScroll=()=>{this.updateScrollState()};scrollToStart=()=>{if(!this.itemsContainerEl)return;const r=this.getSlottedItems();const e=this.itemsContainerEl;const t=e.scrollLeft;let s=0;for(let o=r.length-1;o>=0;o--){const a=r[o];const i=a.offsetLeft-e.offsetLeft;if(i<t-1){s=i;break}}e.scrollTo({left:s,behavior:"smooth"});setTimeout((()=>this.updateScrollState()),300)};scrollToEnd=()=>{if(!this.itemsContainerEl)return;const r=this.itemsContainerEl;const e=this.getSlottedItems();if(e.length===0)return;const t=r.clientWidth;const s=r.scrollLeft;let o=r.scrollWidth-t;for(const t of e){const e=t.offsetLeft-r.offsetLeft;if(e>s+1){o=e;break}}r.scrollTo({left:Math.max(0,o),behavior:"smooth"});setTimeout((()=>this.updateScrollState()),300)};togglePopover=()=>{this.popoverOpen=!this.popoverOpen};closePopover=()=>{this.popoverOpen=false};toggleAllMenu=()=>{this.allMenuOpen=!this.allMenuOpen};closeAllMenu=()=>{this.allMenuOpen=false};handleItemClick=(r,e)=>{const t=this.itemMap.get(e);if(t){const r=new MouseEvent("click",{bubbles:true,cancelable:true,view:window});t.dispatchEvent(r)}this.closePopover();this.closeAllMenu()};renderMoreButton(){const r=this.el.querySelector('[slot="more"]');return s("button",{class:"bar-more-button",part:"more-button",ref:r=>this.moreButtonEl=r,onClick:this.togglePopover,"aria-expanded":String(this.popoverOpen),"aria-haspopup":"true"},r?s("slot",{name:"more"}):s("le-icon",{name:"ellipsis-horizontal"}))}renderHamburgerButton(){const r=this.el.querySelector('[slot="hamburger"]');return s("button",{class:"bar-hamburger-button",part:"hamburger-button",onClick:this.togglePopover,"aria-expanded":String(this.popoverOpen),"aria-haspopup":"true"},r?s("slot",{name:"hamburger"}):s("le-icon",{name:"hamburger"}))}renderScrollArrows(){if(!this.arrows||this.overflow!=="scroll")return null;const r=this.el.querySelector('[slot="start-arrow"]');const e=this.el.querySelector('[slot="end-arrow"]');return[s("button",{class:i("bar-arrow","bar-arrow-start",{disabled:!this.canScrollStart}),part:"arrow-start",onClick:this.scrollToStart,disabled:!this.canScrollStart,"aria-label":"Scroll to start"},r?s("slot",{name:"start-arrow"}):s("le-icon",{name:"chevron-down",class:"arrow-icon-start"})),s("button",{class:i("bar-arrow","bar-arrow-end",{disabled:!this.canScrollEnd}),part:"arrow-end",onClick:this.scrollToEnd,disabled:!this.canScrollEnd,"aria-label":"Scroll to end"},e?s("slot",{name:"end-arrow"}):s("le-icon",{name:"chevron-down",class:"arrow-icon-end"}))]}renderAllMenuButton(){if(!this.showAllMenu)return null;const r=this.el.querySelector('[slot="all-menu"]');return s("button",{class:"bar-all-menu-button",part:"all-menu-button",onClick:this.toggleAllMenu,"aria-expanded":String(this.allMenuOpen),"aria-haspopup":"true"},r?s("slot",{name:"all-menu"}):s("le-icon",{name:"hamburger"}))}renderPopoverContent(r){return s("div",{class:"bar-popover-content",part:"popover-content"},r.map((({id:r,item:e})=>s("div",{class:"bar-popover-item",key:r,onClick:e=>this.handleItemClick(e,r),innerHTML:e.outerHTML}))))}renderOverflowPopover(){if(this.overflow!=="more"&&this.overflow!=="hamburger")return null;const r=this.getSlottedItems();let e=[];if(this.overflow==="hamburger"&&this.hamburgerActive){e=r.map(((r,e)=>({id:this.getItemId(r,e),item:r})))}else if(this.overflow==="more"&&(this.overflowingIds?.size??0)>0){e=r.map(((r,e)=>({id:this.getItemId(r,e),item:r}))).filter((({id:r})=>this.overflowingIds?.has(r)))}if(e.length===0)return null;return s("le-popover",{mode:"default",open:this.popoverOpen,position:"bottom",align:"end",showClose:false,closeOnClickOutside:true,closeOnEscape:true,onLePopoverClose:this.closePopover},s("div",{slot:"trigger",class:"bar-overflow-trigger"},this.overflow==="hamburger"?this.renderHamburgerButton():this.renderMoreButton()),this.renderPopoverContent(e))}renderAllMenuPopover(){if(!this.showAllMenu)return null;const r=this.getSlottedItems();const e=r.map(((r,e)=>({id:this.getItemId(r,e),item:r})));const t=this.showAllMenu==="start"?"start":"end";return s("le-popover",{mode:"default",open:this.allMenuOpen,position:"bottom",align:t,showClose:false,closeOnClickOutside:true,closeOnEscape:true,onLePopoverClose:this.closeAllMenu},s("div",{slot:"trigger",class:"bar-all-menu-trigger"},this.renderAllMenuButton()),this.renderPopoverContent(e))}render(){const r=!this.disablePopover&&(this.overflow==="more"&&(this.overflowingIds?.size??0)>0||this.overflow==="hamburger"&&this.hamburgerActive);const e={};if(this.containerHeight!==null&&(this.overflow==="more"||this.overflow==="hamburger")){e.height=`${this.containerHeight}px`}const t=this.showAllMenu==="start";const a=this.showAllMenu===true||this.showAllMenu==="end";return s(o,{key:"b15277217f45b9a2b4015e1062192ad7bfcafae3",class:i({"overflow-more":this.overflow==="more","overflow-scroll":this.overflow==="scroll","overflow-hamburger":this.overflow==="hamburger","overflow-wrap":this.overflow==="wrap","hamburger-active":this.hamburgerActive,"has-overflow":(this.overflowingIds?.size??0)>0||this.hamburgerActive})},s("div",{key:"cc8ff523ebc98f307cae7313a1998468e98dd712",class:i("bar-container",{[`align-${this.alignItems}`]:true}),part:"container"},this.overflow==="scroll"&&this.arrows&&s("div",{key:"00f0afbd5b4280f4b231fa4d499ef8a7c0e4bd47",class:"bar-controls bar-controls-start"},this.renderScrollArrows()?.[0]),t&&s("div",{key:"57234a8145f97f7a803c0488b520786a25584a9d",class:"bar-controls bar-controls-start"},this.renderAllMenuPopover()),s("div",{key:"15db1e36049182161823998fc1041ad91d327816",class:i("bar-items",{"is-scrollable":this.overflow==="scroll","is-wrapping":this.overflow==="wrap"}),style:e,ref:r=>{this.itemsContainerEl=r;this.observeContainer(r)},onScroll:this.overflow==="scroll"?this.handleScroll:undefined},s("slot",{key:"6b967b1c0f251e1214b0ae58b18e767ef9d096a8"})),r&&s("div",{key:"b77c30910b01bffae047f9744f2589743a29eb29",class:"bar-controls bar-controls-end"},this.renderOverflowPopover()),a&&s("div",{key:"971d727e51f4b4682ed1b600e930b2f33b3c0a65",class:"bar-controls bar-controls-end"},this.renderAllMenuPopover()),this.overflow==="scroll"&&this.arrows&&s("div",{key:"a6b6fc87ceae32503fc55a0da54b1e38f7f95ff7",class:"bar-controls bar-controls-end"},this.renderScrollArrows()?.[1])))}static get watchers(){return{overflow:["handleOverflowChange"]}}};l.style=n();export{l as le_bar};
|
|
2
|
-
//# sourceMappingURL=p-0efce278.entry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["registerInstance","createEvent","getElement","h","Host","generateId","classnames","leBarCss","LeBar","constructor","hostRef","this","leBarOverflowChange","el","overflow","alignItems","arrows","disablePopover","showAllMenu","popoverOpen","hamburgerActive","overflowingIds","Set","canScrollStart","canScrollEnd","allMenuOpen","containerHeight","itemsContainerEl","moreButtonEl","resizeObserver","mutationObserver","instanceId","itemMap","Map","pendingRecalc","handleOverflowChange","resetOverflowState","scheduleOverflowRecalc","handleSlotChange","connectedCallback","setupObservers","componentDidLoad","componentDidRender","disconnectedCallback","disconnect","recalculate","computeOverflow","ResizeObserver","updateScrollState","MutationObserver","observe","childList","subtree","observeContainer","cancelAnimationFrame","requestAnimationFrame","getSlottedItems","Array","from","children","filter","HTMLElement","hasAttribute","getItemId","index","id","dataset","barId","container","items","length","clear","forEach","item","set","itemRects","map","rect","getBoundingClientRect","containerRect","topValues","i","top","minTop","Math","min","tolerance","firstRowItems","overflowItems","firstRowBottom","max","bottom","shouldHamburger","emitOverflowChange","newOverflowingIds","size","moreRect","moreTop","lastVisible","add","hasChanged","every","has","emit","scrollLeft","scrollWidth","clientWidth","handleScroll","scrollToStart","currentScroll","targetScroll","itemLeft","offsetLeft","scrollTo","left","behavior","setTimeout","scrollToEnd","containerWidth","togglePopover","closePopover","toggleAllMenu","closeAllMenu","handleItemClick","_e","originalItem","get","cloneEvent","MouseEvent","bubbles","cancelable","view","window","dispatchEvent","renderMoreButton","hasSlottedMore","querySelector","class","part","ref","onClick","String","name","renderHamburgerButton","hasSlottedHamburger","renderScrollArrows","hasSlottedStartArrow","hasSlottedEndArrow","disabled","renderAllMenuButton","hasSlottedAllMenu","renderPopoverContent","itemsToShow","key","e","innerHTML","outerHTML","renderOverflowPopover","mode","open","position","align","showClose","closeOnClickOutside","closeOnEscape","onLePopoverClose","slot","renderAllMenuPopover","render","showOverflowButton","containerStyle","height","showAllMenuAtStart","showAllMenuAtEnd","style","onScroll","undefined","watchers"],"sources":["0"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as t,c as s,h as e,e as i}from"./p-BqH-zsXr.js";const n=()=>`:host{display:inline-block;width:var(--le-icon-size, var(--le-size-4));height:var(--le-icon-size, var(--le-size-4));color:var(--le-icon-color, var(--le-color-text-primary))}:host svg{display:block;fill:currentColor}`;const r={};const o={};async function a({name:t}){if(r[t]){return r[t]}if(!o[t]){console.log(`Fetching icon "${t}"`,i(`./assets/icons/${t}.json`));o[t]=fetch(i(`./assets/icons/${t}.json`)).then((t=>t.json())).catch((()=>{console.error(`"${t}" is not a valid name`);return""}))}const s=await o[t];r[t]=s;return s}const c=class{constructor(s){t(this,s)}get el(){return s(this)}name=null;size=16;iconData=null;visible=false;async loadIconData(){const{name:t,visible:s}=this;if(!t||!s){return}this.iconData=await a({name:t})}intersectionObserver;connectedCallback(){this.waitUntilVisible((()=>{this.visible=true;this.loadIconData()}))}disconnectedCallback(){if(this.intersectionObserver){this.intersectionObserver.disconnect();this.intersectionObserver=null}}async componentWillLoad(){this.loadIconData()}waitUntilVisible(t){if(typeof window==="undefined"||!window.IntersectionObserver){t();return}this.intersectionObserver=new IntersectionObserver((s=>{s.forEach((s=>{if(s.isIntersecting){this.intersectionObserver.disconnect();this.intersectionObserver=null;t()}}))}),{rootMargin:"50px"});this.intersectionObserver.observe(this.el)}renderSVGContent(t){if(!t||t.length===0){return null}const s=t=>{const{tag:i,children:n,...r}=t;return e(i,r,n?n.map(s):null)};const i=t.map(s);return i}render(){return e("svg",{key:"ef551908a289cd765ae88ded83b99057d510e142",xmlns:"http://www.w3.org/2000/svg",fill:"currentColor",height:this.size||16,width:this.size||16,viewBox:this.iconData?.viewBox||`0 0 ${this.size||16} ${this.size||16}`},this.renderSVGContent(this.iconData?.children))}static get assetsDirs(){return["assets/icons"]}static get watchers(){return{name:["loadIconData"]}}};c.style=n();export{c as le_icon};
|
|
2
|
-
//# sourceMappingURL=p-2102a152.entry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["registerInstance","getElement","h","getAssetPath","leIconCss","iconCache","requestCache","async","fetchIcon","name","console","log","fetch","then","resp","json","catch","error","path","LeIcon","constructor","hostRef","this","el","size","iconData","visible","loadIconData","intersectionObserver","connectedCallback","waitUntilVisible","disconnectedCallback","disconnect","componentWillLoad","callback","window","IntersectionObserver","entries","forEach","entry","isIntersecting","rootMargin","observe","renderSVGContent","children","length","createElement","node","tag","attrs","map","svgElements","render","key","xmlns","fill","height","width","viewBox","assetsDirs","watchers","style"],"sources":["0"],"mappings":"YAAcA,OAAuBC,OAAYC,OAAQC,MAAoB,kBAE7E,MAAMC,EAAY,IAAM,0NAExB,MAAMC,EAAY,CAAC,EACnB,MAAMC,EAAe,CAAC,EACtBC,eAAeC,GAAUC,KAAEA,IACvB,GAAIJ,EAAUI,GAAO,CACjB,OAAOJ,EAAUI,EACrB,CACA,IAAKH,EAAaG,GAAO,CACrBC,QAAQC,IAAI,kBAAkBF,KAASN,EAAa,kBAAkBM,WACtEH,EAAaG,GAAQG,MAAMT,EAAa,kBAAkBM,WACrDI,MAAKC,GAAQA,EAAKC,SAClBC,OAAM,KACPN,QAAQO,MAAM,IAAIR,0BAClB,MAAO,EAAE,GAEjB,CACA,MAAMS,QAAaZ,EAAaG,GAChCJ,EAAUI,GAAQS,EAClB,OAAOA,CACX,CACA,MAAMC,EAAS,MACX,WAAAC,CAAYC,GACRrB,EAAiBsB,KAAMD,EAC3B,CACA,MAAIE,GAAO,OAAOtB,EAAWqB,KAAO,CAKpCb,KAAO,KAIPe,KAAO,GACPC,SAAW,KACXC,QAAU,MACV,kBAAMC,GACF,MAAMlB,KAAEA,EAAIiB,QAAEA,GAAYJ,KAC1B,IAAKb,IAASiB,EAAS,CACnB,MACJ,CACAJ,KAAKG,eAAiBjB,EAAU,CAAEC,QACtC,CACAmB,qBACA,iBAAAC,GACIP,KAAKQ,kBAAiB,KAClBR,KAAKI,QAAU,KACfJ,KAAKK,cAAc,GAE3B,CACA,oBAAAI,GACI,GAAIT,KAAKM,qBAAsB,CAC3BN,KAAKM,qBAAqBI,aAC1BV,KAAKM,qBAAuB,IAChC,CACJ,CACA,uBAAMK,GACFX,KAAKK,cACT,CACA,gBAAAG,CAAiBI,GACb,UAAWC,SAAW,cACjBA,OAAOC,qBAAsB,CAC9BF,IACA,MACJ,CACAZ,KAAKM,qBAAuB,IAAIQ,sBAAqBC,IACjDA,EAAQC,SAAQC,IACZ,GAAIA,EAAMC,eAAgB,CACtBlB,KAAKM,qBAAqBI,aAC1BV,KAAKM,qBAAuB,KAC5BM,GACJ,IACF,GACH,CAAEO,WAAY,SACjBnB,KAAKM,qBAAqBc,QAAQpB,KAAKC,GAC3C,CAOA,gBAAAoB,CAAiBC,GACb,IAAKA,GAAYA,EAASC,SAAW,EAAG,CACpC,OAAO,IACX,CACA,MAAMC,EAAgBC,IAClB,MAAMC,IAAEA,EAAGJ,SAAEA,KAAaK,GAAUF,EACpC,OAAO7C,EAAE8C,EAAKC,EAAOL,EAAWA,EAASM,IAAIJ,GAAiB,KAAK,EAEvE,MAAMK,EAAcP,EAASM,IAAIJ,GACjC,OAAOK,CACX,CACA,MAAAC,GACI,OAAQlD,EAAE,MAAO,CAAEmD,IAAK,2CAA4CC,MAAO,6BAA8BC,KAAM,eAAgBC,OAAQlC,KAAKE,MAAQ,GAAIiC,MAAOnC,KAAKE,MAAQ,GAAIkC,QAASpC,KAAKG,UAAUiC,SAAW,OAAOpC,KAAKE,MAAQ,MAAMF,KAAKE,MAAQ,MAAQF,KAAKqB,iBAAiBrB,KAAKG,UAAUmB,UAC3S,CACA,qBAAWe,GAAe,MAAO,CAAC,eAAiB,CACnD,mBAAWC,GAAa,MAAO,CAC3BnD,KAAQ,CAAC,gBACV,GAEPU,EAAO0C,MAAQzD,WAENe","ignoreList":[]}
|