nodebb-theme-persona 12.1.4 → 12.1.6

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 (247) hide show
  1. package/README.md +14 -14
  2. package/package.json +2 -2
  3. package/public/persona.js +11 -23
  4. package/{less/account.less → scss/account.scss} +13 -97
  5. package/{less/categories.less → scss/categories.scss} +10 -40
  6. package/{less/category.less → scss/category.scss} +26 -75
  7. package/{less/chats.less → scss/chats.scss} +35 -88
  8. package/{less/flags.less → scss/flags.scss} +3 -3
  9. package/{less/footer.less → scss/footer.scss} +0 -1
  10. package/{less/groups.less → scss/groups.scss} +14 -38
  11. package/{less/header.less → scss/header.scss} +63 -139
  12. package/{less/helpers.less → scss/helpers.scss} +0 -0
  13. package/{less/keyframes.less → scss/keyframes.scss} +0 -0
  14. package/{less/mixins.less → scss/mixins.scss} +17 -59
  15. package/{less/mobile.less → scss/mobile.scss} +13 -18
  16. package/{less/modules/alerts.less → scss/modules/alerts.scss} +21 -21
  17. package/{less/modules/composer-default.less → scss/modules/composer-default.scss} +2 -2
  18. package/{less/modules/cookie-consent.less → scss/modules/cookie-consent.scss} +1 -1
  19. package/{less/modules/fab.less → scss/modules/fab.scss} +2 -2
  20. package/{less/modules/morph.less → scss/modules/morph.scss} +1 -1
  21. package/{less/modules/necro-post.less → scss/modules/necro-post.scss} +0 -0
  22. package/scss/modules/nprogress.scss +80 -0
  23. package/{less/modules/taskbar.less → scss/modules/taskbar.scss} +11 -10
  24. package/{less/modules/usercard.less → scss/modules/usercard.scss} +0 -0
  25. package/{less/noscript.less → scss/noscript.scss} +5 -7
  26. package/{less/outgoing.less → scss/outgoing.scss} +0 -0
  27. package/scss/overrides.scss +44 -0
  28. package/{less/persona.less → scss/persona.scss} +1 -13
  29. package/{less/posts_list.less → scss/posts_list.scss} +11 -14
  30. package/{less/register.less → scss/register.scss} +2 -7
  31. package/scss/search.scss +39 -0
  32. package/{less/style.less → scss/style.scss} +23 -47
  33. package/scss/tags.scss +11 -0
  34. package/{less/topic.less → scss/topic.scss} +53 -90
  35. package/scss/topics_list.scss +17 -0
  36. package/{less/variables.less → scss/variables.scss} +3 -3
  37. package/templates/account/blocks.tpl +24 -26
  38. package/templates/account/categories.tpl +6 -6
  39. package/templates/account/consent.tpl +10 -10
  40. package/templates/account/edit/password.tpl +8 -10
  41. package/templates/account/edit/username.tpl +6 -10
  42. package/templates/account/edit.tpl +23 -23
  43. package/templates/account/followers.tpl +3 -3
  44. package/templates/account/following.tpl +3 -3
  45. package/templates/account/groups.tpl +2 -2
  46. package/templates/account/info.tpl +67 -72
  47. package/templates/account/posts.tpl +1 -1
  48. package/templates/account/profile.tpl +20 -18
  49. package/templates/account/sessions.tpl +3 -3
  50. package/templates/account/settings.tpl +93 -81
  51. package/templates/account/topics.tpl +5 -5
  52. package/templates/account/uploads.tpl +2 -2
  53. package/templates/admin/plugins/persona.tpl +3 -3
  54. package/templates/category.tpl +15 -14
  55. package/templates/chat.tpl +16 -9
  56. package/templates/chats.tpl +5 -3
  57. package/templates/flags/detail.tpl +86 -80
  58. package/templates/flags/list.tpl +4 -4
  59. package/templates/footer.tpl +1 -1
  60. package/templates/groups/details.tpl +23 -218
  61. package/templates/groups/list.tpl +11 -9
  62. package/templates/groups/members.tpl +1 -4
  63. package/templates/header.tpl +10 -4
  64. package/templates/ip-blacklist.tpl +22 -20
  65. package/templates/login.tpl +17 -14
  66. package/templates/modules/taskbar.tpl +1 -1
  67. package/templates/modules/usercard.tpl +2 -2
  68. package/templates/notifications.tpl +40 -38
  69. package/templates/partials/acceptTos.tpl +8 -8
  70. package/templates/partials/account/category-item.tpl +6 -5
  71. package/templates/partials/account/header.tpl +2 -2
  72. package/templates/partials/account/menu.tpl +37 -37
  73. package/templates/partials/breadcrumbs.tpl +1 -1
  74. package/templates/partials/buttons/newTopic.tpl +10 -3
  75. package/templates/partials/categories/item.tpl +24 -10
  76. package/templates/partials/categories/lastpost.tpl +3 -3
  77. package/templates/partials/categories/link.tpl +10 -10
  78. package/templates/partials/category/sort.tpl +7 -7
  79. package/templates/partials/category/subcategory.tpl +3 -3
  80. package/templates/partials/category/tags.tpl +3 -5
  81. package/templates/partials/category/tools.tpl +16 -16
  82. package/templates/partials/category/watch.tpl +8 -10
  83. package/templates/partials/category-filter-content.tpl +17 -5
  84. package/templates/partials/category-filter-right.tpl +1 -1
  85. package/templates/partials/category-selector-content.tpl +17 -4
  86. package/templates/partials/category-selector-right.tpl +1 -1
  87. package/templates/partials/chats/message-window.tpl +10 -8
  88. package/templates/partials/chats/message.tpl +11 -11
  89. package/templates/partials/chats/options.tpl +8 -8
  90. package/templates/partials/chats/recent_room.tpl +1 -1
  91. package/templates/partials/chats/system-message.tpl +1 -1
  92. package/templates/partials/chats/user.tpl +1 -1
  93. package/templates/partials/chats-menu.tpl +11 -11
  94. package/templates/partials/cookie-consent.tpl +1 -1
  95. package/templates/partials/flags/filters.tpl +34 -32
  96. package/templates/partials/groups/admin.tpl +195 -0
  97. package/templates/partials/groups/badge.tpl +1 -0
  98. package/templates/partials/groups/list.tpl +6 -6
  99. package/templates/partials/groups/memberlist.tpl +11 -10
  100. package/templates/partials/menu.tpl +149 -156
  101. package/templates/partials/notifications_list.tpl +2 -2
  102. package/templates/partials/paginator.tpl +21 -21
  103. package/templates/partials/post_bar.tpl +4 -4
  104. package/templates/partials/posts_list.tpl +1 -1
  105. package/templates/partials/posts_list_item.tpl +2 -2
  106. package/templates/partials/quick-search-results.tpl +14 -11
  107. package/templates/partials/slideout-menu.tpl +1 -1
  108. package/templates/partials/tags_list.tpl +3 -3
  109. package/templates/partials/thread_tools.tpl +4 -4
  110. package/templates/partials/toast.tpl +14 -0
  111. package/templates/partials/topic/deleted-message.tpl +2 -2
  112. package/templates/partials/topic/event.tpl +26 -0
  113. package/templates/partials/topic/navigation-post.tpl +3 -3
  114. package/templates/partials/topic/navigator.tpl +7 -7
  115. package/templates/partials/topic/necro-post.tpl +1 -1
  116. package/templates/partials/topic/post-menu-list.tpl +26 -23
  117. package/templates/partials/topic/post-menu.tpl +3 -3
  118. package/templates/partials/topic/post.tpl +49 -44
  119. package/templates/partials/topic/quickreply.tpl +3 -3
  120. package/templates/partials/topic/reply-button.tpl +3 -3
  121. package/templates/partials/topic/sort.tpl +5 -5
  122. package/templates/partials/topic/tag.tpl +1 -0
  123. package/templates/partials/topic/tags.tpl +3 -5
  124. package/templates/partials/topic/topic-menu-list.tpl +18 -16
  125. package/templates/partials/topic/watch.tpl +11 -10
  126. package/templates/partials/topic-filters.tpl +12 -0
  127. package/templates/partials/topic-terms.tpl +12 -0
  128. package/templates/partials/topics_list.tpl +27 -25
  129. package/templates/partials/users_list.tpl +22 -10
  130. package/templates/partials/users_list_menu.tpl +19 -9
  131. package/templates/popular.tpl +9 -35
  132. package/templates/post-queue.tpl +42 -35
  133. package/templates/recent.tpl +10 -24
  134. package/templates/register.tpl +17 -17
  135. package/templates/registerComplete.tpl +14 -10
  136. package/templates/reset.tpl +7 -5
  137. package/templates/reset_code.tpl +9 -9
  138. package/templates/search.tpl +100 -87
  139. package/templates/tag.tpl +8 -10
  140. package/templates/tags.tpl +5 -3
  141. package/templates/top.tpl +9 -35
  142. package/templates/topic.tpl +13 -11
  143. package/templates/tos.tpl +4 -4
  144. package/templates/unread.tpl +10 -22
  145. package/templates/users.tpl +7 -20
  146. package/theme.json +6 -6
  147. package/theme.scss +1 -0
  148. package/less/bootstrap/.csscomb.json +0 -297
  149. package/less/bootstrap/.csslintrc +0 -19
  150. package/less/bootstrap/alerts.less +0 -73
  151. package/less/bootstrap/badges.less +0 -66
  152. package/less/bootstrap/bootstrap.less +0 -50
  153. package/less/bootstrap/breadcrumbs.less +0 -26
  154. package/less/bootstrap/button-groups.less +0 -243
  155. package/less/bootstrap/buttons.less +0 -160
  156. package/less/bootstrap/carousel.less +0 -269
  157. package/less/bootstrap/close.less +0 -34
  158. package/less/bootstrap/code.less +0 -69
  159. package/less/bootstrap/component-animations.less +0 -33
  160. package/less/bootstrap/dropdowns.less +0 -214
  161. package/less/bootstrap/forms.less +0 -574
  162. package/less/bootstrap/glyphicons.less +0 -305
  163. package/less/bootstrap/grid.less +0 -84
  164. package/less/bootstrap/input-groups.less +0 -166
  165. package/less/bootstrap/jumbotron.less +0 -50
  166. package/less/bootstrap/labels.less +0 -64
  167. package/less/bootstrap/list-group.less +0 -124
  168. package/less/bootstrap/media.less +0 -61
  169. package/less/bootstrap/mixins/alerts.less +0 -14
  170. package/less/bootstrap/mixins/background-variant.less +0 -8
  171. package/less/bootstrap/mixins/border-radius.less +0 -18
  172. package/less/bootstrap/mixins/buttons.less +0 -52
  173. package/less/bootstrap/mixins/center-block.less +0 -7
  174. package/less/bootstrap/mixins/clearfix.less +0 -22
  175. package/less/bootstrap/mixins/forms.less +0 -85
  176. package/less/bootstrap/mixins/gradients.less +0 -59
  177. package/less/bootstrap/mixins/grid-framework.less +0 -91
  178. package/less/bootstrap/mixins/grid.less +0 -122
  179. package/less/bootstrap/mixins/hide-text.less +0 -21
  180. package/less/bootstrap/mixins/image.less +0 -33
  181. package/less/bootstrap/mixins/labels.less +0 -12
  182. package/less/bootstrap/mixins/list-group.less +0 -29
  183. package/less/bootstrap/mixins/nav-divider.less +0 -10
  184. package/less/bootstrap/mixins/nav-vertical-align.less +0 -9
  185. package/less/bootstrap/mixins/opacity.less +0 -8
  186. package/less/bootstrap/mixins/pagination.less +0 -23
  187. package/less/bootstrap/mixins/panels.less +0 -24
  188. package/less/bootstrap/mixins/progress-bar.less +0 -10
  189. package/less/bootstrap/mixins/reset-filter.less +0 -8
  190. package/less/bootstrap/mixins/resize.less +0 -6
  191. package/less/bootstrap/mixins/responsive-visibility.less +0 -15
  192. package/less/bootstrap/mixins/size.less +0 -10
  193. package/less/bootstrap/mixins/tab-focus.less +0 -9
  194. package/less/bootstrap/mixins/table-row.less +0 -28
  195. package/less/bootstrap/mixins/text-emphasis.less +0 -8
  196. package/less/bootstrap/mixins/text-overflow.less +0 -8
  197. package/less/bootstrap/mixins/vendor-prefixes.less +0 -227
  198. package/less/bootstrap/mixins.less +0 -39
  199. package/less/bootstrap/modals.less +0 -150
  200. package/less/bootstrap/navbar.less +0 -660
  201. package/less/bootstrap/navs.less +0 -242
  202. package/less/bootstrap/normalize.less +0 -427
  203. package/less/bootstrap/pager.less +0 -54
  204. package/less/bootstrap/pagination.less +0 -88
  205. package/less/bootstrap/panels.less +0 -265
  206. package/less/bootstrap/popovers.less +0 -135
  207. package/less/bootstrap/print.less +0 -107
  208. package/less/bootstrap/progress-bars.less +0 -87
  209. package/less/bootstrap/responsive-embed.less +0 -35
  210. package/less/bootstrap/responsive-utilities.less +0 -194
  211. package/less/bootstrap/scaffolding.less +0 -162
  212. package/less/bootstrap/tables.less +0 -234
  213. package/less/bootstrap/theme.less +0 -273
  214. package/less/bootstrap/thumbnails.less +0 -36
  215. package/less/bootstrap/tooltip.less +0 -102
  216. package/less/bootstrap/type.less +0 -302
  217. package/less/bootstrap/utilities.less +0 -55
  218. package/less/bootstrap/variables.less +0 -861
  219. package/less/bootstrap/wells.less +0 -29
  220. package/less/bootstrap-flipped.css +0 -1550
  221. package/less/ip-blacklist.less +0 -7
  222. package/less/modules/bottom-sheet.less +0 -60
  223. package/less/modules/nprogress.less +0 -80
  224. package/less/notifications.less +0 -38
  225. package/less/post-queue.less +0 -19
  226. package/less/rtl.less +0 -132
  227. package/less/search.less +0 -96
  228. package/less/tags.less +0 -37
  229. package/less/topics_list.less +0 -16
  230. package/less/users.less +0 -73
  231. package/templates/alert.tpl +0 -15
  232. package/templates/partials/change_owner_modal.tpl +0 -22
  233. package/templates/partials/delete_posts_modal.tpl +0 -19
  234. package/templates/partials/fork_thread_modal.tpl +0 -22
  235. package/templates/partials/merge_topics_modal.tpl +0 -58
  236. package/templates/partials/modals/change_picture_modal.tpl +0 -73
  237. package/templates/partials/modals/flag_modal.tpl +0 -45
  238. package/templates/partials/modals/manage_room.tpl +0 -11
  239. package/templates/partials/modals/manage_room_users.tpl +0 -7
  240. package/templates/partials/modals/post_history.tpl +0 -36
  241. package/templates/partials/modals/rename_room.tpl +0 -4
  242. package/templates/partials/modals/upload_file_modal.tpl +0 -44
  243. package/templates/partials/modals/upload_picture_from_url_modal.tpl +0 -17
  244. package/templates/partials/modals/votes_modal.tpl +0 -10
  245. package/templates/partials/move_thread_modal.tpl +0 -17
  246. package/templates/partials/topic/badge.tpl +0 -5
  247. package/theme.less +0 -2
