rax-scrollview
Version:
ScrollView component for Rax.
136 lines (135 loc) • 3.67 kB
JavaScript
"use strict";
var _fmtEvent = _interopRequireDefault(require("./fmtEvent"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var noop = function () {};
Component({
data: {
direction: 'vertical',
scrollY: 0,
scrollX: 0,
scrollIntoViewId: '',
scrollWithAnimation: true,
scrollAnimationDuration: 400
},
props: {
id: '',
className: '',
style: '',
disableScroll: false,
horizontal: false,
endReachedThreshold: 500,
onEndReached: noop,
onScroll: noop,
scrollTop: 0,
scrollLeft: 0,
trapScroll: false,
enableBackToTop: false,
ref: noop,
onTouchStart: noop,
onTouchMove: noop,
onTouchEnd: noop,
onTouchCancel: noop
},
methods: {
onEndReached: function onEndReached(e) {
var event = (0, _fmtEvent.default)(this.props, e);
this.props.onEndReached(event);
},
onScroll: function onScroll(e) {
var event = (0, _fmtEvent.default)(this.props, e);
event.nativeEvent = {
get contentOffset() {
return {
x: e.detail.scrollLeft,
y: e.detail.scrollTop
};
},
get contentSize() {
return {
width: e.detail.scrollWidth,
height: e.detail.scrollHeight
};
}
};
this.props.onScroll(event);
},
scrollTo: function scrollTo(param) {
var _ref = param || {},
_ref$x = _ref.x,
x = _ref$x === void 0 ? 0 : _ref$x,
_ref$y = _ref.y,
y = _ref$y === void 0 ? 0 : _ref$y,
_ref$animated = _ref.animated,
animated = _ref$animated === void 0 ? true : _ref$animated,
_ref$duration = _ref.duration,
duration = _ref$duration === void 0 ? 400 : _ref$duration;
this.setData({
scrollY: y,
scrollX: x,
scrollWithAnimation: animated,
scrollAnimationDuration: duration
});
},
scrollIntoView: function scrollIntoView(param) {
var _ref2 = param || {},
id = _ref2.id,
_ref2$animated = _ref2.animated,
animated = _ref2$animated === void 0 ? true : _ref2$animated,
_ref2$duration = _ref2.duration,
duration = _ref2$duration === void 0 ? 400 : _ref2$duration;
this.setData({
scrollIntoViewId: id,
scrollWithAnimation: animated,
scrollAnimationDuration: duration
});
},
onTouchStart: function (e) {
var event = (0, _fmtEvent.default)(this.props, e);
event.nativeEvent = {
get target() {
return e.target;
},
get currentTarget() {
return e.currentTarget;
}
};
this.props.onTouchStart(event);
},
onTouchMove: function (e) {
var event = (0, _fmtEvent.default)(this.props, e);
event.nativeEvent = {
get target() {
return e.target;
},
get currentTarget() {
return e.currentTarget;
}
};
this.props.onTouchMove(event);
},
onTouchEnd: function (e) {
var event = (0, _fmtEvent.default)(this.props, e);
event.nativeEvent = {
get target() {
return e.target;
},
get currentTarget() {
return e.currentTarget;
}
};
this.props.onTouchEnd(event);
},
onTouchCancel: function (e) {
var event = (0, _fmtEvent.default)(this.props, e);
event.nativeEvent = {
get target() {
return e.target;
},
get currentTarget() {
return e.currentTarget;
}
};
this.props.onTouchCancel(event);
}
}
});