@designsystem-se/af 39.2.1 → 39.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/components/digi-bar-chart.js +67 -17
  2. package/components/digi-calendar-datepicker.js +1 -1
  3. package/components/digi-calendar-week-view.js +51 -6
  4. package/components/digi-calendar.js +1 -1
  5. package/components/digi-chart-line.js +57 -14
  6. package/components/digi-navigation-vertical-menu.js +27 -13
  7. package/components/digi-tablist.js +36 -13
  8. package/components/{p-CrUxQ9d0.js → p-C5A2t93y.js} +1 -1
  9. package/dist/cjs/{calendar-week-view-heading-level.enum-NEkm5SUq.js → calendar-week-view-heading-level.enum-BI2f9bbk.js} +7 -0
  10. package/dist/cjs/digi-arbetsformedlingen.cjs.js +1 -1
  11. package/dist/cjs/{digi-button_5.cjs.entry.js → digi-badge-notification_8.cjs.entry.js} +436 -7
  12. package/dist/cjs/digi-bar-chart.cjs.entry.js +67 -17
  13. package/dist/cjs/digi-calendar-datepicker.cjs.entry.js +1 -2
  14. package/dist/cjs/digi-calendar_2.cjs.entry.js +1 -1
  15. package/dist/cjs/digi-chart-line.cjs.entry.js +57 -14
  16. package/dist/cjs/digi-code-block_3.cjs.entry.js +1 -2
  17. package/dist/cjs/digi-dialog.cjs.entry.js +1 -2
  18. package/dist/cjs/digi-footer.cjs.entry.js +1 -2
  19. package/dist/cjs/digi-form-error-list.cjs.entry.js +1 -2
  20. package/dist/cjs/digi-form-receipt.cjs.entry.js +1 -2
  21. package/dist/cjs/digi-form-select-filter.cjs.entry.js +1 -2
  22. package/dist/cjs/digi-header-navigation.cjs.entry.js +1 -2
  23. package/dist/cjs/digi-header.cjs.entry.js +1 -2
  24. package/dist/cjs/digi-navigation-pagination.cjs.entry.js +1 -2
  25. package/dist/cjs/digi-navigation-vertical-menu.cjs.entry.js +27 -13
  26. package/dist/cjs/digi-notification-alert.cjs.entry.js +1 -2
  27. package/dist/cjs/digi-notification-error-page.cjs.entry.js +1 -2
  28. package/dist/cjs/digi-title-logo.cjs.entry.js +1 -2
  29. package/dist/cjs/digi-tools-feedback.cjs.entry.js +1 -2
  30. package/dist/cjs/index-Cn1hHaSy.js +2 -14
  31. package/dist/cjs/index.cjs.js +6 -7
  32. package/dist/cjs/loader.cjs.js +1 -1
  33. package/dist/collection/components/_calendar/calendar/calendar.css +5 -6
  34. package/dist/collection/components/_calendar/week-view/calendar-week-view.js +53 -8
  35. package/dist/collection/components/_chart/bar-chart/bar-chart.css +1 -1
  36. package/dist/collection/components/_chart/bar-chart/bar-chart.js +66 -16
  37. package/dist/collection/components/_chart/chart-line/chart-line.js +57 -14
  38. package/dist/collection/components/_navigation/navigation-tablist/navigation-tablist.js +36 -13
  39. package/dist/collection/components/_navigation/navigation-vertical-menu/navigation-vertical-menu.js +27 -13
  40. package/dist/collection/design-tokens/components/_logo.variables.scss +2 -0
  41. package/dist/digi-arbetsformedlingen/digi-arbetsformedlingen.esm.js +1 -1
  42. package/dist/digi-arbetsformedlingen/index.esm.js +1 -1
  43. package/dist/digi-arbetsformedlingen/p-0f7e995a.entry.js +1 -0
  44. package/dist/digi-arbetsformedlingen/p-26f6a310.entry.js +1 -0
  45. package/dist/digi-arbetsformedlingen/p-3b42582a.entry.js +1 -0
  46. package/dist/digi-arbetsformedlingen/p-4384644b.entry.js +1 -0
  47. package/dist/digi-arbetsformedlingen/p-47513f97.entry.js +1 -0
  48. package/dist/digi-arbetsformedlingen/p-569c628c.entry.js +1 -0
  49. package/dist/digi-arbetsformedlingen/p-668d38d9.entry.js +1 -0
  50. package/dist/digi-arbetsformedlingen/p-66f34ca5.entry.js +1 -0
  51. package/dist/digi-arbetsformedlingen/p-6cb1c6ea.entry.js +1 -0
  52. package/dist/digi-arbetsformedlingen/p-6e256f0c.entry.js +1 -0
  53. package/dist/digi-arbetsformedlingen/p-71a8478d.entry.js +1 -0
  54. package/dist/digi-arbetsformedlingen/p-9df345c4.entry.js +1 -0
  55. package/dist/digi-arbetsformedlingen/p-BBOpiDGx.js +1 -0
  56. package/dist/digi-arbetsformedlingen/p-a1deddb1.entry.js +1 -0
  57. package/dist/digi-arbetsformedlingen/p-beebbc90.entry.js +1 -0
  58. package/dist/digi-arbetsformedlingen/{p-ee58a938.entry.js → p-c7ade486.entry.js} +1 -1
  59. package/dist/digi-arbetsformedlingen/p-d065e751.entry.js +1 -0
  60. package/dist/digi-arbetsformedlingen/p-d150094c.entry.js +1 -0
  61. package/dist/digi-arbetsformedlingen/p-df8efa59.entry.js +1 -0
  62. package/dist/digi-arbetsformedlingen/p-e2b0b070.entry.js +1 -0
  63. package/dist/esm/{calendar-week-view-heading-level.enum-DH_-wpLB.js → calendar-week-view-heading-level.enum-BBOpiDGx.js} +8 -1
  64. package/dist/esm/digi-arbetsformedlingen.js +1 -1
  65. package/dist/esm/{digi-button_5.entry.js → digi-badge-notification_8.entry.js} +435 -9
  66. package/dist/esm/digi-bar-chart.entry.js +67 -17
  67. package/dist/esm/digi-calendar-datepicker.entry.js +1 -2
  68. package/dist/esm/digi-calendar_2.entry.js +1 -1
  69. package/dist/esm/digi-chart-line.entry.js +57 -14
  70. package/dist/esm/digi-code-block_3.entry.js +1 -2
  71. package/dist/esm/digi-dialog.entry.js +1 -2
  72. package/dist/esm/digi-footer.entry.js +1 -2
  73. package/dist/esm/digi-form-error-list.entry.js +1 -2
  74. package/dist/esm/digi-form-receipt.entry.js +1 -2
  75. package/dist/esm/digi-form-select-filter.entry.js +1 -2
  76. package/dist/esm/digi-header-navigation.entry.js +1 -2
  77. package/dist/esm/digi-header.entry.js +1 -2
  78. package/dist/esm/digi-navigation-pagination.entry.js +1 -2
  79. package/dist/esm/digi-navigation-vertical-menu.entry.js +27 -13
  80. package/dist/esm/digi-notification-alert.entry.js +1 -2
  81. package/dist/esm/digi-notification-error-page.entry.js +1 -2
  82. package/dist/esm/digi-title-logo.entry.js +1 -2
  83. package/dist/esm/digi-tools-feedback.entry.js +1 -2
  84. package/dist/esm/index-BnKuq1L7.js +2 -14
  85. package/dist/esm/index.js +1 -2
  86. package/dist/esm/loader.js +1 -1
  87. package/dist/types/components/_calendar/week-view/calendar-week-view.d.ts +4 -2
  88. package/dist/types/components/_chart/bar-chart/bar-chart.d.ts +4 -2
  89. package/dist/types/components/_chart/chart-line/chart-line.d.ts +3 -1
  90. package/dist/types/components/_navigation/navigation-tablist/navigation-tablist.d.ts +4 -2
  91. package/dist/types/components/_navigation/navigation-vertical-menu/navigation-vertical-menu.d.ts +7 -2
  92. package/dist/types/components.d.ts +3 -3
  93. package/hydrate/index.js +236 -64
  94. package/hydrate/index.mjs +236 -64
  95. package/package.json +1 -1
  96. package/dist/cjs/badge-notification-shape.enum-CEyEo2G5.js +0 -8
  97. package/dist/cjs/digi-badge-notification.cjs.entry.js +0 -65
  98. package/dist/cjs/digi-tablist-panel.cjs.entry.js +0 -20
  99. package/dist/cjs/digi-tablist.cjs.entry.js +0 -289
  100. package/dist/digi-arbetsformedlingen/p-0394e694.entry.js +0 -1
  101. package/dist/digi-arbetsformedlingen/p-09b52191.entry.js +0 -1
  102. package/dist/digi-arbetsformedlingen/p-0c88f210.entry.js +0 -1
  103. package/dist/digi-arbetsformedlingen/p-151248bf.entry.js +0 -1
  104. package/dist/digi-arbetsformedlingen/p-26099889.entry.js +0 -1
  105. package/dist/digi-arbetsformedlingen/p-52a27991.entry.js +0 -1
  106. package/dist/digi-arbetsformedlingen/p-5ee5766d.entry.js +0 -1
  107. package/dist/digi-arbetsformedlingen/p-626c1bf5.entry.js +0 -1
  108. package/dist/digi-arbetsformedlingen/p-674a7a94.entry.js +0 -1
  109. package/dist/digi-arbetsformedlingen/p-6c1fd994.entry.js +0 -1
  110. package/dist/digi-arbetsformedlingen/p-7682ad6f.entry.js +0 -1
  111. package/dist/digi-arbetsformedlingen/p-7f180ce2.entry.js +0 -1
  112. package/dist/digi-arbetsformedlingen/p-88bec555.entry.js +0 -1
  113. package/dist/digi-arbetsformedlingen/p-CKoZU0-H.js +0 -1
  114. package/dist/digi-arbetsformedlingen/p-DH_-wpLB.js +0 -1
  115. package/dist/digi-arbetsformedlingen/p-a556608d.entry.js +0 -1
  116. package/dist/digi-arbetsformedlingen/p-b3410fbd.entry.js +0 -1
  117. package/dist/digi-arbetsformedlingen/p-e002ceb8.entry.js +0 -1
  118. package/dist/digi-arbetsformedlingen/p-e6ee5a17.entry.js +0 -1
  119. package/dist/digi-arbetsformedlingen/p-ec6dd177.entry.js +0 -1
  120. package/dist/digi-arbetsformedlingen/p-eee1b91f.entry.js +0 -1
  121. package/dist/digi-arbetsformedlingen/p-fea63204.entry.js +0 -1
  122. package/dist/digi-arbetsformedlingen/p-ff73fa2f.entry.js +0 -1
  123. package/dist/esm/badge-notification-shape.enum-CKoZU0-H.js +0 -8
  124. package/dist/esm/digi-badge-notification.entry.js +0 -63
  125. package/dist/esm/digi-tablist-panel.entry.js +0 -18
  126. package/dist/esm/digi-tablist.entry.js +0 -287
