@aquera/nile-elements 1.8.7 → 1.8.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.
Files changed (60) hide show
  1. package/README.md +6 -0
  2. package/dist/index.js +56 -21
  3. package/dist/nile-button-toggle/nile-button-toggle.css.cjs.js +1 -1
  4. package/dist/nile-button-toggle/nile-button-toggle.css.cjs.js.map +1 -1
  5. package/dist/nile-button-toggle/nile-button-toggle.css.esm.js +5 -5
  6. package/dist/nile-filter-chip/nile-filter-chip.css.cjs.js +1 -1
  7. package/dist/nile-filter-chip/nile-filter-chip.css.cjs.js.map +1 -1
  8. package/dist/nile-filter-chip/nile-filter-chip.css.esm.js +5 -5
  9. package/dist/nile-list-item/nile-list-item.css.cjs.js +1 -1
  10. package/dist/nile-list-item/nile-list-item.css.cjs.js.map +1 -1
  11. package/dist/nile-list-item/nile-list-item.css.esm.js +9 -3
  12. package/dist/nile-menu-item/nile-menu-item.css.cjs.js +1 -1
  13. package/dist/nile-menu-item/nile-menu-item.css.cjs.js.map +1 -1
  14. package/dist/nile-menu-item/nile-menu-item.css.esm.js +5 -5
  15. package/dist/nile-option/nile-option.css.cjs.js +1 -1
  16. package/dist/nile-option/nile-option.css.cjs.js.map +1 -1
  17. package/dist/nile-option/nile-option.css.esm.js +3 -3
  18. package/dist/nile-side-bar/nile-side-bar.cjs.js +1 -1
  19. package/dist/nile-side-bar/nile-side-bar.cjs.js.map +1 -1
  20. package/dist/nile-side-bar/nile-side-bar.css.cjs.js +1 -1
  21. package/dist/nile-side-bar/nile-side-bar.css.cjs.js.map +1 -1
  22. package/dist/nile-side-bar/nile-side-bar.css.esm.js +31 -2
  23. package/dist/nile-side-bar/nile-side-bar.esm.js +2 -2
  24. package/dist/nile-side-bar-expand/nile-side-bar-expand.cjs.js +1 -1
  25. package/dist/nile-side-bar-expand/nile-side-bar-expand.cjs.js.map +1 -1
  26. package/dist/nile-side-bar-expand/nile-side-bar-expand.esm.js +2 -2
  27. package/dist/src/nile-button-toggle/nile-button-toggle.css.js +5 -5
  28. package/dist/src/nile-button-toggle/nile-button-toggle.css.js.map +1 -1
  29. package/dist/src/nile-filter-chip/nile-filter-chip.css.js +3 -3
  30. package/dist/src/nile-filter-chip/nile-filter-chip.css.js.map +1 -1
  31. package/dist/src/nile-list-item/nile-list-item.css.js +7 -1
  32. package/dist/src/nile-list-item/nile-list-item.css.js.map +1 -1
  33. package/dist/src/nile-menu-item/nile-menu-item.css.js +5 -5
  34. package/dist/src/nile-menu-item/nile-menu-item.css.js.map +1 -1
  35. package/dist/src/nile-option/nile-option.css.js +3 -3
  36. package/dist/src/nile-option/nile-option.css.js.map +1 -1
  37. package/dist/src/nile-side-bar/nile-side-bar.css.js +29 -0
  38. package/dist/src/nile-side-bar/nile-side-bar.css.js.map +1 -1
  39. package/dist/src/nile-side-bar/nile-side-bar.d.ts +16 -0
  40. package/dist/src/nile-side-bar/nile-side-bar.js +30 -0
  41. package/dist/src/nile-side-bar/nile-side-bar.js.map +1 -1
  42. package/dist/src/nile-side-bar/nile-side-bar.test.d.ts +2 -0
  43. package/dist/src/nile-side-bar/nile-side-bar.test.js +96 -0
  44. package/dist/src/nile-side-bar/nile-side-bar.test.js.map +1 -0
  45. package/dist/src/nile-side-bar-expand/nile-side-bar-expand.js +4 -6
  46. package/dist/src/nile-side-bar-expand/nile-side-bar-expand.js.map +1 -1
  47. package/dist/src/version.js +1 -1
  48. package/dist/src/version.js.map +1 -1
  49. package/dist/tsconfig.tsbuildinfo +1 -1
  50. package/package.json +1 -1
  51. package/src/nile-button-toggle/nile-button-toggle.css.ts +5 -5
  52. package/src/nile-filter-chip/nile-filter-chip.css.ts +3 -3
  53. package/src/nile-list-item/nile-list-item.css.ts +7 -1
  54. package/src/nile-menu-item/nile-menu-item.css.ts +5 -5
  55. package/src/nile-option/nile-option.css.ts +3 -3
  56. package/src/nile-side-bar/nile-side-bar.css.ts +29 -0
  57. package/src/nile-side-bar/nile-side-bar.test.ts +109 -0
  58. package/src/nile-side-bar/nile-side-bar.ts +29 -0
  59. package/src/nile-side-bar-expand/nile-side-bar-expand.ts +7 -8
  60. package/vscode-html-custom-data.json +10 -1
