@vonage/vivid 4.12.0 → 4.13.0
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/custom-elements.json +2339 -288
- package/lib/accordion/accordion.d.ts +21 -2
- package/lib/accordion-item/accordion-item.d.ts +6 -2
- package/lib/calendar/calendar.d.ts +1 -1
- package/lib/date-picker/date-picker.d.ts +1 -0
- package/lib/file-picker/file-picker.d.ts +6 -0
- package/lib/menu/menu.d.ts +16 -3
- package/lib/menu-item/menu-item.d.ts +10 -2
- package/lib/option/option.d.ts +27 -7
- package/lib/radio/radio.d.ts +12 -2
- package/lib/radio/radio.form-associated.d.ts +10 -0
- package/lib/radio-group/radio-group.d.ts +20 -2
- package/lib/switch/switch.d.ts +5 -2
- package/lib/switch/switch.form-associated.d.ts +10 -0
- package/lib/tab/tab.d.ts +3 -2
- package/lib/tab-panel/tab-panel.d.ts +2 -2
- package/lib/tabs/tabs.d.ts +33 -11
- package/lib/text-area/text-area.d.ts +25 -3
- package/lib/text-area/text-field.form-associated.d.ts +10 -0
- package/lib/text-field/text-field.d.ts +28 -3
- package/lib/text-field/text-field.form-associated.d.ts +10 -0
- package/package.json +1 -1
- package/shared/date-picker/date-picker-base.d.ts +1 -0
- package/shared/definition.cjs +29 -72
- package/shared/definition.js +30 -73
- package/shared/definition11.cjs +1 -1
- package/shared/definition11.js +1 -1
- package/shared/definition16.cjs +1 -2
- package/shared/definition16.js +1 -2
- package/shared/definition17.cjs +3 -3
- package/shared/definition17.js +3 -3
- package/shared/definition18.cjs +6 -1
- package/shared/definition18.js +6 -1
- package/shared/definition19.cjs +17 -8
- package/shared/definition19.js +17 -8
- package/shared/definition2.cjs +154 -187
- package/shared/definition2.js +157 -190
- package/shared/definition20.cjs +3 -2
- package/shared/definition20.js +3 -2
- package/shared/definition21.cjs +1 -1
- package/shared/definition21.js +1 -1
- package/shared/definition24.cjs +1 -1
- package/shared/definition24.js +1 -1
- package/shared/definition25.cjs +24 -3
- package/shared/definition25.js +24 -3
- package/shared/definition29.cjs +358 -559
- package/shared/definition29.js +359 -560
- package/shared/definition30.cjs +2 -0
- package/shared/definition30.js +2 -0
- package/shared/definition35.cjs +223 -3
- package/shared/definition35.js +223 -3
- package/shared/definition36.cjs +149 -14
- package/shared/definition36.js +150 -15
- package/shared/definition40.cjs +226 -399
- package/shared/definition40.js +229 -402
- package/shared/definition42.cjs +3 -2
- package/shared/definition42.js +3 -2
- package/shared/definition43.cjs +1 -0
- package/shared/definition43.js +1 -0
- package/shared/definition44.cjs +1 -1
- package/shared/definition44.js +1 -1
- package/shared/definition46.cjs +1 -1
- package/shared/definition46.js +1 -1
- package/shared/definition47.cjs +8 -16
- package/shared/definition47.js +4 -12
- package/shared/definition49.cjs +64 -89
- package/shared/definition49.js +66 -91
- package/shared/definition5.cjs +1 -1
- package/shared/definition5.js +1 -1
- package/shared/definition50.cjs +1 -11
- package/shared/definition50.js +1 -11
- package/shared/definition51.cjs +5 -15
- package/shared/definition51.js +6 -16
- package/shared/definition52.cjs +284 -20
- package/shared/definition52.js +288 -24
- package/shared/definition55.cjs +160 -180
- package/shared/definition55.js +160 -180
- package/shared/definition56.cjs +3 -307
- package/shared/definition56.js +5 -309
- package/shared/definition57.cjs +34 -11
- package/shared/definition57.js +30 -7
- package/shared/definition61.cjs +1 -1
- package/shared/definition61.js +1 -1
- package/shared/definition62.cjs +17 -8
- package/shared/definition62.js +17 -8
- package/shared/definition64.cjs +18 -7
- package/shared/definition64.js +19 -8
- package/shared/form-associated.cjs +1 -1
- package/shared/form-associated.js +1 -1
- package/shared/icon.cjs +1 -1
- package/shared/icon.js +1 -1
- package/shared/index.cjs +1 -0
- package/shared/index.js +1 -1
- package/shared/key-codes.cjs +1 -94
- package/shared/key-codes.js +2 -89
- package/shared/key-codes2.cjs +87 -1
- package/shared/key-codes2.js +83 -2
- package/shared/listbox.cjs +204 -10
- package/shared/listbox.js +200 -6
- package/shared/{direction.cjs → localization.cjs} +12 -3
- package/shared/{direction.js → localization.js} +12 -3
- package/shared/numbers.cjs +0 -12
- package/shared/numbers.js +1 -12
- package/shared/presentationDate.cjs +22 -8
- package/shared/presentationDate.js +16 -2
- package/shared/radio.cjs +92 -117
- package/shared/radio.js +93 -118
- package/shared/slider.template.cjs +2 -15
- package/shared/slider.template.js +2 -14
- package/shared/strings.cjs +26 -0
- package/shared/strings.js +25 -1
- package/shared/text-field2.cjs +538 -194
- package/shared/text-field2.js +539 -195
- package/styles/core/all.css +21 -1
- package/styles/core/theme.css +21 -1
- package/styles/core/typography.css +1 -1
- package/styles/tokens/theme-dark.css +4 -4
- package/styles/tokens/theme-light.css +4 -4
- package/styles/tokens/vivid-2-compat.css +1 -1
- package/vivid.api.json +44 -0
- package/shared/Reflector.cjs +0 -71
- package/shared/Reflector.js +0 -69
- package/shared/listbox-option.cjs +0 -204
- package/shared/listbox-option.js +0 -201
package/shared/definition50.cjs
CHANGED
|
@@ -2,17 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
const index = require('./index.cjs');
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
* A TabPanel Component to be used with {@link @microsoft/fast-foundation#(Tabs:class)}
|
|
7
|
-
*
|
|
8
|
-
* @slot - The default slot for the tabpanel content
|
|
9
|
-
*
|
|
10
|
-
* @public
|
|
11
|
-
*/
|
|
12
|
-
let TabPanel$1 = class TabPanel extends index.FoundationElement {
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
class TabPanel extends TabPanel$1 {
|
|
5
|
+
class TabPanel extends index.FoundationElement {
|
|
16
6
|
}
|
|
17
7
|
|
|
18
8
|
function TabPanelTemplate() {
|
package/shared/definition50.js
CHANGED
|
@@ -1,16 +1,6 @@
|
|
|
1
1
|
import { F as FoundationElement, h as html, r as registerFactory } from './index.js';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
* A TabPanel Component to be used with {@link @microsoft/fast-foundation#(Tabs:class)}
|
|
5
|
-
*
|
|
6
|
-
* @slot - The default slot for the tabpanel content
|
|
7
|
-
*
|
|
8
|
-
* @public
|
|
9
|
-
*/
|
|
10
|
-
let TabPanel$1 = class TabPanel extends FoundationElement {
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
class TabPanel extends TabPanel$1 {
|
|
3
|
+
class TabPanel extends FoundationElement {
|
|
14
4
|
}
|
|
15
5
|
|
|
16
6
|
function TabPanelTemplate() {
|
package/shared/definition51.cjs
CHANGED
|
@@ -7,20 +7,7 @@ const applyMixins = require('./apply-mixins.cjs');
|
|
|
7
7
|
const localized = require('./localized.cjs');
|
|
8
8
|
const classNames = require('./class-names.cjs');
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
* A Tab Component to be used with {@link @microsoft/fast-foundation#(Tabs:class)}
|
|
12
|
-
*
|
|
13
|
-
* @slot - The default slot for the tab content
|
|
14
|
-
*
|
|
15
|
-
* @public
|
|
16
|
-
*/
|
|
17
|
-
let Tab$1 = class Tab extends index.FoundationElement {
|
|
18
|
-
};
|
|
19
|
-
index.__decorate([
|
|
20
|
-
index.attr({ mode: "boolean" })
|
|
21
|
-
], Tab$1.prototype, "disabled", void 0);
|
|
22
|
-
|
|
23
|
-
const styles = ":host{--_vvd-tab-accent-firm-wrapper: var( --vvd-tab-accent-firm );--_vvd-tab-cta-firm-wrapper: var( --vvd-tab-cta-firm )}.base{--vvd-tab-accent-firm: var( --_vvd-tab-accent-firm-wrapper, var(--vvd-tab-accent-primary) );--vvd-tab-cta-firm: var( --_vvd-tab-cta-firm-wrapper, var(--vvd-tab-cta-primary) )}:host(.vertical){justify-content:end;grid-column:1/auto}:host([disabled]){cursor:not-allowed}:host([removable]){position:relative}:host(:focus-visible){outline:none}.base{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.base:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.base.connotation-cta{--_connotation-color-primary-text: var(--vvd-tab-cta-primary-text, var(--vvd-color-canvas));--_connotation-color-firm: var(--vvd-tab-cta-firm, var(--vvd-color-cta-600));--_connotation-color-faint: var(--vvd-tab-cta-faint, var(--vvd-color-cta-50));--_connotation-color-fierce: var(--vvd-tab-cta-fierce, var(--vvd-color-cta-700));--_connotation-color-pale: var(--vvd-tab-cta-pale, var(--vvd-color-cta-300));--_connotation-color-soft: var(--vvd-tab-cta-soft, var(--vvd-color-cta-100))}.base:not(.connotation-cta){--_connotation-color-primary-text: var(--vvd-tab-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-firm: var(--vvd-tab-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-faint: var(--vvd-tab-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-fierce: var(--vvd-tab-accent-fierce, var(--vvd-color-neutral-700));--_connotation-color-pale: var(--vvd-tab-accent-pale, var(--vvd-color-neutral-300));--_connotation-color-soft: var(--vvd-tab-accent-soft, var(--vvd-color-neutral-100))}.base{position:relative;display:flex;box-sizing:border-box;align-items:center;padding:var(--_tabs-tablist-gutter);background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base-bold);gap:var(--_tabs-tablist-gutter);min-block-size:40px;vertical-align:middle;white-space:nowrap}@supports (user-select: none){.base{user-select:none}}.base:not(.shape-sharp){border-radius:8px}.base:not(.disabled){cursor:pointer}.base.disabled{pointer-events:none}.base.removable{padding-inline-end:40px}:host(:focus-visible) .base{--focus-stroke-gap-color: transparent;box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}:host(.vertical) .base{margin-inline-start:var(--_tabs-active-indicator-stroke-width)}slot[name=icon]{font-size:20px;line-height:1}.icon-trailing slot[name=icon]{display:inline-block;order:1;margin-inline-start:auto}.close{position:absolute;display:flex;align-items:center;justify-content:center;block-size:24px;inline-size:24px;inset-block-start:50%;inset-inline-end:4px;transform:translateY(-50%)}.close vwc-icon{font-size:12px}.close .icon{display:flex;align-items:center;justify-content:center}";
|
|
10
|
+
const styles = ":host{--_vvd-tab-accent-firm-wrapper: var( --vvd-tab-accent-firm );--_vvd-tab-cta-firm-wrapper: var( --vvd-tab-cta-firm )}.base{--vvd-tab-accent-firm: var( --_vvd-tab-accent-firm-wrapper, var(--vvd-tab-accent-primary) );--vvd-tab-cta-firm: var( --_vvd-tab-cta-firm-wrapper, var(--vvd-tab-cta-primary) )}:host(.vertical){justify-content:end;grid-column:1/auto}:host([disabled]){cursor:not-allowed}:host([removable]){position:relative}:host(:focus-visible){outline:none}.base{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.base:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.base.connotation-cta{--_connotation-color-primary-text: var(--vvd-tab-cta-primary-text, var(--vvd-color-canvas));--_connotation-color-firm: var(--vvd-tab-cta-firm, var(--vvd-color-cta-600));--_connotation-color-faint: var(--vvd-tab-cta-faint, var(--vvd-color-cta-50));--_connotation-color-fierce: var(--vvd-tab-cta-fierce, var(--vvd-color-cta-700));--_connotation-color-pale: var(--vvd-tab-cta-pale, var(--vvd-color-cta-300));--_connotation-color-soft: var(--vvd-tab-cta-soft, var(--vvd-color-cta-100))}.base:not(.connotation-cta){--_connotation-color-primary-text: var(--vvd-tab-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-firm: var(--vvd-tab-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-faint: var(--vvd-tab-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-fierce: var(--vvd-tab-accent-fierce, var(--vvd-color-neutral-700));--_connotation-color-pale: var(--vvd-tab-accent-pale, var(--vvd-color-neutral-300));--_connotation-color-soft: var(--vvd-tab-accent-soft, var(--vvd-color-neutral-100))}.base{position:relative;display:flex;box-sizing:border-box;align-items:center;justify-content:var(--_tab-justify-content);padding:var(--_tabs-tablist-gutter);background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base-bold);gap:var(--_tabs-tablist-gutter);min-block-size:40px;vertical-align:middle;white-space:nowrap}@supports (user-select: none){.base{user-select:none}}.base:not(.shape-sharp){border-radius:8px}.base:not(.disabled){cursor:pointer}.base.disabled{pointer-events:none}.base.removable{padding-inline-end:40px}:host(:focus-visible) .base{--focus-stroke-gap-color: transparent;box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}:host(.vertical) .base{margin-inline-start:var(--_tabs-active-indicator-stroke-width)}slot[name=icon]{font-size:20px;line-height:1}.icon-trailing slot[name=icon]{display:inline-block;order:1;margin-inline-start:auto}.close{position:absolute;display:flex;align-items:center;justify-content:center;block-size:24px;inline-size:24px;inset-block-start:50%;inset-inline-end:4px;transform:translateY(-50%)}.close vwc-icon{font-size:12px}.close .icon{display:flex;align-items:center;justify-content:center}";
|
|
24
11
|
|
|
25
12
|
var __defProp = Object.defineProperty;
|
|
26
13
|
var __decorateClass = (decorators, target, key, kind) => {
|
|
@@ -31,7 +18,7 @@ var __decorateClass = (decorators, target, key, kind) => {
|
|
|
31
18
|
if (result) __defProp(target, key, result);
|
|
32
19
|
return result;
|
|
33
20
|
};
|
|
34
|
-
class Tab extends
|
|
21
|
+
class Tab extends index.FoundationElement {
|
|
35
22
|
constructor() {
|
|
36
23
|
super(...arguments);
|
|
37
24
|
this.removable = false;
|
|
@@ -49,6 +36,9 @@ class Tab extends Tab$1 {
|
|
|
49
36
|
return false;
|
|
50
37
|
}
|
|
51
38
|
}
|
|
39
|
+
__decorateClass([
|
|
40
|
+
index.attr({ mode: "boolean" })
|
|
41
|
+
], Tab.prototype, "disabled");
|
|
52
42
|
__decorateClass([
|
|
53
43
|
index.attr
|
|
54
44
|
], Tab.prototype, "connotation");
|
package/shared/definition51.js
CHANGED
|
@@ -1,24 +1,11 @@
|
|
|
1
|
-
import { F as FoundationElement,
|
|
1
|
+
import { F as FoundationElement, a as attr, h as html, r as registerFactory } from './index.js';
|
|
2
2
|
import { a as iconRegistries } from './definition27.js';
|
|
3
3
|
import { b as AffixIconWithTrailing, a as affixIconTemplateFactory, I as IconWrapper } from './affix.js';
|
|
4
4
|
import { a as applyMixins } from './apply-mixins.js';
|
|
5
5
|
import { L as Localized } from './localized.js';
|
|
6
6
|
import { c as classNames } from './class-names.js';
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
* A Tab Component to be used with {@link @microsoft/fast-foundation#(Tabs:class)}
|
|
10
|
-
*
|
|
11
|
-
* @slot - The default slot for the tab content
|
|
12
|
-
*
|
|
13
|
-
* @public
|
|
14
|
-
*/
|
|
15
|
-
let Tab$1 = class Tab extends FoundationElement {
|
|
16
|
-
};
|
|
17
|
-
__decorate([
|
|
18
|
-
attr({ mode: "boolean" })
|
|
19
|
-
], Tab$1.prototype, "disabled", void 0);
|
|
20
|
-
|
|
21
|
-
const styles = ":host{--_vvd-tab-accent-firm-wrapper: var( --vvd-tab-accent-firm );--_vvd-tab-cta-firm-wrapper: var( --vvd-tab-cta-firm )}.base{--vvd-tab-accent-firm: var( --_vvd-tab-accent-firm-wrapper, var(--vvd-tab-accent-primary) );--vvd-tab-cta-firm: var( --_vvd-tab-cta-firm-wrapper, var(--vvd-tab-cta-primary) )}:host(.vertical){justify-content:end;grid-column:1/auto}:host([disabled]){cursor:not-allowed}:host([removable]){position:relative}:host(:focus-visible){outline:none}.base{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.base:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.base.connotation-cta{--_connotation-color-primary-text: var(--vvd-tab-cta-primary-text, var(--vvd-color-canvas));--_connotation-color-firm: var(--vvd-tab-cta-firm, var(--vvd-color-cta-600));--_connotation-color-faint: var(--vvd-tab-cta-faint, var(--vvd-color-cta-50));--_connotation-color-fierce: var(--vvd-tab-cta-fierce, var(--vvd-color-cta-700));--_connotation-color-pale: var(--vvd-tab-cta-pale, var(--vvd-color-cta-300));--_connotation-color-soft: var(--vvd-tab-cta-soft, var(--vvd-color-cta-100))}.base:not(.connotation-cta){--_connotation-color-primary-text: var(--vvd-tab-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-firm: var(--vvd-tab-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-faint: var(--vvd-tab-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-fierce: var(--vvd-tab-accent-fierce, var(--vvd-color-neutral-700));--_connotation-color-pale: var(--vvd-tab-accent-pale, var(--vvd-color-neutral-300));--_connotation-color-soft: var(--vvd-tab-accent-soft, var(--vvd-color-neutral-100))}.base{position:relative;display:flex;box-sizing:border-box;align-items:center;padding:var(--_tabs-tablist-gutter);background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base-bold);gap:var(--_tabs-tablist-gutter);min-block-size:40px;vertical-align:middle;white-space:nowrap}@supports (user-select: none){.base{user-select:none}}.base:not(.shape-sharp){border-radius:8px}.base:not(.disabled){cursor:pointer}.base.disabled{pointer-events:none}.base.removable{padding-inline-end:40px}:host(:focus-visible) .base{--focus-stroke-gap-color: transparent;box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}:host(.vertical) .base{margin-inline-start:var(--_tabs-active-indicator-stroke-width)}slot[name=icon]{font-size:20px;line-height:1}.icon-trailing slot[name=icon]{display:inline-block;order:1;margin-inline-start:auto}.close{position:absolute;display:flex;align-items:center;justify-content:center;block-size:24px;inline-size:24px;inset-block-start:50%;inset-inline-end:4px;transform:translateY(-50%)}.close vwc-icon{font-size:12px}.close .icon{display:flex;align-items:center;justify-content:center}";
|
|
8
|
+
const styles = ":host{--_vvd-tab-accent-firm-wrapper: var( --vvd-tab-accent-firm );--_vvd-tab-cta-firm-wrapper: var( --vvd-tab-cta-firm )}.base{--vvd-tab-accent-firm: var( --_vvd-tab-accent-firm-wrapper, var(--vvd-tab-accent-primary) );--vvd-tab-cta-firm: var( --_vvd-tab-cta-firm-wrapper, var(--vvd-tab-cta-primary) )}:host(.vertical){justify-content:end;grid-column:1/auto}:host([disabled]){cursor:not-allowed}:host([removable]){position:relative}:host(:focus-visible){outline:none}.base{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.base:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.base.connotation-cta{--_connotation-color-primary-text: var(--vvd-tab-cta-primary-text, var(--vvd-color-canvas));--_connotation-color-firm: var(--vvd-tab-cta-firm, var(--vvd-color-cta-600));--_connotation-color-faint: var(--vvd-tab-cta-faint, var(--vvd-color-cta-50));--_connotation-color-fierce: var(--vvd-tab-cta-fierce, var(--vvd-color-cta-700));--_connotation-color-pale: var(--vvd-tab-cta-pale, var(--vvd-color-cta-300));--_connotation-color-soft: var(--vvd-tab-cta-soft, var(--vvd-color-cta-100))}.base:not(.connotation-cta){--_connotation-color-primary-text: var(--vvd-tab-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-firm: var(--vvd-tab-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-faint: var(--vvd-tab-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-fierce: var(--vvd-tab-accent-fierce, var(--vvd-color-neutral-700));--_connotation-color-pale: var(--vvd-tab-accent-pale, var(--vvd-color-neutral-300));--_connotation-color-soft: var(--vvd-tab-accent-soft, var(--vvd-color-neutral-100))}.base{position:relative;display:flex;box-sizing:border-box;align-items:center;justify-content:var(--_tab-justify-content);padding:var(--_tabs-tablist-gutter);background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base-bold);gap:var(--_tabs-tablist-gutter);min-block-size:40px;vertical-align:middle;white-space:nowrap}@supports (user-select: none){.base{user-select:none}}.base:not(.shape-sharp){border-radius:8px}.base:not(.disabled){cursor:pointer}.base.disabled{pointer-events:none}.base.removable{padding-inline-end:40px}:host(:focus-visible) .base{--focus-stroke-gap-color: transparent;box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}:host(.vertical) .base{margin-inline-start:var(--_tabs-active-indicator-stroke-width)}slot[name=icon]{font-size:20px;line-height:1}.icon-trailing slot[name=icon]{display:inline-block;order:1;margin-inline-start:auto}.close{position:absolute;display:flex;align-items:center;justify-content:center;block-size:24px;inline-size:24px;inset-block-start:50%;inset-inline-end:4px;transform:translateY(-50%)}.close vwc-icon{font-size:12px}.close .icon{display:flex;align-items:center;justify-content:center}";
|
|
22
9
|
|
|
23
10
|
var __defProp = Object.defineProperty;
|
|
24
11
|
var __decorateClass = (decorators, target, key, kind) => {
|
|
@@ -29,7 +16,7 @@ var __decorateClass = (decorators, target, key, kind) => {
|
|
|
29
16
|
if (result) __defProp(target, key, result);
|
|
30
17
|
return result;
|
|
31
18
|
};
|
|
32
|
-
class Tab extends
|
|
19
|
+
class Tab extends FoundationElement {
|
|
33
20
|
constructor() {
|
|
34
21
|
super(...arguments);
|
|
35
22
|
this.removable = false;
|
|
@@ -47,6 +34,9 @@ class Tab extends Tab$1 {
|
|
|
47
34
|
return false;
|
|
48
35
|
}
|
|
49
36
|
}
|
|
37
|
+
__decorateClass([
|
|
38
|
+
attr({ mode: "boolean" })
|
|
39
|
+
], Tab.prototype, "disabled");
|
|
50
40
|
__decorateClass([
|
|
51
41
|
attr
|
|
52
42
|
], Tab.prototype, "connotation");
|
package/shared/definition52.cjs
CHANGED
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
const index = require('./index.cjs');
|
|
4
4
|
const definition = require('./definition51.cjs');
|
|
5
5
|
const definition$1 = require('./definition50.cjs');
|
|
6
|
+
const keyCodes$1 = require('./key-codes.cjs');
|
|
6
7
|
const startEnd = require('./start-end.cjs');
|
|
7
8
|
const applyMixins = require('./apply-mixins.cjs');
|
|
8
|
-
const keyCodes = require('./key-
|
|
9
|
+
const keyCodes = require('./key-codes2.cjs');
|
|
9
10
|
const strings = require('./strings.cjs');
|
|
10
11
|
const numbers = require('./numbers.cjs');
|
|
11
12
|
const ref = require('./ref.cjs');
|
|
@@ -340,7 +341,7 @@ let Tabs$1 = class Tabs extends index.FoundationElement {
|
|
|
340
341
|
adjust(adjustment) {
|
|
341
342
|
const focusableTabs = this.tabs.filter(t => this.isFocusableElement(t));
|
|
342
343
|
const currentActiveTabIndex = focusableTabs.indexOf(this.activetab);
|
|
343
|
-
const nextTabIndex =
|
|
344
|
+
const nextTabIndex = strings.limit(0, focusableTabs.length - 1, currentActiveTabIndex + adjustment);
|
|
344
345
|
// the index of the next focusable tab within the context of all available tabs
|
|
345
346
|
const nextIndex = this.tabs.indexOf(focusableTabs[nextTabIndex]);
|
|
346
347
|
if (nextIndex > -1) {
|
|
@@ -383,7 +384,15 @@ index.__decorate([
|
|
|
383
384
|
], Tabs$1.prototype, "showActiveIndicator", void 0);
|
|
384
385
|
applyMixins.applyMixins(Tabs$1, startEnd.StartEnd);
|
|
385
386
|
|
|
386
|
-
|
|
387
|
+
let uniqueIdCounter = 0;
|
|
388
|
+
/**
|
|
389
|
+
* Generates a unique ID based on incrementing a counter.
|
|
390
|
+
*/
|
|
391
|
+
function uniqueId(prefix = "") {
|
|
392
|
+
return `${prefix}${uniqueIdCounter++}`;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
const styles = ":host{display:block}.base{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base.connotation-cta{--_connotation-color-firm: var(--vvd-tabs-cta-firm, var(--vvd-color-cta-600))}.base:not(.connotation-cta){--_connotation-color-firm: var(--vvd-tabs-accent-firm, var(--vvd-color-canvas-text))}.base{--_tabs-tablist-gutter: 8px;--_tabs-active-indicator-stroke-width: 2px;display:grid;box-sizing:border-box}.base.orientation-vertical{overflow:hidden;block-size:inherit;grid-template-columns:auto 1fr;grid-template-rows:1fr}.base:not(.orientation-vertical){grid-template-columns:1fr;grid-template-rows:auto 1fr;max-block-size:100%}.base.layout-stretch .scroll-shadow{flex:1}.base:not(.orientation-vertical) .scroll-shadow{position:relative;overflow:hidden;isolation:isolate}.base:not(.orientation-vertical) .scroll-shadow.start-scroll:before,.base:not(.orientation-vertical) .scroll-shadow.start-scroll:after,.base:not(.orientation-vertical) .scroll-shadow.end-scroll:before,.base:not(.orientation-vertical) .scroll-shadow.end-scroll:after{position:absolute;content:\"\";inline-size:10px;inset-block:0;opacity:0;transition:opacity .1s}.base:not(.orientation-vertical) .scroll-shadow.start-scroll:before{z-index:1;box-shadow:inset 7px 1px 5px -3px var(--vvd-color-neutral-950);inset-inline-start:0;opacity:.2}.base:not(.orientation-vertical) .scroll-shadow.end-scroll:after{box-shadow:inset -7px 1px 5px -3px var(--vvd-color-neutral-950);inset-inline-end:0;opacity:.2}.tabs{display:flex;overflow:hidden}.base.orientation-vertical .tabs{flex-direction:column;box-shadow:1px 0 0 0 var(--vvd-color-neutral-300)}.base.orientation-horizontal .tabs{flex-direction:row;border-bottom:1px solid var(--vvd-color-neutral-300)}.tablist{position:relative;display:grid;box-sizing:border-box;color:var(--_appearance-color-text)}.base.layout-stretch .tablist{--_tab-justify-content: center;--_tabs-tablist-column: 1fr}.tablist .base:not(.layout-stretch){--_tabs-tablist-column: auto}.base.orientation-vertical .tablist{padding:var(--_tabs-tablist-gutter);grid-row:1/2;grid-template-columns:auto 1fr;grid-template-rows:auto;inline-size:100%;place-self:flex-start end;row-gap:var(--_tabs-tablist-gutter)}.base:not(.orientation-vertical) .tablist{justify-content:flex-start;column-gap:var(--_tabs-tablist-gutter);grid-auto-flow:column;grid-template-rows:auto auto;inline-size:100%;padding-inline:var(--_tabs-tablist-gutter)}.base.has-action-items.orientation-vertical .tablist{padding-block-end:0}.base.has-action-items:not(.orientation-vertical) .tablist{padding-inline-end:0}.tablist-wrapper{--scrollbar-track-color: transparent;--scrollbar-thumb-color: color-mix(in srgb, var(--vvd-color-neutral-950), transparent 70%)}.tablist-wrapper{scrollbar-color:var(--scrollbar-thumb-color) var(--scrollbar-track-color);scrollbar-width:thin}.tablist-wrapper ::-webkit-scrollbar{width:4px}.tablist-wrapper ::-webkit-scrollbar-track{background:var(--scrollbar-track-color)}.tablist-wrapper ::-webkit-scrollbar-thumb{border:0;border-radius:4px;background-color:var(--scrollbar-thumb-color)}.base:not(.orientation-vertical) .tablist-wrapper{overflow:auto hidden;align-self:end;inline-size:100%}.base.orientation-vertical .tablist-wrapper{overflow:hidden auto;block-size:100%}.tablist-wrapper::-webkit-scrollbar{display:none}slot[name=action-items]{display:flex}.base.has-action-items.orientation-horizontal slot[name=action-items]{align-items:center;margin-inline:var(--_tabs-tablist-gutter)}.base.has-action-items.orientation-vertical slot[name=action-items]{margin-block:var(--_tabs-tablist-gutter)}.tabpanel{box-sizing:border-box;block-size:100%;min-block-size:0;min-inline-size:0}.base.scroll .tabpanel{overflow-y:auto;--scrollbar-track-color: transparent;--scrollbar-thumb-color: color-mix(in srgb, var(--vvd-color-neutral-950), transparent 70%)}.base.scroll .tabpanel{scrollbar-color:var(--scrollbar-thumb-color) var(--scrollbar-track-color);scrollbar-width:thin}.base.scroll .tabpanel ::-webkit-scrollbar{width:4px}.base.scroll .tabpanel ::-webkit-scrollbar-track{background:var(--scrollbar-track-color)}.base.scroll .tabpanel ::-webkit-scrollbar-thumb{border:0;border-radius:4px;background-color:var(--scrollbar-thumb-color)}.base.gutters-small .tabpanel{padding:calc(1px*(40 + 4*clamp(-1,var(--vvd-size-density, 0),2)) - (1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2))))}.active-indicator{background:currentColor;margin-inline-start:calc(var(--_tabs-tablist-gutter) * -1)}.base.orientation-vertical .active-indicator{align-self:center;border-radius:2px;block-size:80%;grid-area:1/1/auto/auto;inline-size:var(--_tabs-active-indicator-stroke-width)}.base:not(.orientation-vertical) .active-indicator{position:absolute;z-index:1;border-radius:2px;block-size:var(--_tabs-active-indicator-stroke-width);grid-column:1/auto;inline-size:calc(var(--_tabs-active-tab-inline-size));inset-block-end:0;inset-inline-start:8px}.activeIndicatorTransition{transition:transform .2s ease-out 0s,inline-size .2s ease-out 0s}";
|
|
387
396
|
|
|
388
397
|
var __defProp = Object.defineProperty;
|
|
389
398
|
var __decorateClass = (decorators, target, key, kind) => {
|
|
@@ -395,43 +404,269 @@ var __decorateClass = (decorators, target, key, kind) => {
|
|
|
395
404
|
return result;
|
|
396
405
|
};
|
|
397
406
|
const ACTIVE_TAB_WIDTH = "--_tabs-active-tab-inline-size";
|
|
398
|
-
|
|
407
|
+
const TABLIST_COLUMN = "--_tabs-tablist-column";
|
|
408
|
+
class Tabs extends index.FoundationElement {
|
|
399
409
|
constructor() {
|
|
400
|
-
super();
|
|
410
|
+
super(...arguments);
|
|
411
|
+
// eslint-disable-next-line @nrwl/nx/workspace/no-attribute-default-value
|
|
412
|
+
this.orientation = TabsOrientation.horizontal;
|
|
413
|
+
// eslint-disable-next-line @nrwl/nx/workspace/no-attribute-default-value
|
|
414
|
+
this.activeindicator = true;
|
|
415
|
+
this.showActiveIndicator = true;
|
|
416
|
+
this.prevActiveTabIndex = 0;
|
|
417
|
+
this.activeTabIndex = 0;
|
|
418
|
+
this.tabIds = [];
|
|
419
|
+
this.tabpanelIds = [];
|
|
420
|
+
this.change = () => {
|
|
421
|
+
this.$emit("change", this.activetab);
|
|
422
|
+
};
|
|
423
|
+
this.isDisabledElement = (el) => {
|
|
424
|
+
return el.getAttribute("aria-disabled") === "true";
|
|
425
|
+
};
|
|
426
|
+
this.isHiddenElement = (el) => {
|
|
427
|
+
return el.hasAttribute("hidden");
|
|
428
|
+
};
|
|
429
|
+
this.isFocusableElement = (el) => {
|
|
430
|
+
return !this.isDisabledElement(el) && !this.isHiddenElement(el);
|
|
431
|
+
};
|
|
432
|
+
this.setTabs = () => {
|
|
433
|
+
const gridHorizontalProperty = "gridColumn";
|
|
434
|
+
const gridVerticalProperty = "gridRow";
|
|
435
|
+
const gridProperty = this.isHorizontal() ? gridHorizontalProperty : gridVerticalProperty;
|
|
436
|
+
this.activeTabIndex = this.getActiveIndex();
|
|
437
|
+
this.showActiveIndicator = false;
|
|
438
|
+
if (this.isHorizontal()) {
|
|
439
|
+
this.tablist.style.setProperty(
|
|
440
|
+
"grid-template-columns",
|
|
441
|
+
`repeat(${this.tabs.length}, var(${TABLIST_COLUMN}))`
|
|
442
|
+
);
|
|
443
|
+
} else {
|
|
444
|
+
this.tablist.style.removeProperty("grid-template-columns");
|
|
445
|
+
}
|
|
446
|
+
this.tabs.forEach((tab, index) => {
|
|
447
|
+
if (tab.slot === "tab") {
|
|
448
|
+
const isActiveTab = this.activeTabIndex === index && this.isFocusableElement(tab);
|
|
449
|
+
if (this.activeindicator && this.isFocusableElement(tab)) {
|
|
450
|
+
this.showActiveIndicator = true;
|
|
451
|
+
}
|
|
452
|
+
const tabId = this.tabIds[index];
|
|
453
|
+
const tabpanelId = this.tabpanelIds[index];
|
|
454
|
+
tab.setAttribute("id", tabId);
|
|
455
|
+
tab.setAttribute("aria-selected", isActiveTab ? "true" : "false");
|
|
456
|
+
tab.setAttribute("aria-controls", tabpanelId);
|
|
457
|
+
tab.addEventListener("click", this.handleTabClick);
|
|
458
|
+
tab.addEventListener("keydown", this.handleTabKeyDown);
|
|
459
|
+
tab.setAttribute("tabindex", isActiveTab ? "0" : "-1");
|
|
460
|
+
if (isActiveTab) {
|
|
461
|
+
this.activetab = tab;
|
|
462
|
+
this.activeid = tabId;
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
tab.style[gridHorizontalProperty] = "";
|
|
466
|
+
tab.style[gridVerticalProperty] = "";
|
|
467
|
+
tab.style[gridProperty] = `${index + 1}`;
|
|
468
|
+
!this.isHorizontal() ? tab.classList.add("vertical") : tab.classList.remove("vertical");
|
|
469
|
+
});
|
|
470
|
+
};
|
|
471
|
+
this.setTabPanels = () => {
|
|
472
|
+
this.tabpanels.forEach((tabpanel, index) => {
|
|
473
|
+
const tabId = this.tabIds[index];
|
|
474
|
+
const tabpanelId = this.tabpanelIds[index];
|
|
475
|
+
tabpanel.setAttribute("id", tabpanelId);
|
|
476
|
+
tabpanel.setAttribute("aria-labelledby", tabId);
|
|
477
|
+
this.activeTabIndex !== index ? tabpanel.setAttribute("hidden", "") : tabpanel.removeAttribute("hidden");
|
|
478
|
+
});
|
|
479
|
+
};
|
|
480
|
+
this.handleTabClick = (event) => {
|
|
481
|
+
const selectedTab = event.currentTarget;
|
|
482
|
+
if (selectedTab.nodeType === 1 && this.isFocusableElement(selectedTab)) {
|
|
483
|
+
this.prevActiveTabIndex = this.activeTabIndex;
|
|
484
|
+
this.activeTabIndex = this.tabs.indexOf(selectedTab);
|
|
485
|
+
this.setComponent();
|
|
486
|
+
}
|
|
487
|
+
};
|
|
488
|
+
this.handleTabKeyDown = (event) => {
|
|
489
|
+
if (this.isHorizontal()) {
|
|
490
|
+
switch (event.key) {
|
|
491
|
+
case keyCodes$1.keyArrowLeft:
|
|
492
|
+
event.preventDefault();
|
|
493
|
+
this.adjustBackward(event);
|
|
494
|
+
break;
|
|
495
|
+
case keyCodes$1.keyArrowRight:
|
|
496
|
+
event.preventDefault();
|
|
497
|
+
this.adjustForward(event);
|
|
498
|
+
break;
|
|
499
|
+
}
|
|
500
|
+
} else {
|
|
501
|
+
switch (event.key) {
|
|
502
|
+
case keyCodes$1.keyArrowUp:
|
|
503
|
+
event.preventDefault();
|
|
504
|
+
this.adjustBackward(event);
|
|
505
|
+
break;
|
|
506
|
+
case keyCodes$1.keyArrowDown:
|
|
507
|
+
event.preventDefault();
|
|
508
|
+
this.adjustForward(event);
|
|
509
|
+
break;
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
switch (event.key) {
|
|
513
|
+
case keyCodes$1.keyHome:
|
|
514
|
+
event.preventDefault();
|
|
515
|
+
this.adjust(-this.activeTabIndex);
|
|
516
|
+
break;
|
|
517
|
+
case keyCodes$1.keyEnd:
|
|
518
|
+
event.preventDefault();
|
|
519
|
+
this.adjust(this.tabs.length - this.activeTabIndex - 1);
|
|
520
|
+
break;
|
|
521
|
+
}
|
|
522
|
+
};
|
|
523
|
+
this.adjustForward = (_) => {
|
|
524
|
+
this.#moveToNextTab(1);
|
|
525
|
+
};
|
|
526
|
+
this.adjustBackward = (_) => {
|
|
527
|
+
this.#moveToNextTab(-1);
|
|
528
|
+
};
|
|
529
|
+
this.moveToTabByIndex = (group, index) => {
|
|
530
|
+
const tab = group[index];
|
|
531
|
+
this.activetab = tab;
|
|
532
|
+
this.prevActiveTabIndex = this.activeTabIndex;
|
|
533
|
+
this.activeTabIndex = index;
|
|
534
|
+
tab.focus();
|
|
535
|
+
this.setComponent();
|
|
536
|
+
};
|
|
401
537
|
this.scrollablePanel = false;
|
|
402
538
|
this._actionItemsSlottedContent = [];
|
|
403
|
-
this.handleActiveIndicatorPosition = () => this.#handleActiveIndicatorPosition();
|
|
404
|
-
this.animateActiveIndicator = () => this.#animateActiveIndicator();
|
|
405
|
-
}
|
|
406
|
-
connotationChanged() {
|
|
407
|
-
this.#updateTabsConnotation();
|
|
408
539
|
}
|
|
540
|
+
/**
|
|
541
|
+
* @internal
|
|
542
|
+
*/
|
|
409
543
|
orientationChanged() {
|
|
410
|
-
|
|
544
|
+
if (this.$fastController.isConnected) {
|
|
545
|
+
this.setTabs();
|
|
546
|
+
this.setTabPanels();
|
|
547
|
+
this.handleActiveIndicatorPosition();
|
|
548
|
+
}
|
|
411
549
|
this.patchIndicatorStyleTransition();
|
|
412
550
|
if (!this.activeIndicatorRef) return;
|
|
413
551
|
if (this.orientation === TabsOrientation.vertical) {
|
|
414
552
|
this.activeIndicatorRef.style.removeProperty(ACTIVE_TAB_WIDTH);
|
|
415
553
|
}
|
|
416
554
|
}
|
|
417
|
-
|
|
418
|
-
|
|
555
|
+
/**
|
|
556
|
+
* @internal
|
|
557
|
+
*/
|
|
558
|
+
activeidChanged(oldValue, _) {
|
|
559
|
+
if (this.$fastController.isConnected && this.tabs.length <= this.tabpanels.length) {
|
|
560
|
+
this.prevActiveTabIndex = this.tabs.findIndex(
|
|
561
|
+
(item) => item.id === oldValue
|
|
562
|
+
);
|
|
563
|
+
this.setTabs();
|
|
564
|
+
this.setTabPanels();
|
|
565
|
+
this.handleActiveIndicatorPosition();
|
|
566
|
+
}
|
|
419
567
|
this.patchIndicatorStyleTransition();
|
|
420
568
|
this.#updateTabsConnotation();
|
|
421
569
|
this.#scrollToIndex(this.activeTabIndex);
|
|
422
570
|
}
|
|
571
|
+
/**
|
|
572
|
+
* @internal
|
|
573
|
+
*/
|
|
423
574
|
tabsChanged() {
|
|
424
|
-
|
|
575
|
+
if (this.$fastController.isConnected && this.tabs.length <= this.tabpanels.length) {
|
|
576
|
+
this.tabIds = this.getTabIds();
|
|
577
|
+
this.tabpanelIds = this.getTabPanelIds();
|
|
578
|
+
this.setTabs();
|
|
579
|
+
this.setTabPanels();
|
|
580
|
+
this.handleActiveIndicatorPosition();
|
|
581
|
+
}
|
|
425
582
|
this.patchIndicatorStyleTransition();
|
|
426
583
|
this.#updateScrollStatus();
|
|
427
584
|
}
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
585
|
+
/**
|
|
586
|
+
* @internal
|
|
587
|
+
*/
|
|
431
588
|
tabpanelsChanged() {
|
|
432
|
-
|
|
589
|
+
if (this.$fastController.isConnected && this.tabpanels.length <= this.tabs.length) {
|
|
590
|
+
this.tabIds = this.getTabIds();
|
|
591
|
+
this.tabpanelIds = this.getTabPanelIds();
|
|
592
|
+
this.setTabs();
|
|
593
|
+
this.setTabPanels();
|
|
594
|
+
this.handleActiveIndicatorPosition();
|
|
595
|
+
}
|
|
433
596
|
this.patchIndicatorStyleTransition();
|
|
434
597
|
}
|
|
598
|
+
getActiveIndex() {
|
|
599
|
+
const id = this.activeid;
|
|
600
|
+
if (id !== void 0) {
|
|
601
|
+
return this.tabIds.indexOf(this.activeid) === -1 ? 0 : this.tabIds.indexOf(this.activeid);
|
|
602
|
+
} else {
|
|
603
|
+
return 0;
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
getTabIds() {
|
|
607
|
+
return this.tabs.map((tab) => {
|
|
608
|
+
return tab.getAttribute("id") ?? `tab-${uniqueId()}`;
|
|
609
|
+
});
|
|
610
|
+
}
|
|
611
|
+
getTabPanelIds() {
|
|
612
|
+
return this.tabpanels.map((tabPanel) => {
|
|
613
|
+
return tabPanel.getAttribute("id") ?? `panel-${uniqueId()}`;
|
|
614
|
+
});
|
|
615
|
+
}
|
|
616
|
+
setComponent() {
|
|
617
|
+
if (this.activeTabIndex !== this.prevActiveTabIndex) {
|
|
618
|
+
this.activeid = this.tabIds[this.activeTabIndex];
|
|
619
|
+
this.focusTab();
|
|
620
|
+
this.change();
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
isHorizontal() {
|
|
624
|
+
return this.orientation === TabsOrientation.horizontal;
|
|
625
|
+
}
|
|
626
|
+
/**
|
|
627
|
+
* The adjust method for FASTTabs
|
|
628
|
+
* @public
|
|
629
|
+
* @remarks
|
|
630
|
+
* This method allows the active index to be adjusted by numerical increments
|
|
631
|
+
*/
|
|
632
|
+
adjust(adjustment) {
|
|
633
|
+
const focusableTabs = this.tabs.filter((t) => this.isFocusableElement(t));
|
|
634
|
+
const currentActiveTabIndex = focusableTabs.indexOf(this.activetab);
|
|
635
|
+
const nextTabIndex = numbers.limit(
|
|
636
|
+
0,
|
|
637
|
+
focusableTabs.length - 1,
|
|
638
|
+
currentActiveTabIndex + adjustment
|
|
639
|
+
);
|
|
640
|
+
const nextIndex = this.tabs.indexOf(focusableTabs[nextTabIndex]);
|
|
641
|
+
if (nextIndex > -1) {
|
|
642
|
+
this.moveToTabByIndex(this.tabs, nextIndex);
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
#moveToNextTab(direction) {
|
|
646
|
+
const activeIndex = this.tabs.indexOf(this.activetab);
|
|
647
|
+
for (let offset = 1; offset < this.tabs.length; offset++) {
|
|
648
|
+
const index = (activeIndex + direction * offset + this.tabs.length) % this.tabs.length;
|
|
649
|
+
if (this.isFocusableElement(this.tabs[index])) {
|
|
650
|
+
this.moveToTabByIndex(this.tabs, index);
|
|
651
|
+
break;
|
|
652
|
+
}
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
focusTab() {
|
|
656
|
+
this.tabs[this.activeTabIndex].focus();
|
|
657
|
+
}
|
|
658
|
+
/**
|
|
659
|
+
* @internal
|
|
660
|
+
*/
|
|
661
|
+
connotationChanged() {
|
|
662
|
+
this.#updateTabsConnotation();
|
|
663
|
+
}
|
|
664
|
+
#updateScrollStatus() {
|
|
665
|
+
this.tablist.parentElement.dispatchEvent(new Event("scroll"));
|
|
666
|
+
}
|
|
667
|
+
/**
|
|
668
|
+
* @internal
|
|
669
|
+
*/
|
|
435
670
|
patchIndicatorStyleTransition() {
|
|
436
671
|
if (!this.activetab || !this.activeIndicatorRef) return;
|
|
437
672
|
if (this.orientation === TabsOrientation.vertical || !this.showActiveIndicator)
|
|
@@ -441,6 +676,9 @@ class Tabs extends Tabs$1 {
|
|
|
441
676
|
}
|
|
442
677
|
connectedCallback() {
|
|
443
678
|
super.connectedCallback();
|
|
679
|
+
this.tabIds = this.getTabIds();
|
|
680
|
+
this.tabpanelIds = this.getTabPanelIds();
|
|
681
|
+
this.activeTabIndex = this.getActiveIndex();
|
|
444
682
|
requestAnimationFrame(() => this.#updateScrollStatus());
|
|
445
683
|
const scrollWrapper = this.tablist.parentElement;
|
|
446
684
|
this.#resizeObserver = new ResizeObserver(() => {
|
|
@@ -496,12 +734,12 @@ class Tabs extends Tabs$1 {
|
|
|
496
734
|
#getTranslateProperty() {
|
|
497
735
|
return this.isHorizontal() ? "translateX" : "translateY";
|
|
498
736
|
}
|
|
499
|
-
|
|
737
|
+
handleActiveIndicatorPosition() {
|
|
500
738
|
if (this.showActiveIndicator && this.activeindicator) {
|
|
501
739
|
this.animateActiveIndicator();
|
|
502
740
|
}
|
|
503
741
|
}
|
|
504
|
-
|
|
742
|
+
animateActiveIndicator() {
|
|
505
743
|
const offsetProperty = this.isHorizontal() ? "offsetLeft" : "offsetTop";
|
|
506
744
|
const currentOffset = this.activeIndicatorRef[offsetProperty];
|
|
507
745
|
const currentGridValue = this.activeIndicatorRef.style[this.#getGridProperty()];
|
|
@@ -523,6 +761,27 @@ class Tabs extends Tabs$1 {
|
|
|
523
761
|
});
|
|
524
762
|
}
|
|
525
763
|
}
|
|
764
|
+
__decorateClass([
|
|
765
|
+
index.attr
|
|
766
|
+
], Tabs.prototype, "orientation");
|
|
767
|
+
__decorateClass([
|
|
768
|
+
index.attr
|
|
769
|
+
], Tabs.prototype, "activeid");
|
|
770
|
+
__decorateClass([
|
|
771
|
+
index.observable
|
|
772
|
+
], Tabs.prototype, "tabs");
|
|
773
|
+
__decorateClass([
|
|
774
|
+
index.observable
|
|
775
|
+
], Tabs.prototype, "tabpanels");
|
|
776
|
+
__decorateClass([
|
|
777
|
+
index.attr({ mode: "boolean" })
|
|
778
|
+
], Tabs.prototype, "activeindicator");
|
|
779
|
+
__decorateClass([
|
|
780
|
+
index.observable
|
|
781
|
+
], Tabs.prototype, "activeIndicatorRef");
|
|
782
|
+
__decorateClass([
|
|
783
|
+
index.observable
|
|
784
|
+
], Tabs.prototype, "showActiveIndicator");
|
|
526
785
|
__decorateClass([
|
|
527
786
|
index.observable
|
|
528
787
|
], Tabs.prototype, "tablist");
|
|
@@ -535,6 +794,9 @@ __decorateClass([
|
|
|
535
794
|
__decorateClass([
|
|
536
795
|
index.attr({ mode: "boolean", attribute: "scrollable-panel" })
|
|
537
796
|
], Tabs.prototype, "scrollablePanel");
|
|
797
|
+
__decorateClass([
|
|
798
|
+
index.attr({ attribute: "tabs-layout" })
|
|
799
|
+
], Tabs.prototype, "tabsLayout");
|
|
538
800
|
__decorateClass([
|
|
539
801
|
index.observable
|
|
540
802
|
], Tabs.prototype, "_actionItemsSlottedContent");
|
|
@@ -544,9 +806,11 @@ const getClasses = ({
|
|
|
544
806
|
orientation,
|
|
545
807
|
gutters,
|
|
546
808
|
scrollablePanel,
|
|
809
|
+
tabsLayout,
|
|
547
810
|
_actionItemsSlottedContent
|
|
548
811
|
}) => classNames.classNames(
|
|
549
812
|
"base",
|
|
813
|
+
`layout-${tabsLayout ?? "align-start"}`,
|
|
550
814
|
[`connotation-${connotation}`, Boolean(connotation)],
|
|
551
815
|
[`orientation-${orientation}`, Boolean(orientation)],
|
|
552
816
|
`gutters-${gutters ?? "small"}`,
|