@zohodesk/components 1.0.0-temp-255 → 1.0.0-temp-256

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 (49) hide show
  1. package/README.md +20 -3
  2. package/assets/Appearance/dark/mode/Component_DarkMode.module.css +4 -4
  3. package/assets/Appearance/dark/themes/blue/blue_componentsCTA_DarkModifyCategory.module.css +14 -0
  4. package/assets/Appearance/dark/themes/green/green_componentsCTA_DarkModifyCategory.module.css +14 -0
  5. package/assets/Appearance/dark/themes/orange/orange_componentsCTA_DarkModifyCategory.module.css +14 -0
  6. package/assets/Appearance/dark/themes/red/red_componentsCTA_DarkModifyCategory.module.css +14 -0
  7. package/assets/Appearance/dark/themes/yellow/yellow_componentsCTA_DarkModifyCategory.module.css +14 -0
  8. package/assets/Appearance/light/mode/Component_LightMode.module.css +6 -6
  9. package/assets/Appearance/light/themes/blue/blue_componentsCTA_LightModifyCategory.module.css +14 -0
  10. package/assets/Appearance/light/themes/green/green_componentsCTA_LightModifyCategory.module.css +14 -0
  11. package/assets/Appearance/light/themes/orange/orange_componentsCTA_LightModifyCategory.module.css +14 -0
  12. package/assets/Appearance/light/themes/red/red_componentsCTA_LightModifyCategory.module.css +14 -0
  13. package/assets/Appearance/light/themes/yellow/yellow_componentsCTA_LightModifyCategory.module.css +14 -0
  14. package/assets/Appearance/pureDark/mode/Component_PureDarkMode.module.css +3 -3
  15. package/assets/Appearance/pureDark/themes/blue/blue_componentsCTA_PureDarkModifyCategory.module.css +14 -0
  16. package/assets/Appearance/pureDark/themes/green/green_componentsCTA_PureDarkModifyCategory.module.css +14 -0
  17. package/assets/Appearance/pureDark/themes/orange/orange_componentsCTA_PureDarkModifyCategory.module.css +14 -0
  18. package/assets/Appearance/pureDark/themes/red/red_componentsCTA_PureDarkModifyCategory.module.css +14 -0
  19. package/assets/Appearance/pureDark/themes/yellow/yellow_componentsCTA_PureDarkModifyCategory.module.css +14 -0
  20. package/cbt.config.js +12 -3
  21. package/es/AppContainer/AppContainer.js +2 -0
  22. package/es/DateTime/DateWidget.js +32 -6
  23. package/es/Provider/LibraryContext.js +5 -1
  24. package/es/Select/Select.js +3 -1
  25. package/es/Tab/Tab.js +62 -11
  26. package/es/Tab/Tab.module.css +25 -0
  27. package/es/Tab/Tabs.js +37 -6
  28. package/es/Tab/Tabs.module.css +48 -3
  29. package/es/Tab/__tests__/Tab.spec.js +112 -0
  30. package/es/Tab/__tests__/__snapshots__/Tab.spec.js.snap +316 -0
  31. package/es/Tab/props/defaultProps.js +3 -2
  32. package/es/Tab/props/propTypes.js +12 -3
  33. package/es/Tab/utils/tabConfigs.js +5 -0
  34. package/es/utils/datetime/common.js +10 -3
  35. package/lib/AppContainer/AppContainer.js +4 -0
  36. package/lib/DateTime/DateWidget.js +33 -6
  37. package/lib/Provider/LibraryContext.js +5 -1
  38. package/lib/Select/Select.js +3 -1
  39. package/lib/Tab/Tab.js +62 -9
  40. package/lib/Tab/Tab.module.css +25 -0
  41. package/lib/Tab/Tabs.js +34 -3
  42. package/lib/Tab/Tabs.module.css +48 -3
  43. package/lib/Tab/__tests__/Tab.spec.js +115 -0
  44. package/lib/Tab/__tests__/__snapshots__/Tab.spec.js.snap +316 -0
  45. package/lib/Tab/props/defaultProps.js +3 -2
  46. package/lib/Tab/props/propTypes.js +14 -3
  47. package/lib/Tab/utils/tabConfigs.js +7 -1
  48. package/lib/utils/datetime/common.js +10 -2
  49. package/package.json +11 -10
