UNPKG

snabbdom-material

Version:

Stateless UI components for snabbdom that follow material design

112 lines (88 loc) 3.55 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _h = require('snabbdom/h'); var _h2 = _interopRequireDefault(_h); var _style = require('../../style'); var _mask = require('../mask'); var _mask2 = _interopRequireDefault(_mask); var _paper = require('../paper'); var _paper2 = _interopRequireDefault(_paper); var _divider = require('../divider'); var _divider2 = _interopRequireDefault(_divider); var _screenSize = require('../../helpers/screenSize'); var _screenSize2 = _interopRequireDefault(_screenSize); var _button = require('./button'); var _button2 = _interopRequireDefault(_button); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } var Dialog = function Dialog(_ref) { var footer = _ref.footer; var _ref$height = _ref.height; var height = _ref$height === undefined ? 130 : _ref$height; var _ref$hideDivider = _ref.hideDivider; var hideDivider = _ref$hideDivider === undefined ? false : _ref$hideDivider; var _ref$isOpen = _ref.isOpen; var isOpen = _ref$isOpen === undefined ? false : _ref$isOpen; var _ref$noPadding = _ref.noPadding; var noPadding = _ref$noPadding === undefined ? false : _ref$noPadding; var screenInfo = _ref.screenInfo; var style = _ref.style; var title = _ref.title; var _ref$width = _ref.width; var width = _ref$width === undefined ? 280 : _ref$width; var children = arguments.length <= 1 || arguments[1] === undefined ? '' : arguments[1]; var styles = (0, _style.getStyle)('dialog', style); var screenSize = (0, _screenSize2.default)(); 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 footerContainer = null; if (footer) { footerContainer = (0, _h2.default)('div', { style: styles.footerContainer }, [].concat(_toConsumableArray(hideDivider ? [] : [(0, _divider2.default)({ style: { divider: styles.divider } })]), [footer])); maxContentHeight -= 56; } else { footerContainer = (0, _h2.default)('span'); } var titleContainer = void 0; if (title) { titleContainer = [(0, _h2.default)('div', { style: Object.assign({}, styles.titleContainer, children ? {} : styles.titleContainerNoContent) }, typeof title === 'string' ? title : [title])]; maxContentHeight -= 49; } else { titleContainer = []; } return (0, _h2.default)('div', { style: styles.container }, [(0, _mask2.default)({ isOpen: isOpen })].concat(_toConsumableArray(isOpen ? [(0, _paper2.default)({ elevation: 2, noPadding: true, style: { paper: Object.assign({ top: top + 'px', left: left + 'px', width: maxWidth + 'px', maxHeight: maxHeight + 'px' }, styles.dialog) } }, [(0, _h2.default)('div', { style: { padding: noPadding ? '0' : '24px' } }, [].concat(_toConsumableArray(titleContainer), [(0, _h2.default)('div', { style: Object.assign({ maxHeight: maxContentHeight + 'px' }, styles.bodyContainer) }, children)])), footerContainer])] : []))); }; Dialog.Button = _button2.default; exports.default = Dialog;