@@ -1,38 +1,38 @@
1
1
  <div class="text-center">
2
- <div class="panel panel-default">
3
- <div class="panel-body collapse" id="flags-daily-wrapper" aria-expanded="false">
2
+ <div class="card mb-3">
3
+ <div class="card-body collapse" id="flags-daily-wrapper" aria-expanded="false">
4
4
  <div><canvas id="flags:daily" height="150"></canvas></div>
5
5
  </div>
6
- <div class="panel-footer" data-toggle="collapse" data-target="#flags-daily-wrapper" aria-controls="#flags-daily-wrapper"><small>[[flags:graph-label]]</small>&nbsp;<i class="fa fa-sort"></i></div>
6
+ <div class="card-footer" data-bs-toggle="collapse" data-bs-target="#flags-daily-wrapper" aria-controls="#flags-daily-wrapper"><small>[[flags:graph-label]]</small>&nbsp;<i class="fa fa-sort"></i></div>
7
7
  </div>
8
8
  </div>
9
9
 
10
- <div class="panel panel-default">
11
- <div class="panel-heading">
12
- <h3 class="panel-title">[[flags:quick-filters]]</h3>
10
+ <div class="card mb-3">
11
+ <div class="card-header">
12
+ [[flags:quick-filters]]
13
13
  </div>
