this.emitItemClick()}
aria-label={this.ariaLabelButton}
+ disabled={this.disabled}
>
{!this.suppressChecked ? (
diff --git a/packages/core/src/components/dropdown/test/dropdown.ct.ts b/packages/core/src/components/dropdown/test/dropdown.ct.ts
index 7803033740f..1ecf61f41c3 100644
--- a/packages/core/src/components/dropdown/test/dropdown.ct.ts
+++ b/packages/core/src/components/dropdown/test/dropdown.ct.ts
@@ -836,3 +836,48 @@ regressionTest(
await expect(lastItem).toBeVisible();
}
);
+regressionTest(
+ 'should reflect aria-disabled on disabled dropdown item',
+ async ({ page, mount }) => {
+ await mount(`
+ Open
+
+
+
+
+ `);
+
+ const disabledItem = page.locator('#disabled-item');
+ const enabledItem = page.locator('#enabled-item');
+
+ await expect(disabledItem).toHaveAttribute('aria-disabled', 'true');
+ await expect(enabledItem).toHaveAttribute('aria-disabled', 'false');
+ }
+);
+regressionTest(
+ 'should reflect disabled attribute in DOM when changed dynamically',
+ async ({ page, mount }) => {
+ await mount(`
+ Open
+
+
+
+ `);
+
+ const dynamicItem = page.locator('#dynamic-disabled');
+
+ await expect(dynamicItem).not.toHaveAttribute('disabled');
+
+ await dynamicItem.evaluate((element: any) => {
+ element.disabled = true;
+ });
+
+ await expect(dynamicItem).toHaveAttribute('disabled');
+
+ await dynamicItem.evaluate((element: any) => {
+ element.disabled = false;
+ });
+
+ await expect(dynamicItem).not.toHaveAttribute('disabled');
+ }
+);