@nyx-ds/treeview 0.1.0 → 0.1.1

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.
@@ -1,131 +1,151 @@
1
- (function(u,a){typeof exports=="object"&&typeof module<"u"?a(exports,require("lit"),require("lit/decorators.js"),require("lit/directives/repeat.js"),require("lit/directives/class-map.js"),require("@nyx-ds/core"),require("lit-html/directives/class-map.js"),require("@nyx-ds/icon"),require("lit-html/directives/unsafe-html.js")):typeof define=="function"&&define.amd?define(["exports","lit","lit/decorators.js","lit/directives/repeat.js","lit/directives/class-map.js","@nyx-ds/core","lit-html/directives/class-map.js","@nyx-ds/icon","lit-html/directives/unsafe-html.js"],a):(u=typeof globalThis<"u"?globalThis:u||self,a(u.treeview={},u.lit,u.decorators_js,u.repeat_js,u.classMap_js$1,u.core,u.classMap_js,null,u.unsafeHtml_js))})(this,function(u,a,l,O,E,h,z,Z,R){"use strict";var p;function B(c,o){return function(e,n){const{native:t=!1,...r}=n||{},i=t?new Event(o,r):new CustomEvent(o,{detail:e,...r});c.dispatchEvent(i)}}function L(c){return(o,e)=>{Object.defineProperty(o,e,{get(){return B(this,c||e)},enumerable:!0,configurable:!0})}}const N=":host{display:flex;flex-direction:column;width:100%;--treeview-radius: var(--nyx-radii-s);--treeview-search-padding: var(--nyx-sizing-1-25) var(--nyx-sizing-1-75) 0 var(--nyx-sizing-1-75);--treeview-header-padding: var(--nyx-sizing-2) var(--nyx-sizing-2) var(--nyx-sizing-1-75) var(--nyx-sizing-2);--treeview-row-padding: var(--nyx-sizing-1-5, 12px) var(--nyx-sizing-2);--treeview-row-gap: var(--nyx-sizing-2);--treeview-col-gap: var(--nyx-sizing-1);--treeview-node-gap: var(--nyx-sizing-1);--treeview-row-min-height: 56px;--treeview-expander-wrapper-size: var(--nyx-sizing-4);--treeview-expander-padding: var(--nyx-sizing-1-25);--treeview-col-width: var(--treeview-header-icon-size);--treeview-background: var(--nyx-color-neutral-background-primary);--treeview-border-color: var(--nyx-color-neutral-border-tertiary);--treeview-content-color: var(--nyx-color-neutral-content-primary);--treeview-focus-border-color: var(--nyx-color-brand-border-default);--treeview-row-selected-background: var(--nyx-color-brand-background-softer);--treeview-row-selected-hover-background: var( --nyx-color-brand-background-softer-hover );--treeview-row-selected-color: var(--nyx-color-neutral-content-primary);--treeview-font-family: var(--nyx-font-family-font-family);--treeview-title-font-size: var(--nyx-label-medium-font-size);--treeview-title-line-height: var(--nyx-label-medium-line-height);--treeview-text-font-size: var(--nyx-label-medium-font-size);--treeview-text-line-height: var(--nyx-label-medium-line-height);--treeview-header-icon-size: var(--nyx-label-large-font-size);--treeview-node-icon-size: var(--nyx-label-medium-font-size);--treeview-expander-icon-size: var(--nyx-label-large-font-size);--treeview-row-hover-background: var(--nyx-color-brand-background-hover);--treeview-row-hover-color: var(--nyx-color-neutral-content-primary-inverse)}.nyx-treeview{display:flex;flex-direction:column;width:100%;font-family:var(--treeview-font-family);align-items:flex-start;border-radius:var(--treeview-radius);border:1px solid var(--treeview-border-color);background:var(--treeview-background);box-sizing:border-box}.component-subtitle{color:var(--nyx-color-neutral-content-tertiary);font-family:var(--nyx-font-family-font-family);font-size:var(--nyx-paragraph-large-font-size);line-height:var(--nyx-paragraph-large-line-height);display:block;margin-top:-8px;margin-bottom:16px}.search-container{display:flex;padding:var(--treeview-search-padding);flex-direction:column;align-items:flex-start;align-self:stretch}.tree-scroll{width:100%}.tree-header{display:flex;justify-content:space-between;align-items:center;align-self:stretch;padding:var(--treeview-header-padding);border-bottom:.5px solid var(--treeview-border-color);box-sizing:border-box}.tree-title{color:var(--treeview-content-color);font-size:var(--treeview-title-font-size);line-height:var(--treeview-title-line-height);font-weight:600}.header-columns,.node-columns{display:flex;align-items:center;justify-content:flex-end;gap:var(--treeview-col-gap);flex-shrink:0}.col-cell{min-width:var(--treeview-col-width);width:var(--treeview-col-width);flex:0 0 auto}.col-cell,.header-columns ::slotted(*){display:flex;justify-content:center;align-items:center;box-sizing:border-box}.header-columns ::slotted(nyx-icon){--nyx-icon-size: var(--treeview-header-icon-size);color:var(--treeview-content-color)}.tree-body{width:100%;display:flex;flex-direction:column}.node-wrapper{display:flex;flex-direction:column;width:100%}.node-row{display:flex;align-items:center;justify-content:space-between;min-height:var(--treeview-row-min-height);border-bottom:.5px solid var(--treeview-border-color);gap:var(--treeview-row-gap);padding:var(--treeview-row-padding);box-sizing:border-box;background:transparent;color:var(--treeview-content-color);outline:none;cursor:default}.node-row:hover{background:var(--treeview-row-hover-background);color:var(--treeview-row-hover-color)}.node-row:focus-within{background:var(--treeview-row-hover-background)!important;color:var(--treeview-row-hover-color)!important}.node-row:hover .expander nyx-icon,.node-row:hover .node-type-icon-wrapper ::slotted(nyx-icon){color:var(--treeview-row-hover-color)}.node-row:focus-within .expander nyx-icon,.node-row:focus-within .node-type-icon-wrapper ::slotted(nyx-icon){color:var(--treeview-row-hover-color)}.node-row.selectable.selected{background-color:var(--treeview-row-selected-background);color:var(--treeview-row-selected-color)}.node-row.selectable.selected .expander nyx-icon,.node-row.selectable.selected .node-type-icon-wrapper ::slotted(nyx-icon){color:var(--treeview-row-selected-color)}.node-row.selectable.selected:hover{background-color:var(--treeview-row-selected-hover-background);color:var(--treeview-row-selected-color)}.node-row:focus-visible{position:relative;z-index:2;outline:2px solid var(--treeview-content-color);outline-offset:-4px;background:var(--treeview-row-hover-background)!important;color:var(--treeview-row-hover-color)}.row-checkbox{display:flex;align-items:center;margin-right:4px}.node-info{display:flex;align-items:center;gap:var(--treeview-node-gap);flex:1 0 0;overflow:hidden;min-height:32px;padding-left:4px}.expander{--button-icon-color: inherit}.expander nyx-icon{--nyx-icon-size: var(--treeview-expander-icon-size);transition:transform .2s ease;transform-origin:center}.expander nyx-icon.expanded{transform:rotate(90deg)}.expander:hover,.expander:focus-within{--button-icon-color: var(--treeview-content-color) !important}.expander:hover nyx-icon,.expander:focus-within nyx-icon{color:var(--treeview-content-color)!important;--nyx-icon-color: var(--treeview-content-color) !important}.node-type-icon-wrapper{display:flex;align-items:center;justify-content:center;flex-shrink:0}.node-type-icon-wrapper ::slotted(nyx-icon){--nyx-icon-size: var(--treeview-node-icon-size)}.node-text{font-size:var(--treeview-text-font-size);line-height:var(--treeview-text-line-height);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.node-children{width:100%}@media (max-width: 768px){.tree-scroll{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.tree-header,.tree-body{min-width:calc(250px + ((var(--treeview-col-width) + var(--treeview-col-gap)) * 4))}.node-text{white-space:normal;display:-webkit-box;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}}",M=':host{--field-padding: var(--nyx-sizing-1-5);--field-padding-small: var(--nyx-sizing-1) var(--nyx-sizing-1-5);--field-border-radius-sharp: var(--nyx-radii-xs);--field-border-radius-rounded: var(--nyx-radii-100);--field-border: var(--nyx-stroke-number-2) solid var(--nyx-color-neutral-border-tertiary);--field-text-color: var(--nyx-color-neutral-content-primary);--field-font-family: var(--nyx-font-family-font-family);--field-font-size: var(--nyx-label-medium-font-size);--field-line-height: var(--nyx-label-medium-line-height);--placeholder-color: var(--nyx-color-neutral-content-tertiary);--field-hover-border: var(--nyx-stroke-number-3) solid var(--nyx-color-neutral-border-active);--field-focus-outline: var(--nyx-stroke-number-3) solid var(--nyx-color-neutral-border-active);--field-invalid-border: var(--nyx-stroke-number-3) solid var(--nyx-color-danger-border-default);--field-disabled-border: var(--nyx-stroke-number-2) solid var(--nyx-color-neutral-border-disable);--field-disabled-text-color: var(--nyx-color-neutral-content-disabled);--icon-color: var(--nyx-color-neutral-content-tertiary);--icon-disabled-color: var(--nyx-color-neutral-content-disabled);box-sizing:border-box;display:inline-flex;width:100%}*{box-sizing:inherit}.component-subtitle{color:var(--nyx-color-neutral-content-tertiary);font-family:var(--nyx-font-family-font-family);font-size:var(--nyx-paragraph-large-font-size);line-height:var(--nyx-paragraph-large-line-height);display:block;margin-top:-8px;margin-bottom:16px}.container{width:100%;position:relative}.container.small ::slotted([slot="field"]){padding:var(--field-padding-small)}.container.iconLeft ::slotted([slot="field"]){padding-left:36px}.container.iconLeft ::slotted([slot="field"]){padding-right:36px}.password,.clear{display:none;position:absolute;top:0;bottom:0;right:12px;font-size:var(--field-font-size)}::slotted([slot="field"]){width:100%;margin:0;box-sizing:inherit;padding:var(--field-padding);border-radius:var(--field-border-radius-sharp);border:var(--field-border);color:var(--field-text-color);background-color:transparent;font-family:var(--field-font-family);font-size:var(--field-font-size);font-style:normal;font-weight:400;line-height:var(--field-line-height);resize:none}.container.rounded ::slotted([slot="field"]){border-radius:var(--field-border-radius-rounded)}::slotted([slot="field"])::placeholder{color:var(--placeholder-color)}::slotted([slot="field"]:hover:not([disabled])){border:var(--field-hover-border)}::slotted([slot="field"]:focus){outline:var(--field-focus-outline)}::slotted([slot="field"][invalid]){border:var(--field-invalid-border)}::slotted([slot="field"][disabled]){border:var(--field-disabled-border);color:var(--field-disabled-text-color)}::slotted([slot="field"][disabled])::placeholder{color:var(--field-disabled-text-color)}::slotted([slot="iconLeft"]),::slotted([slot="iconRight"]){position:absolute;top:12px;font-size:var(--field-font-size)}.container.small ::slotted([slot="iconLeft"]),.container.small ::slotted([slot="iconRight"]){top:8px}::slotted([slot="iconLeft"]){left:12px}::slotted([slot="iconRight"]){right:12px}::slotted([slot="iconLeft"]:not([action])),::slotted([slot="iconRight"]:not([action])){color:var(--icon-color)}::slotted([slot="iconLeft"][clickable]:not([disabled])),::slotted([slot="iconRight"][clickable]:not([disabled])){cursor:pointer}:host(.disabled) ::slotted([slot="iconLeft"]),:host(.disabled) ::slotted([slot="iconRight"]){color:var(--icon-disabled-color)}.container.passwordToggle ::slotted([slot="iconRight"]),.container.clearable ::slotted([slot="iconRight"]){display:none}.container.passwordToggle .password,.container.clearable .clear{display:flex;cursor:pointer}';var F=Object.defineProperty,k=(c,o,e,n)=>{for(var t=void 0,r=c.length-1,i;r>=0;r--)(i=c[r])&&(t=i(o,e,t)||t);return t&&F(o,e,t),t};const S=class S extends a.LitElement{constructor(){super(...arguments),this.size="medium",this.border="sharp",this.passwordToggle=!1,this.clearable=!1,this.showPassword=!1}updated(o){const e=this.querySelector('[slot="field"]'),n=e instanceof HTMLInputElement&&e.disabled;this.classList.toggle("disabled",n)}handleClick(){this.showPassword=!this.showPassword;const e=this.shadowRoot.querySelector("slot[name='field']").assignedElements({flatten:!0})[0];e&&(e.type=this.showPassword?"text":"password")}handleClear(){const e=this.shadowRoot.querySelector("slot[name='field']").assignedElements({flatten:!0})[0];e&&(e.value="")}render(){const o=!!this.querySelector('[slot="iconLeft"]'),e=!!this.querySelector('[slot="iconRight"]'),n={container:!0,small:this.size==="small",iconLeft:o,iconRight:e,passwordToggle:this.passwordToggle,clearable:this.clearable,rounded:this.border==="rounded"};return a.html`
2
- <div class=${z.classMap(n)}>
3
- <slot name="field"></slot>
4
- <slot name="iconLeft"></slot>
5
- <slot name="iconRight"></slot>
6
- <div class="password">
7
- <nyx-icon @click=${this.handleClick} svg=${this.showPassword?h.eyeSlash:h.eye}></nyx-icon>
8
- </div>
9
- <div class="clear">
10
- <nyx-icon @click=${this.handleClear} svg=${h.xmark}></nyx-icon>
1
+ (function(_,h){typeof exports=="object"&&typeof module<"u"?h(exports,require("lit"),require("lit/decorators.js"),require("lit/directives/repeat.js"),require("lit/directives/class-map.js"),require("@nyx-ds/core"),require("@lit-labs/virtualizer"),require("@nyx-ds/input"),require("@nyx-ds/checkbox"),require("@nyx-ds/icon"),require("@nyx-ds/button")):typeof define=="function"&&define.amd?define(["exports","lit","lit/decorators.js","lit/directives/repeat.js","lit/directives/class-map.js","@nyx-ds/core","@lit-labs/virtualizer","@nyx-ds/input","@nyx-ds/checkbox","@nyx-ds/icon","@nyx-ds/button"],h):(_=typeof globalThis<"u"?globalThis:_||self,h(_.treeview={},_.lit,_.litDecorators,_.litRepeat,_.litClassMap,_.NyxCore))})(this,(function(_,h,p,Z,b,M){"use strict";function G(n,e){return function(t,i){const{native:s=!1,...r}=i||{},o=s?new Event(e,r):new CustomEvent(e,{detail:t,...r});n.dispatchEvent(o)}}function K(n){return(e,t)=>{Object.defineProperty(e,t,{get(){return G(this,n)},enumerable:!0,configurable:!0})}}const Y=":host{display:flex;flex-direction:column;width:100%;--treeview-radius: var(--nyx-radii-s);--treeview-search-padding: var(--nyx-sizing-1-25) var(--nyx-sizing-1-75) 0 var(--nyx-sizing-1-75);--treeview-header-padding: var(--nyx-sizing-2) var(--nyx-sizing-2) var(--nyx-sizing-1-75) var(--nyx-sizing-2);--treeview-row-padding: var(--nyx-sizing-1) var(--nyx-sizing-2);--treeview-row-gap: var(--nyx-sizing-2);--treeview-col-gap: var(--nyx-sizing-1);--treeview-node-gap: var(--nyx-sizing-1);--treeview-row-min-height: 48px;--treeview-indent-base: 16px;--treeview-indent-step: 24px;--treeview-expander-wrapper-size: var(--nyx-sizing-4);--treeview-expander-padding: var(--nyx-sizing-1-25);--treeview-col-width: var(--treeview-header-icon-size);--treeview-column-count: 0;--treeview-scrollbar-gutter: 15px;--treeview-background: var(--nyx-color-neutral-background-primary);--treeview-border-color: var(--nyx-color-neutral-border-tertiary);--treeview-content-color: var(--nyx-color-neutral-content-primary);--treeview-focus-border-color: var(--nyx-color-brand-border-default);--treeview-row-selected-background: var(--nyx-color-brand-background-softer);--treeview-row-selected-hover-background: var( --nyx-color-brand-background-softer-hover );--treeview-row-selected-color: var(--nyx-color-neutral-content-primary);--treeview-font-family: var(--nyx-font-family-font-family);--treeview-title-font-size: var(--nyx-label-medium-font-size);--treeview-title-line-height: var(--nyx-label-medium-line-height);--treeview-text-font-size: var(--nyx-label-medium-font-size);--treeview-text-line-height: var(--nyx-label-medium-line-height);--treeview-header-icon-size: var(--nyx-label-large-font-size);--treeview-node-icon-size: var(--nyx-label-medium-font-size);--treeview-expander-icon-size: var(--nyx-label-large-font-size);--treeview-row-hover-background: var(--nyx-color-neutral-background-secondary);--treeview-row-hover-color: var(--nyx-color-brand-content-hover)}.nyx-treeview{display:flex;flex-direction:column;width:100%;font-family:var(--treeview-font-family);align-items:flex-start;border-radius:var(--treeview-radius);border:1px solid var(--treeview-border-color);background:var(--treeview-background);box-sizing:border-box}.search-container{display:flex;padding:var(--treeview-search-padding);flex-direction:column;align-items:flex-start;align-self:stretch}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.tree-scroll{width:100%;display:flex;flex-direction:column;min-height:0}.tree-body--virtual{display:flex;flex-direction:column;flex:1 1 auto;min-height:280px;max-height:var(--treeview-max-height, 480px);overflow:hidden}.tree-virtualizer{flex:1 1 auto;width:100%;min-height:280px;scrollbar-gutter:stable}.node-wrapper--flat{width:100%}.tree-header{display:flex;justify-content:space-between;align-items:center;align-self:stretch;padding:var(--treeview-header-padding);border-bottom:.5px solid var(--treeview-border-color);box-sizing:border-box}.tree-title{color:var(--treeview-content-color);font-size:var(--treeview-title-font-size);line-height:var(--treeview-title-line-height);font-weight:600;flex:1 1 auto;min-width:0}.tree-header--no-columns .tree-title{flex:1 1 auto}.nyx-treeview--no-columns .header-columns,.nyx-treeview--no-columns .node-columns{display:none}.nyx-treeview--no-columns .tree-header{padding-inline-end:var(--nyx-sizing-2, 16px)}.header-columns,.node-columns{display:flex;align-items:center;justify-content:flex-end;gap:var(--treeview-col-gap);flex-shrink:0}.header-columns{padding-inline-end:0}.nyx-treeview--virtual .header-columns{padding-inline-end:var(--treeview-scrollbar-gutter)}.col-cell{min-width:var(--treeview-col-width);width:var(--treeview-col-width);flex:0 0 auto;display:flex;justify-content:center;align-items:center;box-sizing:border-box}.header-columns ::slotted(nyx-icon){display:flex;justify-content:center;align-items:center;--nyx-icon-size: var(--treeview-header-icon-size);color:var(--treeview-content-color)}.tree-body{width:100%;display:flex;flex-direction:column}.node-wrapper{display:flex;flex-direction:column;width:100%}.node-row{--treeview-row-level: 0;display:flex;align-items:center;justify-content:space-between;min-height:var(--treeview-row-min-height);border-bottom:.5px solid var(--treeview-border-color);gap:var(--treeview-row-gap);padding:var(--treeview-row-padding);padding-left:calc(var(--treeview-indent-base) + var(--treeview-row-level) * var(--treeview-indent-step));box-sizing:border-box;background:transparent;color:var(--treeview-content-color);outline:none;cursor:default}.node-row:hover{background:var(--treeview-row-hover-background);color:var(--treeview-row-hover-color)}.node-row:focus-within{background:var(--treeview-row-hover-background)!important;color:var(--treeview-row-hover-color)!important}.node-row:hover .expander nyx-icon,.node-row:hover .node-type-icon-wrapper ::slotted(nyx-icon){color:var(--treeview-row-hover-color)}.node-row:focus-within .expander nyx-icon,.node-row:focus-within .node-type-icon-wrapper ::slotted(nyx-icon){color:var(--treeview-row-hover-color)}.node-row.selectable.selected{background-color:var(--treeview-row-selected-background);color:var(--treeview-row-selected-color)}.node-row.selectable.selected .expander nyx-icon,.node-row.selectable.selected .node-type-icon-wrapper ::slotted(nyx-icon){color:var(--treeview-row-selected-color)}.node-row.selectable.selected:hover{background-color:var(--treeview-row-selected-hover-background);color:var(--treeview-row-selected-color)}.node-row.selectable.selected:focus-within{background-color:var(--treeview-row-selected-background)!important;color:var(--treeview-row-selected-color)!important}.node-row.selectable.selected:focus-within .expander nyx-icon,.node-row.selectable.selected:focus-within .node-type-icon-wrapper ::slotted(nyx-icon){color:var(--treeview-row-selected-color)}.node-row.selectable.selected:hover:focus-within{background-color:var(--treeview-row-selected-hover-background)!important}.node-row:focus-visible{position:relative;z-index:2;outline:2px solid var(--treeview-focus-border-color);outline-offset:-3px;background:var(--treeview-row-hover-background)!important;color:var(--treeview-row-hover-color)}.row-checkbox{display:flex;align-items:center;margin-right:4px}.node-info{display:flex;align-items:center;gap:var(--treeview-node-gap);flex:1 0 0;overflow:hidden;min-height:32px;padding-left:4px}.expander{--button-icon-color: inherit;flex-shrink:0;width:var(--treeview-expander-wrapper-size);min-width:var(--treeview-expander-wrapper-size)}.expander-placeholder{display:block;flex-shrink:0;width:var(--treeview-expander-wrapper-size);min-width:var(--treeview-expander-wrapper-size);height:var(--treeview-expander-wrapper-size)}.expander nyx-icon{--nyx-icon-size: var(--treeview-expander-icon-size);transition:transform .2s ease;transform-origin:center}.expander nyx-icon.expanded{transform:rotate(90deg)}.expander:hover,.expander:focus-within{--button-icon-color: var(--treeview-content-color) !important}.expander:hover nyx-icon,.expander:focus-within nyx-icon{color:var(--treeview-content-color)!important;--nyx-icon-color: var(--treeview-content-color) !important}.node-row:hover .expander:hover,.node-row:hover .expander:focus-within{--button-icon-color: var(--treeview-row-hover-color) !important}.node-row:hover .expander:hover nyx-icon,.node-row:hover .expander:focus-within nyx-icon{color:var(--treeview-row-hover-color)!important;--nyx-icon-color: var(--treeview-row-hover-color) !important}.node-type-icon-wrapper{display:flex;align-items:center;justify-content:center;flex-shrink:0}.node-type-icon-wrapper ::slotted(nyx-icon){--nyx-icon-size: var(--treeview-node-icon-size)}.node-text{font-size:var(--treeview-text-font-size);line-height:var(--treeview-text-line-height);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.node-children{width:100%}@media(max-width:768px){.tree-scroll{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.tree-header,.tree-body{min-width:calc(250px + ((var(--treeview-col-width) + var(--treeview-col-gap)) * var(--treeview-column-count)))}.node-text{white-space:normal;display:-webkit-box;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}}",X=200;function g(n,e){const t=e.trim().toLowerCase();return t?n.toLowerCase().includes(t):!1}function S(n,e){return n.includes(e)}function C(n){var s;const e=new Map,t=[],i=[];for(let r=n.length-1;r>=0;r--)i.push({node:n[r],parentId:null});for(;i.length>0;){const{node:r,parentId:o}=i.pop(),a=((s=r.children)==null?void 0:s.map(d=>d.id))??[];if(e.set(r.id,{id:r.id,parentId:o,normalizedLabel:r.label.toLowerCase(),childIds:a,hasChildren:a.length>0}),o===null&&t.push(r.id),r.children)for(let d=r.children.length-1;d>=0;d--)i.push({node:r.children[d],parentId:r.id})}return{roots:t,byId:e,size:e.size}}function J(n){const e=[],t=[];for(let i=n.roots.length-1;i>=0;i--)t.push({id:n.roots[i],visited:!1});for(;t.length>0;){const i=t[t.length-1];if(i.visited)t.pop(),e.push(i.id);else{i.visited=!0;const s=n.byId.get(i.id);if(!s)continue;for(let r=s.childIds.length-1;r>=0;r--)t.push({id:s.childIds[r],visited:!1})}}return e}function Q(n,e,t){const i=new Set,s=new Set,r=new Map;for(const o of J(n)){const a=n.byId.get(o);if(!a)continue;const d=S(a.normalizedLabel,e);let l=!1;for(const w of a.childIds)if(r.get(w)){l=!0;break}const c=d||l;if(r.set(o,c),!c||(i.add(o),!a.hasChildren||!l))continue;let v=!1;for(const w of a.childIds){const m=n.byId.get(w);if(m&&S(m.normalizedLabel,e)){v=!0;break}}!t.has(o)&&(!d||v)&&s.add(o)}return{visibleIds:i,expandIds:s}}function ee(n,e){const t=e.trim().toLowerCase();if(!t)return 0;const i=Array.isArray(n)?C(n):n;let s=0;for(const r of i.byId.values())S(r.normalizedLabel,t)&&s++;return s}function te(n,e,t=new Set){const i=e.trim().toLowerCase();if(!i)return{visibleIds:new Set,expandIds:new Set};const s=Array.isArray(n)?C(n):n;return Q(s,i,t)}function N(n,e,t=""){const i=n.children??[],s=t.trim().toLowerCase();return s?i.filter(r=>e.has(r.id)||g(r.label,s)):i.filter(r=>e.has(r.id))}function ie(n,e,t){const i=e.trim().toLowerCase();if(!i)return!1;const s=[n];for(;s.length>0;){const r=s.pop();for(const o of t(r)??[]){if(g(o.label,i))return!0;s.push(o.id)}}return!1}function se(n,e,t){const i=[n];for(;i.length>0;){const s=i.pop();for(const r of t(s)??[]){if(e.has(r.id))return!0;i.push(r.id)}}return!1}function R(n,e,t,i,s,r){return D(n,e,t)&&!se(i,s,r)&&!ie(i,e,r)}function D(n,e,t){return g(n,e)&&!t}function V(n,e,t,i){return t||D(n,e,i)}function z(n,e){var t,i;if(e){if(n.selected)return!0}else if((((t=n.selectedColumns)==null?void 0:t.length)??0)>0)return!0;return((i=n.children)==null?void 0:i.some(s=>z(s,e)))??!1}function P(n,e){const t=n.map((i,s)=>({node:i,index:s}));return t.sort((i,s)=>{const r=z(i.node,e),o=z(s.node,e);return r!==o?r?-1:1:i.index-s.index}),t.map(({node:i})=>{var s;return(s=i.children)!=null&&s.length?{...i,children:P(i.children,e)}:i})}const x=50,re=2;function ne(n){const e=[],t=n.map(s=>({node:s,depth:0,parentId:null}));let i=0;for(;i<t.length;){const s=t[i++],{node:r,depth:o,parentId:a}=s,d=!!(r.children&&r.children.length>0);if(e.push({id:r.id,depth:o,parentId:a,hasChildrenInSource:d}),d)for(const l of r.children)t.push({node:l,depth:o+1,parentId:r.id})}return e}function oe(n,e=x,t=re){const i=new Set;for(const s of n)if(!(s.depth>t)&&(i.add(s.id),i.size>=e))break;return i}function ae(n,e=x){const t=new Set;for(const i of n)if(i.depth===0&&(t.add(i.id),t.size>=e))break;return t}function le(n,e,t){const i=[];for(const s of n)if(s.depth===0&&!e.has(s.id)&&(i.push(s.id),i.length>=t))break;return i}function de(n,e){return n.some(t=>t.depth===0&&!e.has(t.id))}function E(n,e,t){return L(e,n).some(i=>!t.has(i))}function F(n,e){if(!n)return;let t=n.node.id,i=e.get(t);for(;(i==null?void 0:i.parentId)!=null;)t=i.parentId,i=e.get(t);return t}function he(n,e,t,i,s,r){const o=Math.min(Math.max(0,e),Math.max(0,n.length-1));for(let a=o;a>=0;a--){const d=n[a];if(t.has(d.node.id)&&E(d.node.id,i,s))return F(d,r)}return F(n[o],r)}function ce(n,e){const t=[];let i=e.get(n);for(;(i==null?void 0:i.parentId)!=null;)t.push(i.parentId),i=e.get(i.parentId);return t}function q(n,e,t,i){const s=[],r=o=>{s.length>=t||!e.has(o)&&!s.includes(o)&&s.push(o)};if(i!=null){const o=L(n,i);for(const a of o)r(a)}for(const o of n)if(r(o.id),s.length>=t)break;return s}function L(n,e){const t=new Map;for(const r of n){const o=r.parentId;t.has(o)||t.set(o,[]),t.get(o).push(r.id)}const i=[],s=[e];for(;s.length>0;){const r=s.pop();i.push(r);const o=t.get(r);if(o!=null&&o.length)for(let a=o.length-1;a>=0;a--)s.push(o[a])}return i}function ue(n,e,t){return L(n,e).filter(i=>!t.has(i))}function fe(n,e,t,i=x){return ue(n,e,t).slice(0,i)}function k(n){var e;return{...n,selectedColumns:n.selectedColumns?[...n.selectedColumns]:void 0,disabledColumns:n.disabledColumns?[...n.disabledColumns]:void 0,children:(e=n.children)==null?void 0:e.map(t=>k(t)),data:n.data}}function _e(n){const e=new Map,t=i=>{var s;e.set(i.id,i),(s=i.children)==null||s.forEach(t)};return n.forEach(t),e}function pe(n,e,t){const i=s=>{if(!e.has(s.id))return null;const r=t.get(s.id)??s,o=(r.children??[]).map(d=>i(d)).filter(d=>d!==null),a=k(r);return a.children=o.length>0?o:void 0,a};return n.map(s=>i(s)).filter(s=>s!==null)}function B(n){const e=[],t=n.searchTerm.trim().toLowerCase(),i=(s,r,o,a,d=!1)=>{const l=n.hasSearch&&!d?s.filter(c=>n.searchVisibleIds.has(c.id)):s;for(const c of l){const v=n.hasSearch&&!!t&&c.label.toLowerCase().includes(t),w=V(c.label,t,o,a),m=a||!!v;if(e.push({node:c,level:r,revealSubtree:w,parentLabelMatched:m,hasChildrenInSource:n.sourceHasChildren(c.id)}),!n.expandedIds.has(c.id))continue;const O=n.getSourceChildren??($=>{var j;return(j=n.items.find(ye=>ye.id===$))==null?void 0:j.children}),I=!n.hasSearch||w&&R(c.label,t,a,c.id,n.searchVisibleIds,O)?c.children??[]:N(c,n.searchVisibleIds,n.searchTerm);I.length>0&&i(I,r+1,w,m,!0)}};return i(n.items,0,!1,!1),e}function y(n,e){for(const t of n)if(!e.has(t))return!0;return!1}function U(n,e,t,i=x){const s=[],r=o=>{s.length>=i||!e.has(o)&&!s.includes(o)&&s.push(o)};for(const o of n)if(!e.has(o)){r(o);for(const a of ce(o,t))r(a);if(s.length>=i)break}return s}function H(n,e,t,i=x){const s=U(n,e,t,i);return s.length===0?!1:(s.forEach(r=>e.add(r)),!0)}function we(n,e){return e?`Collapse ${n}`:`Expand ${n}`}function ve(n){return`Select ${n}`}function me(n,e){return`${n}, ${e}`}function xe(n){return n===0?"No results found":n===1?"1 result found":`${n} results found`}var be=Object.defineProperty,ge=Object.getOwnPropertyDescriptor,f=(n,e,t,i)=>{for(var s=i>1?void 0:i?ge(e,t):e,r=n.length-1,o;r>=0;r--)(o=n[r])&&(s=(i?o(e,t,s):o(s))||s);return i&&s&&be(e,t,s),s};const T=class T extends h.LitElement{constructor(){super(...arguments),this._items=[],this._expandedIds=new Set,this._searchTerm="",this._searchStatusMessage="",this._searchVisibleIds=new Set,this._searchUserCollapsedIds=new Set,this._searchManualExpandedIds=new Set,this._expandedIdsBeforeSearch=null,this._flatRows=[],this._loadedIds=new Set,this._activeRowId=null,this._sourceItems=[],this._lazyItemsSourceRef=null,this._treeIndex=[],this._indexById=new Map,this._sourceById=new Map,this._lazyScrollLoading=!1,this._searchIndex=null,this._searchIndexSourceRef=null,this._searchDebounceTimer=null}get options(){return this._options}set options(e){const t=this._options;t!==e&&(this._options=e,e&&(this._applyOptionsChange(),this._generateLightDomIcons()),this.requestUpdate("options",t))}_isLazyEnabled(){var e;return!!((e=this.options)!=null&&e.lazyLoad)}_getLazyPageSize(){var t;const e=(t=this.options)==null?void 0:t.lazyLoadPageSize;return e==null||!Number.isFinite(e)?x:Math.max(1,Math.floor(e))}_hasColumnPermissions(){var e,t,i;return((e=this.options)==null?void 0:e.showColumnPermissions)===!1?!1:(((i=(t=this.options)==null?void 0:t.columns)==null?void 0:i.length)??0)>0}_showRowSelection(){var e;return!!((e=this.options)!=null&&e.showRowSelection)}_showNodeIcons(){var e;return((e=this.options)==null?void 0:e.showNodeIcons)!==!1}_usesSimpleRowSelection(){return this._showRowSelection()&&!this._hasColumnPermissions()}_applyItemsFromOptions(e){var i;let t=e.map(s=>k(s));return(i=this.options)!=null&&i.sortSelectedFirst&&(t=P(t,this._usesSimpleRowSelection())),t}_applyOptionsChange(){if(this.options){if(this._isLazyEnabled()){this.options.items!==this._lazyItemsSourceRef&&(this._initLazyState(),this._resetSearchDerivedState(),this._searchTerm.trim()&&this._recomputeSearchFilter());return}if(this._items=this._applyItemsFromOptions(this.options.items),this._invalidateSearchIndex(),this._activeRowId=null,this._resetSearchDerivedState(),this._searchTerm.trim()){this._recomputeSearchFilter();return}this.options.defaultExpandedLevel!==void 0&&this._expandedIds.size===0&&this._expandToLevel(this._items,0,this.options.defaultExpandedLevel),this._syncActiveRowWithVisibleRows()}}_initLazyState(){var i;this._lazyItemsSourceRef=this.options.items,this._sourceItems=this._applyItemsFromOptions(this.options.items),this._invalidateSearchIndex(),this._treeIndex=ne(this._sourceItems),this._indexById=new Map(this._treeIndex.map(s=>[s.id,s])),this._sourceById=_e(this._sourceItems);const e=(i=this.options)==null?void 0:i.defaultExpandedLevel,t=this._getLazyPageSize();this._loadedIds=e!==void 0&&e>0?oe(this._treeIndex,t):ae(this._treeIndex,t),this._expandedIds=new Set,this._activeRowId=null,this._rebuildMaterializedItems(),e!==void 0&&e>0&&this._applyLazyInitialExpansion(e),this._commitLazyRows()}_applyLazyInitialExpansion(e){this._expandToLevel(this._items,0,e),this._expandedIds=new Set(this._expandedIds)}_rebuildMaterializedItems(){this._items=pe(this._sourceItems,this._loadedIds,this._sourceById)}_selectionRoots(){return this._isLazyEnabled()?this._sourceItems:this._items}_selectionNode(e){return this._isLazyEnabled()?this._sourceById.get(e.id)??e:e}_invalidateSearchIndex(){this._searchIndex=null,this._searchIndexSourceRef=null}_resetSearchDerivedState(){this._searchVisibleIds=new Set,this._searchUserCollapsedIds=new Set,this._searchManualExpandedIds=new Set,this._searchStatusMessage=""}_ensureSearchIndex(){const e=this._selectionRoots();return this._searchIndex&&this._searchIndexSourceRef===e?this._searchIndex:(this._searchIndexSourceRef=e,this._searchIndex=C(e),this._searchIndex)}disconnectedCallback(){super.disconnectedCallback(),this._searchDebounceTimer!==null&&(clearTimeout(this._searchDebounceTimer),this._searchDebounceTimer=null)}_findNodeById(e,t){for(const i of e){if(i.id===t)return i;if(i.children){const s=this._findNodeById(i.children,t);if(s)return s}}}_forEachInSubtree(e,t,i){const s=this._findNodeById(e,t);if(!s)return;const r=o=>{var a;i(o),(a=o.children)==null||a.forEach(r)};r(s)}_getSourceChildren(e){const t=this._isLazyEnabled()?this._sourceById.get(e):this._findNodeById(this._items,e);return t==null?void 0:t.children}_loadMoreNodes(e){if(!this._isLazyEnabled())return;const t=this._getLazyPageSize();let i;if(this._isSearchActive())if(y(this._searchVisibleIds,this._loadedIds))i=U(this._searchVisibleIds,this._loadedIds,this._indexById,t);else if(e!=null&&this._hasExclusiveSearchFolderWithUnloadedChildren())i=q(this._treeIndex,this._loadedIds,t,e);else return;else e!=null?i=q(this._treeIndex,this._loadedIds,t,e):i=le(this._treeIndex,this._loadedIds,t);i.length!==0&&(i.forEach(s=>this._loadedIds.add(s)),this._loadedIds=new Set(this._loadedIds),this._rebuildMaterializedItems(),this._commitLazyRows())}_loadSubtreeForExpand(e){const t=fe(this._treeIndex,e,this._loadedIds,this._getLazyPageSize());t.length!==0&&(t.forEach(i=>this._loadedIds.add(i)),this._loadedIds=new Set(this._loadedIds),this._rebuildMaterializedItems())}_sourceHasChildren(e){var t,i;return!!((i=(t=this._sourceById.get(e))==null?void 0:t.children)!=null&&i.length)}_commitLazyRows(){this._isLazyEnabled()&&this._syncFlatRows()}_syncFlatRows(){this._flatRows=B({items:this._items,expandedIds:this._expandedIds,hasSearch:!!this._searchTerm.trim(),searchTerm:this._searchTerm,searchVisibleIds:this._searchVisibleIds,sourceHasChildren:e=>this._sourceHasChildren(e),getSourceChildren:e=>this._getSourceChildren(e)}),this._syncActiveRowWithVisibleRows()}_setActiveRow(e){this._activeRowId!==e&&(this._activeRowId=e)}_syncActiveRowWithVisibleRows(){const e=this._getVisibleTreeRows();if(e.length===0){this._activeRowId!==null&&(this._activeRowId=null);return}const t=e.some(i=>i.node.id===this._activeRowId);(this._activeRowId===null||!t)&&(this._activeRowId=e[0].node.id)}_getRowTabIndex(e){const t=this._getVisibleTreeRows();if(t.length===0)return-1;const i=this._activeRowId??t[0].node.id;return e===i?0:-1}_rowDomId(e){return`row-${String(e)}`}_rowSelector(e){return`#${CSS.escape(this._rowDomId(e))}`}_isSearchActive(){return!!this._searchTerm.trim()}_getSearchScrollTargetIndex(){const e=this._searchTerm.trim().toLowerCase();if(!e||this._flatRows.length===0)return 0;const t=this._flatRows.map((r,o)=>({row:r,index:o})).filter(({row:r})=>g(r.node.label,e));if(t.length===0)return 0;const i=t.reduce((r,o)=>o.row.level>=r.row.level?o:r),[s]=t;if(t.length>1&&s.row.hasChildrenInSource&&this._expandedIds.has(s.row.node.id)){const r=t.find(({row:o})=>o.level===s.row.level+1&&o.node.label.toLowerCase()===s.row.node.label.toLowerCase());if(r)return r.index}return i.index}_loadUntilSearchTargetVisible(){let e=0;for(;e++<100&&!(this._getSearchScrollTargetIndex()<this._flatRows.length||!y(this._searchVisibleIds,this._loadedIds)&&!this._hasExpandedUnloadedSubtree());){if(y(this._searchVisibleIds,this._loadedIds)){if(!H(this._searchVisibleIds,this._loadedIds,this._indexById,this._getLazyPageSize()))break}else break;this._loadedIds=new Set(this._loadedIds),this._rebuildMaterializedItems(),this._commitLazyRows()}}_scrollToSearchTarget(){!this._isLazyEnabled()||!this._isSearchActive()||this.updateComplete.then(()=>{var i;const e=(i=this.shadowRoot)==null?void 0:i.querySelector("lit-virtualizer"),t=this._getSearchScrollTargetIndex();!(e!=null&&e.scrollToIndex)||t<0||e.scrollToIndex(t,"start")})}_hasExpandedUnloadedSubtree(){for(const e of this._expandedIds)if(E(e,this._treeIndex,this._loadedIds))return!0;return!1}_hasExclusiveSearchFolderWithUnloadedChildren(){if(!this._isSearchActive())return!1;const e=this._searchTerm.trim();if(!e)return!1;for(const t of this._expandedIds){const i=this._sourceById.get(t);if(i&&E(t,this._treeIndex,this._loadedIds)&&R(i.label,e,!1,t,this._searchVisibleIds,s=>this._getSourceChildren(s)))return!0}return!1}_shouldLoadMoreOnScroll(){return this._isLazyEnabled()?this._isSearchActive()?y(this._searchVisibleIds,this._loadedIds)||this._hasExclusiveSearchFolderWithUnloadedChildren():this._hasExpandedUnloadedSubtree()?this._treeIndex.some(e=>!this._loadedIds.has(e.id)):de(this._treeIndex,this._loadedIds):!1}_getLazyLoadPriorityRootId(e){if(!(!this._isSearchActive()&&!this._hasExpandedUnloadedSubtree()))return he(this._flatRows,e,this._expandedIds,this._treeIndex,this._loadedIds,this._indexById)}_getScrollPrefetchMargin(){return Math.min(20,Math.max(5,Math.floor(this._getLazyPageSize()/4)))}_onVirtualizerVisibilityChanged(e){const i=e.last;if(i==null||!this._shouldLoadMoreOnScroll()||this._lazyScrollLoading)return;const s=Math.max(0,this._flatRows.length-this._getScrollPrefetchMargin());i<s||(this._lazyScrollLoading=!0,this._loadMoreNodes(this._getLazyLoadPriorityRootId(i)),this.updateComplete.then(()=>{this._lazyScrollLoading=!1}))}_getTreeAriaLabel(){var e,t;return((t=(e=this.options)==null?void 0:e.title)==null?void 0:t.trim())||"Treeview"}_renderTreeRow(e,t,i){const{isExpanded:s,hasChildren:r,isRowHighlighted:o,isSelectable:a}=i;return h.html`
2
+ <div
3
+ id=${this._rowDomId(e.id)}
4
+ role="treeitem"
5
+ aria-level=${t+1}
6
+ aria-expanded=${r?s?"true":"false":h.nothing}
7
+ class=${b.classMap({"node-row":!0,selectable:a,selected:o})}
8
+ style="--treeview-row-level: ${t}"
9
+ tabindex=${this._getRowTabIndex(e.id)}
10
+ @mousedown=${d=>d.preventDefault()}
11
+ @focus=${()=>this._setActiveRow(e.id)}
12
+ @keydown=${d=>this._handleRowKeyDown(d,e)}
13
+ @focusout=${this._handleRowFocusOut}
14
+ >
15
+ <div class="node-info">
16
+ ${this._renderRowSelectionCheckbox(e)}
17
+ ${this._renderExpanderCell(e,s,r)}
18
+ ${this._renderNodeIconCell(e)}
19
+ <span class="node-text" title="${e.label}">${e.label}</span>
11
20
  </div>
21
+ ${this._renderColumnCheckboxes(e)}
12
22
  </div>
13
- `}};S.styles=a.unsafeCSS(M);let g=S;k([l.property({type:String,reflect:!0})],g.prototype,"size"),k([l.property({type:String,reflect:!0})],g.prototype,"border"),k([l.property({type:Boolean,reflect:!0})],g.prototype,"passwordToggle"),k([l.property({type:Boolean,reflect:!0})],g.prototype,"clearable"),k([l.state()],g.prototype,"showPassword"),customElements.get("nyx-input")||customElements.define("nyx-input",g);const H=':host{--checkbox-container-gap: var(--nyx-sizing-1);--checkbox-container-color: var(--nyx-color-neutral-content-primary);--checkbox-container-font-family: var(--nyx-font-family-font-family);--checkbox-container-font-size: var(--nyx-label-medium-font-size);--checkbox-container-line-height: var(--nyx-label-medium-line-height);--checkbox-container-disabled-color: var(--nyx-color-neutral-content-disabled);--checkbox-background: var(--nyx-color-neutral-background-primary);--checkbox-border: 1px solid var(--nyx-color-neutral-border-primary);--checkbox-disabled-border: 1px solid var(--nyx-color-neutral-border-disable);--checkbox-hover-border: 1px solid var(--nyx-color-brand-border-hover);--checkbox-checked-background: var(--nyx-color-brand-background-default);--checkbox-background-hover: var(--nyx-color-neutral-content-primary-inverse);--checkbox-checked-color: var(--nyx-color-neutral-content-primary-inverse);--checkbox-checked-disabled-background: var(--nyx-color-neutral-background-disable);--checkbox-checked-disabled-color: var(--nyx-color-neutral-content-disabled);--checkbox-checked-hover-background: var(--nyx-color-brand-background-hover);box-sizing:border-box;display:inline-flex}*{box-sizing:inherit}::slotted(input[type="checkbox"]){position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.container{display:inline-flex;justify-content:center;align-items:center;gap:var(--checkbox-container-gap);color:var(--checkbox-container-color);font-family:var(--checkbox-container-font-family);font-size:var(--checkbox-container-font-size);font-style:normal;font-weight:400;line-height:var(--checkbox-container-line-height);cursor:pointer}.component-subtitle{color:var(--nyx-color-neutral-content-tertiary);font-family:var(--nyx-font-family-font-family);font-size:var(--nyx-paragraph-large-font-size);line-height:var(--nyx-paragraph-large-line-height);display:block;margin-top:-8px;margin-bottom:16px}.container[disabled]{color:var(--checkbox-container-disabled-color)}.container:focus-visible:not([disabled]),.container:focus-within:not([disabled]){outline:2px solid var(--checkbox-container-color);outline-offset:2px;border-radius:1px}.container:focus-visible .checkbox:not([disabled]),.container:focus-within .checkbox:not([disabled]){border:var(--checkbox-hover-border);background-color:var(--checkbox-background-hover)}.container:focus-visible .checkbox.checked:not([disabled]),.container:focus-visible .checkbox.indeterminate:not([disabled]),.container:focus-within .checkbox.checked:not([disabled]),.container:focus-within .checkbox.indeterminate:not([disabled]){background-color:var(--checkbox-checked-hover-background);border-color:transparent}.checkbox{display:inline-flex;gap:var(--checkbox-container-gap);padding:1px;justify-content:center;align-items:center;cursor:pointer;border-radius:4px;background-color:var(--checkbox-background);border:var(--checkbox-border)}.checkbox nyx-icon{opacity:0;--nyx-icon-size: var(--checkbox-container-font-size)}.checkbox.checked nyx-icon,.checkbox.indeterminate nyx-icon{opacity:1}.checkbox[disabled]{border:var(--checkbox-disabled-border);background-color:var(--checkbox-checked-disabled-background);color:var(--checkbox-checked-disabled-color);cursor:default}.container:hover .checkbox:not([disabled]){border:var(--checkbox-hover-border);background-color:var(--checkbox-background-hover)}.checkbox.checked,.checkbox.indeterminate{background-color:var(--checkbox-checked-background);color:var(--checkbox-checked-color);border:1px solid transparent}.checkbox[disabled].checked,.checkbox[disabled].indeterminate{border:var(--checkbox-disabled-border);background-color:var(--checkbox-checked-disabled-background);color:var(--checkbox-checked-disabled-color)}.container:hover .checkbox.checked:not([disabled]),.container:hover .checkbox.indeterminate:not([disabled]){background-color:var(--checkbox-checked-hover-background);border-color:transparent}';var U=Object.defineProperty,_=(c,o,e,n)=>{for(var t=void 0,r=c.length-1,i;r>=0;r--)(i=c[r])&&(t=i(o,e,t)||t);return t&&U(o,e,t),t};const $=class $ extends a.LitElement{constructor(){super(...arguments),this.checked=!1,this.indeterminate=!1,this.disabled=!1}updated(o){super.updated(o);const e=this._slottedInputs[0];e&&(o.has("checked")&&e.checked!==this.checked&&(e.checked=this.checked),o.has("disabled")&&(e.disabled=this.disabled,this.disabled?e.setAttribute("tabindex","-1"):e.removeAttribute("tabindex")))}_toggleCheck(){if(this.disabled)return;this.checked=!this.checked,this.indeterminate=!1;const o=this._slottedInputs[0];o&&(o.checked=this.checked,o.dispatchEvent(new Event("change",{bubbles:!0})))}render(){const o={checkbox:!0,checked:this.checked,indeterminate:this.indeterminate,disabled:this.disabled};return a.html`
14
- <div class="container" ?disabled=${this.disabled} @click=${this._toggleCheck}>
15
- <div class=${z.classMap(o)} ?disabled=${this.disabled}>
16
- <nyx-icon svg=${this.checked?h.check:this.indeterminate?h.minus:h.check}></nyx-icon>
17
- </div>
18
- <slot name="input"></slot>
19
- <slot></slot>
23
+ `}_renderExpanderCell(e,t,i){return i?h.html`
24
+ <nyx-button
25
+ class="expander"
26
+ size="small"
27
+ button-icon
28
+ tabindex="-1"
29
+ hierarchy="ghost"
30
+ aria-label=${we(e.label,t)}
31
+ @click=${()=>this._toggleExpand(e,!1)}
32
+ @keydown=${s=>{(s.key==="Enter"||s.key===" ")&&(s.preventDefault(),s.stopPropagation(),this._toggleExpand(e,!0))}}
33
+ >
34
+ <nyx-icon
35
+ slot="icon"
36
+ class=${b.classMap({expanded:t})}
37
+ .svg=${M.chevronRightRegular}
38
+ ></nyx-icon>
39
+ </nyx-button>
40
+ `:h.html`<span class="expander-placeholder" aria-hidden="true"></span>`}_renderNodeTypeIcon(e){const t=e.icon;return t?typeof t=="string"?h.html`<nyx-icon name=${t} variant="regular"></nyx-icon>`:h.html`
41
+ <nyx-icon
42
+ name=${t.name??h.nothing}
43
+ variant=${t.variant??"regular"}
44
+ src=${t.src??h.nothing}
45
+ .svg=${t.svg}
46
+ ></nyx-icon>
47
+ `:h.nothing}_generateLightDomIcons(){var i;if(this.querySelectorAll("[data-auto-generated]").forEach(s=>s.remove()),!this.options||(this._hasColumnPermissions()&&((i=this.options.columns)==null||i.forEach((s,r)=>{s.icon&&this._createIconElement(s.icon,`generated-header-icon-${r}`)})),this._isLazyEnabled()||!this._showNodeIcons()))return;const t=s=>{var r;s.icon&&this._createIconElement(s.icon,`generated-tree-icon-${s.id}`),(r=s.children)==null||r.forEach(t)};this._items.forEach(t)}_createIconElement(e,t){const i=document.createElement("nyx-icon");let s="regular";typeof e=="string"?i.setAttribute("name",e):(e.name&&i.setAttribute("name",e.name),e.variant&&(s=e.variant),e.src&&i.setAttribute("src",e.src),e.svg&&(i.svg=e.svg)),i.setAttribute("variant",s),i.setAttribute("slot",t),i.setAttribute("data-auto-generated",""),this.appendChild(i)}_expandToLevel(e,t,i){e.forEach(s=>{t<i&&(this._expandedIds.add(s.id),s.children&&this._expandToLevel(s.children,t+1,i))})}_isColumnDisabled(e,t){return!!e.disabledColumns&&e.disabledColumns.includes(t)}_isNodeSelected(e,t){return this._isColumnDisabled(e,t)?!1:(e.selectedColumns||[]).includes(t)}_isIndeterminate(e,t){if(e=this._selectionNode(e),!e.children||e.children.length===0)return!1;const i=this._getFlatDescendants(e),s=i.filter(r=>this._isNodeSelected(r,t)).length;return s>0&&s<i.length}_allDescendantsSelected(e,t){return e=this._selectionNode(e),!e.children||e.children.length===0?this._isNodeSelected(e,t):this._getFlatDescendants(e).every(s=>this._isNodeSelected(s,t))}_getFlatDescendants(e){e=this._selectionNode(e);let t=[];return e.children&&e.children.forEach(i=>{const s=this._selectionNode(i);t.push(s),t=t.concat(this._getFlatDescendants(s))}),t}_requiredClosure(e){var a,d,l;const t=((a=this.options)==null?void 0:a.columns)??[],i=new Map(t.map(c=>[c.id,c])),s=[],r=new Set([e]),o=[...((d=i.get(e))==null?void 0:d.requires)??[]];for(;o.length;){const c=o.pop();r.has(c)||(r.add(c),s.push(c),o.push(...((l=i.get(c))==null?void 0:l.requires)??[]))}return s}_dependentsClosure(e){var o;const t=((o=this.options)==null?void 0:o.columns)??[],i=[],s=new Set([e]),r=[e];for(;r.length;){const a=r.pop();for(const d of t)(d.requires??[]).includes(a)&&!s.has(d.id)&&(s.add(d.id),i.push(d.id),r.push(d.id))}return i}_canEnableColumn(e,t){return this._isColumnDisabled(e,t)?!1:this._requiredClosure(t).every(i=>!this._isColumnDisabled(e,i))}_handleCheck(e,t){const i=this._selectionNode(e);if(this._isColumnDisabled(i,t))return;const r=!this._isNodeSelected(i,t),o=this._requiredClosure(t),a=r?[t,...o]:[t,...this._dependentsClosure(t)];this._forEachInSubtree(this._selectionRoots(),e.id,d=>{r&&o.some(c=>this._isColumnDisabled(d,c))||a.forEach(l=>this._toggleNodeState(d,l,r))}),a.forEach(d=>this._updateParents(this._selectionRoots(),e.id,d)),this._triggerChange()}_toggleNodeState(e,t,i){if(this._isColumnDisabled(e,t))return;e.selectedColumns||(e.selectedColumns=[]);const s=e.selectedColumns.indexOf(t);i&&s===-1?e.selectedColumns.push(t):!i&&s>-1&&e.selectedColumns.splice(s,1)}_updateParents(e,t,i){for(const s of e)if(s.children&&s.children.some(r=>r.id===t||this._updateParents(s.children,t,i))){const r=s.children.every(o=>this._allDescendantsSelected(o,i));return this._toggleNodeState(s,i,r&&this._canEnableColumn(s,i)),!0}return!1}_isRowAllSelected(e){var i;if(e=this._selectionNode(e),!((i=this.options)!=null&&i.columns))return!1;const t=this.options.columns.every(s=>this._isColumnDisabled(e,s.id)?!0:this._isNodeSelected(e,s.id));return e.children&&e.children.length>0?t&&e.children.every(s=>this._isRowAllSelected(s)):t}_isRowIndeterminate(e){var s;if(e=this._selectionNode(e),this._isRowAllSelected(e)||!((s=this.options)!=null&&s.columns))return!1;const t=this.options.columns.some(r=>this._isNodeSelected(e,r.id)),i=e.children?e.children.some(r=>this._isRowAllSelected(r)||this._isRowIndeterminate(r)):!1;return t||i}_isSimpleRowAllSelected(e){var t;return e=this._selectionNode(e),(t=e.children)!=null&&t.length?e.children.every(i=>this._isSimpleRowAllSelected(i)):!!e.selected}_isSimpleRowIndeterminate(e){var s;return e=this._selectionNode(e),this._isSimpleRowAllSelected(e)||!((s=e.children)!=null&&s.length)?!1:this._getFlatDescendants(e).filter(r=>r.selected).length>0}_setSimpleRowSelected(e,t){this._forEachInSubtree(this._selectionRoots(),e,i=>{i.selected=t})}_updateSimpleRowParents(e,t){var i;for(const s of e)if((i=s.children)!=null&&i.some(r=>r.id===t||this._updateSimpleRowParents(s.children,t)))return s.selected=s.children.every(r=>this._isSimpleRowAllSelected(r)),!0;return!1}_isRowCheckboxChecked(e){const t=this._selectionNode(e);return this._usesSimpleRowSelection()?this._isSimpleRowAllSelected(t):this._isRowAllSelected(t)}_isRowCheckboxIndeterminate(e){const t=this._selectionNode(e);return this._usesSimpleRowSelection()?this._isSimpleRowIndeterminate(t):this._isRowIndeterminate(t)}_handleRowCheck(e){var s;const i=!this._isRowCheckboxChecked(e);this._usesSimpleRowSelection()?(this._setSimpleRowSelected(e.id,i),this._updateSimpleRowParents(this._selectionRoots(),e.id)):(this._toggleRowRecursively(e.id,i),(s=this.options)!=null&&s.columns&&this.options.columns.forEach(r=>{this._updateParents(this._selectionRoots(),e.id,r.id)})),this._triggerChange()}_applyRowColumnsToNode(e,t){var i;(i=this.options)!=null&&i.columns&&(t?this.options.columns.forEach(s=>{this._canEnableColumn(e,s.id)&&(e.selectedColumns||(e.selectedColumns=[]),e.selectedColumns.includes(s.id)||e.selectedColumns.push(s.id))}):e.selectedColumns=(e.selectedColumns??[]).filter(s=>this._isColumnDisabled(e,s)))}_toggleRowRecursively(e,t){this._forEachInSubtree(this._selectionRoots(),e,i=>{this._applyRowColumnsToNode(i,t)})}_triggerChange(){if(this._isLazyEnabled()){this._rebuildMaterializedItems(),this._commitLazyRows(),this.onChange({items:this._sourceItems},{bubbles:!0,composed:!0});return}this._items=[...this._items],this._invalidateSearchIndex(),this._searchTerm.trim()&&this._recomputeSearchFilter(),this.onChange({items:this._items},{bubbles:!0,composed:!0})}_handleSearchInput(e){const t=e.target.value,i=this._searchTerm,s=t.trim();if(this._searchDebounceTimer!==null&&(clearTimeout(this._searchDebounceTimer),this._searchDebounceTimer=null),!s&&i.trim()){this._applySearchTerm(t,i);return}this._searchDebounceTimer=setTimeout(()=>{this._searchDebounceTimer=null,this._applySearchTerm(t,i)},X)}_applySearchTerm(e,t){const i=t.trim(),s=e.trim();!i&&s?(this._expandedIdsBeforeSearch=new Set(this._expandedIds),this._searchManualExpandedIds=new Set,this._searchUserCollapsedIds=new Set):i&&!s?(this._searchUserCollapsedIds=new Set,this._searchManualExpandedIds=new Set):i&&s&&i.toLowerCase()!==s.toLowerCase()&&(this._searchUserCollapsedIds=new Set,this._searchManualExpandedIds=new Set),this._searchTerm=e,this._recomputeSearchFilter()}_recomputeSearchFilter(){const e=this._searchTerm.trim();if(!e){this._searchVisibleIds=new Set,this._expandedIdsBeforeSearch&&(this._expandedIds=new Set(this._expandedIdsBeforeSearch),this._expandedIdsBeforeSearch=null),this._isLazyEnabled()?this._commitLazyRows():this._syncActiveRowWithVisibleRows(),this._updateSearchStatusMessage();return}const t=this._ensureSearchIndex(),{visibleIds:i,expandIds:s}=te(t,e,this._searchUserCollapsedIds),r=new Set(s);this._searchManualExpandedIds.forEach(o=>{this._searchUserCollapsedIds.has(o)||r.add(o)}),this._searchVisibleIds=i,this._expandedIds=r,this._isLazyEnabled()?(H(i,this._loadedIds,this._indexById,this._getLazyPageSize())&&(this._loadedIds=new Set(this._loadedIds),this._rebuildMaterializedItems()),this._commitLazyRows(),this._loadUntilSearchTargetVisible(),this._scrollToSearchTarget()):this._syncActiveRowWithVisibleRows(),this._updateSearchStatusMessage()}_updateSearchStatusMessage(){const e=this._searchTerm.trim();if(!e){this._searchStatusMessage="";return}const t=this._ensureSearchIndex();this._searchStatusMessage=xe(ee(t,e))}async _toggleExpand(e,t=!1){if(!(this._isLazyEnabled()?this._sourceHasChildren(e.id):!!(e.children&&e.children.length>0)))return;const s=this._expandedIds.has(e.id);s?(this._expandedIds.delete(e.id),this._searchTerm.trim()&&(this._searchUserCollapsedIds.add(e.id),this._searchUserCollapsedIds=new Set(this._searchUserCollapsedIds),this._searchManualExpandedIds.delete(e.id),this._searchManualExpandedIds=new Set(this._searchManualExpandedIds))):(this._expandedIds.add(e.id),this._searchTerm.trim()&&(this._searchManualExpandedIds.add(e.id),this._searchManualExpandedIds=new Set(this._searchManualExpandedIds),this._searchUserCollapsedIds.delete(e.id),this._searchUserCollapsedIds=new Set(this._searchUserCollapsedIds)),this._isLazyEnabled()&&this._loadSubtreeForExpand(e.id)),this._expandedIds=new Set(this._expandedIds),this._isLazyEnabled()?this._commitLazyRows():this._syncActiveRowWithVisibleRows(),!s&&t&&(await this.updateComplete,this._focusFirstVisibleChild(e.id))}_nodeHasChildren(e){return this._isLazyEnabled()?this._sourceHasChildren(e.id):!!(e.children&&e.children.length>0)}_getVisibleTreeRows(){return this._isLazyEnabled()?this._flatRows:B({items:this._items,expandedIds:this._expandedIds,hasSearch:this._isSearchActive(),searchTerm:this._searchTerm,searchVisibleIds:this._searchVisibleIds,sourceHasChildren:e=>{var t;return!!((t=this._getSourceChildren(e))!=null&&t.length)},getSourceChildren:e=>this._getSourceChildren(e)})}_getParentId(e){var s;if(this._isLazyEnabled()){const r=(s=this._indexById.get(e))==null?void 0:s.parentId;return r??void 0}let t;const i=(r,o)=>{for(const a of r){if(a.id===e)return t=o??void 0,!0;if(a.children&&i(a.children,a.id))return!0}return!1};return i(this._items,null),t}_focusRowById(e){this._setActiveRow(e),this.updateComplete.then(()=>{var i,s,r;if(this._isLazyEnabled()){const o=this._flatRows.findIndex(a=>a.node.id===e);if(o>=0){const a=(i=this.shadowRoot)==null?void 0:i.querySelector("lit-virtualizer");(s=a==null?void 0:a.scrollToIndex)==null||s.call(a,o,"nearest")}}const t=(r=this.shadowRoot)==null?void 0:r.querySelector(this._rowSelector(e));t==null||t.focus()})}_focusFirstVisibleChild(e){const t=this._getVisibleTreeRows(),i=t.findIndex(r=>r.node.id===e);if(i<0)return;const s=t[i].level;for(let r=i+1;r<t.length&&!(t[r].level<=s);r++)if(t[r].level===s+1){this._focusRowById(t[r].node.id);return}}async _handleRowKeyDown(e,t){var d;const i=e.currentTarget;if(e.target!==i)return;const s=this._getVisibleTreeRows(),r=s.findIndex(l=>l.node.id===t.id),o=this._nodeHasChildren(t),a=this._expandedIds.has(t.id);if(e.key==="ArrowDown"||e.key==="ArrowUp"){const l=e.key==="ArrowDown"?r+1:r-1;l>=0&&l<s.length&&(e.preventDefault(),this._focusRowById(s[l].node.id));return}if(e.key==="Home"||e.key==="End"){if(s.length===0)return;e.preventDefault();const l=e.key==="Home"?s[0]:s[s.length-1];this._focusRowById(l.node.id);return}if(e.key==="ArrowRight"){if(!o)return;if(e.preventDefault(),!a){await this._toggleExpand(t,!0);return}this._focusFirstVisibleChild(t.id);return}if(e.key==="ArrowLeft"){if(e.preventDefault(),o&&a){await this._toggleExpand(t,!1),i.focus();return}const l=this._getParentId(t.id);l!==void 0&&this._focusRowById(l);return}if(e.key==="Enter"||e.key===" "){e.preventDefault(),this._enableChildren(i);const l=i.querySelector("nyx-checkbox input, nyx-button:not([disabled])");if(l)if(l instanceof HTMLInputElement)l.focus();else{const c=(d=l.shadowRoot)==null?void 0:d.querySelector("button");c==null||c.focus()}return}e.key==="Escape"&&(e.preventDefault(),e.stopPropagation(),this._disableChildren(i),i.focus())}_handleRowFocusOut(e){const t=e.currentTarget;t.contains(e.relatedTarget)||this._disableChildren(t)}_enableChildren(e){const t=e.querySelectorAll('input[slot="input"]'),i=e.querySelectorAll("nyx-button");t.forEach(s=>s.setAttribute("tabindex","0")),i.forEach(s=>s.removeAttribute("tabindex"))}_disableChildren(e){const t=e.querySelectorAll('input[slot="input"]'),i=e.querySelectorAll("nyx-button");t.forEach(s=>s.setAttribute("tabindex","-1")),i.forEach(s=>s.setAttribute("tabindex","-1"))}_clearAllFocus(){var i,s;const e=(i=this.shadowRoot)==null?void 0:i.activeElement;e==null||e.blur();const t=(s=this.shadowRoot)==null?void 0:s.querySelectorAll(".node-row");t==null||t.forEach(r=>{this._disableChildren(r)})}_renderRowSelectionCheckbox(e){return this._showRowSelection()?h.html`
48
+ <div class="row-checkbox">
49
+ <nyx-checkbox
50
+ aria-label=${ve(e.label)}
51
+ ?checked=${this._isRowCheckboxChecked(e)}
52
+ ?indeterminate=${this._isRowCheckboxIndeterminate(e)}
53
+ @click=${t=>{t.stopPropagation(),this._handleRowCheck(e)}}
54
+ >
55
+ <input type="checkbox" slot="input" tabindex="-1" />
56
+ </nyx-checkbox>
57
+ </div>
58
+ `:h.nothing}_renderNodeIconCell(e){return this._showNodeIcons()?h.html`
59
+ <div class="node-type-icon-wrapper">
60
+ ${this._isLazyEnabled()?this._renderNodeTypeIcon(e):h.html`<slot name="generated-tree-icon-${e.id}"></slot>`}
61
+ </div>
62
+ `:h.nothing}_renderColumnCheckboxes(e){return this._hasColumnPermissions()?h.html`
63
+ <div class="node-columns">
64
+ ${this.options.columns.map(t=>h.html`
65
+ <div class="col-cell">
66
+ <nyx-checkbox
67
+ aria-label=${me(t.title||`Column ${t.id}`,e.label)}
68
+ ?checked=${this._allDescendantsSelected(this._selectionNode(e),t.id)}
69
+ ?indeterminate=${this._isIndeterminate(this._selectionNode(e),t.id)}
70
+ ?disabled=${this._isColumnDisabled(this._selectionNode(e),t.id)}
71
+ @click=${i=>{if(i.stopPropagation(),this._isColumnDisabled(this._selectionNode(e),t.id)){i.preventDefault();return}this._handleCheck(this._selectionNode(e),t.id)}}
72
+ >
73
+ <input type="checkbox" slot="input" tabindex="-1" />
74
+ </nyx-checkbox>
75
+ </div>
76
+ `)}
20
77
  </div>
21
- `}};$.styles=a.unsafeCSS(H);let y=$;_([l.property({type:Boolean,reflect:!0})],y.prototype,"checked"),_([l.property({type:Boolean,reflect:!0})],y.prototype,"indeterminate"),_([l.property({type:Boolean,reflect:!0})],y.prototype,"disabled"),_([l.queryAssignedElements({slot:"input"})],y.prototype,"_slottedInputs"),customElements.get("nyx-checkbox")||customElements.define("nyx-checkbox",y);const W=":host{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;font-size:var(--nyx-icon-size, 1rem);color:var(--nyx-icon-color, currentColor)}*{box-sizing:inherit}.component-subtitle{color:var(--nyx-color-neutral-content-tertiary);font-family:var(--nyx-font-family-font-family);font-size:var(--nyx-paragraph-large-font-size);line-height:var(--nyx-paragraph-large-line-height);display:block;margin-top:-8px;margin-bottom:16px}::slotted(svg),svg{width:var(--nyx-icon-size, 1rem);height:var(--nyx-icon-size, 1rem);fill:currentColor}i{font-size:inherit;color:inherit}";var V=Object.defineProperty,m=(c,o,e,n)=>{for(var t=void 0,r=c.length-1,i;r>=0;r--)(i=c[r])&&(t=i(o,e,t)||t);return t&&V(o,e,t),t};const C=class C extends a.LitElement{constructor(){super(...arguments),this.variant="solid"}async updated(o){o.has("src")&&this.src&&await this.loadSvg()}async loadSvg(){if(this.src)try{const o=await fetch(this.src);if(!o.ok)throw new Error("Error on load SVG.");this._svgContentImported=await o.text()}catch(o){this.dispatchEvent(new CustomEvent("nyx-icon-load-error",{detail:{src:this.src,message:o instanceof Error?o.message:String(o)},bubbles:!0,composed:!0}))}}render(){if(this.svg)return a.html`${R.unsafeHTML(this.svg)}`;if(this.src)return a.html`${R.unsafeHTML(this._svgContentImported)}`;const o=[`fa-${this.name}`];this.variant&&o.push(...this.variant.split(" ").map(n=>`fa-${n}`));const e=document.createElement("i");return e.className=o.join(" "),this.shadowRoot.host.innerHTML="",this.shadowRoot.host.appendChild(e),a.html`<slot></slot>`}};C.styles=a.unsafeCSS(W);let f=C;m([l.property({type:String})],f.prototype,"name"),m([l.property({type:String})],f.prototype,"variant"),m([l.property({type:String})],f.prototype,"src"),m([l.property({type:String})],f.prototype,"svg"),m([l.state()],f.prototype,"_svgContentImported"),customElements.get("nyx-icon")||customElements.define("nyx-icon",f);const j=":host{--button-padding: var(--nyx-sizing-2);--button-gap: var(--nyx-sizing-1);--button-border-radius: var(--nyx-radii-2xs);--button-color: var(--nyx-color-neutral-content-always-white);--button-font-family: var(--nyx-font-family-font-family);--button-font-size: var(--nyx-label-medium-font-size);--button-line-height: var(--nyx-label-medium-line-height);--button-small-padding: var(--nyx-sizing-1-25);--button-small-font-size: var(--nyx-label-medium-font-size);--button-small-line-height: var(--nyx-label-medium-line-height);--button-medium-padding: var(--nyx-sizing-1-5);--button-brand-background: var(--nyx-color-brand-background-default);--button-warning-background: var(--nyx-color-warning-background-default);--button-danger-background: var(--nyx-color-danger-background-default);--button-info-background: var(--nyx-color-info-background-default);--button-success-background: var(--nyx-color-success-background-default);--button-brand-background-hover: var(--nyx-color-brand-background-hover);--button-warning-background-hover: var(--nyx-color-warning-background-hover);--button-danger-background-hover: var(--nyx-color-danger-background-hover);--button-info-background-hover: var(--nyx-color-info-background-hover);--button-success-background-hover: var(--nyx-color-success-background-hover);--button-neutral-background-hover: var(--nyx-color-neutral-background-hover);--button-brand-background-active: var(--nyx-color-brand-background-strong);--button-warning-background-active: var(--nyx-color-warning-background-strong);--button-danger-background-active: var(--nyx-color-danger-background-strong);--button-info-background-active: var(--nyx-color-info-background-strong);--button-success-background-active: var(--nyx-color-success-background-strong);--button-color-inverse: var(--nyx-color-neutral-content-primary-inverse);--button-disabled-background: var(--nyx-color-neutral-background-disable);--button-disabled-color: var(--nyx-color-neutral-content-disabled);--button-outline-border: 1px solid var(--nyx-color-neutral-border-primary);--button-outline-color: var(--nyx-color-neutral-content-primary);--button-outline-background: var(--nyx-color-neutral-background-primary);--button-outline-danger-border: 1px solid var(--nyx-color-danger-border-default);--button-outline-danger-color: var(--nyx-color-danger-content-default);--button-outline-warning-border: 1px solid var(--nyx-color-warning-border-default);--button-outline-warning-color: var(--nyx-color-warning-content-default);--button-outline-info-border: 1px solid var(--nyx-color-info-border-default);--button-outline-info-color: var(--nyx-color-info-content-default);--button-outline-success-border: 1px solid var(--nyx-color-success-border-default);--button-outline-success-color: var(--nyx-color-success-content-default);--button-outline-background-hover: var(--nyx-color-neutral-background-hover);--button-outline-border-hover: 1px solid var(--nyx-color-neutral-border-primary);--button-outline-color-hover: var(--nyx-color-neutral-content-primary);--button-outline-danger-background-hover: var(--nyx-color-danger-background-softer-hover);--button-outline-danger-border-hover: 1px solid var(--nyx-color-danger-border-softer);--button-outline-danger-color-hover: var(--nyx-color-danger-content-strong);--button-outline-warning-background-hover: var(--nyx-color-warning-background-softer-hover);--button-outline-warning-border-hover: 1px solid var(--nyx-color-warning-border-softer);--button-outline-warning-color-hover: var(--nyx-color-warning-content-strong);--button-outline-info-background-hover: var(--nyx-color-info-background-softer-hover);--button-outline-info-border-hover: 1px solid var(--nyx-color-info-border-softer);--button-outline-info-color-hover: var(--nyx-color-info-content-default);--button-outline-success-background-hover: var(--nyx-color-success-background-softer-hover);--button-outline-success-border-hover: 1px solid var(--nyx-color-success-border-softer);--button-outline-success-color-hover: var(--nyx-color-success-content-strong);--button-outline-background-active: var(--nyx-color-neutral-background-active);--button-outline-color-active: var(--nyx-color-neutral-content-primary);--button-outline-warning-background-active: var(--nyx-color-warning-background-strong);--button-outline-warning-color-active: var(--nyx-color-neutral-content-always-white);--button-outline-danger-background-active: var(--nyx-color-danger-background-strong);--button-outline-danger-color-active: var(--nyx-color-neutral-content-always-white);--button-outline-info-background-active: var(--nyx-color-info-background-strong);--button-outline-info-color-active: var(--nyx-color-neutral-content-always-white);--button-outline-success-background-active: var(--nyx-color-success-background-strong);--button-outline-success-color-active: var(--nyx-color-neutral-content-always-white);--button-outline-disabled-color: var(--nyx-color-neutral-content-disabled);--button-outline-disabled-border: 1px solid var(--nyx-color-neutral-border-disable);--button-ghost-color: var(--nyx-color-neutral-content-primary);--button-ghost-warning-color: var(--nyx-color-warning-content-default);--button-ghost-danger-color: var(--nyx-color-danger-content-default);--button-ghost-info-color: var(--nyx-color-info-content-default);--button-ghost-success-color: var(--nyx-color-success-content-default);--button-ghost-background: transparent;--button-ghost-neutral-color-hover: var(--nyx-color-neutral-content-tertiary);--button-ghost-warning-color-hover: var(--nyx-color-warning-content-hover);--button-ghost-danger-color-hover: var(--nyx-color-danger-content-hover);--button-ghost-info-color-hover: var(--nyx-color-info-content-hover);--button-ghost-success-color-hover: var(--nyx-color-success-content-hover);--button-ghost-neutral-color-active: var(--nyx-color-neutral-content-secondary);--button-ghost-warning-color-active: var(--nyx-color-warning-content-strong);--button-ghost-danger-color-active: var(--nyx-color-danger-content-strong);--button-ghost-info-color-active: var(--nyx-color-info-content-strong);--button-ghost-success-color-active: var(--nyx-color-success-content-strong);--button-loading-line-height: calc(var(--nyx-label-medium-line-height) - 4px);--button-icon-background-hover: var(--nyx-color-brand-background-softer-hover);--button-icon-border-hover: 1px solid var(--nyx-color-brand-border-hover);--button-icon-color-disabled: var(--nyx-color-neutral-content-disabled);--button-icon-border-disabled: 1px solid var(--nyx-color-neutral-border-disable);--button-icon-border-with-border: 1px solid var(--nyx-color-neutral-border-active);--button-icon-border-radius-with-border: var(--nyx-radii-2xs);--button-icon-color: var(--nyx-color-neutral-content-primary);--button-icon-border-radius: var(--nyx-radii-100);--button-icon-small-icon-font-size: var(--nyx-label-small-font-size);--button-icon-medium-icon-font-size: var(--nyx-label-medium-font-size);--button-icon-large-icon-font-size: var(--nyx-heading-h6-font-size);--button-icon-xlarge-icon-font-size: var(--nyx-heading-h4-font-size);box-sizing:border-box;display:inline-flex}:host([block]){width:100%}*{box-sizing:inherit}button.brand:not([disabled]):not(.loading):hover,button.brand:not([disabled]):not(.loading):active,button.warning:not([disabled]):not(.loading):hover,button.warning:not([disabled]):not(.loading):active,button.danger:not([disabled]):not(.loading):hover,button.danger:not([disabled]):not(.loading):active,button.info:not([disabled]):not(.loading):hover,button.info:not([disabled]):not(.loading):active,button.success:not([disabled]):not(.loading):hover,button.success:not([disabled]):not(.loading):active{color:var(--button-color-inverse)}button{display:inline-flex;padding:var(--button-padding);align-items:center;justify-content:center;gap:var(--button-gap);border-radius:var(--button-border-radius);color:var(--button-color);cursor:pointer;border:none;text-align:center;font-family:var(--button-font-family);font-size:var(--button-font-size);font-style:normal;font-weight:600;line-height:var(--button-line-height)}.component-subtitle{color:var(--nyx-color-neutral-content-tertiary);font-family:var(--nyx-font-family-font-family);font-size:var(--nyx-paragraph-large-font-size);line-height:var(--nyx-paragraph-large-line-height);display:block;margin-top:-8px;margin-bottom:16px}button.icon-right{flex-direction:row-reverse}button.small{padding:var(--button-small-padding);font-size:var(--button-small-font-size);line-height:var(--button-small-line-height)}button.medium{padding:var(--button-medium-padding)}button.block{width:100%}button.brand{background-color:var(--button-brand-background)}button.warning{background-color:var(--button-warning-background)}button.danger{background-color:var(--button-danger-background)}button.info{background-color:var(--button-info-background)}button.success{background-color:var(--button-success-background)}button.ghost{color:var(--button-ghost-color);background-color:var(--button-ghost-background)}button.ghost.danger{color:var(--button-ghost-danger-color);background-color:var(--button-ghost-background)}button.ghost.warning{color:var(--button-ghost-warning-color);background-color:var(--button-ghost-background)}button.ghost.info{color:var(--button-ghost-info-color);background-color:var(--button-ghost-background)}button.ghost.success{color:var(--button-ghost-success-color);background-color:var(--button-ghost-background)}button.brand:not([disabled]):not(.loading):hover{background-color:var(--button-brand-background-hover);color:var(--button-color-inverse)}button.warning:not([disabled]):not(.loading):hover{background-color:var(--button-warning-background-hover);color:var(--button-color-inverse)}button.danger:not([disabled]):not(.loading):hover{background-color:var(--button-danger-background-hover);color:var(--button-color-inverse)}button.info:not([disabled]):not(.loading):hover{background-color:var(--button-info-background-hover);color:var(--button-color-inverse)}button.outline:not([disabled]):not(.loading):hover{background-color:var(--button-success-background-hover);color:var(--button-color-inverse)}button.brand:not([disabled]):not(.loading):active{background-color:var(--button-brand-background-active)}button.warning:not([disabled]):not(.loading):active{background-color:var(--button-warning-background-active)}button.danger:not([disabled]):not(.loading):active{background-color:var(--button-danger-background-active)}button.info:not([disabled]):not(.loading):active{background-color:var(--button-info-background-active)}button.success:not([disabled]):not(.loading):active{background-color:var(--button-success-background-active)}button.outline:not([disabled]):not(.loading):active{background-color:var(--button-outline-background-active);color:var(--button-outline-color-active)}button.outline.warning:not([disabled]):not(.loading):active{background-color:var(--button-outline-warning-background-active);color:var(--button-outline-warning-background-active)}button.outline.danger:not([disabled]):not(.loading):active{background-color:var(--button-outline-danger-background-active);color:var(--button-outline-danger-background-active)}button.outline.info:not([disabled]):not(.loading):active{background-color:var(--button-outline-info-background-active);color:var(--button-outline-info-background-active)}button.outline.success:not([disabled]):not(.loading):active{background-color:var(--button-outline-success-background-active);color:var(--button-outline-success-background-active)}button.ghost:not([disabled]):not(.loading):active{background-color:var(--button-ghost-background-active);color:var(--button-ghost-neutral-color-active)}button.ghost.warning:not([disabled]):not(.loading):active{background-color:var(--button-warning-background-active);color:var(--button-ghost-warning-color-active)}button.ghost.danger:not([disabled]):not(.loading):active{background-color:var(--button-danger-background-active);color:var(--button-ghost-danger-color-active)}button.ghost.info:not([disabled]):not(.loading):active{background-color:var(--button-info-background-active);color:var(--button-ghost-info-color-active)}button.ghost.success:not([disabled]):not(.loading):active{background-color:var(--button-success-background-active);color:var(--button-ghost-success-color-active)}button:disabled{background:var(--button-disabled-background);color:var(--button-disabled-color);cursor:default}button.outline{background-color:transparent;border:var(--button-outline-border);color:var(--button-outline-color)}button.outline.danger{color:var(--button-outline-danger-color)}button.outline.warning{color:var(--button-outline-warning-color)}button.outline.info{color:var(--button-outline-info-color)}button.outline.success{color:var(--button-outline-success-color)}button.outline:not([disabled]):not(.loading):hover{background-color:var(--button-outline-background-hover);border:var(--button-outline-border-hover);color:var(--button-outline-color)}button.outline.danger:not([disabled]):not(.loading):hover{background-color:var(--button-outline-danger-background-hover);border:var(--button-outline-danger-border-hover);color:var(--button-outline-danger-color-hover)}button.outline.warning:not([disabled]):not(.loading):hover{background-color:var(--button-outline-warning-background-hover);border:var(--button-outline-warning-border-hover);color:var(--button-outline-warning-color-hover)}button.outline.info:not([disabled]):not(.loading):hover{background-color:var(--button-outline-info-background-hover);border:var(--button-outline-info-border-hover);color:var(--button-outline-info-color-hover)}button.outline.success:not([disabled]):not(.loading):hover{background-color:var(--button-outline-success-background-hover);border:var(--button-outline-success-border-hover);color:var(--button-outline-success-color-hover)}button.outline:disabled{border:1px solid var(--nyx-color-neutral-border-disable);background:var(--nyx-color-neutral-background-primary)}button.ghost{background-color:transparent;border:none;color:var(--button-ghost-color)}button.ghost.info{color:var(--button-ghost-info-color);background-color:transparent}button.ghost.danger{color:var(--button-ghost-danger-color);background-color:transparent}button.ghost.warning{color:var(--button-ghost-warning-color);background-color:transparent}button.ghost.success{color:var(--button-ghost-success-color);background-color:transparent}button.ghost:not([disabled]):not(.loading):hover{background-color:var(--button-ghost-background);color:var(--button-ghost-color)}button.ghost.danger:not([disabled]):not(.loading):hover{background-color:var(--button-ghost-background);color:var(--button-ghost-danger-color-hover)}button.ghost.warning:not([disabled]):not(.loading):hover{background-color:var(--button-ghost-background);color:var(--button-ghost-warning-color-hover)}button.ghost.info:not([disabled]):not(.loading):hover{background-color:var(--button-ghost-background);color:var(--button-ghost-info-color-hover)}button.ghost.success:not([disabled]):not(.loading):hover{background-color:var(--button-ghost-background);color:var(--button-ghost-success-color-hover)}button.ghost:disabled{background-color:var(--button-ghost-background);color:var(--button-disabled-color)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading nyx-icon{animation:spin 1s linear infinite}button.loading{cursor:default;line-height:var(--button-loading-line-height)}button.button-icon{display:flex;justify-content:center;align-items:center;flex-shrink:0;border-radius:var(--button-icon-border-radius);align-self:stretch;border:none;cursor:pointer;background-color:transparent;color:var(--button-icon-color);text-align:center}button.button-icon:not([disabled]):hover{background-color:var(--button-icon-background-hover)!important}button.button-icon.neutral:not([disabled]):hover{background-color:var(--button-neutral-background-hover)!important}button.button-icon[disabled]{color:var(--button-icon-color-disabled);cursor:default}button:focus-visible,button:focus-within{outline:2px solid var(--button-outline-color);outline-offset:2px}button.brand:focus-visible,button.brand:focus-within{background-color:var(--button-brand-background-hover)}button.warning:focus-visible,button.warning:focus-within{background-color:var(--button-warning-background-hover)}button.danger:focus-visible,button.danger:focus-within{background-color:var(--button-danger-background-hover)}button.info:focus-visible,button.info:focus-within{background-color:var(--button-info-background-hover)}button.success:focus-visible,button.success:focus-within{background-color:var(--button-success-background-hover)}button.ghost:focus-visible,button.ghost:focus-within{background-color:var(--button-ghost-background-hover);color:var(--button-ghost-color)}button.ghost.danger:focus-visible,button.ghost.danger:focus-within{background-color:var(--button-ghost-background-hover);color:var(--button-ghost-danger-color-hover)}button.ghost.info:focus-visible,button.ghost.info:focus-within{background-color:var(--button-ghost-background-hover);color:var(--button-ghost-info-color-hover)}button.ghost.success:focus-visible,button.ghost.success:focus-within{background-color:var(--button-ghost-background-hover);color:var(--button-ghost-success-color-hover)}button.ghost.warning:focus-visible,button.ghost.warning:focus-within{background-color:var(--button-ghost-background-hover);color:var(--button-ghost-warning-color-hover)}button.outline:focus-visible,button.outline:focus-within{background-color:var(--button-outline-background-hover)}button.outline.danger:focus-visible,button.outline.danger:focus-within{background-color:var(--button-outline-danger-background-hover)}button.outline.warning:focus-visible,button.outline.warning:focus-within{background-color:var(--button-outline-warning-background-hover)}button.outline.info:focus-visible,button.outline.info:focus-within{background-color:var(--button-outline-info-background-hover)}button.outline.success:focus-visible,button.outline.success:focus-within{background-color:var(--button-outline-success-background-hover)}button.button-icon:focus-visible,button.button-icon:focus-within{background-color:var( --button-icon-background-focus, var(--button-icon-background-hover) )!important}button.button-icon.neutral:focus-visible,button.button-icon.neutral:focus-within{background-color:var( --button-icon-background-focus, var(--button-neutral-background-hover) )!important}:host(.active) button.button-icon:not([disabled]){background-color:var( --button-icon-background-focus, var(--button-icon-background-hover) )!important}button.button-icon.button-icon-with-border{border:var(--button-icon-border-with-border);border-radius:var(--button-icon-border-radius-with-border)}button.button-icon.button-icon-with-border:not([disabled]):hover{border:var(--button-icon-border-hover)}button.button-icon.button-icon-with-border[disabled]{border:var(--button-icon-border-disabled)}button.button-icon nyx-icon{font-style:normal;font-weight:400;line-height:normal}button.button-icon.small{width:var(--button-icon-override-width, 24px);height:var(--button-icon-override-height, 24px)}button.button-icon.small nyx-icon{font-size:var(--button-icon-small-icon-font-size)}button.button-icon.medium{width:var(--button-icon-override-width, 30px);height:var(--button-icon-override-height, 30px)}button.button-icon.medium nyx-icon{font-size:var(--button-icon-medium-icon-font-size)}button.button-icon.large{width:var(--button-icon-override-width, 34px);height:var(--button-icon-override-height, 34px)}button.button-icon.large nyx-icon{font-size:var(--button-icon-large-icon-font-size)}button.button-icon.xlarge{width:var(--button-icon-override-width, 40px);height:var(--button-icon-override-height, 40px)}button.button-icon.xlarge nyx-icon{font-size:var(--button-icon-xlarge-icon-font-size)}";var G=Object.defineProperty,b=(c,o,e,n)=>{for(var t=void 0,r=c.length-1,i;r>=0;r--)(i=c[r])&&(t=i(o,e,t)||t);return t&&G(o,e,t),t};const d=(p=class extends a.LitElement{constructor(){super(...arguments),this.variant="brand",this.size="large",this.hierarchy="solid",this.iconPosition="left",this.disabled=!1,this.loading=!1,this.block=!1,this.buttonIcon=!1,this.buttonIconWithBorder=!1}connectedCallback(){super.connectedCallback(),this._hostAriaObserver=new MutationObserver(()=>{this.requestUpdate()}),this._hostAriaObserver.observe(this,{attributes:!0,attributeFilter:[...p._HOST_ARIA_ATTRS]})}willUpdate(o){this._pullHostAriaIntoShadowButton(),super.willUpdate(o)}disconnectedCallback(){var o;(o=this._hostAriaObserver)==null||o.disconnect(),this._hostAriaObserver=void 0,super.disconnectedCallback()}_pullHostAriaIntoShadowButton(){var o,e;if(this.hasAttribute("aria-label")){const n=this.getAttribute("aria-label")??"",t=n.trim()===""?void 0:n;t!==this._innerAriaLabel&&(this._innerAriaLabel=t),this.removeAttribute("aria-label")}if(this.hasAttribute("aria-labelledby")){const n=(o=this.getAttribute("aria-labelledby"))==null?void 0:o.trim(),t=n===""?void 0:n;t!==this._innerAriaLabelledby&&(this._innerAriaLabelledby=t),this.removeAttribute("aria-labelledby")}if(this.hasAttribute("aria-describedby")){const n=(e=this.getAttribute("aria-describedby"))==null?void 0:e.trim(),t=n===""?void 0:n;t!==this._innerAriaDescribedby&&(this._innerAriaDescribedby=t),this.removeAttribute("aria-describedby")}}_handleClick(o){if(this.disabled||this.loading){o.preventDefault(),o.stopPropagation();return}o.stopPropagation(),this.click(void 0,{native:!0,bubbles:!0,composed:!0})}render(){const o=this.buttonIcon||this.buttonIconWithBorder,e={brand:this.variant==="brand",info:this.variant==="info",warning:this.variant==="warning",danger:this.variant==="danger",neutral:this.variant==="neutral",success:this.variant==="success",small:this.size==="small",medium:this.size==="medium",large:this.size==="large",xlarge:this.size==="xlarge",outline:this.hierarchy==="outline",ghost:this.hierarchy==="ghost","icon-right":this.iconPosition==="right",loading:this.loading,block:this.block,"button-icon":o,"button-icon-with-border":this.buttonIconWithBorder};return a.html`
22
- <button
23
- type="button"
24
- ?disabled=${this.disabled}
25
- class=${z.classMap(e)}
26
- aria-label=${this._innerAriaLabel??a.nothing}
27
- aria-labelledby=${this._innerAriaLabelledby??a.nothing}
28
- aria-describedby=${this._innerAriaDescribedby??a.nothing}
29
- @click=${this._handleClick}
78
+ `:h.nothing}render(){var i,s,r;const e=this._hasColumnPermissions(),t=e?((s=(i=this.options)==null?void 0:i.columns)==null?void 0:s.length)??0:0;return h.html`
79
+ <div
80
+ class=${b.classMap({"nyx-treeview":!0,"nyx-treeview--no-columns":!e,"nyx-treeview--row-selection":this._showRowSelection(),"nyx-treeview--virtual":this._isLazyEnabled()})}
81
+ style=${`--treeview-column-count: ${t};`}
82
+ @mousedown=${()=>this._clearAllFocus()}
30
83
  >
31
- ${this.loading?"":a.html`<slot name="icon"></slot>`}
32
- ${this.loading?a.html`<div class="loading"><nyx-icon svg=${h.spinnerThird}></nyx-icon></div>`:""}
33
- ${o?"":a.html`<slot></slot>`}
34
- </button>
35
- `}},p._HOST_ARIA_ATTRS=["aria-label","aria-labelledby","aria-describedby"],p.styles=a.unsafeCSS(j),p);b([l.property({type:String,reflect:!0})],d.prototype,"variant"),b([l.property({type:String,reflect:!0})],d.prototype,"size"),b([l.property({type:String,reflect:!0})],d.prototype,"hierarchy"),b([l.property()],d.prototype,"iconPosition"),b([l.property({type:Boolean,reflect:!0})],d.prototype,"disabled"),b([l.property({type:Boolean,reflect:!0})],d.prototype,"loading"),b([l.property({type:Boolean,reflect:!0})],d.prototype,"block"),b([l.property({attribute:"button-icon",type:Boolean,reflect:!0})],d.prototype,"buttonIcon"),b([l.property({attribute:"button-icon-with-border",type:Boolean,reflect:!0})],d.prototype,"buttonIconWithBorder"),b([L()],d.prototype,"click"),b([l.state()],d.prototype,"_innerAriaLabel"),b([l.state()],d.prototype,"_innerAriaLabelledby"),b([l.state()],d.prototype,"_innerAriaDescribedby");let J=d;customElements.get("nyx-button")||customElements.define("nyx-button",J);var K=Object.defineProperty,w=(c,o,e,n)=>{for(var t=void 0,r=c.length-1,i;r>=0;r--)(i=c[r])&&(t=i(o,e,t)||t);return t&&K(o,e,t),t};const A=class A extends a.LitElement{constructor(){super(...arguments),this._items=[],this._expandedIds=new Set,this._searchTerm=""}updated(o){o.has("options")&&this.options&&(this._items=JSON.parse(JSON.stringify(this.options.items)),this.options.defaultExpandedLevel!==void 0&&this._expandedIds.size===0&&this._expandToLevel(this._items,0,this.options.defaultExpandedLevel),this._generateLightDomIcons())}_generateLightDomIcons(){var n;if(this.querySelectorAll("[data-auto-generated]").forEach(t=>t.remove()),!this.options)return;(n=this.options.columns)==null||n.forEach((t,r)=>{t.icon&&this._createIconElement(t.icon,`generated-header-icon-${r}`)});const e=t=>{t.icon&&this._createIconElement(t.icon,`generated-tree-icon-${t.id}`),t.children&&t.children.forEach(e)};this._items.forEach(e)}_createIconElement(o,e){const n=document.createElement("nyx-icon");let t="regular";typeof o=="string"?n.setAttribute("name",o):(o.name&&n.setAttribute("name",o.name),o.variant&&(t=o.variant),o.src&&n.setAttribute("src",o.src),o.svg&&(n.svg=o.svg)),n.setAttribute("variant",t),n.setAttribute("slot",e),n.setAttribute("data-auto-generated",""),this.appendChild(n)}_expandToLevel(o,e,n){o.forEach(t=>{e<n&&(this._expandedIds.add(t.id),t.children&&this._expandToLevel(t.children,e+1,n))})}_isColumnDisabled(o,e){return!!o.disabledColumns&&o.disabledColumns.includes(e)}_isNodeSelected(o,e){return this._isColumnDisabled(o,e)?!1:(o.selectedColumns||[]).includes(e)}_isIndeterminate(o,e){if(!o.children||o.children.length===0)return!1;const n=this._getFlatDescendants(o),t=n.filter(r=>this._isNodeSelected(r,e)).length;return t>0&&t<n.length}_allDescendantsSelected(o,e){return!o.children||o.children.length===0?this._isNodeSelected(o,e):this._getFlatDescendants(o).every(t=>this._isNodeSelected(t,e))}_getFlatDescendants(o){let e=[];return o.children&&o.children.forEach(n=>{e.push(n),e=e.concat(this._getFlatDescendants(n))}),e}_handleCheck(o,e){const t=!this._isNodeSelected(o,e);this._toggleNodeState(o,e,t),o.children&&this._getFlatDescendants(o).forEach(r=>{this._toggleNodeState(r,e,t)}),this._updateParents(this._items,o.id,e),this._triggerChange()}_toggleNodeState(o,e,n){if(this._isColumnDisabled(o,e))return;o.selectedColumns||(o.selectedColumns=[]);const t=o.selectedColumns.indexOf(e);n&&t===-1?o.selectedColumns.push(e):!n&&t>-1&&o.selectedColumns.splice(t,1)}_updateParents(o,e,n){for(const t of o)if(t.children&&t.children.some(r=>r.id===e||this._updateParents(t.children,e,n))){const r=t.children.every(i=>this._allDescendantsSelected(i,n));return this._toggleNodeState(t,n,r),!0}return!1}_isRowAllSelected(o){var n;if(!((n=this.options)!=null&&n.columns))return!1;const e=this.options.columns.every(t=>this._isColumnDisabled(o,t.id)?!0:this._isNodeSelected(o,t.id));return o.children&&o.children.length>0?e&&o.children.every(t=>this._isRowAllSelected(t)):e}_isRowIndeterminate(o){var t;if(this._isRowAllSelected(o)||!((t=this.options)!=null&&t.columns))return!1;const e=this.options.columns.some(r=>this._isNodeSelected(o,r.id)),n=o.children?o.children.some(r=>this._isRowAllSelected(r)||this._isRowIndeterminate(r)):!1;return e||n}_handleRowCheck(o){var t;const n=!this._isRowAllSelected(o);this._toggleRowRecursively(o,n),(t=this.options)!=null&&t.columns&&this.options.columns.forEach(r=>{this._updateParents(this._items,o.id,r.id)}),this._triggerChange()}_toggleRowRecursively(o,e){var n;(n=this.options)!=null&&n.columns&&(e?this.options.columns.forEach(t=>{this._isColumnDisabled(o,t.id)||(o.selectedColumns||(o.selectedColumns=[]),o.selectedColumns.includes(t.id)||o.selectedColumns.push(t.id))}):o.selectedColumns=[],o.children&&o.children.forEach(t=>this._toggleRowRecursively(t,e)))}_triggerChange(){this._items=[...this._items],this.onChange({items:this._items},{bubbles:!0,composed:!0})}async _toggleExpand(o,e=!1){var r;if(!(o.children&&o.children.length>0))return;const t=this._expandedIds.has(o.id);if(t?this._expandedIds.delete(o.id):this._expandedIds.add(o.id),this._expandedIds=new Set(this._expandedIds),!t&&e&&o.children&&o.children[0]){await this.updateComplete;const i=o.children[0].id,x=(r=this.shadowRoot)==null?void 0:r.querySelector(`#row-${i}`);x&&x.focus()}}_handleRowKeyDown(o,e){var t;const n=o.currentTarget;if((o.key==="Enter"||o.key===" ")&&o.target===n){o.preventDefault(),this._enableChildren(n);const r=n.querySelector("nyx-checkbox input, nyx-button:not([disabled])");if(r)if(r instanceof HTMLInputElement)r.focus();else{const i=(t=r.shadowRoot)==null?void 0:t.querySelector("button");i==null||i.focus()}return}o.key==="Escape"&&(o.preventDefault(),o.stopPropagation(),this._disableChildren(n),n.focus())}_handleRowFocusOut(o){const e=o.currentTarget;e.contains(o.relatedTarget)||this._disableChildren(e)}_enableChildren(o){const e=o.querySelectorAll('input[slot="input"]'),n=o.querySelectorAll("nyx-button");e.forEach(t=>t.setAttribute("tabindex","0")),n.forEach(t=>t.removeAttribute("tabindex"))}_disableChildren(o){const e=o.querySelectorAll('input[slot="input"]'),n=o.querySelectorAll("nyx-button");e.forEach(t=>t.setAttribute("tabindex","-1")),n.forEach(t=>t.setAttribute("tabindex","-1"))}_clearAllFocus(){var n,t;const o=(n=this.shadowRoot)==null?void 0:n.activeElement;o==null||o.blur();const e=(t=this.shadowRoot)==null?void 0:t.querySelectorAll(".node-row");e==null||e.forEach(r=>{this._disableChildren(r)})}render(){var o,e,n;return a.html`
36
- <div class="nyx-treeview" @mousedown=${()=>this._clearAllFocus()}>
37
84
  <div class="search-container">
38
85
  <nyx-input>
39
- <nyx-icon .svg=${h.magnifyingGlass} slot="iconLeft"></nyx-icon>
86
+ <nyx-icon .svg=${M.magnifyingGlass} slot="iconLeft"></nyx-icon>
40
87
  <input
41
88
  class="search-input"
42
89
  type="text"
43
90
  slot="field"
44
- placeholder="Search..."
45
- @input=${t=>this._searchTerm=t.target.value}
91
+ placeholder="Search"
92
+ aria-label="Search"
93
+ @input=${this._handleSearchInput}
46
94
  />
47
95
  </nyx-input>
96
+ <div
97
+ class="search-status visually-hidden"
98
+ role="status"
99
+ aria-live="polite"
100
+ aria-atomic="true"
101
+ >
102
+ ${this._searchStatusMessage}
103
+ </div>
48
104
  </div>
49
105
 
50
106
  <div class="tree-scroll">
51
- <div class="tree-header">
52
- <div class="tree-title">${(o=this.options)==null?void 0:o.title}</div>
53
- <div class="header-columns">
54
- ${(n=(e=this.options)==null?void 0:e.columns)==null?void 0:n.map((t,r)=>a.html`
55
- <div class="col-cell" title="${t.title||""}">
56
- <slot name="generated-header-icon-${r}"></slot>
107
+ <div
108
+ class=${b.classMap({"tree-header":!0,"tree-header--no-columns":!e})}
109
+ >
110
+ <div class="tree-title">${(r=this.options)==null?void 0:r.title}</div>
111
+ ${e?h.html`
112
+ <div class="header-columns">
113
+ ${this.options.columns.map((o,a)=>h.html`
114
+ <div class="col-cell" title="${o.title||""}">
115
+ <slot name="generated-header-icon-${a}"></slot>
116
+ </div>
117
+ `)}
57
118
  </div>
58
- `)}
59
- </div>
119
+ `:h.nothing}
60
120
  </div>
61
121
 
62
- <div class="tree-body">${this._renderNodes(this._items,0)}</div>
122
+ <div
123
+ class=${b.classMap({"tree-body":!0,"tree-body--virtual":this._isLazyEnabled()})}
124
+ role="tree"
125
+ aria-label=${this._getTreeAriaLabel()}
126
+ >
127
+ ${this._isLazyEnabled()?h.html`
128
+ <lit-virtualizer
129
+ scroller
130
+ class="tree-virtualizer"
131
+ .items=${this._flatRows}
132
+ .estimateSize=${48}
133
+ .renderItem=${o=>this._renderFlatRow(o)}
134
+ @visibilityChanged=${this._onVirtualizerVisibilityChanged}
135
+ ></lit-virtualizer>
136
+ `:this._renderNodes(this._items,0)}
137
+ </div>
63
138
  </div>
64
139
  </div>
65
- `}_renderNodes(o,e){var r;const n=o.filter(i=>!this._searchTerm||i.label.toLowerCase().includes(this._searchTerm.toLowerCase())||i.children&&i.children.some(x=>x.label.toLowerCase().includes(this._searchTerm.toLowerCase()))),t=16+e*24-((r=this.options)!=null&&r.showRowSelection?4:0);return O.repeat(n,i=>i.id,i=>{var T,P,D,q;const x=this._expandedIds.has(i.id),I=i.children&&i.children.length>0,Q=this._isRowAllSelected(i),X=this._isRowIndeterminate(i),Y=!!((T=this.options)!=null&&T.showRowSelection);return a.html`
140
+ `}_renderFlatRow(e){const{node:t,level:i,revealSubtree:s,parentLabelMatched:r}=e,o=this._expandedIds.has(t.id),a=e.hasChildrenInSource,d=this._showRowSelection(),l=this._isRowCheckboxChecked(t)||this._isRowCheckboxIndeterminate(t);return h.html`
141
+ <div class="node-wrapper node-wrapper--flat">
142
+ ${this._renderTreeRow(t,i,{isExpanded:o,hasChildren:a,isRowHighlighted:l,isSelectable:d})}
143
+ </div>
144
+ `}_renderNodes(e,t,i=!1,s=!1,r=!1){const o=!!this._searchTerm.trim(),a=this._searchTerm.trim().toLowerCase(),d=o&&!r?e.filter(l=>this._searchVisibleIds.has(l.id)):e;return Z.repeat(d,l=>l.id,l=>{const c=this._expandedIds.has(l.id),v=this._isLazyEnabled()?this._sourceHasChildren(l.id):!!(l.children&&l.children.length>0),w=this._isRowCheckboxChecked(l)||this._isRowCheckboxIndeterminate(l),m=this._showRowSelection(),A=V(l.label,a,i,s),W=!o||A&&R(l.label,a,s,l.id,this._searchVisibleIds,$=>this._getSourceChildren($))?l.children:N(l,this._searchVisibleIds,a),I=s||o&&!!a&&l.label.toLowerCase().includes(a);return h.html`
66
145
  <div class="node-wrapper">
67
- <div
68
- id="row-${i.id}"
69
- class=${E.classMap({"node-row":!0,selectable:Y,selected:Q||X})}
70
- style="padding-left: ${t}px;"
71
- tabindex="0"
72
- @mousedown=${s=>s.preventDefault()}
73
- @keydown=${s=>this._handleRowKeyDown(s,i)}
74
- @focusout=${this._handleRowFocusOut}
75
- >
76
- <div class="node-info">
77
- ${(P=this.options)!=null&&P.showRowSelection?a.html`
78
- <div class="row-checkbox">
79
- <nyx-checkbox
80
- ?checked=${this._isRowAllSelected(i)}
81
- ?indeterminate=${this._isRowIndeterminate(i)}
82
- @click=${s=>{s.stopPropagation(),this._handleRowCheck(i)}}
83
- >
84
- <input type="checkbox" slot="input" tabindex="-1" />
85
- </nyx-checkbox>
86
- </div>
87
- `:a.nothing}
88
- ${I?a.html`
89
- <nyx-button
90
- class="expander"
91
- size="small"
92
- button-icon
93
- tabindex="-1"
94
- hierarchy="ghost"
95
- @click=${()=>this._toggleExpand(i,!1)}
96
- @keydown=${s=>{(s.key==="Enter"||s.key===" ")&&(s.preventDefault(),s.stopPropagation(),this._toggleExpand(i,!0))}}
97
- >
98
- <nyx-icon
99
- slot="icon"
100
- class=${E.classMap({expanded:x})}
101
- .svg=${h.chevronRightRegular}
102
- ></nyx-icon>
103
- </nyx-button>
104
- `:a.nothing}
105
- <div class="node-type-icon-wrapper">
106
- <slot name="generated-tree-icon-${i.id}"></slot>
107
- </div>
108
- <span class="node-text" title="${i.label}"
109
- >${i.label}</span
110
- >
111
- </div>
112
- <div class="node-columns">
113
- ${(q=(D=this.options)==null?void 0:D.columns)==null?void 0:q.map(s=>a.html`
114
- <div class="col-cell">
115
- <nyx-checkbox
116
- ?checked=${this._allDescendantsSelected(i,s.id)}
117
- ?indeterminate=${this._isIndeterminate(i,s.id)}
118
- ?disabled=${this._isColumnDisabled(i,s.id)}
119
- @click=${()=>this._handleCheck(i,s.id)}
120
- >
121
- <input type="checkbox" slot="input" tabindex="-1" />
122
- </nyx-checkbox>
123
- </div>
124
- `)}
125
- </div>
126
- </div>
127
- ${x&&I?a.html`<div class="node-children">
128
- ${this._renderNodes(i.children,e+1)}
146
+ ${this._renderTreeRow(l,t,{isExpanded:c,hasChildren:v,isRowHighlighted:w,isSelectable:m})}
147
+ ${c&&v?h.html`<div class="node-children" role="group">
148
+ ${this._renderNodes(W,t+1,A,I,!0)}
129
149
  </div>`:""}
130
150
  </div>
131
- `})}};A.styles=a.unsafeCSS(N);let v=A;w([l.property({type:Object})],v.prototype,"options"),w([l.state()],v.prototype,"_items"),w([l.state()],v.prototype,"_expandedIds"),w([l.state()],v.prototype,"_searchTerm"),w([L("nyx-change")],v.prototype,"onChange"),customElements.get("nyx-treeview")||customElements.define("nyx-treeview",v),u.NyxTreeview=v,Object.defineProperty(u,Symbol.toStringTag,{value:"Module"})});
151
+ `})}};T.styles=h.unsafeCSS(Y);let u=T;f([p.property({type:Object,noAccessor:!0})],u.prototype,"options",1),f([p.state()],u.prototype,"_items",2),f([p.state()],u.prototype,"_expandedIds",2),f([p.state()],u.prototype,"_searchTerm",2),f([p.state()],u.prototype,"_searchStatusMessage",2),f([p.state()],u.prototype,"_searchVisibleIds",2),f([p.state()],u.prototype,"_searchUserCollapsedIds",2),f([p.state()],u.prototype,"_searchManualExpandedIds",2),f([p.state()],u.prototype,"_flatRows",2),f([p.state()],u.prototype,"_loadedIds",2),f([p.state()],u.prototype,"_activeRowId",2),f([K("nyx-change")],u.prototype,"onChange",2),customElements.get("nyx-treeview")||customElements.define("nyx-treeview",u),_.NyxTreeview=u,Object.defineProperty(_,Symbol.toStringTag,{value:"Module"})}));
package/package.json CHANGED
@@ -1,18 +1,34 @@
1
1
  {
2
2
  "name": "@nyx-ds/treeview",
3
3
  "private": false,
4
- "version": "0.1.0",
4
+ "version": "0.1.1",
5
5
  "type": "module",
6
6
  "main": "dist/treeview.js",
7
7
  "module": "dist/treeview.js",
8
- "types": "treeview.d.ts",
8
+ "types": "dist/treeview.d.ts",
9
9
  "files": [
10
10
  "dist"
11
11
  ],
12
12
  "scripts": {
13
- "build": "vite build"
13
+ "build": "vite build && tsc -p tsconfig.build.json",
14
+ "test": "node ../../node_modules/vitest/vitest.mjs run --config ./vitest.config.ts",
15
+ "test:watch": "node ../../node_modules/vitest/vitest.mjs --config ./vitest.config.ts"
16
+ },
17
+ "dependencies": {
18
+ "@lit-labs/virtualizer": "^2.1.0"
19
+ },
20
+ "devDependencies": {
21
+ "@lit-labs/virtualizer": "^2.1.0",
22
+ "@nyx-ds/button": "^0.1.3",
23
+ "@nyx-ds/checkbox": "^0.1.4",
24
+ "@nyx-ds/core": "^0.1.11",
25
+ "@nyx-ds/icon": "^0.1.1",
26
+ "@nyx-ds/input": "^0.1.6",
27
+ "lit": "^3.2.1",
28
+ "lit-html": "^3.2.1"
14
29
  },
15
30
  "peerDependencies": {
31
+ "@lit-labs/virtualizer": "^2.1.0",
16
32
  "@nyx-ds/button": "^0.1.3",
17
33
  "@nyx-ds/checkbox": "^0.1.4",
18
34
  "@nyx-ds/core": "^0.1.11",
@@ -21,5 +37,5 @@
21
37
  "lit": "^3.2.1",
22
38
  "lit-html": "^3.2.1"
23
39
  },
24
- "gitHead": "322d90fcbbce1bf63b8ea2bcdedc48a98e8b5f62"
40
+ "gitHead": "80efb9119756e175a71b0cd502cf03fac3e161e7"
25
41
  }