@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.
- package/README.md +20 -3
- package/assets/Appearance/dark/mode/Component_DarkMode.module.css +4 -4
- package/assets/Appearance/dark/themes/blue/blue_componentsCTA_DarkModifyCategory.module.css +14 -0
- package/assets/Appearance/dark/themes/green/green_componentsCTA_DarkModifyCategory.module.css +14 -0
- package/assets/Appearance/dark/themes/orange/orange_componentsCTA_DarkModifyCategory.module.css +14 -0
- package/assets/Appearance/dark/themes/red/red_componentsCTA_DarkModifyCategory.module.css +14 -0
- package/assets/Appearance/dark/themes/yellow/yellow_componentsCTA_DarkModifyCategory.module.css +14 -0
- package/assets/Appearance/light/mode/Component_LightMode.module.css +6 -6
- package/assets/Appearance/light/themes/blue/blue_componentsCTA_LightModifyCategory.module.css +14 -0
- package/assets/Appearance/light/themes/green/green_componentsCTA_LightModifyCategory.module.css +14 -0
- package/assets/Appearance/light/themes/orange/orange_componentsCTA_LightModifyCategory.module.css +14 -0
- package/assets/Appearance/light/themes/red/red_componentsCTA_LightModifyCategory.module.css +14 -0
- package/assets/Appearance/light/themes/yellow/yellow_componentsCTA_LightModifyCategory.module.css +14 -0
- package/assets/Appearance/pureDark/mode/Component_PureDarkMode.module.css +3 -3
- package/assets/Appearance/pureDark/themes/blue/blue_componentsCTA_PureDarkModifyCategory.module.css +14 -0
- package/assets/Appearance/pureDark/themes/green/green_componentsCTA_PureDarkModifyCategory.module.css +14 -0
- package/assets/Appearance/pureDark/themes/orange/orange_componentsCTA_PureDarkModifyCategory.module.css +14 -0
- package/assets/Appearance/pureDark/themes/red/red_componentsCTA_PureDarkModifyCategory.module.css +14 -0
- package/assets/Appearance/pureDark/themes/yellow/yellow_componentsCTA_PureDarkModifyCategory.module.css +14 -0
- package/cbt.config.js +12 -3
- package/es/Avatar/Avatar.js +1 -2
- package/es/Button/css/cssJSLogic.js +4 -5
- package/es/DateTime/DateTime.js +3 -6
- package/es/DateTime/DateWidget.js +34 -11
- package/es/DateTime/YearView.js +5 -6
- package/es/DateTime/common.js +2 -9
- package/es/DateTime/dateFormatUtils/dateFormat.js +55 -76
- package/es/DateTime/dateFormatUtils/index.js +7 -12
- package/es/DateTime/dateFormatUtils/timeChange.js +3 -4
- package/es/DateTime/dateFormatUtils/yearChange.js +3 -4
- package/es/DropBox/DropBoxElement/css/cssJSLogic.js +5 -6
- package/es/Layout/utils.js +1 -2
- package/es/ListItem/ListContainer.js +4 -5
- package/es/Modal/Portal/Portal.js +4 -5
- package/es/MultiSelect/AdvancedGroupMultiSelect.js +91 -103
- package/es/MultiSelect/AdvancedMultiSelect.js +74 -80
- package/es/MultiSelect/MultiSelect.js +4 -13
- package/es/MultiSelect/Suggestions.js +14 -17
- package/es/Popup/Popup.js +1 -4
- package/es/Provider/IdProvider.js +4 -5
- package/es/Provider/LibraryContext.js +15 -12
- package/es/Provider/NumberGenerator/NumberGenerator.js +15 -17
- package/es/Provider/ZindexProvider.js +4 -5
- package/es/Responsive/CustomResponsive.js +8 -11
- package/es/Responsive/ResizeComponent.js +1 -3
- package/es/Responsive/Responsive.js +9 -12
- package/es/Responsive/sizeObservers.js +1 -5
- package/es/ResponsiveDropBox/ResponsiveDropBox.js +10 -14
- package/es/Select/GroupSelect.js +98 -103
- package/es/Select/Select.js +110 -116
- package/es/Select/SelectWithAvatar.js +91 -95
- package/es/Select/SelectWithIcon.js +104 -109
- package/es/Select/__tests__/Select.spec.js +6 -9
- package/es/Tab/Tab.js +90 -40
- package/es/Tab/Tab.module.css +25 -0
- package/es/Tab/TabContent.js +16 -19
- package/es/Tab/TabContentWrapper.js +19 -22
- package/es/Tab/TabWrapper.js +15 -16
- package/es/Tab/Tabs.js +105 -81
- package/es/Tab/Tabs.module.css +48 -3
- package/es/Tab/__tests__/Tab.spec.js +112 -0
- package/es/Tab/__tests__/__snapshots__/Tab.spec.js.snap +316 -0
- package/es/Tab/props/defaultProps.js +3 -2
- package/es/Tab/props/propTypes.js +12 -3
- package/es/Tab/utils/tabConfigs.js +5 -0
- package/es/Typography/css/cssJSLogic.js +4 -5
- package/es/VelocityAnimation/VelocityAnimationGroup/VelocityAnimationGroup.js +1 -2
- package/es/utils/Common.js +10 -31
- package/es/utils/datetime/common.js +12 -9
- package/es/utils/dropDownUtils.js +7 -11
- package/es/utils/getInitial.js +1 -3
- package/es/v1/Button/css/cssJSLogic.js +4 -8
- package/es/v1/Label/css/cssJSLogic.js +4 -5
- package/es/v1/Switch/css/cssJSLogic.js +4 -5
- package/es/v1/helpers/colorHelpers/colorHelper.js +28 -39
- package/lib/DateTime/DateWidget.js +33 -6
- package/lib/Provider/LibraryContext.js +5 -1
- package/lib/Tab/Tab.js +62 -9
- package/lib/Tab/Tab.module.css +25 -0
- package/lib/Tab/Tabs.js +34 -3
- package/lib/Tab/Tabs.module.css +48 -3
- package/lib/Tab/__tests__/Tab.spec.js +115 -0
- package/lib/Tab/__tests__/__snapshots__/Tab.spec.js.snap +316 -0
- package/lib/Tab/props/defaultProps.js +3 -2
- package/lib/Tab/props/propTypes.js +14 -3
- package/lib/Tab/utils/tabConfigs.js +7 -1
- package/lib/utils/datetime/common.js +10 -2
- 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 =
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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 =
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
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;
|
|
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:
|
|
341
|
-
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:
|
|
884
|
-
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(
|
|
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
|
-
},
|
|
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;
|
package/lib/Tab/Tab.module.css
CHANGED
|
@@ -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:
|
|
745
|
+
customListItem: effectiveMenuItemClass
|
|
715
746
|
},
|
|
716
747
|
target: "self",
|
|
717
748
|
dataId: "".concat(dataId, "_Tab")
|
package/lib/Tab/Tabs.module.css
CHANGED
|
@@ -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
|
});
|