UNPKG

3.75 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _extends = Object.assign || 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; };
8
9var _react = require('react');
10
11var _react2 = _interopRequireDefault(_react);
12
13var _classnames = require('classnames');
14
15var _classnames2 = _interopRequireDefault(_classnames);
16
17var _utils = require('./utils');
18
19function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
21function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
22
23function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
24
25var colSizes = ['xs', 'sm', 'md', 'lg', 'xl'];
26
27var stringOrNumberProp = _react.PropTypes.oneOfType([_react.PropTypes.number, _react.PropTypes.string]);
28
29var columnProps = _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.number, _react.PropTypes.shape({
30 size: stringOrNumberProp,
31 push: stringOrNumberProp,
32 pull: stringOrNumberProp,
33 offset: stringOrNumberProp
34})]);
35
36var propTypes = {
37 children: _react.PropTypes.node,
38 hidden: _react.PropTypes.bool,
39 check: _react.PropTypes.bool,
40 inline: _react.PropTypes.bool,
41 disabled: _react.PropTypes.bool,
42 size: _react.PropTypes.string,
43 for: _react.PropTypes.string,
44 tag: _react.PropTypes.string,
45 className: _react.PropTypes.string,
46 cssModule: _react.PropTypes.object,
47 xs: columnProps,
48 sm: columnProps,
49 md: columnProps,
50 lg: columnProps,
51 xl: columnProps
52};
53
54var defaultProps = {
55 tag: 'label'
56};
57
58var Label = function Label(props) {
59 var className = props.className,
60 cssModule = props.cssModule,
61 hidden = props.hidden,
62 Tag = props.tag,
63 check = props.check,
64 inline = props.inline,
65 disabled = props.disabled,
66 size = props.size,
67 htmlFor = props.for,
68 attributes = _objectWithoutProperties(props, ['className', 'cssModule', 'hidden', 'tag', 'check', 'inline', 'disabled', 'size', 'for']);
69
70 var colClasses = [];
71
72 colSizes.forEach(function (colSize) {
73 var columnProp = props[colSize];
74 delete attributes[colSize];
75
76 if (columnProp && columnProp.size) {
77 var _classNames;
78
79 colClasses.push((0, _utils.mapToCssModules)((0, _classnames2.default)((_classNames = {}, _defineProperty(_classNames, 'col-' + colSize + '-' + columnProp.size, columnProp.size), _defineProperty(_classNames, 'push-' + colSize + '-' + columnProp.push, columnProp.push), _defineProperty(_classNames, 'pull-' + colSize + '-' + columnProp.pull, columnProp.pull), _defineProperty(_classNames, 'offset-' + colSize + '-' + columnProp.offset, columnProp.offset), _classNames))), cssModule);
80 } else if (columnProp) {
81 colClasses.push('col-' + colSize + '-' + columnProp);
82 }
83 });
84
85 var classes = (0, _utils.mapToCssModules)((0, _classnames2.default)(className, hidden ? 'sr-only' : false, check ? 'form-check-' + (inline ? 'inline' : 'label') : false, check && inline && disabled ? 'disabled' : false, size ? 'col-form-label-' + size : false, colClasses, colClasses.length ? 'col-form-label' : false), cssModule);
86
87 return _react2.default.createElement(Tag, _extends({ htmlFor: htmlFor }, attributes, { className: classes }));
88};
89
90Label.propTypes = propTypes;
91Label.defaultProps = defaultProps;
92
93exports.default = Label;
\No newline at end of file