templates: Fix invalid <th> inside <thead> (missing <tr>).

Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
Anders Kaseorg
2025-09-05 16:43:37 -07:00
committed by Tim Abbott
parent d3238e9a1b
commit 460d63c4dc
19 changed files with 218 additions and 178 deletions

View File

@@ -12,21 +12,23 @@
<div class="progressive-table-wrapper" data-simplebar data-simplebar-tab-index="-1">
<table class="table table-striped wrapped-table">
<thead class="table-sticky-headers">
<th class="active" data-sort="alphabetic" data-sort-prop="full_name">{{t "Name" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="settings-email-column" data-sort="email">{{t "Email" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="user_role" data-sort="role">{{t "Role" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="last_active" data-sort="last_active">{{t "Last active" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
{{#if is_admin}}
<th class="actions">{{t "Actions" }}</th>
{{/if}}
<tr>
<th class="active" data-sort="alphabetic" data-sort-prop="full_name">{{t "Name" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="settings-email-column" data-sort="email">{{t "Email" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="user_role" data-sort="role">{{t "Role" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="last_active" data-sort="last_active">{{t "Last active" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
{{#if is_admin}}
<th class="actions">{{t "Actions" }}</th>
{{/if}}
</tr>
</thead>
<tbody id="admin_users_table" class="admin_user_table"
data-empty="{{t 'No users match your filters.' }}"></tbody>

View File

@@ -18,10 +18,12 @@
<div class="progressive-table-wrapper" data-simplebar data-simplebar-tab-index="-1">
<table class="table table-striped wrapped-table">
<thead class="table-sticky-headers">
<th data-sort="alphabetic" data-sort-prop="word">{{t "Word" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="actions">{{t "Actions" }}</th>
<tr>
<th data-sort="alphabetic" data-sort-prop="word">{{t "Word" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="actions">{{t "Actions" }}</th>
</tr>
</thead>
<tbody id="alert-words-table" class="alert-words-table"
data-empty="{{t 'There are no current alert words.' }}"></tbody>

View File

@@ -9,19 +9,21 @@
<div class="progressive-table-wrapper" data-simplebar data-simplebar-tab-index="-1">
<table class="table table-striped wrapped-table">
<thead class="table-sticky-headers">
<th data-sort="alphabetic" data-sort-prop="name" class="upload-file-name">{{t "File" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="active upload-date" data-sort="numeric" data-sort-prop="create_time">{{t "Date uploaded" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="upload-mentioned-in" data-sort="mentioned_in">{{t "Mentioned in" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="upload-size" data-sort="numeric" data-sort-prop="size">{{t "Size" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="upload-actions actions">{{t "Actions" }}</th>
<tr>
<th data-sort="alphabetic" data-sort-prop="name" class="upload-file-name">{{t "File" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="active upload-date" data-sort="numeric" data-sort-prop="create_time">{{t "Date uploaded" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="upload-mentioned-in" data-sort="mentioned_in">{{t "Mentioned in" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="upload-size" data-sort="numeric" data-sort-prop="size">{{t "Size" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="upload-actions actions">{{t "Actions" }}</th>
</tr>
</thead>
<tbody data-empty="{{t 'You have not uploaded any files.' }}" data-search-results-empty="{{t 'No uploaded files match your current filter.' }}" id="uploaded_files_table"></tbody>
</table>

View File

@@ -27,24 +27,26 @@
<div class="progressive-table-wrapper" data-simplebar data-simplebar-tab-index="-1">
<table class="table table-striped wrapped-table">
<thead class="table-sticky-headers">
<th class="active" data-sort="alphabetic" data-sort-prop="full_name">{{t "Name" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="settings-email-column" data-sort="email">{{t "Email" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="user_role" data-sort="role">{{t "Role" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th data-sort="bot_owner">{{t "Owner" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th data-sort="alphabetic" data-sort-prop="bot_type" class="bot_type">{{t "Bot type" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
{{#if is_admin}}
<th class="actions">{{t "Actions" }}</th>
{{/if}}
<tr>
<th class="active" data-sort="alphabetic" data-sort-prop="full_name">{{t "Name" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="settings-email-column" data-sort="email">{{t "Email" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="user_role" data-sort="role">{{t "Role" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th data-sort="bot_owner">{{t "Owner" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th data-sort="alphabetic" data-sort-prop="bot_type" class="bot_type">{{t "Bot type" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
{{#if is_admin}}
<th class="actions">{{t "Actions" }}</th>
{{/if}}
</tr>
</thead>
<tbody id="admin_bots_table" class="admin_bot_table"
data-empty="{{t 'There are no bots.' }}" data-search-results-empty="{{t 'No bots match your current filter.' }}"></tbody>

View File

@@ -43,15 +43,17 @@
<div class="progressive-table-wrapper" data-simplebar data-simplebar-tab-index="-1">
<table class="table table-striped wrapped-table admin_exports_table">
<thead class="table-sticky-headers">
<th class="active" data-sort="user">{{t "Requesting user" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th>{{t "Type"}}</th>
<th data-sort="numeric" data-sort-prop="export_time">{{t "Time" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th>{{t "Status" }}</th>
<th class="actions">{{t "Actions" }}</th>
<tr>
<th class="active" data-sort="user">{{t "Requesting user" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th>{{t "Type"}}</th>
<th data-sort="numeric" data-sort-prop="export_time">{{t "Time" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th>{{t "Status" }}</th>
<th class="actions">{{t "Actions" }}</th>
</tr>
</thead>
<tbody id="admin_exports_table" data-empty="{{t 'There are no exports.' }}"></tbody>
</table>
@@ -70,8 +72,10 @@
<div class="progressive-table-wrapper" data-simplebar data-simplebar-tab-index="-1">
<table class="table table-striped wrapped-table">
<thead class="table-sticky-headers">
<th class="active" data-sort="full_name">{{t "Name" }}</th>
<th>{{t "Export permission"}}</th>
<tr>
<th class="active" data-sort="full_name">{{t "Name" }}</th>
<th>{{t "Export permission"}}</th>
</tr>
</thead>
<tbody id="admin_export_consents_table"></tbody>
</table>

View File

@@ -15,20 +15,22 @@
<div class="progressive-table-wrapper" data-simplebar data-simplebar-tab-index="-1">
<table class="table table-striped wrapped-table">
<thead class="table-sticky-headers">
<th class="active" data-sort="alphabetic" data-sort-prop="full_name">{{t "Name" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="settings-email-column" {{#if allow_sorting_deactivated_users_list_by_email}}data-sort="email"{{/if}}>{{t "Email" }}
{{#if allow_sorting_deactivated_users_list_by_email}}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
<tr>
<th class="active" data-sort="alphabetic" data-sort-prop="full_name">{{t "Name" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="settings-email-column" {{#if allow_sorting_deactivated_users_list_by_email}}data-sort="email"{{/if}}>{{t "Email" }}
{{#if allow_sorting_deactivated_users_list_by_email}}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
{{/if}}
</th>
<th class="user_role" data-sort="role">{{t "Role" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
{{#if is_admin}}
<th class="actions">{{t "Actions" }}</th>
{{/if}}
</th>
<th class="user_role" data-sort="role">{{t "Role" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
{{#if is_admin}}
<th class="actions">{{t "Actions" }}</th>
{{/if}}
</tr>
</thead>
<tbody id="admin_deactivated_users_table" class="admin_user_table"
data-empty="{{t 'There are no deactivated users.' }}"

View File

@@ -20,12 +20,14 @@
<div class="progressive-table-wrapper" data-simplebar data-simplebar-tab-index="-1">
<table class="table table-striped wrapped-table">
<thead class="table-sticky-headers">
<th class="active" data-sort="alphabetic" data-sort-prop="name">{{t "Name" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
{{#if is_admin}}
<th class="actions"></th>
{{/if}}
<tr>
<th class="active" data-sort="alphabetic" data-sort-prop="name">{{t "Name" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
{{#if is_admin}}
<th class="actions"></th>
{{/if}}
</tr>
</thead>
<tbody data-empty="{{t 'There are no default channels.' }}" data-search-results-empty="{{t 'No default channels match your current filter.' }}"
id="admin_default_streams_table" class="admin_default_stream_table"></tbody>

View File

@@ -20,14 +20,16 @@
<div class="progressive-table-wrapper" data-simplebar data-simplebar-tab-index="-1">
<table class="table table-striped wrapped-table admin_emoji_table">
<thead class="table-sticky-headers">
<th class="active" data-sort="alphabetic" data-sort-prop="name">{{t "Name" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="image">{{t "Image" }}</th>
<th class="image" data-sort="author_full_name">{{t "Author" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="actions">{{t "Actions" }}</th>
<tr>
<th class="active" data-sort="alphabetic" data-sort-prop="name">{{t "Name" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="image">{{t "Image" }}</th>
<th class="image" data-sort="author_full_name">{{t "Author" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="actions">{{t "Actions" }}</th>
</tr>
</thead>
<tbody id="admin_emoji_table" data-empty="{{t 'There are no custom emoji.' }}" data-search-results-empty="{{t 'No custom emojis match your current filter.' }}"></tbody>
</table>

View File

@@ -30,24 +30,26 @@
<div class="progressive-table-wrapper" data-simplebar data-simplebar-tab-index="-1">
<table class="table table-striped">
<thead class="table-sticky-headers">
<th class="active" data-sort="invitee">{{t "Invitee" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
{{#if is_admin }}
<th data-sort="alphabetic" data-sort-prop="referrer_name">{{t "Invited by" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
{{/if}}
<th data-sort="numeric" data-sort-prop="invited">{{t "Invited at" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th data-sort="numeric" data-sort-prop="expiry_date">{{t "Expires at" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th data-sort="numeric" data-sort-prop="invited_as">{{t "Invited as" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="actions">{{t "Actions" }}</th>
<tr>
<th class="active" data-sort="invitee">{{t "Invitee" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
{{#if is_admin }}
<th data-sort="alphabetic" data-sort-prop="referrer_name">{{t "Invited by" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
{{/if}}
<th data-sort="numeric" data-sort-prop="invited">{{t "Invited at" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th data-sort="numeric" data-sort-prop="expiry_date">{{t "Expires at" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th data-sort="numeric" data-sort-prop="invited_as">{{t "Invited as" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="actions">{{t "Actions" }}</th>
</tr>
</thead>
<tbody id="admin_invites_table" class="admin_invites_table" data-empty="{{t 'There are no invitations.' }}" data-search-results-empty="{{t 'No invitations match your current filter.' }}"></tbody>
</table>

View File

@@ -66,11 +66,13 @@
<div class="progressive-table-wrapper" data-simplebar data-simplebar-tab-index="-1">
<table class="table table-striped wrapped-table admin_linkifiers_table">
<thead class="table-sticky-headers">
<th>{{t "Pattern" }}</th>
<th>{{t "URL template" }}</th>
{{#if is_admin}}
<th class="actions">{{t "Actions" }}</th>
{{/if}}
<tr>
<th>{{t "Pattern" }}</th>
<th>{{t "URL template" }}</th>
{{#if is_admin}}
<th class="actions">{{t "Actions" }}</th>
{{/if}}
</tr>
</thead>
<tbody id="admin_linkifiers_table" data-empty="{{t 'No linkifiers configured.' }}" data-search-results-empty="{{t 'No linkifiers match your current filter.' }}"></tbody>
</table>

View File

@@ -6,13 +6,15 @@
<div class="progressive-table-wrapper" data-simplebar data-simplebar-tab-index="-1">
<table class="table table-striped wrapped-table">
<thead class="table-sticky-headers">
<th data-sort="alphabetic" data-sort-prop="user_name">{{t "User" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th data-sort="numeric" data-sort-prop="date_muted">{{t "Date muted" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="actions">{{t "Actions" }}</th>
<tr>
<th data-sort="alphabetic" data-sort-prop="user_name">{{t "User" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th data-sort="numeric" data-sort-prop="date_muted">{{t "Date muted" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="actions">{{t "Actions" }}</th>
</tr>
</thead>
<tbody id="muted_users_table" data-empty="{{t 'You have not muted any users yet.'}}" data-search-results-empty="{{t 'No users match your current filter.' }}"></tbody>
</table>

View File

@@ -74,18 +74,20 @@
<div class="progressive-table-wrapper" data-simplebar data-simplebar-tab-index="-1">
<table class="table table-striped wrapped-table admin_playgrounds_table">
<thead class="table-sticky-headers">
<th class="active" data-sort="alphabetic" data-sort-prop="pygments_language">{{t "Language" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th data-sort="alphabetic" data-sort-prop="name">{{t "Name" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th data-sort="alphabetic" data-sort-prop="url_template">{{t "URL template" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
{{#if is_admin}}
<th class="actions">{{t "Actions" }}</th>
{{/if}}
<tr>
<th class="active" data-sort="alphabetic" data-sort-prop="pygments_language">{{t "Language" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th data-sort="alphabetic" data-sort-prop="name">{{t "Name" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th data-sort="alphabetic" data-sort-prop="url_template">{{t "URL template" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
{{#if is_admin}}
<th class="actions">{{t "Actions" }}</th>
{{/if}}
</tr>
</thead>
<tbody id="admin_playgrounds_table" data-empty="{{t 'No playgrounds configured.' }}" data-search-results-empty="{{t 'No playgrounds match your current filter.' }}"></tbody>
</table>

View File

@@ -1,8 +1,10 @@
<table class="table table-stripped" id="realm_domains_table">
<thead>
<th>{{t "Domain" }}</th>
<th>{{t "Allow subdomains"}}</th>
<th>{{t "Action" }}</th>
<tr>
<th>{{t "Domain" }}</th>
<th>{{t "Allow subdomains"}}</th>
<th>{{t "Action" }}</th>
</tr>
</thead>
<tbody>
</tbody>

View File

@@ -17,18 +17,20 @@
<div class="progressive-table-wrapper" data-simplebar data-simplebar-tab-index="-1">
<table class="table table-striped wrapped-table">
<thead class="table-sticky-headers">
<th data-sort="alphabetic" data-sort-prop="stream">{{t "Channel" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th data-sort="alphabetic" data-sort-prop="topic">{{t "Topic" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th data-sort="numeric" data-sort-prop="visibility_policy">{{t "Status" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th data-sort="numeric" data-sort-prop="date_updated" class="active topic_date_updated">{{t "Date updated" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<tr>
<th data-sort="alphabetic" data-sort-prop="stream">{{t "Channel" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th data-sort="alphabetic" data-sort-prop="topic">{{t "Topic" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th data-sort="numeric" data-sort-prop="visibility_policy">{{t "Status" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th data-sort="numeric" data-sort-prop="date_updated" class="active topic_date_updated">{{t "Date updated" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
</tr>
</thead>
<tbody id="user_topics_table" data-empty="{{t 'You have not configured any topics yet.'}}" data-search-results-empty="{{t 'No topics match your current filter.' }}"></tbody>
</table>

View File

@@ -17,13 +17,15 @@
<div class="subscriber_list_container" data-simplebar data-simplebar-tab-index="-1">
<table class="subscriber-list table table-striped">
<thead class="table-sticky-headers">
<th class="panel_user_list" data-sort="alphabetic" data-sort-prop="full_name">{{t "Name" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="settings-email-column" data-sort="email">{{t "Email" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="action-column">{{t "Action" }}</th>
<tr>
<th class="panel_user_list" data-sort="alphabetic" data-sort-prop="full_name">{{t "Name" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="settings-email-column" data-sort="email">{{t "Email" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="action-column">{{t "Action" }}</th>
</tr>
</thead>
<tbody id="create_stream_subscribers" class="subscriber_table" data-empty="{{t 'This channel has no subscribers.' }}" data-search-results-empty="{{t 'No channel subscribers match your current filter.'}}"></tbody>
</table>

View File

@@ -2,15 +2,17 @@
<div class="subscriber_list_loading_indicator"></div>
<table id="stream_members_list" class="subscriber-list table table-striped">
<thead class="table-sticky-headers">
<th class="panel_user_list" data-sort="alphabetic" data-sort-prop="full_name">{{t "Name" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="settings-email-column" data-sort="email">{{t "Email" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
{{#if can_remove_subscribers}}
<th class="remove-button-column"></th>
{{/if}}
<tr>
<th class="panel_user_list" data-sort="alphabetic" data-sort-prop="full_name">{{t "Name" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="settings-email-column" data-sort="email">{{t "Email" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
{{#if can_remove_subscribers}}
<th class="remove-button-column"></th>
{{/if}}
</tr>
</thead>
<tbody class="subscriber_table" data-empty="{{t 'This channel has no subscribers.' }}" data-search-results-empty="{{t 'No channel subscribers match your current filter.'}}"></tbody>
</table>

View File

@@ -15,13 +15,15 @@
<div class="member_list_container" data-simplebar data-simplebar-tab-index="-1">
<table class="member-list table table-striped">
<thead class="table-sticky-headers">
<th class="panel_user_list" data-sort="alphabetic" data-sort-prop="full_name">{{t "Name" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="settings-email-column" data-sort="email">{{t "Email" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="action-column">{{t "Action" }}</th>
<tr>
<th class="panel_user_list" data-sort="alphabetic" data-sort-prop="full_name">{{t "Name" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="settings-email-column" data-sort="email">{{t "Email" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="action-column">{{t "Action" }}</th>
</tr>
</thead>
<tbody id="create_user_group_members" class="member_table" data-empty="{{t 'This group has no members.' }}" data-search-results-empty="{{t 'No group members match your current filter.'}}"></tbody>
</table>

View File

@@ -2,13 +2,15 @@
<div class="member_list_loading_indicator"></div>
<table class="member-list table table-striped">
<thead class="table-sticky-headers">
<th class="panel_user_list" data-sort="name">{{t "Name" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="settings-email-column" data-sort="email">{{t "Email" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="remove-button-column" {{#unless can_remove_members}}style="display:none"{{/unless}}></th>
<tr>
<th class="panel_user_list" data-sort="name">{{t "Name" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="settings-email-column" data-sort="email">{{t "Email" }}
<i class="table-sortable-arrow zulip-icon zulip-icon-sort-arrow-down"></i>
</th>
<th class="remove-button-column" {{#unless can_remove_members}}style="display:none"{{/unless}}></th>
</tr>
</thead>
<tbody class="member_table" data-empty="{{t 'This group has no members.' }}" data-search-results-empty="{{t 'No group members match your current filter.'}}"></tbody>
</table>