14
- <div class="panel-body">
14
+ <div class="card-body">
15
15
  <ul>
16
16
  <li><a href="{config.relative_path}/flags?quick=mine">[[flags:filter-quick-mine]]</a></li>
17
17
  </ul>
18
18
  </div>
19
19
  </div>
20
20
 
21
- <div class="panel panel-default">
22
- <div class="panel-heading">
23
- <h3 class="panel-title">[[flags:filters]]</h3>
21
+ <div class="card mb-3">
22
+ <div class="card-header">
23
+ [[flags:filters]]
24
24
  </div>
25
- <div class="panel-body">
25
+ <div class="card-body">
26
26
  <form role="form" component="flags/filters">
27
27
  <fieldset>
28
- <div class="form-group">
29
- <label for="filter-cid">[[flags:filter-cid]]</label>
28
+ <div class="mb-3">
29
+ <label class="form-label" for="filter-cid">[[flags:filter-cid]]</label>
30
30
  <div class="input-group">
31
31
  <!-- IMPORT partials/category-filter.tpl -->
32
32
  </div>
33
33
  </div>
34
- <div class="form-group">
35
- <label for="sort">[[flags:sort]]</label>
34
+ <div class="mb-3">
35
+ <label class="form-label" for="sort">[[flags:sort]]</label>
36
36
  <select class="form-control" id="sort" name="sort">
