@aquera/nile-elements 1.6.7 → 1.6.9
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/README.md +12 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1735 -495
- package/dist/internal/enum.cjs.js +1 -1
- package/dist/internal/enum.cjs.js.map +1 -1
- package/dist/internal/enum.esm.js +1 -1
- package/dist/nile-auto-complete/nile-auto-complete.cjs.js +1 -1
- package/dist/nile-auto-complete/nile-auto-complete.cjs.js.map +1 -1
- package/dist/nile-auto-complete/nile-auto-complete.esm.js +1 -1
- package/dist/nile-calendar/nile-calendar.cjs.js +1 -1
- package/dist/nile-calendar/nile-calendar.cjs.js.map +1 -1
- package/dist/nile-calendar/nile-calendar.css.cjs.js +1 -1
- package/dist/nile-calendar/nile-calendar.css.cjs.js.map +1 -1
- package/dist/nile-calendar/nile-calendar.css.esm.js +0 -3
- package/dist/nile-calendar/nile-calendar.esm.js +2 -2
- package/dist/nile-dropdown/nile-dropdown.cjs.js +1 -1
- package/dist/nile-dropdown/nile-dropdown.cjs.js.map +1 -1
- package/dist/nile-dropdown/nile-dropdown.esm.js +1 -1
- package/dist/nile-inline-sidebar/index.cjs.js +1 -1
- package/dist/nile-inline-sidebar/index.esm.js +1 -1
- package/dist/nile-inline-sidebar/nile-inline-sidebar.cjs.js +1 -1
- package/dist/nile-inline-sidebar/nile-inline-sidebar.cjs.js.map +1 -1
- package/dist/nile-inline-sidebar/nile-inline-sidebar.css.cjs.js +1 -1
- package/dist/nile-inline-sidebar/nile-inline-sidebar.css.cjs.js.map +1 -1
- package/dist/nile-inline-sidebar/nile-inline-sidebar.css.esm.js +76 -19
- package/dist/nile-inline-sidebar/nile-inline-sidebar.esm.js +42 -23
- package/dist/nile-inline-sidebar-group/nile-inline-sidebar-group.css.cjs.js +1 -1
- package/dist/nile-inline-sidebar-group/nile-inline-sidebar-group.css.cjs.js.map +1 -1
- package/dist/nile-inline-sidebar-group/nile-inline-sidebar-group.css.esm.js +8 -9
- package/dist/nile-inline-sidebar-item/index.cjs.js +1 -1
- package/dist/nile-inline-sidebar-item/index.esm.js +1 -1
- package/dist/nile-inline-sidebar-item/nile-inline-sidebar-item.cjs.js +1 -1
- package/dist/nile-inline-sidebar-item/nile-inline-sidebar-item.cjs.js.map +1 -1
- package/dist/nile-inline-sidebar-item/nile-inline-sidebar-item.css.cjs.js +1 -1
- package/dist/nile-inline-sidebar-item/nile-inline-sidebar-item.css.cjs.js.map +1 -1
- package/dist/nile-inline-sidebar-item/nile-inline-sidebar-item.css.esm.js +16 -18
- package/dist/nile-inline-sidebar-item/nile-inline-sidebar-item.esm.js +22 -4
- package/dist/nile-inline-sidebar-item-body/index.cjs.js +2 -0
- package/dist/nile-inline-sidebar-item-body/index.cjs.js.map +1 -0
- package/dist/nile-inline-sidebar-item-body/index.esm.js +1 -0
- package/dist/nile-inline-sidebar-item-body/nile-inline-sidebar-item-body.cjs.js +2 -0
- package/dist/nile-inline-sidebar-item-body/nile-inline-sidebar-item-body.cjs.js.map +1 -0
- package/dist/nile-inline-sidebar-item-body/nile-inline-sidebar-item-body.css.cjs.js +2 -0
- package/dist/nile-inline-sidebar-item-body/nile-inline-sidebar-item-body.css.cjs.js.map +1 -0
- package/dist/nile-inline-sidebar-item-body/nile-inline-sidebar-item-body.css.esm.js +53 -0
- package/dist/nile-inline-sidebar-item-body/nile-inline-sidebar-item-body.esm.js +13 -0
- package/dist/nile-inline-sidebar-item-header/index.cjs.js +2 -0
- package/dist/nile-inline-sidebar-item-header/index.cjs.js.map +1 -0
- package/dist/nile-inline-sidebar-item-header/index.esm.js +1 -0
- package/dist/nile-inline-sidebar-item-header/nile-inline-sidebar-item-header.cjs.js +2 -0
- package/dist/nile-inline-sidebar-item-header/nile-inline-sidebar-item-header.cjs.js.map +1 -0
- package/dist/nile-inline-sidebar-item-header/nile-inline-sidebar-item-header.css.cjs.js +2 -0
- package/dist/nile-inline-sidebar-item-header/nile-inline-sidebar-item-header.css.cjs.js.map +1 -0
- package/dist/nile-inline-sidebar-item-header/nile-inline-sidebar-item-header.css.esm.js +27 -0
- package/dist/nile-inline-sidebar-item-header/nile-inline-sidebar-item-header.esm.js +16 -0
- package/dist/nile-inline-sidebar-panel/index.cjs.js +2 -0
- package/dist/nile-inline-sidebar-panel/index.cjs.js.map +1 -0
- package/dist/nile-inline-sidebar-panel/index.esm.js +1 -0
- package/dist/nile-inline-sidebar-panel/nile-inline-sidebar-panel.cjs.js +2 -0
- package/dist/nile-inline-sidebar-panel/nile-inline-sidebar-panel.cjs.js.map +1 -0
- package/dist/nile-inline-sidebar-panel/nile-inline-sidebar-panel.css.cjs.js +2 -0
- package/dist/nile-inline-sidebar-panel/nile-inline-sidebar-panel.css.cjs.js.map +1 -0
- package/dist/nile-inline-sidebar-panel/nile-inline-sidebar-panel.css.esm.js +19 -0
- package/dist/nile-inline-sidebar-panel/nile-inline-sidebar-panel.esm.js +5 -0
- package/dist/nile-inline-sidebar-panel-group/index.cjs.js +2 -0
- package/dist/nile-inline-sidebar-panel-group/index.cjs.js.map +1 -0
- package/dist/nile-inline-sidebar-panel-group/index.esm.js +1 -0
- package/dist/nile-inline-sidebar-panel-group/nile-inline-sidebar-panel-group.cjs.js +2 -0
- package/dist/nile-inline-sidebar-panel-group/nile-inline-sidebar-panel-group.cjs.js.map +1 -0
- package/dist/nile-inline-sidebar-panel-group/nile-inline-sidebar-panel-group.css.cjs.js +2 -0
- package/dist/nile-inline-sidebar-panel-group/nile-inline-sidebar-panel-group.css.cjs.js.map +1 -0
- package/dist/nile-inline-sidebar-panel-group/nile-inline-sidebar-panel-group.css.esm.js +30 -0
- package/dist/nile-inline-sidebar-panel-group/nile-inline-sidebar-panel-group.esm.js +12 -0
- package/dist/nile-nav-tab/index.cjs.js +2 -0
- package/dist/nile-nav-tab/index.cjs.js.map +1 -0
- package/dist/nile-nav-tab/index.esm.js +1 -0
- package/dist/nile-nav-tab/nile-nav-tab.cjs.js +2 -0
- package/dist/nile-nav-tab/nile-nav-tab.cjs.js.map +1 -0
- package/dist/nile-nav-tab/nile-nav-tab.css.cjs.js +2 -0
- package/dist/nile-nav-tab/nile-nav-tab.css.cjs.js.map +1 -0
- package/dist/nile-nav-tab/nile-nav-tab.css.esm.js +190 -0
- package/dist/nile-nav-tab/nile-nav-tab.esm.js +36 -0
- package/dist/nile-nav-tab-group/index.cjs.js +2 -0
- package/dist/nile-nav-tab-group/index.cjs.js.map +1 -0
- package/dist/nile-nav-tab-group/index.esm.js +1 -0
- package/dist/nile-nav-tab-group/nile-nav-tab-group.cjs.js +4 -0
- package/dist/nile-nav-tab-group/nile-nav-tab-group.cjs.js.map +1 -0
- package/dist/nile-nav-tab-group/nile-nav-tab-group.css.cjs.js +2 -0
- package/dist/nile-nav-tab-group/nile-nav-tab-group.css.cjs.js.map +1 -0
- package/dist/nile-nav-tab-group/nile-nav-tab-group.css.esm.js +668 -0
- package/dist/nile-nav-tab-group/nile-nav-tab-group.esm.js +61 -0
- package/dist/nile-nav-tab-panel/index.cjs.js +2 -0
- package/dist/nile-nav-tab-panel/index.cjs.js.map +1 -0
- package/dist/nile-nav-tab-panel/index.esm.js +1 -0
- package/dist/nile-nav-tab-panel/nile-nav-tab-panel.cjs.js +2 -0
- package/dist/nile-nav-tab-panel/nile-nav-tab-panel.cjs.js.map +1 -0
- package/dist/nile-nav-tab-panel/nile-nav-tab-panel.css.cjs.js +2 -0
- package/dist/nile-nav-tab-panel/nile-nav-tab-panel.css.cjs.js.map +1 -0
- package/dist/nile-nav-tab-panel/nile-nav-tab-panel.css.esm.js +22 -0
- package/dist/nile-nav-tab-panel/nile-nav-tab-panel.esm.js +8 -0
- package/dist/nile-stepper-item/nile-stepper-item.cjs.js +1 -1
- package/dist/nile-stepper-item/nile-stepper-item.cjs.js.map +1 -1
- package/dist/nile-stepper-item/nile-stepper-item.esm.js +13 -13
- package/dist/nile-vertical-stepper-item/nile-vertical-stepper-item.cjs.js +1 -1
- package/dist/nile-vertical-stepper-item/nile-vertical-stepper-item.cjs.js.map +1 -1
- package/dist/nile-vertical-stepper-item/nile-vertical-stepper-item.esm.js +1 -1
- package/dist/src/index.d.ts +7 -0
- package/dist/src/index.js +7 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/internal/enum.d.ts +6 -0
- package/dist/src/internal/enum.js +7 -0
- package/dist/src/internal/enum.js.map +1 -1
- package/dist/src/nile-auto-complete/nile-auto-complete.js +1 -1
- package/dist/src/nile-auto-complete/nile-auto-complete.js.map +1 -1
- package/dist/src/nile-calendar/nile-calendar.css.js +0 -3
- package/dist/src/nile-calendar/nile-calendar.css.js.map +1 -1
- package/dist/src/nile-calendar/nile-calendar.js +2 -2
- package/dist/src/nile-calendar/nile-calendar.js.map +1 -1
- package/dist/src/nile-dropdown/nile-dropdown.d.ts +2 -0
- package/dist/src/nile-dropdown/nile-dropdown.js +21 -5
- package/dist/src/nile-dropdown/nile-dropdown.js.map +1 -1
- package/dist/src/nile-inline-sidebar/nile-inline-sidebar.css.d.ts +1 -0
- package/dist/src/nile-inline-sidebar/nile-inline-sidebar.css.js +75 -17
- package/dist/src/nile-inline-sidebar/nile-inline-sidebar.css.js.map +1 -1
- package/dist/src/nile-inline-sidebar/nile-inline-sidebar.d.ts +17 -1
- package/dist/src/nile-inline-sidebar/nile-inline-sidebar.js +147 -18
- package/dist/src/nile-inline-sidebar/nile-inline-sidebar.js.map +1 -1
- package/dist/src/nile-inline-sidebar-group/nile-inline-sidebar-group.css.d.ts +1 -0
- package/dist/src/nile-inline-sidebar-group/nile-inline-sidebar-group.css.js +7 -7
- package/dist/src/nile-inline-sidebar-group/nile-inline-sidebar-group.css.js.map +1 -1
- package/dist/src/nile-inline-sidebar-item/nile-inline-sidebar-item.css.d.ts +1 -1
- package/dist/src/nile-inline-sidebar-item/nile-inline-sidebar-item.css.js +15 -17
- package/dist/src/nile-inline-sidebar-item/nile-inline-sidebar-item.css.js.map +1 -1
- package/dist/src/nile-inline-sidebar-item/nile-inline-sidebar-item.d.ts +7 -1
- package/dist/src/nile-inline-sidebar-item/nile-inline-sidebar-item.js +63 -4
- package/dist/src/nile-inline-sidebar-item/nile-inline-sidebar-item.js.map +1 -1
- package/dist/src/nile-inline-sidebar-item-body/index.d.ts +1 -0
- package/dist/src/nile-inline-sidebar-item-body/index.js +2 -0
- package/dist/src/nile-inline-sidebar-item-body/index.js.map +1 -0
- package/dist/src/nile-inline-sidebar-item-body/nile-inline-sidebar-item-body.css.d.ts +9 -0
- package/dist/src/nile-inline-sidebar-item-body/nile-inline-sidebar-item-body.css.js +62 -0
- package/dist/src/nile-inline-sidebar-item-body/nile-inline-sidebar-item-body.css.js.map +1 -0
- package/dist/src/nile-inline-sidebar-item-body/nile-inline-sidebar-item-body.d.ts +45 -0
- package/dist/src/nile-inline-sidebar-item-body/nile-inline-sidebar-item-body.js +110 -0
- package/dist/src/nile-inline-sidebar-item-body/nile-inline-sidebar-item-body.js.map +1 -0
- package/dist/src/nile-inline-sidebar-item-header/index.d.ts +1 -0
- package/dist/src/nile-inline-sidebar-item-header/index.js +2 -0
- package/dist/src/nile-inline-sidebar-item-header/index.js.map +1 -0
- package/dist/src/nile-inline-sidebar-item-header/nile-inline-sidebar-item-header.css.d.ts +9 -0
- package/dist/src/nile-inline-sidebar-item-header/nile-inline-sidebar-item-header.css.js +36 -0
- package/dist/src/nile-inline-sidebar-item-header/nile-inline-sidebar-item-header.css.js.map +1 -0
- package/dist/src/nile-inline-sidebar-item-header/nile-inline-sidebar-item-header.d.ts +34 -0
- package/dist/src/nile-inline-sidebar-item-header/nile-inline-sidebar-item-header.js +68 -0
- package/dist/src/nile-inline-sidebar-item-header/nile-inline-sidebar-item-header.js.map +1 -0
- package/dist/src/nile-inline-sidebar-panel/index.d.ts +1 -0
- package/dist/src/nile-inline-sidebar-panel/index.js +2 -0
- package/dist/src/nile-inline-sidebar-panel/index.js.map +1 -0
- package/dist/src/nile-inline-sidebar-panel/nile-inline-sidebar-panel.css.d.ts +9 -0
- package/dist/src/nile-inline-sidebar-panel/nile-inline-sidebar-panel.css.js +28 -0
- package/dist/src/nile-inline-sidebar-panel/nile-inline-sidebar-panel.css.js.map +1 -0
- package/dist/src/nile-inline-sidebar-panel/nile-inline-sidebar-panel.d.ts +35 -0
- package/dist/src/nile-inline-sidebar-panel/nile-inline-sidebar-panel.js +55 -0
- package/dist/src/nile-inline-sidebar-panel/nile-inline-sidebar-panel.js.map +1 -0
- package/dist/src/nile-inline-sidebar-panel-group/index.d.ts +1 -0
- package/dist/src/nile-inline-sidebar-panel-group/index.js +2 -0
- package/dist/src/nile-inline-sidebar-panel-group/index.js.map +1 -0
- package/dist/src/nile-inline-sidebar-panel-group/nile-inline-sidebar-panel-group.css.d.ts +9 -0
- package/dist/src/nile-inline-sidebar-panel-group/nile-inline-sidebar-panel-group.css.js +39 -0
- package/dist/src/nile-inline-sidebar-panel-group/nile-inline-sidebar-panel-group.css.js.map +1 -0
- package/dist/src/nile-inline-sidebar-panel-group/nile-inline-sidebar-panel-group.d.ts +43 -0
- package/dist/src/nile-inline-sidebar-panel-group/nile-inline-sidebar-panel-group.js +93 -0
- package/dist/src/nile-inline-sidebar-panel-group/nile-inline-sidebar-panel-group.js.map +1 -0
- package/dist/src/nile-nav-tab/index.d.ts +1 -0
- package/dist/src/nile-nav-tab/index.js +2 -0
- package/dist/src/nile-nav-tab/index.js.map +1 -0
- package/dist/src/nile-nav-tab/nile-nav-tab.css.d.ts +9 -0
- package/dist/src/nile-nav-tab/nile-nav-tab.css.js +199 -0
- package/dist/src/nile-nav-tab/nile-nav-tab.css.js.map +1 -0
- package/dist/src/nile-nav-tab/nile-nav-tab.d.ts +50 -0
- package/dist/src/nile-nav-tab/nile-nav-tab.js +190 -0
- package/dist/src/nile-nav-tab/nile-nav-tab.js.map +1 -0
- package/dist/src/nile-nav-tab/nile-nav-tab.test.d.ts +1 -0
- package/dist/src/nile-nav-tab/nile-nav-tab.test.js +656 -0
- package/dist/src/nile-nav-tab/nile-nav-tab.test.js.map +1 -0
- package/dist/src/nile-nav-tab-group/index.d.ts +1 -0
- package/dist/src/nile-nav-tab-group/index.js +2 -0
- package/dist/src/nile-nav-tab-group/index.js.map +1 -0
- package/dist/src/nile-nav-tab-group/nile-nav-tab-group.css.d.ts +12 -0
- package/dist/src/nile-nav-tab-group/nile-nav-tab-group.css.js +680 -0
- package/dist/src/nile-nav-tab-group/nile-nav-tab-group.css.js.map +1 -0
- package/dist/src/nile-nav-tab-group/nile-nav-tab-group.d.ts +119 -0
- package/dist/src/nile-nav-tab-group/nile-nav-tab-group.js +765 -0
- package/dist/src/nile-nav-tab-group/nile-nav-tab-group.js.map +1 -0
- package/dist/src/nile-nav-tab-group/nile-nav-tab-group.test.d.ts +3 -0
- package/dist/src/nile-nav-tab-group/nile-nav-tab-group.test.js +838 -0
- package/dist/src/nile-nav-tab-group/nile-nav-tab-group.test.js.map +1 -0
- package/dist/src/nile-nav-tab-panel/index.d.ts +1 -0
- package/dist/src/nile-nav-tab-panel/index.js +2 -0
- package/dist/src/nile-nav-tab-panel/index.js.map +1 -0
- package/dist/src/nile-nav-tab-panel/nile-nav-tab-panel.css.d.ts +15 -0
- package/dist/src/nile-nav-tab-panel/nile-nav-tab-panel.css.js +37 -0
- package/dist/src/nile-nav-tab-panel/nile-nav-tab-panel.css.js.map +1 -0
- package/dist/src/nile-nav-tab-panel/nile-nav-tab-panel.d.ts +37 -0
- package/dist/src/nile-nav-tab-panel/nile-nav-tab-panel.js +75 -0
- package/dist/src/nile-nav-tab-panel/nile-nav-tab-panel.js.map +1 -0
- package/dist/src/nile-nav-tab-panel/nile-nav-tab-panel.test.d.ts +1 -0
- package/dist/src/nile-nav-tab-panel/nile-nav-tab-panel.test.js +534 -0
- package/dist/src/nile-nav-tab-panel/nile-nav-tab-panel.test.js.map +1 -0
- package/dist/src/nile-stepper-item/nile-stepper-item.js +1 -1
- package/dist/src/nile-stepper-item/nile-stepper-item.js.map +1 -1
- package/dist/src/nile-vertical-stepper-item/nile-vertical-stepper-item.js +1 -1
- package/dist/src/nile-vertical-stepper-item/nile-vertical-stepper-item.js.map +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -2
- package/src/index.ts +7 -0
- package/src/internal/enum.ts +8 -1
- package/src/nile-auto-complete/nile-auto-complete.ts +1 -1
- package/src/nile-calendar/nile-calendar.css.ts +0 -3
- package/src/nile-calendar/nile-calendar.ts +2 -2
- package/src/nile-dropdown/nile-dropdown.ts +23 -5
- package/src/nile-inline-sidebar/nile-inline-sidebar.css.ts +75 -17
- package/src/nile-inline-sidebar/nile-inline-sidebar.ts +148 -18
- package/src/nile-inline-sidebar-group/nile-inline-sidebar-group.css.ts +7 -7
- package/src/nile-inline-sidebar-item/nile-inline-sidebar-item.css.ts +15 -17
- package/src/nile-inline-sidebar-item/nile-inline-sidebar-item.ts +74 -9
- package/src/nile-inline-sidebar-item-body/index.ts +1 -0
- package/src/nile-inline-sidebar-item-body/nile-inline-sidebar-item-body.css.ts +64 -0
- package/src/nile-inline-sidebar-item-body/nile-inline-sidebar-item-body.ts +110 -0
- package/src/nile-inline-sidebar-item-header/index.ts +1 -0
- package/src/nile-inline-sidebar-item-header/nile-inline-sidebar-item-header.css.ts +38 -0
- package/src/nile-inline-sidebar-item-header/nile-inline-sidebar-item-header.ts +69 -0
- package/src/nile-inline-sidebar-panel/index.ts +1 -0
- package/src/nile-inline-sidebar-panel/nile-inline-sidebar-panel.css.ts +30 -0
- package/src/nile-inline-sidebar-panel/nile-inline-sidebar-panel.ts +53 -0
- package/src/nile-inline-sidebar-panel-group/index.ts +1 -0
- package/src/nile-inline-sidebar-panel-group/nile-inline-sidebar-panel-group.css.ts +41 -0
- package/src/nile-inline-sidebar-panel-group/nile-inline-sidebar-panel-group.ts +101 -0
- package/src/nile-nav-tab/index.ts +1 -0
- package/src/nile-nav-tab/nile-nav-tab.css.ts +201 -0
- package/src/nile-nav-tab/nile-nav-tab.test.ts +768 -0
- package/src/nile-nav-tab/nile-nav-tab.ts +198 -0
- package/src/nile-nav-tab-group/index.ts +1 -0
- package/src/nile-nav-tab-group/nile-nav-tab-group.css.ts +682 -0
- package/src/nile-nav-tab-group/nile-nav-tab-group.test.ts +1009 -0
- package/src/nile-nav-tab-group/nile-nav-tab-group.ts +845 -0
- package/src/nile-nav-tab-panel/index.ts +1 -0
- package/src/nile-nav-tab-panel/nile-nav-tab-panel.css.ts +39 -0
- package/src/nile-nav-tab-panel/nile-nav-tab-panel.test.ts +797 -0
- package/src/nile-nav-tab-panel/nile-nav-tab-panel.ts +78 -0
- package/src/nile-stepper-item/nile-stepper-item.ts +1 -1
- package/src/nile-vertical-stepper-item/nile-vertical-stepper-item.ts +1 -1
- package/vscode-html-custom-data.json +273 -3
|
@@ -5,10 +5,11 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import { html, CSSResultArray, TemplateResult } from 'lit';
|
|
8
|
+
import { html, CSSResultArray, TemplateResult, PropertyValues } from 'lit';
|
|
9
9
|
import { customElement, property } from 'lit/decorators.js';
|
|
10
10
|
import { styles } from './nile-inline-sidebar-item.css';
|
|
11
11
|
import NileElement from '../internal/nile-element';
|
|
12
|
+
import { classMap } from 'lit/directives/class-map.js';
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
15
|
* Nile inline sidebar item.
|
|
@@ -30,11 +31,50 @@ export class NileInlineSidebarItem extends NileElement {
|
|
|
30
31
|
@property({ type: Boolean, reflect: true }) disabled = false;
|
|
31
32
|
@property({ type: String }) href?: string;
|
|
32
33
|
@property({ type: Boolean, reflect: true }) tooltip = false;
|
|
34
|
+
@property({ type: String, reflect: true, attribute: true }) variant?: 'minimal' | 'rich' = 'minimal';
|
|
35
|
+
|
|
36
|
+
/** Links this item to a `nile-inline-sidebar-panel` by matching its `name` property. */
|
|
37
|
+
@property({ type: String, reflect: true }) panel?: string;
|
|
33
38
|
|
|
34
39
|
public static get styles(): CSSResultArray {
|
|
35
40
|
return [styles];
|
|
36
41
|
}
|
|
37
42
|
|
|
43
|
+
|
|
44
|
+
firstUpdated(changedProperties: PropertyValues) {
|
|
45
|
+
super.firstUpdated(changedProperties);
|
|
46
|
+
this.syncBodyAndHeaderStates();
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
updated(changedProperties: PropertyValues) {
|
|
50
|
+
super.updated(changedProperties);
|
|
51
|
+
if (changedProperties.has('disabled') || changedProperties.has('active')) {
|
|
52
|
+
this.syncBodyAndHeaderStates();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
private syncBodyAndHeaderStates() {
|
|
57
|
+
const elements = [
|
|
58
|
+
this.querySelector('[slot="body"]'),
|
|
59
|
+
this.querySelector('[slot="header"]')
|
|
60
|
+
] as (HTMLElement | null)[];
|
|
61
|
+
|
|
62
|
+
const props = {
|
|
63
|
+
disabled: this.disabled,
|
|
64
|
+
active: this.active
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
elements.forEach(el => {
|
|
68
|
+
if (!el) return;
|
|
69
|
+
|
|
70
|
+
Object.entries(props).forEach(([key, value]) => {
|
|
71
|
+
if (key in el) {
|
|
72
|
+
(el as any)[key] = value;
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
|
|
38
78
|
connectedCallback() {
|
|
39
79
|
super.connectedCallback();
|
|
40
80
|
if (!this.hasAttribute('tabindex')) {
|
|
@@ -64,15 +104,15 @@ export class NileInlineSidebarItem extends NileElement {
|
|
|
64
104
|
e.stopPropagation();
|
|
65
105
|
return;
|
|
66
106
|
}
|
|
67
|
-
|
|
107
|
+
|
|
68
108
|
const parent = this.closest('nile-inline-sidebar');
|
|
69
109
|
if (parent) {
|
|
70
110
|
const allItems = parent.querySelectorAll('nile-inline-sidebar-item');
|
|
71
111
|
allItems.forEach((item) => (item as NileInlineSidebarItem).active = item === this);
|
|
72
112
|
}
|
|
73
|
-
|
|
113
|
+
|
|
74
114
|
const text = this.textContent?.trim() || '';
|
|
75
|
-
|
|
115
|
+
|
|
76
116
|
this.dispatchEvent(
|
|
77
117
|
new CustomEvent('nile-click', {
|
|
78
118
|
detail: { item: this, href: this.href, text },
|
|
@@ -80,7 +120,7 @@ export class NileInlineSidebarItem extends NileElement {
|
|
|
80
120
|
composed: true,
|
|
81
121
|
}),
|
|
82
122
|
);
|
|
83
|
-
|
|
123
|
+
|
|
84
124
|
if (this.href) {
|
|
85
125
|
window.location.href = this.href;
|
|
86
126
|
}
|
|
@@ -93,17 +133,42 @@ export class NileInlineSidebarItem extends NileElement {
|
|
|
93
133
|
public render(): TemplateResult {
|
|
94
134
|
return html`
|
|
95
135
|
<div
|
|
96
|
-
class
|
|
136
|
+
class=${classMap({ 'item': true, 'item--rich': this.variant === 'rich' })}
|
|
97
137
|
@click=${this.handleClick}
|
|
98
138
|
role="menuitem"
|
|
139
|
+
style=${this.variant === 'rich' ? 'border-radius: 0px;' : ''}
|
|
99
140
|
aria-disabled=${this.disabled}
|
|
100
141
|
>
|
|
101
|
-
${this.
|
|
102
|
-
?
|
|
103
|
-
|
|
142
|
+
${this.variant === 'minimal'
|
|
143
|
+
? this.href
|
|
144
|
+
? html`<a href=${this.href} @click=${(e: Event) => e.preventDefault()}><slot></slot></a>`
|
|
145
|
+
: html`<slot></slot>`
|
|
146
|
+
: this.href
|
|
147
|
+
? html`<a
|
|
148
|
+
href=${this.href}
|
|
149
|
+
@click=${(e: Event) => e.preventDefault()}
|
|
150
|
+
>
|
|
151
|
+
<div class="header-content" part="header-content">
|
|
152
|
+
<slot name="header"></slot>
|
|
153
|
+
</div>
|
|
154
|
+
<div class="body-content" part="body-content">
|
|
155
|
+
<slot name="body"></slot>
|
|
156
|
+
</div>
|
|
157
|
+
</a>`
|
|
158
|
+
: html`
|
|
159
|
+
<div class="header-content" part="header-content">
|
|
160
|
+
<slot name="header"></slot>
|
|
161
|
+
</div>
|
|
162
|
+
<div class="body-content" part="body-content">
|
|
163
|
+
<slot name="body"></slot>
|
|
164
|
+
</div>
|
|
165
|
+
`}
|
|
104
166
|
</div>
|
|
105
167
|
`;
|
|
106
168
|
}
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
|
|
107
172
|
}
|
|
108
173
|
|
|
109
174
|
export default NileInlineSidebarItem;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { NileInlineSidebarItemBody } from './nile-inline-sidebar-item-body';
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Aquera Inc 2026
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import {css} from 'lit';
|
|
9
|
+
|
|
10
|
+
export const styles = css`
|
|
11
|
+
:host {
|
|
12
|
+
display: block;
|
|
13
|
+
min-width: 0;
|
|
14
|
+
font-family: var(--nile-font-family-sans-serif, var(--ng-font-family-body));
|
|
15
|
+
}
|
|
16
|
+
.item-body {
|
|
17
|
+
display: flex;
|
|
18
|
+
align-items: flex-start;
|
|
19
|
+
min-width: 0;
|
|
20
|
+
padding-top: var(--nile-spacing-xxsmall, var(--ng-spacing-xxs));
|
|
21
|
+
}
|
|
22
|
+
.body-content {
|
|
23
|
+
box-sizing: border-box;
|
|
24
|
+
min-width: 0;
|
|
25
|
+
flex: 1 1 0%;
|
|
26
|
+
max-width: 100%;
|
|
27
|
+
color: var(--nile-colors-dark-500, var(--ng-componentcolors-alpha-black-50));
|
|
28
|
+
font-size: var(--nile-type-scale-3, var(--ng-font-size-text-sm));
|
|
29
|
+
font-weight: var(--nile-font-weight-regular, var(--ng-font-weight-regular));
|
|
30
|
+
line-height: var(--nile-line-height-xsmall, var(--ng-line-height-text-xs));
|
|
31
|
+
}
|
|
32
|
+
.body-content nile-lite-tooltip {
|
|
33
|
+
display: block;
|
|
34
|
+
min-width: 0;
|
|
35
|
+
max-width: 100%;
|
|
36
|
+
}
|
|
37
|
+
.body-text {
|
|
38
|
+
display: -webkit-box;
|
|
39
|
+
-webkit-box-orient: vertical;
|
|
40
|
+
overflow: hidden;
|
|
41
|
+
text-overflow: ellipsis;
|
|
42
|
+
word-break: break-word;
|
|
43
|
+
overflow-wrap: anywhere;
|
|
44
|
+
-webkit-line-clamp: var(--line-clamp);
|
|
45
|
+
line-clamp: var(--line-clamp);
|
|
46
|
+
}
|
|
47
|
+
/* Slotted block/paragraph nodes need the same clamp (slot composition) */
|
|
48
|
+
.body-text ::slotted(*) {
|
|
49
|
+
display: -webkit-box;
|
|
50
|
+
-webkit-box-orient: vertical;
|
|
51
|
+
overflow: hidden;
|
|
52
|
+
text-overflow: ellipsis;
|
|
53
|
+
word-break: break-word;
|
|
54
|
+
overflow-wrap: anywhere;
|
|
55
|
+
-webkit-line-clamp: var(--line-clamp);
|
|
56
|
+
line-clamp: var(--line-clamp);
|
|
57
|
+
margin-block: 0;
|
|
58
|
+
}
|
|
59
|
+
:host([disabled]) .body-content {
|
|
60
|
+
color: var(--nile-colors-neutral-300, var(--ng-colors-text-disabled));
|
|
61
|
+
}
|
|
62
|
+
`;
|
|
63
|
+
|
|
64
|
+
export default [styles];
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Aquera Inc 2025
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { html, CSSResultArray, TemplateResult} from 'lit';
|
|
9
|
+
import { customElement, property, state, query} from 'lit/decorators.js';
|
|
10
|
+
import {styles} from './nile-inline-sidebar-item-body.css';
|
|
11
|
+
import NileElement from '../internal/nile-element';
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Nile inline-sidebar-item-body component.
|
|
16
|
+
*
|
|
17
|
+
* @tag nile-inline-sidebar-item-body
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
@customElement('nile-inline-sidebar-item-body')
|
|
21
|
+
export class NileInlineSidebarItemBody extends NileElement {
|
|
22
|
+
|
|
23
|
+
/** Maximum number of visible lines before text is truncated with an ellipsis. */
|
|
24
|
+
@property({ type: Number, reflect: true }) lines: number = 2;
|
|
25
|
+
|
|
26
|
+
@property({ type: String, reflect: true }) content: string = '';
|
|
27
|
+
|
|
28
|
+
@property({ type: Boolean, reflect: true }) showTooltip: boolean = false;
|
|
29
|
+
|
|
30
|
+
@state() private isTruncated = false;
|
|
31
|
+
|
|
32
|
+
@query('.body-content') private bodyContentEl!: HTMLElement;
|
|
33
|
+
|
|
34
|
+
@property({ type: Boolean, reflect: true, attribute: true }) disabled: boolean = false;
|
|
35
|
+
@property({ type: Boolean, reflect: true, attribute: true }) active: boolean = false;
|
|
36
|
+
|
|
37
|
+
private resizeObserver?: ResizeObserver;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* The styles for nile-inline-sidebar-item-body
|
|
41
|
+
* @remarks If you are extending this class you can extend the base styles with super. Eg `return [super(), myCustomStyles]`
|
|
42
|
+
*/
|
|
43
|
+
public static get styles(): CSSResultArray {
|
|
44
|
+
return [styles];
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/* #endregion */
|
|
48
|
+
|
|
49
|
+
/* #region Methods */
|
|
50
|
+
|
|
51
|
+
firstUpdated() {
|
|
52
|
+
this.checkTruncation();
|
|
53
|
+
if (this.bodyContentEl) {
|
|
54
|
+
this.resizeObserver = new ResizeObserver(() => this.checkTruncation());
|
|
55
|
+
this.resizeObserver.observe(this.bodyContentEl);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
disconnectedCallback() {
|
|
60
|
+
super.disconnectedCallback();
|
|
61
|
+
this.resizeObserver?.disconnect();
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
private checkTruncation() {
|
|
65
|
+
if (this.bodyContentEl) {
|
|
66
|
+
const truncated = this.bodyContentEl.scrollHeight > this.bodyContentEl.clientHeight;
|
|
67
|
+
if (truncated !== this.isTruncated) {
|
|
68
|
+
this.isTruncated = truncated;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
private get contentTemplate(): TemplateResult {
|
|
74
|
+
const body = html`<div class="body-text" part="body-text">${this.content}</div>`;
|
|
75
|
+
|
|
76
|
+
return this.isTruncated && this.showTooltip
|
|
77
|
+
? html`<nile-lite-tooltip content=${this.content} hoist>${body}</nile-lite-tooltip>`
|
|
78
|
+
: body;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Render method
|
|
83
|
+
* @slot This is a slot test
|
|
84
|
+
*/
|
|
85
|
+
public render(): TemplateResult {
|
|
86
|
+
return html`
|
|
87
|
+
<div class="item-body" part="item-body">
|
|
88
|
+
<div class="prefix-content" part="prefix-content">
|
|
89
|
+
<slot name="prefix"></slot>
|
|
90
|
+
</div>
|
|
91
|
+
<div class="body-content" part="body-content" style="--line-clamp: ${this.lines? this.lines : 2}">
|
|
92
|
+
${this.content ? this.contentTemplate : html`<div class="body-text" part="body-text"><slot></slot></div>`}
|
|
93
|
+
</div>
|
|
94
|
+
<div class="suffix-content" part="suffix-content">
|
|
95
|
+
<slot name="suffix"></slot>
|
|
96
|
+
</div>
|
|
97
|
+
</div>
|
|
98
|
+
`;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/* #endregion */
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export default NileInlineSidebarItemBody;
|
|
105
|
+
|
|
106
|
+
declare global {
|
|
107
|
+
interface HTMLElementTagNameMap {
|
|
108
|
+
'nile-inline-sidebar-item-body': NileInlineSidebarItemBody;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { NileInlineSidebarItemHeader } from './nile-inline-sidebar-item-header';
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Aquera Inc 2026
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import {css} from 'lit';
|
|
9
|
+
|
|
10
|
+
export const styles = css`
|
|
11
|
+
:host {
|
|
12
|
+
font-family: var(--nile-font-family-sans-serif, var(--ng-font-family-body));
|
|
13
|
+
}
|
|
14
|
+
.item-header {
|
|
15
|
+
display: flex;
|
|
16
|
+
gap: var(--nile-spacing-xs, var(--ng-spacing-xs));
|
|
17
|
+
width: 100%;
|
|
18
|
+
height: 100%;
|
|
19
|
+
align-items: center;
|
|
20
|
+
}
|
|
21
|
+
.item-header .body-content .header-text {
|
|
22
|
+
display: block;
|
|
23
|
+
font-weight: var(--nile-font-weight-semibold, var(--ng-font-weight-semibold));
|
|
24
|
+
font-size: var(--nile-type-scale-4, var(--ng-font-size-text-sm));
|
|
25
|
+
line-height: var(--nile-line-height-medium, var(--ng-line-height-text-sm));
|
|
26
|
+
color: var(--nile-colors-dark-900, var(--ng-colors-text-primary-900));
|
|
27
|
+
}
|
|
28
|
+
:host([active]) .item-header .body-content .header-text {
|
|
29
|
+
font-weight: var(--nile-font-weight-medium, var(--ng-font-weight-medium));
|
|
30
|
+
color: var(--nile-colors-primary-700, var(--ng-colors-text-brand-secondary-700));
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
:host([disabled]) .item-header .body-content .header-text {
|
|
34
|
+
color: var(--nile-colors-neutral-500, var(--ng-colors-text-disabled));
|
|
35
|
+
}
|
|
36
|
+
`;
|
|
37
|
+
|
|
38
|
+
export default [styles];
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Aquera Inc 2025
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { html, CSSResultArray, TemplateResult } from 'lit';
|
|
9
|
+
import { customElement, property} from 'lit/decorators.js';
|
|
10
|
+
import {styles} from './nile-inline-sidebar-item-header.css';
|
|
11
|
+
import NileElement from '../internal/nile-element';
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Nile inline-sidebar-item-header component.
|
|
16
|
+
*
|
|
17
|
+
* @tag nile-inline-sidebar-item-header
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
@customElement('nile-inline-sidebar-item-header')
|
|
21
|
+
export class NileInlineSidebarItemHeader extends NileElement {
|
|
22
|
+
@property({ type: Boolean, reflect: true, attribute: true }) active = false;
|
|
23
|
+
@property({ type: Boolean, reflect: true, attribute: true }) disabled = false;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* The styles for nile-inline-sidebar-item-header
|
|
27
|
+
* @remarks If you are extending this class you can extend the base styles with super. Eg `return [super(), myCustomStyles]`
|
|
28
|
+
*/
|
|
29
|
+
public static get styles(): CSSResultArray {
|
|
30
|
+
return [styles];
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/* #endregion */
|
|
34
|
+
|
|
35
|
+
/* #region Methods */
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Render method
|
|
39
|
+
* @slot This is a slot test
|
|
40
|
+
*/
|
|
41
|
+
public render(): TemplateResult {
|
|
42
|
+
return html`
|
|
43
|
+
<div class="item-header" part="item-header">
|
|
44
|
+
<div class="prefix-content" part="prefix-content">
|
|
45
|
+
<slot name="prefix"></slot>
|
|
46
|
+
</div>
|
|
47
|
+
<div class="body-content" part="body-content">
|
|
48
|
+
<div class="header-text" part="header-text">
|
|
49
|
+
<slot name="text"></slot>
|
|
50
|
+
<slot></slot>
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
<div class="suffix-content" part="suffix-content">
|
|
54
|
+
<slot name="suffix"></slot>
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
`;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/* #endregion */
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export default NileInlineSidebarItemHeader;
|
|
64
|
+
|
|
65
|
+
declare global {
|
|
66
|
+
interface HTMLElementTagNameMap {
|
|
67
|
+
'nile-inline-sidebar-item-header': NileInlineSidebarItemHeader;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { NileInlineSidebarPanel } from './nile-inline-sidebar-panel';
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Aquera Inc 2025
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { css } from 'lit';
|
|
9
|
+
|
|
10
|
+
export const styles = css`
|
|
11
|
+
:host {
|
|
12
|
+
display: none;
|
|
13
|
+
height: 100%;
|
|
14
|
+
min-width: 0;
|
|
15
|
+
overflow: hidden;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
:host([active]) {
|
|
19
|
+
display: flex;
|
|
20
|
+
flex: 1;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.panel {
|
|
24
|
+
flex: 1;
|
|
25
|
+
height: 100%;
|
|
26
|
+
overflow: auto;
|
|
27
|
+
}
|
|
28
|
+
`;
|
|
29
|
+
|
|
30
|
+
export default [styles];
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Aquera Inc 2025
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { html, CSSResultArray, TemplateResult } from 'lit';
|
|
9
|
+
import { customElement, property } from 'lit/decorators.js';
|
|
10
|
+
import { styles } from './nile-inline-sidebar-panel.css';
|
|
11
|
+
import NileElement from '../internal/nile-element';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Content panel associated with a `nile-inline-sidebar-item`.
|
|
15
|
+
* Linked via the item's `panel` property matching this panel's `name`.
|
|
16
|
+
*
|
|
17
|
+
* @tag nile-inline-sidebar-panel
|
|
18
|
+
*
|
|
19
|
+
* @attr name - Identifier that links this panel to a sidebar item's `panel` property.
|
|
20
|
+
* @attr active - Whether this panel is currently visible.
|
|
21
|
+
*
|
|
22
|
+
* @slot - Default slot for panel content.
|
|
23
|
+
*
|
|
24
|
+
* @csspart base - The panel container.
|
|
25
|
+
*/
|
|
26
|
+
@customElement('nile-inline-sidebar-panel')
|
|
27
|
+
export class NileInlineSidebarPanel extends NileElement {
|
|
28
|
+
/** Identifier that links this panel to a sidebar item's `panel` property. */
|
|
29
|
+
@property({ type: String, reflect: true }) name = '';
|
|
30
|
+
|
|
31
|
+
/** Whether this panel is currently visible. */
|
|
32
|
+
@property({ type: Boolean, reflect: true }) active = false;
|
|
33
|
+
|
|
34
|
+
public static get styles(): CSSResultArray {
|
|
35
|
+
return [styles];
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
public render(): TemplateResult {
|
|
39
|
+
return html`
|
|
40
|
+
<div class="panel" part="base">
|
|
41
|
+
<slot></slot>
|
|
42
|
+
</div>
|
|
43
|
+
`;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export default NileInlineSidebarPanel;
|
|
48
|
+
|
|
49
|
+
declare global {
|
|
50
|
+
interface HTMLElementTagNameMap {
|
|
51
|
+
'nile-inline-sidebar-panel': NileInlineSidebarPanel;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { NileInlineSidebarPanelGroup } from './nile-inline-sidebar-panel-group';
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Aquera Inc 2025
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { css } from 'lit';
|
|
9
|
+
|
|
10
|
+
export const styles = css`
|
|
11
|
+
:host {
|
|
12
|
+
display: flex;
|
|
13
|
+
height: 100%;
|
|
14
|
+
width: 100%;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.panel-group {
|
|
18
|
+
display: flex;
|
|
19
|
+
height: 100%;
|
|
20
|
+
width: 100%;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
:host([placement='right']) .panel-group {
|
|
24
|
+
flex-direction: row-reverse;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.sidebar-container {
|
|
28
|
+
display: flex;
|
|
29
|
+
flex-shrink: 0;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.panel-container {
|
|
33
|
+
flex: 1;
|
|
34
|
+
min-width: 0;
|
|
35
|
+
height: 100%;
|
|
36
|
+
display: flex;
|
|
37
|
+
overflow: hidden;
|
|
38
|
+
}
|
|
39
|
+
`;
|
|
40
|
+
|
|
41
|
+
export default [styles];
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Aquera Inc 2025
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { html, CSSResultArray, TemplateResult } from 'lit';
|
|
9
|
+
import { customElement, property, query } from 'lit/decorators.js';
|
|
10
|
+
import { styles } from './nile-inline-sidebar-panel-group.css';
|
|
11
|
+
import NileElement from '../internal/nile-element';
|
|
12
|
+
import type { NileInlineSidebarPanel } from '../nile-inline-sidebar-panel/nile-inline-sidebar-panel';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Layout container that positions a `nile-inline-sidebar` beside one or more
|
|
16
|
+
* `nile-inline-sidebar-panel` elements. Handles panel switching when sidebar
|
|
17
|
+
* items are clicked.
|
|
18
|
+
*
|
|
19
|
+
* @tag nile-inline-sidebar-panel-group
|
|
20
|
+
*
|
|
21
|
+
* @attr placement - Mirror of the sidebar's placement. Controls flex direction.
|
|
22
|
+
*
|
|
23
|
+
* @slot sidebar - Slot for the `nile-inline-sidebar` element.
|
|
24
|
+
* @slot - Default slot for `nile-inline-sidebar-panel` elements.
|
|
25
|
+
*
|
|
26
|
+
* @csspart base - The outer flex container.
|
|
27
|
+
* @csspart sidebar-container - Wrapper around the sidebar slot.
|
|
28
|
+
* @csspart panel-container - Wrapper around the panel slot.
|
|
29
|
+
*/
|
|
30
|
+
@customElement('nile-inline-sidebar-panel-group')
|
|
31
|
+
export class NileInlineSidebarPanelGroup extends NileElement {
|
|
32
|
+
/** Mirrors the sidebar's placement to control layout direction. */
|
|
33
|
+
@property({ type: String, reflect: true }) placement: 'left' | 'right' = 'left';
|
|
34
|
+
|
|
35
|
+
@query('slot:not([name])') private defaultSlot!: HTMLSlotElement;
|
|
36
|
+
|
|
37
|
+
public static get styles(): CSSResultArray {
|
|
38
|
+
return [styles];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
connectedCallback() {
|
|
42
|
+
super.connectedCallback();
|
|
43
|
+
this.addEventListener('nile-click', this.handleSidebarItemClick);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
disconnectedCallback() {
|
|
47
|
+
super.disconnectedCallback();
|
|
48
|
+
this.removeEventListener('nile-click', this.handleSidebarItemClick);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
private get panels(): NileInlineSidebarPanel[] {
|
|
52
|
+
if (!this.defaultSlot) return [];
|
|
53
|
+
return this.defaultSlot
|
|
54
|
+
.assignedElements({ flatten: true })
|
|
55
|
+
.filter(
|
|
56
|
+
(el): el is NileInlineSidebarPanel =>
|
|
57
|
+
el.tagName.toLowerCase() === 'nile-inline-sidebar-panel'
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
private handleSidebarItemClick = (event: Event) => {
|
|
62
|
+
const detail = (event as CustomEvent).detail;
|
|
63
|
+
const panelName: string | undefined = detail?.item?.panel;
|
|
64
|
+
if (!panelName) return;
|
|
65
|
+
|
|
66
|
+
this.activatePanel(panelName);
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
/** Activate a panel by name, deactivating all others. */
|
|
70
|
+
public activatePanel(name: string) {
|
|
71
|
+
const allPanels = this.panels;
|
|
72
|
+
allPanels.forEach(panel => {
|
|
73
|
+
panel.active = panel.name === name;
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
this.emit('nile-panel-change', { panel: name });
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
public render(): TemplateResult {
|
|
80
|
+
return html`
|
|
81
|
+
<div class="panel-group" part="base">
|
|
82
|
+
<div class="sidebar-container" part="sidebar-container">
|
|
83
|
+
<slot name="sidebar"></slot>
|
|
84
|
+
</div>
|
|
85
|
+
<div class="panel-container" part="panel-container">
|
|
86
|
+
<slot
|
|
87
|
+
@slotchange=${() => this.requestUpdate()}
|
|
88
|
+
></slot>
|
|
89
|
+
</div>
|
|
90
|
+
</div>
|
|
91
|
+
`;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export default NileInlineSidebarPanelGroup;
|
|
96
|
+
|
|
97
|
+
declare global {
|
|
98
|
+
interface HTMLElementTagNameMap {
|
|
99
|
+
'nile-inline-sidebar-panel-group': NileInlineSidebarPanelGroup;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { NileNavTab } from './nile-nav-tab';
|