New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

nuke-list-view

Package Overview
Dependencies
Maintainers
3
Versions
64
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

nuke-list-view - npm Package Compare versions

Comparing version 0.2.11 to 1.0.0

393

docs/basic.md

@@ -10,5 +10,4 @@ # ListView demo

````js
/** @jsx createElement */
import {createElement, Component,render} from 'rax';
import { createElement, PureComponent, Component, render } from 'rax';
import View from 'nuke-view';

@@ -18,265 +17,149 @@ import Text from 'nuke-text';

import Touchable from 'nuke-touchable';
import Icon from 'nuke-icon';
import Image from 'nuke-image';
import Button from "nuke-button";
import ListView from 'nuke-list-view';
import Modal from "nuke-modal";
import Page from 'nuke-page';
let originalData = [
{key: 'b0',text:'所有类别',icon:'//img.alicdn.com/tfs/TB1W.9QPVXXXXbBXVXXXXXXXXXX-36-36.png'},
{key: 'b1',text:'所有类别',icon:'//img.alicdn.com/tfs/TB1W.9QPVXXXXbBXVXXXXXXXXXX-36-36.png'},
{key: 'b2',text:'所有类别',icon:'//img.alicdn.com/tfs/TB1W.9QPVXXXXbBXVXXXXXXXXXX-36-36.png'},
{key: 'b3',text:'所有类别',icon:'//img.alicdn.com/tfs/TB1W.9QPVXXXXbBXVXXXXXXXXXX-36-36.png'},
{key: 'b4',text:'所有类别',icon:'//img.alicdn.com/tfs/TB1W.9QPVXXXXbBXVXXXXXXXXXX-36-36.png'},
{key: 'b5',text:'所有类别',icon:'//img.alicdn.com/tfs/TB1W.9QPVXXXXbBXVXXXXXXXXXX-36-36.png'}
]
const originalData = [];
for (let i = 0; i < 20; i++) {
originalData.push({ id: i, text: '列表项' });
}
class ListItem extends PureComponent {
render() {
const { id, text, onPress } = this.props;
return (
<Touchable
id={`cell_${id}`}
style={styles.cellItem}
onPress={() => {
onPress(id);
}}
>
<Text style={styles.itemTextList}>{text}-{id}</Text>
</Touchable>
);
}
}
class ListViewDemo extends Component {
constructor() {
super();
this.state = {
list1:{
data: [...originalData],
isRefreshing: false,
showLoading:true,
refreshText: '↓ 下拉刷新',
},
list2:{
data: [...originalData],
isRefreshing: false,
showLoading:true,
refreshText: '↓ 下拉刷新',
}
};
this.index = 0;
this.index2 = 0;
constructor() {
super();
this.state = {
data: [...originalData],
isRefreshing: false,
showLoading: true,
refreshText: '↓ 下拉刷新',
};
this.onRefresh = this.onRefresh.bind(this);
this.renderItem = this.renderItem.bind(this);
this.onLoadMore = this.onLoadMore.bind(this);
this.renderHeader = this.renderHeader.bind(this);
this.renderFooter = this.renderFooter.bind(this);
}
}
setListState(list,data){
let newState = Object.assign(this.state[list],data);
this.setState(newState);
}
linkTo(item,e) {
console.log(e);
}
renderInner(length , item, index){
const wrapStyle = index === length - 1 ? [styles.cellItem,styles.cellItemLast] : styles.cellInner;
return (
<Touchable style={wrapStyle} onPress={this.linkTo.bind(this,item)}>
{
item.icon ? <Image style={styles.icon} source={{uri:item.icon}}></Image> : null
}
<Text style={styles.itemTextList}>{item.text}</Text>
{
item.sub ? <Text style={styles.sub}>{item.sub}</Text> : null
}
{
item.arrow ? <Icon name="arrowRight" style={styles.arrow}></Icon> : null
}
</Touchable>
);
}
renderItem(length , item, index){
if(index == length - 1){
return this.renderInner(length, item, index);
}else{
return (<View style={styles.cellItem}>
{this.renderInner(length, item, index)}
</View>
);
}
}
handleRefreshList1(e) {
var self = this;
self.setListState('list1',{
isRefreshing: true,
refreshText: '加载中',
});
setTimeout(() => {
self.setListState('list1',{
isRefreshing: false,
data: [...originalData],
refreshText: '↓ 下拉刷新',
});
onItemPress(index) {
console.log(`clicked ${index}`);
}
onRefresh(e) {
this.setState({
isRefreshing: true,
refreshText: '加载中',
});
setTimeout(() => {
this.setState({
isRefreshing: false,
data: [...originalData],
refreshText: '↓ 下拉刷新',
});
}, 1000);
}
}, 1000);
}
handleLoadMoreList1=()=>{
var self = this;
setTimeout(function() {
// 这里进行异步操作
self.state.list1.data.push({key: 'b100',text:'新数据',icon:'//img.alicdn.com/tfs/TB1W.9QPVXXXXbBXVXXXXXXXXXX-36-36.png'});
self.setListState('list1',self.state.list1);
}, 1000);
}
headerList1=()=>{
return <RefreshControl style={styles.refresh} refreshing={this.state.list1.isRefreshing} onRefresh={this.handleRefreshList1.bind(this)}><Text style={styles.loadingText}>{this.state.list1.refreshText}</Text></RefreshControl>;
}
footerList1=()=>{
return this.state.list1.showLoading ?
<View style={[styles.loading]}><Text style={styles.loadingText}>加载中...</Text></View>
:null
}
headerList2=()=>{
return <RefreshControl style={styles.refresh} refreshing={this.state.list2.isRefreshing} onRefresh={this.handleRefreshList2.bind(this)}><Text style={styles.loadingText}>{this.state.list2.refreshText}</Text></RefreshControl>;
}
footerList2=()=>{
return this.state.list2.showLoading ?
<View style={[styles.loading]}><Text style={styles.loadingText}>加载中...</Text></View>
:null
}
handleRefreshList2=()=>{
var self = this;
self.setListState('list2',{
isRefreshing: true,
refreshText: '加载中',
});
setTimeout(() => {
self.index2 = 0;
self.setListState('list2',{
isRefreshing: false,
data: [...originalData],
refreshText: '↓ 下拉刷新',
});
}, 1000);
}
handleLoadMoreList2=()=> {
var self = this;
if (self.index2 == 1) {
setTimeout(function() {
// 这里进行异步操作 但数据没有新增(或减少)
self.setListState('list2',{ showLoading : false })
Modal.toast('没有更多了');
}, 1000);
}else{
setTimeout(function() {
//数据增加一次
self.state.list2.data.push({key: 'c100',text:'新数据cc',icon:'//img.alicdn.com/tfs/TB1W.9QPVXXXXbBXVXXXXXXXXXX-36-36.png'});
self.setListState('list2',self.state.list2);
self.index2 ++;
}, 1000);
}
}
headerList2=()=>{
return <RefreshControl style={styles.refresh} refreshing={this.state.list2.isRefreshing} onRefresh={this.handleRefreshList2}><Text style={styles.loadingText}>{this.state.list2.refreshText}</Text></RefreshControl>;
}
footerList2=()=>{
return this.state.list2.showLoading ?
<View style={[styles.loading]}><Text style={styles.loadingText}>加载中...</Text></View>
:null
}
scroll=()=>{
this.refs.list2.scrollTo({ x : 0 ,y : 20 })
}
reset = ()=>{
this.refs.list2.resetLoadmore();
Modal.toast('reset loadmore success');
}
render(){
return (
<Page title="ListView">
<Page.Intro main="无限下拉"></Page.Intro>
<ListView
renderHeader={this.headerList1}
renderFooter={this.footerList1}
renderRow={this.renderItem.bind(this,this.state.list1.data.length)}
dataSource={this.state.list1.data}
style={styles.listContainer}
onEndReached={this.handleLoadMoreList1}
/>
<Page.Intro main="resetLoadmore"></Page.Intro>
<ListView ref="list2"
renderHeader={this.headerList2}
renderFooter={this.footerList2}
renderRow={this.renderItem.bind(this,this.state.list2.data.length)}
dataSource={this.state.list2.data}
style={styles.listContainer}
onEndReached={this.handleLoadMoreList2}
/>
<Button.Group style={{marginTop:'30rem'}}>
<Button type="primary" onPress={this.scroll}>滑动到20rem 位置</Button>
<Button type="primary" onPress={this.reset}>reset loadMore</Button>
</Button.Group>
</Page>
)
}
onLoadMore() {
// 模拟网络加载
setTimeout(() => {
this.state.data.push({
id: 'b100',
text: '新数据',
});
this.setState({
data: this.state.data,
});
}, 300);
}
renderHeader() {
return (
<RefreshControl
style={styles.refresh}
refreshing={this.state.isRefreshing}
onRefresh={this.onRefresh}
>
<Text style={styles.loadingText}>{this.state.refreshText}</Text>
</RefreshControl>
);
}
renderItem(item, index) {
return (
<ListItem id={item.id} text={item.text} onPress={this.onItemPress} />
);
}
renderFooter() {
this.state.showLoading ? (
<View style={[styles.loading]}>
<Text style={styles.loadingText}>加载中...</Text>
</View>
) : null;
}
render() {
const { data } = this.state;
return (
<ListView
renderHeader={this.renderHeader}
renderFooter={this.renderFooter}
renderRow={this.renderItem}
dataSource={data}
style={styles.listContainer}
onEndReached={this.onLoadMore}
/>
);
}
}
const styles = {
listContainer:{
height:'300rem',
marginTop:'40rem'
},
cellItem:{
backgroundColor:"#ffffff",
[`backgroundColor:active`]:'#f2f3f7',
height:"96rem",
paddingLeft:"30rem",
},
cellInner:{
flex:1,
borderBottomWidth:"2rem",
borderBottomStyle:"solid",
borderBottomColor:"#e6e7eb",
alignItems:"center",
flexDirection:"row"
},
cellItemLast:{
backgroundColor:"#ffffff",
height:"96rem",
borderBottomWidth:"2rem",
borderBottomStyle:"solid",
borderBottomColor:"#e6e7eb",
paddingLeft:"30rem",
alignItems:"center",
flexDirection:"row"
},
icon:{
color:'#c7c7cc',
width:'72rem',
height:'72rem',
marginRight:'26rem',
//position:'absolute',
//top:'34rem',
//right:'24rem'
},
itemTextList:{
fontSize:"32rem",
color:"#5F646E"
},
refresh:{
height:"80rem",
width:"750rem",
listContainer: {
flex: 1,
},
cellItem: {
backgroundColor: '#ffffff',
'backgroundColor:active': '#f2f3f7',
height: 160,
flex: 1,
alignItems: 'center',
justifyContent:'center',
borderBottomWidth: 1,
borderBottomStyle: 'solid',
borderBottomColor: '#e6e7eb',
},
itemTextList: {
fontSize: 32,
color: '#5F646E',
},
refresh: {
height: 80,
width: 750,
backgroundColor: '#cccccc',
justifyContent: 'center',
alignItems: 'center',
},
loading: {
height: 80,
width: 750,
flexDirection: 'row',
backgroundColor: '#cccccc',
alignItems: 'center',
justifyContent: 'center',
},
loadingText: {
color: '#666666',
},
};
backgroundColor:"#cccccc",
justifyContent:"center",
alignItems:"center"
},
loading:{
height:"80rem",
display:"flex",
width:"750rem",
flexDirection:"row",
backgroundColor:"#cccccc",
alignItems:"center",
justifyContent:"center"
},
loadingText:{
color:"#666666"
}
}
render(<ListViewDemo />);
render(<ListViewDemo/>);
````
# Changelog
## 1.0.0 / 2017-11-04
* [[65f52a2](http://gitlab.alibaba-inc.com/nuke/list-view/commit/65f52a28532edd6b7cde7d5e370bd4be986eefba)] - `feat` dependency update
* [[68b75cd](http://gitlab.alibaba-inc.com/nuke/list-view/commit/68b75cdf72df74a9f65f5a0ac6dcbf1c8acab47f)] - `feat` fix dependencies
## 0.2.11 / 2017-09-27

@@ -5,0 +10,0 @@

{
"name": "nuke-list-view",
"version": "0.2.11",
"version": "1.0.0",
"description": "列表",

@@ -33,16 +33,22 @@ "main": "lib/index",

"dependencies": {
"nuke-cell": "^0.x.x",
"nuke-env": "^0.x.x",
"nuke-refresh-control": "^0.x.x",
"nuke-scroll-view": "^0.x.x"
"nuke-cell": "^1.x.x",
"nuke-env": "^1.x.x",
"nuke-refresh-control": "^1.x.x",
"nuke-scroll-view": "^1.x.x"
},
"devDependencies": {
"nuke-page": "^0.x.x",
"nuke-button": "^0.x.x",
"nuke-icon": "^0.x.x",
"nuke-image": "^0.x.x",
"nuke-modal": "^0.x.x",
"nuke-page": "^1.x.x",
"nuke-button": "^1.x.x",
"nuke-icon": "^1.x.x",
"nuke-image": "^1.x.x",
"nuke-modal": "^1.x.x",
"nuke-text": "^0.x.x",
"nuke-touchable": "^0.x.x",
"nuke-view": "^0.x.x"
"nuke-touchable": "^1.x.x",
"nuke-view": "^1.x.x",
"eslint": "3.19.0",
"babel-eslint": "^7.2.3",
"eslint-config-ali": "2.0.0",
"eslint-plugin-import": "2.6.0",
"eslint-plugin-jsx-a11y": "6.0.2",
"eslint-plugin-react": "7.1.0"
},

@@ -49,0 +55,0 @@ "publishConfig": {

/** @jsx createElement */
import {createElement, Component,render} from 'rax';
import { createElement, PureComponent, Component, render } from 'rax';
import View from 'nuke-view';

@@ -7,143 +7,158 @@ import Text from 'nuke-text';

import Touchable from 'nuke-touchable';
import Icon from 'nuke-icon';
import ListView from 'nuke-list-view';
import Modal from "nuke-modal";
let listData = [];
for (var i = 0; i < 20; i++) {
listData.push({key: i,text:'第' + i + '条数据'});
const originalData = [];
for (let i = 0; i < 20; i++) {
originalData.push({ id: i, text: '列表项' });
}
class ListItem extends PureComponent {
render() {
const { id, text, onPress } = this.props;
return (
<Touchable
id={`cell_${id}`}
style={styles.cellItem}
onPress={() => {
onPress(id);
}}
>
<Text style={styles.itemTextList}>{text}</Text>
</Touchable>
);
}
}
class ListViewDemo extends Component {
constructor() {
super();
this.state = {
data: Object.assign([],listData),
stop: false,
isRefreshing: false,
showLoading:true,
refreshText: '↓ 下拉刷新',
};
this.index = 0;
constructor() {
super();
this.state = {
data: [...originalData],
isRefreshing: false,
showLoading: true,
refreshText: '↓ 下拉刷新',
};
this.onRefresh = this.onRefresh.bind(this);
this.renderItem = this.renderItem.bind(this);
this.onLoadMore = this.onLoadMore.bind(this);
this.renderHeader = this.renderHeader.bind(this);
this.renderFooter = this.renderFooter.bind(this);
}
}
handleRefresh = (e) => {
this.setState({
isRefreshing: true,
refreshText: '加载中',
});
this.refs.mylist.resetLoadmore();
this.index = 0;
setTimeout(() => {
this.setState({
showLoading:true,
isRefreshing: false,
data: Object.assign([],listData),
refreshText: '↓ 下拉刷新',
});
Modal.toast('Refresh finish');
onItemPress(index) {
console.log(`clicked ${index}`);
}
onRefresh(e) {
this.setState({
isRefreshing: true,
refreshText: '加载中',
});
setTimeout(() => {
this.setState({
isRefreshing: false,
data: [...originalData],
refreshText: '↓ 下拉刷新',
});
}, 1000);
}
}, 1000);
};
handleLoadMore() {
var self = this;
if (self.index == 5) {
//模拟ajax请求返回数据5次以后,数据不再有更新了
self.setState({showLoading:false})
return;
}else{
//模拟ajax请求返回数据,数据有新增
setTimeout(function() {
self.state.data.push({key: self.index + 'l1',text:'第' + self.index + '次,loadmore 1'}, {key: self.index + 'l2',text:'第' + self.index + '次,loadmore 2'});
self.setState(self.state);
self.index++;
Modal.toast('Loadmore finish');
}, 1000);
}
}
linkTo(item,e) {
console.log(e);
}
renderItem (item, index){
return <Touchable style={app.cellItemList} onPress={this.linkTo.bind(this,item)}>
<Text style={app.itemTextList}>{item.text}</Text>
</Touchable>;
}
renderHeader=()=>{
return <RefreshControl style={app.refresh} refreshing={this.state.isRefreshing} onRefresh={this.handleRefresh}><Text style={app.loadingText}>{this.state.refreshText}</Text></RefreshControl>;
}
renderFooter=()=>{
return this.state.showLoading ?
<View style={[app.loading]}><Text style={app.loadingText}>加载中...</Text></View>
:null
}
render(){
var self=this;
return (
<View style={app.wrapper}>
<ListView
ref="mylist"
renderHeader={this.renderHeader}
renderFooter={this.renderFooter}
renderRow={this.renderItem.bind(this)}
dataSource={this.state.data}
showScrollbar={true}
style={app.listContainer}
onEndReached={this.handleLoadMore.bind(this)}
/>
</View>
)
}
onLoadMore() {
// 模拟网络加载
setTimeout(() => {
this.state.data.push({
id: 'b100',
text: '新数据',
});
this.setState({
data: this.state.data,
});
}, 300);
}
renderHeader() {
return (
<RefreshControl
style={styles.refresh}
refreshing={this.state.isRefreshing}
onRefresh={this.onRefresh}
>
<Text style={styles.loadingText}>{this.state.refreshText}</Text>
</RefreshControl>
);
}
renderItem(item, index) {
return (
<ListItem id={item.id} text={item.text} onPress={this.onItemPress} />
);
}
renderFooter() {
this.state.showLoading ? (
<View style={[styles.loading]}>
<Text style={styles.loadingText}>加载中...</Text>
</View>
) : null;
}
render() {
const { data } = this.state;
return (
<ListView
renderHeader={this.renderHeader}
renderFooter={this.renderFooter}
renderRow={this.renderItem}
dataSource={data}
style={styles.listContainer}
onEndReached={this.onLoadMore}
/>
);
}
}
const styles = {
listContainer: {
flex: 1,
},
cellItem: {
backgroundColor: '#ffffff',
'backgroundColor:active': '#f2f3f7',
height: '96rem',
flex: 1,
alignItems: 'center',
flexDirection: 'row',
borderBottomWidth: '2rem',
borderBottomStyle: 'solid',
borderBottomColor: '#e6e7eb',
},
icon: {
color: '#c7c7cc',
width: '72rem',
height: '72rem',
marginRight: '26rem',
// position:'absolute',
// top:'34rem',
// right:'24rem'
},
itemTextList: {
fontSize: '32rem',
color: '#5F646E',
},
refresh: {
height: '80rem',
width: '750rem',
const app = {
wrapper:{
flex:1
},
listContainer:{
flex:1
},
cellItemList:{
backgroundColor:"#ffffff",
height:"110rem",
borderBottomWidth:"2rem",
borderBottomStyle:"solid",
borderBottomColor:"#e8e8e8",
paddingLeft:"30rem",
alignItems:"center",
flexDirection:"row"
},
itemTextList:{
fontSize:"30rem",
color:"#5F646E"
},
refresh:{
height:"80rem",
width:"750rem",
backgroundColor: '#cccccc',
justifyContent: 'center',
alignItems: 'center',
},
loading: {
height: '80rem',
display: 'flex',
width: '750rem',
flexDirection: 'row',
backgroundColor: '#cccccc',
alignItems: 'center',
justifyContent: 'center',
},
loadingText: {
color: '#666666',
},
};
backgroundColor:"#cccccc",
justifyContent:"center",
alignItems:"center"
},
loading:{
height:"80rem",
display:"flex",
width:"750rem",
flexDirection:"row",
backgroundColor:"#cccccc",
alignItems:"center",
justifyContent:"center"
},
loadingText:{
color:"#666666"
}
}
render(<ListViewDemo/>);
render(<ListViewDemo />);
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc