MOBILE-3753 a11y: Use ion-items on item-divider with clicks
This commit is contained in:
		
							parent
							
								
									7353bfac79
								
							
						
					
					
						commit
						064a60ca49
					
				| @ -32,15 +32,24 @@ | ||||
|                     <ion-badge *ngIf="contactRequestsCount > 0" slot="end">{{contactRequestsCount}}</ion-badge> | ||||
|                 </ion-item> | ||||
|                 <!-- Favourite conversations. --> | ||||
|                 <ion-item-divider class="ion-text-wrap core-expandable" (click)="toggle(favourites)" sticky="true" | ||||
|                 <ion-item | ||||
|                     button | ||||
|                     class="ion-text-wrap core-expandable divider" | ||||
|                     (click)="toggle(favourites)" | ||||
|                     sticky="true" | ||||
|                     [attr.aria-label]="(favourites.expanded ? 'core.collapse' : 'core.expand') | translate" | ||||
|                     [attr.aria-expanded]="favourites.expanded" role="heading button"> | ||||
|                     [attr.aria-expanded]="favourites.expanded" | ||||
|                     aria-controls="addon-messages-groupconversations-favourite" | ||||
|                     role="heading" | ||||
|                     detail="false" | ||||
|                 > | ||||
|                     <ion-icon *ngIf="!favourites.expanded" name="fas-caret-right" slot="start" aria-hidden="true"></ion-icon> | ||||
|                     <ion-icon *ngIf="favourites.expanded" name="fas-caret-down" slot="start" aria-hidden="true"></ion-icon> | ||||
|                     <ion-label><h2>{{ 'core.favourites' | translate }} ({{ favourites.count }})</h2></ion-label> | ||||
|                     <ion-badge slot="end" *ngIf="favourites.unread">{{ favourites.unread }}</ion-badge> | ||||
|                 </ion-item-divider> | ||||
|                 <div [hidden]="!favourites.conversations || !favourites.expanded || favourites.loading" #favlist> | ||||
|                 </ion-item> | ||||
|                 <div [hidden]="!favourites.conversations || !favourites.expanded || favourites.loading" #favlist | ||||
|                     id="addon-messages-groupconversations-favourite"> | ||||
|                     <ng-container *ngTemplateOutlet="conversationsTemplate; context: {conversations: favourites.conversations}"> | ||||
|                     </ng-container> | ||||
|                     <!-- The infinite loading cannot be inside the ng-template, it fails because it doesn't find ion-content. --> | ||||
| @ -55,15 +64,24 @@ | ||||
|                 </ion-item> | ||||
| 
 | ||||
|                 <!-- Group conversations. --> | ||||
|                 <ion-item-divider class="ion-text-wrap core-expandable" (click)="toggle(group)" sticky="true" | ||||
|                 <ion-item | ||||
|                     button | ||||
|                     class="divider ion-text-wrap core-expandable" | ||||
|                     (click)="toggle(group)" | ||||
|                     sticky="true" | ||||
|                     [attr.aria-label]="(group.expanded ? 'core.collapse' : 'core.expand') | translate" | ||||
|                     [attr.aria-expanded]="group.expanded" role="heading button"> | ||||
|                     [attr.aria-expanded]="group.expanded" | ||||
|                     aria-controls="addon-messages-groupconversations-group" | ||||
|                     role="heading" | ||||
|                     detail="false" | ||||
|                 > | ||||
|                     <ion-icon *ngIf="!group.expanded" name="fas-caret-right" slot="start" aria-hidden="true"></ion-icon> | ||||
|                     <ion-icon *ngIf="group.expanded" name="fas-caret-down" slot="start" aria-hidden="true"></ion-icon> | ||||
|                     <ion-label><h2>{{ 'addon.messages.groupconversations' | translate }} ({{ group.count }})</h2></ion-label> | ||||
|                     <ion-badge slot="end" *ngIf="group.unread">{{ group.unread }}</ion-badge> | ||||
|                 </ion-item-divider> | ||||
|                 <div [hidden]="!group.conversations || !group.expanded || group.loading" #grouplist> | ||||
|                 </ion-item> | ||||
|                 <div [hidden]="!group.conversations || !group.expanded || group.loading" #grouplist | ||||
|                     id="addon-messages-groupconversations-group"> | ||||
|                     <ng-container *ngTemplateOutlet="conversationsTemplate; context: {conversations: group.conversations}"> | ||||
|                     </ng-container> | ||||
|                     <!-- The infinite loading cannot be inside the ng-template, it fails because it doesn't find ion-content. --> | ||||
| @ -77,17 +95,26 @@ | ||||
|                     <ion-label><ion-spinner></ion-spinner></ion-label> | ||||
|                 </ion-item> | ||||
| 
 | ||||
