taro-material
Version:
Mini Program components that implement Google's Material Design.
71 lines (64 loc) • 2.03 kB
JavaScript
import Nerv from "nervjs";
import Taro from "@tarojs/taro-h5";
import { View, Text } from '@tarojs/components';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import AtActivityIndicator from "../activity-indicator/index";
import AtButton from "../button/index";
import AtComponent from "../../common/component";
export default class AtLoadMore extends AtComponent {
onClick() {
this.props.onClick(...arguments);
}
render() {
const {
className,
customStyle,
loadingText,
moreText,
status,
moreBtnStyle,
noMoreTextStyle,
noMoreText
} = this.props;
let component = null;
if (status === 'loading') {
component = <AtActivityIndicator mode="center" content={loadingText} />;
} else if (status === 'more') {
component = <View className="at-load-more__cnt">
<AtButton full onClick={this.onClick.bind(this)} customStyle={moreBtnStyle}>
{moreText}
</AtButton>
</View>;
} else {
component = <Text className="at-load-more__tip" style={noMoreTextStyle}>
{noMoreText}
</Text>;
}
return <View className={classNames('at-load-more', className)} style={customStyle}>
{component}
</View>;
}
}
AtLoadMore.defaultProps = {
customStyle: '',
className: '',
noMoreTextStyle: '',
moreBtnStyle: '',
status: 'more',
loadingText: '加载中',
moreText: '查看更多',
noMoreText: '没有更多',
onClick: () => {}
};
AtLoadMore.propTypes = {
customStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),
className: PropTypes.oneOfType([PropTypes.array, PropTypes.string]),
noMoreTextStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),
moreBtnStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),
status: PropTypes.oneOf(['more', 'loading', 'noMore']),
loadingText: PropTypes.string,
moreText: PropTypes.string,
noMoreText: PropTypes.string,
onClick: PropTypes.func
};