@vonage/vivid 3.51.0 → 3.53.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.
Files changed (340) hide show
  1. package/README.md +1 -1
  2. package/accordion/index.cjs +1 -1
  3. package/accordion/index.js +1 -1
  4. package/accordion-item/index.cjs +1 -1
  5. package/accordion-item/index.js +1 -1
  6. package/alert/index.cjs +3 -3
  7. package/alert/index.js +3 -3
  8. package/appearance-ui/index.cjs +19 -11
  9. package/appearance-ui/index.js +19 -11
  10. package/audio-player/index.cjs +4 -3
  11. package/audio-player/index.js +4 -3
  12. package/avatar/index.cjs +1 -1
  13. package/avatar/index.js +1 -1
  14. package/badge/index.cjs +1 -1
  15. package/badge/index.js +1 -1
  16. package/banner/index.cjs +2 -2
  17. package/banner/index.js +2 -2
  18. package/breadcrumb-item/index.cjs +1 -1
  19. package/breadcrumb-item/index.js +1 -1
  20. package/button/index.cjs +2 -2
  21. package/button/index.js +2 -2
  22. package/card/index.cjs +2 -2
  23. package/card/index.js +2 -2
  24. package/checkbox/index.cjs +3 -2
  25. package/checkbox/index.js +3 -2
  26. package/combobox/index.cjs +5 -8
  27. package/combobox/index.js +5 -8
  28. package/custom-elements.json +2310 -769
  29. package/data-grid/index.cjs +1 -1
  30. package/data-grid/index.js +1 -1
  31. package/date-picker/index.cjs +7 -9
  32. package/date-picker/index.js +7 -9
  33. package/date-range-picker/index.cjs +7 -9
  34. package/date-range-picker/index.js +7 -9
  35. package/dial-pad/index.cjs +33 -0
  36. package/dial-pad/index.js +31 -0
  37. package/dialog/index.cjs +4 -4
  38. package/dialog/index.js +4 -4
  39. package/divider/index.cjs +1 -1
  40. package/divider/index.js +1 -1
  41. package/elevation/index.cjs +1 -1
  42. package/elevation/index.js +1 -1
  43. package/empty-state/index.cjs +2 -2
  44. package/empty-state/index.js +2 -2
  45. package/fab/index.cjs +2 -2
  46. package/fab/index.js +2 -2
  47. package/file-picker/index.cjs +4 -5
  48. package/file-picker/index.js +4 -5
  49. package/header/index.cjs +2 -2
  50. package/header/index.js +2 -2
  51. package/icon/index.cjs +1 -1
  52. package/icon/index.js +1 -1
  53. package/index.cjs +135 -123
  54. package/index.js +48 -46
  55. package/layout/index.cjs +1 -1
  56. package/layout/index.js +1 -1
  57. package/lib/avatar/definition.d.ts +1 -1
  58. package/lib/button/button.d.ts +1 -0
  59. package/lib/button/definition.d.ts +1 -1
  60. package/lib/calendar-event/definition.d.ts +1 -1
  61. package/lib/components.d.ts +3 -0
  62. package/lib/dial-pad/definition.d.ts +3 -0
  63. package/lib/dial-pad/dial-pad.d.ts +14 -0
  64. package/lib/dial-pad/dial-pad.template.d.ts +4 -0
  65. package/lib/dial-pad/locale.d.ts +18 -0
  66. package/lib/enums.d.ts +6 -0
  67. package/lib/layout/definition.d.ts +1 -1
  68. package/lib/menu-item/menu-item.d.ts +3 -0
  69. package/lib/range-slider/definition.d.ts +3 -0
  70. package/lib/range-slider/locale.d.ts +4 -0
  71. package/lib/range-slider/range-slider.d.ts +32 -0
  72. package/lib/range-slider/range-slider.form-associated.d.ts +10 -0
  73. package/lib/range-slider/range-slider.template.d.ts +4 -0
  74. package/lib/range-slider/utils/lerp.d.ts +2 -0
  75. package/lib/range-slider/utils/roundToStepValue.d.ts +1 -0
  76. package/lib/slider/slider.template.d.ts +1 -0
  77. package/lib/split-button/definition.d.ts +1 -1
  78. package/lib/text-anchor/definition.d.ts +1 -0
  79. package/lib/text-anchor/text-anchor.d.ts +5 -0
  80. package/lib/video-player/definition.d.ts +3 -0
  81. package/lib/video-player/locale.d.ts +1 -0
  82. package/lib/video-player/video-player.d.ts +17 -0
  83. package/lib/video-player/video-player.template.d.ts +4 -0
  84. package/listbox/index.cjs +25 -24
  85. package/listbox/index.js +25 -24
  86. package/locales/en-GB.cjs +34 -0
  87. package/locales/en-GB.js +34 -0
  88. package/locales/en-US.cjs +202 -0
  89. package/locales/en-US.js +202 -0
  90. package/locales/ja-JP.cjs +202 -1
  91. package/locales/ja-JP.js +202 -1
  92. package/locales/zh-CN.cjs +203 -0
  93. package/locales/zh-CN.js +203 -0
  94. package/menu/index.cjs +7 -7
  95. package/menu/index.js +7 -7
  96. package/menu-item/index.cjs +4 -4
  97. package/menu-item/index.js +4 -4
  98. package/nav/index.cjs +1 -1
  99. package/nav/index.js +1 -1
  100. package/nav-disclosure/index.cjs +2 -2
  101. package/nav-disclosure/index.js +2 -2
  102. package/nav-item/index.cjs +2 -2
  103. package/nav-item/index.js +2 -2
  104. package/note/index.cjs +2 -2
  105. package/note/index.js +2 -2
  106. package/number-field/index.cjs +5 -6
  107. package/number-field/index.js +5 -6
  108. package/option/index.cjs +2 -2
  109. package/option/index.js +2 -2
  110. package/package.json +34 -34
  111. package/pagination/index.cjs +3 -3
  112. package/pagination/index.js +3 -3
  113. package/popup/index.cjs +4 -4
  114. package/popup/index.js +4 -4
  115. package/progress/index.cjs +1 -1
  116. package/progress/index.js +1 -1
  117. package/progress-ring/index.cjs +1 -1
  118. package/progress-ring/index.js +1 -1
  119. package/radio/index.cjs +1 -1
  120. package/radio/index.js +1 -1
  121. package/radio-group/index.cjs +1 -1
  122. package/radio-group/index.js +1 -1
  123. package/range-slider/index.cjs +22 -0
  124. package/range-slider/index.js +20 -0
  125. package/select/index.cjs +7 -6
  126. package/select/index.js +7 -6
  127. package/selectable-box/index.cjs +5 -4
  128. package/selectable-box/index.js +5 -4
  129. package/shared/Reflector.cjs +5 -1
  130. package/shared/Reflector.js +5 -1
  131. package/shared/affix.cjs +11 -4
  132. package/shared/affix.js +12 -4
  133. package/shared/anchored.cjs +8 -2
  134. package/shared/anchored.js +8 -2
  135. package/shared/applyMixinsWithObservables.cjs +15 -0
  136. package/shared/applyMixinsWithObservables.js +13 -0
  137. package/shared/definition.cjs +9 -4
  138. package/shared/definition.js +9 -4
  139. package/shared/definition10.cjs +5 -5
  140. package/shared/definition10.js +5 -5
  141. package/shared/definition11.cjs +77 -49
  142. package/shared/definition11.js +78 -50
  143. package/shared/definition12.cjs +12 -14
  144. package/shared/definition12.js +12 -14
  145. package/shared/definition13.cjs +118 -75
  146. package/shared/definition13.js +118 -75
  147. package/shared/definition14.cjs +34 -33
  148. package/shared/definition14.js +34 -33
  149. package/shared/definition15.cjs +24 -12
  150. package/shared/definition15.js +24 -12
  151. package/shared/definition16.cjs +38 -43
  152. package/shared/definition16.js +38 -43
  153. package/shared/definition17.cjs +126 -66
  154. package/shared/definition17.js +127 -67
  155. package/shared/definition18.cjs +31 -15
  156. package/shared/definition18.js +31 -15
  157. package/shared/definition19.cjs +117 -81
  158. package/shared/definition19.js +117 -81
  159. package/shared/definition2.cjs +10 -5
  160. package/shared/definition2.js +10 -5
  161. package/shared/definition20.cjs +187 -227
  162. package/shared/definition20.js +183 -223
  163. package/shared/definition21.cjs +262 -69
  164. package/shared/definition21.js +261 -67
  165. package/shared/definition22.cjs +66 -61
  166. package/shared/definition22.js +64 -60
  167. package/shared/definition23.cjs +42 -77
  168. package/shared/definition23.js +41 -76
  169. package/shared/definition24.cjs +65 -2350
  170. package/shared/definition24.js +64 -2349
  171. package/shared/definition25.cjs +2402 -48
  172. package/shared/definition25.js +2401 -47
  173. package/shared/definition26.cjs +62 -28
  174. package/shared/definition26.js +61 -27
  175. package/shared/definition27.cjs +28 -54
  176. package/shared/definition27.js +27 -53
  177. package/shared/definition28.cjs +39 -819
  178. package/shared/definition28.js +38 -817
  179. package/shared/definition29.cjs +893 -54
  180. package/shared/definition29.js +893 -55
  181. package/shared/definition3.cjs +7 -10
  182. package/shared/definition3.js +7 -10
  183. package/shared/definition30.cjs +69 -85
  184. package/shared/definition30.js +68 -84
  185. package/shared/definition31.cjs +86 -23
  186. package/shared/definition31.js +86 -23
  187. package/shared/definition32.cjs +24 -14
  188. package/shared/definition32.js +23 -13
  189. package/shared/definition33.cjs +11 -53
  190. package/shared/definition33.js +10 -52
  191. package/shared/definition34.cjs +28 -500
  192. package/shared/definition34.js +28 -500
  193. package/shared/definition35.cjs +447 -194
  194. package/shared/definition35.js +447 -192
  195. package/shared/definition36.cjs +258 -188
  196. package/shared/definition36.js +255 -187
  197. package/shared/definition37.cjs +204 -78
  198. package/shared/definition37.js +203 -76
  199. package/shared/definition38.cjs +55 -51
  200. package/shared/definition38.js +52 -49
  201. package/shared/definition39.cjs +65 -423
  202. package/shared/definition39.js +64 -422
  203. package/shared/definition4.cjs +24 -12
  204. package/shared/definition4.js +24 -12
  205. package/shared/definition40.cjs +447 -35
  206. package/shared/definition40.js +444 -32
  207. package/shared/definition41.cjs +35 -678
  208. package/shared/definition41.js +34 -677
  209. package/shared/definition42.cjs +544 -99
  210. package/shared/definition42.js +543 -98
  211. package/shared/definition43.cjs +696 -77
  212. package/shared/definition43.js +695 -76
  213. package/shared/definition44.cjs +113 -563
  214. package/shared/definition44.js +112 -561
  215. package/shared/definition45.cjs +77 -117
  216. package/shared/definition45.js +75 -115
  217. package/shared/definition46.cjs +474 -86
  218. package/shared/definition46.js +474 -87
  219. package/shared/definition47.cjs +140 -23
  220. package/shared/definition47.js +139 -22
  221. package/shared/definition48.cjs +132 -57
  222. package/shared/definition48.js +131 -56
  223. package/shared/definition49.cjs +18 -524
  224. package/shared/definition49.js +17 -523
  225. package/shared/definition5.cjs +20 -17
  226. package/shared/definition5.js +20 -17
  227. package/shared/definition50.cjs +73 -25
  228. package/shared/definition50.js +72 -24
  229. package/shared/definition51.cjs +506 -99
  230. package/shared/definition51.js +505 -99
  231. package/shared/definition52.cjs +29 -277
  232. package/shared/definition52.js +28 -276
  233. package/shared/definition53.cjs +97 -256
  234. package/shared/definition53.js +97 -255
  235. package/shared/definition54.cjs +287 -769
  236. package/shared/definition54.js +287 -769
  237. package/shared/definition55.cjs +305 -105
  238. package/shared/definition55.js +304 -104
  239. package/shared/definition56.cjs +841 -81
  240. package/shared/definition56.js +840 -80
  241. package/shared/definition57.cjs +153 -69
  242. package/shared/definition57.js +152 -68
  243. package/shared/definition58.cjs +138 -299
  244. package/shared/definition58.js +137 -298
  245. package/shared/definition59.cjs +72 -27
  246. package/shared/definition59.js +71 -26
  247. package/shared/definition6.cjs +4 -5
  248. package/shared/definition6.js +4 -5
  249. package/shared/definition60.cjs +279 -1780
  250. package/shared/definition60.js +278 -1779
  251. package/shared/definition61.cjs +65870 -11
  252. package/shared/definition61.js +65869 -11
  253. package/shared/definition62.cjs +50 -0
  254. package/shared/definition62.js +46 -0
  255. package/shared/definition63.cjs +1828 -0
  256. package/shared/definition63.js +1824 -0
  257. package/shared/definition7.cjs +8 -6
  258. package/shared/definition7.js +8 -6
  259. package/shared/definition8.cjs +27 -20
  260. package/shared/definition8.js +27 -20
  261. package/shared/definition9.cjs +7 -10
  262. package/shared/definition9.js +7 -10
  263. package/shared/enums.cjs +8 -0
  264. package/shared/enums.js +8 -1
  265. package/shared/icon.cjs +7 -2
  266. package/shared/icon.js +7 -2
  267. package/shared/index2.cjs +67 -38
  268. package/shared/index2.js +67 -38
  269. package/shared/key-codes2.cjs +8 -0
  270. package/shared/key-codes2.js +5 -1
  271. package/shared/listbox.cjs +1 -1
  272. package/shared/listbox.js +1 -1
  273. package/shared/localization/Locale.d.ts +6 -0
  274. package/shared/patterns/form-elements/form-elements.d.ts +2 -3
  275. package/shared/patterns/index.d.ts +0 -1
  276. package/shared/presentationDate.cjs +140 -81
  277. package/shared/presentationDate.js +140 -81
  278. package/shared/slider.template.cjs +71 -0
  279. package/shared/slider.template.js +67 -0
  280. package/shared/text-anchor.cjs +6 -0
  281. package/shared/text-anchor.js +6 -0
  282. package/shared/text-anchor.template.cjs +33 -33
  283. package/shared/text-anchor.template.js +33 -33
  284. package/shared/text-field.cjs +1 -1
  285. package/shared/text-field.js +1 -1
  286. package/shared/utils/applyMixinsWithObservables.d.ts +1 -0
  287. package/side-drawer/index.cjs +1 -1
  288. package/side-drawer/index.js +1 -1
  289. package/slider/index.cjs +2 -1
  290. package/slider/index.js +2 -1
  291. package/split-button/index.cjs +2 -2
  292. package/split-button/index.js +2 -2
  293. package/style.css +1 -0
  294. package/styles/core/all.css +1 -1
  295. package/styles/core/theme.css +1 -1
  296. package/styles/core/typography.css +1 -1
  297. package/styles/fonts/spezia-variable.css +39 -13
  298. package/styles/tokens/theme-dark.css +4 -4
  299. package/styles/tokens/theme-light.css +4 -4
  300. package/styles/tokens/vivid-2-compat.css +4 -2
  301. package/switch/index.cjs +2 -2
  302. package/switch/index.js +2 -2
  303. package/tab/index.cjs +2 -2
  304. package/tab/index.js +2 -2
  305. package/tab-panel/index.cjs +1 -1
  306. package/tab-panel/index.js +1 -1
  307. package/tabs/index.cjs +4 -4
  308. package/tabs/index.js +4 -4
  309. package/tag/index.cjs +2 -2
  310. package/tag/index.js +2 -2
  311. package/tag-group/index.cjs +1 -1
  312. package/tag-group/index.js +1 -1
  313. package/text-area/index.cjs +4 -3
  314. package/text-area/index.js +4 -3
  315. package/text-field/index.cjs +4 -6
  316. package/text-field/index.js +4 -6
  317. package/time-picker/index.cjs +8 -10
  318. package/time-picker/index.js +8 -10
  319. package/toggletip/index.cjs +5 -5
  320. package/toggletip/index.js +5 -5
  321. package/tooltip/index.cjs +5 -5
  322. package/tooltip/index.js +5 -5
  323. package/tree-item/index.cjs +2 -2
  324. package/tree-item/index.js +2 -2
  325. package/tree-view/index.cjs +1 -1
  326. package/tree-view/index.js +1 -1
  327. package/video-player/index.cjs +17 -0
  328. package/video-player/index.js +15 -0
  329. package/vivid.api.json +428 -1
  330. package/focus/index.cjs +0 -7
  331. package/focus/index.js +0 -5
  332. package/lib/focus/definition.d.ts +0 -3
  333. package/lib/focus/focus.d.ts +0 -3
  334. package/lib/focus/focus.template.d.ts +0 -4
  335. package/lib/popup/popup.d.ts +0 -21
  336. package/shared/focus.cjs +0 -8
  337. package/shared/focus.js +0 -6
  338. package/shared/focus2.cjs +0 -11
  339. package/shared/focus2.js +0 -9
  340. package/shared/patterns/focus.d.ts +0 -3
