@fluentui/react-tabs 1.0.0-beta.98 → 9.0.0-beta.7

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 (223) hide show
  1. package/CHANGELOG.json +71 -1840
  2. package/CHANGELOG.md +24 -743
  3. package/README.md +0 -17
  4. package/Spec.md +433 -0
  5. package/dist/react-tabs.d.ts +171 -137
  6. package/lib/Tab.d.ts +1 -0
  7. package/lib/Tab.js +2 -0
  8. package/lib/Tab.js.map +1 -0
  9. package/lib/TabList.d.ts +1 -0
  10. package/lib/TabList.js +2 -0
  11. package/lib/TabList.js.map +1 -0
  12. package/lib/components/Tab/Tab.d.ts +6 -0
  13. package/lib/components/Tab/Tab.js +15 -0
  14. package/lib/components/Tab/Tab.js.map +1 -0
  15. package/lib/components/Tab/Tab.types.d.ts +52 -0
  16. package/lib/components/Tab/Tab.types.js +2 -0
  17. package/lib/components/Tab/Tab.types.js.map +1 -0
  18. package/lib/components/Tab/index.d.ts +5 -0
  19. package/lib/components/Tab/index.js +6 -0
  20. package/lib/components/Tab/index.js.map +1 -0
  21. package/lib/components/Tab/renderTab.d.ts +5 -0
  22. package/lib/components/Tab/renderTab.js +18 -0
  23. package/lib/components/Tab/renderTab.js.map +1 -0
  24. package/lib/components/Tab/useTab.d.ts +12 -0
  25. package/lib/components/Tab/useTab.js +82 -0
  26. package/lib/components/Tab/useTab.js.map +1 -0
  27. package/lib/components/Tab/useTabStyles.d.ts +6 -0
  28. package/lib/components/Tab/useTabStyles.js +205 -0
  29. package/lib/components/Tab/useTabStyles.js.map +1 -0
  30. package/lib/components/TabList/TabList.d.ts +6 -0
  31. package/lib/components/TabList/TabList.js +17 -0
  32. package/lib/components/TabList/TabList.js.map +1 -0
  33. package/lib/components/TabList/TabList.types.d.ts +99 -0
  34. package/lib/components/TabList/TabList.types.js +2 -0
  35. package/lib/components/TabList/TabList.types.js.map +1 -0
  36. package/lib/components/TabList/TabListContext.d.ts +3 -0
  37. package/lib/components/TabList/TabListContext.js +17 -0
  38. package/lib/components/TabList/TabListContext.js.map +1 -0
  39. package/lib/components/TabList/index.d.ts +5 -0
  40. package/lib/components/TabList/index.js +6 -0
  41. package/lib/components/TabList/index.js.map +1 -0
  42. package/lib/components/TabList/renderTabList.d.ts +5 -0
  43. package/lib/components/TabList/renderTabList.js +19 -0
  44. package/lib/components/TabList/renderTabList.js.map +1 -0
  45. package/lib/components/TabList/useTabList.d.ts +12 -0
  46. package/lib/components/TabList/useTabList.js +106 -0
  47. package/lib/components/TabList/useTabList.js.map +1 -0
  48. package/lib/components/TabList/useTabListContextValues.d.ts +2 -0
  49. package/lib/components/TabList/useTabListContextValues.js +24 -0
  50. package/lib/components/TabList/useTabListContextValues.js.map +1 -0
  51. package/lib/components/TabList/useTabListStyles.d.ts +9 -0
  52. package/lib/components/TabList/useTabListStyles.js +118 -0
  53. package/lib/components/TabList/useTabListStyles.js.map +1 -0
  54. package/lib/index.d.ts +2 -1
  55. package/lib/index.js +2 -1
  56. package/lib/index.js.map +1 -1
  57. package/lib/tab.constants.d.ts +15 -0
  58. package/lib/tab.constants.js +17 -0
  59. package/lib/tab.constants.js.map +1 -0
  60. package/lib/tsdoc-metadata.json +1 -1
  61. package/lib-commonjs/Tab.d.ts +1 -0
  62. package/lib-commonjs/Tab.js +10 -0
  63. package/lib-commonjs/Tab.js.map +1 -0
  64. package/lib-commonjs/TabList.d.ts +1 -0
  65. package/lib-commonjs/TabList.js +10 -0
  66. package/lib-commonjs/TabList.js.map +1 -0
  67. package/lib-commonjs/components/Tab/Tab.d.ts +6 -0
  68. package/lib-commonjs/components/Tab/Tab.js +26 -0
  69. package/lib-commonjs/components/Tab/Tab.js.map +1 -0
  70. package/lib-commonjs/components/Tab/Tab.types.d.ts +52 -0
  71. package/lib-commonjs/components/Tab/Tab.types.js +6 -0
  72. package/lib-commonjs/components/Tab/Tab.types.js.map +1 -0
  73. package/lib-commonjs/components/Tab/index.d.ts +5 -0
  74. package/lib-commonjs/components/Tab/index.js +18 -0
  75. package/lib-commonjs/components/Tab/index.js.map +1 -0
  76. package/lib-commonjs/components/Tab/renderTab.d.ts +5 -0
  77. package/lib-commonjs/components/Tab/renderTab.js +29 -0
  78. package/lib-commonjs/components/Tab/renderTab.js.map +1 -0
  79. package/lib-commonjs/components/Tab/useTab.d.ts +12 -0
  80. package/lib-commonjs/components/Tab/useTab.js +95 -0
  81. package/lib-commonjs/components/Tab/useTab.js.map +1 -0
  82. package/lib-commonjs/components/Tab/useTabStyles.d.ts +6 -0
  83. package/lib-commonjs/components/Tab/useTabStyles.js +218 -0
  84. package/lib-commonjs/components/Tab/useTabStyles.js.map +1 -0
  85. package/lib-commonjs/components/TabList/TabList.d.ts +6 -0
  86. package/lib-commonjs/components/TabList/TabList.js +29 -0
  87. package/lib-commonjs/components/TabList/TabList.js.map +1 -0
  88. package/lib-commonjs/components/TabList/TabList.types.d.ts +99 -0
  89. package/lib-commonjs/components/TabList/TabList.types.js +6 -0
  90. package/lib-commonjs/components/TabList/TabList.types.js.map +1 -0
  91. package/lib-commonjs/components/TabList/TabListContext.d.ts +3 -0
  92. package/lib-commonjs/components/TabList/TabListContext.js +25 -0
  93. package/lib-commonjs/components/TabList/TabListContext.js.map +1 -0
  94. package/lib-commonjs/components/TabList/index.d.ts +5 -0
  95. package/lib-commonjs/components/TabList/index.js +18 -0
  96. package/lib-commonjs/components/TabList/index.js.map +1 -0
  97. package/lib-commonjs/components/TabList/renderTabList.d.ts +5 -0
  98. package/lib-commonjs/components/TabList/renderTabList.js +31 -0
  99. package/lib-commonjs/components/TabList/renderTabList.js.map +1 -0
  100. package/lib-commonjs/components/TabList/useTabList.d.ts +12 -0
  101. package/lib-commonjs/components/TabList/useTabList.js +118 -0
  102. package/lib-commonjs/components/TabList/useTabList.js.map +1 -0
  103. package/lib-commonjs/components/TabList/useTabListContextValues.d.ts +2 -0
  104. package/lib-commonjs/components/TabList/useTabListContextValues.js +33 -0
  105. package/lib-commonjs/components/TabList/useTabListContextValues.js.map +1 -0
  106. package/lib-commonjs/components/TabList/useTabListStyles.d.ts +9 -0
  107. package/lib-commonjs/components/TabList/useTabListStyles.js +131 -0
  108. package/lib-commonjs/components/TabList/useTabListStyles.js.map +1 -0
  109. package/lib-commonjs/index.d.ts +2 -1
  110. package/lib-commonjs/index.js +10 -3
  111. package/lib-commonjs/index.js.map +1 -1
  112. package/lib-commonjs/tab.constants.d.ts +15 -0
  113. package/lib-commonjs/tab.constants.js +23 -0
  114. package/lib-commonjs/tab.constants.js.map +1 -0
  115. package/package.json +19 -13
  116. package/config/api-extractor.json +0 -3
  117. package/config/tests.js +0 -14
  118. package/etc/react-tabs.api.md +0 -104
  119. package/just.config.ts +0 -3
  120. package/lib/Tabs.d.ts +0 -1
  121. package/lib/Tabs.js +0 -2
  122. package/lib/Tabs.js.map +0 -1
  123. package/lib/common/isConformant.d.ts +0 -2
  124. package/lib/common/isConformant.js +0 -9
  125. package/lib/common/isConformant.js.map +0 -1
  126. package/lib/components/Tabs/TabItem.d.ts +0 -6
  127. package/lib/components/Tabs/TabItem.js +0 -18
  128. package/lib/components/Tabs/TabItem.js.map +0 -1
  129. package/lib/components/Tabs/TabItem.types.d.ts +0 -61
  130. package/lib/components/Tabs/TabItem.types.js +0 -2
  131. package/lib/components/Tabs/TabItem.types.js.map +0 -1
  132. package/lib/components/Tabs/Tabs.base.d.ts +0 -3
  133. package/lib/components/Tabs/Tabs.base.js +0 -179
  134. package/lib/components/Tabs/Tabs.base.js.map +0 -1
  135. package/lib/components/Tabs/Tabs.d.ts +0 -8
  136. package/lib/components/Tabs/Tabs.js +0 -12
  137. package/lib/components/Tabs/Tabs.js.map +0 -1
  138. package/lib/components/Tabs/Tabs.styles.d.ts +0 -2
  139. package/lib/components/Tabs/Tabs.styles.js +0 -264
  140. package/lib/components/Tabs/Tabs.styles.js.map +0 -1
  141. package/lib/components/Tabs/Tabs.types.d.ts +0 -113
  142. package/lib/components/Tabs/Tabs.types.js +0 -2
  143. package/lib/components/Tabs/Tabs.types.js.map +0 -1
  144. package/lib/components/Tabs/index.d.ts +0 -5
  145. package/lib/components/Tabs/index.js +0 -6
  146. package/lib/components/Tabs/index.js.map +0 -1
  147. package/lib/utilities/observeResize.d.ts +0 -21
  148. package/lib/utilities/observeResize.js +0 -46
  149. package/lib/utilities/observeResize.js.map +0 -1
  150. package/lib/utilities/useOverflow.d.ts +0 -45
  151. package/lib/utilities/useOverflow.js +0 -126
  152. package/lib/utilities/useOverflow.js.map +0 -1
  153. package/lib-amd/Tabs.d.ts +0 -1
  154. package/lib-amd/Tabs.js +0 -6
  155. package/lib-amd/Tabs.js.map +0 -1
  156. package/lib-amd/common/isConformant.d.ts +0 -2
  157. package/lib-amd/common/isConformant.js +0 -14
  158. package/lib-amd/common/isConformant.js.map +0 -1
  159. package/lib-amd/components/Tabs/TabItem.d.ts +0 -6
  160. package/lib-amd/components/Tabs/TabItem.js +0 -20
  161. package/lib-amd/components/Tabs/TabItem.js.map +0 -1
  162. package/lib-amd/components/Tabs/TabItem.types.d.ts +0 -61
  163. package/lib-amd/components/Tabs/TabItem.types.js +0 -5
  164. package/lib-amd/components/Tabs/TabItem.types.js.map +0 -1
  165. package/lib-amd/components/Tabs/Tabs.base.d.ts +0 -3
  166. package/lib-amd/components/Tabs/Tabs.base.js +0 -176
  167. package/lib-amd/components/Tabs/Tabs.base.js.map +0 -1
  168. package/lib-amd/components/Tabs/Tabs.d.ts +0 -8
  169. package/lib-amd/components/Tabs/Tabs.js +0 -14
  170. package/lib-amd/components/Tabs/Tabs.js.map +0 -1
  171. package/lib-amd/components/Tabs/Tabs.styles.d.ts +0 -2
  172. package/lib-amd/components/Tabs/Tabs.styles.js +0 -267
  173. package/lib-amd/components/Tabs/Tabs.styles.js.map +0 -1
  174. package/lib-amd/components/Tabs/Tabs.types.d.ts +0 -113
  175. package/lib-amd/components/Tabs/Tabs.types.js +0 -5
  176. package/lib-amd/components/Tabs/Tabs.types.js.map +0 -1
  177. package/lib-amd/components/Tabs/index.d.ts +0 -5
  178. package/lib-amd/components/Tabs/index.js +0 -11
  179. package/lib-amd/components/Tabs/index.js.map +0 -1
  180. package/lib-amd/index.d.ts +0 -1
  181. package/lib-amd/index.js +0 -6
  182. package/lib-amd/index.js.map +0 -1
  183. package/lib-amd/utilities/observeResize.d.ts +0 -21
  184. package/lib-amd/utilities/observeResize.js +0 -51
  185. package/lib-amd/utilities/observeResize.js.map +0 -1
  186. package/lib-amd/utilities/useOverflow.d.ts +0 -45
  187. package/lib-amd/utilities/useOverflow.js +0 -128
  188. package/lib-amd/utilities/useOverflow.js.map +0 -1
  189. package/lib-commonjs/Tabs.d.ts +0 -1
  190. package/lib-commonjs/Tabs.js +0 -5
  191. package/lib-commonjs/Tabs.js.map +0 -1
  192. package/lib-commonjs/common/isConformant.d.ts +0 -2
  193. package/lib-commonjs/common/isConformant.js +0 -13
  194. package/lib-commonjs/common/isConformant.js.map +0 -1
  195. package/lib-commonjs/components/Tabs/TabItem.d.ts +0 -6
  196. package/lib-commonjs/components/Tabs/TabItem.js +0 -21
  197. package/lib-commonjs/components/Tabs/TabItem.js.map +0 -1
  198. package/lib-commonjs/components/Tabs/TabItem.types.d.ts +0 -61
  199. package/lib-commonjs/components/Tabs/TabItem.types.js +0 -3
  200. package/lib-commonjs/components/Tabs/TabItem.types.js.map +0 -1
  201. package/lib-commonjs/components/Tabs/Tabs.base.d.ts +0 -3
  202. package/lib-commonjs/components/Tabs/Tabs.base.js +0 -182
  203. package/lib-commonjs/components/Tabs/Tabs.base.js.map +0 -1
  204. package/lib-commonjs/components/Tabs/Tabs.d.ts +0 -8
  205. package/lib-commonjs/components/Tabs/Tabs.js +0 -15
  206. package/lib-commonjs/components/Tabs/Tabs.js.map +0 -1
  207. package/lib-commonjs/components/Tabs/Tabs.styles.d.ts +0 -2
  208. package/lib-commonjs/components/Tabs/Tabs.styles.js +0 -268
  209. package/lib-commonjs/components/Tabs/Tabs.styles.js.map +0 -1
  210. package/lib-commonjs/components/Tabs/Tabs.types.d.ts +0 -113
  211. package/lib-commonjs/components/Tabs/Tabs.types.js +0 -3
  212. package/lib-commonjs/components/Tabs/Tabs.types.js.map +0 -1
  213. package/lib-commonjs/components/Tabs/index.d.ts +0 -5
  214. package/lib-commonjs/components/Tabs/index.js +0 -11
  215. package/lib-commonjs/components/Tabs/index.js.map +0 -1
  216. package/lib-commonjs/utilities/observeResize.d.ts +0 -21
  217. package/lib-commonjs/utilities/observeResize.js +0 -50
  218. package/lib-commonjs/utilities/observeResize.js.map +0 -1
  219. package/lib-commonjs/utilities/useOverflow.d.ts +0 -45
  220. package/lib-commonjs/utilities/useOverflow.js +0 -130
  221. package/lib-commonjs/utilities/useOverflow.js.map +0 -1
  222. package/src/components/Tabs/TabItem.types.ts +0 -69
  223. package/src/components/Tabs/Tabs.types.ts +0 -131
