diff --git a/semcore/select/CHANGELOG.md b/semcore/select/CHANGELOG.md
index 61a00140e5..f05faa9107 100644
--- a/semcore/select/CHANGELOG.md
+++ b/semcore/select/CHANGELOG.md
@@ -2,6 +2,12 @@
CHANGELOG.md standards are inspired by [keepachangelog.com](https://keepachangelog.com/en/1.0.0/).
+## [4.37.0] - 2024-04-10
+
+### Fixed
+
+- Multiselect interactions were not annotated properly by screen readers when select was used with `options` prop.
+
## [4.36.2] - 2024-04-10
### Fixed
diff --git a/semcore/select/__tests__/index.test.tsx b/semcore/select/__tests__/index.test.tsx
index 99559ff411..9fe2d10f4f 100644
--- a/semcore/select/__tests__/index.test.tsx
+++ b/semcore/select/__tests__/index.test.tsx
@@ -284,6 +284,31 @@ describe('Select Trigger', () => {
const results = await axe(container);
expect(results).toHaveNoViolations();
});
+ test('multiselect a11y', async () => {
+ vi.useFakeTimers();
+ const options = [
+ {
+ value: '1',
+ children: 'Option 1',
+ label: 'Option 1',
+ },
+ {
+ value: '2',
+ children: 'Option 2',
+ label: 'Option 2',
+ },
+ ];
+ const { container } = render(
+ ,
+ );
+ act(() => {
+ vi.runAllTimers();
+ });
+ vi.useRealTimers();
+
+ const results = await axe(container);
+ expect(results).toHaveNoViolations();
+ });
test.concurrent('focus position preserve with mouse navigation', async () => {
vi.useFakeTimers();
diff --git a/semcore/select/src/Select.jsx b/semcore/select/src/Select.jsx
index 0b08195a3d..1bbbf5ade4 100644
--- a/semcore/select/src/Select.jsx
+++ b/semcore/select/src/Select.jsx
@@ -246,12 +246,7 @@ class RootSelect extends Component {
{options.map((option, index) => {
return (
-
+
{multiselect && }
{option.children}
@@ -351,9 +346,7 @@ function Checkbox(providedProps) {
{...componentProps}
className={cn(className, componentProps.className) || undefined}
style={{ ...style, ...componentProps.style }}
- role='checkbox'
tabIndex={-1}
- aria-checked={selected}
/>
);
}