react-bootstrap-v5
Version:
Bootstrap 4 components built with React
31 lines (29 loc) • 1.53 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
import classNames from 'classnames';
import React, { useContext } from 'react';
import FormContext from './FormContext';
import FormFileButton from './FormFileButton';
import FormFileText from './FormFileText';
import { useBootstrapPrefix } from './ThemeProvider';
var FormFileLabel = React.forwardRef(function (_ref, ref) {
var bsPrefix = _ref.bsPrefix,
className = _ref.className,
htmlFor = _ref.htmlFor,
_ref$label = _ref.label,
label = _ref$label === void 0 ? 'Choose file...' : _ref$label,
_ref$button = _ref.button,
button = _ref$button === void 0 ? 'Browse' : _ref$button,
children = _ref.children,
props = _objectWithoutPropertiesLoose(_ref, ["bsPrefix", "className", "htmlFor", "label", "button", "children"]);
var _useContext = useContext(FormContext),
controlId = _useContext.controlId;
bsPrefix = useBootstrapPrefix(bsPrefix, 'form-file-label');
return /*#__PURE__*/React.createElement("label", _extends({}, props, {
ref: ref,
htmlFor: htmlFor || controlId,
className: classNames(className, bsPrefix)
}), children || /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormFileText, null, label), /*#__PURE__*/React.createElement(FormFileButton, null, button)));
});
FormFileLabel.displayName = 'FormFileLabel';
export default FormFileLabel;