@zohodesk/components 1.0.0-temp-256.1 → 1.0.0-temp-257.1

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 (91) hide show
  1. package/README.md +2 -19
  2. package/assets/Appearance/dark/mode/Component_DarkMode.module.css +0 -2
  3. package/assets/Appearance/dark/mode/Component_v1_DarkMode.module.css +5 -20
  4. package/assets/Appearance/dark/themes/blue/blue_componentsCTA_DarkModifyCategory.module.css +0 -1
  5. package/assets/Appearance/dark/themes/green/green_componentsCTA_DarkModifyCategory.module.css +0 -1
  6. package/assets/Appearance/dark/themes/orange/orange_componentsCTA_DarkModifyCategory.module.css +0 -1
  7. package/assets/Appearance/dark/themes/red/red_componentsCTA_DarkModifyCategory.module.css +0 -1
  8. package/assets/Appearance/dark/themes/yellow/yellow_componentsCTA_DarkModifyCategory.module.css +0 -1
  9. package/assets/Appearance/light/mode/Component_LightMode.module.css +0 -2
  10. package/assets/Appearance/light/mode/Component_v1_LightMode.module.css +5 -20
  11. package/assets/Appearance/light/themes/blue/blue_componentsCTA_LightModifyCategory.module.css +0 -1
  12. package/assets/Appearance/light/themes/green/green_componentsCTA_LightModifyCategory.module.css +0 -1
  13. package/assets/Appearance/light/themes/orange/orange_componentsCTA_LightModifyCategory.module.css +0 -1
  14. package/assets/Appearance/light/themes/red/red_componentsCTA_LightModifyCategory.module.css +0 -1
  15. package/assets/Appearance/light/themes/yellow/yellow_componentsCTA_LightModifyCategory.module.css +0 -1
  16. package/assets/Appearance/pureDark/mode/Component_PureDarkMode.module.css +0 -2
  17. package/assets/Appearance/pureDark/mode/Component_v1_PureDarkMode.module.css +5 -20
  18. package/assets/Appearance/pureDark/themes/blue/blue_componentsCTA_PureDarkModifyCategory.module.css +0 -1
  19. package/assets/Appearance/pureDark/themes/green/green_componentsCTA_PureDarkModifyCategory.module.css +0 -1
  20. package/assets/Appearance/pureDark/themes/orange/orange_componentsCTA_PureDarkModifyCategory.module.css +0 -1
  21. package/assets/Appearance/pureDark/themes/red/red_componentsCTA_PureDarkModifyCategory.module.css +0 -1
  22. package/assets/Appearance/pureDark/themes/yellow/yellow_componentsCTA_PureDarkModifyCategory.module.css +0 -1
  23. package/es/ListItem/ListItem.js +1 -2
  24. package/es/ListItem/ListItemWithAvatar.js +3 -9
  25. package/es/ListItem/ListItemWithCheckBox.js +3 -9
  26. package/es/ListItem/ListItemWithIcon.js +2 -8
  27. package/es/ListItem/ListItemWithRadio.js +3 -9
  28. package/es/ListItem/__tests__/ListItemWithAvatar.spec.js +0 -19
  29. package/es/ListItem/__tests__/ListItemWithCheckBox.spec.js +0 -19
  30. package/es/ListItem/__tests__/ListItemWithIcon.spec.js +0 -17
  31. package/es/ListItem/__tests__/ListItemWithRadio.spec.js +0 -19
  32. package/es/ListItem/__tests__/__snapshots__/ListItemWithAvatar.spec.js.snap +0 -108
  33. package/es/ListItem/__tests__/__snapshots__/ListItemWithCheckBox.spec.js.snap +0 -212
  34. package/es/ListItem/__tests__/__snapshots__/ListItemWithIcon.spec.js.snap +0 -108
  35. package/es/ListItem/__tests__/__snapshots__/ListItemWithRadio.spec.js.snap +0 -210
  36. package/es/ListItem/props/defaultProps.js +0 -1
  37. package/es/ListItem/props/propTypes.js +3 -12
  38. package/es/Tab/Tab.js +13 -56
  39. package/es/Tab/Tab.module.css +4 -72
  40. package/es/Tab/TabWrapper.js +2 -6
  41. package/es/Tab/Tabs.js +14 -60
  42. package/es/Tab/Tabs.module.css +15 -84
  43. package/es/Tab/__tests__/Tab.spec.js +0 -87
  44. package/es/Tab/__tests__/Tabs.spec.js +0 -11
  45. package/es/Tab/__tests__/__snapshots__/Tab.spec.js.snap +0 -287
  46. package/es/Tab/__tests__/__snapshots__/Tabs.spec.js.snap +0 -32
  47. package/es/Tab/props/defaultProps.js +3 -10
  48. package/es/Tab/props/propTypes.js +4 -26
  49. package/es/Tab/utils/tabConfigs.js +0 -11
  50. package/es/v1/Button/Button.js +163 -106
  51. package/es/v1/Button/css/Button_v1.module.css +28 -16
  52. package/es/v1/Button/css/cssJSLogic.js +18 -3
  53. package/es/v1/Button/props/propTypes.js +14 -3
  54. package/es/v1/helpers/colorHelpers/background/backgroundColor.module.css +35 -35
  55. package/es/v1/helpers/colorHelpers/border/borderColor.module.css +20 -20
  56. package/es/v1/helpers/colorHelpers/text/textColor.module.css +35 -35
  57. package/lib/ListItem/ListItem.js +1 -3
  58. package/lib/ListItem/ListItemWithAvatar.js +3 -11
  59. package/lib/ListItem/ListItemWithCheckBox.js +3 -11
  60. package/lib/ListItem/ListItemWithIcon.js +2 -8
  61. package/lib/ListItem/ListItemWithRadio.js +3 -11
  62. package/lib/ListItem/__tests__/ListItemWithAvatar.spec.js +0 -23
  63. package/lib/ListItem/__tests__/ListItemWithCheckBox.spec.js +0 -23
  64. package/lib/ListItem/__tests__/ListItemWithIcon.spec.js +0 -21
  65. package/lib/ListItem/__tests__/ListItemWithRadio.spec.js +0 -23
  66. package/lib/ListItem/__tests__/__snapshots__/ListItemWithAvatar.spec.js.snap +0 -108
  67. package/lib/ListItem/__tests__/__snapshots__/ListItemWithCheckBox.spec.js.snap +0 -212
  68. package/lib/ListItem/__tests__/__snapshots__/ListItemWithIcon.spec.js.snap +0 -108
  69. package/lib/ListItem/__tests__/__snapshots__/ListItemWithRadio.spec.js.snap +0 -210
  70. package/lib/ListItem/props/defaultProps.js +0 -1
  71. package/lib/ListItem/props/propTypes.js +4 -12
  72. package/lib/Tab/Tab.js +11 -59
  73. package/lib/Tab/Tab.module.css +4 -72
  74. package/lib/Tab/TabWrapper.js +2 -6
  75. package/lib/Tab/Tabs.js +11 -57
  76. package/lib/Tab/Tabs.module.css +15 -84
  77. package/lib/Tab/__tests__/Tab.spec.js +0 -88
  78. package/lib/Tab/__tests__/Tabs.spec.js +0 -12
  79. package/lib/Tab/__tests__/__snapshots__/Tab.spec.js.snap +0 -287
  80. package/lib/Tab/__tests__/__snapshots__/Tabs.spec.js.snap +0 -32
  81. package/lib/Tab/props/defaultProps.js +3 -10
  82. package/lib/Tab/props/propTypes.js +4 -28
  83. package/lib/Tab/utils/tabConfigs.js +2 -15
  84. package/lib/v1/Button/Button.js +182 -118
  85. package/lib/v1/Button/css/Button_v1.module.css +28 -16
  86. package/lib/v1/Button/css/cssJSLogic.js +19 -7
  87. package/lib/v1/Button/props/propTypes.js +14 -3
  88. package/lib/v1/helpers/colorHelpers/background/backgroundColor.module.css +35 -35
  89. package/lib/v1/helpers/colorHelpers/border/borderColor.module.css +20 -20
  90. package/lib/v1/helpers/colorHelpers/text/textColor.module.css +35 -35
  91. package/package.json +7 -7
