Commit 4d5454208340462d4a483ccca24205e2e2d66fdf

Authored by 梁灏
1 parent 77f1cc2e

Radio add size prop

examples/routers/radio.vue
1 1 <template>
2 2 <div>
3   - <Radio true-value="true" false-value="false" v-model="testValue">test</Radio> {{ testValue }}
4   - <Radio-group v-model="date.sex">
5   - <div v-if="show">
6   - <Radio label="male" true-value="true" false-value="false"></Radio>
7   - <Radio label="female" true-value="true" false-value="false"></Radio>
8   - </div>
  3 + <Radio size="large" v-model="single">Radio</Radio>
  4 + <Radio size="default" v-model="single">Radio</Radio>
  5 + <Radio size="small" v-model="single">Radio</Radio>
  6 + <br><br>
  7 + <Radio-group v-model="phone">
  8 + <Radio label="apple">
  9 + <Icon type="social-apple"></Icon>
  10 + <span>Apple</span>
  11 + </Radio>
  12 + <Radio label="android">
  13 + <Icon type="social-android"></Icon>
  14 + <span>Android</span>
  15 + </Radio>
  16 + <Radio label="windows">
  17 + <Icon type="social-windows"></Icon>
  18 + <span>Windows</span>
  19 + </Radio>
  20 + </Radio-group>
  21 + <Radio-group v-model="button2" type="button" size="large">
  22 + <Radio label="北京"></Radio>
  23 + <Radio label="上海" disabled></Radio>
  24 + <Radio label="深圳"></Radio>
  25 + <Radio label="杭州"></Radio>
  26 + </Radio-group>
  27 + <Radio-group v-model="button2" type="button" size="default">
  28 + <Radio label="北京"></Radio>
  29 + <Radio label="上海" disabled></Radio>
  30 + <Radio label="深圳"></Radio>
  31 + <Radio label="杭州"></Radio>
  32 + </Radio-group>
  33 + <Radio-group v-model="button2" type="button" size="small">
  34 + <Radio label="北京"></Radio>
  35 + <Radio label="上海" disabled></Radio>
  36 + <Radio label="深圳"></Radio>
  37 + <Radio label="杭州"></Radio>
9 38 </Radio-group>
10   - {{ date }}
11   - <Button @click="handleChange">change</Button>
12 39 </div>
13 40 </template>
14 41 <script>
15 42 export default {
16 43 data () {
17 44 return {
18   - date: {
19   - sex: 'male'
20   - },
21   - show: false,
22   - testValue: null
  45 + single: true,
  46 + phone: 'apple',
  47 + button2: '北京',
23 48 }
24 49 },
25 50 methods: {
26   - handleChange () {
27   -// this.date.sex = 'male form';
28   - this.show = true;
29   - }
  51 +
30 52 }
31 53 }
32 54 </script>
... ...
src/components/radio/radio-group.vue
... ... @@ -19,7 +19,7 @@
19 19 },
20 20 size: {
21 21 validator (value) {
22   - return oneOf(value, ['small', 'large']);
  22 + return oneOf(value, ['small', 'large', 'default']);
23 23 }
24 24 },
25 25 type: {
... ... @@ -44,6 +44,7 @@
44 44 `${prefixCls}`,
45 45 {
46 46 [`${prefixCls}-${this.size}`]: !!this.size,
  47 + [`ivu-radio-${this.size}`]: !!this.size,
47 48 [`${prefixCls}-${this.type}`]: !!this.type,
48 49 [`${prefixCls}-vertical`]: this.vertical
49 50 }
... ...
src/components/radio/radio.vue
... ... @@ -12,7 +12,7 @@
12 12 </label>
13 13 </template>
14 14 <script>
15   - import { findComponentUpward } from '../../utils/assist';
  15 + import { findComponentUpward, oneOf } from '../../utils/assist';
16 16 import Emitter from '../../mixins/emitter';
17 17  
18 18 const prefixCls = 'ivu-radio';
... ... @@ -39,6 +39,11 @@
39 39 disabled: {
40 40 type: Boolean,
41 41 default: false
  42 + },
  43 + size: {
  44 + validator (value) {
  45 + return oneOf(value, ['small', 'large', 'default']);
  46 + }
42 47 }
43 48 },
44 49 data () {
... ... @@ -55,7 +60,8 @@
55 60 {
56 61 [`${prefixCls}-group-item`]: this.group,
57 62 [`${prefixCls}-wrapper-checked`]: this.currentValue,
58   - [`${prefixCls}-wrapper-disabled`]: this.disabled
  63 + [`${prefixCls}-wrapper-disabled`]: this.disabled,
  64 + [`${prefixCls}-${this.size}`]: !!this.size
59 65 }
60 66 ];
61 67 },
... ...
src/styles/components/radio.less
... ... @@ -73,6 +73,30 @@
73 73 transform: scale(0);
74 74 }
75 75 }
  76 + &-large{
  77 + font-size: @font-size-base;
  78 + & .@{radio-inner-prefix-cls}{
  79 + width: 16px;
  80 + height: 16px;
  81 + &:after{
  82 + width: 10px;
  83 + height: 10px;
  84 + }
  85 + }
  86 + &.@{radio-prefix-cls}-wrapper, & .@{radio-prefix-cls}-wrapper{
  87 + font-size: @font-size-base;
  88 + }
  89 + }
  90 + &-small{
  91 + & .@{radio-inner-prefix-cls}{
  92 + width: 12px;
  93 + height: 12px;
  94 + &:after{
  95 + width: 6px;
  96 + height: 6px;
  97 + }
  98 + }
  99 + }
76 100  
77 101 &-input {
78 102 position: absolute;
... ...
src/styles/mixins/checkbox.less
... ... @@ -49,7 +49,6 @@
49 49 }
50 50 }
51 51 &-large{
52   - font-size: 16px;
53 52 & .@{checkbox-inner-prefix-cls} {
54 53 width: 16px;
55 54 height: 16px;
... ...