DevExtreme Accessibility Compliance
DevExtreme component libraries meet a variety of WCAG and Section 508 compliance standards. To assess this demo's accessibility level, click the Run AXE® Validation button to launch the AXE® web accessibility evaluation tool.
All trademarks or registered trademarks are property of their respective owners. AXE® Terms of Use
The overall accessibility level of your application depends on the Button features used.
Backend API
import React from 'react';
import { Button } from 'devextreme-react/button';
import type { ButtonTypes } from 'devextreme-react/button';
import notify from 'devextreme/ui/notify';
const onClick = (e: ButtonTypes.ClickEvent): void => {
const buttonText = e.component.option('text') ?? '';
notify(`The ${capitalize(buttonText)} button was clicked`);
};
function capitalize(text: string): string {
return text.charAt(0).toUpperCase() + text.slice(1);
}
export default function App() {
return (
<div className="buttons-demo">
<div className="buttons">
<div>
<div className="buttons-column">
<div className="column-header">
Normal
</div>
<div>
<Button
width={120}
text="Contained"
type="normal"
stylingMode="contained"
onClick={onClick}
/>
</div>
<div>
<Button
width={120}
text="Outlined"
type="normal"
stylingMode="outlined"
onClick={onClick}
/>
</div>
<div>
<Button
width={120}
text="Text"
type="normal"
stylingMode="text"
onClick={onClick}
/>
</div>
</div>
<div className="buttons-column">
<div className="column-header">
Success
</div>
<div>
<Button
width={120}
text="Contained"
type="success"
stylingMode="contained"
onClick={onClick}
/>
</div>
<div>
<Button
width={120}
text="Outlined"
type="success"
stylingMode="outlined"
onClick={onClick}
/>
</div>
<div>
<Button
width={120}
text="Text"
type="success"
stylingMode="text"
onClick={onClick}
/>
</div>
</div>
</div>
<div>
<div className="buttons-column">
<div className="column-header">
Default
</div>
<div>
<Button
width={120}
text="Contained"
type="default"
stylingMode="contained"
onClick={onClick}
/>
</div>
<div>
<Button
width={120}
text="Outlined"
type="default"
stylingMode="outlined"
onClick={onClick}
/>
</div>
<div>
<Button
width={120}
text="Text"
type="default"
stylingMode="text"
onClick={onClick}
/>
</div>
</div>
<div className="buttons-column">
<div className="column-header">
Danger
</div>
<div>
<Button
width={120}
text="Contained"
type="danger"
stylingMode="contained"
onClick={onClick}
/>
</div>
<div>
<Button
width={120}
text="Outlined"
type="danger"
stylingMode="outlined"
onClick={onClick}
/>
</div>
<div>
<Button
width={120}
text="Text"
type="danger"
stylingMode="text"
onClick={onClick}
/>
</div>
</div>
</div>
</div>
</div>
);
}
import React from 'react';
import { Button } from 'devextreme-react/button';
import notify from 'devextreme/ui/notify';
const onClick = (e) => {
const buttonText = e.component.option('text') ?? '';
notify(`The ${capitalize(buttonText)} button was clicked`);
};
function capitalize(text) {
return text.charAt(0).toUpperCase() + text.slice(1);
}
export default function App() {
return (
<div className="buttons-demo">
<div className="buttons">
<div>
<div className="buttons-column">
<div className="column-header">Normal</div>
<div>
<Button
width={120}
text="Contained"
type="normal"
stylingMode="contained"
onClick={onClick}
/>
</div>
<div>
<Button
width={120}
text="Outlined"
type="normal"
stylingMode="outlined"
onClick={onClick}
/>
</div>
<div>
<Button
width={120}
text="Text"
type="normal"
stylingMode="text"
onClick={onClick}
/>
</div>
</div>
<div className="buttons-column">
<div className="column-header">Success</div>
<div>
<Button
width={120}
text="Contained"
type="success"
stylingMode="contained"
onClick={onClick}
/>
</div>
<div>
<Button
width={120}
text="Outlined"
type="success"
stylingMode="outlined"
onClick={onClick}
/>
</div>
<div>
<Button
width={120}
text="Text"
type="success"
stylingMode="text"
onClick={onClick}
/>
</div>
</div>
</div>
<div>
<div className="buttons-column">
<div className="column-header">Default</div>
<div>
<Button
width={120}
text="Contained"
type="default"
stylingMode="contained"
onClick={onClick}
/>
</div>
<div>
<Button
width={120}
text="Outlined"
type="default"
stylingMode="outlined"
onClick={onClick}
/>
</div>
<div>
<Button
width={120}
text="Text"
type="default"
stylingMode="text"
onClick={onClick}
/>
</div>
</div>
<div className="buttons-column">
<div className="column-header">Danger</div>
<div>
<Button
width={120}
text="Contained"
type="danger"
stylingMode="contained"
onClick={onClick}
/>
</div>
<div>
<Button
width={120}
text="Outlined"
type="danger"
stylingMode="outlined"
onClick={onClick}
/>
</div>
<div>
<Button
width={120}
text="Text"
type="danger"
stylingMode="text"
onClick={onClick}
/>
</div>
</div>
</div>
</div>
</div>
);
}
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App.tsx';
ReactDOM.render(
<App />,
document.getElementById('app'),
);
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App.js';
ReactDOM.render(<App />, document.getElementById('app'));
<!DOCTYPE html>
<html lang="en">
<head>
<title>DevExtreme Demo</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0" />
<link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/26.1.5/css/dx.light.css" />
<link rel="stylesheet" type="text/css" href="./bundle.css" />
</head>
<body class="dx-viewport">
<div class="demo-container">
<div id="app"></div>
</div>
<script src="bundles/vendor/react.vendor.js"></script>
<script src="./bundle.js"></script>
</body>
</html>
.demo-container {
display: flex;
justify-content: center;
height: 450px;
}
#app {
align-self: center;
}
.buttons-demo {
width: 600px;
align-self: center;
}
.buttons-column > .column-header {
flex-grow: 0;
width: 150px;
height: 35px;
font-size: 130%;
color: var(--dx-color-icon);
text-align: left;
padding-left: 15px;
}
.buttons {
display: flex;
flex-wrap: wrap;
justify-content: center;
}
.buttons > div {
width: 300px;
flex-wrap: nowrap;
display: flex;
}
.buttons-column > div {
width: 150px;
height: 50px;
text-align: center;
}
.buttons-column {
width: 150px;
justify-content: center;
}
To further customize the Button, use the stylingMode property. This property affects the fill and borders, and accepts the following values:
- "contained"
- "outlined"
- "text"
To get started with the DevExtreme Button component, refer to the following tutorial for step-by-step instructions: Getting Started with Button.