@@ -5,7 +5,7 @@ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" =
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports["default"] = void 0;
8
+ exports["default"] = exports.ButtonPresentational = void 0;
9
9
 
10
10
  var _cssUtility = require("@dot-system/css-utility");
11
11
 
@@ -17,24 +17,24 @@ var _Icon = _interopRequireDefault(require("@zohodesk/icons/es/Icon"));
17
17
 
18
18
  var _Flex = _interopRequireDefault(require("@zohodesk/layout/es/Flex/Flex"));
19
19
 
20
- var _Typography = _interopRequireDefault(require("../../Typography/Typography"));
21
-
22
20
  var _renderNode = _interopRequireWildcard(require("@zohodesk/utils/es/renderNode"));
23
21
 
24
- var _propTypes = _interopRequireDefault(require("./props/propTypes"));
25
-
26
- var _defaultProps = _interopRequireDefault(require("./props/defaultProps"));
27
-
28
22
  var _constants = require("@zohodesk/dotkit/es/utils/constants");
29
23
 
30
24
  var _constants2 = require("./constants");
31
25
 
26
+ var _Typography = _interopRequireDefault(require("../../Typography/Typography"));
27
+
32
28
  var _Loader = _interopRequireDefault(require("../shared/Loader/Loader"));
33
29
 
34
30
  var _SuccessTick = _interopRequireDefault(require("../shared/SuccessTick/SuccessTick"));
35
31
 
36
32
  var _cssJSLogic = _interopRequireDefault(require("./css/cssJSLogic"));
37
33
 
34
+ var _propTypes = _interopRequireDefault(require("./props/propTypes"));
35
+
36
+ var _defaultProps = _interopRequireDefault(require("./props/defaultProps"));
37
+
38
38
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
39
39
 
40
40
  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); }
@@ -53,17 +53,18 @@ var getTypographySize = function getTypographySize(size) {
53
53
  return _constants2.TYPOGRAPHY_SIZE_MAP[size] || '13';
54
54
  };
55
55
 
