diff --git a/src/components/modals/CodeGenModal.tsx b/src/components/modals/CodeGenModal.tsx
index 8cfae09..25b7497 100644
--- a/src/components/modals/CodeGenModal.tsx
+++ b/src/components/modals/CodeGenModal.tsx
@@ -1,11 +1,10 @@
-import { Box, Button, Code, CopyButton, ScrollArea, Tabs, Text } from "@mantine/core"
+import { Box, Button, CopyButton, Tabs, Text } from "@mantine/core"
import { ContextModalProps } from "@mantine/modals"
import { IconClipboard, IconClipboardCheck } from "@tabler/icons-react";
import { useEffect } from "react";
import SyntaxHighlighter from 'react-syntax-highlighter'
import { atomOneDark } from "react-syntax-highlighter/dist/esm/styles/hljs";
import useCodeGenRepo from "../../data/repo/useCodeGenRepo";
-import useEditorRepo from "../../data/repo/useEditorRepo";
import { useEditorStore } from "../../store/useEditorStore";
@@ -31,12 +30,19 @@ function CodeGenModal({ context, id, innerProps }: ContextModalProps) {
Types
+
+ Functions
+
+
+
+
+
)
@@ -47,7 +53,7 @@ function TypesPanel() {
const getDataSnap = useEditorStore((state) => state.getDataSnapshot);
- const { typeString, typesList, selectType} = useCodeGenRepo(getDataSnap())
+ const { typeString, typesList, selectTable} = useCodeGenRepo(getDataSnap())
return(
<>
@@ -55,12 +61,12 @@ function TypesPanel() {
- selectType(undefined)}>
+ selectTable(undefined)}>
All
{
typesList.map((item)=>(
- selectType(item)}>
+ selectTable(item)}>
{item}
))
@@ -109,4 +115,70 @@ function TypesPanel() {
)
}
+function FunctionsPanel() {
+
+ const getDataSnap = useEditorStore((state) => state.getDataSnapshot);
+
+ const { functionString, typesList, selectTable} = useCodeGenRepo(getDataSnap())
+
+ return(
+ <>
+
+
+
+
+ selectTable(undefined)}>
+ All
+
+ {
+ typesList.map((item)=>(
+ selectTable(item)}>
+ {item}
+
+ ))
+ }
+
+
+
+
+
+
+
+
+ {({ copied, copy }) => (
+
+ )}
+
+
+
+
+ {functionString}
+
+
+
+
+
+
+
+
+ >
+ )
+}
+
export default CodeGenModal
\ No newline at end of file
diff --git a/src/components/modals/ShareModal.tsx b/src/components/modals/ShareModal.tsx
index bad71b2..4b90670 100644
--- a/src/components/modals/ShareModal.tsx
+++ b/src/components/modals/ShareModal.tsx
@@ -8,7 +8,6 @@ import {
CopyButton,
Divider,
Group,
- Input,
InputBase,
Loader,
Menu,
@@ -19,7 +18,6 @@ import {
Text,
TextInput,
Title,
- Tooltip,
useCombobox,
} from "@mantine/core";
import { ContextModalProps } from "@mantine/modals";
@@ -27,7 +25,6 @@ import {
IconCopy,
IconDotsVertical,
IconLock,
- IconPlus,
} from "@tabler/icons-react";
import { useEffect, useMemo, useState } from "react";
import useProjectRepo from "../../data/repo/useProjectRepo";
@@ -62,6 +59,7 @@ function ShareModal({ context, id }: ContextModalProps) {
>([]);
// useState to keep track project members locally.
const [localMembers, setLocalMembers] = useState([]);
+ const [localRemovedMembers, setLocalRemovedMembers] = useState([]);
const [searchTerm, setSearchTerm] = useState("");
const currentUserRole = useMemo(() => {
@@ -167,6 +165,9 @@ function ShareModal({ context, id }: ContextModalProps) {
};
const handleRemoveMember = (memberId: string) => {
+ const removedMember = localMembers.find(member => member.id === memberId)
+ if (!removedMember) return
+ setLocalRemovedMembers([...localMembers, removedMember])
setLocalMembers((prev) => prev.filter((member) => member.id !== memberId));
};
@@ -205,6 +206,7 @@ function ShareModal({ context, id }: ContextModalProps) {
]);
await fetchProjectMembers(selectedProject.id);
+ setLocalRemovedMembers([])
showNotification({
color: "green",
@@ -352,7 +354,7 @@ function ShareModal({ context, id }: ContextModalProps) {
)}
-
+
{initialLoading ? (
@@ -370,6 +372,7 @@ function ShareModal({ context, id }: ContextModalProps) {
}
onRemove={() => handleRemoveMember(member.id)}
currentUserRole={currentUserRole}
+ dimmed={member.id.startsWith("temp-")}
/>
) : null
)
@@ -379,7 +382,20 @@ function ShareModal({ context, id }: ContextModalProps) {
-
+ {(currentUserRole === "Owner" || currentUserRole === "Admin")
+ && (members.some((member) => member.id.startsWith("temp-")) || localRemovedMembers.length > 0) && (
+
+ )}
+
+
General Access
@@ -406,18 +422,6 @@ function ShareModal({ context, id }: ContextModalProps) {
}
}}
/>
-
- {(currentUserRole === "Owner" || currentUserRole === "Admin") && (
-
- )}
);
}
@@ -486,6 +490,7 @@ interface MemberItemProps {
onRemove: () => void;
isCurrentUser: boolean;
currentUserRole: string;
+ dimmed?: boolean
}
function MemberItem({
@@ -498,6 +503,7 @@ function MemberItem({
onRemove,
isCurrentUser,
currentUserRole,
+ dimmed
}: MemberItemProps) {
const truncatedEmail =
username.length > 25 ? `${username.slice(0, 22)}...` : username;
@@ -510,10 +516,10 @@ function MemberItem({
justify="space-between"
>
-
+
-
+
{name}{" "}
{isCurrentUser && (
@@ -521,13 +527,13 @@ function MemberItem({
)}
-
+
{truncatedEmail}
-
+
{role === "Owner" ? (
{role}
) : // Ensure only Admin and Owner can update member roles
@@ -540,6 +546,7 @@ function MemberItem({
value={role}
data={["Viewer", "Editor", "Admin"]}
onChange={(value) => value && onRoleChange(value)}
+ opacity={dimmed ? 0.5 : 1}
/>
) : (
{role}
@@ -550,7 +557,7 @@ function MemberItem({
role !== "Owner" && (