Skip to content

Commit 31a275a

Browse files
committed
MOBILE-4065 forum: Fix forum focus problems
1 parent bff59a0 commit 31a275a

File tree

4 files changed

+49
-40
lines changed

4 files changed

+49
-40
lines changed

src/addons/mod/forum/components/index/index.html

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -74,26 +74,20 @@
7474
[lines]="discussion.groupname && 'none'" [attr.aria-current]="discussions?.getItemAriaCurrent(discussion)"
7575
(click)="discussions?.select(discussion)" button>
7676
<ion-label>
77-
<div class="addon-mod-forum-discussion-title">
78-
<p class="ion-text-wrap item-heading">
79-
<ion-icon name="fas-map-pin" *ngIf="discussion.pinned"
80-
[attr.aria-label]="'addon.mod_forum.discussionpinned' | translate"></ion-icon>
81-
<ion-icon name="fas-star" class="addon-forum-star" *ngIf="!discussion.pinned && discussion.starred"
82-
[attr.aria-label]="'addon.mod_forum.favourites' | translate"></ion-icon>
83-
<core-format-text [text]="discussion.subject" contextLevel="module" [contextInstanceId]="module && module.id"
84-
[courseId]="courseId">
85-
</core-format-text>
86-
<ion-icon name="fas-lock" *ngIf="discussion.locked" class="addon-mod-forum-locked-icon"
87-
[attr.aria-label]="'addon.mod_forum.discussionlocked' | translate"></ion-icon>
88-
</p>
89-
<ion-button *ngIf="canPin || discussion.canlock || discussion.canfavourite" fill="clear"
90-
[attr.aria-label]="('core.displayoptions' | translate)" (click)="showOptionsMenu($event, discussion)">
91-
<ion-icon name="ellipsis-vertical" slot="icon-only" aria-hidden="true">
92-
</ion-icon>
93-
</ion-button>
94-
</div>
77+
<p class="addon-mod-forum-discussion-title ion-text-wrap item-heading">
78+
<ion-icon name="fas-map-pin" *ngIf="discussion.pinned"
79+
[attr.aria-label]="'addon.mod_forum.discussionpinned' | translate"></ion-icon>
80+
<ion-icon name="fas-star" class="addon-forum-star" *ngIf="!discussion.pinned && discussion.starred"
81+
[attr.aria-label]="'addon.mod_forum.favourites' | translate"></ion-icon>
82+
<core-format-text [text]="discussion.subject" contextLevel="module" [contextInstanceId]="module && module.id"
83+
[courseId]="courseId">
84+
</core-format-text>
85+
<ion-icon name="fas-lock" *ngIf="discussion.locked" class="addon-mod-forum-locked-icon"
86+
[attr.aria-label]="'addon.mod_forum.discussionlocked' | translate"></ion-icon>
87+
</p>
9588
<div class="addon-mod-forum-discussion-info">
96-
<core-user-avatar *ngIf="discussion.userfullname" [user]="discussion" slot="start" [courseId]="courseId">
89+
<core-user-avatar *ngIf="discussion.userfullname" [user]="discussion" slot="start" [courseId]="courseId"
90+
[linkProfile]="false">
9791
</core-user-avatar>
9892
<div class="addon-mod-forum-discussion-author">
9993
<span *ngIf="discussion.userfullname">{{discussion.userfullname}}</span>
@@ -136,6 +130,11 @@
136130
</ion-col>
137131
</ion-row>
138132
</ion-label>
133+
<ion-button *ngIf="canPin || discussion.canlock || discussion.canfavourite" fill="clear"
134+
[attr.aria-label]="('core.displayoptions' | translate)" (click)="showOptionsMenu($event, discussion)" slot="end">
135+
<ion-icon name="ellipsis-vertical" slot="icon-only" aria-hidden="true">
136+
</ion-icon>
137+
</ion-button>
139138
</ion-item>
140139

141140
<core-infinite-loading [enabled]="discussions && discussions.loaded && !discussions.completed" [error]="fetchFailed"

src/addons/mod/forum/components/index/index.scss

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
}
88

99
.addon-mod-forum-discussion.item {
10-
1110
ion-label {
1211
margin-top: 4px;
1312

@@ -35,21 +34,30 @@
3534
@include margin(0, 8px, 0, 0);
3635
}
3736

38-
.addon-mod-forum-discussion-title,
3937
.addon-mod-forum-discussion-info {
4038
display: flex;
4139
align-items: center;
4240
}
4341

44-
.addon-mod-forum-discussion-title .item-heading,
4542
.addon-mod-forum-discussion-info .addon-mod-forum-discussion-author {
4643
flex-grow: 1;
4744
}
4845

46+
.addon-mod-forum-discussion-title {
47+
@include margin-horizontal(null, 8px);
48+
line-height: 18px;
49+
}
50+
51+
4952
.addon-mod-forum-discussion-more-info.ios {
5053
font-size: 0.9rem;
5154
}
5255

56+
ion-button {
57+
position: absolute;
58+
@include position (4px, 8px, null, null);
59+
}
60+
5361
}
5462

