nodebb-theme-persona 11.3.1 → 11.3.5

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 (220) 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/chats.less +622 -622
  85. package/less/flags.less +42 -42
  86. package/less/footer.less +17 -17
  87. package/less/ip-blacklist.less +6 -6
  88. package/less/keyframes.less +152 -152
  89. package/less/mixins.less +6 -0
  90. package/less/mobile.less +291 -291
  91. package/less/modules/composer-default.less +16 -16
  92. package/less/modules/cookie-consent.less +12 -12
  93. package/less/modules/fab.less +32 -32
  94. package/less/modules/morph.less +268 -268
  95. package/less/modules/necro-post.less +8 -8
  96. package/less/modules/nprogress.less +80 -80
  97. package/less/modules/usercard.less +64 -64
  98. package/less/noscript.less +82 -82
  99. package/less/notifications.less +37 -37
  100. package/less/outgoing.less +8 -8
  101. package/less/persona.less +47 -47
  102. package/less/post-queue.less +19 -19
  103. package/less/register.less +75 -75
  104. package/less/rtl.less +132 -132
  105. package/less/style.less +4 -0
  106. package/less/tags.less +36 -36
  107. package/less/topic.less +7 -1
  108. package/less/users.less +72 -72
  109. package/less/variables.less +6 -6
  110. package/package.json +6 -6
  111. package/public/.eslintrc +2 -2
  112. package/public/admin.js +5 -14
  113. package/public/modules/autohidingnavbar.js +220 -220
  114. package/public/modules/quickreply.js +11 -14
  115. package/public/persona.js +21 -22
  116. package/templates/account/blocks.tpl +34 -34
  117. package/templates/account/categories.tpl +28 -28
  118. package/templates/account/consent.tpl +68 -68
  119. package/templates/account/edit/email.tpl +30 -30
  120. package/templates/account/edit/password.tpl +31 -31
  121. package/templates/account/edit/username.tpl +29 -29
  122. package/templates/account/followers.tpl +16 -16
  123. package/templates/account/following.tpl +16 -16
  124. package/templates/account/groups.tpl +16 -16
  125. package/templates/account/info.tpl +187 -187
  126. package/templates/account/posts.tpl +18 -18
  127. package/templates/account/sessions.tpl +31 -31
  128. package/templates/account/topics.tpl +30 -30
  129. package/templates/account/uploads.tpl +42 -42
  130. package/templates/admin/plugins/persona.tpl +28 -28
  131. package/templates/alert.tpl +15 -15
  132. package/templates/categories.tpl +31 -31
  133. package/templates/category.tpl +62 -62
  134. package/templates/chats.tpl +15 -15
  135. package/templates/flags/list.tpl +71 -71
  136. package/templates/footer.tpl +18 -18
  137. package/templates/groups/details.tpl +272 -272
  138. package/templates/groups/list.tpl +46 -46
  139. package/templates/groups/members.tpl +8 -8
  140. package/templates/ip-blacklist.tpl +55 -55
  141. package/templates/login.tpl +90 -90
  142. package/templates/modules/taskbar.tpl +2 -2
  143. package/templates/modules/usercard.tpl +36 -36
  144. package/templates/notifications.tpl +64 -64
  145. package/templates/partials/acceptTos.tpl +8 -8
  146. package/templates/partials/account/category-item.tpl +22 -22
  147. package/templates/partials/account/header.tpl +46 -46
  148. package/templates/partials/breadcrumbs.tpl +18 -18
  149. package/templates/partials/buttons/newTopic.tpl +15 -15
  150. package/templates/partials/categories/item.tpl +46 -46
  151. package/templates/partials/categories/lastpost.tpl +26 -26
  152. package/templates/partials/categories/link.tpl +10 -10
  153. package/templates/partials/category/sort.tpl +14 -14
  154. package/templates/partials/category/subcategory.tpl +17 -17
  155. package/templates/partials/category/tags.tpl +4 -4
  156. package/templates/partials/category/tools.tpl +80 -80
  157. package/templates/partials/category/watch.tpl +22 -22
  158. package/templates/partials/category-filter-content.tpl +18 -18
  159. package/templates/partials/category-filter-right.tpl +2 -2
  160. package/templates/partials/category-filter.tpl +2 -2
  161. package/templates/partials/category-selector-right.tpl +2 -2
  162. package/templates/partials/category-selector.tpl +2 -2
  163. package/templates/partials/change_owner_modal.tpl +22 -22
  164. package/templates/partials/chats/dropdown.tpl +33 -33
  165. package/templates/partials/chats/messages.tpl +6 -6
  166. package/templates/partials/chats/recent_room.tpl +24 -24
  167. package/templates/partials/chats-menu.tpl +10 -10
  168. package/templates/partials/cookie-consent.tpl +4 -4
  169. package/templates/partials/delete_posts_modal.tpl +18 -18
  170. package/templates/partials/fork_thread_modal.tpl +21 -21
  171. package/templates/partials/groups/list.tpl +20 -20
  172. package/templates/partials/groups/memberlist.tpl +39 -39
  173. package/templates/partials/menu.tpl +238 -238
  174. package/templates/partials/merge_topics_modal.tpl +57 -57
  175. package/templates/partials/modals/flag_modal.tpl +44 -44
  176. package/templates/partials/modals/manage_room.tpl +10 -10
  177. package/templates/partials/modals/manage_room_users.tpl +6 -6
  178. package/templates/partials/modals/post_history.tpl +36 -36
  179. package/templates/partials/modals/rename_room.tpl +3 -3
  180. package/templates/partials/modals/votes_modal.tpl +10 -10
  181. package/templates/partials/move_thread_modal.tpl +16 -16
  182. package/templates/partials/paginator.tpl +44 -44
  183. package/templates/partials/post_bar.tpl +20 -20
  184. package/templates/partials/posts_list.tpl +7 -7
  185. package/templates/partials/quick-search-results.tpl +30 -30
  186. package/templates/partials/slideout-menu.tpl +26 -26
  187. package/templates/partials/tags_list.tpl +4 -4
  188. package/templates/partials/thread_tools.tpl +7 -7
  189. package/templates/partials/topic/badge.tpl +4 -4
  190. package/templates/partials/topic/browsing-users.tpl +12 -12
  191. package/templates/partials/topic/deleted-message.tpl +10 -10
  192. package/templates/partials/topic/navigation-post.tpl +11 -11
  193. package/templates/partials/topic/navigator.tpl +31 -31
  194. package/templates/partials/topic/necro-post.tpl +2 -2
  195. package/templates/partials/topic/post-menu.tpl +4 -4
  196. package/templates/partials/topic/post.tpl +104 -104
  197. package/templates/partials/topic/quickreply.tpl +20 -20
  198. package/templates/partials/topic/reply-button.tpl +26 -26
  199. package/templates/partials/topic/selection-tooltip.tpl +2 -2
  200. package/templates/partials/topic/sort.tpl +9 -9
  201. package/templates/partials/topic/stats.tpl +11 -11
  202. package/templates/partials/topic/tags.tpl +4 -4
  203. package/templates/partials/topic/watch.tpl +20 -20
  204. package/templates/partials/topics_list.tpl +3 -3
  205. package/templates/partials/users_list.tpl +39 -39
  206. package/templates/partials/users_list_menu.tpl +10 -10
  207. package/templates/popular.tpl +61 -61
  208. package/templates/post-queue.tpl +75 -75
  209. package/templates/recent.tpl +51 -51
  210. package/templates/reset.tpl +23 -23
  211. package/templates/reset_code.tpl +41 -41
  212. package/templates/tag.tpl +35 -35
  213. package/templates/tags.tpl +30 -30
  214. package/templates/top.tpl +61 -61
  215. package/templates/tos.tpl +4 -4
  216. package/templates/unread.tpl +49 -49
  217. package/templates/unsubscribe.tpl +6 -6
  218. package/templates/users.tpl +47 -47
  219. package/theme.json +6 -6
  220. package/theme.less +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nodebb-theme-persona",
