@vonage/vivid 4.11.0 → 4.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/custom-elements.json +899 -442
  2. package/lib/accordion/accordion.d.ts +21 -2
  3. package/lib/accordion-item/accordion-item.d.ts +6 -2
  4. package/lib/calendar/calendar.d.ts +1 -1
  5. package/lib/date-picker/date-picker.d.ts +1 -0
  6. package/lib/fab/fab.d.ts +2 -2
  7. package/lib/radio/radio.d.ts +12 -2
  8. package/lib/radio/radio.form-associated.d.ts +10 -0
  9. package/lib/radio-group/radio-group.d.ts +20 -2
  10. package/lib/tab/tab.d.ts +3 -2
  11. package/lib/tab-panel/tab-panel.d.ts +2 -2
  12. package/lib/tabs/tabs.d.ts +30 -9
  13. package/package.json +1 -1
  14. package/shared/date-picker/date-picker-base.d.ts +1 -0
  15. package/shared/definition.cjs +29 -72
  16. package/shared/definition.js +30 -73
  17. package/shared/definition16.cjs +1 -2
  18. package/shared/definition16.js +1 -2
  19. package/shared/definition17.cjs +2 -2
  20. package/shared/definition17.js +2 -2
  21. package/shared/definition18.cjs +6 -1
  22. package/shared/definition18.js +6 -1
  23. package/shared/definition19.cjs +17 -8
  24. package/shared/definition19.js +17 -8
  25. package/shared/definition2.cjs +154 -187
  26. package/shared/definition2.js +157 -190
  27. package/shared/definition20.cjs +1 -1
  28. package/shared/definition20.js +1 -1
  29. package/shared/definition24.cjs +11 -11
  30. package/shared/definition24.js +11 -11
  31. package/shared/definition29.cjs +2 -2
  32. package/shared/definition29.js +2 -2
  33. package/shared/definition35.cjs +1 -1
  34. package/shared/definition35.js +1 -1
  35. package/shared/definition40.cjs +226 -399
  36. package/shared/definition40.js +229 -402
  37. package/shared/definition42.cjs +3 -2
  38. package/shared/definition42.js +3 -2
  39. package/shared/definition43.cjs +1 -0
  40. package/shared/definition43.js +1 -0
  41. package/shared/definition44.cjs +1 -1
  42. package/shared/definition44.js +1 -1
  43. package/shared/definition47.cjs +3 -2
  44. package/shared/definition47.js +3 -2
  45. package/shared/definition49.cjs +1 -1
  46. package/shared/definition49.js +1 -1
  47. package/shared/definition5.cjs +1 -1
  48. package/shared/definition5.js +1 -1
  49. package/shared/definition50.cjs +1 -11
  50. package/shared/definition50.js +1 -11
  51. package/shared/definition51.cjs +4 -14
  52. package/shared/definition51.js +5 -15
  53. package/shared/definition52.cjs +269 -19
  54. package/shared/definition52.js +273 -23
  55. package/shared/definition57.cjs +26 -4
  56. package/shared/definition57.js +27 -5
  57. package/shared/definition58.cjs +1 -1
  58. package/shared/definition58.js +1 -1
  59. package/shared/definition59.cjs +1 -1
  60. package/shared/definition59.js +1 -1
  61. package/shared/definition61.cjs +1 -1
  62. package/shared/definition61.js +1 -1
  63. package/shared/definition62.cjs +17 -8
  64. package/shared/definition62.js +17 -8
  65. package/shared/definition64.cjs +55 -30
  66. package/shared/definition64.js +55 -30
  67. package/shared/form-associated.cjs +1 -1
  68. package/shared/form-associated.js +1 -1
  69. package/shared/foundation/button/button.d.ts +1 -1
  70. package/shared/foundation/button/button.template.d.ts +2 -2
  71. package/shared/icon.cjs +1 -1
  72. package/shared/icon.js +1 -1
  73. package/shared/index.cjs +1 -0
  74. package/shared/index.js +1 -1
  75. package/shared/key-codes.cjs +1 -94
  76. package/shared/key-codes.js +2 -89
  77. package/shared/key-codes2.cjs +87 -1
  78. package/shared/key-codes2.js +83 -2
  79. package/shared/listbox.cjs +6 -7
  80. package/shared/listbox.js +3 -4
  81. package/shared/numbers.cjs +0 -12
  82. package/shared/numbers.js +1 -12
  83. package/shared/presentationDate.cjs +14 -0
  84. package/shared/presentationDate.js +15 -1
  85. package/shared/radio.cjs +92 -117
  86. package/shared/radio.js +93 -118
  87. package/shared/slider.template.cjs +2 -15
  88. package/shared/slider.template.js +2 -14
  89. package/shared/strings.cjs +26 -0
  90. package/shared/strings.js +25 -1
  91. package/styles/core/all.css +1 -1
  92. package/styles/core/theme.css +1 -1
  93. package/styles/core/typography.css +1 -1
  94. package/styles/tokens/theme-dark.css +4 -4
  95. package/styles/tokens/theme-light.css +4 -4
  96. package/styles/tokens/vivid-2-compat.css +1 -1
