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:
+49
-24
@@ -1,40 +1,65 @@
|
||||
<mat-chip [attr.data-automation-id]="'search-filter-chip-' + category.name"
|
||||
[disableRipple]="true"
|
||||
class="adf-search-filter-chip"
|
||||
[class.adf-search-toggle-chip]="(widget.getDisplayValue() | async) || menuTrigger.menuOpen"
|
||||
tabindex="0"
|
||||
[matMenuTriggerFor]="menu"
|
||||
(menuOpened)="onMenuOpen()"
|
||||
(keydown.enter)="onEnterKeydown()"
|
||||
(keydown.escape)="onEscKeydown()"
|
||||
[attr.title]="widget.getDisplayValue() | async"
|
||||
#menuTrigger="matMenuTrigger">
|
||||
<mat-chip
|
||||
role="button"
|
||||
[attr.data-automation-id]="'search-filter-chip-' + category.name"
|
||||
[disableRipple]="true"
|
||||
class="adf-search-filter-chip"
|
||||
[class.adf-search-toggle-chip]="(widget.getDisplayValue() | async) || menuTrigger.menuOpen"
|
||||
tabindex="0"
|
||||
[matMenuTriggerFor]="menu"
|
||||
(menuOpened)="onMenuOpen()"
|
||||
(keydown.enter)="onEnterKeydown()"
|
||||
(keydown.escape)="onEscKeydown()"
|
||||
[attr.title]="widget.getDisplayValue() | async"
|
||||
[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-ellipsis">{{ category.name | translate }}:</span>
|
||||
</span>
|
||||
<span class="adf-search-filter-ellipsis adf-filter-value" *ngIf="widget.getDisplayValue() | async as displayValue; else showAny">
|
||||
{{ displayValue | translate }}
|
||||
</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-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()">
|
||||
<div #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()"
|
||||
(close)="menuTrigger.closeMenu()">
|
||||
|
||||
<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()"
|
||||
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()"
|
||||
(close)="menuTrigger.closeMenu()"
|
||||
>
|
||||
<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 ngProjectAs="filter-content">
|
||||
<adf-search-widget-container #widget
|
||||
[id]="category.id"
|
||||
[selector]="category.component.selector"
|
||||
[settings]="category.component.settings" />
|
||||
<adf-search-widget-container
|
||||
#widget
|
||||
[id]="category.id"
|
||||
[selector]="category.component.selector"
|
||||
[settings]="category.component.settings"
|
||||
/>
|
||||
</ng-container>
|
||||
|
||||
<ng-container ngProjectAs="filter-actions">
|
||||
|
||||
+4
@@ -105,4 +105,8 @@ describe('SearchWidgetChipComponent', () => {
|
||||
expect(focusTrap.destroy).toHaveBeenCalled();
|
||||
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 })
|
||||
menuContainer: ElementRef;
|
||||
|
||||
@ViewChild('menuTrigger', { read: ElementRef, static: false })
|
||||
menuTriggerEl: ElementRef;
|
||||
|
||||
@ViewChild('menuTrigger', { static: false })
|
||||
menuTrigger: MatMenuTrigger;
|
||||
|
||||
@@ -78,6 +81,10 @@ export class SearchWidgetChipComponent implements AfterViewInit {
|
||||
.subscribe(() => {
|
||||
this.cd.detectChanges();
|
||||
});
|
||||
|
||||
if (this.menuTriggerEl) {
|
||||
this.menuTriggerEl.nativeElement.setAttribute('aria-haspopup', 'dialog');
|
||||
}
|
||||
}
|
||||
|
||||
onMenuOpen() {
|
||||
|
||||
Reference in New Issue
Block a user