Commit 4d5454208340462d4a483ccca24205e2e2d66fdf
1 parent
77f1cc2e
Radio add size prop
Showing
5 changed files
with
73 additions
and
21 deletions
Show diff stats
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; | ... | ... |