Commit 7d535fc91510e6a2ec793de5f6d3a3ddc2802bb6

Authored by Aresn
Committed by GitHub
2 parents adb2a047 87c51597

Merge branch '2.0' into 2.0-backtop

@@ -42,4 +42,6 @@ Menu 的 activeKey 改为 activeName,openKeys 改为 openNames @@ -42,4 +42,6 @@ Menu 的 activeKey 改为 activeName,openKeys 改为 openNames
42 ### Cascader 42 ### Cascader
43 Caspanel 的 sublist 从 prop -> data 43 Caspanel 的 sublist 从 prop -> data
44 ### Select 44 ### Select
45 -model 改为 value,支持 v-model  
46 \ No newline at end of file 45 \ No newline at end of file
  46 +model 改为 value,支持 v-model
  47 +### Page
  48 +class 改为 className
47 \ No newline at end of file 49 \ No newline at end of file
@@ -52,7 +52,7 @@ @@ -52,7 +52,7 @@
52 - [x] Menu 52 - [x] Menu
53 - [x] Tabs 53 - [x] Tabs
54 - [x] Dropdown 54 - [x] Dropdown
55 -- [ ] Page 55 +- [x] Page
56 - [x] Breadcrumb 56 - [x] Breadcrumb
57 - [x] Steps 57 - [x] Steps
58 - [ ] LoadingBar 58 - [ ] LoadingBar
@@ -45,6 +45,7 @@ li + li { border-left: solid 1px #bbb; padding-left: 10px; margin-left: 10px; } @@ -45,6 +45,7 @@ li + li { border-left: solid 1px #bbb; padding-left: 10px; margin-left: 10px; }
45 <li><router-link to="/cascader">Cascader</router-link></li> 45 <li><router-link to="/cascader">Cascader</router-link></li>
46 <li><router-link to="/select">Select</router-link></li> 46 <li><router-link to="/select">Select</router-link></li>
47 <li><router-link to="/backtop">Backtop</router-link></li> 47 <li><router-link to="/backtop">Backtop</router-link></li>
  48 + <li><router-link to="/page">Page</router-link></li>
48 </ul> 49 </ul>
49 </nav> 50 </nav>
50 <router-view></router-view> 51 <router-view></router-view>
@@ -144,6 +144,10 @@ const router = new VueRouter({ @@ -144,6 +144,10 @@ const router = new VueRouter({
144 { 144 {
145 path: '/backtop', 145 path: '/backtop',
146 component: require('./routers/back-top.vue') 146 component: require('./routers/back-top.vue')
  147 + },
  148 + {
  149 + path: '/page',
  150 + component: require('./routers/page.vue')
147 } 151 }
148 ] 152 ]
149 }); 153 });
examples/routers/page.vue
1 <template> 1 <template>
2 - <Page :total="1000" show-sizer show-elevator show-total class="classr" :style="{float: 'right'}" @on-page-size-change="pc"></Page>  
3 - <br><br>  
4 - <Page :total="1000" show-sizer show-elevator show-total size="small" class="classr2"></Page>  
5 - <br><br>  
6 - <Page :current="2" :total="50" simple></Page> 2 + <div>
  3 + <Page :total="1000" show-sizer show-elevator show-total class="classr" :style="{float: 'right'}" @on-page-size-change="pc"></Page>
  4 + <br><br>
  5 + <Page :total="1000" show-sizer show-elevator show-total size="small" class="classr2"></Page>
  6 + <br><br>
  7 + <Page :current="2" :total="50" simple></Page>
  8 + </div>
