le-kit 0.2.0 → 0.2.2

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.
Files changed (35) hide show
  1. package/dist/cjs/le-kit.cjs.js +1 -1
  2. package/dist/cjs/le-navigation.cjs.entry.js +115 -37
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/collection/components/le-navigation/le-navigation.css +4 -0
  5. package/dist/collection/components/le-navigation/le-navigation.js +179 -37
  6. package/dist/collection/components/le-navigation/le-navigation.js.map +1 -1
  7. package/dist/collection/dist/components/assets/custom-elements.json +534 -386
  8. package/dist/collection/dist/components/assets/icons/ellipsis-horizontal.json +14 -0
  9. package/dist/collection/dist/components/assets/icons/ellipsis-vertical.json +14 -0
  10. package/dist/collection/dist/components/assets/icons/hamburger.json +14 -0
  11. package/dist/collection/types/options.js.map +1 -1
  12. package/dist/components/assets/custom-elements.json +534 -386
  13. package/dist/components/assets/icons/ellipsis-horizontal.json +14 -0
  14. package/dist/components/assets/icons/ellipsis-vertical.json +14 -0
  15. package/dist/components/assets/icons/hamburger.json +14 -0
  16. package/dist/components/le-navigation.js +119 -37
  17. package/dist/components/le-navigation.js.map +1 -1
  18. package/dist/docs.json +126 -8
  19. package/dist/esm/le-kit.js +1 -1
  20. package/dist/esm/le-navigation.entry.js +115 -37
  21. package/dist/esm/le-navigation.entry.js.map +1 -1
  22. package/dist/esm/loader.js +1 -1
  23. package/dist/le-kit/dist/components/assets/custom-elements.json +534 -386
  24. package/dist/le-kit/dist/components/assets/icons/ellipsis-horizontal.json +14 -0
  25. package/dist/le-kit/dist/components/assets/icons/ellipsis-vertical.json +14 -0
  26. package/dist/le-kit/dist/components/assets/icons/hamburger.json +14 -0
  27. package/dist/le-kit/le-kit.esm.js +1 -1
  28. package/dist/le-kit/p-c08fcb00.entry.js +2 -0
  29. package/dist/le-kit/p-c08fcb00.entry.js.map +1 -0
  30. package/dist/types/components/le-navigation/le-navigation.d.ts +21 -0
  31. package/dist/types/components.d.ts +32 -2
  32. package/dist/types/types/options.d.ts +5 -0
  33. package/package.json +1 -1
  34. package/dist/le-kit/p-8c5a8f1e.entry.js +0 -2
  35. package/dist/le-kit/p-8c5a8f1e.entry.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"le-navigation.js","sourceRoot":"","sources":["../../../src/components/le-navigation/le-navigation.tsx"],"names":[],"mappings":"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","sourcesContent":["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';\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}\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 * @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' = 'vertical';\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 * 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 @State() private overflowIds: string[] = [];\n\n @State() private hamburgerActive: boolean = false;\n\n @State() private submenuQueries: Record<string, string> = {};\n\n private navContainerEl?: HTMLElement;\n\n private measureEl?: HTMLElement;\n private measureMoreEl?: HTMLElement;\n\n private topItemEls: Map<string, HTMLElement> = new Map();\n\n private popoverRefs: Map<string, HTMLLePopoverElement> = new Map();\n\n private resizeObserver?: ResizeObserver;\n\n private instanceId: string = generateId('le-nav');\n\n @Watch('items')\n @Watch('orientation')\n @Watch('wrap')\n @Watch('overflowMode')\n handleLayoutInputsChange() {\n this.scheduleOverflowRecalc();\n }\n\n componentDidLoad() {\n this.setupResizeObserver();\n this.scheduleOverflowRecalc();\n }\n\n disconnectedCallback() {\n this.resizeObserver?.disconnect();\n this.resizeObserver = undefined;\n }\n\n componentDidRender() {\n // In case refs change after render.\n this.scheduleOverflowRecalc();\n }\n\n private setupResizeObserver() {\n this.resizeObserver?.disconnect();\n\n if (typeof ResizeObserver === 'undefined') return;\n\n this.resizeObserver = new ResizeObserver(() => this.computeOverflow());\n this.observeContainer(this.navContainerEl);\n }\n\n private observeContainer(el?: HTMLElement) {\n if (!this.resizeObserver) return;\n this.resizeObserver.disconnect();\n if (el) this.resizeObserver.observe(el);\n }\n\n private scheduleOverflowRecalc() {\n // Avoid work for vertical layout.\n if (this.orientation !== 'horizontal') return;\n\n // Ensure it runs after layout.\n requestAnimationFrame(() => this.computeOverflow());\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 getTopLevelIds(items: LeOption[]): string[] {\n return items.map((item, index) => this.getItemId(item, String(index)));\n }\n\n private computeOverflow() {\n // Only applies to horizontal, non-wrapping navs.\n if (this.orientation !== 'horizontal' || this.wrap) {\n if (this.overflowIds.length) this.overflowIds = [];\n if (this.hamburgerActive) this.hamburgerActive = false;\n return;\n }\n\n const container = this.navContainerEl;\n if (!container) return;\n\n const topIds = this.getTopLevelIds(this.parsedItems);\n const widths = topIds.map(id => this.topItemEls.get(id)?.getBoundingClientRect().width ?? 0);\n\n const totalWidth = widths.reduce((a, b) => a + b, 0);\n const availableWidth = container.getBoundingClientRect().width;\n\n if (this.overflowMode === 'hamburger') {\n const shouldHamburger = totalWidth > availableWidth;\n if (shouldHamburger !== this.hamburgerActive) {\n this.hamburgerActive = shouldHamburger;\n }\n if (this.overflowIds.length) this.overflowIds = [];\n return;\n }\n\n // overflowMode === 'more'\n this.computeOverflowMoreByWrap(availableWidth);\n }\n\n private computeOverflowMoreByWrap(availableWidth: number) {\n const container = this.navContainerEl;\n const measure = this.measureEl;\n const measureMore = this.measureMoreEl;\n const items = this.parsedItems;\n\n if (!container || !measure) return;\n\n // Ensure measurement container matches visible container width.\n measure.style.width = `${availableWidth}px`;\n\n const allIds = this.getTopLevelIds(items);\n const itemEls = allIds\n .map(id => measure.querySelector<HTMLElement>(`[data-nav-id=\"${CSS.escape(id)}\"]`))\n .filter((el): el is HTMLElement => !!el);\n\n // Reset measurement visibility.\n itemEls.forEach(el => {\n el.style.display = '';\n });\n if (measureMore) {\n measureMore.style.display = 'none';\n }\n\n if (itemEls.length === 0) {\n if (this.overflowIds.length) this.overflowIds = [];\n return;\n }\n\n const firstRowTop = Math.min(...itemEls.map(el => el.offsetTop));\n const overflowSet = new Set<string>();\n\n // Pass 1: detect which items fall onto rows > 1 (without \"More\" in flow).\n itemEls.forEach(el => {\n const id = el.getAttribute('data-nav-id');\n if (!id) return;\n if (el.offsetTop > firstRowTop) overflowSet.add(id);\n });\n\n if (overflowSet.size === 0) {\n if (this.overflowIds.length) this.overflowIds = [];\n return;\n }\n\n // Pass 2: show \"More\" and iteratively move items into overflow until \"More\" fits on row 1.\n if (measureMore) {\n measureMore.style.display = '';\n }\n\n // Hide currently overflowing items.\n itemEls.forEach(el => {\n const id = el.getAttribute('data-nav-id');\n if (!id) return;\n if (overflowSet.has(id)) el.style.display = 'none';\n });\n\n const getVisibleItemEls = () => itemEls.filter(el => el.style.display !== 'none');\n\n while (measureMore) {\n const visible = getVisibleItemEls();\n const rowTop = visible.length ? Math.min(...visible.map(el => el.offsetTop)) : 0;\n\n if (measureMore.offsetTop <= rowTop) break;\n if (visible.length === 0) break;\n\n // Remove one last visible item and retry.\n const last = visible[visible.length - 1];\n const lastId = last.getAttribute('data-nav-id');\n if (!lastId) break;\n\n last.style.display = 'none';\n overflowSet.add(lastId);\n }\n\n const overflowIds = allIds.filter(id => overflowSet.has(id));\n\n const same =\n overflowIds.length === this.overflowIds.length &&\n overflowIds.every((v, i) => v === this.overflowIds[i]);\n\n if (!same) {\n this.overflowIds = overflowIds;\n }\n }\n\n private renderHorizontalMeasureItem(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 const setRef = (el?: HTMLElement) => {\n if (el) this.topItemEls.set(id, el);\n };\n\n if (!hasChildren) {\n return (\n <div class=\"h-item\" ref={setRef} data-nav-id={id}>\n <span class=\"h-link\">\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 </span>\n </div>\n );\n }\n\n return (\n <div class=\"h-item\" ref={setRef} data-nav-id={id}>\n <span class=\"h-trigger\">\n <span class=\"h-link\">\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>\n <span class=\"h-submenu-toggle\" aria-hidden=\"true\">\n <span class=\"nav-chevron\">▼</span>\n </span>\n </span>\n </div>\n );\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 }: 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 return (\n <li\n class={classnames('nav-node', {\n 'disabled': item.disabled,\n 'selected': item.selected,\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 {...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 }\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 })}\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 return (\n <div class=\"h-item\">\n <TagType\n class={classnames('h-link', {\n disabled: item.disabled,\n selected: item.selected,\n })}\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 return (\n <div class=\"h-item\">\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,\n })}\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 } 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 </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 </button>\n )}\n\n <button\n type=\"button\"\n class=\"h-submenu-toggle\"\n aria-label=\"Open submenu\"\n onClick={(e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n if (item.disabled) return;\n this.popoverRefs.get(submenuId)?.toggle();\n }}\n >\n <span class=\"nav-chevron\" aria-hidden=\"true\">\n <le-icon name=\"chevron-down\" />\n </span>\n </button>\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 })}\n </div>\n </le-popover>\n </div>\n );\n }\n\n private renderHorizontal() {\n const items = this.parsedItems;\n\n const overflowSet = new Set(this.overflowIds);\n\n const overflowItems: LeOption[] = [];\n items.forEach((item, index) => {\n const id = this.getItemId(item, String(index));\n if (!this.wrap && this.overflowMode === 'more' && overflowSet.has(id)) {\n overflowItems.push(item);\n }\n });\n\n // Hamburger mode: show a single trigger if anything overflows.\n if (!this.wrap && this.overflowMode === 'hamburger' && this.hamburgerActive) {\n return (\n <div class=\"nav-horizontal-shell\">\n <div\n class=\"nav-horizontal-measure\"\n aria-hidden=\"true\"\n ref={el => {\n this.measureEl = el as HTMLElement;\n }}\n >\n {items.map((item, index) => this.renderHorizontalMeasureItem(item, index))}\n <div\n class=\"h-item\"\n ref={el => {\n this.measureMoreEl = el as HTMLElement;\n }}\n >\n <button type=\"button\" class=\"overflow-trigger\">\n More\n </button>\n </div>\n </div>\n\n <div\n class=\"nav-horizontal\"\n ref={el => {\n this.navContainerEl = el as HTMLElement;\n this.setupResizeObserver();\n this.observeContainer(this.navContainerEl);\n }}\n >\n <le-popover\n mode=\"default\"\n showClose={false}\n closeOnClickOutside={true}\n closeOnEscape={true}\n position=\"bottom\"\n align=\"end\"\n minWidth=\"260px\"\n >\n <button slot=\"trigger\" type=\"button\" class=\"overflow-trigger\" aria-label=\"Open menu\">\n ☰\n </button>\n <div class=\"popover-menu\">\n {this.renderVerticalList(items, { depth: 0, pathPrefix: '' })}\n </div>\n </le-popover>\n </div>\n </div>\n );\n }\n\n const showMore = !this.wrap && this.overflowMode === 'more' && overflowItems.length > 0;\n\n return (\n <div class=\"nav-horizontal-shell\" role=\"menubar\">\n <div\n class=\"nav-horizontal-measure\"\n aria-hidden=\"true\"\n ref={el => {\n this.measureEl = el as HTMLElement;\n }}\n >\n {items.map((item, index) => this.renderHorizontalMeasureItem(item, index))}\n <div\n class=\"h-item\"\n ref={el => {\n this.measureMoreEl = el as HTMLElement;\n }}\n >\n <button type=\"button\" class=\"overflow-trigger\">\n More\n </button>\n </div>\n </div>\n\n <div\n class={classnames('nav-horizontal', {\n wrap: this.wrap,\n nowrap: !this.wrap,\n })}\n ref={el => {\n this.navContainerEl = el as HTMLElement;\n this.setupResizeObserver();\n this.observeContainer(this.navContainerEl);\n }}\n >\n {items.map((item, index) => {\n const id = this.getItemId(item, String(index));\n const isOverflow = !this.wrap && this.overflowMode === 'more' && overflowSet.has(id);\n if (isOverflow) return null;\n return this.renderHorizontalItem(item, index);\n })}\n\n {/* Render a hidden trigger for measurement when not visible */}\n <div\n class={classnames('more-trigger-wrap', {\n 'is-visible': showMore,\n 'is-measure': !showMore,\n })}\n >\n <le-popover\n mode=\"default\"\n position=\"bottom\"\n align=\"end\"\n minWidth=\"260px\"\n showClose={false}\n >\n <button slot=\"trigger\" type=\"button\" class=\"overflow-trigger\" aria-label=\"More\">\n More\n </button>\n <div class=\"popover-menu\">\n {this.renderVerticalList(overflowItems, { depth: 0, pathPrefix: '' })}\n </div>\n </le-popover>\n </div>\n </div>\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"]}
