nodebb-theme-harmony 1.0.0-beta.4 → 1.0.0-beta.40
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/languages/en-GB/harmony.json +5 -1
- package/library.js +21 -7
- package/package.json +1 -1
- package/public/harmony.js +107 -9
- package/public/settings.js +1 -0
- package/scss/common.scss +46 -4
- package/scss/harmony.scss +2 -0
- package/scss/mixins.scss +7 -3
- package/scss/modals.scss +6 -1
- package/scss/modules/bottom-sheet.scss +1 -1
- package/scss/modules/composer.scss +0 -4
- package/scss/modules/cover.scss +1 -11
- package/scss/modules/paginator.scss +24 -0
- package/scss/overrides.scss +3 -1
- package/scss/search.scss +8 -0
- package/scss/sidebar.scss +7 -4
- package/scss/topic.scss +22 -12
- package/templates/account/blocks.tpl +35 -41
- package/templates/account/categories.tpl +23 -30
- package/templates/account/consent.tpl +66 -10
- package/templates/account/edit/password.tpl +25 -30
- package/templates/account/edit/username.tpl +21 -26
- package/templates/account/edit.tpl +105 -116
- package/templates/account/followers.tpl +12 -19
- package/templates/account/following.tpl +12 -18
- package/templates/account/groups.tpl +12 -17
- package/templates/account/info.tpl +178 -206
- package/templates/account/posts.tpl +31 -36
- package/templates/account/profile.tpl +66 -73
- package/templates/account/sessions.tpl +8 -30
- package/templates/account/settings.tpl +193 -198
- package/templates/account/theme.tpl +34 -25
- package/templates/account/topics.tpl +33 -38
- package/templates/account/uploads.tpl +33 -40
- package/templates/categories.tpl +1 -1
- package/templates/category.tpl +12 -13
- package/templates/flags/detail.tpl +24 -25
- package/templates/flags/list.tpl +11 -11
- package/templates/footer.tpl +2 -2
- package/templates/groups/details.tpl +20 -17
- package/templates/groups/members.tpl +0 -2
- package/templates/partials/account/footer.tpl +3 -0
- package/templates/partials/account/header.tpl +78 -81
- package/templates/partials/account/session-list.tpl +18 -0
- package/templates/partials/breadcrumbs.tpl +6 -6
- package/templates/partials/categories/item.tpl +19 -18
- package/templates/partials/categories/lastpost.tpl +2 -2
- package/templates/partials/{category-filter-content.tpl → category/filter-dropdown-content.tpl} +8 -6
- package/templates/partials/{category-selector-content.tpl → category/selector-dropdown-content.tpl} +3 -3
- package/templates/partials/category/subcategory.tpl +1 -1
- package/templates/partials/category/tags.tpl +0 -2
- package/templates/partials/category/watch.tpl +28 -4
- package/templates/partials/chats/message-window.tpl +1 -0
- package/templates/partials/chats/message.tpl +4 -6
- package/templates/partials/cookie-consent.tpl +5 -5
- package/templates/partials/flags/filters.tpl +1 -1
- package/templates/partials/groups/admin.tpl +4 -4
- package/templates/partials/groups/badge.tpl +1 -1
- package/templates/partials/groups/memberlist.tpl +1 -1
- package/templates/partials/groups/sidebar-left.tpl +1 -1
- package/templates/partials/header/brand.tpl +1 -1
- package/templates/partials/mobile-footer.tpl +69 -61
- package/templates/partials/paginator.tpl +9 -9
- package/templates/partials/post_bar.tpl +6 -5
- package/templates/partials/posts_list_item.tpl +5 -5
- package/templates/partials/quick-search-results.tpl +1 -1
- package/templates/partials/search-filters.tpl +184 -0
- package/templates/partials/search-results.tpl +28 -32
- package/templates/partials/sidebar/chats.tpl +2 -2
- package/templates/partials/sidebar/drafts.tpl +42 -34
- package/templates/partials/sidebar/logged-in-menu.tpl +5 -5
- package/templates/partials/sidebar/notifications.tpl +3 -3
- package/templates/partials/sidebar/search.tpl +1 -1
- package/templates/partials/sidebar/user-menu.tpl +1 -1
- package/templates/partials/sidebar-left.tpl +13 -10
- package/templates/partials/sidebar-right.tpl +1 -1
- package/templates/partials/skin-switcher.tpl +2 -2
- package/templates/partials/tags_list.tpl +6 -4
- package/templates/partials/topic/browsing-users.tpl +0 -2
- package/templates/partials/topic/event.tpl +1 -1
- package/templates/partials/topic/navigation-post.tpl +5 -9
- package/templates/partials/topic/navigator-mobile.tpl +48 -0
- package/templates/partials/topic/post-editor.tpl +0 -2
- package/templates/partials/topic/post-menu-list.tpl +35 -37
- package/templates/partials/topic/post.tpl +27 -10
- package/templates/partials/topic/quickreply.tpl +6 -6
- package/templates/partials/topic/reply-button.tpl +1 -1
- package/templates/partials/topic/topic-menu-list.tpl +16 -18
- package/templates/partials/topic/watch.tpl +28 -4
- package/templates/partials/topic-list-bar.tpl +7 -7
- package/templates/partials/topics_list.tpl +41 -41
- package/templates/partials/users/filter-dropdown-content.tpl +20 -0
- package/templates/popular.tpl +1 -1
- package/templates/post-queue.tpl +112 -0
- package/templates/recent.tpl +1 -1
- package/templates/search.tpl +39 -177
- package/templates/tags.tpl +1 -1
- package/templates/top.tpl +1 -1
- package/templates/topic.tpl +4 -4
- package/templates/unread.tpl +1 -1
- package/templates/users.tpl +1 -1
- package/templates/modules/usercard.tpl +0 -39
- package/templates/partials/acceptTos.tpl +0 -11
- package/templates/partials/category-filter-right.tpl +0 -5
- package/templates/partials/category-filter.tpl +0 -3
- package/templates/partials/category-selector-right.tpl +0 -5
- package/templates/partials/category-selector.tpl +0 -3
- package/templates/partials/slideout-menu.tpl +0 -6
|
@@ -1,9 +1,13 @@
|
|
|
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",
|
|
7
8
|
"settings.centerHeaderElements": "Center header elements",
|
|
8
|
-
"settings.stickyToolbar": "Sticky toolbar"
|
|
9
|
+
"settings.stickyToolbar": "Sticky toolbar",
|
|
10
|
+
"settings.stickyToolbar.help": "The toolbar on topic and category pages will stick to the top of the page",
|
|
11
|
+
"settings.autohideBottombar": "Auto hide bottom bar",
|
|
12
|
+
"settings.autohideBottombar.help": "The bottom bar on mobile view will be hidden when the page is scrolled down"
|
|
9
13
|
}
|
package/library.js
CHANGED
|
@@ -12,6 +12,7 @@ const defaults = {
|
|
|
12
12
|
enableQuickReply: 'on',
|
|
13
13
|
centerHeaderElements: 'off',
|
|
14
14
|
stickyToolbar: 'on',
|
|
15
|
+
autohideBottombar: 'off',
|
|
15
16
|
openSidebars: 'off',
|
|
16
17
|
};
|
|
17
18
|
|
|
@@ -77,6 +78,16 @@ library.defineWidgetAreas = async function (areas) {
|
|
|
77
78
|
});
|
|
78
79
|
|
|
79
80
|
areas = areas.concat([
|
|
81
|
+
{
|
|
82
|
+
name: 'Main post header',
|
|
83
|
+
template: 'topic.tpl',
|
|
84
|
+
location: 'mainpost-header',
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
name: 'Main post footer',
|
|
88
|
+
template: 'topic.tpl',
|
|
89
|
+
location: 'mainpost-footer',
|
|
90
|
+
},
|
|
80
91
|
{
|
|
81
92
|
name: 'Sidebar Footer',
|
|
82
93
|
template: 'global',
|
|
@@ -92,15 +103,18 @@ async function loadThemeConfig(uid) {
|
|
|
92
103
|
meta.settings.get('harmony'),
|
|
93
104
|
user.getSettings(uid),
|
|
94
105
|
]);
|
|
95
|
-
|
|
106
|
+
|
|
107
|
+
const config = { ...defaults, ...themeConfig, ...(_.pick(userConfig, Object.keys(defaults))) };
|
|
108
|
+
config.enableQuickReply = config.enableQuickReply === 'on';
|
|
109
|
+
config.centerHeaderElements = config.centerHeaderElements === 'on';
|
|
110
|
+
config.stickyToolbar = config.stickyToolbar === 'on';
|
|
111
|
+
config.autohideBottombar = config.autohideBottombar === 'on';
|
|
112
|
+
config.openSidebars = config.openSidebars === 'on';
|
|
113
|
+
return config;
|
|
96
114
|
}
|
|
97
115
|
|
|
98
116
|
library.getThemeConfig = async function (config) {
|
|
99
|
-
|
|
100
|
-
config.enableQuickReply = themeConfig.enableQuickReply === 'on';
|
|
101
|
-
config.centerHeaderElements = themeConfig.centerHeaderElements === 'on';
|
|
102
|
-
config.stickyToolbar = themeConfig.stickyToolbar === 'on';
|
|
103
|
-
config.openSidebars = themeConfig.openSidebars === 'on';
|
|
117
|
+
config.theme = await loadThemeConfig(config.uid);;
|
|
104
118
|
config.openDraftsOnPageLoad = false;
|
|
105
119
|
return config;
|
|
106
120
|
};
|
|
@@ -126,7 +140,7 @@ library.saveUserSettings = async function (hookData) {
|
|
|
126
140
|
|
|
127
141
|
library.addUserToTopic = async function (hookData) {
|
|
128
142
|
const { enableQuickReply } = await loadThemeConfig(hookData.req.uid);
|
|
129
|
-
if (enableQuickReply
|
|
143
|
+
if (enableQuickReply) {
|
|
130
144
|
if (hookData.req.user) {
|
|
131
145
|
const userData = await user.getUserData(hookData.req.uid);
|
|
132
146
|
hookData.templateData.loggedInUser = userData;
|
package/package.json
CHANGED
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,7 +50,55 @@ $(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
|
+
}
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
const bottomBar = $('[component="bottombar"]');
|
|
59
|
+
$('body').on('shown.bs.dropdown', '.sticky-tools', function () {
|
|
60
|
+
bottomBar.addClass('hidden');
|
|
61
|
+
});
|
|
62
|
+
$('body').on('hidden.bs.dropdown', '.sticky-tools', function () {
|
|
63
|
+
bottomBar.removeClass('hidden');
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
let lastScrollTop = 0;
|
|
67
|
+
const $window = $(window);
|
|
68
|
+
function onWindowScroll() {
|
|
69
|
+
const st = $window.scrollTop();
|
|
70
|
+
if (st !== lastScrollTop) {
|
|
71
|
+
const diff = Math.abs(st - lastScrollTop);
|
|
72
|
+
const scrolledDown = st > lastScrollTop;
|
|
73
|
+
const scrolledUp = st < lastScrollTop;
|
|
74
|
+
if (diff > 5) {
|
|
75
|
+
bottomBar.css({
|
|
76
|
+
bottom: !scrolledUp && scrolledDown ?
|
|
77
|
+
-bottomBar.find('.bottombar-nav').outerHeight(true) :
|
|
78
|
+
0,
|
|
79
|
+
});
|
|
80
|
+
lastScrollTop = st;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const delayedScroll = utils.throttle(onWindowScroll, 250);
|
|
86
|
+
function enableAutohide() {
|
|
87
|
+
if (config.theme.autohideBottombar) {
|
|
88
|
+
lastScrollTop = $window.scrollTop();
|
|
89
|
+
$window.on('scroll', delayedScroll);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
hooks.on('action:posts.loading', function () {
|
|
94
|
+
$window.off('scroll', delayedScroll);
|
|
95
|
+
});
|
|
96
|
+
hooks.on('action:posts.loaded', enableAutohide);
|
|
97
|
+
hooks.on('action:ajaxify.end', function () {
|
|
98
|
+
$window.off('scroll', delayedScroll);
|
|
99
|
+
enableAutohide();
|
|
51
100
|
});
|
|
101
|
+
enableAutohide();
|
|
52
102
|
});
|
|
53
103
|
}
|
|
54
104
|
|
|
@@ -59,33 +109,41 @@ $(document).ready(function () {
|
|
|
59
109
|
}
|
|
60
110
|
|
|
61
111
|
function setupDrafts() {
|
|
62
|
-
require(['composer/drafts'], function (drafts) {
|
|
112
|
+
require(['composer/drafts', 'bootbox'], function (drafts, bootbox) {
|
|
113
|
+
const draftsEl = $('[component="sidebar/drafts"]');
|
|
114
|
+
|
|
63
115
|
function updateBadgeCount() {
|
|
64
116
|
const count = drafts.getAvailableCount();
|
|
117
|
+
if (count > 0) {
|
|
118
|
+
draftsEl.removeClass('hidden');
|
|
119
|
+
}
|
|
65
120
|
$('[component="drafts/count"]').toggleClass('hidden', count <= 0).text(count);
|
|
66
121
|
}
|
|
67
122
|
|
|
68
123
|
async function renderDraftList() {
|
|
69
124
|
const draftListEl = $('[component="drafts/list"]');
|
|
70
|
-
draftListEl.children(':not(.no-drafts)').remove();
|
|
71
|
-
|
|
72
125
|
const draftItems = drafts.listAvailable();
|
|
73
126
|
if (!draftItems.length) {
|
|
74
127
|
draftListEl.find('.no-drafts').removeClass('hidden');
|
|
128
|
+
draftListEl.find('.placeholder-wave').addClass('hidden');
|
|
129
|
+
draftListEl.find('.draft-item-container').html('');
|
|
75
130
|
return;
|
|
76
131
|
}
|
|
77
132
|
draftItems.reverse().forEach((draft) => {
|
|
78
133
|
if (draft) {
|
|
79
|
-
draft.text =
|
|
134
|
+
draft.text = utils.escapeHTML(
|
|
135
|
+
draft.text
|
|
136
|
+
).replace(/(?:\r\n|\r|\n)/g, '<br>');
|
|
80
137
|
}
|
|
81
138
|
});
|
|
82
139
|
|
|
83
140
|
const html = await app.parseAndTranslate('partials/sidebar/drafts', 'drafts', { drafts: draftItems });
|
|
84
141
|
draftListEl.find('.no-drafts').addClass('hidden');
|
|
85
|
-
draftListEl.
|
|
142
|
+
draftListEl.find('.placeholder-wave').addClass('hidden');
|
|
143
|
+
draftListEl.find('.draft-item-container').html(html).find('.timeago').timeago();
|
|
86
144
|
}
|
|
87
145
|
|
|
88
|
-
|
|
146
|
+
|
|
89
147
|
draftsEl.on('shown.bs.dropdown', renderDraftList);
|
|
90
148
|
|
|
91
149
|
draftsEl.on('click', '[component="drafts/open"]', function () {
|
|
@@ -93,8 +151,13 @@ $(document).ready(function () {
|
|
|
93
151
|
});
|
|
94
152
|
|
|
95
153
|
draftsEl.on('click', '[component="drafts/delete"]', function () {
|
|
96
|
-
|
|
97
|
-
|
|
154
|
+
const save_id = $(this).attr('data-save-id');
|
|
155
|
+
bootbox.confirm('[[modules:composer.discard-draft-confirm]]', function (ok) {
|
|
156
|
+
if (ok) {
|
|
157
|
+
drafts.removeDraft(save_id);
|
|
158
|
+
renderDraftList();
|
|
159
|
+
}
|
|
160
|
+
});
|
|
98
161
|
return false;
|
|
99
162
|
});
|
|
100
163
|
|
|
@@ -103,6 +166,7 @@ $(document).ready(function () {
|
|
|
103
166
|
updateBadgeCount();
|
|
104
167
|
});
|
|
105
168
|
}
|
|
169
|
+
|
|
106
170
|
function setupNProgress() {
|
|
107
171
|
require(['nprogress'], function (NProgress) {
|
|
108
172
|
window.nprogress = NProgress;
|
|
@@ -117,4 +181,38 @@ $(document).ready(function () {
|
|
|
117
181
|
}
|
|
118
182
|
});
|
|
119
183
|
}
|
|
184
|
+
|
|
185
|
+
function handleMobileNavigator() {
|
|
186
|
+
const paginationBlockEl = $('.pagination-block');
|
|
187
|
+
require(['hooks'], function (hooks) {
|
|
188
|
+
hooks.on('action:ajaxify.end', function () {
|
|
189
|
+
paginationBlockEl.find('.dropdown-menu.show').removeClass('show');
|
|
190
|
+
});
|
|
191
|
+
hooks.on('filter:navigator.scroll', function (hookData) {
|
|
192
|
+
paginationBlockEl.find('.dropdown-menu.show').removeClass('show');
|
|
193
|
+
return hookData;
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
function setupNavTooltips() {
|
|
199
|
+
// remove title from user icon in sidebar to prevent double tooltip
|
|
200
|
+
$('.sidebar [component="header/avatar"] .avatar').removeAttr('title');
|
|
201
|
+
const tooltipEls = $('.sidebar [title]');
|
|
202
|
+
tooltipEls.tooltip({
|
|
203
|
+
trigger: 'manual',
|
|
204
|
+
animation: false,
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
tooltipEls.on('mouseenter', function (ev) {
|
|
208
|
+
const target = $(ev.target);
|
|
209
|
+
const isDropdown = target.hasClass('dropdown-menu') || !!target.parents('.dropdown-menu').length;
|
|
210
|
+
if (!$('.sidebar').hasClass('open') && !isDropdown) {
|
|
211
|
+
$(this).tooltip('show');
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
tooltipEls.on('click mouseleave', function () {
|
|
215
|
+
$(this).tooltip('hide');
|
|
216
|
+
});
|
|
217
|
+
}
|
|
120
218
|
});
|
package/public/settings.js
CHANGED
package/scss/common.scss
CHANGED
|
@@ -14,8 +14,43 @@ body {
|
|
|
14
14
|
.text-sm { font-size: 0.875rem!important; } // 14px
|
|
15
15
|
.text-xs { font-size: 0.75rem!important; } // 12px
|
|
16
16
|
|
|
17
|
-
.
|
|
18
|
-
|
|
17
|
+
.caret {
|
|
18
|
+
&::after {
|
|
19
|
+
border: none;
|
|
20
|
+
font-family: "FontAwesome";
|
|
21
|
+
content: "\f078";
|
|
22
|
+
color: tint-color($primary, 40%);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
blockquote {
|
|
27
|
+
background-color: $light;
|
|
28
|
+
font-style: normal;
|
|
29
|
+
border-left: 2px solid $border-color;
|
|
30
|
+
padding: 1rem;
|
|
31
|
+
p:last-child {
|
|
32
|
+
margin-bottom: 0;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
body:not(.page-user) {
|
|
37
|
+
#content {
|
|
38
|
+
transition: opacity 150ms linear;
|
|
39
|
+
&.ajaxifying {
|
|
40
|
+
-moz-opacity: 0;
|
|
41
|
+
opacity: 0;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
.page-user {
|
|
46
|
+
#content {
|
|
47
|
+
transition: opacity 150ms linear;
|
|
48
|
+
&.ajaxifying .account-content {
|
|
49
|
+
transition: opacity 150ms linear;
|
|
50
|
+
-moz-opacity: 0;
|
|
51
|
+
opacity: 0;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
19
54
|
}
|
|
20
55
|
|
|
21
56
|
.sticky-tools {
|
|
@@ -35,6 +70,13 @@ body {
|
|
|
35
70
|
}
|
|
36
71
|
}
|
|
37
72
|
|
|
73
|
+
.btn-link {
|
|
74
|
+
&:hover, &.active {
|
|
75
|
+
background-color: $btn-ghost-hover-color;
|
|
76
|
+
text-decoration: none;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
38
80
|
@mixin btn-ghost-base {
|
|
39
81
|
display: flex;
|
|
40
82
|
align-items: center;
|
|
@@ -48,10 +90,10 @@ body {
|
|
|
48
90
|
text-align: left;
|
|
49
91
|
--bs-text-opacity: 1;
|
|
50
92
|
color: inherit !important;
|
|
51
|
-
|
|
93
|
+
|
|
52
94
|
cursor: pointer;
|
|
53
95
|
&:hover, &.active {
|
|
54
|
-
background-color: $hover-color;
|
|
96
|
+
background-color: $btn-ghost-hover-color;
|
|
55
97
|
text-decoration: none;
|
|
56
98
|
}
|
|
57
99
|
}
|
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
|
-
|
|
128
|
-
|
|
129
|
-
|
|
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
|
}
|
package/scss/modals.scss
CHANGED
package/scss/modules/cover.scss
CHANGED
|
@@ -12,12 +12,11 @@
|
|
|
12
12
|
|
|
13
13
|
&:hover {
|
|
14
14
|
.controls {
|
|
15
|
-
opacity:
|
|
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
|
+
}
|
package/scss/overrides.scss
CHANGED
|
@@ -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
|
|
|
@@ -53,7 +55,7 @@ $link-hover-decoration: underline;
|
|
|
53
55
|
|
|
54
56
|
// Custom fonts
|
|
55
57
|
$font-family-sans-serif: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
|
56
|
-
$font-family-secondary: "Poppins" !default;
|
|
58
|
+
$font-family-secondary: "Poppins", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
|
|
57
59
|
$font-weight-semibold: 500 !default;
|
|
58
60
|
|
|
59
61
|
$breadcrumb-divider: quote("→");
|
package/scss/search.scss
ADDED
package/scss/sidebar.scss
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
.skin-noskin {
|
|
2
2
|
// only using colors when there is no bootswatch skin applied
|
|
3
|
-
nav.sidebar, .bottombar {
|
|
3
|
+
nav.sidebar, .bottombar-nav {
|
|
4
4
|
color: $secondary !important;
|
|
5
5
|
background-color: $light !important;
|
|
6
6
|
}
|
|
7
|
-
.bottombar {
|
|
7
|
+
.bottombar-nav {
|
|
8
8
|
.dropdown-menu {
|
|
9
9
|
color: $secondary !important;
|
|
10
10
|
background-color: $light !important;
|
|
@@ -97,7 +97,10 @@
|
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
.bottombar {
|
|
100
|
-
|
|
100
|
+
transition: bottom 150ms linear;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.bottombar-nav {
|
|
101
104
|
.nav-text {
|
|
102
105
|
font-size: 1rem;
|
|
103
106
|
color: $body-color;
|
|
@@ -128,7 +131,7 @@
|
|
|
128
131
|
overflow: auto!important;
|
|
129
132
|
}
|
|
130
133
|
.search-dropdown .quick-search-results {
|
|
131
|
-
max-height:
|
|
134
|
+
max-height: 225px!important;
|
|
132
135
|
overflow-y: auto!important;
|
|
133
136
|
}
|
|
134
137
|
.search-dropdown, .chats-dropdown, .notifications-dropdown, .drafts-dropdown {
|
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
|
-
|
|
2
|
-
|
|
3
|
-
<
|
|
4
|
-
|
|
5
|
-
<div class="
|
|
6
|
-
<div class="
|
|
7
|
-
<
|
|
8
|
-
<
|
|
9
|
-
<
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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
|
-
</
|
|
32
|
-
|
|
33
|
-
|
|
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 -->
|