{this.attrs.loading ? this.loadingItems().toArray() : this.mainItems().toArray()};
+ return (
+
+ {this.attrs.loading ? this.loadingItems().toArray() : this.mainItems().toArray()}
+
+ );
}
containerItems(): ItemList {
@@ -70,6 +76,14 @@ export default class PageStructure {
const items = new ItemList();
+ items.add(
+ 'skipToMainContent',
+ prepareSkipLinks()}>
+ {app.translator.trans('core.forum.index.skip_to_main_content')}
+ ,
+ 200
+ );
+
items.add('sidebar', (this.attrs.sidebar && this.attrs.sidebar()) || null, 100);
return items;
@@ -88,6 +102,10 @@ export default class PageStructure{this.content};
+ return (
+
+ {this.content}
+
+ );
}
}
diff --git a/framework/core/less/common/Avatar.less b/framework/core/less/common/Avatar.less
index 644fb735b..520c641f2 100644
--- a/framework/core/less/common/Avatar.less
+++ b/framework/core/less/common/Avatar.less
@@ -20,10 +20,6 @@
border-radius: 100%;
vertical-align: top;
}
-
- span& {
- cursor: default;
- }
}
.Avatar--size(@size) {
diff --git a/framework/core/less/common/scaffolding.less b/framework/core/less/common/scaffolding.less
index bfa02fa37..ee1bcb975 100644
--- a/framework/core/less/common/scaffolding.less
+++ b/framework/core/less/common/scaffolding.less
@@ -199,3 +199,13 @@ blockquote ol:last-child {
.text-colored {
color: var(--color);
}
+
+.sr-only-focusable-custom:focus {
+ clip: unset;
+ width: auto;
+ height: auto;
+ border-width: medium;
+ background: #000;
+ color: #fff;
+ z-index: 100;
+}
diff --git a/framework/core/less/common/variables.less b/framework/core/less/common/variables.less
index 259b5ba35..63f8a6bee 100644
--- a/framework/core/less/common/variables.less
+++ b/framework/core/less/common/variables.less
@@ -136,6 +136,9 @@
@screen-phone-max: (@screen-tablet - 0.02);
+@screen-small-phone: 320px;
+@screen-small-phone-max: (@screen-small-phone + 0.02);
+
@screen-tablet: 768px;
@screen-tablet-max: (@screen-desktop - 0.02);
@@ -148,6 +151,7 @@
@screen-desktop-xxxl: 3000px;
@phone: ~"(max-width: @{screen-phone-max})";
+@small-phone: ~"(max-width: @{screen-small-phone-max})";
@tablet: ~"(min-width: @{screen-tablet}) and (max-width: @{screen-tablet-max})";
@desktop: ~"(min-width: @{screen-desktop}) and (max-width: @{screen-desktop-max})";
@desktop-hd: ~"(min-width: @{screen-desktop-hd})";
diff --git a/framework/core/less/forum/AvatarEditor.less b/framework/core/less/forum/AvatarEditor.less
index af78b1a3a..f038bd70e 100644
--- a/framework/core/less/forum/AvatarEditor.less
+++ b/framework/core/less/forum/AvatarEditor.less
@@ -15,6 +15,8 @@
inset: 0;
border-radius: 100%;
background: rgba(0, 0, 0, 0.6);
+ color: #fff;
+ cursor: pointer;
text-align: center;
text-decoration: none;
border: 0;
@@ -23,6 +25,7 @@
opacity: 0.7;
}
&:hover .Dropdown-toggle,
+ .Dropdown-toggle:focus,
&.open .Dropdown-toggle,
&.loading .Dropdown-toggle,
&.dragover .Dropdown-toggle {
diff --git a/framework/core/less/forum/DiscussionListItem.less b/framework/core/less/forum/DiscussionListItem.less
index 599b752ef..a2eddee79 100644
--- a/framework/core/less/forum/DiscussionListItem.less
+++ b/framework/core/less/forum/DiscussionListItem.less
@@ -306,7 +306,7 @@
display: none;
}
- &:hover {
+ &:hover, &:focus {
._checkmark {
display: block;
}
@@ -317,3 +317,9 @@
}
}
}
+
+@media @small-phone {
+ .DiscussionListItem-info {
+ max-width: 160px;
+ }
+}
diff --git a/framework/core/locale/core.yml b/framework/core/locale/core.yml
index 856dedd76..28d7da350 100644
--- a/framework/core/locale/core.yml
+++ b/framework/core/locale/core.yml
@@ -459,6 +459,7 @@ core:
empty_text: It looks as though there are no discussions here.
load_more_button: => core.ref.load_more
replied_text: "{username} replied {ago}"
+ skip_discussion_list_pane: Skip the discussion list pane
started_text: "{username} started {ago}"
total_replies_a11y_label: "{count, plural, one {# reply} other {# replies}}"
unread_replies_a11y_label: "{count, plural, one {# unread reply} other {# unread replies}}. Mark unread {count, plural, one {reply} other {replies}} as read."
@@ -496,6 +497,7 @@ core:
meta_title_text: => core.ref.all_discussions
refresh_tooltip: => core.ref.refresh
start_discussion_button: => core.ref.start_a_discussion
+ skip_to_main_content: Skip to main content
toggle_sidenav_dropdown_accessible_label: Toggle navigation dropdown menu
# These translations are used by the sorting control above the discussion list.
@@ -911,6 +913,10 @@ core:
next_page_button: => core.ref.next_page
previous_page_button: => core.ref.previous_page
+ # Translations in this namespace are displayed by the basic HTML forum layout.
+ layout:
+ skip_to_content: Skip to content
+
# Translations in this namespace are displayed by the Log Out confirmation interface.
log_out:
log_out_button: => core.ref.log_out
diff --git a/framework/core/views/frontend/admin.blade.php b/framework/core/views/frontend/admin.blade.php
index d4bd21084..0ffcb045d 100644
--- a/framework/core/views/frontend/admin.blade.php
+++ b/framework/core/views/frontend/admin.blade.php
@@ -5,6 +5,7 @@