@@ -1,179 +0,0 @@
1
- import { __assign, __rest } from "tslib";
2
- import * as React from 'react';
3
- import { useControllableValue, useId } from '@fluentui/react-hooks';
4
- import { classNamesFunction, css, divProperties, getNativeProps, getRTL, KeyCodes, warn } from '@fluentui/utilities';
5
- import { DirectionalHint, FocusZone, FocusZoneDirection, Icon, } from '@fluentui/react';
6
- import { CommandButton } from '@fluentui/react/lib/Button';
7
- import { TabItem } from './index';
8
- import { useOverflow } from '../../utilities/useOverflow';
9
- var getClassNames = classNamesFunction();
10
- var COMPONENT_NAME = 'Tabs';
11
- var getTabId = function (props, baseId, itemKey, index) {
12
- if (props.getTabId) {
13
- return props.getTabId(itemKey, index);
14
- }
15
- return baseId + ("-Tab" + index);
16
- };
17
- // Gets the set of Tabs as array of TabItemProps
18
- // The set of Tabs is determined by child components of type TabItem
19
- var getTabItems = function (props, baseId) {
20
- var result = {
21
- tabs: [],
22
- keyToIndexMapping: {},
23
- keyToTabIdMapping: {},
24
- };
25
- React.Children.forEach(React.Children.toArray(props.children), function (child, index) {
26
- if (isTabItem(child)) {
27
- var _a = child.props, _b = _a.itemKey, itemKey = _b === void 0 ? index.toString() : _b, tabItemProps = __rest(_a, ["itemKey"]);
28
- result.tabs.push(__assign(__assign({}, tabItemProps), { itemKey: itemKey }));
29
- result.keyToIndexMapping[itemKey] = index;
30
- result.keyToTabIdMapping[itemKey] = getTabId(props, baseId, itemKey, index);
31
- }
32
- else if (child) {
33
- warn('The children of a Tabs component must be of type TabItem to be rendered.');
34
- }
35
- });
36
- return result;
37
- };
38
- var isTabItem = function (item) {
39
- var _a, _b;
40
- return ((_b = (_a = item) === null || _a === void 0 ? void 0 : _a.type) === null || _b === void 0 ? void 0 : _b.name) === TabItem.name;
41
- };
42
- export var TabsBase = React.forwardRef(function (props, ref) {
43
- var focusZoneRef = React.useRef(null);
44
- var overflowMenuButtonComponentRef = React.useRef(null);
45
- var baseId = useId('Tabs');
46
- var _a = useControllableValue(props.selectedKey, props.defaultSelectedKey), selectedKey = _a[0], setSelectedKey = _a[1];
47
- var componentRef = props.componentRef, theme = props.theme, tabSize = props.tabSize, tabFormat = props.tabFormat, overflowBehavior = props.overflowBehavior;
48
- var classNames;
49
- var divProps = getNativeProps(props, divProperties);
50
- var tabCollection = getTabItems(props, baseId);
51
- React.useImperativeHandle(componentRef, function () { return ({
52
- focus: function () {
53
- var _a;
54
- (_a = focusZoneRef.current) === null || _a === void 0 ? void 0 : _a.focus();
55
- },
56
- }); });
57
- var renderTabContent = function (tab) {
58
- if (!tab) {
59
- return null;
60
- }
61
- var itemCount = tab.itemCount, itemIcon = tab.itemIcon, headerText = tab.headerText;
62
- return (React.createElement("span", { className: classNames.tabContent },
63
- itemIcon !== undefined && (React.createElement("span", { className: classNames.icon },
64
- React.createElement(Icon, { iconName: itemIcon }))),
65
- headerText !== undefined && React.createElement("span", { className: classNames.text },
66
- " ",
67
- tab.headerText),
68
- itemCount !== undefined && React.createElement("span", { className: classNames.count },
69
- " (",
70
- itemCount,
71
- ")")));
72
- };
73
- var renderTab = function (renderTabCollection, tab, renderTabSelectedKey, className) {
74
- var itemKey = tab.itemKey, headerButtonProps = tab.headerButtonProps, onRenderTab = tab.onRenderTab;
75
- var tabId = renderTabCollection.keyToTabIdMapping[itemKey];
76
- var tabContent;
77
- var isSelected = renderTabSelectedKey === itemKey;
78
- if (onRenderTab) {
79
- tabContent = onRenderTab(tab, renderTabContent);
80
- }
81
- else {
82
- tabContent = renderTabContent(tab);
83
- }
84
- var contentString = tab.headerText || '';
85
- contentString += tab.itemCount ? ' (' + tab.itemCount + ')' : '';
86
- // Adding space supplementary for icon
87
- contentString += tab.itemIcon ? ' xx' : '';
88
- return (React.createElement(CommandButton, __assign({}, headerButtonProps, { id: tabId, key: itemKey, className: css(className, isSelected && classNames.tabIsSelected),
89
- // eslint-disable-next-line react/jsx-no-bind
90
- onClick: function (ev) { return onTabClick(itemKey, ev); },
91
- // eslint-disable-next-line react/jsx-no-bind
92
- onKeyDown: function (ev) { return onKeyDown(itemKey, ev); }, "aria-label": tab.ariaLabel, role: tab.role || 'tab', "aria-selected": isSelected, name: tab.headerText, keytipProps: tab.keytipProps, "data-content": contentString }), tabContent));
93
- };
94
- var onTabClick = function (itemKey, ev) {
95
- ev.preventDefault();
96
- updateSelectedItem(itemKey, ev);
97
- };
98
- var onKeyDown = function (itemKey, ev) {
99
- // eslint-disable-next-line deprecation/deprecation
100
- if (ev.which === KeyCodes.enter) {
101
- ev.preventDefault();
102
- updateSelectedItem(itemKey);
103
- }
104
- };
105
- var updateSelectedItem = function (itemKey, ev) {
106
- var _a;
107
- setSelectedKey(itemKey);
108
- tabCollection = getTabItems(props, baseId);
109
- if (props.onTabClick && tabCollection.keyToIndexMapping[itemKey] >= 0) {
110
- var selectedIndex = tabCollection.keyToIndexMapping[itemKey];
111
- var item = React.Children.toArray(props.children)[selectedIndex];
112
- if (isTabItem(item)) {
113
- props.onTabClick(item, ev);
114
- }
115
- }
116
- (_a = overflowMenuButtonComponentRef.current) === null || _a === void 0 ? void 0 : _a.dismissMenu();
117
- };
118
- var renderTabItem = function (itemKey, isActive) {
119
- if (props.headersOnly || !itemKey) {
120
- return null;
121
- }
122
- var index = tabCollection.keyToIndexMapping[itemKey];
123
- var selectedTabId = tabCollection.keyToTabIdMapping[itemKey];
124
- return (React.createElement("div", { role: "tabpanel", hidden: !isActive, key: itemKey, "aria-hidden": !isActive, "aria-labelledby": selectedTabId, className: classNames.itemContainer }, React.Children.toArray(props.children)[index]));
125
- };
126
- var isKeyValid = function (itemKey) {
127
- return itemKey !== undefined && itemKey !== null && tabCollection.keyToIndexMapping[itemKey] !== undefined;
128
- };
129
- var getSelectedKey = function () {
130
- if (isKeyValid(selectedKey)) {
131
- return selectedKey;
132
- }
133
- if (tabCollection.tabs.length) {
134
- return tabCollection.tabs[0].itemKey;
135
- }
136
- return undefined;
137
- };
138
- classNames = getClassNames(props.styles, {
139
- theme: theme,
140
- tabSize: tabSize,
141
- tabFormat: tabFormat,
142
- });
143
- var renderedSelectedKey = getSelectedKey();
144
- var renderedSelectedIndex = renderedSelectedKey ? tabCollection.keyToIndexMapping[renderedSelectedKey] : 0;
145
- var items = tabCollection.tabs.map(function (l) { return renderTab(tabCollection, l, renderedSelectedKey, classNames.tab); });
146
- // The overflow menu starts empty and items[] is updated as the overflow items change
147
- var overflowMenuProps = React.useMemo(function () { return ({
148
- items: [],
149
- alignTargetEdge: true,
150
- directionalHint: DirectionalHint.bottomRightEdge,
151
- }); }, []);
152
- var overflowMenuButtonRef = useOverflow({
153
- onOverflowItemsChanged: function (overflowIndex, elements) {
154
- // Set data-is-overflowing on each item
155
- elements.forEach(function (_a) {
156
- var ele = _a.ele, isOverflowing = _a.isOverflowing;
157
- return (ele.dataset.isOverflowing = "" + isOverflowing);
158
- });
159
- // Update the menu items
160
- overflowMenuProps.items = tabCollection.tabs.slice(overflowIndex).map(function (tab, index) { return ({
161
- key: tab.itemKey || "" + (overflowIndex + index),
162
- onRender: function () { return renderTab(tabCollection, tab, renderedSelectedKey, classNames.tabInMenu); },
163
- }); });
164
- },
165
- rtl: getRTL(theme),
166
- pinnedIndex: renderedSelectedIndex,
167
- }).menuButtonRef;
168
- return (React.createElement("div", __assign({ role: "toolbar" }, divProps, { ref: ref }),
169
- React.createElement(FocusZone, { componentRef: focusZoneRef, direction: FocusZoneDirection.horizontal, className: classNames.root, role: "tablist" },
170
- items,
171
- overflowBehavior === 'menu' && (React.createElement(CommandButton, { className: css(classNames.tab, classNames.overflowMenuButton), elementRef: overflowMenuButtonRef, componentRef: overflowMenuButtonComponentRef, menuProps: overflowMenuProps, menuIconProps: { iconName: 'More', style: { color: 'inherit' } } }))),
172
- renderedSelectedKey &&
173
- tabCollection.tabs.map(function (tab) {
174
- return (tab.alwaysRender === true || renderedSelectedKey === tab.itemKey) &&
175
- renderTabItem(tab.itemKey, renderedSelectedKey === tab.itemKey);
176
- })));
177
- });
178
- TabsBase.displayName = COMPONENT_NAME;
179
- //# sourceMappingURL=Tabs.base.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Tabs.base.js","sourceRoot":"../src/","sources":["components/Tabs/Tabs.base.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { useControllableValue, useId } from '@fluentui/react-hooks';\nimport { classNamesFunction, css, divProperties, getNativeProps, getRTL, KeyCodes, warn } from '@fluentui/utilities';\nimport {\n DirectionalHint,\n FocusZone,\n FocusZoneDirection,\n Icon,\n IContextualMenuProps,\n IFocusZone,\n} from '@fluentui/react';\nimport { CommandButton, IButton } from '@fluentui/react/lib/Button';\nimport { TabsImperativeHandle, TabItemProps, TabsProps, TabsStyleProps, TabsStyles, TabItem } from './index';\nimport { useOverflow } from '../../utilities/useOverflow';\n\nconst getClassNames = classNamesFunction<TabsStyleProps, TabsStyles>();\n\nconst COMPONENT_NAME = 'Tabs';\n\ntype TabItemCollection = {\n tabs: TabItemProps[];\n keyToIndexMapping: { [key: string]: number };\n keyToTabIdMapping: { [key: string]: string };\n};\n\nconst getTabId = (props: TabsProps, baseId: string, itemKey: string, index: number): string => {\n if (props.getTabId) {\n return props.getTabId(itemKey, index);\n }\n return baseId + `-Tab${index}`;\n};\n\n// Gets the set of Tabs as array of TabItemProps\n// The set of Tabs is determined by child components of type TabItem\nconst getTabItems = (props: TabsProps, baseId: string): TabItemCollection => {\n const result: TabItemCollection = {\n tabs: [],\n keyToIndexMapping: {},\n keyToTabIdMapping: {},\n };\n\n React.Children.forEach(React.Children.toArray(props.children), (child: React.ReactNode, index: number) => {\n if (isTabItem(child)) {\n const { itemKey = index.toString(), ...tabItemProps } = child.props;\n result.tabs.push({\n ...tabItemProps,\n itemKey: itemKey,\n });\n result.keyToIndexMapping[itemKey] = index;\n result.keyToTabIdMapping[itemKey] = getTabId(props, baseId, itemKey, index);\n } else if (child) {\n warn('The children of a Tabs component must be of type TabItem to be rendered.');\n }\n });\n return result;\n};\n\nconst isTabItem = (item: React.ReactNode): item is TabItem => {\n return ((item as React.ReactElement)?.type as React.ComponentType)?.name === TabItem.name;\n};\n\nexport const TabsBase: React.FunctionComponent<TabsProps> = React.forwardRef<HTMLDivElement, TabsProps>(\n (props, ref) => {\n const focusZoneRef = React.useRef<IFocusZone>(null);\n const overflowMenuButtonComponentRef = React.useRef<IButton>(null);\n const baseId: string = useId('Tabs');\n\n const [selectedKey, setSelectedKey] = useControllableValue(props.selectedKey, props.defaultSelectedKey);\n\n const { componentRef, theme, tabSize, tabFormat, overflowBehavior } = props;\n\n let classNames: { [key in keyof TabsStyles]: string };\n const divProps = getNativeProps<React.HTMLAttributes<HTMLDivElement>>(props, divProperties);\n\n let tabCollection = getTabItems(props, baseId);\n\n React.useImperativeHandle(componentRef as React.RefObject<TabsImperativeHandle>, () => ({\n focus: () => {\n focusZoneRef.current?.focus();\n },\n }));\n\n const renderTabContent = (tab?: TabItemProps): JSX.Element | null => {\n if (!tab) {\n return null;\n }\n\n const { itemCount, itemIcon, headerText } = tab;\n return (\n <span className={classNames.tabContent}>\n {itemIcon !== undefined && (\n <span className={classNames.icon}>\n <Icon iconName={itemIcon} />\n </span>\n )}\n {headerText !== undefined && <span className={classNames.text}> {tab.headerText}</span>}\n {itemCount !== undefined && <span className={classNames.count}> ({itemCount})</span>}\n </span>\n );\n };\n\n const renderTab = (\n renderTabCollection: TabItemCollection,\n tab: TabItemProps,\n renderTabSelectedKey: string | null | undefined,\n className: string,\n ): JSX.Element => {\n const { itemKey, headerButtonProps, onRenderTab } = tab;\n const tabId = renderTabCollection.keyToTabIdMapping[itemKey!];\n let tabContent: JSX.Element | null;\n const isSelected: boolean = renderTabSelectedKey === itemKey;\n\n if (onRenderTab) {\n tabContent = onRenderTab(tab, renderTabContent);\n } else {\n tabContent = renderTabContent(tab);\n }\n\n let contentString = tab.headerText || '';\n contentString += tab.itemCount ? ' (' + tab.itemCount + ')' : '';\n // Adding space supplementary for icon\n contentString += tab.itemIcon ? ' xx' : '';\n return (\n <CommandButton\n {...headerButtonProps}\n id={tabId}\n key={itemKey}\n className={css(className, isSelected && classNames.tabIsSelected)}\n // eslint-disable-next-line react/jsx-no-bind\n onClick={(ev: React.MouseEvent<HTMLElement>) => onTabClick(itemKey!, ev)}\n // eslint-disable-next-line react/jsx-no-bind\n onKeyDown={(ev: React.KeyboardEvent<HTMLElement>) => onKeyDown(itemKey!, ev)}\n aria-label={tab.ariaLabel}\n role={tab.role || 'tab'}\n aria-selected={isSelected}\n name={tab.headerText}\n keytipProps={tab.keytipProps}\n data-content={contentString}\n >\n {tabContent}\n </CommandButton>\n );\n };\n\n const onTabClick = (itemKey: string, ev: React.MouseEvent<HTMLElement>): void => {\n ev.preventDefault();\n updateSelectedItem(itemKey, ev);\n };\n\n const onKeyDown = (itemKey: string, ev: React.KeyboardEvent<HTMLElement>): void => {\n // eslint-disable-next-line deprecation/deprecation\n if (ev.which === KeyCodes.enter) {\n ev.preventDefault();\n updateSelectedItem(itemKey);\n }\n };\n\n const updateSelectedItem = (itemKey: string, ev?: React.MouseEvent<HTMLElement>): void => {\n setSelectedKey(itemKey);\n tabCollection = getTabItems(props, baseId);\n if (props.onTabClick && tabCollection.keyToIndexMapping[itemKey] >= 0) {\n const selectedIndex = tabCollection.keyToIndexMapping[itemKey];\n const item = React.Children.toArray(props.children)[selectedIndex];\n if (isTabItem(item)) {\n props.onTabClick(item, ev);\n }\n }\n\n overflowMenuButtonComponentRef.current?.dismissMenu();\n };\n\n const renderTabItem = (itemKey: string | undefined, isActive: boolean): JSX.Element | null => {\n if (props.headersOnly || !itemKey) {\n return null;\n }\n\n const index = tabCollection.keyToIndexMapping[itemKey];\n const selectedTabId = tabCollection.keyToTabIdMapping[itemKey];\n return (\n <div\n role=\"tabpanel\"\n hidden={!isActive}\n key={itemKey}\n aria-hidden={!isActive}\n aria-labelledby={selectedTabId}\n className={classNames.itemContainer}\n >\n {React.Children.toArray(props.children)[index]}\n </div>\n );\n };\n\n const isKeyValid = (itemKey: string | null | undefined): boolean => {\n return itemKey !== undefined && itemKey !== null && tabCollection.keyToIndexMapping[itemKey] !== undefined;\n };\n\n const getSelectedKey = () => {\n if (isKeyValid(selectedKey)) {\n return selectedKey;\n }\n if (tabCollection.tabs.length) {\n return tabCollection.tabs[0].itemKey;\n }\n return undefined;\n };\n\n classNames = getClassNames(props.styles!, {\n theme: theme!,\n tabSize,\n tabFormat,\n });\n\n const renderedSelectedKey = getSelectedKey();\n const renderedSelectedIndex = renderedSelectedKey ? tabCollection.keyToIndexMapping[renderedSelectedKey] : 0;\n\n const items = tabCollection.tabs.map(l => renderTab(tabCollection, l, renderedSelectedKey, classNames.tab));\n\n // The overflow menu starts empty and items[] is updated as the overflow items change\n const overflowMenuProps: IContextualMenuProps = React.useMemo(\n () => ({\n items: [],\n alignTargetEdge: true,\n directionalHint: DirectionalHint.bottomRightEdge,\n }),\n [],\n );\n\n const { menuButtonRef: overflowMenuButtonRef } = useOverflow({\n onOverflowItemsChanged: (overflowIndex, elements) => {\n // Set data-is-overflowing on each item\n elements.forEach(({ ele, isOverflowing }) => (ele.dataset.isOverflowing = `${isOverflowing}`));\n\n // Update the menu items\n overflowMenuProps.items = tabCollection.tabs.slice(overflowIndex).map((tab, index) => ({\n key: tab.itemKey || `${overflowIndex + index}`,\n onRender: () => renderTab(tabCollection, tab, renderedSelectedKey, classNames.tabInMenu),\n }));\n },\n rtl: getRTL(theme),\n pinnedIndex: renderedSelectedIndex,\n });\n\n return (\n <div role=\"toolbar\" {...divProps} ref={ref}>\n <FocusZone\n componentRef={focusZoneRef}\n direction={FocusZoneDirection.horizontal}\n className={classNames.root}\n role=\"tablist\"\n >\n {items}\n {overflowBehavior === 'menu' && (\n <CommandButton\n className={css(classNames.tab, classNames.overflowMenuButton)}\n elementRef={overflowMenuButtonRef}\n componentRef={overflowMenuButtonComponentRef}\n menuProps={overflowMenuProps}\n menuIconProps={{ iconName: 'More', style: { color: 'inherit' } }}\n />\n )}\n </FocusZone>\n {renderedSelectedKey &&\n tabCollection.tabs.map(\n tab =>\n (tab.alwaysRender === true || renderedSelectedKey === tab.itemKey) &&\n renderTabItem(tab.itemKey, renderedSelectedKey === tab.itemKey),\n )}\n </div>\n );\n },\n);\nTabsBase.displayName = COMPONENT_NAME;\n"]}
@@ -1,8 +0,0 @@
1
- import * as React from 'react';
2
- import { TabsProps } from './Tabs.types';
3
- /**
4
- * The Tabs control and related tabs pattern are used for navigating frequently accessed,
5
- * distinct content categories. Tabs allow for navigation between two or more content
6
- * views and relies on text headers to articulate the different sections of content.
7
- */
8
- export declare const Tabs: React.FunctionComponent<TabsProps>;
@@ -1,12 +0,0 @@
1
- import { styled } from '@fluentui/utilities';
2
- import { TabsBase } from './Tabs.base';
3
- import { getStyles } from './Tabs.styles';
4
- /**
5
- * The Tabs control and related tabs pattern are used for navigating frequently accessed,
6
- * distinct content categories. Tabs allow for navigation between two or more content
7
- * views and relies on text headers to articulate the different sections of content.
8
- */
9
- export var Tabs = styled(TabsBase, getStyles, undefined, {
10
- scope: 'Tabs',
11
- });
12
- //# sourceMappingURL=Tabs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Tabs.js","sourceRoot":"../src/","sources":["components/Tabs/Tabs.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C;;;;GAIG;AACH,MAAM,CAAC,IAAM,IAAI,GAAuC,MAAM,CAC5D,QAAQ,EACR,SAAS,EACT,SAAS,EACT;IACE,KAAK,EAAE,MAAM;CACd,CACF,CAAC","sourcesContent":["import * as React from 'react';\nimport { styled } from '@fluentui/utilities';\nimport { TabsProps, TabsStyleProps, TabsStyles } from './Tabs.types';\nimport { TabsBase } from './Tabs.base';\nimport { getStyles } from './Tabs.styles';\n\n/**\n * The Tabs control and related tabs pattern are used for navigating frequently accessed,\n * distinct content categories. Tabs allow for navigation between two or more content\n * views and relies on text headers to articulate the different sections of content.\n */\nexport const Tabs: React.FunctionComponent<TabsProps> = styled<TabsProps, TabsStyleProps, TabsStyles>(\n TabsBase,\n getStyles,\n undefined,\n {\n scope: 'Tabs',\n },\n);\n"]}
@@ -1,2 +0,0 @@
1
- import { TabsStyleProps, TabsStyles } from './Tabs.types';
2
- export declare const getStyles: (props: TabsStyleProps) => TabsStyles;
@@ -1,264 +0,0 @@
1
- import { __assign, __spreadArrays } from "tslib";
2
- import { AnimationVariables, getGlobalClassNames, HighContrastSelector, normalize, FontWeights, getHighContrastNoAdjustStyle, } from '@fluentui/style-utilities';
3
- import { IsFocusVisibleClassName } from '@fluentui/utilities';
4
- var globalClassNames = {
5
- count: 'ms-Tabs-count',
6
- icon: 'ms-Tabs-icon',
7
- tabIsSelected: 'is-selected',
8
- tab: 'ms-Tabs-tab',
9
- tabContent: 'ms-Tabs-tabContent',
10
- root: 'ms-Tabs',
11
- rootIsLarge: 'ms-Tabs--large',
12
- rootIsTabs: 'ms-Tabs--tabs',
13
- text: 'ms-Tabs-text',
14
- tabInMenu: 'ms-Tabs-tabInMenu',
15
- overflowMenuButton: 'ms-Tabs-overflowMenuButton',
16
- };
17
- var getLinkStyles = function (props, classNames, isLinkInOverflowMenu) {
18
- var _a, _b, _c;
19
- if (isLinkInOverflowMenu === void 0) { isLinkInOverflowMenu = false; }
20
- var tabSize = props.tabSize, tabFormat = props.tabFormat;
21
- var _d = props.theme, semanticColors = _d.semanticColors, fonts = _d.fonts;
22
- var rootIsLarge = tabSize === 'large';
23
- var rootIsTabs = tabFormat === 'tabs';
24
- return [
25
- fonts.medium,
26
- {
27
- color: semanticColors.actionLink,
28
- padding: '0 8px',
29
- position: 'relative',
30
- backgroundColor: 'transparent',
31
- border: 0,
32
- borderRadius: 0,
33
- selectors: (_a = {
34
- ':hover': {
35
- backgroundColor: semanticColors.buttonBackgroundHovered,
36
- color: semanticColors.buttonTextHovered,
37
- cursor: 'pointer',
38
- },
39
- ':active': {
40
- backgroundColor: semanticColors.buttonBackgroundPressed,
41
- color: semanticColors.buttonTextHovered,
42
- },
43
- ':focus': {
44
- outline: 'none',
45
- }
46
- },
47
- _a["." + IsFocusVisibleClassName + " &:focus"] = {
48
- outline: "1px solid " + semanticColors.focusBorder,
49
- },
50
- _a["." + IsFocusVisibleClassName + " &:focus:after"] = {
51
- content: 'attr(data-content)',
52
- position: 'relative',
53
- border: 0,
54
- },
55
- _a),
56
- },
57
- !isLinkInOverflowMenu && [
58
- {
59
- display: 'inline-block',
60
- lineHeight: 44,
61
- height: 44,
62
- marginRight: 8,
63
- textAlign: 'center',
64
- selectors: {
65
- ':before': {
66
- backgroundColor: 'transparent',
67
- bottom: 0,
68
- content: '""',
69
- height: 2,
70
- left: 8,
71
- position: 'absolute',
72
- right: 8,
73
- transition: "left " + AnimationVariables.durationValue2 + " " + AnimationVariables.easeFunction2 + ",\n right " + AnimationVariables.durationValue2 + " " + AnimationVariables.easeFunction2,
74
- },
75
- ':after': {
76
- color: 'transparent',
77
- content: 'attr(data-content)',
78
- display: 'block',
79
- fontWeight: FontWeights.bold,
80
- height: 1,
81
- overflow: 'hidden',
82
- visibility: 'hidden',
83
- },
84
- },
85
- },
86
- rootIsLarge && {
87
- fontSize: fonts.large.fontSize,
88
- },
89
- rootIsTabs && [
90
- {
91
- marginRight: 0,
92
- height: 44,
93
- lineHeight: 44,
94
- backgroundColor: semanticColors.buttonBackground,
95
- padding: '0 10px',
96
- verticalAlign: 'top',
97
- selectors: (_b = {
98
- ':focus': {
99
- outlineOffset: '-1px',
100
- }
101
- },
102
- _b["." + IsFocusVisibleClassName + " &:focus::before"] = {
103
- height: 'auto',
104
- background: 'transparent',
105
- transition: 'none',
106
- },
107
- _b['&:hover, &:focus'] = {
108
- color: semanticColors.buttonTextCheckedHovered,
109
- },
110
- _b['&:active, &:hover'] = {
111
- color: semanticColors.primaryButtonText,
112
- backgroundColor: semanticColors.primaryButtonBackground,
113
- },
114
- _b["&." + classNames.tabIsSelected] = {
115
- backgroundColor: semanticColors.primaryButtonBackground,
116
- color: semanticColors.primaryButtonText,
117
- fontWeight: FontWeights.regular,
118
- selectors: (_c = {
119
- ':before': {
120
- backgroundColor: 'transparent',
121
- transition: 'none',
122
- position: 'absolute',
123
- top: 0,
124
- left: 0,
125
- right: 0,
126
- bottom: 0,
127
- content: '""',
128
- height: 0,
129
- },
130
- ':hover': {
131
- backgroundColor: semanticColors.primaryButtonBackgroundHovered,
132
- color: semanticColors.primaryButtonText,
133
- },
134
- '&:active': {
135
- backgroundColor: semanticColors.primaryButtonBackgroundPressed,
136
- color: semanticColors.primaryButtonText,
137
- }
138
- },
139
- _c[HighContrastSelector] = __assign({ fontWeight: FontWeights.semibold, color: 'HighlightText', background: 'Highlight' }, getHighContrastNoAdjustStyle()),
140
- _c),
141
- },
142
- _b),
143
- },
144
- ],
145
- ],
146
- ];
147
- };
148
- export var getStyles = function (props) {
149
- var _a, _b, _c, _d;
150
- var className = props.className, tabSize = props.tabSize, tabFormat = props.tabFormat, theme = props.theme;
151
- var semanticColors = theme.semanticColors, fonts = theme.fonts;
152
- var classNames = getGlobalClassNames(globalClassNames, theme);
153
- var rootIsLarge = tabSize === 'large';
154
- var rootIsTabs = tabFormat === 'tabs';
155
- return {
156
- root: [
157
- classNames.root,
158
- fonts.medium,
159
- normalize,
160
- {
161
- position: 'relative',
162
- color: semanticColors.link,
163
- whiteSpace: 'nowrap',
164
- },
165
- rootIsLarge && classNames.rootIsLarge,
166
- rootIsTabs && classNames.rootIsTabs,
167
- className,
168
- ],
169
- itemContainer: {
170
- selectors: {
171
- '&[hidden]': {
172
- display: 'none',
173
- },
174
- },
175
- },
176
- tab: __spreadArrays([
177
- classNames.tab
178
- ], getLinkStyles(props, classNames), [
179
- (_a = {},
180
- _a["&[data-is-overflowing='true']"] = {
181
- display: 'none',
182
- },
183
- _a),
184
- ]),
185
- overflowMenuButton: [
186
- classNames.overflowMenuButton,
187
- (_b = {
188
- visibility: 'hidden',
189
- position: 'absolute',
190
- right: 0
191
- },
192
- _b["." + classNames.tab + "[data-is-overflowing='true'] ~ &"] = {
193
- visibility: 'visible',
194
- position: 'relative',
195
- },
196
- _b),
197
- ],
198
- tabInMenu: __spreadArrays([
199
- classNames.tabInMenu
200
- ], getLinkStyles(props, classNames, true), [
201
- {
202
- textAlign: 'left',
203
- width: '100%',
204
- height: 36,
205
- lineHeight: 36,
206
- },
207
- ]),
208
- tabIsSelected: [
209
- classNames.tab,
210
- classNames.tabIsSelected,
211
- {
212
- fontWeight: FontWeights.semibold,
213
- selectors: (_c = {
214
- ':before': {
215
- backgroundColor: semanticColors.inputBackgroundChecked,
216
- selectors: (_d = {},
217
- _d[HighContrastSelector] = {
218
- backgroundColor: 'Highlight',
219
- },
220
- _d),
221
- },
222
- ':hover::before': {
223
- left: 0,
224
- right: 0,
225
- }
226
- },
227
- _c[HighContrastSelector] = {
228
- color: 'Highlight',
229
- },
230
- _c),
231
- },
232
- ],
233
- tabContent: [
234
- classNames.tabContent,
235
- {
236
- flex: '0 1 100%',
237
- selectors: {
238
- '& > * ': {
239
- marginLeft: 4,
240
- },
241
- '& > *:first-child': {
242
- marginLeft: 0,
243
- },
244
- },
245
- },
246
- ],
247
- text: [
248
- classNames.text,
249
- {
250
- display: 'inline-block',
251
- verticalAlign: 'top',
252
- },
253
- ],
254
- count: [
255
- classNames.count,
256
- {
257
- display: 'inline-block',
258
- verticalAlign: 'top',
259
- },
260
- ],
261
- icon: classNames.icon,
262
- };
263
- };
264
- //# sourceMappingURL=Tabs.styles.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Tabs.styles.js","sourceRoot":"../src/","sources":["components/Tabs/Tabs.styles.ts"],"names":[],"mappings":"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","sourcesContent":["import { TabsStyleProps, TabsStyles } from './Tabs.types';\nimport {\n AnimationVariables,\n getGlobalClassNames,\n HighContrastSelector,\n IStyle,\n normalize,\n FontWeights,\n getHighContrastNoAdjustStyle,\n} from '@fluentui/style-utilities';\nimport { IsFocusVisibleClassName } from '@fluentui/utilities';\n\nconst globalClassNames = {\n count: 'ms-Tabs-count',\n icon: 'ms-Tabs-icon',\n tabIsSelected: 'is-selected',\n tab: 'ms-Tabs-tab',\n tabContent: 'ms-Tabs-tabContent',\n root: 'ms-Tabs',\n rootIsLarge: 'ms-Tabs--large',\n rootIsTabs: 'ms-Tabs--tabs',\n text: 'ms-Tabs-text',\n tabInMenu: 'ms-Tabs-tabInMenu',\n overflowMenuButton: 'ms-Tabs-overflowMenuButton',\n};\n\nconst getLinkStyles = (\n props: TabsStyleProps,\n classNames: { [key: string]: string },\n isLinkInOverflowMenu: boolean = false,\n): IStyle[] => {\n const { tabSize, tabFormat } = props;\n const { semanticColors, fonts } = props.theme;\n const rootIsLarge = tabSize === 'large';\n const rootIsTabs = tabFormat === 'tabs';\n\n return [\n fonts.medium,\n {\n color: semanticColors.actionLink,\n padding: '0 8px',\n position: 'relative',\n backgroundColor: 'transparent',\n border: 0,\n borderRadius: 0,\n selectors: {\n ':hover': {\n backgroundColor: semanticColors.buttonBackgroundHovered,\n color: semanticColors.buttonTextHovered,\n cursor: 'pointer',\n },\n ':active': {\n backgroundColor: semanticColors.buttonBackgroundPressed,\n color: semanticColors.buttonTextHovered,\n },\n ':focus': {\n outline: 'none',\n },\n [`.${IsFocusVisibleClassName} &:focus`]: {\n outline: `1px solid ${semanticColors.focusBorder}`,\n },\n [`.${IsFocusVisibleClassName} &:focus:after`]: {\n content: 'attr(data-content)',\n position: 'relative',\n border: 0,\n },\n },\n },\n !isLinkInOverflowMenu && [\n {\n display: 'inline-block',\n lineHeight: 44,\n height: 44,\n marginRight: 8,\n textAlign: 'center',\n selectors: {\n ':before': {\n backgroundColor: 'transparent',\n bottom: 0,\n content: '\"\"',\n height: 2,\n left: 8,\n position: 'absolute',\n right: 8,\n transition: `left ${AnimationVariables.durationValue2} ${AnimationVariables.easeFunction2},\n right ${AnimationVariables.durationValue2} ${AnimationVariables.easeFunction2}`,\n },\n ':after': {\n color: 'transparent',\n content: 'attr(data-content)',\n display: 'block',\n fontWeight: FontWeights.bold,\n height: 1,\n overflow: 'hidden',\n visibility: 'hidden',\n },\n },\n },\n rootIsLarge && {\n fontSize: fonts.large.fontSize,\n },\n rootIsTabs && [\n {\n marginRight: 0,\n height: 44,\n lineHeight: 44,\n backgroundColor: semanticColors.buttonBackground,\n padding: '0 10px',\n verticalAlign: 'top',\n\n selectors: {\n ':focus': {\n outlineOffset: '-1px',\n },\n [`.${IsFocusVisibleClassName} &:focus::before`]: {\n height: 'auto',\n background: 'transparent',\n transition: 'none',\n },\n '&:hover, &:focus': {\n color: semanticColors.buttonTextCheckedHovered,\n },\n '&:active, &:hover': {\n color: semanticColors.primaryButtonText,\n backgroundColor: semanticColors.primaryButtonBackground,\n },\n [`&.${classNames.tabIsSelected}`]: {\n backgroundColor: semanticColors.primaryButtonBackground,\n color: semanticColors.primaryButtonText,\n fontWeight: FontWeights.regular,\n selectors: {\n ':before': {\n backgroundColor: 'transparent',\n transition: 'none',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n content: '\"\"',\n height: 0,\n },\n ':hover': {\n backgroundColor: semanticColors.primaryButtonBackgroundHovered,\n color: semanticColors.primaryButtonText,\n },\n '&:active': {\n backgroundColor: semanticColors.primaryButtonBackgroundPressed,\n color: semanticColors.primaryButtonText,\n },\n [HighContrastSelector]: {\n fontWeight: FontWeights.semibold,\n color: 'HighlightText',\n background: 'Highlight',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n },\n },\n ],\n ],\n ];\n};\n\nexport const getStyles = (props: TabsStyleProps): TabsStyles => {\n const { className, tabSize, tabFormat, theme } = props;\n const { semanticColors, fonts } = theme;\n\n const classNames = getGlobalClassNames(globalClassNames, theme);\n\n const rootIsLarge = tabSize === 'large';\n const rootIsTabs = tabFormat === 'tabs';\n\n return {\n root: [\n classNames.root,\n fonts.medium,\n normalize,\n {\n position: 'relative',\n color: semanticColors.link,\n whiteSpace: 'nowrap',\n },\n rootIsLarge && classNames.rootIsLarge,\n rootIsTabs && classNames.rootIsTabs,\n className,\n ],\n itemContainer: {\n selectors: {\n '&[hidden]': {\n display: 'none',\n },\n },\n },\n tab: [\n classNames.tab,\n ...getLinkStyles(props, classNames),\n {\n [`&[data-is-overflowing='true']`]: {\n display: 'none',\n },\n },\n ],\n overflowMenuButton: [\n classNames.overflowMenuButton,\n {\n visibility: 'hidden',\n position: 'absolute',\n right: 0,\n [`.${classNames.tab}[data-is-overflowing='true'] ~ &`]: {\n visibility: 'visible',\n position: 'relative',\n },\n },\n ],\n tabInMenu: [\n classNames.tabInMenu,\n ...getLinkStyles(props, classNames, true),\n {\n textAlign: 'left',\n width: '100%',\n height: 36,\n lineHeight: 36,\n },\n ],\n tabIsSelected: [\n classNames.tab,\n classNames.tabIsSelected,\n {\n fontWeight: FontWeights.semibold,\n selectors: {\n ':before': {\n backgroundColor: semanticColors.inputBackgroundChecked,\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'Highlight',\n },\n },\n },\n ':hover::before': {\n left: 0,\n right: 0,\n },\n [HighContrastSelector]: {\n color: 'Highlight',\n },\n },\n },\n ],\n tabContent: [\n classNames.tabContent,\n {\n flex: '0 1 100%',\n selectors: {\n '& > * ': {\n marginLeft: 4,\n },\n '& > *:first-child': {\n marginLeft: 0,\n },\n },\n },\n ],\n text: [\n classNames.text,\n {\n display: 'inline-block',\n verticalAlign: 'top',\n },\n ],\n count: [\n classNames.count,\n {\n display: 'inline-block',\n verticalAlign: 'top',\n },\n ],\n icon: classNames.icon,\n };\n};\n"]}
@@ -1,113 +0,0 @@
1
- import * as React from 'react';
2
- import { IStyle, ITheme } from '@fluentui/style-utilities';
3
- import { IStyleFunctionOrObject } from '@fluentui/utilities';
4
- import { TabItem } from './TabItem';
5
- /**
6
- * {@docCategory Tabs}
7
- */
8
- export interface TabsImperativeHandle {
9
- /**
10
- * Sets focus to the first tab.
11
- */
12
- focus(): void;
13
- }
14
- /**
15
- * {@docCategory Tabs}
16
- */
17
- export interface TabsProps extends React.HTMLAttributes<HTMLDivElement>, React.RefAttributes<HTMLDivElement> {
18
- /**
19
- * Optional callback to access the TabsImperativeHandle interface. Use this instead of ref for accessing
20
- * the public methods and properties of the component.
21
- */
22
- componentRef?: React.RefObject<TabsImperativeHandle>;
23
- /**
24
- * Call to provide customized styling that will layer on top of the variant rules.
25
- */
26
- styles?: IStyleFunctionOrObject<TabsStyleProps, TabsStyles>;
27
- /**
28
- * Theme provided by High-Order Component.
29
- */
30
- theme?: ITheme;
31
- /**
32
- * Additional css class to apply to the Tabs
33
- * @defaultvalue undefined
34
- */
35
- className?: string;
36
- /**
37
- * Default selected TabItem key. Only provide this if the Tabs is an uncontrolled component;
38
- * otherwise, use the `selectedKey` property.
39
- */
40
- defaultSelectedKey?: string;
41
- /**
42
- * Key of the selected tab item. Updating this will override the selected tab state.
43
- * Only provide this if the Tabs is a controlled component where you are maintaining the
44
- * current state; otherwise, use `defaultSelectedKey`.
45
- */
46
- selectedKey?: string | null;
47
- /**
48
- * Callback for when the selected tab item is changed.
49
- */
50
- onTabClick?: (item?: TabItem, ev?: React.MouseEvent<HTMLElement>) => void;
51
- /**
52
- * Tab size (normal, large)
53
- */
54
- tabSize?: TabSizeType;
55
- /**
56
- * Tab format (links, tabs)
57
- */
58
- tabFormat?: TabFormatType;
59
- /**
60
- * Overflow behavior when there is not enough room to display all of the tabs
61
- * * none: Tabs will overflow the container and may not be visible
62
- * * menu: Display an overflow menu that contains the tabs that don't fit
63
- *
64
- * @default none
65
- */
66
- overflowBehavior?: 'none' | 'menu';
67
- /**
68
- * Whether to skip rendering the tabpanel with the content of the selected tab.
69
- * Use this prop if you plan to separately render the tab content
70
- * and don't want to leave an empty tabpanel in the page that may confuse Screen Readers.
71
- */
72
- headersOnly?: boolean;
73
- /**
74
- * Callback to customize how IDs are generated for each tab header.
75
- * Useful if you're rendering content outside and need to connect aria-labelledby.
76
- */
77
- getTabId?: (itemKey: string, index: number) => string;
78
- }
79
- /**
80
- * {@docCategory Tabs}
81
- */
82
- export declare type TabsStyleProps = Required<Pick<TabsProps, 'theme'>> & Pick<TabsProps, 'className'> & {
83
- tabSize?: TabSizeType;
84
- tabFormat?: TabFormatType;
85
- };
86
- /**
87
- * {@docCategory Tabs}
88
- */
89
- export interface TabsStyles {
90
- /**
91
- * Style for the root element.
92
- */
93
- root: IStyle;
94
- tab: IStyle;
95
- tabIsSelected: IStyle;
96
- tabContent: IStyle;
97
- text: IStyle;
98
- count: IStyle;
99
- icon: IStyle;
100
- tabInMenu: IStyle;
101
- overflowMenuButton: IStyle;
102
- itemContainer?: IStyle;
103
- }
104
- /**
105
- * {@docCategory Tabs}
106
- * Display mode for the tabs
107
- */
108
- export declare type TabFormatType = 'links' | 'tabs';
109
- /**
110
- * {@docCategory Tabs}
111
- * Size of the tabs
112
- */
113
- export declare type TabSizeType = 'normal' | 'large';