UNPKG

@bnorth/components

Version:

bnorth, components, react

172 lines (140 loc) 5.29 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.default = void 0; var _defineProperty = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/define-property")); require("core-js/modules/es6.number.constructor"); var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/extends")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/objectWithoutProperties")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf")); var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits")); var _react = _interopRequireDefault(require("react")); var _BaseComponent2 = _interopRequireWildcard(require("./BaseComponent")); var _Panel = _interopRequireDefault(require("./Panel")); var _ScrollSpy = _interopRequireDefault(require("./ScrollSpy")); var _Fab = _interopRequireDefault(require("./Fab")); var _Icon = require("./Icon"); /** * @module */ /** * 返回顶部的小组件 * @component * @exportdefault * @augments module:BaseComponent.BaseComponent * @augments module:Fab.Fab * @augments module:PanelIcon~PanelIcon */ var BackTop = /*#__PURE__*/ function (_React$Component) { (0, _inherits2.default)(BackTop, _React$Component); function BackTop() { (0, _classCallCheck2.default)(this, BackTop); return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(BackTop).apply(this, arguments)); } (0, _createClass2.default)(BackTop, [{ key: "scrollToTop", value: function scrollToTop() { if (this.dock) this.dock.scrollTop = 0; } }, { key: "isShow", value: function isShow() { return this.state && this.state.isShow; } }, { key: "toggle", value: function toggle() { this.isShow() ? this.hide() : this.show(); } }, { key: "show", value: function show() { !this.isShow() && this.setState({ isShow: true }); } }, { key: "hide", value: function hide() { this.isShow() && this.setState({ isShow: false }); } }, { key: "render", value: function render() { var _this = this; var _BaseComponent = (0, _BaseComponent2.default)(this.props, BackTop), onClick = _BaseComponent.onClick, checkFunc = _BaseComponent.checkFunc, checkParam = _BaseComponent.checkParam, scrollSpyProps = _BaseComponent.scrollSpyProps, contentProps = _BaseComponent.contentProps, children = _BaseComponent.children, props = (0, _objectWithoutProperties2.default)(_BaseComponent, ["onClick", "checkFunc", "checkParam", "scrollSpyProps", "contentProps", "children"]); return _react.default.createElement(_react.default.Fragment, null, _react.default.createElement(_ScrollSpy.default, (0, _extends2.default)({ onPosChange: function onPosChange(event, el) { _this.dock = el; checkFunc(checkParam, _this.dock) ? _this.show() : _this.hide(); } }, scrollSpyProps)), this.isShow() ? _react.default.createElement(_Panel.default, (0, _extends2.default)({ component: _Fab.default, onClick: (0, _BaseComponent2.chainedFuncs)(function () { return _this.scrollToTop(); }, onClick) }, props), _react.default.createElement(_Panel.default, (0, _extends2.default)({ component: _Icon.PanelIcon, name: "backTop:^" }, contentProps), children)) : null); } }]); return BackTop; }(_react.default.Component); BackTop.defaultProps = {}; /** * 设置出现时机的计算函数 * @type {function} */ BackTop.defaultProps.checkFunc = function (checkParam, dock) { if (!isNaN(checkParam)) { return dock.scrollTop >= checkParam; } else if (typeof checkParam === 'string' && /\d*%/.test(checkParam)) { return dock.scrollTop >= (dock ? (0, _BaseComponent2.domOffset)(dock).height * Number(checkParam.slice(0, -1)) / 100 : 0); } }; /** * 设置出现时机的计算参数 * @type {number|string} */ BackTop.defaultProps.checkParam = "100%"; /** * 设置滚动监控组件的属性 * @attribute module:BackTop.scrollSpyProps * @type {object} */ /** * 设置内容的属性 * @attribute module:BackTop.contentProps * @type {object} */ (0, _defineProperty.default)(BackTop, "BackTop", { get: function get() { return BackTop; }, set: function set(val) { BackTop = val; } }); BackTop.isBnorth = true; BackTop.defaultProps['b-precast'] = {}; var _default = BackTop; exports.default = _default;