@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,186 +0,0 @@
1
- import _taggedTemplateLiteral from '@babel/runtime/helpers/esm/taggedTemplateLiteral';
2
- import styled from 'styled-components';
3
- import { css, onlySafariAndFirefox, safariAndFirefoxBold } from '@elliemae/ds-system';
4
- import { TabTypes } from '../../utils/constants.js';
5
-
6
- var _templateObject;
7
- const StyledSelectionIndicator = /*#__PURE__*/styled.div.withConfig({
8
- componentId: "sc-3hla56-0"
9
- })(["position:absolute;height:3px;top:", ";margin-top:", ";pointer-events:none;transition:200ms cubic-bezier(0.36,0,1,1);z-index:10;", ""], _ref => {
10
- let {
11
- tabType,
12
- isDSMobile
13
- } = _ref;
14
- if (isDSMobile) return "35px";
15
- if (tabType === TabTypes.NORMAL_SMALL) return "15px";
16
- return "25px";
17
- }, _ref2 => {
18
- let {
19
- theme
20
- } = _ref2;
21
- return theme.space.xxxs;
22
- }, _ref3 => {
23
- let {
24
- isDSMobile
25
- } = _ref3;
26
- return isDSMobile ? " \n margin-left: 0;\n margin-top: 3px;\n " : "";
27
- });
28
- const mobileGradientsSettings = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n ", "\n"])), _ref4 => {
29
- let {
30
- theme,
31
- mobileGradients,
32
- isDSMobile,
33
- fixedTabsHeaders
34
- } = _ref4;
35
-
36
- if (isDSMobile && !fixedTabsHeaders) {
37
- 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%);");
38
- 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%);");
39
- 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%);");
40
- }
41
-
42
- return "";
43
- });
44
- const StyledTabWrapper = /*#__PURE__*/styled.div.withConfig({
45
- componentId: "sc-3hla56-1"
46
- })(["display:flex;flex:1;flex-wrap:nowrap;", " ", ""], _ref5 => {
47
- let {
48
- fixedTabsHeaders,
49
- isDSMobile
50
- } = _ref5;
51
- return !fixedTabsHeaders && isDSMobile ? '' : 'overflow-x: hidden;';
52
- }, _ref6 => {
53
- let {
54
- theme,
55
- isDSMobile
56
- } = _ref6;
57
- return isDSMobile ? "border-bottom: 1px solid ".concat(theme.colors.brand[300], ";") : "";
58
- });
59
- const StyledTabButton = /*#__PURE__*/styled.button.withConfig({
60
- componentId: "sc-3hla56-2"
61
- })(["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 => {
62
- let {
63
- tabType
64
- } = _ref7;
65
- return tabType === TabTypes.SUBTABS ? "capitalize" : "uppercase";
66
- }, _ref8 => {
67
- let {
68
- fixedTabsHeaders,
69
- isDSMobile
70
- } = _ref8;
71
- if (fixedTabsHeaders) return '0px';
72
- if (!fixedTabsHeaders && isDSMobile) return '14px';
73
- return '16px';
74
- }, _ref9 => {
75
- let {
76
- fixedTabsHeaders,
77
- isDSMobile
78
- } = _ref9;
79
- if (fixedTabsHeaders) return '0px';
80
- if (!fixedTabsHeaders && isDSMobile) return '14px';
81
- return '16px';
82
- }, _ref10 => {
83
- let {
84
- theme
85
- } = _ref10;
86
- return theme.colors.neutral[700];
87
- }, onlySafariAndFirefox('-webkit-text-stroke: 0.4px transparent;'), _ref11 => {
88
- let {
89
- tabType
90
- } = _ref11;
91
- return tabType === TabTypes.NORMAL ? "height: 32px;" : "height: 22px;";
92
- }, _ref12 => {
93
- let {
94
- theme,
95
- isActive,
96
- disabled
97
- } = _ref12;
98
- return isActive && !disabled ? "\n font-weight: ".concat(theme.fontWeights.semibold, ";\n ").concat(safariAndFirefoxBold("#353C46"), "\n\n &:hover {\n ").concat(safariAndFirefoxBold("#1E79C2"), "\n }\n \n ") : "\n \n ";
99
- }, _ref13 => {
100
- let {
101
- theme,
102
- disabled
103
- } = _ref13;
104
- 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 ");
105
- }, _ref14 => {
106
- let {
107
- theme,
108
- showSeparator,
109
- tabType
110
- } = _ref14;
111
- 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 === TabTypes.SUBTABS ? "10px" : "16px", ";\n background: ").concat(theme.colors.neutral[400], ";\n }") : "";
112
- }, _ref15 => {
113
- let {
114
- theme,
115
- isDSMobile,
116
- tabType,
117
- isActive
118
- } = _ref15;
119
- 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 !== 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 ") : "";
120
- }, _ref16 => {
121
- let {
122
- theme,
123
- isActive,
124
- disabled,
125
- isDSMobile
126
- } = _ref16;
127
- 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(onlySafariAndFirefox('-webkit-text-stroke: 0.4px transparent;'), " \n\n &:focus {\n font-weight: ").concat(theme.fontWeights.regular, ";\n font-size: 13px;\n ").concat(safariAndFirefoxBold('#006AA9'), "\n }\n\n ").concat(isActive ? "\n font-weight: ".concat(theme.fontWeights.regular, ";\n font-size: 13px;\n ").concat(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(safariAndFirefoxBold('#006AA9'), "\n }") : "", "\n\n ") : "";
128
- });
129
- const StyledSubTabsList = /*#__PURE__*/styled.div.withConfig({
130
- componentId: "sc-3hla56-3"
131
- })(["position:relative;display:flex;flex-wrap:nowrap;flex:1;width:100%;", ""], _ref17 => {
132
- let {
133
- withCarousel
134
- } = _ref17;
135
- return withCarousel ? 'max-width: 100%;' : '';
136
- });
137
- const StyledTabList = /*#__PURE__*/styled.div.withConfig({
138
- componentId: "sc-3hla56-4"
139
- })(["position:relative;display:flex;flex-wrap:nowrap;flex:1;width:100%;", " ", " ", "{padding-bottom:0;padding-top:0;}", " ", " ", " ", "{", "}", "{background:", ";}"], _ref18 => {
140
- let {
141
- withCarousel,
142
- isDSMobile
143
- } = _ref18;
144
- return withCarousel && !isDSMobile ? "max-width: 100%;" : '';
145
- }, _ref19 => {
146
- let {
147
- theme,
148
- isDSMobile,
149
- tabType
150
- } = _ref19;
151
- return tabType !== 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 ") : "";
152
- }, StyledTabButton, _ref20 => {
153
- let {
154
- theme,
155
- isDSMobile
156
- } = _ref20;
157
- return isDSMobile ? "\n \n background: ".concat(theme.colors.brand[200], ";") : "";
158
- }, mobileGradientsSettings, _ref21 => {
159
- let {
160
- isDSMobile,
161
- fixedTabsHeaders
162
- } = _ref21;
163
- 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 }")) : "";
164
- }, StyledSelectionIndicator, _ref22 => {
165
- let {
166
- indicatorStyle
167
- } = _ref22;
168
- return "\n width: ".concat(indicatorStyle.width, ";\n left: ").concat(indicatorStyle.left, ";\n ");
169
- }, StyledSelectionIndicator, _ref23 => {
170
- let {
171
- theme,
172
- indicatorStyle,
173
- isDSMobile
174
- } = _ref23;
175
- return !isDSMobile ? indicatorStyle.backgroundWithTransparent : theme.colors.brand[600];
176
- });
177
- const StyledRequiredMark = /*#__PURE__*/styled.span.withConfig({
178
- componentId: "sc-3hla56-5"
179
- })(["color:", ";font-size:6px;margin-left:2px;position:absolute;top:5px;"], _ref24 => {
180
- let {
181
- theme
182
- } = _ref24;
183
- return theme.colors.danger[900];
184
- });
185
-
186
- export { StyledRequiredMark, StyledSelectionIndicator, StyledSubTabsList, StyledTabButton, StyledTabList, StyledTabWrapper };
@@ -1,40 +0,0 @@
1
- import 'core-js/modules/esnext.async-iterator.filter.js';
2
- import 'core-js/modules/esnext.iterator.constructor.js';
3
- import 'core-js/modules/esnext.iterator.filter.js';
4
- import 'core-js/modules/esnext.async-iterator.for-each.js';
5
- import 'core-js/modules/esnext.iterator.for-each.js';
6
- import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
7
- import _jsx from '@babel/runtime/helpers/esm/jsx';
8
- import { useContext } from 'react';
9
- import { TabsPanels } from '../tabsPanel/TabsPanels.js';
10
- import { TabBar } from '../tabBar/TabBar.js';
11
- import { StyledTabBarContainer } from './styles.js';
12
- import { DSTabsContext } from '../../DSTabsCTX.js';
13
- import { DSTabsDatatestid } from '../../DSTabsDatatestid.js';
14
- import { jsxs } from 'react/jsx-runtime';
15
-
16
- var _TabBar, _TabsPanels;
17
-
18
- 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; }
19
-
20
- 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(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; }
21
- const TabsContent = () => {
22
- const {
23
- props: {
24
- containerProps,
25
- innerRef,
26
- tabsListAriaLabel,
27
- tabBarExtraContent
28
- }
29
- } = useContext(DSTabsContext);
30
- return /*#__PURE__*/jsxs("div", _objectSpread(_objectSpread({}, containerProps), {}, {
31
- ref: innerRef,
32
- "data-testid": DSTabsDatatestid.TABS_CONTAINER,
33
- children: [/*#__PURE__*/_jsx(StyledTabBarContainer, {
34
- "aria-label": tabsListAriaLabel,
35
- role: "tablist"
36
- }, void 0, _TabBar || (_TabBar = /*#__PURE__*/_jsx(TabBar, {})), tabBarExtraContent), _TabsPanels || (_TabsPanels = /*#__PURE__*/_jsx(TabsPanels, {}))]
37
- }));
38
- };
39
-
40
- export { TabsContent };
@@ -1,7 +0,0 @@
1
- import styled from 'styled-components';
2
-
3
- const StyledTabBarContainer = /*#__PURE__*/styled.div.withConfig({
4
- componentId: "sc-vm3k1y-0"
5
- })(["display:flex;overflow-x:hidden;"]);
6
-
7
- export { StyledTabBarContainer };
@@ -1,92 +0,0 @@
1
- import _jsx from '@babel/runtime/helpers/esm/jsx';
2
- import 'core-js/modules/esnext.async-iterator.constructor.js';
3
- import 'core-js/modules/esnext.async-iterator.to-array.js';
4
- import 'core-js/modules/esnext.iterator.constructor.js';
5
- import 'core-js/modules/esnext.iterator.to-array.js';
6
- import 'core-js/modules/esnext.async-iterator.filter.js';
7
- import 'core-js/modules/esnext.iterator.filter.js';
8
- import 'core-js/modules/esnext.async-iterator.map.js';
9
- import 'core-js/modules/esnext.iterator.map.js';
10
- import React, { useContext, useCallback, useMemo } from 'react';
11
- import SwipeableViews from 'react-swipeable-views';
12
- import { StyledPanelContainer } from './styles.js';
13
- import { DSTabsContext } from '../../DSTabsCTX.js';
14
- import { useTabsCallbacks } from '../../utils/hooks/useTabsCallbacks.js';
15
- import { jsx, Fragment } from 'react/jsx-runtime';
16
-
17
- const TabsPanels = () => {
18
- const {
19
- actualActiveTab,
20
- focusableTabsRef,
21
- props: {
22
- animated,
23
- enableMouseEvents,
24
- onlyRenderActiveTab,
25
- children: tabs,
26
- isDSMobile
27
- }
28
- } = useContext(DSTabsContext);
29
- const {
30
- handleOnTabChange,
31
- handleOnMouseDown
32
- } = useTabsCallbacks();
33
- const handleOnChangeIndex = useCallback((index, indexLatest) => {
34
- if (!focusableTabsRef.current) return;
35
- const offset = index - indexLatest;
36
-
37
- if (focusableTabsRef.current) {
38
- var _focusableTabsRef$cur, _focusableTabsRef$cur2, _focusableTabsRef$cur3, _focusableTabsRef$cur4;
39
-
40
- const currentIndexFocusable = (_focusableTabsRef$cur = focusableTabsRef.current) === null || _focusableTabsRef$cur === void 0 ? void 0 : _focusableTabsRef$cur.findIndex(el => el.dataset.tabId === actualActiveTab);
41
- const newFocusableIndex = currentIndexFocusable >= 0 ? currentIndexFocusable + offset : -1;
42
- 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;
43
- 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
44
- // by clicking we are manually forcing to center the tab
45
-
46
- focusableTabsRef.current[newFocusableIndex].click();
47
- }
48
- }, [actualActiveTab, focusableTabsRef, handleOnTabChange]);
49
- const firstSlideToShow = useMemo(() => {
50
- const childrenArray = React.Children.toArray(tabs);
51
- const index = childrenArray.filter(tab => tab.props.disabled !== true).findIndex(tab => tab.props.tabId === actualActiveTab);
52
- if (index === -1) return 0;
53
- return index;
54
- }, [actualActiveTab, tabs]);
55
- const panels = useMemo(() => React.Children.map(tabs, tab => {
56
- const {
57
- tabId: panelId = '',
58
- style,
59
- children: content,
60
- disabled
61
- } = tab.props;
62
- const isActive = actualActiveTab === panelId;
63
- const shouldRender = !onlyRenderActiveTab || isActive;
64
- if (disabled) return null;
65
- return shouldRender && /*#__PURE__*/_jsx(StyledPanelContainer, {
66
- id: panelId,
67
- "aria-labelledby": "".concat(panelId, "-label"),
68
- "aria-hidden": !isActive,
69
- "data-panel-id": panelId,
70
- "data-testid": "ds-tabs-tab-panel",
71
- hidden: !isActive,
72
- onMouseDown: handleOnMouseDown,
73
- role: "tabpanel",
74
- style: style,
75
- isDSMobile: isDSMobile
76
- }, panelId, content);
77
- }), [actualActiveTab, handleOnMouseDown, isDSMobile, onlyRenderActiveTab, tabs]);
78
-
79
- if (animated) {
80
- return /*#__PURE__*/_jsx(SwipeableViews, {
81
- enableMouseEvents: enableMouseEvents,
82
- index: firstSlideToShow,
83
- onChangeIndex: handleOnChangeIndex
84
- }, void 0, panels);
85
- }
86
-
87
- return /*#__PURE__*/jsx(Fragment, {
88
- children: panels
89
- });
90
- };
91
-
92
- export { TabsPanels };
@@ -1,17 +0,0 @@
1
- import styled from 'styled-components';
2
-
3
- const StyledPanelContainer = /*#__PURE__*/styled.div.withConfig({
4
- componentId: "sc-oxw5jq-0"
5
- })(["padding-top:8px;&:focus{outline:none;}", " ", ""], _ref => {
6
- let {
7
- hidden
8
- } = _ref;
9
- return hidden ? 'visibility: hidden;' : '';
10
- }, _ref2 => {
11
- let {
12
- isDSMobile
13
- } = _ref2;
14
- return isDSMobile ? "padding-top: 0;" : "";
15
- });
16
-
17
- export { StyledPanelContainer };
package/esm/propTypes.js DELETED
@@ -1,28 +0,0 @@
1
- import { PropTypes } from 'react-desc';
2
- import { TabTypesValuesAsArray } from './utils/constants.js';
3
-
4
- const tabPropTypes = {
5
- tabId: PropTypes.string.description('Unique Tab id.').defaultValue(''),
6
- title: PropTypes.string.description('Tab title.').defaultValue(''),
7
- required: PropTypes.bool.description('Show a required mark next to the title.').defaultValue(false),
8
- disabled: PropTypes.bool.description('Disables Tab.').defaultValue(false)
9
- };
10
- const tabsPropTypes = {
11
- animated: PropTypes.bool.description('Whether the Tab transition should animate or not.').defaultValue(true),
12
- enableMouseEvents: PropTypes.bool.description('Enables Tab transition with mouse drag events.').defaultValue(false),
13
- allowTextSelection: PropTypes.bool.description('Allows text selection when mouse drag events are active.').defaultValue(false),
14
- onTabChange: PropTypes.func.description('Handler when a user clicks on a different Tab.').defaultValue('() => {}'),
15
- type: PropTypes.oneOf(TabTypesValuesAsArray).description('Tab type.').defaultValue(TabTypesValuesAsArray[0]),
16
- tabBarExtraContent: PropTypes.element.description('Extra content next to the Tab Bar.').defaultValue(undefined),
17
- onlyRenderActiveTab: PropTypes.bool.description('Only renders the active Tab in the DOM.').defaultValue(false),
18
- withCarousel: PropTypes.bool.description('Activate carousel behavior.').defaultValue(false),
19
- activeTab: PropTypes.string.description('Passing a value makes DSTabs a controlled component.').defaultValue('First DSTab children.'),
20
- children: PropTypes.node.description('Use DSTab component as children.').isRequired,
21
- tabsListAriaLabel: PropTypes.string.description('Aria label for the list.').defaultValue('Tab list.'),
22
- containerProps: PropTypes.object.description('Additional properties for the container.').defaultValue({}),
23
- innerRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
24
- current: PropTypes.any
25
- })]).description('Ref to the container.').defaultValue(undefined)
26
- };
27
-
28
- export { tabPropTypes, tabsPropTypes };
@@ -1,20 +0,0 @@
1
- const TabTypes = {
2
- NORMAL: 'normal',
3
- NORMAL_SMALL: 'normal_small',
4
- SUBTABS: 'subtabs'
5
- };
6
- const TabTypesValuesAsArray = Object.values(TabTypes);
7
- const MOBILE_GRADIENT_WIDTH = 24;
8
- const defaultIndicatorStyles = {
9
- left: '0px',
10
- width: '0px',
11
- backgroundWithTransparent: ''
12
- };
13
- const gradientOffsetsAccordingType = {
14
- normal_small: 14,
15
- normal: 16,
16
- subtabs: 16,
17
- fixedTabsHeaders: 0
18
- };
19
-
20
- export { MOBILE_GRADIENT_WIDTH, TabTypes, TabTypesValuesAsArray, defaultIndicatorStyles, gradientOffsetsAccordingType };
@@ -1,57 +0,0 @@
1
- import { useContext, useCallback } from 'react';
2
- import { DSTabsContext, DSTabsCrossRefContext } from '../../DSTabsCTX.js';
3
-
4
- /* eslint-disable max-statements */
5
- const useKeyboardNavigation = () => {
6
- const {
7
- focusableTabsRef
8
- } = useContext(DSTabsContext);
9
- const {
10
- firstSubtabInternalRef,
11
- lastTabInternalRef
12
- } = useContext(DSTabsCrossRefContext);
13
- const handleOnKeyDown = useCallback(e => {
14
- if (e.key === 'ArrowRight' && focusableTabsRef.current) {
15
- var _focusableTabsRef$cur, _focusableTabsRef$cur2;
16
-
17
- e.preventDefault();
18
- e.stopPropagation();
19
- const nextTab = focusableTabsRef.current[(focusableTabsRef === null || focusableTabsRef === void 0 ? void 0 : (_focusableTabsRef$cur = focusableTabsRef.current) === null || _focusableTabsRef$cur === void 0 ? void 0 : (_focusableTabsRef$cur2 = _focusableTabsRef$cur.indexOf) === null || _focusableTabsRef$cur2 === void 0 ? void 0 : _focusableTabsRef$cur2.call(_focusableTabsRef$cur, e.target)) + 1];
20
- if (nextTab) nextTab.focus();
21
- if (!nextTab) return;
22
- }
23
-
24
- if (e.key === 'ArrowLeft' && focusableTabsRef.current) {
25
- var _focusableTabsRef$cur3, _focusableTabsRef$cur4;
26
-
27
- e.preventDefault();
28
- e.stopPropagation();
29
- const prevTab = focusableTabsRef.current[(focusableTabsRef === null || focusableTabsRef === void 0 ? void 0 : (_focusableTabsRef$cur3 = focusableTabsRef.current) === null || _focusableTabsRef$cur3 === void 0 ? void 0 : (_focusableTabsRef$cur4 = _focusableTabsRef$cur3.indexOf) === null || _focusableTabsRef$cur4 === void 0 ? void 0 : _focusableTabsRef$cur4.call(_focusableTabsRef$cur3, e.target)) - 1];
30
- if (prevTab) prevTab.focus();
31
- if (!prevTab) return;
32
- }
33
-
34
- if (e.key === 'ArrowDown') {
35
- var _firstSubtabInternalR;
36
-
37
- e.preventDefault();
38
- e.stopPropagation();
39
- const canFocusCrossTabs = (firstSubtabInternalRef === null || firstSubtabInternalRef === void 0 ? void 0 : firstSubtabInternalRef.current) && (lastTabInternalRef === null || lastTabInternalRef === void 0 ? void 0 : lastTabInternalRef.current);
40
- if (canFocusCrossTabs) (_firstSubtabInternalR = firstSubtabInternalRef.current) === null || _firstSubtabInternalR === void 0 ? void 0 : _firstSubtabInternalR.focus();
41
- }
42
-
43
- if (e.key === 'ArrowUp') {
44
- var _lastTabInternalRef$c;
45
-
46
- e.preventDefault();
47
- e.stopPropagation();
48
- const canFocusCrossTabs = (firstSubtabInternalRef === null || firstSubtabInternalRef === void 0 ? void 0 : firstSubtabInternalRef.current) && (lastTabInternalRef === null || lastTabInternalRef === void 0 ? void 0 : lastTabInternalRef.current);
49
- if (canFocusCrossTabs) (_lastTabInternalRef$c = lastTabInternalRef.current) === null || _lastTabInternalRef$c === void 0 ? void 0 : _lastTabInternalRef$c.focus();
50
- }
51
- }, [firstSubtabInternalRef, lastTabInternalRef, focusableTabsRef]);
52
- return {
53
- handleOnKeyDown
54
- };
55
- };
56
-
57
- export { useKeyboardNavigation };
@@ -1,37 +0,0 @@
1
- import { useContext, useCallback } from 'react';
2
- import { centerTab } from '../helpers.js';
3
- import { DSTabsContext } from '../../DSTabsCTX.js';
4
-
5
- const useTabsCallbacks = () => {
6
- const {
7
- setInternalActiveTab,
8
- tabsListRef,
9
- props: {
10
- onTabChange,
11
- isDSMobile,
12
- allowTextSelection,
13
- fixedTabsHeaders
14
- }
15
- } = useContext(DSTabsContext);
16
- const handleOnTabChange = useCallback((tabId, e) => {
17
- setInternalActiveTab(tabId);
18
- onTabChange(tabId, e);
19
-
20
- if (isDSMobile && !fixedTabsHeaders && e) {
21
- centerTab({
22
- e,
23
- listRef: tabsListRef
24
- });
25
- }
26
- }, [fixedTabsHeaders, isDSMobile, onTabChange, setInternalActiveTab, tabsListRef]);
27
- const handleOnMouseDown = useCallback(e => {
28
- const role = e.target.getAttribute('role');
29
- if (role !== 'tabpanel' && allowTextSelection) e.stopPropagation();
30
- }, [allowTextSelection]);
31
- return {
32
- handleOnTabChange,
33
- handleOnMouseDown
34
- };
35
- };
36
-
37
- export { useTabsCallbacks };
package/types/DSTabs.d.ts DELETED
@@ -1,14 +0,0 @@
1
- /// <reference path="../../../../shared/typings/react-desc.d.ts" />
2
- import type { WeakValidationMap } from 'react';
3
- import type { DSTabsPropsT } from './DSTabsTypes';
4
- declare const DSTabs: {
5
- (props: DSTabsPropsT): JSX.Element;
6
- propTypes: WeakValidationMap<unknown>;
7
- };
8
- declare const DSTabsWithSchema: {
9
- (props?: DSTabsPropsT | undefined): JSX.Element;
10
- propTypes: unknown;
11
- toTypescript: () => import("react-desc").TypescriptSchema;
12
- };
13
- export { DSTabs, DSTabsWithSchema };
14
- export default DSTabs;
@@ -1,4 +0,0 @@
1
- /// <reference types="react" />
2
- import type { DSTabsUseCrossRefContextT, DSTabsUseTabsContextT } from './DSTabsTypes';
3
- export declare const DSTabsContext: import("react").Context<DSTabsUseTabsContextT>;
4
- export declare const DSTabsCrossRefContext: import("react").Context<DSTabsUseCrossRefContextT>;
@@ -1,12 +0,0 @@
1
- export declare const DSTabsDatatestid: {
2
- TABS_CONTAINER: string;
3
- TAB_BUTTON: string;
4
- SUBTAB_BUTTON: string;
5
- TAB_PANEL: string;
6
- SUB_TAB_LIST: string;
7
- TAB_LIST: string;
8
- CAROUSEL: {
9
- BUTTON_RIGHT: string;
10
- BUTTON_LEFT: string;
11
- };
12
- };