@zohodesk/components 1.0.0-temp-259.2 → 1.0.0-temp-260

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 (37) hide show
  1. package/README.md +21 -3
  2. package/assets/Appearance/dark/mode/Component_v1_DarkMode.module.css +20 -5
  3. package/assets/Appearance/light/mode/Component_v1_LightMode.module.css +20 -5
  4. package/assets/Appearance/pureDark/mode/Component_v1_PureDarkMode.module.css +20 -5
  5. package/es/AdvancedPopup/AdvancedPopup.js +105 -0
  6. package/es/v1/Button/Button.js +107 -159
  7. package/es/v1/Button/README.md +2 -3
  8. package/es/v1/Button/__tests__/Button.spec.js +6 -14
  9. package/es/v1/Button/__tests__/__snapshots__/Button.spec.js.snap +169 -249
  10. package/es/v1/Button/constants/index.js +20 -26
  11. package/es/v1/Button/css/Button_v1.module.css +16 -37
  12. package/es/v1/Button/css/cssJSLogic.js +28 -56
  13. package/es/v1/Button/props/defaultProps.js +6 -2
  14. package/es/v1/Button/props/propTypes.js +8 -26
  15. package/es/v1/helpers/colorHelpers/background/backgroundColor.module.css +40 -40
  16. package/es/v1/helpers/colorHelpers/border/borderColor.module.css +25 -25
  17. package/es/v1/helpers/colorHelpers/colorHelper.js +139 -117
  18. package/es/v1/helpers/colorHelpers/constants/index.js +4 -45
  19. package/es/v1/helpers/colorHelpers/text/textColor.module.css +35 -35
  20. package/lib/AdvancedPopup/AdvancedPopup.js +122 -0
  21. package/lib/v1/Button/Button.js +119 -178
  22. package/lib/v1/Button/README.md +2 -3
  23. package/lib/v1/Button/__tests__/Button.spec.js +52 -66
  24. package/lib/v1/Button/__tests__/__snapshots__/Button.spec.js.snap +169 -249
  25. package/lib/v1/Button/constants/index.js +28 -31
  26. package/lib/v1/Button/css/Button_v1.module.css +16 -37
  27. package/lib/v1/Button/css/cssJSLogic.js +19 -42
  28. package/lib/v1/Button/props/defaultProps.js +5 -1
  29. package/lib/v1/Button/props/propTypes.js +7 -41
  30. package/lib/v1/helpers/colorHelpers/background/backgroundColor.module.css +40 -40
  31. package/lib/v1/helpers/colorHelpers/border/borderColor.module.css +25 -25
  32. package/lib/v1/helpers/colorHelpers/colorHelper.js +153 -127
  33. package/lib/v1/helpers/colorHelpers/constants/index.js +4 -45
  34. package/lib/v1/helpers/colorHelpers/text/textColor.module.css +35 -35
  35. package/package.json +4 -4
  36. package/es/v1/Button/constants/presets.js +0 -147
  37. package/lib/v1/Button/constants/presets.js +0 -165
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _react = _interopRequireWildcard(require("react"));
11
+
12
+ var _useAdvancedPopup2 = require("@zohodesk/dotkit/es/react/components/Popup/hooks/useAdvancedPopup.js");
13
+
14
+ var _Config = require("../Provider/Config.js");
15
+
16
+ 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); }
17
+
18
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
+
20
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
21
+
22
+ var AdvancedPopup = function AdvancedPopup(PopupComponent) {
23
+ var wrapper = function wrapper(props) {
24
+ var positionMetaRef = (0, _react.useRef)(null);
25
+ var triggerMetaRef = (0, _react.useRef)(null);
26
+ var initialPlacementRef = (0, _react.useRef)(props.defaultPosition);
27
+
28
+ var getRootElement = function getRootElement() {
29
+ return (0, _Config.getLibraryConfig)('getRootElement');
30
+ };
31
+
32
+ var getMobileWidth = function getMobileWidth() {
33
+ return (0, _Config.getLibraryConfig)('mobileWidth');
34
+ };
35
+
36
+ var isArrow = props.isArrow,
37
+ defaultPosition = props.defaultPosition,
38
+ customOrder = props.customOrder,
39
+ isAbsolutePositioningNeeded = props.isAbsolutePositioningNeeded,
40
+ isOutsideScrollBlocked = props.isOutsideScrollBlocked,
41
+ sizeModifiers = props.sizeModifiers,
42
+ checkBeforeClose = props.checkBeforeClose,
43
+ scrollDebounceTime = props.scrollDebounceTime,
44
+ needResizeHandling = props.needResizeHandling,
45
+ popupGroup = props.popupGroup;
46
+
47
+ var _useAdvancedPopup = (0, _useAdvancedPopup2.useAdvancedPopup)({
48
+ strategy: isAbsolutePositioningNeeded === false ? 'fixed' : 'absolute',
49
+ groupName: popupGroup,
50
+ checkBeforeClose: checkBeforeClose,
51
+ getRootElement: getRootElement,
52
+ scrollDebounceTime: scrollDebounceTime,
53
+ enableResizeHandling: needResizeHandling,
54
+ sizeModifiers: sizeModifiers,
55
+ onPositionChange: function onPositionChange(meta) {
56
+ positionMetaRef.current = meta;
57
+ },
58
+ onVisibilityChange: function onVisibilityChange(isVisible) {
59
+ triggerMetaRef.current = isVisible;
60
+ },
61
+ middleware: {
62
+ autoPlacement: {
63
+ initialPlacement: initialPlacementRef.current,
64
+ placementOrder: customOrder
65
+ },
66
+ arrow: {
67
+ isRequired: !!isArrow
68
+ },
69
+ scrollable: !isOutsideScrollBlocked,
70
+ applyStyles: true,
71
+ mobile: {
72
+ isEnabled: true,
73
+ breakpoint: getMobileWidth()
74
+ }
75
+ }
76
+ }),
77
+ setTriggerElement = _useAdvancedPopup.setTriggerElement,
78
+ setContainerElement = _useAdvancedPopup.setContainerElement,
79
+ _togglePopup = _useAdvancedPopup.togglePopup,
80
+ _openPopupOnly = _useAdvancedPopup.openPopupOnly,
81
+ closePopupOnly = _useAdvancedPopup.closePopupOnly,
82
+ closePopupFromRange = _useAdvancedPopup.closePopupFromRange,
83
+ isPopupOpen = _useAdvancedPopup.isPopupOpen,
84
+ isPopupReady = _useAdvancedPopup.isPopupReady,
85
+ removeClose = _useAdvancedPopup.removeClose,
86
+ recomputePosition = _useAdvancedPopup.recomputePosition,
87
+ isMobile = _useAdvancedPopup.isMobile,
88
+ position = _useAdvancedPopup.position;
89
+
90
+ return /*#__PURE__*/_react["default"].createElement(PopupComponent, _extends({}, props, {
91
+ getTargetRef: setTriggerElement,
92
+ getContainerRef: setContainerElement,
93
+ togglePopup: function togglePopup(e, initialPlacement) {
94
+ initialPlacementRef.current = initialPlacement;
95
+
96
+ _togglePopup(e);
97
+ },
98
+ openPopupOnly: function openPopupOnly(e, initialPlacement) {
99
+ initialPlacementRef.current = initialPlacement;
100
+
101
+ _openPopupOnly(e);
102
+ },
103
+ closePopupOnly: closePopupOnly,
104
+ closePopupFromRange: closePopupFromRange,
105
+ removeClose: removeClose,
106
+ recomputePosition: recomputePosition,
107
+ isMobile: isMobile,
108
+ position: position === null || position === void 0 ? void 0 : position.view,
109
+ positions: position === null || position === void 0 ? void 0 : position.views,
110
+ positionsOffset: position === null || position === void 0 ? void 0 : position.viewsOffset,
111
+ targetOffset: position === null || position === void 0 ? void 0 : position.targetOffset,
112
+ popupOffset: position === null || position === void 0 ? void 0 : position.popupOffset,
113
+ isPopupOpen: isPopupOpen,
114
+ isPopupReady: isPopupReady
115
+ }));
116
+ };
117
+
118
+ return wrapper;
119
+ };
120
+
121
+ var _default = AdvancedPopup;
122
+ exports["default"] = _default;
@@ -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"] = exports.ButtonPresentational = void 0;
8
+ exports["default"] = 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
+
20
22
  var _renderNode = _interopRequireWildcard(require("@zohodesk/utils/es/renderNode"));
