Blame view

src/components/button/button.vue 2.46 KB
7fa943eb   梁灏   init
1
2
  <template>
      <button :type="htmlType" :class="classes" :disabled="disabled">
e1596b7e   梁灏   add Button UI
3
4
          <i :class="loadingIconClasses" v-if="loading"></i>
          <i :class="typeIconClasses" v-if="icon && !loading"></i>
698e3b61   梁灏   iButton add some ...
5
          <span v-if="showSlot" v-el:slot><slot></slot></span>
7fa943eb   梁灏   init
6
7
8
9
10
11
12
      </button>
  </template>
  <script>
      import Icon from '../icon';
      import { oneOf } from '../../utils/assist';
  
      const prefixCls = 'ivu-btn';
e1596b7e   梁灏   add Button UI
13
      const iconPrefixCls = 'ivu-icon';
7fa943eb   梁灏   init
14
15
16
17
18
19
  
      export default {
          components: { Icon },
          props: {
              type: {
                  validator (value) {
698e3b61   梁灏   iButton add some ...
20
                      return oneOf(value, ['primary', 'ghost', 'dashed', 'text']);
7fa943eb   梁灏   init
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
                  }
              },
              shape: {
                  validator (value) {
                      return oneOf(value, ['circle', 'circle-outline']);
                  }
              },
              size: {
                  validator (value) {
                      return oneOf(value, ['small', 'large']);
                  }
              },
              loading: Boolean,
              disabled: Boolean,
              htmlType: {
                  default: 'button',
                  validator (value) {
                      return oneOf(value, ['button', 'submit', 'reset']);
                  }
              },
              icon: String
          },
698e3b61   梁灏   iButton add some ...
43
44
45
46
47
          data () {
              return {
                  showSlot: true
              }
          },
7fa943eb   梁灏   init
48
49
50
51
52
53
54
55
          computed: {
              classes () {
                  return [
                      `${prefixCls}`,
                      {
                          [`${prefixCls}-${this.type}`]: !!this.type,
                          [`${prefixCls}-${this.shape}`]: !!this.shape,
                          [`${prefixCls}-${this.size}`]: !!this.size,
698e3b61   梁灏   iButton add some ...
56
57
                          [`${prefixCls}-loading`]: this.loading != null && this.loading,
                          [`${prefixCls}-icon-only`]: !this.showSlot && (!!this.icon || this.loading)
7fa943eb   梁灏   init
58
59
                      }
                  ]
e1596b7e   梁灏   add Button UI
60
61
62
63
64
65
66
67
68
69
70
              },
              loadingIconClasses () {
                  return `${iconPrefixCls} ivu-load-loop ${iconPrefixCls}-load-c`;
              },
              typeIconClasses () {
                  return [
                      `${iconPrefixCls}`,
                      {
                          [`${iconPrefixCls}-${this.icon}`]: !!this.icon
                      }
                  ]
7fa943eb   梁灏   init
71
              }
698e3b61   梁灏   iButton add some ...
72
73
          },
          ready () {
77f7bb95   梁灏   add Transfer comp...
74
              this.showSlot = this.$els.slot.innerHTML.replace(/\n/g, '').replace(/<!--[\w\W\r\n]*?-->/gmi, '') !== '';
7fa943eb   梁灏   init
75
76
          }
      }
d6342fe1   jingsam   fixed ie bug
77
  </script>