mirror of
https://gh.wpcy.net/https://github.com/discourse/discourse.git
synced 2026-05-24 20:20:16 +08:00
This creates a reusable filter component for admin areas that includes a text filter and dropdown. The component accepts an array to filter, an array of searchable property names, and optional dropdown values. An additional option is available if you'd like the default dropdown value to be something other than "all." It looks like this: <img width="2204" height="876" alt="image" src="https://github.com/user-attachments/assets/48693634-6752-4078-8639-42fb1ac77679" /> The dropdown is optional, without it: <img width="1756" height="900" alt="image" src="https://github.com/user-attachments/assets/ea9a7ae6-ae86-4cd8-8b99-4afc082f2ce5" /> When there are no matching filters, it provides a reset button: <img width="2188" height="394" alt="image" src="https://github.com/user-attachments/assets/9e59218e-8040-41db-ba81-1dc2628429bb" /> I'll use this to replace occurrences of similar filters, we've added a couple to the AI plugin.
82 lines
2.9 KiB
Text
Vendored
82 lines
2.9 KiB
Text
Vendored
import RouteTemplate from "ember-route-template";
|
|
import DBreadcrumbsItem from "discourse/components/d-breadcrumbs-item";
|
|
import DPageHeader from "discourse/components/d-page-header";
|
|
import NavItem from "discourse/components/nav-item";
|
|
import PluginOutlet from "discourse/components/plugin-outlet";
|
|
import icon from "discourse/helpers/d-icon";
|
|
import lazyHash from "discourse/helpers/lazy-hash";
|
|
import { i18n } from "discourse-i18n";
|
|
import AdminFilterControls from "admin/components/admin-filter-controls";
|
|
import AdminPluginsList from "admin/components/admin-plugins-list";
|
|
|
|
export default RouteTemplate(
|
|
<template>
|
|
<div class="admin-plugins-list-container">
|
|
|
|
<DPageHeader
|
|
@titleLabel={{i18n "admin.config.plugins.title"}}
|
|
@descriptionLabel={{i18n "admin.config.plugins.header_description"}}
|
|
@learnMoreUrl="https://www.discourse.org/plugins"
|
|
>
|
|
<:breadcrumbs>
|
|
<DBreadcrumbsItem @path="/admin" @label={{i18n "admin_title"}} />
|
|
<DBreadcrumbsItem
|
|
@path="/admin/plugins"
|
|
@label={{i18n "admin.plugins.title"}}
|
|
/>
|
|
</:breadcrumbs>
|
|
<:tabs>
|
|
<NavItem @route="adminPlugins.index" @label="admin.plugins.title" />
|
|
{{#each @controller.adminRoutes as |route|}}
|
|
{{#if route.use_new_show_route}}
|
|
<NavItem
|
|
@route={{route.full_location}}
|
|
@label={{route.label}}
|
|
@routeParam={{route.location}}
|
|
@class="admin-plugin-tab-nav-item"
|
|
data-plugin-nav-tab-id={{route.plugin_id}}
|
|
/>
|
|
{{else}}
|
|
<NavItem
|
|
@route={{route.full_location}}
|
|
@label={{route.label}}
|
|
@class="admin-plugin-tab-nav-item"
|
|
data-plugin-nav-tab-id={{route.plugin_id}}
|
|
/>
|
|
{{/if}}
|
|
{{/each}}
|
|
</:tabs>
|
|
</DPageHeader>
|
|
|
|
<div class="alert alert-info admin-plugins-howto">
|
|
<a href="https://meta.discourse.org/t/install-a-plugin/19157">
|
|
{{icon "circle-info"}}
|
|
{{i18n "admin.plugins.howto"}}
|
|
</a>
|
|
</div>
|
|
|
|
{{#if @controller.model.length}}
|
|
<AdminFilterControls
|
|
@array={{@controller.model}}
|
|
@searchableProps={{@controller.searchableProps}}
|
|
@dropdownOptions={{@controller.dropdownOptions}}
|
|
@inputPlaceholder={{i18n "admin.plugins.filters.search_placeholder"}}
|
|
@noResultsMessage={{i18n "admin.plugins.filters.no_results"}}
|
|
as |filteredPlugins|
|
|
>
|
|
<AdminPluginsList @plugins={{filteredPlugins}} />
|
|
</AdminFilterControls>
|
|
{{else}}
|
|
<p>{{i18n "admin.plugins.none_installed"}}</p>
|
|
{{/if}}
|
|
|
|
<span>
|
|
<PluginOutlet
|
|
@name="admin-below-plugins-index"
|
|
@connectorTagName="div"
|
|
@outletArgs={{lazyHash model=@controller.model}}
|
|
/>
|
|
</span>
|
|
</div>
|
|
</template>
|
|
);
|