Skip to content

Commit bad8f6a

Browse files
DBowen33andrewseguin
authored andcommitted
fix(material/paginator): items per page form field touch target size insufficient (#29109)
* fix(material/paginator): items per page form field touch target issue items per page form field touch target does not have sufficient touch target size (48 x 48) fixes b/202731532 * fix(material/paginator): added transparent element for larger touch target added transparent touch target element on top of paginator select to get touch target to 48 pixel height Fixes b/225394124 * fix(material/paginator): add new line add new line fixes b/225394124 * fix(material/paginator): added density tokens added density tokens for paginator touch target Fixes b/225394124 * fix(material/paginator): fix lint error fix lint error fixes #225394124 (cherry picked from commit 99b3312)
1 parent f834a11 commit bad8f6a

File tree

4 files changed

+38
-5
lines changed

4 files changed

+38
-5
lines changed

src/material/core/tokens/_density.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ $_density-tokens: (
120120
container-size: (56px, 52px, 48px, 40px),
121121
form-field-container-height: (40px, 40px, 40px, 40px, 40px, 36px),
122122
form-field-container-vertical-padding: (8px, 8px, 8px, 8px, 8px, 6px),
123+
touch-target-display: (block, block, none, none),
123124
),
124125
(mat, radio): (
125126
touch-target-display: (block, block, none, none),

src/material/core/tokens/m2/mat/_paginator.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ $prefix: (mat, paginator);
6969
container-size: map.get($size-scale, $density-scale),
7070
form-field-container-height: $form-field-height,
7171
form-field-container-vertical-padding: $form-field-vertical-padding,
72+
touch-target-display: if($density-scale < -2, none, block),
7273
);
7374
}
7475

src/material/paginator/paginator.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
[color]="color"
1313
class="mat-mdc-paginator-page-size-select">
1414
<mat-select
15+
#selectRef
1516
[value]="pageSize"
1617
[disabled]="disabled"
1718
[aria-labelledby]="_pageSizeLabelId"
@@ -25,6 +26,7 @@
2526
</mat-option>
2627
}
2728
</mat-select>
29+
<div class="mat-mdc-paginator-touch-target" (click)="selectRef.open()"></div>
2830
</mat-form-field>
2931
}
3032

src/material/paginator/paginator.scss

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ $page-size-margin-right: 8px;
99
$items-per-page-label-margin: 0 4px;
1010
$selector-margin: 0 4px;
1111
$selector-trigger-width: 84px;
12+
$touch-target-height: 48px;
1213

1314
$range-label-margin: 0 32px 0 24px;
1415
$button-icon-size: 28px;
@@ -17,7 +18,9 @@ $button-icon-size: 28px;
1718
display: block;
1819

1920
@include token-utils.use-tokens(
20-
tokens-mat-paginator.$prefix, tokens-mat-paginator.get-token-slots()) {
21+
tokens-mat-paginator.$prefix,
22+
tokens-mat-paginator.get-token-slots()
23+
) {
2124
@include mdc-typography.smooth-font();
2225
@include token-utils.create-token-slot(color, container-text-color);
2326
@include token-utils.create-token-slot(background-color, container-background-color);
@@ -29,9 +32,13 @@ $button-icon-size: 28px;
2932

3033
// Apply custom form-field density for paginator.
3134
@include token-utils.create-token-slot(
32-
--mat-form-field-container-height, form-field-container-height);
35+
--mat-form-field-container-height,
36+
form-field-container-height
37+
);
3338
@include token-utils.create-token-slot(
34-
--mat-form-field-container-vertical-padding, form-field-container-vertical-padding);
39+
--mat-form-field-container-vertical-padding,
40+
form-field-container-vertical-padding
41+
);
3542

3643
.mat-mdc-select-value {
3744
@include token-utils.create-token-slot(font-size, select-trigger-text-size);
@@ -66,7 +73,9 @@ $button-icon-size: 28px;
6673
width: 100%;
6774

6875
@include token-utils.use-tokens(
69-
tokens-mat-paginator.$prefix, tokens-mat-paginator.get-token-slots()) {
76+
tokens-mat-paginator.$prefix,
77+
tokens-mat-paginator.get-token-slots()
78+
) {
7079
@include token-utils.create-token-slot(min-height, container-size);
7180
}
7281
}
@@ -105,7 +114,9 @@ $button-icon-size: 28px;
105114
width: $button-icon-size;
106115

107116
@include token-utils.use-tokens(
108-
tokens-mat-paginator.$prefix, tokens-mat-paginator.get-token-slots()) {
117+
tokens-mat-paginator.$prefix,
118+
tokens-mat-paginator.get-token-slots()
119+
) {
109120
@include token-utils.create-token-slot(fill, enabled-icon-color);
110121

111122
.mat-mdc-icon-button[disabled] & {
@@ -133,3 +144,21 @@ $button-icon-size: 28px;
133144
outline: solid 1px;
134145
}
135146
}
147+
148+
.mat-mdc-paginator-touch-target {
149+
@include token-utils.use-tokens(
150+
tokens-mat-paginator.$prefix,
151+
tokens-mat-paginator.get-token-slots()
152+
) {
153+
@include token-utils.create-token-slot(display, touch-target-display);
154+
}
155+
156+
position: absolute;
157+
top: 50%;
158+
left: 50%;
159+
width: $selector-trigger-width;
160+
height: $touch-target-height;
161+
background-color: transparent;
162+
transform: translate(-50%, -50%);
163+
cursor: pointer;
164+
}

0 commit comments

Comments
 (0)