@@ -1,543 +1,37 @@
1
1
  'use strict';
2
2
 
3
3
  const index = require('./index.cjs');
4
- const definition = require('./definition48.cjs');
5
- const definition$1 = require('./definition47.cjs');
6
- const startEnd = require('./start-end.cjs');
7
- const applyMixins = require('./apply-mixins.cjs');
8
- const keyCodes = require('./key-codes.cjs');
9
- const strings = require('./strings.cjs');
10
- const numbers = require('./numbers.cjs');
11
- const ref = require('./ref.cjs');
12
- const slotted = require('./slotted.cjs');
13
- const when = require('./when.cjs');
14
- const classNames = require('./class-names.cjs');
15
4
 
16
5
  /**
17
- * The orientation of the {@link @microsoft/fast-foundation#(Tabs:class)} component
18
- * @public
19
- */
20
- const TabsOrientation = {
21
- vertical: "vertical",
22
- horizontal: "horizontal",
23
- };
24
- /**
25
- * A Tabs Custom HTML Element.
26
- * Implements the {@link https://www.w3.org/TR/wai-aria-1.1/#tablist | ARIA tablist }.
6
+ * A TabPanel Component to be used with {@link @microsoft/fast-foundation#(Tabs:class)}
27
7
  *
28
- * @slot start - Content which can be provided before the tablist element
29
- * @slot end - Content which can be provided after the tablist element
30
- * @slot tab - The slot for tabs
31
- * @slot tabpanel - The slot for tabpanels
32
- * @csspart tablist - The element wrapping for the tabs
33
- * @csspart tab - The tab slot
34
- * @csspart activeIndicator - The visual indicator
35
- * @csspart tabpanel - The tabpanel slot
36
- * @fires change - Fires a custom 'change' event when a tab is clicked or during keyboard navigation
8
+ * @slot - The default slot for the tabpanel content
37
9
  *
38
10
  * @public
39
11
  */
