@nvidia-elements/core 2.9.0 → 2.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/README.md +3 -7
- package/dist/accordion/accordion.d.ts +4 -4
- package/dist/accordion/accordion2.js +4 -4
- package/dist/alert/alert-group.d.ts +1 -1
- package/dist/alert/alert-group2.js +1 -1
- package/dist/alert/alert.d.ts +1 -1
- package/dist/alert/alert2.js +1 -1
- package/dist/avatar/avatar-group.d.ts +1 -1
- package/dist/avatar/avatar-group2.js +1 -1
- package/dist/avatar/avatar.d.ts +1 -1
- package/dist/avatar/avatar2.js +1 -1
- package/dist/badge/badge.d.ts +1 -1
- package/dist/badge/badge2.js +1 -1
- package/dist/breadcrumb/breadcrumb.d.ts +2 -1
- package/dist/breadcrumb/breadcrumb2.js +1 -1
- package/dist/breadcrumb/breadcrumb2.js.map +1 -1
- package/dist/bundles/index.d.ts +183 -44
- package/dist/bundles/index.js +6 -6
- package/dist/button/button.d.ts +1 -1
- package/dist/button/button2.js +1 -1
- package/dist/button-group/button-group.d.ts +1 -1
- package/dist/button-group/button-group2.js +1 -1
- package/dist/card/card.d.ts +4 -4
- package/dist/card/card2.js +4 -4
- package/dist/chat-message/chat-message.d.ts +1 -1
- package/dist/chat-message/chat-message2.js +1 -1
- package/dist/checkbox/checkbox-group2.js +1 -1
- package/dist/checkbox/checkbox2.js +1 -1
- package/dist/color/color.d.ts +1 -1
- package/dist/color/color2.js +1 -1
- package/dist/combobox/combobox.d.ts +2 -2
- package/dist/combobox/combobox2.js +1 -1
- package/dist/copy-button/copy-button.d.ts +1 -1
- package/dist/copy-button/copy-button2.js +1 -1
- package/dist/custom-elements-jsx.d.ts +117 -25
- package/dist/custom-elements-vue.d.ts +115 -25
- package/dist/custom-elements.json +1075 -916
- package/dist/data.html.json +55 -7
- package/dist/data.snippets.json +45 -45
- package/dist/date/date.d.ts +1 -1
- package/dist/date/date2.js +1 -1
- package/dist/datetime/datetime.d.ts +1 -1
- package/dist/datetime/datetime2.js +1 -1
- package/dist/dialog/dialog-footer.d.ts +1 -1
- package/dist/dialog/dialog-footer2.js +1 -1
- package/dist/dialog/dialog-header.d.ts +1 -1
- package/dist/dialog/dialog-header2.js +1 -1
- package/dist/dialog/dialog.d.ts +1 -1
- package/dist/dialog/dialog2.js +1 -1
- package/dist/divider/divider.d.ts +1 -1
- package/dist/divider/divider2.js +1 -1
- package/dist/dot/dot.d.ts +1 -1
- package/dist/dot/dot2.js +1 -1
- package/dist/drawer/drawer-content.d.ts +1 -1
- package/dist/drawer/drawer-content2.js +1 -1
- package/dist/drawer/drawer-footer.d.ts +1 -1
- package/dist/drawer/drawer-footer2.js +1 -1
- package/dist/drawer/drawer-header.d.ts +1 -1
- package/dist/drawer/drawer-header2.js +1 -1
- package/dist/drawer/drawer.d.ts +1 -1
- package/dist/drawer/drawer2.js +1 -1
- package/dist/dropdown/dropdown-footer.d.ts +1 -1
- package/dist/dropdown/dropdown-footer2.js +1 -1
- package/dist/dropdown/dropdown-header.d.ts +1 -1
- package/dist/dropdown/dropdown-header2.js +1 -1
- package/dist/dropdown/dropdown.d.ts +1 -1
- package/dist/dropdown/dropdown2.js +1 -1
- package/dist/dropdown-group/dropdown-group.d.ts +1 -1
- package/dist/dropdown-group/dropdown-group.js +1 -1
- package/dist/dropzone/dropzone.d.ts +1 -1
- package/dist/dropzone/dropzone2.js +1 -1
- package/dist/file/file2.js +1 -1
- package/dist/format-bytes/format-bytes.d.ts +1 -1
- package/dist/format-bytes/format-bytes2.js +1 -1
- package/dist/format-datetime/format-datetime.d.ts +1 -1
- package/dist/format-datetime/format-datetime2.js +1 -1
- package/dist/format-number/format-number.d.ts +1 -1
- package/dist/format-number/format-number2.js +1 -1
- package/dist/format-relative-time/format-relative-time.d.ts +1 -1
- package/dist/format-relative-time/format-relative-time2.js +1 -1
- package/dist/format-truncate/format-truncate2.js +1 -1
- package/dist/forms/control/control2.js +1 -1
- package/dist/forms/control-group/control-group.d.ts +3 -1
- package/dist/forms/control-group/control-group2.js +1 -1
- package/dist/forms/control-group/control-group2.js.map +1 -1
- package/dist/forms/control-message/control-message.d.ts +1 -1
- package/dist/forms/control-message/control-message2.js +1 -1
- package/dist/gauge/gauge.d.ts +1 -1
- package/dist/gauge/gauge2.js +1 -1
- package/dist/grid/cell/cell.d.ts +1 -1
- package/dist/grid/cell/cell2.js +1 -1
- package/dist/grid/column/column.d.ts +1 -1
- package/dist/grid/column/column2.js +1 -1
- package/dist/grid/footer/footer.d.ts +1 -1
- package/dist/grid/footer/footer2.js +1 -1
- package/dist/grid/grid.d.ts +3 -1
- package/dist/grid/grid2.js +1 -1
- package/dist/grid/grid2.js.map +1 -1
- package/dist/grid/header/header.d.ts +1 -1
- package/dist/grid/header/header2.js +1 -1
- package/dist/grid/placeholder/placeholder.d.ts +1 -1
- package/dist/grid/placeholder/placeholder2.js +1 -1
- package/dist/grid/row/row.d.ts +1 -1
- package/dist/grid/row/row2.js +1 -1
- package/dist/icon/icon.d.ts +1 -1
- package/dist/icon/icon2.js +2 -2
- package/dist/icon-button/icon-button.d.ts +1 -1
- package/dist/icon-button/icon-button2.js +1 -1
- package/dist/index.js +1 -1
- package/dist/input/input-group2.js +1 -1
- package/dist/input/input2.js +1 -1
- package/dist/internal/controllers/keynav-list.controller.js.map +1 -1
- package/dist/internal/services/global.service.js +1 -1
- package/dist/internal/types/index.d.ts +6 -2
- package/dist/internal/types/index.js.map +1 -1
- package/dist/internal/utils/audit.js +1 -1
- package/dist/internal/utils/audit.js.map +1 -1
- package/dist/internal/utils/dom.d.ts +3 -1
- package/dist/internal/utils/dom.js.map +1 -1
- package/dist/logo/logo.d.ts +1 -1
- package/dist/logo/logo2.js +1 -1
- package/dist/menu/define.d.ts +2 -1
- package/dist/menu/define.js +3 -2
- package/dist/menu/define.js.map +1 -1
- package/dist/menu/index.d.ts +1 -0
- package/dist/menu/index.js +3 -2
- package/dist/menu/menu-group.d.ts +50 -0
- package/dist/menu/menu-group.js +6 -0
- package/dist/menu/menu-group.js.map +1 -0
- package/dist/menu/menu-group2.js +53 -0
- package/dist/menu/menu-group2.js.map +1 -0
- package/dist/menu/menu-item.d.ts +2 -1
- package/dist/menu/menu-item.js +1 -1
- package/dist/menu/menu-item.js.map +1 -1
- package/dist/menu/menu-item2.js +2 -2
- package/dist/menu/menu-item2.js.map +1 -1
- package/dist/menu/menu.d.ts +7 -2
- package/dist/menu/menu.examples.js.map +1 -1
- package/dist/menu/menu.examples.json +53 -13
- package/dist/menu/menu.global.js +1 -1
- package/dist/menu/menu.global.js.map +1 -1
- package/dist/menu/menu2.js +16 -8
- package/dist/menu/menu2.js.map +1 -1
- package/dist/month/month.d.ts +1 -1
- package/dist/month/month2.js +1 -1
- package/dist/notification/notification-group.d.ts +1 -1
- package/dist/notification/notification-group2.js +1 -1
- package/dist/notification/notification.d.ts +1 -1
- package/dist/notification/notification2.js +1 -1
- package/dist/page/page-panel/page-panel-content.d.ts +1 -1
- package/dist/page/page-panel/page-panel-content2.js +1 -1
- package/dist/page/page-panel/page-panel-footer.d.ts +1 -1
- package/dist/page/page-panel/page-panel-footer2.js +1 -1
- package/dist/page/page-panel/page-panel-header.d.ts +1 -1
- package/dist/page/page-panel/page-panel-header2.js +1 -1
- package/dist/page/page-panel/page-panel.d.ts +1 -1
- package/dist/page/page-panel/page-panel2.js +1 -1
- package/dist/page/page.d.ts +1 -1
- package/dist/page/page2.js +1 -1
- package/dist/page-header/page-header.d.ts +1 -1
- package/dist/page-header/page-header2.js +1 -1
- package/dist/page-loader/page-loader.d.ts +1 -1
- package/dist/page-loader/page-loader2.js +1 -1
- package/dist/pagination/pagination.d.ts +1 -1
- package/dist/pagination/pagination2.js +1 -1
- package/dist/panel/panel.d.ts +4 -4
- package/dist/panel/panel2.js +4 -4
- package/dist/password/password.d.ts +1 -1
- package/dist/password/password2.js +1 -1
- package/dist/preferences-input/preferences-input.d.ts +1 -1
- package/dist/preferences-input/preferences-input2.js +1 -1
- package/dist/progress-bar/progress-bar.d.ts +1 -1
- package/dist/progress-bar/progress-bar2.js +1 -1
- package/dist/progress-ring/progress-ring.d.ts +1 -1
- package/dist/progress-ring/progress-ring2.js +1 -1
- package/dist/progressive-filter-chip/progressive-filter-chip.d.ts +1 -1
- package/dist/progressive-filter-chip/progressive-filter-chip2.js +1 -1
- package/dist/pulse/pulse.d.ts +1 -1
- package/dist/pulse/pulse2.js +1 -1
- package/dist/radio/radio-group2.js +1 -1
- package/dist/radio/radio2.js +1 -1
- package/dist/range/range.d.ts +1 -1
- package/dist/range/range2.js +1 -1
- package/dist/resize-handle/resize-handle.d.ts +1 -1
- package/dist/resize-handle/resize-handle2.js +1 -1
- package/dist/search/search.d.ts +1 -1
- package/dist/search/search2.js +1 -1
- package/dist/select/select.d.ts +2 -2
- package/dist/select/select2.js +1 -1
- package/dist/skeleton/skeleton.d.ts +1 -1
- package/dist/skeleton/skeleton2.js +1 -1
- package/dist/sort-button/sort-button.d.ts +1 -1
- package/dist/sort-button/sort-button2.js +1 -1
- package/dist/sparkline/sparkline.d.ts +1 -1
- package/dist/sparkline/sparkline2.js +1 -1
- package/dist/star-rating/star-rating.d.ts +1 -1
- package/dist/star-rating/star-rating2.js +1 -1
- package/dist/steps/steps.d.ts +5 -5
- package/dist/steps/steps2.js +2 -2
- package/dist/steps/steps2.js.map +1 -1
- package/dist/switch/switch-group2.js +1 -1
- package/dist/switch/switch2.js +1 -1
- package/dist/tabs/tabs-group.d.ts +1 -1
- package/dist/tabs/tabs-group2.js +1 -1
- package/dist/tabs/tabs.d.ts +2 -2
- package/dist/tabs/tabs2.js +2 -2
- package/dist/tag/tag.d.ts +1 -1
- package/dist/tag/tag2.js +1 -1
- package/dist/textarea/textarea.d.ts +2 -2
- package/dist/textarea/textarea2.js +1 -1
- package/dist/time/time.d.ts +1 -1
- package/dist/time/time2.js +1 -1
- package/dist/toast/toast.d.ts +1 -1
- package/dist/toast/toast2.js +1 -1
- package/dist/toggletip/toggletip-footer.d.ts +1 -1
- package/dist/toggletip/toggletip-footer2.js +1 -1
- package/dist/toggletip/toggletip-header.d.ts +1 -1
- package/dist/toggletip/toggletip-header2.js +1 -1
- package/dist/toggletip/toggletip.d.ts +1 -1
- package/dist/toggletip/toggletip2.js +1 -1
- package/dist/toolbar/toolbar.d.ts +1 -1
- package/dist/toolbar/toolbar2.js +1 -1
- package/dist/tooltip/tooltip.d.ts +1 -1
- package/dist/tooltip/tooltip2.js +1 -1
- package/dist/tree/tree-node.d.ts +2 -2
- package/dist/tree/tree-node2.js +1 -1
- package/dist/tree/tree-node2.js.map +1 -1
- package/dist/tree/tree.d.ts +2 -1
- package/dist/tree/tree2.js +1 -1
- package/dist/tree/tree2.js.map +1 -1
- package/dist/viewport/define.d.ts +2 -1
- package/dist/viewport/define.js +2 -1
- package/dist/viewport/define.js.map +1 -1
- package/dist/viewport/index.d.ts +2 -1
- package/dist/viewport/index.js +2 -1
- package/dist/viewport/viewport-gesture-navigation.controller.d.ts +8 -10
- package/dist/viewport/viewport-gesture-navigation.controller.js +73 -66
- package/dist/viewport/viewport-gesture-navigation.controller.js.map +1 -1
- package/dist/viewport/viewport-gridlines.d.ts +1 -1
- package/dist/viewport/viewport-gridlines2.js +3 -3
- package/dist/viewport/viewport-gridlines2.js.map +1 -1
- package/dist/viewport/viewport-minimap.d.ts +36 -0
- package/dist/viewport/viewport-minimap.js +6 -0
- package/dist/viewport/viewport-minimap.js.map +1 -0
- package/dist/viewport/viewport-minimap.utils.d.ts +13 -0
- package/dist/viewport/viewport-minimap.utils.js +49 -0
- package/dist/viewport/viewport-minimap.utils.js.map +1 -0
- package/dist/viewport/viewport-minimap2.js +309 -0
- package/dist/viewport/viewport-minimap2.js.map +1 -0
- package/dist/viewport/viewport-navigation.controller.d.ts +7 -13
- package/dist/viewport/viewport-navigation.controller.js +14 -20
- package/dist/viewport/viewport-navigation.controller.js.map +1 -1
- package/dist/viewport/viewport-navigation.types.d.ts +0 -8
- package/dist/viewport/viewport.d.ts +31 -6
- package/dist/viewport/viewport.examples.js.map +1 -1
- package/dist/viewport/viewport.examples.json +13 -4
- package/dist/viewport/viewport.js +1 -1
- package/dist/viewport/viewport.js.map +1 -1
- package/dist/viewport/viewport.types.d.ts +50 -23
- package/dist/viewport/viewport2.js +173 -118
- package/dist/viewport/viewport2.js.map +1 -1
- package/dist/week/week.d.ts +1 -1
- package/dist/week/week2.js +1 -1
- package/package.json +7 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.examples.js","names":[],"sources":["../../src/menu/menu.examples.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html } from 'lit';\nimport '@nvidia-elements/core/button/define.js';\nimport '@nvidia-elements/core/dropdown/define.js';\nimport '@nvidia-elements/core/icon/define.js';\nimport '@nvidia-elements/core/menu/define.js';\nimport '@nvidia-elements/core/logo/define.js';\nimport '@nvidia-elements/core/search/define.js';\nimport '@nvidia-elements/core/drawer/define.js';\nimport '@nvidia-elements/core/card/define.js';\nimport '@nvidia-elements/core/tooltip/define.js';\nimport '@nvidia-elements/core/page/define.js';\n\nexport default {\n title: 'Elements/Menu',\n component: 'nve-menu',\n};\n\n/**\n * @summary Basic menu with simple text items for the default menu structure and styling.\n */\nexport const Default = {\n render: () => html`\n <nve-menu>\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item>item 2</nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n <nve-menu-item>item 4</nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Menu with keyboard navigation and ARIA disclosure pattern inside a dropdown. Use when menu items need accessible focus management and arrow key navigation.\n * @tags pattern\n */\nexport const Dropdown = {\n render: () => html`\n <nve-button popovertarget=\"dropdown-menu\">dropdown</nve-button>\n <nve-dropdown id=\"dropdown-menu\">\n <nve-menu>\n <nve-menu-item><nve-icon name=\"person\"></nve-icon> profile</nve-menu-item>\n <nve-menu-item><nve-icon name=\"gear\"></nve-icon> settings</nve-menu-item>\n <nve-menu-item><nve-icon name=\"star\"></nve-icon> favorites</nve-menu-item>\n <nve-divider></nve-divider>\n <nve-menu-item><nve-icon name=\"logout\"></nve-icon> logout</nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n `\n};\n\n/**\n * @summary Menu with a selected item showing the visual state for user-selected options.\n */\nexport const Selected = {\n render: () => html`\n <nve-menu>\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item selected>item 2</nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n <nve-menu-item>item 4</nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Menu with a current page item showing the visual state for the active/current page in navigation.\n */\nexport const Current = {\n render: () => html`\n <nve-menu>\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item current=\"page\">item 2</nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n <nve-menu-item>item 4</nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary By default Menu will show a blue border on the selected item. You can change the border color by setting `--border-background` on the `<nve-menu-item>`\n * @tags test-case\n */\nexport const BorderBackground = {\n render: () => html`\n <nve-menu>\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item current=\"page\" style=\"--border-background: var(--nve-ref-color-brand-green-900);\">item 2</nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n <nve-menu-item>item 4</nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Menu with disabled items showing unavailable options while maintaining visual context.\n * @tags test-case\n */\nexport const Disabled = {\n render: () => html`\n <nve-menu>\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item disabled>item 2</nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n <nve-menu-item>item 4</nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Menu items with icons to add visual context and improve usability.\n */\nexport const Icons = {\n render: () => html`\n <nve-menu>\n <nve-menu-item><nve-icon name=\"person\"></nve-icon> profile</nve-menu-item>\n <nve-menu-item><nve-icon name=\"gear\"></nve-icon> settings</nve-menu-item>\n <nve-menu-item><nve-icon name=\"star\"></nve-icon> favorites</nve-menu-item>\n <nve-menu-item><nve-icon name=\"logout\"></nve-icon> logout</nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Menu items with links for navigation functionality within menu structures.\n */\nexport const Links = {\n render: () => html`\n <nve-menu>\n <nve-menu-item><nve-icon name=\"person\"></nve-icon><a href=\"#\">profile</a></nve-menu-item>\n <nve-menu-item><nve-icon name=\"gear\"></nve-icon> <a href=\"#\">settings</a></nve-menu-item>\n <nve-menu-item><nve-icon name=\"star\"></nve-icon> <a href=\"#\">favorites</a></nve-menu-item>\n <nve-menu-item><nve-icon name=\"logout\"></nve-icon> <a href=\"#\">logout</a></nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Menu item features a default slot for content, along with a suffix slot for displaying elements such as keyboard shortcuts at the end of the menu item container.\n */\nexport const Suffix = {\n render: () => html`\n <nve-menu>\n <nve-menu-item><kbd slot=\"suffix\" nve-text=\"code flat\">CMD + C</kbd></nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Menu with constrained height showing scrollable behavior when content exceeds container limits.\n * @tags test-case\n */\nexport const Scroll = {\n render: () => html`\n <nve-menu style=\"--max-height: 150px\">\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item>item 2</nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n <nve-menu-item>item 4</nve-menu-item>\n <nve-menu-item>item 5</nve-menu-item>\n <nve-menu-item>item 6</nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Use a dropdown menu with search and branded logos for application selection interfaces.\n * @tags pattern\n */\nexport const Complex = {\n render: () => html`\n <nve-button popovertarget=\"dropdown-menu\">dropdown</nve-button>\n <nve-dropdown id=\"dropdown-menu\">\n <nve-search rounded>\n <input type=\"search\" placeholder=\"search tools\" aria-label=\"search apps\" />\n </nve-search>\n <nve-menu>\n <nve-menu-item>\n <nve-logo color=\"pink-rose\" size=\"sm\">Db</nve-logo> Debugger\n </nve-menu-item>\n <nve-menu-item>\n <nve-logo color=\"blue-cobalt\" size=\"sm\">TM</nve-logo> Task Manager\n </nve-menu-item>\n <nve-menu-item>\n <nve-logo color=\"yellow-nova\" size=\"sm\">CI</nve-logo> CI Services\n </nve-menu-item>\n <nve-divider></nve-divider>\n <nve-menu-item>\n <nve-logo size=\"sm\">NV</nve-logo> All Apps\n </nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n `\n};\n\n/**\n * @summary Use a navigation drawer to overlay page content for out-of-context navigation.\n * @tags pattern\n */\nexport const VerticalNavigationDrawer = {\n render: () => html`\n <nve-page>\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\">NV</nve-logo>\n <h2 slot=\"prefix\" nve-text=\"heading sm\">NVIDIA</h2>\n </nve-page-header>\n <main nve-layout=\"column gap:md pad:md\">\n <nve-button popovertarget=\"menu-drawer\">toggle drawer</nve-button>\n </main>\n <nve-drawer position=\"right\" size=\"sm\" modal closable id=\"menu-drawer\">\n <nve-drawer-header>\n <h3 nve-text=\"heading\">Drawer</h3>\n </nve-drawer-header>\n <nve-drawer-content>\n <nve-menu>\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item current=\"page\">item 2</nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n <nve-menu-item>item 4</nve-menu-item>\n </nve-menu>\n </nve-drawer-content>\n </nve-drawer>\n </nve-page>\n `\n};\n\n/**\n * @summary Use an inline navigation panel to push page content aside when navigation is contextual to the page.\n * @tags pattern\n */\nexport const VerticalNavigationPanel = {\n render: () => html`\n<nve-page>\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\">NV</nve-logo>\n <h2 slot=\"prefix\" nve-text=\"heading sm\">NVIDIA</h2>\n </nve-page-header>\n <nve-page-panel slot=\"left\" expanded style=\"max-width:280px\">\n <nve-page-panel-header>\n <h3 nve-text=\"heading\">Drawer</h3>\n </nve-page-panel-header>\n <nve-page-panel-content>\n <nve-menu>\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item current=\"page\">item 2</nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n <nve-menu-item>item 4</nve-menu-item>\n </nve-menu>\n </nve-page-panel-content>\n </nve-page-panel>\n <main nve-layout=\"column gap:md pad:md\">\n <p nve-text=\"body\">Content</p>\n </main>\n</nve-page>\n `\n};\n\n/**\n * @summary Use a tooltip on a menu item to provide extra context and warnings.\n * @tags pattern test-case\n */\nexport const ItemTooltip = {\n render: () => html`\n <nve-menu>\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item popovertarget=\"menu-tooltip\" id=\"menu-item-2\">\n item 2\n <nve-icon id=\"menu-anchor\" size=\"md\" name=\"exclamation-triangle\" style=\"margin-left: auto\"></nve-icon>\n <nve-tooltip anchor=\"menu-anchor\" id=\"menu-tooltip\" style=\"interest-delay-start: 2s\">This is a warning tooltip</nve-tooltip>\n </nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n </nve-menu>\n `\n}\n\n/**\n * @summary Menu items with danger status styling for destructive actions like delete or logout operations.\n */\nexport const DangerStatus = {\n render: () => html`\n <nve-menu>\n <nve-menu-item status=\"danger\">default</nve-menu-item>\n <nve-menu-item status=\"danger\" disabled>disabled</nve-menu-item>\n <nve-menu-item status=\"danger\" selected>selected</nve-menu-item>\n <nve-menu-item status=\"danger\" current=\"page\">current</nve-menu-item>\n <nve-menu-item status=\"danger\"><nve-icon name=\"gear\"></nve-icon> icon left</nve-menu-item>\n <nve-menu-item status=\"danger\">icon right <nve-icon id=\"warning-icon\" size=\"md\" name=\"exclamation-triangle\" style=\"margin-left: auto\"></nve-icon></nve-menu-item>\n </nve-menu>\n `\n}\n"],"mappings":";AAGA,IAAA,IAAS"}
|
|
1
|
+
{"version":3,"file":"menu.examples.js","names":[],"sources":["../../src/menu/menu.examples.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html } from 'lit';\nimport '@nvidia-elements/core/button/define.js';\nimport '@nvidia-elements/core/dot/define.js';\nimport '@nvidia-elements/core/dropdown/define.js';\nimport '@nvidia-elements/core/icon/define.js';\nimport '@nvidia-elements/core/menu/define.js';\nimport '@nvidia-elements/core/logo/define.js';\nimport '@nvidia-elements/core/search/define.js';\nimport '@nvidia-elements/core/drawer/define.js';\nimport '@nvidia-elements/core/card/define.js';\nimport '@nvidia-elements/core/tooltip/define.js';\nimport '@nvidia-elements/core/page/define.js';\n\nexport default {\n title: 'Elements/Menu',\n component: 'nve-menu'\n};\n\n/**\n * @summary Basic menu with simple text items for the default menu structure and styling.\n */\nexport const Default = {\n render: () => html`\n <nve-menu>\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item>item 2</nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n <nve-menu-item>item 4</nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Menu items with content slots for icons, dots, and other elements.\n * @tags test-case\n */\nexport const ContentSlots = {\n render: () => html`\n <nve-menu>\n <nve-menu-item><nve-icon name=\"code\" slot=\"prefix\"></nve-icon> Code <nve-dot slot=\"suffix\" size=\"sm\"></nve-dot></nve-menu-item>\n <nve-menu-item><nve-icon name=\"checklist\" slot=\"prefix\"></nve-icon> Lint <nve-dot slot=\"suffix\" status=\"accent\" size=\"sm\"></nve-dot></nve-menu-item>\n <nve-menu-item><nve-icon name=\"terminal\" slot=\"prefix\"></nve-icon> CLI <nve-dot slot=\"suffix\" status=\"success\" size=\"sm\"></nve-dot></nve-menu-item>\n <nve-menu-item><nve-icon name=\"person\" slot=\"prefix\"></nve-icon> Profile <nve-dot slot=\"suffix\" status=\"warning\" size=\"sm\"></nve-dot></nve-menu-item>\n <nve-menu-item><nve-icon name=\"key\" slot=\"prefix\"></nve-icon> Access <nve-dot slot=\"suffix\" status=\"danger\" size=\"sm\"></nve-dot></nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Dynamically toggle the compact state of a menu.\n * @tags test-case\n */\nexport const Compact = {\n render: () => html`\n <nve-switch>\n <label>Compact</label>\n <input id=\"compact-switch\" type=\"checkbox\" aria-label=\"compact menu\" checked />\n </nve-switch>\n <nve-menu density=\"compact\" id=\"compact-menu\">\n <nve-menu-item><nve-icon name=\"code\" slot=\"prefix\"></nve-icon> Code</nve-menu-item>\n <nve-menu-item><nve-icon name=\"checklist\" slot=\"prefix\"></nve-icon> Lint</nve-menu-item>\n <nve-menu-item><nve-icon name=\"terminal\" slot=\"prefix\"></nve-icon> CLI</nve-menu-item>\n <nve-menu-item><nve-icon name=\"person\" slot=\"prefix\"></nve-icon> Profile</nve-menu-item>\n <nve-menu-item><nve-icon name=\"key\" slot=\"prefix\"></nve-icon> Access</nve-menu-item>\n </nve-menu>\n <script type=\"module\">\n document.querySelector('#compact-switch').addEventListener('change', e => {\n document.querySelector('#compact-menu').density = e.target.checked ? 'compact' : 'default';\n }); \n </script>\n `\n};\n\n/**\n * @summary An explicitly expanded group keeps navigation state controlled by the application without enabling automatic state changes. Use when the application owns expansion state.\n */\nexport const ExpandedNavigation = {\n render: () => html`\n <nve-menu-group expanded style=\"--width: 240px\">\n Resources\n <nve-menu>\n <nve-menu-item>Documentation</nve-menu-item>\n <nve-menu-item>Examples</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n `\n};\n\n/**\n * @summary A disabled menu-group header preserves its current expanded content while preventing user toggling. Use when group availability depends on application state.\n */\nexport const UnavailableNavigation = {\n render: () => html`\n <nve-menu-group expanded disabled style=\"--width: 240px\">\n Provisioning\n <nve-menu>\n <nve-menu-item>Clusters</nve-menu-item>\n <nve-menu-item>Storage</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n `\n};\n\n/**\n * @summary Menu with keyboard navigation and ARIA disclosure pattern inside a dropdown. Use when menu items need accessible focus management and arrow key navigation.\n * @tags pattern\n */\nexport const Dropdown = {\n render: () => html`\n <nve-button popovertarget=\"dropdown-menu\">dropdown</nve-button>\n <nve-dropdown id=\"dropdown-menu\">\n <nve-menu>\n <nve-menu-item><nve-icon name=\"person\"></nve-icon> profile</nve-menu-item>\n <nve-menu-item><nve-icon name=\"gear\"></nve-icon> settings</nve-menu-item>\n <nve-menu-item><nve-icon name=\"star\"></nve-icon> favorites</nve-menu-item>\n <nve-divider></nve-divider>\n <nve-menu-item><nve-icon name=\"logout\"></nve-icon> logout</nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n `\n};\n\n/**\n * @summary Menu with a selected item showing the visual state for user-selected options.\n */\nexport const Selected = {\n render: () => html`\n <nve-menu>\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item selected>item 2</nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n <nve-menu-item>item 4</nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Menu with a current page item showing the visual state for the active/current page in navigation.\n */\nexport const Current = {\n render: () => html`\n <nve-menu>\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item current=\"page\">item 2</nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n <nve-menu-item>item 4</nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary By default Menu will show a blue border on the selected item. You can change the border color by setting `--border-background` on the `<nve-menu-item>`\n * @tags test-case\n */\nexport const BorderBackground = {\n render: () => html`\n <nve-menu>\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item current=\"page\" style=\"--border-background: var(--nve-ref-color-brand-green-900);\">item 2</nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n <nve-menu-item>item 4</nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Menu with disabled items showing unavailable options while maintaining visual context.\n * @tags test-case\n */\nexport const Disabled = {\n render: () => html`\n <nve-menu>\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item disabled>item 2</nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n <nve-menu-item>item 4</nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Menu items with links for navigation functionality within menu structures.\n */\nexport const Links = {\n render: () => html`\n <nve-menu>\n <nve-menu-item><nve-icon slot=\"prefix\" name=\"person\"></nve-icon><a href=\"#\">profile</a></nve-menu-item>\n <nve-menu-item><nve-icon slot=\"prefix\" name=\"gear\"></nve-icon> <a href=\"#\">settings</a></nve-menu-item>\n <nve-menu-item><nve-icon slot=\"prefix\" name=\"star\"></nve-icon> <a href=\"#\">favorites</a></nve-menu-item>\n <nve-menu-item><nve-icon slot=\"prefix\" name=\"logout\"></nve-icon> <a href=\"#\">logout</a></nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Menu item features a default slot for content, along with a suffix slot for displaying elements such as keyboard shortcuts at the end of the menu item container.\n */\nexport const Suffix = {\n render: () => html`\n <nve-menu>\n <nve-menu-item>Copy<kbd slot=\"suffix\" nve-text=\"code flat\">CMD + C</kbd></nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Menu with constrained height showing scrollable behavior when content exceeds container limits.\n * @tags test-case\n */\nexport const Scroll = {\n render: () => html`\n <nve-menu style=\"--max-height: 150px\">\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item>item 2</nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n <nve-menu-item>item 4</nve-menu-item>\n <nve-menu-item>item 5</nve-menu-item>\n <nve-menu-item>item 6</nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Use a dropdown menu with search and branded logos for application selection interfaces.\n * @tags pattern\n */\nexport const Complex = {\n render: () => html`\n <nve-button popovertarget=\"dropdown-menu\">dropdown</nve-button>\n <nve-dropdown id=\"dropdown-menu\">\n <nve-search rounded>\n <input type=\"search\" placeholder=\"search tools\" aria-label=\"search apps\" />\n </nve-search>\n <nve-menu>\n <nve-menu-item>\n <nve-logo color=\"pink-rose\" size=\"sm\">Db</nve-logo> Debugger\n </nve-menu-item>\n <nve-menu-item>\n <nve-logo color=\"blue-cobalt\" size=\"sm\">TM</nve-logo> Task Manager\n </nve-menu-item>\n <nve-menu-item>\n <nve-logo color=\"yellow-nova\" size=\"sm\">CI</nve-logo> CI Services\n </nve-menu-item>\n <nve-divider></nve-divider>\n <nve-menu-item>\n <nve-logo size=\"sm\">NV</nve-logo> All Apps\n </nve-menu-item>\n </nve-menu>\n </nve-dropdown>\n `\n};\n\n/**\n * @summary Vertical navigation menu groups with and without icons. For deeply nested navigation use the `nve-tree` component.\n */\nexport const VerticalNavigation = {\n render: () => html`\n <div nve-layout=\"row gap:xl\">\n <nav style=\"width: 175px\">\n <nve-menu-group behavior-expand expanded>\n Overview\n <nve-menu>\n <nve-menu-item current=\"page\"><nve-icon name=\"home\" slot=\"prefix\"></nve-icon> Getting Started</nve-menu-item>\n <nve-menu-item><nve-icon name=\"bell\" slot=\"prefix\"></nve-icon> Alerts</nve-menu-item>\n <nve-menu-item><nve-icon name=\"add\" slot=\"prefix\"></nve-icon> Create New</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n <nve-menu-group behavior-expand expanded>\n Data\n <nve-menu>\n <nve-menu-item><nve-icon name=\"office-building\" slot=\"prefix\"></nve-icon> Catalog</nve-menu-item>\n <nve-menu-item><nve-icon name=\"view-as-grid\" slot=\"prefix\"></nve-icon> Dashboards</nve-menu-item>\n <nve-menu-item><nve-icon name=\"rectangle-stack-horizontal\" slot=\"prefix\"></nve-icon> Volumes</nve-menu-item>\n <nve-menu-item><nve-icon name=\"layers\" slot=\"prefix\"></nve-icon> Models</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n <nve-menu-group behavior-expand expanded>\n Develop\n <nve-menu>\n <nve-menu-item><nve-icon name=\"code\" slot=\"prefix\"></nve-icon> Queries</nve-menu-item>\n <nve-menu-item><nve-icon name=\"doc-checkmark\" slot=\"prefix\"></nve-icon> Notebooks</nve-menu-item>\n <nve-menu-item><nve-icon name=\"branch\" slot=\"prefix\"></nve-icon> Pipelines</nve-menu-item>\n <nve-menu-item><nve-icon name=\"beaker\" slot=\"prefix\"></nve-icon> Experiments</nve-menu-item>\n <nve-menu-item><nve-icon name=\"clock\" slot=\"prefix\"></nve-icon> Runs</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n </nav>\n\n <nav style=\"width: 175px\">\n <nve-menu-group behavior-expand expanded>\n Overview\n <nve-menu>\n <nve-menu-item current=\"page\">Getting Started</nve-menu-item>\n <nve-menu-item>Alerts</nve-menu-item>\n <nve-menu-item>Create New</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n <nve-menu-group behavior-expand expanded>\n Data\n <nve-menu>\n <nve-menu-item>Catalog</nve-menu-item>\n <nve-menu-item>Dashboards</nve-menu-item>\n <nve-menu-item>Volumes</nve-menu-item>\n <nve-menu-item>Models</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n <nve-menu-group behavior-expand expanded>\n Develop\n <nve-menu>\n <nve-menu-item>Queries</nve-menu-item>\n <nve-menu-item >Notebooks</nve-menu-item>\n <nve-menu-item>Pipelines</nve-menu-item>\n <nve-menu-item>Experiments</nve-menu-item>\n <nve-menu-item>Runs</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n </nav>\n </div>\n `\n};\n\n/**\n * @summary Use a navigation drawer to overlay page content for out-of-context navigation.\n * @tags pattern\n */\nexport const VerticalNavigationDrawer = {\n render: () => html`\n <nve-page>\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\" color=\"brand-green\">NV</nve-logo>\n <h2 slot=\"prefix\" nve-text=\"heading sm\">NVIDIA</h2>\n </nve-page-header>\n <main nve-layout=\"column gap:md pad:md\">\n <nve-button popovertarget=\"menu-drawer\">toggle drawer</nve-button>\n </main>\n <nve-drawer position=\"right\" size=\"sm\" modal closable id=\"menu-drawer\">\n <nve-drawer-header>\n <h3 nve-text=\"heading\">Drawer</h3>\n </nve-drawer-header>\n <nve-drawer-content>\n <nve-menu-group behavior-expand expanded>\n Overview\n <nve-menu>\n <nve-menu-item current=\"page\">Getting Started</nve-menu-item>\n <nve-menu-item>Alerts</nve-menu-item>\n <nve-menu-item>Create New</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n <nve-menu-group behavior-expand expanded>\n Data\n <nve-menu>\n <nve-menu-item>Catalog</nve-menu-item>\n <nve-menu-item>Dashboards</nve-menu-item>\n <nve-menu-item>Volumes</nve-menu-item>\n <nve-menu-item>Models</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n <nve-menu-group behavior-expand expanded>\n Develop\n <nve-menu>\n <nve-menu-item>Queries</nve-menu-item>\n <nve-menu-item >Notebooks</nve-menu-item>\n <nve-menu-item>Pipelines</nve-menu-item>\n <nve-menu-item>Experiments</nve-menu-item>\n <nve-menu-item>Runs</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n </nve-drawer-content>\n </nve-drawer>\n </nve-page>\n `\n};\n\n/**\n * @summary Use an inline navigation panel to push page content aside when navigation is contextual to the page.\n * @tags pattern\n */\nexport const VerticalNavigationPanel = {\n render: () => html`\n<nve-page>\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\" color=\"brand-green\">NV</nve-logo>\n <h2 slot=\"prefix\" nve-text=\"heading sm\">NVIDIA</h2>\n </nve-page-header>\n <nve-page-panel slot=\"left\" size=\"sm\" expanded>\n <nve-page-panel-header>\n <h3 nve-text=\"heading\">Drawer</h3>\n </nve-page-panel-header>\n <nve-page-panel-content>\n <nve-menu-group behavior-expand expanded>\n Overview\n <nve-menu>\n <nve-menu-item current=\"page\">Getting Started</nve-menu-item>\n <nve-menu-item>Alerts</nve-menu-item>\n <nve-menu-item>Create New</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n <nve-menu-group behavior-expand expanded>\n Data\n <nve-menu>\n <nve-menu-item>Catalog</nve-menu-item>\n <nve-menu-item>Dashboards</nve-menu-item>\n <nve-menu-item>Volumes</nve-menu-item>\n <nve-menu-item>Models</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n <nve-menu-group behavior-expand expanded>\n Develop\n <nve-menu>\n <nve-menu-item>Queries</nve-menu-item>\n <nve-menu-item >Notebooks</nve-menu-item>\n <nve-menu-item>Pipelines</nve-menu-item>\n <nve-menu-item>Experiments</nve-menu-item>\n <nve-menu-item>Runs</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n </nve-page-panel-content>\n </nve-page-panel>\n <main nve-layout=\"column gap:md pad:md\">\n <p nve-text=\"body\">Content</p>\n </main>\n</nve-page>\n `\n};\n\n/**\n * @summary Use a tooltip on a menu item to provide extra context and warnings.\n * @tags pattern test-case\n */\nexport const ItemTooltip = {\n render: () => html`\n <nve-menu>\n <nve-menu-item>item 1</nve-menu-item>\n <nve-menu-item popovertarget=\"menu-tooltip\" id=\"menu-item-2\">\n item 2\n <nve-icon id=\"menu-anchor\" size=\"md\" name=\"exclamation-triangle\" style=\"margin-left: auto\"></nve-icon>\n <nve-tooltip anchor=\"menu-anchor\" id=\"menu-tooltip\" style=\"interest-delay-start: 2s\">This is a warning tooltip</nve-tooltip>\n </nve-menu-item>\n <nve-menu-item>item 3</nve-menu-item>\n </nve-menu>\n `\n};\n\n/**\n * @summary Menu items with danger status styling for destructive actions like delete or logout operations.\n */\nexport const DangerStatus = {\n render: () => html`\n <nve-menu>\n <nve-menu-item status=\"danger\">default</nve-menu-item>\n <nve-menu-item status=\"danger\" disabled>disabled</nve-menu-item>\n <nve-menu-item status=\"danger\" selected>selected</nve-menu-item>\n <nve-menu-item status=\"danger\" current=\"page\">current</nve-menu-item>\n <nve-menu-item status=\"danger\"><nve-icon name=\"gear\"></nve-icon> icon left</nve-menu-item>\n <nve-menu-item status=\"danger\">icon right <nve-icon id=\"warning-icon\" size=\"md\" name=\"exclamation-triangle\" style=\"margin-left: auto\"></nve-icon></nve-menu-item>\n </nve-menu>\n `\n};\n"],"mappings":";AAGA,IAAA,IAAS"}
|
|
@@ -11,6 +11,46 @@
|
|
|
11
11
|
"composition": false,
|
|
12
12
|
"tags": []
|
|
13
13
|
},
|
|
14
|
+
{
|
|
15
|
+
"id": "menu-content-slots",
|
|
16
|
+
"name": "ContentSlots",
|
|
17
|
+
"template": "<nve-menu>\n <nve-menu-item><nve-icon name=\"code\" slot=\"prefix\"></nve-icon> Code <nve-dot slot=\"suffix\" size=\"sm\"></nve-dot></nve-menu-item>\n <nve-menu-item><nve-icon name=\"checklist\" slot=\"prefix\"></nve-icon> Lint <nve-dot slot=\"suffix\" status=\"accent\" size=\"sm\"></nve-dot></nve-menu-item>\n <nve-menu-item><nve-icon name=\"terminal\" slot=\"prefix\"></nve-icon> CLI <nve-dot slot=\"suffix\" status=\"success\" size=\"sm\"></nve-dot></nve-menu-item>\n <nve-menu-item><nve-icon name=\"person\" slot=\"prefix\"></nve-icon> Profile <nve-dot slot=\"suffix\" status=\"warning\" size=\"sm\"></nve-dot></nve-menu-item>\n <nve-menu-item><nve-icon name=\"key\" slot=\"prefix\"></nve-icon> Access <nve-dot slot=\"suffix\" status=\"danger\" size=\"sm\"></nve-dot></nve-menu-item>\n</nve-menu>\n",
|
|
18
|
+
"summary": "Menu items with content slots for icons, dots, and other elements.",
|
|
19
|
+
"description": "",
|
|
20
|
+
"composition": true,
|
|
21
|
+
"tags": [
|
|
22
|
+
"test-case"
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "menu-compact",
|
|
27
|
+
"name": "Compact",
|
|
28
|
+
"template": "<nve-switch>\n <label>Compact</label>\n <input id=\"compact-switch\" type=\"checkbox\" aria-label=\"compact menu\" checked />\n</nve-switch>\n<nve-menu density=\"compact\" id=\"compact-menu\">\n <nve-menu-item><nve-icon name=\"code\" slot=\"prefix\"></nve-icon> Code</nve-menu-item>\n <nve-menu-item><nve-icon name=\"checklist\" slot=\"prefix\"></nve-icon> Lint</nve-menu-item>\n <nve-menu-item><nve-icon name=\"terminal\" slot=\"prefix\"></nve-icon> CLI</nve-menu-item>\n <nve-menu-item><nve-icon name=\"person\" slot=\"prefix\"></nve-icon> Profile</nve-menu-item>\n <nve-menu-item><nve-icon name=\"key\" slot=\"prefix\"></nve-icon> Access</nve-menu-item>\n</nve-menu>\n<script type=\"module\">\n document.querySelector(\"#compact-switch\").addEventListener(\"change\", (e) => {\n document.querySelector(\"#compact-menu\").density = e.target.checked ? \"compact\" : \"default\";\n });\n</script>\n",
|
|
29
|
+
"summary": "Dynamically toggle the compact state of a menu.",
|
|
30
|
+
"description": "",
|
|
31
|
+
"composition": true,
|
|
32
|
+
"tags": [
|
|
33
|
+
"test-case"
|
|
34
|
+
]
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"id": "menu-expanded-navigation",
|
|
38
|
+
"name": "ExpandedNavigation",
|
|
39
|
+
"template": "<nve-menu-group expanded style=\"--width: 240px\">\n Resources\n <nve-menu>\n <nve-menu-item>Documentation</nve-menu-item>\n <nve-menu-item>Examples</nve-menu-item>\n </nve-menu>\n</nve-menu-group>\n",
|
|
40
|
+
"summary": "An explicitly expanded group keeps navigation state controlled by the application without enabling automatic state changes. Use when the application owns expansion state.",
|
|
41
|
+
"description": "",
|
|
42
|
+
"composition": false,
|
|
43
|
+
"tags": []
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"id": "menu-unavailable-navigation",
|
|
47
|
+
"name": "UnavailableNavigation",
|
|
48
|
+
"template": "<nve-menu-group expanded disabled style=\"--width: 240px\">\n Provisioning\n <nve-menu>\n <nve-menu-item>Clusters</nve-menu-item>\n <nve-menu-item>Storage</nve-menu-item>\n </nve-menu>\n</nve-menu-group>\n",
|
|
49
|
+
"summary": "A disabled menu-group header preserves its current expanded content while preventing user toggling. Use when group availability depends on application state.",
|
|
50
|
+
"description": "",
|
|
51
|
+
"composition": false,
|
|
52
|
+
"tags": []
|
|
53
|
+
},
|
|
14
54
|
{
|
|
15
55
|
"id": "menu-dropdown",
|
|
16
56
|
"name": "Dropdown",
|
|
@@ -62,19 +102,10 @@
|
|
|
62
102
|
"test-case"
|
|
63
103
|
]
|
|
64
104
|
},
|
|
65
|
-
{
|
|
66
|
-
"id": "menu-icons",
|
|
67
|
-
"name": "Icons",
|
|
68
|
-
"template": "<nve-menu>\n <nve-menu-item><nve-icon name=\"person\"></nve-icon> profile</nve-menu-item>\n <nve-menu-item><nve-icon name=\"gear\"></nve-icon> settings</nve-menu-item>\n <nve-menu-item><nve-icon name=\"star\"></nve-icon> favorites</nve-menu-item>\n <nve-menu-item><nve-icon name=\"logout\"></nve-icon> logout</nve-menu-item>\n</nve-menu>\n",
|
|
69
|
-
"summary": "Menu items with icons to add visual context and improve usability.",
|
|
70
|
-
"description": "",
|
|
71
|
-
"composition": false,
|
|
72
|
-
"tags": []
|
|
73
|
-
},
|
|
74
105
|
{
|
|
75
106
|
"id": "menu-links",
|
|
76
107
|
"name": "Links",
|
|
77
|
-
"template": "<nve-menu>\n <nve-menu-item><nve-icon name=\"person\"></nve-icon><a href=\"#\">profile</a></nve-menu-item>\n <nve-menu-item><nve-icon name=\"gear\"></nve-icon> <a href=\"#\">settings</a></nve-menu-item>\n <nve-menu-item><nve-icon name=\"star\"></nve-icon> <a href=\"#\">favorites</a></nve-menu-item>\n <nve-menu-item><nve-icon name=\"logout\"></nve-icon> <a href=\"#\">logout</a></nve-menu-item>\n</nve-menu>\n",
|
|
108
|
+
"template": "<nve-menu>\n <nve-menu-item><nve-icon slot=\"prefix\" name=\"person\"></nve-icon><a href=\"#\">profile</a></nve-menu-item>\n <nve-menu-item><nve-icon slot=\"prefix\" name=\"gear\"></nve-icon> <a href=\"#\">settings</a></nve-menu-item>\n <nve-menu-item><nve-icon slot=\"prefix\" name=\"star\"></nve-icon> <a href=\"#\">favorites</a></nve-menu-item>\n <nve-menu-item><nve-icon slot=\"prefix\" name=\"logout\"></nve-icon> <a href=\"#\">logout</a></nve-menu-item>\n</nve-menu>\n",
|
|
78
109
|
"summary": "Menu items with links for navigation functionality within menu structures.",
|
|
79
110
|
"description": "",
|
|
80
111
|
"composition": false,
|
|
@@ -83,7 +114,7 @@
|
|
|
83
114
|
{
|
|
84
115
|
"id": "menu-suffix",
|
|
85
116
|
"name": "Suffix",
|
|
86
|
-
"template": "<nve-menu>\n <nve-menu-item
|
|
117
|
+
"template": "<nve-menu>\n <nve-menu-item>Copy<kbd slot=\"suffix\" nve-text=\"code flat\">CMD + C</kbd></nve-menu-item>\n</nve-menu>\n",
|
|
87
118
|
"summary": "Menu item features a default slot for content, along with a suffix slot for displaying elements such as keyboard shortcuts at the end of the menu item container.",
|
|
88
119
|
"description": "",
|
|
89
120
|
"composition": false,
|
|
@@ -111,10 +142,19 @@
|
|
|
111
142
|
"pattern"
|
|
112
143
|
]
|
|
113
144
|
},
|
|
145
|
+
{
|
|
146
|
+
"id": "menu-vertical-navigation",
|
|
147
|
+
"name": "VerticalNavigation",
|
|
148
|
+
"template": "<div nve-layout=\"row gap:xl\">\n <nav style=\"width: 175px\">\n <nve-menu-group behavior-expand expanded>\n Overview\n <nve-menu>\n <nve-menu-item current=\"page\"><nve-icon name=\"home\" slot=\"prefix\"></nve-icon> Getting Started</nve-menu-item>\n <nve-menu-item><nve-icon name=\"bell\" slot=\"prefix\"></nve-icon> Alerts</nve-menu-item>\n <nve-menu-item><nve-icon name=\"add\" slot=\"prefix\"></nve-icon> Create New</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n <nve-menu-group behavior-expand expanded>\n Data\n <nve-menu>\n <nve-menu-item><nve-icon name=\"office-building\" slot=\"prefix\"></nve-icon> Catalog</nve-menu-item>\n <nve-menu-item><nve-icon name=\"view-as-grid\" slot=\"prefix\"></nve-icon> Dashboards</nve-menu-item>\n <nve-menu-item><nve-icon name=\"rectangle-stack-horizontal\" slot=\"prefix\"></nve-icon> Volumes</nve-menu-item>\n <nve-menu-item><nve-icon name=\"layers\" slot=\"prefix\"></nve-icon> Models</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n <nve-menu-group behavior-expand expanded>\n Develop\n <nve-menu>\n <nve-menu-item><nve-icon name=\"code\" slot=\"prefix\"></nve-icon> Queries</nve-menu-item>\n <nve-menu-item><nve-icon name=\"doc-checkmark\" slot=\"prefix\"></nve-icon> Notebooks</nve-menu-item>\n <nve-menu-item><nve-icon name=\"branch\" slot=\"prefix\"></nve-icon> Pipelines</nve-menu-item>\n <nve-menu-item><nve-icon name=\"beaker\" slot=\"prefix\"></nve-icon> Experiments</nve-menu-item>\n <nve-menu-item><nve-icon name=\"clock\" slot=\"prefix\"></nve-icon> Runs</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n </nav>\n <nav style=\"width: 175px\">\n <nve-menu-group behavior-expand expanded>\n Overview\n <nve-menu>\n <nve-menu-item current=\"page\">Getting Started</nve-menu-item>\n <nve-menu-item>Alerts</nve-menu-item>\n <nve-menu-item>Create New</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n <nve-menu-group behavior-expand expanded>\n Data\n <nve-menu>\n <nve-menu-item>Catalog</nve-menu-item>\n <nve-menu-item>Dashboards</nve-menu-item>\n <nve-menu-item>Volumes</nve-menu-item>\n <nve-menu-item>Models</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n <nve-menu-group behavior-expand expanded>\n Develop\n <nve-menu>\n <nve-menu-item>Queries</nve-menu-item>\n <nve-menu-item>Notebooks</nve-menu-item>\n <nve-menu-item>Pipelines</nve-menu-item>\n <nve-menu-item>Experiments</nve-menu-item>\n <nve-menu-item>Runs</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n </nav>\n</div>\n",
|
|
149
|
+
"summary": "Vertical navigation menu groups with and without icons. For deeply nested navigation use the `nve-tree` component.",
|
|
150
|
+
"description": "",
|
|
151
|
+
"composition": false,
|
|
152
|
+
"tags": []
|
|
153
|
+
},
|
|
114
154
|
{
|
|
115
155
|
"id": "menu-vertical-navigation-drawer",
|
|
116
156
|
"name": "VerticalNavigationDrawer",
|
|
117
|
-
"template": "<nve-page>\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\">NV</nve-logo>\n <h2 slot=\"prefix\" nve-text=\"heading sm\">NVIDIA</h2>\n </nve-page-header>\n <main nve-layout=\"column gap:md pad:md\">\n <nve-button popovertarget=\"menu-drawer\">toggle drawer</nve-button>\n </main>\n <nve-drawer position=\"right\" size=\"sm\" modal closable id=\"menu-drawer\">\n <nve-drawer-header>\n <h3 nve-text=\"heading\">Drawer</h3>\n </nve-drawer-header>\n <nve-drawer-content>\n <nve-menu>\n <nve-menu-item>item
|
|
157
|
+
"template": "<nve-page>\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\" color=\"brand-green\">NV</nve-logo>\n <h2 slot=\"prefix\" nve-text=\"heading sm\">NVIDIA</h2>\n </nve-page-header>\n <main nve-layout=\"column gap:md pad:md\">\n <nve-button popovertarget=\"menu-drawer\">toggle drawer</nve-button>\n </main>\n <nve-drawer position=\"right\" size=\"sm\" modal closable id=\"menu-drawer\">\n <nve-drawer-header>\n <h3 nve-text=\"heading\">Drawer</h3>\n </nve-drawer-header>\n <nve-drawer-content>\n <nve-menu-group behavior-expand expanded>\n Overview\n <nve-menu>\n <nve-menu-item current=\"page\">Getting Started</nve-menu-item>\n <nve-menu-item>Alerts</nve-menu-item>\n <nve-menu-item>Create New</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n <nve-menu-group behavior-expand expanded>\n Data\n <nve-menu>\n <nve-menu-item>Catalog</nve-menu-item>\n <nve-menu-item>Dashboards</nve-menu-item>\n <nve-menu-item>Volumes</nve-menu-item>\n <nve-menu-item>Models</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n <nve-menu-group behavior-expand expanded>\n Develop\n <nve-menu>\n <nve-menu-item>Queries</nve-menu-item>\n <nve-menu-item>Notebooks</nve-menu-item>\n <nve-menu-item>Pipelines</nve-menu-item>\n <nve-menu-item>Experiments</nve-menu-item>\n <nve-menu-item>Runs</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n </nve-drawer-content>\n </nve-drawer>\n</nve-page>\n",
|
|
118
158
|
"summary": "Use a navigation drawer to overlay page content for out-of-context navigation.",
|
|
119
159
|
"description": "",
|
|
120
160
|
"composition": true,
|
|
@@ -125,7 +165,7 @@
|
|
|
125
165
|
{
|
|
126
166
|
"id": "menu-vertical-navigation-panel",
|
|
127
167
|
"name": "VerticalNavigationPanel",
|
|
128
|
-
"template": "<nve-page>\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\">NV</nve-logo>\n <h2 slot=\"prefix\" nve-text=\"heading sm\">NVIDIA</h2>\n </nve-page-header>\n <nve-page-panel slot=\"left\"
|
|
168
|
+
"template": "<nve-page>\n <nve-page-header slot=\"header\">\n <nve-logo slot=\"prefix\" size=\"sm\" color=\"brand-green\">NV</nve-logo>\n <h2 slot=\"prefix\" nve-text=\"heading sm\">NVIDIA</h2>\n </nve-page-header>\n <nve-page-panel slot=\"left\" size=\"sm\" expanded>\n <nve-page-panel-header>\n <h3 nve-text=\"heading\">Drawer</h3>\n </nve-page-panel-header>\n <nve-page-panel-content>\n <nve-menu-group behavior-expand expanded>\n Overview\n <nve-menu>\n <nve-menu-item current=\"page\">Getting Started</nve-menu-item>\n <nve-menu-item>Alerts</nve-menu-item>\n <nve-menu-item>Create New</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n <nve-menu-group behavior-expand expanded>\n Data\n <nve-menu>\n <nve-menu-item>Catalog</nve-menu-item>\n <nve-menu-item>Dashboards</nve-menu-item>\n <nve-menu-item>Volumes</nve-menu-item>\n <nve-menu-item>Models</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n <nve-menu-group behavior-expand expanded>\n Develop\n <nve-menu>\n <nve-menu-item>Queries</nve-menu-item>\n <nve-menu-item>Notebooks</nve-menu-item>\n <nve-menu-item>Pipelines</nve-menu-item>\n <nve-menu-item>Experiments</nve-menu-item>\n <nve-menu-item>Runs</nve-menu-item>\n </nve-menu>\n </nve-menu-group>\n </nve-page-panel-content>\n </nve-page-panel>\n <main nve-layout=\"column gap:md pad:md\">\n <p nve-text=\"body\">Content</p>\n </main>\n</nve-page>\n",
|
|
129
169
|
"summary": "Use an inline navigation panel to push page content aside when navigation is contextual to the page.",
|
|
130
170
|
"description": "",
|
|
131
171
|
"composition": true,
|
package/dist/menu/menu.global.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region src/menu/menu.global.css?inline
|
|
2
|
-
var e = "nve-menu:has(nve-menu-item:state(current)){--padding: 0 0 0 var(--nve-ref-size-200)}nve-menu:has(nve-tooltip),nve-menu:has(nve-tooltip) nve-menu-item{content-visibility:initial}";
|
|
2
|
+
var e = "nve-menu:has(nve-menu-item:state(current)){--padding: 0 0 0 var(--nve-ref-size-200)}nve-menu:has(nve-tooltip),nve-menu:has(nve-tooltip) nve-menu-item{content-visibility:initial}nve-menu[density=compact]{--min-width: 0;nve-menu-item{--gap: 0;width:fit-content}nve-menu-item::part(_slot),nve-menu-item::part(_suffix){display:none!important}}";
|
|
3
3
|
//#endregion
|
|
4
4
|
export { e as default };
|
|
5
5
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.global.js","names":[],"sources":["../../src/menu/menu.global.css?inline"],"sourcesContent":["/* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */\n/* SPDX-License-Identifier: Apache-2.0 */\n\nnve-menu:has(nve-menu-item:state(current)) {\n --padding: 0 0 0 var(--nve-ref-size-200);\n}\n\nnve-menu:has(nve-tooltip),\nnve-menu:has(nve-tooltip) nve-menu-item {\n content-visibility: initial;\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"menu.global.js","names":[],"sources":["../../src/menu/menu.global.css?inline"],"sourcesContent":["/* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */\n/* SPDX-License-Identifier: Apache-2.0 */\n\nnve-menu:has(nve-menu-item:state(current)) {\n --padding: 0 0 0 var(--nve-ref-size-200);\n}\n\nnve-menu:has(nve-tooltip),\nnve-menu:has(nve-tooltip) nve-menu-item {\n content-visibility: initial;\n}\n\nnve-menu[density='compact'] {\n --min-width: 0;\n\n nve-menu-item {\n --gap: 0;\n width: fit-content;\n }\n\n nve-menu-item::part(_slot),\n nve-menu-item::part(_suffix) {\n display: none !important;\n }\n}\n"],"mappings":""}
|
package/dist/menu/menu2.js
CHANGED
|
@@ -7,16 +7,17 @@ import a from "../_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/decorate.js
|
|
|
7
7
|
import o from "./menu.js";
|
|
8
8
|
import s from "./menu.global.js";
|
|
9
9
|
import { LitElement as c, html as l } from "lit";
|
|
10
|
-
import {
|
|
10
|
+
import { property as u } from "lit/decorators/property.js";
|
|
11
|
+
import { queryAssignedElements as d } from "lit/decorators/query-assigned-elements.js";
|
|
11
12
|
//#region src/menu/menu.ts
|
|
12
|
-
var
|
|
13
|
+
var f = class extends c {
|
|
13
14
|
static {
|
|
14
15
|
this.styles = i([o]);
|
|
15
16
|
}
|
|
16
17
|
static {
|
|
17
18
|
this.metadata = {
|
|
18
19
|
tag: "nve-menu",
|
|
19
|
-
version: "2.
|
|
20
|
+
version: "2.11.0",
|
|
20
21
|
children: ["nve-menu-item", "nve-divider"]
|
|
21
22
|
};
|
|
22
23
|
}
|
|
@@ -30,7 +31,8 @@ var d = class extends c {
|
|
|
30
31
|
};
|
|
31
32
|
}
|
|
32
33
|
#e = null;
|
|
33
|
-
#t =
|
|
34
|
+
#t = !1;
|
|
35
|
+
#n = () => {
|
|
34
36
|
this.#e === null && (this.#e = requestAnimationFrame(() => {
|
|
35
37
|
this.#e = null;
|
|
36
38
|
let e = this.shadowRoot?.querySelector("[internal-host]");
|
|
@@ -51,14 +53,20 @@ var d = class extends c {
|
|
|
51
53
|
return l`<div internal-host><slot></slot></div>`;
|
|
52
54
|
}
|
|
53
55
|
async firstUpdated() {
|
|
54
|
-
await this.updateComplete, this.shadowRoot?.querySelector("[internal-host]")?.addEventListener("scroll", this.#
|
|
56
|
+
await this.updateComplete, this.shadowRoot?.querySelector("[internal-host]")?.addEventListener("scroll", this.#n, { passive: !0 });
|
|
55
57
|
}
|
|
56
58
|
connectedCallback() {
|
|
57
|
-
super.connectedCallback(), r(this), this._internals.role = "menu", t(this, s);
|
|
59
|
+
super.connectedCallback(), r(this), this._internals.role = "menu", t(this, s), this.parentElement?.localName === "nve-menu-group" && !this.slot && (this.slot = "menu", this.#t = !0);
|
|
60
|
+
}
|
|
61
|
+
disconnectedCallback() {
|
|
62
|
+
super.disconnectedCallback(), this.#t && this.slot === "menu" && (this.slot = ""), this.#t = !1;
|
|
58
63
|
}
|
|
59
64
|
};
|
|
60
|
-
a([u(
|
|
65
|
+
a([u({
|
|
66
|
+
type: String,
|
|
67
|
+
reflect: !0
|
|
68
|
+
})], f.prototype, "density", void 0), a([d()], f.prototype, "items", void 0), f = a([e(), n()], f);
|
|
61
69
|
//#endregion
|
|
62
|
-
export {
|
|
70
|
+
export { f as Menu };
|
|
63
71
|
|
|
64
72
|
//# sourceMappingURL=menu2.js.map
|
package/dist/menu/menu2.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu2.js","names":[],"sources":["../../src/menu/menu.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html, LitElement } from 'lit';\nimport { queryAssignedElements } from 'lit/decorators/query-assigned-elements.js';\nimport type { KeynavListConfig } from '@nvidia-elements/core/internal';\nimport {\n useStyles,\n attachInternals,\n keyNavigationList,\n appendRootNodeStyle,\n audit\n} from '@nvidia-elements/core/internal';\nimport type { MenuItem } from './menu-item.js';\nimport styles from './menu.css?inline';\nimport globalStyles from './menu.global.css?inline';\n\n/**\n * @element nve-menu\n * @description A menu offers a list of choices to the user, such as a set of actions or functions. Choosing an item in a menu typically opens a sub menu, or invokes a command.\n * @documentation https://nvidia.github.io/elements/docs/elements/menu/\n * @since 0.11.0\n * @entrypoint \\@nvidia-elements/core/menu\n * @slot - default slot for `nve-menu-item`\n * @cssprop --padding\n * @cssprop --gap\n * @cssprop --width\n * @cssprop --max-width\n * @cssprop --min-width\n * @cssprop --max-height\n * @event scroll - Fires when the user scrolls the menu list. Throttled to one dispatch per animation frame. `detail: { scrollTop, scrollHeight, clientHeight }`.\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/menubar/\n */\n@audit()\n@keyNavigationList<Menu>()\nexport class Menu extends LitElement {\n static styles = useStyles([styles]);\n\n static readonly metadata = {\n tag: 'nve-menu',\n version: '0.0.0',\n children: ['nve-menu-item', 'nve-divider']\n };\n\n static elementDefinitions = {};\n\n /** @private */\n get keynavListConfig(): KeynavListConfig {\n return {\n layout: 'vertical',\n items: this.items\n };\n }\n\n /** @private */\n declare _internals: ElementInternals;\n\n @queryAssignedElements() private items!: MenuItem[];\n\n #scrollRAF: number | null = null;\n\n #handleScroll = () => {\n if (this.#scrollRAF !== null) return;\n this.#scrollRAF = requestAnimationFrame(() => {\n this.#scrollRAF = null;\n const container = this.shadowRoot?.querySelector<HTMLElement>('[internal-host]');\n if (!container) return;\n const { scrollTop, scrollHeight, clientHeight } = container;\n this.dispatchEvent(\n new CustomEvent('scroll', {\n bubbles: true,\n composed: true,\n detail: { scrollTop, scrollHeight, clientHeight }\n })\n );\n });\n };\n\n render() {\n return html`\n <div internal-host>\n <slot></slot>\n </div>\n `;\n }\n\n async firstUpdated() {\n await this.updateComplete;\n this.shadowRoot\n ?.querySelector('[internal-host]')\n ?.addEventListener('scroll', this.#handleScroll, { passive: true });\n }\n\n connectedCallback() {\n super.connectedCallback();\n attachInternals(this);\n this._internals.role = 'menu';\n appendRootNodeStyle(this, globalStyles);\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"menu2.js","names":[],"sources":["../../src/menu/menu.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators/property.js';\nimport { queryAssignedElements } from 'lit/decorators/query-assigned-elements.js';\nimport type { Density, KeynavListConfig } from '@nvidia-elements/core/internal';\nimport {\n useStyles,\n attachInternals,\n keyNavigationList,\n appendRootNodeStyle,\n audit\n} from '@nvidia-elements/core/internal';\nimport type { MenuItem } from './menu-item.js';\nimport styles from './menu.css?inline';\nimport globalStyles from './menu.global.css?inline';\n\n/**\n * @element nve-menu\n * @description A menu offers a list of choices to the user, such as a set of actions or functions. Choosing an item in a menu typically opens a sub menu, or invokes a command.\n * @documentation https://nvidia.github.io/elements/docs/elements/menu/\n * @since 0.11.0\n * @entrypoint \\@nvidia-elements/core/menu\n * @slot - default slot for `nve-menu-item`\n * @cssprop --padding\n * @cssprop --gap\n * @cssprop --width\n * @cssprop --max-width\n * @cssprop --min-width\n * @cssprop --max-height\n * @event scroll - Fires when the user scrolls the menu list. Throttled to one dispatch per animation frame. `detail: { scrollTop, scrollHeight, clientHeight }`.\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/menubar/\n */\n@audit()\n@keyNavigationList<Menu>()\nexport class Menu extends LitElement {\n static styles = useStyles([styles]);\n\n static readonly metadata = {\n tag: 'nve-menu',\n version: '0.0.0',\n children: ['nve-menu-item', 'nve-divider']\n };\n\n static elementDefinitions = {};\n\n /**\n * Determines if the menu is in a compact layout. This hides all menu item content except the prefix icon slot.\n */\n @property({ type: String, reflect: true }) density?: Density;\n\n /** @private */\n get keynavListConfig(): KeynavListConfig {\n return {\n layout: 'vertical',\n items: this.items\n };\n }\n\n /** @private */\n declare _internals: ElementInternals;\n\n @queryAssignedElements() private items!: MenuItem[];\n\n #scrollRAF: number | null = null;\n #assignedMenuSlot = false;\n\n #handleScroll = () => {\n if (this.#scrollRAF !== null) return;\n this.#scrollRAF = requestAnimationFrame(() => {\n this.#scrollRAF = null;\n const container = this.shadowRoot?.querySelector<HTMLElement>('[internal-host]');\n if (!container) return;\n const { scrollTop, scrollHeight, clientHeight } = container;\n this.dispatchEvent(\n new CustomEvent('scroll', {\n bubbles: true,\n composed: true,\n detail: { scrollTop, scrollHeight, clientHeight }\n })\n );\n });\n };\n\n render() {\n return html`\n <div internal-host>\n <slot></slot>\n </div>\n `;\n }\n\n async firstUpdated() {\n await this.updateComplete;\n this.shadowRoot\n ?.querySelector('[internal-host]')\n ?.addEventListener('scroll', this.#handleScroll, { passive: true });\n }\n\n connectedCallback() {\n super.connectedCallback();\n attachInternals(this);\n this._internals.role = 'menu';\n appendRootNodeStyle(this, globalStyles);\n\n if (this.parentElement?.localName === 'nve-menu-group' && !this.slot) {\n this.slot = 'menu';\n this.#assignedMenuSlot = true;\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n if (this.#assignedMenuSlot && this.slot === 'menu') {\n this.slot = '';\n }\n this.#assignedMenuSlot = false;\n }\n}\n"],"mappings":";;;;;;;;;;;;AAoCO,IAAM,IAAN,cAAmB,EAAW;;EACnB,KAAA,SAAA,EAAU,CAAC,CAAM,CAAC;;;EAEP,KAAA,WAAA;GACzB,KAAK;GACL,SAAS;GACT,UAAU,CAAC,iBAAiB,aAAa;EAC3C;;;EAE4B,KAAA,qBAAA,CAAC;;CAQ7B,IAAI,mBAAqC;EACvC,OAAO;GACL,QAAQ;GACR,OAAO,KAAK;EACd;CACF;CAOA,KAA4B;CAC5B,KAAoB;CAEpB,WAAsB;EAChB,KAAK,OAAe,SACxB,KAAK,KAAa,4BAA4B;GAC5C,KAAK,KAAa;GAClB,IAAM,IAAY,KAAK,YAAY,cAA2B,iBAAiB;GAC/E,IAAI,CAAC,GAAW;GAChB,IAAM,EAAE,cAAW,iBAAc,oBAAiB;GAClD,KAAK,cACH,IAAI,YAAY,UAAU;IACxB,SAAS;IACT,UAAU;IACV,QAAQ;KAAE;KAAW;KAAc;IAAa;GAClD,CAAC,CACH;EACF,CAAC;CACH;CAEA,SAAS;EACP,OAAO,CAAI;CAKb;CAEA,MAAM,eAAe;EAEnB,AADA,MAAM,KAAK,gBACX,KAAK,YACD,cAAc,iBAAiB,CAAC,EAChC,iBAAiB,UAAU,KAAK,IAAe,EAAE,SAAS,GAAK,CAAC;CACtE;CAEA,oBAAoB;EAMlB,AALA,MAAM,kBAAkB,GACxB,EAAgB,IAAI,GACpB,KAAK,WAAW,OAAO,QACvB,EAAoB,MAAM,CAAY,GAElC,KAAK,eAAe,cAAc,oBAAoB,CAAC,KAAK,SAC9D,KAAK,OAAO,QACZ,KAAK,KAAoB;CAE7B;CAEA,uBAAuB;EAKrB,AAJA,MAAM,qBAAqB,GACvB,KAAK,MAAqB,KAAK,SAAS,WAC1C,KAAK,OAAO,KAEd,KAAK,KAAoB;CAC3B;AACF;AArEG,EAAA,CAAA,EAAS;CAAE,MAAM;CAAQ,SAAS;AAAK,CAAC,CAAA,GAAA,EAAA,WAAA,WAAA,KAAA,CAAA,GAaxC,EAAA,CAAA,EAAsB,CAAA,GAAA,EAAA,WAAA,SAAA,KAAA,CAAA,GA7BxB,IAAA,EAAA,CAAA,EAAM,GACN,EAAwB,CAAA,GAAA,CAAA"}
|
package/dist/month/month.d.ts
CHANGED
|
@@ -31,5 +31,5 @@ export declare class Month extends Control implements ContainerElement {
|
|
|
31
31
|
static elementDefinitions: {
|
|
32
32
|
[IconButton.metadata.tag]: typeof IconButton;
|
|
33
33
|
};
|
|
34
|
-
protected get suffixContent(): import("lit").TemplateResult<1>;
|
|
34
|
+
protected get suffixContent(): import("lit-html").TemplateResult<1>;
|
|
35
35
|
}
|
package/dist/month/month2.js
CHANGED
|
@@ -101,7 +101,7 @@ export declare class Notification extends LitElement {
|
|
|
101
101
|
[Icon.metadata.tag]: typeof Icon;
|
|
102
102
|
[IconButton.metadata.tag]: typeof IconButton;
|
|
103
103
|
};
|
|
104
|
-
render(): import("lit").TemplateResult<1>;
|
|
104
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
105
105
|
connectedCallback(): void;
|
|
106
106
|
disconnectedCallback(): void;
|
|
107
107
|
firstUpdated(props: PropertyValues<this>): Promise<void>;
|
package/dist/page/page.d.ts
CHANGED
package/dist/page/page2.js
CHANGED
|
@@ -23,7 +23,7 @@ export declare class PageHeader extends LitElement {
|
|
|
23
23
|
tag: string;
|
|
24
24
|
version: string;
|
|
25
25
|
};
|
|
26
|
-
render(): import("lit").TemplateResult<1>;
|
|
26
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
27
27
|
/** @private */
|
|
28
28
|
_internals: ElementInternals;
|
|
29
29
|
connectedCallback(): void;
|
|
@@ -74,7 +74,7 @@ export declare class Pagination extends Pagination_base {
|
|
|
74
74
|
};
|
|
75
75
|
/** @private */
|
|
76
76
|
get keynavListConfig(): KeynavListConfig;
|
|
77
|
-
render(): import("lit").TemplateResult<1>;
|
|
77
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
78
78
|
constructor();
|
|
79
79
|
connectedCallback(): Promise<void>;
|
|
80
80
|
disconnectedCallback(): void;
|
package/dist/panel/panel.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ export declare class PanelHeader extends LitElement {
|
|
|
21
21
|
tag: string;
|
|
22
22
|
version: string;
|
|
23
23
|
};
|
|
24
|
-
render(): import("lit").TemplateResult<1>;
|
|
24
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
25
25
|
connectedCallback(): void;
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
@@ -41,7 +41,7 @@ export declare class PanelContent extends LitElement {
|
|
|
41
41
|
tag: string;
|
|
42
42
|
version: string;
|
|
43
43
|
};
|
|
44
|
-
render(): import("lit").TemplateResult<1>;
|
|
44
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
45
45
|
}
|
|
46
46
|
/**
|
|
47
47
|
* @element nve-panel-footer
|
|
@@ -62,7 +62,7 @@ export declare class PanelFooter extends LitElement {
|
|
|
62
62
|
tag: string;
|
|
63
63
|
version: string;
|
|
64
64
|
};
|
|
65
|
-
render(): import("lit").TemplateResult<1>;
|
|
65
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
66
66
|
connectedCallback(): void;
|
|
67
67
|
}
|
|
68
68
|
/**
|
|
@@ -119,6 +119,6 @@ export declare class Panel extends LitElement {
|
|
|
119
119
|
i18n: Partial<import("@nvidia-elements/core/internal").I18nStrings & {
|
|
120
120
|
__set: boolean;
|
|
121
121
|
}>;
|
|
122
|
-
render(): import("lit").TemplateResult<1>;
|
|
122
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
123
123
|
connectedCallback(): void;
|
|
124
124
|
}
|
package/dist/panel/panel2.js
CHANGED
|
@@ -21,7 +21,7 @@ var g = class extends f {
|
|
|
21
21
|
static {
|
|
22
22
|
this.metadata = {
|
|
23
23
|
tag: "nve-panel-header",
|
|
24
|
-
version: "2.
|
|
24
|
+
version: "2.11.0"
|
|
25
25
|
};
|
|
26
26
|
}
|
|
27
27
|
render() {
|
|
@@ -37,7 +37,7 @@ var g = class extends f {
|
|
|
37
37
|
static {
|
|
38
38
|
this.metadata = {
|
|
39
39
|
tag: "nve-panel-content",
|
|
40
|
-
version: "2.
|
|
40
|
+
version: "2.11.0"
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
43
|
render() {
|
|
@@ -50,7 +50,7 @@ var g = class extends f {
|
|
|
50
50
|
static {
|
|
51
51
|
this.metadata = {
|
|
52
52
|
tag: "nve-panel-footer",
|
|
53
|
-
version: "2.
|
|
53
|
+
version: "2.11.0"
|
|
54
54
|
};
|
|
55
55
|
}
|
|
56
56
|
render() {
|
|
@@ -69,7 +69,7 @@ var g = class extends f {
|
|
|
69
69
|
static {
|
|
70
70
|
this.metadata = {
|
|
71
71
|
tag: "nve-panel",
|
|
72
|
-
version: "2.
|
|
72
|
+
version: "2.11.0"
|
|
73
73
|
};
|
|
74
74
|
}
|
|
75
75
|
static {
|
|
@@ -33,5 +33,5 @@ export declare class Password extends Control implements ContainerElement {
|
|
|
33
33
|
static elementDefinitions: {
|
|
34
34
|
[IconButton.metadata.tag]: typeof IconButton;
|
|
35
35
|
};
|
|
36
|
-
protected get suffixContent(): import("lit").TemplateResult<1>;
|
|
36
|
+
protected get suffixContent(): import("lit-html").TemplateResult<1>;
|
|
37
37
|
}
|