sophia-components
Version:
Sophia React Components based on bulma.io
103 lines (75 loc) • 4.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _compose = require('recompose/compose');
var _compose2 = _interopRequireDefault(_compose);
var _withAttrs = require('../base/withAttrs');
var _withAttrs2 = _interopRequireDefault(_withAttrs);
var _withIsHas = require('../base/withIsHas');
var _withIsHas2 = _interopRequireDefault(_withIsHas);
var _helpers = require('../utils/helpers');
var _withEvents = require('../base/withEvents');
var _withEvents2 = _interopRequireDefault(_withEvents);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } /* eslint-disable no-confusing-arrow */
var sizes = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven'];
var offsetSizes = [].concat(_toConsumableArray(sizes.map(function (size) {
return 'offset' + (0, _helpers.capitalizeFirstLetter)(size);
})));
var reduceSizesToArray = function reduceSizesToArray(props) {
return function (acum, size, index) {
return !props[size] ? acum : [].concat(_toConsumableArray(acum), [{ size: index + 1, value: props[size] }]);
};
};
var mapSizeToClasses = function mapSizeToClasses(prefix) {
return function (_ref) {
var size = _ref.size,
value = _ref.value;
return Array.isArray(value) ? value.map(function (val) {
return prefix + '-' + size + (typeof val === 'string' ? '-' + val : '');
}).join(' ') : prefix + '-' + size + (typeof value === 'string' ? '-' + value : '');
};
};
var Column = function Column(_ref2) {
var children = _ref2.children,
_ref2$attrs = _ref2.attrs,
className = _ref2$attrs.className,
restAttrs = _objectWithoutProperties(_ref2$attrs, ['className']),
events = _ref2.events,
restProps = _objectWithoutProperties(_ref2, ['children', 'attrs', 'events']);
var sizeClassIndex = sizes.reduce(reduceSizesToArray(restProps), []);
var sizeClassNameProp = !sizeClassIndex.length ? null : sizeClassIndex.map(mapSizeToClasses('is')).join(' ');
var offsetSizeClassIndex = offsetSizes.reduce(reduceSizesToArray(restProps), []);
var offsetSizeClassNameProp = !offsetSizeClassIndex.length ? null : offsetSizeClassIndex.map(mapSizeToClasses('is-offset')).join(' ');
return _react2.default.createElement(
'div',
_extends({ className: (0, _helpers.classNameJoiner)('column', offsetSizeClassNameProp, sizeClassNameProp, className) }, restAttrs, events),
children
);
};
Column.propTypes = _extends({
children: _propTypes2.default.node,
attrs: _propTypes2.default.shape().isRequired,
events: _propTypes2.default.shape().isRequired
}, sizes.reduce(function (acum, size) {
return _extends({}, acum, _defineProperty({}, size, _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.string])));
}, {}), offsetSizes.reduce(function (acum, size) {
return _extends({}, acum, _defineProperty({}, size, _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.string])));
}, {}));
Column.defaultProps = _extends({
children: null
}, sizes.reduce(function (acum, size) {
return _extends({}, acum, _defineProperty({}, size, null));
}, {}), offsetSizes.reduce(function (acum, size) {
return _extends({}, acum, _defineProperty({}, size, null));
}, {}));
var sets = (0, _helpers.combineSets)(_withIsHas.helpersIsKeys, _withIsHas.columnSizesIsKeys, _withIsHas.columnOffsetIsKeys, ['narrow']);
exports.default = (0, _compose2.default)((0, _withEvents2.default)(), (0, _withIsHas2.default)(sets, _withIsHas.helpersHasKeys), (0, _withAttrs2.default)())(Column);