fix(admin): polish products

Add accessible names to the table-view select-all and per-row
checkboxes — they had none, while the grid-view equivalent already
did (product name via aria-label). New adminProducts.selectAllRows/
selectRow keys added across en/ru/hy.

Reviewed toolbar, filters, bulk actions, empty/loading states, and
grid view: all buttons already route through app-button (own
:focus-visible), empty state already uses shared EmptyStateComponent.
No orphaned bindings or corrupted glyphs found.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
sdarbinyan
2026-07-19 23:55:11 +04:00
parent d70e5d6bdc
commit 8956cd00d7
5 changed files with 10 additions and 2 deletions

View File

@@ -88,7 +88,7 @@
<app-table [class.density-compact]="density === 'compact'">
<thead>
<tr>
<th><input type="checkbox" (change)="selectAll.emit($any($event.target).checked)" /></th>
<th><input type="checkbox" [attr.aria-label]="'adminProducts.selectAllRows' | translate" (change)="selectAll.emit($any($event.target).checked)" /></th>
<th>{{ 'adminProducts.name' | translate }}</th>
@if (isColumnVisible('sku')) { <th>{{ 'backoffice.sku' | translate }}</th> }
@if (isColumnVisible('brand')) { <th>{{ 'adminProducts.brand' | translate }}</th> }
@@ -102,7 +102,7 @@
<tbody>
@for (product of products; track product.id) {
<tr>
<td><input type="checkbox" [checked]="isSelected(product.id)" (change)="selectionChange.emit({ id: product.id, checked: $any($event.target).checked })" /></td>
<td><input type="checkbox" [checked]="isSelected(product.id)" [attr.aria-label]="('adminProducts.selectRow' | translate) + ': ' + product.name" (change)="selectionChange.emit({ id: product.id, checked: $any($event.target).checked })" /></td>
<td>{{ product.name }}</td>
@if (isColumnVisible('sku')) { <td>{{ product.sku }}</td> }
@if (isColumnVisible('brand')) { <td>{{ product.brand }}</td> }