{"version":3,"file":"EditLocale.mjs","sources":["../../../admin/src/components/EditLocale.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n  useNotification,\n  useAPIErrorHandler,\n  Form,\n  FormHelpers,\n  useAuth,\n} from '@strapi/admin/strapi-admin';\nimport {\n  Box,\n  Button,\n  Divider,\n  Flex,\n  IconButton,\n  Modal,\n  Tabs,\n  Typography,\n  useId,\n} from '@strapi/design-system';\nimport { Pencil } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { Locale, UpdateLocale } from '../../../shared/contracts/locales';\nimport { useUpdateLocaleMutation } from '../services/locales';\nimport { isBaseQueryError } from '../utils/baseQuery';\nimport { getTranslation } from '../utils/getTranslation';\n\nimport { AdvancedForm, BaseForm, LOCALE_SCHEMA, SubmitButton } from './CreateLocale';\n\n/* -------------------------------------------------------------------------------------------------\n * EditLocale\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EditLocaleProps extends Omit<EditModalProps, 'open' | 'onOpenChange'> {}\n\nconst EditLocale = (props: EditLocaleProps) => {\n  const { formatMessage } = useIntl();\n  const [visible, setVisible] = React.useState(false);\n\n  return (\n    <>\n      <IconButton\n        onClick={() => setVisible(true)}\n        label={formatMessage(\n          {\n            id: getTranslation('Settings.list.actions.edit'),\n            defaultMessage: 'Edit {name} locale',\n          },\n          {\n            name: props.name,\n          }\n        )}\n        variant=\"ghost\"\n      >\n        <Pencil />\n      </IconButton>\n      <EditModal {...props} open={visible} onOpenChange={setVisible} />\n    </>\n  );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EditModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EditModalProps extends Pick<Locale, 'id' | 'isDefault' | 'name' | 'code'> {\n  open: boolean;\n  onOpenChange: (open: boolean) => void;\n}\n\ntype FormValues = UpdateLocale.Request['body'] & { code: string };\n\n/**\n * @internal\n * @description Exported to be used when someone clicks on a table row.\n */\nconst EditModal = ({ id, code, isDefault, name, open, onOpenChange }: EditModalProps) => {\n  const { toggleNotification } = useNotification();\n  const {\n    _unstableFormatAPIError: formatAPIError,\n    _unstableFormatValidationErrors: formatValidationErrors,\n  } = useAPIErrorHandler();\n  const refetchPermissions = useAuth('EditModal', (state) => state.refetchPermissions);\n  const { formatMessage } = useIntl();\n  const titleId = useId();\n\n  const [updateLocale] = useUpdateLocaleMutation();\n  const handleSubmit = async (\n    { code: _code, ...data }: FormValues,\n    helpers: FormHelpers<FormValues>\n  ) => {\n    try {\n      /**\n       * We don't need to send the code, because the\n       * code can never be changed.\n       */\n      const res = await updateLocale({\n        id,\n        ...data,\n      });\n\n      if ('error' in res) {\n        if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n          helpers.setErrors(formatValidationErrors(res.error));\n        } else {\n          toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n        }\n\n        return;\n      }\n\n      toggleNotification({\n        type: 'success',\n        message: formatMessage({\n          id: getTranslation('Settings.locales.modal.edit.success'),\n          defaultMessage: 'Locale successfully edited',\n        }),\n      });\n\n      refetchPermissions();\n      onOpenChange(false);\n    } catch {\n      toggleNotification({\n        type: 'danger',\n        message: formatMessage({\n          id: 'notification.error',\n          defaultMessage: 'An error occurred, please try again',\n        }),\n      });\n    }\n  };\n\n  return (\n    <Modal.Root open={open} onOpenChange={onOpenChange}>\n      <Modal.Content>\n        <Form\n          method=\"PUT\"\n          onSubmit={handleSubmit}\n          initialValues={{\n            code,\n            name,\n            isDefault,\n          }}\n          validationSchema={LOCALE_SCHEMA}\n        >\n          <Modal.Header>\n            <Modal.Title>\n              {formatMessage(\n                {\n                  id: getTranslation('Settings.list.actions.edit'),\n                  defaultMessage: 'Edit a locale',\n                },\n                {\n                  name,\n                }\n              )}\n            </Modal.Title>\n          </Modal.Header>\n          <Modal.Body>\n            <Tabs.Root variant=\"simple\" defaultValue=\"basic\">\n              <Flex justifyContent=\"space-between\">\n                <Typography tag=\"h2\" variant=\"beta\" id={titleId}>\n                  {formatMessage({\n                    id: getTranslation('Settings.locales.modal.title'),\n                    defaultMessage: 'Configuration',\n                  })}\n                </Typography>\n                <Tabs.List aria-labelledby={titleId}>\n                  <Tabs.Trigger value=\"basic\">\n                    {formatMessage({\n                      id: getTranslation('Settings.locales.modal.base'),\n                      defaultMessage: 'Basic settings',\n                    })}\n                  </Tabs.Trigger>\n                  <Tabs.Trigger value=\"advanced\">\n                    {formatMessage({\n                      id: getTranslation('Settings.locales.modal.advanced'),\n                      defaultMessage: 'Advanced settings',\n                    })}\n                  </Tabs.Trigger>\n                </Tabs.List>\n              </Flex>\n              <Divider />\n              <Box paddingTop={7} paddingBottom={7}>\n                <Tabs.Content value=\"basic\">\n                  <BaseForm mode=\"edit\" />\n                </Tabs.Content>\n                <Tabs.Content value=\"advanced\">\n                  <AdvancedForm isDefaultLocale={isDefault} />\n                </Tabs.Content>\n              </Box>\n            </Tabs.Root>\n          </Modal.Body>\n          <Modal.Footer>\n            <Modal.Close>\n              <Button variant=\"tertiary\">\n                {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n              </Button>\n            </Modal.Close>\n            <SubmitButton />\n          </Modal.Footer>\n        </Form>\n      </Modal.Content>\n    </Modal.Root>\n  );\n};\n\nexport { EditLocale, EditModal };\n"],"names":["EditLocale","props","formatMessage","useIntl","visible","setVisible","React","useState","_jsxs","_Fragment","_jsx","IconButton","onClick","label","id","getTranslation","defaultMessage","name","variant","Pencil","EditModal","open","onOpenChange","code","isDefault","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","refetchPermissions","useAuth","state","titleId","useId","updateLocale","useUpdateLocaleMutation","handleSubmit","_code","data","helpers","res","isBaseQueryError","error","setErrors","type","message","Modal","Root","Content","Form","method","onSubmit","initialValues","validationSchema","LOCALE_SCHEMA","Header","Title","Body","Tabs","defaultValue","Flex","justifyContent","Typography","tag","List","aria-labelledby","Trigger","value","Divider","Box","paddingTop","paddingBottom","BaseForm","mode","AdvancedForm","isDefaultLocale","Footer","Close","Button","SubmitButton"],"mappings":"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"}