diff --git a/src/components/adminaddresses/CreateUpdateForm.tsx b/src/components/adminaddresses/CreateUpdateForm.tsx index 60adfe76..7502e449 100644 --- a/src/components/adminaddresses/CreateUpdateForm.tsx +++ b/src/components/adminaddresses/CreateUpdateForm.tsx @@ -1,30 +1,16 @@ -import * as Yup from "yup" -import { - Box, - Button, - ButtonGroup, - Card, - CardBody, - CardHeader, - Container, - Flex, - SimpleGrid, - Stack, - theme, - VStack -} from "@chakra-ui/react" -import {InputControl, SwitchControl} from "components/react-hook-form" -import {Address, AdminAddresses} from "ordercloud-javascript-sdk" -import {useRouter} from "hooks/useRouter" +import {Button, ButtonGroup, Card, CardBody, CardHeader, Container, SimpleGrid} from "@chakra-ui/react" +import {yupResolver} from "@hookform/resolvers/yup" +import {InputControl} from "components/react-hook-form" import {useCreateUpdateForm} from "hooks/useCreateUpdateForm" +import {useRouter} from "hooks/useRouter" import {pick} from "lodash" -import {IAdminAddress} from "types/ordercloud/IAdminAddress" +import {Address, AdminAddresses} from "ordercloud-javascript-sdk" import {useForm} from "react-hook-form" -import {yupResolver} from "@hookform/resolvers/yup" -import SubmitButton from "../react-hook-form/submit-button" -import ResetButton from "../react-hook-form/reset-button" import {TbChevronLeft} from "react-icons/tb" -import AdminUserXpCard from "../adminusers/AdminUserXpCard" +import {IAdminAddress} from "types/ordercloud/IAdminAddress" +import * as Yup from "yup" +import ResetButton from "../react-hook-form/reset-button" +import SubmitButton from "../react-hook-form/submit-button" export {CreateUpdateForm} interface CreateUpdateFormProps { diff --git a/src/components/adminusers/AdminUserXpCard.tsx b/src/components/adminusers/AdminUserXpCard.tsx deleted file mode 100644 index 82a9fcca..00000000 --- a/src/components/adminusers/AdminUserXpCard.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import {useEffect, useState} from "react" -import {AdminUsers, User} from "ordercloud-javascript-sdk" -import {useRouter} from "hooks/useRouter" -import XpCard from "../card/XpCard" -import {IAdminUser, IAdminUserXp} from "types/ordercloud/IAdminUser" - -type AdminUserDataProps = { - user: User & {xp?: unknown} -} - -export default function AdminUserXpCard({user}: AdminUserDataProps) { - const [isEditingBasicData, setIsEditingBasicData] = useState(false) - const [isLoading, setIsLoading] = useState(false) - const [isDeleting, setIsDeleting] = useState(false) - const [formValues, setFormValues] = useState(Object.assign({}, user?.xp)) - const [xpsToBeDeleted, setXpsToBeDeleted] = useState([]) - let router = useRouter() - - useEffect(() => { - setFormValues(Object.assign({}, user?.xp)) - }, [user?.xp]) - - const onUserSave = async () => { - setIsLoading(true) - if (isDeleting) { - var newUser: IAdminUser = user - delete newUser.xp - var tempXPs = Object.assign({}, formValues) - xpsToBeDeleted.forEach((e) => delete tempXPs[e]) - newUser["xp"] = tempXPs - await AdminUsers.Save(user?.ID, newUser) - setIsDeleting(false) - setXpsToBeDeleted([]) - } else { - const newUser: IAdminUser = { - ...user, - xp: formValues - } - await AdminUsers.Patch(user?.ID, newUser) - } - - setIsEditingBasicData(false) - setIsLoading(false) - router.back() - } - - return ( - <> - - - ) -} diff --git a/src/components/adminusers/CreateUpdateForm.tsx b/src/components/adminusers/CreateUpdateForm.tsx index a4f2cf41..2a9399a0 100644 --- a/src/components/adminusers/CreateUpdateForm.tsx +++ b/src/components/adminusers/CreateUpdateForm.tsx @@ -16,6 +16,7 @@ import { TableContainer, Tbody, Td, + Text, theme, Tr, VStack @@ -29,7 +30,6 @@ import {textHelper} from "utils" import {appPermissions} from "constants/app-permissions.config" import {isEqual, sortBy, difference, pick} from "lodash" import {IAdminUser} from "types/ordercloud/IAdminUser" -import AdminUserXpCard from "./AdminUserXpCard" import {useForm} from "react-hook-form" import {yupResolver} from "@hookform/resolvers/yup" import SubmitButton from "../react-hook-form/submit-button" @@ -197,7 +197,7 @@ function CreateUpdateForm({user, assignedPermissions}: CreateUpdateFormProps) { - + Under construction ) diff --git a/src/components/card/XpCard.tsx b/src/components/card/XpCard.tsx deleted file mode 100644 index b146960b..00000000 --- a/src/components/card/XpCard.tsx +++ /dev/null @@ -1,408 +0,0 @@ -import { - Heading, - Box, - Text, - Card, - Button, - HStack, - Tooltip, - Center, - Modal, - ModalBody, - ModalContent, - ModalHeader, - ModalOverlay, - useDisclosure, - Select, - Input, - Textarea, - CheckboxGroup, - Checkbox -} from "@chakra-ui/react" -import {ChangeEvent, MouseEventHandler, useEffect, useState} from "react" -import BrandedSpinner from "../branding/BrandedSpinner" -import TagContainer from "../generic/tagContainer" -import {useErrorToast} from "hooks/useToast" - -type DataProps = { - data: T & {xp?: unknown} - formValues: unknown - setFormValues: Function - isLoading: boolean - setIsLoading: Function - isEditingBasicData: boolean - setIsEditingBasicData: Function - setIsDeleting: Function - xpsToBeDeleted: string[] - setXpsToBeDeleted: Function - onSave: MouseEventHandler -} - -export default function XpCard({ - data, - formValues, - setFormValues, - isLoading, - setIsLoading, - isEditingBasicData, - setIsEditingBasicData, - setIsDeleting, - xpsToBeDeleted, - setXpsToBeDeleted, - onSave -}: DataProps) { - const {isOpen: isOpenAddXP, onOpen: onOpenAddXP, onClose: onCloseAddXP} = useDisclosure() - const {isOpen: isOpenEditXP, onOpen: onOpenEditXP, onClose: onCloseEditXP} = useDisclosure() - - const [isAdding, setIsAdding] = useState(false) - const [newXpFormName, setNewXpFormName] = useState("") - const [newXpFormType, setNewXpFormType] = useState("text") - const [newXpFormValue, setNewXpFormValue] = useState("") - const [expanded, setExpanded] = useState(true) - const [editing, setEditing] = useState("") - //const [editingType, setEditingType] = useState("text") - const errorToast = useErrorToast() - const tags = ["1", "2", "3", "4", "5", "6"] - - useEffect(() => { - setFormValues(Object.assign({}, data?.xp)) - }, [data?.xp, setFormValues]) - - const onEditClicked = (e) => { - e.preventDefault() - setFormValues(Object.assign({}, data?.xp)) - setIsEditingBasicData(true) - setExpanded(true) - } - - const onAbortClicked = (e) => { - e.preventDefault() - setIsDeleting(false) - setIsEditingBasicData(false) - setFormValues(Object.assign({}, data?.xp)) - setXpsToBeDeleted([]) - } - - const handleXPChange = (name: string) => { - setEditing(name) - setNewXpFormValue(formValues[name]) - onOpenEditXP() - } - const onEditProductXP = () => { - setIsLoading(true) - formValues[editing] = newXpFormValue - onEditProductXPClosed() - setIsLoading(false) - return - } - - const handleInputChange = - (fieldKey: string) => (e: ChangeEvent | ChangeEvent) => { - var newVal = e.target.type == "number" ? Number(e.target.value) : e.target.value - var tmpXPs = formValues - tmpXPs[fieldKey] = newVal - setFormValues(tmpXPs) - } - - const handleEditXP = (e) => { - if (editing.endsWith("###")) { - var strValues = newXpFormValue.toString() - var tempValues = strValues.includes(",") ? strValues.split(",") : [strValues] - tempValues = tempValues.includes(e.target.value) - ? tempValues.filter((ele) => ele !== e.target.value) - : [...tempValues, e.target.value] - setNewXpFormValue(tempValues.length > 1 ? tempValues.join(",") : tempValues[0]) - } else setNewXpFormValue(typeof formValues[editing] == "string" ? e.target.value : Number(e.target.value)) - } - const handleNewXPChange = (e) => { - switch (e.target.name) { - case "name": - setNewXpFormName(e.target.value) - break - case "type": - setNewXpFormType(e.target.value) - break - case "value": - if (newXpFormType == "tag") { - var strValues = newXpFormValue.toString() - var tempValues = strValues.includes(",") ? strValues.split(",") : [strValues] - tempValues = tempValues.includes(e.target.value) - ? tempValues.filter((ele) => ele !== e.target.value) - : [...tempValues, e.target.value] - setNewXpFormValue(tempValues.length > 1 ? tempValues.join(",") : tempValues[0]) - } else { - setNewXpFormValue(newXpFormType == "number" ? Number(e.target.value) : e.target.value) - } - - break - default: - return - } - } - - const onDeleteProductXPClicked = (key: string) => async (e) => { - setIsLoading(true) - setIsDeleting(true) - const tempDeleted = xpsToBeDeleted.includes(key) - ? xpsToBeDeleted.filter((thing) => thing !== key) - : [...xpsToBeDeleted, key] - setXpsToBeDeleted(tempDeleted) - setIsLoading(false) - } - - const onNewProductXP = async () => { - const TempXpFormName = newXpFormType == "tag" ? newXpFormName + "###" : newXpFormName - if (formValues[TempXpFormName] !== undefined) { - errorToast({ - title: "Validation Error", - description: "Extended property of that name already exists" - }) - return - } - setIsLoading(true) - - formValues[TempXpFormName] = newXpFormValue - onNewProductXPClosed() - setIsLoading(false) - } - const onNewProductXPClosed = async () => { - setNewXpFormName("") - setNewXpFormType("text") - setNewXpFormValue("") - - onCloseAddXP() - } - const onEditProductXPClosed = async () => { - setEditing("") - onCloseEditXP() - } - const renderCurrentSelection = () => { - switch (newXpFormType) { - case "text": - return ( - <> - Value: - - - ) - case "number": - return ( - <> - Value: - - - ) - case "tag": - return ( - <> - Value: - - {tags.map((x, key) => { - return ( - - {x} - - ) - })} - - - ) - default: - return "" - } - } - const renderCurrentEditing = () => { - const editingType = editing.endsWith("###") ? "tag" : typeof formValues[editing] == "string" ? "text" : "number" - switch (editingType) { - case "text": - if (formValues[editing].length > 60) - return ( - <> - Value: -