UNPKG

test-react

Version:

react-css

265 lines (226 loc) 11.1 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); 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 _assign = require('babel-runtime/core-js/object/assign'); var _assign2 = _interopRequireDefault(_assign); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _SAlertContent = require('./SAlertContent'); var _SAlertContent2 = _interopRequireDefault(_SAlertContent); var _sAlertStore = require('./s-alert-parts/s-alert-store'); var _sAlertStore2 = _interopRequireDefault(_sAlertStore); var _sAlertTools = require('./s-alert-parts/s-alert-tools'); var _sAlertTools2 = _interopRequireDefault(_sAlertTools); var _sAlertDataPrep = require('./s-alert-parts/s-alert-data-prep'); var _sAlertDataPrep2 = _interopRequireDefault(_sAlertDataPrep); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var insertFunc = function insertFunc(msg, data, condition) { var id = _sAlertTools2.default.randomId(); _sAlertStore2.default.dispatch({ type: 'INSERT', data: (0, _assign2.default)({ position: 'top-right' }, data, { id: id, condition: condition, message: msg }) }); return id; }; var SAlert = function (_React$Component) { (0, _inherits3.default)(SAlert, _React$Component); function SAlert(props) { (0, _classCallCheck3.default)(this, SAlert); var _this = (0, _possibleConstructorReturn3.default)(this, (0, _getPrototypeOf2.default)(SAlert).call(this, props)); _this.state = { dataRight: [], dataLeft: [], dataTop: [], dataBottom: [] }; return _this; } (0, _createClass3.default)(SAlert, [{ key: 'componentDidMount', value: function componentDidMount() { var _this2 = this; var storeStateLeft = void 0; var storeStateRight = void 0; var storeStateTop = void 0; var storeStateBottom = void 0; var addToStoreRight = function addToStoreRight() { var length = void 0; storeStateRight = (0, _sAlertDataPrep2.default)('right') || []; length = storeStateRight.length; if (_this2.props.stack && _this2.props.stack.limit && length > _this2.props.stack.limit) { var id = storeStateRight[0].id; _sAlertStore2.default.dispatch({ type: 'REMOVE', data: { id: id } }); storeStateRight = (0, _sAlertDataPrep2.default)('right') || []; } _this2.setState({ dataRight: storeStateRight }); }; this.unsubStoreRight = _sAlertStore2.default.subscribe(addToStoreRight); var addToStoreLeft = function addToStoreLeft() { var length = void 0; storeStateLeft = (0, _sAlertDataPrep2.default)('left') || []; length = storeStateLeft.length; if (_this2.props.stack && _this2.props.stack.limit && length > _this2.props.stack.limit) { var id = storeStateLeft[0].id; _sAlertStore2.default.dispatch({ type: 'REMOVE', data: { id: id } }); storeStateLeft = (0, _sAlertDataPrep2.default)('left') || []; } _this2.setState({ dataLeft: storeStateLeft }); }; this.unsubStoreLeft = _sAlertStore2.default.subscribe(addToStoreLeft); var addToStoreTop = function addToStoreTop() { var length = void 0; storeStateTop = (0, _sAlertDataPrep2.default)('full-top') || []; length = storeStateTop.length; if (_this2.props.stack && _this2.props.stack.limit && length > _this2.props.stack.limit) { var id = storeStateTop[0].id; _sAlertStore2.default.dispatch({ type: 'REMOVE', data: { id: id } }); storeStateTop = (0, _sAlertDataPrep2.default)('full-top') || []; } _this2.setState({ dataTop: storeStateTop }); }; this.unsubStoreTop = _sAlertStore2.default.subscribe(addToStoreTop); var addToStoreBottom = function addToStoreBottom() { var length = void 0; storeStateBottom = (0, _sAlertDataPrep2.default)('full-bottom') || []; length = storeStateBottom.length; if (_this2.props.stack && _this2.props.stack.limit && length > _this2.props.stack.limit) { var id = storeStateBottom[0].id; _sAlertStore2.default.dispatch({ type: 'REMOVE', data: { id: id } }); storeStateBottom = (0, _sAlertDataPrep2.default)('full-bottom') || []; } _this2.setState({ dataBottom: storeStateBottom }); }; this.unsubStoreBottom = _sAlertStore2.default.subscribe(addToStoreBottom); // set up global config from global SAlert props // only stuff needed for getAlertData var globalConfig = { contentTemplate: this.props.contentTemplate, offset: this.props.offset, message: this.props.message, stack: this.props.stack, html: this.props.html, customFields: this.props.customFields, position: this.props.position }; _sAlertTools2.default.setGlobalConfig(globalConfig); } }, { key: 'componentWillUnmount', value: function componentWillUnmount() { this.unsubStoreTop(); this.unsubStoreBottom(); this.unsubStoreLeft(); this.unsubStoreRight(); } }, { key: 'render', value: function render() { var _this3 = this; var mapFunc = function mapFunc(alert, index) { var customKey = 'alert-key-' + alert.id + '-' + alert.position; var id = alert.id; var condition = _sAlertTools2.default.returnFirstDefined(alert.condition, 'info'); var message = _sAlertTools2.default.returnFirstDefined(alert.message, _this3.props.message, ''); var position = _sAlertTools2.default.returnFirstDefined(alert.position, _this3.props.position, 'top-right'); var offset = _sAlertTools2.default.returnFirstDefined(alert.offset, _this3.props.offset, 0); var effect = _sAlertTools2.default.returnFirstDefined(alert.effect, _this3.props.effect); var boxPosition = alert.boxPosition; var beep = _sAlertTools2.default.returnFirstDefined(alert.beep, _this3.props.beep, false); var timeout = _sAlertTools2.default.returnFirstDefined(alert.timeout, _this3.props.timeout, 5000); var html = _sAlertTools2.default.returnFirstDefined(alert.html, _this3.props.html); var onClose = _sAlertTools2.default.returnFirstDefined(alert.onClose, _this3.props.onClose); var onShow = _sAlertTools2.default.returnFirstDefined(alert.onShow, _this3.props.onShow); var customFields = _sAlertTools2.default.returnFirstDefined(alert.customFields, _this3.props.customFields); var contentTemplate = _this3.props.contentTemplate; return _react2.default.createElement(_SAlertContent2.default, { key: customKey, id: id, customFields: customFields, condition: condition, message: message, position: position, effect: effect, boxPosition: boxPosition, beep: beep, timeout: timeout, html: html, onClose: onClose, onShow: onShow, contentTemplate: contentTemplate }); }; var sAlertElemsRight = this.state.dataRight.map(mapFunc); var sAlertElemsLeft = this.state.dataLeft.map(mapFunc); var sAlertElemsTop = this.state.dataTop.map(mapFunc); var sAlertElemsBottom = this.state.dataBottom.map(mapFunc); return _react2.default.createElement( 'div', { className: 's-alert-wrapper' }, sAlertElemsRight, sAlertElemsLeft, sAlertElemsTop, sAlertElemsBottom ); } }], [{ key: 'info', value: function info(msg, data) { return insertFunc(msg, data, 'info'); } }, { key: 'error', value: function error(msg, data) { return insertFunc(msg, data, 'error'); } }, { key: 'warning', value: function warning(msg, data) { return insertFunc(msg, data, 'warning'); } }, { key: 'success', value: function success(msg, data) { return insertFunc(msg, data, 'success'); } }, { key: 'close', value: function close(id) { _sAlertStore2.default.dispatch({ type: 'REMOVE', data: { id: id } }); } }, { key: 'closeAll', value: function closeAll() { _sAlertStore2.default.dispatch({ type: 'REMOVEALL' }); } }]); return SAlert; }(_react2.default.Component); SAlert.propTypes = { message: _react2.default.PropTypes.string, position: _react2.default.PropTypes.string, offset: _react2.default.PropTypes.number, stack: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.bool, _react2.default.PropTypes.object]), effect: _react2.default.PropTypes.string, beep: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.string, _react2.default.PropTypes.object, _react2.default.PropTypes.bool]), timeout: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.oneOf(['none']), _react2.default.PropTypes.number]), html: _react2.default.PropTypes.bool, onClose: _react2.default.PropTypes.func, onShow: _react2.default.PropTypes.func, customFields: _react2.default.PropTypes.object, contentTemplate: _react2.default.PropTypes.func }; exports.default = SAlert;