@fluentui/react-tabs 1.0.0-beta.96 → 9.0.0-beta.6

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 +51 -1817
  2. package/CHANGELOG.md +17 -729
  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 +18 -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,182 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TabsBase = void 0;
4
- var tslib_1 = require("tslib");
5
- var React = require("react");
6
- var react_hooks_1 = require("@fluentui/react-hooks");
7
- var utilities_1 = require("@fluentui/utilities");
8
- var react_1 = require("@fluentui/react");
9
- var Button_1 = require("@fluentui/react/lib-commonjs/Button");
10
- var index_1 = require("./index");
11
- var useOverflow_1 = require("../../utilities/useOverflow");
12
- var getClassNames = utilities_1.classNamesFunction();
13
- var COMPONENT_NAME = 'Tabs';
14
- var getTabId = function (props, baseId, itemKey, index) {
15
- if (props.getTabId) {
16
- return props.getTabId(itemKey, index);
17
- }
18
- return baseId + ("-Tab" + index);
19
- };
20
- // Gets the set of Tabs as array of TabItemProps
21
- // The set of Tabs is determined by child components of type TabItem
22
- var getTabItems = function (props, baseId) {
23
- var result = {
24
- tabs: [],
25
- keyToIndexMapping: {},
26
- keyToTabIdMapping: {},
27
- };
28
- React.Children.forEach(React.Children.toArray(props.children), function (child, index) {
29
- if (isTabItem(child)) {
30
- var _a = child.props, _b = _a.itemKey, itemKey = _b === void 0 ? index.toString() : _b, tabItemProps = tslib_1.__rest(_a, ["itemKey"]);
31
- result.tabs.push(tslib_1.__assign(tslib_1.__assign({}, tabItemProps), { itemKey: itemKey }));
32
- result.keyToIndexMapping[itemKey] = index;
33
- result.keyToTabIdMapping[itemKey] = getTabId(props, baseId, itemKey, index);
34
- }
35
- else if (child) {
36
- utilities_1.warn('The children of a Tabs component must be of type TabItem to be rendered.');
37
- }
38
- });
39
- return result;
40
- };
41
- var isTabItem = function (item) {
42
- var _a, _b;
43
- return ((_b = (_a = item) === null || _a === void 0 ? void 0 : _a.type) === null || _b === void 0 ? void 0 : _b.name) === index_1.TabItem.name;
44
- };
45
- exports.TabsBase = React.forwardRef(function (props, ref) {
46
- var focusZoneRef = React.useRef(null);
47
- var overflowMenuButtonComponentRef = React.useRef(null);
48
- var baseId = react_hooks_1.useId('Tabs');
49
- var _a = react_hooks_1.useControllableValue(props.selectedKey, props.defaultSelectedKey), selectedKey = _a[0], setSelectedKey = _a[1];
50
- var componentRef = props.componentRef, theme = props.theme, tabSize = props.tabSize, tabFormat = props.tabFormat, overflowBehavior = props.overflowBehavior;
51
- var classNames;
52
- var divProps = utilities_1.getNativeProps(props, utilities_1.divProperties);
53
- var tabCollection = getTabItems(props, baseId);
54
- React.useImperativeHandle(componentRef, function () { return ({
55
- focus: function () {
56
- var _a;
57
- (_a = focusZoneRef.current) === null || _a === void 0 ? void 0 : _a.focus();
58
- },
59
- }); });
60
- var renderTabContent = function (tab) {
61
- if (!tab) {
62
- return null;
63
- }
64
- var itemCount = tab.itemCount, itemIcon = tab.itemIcon, headerText = tab.headerText;
65
- return (React.createElement("span", { className: classNames.tabContent },
66
- itemIcon !== undefined && (React.createElement("span", { className: classNames.icon },
67
- React.createElement(react_1.Icon, { iconName: itemIcon }))),
68
- headerText !== undefined && React.createElement("span", { className: classNames.text },
69
- " ",
70
- tab.headerText),
71
- itemCount !== undefined && React.createElement("span", { className: classNames.count },
72
- " (",
73
- itemCount,
74
- ")")));
75
- };
76
- var renderTab = function (renderTabCollection, tab, renderTabSelectedKey, className) {
77
- var itemKey = tab.itemKey, headerButtonProps = tab.headerButtonProps, onRenderTab = tab.onRenderTab;
78
- var tabId = renderTabCollection.keyToTabIdMapping[itemKey];
79
- var tabContent;
80
- var isSelected = renderTabSelectedKey === itemKey;
81
- if (onRenderTab) {
82
- tabContent = onRenderTab(tab, renderTabContent);
83
- }
84
- else {
85
- tabContent = renderTabContent(tab);
86
- }
87
- var contentString = tab.headerText || '';
88
- contentString += tab.itemCount ? ' (' + tab.itemCount + ')' : '';
89
- // Adding space supplementary for icon
90
- contentString += tab.itemIcon ? ' xx' : '';
91
- return (React.createElement(Button_1.CommandButton, tslib_1.__assign({}, headerButtonProps, { id: tabId, key: itemKey, className: utilities_1.css(className, isSelected && classNames.tabIsSelected),
92
- // eslint-disable-next-line react/jsx-no-bind
93
- onClick: function (ev) { return onTabClick(itemKey, ev); },
94
- // eslint-disable-next-line react/jsx-no-bind
95
- 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));
96
- };
97
- var onTabClick = function (itemKey, ev) {
98
- ev.preventDefault();
99
- updateSelectedItem(itemKey, ev);
100
- };
101
- var onKeyDown = function (itemKey, ev) {
102
- // eslint-disable-next-line deprecation/deprecation
103
- if (ev.which === utilities_1.KeyCodes.enter) {
104
- ev.preventDefault();
105
- updateSelectedItem(itemKey);
106
- }
107
- };
108
- var updateSelectedItem = function (itemKey, ev) {
109
- var _a;
110
- setSelectedKey(itemKey);
111
- tabCollection = getTabItems(props, baseId);
112
- if (props.onTabClick && tabCollection.keyToIndexMapping[itemKey] >= 0) {
113
- var selectedIndex = tabCollection.keyToIndexMapping[itemKey];
114
- var item = React.Children.toArray(props.children)[selectedIndex];
115
- if (isTabItem(item)) {
116
- props.onTabClick(item, ev);
117
- }
118
- }
119
- (_a = overflowMenuButtonComponentRef.current) === null || _a === void 0 ? void 0 : _a.dismissMenu();
120
- };
121
- var renderTabItem = function (itemKey, isActive) {
122
- if (props.headersOnly || !itemKey) {
123
- return null;
124
- }
125
- var index = tabCollection.keyToIndexMapping[itemKey];
126
- var selectedTabId = tabCollection.keyToTabIdMapping[itemKey];
127
- 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]));
128
- };
129
- var isKeyValid = function (itemKey) {
130
- return itemKey !== undefined && itemKey !== null && tabCollection.keyToIndexMapping[itemKey] !== undefined;
131
- };
132
- var getSelectedKey = function () {
133
- if (isKeyValid(selectedKey)) {
134
- return selectedKey;
135
- }
136
- if (tabCollection.tabs.length) {
137
- return tabCollection.tabs[0].itemKey;
138
- }
139
- return undefined;
140
- };
141
- classNames = getClassNames(props.styles, {
142
- theme: theme,
143
- tabSize: tabSize,
144
- tabFormat: tabFormat,
145
- });
146
- var renderedSelectedKey = getSelectedKey();
147
- var renderedSelectedIndex = renderedSelectedKey ? tabCollection.keyToIndexMapping[renderedSelectedKey] : 0;
148
- var items = tabCollection.tabs.map(function (l) { return renderTab(tabCollection, l, renderedSelectedKey, classNames.tab); });
149
- // The overflow menu starts empty and items[] is updated as the overflow items change
150
- var overflowMenuProps = React.useMemo(function () { return ({
151
- items: [],
152
- alignTargetEdge: true,
153
- directionalHint: react_1.DirectionalHint.bottomRightEdge,
154
- }); }, []);
155
- var overflowMenuButtonRef = useOverflow_1.useOverflow({
156
- onOverflowItemsChanged: function (overflowIndex, elements) {
157
- // Set data-is-overflowing on each item
158
- elements.forEach(function (_a) {
159
- var ele = _a.ele, isOverflowing = _a.isOverflowing;
160
- return (ele.dataset.isOverflowing = "" + isOverflowing);
161
- });
162
- // Update the menu items
163
- overflowMenuProps.items = tabCollection.tabs.slice(overflowIndex).map(function (tab, index) { return ({
164
- key: tab.itemKey || "" + (overflowIndex + index),
165
- onRender: function () { return renderTab(tabCollection, tab, renderedSelectedKey, classNames.tabInMenu); },
166
- }); });
167
- },
168
- rtl: utilities_1.getRTL(theme),
169
- pinnedIndex: renderedSelectedIndex,
170
- }).menuButtonRef;
171
- return (React.createElement("div", tslib_1.__assign({ role: "toolbar" }, divProps, { ref: ref }),
172
- React.createElement(react_1.FocusZone, { componentRef: focusZoneRef, direction: react_1.FocusZoneDirection.horizontal, className: classNames.root, role: "tablist" },
173
- items,
174
- overflowBehavior === 'menu' && (React.createElement(Button_1.CommandButton, { className: utilities_1.css(classNames.tab, classNames.overflowMenuButton), elementRef: overflowMenuButtonRef, componentRef: overflowMenuButtonComponentRef, menuProps: overflowMenuProps, menuIconProps: { iconName: 'More', style: { color: 'inherit' } } }))),
175
- renderedSelectedKey &&
176
- tabCollection.tabs.map(function (tab) {
177
- return (tab.alwaysRender === true || renderedSelectedKey === tab.itemKey) &&
178
- renderTabItem(tab.itemKey, renderedSelectedKey === tab.itemKey);
179
- })));
180
- });
181
- exports.TabsBase.displayName = COMPONENT_NAME;
182
- //# 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":";;;;AAAA,6BAA+B;AAC/B,qDAAoE;AACpE,iDAAqH;AACrH,yCAOyB;AACzB,qDAAoE;AACpE,iCAA6G;AAC7G,2DAA0D;AAE1D,IAAM,aAAa,GAAG,8BAAkB,EAA8B,CAAC;AAEvE,IAAM,cAAc,GAAG,MAAM,CAAC;AAQ9B,IAAM,QAAQ,GAAG,UAAC,KAAgB,EAAE,MAAc,EAAE,OAAe,EAAE,KAAa;IAChF,IAAI,KAAK,CAAC,QAAQ,EAAE;QAClB,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KACvC;IACD,OAAO,MAAM,IAAG,SAAO,KAAO,CAAA,CAAC;AACjC,CAAC,CAAC;AAEF,gDAAgD;AAChD,oEAAoE;AACpE,IAAM,WAAW,GAAG,UAAC,KAAgB,EAAE,MAAc;IACnD,IAAM,MAAM,GAAsB;QAChC,IAAI,EAAE,EAAE;QACR,iBAAiB,EAAE,EAAE;QACrB,iBAAiB,EAAE,EAAE;KACtB,CAAC;IAEF,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,UAAC,KAAsB,EAAE,KAAa;QACnG,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE;YACpB,IAAM,KAAkD,KAAK,CAAC,KAAK,EAA3D,eAA0B,EAA1B,OAAO,mBAAG,KAAK,CAAC,QAAQ,EAAE,KAAA,EAAK,YAAY,sBAA7C,WAA+C,CAAc,CAAC;YACpE,MAAM,CAAC,IAAI,CAAC,IAAI,uCACX,YAAY,KACf,OAAO,EAAE,OAAO,IAChB,CAAC;YACH,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;YAC1C,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;SAC7E;aAAM,IAAI,KAAK,EAAE;YAChB,gBAAI,CAAC,0EAA0E,CAAC,CAAC;SAClF;IACH,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,IAAM,SAAS,GAAG,UAAC,IAAqB;;IACtC,OAAO,OAAC,MAAC,IAA2B,0CAAE,IAA4B,0CAAE,IAAI,MAAK,eAAO,CAAC,IAAI,CAAC;AAC5F,CAAC,CAAC;AAEW,QAAA,QAAQ,GAAuC,KAAK,CAAC,UAAU,CAC1E,UAAC,KAAK,EAAE,GAAG;IACT,IAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAa,IAAI,CAAC,CAAC;IACpD,IAAM,8BAA8B,GAAG,KAAK,CAAC,MAAM,CAAU,IAAI,CAAC,CAAC;IACnE,IAAM,MAAM,GAAW,mBAAK,CAAC,MAAM,CAAC,CAAC;IAE/B,IAAA,KAAgC,kCAAoB,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,kBAAkB,CAAC,EAAhG,WAAW,QAAA,EAAE,cAAc,QAAqE,CAAC;IAEhG,IAAA,YAAY,GAAkD,KAAK,aAAvD,EAAE,KAAK,GAA2C,KAAK,MAAhD,EAAE,OAAO,GAAkC,KAAK,QAAvC,EAAE,SAAS,GAAuB,KAAK,UAA5B,EAAE,gBAAgB,GAAK,KAAK,iBAAV,CAAW;IAE5E,IAAI,UAAiD,CAAC;IACtD,IAAM,QAAQ,GAAG,0BAAc,CAAuC,KAAK,EAAE,yBAAa,CAAC,CAAC;IAE5F,IAAI,aAAa,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAE/C,KAAK,CAAC,mBAAmB,CAAC,YAAqD,EAAE,cAAM,OAAA,CAAC;QACtF,KAAK,EAAE;;YACL,MAAA,YAAY,CAAC,OAAO,0CAAE,KAAK,GAAG;QAChC,CAAC;KACF,CAAC,EAJqF,CAIrF,CAAC,CAAC;IAEJ,IAAM,gBAAgB,GAAG,UAAC,GAAkB;QAC1C,IAAI,CAAC,GAAG,EAAE;YACR,OAAO,IAAI,CAAC;SACb;QAEO,IAAA,SAAS,GAA2B,GAAG,UAA9B,EAAE,QAAQ,GAAiB,GAAG,SAApB,EAAE,UAAU,GAAK,GAAG,WAAR,CAAS;QAChD,OAAO,CACL,8BAAM,SAAS,EAAE,UAAU,CAAC,UAAU;YACnC,QAAQ,KAAK,SAAS,IAAI,CACzB,8BAAM,SAAS,EAAE,UAAU,CAAC,IAAI;gBAC9B,oBAAC,YAAI,IAAC,QAAQ,EAAE,QAAQ,GAAI,CACvB,CACR;YACA,UAAU,KAAK,SAAS,IAAI,8BAAM,SAAS,EAAE,UAAU,CAAC,IAAI;;gBAAI,GAAG,CAAC,UAAU,CAAQ;YACtF,SAAS,KAAK,SAAS,IAAI,8BAAM,SAAS,EAAE,UAAU,CAAC,KAAK;;gBAAK,SAAS;oBAAS,CAC/E,CACR,CAAC;IACJ,CAAC,CAAC;IAEF,IAAM,SAAS,GAAG,UAChB,mBAAsC,EACtC,GAAiB,EACjB,oBAA+C,EAC/C,SAAiB;QAET,IAAA,OAAO,GAAqC,GAAG,QAAxC,EAAE,iBAAiB,GAAkB,GAAG,kBAArB,EAAE,WAAW,GAAK,GAAG,YAAR,CAAS;QACxD,IAAM,KAAK,GAAG,mBAAmB,CAAC,iBAAiB,CAAC,OAAQ,CAAC,CAAC;QAC9D,IAAI,UAA8B,CAAC;QACnC,IAAM,UAAU,GAAY,oBAAoB,KAAK,OAAO,CAAC;QAE7D,IAAI,WAAW,EAAE;YACf,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;SACjD;aAAM;YACL,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;SACpC;QAED,IAAI,aAAa,GAAG,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;QACzC,aAAa,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,sCAAsC;QACtC,aAAa,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,OAAO,CACL,oBAAC,sBAAa,uBACR,iBAAiB,IACrB,EAAE,EAAE,KAAK,EACT,GAAG,EAAE,OAAO,EACZ,SAAS,EAAE,eAAG,CAAC,SAAS,EAAE,UAAU,IAAI,UAAU,CAAC,aAAa,CAAC;YACjE,6CAA6C;YAC7C,OAAO,EAAE,UAAC,EAAiC,IAAK,OAAA,UAAU,CAAC,OAAQ,EAAE,EAAE,CAAC,EAAxB,CAAwB;YACxE,6CAA6C;YAC7C,SAAS,EAAE,UAAC,EAAoC,IAAK,OAAA,SAAS,CAAC,OAAQ,EAAE,EAAE,CAAC,EAAvB,CAAuB,gBAChE,GAAG,CAAC,SAAS,EACzB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,KAAK,mBACR,UAAU,EACzB,IAAI,EAAE,GAAG,CAAC,UAAU,EACpB,WAAW,EAAE,GAAG,CAAC,WAAW,kBACd,aAAa,KAE1B,UAAU,CACG,CACjB,CAAC;IACJ,CAAC,CAAC;IAEF,IAAM,UAAU,GAAG,UAAC,OAAe,EAAE,EAAiC;QACpE,EAAE,CAAC,cAAc,EAAE,CAAC;QACpB,kBAAkB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC;IAEF,IAAM,SAAS,GAAG,UAAC,OAAe,EAAE,EAAoC;QACtE,mDAAmD;QACnD,IAAI,EAAE,CAAC,KAAK,KAAK,oBAAQ,CAAC,KAAK,EAAE;YAC/B,EAAE,CAAC,cAAc,EAAE,CAAC;YACpB,kBAAkB,CAAC,OAAO,CAAC,CAAC;SAC7B;IACH,CAAC,CAAC;IAEF,IAAM,kBAAkB,GAAG,UAAC,OAAe,EAAE,EAAkC;;QAC7E,cAAc,CAAC,OAAO,CAAC,CAAC;QACxB,aAAa,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC3C,IAAI,KAAK,CAAC,UAAU,IAAI,aAAa,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACrE,IAAM,aAAa,GAAG,aAAa,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAC/D,IAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC;YACnE,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE;gBACnB,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;aAC5B;SACF;QAED,MAAA,8BAA8B,CAAC,OAAO,0CAAE,WAAW,GAAG;IACxD,CAAC,CAAC;IAEF,IAAM,aAAa,GAAG,UAAC,OAA2B,EAAE,QAAiB;QACnE,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,OAAO,EAAE;YACjC,OAAO,IAAI,CAAC;SACb;QAED,IAAM,KAAK,GAAG,aAAa,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACvD,IAAM,aAAa,GAAG,aAAa,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC/D,OAAO,CACL,6BACE,IAAI,EAAC,UAAU,EACf,MAAM,EAAE,CAAC,QAAQ,EACjB,GAAG,EAAE,OAAO,iBACC,CAAC,QAAQ,qBACL,aAAa,EAC9B,SAAS,EAAE,UAAU,CAAC,aAAa,IAElC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAC1C,CACP,CAAC;IACJ,CAAC,CAAC;IAEF,IAAM,UAAU,GAAG,UAAC,OAAkC;QACpD,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,IAAI,aAAa,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC;IAC7G,CAAC,CAAC;IAEF,IAAM,cAAc,GAAG;QACrB,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE;YAC3B,OAAO,WAAW,CAAC;SACpB;QACD,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE;YAC7B,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;SACtC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,MAAO,EAAE;QACxC,KAAK,EAAE,KAAM;QACb,OAAO,SAAA;QACP,SAAS,WAAA;KACV,CAAC,CAAC;IAEH,IAAM,mBAAmB,GAAG,cAAc,EAAE,CAAC;IAC7C,IAAM,qBAAqB,GAAG,mBAAmB,CAAC,CAAC,CAAC,aAAa,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7G,IAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,SAAS,CAAC,aAAa,EAAE,CAAC,EAAE,mBAAmB,EAAE,UAAU,CAAC,GAAG,CAAC,EAAhE,CAAgE,CAAC,CAAC;IAE5G,qFAAqF;IACrF,IAAM,iBAAiB,GAAyB,KAAK,CAAC,OAAO,CAC3D,cAAM,OAAA,CAAC;QACL,KAAK,EAAE,EAAE;QACT,eAAe,EAAE,IAAI;QACrB,eAAe,EAAE,uBAAe,CAAC,eAAe;KACjD,CAAC,EAJI,CAIJ,EACF,EAAE,CACH,CAAC;IAEM,IAAe,qBAAqB,GAAK,yBAAW,CAAC;QAC3D,sBAAsB,EAAE,UAAC,aAAa,EAAE,QAAQ;YAC9C,uCAAuC;YACvC,QAAQ,CAAC,OAAO,CAAC,UAAC,EAAsB;oBAApB,GAAG,SAAA,EAAE,aAAa,mBAAA;gBAAO,OAAA,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,GAAG,KAAG,aAAe,CAAC;YAAhD,CAAgD,CAAC,CAAC;YAE/F,wBAAwB;YACxB,iBAAiB,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,UAAC,GAAG,EAAE,KAAK,IAAK,OAAA,CAAC;gBACrF,GAAG,EAAE,GAAG,CAAC,OAAO,IAAI,MAAG,aAAa,GAAG,KAAK,CAAE;gBAC9C,QAAQ,EAAE,cAAM,OAAA,SAAS,CAAC,aAAa,EAAE,GAAG,EAAE,mBAAmB,EAAE,UAAU,CAAC,SAAS,CAAC,EAAxE,CAAwE;aACzF,CAAC,EAHoF,CAGpF,CAAC,CAAC;QACN,CAAC;QACD,GAAG,EAAE,kBAAM,CAAC,KAAK,CAAC;QAClB,WAAW,EAAE,qBAAqB;KACnC,CAAC,cAb0C,CAazC;IAEH,OAAO,CACL,8CAAK,IAAI,EAAC,SAAS,IAAK,QAAQ,IAAE,GAAG,EAAE,GAAG;QACxC,oBAAC,iBAAS,IACR,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,0BAAkB,CAAC,UAAU,EACxC,SAAS,EAAE,UAAU,CAAC,IAAI,EAC1B,IAAI,EAAC,SAAS;YAEb,KAAK;YACL,gBAAgB,KAAK,MAAM,IAAI,CAC9B,oBAAC,sBAAa,IACZ,SAAS,EAAE,eAAG,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,kBAAkB,CAAC,EAC7D,UAAU,EAAE,qBAAqB,EACjC,YAAY,EAAE,8BAA8B,EAC5C,SAAS,EAAE,iBAAiB,EAC5B,aAAa,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,GAChE,CACH,CACS;QACX,mBAAmB;YAClB,aAAa,CAAC,IAAI,CAAC,GAAG,CACpB,UAAA,GAAG;gBACD,OAAA,CAAC,GAAG,CAAC,YAAY,KAAK,IAAI,IAAI,mBAAmB,KAAK,GAAG,CAAC,OAAO,CAAC;oBAClE,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,mBAAmB,KAAK,GAAG,CAAC,OAAO,CAAC;YAD/D,CAC+D,CAClE,CACC,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AACF,gBAAQ,CAAC,WAAW,GAAG,cAAc,CAAC","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,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Tabs = void 0;
4
- var utilities_1 = require("@fluentui/utilities");
5
- var Tabs_base_1 = require("./Tabs.base");
6
- var Tabs_styles_1 = require("./Tabs.styles");
7
- /**
8
- * The Tabs control and related tabs pattern are used for navigating frequently accessed,
9
- * distinct content categories. Tabs allow for navigation between two or more content
10
- * views and relies on text headers to articulate the different sections of content.
11
- */
12
- exports.Tabs = utilities_1.styled(Tabs_base_1.TabsBase, Tabs_styles_1.getStyles, undefined, {
13
- scope: 'Tabs',
14
- });
15
- //# sourceMappingURL=Tabs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Tabs.js","sourceRoot":"../src/","sources":["components/Tabs/Tabs.tsx"],"names":[],"mappings":";;;AACA,iDAA6C;AAE7C,yCAAuC;AACvC,6CAA0C;AAE1C;;;;GAIG;AACU,QAAA,IAAI,GAAuC,kBAAM,CAC5D,oBAAQ,EACR,uBAAS,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,268 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getStyles = void 0;
4
- var tslib_1 = require("tslib");
5
- var style_utilities_1 = require("@fluentui/style-utilities");
6
- var utilities_1 = require("@fluentui/utilities");
7
- var globalClassNames = {
8
- count: 'ms-Tabs-count',
9
- icon: 'ms-Tabs-icon',
10
- tabIsSelected: 'is-selected',
11
- tab: 'ms-Tabs-tab',
12
- tabContent: 'ms-Tabs-tabContent',
13
- root: 'ms-Tabs',
14
- rootIsLarge: 'ms-Tabs--large',
15
- rootIsTabs: 'ms-Tabs--tabs',
16
- text: 'ms-Tabs-text',
17
- tabInMenu: 'ms-Tabs-tabInMenu',
18
- overflowMenuButton: 'ms-Tabs-overflowMenuButton',
19
- };
20
- var getLinkStyles = function (props, classNames, isLinkInOverflowMenu) {
21
- var _a, _b, _c;
22
- if (isLinkInOverflowMenu === void 0) { isLinkInOverflowMenu = false; }
23
- var tabSize = props.tabSize, tabFormat = props.tabFormat;
24
- var _d = props.theme, semanticColors = _d.semanticColors, fonts = _d.fonts;
25
- var rootIsLarge = tabSize === 'large';
26
- var rootIsTabs = tabFormat === 'tabs';
27
- return [
28
- fonts.medium,
29
- {
30
- color: semanticColors.actionLink,
31
- padding: '0 8px',
32
- position: 'relative',
33
- backgroundColor: 'transparent',
34
- border: 0,
35
- borderRadius: 0,
36
- selectors: (_a = {
37
- ':hover': {
38
- backgroundColor: semanticColors.buttonBackgroundHovered,
39
- color: semanticColors.buttonTextHovered,
40
- cursor: 'pointer',
41
- },
42
- ':active': {
43
- backgroundColor: semanticColors.buttonBackgroundPressed,
44
- color: semanticColors.buttonTextHovered,
45
- },
46
- ':focus': {
47
- outline: 'none',
48
- }
49
- },
50
- _a["." + utilities_1.IsFocusVisibleClassName + " &:focus"] = {
51
- outline: "1px solid " + semanticColors.focusBorder,
52
- },
53
- _a["." + utilities_1.IsFocusVisibleClassName + " &:focus:after"] = {
54
- content: 'attr(data-content)',
55
- position: 'relative',
56
- border: 0,
57
- },
58
- _a),
59
- },
60
- !isLinkInOverflowMenu && [
61
- {
62
- display: 'inline-block',
63
- lineHeight: 44,
64
- height: 44,
65
- marginRight: 8,
66
- textAlign: 'center',
67
- selectors: {
68
- ':before': {
69
- backgroundColor: 'transparent',
70
- bottom: 0,
71
- content: '""',
72
- height: 2,
73
- left: 8,
74
- position: 'absolute',
75
- right: 8,
76
- transition: "left " + style_utilities_1.AnimationVariables.durationValue2 + " " + style_utilities_1.AnimationVariables.easeFunction2 + ",\n right " + style_utilities_1.AnimationVariables.durationValue2 + " " + style_utilities_1.AnimationVariables.easeFunction2,
77
- },
78
- ':after': {
79
- color: 'transparent',
80
- content: 'attr(data-content)',
81
- display: 'block',
82
- fontWeight: style_utilities_1.FontWeights.bold,
83
- height: 1,
84
- overflow: 'hidden',
85
- visibility: 'hidden',
86
- },
87
- },
88
- },
89
- rootIsLarge && {
90
- fontSize: fonts.large.fontSize,
91
- },
92
- rootIsTabs && [
93
- {
94
- marginRight: 0,
95
- height: 44,
96
- lineHeight: 44,
97
- backgroundColor: semanticColors.buttonBackground,
98
- padding: '0 10px',
99
- verticalAlign: 'top',
100
- selectors: (_b = {
101
- ':focus': {
102
- outlineOffset: '-1px',
103
- }
104
- },
105
- _b["." + utilities_1.IsFocusVisibleClassName + " &:focus::before"] = {
106
- height: 'auto',
107
- background: 'transparent',
108
- transition: 'none',
109
- },
110
- _b['&:hover, &:focus'] = {
111
- color: semanticColors.buttonTextCheckedHovered,
112
- },
113
- _b['&:active, &:hover'] = {
114
- color: semanticColors.primaryButtonText,
115
- backgroundColor: semanticColors.primaryButtonBackground,
116
- },
117
- _b["&." + classNames.tabIsSelected] = {
118
- backgroundColor: semanticColors.primaryButtonBackground,
119
- color: semanticColors.primaryButtonText,
120
- fontWeight: style_utilities_1.FontWeights.regular,
121
- selectors: (_c = {
122
- ':before': {
123
- backgroundColor: 'transparent',
124
- transition: 'none',
125
- position: 'absolute',
126
- top: 0,
127
- left: 0,
128
- right: 0,
129
- bottom: 0,
130
- content: '""',
131
- height: 0,
132
- },
133
- ':hover': {
134
- backgroundColor: semanticColors.primaryButtonBackgroundHovered,
135
- color: semanticColors.primaryButtonText,
136
- },
137
- '&:active': {
138
- backgroundColor: semanticColors.primaryButtonBackgroundPressed,
139
- color: semanticColors.primaryButtonText,
140
- }
141
- },
142
- _c[style_utilities_1.HighContrastSelector] = tslib_1.__assign({ fontWeight: style_utilities_1.FontWeights.semibold, color: 'HighlightText', background: 'Highlight' }, style_utilities_1.getHighContrastNoAdjustStyle()),
143
- _c),
144
- },
145
- _b),
146
- },
147
- ],
148
- ],
149
- ];
150
- };
151
- var getStyles = function (props) {
152
- var _a, _b, _c, _d;
153
- var className = props.className, tabSize = props.tabSize, tabFormat = props.tabFormat, theme = props.theme;
154
- var semanticColors = theme.semanticColors, fonts = theme.fonts;
155
- var classNames = style_utilities_1.getGlobalClassNames(globalClassNames, theme);
156
- var rootIsLarge = tabSize === 'large';
157
- var rootIsTabs = tabFormat === 'tabs';
158
- return {
159
- root: [
160
- classNames.root,
161
- fonts.medium,
162
- style_utilities_1.normalize,
163
- {
164
- position: 'relative',
165
- color: semanticColors.link,
166
- whiteSpace: 'nowrap',
167
- },
168
- rootIsLarge && classNames.rootIsLarge,
169
- rootIsTabs && classNames.rootIsTabs,
170
- className,
171
- ],
172
- itemContainer: {
173
- selectors: {
174
- '&[hidden]': {
175
- display: 'none',
176
- },
177
- },
178
- },
179
- tab: tslib_1.__spreadArrays([
180
- classNames.tab
181
- ], getLinkStyles(props, classNames), [
182
- (_a = {},
183
- _a["&[data-is-overflowing='true']"] = {
184
- display: 'none',
185
- },
186
- _a),
187
- ]),
188
- overflowMenuButton: [
189
- classNames.overflowMenuButton,
190
- (_b = {
191
- visibility: 'hidden',
192
- position: 'absolute',
193
- right: 0
194
- },
195
- _b["." + classNames.tab + "[data-is-overflowing='true'] ~ &"] = {
196
- visibility: 'visible',
197
- position: 'relative',
198
- },
199
- _b),
200
- ],
201
- tabInMenu: tslib_1.__spreadArrays([
202
- classNames.tabInMenu
203
- ], getLinkStyles(props, classNames, true), [
204
- {
205
- textAlign: 'left',
206
- width: '100%',
207
- height: 36,
208
- lineHeight: 36,
209
- },
210
- ]),
211
- tabIsSelected: [
212
- classNames.tab,
213
- classNames.tabIsSelected,
214
- {
215
- fontWeight: style_utilities_1.FontWeights.semibold,
216
- selectors: (_c = {
217
- ':before': {
218
- backgroundColor: semanticColors.inputBackgroundChecked,
219
- selectors: (_d = {},
220
- _d[style_utilities_1.HighContrastSelector] = {
221
- backgroundColor: 'Highlight',
222
- },
223
- _d),
224
- },
225
- ':hover::before': {
226
- left: 0,
227
- right: 0,
228
- }
229
- },
230
- _c[style_utilities_1.HighContrastSelector] = {
231
- color: 'Highlight',
232
- },
233
- _c),
234
- },
235
- ],
236
- tabContent: [
237
- classNames.tabContent,
238
- {
239
- flex: '0 1 100%',
240
- selectors: {
241
- '& > * ': {
242
- marginLeft: 4,
243
- },
244
- '& > *:first-child': {
245
- marginLeft: 0,
246
- },
247
- },
248
- },
249
- ],
250
- text: [
251
- classNames.text,
252
- {
253
- display: 'inline-block',
254
- verticalAlign: 'top',
255
- },
256
- ],
257
- count: [
258
- classNames.count,
259
- {
260
- display: 'inline-block',
261
- verticalAlign: 'top',
262
- },
263
- ],
264
- icon: classNames.icon,
265
- };
266
- };
267
- exports.getStyles = getStyles;
268
- //# 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"]}