diff --git a/src/FilterLists.Web.V2/src/components/listsTable/ListsTable.tsx b/src/FilterLists.Web.V2/src/components/listsTable/ListsTable.tsx index 538a37129..a86cdf68d 100644 --- a/src/FilterLists.Web.V2/src/components/listsTable/ListsTable.tsx +++ b/src/FilterLists.Web.V2/src/components/listsTable/ListsTable.tsx @@ -12,7 +12,7 @@ import { nameof } from '../../utils'; import { Description } from '../Description'; import { LanguageCloud } from '../languageCloud'; import { ListInfoButton } from '../ListInfoButton'; -import { SoftwareCloud } from '../softwareCloud'; +import { SoftwareCloud, SoftwareIcon } from '../softwareCloud'; import { TagCloud } from '../tagCloud'; import { arraySorter } from './arraySorter'; import styles from './ListsTable.module.css'; @@ -87,6 +87,14 @@ export const ListsTable = (props: RouteComponentProps & Props) => { }} width={143} className={styles.nogrow} + filters={software.map(s => ({ + text: <> +   + {s.name} + , + value: s.name + }))} + onFilter={(value, record) => software.filter((s: Software) => s.name === value).flatMap(s => s.syntaxIds).includes(record.syntaxId)} render={(syntaxId: number) => syntaxId ? s.syntaxIds.includes(syntaxId))} /> diff --git a/src/FilterLists.Web.V2/src/components/softwareCloud/index.ts b/src/FilterLists.Web.V2/src/components/softwareCloud/index.ts index 065277b3b..212ee46c3 100644 --- a/src/FilterLists.Web.V2/src/components/softwareCloud/index.ts +++ b/src/FilterLists.Web.V2/src/components/softwareCloud/index.ts @@ -1,3 +1,4 @@ import { SoftwareCloud } from './SoftwareCloud'; +import { SoftwareIcon } from './SoftwareIcon'; -export { SoftwareCloud }; \ No newline at end of file +export { SoftwareCloud, SoftwareIcon }; \ No newline at end of file diff --git a/src/FilterLists.Web.V2/src/hooks/useLanguages.tsx b/src/FilterLists.Web.V2/src/hooks/useLanguages.tsx index 862aee4cf..ed67cd574 100644 --- a/src/FilterLists.Web.V2/src/hooks/useLanguages.tsx +++ b/src/FilterLists.Web.V2/src/hooks/useLanguages.tsx @@ -1,4 +1,5 @@ import { Language } from '../interfaces/Language'; import { useApiData } from './useApiData'; -export const useLanguages = () => useApiData("/api/v1/languages") || []; \ No newline at end of file +export const useLanguages = () => (useApiData("/api/v1/languages") || []) + .sort((a: Language, b: Language) => a.name.localeCompare(b.name)); \ No newline at end of file diff --git a/src/FilterLists.Web.V2/src/hooks/useLicenses.tsx b/src/FilterLists.Web.V2/src/hooks/useLicenses.tsx index d11b6868c..0704ae603 100644 --- a/src/FilterLists.Web.V2/src/hooks/useLicenses.tsx +++ b/src/FilterLists.Web.V2/src/hooks/useLicenses.tsx @@ -1,4 +1,5 @@ import { License } from '../interfaces/License'; import { useApiData } from './useApiData'; -export const useLicenses = () => useApiData("/api/v1/licenses") || []; \ No newline at end of file +export const useLicenses = () => (useApiData("/api/v1/licenses") || []) + .sort((a: License, b: License) => a.name.localeCompare(b.name)); \ No newline at end of file diff --git a/src/FilterLists.Web.V2/src/hooks/useLists.tsx b/src/FilterLists.Web.V2/src/hooks/useLists.tsx index b75846434..f01f960ef 100644 --- a/src/FilterLists.Web.V2/src/hooks/useLists.tsx +++ b/src/FilterLists.Web.V2/src/hooks/useLists.tsx @@ -6,5 +6,6 @@ import { useApiData } from './useApiData'; export const useLists = () => { const lists = useApiData("/api/v1/lists"); lists && lists.forEach(l => l.slug = slugify(l.name)); - return lists || []; + return (lists || []) + .sort((a: List, b: List) => a.name.localeCompare(b.name)); }; \ No newline at end of file diff --git a/src/FilterLists.Web.V2/src/hooks/useSoftware.tsx b/src/FilterLists.Web.V2/src/hooks/useSoftware.tsx index 18507c98f..2e21c1e0c 100644 --- a/src/FilterLists.Web.V2/src/hooks/useSoftware.tsx +++ b/src/FilterLists.Web.V2/src/hooks/useSoftware.tsx @@ -1,4 +1,5 @@ import { Software } from '../interfaces/Software'; import { useApiData } from './useApiData'; -export const useSoftware = () => useApiData("/api/v1/software") || []; \ No newline at end of file +export const useSoftware = () => (useApiData("/api/v1/software") || []) + .sort((a: Software, b: Software) => a.name.localeCompare(b.name)); \ No newline at end of file diff --git a/src/FilterLists.Web.V2/src/hooks/useSyntaxes.tsx b/src/FilterLists.Web.V2/src/hooks/useSyntaxes.tsx index 24415f461..8a61eb92b 100644 --- a/src/FilterLists.Web.V2/src/hooks/useSyntaxes.tsx +++ b/src/FilterLists.Web.V2/src/hooks/useSyntaxes.tsx @@ -1,4 +1,5 @@ import { Syntax } from '../interfaces/Syntax'; import { useApiData } from './useApiData'; -export const useSyntaxes = () => useApiData("/api/v1/syntaxes") || []; \ No newline at end of file +export const useSyntaxes = () => (useApiData("/api/v1/syntaxes") || []) + .sort((a: Syntax, b: Syntax) => a.name.localeCompare(b.name)); \ No newline at end of file diff --git a/src/FilterLists.Web.V2/src/hooks/useTags.tsx b/src/FilterLists.Web.V2/src/hooks/useTags.tsx index 1840726a4..6495c363a 100644 --- a/src/FilterLists.Web.V2/src/hooks/useTags.tsx +++ b/src/FilterLists.Web.V2/src/hooks/useTags.tsx @@ -1,4 +1,5 @@ import { Tag } from '../interfaces/Tag'; import { useApiData } from './useApiData'; -export const useTags = () => useApiData("/api/v1/tags") || []; \ No newline at end of file +export const useTags = () => (useApiData("/api/v1/tags") || []) + .sort((a: Tag, b: Tag) => a.name.localeCompare(b.name)); \ No newline at end of file