diff --git a/src/config.json b/src/config.json index 471698fbc8..d1c44933ea 100644 --- a/src/config.json +++ b/src/config.json @@ -459,7 +459,7 @@ "author": "ailululu" }, { - "version": "2.0.0", + "version": "3.0.0", "name": "Checkbox", "type": "component", "cName": "复选按钮", @@ -470,7 +470,7 @@ "author": "oasis" }, { - "version": "2.0.0", + "version": "3.0.0", "name": "CheckboxGroup", "type": "component", "cName": "多选按钮组", diff --git a/src/packages/checkbox/checkbox.taro.tsx b/src/packages/checkbox/checkbox.taro.tsx index acd6b2251a..41cdce02e0 100644 --- a/src/packages/checkbox/checkbox.taro.tsx +++ b/src/packages/checkbox/checkbox.taro.tsx @@ -1,14 +1,7 @@ -import React, { - FunctionComponent, - ReactNode, - useContext, - useEffect, - useState, -} from 'react' -import { Checked, CheckDisabled, CheckNormal } from '@nutui/icons-react-taro' +import React, { ReactNode, useContext, useEffect, useState, FC } from 'react' +import { CheckDisabled, Checked, CheckNormal } from '@nutui/icons-react-taro' import classNames from 'classnames' import { View } from '@tarojs/components' -import CheckboxGroup from '@/packages/checkboxgroup/index.taro' import { BasicComponent, ComponentDefaults } from '@/utils/typings' import Context from '../checkboxgroup/context' import { usePropsValue } from '@/utils/use-props-value' @@ -43,10 +36,10 @@ const defaultProps = { } as CheckboxProps const classPrefix = 'nut-checkbox' -export const Checkbox: FunctionComponent< +export const Checkbox: FC< Partial & Omit, 'onChange'> -> & { Group: typeof CheckboxGroup } = (props) => { +> = (props) => { const { children } = { ...defaultProps, ...props, @@ -152,13 +145,13 @@ export const Checkbox: FunctionComponent< } const renderLabel = () => { return ( - {children || label} - + ) } @@ -231,4 +224,3 @@ export const Checkbox: FunctionComponent< } Checkbox.displayName = 'NutCheckBox' -Checkbox.Group = CheckboxGroup diff --git a/src/packages/checkbox/checkbox.tsx b/src/packages/checkbox/checkbox.tsx index df7833a9a6..71c8dd4300 100644 --- a/src/packages/checkbox/checkbox.tsx +++ b/src/packages/checkbox/checkbox.tsx @@ -5,9 +5,8 @@ import React, { useEffect, useState, } from 'react' -import { Checked, CheckDisabled, CheckNormal } from '@nutui/icons-react' +import { CheckDisabled, Checked, CheckNormal } from '@nutui/icons-react' import classNames from 'classnames' -import CheckboxGroup from '@/packages/checkboxgroup' import { BasicComponent, ComponentDefaults } from '@/utils/typings' import Context from '../checkboxgroup/context' import { usePropsValue } from '@/utils/use-props-value' @@ -45,7 +44,7 @@ const classPrefix = 'nut-checkbox' export const Checkbox: FunctionComponent< Partial & Omit, 'onChange'> -> & { Group: typeof CheckboxGroup } = (props) => { +> = (props) => { const { children } = { ...defaultProps, ...props, @@ -230,4 +229,3 @@ export const Checkbox: FunctionComponent< } Checkbox.displayName = 'NutCheckBox' -Checkbox.Group = CheckboxGroup diff --git a/src/packages/checkbox/demos/h5/demo2.tsx b/src/packages/checkbox/demos/h5/demo2.tsx index ca7597509b..90e521053a 100644 --- a/src/packages/checkbox/demos/h5/demo2.tsx +++ b/src/packages/checkbox/demos/h5/demo2.tsx @@ -37,9 +37,7 @@ const Demo2 = () => { value={controlledGroup} onChange={(value) => setControlledGroup(value)} > - - - + diff --git a/src/packages/checkbox/demos/h5/demo3.tsx b/src/packages/checkbox/demos/h5/demo3.tsx index 4597f5dbdc..9424e70d38 100644 --- a/src/packages/checkbox/demos/h5/demo3.tsx +++ b/src/packages/checkbox/demos/h5/demo3.tsx @@ -30,9 +30,7 @@ const Demo3 = () => { - - - + diff --git a/src/packages/checkbox/demos/taro/demo1.tsx b/src/packages/checkbox/demos/taro/demo1.tsx index 7160ff6c1c..996512e8b4 100644 --- a/src/packages/checkbox/demos/taro/demo1.tsx +++ b/src/packages/checkbox/demos/taro/demo1.tsx @@ -5,6 +5,7 @@ import { Cell, Checkbox } from '@nutui/nutui-react-taro' const Demo1 = () => { const [checked] = useState(false) + const fontSize = { fontSize: 12 } return ( <> @@ -23,8 +24,8 @@ const Demo1 = () => { alignItems: 'center', }} > - 复选框 - 描述信息 + 复选框 + 描述信息 } defaultChecked={!checked} @@ -44,8 +45,8 @@ const Demo1 = () => { alignItems: 'center', }} > - 复选框 - 描述信息 + 复选框 + 描述信息 } defaultChecked={checked} @@ -62,8 +63,8 @@ const Demo1 = () => { alignItems: 'center', }} > - 复选框 - 描述信息 + 复选框 + 描述信息 } defaultChecked={checked} diff --git a/src/packages/checkbox/demos/taro/demo13.tsx b/src/packages/checkbox/demos/taro/demo13.tsx index 0f3ebc0288..3e8ae0225f 100644 --- a/src/packages/checkbox/demos/taro/demo13.tsx +++ b/src/packages/checkbox/demos/taro/demo13.tsx @@ -30,6 +30,7 @@ const Demo13 = () => { ref={checkboxgroup2Ref} direction="horizontal" defaultValue={checkboxgroup2} + style={{ width: '50%' }} onChange={(value) => { if (value.length === 4) { setIndeterminate(false) @@ -42,10 +43,18 @@ const Demo13 = () => { } }} > - 选项 - 选项 - 选项 - 选项 + + 选项 + + + 选项 + + + 选项 + + + 选项 + diff --git a/src/packages/checkbox/demos/taro/demo2.tsx b/src/packages/checkbox/demos/taro/demo2.tsx index c817562316..acc20b0e12 100644 --- a/src/packages/checkbox/demos/taro/demo2.tsx +++ b/src/packages/checkbox/demos/taro/demo2.tsx @@ -1,5 +1,5 @@ import React, { useState } from 'react' -import { Checkbox, Cell } from '@nutui/nutui-react-taro' +import { Cell, Checkbox } from '@nutui/nutui-react-taro' import { Checklist } from '@nutui/icons-react-taro' const Demo2 = () => { @@ -36,9 +36,7 @@ const Demo2 = () => { value={controlledGroup} onChange={(value) => setControlledGroup(value)} > - - - + diff --git a/src/packages/checkbox/demos/taro/demo3.tsx b/src/packages/checkbox/demos/taro/demo3.tsx index b183c75c72..450d90fc94 100644 --- a/src/packages/checkbox/demos/taro/demo3.tsx +++ b/src/packages/checkbox/demos/taro/demo3.tsx @@ -30,9 +30,7 @@ const Demo3 = () => { - - - + diff --git a/src/packages/checkbox/demos/taro/demo8.tsx b/src/packages/checkbox/demos/taro/demo8.tsx index 1abbbd160a..66802b194c 100644 --- a/src/packages/checkbox/demos/taro/demo8.tsx +++ b/src/packages/checkbox/demos/taro/demo8.tsx @@ -21,12 +21,6 @@ const Demo8 = () => { setShowToast(false) }} /> - handleChange(state)} - > - change复选框 - { const [checkboxgroup1, setCheckboxgroup1] = useState(['1']) @@ -32,7 +33,7 @@ const Demo9 = () => { - 选中:{checkboxgroup1.toString()} + 选中:{checkboxgroup1.toString()} ) diff --git a/src/packages/checkbox/index.taro.ts b/src/packages/checkbox/index.taro.ts index a3c9db75c3..66d3ad13fe 100644 --- a/src/packages/checkbox/index.taro.ts +++ b/src/packages/checkbox/index.taro.ts @@ -1,4 +1,15 @@ -import { Checkbox } from './checkbox.taro' +import { Checkbox, CheckboxProps } from './checkbox.taro' +import { CheckboxGroup } from '../checkboxgroup/checkboxgroup.taro' export type { CheckboxProps, CheckboxShape } from './checkbox.taro' -export default Checkbox + +type CompoundedComponent = React.FC< + Partial & + Omit, 'onChange'> +> & { + Group: typeof CheckboxGroup +} +const InnerCheckbox = Checkbox as CompoundedComponent +InnerCheckbox.Group = CheckboxGroup + +export default InnerCheckbox diff --git a/src/packages/checkbox/index.ts b/src/packages/checkbox/index.ts index 15e1dc5684..b922963865 100644 --- a/src/packages/checkbox/index.ts +++ b/src/packages/checkbox/index.ts @@ -1,4 +1,15 @@ -import { Checkbox } from './checkbox' +import { Checkbox, CheckboxProps } from './checkbox' +import { CheckboxGroup } from '../checkboxgroup/checkboxgroup' export type { CheckboxProps, CheckboxShape } from './checkbox' -export default Checkbox + +type CompoundedComponent = React.FC< + Partial & + Omit, 'onChange'> +> & { + Group: typeof CheckboxGroup +} +const InnerCheckbox = Checkbox as CompoundedComponent +InnerCheckbox.Group = CheckboxGroup + +export default InnerCheckbox diff --git a/src/packages/checkboxgroup/checkboxgroup.scss b/src/packages/checkboxgroup/checkboxgroup.scss index 78525d75a9..47f6ceff8e 100644 --- a/src/packages/checkboxgroup/checkboxgroup.scss +++ b/src/packages/checkboxgroup/checkboxgroup.scss @@ -6,6 +6,9 @@ } &-vertical { + display: flex; + flex-direction: column; + .nut-checkbox { margin-bottom: 5px; @@ -22,8 +25,13 @@ } &-horizontal { + display: flex; + flex-direction: row; + flex-wrap: wrap; + .nut-checkbox { display: inline-flex; + flex: 1; margin-right: 20px; &-button-active {