@fluentui/web-components 3.0.0-beta.81 → 3.0.0-beta.83

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.
@@ -5278,7 +5278,7 @@ applyMixins(AnchorButton, StartEnd);
5278
5278
  const baseButtonStyles = css`
5279
5279
  ${display("inline-flex")}
5280
5280
 
5281
- :host{--icon-spacing:${spacingHorizontalSNudge};position:relative;contain:layout style;vertical-align:middle;align-items:center;box-sizing:border-box;justify-content:center;text-align:center;text-decoration-line:none;margin:0;min-height:32px;outline-style:none;background-color:${colorNeutralBackground1};color:${colorNeutralForeground1};border:${strokeWidthThin} solid ${colorNeutralStroke1};padding:0 ${spacingHorizontalM};min-width:96px;border-radius:${borderRadiusMedium};font-size:${fontSizeBase300};font-family:${fontFamilyBase};font-weight:${fontWeightSemibold};line-height:${lineHeightBase300};transition-duration:${durationFaster};transition-property:background,border,color;transition-timing-function:${curveEasyEase};cursor:pointer;user-select:none}.content{display:inherit}:host(:hover){background-color:${colorNeutralBackground1Hover};color:${colorNeutralForeground1Hover};border-color:${colorNeutralStroke1Hover}}:host(:hover:active){background-color:${colorNeutralBackground1Pressed};border-color:${colorNeutralStroke1Pressed};color:${colorNeutralForeground1Pressed};outline-style:none}:host(:focus-visible){border-color:${colorTransparentStroke};outline:${strokeWidthThick} solid ${colorTransparentStroke};box-shadow:${shadow4},0 0 0 2px ${colorStrokeFocus2}}@media screen and (prefers-reduced-motion:reduce){:host{transition-duration:0.01ms}}::slotted(svg){font-size:20px;height:20px;width:20px;fill:currentColor}:is([slot='start'],::slotted([slot='start'])){margin-inline-end:var(--icon-spacing)}:is([slot='end'],::slotted([slot='end'])){flex-shrink:0}:host(:not(${iconOnlyState})) :is([slot='end'],:host(:not(${iconOnlyState}))::slotted([slot='end'])){margin-inline-start:var(--icon-spacing)}:host(${iconOnlyState}){min-width:32px;max-width:32px}:host(${smallState}){--icon-spacing:${spacingHorizontalXS};min-height:24px;min-width:64px;padding:0 ${spacingHorizontalS};border-radius:${borderRadiusSmall};font-size:${fontSizeBase200};line-height:${lineHeightBase200};font-weight:${fontWeightRegular}}:host(${smallState}${iconOnlyState}){min-width:24px;max-width:24px}:host(${largeState}){min-height:40px;border-radius:${borderRadiusLarge};padding:0 ${spacingHorizontalL};font-size:${fontSizeBase400};line-height:${lineHeightBase400}}:host(${largeState}${iconOnlyState}){min-width:40px;max-width:40px}:host(${largeState}) ::slotted(svg){font-size:24px;height:24px;width:24px}:host(:is(${circularState},${circularState}:focus-visible)){border-radius:${borderRadiusCircular}}:host(:is(${squareState},${squareState}:focus-visible)){border-radius:${borderRadiusNone}}:host(${primaryState}){background-color:${colorBrandBackground};color:${colorNeutralForegroundOnBrand};border-color:transparent}:host(${primaryState}:hover){background-color:${colorBrandBackgroundHover}}:host(${primaryState}:is(:hover,:hover:active)){border-color:transparent;color:${colorNeutralForegroundOnBrand}}:host(${primaryState}:hover:active){background-color:${colorBrandBackgroundPressed}}:host(${primaryState}:focus-visible){border-color:${colorNeutralForegroundOnBrand};box-shadow:${shadow2},0 0 0 2px ${colorStrokeFocus2}}:host(${outlineState}){background-color:${colorTransparentBackground}}:host(${outlineState}:hover){background-color:${colorTransparentBackgroundHover}}:host(${outlineState}:hover:active){background-color:${colorTransparentBackgroundPressed}}:host(${subtleState}){background-color:${colorSubtleBackground};color:${colorNeutralForeground2};border-color:transparent}:host(${subtleState}:hover){background-color:${colorSubtleBackgroundHover};color:${colorNeutralForeground2Hover};border-color:transparent}:host(${subtleState}:hover:active){background-color:${colorSubtleBackgroundPressed};color:${colorNeutralForeground2Pressed};border-color:transparent}:host(${subtleState}:hover) ::slotted(svg){fill:${colorNeutralForeground2BrandHover}}:host(${subtleState}:hover:active) ::slotted(svg){fill:${colorNeutralForeground2BrandPressed}}:host(${transparentState}){background-color:${colorTransparentBackground};color:${colorNeutralForeground2}}:host(${transparentState}:hover){background-color:${colorTransparentBackgroundHover};color:${colorNeutralForeground2BrandHover}}:host(${transparentState}:hover:active){background-color:${colorTransparentBackgroundPressed};color:${colorNeutralForeground2BrandPressed}}:host(:is(${transparentState},${transparentState}:is(:hover,:active))){border-color:transparent}`;
5281
+ :host{--icon-spacing:${spacingHorizontalSNudge};position:relative;contain:layout style;vertical-align:middle;align-items:center;box-sizing:border-box;justify-content:center;text-align:center;text-decoration-line:none;margin:0;min-height:32px;outline-style:none;background-color:${colorNeutralBackground1};color:${colorNeutralForeground1};border:${strokeWidthThin} solid ${colorNeutralStroke1};padding:0 ${spacingHorizontalM};min-width:96px;border-radius:${borderRadiusMedium};font-size:${fontSizeBase300};font-family:${fontFamilyBase};font-weight:${fontWeightSemibold};line-height:${lineHeightBase300};transition-duration:${durationFaster};transition-property:background,border,color;transition-timing-function:${curveEasyEase};cursor:pointer;user-select:none}.content{display:inherit}:host(:hover){background-color:${colorNeutralBackground1Hover};color:${colorNeutralForeground1Hover};border-color:${colorNeutralStroke1Hover}}:host(:hover:active){background-color:${colorNeutralBackground1Pressed};border-color:${colorNeutralStroke1Pressed};color:${colorNeutralForeground1Pressed};outline-style:none}:host(:focus-visible){border-color:${colorTransparentStroke};outline:${strokeWidthThick} solid ${colorTransparentStroke};box-shadow:${shadow4},0 0 0 2px ${colorStrokeFocus2}}@media screen and (prefers-reduced-motion:reduce){:host{transition-duration:0.01ms}}::slotted(svg){font-size:20px;height:20px;width:20px;fill:currentColor}::slotted([slot='start']){margin-inline-end:var(--icon-spacing)}::slotted([slot='end']){flex-shrink:0;margin-inline-start:var(--icon-spacing)}:host(${iconOnlyState}){min-width:32px;max-width:32px}:host(${smallState}){--icon-spacing:${spacingHorizontalXS};min-height:24px;min-width:64px;padding:0 ${spacingHorizontalS};border-radius:${borderRadiusSmall};font-size:${fontSizeBase200};line-height:${lineHeightBase200};font-weight:${fontWeightRegular}}:host(${smallState}${iconOnlyState}){min-width:24px;max-width:24px}:host(${largeState}){min-height:40px;border-radius:${borderRadiusLarge};padding:0 ${spacingHorizontalL};font-size:${fontSizeBase400};line-height:${lineHeightBase400}}:host(${largeState}${iconOnlyState}){min-width:40px;max-width:40px}:host(${largeState}) ::slotted(svg){font-size:24px;height:24px;width:24px}:host(:is(${circularState},${circularState}:focus-visible)){border-radius:${borderRadiusCircular}}:host(:is(${squareState},${squareState}:focus-visible)){border-radius:${borderRadiusNone}}:host(${primaryState}){background-color:${colorBrandBackground};color:${colorNeutralForegroundOnBrand};border-color:transparent}:host(${primaryState}:hover){background-color:${colorBrandBackgroundHover}}:host(${primaryState}:is(:hover,:hover:active)){border-color:transparent;color:${colorNeutralForegroundOnBrand}}:host(${primaryState}:hover:active){background-color:${colorBrandBackgroundPressed}}:host(${primaryState}:focus-visible){border-color:${colorNeutralForegroundOnBrand};box-shadow:${shadow2},0 0 0 2px ${colorStrokeFocus2}}:host(${outlineState}){background-color:${colorTransparentBackground}}:host(${outlineState}:hover){background-color:${colorTransparentBackgroundHover}}:host(${outlineState}:hover:active){background-color:${colorTransparentBackgroundPressed}}:host(${subtleState}){background-color:${colorSubtleBackground};color:${colorNeutralForeground2};border-color:transparent}:host(${subtleState}:hover){background-color:${colorSubtleBackgroundHover};color:${colorNeutralForeground2Hover};border-color:transparent}:host(${subtleState}:hover:active){background-color:${colorSubtleBackgroundPressed};color:${colorNeutralForeground2Pressed};border-color:transparent}:host(${subtleState}:hover) ::slotted(svg){fill:${colorNeutralForeground2BrandHover}}:host(${subtleState}:hover:active) ::slotted(svg){fill:${colorNeutralForeground2BrandPressed}}:host(${transparentState}){background-color:${colorTransparentBackground};color:${colorNeutralForeground2}}:host(${transparentState}:hover){background-color:${colorTransparentBackgroundHover};color:${colorNeutralForeground2BrandHover}}:host(${transparentState}:hover:active){background-color:${colorTransparentBackgroundPressed};color:${colorNeutralForeground2BrandPressed}}:host(:is(${transparentState},${transparentState}:is(:hover,:active))){border-color:transparent}`;
5282
5282
  const styles$C = css`