@@ -1,11 +1,12 @@
1
- import { F as FoundationElement, _ as __decorate, a as attr, o as observable, h as html, r as registerFactory } from './index.js';
1
+ import { _ as __decorate, a as attr, o as observable, F as FoundationElement, h as html, r as registerFactory } from './index.js';
2
2
  import { a as tabRegistries } from './definition51.js';
3
3
  import { a as tabPanelRegistries } from './definition50.js';
4
+ import { f as keyArrowRight$1, e as keyArrowLeft$1, c as keyArrowDown$1, d as keyArrowUp$1, a as keyEnd$1, b as keyHome$1 } from './key-codes.js';
4
5
  import { S as StartEnd } from './start-end.js';
5
6
  import { a as applyMixins } from './apply-mixins.js';
6
- import { h as keyArrowRight, i as keyArrowLeft, f as keyArrowDown, e as keyArrowUp, d as keyEnd, g as keyHome } from './key-codes.js';
7
- import { u as uniqueId } from './strings.js';
8
- import { l as limit } from './numbers.js';
7
+ import { h as keyArrowRight, i as keyArrowLeft, f as keyArrowDown, e as keyArrowUp, d as keyEnd, g as keyHome } from './key-codes2.js';
8
+ import { u as uniqueId$1, l as limit } from './strings.js';
9
+ import { l as limit$1 } from './numbers.js';
9
10
  import { r as ref } from './ref.js';
10
11
  import { s as slotted } from './slotted.js';
11
12
  import { w as when } from './when.js';
@@ -275,13 +276,13 @@ let Tabs$1 = class Tabs extends FoundationElement {
275
276
  getTabIds() {
276
277
  return this.tabs.map((tab) => {
277
278
  var _a;
278
- return (_a = tab.getAttribute("id")) !== null && _a !== void 0 ? _a : `tab-${uniqueId()}`;
279
+ return (_a = tab.getAttribute("id")) !== null && _a !== void 0 ? _a : `tab-${uniqueId$1()}`;
279
280
  });
280
281
  }
281
282
  getTabPanelIds() {
282
283
  return this.tabpanels.map((tabPanel) => {
283
284
  var _a;
284
- return (_a = tabPanel.getAttribute("id")) !== null && _a !== void 0 ? _a : `panel-${uniqueId()}`;
285
+ return (_a = tabPanel.getAttribute("id")) !== null && _a !== void 0 ? _a : `panel-${uniqueId$1()}`;
285
286
  });
286
287
  }
287
288
  setComponent() {
@@ -381,6 +382,14 @@ __decorate([
381
382
  ], Tabs$1.prototype, "showActiveIndicator", void 0);
382
383
  applyMixins(Tabs$1, StartEnd);
383
384
 
385
+ let uniqueIdCounter = 0;
386
+ /**
387
+ * Generates a unique ID based on incrementing a counter.
388
+ */
389
+ function uniqueId(prefix = "") {
390
+ return `${prefix}${uniqueIdCounter++}`;
391
+ }
392
+
384
393
  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: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.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-columns:auto;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}.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}.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}";
385
394
 
386
395
  var __defProp = Object.defineProperty;
@@ -393,43 +402,260 @@ var __decorateClass = (decorators, target, key, kind) => {
393
402
  return result;
394
403
  };
395
404
  const ACTIVE_TAB_WIDTH = "--_tabs-active-tab-inline-size";
