react-lightning-design-components
Version:
Salesforce Lightning Design System components built with React 16
192 lines (152 loc) • 18.5 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
var _typeof2 = require('babel-runtime/helpers/typeof');
var _typeof3 = _interopRequireDefault(_typeof2);
var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
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 _classnames2 = require('classnames');
var _classnames3 = _interopRequireDefault(_classnames2);
var _util = require('./util');
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var FormElement = function (_React$Component) {
(0, _inherits3.default)(FormElement, _React$Component);
function FormElement(props) {
(0, _classCallCheck3.default)(this, FormElement);
/* eslint-disable max-len */
var _this = (0, _possibleConstructorReturn3.default)(this, (FormElement.__proto__ || (0, _getPrototypeOf2.default)(FormElement)).call(this, props));
(0, _util.registerStyle)('dropdown', [['.react-slds-dropdown-control-wrapper', '{ height: 0; }'], ['.slds-has-error .react-slds-dropdown-control-wrapper', '{ height: auto; }'], ['.react-slds-dropdown-control-wrapper > .slds-form-element__control', '{ position: relative; padding-top: 0.1px; margin-top: -0.1px }'], ['.react-slds-dropdown-form-element', '{ position: static; }'], ['.slds-form--horizontal .react-slds-dropdown-control-wrapper .slds-dropdown', '{ top: -1em; }'], ['.slds-form--horizontal .react-slds-dropdown-control-wrapper .slds-lookup__menu', '{ top: -1em; }'], ['.slds-form--horizontal .slds-has-error .react-slds-dropdown-control-wrapper .slds-dropdown', '{ top: 0; }'], ['.slds-modal .react-slds-dropdown-control-wrapper > .slds-form-element__control', '{ position: absolute; }']]);
return _this;
}
(0, _createClass3.default)(FormElement, [{
key: 'renderFormElement',
value: function renderFormElement(props) {
var className = props.className,
error = props.error,
totalCols = props.totalCols,
_props$cols = props.cols,
cols = _props$cols === undefined ? 1 : _props$cols,
children = props.children;
var formElementClassNames = (0, _classnames3.default)('slds-form-element', (0, _defineProperty3.default)({
'slds-has-error': error
}, 'slds-size--' + cols + '-of-' + totalCols, typeof totalCols === 'number'), className);
return _react2.default.createElement(
'div',
{ key: 'form-element', className: formElementClassNames },
children
);
}
}, {
key: 'renderLabel',
value: function renderLabel() {
var _props = this.props,
id = _props.id,
label = _props.label,
required = _props.required,
tooltip = _props.tooltip;
return label ? _react2.default.createElement(
'label',
{
key: 'form-element-label',
className: 'slds-form-element__label',
htmlFor: id
},
label,
required ? _react2.default.createElement(
'abbr',
{ className: 'slds-required' },
'*'
) : undefined,
tooltip
) : undefined;
}
}, {
key: 'renderControl',
value: function renderControl(props) {
var error = props.error,
children = props.children;
var errorMessage = error ? typeof error === 'string' ? error : (typeof error === 'undefined' ? 'undefined' : (0, _typeof3.default)(error)) === 'object' ? error.message : undefined : undefined;
return _react2.default.createElement(
'div',
{ key: 'form-element-control', className: 'slds-form-element__control' },
children,
errorMessage ? _react2.default.createElement(
'span',
{ className: 'slds-form-element__help' },
errorMessage
) : undefined
);
}
}, {
key: 'render',
value: function render() {
var _props2 = this.props,
dropdown = _props2.dropdown,
className = _props2.className,
totalCols = _props2.totalCols,
cols = _props2.cols,
error = _props2.error,
children = _props2.children,
props = (0, _objectWithoutProperties3.default)(_props2, ['dropdown', 'className', 'totalCols', 'cols', 'error', 'children']);
var labelElem = this.renderLabel();
if (dropdown) {
var _controlElem = this.renderControl({ children: children });
var _formElemChildren = [labelElem, _controlElem];
var innerFormElem = this.renderFormElement((0, _extends3.default)({}, props, { children: _formElemChildren }));
var outerControlElem = this.renderControl({ error: error, children: dropdown });
var outerFormElemChildren = [innerFormElem, _react2.default.createElement(
'div',
{ key: 'dropdown-control-wrapper', className: 'react-slds-dropdown-control-wrapper' },
outerControlElem
)];
var outerFormClassName = (0, _classnames3.default)('react-slds-dropdown-form-element', className);
return this.renderFormElement((0, _extends3.default)({}, props, { error: error, totalCols: totalCols, cols: cols,
className: outerFormClassName,
children: outerFormElemChildren
}));
}
var controlElem = this.renderControl({ children: children, error: error });
var formElemChildren = [labelElem, controlElem];
return this.renderFormElement((0, _extends3.default)({}, props, { className: className, error: error, totalCols: totalCols, cols: cols,
children: formElemChildren
}));
}
}]);
return FormElement;
}(_react2.default.Component);
exports.default = FormElement;
FormElement.propTypes = {
id: _propTypes2.default.string,
className: _propTypes2.default.string,
label: _propTypes2.default.string,
required: _propTypes2.default.bool,
error: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.string, _propTypes2.default.shape({
message: _propTypes2.default.string
})]),
cols: _propTypes2.default.number,
totalCols: _propTypes2.default.number,
dropdown: _propTypes2.default.element,
children: _propTypes2.default.element,
tooltip: _propTypes2.default.element
};
FormElement.isFormElement = true;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL0Zvcm1FbGVtZW50LmpzIl0sIm5hbWVzIjpbIkZvcm1FbGVtZW50IiwicHJvcHMiLCJjbGFzc05hbWUiLCJlcnJvciIsInRvdGFsQ29scyIsImNvbHMiLCJjaGlsZHJlbiIsImZvcm1FbGVtZW50Q2xhc3NOYW1lcyIsImlkIiwibGFiZWwiLCJyZXF1aXJlZCIsInRvb2x0aXAiLCJ1bmRlZmluZWQiLCJlcnJvck1lc3NhZ2UiLCJtZXNzYWdlIiwiZHJvcGRvd24iLCJsYWJlbEVsZW0iLCJyZW5kZXJMYWJlbCIsImNvbnRyb2xFbGVtIiwicmVuZGVyQ29udHJvbCIsImZvcm1FbGVtQ2hpbGRyZW4iLCJpbm5lckZvcm1FbGVtIiwicmVuZGVyRm9ybUVsZW1lbnQiLCJvdXRlckNvbnRyb2xFbGVtIiwib3V0ZXJGb3JtRWxlbUNoaWxkcmVuIiwib3V0ZXJGb3JtQ2xhc3NOYW1lIiwiQ29tcG9uZW50IiwicHJvcFR5cGVzIiwic3RyaW5nIiwiYm9vbCIsIm9uZU9mVHlwZSIsInNoYXBlIiwibnVtYmVyIiwiZWxlbWVudCIsImlzRm9ybUVsZW1lbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7QUFDQTs7Ozs7O0lBR3FCQSxXOzs7QUFFbkIsdUJBQVlDLEtBQVosRUFBbUI7QUFBQTs7QUFFakI7QUFGaUIsZ0pBQ1hBLEtBRFc7O0FBR2pCLDZCQUFjLFVBQWQsRUFBMEIsQ0FDeEIsQ0FDRSxzQ0FERixFQUVFLGdCQUZGLENBRHdCLEVBS3hCLENBQ0Usc0RBREYsRUFFRSxtQkFGRixDQUx3QixFQVN4QixDQUNFLG9FQURGLEVBRUUsZ0VBRkYsQ0FUd0IsRUFheEIsQ0FDRSxtQ0FERixFQUVFLHVCQUZGLENBYndCLEVBaUJ4QixDQUNFLDRFQURGLEVBRUUsZ0JBRkYsQ0FqQndCLEVBcUJ4QixDQUNFLGdGQURGLEVBRUUsZ0JBRkYsQ0FyQndC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QVVzQjtBQWhCRyxDQUF4Qjs7QUFtQkFqQyxZQUFZa0MsYUFBWixHQUE0QixJQUE1QiIsImZpbGUiOiJGb3JtRWxlbWVudC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB7IHJlZ2lzdGVyU3R5bGUgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcblxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGb3JtRWxlbWVudCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuICAgIHJlZ2lzdGVyU3R5bGUoJ2Ryb3Bkb3duJywgW1xuICAgICAgW1xuICAgICAgICAnLnJlYWN0LXNsZHMtZHJvcGRvd24tY29udHJvbC13cmFwcGVyJyxcbiAgICAgICAgJ3sgaGVpZ2h0OiAwOyB9JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcuc2xkcy1oYXMtZXJyb3IgLnJlYWN0LXNsZHMtZHJvcGRvd24tY29udHJvbC13cmFwcGVyJyxcbiAgICAgICAgJ3sgaGVpZ2h0OiBhdXRvOyB9JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcucmVhY3Qtc2xkcy1kcm9wZG93bi1jb250cm9sLXdyYXBwZXIgPiAuc2xkcy1mb3JtLWVsZW1lbnRfX2NvbnRyb2wnLFxuICAgICAgICAneyBwb3NpdGlvbjogcmVsYXRpdmU7IHBhZGRpbmctdG9wOiAwLjFweDsgbWFyZ2luLXRvcDogLTAuMXB4IH0nLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJy5yZWFjdC1zbGRzLWRyb3Bkb3duLWZvcm0tZWxlbWVudCcsXG4gICAgICAgICd7IHBvc2l0aW9uOiBzdGF0aWM7IH0nLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJy5zbGRzLWZvcm0tLWhvcml6b250YWwgLnJlYWN0LXNsZHMtZHJvcGRvd24tY29udHJvbC13cmFwcGVyIC5zbGRzLWRyb3Bkb3duJyxcbiAgICAgICAgJ3sgdG9wOiAtMWVtOyB9JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcuc2xkcy1mb3JtLS1ob3Jpem9udGFsIC5yZWFjdC1zbGRzLWRyb3Bkb3duLWNvbnRyb2wtd3JhcHBlciAuc2xkcy1sb29rdXBfX21lbnUnLFxuICAgICAgICAneyB0b3A6IC0xZW07IH0nLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJy5zbGRzLWZvcm0tLWhvcml6b250YWwgLnNsZHMtaGFzLWVycm9yIC5yZWFjdC1zbGRzLWRyb3Bkb3duLWNvbnRyb2wtd3JhcHBlciAuc2xkcy1kcm9wZG93bicsXG4gICAgICAgICd7IHRvcDogMDsgfScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnLnNsZHMtbW9kYWwgLnJlYWN0LXNsZHMtZHJvcGRvd24tY29udHJvbC13cmFwcGVyID4gLnNsZHMtZm9ybS1lbGVtZW50X19jb250cm9sJyxcbiAgICAgICAgJ3sgcG9zaXRpb246IGFic29sdXRlOyB9JyxcbiAgICAgIF0sXG4gICAgXSk7XG4gIH1cblxuICByZW5kZXJGb3JtRWxlbWVudChwcm9wcykge1xuICAgIGNvbnN0IHsgY2xhc3NOYW1lLCBlcnJvciwgdG90YWxDb2xzLCBjb2xzID0gMSwgY2hpbGRyZW4gfSA9IHByb3BzO1xuICAgIGNvbnN0IGZvcm1FbGVtZW50Q2xhc3NOYW1lcyA9IGNsYXNzbmFtZXMoXG4gICAgICAnc2xkcy1mb3JtLWVsZW1lbnQnLFxuICAgICAge1xuICAgICAgICAnc2xkcy1oYXMtZXJyb3InOiBlcnJvcixcbiAgICAgICAgW2BzbGRzLXNpemUtLSR7Y29sc30tb2YtJHt0b3RhbENvbHN9YF06IHR5cGVvZiB0b3RhbENvbHMgPT09ICdudW1iZXInLFxuICAgICAgfSxcbiAgICAgIGNsYXNzTmFtZVxuICAgICk7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYga2V5PSdmb3JtLWVsZW1lbnQnIGNsYXNzTmFtZT17IGZvcm1FbGVtZW50Q2xhc3NOYW1lcyB9PlxuICAgICAgICB7IGNoaWxkcmVuIH1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICByZW5kZXJMYWJlbCgpIHtcbiAgICBjb25zdCB7IGlkLCBsYWJlbCwgcmVxdWlyZWQsIHRvb2x0aXAgfSA9IHRoaXMucHJvcHM7XG4gICAgcmV0dXJuIChcbiAgICAgIGxhYmVsID9cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAga2V5PSdmb3JtLWVsZW1lbnQtbGFiZWwnXG4gICAgICAgICAgY2xhc3NOYW1lPSdzbGRzLWZvcm0tZWxlbWVudF9fbGFiZWwnXG4gICAgICAgICAgaHRtbEZvcj17IGlkIH1cbiAgICAgICAgPlxuICAgICAgICAgIHsgbGFiZWwgfVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJlcXVpcmVkID9cbiAgICAgICAgICAgICAgPGFiYnIgY2xhc3NOYW1lPSdzbGRzLXJlcXVpcmVkJz4qPC9hYmJyPiA6XG4gICAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICAgIH1cbiAgICAgICAgICB7IHRvb2x0aXAgfVxuICAgICAgICA8L2xhYmVsPiA6XG4gICAgICAgIHVuZGVmaW5lZFxuICAgICk7XG4gIH1cblxuICByZW5kZXJDb250cm9sKHByb3BzKSB7XG4gICAgY29uc3QgeyBlcnJvciwgY2hpbGRyZW4gfSA9IHByb3BzO1xuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9XG4gICAgICBlcnJvciA/XG4gICAgICAodHlwZW9mIGVycm9yID09PSAnc3RyaW5nJyA/IGVycm9yIDpcbiAgICAgICB0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnID8gZXJyb3IubWVzc2FnZSA6XG4gICAgICAgdW5kZWZpbmVkKSA6XG4gICAgICB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYga2V5PSdmb3JtLWVsZW1lbnQtY29udHJvbCcgY2xhc3NOYW1lPSdzbGRzLWZvcm0tZWxlbWVudF9fY29udHJvbCc+XG4gICAgICAgIHsgY2hpbGRyZW4gfVxuICAgICAgICB7XG4gICAgICAgICAgZXJyb3JNZXNzYWdlID9cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT0nc2xkcy1mb3JtLWVsZW1lbnRfX2hlbHAnPnsgZXJyb3JNZXNzYWdlIH08L3NwYW4+IDpcbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgZHJvcGRvd24sIGNsYXNzTmFtZSwgdG90YWxDb2xzLCBjb2xzLCBlcnJvciwgY2hpbGRyZW4sIC4uLnByb3BzIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IGxhYmVsRWxlbSA9IHRoaXMucmVuZGVyTGFiZWwoKTtcbiAgICBpZiAoZHJvcGRvd24pIHtcbiAgICAgIGNvbnN0IGNvbnRyb2xFbGVtID0gdGhpcy5yZW5kZXJDb250cm9sKHsgY2hpbGRyZW4gfSk7XG4gICAgICBjb25zdCBmb3JtRWxlbUNoaWxkcmVuID0gW2xhYmVsRWxlbSwgY29udHJvbEVsZW1dO1xuICAgICAgY29uc3QgaW5uZXJGb3JtRWxlbSA9IHRoaXMucmVuZGVyRm9ybUVsZW1lbnQoeyAuLi5wcm9wcywgY2hpbGRyZW46IGZvcm1FbGVtQ2hpbGRyZW4gfSk7XG4gICAgICBjb25zdCBvdXRlckNvbnRyb2xFbGVtID0gdGhpcy5yZW5kZXJDb250cm9sKHsgZXJyb3IsIGNoaWxkcmVuOiBkcm9wZG93biB9KTtcbiAgICAgIGNvbnN0IG91dGVyRm9ybUVsZW1DaGlsZHJlbiA9IFtcbiAgICAgICAgaW5uZXJGb3JtRWxlbSxcbiAgICAgICAgPGRpdiBrZXk9J2Ryb3Bkb3duLWNvbnRyb2wtd3JhcHBlcicgY2xhc3NOYW1lPSdyZWFjdC1zbGRzLWRyb3Bkb3duLWNvbnRyb2wtd3JhcHBlcic+eyBvdXRlckNvbnRyb2xFbGVtIH08L2Rpdj4sXG4gICAgICBdO1xuICAgICAgY29uc3Qgb3V0ZXJGb3JtQ2xhc3NOYW1lID0gY2xhc3NuYW1lcygncmVhY3Qtc2xkcy1kcm9wZG93bi1mb3JtLWVsZW1lbnQnLCBjbGFzc05hbWUpO1xuICAgICAgcmV0dXJuIHRoaXMucmVuZGVyRm9ybUVsZW1lbnQoe1xuICAgICAgICAuLi5wcm9wcywgZXJyb3IsIHRvdGFsQ29scywgY29scyxcbiAgICAgICAgY2xhc3NOYW1lOiBvdXRlckZvcm1DbGFzc05hbWUsXG4gICAgICAgIGNoaWxkcmVuOiBvdXRlckZvcm1FbGVtQ2hpbGRyZW4sXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgY29udHJvbEVsZW0gPSB0aGlzLnJlbmRlckNvbnRyb2woeyBjaGlsZHJlbiwgZXJyb3IgfSk7XG4gICAgY29uc3QgZm9ybUVsZW1DaGlsZHJlbiA9IFtsYWJlbEVsZW0sIGNvbnRyb2xFbGVtXTtcbiAgICByZXR1cm4gdGhpcy5yZW5kZXJGb3JtRWxlbWVudCh7XG4gICAgICAuLi5wcm9wcywgY2xhc3NOYW1lLCBlcnJvciwgdG90YWxDb2xzLCBjb2xzLFxuICAgICAgY2hpbGRyZW46IGZvcm1FbGVtQ2hpbGRyZW4sXG4gICAgfSk7XG4gIH1cblxufVxuXG5Gb3JtRWxlbWVudC5wcm9wVHlwZXMgPSB7XG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICByZXF1aXJlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGVycm9yOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgICBQcm9wVHlwZXMuYm9vbCxcbiAgICBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBtZXNzYWdlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIH0pLFxuICBdKSxcbiAgY29sczogUHJvcFR5cGVzLm51bWJlcixcbiAgdG90YWxDb2xzOiBQcm9wVHlwZXMubnVtYmVyLFxuICBkcm9wZG93bjogUHJvcFR5cGVzLmVsZW1lbnQsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMuZWxlbWVudCxcbiAgdG9vbHRpcDogUHJvcFR5cGVzLmVsZW1lbnQsXG59O1xuXG5Gb3JtRWxlbWVudC5pc0Zvcm1FbGVtZW50ID0gdHJ1ZTtcbiJdfQ==