nodebb-theme-harmony 1.2.13 → 1.2.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/library.js CHANGED
@@ -186,3 +186,8 @@ library.filterMiddlewareRenderHeader = async function (hookData) {
186
186
  return hookData;
187
187
  };
188
188
 
189
+ library.filterTeasersConfigureStripTags = function (hookData) {
190
+ // teasers have a stretched-link to go to last post, the anchors in them are not clickable
191
+ hookData.tags.push('a');
192
+ return hookData;
193
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodebb-theme-harmony",
3
- "version": "1.2.13",
3
+ "version": "1.2.15",
4
4
  "nbbpm": {
5
5
  "compatibility": "^3.5.0"
6
6
  },
package/plugin.json CHANGED
@@ -8,7 +8,8 @@
8
8
  { "hook": "filter:settings.get", "method": "getAdminSettings"},
9
9
  { "hook": "filter:user.saveSettings", "method": "saveUserSettings" },
10
10
  { "hook": "filter:user.profileMenu", "method": "addProfileItem" },
11
- { "hook": "filter:middleware.renderHeader", "method": "filterMiddlewareRenderHeader" }
11
+ { "hook": "filter:middleware.renderHeader", "method": "filterMiddlewareRenderHeader" },
12
+ { "hook": "filter:teasers.configureStripTags", "method": "filterTeasersConfigureStripTags"}
12
13
  ],
13
14
  "scripts": [
14
15
  "public/harmony.js"
package/scss/common.scss CHANGED
@@ -119,4 +119,11 @@ body:not(.page-user) {
119
119
  max-height: 500px;
120
120
  width: auto;
121
121
  }
122
+ }
123
+
124
+ [component="chat/message/body"],
125
+ [component="post/content"],
126
+ [component="topic/teaser"] .post-content,
127
+ [component="category/posts"] .post-content {
128
+ a { text-decoration: underline;}
122
129
  }
@@ -4,9 +4,7 @@
4
4
  <div component="category/posts" class="ps-2 text-xs d-flex flex-column h-100 gap-1">
5
5
  <div class="text-nowrap text-truncate">
6
6
  <a class="text-decoration-none" href="{config.relative_path}/user/{./user.userslug}">{buildAvatar(posts.user, "18px", true, "avatar-tooltip")}</a>
7
- <a class="permalink text-muted" href="{config.relative_path}/topic/{./topic.slug}{{{ if ./index }}}/{./index}{{{ end }}}">
8
- <span class="timeago text-xs" title="{../timestampISO}"></span>
9
- </a>
7
+ <a class="permalink text-muted timeago text-xs" href="{config.relative_path}/topic/{./topic.slug}{{{ if ./index }}}/{./index}{{{ end }}}" title="{./timestampISO}" aria-label="[[global:lastpost]]"></a>
10
8
  </div>
11
9
  <div class="post-content text-xs text-break line-clamp-sm-2 lh-sm position-relative flex-fill">
12
10
  <a class="stretched-link" href="{config.relative_path}/topic/{./topic.slug}{{{ if ./index }}}/{./index}{{{ end }}}" aria-label="[[global:lastpost]]"></a>
@@ -3,8 +3,8 @@
3
3
  <div class="col-12 d-flex border-bottom pb-3 {{{ if config.theme.centerHeaderElements }}}justify-content-center{{{ end }}}">
4
4
  <div component="brand/wrapper" class="d-flex align-items-center gap-3 p-2 rounded-1 align-content-stretch ">
5
5
  {{{ if brand:logo }}}
6
- <a component="brand/anchor" href="{{{ if brand:logo:url }}}{brand:logo:url}{{{ else }}}{relative_path}/{{{ end }}}">
7
- <img component="brand/logo" alt="{brand:logo:alt}" class="{brand:logo:display}" src="{brand:logo}?{config.cache-buster}" />
6
+ <a component="brand/anchor" href="{{{ if brand:logo:url }}}{brand:logo:url}{{{ else }}}{relative_path}/{{{ end }}}" title="[[global:header.brand-logo]]">
7
+ <img component="brand/logo" alt="{{{ if brand:logo:alt }}}{brand:logo:alt}{{{ else }}}[[global:header.brand-logo]]{{{ end }}}" class="{brand:logo:display}" src="{brand:logo}?{config.cache-buster}" />
8
8
  </a>
