Commit f89dd9c28740685deb98ec9fe3f6b144decc4d76

Authored by 梁灏
1 parent cb6418ac

Paeg、Select add placement

examples/routers/page.vue
1 1 <template>
2   - <div>
3   - <Page :total="100" :current="current"></Page>
4   - {{ current }}
5   - <Button @click="current = 1">set current</Button>
  2 + <div style="margin: 100px;">
  3 + <Page :total="100" show-sizer placement="top"></Page>
6 4 </div>
7 5 </template>
8 6 <script>
9 7 export default {
10   - data () {
11   - return {
12   - current: 2
13   - }
14   - }
  8 +
15 9 }
16 10 </script>
... ...
examples/routers/select.vue
1 1 <template>
2   - <Select v-model="fields.pid" filterable>
3   - <Option :value="0" label="一级菜单"></Option>
4   - <Option :value="1" label="二级菜单"></Option>
5   - </Select>
  2 + <div style="width: 200px;margin: 100px;">
  3 + <Select v-model="fields.pid" filterable placement="top">
  4 + <Option :value="0" label="一级菜单"></Option>
  5 + <Option :value="1" label="二级菜单"></Option>
  6 + </Select>
  7 + </div>
6 8 </template>
7 9  
8 10 <script>
... ...
src/components/page/options.vue
1 1 <template>
2 2 <div v-if="showSizer || showElevator" :class="optsClasses">
3 3 <div v-if="showSizer" :class="sizerClasses">
4   - <i-select v-model="currentPageSize" :size="size" @on-change="changeSize">
  4 + <i-select v-model="currentPageSize" :size="size" :placement="placement" @on-change="changeSize">
5 5 <i-option v-for="item in pageSizeOpts" :key="item" :value="item" style="text-align:center;">{{ item }} {{ t('i.page.page') }}</i-option>
6 6 </i-select>
7 7 </div>
... ... @@ -35,7 +35,8 @@
35 35 _current: Number,
36 36 pageSize: Number,
37 37 allPages: Number,
38   - isSmall: Boolean
  38 + isSmall: Boolean,
  39 + placement: String
39 40 },
40 41 data () {
41 42 return {
... ...
src/components/page/page.vue
... ... @@ -52,6 +52,7 @@
52 52 :show-sizer="showSizer"
53 53 :page-size="currentPageSize"
54 54 :page-size-opts="pageSizeOpts"
  55 + :placement="placement"
55 56 :show-elevator="showElevator"
56 57 :_current.once="currentPage"
57 58 :current="currentPage"
... ... @@ -92,6 +93,12 @@
92 93 return [10, 20, 30, 40];
93 94 }
94 95 },
  96 + placement: {
  97 + validator (value) {
  98 + return oneOf(value, ['top', 'bottom']);
  99 + },
  100 + default: 'bottom'
  101 + },
95 102 size: {
96 103 validator (value) {
97 104 return oneOf(value, ['small']);
... ...
src/components/select/select.vue
... ... @@ -24,8 +24,8 @@
24 24 <Icon type="ios-close" :class="[prefixCls + '-arrow']" v-show="showCloseIcon" @click.native.stop="clearSingleSelect"></Icon>
25 25 <Icon type="arrow-down-b" :class="[prefixCls + '-arrow']"></Icon>
26 26 </div>
27   - <transition name="slide-up">
28   - <Drop v-show="visible" ref="dropdown">
  27 + <transition :name="transitionName">
  28 + <Drop v-show="visible" :placement="placement" ref="dropdown">
29 29 <ul v-show="notFound" :class="[prefixCls + '-not-found']"><li>{{ localeNotFoundText }}</li></ul>
30 30 <ul v-show="!notFound" :class="[prefixCls + '-dropdown-list']" ref="options"><slot></slot></ul>
31 31 </Drop>
... ... @@ -85,6 +85,12 @@
85 85 },
86 86 notFoundText: {
87 87 type: String
  88 + },
  89 + placement: {
  90 + validator (value) {
  91 + return oneOf(value, ['top', 'bottom']);
  92 + },
  93 + default: 'bottom'
88 94 }
89 95 },
90 96 data () {
... ... @@ -161,6 +167,9 @@
161 167 } else {
162 168 return this.notFoundText;
163 169 }
  170 + },
  171 + transitionName () {
  172 + return this.placement === 'bottom' ? 'slide-up' : 'slide-down';
164 173 }
165 174 },
166 175 methods: {
... ...