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