@zohodesk/components 1.0.0-temp-252.4 → 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 (88) 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/Avatar/Avatar.js +1 -2
  22. package/es/Button/css/cssJSLogic.js +4 -5
  23. package/es/DateTime/DateTime.js +3 -6
  24. package/es/DateTime/DateWidget.js +34 -11
  25. package/es/DateTime/YearView.js +5 -6
  26. package/es/DateTime/common.js +2 -9
  27. package/es/DateTime/dateFormatUtils/dateFormat.js +55 -76
  28. package/es/DateTime/dateFormatUtils/index.js +7 -12
  29. package/es/DateTime/dateFormatUtils/timeChange.js +3 -4
  30. package/es/DateTime/dateFormatUtils/yearChange.js +3 -4
  31. package/es/DropBox/DropBoxElement/css/cssJSLogic.js +5 -6
  32. package/es/Layout/utils.js +1 -2
  33. package/es/ListItem/ListContainer.js +4 -5
  34. package/es/Modal/Portal/Portal.js +4 -5
  35. package/es/MultiSelect/AdvancedGroupMultiSelect.js +91 -103
  36. package/es/MultiSelect/AdvancedMultiSelect.js +74 -80
  37. package/es/MultiSelect/MultiSelect.js +4 -13
  38. package/es/MultiSelect/Suggestions.js +14 -17
  39. package/es/Popup/Popup.js +1 -4
  40. package/es/Provider/IdProvider.js +4 -5
  41. package/es/Provider/LibraryContext.js +15 -12
  42. package/es/Provider/NumberGenerator/NumberGenerator.js +15 -17
  43. package/es/Provider/ZindexProvider.js +4 -5
  44. package/es/Responsive/CustomResponsive.js +8 -11
  45. package/es/Responsive/ResizeComponent.js +1 -3
  46. package/es/Responsive/Responsive.js +9 -12
  47. package/es/Responsive/sizeObservers.js +1 -5
  48. package/es/ResponsiveDropBox/ResponsiveDropBox.js +10 -14
  49. package/es/Select/GroupSelect.js +98 -103
  50. package/es/Select/Select.js +110 -116
  51. package/es/Select/SelectWithAvatar.js +91 -95
  52. package/es/Select/SelectWithIcon.js +104 -109
  53. package/es/Select/__tests__/Select.spec.js +6 -9
  54. package/es/Tab/Tab.js +90 -40
  55. package/es/Tab/Tab.module.css +25 -0
  56. package/es/Tab/TabContent.js +16 -19
  57. package/es/Tab/TabContentWrapper.js +19 -22
  58. package/es/Tab/TabWrapper.js +15 -16
  59. package/es/Tab/Tabs.js +105 -81
  60. package/es/Tab/Tabs.module.css +48 -3
  61. package/es/Tab/__tests__/Tab.spec.js +112 -0
  62. package/es/Tab/__tests__/__snapshots__/Tab.spec.js.snap +316 -0
  63. package/es/Tab/props/defaultProps.js +3 -2
  64. package/es/Tab/props/propTypes.js +12 -3
  65. package/es/Tab/utils/tabConfigs.js +5 -0
  66. package/es/Typography/css/cssJSLogic.js +4 -5
  67. package/es/VelocityAnimation/VelocityAnimationGroup/VelocityAnimationGroup.js +1 -2
  68. package/es/utils/Common.js +10 -31
  69. package/es/utils/datetime/common.js +12 -9
  70. package/es/utils/dropDownUtils.js +7 -11
  71. package/es/utils/getInitial.js +1 -3
  72. package/es/v1/Button/css/cssJSLogic.js +4 -8
  73. package/es/v1/Label/css/cssJSLogic.js +4 -5
  74. package/es/v1/Switch/css/cssJSLogic.js +4 -5
  75. package/es/v1/helpers/colorHelpers/colorHelper.js +28 -39
  76. package/lib/DateTime/DateWidget.js +33 -6
  77. package/lib/Provider/LibraryContext.js +5 -1
  78. package/lib/Tab/Tab.js +62 -9
  79. package/lib/Tab/Tab.module.css +25 -0
  80. package/lib/Tab/Tabs.js +34 -3
  81. package/lib/Tab/Tabs.module.css +48 -3
  82. package/lib/Tab/__tests__/Tab.spec.js +115 -0
  83. package/lib/Tab/__tests__/__snapshots__/Tab.spec.js.snap +316 -0
  84. package/lib/Tab/props/defaultProps.js +3 -2
  85. package/lib/Tab/props/propTypes.js +14 -3
  86. package/lib/Tab/utils/tabConfigs.js +7 -1
  87. package/lib/utils/datetime/common.js +10 -2
  88. package/package.json +12 -11
