@6thquake/react-material
Version:
React components that implement Google's Material Design.
226 lines (194 loc) • 7.21 kB
JavaScript
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf3 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _react = _interopRequireWildcard(require("react"));
var _classnames2 = _interopRequireDefault(require("classnames"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _withStyles = _interopRequireDefault(require("../styles/withStyles"));
var _Grid = require("../Grid");
/**
* @ignore - do not document.
*/
var style = function style(theme) {
return {
'form-item': {
lineHeight: '48px',
'&:before,&:after': {
content: '""',
display: 'table'
},
'&:after': {
clear: 'both'
}
},
'form-item-direction-column': {
lineHeight: 'normal'
},
'form-item-label': {
height: '48px',
textAlign: 'right',
overflow: 'hidden',
whiteSpace: 'nowrap',
paddingRight: theme.spacing(1)
},
'form-item-label-colon': {
'& label': {
'&:after': {
content: '":"',
margin: '0 10px 0 4px'
}
}
},
'form-item-label-required': {
'& label': {
'&:before': {
marginRight: theme.spacing(0.5),
content: '"*"',
fontSize: '14px',
color: '#f5222d'
}
}
},
'form-item-label-required2': {
'& label': {
'&:after': {
marginLeft: theme.spacing(0.5),
content: '"*"',
fontSize: '14px',
color: '#f5222d'
}
}
},
'form-item-label-direction-column': {
width: '100%',
height: 'auto',
textAlign: 'left'
},
'form-item-wrapper': {}
};
};
var FormItem =
/*#__PURE__*/
function (_Component) {
(0, _inherits2.default)(FormItem, _Component);
function FormItem() {
var _getPrototypeOf2;
var _this;
(0, _classCallCheck2.default)(this, FormItem);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = (0, _possibleConstructorReturn2.default)(this, (_getPrototypeOf2 = (0, _getPrototypeOf3.default)(FormItem)).call.apply(_getPrototypeOf2, [this].concat(args)));
_this.state = {};
return _this;
}
(0, _createClass2.default)(FormItem, [{
key: "renderLabel",
value: function renderLabel() {
var _classnames;
var _this$props = this.props,
classes = _this$props.classes,
label = _this$props.label,
required = _this$props.required,
_this$props$InputLabe = _this$props.InputLabelProps,
_this$props$InputLabe2 = _this$props$InputLabe.direction,
direction = _this$props$InputLabe2 === void 0 ? 'standard' : _this$props$InputLabe2,
_this$props$InputLabe3 = _this$props$InputLabe.justify,
justify = _this$props$InputLabe3 === void 0 ? 3 : _this$props$InputLabe3,
_this$props$InputLabe4 = _this$props$InputLabe.colon,
colon = _this$props$InputLabe4 === void 0 ? false : _this$props$InputLabe4;
if (!label) {
return _react.default.createElement(_react.default.Fragment, {
key: "label"
});
}
var labelChildren = label;
if (colon && typeof label === 'string' && label.trim() !== '') {
labelChildren = label.replace(/[:|:]\s*$/, '');
}
var requiredClass = typeof label === 'string' ? !!label.trim().length : true;
var className = (0, _classnames2.default)(classes['form-item-label'], (_classnames = {}, (0, _defineProperty2.default)(_classnames, classes['form-item-label-colon'], colon), (0, _defineProperty2.default)(_classnames, classes['form-item-label-required'], requiredClass && required), (0, _defineProperty2.default)(_classnames, classes['form-item-label-direction-column'], direction === 'column'), _classnames));
return _react.default.createElement(_Grid.PercentageGrid, {
className: className,
item: true,
xs: 12,
sm: justify,
key: "label"
}, _react.default.createElement("label", null, labelChildren));
}
}, {
key: "renderWrapper",
value: function renderWrapper() {
var _this$props2 = this.props,
classes = _this$props2.classes,
label = _this$props2.label,
_this$props2$InputLab = _this$props2.InputLabelProps.justify,
justify = _this$props2$InputLab === void 0 ? 3 : _this$props2$InputLab;
var sm = label ? 12 - justify : 12;
return _react.default.createElement(_Grid.PercentageGrid, {
className: classes['form-item-wrapper'],
item: true,
xs: 12,
sm: sm,
key: "wrapper"
}, this.props.children);
}
}, {
key: "renderFormItem",
value: function renderFormItem(children) {
var _this$props3 = this.props,
classes = _this$props3.classes,
_this$props3$InputLab = _this$props3.InputLabelProps.direction,
direction = _this$props3$InputLab === void 0 ? 'standard' : _this$props3$InputLab;
var className = (0, _classnames2.default)(classes['form-item'], direction === 'column' ? classes['form-item-direction-column'] : '');
return _react.default.createElement(_Grid.PercentageGrid, {
container: true,
className: className
}, children);
}
}, {
key: "render",
value: function render() {
var _this$props$InputLabe5 = this.props.InputLabelProps.direction,
direction = _this$props$InputLabe5 === void 0 ? 'standard' : _this$props$InputLabe5;
if (direction === 'standard') {
return _react.default.createElement(_react.default.Fragment, null, this.props.children);
}
return this.renderFormItem([this.renderLabel(), this.renderWrapper()]);
}
}]);
return FormItem;
}(_react.Component);
FormItem.propTypes = {
classes: _propTypes.default.object.isRequired,
InputLabelProps: _propTypes.default.shape({
colon: _propTypes.default.bool,
direction: _propTypes.default.oneOf(['standard', 'row', 'column']),
justify: _propTypes.default.number
}),
label: _propTypes.default.any,
required: _propTypes.default.bool
};
FormItem.defaultProps = {
required: false,
label: '',
InputLabelProps: {
direction: 'standard',
justify: 3,
colon: true
}
};
var _default = (0, _withStyles.default)(style, {
name: 'RMFormItem'
})(FormItem);
exports.default = _default;