@zohodesk/components
Version:
In this Package, we Provide Some Basic Components to Build Web App
84 lines (70 loc) • 3.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = Button;
var _react = _interopRequireDefault(require("react"));
var _defaultProps = require("./props/defaultProps");
var _propTypes = require("./props/propTypes");
var _cssJSLogic2 = _interopRequireDefault(require("./css/cssJSLogic"));
var _utils = require("@zohodesk/utils");
var _ButtonModule = _interopRequireDefault(require("./css/Button.module.css"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
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); }
/*
Button text and children props?
use children for both cases
toLowerCase check needed?
*/
/* eslint css-modules/no-unused-class: [2, { markAsUsed: ['small','medium','large','xlarge','button_medium','button_small','primary','primaryfilled','danger','dangerfilled','plainprimary', 'plainsecondary', 'secondary', 'secondaryfilled', 'successFilled','tertiaryFilled'] }] */
function Button(props) {
var text = props.text,
disabled = props.disabled,
onClick = props.onClick,
status = props.status,
children = props.children,
dataId = props.dataId,
needAppearance = props.needAppearance,
getRef = props.getRef,
title = props.title,
dataSelectorId = props.dataSelectorId,
customProps = props.customProps,
customStyle = props.customStyle,
a11y = props.a11y,
id = props.id;
var finalStyle = (0, _utils.mergeStyle)(_ButtonModule["default"], customStyle);
var _cssJSLogic = (0, _cssJSLogic2["default"])({
props: props,
style: finalStyle
}),
buttonClass = _cssJSLogic.buttonClass,
loaderParentClass = _cssJSLogic.loaderParentClass,
loaderChildClass = _cssJSLogic.loaderChildClass;
var statusLower = status.toLowerCase();
return /*#__PURE__*/_react["default"].createElement("button", _extends({
className: buttonClass,
"data-id": disabled ? "".concat(dataId, "_disabled") : dataId,
"data-test-id": disabled ? "".concat(dataId, "_disabled") : dataId,
disabled: disabled || statusLower === 'loading',
onClick: onClick,
"data-title": title,
type: "button",
ref: getRef,
"data-selector-id": dataSelectorId
}, customProps, a11y, {
id: id
}), children ? children : text, statusLower !== 'none' && needAppearance && /*#__PURE__*/_react["default"].createElement("div", {
className: finalStyle.overlay
}, /*#__PURE__*/_react["default"].createElement("div", {
className: loaderParentClass
}, /*#__PURE__*/_react["default"].createElement("div", {
className: loaderChildClass
}))));
}
Button.defaultProps = _defaultProps.defaultProps;
Button.propTypes = _propTypes.propTypes; // if (__DOCS__) {
// Button.docs = {
// componentGroup: 'Form Elements',
// folderName: 'Style Guide'
// };
// }