Added new conversations design
This commit is contained in:
@@ -131,369 +131,6 @@
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<xf:comment>
|
||||
<xf:if contentcheck="true">
|
||||
<div class="p-staffBar">
|
||||
<div class="p-staffBar-inner hScroller" data-xf-init="h-scroller">
|
||||
<div class="hScroller-scroll">
|
||||
<xf:contentcheck>
|
||||
<xf:if is="$xf.visitor.is_moderator && $xf.session.unapprovedCounts.total">
|
||||
<a href="{{ link('approval-queue') }}" class="p-staffBar-link badgeContainer badgeContainer--highlighted" data-badge="{$xf.session.unapprovedCounts.total|number}">
|
||||
{{ phrase('approval_queue') }}
|
||||
</a>
|
||||
</xf:if>
|
||||
|
||||
<xf:if is="$xf.visitor.is_moderator && !$xf.options.reportIntoForumId && $xf.session.reportCounts.total">
|
||||
<a href="{{ link('reports') }}"
|
||||
class="p-staffBar-link badgeContainer badgeContainer--visible {{ ($xf.session.reportCounts.total && ($xf.session.reportCounts.lastBuilt > $xf.session.reportLastRead) OR $xf.session.reportCounts.assigned) ? ' badgeContainer--highlighted' : '' }}"
|
||||
data-badge="{{ $xf.session.reportCounts.assigned ? $xf.session.reportCounts.assigned|number . ' / ' . $xf.session.reportCounts.total|number : $xf.session.reportCounts.total|number }}"
|
||||
title="{{ $xf.session.reportCounts.lastBuilt ? phrase('last_report_update:')|for_attr . ' ' . date_time($xf.session.reportCounts.lastBuilt) : '' }}">
|
||||
{{ phrase('reports') }}
|
||||
</a>
|
||||
</xf:if>
|
||||
|
||||
<xf:if contentcheck="true">
|
||||
<a class="p-staffBar-link menuTrigger" data-xf-click="menu" data-xf-key="alt+m" role="button" tabindex="0" aria-expanded="false" aria-haspopup="true">{{ phrase('moderator') }}</a>
|
||||
<div class="menu" data-menu="menu" aria-hidden="true">
|
||||
<div class="menu-content">
|
||||
<h4 class="menu-header">{{ phrase('moderator_tools') }}</h4>
|
||||
<xf:contentcheck>
|
||||
<!--[XF:mod_tools_menu:top]-->
|
||||
<xf:if is="$xf.visitor.is_moderator">
|
||||
<a href="{{ link('approval-queue') }}" class="menu-linkRow">{{ phrase('approval_queue') }}</a>
|
||||
</xf:if>
|
||||
<xf:if is="$xf.visitor.is_moderator && !$xf.options.reportIntoForumId">
|
||||
<a href="{{ link('reports') }}" class="menu-linkRow" title="{{ $xf.session.reportCounts.lastBuilt ? phrase('last_report_update:')|for_attr . ' ' . date_time($xf.session.reportCounts.lastBuilt) : '' }}">{{ phrase('reports') }}</a>
|
||||
</xf:if>
|
||||
<!--[XF:mod_tools_menu:bottom]-->
|
||||
</xf:contentcheck>
|
||||
</div>
|
||||
</div>
|
||||
</xf:if>
|
||||
|
||||
<xf:if is="$xf.visitor.is_admin">
|
||||
<a href="{{ base_url('admin.php') }}" class="p-staffBar-link" target="_blank">{{ phrase('admin') }}</a>
|
||||
</xf:if>
|
||||
</xf:contentcheck>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</xf:if>
|
||||
|
||||
<header class="p-header" id="header">
|
||||
<div class="p-header-inner">
|
||||
<div class="p-header-content">
|
||||
<div class="p-header-logo p-header-logo--image">
|
||||
<a href="{{ ($xf.options.logoLink && $xf.homePageUrl) ? $xf.homePageUrl : link('index') }}">
|
||||
<xf:macro id="style_variation_macros::picture"
|
||||
arg-property="publicLogoUrl"
|
||||
arg-propertyRetina="publicLogoUrl2x"
|
||||
arg-width="{{ property('publicLogoWidth') }}"
|
||||
arg-height="{{ property('publicLogoHeight') }}"
|
||||
arg-alt="{$xf.options.boardTitle}" />
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<xf:ad position="container_header" />
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<xf:set var="$navHtml">
|
||||
<nav class="p-nav">
|
||||
<div class="p-nav-inner">
|
||||
<xf:button class="button--plain p-nav-menuTrigger" data-xf-click="off-canvas" data-menu=".js-headerOffCanvasMenu" tabindex="0"
|
||||
aria-label="{{ phrase('menu')|for_attr }}">
|
||||
<i aria-hidden="true"></i>
|
||||
</xf:button>
|
||||
|
||||
<div class="p-nav-smallLogo">
|
||||
<a href="{{ ($xf.options.logoLink && $xf.homePageUrl) ? $xf.homePageUrl : link('index') }}">
|
||||
<xf:macro id="style_variation_macros::picture"
|
||||
arg-property="publicLogoUrl"
|
||||
arg-property2x="publicLogoUrl2x"
|
||||
arg-width="{{ property('publicLogoWidth') }}"
|
||||
arg-height="{{ property('publicLogoHeight') }}"
|
||||
arg-alt="{$xf.options.boardTitle}" />
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="p-nav-scroller hScroller" data-xf-init="h-scroller" data-auto-scroll=".p-navEl.is-selected">
|
||||
<div class="hScroller-scroll">
|
||||
<ul class="p-nav-list js-offCanvasNavSource">
|
||||
<xf:foreach loop="$navTree" key="$navSection" value="$navEntry" i="$i" if="{{ $navSection != $xf.app.defaultNavigationId }}">
|
||||
<li>
|
||||
<xf:macro name="nav_entry"
|
||||
arg-navId="{$navSection}"
|
||||
arg-nav="{$navEntry}"
|
||||
arg-selected="{{ $navSection == $pageSection }}"
|
||||
arg-shortcut="{$i}" />
|
||||
</li>
|
||||
</xf:foreach>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="p-nav-opposite">
|
||||
<div class="p-navgroup p-account {{ $xf.visitor.user_id ? 'p-navgroup--member' : 'p-navgroup--guest' }}">
|
||||
<xf:if is="$xf.visitor.user_id">
|
||||
<xf:if is="$xf.visitor.user_state == 'rejected' OR $xf.visitor.user_state == 'disabled'">
|
||||
<a href="{{ link('account') }}"
|
||||
class="p-navgroup-link p-navgroup-link--iconic p-navgroup-link--user">
|
||||
<xf:avatar user="$xf.visitor" size="xxs" href="" title="" />
|
||||
<span class="p-navgroup-linkText">{$xf.visitor.username}</span>
|
||||
</a>
|
||||
|
||||
<a href="{{ link('logout', null, {'t': csrf_token()}) }}" class="p-navgroup-link">
|
||||
<span class="p-navgroup-linkText">{{ phrase('log_out') }}</span>
|
||||
</a>
|
||||
<xf:else />
|
||||
<a href="{{ link('account') }}"
|
||||
class="p-navgroup-link p-navgroup-link--iconic p-navgroup-link--user"
|
||||
data-xf-click="menu"
|
||||
data-xf-key="{{ phrase('shortcut.visitor_menu')|for_attr }}"
|
||||
data-menu-pos-ref="< .p-navgroup"
|
||||
title="{$xf.visitor.username}"
|
||||
aria-expanded="false"
|
||||
aria-haspopup="true">
|
||||
<xf:avatar user="$xf.visitor" size="xxs" href="" title="" />
|
||||
<span class="p-navgroup-linkText">{$xf.visitor.username}</span>
|
||||
</a>
|
||||
<div class="menu menu--structural menu--wide menu--account" data-menu="menu" aria-hidden="true"
|
||||
data-href="{{ link('account/visitor-menu') }}"
|
||||
data-load-target=".js-visitorMenuBody">
|
||||
<div class="menu-content js-visitorMenuBody">
|
||||
<div class="menu-row">
|
||||
{{ phrase('loading...') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a href="{{ link('direct-messages') }}"
|
||||
class="p-navgroup-link p-navgroup-link--iconic p-navgroup-link--conversations js-badge--conversations badgeContainer{{ $xf.visitor.conversations_unread ? ' badgeContainer--highlighted' : '' }}"
|
||||
data-badge="{$xf.visitor.conversations_unread|number}"
|
||||
data-xf-click="menu"
|
||||
data-xf-key="{{ phrase('shortcut.conversations_menu')|for_attr }}"
|
||||
data-menu-pos-ref="< .p-navgroup"
|
||||
title="{{ phrase('direct_messages')|for_attr }}"
|
||||
aria-label="{{ phrase('direct_messages')|for_attr }}"
|
||||
aria-expanded="false"
|
||||
aria-haspopup="true">
|
||||
<i aria-hidden="true"></i>
|
||||
<span class="p-navgroup-linkText">{{ phrase('nav_inbox') }}</span>
|
||||
</a>
|
||||
<div class="menu menu--structural menu--medium" data-menu="menu" aria-hidden="true"
|
||||
data-href="{{ link('direct-messages/popup') }}"
|
||||
data-nocache="true"
|
||||
data-load-target=".js-convMenuBody">
|
||||
<div class="menu-content">
|
||||
<h3 class="menu-header">{{ phrase('direct_messages') }}</h3>
|
||||
<div class="js-convMenuBody">
|
||||
<div class="menu-row">{{ phrase('loading...') }}</div>
|
||||
</div>
|
||||
<div class="menu-footer menu-footer--split">
|
||||
<div class="menu-footer-main">
|
||||
<ul class="listInline listInline--bullet">
|
||||
<li><a href="{{ link('direct-messages') }}">{{ phrase('show_all') }}</a></li>
|
||||
<xf:if is="$xf.visitor.canStartConversation()">
|
||||
<li><a href="{{ link('direct-messages/add') }}">{{ phrase('send_direct_message') }}</a></li>
|
||||
</xf:if>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a href="{{ link('account/alerts') }}"
|
||||
class="p-navgroup-link p-navgroup-link--iconic p-navgroup-link--alerts js-badge--alerts badgeContainer{{ $xf.visitor.alerts_unviewed ? ' badgeContainer--highlighted' : '' }}"
|
||||
data-badge="{$xf.visitor.alerts_unviewed|number}"
|
||||
data-xf-click="menu"
|
||||
data-xf-key="{{ phrase('shortcut.alerts_menu')|for_attr }}"
|
||||
data-menu-pos-ref="< .p-navgroup"
|
||||
title="{{ phrase('alerts')|for_attr }}"
|
||||
aria-label="{{ phrase('alerts')|for_attr }}"
|
||||
aria-expanded="false"
|
||||
aria-haspopup="true">
|
||||
<i aria-hidden="true"></i>
|
||||
<span class="p-navgroup-linkText">{{ phrase('nav_alerts') }}</span>
|
||||
</a>
|
||||
<div class="menu menu--structural menu--medium" data-menu="menu" aria-hidden="true"
|
||||
data-href="{{ link('account/alerts-popup') }}"
|
||||
data-nocache="true"
|
||||
data-load-target=".js-alertsMenuBody">
|
||||
<div class="menu-content">
|
||||
<h3 class="menu-header">{{ phrase('alerts') }}</h3>
|
||||
<div class="js-alertsMenuBody">
|
||||
<div class="menu-row">{{ phrase('loading...') }}</div>
|
||||
</div>
|
||||
<div class="menu-footer menu-footer--split">
|
||||
<div class="menu-footer-main">
|
||||
<ul class="listInline listInline--bullet">
|
||||
<li><a href="{{ link('account/alerts') }}">{{ phrase('show_all') }}</a></li>
|
||||
<li><a href="{{ link('account/alerts/mark-read') }}" class="js-alertsMarkRead">{{ phrase('mark_read') }}</a></li>
|
||||
<li><a href="{{ link('account/preferences') }}">{{ phrase('preferences') }}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</xf:if>
|
||||
<xf:else />
|
||||
<a href="{{ link('login') }}" class="p-navgroup-link p-navgroup-link--textual p-navgroup-link--logIn"
|
||||
data-xf-click="overlay" data-follow-redirects="on">
|
||||
<span class="p-navgroup-linkText">{{ phrase('log_in') }}</span>
|
||||
</a>
|
||||
<xf:if is="$xf.options.registrationSetup.enabled">
|
||||
<a href="{{ link('register') }}" class="p-navgroup-link p-navgroup-link--textual p-navgroup-link--register"
|
||||
data-xf-click="overlay" data-follow-redirects="on">
|
||||
<span class="p-navgroup-linkText">{{ phrase('register') }}</span>
|
||||
</a>
|
||||
</xf:if>
|
||||
</xf:if>
|
||||
</div>
|
||||
|
||||
<div class="p-navgroup p-discovery{{ !$xf.visitor.canSearch() ? ' p-discovery--noSearch' : '' }}">
|
||||
<a href="{{ link('whats-new') }}"
|
||||
class="p-navgroup-link p-navgroup-link--iconic p-navgroup-link--whatsnew"
|
||||
aria-label="{{ phrase('whats_new')|for_attr }}"
|
||||
title="{{ phrase('whats_new')|for_attr }}">
|
||||
<i aria-hidden="true"></i>
|
||||
<span class="p-navgroup-linkText">{{ phrase('whats_new') }}</span>
|
||||
</a>
|
||||
|
||||
<xf:if is="$xf.visitor.canSearch()">
|
||||
<a href="{{ link('search') }}"
|
||||
class="p-navgroup-link p-navgroup-link--iconic p-navgroup-link--search"
|
||||
data-xf-click="menu"
|
||||
data-xf-key="{{ phrase('shortcut.search_menu')|for_attr }}"
|
||||
aria-label="{{ phrase('search')|for_attr }}"
|
||||
aria-expanded="false"
|
||||
aria-haspopup="true"
|
||||
title="{{ phrase('search')|for_attr }}">
|
||||
<i aria-hidden="true"></i>
|
||||
<span class="p-navgroup-linkText">{{ phrase('search') }}</span>
|
||||
</a>
|
||||
<div class="menu menu--structural menu--wide" data-menu="menu" aria-hidden="true">
|
||||
<form action="{{ link('search/search') }}" method="post"
|
||||
class="menu-content"
|
||||
data-xf-init="quick-search">
|
||||
|
||||
<h3 class="menu-header">{{ phrase('search') }}</h3>
|
||||
<!--[XF:search_menu:above_input]-->
|
||||
<div class="menu-row">
|
||||
<xf:if is="$searchConstraints">
|
||||
<div class="inputGroup inputGroup--joined">
|
||||
<xf:textbox name="keywords"
|
||||
data-xf-init="{{ $xf.searchAutoComplete ? 'search-auto-complete' : '' }}"
|
||||
data-acurl="{{ link('search/auto-complete') }}"
|
||||
placeholder="{{ phrase('search...') }}"
|
||||
aria-label="{{ phrase('search') }}"
|
||||
data-menu-autofocus="true" />
|
||||
<xf:select name="constraints"
|
||||
class="js-quickSearch-constraint"
|
||||
aria-label="{{ phrase('search_within') }}">
|
||||
|
||||
<xf:option value="">{{ phrase('everywhere') }}</xf:option>
|
||||
<xf:foreach loop="$searchConstraints" key="$constraintName" value="$constraint">
|
||||
<xf:option value="{$constraint|json}">{$constraintName}</xf:option>
|
||||
</xf:foreach>
|
||||
</xf:select>
|
||||
</div>
|
||||
<xf:else />
|
||||
<xf:textbox name="keywords"
|
||||
data-xf-init="{{ $xf.searchAutoComplete ? 'search-auto-complete' : '' }}"
|
||||
data-acurl="{{ link('search/auto-complete') }}"
|
||||
placeholder="{{ phrase('search...') }}"
|
||||
aria-label="{{ phrase('search') }}"
|
||||
data-menu-autofocus="true" />
|
||||
</xf:if>
|
||||
</div>
|
||||
|
||||
<!--[XF:search_menu:above_title_only]-->
|
||||
<div class="menu-row">
|
||||
<xf:checkbox standalone="true">
|
||||
<xf:option name="c[title_only]">
|
||||
<xf:label>
|
||||
{{ phrase('search_titles_only') }}
|
||||
|
||||
<xf:if is="$xf.options.enableTagging">
|
||||
<span tabindex="0" role="button"
|
||||
data-xf-init="tooltip" data-trigger="hover focus click" title="{{ phrase('tags_will_also_be_searched')|for_attr }}">
|
||||
|
||||
<xf:fa icon="far fa-question-circle" class="u-muted u-smaller"
|
||||
title="{{ phrase('note')|for_attr }}" />
|
||||
</span>
|
||||
</xf:if>
|
||||
</xf:label>
|
||||
</xf:option>
|
||||
</xf:checkbox>
|
||||
</div>
|
||||
<!--[XF:search_menu:above_member]-->
|
||||
<div class="menu-row">
|
||||
<div class="inputGroup">
|
||||
<span class="inputGroup-text" id="ctrl_search_menu_by_member">{{ phrase('by:') }}</span>
|
||||
<input type="text" class="input" name="c[users]" data-xf-init="auto-complete" placeholder="{{ phrase('member')|for_attr }}" aria-labelledby="ctrl_search_menu_by_member" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="menu-footer">
|
||||
<span class="menu-footer-controls">
|
||||
<xf:button type="submit" class="button--primary" icon="search" />
|
||||
<xf:button type="submit" name="from_search_menu">{{ phrase('advanced_search...') }}</xf:button>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<xf:csrf />
|
||||
</form>
|
||||
</div>
|
||||
</xf:if>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</xf:set>
|
||||
|
||||
<xf:set var="$subNavHtml">
|
||||
<xf:if is="$selectedNavChildren is not empty">
|
||||
<div class="p-sectionLinks">
|
||||
<div class="p-sectionLinks-inner hScroller" data-xf-init="h-scroller">
|
||||
<div class="hScroller-scroll">
|
||||
<ul class="p-sectionLinks-list">
|
||||
<xf:foreach loop="$selectedNavChildren" key="$navId" value="$navEntry" i="$i">
|
||||
<li>
|
||||
<xf:macro id="nav_entry" arg-navId="{$navId}" arg-nav="{$navEntry}" arg-shortcut="alt+{$i}" />
|
||||
</li>
|
||||
</xf:foreach>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<xf:elseif is="{$selectedNavEntry}" />
|
||||
<div class="p-sectionLinks p-sectionLinks--empty"></div>
|
||||
</xf:if>
|
||||
</xf:set>
|
||||
|
||||
<xf:if is="property('publicNavSticky') == 'primary'">
|
||||
<div class="p-navSticky p-navSticky--primary" data-xf-init="sticky-header">
|
||||
{$navHtml|raw}
|
||||
</div>
|
||||
{$subNavHtml|raw}
|
||||
<xf:elseif is="property('publicNavSticky') == 'all'" />
|
||||
<div class="p-navSticky p-navSticky--all" data-xf-init="sticky-header">
|
||||
{$navHtml|raw}
|
||||
{$subNavHtml|raw}
|
||||
</div>
|
||||
<xf:else />
|
||||
{$navHtml|raw}
|
||||
{$subNavHtml|raw}
|
||||
</xf:if>
|
||||
|
||||
</xf:comment>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="offCanvasMenu offCanvasMenu--nav js-headerOffCanvasMenu" data-menu="menu" aria-hidden="true" data-ocm-builder="navigation">
|
||||
<div class="offCanvasMenu-backdrop" data-menu-close="true"></div>
|
||||
<div class="offCanvasMenu-content">
|
||||
@@ -564,7 +201,7 @@
|
||||
|
||||
<div class="$search-bar">
|
||||
<i data-lucide="search" size="18" color="var(--text2)"></i>
|
||||
<input type="text">Search</input>
|
||||
<input type="text" placeholder="Search...">
|
||||
</div>
|
||||
|
||||
<xf:include template="topbar_actions" />
|
||||
|
||||
33
templates/public/conversations_popup.html
Normal file
33
templates/public/conversations_popup.html
Normal file
@@ -0,0 +1,33 @@
|
||||
<xf:if is="$unreadConversations is not empty OR $readConversations is not empty">
|
||||
<xf:foreach loop="$unreadConversations" value="$userConv">
|
||||
<xf:macro id="popup_item" arg-userConv="{$userConv}" />
|
||||
</xf:foreach>
|
||||
<xf:foreach loop="$readConversations" value="$userConv">
|
||||
<xf:macro id="popup_item" arg-userConv="{$userConv}" />
|
||||
</xf:foreach>
|
||||
<xf:else />
|
||||
<div class="$notifications-empty">
|
||||
<i data-lucide="mail-off" size="24"></i>
|
||||
<span>No new conversations.</span>
|
||||
</div>
|
||||
</xf:if>
|
||||
|
||||
<xf:comment>Edited for RHPZ</xf:comment>
|
||||
|
||||
<xf:macro id="popup_item" arg-userConv="!">
|
||||
|
||||
<div class="$notifications-item {{ $userConv.isUnread() ? 'unread' : '' }}">
|
||||
<div class="$notifications-avatar">
|
||||
<xf:avatar user="$userConv.Master.LastMessageUser" size="xxs" defaultname="{$userConv.Master.last_message_username}" />
|
||||
</div>
|
||||
<div class="$notifications-content">
|
||||
<a class="$notifications-text" href="{{ link('direct-messages/unread', $userConv) }}">{$userConv.Master.title}</a>
|
||||
<span class="$notifications-date"><xf:date time="$userConv.Master.last_message_date" /></span>
|
||||
</div>
|
||||
|
||||
<xf:if is="$userConv.isUnread()">
|
||||
<div class="$notifications-unread-dot"></div>
|
||||
</xf:if>
|
||||
</div>
|
||||
|
||||
</xf:macro>
|
||||
@@ -1554,7 +1554,7 @@ ul {
|
||||
|
||||
|
||||
/* File: resources/css/components/notifications.css */
|
||||
.\$notifications {
|
||||
.\$notifications, .\$conversations {
|
||||
position: absolute;
|
||||
top: calc(100% + 8px);
|
||||
right: 0;
|
||||
|
||||
@@ -61,16 +61,40 @@
|
||||
|
||||
<div class="js-alertsMenuBody">
|
||||
<div class="notifications-loading">
|
||||
<i data-lucide="loader-2" class="spin"></i>
|
||||
<i data-lucide="loader-2" class="$spin"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<button class="$btn">
|
||||
<a class="$btn js-badge--conversations badgeContainer{{ $xf.visitor.conversations_unread ? ' badgeContainer--highlighted' : '' }}" data-badge="{$xf.visitor.conversations_unread|number}" data-xf-click="menu" data-xf-key="{{ phrase('shortcut.conversations_menu')|for_attr }}" data-menu-pos-ref="< .p-navgroup" title="{{ phrase('direct_messages')|for_attr }}" aria-haspopup="true">
|
||||
<i data-lucide="mail" size="18"></i>
|
||||
</button>
|
||||
</a>
|
||||
<div class="menu menu--structural menu--medium" data-menu="menu" aria-hidden="true"
|
||||
data-href="{{ link('direct-messages/popup') }}"
|
||||
data-nocache="true"
|
||||
data-load-target=".js-convMenuBody">
|
||||
<div class="menu-content">
|
||||
<div class="$notifications-header">
|
||||
<span class="$notifications-header-title">Direct Messages</span>
|
||||
<div class="$notifications-header-actions">
|
||||
<a href="{{ link('direct-messages/add') }}" class="$btn">
|
||||
<i data-lucide="plus" size="14"></i>
|
||||
</a>
|
||||
<a href="{{ link('direct-messages') }}" class="$btn">
|
||||
<i data-lucide="external-link" size="14"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="js-convMenuBody">
|
||||
<div class="$notifications-loading">
|
||||
<i data-lucide="loader-2" class="$spin"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</xf:if>
|
||||
<button class="$btn">
|
||||
<i data-lucide="settings" size="18"></i>
|
||||
|
||||
Reference in New Issue
Block a user