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

3 лет назад
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import _extends from "@babel/runtime/helpers/esm/extends";
  2. import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
  3. import isobject from 'lodash.isobject';
  4. import React from 'react';
  5. import PropTypes from 'prop-types';
  6. import classNames from 'classnames';
  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.bool, PropTypes.number, PropTypes.string, PropTypes.shape({
  11. size: PropTypes.oneOfType([PropTypes.bool, PropTypes.number, PropTypes.string]),
  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. tag: tagPropType,
  19. xs: columnProps,
  20. sm: columnProps,
  21. md: columnProps,
  22. lg: columnProps,
  23. xl: columnProps,
  24. className: PropTypes.string,
  25. cssModule: PropTypes.object,
  26. widths: PropTypes.array
  27. };
  28. var defaultProps = {
  29. tag: 'div',
  30. widths: colWidths
  31. };
  32. var getColumnSizeClass = function getColumnSizeClass(isXs, colWidth, colSize) {
  33. if (colSize === true || colSize === '') {
  34. return isXs ? 'col' : "col-" + colWidth;
  35. } else if (colSize === 'auto') {
  36. return isXs ? 'col-auto' : "col-" + colWidth + "-auto";
  37. }
  38. return isXs ? "col-" + colSize : "col-" + colWidth + "-" + colSize;
  39. };
  40. var Col = function Col(props) {
  41. var className = props.className,
  42. cssModule = props.cssModule,
  43. widths = props.widths,
  44. Tag = props.tag,
  45. attributes = _objectWithoutPropertiesLoose(props, ["className", "cssModule", "widths", "tag"]);
  46. var colClasses = [];
  47. widths.forEach(function (colWidth, i) {
  48. var columnProp = props[colWidth];
  49. delete attributes[colWidth];
  50. if (!columnProp && columnProp !== '') {
  51. return;
  52. }
  53. var isXs = !i;
  54. if (isobject(columnProp)) {
  55. var _classNames;
  56. var colSizeInterfix = isXs ? '-' : "-" + colWidth + "-";
  57. var colClass = getColumnSizeClass(isXs, colWidth, columnProp.size);
  58. 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));
  59. } else {
  60. var _colClass = getColumnSizeClass(isXs, colWidth, columnProp);
  61. colClasses.push(_colClass);
  62. }
  63. });
  64. if (!colClasses.length) {
  65. colClasses.push('col');
  66. }
  67. var classes = mapToCssModules(classNames(className, colClasses), cssModule);
  68. return React.createElement(Tag, _extends({}, attributes, {
  69. className: classes
  70. }));
  71. };
  72. Col.propTypes = propTypes;
  73. Col.defaultProps = defaultProps;
  74. export default Col;