1 | import _extends from "@babel/runtime/helpers/esm/extends";
|
2 | import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
3 | import React from 'react';
|
4 | import PropTypes from 'prop-types';
|
5 | import classNames from 'classnames';
|
6 | import isobject from 'lodash.isobject';
|
7 | import { mapToCssModules, tagPropType } from './utils';
|
8 | var colWidths = ['xs', 'sm', 'md', 'lg', 'xl'];
|
9 | var stringOrNumberProp = PropTypes.oneOfType([PropTypes.number, PropTypes.string]);
|
10 | var columnProps = PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.shape({
|
11 | size: stringOrNumberProp,
|
12 | order: stringOrNumberProp,
|
13 | offset: stringOrNumberProp
|
14 | })]);
|
15 | var propTypes = {
|
16 | children: PropTypes.node,
|
17 | hidden: PropTypes.bool,
|
18 | check: PropTypes.bool,
|
19 | size: PropTypes.string,
|
20 | for: PropTypes.string,
|
21 | tag: tagPropType,
|
22 | className: PropTypes.string,
|
23 | cssModule: PropTypes.object,
|
24 | xs: columnProps,
|
25 | sm: columnProps,
|
26 | md: columnProps,
|
27 | lg: columnProps,
|
28 | xl: columnProps,
|
29 | widths: PropTypes.array
|
30 | };
|
31 | var defaultProps = {
|
32 | tag: 'label',
|
33 | widths: colWidths
|
34 | };
|
35 |
|
36 | var getColumnSizeClass = function getColumnSizeClass(isXs, colWidth, colSize) {
|
37 | if (colSize === true || colSize === '') {
|
38 | return isXs ? 'col' : "col-" + colWidth;
|
39 | } else if (colSize === 'auto') {
|
40 | return isXs ? 'col-auto' : "col-" + colWidth + "-auto";
|
41 | }
|
42 |
|
43 | return isXs ? "col-" + colSize : "col-" + colWidth + "-" + colSize;
|
44 | };
|
45 |
|
46 | var Label = function Label(props) {
|
47 | var className = props.className,
|
48 | cssModule = props.cssModule,
|
49 | hidden = props.hidden,
|
50 | widths = props.widths,
|
51 | Tag = props.tag,
|
52 | check = props.check,
|
53 | size = props.size,
|
54 | htmlFor = props.for,
|
55 | attributes = _objectWithoutPropertiesLoose(props, ["className", "cssModule", "hidden", "widths", "tag", "check", "size", "for"]);
|
56 |
|
57 | var colClasses = [];
|
58 | widths.forEach(function (colWidth, i) {
|
59 | var columnProp = props[colWidth];
|
60 | delete attributes[colWidth];
|
61 |
|
62 | if (!columnProp && columnProp !== '') {
|
63 | return;
|
64 | }
|
65 |
|
66 | var isXs = !i;
|
67 | var colClass;
|
68 |
|
69 | if (isobject(columnProp)) {
|
70 | var _classNames;
|
71 |
|
72 | var colSizeInterfix = isXs ? '-' : "-" + colWidth + "-";
|
73 | colClass = getColumnSizeClass(isXs, colWidth, columnProp.size);
|
74 | colClasses.push(mapToCssModules(classNames((_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);
|
75 | } else {
|
76 | colClass = getColumnSizeClass(isXs, colWidth, columnProp);
|
77 | colClasses.push(colClass);
|
78 | }
|
79 | });
|
80 | var classes = mapToCssModules(classNames(className, hidden ? 'sr-only' : false, check ? 'form-check-label' : false, size ? "col-form-label-" + size : false, colClasses, colClasses.length ? 'col-form-label' : false), cssModule);
|
81 | return React.createElement(Tag, _extends({
|
82 | htmlFor: htmlFor
|
83 | }, attributes, {
|
84 | className: classes
|
85 | }));
|
86 | };
|
87 |
|
88 | Label.propTypes = propTypes;
|
89 | Label.defaultProps = defaultProps;
|
90 | export default Label; |
\ | No newline at end of file |