From fcbe2f7909bd672fd44ce991e71eb09ded5825ba Mon Sep 17 00:00:00 2001
From: IRBorisov <8611739+IRBorisov@users.noreply.github.com>
Date: Fri, 21 Jun 2024 19:34:16 +0300
Subject: [PATCH] Implementing SelectLocation pt1
---
.../src/components/select/SelectLocation.tsx | 42 +++++++++++++++++++
.../pages/CreateItemPage/FormCreateItem.tsx | 16 +++++--
2 files changed, 55 insertions(+), 3 deletions(-)
create mode 100644 rsconcept/frontend/src/components/select/SelectLocation.tsx
diff --git a/rsconcept/frontend/src/components/select/SelectLocation.tsx b/rsconcept/frontend/src/components/select/SelectLocation.tsx
new file mode 100644
index 00000000..43cbcd66
--- /dev/null
+++ b/rsconcept/frontend/src/components/select/SelectLocation.tsx
@@ -0,0 +1,42 @@
+'use client';
+
+import { useCallback } from 'react';
+
+import useDropdown from '@/hooks/useDropdown';
+import { FolderTree } from '@/models/FolderTree';
+
+import { IconFolderTree } from '../Icons';
+import MiniButton from '../ui/MiniButton';
+
+interface SelectLocationProps {
+ value: string;
+ onChange: (newValue: string) => void;
+
+ folderTree: FolderTree;
+}
+
+function SelectLocation({ value, onChange, folderTree }: SelectLocationProps) {
+ const menu = useDropdown();
+
+ const handleChange = useCallback(
+ (newValue: string) => {
+ console.log(folderTree.roots.size);
+ console.log(value);
+ menu.hide();
+ onChange(newValue);
+ },
+ [menu, onChange, value, folderTree]
+ );
+
+ return (
+
+ }
+ onClick={() => handleChange('/U/test')}
+ />
+
+ );
+}
+
+export default SelectLocation;
diff --git a/rsconcept/frontend/src/pages/CreateItemPage/FormCreateItem.tsx b/rsconcept/frontend/src/pages/CreateItemPage/FormCreateItem.tsx
index 78eb2998..b5ab8e23 100644
--- a/rsconcept/frontend/src/pages/CreateItemPage/FormCreateItem.tsx
+++ b/rsconcept/frontend/src/pages/CreateItemPage/FormCreateItem.tsx
@@ -1,7 +1,7 @@
'use client';
import clsx from 'clsx';
-import { useEffect, useMemo, useRef, useState } from 'react';
+import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
import { toast } from 'react-toastify';
import { urls } from '@/app/urls';
@@ -10,6 +10,7 @@ import { IconDownload } from '@/components/Icons';
import InfoError from '@/components/info/InfoError';
import SelectAccessPolicy from '@/components/select/SelectAccessPolicy';
import SelectItemType from '@/components/select/SelectItemType';
+import SelectLocation from '@/components/select/SelectLocation';
import SelectLocationHead from '@/components/select/SelectLocationHead';
import Button from '@/components/ui/Button';
import Label from '@/components/ui/Label';
@@ -30,7 +31,7 @@ import { information } from '@/utils/labels';
function FormCreateItem() {
const router = useConceptNavigation();
const { user } = useAuth();
- const { createItem, processingError, setProcessingError, processing } = useLibrary();
+ const { createItem, processingError, setProcessingError, processing, folders } = useLibrary();
const [itemType, setItemType] = useState(LibraryItemType.RSFORM);
const [title, setTitle] = useState('');
@@ -98,6 +99,11 @@ function FormCreateItem() {
}
}
+ const handleSelectLocation = useCallback((newValue: string) => {
+ setHead(newValue.substring(0, 2) as LocationHead);
+ setBody(newValue.length > 3 ? newValue.substring(3) : '');
+ }, []);
+
return (