UNPKG

6.52 kBJavaScriptView Raw
1'use strict';
2
3exports.__esModule = true;
4
5var _extends2 = require('babel-runtime/helpers/extends');
6
7var _extends3 = _interopRequireDefault(_extends2);
8
9var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
10
11var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
12
13var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
14
15var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
16
17var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
18
19var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
20
21var _inherits2 = require('babel-runtime/helpers/inherits');
22
23var _inherits3 = _interopRequireDefault(_inherits2);
24
25var _classnames = require('classnames');
26
27var _classnames2 = _interopRequireDefault(_classnames);
28
29var _react = require('react');
30
31var _react2 = _interopRequireDefault(_react);
32
33var _propTypes = require('prop-types');
34
35var _propTypes2 = _interopRequireDefault(_propTypes);
36
37var _elementType = require('prop-types-extra/lib/elementType');
38
39var _elementType2 = _interopRequireDefault(_elementType);
40
41var _bootstrapUtils = require('./utils/bootstrapUtils');
42
43var _StyleConfig = require('./utils/StyleConfig');
44
45function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
46
47var propTypes = {
48 componentClass: _elementType2.default,
49
50 /**
51 * The number of columns you wish to span
52 *
53 * for Extra small devices Phones (<768px)
54 *
55 * class-prefix `col-xs-`
56 */
57 xs: _propTypes2.default.number,
58 /**
59 * The number of columns you wish to span
60 *
61 * for Small devices Tablets (≥768px)
62 *
63 * class-prefix `col-sm-`
64 */
65 sm: _propTypes2.default.number,
66 /**
67 * The number of columns you wish to span
68 *
69 * for Medium devices Desktops (≥992px)
70 *
71 * class-prefix `col-md-`
72 */
73 md: _propTypes2.default.number,
74 /**
75 * The number of columns you wish to span
76 *
77 * for Large devices Desktops (≥1200px)
78 *
79 * class-prefix `col-lg-`
80 */
81 lg: _propTypes2.default.number,
82 /**
83 * Hide column
84 *
85 * on Extra small devices Phones
86 *
87 * adds class `hidden-xs`
88 */
89 xsHidden: _propTypes2.default.bool,
90 /**
91 * Hide column
92 *
93 * on Small devices Tablets
94 *
95 * adds class `hidden-sm`
96 */
97 smHidden: _propTypes2.default.bool,
98 /**
99 * Hide column
100 *
101 * on Medium devices Desktops
102 *
103 * adds class `hidden-md`
104 */
105 mdHidden: _propTypes2.default.bool,
106 /**
107 * Hide column
108 *
109 * on Large devices Desktops
110 *
111 * adds class `hidden-lg`
112 */
113 lgHidden: _propTypes2.default.bool,
114 /**
115 * Move columns to the right
116 *
117 * for Extra small devices Phones
118 *
119 * class-prefix `col-xs-offset-`
120 */
121 xsOffset: _propTypes2.default.number,
122 /**
123 * Move columns to the right
124 *
125 * for Small devices Tablets
126 *
127 * class-prefix `col-sm-offset-`
128 */
129 smOffset: _propTypes2.default.number,
130 /**
131 * Move columns to the right
132 *
133 * for Medium devices Desktops
134 *
135 * class-prefix `col-md-offset-`
136 */
137 mdOffset: _propTypes2.default.number,
138 /**
139 * Move columns to the right
140 *
141 * for Large devices Desktops
142 *
143 * class-prefix `col-lg-offset-`
144 */
145 lgOffset: _propTypes2.default.number,
146 /**
147 * Change the order of grid columns to the right
148 *
149 * for Extra small devices Phones
150 *
151 * class-prefix `col-xs-push-`
152 */
153 xsPush: _propTypes2.default.number,
154 /**
155 * Change the order of grid columns to the right
156 *
157 * for Small devices Tablets
158 *
159 * class-prefix `col-sm-push-`
160 */
161 smPush: _propTypes2.default.number,
162 /**
163 * Change the order of grid columns to the right
164 *
165 * for Medium devices Desktops
166 *
167 * class-prefix `col-md-push-`
168 */
169 mdPush: _propTypes2.default.number,
170 /**
171 * Change the order of grid columns to the right
172 *
173 * for Large devices Desktops
174 *
175 * class-prefix `col-lg-push-`
176 */
177 lgPush: _propTypes2.default.number,
178 /**
179 * Change the order of grid columns to the left
180 *
181 * for Extra small devices Phones
182 *
183 * class-prefix `col-xs-pull-`
184 */
185 xsPull: _propTypes2.default.number,
186 /**
187 * Change the order of grid columns to the left
188 *
189 * for Small devices Tablets
190 *
191 * class-prefix `col-sm-pull-`
192 */
193 smPull: _propTypes2.default.number,
194 /**
195 * Change the order of grid columns to the left
196 *
197 * for Medium devices Desktops
198 *
199 * class-prefix `col-md-pull-`
200 */
201 mdPull: _propTypes2.default.number,
202 /**
203 * Change the order of grid columns to the left
204 *
205 * for Large devices Desktops
206 *
207 * class-prefix `col-lg-pull-`
208 */
209 lgPull: _propTypes2.default.number
210};
211
212var defaultProps = {
213 componentClass: 'div'
214};
215
216var Col = function (_React$Component) {
217 (0, _inherits3.default)(Col, _React$Component);
218
219 function Col() {
220 (0, _classCallCheck3.default)(this, Col);
221 return (0, _possibleConstructorReturn3.default)(this, _React$Component.apply(this, arguments));
222 }
223
224 Col.prototype.render = function render() {
225 var _props = this.props,
226 Component = _props.componentClass,
227 className = _props.className,
228 props = (0, _objectWithoutProperties3.default)(_props, ['componentClass', 'className']);
229
230 var _splitBsProps = (0, _bootstrapUtils.splitBsProps)(props),
231 bsProps = _splitBsProps[0],
232 elementProps = _splitBsProps[1];
233
234 var classes = [];
235
236 _StyleConfig.DEVICE_SIZES.forEach(function (size) {
237 function popProp(propSuffix, modifier) {
238 var propName = '' + size + propSuffix;
239 var propValue = elementProps[propName];
240
241 if (propValue != null) {
242 classes.push((0, _bootstrapUtils.prefix)(bsProps, '' + size + modifier + '-' + propValue));
243 }
244
245 delete elementProps[propName];
246 }
247
248 popProp('', '');
249 popProp('Offset', '-offset');
250 popProp('Push', '-push');
251 popProp('Pull', '-pull');
252
253 var hiddenPropName = size + 'Hidden';
254 if (elementProps[hiddenPropName]) {
255 classes.push('hidden-' + size);
256 }
257 delete elementProps[hiddenPropName];
258 });
259
260 return _react2.default.createElement(Component, (0, _extends3.default)({}, elementProps, { className: (0, _classnames2.default)(className, classes) }));
261 };
262
263 return Col;
264}(_react2.default.Component);
265
266Col.propTypes = propTypes;
267Col.defaultProps = defaultProps;
268
269exports.default = (0, _bootstrapUtils.bsClass)('col', Col);
270module.exports = exports['default'];
\No newline at end of file