UNPKG

3.74 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5exports.__esModule = true;
6exports.default = void 0;
7
8var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
10var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
12var _react = _interopRequireDefault(require("react"));
13
14var _propTypes = _interopRequireDefault(require("prop-types"));
15
16var _classnames = _interopRequireDefault(require("classnames"));
17
18var _utils = require("./utils");
19
20var colWidths = ['xs', 'sm', 'md', 'lg', 'xl'];
21
22var stringOrNumberProp = _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]);
23
24var columnProps = _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.string, _propTypes.default.number, _propTypes.default.shape({
25 size: stringOrNumberProp,
26 order: stringOrNumberProp,
27 offset: stringOrNumberProp
28})]);
29
30var propTypes = {
31 children: _propTypes.default.node,
32 hidden: _propTypes.default.bool,
33 check: _propTypes.default.bool,
34 size: _propTypes.default.string,
35 for: _propTypes.default.string,
36 tag: _utils.tagPropType,
37 className: _propTypes.default.string,
38 cssModule: _propTypes.default.object,
39 xs: columnProps,
40 sm: columnProps,
41 md: columnProps,
42 lg: columnProps,
43 xl: columnProps,
44 widths: _propTypes.default.array
45};
46var defaultProps = {
47 tag: 'label',
48 widths: colWidths
49};
50
51var getColumnSizeClass = function getColumnSizeClass(isXs, colWidth, colSize) {
52 if (colSize === true || colSize === '') {
53 return isXs ? 'col' : "col-" + colWidth;
54 } else if (colSize === 'auto') {
55 return isXs ? 'col-auto' : "col-" + colWidth + "-auto";
56 }
57
58 return isXs ? "col-" + colSize : "col-" + colWidth + "-" + colSize;
59};
60
61var Label = function Label(props) {
62 var className = props.className,
63 cssModule = props.cssModule,
64 hidden = props.hidden,
65 widths = props.widths,
66 Tag = props.tag,
67 check = props.check,
68 size = props.size,
69 htmlFor = props.for,
70 attributes = (0, _objectWithoutPropertiesLoose2.default)(props, ["className", "cssModule", "hidden", "widths", "tag", "check", "size", "for"]);
71 var colClasses = [];
72 widths.forEach(function (colWidth, i) {
73 var columnProp = props[colWidth];
74 delete attributes[colWidth];
75
76 if (!columnProp && columnProp !== '') {
77 return;
78 }
79
80 var isXs = !i;
81 var colClass;
82
83 if ((0, _utils.isObject)(columnProp)) {
84 var _classNames;
85
86 var colSizeInterfix = isXs ? '-' : "-" + colWidth + "-";
87 colClass = getColumnSizeClass(isXs, colWidth, columnProp.size);
88 colClasses.push((0, _utils.mapToCssModules)((0, _classnames.default)((_classNames = {}, _classNames[colClass] = columnProp.size || columnProp.size === '', _classNames["order" + colSizeInterfix + columnProp.order] = columnProp.order || columnProp.order === 0, _classNames["offset" + colSizeInterfix + columnProp.offset] = columnProp.offset || columnProp.offset === 0, _classNames))), cssModule);
89 } else {
90 colClass = getColumnSizeClass(isXs, colWidth, columnProp);
91 colClasses.push(colClass);
92 }
93 });
94 var classes = (0, _utils.mapToCssModules)((0, _classnames.default)(className, hidden ? 'sr-only' : false, check ? 'form-check-label' : false, size ? "col-form-label-" + size : false, colClasses, colClasses.length ? 'col-form-label' : false), cssModule);
95 return /*#__PURE__*/_react.default.createElement(Tag, (0, _extends2.default)({
96 htmlFor: htmlFor
97 }, attributes, {
98 className: classes
99 }));
100};
101
102Label.propTypes = propTypes;
103Label.defaultProps = defaultProps;
104var _default = Label;
105exports.default = _default;
\No newline at end of file