@@ -48,37 +48,27 @@ const toBorderIntensity = (tone, hasState, isLighter) => {
48
48
  return `${tone}-${isLighter ? intensity.borderLight : intensity.base}`;
49
49
  };
50
50
 
51
- export const getBgClass = _ref => {
52
- let {
53
- state,
54
- tone,
55
- isLighter
56
- } = _ref;
57
- return paletteBgStyle[withState(state, `bg-${toBgIntensity(tone, !!state, isLighter)}`)];
58
- };
59
- export const getTextClass = _ref2 => {
60
- let {
61
- state,
62
- textTone
63
- } = _ref2;
64
- return paletteTextStyle[withState(state, `text-${toTextIntensity(textTone, !!state)}`)];
65
- };
66
- export const getBorderClass = _ref3 => {
67
- let {
68
- state,
69
- tone,
70
- isLighter
71
- } = _ref3;
72
- return paletteBorderStyle[withState(state, `border-${toBorderIntensity(tone, !!state, isLighter)}`)];
73
- };
74
-
75
- const buildPaletteClasses = (config, _ref4) => {
76
- let {
77
- bgAppearance,
78
- borderAppearance,
79
- paletteShade,
80
- isSelected
81
- } = _ref4;
51
+ export const getBgClass = ({
52
+ state,
53
+ tone,
54
+ isLighter
55
+ }) => paletteBgStyle[withState(state, `bg-${toBgIntensity(tone, !!state, isLighter)}`)];
56
+ export const getTextClass = ({
57
+ state,
58
+ textTone
59
+ }) => paletteTextStyle[withState(state, `text-${toTextIntensity(textTone, !!state)}`)];
60
+ export const getBorderClass = ({
61
+ state,
62
+ tone,
63
+ isLighter
64
+ }) => paletteBorderStyle[withState(state, `border-${toBorderIntensity(tone, !!state, isLighter)}`)];
65
+
66
+ const buildPaletteClasses = (config, {
67
+ bgAppearance,
68
+ borderAppearance,
69
+ paletteShade,
70
+ isSelected
71
+ }) => {
82
72
  const {
83
73
  tone,
84
74
  textTone,
@@ -159,14 +149,13 @@ const buildPaletteClasses = (config, _ref4) => {
159
149
  };
160
150
  };
161
151
 
162
- const getPaletteClasses = _ref5 => {
163
- let {
164
- palette,
165
- bgAppearance,
166
- borderAppearance,
167
- paletteShade,
168
- isSelected
169
- } = _ref5;
152
+ const getPaletteClasses = ({
153
+ palette,
154
+ bgAppearance,
155
+ borderAppearance,
156
+ paletteShade,
157
+ isSelected
158
+ }) => {
170
159
  const config = PALETTE_CONFIG[palette];
171
160
  return config ? buildPaletteClasses(config, {
172
161
  bgAppearance,
@@ -102,6 +102,7 @@ var DateWidgetComponent = /*#__PURE__*/function (_React$Component) {
102
102
  _this.handleDateIconClick = _this.handleDateIconClick.bind(_assertThisInitialized(_this));
103
103
  _this.handleSelectionRangeDetails = _this.handleSelectionRangeDetails.bind(_assertThisInitialized(_this));
104
104
  _this.handleBlurSelectionRange = _this.handleBlurSelectionRange.bind(_assertThisInitialized(_this));
105
+ _this.getI18nMonthLabels = _this.getI18nMonthLabels.bind(_assertThisInitialized(_this));
105
106
  _this.state = {
106
107
  selected: '',
107
108
  displayText: '',
@@ -313,6 +314,15 @@ var DateWidgetComponent = /*#__PURE__*/function (_React$Component) {
313
314
 
314
315
  !isOpenOnly && togglePopup(e, "".concat(defaultPosition, "Right"));
315
316
  }
317
+ }, {
318
+ key: "getI18nMonthLabels",
319
+ value: function getI18nMonthLabels() {
320
+ var i18nKeys = this.props.i18nKeys;
321
+ return {
322
+ i18nShortMonths: i18nKeys.monthNamesShort || _constants.i18nShortMonths,
323
+ i18nMonths: i18nKeys.monthNames || _constants.i18nMonths
324
+ };
325
+ }
316
326
  }, {
317
327
  key: "handleSelectionRangeDetails",
318
328
  value: function handleSelectionRangeDetails(props) {
@@ -328,7 +338,12 @@ var DateWidgetComponent = /*#__PURE__*/function (_React$Component) {
328
338
  hour = _this$state2.hour,
329
339
  minute = _this$state2.minute,
330
340
  noon = _this$state2.noon;
331
- var selected = value === _constants.INVALID_DATE ? '' : value; //New UI Changes
341
+ var selected = value === _constants.INVALID_DATE ? '' : value;
342
+
343
+ var _this$getI18nMonthLab = this.getI18nMonthLabels(),
344
+ localizedShortMonths = _this$getI18nMonthLab.i18nShortMonths,
345
+ localizedMonths = _this$getI18nMonthLab.i18nMonths; //New UI Changes
346
+
332
347
 
333
348
  var dateFormatDetails = (0, _dateFormat.getDateFormatDetails)(dateFormat, {
334
349
  isHideCurrentYear: false,
@@ -337,8 +352,8 @@ var DateWidgetComponent = /*#__PURE__*/function (_React$Component) {
337
352
  isDateTime: isDateTime
338
353
  });
339
354
  var dateFormatSelection = (0, _dateFormat.getDateFormatSelection)(dateFormatDetails, isDateTime, {
340
- i18nShortMonths: _constants.i18nShortMonths,
341
- i18nMonths: _constants.i18nMonths,
355
+ i18nShortMonths: localizedShortMonths,
356
+ i18nMonths: localizedMonths,
342
357
  selectedValue: selected,
343
358
  day: day,
344
359
  month: month,
@@ -365,6 +380,11 @@ var DateWidgetComponent = /*#__PURE__*/function (_React$Component) {
365
380
  value = props.value,
366
381
  is24Hour = props.is24Hour,
367
382
  isHideCurrentYear = props.isHideCurrentYear;
383
+
384
+ var _this$getI18nMonthLab2 = this.getI18nMonthLabels(),
385
+ localizedShortMonths = _this$getI18nMonthLab2.i18nShortMonths,
386
+ localizedMonths = _this$getI18nMonthLab2.i18nMonths;
387
+
368
388
  var dateFormatDetails = (0, _dateFormat.getDateFormatDetails)(dateFormat, {
369
389
  isHideCurrentYear: isHideCurrentYear,
370
390
  value: value,
@@ -383,7 +403,10 @@ var DateWidgetComponent = /*#__PURE__*/function (_React$Component) {
383
403
  format = "".concat(newDateFormat, " ").concat(is24Hour ? 'HH:mm' : 'hh:mm A');
384
404
  }
385
405
 
386
- displayText = (0, _common.formatDate)(convertedValue, format);
406
+ displayText = (0, _common.formatDate)(convertedValue, format, {
407
+ i18nShortMonths: localizedShortMonths,
408
+ i18nMonths: localizedMonths
409
+ });
387
410
  }
388
411
 
389
412
  return {
@@ -849,6 +872,10 @@ var DateWidgetComponent = /*#__PURE__*/function (_React$Component) {
849
872
  isPopupOpen = _this$props9.isPopupOpen;
850
873
 
851
874
  if (isDateEdited || isFocused || isPopupReady || isPopupOpen) {
875
+ var _this$getI18nMonthLab3 = this.getI18nMonthLabels(),
876
+ localizedShortMonths = _this$getI18nMonthLab3.i18nShortMonths,
877
+ localizedMonths = _this$getI18nMonthLab3.i18nMonths;
878
+
852
879
  var _getDateDetails2 = (0, _dateFormat.getDateDetails)(selected, {
853
880
  day: day,
854
881
  month: month,
@@ -880,8 +907,8 @@ var DateWidgetComponent = /*#__PURE__*/function (_React$Component) {
880
907
  minute: selectedMinute,
881
908
  noon: selectedNoon
882
909
  }, dateFormatDetails, isDateTime, {
883
- i18nShortMonths: _constants.i18nShortMonths,
884
- i18nMonths: _constants.i18nMonths,
910
+ i18nShortMonths: localizedShortMonths,
911
+ i18nMonths: localizedMonths,
885
912
  is24Hour: is24Hour
886
913
  });
887
914
  return dateTimeString;
@@ -48,7 +48,8 @@ var LibraryContextProvider = function LibraryContextProvider(_ref) {
48
48
  shouldStrikeThroughDisabledButton = _ref.shouldStrikeThroughDisabledButton,
49
49
  labelRequiredType = _ref.labelRequiredType,
50
50
  shouldHighlightRequiredLabel = _ref.shouldHighlightRequiredLabel,
51
- children = _ref.children;
51
+ children = _ref.children,
52
+ buttonComponentVersion = _ref.buttonComponentVersion;
52
53
 
53
54
  var _useState = (0, _react.useState)({
54
55
  isReducedMotion: isReducedMotion,
@@ -57,6 +58,7 @@ var LibraryContextProvider = function LibraryContextProvider(_ref) {
57
58
  hasTagColorInheritedToText: hasTagColorInheritedToText,
58
59
  shouldIndicateSwitchState: shouldIndicateSwitchState,
59
60
  shouldStrikeThroughDisabledButton: shouldStrikeThroughDisabledButton,
61
+ buttonComponentVersion: buttonComponentVersion,
60
62
  labelRequiredType: labelRequiredType,
61
63
  shouldHighlightRequiredLabel: shouldHighlightRequiredLabel
62
64
  }),
@@ -85,6 +87,7 @@ LibraryContextProvider.propTypes = {
85
87
  direction: _propTypes["default"].string,
86
88
  shouldIndicateSwitchState: _propTypes["default"].bool,
87
89
  shouldStrikeThroughDisabledButton: _propTypes["default"].bool,
90
+ buttonComponentVersion: _propTypes["default"].oneOf(['default', 'v1']),
88
91
  labelRequiredType: _propTypes["default"].oneOf(['asterisk', 'text']),
89
92
  shouldHighlightRequiredLabel: _propTypes["default"].bool
90
93
  };
@@ -95,6 +98,7 @@ LibraryContextProvider.defaultProps = {
95
98
  hasTagColorInheritedToText: true,
96
99
  shouldIndicateSwitchState: false,
97
100
  shouldStrikeThroughDisabledButton: false,
101
+ buttonComponentVersion: 'v1',
98
102
  labelRequiredType: 'asterisk',
99
103
  shouldHighlightRequiredLabel: true
100
104
  };
package/lib/Tab/Tab.js CHANGED
@@ -21,6 +21,10 @@ var _tabConfigs = require("./utils/tabConfigs");
21
21
 
22
22
  var _TabModule = _interopRequireDefault(require("./Tab.module.css"));
23
23
 
24
+ var _utils = require("@zohodesk/utils");
25
+
26
+ var _icons = require("@zohodesk/icons");
27
+
24
28
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
25
29
 
26
30
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -41,6 +45,10 @@ var tabTypes = {
41
45
  delta: {
42
46
  active: 'deltaActive',
43
47
  tab: 'tabDelta'
48
+ },
49
+ "default": {
50
+ active: 'defaultActive',
51
+ tab: 'tabDefault'
44
52
  }
45
53
  };
46
54
 
@@ -71,7 +79,14 @@ function Tab(_ref) {
71
79
  isVirtual = _ref.isVirtual,
72
80
  contentAlign = _ref.contentAlign,
73
81
  contentAlignBox = _ref.contentAlignBox,
74
- customProps = _ref.customProps;
82
+ customProps = _ref.customProps,
83
+ variant = _ref.variant,
84
+ iconPlacement = _ref.iconPlacement,
85
+ iconName = _ref.iconName,
86
+ iconSize = _ref.iconSize,
87
+ renderIcon = _ref.renderIcon,
88
+ renderBefore = _ref.renderBefore,
89
+ renderAfter = _ref.renderAfter;
75
90
  var clickListener = (0, _react.useCallback)(function (event) {
76
91
  if (isLink && event && (event.metaKey || event.altKey || event.ctrlKey || event.shiftKey)) {
77
92
  event && event.stopPropagation();
@@ -93,8 +108,50 @@ function Tab(_ref) {
93
108
  }, [id, isVirtual]);
94
109
  var activeWithAppearance = (0, _Common.cs)([_TabModule["default"][styleContent.active], needBorder && !isAnimate && _TabModule["default"]["".concat(styleContent.active, "_border")]]);
95
110
  var activeClasses = (0, _Common.cs)([needAppearance && activeWithAppearance, activeClass]);
96
- var inActiveClasses = needAppearance && (0, _Common.cs)([_TabModule["default"][styleContent.tab], tabTypes[type] && _TabModule["default"]["".concat("".concat(type, "Hover"))]]);
97
- var tabClass = (0, _Common.cs)([_TabModule["default"].tab, _tabConfigs.TAB_DIRECTION_MAPPING[align] === 'column' ? _TabModule["default"].vertical : _TabModule["default"].horizontal, isDisabled && _TabModule["default"].disabled, needBorder && !isAnimate && needAppearance && _TabModule["default"].border, isActive ? activeClasses : inActiveClasses, className]);
111
+ var inActiveClasses = needAppearance && (0, _Common.cs)([_TabModule["default"][styleContent.tab], tabTypes[type] && _TabModule["default"]["".concat(type, "Hover")]]);
112
+ var tabClass = (0, _Common.cs)([_TabModule["default"].tab, _tabConfigs.TAB_DIRECTION_MAPPING[align] === 'column' ? _TabModule["default"].vertical : _TabModule["default"].horizontal, isDisabled && _TabModule["default"].disabled, needBorder && !isAnimate && needAppearance && _TabModule["default"].border, isActive ? activeClasses : inActiveClasses, variant === _tabConfigs.VARIANT.ICON && _TabModule["default"].tabVariantIcon, variant === _tabConfigs.VARIANT.ICON_WITH_TEXT && _TabModule["default"].tabVariantIconWithText, className]);
113
+
114
+ var _renderIconNode = function _renderIconNode() {
115
+ if ((0, _utils.isRenderable)(renderIcon)) {
116
+ return (0, _utils.renderNode)(renderIcon);
117
+ }
118
+
119
+ if (!iconName) {
120
+ return null;
121
+ }
122
+
123
+ return /*#__PURE__*/_react["default"].createElement(_icons.Icon, {
124
+ name: iconName,
125
+ size: iconSize
126
+ });
127
+ };
128
+
129
+ var _renderBeforeNode = function _renderBeforeNode() {
130
+ if (!(0, _utils.isRenderable)(renderBefore)) {
131
+ return null;
132
+ }
133
+
134
+ return (0, _utils.renderNode)(renderBefore);
135
+ };
136
+
137
+ var _renderAfterNode = function _renderAfterNode() {
138
+ if (!(0, _utils.isRenderable)(renderAfter)) {
139
+ return null;
140
+ }
141
+
142
+ return (0, _utils.renderNode)(renderAfter);
143
+ };
144
+
145
+ var _renderLabel = function _renderLabel() {
146
+ var showIcon = variant !== _tabConfigs.VARIANT.TEXT && ((0, _utils.isRenderable)(renderIcon) || iconName);
147
+ var showText = variant !== _tabConfigs.VARIANT.ICON && text !== undefined && text !== null;
148
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, showIcon ? _renderIconNode() : null, showText ? /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
149
+ flexible: true,
150
+ adjust: true,
151
+ className: _TabModule["default"].tabText
152
+ }, text) : null);
153
+ };
154
+
98
155
  return /*#__PURE__*/_react["default"].createElement(_Layout.Box, _extends({
99
156
  tourId: tourId,
100
157
  tagName: isLink ? 'a' : 'div',
@@ -118,13 +175,9 @@ function Tab(_ref) {
118
175
  alignBox: contentAlignBox,
119
176
  align: contentAlign,
120
177
  className: _TabModule["default"].textContainer
121
- }, text && /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
122
- flexible: true,
123
- adjust: true,
124
- className: _TabModule["default"].tabText
125
- }, text), children ? /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
178
+ }, _renderBeforeNode(), _renderLabel(), children ? /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
126
179
  shrink: true
127
- }, children) : null));
180
+ }, children) : null, _renderAfterNode()));
128
181
  }
129
182
 
130
183
  Tab.defaultProps = _defaultProps.Tab_defaultProps;
@@ -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
  });