40
- let Tabs$1 = class Tabs extends index.FoundationElement {
41
- constructor() {
42
- super(...arguments);
43
- /**
44
- * The orientation
45
- * @public
46
- * @remarks
47
- * HTML Attribute: orientation
48
- */
49
- this.orientation = TabsOrientation.horizontal;
50
- /**
51
- * Whether or not to show the active indicator
52
- * @public
53
- * @remarks
54
- * HTML Attribute: activeindicator
55
- */
56
- this.activeindicator = true;
57
- /**
58
- * @internal
59
- */
60
- this.showActiveIndicator = true;
61
- this.prevActiveTabIndex = 0;
62
- this.activeTabIndex = 0;
63
- this.ticking = false;
64
- this.change = () => {
65
- this.$emit("change", this.activetab);
66
- };
67
- this.isDisabledElement = (el) => {
68
- return el.getAttribute("aria-disabled") === "true";
69
- };
70
- this.isHiddenElement = (el) => {
71
- return el.hasAttribute("hidden");
72
- };
73
- this.isFocusableElement = (el) => {
74
- return !this.isDisabledElement(el) && !this.isHiddenElement(el);
75
- };
76
- this.setTabs = () => {
77
- const gridHorizontalProperty = "gridColumn";
78
- const gridVerticalProperty = "gridRow";
79
- const gridProperty = this.isHorizontal()
80
- ? gridHorizontalProperty
81
- : gridVerticalProperty;
82
- this.activeTabIndex = this.getActiveIndex();
83
- this.showActiveIndicator = false;
84
- this.tabs.forEach((tab, index) => {
85
- if (tab.slot === "tab") {
86
- const isActiveTab = this.activeTabIndex === index && this.isFocusableElement(tab);
87
- if (this.activeindicator && this.isFocusableElement(tab)) {
88
- this.showActiveIndicator = true;
89
- }
90
- const tabId = this.tabIds[index];
91
- const tabpanelId = this.tabpanelIds[index];
92
- tab.setAttribute("id", tabId);
93
- tab.setAttribute("aria-selected", isActiveTab ? "true" : "false");
94
- tab.setAttribute("aria-controls", tabpanelId);
95
- tab.addEventListener("click", this.handleTabClick);
96
- tab.addEventListener("keydown", this.handleTabKeyDown);
97
- tab.setAttribute("tabindex", isActiveTab ? "0" : "-1");
98
- if (isActiveTab) {
99
- this.activetab = tab;
100
- this.activeid = tabId;
101
- }
102
- }
103
- // If the original property isn't emptied out,
104
- // the next set will morph into a grid-area style setting that is not what we want
105
- tab.style[gridHorizontalProperty] = "";
106
- tab.style[gridVerticalProperty] = "";
107
- tab.style[gridProperty] = `${index + 1}`;
108
- !this.isHorizontal()
109
- ? tab.classList.add("vertical")
110
- : tab.classList.remove("vertical");
111
- });
112
- };
113
- this.setTabPanels = () => {
114
- this.tabpanels.forEach((tabpanel, index) => {
115
- const tabId = this.tabIds[index];
116
- const tabpanelId = this.tabpanelIds[index];
117
- tabpanel.setAttribute("id", tabpanelId);
118
- tabpanel.setAttribute("aria-labelledby", tabId);
119
- this.activeTabIndex !== index
120
- ? tabpanel.setAttribute("hidden", "")
121
- : tabpanel.removeAttribute("hidden");
122
- });
123
- };
124
- this.handleTabClick = (event) => {
125
- const selectedTab = event.currentTarget;
126
- if (selectedTab.nodeType === 1 && this.isFocusableElement(selectedTab)) {
127
- this.prevActiveTabIndex = this.activeTabIndex;
128
- this.activeTabIndex = this.tabs.indexOf(selectedTab);
129
- this.setComponent();
130
- }
131
- };
132
- this.handleTabKeyDown = (event) => {
133
- if (this.isHorizontal()) {
134
- switch (event.key) {
135
- case keyCodes.keyArrowLeft:
136
- event.preventDefault();
137
- this.adjustBackward(event);
138
- break;
139
- case keyCodes.keyArrowRight:
140
- event.preventDefault();
141
- this.adjustForward(event);
142
- break;
143
- }
144
- }
145
- else {
146
- switch (event.key) {
147
- case keyCodes.keyArrowUp:
148
- event.preventDefault();
149
- this.adjustBackward(event);
150
- break;
151
- case keyCodes.keyArrowDown:
152
- event.preventDefault();
153
- this.adjustForward(event);
154
- break;
155
- }
156
- }
157
- switch (event.key) {
158
- case keyCodes.keyHome:
159
- event.preventDefault();
160
- this.adjust(-this.activeTabIndex);
161
- break;
162
- case keyCodes.keyEnd:
163
- event.preventDefault();
164
- this.adjust(this.tabs.length - this.activeTabIndex - 1);
165
- break;
166
- }
167
- };
168
- this.adjustForward = (e) => {
169
- const group = this.tabs;
170
- let index = 0;
171
- index = this.activetab ? group.indexOf(this.activetab) + 1 : 1;
172
- if (index === group.length) {
173
- index = 0;
174
- }
175
- while (index < group.length && group.length > 1) {
176
- if (this.isFocusableElement(group[index])) {
177
- this.moveToTabByIndex(group, index);
178
- break;
179
- }
180
- else if (this.activetab && index === group.indexOf(this.activetab)) {
181
- break;
182
- }
183
- else if (index + 1 >= group.length) {
184
- index = 0;
185
- }
186
- else {
187
- index += 1;
188
- }
189
- }
190
- };
191
- this.adjustBackward = (e) => {
192
- const group = this.tabs;
193
- let index = 0;
194
- index = this.activetab ? group.indexOf(this.activetab) - 1 : 0;
195
- index = index < 0 ? group.length - 1 : index;
196
- while (index >= 0 && group.length > 1) {
197
- if (this.isFocusableElement(group[index])) {
198
- this.moveToTabByIndex(group, index);
199
- break;
200
- }
201
- else if (index - 1 < 0) {
202
- index = group.length - 1;
203
- }
204
- else {
205
- index -= 1;
206
- }
207
- }
208
- };
209
- this.moveToTabByIndex = (group, index) => {
210
- const tab = group[index];
211
- this.activetab = tab;
212
- this.prevActiveTabIndex = this.activeTabIndex;
213
- this.activeTabIndex = index;
214
- tab.focus();
215
- this.setComponent();
216
- };
217
- }
218
- /**
219
- * @internal
220
- */
221
- orientationChanged() {
222
- if (this.$fastController.isConnected) {
223
- this.setTabs();
224
- this.setTabPanels();
225
- this.handleActiveIndicatorPosition();
226
- }
227
- }
228
- /**
229
- * @internal
230
- */
231
- activeidChanged(oldValue, newValue) {
232
- if (this.$fastController.isConnected &&
233
- this.tabs.length <= this.tabpanels.length) {
234
- this.prevActiveTabIndex = this.tabs.findIndex((item) => item.id === oldValue);
235
- this.setTabs();
236
- this.setTabPanels();
237
- this.handleActiveIndicatorPosition();
238
- }
239
- }
240
- /**
241
- * @internal
242
- */
243
- tabsChanged() {
244
- if (this.$fastController.isConnected &&
245
- this.tabs.length <= this.tabpanels.length) {
246
- this.tabIds = this.getTabIds();
247
- this.tabpanelIds = this.getTabPanelIds();
248
- this.setTabs();
249
- this.setTabPanels();
250
- this.handleActiveIndicatorPosition();
251
- }
252
- }
253
- /**
254
- * @internal
255
- */
256
- tabpanelsChanged() {
257
- if (this.$fastController.isConnected &&
258
- this.tabpanels.length <= this.tabs.length) {
259
- this.tabIds = this.getTabIds();
260
- this.tabpanelIds = this.getTabPanelIds();
261
- this.setTabs();
262
- this.setTabPanels();
263
- this.handleActiveIndicatorPosition();
264
- }
265
- }
266
- getActiveIndex() {
267
- const id = this.activeid;
268
- if (id !== undefined) {
269
- return this.tabIds.indexOf(this.activeid) === -1
270
- ? 0
271
- : this.tabIds.indexOf(this.activeid);
272
- }
273
- else {
274
- return 0;
275
- }
276
- }
277
- getTabIds() {
278
- return this.tabs.map((tab) => {
279
- var _a;
280
- return (_a = tab.getAttribute("id")) !== null && _a !== void 0 ? _a : `tab-${strings.uniqueId()}`;
281
- });
282
- }
283
- getTabPanelIds() {
284
- return this.tabpanels.map((tabPanel) => {
285
- var _a;
286
- return (_a = tabPanel.getAttribute("id")) !== null && _a !== void 0 ? _a : `panel-${strings.uniqueId()}`;
287
- });
288
- }
289
- setComponent() {
290
- if (this.activeTabIndex !== this.prevActiveTabIndex) {
291
- this.activeid = this.tabIds[this.activeTabIndex];
292
- this.focusTab();
293
- this.change();
294
- }
295
- }
296
- isHorizontal() {
297
- return this.orientation === TabsOrientation.horizontal;
298
- }
299
- handleActiveIndicatorPosition() {
300
- // Ignore if we click twice on the same tab
301
- if (this.showActiveIndicator &&
302
- this.activeindicator &&
303
- this.activeTabIndex !== this.prevActiveTabIndex) {
304
- if (this.ticking) {
305
- this.ticking = false;
306
- }
307
- else {
308
- this.ticking = true;
309
- this.animateActiveIndicator();
310
- }
311
- }
312
- }
313
- animateActiveIndicator() {
314
- this.ticking = true;
315
- const gridProperty = this.isHorizontal() ? "gridColumn" : "gridRow";
316
- const translateProperty = this.isHorizontal()
317
- ? "translateX"
318
- : "translateY";
319
- const offsetProperty = this.isHorizontal() ? "offsetLeft" : "offsetTop";
320
- const prev = this.activeIndicatorRef[offsetProperty];
321
- this.activeIndicatorRef.style[gridProperty] = `${this.activeTabIndex + 1}`;
322
- const next = this.activeIndicatorRef[offsetProperty];
323
- this.activeIndicatorRef.style[gridProperty] = `${this.prevActiveTabIndex + 1}`;
324
- const dif = next - prev;
325
- this.activeIndicatorRef.style.transform = `${translateProperty}(${dif}px)`;
326
- this.activeIndicatorRef.classList.add("activeIndicatorTransition");
327
- this.activeIndicatorRef.addEventListener("transitionend", () => {
328
- this.ticking = false;
329
- this.activeIndicatorRef.style[gridProperty] = `${this.activeTabIndex + 1}`;
330
- this.activeIndicatorRef.style.transform = `${translateProperty}(0px)`;
331
- this.activeIndicatorRef.classList.remove("activeIndicatorTransition");
332
- });
333
- }
334
- /**
335
- * The adjust method for FASTTabs
336
- * @public
337
- * @remarks
338
- * This method allows the active index to be adjusted by numerical increments
339
- */
340
- adjust(adjustment) {
341
- const focusableTabs = this.tabs.filter(t => this.isFocusableElement(t));
342
- const currentActiveTabIndex = focusableTabs.indexOf(this.activetab);
343
- const nextTabIndex = numbers.limit(0, focusableTabs.length - 1, currentActiveTabIndex + adjustment);
344
- // the index of the next focusable tab within the context of all available tabs
345
- const nextIndex = this.tabs.indexOf(focusableTabs[nextTabIndex]);
346
- if (nextIndex > -1) {
347
- this.moveToTabByIndex(this.tabs, nextIndex);
348
- }
349
- }
350
- focusTab() {
351
- this.tabs[this.activeTabIndex].focus();
352
- }
353
- /**
354
- * @internal
355
- */
356
- connectedCallback() {
357
- super.connectedCallback();
358
- this.tabIds = this.getTabIds();
359
- this.tabpanelIds = this.getTabPanelIds();
360
- this.activeTabIndex = this.getActiveIndex();
361
- }
12
+ let TabPanel$1 = class TabPanel extends index.FoundationElement {
362
13
  };
363
- index.__decorate([
364
- index.attr
365
- ], Tabs$1.prototype, "orientation", void 0);
366
- index.__decorate([
367
- index.attr
368
- ], Tabs$1.prototype, "activeid", void 0);
369
- index.__decorate([
370
- index.observable
371
- ], Tabs$1.prototype, "tabs", void 0);
372
- index.__decorate([
373
- index.observable
374
- ], Tabs$1.prototype, "tabpanels", void 0);
375
- index.__decorate([
376
- index.attr({ mode: "boolean" })
377
- ], Tabs$1.prototype, "activeindicator", void 0);
378
- index.__decorate([
379
- index.observable
380
- ], Tabs$1.prototype, "activeIndicatorRef", void 0);
381
- index.__decorate([
382
- index.observable
383
- ], Tabs$1.prototype, "showActiveIndicator", void 0);
384
- applyMixins.applyMixins(Tabs$1, startEnd.StartEnd);
385
-
386
- const styles = ":host{display:block}.base{display:grid;box-sizing:border-box}.base{--_appearance-color-text: var(--_connotation-color-primary);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base.connotation-cta{--_connotation-color-primary: var(--vvd-tabs-cta-primary, var(--vvd-color-cta-500))}.base:not(.connotation-cta){--_connotation-color-primary: var(--vvd-tabs-accent-primary, var(--vvd-color-canvas-text))}.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%}.tablist{--_tabs-tablist-gutter: 8px;--_tabs-active-indicator-stroke-width: 2px;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:not(.orientation-vertical) .tablist-wrapper{align-self:end;border-bottom:1px solid var(--vvd-color-neutral-300);inline-size:100%;overflow-x:auto;overflow-y:hidden}.base.orientation-vertical .tablist-wrapper{block-size:100%;box-shadow:1px 0 0 0 var(--vvd-color-neutral-300);overflow-x:hidden;overflow-y:auto}.tablist-wrapper::-webkit-scrollbar{display:none}.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;block-size:80%;border-radius:2px;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;block-size:var(--_tabs-active-indicator-stroke-width);grid-column:1/auto;inline-size:calc(var(--_tabs-active-tab-inline-size) - 32px);inset-block-end:0;inset-inline-start:8px;justify-self:center;padding-inline:var(--_tabs-tablist-gutter)}.activeIndicatorTransition{transition:transform .2s ease-out 0s,inline-size .2s ease-out 0s}.base:not(.orientation-vertical) .active-indicator:not(.activeIndicatorTransition){opacity:0}\n";
387
14
 
388
- var __defProp = Object.defineProperty;
389
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
390
- var __decorateClass = (decorators, target, key, kind) => {
391
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
392
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
393
- if (decorator = decorators[i])
394
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
395
- if (kind && result)
396
- __defProp(target, key, result);
397
- return result;
398
- };
399
- const ACTIVE_TAB_WIDTH = "--_tabs-active-tab-inline-size";
400
- class Tabs extends Tabs$1 {
401
- constructor() {
402
- super(...arguments);
403
- this.scrollablePanel = false;
404
- }
405
- connotationChanged() {
406
- this.#updateTabsConnotation();
407
- }
408
- orientationChanged() {
409
- super.orientationChanged();
410
- this.patchIndicatorStyleTransition();
411
- if (!this.activeIndicatorRef)
412
- return;
413
- if (this.orientation === TabsOrientation.vertical) {
414
- this.activeIndicatorRef.style.removeProperty(ACTIVE_TAB_WIDTH);
415
- }
416
- this.#patchActiveID();
417
- }
418
- activeidChanged(oldValue, newValue) {
419
- super.activeidChanged(oldValue, newValue);
420
- this.patchIndicatorStyleTransition();
421
- this.#patchActiveID();
422
- }
423
- tabsChanged() {
424
- super.tabsChanged();
425
- this.patchIndicatorStyleTransition();
426
- this.#patchActiveID();
427
- }
428
- tabpanelsChanged() {
429
- super.tabpanelsChanged();
430
- this.patchIndicatorStyleTransition();
431
- this.#patchActiveID();
432
- }
433
- patchIndicatorStyleTransition() {
434
- if (!this.activetab || !this.activeIndicatorRef)
435
- return;
436
- if (this.orientation === TabsOrientation.vertical || !this.showActiveIndicator)
437
- return;
438
- const width = this.activetab.getBoundingClientRect().width;
439
- this.activeIndicatorRef.style.setProperty(ACTIVE_TAB_WIDTH, `${width}px`);
440
- }
441
- #updateTabsConnotation() {
442
- if (this.tabs) {
443
- this.tabs.forEach((tab) => {
444
- if (tab.getAttribute("aria-selected") === "true") {
445
- tab.setAttribute("connotation", this.connotation);
446
- } else {
447
- tab.removeAttribute("connotation");
448
- }
449
- });
450
- }
451
- }
452
- get #tabListWrapper() {
453
- return this.shadowRoot.querySelector(".tablist-wrapper");
454
- }
455
- #scrollToIndex(index) {
456
- const tab = this.tabs[index];
457
- if (!tab)
458
- return;
459
- let left = 0;
460
- let top = 0;
461
- if (this.orientation === TabsOrientation.vertical) {
462
- if (index === this.tabs.length - 1) {
463
- top = this.#tabListWrapper.scrollHeight;
464
- }
465
- if (index > 0 && index < this.tabs.length - 1) {
466
- top = tab.offsetTop - this.#tabListWrapper.offsetHeight / 2 + tab.offsetHeight / 2;
467
- }
468
- } else {
469
- if (index === this.tabs.length - 1) {
470
- left = this.#tabListWrapper.scrollWidth;
471
- }
472
- if (index > 0 && index < this.tabs.length - 1) {
473
- left = tab.offsetLeft - this.#tabListWrapper.offsetWidth / 2 + tab.offsetWidth / 2;
474
- }
475
- }
476
- this.#tabListWrapper.scrollTo({ top, left, behavior: "smooth" });
477
- }
478
- // adapted FAST fix https://github.com/microsoft/fast/pull/6606
479
- #patchActiveID() {
480
- if (!this.activetab)
481
- return;
482
- const idx = this.tabs.indexOf(this.activetab);
483
- this.activeid = this["tabIds"][idx];
484
- this.#updateTabsConnotation();
485
- this.#scrollToIndex(idx);
486
- }
15
+ class TabPanel extends TabPanel$1 {
487
16
  }
