@elliemae/ds-tabs 2.3.1 → 3.0.0-alpha.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 (174) hide show
  1. package/dist/cjs/DSTabs.js +63 -0
  2. package/dist/cjs/DSTabs.js.map +7 -0
  3. package/dist/cjs/DSTabsCTX.js +56 -0
  4. package/dist/cjs/DSTabsCTX.js.map +7 -0
  5. package/dist/cjs/DSTabsDatatestid.js +46 -0
  6. package/dist/cjs/DSTabsDatatestid.js.map +7 -0
  7. package/dist/cjs/DSTabsTypes.js +27 -0
  8. package/dist/cjs/DSTabsTypes.js.map +7 -0
  9. package/dist/cjs/config/useCrossRef.js +44 -0
  10. package/dist/cjs/config/useCrossRef.js.map +7 -0
  11. package/dist/cjs/config/useTabs.js +74 -0
  12. package/dist/cjs/config/useTabs.js.map +7 -0
  13. package/dist/cjs/defaultProps.js +53 -0
  14. package/dist/cjs/defaultProps.js.map +7 -0
  15. package/dist/cjs/exportsRelated/DSTab.js +58 -0
  16. package/dist/cjs/exportsRelated/DSTab.js.map +7 -0
  17. package/dist/cjs/index.js +38 -0
  18. package/dist/cjs/index.js.map +7 -0
  19. package/dist/cjs/parts/carousel/Carousel.js +77 -0
  20. package/dist/cjs/parts/carousel/Carousel.js.map +7 -0
  21. package/dist/cjs/parts/carousel/styles.js +79 -0
  22. package/dist/cjs/parts/carousel/styles.js.map +7 -0
  23. package/dist/cjs/parts/carousel/useCarousel.js +80 -0
  24. package/dist/cjs/parts/carousel/useCarousel.js.map +7 -0
  25. package/dist/cjs/parts/carousel/useCarouselCallbacks.js +89 -0
  26. package/dist/cjs/parts/carousel/useCarouselCallbacks.js.map +7 -0
  27. package/dist/cjs/parts/tabBar/TabBar.js +171 -0
  28. package/dist/cjs/parts/tabBar/TabBar.js.map +7 -0
  29. package/dist/cjs/parts/tabBar/styles.js +294 -0
  30. package/dist/cjs/parts/tabBar/styles.js.map +7 -0
  31. package/dist/cjs/parts/tabBar/useTabBar.js +100 -0
  32. package/dist/cjs/parts/tabBar/useTabBar.js.map +7 -0
  33. package/dist/cjs/parts/tabsContent/TabsContent.js +69 -0
  34. package/dist/cjs/parts/tabsContent/TabsContent.js.map +7 -0
  35. package/dist/cjs/parts/tabsContent/styles.js +39 -0
  36. package/dist/cjs/parts/tabsContent/styles.js.map +7 -0
  37. package/dist/cjs/parts/tabsPanel/TabsPanels.js +95 -0
  38. package/dist/cjs/parts/tabsPanel/TabsPanels.js.map +7 -0
  39. package/dist/cjs/parts/tabsPanel/styles.js +45 -0
  40. package/dist/cjs/parts/tabsPanel/styles.js.map +7 -0
  41. package/dist/cjs/propTypes.js +58 -0
  42. package/dist/cjs/propTypes.js.map +7 -0
  43. package/dist/cjs/utils/constants.js +56 -0
  44. package/dist/cjs/utils/constants.js.map +7 -0
  45. package/dist/cjs/utils/helpers.js +84 -0
  46. package/dist/cjs/utils/helpers.js.map +7 -0
  47. package/dist/cjs/utils/hooks/useKeyboardNavigation.js +77 -0
  48. package/dist/cjs/utils/hooks/useKeyboardNavigation.js.map +7 -0
  49. package/dist/cjs/utils/hooks/useTabsCallbacks.js +60 -0
  50. package/dist/cjs/utils/hooks/useTabsCallbacks.js.map +7 -0
  51. package/dist/esm/DSTabs.js +34 -0
  52. package/dist/esm/DSTabs.js.map +7 -0
  53. package/dist/esm/DSTabsCTX.js +27 -0
  54. package/dist/esm/DSTabsCTX.js.map +7 -0
  55. package/dist/esm/DSTabsDatatestid.js +17 -0
  56. package/dist/esm/DSTabsDatatestid.js.map +7 -0
  57. package/dist/esm/DSTabsTypes.js +2 -0
  58. package/dist/esm/DSTabsTypes.js.map +7 -0
  59. package/{esm → dist/esm}/config/useCrossRef.js +6 -4
  60. package/dist/esm/config/useCrossRef.js.map +7 -0
  61. package/dist/esm/config/useTabs.js +45 -0
  62. package/dist/esm/config/useTabs.js.map +7 -0
  63. package/{esm → dist/esm}/defaultProps.js +9 -8
  64. package/dist/esm/defaultProps.js.map +7 -0
  65. package/dist/esm/exportsRelated/DSTab.js +31 -0
  66. package/dist/esm/exportsRelated/DSTab.js.map +7 -0
  67. package/dist/esm/index.js +9 -0
  68. package/dist/esm/index.js.map +7 -0
  69. package/dist/esm/parts/carousel/Carousel.js +48 -0
  70. package/dist/esm/parts/carousel/Carousel.js.map +7 -0
  71. package/dist/esm/parts/carousel/styles.js +50 -0
  72. package/dist/esm/parts/carousel/styles.js.map +7 -0
  73. package/{esm → dist/esm}/parts/carousel/useCarousel.js +15 -34
  74. package/dist/esm/parts/carousel/useCarousel.js.map +7 -0
  75. package/{esm → dist/esm}/parts/carousel/useCarouselCallbacks.js +20 -28
  76. package/dist/esm/parts/carousel/useCarouselCallbacks.js.map +7 -0
  77. package/dist/esm/parts/tabBar/TabBar.js +149 -0
  78. package/dist/esm/parts/tabBar/TabBar.js.map +7 -0
  79. package/dist/esm/parts/tabBar/styles.js +265 -0
  80. package/dist/esm/parts/tabBar/styles.js.map +7 -0
  81. package/{esm → dist/esm}/parts/tabBar/useTabBar.js +27 -35
  82. package/dist/esm/parts/tabBar/useTabBar.js.map +7 -0
  83. package/dist/esm/parts/tabsContent/TabsContent.js +42 -0
  84. package/dist/esm/parts/tabsContent/TabsContent.js.map +7 -0
  85. package/dist/esm/parts/tabsContent/styles.js +10 -0
  86. package/dist/esm/parts/tabsContent/styles.js.map +7 -0
  87. package/dist/esm/parts/tabsPanel/TabsPanels.js +66 -0
  88. package/dist/esm/parts/tabsPanel/TabsPanels.js.map +7 -0
  89. package/dist/esm/parts/tabsPanel/styles.js +16 -0
  90. package/dist/esm/parts/tabsPanel/styles.js.map +7 -0
  91. package/dist/esm/propTypes.js +29 -0
  92. package/dist/esm/propTypes.js.map +7 -0
  93. package/dist/esm/utils/constants.js +27 -0
  94. package/dist/esm/utils/constants.js.map +7 -0
  95. package/{esm → dist/esm}/utils/helpers.js +19 -26
  96. package/dist/esm/utils/helpers.js.map +7 -0
  97. package/dist/esm/utils/hooks/useKeyboardNavigation.js +48 -0
  98. package/dist/esm/utils/hooks/useKeyboardNavigation.js.map +7 -0
  99. package/dist/esm/utils/hooks/useTabsCallbacks.js +31 -0
  100. package/dist/esm/utils/hooks/useTabsCallbacks.js.map +7 -0
  101. package/package.json +78 -69
  102. package/cjs/DSTabs.js +0 -45
  103. package/cjs/DSTabsCTX.js +0 -30
  104. package/cjs/DSTabsDatatestid.js +0 -18
  105. package/cjs/DSTabsTypes.js +0 -2
  106. package/cjs/config/useCrossRef.js +0 -17
  107. package/cjs/config/useTabs.js +0 -54
  108. package/cjs/defaultProps.js +0 -27
  109. package/cjs/exportsRelated/DSTab.js +0 -32
  110. package/cjs/index.js +0 -17
  111. package/cjs/parts/carousel/Carousel.js +0 -69
  112. package/cjs/parts/carousel/styles.js +0 -65
  113. package/cjs/parts/carousel/useCarousel.js +0 -78
  114. package/cjs/parts/carousel/useCarouselCallbacks.js +0 -72
  115. package/cjs/parts/tabBar/TabBar.js +0 -168
  116. package/cjs/parts/tabBar/styles.js +0 -200
  117. package/cjs/parts/tabBar/useTabBar.js +0 -87
  118. package/cjs/parts/tabsContent/TabsContent.js +0 -49
  119. package/cjs/parts/tabsContent/styles.js +0 -15
  120. package/cjs/parts/tabsPanel/TabsPanels.js +0 -102
  121. package/cjs/parts/tabsPanel/styles.js +0 -25
  122. package/cjs/propTypes.js +0 -33
  123. package/cjs/utils/constants.js +0 -28
  124. package/cjs/utils/helpers.js +0 -71
  125. package/cjs/utils/hooks/useKeyboardNavigation.js +0 -61
  126. package/cjs/utils/hooks/useTabsCallbacks.js +0 -41
  127. package/esm/DSTabs.js +0 -35
  128. package/esm/DSTabsCTX.js +0 -25
  129. package/esm/DSTabsDatatestid.js +0 -14
  130. package/esm/DSTabsTypes.js +0 -1
  131. package/esm/config/useTabs.js +0 -50
  132. package/esm/exportsRelated/DSTab.js +0 -21
  133. package/esm/index.js +0 -4
  134. package/esm/parts/carousel/Carousel.js +0 -61
  135. package/esm/parts/carousel/styles.js +0 -54
  136. package/esm/parts/tabBar/TabBar.js +0 -159
  137. package/esm/parts/tabBar/styles.js +0 -186
  138. package/esm/parts/tabsContent/TabsContent.js +0 -40
  139. package/esm/parts/tabsContent/styles.js +0 -7
  140. package/esm/parts/tabsPanel/TabsPanels.js +0 -92
  141. package/esm/parts/tabsPanel/styles.js +0 -17
  142. package/esm/propTypes.js +0 -28
  143. package/esm/utils/constants.js +0 -20
  144. package/esm/utils/hooks/useKeyboardNavigation.js +0 -57
  145. package/esm/utils/hooks/useTabsCallbacks.js +0 -37
  146. package/types/DSTabs.d.ts +0 -14
  147. package/types/DSTabsCTX.d.ts +0 -4
  148. package/types/DSTabsDatatestid.d.ts +0 -12
  149. package/types/DSTabsTypes.d.ts +0 -205
  150. package/types/config/useCrossRef.d.ts +0 -2
  151. package/types/config/useTabs.d.ts +0 -2
  152. package/types/defaultProps.d.ts +0 -2
  153. package/types/exportsRelated/DSTab.d.ts +0 -14
  154. package/types/index.d.ts +0 -5
  155. package/types/parts/carousel/Carousel.d.ts +0 -3
  156. package/types/parts/carousel/styles.d.ts +0 -6
  157. package/types/parts/carousel/useCarousel.d.ts +0 -2
  158. package/types/parts/carousel/useCarouselCallbacks.d.ts +0 -2
  159. package/types/parts/tabBar/TabBar.d.ts +0 -2
  160. package/types/parts/tabBar/styles.d.ts +0 -7
  161. package/types/parts/tabBar/useTabBar.d.ts +0 -2
  162. package/types/parts/tabsContent/TabsContent.d.ts +0 -2
  163. package/types/parts/tabsContent/styles.d.ts +0 -1
  164. package/types/parts/tabsPanel/TabsPanels.d.ts +0 -2
  165. package/types/parts/tabsPanel/styles.d.ts +0 -2
  166. package/types/propTypes.d.ts +0 -54
  167. package/types/tests/DSTabs.callbacks.test.d.ts +0 -1
  168. package/types/tests/DSTabs.func.test.d.ts +0 -1
  169. package/types/tests/DSTabs.keyboard.test.d.ts +0 -1
  170. package/types/tests/DSTabs.test.d.ts +0 -1
  171. package/types/utils/constants.d.ts +0 -18
  172. package/types/utils/helpers.d.ts +0 -7
  173. package/types/utils/hooks/useKeyboardNavigation.d.ts +0 -2
  174. package/types/utils/hooks/useTabsCallbacks.d.ts +0 -2
