@logosphere-ui/core 0.0.0-alpha.40 → 0.0.0-alpha.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/AGENTS.md +18 -62
  2. package/dist/AGENTS.md +18 -62
  3. package/dist/atoms/Checkbox/checkbox.d.ts +2 -11
  4. package/dist/atoms/FormField/formfield.d.ts +0 -2
  5. package/dist/{badge-B0Bj-HAT.js → badge-DsDxWEHx.js} +20 -20
  6. package/dist/{badge-DWkKpZTX.cjs → badge-DvaKpUHe.cjs} +1 -1
  7. package/dist/badge.cjs +1 -1
  8. package/dist/badge.js +1 -1
  9. package/dist/breadcrumb-BB61Xt0s.js +41 -0
  10. package/dist/breadcrumb-Cop-B1J7.cjs +12 -0
  11. package/dist/breadcrumb.cjs +1 -1
  12. package/dist/breadcrumb.js +1 -1
  13. package/dist/button-DRZ4sG4T.cjs +10 -0
  14. package/dist/button-Uu9oaieg.js +58 -0
  15. package/dist/button.cjs +1 -1
  16. package/dist/button.js +1 -1
  17. package/dist/{calendar-DcDT4o-U.cjs → calendar-CIgyrv3U.cjs} +1 -1
  18. package/dist/{calendar-DsriSHZ4.js → calendar-CZ_IN2TF.js} +1 -1
  19. package/dist/calendar.cjs +1 -1
  20. package/dist/calendar.js +1 -1
  21. package/dist/card-BOCW7gad.cjs +43 -0
  22. package/dist/{card-R_cKrdHK.js → card-MDwFGplY.js} +3 -3
  23. package/dist/card.cjs +1 -1
  24. package/dist/card.js +1 -1
  25. package/dist/chatbot-B-NiZIYK.cjs +183 -0
  26. package/dist/{chatbot-yup4Nz00.js → chatbot-CHgiUY4h.js} +13 -13
  27. package/dist/chatbot.cjs +1 -1
  28. package/dist/chatbot.js +1 -1
  29. package/dist/checkbox-CX0LgsWP.js +148 -0
  30. package/dist/checkbox-DpbKHANK.cjs +53 -0
  31. package/dist/checkbox.cjs +1 -1
  32. package/dist/checkbox.js +1 -1
  33. package/dist/{chip-group-CC5RBhN_.js → chip-group-BUL2H8rr.js} +1 -1
  34. package/dist/{chip-group-BqYKZKmu.cjs → chip-group-CpcjGoRm.cjs} +1 -1
  35. package/dist/chip-group.cjs +1 -1
  36. package/dist/chip-group.js +1 -1
  37. package/dist/combobox-BmIFPk8X.cjs +113 -0
  38. package/dist/{combobox-Nxhk75IH.js → combobox-jak7Ac1m.js} +8 -31
  39. package/dist/combobox.cjs +1 -1
  40. package/dist/combobox.js +1 -1
  41. package/dist/{datepicker-BExZseRQ.js → datepicker-BgysIOZI.js} +51 -58
  42. package/dist/datepicker-DOBmbxlo.cjs +85 -0
  43. package/dist/datepicker.cjs +1 -1
  44. package/dist/datepicker.js +1 -1
  45. package/dist/{drawer-DBrOkz0z.cjs → drawer-3nyjAkcS.cjs} +2 -2
  46. package/dist/{drawer-DHsESNFL.js → drawer-CE9zzllI.js} +3 -3
  47. package/dist/drawer.cjs +1 -1
  48. package/dist/drawer.js +1 -1
  49. package/dist/formfield-CRcyUMvQ.cjs +33 -0
  50. package/dist/{formfield-ss2mFweu.js → formfield-O327HYt0.js} +52 -59
  51. package/dist/formfield.cjs +1 -1
  52. package/dist/formfield.js +1 -1
  53. package/dist/index.cjs +7 -7
  54. package/dist/index.d.ts +0 -1
  55. package/dist/index.js +59 -60
  56. package/dist/index.umd.js +145 -146
  57. package/dist/input-CQS0LzF-.cjs +59 -0
  58. package/dist/input-CeF3YJk-.js +257 -0
  59. package/dist/input.cjs +1 -1
  60. package/dist/input.js +1 -1
  61. package/dist/left-menu.cjs +1 -1
  62. package/dist/left-menu.js +1 -1
  63. package/dist/{leftmenu-CMx2K5Ws.js → leftmenu-CmWvnA6L.js} +4 -4
  64. package/dist/{leftmenu-DCfTelzi.cjs → leftmenu-p9aR2QTy.cjs} +1 -1
  65. package/dist/{modal-DNjURVZy.js → modal-DUIv_yoo.js} +4 -4
  66. package/dist/modal-dUnnHe8u.cjs +84 -0
  67. package/dist/modal.cjs +1 -1
  68. package/dist/modal.js +1 -1
  69. package/dist/molecules/Input/input.d.ts +0 -17
  70. package/dist/organisms/Combobox/combobox.d.ts +0 -9
  71. package/dist/organisms/DatePicker/datepicker.d.ts +0 -2
  72. package/dist/{pagination-B91sZD5E.js → pagination-B7jknoOz.js} +61 -61
  73. package/dist/pagination-BkqbWBOn.cjs +169 -0
  74. package/dist/pagination.cjs +1 -1
  75. package/dist/pagination.js +1 -1
  76. package/dist/popover-CYDoeLKp.cjs +30 -0
  77. package/dist/{popover-CSgoaROl.js → popover-DDaG8MSj.js} +28 -28
  78. package/dist/popover.cjs +1 -1
  79. package/dist/popover.js +1 -1
  80. package/dist/{switch-Do6SCkPJ.cjs → switch-8RGGesy5.cjs} +2 -2
  81. package/dist/{switch-uYVuohJ-.js → switch-DNqPqH-R.js} +21 -25
  82. package/dist/switch.cjs +1 -1
  83. package/dist/switch.js +1 -1
  84. package/dist/tab-CDMcFHvP.cjs +41 -0
  85. package/dist/{tab-Byh4UgFB.js → tab-CuBCFGoO.js} +1 -1
  86. package/dist/tab.cjs +1 -1
  87. package/dist/tab.js +1 -1
  88. package/dist/{text-area-CHkrGi3S.js → text-area-C73JxnqH.js} +12 -16
  89. package/dist/text-area-Cprb-azV.cjs +51 -0
  90. package/dist/textarea.cjs +1 -1
  91. package/dist/textarea.js +1 -1
  92. package/dist/{timepicker-Co7lW5Rp.cjs → timepicker-CLJKWWGm.cjs} +1 -1
  93. package/dist/{timepicker-CAat7fcK.js → timepicker-DMzGYd0p.js} +2 -6
  94. package/dist/timepicker.cjs +1 -1
  95. package/dist/timepicker.js +1 -1
  96. package/dist/toast-container-6t6yEP9Y.cjs +64 -0
  97. package/dist/{toast-container-DxFwLT5S.js → toast-container-B5v74b_5.js} +4 -4
  98. package/dist/toast.cjs +1 -1
  99. package/dist/toast.js +1 -1
  100. package/dist/{tree-menu-Psek8QB9.js → tree-menu-CkOPxr-W.js} +2 -2
  101. package/dist/tree-menu-WNwZMreD.cjs +47 -0
  102. package/dist/tree-menu.cjs +1 -1
  103. package/dist/tree-menu.js +1 -1
  104. package/dist/{ui-icon-Ckljc9hg.js → ui-icon-BMJNdIOq.js} +0 -3
  105. package/dist/{ui-icon-Cd5YhUeQ.cjs → ui-icon-DIucAQC_.cjs} +3 -3
  106. package/package.json +1 -6
  107. package/dist/breadcrumb-BOuCLUJh.cjs +0 -12
  108. package/dist/breadcrumb-BeJqq-5C.js +0 -41
  109. package/dist/button-MBxtvVqn.cjs +0 -10
  110. package/dist/button-QWCkFTeJ.js +0 -58
  111. package/dist/card-BUWvno93.cjs +0 -43
  112. package/dist/chatbot-BPVC2wqM.cjs +0 -183
  113. package/dist/checkbox-BAbPDN6x.cjs +0 -53
  114. package/dist/checkbox-CTfbav6M.js +0 -152
  115. package/dist/combobox-Bah9Akr-.cjs +0 -113
  116. package/dist/datepicker-BOQ13sIm.cjs +0 -85
  117. package/dist/formfield-JXiv9mvJ.cjs +0 -33
  118. package/dist/icon.cjs +0 -1
  119. package/dist/icon.js +0 -4
  120. package/dist/input-D9lFcDHU.js +0 -278
  121. package/dist/input-Dg-jos9u.cjs +0 -60
  122. package/dist/modal-BJNCTlBX.cjs +0 -84
  123. package/dist/pagination-Cnh-o-Nq.cjs +0 -169
  124. package/dist/popover-DwDyLpQq.cjs +0 -30
  125. package/dist/shared/icons/index.d.ts +0 -1
  126. package/dist/tab-BvRVHpWs.cjs +0 -41
  127. package/dist/text-area-DvOiCcKP.cjs +0 -51
  128. package/dist/toast-container-aY1lGjRi.cjs +0 -64
  129. package/dist/tree-menu-Dqy14_m2.cjs +0 -47