37
37
  <optgroup label="[[flags:sort-all]]">
38
38
  <option value="newest">[[flags:sort-newest]]</option>
@@ -46,8 +46,8 @@
46
46
  </optgroup>
47
47
  </select>
48
48
  </div>
49
- <div class="form-group">
50
- <label for="filter-state">[[flags:filter-state]]</label>
49
+ <div class="mb-3">
50
+ <label class="form-label" for="filter-state">[[flags:filter-state]]</label>
51
51
  <select class="form-control" id="filter-state" name="state">
52
52
  <option value="">[[flags:state-all]]</option>
53
53
  <option value="open">[[flags:state-open]]</option>
@@ -57,8 +57,8 @@
57
57
  </select>
58
58
  </div>
59
59
 
60
- <div class="form-group">
61
- <label for="filter-type">[[flags:filter-type]]</label>
60
+ <div class="mb-3">
61
+ <label class="form-label" for="filter-type">[[flags:filter-type]]</label>
62
62
  <select class="form-control" id="filter-type" name="type">
63
63
  <option value="">[[flags:filter-type-all]]</option>
64
64
  <option value="post">[[flags:filter-type-post]]</option>
@@ -67,29 +67,31 @@
67
67
  </div>
68
68
  </fieldset>
69
69
 
70
- <fieldset class="collapse{{{ if expanded }}} in{{{ end }}}" id="more-filters" aria-expanded="{expanded}">
71
- <div class="form-group">
72
- <label for="filter-assignee">[[flags:filter-assignee]]</label>
70
+ <fieldset class="collapse{{{ if expanded }}} show{{{ end }}}" id="more-filters" aria-expanded="{expanded}">
71
+ <div class="mb-3">
72
+ <label class="form-label" for="filter-assignee">[[flags:filter-assignee]]</label>
73
73
  <input type="text" class="form-control" id="filter-assignee" name="assignee" />