56
- var Button = /*#__PURE__*/(0, _react.forwardRef)(function Button(props, ref) {
57
- var palette = props.palette,
58
- bgAppearance = props.bgAppearance,
59
- borderAppearance = props.borderAppearance,
56
+ var ButtonPresentational = /*#__PURE__*/(0, _react.forwardRef)(function ButtonPresentational(props, ref) {
57
+ var isLoading = props.isLoading,
58
+ isSuccess = props.isSuccess,
59
+ isDisabled = props.isDisabled,
60
+ isDisabledState = props.isDisabledState,
61
+ overlayActive = props.overlayActive,
60
62
  variant = props.variant,
61
- status = props.status,
63
+ iconPlacement = props.iconPlacement,
62
64
  loaderPlacement = props.loaderPlacement,
63
65
  size = props.size,
64
66
  iconName = props.iconName,
65
67
  iconSize = props.iconSize,
66
- iconPlacement = props.iconPlacement,
67
68
  renderIcon = props.renderIcon,
68
69
  renderBefore = props.renderBefore,
69
70
  renderAfter = props.renderAfter,
@@ -71,105 +72,95 @@ var Button = /*#__PURE__*/(0, _react.forwardRef)(function Button(props, ref) {
71
72
  renderSuccess = props.renderSuccess,
72
73
  children = props.children,
73
74
  type = props.type,
74
- onClick = props.onClick,
75
- isDisabled = props.isDisabled,
76
75
  isReadOnly = props.isReadOnly,
77
76
  isSelected = props.isSelected,
78
- shape = props.shape,
79
- paletteShade = props.paletteShade,
80
- disabledAppearance = props.disabledAppearance,
81
77
  title = props.title,
82
78
  customProps = props.customProps,
83
79
  customAttributes = props.customAttributes,
84
80
  a11yAttributes = props.a11yAttributes,
85
81
  customId = props.customId,
86
- testId = props.testId;
87
- var isLoading = status === _constants2.STATUS.LOADING;
88
- var isSuccess = status === _constants2.STATUS.SUCCESS;
89
- var isDisabledState = isDisabled || isLoading;
90
- var isInteractionDisabled = isDisabledState || isReadOnly;
91
- var overlayActive = (isLoading || isSuccess) && loaderPlacement === _constants2.LOADER_PLACEMENT.OVERLAY;
92
- var _customProps$text = customProps.text,
93
- contentProps = _customProps$text === void 0 ? _constants.DUMMY_OBJECT : _customProps$text,
94
- _customProps$icon = customProps.icon,
95
- iconProps = _customProps$icon === void 0 ? _constants.DUMMY_OBJECT : _customProps$icon;
96
- var iconTagAttributes = (0, _react.useMemo)(function () {
97
- return _objectSpread(_objectSpread({}, iconProps.tagAttributes || _constants.DUMMY_OBJECT), {}, {
98
- 'data-test-id': testId ? "".concat(testId, "_icon") : undefined
99
- });
100
- }, [iconProps.tagAttributes, testId]);
101
- var classes = (0, _react.useMemo)(function () {
102
- return (0, _cssJSLogic["default"])({
103
- props: props
104
- });
105
- }, [palette, bgAppearance, borderAppearance, paletteShade, size, variant, status, isDisabled, isReadOnly, isSelected, shape, loaderPlacement, disabledAppearance, props.customClass]);
106
- var loaderOverlayClass = classes.loaderOverlayClass,
107
- successOverlayClass = classes.successOverlayClass,
108
- contentWrapperClass = classes.contentWrapperClass,
109
- textClassName = classes.textClassName,
110
- buttonClassName = classes.buttonClassName,
111
- iconClassName = classes.iconClassName;
112
- var showIcon = variant !== _constants2.VARIANT.TEXT && (renderIcon || iconName);
113
-
114
- var _handleClick = function _handleClick(event) {
115
- if (isInteractionDisabled) {
116
- return;
117
- }
82
+ testId = props.testId,
83
+ dataSelectorId = props.dataSelectorId,
84
+ handleClick = props.handleClick,
85
+ classNames = props.classNames;
86
+ var loaderOverlayClass = classNames.loaderOverlayClass,
87
+ successOverlayClass = classNames.successOverlayClass,
88
+ contentWrapperClass = classNames.contentWrapperClass,
89
+ textClassName = classNames.textClassName,
90
+ buttonClassName = classNames.buttonClassName,
91
+ iconClassName = classNames.iconClassName,
92
+ loaderClassName = classNames.loaderClassName,
93
+ successClassName = classNames.successClassName;
94
+
95
+ var _ref = customProps || _constants.DUMMY_OBJECT,
96
+ _ref$text = _ref.text,
97
+ contentProps = _ref$text === void 0 ? _constants.DUMMY_OBJECT : _ref$text,
98
+ _ref$icon = _ref.icon,
99
+ iconProps = _ref$icon === void 0 ? _constants.DUMMY_OBJECT : _ref$icon;
100
+
101
+ var _ref2 = customAttributes || _constants.DUMMY_OBJECT,
102
+ _ref2$button = _ref2.button,
103
+ buttonAttributes = _ref2$button === void 0 ? _constants.DUMMY_OBJECT : _ref2$button,
104
+ _ref2$contentWrapper = _ref2.contentWrapper,
105
+ contentWrapperAttributes = _ref2$contentWrapper === void 0 ? _constants.DUMMY_OBJECT : _ref2$contentWrapper,
106
+ _ref2$loader = _ref2.loader,
107
+ loaderAttributes = _ref2$loader === void 0 ? _constants.DUMMY_OBJECT : _ref2$loader,
108
+ _ref2$success = _ref2.success,
109
+ successAttributes = _ref2$success === void 0 ? _constants.DUMMY_OBJECT : _ref2$success,
110
+ _ref2$icon = _ref2.icon,
111
+ iconAttributes = _ref2$icon === void 0 ? _constants.DUMMY_OBJECT : _ref2$icon,
112
+ _ref2$text = _ref2.text,
113
+ textAttributes = _ref2$text === void 0 ? _constants.DUMMY_OBJECT : _ref2$text;
114
+
115
+ var iconTagAttributes = _objectSpread(_objectSpread({}, iconAttributes), {}, {
116
+ 'data-test-id': testId ? "".concat(testId, "_icon") : undefined
117
+ });
118
118
 
119
- onClick(event);
120
- };
119
+ var showIcon = variant !== _constants2.VARIANT.TEXT && (renderIcon || iconName);
121
120
 
122
121
  var _renderLoader = function _renderLoader() {
123
- if (!isLoading) {
124
- return null;
125
- }
126
-
127
- if ((0, _renderNode.isRenderable)(renderLoader)) {
128
- return (0, _renderNode["default"])(renderLoader, {
129
- status: status
130
- });
131
- }
132
-
133
- var loaderClassName = loaderPlacement === _constants2.LOADER_PLACEMENT.OVERLAY ? loaderOverlayClass : '';
134
- return /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
122
+ if (!isLoading) return null;
123
+ var isOverlay = loaderPlacement === _constants2.LOADER_PLACEMENT.OVERLAY;
124
+ var hasCustomLoader = (0, _renderNode.isRenderable)(renderLoader);
125
+ if (hasCustomLoader && !isOverlay) return (0, _renderNode["default"])(renderLoader, {
126
+ status: _constants2.STATUS.LOADING
127
+ });
128
+ return /*#__PURE__*/_react["default"].createElement(_Flex["default"], _extends({
135
129
  $ui_displayMode: "flex",
136
130
  $ui_alignItems: "center",
137
131
  $ui_justifyContent: "center",
138
- $ui_className: loaderClassName,
132
+ $ui_className: isOverlay ? loaderOverlayClass : '',
139
133
  testId: testId ? "".concat(testId, "_loader") : undefined
140
- }, /*#__PURE__*/_react["default"].createElement(_Loader["default"], null));
134
+ }, hasCustomLoader ? undefined : loaderAttributes), hasCustomLoader ? (0, _renderNode["default"])(renderLoader, {
135
+ status: _constants2.STATUS.LOADING
136
+ }) : /*#__PURE__*/_react["default"].createElement(_Loader["default"], {
137
+ customClass: loaderClassName
138
+ }));
141
139
  };
142
140
 
143
141
  var _renderSuccess = function _renderSuccess() {
144
- if (!isSuccess) {
145
- return null;
146
- }
147
-
148
- if ((0, _renderNode.isRenderable)(renderSuccess)) {
149
- return (0, _renderNode["default"])(renderSuccess, {
150
- status: status
151
- });
152
- }
153
-
154
- var successClassName = loaderPlacement === _constants2.LOADER_PLACEMENT.OVERLAY ? successOverlayClass : '';
155
- return /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
142
+ if (!isSuccess) return null;
143
+ var isOverlay = loaderPlacement === _constants2.LOADER_PLACEMENT.OVERLAY;
144
+ var hasCustomSuccess = (0, _renderNode.isRenderable)(renderSuccess);
145
+ if (hasCustomSuccess && !isOverlay) return (0, _renderNode["default"])(renderSuccess, {
146
+ status: _constants2.STATUS.SUCCESS
147
+ });
148
+ return /*#__PURE__*/_react["default"].createElement(_Flex["default"], _extends({
156
149
  $ui_displayMode: "flex",
157
150
  $ui_alignItems: "center",
158
151
  $ui_justifyContent: "center",
159
- $ui_className: successClassName,
152
+ $ui_className: isOverlay ? successOverlayClass : '',
160
153
  testId: testId ? "".concat(testId, "_success") : undefined
161
- }, /*#__PURE__*/_react["default"].createElement(_SuccessTick["default"], null));
154
+ }, hasCustomSuccess ? undefined : successAttributes), hasCustomSuccess ? (0, _renderNode["default"])(renderSuccess, {
155
+ status: _constants2.STATUS.SUCCESS
156
+ }) : /*#__PURE__*/_react["default"].createElement(_SuccessTick["default"], {
157
+ customClass: successClassName
158
+ }));
162
159
  };
163
160
 
164
161
  var _renderIconNode = function _renderIconNode() {
165
- if (!showIcon) {
166
- return null;
167
- }
168
-
169
- if ((0, _renderNode.isRenderable)(renderIcon)) {
170
- return (0, _renderNode["default"])(renderIcon);
171
- }
172
-
162
+ if (!showIcon) return null;
163
+ if ((0, _renderNode.isRenderable)(renderIcon)) return (0, _renderNode["default"])(renderIcon);
173
164
  return /*#__PURE__*/_react["default"].createElement(_Icon["default"], _extends({}, iconProps, {
174
165
  iconClass: iconClassName,
175
166
  name: iconName,
@@ -179,59 +170,132 @@ var Button = /*#__PURE__*/(0, _react.forwardRef)(function Button(props, ref) {
179
170
  }));
180
171
  };
181
172
 
182
- var _renderBeforeNode = function _renderBeforeNode() {
183
- if (!(0, _renderNode.isRenderable)(renderBefore)) {
184
- return null;
185
- }
186
-
187
- return (0, _renderNode["default"])(renderBefore, props);
188
- };
189
-
190
- var _renderAfterNode = function _renderAfterNode() {
191
- if (!(0, _renderNode.isRenderable)(renderAfter)) {
192
- return null;
193
- }
194
-
195
- return (0, _renderNode["default"])(renderAfter, props);
196
- };
197
-
198
173
  var _renderContent = function _renderContent() {
199
- var shouldShowText = variant !== _constants2.VARIANT.ICON && children !== undefined && children !== null;
174
+ var shouldShowText = variant !== _constants2.VARIANT.ICON && children != null && (typeof children !== 'string' || children.trim() !== '');
200
175
  var showLoaderStart = isLoading && loaderPlacement === _constants2.LOADER_PLACEMENT.START;
201
176
  var showLoaderAfter = isLoading && loaderPlacement === _constants2.LOADER_PLACEMENT.END;
202
177
  var showSuccessStart = isSuccess && loaderPlacement === _constants2.LOADER_PLACEMENT.START;
203
178
  var showSuccessAfter = isSuccess && loaderPlacement === _constants2.LOADER_PLACEMENT.END;
204
- return /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
179
+ return /*#__PURE__*/_react["default"].createElement(_Flex["default"], _extends({
205
180
  $ui_displayMode: "flex",
206
181
  $ui_direction: "row",
207
182
  $flag_shrink: true,
208
183
  $ui_alignItems: "center",
209
184
  $ui_justifyContent: "center",
210
185
  $ui_className: contentWrapperClass
211
- }, showLoaderStart ? _renderLoader() : null, showSuccessStart ? _renderSuccess() : null, _renderBeforeNode(), iconPlacement === _constants2.ICON_PLACEMENT.LEFT ? _renderIconNode() : null, shouldShowText ? /*#__PURE__*/_react["default"].createElement(_Typography["default"], _extends({}, contentProps, {
186
+ }, contentWrapperAttributes), showLoaderStart ? _renderLoader() : null, showSuccessStart ? _renderSuccess() : null, (0, _renderNode.isRenderable)(renderBefore) ? (0, _renderNode["default"])(renderBefore, props) : null, iconPlacement === _constants2.ICON_PLACEMENT.LEFT ? _renderIconNode() : null, shouldShowText ? typeof children === 'string' ? /*#__PURE__*/_react["default"].createElement(_Typography["default"], _extends({
187
+ $ui_size: getTypographySize(size)
188
+ }, contentProps, {
189
+ tagAttributes: textAttributes,
212
190
  $ui_className: textClassName,
213
- $ui_size: getTypographySize(size),
214
191
  $flag_dotted: variant !== _constants2.VARIANT.ICON
215
- }), children) : null, iconPlacement === _constants2.ICON_PLACEMENT.RIGHT ? _renderIconNode() : null, _renderAfterNode(), showLoaderAfter ? _renderLoader() : null, showSuccessAfter ? _renderSuccess() : null);
192
+ }), children) : children : null, iconPlacement === _constants2.ICON_PLACEMENT.RIGHT ? _renderIconNode() : null, (0, _renderNode.isRenderable)(renderAfter) ? (0, _renderNode["default"])(renderAfter, props) : null, showLoaderAfter ? _renderLoader() : null, showSuccessAfter ? _renderSuccess() : null);
216
193
  };
217
194
 
218
- var containerAttributes = _objectSpread(_objectSpread({}, customAttributes), {}, {
219
- 'data-id': customId,
220
- 'data-test-id': testId,
195
+ var containerAttributes = _objectSpread(_objectSpread({}, buttonAttributes), {}, {
196
+ 'data-id': isDisabled ? "".concat(customId, "_disabled") : customId,
197
+ 'data-test-id': isDisabled ? "".concat(testId, "_disabled") : testId,
198
+ 'data-selector-id': dataSelectorId,
221
199
  'data-title': title
222
200
  });
223
201
 
224
- return /*#__PURE__*/_react["default"].createElement("button", _extends({}, containerAttributes, a11yAttributes, {
202
+ return /*#__PURE__*/_react["default"].createElement("button", _extends({}, containerAttributes, {
203
+ "aria-busy": isLoading,
204
+ disabled: isDisabledState,
205
+ "aria-readonly": isReadOnly,
206
+ "aria-pressed": isSelected
207
+ }, a11yAttributes, {
225
208
  ref: ref,
226
209
  type: type,
227
210
  className: (0, _cssUtility.cn)(buttonClassName),
228
- "aria-busy": isLoading,
229
- "aria-disabled": isDisabledState,
230
- "aria-readonly": isReadOnly,
231
- "aria-pressed": isSelected,
232
- onClick: _handleClick
211
+ onClick: handleClick
233
212
  }), _renderContent(), overlayActive ? isLoading ? _renderLoader() : _renderSuccess() : null);
234
213
  });
214
+ exports.ButtonPresentational = ButtonPresentational;
215
+ ButtonPresentational.displayName = 'ButtonPresentational';
216
+ var Button = /*#__PURE__*/(0, _react.forwardRef)(function Button(props, ref) {
217
+ var palette = props.palette,
218
+ bgAppearance = props.bgAppearance,
219
+ borderAppearance = props.borderAppearance,
220
+ variant = props.variant,
221
+ status = props.status,
222
+ loaderPlacement = props.loaderPlacement,
223
+ size = props.size,
224
+ iconName = props.iconName,
225
+ iconSize = props.iconSize,
226
+ iconPlacement = props.iconPlacement,
227
+ renderIcon = props.renderIcon,
228
+ renderBefore = props.renderBefore,
229
+ renderAfter = props.renderAfter,
230
+ renderLoader = props.renderLoader,
231
+ renderSuccess = props.renderSuccess,
232
+ children = props.children,
233
+ type = props.type,
234
+ onClick = props.onClick,
235
+ isDisabled = props.isDisabled,
236
+ isReadOnly = props.isReadOnly,
237
+ isSelected = props.isSelected,
238
+ shape = props.shape,
239
+ paletteShade = props.paletteShade,
240
+ disabledAppearance = props.disabledAppearance,
241
+ title = props.title,
242
+ customProps = props.customProps,
243
+ customAttributes = props.customAttributes,
244
+ a11yAttributes = props.a11yAttributes,
245
+ customId = props.customId,
246
+ testId = props.testId,
247
+ dataSelectorId = props.dataSelectorId;
248
+ var isLoading = status === _constants2.STATUS.LOADING;
249
+ var isSuccess = status === _constants2.STATUS.SUCCESS;
250
+ var isDisabledState = isDisabled || isLoading;
251
+ var isInteractionDisabled = isDisabledState || isReadOnly;
252
+ var overlayActive = (isLoading || isSuccess) && loaderPlacement === _constants2.LOADER_PLACEMENT.OVERLAY;
253
+ var classNames = (0, _react.useMemo)(function () {
254
+ return (0, _cssJSLogic["default"])({
255
+ props: props
256
+ });
257
+ }, [palette, bgAppearance, borderAppearance, paletteShade, size, variant, status, isDisabled, isReadOnly, isSelected, shape, loaderPlacement, disabledAppearance, props.customClass]);
258
+
259
+ var handleClick = function handleClick(event) {
260
+ if (isInteractionDisabled) return;
261
+ onClick(event);
262
+ };
263
+
264
+ var essentials = {
265
+ isLoading: isLoading,
266
+ isSuccess: isSuccess,
267
+ isDisabled: isDisabled,
268
+ isDisabledState: isDisabledState,
269
+ overlayActive: overlayActive,
270
+ variant: variant,
271
+ iconPlacement: iconPlacement,
272
+ loaderPlacement: loaderPlacement,
273
+ size: size,
274
+ iconName: iconName,
275
+ iconSize: iconSize,
276
+ renderIcon: renderIcon,
277
+ renderBefore: renderBefore,
278
+ renderAfter: renderAfter,
279
+ renderLoader: renderLoader,
280
+ renderSuccess: renderSuccess,
281
+ children: children,
282
+ type: type,
283
+ isReadOnly: isReadOnly,
284
+ isSelected: isSelected,
285
+ title: title,
286
+ customProps: customProps,
287
+ customAttributes: customAttributes,
288
+ a11yAttributes: a11yAttributes,
289
+ customId: customId,
290
+ testId: testId,
291
+ dataSelectorId: dataSelectorId,
292
+ handleClick: handleClick
293
+ };
294
+ return /*#__PURE__*/_react["default"].createElement(ButtonPresentational, _extends({}, essentials, {
295
+ classNames: classNames,
296
+ ref: ref
297
+ }));
298
+ });
235
299
  Button.propTypes = _propTypes["default"];
236
300
  Button.defaultProps = _defaultProps["default"];
237
301
  Button.displayName = 'Button';
@@ -5,13 +5,15 @@
5
5
  --local-button-gap: var(--zd_size8);
6
6
  --local-button-padding-block: var(--zd_size6);
7
7
  --local-button-padding-inline: var(--zd_size15);
8
- --local-button-font-size: var(--zd_font_size13);
9
8
  --local-loader-size: 16px;
10
9
  --local-tick-size: 16px;
11
10
  --local-button-height: auto;
12
11
  --local-button-width: auto;
13
- --local-button-overlay-opacity: 0.48;
14
- --local-button-transition-duration: var(--zd_transition3);
12
+ --local-button-min-width: var(--zd_size90);
13
+ --local-button-overlay-opacity: 0.4;
14
+ --local-button-transition-duration: var(--zd_transition2);
15
+ --local-button-cursor: pointer;
16
+ --local-button-strike-color: currentColor;
15
17
  }
16
18
 
17
19
  .button {
@@ -19,19 +21,20 @@
19
21
  composes: posrel pointer from '../../../common/common.module.css';
20
22
  padding-block: var(--local-button-padding-block);
21
23
  padding-inline: var(--local-button-padding-inline);
22
- font-size: var(--local-button-font-size);
23
24
  height: var(--local-button-height);
24
25
  width: var(--local-button-width);
26
+ min-width: var(--local-button-min-width);
25
27
  border-radius: var(--local-button-radius);
26
28
  border-style: var(--local-button-border-style);
27
29
  border-width: var(--local-button-border-width);
28
30
  transition-duration: var(--local-button-transition-duration);
29
31
  transition-timing-function: ease;
32
+ cursor: var(--local-button-cursor);
30
33
  background-image: none;
31
34
  }
32
35
 
33
36
  .disabledPointer {
34
- cursor: not-allowed;
37
+ --local-button-cursor: not-allowed;
35
38
  }
36
39
 
37
40
  .disabledOpac {
@@ -39,7 +42,8 @@
39
42
  }
40
43
 
41
44
  .loading {
42
- cursor: progress;
45
+ --local-button-cursor: progress;
46
+ composes: disabledOpac;
43
47
  }
44
48
 
45
49
  .sizeSmall {
@@ -68,6 +72,18 @@
68
72
  --local-button-width: 100%;
69
73
  }
70
74
 
75
+ .variantText {
76
+ --local-button-min-width: var(--zd_size90);
77
+ }
78
+
79
+ .variantIcon {
80
+ --local-button-min-width: var(--zd_size28);
81
+ }
82
+
83
+ .variantIconWithText {
84
+ --local-button-min-width: var(--zd_size118);
85
+ }
86
+
71
87
  .shapeRoundedRectangle {
72
88
  --local-button-radius: 4px;
73
89
  }
@@ -80,9 +96,11 @@
80
96
  --local-button-radius: 0;
81
97
  }
82
98
 
83
- .loaderOverlay {
99
+ .strike::after,
100
+ .loaderOverlay,
101
+ .successOverlay {
84
102
  inset: 0 ;
85
- composes: posab from '../../../common/common.module.css';
103
+ position: absolute;
86
104
  }
87
105
 
88
106
  .contentWrapper {
@@ -98,22 +116,16 @@
98
116
 
99
117
  .strike::after {
100
118
  content: '';
101
- position: absolute;
102
- inset: 0 ;
103
119
  pointer-events: none;
104
120
  border-radius: var(--local-button-radius);
105
121
  }
106
122
 
107
123
  [dir=ltr] .strike::after {
108
- background-image: repeating-linear-gradient(120deg, currentColor 0 1px, var(--dot_mirror) 1px 8px);
124
+ background-image: repeating-linear-gradient(120deg, var(--local-button-strike-color) 0 1px, var(--zd-bg-transparent) 1px 8px);
109
125
  }
110
126
 
111
127
  [dir=rtl] .strike::after {
112
- background-image: repeating-linear-gradient(-120deg, currentColor 0 1px, var(--dot_mirror) 1px 8px);
128
+ background-image: repeating-linear-gradient(-120deg, var(--local-button-strike-color) 0 1px, var(--zd-bg-transparent) 1px 8px);
113
129
  }
114
130
 
115
- .successOverlay {
116
- inset: 0 ;
117
- composes: posab from '../../../common/common.module.css';
118
- }
119
131
 
@@ -7,7 +7,7 @@ exports["default"] = cssJSLogic;
7
7
 
8
8
  var _Button_v1Module = _interopRequireDefault(require("./Button_v1.module.css"));
9
9
 
10
- var _compileClassNames4 = _interopRequireDefault(require("@zohodesk/utils/es/compileClassNames"));
10
+ var _compileClassNames6 = _interopRequireDefault(require("@zohodesk/utils/es/compileClassNames"));
11
11
 
12
12
  var _semanticButtonModule = _interopRequireDefault(require("../../../semantic/Button/semanticButton.module.css"));
13
13
 
@@ -35,6 +35,7 @@ function cssJSLogic(_ref) {
35
35
  borderAppearance = props.borderAppearance,
36
36
  paletteShade = props.paletteShade,
37
37
  size = props.size,
38
+ variant = props.variant,
38
39
  status = props.status,
39
40
  isDisabled = props.isDisabled,
40
41
  isReadOnly = props.isReadOnly,
@@ -49,10 +50,14 @@ function cssJSLogic(_ref) {
49
50
  _customClass$text = customClass.text,
50
51
  textClassCustom = _customClass$text === void 0 ? '' : _customClass$text,
51
52
  _customClass$icon = customClass.icon,
52
- iconClassCustom = _customClass$icon === void 0 ? '' : _customClass$icon;
53
+ iconClassCustom = _customClass$icon === void 0 ? '' : _customClass$icon,
54
+ _customClass$loader = customClass.loader,
55
+ loaderClassCustom = _customClass$loader === void 0 ? '' : _customClass$loader,
56
+ _customClass$success = customClass.success,
57
+ successClassCustom = _customClass$success === void 0 ? '' : _customClass$success;
53
58
  var isLoading = status === _constants2.STATUS.LOADING;
54
59
  var isSuccess = status === _constants2.STATUS.SUCCESS;
55
- var isInteractive = !isDisabled && !isReadOnly;
60
+ var isInteractive = !isDisabled && !isReadOnly && !isLoading;
56
61
  var overlayActive = (isLoading || isSuccess) && loaderPlacement === _constants2.LOADER_PLACEMENT.OVERLAY;
57
62
 
58
63
  var _getPaletteClasses = (0, _colorHelper["default"])({
@@ -77,16 +82,23 @@ function cssJSLogic(_ref) {
77
82
 
78
83
  var sizeClass = size ? _Button_v1Module["default"]["size".concat(capitalize(size))] : '';
79
84
  var shapeClass = shape ? _Button_v1Module["default"]["shape".concat(capitalize(shape))] : '';
85
+ var variantClass = variant ? _Button_v1Module["default"]["variant".concat(capitalize(variant))] : '';
80
86
  var shouldStrike = disabledAppearance === _constants2.DISABLED_APPEARANCE.STRIKE && isDisabled;
81
- var buttonClassName = (0, _compileClassNames4["default"])((_compileClassNames = {}, _defineProperty(_compileClassNames, _semanticButtonModule["default"].buttonReset, true), _defineProperty(_compileClassNames, _Button_v1Module["default"].button, true), _defineProperty(_compileClassNames, bg, !!bg), _defineProperty(_compileClassNames, hoverBg, !!hoverBg && isInteractive), _defineProperty(_compileClassNames, focusBg, !!focusBg && isInteractive), _defineProperty(_compileClassNames, activeBg, !!activeBg && isInteractive), _defineProperty(_compileClassNames, text, !!text), _defineProperty(_compileClassNames, hoverText, !!hoverText && isInteractive), _defineProperty(_compileClassNames, focusText, !!focusText && isInteractive), _defineProperty(_compileClassNames, activeText, !!activeText && isInteractive), _defineProperty(_compileClassNames, border, !!border), _defineProperty(_compileClassNames, hoverBorder, !!hoverBorder && isInteractive), _defineProperty(_compileClassNames, focusBorder, !!focusBorder && isInteractive), _defineProperty(_compileClassNames, activeBorder, !!activeBorder && isInteractive), _defineProperty(_compileClassNames, sizeClass, !!sizeClass), _defineProperty(_compileClassNames, shapeClass, !!shapeClass), _defineProperty(_compileClassNames, _Button_v1Module["default"].disabledOpac, isReadOnly || isDisabled && disabledAppearance === _constants2.DISABLED_APPEARANCE.DULL), _defineProperty(_compileClassNames, _Button_v1Module["default"].disabledPointer, isReadOnly || isDisabled), _defineProperty(_compileClassNames, _Button_v1Module["default"].loading, isLoading), _defineProperty(_compileClassNames, _Button_v1Module["default"].strike, shouldStrike), _defineProperty(_compileClassNames, wrapperClass, !!wrapperClass), _compileClassNames));
82
- var textClassName = (0, _compileClassNames4["default"])(_defineProperty({}, textClassCustom, !!textClassCustom));
83
- var iconClassName = (0, _compileClassNames4["default"])(_defineProperty({}, iconClassCustom, !!iconClassCustom));
87
+ var buttonClassName = (0, _compileClassNames6["default"])((_compileClassNames = {}, _defineProperty(_compileClassNames, _semanticButtonModule["default"].buttonReset, true), _defineProperty(_compileClassNames, _Button_v1Module["default"].button, true), _defineProperty(_compileClassNames, bg, !!bg), _defineProperty(_compileClassNames, hoverBg, !!hoverBg && isInteractive), _defineProperty(_compileClassNames, focusBg, !!focusBg && isInteractive), _defineProperty(_compileClassNames, activeBg, !!activeBg && isInteractive), _defineProperty(_compileClassNames, text, !!text), _defineProperty(_compileClassNames, hoverText, !!hoverText && isInteractive), _defineProperty(_compileClassNames, focusText, !!focusText && isInteractive), _defineProperty(_compileClassNames, activeText, !!activeText && isInteractive), _defineProperty(_compileClassNames, border, !!border), _defineProperty(_compileClassNames, hoverBorder, !!hoverBorder && isInteractive), _defineProperty(_compileClassNames, focusBorder, !!focusBorder && isInteractive), _defineProperty(_compileClassNames, activeBorder, !!activeBorder && isInteractive), _defineProperty(_compileClassNames, sizeClass, !!sizeClass), _defineProperty(_compileClassNames, shapeClass, !!shapeClass), _defineProperty(_compileClassNames, variantClass, !!variantClass), _defineProperty(_compileClassNames, _Button_v1Module["default"].disabledOpac, isReadOnly || isDisabled && disabledAppearance === _constants2.DISABLED_APPEARANCE.DULL), _defineProperty(_compileClassNames, _Button_v1Module["default"].disabledPointer, isReadOnly || isDisabled), _defineProperty(_compileClassNames, _Button_v1Module["default"].loading, isLoading), _defineProperty(_compileClassNames, _Button_v1Module["default"].strike, shouldStrike), _defineProperty(_compileClassNames, wrapperClass, !!wrapperClass), _compileClassNames));
88
+ var textClassName = (0, _compileClassNames6["default"])(_defineProperty({}, textClassCustom, !!textClassCustom));
89
+ var iconClassName = (0, _compileClassNames6["default"])(_defineProperty({}, iconClassCustom, !!iconClassCustom));
84
90
  return {
85
91
  buttonClassName: buttonClassName,
86
92
  textClassName: textClassName,
93
+ iconClassName: iconClassName,
87
94
  contentWrapperClass: overlayActive ? _Button_v1Module["default"].overlayHidden : _Button_v1Module["default"].contentWrapper,
88
95
  loaderOverlayClass: _Button_v1Module["default"].loaderOverlay,
89
96
  successOverlayClass: _Button_v1Module["default"].successOverlay,
90
- iconClassName: iconClassName
97
+ loaderClassName: {
98
+ wrapper: (0, _compileClassNames6["default"])(_defineProperty({}, loaderClassCustom, !!loaderClassCustom))
99
+ },
100
+ successClassName: {
101
+ wrapper: (0, _compileClassNames6["default"])(_defineProperty({}, successClassCustom, !!successClassCustom))
102
+ }
91
103
  };
92
104
  }
@@ -41,16 +41,27 @@ var propTypes = {
41
41
  title: _propTypes["default"].string,
42
42
  customClass: _propTypes["default"].shape({
43
43
  wrapper: _propTypes["default"].string,
44
- text: _propTypes["default"].string
44
+ text: _propTypes["default"].string,
45
+ icon: _propTypes["default"].string,
46
+ loader: _propTypes["default"].string,
47
+ success: _propTypes["default"].string
45
48
  }),
46
49
  customProps: _propTypes["default"].shape({
47
50
  text: _propTypes["default"].object,
48
51
  icon: _propTypes["default"].object
49
52
  }),
50
- customAttributes: _propTypes["default"].object,
53
+ customAttributes: _propTypes["default"].shape({
54
+ button: _propTypes["default"].object,
55
+ contentWrapper: _propTypes["default"].object,
56
+ loader: _propTypes["default"].object,
57
+ success: _propTypes["default"].object,
58
+ icon: _propTypes["default"].object,
59
+ text: _propTypes["default"].object
60
+ }),
51
61
  a11yAttributes: _propTypes["default"].object,
52
62
  customId: _propTypes["default"].string,
53
- testId: _propTypes["default"].string
63
+ testId: _propTypes["default"].string,
64
+ dataSelectorId: _propTypes["default"].string
54
65
  };
55
66
  var _default = propTypes;
56
67
  exports["default"] = _default;