UNPKG

material-components

Version:

Stateless UI components for react that follow material design

239 lines (205 loc) 8.39 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } }; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _reactTransitionGroup = require('react-transition-group'); var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames); var _mask = require('./mask'); var _mask2 = _interopRequireDefault(_mask); var _divider = require('./divider'); var _divider2 = _interopRequireDefault(_divider); var _button = require('./button'); var _button2 = _interopRequireDefault(_button); var _helpersScreen = require('./helpers/screen'); var _helpersScreen2 = _interopRequireDefault(_helpersScreen); var Dialog = (function (_Component) { _inherits(Dialog, _Component); function Dialog() { _classCallCheck(this, Dialog); _get(Object.getPrototypeOf(Dialog.prototype), 'constructor', this).apply(this, arguments); } _createClass(Dialog, [{ key: 'componentDidMount', value: function componentDidMount() { var _this = this; if (!this.props.ignoreResizeEvents) { window.addEventListener('resize', this._resize = function () { return _this.forceUpdate(); }); } } }, { key: 'componentWillUnmount', value: function componentWillUnmount() { if (!this.props.ignoreResizeEvents) { window.removeEventListener('resize', this._resize); } } }, { key: 'button', value: function button(label, onClick) { if (!label) { return null; } return _react2['default'].createElement( _button2['default'], { style: { margin: '8px 8px 8px 0', padding: '0 8px' }, primary: true, flat: true, onClick: onClick }, label ); } }, { key: 'render', value: function render() { var _props = this.props; var cancelLabel = _props.cancelLabel; var children = _props.children; var className = _props.className; var height = _props.height; var hideDivider = _props.hideDivider; var isOpen = _props.isOpen; var noPadding = _props.noPadding; var okLabel = _props.okLabel; var onCancel = _props.onCancel; var onOk = _props.onOk; var style = _props.style; var title = _props.title; var width = _props.width; var screenSize = _helpersScreen2['default'].getSize(); var top = screenSize.height / 2 - height / 2; top = top < 24 ? 24 : top; var maxWidth = width > screenSize.width - 80 ? screenSize.width - 80 : width; var left = (screenSize.width - maxWidth) / 2; var maxHeight = screenSize.height - 48; var maxContentHeight = maxHeight - 48; var footer = null; if (okLabel || cancelLabel) { footer = _react2['default'].createElement( 'div', { style: { height: '56px', textAlign: 'right' } }, hideDivider ? null : _react2['default'].createElement(_divider2['default'], { style: { margin: 0 } }), this.button(cancelLabel, onCancel), this.button(okLabel, onOk) ); maxContentHeight -= 56; } var titleElement = null; if (title) { titleElement = _react2['default'].createElement( 'div', { style: { fontSize: '20px', fontWeight: 400, marginBottom: children ? '24px' : 0 } }, title ); maxContentHeight -= 49; } var dialog = isOpen ? _react2['default'].createElement( _reactTransitionGroup.CSSTransition, { key: 'dialog', classNames: 'popup', timeout: { enter: 400, exit: 400 } }, _react2['default'].createElement( 'div', { style: { zIndex: 1000 } }, _react2['default'].createElement(_mask2['default'], null), _react2['default'].createElement( 'div', { className: (0, _classnames2['default'])('paper2', 'transition', className), style: Object.assign({ position: 'fixed', zIndex: 1001, top: top + 'px', left: left + 'px', width: maxWidth + 'px', maxHeight: maxHeight + 'px' }, style) }, _react2['default'].createElement( 'div', { style: { padding: noPadding ? 0 : '24px' } }, titleElement, _react2['default'].createElement( 'div', { style: { maxHeight: maxContentHeight + 'px', overflow: 'auto', margin: '0 -24px', padding: '0 24px' } }, children ) ), footer ) ) ) : null; return _react2['default'].createElement( _reactTransitionGroup.TransitionGroup, { style: { zIndex: 1000 } }, dialog ); } }], [{ key: 'displayName', value: 'Dialog', enumerable: true }, { key: 'propTypes', value: { cancelLabel: _propTypes2['default'].string, children: _propTypes2['default'].node, className: _propTypes2['default'].string, height: _propTypes2['default'].number, hideDivider: _propTypes2['default'].bool, ignoreResizeEvents: _propTypes2['default'].bool, isOpen: _propTypes2['default'].bool, noPadding: _propTypes2['default'].bool, okLabel: _propTypes2['default'].string, onCancel: _propTypes2['default'].func, onOk: _propTypes2['default'].func, style: _propTypes2['default'].object, title: _propTypes2['default'].string, width: _propTypes2['default'].number }, enumerable: true }, { key: 'defaultProps', value: { className: '', height: 130, hideDivider: false, ignoreResizeEvents: false, isOpen: false, noPadding: false, style: {}, width: 280 }, enumerable: true }]); return Dialog; })(_react.Component); exports['default'] = Dialog; module.exports = exports['default'];