9
9
  {{{ end }}}
10
10
 
@@ -1,6 +1,6 @@
1
1
  <div component="pagination" class="pagination-container mt-3{{{ if !pagination.pages.length }}} hidden{{{ end }}}">
2
2
  <ul class="pagination pagination-sm gap-1 hidden-xs hidden-sm justify-content-center">
3
- <li class="page-item previous float-start{{{ if !pagination.prev.active }}} disabled{{{ end }}}">
3
+ <li class="page-item previous {{{ if !pagination.prev.active }}} disabled{{{ end }}}">
4
4
  <a class="page-link rounded fw-secondary px-3" href="?{pagination.prev.qs}" data-page="{pagination.prev.page}"><i class="fa fa-chevron-left"></i> </a>
5
5
  </li>
6
6
 
@@ -16,7 +16,7 @@
16
16
  {{{ end }}}
17
17
  {{{end}}}
18
18
 
19
- <li class="page-item next float-end {{{ if !pagination.next.active }}} disabled{{{ end }}}">
19
+ <li class="page-item next {{{ if !pagination.next.active }}} disabled{{{ end }}}">
20
20
  <a class="page-link rounded fw-secondary px-3" href="?{pagination.next.qs}" data-page="{pagination.next.page}"> <i class="fa fa-chevron-right"></i></a>
21
21
  </li>
22
22
  </ul>
@@ -1,7 +1,7 @@
1
1
  <div class="{{{ if config.theme.stickyToolbar }}}sticky-tools{{{ end }}}">
2
2
  <nav class="d-flex flex-nowrap my-2 p-0 border-0 rounded topic-main-buttons">
3
3
  <div class="d-flex flex-row p-2 text-bg-light border rounded w-100 align-items-center">
4
- <ul class="d-flex list-unstyled me-auto mb-0 gap-2 align-items-center flex-wrap">
4
+ <div class="d-flex list-unstyled me-auto mb-0 gap-2 align-items-center flex-wrap">
5
5
  {{{ if loggedIn }}}
6
6
  <button component="topic/mark-unread" class="btn-ghost-sm ff-secondary d-flex gap-2 align-items-center">
7
7
  <i class="fa fa-fw fa-inbox text-primary"></i>
@@ -22,7 +22,7 @@
22
22
  <!-- IMPORT partials/topic/browsing-users.tpl -->
23
23
  </div>
24
24
  {{{ end }}}
25
- </ul>
25
+ </div>
26
26
  <!-- IMPORT partials/topic/reply-button.tpl -->
27
27
  </div>
28
28
  </nav>
@@ -16,11 +16,11 @@
16
16
  </div>
17
17
 
18
18
  <div class="d-flex gap-1 input-container">
19
- <input autocomplete="off" type="text" class="form-control" placeholder="[[global:search]]" name="query" value="">
19
+ <input autocomplete="off" type="text" class="form-control" placeholder="[[global:search]]" name="query" value="" aria-label="[[search:type-to-search]]">
20
20
 
21
- <div class="nav-link d-flex justify-content-center align-items-center advanced-search-link">
21
+ <a class="nav-link d-flex justify-content-center align-items-center advanced-search-link" href="{config.relative_path}/search" title="[[search:advanced-search]]">
22
22
  <i class="fa fa-gears fa-fw text-muted"></i>
23
- </div>
23
+ </a>
24
24
  </div>
25
25
 
26
26
  <button type="submit" class="btn btn-outline-secondary hide">[[global:search]]</button>
@@ -8,11 +8,11 @@
8
8
  <form component="search/form" id="search-form" class="d-flex justify-content-end align-items-center" role="search" method="GET">
9
9
  <div component="search/fields" class="w-100" id="search-fields">
10
10
  <div class="d-flex gap-1">
11
- <input autocomplete="off" type="text" class="form-control" placeholder="[[global:search]]" name="query" value="">
11
+ <input autocomplete="off" type="text" class="form-control" placeholder="[[global:search]]" name="query" value="" aria-label="[[search:type-to-search]]">
12
12
 
13
- <div class="btn-ghost advanced-search-link">
13
+ <a class="btn-ghost advanced-search-link" href="{config.relative_path}/search" title="[[search:advanced-search]]">
14
14
  <i class="fa fa-gears fa-fw text-muted"></i>
