@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.
- package/CHANGELOG.md +22 -2
- package/dist/dts/slider/slider.d.ts +3 -4
- package/dist/dts/tablist/tablist.d.ts +1 -0
- package/dist/esm/button/button.styles.js +2 -5
- package/dist/esm/button/button.styles.js.map +1 -1
- package/dist/esm/slider/slider.js +42 -46
- package/dist/esm/slider/slider.js.map +1 -1
- package/dist/esm/slider/slider.styles.js +0 -5
- package/dist/esm/slider/slider.styles.js.map +1 -1
- package/dist/esm/slider/slider.template.js +1 -0
- package/dist/esm/slider/slider.template.js.map +1 -1
- package/dist/esm/tablist/tablist.js +24 -0
- package/dist/esm/tablist/tablist.js.map +1 -1
- package/dist/web-components.d.ts +4 -4
- package/dist/web-components.js +63 -42
- package/dist/web-components.min.js +174 -174
- package/package.json +1 -1
package/dist/web-components.js
CHANGED
|
@@ -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}
|
|
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
|
|
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)}
|
|
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() {
|