7 </template> 9 </template>
8 <script> 10 <script>
9 import { Page } from 'iview'; 11 import { Page } from 'iview';
src/components/page/options.vue
1 <template> 1 <template>
2 <div v-if="showSizer || showElevator" :class="optsClasses"> 2 <div v-if="showSizer || showElevator" :class="optsClasses">
3 <div v-if="showSizer" :class="sizerClasses"> 3 <div v-if="showSizer" :class="sizerClasses">
4 - <i-select :model.sync="pageSize" :size="size" @on-change="changeSize"> 4 + <i-select v-model="currentPageSize" :size="size" @on-change="changeSize">
5 <i-option v-for="item in pageSizeOpts" :value="item" style="text-align:center;">{{ item }} {{ t('i.page.page') }}</i-option> 5 <i-option v-for="item in pageSizeOpts" :value="item" style="text-align:center;">{{ item }} {{ t('i.page.page') }}</i-option>
6 </i-select> 6 </i-select>
7 </div> 7 </div>
@@ -24,6 +24,7 @@ @@ -24,6 +24,7 @@
24 } 24 }
25 25
26 export default { 26 export default {
  27 + name: 'PageOption',
27 mixins: [ Locale ], 28 mixins: [ Locale ],
28 components: { iSelect, iOption }, 29 components: { iSelect, iOption },
29 props: { 30 props: {
@@ -36,6 +37,16 @@ @@ -36,6 +37,16 @@
36 allPages: Number, 37 allPages: Number,
37 isSmall: Boolean 38 isSmall: Boolean
38 }, 39 },
  40 + data () {
  41 + return {
  42 + currentPageSize: this.pageSize
  43 + }
  44 + },
  45 + watch: {
  46 + pageSize (val) {
  47 + this.currentPageSize = val;
  48 + }
  49 + },
39 computed: { 50 computed: {
40 size () { 51 size () {
41 return this.isSmall ? 'small' : 'default'; 52 return this.isSmall ? 'small' : 'default';
@@ -58,7 +69,7 @@ @@ -58,7 +69,7 @@
58 }, 69 },
59 methods: { 70 methods: {
60 changeSize () { 71 changeSize () {
61 - this.$emit('on-size', this.pageSize); 72 + this.$emit('on-size', this.currentPageSize);
62 }, 73 },
63 changePage (event) { 74 changePage (event) {
64 let val = event.target.value.trim(); 75 let val = event.target.value.trim();
@@ -86,4 +97,4 @@ @@ -86,4 +97,4 @@
86 } 97 }
87 } 98 }
88 }; 99 };
89 -</script> 100 -</script>
  101 +</script>
90 \ No newline at end of file 102 \ No newline at end of file
src/components/page/page.vue
@@ -6,10 +6,10 @@ @@ -6,10 +6,10 @@
6 @click="prev"> 6 @click="prev">
7 <a><i class="ivu-icon ivu-icon-ios-arrow-left"></i></a> 7 <a><i class="ivu-icon ivu-icon-ios-arrow-left"></i></a>
8 </li> 8 </li>
9 - <div :class="simplePagerClasses" :title="current + '/' + allPages"> 9 + <div :class="simplePagerClasses" :title="currentPage + '/' + allPages">
10 <input 10 <input
11 type="text" 11 type="text"
12 - :value="current" 12 + :value="currentPage"
13 @keydown="keyDown" 13 @keydown="keyDown"
14 @keyup="keyUp" 14 @keyup="keyUp"
15 @change="keyUp"> 15 @change="keyUp">
@@ -34,13 +34,13 @@ @@ -34,13 +34,13 @@
34 <a><i class="ivu-icon ivu-icon-ios-arrow-left"></i></a> 34 <a><i class="ivu-icon ivu-icon-ios-arrow-left"></i></a>
35 </li> 35 </li>
36 <li title="1" :class="firstPageClasses" @click="changePage(1)"><a>1</a></li> 36 <li title="1" :class="firstPageClasses" @click="changePage(1)"><a>1</a></li>
37 - <li :title="t('i.page.prev5')" v-if="current - 3 > 1" :class="[prefixCls + '-item-jump-prev']" @click="fastPrev"><a><i class="ivu-icon ivu-icon-ios-arrow-left"></i></a></li>  
38 - <li :title="current - 2" v-if="current - 2 > 1" :class="[prefixCls + '-item']" @click="changePage(current - 2)"><a>{{ current - 2 }}</a></li>  
39 - <li :title="current - 1" v-if="current - 1 > 1" :class="[prefixCls + '-item']" @click="changePage(current - 1)"><a>{{ current - 1 }}</a></li>  
40 - <li :title="current" v-if="current != 1 && current != allPages" :class="[prefixCls + '-item',prefixCls + '-item-active']"><a>{{ current }}</a></li>  
41 - <li :title="current + 1" v-if="current + 1 < allPages" :class="[prefixCls + '-item']" @click="changePage(current + 1)"><a>{{ current + 1 }}</a></li>  
42 - <li :title="current + 2" v-if="current + 2 < allPages" :class="[prefixCls + '-item']" @click="changePage(current + 2)"><a>{{ current + 2 }}</a></li>  
43 - <li :title="t('i.page.next5')" v-if="current + 3 < allPages" :class="[prefixCls + '-item-jump-next']" @click="fastNext"><a><i class="ivu-icon ivu-icon-ios-arrow-right"></i></a></li> 37 + <li :title="t('i.page.prev5')" v-if="currentPage - 3 > 1" :class="[prefixCls + '-item-jump-prev']" @click="fastPrev"><a><i class="ivu-icon ivu-icon-ios-arrow-left"></i></a></li>
  38 + <li :title="currentPage - 2" v-if="currentPage - 2 > 1" :class="[prefixCls + '-item']" @click="changePage(currentPage - 2)"><a>{{ currentPage - 2 }}</a></li>
  39 + <li :title="currentPage - 1" v-if="currentPage - 1 > 1" :class="[prefixCls + '-item']" @click="changePage(currentPage - 1)"><a>{{ currentPage - 1 }}</a></li>
  40 + <li :title="currentPage" v-if="currentPage != 1 && currentPage != allPages" :class="[prefixCls + '-item',prefixCls + '-item-active']"><a>{{ currentPage }}</a></li>
  41 + <li :title="currentPage + 1" v-if="currentPage + 1 < allPages" :class="[prefixCls + '-item']" @click="changePage(currentPage + 1)"><a>{{ currentPage + 1 }}</a></li>
  42 + <li :title="currentPage + 2" v-if="currentPage + 2 < allPages" :class="[prefixCls + '-item']" @click="changePage(currentPage + 2)"><a>{{ currentPage + 2 }}</a></li>
  43 + <li :title="t('i.page.next5')" v-if="currentPage + 3 < allPages" :class="[prefixCls + '-item-jump-next']" @click="fastNext"><a><i class="ivu-icon ivu-icon-ios-arrow-right"></i></a></li>
44 <li :title="allPages" v-if="allPages > 1" :class="lastPageClasses" @click="changePage(allPages)"><a>{{ allPages }}</a></li> 44 <li :title="allPages" v-if="allPages > 1" :class="lastPageClasses" @click="changePage(allPages)"><a>{{ allPages }}</a></li>
45 <li 45 <li
46 :title="t('i.page.next')" 46 :title="t('i.page.next')"
@@ -50,11 +50,11 @@ @@ -50,11 +50,11 @@
50 </li> 50 </li>
51 <Options 51 <Options
52 :show-sizer="showSizer" 52 :show-sizer="showSizer"
53 - :page-size="pageSize" 53 + :page-size="currentPageSize"
54 :page-size-opts="pageSizeOpts" 54 :page-size-opts="pageSizeOpts"
55 :show-elevator="showElevator" 55 :show-elevator="showElevator"
56 - :_current.once="current"  
57 - :current.sync="current" 56 + :_current.once="currentPage"
  57 + :current="currentPage"
58 :all-pages="allPages" 58 :all-pages="allPages"
59 :is-small="isSmall" 59 :is-small="isSmall"
60 @on-size="onSize" 60 @on-size="onSize"
@@ -70,6 +70,7 @@ @@ -70,6 +70,7 @@
70 const prefixCls = 'ivu-page'; 70 const prefixCls = 'ivu-page';
71 71
72 export default { 72 export default {
  73 + name: 'Page',
73 mixins: [ Locale ], 74 mixins: [ Locale ],
74 components: { Options }, 75 components: { Options },
75 props: { 76 props: {
@@ -112,7 +113,7 @@ @@ -112,7 +113,7 @@
112 type: Boolean, 113 type: Boolean,
113 default: false 114 default: false
114 }, 115 },
115 - class: { 116 + className: {
116 type: String 117 type: String
117 }, 118 },
118 style: { 119 style: {
@@ -121,15 +122,25 @@ @@ -121,15 +122,25 @@
121 }, 122 },
122 data () { 123 data () {
123 return { 124 return {
124 - prefixCls: prefixCls 125 + prefixCls: prefixCls,
  126 + currentPage: this.current,
  127 + currentPageSize: this.pageSize
125 }; 128 };
126 }, 129 },
  130 + watch: {
  131 + current (val) {
  132 + this.currentPage = val;
  133 + },
  134 + pageSize (val) {
  135 + this.currentPageSize = val;
  136 + }
  137 + },
127 computed: { 138 computed: {
128 isSmall () { 139 isSmall () {
129 return !!this.size; 140 return !!this.size;
130 }, 141 },
131 allPages () { 142 allPages () {
132 - const allPage = Math.ceil(this.total / this.pageSize); 143 + const allPage = Math.ceil(this.total / this.currentPageSize);
133 return (allPage === 0) ? 1 : allPage; 144 return (allPage === 0) ? 1 : allPage;
134 }, 145 },
135 simpleWrapClasses () { 146 simpleWrapClasses () {
@@ -137,7 +148,7 @@ @@ -137,7 +148,7 @@
137 `${prefixCls}`, 148 `${prefixCls}`,
138 `${prefixCls}-simple`, 149 `${prefixCls}-simple`,
139 { 150 {
140 - [`${this.class}`]: !!this.class 151 + [`${this.className}`]: !!this.className
141 } 152 }
142 ]; 153 ];
143 }, 154 },
@@ -148,7 +159,7 @@ @@ -148,7 +159,7 @@
148 return [ 159 return [
149 `${prefixCls}`, 160 `${prefixCls}`,
150 { 161 {
151 - [`${this.class}`]: !!this.class, 162 + [`${this.className}`]: !!this.className,
152 'mini': !!this.size 163 'mini': !!this.size
153 } 164 }
154 ]; 165 ];
@@ -157,7 +168,7 @@ @@ -157,7 +168,7 @@
157 return [ 168 return [
158 `${prefixCls}-prev`, 169 `${prefixCls}-prev`,
159 { 170 {
160 - [`${prefixCls}-disabled`]: this.current === 1 171 + [`${prefixCls}-disabled`]: this.currentPage === 1
161 } 172 }
162 ]; 173 ];
163 }, 174 },
@@ -165,7 +176,7 @@ @@ -165,7 +176,7 @@
165 return [ 176 return [
166 `${prefixCls}-next`, 177 `${prefixCls}-next`,
167 { 178 {
168 - [`${prefixCls}-disabled`]: this.current === this.allPages 179 + [`${prefixCls}-disabled`]: this.currentPage === this.allPages
169 } 180 }
170 ]; 181 ];
171 }, 182 },
@@ -173,7 +184,7 @@ @@ -173,7 +184,7 @@
173 return [ 184 return [
174 `${prefixCls}-item`, 185 `${prefixCls}-item`,
175 { 186 {
176 - [`${prefixCls}-item-active`]: this.current === 1 187 + [`${prefixCls}-item-active`]: this.currentPage === 1
177 } 188 }
178 ]; 189 ];
179 }, 190 },
@@ -181,34 +192,34 @@ @@ -181,34 +192,34 @@
181 return [ 192 return [
182 `${prefixCls}-item`, 193 `${prefixCls}-item`,
183 { 194 {
184 - [`${prefixCls}-item-active`]: this.current === this.allPages 195 + [`${prefixCls}-item-active`]: this.currentPage === this.allPages
185 } 196 }
186 ]; 197 ];
187 } 198 }
188 }, 199 },
189 methods: { 200 methods: {
190 changePage (page) { 201 changePage (page) {
191 - if (this.current != page) {  
192 - this.current = page; 202 + if (this.currentPage != page) {
  203 + this.currentPage = page;
193 this.$emit('on-change', page); 204 this.$emit('on-change', page);
194 } 205 }
195 }, 206 },
196 prev () { 207 prev () {
197 - const current = this.current; 208 + const current = this.currentPage;
198 if (current <= 1) { 209 if (current <= 1) {
199 return false; 210 return false;
200 } 211 }
201 this.changePage(current - 1); 212 this.changePage(current - 1);
202 }, 213 },
203 next () { 214 next () {
204 - const current = this.current; 215 + const current = this.currentPage;
205 if (current >= this.allPages) { 216 if (current >= this.allPages) {
206 return false; 217 return false;
207 } 218 }
208 this.changePage(current + 1); 219 this.changePage(current + 1);
209 }, 220 },
210 fastPrev () { 221 fastPrev () {
211 - const page = this.current - 5; 222 + const page = this.currentPage - 5;
212 if (page > 0) { 223 if (page > 0) {
213 this.changePage(page); 224 this.changePage(page);
214 } else { 225 } else {
@@ -216,7 +227,7 @@ @@ -216,7 +227,7 @@
216 } 227 }
217 }, 228 },
218 fastNext () { 229 fastNext () {
219 - const page = this.current + 5; 230 + const page = this.currentPage + 5;
220 if (page > this.allPages) { 231 if (page > this.allPages) {
221 this.changePage(this.allPages); 232 this.changePage(this.allPages);
222 } else { 233 } else {
@@ -224,7 +235,7 @@ @@ -224,7 +235,7 @@
224 } 235 }
225 }, 236 },
226 onSize (pageSize) { 237 onSize (pageSize) {
227 - this.pageSize = pageSize; 238 + this.currentPageSize = pageSize;
228 this.changePage(1); 239 this.changePage(1);
229 this.$emit('on-page-size-change', pageSize); 240 this.$emit('on-page-size-change', pageSize);
230 }, 241 },
@@ -24,7 +24,7 @@ import Menu from &#39;./components/menu&#39;; @@ -24,7 +24,7 @@ import Menu from &#39;./components/menu&#39;;
24 // import Message from './components/message'; 24 // import Message from './components/message';
25 // import Modal from './components/modal'; 25 // import Modal from './components/modal';
26 // import Notice from './components/notice'; 26 // import Notice from './components/notice';
27 -// import Page from './components/page'; 27 +import Page from './components/page';
28 import Poptip from './components/poptip'; 28 import Poptip from './components/poptip';
29 import Progress from './components/progress'; 29 import Progress from './components/progress';
30 import Radio from './components/radio'; 30 import Radio from './components/radio';
@@ -85,7 +85,7 @@ const iview = { @@ -85,7 +85,7 @@ const iview = {
85 // Notice, 85 // Notice,
86 iOption: Option, 86 iOption: Option,
87 OptionGroup, 87 OptionGroup,
88 - // Page, 88 + Page,
89 Panel: Collapse.Panel, 89 Panel: Collapse.Panel,
90 Poptip, 90 Poptip,
91 Progress, 91 Progress,