nodebb-theme-persona 11.3.20 → 11.3.24

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 (213) hide show
  1. package/.eslintrc +2 -2
  2. package/README.md +14 -14
  3. package/languages/de/persona.json +3 -3
  4. package/languages/en-GB/persona.json +2 -2
  5. package/languages/en-US/persona.json +2 -2
  6. package/languages/fr/persona.json +3 -3
  7. package/languages/pl/persona.json +3 -3
  8. package/languages/pt-PT/persona.json +2 -2
  9. package/languages/tr/persona.json +4 -4
  10. package/languages/zh-CN/persona.json +4 -4
  11. package/less/bootstrap/.csscomb.json +297 -297
  12. package/less/bootstrap/.csslintrc +19 -19
  13. package/less/bootstrap/alerts.less +73 -73
  14. package/less/bootstrap/badges.less +66 -66
  15. package/less/bootstrap/bootstrap.less +50 -50
  16. package/less/bootstrap/breadcrumbs.less +26 -26
  17. package/less/bootstrap/button-groups.less +243 -243
  18. package/less/bootstrap/buttons.less +160 -160
  19. package/less/bootstrap/carousel.less +269 -269
  20. package/less/bootstrap/close.less +34 -34
  21. package/less/bootstrap/code.less +69 -69
  22. package/less/bootstrap/component-animations.less +33 -33
  23. package/less/bootstrap/forms.less +574 -574
  24. package/less/bootstrap/glyphicons.less +305 -305
  25. package/less/bootstrap/grid.less +84 -84
  26. package/less/bootstrap/input-groups.less +166 -166
  27. package/less/bootstrap/jumbotron.less +50 -50
  28. package/less/bootstrap/labels.less +64 -64
  29. package/less/bootstrap/list-group.less +124 -124
  30. package/less/bootstrap/media.less +61 -61
  31. package/less/bootstrap/mixins/alerts.less +14 -14
  32. package/less/bootstrap/mixins/background-variant.less +8 -8
  33. package/less/bootstrap/mixins/border-radius.less +18 -18
  34. package/less/bootstrap/mixins/buttons.less +52 -52
  35. package/less/bootstrap/mixins/center-block.less +7 -7
  36. package/less/bootstrap/mixins/clearfix.less +22 -22
  37. package/less/bootstrap/mixins/forms.less +85 -85
  38. package/less/bootstrap/mixins/gradients.less +59 -59
  39. package/less/bootstrap/mixins/grid-framework.less +91 -91
  40. package/less/bootstrap/mixins/grid.less +122 -122
  41. package/less/bootstrap/mixins/hide-text.less +21 -21
  42. package/less/bootstrap/mixins/image.less +33 -33
  43. package/less/bootstrap/mixins/labels.less +12 -12
  44. package/less/bootstrap/mixins/list-group.less +29 -29
  45. package/less/bootstrap/mixins/nav-divider.less +10 -10
  46. package/less/bootstrap/mixins/nav-vertical-align.less +9 -9
  47. package/less/bootstrap/mixins/opacity.less +8 -8
  48. package/less/bootstrap/mixins/pagination.less +23 -23
  49. package/less/bootstrap/mixins/panels.less +24 -24
  50. package/less/bootstrap/mixins/progress-bar.less +10 -10
  51. package/less/bootstrap/mixins/reset-filter.less +8 -8
  52. package/less/bootstrap/mixins/resize.less +6 -6
  53. package/less/bootstrap/mixins/responsive-visibility.less +15 -15
  54. package/less/bootstrap/mixins/size.less +10 -10
  55. package/less/bootstrap/mixins/tab-focus.less +9 -9
  56. package/less/bootstrap/mixins/table-row.less +28 -28
  57. package/less/bootstrap/mixins/text-emphasis.less +8 -8
  58. package/less/bootstrap/mixins/text-overflow.less +8 -8
  59. package/less/bootstrap/mixins/vendor-prefixes.less +227 -227
  60. package/less/bootstrap/mixins.less +39 -39
  61. package/less/bootstrap/modals.less +150 -150
  62. package/less/bootstrap/navbar.less +660 -660
  63. package/less/bootstrap/navs.less +242 -242
  64. package/less/bootstrap/normalize.less +427 -427
  65. package/less/bootstrap/pager.less +54 -54
  66. package/less/bootstrap/pagination.less +88 -88
  67. package/less/bootstrap/panels.less +265 -265
  68. package/less/bootstrap/popovers.less +135 -135
  69. package/less/bootstrap/print.less +107 -107
  70. package/less/bootstrap/progress-bars.less +87 -87
  71. package/less/bootstrap/responsive-embed.less +35 -35
  72. package/less/bootstrap/responsive-utilities.less +194 -194
  73. package/less/bootstrap/scaffolding.less +161 -161
  74. package/less/bootstrap/tables.less +234 -234
  75. package/less/bootstrap/theme.less +273 -273
  76. package/less/bootstrap/thumbnails.less +36 -36
  77. package/less/bootstrap/tooltip.less +102 -102
  78. package/less/bootstrap/type.less +302 -302
  79. package/less/bootstrap/utilities.less +55 -55
  80. package/less/bootstrap/variables.less +861 -861
  81. package/less/bootstrap/wells.less +29 -29
  82. package/less/bootstrap-flipped.css +1550 -1550
  83. package/less/categories.less +235 -235
  84. package/less/flags.less +42 -42
  85. package/less/footer.less +17 -17
  86. package/less/ip-blacklist.less +6 -6
  87. package/less/keyframes.less +152 -152
  88. package/less/mobile.less +39 -9
  89. package/less/modules/composer-default.less +16 -16
  90. package/less/modules/cookie-consent.less +12 -12
  91. package/less/modules/fab.less +32 -32
  92. package/less/modules/morph.less +268 -268
  93. package/less/modules/necro-post.less +8 -8
  94. package/less/modules/nprogress.less +80 -80
  95. package/less/modules/usercard.less +64 -64
  96. package/less/noscript.less +82 -82
  97. package/less/notifications.less +37 -37
  98. package/less/outgoing.less +8 -8
  99. package/less/persona.less +47 -47
  100. package/less/post-queue.less +19 -19
  101. package/less/register.less +75 -75
  102. package/less/rtl.less +132 -132
  103. package/less/search.less +1 -0
  104. package/less/tags.less +36 -36
  105. package/less/users.less +72 -72
  106. package/less/variables.less +6 -6
  107. package/package.json +1 -1
  108. package/public/.eslintrc +2 -2
  109. package/public/modules/autohidingnavbar.js +220 -220
  110. package/public/persona.js +36 -19
  111. package/templates/account/blocks.tpl +34 -34
  112. package/templates/account/categories.tpl +28 -28
  113. package/templates/account/consent.tpl +68 -68
  114. package/templates/account/edit/email.tpl +30 -30
  115. package/templates/account/edit/password.tpl +31 -31
  116. package/templates/account/edit/username.tpl +29 -29
  117. package/templates/account/followers.tpl +16 -16
  118. package/templates/account/following.tpl +16 -16
  119. package/templates/account/groups.tpl +16 -16
  120. package/templates/account/info.tpl +187 -187
  121. package/templates/account/posts.tpl +18 -18
  122. package/templates/account/sessions.tpl +31 -31
  123. package/templates/account/topics.tpl +30 -30
  124. package/templates/account/uploads.tpl +42 -42
  125. package/templates/admin/plugins/persona.tpl +28 -28
  126. package/templates/alert.tpl +15 -15
  127. package/templates/categories.tpl +31 -31
  128. package/templates/category.tpl +62 -62
  129. package/templates/chats.tpl +15 -15
  130. package/templates/flags/list.tpl +71 -71
  131. package/templates/footer.tpl +18 -18
  132. package/templates/groups/details.tpl +272 -272
  133. package/templates/groups/list.tpl +46 -46
  134. package/templates/groups/members.tpl +8 -8
  135. package/templates/ip-blacklist.tpl +55 -55
  136. package/templates/login.tpl +63 -61
  137. package/templates/modules/taskbar.tpl +2 -2
  138. package/templates/modules/usercard.tpl +36 -36
  139. package/templates/notifications.tpl +64 -64
  140. package/templates/partials/acceptTos.tpl +8 -8
  141. package/templates/partials/account/category-item.tpl +22 -22
  142. package/templates/partials/account/header.tpl +46 -46
  143. package/templates/partials/breadcrumbs.tpl +18 -18
  144. package/templates/partials/buttons/newTopic.tpl +15 -15
  145. package/templates/partials/categories/item.tpl +46 -46
  146. package/templates/partials/categories/lastpost.tpl +26 -26
  147. package/templates/partials/categories/link.tpl +10 -10
  148. package/templates/partials/category/sort.tpl +14 -14
  149. package/templates/partials/category/subcategory.tpl +17 -17
  150. package/templates/partials/category/tags.tpl +4 -4
  151. package/templates/partials/category/tools.tpl +80 -80
  152. package/templates/partials/category/watch.tpl +22 -22
  153. package/templates/partials/category-filter-content.tpl +16 -16
  154. package/templates/partials/category-filter-right.tpl +2 -2
  155. package/templates/partials/category-filter.tpl +2 -2
  156. package/templates/partials/category-selector-right.tpl +2 -2
  157. package/templates/partials/category-selector.tpl +2 -2
  158. package/templates/partials/change_owner_modal.tpl +22 -22
  159. package/templates/partials/chats/dropdown.tpl +33 -33
  160. package/templates/partials/chats/messages.tpl +6 -6
  161. package/templates/partials/chats/recent_room.tpl +24 -24
  162. package/templates/partials/chats-menu.tpl +41 -11
  163. package/templates/partials/cookie-consent.tpl +4 -4
  164. package/templates/partials/delete_posts_modal.tpl +18 -18
  165. package/templates/partials/fork_thread_modal.tpl +21 -21
  166. package/templates/partials/groups/list.tpl +20 -20
  167. package/templates/partials/groups/memberlist.tpl +39 -39
  168. package/templates/partials/menu.tpl +260 -247
  169. package/templates/partials/merge_topics_modal.tpl +57 -57
  170. package/templates/partials/modals/flag_modal.tpl +44 -44
  171. package/templates/partials/modals/manage_room.tpl +10 -10
  172. package/templates/partials/modals/manage_room_users.tpl +6 -6
  173. package/templates/partials/modals/post_history.tpl +36 -36
  174. package/templates/partials/modals/rename_room.tpl +3 -3
  175. package/templates/partials/modals/votes_modal.tpl +10 -10
  176. package/templates/partials/move_thread_modal.tpl +16 -16
  177. package/templates/partials/notifications_list.tpl +1 -1
  178. package/templates/partials/paginator.tpl +44 -44
  179. package/templates/partials/post_bar.tpl +20 -20
  180. package/templates/partials/posts_list.tpl +7 -7
  181. package/templates/partials/quick-search-results.tpl +30 -30
  182. package/templates/partials/slideout-menu.tpl +5 -27
  183. package/templates/partials/tags_list.tpl +4 -4
  184. package/templates/partials/thread_tools.tpl +7 -7
  185. package/templates/partials/topic/badge.tpl +4 -4
  186. package/templates/partials/topic/browsing-users.tpl +12 -12
  187. package/templates/partials/topic/deleted-message.tpl +10 -10
  188. package/templates/partials/topic/navigation-post.tpl +11 -11
  189. package/templates/partials/topic/necro-post.tpl +2 -2
  190. package/templates/partials/topic/post-menu.tpl +4 -4
  191. package/templates/partials/topic/post.tpl +104 -104
  192. package/templates/partials/topic/quickreply.tpl +20 -20
  193. package/templates/partials/topic/reply-button.tpl +26 -26
  194. package/templates/partials/topic/selection-tooltip.tpl +2 -2
  195. package/templates/partials/topic/sort.tpl +9 -9
  196. package/templates/partials/topic/stats.tpl +11 -11
  197. package/templates/partials/topic/tags.tpl +4 -4
  198. package/templates/partials/topic/watch.tpl +20 -20
  199. package/templates/partials/users_list.tpl +39 -39
  200. package/templates/partials/users_list_menu.tpl +10 -10
  201. package/templates/popular.tpl +61 -61
  202. package/templates/post-queue.tpl +82 -82
  203. package/templates/recent.tpl +51 -51
  204. package/templates/reset.tpl +23 -23
  205. package/templates/reset_code.tpl +41 -41
  206. package/templates/tag.tpl +35 -35
  207. package/templates/tags.tpl +30 -30
  208. package/templates/top.tpl +61 -61
  209. package/templates/tos.tpl +4 -4
  210. package/templates/unread.tpl +49 -49
  211. package/templates/users.tpl +47 -47
  212. package/theme.json +6 -6
  213. package/theme.less +1 -1