5283
5283
  ${baseButtonStyles}
5284
5284
 
@@ -10892,35 +10892,6 @@ class Slider extends FASTElement {
10892
10892
  this.max = "";
10893
10893
  this.step = "";
10894
10894
  this.mode = SliderMode.singleValue;
10895
- this.keypressHandler = event => {
10896
- if (this.disabled) {
10897
- return;
10898
- }
10899
- switch (event.key) {
10900
- case keyHome:
10901
- event.preventDefault();
10902
- this.value = this.direction !== Direction.rtl && this.orientation !== Orientation.vertical ? `${this.minAsNumber}` : `${this.maxAsNumber}`;
10903
- break;
10904
- case keyEnd:
10905
- event.preventDefault();
10906
- this.value = this.direction !== Direction.rtl && this.orientation !== Orientation.vertical ? `${this.maxAsNumber}` : `${this.minAsNumber}`;
10907
- break;
10908
- case keyArrowRight:
10909
- case keyArrowUp:
10910
- if (!event.shiftKey) {
10911
- event.preventDefault();
10912
- this.increment();
10913
- }
10914
- break;
10915
- case keyArrowLeft:
10916
- case keyArrowDown:
10917
- if (!event.shiftKey) {
10918
- event.preventDefault();
10919
- this.decrement();
10920
- }
10921
- break;
10922
- }
10923
- };
10924
10895
  this.setupTrackConstraints = () => {
10925
10896
  const clientRect = this.track.getBoundingClientRect();
10926
10897
  this.trackWidth = this.track.clientWidth;
@@ -10932,12 +10903,6 @@ class Slider extends FASTElement {
10932
10903
  this.trackWidth = 1;
10933
10904
  }
10934
10905
  };
10935
- this.setupListeners = (remove = false) => {
10936
- this.addEventListener("keydown", this.keypressHandler);
10937
- if (remove) {
10938
- this.removeEventListener("keydown", this.keypressHandler);
10939
- }
10940
- };
10941
10906
  /**
10942
10907
  * Handle mouse moves during a thumb drag operation
10943
10908
  * If the event handler is null it removes the events
@@ -10953,6 +10918,7 @@ class Slider extends FASTElement {
10953
10918
  });
10954
10919
  windowFn("touchend", this.handleWindowPointerUp);
10955
10920
  this.isDragging = event !== null;
10921
+ return true;
10956
10922
  };
10957
10923
  /**
10958
10924
  * Handle mouse moves during a thumb drag operation
@@ -10962,7 +10928,8 @@ class Slider extends FASTElement {
10962
10928
  return;
10963
10929
  }
10964
10930
  const sourceEvent = window.TouchEvent && event instanceof TouchEvent ? event.touches[0] : event;
10965
- const eventValue = this.orientation === Orientation.vertical ? sourceEvent.pageY - document.documentElement.scrollTop : sourceEvent.pageX - document.documentElement.scrollLeft - this.trackLeft;
10931
+ const thumbWidth = this.thumb.getBoundingClientRect().width;
10932
+ const eventValue = this.orientation === Orientation.vertical ? sourceEvent.pageY - document.documentElement.scrollTop : sourceEvent.pageX - document.documentElement.scrollLeft - this.trackLeft - thumbWidth / 2;
10966
10933
  this.value = `${this.calculateNewValue(eventValue)}`;
10967
10934
  };
10968
10935
  /**
@@ -10987,12 +10954,14 @@ class Slider extends FASTElement {
10987
10954
  windowFn("pointerup", this.handleWindowPointerUp);
10988
10955
  documentFn("mouseleave", this.handleWindowPointerUp);
10989
10956
  windowFn("pointermove", this.handlePointerMove);
10957
+ const thumbWidth = this.thumb.getBoundingClientRect().width;
10990
10958
  if (event) {
10991
10959
  this.setupTrackConstraints();
10992
- const controlValue = this.orientation === Orientation.vertical ? event.pageY - document.documentElement.scrollTop : event.pageX - document.documentElement.scrollLeft - this.trackLeft;
10960
+ const controlValue = this.orientation === Orientation.vertical ? event.pageY - document.documentElement.scrollTop : event.pageX - document.documentElement.scrollLeft - this.trackLeft - thumbWidth / 2;
10993
10961
  this.value = `${this.calculateNewValue(controlValue)}`;
10994
10962
  }
10995
10963
  }
10964
+ return true;
10996
10965
  };
10997
10966
  this.elementInternals.role = "slider";
10998
10967
  this.elementInternals.ariaOrientation = this.orientation ?? SliderOrientation.horizontal;
@@ -11284,7 +11253,6 @@ class Slider extends FASTElement {
11284
11253
  this.setDisabledSideEffect(this.disabled);
11285
11254
  this.updateStepMultiplier();
11286
11255
  this.setupTrackConstraints();
11287
- this.setupListeners();
11288
11256
  this.setupDefaultValue();
11289
11257
  this.setSliderPosition();
11290
11258
  Observable.getNotifier(this).subscribe(this, "max");
@@ -11297,7 +11265,6 @@ class Slider extends FASTElement {
11297
11265
  */
11298
11266
  disconnectedCallback() {
11299
11267
  super.disconnectedCallback();
11300
- this.setupListeners(true);
11301
11268
  Observable.getNotifier(this).unsubscribe(this, "max");
11302
11269
  Observable.getNotifier(this).unsubscribe(this, "min");
11303
11270
  Observable.getNotifier(this).unsubscribe(this, "step");
@@ -11324,6 +11291,36 @@ class Slider extends FASTElement {
11324
11291
  const decrementedValString = decrementedVal > this.minAsNumber ? `${decrementedVal}` : `${this.minAsNumber}`;
11325
11292
  this.value = decrementedValString;
11326
11293
  }
11294
+ handleKeydown(event) {
11295
+ if (this.disabled) {
11296
+ return true;
11297
+ }
11298
+ switch (event.key) {
11299
+ case keyHome:
11300
+ event.preventDefault();
11301
+ this.value = this.direction !== Direction.rtl && this.orientation !== Orientation.vertical ? `${this.minAsNumber}` : `${this.maxAsNumber}`;
11302
+ break;
11303
+ case keyEnd:
11304
+ event.preventDefault();
11305
+ this.value = this.direction !== Direction.rtl && this.orientation !== Orientation.vertical ? `${this.maxAsNumber}` : `${this.minAsNumber}`;
11306
+ break;
11307
+ case keyArrowRight:
11308
+ case keyArrowUp:
11309
+ if (!event.shiftKey) {
11310
+ event.preventDefault();
11311
+ this.increment();
11312
+ }
11313
+ break;
11314
+ case keyArrowLeft:
11315
+ case keyArrowDown:
11316
+ if (!event.shiftKey) {
11317
+ event.preventDefault();
11318
+ this.decrement();
11319
+ }
11320
+ break;
11321
+ }
11322
+ return true;
11323
+ }
11327
11324
  /**
11328
11325
  * Places the thumb based on the current value
11329
11326
  */
@@ -11429,13 +11426,13 @@ const styles$b = css`
11429
11426
 
11430
11427
  :host{--thumb-size:20px;--track-margin-inline:calc(var(--thumb-size) / 2);--track-size:4px;--track-overhang:calc(var(--track-size) / -2);--rail-color:${colorCompoundBrandBackground};--track-color:${colorNeutralStrokeAccessible};--slider-direction:90deg;--border-radius:${borderRadiusMedium};--step-marker-inset:var(--track-overhang) -1px;position:relative;align-items:center;justify-content:center;box-sizing:border-box;outline:none;user-select:none;touch-action:none;min-width:120px;min-height:32px;grid-template-rows:1fr var(--thumb-size) 1fr;grid-template-columns:var(--track-margin-inline) 1fr var(--track-margin-inline)}:host(:hover){--rail-color:${colorCompoundBrandBackgroundHover}}:host(:active){--rail-color:${colorCompoundBrandBackgroundPressed}}:host(:disabled){--rail-color:${colorNeutralForegroundDisabled};--track-color:${colorNeutralBackgroundDisabled}}:host(:not(:disabled)){cursor:pointer}:host(:dir(rtl)){--slider-direction:-90deg}:host(${smallState}){--thumb-size:16px;--track-overhang:-1px;--track-size:2px;--border-radius:${borderRadiusSmall}}:host(${verticalState}){--slider-direction:0deg;--step-marker-inset:-1px var(--track-overhang);min-height:120px;grid-template-rows:var(--track-margin-inline) 1fr var(--track-margin-inline);grid-template-columns:1fr var(--thumb-size) 1fr;width:unset;min-width:32px;justify-items:center}:host(:not([slot='input']):focus-visible){box-shadow:0 0 0 2pt ${colorStrokeFocus2};outline:1px solid ${colorStrokeFocus1}}:host:after,.track{height:var(--track-size);width:100%}:host:after{background-image:linear-gradient(
11431
11428
  var(--slider-direction),var(--rail-color) 0%,var(--rail-color) 50%,var(--track-color) 50.1%,var(--track-color) 100%
11432
- );border-radius:var(--border-radius);content:'';grid-row:1 / -1;grid-column:1 / -1}.track{position:relative;background-color:var(--track-color);grid-row:2 / 2;grid-column:2 / 2;forced-color-adjust:none;overflow:hidden}:host(${verticalState})::after,:host(${verticalState}) .track{height:100%;width:var(--track-size)}:host(${verticalState}) .track{top:var(--track-overhang);bottom:var(--track-overhang)}.track::before{content:'';position:absolute;height:100%;border-radius:inherit;inset-inline-start:0;width:var(--slider-progress)}:host(:dir(rtl)) .track::before{width:calc(100% - var(--slider-progress))}:host(${verticalState}) .track::before{width:100%;bottom:0;height:var(--slider-progress)}:host([step]) .track::after{content:'';position:absolute;border-radius:inherit;inset:var(--step-marker-inset);background-image:repeating-linear-gradient(
11429
+ );border-radius:var(--border-radius);content:'';grid-row:1 / -1;grid-column:1 / -1}.track{position:relative;background-color:var(--track-color);grid-row:2 / 2;grid-column:2 / 2;forced-color-adjust:none;overflow:hidden}:host(${verticalState})::after,:host(${verticalState}) .track{height:100%;width:var(--track-size)}.track::before{content:'';position:absolute;height:100%;border-radius:inherit;inset-inline-start:0;width:var(--slider-progress)}:host(:dir(rtl)) .track::before{width:calc(100% - var(--slider-progress))}:host(${verticalState}) .track::before{width:100%;bottom:0;height:var(--slider-progress)}:host([step]) .track::after{content:'';position:absolute;border-radius:inherit;inset:var(--step-marker-inset);background-image:repeating-linear-gradient(
11433
11430
  var(--slider-direction),#0000 0%,#0000 calc(var(--step-rate) - 1px),${colorNeutralBackground1} calc(var(--step-rate) - 1px),${colorNeutralBackground1} var(--step-rate)
11434
11431
  )}.thumb-container{position:absolute;grid-row:2 / 2;grid-column:2 / 2;transform:translateX(-50%);left:var(--slider-thumb)}:host(${verticalState}) .thumb-container{transform:translateY(50%);left:unset;bottom:var(--slider-thumb)}:host(:not(:active)) :is(.thumb-container,.track::before){transition:all 0.2s ease}.thumb{width:var(--thumb-size);height:var(--thumb-size);border-radius:${borderRadiusCircular};box-shadow:0 0 0 calc(var(--thumb-size) * 0.2) ${colorNeutralBackground1} inset;border:calc(var(--thumb-size) * 0.05) solid ${colorNeutralStroke1};box-sizing:border-box}.thumb,.track::before{background-color:var(--rail-color)}`.withBehaviors(forcedColorsStylesheetBehavior(css`
11435
11432
  .track:hover,.track:active,.track{background:WindowText}.thumb:hover,.thumb:active,.thumb{background:ButtonText}:host(:hover) .track::before,:host(:active) .track::before,.track::before{background:Highlight}`));
11436
11433
 
11437
11434
  function sliderTemplate(options = {}) {
11438
- return html`<template tabindex="${x => x.disabled ? null : 0}" @pointerdown="${(x, c) => x.handlePointerDown(c.event)}"><div ${ref("track")} part="track-container" class="track" style="${x => x.position}"></div><div ${ref("thumb")} part="thumb-container" class="thumb-container" style="${x => x.position}" @pointerdown="${(x, c) => x.handleThumbPointerDown(c.event)}"><slot name="thumb">${staticallyCompose(options.thumb)}</slot></div></template>`;
11435
+ return html`<template tabindex="${x => x.disabled ? null : 0}" @pointerdown="${(x, c) => x.handlePointerDown(c.event)}" @keydown="${(x, c) => x.handleKeydown(c.event)}"><div ${ref("track")} part="track-container" class="track" style="${x => x.position}"></div><div ${ref("thumb")} part="thumb-container" class="thumb-container" style="${x => x.position}" @pointerdown="${(x, c) => x.handleThumbPointerDown(c.event)}"><slot name="thumb">${staticallyCompose(options.thumb)}</slot></div></template>`;
11439
11436
  }
11440
11437
  const template$b = sliderTemplate({
11441
11438
  thumb: `<div class="thumb"></div>`
@@ -12068,6 +12065,7 @@ class BaseTablist extends FASTElement {
12068
12065
  this.orientation = TablistOrientation.horizontal;
12069
12066
  this.prevActiveTabIndex = 0;
12070
12067
  this.activeTabIndex = 0;
12068
+ this.tabPanelMap = /* @__PURE__ */new WeakMap();
12071
12069
  this.change = () => {
12072
12070
  this.$emit("change", this.activetab);
12073
12071
  };
@@ -12148,6 +12146,19 @@ class BaseTablist extends FASTElement {
12148
12146
  if (this.$fastController.isConnected && this.tabs.length > 0) {
12149
12147
  this.prevActiveTabIndex = this.tabs.findIndex(item => item.id === oldValue);
12150
12148
  this.setTabs();
12149
+ if (oldValue) {
12150
+ const prevActiveTab = this.tabs[this.prevActiveTabIndex];
12151
+ const prevActivePanel = this.tabPanelMap.get(prevActiveTab);
12152
+ if (prevActivePanel) {
12153
+ prevActivePanel.hidden = true;
12154
+ }
12155
+ }
12156
+ if (newValue && this.activetab) {
12157
+ const activePanel = this.tabPanelMap.get(this.activetab);
12158
+ if (activePanel) {
12159
+ activePanel.hidden = false;
12160
+ }
12161
+ }
12151
12162
  }
12152
12163
  }
12153
12164
  /**
@@ -12157,6 +12168,16 @@ class BaseTablist extends FASTElement {
12157
12168
  if (this.$fastController.isConnected && this.tabs.length > 0) {
12158
12169
  this.tabIds = this.getTabIds();
12159
12170
  this.setTabs();
12171
+ for (const tab of this.tabs) {
12172
+ const ariaControls = tab.getAttribute("aria-controls") ?? "";
12173
+ const rootNode = this.getRootNode();
12174
+ const panel = rootNode.getElementById(ariaControls);
12175
+ if (ariaControls && panel) {
12176
+ panel.role ?? (panel.role = "tabpanel");
12177
+ panel.hidden = this.activeid !== tab.id;
12178
+ this.tabPanelMap.set(tab, panel);
12179
+ }
12180
+ }
12160
12181
  }
12161
12182
  }
12162
12183
  getActiveIndex() {