@@ -11,6 +11,9 @@
11
11
  width: 100% ;
12
12
  max-width: 100% ;
13
13
  }
14
+ .textContainer {
15
+ gap: var(--zd_size4) ;
16
+ }
14
17
  .textContainer,
15
18
  .tabText {
16
19
  max-width: inherit ;
@@ -91,3 +94,25 @@
91
94
  composes: delta;
92
95
  color: var(--zdt_tab_alpha_active_text);
93
96
  }
97
+
98
+ .tabDefault {
99
+ transition: all var(--zd_transition2);
100
+ padding-inline: 0 ;
101
+ padding-block: 0 ;
102
+ font-size: var(--zd_font_size11) ;
103
+ line-height: 3;
104
+ margin-inline-end: var(--zd_size34) ;
105
+ color: var(--zd-text-secondary);
106
+ }
107
+ .defaultHover:hover { color: var(--zd-text-primary); }
108
+ .defaultActive {
109
+ transition: all var(--zd_transition2);
110
+ padding-inline: 0 ;
111
+ padding-block: 0 ;
112
+ font-size: var(--zd_font_size11) ;
113
+ line-height: 3;
114
+ margin-inline-end: var(--zd_size34) ;
115
+ color: var(--zd-text-primary);
116
+ border-bottom: 1px solid var(--zdt_tab_alpha_active_border);
117
+ }
118
+ .defaultActive_border { border-color: var(--zdt_tab_alpha_active_border); }
package/lib/Tab/Tabs.js CHANGED
@@ -25,6 +25,8 @@ var _ResizeObserver = _interopRequireDefault(require("../Responsive/ResizeObserv
25
25
 
26
26
  var _ListItem = _interopRequireDefault(require("../ListItem/ListItem"));
27
27
 
28
+ var _ListItemWithIcon = _interopRequireDefault(require("../ListItem/ListItemWithIcon"));
29
+
28
30
  var _icons = require("@zohodesk/icons");
29
31
 
30
32
  var _TabsModule = _interopRequireDefault(require("./Tabs.module.css"));
@@ -598,6 +600,10 @@ var Tabs = /*#__PURE__*/function (_React$Component) {
598
600
  moreTabs: moreTabs
599
601
  });
600
602
  var hasSearch = moreTabs.length > 4;
603
+ var isDefaultType = type === 'default';
604
+ var defaultMoreClass = isDefaultType ? _TabsModule["default"].defaultMoreButton : '';
605
+ var defaultMoreActiveClass = isDefaultType ? _TabsModule["default"].defaultMoreButtonActive : '';
606
+ var effectiveMenuItemClass = isDefaultType ? "".concat(_TabsModule["default"].defaultMenuListItem).concat(menuItemClass ? " ".concat(menuItemClass) : '') : menuItemClass;
601
607
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, _react["default"].Children.map(mainTabs, function (child) {
602
608
  if (!child) {
603
609
  return null;
@@ -631,7 +637,7 @@ var Tabs = /*#__PURE__*/function (_React$Component) {
631
637
  className: "".concat(_TabsModule["default"].menu, " "),
632
638
  dataSelectorId: "".concat(dataSelectorId, "_moreIcon")
633
639
  }, /*#__PURE__*/_react["default"].createElement(_Layout.Container, _extends({
634
- className: "".concat(_semanticButtonModule["default"].buttonReset, " ").concat(moreButtonClass, " ").concat(isPopupOpen ? moreButtonActiveClass : ''),
640
+ className: "".concat(_semanticButtonModule["default"].buttonReset, " ").concat(defaultMoreClass, " ").concat(moreButtonClass, " ").concat(isPopupOpen ? "".concat(defaultMoreActiveClass, " ").concat(moreButtonActiveClass) : ''),
635
641
  align: "both",
636
642
  onClick: this.togglePopup,
637
643
  dataId: "moreTabs",
@@ -699,8 +705,33 @@ var Tabs = /*#__PURE__*/function (_React$Component) {
699
705
  isLink = data.isLink,
700
706
  href = data.href,
701
707
  children = data.children,
702
- dataId = data.dataId;
708
+ dataId = data.dataId,
709
+ variant = data.variant,
710
+ iconName = data.iconName,
711
+ iconSize = data.iconSize;
703
712
  var value = text ? text : showTitleInMoreOptions ? title : null;
713
+ var showIconInDropdown = variant !== _tabConfigs.VARIANT.TEXT && iconName;
714
+
715
+ if (showIconInDropdown) {
716
+ return /*#__PURE__*/_react["default"].createElement(_ListItemWithIcon["default"], _extends({
717
+ key: id,
718
+ value: value,
719
+ onClick: _this8.moreTabSelect,
720
+ id: id,
721
+ title: title || text,
722
+ isLink: isLink,
723
+ href: href,
724
+ autoHover: true,
725
+ iconName: iconName,
726
+ iconSize: iconSize,
727
+ customClass: {
728
+ customListItem: effectiveMenuItemClass
729
+ },
730
+ target: "self",
731
+ dataId: "".concat(dataId, "_Tab")
732
+ }, ListItemProps));
733
+ }
734
+
704
735
  return /*#__PURE__*/_react["default"].createElement(_ListItem["default"], _extends({
705
736
  key: id,
706
737
  value: value,
@@ -711,7 +742,7 @@ var Tabs = /*#__PURE__*/function (_React$Component) {
711
742
  href: href,
712
743
  autoHover: true,
713
744
  customClass: {
714
- customListItem: menuItemClass
745
+ customListItem: effectiveMenuItemClass
715
746
  },
716
747
  target: "self",
717
748
  dataId: "".concat(dataId, "_Tab")
@@ -82,6 +82,51 @@
82
82
  border-bottom: 1px dotted var(--zdt_tabs_alpha_border);
83
83
  }
84
84
 
85
+ .default {
86
+ height: var(--zd_size35) ;
87
+ transition: padding var(--zd_transition3);
88
+ z-index: 2;
89
+ background-color: var(--zd-bg-secondary);
90
+ }
91
+
92
+ .default_padding {
93
+ padding-inline-start: var(--zd_size10) ;
94
+ }
95
+
96
+ .default_border {
97
+ border-bottom: 1px solid var(--zd-border-primary);
98
+ }
99
+
100
+ .defaultMoreButton {
101
+ max-height: var(--zd_size28) ;
102
+ color: var(--zd-text-secondary);
103
+ padding: var(--zd_size6) ;
104
+ border: 1px solid var(--zd-border-transparent);
105
+ border-radius: 4px;
106
+ margin-top: var(--zd_size3) ;
107
+ cursor: pointer;
108
+ }
109
+
110
+ .defaultMoreButton:hover {
111
+ border-color: var(--zdt_rippleeffect_navy_border);
112
+ }
113
+
114
+ .defaultMoreButtonActive {
115
+ border-color: var(--zdt_cta_secondary_light_border);
116
+ background: var(--zd-bg-brandLight);
117
+ }
118
+
119
+ .defaultMoreButtonActive:hover {
120
+ border-color: var(--zdt_cta_secondary_light_border);
121
+ background: var(--zd-bg-brandLight);
122
+ }
123
+
124
+ .defaultMenuListItem {
125
+ font-size: var(--zd_font_size11) ;
126
+ text-transform: uppercase;
127
+ letter-spacing: 0.4px;
128
+ }
129
+
85
130
  .delta .highlight {
86
131
  border-color: var(--zdt_tabs_delta_border);
87
132
  }
@@ -126,7 +171,7 @@
126
171
 
127
172
  .search {
128
173
  padding-block: var(--zd_size6) 0 ;
129
- padding-inline:var(--zd_size20) ;
174
+ padding-inline: var(--zd_size20) ;
130
175
  }
131
176
 
132
177
  .emptyStateContainer {
@@ -153,5 +198,5 @@
153
198
 
154
199
  .listWrapper {
155
200
  padding-block: var(--zd_size10) ;
156
- padding-inline:0 ;
157
- }
201
+ padding-inline: 0 ;
202
+ }
@@ -8,6 +8,8 @@ var _Tab = _interopRequireDefault(require("../Tab"));
8
8
 
9
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
10
10
 
11
+ var noop = function noop() {};
12
+
11
13
  describe('Tab', function () {
12
14
  test('rendering the defult props', function () {
13
15
  var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tab["default"], null)),
@@ -15,4 +17,117 @@ describe('Tab', function () {
15
17
 
16
18
  expect(asFragment()).toMatchSnapshot();
17
19
  });
20
+ describe('variant-based label rendering', function () {
21
+ test('variant="text" renders text only', function () {
22
+ var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tab["default"], {
23
+ id: "t1",
24
+ text: "Home",
25
+ variant: "text",
26
+ onSelect: noop
27
+ })),
28
+ asFragment = _render2.asFragment;
29
+
30
+ expect(asFragment()).toMatchSnapshot();
31
+ });
32
+ test('variant="icon" renders icon and suppresses text label', function () {
33
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tab["default"], {
34
+ id: "t2",
35
+ text: "Home",
36
+ variant: "icon",
37
+ iconName: "ZD-TB-menu",
38
+ onSelect: noop
39
+ })),
40
+ asFragment = _render3.asFragment;
41
+
42
+ expect(asFragment()).toMatchSnapshot();
43
+ });
44
+ test('variant="iconWithText" renders icon followed by text', function () {
45
+ var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tab["default"], {
46
+ id: "t3",
47
+ text: "Home",
48
+ variant: "iconWithText",
49
+ iconName: "ZD-TB-menu",
50
+ onSelect: noop
51
+ })),
52
+ asFragment = _render4.asFragment;
53
+
54
+ expect(asFragment()).toMatchSnapshot();
55
+ });
56
+ test('renderIcon overrides iconName', function () {
57
+ var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tab["default"], {
58
+ id: "t4",
59
+ text: "Home",
60
+ variant: "iconWithText",
61
+ renderIcon: /*#__PURE__*/_react["default"].createElement("span", null, "\u2605"),
62
+ iconName: "ZD-TB-menu",
63
+ onSelect: noop
64
+ })),
65
+ asFragment = _render5.asFragment;
66
+
67
+ expect(asFragment()).toMatchSnapshot();
68
+ });
69
+ test('renderIcon as function receives no args and renders custom node', function () {
70
+ var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tab["default"], {
71
+ id: "t5",
72
+ text: "Home",
73
+ variant: "icon",
74
+ renderIcon: function renderIcon() {
75
+ return /*#__PURE__*/_react["default"].createElement("span", null, "\u2605");
76
+ },
77
+ onSelect: noop
78
+ })),
79
+ asFragment = _render6.asFragment;
80
+
81
+ expect(asFragment()).toMatchSnapshot();
82
+ });
83
+ });
84
+ describe('renderBefore / renderAfter slots', function () {
85
+ test('renderBefore renders a node to the left of the label', function () {
86
+ var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tab["default"], {
87
+ id: "t6",
88
+ text: "Home",
89
+ renderBefore: /*#__PURE__*/_react["default"].createElement("span", null, "\u25C0"),
90
+ onSelect: noop
91
+ })),
92
+ asFragment = _render7.asFragment;
93
+
94
+ expect(asFragment()).toMatchSnapshot();
95
+ });
96
+ test('renderAfter renders a node to the right of the label', function () {
97
+ var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tab["default"], {
98
+ id: "t7",
99
+ text: "Home",
100
+ renderAfter: /*#__PURE__*/_react["default"].createElement("span", null, "3"),
101
+ onSelect: noop
102
+ })),
103
+ asFragment = _render8.asFragment;
104
+
105
+ expect(asFragment()).toMatchSnapshot();
106
+ });
107
+ test('renderBefore and renderAfter both render around the label', function () {
108
+ var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tab["default"], {
109
+ id: "t8",
110
+ text: "Home",
111
+ renderBefore: /*#__PURE__*/_react["default"].createElement("span", null, "\u25C0"),
112
+ renderAfter: /*#__PURE__*/_react["default"].createElement("span", null, "\u25B6"),
113
+ onSelect: noop
114
+ })),
115
+ asFragment = _render9.asFragment;
116
+
117
+ expect(asFragment()).toMatchSnapshot();
118
+ });
119
+ test('renderBefore as function renders custom node', function () {
120
+ var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tab["default"], {
121
+ id: "t9",
122
+ text: "Home",
123
+ renderBefore: function renderBefore() {
124
+ return /*#__PURE__*/_react["default"].createElement("span", null, "\u25C0");
125
+ },
126
+ onSelect: noop
127
+ })),
128
+ asFragment = _render10.asFragment;
129
+
130
+ expect(asFragment()).toMatchSnapshot();
131
+ });
132
+ });
18
133
  });
