@kyndryl-design-system/shidoka-applications 2.95.0 → 2.95.2

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.
@@ -36,6 +36,7 @@ export declare class WorkspaceSwitcher extends LitElement {
36
36
  currentTitle: string;
37
37
  workspacesTitle: string;
38
38
  backToWorkspaces: string;
39
+ launchAssistiveText: string;
39
40
  };
40
41
  /** Built-in account meta content for the left panel. */
41
42
  accessor accountMeta: WorkspaceSwitcherAccountMeta | null;
@@ -52,7 +53,7 @@ export declare class WorkspaceSwitcher extends LitElement {
52
53
  /** Merged text strings.
53
54
  * @internal
54
55
  */
55
- private _textStrings;
56
+ private accessor _textStrings;
56
57
  /** Tracks whether legacy left-slot content is present. */
57
58
  private accessor _hasLegacyLeftSlotContent;
58
59
  /** Tracks which copy-style account meta item is showing success feedback. */
@@ -89,9 +90,11 @@ export declare class WorkspaceSwitcher extends LitElement {
89
90
  connectedCallback(): void;
90
91
  disconnectedCallback(): void;
91
92
  willUpdate(changedProperties: Map<string, unknown>): void;
93
+ updated(changedProperties: Map<string, unknown>): void;
92
94
  render(): import("lit-html").TemplateResult<1>;
93
95
  private _handleBackClick;
94
96
  private _updateLegacyLeftSlotState;
97
+ private _updateChildMenuItemTextStrings;
95
98
  private _warnForLegacyLeftSlotUsage;
96
99
  private _renderAccountMeta;
97
100
  private _renderAccountMetaItem;
@@ -1 +1 @@
1
- {"version":3,"file":"workspaceSwitcher.d.ts","sourceRoot":"","sources":["../../../../src/components/global/workspaceSwitcher/workspaceSwitcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,KAAK,CAAC;AAOlD,OAAO,6BAA6B,CAAC;AACrC,OAAO,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAaxD,MAAM,WAAW,gCAAgC;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,gCAAgC,EAAE,CAAC;CAC5C;AAED;;;;;;;;;;;;;;GAcG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,OAAgB,MAAM,0BAAoC;IAE1D,iCAAiC;IAEjC,QAAQ,CAAC,WAAW;;;;MAAuB;IAE3C,wDAAwD;IAExD,QAAQ,CAAC,WAAW,EAAE,4BAA4B,GAAG,IAAI,CAAQ;IAEjE;;OAEG;IAEH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAU;IAE1C,qDAAqD;IAErD,QAAQ,CAAC,gBAAgB,UAAS;IAElC,4GAA4G;IAE5G,QAAQ,CAAC,mBAAmB,UAAS;IAErC,yDAAyD;IAEzD,QAAQ,CAAC,eAAe,UAAS;IAEjC;;OAEG;IACH,OAAO,CAAC,YAAY,CAAuB;IAE3C,0DAA0D;IAE1D,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAS;IAEnD,6EAA6E;IAE7E,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAuB;IAE/D;;;OAGG;IACH,OAAO,CAAC,WAAW,CAA4B;IAE/C;;;OAGG;IACH,OAAO,CAAC,oBAAoB,CAAuB;IAEnD;;;OAGG;IACH,OAAO,CAAC,iBAAiB,CAAiC;IAE1D;;;OAGG;IACH,OAAO,CAAC,6BAA6B,CAAS;IAE9C;;;OAGG;IACH,OAAO,CAAC,+BAA+B,CAAS;IAEhD;;OAEG;IACH,OAAO,CAAC,mBAAmB,CAKzB;IAEO,iBAAiB;IAkBjB,oBAAoB;IAYpB,UAAU,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAWlD,MAAM;IA8Cf,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,0BAA0B;IAOlC,OAAO,CAAC,2BAA2B;IAoBnC,OAAO,CAAC,kBAAkB;IA0B1B,OAAO,CAAC,sBAAsB;YAiDhB,2BAA2B;IA6BzC,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,kBAAkB;CAQ3B;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,wBAAwB,EAAE,iBAAiB,CAAC;KAC7C;CACF"}
1
+ {"version":3,"file":"workspaceSwitcher.d.ts","sourceRoot":"","sources":["../../../../src/components/global/workspaceSwitcher/workspaceSwitcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,KAAK,CAAC;AAOlD,OAAO,6BAA6B,CAAC;AAErC,OAAO,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAcxD,MAAM,WAAW,gCAAgC;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,gCAAgC,EAAE,CAAC;CAC5C;AAED;;;;;;;;;;;;;;GAcG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,OAAgB,MAAM,0BAAoC;IAE1D,iCAAiC;IAEjC,QAAQ,CAAC,WAAW;;;;;MAAuB;IAE3C,wDAAwD;IAExD,QAAQ,CAAC,WAAW,EAAE,4BAA4B,GAAG,IAAI,CAAQ;IAEjE;;OAEG;IAEH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAU;IAE1C,qDAAqD;IAErD,QAAQ,CAAC,gBAAgB,UAAS;IAElC,4GAA4G;IAE5G,QAAQ,CAAC,mBAAmB,UAAS;IAErC,yDAAyD;IAEzD,QAAQ,CAAC,eAAe,UAAS;IAEjC;;OAEG;IAEH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuB;IAEpD,0DAA0D;IAE1D,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAS;IAEnD,6EAA6E;IAE7E,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAuB;IAE/D;;;OAGG;IACH,OAAO,CAAC,WAAW,CAA4B;IAE/C;;;OAGG;IACH,OAAO,CAAC,oBAAoB,CAAuB;IAEnD;;;OAGG;IACH,OAAO,CAAC,iBAAiB,CAAiC;IAE1D;;;OAGG;IACH,OAAO,CAAC,6BAA6B,CAAS;IAE9C;;;OAGG;IACH,OAAO,CAAC,+BAA+B,CAAS;IAEhD;;OAEG;IACH,OAAO,CAAC,mBAAmB,CAKzB;IAEO,iBAAiB;IAkBjB,oBAAoB;IAYpB,UAAU,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAWlD,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAM/C,MAAM;IA8Cf,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,0BAA0B;IAQlC,OAAO,CAAC,+BAA+B;IAYvC,OAAO,CAAC,2BAA2B;IAoBnC,OAAO,CAAC,kBAAkB;IA0B1B,OAAO,CAAC,sBAAsB;YAiDhB,2BAA2B;IA6BzC,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,kBAAkB;CAQ3B;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,wBAAwB,EAAE,iBAAiB,CAAC;KAC7C;CACF"}
@@ -1,4 +1,4 @@
1
- import{__setFunctionName as t,__esDecorate as e,__runInitializers as i,__classPrivateFieldGet as a,__classPrivateFieldSet as s}from"tslib";import{css as o,LitElement as r,unsafeCSS as n,html as c}from"lit";import{customElement as l,property as h,state as d}from"lit/decorators.js";import{unsafeSVG as p}from"lit/directives/unsafe-svg.js";import{deepmerge as u}from"deepmerge-ts";import"./workspaceSwitcherMenuItem.js";import"../../reusable/link/link.js";import{LINK_TARGETS as m}from"../../reusable/link/defs.js";import{s as w,j as k,k as f,l as g}from"../../../vendor/@kyndryl-design-system/shidoka-icons-BKNlykoZ.js";import"lit/directives/class-map.js";import"../../reusable/iconSelector/iconSelector.js";import"lit-html/directives/class-map.js";import"lit-html/directives/unsafe-svg.js";import"../../reusable/iconSelector/iconSelectorGroup.js";var _=o`@charset "UTF-8";
1
+ import{__setFunctionName as t,__esDecorate as e,__runInitializers as i,__classPrivateFieldGet as a,__classPrivateFieldSet as s}from"tslib";import{css as r,LitElement as o,unsafeCSS as n,html as c}from"lit";import{customElement as l,property as h,state as d}from"lit/decorators.js";import{unsafeSVG as p}from"lit/directives/unsafe-svg.js";import{deepmerge as u}from"deepmerge-ts";import"./workspaceSwitcherMenuItem.js";import"../../reusable/link/link.js";import{LINK_TARGETS as m}from"../../reusable/link/defs.js";import{s as w,j as k,k as g,l as f}from"../../../vendor/@kyndryl-design-system/shidoka-icons-BKNlykoZ.js";import"lit/directives/class-map.js";import"../../reusable/iconSelector/iconSelector.js";import"lit-html/directives/class-map.js";import"lit-html/directives/unsafe-svg.js";import"../../reusable/iconSelector/iconSelectorGroup.js";var _=r`@charset "UTF-8";
2
2
  *,
3
3
  *::before,
4
4
  *::after {
@@ -293,7 +293,7 @@ import{__setFunctionName as t,__esDecorate as e,__runInitializers as i,__classPr
293
293
  .workspace-switcher {
294
294
  margin-top: 4px;
295
295
  }
296
- }`;const v={currentTitle:"CURRENT",workspacesTitle:"WORKSPACES",backToWorkspaces:"Workspaces"};let y=(()=>{var o,y,x,b,L,S,M,T;let C,A,W,z,F,I,$,j,D,O,E=[l("kyn-workspace-switcher")],B=[],R=r,U=[],H=[],P=[],X=[],G=[],K=[],N=[],V=[],q=[],J=[],Q=[],Y=[],Z=[],tt=[],et=[],it=[];return A=class extends R{constructor(){super(...arguments),o.set(this,i(this,U,v)),y.set(this,(i(this,H),i(this,P,null))),x.set(this,(i(this,X),i(this,G,"root"))),b.set(this,(i(this,K),i(this,N,!1))),L.set(this,(i(this,V),i(this,q,!1))),S.set(this,(i(this,J),i(this,Q,!1))),this._textStrings=(i(this,Y),v),M.set(this,i(this,Z,!1)),T.set(this,(i(this,tt),i(this,et,null))),this._flyoutHost=(i(this,it),null),this._copyFeedbackTimeout=null,this._lightDomObserver=null,this._hasWarnedAboutLegacyLeftSlot=!1,this._hasWarnedAboutLeftSlotConflict=!1,this._handleFlyoutToggle=t=>{const e=t.detail;(null==e?void 0:e.open)||(this.view="root")}}get textStrings(){return a(this,o,"f")}set textStrings(t){s(this,o,t,"f")}get accountMeta(){return a(this,y,"f")}set accountMeta(t){s(this,y,t,"f")}get view(){return a(this,x,"f")}set view(t){s(this,x,t,"f")}get hideCurrentTitle(){return a(this,b,"f")}set hideCurrentTitle(t){s(this,b,t,"f")}get hideWorkspacesTitle(){return a(this,L,"f")}set hideWorkspacesTitle(t){s(this,L,t,"f")}get hideLeftDivider(){return a(this,S,"f")}set hideLeftDivider(t){s(this,S,t,"f")}get _hasLegacyLeftSlotContent(){return a(this,M,"f")}set _hasLegacyLeftSlotContent(t){s(this,M,t,"f")}get _copiedAccountMetaIndex(){return a(this,T,"f")}set _copiedAccountMetaIndex(t){s(this,T,t,"f")}connectedCallback(){var t;super.connectedCallback(),this._updateLegacyLeftSlotState(),this._lightDomObserver=new MutationObserver((()=>this._updateLegacyLeftSlotState())),this._lightDomObserver.observe(this,{childList:!0,attributes:!0,attributeFilter:["slot"]}),this._flyoutHost=this.closest("kyn-header-flyout"),null===(t=this._flyoutHost)||void 0===t||t.addEventListener("on-flyout-toggle",this._handleFlyoutToggle)}disconnectedCallback(){var t,e;super.disconnectedCallback(),null===(t=this._flyoutHost)||void 0===t||t.removeEventListener("on-flyout-toggle",this._handleFlyoutToggle),this._clearCopyFeedback(),null===(e=this._lightDomObserver)||void 0===e||e.disconnect(),this._lightDomObserver=null,this._flyoutHost=null}willUpdate(t){t.has("textStrings")&&(this._textStrings=u(v,this.textStrings)),t.has("accountMeta")&&(this._clearCopyFeedback(),this._warnForLegacyLeftSlotUsage())}render(){const t=null!=this.accountMeta||this._hasLegacyLeftSlotContent;return c`
296
+ }`;const v={currentTitle:"CURRENT",workspacesTitle:"WORKSPACES",backToWorkspaces:"Workspaces",launchAssistiveText:"Opens in a new tab"};let y=(()=>{var r,y,x,b,S,L,M,T,C;let A,W,z,I,F,$,j,D,O,E,B,R=[l("kyn-workspace-switcher")],U=[],H=o,P=[],X=[],q=[],G=[],K=[],N=[],V=[],J=[],Q=[],Y=[],Z=[],tt=[],et=[],it=[],at=[],st=[],rt=[],ot=[];return W=class extends H{constructor(){super(...arguments),r.set(this,i(this,P,v)),y.set(this,(i(this,X),i(this,q,null))),x.set(this,(i(this,G),i(this,K,"root"))),b.set(this,(i(this,N),i(this,V,!1))),S.set(this,(i(this,J),i(this,Q,!1))),L.set(this,(i(this,Y),i(this,Z,!1))),M.set(this,(i(this,tt),i(this,et,v))),T.set(this,(i(this,it),i(this,at,!1))),C.set(this,(i(this,st),i(this,rt,null))),this._flyoutHost=(i(this,ot),null),this._copyFeedbackTimeout=null,this._lightDomObserver=null,this._hasWarnedAboutLegacyLeftSlot=!1,this._hasWarnedAboutLeftSlotConflict=!1,this._handleFlyoutToggle=t=>{const e=t.detail;(null==e?void 0:e.open)||(this.view="root")}}get textStrings(){return a(this,r,"f")}set textStrings(t){s(this,r,t,"f")}get accountMeta(){return a(this,y,"f")}set accountMeta(t){s(this,y,t,"f")}get view(){return a(this,x,"f")}set view(t){s(this,x,t,"f")}get hideCurrentTitle(){return a(this,b,"f")}set hideCurrentTitle(t){s(this,b,t,"f")}get hideWorkspacesTitle(){return a(this,S,"f")}set hideWorkspacesTitle(t){s(this,S,t,"f")}get hideLeftDivider(){return a(this,L,"f")}set hideLeftDivider(t){s(this,L,t,"f")}get _textStrings(){return a(this,M,"f")}set _textStrings(t){s(this,M,t,"f")}get _hasLegacyLeftSlotContent(){return a(this,T,"f")}set _hasLegacyLeftSlotContent(t){s(this,T,t,"f")}get _copiedAccountMetaIndex(){return a(this,C,"f")}set _copiedAccountMetaIndex(t){s(this,C,t,"f")}connectedCallback(){var t;super.connectedCallback(),this._updateLegacyLeftSlotState(),this._lightDomObserver=new MutationObserver((()=>this._updateLegacyLeftSlotState())),this._lightDomObserver.observe(this,{childList:!0,attributes:!0,attributeFilter:["slot"]}),this._flyoutHost=this.closest("kyn-header-flyout"),null===(t=this._flyoutHost)||void 0===t||t.addEventListener("on-flyout-toggle",this._handleFlyoutToggle)}disconnectedCallback(){var t,e;super.disconnectedCallback(),null===(t=this._flyoutHost)||void 0===t||t.removeEventListener("on-flyout-toggle",this._handleFlyoutToggle),this._clearCopyFeedback(),null===(e=this._lightDomObserver)||void 0===e||e.disconnect(),this._lightDomObserver=null,this._flyoutHost=null}willUpdate(t){t.has("textStrings")&&(this._textStrings=u(v,this.textStrings)),t.has("accountMeta")&&(this._clearCopyFeedback(),this._warnForLegacyLeftSlotUsage())}updated(t){t.has("textStrings")&&this._updateChildMenuItemTextStrings()}render(){const t=null!=this.accountMeta||this._hasLegacyLeftSlotContent;return c`
297
297
  <div class="workspace-switcher">
298
298
  <div class="workspace-switcher__left">
299
299
  ${this.hideCurrentTitle?null:c`<span class="workspace-switcher__title"
@@ -324,7 +324,7 @@ import{__setFunctionName as t,__esDecorate as e,__runInitializers as i,__classPr
324
324
  </div>
325
325
  </div>
326
326
  </div>
327
- `}_handleBackClick(){this.view="root"}_updateLegacyLeftSlotState(){this._hasLegacyLeftSlotContent=Array.from(this.children).some((t=>"left"===t.getAttribute("slot"))),this._warnForLegacyLeftSlotUsage()}_warnForLegacyLeftSlotUsage(){if(this._hasLegacyLeftSlotContent&&"undefined"!=typeof console)return this.accountMeta&&!this._hasWarnedAboutLeftSlotConflict?(console.warn('[kyn-workspace-switcher] `accountMeta` overrides legacy `slot="left"` content. Remove the slot content or migrate fully to `accountMeta`.'),void(this._hasWarnedAboutLeftSlotConflict=!0)):void(this.accountMeta||this._hasWarnedAboutLegacyLeftSlot||(console.warn('[kyn-workspace-switcher] `slot="left"` is a legacy API. Prefer the `accountMeta` property for rigid account meta rendering.'),this._hasWarnedAboutLegacyLeftSlot=!0))}_renderAccountMeta(){var t;return this.accountMeta?c`
327
+ `}_handleBackClick(){this.view="root"}_updateLegacyLeftSlotState(){this._hasLegacyLeftSlotContent=Array.from(this.children).some((t=>"left"===t.getAttribute("slot"))),this._updateChildMenuItemTextStrings(),this._warnForLegacyLeftSlotUsage()}_updateChildMenuItemTextStrings(){const t={launchAssistiveText:this._textStrings.launchAssistiveText};this.querySelectorAll("kyn-workspace-switcher-menu-item").forEach((e=>{e.textStrings=t}))}_warnForLegacyLeftSlotUsage(){if(this._hasLegacyLeftSlotContent&&"undefined"!=typeof console)return this.accountMeta&&!this._hasWarnedAboutLeftSlotConflict?(console.warn('[kyn-workspace-switcher] `accountMeta` overrides legacy `slot="left"` content. Remove the slot content or migrate fully to `accountMeta`.'),void(this._hasWarnedAboutLeftSlotConflict=!0)):void(this.accountMeta||this._hasWarnedAboutLegacyLeftSlot||(console.warn('[kyn-workspace-switcher] `slot="left"` is a legacy API. Prefer the `accountMeta` property for rigid account meta rendering.'),this._hasWarnedAboutLegacyLeftSlot=!0))}_renderAccountMeta(){var t;return this.accountMeta?c`
328
328
  <div class="workspace-switcher__account-meta">
329
329
  <span
330
330
  class="workspace-switcher__account-meta-status"
@@ -342,14 +342,14 @@ import{__setFunctionName as t,__esDecorate as e,__runInitializers as i,__classPr
342
342
  ${null===(t=this.accountMeta.items)||void 0===t?void 0:t.map(((t,e)=>this._renderAccountMetaItem(t,e)))}
343
343
  </div>
344
344
  </div>
345
- `:null}_renderAccountMetaItem(t,e){var i,a;const s="copy"===t.actionIcon?this._copiedAccountMetaIndex===e?k:f:"launch"===t.actionIcon?g:null;if(t.href||"copy"===t.actionIcon){const o=null!==(i=t.target)&&void 0!==i?i:m.SELF,r=null!==(a=t.rel)&&void 0!==a?a:"_blank"===o?"noopener noreferrer":"";return c`
345
+ `:null}_renderAccountMetaItem(t,e){var i,a;const s="copy"===t.actionIcon?this._copiedAccountMetaIndex===e?k:g:"launch"===t.actionIcon?f:null;if(t.href||"copy"===t.actionIcon){const r=null!==(i=t.target)&&void 0!==i?i:m.SELF,o=null!==(a=t.rel)&&void 0!==a?a:"_blank"===r?"noopener noreferrer":"";return c`
346
346
  <kyn-link
347
347
  class="workspace-switcher__account-meta-link"
348
348
  standalone
349
349
  animationInactive
350
350
  href=${t.href||"javascript:void(0)"}
351
- target=${o}
352
- rel=${r}
351
+ target=${r}
352
+ rel=${o}
353
353
  @on-click=${i=>this._handleAccountMetaItemClick(i,t,e)}
354
354
  >
355
355
  ${t.text}
@@ -364,5 +364,5 @@ import{__setFunctionName as t,__esDecorate as e,__runInitializers as i,__classPr
364
364
  </kyn-link>
365
365
  `}return c`
366
366
  <span class="workspace-switcher__account-meta-item">${t.text}</span>
367
- `}async _handleAccountMetaItemClick(t,e,i){var a,s,o;if("copy"!==e.actionIcon)return;const r=null!==(a=e.copyValue)&&void 0!==a?a:e.text,n=null===(s=t.detail)||void 0===s?void 0:s.origEvent;null==n||n.preventDefault();const c=null===(o=globalThis.navigator)||void 0===o?void 0:o.clipboard;try{await(null==c?void 0:c.writeText(r)),this._showCopyFeedback(i)}catch{return}this.dispatchEvent(new CustomEvent("on-account-meta-copy",{detail:{index:i,text:e.text,value:r,success:!0},bubbles:!0,composed:!0}))}_showCopyFeedback(t){this._copiedAccountMetaIndex=t,null!=this._copyFeedbackTimeout&&window.clearTimeout(this._copyFeedbackTimeout),this._copyFeedbackTimeout=window.setTimeout((()=>{this._copiedAccountMetaIndex=null,this._copyFeedbackTimeout=null}),3e3)}_clearCopyFeedback(){this._copiedAccountMetaIndex=null,null!=this._copyFeedbackTimeout&&(window.clearTimeout(this._copyFeedbackTimeout),this._copyFeedbackTimeout=null)}},o=new WeakMap,y=new WeakMap,x=new WeakMap,b=new WeakMap,L=new WeakMap,S=new WeakMap,M=new WeakMap,T=new WeakMap,t(A,"WorkspaceSwitcher"),(()=>{var t;const i="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(t=R[Symbol.metadata])&&void 0!==t?t:null):void 0;W=[h({type:Object})],z=[h({attribute:!1})],F=[h({type:String,reflect:!0})],I=[h({type:Boolean,reflect:!0})],$=[h({type:Boolean,reflect:!0})],j=[h({type:Boolean,reflect:!0,attribute:"hide-left-divider"})],D=[d()],O=[d()],e(A,null,W,{kind:"accessor",name:"textStrings",static:!1,private:!1,access:{has:t=>"textStrings"in t,get:t=>t.textStrings,set:(t,e)=>{t.textStrings=e}},metadata:i},U,H),e(A,null,z,{kind:"accessor",name:"accountMeta",static:!1,private:!1,access:{has:t=>"accountMeta"in t,get:t=>t.accountMeta,set:(t,e)=>{t.accountMeta=e}},metadata:i},P,X),e(A,null,F,{kind:"accessor",name:"view",static:!1,private:!1,access:{has:t=>"view"in t,get:t=>t.view,set:(t,e)=>{t.view=e}},metadata:i},G,K),e(A,null,I,{kind:"accessor",name:"hideCurrentTitle",static:!1,private:!1,access:{has:t=>"hideCurrentTitle"in t,get:t=>t.hideCurrentTitle,set:(t,e)=>{t.hideCurrentTitle=e}},metadata:i},N,V),e(A,null,$,{kind:"accessor",name:"hideWorkspacesTitle",static:!1,private:!1,access:{has:t=>"hideWorkspacesTitle"in t,get:t=>t.hideWorkspacesTitle,set:(t,e)=>{t.hideWorkspacesTitle=e}},metadata:i},q,J),e(A,null,j,{kind:"accessor",name:"hideLeftDivider",static:!1,private:!1,access:{has:t=>"hideLeftDivider"in t,get:t=>t.hideLeftDivider,set:(t,e)=>{t.hideLeftDivider=e}},metadata:i},Q,Y),e(A,null,D,{kind:"accessor",name:"_hasLegacyLeftSlotContent",static:!1,private:!1,access:{has:t=>"_hasLegacyLeftSlotContent"in t,get:t=>t._hasLegacyLeftSlotContent,set:(t,e)=>{t._hasLegacyLeftSlotContent=e}},metadata:i},Z,tt),e(A,null,O,{kind:"accessor",name:"_copiedAccountMetaIndex",static:!1,private:!1,access:{has:t=>"_copiedAccountMetaIndex"in t,get:t=>t._copiedAccountMetaIndex,set:(t,e)=>{t._copiedAccountMetaIndex=e}},metadata:i},et,it),e(null,C={value:A},E,{kind:"class",name:A.name,metadata:i},null,B),A=C.value,i&&Object.defineProperty(A,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i})})(),A.styles=n(_),i(A,B),A})();export{y as WorkspaceSwitcher};
367
+ `}async _handleAccountMetaItemClick(t,e,i){var a,s,r;if("copy"!==e.actionIcon)return;const o=null!==(a=e.copyValue)&&void 0!==a?a:e.text,n=null===(s=t.detail)||void 0===s?void 0:s.origEvent;null==n||n.preventDefault();const c=null===(r=globalThis.navigator)||void 0===r?void 0:r.clipboard;try{await(null==c?void 0:c.writeText(o)),this._showCopyFeedback(i)}catch{return}this.dispatchEvent(new CustomEvent("on-account-meta-copy",{detail:{index:i,text:e.text,value:o,success:!0},bubbles:!0,composed:!0}))}_showCopyFeedback(t){this._copiedAccountMetaIndex=t,null!=this._copyFeedbackTimeout&&window.clearTimeout(this._copyFeedbackTimeout),this._copyFeedbackTimeout=window.setTimeout((()=>{this._copiedAccountMetaIndex=null,this._copyFeedbackTimeout=null}),3e3)}_clearCopyFeedback(){this._copiedAccountMetaIndex=null,null!=this._copyFeedbackTimeout&&(window.clearTimeout(this._copyFeedbackTimeout),this._copyFeedbackTimeout=null)}},r=new WeakMap,y=new WeakMap,x=new WeakMap,b=new WeakMap,S=new WeakMap,L=new WeakMap,M=new WeakMap,T=new WeakMap,C=new WeakMap,t(W,"WorkspaceSwitcher"),(()=>{var t;const i="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(t=H[Symbol.metadata])&&void 0!==t?t:null):void 0;z=[h({type:Object})],I=[h({attribute:!1})],F=[h({type:String,reflect:!0})],$=[h({type:Boolean,reflect:!0})],j=[h({type:Boolean,reflect:!0})],D=[h({type:Boolean,reflect:!0,attribute:"hide-left-divider"})],O=[d()],E=[d()],B=[d()],e(W,null,z,{kind:"accessor",name:"textStrings",static:!1,private:!1,access:{has:t=>"textStrings"in t,get:t=>t.textStrings,set:(t,e)=>{t.textStrings=e}},metadata:i},P,X),e(W,null,I,{kind:"accessor",name:"accountMeta",static:!1,private:!1,access:{has:t=>"accountMeta"in t,get:t=>t.accountMeta,set:(t,e)=>{t.accountMeta=e}},metadata:i},q,G),e(W,null,F,{kind:"accessor",name:"view",static:!1,private:!1,access:{has:t=>"view"in t,get:t=>t.view,set:(t,e)=>{t.view=e}},metadata:i},K,N),e(W,null,$,{kind:"accessor",name:"hideCurrentTitle",static:!1,private:!1,access:{has:t=>"hideCurrentTitle"in t,get:t=>t.hideCurrentTitle,set:(t,e)=>{t.hideCurrentTitle=e}},metadata:i},V,J),e(W,null,j,{kind:"accessor",name:"hideWorkspacesTitle",static:!1,private:!1,access:{has:t=>"hideWorkspacesTitle"in t,get:t=>t.hideWorkspacesTitle,set:(t,e)=>{t.hideWorkspacesTitle=e}},metadata:i},Q,Y),e(W,null,D,{kind:"accessor",name:"hideLeftDivider",static:!1,private:!1,access:{has:t=>"hideLeftDivider"in t,get:t=>t.hideLeftDivider,set:(t,e)=>{t.hideLeftDivider=e}},metadata:i},Z,tt),e(W,null,O,{kind:"accessor",name:"_textStrings",static:!1,private:!1,access:{has:t=>"_textStrings"in t,get:t=>t._textStrings,set:(t,e)=>{t._textStrings=e}},metadata:i},et,it),e(W,null,E,{kind:"accessor",name:"_hasLegacyLeftSlotContent",static:!1,private:!1,access:{has:t=>"_hasLegacyLeftSlotContent"in t,get:t=>t._hasLegacyLeftSlotContent,set:(t,e)=>{t._hasLegacyLeftSlotContent=e}},metadata:i},at,st),e(W,null,B,{kind:"accessor",name:"_copiedAccountMetaIndex",static:!1,private:!1,access:{has:t=>"_copiedAccountMetaIndex"in t,get:t=>t._copiedAccountMetaIndex,set:(t,e)=>{t._copiedAccountMetaIndex=e}},metadata:i},rt,ot),e(null,A={value:W},R,{kind:"class",name:W.name,metadata:i},null,U),W=A.value,i&&Object.defineProperty(W,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i})})(),W.styles=n(_),i(W,U),W})();export{y as WorkspaceSwitcher};
368
368
  //# sourceMappingURL=workspaceSwitcher.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspaceSwitcher.js","sources":["../../../../src/components/global/workspaceSwitcher/workspaceSwitcher.ts"],"sourcesContent":["import { LitElement, html, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport { deepmerge } from 'deepmerge-ts';\n\nimport WorkspaceSwitcherScss from './workspaceSwitcher.scss?inline';\n\nimport './workspaceSwitcherMenuItem';\nimport '../../reusable/link';\nimport { LINK_TARGETS } from '../../reusable/link/defs';\n\nimport checkmarkFilledIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/checkmark-filled.svg';\nimport checkmarkIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/checkmark.svg';\nimport copyIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/copy.svg';\nimport launchIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/launch.svg';\n\nconst _defaultTextStrings = {\n currentTitle: 'CURRENT',\n workspacesTitle: 'WORKSPACES',\n backToWorkspaces: 'Workspaces',\n};\n\nexport interface WorkspaceSwitcherAccountMetaItem {\n text: string;\n href?: string;\n target?: LINK_TARGETS;\n rel?: string;\n actionIcon?: 'copy' | 'launch';\n copyValue?: string;\n}\n\nexport interface WorkspaceSwitcherAccountMeta {\n name: string;\n items?: WorkspaceSwitcherAccountMetaItem[];\n}\n\n/**\n * Workspace Switcher shell component providing two-panel layout with mobile drill-down.\n * Component fits to 100% of the width and height of its container and surfaces two panels for content composition via slots.\n * Consumers compose workspace and account rows via named slots using\n * sub-components like `kyn-workspace-switcher-menu-item`.\n * The account meta block can also be provided via the `accountMeta` property,\n * which renders the preferred rigid built-in pattern.\n * @slot left - Legacy non-list content for the left panel when `accountMeta` is not used. Prefer `accountMeta`; this slot is maintained for backward compatibility.\n * @slot left-list - List items for the left panel (rendered inside role=\"list\").\n * @slot right - Non-list content for the right panel (e.g. search).\n * @slot right-list - List items for the right panel (rendered inside role=\"list\").\n * @fires on-account-meta-copy - Emits when a copy-style account meta action is activated.\n * @cssprop [--kyn-workspace-switcher-max-height=none] - Maximum height of the switcher panel.\n * @cssprop [--kyn-workspace-switcher-left-panel-width=275px] - Width of the left panel in desktop two-panel layout.\n */\n@customElement('kyn-workspace-switcher')\nexport class WorkspaceSwitcher extends LitElement {\n static override styles = unsafeCSS(WorkspaceSwitcherScss);\n\n /** Text string customization. */\n @property({ type: Object })\n accessor textStrings = _defaultTextStrings;\n\n /** Built-in account meta content for the left panel. */\n @property({ attribute: false })\n accessor accountMeta: WorkspaceSwitcherAccountMeta | null = null;\n\n /** Mobile drill-down view state. 'root' shows left panel, 'detail' shows right panel.\n * @internal\n */\n @property({ type: String, reflect: true })\n accessor view: 'root' | 'detail' = 'root';\n\n /** Hides the heading above the account meta info. */\n @property({ type: Boolean, reflect: true })\n accessor hideCurrentTitle = false;\n\n /** Hides the heading above the lower left-hand side list. Example: suppress for accounts-only customers. */\n @property({ type: Boolean, reflect: true })\n accessor hideWorkspacesTitle = false;\n\n /** Hides the divider beneath the `left` slot content. */\n @property({ type: Boolean, reflect: true, attribute: 'hide-left-divider' })\n accessor hideLeftDivider = false;\n\n /** Merged text strings.\n * @internal\n */\n private _textStrings = _defaultTextStrings;\n\n /** Tracks whether legacy left-slot content is present. */\n @state()\n private accessor _hasLegacyLeftSlotContent = false;\n\n /** Tracks which copy-style account meta item is showing success feedback. */\n @state()\n private accessor _copiedAccountMetaIndex: number | null = null;\n\n /**\n * The nearest flyout host, if any.\n * @internal\n */\n private _flyoutHost: HTMLElement | null = null;\n\n /**\n * Clears transient copy feedback after a short delay.\n * @internal\n */\n private _copyFeedbackTimeout: number | null = null;\n\n /**\n * Watches for legacy slot usage changes.\n * @internal\n */\n private _lightDomObserver: MutationObserver | null = null;\n\n /**\n * Ensures legacy slot guidance only logs once per host instance.\n * @internal\n */\n private _hasWarnedAboutLegacyLeftSlot = false;\n\n /**\n * Ensures conflicting input guidance only logs once per host instance.\n * @internal\n */\n private _hasWarnedAboutLeftSlotConflict = false;\n\n /**\n * @internal\n */\n private _handleFlyoutToggle = (e: Event) => {\n const detail = (e as CustomEvent).detail;\n if (!detail?.open) {\n this.view = 'root';\n }\n };\n\n override connectedCallback() {\n super.connectedCallback();\n this._updateLegacyLeftSlotState();\n this._lightDomObserver = new MutationObserver(() =>\n this._updateLegacyLeftSlotState()\n );\n this._lightDomObserver.observe(this, {\n childList: true,\n attributes: true,\n attributeFilter: ['slot'],\n });\n this._flyoutHost = this.closest('kyn-header-flyout');\n this._flyoutHost?.addEventListener(\n 'on-flyout-toggle',\n this._handleFlyoutToggle as EventListener\n );\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n this._flyoutHost?.removeEventListener(\n 'on-flyout-toggle',\n this._handleFlyoutToggle as EventListener\n );\n this._clearCopyFeedback();\n this._lightDomObserver?.disconnect();\n this._lightDomObserver = null;\n this._flyoutHost = null;\n }\n\n override willUpdate(changedProperties: Map<string, unknown>) {\n if (changedProperties.has('textStrings')) {\n this._textStrings = deepmerge(_defaultTextStrings, this.textStrings);\n }\n\n if (changedProperties.has('accountMeta')) {\n this._clearCopyFeedback();\n this._warnForLegacyLeftSlotUsage();\n }\n }\n\n override render() {\n const showLeftHeader =\n this.accountMeta != null || this._hasLegacyLeftSlotContent;\n\n return html`\n <div class=\"workspace-switcher\">\n <div class=\"workspace-switcher__left\">\n ${!this.hideCurrentTitle\n ? html`<span class=\"workspace-switcher__title\"\n >${this._textStrings.currentTitle}</span\n >`\n : null}\n ${showLeftHeader\n ? html`\n <div class=\"workspace-switcher__left-header\">\n ${this.accountMeta\n ? this._renderAccountMeta()\n : html`<slot name=\"left\"></slot>`}\n </div>\n `\n : null}\n ${!this.hideWorkspacesTitle\n ? html`<span class=\"workspace-switcher__title\"\n >${this._textStrings.workspacesTitle}</span\n >`\n : null}\n <div class=\"workspace-switcher__list\" role=\"list\">\n <slot name=\"left-list\"></slot>\n </div>\n </div>\n <div class=\"workspace-switcher__right\">\n <kyn-workspace-switcher-menu-item\n class=\"workspace-switcher__back\"\n variant=\"back\"\n name=${this._textStrings.backToWorkspaces}\n @on-click=${this._handleBackClick}\n ></kyn-workspace-switcher-menu-item>\n <slot name=\"right\"></slot>\n <div class=\"workspace-switcher__list\" role=\"list\">\n <slot name=\"right-list\"></slot>\n </div>\n </div>\n </div>\n `;\n }\n\n private _handleBackClick() {\n this.view = 'root';\n }\n\n private _updateLegacyLeftSlotState() {\n this._hasLegacyLeftSlotContent = Array.from(this.children).some(\n (child) => child.getAttribute('slot') === 'left'\n );\n this._warnForLegacyLeftSlotUsage();\n }\n\n private _warnForLegacyLeftSlotUsage() {\n if (!this._hasLegacyLeftSlotContent || typeof console === 'undefined')\n return;\n\n if (this.accountMeta && !this._hasWarnedAboutLeftSlotConflict) {\n console.warn(\n '[kyn-workspace-switcher] `accountMeta` overrides legacy `slot=\"left\"` content. Remove the slot content or migrate fully to `accountMeta`.'\n );\n this._hasWarnedAboutLeftSlotConflict = true;\n return;\n }\n\n if (!this.accountMeta && !this._hasWarnedAboutLegacyLeftSlot) {\n console.warn(\n '[kyn-workspace-switcher] `slot=\"left\"` is a legacy API. Prefer the `accountMeta` property for rigid account meta rendering.'\n );\n this._hasWarnedAboutLegacyLeftSlot = true;\n }\n }\n\n private _renderAccountMeta() {\n if (!this.accountMeta) return null;\n\n return html`\n <div class=\"workspace-switcher__account-meta\">\n <span\n class=\"workspace-switcher__account-meta-status\"\n aria-hidden=\"true\"\n >\n ${unsafeSVG(checkmarkFilledIcon)}\n </span>\n <div class=\"workspace-switcher__account-meta-content\">\n <span\n class=\"workspace-switcher__account-meta-name\"\n title=${this.accountMeta.name}\n >\n ${this.accountMeta.name}\n </span>\n ${this.accountMeta.items?.map((item, index) =>\n this._renderAccountMetaItem(item, index)\n )}\n </div>\n </div>\n `;\n }\n\n private _renderAccountMetaItem(\n item: WorkspaceSwitcherAccountMetaItem,\n index: number\n ) {\n const icon =\n item.actionIcon === 'copy'\n ? this._copiedAccountMetaIndex === index\n ? checkmarkIcon\n : copyIcon\n : item.actionIcon === 'launch'\n ? launchIcon\n : null;\n\n if (item.href || item.actionIcon === 'copy') {\n const target = item.target ?? LINK_TARGETS.SELF;\n const rel =\n item.rel ?? (target === '_blank' ? 'noopener noreferrer' : '');\n\n return html`\n <kyn-link\n class=\"workspace-switcher__account-meta-link\"\n standalone\n animationInactive\n href=${item.href || 'javascript:void(0)'}\n target=${target}\n rel=${rel}\n @on-click=${(e: CustomEvent) =>\n this._handleAccountMetaItemClick(e, item, index)}\n >\n ${item.text}\n ${icon\n ? html`\n <span\n slot=\"icon\"\n class=\"workspace-switcher__account-meta-link-icon\"\n >\n ${unsafeSVG(icon)}\n </span>\n `\n : null}\n </kyn-link>\n `;\n }\n\n return html`\n <span class=\"workspace-switcher__account-meta-item\">${item.text}</span>\n `;\n }\n\n private async _handleAccountMetaItemClick(\n e: CustomEvent,\n item: WorkspaceSwitcherAccountMetaItem,\n index: number\n ) {\n if (item.actionIcon !== 'copy') return;\n\n const copyValue = item.copyValue ?? item.text;\n const origEvent = e.detail?.origEvent as Event | undefined;\n\n origEvent?.preventDefault();\n const clipboard = globalThis.navigator?.clipboard;\n\n try {\n await clipboard?.writeText(copyValue);\n this._showCopyFeedback(index);\n } catch {\n return;\n }\n\n this.dispatchEvent(\n new CustomEvent('on-account-meta-copy', {\n detail: { index, text: item.text, value: copyValue, success: true },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private _showCopyFeedback(index: number) {\n this._copiedAccountMetaIndex = index;\n\n if (this._copyFeedbackTimeout != null) {\n window.clearTimeout(this._copyFeedbackTimeout);\n }\n\n this._copyFeedbackTimeout = window.setTimeout(() => {\n this._copiedAccountMetaIndex = null;\n this._copyFeedbackTimeout = null;\n }, 3000);\n }\n\n private _clearCopyFeedback() {\n this._copiedAccountMetaIndex = null;\n\n if (this._copyFeedbackTimeout != null) {\n window.clearTimeout(this._copyFeedbackTimeout);\n this._copyFeedbackTimeout = null;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-workspace-switcher': WorkspaceSwitcher;\n }\n}\n"],"names":["_defaultTextStrings","currentTitle","workspacesTitle","backToWorkspaces","WorkspaceSwitcher","customElement","LitElement","_classThis","_classSuper","_WorkspaceSwitcher_textStrings_accessor_storage","set","this","__runInitializers","_textStrings_initializers","_WorkspaceSwitcher_accountMeta_accessor_storage","_textStrings_extraInitializers","_accountMeta_initializers","_WorkspaceSwitcher_view_accessor_storage","_accountMeta_extraInitializers","_view_initializers","_WorkspaceSwitcher_hideCurrentTitle_accessor_storage","_view_extraInitializers","_hideCurrentTitle_initializers","_WorkspaceSwitcher_hideWorkspacesTitle_accessor_storage","_hideCurrentTitle_extraInitializers","_hideWorkspacesTitle_initializers","_WorkspaceSwitcher_hideLeftDivider_accessor_storage","_hideWorkspacesTitle_extraInitializers","_hideLeftDivider_initializers","_textStrings","_hideLeftDivider_extraInitializers","_WorkspaceSwitcher__hasLegacyLeftSlotContent_accessor_storage","__hasLegacyLeftSlotContent_initializers","_WorkspaceSwitcher__copiedAccountMetaIndex_accessor_storage","__hasLegacyLeftSlotContent_extraInitializers","__copiedAccountMetaIndex_initializers","_flyoutHost","__copiedAccountMetaIndex_extraInitializers","_copyFeedbackTimeout","_lightDomObserver","_hasWarnedAboutLegacyLeftSlot","_hasWarnedAboutLeftSlotConflict","_handleFlyoutToggle","e","detail","open","view","textStrings","__classPrivateFieldGet","value","__classPrivateFieldSet","accountMeta","hideCurrentTitle","hideWorkspacesTitle","hideLeftDivider","_hasLegacyLeftSlotContent","_copiedAccountMetaIndex","connectedCallback","super","_updateLegacyLeftSlotState","MutationObserver","observe","childList","attributes","attributeFilter","closest","_a","addEventListener","disconnectedCallback","removeEventListener","_clearCopyFeedback","_b","disconnect","willUpdate","changedProperties","has","deepmerge","_warnForLegacyLeftSlotUsage","render","showLeftHeader","html","_renderAccountMeta","_handleBackClick","Array","from","children","some","child","getAttribute","console","warn","unsafeSVG","checkmarkFilledIcon","name","items","map","item","index","_renderAccountMetaItem","icon","actionIcon","checkmarkIcon","copyIcon","launchIcon","href","target","LINK_TARGETS","SELF","rel","_handleAccountMetaItemClick","text","copyValue","origEvent","preventDefault","clipboard","_c","globalThis","navigator","writeText","_showCopyFeedback","dispatchEvent","CustomEvent","success","bubbles","composed","window","clearTimeout","setTimeout","_textStrings_decorators","property","type","Object","_accountMeta_decorators","attribute","String","reflect","Boolean","_hideLeftDivider_decorators","__hasLegacyLeftSlotContent_decorators","state","__copiedAccountMetaIndex_decorators","__esDecorate","kind","static","private","access","obj","get","metadata","_metadata","_view_decorators","_hideCurrentTitle_decorators","_hideWorkspacesTitle_decorators","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","WorkspaceSwitcherScss"],"mappings":"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"}
1
+ {"version":3,"file":"workspaceSwitcher.js","sources":["../../../../src/components/global/workspaceSwitcher/workspaceSwitcher.ts"],"sourcesContent":["import { LitElement, html, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport { deepmerge } from 'deepmerge-ts';\n\nimport WorkspaceSwitcherScss from './workspaceSwitcher.scss?inline';\n\nimport './workspaceSwitcherMenuItem';\nimport type { WorkspaceSwitcherMenuItem } from './workspaceSwitcherMenuItem';\nimport '../../reusable/link';\nimport { LINK_TARGETS } from '../../reusable/link/defs';\n\nimport checkmarkFilledIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/checkmark-filled.svg';\nimport checkmarkIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/checkmark.svg';\nimport copyIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/copy.svg';\nimport launchIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/launch.svg';\n\nconst _defaultTextStrings = {\n currentTitle: 'CURRENT',\n workspacesTitle: 'WORKSPACES',\n backToWorkspaces: 'Workspaces',\n launchAssistiveText: 'Opens in a new tab',\n};\n\nexport interface WorkspaceSwitcherAccountMetaItem {\n text: string;\n href?: string;\n target?: LINK_TARGETS;\n rel?: string;\n actionIcon?: 'copy' | 'launch';\n copyValue?: string;\n}\n\nexport interface WorkspaceSwitcherAccountMeta {\n name: string;\n items?: WorkspaceSwitcherAccountMetaItem[];\n}\n\n/**\n * Workspace Switcher shell component providing two-panel layout with mobile drill-down.\n * Component fits to 100% of the width and height of its container and surfaces two panels for content composition via slots.\n * Consumers compose workspace and account rows via named slots using\n * sub-components like `kyn-workspace-switcher-menu-item`.\n * The account meta block can also be provided via the `accountMeta` property,\n * which renders the preferred rigid built-in pattern.\n * @slot left - Legacy non-list content for the left panel when `accountMeta` is not used. Prefer `accountMeta`; this slot is maintained for backward compatibility.\n * @slot left-list - List items for the left panel (rendered inside role=\"list\").\n * @slot right - Non-list content for the right panel (e.g. search).\n * @slot right-list - List items for the right panel (rendered inside role=\"list\").\n * @fires on-account-meta-copy - Emits when a copy-style account meta action is activated.\n * @cssprop [--kyn-workspace-switcher-max-height=none] - Maximum height of the switcher panel.\n * @cssprop [--kyn-workspace-switcher-left-panel-width=275px] - Width of the left panel in desktop two-panel layout.\n */\n@customElement('kyn-workspace-switcher')\nexport class WorkspaceSwitcher extends LitElement {\n static override styles = unsafeCSS(WorkspaceSwitcherScss);\n\n /** Text string customization. */\n @property({ type: Object })\n accessor textStrings = _defaultTextStrings;\n\n /** Built-in account meta content for the left panel. */\n @property({ attribute: false })\n accessor accountMeta: WorkspaceSwitcherAccountMeta | null = null;\n\n /** Mobile drill-down view state. 'root' shows left panel, 'detail' shows right panel.\n * @internal\n */\n @property({ type: String, reflect: true })\n accessor view: 'root' | 'detail' = 'root';\n\n /** Hides the heading above the account meta info. */\n @property({ type: Boolean, reflect: true })\n accessor hideCurrentTitle = false;\n\n /** Hides the heading above the lower left-hand side list. Example: suppress for accounts-only customers. */\n @property({ type: Boolean, reflect: true })\n accessor hideWorkspacesTitle = false;\n\n /** Hides the divider beneath the `left` slot content. */\n @property({ type: Boolean, reflect: true, attribute: 'hide-left-divider' })\n accessor hideLeftDivider = false;\n\n /** Merged text strings.\n * @internal\n */\n @state()\n private accessor _textStrings = _defaultTextStrings;\n\n /** Tracks whether legacy left-slot content is present. */\n @state()\n private accessor _hasLegacyLeftSlotContent = false;\n\n /** Tracks which copy-style account meta item is showing success feedback. */\n @state()\n private accessor _copiedAccountMetaIndex: number | null = null;\n\n /**\n * The nearest flyout host, if any.\n * @internal\n */\n private _flyoutHost: HTMLElement | null = null;\n\n /**\n * Clears transient copy feedback after a short delay.\n * @internal\n */\n private _copyFeedbackTimeout: number | null = null;\n\n /**\n * Watches for legacy slot usage changes.\n * @internal\n */\n private _lightDomObserver: MutationObserver | null = null;\n\n /**\n * Ensures legacy slot guidance only logs once per host instance.\n * @internal\n */\n private _hasWarnedAboutLegacyLeftSlot = false;\n\n /**\n * Ensures conflicting input guidance only logs once per host instance.\n * @internal\n */\n private _hasWarnedAboutLeftSlotConflict = false;\n\n /**\n * @internal\n */\n private _handleFlyoutToggle = (e: Event) => {\n const detail = (e as CustomEvent).detail;\n if (!detail?.open) {\n this.view = 'root';\n }\n };\n\n override connectedCallback() {\n super.connectedCallback();\n this._updateLegacyLeftSlotState();\n this._lightDomObserver = new MutationObserver(() =>\n this._updateLegacyLeftSlotState()\n );\n this._lightDomObserver.observe(this, {\n childList: true,\n attributes: true,\n attributeFilter: ['slot'],\n });\n this._flyoutHost = this.closest('kyn-header-flyout');\n this._flyoutHost?.addEventListener(\n 'on-flyout-toggle',\n this._handleFlyoutToggle as EventListener\n );\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n this._flyoutHost?.removeEventListener(\n 'on-flyout-toggle',\n this._handleFlyoutToggle as EventListener\n );\n this._clearCopyFeedback();\n this._lightDomObserver?.disconnect();\n this._lightDomObserver = null;\n this._flyoutHost = null;\n }\n\n override willUpdate(changedProperties: Map<string, unknown>) {\n if (changedProperties.has('textStrings')) {\n this._textStrings = deepmerge(_defaultTextStrings, this.textStrings);\n }\n\n if (changedProperties.has('accountMeta')) {\n this._clearCopyFeedback();\n this._warnForLegacyLeftSlotUsage();\n }\n }\n\n override updated(changedProperties: Map<string, unknown>) {\n if (changedProperties.has('textStrings')) {\n this._updateChildMenuItemTextStrings();\n }\n }\n\n override render() {\n const showLeftHeader =\n this.accountMeta != null || this._hasLegacyLeftSlotContent;\n\n return html`\n <div class=\"workspace-switcher\">\n <div class=\"workspace-switcher__left\">\n ${!this.hideCurrentTitle\n ? html`<span class=\"workspace-switcher__title\"\n >${this._textStrings.currentTitle}</span\n >`\n : null}\n ${showLeftHeader\n ? html`\n <div class=\"workspace-switcher__left-header\">\n ${this.accountMeta\n ? this._renderAccountMeta()\n : html`<slot name=\"left\"></slot>`}\n </div>\n `\n : null}\n ${!this.hideWorkspacesTitle\n ? html`<span class=\"workspace-switcher__title\"\n >${this._textStrings.workspacesTitle}</span\n >`\n : null}\n <div class=\"workspace-switcher__list\" role=\"list\">\n <slot name=\"left-list\"></slot>\n </div>\n </div>\n <div class=\"workspace-switcher__right\">\n <kyn-workspace-switcher-menu-item\n class=\"workspace-switcher__back\"\n variant=\"back\"\n name=${this._textStrings.backToWorkspaces}\n @on-click=${this._handleBackClick}\n ></kyn-workspace-switcher-menu-item>\n <slot name=\"right\"></slot>\n <div class=\"workspace-switcher__list\" role=\"list\">\n <slot name=\"right-list\"></slot>\n </div>\n </div>\n </div>\n `;\n }\n\n private _handleBackClick() {\n this.view = 'root';\n }\n\n private _updateLegacyLeftSlotState() {\n this._hasLegacyLeftSlotContent = Array.from(this.children).some(\n (child) => child.getAttribute('slot') === 'left'\n );\n this._updateChildMenuItemTextStrings();\n this._warnForLegacyLeftSlotUsage();\n }\n\n private _updateChildMenuItemTextStrings() {\n const menuItemTextStrings = {\n launchAssistiveText: this._textStrings.launchAssistiveText,\n };\n\n this.querySelectorAll<WorkspaceSwitcherMenuItem>(\n 'kyn-workspace-switcher-menu-item'\n ).forEach((item) => {\n item.textStrings = menuItemTextStrings;\n });\n }\n\n private _warnForLegacyLeftSlotUsage() {\n if (!this._hasLegacyLeftSlotContent || typeof console === 'undefined')\n return;\n\n if (this.accountMeta && !this._hasWarnedAboutLeftSlotConflict) {\n console.warn(\n '[kyn-workspace-switcher] `accountMeta` overrides legacy `slot=\"left\"` content. Remove the slot content or migrate fully to `accountMeta`.'\n );\n this._hasWarnedAboutLeftSlotConflict = true;\n return;\n }\n\n if (!this.accountMeta && !this._hasWarnedAboutLegacyLeftSlot) {\n console.warn(\n '[kyn-workspace-switcher] `slot=\"left\"` is a legacy API. Prefer the `accountMeta` property for rigid account meta rendering.'\n );\n this._hasWarnedAboutLegacyLeftSlot = true;\n }\n }\n\n private _renderAccountMeta() {\n if (!this.accountMeta) return null;\n\n return html`\n <div class=\"workspace-switcher__account-meta\">\n <span\n class=\"workspace-switcher__account-meta-status\"\n aria-hidden=\"true\"\n >\n ${unsafeSVG(checkmarkFilledIcon)}\n </span>\n <div class=\"workspace-switcher__account-meta-content\">\n <span\n class=\"workspace-switcher__account-meta-name\"\n title=${this.accountMeta.name}\n >\n ${this.accountMeta.name}\n </span>\n ${this.accountMeta.items?.map((item, index) =>\n this._renderAccountMetaItem(item, index)\n )}\n </div>\n </div>\n `;\n }\n\n private _renderAccountMetaItem(\n item: WorkspaceSwitcherAccountMetaItem,\n index: number\n ) {\n const icon =\n item.actionIcon === 'copy'\n ? this._copiedAccountMetaIndex === index\n ? checkmarkIcon\n : copyIcon\n : item.actionIcon === 'launch'\n ? launchIcon\n : null;\n\n if (item.href || item.actionIcon === 'copy') {\n const target = item.target ?? LINK_TARGETS.SELF;\n const rel =\n item.rel ?? (target === '_blank' ? 'noopener noreferrer' : '');\n\n return html`\n <kyn-link\n class=\"workspace-switcher__account-meta-link\"\n standalone\n animationInactive\n href=${item.href || 'javascript:void(0)'}\n target=${target}\n rel=${rel}\n @on-click=${(e: CustomEvent) =>\n this._handleAccountMetaItemClick(e, item, index)}\n >\n ${item.text}\n ${icon\n ? html`\n <span\n slot=\"icon\"\n class=\"workspace-switcher__account-meta-link-icon\"\n >\n ${unsafeSVG(icon)}\n </span>\n `\n : null}\n </kyn-link>\n `;\n }\n\n return html`\n <span class=\"workspace-switcher__account-meta-item\">${item.text}</span>\n `;\n }\n\n private async _handleAccountMetaItemClick(\n e: CustomEvent,\n item: WorkspaceSwitcherAccountMetaItem,\n index: number\n ) {\n if (item.actionIcon !== 'copy') return;\n\n const copyValue = item.copyValue ?? item.text;\n const origEvent = e.detail?.origEvent as Event | undefined;\n\n origEvent?.preventDefault();\n const clipboard = globalThis.navigator?.clipboard;\n\n try {\n await clipboard?.writeText(copyValue);\n this._showCopyFeedback(index);\n } catch {\n return;\n }\n\n this.dispatchEvent(\n new CustomEvent('on-account-meta-copy', {\n detail: { index, text: item.text, value: copyValue, success: true },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private _showCopyFeedback(index: number) {\n this._copiedAccountMetaIndex = index;\n\n if (this._copyFeedbackTimeout != null) {\n window.clearTimeout(this._copyFeedbackTimeout);\n }\n\n this._copyFeedbackTimeout = window.setTimeout(() => {\n this._copiedAccountMetaIndex = null;\n this._copyFeedbackTimeout = null;\n }, 3000);\n }\n\n private _clearCopyFeedback() {\n this._copiedAccountMetaIndex = null;\n\n if (this._copyFeedbackTimeout != null) {\n window.clearTimeout(this._copyFeedbackTimeout);\n this._copyFeedbackTimeout = null;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-workspace-switcher': WorkspaceSwitcher;\n }\n}\n"],"names":["_defaultTextStrings","currentTitle","workspacesTitle","backToWorkspaces","launchAssistiveText","WorkspaceSwitcher","customElement","LitElement","_classThis","_classSuper","_WorkspaceSwitcher_textStrings_accessor_storage","set","this","__runInitializers","_textStrings_initializers","_WorkspaceSwitcher_accountMeta_accessor_storage","_textStrings_extraInitializers","_accountMeta_initializers","_WorkspaceSwitcher_view_accessor_storage","_accountMeta_extraInitializers","_view_initializers","_WorkspaceSwitcher_hideCurrentTitle_accessor_storage","_view_extraInitializers","_hideCurrentTitle_initializers","_WorkspaceSwitcher_hideWorkspacesTitle_accessor_storage","_hideCurrentTitle_extraInitializers","_hideWorkspacesTitle_initializers","_WorkspaceSwitcher_hideLeftDivider_accessor_storage","_hideWorkspacesTitle_extraInitializers","_hideLeftDivider_initializers","_WorkspaceSwitcher__textStrings_accessor_storage","_hideLeftDivider_extraInitializers","__textStrings_initializers","_WorkspaceSwitcher__hasLegacyLeftSlotContent_accessor_storage","__textStrings_extraInitializers","__hasLegacyLeftSlotContent_initializers","_WorkspaceSwitcher__copiedAccountMetaIndex_accessor_storage","__hasLegacyLeftSlotContent_extraInitializers","__copiedAccountMetaIndex_initializers","_flyoutHost","__copiedAccountMetaIndex_extraInitializers","_copyFeedbackTimeout","_lightDomObserver","_hasWarnedAboutLegacyLeftSlot","_hasWarnedAboutLeftSlotConflict","_handleFlyoutToggle","e","detail","open","view","textStrings","__classPrivateFieldGet","value","__classPrivateFieldSet","accountMeta","hideCurrentTitle","hideWorkspacesTitle","hideLeftDivider","_textStrings","_hasLegacyLeftSlotContent","_copiedAccountMetaIndex","connectedCallback","super","_updateLegacyLeftSlotState","MutationObserver","observe","childList","attributes","attributeFilter","closest","_a","addEventListener","disconnectedCallback","removeEventListener","_clearCopyFeedback","_b","disconnect","willUpdate","changedProperties","has","deepmerge","_warnForLegacyLeftSlotUsage","updated","_updateChildMenuItemTextStrings","render","showLeftHeader","html","_renderAccountMeta","_handleBackClick","Array","from","children","some","child","getAttribute","menuItemTextStrings","querySelectorAll","forEach","item","console","warn","unsafeSVG","checkmarkFilledIcon","name","items","map","index","_renderAccountMetaItem","icon","actionIcon","checkmarkIcon","copyIcon","launchIcon","href","target","LINK_TARGETS","SELF","rel","_handleAccountMetaItemClick","text","copyValue","origEvent","preventDefault","clipboard","_c","globalThis","navigator","writeText","_showCopyFeedback","dispatchEvent","CustomEvent","success","bubbles","composed","window","clearTimeout","setTimeout","_textStrings_decorators","property","type","Object","_accountMeta_decorators","attribute","String","reflect","Boolean","_hideLeftDivider_decorators","__textStrings_decorators","state","__hasLegacyLeftSlotContent_decorators","__copiedAccountMetaIndex_decorators","__esDecorate","kind","static","private","access","obj","get","metadata","_metadata","_view_decorators","_hideCurrentTitle_decorators","_hideWorkspacesTitle_decorators","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","WorkspaceSwitcherScss"],"mappings":"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"}
@@ -7,8 +7,8 @@ import '../../reusable/iconSelector';
7
7
  * - favorite only
8
8
  * - launch indicator only
9
9
  * - launch indicator plus favorite
10
- * When both are present, the launch indicator renders to the left and the
11
- * favorite control stays pinned to the far right for consistency.
10
+ * The launch indicator is part of the primary row button while the favorite
11
+ * control stays pinned to the far right as a separate action.
12
12
  * @fires on-click - Emits when the item is clicked. `detail: { value: string }`
13
13
  * @fires on-favorite-change - Emits when favorite status changes. `detail: { value: string, favorited: boolean }`
14
14
  */
@@ -33,10 +33,23 @@ export declare class WorkspaceSwitcherMenuItem extends LitElement {
33
33
  accessor favorited: boolean;
34
34
  /** Whether to show the launch/new-tab indicator (item variant only). */
35
35
  accessor showLaunchIndicator: boolean;
36
+ /** Text string customization. */
37
+ accessor textStrings: {
38
+ launchAssistiveText: string;
39
+ };
40
+ /** Merged text strings.
41
+ * @internal
42
+ */
43
+ accessor _textStrings: {
44
+ launchAssistiveText: string;
45
+ };
36
46
  /** Whether to show the favorite icon selector (item variant only). When present, it stays right-aligned. */
37
47
  accessor showFavorite: boolean;
38
48
  render(): import("lit-html").TemplateResult<1>;
39
49
  private _renderWorkspaceContent;
50
+ private _renderLaunchIndicator;
51
+ private _renderLaunchAssistiveText;
52
+ willUpdate(changedProperties: Map<string, unknown>): void;
40
53
  private _renderItemContent;
41
54
  private _handleClick;
42
55
  private _handleFavoriteChange;
@@ -1 +1 @@
1
- {"version":3,"file":"workspaceSwitcherMenuItem.d.ts","sourceRoot":"","sources":["../../../../src/components/global/workspaceSwitcher/workspaceSwitcherMenuItem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,KAAK,CAAC;AAWlD,OAAO,6BAA6B,CAAC;AAErC;;;;;;;;;;;GAWG;AACH,qBACa,yBAA0B,SAAQ,UAAU;IACvD,OAAgB,MAAM,0BAA4C;IAElE,oCAAoC;IAEpC,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CAAU;IAEzD,uCAAuC;IAEvC,QAAQ,CAAC,KAAK,SAAM;IAEpB,oCAAoC;IAEpC,QAAQ,CAAC,IAAI,SAAM;IAEnB;;;OAGG;IAEH,QAAQ,CAAC,SAAS,SAAM;IAExB,qDAAqD;IAErD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAQ;IAErC,oCAAoC;IAEpC,QAAQ,CAAC,QAAQ,UAAS;IAE1B,yDAAyD;IAEzD,QAAQ,CAAC,SAAS,UAAS;IAE3B,wEAAwE;IAExE,QAAQ,CAAC,mBAAmB,UAAS;IAErC,4GAA4G;IAE5G,QAAQ,CAAC,YAAY,UAAS;IAErB,MAAM;IAsCf,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,kBAAkB;IA6B1B,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,qBAAqB;CAU9B;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,kCAAkC,EAAE,yBAAyB,CAAC;KAC/D;CACF"}
1
+ {"version":3,"file":"workspaceSwitcherMenuItem.d.ts","sourceRoot":"","sources":["../../../../src/components/global/workspaceSwitcher/workspaceSwitcherMenuItem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,KAAK,CAAC;AAYlD,OAAO,6BAA6B,CAAC;AAMrC;;;;;;;;;;;GAWG;AACH,qBACa,yBAA0B,SAAQ,UAAU;IACvD,OAAgB,MAAM,0BAA4C;IAElE,oCAAoC;IAEpC,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CAAU;IAEzD,uCAAuC;IAEvC,QAAQ,CAAC,KAAK,SAAM;IAEpB,oCAAoC;IAEpC,QAAQ,CAAC,IAAI,SAAM;IAEnB;;;OAGG;IAEH,QAAQ,CAAC,SAAS,SAAM;IAExB,qDAAqD;IAErD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAQ;IAErC,oCAAoC;IAEpC,QAAQ,CAAC,QAAQ,UAAS;IAE1B,yDAAyD;IAEzD,QAAQ,CAAC,SAAS,UAAS;IAE3B,wEAAwE;IAExE,QAAQ,CAAC,mBAAmB,UAAS;IAErC,iCAAiC;IAEjC,QAAQ,CAAC,WAAW;;MAAuB;IAE3C;;OAEG;IAEH,QAAQ,CAAC,YAAY;;MAAuB;IAE5C,4GAA4G;IAE5G,QAAQ,CAAC,YAAY,UAAS;IAErB,MAAM;IA4Cf,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,0BAA0B;IAQzB,UAAU,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAM3D,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,qBAAqB;CAU9B;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,kCAAkC,EAAE,yBAAyB,CAAC;KAC/D;CACF"}
@@ -1,4 +1,4 @@
1
- import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPrivateFieldGet as n,__classPrivateFieldSet as m}from"tslib";import{css as a,LitElement as o,unsafeCSS as s,html as r}from"lit";import{customElement as c,property as l}from"lit/decorators.js";import{classMap as u}from"lit/directives/class-map.js";import{unsafeSVG as d}from"lit/directives/unsafe-svg.js";import{f as h,d as v,l as k}from"../../../vendor/@kyndryl-design-system/shidoka-icons-BKNlykoZ.js";import"../../reusable/iconSelector/iconSelector.js";import"../../reusable/iconSelector/iconSelectorGroup.js";import"lit-html/directives/class-map.js";import"lit-html/directives/unsafe-svg.js";var p=a`*,
1
+ import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPrivateFieldGet as n,__classPrivateFieldSet as a}from"tslib";import{css as m,LitElement as s,unsafeCSS as o,html as r}from"lit";import{customElement as c,property as l,state as u}from"lit/decorators.js";import{classMap as d}from"lit/directives/class-map.js";import{unsafeSVG as h}from"lit/directives/unsafe-svg.js";import{deepmerge as v}from"deepmerge-ts";import{f as p,d as k,l as _}from"../../../vendor/@kyndryl-design-system/shidoka-icons-BKNlykoZ.js";import"../../reusable/iconSelector/iconSelector.js";import"../../reusable/iconSelector/iconSelectorGroup.js";import"lit-html/directives/class-map.js";import"lit-html/directives/unsafe-svg.js";var g=m`*,
2
2
  *::before,
3
3
  *::after {
4
4
  box-sizing: border-box;
@@ -36,6 +36,16 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPr
36
36
  display: block;
37
37
  }
38
38
 
39
+ .sr-only {
40
+ clip: rect(0 0 0 0);
41
+ clip-path: inset(50%);
42
+ height: 1px;
43
+ overflow: hidden;
44
+ position: absolute;
45
+ white-space: nowrap;
46
+ width: 1px;
47
+ }
48
+
39
49
  .menu-item {
40
50
  font-family: var(--kd-font-family-secondary);
41
51
  font-size: var(--kd-font-size-utility-2-sm);
@@ -168,9 +178,6 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPr
168
178
  .menu-item--back.menu-item--selected .menu-item__back-icon {
169
179
  color: var(--kd-color-text-level-light);
170
180
  }
171
- .menu-item--item {
172
- padding-right: 8px;
173
- }
174
181
  .menu-item--item .menu-item__name {
175
182
  max-width: 40ch;
176
183
  }
@@ -184,6 +191,7 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPr
184
191
  align-items: center;
185
192
  gap: 8px;
186
193
  flex-shrink: 0;
194
+ padding-right: 8px;
187
195
  }
188
196
  .menu-item--item .menu-item__launch-indicator {
189
197
  display: flex;
@@ -229,9 +237,9 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPr
229
237
  }
230
238
  .menu-item--item .menu-item__favorite {
231
239
  color: var(--kd-color-text-level-secondary);
232
- }`;let _=(()=>{var a,_,g,f,b,w,x,y,$;let S,W,j,z,C,I,F,M,L,T,B,E=[c("kyn-workspace-switcher-menu-item")],O=[],P=o,G=[],H=[],N=[],V=[],q=[],A=[],D=[],J=[],K=[],Q=[],R=[],U=[],X=[],Y=[],Z=[],ee=[],te=[],ie=[];return W=class extends P{get variant(){return n(this,a,"f")}set variant(e){m(this,a,e,"f")}get value(){return n(this,_,"f")}set value(e){m(this,_,e,"f")}get name(){return n(this,g,"f")}set name(e){m(this,g,e,"f")}get nameTitle(){return n(this,f,"f")}set nameTitle(e){m(this,f,e,"f")}get count(){return n(this,b,"f")}set count(e){m(this,b,e,"f")}get selected(){return n(this,w,"f")}set selected(e){m(this,w,e,"f")}get favorited(){return n(this,x,"f")}set favorited(e){m(this,x,e,"f")}get showLaunchIndicator(){return n(this,y,"f")}set showLaunchIndicator(e){m(this,y,e,"f")}get showFavorite(){return n(this,$,"f")}set showFavorite(e){m(this,$,e,"f")}render(){const e="workspace"===this.variant,t="back"===this.variant,i={"menu-item":!0,"menu-item--workspace":e,"menu-item--back":t,"menu-item--item":!e&&!t,"menu-item--selected":this.selected},n=this.nameTitle||this.name;return r`
240
+ }`;const f={launchAssistiveText:"Opens in a new tab"};let w=(()=>{var m,w,x,b,y,S,$,W,I,j,L;let M,T,z,C,F,A,O,B,E,P,G,H,N,U=[c("kyn-workspace-switcher-menu-item")],V=[],q=s,D=[],J=[],K=[],Q=[],R=[],X=[],Y=[],Z=[],ee=[],te=[],ie=[],ne=[],ae=[],me=[],se=[],oe=[],re=[],ce=[],le=[],ue=[],de=[],he=[];return T=class extends q{get variant(){return n(this,m,"f")}set variant(e){a(this,m,e,"f")}get value(){return n(this,w,"f")}set value(e){a(this,w,e,"f")}get name(){return n(this,x,"f")}set name(e){a(this,x,e,"f")}get nameTitle(){return n(this,b,"f")}set nameTitle(e){a(this,b,e,"f")}get count(){return n(this,y,"f")}set count(e){a(this,y,e,"f")}get selected(){return n(this,S,"f")}set selected(e){a(this,S,e,"f")}get favorited(){return n(this,$,"f")}set favorited(e){a(this,$,e,"f")}get showLaunchIndicator(){return n(this,W,"f")}set showLaunchIndicator(e){a(this,W,e,"f")}get textStrings(){return n(this,I,"f")}set textStrings(e){a(this,I,e,"f")}get _textStrings(){return n(this,j,"f")}set _textStrings(e){a(this,j,e,"f")}get showFavorite(){return n(this,L,"f")}set showFavorite(e){a(this,L,e,"f")}render(){const e="workspace"===this.variant,t="back"===this.variant,i={"menu-item":!0,"menu-item--workspace":e,"menu-item--back":t,"menu-item--item":!e&&!t,"menu-item--selected":this.selected},n=this.nameTitle||this.name;return r`
233
241
  <div
234
- class=${u(i)}
242
+ class=${d(i)}
235
243
  role=${t?"none":"listitem"}
236
244
  aria-current=${this.selected?"true":"false"}
237
245
  >
@@ -241,34 +249,35 @@ import{__setFunctionName as e,__esDecorate as t,__runInitializers as i,__classPr
241
249
  @click=${this._handleClick}
242
250
  >
243
251
  ${t?r`<span class="menu-item__back-icon"
244
- >${d(h)}</span
252
+ >${h(p)}</span
245
253
  >`:null}
246
254
  <span class="menu-item__name">${this.name}</span>
247
255
  ${e?this._renderWorkspaceContent():null}
256
+ ${e||t||!this.showLaunchIndicator?null:this._renderLaunchIndicator()}
257
+ ${e||t||!this.showLaunchIndicator?null:this._renderLaunchAssistiveText()}
248
258
  </button>
249
259
  ${e||t?null:this._renderItemContent()}
250
260
  </div>
251
261
  `}_renderWorkspaceContent(){return null==this.count?null:r`
252
262
  <span class="menu-item__count">${this.count}</span>
253
- <span class="menu-item__chevron">${d(v)}</span>
254
- `}_renderItemContent(){return this.showFavorite||this.showLaunchIndicator?r`
263
+ <span class="menu-item__chevron">${h(k)}</span>
264
+ `}_renderLaunchIndicator(){return r`
265
+ <span class="menu-item__launch-indicator" aria-hidden="true">
266
+ ${h(_)}
267
+ </span>
268
+ `}_renderLaunchAssistiveText(){return this._textStrings.launchAssistiveText?r`<span class="sr-only"
269
+ >${this._textStrings.launchAssistiveText}</span
270
+ >`:null}willUpdate(e){e.has("textStrings")&&(this._textStrings=v(f,this.textStrings))}_renderItemContent(){return this.showFavorite?r`
255
271
  <div class="menu-item__actions">
256
- ${this.showLaunchIndicator?r`
257
- <span class="menu-item__launch-indicator" aria-hidden="true">
258
- ${d(k)}
259
- </span>
260
- `:null}
261
- ${this.showFavorite?r`
262
- <kyn-icon-selector
263
- class="menu-item__favorite"
264
- ?checked=${this.favorited}
265
- value=${this.value}
266
- animateSelection
267
- onlyVisibleOnHover
268
- persistWhenChecked
269
- @on-change=${this._handleFavoriteChange}
270
- ></kyn-icon-selector>
271
- `:null}
272
+ <kyn-icon-selector
273
+ class="menu-item__favorite"
274
+ ?checked=${this.favorited}
275
+ value=${this.value}
276
+ animateSelection
277
+ onlyVisibleOnHover
278
+ persistWhenChecked
279
+ @on-change=${this._handleFavoriteChange}
280
+ ></kyn-icon-selector>
272
281
  </div>
273
- `:null}_handleClick(){this.dispatchEvent(new CustomEvent("on-click",{detail:{value:this.value},bubbles:!0,composed:!0}))}_handleFavoriteChange(e){e.stopPropagation(),this.dispatchEvent(new CustomEvent("on-favorite-change",{detail:{value:this.value,favorited:e.detail.checked},bubbles:!0,composed:!0}))}constructor(){super(...arguments),a.set(this,i(this,G,"item")),_.set(this,(i(this,H),i(this,N,""))),g.set(this,(i(this,V),i(this,q,""))),f.set(this,(i(this,A),i(this,D,""))),b.set(this,(i(this,J),i(this,K,null))),w.set(this,(i(this,Q),i(this,R,!1))),x.set(this,(i(this,U),i(this,X,!1))),y.set(this,(i(this,Y),i(this,Z,!1))),$.set(this,(i(this,ee),i(this,te,!1))),i(this,ie)}},a=new WeakMap,_=new WeakMap,g=new WeakMap,f=new WeakMap,b=new WeakMap,w=new WeakMap,x=new WeakMap,y=new WeakMap,$=new WeakMap,e(W,"WorkspaceSwitcherMenuItem"),(()=>{var e;const i="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(e=P[Symbol.metadata])&&void 0!==e?e:null):void 0;j=[l({type:String})],z=[l({type:String})],C=[l({type:String})],I=[l({type:String,attribute:"name-title"})],F=[l({type:Number})],M=[l({type:Boolean})],L=[l({type:Boolean})],T=[l({type:Boolean})],B=[l({type:Boolean})],t(W,null,j,{kind:"accessor",name:"variant",static:!1,private:!1,access:{has:e=>"variant"in e,get:e=>e.variant,set:(e,t)=>{e.variant=t}},metadata:i},G,H),t(W,null,z,{kind:"accessor",name:"value",static:!1,private:!1,access:{has:e=>"value"in e,get:e=>e.value,set:(e,t)=>{e.value=t}},metadata:i},N,V),t(W,null,C,{kind:"accessor",name:"name",static:!1,private:!1,access:{has:e=>"name"in e,get:e=>e.name,set:(e,t)=>{e.name=t}},metadata:i},q,A),t(W,null,I,{kind:"accessor",name:"nameTitle",static:!1,private:!1,access:{has:e=>"nameTitle"in e,get:e=>e.nameTitle,set:(e,t)=>{e.nameTitle=t}},metadata:i},D,J),t(W,null,F,{kind:"accessor",name:"count",static:!1,private:!1,access:{has:e=>"count"in e,get:e=>e.count,set:(e,t)=>{e.count=t}},metadata:i},K,Q),t(W,null,M,{kind:"accessor",name:"selected",static:!1,private:!1,access:{has:e=>"selected"in e,get:e=>e.selected,set:(e,t)=>{e.selected=t}},metadata:i},R,U),t(W,null,L,{kind:"accessor",name:"favorited",static:!1,private:!1,access:{has:e=>"favorited"in e,get:e=>e.favorited,set:(e,t)=>{e.favorited=t}},metadata:i},X,Y),t(W,null,T,{kind:"accessor",name:"showLaunchIndicator",static:!1,private:!1,access:{has:e=>"showLaunchIndicator"in e,get:e=>e.showLaunchIndicator,set:(e,t)=>{e.showLaunchIndicator=t}},metadata:i},Z,ee),t(W,null,B,{kind:"accessor",name:"showFavorite",static:!1,private:!1,access:{has:e=>"showFavorite"in e,get:e=>e.showFavorite,set:(e,t)=>{e.showFavorite=t}},metadata:i},te,ie),t(null,S={value:W},E,{kind:"class",name:W.name,metadata:i},null,O),W=S.value,i&&Object.defineProperty(W,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i})})(),W.styles=s(p),i(W,O),W})();export{_ as WorkspaceSwitcherMenuItem};
282
+ `:null}_handleClick(){this.dispatchEvent(new CustomEvent("on-click",{detail:{value:this.value},bubbles:!0,composed:!0}))}_handleFavoriteChange(e){e.stopPropagation(),this.dispatchEvent(new CustomEvent("on-favorite-change",{detail:{value:this.value,favorited:e.detail.checked},bubbles:!0,composed:!0}))}constructor(){super(...arguments),m.set(this,i(this,D,"item")),w.set(this,(i(this,J),i(this,K,""))),x.set(this,(i(this,Q),i(this,R,""))),b.set(this,(i(this,X),i(this,Y,""))),y.set(this,(i(this,Z),i(this,ee,null))),S.set(this,(i(this,te),i(this,ie,!1))),$.set(this,(i(this,ne),i(this,ae,!1))),W.set(this,(i(this,me),i(this,se,!1))),I.set(this,(i(this,oe),i(this,re,f))),j.set(this,(i(this,ce),i(this,le,f))),L.set(this,(i(this,ue),i(this,de,!1))),i(this,he)}},m=new WeakMap,w=new WeakMap,x=new WeakMap,b=new WeakMap,y=new WeakMap,S=new WeakMap,$=new WeakMap,W=new WeakMap,I=new WeakMap,j=new WeakMap,L=new WeakMap,e(T,"WorkspaceSwitcherMenuItem"),(()=>{var e;const i="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(e=q[Symbol.metadata])&&void 0!==e?e:null):void 0;z=[l({type:String})],C=[l({type:String})],F=[l({type:String})],A=[l({type:String,attribute:"name-title"})],O=[l({type:Number})],B=[l({type:Boolean})],E=[l({type:Boolean})],P=[l({type:Boolean})],G=[l({type:Object})],H=[u()],N=[l({type:Boolean})],t(T,null,z,{kind:"accessor",name:"variant",static:!1,private:!1,access:{has:e=>"variant"in e,get:e=>e.variant,set:(e,t)=>{e.variant=t}},metadata:i},D,J),t(T,null,C,{kind:"accessor",name:"value",static:!1,private:!1,access:{has:e=>"value"in e,get:e=>e.value,set:(e,t)=>{e.value=t}},metadata:i},K,Q),t(T,null,F,{kind:"accessor",name:"name",static:!1,private:!1,access:{has:e=>"name"in e,get:e=>e.name,set:(e,t)=>{e.name=t}},metadata:i},R,X),t(T,null,A,{kind:"accessor",name:"nameTitle",static:!1,private:!1,access:{has:e=>"nameTitle"in e,get:e=>e.nameTitle,set:(e,t)=>{e.nameTitle=t}},metadata:i},Y,Z),t(T,null,O,{kind:"accessor",name:"count",static:!1,private:!1,access:{has:e=>"count"in e,get:e=>e.count,set:(e,t)=>{e.count=t}},metadata:i},ee,te),t(T,null,B,{kind:"accessor",name:"selected",static:!1,private:!1,access:{has:e=>"selected"in e,get:e=>e.selected,set:(e,t)=>{e.selected=t}},metadata:i},ie,ne),t(T,null,E,{kind:"accessor",name:"favorited",static:!1,private:!1,access:{has:e=>"favorited"in e,get:e=>e.favorited,set:(e,t)=>{e.favorited=t}},metadata:i},ae,me),t(T,null,P,{kind:"accessor",name:"showLaunchIndicator",static:!1,private:!1,access:{has:e=>"showLaunchIndicator"in e,get:e=>e.showLaunchIndicator,set:(e,t)=>{e.showLaunchIndicator=t}},metadata:i},se,oe),t(T,null,G,{kind:"accessor",name:"textStrings",static:!1,private:!1,access:{has:e=>"textStrings"in e,get:e=>e.textStrings,set:(e,t)=>{e.textStrings=t}},metadata:i},re,ce),t(T,null,H,{kind:"accessor",name:"_textStrings",static:!1,private:!1,access:{has:e=>"_textStrings"in e,get:e=>e._textStrings,set:(e,t)=>{e._textStrings=t}},metadata:i},le,ue),t(T,null,N,{kind:"accessor",name:"showFavorite",static:!1,private:!1,access:{has:e=>"showFavorite"in e,get:e=>e.showFavorite,set:(e,t)=>{e.showFavorite=t}},metadata:i},de,he),t(null,M={value:T},U,{kind:"class",name:T.name,metadata:i},null,V),T=M.value,i&&Object.defineProperty(T,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i})})(),T.styles=o(g),i(T,V),T})();export{w as WorkspaceSwitcherMenuItem};
274
283
  //# sourceMappingURL=workspaceSwitcherMenuItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspaceSwitcherMenuItem.js","sources":["../../../../src/components/global/workspaceSwitcher/workspaceSwitcherMenuItem.ts"],"sourcesContent":["import { LitElement, html, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\n\nimport WorkspaceSwitcherMenuItemScss from './workspaceSwitcherMenuItem.scss?inline';\n\nimport arrowLeftIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/arrow-left.svg';\nimport chevronRightIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/chevron-right.svg';\nimport launchIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/launch.svg';\n\nimport '../../reusable/iconSelector';\n\n/**\n * Workspace Switcher Menu Item component.\n * Used for both workspace items (left panel) and account items (right panel).\n * Item rows support these trailing-action combinations:\n * - favorite only\n * - launch indicator only\n * - launch indicator plus favorite\n * When both are present, the launch indicator renders to the left and the\n * favorite control stays pinned to the far right for consistency.\n * @fires on-click - Emits when the item is clicked. `detail: { value: string }`\n * @fires on-favorite-change - Emits when favorite status changes. `detail: { value: string, favorited: boolean }`\n */\n@customElement('kyn-workspace-switcher-menu-item')\nexport class WorkspaceSwitcherMenuItem extends LitElement {\n static override styles = unsafeCSS(WorkspaceSwitcherMenuItemScss);\n\n /** The variant of the menu item. */\n @property({ type: String })\n accessor variant: 'workspace' | 'item' | 'back' = 'item';\n\n /** The unique value/id of the item. */\n @property({ type: String })\n accessor value = '';\n\n /** The display name of the item. */\n @property({ type: String })\n accessor name = '';\n\n /**\n * Optional full name for the native tooltip when `name` is abbreviated in the DOM.\n * Defaults to `name`.\n */\n @property({ type: String, attribute: 'name-title' })\n accessor nameTitle = '';\n\n /** The count to display (workspace variant only). */\n @property({ type: Number })\n accessor count: number | null = null;\n\n /** Whether the item is selected. */\n @property({ type: Boolean })\n accessor selected = false;\n\n /** Whether the item is favorited (item variant only). */\n @property({ type: Boolean })\n accessor favorited = false;\n\n /** Whether to show the launch/new-tab indicator (item variant only). */\n @property({ type: Boolean })\n accessor showLaunchIndicator = false;\n\n /** Whether to show the favorite icon selector (item variant only). When present, it stays right-aligned. */\n @property({ type: Boolean })\n accessor showFavorite = false;\n\n override render() {\n const isWorkspace = this.variant === 'workspace';\n const isBack = this.variant === 'back';\n\n const classes = {\n 'menu-item': true,\n 'menu-item--workspace': isWorkspace,\n 'menu-item--back': isBack,\n 'menu-item--item': !isWorkspace && !isBack,\n 'menu-item--selected': this.selected,\n };\n\n const tooltipName = this.nameTitle || this.name;\n\n return html`\n <div\n class=${classMap(classes)}\n role=${isBack ? 'none' : 'listitem'}\n aria-current=${this.selected ? 'true' : 'false'}\n >\n <button\n class=\"menu-item__select\"\n title=${tooltipName}\n @click=${this._handleClick}\n >\n ${isBack\n ? html`<span class=\"menu-item__back-icon\"\n >${unsafeSVG(arrowLeftIcon)}</span\n >`\n : null}\n <span class=\"menu-item__name\">${this.name}</span>\n ${isWorkspace ? this._renderWorkspaceContent() : null}\n </button>\n ${!isWorkspace && !isBack ? this._renderItemContent() : null}\n </div>\n `;\n }\n\n private _renderWorkspaceContent() {\n if (this.count == null) return null;\n\n return html`\n <span class=\"menu-item__count\">${this.count}</span>\n <span class=\"menu-item__chevron\">${unsafeSVG(chevronRightIcon)}</span>\n `;\n }\n\n private _renderItemContent() {\n if (!this.showFavorite && !this.showLaunchIndicator) return null;\n\n return html`\n <div class=\"menu-item__actions\">\n ${this.showLaunchIndicator\n ? html`\n <span class=\"menu-item__launch-indicator\" aria-hidden=\"true\">\n ${unsafeSVG(launchIcon)}\n </span>\n `\n : null}\n ${this.showFavorite\n ? html`\n <kyn-icon-selector\n class=\"menu-item__favorite\"\n ?checked=${this.favorited}\n value=${this.value}\n animateSelection\n onlyVisibleOnHover\n persistWhenChecked\n @on-change=${this._handleFavoriteChange}\n ></kyn-icon-selector>\n `\n : null}\n </div>\n `;\n }\n\n private _handleClick() {\n this.dispatchEvent(\n new CustomEvent('on-click', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private _handleFavoriteChange(e: CustomEvent) {\n e.stopPropagation();\n this.dispatchEvent(\n new CustomEvent('on-favorite-change', {\n detail: { value: this.value, favorited: e.detail.checked },\n bubbles: true,\n composed: true,\n })\n );\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-workspace-switcher-menu-item': WorkspaceSwitcherMenuItem;\n }\n}\n"],"names":["WorkspaceSwitcherMenuItem","customElement","LitElement","_classThis","_classSuper","variant","__classPrivateFieldGet","this","_WorkspaceSwitcherMenuItem_variant_accessor_storage","value","__classPrivateFieldSet","_WorkspaceSwitcherMenuItem_value_accessor_storage","name","_WorkspaceSwitcherMenuItem_name_accessor_storage","nameTitle","_WorkspaceSwitcherMenuItem_nameTitle_accessor_storage","count","_WorkspaceSwitcherMenuItem_count_accessor_storage","selected","_WorkspaceSwitcherMenuItem_selected_accessor_storage","favorited","_WorkspaceSwitcherMenuItem_favorited_accessor_storage","showLaunchIndicator","_WorkspaceSwitcherMenuItem_showLaunchIndicator_accessor_storage","showFavorite","_WorkspaceSwitcherMenuItem_showFavorite_accessor_storage","render","isWorkspace","isBack","classes","tooltipName","html","classMap","_handleClick","unsafeSVG","arrowLeftIcon","_renderWorkspaceContent","_renderItemContent","chevronRightIcon","launchIcon","_handleFavoriteChange","dispatchEvent","CustomEvent","detail","bubbles","composed","e","stopPropagation","checked","set","__runInitializers","_variant_initializers","_variant_extraInitializers","_value_initializers","_value_extraInitializers","_name_initializers","_name_extraInitializers","_nameTitle_initializers","_nameTitle_extraInitializers","_count_initializers","_count_extraInitializers","_selected_initializers","_selected_extraInitializers","_favorited_initializers","_favorited_extraInitializers","_showLaunchIndicator_initializers","_showLaunchIndicator_extraInitializers","_showFavorite_initializers","_variant_decorators","property","type","String","_value_decorators","_name_decorators","attribute","_count_decorators","Number","_selected_decorators","Boolean","_favorited_decorators","_showLaunchIndicator_decorators","_showFavorite_decorators","__esDecorate","kind","static","private","access","has","obj","get","metadata","_metadata","_nameTitle_decorators","_showFavorite_extraInitializers","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","WorkspaceSwitcherMenuItemScss"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BaA,EAAyB,yDADrCC,EAAc,4CACgCC,sGAARC,EAAA,cAAQC,EAK7C,WAASC,GAAO,OAAAC,EAAAC,KAAAC,EAAA,IAAA,CAAhB,WAASH,CAAOI,GAAAC,EAAAH,KAAAC,EAAAC,EAAA,IAAA,CAIhB,SAASA,GAAK,OAAAH,EAAAC,KAAAI,EAAA,IAAA,CAAd,SAASF,CAAKA,GAAAC,EAAAH,KAAAI,EAAAF,EAAA,IAAA,CAId,QAASG,GAAI,OAAAN,EAAAC,KAAAM,EAAA,IAAA,CAAb,QAASD,CAAIH,GAAAC,EAAAH,KAAAM,EAAAJ,EAAA,IAAA,CAOb,aAASK,GAAS,OAAAR,EAAAC,KAAAQ,EAAA,IAAA,CAAlB,aAASD,CAASL,GAAAC,EAAAH,KAAAQ,EAAAN,EAAA,IAAA,CAIlB,SAASO,GAAK,OAAAV,EAAAC,KAAAU,EAAA,IAAA,CAAd,SAASD,CAAKP,GAAAC,EAAAH,KAAAU,EAAAR,EAAA,IAAA,CAId,YAASS,GAAQ,OAAAZ,EAAAC,KAAAY,EAAA,IAAA,CAAjB,YAASD,CAAQT,GAAAC,EAAAH,KAAAY,EAAAV,EAAA,IAAA,CAIjB,aAASW,GAAS,OAAAd,EAAAC,KAAAc,EAAA,IAAA,CAAlB,aAASD,CAASX,GAAAC,EAAAH,KAAAc,EAAAZ,EAAA,IAAA,CAIlB,uBAASa,GAAmB,OAAAhB,EAAAC,KAAAgB,EAAA,IAAA,CAA5B,uBAASD,CAAmBb,GAAAC,EAAAH,KAAAgB,EAAAd,EAAA,IAAA,CAI5B,gBAASe,GAAY,OAAAlB,EAAAC,KAAAkB,EAAA,IAAA,CAArB,gBAASD,CAAYf,GAAAC,EAAAH,KAAAkB,EAAAhB,EAAA,IAAA,CAEZ,MAAAiB,GACP,MAAMC,EAA+B,cAAjBpB,KAAKF,QACnBuB,EAA0B,SAAjBrB,KAAKF,QAEdwB,EAAU,CACd,aAAa,EACb,uBAAwBF,EACxB,kBAAmBC,EACnB,mBAAoBD,IAAgBC,EACpC,sBAAuBrB,KAAKW,UAGxBY,EAAcvB,KAAKO,WAAaP,KAAKK,KAE3C,OAAOmB,CAAI;;gBAECC,EAASH;eACVD,EAAS,OAAS;uBACVrB,KAAKW,SAAW,OAAS;;;;kBAI9BY;mBACCvB,KAAK0B;;YAEZL,EACEG,CAAI;mBACCG,EAAUC;iBAEf;0CAC4B5B,KAAKK;YACnCe,EAAcpB,KAAK6B,0BAA4B;;UAEhDT,GAAgBC,EAAqC,KAA5BrB,KAAK8B;;KAGvC,CAEQ,uBAAAD,GACN,OAAkB,MAAd7B,KAAKS,MAAsB,KAExBe,CAAI;uCACwBxB,KAAKS;yCACHkB,EAAUI;KAEjD,CAEQ,kBAAAD,GACN,OAAK9B,KAAKiB,cAAiBjB,KAAKe,oBAEzBS,CAAI;;UAELxB,KAAKe,oBACHS,CAAI;;kBAEEG,EAAUK;;cAGhB;UACFhC,KAAKiB,aACHO,CAAI;;;2BAGWxB,KAAKa;wBACRb,KAAKE;;;;6BAIAF,KAAKiC;;cAGtB;;MAvBoD,IA0B9D,CAEQ,YAAAP,GACN1B,KAAKkC,cACH,IAAIC,YAAY,WAAY,CAC1BC,OAAQ,CAAElC,MAAOF,KAAKE,OACtBmC,SAAS,EACTC,UAAU,IAGhB,CAEQ,qBAAAL,CAAsBM,GAC5BA,EAAEC,kBACFxC,KAAKkC,cACH,IAAIC,YAAY,qBAAsB,CACpCC,OAAQ,CAAElC,MAAOF,KAAKE,MAAOW,UAAW0B,EAAEH,OAAOK,SACjDJ,SAAS,EACTC,UAAU,IAGhB,mCApISrC,EAAAyC,IAAA1C,KAAA2C,EAAA3C,KAAA4C,EAAyC,SAIzCxC,EAAAsC,IAAA1C,MAAA2C,EAAA3C,KAAA6C,GAAAF,EAAA3C,KAAA8C,EAAQ,MAIRxC,EAAAoC,IAAA1C,MAAA2C,EAAA3C,KAAA+C,GAAAJ,EAAA3C,KAAAgD,EAAO,MAOPxC,EAAAkC,IAAA1C,MAAA2C,EAAA3C,KAAAiD,GAAAN,EAAA3C,KAAAkD,EAAY,MAIZxC,EAAAgC,IAAA1C,MAAA2C,EAAA3C,KAAAmD,GAAAR,EAAA3C,KAAAoD,EAAuB,QAIvBxC,EAAA8B,IAAA1C,MAAA2C,EAAA3C,KAAAqD,GAAAV,EAAA3C,KAAAsD,GAAW,KAIXxC,EAAA4B,IAAA1C,MAAA2C,EAAA3C,KAAAuD,GAAAZ,EAAA3C,KAAAwD,GAAY,KAIZxC,EAAA0B,IAAA1C,MAAA2C,EAAA3C,KAAAyD,GAAAd,EAAA3C,KAAA0D,GAAsB,KAItBxC,EAAAwB,IAAA1C,MAAA2C,EAAA3C,KAAA2D,IAAAhB,EAAA3C,KAAA4D,IAAe,uTApCvBC,EAAA,CAAAC,EAAS,CAAEC,KAAMC,UAIjBC,EAAA,CAAAH,EAAS,CAAEC,KAAMC,UAIjBE,EAAA,CAAAJ,EAAS,CAAEC,KAAMC,aAOjBF,EAAS,CAAEC,KAAMC,OAAQG,UAAW,gBAIpCC,EAAA,CAAAN,EAAS,CAAEC,KAAMM,UAIjBC,EAAA,CAAAR,EAAS,CAAEC,KAAMQ,WAIjBC,EAAA,CAAAV,EAAS,CAAEC,KAAMQ,WAIjBE,EAAA,CAAAX,EAAS,CAAEC,KAAMQ,WAIjBG,EAAA,CAAAZ,EAAS,CAAEC,KAAMQ,WAlClBI,EAAA/E,EAAA,KAAAiE,EAAA,CAAAe,KAAA,WAAAvE,KAAA,UAAAwE,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAC,IAAAC,GAAA,YAAAA,EAAAC,IAAAD,GAAAA,EAASnF,QAAO4C,IAAA,CAAAuC,EAAA/E,KAAA+E,EAAPnF,QAAOI,CAAA,GAAAiF,SAAAC,GAAAxC,EAAAC,GAIhB8B,EAAA/E,EAAA,KAAAqE,EAAA,CAAAW,KAAA,WAAAvE,KAAA,QAAAwE,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAC,IAAAC,GAAA,UAAAA,EAAAC,IAAAD,GAAAA,EAAS/E,MAAKwC,IAAA,CAAAuC,EAAA/E,KAAA+E,EAAL/E,MAAKA,CAAA,GAAAiF,SAAAC,GAAAtC,EAAAC,GAId4B,EAAA/E,EAAA,KAAAsE,EAAA,CAAAU,KAAA,WAAAvE,KAAA,OAAAwE,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAC,IAAAC,GAAA,SAAAA,EAAAC,IAAAD,GAAAA,EAAS5E,KAAIqC,IAAA,CAAAuC,EAAA/E,KAAA+E,EAAJ5E,KAAIH,CAAA,GAAAiF,SAAAC,GAAApC,EAAAC,GAOb0B,EAAA/E,EAAA,KAAAyF,EAAA,CAAAT,KAAA,WAAAvE,KAAA,YAAAwE,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAC,IAAAC,GAAA,cAAAA,EAAAC,IAAAD,GAAAA,EAAS1E,UAASmC,IAAA,CAAAuC,EAAA/E,KAAA+E,EAAT1E,UAASL,CAAA,GAAAiF,SAAAC,GAAAlC,EAAAC,GAIlBwB,EAAA/E,EAAA,KAAAwE,EAAA,CAAAQ,KAAA,WAAAvE,KAAA,QAAAwE,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAC,IAAAC,GAAA,UAAAA,EAAAC,IAAAD,GAAAA,EAASxE,MAAKiC,IAAA,CAAAuC,EAAA/E,KAAA+E,EAALxE,MAAKP,CAAA,GAAAiF,SAAAC,GAAAhC,EAAAC,GAIdsB,EAAA/E,EAAA,KAAA0E,EAAA,CAAAM,KAAA,WAAAvE,KAAA,WAAAwE,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAC,IAAAC,GAAA,aAAAA,EAAAC,IAAAD,GAAAA,EAAStE,SAAQ+B,IAAA,CAAAuC,EAAA/E,KAAA+E,EAARtE,SAAQT,CAAA,GAAAiF,SAAAC,GAAA9B,EAAAC,GAIjBoB,EAAA/E,EAAA,KAAA4E,EAAA,CAAAI,KAAA,WAAAvE,KAAA,YAAAwE,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAC,IAAAC,GAAA,cAAAA,EAAAC,IAAAD,GAAAA,EAASpE,UAAS6B,IAAA,CAAAuC,EAAA/E,KAAA+E,EAATpE,UAASX,CAAA,GAAAiF,SAAAC,GAAA5B,EAAAC,GAIlBkB,EAAA/E,EAAA,KAAA6E,EAAA,CAAAG,KAAA,WAAAvE,KAAA,sBAAAwE,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAC,IAAAC,GAAA,wBAAAA,EAAAC,IAAAD,GAAAA,EAASlE,oBAAmB2B,IAAA,CAAAuC,EAAA/E,KAAA+E,EAAnBlE,oBAAmBb,CAAA,GAAAiF,SAAAC,GAAA1B,EAAAC,IAI5BgB,EAAA/E,EAAA,KAAA8E,EAAA,CAAAE,KAAA,WAAAvE,KAAA,eAAAwE,QAAA,EAAAC,SAAA,EAAAC,OAAA,CAAAC,IAAAC,GAAA,iBAAAA,EAAAC,IAAAD,GAAAA,EAAShE,aAAYyB,IAAA,CAAAuC,EAAA/E,KAAA+E,EAAZhE,aAAYf,CAAA,GAAAiF,SAAAC,GAAAxB,GAAA0B,IAxCvBX,EAAA,KAAAY,EAAA,CAAArF,MAAAN,GAAA4F,EAAA,CAAAZ,KAAA,QAAAvE,KAAAT,EAAAS,KAAA8E,SAAAC,GAAA,KAAAK,iHACkB7F,EAAA8F,OAASC,EAAUC,GADxBjD,EAAA/C,EAAA6F,MAAyB"}
1
+ {"version":3,"file":"workspaceSwitcherMenuItem.js","sources":["../../../../src/components/global/workspaceSwitcher/workspaceSwitcherMenuItem.ts"],"sourcesContent":["import { LitElement, html, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport { deepmerge } from 'deepmerge-ts';\n\nimport WorkspaceSwitcherMenuItemScss from './workspaceSwitcherMenuItem.scss?inline';\n\nimport arrowLeftIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/arrow-left.svg';\nimport chevronRightIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/chevron-right.svg';\nimport launchIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/launch.svg';\n\nimport '../../reusable/iconSelector';\n\nconst _defaultTextStrings = {\n launchAssistiveText: 'Opens in a new tab',\n};\n\n/**\n * Workspace Switcher Menu Item component.\n * Used for both workspace items (left panel) and account items (right panel).\n * Item rows support these trailing-action combinations:\n * - favorite only\n * - launch indicator only\n * - launch indicator plus favorite\n * The launch indicator is part of the primary row button while the favorite\n * control stays pinned to the far right as a separate action.\n * @fires on-click - Emits when the item is clicked. `detail: { value: string }`\n * @fires on-favorite-change - Emits when favorite status changes. `detail: { value: string, favorited: boolean }`\n */\n@customElement('kyn-workspace-switcher-menu-item')\nexport class WorkspaceSwitcherMenuItem extends LitElement {\n static override styles = unsafeCSS(WorkspaceSwitcherMenuItemScss);\n\n /** The variant of the menu item. */\n @property({ type: String })\n accessor variant: 'workspace' | 'item' | 'back' = 'item';\n\n /** The unique value/id of the item. */\n @property({ type: String })\n accessor value = '';\n\n /** The display name of the item. */\n @property({ type: String })\n accessor name = '';\n\n /**\n * Optional full name for the native tooltip when `name` is abbreviated in the DOM.\n * Defaults to `name`.\n */\n @property({ type: String, attribute: 'name-title' })\n accessor nameTitle = '';\n\n /** The count to display (workspace variant only). */\n @property({ type: Number })\n accessor count: number | null = null;\n\n /** Whether the item is selected. */\n @property({ type: Boolean })\n accessor selected = false;\n\n /** Whether the item is favorited (item variant only). */\n @property({ type: Boolean })\n accessor favorited = false;\n\n /** Whether to show the launch/new-tab indicator (item variant only). */\n @property({ type: Boolean })\n accessor showLaunchIndicator = false;\n\n /** Text string customization. */\n @property({ type: Object })\n accessor textStrings = _defaultTextStrings;\n\n /** Merged text strings.\n * @internal\n */\n @state()\n accessor _textStrings = _defaultTextStrings;\n\n /** Whether to show the favorite icon selector (item variant only). When present, it stays right-aligned. */\n @property({ type: Boolean })\n accessor showFavorite = false;\n\n override render() {\n const isWorkspace = this.variant === 'workspace';\n const isBack = this.variant === 'back';\n\n const classes = {\n 'menu-item': true,\n 'menu-item--workspace': isWorkspace,\n 'menu-item--back': isBack,\n 'menu-item--item': !isWorkspace && !isBack,\n 'menu-item--selected': this.selected,\n };\n\n const tooltipName = this.nameTitle || this.name;\n\n return html`\n <div\n class=${classMap(classes)}\n role=${isBack ? 'none' : 'listitem'}\n aria-current=${this.selected ? 'true' : 'false'}\n >\n <button\n class=\"menu-item__select\"\n title=${tooltipName}\n @click=${this._handleClick}\n >\n ${isBack\n ? html`<span class=\"menu-item__back-icon\"\n >${unsafeSVG(arrowLeftIcon)}</span\n >`\n : null}\n <span class=\"menu-item__name\">${this.name}</span>\n ${isWorkspace ? this._renderWorkspaceContent() : null}\n ${!isWorkspace && !isBack && this.showLaunchIndicator\n ? this._renderLaunchIndicator()\n : null}\n ${!isWorkspace && !isBack && this.showLaunchIndicator\n ? this._renderLaunchAssistiveText()\n : null}\n </button>\n ${!isWorkspace && !isBack ? this._renderItemContent() : null}\n </div>\n `;\n }\n\n private _renderWorkspaceContent() {\n if (this.count == null) return null;\n\n return html`\n <span class=\"menu-item__count\">${this.count}</span>\n <span class=\"menu-item__chevron\">${unsafeSVG(chevronRightIcon)}</span>\n `;\n }\n\n private _renderLaunchIndicator() {\n return html`\n <span class=\"menu-item__launch-indicator\" aria-hidden=\"true\">\n ${unsafeSVG(launchIcon)}\n </span>\n `;\n }\n\n private _renderLaunchAssistiveText() {\n if (!this._textStrings.launchAssistiveText) return null;\n\n return html`<span class=\"sr-only\"\n >${this._textStrings.launchAssistiveText}</span\n >`;\n }\n\n override willUpdate(changedProperties: Map<string, unknown>) {\n if (changedProperties.has('textStrings')) {\n this._textStrings = deepmerge(_defaultTextStrings, this.textStrings);\n }\n }\n\n private _renderItemContent() {\n if (!this.showFavorite) return null;\n\n return html`\n <div class=\"menu-item__actions\">\n <kyn-icon-selector\n class=\"menu-item__favorite\"\n ?checked=${this.favorited}\n value=${this.value}\n animateSelection\n onlyVisibleOnHover\n persistWhenChecked\n @on-change=${this._handleFavoriteChange}\n ></kyn-icon-selector>\n </div>\n `;\n }\n\n private _handleClick() {\n this.dispatchEvent(\n new CustomEvent('on-click', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private _handleFavoriteChange(e: CustomEvent) {\n e.stopPropagation();\n this.dispatchEvent(\n new CustomEvent('on-favorite-change', {\n detail: { value: this.value, favorited: e.detail.checked },\n bubbles: true,\n composed: true,\n })\n );\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-workspace-switcher-menu-item': WorkspaceSwitcherMenuItem;\n }\n}\n"],"names":["_defaultTextStrings","launchAssistiveText","WorkspaceSwitcherMenuItem","customElement","LitElement","_classThis","_classSuper","variant","__classPrivateFieldGet","this","_WorkspaceSwitcherMenuItem_variant_accessor_storage","value","__classPrivateFieldSet","_WorkspaceSwitcherMenuItem_value_accessor_storage","name","_WorkspaceSwitcherMenuItem_name_accessor_storage","nameTitle","_WorkspaceSwitcherMenuItem_nameTitle_accessor_storage","count","_WorkspaceSwitcherMenuItem_count_accessor_storage","selected","_WorkspaceSwitcherMenuItem_selected_accessor_storage","favorited","_WorkspaceSwitcherMenuItem_favorited_accessor_storage","showLaunchIndicator","_WorkspaceSwitcherMenuItem_showLaunchIndicator_accessor_storage","textStrings","_WorkspaceSwitcherMenuItem_textStrings_accessor_storage","_textStrings","_WorkspaceSwitcherMenuItem__textStrings_accessor_storage","showFavorite","_WorkspaceSwitcherMenuItem_showFavorite_accessor_storage","render","isWorkspace","isBack","classes","tooltipName","html","classMap","_handleClick","unsafeSVG","arrowLeftIcon","_renderWorkspaceContent","_renderLaunchIndicator","_renderLaunchAssistiveText","_renderItemContent","chevronRightIcon","launchIcon","willUpdate","changedProperties","has","deepmerge","_handleFavoriteChange","dispatchEvent","CustomEvent","detail","bubbles","composed","e","stopPropagation","checked","set","__runInitializers","_variant_initializers","_variant_extraInitializers","_value_initializers","_value_extraInitializers","_name_initializers","_name_extraInitializers","_nameTitle_initializers","_nameTitle_extraInitializers","_count_initializers","_count_extraInitializers","_selected_initializers","_selected_extraInitializers","_favorited_initializers","_favorited_extraInitializers","_showLaunchIndicator_initializers","_showLaunchIndicator_extraInitializers","_textStrings_initializers","_textStrings_extraInitializers","__textStrings_initializers","__textStrings_extraInitializers","_showFavorite_initializers","_variant_decorators","property","type","String","_value_decorators","_name_decorators","attribute","_count_decorators","Number","_selected_decorators","Boolean","_favorited_decorators","_showLaunchIndicator_decorators","_textStrings_decorators","Object","__textStrings_decorators","state","_showFavorite_decorators","__esDecorate","kind","static","private","access","obj","get","metadata","_metadata","_nameTitle_decorators","_showFavorite_extraInitializers","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","WorkspaceSwitcherMenuItemScss"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kyndryl-design-system/shidoka-applications",
3
- "version": "2.95.0",
3
+ "version": "2.95.2",
4
4
  "description": "Shidoka Web Components for Applications",
5
5
  "license": "MIT",
6
6
  "main": "index.js",
@@ -25,7 +25,9 @@
25
25
  "lint:lit-analyzer": "lit-analyzer",
26
26
  "format": "prettier \"**/*.{cjs,html,js,json,md,ts}\" --ignore-path ./.eslintignore --write",
27
27
  "analyze": "cem analyze --litelement --globs \"src/components/**/*.ts\" --exclude \"src/**/(*.stories|*.sample).ts\"",
28
- "test": "vitest run --project=storybook",
28
+ "test": "npm run test:storybook",
29
+ "test:storybook": "vitest run --project=storybook",
30
+ "test:storybook:ci": "vitest run --project=storybook --reporter=verbose",
29
31
  "test:unit": "vitest run --project=unit",
30
32
  "prepare": "npx husky install"
31
33
  },