15
- </div>
15
+ </a>
16
16
  </div>
17
17
 
18
18
  <div id="quick-search-container" class="quick-search-container d-block mt-2 hidden">
@@ -14,7 +14,7 @@
14
14
 
15
15
  <div class="unread d-inline-block position-absolute bottom-0">
16
16
  <div class="meta small position-absolute top-50 translate-middle-y text-nowrap fw-semibold ms-2">
17
- <a class="text-decoration-none" href="{url}"></a>
17
+ <a class="text-decoration-none" href="{url}" tabindex="-1" aria-disabled="true" aria-label="[[topic:unread-posts-link]]"></a>
18
18
  </div>
19
19
  </div>
20
20
  </div>
@@ -1,7 +1,7 @@
1
1
  <div class="{{{ if config.theme.stickyToolbar }}}sticky-tools{{{ end }}} mb-3">
2
2
  <nav class="topic-list-header d-flex flex-nowrap my-2 p-0 border-0 rounded">
3
3
  <div class="d-flex flex-row p-2 text-bg-light gap-1 border rounded w-100 align-items-center">
4
- <ul component="category/controls" class="d-flex list-unstyled me-auto mb-0 gap-2 align-items-start flex-wrap">
4
+ <div component="category/controls" class="d-flex me-auto mb-0 gap-2 align-items-start flex-wrap">
5
5
  {{{ if template.category }}}
6
6
  <!-- IMPORT partials/category/watch.tpl -->
7
7
  <!-- IMPORT partials/tags/filter-dropdown-left.tpl -->
@@ -27,13 +27,13 @@
27
27
  <!-- IMPORT partials/category/tools.tpl -->
28
28
 
29
29
  {{{ if (!feeds:disableRSS && rssFeedUrl) }}}
30
- <a class="btn-ghost-sm d-none d-lg-flex align-self-stretch" target="_blank" href="{rssFeedUrl}" itemprop="item"><i class="fa fa-rss text-primary"></i></a>
30
+ <a class="btn-ghost-sm d-none d-lg-flex align-self-stretch" target="_blank" href="{rssFeedUrl}" itemprop="item" title="[[global:rss-feed]]"><i class="fa fa-rss text-primary"></i></a>
31
31
  {{{ end }}}
32
32
 
33
33
  <a href="{config.relative_path}{{{ if template.category }}}{url}{{{ else }}}/{selectedFilter.url}{querystring}{{{ end }}}" class="btn btn-secondary fw-semibold position-absolute top-100 translate-middle-x start-50 mt-1 hide" style="--bs-btn-padding-y: .25rem; --bs-btn-padding-x: .5rem; --bs-btn-font-size: .75rem;" id="new-topics-alert">
34
34
  <i class="fa fa-fw fa-arrow-up"></i> [[recent:load-new-posts]]
35
35
  </a>
36
- </ul>
36
+ </div>
37
37
 
38
38
  <div class="d-flex gap-1 align-items-center">
39
39
  {{{ if template.category }}}
@@ -111,11 +111,10 @@
111
111
  {{{ if ./teaser.pid }}}
112
112
  <div class="ps-2">
113
113
  <a href="{config.relative_path}/user/{./teaser.user.userslug}" class="text-decoration-none">{buildAvatar(./teaser.user, "18px", true, "avatar-tooltip not-responsive")}</a>
114
- <a class="permalink text-muted timeago text-xs" href="{config.relative_path}/topic/{./slug}/{./teaser.index}" title="{./teaser.timestampISO}">
115
- </a>
114
+ <a class="permalink text-muted timeago text-xs" href="{config.relative_path}/topic/{./slug}/{./teaser.index}" title="{./teaser.timestampISO}" aria-label="[[global:lastpost]]"></a>
116
115
  </div>
117
116
  <div class="post-content text-xs ps-2 line-clamp-sm-2 lh-sm text-break position-relative flex-fill">
118
- <a class="stretched-link" href="{config.relative_path}/topic/{./slug}/{./teaser.index}"></a>
117
+ <a class="stretched-link" href="{config.relative_path}/topic/{./slug}/{./teaser.index}" aria-label="[[global:lastpost]]"></a>
119
118
  {./teaser.content}
120
119
  </div>
121
120
  {{{ end }}}