Your search did not match any results.
Right-to-Left Support

Right-to-Left Support

DevExtreme HTML5 JavaScript Editors is a collection of 15+ React components for data editing with integrated client-side data validation. The components can operate in controlled or uncontrolled state mode and can be used with Redux. They support advanced UI customization using template components and render props. Declared PropTypes for typechecking are included as well. Learn more about DevExtreme React components.

Apply
Reset
import React from 'react'; import { NumberBox } from 'devextreme-react/number-box'; import { SelectBox } from 'devextreme-react/select-box'; import { Switch } from 'devextreme-react/switch'; import { TextBox } from 'devextreme-react/text-box'; import { Autocomplete } from 'devextreme-react/autocomplete'; import { CheckBox } from 'devextreme-react/check-box'; import { TextArea } from 'devextreme-react/text-area'; import { TagBox } from 'devextreme-react/tag-box'; import { europeanUnion } from './data.js'; class App extends React.Component { constructor() { super(); this.state = { rtlEnabled: false }; this.languages = [ 'Arabic: Right-to-Left direction', 'English: Left-to-Right direction' ]; this.displayExpr = 'nameEn'; this.textValue = 'text'; this.onLanguageChanged = this.onLanguageChanged.bind(this); } onLanguageChanged(args) { const isRTL = args.value === this.languages[0]; this.displayExpr = isRTL ? 'nameAr' : 'nameEn'; this.setState({ rtlEnabled: isRTL }); this.textValue = isRTL ? 'نص' : 'text'; } render() { return ( <div> <div className={this.state.rtlEnabled && 'dx-rtl'}> <div className={'options'}> <div className={'caption'}>Options</div> <div className={'dx-fieldset'}> <div className={'dx-field'}> <div className={'dx-field-label'}>Language</div> <div className={'dx-field-value'}> <SelectBox items={this.languages} defaultValue={this.languages[1]} rtlEnabled={this.state.rtlEnabled} onValueChanged={this.onLanguageChanged} /> </div> </div> </div> </div> <div className={'dx-fieldset'}> <div className={'dx-field'}> <div className={'dx-field-label'}>Text Box</div> <div className={'dx-field-value'}> <TextBox showClearButton={true} defaultValue={this.textValue} rtlEnabled={this.state.rtlEnabled} /> </div> </div> <div className={'dx-field'}> <div className={'dx-field-label'}>Number Box</div> <div className={'dx-field-value'}> <NumberBox showSpinButtons={true} defaultValue={'123'} rtlEnabled={this.state.rtlEnabled} /> </div> </div> <div className={'dx-field'}> <div className={'dx-field-label'}>Select Box</div> <div className={'dx-field-value'}> <SelectBox items={europeanUnion} defaultValue={europeanUnion[0]} rtlEnabled={this.state.rtlEnabled} displayExpr={this.displayExpr} /> </div> </div> <div className={'dx-field'}> <div className={'dx-field-label'}>Tag Box</div> <div className={'dx-field-value'}> <TagBox items={europeanUnion} defaultValue={[europeanUnion[0].id]} rtlEnabled={this.state.rtlEnabled} displayExpr={this.displayExpr} placeholder={'...'} valueExpr={'id'} /> </div> </div> <div className={'dx-field'}> <div className={'dx-field-label'}>Text Area</div> <div className={'dx-field-value'}> <TextArea defaultValue={this.textValue} rtlEnabled={this.state.rtlEnabled} /> </div> </div> <div className={'dx-field'}> <div className={'dx-field-label'}>Autocomplete</div> <div className={'dx-field-value'}> <Autocomplete items={europeanUnion} rtlEnabled={this.state.rtlEnabled} valueExpr={this.displayExpr} /> </div> </div> <div className={'dx-field'}> <div className={'dx-field-label'}>Check Box</div> <div className={'dx-field-value'}> <CheckBox defaultValue={true} text={this.textValue} rtlEnabled={this.state.rtlEnabled} /> </div> </div> <div className={'dx-field'}> <div className={'dx-field-label'}>Switch</div> <div className={'dx-field-value'}> <Switch rtlEnabled={this.state.rtlEnabled} /> </div> </div> </div> </div> </div> ); } } export default App;
import React from 'react'; import ReactDOM from 'react-dom'; import App from './App.js'; ReactDOM.render( <App />, document.getElementById('app') );
<!DOCTYPE html> <html> <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=1.0" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/19.2.3/css/dx.common.css" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/19.2.3/css/dx.light.css" /> <link rel="stylesheet" type="text/css" href="styles.css" /> <script src="https://unpkg.com/core-js@2.4.1/client/shim.min.js"></script> <script src="https://unpkg.com/systemjs@0.21.3/dist/system.js"></script> <script type="text/javascript" src="config.js"></script> <script type="text/javascript"> System.import('./index.js'); </script> </head> <body class="dx-viewport"> <div class="demo-container"> <div id="app"></div> </div> </body> </html>
.options { padding: 20px; background-color: rgba(191, 191, 191, 0.15); } .options .dx-fieldset { margin: 0; } .option { margin-top: 10px; } .caption { font-size: 18px; font-weight: 500; padding-right: 15px; } .option > span { margin-right: 10px; } .option > .dx-widget { display: inline-block; vertical-align: middle; }
export const europeanUnion = [{ id: 1, nameAr: 'النمسا', nameEn: 'Austria' }, { id: 2, nameAr: 'بلجيكا', nameEn: 'Belgium' }, { id: 3, nameAr: 'بلغاريا', nameEn: 'Bulgaria' }, { id: 4, nameAr: 'كرواتيا', nameEn: 'Croatia' }, { id: 5, nameAr: 'قبرص', nameEn: 'Cyprus' }, { id: 6, nameAr: 'الجمهورية التشيكية', nameEn: 'Czech Republic' }, { id: 7, nameAr: 'الدنمارك', nameEn: 'Denmark' }, { id: 8, nameAr: 'استونيا', nameEn: 'Estonia' }, { id: 9, nameAr: 'فنلندا', nameEn: 'Finland' }, { id: 10, nameAr: 'فرنسا', nameEn: 'France' }, { id: 11, nameAr: 'ألمانيا', nameEn: 'Germany' }, { id: 12, nameAr: 'يونان', nameEn: 'Greece' }, { id: 13, nameAr: 'هنغاريا', nameEn: 'Hungary' }, { id: 14, nameAr: 'أيرلندا', nameEn: 'Ireland' }, { id: 15, nameAr: 'إيطاليا', nameEn: 'Italy' }, { id: 16, nameAr: 'لاتفيا', nameEn: 'Latvia' }, { id: 17, nameAr: 'ليتوانيا', nameEn: 'Lithuania' }, { id: 18, nameAr: 'لوكسمبورغ', nameEn: 'Luxembourg' }, { id: 19, nameAr: 'مالطا', nameEn: 'Malta' }, { id: 20, nameAr: 'هولندا', nameEn: 'Netherlands' }, { id: 21, nameAr: 'بولندا', nameEn: 'Poland' }, { id: 22, nameAr: 'البرتغال', nameEn: 'Portugal' }, { id: 23, nameAr: 'رومانيا', nameEn: 'Romania' }, { id: 24, nameAr: 'سلوفاكيا', nameEn: 'Slovakia' }, { id: 25, nameAr: 'سلوفينيا', nameEn: 'Slovenia' }, { id: 26, nameAr: 'إسبانيا', nameEn: 'Spain' }, { id: 27, nameAr: 'السويد', nameEn: 'Sweden' }, { id: 28, nameAr: 'المملكة المتحدة', nameEn: 'United Kingdom' }];
System.config({ transpiler: 'plugin-babel', paths: { 'npm:': 'https://unpkg.com/' }, defaultExtension: 'js', map: { 'react': 'npm:react@16/umd/react.development.js', 'react-dom': 'npm:react-dom@16/umd/react-dom.development.js', 'prop-types': 'npm:prop-types/prop-types.js', 'devextreme': 'npm:devextreme@19.2', 'devextreme-react': 'npm:devextreme-react@19.2', 'jszip': 'npm:jszip@3.1.3/dist/jszip.min.js', 'quill': 'npm:quill@1.3.7/dist/quill.js', 'devexpress-diagram': 'npm:devexpress-diagram', 'devexpress-gantt': 'npm:devexpress-gantt', // SystemJS plugins 'plugin-babel': 'npm:systemjs-plugin-babel@0/plugin-babel.js', 'systemjs-babel-build': 'npm:systemjs-plugin-babel@0/systemjs-babel-browser.js' }, packages: { 'devextreme': { defaultExtension: 'js' }, 'devextreme-react': { main: 'index.js' } }, babelOptions: { sourceMaps: false, stage0: true, react: true } });