@compositor/kit
Version:
Components for development environments, style guides, and demos
202 lines (160 loc) • 6.12 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _ui = require('./ui');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var PropsForm = function (_React$Component) {
(0, _inherits3.default)(PropsForm, _React$Component);
function PropsForm(props) {
(0, _classCallCheck3.default)(this, PropsForm);
var _this = (0, _possibleConstructorReturn3.default)(this, (PropsForm.__proto__ || (0, _getPrototypeOf2.default)(PropsForm)).call(this));
var _React$Children$toArr = _react2.default.Children.toArray(props.children),
_React$Children$toArr2 = (0, _slicedToArray3.default)(_React$Children$toArr, 1),
child = _React$Children$toArr2[0];
var initialState = child ? child.props : {};
_this.state = initialState;
_this.update = function (fn) {
return _this.setState(fn);
};
return _this;
}
(0, _createClass3.default)(PropsForm, [{
key: 'componentWillReceiveProps',
value: function componentWillReceiveProps(next) {
if (next.children !== this.props.children) {
var _React$Children$toArr3 = _react2.default.Children.toArray(next.children),
_React$Children$toArr4 = (0, _slicedToArray3.default)(_React$Children$toArr3, 1),
child = _React$Children$toArr4[0];
this.update(child.props);
}
}
}, {
key: 'render',
value: function render() {
var _this2 = this;
var children = _react2.default.Children.toArray(this.props.children);
var _children = (0, _slicedToArray3.default)(children, 1),
child = _children[0];
var clone = _react2.default.cloneElement(child, this.state);
var controls = children.filter(function (c) {
return c.type.isForm === true;
}).map(function (c) {
return _react2.default.cloneElement(c, { props: _this2.state, update: _this2.update });
});
return _react2.default.createElement(
_ui.Flex,
{ flexDirection: 'column' },
_react2.default.createElement(
_ui.Box,
{ pb: 4, flex: '1 1 auto' },
_react2.default.cloneElement(child, this.state)
),
_react2.default.createElement(_ui.Divider, null),
_react2.default.createElement(
_ui.Box,
{ flex: 'none', py: 2, mt: 2 },
controls
)
);
}
}]);
return PropsForm;
}(_react2.default.Component);
PropsForm.Input = function (_ref) {
var update = _ref.update,
name = _ref.name,
_ref$props = _ref.props,
props = _ref$props === undefined ? {} : _ref$props,
rest = (0, _objectWithoutProperties3.default)(_ref, ['update', 'name', 'props']);
return _react2.default.createElement(
_ui.Box,
{ mb: 2 },
_react2.default.createElement(
_ui.Label,
null,
name
),
_react2.default.createElement(_ui.Input, (0, _extends3.default)({}, rest, {
name: name,
value: props[name] || '',
onChange: function onChange(e) {
var value = e.target.value;
update((0, _defineProperty3.default)({}, name, value));
}
}))
);
};
PropsForm.Input.isForm = true;
PropsForm.Select = function (_ref2) {
var update = _ref2.update,
name = _ref2.name,
_ref2$props = _ref2.props,
props = _ref2$props === undefined ? {} : _ref2$props,
rest = (0, _objectWithoutProperties3.default)(_ref2, ['update', 'name', 'props']);
return _react2.default.createElement(
_ui.Box,
{ mb: 2 },
_react2.default.createElement(
_ui.Label,
null,
name
),
_react2.default.createElement(_ui.Select, (0, _extends3.default)({}, rest, {
name: name,
value: props[name] || '',
onChange: function onChange(e) {
var value = e.target.value;
update((0, _defineProperty3.default)({}, name, value));
}
}))
);
};
PropsForm.Select.isForm = true;
PropsForm.Checkbox = function (_ref3) {
var update = _ref3.update,
name = _ref3.name,
_ref3$props = _ref3.props,
props = _ref3$props === undefined ? {} : _ref3$props,
rest = (0, _objectWithoutProperties3.default)(_ref3, ['update', 'name', 'props']);
return _react2.default.createElement(
_ui.Box,
{ mb: 2 },
_react2.default.createElement(
_ui.Label,
null,
name
),
_react2.default.createElement(_ui.Input, (0, _extends3.default)({}, rest, {
name: name,
type: 'checkbox',
checked: !!props[name],
onChange: function onChange(e) {
var checked = e.target.checked;
update((0, _defineProperty3.default)({}, name, checked));
}
}))
);
};
PropsForm.Checkbox.isForm = true;
exports.default = PropsForm;