Blame view

src/components/page/options.vue 2.99 KB
7fa943eb   梁灏   init
1
2
3
  <template>
      <div v-if="showSizer || showElevator" :class="optsClasses">
          <div v-if="showSizer" :class="sizerClasses">
f89dd9c2   梁灏   Paeg、Select add p...
4
              <i-select v-model="currentPageSize" :size="size" :placement="placement" @on-change="changeSize">
8ac8d1ed   梁灏   修复警告
5
                  <i-option v-for="item in pageSizeOpts" :key="item" :value="item" style="text-align:center;">{{ item }} {{ t('i.page.page') }}</i-option>
e355dd49   梁灏   add Select Component
6
              </i-select>
7fa943eb   梁灏   init
7
8
          </div>
          <div v-if="showElevator" :class="ElevatorClasses">
012cbf28   梁灏   update locale
9
              {{ t('i.page.goto') }}
7fa943eb   梁灏   init
10
              <input type="text" :value="_current" @keyup.enter="changePage">
012cbf28   梁灏   update locale
11
              {{ t('i.page.p') }}
7fa943eb   梁灏   init
12
13
14
15
          </div>
      </div>
  </template>
  <script>
e355dd49   梁灏   add Select Component
16
17
      import iSelect from '../../components/select/select.vue';
      import iOption from '../../components/select/option.vue';
012cbf28   梁灏   update locale
18
      import Locale from '../../mixins/locale';
e355dd49   梁灏   add Select Component
19
  
7fa943eb   梁灏   init
20
21
22
23
24
25
26
      const prefixCls = 'ivu-page';
  
      function isValueNumber (value) {
          return (/^[1-9][0-9]*$/).test(value + '');
      }
  
      export default {
87c51597   梁灏   support Page
27
          name: 'PageOption',
012cbf28   梁灏   update locale
28
          mixins: [ Locale ],
e355dd49   梁灏   add Select Component
29
          components: { iSelect, iOption },
7fa943eb   梁灏   init
30
31
32
33
34
35
36
          props: {
              pageSizeOpts: Array,
              showSizer: Boolean,
              showElevator: Boolean,
              current: Number,
              _current: Number,
              pageSize: Number,
6932b4d7   梁灏   update Page compo...
37
              allPages: Number,
f89dd9c2   梁灏   Paeg、Select add p...
38
39
              isSmall: Boolean,
              placement: String
7fa943eb   梁灏   init
40
          },
87c51597   梁灏   support Page
41
42
43
          data () {
              return {
                  currentPageSize: this.pageSize
191068ac   梁灏   fixed lint
44
              };
87c51597   梁灏   support Page
45
46
47
48
49
50
          },
          watch: {
              pageSize (val) {
                  this.currentPageSize = val;
              }
          },
7fa943eb   梁灏   init
51
          computed: {
6932b4d7   梁灏   update Page compo...
52
53
54
              size () {
                  return this.isSmall ? 'small' : 'default';
              },
7fa943eb   梁灏   init
55
56
57
              optsClasses () {
                  return [
                      `${prefixCls}-options`
b0893113   jingsam   :art: add eslint
58
                  ];
7fa943eb   梁灏   init
59
60
61
62
              },
              sizerClasses () {
                  return [
                      `${prefixCls}-options-sizer`
b0893113   jingsam   :art: add eslint
63
                  ];
7fa943eb   梁灏   init
64
65
66
67
              },
              ElevatorClasses () {
                  return [
                      `${prefixCls}-options-elevator`
b0893113   jingsam   :art: add eslint
68
                  ];
7fa943eb   梁灏   init
69
70
71
72
              }
          },
          methods: {
              changeSize () {
87c51597   梁灏   support Page
73
                  this.$emit('on-size', this.currentPageSize);
7fa943eb   梁灏   init
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
              },
              changePage (event) {
                  let val = event.target.value.trim();
                  let page = 0;
  
                  if (isValueNumber(val)) {
                      val = Number(val);
                      if (val != this.current) {
                          const allPages = this.allPages;
  
                          if (val > allPages) {
                              page = allPages;
                          } else {
                              page = val;
                          }
                      }
                  } else {
                      page = 1;
                  }
  
                  if (page) {
                      this.$emit('on-page', page);
                      event.target.value = page;
                  }
              }
          }
b0893113   jingsam   :art: add eslint
100
      };
87c51597   梁灏   support Page
101
  </script>