21
23
 
24
+ var _propTypes = _interopRequireDefault(require("./props/propTypes"));
25
+
26
+ var _defaultProps = _interopRequireDefault(require("./props/defaultProps"));
27
+
22
28
  var _constants = require("@zohodesk/dotkit/es/utils/constants");
23
29
 
24
30
  var _constants2 = require("./constants");
25
31
 
26
- var _Typography = _interopRequireDefault(require("../../Typography/Typography"));
27
-
28
32
  var _Spinner = _interopRequireDefault(require("../shared/Spinner/Spinner"));
29
33
 
30
34
  var _SuccessTick = _interopRequireDefault(require("../shared/SuccessTick/SuccessTick"));
31
35
 
32
36
  var _cssJSLogic = _interopRequireDefault(require("./css/cssJSLogic"));
33
37
 
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,18 +53,17 @@ var getTypographySize = function getTypographySize(size) {
53
53
  return _constants2.TYPOGRAPHY_SIZE_MAP[size] || '13';
54
54
  };
55
55
 
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,
56
+ var Button = /*#__PURE__*/(0, _react.forwardRef)(function Button(props, ref) {
57
+ var palette = props.palette,
58
+ bgAppearance = props.bgAppearance,
59
+ borderAppearance = props.borderAppearance,
62
60
  variant = props.variant,
63
- iconPlacement = props.iconPlacement,
61
+ status = props.status,
64
62
  loaderPlacement = props.loaderPlacement,
65
63
  size = props.size,
66
64
  iconName = props.iconName,
67
65
  iconSize = props.iconSize,
66
+ iconPlacement = props.iconPlacement,
68
67
  renderIcon = props.renderIcon,
69
68
  renderBefore = props.renderBefore,
70
69
  renderAfter = props.renderAfter,
@@ -72,94 +71,105 @@ var ButtonPresentational = /*#__PURE__*/(0, _react.forwardRef)(function ButtonPr
72
71
  renderSuccess = props.renderSuccess,
73
72
  children = props.children,
74
73
  type = props.type,
74
+ onClick = props.onClick,
75
+ isDisabled = props.isDisabled,
76
+ isReadOnly = props.isReadOnly,
75
77
  isSelected = props.isSelected,
78
+ shape = props.shape,
79
+ paletteShade = props.paletteShade,
80
+ disabledAppearance = props.disabledAppearance,
76
81
  title = props.title,
77
82
  customProps = props.customProps,
78
83
  customAttributes = props.customAttributes,
79
84
  a11yAttributes = props.a11yAttributes,
80
85
  customId = props.customId,
81
- testId = props.testId,
82
- dataSelectorId = props.dataSelectorId,
83
- handleClick = props.handleClick,
84
- classNames = props.classNames;
85
- var loaderOverlayClass = classNames.loaderOverlayClass,
86
- successOverlayClass = classNames.successOverlayClass,
87
- contentWrapperClass = classNames.contentWrapperClass,
88
- textClassName = classNames.textClassName,
89
- buttonClassName = classNames.buttonClassName,
90
- iconClassName = classNames.iconClassName,
91
- loaderClassName = classNames.loaderClassName,
92
- successClassName = classNames.successClassName;
93
-
94
- var _ref = customProps || _constants.DUMMY_OBJECT,
95
- _ref$text = _ref.text,
96
- contentProps = _ref$text === void 0 ? _constants.DUMMY_OBJECT : _ref$text,
97
- _ref$icon = _ref.icon,
98
- iconProps = _ref$icon === void 0 ? _constants.DUMMY_OBJECT : _ref$icon;
99
-
100
- var _ref2 = customAttributes || _constants.DUMMY_OBJECT,
101
- _ref2$button = _ref2.button,
102
- buttonAttributes = _ref2$button === void 0 ? _constants.DUMMY_OBJECT : _ref2$button,
103
- _ref2$contentWrapper = _ref2.contentWrapper,
104
- contentWrapperAttributes = _ref2$contentWrapper === void 0 ? _constants.DUMMY_OBJECT : _ref2$contentWrapper,
105
- _ref2$loader = _ref2.loader,
106
- loaderAttributes = _ref2$loader === void 0 ? _constants.DUMMY_OBJECT : _ref2$loader,
107
- _ref2$success = _ref2.success,
108
- successAttributes = _ref2$success === void 0 ? _constants.DUMMY_OBJECT : _ref2$success,
109
- _ref2$icon = _ref2.icon,
110
- iconAttributes = _ref2$icon === void 0 ? _constants.DUMMY_OBJECT : _ref2$icon,
111
- _ref2$text = _ref2.text,
112
- textAttributes = _ref2$text === void 0 ? _constants.DUMMY_OBJECT : _ref2$text;
113
-
114
- var iconTagAttributes = _objectSpread(_objectSpread({}, iconAttributes), {}, {
115
- 'data-test-id': testId ? "".concat(testId, "_icon") : undefined
116
- });
117
-
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;
118
112
  var showIcon = variant !== _constants2.VARIANT.TEXT && (renderIcon || iconName);
119
113
 
114
+ var _handleClick = function _handleClick(event) {
115
+ if (isInteractionDisabled) {
116
+ return;
117
+ }
118
+
119
+ onClick(event);
120
+ };
121
+
120
122
  var _renderLoader = function _renderLoader() {
121
- if (!isLoading) return null;
122
- var isOverlay = loaderPlacement === _constants2.LOADER_PLACEMENT.OVERLAY;
123
- var hasCustomLoader = (0, _renderNode.isRenderable)(renderLoader);
124
- if (hasCustomLoader && !isOverlay) return (0, _renderNode["default"])(renderLoader, {
125
- status: _constants2.STATUS.LOADING
126
- });
127
- return /*#__PURE__*/_react["default"].createElement(_Flex["default"], _extends({
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"], {
128
135
  $ui_displayMode: "flex",
129
136
  $ui_alignItems: "center",
130
137
  $ui_justifyContent: "center",
131
- $ui_className: isOverlay ? loaderOverlayClass : '',
138
+ $ui_className: loaderClassName,
132
139
  testId: testId ? "".concat(testId, "_loader") : undefined
133
- }, hasCustomLoader ? undefined : loaderAttributes), hasCustomLoader ? (0, _renderNode["default"])(renderLoader, {
134
- status: _constants2.STATUS.LOADING
135
- }) : /*#__PURE__*/_react["default"].createElement(_Spinner["default"], {
136
- customClass: loaderClassName
137
- }));
140
+ }, /*#__PURE__*/_react["default"].createElement(_Spinner["default"], null));
138
141
  };
139
142
 
140
143
  var _renderSuccess = function _renderSuccess() {
141
- if (!isSuccess) return null;
142
- var isOverlay = loaderPlacement === _constants2.LOADER_PLACEMENT.OVERLAY;
143
- var hasCustomSuccess = (0, _renderNode.isRenderable)(renderSuccess);
144
- if (hasCustomSuccess && !isOverlay) return (0, _renderNode["default"])(renderSuccess, {
145
- status: _constants2.STATUS.SUCCESS
146
- });
147
- return /*#__PURE__*/_react["default"].createElement(_Flex["default"], _extends({
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"], {
148
156
  $ui_displayMode: "flex",
149
157
  $ui_alignItems: "center",
150
158
  $ui_justifyContent: "center",
151
- $ui_className: isOverlay ? successOverlayClass : '',
159
+ $ui_className: successClassName,
152
160
  testId: testId ? "".concat(testId, "_success") : undefined
153
- }, hasCustomSuccess ? undefined : successAttributes), hasCustomSuccess ? (0, _renderNode["default"])(renderSuccess, {
154
- status: _constants2.STATUS.SUCCESS
155
- }) : /*#__PURE__*/_react["default"].createElement(_SuccessTick["default"], {
156
- customClass: successClassName
157
- }));
161
+ }, /*#__PURE__*/_react["default"].createElement(_SuccessTick["default"], null));
158
162
  };
