Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 
 

109 řádky
3.8 KiB

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