UNPKG

rmwc

Version:

A thin React wrapper for Material Design (Web) Components

301 lines (248 loc) 10.6 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.SimpleDialog = exports.Dialog = exports.DialogFooterButton = exports.DialogFooter = exports.DialogBody = exports.DialogHeaderTitle = exports.DialogHeader = exports.DialogSurface = exports.DialogBackdrop = exports.DialogRoot = undefined; 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(object, property, receiver) { 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 { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; var _react = require('react'); var React = _interopRequireWildcard(_react); var _mdc = require('@material/dialog/dist/mdc.dialog'); var _Button = require('../Button'); var _Button2 = _interopRequireDefault(_Button); var _Base = require('../Base'); var _withFoundation2 = require('../Base/withFoundation'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } 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 DialogRoot = exports.DialogRoot = (0, _Base.simpleTag)({ displayName: 'DialogRoot', defaultProps: { role: 'alertdialog' }, tag: 'aside', classNames: 'mdc-dialog' }); /** The Dialog backdrop */ var DialogBackdrop = exports.DialogBackdrop = (0, _Base.simpleTag)({ displayName: 'DialogBackdrop', classNames: 'mdc-dialog__backdrop' }); /** The Dialog surface */ var DialogSurface = exports.DialogSurface = (0, _Base.simpleTag)({ displayName: 'DialogSurface', classNames: 'mdc-dialog__surface' }); /** The Dialog header */ var DialogHeader = exports.DialogHeader = (0, _Base.simpleTag)({ displayName: 'DialogHeader', tag: 'header', classNames: 'mdc-dialog__header' }); /** The Dialog title */ var DialogHeaderTitle = exports.DialogHeaderTitle = (0, _Base.simpleTag)({ displayName: 'DialogHeaderTitle', tag: 'h2', classNames: 'mdc-dialog__header__title' }); /** The Dialog body */ var DialogBody = exports.DialogBody = function (_simpleTag) { _inherits(DialogBody, _simpleTag); function DialogBody() { _classCallCheck(this, DialogBody); return _possibleConstructorReturn(this, (DialogBody.__proto__ || Object.getPrototypeOf(DialogBody)).apply(this, arguments)); } _createClass(DialogBody, [{ key: 'render', value: function render() { return _get(DialogBody.prototype.__proto__ || Object.getPrototypeOf(DialogBody.prototype), 'render', this).call(this); } }]); return DialogBody; }((0, _Base.simpleTag)({ tag: 'section', classNames: function classNames(props) { return ['mdc-dialog__body', { 'mdc-dialog__body--scrollable': props.scrollable }]; }, consumeProps: ['scrollable'] })); /** The Dialog footer */ Object.defineProperty(DialogBody, 'displayName', { enumerable: true, writable: true, value: 'DialogBody' }); var DialogFooter = exports.DialogFooter = (0, _Base.simpleTag)({ displayName: 'DialogFooter', tag: 'footer', classNames: 'mdc-dialog__footer' }); /** A Dialog footer button */ var DialogFooterButton = exports.DialogFooterButton = function (_simpleTag2) { _inherits(DialogFooterButton, _simpleTag2); function DialogFooterButton() { _classCallCheck(this, DialogFooterButton); return _possibleConstructorReturn(this, (DialogFooterButton.__proto__ || Object.getPrototypeOf(DialogFooterButton)).apply(this, arguments)); } _createClass(DialogFooterButton, [{ key: 'render', value: function render() { return _get(DialogFooterButton.prototype.__proto__ || Object.getPrototypeOf(DialogFooterButton.prototype), 'render', this).call(this); } }]); return DialogFooterButton; }((0, _Base.simpleTag)({ tag: _Button2.default, classNames: function classNames(props) { return ['mdc-dialog__footer__button', { 'mdc-dialog__footer__button--cancel': props.cancel, 'mdc-dialog__footer__button--accept': props.accept }]; }, defaultProps: { accept: false, cancel: false }, consumeProps: ['accept', 'cancel'] })); Object.defineProperty(DialogFooterButton, 'displayName', { enumerable: true, writable: true, value: 'DialogFooterButton' }); var Dialog = exports.Dialog = function (_withFoundation) { _inherits(Dialog, _withFoundation); function Dialog() { _classCallCheck(this, Dialog); return _possibleConstructorReturn(this, (Dialog.__proto__ || Object.getPrototypeOf(Dialog)).apply(this, arguments)); } _createClass(Dialog, [{ key: 'syncWithProps', value: function syncWithProps(nextProps) { var _this4 = this; // open (0, _withFoundation2.syncFoundationProp)(nextProps.open, this.open, function () { nextProps.open ? _this4.show() : _this4.close(); }); } }, { key: 'render', value: function render() { var _props = this.props, open = _props.open, onAccept = _props.onAccept, onCancel = _props.onCancel, onClose = _props.onClose, apiRef = _props.apiRef, rest = _objectWithoutProperties(_props, ['open', 'onAccept', 'onCancel', 'onClose', 'apiRef']); var root_ = this.foundationRefs.root_; return React.createElement(DialogRoot, Object.assign({}, rest, { elementRef: root_ })); } }]); return Dialog; }((0, _withFoundation2.withFoundation)({ constructor: _mdc.MDCDialog, adapter: { notifyAccept: function notifyAccept() { var evt = this.emit(_mdc.MDCDialogFoundation.strings.ACCEPT_EVENT); this.props.onClose && this.props.onClose(evt); }, notifyCancel: function notifyCancel() { var evt = this.emit(_mdc.MDCDialogFoundation.strings.CANCEL_EVENT); this.props.onClose && this.props.onClose(evt); } } })); Object.defineProperty(Dialog, 'displayName', { enumerable: true, writable: true, value: 'Dialog' }); /** A non-standard SimpleDialog component for ease of use. */ var SimpleDialog = exports.SimpleDialog = function (_React$Component) { _inherits(SimpleDialog, _React$Component); function SimpleDialog() { _classCallCheck(this, SimpleDialog); return _possibleConstructorReturn(this, (SimpleDialog.__proto__ || Object.getPrototypeOf(SimpleDialog)).apply(this, arguments)); } _createClass(SimpleDialog, [{ key: 'render', value: function render() { var _props2 = this.props, title = _props2.title, header = _props2.header, body = _props2.body, footer = _props2.footer, scrollable = _props2.scrollable, acceptLabel = _props2.acceptLabel, cancelLabel = _props2.cancelLabel, children = _props2.children, open = _props2.open, rest = _objectWithoutProperties(_props2, ['title', 'header', 'body', 'footer', 'scrollable', 'acceptLabel', 'cancelLabel', 'children', 'open']); return React.createElement( Dialog, Object.assign({ open: open }, rest), React.createElement( DialogSurface, null, (!!title || !!header) && React.createElement( DialogHeader, null, !!title && React.createElement( DialogHeaderTitle, null, title ), !!header && { header: header } ), (!!body || children) && React.createElement( DialogBody, { scrollable: scrollable }, body, children ), (!!cancelLabel || !!acceptLabel) && React.createElement( DialogFooter, null, !!footer && { footer: footer }, !!cancelLabel && React.createElement( DialogFooterButton, { cancel: true }, cancelLabel ), !!acceptLabel && React.createElement( DialogFooterButton, { accept: true }, acceptLabel ) ) ), React.createElement(DialogBackdrop, null) ); } }]); return SimpleDialog; }(React.Component); Object.defineProperty(SimpleDialog, 'defaultProps', { enumerable: true, writable: true, value: { title: undefined, header: undefined, body: undefined, footer: undefined, scrollable: undefined, acceptLabel: 'Accept', cancelLabel: 'Cancel', open: false, onAccept: _Base.noop, onCancel: _Base.noop, onClose: _Base.noop, children: undefined } });