Skip to content

Commit 3384ba4

Browse files
author
marker dao ®
committed
update(radio): Remove useless juggling of id && Fix JQ demo
1 parent 7c1d9db commit 3384ba4

5 files changed

Lines changed: 24 additions & 37 deletions

File tree

apps/demos/Demos/RadioGroup/Overview/jQuery/index.js

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,18 @@ $(() => {
1919
$('#radio-group-with-template').dxRadioGroup({
2020
items: priorities,
2121
value: priorities[2],
22-
itemTemplate(itemData, _, itemElement) {
23-
itemElement
24-
.parent().addClass(itemData.toLowerCase())
25-
.text(itemData);
22+
itemTemplate: (itemData, _, itemElement) => {
23+
itemElement.text(itemData);
2624
},
27-
});
25+
onValueChanged: (e) => {
26+
const $element = $(e.element);
27+
const priorityClass = e.previousValue.toLowerCase();
28+
const newPriorityClass = e.value.toLowerCase();
29+
30+
$element.removeClass(priorityClass);
31+
$element.addClass(newPriorityClass);
32+
},
33+
}).addClass(priorities[2].toLowerCase());
2834

2935
const radioGroup = $('#radio-group-with-selection').dxRadioGroup({
3036
items: priorityEntities,

apps/demos/Demos/RadioGroup/Overview/jQuery/styles.css

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
.low.dx-radiobutton-checked .dx-radiobutton-icon .dx-radiobutton-icon-dot {
1+
.low .dx-radiobutton-checked .dx-radiobutton-icon .dx-radiobutton-icon-dot {
22
background: gray;
33
}
44

5-
.normal.dx-radiobutton-checked .dx-radiobutton-icon .dx-radiobutton-icon-dot {
5+
.normal .dx-radiobutton-checked .dx-radiobutton-icon .dx-radiobutton-icon-dot {
66
background: green;
77
}
88

9-
.urgent.dx-radiobutton-checked .dx-radiobutton-icon .dx-radiobutton-icon-dot {
9+
.urgent .dx-radiobutton-checked .dx-radiobutton-icon .dx-radiobutton-icon-dot {
1010
background: orange;
1111
}
1212

13-
.high.dx-radiobutton-checked .dx-radiobutton-icon .dx-radiobutton-icon-dot {
13+
.high .dx-radiobutton-checked .dx-radiobutton-icon .dx-radiobutton-icon-dot {
1414
background: red;
1515
}
1616

e2e/testcafe-devextreme/tests/accessibility/radioGroup.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,6 @@ const interactiveItemsConfiguration: Configuration = {
4545

4646
itemElement.append($button);
4747
},
48-
(itemData, _, itemElement) => {
49-
$(itemElement).parent().text(itemData);
50-
},
5148
],
5249
},
5350
};

packages/devextreme/js/__internal/ui/radio_group/m_radio_collection.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,14 @@ class RadioCollection extends CollectionWidget<Properties> {
6868
if (!html) {
6969
const $radio = $('<div>').addClass(RADIO_BUTTON_ICON_CLASS);
7070

71-
$('<div>').addClass(RADIO_BUTTON_ICON_DOT_CLASS).appendTo($radio);
71+
$('<div>')
72+
.addClass(RADIO_BUTTON_ICON_DOT_CLASS)
73+
.appendTo($radio);
74+
75+
const $radioContainer = $('<div>')
76+
.append($radio)
77+
.addClass(RADIO_VALUE_CONTAINER_CLASS);
7278

73-
const $radioContainer = $('<div>').append($radio).addClass(RADIO_VALUE_CONTAINER_CLASS);
7479
$itemElement.prepend($radioContainer);
7580
}
7681

@@ -83,12 +88,11 @@ class RadioCollection extends CollectionWidget<Properties> {
8388

8489
if (!html) {
8590
const $itemContent = $itemElement.find(`.${ITEM_CONTENT_CLASS}`);
86-
const $contentIdTarget = $itemContent.length ? $itemContent : $itemElement;
8791

8892
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
89-
const contentId = $contentIdTarget.attr('id') || `dx-${new Guid()}`;
93+
const contentId = $itemContent.attr('id') || `dx-${new Guid()}`;
9094

91-
$contentIdTarget.attr('id', contentId);
95+
$itemContent.attr('id', contentId);
9296

9397
// eslint-disable-next-line spellcheck/spell-checker
9498
aria.labelledby = contentId;

packages/devextreme/testing/tests/DevExpress.ui.widgets.editors/radioGroup.markup.tests.js

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -397,26 +397,6 @@ QUnit.module('Aria accessibility', {
397397
});
398398
});
399399

400-
QUnit.test('Items with itemTemplate that replaces parent content: radio container aria-labelledby references item element id', function(assert) {
401-
helper.createWidget({
402-
items: ['Low', 'Normal', 'Urgent', 'High'],
403-
itemTemplate(itemData, _, itemElement) {
404-
$(itemElement).parent().text(itemData);
405-
},
406-
});
407-
408-
helper.getItems().each((index, item) => {
409-
const $item = $(item);
410-
const $radioContainer = $item.find(`.${RADIO_VALUE_CONTAINER_CLASS}`);
411-
const itemId = $item.attr('id');
412-
413-
assert.ok(itemId, `item[${index}] has an id when item content is removed by template`);
414-
assert.strictEqual($radioContainer.attr('role'), 'radio', `item[${index}] radio container has role="radio"`);
415-
assert.strictEqual($radioContainer.attr('aria-checked'), 'false', `item[${index}] radio container has aria-checked="false"`);
416-
assert.strictEqual($radioContainer.attr('aria-labelledby'), itemId, `item[${index}] radio container aria-labelledby references item element id`);
417-
});
418-
});
419-
420400
QUnit.test('Item with html: role="radio" is set on item element, no radio container created', function(assert) {
421401
helper.createWidget({
422402
items: [

0 commit comments

Comments
 (0)