mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2026-09-09 18:03:21 +00:00
[ACS-10206]: setting haspopup after init (#11475)
* [ACS-10206]: setting haspopup after init * [ACS-10206]: sonarQube fixes * [ACS-10206]: sonarQube fixes * [ACS-10206]: sonarQube fixes * [ACS-10206]: cleanup * [ACS-10206]: revert
This commit is contained in:
+37
-12
@@ -1,4 +1,6 @@
|
|||||||
<mat-chip [attr.data-automation-id]="'search-filter-chip-' + category.name"
|
<mat-chip
|
||||||
|
role="button"
|
||||||
|
[attr.data-automation-id]="'search-filter-chip-' + category.name"
|
||||||
[disableRipple]="true"
|
[disableRipple]="true"
|
||||||
class="adf-search-filter-chip"
|
class="adf-search-filter-chip"
|
||||||
[class.adf-search-toggle-chip]="(widget.getDisplayValue() | async) || menuTrigger.menuOpen"
|
[class.adf-search-toggle-chip]="(widget.getDisplayValue() | async) || menuTrigger.menuOpen"
|
||||||
@@ -8,33 +10,56 @@
|
|||||||
(keydown.enter)="onEnterKeydown()"
|
(keydown.enter)="onEnterKeydown()"
|
||||||
(keydown.escape)="onEscKeydown()"
|
(keydown.escape)="onEscKeydown()"
|
||||||
[attr.title]="widget.getDisplayValue() | async"
|
[attr.title]="widget.getDisplayValue() | async"
|
||||||
#menuTrigger="matMenuTrigger">
|
[attr.aria-label]="category.name | translate"
|
||||||
|
[attr.aria-expanded]="menuTrigger.menuOpen"
|
||||||
|
[attr.aria-haspopup]="'dialog'"
|
||||||
|
#menuTrigger="matMenuTrigger"
|
||||||
|
>
|
||||||
<span class="adf-search-filter-placeholder">
|
<span class="adf-search-filter-placeholder">
|
||||||
<span class="adf-search-filter-ellipsis">{{ category.name | translate }}:</span>
|
<span class="adf-search-filter-ellipsis">{{ category.name | translate }}:</span>
|
||||||
</span>
|
</span>
|
||||||
<span class="adf-search-filter-ellipsis adf-filter-value" *ngIf="widget.getDisplayValue() | async as displayValue; else showAny">
|
<span class="adf-search-filter-ellipsis adf-filter-value" *ngIf="widget.getDisplayValue() | async as displayValue; else showAny">
|
||||||
{{ displayValue | translate }}
|
{{ displayValue | translate }}
|
||||||
</span>
|
</span>
|
||||||
<ng-template #showAny><span class="adf-search-filter-ellipsis adf-filter-value"> {{ 'SEARCH.FILTER.ANY' | translate }}</span></ng-template>
|
<ng-template #showAny
|
||||||
|
><span class="adf-search-filter-ellipsis adf-filter-value"> {{ 'SEARCH.FILTER.ANY' | translate }}</span></ng-template
|
||||||
|
>
|
||||||
<mat-icon class="adf-search-filter-chip-icon" [adf-icon]="chipIcon" />
|
<mat-icon class="adf-search-filter-chip-icon" [adf-icon]="chipIcon" />
|
||||||
</mat-chip>
|
</mat-chip>
|
||||||
|
|
||||||
<mat-menu #menu="matMenu" class="adf-search-widget-extra-width" backdropClass="adf-search-filter-chip-menu" [class]="'adf-search-filter-chip-menu-panel adf-search-filter-chip-menu-panel-' + category.id" (closed)="onClosed()">
|
<mat-menu
|
||||||
<div #menuContainer [attr.data-automation-id]="'search-field-' + category.name">
|
#menu="matMenu"
|
||||||
<adf-search-filter-menu-card (click)="$event.stopPropagation()"
|
class="adf-search-widget-extra-width"
|
||||||
(keydown.tab)="$event.stopPropagation();"
|
backdropClass="adf-search-filter-chip-menu"
|
||||||
|
[class]="'adf-search-filter-chip-menu-panel adf-search-filter-chip-menu-panel-' + category.id"
|
||||||
|
(closed)="onClosed()"
|
||||||
|
role="presentation"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
[attr.aria-label]="category.name | translate"
|
||||||
|
role="dialog"
|
||||||
|
aria-modal="false"
|
||||||
|
#menuContainer
|
||||||
|
[attr.data-automation-id]="'search-field-' + category.name"
|
||||||
|
>
|
||||||
|
<adf-search-filter-menu-card
|
||||||
|
(click)="$event.stopPropagation()"
|
||||||
|
(keydown.tab)="$event.stopPropagation()"
|
||||||
(keydown.shift.tab)="$event.stopPropagation()"
|
(keydown.shift.tab)="$event.stopPropagation()"
|
||||||
(close)="menuTrigger.closeMenu()">
|
(close)="menuTrigger.closeMenu()"
|
||||||
|
>
|
||||||
<ng-container ngProjectAs="filter-title">
|
<ng-container ngProjectAs="filter-title">
|
||||||
{{ category.name | translate }} <ng-container *ngIf="category.component.settings.unit">({{category.component.settings.unit}})</ng-container>
|
{{ category.name | translate }}
|
||||||
|
<ng-container *ngIf="category.component.settings.unit">({{ category.component.settings.unit }})</ng-container>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
||||||
<ng-container ngProjectAs="filter-content">
|
<ng-container ngProjectAs="filter-content">
|
||||||
<adf-search-widget-container #widget
|
<adf-search-widget-container
|
||||||
|
#widget
|
||||||
[id]="category.id"
|
[id]="category.id"
|
||||||
[selector]="category.component.selector"
|
[selector]="category.component.selector"
|
||||||
[settings]="category.component.settings" />
|
[settings]="category.component.settings"
|
||||||
|
/>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
||||||
<ng-container ngProjectAs="filter-actions">
|
<ng-container ngProjectAs="filter-actions">
|
||||||
|
|||||||
+4
@@ -105,4 +105,8 @@ describe('SearchWidgetChipComponent', () => {
|
|||||||
expect(focusTrap.destroy).toHaveBeenCalled();
|
expect(focusTrap.destroy).toHaveBeenCalled();
|
||||||
expect(component.focusTrap).toBeNull();
|
expect(component.focusTrap).toBeNull();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should set aria-haspopup to "dialog" for matMenu trigger on initialization', () => {
|
||||||
|
expect(component.menuTriggerEl.nativeElement.getAttribute('aria-haspopup')).toBe('dialog');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
+7
@@ -57,6 +57,9 @@ export class SearchWidgetChipComponent implements AfterViewInit {
|
|||||||
@ViewChild('menuContainer', { static: false })
|
@ViewChild('menuContainer', { static: false })
|
||||||
menuContainer: ElementRef;
|
menuContainer: ElementRef;
|
||||||
|
|
||||||
|
@ViewChild('menuTrigger', { read: ElementRef, static: false })
|
||||||
|
menuTriggerEl: ElementRef;
|
||||||
|
|
||||||
@ViewChild('menuTrigger', { static: false })
|
@ViewChild('menuTrigger', { static: false })
|
||||||
menuTrigger: MatMenuTrigger;
|
menuTrigger: MatMenuTrigger;
|
||||||
|
|
||||||
@@ -78,6 +81,10 @@ export class SearchWidgetChipComponent implements AfterViewInit {
|
|||||||
.subscribe(() => {
|
.subscribe(() => {
|
||||||
this.cd.detectChanges();
|
this.cd.detectChanges();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (this.menuTriggerEl) {
|
||||||
|
this.menuTriggerEl.nativeElement.setAttribute('aria-haspopup', 'dialog');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onMenuOpen() {
|
onMenuOpen() {
|
||||||
|
|||||||
Reference in New Issue
Block a user