UNPKG

@lskjs/navbar

Version:
120 lines (97 loc) 3.6 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _classnames = _interopRequireDefault(require("classnames")); var _propTypes = _interopRequireDefault(require("prop-types")); var _react = _interopRequireDefault(require("react")); var _SafeAnchor = _interopRequireDefault(require("./SafeAnchor")); var _ThemeProvider = require("./ThemeProvider"); var propTypes = { /** * @default 'btn' */ bsPrefix: _propTypes["default"].string, /** * One or more button variant combinations * * buttons may be one of a variety of visual variants such as: * * `'primary', 'secondary', 'success', 'danger', 'warning', 'info', 'dark', 'light', 'link'` * * as well as "outline" versions (prefixed by 'outline-*') * * `'outline-primary', 'outline-secondary', 'outline-success', 'outline-danger', 'outline-warning', 'outline-info', 'outline-dark', 'outline-light'` */ variant: _propTypes["default"].string, /** * Specifies a large or small button. * * @type ('sm'|'lg') */ size: _propTypes["default"].string, /** Spans the full width of the Button parent */ block: _propTypes["default"].bool, /** Manually set the visual state of the button to `:active` */ active: _propTypes["default"].bool, /** * Disables the Button, preventing mouse events, * even if the underlying component is an `<a>` element */ disabled: _propTypes["default"].bool, /** Providing a `href` will render an `<a>` element, _styled_ as a button. */ href: _propTypes["default"].string, /** * Defines HTML button type attribute. * * @default 'button' */ type: _propTypes["default"].oneOf(['button', 'reset', 'submit', null]), as: _propTypes["default"].elementType }; var defaultProps = { variant: 'primary', active: false, disabled: false, type: 'button' }; var Button = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) { var bsPrefix = _ref.bsPrefix, variant = _ref.variant, size = _ref.size, active = _ref.active, className = _ref.className, block = _ref.block, type = _ref.type, as = _ref.as, props = (0, _objectWithoutProperties2["default"])(_ref, ["bsPrefix", "variant", "size", "active", "className", "block", "type", "as"]); var prefix = (0, _ThemeProvider.useBootstrapPrefix)(bsPrefix, 'btn'); var classes = (0, _classnames["default"])(className, prefix, active && 'active', "".concat(prefix, "-").concat(variant), block && "".concat(prefix, "-block"), size && "".concat(prefix, "-").concat(size)); if (props.href) { return /*#__PURE__*/_react["default"].createElement(_SafeAnchor["default"], (0, _extends2["default"])({}, props, { as: as, ref: ref, className: (0, _classnames["default"])(classes, props.disabled && 'disabled') })); } if (ref) { props.ref = ref; } if (!as) { props.type = type; } var Component = as || 'button'; return /*#__PURE__*/_react["default"].createElement(Component, (0, _extends2["default"])({}, props, { className: classes })); }); Button.displayName = 'Button'; Button.propTypes = propTypes; Button.defaultProps = defaultProps; var _default = Button; exports["default"] = _default; //# sourceMappingURL=Button.js.map