@equinor/eds-core-react 0.23.0-dev.20221003 → 0.24.0-dev.20221006
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/dist/eds-core-react.cjs.js +4147 -5179
- package/dist/esm/components/Accordion/Accordion.js +26 -21
- package/dist/esm/components/Accordion/Accordion.tokens.js +23 -62
- package/dist/esm/components/Accordion/AccordionHeader.js +58 -77
- package/dist/esm/components/Accordion/AccordionHeaderActions.js +19 -23
- package/dist/esm/components/Accordion/AccordionHeaderTitle.js +19 -23
- package/dist/esm/components/Accordion/AccordionItem.js +32 -25
- package/dist/esm/components/Accordion/AccordionPanel.js +22 -27
- package/dist/esm/components/Accordion/index.js +1 -1
- package/dist/esm/components/Autocomplete/Autocomplete.js +279 -272
- package/dist/esm/components/Autocomplete/Autocomplete.tokens.js +18 -27
- package/dist/esm/components/Autocomplete/Option.js +27 -25
- package/dist/esm/components/Avatar/Avatar.js +23 -22
- package/dist/esm/components/Avatar/Avatar.tokens.js +1 -1
- package/dist/esm/components/Banner/Banner.js +31 -27
- package/dist/esm/components/Banner/Banner.tokens.js +19 -47
- package/dist/esm/components/Banner/BannerActions.js +21 -20
- package/dist/esm/components/Banner/BannerIcon.js +28 -28
- package/dist/esm/components/Banner/BannerMessage.js +16 -14
- package/dist/esm/components/Banner/index.js +1 -1
- package/dist/esm/components/Breadcrumbs/Breadcrumb.js +30 -29
- package/dist/esm/components/Breadcrumbs/Breadcrumbs.js +47 -40
- package/dist/esm/components/Breadcrumbs/Breadcrumbs.tokens.js +5 -20
- package/dist/esm/components/Breadcrumbs/index.js +1 -1
- package/dist/esm/components/Button/Button.js +49 -46
- package/dist/esm/components/Button/ButtonGroup/ButtonGroup.js +22 -24
- package/dist/esm/components/Button/ButtonGroup/ButtonGroup.tokens.js +2 -8
- package/dist/esm/components/Button/InnerFullWidth.js +10 -9
- package/dist/esm/components/Button/ToggleButton/ToggleButton.js +31 -21
- package/dist/esm/components/Button/index.js +1 -1
- package/dist/esm/components/Button/tokens/button.js +31 -60
- package/dist/esm/components/Button/tokens/contained.js +14 -38
- package/dist/esm/components/Button/tokens/contained_icon.js +10 -13
- package/dist/esm/components/Button/tokens/ghost.js +13 -36
- package/dist/esm/components/Button/tokens/icon.js +20 -46
- package/dist/esm/components/Button/tokens/index.js +1 -1
- package/dist/esm/components/Button/tokens/outlined.js +15 -42
- package/dist/esm/components/Card/Card.js +28 -26
- package/dist/esm/components/Card/Card.tokens.js +11 -32
- package/dist/esm/components/Card/CardActions.js +24 -23
- package/dist/esm/components/Card/CardContent.js +13 -13
- package/dist/esm/components/Card/CardHeader.js +15 -14
- package/dist/esm/components/Card/CardHeaderTitle.js +14 -11
- package/dist/esm/components/Card/CardMedia.js +21 -21
- package/dist/esm/components/Card/index.js +1 -1
- package/dist/esm/components/Checkbox/Checkbox.js +20 -20
- package/dist/esm/components/Checkbox/Checkbox.tokens.js +14 -39
- package/dist/esm/components/Checkbox/Input.js +63 -78
- package/dist/esm/components/Chip/Chip.js +60 -70
- package/dist/esm/components/Chip/Chip.tokens.js +27 -68
- package/dist/esm/components/Chip/Icon.js +9 -15
- package/dist/esm/components/Dialog/Dialog.js +36 -31
- package/dist/esm/components/Dialog/Dialog.tokens.js +8 -29
- package/dist/esm/components/Dialog/DialogActions.js +15 -15
- package/dist/esm/components/Dialog/DialogContent.js +23 -22
- package/dist/esm/components/Dialog/DialogHeader.js +17 -16
- package/dist/esm/components/Dialog/DialogTitle.js +15 -15
- package/dist/esm/components/Dialog/index.js +1 -1
- package/dist/esm/components/Divider/Divider.js +28 -25
- package/dist/esm/components/Divider/Divider.tokens.js +10 -24
- package/dist/esm/components/EdsProvider/eds.context.js +26 -16
- package/dist/esm/components/Icon/Icon.js +63 -67
- package/dist/esm/components/Icon/index.js +1 -1
- package/dist/esm/components/Icon/library.js +8 -8
- package/dist/esm/components/Input/Input.js +37 -40
- package/dist/esm/components/Input/Input.tokens.js +32 -43
- package/dist/esm/components/Label/Label.js +19 -17
- package/dist/esm/components/Label/Label.tokens.js +7 -10
- package/dist/esm/components/List/List.js +18 -19
- package/dist/esm/components/List/List.tokens.js +2 -6
- package/dist/esm/components/List/ListItem.js +9 -7
- package/dist/esm/components/List/index.js +1 -1
- package/dist/esm/components/Menu/Menu.context.js +45 -34
- package/dist/esm/components/Menu/Menu.js +92 -90
- package/dist/esm/components/Menu/Menu.tokens.js +24 -54
- package/dist/esm/components/Menu/MenuItem.js +50 -58
- package/dist/esm/components/Menu/MenuList.js +54 -50
- package/dist/esm/components/Menu/MenuSection.js +9 -9
- package/dist/esm/components/Menu/index.js +1 -1
- package/dist/esm/components/Pagination/Pagination.js +75 -71
- package/dist/esm/components/Pagination/Pagination.tokens.js +5 -18
- package/dist/esm/components/Pagination/PaginationItem.js +21 -19
- package/dist/esm/components/Pagination/paginationControl.js +22 -18
- package/dist/esm/components/Paper/Paper.js +15 -14
- package/dist/esm/components/Paper/Paper.tokens.js +4 -12
- package/dist/esm/components/Popover/Popover.js +85 -88
- package/dist/esm/components/Popover/Popover.tokens.js +8 -27
- package/dist/esm/components/Popover/PopoverActions.js +16 -16
- package/dist/esm/components/Popover/PopoverContent.js +16 -15
- package/dist/esm/components/Popover/PopoverHeader.js +17 -16
- package/dist/esm/components/Popover/PopoverTitle.js +16 -15
- package/dist/esm/components/Popover/index.js +1 -1
- package/dist/esm/components/Progress/Circular/CircularProgress.js +46 -34
- package/dist/esm/components/Progress/Circular/CircularProgress.tokens.js +8 -24
- package/dist/esm/components/Progress/Dots/DotProgress.js +23 -20
- package/dist/esm/components/Progress/Dots/DotProgress.tokens.js +8 -20
- package/dist/esm/components/Progress/Linear/LinearProgress.js +34 -24
- package/dist/esm/components/Progress/Linear/LinearProgress.tokens.js +4 -13
- package/dist/esm/components/Progress/Star/StarProgress.js +29 -25
- package/dist/esm/components/Progress/Star/StarProgress.tokens.js +2 -10
- package/dist/esm/components/Progress/index.js +1 -1
- package/dist/esm/components/Radio/Radio.js +57 -76
- package/dist/esm/components/Radio/Radio.tokens.js +14 -39
- package/dist/esm/components/Scrim/Scrim.js +24 -21
- package/dist/esm/components/Scrim/Scrim.tokens.js +3 -11
- package/dist/esm/components/Search/Search.js +130 -117
- package/dist/esm/components/Search/Search.tokens.js +12 -36
- package/dist/esm/components/Select/MultiSelect/MultiSelect.js +115 -105
- package/dist/esm/components/Select/NativeSelect/NativeSelect.js +45 -43
- package/dist/esm/components/Select/NativeSelect/NativeSelect.tokens.js +10 -14
- package/dist/esm/components/Select/Select.tokens.js +18 -27
- package/dist/esm/components/Select/SingleSelect/SingleSelect.js +86 -79
- package/dist/esm/components/Select/commonStyles.js +14 -26
- package/dist/esm/components/SideSheet/SideSheet.js +29 -27
- package/dist/esm/components/SideSheet/SideSheet.tokens.js +12 -28
- package/dist/esm/components/Slider/MinMax.js +6 -11
- package/dist/esm/components/Slider/Output.js +10 -17
- package/dist/esm/components/Slider/Slider.js +126 -116
- package/dist/esm/components/Slider/Slider.tokens.js +19 -51
- package/dist/esm/components/Slider/SliderInput.js +35 -37
- package/dist/esm/components/Snackbar/Snackbar.js +45 -34
- package/dist/esm/components/Snackbar/Snackbar.tokens.js +17 -44
- package/dist/esm/components/Snackbar/SnackbarAction.js +16 -15
- package/dist/esm/components/Snackbar/index.js +1 -1
- package/dist/esm/components/Switch/Switch.js +37 -38
- package/dist/esm/components/Switch/Switch.styles.js +14 -20
- package/dist/esm/components/Switch/Switch.tokens.js +25 -70
- package/dist/esm/components/Switch/SwitchDefault.js +27 -37
- package/dist/esm/components/Switch/SwitchSmall.js +28 -41
- package/dist/esm/components/Table/Body.js +10 -8
- package/dist/esm/components/Table/Caption.js +9 -9
- package/dist/esm/components/Table/Cell.js +14 -16
- package/dist/esm/components/Table/DataCell/DataCell.js +27 -28
- package/dist/esm/components/Table/DataCell/DataCell.tokens.js +38 -73
- package/dist/esm/components/Table/Head/Head.js +12 -10
- package/dist/esm/components/Table/Head/Head.tokens.js +4 -15
- package/dist/esm/components/Table/HeaderCell/HeaderCell.js +30 -32
- package/dist/esm/components/Table/HeaderCell/HeaderCell.tokens.js +28 -62
- package/dist/esm/components/Table/Inner.context.js +2 -2
- package/dist/esm/components/Table/Row/Row.js +11 -13
- package/dist/esm/components/Table/Row/Row.tokens.js +4 -13
- package/dist/esm/components/Table/Table.js +10 -8
- package/dist/esm/components/Table/index.js +1 -1
- package/dist/esm/components/TableOfContents/LinkItem.js +12 -12
- package/dist/esm/components/TableOfContents/TableOfContents.js +28 -28
- package/dist/esm/components/TableOfContents/TableOfContents.tokens.js +21 -43
- package/dist/esm/components/TableOfContents/index.js +1 -1
- package/dist/esm/components/Tabs/Tab.js +15 -21
- package/dist/esm/components/Tabs/TabList.js +61 -52
- package/dist/esm/components/Tabs/TabPanel.js +18 -20
- package/dist/esm/components/Tabs/TabPanels.js +22 -18
- package/dist/esm/components/Tabs/Tabs.context.js +5 -3
- package/dist/esm/components/Tabs/Tabs.js +60 -39
- package/dist/esm/components/Tabs/Tabs.tokens.js +21 -55
- package/dist/esm/components/Tabs/index.js +1 -1
- package/dist/esm/components/TextField/Field.js +78 -85
- package/dist/esm/components/TextField/HelperText/HelperText.js +37 -40
- package/dist/esm/components/TextField/HelperText/HelperText.token.js +5 -9
- package/dist/esm/components/TextField/Icon/Icon.js +41 -40
- package/dist/esm/components/TextField/Icon/Icon.tokens.js +4 -8
- package/dist/esm/components/TextField/TextField.context.js +29 -19
- package/dist/esm/components/TextField/TextField.js +59 -57
- package/dist/esm/components/TextField/TextField.tokens.js +12 -16
- package/dist/esm/components/Textarea/Textarea.js +56 -58
- package/dist/esm/components/Tooltip/Tooltip.js +76 -64
- package/dist/esm/components/Tooltip/Tooltip.tokens.js +13 -32
- package/dist/esm/components/TopBar/Actions.js +12 -10
- package/dist/esm/components/TopBar/CustomContent.js +12 -10
- package/dist/esm/components/TopBar/Header.js +12 -10
- package/dist/esm/components/TopBar/TopBar.js +29 -25
- package/dist/esm/components/TopBar/TopBar.tokens.js +4 -10
- package/dist/esm/components/TopBar/index.js +1 -1
- package/dist/esm/components/Typography/Typography.js +47 -53
- package/dist/esm/components/Typography/Typography.tokens.js +25 -49
- package/dist/esm/node_modules/.pnpm/ramda@0.28.0/node_modules/ramda/es/internal/_isPlaceholder.js +3 -1
- package/dist/types/components/Autocomplete/Autocomplete.d.ts +4 -0
- package/package.json +5 -11
|
@@ -1,85 +1,94 @@
|
|
|
1
|
+
import _objectSpread from '@babel/runtime/helpers/objectSpread2';
|
|
2
|
+
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
3
|
+
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
1
4
|
import { forwardRef, useContext, useRef, useState, useCallback, useEffect, Children, cloneElement } from 'react';
|
|
2
5
|
import styled from 'styled-components';
|
|
3
6
|
import { mergeRefs } from '@equinor/eds-utils';
|
|
4
7
|
import { TabsContext } from './Tabs.context.js';
|
|
5
8
|
import { jsx } from 'react/jsx-runtime';
|
|
6
9
|
|
|
7
|
-
|
|
10
|
+
var _excluded = ["children"];
|
|
11
|
+
var variants = {
|
|
8
12
|
fullWidth: 'minmax(1%, 360px)',
|
|
9
13
|
minWidth: 'max-content'
|
|
10
14
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
15
|
+
var StyledTabList = styled.div.attrs(function () {
|
|
16
|
+
return {
|
|
17
|
+
role: 'tablist'
|
|
18
|
+
};
|
|
19
|
+
}).withConfig({
|
|
14
20
|
displayName: "TabList__StyledTabList",
|
|
15
21
|
componentId: "sc-1g1p5i1-0"
|
|
16
|
-
})(["display:grid;grid-auto-flow:column;grid-auto-columns:", ";overflow-x:", ";scroll-snap-type:x mandatory;overscroll-behavior-x:contain;@media (prefers-reduced-motion:no-preference){scroll-behavior:smooth;}@media (hover:none){overflow-x:scroll;-webkit-overflow-scrolling:touch;scrollbar-width:0;& ::-webkit-scrollbar{width:0;height:0;}}"], _ref
|
|
17
|
-
|
|
18
|
-
variant
|
|
19
|
-
} = _ref;
|
|
22
|
+
})(["display:grid;grid-auto-flow:column;grid-auto-columns:", ";overflow-x:", ";scroll-snap-type:x mandatory;overscroll-behavior-x:contain;@media (prefers-reduced-motion:no-preference){scroll-behavior:smooth;}@media (hover:none){overflow-x:scroll;-webkit-overflow-scrolling:touch;scrollbar-width:0;& ::-webkit-scrollbar{width:0;height:0;}}"], function (_ref) {
|
|
23
|
+
var variant = _ref.variant;
|
|
20
24
|
return variants[variant];
|
|
21
|
-
}, _ref2
|
|
22
|
-
|
|
23
|
-
scrollable
|
|
24
|
-
} = _ref2;
|
|
25
|
+
}, function (_ref2) {
|
|
26
|
+
var scrollable = _ref2.scrollable;
|
|
25
27
|
return scrollable ? 'auto' : 'hidden';
|
|
26
28
|
});
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
29
|
+
var TabList = /*#__PURE__*/forwardRef(function TabsList(_ref3, ref) {
|
|
30
|
+
var _ref3$children = _ref3.children,
|
|
31
|
+
children = _ref3$children === void 0 ? [] : _ref3$children,
|
|
32
|
+
props = _objectWithoutProperties(_ref3, _excluded);
|
|
33
|
+
|
|
34
|
+
var _useContext = useContext(TabsContext),
|
|
35
|
+
activeTab = _useContext.activeTab,
|
|
36
|
+
handleChange = _useContext.handleChange,
|
|
37
|
+
tabsId = _useContext.tabsId,
|
|
38
|
+
_useContext$variant = _useContext.variant,
|
|
39
|
+
variant = _useContext$variant === void 0 ? 'minWidth' : _useContext$variant,
|
|
40
|
+
_useContext$scrollabl = _useContext.scrollable,
|
|
41
|
+
scrollable = _useContext$scrollabl === void 0 ? false : _useContext$scrollabl,
|
|
42
|
+
tabsFocused = _useContext.tabsFocused;
|
|
43
|
+
|
|
44
|
+
var currentTab = useRef(activeTab);
|
|
45
|
+
|
|
46
|
+
var _useState = useState(false),
|
|
47
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
48
|
+
arrowNavigating = _useState2[0],
|
|
49
|
+
setArrowNavigating = _useState2[1];
|
|
50
|
+
|
|
51
|
+
var selectedTabRef = useCallback(function (node) {
|
|
43
52
|
if (node !== null && tabsFocused || node !== null && arrowNavigating) {
|
|
44
53
|
setArrowNavigating(false);
|
|
45
54
|
node.focus();
|
|
46
55
|
}
|
|
47
56
|
}, [arrowNavigating, tabsFocused]);
|
|
48
|
-
useEffect(()
|
|
57
|
+
useEffect(function () {
|
|
49
58
|
currentTab.current = activeTab;
|
|
50
59
|
}, [activeTab]);
|
|
51
|
-
|
|
52
|
-
|
|
60
|
+
var Tabs = Children.map(children, function (child, index) {
|
|
61
|
+
var tabRef = index === activeTab ? mergeRefs(child.ref, selectedTabRef) : child.ref;
|
|
53
62
|
return /*#__PURE__*/cloneElement(child, {
|
|
54
|
-
id:
|
|
55
|
-
'aria-controls':
|
|
63
|
+
id: "".concat(tabsId, "-tab-").concat(index + 1),
|
|
64
|
+
'aria-controls': "".concat(tabsId, "-panel-").concat(index + 1),
|
|
56
65
|
active: index === activeTab,
|
|
57
|
-
index,
|
|
58
|
-
onClick: ()
|
|
66
|
+
index: index,
|
|
67
|
+
onClick: function onClick() {
|
|
68
|
+
return handleChange(index);
|
|
69
|
+
},
|
|
59
70
|
ref: tabRef
|
|
60
71
|
});
|
|
61
72
|
});
|
|
62
|
-
|
|
63
|
-
|
|
73
|
+
var focusableChildren = Tabs.filter(function (child) {
|
|
74
|
+
var childProps = child.props;
|
|
64
75
|
return !childProps.disabled;
|
|
65
|
-
}).map(child
|
|
66
|
-
|
|
76
|
+
}).map(function (child) {
|
|
77
|
+
var childProps = child.props;
|
|
67
78
|
return childProps.index;
|
|
68
79
|
});
|
|
69
|
-
|
|
70
|
-
|
|
80
|
+
var firstFocusableChild = focusableChildren[0];
|
|
81
|
+
var lastFocusableChild = focusableChildren[focusableChildren.length - 1];
|
|
71
82
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
83
|
+
var handleTabsChange = function handleTabsChange(direction, fallbackTab) {
|
|
84
|
+
var i = direction === 'left' ? 1 : -1;
|
|
85
|
+
var nextTab = focusableChildren[focusableChildren.indexOf(currentTab.current) - i];
|
|
75
86
|
setArrowNavigating(true);
|
|
76
87
|
handleChange(nextTab === undefined ? fallbackTab : nextTab);
|
|
77
88
|
};
|
|
78
89
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
key
|
|
82
|
-
} = event;
|
|
90
|
+
var handleKeyPress = function handleKeyPress(event) {
|
|
91
|
+
var key = event.key;
|
|
83
92
|
|
|
84
93
|
if (key === 'ArrowLeft') {
|
|
85
94
|
event.preventDefault();
|
|
@@ -92,14 +101,14 @@ const TabList = /*#__PURE__*/forwardRef(function TabsList(_ref3, ref) {
|
|
|
92
101
|
}
|
|
93
102
|
};
|
|
94
103
|
|
|
95
|
-
return /*#__PURE__*/jsx(StyledTabList, {
|
|
104
|
+
return /*#__PURE__*/jsx(StyledTabList, _objectSpread(_objectSpread({
|
|
96
105
|
onKeyDown: handleKeyPress,
|
|
97
|
-
ref: ref
|
|
98
|
-
|
|
106
|
+
ref: ref
|
|
107
|
+
}, props), {}, {
|
|
99
108
|
variant: variant,
|
|
100
109
|
scrollable: scrollable,
|
|
101
110
|
children: Tabs
|
|
102
|
-
});
|
|
111
|
+
}));
|
|
103
112
|
});
|
|
104
113
|
|
|
105
114
|
export { TabList };
|
|
@@ -1,33 +1,31 @@
|
|
|
1
|
+
import _objectSpread from '@babel/runtime/helpers/objectSpread2';
|
|
2
|
+
import _extends from '@babel/runtime/helpers/extends';
|
|
1
3
|
import { forwardRef } from 'react';
|
|
2
4
|
import styled, { css } from 'styled-components';
|
|
3
5
|
import { spacingsTemplate, typographyTemplate, outlineTemplate } from '@equinor/eds-utils';
|
|
4
6
|
import { jsx } from 'react/jsx-runtime';
|
|
5
7
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
var StyledTabPanel = styled.div.attrs(function () {
|
|
9
|
+
return {
|
|
10
|
+
tabIndex: 0,
|
|
11
|
+
role: 'tabpanel'
|
|
12
|
+
};
|
|
13
|
+
}).withConfig({
|
|
10
14
|
displayName: "TabPanel__StyledTabPanel",
|
|
11
15
|
componentId: "sc-e8v1d4-0"
|
|
12
|
-
})(_ref
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
} = _ref;
|
|
16
|
-
const {
|
|
17
|
-
entities: {
|
|
18
|
-
panel
|
|
19
|
-
}
|
|
20
|
-
} = theme;
|
|
16
|
+
})(function (_ref) {
|
|
17
|
+
var theme = _ref.theme;
|
|
18
|
+
var panel = theme.entities.panel;
|
|
21
19
|
return css(["", " ", " &:focus{outline:none;}&[data-focus-visible-added]:focus{", "}&:focus-visible{", "}"], spacingsTemplate(panel.spacings), typographyTemplate(panel.typography), outlineTemplate(panel.states.focus.outline), outlineTemplate(panel.states.focus.outline));
|
|
22
20
|
});
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
return /*#__PURE__*/jsx(StyledTabPanel, {
|
|
27
|
-
ref: ref
|
|
28
|
-
|
|
21
|
+
var TabPanel = /*#__PURE__*/forwardRef(function TabPanel(_ref2, ref) {
|
|
22
|
+
var props = _extends({}, _ref2);
|
|
23
|
+
|
|
24
|
+
return /*#__PURE__*/jsx(StyledTabPanel, _objectSpread(_objectSpread({
|
|
25
|
+
ref: ref
|
|
26
|
+
}, props), {}, {
|
|
29
27
|
children: props.children
|
|
30
|
-
});
|
|
28
|
+
}));
|
|
31
29
|
});
|
|
32
30
|
|
|
33
31
|
export { TabPanel };
|
|
@@ -1,26 +1,30 @@
|
|
|
1
|
+
import _objectSpread from '@babel/runtime/helpers/objectSpread2';
|
|
2
|
+
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
1
3
|
import { forwardRef, useContext, Children, cloneElement } from 'react';
|
|
2
4
|
import { TabsContext } from './Tabs.context.js';
|
|
3
5
|
import { jsx } from 'react/jsx-runtime';
|
|
4
6
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
ref: ref,
|
|
21
|
-
...props,
|
|
22
|
-
children: Panels
|
|
7
|
+
var _excluded = ["children"];
|
|
8
|
+
var TabPanels = /*#__PURE__*/forwardRef(function TabPanels(_ref, ref) {
|
|
9
|
+
var children = _ref.children,
|
|
10
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
11
|
+
|
|
12
|
+
var _useContext = useContext(TabsContext),
|
|
13
|
+
activeTab = _useContext.activeTab,
|
|
14
|
+
tabsId = _useContext.tabsId;
|
|
15
|
+
|
|
16
|
+
var Panels = Children.map(children, function (child, index) {
|
|
17
|
+
return /*#__PURE__*/cloneElement(child, {
|
|
18
|
+
id: "".concat(tabsId, "-panel-").concat(index + 1),
|
|
19
|
+
'aria-labelledby': "".concat(tabsId, "-tab-").concat(index + 1),
|
|
20
|
+
hidden: activeTab !== index
|
|
21
|
+
});
|
|
23
22
|
});
|
|
23
|
+
return /*#__PURE__*/jsx("div", _objectSpread(_objectSpread({
|
|
24
|
+
ref: ref
|
|
25
|
+
}, props), {}, {
|
|
26
|
+
children: Panels
|
|
27
|
+
}));
|
|
24
28
|
});
|
|
25
29
|
|
|
26
30
|
export { TabPanels };
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { createContext } from 'react';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
var TabsContext = /*#__PURE__*/createContext({
|
|
4
4
|
variant: 'minWidth',
|
|
5
5
|
scrollable: false,
|
|
6
|
-
handleChange: ()
|
|
6
|
+
handleChange: function handleChange() {
|
|
7
|
+
return null;
|
|
8
|
+
},
|
|
7
9
|
activeTab: 0,
|
|
8
10
|
tabsId: '',
|
|
9
11
|
tabsFocused: false
|
|
10
12
|
});
|
|
11
|
-
|
|
13
|
+
var TabsProvider = TabsContext.Provider;
|
|
12
14
|
TabsContext.Consumer;
|
|
13
15
|
|
|
14
16
|
export { TabsContext, TabsProvider };
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import _objectSpread from '@babel/runtime/helpers/objectSpread2';
|
|
2
|
+
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
3
|
+
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
1
4
|
import { forwardRef, useRef, useMemo, useState, useEffect } from 'react';
|
|
2
5
|
import { TabsProvider } from './Tabs.context.js';
|
|
3
6
|
import { token } from './Tabs.tokens.js';
|
|
@@ -6,32 +9,49 @@ import { ThemeProvider } from 'styled-components';
|
|
|
6
9
|
import { jsx } from 'react/jsx-runtime';
|
|
7
10
|
import { useEds } from '../EdsProvider/eds.context.js';
|
|
8
11
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
12
|
+
var _excluded = ["activeTab", "onChange", "onBlur", "onFocus", "variant", "scrollable", "id"];
|
|
13
|
+
var Tabs = /*#__PURE__*/forwardRef(function Tabs(_ref, ref) {
|
|
14
|
+
var _ref$activeTab = _ref.activeTab,
|
|
15
|
+
activeTab = _ref$activeTab === void 0 ? 0 : _ref$activeTab,
|
|
16
|
+
_ref$onChange = _ref.onChange,
|
|
17
|
+
onChange = _ref$onChange === void 0 ? function () {
|
|
18
|
+
return null;
|
|
19
|
+
} : _ref$onChange,
|
|
20
|
+
onBlur = _ref.onBlur,
|
|
21
|
+
onFocus = _ref.onFocus,
|
|
22
|
+
_ref$variant = _ref.variant,
|
|
23
|
+
variant = _ref$variant === void 0 ? 'minWidth' : _ref$variant,
|
|
24
|
+
_ref$scrollable = _ref.scrollable,
|
|
25
|
+
scrollable = _ref$scrollable === void 0 ? false : _ref$scrollable,
|
|
26
|
+
id = _ref.id,
|
|
27
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
28
|
+
|
|
29
|
+
var tabsId = useId(id, 'tabs');
|
|
30
|
+
var tabsRef = useRef(null);
|
|
31
|
+
var combinedTabsRef = useMemo(function () {
|
|
32
|
+
return mergeRefs(tabsRef, ref);
|
|
33
|
+
}, [tabsRef, ref]);
|
|
34
|
+
|
|
35
|
+
var _useState = useState(false),
|
|
36
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
37
|
+
tabsFocused = _useState2[0],
|
|
38
|
+
setTabsFocused = _useState2[1];
|
|
39
|
+
|
|
40
|
+
var _useState3 = useState(false),
|
|
41
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
42
|
+
listenerAttached = _useState4[0],
|
|
43
|
+
setListenerAttached = _useState4[1];
|
|
44
|
+
|
|
45
|
+
var blurTimer;
|
|
46
|
+
|
|
47
|
+
var handleBlur = function handleBlur(e) {
|
|
28
48
|
setListenerAttached(false);
|
|
29
49
|
|
|
30
50
|
if (tabsRef.current) {
|
|
31
51
|
tabsRef.current.removeEventListener('keyup', checkIfTabWasPressed);
|
|
32
52
|
}
|
|
33
53
|
|
|
34
|
-
blurTimer = setTimeout(()
|
|
54
|
+
blurTimer = setTimeout(function () {
|
|
35
55
|
if (tabsFocused) {
|
|
36
56
|
setTabsFocused(false);
|
|
37
57
|
}
|
|
@@ -39,7 +59,7 @@ const Tabs = /*#__PURE__*/forwardRef(function Tabs(_ref, ref) {
|
|
|
39
59
|
onBlur && onBlur(e);
|
|
40
60
|
};
|
|
41
61
|
|
|
42
|
-
|
|
62
|
+
var handleFocus = function handleFocus(e) {
|
|
43
63
|
if (e.target.getAttribute('role') !== 'tab') {
|
|
44
64
|
return;
|
|
45
65
|
}
|
|
@@ -61,40 +81,41 @@ const Tabs = /*#__PURE__*/forwardRef(function Tabs(_ref, ref) {
|
|
|
61
81
|
}; //Only force focus on active Tab if Tabs was navigated to with keyboard
|
|
62
82
|
|
|
63
83
|
|
|
64
|
-
|
|
84
|
+
var checkIfTabWasPressed = function checkIfTabWasPressed(event) {
|
|
65
85
|
setListenerAttached(false);
|
|
66
86
|
if (event.key === 'Tab') setTabsFocused(true);
|
|
67
87
|
};
|
|
68
88
|
|
|
69
|
-
useEffect(()
|
|
70
|
-
|
|
71
|
-
return ()
|
|
89
|
+
useEffect(function () {
|
|
90
|
+
var tabs = tabsRef.current;
|
|
91
|
+
return function () {
|
|
72
92
|
if (tabs) tabs.removeEventListener('keyup', checkIfTabWasPressed);
|
|
73
93
|
}; // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
74
94
|
}, []);
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
95
|
+
|
|
96
|
+
var _useEds = useEds(),
|
|
97
|
+
density = _useEds.density;
|
|
98
|
+
|
|
99
|
+
var token$1 = useToken({
|
|
100
|
+
density: density
|
|
80
101
|
}, token);
|
|
81
102
|
return /*#__PURE__*/jsx(ThemeProvider, {
|
|
82
103
|
theme: token$1,
|
|
83
104
|
children: /*#__PURE__*/jsx(TabsProvider, {
|
|
84
105
|
value: {
|
|
85
|
-
activeTab,
|
|
106
|
+
activeTab: activeTab,
|
|
86
107
|
handleChange: onChange,
|
|
87
|
-
tabsId,
|
|
88
|
-
variant,
|
|
89
|
-
scrollable,
|
|
90
|
-
tabsFocused
|
|
108
|
+
tabsId: tabsId,
|
|
109
|
+
variant: variant,
|
|
110
|
+
scrollable: scrollable,
|
|
111
|
+
tabsFocused: tabsFocused
|
|
91
112
|
},
|
|
92
|
-
children: /*#__PURE__*/jsx("div", {
|
|
93
|
-
ref: combinedTabsRef
|
|
94
|
-
|
|
113
|
+
children: /*#__PURE__*/jsx("div", _objectSpread(_objectSpread({
|
|
114
|
+
ref: combinedTabsRef
|
|
115
|
+
}, props), {}, {
|
|
95
116
|
onBlur: handleBlur,
|
|
96
117
|
onFocus: handleFocus
|
|
97
|
-
})
|
|
118
|
+
}))
|
|
98
119
|
})
|
|
99
120
|
});
|
|
100
121
|
});
|
|
@@ -1,53 +1,21 @@
|
|
|
1
|
+
import _objectSpread from '@babel/runtime/helpers/objectSpread2';
|
|
1
2
|
import { tokens } from '@equinor/eds-tokens';
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
},
|
|
19
|
-
primary__hover_alt: {
|
|
20
|
-
rgba: hoverBackgroundColor
|
|
21
|
-
},
|
|
22
|
-
primary__resting: {
|
|
23
|
-
rgba: activeColor
|
|
24
|
-
},
|
|
25
|
-
primary__hover: {
|
|
26
|
-
rgba: activeHoverColor
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
},
|
|
30
|
-
clickbounds: {
|
|
31
|
-
default__base: clickboundsHeight
|
|
32
|
-
},
|
|
33
|
-
spacings: {
|
|
34
|
-
comfortable: {
|
|
35
|
-
medium: spacingMedium
|
|
36
|
-
}
|
|
37
|
-
},
|
|
38
|
-
interactions: {
|
|
39
|
-
focused: {
|
|
40
|
-
width: focusOutlineWidth
|
|
41
|
-
}
|
|
42
|
-
},
|
|
43
|
-
typography: {
|
|
44
|
-
navigation: {
|
|
45
|
-
menu_tabs,
|
|
46
|
-
menu_title
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
} = tokens;
|
|
50
|
-
const token = {
|
|
4
|
+
var _tokens$colors = tokens.colors,
|
|
5
|
+
defaultColor = _tokens$colors.text.static_icons__tertiary.rgba,
|
|
6
|
+
defaultBorderColor = _tokens$colors.ui.background__medium.rgba,
|
|
7
|
+
_tokens$colors$intera = _tokens$colors.interactive,
|
|
8
|
+
focusOutlineColor = _tokens$colors$intera.focus.rgba,
|
|
9
|
+
hoverBackgroundColor = _tokens$colors$intera.primary__hover_alt.rgba,
|
|
10
|
+
activeColor = _tokens$colors$intera.primary__resting.rgba,
|
|
11
|
+
activeHoverColor = _tokens$colors$intera.primary__hover.rgba,
|
|
12
|
+
clickboundsHeight = tokens.clickbounds.default__base,
|
|
13
|
+
spacingMedium = tokens.spacings.comfortable.medium,
|
|
14
|
+
focusOutlineWidth = tokens.interactions.focused.width,
|
|
15
|
+
_tokens$typography$na = tokens.typography.navigation,
|
|
16
|
+
menu_tabs = _tokens$typography$na.menu_tabs,
|
|
17
|
+
menu_title = _tokens$typography$na.menu_title;
|
|
18
|
+
var token = {
|
|
51
19
|
entities: {
|
|
52
20
|
panel: {
|
|
53
21
|
spacings: {
|
|
@@ -64,8 +32,7 @@ const token = {
|
|
|
64
32
|
}
|
|
65
33
|
}
|
|
66
34
|
},
|
|
67
|
-
typography: {
|
|
68
|
-
}
|
|
35
|
+
typography: _objectSpread({}, menu_title)
|
|
69
36
|
},
|
|
70
37
|
tab: {
|
|
71
38
|
background: 'transparent',
|
|
@@ -80,11 +47,10 @@ const token = {
|
|
|
80
47
|
left: spacingMedium,
|
|
81
48
|
right: spacingMedium
|
|
82
49
|
},
|
|
83
|
-
typography: {
|
|
50
|
+
typography: _objectSpread({
|
|
84
51
|
color: defaultColor,
|
|
85
|
-
textAlign: 'center'
|
|
86
|
-
|
|
87
|
-
},
|
|
52
|
+
textAlign: 'center'
|
|
53
|
+
}, menu_tabs),
|
|
88
54
|
border: {
|
|
89
55
|
type: 'bordergroup',
|
|
90
56
|
bottom: {
|
|
@@ -109,7 +75,7 @@ const token = {
|
|
|
109
75
|
outline: {
|
|
110
76
|
type: 'outline',
|
|
111
77
|
width: focusOutlineWidth,
|
|
112
|
-
offset:
|
|
78
|
+
offset: "-".concat(parseInt(focusOutlineWidth), "px"),
|
|
113
79
|
style: 'dashed',
|
|
114
80
|
color: focusOutlineColor
|
|
115
81
|
}
|