UNPKG

@bnorth/components

Version:

bnorth, components, react

238 lines (206 loc) 9.55 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime-corejs2/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault"); var _Object$defineProperty2 = require("@babel/runtime-corejs2/core-js/object/define-property"); _Object$defineProperty2(exports, "__esModule", { value: true }); exports.modal = exports.default = void 0; var _defineProperties = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/define-properties")); var _getOwnPropertyDescriptors = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors")); var _getOwnPropertyDescriptor = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor")); var _getOwnPropertySymbols = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols")); var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/define-property")); var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/extends")); var _defineProperty3 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/objectWithoutProperties")); var _react = _interopRequireDefault(require("react")); var _BaseComponent2 = _interopRequireDefault(require("./BaseComponent")); var _Panel = _interopRequireWildcard(require("./Panel")); var _Backdrop = _interopRequireDefault(require("./Backdrop")); var _Icon = require("./Icon"); var _Button = _interopRequireDefault(require("./Button")); function ownKeys(object, enumerableOnly) { var keys = (0, _keys.default)(object); if (_getOwnPropertySymbols.default) { var symbols = (0, _getOwnPropertySymbols.default)(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return (0, _getOwnPropertyDescriptor.default)(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { (0, _defineProperty3.default)(target, key, source[key]); }); } else if (_getOwnPropertyDescriptors.default) { (0, _defineProperties.default)(target, (0, _getOwnPropertyDescriptors.default)(source)); } else { ownKeys(source).forEach(function (key) { (0, _defineProperty2.default)(target, key, (0, _getOwnPropertyDescriptor.default)(source, key)); }); } } return target; } var _Modal = function Modal(aprops) { var _BaseComponent = (0, _BaseComponent2.default)(aprops, _Modal), type = _BaseComponent.type, rewind = _BaseComponent.rewind, onClose = _BaseComponent.onClose, onFinished = _BaseComponent.onFinished, onAction = _BaseComponent.onAction, containerProps = _BaseComponent.containerProps, headerProps = _BaseComponent.headerProps, title = _BaseComponent.title, close = _BaseComponent.close, bodyProps = _BaseComponent.bodyProps, footerProps = _BaseComponent.footerProps, buttons = _BaseComponent.buttons, classNamePre = _BaseComponent.classNamePre, stylePre = _BaseComponent.stylePre, children = _BaseComponent.children, app = _BaseComponent.app, _id = _BaseComponent._id, poplayer = _BaseComponent.poplayer, info = _BaseComponent.info, states = _BaseComponent.states, props = (0, _objectWithoutProperties2.default)(_BaseComponent, ["type", "rewind", "onClose", "onFinished", "onAction", "containerProps", "headerProps", "title", "close", "bodyProps", "footerProps", "buttons", "classNamePre", "stylePre", "children", "app", "_id", "poplayer", "info", "states"]); buttons = buttons[type] || []; children = typeof children === 'function' ? children(_objectSpread({}, props, { app: app, _id: _id, poplayer: poplayer, info: info, states: states })) : children; classNamePre = _objectSpread({ 'position-relative backface-hidden overflow-a-hidden': true, 'square-full': type === 'popup', 'border-radius-': type !== 'popup' && type !== 'document' }, classNamePre); stylePre = _objectSpread({ width: type !== 'popup' ? '80%' : undefined }, stylePre); var classNamePreContainer = { 'flex-display-block': type !== 'document', 'flex-justify-center': type !== 'document', 'flex-align-center': type !== 'document' }; children = _react.default.createElement(_Panel.default, (0, _extends2.default)({ onClick: function onClick(e) { e.stopPropagation(); e.preventDefault(); }, clickable: false, "b-style": "white", stylePre: type !== 'document' && stylePre, classNamePre: type !== 'document' && classNamePre }, props), type === 'document' ? children : null, type !== 'document' && (title || close) ? _react.default.createElement(_Icon.PanelIcon, (0, _extends2.default)({ "bp-title-bc-flex-sub-flex-extend": true, "bp-title-bc-text-align-center": !close, name: close === true ? "close:x" : close, "bp-icon-onClick": onClose, "b-icon-bc-padding-a": "xs", "bc-border-set-bottom-": Boolean(children || buttons.length), "bc-width-full": true, "bc-padding-a-": true, position: "right" }, headerProps), title) : null, type !== 'document' && children ? _react.default.createElement(_Panel.default, (0, _extends2.default)({ "bc-padding-a-": true, "bc-border-set-bottom-": Boolean(buttons.length) }, bodyProps), children) : null, type !== 'document' && buttons.length ? _react.default.createElement(_Panel.PanelContainer, (0, _extends2.default)({ ctype: "justify" }, footerProps), buttons.map(function (v, i) { return _react.default.createElement(_Panel.default, (0, _extends2.default)({ key: i, component: _Button.default, className: "bg-none- border-none-top- border-none-bottom- border-none-right-", "bc-border-set-left-": Boolean(i), "bc-border-none-left-": !Boolean(i), onClick: function onClick(e) { e.stopPropagation(); onClose && onClose(i); } }, v)); })) : null); return _react.default.createElement(_Panel.default, (0, _extends2.default)({ component: _Backdrop.default, duration: 100, rewind: rewind, clickable: false, onClick: onClose, onFinished: onFinished, classNamePre: classNamePreContainer }, containerProps), children); }; _Modal.defaultProps = {}; _Modal.defaultProps.buttons = { alert: [{ children: '确定' }], prompt: [{ children: '取消' }, { children: '确定' }] }; (0, _defineProperty2.default)(_Modal, "Modal", { get: function get() { return _Modal; }, set: function set(val) { _Modal = val; } }); _Modal.isBnorth = true; _Modal.defaultProps['b-precast'] = { 'bp-header-bp-title-bc-text-weight': 'bold' }; var _default = _Modal; exports.default = _default; var modal = { _id: 'modal', _onStart: function _onStart(app) { app.modal = { show: function show(content, props) { var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; return options._id = app.Poplayer.addPoplayer(_Modal, _objectSpread({ children: content, onClose: function onClose(index) { return app.modal.close(options._id, isNaN(index) ? -1 : index); } }, props), _objectSpread({ _idPage: app.Page.getPage()._id, isModal: true, _onStart: function _onStart(app, _id, poplayer) { window.history.pushState(null, null, window.location.href); poplayer._state_func = function (e) { app.modal.close(_id); poplayer.popstate = true; }; window.addEventListener('popstate', poplayer._state_func); }, _onStop: function _onStop(app, _id, poplayer) { if (!poplayer.popstate) window.history.back(); window.removeEventListener('popstate', poplayer._state_func); } }, options)); }, close: function close(_id, index) { var _ref = app.Poplayer.getPoplayerInfo(_id) || {}, _ref$props = _ref.props; _ref$props = _ref$props === void 0 ? {} : _ref$props; var onAction = _ref$props.onAction; if (onAction && onAction(index, _id) === false) return; return app.modal.remove(_id); }, remove: function remove(_id) { return _id && app.Poplayer.addPoplayer(null, { rewind: true, onFinished: function onFinished() { return app.Poplayer.removePoplayer(_id); } }, { _id: _id }); } }; app.modal._modalShow = app.render.modalShow; app.modal._modalClose = app.render.modalClose; app.render.modalShow = function () { var _app$modal; return (_app$modal = app.modal).show.apply(_app$modal, arguments); }; app.render.modalClose = function () { var _app$modal2; return (_app$modal2 = app.modal).close.apply(_app$modal2, arguments); }; }, _onStop: function _onStop(app) { app.render.modalShow = app.modal._modalShow; app.render.modalClose = app.modal._modalClose; delete app.modal; } }; exports.modal = modal;