If you have technical questions, please create a support ticket in the DevExpress Support Center.
import React, { useCallback, useState } from 'react';
import { CheckBox, CheckBoxTypes } from 'devextreme-react/check-box';
const checkedLabel = { 'aria-label': 'Checked' };
const uncheckedLabel = { 'aria-label': 'Unchecked' };
const indeterminateLabel = { 'aria-label': 'Indeterminate' };
const threeStateModeLabel = { 'aria-label': 'Three state mode' };
const handleValueChangeLabel = { 'aria-label': 'Handle value change' };
const disabledLabel = { 'aria-label': 'Disabled' };
const customSizeLabel = { 'aria-label': 'Custom size' };
function App() {
const [checkBoxValue, setCheckBoxValue] = useState(null);
const onValueChanged = useCallback((args: CheckBoxTypes.ValueChangedEvent) => {
setCheckBoxValue(args.value);
}, []);
return (
<div className="form">
<div className="dx-fieldset">
<div className="dx-field">
<div className="dx-field-label">Checked</div>
<div className="dx-field-value">
<CheckBox
defaultValue={true}
elementAttr={checkedLabel}
/>
</div>
</div>
<div className="dx-field">
<div className="dx-field-label">Unchecked</div>
<div className="dx-field-value">
<CheckBox
defaultValue={false}
elementAttr={uncheckedLabel}
/>
</div>
</div>
<div className="dx-field">
<div className="dx-field-label">Indeterminate</div>
<div className="dx-field-value">
<CheckBox
defaultValue={null}
elementAttr={indeterminateLabel}
/>
</div>
</div>
<div className="dx-field">
<div className="dx-field-label">Three state mode</div>
<div className="dx-field-value">
<CheckBox
enableThreeStateBehavior={true}
defaultValue={null}
elementAttr={threeStateModeLabel}
/>
</div>
</div>
<div className="dx-field">
<div className="dx-field-label">Handle value change</div>
<div className="dx-field-value">
<CheckBox
value={checkBoxValue}
elementAttr={handleValueChangeLabel}
onValueChanged={onValueChanged}
/>
</div>
</div>
<div className="dx-field">
<div className="dx-field-label">Disabled</div>
<div className="dx-field-value">
<CheckBox
disabled={true}
value={checkBoxValue}
elementAttr={disabledLabel}
/>
</div>
</div>
<div className="dx-field">
<div className="dx-field-label">Custom size</div>
<div className="dx-field-value">
<CheckBox
defaultValue={null}
iconSize={30}
elementAttr={customSizeLabel}
/>
</div>
</div>
<div className="dx-field">
<div className="dx-field-label">With label</div>
<div className="dx-field-value">
<CheckBox
defaultValue={true}
text="Label"
/>
</div>
</div>
</div>
</div>
);
}
export default App;
xxxxxxxxxx
import React, { useCallback, useState } from 'react';
import { CheckBox } from 'devextreme-react/check-box';
const checkedLabel = { 'aria-label': 'Checked' };
const uncheckedLabel = { 'aria-label': 'Unchecked' };
const indeterminateLabel = { 'aria-label': 'Indeterminate' };
const threeStateModeLabel = { 'aria-label': 'Three state mode' };
const handleValueChangeLabel = { 'aria-label': 'Handle value change' };
const disabledLabel = { 'aria-label': 'Disabled' };
const customSizeLabel = { 'aria-label': 'Custom size' };
function App() {
const [checkBoxValue, setCheckBoxValue] = useState(null);
const onValueChanged = useCallback((args) => {
setCheckBoxValue(args.value);
}, []);
return (
<div className="form">
<div className="dx-fieldset">
<div className="dx-field">
<div className="dx-field-label">Checked</div>
<div className="dx-field-value">
<CheckBox
defaultValue={true}
elementAttr={checkedLabel}
/>
</div>
</div>
<div className="dx-field">
<div className="dx-field-label">Unchecked</div>
<div className="dx-field-value">
<CheckBox
defaultValue={false}
elementAttr={uncheckedLabel}
/>
</div>
</div>
<div className="dx-field">
<div className="dx-field-label">Indeterminate</div>
<div className="dx-field-value">
<CheckBox
defaultValue={null}
elementAttr={indeterminateLabel}
/>
</div>
</div>
<div className="dx-field">
<div className="dx-field-label">Three state mode</div>
<div className="dx-field-value">
<CheckBox
enableThreeStateBehavior={true}
defaultValue={null}
elementAttr={threeStateModeLabel}
/>
</div>
</div>
<div className="dx-field">
<div className="dx-field-label">Handle value change</div>
<div className="dx-field-value">
<CheckBox
value={checkBoxValue}
elementAttr={handleValueChangeLabel}
onValueChanged={onValueChanged}
/>
</div>
</div>
<div className="dx-field">
<div className="dx-field-label">Disabled</div>
<div className="dx-field-value">
<CheckBox
disabled={true}
value={checkBoxValue}
elementAttr={disabledLabel}
/>
</div>
</div>
<div className="dx-field">
<div className="dx-field-label">Custom size</div>
<div className="dx-field-value">
<CheckBox
defaultValue={null}
iconSize={30}
elementAttr={customSizeLabel}
/>
</div>
</div>
<div className="dx-field">
<div className="dx-field-label">With label</div>
<div className="dx-field-value">
<CheckBox
defaultValue={true}
text="Label"
/>
</div>
</div>
</div>
</div>
);
}
export default App;
xxxxxxxxxx
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App.tsx';
ReactDOM.render(<App />, document.getElementById('app'));
xxxxxxxxxx
window.exports = window.exports || {};
window.config = {
transpiler: 'ts',
typescriptOptions: {
module: 'system',
emitDecoratorMetadata: true,
experimentalDecorators: true,
jsx: 'react',
},
meta: {
'react': {
'esModule': true,
},
'typescript': {
'exports': 'ts',
},
'devextreme/time_zone_utils.js': {
'esModule': true,
},
'devextreme/localization.js': {
'esModule': true,
},
'devextreme/viz/palette.js': {
'esModule': true,
},
'openai': {
'esModule': true,
},
},
paths: {
'npm:': 'https://unpkg.com/',
'bundles:': 'bundles/',
'externals:': 'bundles/externals/',
},
defaultExtension: 'js',
map: {
'ts': 'npm:plugin-typescript@8.0.0/lib/plugin.js',
'typescript': 'npm:typescript@4.2.4/lib/typescript.js',
'jszip': 'npm:jszip@3.10.1/dist/jszip.min.js',
'react': 'npm:react@17.0.2/umd/react.development.js',
'react-dom': 'npm:react-dom@17.0.2/umd/react-dom.development.js',
'prop-types': 'npm:prop-types/prop-types.js',
'rrule': 'npm:rrule@2.6.4/dist/es5/rrule.js',
'luxon': 'npm:luxon@3.4.4/build/global/luxon.min.js',
'es6-object-assign': 'npm:es6-object-assign',
'devextreme': 'npm:devextreme@link:../../packages/devextreme/artifacts/npm/devextreme/cjs',
'devextreme-react': 'npm:devextreme-react@link:../../packages/devextreme-react/npm/cjs',
'devextreme-quill': 'npm:devextreme-quill@1.7.1/dist/dx-quill.min.js',
'devexpress-diagram': 'npm:devexpress-diagram@2.2.5/dist/dx-diagram.js',
'devexpress-gantt': 'npm:devexpress-gantt@4.1.54/dist/dx-gantt.js',
'@devextreme/runtime': 'npm:@devextreme/runtime@3.0.12',
'inferno': 'npm:inferno@7.4.11/dist/inferno.min.js',
'inferno-compat': 'npm:inferno-compat/dist/inferno-compat.min.js',
'inferno-create-element': 'npm:inferno-create-element@7.4.11/dist/inferno-create-element.min.js',
'inferno-dom': 'npm:inferno-dom/dist/inferno-dom.min.js',
'inferno-hydrate': 'npm:inferno-hydrate/dist/inferno-hydrate.min.js',
'inferno-clone-vnode': 'npm:inferno-clone-vnode/dist/inferno-clone-vnode.min.js',
'inferno-create-class': 'npm:inferno-create-class/dist/inferno-create-class.min.js',
'inferno-extras': 'npm:inferno-extras/dist/inferno-extras.min.js',
'devextreme-cldr-data': 'npm:devextreme-cldr-data@1.0.3',
// SystemJS plugins
'plugin-babel': 'npm:systemjs-plugin-babel@0.0.25/plugin-babel.js',
'systemjs-babel-build': 'npm:systemjs-plugin-babel@0.0.25/systemjs-babel-browser.js',
// Prettier
'prettier/standalone': 'npm:prettier@2.8.8/standalone.js',
'prettier/parser-html': 'npm:prettier@2.8.8/parser-html.js',
},
packages: {
'devextreme': {
defaultExtension: 'js',
},
'devextreme-react': {
main: 'index.js',
},
'devextreme/events/utils': {
main: 'index',
},
'devextreme/localization/messages': {
format: 'json',
defaultExtension: 'json',
},
'devextreme/events': {
main: 'index',
},
'es6-object-assign': {
main: './index.js',
defaultExtension: 'js',
},
},
packageConfigPaths: [
'npm:@devextreme/*/package.json',
'npm:@devextreme/runtime@3.0.12/inferno/package.json',
],
babelOptions: {
sourceMaps: false,
stage0: true,
react: true,
},
};
System.config(window.config);
xxxxxxxxxx
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App.js';
ReactDOM.render(<App />, document.getElementById('app'));
xxxxxxxxxx
<html lang="en">
<head></head>
<body class="dx-viewport">
<div class="demo-container">
<div id="app"></div>
</div>
</body>
</html>
xxxxxxxxxx
The component supports the three state mode. In this demo, the enableThreeStateBehavior property of the "Three state mode" CheckBox is enabled. You can cycle through the states of this CheckBox in the following order:
Indeterminate → Checked → Unchecked → Indeterminate → ...
Specify the onValueChanged property to handle value changes. In this demo, the value of the "Handle value change" CheckBox is passed to the "Disabled" CheckBox. Click the first CheckBox to see how it affects the second one.
You can use the iconSize property to specify custom dimensions for the CheckBox. To add a label to the CheckBox, specify the text property.