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; | ... | ... |