|                 <ion-item-divider class="ion-text-wrap core-expandable" (click)="toggle(individual)" sticky="true" | ||||
|                 <ion-item | ||||
|                     button | ||||
|                     class="divider ion-text-wrap core-expandable" | ||||
|                     (click)="toggle(individual)" | ||||
|                     sticky="true" | ||||
|                     [attr.aria-label]="(individual.expanded ? 'core.collapse' : 'core.expand') | translate" | ||||
|                     [attr.aria-expanded]="individual.expanded" role="heading button"> | ||||
|                     [attr.aria-expanded]="individual.expanded" | ||||
|                     aria-controls="addon-messages-groupconversations-individual" | ||||
|                     role="heading" | ||||
|                     detail="false" | ||||
|                 > | ||||
|                     <ion-icon *ngIf="!individual.expanded" name="fas-caret-right" slot="start" aria-hidden="true"></ion-icon> | ||||
|                     <ion-icon *ngIf="individual.expanded" name="fas-caret-down" slot="start" aria-hidden="true"></ion-icon> | ||||
|                     <ion-label> | ||||
|                         <h2>{{ 'addon.messages.individualconversations' | translate }} ({{ individual.count }})</h2> | ||||
|                     </ion-label> | ||||
|                     <ion-badge slot="end" *ngIf="individual.unread">{{ individual.unread }}</ion-badge> | ||||
|                 </ion-item-divider> | ||||
|                 <div [hidden]="!individual.conversations || !individual.expanded || individual.loading" #indlist> | ||||
|                 </ion-item> | ||||
|                 <div [hidden]="!individual.conversations || !individual.expanded || individual.loading" #indlist | ||||
|                     id="addon-messages-groupconversations-individual"> | ||||
|                     <ng-container *ngTemplateOutlet="conversationsTemplate; context: {conversations: individual.conversations}"> | ||||
|                     </ng-container> | ||||
|                     <!-- The infinite loading cannot be inside the ng-template, it fails because it doesn't find ion-content. --> | ||||
|  | ||||
| @ -25,18 +25,25 @@ | ||||
|                 (contentChanged)="onMessageChange($event)"> | ||||
|             </core-rich-text-editor> | ||||
|         </ion-item> | ||||
|         <ion-item-divider class="ion-text-wrap core-expandable" (click)="toggleAdvanced()" role="heading button" | ||||
|             [attr.aria-expanded]="advanced" [attr.aria-label]="(advanced ? 'core.hideadvanced' : 'core.showadvanced') | translate"> | ||||
|         <ion-item | ||||
|             button class="divider ion-text-wrap core-expandable" | ||||
|             (click)="toggleAdvanced()" | ||||
|             role="heading" | ||||
|             detail="false" | ||||
|             [attr.aria-expanded]="advanced" | ||||
|             aria-controls="addon-mod-forum-advanced" | ||||
|             [attr.aria-label]="(advanced ? 'core.hideadvanced' : 'core.showadvanced') | translate" | ||||
|         > | ||||
|             <ion-icon *ngIf="!advanced" name="fa-caret-right" slot="start" aria-hidden="true"></ion-icon> | ||||
|             <ion-icon *ngIf="advanced" name="fa-caret-down" slot="start" aria-hidden="true"></ion-icon> | ||||
|             <ion-label><h2>{{ 'addon.mod_forum.advanced' | translate }}</h2></ion-label> | ||||
|         </ion-item-divider> | ||||
|         <ng-container *ngIf="advanced"> | ||||
|         </ion-item> | ||||
|         <div *ngIf="advanced" id="addon-mod-forum-advanced"> | ||||
|             <core-attachments *ngIf="forum.id && forum.maxattachments > 0" | ||||
|                 [maxSize]="forum.maxbytes" [maxSubmissions]="forum.maxattachments" [allowOffline]="true" [files]="replyData.files" | ||||
|                 [component]="component" [componentId]="forum.cmid"> | ||||
|             </core-attachments> | ||||
|         </ng-container> | ||||
|         </div> | ||||
|         <ion-grid> | ||||
|             <ion-row> | ||||
|                 <ion-col> | ||||
|  | ||||
| @ -122,20 +122,26 @@ | ||||
|             <ion-checkbox slot="end" [(ngModel)]="replyData.isprivatereply" name="isprivatereply"></ion-checkbox> | ||||
|         </ion-item> | ||||
|         <ng-container *ngIf="forum.id && forum.maxattachments > 0"> | ||||
|             <ion-item-divider class="core-expandable ion-text-wrap" (click)="toggleAdvanced()" [attr.aria-expanded]="advanced" | ||||
|                 [attr.aria-label]="(advanced ? 'core.hideadvanced' : 'core.showadvanced') |translate" role="button"> | ||||
|             <ion-item | ||||
|                 button | ||||
|                 class="divider core-expandable ion-text-wrap" | ||||
|                 (click)="toggleAdvanced()" detail="false" | ||||
|                 [attr.aria-expanded]="advanced" | ||||
|                 [attr.aria-controls]="'addon-forum-reply-edit-form-advanced-' + uniqueId" | ||||
|                 [attr.aria-label]="(advanced ? 'core.hideadvanced' : 'core.showadvanced') | translate" | ||||
|             > | ||||
|                 <ion-label> | ||||
|                     <ion-icon *ngIf="!advanced" name="fa-caret-right" slot="start" aria-hidden="true"></ion-icon> | ||||
|                     <ion-icon *ngIf="advanced" name="fa-caret-down" slot="start" aria-hidden="true"></ion-icon> | ||||
|                     <h2>{{ 'addon.mod_forum.advanced' | translate }}</h2> | ||||
|                 </ion-label> | ||||
|             </ion-item-divider> | ||||
|             <ng-container *ngIf="advanced"> | ||||
|             </ion-item> | ||||
|             <div *ngIf="advanced" [id]="'addon-forum-reply-edit-form-advanced-' + uniqueId"> | ||||
|                 <core-attachments | ||||
|                     [files]="replyData.files" [maxSize]="forum.maxbytes" [maxSubmissions]="forum.maxattachments" | ||||
|                     [component]="component" [componentId]="forum.cmid" [allowOffline]="true"> | ||||
|                 </core-attachments> | ||||
|             </ng-container> | ||||
|             </div> | ||||
|         </ng-container> | ||||
|         <ion-grid> | ||||
|             <ion-row> | ||||
|  | ||||
| @ -31,13 +31,21 @@ | ||||
|                     (contentChanged)="onMessageChange($event)"> | ||||
|                 </core-rich-text-editor> | ||||
|             </ion-item> | ||||
|             <ion-item-divider class="ion-text-wrap core-expandable" (click)="toggleAdvanced()" [attr.aria-expanded]="advanced" | ||||
|                 [attr.aria-label]="(advanced ? 'core.hideadvanced' : 'core.showadvanced') |translate" role="heading button"> | ||||
|             <ion-item | ||||
|                 button | ||||
|                 class="divider ion-text-wrap core-expandable" | ||||
|                 (click)="toggleAdvanced()" | ||||
|                 detail="false" | ||||
|                 [attr.aria-expanded]="advanced" | ||||
|                 [attr.aria-label]="(advanced ? 'core.hideadvanced' : 'core.showadvanced') | translate" | ||||
|                 role="heading" | ||||
|                 aria-controls="addon-mod-forum-new-discussion-advanced" | ||||
|             > | ||||
|                 <ion-icon *ngIf="!advanced" name="fa-caret-right" slot="start" aria-hidden="true"></ion-icon> | ||||
|                 <ion-icon *ngIf="advanced" name="fa-caret-down" slot="start" aria-hidden="true"></ion-icon> | ||||
|                 <ion-label><h2>{{ 'addon.mod_forum.advanced' | translate }}</h2></ion-label> | ||||
|             </ion-item-divider> | ||||
|             <ng-container *ngIf="advanced"> | ||||
|             </ion-item> | ||||
|             <div *ngIf="advanced" id="addon-mod-forum-new-discussion-advanced"> | ||||
|                 <ion-item *ngIf="showGroups && groupIds.length > 1 && accessInfo.cancanposttomygroups"> | ||||
|                     <ion-label>{{ 'addon.mod_forum.posttomygroups' | translate }}</ion-label> | ||||
|                     <ion-toggle [(ngModel)]="newDiscussion.postToAllGroups" name="postallgroups"></ion-toggle> | ||||
| @ -61,7 +69,7 @@ | ||||
|                     [files]="newDiscussion.files" [maxSize]="forum.maxbytes" [maxSubmissions]="forum.maxattachments" | ||||
|                     [component]="component" [componentId]="forum.cmid" [allowOffline]="true"> | ||||
|                 </core-attachments> | ||||
|             </ng-container> | ||||
|             </div> | ||||
|             <ion-item> | ||||
|                 <ion-label> | ||||
|                     <ion-row> | ||||
|  | ||||
| @ -1,4 +1,3 @@ | ||||
| <ion-item-divider class="ion-text-wrap" (click)="gotoBlock()" role="button"> | ||||
| <ion-item button class="ion-text-wrap divider" (click)="gotoBlock()" detail="true"> | ||||
|     <ion-label><h2>{{ title | translate }}</h2></ion-label> | ||||
|     <ion-icon class="item-detail-icon" name="chevron-forward-outline" slot="end" flip-rtl aria-hidden="true"></ion-icon> | ||||
| </ion-item-divider> | ||||
| </ion-item> | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| <ion-item-divider class="ion-text-wrap" detail="true" (click)="gotoBlock()" role="button"> | ||||
| <ion-item button class="divider ion-text-wrap" detail="true" (click)="gotoBlock()" detail="true"> | ||||
|     <ion-label> | ||||
|         <h2>{{ title | translate }}</h2> | ||||
|     </ion-label> | ||||
| </ion-item-divider> | ||||
| </ion-item> | ||||
|  | ||||
| @ -185,16 +185,6 @@ ion-alert.core-nohead { | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| // Ionic item divider. | ||||
| ion-item-divider { | ||||
|     .item-detail-icon { | ||||
|         color: var(--ion-item-detail-icon-color); | ||||
|         font-size: var(--ion-item-detail-icon-font-size); | ||||
|         opacity: var(--ion-item-detail-icon-opacity); | ||||
|         padding-inline-end: 16px; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| // Ionic list. | ||||
| ion-list.list-md { | ||||
|     padding: 0; | ||||
|  | ||||
| @ -67,8 +67,8 @@ | ||||
|     } | ||||
| 
 | ||||
|     --ion-item-background: #{$ion-item-background-dark}; | ||||
|     --ion-item-detail-icon-color: var(--white); | ||||
|     ion-item-divider { | ||||
|     --ion-item-detail-icon-: var(--white); | ||||
|     ion-item-divider, ion-item.divider { | ||||
|         --background: var(--black); | ||||
|         --color: var(--white); | ||||
|     } | ||||
|  | ||||
| @ -172,10 +172,11 @@ | ||||
|     } | ||||
| 
 | ||||
|     --item-divider-min-height: calc(var(--a11y-min-target-size) + 8px); | ||||
|     ion-item-divider { | ||||
|     ion-item-divider, ion-item.divider { | ||||
|         --background: var(--gray-lighter); | ||||
|         --color: inherit; | ||||
|         min-height: var(--item-divider-min-height); | ||||
|         --min-height: var(--item-divider-min-height); | ||||
|         min-height: var(--min-height); | ||||
|     } | ||||
| 
 | ||||
|     --core-combobox-background: var(--ion-item-background); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user