74
74
  </div>
75
75
 
76
- <div class="form-group">
77
- <label for="filter-targetUid">[[flags:filter-targetUid]]</label>
76
+ <div class="mb-3">
77
+ <label class="form-label" for="filter-targetUid">[[flags:filter-targetUid]]</label>
78
78
  <input type="text" class="form-control" id="filter-targetUid" name="targetUid" />
79
79
  </div>
80
80
 
81
- <div class="form-group">
82
- <label for="filter-reporterId">[[flags:filter-reporterId]]</label>
81
+ <div class="mb-3">
82
+ <label class="form-label" for="filter-reporterId">[[flags:filter-reporterId]]</label>
83
83
  <input type="text" class="form-control" id="filter-reporterId" name="reporterId" />
84
84
  </div>
85
85
  </fieldset>
86
86
 
87
- {{{ if expanded }}}
88
- <button type="button" class="btn btn-link btn-block" data-toggle="collapse" data-target="#more-filters" aria-controls="#more-filters" data-text-variant="[[flags:more-filters]] ">[[flags:fewer-filters]]&nbsp;<i class="fa fa-sort"></i></button>
89
- {{{ else }}}
90
- <button type="button" class="btn btn-link btn-block" data-toggle="collapse" data-target="#more-filters" aria-controls="#more-filters" data-text-variant="[[flags:fewer-filters]] ">[[flags:more-filters]]&nbsp;<i class="fa fa-sort"></i></button>
91
- {{{ end }}}
92
- <button type="button" id="apply-filters" class="btn btn-primary btn-block">[[flags:apply-filters]]</button>
87
+ <div class="d-grid gap-2">
88
+ {{{ if expanded }}}
89
+ <button type="button" class="btn btn-link" data-bs-toggle="collapse" data-bs-target="#more-filters" aria-controls="#more-filters" data-text-variant="[[flags:more-filters]] ">[[flags:fewer-filters]]&nbsp;<i class="fa fa-sort"></i></button>
90
+ {{{ else }}}
91
+ <button type="button" class="btn btn-link" data-bs-toggle="collapse" data-bs-target="#more-filters" aria-controls="#more-filters" data-text-variant="[[flags:fewer-filters]] ">[[flags:more-filters]]&nbsp;<i class="fa fa-sort"></i></button>
92
+ {{{ end }}}
93
+ <button type="button" id="apply-filters" class="btn btn-primary">[[flags:apply-filters]]</button>
94
+ </div>
93
95
  </form>
94
96
  </div>
95
97
  </div>
