Commit 77f1cc2e34b4371c24d4b9cbfaa6e426b83cf407

Authored by 梁灏
1 parent 3485243a

Checkbox add size prop

examples/routers/checkbox.vue
1 <template> 1 <template>
2 <div> 2 <div>
  3 + <Checkbox
  4 + :indeterminate="true"
  5 + :value="false"
  6 + size="large">全选</Checkbox>
  7 + <Checkbox
  8 + :indeterminate="true"
  9 + :value="false"
  10 + size="default">全选</Checkbox>
  11 + <Checkbox
  12 + :indeterminate="true"
  13 + :value="false"
  14 + size="small">全选</Checkbox>
3 <div> 15 <div>
4 - <Checkbox true-value="true" false-value="false" v-model="testValue1">test string</Checkbox> 16 + <Checkbox size="large" true-value="true" false-value="false" v-model="testValue1">Apple</Checkbox>
  17 + <Checkbox true-value="true" false-value="false" v-model="testValue1">Apple</Checkbox>
  18 + <Checkbox size="small" true-value="true" false-value="false" v-model="testValue1">Apple</Checkbox>
5 {{ testValue1 }} 19 {{ testValue1 }}
6 </div> 20 </div>
7 <div> 21 <div>
8 <Checkbox :true-value="0" :false-value="1" v-model="testValue2">test number</Checkbox> 22 <Checkbox :true-value="0" :false-value="1" v-model="testValue2">test number</Checkbox>
9 {{ testValue2 }} 23 {{ testValue2 }}
10 </div> 24 </div>
11 - <Checkbox-group v-model="fruit"> 25 + <Checkbox-group v-model="fruit" size="large">
12 <Checkbox v-for="item in tags" :label="item.label" :key="item.label" true-value="true"></Checkbox> 26 <Checkbox v-for="item in tags" :label="item.label" :key="item.label" true-value="true"></Checkbox>
13 </Checkbox-group> 27 </Checkbox-group>
14 <div>{{ fruit }}</div> 28 <div>{{ fruit }}</div>
src/components/button/button.vue
@@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
27 }, 27 },
28 size: { 28 size: {
29 validator (value) { 29 validator (value) {
30 - return oneOf(value, ['small', 'large']); 30 + return oneOf(value, ['small', 'large', 'default']);
31 } 31 }
32 }, 32 },
33 loading: Boolean, 33 loading: Boolean,
src/components/checkbox/checkbox-group.vue
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 </div> 4 </div>
5 </template> 5 </template>
6 <script> 6 <script>
7 - import { findComponentsDownward } from '../../utils/assist'; 7 + import { findComponentsDownward, oneOf } from '../../utils/assist';
8 import Emitter from '../../mixins/emitter'; 8 import Emitter from '../../mixins/emitter';
9 const prefixCls = 'ivu-checkbox-group'; 9 const prefixCls = 'ivu-checkbox-group';
10 10
@@ -17,6 +17,11 @@ @@ -17,6 +17,11 @@
17 default () { 17 default () {
18 return []; 18 return [];
19 } 19 }
  20 + },
  21 + size: {
  22 + validator (value) {
  23 + return oneOf(value, ['small', 'large', 'default']);
  24 + }
20 } 25 }
21 }, 26 },
22 data () { 27 data () {
@@ -27,7 +32,12 @@ @@ -27,7 +32,12 @@
27 }, 32 },
28 computed: { 33 computed: {
29 classes () { 34 classes () {
30 - return `${prefixCls}`; 35 + return [
  36 + `${prefixCls}`,
  37 + {
  38 + [`ivu-checkbox-${this.size}`]: !!this.size
  39 + }
  40 + ];
31 } 41 }
32 }, 42 },
33 mounted () { 43 mounted () {
src/components/checkbox/checkbox.vue
@@ -22,7 +22,7 @@ @@ -22,7 +22,7 @@
22 </label> 22 </label>
23 </template> 23 </template>
24 <script> 24 <script>
25 - import { findComponentUpward } from '../../utils/assist'; 25 + import { findComponentUpward, oneOf } from '../../utils/assist';
26 import Emitter from '../../mixins/emitter'; 26 import Emitter from '../../mixins/emitter';
27 27
28 const prefixCls = 'ivu-checkbox'; 28 const prefixCls = 'ivu-checkbox';
@@ -53,6 +53,11 @@ @@ -53,6 +53,11 @@
53 indeterminate: { 53 indeterminate: {
54 type: Boolean, 54 type: Boolean,
55 default: false 55 default: false
  56 + },
  57 + size: {
  58 + validator (value) {
  59 + return oneOf(value, ['small', 'large', 'default']);
  60 + }
56 } 61 }
57 }, 62 },
58 data () { 63 data () {
@@ -71,7 +76,8 @@ @@ -71,7 +76,8 @@
71 { 76 {
72 [`${prefixCls}-group-item`]: this.group, 77 [`${prefixCls}-group-item`]: this.group,
73 [`${prefixCls}-wrapper-checked`]: this.currentValue, 78 [`${prefixCls}-wrapper-checked`]: this.currentValue,
74 - [`${prefixCls}-wrapper-disabled`]: this.disabled 79 + [`${prefixCls}-wrapper-disabled`]: this.disabled,
  80 + [`${prefixCls}-${this.size}`]: !!this.size
75 } 81 }
76 ]; 82 ];
77 }, 83 },
src/styles/mixins/checkbox.less
@@ -48,6 +48,28 @@ @@ -48,6 +48,28 @@
48 transition: all @transition-time @ease-in-out; 48 transition: all @transition-time @ease-in-out;
49 } 49 }
50 } 50 }
  51 + &-large{
  52 + font-size: 16px;
  53 + & .@{checkbox-inner-prefix-cls} {
  54 + width: 16px;
  55 + height: 16px;
  56 + &:after{
  57 + width: 5px;
  58 + height: 9px;
  59 + }
  60 + }
  61 + }
  62 + &-small{
  63 + font-size: 12px;
  64 + & .@{checkbox-inner-prefix-cls} {
  65 + width: 12px;
  66 + height: 12px;
  67 + &:after{
  68 + top: 0;
  69 + left: 3px;
  70 + }
  71 + }
  72 + }
