$(() => {
DevExpress.setTemplateEngine({
compile: (element) => $(element).html(),
render: (template, data) => Mustache.render(template, data),
});
const treeViewWidget = $('#treeview').dxTreeView({
dataSource: continents,
width: 200,
displayExpr: 'text',
}).dxTreeView('instance');
const menuWidget = $('#menu').dxMenu({
dataSource: continents,
}).dxMenu('instance');
const arabicAccordionOptions = {
rtlEnabled: true,
itemTitleTemplate(data, index, element) {
const $item = $('<div>').text(data.nameAr);
element.append($item);
},
itemTemplate: $('#arabic-accordion-template'),
};
const englishAccordionOptions = {
rtlEnabled: false,
itemTitleTemplate(data, index, element) {
const $item = $('<div>').text(data.nameEn);
element.append($item);
},
itemTemplate: $('#english-accordion-template'),
};
const accordionWidget = $('#accordion').dxAccordion(
$.extend({
dataSource: europeCountries,
},
englishAccordionOptions),
).dxAccordion('instance');
const languages = [
'Arabic: Right-to-Left direction',
'English: Left-to-Right direction',
];
$('#select-language').dxSelectBox({
items: languages,
value: languages[1],
inputAttr: { 'aria-label': 'Language' },
onValueChanged(data) {
const isRTL = data.value === languages[0];
$('.demo-container').toggleClass('dx-rtl', isRTL);
$.each([treeViewWidget, menuWidget], (_, instance) => {
instance.option('rtlEnabled', isRTL);
instance.option('displayExpr', isRTL ? 'textAr' : 'text');
});
accordionWidget.option(isRTL
? arabicAccordionOptions
: englishAccordionOptions);
},
});
});
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<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" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>window.jQuery || document.write(decodeURIComponent('%3Cscript src="js/jquery.min.js"%3E%3C/script%3E'))</script>
<link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/23.1.5/css/dx.light.css" />
<script src="https://cdn3.devexpress.com/jslib/23.1.5/js/dx.all.js"></script>
<script src="https://unpkg.com/mustache@2.3.2/mustache.min.js"></script>
<script src="data.js"></script>
<link rel="stylesheet" type="text/css" href="styles.css" />
<script src="index.js"></script>
</head>
<body class="dx-viewport">
<div class="demo-container">
<div class="options">
<div class="caption">Options</div>
<div class="dx-fieldset">
<div class="dx-field">
<div class="dx-field-label">Language</div>
<div class="dx-field-value">
<div id="select-language"></div>
</div>
</div>
</div>
</div>
<div>
<div class="dx-fieldset">
<div class="dx-fieldset-header">
<div id="menu"></div>
</div>
</div>
<div class="dx-fieldset">
<div class="dx-field">
<div class="dx-field-label">
<div id="treeview"></div>
</div>
<div class="dx-field-value">
<div id="accordion"></div>
</div>
</div>
</div>
</div>
<script type="text/html" id="arabic-accordion-template">
<div>
<div>عاصمة: {{ capitalAr }} </div>
<div>عدد السكان: {{ population }} نسمة</div>
<div>المساحة: {{ area }} كم<sup>2</sup></div>
</div>
</script>
<script type="text/html" id="english-accordion-template">
<div>
<div>Capital: {{ capitalEn }} </div>
<div>Population: {{ population }} people</div>
<div>Area: {{ area }} km<sup>2</sup></div>
</div>
</script>
</div>
</body>
</html>
sup {
font-size: 0.8em;
vertical-align: super;
line-height: 0;
}
.options {
padding: 20px;
background-color: rgba(191, 191, 191, 0.15);
margin-bottom: 20px;
}
.options .dx-fieldset {
margin: 0;
}
.caption {
font-size: 18px;
font-weight: 500;
padding-right: 15px;
}
.dx-theme-material .dx-accordion .dx-accordion-item-opened .dx-accordion-item-title {
padding-top: 20px;
}
const continents = [{
id: '1',
text: 'Africa',
textAr: 'أفريقيا',
items: [
{
id: '1_2',
text: 'Ethiopia',
textAr: 'أثيوبيا',
items: [{
id: '1_2_1',
text: 'Addis Ababa',
textAr: 'أديس أبابا',
}, {
id: '1_2_2',
text: 'Dire Dawa',
textAr: 'دير داوا',
}],
},
{
id: '1_1',
text: 'Nigeria',
textAr: 'نيجيريا',
items: [{
id: '1_1_1',
text: 'Lagos',
textAr: 'لاغوس',
}, {
id: '1_1_2',
text: 'Kano',
textAr: 'كانو',
}],
},
],
}, {
id: '2',
text: 'Asia',
textAr: 'آسيا',
items: [{
id: '2_1',
text: 'China',
textAr: 'الصين',
items: [{
id: '2_1_1',
text: 'Beijing',
textAr: 'بكين',
}, {
id: '2_1_2',
text: 'Shanghai',
textAr: 'شنغهاي',
}],
}, {
id: '2_2',
text: 'India',
textAr: 'الهند',
items: [{
id: '2_2_1',
text: 'Indianapolis',
textAr: 'انديانابوليس',
}, {
id: '2_2_2',
text: 'New Delhi',
textAr: 'نيودلهي',
}],
}],
}, {
id: '3',
text: 'Australia',
textAr: 'أستراليا',
items: [{
id: '3_1',
text: 'Australia',
textAr: 'أستراليا',
items: [{
id: '3_1_1',
text: 'Canberra',
textAr: 'كانبيرا',
}, {
id: '3_1_2',
text: 'Melbourne',
textAr: 'ملبورن',
}, {
id: '3_1_3',
text: 'Sydney',
textAr: 'سيدني',
}],
}],
}, {
id: '4',
text: 'Europe',
textAr: 'أوروبا',
items: [{
id: '4_1',
text: 'Germany',
textAr: 'ألمانيا',
items: [{
id: '4_1_1',
text: 'Berlin',
textAr: 'البرلينية',
}, {
id: '4_1_2',
text: 'Hamburg',
textAr: 'هامبورغ',
}],
}, {
id: '4_2',
text: 'Russia',
textAr: 'روسيا',
items: [{
id: '4_2_1',
text: 'Moscow',
textAr: 'موسكو',
}, {
id: '4_2_2',
text: 'Saint Petersburg',
textAr: 'سانت بطرسبرغ',
}],
}],
}, {
id: '5',
text: 'North America',
textAr: 'أمريكا الشمالية',
items: [{
id: '5_2',
text: 'Mexico',
textAr: 'المكسيك',
items: [{
id: '5_2_1',
text: 'Mexico City',
textAr: 'مكسيكو سيتي',
}, {
id: '5_2_2',
text: 'Guadalajara',
textAr: 'غوادالاخارا',
}],
}, {
id: '5_1',
text: 'United States',
textAr: 'الولايات المتحدة الأمريكية',
items: [{
id: '5_1_1',
text: 'New York',
textAr: 'نيويورك',
}, {
id: '5_1_2',
text: 'Washington',
textAr: 'واشنطن',
}],
}],
}, {
id: '6',
text: 'South America',
textAr: 'أمريكا الجنوبية',
items: [{
id: '6_1',
text: 'Brazil',
textAr: 'البرازيل',
items: [{
id: '6_1_1',
text: 'Brasilia',
textAr: 'برازيليا',
}, {
id: '6_1_2',
text: 'Sao Paulo',
textAr: 'ساو باولو',
}],
}, {
id: '6_2',
text: 'Colombia',
textAr: 'كولومبيا',
items: [{
id: '6_2_1',
text: 'Bogota',
textAr: 'بوغوتا',
}, {
id: '6_2_2',
text: 'Medellin',
textAr: 'ميديلين',
}],
}],
}];
const europeCountries = [{
nameAr: 'النمسا',
nameEn: 'Austria',
population: 8451900,
area: 83855.0,
capitalEn: 'Vienna',
capitalAr: 'فيينا',
}, {
nameAr: 'بلجيكا',
nameEn: 'Belgium',
population: 11161600,
area: 30528.0,
capitalEn: 'Brussels',
capitalAr: 'بروكسل',
}, {
nameAr: 'بلغاريا',
nameEn: 'Bulgaria',
population: 7284600,
area: 110994.0,
capitalEn: 'Sofia',
capitalAr: 'صوفيا',
}, {
nameAr: 'كرواتيا',
nameEn: 'Croatia',
population: 4262100,
area: 56594.0,
capitalEn: 'Zagreb',
capitalAr: 'زغرب',
}];