@@ -1,5 +1,152 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
+ exports[`Tab renderBefore / renderAfter slots renderAfter renders a node to the right of the label 1`] = `
4
+ <DocumentFragment>
5
+ <div
6
+ aria-controls="t7"
7
+ aria-label="Home"
8
+ aria-selected="false"
9
+ class="tab horizontal basisAuto shrinkOff"
10
+ data-id="tabMenu_Tab"
11
+ data-key="t7"
12
+ data-selector-id="tab"
13
+ data-test-id="tabMenu_Tab"
14
+ role="link"
15
+ tabindex="0"
16
+ >
17
+ <div
18
+ class="textContainer flex cover rowdir both"
19
+ data-id="containerComponent"
20
+ data-selector-id="container"
21
+ data-test-id="containerComponent"
22
+ >
23
+ <div
24
+ class="tabText grow basisAuto shrinkOff"
25
+ data-id="boxComponent"
26
+ data-selector-id="box"
27
+ data-test-id="boxComponent"
28
+ >
29
+ Home
30
+ </div>
31
+ <span>
32
+ 3
33
+ </span>
34
+ </div>
35
+ </div>
36
+ </DocumentFragment>
37
+ `;
38
+
39
+ exports[`Tab renderBefore / renderAfter slots renderBefore and renderAfter both render around the label 1`] = `
40
+ <DocumentFragment>
41
+ <div
42
+ aria-controls="t8"
43
+ aria-label="Home"
44
+ aria-selected="false"
45
+ class="tab horizontal basisAuto shrinkOff"
46
+ data-id="tabMenu_Tab"
47
+ data-key="t8"
48
+ data-selector-id="tab"
49
+ data-test-id="tabMenu_Tab"
50
+ role="link"
51
+ tabindex="0"
52
+ >
53
+ <div
54
+ class="textContainer flex cover rowdir both"
55
+ data-id="containerComponent"
56
+ data-selector-id="container"
57
+ data-test-id="containerComponent"
58
+ >
59
+ <span>
60
+
61
+ </span>
62
+ <div
63
+ class="tabText grow basisAuto shrinkOff"
64
+ data-id="boxComponent"
65
+ data-selector-id="box"
66
+ data-test-id="boxComponent"
67
+ >
68
+ Home
69
+ </div>
70
+ <span>
71
+
72
+ </span>
73
+ </div>
74
+ </div>
75
+ </DocumentFragment>
76
+ `;
77
+
78
+ exports[`Tab renderBefore / renderAfter slots renderBefore as function renders custom node 1`] = `
79
+ <DocumentFragment>
80
+ <div
81
+ aria-controls="t9"
82
+ aria-label="Home"
83
+ aria-selected="false"
84
+ class="tab horizontal basisAuto shrinkOff"
85
+ data-id="tabMenu_Tab"
86
+ data-key="t9"
87
+ data-selector-id="tab"
88
+ data-test-id="tabMenu_Tab"
89
+ role="link"
90
+ tabindex="0"
91
+ >
92
+ <div
93
+ class="textContainer flex cover rowdir both"
94
+ data-id="containerComponent"
95
+ data-selector-id="container"
96
+ data-test-id="containerComponent"
97
+ >
98
+ <span>
99
+
100
+ </span>
101
+ <div
102
+ class="tabText grow basisAuto shrinkOff"
103
+ data-id="boxComponent"
104
+ data-selector-id="box"
105
+ data-test-id="boxComponent"
106
+ >
107
+ Home
108
+ </div>
109
+ </div>
110
+ </div>
111
+ </DocumentFragment>
112
+ `;
113
+
114
+ exports[`Tab renderBefore / renderAfter slots renderBefore renders a node to the left of the label 1`] = `
115
+ <DocumentFragment>
116
+ <div
117
+ aria-controls="t6"
118
+ aria-label="Home"
119
+ aria-selected="false"
120
+ class="tab horizontal basisAuto shrinkOff"
121
+ data-id="tabMenu_Tab"
122
+ data-key="t6"
123
+ data-selector-id="tab"
124
+ data-test-id="tabMenu_Tab"
125
+ role="link"
126
+ tabindex="0"
127
+ >
128
+ <div
129
+ class="textContainer flex cover rowdir both"
130
+ data-id="containerComponent"
131
+ data-selector-id="container"
132
+ data-test-id="containerComponent"
133
+ >
134
+ <span>
135
+
136
+ </span>
137
+ <div
138
+ class="tabText grow basisAuto shrinkOff"
139
+ data-id="boxComponent"
140
+ data-selector-id="box"
141
+ data-test-id="boxComponent"
142
+ >
143
+ Home
144
+ </div>
145
+ </div>
146
+ </div>
147
+ </DocumentFragment>
148
+ `;
149
+
3
150
  exports[`Tab rendering the defult props 1`] = `
4
151
  <DocumentFragment>
5
152
  <div
@@ -20,3 +167,172 @@ exports[`Tab rendering the defult props 1`] = `
20
167
  </div>
