¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <view |
| | | class="u-checkbox-group" |
| | | :class="bemClass" |
| | | > |
| | | <slot></slot> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import props from './props.js'; |
| | | /** |
| | | * checkboxGroup å¤éæ¡ç» |
| | | * @description å¤éæ¡ç»ä»¶ä¸è¬ç¨äºéè¦å¤ä¸ªéæ©çåºæ¯ï¼è¯¥ç»ä»¶åè½å®æ´ï¼ä½¿ç¨æ¹ä¾¿ |
| | | * @tutorial https://www.uviewui.com/components/checkbox.html |
| | | * @property {String} name æ è¯ç¬¦ |
| | | * @property {Array} value ç»å®çå¼ |
| | | * @property {String} shape å½¢ç¶ï¼circle-åå½¢ï¼square-æ¹å½¢ ï¼é»è®¤ 'square' ï¼ |
| | | * @property {Boolean} disabled æ¯å¦ç¦ç¨å
¨é¨checkbox ï¼é»è®¤ false ï¼ |
| | | * @property {String} activeColor éä¸ç¶æä¸çé¢è²ï¼å¦è®¾ç½®æ¤å¼ï¼å°ä¼è¦çparentçactiveColorå¼ ï¼é»è®¤ '#2979ff' ï¼ |
| | | * @property {String} inactiveColor æªéä¸çé¢è² ï¼é»è®¤ '#c8c9cc' ï¼ |
| | | * @property {String | Number} size æ´ä¸ªç»ä»¶ç尺寸 åä½px ï¼é»è®¤ 18 ï¼ |
| | | * @property {String} placement å¸å±æ¹å¼ï¼row-横åï¼column-纵å ï¼é»è®¤ 'row' ï¼ |
| | | * @property {String | Number} labelSize labelçåä½å¤§å°ï¼pxåä½ ï¼é»è®¤ 14 ï¼ |
| | | * @property {String} labelColor labelçåä½é¢è² ï¼é»è®¤ '#303133' ï¼ |
| | | * @property {Boolean} labelDisabled æ¯å¦ç¦æ¢ç¹å»ææ¬æä½ (é»è®¤ false ) |
| | | * @property {String} iconColor 徿 é¢è² ï¼é»è®¤ '#ffffff' ï¼ |
| | | * @property {String | Number} iconSize 徿 ç大å°ï¼åä½px ï¼é»è®¤ 12 ï¼ |
| | | * @property {String} iconPlacement å¾é徿 ç坹齿¹å¼ï¼left-左边ï¼right-å³è¾¹ ï¼é»è®¤ 'left' ï¼ |
| | | * @property {Boolean} borderBottom placement为rowæ¶ï¼æ¯å¦æ¾ç¤ºä¸è¾¹æ¡ ï¼é»è®¤ false ï¼ |
| | | * @event {Function} change ä»»ä¸ä¸ªcheckboxç¶æåçååæ¶è§¦åï¼åè°ä¸ºä¸ä¸ªå¯¹è±¡ |
| | | * @event {Function} input ä¿®æ¹éè¿v-modelç»å®ç弿¶è§¦åï¼åè°ä¸ºä¸ä¸ªå¯¹è±¡ |
| | | * @example <u-checkbox-group></u-checkbox-group> |
| | | */ |
| | | export default { |
| | | name: 'u-checkbox-group', |
| | | mixins: [uni.$u.mpMixin, uni.$u.mixin,props], |
| | | computed: { |
| | | // è¿écomputedçåéï¼é½æ¯åç»ä»¶u-checkboxéè¦ç¨å°çï¼ç±äºå¤´æ¡å°ç¨åºçå
¼å®¹æ§å·®å¼ï¼åç»ä»¶æ æ³å®æ¶çå¬ç¶ç»ä»¶åæ°çåå |
| | | // æä»¥éè¦æå¨éç¥åç»ä»¶ï¼è¿éè¿åä¸ä¸ªparentDataåéï¼ä¾watchçå¬ï¼å¨å
¶ä¸å»éç¥æ¯ä¸ä¸ªåç»ä»¶éæ°ä»ç¶ç»ä»¶(u-checkbox-group) |
| | | // æåç¶ç»ä»¶æ°çåååçåæ° |
| | | parentData() { |
| | | return [this.value, this.disabled, this.inactiveColor, this.activeColor, this.size, this.labelDisabled, this.shape, |
| | | this.iconSize, this.borderBottom, this.placement |
| | | ] |
| | | }, |
| | | bemClass() { |
| | | // this.bem为ä¸ä¸ªcomputedåéï¼å¨mixinä¸ |
| | | return this.bem('checkbox-group', ['placement']) |
| | | }, |
| | | }, |
| | | watch: { |
| | | // å½ç¶ç»ä»¶éè¦åç»ä»¶éè¦å
±äº«çåæ°åçäºååï¼æå¨éç¥åç»ä»¶ |
| | | parentData() { |
| | | if (this.children.length) { |
| | | this.children.map(child => { |
| | | // 夿åç»ä»¶(u-checkbox)妿æinitæ¹æ³çè¯ï¼å°±å°±æ§è¡(æ§è¡çç»ææ¯åç»ä»¶éæ°ä»ç¶ç»ä»¶æåäºææ°çå¼) |
| | | typeof(child.init) === 'function' && child.init() |
| | | }) |
| | | } |
| | | }, |
| | | }, |
| | | data() { |
| | | return { |
| | | |
| | | } |
| | | }, |
| | | created() { |
| | | this.children = [] |
| | | }, |
| | | methods: { |
| | | // å°å
¶ä»çcheckbox设置为æªéä¸çç¶æ |
| | | unCheckedOther(childInstance) { |
| | | const values = [] |
| | | this.children.map(child => { |
| | | // å°è¢«éä¸çcheckboxï¼æ¾å°æ°ç»ä¸è¿å |
| | | if (child.isChecked) { |
| | | values.push(child.name) |
| | | } |
| | | }) |
| | | // ååºäºä»¶ |
| | | this.$emit('change', values) |
| | | // ä¿®æ¹éè¿v-modelç»å®çå¼ |
| | | this.$emit('input', values) |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import "../../libs/css/components.scss"; |
| | | |
| | | .u-checkbox-group { |
| | | |
| | | &--row { |
| | | @include flex; |
| | | } |
| | | |
| | | &--column { |
| | | @include flex(column); |
| | | } |
| | | } |
| | | </style> |