25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

Button.js 3.8 KiB

3 yıl önce
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. exports.__esModule = true;
  4. exports.default = void 0;
  5. var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  6. var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
  7. var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
  8. var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
  9. var _react = _interopRequireDefault(require("react"));
  10. var _propTypes = _interopRequireDefault(require("prop-types"));
  11. var _classnames = _interopRequireDefault(require("classnames"));
  12. var _utils = require("./utils");
  13. var propTypes = {
  14. active: _propTypes.default.bool,
  15. 'aria-label': _propTypes.default.string,
  16. block: _propTypes.default.bool,
  17. color: _propTypes.default.string,
  18. disabled: _propTypes.default.bool,
  19. outline: _propTypes.default.bool,
  20. tag: _utils.tagPropType,
  21. innerRef: _propTypes.default.oneOfType([_propTypes.default.object, _propTypes.default.func, _propTypes.default.string]),
  22. onClick: _propTypes.default.func,
  23. size: _propTypes.default.string,
  24. children: _propTypes.default.node,
  25. className: _propTypes.default.string,
  26. cssModule: _propTypes.default.object,
  27. close: _propTypes.default.bool
  28. };
  29. var defaultProps = {
  30. color: 'secondary',
  31. tag: 'button'
  32. };
  33. var Button =
  34. /*#__PURE__*/
  35. function (_React$Component) {
  36. (0, _inheritsLoose2.default)(Button, _React$Component);
  37. function Button(props) {
  38. var _this;
  39. _this = _React$Component.call(this, props) || this;
  40. _this.onClick = _this.onClick.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
  41. return _this;
  42. }
  43. var _proto = Button.prototype;
  44. _proto.onClick = function onClick(e) {
  45. if (this.props.disabled) {
  46. e.preventDefault();
  47. return;
  48. }
  49. if (this.props.onClick) {
  50. this.props.onClick(e);
  51. }
  52. };
  53. _proto.render = function render() {
  54. var _this$props = this.props,
  55. active = _this$props.active,
  56. ariaLabel = _this$props['aria-label'],
  57. block = _this$props.block,
  58. className = _this$props.className,
  59. close = _this$props.close,
  60. cssModule = _this$props.cssModule,
  61. color = _this$props.color,
  62. outline = _this$props.outline,
  63. size = _this$props.size,
  64. Tag = _this$props.tag,
  65. innerRef = _this$props.innerRef,
  66. attributes = (0, _objectWithoutPropertiesLoose2.default)(_this$props, ["active", "aria-label", "block", "className", "close", "cssModule", "color", "outline", "size", "tag", "innerRef"]);
  67. if (close && typeof attributes.children === 'undefined') {
  68. attributes.children = _react.default.createElement("span", {
  69. "aria-hidden": true
  70. }, "\xD7");
  71. }
  72. var btnOutlineColor = "btn" + (outline ? '-outline' : '') + "-" + color;
  73. var classes = (0, _utils.mapToCssModules)((0, _classnames.default)(className, {
  74. close: close
  75. }, close || 'btn', close || btnOutlineColor, size ? "btn-" + size : false, block ? 'btn-block' : false, {
  76. active: active,
  77. disabled: this.props.disabled
  78. }), cssModule);
  79. if (attributes.href && Tag === 'button') {
  80. Tag = 'a';
  81. }
  82. var defaultAriaLabel = close ? 'Close' : null;
  83. return _react.default.createElement(Tag, (0, _extends2.default)({
  84. type: Tag === 'button' && attributes.onClick ? 'button' : undefined
  85. }, attributes, {
  86. className: classes,
  87. ref: innerRef,
  88. onClick: this.onClick,
  89. "aria-label": ariaLabel || defaultAriaLabel
  90. }));
  91. };
  92. return Button;
  93. }(_react.default.Component);
  94. Button.propTypes = propTypes;
  95. Button.defaultProps = defaultProps;
  96. var _default = Button;
  97. exports.default = _default;