carbon-react 116.1.1 → 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.
Files changed (77) hide show
  1. package/esm/__internal__/utils/helpers/events/events.d.ts +1 -1
  2. package/esm/components/button-toggle/button-toggle.style.js +2 -0
  3. package/esm/components/date/date.component.js +9 -1
  4. package/esm/components/date/date.style.js +5 -2
  5. package/esm/components/detail/detail.component.d.ts +19 -0
  6. package/esm/components/detail/detail.component.js +176 -42
  7. package/esm/components/detail/detail.style.d.ts +10 -0
  8. package/esm/components/detail/index.d.ts +2 -1
  9. package/esm/components/drawer/drawer.component.d.ts +1 -1
  10. package/esm/components/icon/icon.component.js +1 -1
  11. package/esm/components/menu/index.d.ts +1 -0
  12. package/esm/components/tabs/__internal__/tab-title/index.d.ts +2 -1
  13. package/esm/components/tabs/__internal__/tab-title/index.js +1 -1
  14. package/esm/components/tabs/__internal__/tab-title/tab-title.component.d.ts +37 -3
  15. package/esm/components/tabs/__internal__/tab-title/tab-title.component.js +99 -97
  16. package/esm/components/tabs/__internal__/tab-title/tab-title.style.d.ts +18 -4
  17. package/esm/components/tabs/__internal__/tab-title/tab-title.style.js +14 -50
  18. package/esm/components/tabs/__internal__/tabs-header/index.d.ts +2 -1
  19. package/esm/components/tabs/__internal__/tabs-header/tabs-header.component.d.ts +13 -0
  20. package/esm/components/tabs/__internal__/tabs-header/tabs-header.component.js +8 -8
  21. package/esm/components/tabs/__internal__/tabs-header/tabs-header.style.d.ts +6 -6
  22. package/esm/components/tabs/__internal__/tabs-header/tabs-header.style.js +8 -27
  23. package/esm/components/tabs/index.d.ts +3 -2
  24. package/esm/components/tabs/tab/index.d.ts +2 -2
  25. package/esm/components/tabs/tab/tab.component.d.ts +53 -0
  26. package/esm/components/tabs/tab/tab.component.js +180 -61
  27. package/esm/components/tabs/tab/tab.style.d.ts +8 -1
  28. package/esm/components/tabs/tab/tab.style.js +1 -6
  29. package/esm/components/tabs/tabs.component.d.ts +49 -0
  30. package/esm/components/tabs/tabs.component.js +188 -70
  31. package/esm/components/tabs/tabs.style.d.ts +5 -1
  32. package/esm/components/tabs/tabs.style.js +2 -8
  33. package/esm/components/textbox/textbox.component.d.ts +1 -1
  34. package/lib/__internal__/utils/helpers/events/events.d.ts +1 -1
  35. package/lib/components/button-toggle/button-toggle.style.js +2 -0
  36. package/lib/components/date/date.component.js +9 -1
  37. package/lib/components/date/date.style.js +5 -2
  38. package/lib/components/detail/detail.component.d.ts +19 -0
  39. package/lib/components/detail/detail.component.js +178 -47
  40. package/lib/components/detail/detail.style.d.ts +10 -0
  41. package/lib/components/detail/index.d.ts +2 -1
  42. package/lib/components/drawer/drawer.component.d.ts +1 -1
  43. package/lib/components/icon/icon.component.js +1 -1
  44. package/lib/components/menu/index.d.ts +1 -0
  45. package/lib/components/tabs/__internal__/tab-title/index.d.ts +2 -1
  46. package/lib/components/tabs/__internal__/tab-title/index.js +10 -2
  47. package/lib/components/tabs/__internal__/tab-title/tab-title.component.d.ts +37 -3
  48. package/lib/components/tabs/__internal__/tab-title/tab-title.component.js +99 -97
  49. package/lib/components/tabs/__internal__/tab-title/tab-title.style.d.ts +18 -4
  50. package/lib/components/tabs/__internal__/tab-title/tab-title.style.js +17 -53
  51. package/lib/components/tabs/__internal__/tabs-header/index.d.ts +2 -1
  52. package/lib/components/tabs/__internal__/tabs-header/tabs-header.component.d.ts +13 -0
  53. package/lib/components/tabs/__internal__/tabs-header/tabs-header.component.js +8 -8
  54. package/lib/components/tabs/__internal__/tabs-header/tabs-header.style.d.ts +6 -6
  55. package/lib/components/tabs/__internal__/tabs-header/tabs-header.style.js +9 -31
  56. package/lib/components/tabs/index.d.ts +3 -2
  57. package/lib/components/tabs/tab/index.d.ts +2 -2
  58. package/lib/components/tabs/tab/tab.component.d.ts +53 -0
  59. package/lib/components/tabs/tab/tab.component.js +181 -64
  60. package/lib/components/tabs/tab/tab.style.d.ts +8 -1
  61. package/lib/components/tabs/tab/tab.style.js +1 -7
  62. package/lib/components/tabs/tabs.component.d.ts +49 -0
  63. package/lib/components/tabs/tabs.component.js +188 -73
  64. package/lib/components/tabs/tabs.style.d.ts +5 -1
  65. package/lib/components/tabs/tabs.style.js +2 -9
  66. package/lib/components/textbox/textbox.component.d.ts +1 -1
  67. package/package.json +1 -1
  68. package/esm/components/detail/detail.d.ts +0 -16
  69. package/esm/components/tabs/__internal__/tab-title/tab-title.d.ts +0 -47
  70. package/esm/components/tabs/__internal__/tabs-header/tab-header.d.ts +0 -16
  71. package/esm/components/tabs/tab/tab.d.ts +0 -54
  72. package/esm/components/tabs/tabs.d.ts +0 -51
  73. package/lib/components/detail/detail.d.ts +0 -16
  74. package/lib/components/tabs/__internal__/tab-title/tab-title.d.ts +0 -47
  75. package/lib/components/tabs/__internal__/tabs-header/tab-header.d.ts +0 -16
  76. package/lib/components/tabs/tab/tab.d.ts +0 -54
  77. 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 { StyledTabTitle, StyledTitleContent, StyledLayoutWrapper, StyledSelectedIndicator } from "./tab-title.style";
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 = "top",
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 = false,
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((child, index) => {
111
- const key = child.props.key || keys.current[index];
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
- return /*#__PURE__*/React.createElement(TooltipProvider, {
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
- title: PropTypes.string.isRequired,
203
- isTabSelected: PropTypes.bool,
204
- position: PropTypes.oneOf(["top", "left"]),
205
- className: PropTypes.string,
206
-
207
- /** Identifier used for testing purposes */
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
- id: PropTypes.string,
211
- onClick: PropTypes.func,
212
- onKeyDown: PropTypes.func,
213
- tabIndex: PropTypes.string,
214
- error: PropTypes.bool,
215
- warning: PropTypes.bool,
216
- info: PropTypes.bool,
217
- size: PropTypes.oneOf(["default", "large"]),
218
- titlePosition: PropTypes.oneOf(["before", "after"]),
219
- errorMessage: PropTypes.string,
220
- warningMessage: PropTypes.string,
221
- infoMessage: PropTypes.string,
222
- siblings: PropTypes.arrayOf(PropTypes.node),
223
- borders: PropTypes.bool,
224
- alternateStyling: PropTypes.bool,
225
- noLeftBorder: PropTypes.bool,
226
- noRightBorder: PropTypes.bool,
227
- customLayout: PropTypes.node,
228
- isInSidebar: PropTypes.bool,
229
- href: PropTypes.string,
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
- export const StyledTabTitle: import("styled-components").StyledComponent<"button", any, {}, never>;
2
- export const StyledTitleContent: import("styled-components").StyledComponent<"span", any, {}, never>;
3
- export const StyledLayoutWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
4
- export const StyledSelectedIndicator: import("styled-components").StyledComponent<"div", any, {}, never>;
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 StyledTabTitle = styled.button`
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
- StyledTabTitle.propTypes = {
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 "./tab-header";
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
- children: PropTypes.node.isRequired,
32
- position: PropTypes.oneOf(["top", "left"]),
33
- role: PropTypes.string,
34
- extendedLine: PropTypes.bool,
35
- alternateStyling: PropTypes.bool,
36
- noRightBorder: PropTypes.bool,
37
- isInSidebar: PropTypes.bool
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
- export const StyledTabsHeaderWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
2
- export const StyledTabsHeaderList: import("styled-components").StyledComponent<"div", any, {
3
- alternateStyling: any;
4
- isInSidebar: any;
5
- position: any;
6
- }, never>;
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
- align
69
- }) => align === "right" && css`
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 * from "./tabs";
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 * from "./tab";
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;