diff --git a/src/frontend/apps/drive/src/features/drivers/Driver.ts b/src/frontend/apps/drive/src/features/drivers/Driver.ts index 06d520406..e05c9e9ac 100644 --- a/src/frontend/apps/drive/src/features/drivers/Driver.ts +++ b/src/frontend/apps/drive/src/features/drivers/Driver.ts @@ -35,6 +35,7 @@ export type ItemFilters = { page?: number; page_size?: number; workspaces?: WorkspaceType; + is_creator_me?: boolean; }; export type PaginatedChildrenResult = { diff --git a/src/frontend/apps/drive/src/features/explorer/components/app-view/ExplorerFilters.scss b/src/frontend/apps/drive/src/features/explorer/components/app-view/ExplorerFilters.scss index 15afad63a..e1618478d 100644 --- a/src/frontend/apps/drive/src/features/explorer/components/app-view/ExplorerFilters.scss +++ b/src/frontend/apps/drive/src/features/explorer/components/app-view/ExplorerFilters.scss @@ -1,5 +1,11 @@ +.explorer__filters { + display: flex; + align-items: center; + gap: 0.75rem; +} + .explorer__filters__item { display: flex; align-items: center; gap: 0.5em; -} +} \ No newline at end of file diff --git a/src/frontend/apps/drive/src/features/explorer/components/app-view/ExplorerFilters.tsx b/src/frontend/apps/drive/src/features/explorer/components/app-view/ExplorerFilters.tsx index 100926df2..8fd5c6bd2 100644 --- a/src/frontend/apps/drive/src/features/explorer/components/app-view/ExplorerFilters.tsx +++ b/src/frontend/apps/drive/src/features/explorer/components/app-view/ExplorerFilters.tsx @@ -13,6 +13,8 @@ import { ItemIcon } from "../icons/ItemIcon"; import { getItemTitle } from "../../utils/utils"; const ALL = "all"; +const CREATED_BY_ME = "true"; +const CREATED_BY_OTHERS = "false"; export const handleFilterChange = ( filters: ItemFilters = {}, @@ -48,12 +50,34 @@ export const ExplorerFilters = () => { onFiltersChange?.(handleFilterChange(filters, name, value)); }; + const onCreatedByChange = (value: Key | null) => { + if (value === ALL) { + const newFilters = { ...filters }; + delete newFilters.is_creator_me; + onFiltersChange?.(newFilters); + } else if (value === CREATED_BY_ME) { + onFiltersChange?.({ ...filters, is_creator_me: true }); + } else if (value === CREATED_BY_OTHERS) { + onFiltersChange?.({ ...filters, is_creator_me: false }); + } + }; + return (
onChange("type", value)} /> +
); }; @@ -173,3 +197,47 @@ export const ExplorerFilterScope = (props: { /> ); }; + +export const ExplorerFilterCreatedBy = (props: { + value: string | null; + onChange: (value: Key | null) => void; +}) => { + const { t } = useTranslation(); + + const options: FilterOption[] = useMemo( + () => [ + { + label: t("explorer.filters.createdBy.options.me"), + value: CREATED_BY_ME, + render: () => ( +
+ person + {t("explorer.filters.createdBy.options.me")} +
+ ), + }, + { + label: t("explorer.filters.createdBy.options.others"), + value: CREATED_BY_OTHERS, + render: () => ( +
+ people + {t("explorer.filters.createdBy.options.others")} +
+ ), + showSeparator: true, + }, + getResetOption(t), + ], + [t] + ); + + return ( + + ); +}; diff --git a/src/frontend/apps/drive/src/features/i18n/translations.json b/src/frontend/apps/drive/src/features/i18n/translations.json index 14b3dc343..a2eabb3bd 100644 --- a/src/frontend/apps/drive/src/features/i18n/translations.json +++ b/src/frontend/apps/drive/src/features/i18n/translations.json @@ -208,6 +208,13 @@ }, "workspace": { "label": "Workspace" + }, + "createdBy": { + "label": "Created by", + "options": { + "me": "Me", + "others": "Others" + } } }, "tree": { @@ -614,6 +621,13 @@ }, "workspace": { "label": "Espace" + }, + "createdBy": { + "label": "Créé par", + "options": { + "me": "Moi", + "others": "Autres" + } } }, "tree": { @@ -1026,6 +1040,13 @@ }, "workspace": { "label": "Werkruimte" + }, + "createdBy": { + "label": "Gemaakt door", + "options": { + "me": "Mij", + "others": "Anderen" + } } }, "tree": {