@@ -1,287 +0,0 @@
1
- import { r as registerInstance, c as createEvent, h, a as Host } from './index-BnKuq1L7.js';
2
- import { O as OverflowMode, D as Direction } from './navigation-tablist.types-Ua3MxeBh.js';
3
-
4
- const navigationTablistCss = () => `.sc-digi-tablist-h{--tab-active-border-color:var(--digi--color--marking--navigation--selected);--tab-text-color:var(--digi--color--text--primary);--tab-icon-primary--color:var(--digi--color--icon--primary);--tab-icon-primary--color-hover:var(--digi--color--icon--primary);--tab-icon-primary--color-active:var(--digi--color--icon--primary)}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist{font-family:var(--digi--global--typography--font-family--default);color:var(--digi--color--text--primary);position:relative;display:flex;gap:1rem;background-color:var(--digi--color--background--primary);margin-bottom:2.875rem;border-bottom:1px solid var(--digi--color--divider--secondary)}.sc-digi-tablist-h .digi-tablist--overflow-scroll.sc-digi-tablist .control-wrapper.sc-digi-tablist{display:none !important}.sc-digi-tablist-h .digi-tablist--overflow-scroll.sc-digi-tablist [role=tablist].sc-digi-tablist{overflow-x:auto}.sc-digi-tablist-h .digi-tablist--overflow-controls.sc-digi-tablist [role=tablist].sc-digi-tablist{overflow-x:hidden}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist button.sc-digi-tablist{background:none;border:none;padding:0;font-family:inherit}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist [role=tablist].sc-digi-tablist{display:flex;font-weight:bold;flex-grow:1;width:100%}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .control-wrapper.sc-digi-tablist{position:absolute;z-index:20;display:flex;align-items:center;justify-content:center;height:100%}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .control-wrapper.sc-digi-tablist .tab-control-button.sc-digi-tablist{display:flex;align-items:center;justify-content:center;background-color:var(--digi--color--background--interactive--default--tertiary);border-radius:6px;min-height:auto;padding:0.75rem;aspect-ratio:1;cursor:pointer}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .control-wrapper.sc-digi-tablist .tab-control-button.sc-digi-tablist digi-icon-chevron-right.sc-digi-tablist,.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .control-wrapper.sc-digi-tablist .tab-control-button.sc-digi-tablist digi-icon-chevron-left.sc-digi-tablist{--digi--icon--color:var(--digi--color--icon--cta)}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.sc-digi-tablist{cursor:pointer;white-space:nowrap}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.sc-digi-tablist .content-wrapper.sc-digi-tablist{position:relative;height:2.75rem;display:flex;flex-direction:column;transition:background-color 0.1s linear}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.sc-digi-tablist .tablist-content.sc-digi-tablist{flex:1;display:flex;padding-right:0.75rem;padding-left:0.75rem}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.sc-digi-tablist [class*=digi-icon-].sc-digi-tablist:not(svg){--digi--icon--width:1rem;--digi--icon--color:var(--tab-icon-primary--color);padding-right:var(--digi--gutter--smaller)}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.sc-digi-tablist digi-badge-notification.sc-digi-tablist{margin-left:-0.125rem}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.sc-digi-tablist .title.sc-digi-tablist{font-size:1rem;flex-direction:column;display:flex;align-items:center;justify-content:center;font-weight:normal;color:var(--tab-text-color)}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.sc-digi-tablist .title.sc-digi-tablist::after{content:attr(data-text);content:attr(data-text)/"";height:0;visibility:hidden;overflow:hidden;user-select:none;pointer-events:none;font-weight:bold}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.sc-digi-tablist .indicator.sc-digi-tablist{height:0.25rem;width:100%;visibility:hidden;background-color:var(--tab-active-border-color)}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.sc-digi-tablist:focus{outline:none;box-shadow:none}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.sc-digi-tablist:focus-visible{z-index:10;outline:2px solid black;outline-offset:-3px;box-shadow:0px 0px 0px 5px inset white}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.sc-digi-tablist:hover:not(.is-active) .title.sc-digi-tablist{color:var(--digi--color--text--interactive--primary);text-decoration:underline}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.sc-digi-tablist:hover:not(.is-active) [class*=digi-icon-].sc-digi-tablist:not(svg){--tab-icon-primary--color:var(--tab-icon-primary--color-hover)}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.is-active.sc-digi-tablist .title.sc-digi-tablist{font-weight:bold}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.is-active.sc-digi-tablist svg.sc-digi-tablist{transform:translateX(-0.125rem)}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.is-active.sc-digi-tablist [class*=digi-icon-].sc-digi-tablist:not(svg){--tab-icon-primary--color:var(--tab-icon-primary--color-active)}.sc-digi-tablist-h .digi-tablist.sc-digi-tablist .digi-tab.is-active.sc-digi-tablist .indicator.sc-digi-tablist{visibility:visible}`;
5
-
6
- const NavigationTablist = class {
7
- constructor(hostRef) {
8
- registerInstance(this, hostRef);
9
- this.afTabChange = createEvent(this, "afTabChange", 7);
10
- this.afTabFocusChange = createEvent(this, "afTabFocusChange", 7);
11
- this.tabRefs = {};
12
- this.activeTab = 0;
13
- this.selectedTab = 0;
14
- this.windowTab = 0;
15
- this.tabs = [];
16
- this.listOverflows = false;
17
- this.showPrev = false;
18
- this.showNext = false;
19
- /**
20
- * Bestämmer beteende då flikar överflödar
21
- * * @en Set overflow behaviour
22
- */
23
- this.afOverflowMode = OverflowMode.Controls;
24
- this.handleResize = () => {
25
- if (!this.tablistRef)
26
- return;
27
- // Ensure we measure after any layout/paint from the resize
28
- if (this._requestAnimationFrame)
29
- cancelAnimationFrame(this._requestAnimationFrame);
30
- this._requestAnimationFrame = requestAnimationFrame(() => {
31
- var _a, _b;
32
- const el = this.tablistRef;
33
- const containerWidth = el.clientWidth;
34
- const contentWidth = el.scrollWidth;
35
- // Tolerance ≈ 1 physical pixel to absorb zoom/subpixel jitter
36
- const tolerance = 1 / ((window === null || window === void 0 ? void 0 : window.devicePixelRatio) || 1);
37
- // Guard against div-by-zero
38
- const tabsCount = Math.max((_b = (_a = this.tabs) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0, 1);
39
- const avgTabWidth = contentWidth / tabsCount;
40
- // How many whole tabs fit? Nudge by tolerance to avoid off-by-one at zoom edges
41
- const tabsPerWindow = Math.floor((containerWidth + tolerance) / avgTabWidth);
42
- this.tabsPerWindow = Math.max(1, Math.min(tabsPerWindow, tabsCount));
43
- // Ensure windowTab stays within valid bounds after resize
44
- const maxValidWindowTab = Math.max(0, tabsCount - this.tabsPerWindow);
45
- if (this.windowTab > maxValidWindowTab) {
46
- this.windowTab = maxValidWindowTab;
47
- }
48
- // Overflow check with tolerance
49
- this.listOverflows = contentWidth - containerWidth > tolerance;
50
- // (Optional) if you have left/right “handles”, compute visibility too:
51
- this.showPrev = el.scrollLeft > tolerance;
52
- this.showNext =
53
- el.scrollLeft + el.clientWidth < el.scrollWidth - tolerance;
54
- });
55
- };
56
- }
57
- handleKey(e) {
58
- if (this.focusCaptured()) {
59
- let captureKey = true;
60
- switch (e.key) {
61
- case ' ':
62
- case 'Enter':
63
- return this.setActiveTabAndFocus(this.selectedTab);
64
- case 'ArrowLeft':
65
- if (e.shiftKey) {
66
- this.handleTabControl(Direction.Previous);
67
- }
68
- else {
69
- this.focusTab(this.selectedTab - 1);
70
- }
71
- break;
72
- case 'ArrowRight':
73
- if (e.shiftKey) {
74
- this.handleTabControl(Direction.Next);
75
- }
76
- else {
77
- this.focusTab(this.selectedTab + 1);
78
- }
79
- break;
80
- case 'Home':
81
- if (e.shiftKey) {
82
- return this.focusTab(0);
83
- }
84
- else {
85
- return this.moveWindow(0);
86
- }
87
- case 'End':
88
- if (e.shiftKey) {
89
- return this.focusTab(this.tabs.length - 1);
90
- }
91
- else {
92
- return this.moveWindow(this.tabs.length - 1);
93
- }
94
- default:
95
- captureKey = false;
96
- }
97
- if (captureKey) {
98
- e.preventDefault();
99
- }
100
- }
101
- }
102
- syncPanels() {
103
- // side-effect
104
- if (this.panelsRef != null) {
105
- const panels = this.panelsRef.querySelectorAll(':scope>digi-tablist-panel');
106
- for (let i = 0; i < panels.length; i++) {
107
- const panel = panels[i];
108
- const showPanel = panel.tab === this.tabs[this.activeTab].id;
109
- panel.isVisible = showPanel;
110
- }
111
- }
112
- }
113
- handleTabPropChange(tabId) {
114
- this.setActiveTabById(tabId);
115
- }
116
- syncControls() {
117
- const tabGroup = Math.floor(this.windowTab / this.tabsPerWindow);
118
- const numberOfGroups = Math.ceil(this.tabs.length / this.tabsPerWindow);
119
- this.showPrev = tabGroup > 0;
120
- this.showNext = tabGroup < numberOfGroups - 1;
121
- }
122
- syncWindow(tabIdx) {
123
- const tab = this.tabs[tabIdx];
124
- const tabRef = this.tabRefs[tab.id];
125
- const listBox = this.tablistRef.getBoundingClientRect();
126
- const tabBox = tabRef.getBoundingClientRect();
127
- const centeredOffset = tabRef.offsetLeft - listBox.width / 2 + tabBox.width / 2;
128
- const maxLeft = this.tablistRef.scrollWidth - listBox.width;
129
- const left = Math.max(Math.min(centeredOffset, maxLeft), 0);
130
- this.tablistRef.scrollTo({
131
- left,
132
- behavior: 'smooth'
133
- });
134
- }
135
- syncFocus(tabIdx) {
136
- const tabRef = this.tabRefs[this.tabs[tabIdx].id];
137
- tabRef.focus({ preventScroll: true });
138
- this.windowTab = tabIdx;
139
- }
140
- setupTabs(tabs) {
141
- if (typeof tabs === 'string') {
142
- this.tabs = JSON.parse(tabs);
143
- }
144
- else if (Array.isArray(tabs)) {
145
- this.tabs = tabs;
146
- }
147
- else {
148
- throw new Error('Invalid format or no tabs supplied');
149
- }
150
- }
151
- setActiveTabById(id) {
152
- const tabIdx = this.tabs.findIndex((tab) => tab.id === id);
153
- if (tabIdx > -1) {
154
- this.activeTab = tabIdx;
155
- }
156
- }
157
- setupInitialTab() {
158
- if (this.afActiveTab != null) {
159
- return this.setActiveTabById(this.afActiveTab);
160
- }
161
- else if (this.afInitialTab != null) {
162
- return this.setActiveTabById(this.afInitialTab);
163
- }
164
- }
165
- setupResizeHandler() {
166
- this.resizeObserver = new ResizeObserver(() => this.handleResize());
167
- this.resizeObserver.observe(this.tablistRef);
168
- }
169
- handleTabChange(tab) {
170
- const idx = this.tabs.findIndex(({ id }) => id === tab.id);
171
- this.setActiveTabAndFocus(idx);
172
- this.afTabChange.emit(tab);
173
- }
174
- handleTabControl(direction) {
175
- // Calculate the current window group
176
- const currentGroup = Math.floor(this.windowTab / this.tabsPerWindow);
177
- const totalGroups = Math.ceil(this.tabs.length / this.tabsPerWindow);
178
- let newGroup;
179
- if (direction === Direction.Next) {
180
- newGroup = Math.min(currentGroup + 1, totalGroups - 1);
181
- }
182
- else {
183
- newGroup = Math.max(currentGroup - 1, 0);
184
- }
185
- // Move to the first tab of the target group
186
- const newWindowTab = newGroup * this.tabsPerWindow;
187
- this.moveWindow(newWindowTab);
188
- }
189
- setActiveTabAndFocus(tabIdx) {
190
- this.activeTab = tabIdx;
191
- this.focusTab(tabIdx);
192
- }
193
- focusTab(tabIdx) {
194
- this.selectedTab = this.nextTabIdx(tabIdx);
195
- const currentTab = this.tabs[this.selectedTab];
196
- this.afTabFocusChange.emit(currentTab);
197
- }
198
- moveWindow(tabIdx) {
199
- tabIdx = Math.max(0, Math.min(tabIdx, this.tabs.length - 1));
200
- this.windowTab = tabIdx;
201
- }
202
- nextTabIdx(tabIdx) {
203
- if (tabIdx >= this.tabs.length) {
204
- return 0;
205
- }
206
- else if (tabIdx < 0) {
207
- return this.tabs.length - 1;
208
- }
209
- return tabIdx;
210
- }
211
- focusCaptured() {
212
- return this.tabs.some((tab) => this.tabRefs[tab.id] === document.activeElement);
213
- }
214
- componentWillLoad() {
215
- this.setupTabs(this.afTabs);
216
- this.setupInitialTab();
217
- }
218
- componentDidLoad() {
219
- var _a, _b, _c;
220
- // Also listen to window resize for viewport zoom changes
221
- if (window) {
222
- window.addEventListener('resize', this.handleResize, { passive: true });
223
- }
224
- // Recalculate once fonts finish loading (text width changes with webfonts)
225
- (_c = (_b = (_a = document.fonts) === null || _a === void 0 ? void 0 : _a.ready) === null || _b === void 0 ? void 0 : _b.then) === null || _c === void 0 ? void 0 : _c.call(_b, () => this.handleResize());
226
- this.setupResizeHandler();
227
- this.handleResize();
228
- this.syncPanels();
229
- this.syncControls();
230
- }
231
- disconnectedCallback() {
232
- var _a;
233
- if (window) {
234
- window.removeEventListener('resize', this.handleResize);
235
- }
236
- (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
237
- if (this._requestAnimationFrame)
238
- cancelAnimationFrame(this._requestAnimationFrame);
239
- }
240
- render() {
241
- return (h(Host, { key: '8bdab05cd034b9940aefcb9f38b16d09b6f0b0c7' }, h("div", { key: '2d2266a9600dcc5817130ed4ece38868779e0b69', class: {
242
- 'digi-tablist': true,
243
- 'digi-tablist--overflow-scroll': this.afOverflowMode === OverflowMode.Scroll,
244
- 'digi-tablist--overflow-controls': this.afOverflowMode === OverflowMode.Controls
245
- } }, h("div", { key: 'a96cd5d9a2eec5b2b52f0d1a00b2810c28e8d4bd', class: "control-wrapper", style: {
246
- left: '0',
247
- visibility: this.showPrev ? 'visible' : 'hidden'
248
- } }, h("button", { key: '7a9810781c300bd44aa7ce3f3f76f651b1799023', tabIndex: -1, type: "button", "aria-hidden": "true", class: { 'tab-control-button': true }, onClick: () => this.handleTabControl(Direction.Previous) }, h("digi-icon-chevron-left", { key: '8f65c019aa2a60f8d10025c147ad2448d30cdf1d' }))), h("div", { key: '7be08fe744f17f71fab7358d63d010f17e5c977d', role: "tablist", ref: (ref) => (this.tablistRef = ref), "aria-labelledby": this.afAriaLabelledby, "aria-label": this.afAriaLabel }, this.tabs.map((tab) => {
249
- const focusable = tab.id === this.tabs[this.selectedTab].id;
250
- const isActive = tab.id === this.tabs[this.activeTab].id;
251
- const Icon = `digi-icon-${tab.icon}`;
252
- const badgeValue = tab.badgeValue;
253
- return (h("button", { ref: (ref) => (this.tabRefs[tab.id] = ref), class: {
254
- 'digi-tab': true,
255
- 'is-active': isActive
256
- }, id: `tab-${tab.id}`, role: "tab", type: "button", tabindex: focusable ? '0' : '-1', "aria-label": tab.ariaLabel, "aria-selected": isActive.toString(), "aria-controls": `tabpanel-${tab.id}`, onClick: () => this.handleTabChange(tab) }, h("div", { class: "content-wrapper" }, h("span", { class: "tablist-content" }, tab.icon && h(Icon, { "aria-hidden": "true" }), h("span", { class: "title", "data-text": tab.title }, tab.title), tab.badgeValue && (h("digi-badge-notification", { afValue: badgeValue, "aria-hidden": "true" }))), h("div", { class: "indicator" }))));
257
- })), h("div", { key: 'b79ea56eb945fe5c4b2e34529d8b1985018ac46c', class: "control-wrapper", style: {
258
- right: '0',
259
- visibility: this.showNext ? 'visible' : 'hidden'
260
- } }, h("button", { key: '3d581fe07f9591f21fef85e700259d3b44332631', tabIndex: -1, type: "button", "aria-hidden": "true", class: { 'tab-control-button': true }, onClick: () => this.handleTabControl(Direction.Next) }, h("digi-icon-chevron-right", { key: '1f3a564d4eff7851ad13901c492e663c5c43d384' })))), h("div", { key: '2cd9aa7d409b36395febee9dfd26eb6e82b02f35', ref: (ref) => (this.panelsRef = ref), role: "presentation" }, h("slot", { key: 'b9f82031b00032dfb1df2358546a8a35934033a0' }))));
261
- }
262
- static get watchers() { return {
263
- "activeTab": [{
264
- "syncPanels": 0
265
- }],
266
- "afActiveTab": [{
267
- "handleTabPropChange": 0
268
- }],
269
- "windowTab": [{
270
- "syncControls": 0
271
- }, {
272
- "syncWindow": 0
273
- }],
274
- "listOverflows": [{
275
- "syncControls": 0
276
- }],
277
- "selectedTab": [{
278
- "syncFocus": 0
279
- }],
280
- "afTabs": [{
281
- "setupTabs": 0
282
- }]
283
- }; }
284
- };
285
- NavigationTablist.style = navigationTablistCss();
286
-
287
- export { NavigationTablist as digi_tablist };