{activeSpaceIsConnector ? connectorSpaceSelectedItem?.kind === "file" ? connectorSpaceSelectedItem.name : "i18n:govoplan-files.remote_connector_space.d8956863" : selectedSummary}
@@ -2509,6 +2593,72 @@ export default function FilesPage({ settings, auth }: {settings: ApiSettings;aut
}
+function FilePropertyFilterRow({
+ campaignUsage,
+ auditRelevant,
+ busy,
+ active,
+ disabled,
+ total,
+ onApply,
+ onClear
+}: {
+ campaignUsage: "" | FileCampaignUsageFilter;
+ auditRelevant: AuditRelevantFilter;
+ busy: boolean;
+ active: boolean;
+ disabled: boolean;
+ total: number | null;
+ onApply: (campaignUsage: "" | FileCampaignUsageFilter, auditRelevant: AuditRelevantFilter) => void;
+ onClear: () => void;
+}) {
+ const [campaignUsageDraft, setCampaignUsageDraft] = useState(campaignUsage);
+ const [auditRelevantDraft, setAuditRelevantDraft] = useState(auditRelevant);
+
+ useEffect(() => {
+ setCampaignUsageDraft(campaignUsage);
+ }, [campaignUsage]);
+
+ useEffect(() => {
+ setAuditRelevantDraft(auditRelevant);
+ }, [auditRelevant]);
+
+ return (
+
+
+
+
+
+ {active && }
+ {active && total !== null && {total} matching file{total === 1 ? "" : "s"}}
+
+ );
+}
+
function FileSearchRow({
value,
caseSensitive,
diff --git a/webui/src/styles/file-manager.css b/webui/src/styles/file-manager.css
index 85c8e3b..bbcd43f 100644
--- a/webui/src/styles/file-manager.css
+++ b/webui/src/styles/file-manager.css
@@ -11,6 +11,31 @@
padding: 4px 0 10px 14px;
}
+.file-property-filter-row {
+ display: flex;
+ align-items: end;
+ gap: 12px;
+ min-width: 0;
+ padding: 0 0 10px 14px;
+}
+
+.file-property-filter-field {
+ display: grid;
+ gap: 4px;
+ min-width: 180px;
+}
+
+.file-property-filter-field > span,
+.file-property-filter-count {
+ color: var(--muted);
+ font-size: var(--font-size-sm);
+}
+
+.file-property-filter-count {
+ align-self: center;
+ margin-left: auto;
+}
+
.file-list-drop-target.is-active,
.file-list-drop-target.is-drop-target {
background: var(--line);
@@ -565,6 +590,15 @@
.file-search-row {
grid-template-columns: 1fr;
}
+
+ .file-property-filter-row {
+ align-items: stretch;
+ flex-direction: column;
+ }
+
+ .file-property-filter-count {
+ margin-left: 0;
+ }
}
.file-conflict-summary {