@@ -1,30 +0,0 @@
1
- "use strict";const i=require("lit"),o=require("lit/decorators.js"),d=require("@popperjs/core"),c=':host{display:inline-block}.popover__wrapper{position:relative;display:inline-block;font-family:var(--font-family-base)}.popover__trigger{display:inline-flex}.popover__panel{position:relative;overflow:visible;z-index:var(--z-index-popover);min-width:240px;border-radius:var(--radius-md);border:1px solid var(--color-border);background-color:var(--color-body-bg);box-shadow:var(--shadow-md)}.popover__content{position:relative;z-index:1;background-color:var(--color-body-bg);border-radius:var(--radius-md);overflow:hidden}.popover__content:before{content:"";position:absolute;top:0;left:0;right:0;height:8px;background-color:var(--color-body-bg);border-radius:var(--radius-md) var(--radius-md) 0 0;z-index:1;pointer-events:none}.popover__content>*{position:relative;z-index:2}.popover__title{padding:10px var(--spacing-3);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-body-text)}.popover__body{padding:var(--spacing-3);font-size:var(--font-size-sm);color:var(--color-secondary)}.popover__body--with-border{border-top:1px solid var(--color-border)}.popper-arrow{position:absolute;width:12px;height:12px;pointer-events:none;z-index:0}.popper-arrow:before{content:"";position:absolute;inset:0;background:var(--color-border);transform:rotate(45deg)}.popper-arrow:after{content:"";position:absolute;inset:1px;background:var(--color-body-bg);transform:rotate(45deg)}[data-popper]{position:relative;overflow:visible}[data-popper-placement^=bottom]>.popper-arrow{top:-6px;left:50%;transform:translate(-50%,-50%)}[data-popper-placement^=top]>.popper-arrow{bottom:-6px;left:50%;transform:translate(-50%,50%)}[data-popper-placement^=left]>.popper-arrow{right:-6px;top:50%;transform:translate(50%,-50%)}[data-popper-placement^=right]>.popper-arrow{left:-6px;top:50%;transform:translate(-50%,-50%)}';var h=Object.defineProperty,v=Object.getOwnPropertyDescriptor,t=(n,e,r,s)=>{for(var p=s>1?void 0:s?v(e,r):e,a=n.length-1,l;a>=0;a--)(l=n[a])&&(p=(s?l(e,r,p):l(p))||p);return s&&p&&h(e,r,p),p};exports.Popover=class extends i.LitElement{constructor(){super(...arguments),this.title="",this.trigger="click",this.placement="bottom",this.offset=8,this.open=!1,this.closeOnOutsideClick=!0,this.noArrow=!1,this.handleDocumentClick=e=>{!this.open||!this.closeOnOutsideClick||e.composedPath().includes(this)||this.setOpen(!1)},this.toggle=e=>{(this.trigger==="click"||this.trigger==="both")&&(e?.stopPropagation(),this.setOpen(!this.open))},this.handleMouseEnter=()=>{(this.trigger==="hover"||this.trigger==="both")&&this.setOpen(!0)},this.handleMouseLeave=()=>{(this.trigger==="hover"||this.trigger==="both")&&this.setOpen(!1)}}connectedCallback(){super.connectedCallback(),document.addEventListener("click",this.handleDocumentClick,{capture:!0})}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("click",this.handleDocumentClick,{capture:!0}),this.destroyPopper()}updated(e){super.updated(e);const r=e.has("placement"),s=e.has("open")&&this.open;if(e.has("open")&&!this.open){this.destroyPopper();return}(s||r)&&this.open&&this.updatePopper()}setOpen(e){this.open!==e&&(this.open=e,this.dispatchEvent(new CustomEvent(e?"popover-open":"popover-close",{bubbles:!0,composed:!0})))}updatePopper(){if(!this.isConnected||!this.open)return;const e=this.triggerElement,r=this.popperElement;if(!(!e||!r)){if(this.popperInstance){this.popperInstance.setOptions({placement:this.placement,modifiers:this.getPopperModifiers(),strategy:"fixed"}),this.popperInstance.update();return}this.popperInstance=d.createPopper(e,r,{placement:this.placement,strategy:"fixed",modifiers:this.getPopperModifiers()})}}getPopperModifiers(){const e=[{name:"offset",options:{offset:[0,this.offset]}},{name:"preventOverflow",options:{padding:8}},{name:"flip",options:{padding:8}}];return!this.noArrow&&this.popperArrowElement&&e.push({name:"arrow",options:{element:this.popperArrowElement,padding:8}}),e}destroyPopper(){this.popperInstance&&(this.popperInstance.destroy(),this.popperInstance=void 0)}render(){const e=!!this.title;return i.html`
2
- <div
3
- class="popover__wrapper"
4
- @mouseenter=${this.handleMouseEnter}
5
- @mouseleave=${this.handleMouseLeave}
6
- >
7
- <div class="popover__trigger" part="trigger" @click=${this.toggle}>
8
- <slot name="trigger"></slot>
9
- </div>
10
-
11
- ${this.open?i.html`
12
- <div
13
- data-popper
14
- class="popover__panel"
15
- role="dialog"
16
- aria-hidden=${this.open?"false":"true"}
17
- >
18
- ${this.noArrow?null:i.html`<div data-popper-arrow class="popper-arrow"></div>`}
19
- <div class="popover__content">
20
- ${this.title?i.html`
21
- <div class="popover__title">${this.title}</div>
22
- `:null}
23
- <div class="popover__body ${e?"popover__body--with-border":""}">
24
- <slot></slot>
25
- </div>
26
- </div>
27
- </div>
28
- `:null}
29
- </div>
30
- `}};exports.Popover.styles=[i.css`${i.unsafeCSS(c)}`];t([o.property({type:String})],exports.Popover.prototype,"title",2);t([o.property({type:String})],exports.Popover.prototype,"trigger",2);t([o.property({type:String})],exports.Popover.prototype,"placement",2);t([o.property({type:Number})],exports.Popover.prototype,"offset",2);t([o.property({type:Boolean,reflect:!0})],exports.Popover.prototype,"open",2);t([o.property({type:Boolean})],exports.Popover.prototype,"closeOnOutsideClick",2);t([o.property({type:Boolean})],exports.Popover.prototype,"noArrow",2);t([o.query('[part="trigger"]')],exports.Popover.prototype,"triggerElement",2);t([o.query("[data-popper]")],exports.Popover.prototype,"popperElement",2);t([o.query("[data-popper-arrow]")],exports.Popover.prototype,"popperArrowElement",2);exports.Popover=t([o.customElement("logosphere-popover")],exports.Popover);
@@ -1 +0,0 @@
1
- export { UiIcon } from "./ui-icon.js";
@@ -1,41 +0,0 @@
1
- "use strict";const s=require("lit"),r=require("lit/decorators.js"),h=":host{display:block}.tab{width:100%;font-family:var(--font-family-base)}.tab__list{display:flex;overflow-x:auto;overflow-y:hidden;border-bottom:1px solid var(--color-border);scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none}.tab__list::-webkit-scrollbar{display:none}.tab__button{display:inline-flex;flex-direction:row;align-items:center;gap:var(--spacing-2);padding:var(--spacing-3) var(--spacing-4);min-width:120px;position:relative;cursor:pointer;border:none;border-bottom:2px solid transparent;background:transparent;font-family:var(--font-family-base);white-space:nowrap;transition:background-color var(--transition-speed-base) var(--transition-timing),border-color var(--transition-speed-base) var(--transition-timing)}.tab__button:hover:not(.tab__button--disabled):not(.tab__button--active){background-color:var(--color-light)}.tab__button--active{border-bottom-color:var(--color-primary)}.tab__button--disabled{cursor:not-allowed;opacity:.4;pointer-events:none}.tab__icon{font-size:var(--font-size-xl);flex-shrink:0;color:inherit;line-height:1}.tab__content{display:flex;flex-direction:column;align-items:flex-start}.tab__label{font-weight:var(--font-weight-medium);font-size:var(--font-size-sm);color:var(--color-body-text)}.tab__label--inactive{color:var(--color-tertiary)}.tab__description{font-size:var(--font-size-xs);text-align:left;color:var(--color-tertiary)}.tab__description--active{color:var(--color-secondary)}.tab__panel{padding:var(--spacing-4);outline:none}.tab__panel--hidden{display:none}.tab--segmented .tab__list{display:inline-flex;position:relative;border-bottom:none;background-color:var(--color-light);border-radius:var(--radius-base);padding:0;gap:0;overflow:visible}.tab__segment-pill{position:absolute;top:0;bottom:0;left:0;width:0;background-color:var(--color-white, #ffffff);border:1px solid var(--color-border);border-radius:var(--radius-base);pointer-events:none;z-index:0;transition:transform .22s cubic-bezier(.35,0,.25,1),width .22s cubic-bezier(.35,0,.25,1)}.tab--segmented .tab__button{position:relative;z-index:1;min-width:unset;height:32px;padding:var(--spacing-1) var(--spacing-3);border:1px solid transparent;border-bottom:1px solid transparent;border-radius:var(--radius-base);background:transparent;transition:color var(--transition-speed-base) var(--transition-timing)}.tab--segmented .tab__button:hover:not(.tab__button--disabled):not(.tab__button--active){background-color:transparent}.tab--segmented .tab__button--active{background-color:transparent;border-color:transparent}.tab--segmented .tab__label{color:var(--color-secondary);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);line-height:20px;letter-spacing:-.14px}.tab--segmented .tab__label--inactive{color:var(--color-secondary)}.tab--segmented .tab__button--active .tab__label,.tab--segmented .tab__button--active .tab__label--inactive{color:var(--color-primary)}.tab--segmented .tab__icon{color:inherit;font-size:var(--font-size-base)}.tab--segmented .tab__panels{margin-top:var(--spacing-3)}.tab--segmented .tab__panel{padding:0}";var p=Object.defineProperty,_=Object.getOwnPropertyDescriptor,l=(b,t,i,e)=>{for(var a=e>1?void 0:e?_(t,i):t,o=b.length-1,n;o>=0;o--)(n=b[o])&&(a=(e?n(t,i,a):n(a))||a);return e&&a&&p(t,i,a),a};exports.LogosphereTab=class extends s.LitElement{constructor(){super(...arguments),this.tabs=[],this.activeTab="",this.lazy=!0,this.variant="default",this._focusedIndex=0,this._renderedTabs=new Set,this._pillInitialized=!1}connectedCallback(){super.connectedCallback(),!this.activeTab&&this.tabs.length>0&&(this.activeTab=this.tabs[0].id)}disconnectedCallback(){super.disconnectedCallback(),this._pillResizeObserver?.disconnect(),this._pillResizeObserver=void 0}willUpdate(t){if(super.willUpdate(t),t.has("activeTab")&&this.activeTab){this._renderedTabs.add(this.activeTab);const i=this.tabs.findIndex(e=>e.id===this.activeTab);i!==-1&&(this._focusedIndex=i)}t.has("tabs")&&this.tabs.length>0&&(this.tabs.some(e=>e.id===this.activeTab)||(this.activeTab=this.tabs[0].id),this._focusedIndex=this.tabs.findIndex(e=>e.id===this.activeTab))}handleTabClick(t,i){if(i)return;const e=this.activeTab;this.activeTab=t,this._focusedIndex=this.tabs.findIndex(a=>a.id===t),this.dispatchEvent(new CustomEvent("tab-change",{detail:{oldTab:e,newTab:t},bubbles:!0,composed:!0}))}handleKeyDown(t){const{tabs:i}=this;if(i.filter(o=>!o.disabled).length===0)return;let e=this._focusedIndex;const a=this._focusedIndex;switch(t.key){case"ArrowLeft":t.preventDefault();do e=e>0?e-1:i.length-1;while(i[e]?.disabled&&e!==a);break;case"ArrowRight":t.preventDefault();do e=e<i.length-1?e+1:0;while(i[e]?.disabled&&e!==a);break;case"Home":for(t.preventDefault(),e=0;i[e]?.disabled&&e<i.length-1;)e++;break;case"End":for(t.preventDefault(),e=i.length-1;i[e]?.disabled&&e>0;)e--;break;default:return}if(e!==this._focusedIndex&&!i[e]?.disabled){const o=this.activeTab;this._focusedIndex=e,this.activeTab=i[e].id,this.updateComplete.then(()=>{this.shadowRoot?.querySelector(`[role="tab"][data-tab-id="${i[e].id}"]`)?.focus()}),this.dispatchEvent(new CustomEvent("tab-change",{detail:{oldTab:o,newTab:i[e].id},bubbles:!0,composed:!0}))}}updated(t){super.updated(t),this.variant==="segmented"&&(this._ensurePillObserver(),this._updateSegmentPill())}_ensurePillObserver(){if(this._pillResizeObserver)return;const t=this.shadowRoot?.querySelector(".tab__list");!t||typeof ResizeObserver>"u"||(this._pillResizeObserver=new ResizeObserver(()=>this._updateSegmentPill()),this._pillResizeObserver.observe(t))}_updateSegmentPill(){const t=this.shadowRoot?.querySelector(".tab__segment-pill"),i=this.shadowRoot?.querySelector(".tab__button--active"),e=this.shadowRoot?.querySelector(".tab__list");if(!t||!i||!e)return;const a=e.getBoundingClientRect(),o=i.getBoundingClientRect();if(o.width===0)return;const n=parseFloat(getComputedStyle(e).paddingLeft)||0,d=o.left-a.left-e.clientLeft-n+e.scrollLeft,c=o.width;this._pillInitialized?(t.style.transform=`translateX(${d}px)`,t.style.width=`${c}px`):(t.style.transition="none",t.style.transform=`translateX(${d}px)`,t.style.width=`${c}px`,requestAnimationFrame(()=>{t.style.transition=""}),this._pillInitialized=!0)}scrollTabIntoView(t){this.updateComplete.then(()=>{const i=this.shadowRoot?.querySelector(`[role="tab"][data-tab-id="${t}"]`);if(i&&this.tablist){const e=this.tablist.getBoundingClientRect(),a=i.getBoundingClientRect();a.left<e.left?this.tablist.scrollLeft-=e.left-a.left+16:a.right>e.right&&(this.tablist.scrollLeft+=a.right-e.right+16)}})}renderTabButton(t,i){const e=this.activeTab===t.id,a=this._focusedIndex===i,o=["tab__button",e?"tab__button--active":"",t.disabled?"tab__button--disabled":""].filter(Boolean).join(" "),n=["tab__label",e?"":"tab__label--inactive"].filter(Boolean).join(" "),d=["tab__description",e?"tab__description--active":""].filter(Boolean).join(" ");return s.html`
2
- <button
3
- role="tab"
4
- class=${o}
5
- data-tab-id=${t.id}
6
- aria-selected=${e?"true":"false"}
7
- aria-controls="panel-${t.id}"
8
- tabindex=${e||a?"0":"-1"}
9
- ?disabled=${t.disabled}
10
- @click=${()=>this.handleTabClick(t.id,t.disabled)}
11
- @focus=${()=>this.scrollTabIntoView(t.id)}
12
- >
13
- ${t.icon?s.html`<i class="${t.icon} tab__icon"></i>`:s.nothing}
14
- <div class="tab__content">
15
- <span class=${n}>${t.label}</span>
16
- ${t.description?s.html`<span class=${d}>${t.description}</span>`:s.nothing}
17
- </div>
18
- </button>
19
- `}renderTabPanel(t){const i=this.activeTab===t.id;if(!(!this.lazy||this._renderedTabs.has(t.id)))return s.nothing;const a=["tab__panel",i?"":"tab__panel--hidden"].filter(Boolean).join(" ");return s.html`
20
- <div
21
- role="tabpanel"
22
- id="panel-${t.id}"
23
- aria-labelledby="tab-${t.id}"
24
- class=${a}
25
- tabindex="0"
26
- >
27
- <slot name=${`panel-${t.id}`}>
28
- ${typeof t.content=="string"?s.html`${t.content}`:s.nothing}
29
- </slot>
30
- </div>
31
- `}render(){return s.html`
32
- <div class="tab tab--${this.variant}">
33
- <div role="tablist" aria-label="Tabs" class="tab__list" @keydown=${this.handleKeyDown}>
34
- ${this.variant==="segmented"?s.html`<span class="tab__segment-pill" aria-hidden="true"></span>`:s.nothing}
35
- ${this.tabs.map((t,i)=>this.renderTabButton(t,i))}
36
- </div>
37
- <div class="tab__panels">${this.tabs.map(t=>this.renderTabPanel(t))}</div>
38
- </div>
39
- `}};exports.LogosphereTab.styles=[s.css`
40
- ${s.unsafeCSS(h)}
41
- `];l([r.property({type:Array})],exports.LogosphereTab.prototype,"tabs",2);l([r.property({type:String})],exports.LogosphereTab.prototype,"activeTab",2);l([r.property({type:Boolean})],exports.LogosphereTab.prototype,"lazy",2);l([r.property({type:String})],exports.LogosphereTab.prototype,"variant",2);l([r.state()],exports.LogosphereTab.prototype,"_focusedIndex",2);l([r.state()],exports.LogosphereTab.prototype,"_renderedTabs",2);l([r.query('[role="tablist"]')],exports.LogosphereTab.prototype,"tablist",2);exports.LogosphereTab=l([r.customElement("logosphere-tab")],exports.LogosphereTab);
@@ -1,51 +0,0 @@
1
- "use strict";const i=require("lit"),t=require("lit/decorators.js"),p=require("lit/directives/live.js");require("./formfield-JXiv9mvJ.cjs");require("./ui-icon-Cd5YhUeQ.cjs");const u=":host{display:block}.textarea__wrap{position:relative;flex:1;min-width:0}.textarea__field{display:block;width:100%;background:transparent;border:none;outline:none;font-size:14px;font-family:var(--font-family-base);font-weight:var(--font-weight-regular);line-height:1.25rem;letter-spacing:-.14px;color:var(--color-body-text);box-sizing:border-box}.textarea__field::placeholder{color:var(--color-tertiary)}.textarea__field:disabled{cursor:not-allowed}.textarea__field--resize-none{resize:none}.textarea__field--resize-vertical{resize:vertical}.textarea__field--resize-horizontal{resize:horizontal}.textarea__field--resize-both{resize:both}.textarea__field--auto-resize{resize:none;overflow:hidden}.textarea__counter{position:absolute;bottom:5px;right:18px;font-size:11px;font-weight:var(--font-weight-medium);line-height:1rem;letter-spacing:-.11px;color:var(--color-secondary);background-color:var(--color-light-bg-2);border-radius:var(--radius-sm, 4px);padding:0 var(--spacing-1);white-space:nowrap;-webkit-user-select:none;user-select:none;pointer-events:none}.textarea__wrap--no-grip .textarea__counter{right:4px}.textarea__clear-btn{border:none;background:transparent;color:var(--color-tertiary);cursor:pointer;padding:0;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;outline:none;line-height:0;transition:color var(--transition-speed-fast) var(--transition-timing)}.textarea__clear-btn:hover{color:var(--color-body-text)}";var d=Object.defineProperty,c=Object.getOwnPropertyDescriptor,r=(n,e,a,s)=>{for(var o=s>1?void 0:s?c(e,a):e,l=n.length-1,h;l>=0;l--)(h=n[l])&&(o=(s?h(e,a,o):h(o))||o);return s&&o&&d(e,a,o),o};exports.TextArea=class extends i.LitElement{constructor(){super(...arguments),this.value="",this.placeholder="",this.name="",this.autocomplete="",this.rows=3,this.maxRows=8,this.wrap="soft",this.resize="vertical",this.autoResize=!0,this.size="default",this.variant="default",this.label="",this.helper="",this.error="",this.required=!1,this.disabled=!1,this.readonly=!1,this._internalError="",this._charCount=0,this.handleInput=e=>{const a=e.target;this.value=a.value,this._charCount=this.value.length,this.autoResize&&this.adjustHeight(),this._internalError&&(this._internalError="",this._textareaElement.setCustomValidity("")),this.dispatchEvent(new CustomEvent("input",{bubbles:!0,composed:!0,detail:{value:this.value,originalEvent:e}}))},this.handleChange=e=>{const a=e.target;this.value=a.value,a.checkValidity()||(this._internalError=a.validationMessage),this.dispatchEvent(new CustomEvent("change",{bubbles:!0,composed:!0,detail:{value:this.value,originalEvent:e}})),this.dispatchEvent(new CustomEvent("lgsChange",{bubbles:!0,composed:!0,detail:{value:this.value}}))},this.handleKeyDown=e=>{this.dispatchEvent(new CustomEvent("keydown",{bubbles:!0,composed:!0,detail:{key:e.key,originalEvent:e}}))},this.handleKeyUp=e=>{this.dispatchEvent(new CustomEvent("keyup",{bubbles:!0,composed:!0,detail:{key:e.key,originalEvent:e}}))},this.handleClear=()=>{this.value="",this._charCount=0,this._textareaElement&&(this._textareaElement.value="",this.autoResize&&this.adjustHeight()),this.dispatchEvent(new CustomEvent("clear",{bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("input",{bubbles:!0,composed:!0,detail:{value:"",originalEvent:null}}))}}get textareaElement(){return this._textareaElement}focus(){this._textareaElement?.focus()}blur(){this._textareaElement?.blur()}select(){this._textareaElement?.select()}setSelectionRange(e,a,s){this._textareaElement?.setSelectionRange(e,a,s)}checkValidity(){return this._textareaElement?.checkValidity()??!0}reportValidity(){return this._textareaElement?.reportValidity()??!0}setCustomValidity(e){this._textareaElement?.setCustomValidity(e),this._internalError=e,this.requestUpdate()}adjustHeight(){if(!this.autoResize||!this._textareaElement)return;const e=this._textareaElement;e.style.height="",e.style.overflow="hidden";const a=e.scrollHeight;if(a!==0){if(this.maxRows>0){const s=parseFloat(getComputedStyle(e).lineHeight)||20,o=Math.round(s*this.maxRows);if(a>=o){e.style.height=`${o}px`,e.style.overflow="auto";return}}e.style.height=`${a}px`}}getResizeClass(){return this.autoResize?"textarea__field--auto-resize":{none:"textarea__field--resize-none",vertical:"textarea__field--resize-vertical",horizontal:"textarea__field--resize-horizontal",both:"textarea__field--resize-both"}[this.resize]}firstUpdated(){this._charCount=this.value.length,this.autoResize&&requestAnimationFrame(()=>this.adjustHeight())}updated(e){super.updated(e),e.has("value")&&(this._charCount=this.value.length,this.autoResize&&this.adjustHeight())}getWrapClass(){return this.autoResize||this.resize==="none"?"textarea__wrap textarea__wrap--no-grip":"textarea__wrap"}render(){const e=this.error||this._internalError,a=!!this.value&&!this.disabled&&!this.readonly,s=this.maxlength!=null,o=`textarea__field ${this.getResizeClass()}`;return i.html`
2
- <logosphere-formfield
3
- .label=${this.label}
4
- .helper=${this.helper}
5
- .error=${e}
6
- .required=${this.required}
7
- .disabled=${this.disabled}
8
- .readonly=${this.readonly}
9
- .size=${this.size}
10
- .variant=${this.variant}
11
- .multiline=${!0}
12
- >
13
- <slot name="prefix" slot="prefix"></slot>
14
- <div class="${this.getWrapClass()}">
15
- <textarea
16
- class="${o}"
17
- .value=${p.live(this.value)}
18
- placeholder=${this.placeholder||i.nothing}
19
- name=${this.name||i.nothing}
20
- autocomplete=${this.autocomplete||i.nothing}
21
- ?required=${this.required}
22
- ?disabled=${this.disabled}
23
- ?readonly=${this.readonly}
24
- minlength=${this.minlength??i.nothing}
25
- maxlength=${this.maxlength??i.nothing}
26
- rows=${this.rows}
27
- cols=${this.cols??i.nothing}
28
- wrap=${this.wrap}
29
- @input=${this.handleInput}
30
- @change=${this.handleChange}
31
- @keydown=${this.handleKeyDown}
32
- @keyup=${this.handleKeyUp}
33
- ></textarea>
34
- ${s?i.html`
35
- <span class="textarea__counter">${this._charCount}/${this.maxlength}</span>
36
- `:i.nothing}
37
- </div>
38
- ${a?i.html`
39
- <button
40
- type="button"
41
- slot="clear"
42
- class="textarea__clear-btn"
43
- @click=${this.handleClear}
44
- tabindex="-1"
45
- >
46
- <ui-icon name="uil-times" size="14"></ui-icon>
47
- </button>
48
- `:i.nothing}
49
- <slot name="suffix" slot="suffix"></slot>
50
- </logosphere-formfield>
51
- `}};exports.TextArea.styles=[i.css`${i.unsafeCSS(u)}`];r([t.query("textarea")],exports.TextArea.prototype,"_textareaElement",2);r([t.property({type:String})],exports.TextArea.prototype,"value",2);r([t.property({type:String})],exports.TextArea.prototype,"placeholder",2);r([t.property({type:String})],exports.TextArea.prototype,"name",2);r([t.property({type:String})],exports.TextArea.prototype,"autocomplete",2);r([t.property({type:Number})],exports.TextArea.prototype,"minlength",2);r([t.property({type:Number})],exports.TextArea.prototype,"maxlength",2);r([t.property({type:Number})],exports.TextArea.prototype,"rows",2);r([t.property({type:Number})],exports.TextArea.prototype,"maxRows",2);r([t.property({type:Number})],exports.TextArea.prototype,"cols",2);r([t.property({type:String})],exports.TextArea.prototype,"wrap",2);r([t.property({type:String})],exports.TextArea.prototype,"resize",2);r([t.property({type:Boolean})],exports.TextArea.prototype,"autoResize",2);r([t.property({type:String})],exports.TextArea.prototype,"size",2);r([t.property({type:String})],exports.TextArea.prototype,"variant",2);r([t.property({type:String})],exports.TextArea.prototype,"label",2);r([t.property({type:String})],exports.TextArea.prototype,"helper",2);r([t.property({type:String})],exports.TextArea.prototype,"error",2);r([t.property({type:Boolean})],exports.TextArea.prototype,"required",2);r([t.property({type:Boolean})],exports.TextArea.prototype,"disabled",2);r([t.property({type:Boolean})],exports.TextArea.prototype,"readonly",2);r([t.state()],exports.TextArea.prototype,"_internalError",2);r([t.state()],exports.TextArea.prototype,"_charCount",2);exports.TextArea=r([t.customElement("logosphere-textarea")],exports.TextArea);
@@ -1,64 +0,0 @@
1
- "use strict";const o=require("lit"),a=require("lit/decorators.js"),m=require("lit/directives/repeat.js");require("./ui-icon-Cd5YhUeQ.cjs");require("./button-MBxtvVqn.cjs");const d=":host{display:block}.toast{position:relative;display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:start;width:100%;box-sizing:border-box;border-radius:var(--radius-md);border-left:4px solid var(--toast-accent);background:#fff;box-shadow:var(--shadow-md);padding:var(--spacing-4);color:#3d3d3d;font-family:var(--font-family-base);animation:toast-enter .22s cubic-bezier(.2,.8,.2,1);transform-origin:top right}.toast__icon{display:inline-flex;margin-top:2px;color:var(--toast-accent)}.toast__content{min-width:0}.toast__title{margin:0;font-size:var(--font-size-lg);line-height:var(--line-height-tight);font-weight:var(--font-weight-semibold)}.toast__title--as-text{font-size:var(--font-size-base);line-height:var(--line-height-normal);font-weight:var(--font-weight-regular);color:#555}.toast__text{margin:4px 0 0;font-size:var(--font-size-base);line-height:var(--line-height-normal);color:#555}.toast__actions{display:flex;gap:10px;margin-top:12px}.toast__close{border:0;background:transparent;color:#5a5a5a;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;margin-top:2px}.toast__close:hover{color:#2f2f2f}.toast--success{--toast-accent: var(--color-success-active)}.toast--danger{--toast-accent: var(--color-danger-active)}.toast--warning{--toast-accent: var(--color-warning-active)}.toast--info{--toast-accent: var(--color-info-active)}.toast[data-closing=true]{pointer-events:none;animation:toast-exit .22s cubic-bezier(.4,0,1,1) forwards}@keyframes toast-enter{0%{opacity:0;transform:translate3d(18px,-8px,0) scale(.98)}to{opacity:1;transform:translateZ(0) scale(1)}}@keyframes toast-exit{0%{opacity:1;transform:translateZ(0) scale(1);max-height:240px;margin-bottom:0}to{opacity:0;transform:translate3d(20px,-6px,0) scale(.97);max-height:0;margin-bottom:-12px}}";var g=Object.defineProperty,f=Object.getOwnPropertyDescriptor,r=(n,t,e,s)=>{for(var i=s>1?void 0:s?f(t,e):t,c=n.length-1,l;c>=0;c--)(l=n[c])&&(i=(s?l(t,e,i):l(i))||i);return s&&i&&g(t,e,i),i};const h=6e3,T=220,v={success:"uil-check-circle",danger:"uil-exclamation-octagon",warning:"uil-exclamation-triangle",info:"uil-info-circle"};exports.LogosphereToast=class extends o.LitElement{constructor(){super(...arguments),this.type="info",this.title="",this.text="",this.icon="",this.closeable=!0,this.duration=h,this.autoDismiss=!0,this.isClosing=!1,this.remainingMs=h,this.startedAt=0}connectedCallback(){super.connectedCallback(),this.remainingMs=this.duration,this.startTimer()}disconnectedCallback(){super.disconnectedCallback(),this.clearTimer(),this.closeTimerId&&(clearTimeout(this.closeTimerId),this.closeTimerId=void 0)}updated(t){t.has("duration")&&(this.remainingMs=this.duration,this.restartTimer()),(t.has("action")||t.has("autoDismiss")||t.has("type"))&&this.restartTimer()}close(t="manual"){this.isClosing||(this.clearTimer(),this.isClosing=!0,this.closeTimerId=setTimeout(()=>{this.dispatchEvent(new CustomEvent("toast-close",{detail:{reason:t},bubbles:!0,composed:!0}))},T))}get canAutoDismiss(){return this.autoDismiss&&this.type!=="danger"&&!this.hasActions}get resolvedTitle(){return this.title||this.text}get resolvedText(){return this.title?this.text:""}get resolvedIcon(){return this.icon||v[this.type]}get hasActions(){return!!this.action}onActionClick(t){this.action&&(t==="okay"?this.action.onOkay?.():this.action.onCancel?.(),(this.action.closeOnAction??!0)&&this.close("manual"))}clearTimer(){this.timerId&&(clearTimeout(this.timerId),this.timerId=void 0)}startTimer(){this.clearTimer(),!(!this.canAutoDismiss||this.remainingMs<=0)&&(this.startedAt=Date.now(),this.timerId=setTimeout(()=>this.close("auto"),this.remainingMs))}pauseTimer(){this.timerId&&(this.clearTimer(),this.remainingMs=Math.max(0,this.remainingMs-(Date.now()-this.startedAt)))}resumeTimer(){this.canAutoDismiss&&this.startTimer()}restartTimer(){this.clearTimer(),this.startTimer()}render(){return o.html`
2
- <article
3
- class="toast toast--${this.type}"
4
- data-closing=${this.isClosing?"true":"false"}
5
- role="status"
6
- aria-live=${this.type==="danger"?"assertive":"polite"}
7
- @mouseenter=${this.pauseTimer}
8
- @mouseleave=${this.resumeTimer}
9
- >
10
- <span class="toast__icon">
11
- <ui-icon name=${this.resolvedIcon} size="20"></ui-icon>
12
- </span>
13
-
14
- <div class="toast__content">
15
- <h4 class=${this.title?"toast__title":"toast__title toast__title--as-text"}>
16
- ${this.resolvedTitle}
17
- </h4>
18
- ${this.resolvedText?o.html`<p class="toast__text">${this.resolvedText}</p>`:o.nothing}
19
- ${this.hasActions?o.html`
20
- <div class="toast__actions">
21
- <logosphere-button
22
- variant="outline"
23
- theme="primary"
24
- @click=${()=>this.onActionClick("okay")}
25
- >
26
- ${this.action?.okayLabel||"Tamam"}
27
- </logosphere-button>
28
- <logosphere-button
29
- variant="text"
30
- theme="secondary"
31
- @click=${()=>this.onActionClick("cancel")}
32
- >
33
- ${this.action?.cancelLabel||"İptal"}
34
- </logosphere-button>
35
- </div>
36
- `:o.nothing}
37
- </div>
38
-
39
- ${this.closeable?o.html`
40
- <button class="toast__close" @click=${()=>this.close("manual")} aria-label="Close">
41
- <ui-icon name="uil-times" size="20"></ui-icon>
42
- </button>
43
- `:o.nothing}
44
- </article>
45
- `}};exports.LogosphereToast.styles=[o.css`
46
- ${o.unsafeCSS(d)}
47
- `];r([a.property({type:String})],exports.LogosphereToast.prototype,"type",2);r([a.property({type:String})],exports.LogosphereToast.prototype,"title",2);r([a.property({type:String})],exports.LogosphereToast.prototype,"text",2);r([a.property({type:String})],exports.LogosphereToast.prototype,"icon",2);r([a.property({type:Boolean})],exports.LogosphereToast.prototype,"closeable",2);r([a.property({type:Number})],exports.LogosphereToast.prototype,"duration",2);r([a.property({type:Boolean})],exports.LogosphereToast.prototype,"autoDismiss",2);r([a.property({attribute:!1})],exports.LogosphereToast.prototype,"action",2);r([a.state()],exports.LogosphereToast.prototype,"isClosing",2);exports.LogosphereToast=r([a.customElement("logosphere-toast")],exports.LogosphereToast);const b=":host{position:fixed;top:16px;right:16px;z-index:9999;width:min(420px,calc(100vw - 24px));box-sizing:border-box}.toast-container{display:flex;flex-direction:column;gap:12px}";var y=Object.defineProperty,x=Object.getOwnPropertyDescriptor,p=(n,t,e,s)=>{for(var i=s>1?void 0:s?x(t,e):t,c=n.length-1,l;c>=0;c--)(l=n[c])&&(i=(s?l(t,e,i):l(i))||i);return s&&i&&y(t,e,i),i};const u=4;exports.LogosphereToastContainer=class extends o.LitElement{constructor(){super(...arguments),this.visibleToasts=[],this.queuedToasts=[]}show(t){const e=this.toToast(t);return this.visibleToasts.length<u?(this.visibleToasts=[e,...this.visibleToasts],e.id):(this.queuedToasts.push(e),e.id)}close(t){const e=this.visibleToasts.findIndex(s=>s.id===t);if(e!==-1){const s=this.visibleToasts.slice();s.splice(e,1),this.visibleToasts=s,this.dequeue();return}this.queuedToasts=this.queuedToasts.filter(s=>s.id!==t)}clear(){this.visibleToasts=[],this.queuedToasts=[]}dequeue(){if(!this.queuedToasts.length||this.visibleToasts.length>=u)return;const t=this.queuedToasts.shift();t&&(this.visibleToasts=[t,...this.visibleToasts])}toToast(t){return{id:t.id||this.createId(),type:t.type||"info",title:t.title||"",text:t.text,icon:t.icon||"",closeable:t.closeable??!0,autoDismiss:t.autoDismiss??!0,duration:t.duration??6e3,action:t.action}}createId(){return`toast-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}render(){return o.html`
48
- <div class="toast-container" role="region" aria-label="Notifications">
49
- ${m.repeat(this.visibleToasts,t=>t.id,t=>o.html`
50
- <logosphere-toast
51
- .type=${t.type}
52
- .title=${t.title}
53
- .text=${t.text}
54
- .icon=${t.icon}
55
- .closeable=${t.closeable}
56
- .autoDismiss=${t.autoDismiss}
57
- .duration=${t.duration}
58
- .action=${t.action}
59
- @toast-close=${()=>this.close(t.id)}
60
- >
61
- </logosphere-toast>
62
- `)}
63
- </div>
64
- `}};exports.LogosphereToastContainer.styles=[o.css`${o.unsafeCSS(b)}`];p([a.state()],exports.LogosphereToastContainer.prototype,"visibleToasts",2);exports.LogosphereToastContainer=p([a.customElement("logosphere-toast-container")],exports.LogosphereToastContainer);class _{static show(t){return this.getContainer().show(t)}static success(t){return this.show({...t,type:"success"})}static danger(t){return this.show({...t,type:"danger",autoDismiss:!1})}static warning(t){return this.show({...t,type:"warning"})}static info(t){return this.show({...t,type:"info"})}static close(t){this.getContainer().close(t)}static clear(){this.getContainer().clear()}static getContainer(){if(this.container&&document.body.contains(this.container))return this.container;const t=document.querySelector("logosphere-toast-container");if(t&&t instanceof exports.LogosphereToastContainer)return this.container=t,t;const e=document.createElement("logosphere-toast-container");return document.body.appendChild(e),this.container=e,e}}exports.ToastService=_;
@@ -1,47 +0,0 @@
1
- "use strict";const r=require("lit"),s=require("lit/decorators.js"),d=require("lit/directives/unsafe-html.js");require("./ui-icon-Cd5YhUeQ.cjs");const h=":host{display:block}.tree{width:100%;font-family:var(--font-family-base)}.tree__list,.tree__children{list-style:none;margin:0;padding:0}.tree__item{margin:0;padding:0}.tree__row{display:flex;align-items:center;gap:var(--spacing-1);padding:var(--spacing-2) var(--spacing-3);padding-left:calc(var(--spacing-3) + (var(--tree-level, 0) * 14px));border-radius:var(--radius-sm);color:var(--color-body-color);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color var(--transition-speed-fast) var(--transition-timing)}.tree--icons .tree__row{justify-content:center;padding:0;width:44px;height:44px;min-height:44px;margin:0 auto}.tree__row:hover{background-color:var(--color-light)}.tree__row:focus-visible{outline:2px solid var(--color-secondary);outline-offset:1px}.tree__row--disabled{opacity:.5;cursor:not-allowed}.tree__row--active .tree__label,.tree__row--active .tree__icon{color:var(--color-primary)}.tree:not(.tree--icons) .tree__row--active{background-color:var(--color-light)}.tree__icon{width:20px;min-width:20px;display:inline-flex;align-items:center;justify-content:center;color:inherit}.tree--icons .tree__icon{width:20px;min-width:20px;height:20px}.tree--icons .tree__row--active{background-color:var(--color-primary)}.tree--icons .tree__row--active .tree__icon{color:#fff}.tree--icons .tree__row--active:hover{background-color:var(--color-primary-hover)}.tree__chevron-btn{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border:none;background:transparent;color:var(--color-tertiary);cursor:pointer;padding:0;flex-shrink:0}.tree__chevron-btn--right{margin-left:auto}.tree__chevron{transform:rotate(-90deg);transition:transform var(--transition-speed-fast) var(--transition-timing)}.tree__chevron--open{transform:rotate(0)}.tree__chevron-spacer{width:20px;height:20px;flex-shrink:0}.tree__label{display:inline-flex;align-items:center;font-size:var(--font-size-sm);color:inherit}";var p=Object.defineProperty,_=Object.getOwnPropertyDescriptor,a=(c,e,t,n)=>{for(var i=n>1?void 0:n?_(e,t):e,l=c.length-1,o;l>=0;l--)(o=c[l])&&(i=(n?o(e,t,i):o(i))||i);return n&&i&&p(e,t,i),i};exports.TreeMenu=class extends r.LitElement{constructor(){super(...arguments),this.items=[],this.expandedIds=[],this.expandOnLabelClick=!0,this.chevronPosition="left",this.showLabels=!0,this.iconSize=16,this._expandedSet=new Set}willUpdate(e){e.has("expandedIds")&&(this._expandedSet=new Set(this.expandedIds??[]))}_isExpanded(e){return this._expandedSet.has(e)}_emitToggle(e,t){this.dispatchEvent(new CustomEvent("toggle",{detail:{item:e,expanded:t},bubbles:!0,composed:!0}))}_emitItemClick(e){this.dispatchEvent(new CustomEvent("item-click",{detail:{item:e},bubbles:!0,composed:!0}))}_emitNodeClick(e,t){this.dispatchEvent(new CustomEvent("node-click",{detail:{item:e,hasChildren:t},bubbles:!0,composed:!0}))}_setExpanded(e,t){t?this._expandedSet.add(e.id):this._expandedSet.delete(e.id),this.expandedIds=Array.from(this._expandedSet),this._emitToggle(e,t)}_toggle(e,t){t.stopPropagation(),!(e.disabled||!e.children?.length)&&this._setExpanded(e,!this._isExpanded(e.id))}_handleItemClick(e,t){if(t.stopPropagation(),e.disabled)return;const n=!!e.children?.length;if(this._emitNodeClick(e,n),n&&this.expandOnLabelClick){this._setExpanded(e,!this._isExpanded(e.id));return}n||(e.onClick?.(e),this._emitItemClick(e))}_handleRowKeydown(e,t){t.key!=="Enter"&&t.key!==" "||(t.preventDefault(),this._handleItemClick(e,t))}_renderIcon(e){return e.iconName?r.html`
2
- <span class="tree__icon">
3
- <ui-icon name=${e.iconName} .size=${this.iconSize}></ui-icon>
4
- </span>
5
- `:e.iconHtml?r.html`<span class="tree__icon">${d.unsafeHTML(e.iconHtml)}</span>`:r.nothing}_renderChevron(e,t){const n=!!e.children?.length;return this.showLabels?n?r.html`
6
- <button
7
- type="button"
8
- class="tree__chevron-btn ${this.chevronPosition==="right"?"tree__chevron-btn--right":""}"
9
- aria-label=${t?"Collapse":"Expand"}
10
- @click=${i=>this._toggle(e,i)}
11
- >
12
- <ui-icon
13
- class="tree__chevron ${t?"tree__chevron--open":""}"
14
- name="uil-angle-down"
15
- size="20"
16
- ></ui-icon>
17
- </button>
18
- `:r.html`<span class="tree__chevron-spacer"></span>`:r.nothing}_renderNode(e,t){const n=!!e.children?.length,i=n?this._isExpanded(e.id):!1,l=this.showLabels?`--tree-level:${t};`:"--tree-level:0;";return r.html`
19
- <li class="tree__item">
20
- <div
21
- class="tree__row ${e.disabled?"tree__row--disabled":""} ${e.active?"tree__row--active":""}"
22
- style=${l}
23
- role="button"
24
- tabindex=${e.disabled?-1:0}
25
- @click=${o=>this._handleItemClick(e,o)}
26
- @keydown=${o=>this._handleRowKeydown(e,o)}
27
- title=${this.showLabels?"":e.label}
28
- >
29
- ${this.chevronPosition==="left"?this._renderChevron(e,i):r.nothing}
30
- ${this._renderIcon(e)}
31
- ${this.showLabels?r.html`<span class="tree__label">${e.label}</span>`:r.nothing}
32
- ${this.chevronPosition==="right"?this._renderChevron(e,i):r.nothing}
33
- </div>
34
-
35
- ${this.showLabels&&n&&i?r.html`
36
- <ul class="tree__children">
37
- ${e.children.map(o=>this._renderNode(o,t+1))}
38
- </ul>
39
- `:r.nothing}
40
- </li>
41
- `}render(){return r.html`
42
- <nav class="tree ${this.showLabels?"":"tree--icons"}" aria-label="Tree Menu">
43
- <ul class="tree__list">
44
- ${this.items.map(e=>this._renderNode(e,0))}
45
- </ul>
46
- </nav>
47
- `}};exports.TreeMenu.styles=[r.css`${r.unsafeCSS(h)}`];a([s.property({attribute:!1})],exports.TreeMenu.prototype,"items",2);a([s.property({type:Array})],exports.TreeMenu.prototype,"expandedIds",2);a([s.property({type:Boolean})],exports.TreeMenu.prototype,"expandOnLabelClick",2);a([s.property({type:String})],exports.TreeMenu.prototype,"chevronPosition",2);a([s.property({type:Boolean})],exports.TreeMenu.prototype,"showLabels",2);a([s.property({type:Number})],exports.TreeMenu.prototype,"iconSize",2);a([s.state()],exports.TreeMenu.prototype,"_expandedSet",2);exports.TreeMenu=a([s.customElement("logosphere-tree-menu")],exports.TreeMenu);