UNPKG

react-lightning-design-components

Version:

Salesforce Lightning Design System components built with React 16

192 lines (152 loc) 18.5 kB
'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==