159
163
 
160
164
  var _renderIconNode = function _renderIconNode() {
161
- if (!showIcon) return null;
162
- if ((0, _renderNode.isRenderable)(renderIcon)) return (0, _renderNode["default"])(renderIcon);
165
+ if (!showIcon) {
166
+ return null;
167
+ }
168
+
169
+ if ((0, _renderNode.isRenderable)(renderIcon)) {
170
+ return (0, _renderNode["default"])(renderIcon);
171
+ }
172
+
163
173
  return /*#__PURE__*/_react["default"].createElement(_Icon["default"], _extends({}, iconProps, {
164
174
  iconClass: iconClassName,
165
175
  name: iconName,
@@ -169,128 +179,59 @@ var ButtonPresentational = /*#__PURE__*/(0, _react.forwardRef)(function ButtonPr
169
179
  }));
170
180
  };
171
181
 
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
+
172
198
  var _renderContent = function _renderContent() {
173
- var shouldShowText = variant !== _constants2.VARIANT.ICON && children != null && (typeof children !== 'string' || children.trim() !== '');
199
+ var shouldShowText = variant !== _constants2.VARIANT.ICON && children !== undefined && children !== null;
174
200
  var showLoaderStart = isLoading && loaderPlacement === _constants2.LOADER_PLACEMENT.START;
175
201
  var showLoaderAfter = isLoading && loaderPlacement === _constants2.LOADER_PLACEMENT.END;
176
202
  var showSuccessStart = isSuccess && loaderPlacement === _constants2.LOADER_PLACEMENT.START;
177
203
  var showSuccessAfter = isSuccess && loaderPlacement === _constants2.LOADER_PLACEMENT.END;
178
- return /*#__PURE__*/_react["default"].createElement(_Flex["default"], _extends({
204
+ return /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
179
205
  $ui_displayMode: "flex",
180
206
  $ui_direction: "row",
181
207
  $flag_shrink: true,
182
208
  $ui_alignItems: "center",
183
209
  $ui_justifyContent: "center",
184
210
  $ui_className: contentWrapperClass
185
- }, 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({
186
- $ui_size: getTypographySize(size)
187
- }, contentProps, {
188
- tagAttributes: textAttributes,
211
+ }, showLoaderStart ? _renderLoader() : null, showSuccessStart ? _renderSuccess() : null, _renderBeforeNode(), iconPlacement === _constants2.ICON_PLACEMENT.LEFT ? _renderIconNode() : null, shouldShowText ? /*#__PURE__*/_react["default"].createElement(_Typography["default"], _extends({}, contentProps, {
189
212
  $ui_className: textClassName,
213
+ $ui_size: getTypographySize(size),
190
214
  $flag_dotted: variant !== _constants2.VARIANT.ICON
191
- }), 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);
215
+ }), children) : null, iconPlacement === _constants2.ICON_PLACEMENT.RIGHT ? _renderIconNode() : null, _renderAfterNode(), showLoaderAfter ? _renderLoader() : null, showSuccessAfter ? _renderSuccess() : null);
192
216
  };