21
168
  </DocumentFragment>
22
169
  `;
170
+
171
+ exports[`Tab variant-based label rendering renderIcon as function receives no args and renders custom node 1`] = `
172
+ <DocumentFragment>
173
+ <div
174
+ aria-controls="t5"
175
+ aria-label="Home"
176
+ aria-selected="false"
177
+ class="tab horizontal basisAuto shrinkOff"
178
+ data-id="tabMenu_Tab"
179
+ data-key="t5"
180
+ data-selector-id="tab"
181
+ data-test-id="tabMenu_Tab"
182
+ role="link"
183
+ tabindex="0"
184
+ >
185
+ <div
186
+ class="textContainer flex cover rowdir both"
187
+ data-id="containerComponent"
188
+ data-selector-id="container"
189
+ data-test-id="containerComponent"
190
+ >
191
+ <span>
192
+
193
+ </span>
194
+ </div>
195
+ </div>
196
+ </DocumentFragment>
197
+ `;
198
+
199
+ exports[`Tab variant-based label rendering renderIcon overrides iconName 1`] = `
200
+ <DocumentFragment>
201
+ <div
202
+ aria-controls="t4"
203
+ aria-label="Home"
204
+ aria-selected="false"
205
+ class="tab horizontal basisAuto shrinkOff"
206
+ data-id="tabMenu_Tab"
207
+ data-key="t4"
208
+ data-selector-id="tab"
209
+ data-test-id="tabMenu_Tab"
210
+ role="link"
211
+ tabindex="0"
212
+ >
213
+ <div
214
+ class="textContainer flex cover rowdir both"
215
+ data-id="containerComponent"
216
+ data-selector-id="container"
217
+ data-test-id="containerComponent"
218
+ >
219
+ <span>
220
+
221
+ </span>
222
+ <div
223
+ class="tabText grow basisAuto shrinkOff"
224
+ data-id="boxComponent"
225
+ data-selector-id="box"
226
+ data-test-id="boxComponent"
227
+ >
228
+ Home
229
+ </div>
230
+ </div>
231
+ </div>
232
+ </DocumentFragment>
233
+ `;
234
+
235
+ exports[`Tab variant-based label rendering variant="icon" renders icon and suppresses text label 1`] = `
236
+ <DocumentFragment>
237
+ <div
238
+ aria-controls="t2"
239
+ aria-label="Home"
240
+ aria-selected="false"
241
+ class="tab horizontal basisAuto shrinkOff"
242
+ data-id="tabMenu_Tab"
243
+ data-key="t2"
244
+ data-selector-id="tab"
245
+ data-test-id="tabMenu_Tab"
246
+ role="link"
247
+ tabindex="0"
248
+ >
249
+ <div
250
+ class="textContainer flex cover rowdir both"
251
+ data-id="containerComponent"
252
+ data-selector-id="container"
253
+ data-test-id="containerComponent"
254
+ >
255
+ <i
256
+ aria-hidden="true"
257
+ class="zd_font_icons basic icon-menu rtl "
258
+ data-id="fontIcon"
259
+ data-selector-id="fontIcon"
260
+ data-test-id="fontIcon"
261
+ />
262
+ </div>
263
+ </div>
264
+ </DocumentFragment>
265
+ `;
266
+
267
+ exports[`Tab variant-based label rendering variant="iconWithText" renders icon followed by text 1`] = `
268
+ <DocumentFragment>
269
+ <div
270
+ aria-controls="t3"
271
+ aria-label="Home"
272
+ aria-selected="false"
273
+ class="tab horizontal basisAuto shrinkOff"
274
+ data-id="tabMenu_Tab"
275
+ data-key="t3"
276
+ data-selector-id="tab"
277
+ data-test-id="tabMenu_Tab"
278
+ role="link"
279
+ tabindex="0"
280
+ >
281
+ <div
282
+ class="textContainer flex cover rowdir both"
283
+ data-id="containerComponent"
284
+ data-selector-id="container"
285
+ data-test-id="containerComponent"
286
+ >
287
+ <i
288
+ aria-hidden="true"
289
+ class="zd_font_icons basic icon-menu rtl "
290
+ data-id="fontIcon"
291
+ data-selector-id="fontIcon"
292
+ data-test-id="fontIcon"
293
+ />
294
+ <div
295
+ class="tabText grow basisAuto shrinkOff"
296
+ data-id="boxComponent"
297
+ data-selector-id="box"
298
+ data-test-id="boxComponent"
299
+ >
300
+ Home
301
+ </div>
302
+ </div>
303
+ </div>
304
+ </DocumentFragment>
305
+ `;
306
+
307
+ exports[`Tab variant-based label rendering variant="text" renders text only 1`] = `
308
+ <DocumentFragment>
309
+ <div
310
+ aria-controls="t1"
311
+ aria-label="Home"
312
+ aria-selected="false"
313
+ class="tab horizontal basisAuto shrinkOff"
314
+ data-id="tabMenu_Tab"
315
+ data-key="t1"
316
+ data-selector-id="tab"
317
+ data-test-id="tabMenu_Tab"
318
+ role="link"
319
+ tabindex="0"
320
+ >
321
+ <div
322
+ class="textContainer flex cover rowdir both"
323
+ data-id="containerComponent"
324
+ data-selector-id="container"
325
+ data-test-id="containerComponent"
326
+ >
327
+ <div
328
+ class="tabText grow basisAuto shrinkOff"
329
+ data-id="boxComponent"
330
+ data-selector-id="box"
331
+ data-test-id="boxComponent"
332
+ >
333
+ Home
334
+ </div>
335
+ </div>
336
+ </div>
337
+ </DocumentFragment>
338
+ `;
@@ -9,7 +9,8 @@ var Tab_defaultProps = {
9
9
  contentAlign: 'both',
10
10
  contentAlignBox: 'row',
11
11
  customProps: {},
12
- dataSelectorId: 'tab'
12
+ dataSelectorId: 'tab',
13
+ variant: 'text'
13
14
  };
14
15
  exports.Tab_defaultProps = Tab_defaultProps;
15
16
  var TabContent_defaultProps = {
@@ -45,7 +46,7 @@ var Tabs_defaultProps = {
45
46
  searchBoxSize: 'small',
46
47
  searchErrorText: 'No results',
47
48
  placeHolderText: 'Search',
48
- isAbsolutePositioningNeeded: true,
49
+ isAbsolutePositioningNeeded: false,
49
50
  isRestrictScroll: false,
50
51
  moreContainerClass: ''
51
52
  };
@@ -7,8 +7,12 @@ exports.Tabs_propTypes = exports.Tab_propTypes = exports.TabWrapper_propTypes =
7
7
 
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
 
10
+ var _tabConfigs = require("../utils/tabConfigs");
11
+
10
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
11
13
 
14
+ var renderSlotType = _propTypes["default"].oneOfType([_propTypes["default"].node, _propTypes["default"].func]);
15
+
12
16
  var Tab_propTypes = {
13
17
  activeClass: _propTypes["default"].string,
14
18
  align: _propTypes["default"].oneOf(['vertical', 'horizontal']),
@@ -36,7 +40,14 @@ var Tab_propTypes = {
36
40
  contentAlignBox: _propTypes["default"].oneOf(['row', 'column', 'row-reverse', 'column-reverse']),
37
41
  customProps: _propTypes["default"].object,
38
42
  isVirtual: _propTypes["default"].bool,
39
- dataSelectorId: _propTypes["default"].string
43
+ dataSelectorId: _propTypes["default"].string,
44
+ variant: _propTypes["default"].oneOf(Object.values(_tabConfigs.VARIANT)),
45
+ iconPlacement: _propTypes["default"].string,
46
+ iconName: _propTypes["default"].string,
47
+ iconSize: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
48
+ renderIcon: renderSlotType,
49
+ renderBefore: renderSlotType,
50
+ renderAfter: renderSlotType
40
51
  };
41
52
  exports.Tab_propTypes = Tab_propTypes;
42
53
  var TabContent_propTypes = {
@@ -95,7 +106,7 @@ var Tabs_propTypes = {
95
106
  showTitleInMoreOptions: _propTypes["default"].bool,
96
107
  style: _propTypes["default"].object,
97
108
  togglePopup: _propTypes["default"].func,
98
- type: _propTypes["default"].oneOf(['alpha', 'beta', 'delta']),
109
+ type: _propTypes["default"].oneOf(['alpha', 'beta', 'delta', 'default']),
99
110
  getTargetRef: _propTypes["default"].func,
100
111
  containerClass: _propTypes["default"].string,
101
112
  customProps: _propTypes["default"].shape({
@@ -128,7 +139,7 @@ var TabWrapper_propTypes = {
128
139
  needPadding: _propTypes["default"].bool,
129
140
  needTabBorder: _propTypes["default"].bool,
130
141
  onSelect: _propTypes["default"].func,
131
- type: _propTypes["default"].oneOf(['alpha', 'beta', 'delta']),
142
+ type: _propTypes["default"].oneOf(['alpha', 'beta', 'delta', 'default']),
132
143
  dataSelectorId: _propTypes["default"].string
133
144
  };
134
145
  exports.TabWrapper_propTypes = TabWrapper_propTypes;