3
- "version": "11.3.1",
3
+ "version": "11.3.5",
4
4
  "nbbpm": {
5
5
  "compatibility": "^1.18.0"
6
6
  },
@@ -8,7 +8,7 @@
8
8
  "main": "library.js",
9
9
  "repository": {
10
10
  "type": "git",
11
- "url": "https://github.com/psychobunny/nodebb-theme-persona"
11
+ "url": "https://github.com/NodeBB/nodebb-theme-persona"
12
12
  },
13
13
  "scripts": {
14
14
  "lint": "eslint ."
@@ -23,23 +23,23 @@
23
23
  "contributors": [
24
24
  {
25
25
  "name": "Andrew Rodrigues",
26
- "email": "andrew@designcreateplay.com",
26
+ "email": "andrew@nodebb.org",
27
27
  "url": "https://github.com/psychobunny"
28
28
  },
29
29
  {
30
30
  "name": "Julian Lam",
31
- "email": "julian@designcreateplay.com",
31
+ "email": "julian@nodebb.org",
32
32
  "url": "https://github.com/julianlam"
33
33
  },
34
34
  {
35
35
  "name": "Barış Soner Uşaklı",
36
- "email": "baris@designcreateplay.com",
36
+ "email": "baris@nodebb.org",
37
37
  "url": "https://github.com/barisusakli"
38
38
  }
39
39
  ],
40
40
  "license": "BSD-2-Clause",
41
41
  "bugs": {
42
- "url": "https://github.com/psychobunny/nodebb-theme-persona/issues"
42
+ "url": "https://github.com/NodeBB/nodebb-theme-persona/issues"
43
43
  },
44
44
  "dependencies": {
45
45
  "pulling": "^2.0.0",
package/public/.eslintrc CHANGED
@@ -1,3 +1,3 @@
1
- {
2
- "extends": "nodebb/public"
1
+ {
2
+ "extends": "nodebb/public"
3
3
  }
package/public/admin.js CHANGED
@@ -1,24 +1,15 @@
1
1
  'use strict';
2
- /* globals $, app */
3
-
4
- define('admin/plugins/persona', ['settings'], function(Settings) {
5
2
 
3
+ define('admin/plugins/persona', ['settings'], function (Settings) {
6
4
  var ACP = {};
7
5
 
8
- ACP.init = function() {
6
+ ACP.init = function () {
9
7
  Settings.load('persona', $('.persona-settings'));
10
8
 
11
- $('#save').on('click', function() {
12
- Settings.save('persona', $('.persona-settings'), function() {
13
- app.alert({
14
- type: 'success',
15
- alert_id: 'persona-saved',
16
- title: 'Settings Saved',
17
- message: 'Persona settings saved'
18
- });
19
- });
9
+ $('#save').on('click', function () {
10
+ Settings.save('persona', $('.persona-settings'));
20
11
  });
21
12
  };
22
13
 
23
14
  return ACP;
24
- });
15
+ });
@@ -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);
@@ -1,14 +1,11 @@
1
- "use strict";
2
-
3
- /*globals $, app, ajaxify, socket*/
1
+ 'use strict';
4
2
 
5
3
  define('persona/quickreply', [
6
- 'components', 'composer/autocomplete', 'api'
7
- ], function(components, autocomplete, api) {
4
+ 'components', 'composer/autocomplete', 'api', 'alerts',
5
+ ], function (components, autocomplete, api, alerts) {
8
6
  var QuickReply = {};
9
7
 
10
- QuickReply.init = function() {
11
-
8
+ QuickReply.init = function () {
12
9
  var element = components.get('topic/quickreply/text');
13
10
  var data = {
14
11
  element: element,
@@ -16,17 +13,17 @@ define('persona/quickreply', [
16
13
  options: {
17
14
  style: {
18
15
  'z-index': 100,
19
- }
16
+ },
20
17
  // listPosition: function(position) {
21
18
  // this.$el.css(this._applyPlacement(position));
22
19
  // this.$el.css('position', 'absolute');
23
20
  // return this;
24
21
  // }
25
- }
22
+ },
26
23
  };
27
24
 
28
25
  $(window).trigger('composer:autocomplete:init', data);
29
- autocomplete._active['persona_qr'] = autocomplete.setup(data);
26
+ autocomplete._active.persona_qr = autocomplete.setup(data);
30
27
  // data.element.textcomplete(data.strategies, data.options);
31
28
  // $('.textcomplete-wrapper').css('height', '100%').find('textarea').css('height', '100%');
32
29
 
@@ -41,21 +38,21 @@ define('persona/quickreply', [
41
38
  var replyData = {
42
39
  tid: ajaxify.data.tid,
43
40
  handle: undefined,
44
- content: replyMsg
41
+ content: replyMsg,
45
42
  };
46
43
 
47
44
  ready = false;
48
45
  api.post(`/topics/${ajaxify.data.tid}`, replyData, function (err, data) {
49
46
  ready = true;
50
47
  if (err) {
51
- return app.alertError(err.message);
48
+ return alerts.error(err);
52
49
  }
53
50
  if (data && data.queued) {
54
- app.alertSuccess(data.message);
51
+ alerts.success(data.message);
55
52
  }
56
53
 
57
54
  components.get('topic/quickreply/text').val('');
58
- autocomplete._active['persona_qr'].hide();
55
+ autocomplete._active.persona_qr.hide();
59
56
  });
60
57
  });
61
58
  };