Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

3 лет назад
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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, deprecated, 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. push: deprecated(stringOrNumberProp, 'Please use the prop "order"'),
  13. pull: deprecated(stringOrNumberProp, 'Please use the prop "order"'),
  14. order: stringOrNumberProp,
  15. offset: stringOrNumberProp
  16. })]);
  17. var propTypes = {
  18. children: PropTypes.node,
  19. hidden: PropTypes.bool,
  20. check: PropTypes.bool,
  21. size: PropTypes.string,
  22. for: PropTypes.string,
  23. tag: tagPropType,
  24. className: PropTypes.string,
  25. cssModule: PropTypes.object,
  26. xs: columnProps,
  27. sm: columnProps,
  28. md: columnProps,
  29. lg: columnProps,
  30. xl: columnProps,
  31. widths: PropTypes.array
  32. };
  33. var defaultProps = {
  34. tag: 'label',
  35. widths: colWidths
  36. };
  37. var getColumnSizeClass = function getColumnSizeClass(isXs, colWidth, colSize) {
  38. if (colSize === true || colSize === '') {
  39. return isXs ? 'col' : "col-" + colWidth;
  40. } else if (colSize === 'auto') {
  41. return isXs ? 'col-auto' : "col-" + colWidth + "-auto";
  42. }
  43. return isXs ? "col-" + colSize : "col-" + colWidth + "-" + colSize;
  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. var colClasses = [];
  56. widths.forEach(function (colWidth, i) {
  57. var columnProp = props[colWidth];
  58. delete attributes[colWidth];
  59. if (!columnProp && columnProp !== '') {
  60. return;
  61. }
  62. var isXs = !i;
  63. var colClass;
  64. if (isobject(columnProp)) {
  65. var _classNames;
  66. var colSizeInterfix = isXs ? '-' : "-" + colWidth + "-";
  67. colClass = getColumnSizeClass(isXs, colWidth, columnProp.size);
  68. 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);
  69. } else {
  70. colClass = getColumnSizeClass(isXs, colWidth, columnProp);
  71. colClasses.push(colClass);
  72. }
  73. });
  74. 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);
  75. return React.createElement(Tag, _extends({
  76. htmlFor: htmlFor
  77. }, attributes, {
  78. className: classes
  79. }));
  80. };
  81. Label.propTypes = propTypes;
  82. Label.defaultProps = defaultProps;
  83. export default Label;