@@ -1,221 +1,221 @@
1
- /*
2
- * Bootstrap Auto-Hiding Navbar - v4.0.0
3
- * An extension for Bootstrap's fixed navbar which hides the navbar while the page is scrolling downwards and shows it the other way. The plugin is able to show/hide the navbar programmatically as well.
4
- * http://www.virtuosoft.eu/code/bootstrap-autohidingnavbar/
5
- *
6
- * Made by István Ujj-Mészáros
7
- * Under Apache License v2.0 License
8
- */
9
- ;(function($, window, document, undefined) {
10
- var pluginName = 'autoHidingNavbar',
11
- $window = $(window),
12
- $document = $(document),
13
- _scrollThrottleTimer = null,
14
- _resizeThrottleTimer = null,
15
- _throttleDelay = 70,
16
- _lastScrollHandlerRun = 0,
17
- _previousScrollTop = null,
18
- _windowHeight = $window.height(),
19
- _visible = true,
20
- _hideOffset,
21
- defaults = {
22
- disableAutohide: false,
23
- showOnUpscroll: true,
24
- showOnBottom: true,
25
- hideOffset: 'auto', // "auto" means the navbar height
26
- animationDuration: 200,
27
- navbarOffset: 0
28
- };
29
-
30
- function AutoHidingNavbar(element, options) {
31
- this.element = $(element);
32
- this.settings = $.extend({}, defaults, options);
33
- this._defaults = defaults;
34
- this._name = pluginName;
35
- this.init();
36
- }
37
-
38
- function hide(autoHidingNavbar) {
39
- if (!_visible) {
40
- return;
41
- }
42
-
43
- autoHidingNavbar.element.addClass('navbar-hidden').animate({
44
- top: -1 * parseInt(autoHidingNavbar.element.css('height'), 10) + autoHidingNavbar.settings.navbarOffset
45
- }, {
46
- queue: false,
47
- duration: autoHidingNavbar.settings.animationDuration
48
- });
49
-
50
- try {
51
- $('.dropdown.open .dropdown-toggle, .dropdown.show .dropdown-toggle', autoHidingNavbar.element).dropdown('toggle');
52
- }
53
- catch(e) {}
54
-
55
- _visible = false;
56
-
57
- autoHidingNavbar.element.trigger('hide.autoHidingNavbar');
58
- }
59
-
60
- function show(autoHidingNavbar) {
61
- if (_visible) {
62
- return;
63
- }
64
-
65
- autoHidingNavbar.element.removeClass('navbar-hidden').animate({
66
- top: 0
67
- }, {
68
- queue: false,
69
- duration: autoHidingNavbar.settings.animationDuration
70
- });
71
- _visible = true;
72
-
73
- autoHidingNavbar.element.trigger('show.autoHidingNavbar');
74
- }
75
-
76
- function detectState(autoHidingNavbar) {
77
- var scrollTop = $window.scrollTop(),
78
- scrollDelta = scrollTop - _previousScrollTop;
79
-
80
- _previousScrollTop = scrollTop;
81
-
82
- if (scrollDelta < 0) {
83
- if (_visible) {
84
- return;
85
- }
86
-
87
- if (autoHidingNavbar.settings.showOnUpscroll || scrollTop <= _hideOffset) {
88
- show(autoHidingNavbar);
89
- }
90
- }
91
- else if (scrollDelta > 0) {
92
- if (!_visible) {
93
- if (autoHidingNavbar.settings.showOnBottom && scrollTop + _windowHeight === $document.height()) {
94
- show(autoHidingNavbar);
95
- }
96
- return;
97
- }
98
-
99
- if (scrollTop >= _hideOffset) {
100
- hide(autoHidingNavbar);
101
- }
102
- }
103
-
104
- }
105
-
106
- function scrollHandler(autoHidingNavbar) {
107
- if (autoHidingNavbar.settings.disableAutohide) {
108
- return;
109
- }
110
-
111
- _lastScrollHandlerRun = new Date().getTime();
112
-
113
- detectState(autoHidingNavbar);
114
- }
115
-
116
- function bindEvents(autoHidingNavbar) {
117
- $document.on('scroll.' + pluginName, function() {
118
- if (new Date().getTime() - _lastScrollHandlerRun > _throttleDelay) {
119
- scrollHandler(autoHidingNavbar);
120
- }
121
- else {
122
- clearTimeout(_scrollThrottleTimer);
123
- _scrollThrottleTimer = setTimeout(function() {
124
- scrollHandler(autoHidingNavbar);
125
- }, _throttleDelay);
126
- }
127
- });
128
-
129
- $window.on('resize.' + pluginName, function() {
130
- clearTimeout(_resizeThrottleTimer);
131
- _resizeThrottleTimer = setTimeout(function() {
132
- _windowHeight = $window.height();
133
- }, _throttleDelay);
134
- });
135
- }
136
-
137
- function unbindEvents() {
138
- $document.off('.' + pluginName);
139
-
140
- $window.off('.' + pluginName);
141
- }
142
-
143
- AutoHidingNavbar.prototype = {
144
- init: function() {
145
- this.elements = {
146
- navbar: this.element
147
- };
148
-
149
- this.setDisableAutohide(this.settings.disableAutohide);
150
- this.setShowOnUpscroll(this.settings.showOnUpscroll);
151
- this.setShowOnBottom(this.settings.showOnBottom);
152
- this.setHideOffset(this.settings.hideOffset);
153
- this.setAnimationDuration(this.settings.animationDuration);
154
-
155
- _hideOffset = this.settings.hideOffset === 'auto' ? parseInt(this.element.css('height'), 10) : this.settings.hideOffset;
156
- bindEvents(this);
157
-
158
- return this.element;
159
- },
160
- setDisableAutohide: function(value) {
161
- this.settings.disableAutohide = value;
162
- return this.element;
163
- },
164
- setShowOnUpscroll: function(value) {
165
- this.settings.showOnUpscroll = value;
166
- return this.element;
167
- },
168
- setShowOnBottom: function(value) {
169
- this.settings.showOnBottom = value;
170
- return this.element;
171
- },
172
- setHideOffset: function(value) {
173
- this.settings.hideOffset = value;
174
- return this.element;
175
- },
176
- setAnimationDuration: function(value) {
177
- this.settings.animationDuration = value;
178
- return this.element;
179
- },
180
- show: function() {
181
- show(this);
182
- return this.element;
183
- },
184
- hide: function() {
185
- hide(this);
186
- return this.element;
187
- },
188
- destroy: function() {
189
- unbindEvents(this);
190
- show(this);
191
- $.data(this, 'plugin_' + pluginName, null);
192
- return this.element;
193
- }
194
- };
195
-
196
- $.fn[pluginName] = function(options) {
197
- var args = arguments;
198
-
199
- if (options === undefined || typeof options === 'object') {
200
- return this.each(function() {
201
- if (!$.data(this, 'plugin_' + pluginName)) {
202
- $.data(this, 'plugin_' + pluginName, new AutoHidingNavbar(this, options));
203
- }
204
- });
205
- } else if (typeof options === 'string' && options[0] !== '_' && options !== 'init') {
206
- var returns;
207
-
208
- this.each(function() {
209
- var instance = $.data(this, 'plugin_' + pluginName);
210
-
211
- if (instance instanceof AutoHidingNavbar && typeof instance[options] === 'function') {
212
- returns = instance[options].apply(instance, Array.prototype.slice.call(args, 1));
213
- }
214
- });
215
-
216
- return returns !== undefined ? returns : this;
217
- }
218
-
219
- };
220
-
1
+ /*
2
+ * Bootstrap Auto-Hiding Navbar - v4.0.0
3
+ * An extension for Bootstrap's fixed navbar which hides the navbar while the page is scrolling downwards and shows it the other way. The plugin is able to show/hide the navbar programmatically as well.
4
+ * http://www.virtuosoft.eu/code/bootstrap-autohidingnavbar/
5
+ *
6
+ * Made by István Ujj-Mészáros
7
+ * Under Apache License v2.0 License
8
+ */
9
+ ;(function($, window, document, undefined) {
10
+ var pluginName = 'autoHidingNavbar',
11
+ $window = $(window),
12
+ $document = $(document),
13
+ _scrollThrottleTimer = null,
14
+ _resizeThrottleTimer = null,
15
+ _throttleDelay = 70,
16
+ _lastScrollHandlerRun = 0,
17
+ _previousScrollTop = null,
18
+ _windowHeight = $window.height(),
19
+ _visible = true,
20
+ _hideOffset,
21
+ defaults = {
22
+ disableAutohide: false,
23
+ showOnUpscroll: true,
24
+ showOnBottom: true,
25
+ hideOffset: 'auto', // "auto" means the navbar height
26
+ animationDuration: 200,
27
+ navbarOffset: 0
28
+ };
29
+
30
+ function AutoHidingNavbar(element, options) {
31
+ this.element = $(element);
32
+ this.settings = $.extend({}, defaults, options);
33
+ this._defaults = defaults;
34
+ this._name = pluginName;
35
+ this.init();
36
+ }
37
+
38
+ function hide(autoHidingNavbar) {
39
+ if (!_visible) {
40
+ return;
41
+ }
42
+
43
+ autoHidingNavbar.element.addClass('navbar-hidden').animate({
44
+ top: -1 * parseInt(autoHidingNavbar.element.css('height'), 10) + autoHidingNavbar.settings.navbarOffset
45
+ }, {
46
+ queue: false,
47
+ duration: autoHidingNavbar.settings.animationDuration
48
+ });
49
+
50
+ try {
51
+ $('.dropdown.open .dropdown-toggle, .dropdown.show .dropdown-toggle', autoHidingNavbar.element).dropdown('toggle');
52
+ }
53
+ catch(e) {}
54
+
55
+ _visible = false;
56
+
57
+ autoHidingNavbar.element.trigger('hide.autoHidingNavbar');
58
+ }
59
+
60
+ function show(autoHidingNavbar) {
61
+ if (_visible) {
62
+ return;
63
+ }
64
+
65
+ autoHidingNavbar.element.removeClass('navbar-hidden').animate({
66
+ top: 0
67
+ }, {
68
+ queue: false,
69
+ duration: autoHidingNavbar.settings.animationDuration
70
+ });
71
+ _visible = true;
72
+
73
+ autoHidingNavbar.element.trigger('show.autoHidingNavbar');
74
+ }
75
+
76
+ function detectState(autoHidingNavbar) {
77
+ var scrollTop = $window.scrollTop(),
78
+ scrollDelta = scrollTop - _previousScrollTop;
79
+
80
+ _previousScrollTop = scrollTop;
81
+
82
+ if (scrollDelta < 0) {
83
+ if (_visible) {
84
+ return;
85
+ }
86
+
87
+ if (autoHidingNavbar.settings.showOnUpscroll || scrollTop <= _hideOffset) {
88
+ show(autoHidingNavbar);
89
+ }
90
+ }
91
+ else if (scrollDelta > 0) {
92
+ if (!_visible) {
93
+ if (autoHidingNavbar.settings.showOnBottom && scrollTop + _windowHeight === $document.height()) {
94
+ show(autoHidingNavbar);
95
+ }
96
+ return;
97
+ }
98
+
99
+ if (scrollTop >= _hideOffset) {
100
+ hide(autoHidingNavbar);
101
+ }
102
+ }
103
+
104
+ }
105
+
106
+ function scrollHandler(autoHidingNavbar) {
107
+ if (autoHidingNavbar.settings.disableAutohide) {
108
+ return;
109
+ }
110
+
111
+ _lastScrollHandlerRun = new Date().getTime();
112
+
113
+ detectState(autoHidingNavbar);
114
+ }
115
+
116
+ function bindEvents(autoHidingNavbar) {
117
+ $document.on('scroll.' + pluginName, function() {
118
+ if (new Date().getTime() - _lastScrollHandlerRun > _throttleDelay) {
119
+ scrollHandler(autoHidingNavbar);
120
+ }
121
+ else {
122
+ clearTimeout(_scrollThrottleTimer);
123
+ _scrollThrottleTimer = setTimeout(function() {
124
+ scrollHandler(autoHidingNavbar);
125
+ }, _throttleDelay);
126
+ }
127
+ });
128
+
129
+ $window.on('resize.' + pluginName, function() {
130
+ clearTimeout(_resizeThrottleTimer);
131
+ _resizeThrottleTimer = setTimeout(function() {
132
+ _windowHeight = $window.height();
133
+ }, _throttleDelay);
134
+ });
135
+ }
136
+
137
+ function unbindEvents() {
138
+ $document.off('.' + pluginName);
139
+
140
+ $window.off('.' + pluginName);
141
+ }
142
+
143
+ AutoHidingNavbar.prototype = {
144
+ init: function() {
145
+ this.elements = {
146
+ navbar: this.element
147
+ };
148
+
149
+ this.setDisableAutohide(this.settings.disableAutohide);
150
+ this.setShowOnUpscroll(this.settings.showOnUpscroll);
151
+ this.setShowOnBottom(this.settings.showOnBottom);
152
+ this.setHideOffset(this.settings.hideOffset);
153
+ this.setAnimationDuration(this.settings.animationDuration);
154
+
155
+ _hideOffset = this.settings.hideOffset === 'auto' ? parseInt(this.element.css('height'), 10) : this.settings.hideOffset;
156
+ bindEvents(this);
157
+
158
+ return this.element;
159
+ },
160
+ setDisableAutohide: function(value) {
161
+ this.settings.disableAutohide = value;
162
+ return this.element;
163
+ },
164
+ setShowOnUpscroll: function(value) {
165
+ this.settings.showOnUpscroll = value;
166
+ return this.element;
167
+ },
168
+ setShowOnBottom: function(value) {
169
+ this.settings.showOnBottom = value;
170
+ return this.element;
171
+ },
172
+ setHideOffset: function(value) {
173
+ this.settings.hideOffset = value;
174
+ return this.element;
175
+ },
176
+ setAnimationDuration: function(value) {
177
+ this.settings.animationDuration = value;
178
+ return this.element;
179
+ },
180
+ show: function() {
181
+ show(this);
182
+ return this.element;
183
+ },
184
+ hide: function() {
185
+ hide(this);
186
+ return this.element;
187
+ },
188
+ destroy: function() {
189
+ unbindEvents(this);
190
+ show(this);
191
+ $.data(this, 'plugin_' + pluginName, null);
192
+ return this.element;
193
+ }
194
+ };
195
+
196
+ $.fn[pluginName] = function(options) {
197
+ var args = arguments;
198
+
199
+ if (options === undefined || typeof options === 'object') {
200
+ return this.each(function() {
201
+ if (!$.data(this, 'plugin_' + pluginName)) {
202
+ $.data(this, 'plugin_' + pluginName, new AutoHidingNavbar(this, options));
203
+ }
204
+ });
205
+ } else if (typeof options === 'string' && options[0] !== '_' && options !== 'init') {
206
+ var returns;
207
+
208
+ this.each(function() {
209
+ var instance = $.data(this, 'plugin_' + pluginName);
210
+
211
+ if (instance instanceof AutoHidingNavbar && typeof instance[options] === 'function') {
212
+ returns = instance[options].apply(instance, Array.prototype.slice.call(args, 1));
213
+ }
214
+ });
215
+
216
+ return returns !== undefined ? returns : this;
217
+ }
218
+
219
+ };
220
+
221
221
  })(jQuery, window, document);
package/public/persona.js CHANGED
@@ -10,10 +10,6 @@ $(document).ready(function () {
10
10
  $(window).on('resize', utils.debounce(configureNavbarHiding, 200));
11
11
  $(window).on('resize', updatePanelOffset);
12
12
 
13
- $(window).on('action:app.loggedIn', function () {
14
- setupMobileMenu();
15
- });
16
-
17
13
  $(window).on('action:app.load', function () {
18
14
  setupTaskbar();
19
15
  setupMobileMenu();
@@ -196,14 +192,14 @@ $(document).ready(function () {
196
192
  return;
197
193
  }
198
194
 
199
- require(['pulling', 'storage'], function (Pulling, Storage) {
195
+ require(['pulling', 'storage', 'alerts'], function (Pulling, Storage, alerts) {
200
196
  if (!Pulling) {
201
197
  return;
202
198
  }
203
199
 
204
200
  // initialization
205
201
 
206
- var chatMenuVisible = !config.disableChat && app.user && parseInt(app.user.uid, 10);
202
+ var chatMenuVisible = app.user && parseInt(app.user.uid, 10);
207
203
  var swapped = !!Storage.getItem('persona:menus:legacy-layout');
208
204
  var margin = window.innerWidth;
209
205
 
@@ -285,19 +281,16 @@ $(document).ready(function () {
285
281
  navSlideout.enable().toggle();
286
282
  });
287
283
 
288
- function loadNotifications() {
289
- require(['notifications'], function (notifications) {
290
- const notifList = $('#menu [data-section="notifications"] ul');
291
- notifications.loadNotifications(notifList, function () {
292
- notifList.find('.deco-none').removeClass('deco-none');
293
- console.log(notifList.find('.deco-none'));
284
+ if (chatMenuVisible) {
285
+ chatsSlideout.on('opened', function loadNotifications() {
286
+ require(['notifications'], function (notifications) {
287
+ const notifList = $('#chats-menu [data-section="notifications"] ul');
288
+ notifications.loadNotifications(notifList, function () {
289
+ notifList.find('.deco-none').removeClass('deco-none');
290
+ });
294
291
  });
295
292
  });
296
- }
297
-
298
- navSlideout.on('opened', loadNotifications);
299
293
 
300
- if (chatMenuVisible) {
301
294
  navSlideout.on('beforeopen', function () {
302
295
  chatsSlideout.close();
303
296
  chatsSlideout.disable();
@@ -306,13 +299,16 @@ $(document).ready(function () {
306
299
  });
307
300
  }
308
301
 
309
- $('#menu [data-section="navigation"] ul').html($('#main-nav').html() + ($('#search-menu').html() || '') + ($('#logged-out-menu').html() || ''));
302
+ $('#menu [data-section="navigation"] ul').html(
303
+ $('#main-nav').html() +
304
+ ($('#logged-out-menu').html() || '')
305
+ );
310
306
 
311
- $('#user-control-list').children().clone(true, true).appendTo($('#menu [data-section="profile"] ul'));
307
+ $('#user-control-list').children().clone(true, true).appendTo($('#chats-menu [data-section="profile"] ul'));
312
308
 
313
309
  socket.on('event:user_status_change', function (data) {
314
310
  if (parseInt(data.uid, 10) === app.user.uid) {
315
- app.updateUserStatus($('#menu [component="user/status"]'), data.status);
311
+ app.updateUserStatus($('#chats-menu [component="user/status"]'), data.status);
316
312
  navSlideout.close();
317
313
  }
318
314
  });
@@ -344,6 +340,27 @@ $(document).ready(function () {
344
340
  });
345
341
  }
346
342
 
343
+ const searchInputEl = $('.navbar-header .navbar-search input[name="term"]');
344
+ const searchButton = $('.navbar-header .navbar-search button[type="button"]');
345
+ searchButton.off('click').on('click', function () {
346
+ if (!config.loggedIn && !app.user.privileges['search:content']) {
347
+ alerts.alert({
348
+ message: '[[error:search-requires-login]]',
349
+ timeout: 3000,
350
+ });
351
+ ajaxify.go('login');
352
+ return false;
353
+ }
354
+
355
+ searchButton.addClass('hidden');
356
+ searchInputEl.removeClass('hidden').focus();
357
+ searchInputEl.off('blur').on('blur', function () {
358
+ searchInputEl.addClass('hidden');
359
+ searchButton.removeClass('hidden');
360
+ });
361
+ return false;
362
+ });
363
+
347
364
  // add a checkbox in the user settings page
348
365
  // so users can swap the sides the menus appear on
349
366
 
@@ -1,35 +1,35 @@
1
- <div class="account">
2
- <!-- IMPORT partials/account/header.tpl -->
3
-
4
- <div class="users row">
5
- <h1>[[pages:account/blocks, {username}]]</h1>
6
-
7
- <div class="col-sm-8 col-xs-12">
8
- <ul id="users-container" class="users-container" data-nextstart="{nextStart}">
9
- <!-- IMPORT partials/users_list.tpl -->
10
- </ul>
11
- <div class="alert alert-warning text-center"<!-- IF users.length --> style="display: none;"<!-- END -->>[[user:has_no_blocks]]</div>
12
- <!-- IMPORT partials/paginator.tpl -->
13
- </div>
14
- <div class="col-sm-4 col-xs-12">
15
- <div class="panel panel-default">
16
- <div class="panel-body form">
17
- <div class="form-group">
18
- <label for="user-search">[[users:search]]</label>
19
- <input class="form-control" type="text" id="user-search" placeholder="[[users:enter_username]]" />
20
- <ul class="block-edit list-group">
21
- {{{ each edit }}}
22
- <li class="list-group-item clearfix">
23
- <button class="btn btn-sm btn-primary pull-right" data-uid="{../uid}" data-action="toggle">[[user:block_toggle]]</button>
24
- <div class="pull-left">
25
- <a href="{config.relative_path}/uid/{../uid}">{buildAvatar(edit, "sm", true)} {../username}</a>
26
- </div>
27
- </li>
28
- {{{ end }}}
29
- </ul>
30
- </div>
31
- </div>
32
- </div>
33
- </div>
34
- </div>
1
+ <div class="account">
2
+ <!-- IMPORT partials/account/header.tpl -->
3
+
4
+ <div class="users row">
5
+ <h1>[[pages:account/blocks, {username}]]</h1>
6
+
7
+ <div class="col-sm-8 col-xs-12">
8
+ <ul id="users-container" class="users-container" data-nextstart="{nextStart}">
9
+ <!-- IMPORT partials/users_list.tpl -->
10
+ </ul>
11
+ <div class="alert alert-warning text-center"<!-- IF users.length --> style="display: none;"<!-- END -->>[[user:has_no_blocks]]</div>
12
+ <!-- IMPORT partials/paginator.tpl -->
13
+ </div>
14
+ <div class="col-sm-4 col-xs-12">
15
+ <div class="panel panel-default">
16
+ <div class="panel-body form">
17
+ <div class="form-group">
18
+ <label for="user-search">[[users:search]]</label>
19
+ <input class="form-control" type="text" id="user-search" placeholder="[[users:enter_username]]" />
20
+ <ul class="block-edit list-group">
21
+ {{{ each edit }}}
22
+ <li class="list-group-item clearfix">
23
+ <button class="btn btn-sm btn-primary pull-right" data-uid="{../uid}" data-action="toggle">[[user:block_toggle]]</button>
24
+ <div class="pull-left">
25
+ <a href="{config.relative_path}/uid/{../uid}">{buildAvatar(edit, "sm", true)} {../username}</a>
26
+ </div>
27
+ </li>
28
+ {{{ end }}}
29
+ </ul>
30
+ </div>
31
+ </div>
32
+ </div>
33
+ </div>
34
+ </div>
35
35
  </div>