{"version":3,"file":"CreateLocale.mjs","sources":["../../../admin/src/components/CreateLocale.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n  Form,\n  type InputProps,\n  InputRenderer,\n  useField,\n  type FormHelpers,\n  useForm,\n  useAPIErrorHandler,\n  useNotification,\n  useAuth,\n} from '@strapi/admin/strapi-admin';\nimport {\n  Box,\n  Button,\n  ButtonProps,\n  Combobox,\n  ComboboxOption,\n  Divider,\n  Field,\n  Flex,\n  Grid,\n  Modal,\n  Tabs,\n  Typography,\n  useId,\n} from '@strapi/design-system';\nimport { Check, Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { CreateLocale } from '../../../shared/contracts/locales';\nimport { useCreateLocaleMutation, useGetDefaultLocalesQuery } from '../services/locales';\nimport { isBaseQueryError } from '../utils/baseQuery';\nimport { getTranslation } from '../utils/getTranslation';\n\n/* -------------------------------------------------------------------------------------------------\n * CreateLocale\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CreateLocaleProps extends Pick<ButtonProps, 'disabled' | 'variant'> {}\n\nconst CreateLocale = ({ disabled, variant = 'default' }: CreateLocaleProps) => {\n  const { formatMessage } = useIntl();\n  const [visible, setVisible] = React.useState(false);\n\n  return (\n    <Modal.Root open={visible} onOpenChange={setVisible}>\n      <Modal.Trigger>\n        <Button\n          variant={variant}\n          disabled={disabled}\n          startIcon={<Plus />}\n          onClick={() => setVisible(true)}\n          size=\"S\"\n          fullWidth\n        >\n          {formatMessage({\n            id: getTranslation('Settings.list.actions.add'),\n            defaultMessage: 'Add new locale',\n          })}\n        </Button>\n      </Modal.Trigger>\n      <CreateModal onClose={() => setVisible(false)} />\n    </Modal.Root>\n  );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CreateModal\n * -----------------------------------------------------------------------------------------------*/\n\nconst LOCALE_SCHEMA = yup.object().shape({\n  code: yup.string().nullable().required({\n    id: 'Settings.locales.modal.create.code.error',\n    defaultMessage: 'Please select a locale',\n  }),\n  name: yup\n    .string()\n    .nullable()\n    .max(50, {\n      id: 'Settings.locales.modal.create.name.error.min',\n      defaultMessage: 'The locale display name can only be less than 50 characters.',\n    })\n    .required({\n      id: 'Settings.locales.modal.create.name.error.required',\n      defaultMessage: 'Please give the locale a display name',\n    }),\n  isDefault: yup.boolean(),\n});\n\ntype FormValues = CreateLocale.Request['body'];\n\nconst initialFormValues = {\n  code: '',\n  name: '',\n  isDefault: false,\n} satisfies FormValues;\n\ntype ModalCreateProps = {\n  onClose: () => void;\n};\n\nconst CreateModal = ({ onClose }: ModalCreateProps) => {\n  const titleId = useId();\n  const { toggleNotification } = useNotification();\n  const {\n    _unstableFormatAPIError: formatAPIError,\n    _unstableFormatValidationErrors: formatValidationErrors,\n  } = useAPIErrorHandler();\n  const [createLocale] = useCreateLocaleMutation();\n  const { formatMessage } = useIntl();\n  const refetchPermissions = useAuth('CreateModal', (state) => state.refetchPermissions);\n\n  const handleSubmit = async (values: FormValues, helpers: FormHelpers<FormValues>) => {\n    try {\n      const res = await createLocale(values);\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.create.success'),\n          defaultMessage: 'Locale successfully added',\n        }),\n      });\n\n      refetchPermissions();\n      onClose();\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.Content>\n      <Form\n        method=\"POST\"\n        initialValues={initialFormValues}\n        validationSchema={LOCALE_SCHEMA}\n        onSubmit={handleSubmit}\n      >\n        <Modal.Header>\n          <Modal.Title>\n            {formatMessage({\n              id: getTranslation('Settings.list.actions.add'),\n              defaultMessage: 'Add new locale',\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\n            <Divider />\n\n            <Box paddingTop={7} paddingBottom={7}>\n              <Tabs.Content value=\"basic\">\n                <BaseForm />\n              </Tabs.Content>\n              <Tabs.Content value=\"advanced\">\n                <AdvancedForm />\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  );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SubmitButton\n * -----------------------------------------------------------------------------------------------*/\n\nconst SubmitButton = () => {\n  const { formatMessage } = useIntl();\n  const isSubmitting = useForm('SubmitButton', (state) => state.isSubmitting);\n  const modified = useForm('SubmitButton', (state) => state.modified);\n\n  return (\n    <Button type=\"submit\" startIcon={<Check />} disabled={isSubmitting || !modified}>\n      {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n    </Button>\n  );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BaseForm\n * -----------------------------------------------------------------------------------------------*/\n\ninterface BaseFormProps {\n  mode?: 'create' | 'edit';\n}\n\nconst BaseForm = ({ mode = 'create' }: BaseFormProps) => {\n  const { formatMessage } = useIntl();\n  const { toggleNotification } = useNotification();\n  const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n  const { data: defaultLocales, error } = useGetDefaultLocalesQuery();\n\n  React.useEffect(() => {\n    if (error) {\n      toggleNotification({\n        type: 'danger',\n        message: formatAPIError(error),\n      });\n    }\n  }, [error, formatAPIError, toggleNotification]);\n\n  if (!Array.isArray(defaultLocales)) {\n    return null;\n  }\n\n  const options = defaultLocales.map((locale) => ({\n    label: locale.name,\n    value: locale.code,\n  }));\n\n  const translatedForm = [\n    {\n      disabled: mode !== 'create',\n      label: {\n        id: getTranslation('Settings.locales.modal.create.code.label'),\n        defaultMessage: 'Locales',\n      },\n      name: 'code',\n      options,\n      placeholder: {\n        id: 'components.placeholder.select',\n        defaultMessage: 'Select',\n      },\n      required: true,\n      size: 6,\n      type: 'enumeration' as const,\n    },\n    {\n      hint: {\n        id: getTranslation('Settings.locales.modal.create.name.description'),\n        defaultMessage: 'Locale will be displayed under that name in the administration panel',\n      },\n      label: {\n        id: getTranslation('Settings.locales.modal.create.name.label'),\n        defaultMessage: 'Locale display name',\n      },\n      name: 'name',\n      required: true,\n      size: 6,\n      type: 'string' as const,\n    },\n  ].map((field) => ({\n    ...field,\n    hint: field.hint ? formatMessage(field.hint) : undefined,\n    label: formatMessage(field.label),\n    placeholder: field.placeholder ? formatMessage(field.placeholder) : undefined,\n  }));\n\n  return (\n    <Grid.Root gap={4}>\n      {translatedForm.map(({ size, ...field }) => (\n        <Grid.Item key={field.name} xs={12} m={size} direction=\"column\" alignItems=\"stretch\">\n          <FormRenderer {...field} />\n        </Grid.Item>\n      ))}\n    </Grid.Root>\n  );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AdvancedForm\n * -----------------------------------------------------------------------------------------------*/\n\ntype AdvancedFormProps = {\n  isDefaultLocale?: boolean;\n};\n\nconst AdvancedForm = ({ isDefaultLocale }: AdvancedFormProps) => {\n  const { formatMessage } = useIntl();\n\n  const form = [\n    {\n      disabled: isDefaultLocale,\n      hint: {\n        id: getTranslation('Settings.locales.modal.advanced.setAsDefault.hint'),\n        defaultMessage: 'One default locale is required, change it by selecting another one',\n      },\n      label: {\n        id: getTranslation('Settings.locales.modal.advanced.setAsDefault'),\n        defaultMessage: 'Set as default locale',\n      },\n      name: 'isDefault',\n      size: 6,\n      type: 'boolean' as const,\n    },\n  ].map((field) => ({\n    ...field,\n    hint: field.hint ? formatMessage(field.hint) : undefined,\n    label: formatMessage(field.label),\n  })) satisfies InputProps[];\n\n  return (\n    <Grid.Root gap={4}>\n      {form.map(({ size, ...field }) => (\n        <Grid.Item key={field.name} xs={12} m={size} direction=\"column\" alignItems=\"stretch\">\n          <FormRenderer {...field} />\n        </Grid.Item>\n      ))}\n    </Grid.Root>\n  );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * FormRenderer\n * -----------------------------------------------------------------------------------------------*/\n\nconst FormRenderer = (field: InputProps) => {\n  switch (field.type) {\n    /**\n     * This will override the default input renderer\n     * choice for `enumeration`.\n     */\n    case 'enumeration':\n      return <EnumerationInput {...field} />;\n    default:\n      return <InputRenderer {...field} />;\n  }\n};\n\nconst EnumerationInput = ({\n  disabled,\n  hint,\n  label,\n  name,\n  options,\n  placeholder,\n  required,\n}: Extract<InputProps, { type: 'enumeration' }>) => {\n  const { value, error, onChange } = useField(name);\n  const { data: defaultLocales = [] } = useGetDefaultLocalesQuery();\n  const fieldValue = typeof value === 'string' ? value : undefined;\n\n  const handleChange = (value: string) => {\n    if (Array.isArray(defaultLocales)) {\n      // We know it exists because the options are created from the list of default locales\n      const locale = defaultLocales.find((locale) => locale.code === value)!;\n\n      onChange(name, value);\n      // This lets us automatically fill the name field with the locale name\n      onChange('name', locale.name);\n    } else {\n      onChange(name, value);\n    }\n  };\n\n  // Find the label for the current value to display in the combobox\n  const selectedOption = options.find((option) => option.value === fieldValue);\n\n  return (\n    <Field.Root error={error} hint={hint} name={name} required={required}>\n      <Field.Label>{label}</Field.Label>\n      <Combobox\n        disabled={disabled}\n        onChange={handleChange}\n        onClear={() => handleChange('')}\n        placeholder={placeholder}\n        value={fieldValue}\n        textValue={selectedOption?.label}\n        autocomplete={{ type: 'list', filter: 'contains' }}\n      >\n        {options.map((option) => (\n          <ComboboxOption value={option.value} key={option.value}>\n            {option.label}\n          </ComboboxOption>\n        ))}\n      </Combobox>\n      <Field.Error />\n      <Field.Hint />\n    </Field.Root>\n  );\n};\n\nexport { CreateLocale, BaseForm, AdvancedForm, SubmitButton, LOCALE_SCHEMA };\n"],"names":["CreateLocale","disabled","variant","formatMessage","useIntl","visible","setVisible","React","useState","_jsxs","Modal","Root","open","onOpenChange","_jsx","Trigger","Button","startIcon","Plus","onClick","size","fullWidth","id","getTranslation","defaultMessage","CreateModal","onClose","LOCALE_SCHEMA","yup","object","shape","code","string","nullable","required","name","max","isDefault","boolean","initialFormValues","titleId","useId","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","createLocale","useCreateLocaleMutation","refetchPermissions","useAuth","state","handleSubmit","values","helpers","res","isBaseQueryError","error","setErrors","type","message","Content","Form","method","initialValues","validationSchema","onSubmit","Header","Title","Body","Tabs","defaultValue","Flex","justifyContent","Typography","tag","List","aria-labelledby","value","Divider","Box","paddingTop","paddingBottom","BaseForm","AdvancedForm","Footer","Close","SubmitButton","isSubmitting","useForm","modified","Check","mode","data","defaultLocales","useGetDefaultLocalesQuery","useEffect","Array","isArray","options","map","locale","label","translatedForm","placeholder","hint","field","undefined","Grid","gap","Item","xs","m","direction","alignItems","FormRenderer","isDefaultLocale","form","EnumerationInput","InputRenderer","onChange","useField","fieldValue","handleChange","find","selectedOption","option","Field","Label","Combobox","onClear","textValue","autocomplete","filter","ComboboxOption","Error","Hint"],"mappings":"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"}