@@ -1 +1 @@
1
- {"version":3,"file":"nile-side-bar.js","sourceRoot":"","sources":["../../../src/nile-side-bar/nile-side-bar.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;;AAEH,OAAO,EAAE,IAAI,EAAkC,MAAM,KAAK,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,WAAW,MAAM,0BAA0B,CAAC;AAEnD;;;;;;;;GAQG;AAEI,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,WAAW;IAArC;;QACsD,aAAQ,GAAqB,MAAM,CAAC;QAEnC,cAAS,GAAY,KAAK,CAAC;QAE3B,eAAU,GAAY,KAAK,CAAC;QAE5C,UAAK,GAAkB,IAAI,CAAC;QAG5B,mBAAc,GAAkB,IAAI,CAAC;IA2CnF,CAAC;IAzCQ,MAAM,KAAK,MAAM;QACtB,OAAO,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAES,OAAO,CAAC,YAAkC;QAClD,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAE5B,IAAI,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,gBAAgB,CACnB;;;;;;;;;SASC,CACF,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACnE,CAAC;QAGD,IAAI,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACrD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;YACvE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,2BAA2B,EAAE,GAAG,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAA;;;;;;KAMV,CAAC;IACJ,CAAC;CAEF,CAAA;AApD4D;IAA1D,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;6CAAoC;AAEnC;IAA3D,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;8CAA2B;AAE3B;IAA3D,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;+CAA4B;AAE5C;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;0CAA4B;AAG5B;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;mDAAqC;AAVtE,WAAW;IADvB,aAAa,CAAC,eAAe,CAAC;GAClB,WAAW,CAqDvB;;AAED,eAAe,WAAW,CAAC","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { html, CSSResultArray, TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styles } from './nile-side-bar.css';\nimport NileElement from '../internal/nile-element';\n\n/**\n * Nile side-bar component.\n *\n * @tag nile-side-bar\n *\n * @attr position - Position of the sidebar (\"left\" | \"right\"). Defaults to \"left\".\n * @attr width - Expanded width of the sidebar (px).\n * @attr collapsed-width - Collapsed width of the sidebar (px).\n */\n@customElement('nile-side-bar')\nexport class NileSideBar extends NileElement {\n @property({ type: String, reflect: true, attribute: true })position: 'left' | 'right' = 'left';\n\n @property({ type: Boolean, reflect: true, attribute: true })collapsed: boolean = false;\n\n @property({ type: Boolean, reflect: true, attribute: true })fullHeight: boolean = false;\n \n @property({ type: Number, attribute: true })width: number | null = null;\n\n \n @property({ type: Number, attribute: true })collapsedWidth: number | null = null;\n\n public static get styles(): CSSResultArray {\n return [styles];\n }\n\n protected updated(changedProps: Map<string, unknown>) {\n super.updated(changedProps);\n\n if (changedProps.has('collapsed')) {\n this.querySelectorAll<NileElement>(\n `\n nile-side-bar-logo,\n nile-side-bar-footer-item,\n nile-side-bar-group-item,\n nile-side-bar-group,\n nile-side-bar-header,\n nile-side-bar-group-item-text,\n nile-side-bar-group-item-icon,\n nile-side-bar-expand\n `\n ).forEach(el => el.toggleAttribute('collapsed', this.collapsed));\n }\n \n\n if (changedProps.has('width') && this.width !== null) {\n this.style.setProperty('--sidebar-width', `${this.width}px`);\n }\n if (changedProps.has('collapsedWidth') && this.collapsedWidth !== null) {\n this.style.setProperty('--sidebar-collapsed-width', `${this.collapsedWidth}px`);\n }\n }\n\n public render(): TemplateResult {\n return html`\n <slot name=\"header\" part=\"header\"></slot>\n <div class=\"scroll-container\" part=\"scroll-container\">\n <slot></slot>\n </div>\n <slot name=\"footer\" part=\"footer\"></slot>\n `;\n }\n \n}\n\nexport default NileSideBar;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-side-bar': NileSideBar;\n }\n}\n"]}
1
+ {"version":3,"file":"nile-side-bar.js","sourceRoot":"","sources":["../../../src/nile-side-bar/nile-side-bar.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;;AAEH,OAAO,EAAE,IAAI,EAAkC,MAAM,KAAK,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,WAAW,MAAM,0BAA0B,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;GAmBG;AAEI,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,WAAW;IAArC;;QACsD,aAAQ,GAAqB,MAAM,CAAC;QAEnC,cAAS,GAAY,KAAK,CAAC;QAE3B,YAAO,GAAY,KAAK,CAAC;QAEzB,eAAU,GAAY,KAAK,CAAC;QAE5C,UAAK,GAAkB,IAAI,CAAC;QAG5B,mBAAc,GAAkB,IAAI,CAAC;IA2DnF,CAAC;IAzDQ,MAAM,KAAK,MAAM;QACtB,OAAO,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAES,OAAO,CAAC,YAAkC;QAClD,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAE5B,IAAI,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,gBAAgB,CACnB;;;;;;;;;SASC,CACF,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACnE,CAAC;QAGD,IAAI,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACrD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;YACvE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,2BAA2B,EAAE,GAAG,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IACM,MAAM;QACX,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IACM,QAAQ;QACb,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAC,KAAe;QAC3B,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAEO,YAAY,CAAC,KAAc;QACjC,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK;YAAE,OAAO;QACrC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IACjD,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAA;;;;;;KAMV,CAAC;IACJ,CAAC;CAEF,CAAA;AAtE4D;IAA1D,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;6CAAoC;AAEnC;IAA3D,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;8CAA2B;AAE3B;IAA3D,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;4CAAyB;AAEzB;IAA3D,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;+CAA4B;AAE5C;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;0CAA4B;AAG5B;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;mDAAqC;AAZtE,WAAW;IADvB,aAAa,CAAC,eAAe,CAAC;GAClB,WAAW,CAuEvB;;AAED,eAAe,WAAW,CAAC","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { html, CSSResultArray, TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styles } from './nile-side-bar.css';\nimport NileElement from '../internal/nile-element';\n\n/**\n * Nile side-bar component.\n *\n * @tag nile-side-bar\n *\n * @attr position - Position of the sidebar (\"left\" | \"right\"). Defaults to \"left\".\n * @attr width - Expanded width of the sidebar (px).\n * @attr collapsed-width - Collapsed width of the sidebar (px).\n * @attr overlay - When set, the sidebar is taken out of normal flow and floats\n * on top of adjacent content, so expanding it overlays the page instead of\n * pushing siblings sideways.\n *\n * @event nile-toggle - Fired after the collapsed state changes (via the built-in\n * expand button or the public expand()/collapse()/toggle() methods).\n * `event.detail.collapsed` is the new state.\n *\n * @method expand() - Expand the sidebar.\n * @method collapse() - Collapse the sidebar.\n * @method toggle(force?) - Toggle, or force a specific collapsed state.\n */\n@customElement('nile-side-bar')\nexport class NileSideBar extends NileElement {\n @property({ type: String, reflect: true, attribute: true })position: 'left' | 'right' = 'left';\n\n @property({ type: Boolean, reflect: true, attribute: true })collapsed: boolean = false;\n\n @property({ type: Boolean, reflect: true, attribute: true })overlay: boolean = false;\n\n @property({ type: Boolean, reflect: true, attribute: true })fullHeight: boolean = false;\n \n @property({ type: Number, attribute: true })width: number | null = null;\n\n \n @property({ type: Number, attribute: true })collapsedWidth: number | null = null;\n\n public static get styles(): CSSResultArray {\n return [styles];\n }\n\n protected updated(changedProps: Map<string, unknown>) {\n super.updated(changedProps);\n\n if (changedProps.has('collapsed')) {\n this.querySelectorAll<NileElement>(\n `\n nile-side-bar-logo,\n nile-side-bar-footer-item,\n nile-side-bar-group-item,\n nile-side-bar-group,\n nile-side-bar-header,\n nile-side-bar-group-item-text,\n nile-side-bar-group-item-icon,\n nile-side-bar-expand\n `\n ).forEach(el => el.toggleAttribute('collapsed', this.collapsed));\n }\n \n\n if (changedProps.has('width') && this.width !== null) {\n this.style.setProperty('--sidebar-width', `${this.width}px`);\n }\n if (changedProps.has('collapsedWidth') && this.collapsedWidth !== null) {\n this.style.setProperty('--sidebar-collapsed-width', `${this.collapsedWidth}px`);\n }\n }\n public expand(): void {\n this.setCollapsed(false);\n }\n public collapse(): void {\n this.setCollapsed(true);\n }\n\n public toggle(force?: boolean): void {\n this.setCollapsed(force ?? !this.collapsed);\n }\n\n private setCollapsed(value: boolean): void {\n if (this.collapsed === value) return;\n this.collapsed = value;\n this.emit('nile-toggle', { collapsed: value });\n }\n\n public render(): TemplateResult {\n return html`\n <slot name=\"header\" part=\"header\"></slot>\n <div class=\"scroll-container\" part=\"scroll-container\">\n <slot></slot>\n </div>\n <slot name=\"footer\" part=\"footer\"></slot>\n `;\n }\n \n}\n\nexport default NileSideBar;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-side-bar': NileSideBar;\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import './nile-side-bar';
2
+ import '../nile-side-bar-expand/nile-side-bar-expand';
@@ -0,0 +1,96 @@
1
+ import { expect, fixture, html, oneEvent } from '@open-wc/testing';
2
+ import './nile-side-bar';
3
+ import '../nile-side-bar-expand/nile-side-bar-expand';
4
+ describe('NileSideBar — collapse/expand API', () => {
5
+ it('1. defaults to expanded (not collapsed) and not overlay', async () => {
6
+ const el = await fixture(html `<nile-side-bar></nile-side-bar>`);
7
+ expect(el.collapsed).to.be.false;
8
+ expect(el.overlay).to.be.false;
9
+ expect(el.hasAttribute('overlay')).to.be.false;
10
+ });
11
+ it('2. collapse() sets collapsed state + reflects attribute', async () => {
12
+ const el = await fixture(html `<nile-side-bar></nile-side-bar>`);
13
+ el.collapse();
14
+ await el.updateComplete;
15
+ expect(el.collapsed).to.be.true;
16
+ expect(el.hasAttribute('collapsed')).to.be.true;
17
+ });
18
+ it('3. expand() clears collapsed state', async () => {
19
+ const el = await fixture(html `<nile-side-bar collapsed></nile-side-bar>`);
20
+ expect(el.collapsed).to.be.true;
21
+ el.expand();
22
+ await el.updateComplete;
23
+ expect(el.collapsed).to.be.false;
24
+ expect(el.hasAttribute('collapsed')).to.be.false;
25
+ });
26
+ it('4. toggle() flips state', async () => {
27
+ const el = await fixture(html `<nile-side-bar></nile-side-bar>`);
28
+ el.toggle();
29
+ await el.updateComplete;
30
+ expect(el.collapsed).to.be.true;
31
+ el.toggle();
32
+ await el.updateComplete;
33
+ expect(el.collapsed).to.be.false;
34
+ });
35
+ it('5. toggle(force) sets an explicit state', async () => {
36
+ const el = await fixture(html `<nile-side-bar></nile-side-bar>`);
37
+ el.toggle(false); // already expanded -> no-op
38
+ await el.updateComplete;
39
+ expect(el.collapsed).to.be.false;
40
+ el.toggle(true);
41
+ await el.updateComplete;
42
+ expect(el.collapsed).to.be.true;
43
+ });
44
+ it('6. emits nile-toggle with new collapsed state', async () => {
45
+ const el = await fixture(html `<nile-side-bar></nile-side-bar>`);
46
+ setTimeout(() => el.collapse());
47
+ const ev = await oneEvent(el, 'nile-toggle');
48
+ expect(ev.detail.collapsed).to.be.true;
49
+ });
50
+ it('7. does NOT emit nile-toggle when state is unchanged', async () => {
51
+ const el = await fixture(html `<nile-side-bar></nile-side-bar>`);
52
+ let fired = false;
53
+ el.addEventListener('nile-toggle', () => { fired = true; });
54
+ el.expand(); // already expanded
55
+ await el.updateComplete;
56
+ expect(fired).to.be.false;
57
+ });
58
+ it('8. built-in expand button toggles the sidebar (normal mode)', async () => {
59
+ const el = await fixture(html `
60
+ <nile-side-bar>
61
+ <nile-side-bar-expand slot="expand"></nile-side-bar-expand>
62
+ </nile-side-bar>
63
+ `);
64
+ await el.updateComplete;
65
+ const expandEl = el.querySelector('nile-side-bar-expand');
66
+ const btn = expandEl.shadowRoot.querySelector('.expand-btn');
67
+ let detail;
68
+ el.addEventListener('nile-toggle', (e) => { detail = e.detail; });
69
+ btn.click();
70
+ await el.updateComplete;
71
+ expect(el.collapsed).to.be.true;
72
+ expect(detail.collapsed).to.be.true;
73
+ expect(expandEl.collapsed).to.be.true; // arrow icon state stays in sync
74
+ btn.click();
75
+ await el.updateComplete;
76
+ expect(el.collapsed).to.be.false;
77
+ expect(expandEl.collapsed).to.be.false;
78
+ });
79
+ it('9. overlay attribute is opt-in and reflects', async () => {
80
+ const el = await fixture(html `<nile-side-bar overlay></nile-side-bar>`);
81
+ expect(el.overlay).to.be.true;
82
+ el.overlay = false;
83
+ await el.updateComplete;
84
+ expect(el.hasAttribute('overlay')).to.be.false;
85
+ });
86
+ it('10. methods work the same with overlay enabled', async () => {
87
+ const el = await fixture(html `<nile-side-bar overlay></nile-side-bar>`);
88
+ el.collapse();
89
+ await el.updateComplete;
90
+ expect(el.collapsed).to.be.true;
91
+ el.expand();
92
+ await el.updateComplete;
93
+ expect(el.collapsed).to.be.false;
94
+ });
95
+ });
96
+ //# sourceMappingURL=nile-side-bar.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nile-side-bar.test.js","sourceRoot":"","sources":["../../../src/nile-side-bar/nile-side-bar.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,iBAAiB,CAAC;AACzB,OAAO,8CAA8C,CAAC;AAGtD,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IACjD,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAc,IAAI,CAAA,iCAAiC,CAAC,CAAC;QAC7E,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QACjC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAC/B,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAc,IAAI,CAAA,iCAAiC,CAAC,CAAC;QAC7E,EAAE,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,EAAE,CAAC,cAAc,CAAC;QACxB,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAChC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,EAAE,GAAG,MAAM,OAAO,CAAc,IAAI,CAAA,2CAA2C,CAAC,CAAC;QACvF,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAChC,EAAE,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,EAAE,CAAC,cAAc,CAAC;QACxB,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QACjC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,EAAE,GAAG,MAAM,OAAO,CAAc,IAAI,CAAA,iCAAiC,CAAC,CAAC;QAC7E,EAAE,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,EAAE,CAAC,cAAc,CAAC;QACxB,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAChC,EAAE,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,EAAE,CAAC,cAAc,CAAC;QACxB,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,EAAE,GAAG,MAAM,OAAO,CAAc,IAAI,CAAA,iCAAiC,CAAC,CAAC;QAC7E,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,4BAA4B;QAC9C,MAAM,EAAE,CAAC,cAAc,CAAC;QACxB,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QACjC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,EAAE,CAAC,cAAc,CAAC;QACxB,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,EAAE,GAAG,MAAM,OAAO,CAAc,IAAI,CAAA,iCAAiC,CAAC,CAAC;QAC7E,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QAC7C,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAc,IAAI,CAAA,iCAAiC,CAAC,CAAC;QAC7E,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,EAAE,CAAC,gBAAgB,CAAC,aAAa,EAAE,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,mBAAmB;QAChC,MAAM,EAAE,CAAC,cAAc,CAAC;QACxB,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,EAAE,GAAG,MAAM,OAAO,CAAc,IAAI,CAAA;;;;KAIzC,CAAC,CAAC;QACH,MAAM,EAAE,CAAC,cAAc,CAAC;QACxB,MAAM,QAAQ,GAAG,EAAE,CAAC,aAAa,CAAC,sBAAsB,CAAyC,CAAC;QAClG,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAW,CAAC,aAAa,CAAC,aAAa,CAAgB,CAAC;QAE7E,IAAI,MAAW,CAAC;QAChB,EAAE,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAQ,EAAE,EAAE,GAAG,MAAM,GAAI,CAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAE1F,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,MAAM,EAAE,CAAC,cAAc,CAAC;QACxB,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACpC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,iCAAiC;QAExE,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,MAAM,EAAE,CAAC,cAAc,CAAC;QACxB,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QACjC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,EAAE,GAAG,MAAM,OAAO,CAAc,IAAI,CAAA,yCAAyC,CAAC,CAAC;QACrF,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC9B,EAAE,CAAC,OAAO,GAAG,KAAK,CAAC;QACnB,MAAM,EAAE,CAAC,cAAc,CAAC;QACxB,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,EAAE,GAAG,MAAM,OAAO,CAAc,IAAI,CAAA,yCAAyC,CAAC,CAAC;QACrF,EAAE,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,EAAE,CAAC,cAAc,CAAC;QACxB,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAChC,EAAE,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,EAAE,CAAC,cAAc,CAAC;QACxB,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { expect, fixture, html, oneEvent } from '@open-wc/testing';\nimport './nile-side-bar';\nimport '../nile-side-bar-expand/nile-side-bar-expand';\nimport type { NileSideBar } from './nile-side-bar';\n\ndescribe('NileSideBar — collapse/expand API', () => {\n it('1. defaults to expanded (not collapsed) and not overlay', async () => {\n const el = await fixture<NileSideBar>(html`<nile-side-bar></nile-side-bar>`);\n expect(el.collapsed).to.be.false;\n expect(el.overlay).to.be.false;\n expect(el.hasAttribute('overlay')).to.be.false;\n });\n\n it('2. collapse() sets collapsed state + reflects attribute', async () => {\n const el = await fixture<NileSideBar>(html`<nile-side-bar></nile-side-bar>`);\n el.collapse();\n await el.updateComplete;\n expect(el.collapsed).to.be.true;\n expect(el.hasAttribute('collapsed')).to.be.true;\n });\n\n it('3. expand() clears collapsed state', async () => {\n const el = await fixture<NileSideBar>(html`<nile-side-bar collapsed></nile-side-bar>`);\n expect(el.collapsed).to.be.true;\n el.expand();\n await el.updateComplete;\n expect(el.collapsed).to.be.false;\n expect(el.hasAttribute('collapsed')).to.be.false;\n });\n\n it('4. toggle() flips state', async () => {\n const el = await fixture<NileSideBar>(html`<nile-side-bar></nile-side-bar>`);\n el.toggle();\n await el.updateComplete;\n expect(el.collapsed).to.be.true;\n el.toggle();\n await el.updateComplete;\n expect(el.collapsed).to.be.false;\n });\n\n it('5. toggle(force) sets an explicit state', async () => {\n const el = await fixture<NileSideBar>(html`<nile-side-bar></nile-side-bar>`);\n el.toggle(false); // already expanded -> no-op\n await el.updateComplete;\n expect(el.collapsed).to.be.false;\n el.toggle(true);\n await el.updateComplete;\n expect(el.collapsed).to.be.true;\n });\n\n it('6. emits nile-toggle with new collapsed state', async () => {\n const el = await fixture<NileSideBar>(html`<nile-side-bar></nile-side-bar>`);\n setTimeout(() => el.collapse());\n const ev = await oneEvent(el, 'nile-toggle');\n expect(ev.detail.collapsed).to.be.true;\n });\n\n it('7. does NOT emit nile-toggle when state is unchanged', async () => {\n const el = await fixture<NileSideBar>(html`<nile-side-bar></nile-side-bar>`);\n let fired = false;\n el.addEventListener('nile-toggle', () => { fired = true; });\n el.expand(); // already expanded\n await el.updateComplete;\n expect(fired).to.be.false;\n });\n\n it('8. built-in expand button toggles the sidebar (normal mode)', async () => {\n const el = await fixture<NileSideBar>(html`\n <nile-side-bar>\n <nile-side-bar-expand slot=\"expand\"></nile-side-bar-expand>\n </nile-side-bar>\n `);\n await el.updateComplete;\n const expandEl = el.querySelector('nile-side-bar-expand') as HTMLElement & { collapsed: boolean };\n const btn = expandEl.shadowRoot!.querySelector('.expand-btn') as HTMLElement;\n\n let detail: any;\n el.addEventListener('nile-toggle', (e: Event) => { detail = (e as CustomEvent).detail; });\n\n btn.click();\n await el.updateComplete;\n expect(el.collapsed).to.be.true;\n expect(detail.collapsed).to.be.true;\n expect(expandEl.collapsed).to.be.true; // arrow icon state stays in sync\n\n btn.click();\n await el.updateComplete;\n expect(el.collapsed).to.be.false;\n expect(expandEl.collapsed).to.be.false;\n });\n\n it('9. overlay attribute is opt-in and reflects', async () => {\n const el = await fixture<NileSideBar>(html`<nile-side-bar overlay></nile-side-bar>`);\n expect(el.overlay).to.be.true;\n el.overlay = false;\n await el.updateComplete;\n expect(el.hasAttribute('overlay')).to.be.false;\n });\n\n it('10. methods work the same with overlay enabled', async () => {\n const el = await fixture<NileSideBar>(html`<nile-side-bar overlay></nile-side-bar>`);\n el.collapse();\n await el.updateComplete;\n expect(el.collapsed).to.be.true;\n el.expand();\n await el.updateComplete;\n expect(el.collapsed).to.be.false;\n });\n});\n"]}
@@ -31,15 +31,13 @@ let NileSideBarExpand = class NileSideBarExpand extends NileElement {
31
31
  const sidebar = this.closest('nile-side-bar');
32
32
  if (!sidebar)
33
33
  return;
34
- const isCollapsed = sidebar.hasAttribute('collapsed');
35
- if (isCollapsed) {
36
- sidebar.removeAttribute('collapsed');
37
- this.collapsed = false;
34
+ if (typeof sidebar.toggle === 'function') {
35
+ sidebar.toggle();
38
36
  }
39
37
  else {
40
- sidebar.setAttribute('collapsed', '');
41
- this.collapsed = true;
38
+ sidebar.toggleAttribute('collapsed', !sidebar.hasAttribute('collapsed'));
42
39
  }
40
+ this.collapsed = sidebar.hasAttribute('collapsed');
43
41
  }
44
42
  render() {
45
43
  return html `
@@ -1 +1 @@
1
- {"version":3,"file":"nile-side-bar-expand.js","sourceRoot":"","sources":["../../../src/nile-side-bar-expand/nile-side-bar-expand.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAkC,MAAM,KAAK,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,WAAW,MAAM,0BAA0B,CAAC;AAEnD;;;;;GAKG;AAEI,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,WAAW;IAA3C;;QAEL,cAAS,GAAY,KAAK,CAAC;QAC6B,sBAAiB,GAAW,gBAAgB,CAAC;QAC7C,wBAAmB,GAAW,kBAAkB,CAAC;IA8C3G,CAAC;IA5CQ,MAAM,KAAK,MAAM;QACtB,OAAO,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAED,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,wCAAwC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC9C,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAEO,aAAa;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACtD,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YACtC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;IACH,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAA;4DAC6C,IAAI,CAAC,aAAa;UACpE,IAAI,CAAC,SAAS;YACd,CAAC,CAAC,IAAI,CAAA;mEACmD,IAAI,CAAC,iBAAiB;;;aAG5E;YACH,CAAC,CAAC,IAAI,CAAA;mEACmD,IAAI,CAAC,mBAAmB;;;aAG9E;;KAER,CAAC;IACJ,CAAC;CACF,CAAA;AAhDC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;oDAChB;AAC6B;IAAvD,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAC,IAAI,EAAE,SAAS,EAAC,IAAI,EAAC,CAAC;4DAA8C;AAC7C;IAAvD,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAC,IAAI,EAAE,SAAS,EAAC,IAAI,EAAC,CAAC;8DAAkD;AAJ9F,iBAAiB;IAD7B,aAAa,CAAC,sBAAsB,CAAC;GACzB,iBAAiB,CAkD7B;;AAED,eAAe,iBAAiB,CAAC","sourcesContent":["import { html, CSSResultArray, TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styles } from './nile-side-bar-expand.css';\nimport NileElement from '../internal/nile-element';\n\n/**\n * Nile side-bar-expand component.\n *\n * @tag nile-side-bar-expand\n *\n */\n@customElement('nile-side-bar-expand')\nexport class NileSideBarExpand extends NileElement {\n @property({ type: Boolean, reflect: true })\n collapsed: boolean = false;\n @property({type: String, reflect:true, attribute:true}) expandTooltipText: string = 'Expand Sidebar';\n @property({type: String, reflect:true, attribute:true}) collapseTooltipText: string = 'Collapse Sidebar';\n\n public static get styles(): CSSResultArray {\n return [styles];\n }\n\n connectedCallback() {\n super.connectedCallback();\n // Sync with parent sidebar if it exists\n const sidebar = this.closest('nile-side-bar');\n if (sidebar) {\n this.collapsed = sidebar.hasAttribute('collapsed');\n }\n }\n\n private toggleSidebar() {\n const sidebar = this.closest('nile-side-bar');\n if (!sidebar) return;\n\n const isCollapsed = sidebar.hasAttribute('collapsed');\n if (isCollapsed) {\n sidebar.removeAttribute('collapsed');\n this.collapsed = false;\n } else {\n sidebar.setAttribute('collapsed', '');\n this.collapsed = true;\n }\n }\n\n public render(): TemplateResult {\n return html`\n <button class=\"expand-btn\" part=\"expand-btn\" @click=${this.toggleSidebar}>\n ${this.collapsed\n ? html`\n <nile-lite-tooltip placement=\"right\" hoist content=${this.expandTooltipText}>\n <span part=\"icon\"><nile-icon color=\"var(--nile-colors-dark-500, var(--ng-colors-fg-quaternary-400))\" method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\" size=\"var(--nile-spacing-14px, var(--ng-spacing-2xl))\" name=\"var(--nile-icon-move-right, var(--ng-icon-chevron-right-double))\"></nile-icon></span>\n </nile-lite-tooltip>\n `\n : html`\n <nile-lite-tooltip placement=\"right\" hoist content=${this.collapseTooltipText}>\n <span part=\"icon\"><nile-icon color=\"var(--nile-colors-dark-500, var(--ng-colors-fg-quaternary-400))\" method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\" size=\"var(--nile-spacing-14px, var(--ng-spacing-2xl))\" name=\"var(--nile-icon-move-left, var(--ng-icon-chevron-left-double))\"></nile-icon></span>\n </nile-lite-tooltip>\n `}\n </button>\n `;\n }\n}\n\nexport default NileSideBarExpand;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-side-bar-expand': NileSideBarExpand;\n }\n}\n"]}
1
+ {"version":3,"file":"nile-side-bar-expand.js","sourceRoot":"","sources":["../../../src/nile-side-bar-expand/nile-side-bar-expand.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAkC,MAAM,KAAK,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,WAAW,MAAM,0BAA0B,CAAC;AAEnD;;;;;GAKG;AAEI,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,WAAW;IAA3C;;QAEL,cAAS,GAAY,KAAK,CAAC;QAC6B,sBAAiB,GAAW,gBAAgB,CAAC;QAC7C,wBAAmB,GAAW,kBAAkB,CAAC;IA6C3G,CAAC;IA3CQ,MAAM,KAAK,MAAM;QACtB,OAAO,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAED,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,wCAAwC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC9C,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAEO,aAAa;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAEpC,CAAC;QACT,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACzC,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IACrD,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAA;4DAC6C,IAAI,CAAC,aAAa;UACpE,IAAI,CAAC,SAAS;YACd,CAAC,CAAC,IAAI,CAAA;mEACmD,IAAI,CAAC,iBAAiB;;;aAG5E;YACH,CAAC,CAAC,IAAI,CAAA;mEACmD,IAAI,CAAC,mBAAmB;;;aAG9E;;KAER,CAAC;IACJ,CAAC;CACF,CAAA;AA/CC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;oDAChB;AAC6B;IAAvD,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAC,IAAI,EAAE,SAAS,EAAC,IAAI,EAAC,CAAC;4DAA8C;AAC7C;IAAvD,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAC,IAAI,EAAE,SAAS,EAAC,IAAI,EAAC,CAAC;8DAAkD;AAJ9F,iBAAiB;IAD7B,aAAa,CAAC,sBAAsB,CAAC;GACzB,iBAAiB,CAiD7B;;AAED,eAAe,iBAAiB,CAAC","sourcesContent":["import { html, CSSResultArray, TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styles } from './nile-side-bar-expand.css';\nimport NileElement from '../internal/nile-element';\n\n/**\n * Nile side-bar-expand component.\n *\n * @tag nile-side-bar-expand\n *\n */\n@customElement('nile-side-bar-expand')\nexport class NileSideBarExpand extends NileElement {\n @property({ type: Boolean, reflect: true })\n collapsed: boolean = false;\n @property({type: String, reflect:true, attribute:true}) expandTooltipText: string = 'Expand Sidebar';\n @property({type: String, reflect:true, attribute:true}) collapseTooltipText: string = 'Collapse Sidebar';\n\n public static get styles(): CSSResultArray {\n return [styles];\n }\n\n connectedCallback() {\n super.connectedCallback();\n // Sync with parent sidebar if it exists\n const sidebar = this.closest('nile-side-bar');\n if (sidebar) {\n this.collapsed = sidebar.hasAttribute('collapsed');\n }\n }\n\n private toggleSidebar() {\n const sidebar = this.closest('nile-side-bar') as\n | (HTMLElement & { toggle?: (force?: boolean) => void })\n | null;\n if (!sidebar) return;\n if (typeof sidebar.toggle === 'function') {\n sidebar.toggle();\n } else {\n sidebar.toggleAttribute('collapsed', !sidebar.hasAttribute('collapsed'));\n }\n this.collapsed = sidebar.hasAttribute('collapsed');\n }\n\n public render(): TemplateResult {\n return html`\n <button class=\"expand-btn\" part=\"expand-btn\" @click=${this.toggleSidebar}>\n ${this.collapsed\n ? html`\n <nile-lite-tooltip placement=\"right\" hoist content=${this.expandTooltipText}>\n <span part=\"icon\"><nile-icon color=\"var(--nile-colors-dark-500, var(--ng-colors-fg-quaternary-400))\" method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\" size=\"var(--nile-spacing-14px, var(--ng-spacing-2xl))\" name=\"var(--nile-icon-move-right, var(--ng-icon-chevron-right-double))\"></nile-icon></span>\n </nile-lite-tooltip>\n `\n : html`\n <nile-lite-tooltip placement=\"right\" hoist content=${this.collapseTooltipText}>\n <span part=\"icon\"><nile-icon color=\"var(--nile-colors-dark-500, var(--ng-colors-fg-quaternary-400))\" method=\"var(--nile-svg-method-fill, var(--ng-svg-method-stroke))\" size=\"var(--nile-spacing-14px, var(--ng-spacing-2xl))\" name=\"var(--nile-icon-move-left, var(--ng-icon-chevron-left-double))\"></nile-icon></span>\n </nile-lite-tooltip>\n `}\n </button>\n `;\n }\n}\n\nexport default NileSideBarExpand;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-side-bar-expand': NileSideBarExpand;\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  // Version utility - placeholders will be replaced during build
2
- export const NILE_ELEMENTS_VERSION = '1.8.7';
2
+ export const NILE_ELEMENTS_VERSION = '1.8.9';
3
3
  export const NILE_VERSION = '1.2.7';
4
4
  // Set global versions for runtime access
5
5
  if (typeof window !== 'undefined') {
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,MAAM,CAAC,MAAM,qBAAqB,GAAG,2BAA2B,CAAC;AACjE,MAAM,CAAC,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAE/C,yCAAyC;AACzC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IACjC,MAAc,CAAC,mBAAmB,GAAG,qBAAqB,CAAC;IAC3D,MAAc,CAAC,WAAW,GAAG,YAAY,CAAC;IAC3C,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,CAAC;AACzE,CAAC","sourcesContent":["// Version utility - placeholders will be replaced during build\nexport const NILE_ELEMENTS_VERSION = '1.8.7';\nexport const NILE_VERSION = '1.2.7';\n\n// Set global versions for runtime access\nif (typeof window !== 'undefined') {\n (window as any).nileElementsVersion = NILE_ELEMENTS_VERSION;\n (window as any).nileVersion = NILE_VERSION;\n window.process = window.process || { env: { NODE_ENV: 'production' } };\n}\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,MAAM,CAAC,MAAM,qBAAqB,GAAG,2BAA2B,CAAC;AACjE,MAAM,CAAC,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAE/C,yCAAyC;AACzC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IACjC,MAAc,CAAC,mBAAmB,GAAG,qBAAqB,CAAC;IAC3D,MAAc,CAAC,WAAW,GAAG,YAAY,CAAC;IAC3C,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,CAAC;AACzE,CAAC","sourcesContent":["// Version utility - placeholders will be replaced during build\nexport const NILE_ELEMENTS_VERSION = '1.8.9';\nexport const NILE_VERSION = '1.2.7';\n\n// Set global versions for runtime access\nif (typeof window !== 'undefined') {\n (window as any).nileElementsVersion = NILE_ELEMENTS_VERSION;\n (window as any).nileVersion = NILE_VERSION;\n window.process = window.process || { env: { NODE_ENV: 'production' } };\n}\n"]}