1
+ {"version":3,"file":"le-navigation.js","sourceRoot":"","sources":["../../../src/components/le-navigation/le-navigation.tsx"],"names":[],"mappings":"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","sourcesContent":["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';\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 hamburger trigger within the row.\n */\n @Prop({ reflect: true }) hamburgerAlign: 'start' | 'end' = '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 @State() private overflowIds: string[] = [];\n\n @State() private hamburgerActive: boolean = false;\n\n @State() private fallbackHamburger: boolean = false;\n\n @State() private submenuQueries: Record<string, string> = {};\n\n private navContainerEl?: HTMLElement;\n\n private measureEl?: HTMLElement;\n private measureMoreEl?: HTMLElement;\n\n private topItemEls: Map<string, HTMLElement> = new Map();\n\n private popoverRefs: Map<string, HTMLLePopoverElement> = new Map();\n\n private moreTriggerEl?: HTMLElement;\n\n private hamburgerPopoverEl?: HTMLLePopoverElement;\n private morePopoverEl?: HTMLLePopoverElement;\n\n private resizeObserver?: ResizeObserver;\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 this.scheduleOverflowRecalc();\n }\n\n componentDidLoad() {\n this.setupResizeObserver();\n this.scheduleOverflowRecalc();\n }\n\n disconnectedCallback() {\n this.resizeObserver?.disconnect();\n this.resizeObserver = undefined;\n }\n\n componentDidRender() {\n // In case refs change after render.\n this.scheduleOverflowRecalc();\n }\n\n private setupResizeObserver() {\n this.resizeObserver?.disconnect();\n\n if (typeof ResizeObserver === 'undefined') return;\n\n this.resizeObserver = new ResizeObserver(() => this.computeOverflow());\n this.observeContainer(this.navContainerEl);\n }\n\n private observeContainer(el?: HTMLElement) {\n if (!this.resizeObserver) return;\n this.resizeObserver.disconnect();\n if (el) this.resizeObserver.observe(el);\n }\n\n private scheduleOverflowRecalc() {\n // Avoid work for vertical layout.\n if (this.orientation !== 'horizontal') return;\n\n // Ensure it runs after layout.\n requestAnimationFrame(() => this.computeOverflow());\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 getTopLevelIds(items: LeOption[]): string[] {\n return items.map((item, index) => this.getItemId(item, String(index)));\n }\n\n private computeOverflow() {\n // Only applies to horizontal, non-wrapping navs.\n if (this.orientation !== 'horizontal' || this.wrap) {\n if (this.overflowIds.length) this.overflowIds = [];\n if (this.hamburgerActive) this.hamburgerActive = false;\n if (this.fallbackHamburger) this.fallbackHamburger = false;\n return;\n }\n\n const container = this.navContainerEl;\n if (!container) return;\n\n const topIds = this.getTopLevelIds(this.parsedItems);\n const widths = topIds.map(id => this.topItemEls.get(id)?.getBoundingClientRect().width ?? 0);\n\n const totalWidth = widths.reduce((a, b) => a + b, 0);\n const availableWidth = container.getBoundingClientRect().width;\n\n if (this.overflowMode === 'hamburger') {\n const shouldHamburger = totalWidth > availableWidth;\n if (shouldHamburger !== this.hamburgerActive) {\n this.hamburgerActive = shouldHamburger;\n }\n if (this.overflowIds.length) this.overflowIds = [];\n if (this.fallbackHamburger) this.fallbackHamburger = false;\n return;\n }\n\n // overflowMode === 'more'\n if (this.hamburgerActive) this.hamburgerActive = false;\n\n const computedOverflow = this.computeOverflowMoreByWrap(availableWidth);\n if (!computedOverflow) return;\n\n // Fallback to hamburger when \"More\" would leave too few items visible\n // or when the trigger itself cannot fit the row.\n const visibleCount = this.parsedItems.length - computedOverflow.length;\n const moreWidth = this.moreTriggerEl?.getBoundingClientRect().width ?? 0;\n\n const minVisible = Math.max(0, Number(this.minVisibleItemsForMore) || 0);\n const shouldFallback =\n (computedOverflow.length > 0 && visibleCount < minVisible) ||\n (moreWidth > 0 && moreWidth > availableWidth);\n\n if (shouldFallback !== this.fallbackHamburger) {\n this.fallbackHamburger = shouldFallback;\n }\n\n const nextOverflow = shouldFallback ? [] : computedOverflow;\n const same =\n nextOverflow.length === this.overflowIds.length &&\n nextOverflow.every((v, i) => v === this.overflowIds[i]);\n if (!same) {\n this.overflowIds = nextOverflow;\n }\n }\n\n private computeOverflowMoreByWrap(availableWidth: number): string[] | null {\n const container = this.navContainerEl;\n const measure = this.measureEl;\n const measureMore = this.measureMoreEl;\n const items = this.parsedItems;\n\n if (!container || !measure) return null;\n\n // Ensure measurement container matches visible container width.\n measure.style.width = `${availableWidth}px`;\n\n // Keep the measured \"More\" width aligned with the real trigger width (supports slotted content).\n const realMoreWidth = this.moreTriggerEl?.getBoundingClientRect().width;\n if (measureMore && realMoreWidth && realMoreWidth > 0) {\n const btn = measureMore.querySelector<HTMLElement>('button');\n if (btn) {\n btn.style.width = `${realMoreWidth}px`;\n }\n }\n\n const allIds = this.getTopLevelIds(items);\n const itemEls = allIds\n .map(id => measure.querySelector<HTMLElement>(`[data-nav-id=\"${CSS.escape(id)}\"]`))\n .filter((el): el is HTMLElement => !!el);\n\n // Reset measurement visibility.\n itemEls.forEach(el => {\n el.style.display = '';\n });\n if (measureMore) {\n measureMore.style.display = 'none';\n }\n\n if (itemEls.length === 0) {\n return [];\n }\n\n const firstRowTop = Math.min(...itemEls.map(el => el.offsetTop));\n const overflowSet = new Set<string>();\n\n // Pass 1: detect which items fall onto rows > 1 (without \"More\" in flow).\n itemEls.forEach(el => {\n const id = el.getAttribute('data-nav-id');\n if (!id) return;\n if (el.offsetTop > firstRowTop) overflowSet.add(id);\n });\n\n if (overflowSet.size === 0) {\n return [];\n }\n\n // Pass 2: show \"More\" and iteratively move items into overflow until \"More\" fits on row 1.\n if (measureMore) {\n measureMore.style.display = '';\n }\n\n // Hide currently overflowing items.\n itemEls.forEach(el => {\n const id = el.getAttribute('data-nav-id');\n if (!id) return;\n if (overflowSet.has(id)) el.style.display = 'none';\n });\n\n const getVisibleItemEls = () => itemEls.filter(el => el.style.display !== 'none');\n\n while (measureMore) {\n const visible = getVisibleItemEls();\n const rowTop = visible.length ? Math.min(...visible.map(el => el.offsetTop)) : 0;\n\n if (measureMore.offsetTop <= rowTop) break;\n if (visible.length === 0) break;\n\n // Remove one last visible item and retry.\n const last = visible[visible.length - 1];\n const lastId = last.getAttribute('data-nav-id');\n if (!lastId) break;\n\n last.style.display = 'none';\n overflowSet.add(lastId);\n }\n\n const overflowIds = allIds.filter(id => overflowSet.has(id));\n\n return overflowIds;\n }\n\n private renderHorizontalMeasureItem(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 const setRef = (el?: HTMLElement) => {\n if (el) this.topItemEls.set(id, el);\n };\n\n if (!hasChildren) {\n return (\n <div class=\"h-item\" ref={setRef} data-nav-id={id}>\n <span class=\"h-link\">\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 </span>\n </div>\n );\n }\n\n return (\n <div class=\"h-item\" ref={setRef} data-nav-id={id}>\n <span class=\"h-trigger\">\n <span class=\"h-link\">\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>\n <span class=\"h-submenu-toggle\" aria-hidden=\"true\">\n <le-icon name=\"chevron-down\" />\n </span>\n </span>\n </div>\n );\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\">\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\">\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 renderHorizontal() {\n const items = this.parsedItems;\n\n const overflowSet = new Set(this.overflowIds);\n\n const overflowItems: LeOption[] = [];\n items.forEach((item, index) => {\n const id = this.getItemId(item, String(index));\n if (!this.wrap && this.overflowMode === 'more' && overflowSet.has(id)) {\n overflowItems.push(item);\n }\n });\n\n const showHamburger =\n !this.wrap &&\n ((this.overflowMode === 'hamburger' && this.hamburgerActive) ||\n (this.overflowMode === 'more' && this.fallbackHamburger));\n\n // Hamburger mode: show a single trigger if anything overflows (or when forced for \"more\").\n if (showHamburger) {\n return (\n <div class=\"nav-horizontal-shell\">\n <div\n class=\"nav-horizontal-measure\"\n aria-hidden=\"true\"\n ref={el => {\n this.measureEl = el as HTMLElement;\n }}\n >\n {items.map((item, index) => this.renderHorizontalMeasureItem(item, index))}\n <div\n class=\"h-item\"\n ref={el => {\n this.measureMoreEl = el as HTMLElement;\n }}\n >\n <button type=\"button\" class=\"overflow-trigger\">\n More\n </button>\n </div>\n </div>\n\n <div\n class={classnames('nav-horizontal', {\n 'hamburger-align-end': this.hamburgerAlign === 'end',\n })}\n ref={el => {\n this.navContainerEl = el as HTMLElement;\n this.setupResizeObserver();\n this.observeContainer(this.navContainerEl);\n }}\n >\n <le-popover\n ref={el => {\n this.hamburgerPopoverEl = el as HTMLLePopoverElement;\n }}\n mode=\"default\"\n showClose={false}\n closeOnClickOutside={true}\n closeOnEscape={true}\n position=\"bottom\"\n align=\"end\"\n minWidth=\"260px\"\n >\n <button\n slot=\"trigger\"\n type=\"button\"\n class=\"overflow-trigger\"\n part=\"hamburger-trigger\"\n aria-label=\"Open menu\"\n >\n <slot name=\"hamburger-trigger\">\n <le-icon name=\"hamburger\" />\n </slot>\n </button>\n <div class=\"popover-menu\">\n {this.renderVerticalList(items, {\n depth: 0,\n pathPrefix: '',\n closePopover: () => this.hamburgerPopoverEl?.hide(),\n })}\n </div>\n </le-popover>\n </div>\n </div>\n );\n }\n\n const showMore = !this.wrap && this.overflowMode === 'more' && overflowItems.length > 0;\n\n return (\n <div class=\"nav-horizontal-shell\" role=\"menubar\">\n <div\n class=\"nav-horizontal-measure\"\n aria-hidden=\"true\"\n ref={el => {\n this.measureEl = el as HTMLElement;\n }}\n >\n {items.map((item, index) => this.renderHorizontalMeasureItem(item, index))}\n <div\n class=\"h-item\"\n ref={el => {\n this.measureMoreEl = el as HTMLElement;\n }}\n >\n <button type=\"button\" class=\"overflow-trigger\">\n <le-icon name=\"ellipsis-horizontal\" />\n </button>\n </div>\n </div>\n\n <div\n class={classnames('nav-horizontal', {\n wrap: this.wrap,\n nowrap: !this.wrap,\n })}\n ref={el => {\n this.navContainerEl = el as HTMLElement;\n this.setupResizeObserver();\n this.observeContainer(this.navContainerEl);\n }}\n >\n {items.map((item, index) => {\n const id = this.getItemId(item, String(index));\n const isOverflow = !this.wrap && this.overflowMode === 'more' && overflowSet.has(id);\n if (isOverflow) return null;\n return this.renderHorizontalItem(item, index);\n })}\n\n {/* Render a hidden trigger for measurement when not visible */}\n <div\n class={classnames('more-trigger-wrap', {\n 'is-visible': showMore,\n 'is-measure': !showMore,\n })}\n >\n <le-popover\n ref={el => {\n this.morePopoverEl = el as HTMLLePopoverElement;\n }}\n mode=\"default\"\n position=\"bottom\"\n align=\"end\"\n minWidth=\"260px\"\n showClose={false}\n >\n <button\n slot=\"trigger\"\n type=\"button\"\n class=\"overflow-trigger\"\n part=\"more-trigger\"\n aria-label=\"More\"\n ref={el => {\n if (el) this.moreTriggerEl = el as HTMLElement;\n }}\n >\n <slot name=\"more-trigger\">\n <le-icon name=\"ellipsis-horizontal\" />\n </slot>\n </button>\n <div class=\"popover-menu\">\n {this.renderVerticalList(overflowItems, {\n depth: 0,\n pathPrefix: '',\n closePopover: () => this.morePopoverEl?.hide(),\n })}\n </div>\n </le-popover>\n </div>\n </div>\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"]}