UNPKG

@bnorth/components

Version:

bnorth, components, react

209 lines (167 loc) 7.81 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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/define-property")); 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 _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 _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 _Touchable = _interopRequireDefault(require("./Touchable")); var _Loader = require("./Loader"); 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; } /** * 支持滚动与下拉刷新的小面板 * @component * @exportdefault * @augments BaseComponent */ var PullRefresh = /*#__PURE__*/ function (_React$Component) { (0, _inherits2.default)(PullRefresh, _React$Component); function PullRefresh() { (0, _classCallCheck2.default)(this, PullRefresh); return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(PullRefresh).apply(this, arguments)); } (0, _createClass2.default)(PullRefresh, [{ key: "componentDidMount", value: function componentDidMount() { var _this = this; if (_BaseComponent2.domIsMouse) { (0, _BaseComponent2.domFindNode)(this).addEventListener("mousedown", function (event) { _this.mark = false; }, true); (0, _BaseComponent2.domFindNode)(this).addEventListener("click", function (event) { if (_this.mark) { event.stopPropagation(); _this.mark = false; } }, true); } } }, { key: "render", value: function render() { var _this2 = this; var _BaseComponent = (0, _BaseComponent2.default)(this.props, PullRefresh), isLoading = _BaseComponent.isLoading, onLoad = _BaseComponent.onLoad, triggerOffset = _BaseComponent.triggerOffset, loaderProps = _BaseComponent.loaderProps, classNamePre = _BaseComponent.classNamePre, children = _BaseComponent.children, props = (0, _objectWithoutProperties2.default)(_BaseComponent, ["isLoading", "onLoad", "triggerOffset", "loaderProps", "classNamePre", "children"]); var _ref = this.state || {}, _ref$offset = _ref.offset, offset = _ref$offset === void 0 ? 0 : _ref$offset; classNamePre = _objectSpread({ 'scrollable-y-': true }, classNamePre); var classNamePreLoader = 'overflow-a-hidden transition-property-height'; var stylePreLoader = { height: 0 }; if (offset > 0) stylePreLoader.height = offset; if (isLoading) stylePreLoader.height = triggerOffset; return _react.default.createElement(_Panel.default, (0, _extends2.default)({ recognizers: { pan: { enable: true } }, direction: "vertical", options: { touchAction: 'pan-y' }, onPan: function onPan(event, element) { if (element.scrollTop > 0) return; _this2.setState({ offset: Math.max(event.deltaY, 0) }); !_this2.props.isLoading && _this2.state.offset && event.preventDefault(); }, onPanEnd: function onPanEnd() { if (offset) { _this2.setState({ offset: 0 }, function () { return offset >= triggerOffset && onLoad && onLoad(); }); if (_BaseComponent2.domIsMouse) _this2.mark = true; } }, onPanCancel: function onPanCancel() { if (offset) { _this2.setState({ offset: 0 }, function () { return offset >= triggerOffset && onLoad && onLoad(); }); if (_BaseComponent2.domIsMouse) _this2.mark = true; } }, component: _Touchable.default, classNamePre: classNamePre }, props), _react.default.createElement(_Panel.default, (0, _extends2.default)({ position: "top", isProgress: !isLoading, progress: offset * 100 / triggerOffset, component: _Loader.PanelLoader, classNamePre: classNamePreLoader, stylePre: stylePreLoader }, loaderProps)), children); } }]); return PullRefresh; }(_react.default.Component); PullRefresh.defaultProps = {}; /** * 下拉触发刷新的长度 * @type {number} */ PullRefresh.defaultProps.triggerOffset = 60; /** * 点击事件处理函数,对应手势 tap * @attribute Panel.module:PullRefresh~PullRefresh.isLoading * @type {boolean} */ /** * 点击事件处理函数,对应手势 tap * @attribute Panel.module:PullRefresh~PullRefresh.onLoad * @type {function} */ /** * 点击事件处理函数,对应手势 tap * @attribute Panel.module:PullRefresh~PullRefresh.loaderProps * @type {object} */ (0, _defineProperty2.default)(PullRefresh, "PullRefresh", { get: function get() { return PullRefresh; }, set: function set(val) { PullRefresh = val; } }); PullRefresh.isBnorth = true; PullRefresh.defaultProps['b-precast'] = {}; var _default = PullRefresh; exports.default = _default;