@strapi/i18n 5.51.0 → 5.51.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/CMHeaderActions.js +8 -5
- package/dist/admin/components/CMHeaderActions.js.map +1 -1
- package/dist/admin/components/CMHeaderActions.mjs +8 -5
- package/dist/admin/components/CMHeaderActions.mjs.map +1 -1
- package/dist/admin/components/CreateLocale.js +1 -1
- package/dist/admin/components/CreateLocale.js.map +1 -1
- package/dist/admin/components/CreateLocale.mjs +1 -1
- package/dist/admin/components/CreateLocale.mjs.map +1 -1
- package/dist/admin/components/DeleteLocale.js +1 -1
- package/dist/admin/components/DeleteLocale.js.map +1 -1
- package/dist/admin/components/DeleteLocale.mjs +1 -1
- package/dist/admin/components/DeleteLocale.mjs.map +1 -1
- package/dist/admin/components/EditLocale.js +1 -1
- package/dist/admin/components/EditLocale.js.map +1 -1
- package/dist/admin/components/EditLocale.mjs +1 -1
- package/dist/admin/components/EditLocale.mjs.map +1 -1
- package/dist/admin/components/LocalePicker.js +9 -5
- package/dist/admin/components/LocalePicker.js.map +1 -1
- package/dist/admin/components/LocalePicker.mjs +9 -5
- package/dist/admin/components/LocalePicker.mjs.map +1 -1
- package/dist/admin/middlewares/extendCTBAttributeInitialData.js +2 -2
- package/dist/admin/middlewares/extendCTBAttributeInitialData.js.map +1 -1
- package/dist/admin/middlewares/extendCTBAttributeInitialData.mjs +2 -2
- package/dist/admin/middlewares/extendCTBAttributeInitialData.mjs.map +1 -1
- package/dist/server/controllers/validate-locale-creation.js +1 -1
- package/dist/server/controllers/validate-locale-creation.js.map +1 -1
- package/dist/server/controllers/validate-locale-creation.mjs +1 -1
- package/dist/server/controllers/validate-locale-creation.mjs.map +1 -1
- package/dist/server/services/ai-localizations.js +38 -37
- package/dist/server/services/ai-localizations.js.map +1 -1
- package/dist/server/services/ai-localizations.mjs +38 -37
- package/dist/server/services/ai-localizations.mjs.map +1 -1
- package/dist/server/services/fill-from-locale.js +49 -2
- package/dist/server/services/fill-from-locale.js.map +1 -1
- package/dist/server/services/fill-from-locale.mjs +49 -2
- package/dist/server/services/fill-from-locale.mjs.map +1 -1
- package/dist/server/src/services/ai-localizations.d.ts.map +1 -1
- package/dist/server/src/services/fill-from-locale.d.ts.map +1 -1
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"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 (err) {\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","err","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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"}
|
|
1
|
+
{"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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeleteLocale.js","sources":["../../../admin/src/components/DeleteLocale.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { ConfirmDialog, useAPIErrorHandler, useNotification } from '@strapi/admin/strapi-admin';\nimport { Dialog, IconButton } from '@strapi/design-system';\nimport { Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useDeleteLocaleMutation } from '../services/locales';\nimport { getTranslation } from '../utils/getTranslation';\n\nimport type { Locale } from '../../../shared/contracts/locales';\n\n/* -------------------------------------------------------------------------------------------------\n * DeleteLocale\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DeleteLocaleProps extends Locale {}\n\nconst DeleteLocale = ({ id, name }: DeleteLocaleProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [visible, setVisible] = React.useState(false);\n\n const [deleteLocale] = useDeleteLocaleMutation();\n const handleConfirm = async () => {\n try {\n const res = await deleteLocale(id);\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('Settings.locales.modal.delete.success'),\n defaultMessage: 'Deleted locale',\n }),\n });\n\n setVisible(false);\n } catch
|
|
1
|
+
{"version":3,"file":"DeleteLocale.js","sources":["../../../admin/src/components/DeleteLocale.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { ConfirmDialog, useAPIErrorHandler, useNotification } from '@strapi/admin/strapi-admin';\nimport { Dialog, IconButton } from '@strapi/design-system';\nimport { Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useDeleteLocaleMutation } from '../services/locales';\nimport { getTranslation } from '../utils/getTranslation';\n\nimport type { Locale } from '../../../shared/contracts/locales';\n\n/* -------------------------------------------------------------------------------------------------\n * DeleteLocale\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DeleteLocaleProps extends Locale {}\n\nconst DeleteLocale = ({ id, name }: DeleteLocaleProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [visible, setVisible] = React.useState(false);\n\n const [deleteLocale] = useDeleteLocaleMutation();\n const handleConfirm = async () => {\n try {\n const res = await deleteLocale(id);\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('Settings.locales.modal.delete.success'),\n defaultMessage: 'Deleted locale',\n }),\n });\n\n setVisible(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 <Dialog.Root open={visible} onOpenChange={setVisible}>\n <Dialog.Trigger>\n <IconButton\n onClick={() => setVisible(true)}\n label={formatMessage(\n {\n id: getTranslation('Settings.list.actions.delete'),\n defaultMessage: 'Delete {name} locale',\n },\n {\n name,\n }\n )}\n variant=\"ghost\"\n >\n <Trash />\n </IconButton>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleConfirm} />\n </Dialog.Root>\n );\n};\n\nexport { DeleteLocale };\n"],"names":["DeleteLocale","id","name","formatMessage","useIntl","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","visible","setVisible","React","useState","deleteLocale","useDeleteLocaleMutation","handleConfirm","res","type","message","error","getTranslation","defaultMessage","_jsxs","Dialog","Root","open","onOpenChange","_jsx","Trigger","IconButton","onClick","label","variant","Trash","ConfirmDialog","onConfirm"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,MAAMA,eAAe,CAAC,EAAEC,EAAE,EAAEC,IAAI,EAAqB,GAAA;IACnD,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;AAC/B,IAAA,MAAM,EAAEC,uBAAAA,EAAyBC,cAAc,EAAE,GAAGC,8BAAAA,EAAAA;AAEpD,IAAA,MAAM,CAACC,OAAAA,EAASC,UAAAA,CAAW,GAAGC,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IAE7C,MAAM,CAACC,aAAa,GAAGC,+BAAAA,EAAAA;AACvB,IAAA,MAAMC,aAAAA,GAAgB,UAAA;QACpB,IAAI;YACF,MAAMC,GAAAA,GAAM,MAAMH,YAAAA,CAAab,EAAAA,CAAAA;AAE/B,YAAA,IAAI,WAAWgB,GAAAA,EAAK;gBAClBZ,kBAAAA,CAAmB;oBAAEa,IAAAA,EAAM,QAAA;oBAAUC,OAAAA,EAASX,cAAAA,CAAeS,IAAIG,KAAK;AAAE,iBAAA,CAAA;AAExE,gBAAA;AACF,YAAA;YAEAf,kBAAAA,CAAmB;gBACjBa,IAAAA,EAAM,SAAA;AACNC,gBAAAA,OAAAA,EAAShB,aAAAA,CAAc;AACrBF,oBAAAA,EAAAA,EAAIoB,6BAAAA,CAAe,uCAAA,CAAA;oBACnBC,cAAAA,EAAgB;AAClB,iBAAA;AACF,aAAA,CAAA;YAEAX,UAAAA,CAAW,KAAA,CAAA;AACb,QAAA,CAAA,CAAE,OAAM;YACNN,kBAAAA,CAAmB;gBACjBa,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAAShB,aAAAA,CAAc;oBACrBF,EAAAA,EAAI,oBAAA;oBACJqB,cAAAA,EAAgB;AAClB,iBAAA;AACF,aAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;IAEA,qBACEC,eAAA,CAACC,oBAAOC,IAAI,EAAA;QAACC,IAAAA,EAAMhB,OAAAA;QAASiB,YAAAA,EAAchB,UAAAA;;AACxC,0BAAAiB,cAAA,CAACJ,oBAAOK,OAAO,EAAA;AACb,gBAAA,QAAA,gBAAAD,cAAA,CAACE,uBAAAA,EAAAA;AACCC,oBAAAA,OAAAA,EAAS,IAAMpB,UAAAA,CAAW,IAAA,CAAA;AAC1BqB,oBAAAA,KAAAA,EAAO7B,aAAAA,CACL;AACEF,wBAAAA,EAAAA,EAAIoB,6BAAAA,CAAe,8BAAA,CAAA;wBACnBC,cAAAA,EAAgB;qBAClB,EACA;AACEpB,wBAAAA;AACF,qBAAA,CAAA;oBAEF+B,OAAAA,EAAQ,OAAA;AAER,oBAAA,QAAA,gBAAAL,cAAA,CAACM,WAAAA,EAAAA,EAAAA;;;0BAGLN,cAAA,CAACO,yBAAAA,EAAAA;gBAAcC,SAAAA,EAAWpB;;;;AAGhC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeleteLocale.mjs","sources":["../../../admin/src/components/DeleteLocale.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { ConfirmDialog, useAPIErrorHandler, useNotification } from '@strapi/admin/strapi-admin';\nimport { Dialog, IconButton } from '@strapi/design-system';\nimport { Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useDeleteLocaleMutation } from '../services/locales';\nimport { getTranslation } from '../utils/getTranslation';\n\nimport type { Locale } from '../../../shared/contracts/locales';\n\n/* -------------------------------------------------------------------------------------------------\n * DeleteLocale\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DeleteLocaleProps extends Locale {}\n\nconst DeleteLocale = ({ id, name }: DeleteLocaleProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [visible, setVisible] = React.useState(false);\n\n const [deleteLocale] = useDeleteLocaleMutation();\n const handleConfirm = async () => {\n try {\n const res = await deleteLocale(id);\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('Settings.locales.modal.delete.success'),\n defaultMessage: 'Deleted locale',\n }),\n });\n\n setVisible(false);\n } catch
|
|
1
|
+
{"version":3,"file":"DeleteLocale.mjs","sources":["../../../admin/src/components/DeleteLocale.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { ConfirmDialog, useAPIErrorHandler, useNotification } from '@strapi/admin/strapi-admin';\nimport { Dialog, IconButton } from '@strapi/design-system';\nimport { Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useDeleteLocaleMutation } from '../services/locales';\nimport { getTranslation } from '../utils/getTranslation';\n\nimport type { Locale } from '../../../shared/contracts/locales';\n\n/* -------------------------------------------------------------------------------------------------\n * DeleteLocale\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DeleteLocaleProps extends Locale {}\n\nconst DeleteLocale = ({ id, name }: DeleteLocaleProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [visible, setVisible] = React.useState(false);\n\n const [deleteLocale] = useDeleteLocaleMutation();\n const handleConfirm = async () => {\n try {\n const res = await deleteLocale(id);\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('Settings.locales.modal.delete.success'),\n defaultMessage: 'Deleted locale',\n }),\n });\n\n setVisible(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 <Dialog.Root open={visible} onOpenChange={setVisible}>\n <Dialog.Trigger>\n <IconButton\n onClick={() => setVisible(true)}\n label={formatMessage(\n {\n id: getTranslation('Settings.list.actions.delete'),\n defaultMessage: 'Delete {name} locale',\n },\n {\n name,\n }\n )}\n variant=\"ghost\"\n >\n <Trash />\n </IconButton>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleConfirm} />\n </Dialog.Root>\n );\n};\n\nexport { DeleteLocale };\n"],"names":["DeleteLocale","id","name","formatMessage","useIntl","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","visible","setVisible","React","useState","deleteLocale","useDeleteLocaleMutation","handleConfirm","res","type","message","error","getTranslation","defaultMessage","_jsxs","Dialog","Root","open","onOpenChange","_jsx","Trigger","IconButton","onClick","label","variant","Trash","ConfirmDialog","onConfirm"],"mappings":";;;;;;;;;AAkBA,MAAMA,eAAe,CAAC,EAAEC,EAAE,EAAEC,IAAI,EAAqB,GAAA;IACnD,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,eAAAA,EAAAA;AAC/B,IAAA,MAAM,EAAEC,uBAAAA,EAAyBC,cAAc,EAAE,GAAGC,kBAAAA,EAAAA;AAEpD,IAAA,MAAM,CAACC,OAAAA,EAASC,UAAAA,CAAW,GAAGC,KAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IAE7C,MAAM,CAACC,aAAa,GAAGC,uBAAAA,EAAAA;AACvB,IAAA,MAAMC,aAAAA,GAAgB,UAAA;QACpB,IAAI;YACF,MAAMC,GAAAA,GAAM,MAAMH,YAAAA,CAAab,EAAAA,CAAAA;AAE/B,YAAA,IAAI,WAAWgB,GAAAA,EAAK;gBAClBZ,kBAAAA,CAAmB;oBAAEa,IAAAA,EAAM,QAAA;oBAAUC,OAAAA,EAASX,cAAAA,CAAeS,IAAIG,KAAK;AAAE,iBAAA,CAAA;AAExE,gBAAA;AACF,YAAA;YAEAf,kBAAAA,CAAmB;gBACjBa,IAAAA,EAAM,SAAA;AACNC,gBAAAA,OAAAA,EAAShB,aAAAA,CAAc;AACrBF,oBAAAA,EAAAA,EAAIoB,cAAAA,CAAe,uCAAA,CAAA;oBACnBC,cAAAA,EAAgB;AAClB,iBAAA;AACF,aAAA,CAAA;YAEAX,UAAAA,CAAW,KAAA,CAAA;AACb,QAAA,CAAA,CAAE,OAAM;YACNN,kBAAAA,CAAmB;gBACjBa,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAAShB,aAAAA,CAAc;oBACrBF,EAAAA,EAAI,oBAAA;oBACJqB,cAAAA,EAAgB;AAClB,iBAAA;AACF,aAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;IAEA,qBACEC,IAAA,CAACC,OAAOC,IAAI,EAAA;QAACC,IAAAA,EAAMhB,OAAAA;QAASiB,YAAAA,EAAchB,UAAAA;;AACxC,0BAAAiB,GAAA,CAACJ,OAAOK,OAAO,EAAA;AACb,gBAAA,QAAA,gBAAAD,GAAA,CAACE,UAAAA,EAAAA;AACCC,oBAAAA,OAAAA,EAAS,IAAMpB,UAAAA,CAAW,IAAA,CAAA;AAC1BqB,oBAAAA,KAAAA,EAAO7B,aAAAA,CACL;AACEF,wBAAAA,EAAAA,EAAIoB,cAAAA,CAAe,8BAAA,CAAA;wBACnBC,cAAAA,EAAgB;qBAClB,EACA;AACEpB,wBAAAA;AACF,qBAAA,CAAA;oBAEF+B,OAAAA,EAAQ,OAAA;AAER,oBAAA,QAAA,gBAAAL,GAAA,CAACM,KAAAA,EAAAA,EAAAA;;;0BAGLN,GAAA,CAACO,aAAAA,EAAAA;gBAAcC,SAAAA,EAAWpB;;;;AAGhC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditLocale.js","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 (err) {\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","err","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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,MAAMA,aAAa,CAACC,KAAAA,GAAAA;IAClB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,CAACC,OAAAA,EAASC,UAAAA,CAAW,GAAGC,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IAE7C,qBACEC,eAAA,CAAAC,mBAAA,EAAA;;0BACEC,cAAA,CAACC,uBAAAA,EAAAA;AACCC,gBAAAA,OAAAA,EAAS,IAAMP,UAAAA,CAAW,IAAA,CAAA;AAC1BQ,gBAAAA,KAAAA,EAAOX,aAAAA,CACL;AACEY,oBAAAA,EAAAA,EAAIC,6BAAAA,CAAe,4BAAA,CAAA;oBACnBC,cAAAA,EAAgB;iBAClB,EACA;AACEC,oBAAAA,IAAAA,EAAMhB,MAAMgB;AACd,iBAAA,CAAA;gBAEFC,OAAAA,EAAQ,OAAA;AAER,gBAAA,QAAA,gBAAAR,cAAA,CAACS,YAAAA,EAAAA,EAAAA;;0BAEHT,cAAA,CAACU,SAAAA,EAAAA;AAAW,gBAAA,GAAGnB,KAAK;gBAAEoB,IAAAA,EAAMjB,OAAAA;gBAASkB,YAAAA,EAAcjB;;;;AAGzD;AAaA;;;AAGC,IACD,MAAMe,SAAAA,GAAY,CAAC,EAAEN,EAAE,EAAES,IAAI,EAAEC,SAAS,EAAEP,IAAI,EAAEI,IAAI,EAAEC,YAAY,EAAkB,GAAA;IAClF,MAAM,EAAEG,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;AAC/B,IAAA,MAAM,EACJC,uBAAAA,EAAyBC,cAAc,EACvCC,+BAAAA,EAAiCC,sBAAsB,EACxD,GAAGC,8BAAAA,EAAAA;AACJ,IAAA,MAAMC,qBAAqBC,mBAAAA,CAAQ,WAAA,EAAa,CAACC,KAAAA,GAAUA,MAAMF,kBAAkB,CAAA;IACnF,MAAM,EAAE9B,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMgC,OAAAA,GAAUC,kBAAAA,EAAAA;IAEhB,MAAM,CAACC,aAAa,GAAGC,+BAAAA,EAAAA;IACvB,MAAMC,YAAAA,GAAe,OACnB,EAAEhB,IAAAA,EAAMiB,KAAK,EAAE,GAAGC,MAAkB,EACpCC,OAAAA,GAAAA;QAEA,IAAI;AACF;;;UAIA,MAAMC,GAAAA,GAAM,MAAMN,YAAAA,CAAa;AAC7BvB,gBAAAA,EAAAA;AACA,gBAAA,GAAG2B;AACL,aAAA,CAAA;AAEA,YAAA,IAAI,WAAWE,GAAAA,EAAK;gBAClB,IAAIC,0BAAAA,CAAiBD,IAAIE,KAAK,CAAA,IAAKF,IAAIE,KAAK,CAAC5B,IAAI,KAAK,iBAAA,EAAmB;AACvEyB,oBAAAA,OAAAA,CAAQI,SAAS,CAAChB,sBAAAA,CAAuBa,GAAAA,CAAIE,KAAK,CAAA,CAAA;gBACpD,CAAA,MAAO;oBACLpB,kBAAAA,CAAmB;wBAAEsB,IAAAA,EAAM,QAAA;wBAAUC,OAAAA,EAASpB,cAAAA,CAAee,IAAIE,KAAK;AAAE,qBAAA,CAAA;AAC1E,gBAAA;AAEA,gBAAA;AACF,YAAA;YAEApB,kBAAAA,CAAmB;gBACjBsB,IAAAA,EAAM,SAAA;AACNC,gBAAAA,OAAAA,EAAS9C,aAAAA,CAAc;AACrBY,oBAAAA,EAAAA,EAAIC,6BAAAA,CAAe,qCAAA,CAAA;oBACnBC,cAAAA,EAAgB;AAClB,iBAAA;AACF,aAAA,CAAA;AAEAgB,YAAAA,kBAAAA,EAAAA;YACAV,YAAAA,CAAa,KAAA,CAAA;AACf,QAAA,CAAA,CAAE,OAAO2B,GAAAA,EAAK;YACZxB,kBAAAA,CAAmB;gBACjBsB,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAAS9C,aAAAA,CAAc;oBACrBY,EAAAA,EAAI,oBAAA;oBACJE,cAAAA,EAAgB;AAClB,iBAAA;AACF,aAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;IAEA,qBACEN,cAAA,CAACwC,mBAAMC,IAAI,EAAA;QAAC9B,IAAAA,EAAMA,IAAAA;QAAMC,YAAAA,EAAcA,YAAAA;gCACpCZ,cAAA,CAACwC,mBAAME,OAAO,EAAA;AACZ,YAAA,QAAA,gBAAA5C,eAAA,CAAC6C,gBAAAA,EAAAA;gBACCC,MAAAA,EAAO,KAAA;gBACPC,QAAAA,EAAUhB,YAAAA;gBACViB,aAAAA,EAAe;AACbjC,oBAAAA,IAAAA;AACAN,oBAAAA,IAAAA;AACAO,oBAAAA;AACF,iBAAA;gBACAiC,gBAAAA,EAAkBC,0BAAAA;;AAElB,kCAAAhD,cAAA,CAACwC,mBAAMS,MAAM,EAAA;gDACXjD,cAAA,CAACwC,mBAAMU,KAAK,EAAA;sCACT1D,aAAAA,CACC;AACEY,gCAAAA,EAAAA,EAAIC,6BAAAA,CAAe,4BAAA,CAAA;gCACnBC,cAAAA,EAAgB;6BAClB,EACA;AACEC,gCAAAA;AACF,6BAAA;;;AAIN,kCAAAP,cAAA,CAACwC,mBAAMW,IAAI,EAAA;gDACTrD,eAAA,CAACsD,kBAAKX,IAAI,EAAA;4BAACjC,OAAAA,EAAQ,QAAA;4BAAS6C,YAAAA,EAAa,OAAA;;8CACvCvD,eAAA,CAACwD,iBAAAA,EAAAA;oCAAKC,cAAAA,EAAe,eAAA;;sDACnBvD,cAAA,CAACwD,uBAAAA,EAAAA;4CAAWC,GAAAA,EAAI,IAAA;4CAAKjD,OAAAA,EAAQ,MAAA;4CAAOJ,EAAAA,EAAIqB,OAAAA;sDACrCjC,aAAAA,CAAc;AACbY,gDAAAA,EAAAA,EAAIC,6BAAAA,CAAe,8BAAA,CAAA;gDACnBC,cAAAA,EAAgB;AAClB,6CAAA;;AAEF,sDAAAR,eAAA,CAACsD,kBAAKM,IAAI,EAAA;4CAACC,iBAAAA,EAAiBlC,OAAAA;;AAC1B,8DAAAzB,cAAA,CAACoD,kBAAKQ,OAAO,EAAA;oDAACC,KAAAA,EAAM,OAAA;8DACjBrE,aAAAA,CAAc;AACbY,wDAAAA,EAAAA,EAAIC,6BAAAA,CAAe,6BAAA,CAAA;wDACnBC,cAAAA,EAAgB;AAClB,qDAAA;;AAEF,8DAAAN,cAAA,CAACoD,kBAAKQ,OAAO,EAAA;oDAACC,KAAAA,EAAM,UAAA;8DACjBrE,aAAAA,CAAc;AACbY,wDAAAA,EAAAA,EAAIC,6BAAAA,CAAe,iCAAA,CAAA;wDACnBC,cAAAA,EAAgB;AAClB,qDAAA;;;;;;8CAINN,cAAA,CAAC8D,oBAAAA,EAAAA,EAAAA,CAAAA;8CACDhE,eAAA,CAACiE,gBAAAA,EAAAA;oCAAIC,UAAAA,EAAY,CAAA;oCAAGC,aAAAA,EAAe,CAAA;;AACjC,sDAAAjE,cAAA,CAACoD,kBAAKV,OAAO,EAAA;4CAACmB,KAAAA,EAAM,OAAA;AAClB,4CAAA,QAAA,gBAAA7D,cAAA,CAACkE,qBAAAA,EAAAA;gDAASC,IAAAA,EAAK;;;AAEjB,sDAAAnE,cAAA,CAACoD,kBAAKV,OAAO,EAAA;4CAACmB,KAAAA,EAAM,UAAA;AAClB,4CAAA,QAAA,gBAAA7D,cAAA,CAACoE,yBAAAA,EAAAA;gDAAaC,eAAAA,EAAiBvD;;;;;;;;AAKvC,kCAAAhB,eAAA,CAAC0C,mBAAM8B,MAAM,EAAA;;AACX,0CAAAtE,cAAA,CAACwC,mBAAM+B,KAAK,EAAA;AACV,gCAAA,QAAA,gBAAAvE,cAAA,CAACwE,mBAAAA,EAAAA;oCAAOhE,OAAAA,EAAQ,UAAA;8CACbhB,aAAAA,CAAc;wCAAEY,EAAAA,EAAI,8BAAA;wCAAgCE,cAAAA,EAAgB;AAAS,qCAAA;;;0CAGlFN,cAAA,CAACyE,yBAAAA,EAAAA,EAAAA;;;;;;;AAMb;;;;;"}
|
|
1
|
+
{"version":3,"file":"EditLocale.js","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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"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 (err) {\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","err","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":";;;;;;;;;;;AAoCA,MAAMA,aAAa,CAACC,KAAAA,GAAAA;IAClB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAM,CAACC,OAAAA,EAASC,UAAAA,CAAW,GAAGC,KAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IAE7C,qBACEC,IAAA,CAAAC,QAAA,EAAA;;0BACEC,GAAA,CAACC,UAAAA,EAAAA;AACCC,gBAAAA,OAAAA,EAAS,IAAMP,UAAAA,CAAW,IAAA,CAAA;AAC1BQ,gBAAAA,KAAAA,EAAOX,aAAAA,CACL;AACEY,oBAAAA,EAAAA,EAAIC,cAAAA,CAAe,4BAAA,CAAA;oBACnBC,cAAAA,EAAgB;iBAClB,EACA;AACEC,oBAAAA,IAAAA,EAAMhB,MAAMgB;AACd,iBAAA,CAAA;gBAEFC,OAAAA,EAAQ,OAAA;AAER,gBAAA,QAAA,gBAAAR,GAAA,CAACS,MAAAA,EAAAA,EAAAA;;0BAEHT,GAAA,CAACU,SAAAA,EAAAA;AAAW,gBAAA,GAAGnB,KAAK;gBAAEoB,IAAAA,EAAMjB,OAAAA;gBAASkB,YAAAA,EAAcjB;;;;AAGzD;AAaA;;;AAGC,IACD,MAAMe,SAAAA,GAAY,CAAC,EAAEN,EAAE,EAAES,IAAI,EAAEC,SAAS,EAAEP,IAAI,EAAEI,IAAI,EAAEC,YAAY,EAAkB,GAAA;IAClF,MAAM,EAAEG,kBAAkB,EAAE,GAAGC,eAAAA,EAAAA;AAC/B,IAAA,MAAM,EACJC,uBAAAA,EAAyBC,cAAc,EACvCC,+BAAAA,EAAiCC,sBAAsB,EACxD,GAAGC,kBAAAA,EAAAA;AACJ,IAAA,MAAMC,qBAAqBC,OAAAA,CAAQ,WAAA,EAAa,CAACC,KAAAA,GAAUA,MAAMF,kBAAkB,CAAA;IACnF,MAAM,EAAE9B,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMgC,OAAAA,GAAUC,KAAAA,EAAAA;IAEhB,MAAM,CAACC,aAAa,GAAGC,uBAAAA,EAAAA;IACvB,MAAMC,YAAAA,GAAe,OACnB,EAAEhB,IAAAA,EAAMiB,KAAK,EAAE,GAAGC,MAAkB,EACpCC,OAAAA,GAAAA;QAEA,IAAI;AACF;;;UAIA,MAAMC,GAAAA,GAAM,MAAMN,YAAAA,CAAa;AAC7BvB,gBAAAA,EAAAA;AACA,gBAAA,GAAG2B;AACL,aAAA,CAAA;AAEA,YAAA,IAAI,WAAWE,GAAAA,EAAK;gBAClB,IAAIC,gBAAAA,CAAiBD,IAAIE,KAAK,CAAA,IAAKF,IAAIE,KAAK,CAAC5B,IAAI,KAAK,iBAAA,EAAmB;AACvEyB,oBAAAA,OAAAA,CAAQI,SAAS,CAAChB,sBAAAA,CAAuBa,GAAAA,CAAIE,KAAK,CAAA,CAAA;gBACpD,CAAA,MAAO;oBACLpB,kBAAAA,CAAmB;wBAAEsB,IAAAA,EAAM,QAAA;wBAAUC,OAAAA,EAASpB,cAAAA,CAAee,IAAIE,KAAK;AAAE,qBAAA,CAAA;AAC1E,gBAAA;AAEA,gBAAA;AACF,YAAA;YAEApB,kBAAAA,CAAmB;gBACjBsB,IAAAA,EAAM,SAAA;AACNC,gBAAAA,OAAAA,EAAS9C,aAAAA,CAAc;AACrBY,oBAAAA,EAAAA,EAAIC,cAAAA,CAAe,qCAAA,CAAA;oBACnBC,cAAAA,EAAgB;AAClB,iBAAA;AACF,aAAA,CAAA;AAEAgB,YAAAA,kBAAAA,EAAAA;YACAV,YAAAA,CAAa,KAAA,CAAA;AACf,QAAA,CAAA,CAAE,OAAO2B,GAAAA,EAAK;YACZxB,kBAAAA,CAAmB;gBACjBsB,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAAS9C,aAAAA,CAAc;oBACrBY,EAAAA,EAAI,oBAAA;oBACJE,cAAAA,EAAgB;AAClB,iBAAA;AACF,aAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;IAEA,qBACEN,GAAA,CAACwC,MAAMC,IAAI,EAAA;QAAC9B,IAAAA,EAAMA,IAAAA;QAAMC,YAAAA,EAAcA,YAAAA;gCACpCZ,GAAA,CAACwC,MAAME,OAAO,EAAA;AACZ,YAAA,QAAA,gBAAA5C,IAAA,CAAC6C,IAAAA,EAAAA;gBACCC,MAAAA,EAAO,KAAA;gBACPC,QAAAA,EAAUhB,YAAAA;gBACViB,aAAAA,EAAe;AACbjC,oBAAAA,IAAAA;AACAN,oBAAAA,IAAAA;AACAO,oBAAAA;AACF,iBAAA;gBACAiC,gBAAAA,EAAkBC,aAAAA;;AAElB,kCAAAhD,GAAA,CAACwC,MAAMS,MAAM,EAAA;gDACXjD,GAAA,CAACwC,MAAMU,KAAK,EAAA;sCACT1D,aAAAA,CACC;AACEY,gCAAAA,EAAAA,EAAIC,cAAAA,CAAe,4BAAA,CAAA;gCACnBC,cAAAA,EAAgB;6BAClB,EACA;AACEC,gCAAAA;AACF,6BAAA;;;AAIN,kCAAAP,GAAA,CAACwC,MAAMW,IAAI,EAAA;gDACTrD,IAAA,CAACsD,KAAKX,IAAI,EAAA;4BAACjC,OAAAA,EAAQ,QAAA;4BAAS6C,YAAAA,EAAa,OAAA;;8CACvCvD,IAAA,CAACwD,IAAAA,EAAAA;oCAAKC,cAAAA,EAAe,eAAA;;sDACnBvD,GAAA,CAACwD,UAAAA,EAAAA;4CAAWC,GAAAA,EAAI,IAAA;4CAAKjD,OAAAA,EAAQ,MAAA;4CAAOJ,EAAAA,EAAIqB,OAAAA;sDACrCjC,aAAAA,CAAc;AACbY,gDAAAA,EAAAA,EAAIC,cAAAA,CAAe,8BAAA,CAAA;gDACnBC,cAAAA,EAAgB;AAClB,6CAAA;;AAEF,sDAAAR,IAAA,CAACsD,KAAKM,IAAI,EAAA;4CAACC,iBAAAA,EAAiBlC,OAAAA;;AAC1B,8DAAAzB,GAAA,CAACoD,KAAKQ,OAAO,EAAA;oDAACC,KAAAA,EAAM,OAAA;8DACjBrE,aAAAA,CAAc;AACbY,wDAAAA,EAAAA,EAAIC,cAAAA,CAAe,6BAAA,CAAA;wDACnBC,cAAAA,EAAgB;AAClB,qDAAA;;AAEF,8DAAAN,GAAA,CAACoD,KAAKQ,OAAO,EAAA;oDAACC,KAAAA,EAAM,UAAA;8DACjBrE,aAAAA,CAAc;AACbY,wDAAAA,EAAAA,EAAIC,cAAAA,CAAe,iCAAA,CAAA;wDACnBC,cAAAA,EAAgB;AAClB,qDAAA;;;;;;8CAINN,GAAA,CAAC8D,OAAAA,EAAAA,EAAAA,CAAAA;8CACDhE,IAAA,CAACiE,GAAAA,EAAAA;oCAAIC,UAAAA,EAAY,CAAA;oCAAGC,aAAAA,EAAe,CAAA;;AACjC,sDAAAjE,GAAA,CAACoD,KAAKV,OAAO,EAAA;4CAACmB,KAAAA,EAAM,OAAA;AAClB,4CAAA,QAAA,gBAAA7D,GAAA,CAACkE,QAAAA,EAAAA;gDAASC,IAAAA,EAAK;;;AAEjB,sDAAAnE,GAAA,CAACoD,KAAKV,OAAO,EAAA;4CAACmB,KAAAA,EAAM,UAAA;AAClB,4CAAA,QAAA,gBAAA7D,GAAA,CAACoE,YAAAA,EAAAA;gDAAaC,eAAAA,EAAiBvD;;;;;;;;AAKvC,kCAAAhB,IAAA,CAAC0C,MAAM8B,MAAM,EAAA;;AACX,0CAAAtE,GAAA,CAACwC,MAAM+B,KAAK,EAAA;AACV,gCAAA,QAAA,gBAAAvE,GAAA,CAACwE,MAAAA,EAAAA;oCAAOhE,OAAAA,EAAQ,UAAA;8CACbhB,aAAAA,CAAc;wCAAEY,EAAAA,EAAI,8BAAA;wCAAgCE,cAAAA,EAAgB;AAAS,qCAAA;;;0CAGlFN,GAAA,CAACyE,YAAAA,EAAAA,EAAAA;;;;;;;AAMb;;;;"}
|
|
1
|
+
{"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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"}
|
|
@@ -56,18 +56,22 @@ const LocalePicker = ()=>{
|
|
|
56
56
|
}
|
|
57
57
|
/**
|
|
58
58
|
* Handle the case where the current locale query param doesn't exist
|
|
59
|
-
* in the list of available locales, so we redirect to the default locale
|
|
59
|
+
* in the list of available locales, so we redirect to the default locale
|
|
60
|
+
* when the user can read it, or the first locale they can read: the list
|
|
61
|
+
* cannot be displayed for the other locales.
|
|
60
62
|
*/ const currentDesiredLocale = query.plugins?.i18n?.locale;
|
|
61
63
|
const doesLocaleExist = locales$1.find((loc)=>loc.code === currentDesiredLocale);
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
64
|
+
const readableLocales = locales$1.filter((locale)=>canRead.includes(locale.code));
|
|
65
|
+
const targetLocale = readableLocales.find((locale)=>locale.isDefault) ?? readableLocales[0];
|
|
66
|
+
if (!doesLocaleExist && targetLocale?.code) {
|
|
67
|
+
handleChange(targetLocale.code, true);
|
|
65
68
|
}
|
|
66
69
|
}, [
|
|
67
70
|
hasI18n,
|
|
68
71
|
handleChange,
|
|
69
72
|
locales$1,
|
|
70
|
-
query.plugins?.i18n?.locale
|
|
73
|
+
query.plugins?.i18n?.locale,
|
|
74
|
+
canRead
|
|
71
75
|
]);
|
|
72
76
|
const sortedLocaleOptions = React__namespace.useMemo(()=>{
|
|
73
77
|
const displayedLocales = Array.isArray(locales$1) ? locales$1.filter((locale)=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalePicker.js","sources":["../../../admin/src/components/LocalePicker.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport { SingleSelect, SingleSelectOption } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useI18n } from '../hooks/useI18n';\nimport { useGetLocalesQuery } from '../services/locales';\nimport { getTranslation } from '../utils/getTranslation';\n\nimport type { I18nBaseQuery } from '../types';\n\ninterface Query extends I18nBaseQuery {\n page?: number;\n}\n\nconst LocalePicker = () => {\n const { formatMessage } = useIntl();\n const [{ query }, setQuery] = useQueryParams<Query>();\n\n const { hasI18n, canRead, canCreate } = useI18n();\n const { data: locales = [] } = useGetLocalesQuery(undefined, {\n skip: !hasI18n,\n });\n\n const handleChange = React.useCallback(\n (code: string, replace = false) => {\n setQuery(\n {\n page: 1,\n plugins: { ...query.plugins, i18n: { locale: code } },\n },\n 'push',\n replace\n );\n },\n [query.plugins, setQuery]\n );\n\n React.useEffect(() => {\n if (!Array.isArray(locales) || !hasI18n) {\n return;\n }\n /**\n * Handle the case where the current locale query param doesn't exist\n * in the list of available locales, so we redirect to the default locale.\n */\n const currentDesiredLocale = query.plugins?.i18n?.locale;\n const doesLocaleExist = locales.find((loc) => loc.code === currentDesiredLocale);\n const
|
|
1
|
+
{"version":3,"file":"LocalePicker.js","sources":["../../../admin/src/components/LocalePicker.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport { SingleSelect, SingleSelectOption } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useI18n } from '../hooks/useI18n';\nimport { useGetLocalesQuery } from '../services/locales';\nimport { getTranslation } from '../utils/getTranslation';\n\nimport type { I18nBaseQuery } from '../types';\n\ninterface Query extends I18nBaseQuery {\n page?: number;\n}\n\nconst LocalePicker = () => {\n const { formatMessage } = useIntl();\n const [{ query }, setQuery] = useQueryParams<Query>();\n\n const { hasI18n, canRead, canCreate } = useI18n();\n const { data: locales = [] } = useGetLocalesQuery(undefined, {\n skip: !hasI18n,\n });\n\n const handleChange = React.useCallback(\n (code: string, replace = false) => {\n setQuery(\n {\n page: 1,\n plugins: { ...query.plugins, i18n: { locale: code } },\n },\n 'push',\n replace\n );\n },\n [query.plugins, setQuery]\n );\n\n React.useEffect(() => {\n if (!Array.isArray(locales) || !hasI18n) {\n return;\n }\n /**\n * Handle the case where the current locale query param doesn't exist\n * in the list of available locales, so we redirect to the default locale\n * when the user can read it, or the first locale they can read: the list\n * cannot be displayed for the other locales.\n */\n const currentDesiredLocale = query.plugins?.i18n?.locale;\n const doesLocaleExist = locales.find((loc) => loc.code === currentDesiredLocale);\n const readableLocales = locales.filter((locale) => canRead.includes(locale.code));\n const targetLocale = readableLocales.find((locale) => locale.isDefault) ?? readableLocales[0];\n if (!doesLocaleExist && targetLocale?.code) {\n handleChange(targetLocale.code, true);\n }\n }, [hasI18n, handleChange, locales, query.plugins?.i18n?.locale, canRead]);\n\n const sortedLocaleOptions = React.useMemo(() => {\n const displayedLocales = Array.isArray(locales)\n ? locales.filter((locale) => {\n /**\n * If you can create or read we allow you to see the locale exists\n * this is because in the ListView, you may be able to create a new entry\n * in a locale you can't read.\n */\n return canCreate.includes(locale.code) || canRead.includes(locale.code);\n })\n : [];\n\n return displayedLocales\n .sort((a, b) => a.name.localeCompare(b.name))\n .map((locale) => (\n <SingleSelectOption key={locale.id} value={locale.code}>\n {locale.name}\n </SingleSelectOption>\n ));\n }, [locales, canCreate, canRead]);\n\n if (!hasI18n || !Array.isArray(locales) || locales.length === 0) {\n return null;\n }\n\n return (\n <SingleSelect\n size=\"S\"\n aria-label={formatMessage({\n id: getTranslation('actions.select-locale'),\n defaultMessage: 'Select locale',\n })}\n value={query.plugins?.i18n?.locale || locales.find((locale) => locale.isDefault)?.code}\n // @ts-expect-error – This can be removed in V2 of the DS.\n onChange={handleChange}\n >\n {sortedLocaleOptions}\n </SingleSelect>\n );\n};\n\nexport { LocalePicker };\n"],"names":["LocalePicker","formatMessage","useIntl","query","setQuery","useQueryParams","hasI18n","canRead","canCreate","useI18n","data","locales","useGetLocalesQuery","undefined","skip","handleChange","React","useCallback","code","replace","page","plugins","i18n","locale","useEffect","Array","isArray","currentDesiredLocale","doesLocaleExist","find","loc","readableLocales","filter","includes","targetLocale","isDefault","sortedLocaleOptions","useMemo","displayedLocales","sort","a","b","name","localeCompare","map","_jsx","SingleSelectOption","value","id","length","SingleSelect","size","aria-label","getTranslation","defaultMessage","onChange"],"mappings":"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"}
|
|
@@ -34,18 +34,22 @@ const LocalePicker = ()=>{
|
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
36
36
|
* Handle the case where the current locale query param doesn't exist
|
|
37
|
-
* in the list of available locales, so we redirect to the default locale
|
|
37
|
+
* in the list of available locales, so we redirect to the default locale
|
|
38
|
+
* when the user can read it, or the first locale they can read: the list
|
|
39
|
+
* cannot be displayed for the other locales.
|
|
38
40
|
*/ const currentDesiredLocale = query.plugins?.i18n?.locale;
|
|
39
41
|
const doesLocaleExist = locales.find((loc)=>loc.code === currentDesiredLocale);
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
42
|
+
const readableLocales = locales.filter((locale)=>canRead.includes(locale.code));
|
|
43
|
+
const targetLocale = readableLocales.find((locale)=>locale.isDefault) ?? readableLocales[0];
|
|
44
|
+
if (!doesLocaleExist && targetLocale?.code) {
|
|
45
|
+
handleChange(targetLocale.code, true);
|
|
43
46
|
}
|
|
44
47
|
}, [
|
|
45
48
|
hasI18n,
|
|
46
49
|
handleChange,
|
|
47
50
|
locales,
|
|
48
|
-
query.plugins?.i18n?.locale
|
|
51
|
+
query.plugins?.i18n?.locale,
|
|
52
|
+
canRead
|
|
49
53
|
]);
|
|
50
54
|
const sortedLocaleOptions = React.useMemo(()=>{
|
|
51
55
|
const displayedLocales = Array.isArray(locales) ? locales.filter((locale)=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalePicker.mjs","sources":["../../../admin/src/components/LocalePicker.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport { SingleSelect, SingleSelectOption } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useI18n } from '../hooks/useI18n';\nimport { useGetLocalesQuery } from '../services/locales';\nimport { getTranslation } from '../utils/getTranslation';\n\nimport type { I18nBaseQuery } from '../types';\n\ninterface Query extends I18nBaseQuery {\n page?: number;\n}\n\nconst LocalePicker = () => {\n const { formatMessage } = useIntl();\n const [{ query }, setQuery] = useQueryParams<Query>();\n\n const { hasI18n, canRead, canCreate } = useI18n();\n const { data: locales = [] } = useGetLocalesQuery(undefined, {\n skip: !hasI18n,\n });\n\n const handleChange = React.useCallback(\n (code: string, replace = false) => {\n setQuery(\n {\n page: 1,\n plugins: { ...query.plugins, i18n: { locale: code } },\n },\n 'push',\n replace\n );\n },\n [query.plugins, setQuery]\n );\n\n React.useEffect(() => {\n if (!Array.isArray(locales) || !hasI18n) {\n return;\n }\n /**\n * Handle the case where the current locale query param doesn't exist\n * in the list of available locales, so we redirect to the default locale.\n */\n const currentDesiredLocale = query.plugins?.i18n?.locale;\n const doesLocaleExist = locales.find((loc) => loc.code === currentDesiredLocale);\n const
|
|
1
|
+
{"version":3,"file":"LocalePicker.mjs","sources":["../../../admin/src/components/LocalePicker.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport { SingleSelect, SingleSelectOption } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useI18n } from '../hooks/useI18n';\nimport { useGetLocalesQuery } from '../services/locales';\nimport { getTranslation } from '../utils/getTranslation';\n\nimport type { I18nBaseQuery } from '../types';\n\ninterface Query extends I18nBaseQuery {\n page?: number;\n}\n\nconst LocalePicker = () => {\n const { formatMessage } = useIntl();\n const [{ query }, setQuery] = useQueryParams<Query>();\n\n const { hasI18n, canRead, canCreate } = useI18n();\n const { data: locales = [] } = useGetLocalesQuery(undefined, {\n skip: !hasI18n,\n });\n\n const handleChange = React.useCallback(\n (code: string, replace = false) => {\n setQuery(\n {\n page: 1,\n plugins: { ...query.plugins, i18n: { locale: code } },\n },\n 'push',\n replace\n );\n },\n [query.plugins, setQuery]\n );\n\n React.useEffect(() => {\n if (!Array.isArray(locales) || !hasI18n) {\n return;\n }\n /**\n * Handle the case where the current locale query param doesn't exist\n * in the list of available locales, so we redirect to the default locale\n * when the user can read it, or the first locale they can read: the list\n * cannot be displayed for the other locales.\n */\n const currentDesiredLocale = query.plugins?.i18n?.locale;\n const doesLocaleExist = locales.find((loc) => loc.code === currentDesiredLocale);\n const readableLocales = locales.filter((locale) => canRead.includes(locale.code));\n const targetLocale = readableLocales.find((locale) => locale.isDefault) ?? readableLocales[0];\n if (!doesLocaleExist && targetLocale?.code) {\n handleChange(targetLocale.code, true);\n }\n }, [hasI18n, handleChange, locales, query.plugins?.i18n?.locale, canRead]);\n\n const sortedLocaleOptions = React.useMemo(() => {\n const displayedLocales = Array.isArray(locales)\n ? locales.filter((locale) => {\n /**\n * If you can create or read we allow you to see the locale exists\n * this is because in the ListView, you may be able to create a new entry\n * in a locale you can't read.\n */\n return canCreate.includes(locale.code) || canRead.includes(locale.code);\n })\n : [];\n\n return displayedLocales\n .sort((a, b) => a.name.localeCompare(b.name))\n .map((locale) => (\n <SingleSelectOption key={locale.id} value={locale.code}>\n {locale.name}\n </SingleSelectOption>\n ));\n }, [locales, canCreate, canRead]);\n\n if (!hasI18n || !Array.isArray(locales) || locales.length === 0) {\n return null;\n }\n\n return (\n <SingleSelect\n size=\"S\"\n aria-label={formatMessage({\n id: getTranslation('actions.select-locale'),\n defaultMessage: 'Select locale',\n })}\n value={query.plugins?.i18n?.locale || locales.find((locale) => locale.isDefault)?.code}\n // @ts-expect-error – This can be removed in V2 of the DS.\n onChange={handleChange}\n >\n {sortedLocaleOptions}\n </SingleSelect>\n );\n};\n\nexport { LocalePicker };\n"],"names":["LocalePicker","formatMessage","useIntl","query","setQuery","useQueryParams","hasI18n","canRead","canCreate","useI18n","data","locales","useGetLocalesQuery","undefined","skip","handleChange","React","useCallback","code","replace","page","plugins","i18n","locale","useEffect","Array","isArray","currentDesiredLocale","doesLocaleExist","find","loc","readableLocales","filter","includes","targetLocale","isDefault","sortedLocaleOptions","useMemo","displayedLocales","sort","a","b","name","localeCompare","map","_jsx","SingleSelectOption","value","id","length","SingleSelect","size","aria-label","getTranslation","defaultMessage","onChange"],"mappings":"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"}
|
|
@@ -34,7 +34,7 @@ const extendCTBAttributeInitialDataMiddleware = ()=>{
|
|
|
34
34
|
...action.payload,
|
|
35
35
|
options: {
|
|
36
36
|
pluginOptions: {
|
|
37
|
-
...action?.payload?.options?.pluginOptions
|
|
37
|
+
...action?.payload?.options?.pluginOptions,
|
|
38
38
|
i18n: {
|
|
39
39
|
localized: true
|
|
40
40
|
}
|
|
@@ -44,7 +44,7 @@ const extendCTBAttributeInitialDataMiddleware = ()=>{
|
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
46
|
return next(action);
|
|
47
|
-
} catch
|
|
47
|
+
} catch {
|
|
48
48
|
return next(action);
|
|
49
49
|
}
|
|
50
50
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extendCTBAttributeInitialData.js","sources":["../../../admin/src/middlewares/extendCTBAttributeInitialData.ts"],"sourcesContent":["import get from 'lodash/get';\n\nimport type { Middleware } from '@reduxjs/toolkit';\nimport type { Store } from '@strapi/admin/strapi-admin';\n\nconst extendCTBAttributeInitialDataMiddleware: () => Middleware<\n object,\n ReturnType<Store['getState']>\n> = () => {\n return ({ getState }) =>\n (next) =>\n (action) => {\n const enhanceAction = ({ uid }: { uid: string }) => {\n // the block here is to catch the error when trying to access the state\n // of the ctb when the plugin is not mounted\n try {\n const store = getState();\n\n const type = get(store, [\n 'content-type-builder_dataManagerProvider',\n 'current',\n 'contentTypes',\n uid,\n ]);\n\n if (!type || type.modelType !== 'contentType') {\n return next(action);\n }\n\n const hasi18nEnabled = get(type, ['pluginOptions', 'i18n', 'localized'], false);\n\n if (hasi18nEnabled) {\n return next({\n ...action,\n payload: {\n ...action.payload,\n options: {\n pluginOptions: {\n ...
|
|
1
|
+
{"version":3,"file":"extendCTBAttributeInitialData.js","sources":["../../../admin/src/middlewares/extendCTBAttributeInitialData.ts"],"sourcesContent":["import get from 'lodash/get';\n\nimport type { Middleware } from '@reduxjs/toolkit';\nimport type { Store } from '@strapi/admin/strapi-admin';\n\nconst extendCTBAttributeInitialDataMiddleware: () => Middleware<\n object,\n ReturnType<Store['getState']>\n> = () => {\n return ({ getState }) =>\n (next) =>\n (action) => {\n const enhanceAction = ({ uid }: { uid: string }) => {\n // the block here is to catch the error when trying to access the state\n // of the ctb when the plugin is not mounted\n try {\n const store = getState();\n\n const type = get(store, [\n 'content-type-builder_dataManagerProvider',\n 'current',\n 'contentTypes',\n uid,\n ]);\n\n if (!type || type.modelType !== 'contentType') {\n return next(action);\n }\n\n const hasi18nEnabled = get(type, ['pluginOptions', 'i18n', 'localized'], false);\n\n if (hasi18nEnabled) {\n return next({\n ...action,\n payload: {\n ...action.payload,\n options: {\n pluginOptions: {\n ...action?.payload?.options?.pluginOptions,\n i18n: {\n localized: true,\n },\n },\n },\n },\n });\n }\n\n return next(action);\n } catch {\n return next(action);\n }\n };\n\n const { payload = {}, type } = action ?? {};\n\n if (\n type === 'formModal/setAttributeDataSchema' &&\n !['relation', 'component'].includes(payload.attributeType) &&\n !payload.isEditing\n ) {\n return enhanceAction({\n uid: payload.uid,\n });\n }\n\n if (type === 'formModal/setCustomFieldDataSchema' && !payload.isEditing) {\n return enhanceAction({\n uid: payload.uid,\n });\n }\n\n if (\n type === 'formModal/resetPropsAndSetFormForAddingAnExistingCompo' ||\n type === 'formModal/resetPropsAndSaveCurrentData'\n ) {\n return enhanceAction({\n uid: payload.uid,\n });\n }\n\n return next(action);\n };\n};\n\nexport { extendCTBAttributeInitialDataMiddleware };\n"],"names":["extendCTBAttributeInitialDataMiddleware","getState","next","action","enhanceAction","uid","store","type","get","modelType","hasi18nEnabled","payload","options","pluginOptions","i18n","localized","includes","attributeType","isEditing"],"mappings":";;;;;;;;AAKA,MAAMA,uCAAAA,GAGF,IAAA;AACF,IAAA,OAAO,CAAC,EAAEC,QAAQ,EAAE,GAClB,CAACC,OACD,CAACC,MAAAA,GAAAA;AACC,gBAAA,MAAMC,aAAAA,GAAgB,CAAC,EAAEC,GAAG,EAAmB,GAAA;;;oBAG7C,IAAI;AACF,wBAAA,MAAMC,KAAAA,GAAQL,QAAAA,EAAAA;wBAEd,MAAMM,IAAAA,GAAOC,qBAAIF,KAAAA,EAAO;AACtB,4BAAA,0CAAA;AACA,4BAAA,SAAA;AACA,4BAAA,cAAA;AACAD,4BAAAA;AACD,yBAAA,CAAA;AAED,wBAAA,IAAI,CAACE,IAAAA,IAAQA,IAAAA,CAAKE,SAAS,KAAK,aAAA,EAAe;AAC7C,4BAAA,OAAOP,IAAAA,CAAKC,MAAAA,CAAAA;AACd,wBAAA;wBAEA,MAAMO,cAAAA,GAAiBF,qBAAID,IAAAA,EAAM;AAAC,4BAAA,eAAA;AAAiB,4BAAA,MAAA;AAAQ,4BAAA;yBAAY,EAAE,KAAA,CAAA;AAEzE,wBAAA,IAAIG,cAAAA,EAAgB;AAClB,4BAAA,OAAOR,IAAAA,CAAK;AACV,gCAAA,GAAGC,MAAM;gCACTQ,OAAAA,EAAS;AACP,oCAAA,GAAGR,OAAOQ,OAAO;oCACjBC,OAAAA,EAAS;wCACPC,aAAAA,EAAe;4CACb,GAAGV,MAAAA,EAAQQ,OAAAA,EAASC,OAAAA,EAASC,aAAa;4CAC1CC,IAAAA,EAAM;gDACJC,SAAAA,EAAW;AACb;AACF;AACF;AACF;AACF,6BAAA,CAAA;AACF,wBAAA;AAEA,wBAAA,OAAOb,IAAAA,CAAKC,MAAAA,CAAAA;AACd,oBAAA,CAAA,CAAE,OAAM;AACN,wBAAA,OAAOD,IAAAA,CAAKC,MAAAA,CAAAA;AACd,oBAAA;AACF,gBAAA,CAAA;gBAEA,MAAM,EAAEQ,UAAU,EAAE,EAAEJ,IAAI,EAAE,GAAGJ,MAAAA,IAAU,EAAC;gBAE1C,IACEI,IAAAA,KAAS,sCACT,CAAC;AAAC,oBAAA,UAAA;AAAY,oBAAA;iBAAY,CAACS,QAAQ,CAACL,OAAAA,CAAQM,aAAa,KACzD,CAACN,OAAAA,CAAQO,SAAS,EAClB;AACA,oBAAA,OAAOd,aAAAA,CAAc;AACnBC,wBAAAA,GAAAA,EAAKM,QAAQN;AACf,qBAAA,CAAA;AACF,gBAAA;AAEA,gBAAA,IAAIE,IAAAA,KAAS,oCAAA,IAAwC,CAACI,OAAAA,CAAQO,SAAS,EAAE;AACvE,oBAAA,OAAOd,aAAAA,CAAc;AACnBC,wBAAAA,GAAAA,EAAKM,QAAQN;AACf,qBAAA,CAAA;AACF,gBAAA;gBAEA,IACEE,IAAAA,KAAS,wDAAA,IACTA,IAAAA,KAAS,wCAAA,EACT;AACA,oBAAA,OAAOH,aAAAA,CAAc;AACnBC,wBAAAA,GAAAA,EAAKM,QAAQN;AACf,qBAAA,CAAA;AACF,gBAAA;AAEA,gBAAA,OAAOH,IAAAA,CAAKC,MAAAA,CAAAA;AACd,YAAA,CAAA;AACJ;;;;"}
|
|
@@ -28,7 +28,7 @@ const extendCTBAttributeInitialDataMiddleware = ()=>{
|
|
|
28
28
|
...action.payload,
|
|
29
29
|
options: {
|
|
30
30
|
pluginOptions: {
|
|
31
|
-
...action?.payload?.options?.pluginOptions
|
|
31
|
+
...action?.payload?.options?.pluginOptions,
|
|
32
32
|
i18n: {
|
|
33
33
|
localized: true
|
|
34
34
|
}
|
|
@@ -38,7 +38,7 @@ const extendCTBAttributeInitialDataMiddleware = ()=>{
|
|
|
38
38
|
});
|
|
39
39
|
}
|
|
40
40
|
return next(action);
|
|
41
|
-
} catch
|
|
41
|
+
} catch {
|
|
42
42
|
return next(action);
|
|
43
43
|
}
|
|
44
44
|
};
|