@@ -1,168 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var _jsx = require('@babel/runtime/helpers/jsx');
6
- require('core-js/modules/esnext.async-iterator.map.js');
7
- require('core-js/modules/esnext.iterator.map.js');
8
- var React = require('react');
9
- var Carousel = require('../carousel/Carousel.js');
10
- var useTabBar = require('./useTabBar.js');
11
- var styles = require('./styles.js');
12
- var DSTabsCTX = require('../../DSTabsCTX.js');
13
- var useKeyboardNavigation = require('../../utils/hooks/useKeyboardNavigation.js');
14
- var helpers = require('../../utils/helpers.js');
15
- var constants = require('../../utils/constants.js');
16
- var useTabsCallbacks = require('../../utils/hooks/useTabsCallbacks.js');
17
- var DSTabsDatatestid = require('../../DSTabsDatatestid.js');
18
- var jsxRuntime = require('react/jsx-runtime');
19
-
20
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
21
-
22
- var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
23
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
24
-
25
- var _StyledRequiredMark;
26
- const TabBar = () => {
27
- const {
28
- tabsRef,
29
- focusableTabsRef,
30
- tabsListRef,
31
- tabsRefAsArray,
32
- carouselOnlyListRef,
33
- actualActiveTab,
34
- props: {
35
- type,
36
- fixedTabsHeaders,
37
- withCarousel,
38
- isDSMobile,
39
- showSeparator,
40
- children: tabs
41
- }
42
- } = React.useContext(DSTabsCTX.DSTabsContext);
43
- const {
44
- lastTabInternalRef,
45
- firstSubtabInternalRef
46
- } = React.useContext(DSTabsCTX.DSTabsCrossRefContext);
47
- const {
48
- handleOnTabChange
49
- } = useTabsCallbacks.useTabsCallbacks();
50
- const {
51
- handleOnKeyDown
52
- } = useKeyboardNavigation.useKeyboardNavigation();
53
- const {
54
- indicatorStyle,
55
- mobileGradients,
56
- updateMobileGradients,
57
- updateIndicatorStyle
58
- } = useTabBar.useTabBar();
59
- const renderTabs = React.useMemo(() => {
60
- const availableTabIndexes = [];
61
- return React__default["default"].Children.map(tabs, (tab, index) => {
62
- const {
63
- tabId = '',
64
- title = '',
65
- style,
66
- required = false,
67
- disabled = false,
68
- ref,
69
- onClick,
70
- onKeyDown
71
- } = tab.props;
72
- if (!disabled) availableTabIndexes.push(index);
73
- return /*#__PURE__*/jsxRuntime.jsxs(styles.StyledTabButton, {
74
- role: "tab",
75
- ref: tabButtonRef => {
76
- if (tabButtonRef && tabsRefAsArray.current && focusableTabsRef.current && tabsRef.current) {
77
- tabsRefAsArray.current[index] = tabButtonRef;
78
- if (!disabled && !focusableTabsRef.current.includes(tabButtonRef)) focusableTabsRef.current.push(tabButtonRef);
79
- tabsRef.current[index] = tabButtonRef;
80
-
81
- if (type === constants.TabTypes.SUBTABS && firstSubtabInternalRef && index === availableTabIndexes[0]) {
82
- firstSubtabInternalRef.current = tabButtonRef;
83
- }
84
-
85
- if (type !== constants.TabTypes.SUBTABS && index === availableTabIndexes[availableTabIndexes.length - 1]) {
86
- lastTabInternalRef.current = tabButtonRef;
87
- }
88
-
89
- if (ref) ref.current = tabButtonRef;
90
- }
91
- },
92
- type: "button",
93
- "aria-controls": tabId,
94
- "aria-selected": actualActiveTab === tabId,
95
- "aria-disabled": disabled,
96
- "aria-labelledby": "".concat(tabId, "-label"),
97
- isDSMobile: isDSMobile,
98
- fixedTabsHeaders: fixedTabsHeaders,
99
- tabType: type,
100
- title: title,
101
- "data-required": required,
102
- "data-tab-id": tabId,
103
- "data-index": index,
104
- withCarousel: withCarousel,
105
- isActive: actualActiveTab === tabId,
106
- disabled: disabled,
107
- showSeparator: showSeparator && type !== constants.TabTypes.NORMAL,
108
- "data-testid": type === constants.TabTypes.NORMAL ? DSTabsDatatestid.DSTabsDatatestid.TAB_BUTTON : DSTabsDatatestid.DSTabsDatatestid.SUBTAB_BUTTON,
109
- id: "".concat(tabId, "-label"),
110
- onClick: e => {
111
- if (!disabled) {
112
- handleOnTabChange(tabId, e);
113
- updateIndicatorStyle();
114
- }
115
-
116
- if (onClick && !disabled) onClick(tabId, e);
117
- },
118
- onFocus: e => {
119
- if (withCarousel) helpers.centerTab({
120
- e,
121
- listRef: carouselOnlyListRef
122
- });
123
- },
124
- onKeyDown: e => {
125
- if (e.key === 'Enter') e.stopPropagation();
126
- if (!disabled) handleOnKeyDown(e);
127
- if (onKeyDown && !disabled) onKeyDown(e);
128
- },
129
- style: style,
130
- children: [title, required && (_StyledRequiredMark || (_StyledRequiredMark = /*#__PURE__*/_jsx__default["default"](styles.StyledRequiredMark, {}, void 0, "\u25CF")))]
131
- }, tabId);
132
- });
133
- }, [tabs, actualActiveTab, isDSMobile, fixedTabsHeaders, type, withCarousel, showSeparator, tabsRefAsArray, focusableTabsRef, tabsRef, firstSubtabInternalRef, lastTabInternalRef, handleOnTabChange, updateIndicatorStyle, carouselOnlyListRef, handleOnKeyDown]);
134
-
135
- if (type === constants.TabTypes.SUBTABS && !isDSMobile) {
136
- return /*#__PURE__*/jsxRuntime.jsx(styles.StyledSubTabsList, {
137
- withCarousel: withCarousel,
138
- "data-testid": DSTabsDatatestid.DSTabsDatatestid.SUB_TAB_LIST,
139
- ref: tabsListRef,
140
- role: "tablist",
141
- children: withCarousel ? /*#__PURE__*/_jsx__default["default"](Carousel.Carousel, {}, void 0, renderTabs) : renderTabs
142
- });
143
- }
144
-
145
- return /*#__PURE__*/jsxRuntime.jsxs(styles.StyledTabList, {
146
- withCarousel: withCarousel,
147
- ref: tabsListRef,
148
- role: "tablist",
149
- "data-testid": DSTabsDatatestid.DSTabsDatatestid.TAB_LIST,
150
- isDSMobile: isDSMobile,
151
- fixedTabsHeaders: fixedTabsHeaders,
152
- mobileGradients: mobileGradients,
153
- onScroll: updateMobileGradients,
154
- indicatorStyle: indicatorStyle,
155
- tabType: type,
156
- children: [/*#__PURE__*/_jsx__default["default"](styles.StyledTabWrapper, {
157
- isDSMobile: isDSMobile,
158
- fixedTabsHeaders: fixedTabsHeaders
159
- }, void 0, !isDSMobile && withCarousel ? /*#__PURE__*/_jsx__default["default"](Carousel.Carousel, {
160
- updateIndicatorStyle: updateIndicatorStyle
161
- }, void 0, renderTabs) : renderTabs), /*#__PURE__*/_jsx__default["default"](styles.StyledSelectionIndicator, {
162
- isDSMobile: isDSMobile,
163
- tabType: type
164
- })]
165
- });
166
- };
167
-
168
- exports.TabBar = TabBar;
@@ -1,200 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var _taggedTemplateLiteral = require('@babel/runtime/helpers/taggedTemplateLiteral');
6
- var styled = require('styled-components');
7
- var dsSystem = require('@elliemae/ds-system');
8
- var constants = require('../../utils/constants.js');
9
-
10
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
11
-
12
- var _taggedTemplateLiteral__default = /*#__PURE__*/_interopDefaultLegacy(_taggedTemplateLiteral);
13
- var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
14
-
15
- var _templateObject;
16
- const StyledSelectionIndicator = /*#__PURE__*/styled__default["default"].div.withConfig({
17
- componentId: "sc-3hla56-0"
18
- })(["position:absolute;height:3px;top:", ";margin-top:", ";pointer-events:none;transition:200ms cubic-bezier(0.36,0,1,1);z-index:10;", ""], _ref => {
19
- let {
20
- tabType,
21
- isDSMobile
22
- } = _ref;
23
- if (isDSMobile) return "35px";
24
- if (tabType === constants.TabTypes.NORMAL_SMALL) return "15px";
25
- return "25px";
26
- }, _ref2 => {
27
- let {
28
- theme
29
- } = _ref2;
30
- return theme.space.xxxs;
31
- }, _ref3 => {
32
- let {
33
- isDSMobile
34
- } = _ref3;
35
- return isDSMobile ? " \n margin-left: 0;\n margin-top: 3px;\n " : "";
36
- });
37
- const mobileGradientsSettings = dsSystem.css(_templateObject || (_templateObject = _taggedTemplateLiteral__default["default"](["\n ", "\n"])), _ref4 => {
38
- let {
39
- theme,
40
- mobileGradients,
41
- isDSMobile,
42
- fixedTabsHeaders
43
- } = _ref4;
44
-
45
- if (isDSMobile && !fixedTabsHeaders) {
46
- if (mobileGradients.right && mobileGradients.left) return "background: linear-gradient(90deg, rgba(238,238,238,0) 0%, ".concat(theme.colors.brand[200], " 20%, ").concat(theme.colors.brand[200], " 80%, rgba(238,238,238,0) 100%);");
47
- if (mobileGradients.right) return "background: linear-gradient(90deg, ".concat(theme.colors.brand[200], " 0%, ").concat(theme.colors.brand[200], " 80%, rgba(238,238,238,0) 100%);");
48
- if (mobileGradients.left) return "background: linear-gradient(90deg, rgba(238,238,238,0) 0%, ".concat(theme.colors.brand[200], " 20%, ").concat(theme.colors.brand[200], " 100%);");
49
- }
50
-
51
- return "";
52
- });
53
- const StyledTabWrapper = /*#__PURE__*/styled__default["default"].div.withConfig({
54
- componentId: "sc-3hla56-1"
55
- })(["display:flex;flex:1;flex-wrap:nowrap;", " ", ""], _ref5 => {
56
- let {
57
- fixedTabsHeaders,
58
- isDSMobile
59
- } = _ref5;
60
- return !fixedTabsHeaders && isDSMobile ? '' : 'overflow-x: hidden;';
61
- }, _ref6 => {
62
- let {
63
- theme,
64
- isDSMobile
65
- } = _ref6;
66
- return isDSMobile ? "border-bottom: 1px solid ".concat(theme.colors.brand[300], ";") : "";
67
- });
68
- const StyledTabButton = /*#__PURE__*/styled__default["default"].button.withConfig({
69
- componentId: "sc-3hla56-2"
70
- })(["position:relative;background-color:transparent;border:none;cursor:pointer;transition:100ms cubic-bezier(0,0,0.42,1);text-transform:", ";letter-spacing:0px;white-space:nowrap;padding:2px 0;margin-right:", ";margin-left:", ";color:", ";", " ", " ", " ", " ", " ", " ", ""], _ref7 => {
71
- let {
72
- tabType
73
- } = _ref7;
74
- return tabType === constants.TabTypes.SUBTABS ? "capitalize" : "uppercase";
75
- }, _ref8 => {
76
- let {
77
- fixedTabsHeaders,
78
- isDSMobile
79
- } = _ref8;
80
- if (fixedTabsHeaders) return '0px';
81
- if (!fixedTabsHeaders && isDSMobile) return '14px';
82
- return '16px';
83
- }, _ref9 => {
84
- let {
85
- fixedTabsHeaders,
86
- isDSMobile
87
- } = _ref9;
88
- if (fixedTabsHeaders) return '0px';
89
- if (!fixedTabsHeaders && isDSMobile) return '14px';
90
- return '16px';
91
- }, _ref10 => {
92
- let {
93
- theme
94
- } = _ref10;
95
- return theme.colors.neutral[700];
96
- }, dsSystem.onlySafariAndFirefox('-webkit-text-stroke: 0.4px transparent;'), _ref11 => {
97
- let {
98
- tabType
99
- } = _ref11;
100
- return tabType === constants.TabTypes.NORMAL ? "height: 32px;" : "height: 22px;";
101
- }, _ref12 => {
102
- let {
103
- theme,
104
- isActive,
105
- disabled
106
- } = _ref12;
107
- return isActive && !disabled ? "\n font-weight: ".concat(theme.fontWeights.semibold, ";\n ").concat(dsSystem.safariAndFirefoxBold("#353C46"), "\n\n &:hover {\n ").concat(dsSystem.safariAndFirefoxBold("#1E79C2"), "\n }\n \n ") : "\n \n ";
108
- }, _ref13 => {
109
- let {
110
- theme,
111
- disabled
112
- } = _ref13;
113
- return disabled ? "\n color: ".concat(theme.colors.neutral[500], ";\n cursor: not-allowed;\n ") : "\n &:hover {\n color: ".concat(theme.colors.brand[600], ";\n }\n ");
114
- }, _ref14 => {
115
- let {
116
- theme,
117
- showSeparator,
118
- tabType
119
- } = _ref14;
120
- return showSeparator ? "\n &:not(:last-of-type):before\n {\n content: \"\";\n position: absolute;\n width: 1px;\n right: -16px;\n top: 50%;\n transform: translateY(-50%);\n height: ".concat(tabType === constants.TabTypes.SUBTABS ? "10px" : "16px", ";\n background: ").concat(theme.colors.neutral[400], ";\n }") : "";
121
- }, _ref15 => {
122
- let {
123
- theme,
124
- isDSMobile,
125
- tabType,
126
- isActive
127
- } = _ref15;
128
- return !isDSMobile ? "\n &:focus {\n outline: none;\n &:after {\n position: absolute;\n content: '';\n top: 0;\n left: -16px;\n width: calc(100% + 32px);\n height: 100%;\n z-index: 5;\n border-radius: 2px;\n border: 2px solid ".concat(theme.colors.brand[700], ";\n }\n\n ").concat(tabType !== constants.TabTypes.SUBTABS && isActive ? "\n &:before {\n position: absolute;\n content: '';\n left: -16px;\n right: 0;\n top: calc(100% - 2px);\n transform: none;\n width: calc(100% + 32px);\n height: 2px;\n z-index: 10;\n background: linear-gradient(to right, transparent 0px, transparent 12px, white 12px, white 16px, transparent 16px,transparent calc(100% - 16px), white calc(100% - 16px), white calc(100% - 12px), transparent calc(100% - 12px), transparent 100%);\n }\n " : "", "\n }\n \n ") : "";
129
- }, _ref16 => {
130
- let {
131
- theme,
132
- isActive,
133
- disabled,
134
- isDSMobile
135
- } = _ref16;
136
- return isDSMobile ? "\n height: 40px;\n color: ".concat(theme.colors.brand[600], ";\n font-weight: ").concat(theme.fontWeights.regular, ";\n padding: 0;\n font-size: 13px;\n line-height: 1.3;\n ").concat(dsSystem.onlySafariAndFirefox('-webkit-text-stroke: 0.4px transparent;'), " \n\n &:focus {\n font-weight: ").concat(theme.fontWeights.regular, ";\n font-size: 13px;\n ").concat(dsSystem.safariAndFirefoxBold('#006AA9'), "\n }\n\n ").concat(isActive ? "\n font-weight: ".concat(theme.fontWeights.regular, ";\n font-size: 13px;\n ").concat(dsSystem.safariAndFirefoxBold('#006AA9'), "\n ") : "", "\n\n ").concat(isActive && !disabled ? "\n font-size: 13px;\n color: ".concat(theme.colors.brand[700], ";\n line-height: 1.3;\n font-weight: ").concat(theme.fontWeights.regular, ";\n -webkit-font-smoothing: subpixel-antialiased; \n -webkit-text-stroke: 0.4px ").concat(theme.colors.brand[700], ";") : "", "\n\n ").concat(!disabled ? "\n &:hover,\n &:focus {\n outline: none;\n color: ".concat(theme.colors.brand[700], ";\n ").concat(dsSystem.safariAndFirefoxBold('#006AA9'), "\n }") : "", "\n\n ") : "";
137
- });
138
- const StyledSubTabsList = /*#__PURE__*/styled__default["default"].div.withConfig({
139
- componentId: "sc-3hla56-3"
140
- })(["position:relative;display:flex;flex-wrap:nowrap;flex:1;width:100%;", ""], _ref17 => {
141
- let {
142
- withCarousel
143
- } = _ref17;
144
- return withCarousel ? 'max-width: 100%;' : '';
145
- });
146
- const StyledTabList = /*#__PURE__*/styled__default["default"].div.withConfig({
147
- componentId: "sc-3hla56-4"
148
- })(["position:relative;display:flex;flex-wrap:nowrap;flex:1;width:100%;", " ", " ", "{padding-bottom:0;padding-top:0;}", " ", " ", " ", "{", "}", "{background:", ";}"], _ref18 => {
149
- let {
150
- withCarousel,
151
- isDSMobile
152
- } = _ref18;
153
- return withCarousel && !isDSMobile ? "max-width: 100%;" : '';
154
- }, _ref19 => {
155
- let {
156
- theme,
157
- isDSMobile,
158
- tabType
159
- } = _ref19;
160
- return tabType !== constants.TabTypes.NORMAL_SMALL && !isDSMobile ? "\n &:after {\n content: '';\n position: absolute;\n width: 100%;\n height: 1px;\n box-shadow: 0px 0px 0px 1px ".concat(theme.colors.neutral[400], ";\n pointer-events: none;\n bottom: 0px;\n }\n ") : "";
161
- }, StyledTabButton, _ref20 => {
162
- let {
163
- theme,
164
- isDSMobile
165
- } = _ref20;
166
- return isDSMobile ? "\n \n background: ".concat(theme.colors.brand[200], ";") : "";
167
- }, mobileGradientsSettings, _ref21 => {
168
- let {
169
- isDSMobile,
170
- fixedTabsHeaders
171
- } = _ref21;
172
- return isDSMobile ? "\n ".concat(!fixedTabsHeaders ? "\n z-index: 0;\n overflow-x: auto;\n overflow-y: hidden;\n scrollbar-width: thin;\n &::-webkit-scrollbar {\n display: none;\n }" : "\n display: flex;\n ".concat(StyledTabButton, " {\n flex: 1;\n overflow-x: hidden;\n }")) : "";
173
- }, StyledSelectionIndicator, _ref22 => {
174
- let {
175
- indicatorStyle
176
- } = _ref22;
177
- return "\n width: ".concat(indicatorStyle.width, ";\n left: ").concat(indicatorStyle.left, ";\n ");
178
- }, StyledSelectionIndicator, _ref23 => {
179
- let {
180
- theme,
181
- indicatorStyle,
182
- isDSMobile
183
- } = _ref23;
184
- return !isDSMobile ? indicatorStyle.backgroundWithTransparent : theme.colors.brand[600];
185
- });
186
- const StyledRequiredMark = /*#__PURE__*/styled__default["default"].span.withConfig({
187
- componentId: "sc-3hla56-5"
188
- })(["color:", ";font-size:6px;margin-left:2px;position:absolute;top:5px;"], _ref24 => {
189
- let {
190
- theme
191
- } = _ref24;
192
- return theme.colors.danger[900];
193
- });
194
-
195
- exports.StyledRequiredMark = StyledRequiredMark;
196
- exports.StyledSelectionIndicator = StyledSelectionIndicator;
197
- exports.StyledSubTabsList = StyledSubTabsList;
198
- exports.StyledTabButton = StyledTabButton;
199
- exports.StyledTabList = StyledTabList;
200
- exports.StyledTabWrapper = StyledTabWrapper;
@@ -1,87 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- require('core-js/modules/web.dom-collections.iterator.js');
6
- var React = require('react');
7
- var useResizeObserver = require('@react-hook/resize-observer');
8
- var helpers = require('../../utils/helpers.js');
9
- var DSTabsCTX = require('../../DSTabsCTX.js');
10
- var constants = require('../../utils/constants.js');
11
-
12
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
-
14
- var useResizeObserver__default = /*#__PURE__*/_interopDefaultLegacy(useResizeObserver);
15
-
16
- const useTabBar = () => {
17
- const {
18
- actualActiveTab,
19
- actualActiveTabRef,
20
- tabsListRef,
21
- props: {
22
- showSelectionIndicator,
23
- isDSMobile,
24
- fixedTabsHeaders
25
- }
26
- } = React.useContext(DSTabsCTX.DSTabsContext);
27
- const [mobileGradients, setMobileGradients] = React.useState({
28
- left: false,
29
- right: false
30
- });
31
- const [indicatorStyle, setIndicatorStyle] = React.useState(constants.defaultIndicatorStyles);
32
- const getIndicatorStyles = React.useCallback(() => {
33
- if (tabsListRef.current) {
34
- const tabList = tabsListRef.current;
35
- const activeTabButton = actualActiveTabRef.current;
36
- if (!activeTabButton || !helpers.isElementVisible(activeTabButton, tabList)) return constants.defaultIndicatorStyles; // The missingMargins are to make the selection indicator white marks work properly in desktop, we need
37
- // the full width of the tab button with margins.
38
-
39
- const missingMargins = isDSMobile ? 0 : 16;
40
- const tabClientWidth = isDSMobile && !fixedTabsHeaders ? activeTabButton.clientWidth : activeTabButton.clientWidth + missingMargins * 2; // The reason why we use the tabList.scrollLeft is due to the centerOnTabChange (only in Mobile and FlexibleTabs)
41
- // behavior that adds scroll to the tabList
42
-
43
- const position = isDSMobile && !fixedTabsHeaders ? activeTabButton.getBoundingClientRect().left - tabList.getBoundingClientRect().left + tabList.scrollLeft : activeTabButton.getBoundingClientRect().left - tabList.getBoundingClientRect().left - missingMargins;
44
- const backgroundWithTransparent = "linear-gradient(to right, transparent 0px, transparent 16px, #1E79C2 16px, #1E79C2 ".concat(tabClientWidth - 16, "px,transparent ").concat(tabClientWidth - 16, "px,transparent ").concat(tabClientWidth, "px )");
45
- return {
46
- left: "".concat(position, "px"),
47
- width: "".concat(tabClientWidth, "px"),
48
- backgroundWithTransparent
49
- };
50
- }
51
-
52
- return constants.defaultIndicatorStyles;
53
- }, [actualActiveTabRef, fixedTabsHeaders, isDSMobile, tabsListRef]);
54
- const updateIndicatorStyle = React.useCallback(() => setTimeout(() => setIndicatorStyle(getIndicatorStyles()), 100), [getIndicatorStyles, setIndicatorStyle]);
55
- useResizeObserver__default["default"](tabsListRef, updateIndicatorStyle);
56
- const updateMobileGradients = React.useCallback(() => {
57
- if (tabsListRef.current && isDSMobile && !fixedTabsHeaders) {
58
- const {
59
- scrollLeft,
60
- scrollWidth,
61
- clientWidth
62
- } = tabsListRef.current;
63
- setMobileGradients({
64
- left: helpers.shouldHaveLeftGradient(scrollLeft),
65
- right: helpers.shouldHaveRightGradient(scrollLeft, clientWidth, scrollWidth)
66
- });
67
- }
68
- }, [fixedTabsHeaders, isDSMobile, tabsListRef]);
69
- React.useLayoutEffect(() => {
70
- if (showSelectionIndicator) {
71
- updateIndicatorStyle();
72
- }
73
-
74
- if (isDSMobile && !fixedTabsHeaders) {
75
- updateMobileGradients();
76
- }
77
- }, [updateMobileGradients, showSelectionIndicator, updateIndicatorStyle, isDSMobile, fixedTabsHeaders, actualActiveTab]);
78
- return {
79
- updateIndicatorStyle,
80
- setIndicatorStyle,
81
- indicatorStyle,
82
- mobileGradients,
83
- updateMobileGradients
84
- };
85
- };
86
-
87
- exports.useTabBar = useTabBar;
@@ -1,49 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- require('core-js/modules/esnext.async-iterator.filter.js');
6
- require('core-js/modules/esnext.iterator.constructor.js');
7
- require('core-js/modules/esnext.iterator.filter.js');
8
- require('core-js/modules/esnext.async-iterator.for-each.js');
9
- require('core-js/modules/esnext.iterator.for-each.js');
10
- var _defineProperty = require('@babel/runtime/helpers/defineProperty');
11
- var _jsx = require('@babel/runtime/helpers/jsx');
12
- var React = require('react');
13
- var TabsPanels = require('../tabsPanel/TabsPanels.js');
14
- var TabBar = require('../tabBar/TabBar.js');
15
- var styles = require('./styles.js');
16
- var DSTabsCTX = require('../../DSTabsCTX.js');
17
- var DSTabsDatatestid = require('../../DSTabsDatatestid.js');
18
- var jsxRuntime = require('react/jsx-runtime');
19
-
20
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
21
-
22
- var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
23
- var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
24
-
25
- var _TabBar, _TabsPanels;
26
-
27
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
28
-
29
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
30
- const TabsContent = () => {
31
- const {
32
- props: {
33
- containerProps,
34
- innerRef,
35
- tabsListAriaLabel,
36
- tabBarExtraContent
37
- }
38
- } = React.useContext(DSTabsCTX.DSTabsContext);
39
- return /*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread(_objectSpread({}, containerProps), {}, {
40
- ref: innerRef,
41
- "data-testid": DSTabsDatatestid.DSTabsDatatestid.TABS_CONTAINER,
42
- children: [/*#__PURE__*/_jsx__default["default"](styles.StyledTabBarContainer, {
43
- "aria-label": tabsListAriaLabel,
44
- role: "tablist"
45
- }, void 0, _TabBar || (_TabBar = /*#__PURE__*/_jsx__default["default"](TabBar.TabBar, {})), tabBarExtraContent), _TabsPanels || (_TabsPanels = /*#__PURE__*/_jsx__default["default"](TabsPanels.TabsPanels, {}))]
46
- }));
47
- };
48
-
49
- exports.TabsContent = TabsContent;
@@ -1,15 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var styled = require('styled-components');
6
-
7
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
-
9
- var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
10
-
11
- const StyledTabBarContainer = /*#__PURE__*/styled__default["default"].div.withConfig({
12
- componentId: "sc-vm3k1y-0"
13
- })(["display:flex;overflow-x:hidden;"]);
14
-
15
- exports.StyledTabBarContainer = StyledTabBarContainer;
@@ -1,102 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var _jsx = require('@babel/runtime/helpers/jsx');
6
- require('core-js/modules/esnext.async-iterator.constructor.js');
7
- require('core-js/modules/esnext.async-iterator.to-array.js');
8
- require('core-js/modules/esnext.iterator.constructor.js');
9
- require('core-js/modules/esnext.iterator.to-array.js');
10
- require('core-js/modules/esnext.async-iterator.filter.js');
11
- require('core-js/modules/esnext.iterator.filter.js');
12
- require('core-js/modules/esnext.async-iterator.map.js');
13
- require('core-js/modules/esnext.iterator.map.js');
14
- var React = require('react');
15
- var SwipeableViews = require('react-swipeable-views');
16
- var styles = require('./styles.js');
17
- var DSTabsCTX = require('../../DSTabsCTX.js');
18
- var useTabsCallbacks = require('../../utils/hooks/useTabsCallbacks.js');
19
- var jsxRuntime = require('react/jsx-runtime');
20
-
21
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
22
-
23
- var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
24
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
25
- var SwipeableViews__default = /*#__PURE__*/_interopDefaultLegacy(SwipeableViews);
26
-
27
- const TabsPanels = () => {
28
- const {
29
- actualActiveTab,
30
- focusableTabsRef,
31
- props: {
32
- animated,
33
- enableMouseEvents,
34
- onlyRenderActiveTab,
35
- children: tabs,
36
- isDSMobile
37
- }
38
- } = React.useContext(DSTabsCTX.DSTabsContext);
39
- const {
40
- handleOnTabChange,
41
- handleOnMouseDown
42
- } = useTabsCallbacks.useTabsCallbacks();
43
- const handleOnChangeIndex = React.useCallback((index, indexLatest) => {
44
- if (!focusableTabsRef.current) return;
45
- const offset = index - indexLatest;
46
-
47
- if (focusableTabsRef.current) {
48
- var _focusableTabsRef$cur, _focusableTabsRef$cur2, _focusableTabsRef$cur3, _focusableTabsRef$cur4;
49
-
50
- const currentIndexFocusable = (_focusableTabsRef$cur = focusableTabsRef.current) === null || _focusableTabsRef$cur === void 0 ? void 0 : _focusableTabsRef$cur.findIndex(el => el.dataset.tabId === actualActiveTab);
51
- const newFocusableIndex = currentIndexFocusable >= 0 ? currentIndexFocusable + offset : -1;
52
- if (newFocusableIndex < 0 || newFocusableIndex > ((_focusableTabsRef$cur2 = focusableTabsRef.current) === null || _focusableTabsRef$cur2 === void 0 ? void 0 : _focusableTabsRef$cur2.length) || !((_focusableTabsRef$cur3 = focusableTabsRef.current) !== null && _focusableTabsRef$cur3 !== void 0 && _focusableTabsRef$cur3[newFocusableIndex])) return;
53
- handleOnTabChange((_focusableTabsRef$cur4 = focusableTabsRef.current[newFocusableIndex].dataset) === null || _focusableTabsRef$cur4 === void 0 ? void 0 : _focusableTabsRef$cur4.tabId); // swiping does not trigger centerTab function inside handleOnTabChange because there is no event
54
- // by clicking we are manually forcing to center the tab
55
-
56
- focusableTabsRef.current[newFocusableIndex].click();
57
- }
58
- }, [actualActiveTab, focusableTabsRef, handleOnTabChange]);
59
- const firstSlideToShow = React.useMemo(() => {
60
- const childrenArray = React__default["default"].Children.toArray(tabs);
61
- const index = childrenArray.filter(tab => tab.props.disabled !== true).findIndex(tab => tab.props.tabId === actualActiveTab);
62
- if (index === -1) return 0;
63
- return index;
64
- }, [actualActiveTab, tabs]);
65
- const panels = React.useMemo(() => React__default["default"].Children.map(tabs, tab => {
66
- const {
67
- tabId: panelId = '',
68
- style,
69
- children: content,
70
- disabled
71
- } = tab.props;
72
- const isActive = actualActiveTab === panelId;
73
- const shouldRender = !onlyRenderActiveTab || isActive;
74
- if (disabled) return null;
75
- return shouldRender && /*#__PURE__*/_jsx__default["default"](styles.StyledPanelContainer, {
76
- id: panelId,
77
- "aria-labelledby": "".concat(panelId, "-label"),
78
- "aria-hidden": !isActive,
79
- "data-panel-id": panelId,
80
- "data-testid": "ds-tabs-tab-panel",
81
- hidden: !isActive,
82
- onMouseDown: handleOnMouseDown,
83
- role: "tabpanel",
84
- style: style,
85
- isDSMobile: isDSMobile
86
- }, panelId, content);
87
- }), [actualActiveTab, handleOnMouseDown, isDSMobile, onlyRenderActiveTab, tabs]);
88
-
89
- if (animated) {
90
- return /*#__PURE__*/_jsx__default["default"](SwipeableViews__default["default"], {
91
- enableMouseEvents: enableMouseEvents,
92
- index: firstSlideToShow,
93
- onChangeIndex: handleOnChangeIndex
94
- }, void 0, panels);
95
- }
96
-
97
- return /*#__PURE__*/jsxRuntime.jsx(jsxRuntime.Fragment, {
98
- children: panels
99
- });
100
- };
101
-
102
- exports.TabsPanels = TabsPanels;
@@ -1,25 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var styled = require('styled-components');
6
-
7
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
-
9
- var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
10
-
11
- const StyledPanelContainer = /*#__PURE__*/styled__default["default"].div.withConfig({
12
- componentId: "sc-oxw5jq-0"
13
- })(["padding-top:8px;&:focus{outline:none;}", " ", ""], _ref => {
14
- let {
15
- hidden
16
- } = _ref;
17
- return hidden ? 'visibility: hidden;' : '';
18
- }, _ref2 => {
19
- let {
20
- isDSMobile
21
- } = _ref2;
22
- return isDSMobile ? "padding-top: 0;" : "";
23
- });
24
-
25
- exports.StyledPanelContainer = StyledPanelContainer;