@@ -0,0 +1,195 @@
1
+ <div class="card mb-3">
2
+ <div class="card-header">
3
+ <div class="fs-5">
4
+ <i class="fa fa-clock-o"></i> [[groups:details.pending]]
5
+ <!-- IF group.pending.length -->
6
+ <div class="btn-group float-end">
7
+ <button type="button" class="btn btn-outline-secondary btn-sm dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
8
+ [[global:more]] <span class="caret"></span>
9
+ </button>
10
+ <ul class="dropdown-menu" role="menu">
11
+ <li><a class="dropdown-item" href="#" data-ajaxify="false" data-action="acceptAll">[[groups:pending.accept_all]]</a></li>
12
+ <li><a class="dropdown-item" href="#" data-ajaxify="false" data-action="rejectAll">[[groups:pending.reject_all]]</a></li>
13
+ </ul>
14
+ </div>
15
+ <!-- ENDIF group.pending.length -->
16
+ </div>
17
+ </div>
18
+ <div class="card-body">
19
+ <table component="groups/pending" class="table table-striped table-hover">
20
+ <!-- IF !group.pending.length -->
21
+ <div class="alert alert-info">[[groups:pending.none]]</div>
22
+ <!-- ENDIF !group.pending.length -->
23
+ {{{each group.pending}}}
24
+ <tr data-uid="{group.pending.uid}">
25
+ <td class="p-2">
26
+ <a href="{config.relative_path}/user/{group.pending.userslug}">{buildAvatar(group.pending, "24px", true)}</a>
27
+ </td>
28
+ <td class="member-name p-2">
29
+ <a href="{config.relative_path}/user/{group.pending.userslug}">{group.pending.username}</a>
30
+ </td>
31
+ <td class="p-2">
32
+ <div class="btn-group float-end">
33
+ <button type="button" class="btn btn-outline-secondary btn-sm dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
34
+ [[global:more]] <span class="caret"></span>
35
+ </button>
36
+ <ul class="dropdown-menu" role="menu">
37
+ <li><a class="dropdown-item" href="#" data-ajaxify="false" data-action="accept">[[groups:pending.accept]]</a></li>
38
+ <li><a class="dropdown-item" href="#" data-ajaxify="false" data-action="reject">[[groups:pending.reject]]</a></li>
39
+ </ul>
40
+ </div>
41
+ </td>
42
+ </tr>
43
+ {{{end}}}
44
+ </table>
45
+ </div>
46
+ </div>
47
+ <div class="card mb-3">
48
+ <div class="card-header">
49
+ <span class="fs-5">
50
+ <i class="fa fa-gift"></i> [[groups:details.invited]]
51
+ </span>
52
+ </div>
53
+ <div class="card-body">
54
+ <div class="input-group mb-2">
55
+ <input class="form-control" type="text" component="groups/members/invite" placeholder="[[groups:invited.search]]"/>
56
+ <span class="input-group-text search-button"><i class="fa fa-search"></i></span>
57
+ </div>
58
+
59
+ <div class="mb-2">
60
+ <textarea class="form-control" component="groups/members/bulk-invite" placeholder="[[groups:bulk-invite-instructions]]"></textarea>
61
+ </div>
62
+
63
+ <div class="mb-2 clearfix">
64
+ <button class="btn btn-outline-secondary btn-sm float-end" component="groups/members/bulk-invite-button">[[groups:bulk-invite]]</button>
65
+ </div>
66
+
67
+ <table component="groups/invited" class="table table-striped table-hover">
68
+ <!-- IF !group.invited.length -->
69
+ <div class="alert alert-info">[[groups:invited.none]]</div>
70
+ <!-- ENDIF !group.invited.length -->
71
+ {{{each group.invited}}}
72
+ <tr data-uid="{group.invited.uid}">
73
+ <td class="p-2">
74
+ <a href="{config.relative_path}/user/{group.invited.userslug}">{buildAvatar(group.invited, "24px", true)}</a>
75
+ </td>
76
+ <td class="member-name p-2">
77
+ <a href="{config.relative_path}/user/{group.invited.userslug}">{group.invited.username}</a>
78
+ </td>
79
+ <td class="p-2">
80
+ <div class="btn-group float-end">
81
+ <button type="button" class="btn btn-outline-secondary btn-sm dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
82
+ [[global:more]] <span class="caret"></span>
83
+ </button>
84
+ <ul class="dropdown-menu" role="menu">
85
+ <li><a class="dropdown-item" href="#" data-ajaxify="false" data-action="rescindInvite">[[groups:invited.uninvite]]</a></li>
86
+ </ul>
87
+ </div>
88
+ </td>
89
+ </tr>
90
+ {{{end}}}
91
+ </table>
92
+ </div>
93
+ </div>
94
+
95
+ <div class="card mb-3">
96
+ <div class="card-header pointer" data-bs-toggle="collapse" data-bs-target=".options">
97
+ <span class="fs-5">
98
+ <i class="fa fa-caret-down float-end"></i>
99
+ <i class="fa fa-cogs"></i> [[groups:details.owner_options]]
100
+ </span>
101
+ </div>
102
+
103
+ <div class="card-body options collapse">
104
+ <form component="groups/settings" role="form">
105
+ <div class="mb-3">
106
+ <label class="form-label" for="name">[[groups:details.group_name]]</label>
107
+ <input <!-- IF group.system -->readonly<!-- ENDIF group.system --> class="form-control" name="name" id="name" type="text" value="{group.displayName}" />
108
+ </div>
109
+ <div class="mb-3">
110
+ <label class="form-label" for="name">[[groups:details.description]]</label>
111
+ <textarea class="form-control" name="description" id="description" type="text" maxlength="255">{group.description}</textarea>
112
+ </div>
113
+
114
+ <hr />
115
+ <div class="mb-3">
116
+ <label class="form-label" for="memberPostCids">[[groups:details.member-post-cids]]</label>
117
+ <div class="row">
118
+ <div class="col-md-6">
119
+ <input id="memberPostCids" type="text" class="form-control" value="{group.memberPostCids}">
120
+ </div>
121
+ <div class="col-md-6 member-post-cids-selector">
122
+ <!-- IMPORT partials/category-selector.tpl -->
123
+ </div>
124
+ </div>
125
+ </div>
126
+
127
+ <hr />
128
+
129
+ <div class="mb-3 user-title-option">
130
+ <label class="form-label" for="userTitle">[[groups:details.badge_text]]</label>
131
+ <input component="groups/userTitleOption" class="form-control" name="userTitle" id="userTitle" type="text" maxlength="40" value="{group.userTitleEscaped}"<!-- IF !group.userTitleEnabled --> disabled<!-- ENDIF !group.userTitleEnabled --> />
132
+ </div>
133
+
134
+ <div class="mb-3 user-title-option">
135
+ <label>[[groups:details.badge_preview]]</label><br />
136
+ <span class="badge rounded-1 text-uppercase text-truncate rounded-1 {{{ if !group.userTitleEnabled }}} hide{{{ end }}}" style="max-width:150px; color: {group.textColor}; background-color: {group.labelColor}"><i class="fa{{{ if group.icon }}} {group.icon}{{{ end }}}"></i> <span class="badge-text">{{{ if group.userTitle }}}{group.userTitle}{{{ else }}}{group.displayName}{{{ end }}}</span></span>
137
+
138
+ <hr/>
139
+ <button component="groups/userTitleOption" type="button" class="btn btn-outline-secondary btn-sm" data-action="icon-select"<!-- IF !group.userTitleEnabled --> disabled<!-- ENDIF !group.userTitleEnabled -->>[[groups:details.change_icon]]</button>
140
+ <div>
141
+ <label class="form-label" for="labelColor" class="badge-color-label">[[groups:details.change_label_colour]]</label>
142
+ <input component="groups/userTitleOption" type="color" name="labelColor" value="<!-- IF group.labelColor -->{group.labelColor}<!-- ENDIF group.labelColor -->" />
143
+ </div>
144
+ <div>
145
+ <label class="form-label" for="color" class="badge-color-label">[[groups:details.change_text_colour]]</label>
146
+ <input component="groups/userTitleOption" type="color" name="textColor" value="<!-- IF group.textColor -->{group.textColor}<!-- ENDIF group.textColor -->" />
147
+ </div>
148
+ <input type="hidden" name="icon" value="<!-- IF group.icon -->{group.icon}<!-- ENDIF group.icon -->" />
149
+
150
+ <div id="icons" class="hidden">
151
+ <div class="icon-container">
152
+ <div class="row nbb-fa-icons">
153
+ <!-- IMPORT partials/fontawesome.tpl -->
154
+ </div>
155
+ </div>
156
+ </div>
157
+ </div>
158
+ <hr />
159
+ <div class="form-check">
160
+ <label class="form-check-label">[[groups:details.userTitleEnabled]]</label>
161
+ <input class="form-check-input" name="userTitleEnabled" type="checkbox"<!-- IF group.userTitleEnabled --> checked<!-- ENDIF group.userTitleEnabled -->>
162
+ </div>
163
+ <div class="form-check">
164
+ <label class="form-check-label">[[groups:details.private]]</label>
165
+ <input class="form-check-input" name="private" type="checkbox"<!-- IF group.private --> checked<!-- ENDIF group.private -->>
166
+ <!-- IF !allowPrivateGroups -->
167
+ <p class="form-text">
168
+ [[groups:details.private_system_help]]
169
+ </p>
170
+ <!-- ENDIF !allowPrivateGroups -->
171
+ <p class="form-text">
172
+ [[groups:details.private_help]]
173
+ </p>
174
+ </div>
175
+ <div class="form-check">
176
+ <label class="form-check-label">[[groups:details.disableJoinRequests]]</label>
177
+ <input class="form-check-input" name="disableJoinRequests" type="checkbox"<!-- IF group.disableJoinRequests --> checked<!-- ENDIF group.disableJoinRequests -->>
178
+ </div>
179
+ <div class="form-check">
180
+ <label class="form-check-label">[[groups:details.disableLeave]]</label>
181
+ <input class="form-check-input" name="disableLeave" type="checkbox"{{{if group.disableLeave}}} checked{{{end}}}>
182
+ </div>
183
+ <div class="form-check">
184
+ <label class="form-check-label">[[groups:details.hidden]]</label>
185
+ <input class="form-check-input" name="hidden" type="checkbox"<!-- IF group.hidden --> checked<!-- ENDIF group.hidden -->>
186
+ <p class="form-text">
187
+ [[groups:details.hidden_help]]
188
+ </p>
189
+ </div>
190
+
191
+ <button class="btn btn-link text-danger float-end" type="button" data-action="delete">[[groups:details.delete_group]]</button>
192
+ <button class="btn btn-primary" type="button" data-action="update">[[global:save_changes]]</button>
193
+ </form>
194
+ </div>
195
+ </div>
@@ -0,0 +1 @@
1
+ <a class="lh-1" href="{config.relative_path}/groups/{./slug}"><small class="badge rounded-1 text-uppercase text-truncate" style="max-width: 150px;color:{./textColor};background-color: {./labelColor};"><i class="fa {{{ if ./icon }}}{./icon} me-1{{{else}}}hidden{{{ end }}}"></i><span class="badge-text">{{{ if ./userTitle }}}{./userTitle}{{{ else }}}{./displayName}{{{ end }}}</span></small></a>
@@ -1,14 +1,14 @@
1
1
  {{{each groups}}}
