Skip to content

Commit a8e7416

Browse files
committed
add pull to refresh component
1 parent d220222 commit a8e7416

File tree

9 files changed

+163
-0
lines changed

9 files changed

+163
-0
lines changed
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
<style>
2+
3+
</style>
4+
<script>
5+
export default {
6+
data () {
7+
return {
8+
list: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
9+
height: document.documentElement.clientHeight,
10+
refreshing: false,
11+
down: true
12+
}
13+
},
14+
methods: {
15+
toggle () {
16+
this.down = !this.down;
17+
}
18+
}
19+
}
20+
</script>
21+
## PullToRefresh 拉动刷新
22+
23+
### 使用指南
24+
```javascript
25+
import { Pulltorefresh } from 'milk-vue';
26+
Vue.component(Pulltorefresh.name, Pulltorefresh);
27+
```
28+
29+
### 代码演示
30+
31+
:::demo
32+
```html
33+
<v-button @click="toggle">{{ down ? 'down' : 'up' }}</v-button>
34+
<v-pull-to-refresh
35+
:style="{ height: height, overflow: 'auto' }"
36+
:refreshing="refreshing"
37+
:direction="down ? 'down' : 'up'"
38+
:indicator="down ? {} : { deactivate: '上拉可以刷新' }"
39+
>
40+
<div
41+
v-for="(item, index) in list"
42+
:style="{ textAlign: 'center', padding: '20px' }"
43+
:key="item"
44+
>
45+
{{ down ? 'pull down' : 'pull up' }} {{index}}
46+
</div>
47+
</v-pull-to-refresh>
48+
```
49+
:::
50+
51+
### API
52+
53+
| 属性 | 说明 | 类型 | 默认值 |
54+
|-----------|-----------|-----------|-------------|
55+
| direction | 拉动方向可以是`up``down` | `String` | `down` |
56+
| distanceToRefresh | 刷新距离 | `number` | 25 |
57+
| refreshing | 是否显示刷新状态 | `bool` | `false` |
58+
| onRefresh | 刷新回调函数 | `(): void` | |
59+
| indicator | 指示器配置 | `Object` | |

docs/src/doc.config.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,9 @@ module.exports = {
128128
'list': [{
129129
'path': '/swipeaction',
130130
'title': 'SwipeAction - 滑动操作'
131+
}, {
132+
'path': '/pulltorefresh',
133+
'title': 'PullToRefresh - 拉动刷新'
131134
}]
132135
}]
133136
}

package-lock.json

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
"babel-runtime": "6.x",
4545
"v-drawer": "^1.0.9",
4646
"v-feedback": "^0.1.13",
47+
"v-pull-to-refresh": "^1.0.2",
4748
"v-swipeout": "^1.0.7",
4849
"v-tooltip": "^2.0.0-rc.25",
4950
"vue": "^2.5.11",

packages/index.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import Navbar from './navbar';
1313
import Pagination from './pagination';
1414
import Popover from './popover';
1515
import Progress from './progress';
16+
import Pulltorefresh from './pulltorefresh';
1617
import Radio from './radio';
1718
import Row from './row';
1819
import Stepper from './stepper';
@@ -39,6 +40,7 @@ const components = [
3940
Pagination,
4041
Popover,
4142
Progress,
43+
Pulltorefresh,
4244
Radio,
4345
Row,
4446
Stepper,
@@ -78,6 +80,7 @@ export {
7880
Pagination,
7981
Popover,
8082
Progress,
83+
Pulltorefresh,
8184
Radio,
8285
Row,
8386
Stepper,

packages/pulltorefresh/index.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import VPullToRefresh from './pulltorefresh.vue';
2+
3+
export default VPullToRefresh;
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<template>
2+
<pull-to-refresh
3+
prefixCls='vm-pull-to-refresh'
4+
:direction="direction"
5+
:distanceToRefresh="distanceToRefresh"
6+
:refreshing="refreshing"
7+
:onRefresh="onRefresh"
8+
:indicator="Object.assign(INDICATOR, indicator)"
9+
>
10+
<slot></slot>
11+
</pull-to-refresh>
12+
</template>
13+
14+
<script>
15+
import PullToRefresh from 'v-pull-to-refresh';
16+
17+
const INDICATOR = {
18+
activate: '松开立即刷新',
19+
deactivate: '下拉可以刷新',
20+
release: '加载中',
21+
finish: '完成刷新',
22+
};
23+
24+
export default {
25+
name: 'VPullToRefresh',
26+
data () {
27+
return {
28+
INDICATOR
29+
}
30+
},
31+
props: {
32+
direction: {
33+
type: String,
34+
default: 'down'
35+
},
36+
distanceToRefresh: {
37+
type: Number,
38+
default: 25
39+
},
40+
refreshing: false,
41+
indicator: Object,
42+
className: String,
43+
onRefresh: Function
44+
},
45+
components: {
46+
PullToRefresh
47+
}
48+
}
49+
</script>

style/mixins.less

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
@import "./mixins/menu.less";
1515
@import "./mixins/popover.less";
1616
@import "./mixins/swipeactioin.less";
17+
@import "./mixins/pulltorefresh.less";
1718
@import "./mixins/progress.less";
1819
@import "./mixins/pagination.less";
1920
@import "./mixins/stepper.less";

style/mixins/pulltorefresh.less

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
@import "../themes/default";
2+
3+
@pull-to-refresh: vm-pull-to-refresh;
4+
5+
.@{pull-to-refresh} {
6+
&-content {
7+
&-wrapper {
8+
overflow: hidden;
9+
}
10+
transform-origin: left top 0;
11+
}
12+
13+
&-transition {
14+
transition: transform 0.3s;
15+
}
16+
17+
&-indicator {
18+
color: grey;
19+
text-align: center;
20+
height: 25 * @hd;
21+
}
22+
23+
&-down .@{pull-to-refresh}-indicator {
24+
margin-top: -25 * @hd;
25+
}
26+
27+
&-up .@{pull-to-refresh}-indicator {
28+
margin-bottom: -25 * @hd;
29+
}
30+
}

0 commit comments

Comments
 (0)