carbon-react 116.1.2 → 116.1.3
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/esm/__internal__/utils/helpers/events/events.d.ts +1 -1
- package/esm/components/date/date.component.js +9 -1
- package/esm/components/date/date.style.js +5 -2
- package/esm/components/detail/detail.component.d.ts +19 -0
- package/esm/components/detail/detail.component.js +176 -42
- package/esm/components/detail/detail.style.d.ts +10 -0
- package/esm/components/detail/index.d.ts +2 -1
- package/esm/components/drawer/drawer.component.d.ts +1 -1
- package/esm/components/icon/icon.component.js +1 -1
- package/esm/components/menu/index.d.ts +1 -0
- package/esm/components/tabs/__internal__/tab-title/index.d.ts +2 -1
- package/esm/components/tabs/__internal__/tab-title/index.js +1 -1
- package/esm/components/tabs/__internal__/tab-title/tab-title.component.d.ts +37 -3
- package/esm/components/tabs/__internal__/tab-title/tab-title.component.js +99 -97
- package/esm/components/tabs/__internal__/tab-title/tab-title.style.d.ts +18 -4
- package/esm/components/tabs/__internal__/tab-title/tab-title.style.js +14 -50
- package/esm/components/tabs/__internal__/tabs-header/index.d.ts +2 -1
- package/esm/components/tabs/__internal__/tabs-header/tabs-header.component.d.ts +13 -0
- package/esm/components/tabs/__internal__/tabs-header/tabs-header.component.js +8 -8
- package/esm/components/tabs/__internal__/tabs-header/tabs-header.style.d.ts +6 -6
- package/esm/components/tabs/__internal__/tabs-header/tabs-header.style.js +8 -27
- package/esm/components/tabs/index.d.ts +3 -2
- package/esm/components/tabs/tab/index.d.ts +2 -2
- package/esm/components/tabs/tab/tab.component.d.ts +53 -0
- package/esm/components/tabs/tab/tab.component.js +180 -61
- package/esm/components/tabs/tab/tab.style.d.ts +8 -1
- package/esm/components/tabs/tab/tab.style.js +1 -6
- package/esm/components/tabs/tabs.component.d.ts +49 -0
- package/esm/components/tabs/tabs.component.js +188 -70
- package/esm/components/tabs/tabs.style.d.ts +5 -1
- package/esm/components/tabs/tabs.style.js +2 -8
- package/esm/components/textbox/textbox.component.d.ts +1 -1
- package/lib/__internal__/utils/helpers/events/events.d.ts +1 -1
- package/lib/components/date/date.component.js +9 -1
- package/lib/components/date/date.style.js +5 -2
- package/lib/components/detail/detail.component.d.ts +19 -0
- package/lib/components/detail/detail.component.js +178 -47
- package/lib/components/detail/detail.style.d.ts +10 -0
- package/lib/components/detail/index.d.ts +2 -1
- package/lib/components/drawer/drawer.component.d.ts +1 -1
- package/lib/components/icon/icon.component.js +1 -1
- package/lib/components/menu/index.d.ts +1 -0
- package/lib/components/tabs/__internal__/tab-title/index.d.ts +2 -1
- package/lib/components/tabs/__internal__/tab-title/index.js +10 -2
- package/lib/components/tabs/__internal__/tab-title/tab-title.component.d.ts +37 -3
- package/lib/components/tabs/__internal__/tab-title/tab-title.component.js +99 -97
- package/lib/components/tabs/__internal__/tab-title/tab-title.style.d.ts +18 -4
- package/lib/components/tabs/__internal__/tab-title/tab-title.style.js +17 -53
- package/lib/components/tabs/__internal__/tabs-header/index.d.ts +2 -1
- package/lib/components/tabs/__internal__/tabs-header/tabs-header.component.d.ts +13 -0
- package/lib/components/tabs/__internal__/tabs-header/tabs-header.component.js +8 -8
- package/lib/components/tabs/__internal__/tabs-header/tabs-header.style.d.ts +6 -6
- package/lib/components/tabs/__internal__/tabs-header/tabs-header.style.js +9 -31
- package/lib/components/tabs/index.d.ts +3 -2
- package/lib/components/tabs/tab/index.d.ts +2 -2
- package/lib/components/tabs/tab/tab.component.d.ts +53 -0
- package/lib/components/tabs/tab/tab.component.js +181 -64
- package/lib/components/tabs/tab/tab.style.d.ts +8 -1
- package/lib/components/tabs/tab/tab.style.js +1 -7
- package/lib/components/tabs/tabs.component.d.ts +49 -0
- package/lib/components/tabs/tabs.component.js +188 -73
- package/lib/components/tabs/tabs.style.d.ts +5 -1
- package/lib/components/tabs/tabs.style.js +2 -9
- package/lib/components/textbox/textbox.component.d.ts +1 -1
- package/package.json +1 -1
- package/esm/components/detail/detail.d.ts +0 -16
- package/esm/components/tabs/__internal__/tab-title/tab-title.d.ts +0 -47
- package/esm/components/tabs/__internal__/tabs-header/tab-header.d.ts +0 -16
- package/esm/components/tabs/tab/tab.d.ts +0 -54
- package/esm/components/tabs/tabs.d.ts +0 -51
- package/lib/components/detail/detail.d.ts +0 -16
- package/lib/components/tabs/__internal__/tab-title/tab-title.d.ts +0 -47
- package/lib/components/tabs/__internal__/tabs-header/tab-header.d.ts +0 -16
- package/lib/components/tabs/tab/tab.d.ts +0 -54
- package/lib/components/tabs/tabs.d.ts +0 -51
|
@@ -2,10 +2,9 @@ function _extends() { _extends = Object.assign || function (target) { for (var i
|
|
|
2
2
|
|
|
3
3
|
import React, { useRef, useState } from "react";
|
|
4
4
|
import PropTypes from "prop-types";
|
|
5
|
-
import {
|
|
5
|
+
import { StyledTabTitleButton, StyledTabTitleLink, StyledTitleContent, StyledLayoutWrapper, StyledSelectedIndicator } from "./tab-title.style";
|
|
6
6
|
import tagComponent from "../../../../__internal__/utils/helpers/tags/tags";
|
|
7
7
|
import ValidationIcon from "../../../../__internal__/validations/validation-icon.component";
|
|
8
|
-
import createGuid from "../../../../__internal__/utils/helpers/guid";
|
|
9
8
|
import Icon from "../../../icon";
|
|
10
9
|
import Events from "../../../../__internal__/utils/helpers/events";
|
|
11
10
|
import { TooltipProvider } from "../../../../__internal__/tooltip-provider";
|
|
@@ -15,7 +14,7 @@ const TabTitle = /*#__PURE__*/React.forwardRef(({
|
|
|
15
14
|
dataTabId,
|
|
16
15
|
"data-role": dataRole,
|
|
17
16
|
title,
|
|
18
|
-
position
|
|
17
|
+
position,
|
|
19
18
|
error,
|
|
20
19
|
warning,
|
|
21
20
|
info,
|
|
@@ -26,7 +25,7 @@ const TabTitle = /*#__PURE__*/React.forwardRef(({
|
|
|
26
25
|
errorMessage = "",
|
|
27
26
|
warningMessage = "",
|
|
28
27
|
infoMessage = "",
|
|
29
|
-
borders
|
|
28
|
+
borders,
|
|
30
29
|
alternateStyling = false,
|
|
31
30
|
noLeftBorder = false,
|
|
32
31
|
noRightBorder = false,
|
|
@@ -35,9 +34,9 @@ const TabTitle = /*#__PURE__*/React.forwardRef(({
|
|
|
35
34
|
href,
|
|
36
35
|
onKeyDown,
|
|
37
36
|
align,
|
|
37
|
+
tabIndex,
|
|
38
38
|
...tabTitleProps
|
|
39
39
|
}, ref) => {
|
|
40
|
-
const keys = useRef([]);
|
|
41
40
|
const isHref = !!href;
|
|
42
41
|
const hasAlternateStyling = alternateStyling || isInSidebar;
|
|
43
42
|
const hasFailedValidation = error || warning || info;
|
|
@@ -49,15 +48,11 @@ const TabTitle = /*#__PURE__*/React.forwardRef(({
|
|
|
49
48
|
};
|
|
50
49
|
|
|
51
50
|
const hideTooltip = () => {
|
|
52
|
-
if ((ref === null || ref === void 0 ? void 0 : ref.current) !== document.activeElement && !hasHover.current) {
|
|
51
|
+
if (typeof ref === "object" && (ref === null || ref === void 0 ? void 0 : ref.current) !== document.activeElement && !hasHover.current) {
|
|
53
52
|
setShouldShowTooltip(false);
|
|
54
53
|
}
|
|
55
54
|
};
|
|
56
55
|
|
|
57
|
-
if (siblings && !keys.current.length) {
|
|
58
|
-
siblings.forEach(() => keys.current.push(createGuid()));
|
|
59
|
-
}
|
|
60
|
-
|
|
61
56
|
const handleKeyDown = ev => {
|
|
62
57
|
ev.stopPropagation();
|
|
63
58
|
|
|
@@ -69,8 +64,6 @@ const TabTitle = /*#__PURE__*/React.forwardRef(({
|
|
|
69
64
|
};
|
|
70
65
|
|
|
71
66
|
const handleClick = ev => {
|
|
72
|
-
var _ref$current;
|
|
73
|
-
|
|
74
67
|
ev.preventDefault();
|
|
75
68
|
const customEvent = { ...ev,
|
|
76
69
|
target: { ...ev.target,
|
|
@@ -84,9 +77,15 @@ const TabTitle = /*#__PURE__*/React.forwardRef(({
|
|
|
84
77
|
onClick(customEvent);
|
|
85
78
|
return window.open(href, "_blank");
|
|
86
79
|
} // safari does not focus buttons by default
|
|
80
|
+
// istanbul ignore else (ref is always passed as an object from Tabs component, if was only added to satisfy Typescript compiler)
|
|
81
|
+
|
|
87
82
|
|
|
83
|
+
if (typeof ref === "object") {
|
|
84
|
+
var _ref$current;
|
|
85
|
+
|
|
86
|
+
ref === null || ref === void 0 ? void 0 : (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.focus();
|
|
87
|
+
}
|
|
88
88
|
|
|
89
|
-
(_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.focus();
|
|
90
89
|
return onClick(customEvent);
|
|
91
90
|
};
|
|
92
91
|
|
|
@@ -107,58 +106,20 @@ const TabTitle = /*#__PURE__*/React.forwardRef(({
|
|
|
107
106
|
const titleSiblings = /*#__PURE__*/React.createElement(StyledLayoutWrapper, {
|
|
108
107
|
titlePosition: titlePosition,
|
|
109
108
|
key: "title-siblings"
|
|
110
|
-
}, siblings.map(
|
|
111
|
-
|
|
109
|
+
}, React.Children.toArray(siblings).map(child => {
|
|
110
|
+
// istanbul ignore next
|
|
111
|
+
if (! /*#__PURE__*/React.isValidElement(child)) {
|
|
112
|
+
return child;
|
|
113
|
+
}
|
|
114
|
+
|
|
112
115
|
return /*#__PURE__*/React.cloneElement(child, { ...child.props,
|
|
113
|
-
onClick: handleClick
|
|
114
|
-
key
|
|
116
|
+
onClick: handleClick
|
|
115
117
|
});
|
|
116
118
|
}));
|
|
117
119
|
return titlePosition === "before" ? [titleText, titleSiblings] : [titleSiblings, titleText];
|
|
118
120
|
};
|
|
119
121
|
|
|
120
|
-
|
|
121
|
-
tooltipVisible: shouldShowTooltip
|
|
122
|
-
}, /*#__PURE__*/React.createElement(TabTitleContext.Provider, {
|
|
123
|
-
value: {
|
|
124
|
-
isInTab: true
|
|
125
|
-
}
|
|
126
|
-
}, /*#__PURE__*/React.createElement(StyledTabTitle, _extends({
|
|
127
|
-
ref: ref,
|
|
128
|
-
"aria-selected": isTabSelected,
|
|
129
|
-
"data-element": "select-tab",
|
|
130
|
-
"data-tabid": dataTabId,
|
|
131
|
-
"data-role": dataRole,
|
|
132
|
-
role: "tab",
|
|
133
|
-
position: position,
|
|
134
|
-
isTabSelected: isTabSelected,
|
|
135
|
-
error: error,
|
|
136
|
-
warning: warning,
|
|
137
|
-
info: info,
|
|
138
|
-
noRightBorder: noRightBorder,
|
|
139
|
-
noLeftBorder: noLeftBorder,
|
|
140
|
-
alternateStyling: alternateStyling || isInSidebar,
|
|
141
|
-
borders: borders,
|
|
142
|
-
isInSidebar: isInSidebar
|
|
143
|
-
}, tabTitleProps, isHref && {
|
|
144
|
-
href,
|
|
145
|
-
target: "_blank",
|
|
146
|
-
as: "a"
|
|
147
|
-
}, tagComponent("tab-header", tabTitleProps), {
|
|
148
|
-
onKeyDown: handleKeyDown,
|
|
149
|
-
onClick: handleClick,
|
|
150
|
-
size: size,
|
|
151
|
-
onMouseOver: () => {
|
|
152
|
-
hasHover.current = true;
|
|
153
|
-
showTooltip();
|
|
154
|
-
},
|
|
155
|
-
onMouseLeave: () => {
|
|
156
|
-
hasHover.current = false;
|
|
157
|
-
hideTooltip();
|
|
158
|
-
},
|
|
159
|
-
onFocus: showTooltip,
|
|
160
|
-
onBlur: hideTooltip
|
|
161
|
-
}), /*#__PURE__*/React.createElement(StyledTitleContent, {
|
|
122
|
+
const titleChildren = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(StyledTitleContent, {
|
|
162
123
|
error: error,
|
|
163
124
|
warning: warning,
|
|
164
125
|
info: info,
|
|
@@ -179,54 +140,95 @@ const TabTitle = /*#__PURE__*/React.forwardRef(({
|
|
|
179
140
|
position: position,
|
|
180
141
|
hasCustomSibling: !!customLayout
|
|
181
142
|
}, error && /*#__PURE__*/React.createElement(ValidationIcon, {
|
|
182
|
-
onClick: handleClick,
|
|
183
143
|
tooltipPosition: "top",
|
|
184
|
-
error: errorMessage
|
|
185
|
-
tabIndex: null
|
|
144
|
+
error: errorMessage
|
|
186
145
|
}), !error && warning && /*#__PURE__*/React.createElement(ValidationIcon, {
|
|
187
|
-
onClick: handleClick,
|
|
188
146
|
tooltipPosition: "top",
|
|
189
|
-
warning: warningMessage
|
|
190
|
-
tabIndex: null
|
|
147
|
+
warning: warningMessage
|
|
191
148
|
}), !warning && !error && info && /*#__PURE__*/React.createElement(ValidationIcon, {
|
|
192
|
-
onClick: handleClick,
|
|
193
149
|
tooltipPosition: "top",
|
|
194
|
-
info: infoMessage
|
|
195
|
-
tabIndex: null
|
|
150
|
+
info: infoMessage
|
|
196
151
|
}))), !(hasFailedValidation || hasAlternateStyling) && isTabSelected && /*#__PURE__*/React.createElement(StyledSelectedIndicator, {
|
|
197
152
|
"data-element": "tab-selected-indicator",
|
|
198
153
|
position: position
|
|
199
|
-
}))
|
|
154
|
+
}));
|
|
155
|
+
const titleWrapperProps = {
|
|
156
|
+
"aria-selected": isTabSelected,
|
|
157
|
+
"data-element": "select-tab",
|
|
158
|
+
"data-tabid": dataTabId,
|
|
159
|
+
"data-role": dataRole,
|
|
160
|
+
role: "tab",
|
|
161
|
+
position,
|
|
162
|
+
isTabSelected,
|
|
163
|
+
error,
|
|
164
|
+
warning,
|
|
165
|
+
info,
|
|
166
|
+
noRightBorder,
|
|
167
|
+
noLeftBorder,
|
|
168
|
+
alternateStyling: alternateStyling || isInSidebar,
|
|
169
|
+
borders,
|
|
170
|
+
isInSidebar,
|
|
171
|
+
tabIndex,
|
|
172
|
+
...tabTitleProps,
|
|
173
|
+
...tagComponent("tab-header", tabTitleProps),
|
|
174
|
+
onKeyDown: handleKeyDown,
|
|
175
|
+
onClick: handleClick,
|
|
176
|
+
size,
|
|
177
|
+
onMouseOver: () => {
|
|
178
|
+
hasHover.current = true;
|
|
179
|
+
showTooltip();
|
|
180
|
+
},
|
|
181
|
+
onMouseLeave: () => {
|
|
182
|
+
hasHover.current = false;
|
|
183
|
+
hideTooltip();
|
|
184
|
+
},
|
|
185
|
+
onFocus: showTooltip,
|
|
186
|
+
onBlur: hideTooltip
|
|
187
|
+
};
|
|
188
|
+
const tabTitle = isHref ? /*#__PURE__*/React.createElement(StyledTabTitleLink, _extends({}, titleWrapperProps, {
|
|
189
|
+
ref: ref,
|
|
190
|
+
href: href,
|
|
191
|
+
target: "_blank"
|
|
192
|
+
}), titleChildren) : /*#__PURE__*/React.createElement(StyledTabTitleButton, _extends({}, titleWrapperProps, {
|
|
193
|
+
ref: ref
|
|
194
|
+
}), titleChildren);
|
|
195
|
+
return /*#__PURE__*/React.createElement(TooltipProvider, {
|
|
196
|
+
tooltipVisible: shouldShowTooltip
|
|
197
|
+
}, /*#__PURE__*/React.createElement(TabTitleContext.Provider, {
|
|
198
|
+
value: {
|
|
199
|
+
isInTab: true
|
|
200
|
+
}
|
|
201
|
+
}, tabTitle));
|
|
200
202
|
});
|
|
201
203
|
TabTitle.propTypes = {
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
204
|
+
"align": PropTypes.oneOf(["left", "right"]),
|
|
205
|
+
"alternateStyling": PropTypes.bool,
|
|
206
|
+
"borders": PropTypes.bool,
|
|
207
|
+
"children": PropTypes.node,
|
|
208
|
+
"className": PropTypes.string,
|
|
209
|
+
"customLayout": PropTypes.node,
|
|
208
210
|
"data-role": PropTypes.string,
|
|
209
|
-
dataTabId: PropTypes.string,
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
align: PropTypes.oneOf(["left", "right"])
|
|
211
|
+
"dataTabId": PropTypes.string,
|
|
212
|
+
"error": PropTypes.bool,
|
|
213
|
+
"errorMessage": PropTypes.string,
|
|
214
|
+
"href": PropTypes.string,
|
|
215
|
+
"id": PropTypes.string,
|
|
216
|
+
"info": PropTypes.bool,
|
|
217
|
+
"infoMessage": PropTypes.string,
|
|
218
|
+
"isInSidebar": PropTypes.bool,
|
|
219
|
+
"isTabSelected": PropTypes.bool,
|
|
220
|
+
"noLeftBorder": PropTypes.bool,
|
|
221
|
+
"noRightBorder": PropTypes.bool,
|
|
222
|
+
"onClick": PropTypes.func.isRequired,
|
|
223
|
+
"onKeyDown": PropTypes.func.isRequired,
|
|
224
|
+
"position": PropTypes.oneOf(["left", "top"]),
|
|
225
|
+
"siblings": PropTypes.node,
|
|
226
|
+
"size": PropTypes.oneOf(["default", "large"]),
|
|
227
|
+
"tabIndex": PropTypes.number,
|
|
228
|
+
"title": PropTypes.string,
|
|
229
|
+
"titlePosition": PropTypes.oneOf(["after", "before"]),
|
|
230
|
+
"warning": PropTypes.bool,
|
|
231
|
+
"warningMessage": PropTypes.string
|
|
231
232
|
};
|
|
233
|
+
TabTitle.displayName = "TabTitle";
|
|
232
234
|
export default TabTitle;
|
|
@@ -1,4 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { TabTitleProps } from ".";
|
|
2
|
+
interface StyledTitleContentProps extends Pick<TabTitleProps, "align" | "borders" | "error" | "info" | "isTabSelected" | "noLeftBorder" | "noRightBorder" | "position" | "size" | "warning"> {
|
|
3
|
+
alternateStyling?: boolean;
|
|
4
|
+
hasCustomLayout?: boolean;
|
|
5
|
+
hasHref?: boolean;
|
|
6
|
+
hasSiblings?: boolean;
|
|
7
|
+
}
|
|
8
|
+
declare const StyledTitleContent: import("styled-components").StyledComponent<"span", any, StyledTitleContentProps, never>;
|
|
9
|
+
declare const StyledTabTitleButton: import("styled-components").StyledComponent<"button", any, TabTitleProps, never>;
|
|
10
|
+
declare const StyledTabTitleLink: import("styled-components").StyledComponent<"a", any, TabTitleProps, never>;
|
|
11
|
+
interface StyledLayoutWrapperProps extends Pick<TabTitleProps, "titlePosition" | "position"> {
|
|
12
|
+
hasCustomLayout?: boolean;
|
|
13
|
+
hasCustomSibling?: boolean;
|
|
14
|
+
}
|
|
15
|
+
declare const StyledLayoutWrapper: import("styled-components").StyledComponent<"div", any, StyledLayoutWrapperProps, never>;
|
|
16
|
+
declare type StyledSelectedIndicatorProps = Pick<TabTitleProps, "position">;
|
|
17
|
+
declare const StyledSelectedIndicator: import("styled-components").StyledComponent<"div", any, StyledSelectedIndicatorProps, never>;
|
|
18
|
+
export { StyledTabTitleButton, StyledTabTitleLink, StyledTitleContent, StyledLayoutWrapper, StyledSelectedIndicator, };
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import styled, { css } from "styled-components";
|
|
2
|
-
import PropTypes from "prop-types";
|
|
3
2
|
import StyledIcon from "../../../icon/icon.style";
|
|
4
3
|
import StyledValidationIcon from "../../../../__internal__/validations/validation-icon.style";
|
|
5
4
|
const StyledTitleContent = styled.span`
|
|
@@ -16,8 +15,8 @@ const StyledTitleContent = styled.span`
|
|
|
16
15
|
size,
|
|
17
16
|
isTabSelected,
|
|
18
17
|
hasSiblings,
|
|
19
|
-
borders,
|
|
20
|
-
position,
|
|
18
|
+
borders = false,
|
|
19
|
+
position = "top",
|
|
21
20
|
noLeftBorder,
|
|
22
21
|
noRightBorder,
|
|
23
22
|
hasHref,
|
|
@@ -206,7 +205,7 @@ const StyledTitleContent = styled.span`
|
|
|
206
205
|
`}
|
|
207
206
|
`}
|
|
208
207
|
`;
|
|
209
|
-
const
|
|
208
|
+
const tabTitleStyles = css`
|
|
210
209
|
background-color: transparent;
|
|
211
210
|
display: inline-block;
|
|
212
211
|
font-weight: bold;
|
|
@@ -225,8 +224,8 @@ const StyledTabTitle = styled.button`
|
|
|
225
224
|
|
|
226
225
|
${({
|
|
227
226
|
size,
|
|
228
|
-
position,
|
|
229
|
-
borders,
|
|
227
|
+
position = "top",
|
|
228
|
+
borders = false,
|
|
230
229
|
noRightBorder,
|
|
231
230
|
noLeftBorder,
|
|
232
231
|
isTabSelected,
|
|
@@ -373,10 +372,16 @@ const StyledTabTitle = styled.button`
|
|
|
373
372
|
`}
|
|
374
373
|
`}
|
|
375
374
|
`;
|
|
375
|
+
const StyledTabTitleButton = styled.button`
|
|
376
|
+
${tabTitleStyles}
|
|
377
|
+
`;
|
|
378
|
+
const StyledTabTitleLink = styled.a`
|
|
379
|
+
${tabTitleStyles}
|
|
380
|
+
`;
|
|
376
381
|
const StyledLayoutWrapper = styled.div`
|
|
377
382
|
${({
|
|
378
383
|
hasCustomLayout,
|
|
379
|
-
titlePosition,
|
|
384
|
+
titlePosition = "before",
|
|
380
385
|
hasCustomSibling,
|
|
381
386
|
position
|
|
382
387
|
}) => css`
|
|
@@ -417,7 +422,7 @@ const StyledSelectedIndicator = styled.div`
|
|
|
417
422
|
z-index: 1;
|
|
418
423
|
|
|
419
424
|
${({
|
|
420
|
-
position
|
|
425
|
+
position = "top"
|
|
421
426
|
}) => css`
|
|
422
427
|
${position === "top" && css`
|
|
423
428
|
bottom: 0px;
|
|
@@ -438,45 +443,4 @@ const StyledSelectedIndicator = styled.div`
|
|
|
438
443
|
`}
|
|
439
444
|
`}
|
|
440
445
|
`;
|
|
441
|
-
|
|
442
|
-
position: PropTypes.oneOf(["top", "left"]),
|
|
443
|
-
size: PropTypes.oneOf(["default", "large"]),
|
|
444
|
-
borders: PropTypes.bool
|
|
445
|
-
};
|
|
446
|
-
StyledTabTitle.defaultProps = {
|
|
447
|
-
position: "top",
|
|
448
|
-
size: "default",
|
|
449
|
-
borders: false
|
|
450
|
-
};
|
|
451
|
-
StyledLayoutWrapper.propTypes = {
|
|
452
|
-
hasCustomLayout: PropTypes.bool,
|
|
453
|
-
titlePosition: PropTypes.oneOf(["before", "after"])
|
|
454
|
-
};
|
|
455
|
-
StyledLayoutWrapper.defaultProps = {
|
|
456
|
-
titlePosition: "before"
|
|
457
|
-
};
|
|
458
|
-
StyledTitleContent.propTypes = {
|
|
459
|
-
position: PropTypes.oneOf(["top", "left"]),
|
|
460
|
-
size: PropTypes.oneOf(["default", "large"]),
|
|
461
|
-
borders: PropTypes.bool,
|
|
462
|
-
error: PropTypes.bool,
|
|
463
|
-
warning: PropTypes.bool,
|
|
464
|
-
info: PropTypes.bool,
|
|
465
|
-
noLeftBorder: PropTypes.bool,
|
|
466
|
-
noRightBorder: PropTypes.bool,
|
|
467
|
-
hasSiblings: PropTypes.bool
|
|
468
|
-
};
|
|
469
|
-
StyledTitleContent.defaultProps = {
|
|
470
|
-
position: "top",
|
|
471
|
-
size: "default",
|
|
472
|
-
borders: false
|
|
473
|
-
};
|
|
474
|
-
StyledSelectedIndicator.propTypes = {
|
|
475
|
-
position: PropTypes.oneOf(["top", "left"]),
|
|
476
|
-
size: PropTypes.oneOf(["default", "large"])
|
|
477
|
-
};
|
|
478
|
-
StyledSelectedIndicator.defaultProps = {
|
|
479
|
-
position: "top",
|
|
480
|
-
size: "default"
|
|
481
|
-
};
|
|
482
|
-
export { StyledTabTitle, StyledTitleContent, StyledLayoutWrapper, StyledSelectedIndicator };
|
|
446
|
+
export { StyledTabTitleButton, StyledTabTitleLink, StyledTitleContent, StyledLayoutWrapper, StyledSelectedIndicator };
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export { default } from "./
|
|
1
|
+
export { default } from "./tabs-header.component";
|
|
2
|
+
export type { TabHeaderProps } from "./tabs-header.component";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export interface TabHeaderProps {
|
|
3
|
+
role?: string;
|
|
4
|
+
position?: "top" | "left";
|
|
5
|
+
extendedLine?: boolean;
|
|
6
|
+
noRightBorder?: boolean;
|
|
7
|
+
alternateStyling?: boolean;
|
|
8
|
+
isInSidebar?: boolean;
|
|
9
|
+
children: React.ReactNode;
|
|
10
|
+
align?: "left" | "right";
|
|
11
|
+
}
|
|
12
|
+
declare const TabsHeader: ({ align, children, position, role, extendedLine, alternateStyling, noRightBorder, isInSidebar, }: TabHeaderProps) => JSX.Element;
|
|
13
|
+
export default TabsHeader;
|
|
@@ -27,13 +27,13 @@ const TabsHeader = ({
|
|
|
27
27
|
};
|
|
28
28
|
|
|
29
29
|
TabsHeader.propTypes = {
|
|
30
|
-
align: PropTypes.oneOf(["left", "right"]),
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
30
|
+
"align": PropTypes.oneOf(["left", "right"]),
|
|
31
|
+
"alternateStyling": PropTypes.bool,
|
|
32
|
+
"children": PropTypes.node,
|
|
33
|
+
"extendedLine": PropTypes.bool,
|
|
34
|
+
"isInSidebar": PropTypes.bool,
|
|
35
|
+
"noRightBorder": PropTypes.bool,
|
|
36
|
+
"position": PropTypes.oneOf(["left", "top"]),
|
|
37
|
+
"role": PropTypes.string
|
|
38
38
|
};
|
|
39
39
|
export default TabsHeader;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { TabHeaderProps } from "./tabs-header.component";
|
|
2
|
+
declare type StyledTabsHeaderWrapperProps = Pick<TabHeaderProps, "position" | "isInSidebar">;
|
|
3
|
+
declare const StyledTabsHeaderWrapper: import("styled-components").StyledComponent<"div", any, StyledTabsHeaderWrapperProps, never>;
|
|
4
|
+
export declare type StyledTabsHeaderListProps = Pick<TabHeaderProps, "align" | "alternateStyling" | "extendedLine" | "noRightBorder" | "isInSidebar" | "position">;
|
|
5
|
+
declare const StyledTabsHeaderList: import("styled-components").StyledComponent<"div", any, StyledTabsHeaderListProps, never>;
|
|
6
|
+
export { StyledTabsHeaderWrapper, StyledTabsHeaderList };
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import styled, { css } from "styled-components";
|
|
2
|
-
import PropTypes from "prop-types";
|
|
3
2
|
|
|
4
3
|
const computeLineWidth = ({
|
|
5
4
|
alternateStyling,
|
|
@@ -37,7 +36,7 @@ const StyledTabsHeaderList = styled.div`
|
|
|
37
36
|
display: flex;
|
|
38
37
|
box-shadow: inset 0px ${computeLineWidth} 0px 0px var(--colorsActionMinor100);
|
|
39
38
|
${({
|
|
40
|
-
extendedLine
|
|
39
|
+
extendedLine = true
|
|
41
40
|
}) => !extendedLine && css`
|
|
42
41
|
width: fit-content;
|
|
43
42
|
`}
|
|
@@ -47,15 +46,16 @@ const StyledTabsHeaderList = styled.div`
|
|
|
47
46
|
padding: 0;
|
|
48
47
|
|
|
49
48
|
${({
|
|
50
|
-
align
|
|
49
|
+
align = "left"
|
|
51
50
|
}) => align === "right" && css`
|
|
52
51
|
justify-content: flex-end;
|
|
53
52
|
text-align: right;
|
|
54
53
|
`}
|
|
55
54
|
|
|
56
55
|
${({
|
|
57
|
-
position,
|
|
58
|
-
noRightBorder
|
|
56
|
+
position = "top",
|
|
57
|
+
noRightBorder,
|
|
58
|
+
align = "left"
|
|
59
59
|
}) => position === "left" && css`
|
|
60
60
|
flex-direction: column;
|
|
61
61
|
box-shadow: none;
|
|
@@ -64,28 +64,9 @@ const StyledTabsHeaderList = styled.div`
|
|
|
64
64
|
box-shadow: none;
|
|
65
65
|
`}
|
|
66
66
|
|
|
67
|
-
${
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
justify-content: flex-start;
|
|
71
|
-
`}
|
|
67
|
+
${align === "right" && css`
|
|
68
|
+
justify-content: flex-start;
|
|
69
|
+
`}
|
|
72
70
|
`}
|
|
73
71
|
`;
|
|
74
|
-
StyledTabsHeaderWrapper.defaultProps = {
|
|
75
|
-
position: "top"
|
|
76
|
-
};
|
|
77
|
-
StyledTabsHeaderWrapper.propTypes = {
|
|
78
|
-
position: PropTypes.oneOf(["top", "left"]),
|
|
79
|
-
isInSidebar: PropTypes.bool
|
|
80
|
-
};
|
|
81
|
-
StyledTabsHeaderList.defaultProps = {
|
|
82
|
-
align: "left",
|
|
83
|
-
position: "top",
|
|
84
|
-
extendedLine: true
|
|
85
|
-
};
|
|
86
|
-
StyledTabsHeaderList.propTypes = {
|
|
87
|
-
align: PropTypes.oneOf(["left", "right"]),
|
|
88
|
-
position: PropTypes.oneOf(["top", "left"]),
|
|
89
|
-
isInSidebar: PropTypes.bool
|
|
90
|
-
};
|
|
91
72
|
export { StyledTabsHeaderWrapper, StyledTabsHeaderList };
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
export { Tabs, Tab } from "./tabs";
|
|
2
|
-
export
|
|
1
|
+
export { Tabs, Tab } from "./tabs.component";
|
|
2
|
+
export type { TabsProps } from "./tabs.component";
|
|
3
|
+
export type { TabProps } from "./tab";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { default } from "./tab";
|
|
2
|
-
export
|
|
1
|
+
export { default, TabContext } from "./tab.component";
|
|
2
|
+
export type { TabProps, TabContextProps } from "./tab.component";
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { PaddingProps } from "styled-system";
|
|
3
|
+
export interface TabContextProps {
|
|
4
|
+
setError?: (childId: string, error?: boolean | string) => void;
|
|
5
|
+
setWarning?: (childId: string, warning?: boolean | string) => void;
|
|
6
|
+
setInfo?: (childId: string, info?: boolean | string) => void;
|
|
7
|
+
}
|
|
8
|
+
export interface TabProps extends PaddingProps {
|
|
9
|
+
title?: string;
|
|
10
|
+
/** A unique ID to identify this specific tab. */
|
|
11
|
+
tabId: string;
|
|
12
|
+
/** @ignore @private */
|
|
13
|
+
className?: string;
|
|
14
|
+
/** The child elements of Tab component. */
|
|
15
|
+
children?: React.ReactNode;
|
|
16
|
+
/** @ignore @private Boolean indicating selected state of Tab. */
|
|
17
|
+
isTabSelected?: boolean;
|
|
18
|
+
/** The position of the Tab. */
|
|
19
|
+
position?: "top" | "left";
|
|
20
|
+
/** Message displayed when Tab has error */
|
|
21
|
+
errorMessage?: string;
|
|
22
|
+
/** Message displayed when Tab has warning */
|
|
23
|
+
warningMessage?: string;
|
|
24
|
+
/** Message displayed when Tab has warning */
|
|
25
|
+
infoMessage?: string;
|
|
26
|
+
/** Additional content to display with title */
|
|
27
|
+
siblings?: React.ReactNode;
|
|
28
|
+
/** Position title before or after siblings */
|
|
29
|
+
titlePosition?: "before" | "after";
|
|
30
|
+
/** Allows Tab to be a link */
|
|
31
|
+
href?: string;
|
|
32
|
+
/** Overrides default layout with a one defined in this prop */
|
|
33
|
+
customLayout?: React.ReactNode;
|
|
34
|
+
/** Additional props to be passed to the Tab's corresponding title. */
|
|
35
|
+
titleProps?: {
|
|
36
|
+
/** Identifier used for testing purposes */
|
|
37
|
+
"data-role"?: string;
|
|
38
|
+
};
|
|
39
|
+
/** @private @ignore */
|
|
40
|
+
role?: string;
|
|
41
|
+
/** @private @ignore */
|
|
42
|
+
ariaLabelledby?: string;
|
|
43
|
+
/** @private @ignore */
|
|
44
|
+
updateErrors?: (id: string, errors: Record<string, string | boolean>) => void;
|
|
45
|
+
/** @private @ignore */
|
|
46
|
+
updateWarnings?: (id: string, warnings: Record<string, string | boolean>) => void;
|
|
47
|
+
/** @private @ignore */
|
|
48
|
+
updateInfos?: (id: string, infos: Record<string, string | boolean>) => void;
|
|
49
|
+
}
|
|
50
|
+
declare const TabContext: React.Context<TabContextProps>;
|
|
51
|
+
export declare const Tab: ({ ariaLabelledby, className, children, isTabSelected, position, role, tabId, updateErrors, updateWarnings, updateInfos, href, title, titleProps, ...rest }: TabProps) => JSX.Element;
|
|
52
|
+
export { TabContext };
|
|
53
|
+
export default Tab;
|