5563
.core-group-selector {

src/core/features/editor/components/rich-text-editor/core-editor-rich-text-editor.html

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,79 +15,80 @@
1515
</div>
1616

1717
<div #toolbar class="core-rte-toolbar" [class.toolbar-hidden]="toolbarHidden">
18-
<button *ngIf="toolbarArrows" class="toolbar-arrow" [class.toolbar-arrow-hidden]="toolbarPrevHidden" (click)="toolbarPrev($event)"
18+
<button *ngIf="toolbarArrows" class="toolbar-arrow" [attr.disabled]="toolbarPrevHidden ? 'true' : null" (click)="toolbarPrev($event)"
1919
(keyup)="toolbarPrev($event)" (mousedown)="downAction($event)" (keydown)="downAction($event)"
20-
[attr.aria-label]="'core.previous' | translate">
20+
[attr.aria-label]="'core.previous' | translate" [tabindex]="toolbarPrevHidden ? -1 : 0">
2121
<ion-icon name="fas-chevron-left" aria-hidden="true"></ion-icon>
2222
</button>
2323
<ion-slides [options]="slidesOpts" [dir]="direction" (ionSlideDidChange)="updateToolbarArrows()">
2424
<!-- https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand -->
2525
<ion-slide>
2626
<button [disabled]="!rteEnabled" [attr.aria-pressed]="toolbarStyles.strong" [title]="'core.editor.bold' | translate"
2727
(click)="buttonAction($event, 'bold', 'strong')" (keyup)="buttonAction($event, 'bold', 'strong')"
28-
(mousedown)="downAction($event)" (keydown)="downAction($event)">
28+
(mousedown)="downAction($event)" (keydown)="downAction($event)" tabindex="0">
2929
<ion-icon name="fas-bold" aria-hidden="true"></ion-icon>
3030
</button>
3131
</ion-slide>
3232
<ion-slide>
3333
<button [disabled]="!rteEnabled" [attr.aria-pressed]="toolbarStyles.em" [title]="'core.editor.italic' | translate"
3434
(click)="buttonAction($event, 'italic', 'em')" (keyup)="buttonAction($event, 'italic', 'em')"
35-
(mousedown)="downAction($event)" (keydown)="downAction($event)">
35+
(mousedown)="downAction($event)" (keydown)="downAction($event)" tabindex="0">
3636
<ion-icon name="fas-italic" aria-hidden="true"></ion-icon>
3737
</button>
3838
</ion-slide>
3939
<ion-slide>
4040
<button [disabled]="!rteEnabled" [attr.aria-pressed]="toolbarStyles.u" [title]="'core.editor.underline' | translate"
4141
(click)="buttonAction($event, 'underline', 'u')" (keyup)="buttonAction($event, 'underline', 'u')"
42-
(mousedown)="downAction($event)" (keydown)="downAction($event)">
42+
(mousedown)="downAction($event)" (keydown)="downAction($event)" tabindex="0">
4343
<ion-icon name="fas-underline" aria-hidden="true"></ion-icon>
4444
</button>
4545
</ion-slide>
4646
<ion-slide>
4747
<button [disabled]="!rteEnabled" [attr.aria-pressed]="toolbarStyles.strike" [title]="'core.editor.strike' | translate"
4848
(click)="buttonAction($event, 'strikethrough', 'strike')" (keyup)="buttonAction($event, 'strikethrough', 'strike')"
49-
(mousedown)="downAction($event)" (keydown)="downAction($event)">
49+
(mousedown)="downAction($event)" (keydown)="downAction($event)" tabindex="0">
5050
<ion-icon name="fas-strikethrough" aria-hidden="true"></ion-icon>
5151
</button>
5252
</ion-slide>
5353
<ion-slide>
5454
<button [disabled]="!rteEnabled" [attr.aria-pressed]="toolbarStyles.p" [title]="'core.editor.p' | translate"
5555
(click)="buttonAction($event, 'p', 'block')" (keyup)="buttonAction($event, 'p', 'block')" (mousedown)="downAction($event)"
56-
(keydown)="downAction($event)">
56+
(keydown)="downAction($event)" tabindex="0">
5757
<ion-icon name="fas-paragraph" aria-hidden="true"></ion-icon>
5858
</button>
5959
</ion-slide>
6060
<ion-slide>
6161
<button [disabled]="!rteEnabled" [attr.aria-pressed]="toolbarStyles.h3" [title]="'core.editor.h3' | translate"
6262
(click)="buttonAction($event, 'h3', 'block')" (keyup)="buttonAction($event, 'h3', 'block')" (mousedown)="downAction($event)"
63-
(keydown)="downAction($event)">
63+
(keydown)="downAction($event)" tabindex="0">
6464
<ion-icon name="fas-heading" aria-hidden="true"></ion-icon><span aria-hidden="true">3</span>
6565
</button>
6666
</ion-slide>
6767
<ion-slide>
6868
<button [disabled]="!rteEnabled" [attr.aria-pressed]="toolbarStyles.h4" [title]="'core.editor.h4' | translate"
6969
(click)="buttonAction($event, 'h4', 'block')" (keyup)="buttonAction($event, 'h4', 'block')" (mousedown)="downAction($event)"
70-
(keydown)="downAction($event)">
70+
(keydown)="downAction($event)" tabindex="0">
7171
<ion-icon name="fas-heading" aria-hidden="true"></ion-icon><span aria-hidden="true">4</span>
7272
</button>
7373
</ion-slide>
7474
<ion-slide>
7575
<button [disabled]="!rteEnabled" [attr.aria-pressed]="toolbarStyles.h5" [title]="'core.editor.h5' | translate"
7676
(click)="buttonAction($event, 'h5', 'block')" (keyup)="buttonAction($event, 'h5', 'block')" (mousedown)="downAction($event)"
77-
(keydown)="downAction($event)">
77+
(keydown)="downAction($event)" tabindex="0">
7878
<ion-icon name="fas-heading" aria-hidden="true"></ion-icon><span aria-hidden="true">5</span>
7979
</button>
8080
</ion-slide>
8181
<ion-slide>
8282
<button [disabled]="!rteEnabled" [attr.aria-pressed]="toolbarStyles.ul" [title]="'core.editor.unorderedlist' | translate"
83-
(click)="buttonAction($event, 'insertUnorderedList')" (mousedown)="downAction($event)" (keydown)="downAction($event)">
83+
(click)="buttonAction($event, 'insertUnorderedList')" (mousedown)="downAction($event)" (keydown)="downAction($event)"
84+
tabindex="0">
8485
<ion-icon name="fas-list-ul" aria-hidden="true"></ion-icon>
8586
</button>
8687
</ion-slide>
8788
<ion-slide>
8889
<button [disabled]="!rteEnabled" [attr.aria-pressed]="toolbarStyles.ol" [title]="'core.editor.orderedlist' | translate"
8990
(click)="buttonAction($event, 'insertOrderedList')" (keyup)="buttonAction($event, 'insertOrderedList')"
90-
(mousedown)="downAction($event)" (keydown)="downAction($event)">
91+
(mousedown)="downAction($event)" (keydown)="downAction($event)" tabindex="0">
9192
<ion-icon name="fas-list-ol" aria-hidden="true"></ion-icon>
9293
</button>
9394
</ion-slide>
@@ -105,20 +106,20 @@
105106
</ion-slide>
106107
<ion-slide>
107108
<button [attr.aria-pressed]="!rteEnabled" [title]="'core.editor.toggle' | translate" (click)="toggleEditor($event)"
108-
(keyup)="toggleEditor($event)" (mousedown)="downAction($event)" (keydown)="downAction($event)">
109+
(keyup)="toggleEditor($event)" (mousedown)="downAction($event)" (keydown)="downAction($event)" tabindex="0">
109110
<ion-icon name="fas-code" aria-hidden="true"></ion-icon>
110111
</button>
111112
</ion-slide>
112113
<ion-slide *ngIf="isPhone">
113114
<button [title]="'core.editor.hidetoolbar' | translate" (click)="hideToolbar($event, true)" (keyup)="hideToolbar($event, true)"
114-
(mousedown)="downAction($event)" (keydown)="downAction($event)">
115+
(mousedown)="downAction($event)" (keydown)="downAction($event)" tabindex="0">
115116
<ion-icon name="fas-times" aria-hidden="true"></ion-icon>
116117
</button>
117118
</ion-slide>
118119
</ion-slides>
119-
<button *ngIf="toolbarArrows" class="toolbar-arrow" [class.toolbar-arrow-hidden]="toolbarNextHidden"
120+
<button *ngIf="toolbarArrows" class="toolbar-arrow" [attr.disabled]="toolbarNextHidden ? 'true' : null"
120121
[attr.aria-label]="'core.next' | translate" (click)="toolbarNext($event)" (keyup)="toolbarNext($event)"
121-
(mousedown)="downAction($event)" (keydown)="downAction($event)">
122+
(mousedown)="downAction($event)" (keydown)="downAction($event)" [tabindex]="toolbarNextHidden ? -1 : 0">
122123
<ion-icon name="fas-chevron-right" aria-hidden="true"></ion-icon>
123124
</button>
124125
</div>

src/core/features/editor/components/rich-text-editor/rich-text-editor.scss

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,9 @@
149149
background-color: var(--toobar-background);
150150
}
151151

152-
&.toolbar-arrow-hidden {
153-
opacity: 0;
152+
&[disabled],
153+
&:disabled {
154+
opacity: .5;
154155
}
155156
}
156157
}

0 commit comments

Comments
 (0)