2
- <div class="col-lg-4 col-md-6 col-sm-12" component="groups/summary" data-slug="{groups.slug}">
3
- <div class="panel panel-default">
4
- <a href="{config.relative_path}/groups/{groups.slug}" class="panel-heading list-cover" style="<!-- IF groups.cover:thumb:url -->background-image: url({groups.cover:thumb:url});<!-- ENDIF groups.cover:thumb:url -->">
5
- <h3 class="panel-title">{groups.displayName} <small>{groups.memberCount}</small></h3>
2
+ <div class="col-lg-4 col-md-6 col-sm-12 mb-3" component="groups/summary" data-slug="{groups.slug}">
3
+ <div class="card h-100">
4
+ <a href="{config.relative_path}/groups/{groups.slug}" class="card-header list-cover" style="<!-- IF groups.cover:thumb:url -->background-image: url({groups.cover:thumb:url});<!-- ENDIF groups.cover:thumb:url -->">
5
+ <h5 class="card-title">{groups.displayName} <small>{groups.memberCount}</small></h5>
6
6
  </a>
7
- <div class="panel-body">
7
+ <div class="card-body">
8
8
  <ul class="members">
9
9
  {{{each groups.members}}}
10
10
  <li>
11
- <a href="{config.relative_path}/user/{groups.members.userslug}">{buildAvatar(groups.members, "sm", true)}</a>
11
+ <a href="{config.relative_path}/user/{groups.members.userslug}">{buildAvatar(groups.members, "24px", true)}</a>
12
12
  </li>
