nodebb-theme-harmony 1.0.0-beta.3 → 1.0.0-beta.31

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.
Files changed (100) hide show
  1. package/languages/en-GB/harmony.json +1 -0
  2. package/library.js +10 -0
  3. package/package.json +1 -1
  4. package/public/harmony.js +50 -23
  5. package/scss/chats.scss +7 -2
  6. package/scss/common.scss +36 -4
  7. package/scss/harmony.scss +2 -0
  8. package/scss/mixins.scss +7 -3
  9. package/scss/modules/composer.scss +0 -4
  10. package/scss/modules/cover.scss +1 -11
  11. package/scss/modules/paginator.scss +24 -0
  12. package/scss/overrides.scss +2 -0
  13. package/scss/search.scss +8 -0
  14. package/scss/sidebar.scss +27 -2
  15. package/scss/topic.scss +22 -12
  16. package/templates/account/blocks.tpl +35 -41
  17. package/templates/account/categories.tpl +23 -30
  18. package/templates/account/consent.tpl +66 -10
  19. package/templates/account/edit/password.tpl +25 -30
  20. package/templates/account/edit/username.tpl +21 -26
  21. package/templates/account/edit.tpl +109 -116
  22. package/templates/account/followers.tpl +12 -19
  23. package/templates/account/following.tpl +12 -18
  24. package/templates/account/groups.tpl +12 -17
  25. package/templates/account/info.tpl +181 -204
  26. package/templates/account/posts.tpl +31 -36
  27. package/templates/account/profile.tpl +66 -73
  28. package/templates/account/sessions.tpl +8 -30
  29. package/templates/account/settings.tpl +193 -198
  30. package/templates/account/theme.tpl +20 -27
  31. package/templates/account/topics.tpl +33 -38
  32. package/templates/account/uploads.tpl +35 -40
  33. package/templates/categories.tpl +1 -1
  34. package/templates/category.tpl +10 -11
  35. package/templates/chats.tpl +1 -1
  36. package/templates/flags/detail.tpl +0 -1
  37. package/templates/flags/list.tpl +1 -1
  38. package/templates/groups/details.tpl +20 -17
  39. package/templates/groups/members.tpl +0 -2
  40. package/templates/partials/account/footer.tpl +3 -0
  41. package/templates/partials/account/header.tpl +78 -81
  42. package/templates/partials/account/session-list.tpl +18 -0
  43. package/templates/partials/categories/item.tpl +11 -14
  44. package/templates/partials/categories/lastpost.tpl +2 -2
  45. package/templates/partials/{category-filter-content.tpl → category/filter-dropdown-content.tpl} +6 -4
  46. package/templates/partials/{category-selector-content.tpl → category/selector-dropdown-content.tpl} +1 -1
  47. package/templates/partials/category/subcategory.tpl +1 -1
  48. package/templates/partials/category/tags.tpl +0 -2
  49. package/templates/partials/category/watch.tpl +28 -4
  50. package/templates/partials/chats/message-window.tpl +3 -2
  51. package/templates/partials/chats/message.tpl +1 -1
  52. package/templates/partials/cookie-consent.tpl +5 -5
  53. package/templates/partials/flags/filters.tpl +1 -1
  54. package/templates/partials/groups/admin.tpl +1 -1
  55. package/templates/partials/groups/badge.tpl +1 -1
  56. package/templates/partials/groups/sidebar-left.tpl +1 -1
  57. package/templates/partials/mobile-footer.tpl +70 -62
  58. package/templates/partials/paginator.tpl +9 -9
  59. package/templates/partials/post_bar.tpl +5 -4
  60. package/templates/partials/posts_list_item.tpl +5 -5
  61. package/templates/partials/quick-search-results.tpl +1 -1
  62. package/templates/partials/search-filters.tpl +184 -0
  63. package/templates/partials/search-results.tpl +28 -32
  64. package/templates/partials/sidebar/chats.tpl +6 -3
  65. package/templates/partials/sidebar/drafts.tpl +5 -5
  66. package/templates/partials/sidebar/logged-in-menu.tpl +5 -5
  67. package/templates/partials/sidebar/notifications.tpl +4 -4
  68. package/templates/partials/sidebar/search-mobile.tpl +1 -1
  69. package/templates/partials/sidebar/search.tpl +1 -1
  70. package/templates/partials/sidebar/user-menu.tpl +1 -1
  71. package/templates/partials/sidebar-left.tpl +4 -1
  72. package/templates/partials/skin-switcher.tpl +2 -2
  73. package/templates/partials/tags_list.tpl +6 -4
  74. package/templates/partials/topic/browsing-users.tpl +0 -2
  75. package/templates/partials/topic/event.tpl +1 -1
  76. package/templates/partials/topic/navigation-post.tpl +5 -9
  77. package/templates/partials/topic/navigator-mobile.tpl +43 -0
  78. package/templates/partials/topic/post-editor.tpl +0 -2
  79. package/templates/partials/topic/post-menu-list.tpl +0 -2
  80. package/templates/partials/topic/post.tpl +19 -3
  81. package/templates/partials/topic/quickreply.tpl +3 -3
  82. package/templates/partials/topic/topic-menu-list.tpl +0 -2
  83. package/templates/partials/topic/watch.tpl +28 -4
  84. package/templates/partials/topic-list-bar.tpl +6 -6
  85. package/templates/partials/topics_list.tpl +46 -45
  86. package/templates/partials/users/filter-dropdown-content.tpl +20 -0
  87. package/templates/popular.tpl +1 -1
  88. package/templates/post-queue.tpl +112 -0
  89. package/templates/recent.tpl +1 -1
  90. package/templates/search.tpl +39 -177
  91. package/templates/top.tpl +1 -1
  92. package/templates/topic.tpl +2 -2
  93. package/templates/unread.tpl +1 -1
  94. package/templates/modules/usercard.tpl +0 -39
  95. package/templates/partials/acceptTos.tpl +0 -11
  96. package/templates/partials/category-filter-right.tpl +0 -5
  97. package/templates/partials/category-filter.tpl +0 -3
  98. package/templates/partials/category-selector-right.tpl +0 -5
  99. package/templates/partials/category-selector.tpl +0 -3
  100. package/templates/partials/slideout-menu.tpl +0 -6
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "skins": "Skins",
3
3
  "collapse": "Collapse",
