@fluentui/react-tabs 1.0.0-beta.99 → 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.
- package/CHANGELOG.json +51 -1912
- package/CHANGELOG.md +17 -763
- package/README.md +0 -17
- package/Spec.md +433 -0
- package/dist/react-tabs.d.ts +171 -137
- package/lib/Tab.d.ts +1 -0
- package/lib/Tab.js +2 -0
- package/lib/Tab.js.map +1 -0
- package/lib/TabList.d.ts +1 -0
- package/lib/TabList.js +2 -0
- package/lib/TabList.js.map +1 -0
- package/lib/components/Tab/Tab.d.ts +6 -0
- package/lib/components/Tab/Tab.js +15 -0
- package/lib/components/Tab/Tab.js.map +1 -0
- package/lib/components/Tab/Tab.types.d.ts +52 -0
- package/lib/components/Tab/Tab.types.js +2 -0
- package/lib/components/Tab/Tab.types.js.map +1 -0
- package/lib/components/Tab/index.d.ts +5 -0
- package/lib/components/Tab/index.js +6 -0
- package/lib/components/Tab/index.js.map +1 -0
- package/lib/components/Tab/renderTab.d.ts +5 -0
- package/lib/components/Tab/renderTab.js +18 -0
- package/lib/components/Tab/renderTab.js.map +1 -0
- package/lib/components/Tab/useTab.d.ts +12 -0
- package/lib/components/Tab/useTab.js +82 -0
- package/lib/components/Tab/useTab.js.map +1 -0
- package/lib/components/Tab/useTabStyles.d.ts +6 -0
- package/lib/components/Tab/useTabStyles.js +205 -0
- package/lib/components/Tab/useTabStyles.js.map +1 -0
- package/lib/components/TabList/TabList.d.ts +6 -0
- package/lib/components/TabList/TabList.js +17 -0
- package/lib/components/TabList/TabList.js.map +1 -0
- package/lib/components/TabList/TabList.types.d.ts +99 -0
- package/lib/components/TabList/TabList.types.js +2 -0
- package/lib/components/TabList/TabList.types.js.map +1 -0
- package/lib/components/TabList/TabListContext.d.ts +3 -0
- package/lib/components/TabList/TabListContext.js +17 -0
- package/lib/components/TabList/TabListContext.js.map +1 -0
- package/lib/components/TabList/index.d.ts +5 -0
- package/lib/components/TabList/index.js +6 -0
- package/lib/components/TabList/index.js.map +1 -0
- package/lib/components/TabList/renderTabList.d.ts +5 -0
- package/lib/components/TabList/renderTabList.js +19 -0
- package/lib/components/TabList/renderTabList.js.map +1 -0
- package/lib/components/TabList/useTabList.d.ts +12 -0
- package/lib/components/TabList/useTabList.js +106 -0
- package/lib/components/TabList/useTabList.js.map +1 -0
- package/lib/components/TabList/useTabListContextValues.d.ts +2 -0
- package/lib/components/TabList/useTabListContextValues.js +24 -0
- package/lib/components/TabList/useTabListContextValues.js.map +1 -0
- package/lib/components/TabList/useTabListStyles.d.ts +9 -0
- package/lib/components/TabList/useTabListStyles.js +118 -0
- package/lib/components/TabList/useTabListStyles.js.map +1 -0
- package/lib/index.d.ts +2 -1
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/tab.constants.d.ts +15 -0
- package/lib/tab.constants.js +17 -0
- package/lib/tab.constants.js.map +1 -0
- package/lib/tsdoc-metadata.json +1 -1
- package/lib-commonjs/Tab.d.ts +1 -0
- package/lib-commonjs/Tab.js +10 -0
- package/lib-commonjs/Tab.js.map +1 -0
- package/lib-commonjs/TabList.d.ts +1 -0
- package/lib-commonjs/TabList.js +10 -0
- package/lib-commonjs/TabList.js.map +1 -0
- package/lib-commonjs/components/Tab/Tab.d.ts +6 -0
- package/lib-commonjs/components/Tab/Tab.js +26 -0
- package/lib-commonjs/components/Tab/Tab.js.map +1 -0
- package/lib-commonjs/components/Tab/Tab.types.d.ts +52 -0
- package/lib-commonjs/components/Tab/Tab.types.js +6 -0
- package/lib-commonjs/components/Tab/Tab.types.js.map +1 -0
- package/lib-commonjs/components/Tab/index.d.ts +5 -0
- package/lib-commonjs/components/Tab/index.js +18 -0
- package/lib-commonjs/components/Tab/index.js.map +1 -0
- package/lib-commonjs/components/Tab/renderTab.d.ts +5 -0
- package/lib-commonjs/components/Tab/renderTab.js +29 -0
- package/lib-commonjs/components/Tab/renderTab.js.map +1 -0
- package/lib-commonjs/components/Tab/useTab.d.ts +12 -0
- package/lib-commonjs/components/Tab/useTab.js +95 -0
- package/lib-commonjs/components/Tab/useTab.js.map +1 -0
- package/lib-commonjs/components/Tab/useTabStyles.d.ts +6 -0
- package/lib-commonjs/components/Tab/useTabStyles.js +218 -0
- package/lib-commonjs/components/Tab/useTabStyles.js.map +1 -0
- package/lib-commonjs/components/TabList/TabList.d.ts +6 -0
- package/lib-commonjs/components/TabList/TabList.js +29 -0
- package/lib-commonjs/components/TabList/TabList.js.map +1 -0
- package/lib-commonjs/components/TabList/TabList.types.d.ts +99 -0
- package/lib-commonjs/components/TabList/TabList.types.js +6 -0
- package/lib-commonjs/components/TabList/TabList.types.js.map +1 -0
- package/lib-commonjs/components/TabList/TabListContext.d.ts +3 -0
- package/lib-commonjs/components/TabList/TabListContext.js +25 -0
- package/lib-commonjs/components/TabList/TabListContext.js.map +1 -0
- package/lib-commonjs/components/TabList/index.d.ts +5 -0
- package/lib-commonjs/components/TabList/index.js +18 -0
- package/lib-commonjs/components/TabList/index.js.map +1 -0
- package/lib-commonjs/components/TabList/renderTabList.d.ts +5 -0
- package/lib-commonjs/components/TabList/renderTabList.js +31 -0
- package/lib-commonjs/components/TabList/renderTabList.js.map +1 -0
- package/lib-commonjs/components/TabList/useTabList.d.ts +12 -0
- package/lib-commonjs/components/TabList/useTabList.js +118 -0
- package/lib-commonjs/components/TabList/useTabList.js.map +1 -0
- package/lib-commonjs/components/TabList/useTabListContextValues.d.ts +2 -0
- package/lib-commonjs/components/TabList/useTabListContextValues.js +33 -0
- package/lib-commonjs/components/TabList/useTabListContextValues.js.map +1 -0
- package/lib-commonjs/components/TabList/useTabListStyles.d.ts +9 -0
- package/lib-commonjs/components/TabList/useTabListStyles.js +131 -0
- package/lib-commonjs/components/TabList/useTabListStyles.js.map +1 -0
- package/lib-commonjs/index.d.ts +2 -1
- package/lib-commonjs/index.js +10 -3
- package/lib-commonjs/index.js.map +1 -1
- package/lib-commonjs/tab.constants.d.ts +15 -0
- package/lib-commonjs/tab.constants.js +23 -0
- package/lib-commonjs/tab.constants.js.map +1 -0
- package/package.json +18 -13
- package/config/api-extractor.json +0 -3
- package/config/tests.js +0 -14
- package/etc/react-tabs.api.md +0 -104
- package/just.config.ts +0 -3
- package/lib/Tabs.d.ts +0 -1
- package/lib/Tabs.js +0 -2
- package/lib/Tabs.js.map +0 -1
- package/lib/common/isConformant.d.ts +0 -4
- package/lib/common/isConformant.js +0 -9
- package/lib/common/isConformant.js.map +0 -1
- package/lib/components/Tabs/TabItem.d.ts +0 -6
- package/lib/components/Tabs/TabItem.js +0 -18
- package/lib/components/Tabs/TabItem.js.map +0 -1
- package/lib/components/Tabs/TabItem.types.d.ts +0 -61
- package/lib/components/Tabs/TabItem.types.js +0 -2
- package/lib/components/Tabs/TabItem.types.js.map +0 -1
- package/lib/components/Tabs/Tabs.base.d.ts +0 -3
- package/lib/components/Tabs/Tabs.base.js +0 -179
- package/lib/components/Tabs/Tabs.base.js.map +0 -1
- package/lib/components/Tabs/Tabs.d.ts +0 -8
- package/lib/components/Tabs/Tabs.js +0 -12
- package/lib/components/Tabs/Tabs.js.map +0 -1
- package/lib/components/Tabs/Tabs.styles.d.ts +0 -2
- package/lib/components/Tabs/Tabs.styles.js +0 -264
- package/lib/components/Tabs/Tabs.styles.js.map +0 -1
- package/lib/components/Tabs/Tabs.types.d.ts +0 -113
- package/lib/components/Tabs/Tabs.types.js +0 -2
- package/lib/components/Tabs/Tabs.types.js.map +0 -1
- package/lib/components/Tabs/index.d.ts +0 -5
- package/lib/components/Tabs/index.js +0 -6
- package/lib/components/Tabs/index.js.map +0 -1
- package/lib/utilities/observeResize.d.ts +0 -21
- package/lib/utilities/observeResize.js +0 -46
- package/lib/utilities/observeResize.js.map +0 -1
- package/lib/utilities/useOverflow.d.ts +0 -45
- package/lib/utilities/useOverflow.js +0 -126
- package/lib/utilities/useOverflow.js.map +0 -1
- package/lib-amd/Tabs.d.ts +0 -1
- package/lib-amd/Tabs.js +0 -6
- package/lib-amd/Tabs.js.map +0 -1
- package/lib-amd/common/isConformant.d.ts +0 -4
- package/lib-amd/common/isConformant.js +0 -14
- package/lib-amd/common/isConformant.js.map +0 -1
- package/lib-amd/components/Tabs/TabItem.d.ts +0 -6
- package/lib-amd/components/Tabs/TabItem.js +0 -20
- package/lib-amd/components/Tabs/TabItem.js.map +0 -1
- package/lib-amd/components/Tabs/TabItem.types.d.ts +0 -61
- package/lib-amd/components/Tabs/TabItem.types.js +0 -5
- package/lib-amd/components/Tabs/TabItem.types.js.map +0 -1
- package/lib-amd/components/Tabs/Tabs.base.d.ts +0 -3
- package/lib-amd/components/Tabs/Tabs.base.js +0 -176
- package/lib-amd/components/Tabs/Tabs.base.js.map +0 -1
- package/lib-amd/components/Tabs/Tabs.d.ts +0 -8
- package/lib-amd/components/Tabs/Tabs.js +0 -14
- package/lib-amd/components/Tabs/Tabs.js.map +0 -1
- package/lib-amd/components/Tabs/Tabs.styles.d.ts +0 -2
- package/lib-amd/components/Tabs/Tabs.styles.js +0 -267
- package/lib-amd/components/Tabs/Tabs.styles.js.map +0 -1
- package/lib-amd/components/Tabs/Tabs.types.d.ts +0 -113
- package/lib-amd/components/Tabs/Tabs.types.js +0 -5
- package/lib-amd/components/Tabs/Tabs.types.js.map +0 -1
- package/lib-amd/components/Tabs/index.d.ts +0 -5
- package/lib-amd/components/Tabs/index.js +0 -11
- package/lib-amd/components/Tabs/index.js.map +0 -1
- package/lib-amd/index.d.ts +0 -1
- package/lib-amd/index.js +0 -6
- package/lib-amd/index.js.map +0 -1
- package/lib-amd/utilities/observeResize.d.ts +0 -21
- package/lib-amd/utilities/observeResize.js +0 -51
- package/lib-amd/utilities/observeResize.js.map +0 -1
- package/lib-amd/utilities/useOverflow.d.ts +0 -45
- package/lib-amd/utilities/useOverflow.js +0 -128
- package/lib-amd/utilities/useOverflow.js.map +0 -1
- package/lib-commonjs/Tabs.d.ts +0 -1
- package/lib-commonjs/Tabs.js +0 -5
- package/lib-commonjs/Tabs.js.map +0 -1
- package/lib-commonjs/common/isConformant.d.ts +0 -4
- package/lib-commonjs/common/isConformant.js +0 -13
- package/lib-commonjs/common/isConformant.js.map +0 -1
- package/lib-commonjs/components/Tabs/TabItem.d.ts +0 -6
- package/lib-commonjs/components/Tabs/TabItem.js +0 -21
- package/lib-commonjs/components/Tabs/TabItem.js.map +0 -1
- package/lib-commonjs/components/Tabs/TabItem.types.d.ts +0 -61
- package/lib-commonjs/components/Tabs/TabItem.types.js +0 -3
- package/lib-commonjs/components/Tabs/TabItem.types.js.map +0 -1
- package/lib-commonjs/components/Tabs/Tabs.base.d.ts +0 -3
- package/lib-commonjs/components/Tabs/Tabs.base.js +0 -182
- package/lib-commonjs/components/Tabs/Tabs.base.js.map +0 -1
- package/lib-commonjs/components/Tabs/Tabs.d.ts +0 -8
- package/lib-commonjs/components/Tabs/Tabs.js +0 -15
- package/lib-commonjs/components/Tabs/Tabs.js.map +0 -1
- package/lib-commonjs/components/Tabs/Tabs.styles.d.ts +0 -2
- package/lib-commonjs/components/Tabs/Tabs.styles.js +0 -268
- package/lib-commonjs/components/Tabs/Tabs.styles.js.map +0 -1
- package/lib-commonjs/components/Tabs/Tabs.types.d.ts +0 -113
- package/lib-commonjs/components/Tabs/Tabs.types.js +0 -3
- package/lib-commonjs/components/Tabs/Tabs.types.js.map +0 -1
- package/lib-commonjs/components/Tabs/index.d.ts +0 -5
- package/lib-commonjs/components/Tabs/index.js +0 -11
- package/lib-commonjs/components/Tabs/index.js.map +0 -1
- package/lib-commonjs/utilities/observeResize.d.ts +0 -21
- package/lib-commonjs/utilities/observeResize.js +0 -50
- package/lib-commonjs/utilities/observeResize.js.map +0 -1
- package/lib-commonjs/utilities/useOverflow.d.ts +0 -45
- package/lib-commonjs/utilities/useOverflow.js +0 -130
- package/lib-commonjs/utilities/useOverflow.js.map +0 -1
- package/src/components/Tabs/TabItem.types.ts +0 -69
- 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,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';
|