Skip to content

Commit 8f0369a

Browse files
authored
fix(mat/paginator): fix focus issues with paginator buttons (angular#29379)
* fix(material/paginator): fix focus issues with paginator buttons fixed to where if paginator button gets disabled while focused, focus will go to next appropriat button fixes b/286098030 * fix(material/paginator): remove console logs removed console logs fixes b/286098030 * fix(material/paginator): update api update api fixes b/286098030 * fix(material/paginator): fix comment fix comment fixes #286098030 * fix(material/paginator): add disabled interactive attribute to paginator buttons added disabledInteractive to prevent focus from going to body whenever button becomes disabled fixes b/286098030 * fix(material/paginator): fix tests fix broken tests fixes b/286098030 * fix(material/paginator): fix more broken tests fixed more broken tests fixes b/286098030 * fix(material/paginator): fix spec test changed paginator harness test to look for aria-disabled instead of disabled fixes b/286098030 * fix(material/paginator): fix unit tests fix unit tests fixes b/286098030 * fix(material/paginator): fix style issue fix style issue fixes b/286098030 * fix(material/datepicker): remove disabled class remove class fixes b/286098030
1 parent 5242169 commit 8f0369a

File tree

4 files changed

+15
-11
lines changed

4 files changed

+15
-11
lines changed

src/material/paginator/paginator.html

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@
4949
[matTooltip]="_intl.firstPageLabel"
5050
[matTooltipDisabled]="_previousButtonsDisabled()"
5151
[matTooltipPosition]="'above'"
52-
[disabled]="_previousButtonsDisabled()">
52+
[disabled]="_previousButtonsDisabled()"
53+
disabledInteractive>
5354
<svg class="mat-mdc-paginator-icon"
5455
viewBox="0 0 24 24"
5556
focusable="false"
@@ -65,7 +66,8 @@
6566
[matTooltip]="_intl.previousPageLabel"
6667
[matTooltipDisabled]="_previousButtonsDisabled()"
6768
[matTooltipPosition]="'above'"
68-
[disabled]="_previousButtonsDisabled()">
69+
[disabled]="_previousButtonsDisabled()"
70+
disabledInteractive>
6971
<svg class="mat-mdc-paginator-icon"
7072
viewBox="0 0 24 24"
7173
focusable="false"
@@ -80,7 +82,8 @@
8082
[matTooltip]="_intl.nextPageLabel"
8183
[matTooltipDisabled]="_nextButtonsDisabled()"
8284
[matTooltipPosition]="'above'"
83-
[disabled]="_nextButtonsDisabled()">
85+
[disabled]="_nextButtonsDisabled()"
86+
disabledInteractive>
8487
<svg class="mat-mdc-paginator-icon"
8588
viewBox="0 0 24 24"
8689
focusable="false"
@@ -96,7 +99,8 @@
9699
[matTooltip]="_intl.lastPageLabel"
97100
[matTooltipDisabled]="_nextButtonsDisabled()"
98101
[matTooltipPosition]="'above'"
99-
[disabled]="_nextButtonsDisabled()">
102+
[disabled]="_nextButtonsDisabled()"
103+
disabledInteractive>
100104
<svg class="mat-mdc-paginator-icon"
101105
viewBox="0 0 24 24"
102106
focusable="false"

src/material/paginator/paginator.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ $button-icon-size: 28px;
119119
) {
120120
@include token-utils.create-token-slot(fill, enabled-icon-color);
121121

122-
.mat-mdc-icon-button[disabled] & {
122+
.mat-mdc-icon-button[aria-disabled] & {
123123
@include token-utils.create-token-slot(fill, disabled-icon-color);
124124
}
125125
}

src/material/paginator/paginator.spec.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -529,10 +529,10 @@ describe('MatPaginator', () => {
529529
fixture.detectChanges();
530530

531531
expect(select.disabled).toBe(true);
532-
expect(getPreviousButton(fixture).hasAttribute('disabled')).toBe(true);
533-
expect(getNextButton(fixture).hasAttribute('disabled')).toBe(true);
534-
expect(getFirstButton(fixture).hasAttribute('disabled')).toBe(true);
535-
expect(getLastButton(fixture).hasAttribute('disabled')).toBe(true);
532+
expect(getPreviousButton(fixture).hasAttribute('aria-disabled')).toBe(true);
533+
expect(getNextButton(fixture).hasAttribute('aria-disabled')).toBe(true);
534+
expect(getFirstButton(fixture).hasAttribute('aria-disabled')).toBe(true);
535+
expect(getLastButton(fixture).hasAttribute('aria-disabled')).toBe(true);
536536
});
537537

538538
it('should be able to configure the default options via a provider', () => {

src/material/paginator/testing/paginator-harness.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,13 @@ export class MatPaginatorHarness extends ComponentHarness {
5050

5151
/** Returns whether or not the next page button is disabled. */
5252
async isNextPageDisabled(): Promise<boolean> {
53-
const disabledValue = await (await this._nextButton()).getAttribute('disabled');
53+
const disabledValue = await (await this._nextButton()).getAttribute('aria-disabled');
5454
return disabledValue == 'true';
5555
}
5656

5757
/* Returns whether or not the previous page button is disabled. */
5858
async isPreviousPageDisabled(): Promise<boolean> {
59-
const disabledValue = await (await this._previousButton()).getAttribute('disabled');
59+
const disabledValue = await (await this._previousButton()).getAttribute('aria-disabled');
6060
return disabledValue == 'true';
6161
}
6262

0 commit comments

Comments
 (0)