193
217
 
194
- var containerAttributes = _objectSpread(_objectSpread({}, buttonAttributes), {}, {
195
- 'data-id': isDisabled ? "".concat(customId, "_disabled") : customId,
196
- 'data-test-id': isDisabled ? "".concat(testId, "_disabled") : testId,
197
- 'data-selector-id': dataSelectorId,
218
+ var containerAttributes = _objectSpread(_objectSpread({}, customAttributes), {}, {
219
+ 'data-id': customId,
220
+ 'data-test-id': testId,
198
221
  'data-title': title
199
222
  });
200
223
 
201
- return /*#__PURE__*/_react["default"].createElement("button", _extends({}, containerAttributes, {
202
- "aria-busy": isLoading,
203
- disabled: isDisabledState,
204
- "aria-pressed": isSelected
205
- }, a11yAttributes, {
224
+ return /*#__PURE__*/_react["default"].createElement("button", _extends({}, containerAttributes, a11yAttributes, {
206
225
  ref: ref,
207
226
  type: type,
208
227
  className: (0, _cssUtility.cn)(buttonClassName),
209
- onClick: handleClick
228
+ "aria-busy": isLoading,
229
+ "aria-disabled": isDisabledState,
230
+ "aria-readonly": isReadOnly,
231
+ "aria-pressed": isSelected,
232
+ onClick: _handleClick
210
233
  }), _renderContent(), overlayActive ? isLoading ? _renderLoader() : _renderSuccess() : null);
211
234
  });
212
- exports.ButtonPresentational = ButtonPresentational;
213
- ButtonPresentational.displayName = 'ButtonPresentational';
214
- var Button = /*#__PURE__*/(0, _react.forwardRef)(function Button(props, ref) {
215
- var palette = props.palette,
216
- appearance = props.appearance,
217
- hoverAppearance = props.hoverAppearance,
218
- selectedAppearance = props.selectedAppearance,
219
- variant = props.variant,
220
- status = props.status,
221
- loaderPlacement = props.loaderPlacement,
222
- size = props.size,
223
- iconName = props.iconName,
224
- iconSize = props.iconSize,
225
- iconPlacement = props.iconPlacement,
226
- renderIcon = props.renderIcon,
227
- renderBefore = props.renderBefore,
228
- renderAfter = props.renderAfter,
229
- renderLoader = props.renderLoader,
230
- renderSuccess = props.renderSuccess,
231
- children = props.children,
232
- type = props.type,
233
- onClick = props.onClick,
234
- isDisabled = props.isDisabled,
235
- isSelected = props.isSelected,
236
- shape = props.shape,
237
- disabledAppearance = props.disabledAppearance,
238
- title = props.title,
239
- customProps = props.customProps,
240
- customAttributes = props.customAttributes,
241
- a11yAttributes = props.a11yAttributes,
242
- customId = props.customId,
243
- testId = props.testId,
244
- dataSelectorId = props.dataSelectorId;
245
- var isLoading = status === _constants2.STATUS.LOADING;
246
- var isSuccess = status === _constants2.STATUS.SUCCESS;
247
- var isDisabledState = isDisabled || isLoading;
248
- var overlayActive = (isLoading || isSuccess) && loaderPlacement === _constants2.LOADER_PLACEMENT.OVERLAY;
249
- var classNames = (0, _react.useMemo)(function () {
250
- return (0, _cssJSLogic["default"])({
251
- props: props
252
- });
253
- }, [palette, appearance, hoverAppearance, selectedAppearance, size, variant, status, isDisabled, isSelected, shape, loaderPlacement, disabledAppearance, props.customClass]);
254
-
255
- var handleClick = function handleClick(event) {
256
- if (isDisabledState) return;
257
- onClick(event);
258
- };
259
-
260
- var essentials = {
261
- isLoading: isLoading,
262
- isSuccess: isSuccess,
263
- isDisabled: isDisabled,
264
- isDisabledState: isDisabledState,
265
- overlayActive: overlayActive,
266
- variant: variant,
267
- iconPlacement: iconPlacement,
268
- loaderPlacement: loaderPlacement,
269
- size: size,
270
- iconName: iconName,
271
- iconSize: iconSize,
272
- renderIcon: renderIcon,
273
- renderBefore: renderBefore,
274
- renderAfter: renderAfter,
275
- renderLoader: renderLoader,
276
- renderSuccess: renderSuccess,
277
- children: children,
278
- type: type,
279
- isSelected: isSelected,
280
- title: title,
281
- customProps: customProps,
282
- customAttributes: customAttributes,
283
- a11yAttributes: a11yAttributes,
284
- customId: customId,
285
- testId: testId,
286
- dataSelectorId: dataSelectorId,
287
- handleClick: handleClick
288
- };
289
- return /*#__PURE__*/_react["default"].createElement(ButtonPresentational, _extends({}, essentials, {
290
- classNames: classNames,
291
- ref: ref
292
- }));
293
- });
294
235
  Button.propTypes = _propTypes["default"];
295
236
  Button.defaultProps = _defaultProps["default"];
296
237
  Button.displayName = 'Button';
@@ -62,9 +62,8 @@ import Button from '@zohodesk/components/es/v1/Button/Button';
62
62
  | `customId` | `string` | — | `data-id` attribute for automation |
63
63
  | `testId` | `string` | — | `data-test-id` attribute for testing |
64
64
  | `palette` | `oneOf: default, primary, secondary, danger, success` | `default` | Color palette |
65
- | `appearance` | `array of: border, text, bg` | `['bg', 'border']` | Which treatments are colored at rest |
66
- | `hoverAppearance` | `array of: border, text, bg` | `['bg', 'border']` | Which treatments are colored on hover/focus/active |
67
- | `selectedAppearance` | `array of: border, text, bg` | `['bg', 'border']` | Which treatments are colored when `isSelected` |
65
+ | `bgAppearance` | `oneOf: filled, onHover, none` | `filled` | Background behavior |
66
+ | `borderAppearance` | `oneOf: default, onHover, none` | `default` | Border behavior |
68
67
  | `variant` | `oneOf: text, icon, iconWithText` | `text` | Display variant |
69
68
  | `size` | `oneOf: small, medium, large, full` | `medium` | Size variant |
70
69
  | `status` | `oneOf: default, loading, success` | `default` | Status state |