{"version":3,"file":"CreateFolderDialog.mjs","sources":["../../../../../../admin/src/future/pages/Assets/components/CreateFolderDialog.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { useNotification } from '@strapi/admin/strapi-admin';\nimport { Button, Field, Flex, Modal, TextInput } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useCreateFolderMutation } from '../../../services/folders';\nimport { getTranslationKey } from '../../../utils/translations';\n\ninterface CreateFolderDialogProps {\n  open: boolean;\n  folderName: string;\n  parentFolderId: number | null;\n  onClose: () => void;\n}\n\nconst StyledModalContent = styled(Modal.Content)`\n  max-width: 51.6rem;\n`;\n\nexport const CreateFolderDialog = ({\n  open,\n  folderName,\n  parentFolderId,\n  onClose,\n}: CreateFolderDialogProps) => {\n  const { formatMessage } = useIntl();\n  const { toggleNotification } = useNotification();\n  const [name, setName] = useState('');\n  const [fieldError, setFieldError] = useState<string | undefined>();\n  const [createFolder, { isLoading }] = useCreateFolderMutation();\n\n  useEffect(() => {\n    if (open) {\n      setName('');\n      setFieldError(undefined);\n    }\n  }, [open]);\n\n  const handleSubmit = async (e: React.FormEvent) => {\n    e.preventDefault();\n\n    const trimmedName = name.trim();\n\n    if (!trimmedName) {\n      setFieldError(\n        formatMessage({\n          id: getTranslationKey('folder.create.form.error.name-required'),\n          defaultMessage: 'Name is required',\n        })\n      );\n      return;\n    }\n\n    try {\n      await createFolder({ name: trimmedName, parent: parentFolderId }).unwrap();\n\n      toggleNotification({\n        type: 'success',\n        message: formatMessage({\n          id: getTranslationKey('folder.create.success'),\n          defaultMessage: 'Folder has been created',\n        }),\n      });\n\n      onClose();\n    } catch (err) {\n      const apiError = err as { message?: string };\n\n      if (apiError?.message) {\n        setFieldError(apiError.message);\n      } else {\n        toggleNotification({\n          type: 'danger',\n          message: formatMessage({\n            id: getTranslationKey('folder.create.form.error.unknown'),\n            defaultMessage: 'An error occurred while creating the folder',\n          }),\n        });\n      }\n    }\n  };\n\n  return (\n    <Modal.Root open={open} onOpenChange={onClose}>\n      <StyledModalContent>\n        <Modal.Header>\n          <Modal.Title>\n            {formatMessage(\n              {\n                id: getTranslationKey('folder.create.title-in'),\n                defaultMessage: 'New folder in {folderName}',\n              },\n              { folderName }\n            )}\n          </Modal.Title>\n        </Modal.Header>\n        <form onSubmit={handleSubmit}>\n          <Modal.Body>\n            <Field.Root error={fieldError} name=\"name\" required>\n              <Field.Label>\n                {formatMessage({\n                  id: getTranslationKey('folder.form.name.label'),\n                  defaultMessage: 'Folder name',\n                })}\n              </Field.Label>\n              <TextInput\n                value={name}\n                onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n                  setName(e.target.value);\n                  setFieldError(undefined);\n                }}\n                autoFocus\n              />\n              <Field.Error />\n            </Field.Root>\n          </Modal.Body>\n          <Modal.Footer>\n            <Flex gap={2} justifyContent=\"space-between\" width=\"100%\">\n              <Button variant=\"tertiary\" onClick={onClose} type=\"button\">\n                {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n              </Button>\n              <Button type=\"submit\" loading={isLoading}>\n                {formatMessage({\n                  id: getTranslationKey('folder.create.submit'),\n                  defaultMessage: 'Create folder',\n                })}\n              </Button>\n            </Flex>\n          </Modal.Footer>\n        </form>\n      </StyledModalContent>\n    </Modal.Root>\n  );\n};\n"],"names":["StyledModalContent","styled","Modal","Content","CreateFolderDialog","open","folderName","parentFolderId","onClose","formatMessage","useIntl","toggleNotification","useNotification","name","setName","useState","fieldError","setFieldError","createFolder","isLoading","useCreateFolderMutation","useEffect","undefined","handleSubmit","e","preventDefault","trimmedName","trim","id","getTranslationKey","defaultMessage","parent","unwrap","type","message","err","apiError","_jsx","Root","onOpenChange","_jsxs","Header","Title","form","onSubmit","Body","Field","error","required","Label","TextInput","value","onChange","target","autoFocus","Error","Footer","Flex","gap","justifyContent","width","Button","variant","onClick","loading"],"mappings":"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"}