13
13
  {{{end}}}
14
14
  <!-- IF groups.truncated -->
@@ -1,13 +1,13 @@
1
- <div class="row">
1
+ <div class="d-flex mb-3">
2
2
  <!-- IF group.isOwner -->
3
- <div class="col-lg-2">
4
- <button component="groups/members/add" type="button" class="btn btn-primary" title="[[groups:details.add-member]]"><i class="fa fa-user-plus"></i></button>
3
+ <div class="flex-shrink-0">
4
+ <button component="groups/members/add" type="button" class="btn btn-primary me-3" title="[[groups:details.add-member]]"><i class="fa fa-user-plus"></i></button>
5
5
  </div>
6
6
  <!-- ENDIF group.isOwner -->
7
- <div class="<!-- IF group.isOwner -->col-lg-10<!-- ELSE -->col-lg-12<!-- ENDIF group.isOwner -->">
7
+ <div class="flex-grow-1">
8
8
  <div class="input-group">
9
9
  <input class="form-control" type="text" component="groups/members/search" placeholder="[[global:search]]"/>
10
- <span class="input-group-addon search-button"><i class="fa fa-search"></i></span>
10
+ <span class="input-group-text search-button"><i class="fa fa-search"></i></span>
11
11
  </div>
12
12
  </div>
13
13
  </div>
@@ -16,14 +16,15 @@
16
16
  <tbody>
17
17
  {{{each group.members}}}
18
18
  <tr data-uid="{group.members.uid}">
19
- <td>
20
- <a href="{config.relative_path}/user/{group.members.userslug}">{buildAvatar(group.members, "sm", true)}</a>
19
+ <td class="p-2">
20
+ <a href="{config.relative_path}/user/{group.members.userslug}">{buildAvatar(group.members, "24px", true)}</a>
21
21
  </td>
22
- <td class="member-name">
23
- <a href="{config.relative_path}/user/{group.members.userslug}">{group.members.username}</a> <i title="[[groups:owner]]" class="fa fa-star text-warning <!-- IF !group.members.isOwner -->invisible<!-- ENDIF !group.members.isOwner -->"></i>
22
+ <td class="member-name p-2">
23
+ <a class="align-text-top" href="{config.relative_path}/user/{group.members.userslug}">{group.members.username}</a>
24
+ <i title="[[groups:owner]]" class="user-owner-icon fa fa-star align-text-top text-warning <!-- IF !group.members.isOwner -->invisible<!-- ENDIF !group.members.isOwner -->"></i>
24
25
 
25
26
  <!-- IF group.isOwner -->
26
- <div class="owner-controls btn-group pull-right">
27
+ <div class="owner-controls btn-group float-end">
27
28
  <a class="btn btn-sm" href="#" data-ajaxify="false" data-action="toggleOwnership" title="[[groups:details.grant]]">
28
29
  <i class="fa fa-star"></i>
29
30
  </a>