488
- __decorateClass([
489
- index.observable
490
- ], Tabs.prototype, "tablist", 2);
491
- __decorateClass([
492
- index.attr
493
- ], Tabs.prototype, "connotation", 2);
494
- __decorateClass([
495
- index.attr
496
- ], Tabs.prototype, "gutters", 2);
497
- __decorateClass([
498
- index.attr({ mode: "boolean", attribute: "scrollable-panel" })
499
- ], Tabs.prototype, "scrollablePanel", 2);
500
17
 
501
- const getClasses = ({
502
- connotation,
503
- orientation,
504
- gutters,
505
- scrollablePanel
506
- }) => classNames.classNames(
507
- "base",
508
- [`connotation-${connotation}`, Boolean(connotation)],
509
- [`orientation-${orientation}`, Boolean(orientation)],
510
- [`gutters-${gutters}`, Boolean(gutters)],
511
- ["scroll", Boolean(scrollablePanel)]
512
- );
513
- function TabsTemplate() {
18
+ function TabPanelTemplate() {
514
19
  return index.html`
515
- <template>
516
- <div class="${getClasses}">
517
- <div class="tablist-wrapper">
518
- <div class="tablist" role="tablist" ${ref.ref("tablist")}>
519
- <slot name="tab" ${slotted.slotted("tabs")}></slot>
520
- ${when.when((x) => x.showActiveIndicator, index.html`
521
- <div ${ref.ref("activeIndicatorRef")} class="active-indicator"></div>
522
- `)}
523
- </div>
524
- </div>
525
- <div class="tabpanel">
526
- <slot name="tabpanel" ${slotted.slotted("tabpanels")}></slot>
527
- </div>
528
- </div>
20
+ <template slot="tabpanel" role="tabpanel">
21
+ <slot></slot>
529
22
  </template>
530
23
  `;
531
24
  }
532
25
 
533
- const tabsDefinition = Tabs.compose({
534
- baseName: "tabs",
535
- template: TabsTemplate,
536
- styles
537
- });
538
- const tabsRegistries = [tabsDefinition(), ...definition.tabRegistries, ...definition$1.tabPanelRegistries];
539
- const registerTabs = index.registerFactory(tabsRegistries);
26
+ const tabPanelDefinition = TabPanel.compose(
27
+ {
28
+ baseName: "tab-panel",
29
+ template: TabPanelTemplate
30
+ }
31
+ );
32
+ const tabPanelRegistries = [tabPanelDefinition()];
33
+ const registerTabPanel = index.registerFactory(tabPanelRegistries);
540
34
 
541
- exports.registerTabs = registerTabs;
542
- exports.tabsDefinition = tabsDefinition;
543
- exports.tabsRegistries = tabsRegistries;
35
+ exports.registerTabPanel = registerTabPanel;
36
+ exports.tabPanelDefinition = tabPanelDefinition;
37
+ exports.tabPanelRegistries = tabPanelRegistries;