51 73
52 &-input { 74 &-input {
53 width: 100%; 75 width: 100%;
@@ -96,6 +118,26 @@ @@ -96,6 +118,26 @@
96 } 118 }
97 } 119 }
98 } 120 }
  121 + .@{checkbox-prefix-cls}-large{
  122 + .@{checkbox-prefix-cls}-checked{
  123 + .@{checkbox-inner-prefix-cls} {
  124 + &:after{
  125 + width: 5px;
  126 + height: 9px;
  127 + }
  128 + }
  129 + }
  130 + }
  131 + .@{checkbox-prefix-cls}-small{
  132 + .@{checkbox-prefix-cls}-checked{
  133 + .@{checkbox-inner-prefix-cls} {
  134 + &:after{
  135 + top: 0;
  136 + left: 3px;
  137 + }
  138 + }
  139 + }
  140 + }
99 141
100 // 禁用 142 // 禁用
101 .@{checkbox-prefix-cls}-disabled { 143 .@{checkbox-prefix-cls}-disabled {
@@ -164,6 +206,22 @@ @@ -164,6 +206,22 @@
164 border-color: @primary-color; 206 border-color: @primary-color;
165 } 207 }
166 } 208 }
  209 + .@{checkbox-prefix-cls}-large {
  210 + .@{checkbox-prefix-cls}-indeterminate{
  211 + .@{checkbox-inner-prefix-cls}:after{
  212 + width: 10px;
  213 + top: 6px;
  214 + }
  215 + }
  216 + }
  217 + .@{checkbox-prefix-cls}-small {
  218 + .@{checkbox-prefix-cls}-indeterminate{
  219 + .@{checkbox-inner-prefix-cls}:after{
  220 + width: 6px;
  221 + top: 4px;
  222 + }
  223 + }
  224 + }
167 225
168 .@{checkbox-prefix-cls}-wrapper { 226 .@{checkbox-prefix-cls}-wrapper {
169 cursor: pointer; 227 cursor: pointer;
@@ -173,6 +231,10 @@ @@ -173,6 +231,10 @@
173 &-disabled{ 231 &-disabled{
174 cursor: @cursor-disabled; 232 cursor: @cursor-disabled;
175 } 233 }
  234 +
  235 + &.@{checkbox-prefix-cls}-large{
  236 + font-size: @font-size-base;
  237 + }
176 } 238 }
177 239
178 .@{checkbox-prefix-cls}-wrapper + span, 240 .@{checkbox-prefix-cls}-wrapper + span,