4
+ "toggle-sidebars": "Toggle sidebars",
4
5
  "login-register-to-search": "Login or register to search.",
5
6
  "settings.title": "Theme settings",
6
7
  "settings.enableQuickReply": "Enable quick reply",
package/library.js CHANGED
@@ -77,6 +77,16 @@ library.defineWidgetAreas = async function (areas) {
77
77
  });
78
78
 
79
79
  areas = areas.concat([
80
+ {
81
+ name: 'Main post header',
82
+ template: 'topic.tpl',
83
+ location: 'mainpost-header',
84
+ },
85
+ {
86
+ name: 'Main post footer',
87
+ template: 'topic.tpl',
88
+ location: 'mainpost-footer',
89
+ },
80
90
  {
81
91
  name: 'Sidebar Footer',
82
92
  template: 'global',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodebb-theme-harmony",
3
- "version": "1.0.0-beta.3",
3
+ "version": "1.0.0-beta.31",
4
4
  "nbbpm": {
5
5
  "compatibility": "^3.0.0"
6
6
  },
package/public/harmony.js CHANGED
@@ -5,6 +5,8 @@ $(document).ready(function () {
5
5
  setupMobileMenu();
6
6
  setupSearch();
7
7
  setupDrafts();
8
+ handleMobileNavigator();
9
+ setupNavTooltips();
8
10
 
9
11
  $('[component="skinSwitcher"]').on('click', '.dropdown-item', function () {
10
12
  const skin = $(this).attr('data-value');
@@ -36,7 +38,7 @@ $(document).ready(function () {
36
38
  });
37
39
 
38
40
  function setupMobileMenu() {
39
- require(['api'], function (api) {
41
+ require(['hooks', 'api', 'navigator'], function (hooks, api, navigator) {
40
42
  $('[component="sidebar/toggle"]').on('click', async function () {
41
43
  const sidebarEl = $('.sidebar');
42
44
  sidebarEl.toggleClass('open');
@@ -48,6 +50,9 @@ $(document).ready(function () {
48
50
  });
49
51
  }
50
52
  $(window).trigger('action:sidebar.toggle');
53
+ if (ajaxify.data.template.topic) {
54
+ hooks.fire('action:navigator.update', { newIndex: navigator.getIndex() });
55
+ }
51
56
  });
52
57
  });
53
58
  }
@@ -56,32 +61,17 @@ $(document).ready(function () {
56
61
  $('[component="sidebar/search"]').on('shown.bs.dropdown', function () {
57
62
  $(this).find('[component="search/fields"] input[name="query"]').trigger('focus');
58
63
  });
59
-
60
- function resizeResults(hookData) {
61
- if (hookData && hookData.data && !hookData.data.posts.length) {
62
- $('.bottombar .quick-search-results').css({ height: 'initial' });
63
- return;
64
- }
65
- const dropdown = $('.bottombar .search-dropdown');
66
- const padY = dropdown.innerHeight() - dropdown.height();
67
- const input = dropdown.find('.input-container').outerHeight(true);
68
- const showMore = dropdown.find('.show-more-container').outerHeight(true);
69
- const newHeight = Math.max(
70
- 150,
71
- $(window).height() - (input + (showMore || 0) + (padY * 2) + 30)
72
- );
73
- $('.bottombar .quick-search-results').height(newHeight);
74
- }
75
- require(['hooks'], function (hooks) {
76
- $(window).on('resize', resizeResults);
77
- hooks.on('action:search.quick.complete', resizeResults);
78
- });
79
64
  }
80
65
 
81
66
  function setupDrafts() {
82
67
  require(['composer/drafts'], function (drafts) {
68
+ const draftsEl = $('[component="sidebar/drafts"]');
69
+
83
70
  function updateBadgeCount() {
84
71
  const count = drafts.getAvailableCount();
72
+ if (count > 0) {
73
+ draftsEl.removeClass('hidden');
74
+ }
85
75
  $('[component="drafts/count"]').toggleClass('hidden', count <= 0).text(count);
86
76
  }
87
77
 
@@ -96,7 +86,9 @@ $(document).ready(function () {
96
86
  }
97
87
  draftItems.reverse().forEach((draft) => {
98
88
  if (draft) {
99
- draft.text = draft.text.replace(/(?:\r\n|\r|\n)/g, '<br>');
89
+ draft.text = utils.escapeHTML(
90
+ draft.text.replace(/(?:\r\n|\r|\n)/g, '<br>')
91
+ );
100
92
  }
101
93
  });
102
94
 
@@ -105,7 +97,7 @@ $(document).ready(function () {
105
97
  draftListEl.append(html).find('.timeago').timeago();
106
98
  }
107
99
 
108
- const draftsEl = $('[component="sidebar/drafts"]');
100
+
109
101
  draftsEl.on('shown.bs.dropdown', renderDraftList);
110
102
 
111
103
  draftsEl.on('click', '[component="drafts/open"]', function () {
@@ -123,6 +115,7 @@ $(document).ready(function () {
123
115
  updateBadgeCount();
124
116
  });
125
117
  }
118
+
126
119
  function setupNProgress() {
127
120
  require(['nprogress'], function (NProgress) {
128
121
  window.nprogress = NProgress;
@@ -137,4 +130,38 @@ $(document).ready(function () {
137
130
  }
138
131
  });
139
132
  }
133
+
134
+ function handleMobileNavigator() {
135
+ const paginationBlockEl = $('.pagination-block');
136
+ require(['hooks'], function (hooks) {
137
+ hooks.on('action:ajaxify.end', function () {
138
+ paginationBlockEl.find('.dropdown-menu.show').removeClass('show');
139
+ });
140
+ hooks.on('filter:navigator.scroll', function (hookData) {
141
+ paginationBlockEl.find('.dropdown-menu.show').removeClass('show');
142
+ return hookData;
143
+ });
144
+ });
145
+ }
146
+
147
+ function setupNavTooltips() {
148
+ // remove title from user icon in sidebar to prevent double tooltip
149
+ $('.sidebar [component="header/avatar"] .avatar').removeAttr('title');
150
+ const tooltipEls = $('.sidebar [title]');
151
+ tooltipEls.tooltip({
152
+ trigger: 'manual',
153
+ animation: false,
154
+ });
155
+
156
+ tooltipEls.on('mouseenter', function (ev) {
157
+ const target = $(ev.target);
158
+ const isDropdown = target.hasClass('dropdown-menu') || !!target.parents('.dropdown-menu').length;
159
+ if (!$('.sidebar').hasClass('open') && !isDropdown) {
160
+ $(this).tooltip('show');
161
+ }
162
+ });
163
+ tooltipEls.on('click mouseleave', function () {
164
+ $(this).tooltip('hide');
165
+ });
166
+ }
140
167
  });
package/scss/chats.scss CHANGED
@@ -6,8 +6,10 @@
6
6
  body.page-user-chats {
7
7
  overflow: hidden;
8
8
  }
9
-
10
- .expanded-chat, .chat-modal {
9
+ [component="chat/nav-wrapper"] {
10
+ width: 300px;
11
+ }
12
+ .expanded-chat {
11
13
  // no taskbar so hide minimize button
12
14
  [data-action="minimize"] {
13
15
  display: none!important;
@@ -38,6 +40,9 @@ body.page-user-chats {
38
40
 
39
41
  /* Mobile handling of chat page */
40
42
  @include media-breakpoint-down(md) {
43
+ [component="chat/nav-wrapper"] {
44
+ width: 100%;
45
+ }
41
46
  .page-user-chats {
42
47
  .chats-full {
43
48
  padding-bottom: 8rem!important;
package/scss/common.scss CHANGED
@@ -14,8 +14,33 @@ body {
14
14
  .text-sm { font-size: 0.875rem!important; } // 14px
15
15
  .text-xs { font-size: 0.75rem!important; } // 12px
16
16
 
17
- .btn-link:hover {
18
- text-decoration: none;
17
+ .caret {
18
+ &::after {
19
+ border: none;
20
+ font-family: "FontAwesome";
21
+ content: "\f078";
22
+ color: tint-color($primary, 40%);
23
+ }
24
+ }
25
+
26
+ body:not(.page-user) {
27
+ #content {
28
+ transition: opacity 150ms linear;
29
+ &.ajaxifying {
30
+ -moz-opacity: 0;
31
+ opacity: 0;
32
+ }
33
+ }
34
+ }
35
+ .page-user {
36
+ #content {
37
+ transition: opacity 150ms linear;
38
+ &.ajaxifying .account-content {
39
+ transition: opacity 150ms linear;
40
+ -moz-opacity: 0;
41
+ opacity: 0;
42
+ }
43
+ }
19
44
  }
20
45
 
21
46
  .sticky-tools {
@@ -35,6 +60,13 @@ body {
35
60
  }
36
61
  }
37
62
 
63
+ .btn-link {
64
+ &:hover, &.active {
65
+ background-color: $btn-ghost-hover-color;
66
+ text-decoration: none;
67
+ }
68
+ }
69
+
38
70
  @mixin btn-ghost-base {
39
71
  display: flex;
40
72
  align-items: center;
@@ -48,10 +80,10 @@ body {
48
80
  text-align: left;
49
81
  --bs-text-opacity: 1;
50
82
  color: inherit !important;
51
- $hover-color: mix($light, $dark, 90);
83
+
52
84
  cursor: pointer;
53
85
  &:hover, &.active {
54
- background-color: $hover-color;
86
+ background-color: $btn-ghost-hover-color;
55
87
  text-decoration: none;
56
88
  }
57
89
  }
package/scss/harmony.scss CHANGED
@@ -9,6 +9,7 @@
9
9
  @import "status";
10
10
  @import "account";
11
11
  @import "groups";
12
+ @import "search";
12
13
  @import "modals";
13
14
 
14
15
  @import "modules/breadcrumbs";
@@ -20,5 +21,6 @@
20
21
  @import "modules/topics-list";
21
22
  @import "modules/cover";
22
23
  @import "modules/nprogress";
24
+ @import "modules/paginator";
23
25
 
24
26
  @import "skins";
package/scss/mixins.scss CHANGED
@@ -124,9 +124,13 @@
124
124
  display: none;
125
125
  }
126
126
 
127
- .timeline-event {
128
- .timeline-text.timeago {
129
- display: none;
127
+
128
+ [component="topic/event"], [component="topic/necro-post"] {
129
+ &.timeline-event {
130
+ .timeline-text {
131
+ line-height: 16px;
132
+ font-size: 0.75rem;
133
+ }
130
134
  }
131
135
  }
132
136
  }
@@ -6,10 +6,6 @@ $composer-bg: $body-bg !default;
6
6
  background-color: $bg !important;
7
7
  }
8
8
 
9
- .composer {
10
- z-index: 3 !important;
11
- }
12
-
13
9
  .skin-noskin {
14
10
  // only using colors when there is no bootswatch skin applied
15
11
  $composer-color: $secondary;
@@ -12,12 +12,11 @@
12
12
 
13
13
  &:hover {
14
14
  .controls {
15
- opacity: 0.8;
15
+ opacity: 1;
16
16
  }
17
17
  }
18
18
 
19
19
  .controls {
20
- text-align: center;
21
20
  height: 200px;
22
21
  line-height: 200px;
23
22
  opacity: 0;
@@ -28,15 +27,6 @@
28
27
  > * {
29
28
  pointer-events: all;
30
29
  }
31
-
32
- .fa {
33
- color: white;
34
- background-color: #333;
35
- opacity: 1;
36
- margin: 15px;
37
- padding: 5px;
38
- border-radius: 4px;
39
- }
40
30
  }
41
31
 
42
32
  &.active {
@@ -0,0 +1,24 @@
1
+ .skin-noskin [component="pagination"] {
2
+ .page-item.active:not(.disabled) .page-link {
3
+ color: $body-color;
4
+ background-color: $gray-300;
5
+ border-color: $gray-300;
6
+ }
7
+
8
+ .page-item:not(.disabled):hover .page-link {
9
+ color: $body-color;
10
+ }
11
+ }
12
+
13
+ [component="pagination"] {
14
+ .page-item.active:not(.disabled) .page-link {
15
+ color: $pagination-active-color;
16
+ }
17
+ .page-item:not(.disabled):hover .page-link {
18
+ color: $pagination-hover-color;
19
+ background-color: $pagination-hover-bg;
20
+ }
21
+ .page-item:not(.disabled) .page-link {
22
+ color: $body-color;
23
+ }
24
+ }
@@ -39,6 +39,8 @@ $text-muted: $gray-600 !default;
39
39
  $border-color: $gray-200 !default;
40
40
  $link-color: shade-color($blue, 20%) !default;
41
41
 
42
+ $btn-ghost-hover-color: mix($light, $dark, 90);
43
+
42
44
  // no caret on dropdown-toggle
43
45
  $enable-caret: false;
44
46
 
@@ -0,0 +1,8 @@
1
+ [component="search/filters"] {
2
+ .filter-btn {
3
+ border-color: $gray-300!important;
4
+ &.active-filter {
5
+ border-color: $primary!important;
6
+ }
7
+ }
8
+ }
package/scss/sidebar.scss CHANGED
@@ -113,7 +113,32 @@
113
113
  font-size: 9px;
114
114
  line-height: 12px;
115
115
  }
116
- .search.bottom-sheet .dropdown-menu {
117
- max-height: 100%;
116
+
117
+ .navigation-dropdown, .user-dropdown {
118
+ > li {
119
+ > a, .dropdown-item {
120
+ padding: 10px 20px!important;
121
+ }
122
+ }
123
+ left: 0!important;
124
+ right: 0!important;
125
+ bottom: $spacer!important;
126
+ box-shadow: none!important;
127
+ max-height: 60vh!important;
128
+ overflow: auto!important;
129
+ }
130
+ .search-dropdown .quick-search-results {
131
+ max-height: 225px!important;
132
+ overflow-y: auto!important;
133
+ }
134
+ .search-dropdown, .chats-dropdown, .notifications-dropdown, .drafts-dropdown {
135
+ left: 0!important;
136
+ right: 0!important;
137
+ bottom: $spacer!important;
138
+ box-shadow: none!important;
139
+ ul {
140
+ max-height: 60vh!important;
141
+ overflow-y: auto!important;
142
+ }
118
143
  }
119
144
  }
package/scss/topic.scss CHANGED
@@ -1,3 +1,5 @@
1
+ .pagination-block { display: none; }
2
+
1
3
  .page-topic {
2
4
  [component="topic/title"] {
3
5
  font-size: 28px;
@@ -14,18 +16,6 @@
14
16
  line-height: 20px;
15
17
  }
16
18
 
17
- .action-bar {
18
- .dropdown-toggle::after {
19
- border: none;
20
- font-family: "FontAwesome";
21
- content: "\f078";
22
- color: tint-color($primary, 40%);
23
-
24
- position: relative;
25
- top: 2px;
26
- }
27
- }
28
-
29
19
  .topic {
30
20
  .posts {
31
21
  max-width: 960px;
@@ -67,6 +57,17 @@
67
57
  [component="post/reply-count"] {
68
58
  font-size: $font-size-base * .75;
69
59
  }
60
+
61
+ [component="post/upvote"], [component="post/downvote"] {
62
+ &.upvoted, &.downvoted {
63
+ background-color: lighten($btn-ghost-hover-color, 5%);
64
+
65
+ &:hover {
66
+ background-color: $btn-ghost-hover-color;
67
+
68
+ }
69
+ }
70
+ }
70
71
  }
71
72
  }
72
73
 
@@ -106,6 +107,15 @@
106
107
  }
107
108
  }
108
109
  }
110
+
111
+ .pagination-block {
112
+ display: block;
113
+ transition: opacity 250ms ease-in;
114
+ opacity: 0;
115
+ &.ready {
116
+ opacity: 1;
117
+ }
118
+ }
109
119
  }
110
120
 
111
121
  @include media-breakpoint-up(sm) {
@@ -1,45 +1,39 @@
1
- <div class="account">
2
- <!-- IMPORT partials/account/header.tpl -->
3
- <div class="d-flex flex-column flex-md-row">
4
- <!-- IMPORT partials/account/sidebar-left.tpl -->
5
- <div class="flex-1 ps-md-2 ps-lg-5" style="min-width: 0;">
6
- <div class="d-flex justify-content-between mb-3">
7
- <h3 class="fw-semibold fs-5">[[pages:account/blocks, {username}]]</h3>
8
- <div class="justify-content-end">
9
- <div class="dropdown">
10
- <div class="input-group">
11
- <input class="form-control form-control-sm" type="text" id="user-search" placeholder="[[users:enter_username]]" data-bs-toggle="dropdown" autocomplete="off"/>
12
- <button class="btn btn-primary btn-sm" type="button">
13
- <i class="fa fa-search"></i>
14
- </button>
15
- </div>
1
+ <!-- IMPORT partials/account/header.tpl -->
2
+ <div class="d-flex justify-content-between mb-3">
3
+ <h3 class="fw-semibold fs-5">[[pages:account/blocks, {username}]]</h3>
4
+ <div class="justify-content-end">
5
+ <div class="dropdown">
6
+ <div class="input-group">
7
+ <input class="form-control form-control-sm" type="text" id="user-search" placeholder="[[users:enter_username]]" data-bs-toggle="dropdown" autocomplete="off"/>
8
+ <button class="btn btn-primary btn-sm" type="button">
9
+ <i class="fa fa-search"></i>
10
+ </button>
11
+ </div>
16
12
 
17
- <ul component="blocks/search/list" class="dropdown-menu dropdown-menu-end block-edit overflow-auto" style="max-height:300px;">
18
- <li><a href="#" class="dropdown-item">[[admin/menu:search.start-typing]]</a></li>
19
- {{{ each edit }}}
20
- <li class="">
21
- <div class="dropdown-item d-flex flex-nowrap gap-2 justify-content-between">
22
- <div class="text-truncate">
23
- <a href="{config.relative_path}/uid/{./uid}" class="text-decoration-none">{buildAvatar(edit, "24px", true)} {./username}</a>
24
- </div>
25
- <button class="btn btn-sm btn-primary text-nowrap" data-uid="{./uid}" data-action="toggle">[[user:block_toggle]]</button>
26
- </div>
27
- </li>
28
- {{{ end }}}
29
- </ul>
13
+ <ul component="blocks/search/list" class="dropdown-menu dropdown-menu-end block-edit overflow-auto" style="max-height:300px;">
14
+ <li><a href="#" class="dropdown-item">[[admin/menu:search.start-typing]]</a></li>
15
+ {{{ each edit }}}
16
+ <li class="">
17
+ <div class="dropdown-item d-flex flex-nowrap gap-2 justify-content-between">
18
+ <div class="text-truncate">
19
+ <a href="{config.relative_path}/uid/{./uid}" class="text-decoration-none">{buildAvatar(edit, "24px", true)} {./username}</a>
20
+ </div>
21
+ <button class="btn btn-sm btn-primary text-nowrap" data-uid="{./uid}" data-action="toggle">[[user:block_toggle]]</button>
30
22
  </div>
31
- </div>
32
- </div>
33
- <div class="users">
34
- <div id="users-container" class="row row-cols-2 row-cols-lg-3 row-cols-xl-4 g-2">
35
- {{{ each users }}}
36
- <!-- IMPORT partials/users/item.tpl -->
37
- {{{ end }}}
38
- </div>
39
- <div class="alert alert-warning text-center"{{{ if users.length }}} style="display: none;"{{{ end }}}>[[user:has_no_blocks]]</div>
40
- <!-- IMPORT partials/paginator.tpl -->
41
- </div>
23
+ </li>
24
+ {{{ end }}}
25
+ </ul>
42
26
  </div>
43
-
44
27
  </div>
45
- </div>
28
+ </div>
29
+ <div class="users">
30
+ <div id="users-container" class="row row-cols-2 row-cols-lg-3 row-cols-xl-4 g-2">
31
+ {{{ each users }}}
32
+ <!-- IMPORT partials/users/item.tpl -->
33
+ {{{ end }}}
34
+ </div>
35
+ <div class="alert alert-warning text-center"{{{ if users.length }}} style="display: none;"{{{ end }}}>[[user:has_no_blocks]]</div>
36
+ <!-- IMPORT partials/paginator.tpl -->
37
+ </div>
38
+
39
+ <!-- IMPORT partials/account/footer.tpl -->
@@ -1,34 +1,27 @@
1
- <div class="account">
2
- <!-- IMPORT partials/account/header.tpl -->
1
+ <!-- IMPORT partials/account/header.tpl -->
3
2
 
4
- <div class="d-flex flex-column flex-md-row">
5
- <!-- IMPORT partials/account/sidebar-left.tpl -->
6
- <div class="flex-1 ps-md-2 ps-lg-5" style="min-width: 0;">
7
- <h3 class="fw-semibold fs-5">{title}</h3>
3
+ <h3 class="fw-semibold fs-5">{title}</h3>
8
4
 
9
- <div class="row">
10
- <div class="col-lg-12 mb-2">
11
- <div class="btn-group bottom-sheet" component="category/watch/all">
12
- <button class="btn btn-outline-secondary dropdown-toggle" data-bs-toggle="dropdown" type="button">
13
- <span>[[user:change_all]]</span>
14
- <span class="caret"></span>
15
- </button>
16
- <ul class="dropdown-menu">
17
- <li><a class="dropdown-item" href="#" component="category/watching" data-state="watching"><i class="fa fa-fw fa-inbox"></i> [[category:watching]]<p class="help-text"><small>[[category:watching.description]]</small></p></a></li>
18
- <li><a class="dropdown-item" href="#" component="category/notwatching" data-state="notwatching"><i class="fa fa-fw fa-clock-o"></i> [[category:not-watching]]<p class="help-text"><small>[[category:not-watching.description]]</small></p></a></li>
19
- <li><a class="dropdown-item" href="#" component="category/ignoring" data-state="ignoring"><i class="fa fa-fw fa-eye-slash"></i> [[category:ignoring]]<p class="help-text"><small>[[category:ignoring.description]]</small></p></a></li>
20
- </ul>
21
- </div>
22
- </div>
23
- <div class="col-lg-12">
24
- <ul class="categories list-unstyled" itemscope itemtype="http://www.schema.org/ItemList">
25
- {{{each categories}}}
26
- <!-- IMPORT partials/account/category-item.tpl -->
27
- {{{end}}}
28
- </ul>
29
- <!-- IMPORT partials/paginator.tpl -->
30
- </div>
31
- </div>
32
- </div>
5
+ <div class="row">
6
+ <div class="col-lg-12 mb-2">
7
+ <div class="btn-group bottom-sheet" component="category/watch/all">
8
+ <button class="btn btn-outline-secondary dropdown-toggle" data-bs-toggle="dropdown" type="button">
9
+ <span>[[user:change_all]]</span>
10
+ </button>
11
+ <ul class="dropdown-menu">
12
+ <li><a class="dropdown-item" href="#" component="category/watching" data-state="watching"><i class="fa fa-fw fa-inbox"></i> [[category:watching]]<p class="help-text"><small>[[category:watching.description]]</small></p></a></li>
13
+ <li><a class="dropdown-item" href="#" component="category/notwatching" data-state="notwatching"><i class="fa fa-fw fa-clock-o"></i> [[category:not-watching]]<p class="help-text"><small>[[category:not-watching.description]]</small></p></a></li>
14
+ <li><a class="dropdown-item" href="#" component="category/ignoring" data-state="ignoring"><i class="fa fa-fw fa-eye-slash"></i> [[category:ignoring]]<p class="help-text"><small>[[category:ignoring.description]]</small></p></a></li>
15
+ </ul>
33
16
  </div>
34
17
  </div>
18
+ <div class="col-lg-12">
19
+ <ul class="categories list-unstyled" itemscope itemtype="http://www.schema.org/ItemList">
20
+ {{{each categories}}}
21
+ <!-- IMPORT partials/account/category-item.tpl -->
22
+ {{{end}}}
23
+ </ul>
24
+ <!-- IMPORT partials/paginator.tpl -->
25
+ </div>
26
+
27
+ <!-- IMPORT partials/account/footer.tpl -->