396
- class Tabs extends Tabs$1 {
405
+ class Tabs extends FoundationElement {
397
406
  constructor() {
398
- super();
407
+ super(...arguments);
408
+ // eslint-disable-next-line @nrwl/nx/workspace/no-attribute-default-value
409
+ this.orientation = TabsOrientation.horizontal;
410
+ // eslint-disable-next-line @nrwl/nx/workspace/no-attribute-default-value
411
+ this.activeindicator = true;
412
+ this.showActiveIndicator = true;
413
+ this.prevActiveTabIndex = 0;
414
+ this.activeTabIndex = 0;
415
+ this.tabIds = [];
416
+ this.tabpanelIds = [];
417
+ this.change = () => {
418
+ this.$emit("change", this.activetab);
419
+ };
420
+ this.isDisabledElement = (el) => {
421
+ return el.getAttribute("aria-disabled") === "true";
422
+ };
423
+ this.isHiddenElement = (el) => {
424
+ return el.hasAttribute("hidden");
425
+ };
426
+ this.isFocusableElement = (el) => {
427
+ return !this.isDisabledElement(el) && !this.isHiddenElement(el);
428
+ };
429
+ this.setTabs = () => {
430
+ const gridHorizontalProperty = "gridColumn";
431
+ const gridVerticalProperty = "gridRow";
432
+ const gridProperty = this.isHorizontal() ? gridHorizontalProperty : gridVerticalProperty;
433
+ this.activeTabIndex = this.getActiveIndex();
434
+ this.showActiveIndicator = false;
435
+ this.tabs.forEach((tab, index) => {
436
+ if (tab.slot === "tab") {
437
+ const isActiveTab = this.activeTabIndex === index && this.isFocusableElement(tab);
438
+ if (this.activeindicator && this.isFocusableElement(tab)) {
439
+ this.showActiveIndicator = true;
440
+ }
441
+ const tabId = this.tabIds[index];
442
+ const tabpanelId = this.tabpanelIds[index];
443
+ tab.setAttribute("id", tabId);
444
+ tab.setAttribute("aria-selected", isActiveTab ? "true" : "false");
445
+ tab.setAttribute("aria-controls", tabpanelId);
446
+ tab.addEventListener("click", this.handleTabClick);
447
+ tab.addEventListener("keydown", this.handleTabKeyDown);
448
+ tab.setAttribute("tabindex", isActiveTab ? "0" : "-1");
449
+ if (isActiveTab) {
450
+ this.activetab = tab;
451
+ this.activeid = tabId;
452
+ }
453
+ }
454
+ tab.style[gridHorizontalProperty] = "";
455
+ tab.style[gridVerticalProperty] = "";
456
+ tab.style[gridProperty] = `${index + 1}`;
457
+ !this.isHorizontal() ? tab.classList.add("vertical") : tab.classList.remove("vertical");
458
+ });
459
+ };
460
+ this.setTabPanels = () => {
461
+ this.tabpanels.forEach((tabpanel, index) => {
462
+ const tabId = this.tabIds[index];
463
+ const tabpanelId = this.tabpanelIds[index];
464
+ tabpanel.setAttribute("id", tabpanelId);
465
+ tabpanel.setAttribute("aria-labelledby", tabId);
466
+ this.activeTabIndex !== index ? tabpanel.setAttribute("hidden", "") : tabpanel.removeAttribute("hidden");
467
+ });
468
+ };
469
+ this.handleTabClick = (event) => {
470
+ const selectedTab = event.currentTarget;
471
+ if (selectedTab.nodeType === 1 && this.isFocusableElement(selectedTab)) {
472
+ this.prevActiveTabIndex = this.activeTabIndex;
473
+ this.activeTabIndex = this.tabs.indexOf(selectedTab);
474
+ this.setComponent();
475
+ }
476
+ };
477
+ this.handleTabKeyDown = (event) => {
478
+ if (this.isHorizontal()) {
479
+ switch (event.key) {
480
+ case keyArrowLeft$1:
481
+ event.preventDefault();
482
+ this.adjustBackward(event);
483
+ break;
484
+ case keyArrowRight$1:
485
+ event.preventDefault();
486
+ this.adjustForward(event);
487
+ break;
488
+ }
489
+ } else {
490
+ switch (event.key) {
491
+ case keyArrowUp$1:
492
+ event.preventDefault();
493
+ this.adjustBackward(event);
494
+ break;
495
+ case keyArrowDown$1:
496
+ event.preventDefault();
497
+ this.adjustForward(event);
498
+ break;
499
+ }
500
+ }
501
+ switch (event.key) {
502
+ case keyHome$1:
503
+ event.preventDefault();
504
+ this.adjust(-this.activeTabIndex);
505
+ break;
506
+ case keyEnd$1:
507
+ event.preventDefault();
508
+ this.adjust(this.tabs.length - this.activeTabIndex - 1);
509
+ break;
510
+ }
511
+ };
512
+ this.adjustForward = (_) => {
513
+ this.#moveToNextTab(1);
514
+ };
515
+ this.adjustBackward = (_) => {
516
+ this.#moveToNextTab(-1);
517
+ };
518
+ this.moveToTabByIndex = (group, index) => {
519
+ const tab = group[index];
520
+ this.activetab = tab;
521
+ this.prevActiveTabIndex = this.activeTabIndex;
522
+ this.activeTabIndex = index;
523
+ tab.focus();
524
+ this.setComponent();
525
+ };
399
526
  this.scrollablePanel = false;
400
527
  this._actionItemsSlottedContent = [];
401
- this.handleActiveIndicatorPosition = () => this.#handleActiveIndicatorPosition();
402
- this.animateActiveIndicator = () => this.#animateActiveIndicator();
403
- }
404
- connotationChanged() {
405
- this.#updateTabsConnotation();
406
528
  }
529
+ /**
530
+ * @internal
531
+ */
407
532
  orientationChanged() {
408
- super.orientationChanged();
533
+ if (this.$fastController.isConnected) {
534
+ this.setTabs();
535
+ this.setTabPanels();
536
+ this.handleActiveIndicatorPosition();
537
+ }
409
538
  this.patchIndicatorStyleTransition();
410
539
  if (!this.activeIndicatorRef) return;
411
540
  if (this.orientation === TabsOrientation.vertical) {
412
541
  this.activeIndicatorRef.style.removeProperty(ACTIVE_TAB_WIDTH);
413
542
  }
414
543
  }
415
- activeidChanged(oldValue, newValue) {
416
- super.activeidChanged(oldValue, newValue);
544
+ /**
545
+ * @internal
546
+ */
547
+ activeidChanged(oldValue, _) {
548
+ if (this.$fastController.isConnected && this.tabs.length <= this.tabpanels.length) {
549
+ this.prevActiveTabIndex = this.tabs.findIndex(
550
+ (item) => item.id === oldValue
551
+ );
552
+ this.setTabs();
553
+ this.setTabPanels();
554
+ this.handleActiveIndicatorPosition();
555
+ }
417
556
  this.patchIndicatorStyleTransition();
418
557
  this.#updateTabsConnotation();
419
558
  this.#scrollToIndex(this.activeTabIndex);
420
559
  }
560
+ /**
561
+ * @internal
562
+ */
421
563
  tabsChanged() {
422
- super.tabsChanged();
564
+ if (this.$fastController.isConnected && this.tabs.length <= this.tabpanels.length) {
565
+ this.tabIds = this.getTabIds();
566
+ this.tabpanelIds = this.getTabPanelIds();
567
+ this.setTabs();
568
+ this.setTabPanels();
569
+ this.handleActiveIndicatorPosition();
570
+ }
423
571
  this.patchIndicatorStyleTransition();
424
572
  this.#updateScrollStatus();
425
573
  }
426
- #updateScrollStatus() {
427
- this.tablist.parentElement.dispatchEvent(new Event("scroll"));
428
- }
574
+ /**
575
+ * @internal
576
+ */
429
577
  tabpanelsChanged() {
430
- super.tabpanelsChanged();
578
+ if (this.$fastController.isConnected && this.tabpanels.length <= this.tabs.length) {
579
+ this.tabIds = this.getTabIds();
580
+ this.tabpanelIds = this.getTabPanelIds();
581
+ this.setTabs();
582
+ this.setTabPanels();
583
+ this.handleActiveIndicatorPosition();
584
+ }
431
585
  this.patchIndicatorStyleTransition();
432
586
  }
587
+ getActiveIndex() {
588
+ const id = this.activeid;
589
+ if (id !== void 0) {
590
+ return this.tabIds.indexOf(this.activeid) === -1 ? 0 : this.tabIds.indexOf(this.activeid);
591
+ } else {
592
+ return 0;
593
+ }
594
+ }
595
+ getTabIds() {
596
+ return this.tabs.map((tab) => {
597
+ return tab.getAttribute("id") ?? `tab-${uniqueId()}`;
598
+ });
599
+ }
600
+ getTabPanelIds() {
601
+ return this.tabpanels.map((tabPanel) => {
602
+ return tabPanel.getAttribute("id") ?? `panel-${uniqueId()}`;
603
+ });
604
+ }
605
+ setComponent() {
606
+ if (this.activeTabIndex !== this.prevActiveTabIndex) {
607
+ this.activeid = this.tabIds[this.activeTabIndex];
608
+ this.focusTab();
609
+ this.change();
610
+ }
611
+ }
612
+ isHorizontal() {
613
+ return this.orientation === TabsOrientation.horizontal;
614
+ }
615
+ /**
616
+ * The adjust method for FASTTabs
617
+ * @public
618
+ * @remarks
619
+ * This method allows the active index to be adjusted by numerical increments
620
+ */
621
+ adjust(adjustment) {
622
+ const focusableTabs = this.tabs.filter((t) => this.isFocusableElement(t));
623
+ const currentActiveTabIndex = focusableTabs.indexOf(this.activetab);
624
+ const nextTabIndex = limit$1(
625
+ 0,
626
+ focusableTabs.length - 1,
627
+ currentActiveTabIndex + adjustment
628
+ );
629
+ const nextIndex = this.tabs.indexOf(focusableTabs[nextTabIndex]);
630
+ if (nextIndex > -1) {
631
+ this.moveToTabByIndex(this.tabs, nextIndex);
632
+ }
633
+ }
634
+ #moveToNextTab(direction) {
635
+ const activeIndex = this.tabs.indexOf(this.activetab);
636
+ for (let offset = 1; offset < this.tabs.length; offset++) {
637
+ const index = (activeIndex + direction * offset + this.tabs.length) % this.tabs.length;
638
+ if (this.isFocusableElement(this.tabs[index])) {
639
+ this.moveToTabByIndex(this.tabs, index);
640
+ break;
641
+ }
642
+ }
643
+ }
644
+ focusTab() {
645
+ this.tabs[this.activeTabIndex].focus();
646
+ }
647
+ /**
648
+ * @internal
649
+ */
650
+ connotationChanged() {
651
+ this.#updateTabsConnotation();
652
+ }
653
+ #updateScrollStatus() {
654
+ this.tablist.parentElement.dispatchEvent(new Event("scroll"));
655
+ }
656
+ /**
657
+ * @internal
658
+ */
433
659
  patchIndicatorStyleTransition() {
434
660
  if (!this.activetab || !this.activeIndicatorRef) return;
435
661
  if (this.orientation === TabsOrientation.vertical || !this.showActiveIndicator)
@@ -439,6 +665,9 @@ class Tabs extends Tabs$1 {
439
665
  }
440
666
  connectedCallback() {
441
667
  super.connectedCallback();
668
+ this.tabIds = this.getTabIds();
669
+ this.tabpanelIds = this.getTabPanelIds();
670
+ this.activeTabIndex = this.getActiveIndex();
442
671
  requestAnimationFrame(() => this.#updateScrollStatus());
443
672
  const scrollWrapper = this.tablist.parentElement;
444
673
  this.#resizeObserver = new ResizeObserver(() => {
@@ -494,12 +723,12 @@ class Tabs extends Tabs$1 {
494
723
  #getTranslateProperty() {
495
724
  return this.isHorizontal() ? "translateX" : "translateY";
496
725
  }
497
- #handleActiveIndicatorPosition() {
726
+ handleActiveIndicatorPosition() {
498
727
  if (this.showActiveIndicator && this.activeindicator) {
499
728
  this.animateActiveIndicator();
500
729
  }
501
730
  }
502
- #animateActiveIndicator() {
731
+ animateActiveIndicator() {
503
732
  const offsetProperty = this.isHorizontal() ? "offsetLeft" : "offsetTop";
504
733
  const currentOffset = this.activeIndicatorRef[offsetProperty];
505
734
  const currentGridValue = this.activeIndicatorRef.style[this.#getGridProperty()];
@@ -521,6 +750,27 @@ class Tabs extends Tabs$1 {
521
750
  });
522
751
  }
523
752
  }
753
+ __decorateClass([
754
+ attr
755
+ ], Tabs.prototype, "orientation");
756
+ __decorateClass([
757
+ attr
758
+ ], Tabs.prototype, "activeid");
759
+ __decorateClass([
760
+ observable
761
+ ], Tabs.prototype, "tabs");
762
+ __decorateClass([
763
+ observable
764
+ ], Tabs.prototype, "tabpanels");
765
+ __decorateClass([
766
+ attr({ mode: "boolean" })
767
+ ], Tabs.prototype, "activeindicator");
768
+ __decorateClass([
769
+ observable
770
+ ], Tabs.prototype, "activeIndicatorRef");
771
+ __decorateClass([
772
+ observable
773
+ ], Tabs.prototype, "showActiveIndicator");
524
774
  __decorateClass([
525
775
  observable
526
776
  ], Tabs.prototype, "tablist");
@@ -233,8 +233,9 @@ var __decorateClass = (decorators, target, key, kind) => {
233
233
  var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
234
234
  var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
235
235
  var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
236
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
236
237
  var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
237
- var _getFocusableEls, _TimePicker_instances, updateValueDueToUserInteraction_fn, _onFocusIn, _onFocusOut, _dismissOnClickOutside, openPopupIfPossible_fn, scrollToItem_fn;
238
+ var _clockChangeHandler, _clockChangeObserver, _getFocusableEls, _TimePicker_instances, updateValueDueToUserInteraction_fn, _onFocusIn, _onFocusOut, _dismissOnClickOutside, openPopupIfPossible_fn, scrollToItem_fn;
238
239
  const ValidTimeFilter = {
239
240
  fromView: (value) => {
240
241
  if (value && isValidTimeStr(value)) {
@@ -253,6 +254,19 @@ let TimePicker = class extends FormAssociatedTimePicker {
253
254
  this.readOnly = false;
254
255
  this.minutesStep = null;
255
256
  this.secondsStep = null;
257
+ // Reformat the presentation value when the clock changes
258
+ __privateAdd(this, _clockChangeHandler, {
259
+ handleChange: () => {
260
+ if (this.value) {
261
+ this._presentationValue = formatPresentationTime(
262
+ this.value,
263
+ this._displaySeconds,
264
+ this._use12hClock
265
+ );
266
+ }
267
+ }
268
+ });
269
+ __privateAdd(this, _clockChangeObserver);
256
270
  __privateAdd(this, _getFocusableEls, () => this.shadowRoot.querySelectorAll(`
257
271
  .dialog [tabindex="0"],
258
272
  .dialog .vwc-button:not(:disabled)
@@ -315,9 +329,6 @@ let TimePicker = class extends FormAssociatedTimePicker {
315
329
  get _displaySeconds() {
316
330
  return this.secondsStep !== null;
317
331
  }
318
- /**
319
- * @internal
320
- */
321
332
  get _use12hClock() {
322
333
  return this.clock ? this.clock === "12h" : this.locale.timePicker.defaultTo12HourClock;
323
334
  }
@@ -345,12 +356,18 @@ let TimePicker = class extends FormAssociatedTimePicker {
345
356
  document.addEventListener("click", __privateGet(this, _dismissOnClickOutside));
346
357
  this.addEventListener("focusin", __privateGet(this, _onFocusIn));
347
358
  this.addEventListener("focusout", __privateGet(this, _onFocusOut));
359
+ __privateSet(this, _clockChangeObserver, index.Observable.binding(
360
+ () => this._use12hClock,
361
+ __privateGet(this, _clockChangeHandler)
362
+ ));
363
+ __privateGet(this, _clockChangeObserver).observe(this, index.defaultExecutionContext);
348
364
  }
349
365
  disconnectedCallback() {
350
366
  super.disconnectedCallback();
351
367
  document.removeEventListener("click", __privateGet(this, _dismissOnClickOutside));
352
368
  this.removeEventListener("focusin", __privateGet(this, _onFocusIn));
353
369
  this.removeEventListener("focusout", __privateGet(this, _onFocusOut));
370
+ __privateGet(this, _clockChangeObserver).disconnect();
354
371
  }
355
372
  /**
356
373
  * @internal
@@ -647,6 +664,8 @@ let TimePicker = class extends FormAssociatedTimePicker {
647
664
  }
648
665
  }
649
666
  };
667
+ _clockChangeHandler = new WeakMap();
668
+ _clockChangeObserver = new WeakMap();
650
669
  _getFocusableEls = new WeakMap();
651
670
  _TimePicker_instances = new WeakSet();
652
671
  updateValueDueToUserInteraction_fn = function(newValue) {
@@ -689,6 +708,9 @@ __decorateClass([
689
708
  __decorateClass([
690
709
  index.attr({ converter: ValidTimeFilter })
691
710
  ], TimePicker.prototype, "max", 2);
711
+ __decorateClass([
712
+ index.volatile
713
+ ], TimePicker.prototype, "_use12hClock", 1);
692
714
  __decorateClass([
693
715
  index.observable
694
716
  ], TimePicker.prototype, "_popupOpen", 2);
@@ -1,4 +1,4 @@
1
- import { F as FoundationElement, D as DOM, a as attr, n as nullableNumberConverter, o as observable, h as html, r as registerFactory } from './index.js';
1
+ import { F as FoundationElement, O as Observable, g as defaultExecutionContext, D as DOM, a as attr, n as nullableNumberConverter, v as volatile, o as observable, h as html, r as registerFactory } from './index.js';
2
2
  import { T as TextField, a as textFieldRegistries } from './definition56.js';
3
3
  import { P as Popup, p as popupRegistries } from './definition64.js';
4
4
  import { c as Button, a as buttonRegistries } from './definition11.js';
@@ -231,8 +231,9 @@ var __decorateClass = (decorators, target, key, kind) => {
231
231
  var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
232
232
  var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
233
233
  var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
234
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
234
235
  var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
235
- var _getFocusableEls, _TimePicker_instances, updateValueDueToUserInteraction_fn, _onFocusIn, _onFocusOut, _dismissOnClickOutside, openPopupIfPossible_fn, scrollToItem_fn;
236
+ var _clockChangeHandler, _clockChangeObserver, _getFocusableEls, _TimePicker_instances, updateValueDueToUserInteraction_fn, _onFocusIn, _onFocusOut, _dismissOnClickOutside, openPopupIfPossible_fn, scrollToItem_fn;
236
237
  const ValidTimeFilter = {
237
238
  fromView: (value) => {
238
239
  if (value && isValidTimeStr(value)) {
@@ -251,6 +252,19 @@ let TimePicker = class extends FormAssociatedTimePicker {
251
252
  this.readOnly = false;
252
253
  this.minutesStep = null;
253
254
  this.secondsStep = null;
255
+ // Reformat the presentation value when the clock changes
256
+ __privateAdd(this, _clockChangeHandler, {
257
+ handleChange: () => {
258
+ if (this.value) {
259
+ this._presentationValue = formatPresentationTime(
260
+ this.value,
261
+ this._displaySeconds,
262
+ this._use12hClock
263
+ );
264
+ }
265
+ }
266
+ });
267
+ __privateAdd(this, _clockChangeObserver);
254
268
  __privateAdd(this, _getFocusableEls, () => this.shadowRoot.querySelectorAll(`
255
269
  .dialog [tabindex="0"],
256
270
  .dialog .vwc-button:not(:disabled)
@@ -313,9 +327,6 @@ let TimePicker = class extends FormAssociatedTimePicker {
313
327
  get _displaySeconds() {
314
328
  return this.secondsStep !== null;
315
329
  }
316
- /**
317
- * @internal
318
- */
319
330
  get _use12hClock() {
320
331
  return this.clock ? this.clock === "12h" : this.locale.timePicker.defaultTo12HourClock;
321
332
  }
@@ -343,12 +354,18 @@ let TimePicker = class extends FormAssociatedTimePicker {
343
354
  document.addEventListener("click", __privateGet(this, _dismissOnClickOutside));
344
355
  this.addEventListener("focusin", __privateGet(this, _onFocusIn));
345
356
  this.addEventListener("focusout", __privateGet(this, _onFocusOut));
357
+ __privateSet(this, _clockChangeObserver, Observable.binding(
358
+ () => this._use12hClock,
359
+ __privateGet(this, _clockChangeHandler)
360
+ ));
361
+ __privateGet(this, _clockChangeObserver).observe(this, defaultExecutionContext);
346
362
  }
347
363
  disconnectedCallback() {
348
364
  super.disconnectedCallback();
349
365
  document.removeEventListener("click", __privateGet(this, _dismissOnClickOutside));
350
366
  this.removeEventListener("focusin", __privateGet(this, _onFocusIn));
351
367
  this.removeEventListener("focusout", __privateGet(this, _onFocusOut));
368
+ __privateGet(this, _clockChangeObserver).disconnect();
352
369
  }
353
370
  /**
354
371
  * @internal
@@ -645,6 +662,8 @@ let TimePicker = class extends FormAssociatedTimePicker {
645
662
  }
646
663
  }
647
664
  };
665
+ _clockChangeHandler = new WeakMap();
666
+ _clockChangeObserver = new WeakMap();
648
667
  _getFocusableEls = new WeakMap();
649
668
  _TimePicker_instances = new WeakSet();
650
669
  updateValueDueToUserInteraction_fn = function(newValue) {
@@ -687,6 +706,9 @@ __decorateClass([
687
706
  __decorateClass([
688
707
  attr({ converter: ValidTimeFilter })
689
708
  ], TimePicker.prototype, "max", 2);
709
+ __decorateClass([
710
+ volatile
711
+ ], TimePicker.prototype, "_use12hClock", 1);
690
712
  __decorateClass([
691
713
  observable
692
714
  ], TimePicker.prototype, "_popupOpen", 2);
@@ -7,7 +7,7 @@ const index$1 = require('./index2.cjs');
7
7
  const when = require('./when.cjs');
8
8
  const classNames = require('./class-names.cjs');
9
9
 
10
- const styles = ":host{display:var(--_popup-display, inline)}:host([slotted-anchor]){--_popup-display: contents}.content-wrapper{width:var(--toggletip-inline-size, auto);padding:16px;max-inline-size:var(--toggletip-max-inline-size, 30ch)}.headline{font:var(--vvd-typography-base-bold)}.action-items{display:flex;justify-content:flex-end;gap:10px}::slotted([slot=action-items]){margin-block-start:16px}";
10
+ const styles = ":host :host{display:var(--_popup-display, inline)}:host :host([slotted-anchor]){--_popup-display: contents}.content-wrapper{width:var(--toggletip-inline-size, auto);padding:16px;max-inline-size:var(--toggletip-max-inline-size, 30ch)}.headline{font:var(--vvd-typography-base-bold)}.action-items{display:flex;justify-content:flex-end;gap:10px}::slotted([slot=action-items]){margin-block-start:16px}";
11
11
 
12
12
  var __defProp = Object.defineProperty;
13
13
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -5,7 +5,7 @@ import { h as handleEscapeKeyAndStopPropogation } from './index2.js';
5
5
  import { w as when } from './when.js';
6
6
  import { c as classNames } from './class-names.js';
7
7
 
8
- const styles = ":host{display:var(--_popup-display, inline)}:host([slotted-anchor]){--_popup-display: contents}.content-wrapper{width:var(--toggletip-inline-size, auto);padding:16px;max-inline-size:var(--toggletip-max-inline-size, 30ch)}.headline{font:var(--vvd-typography-base-bold)}.action-items{display:flex;justify-content:flex-end;gap:10px}::slotted([slot=action-items]){margin-block-start:16px}";
8
+ const styles = ":host :host{display:var(--_popup-display, inline)}:host :host([slotted-anchor]){--_popup-display: contents}.content-wrapper{width:var(--toggletip-inline-size, auto);padding:16px;max-inline-size:var(--toggletip-max-inline-size, 30ch)}.headline{font:var(--vvd-typography-base-bold)}.action-items{display:flex;justify-content:flex-end;gap:10px}::slotted([slot=action-items]){margin-block-start:16px}";
9
9
 
10
10
  var __defProp = Object.defineProperty;
11
11
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -6,7 +6,7 @@ const anchored = require('./anchored.cjs');
6
6
  const index$1 = require('./index2.cjs');
7
7
  const classNames = require('./class-names.cjs');
8
8
 
9
- const styles = ":host{display:var(--_popup-display, inline)}:host([slotted-anchor]){--_popup-display: contents}.control{pointer-events:none}.tooltip{width:var(--tooltip-inline-size, auto);max-inline-size:var(--tooltip-max-inline-size, 30ch)}.tooltip-text{padding:8px 12px;color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base-bold)}";
9
+ const styles = ":host :host{display:var(--_popup-display, inline)}:host :host([slotted-anchor]){--_popup-display: contents}.control{pointer-events:none}.tooltip{width:var(--tooltip-inline-size, auto);max-inline-size:var(--tooltip-max-inline-size, 30ch)}.tooltip-text{padding:8px 12px;color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base-bold)}";
10
10
 
11
11
  var __defProp = Object.defineProperty;
12
12
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -4,7 +4,7 @@ import { b as anchored, a as anchorSlotTemplateFactory } from './anchored.js';
4
4
  import { h as handleEscapeKeyAndStopPropogation } from './index2.js';
5
5
  import { c as classNames } from './class-names.js';
6
6
 
7
- const styles = ":host{display:var(--_popup-display, inline)}:host([slotted-anchor]){--_popup-display: contents}.control{pointer-events:none}.tooltip{width:var(--tooltip-inline-size, auto);max-inline-size:var(--tooltip-max-inline-size, 30ch)}.tooltip-text{padding:8px 12px;color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base-bold)}";
7
+ const styles = ":host :host{display:var(--_popup-display, inline)}:host :host([slotted-anchor]){--_popup-display: contents}.control{pointer-events:none}.tooltip{width:var(--tooltip-inline-size, auto);max-inline-size:var(--tooltip-max-inline-size, 30ch)}.tooltip-text{padding:8px 12px;color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base-bold)}";
8
8
 
9
9
  var __defProp = Object.defineProperty;
10
10
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -3,7 +3,7 @@
3
3
  const index = require('./index.cjs');
4
4
  const treeItem = require('./tree-item.cjs');
5
5
  const dom = require('./dom.cjs');
6
- const keyCodes = require('./key-codes.cjs');
6
+ const keyCodes = require('./key-codes2.cjs');
7
7
  const ref = require('./ref.cjs');
8
8
  const slotted = require('./slotted.cjs');
9
9
  const classNames = require('./class-names.cjs');
@@ -1,7 +1,7 @@
1
1
  import { F as FoundationElement, D as DOM, _ as __decorate, a as attr, o as observable, h as html, r as registerFactory } from './index.js';
2
2
  import { T as TreeItem$1, i as isTreeItemElement } from './tree-item.js';
3
3
  import { i as isHTMLElement, g as getDisplayedNodes } from './dom.js';
4
- import { k as keyEnter, e as keyArrowUp, f as keyArrowDown, h as keyArrowRight, i as keyArrowLeft, d as keyEnd, g as keyHome } from './key-codes.js';
4
+ import { k as keyEnter, e as keyArrowUp, f as keyArrowDown, h as keyArrowRight, i as keyArrowLeft, d as keyEnd, g as keyHome } from './key-codes2.js';
5
5
  import { r as ref } from './ref.js';
6
6
  import { s as slotted } from './slotted.js';
7
7
  import { c as classNames } from './class-names.js';