Commit 4d5454208340462d4a483ccca24205e2e2d66fdf

Authored by 梁灏
1 parent 77f1cc2e

Radio add size prop

examples/routers/radio.vue
1 <template> 1 <template>
2 <div> 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 </Radio-group> 38 </Radio-group>
10 - {{ date }}  
11 - <Button @click="handleChange">change</Button>  
12 </div> 39 </div>
13 </template> 40 </template>
14 <script> 41 <script>
15 export default { 42 export default {
16 data () { 43 data () {
17 return { 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 methods: { 50 methods: {
26 - handleChange () {  
27 -// this.date.sex = 'male form';  
28 - this.show = true;  
29 - } 51 +
30 } 52 }
31 } 53 }
32 </script> 54 </script>
src/components/radio/radio-group.vue
@@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
19 }, 19 },
20 size: { 20 size: {
21 validator (value) { 21 validator (value) {
22 - return oneOf(value, ['small', 'large']); 22 + return oneOf(value, ['small', 'large', 'default']);
23 } 23 }
24 }, 24 },
25 type: { 25 type: {
@@ -44,6 +44,7 @@ @@ -44,6 +44,7 @@
44 `${prefixCls}`, 44 `${prefixCls}`,
45 { 45 {
46 [`${prefixCls}-${this.size}`]: !!this.size, 46 [`${prefixCls}-${this.size}`]: !!this.size,
  47 + [`ivu-radio-${this.size}`]: !!this.size,
47 [`${prefixCls}-${this.type}`]: !!this.type, 48 [`${prefixCls}-${this.type}`]: !!this.type,
48 [`${prefixCls}-vertical`]: this.vertical 49 [`${prefixCls}-vertical`]: this.vertical
49 } 50 }
src/components/radio/radio.vue
@@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@
12 </label> 12 </label>
13 </template> 13 </template>
14 <script> 14 <script>
15 - import { findComponentUpward } from '../../utils/assist'; 15 + import { findComponentUpward, oneOf } from '../../utils/assist';
16 import Emitter from '../../mixins/emitter'; 16 import Emitter from '../../mixins/emitter';
17 17
18 const prefixCls = 'ivu-radio'; 18 const prefixCls = 'ivu-radio';
@@ -39,6 +39,11 @@ @@ -39,6 +39,11 @@
39 disabled: { 39 disabled: {
40 type: Boolean, 40 type: Boolean,
41 default: false 41 default: false
  42 + },
  43 + size: {
  44 + validator (value) {
  45 + return oneOf(value, ['small', 'large', 'default']);
  46 + }
42 } 47 }
43 }, 48 },
44 data () { 49 data () {
@@ -55,7 +60,8 @@ @@ -55,7 +60,8 @@
55 { 60 {
56 [`${prefixCls}-group-item`]: this.group, 61 [`${prefixCls}-group-item`]: this.group,
57 [`${prefixCls}-wrapper-checked`]: this.currentValue, 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,6 +73,30 @@
73 transform: scale(0); 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 &-input { 101 &-input {
78 position: absolute; 102 position: absolute;
src/styles/mixins/checkbox.less
@@ -49,7 +49,6 @@ @@ -49,7 +49,6 @@
49 } 49 }
50 } 50 }
51 &-large{ 51 &-large{
52 - font-size: 16px;  
53 & .@{checkbox-inner-prefix-cls} { 52 & .@{checkbox-inner-prefix-cls} {
54 width: 16px; 53 width: 16px;
55 height: 16px; 54 height: 16px;