@strapi/i18n 5.9.0 → 5.10.1

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.
Files changed (126) hide show
  1. package/dist/admin/chunks/SettingsPage-B6ikxVOg.js +820 -0
  2. package/dist/admin/chunks/SettingsPage-B6ikxVOg.js.map +1 -0
  3. package/dist/admin/chunks/SettingsPage-DydtYvMJ.mjs +797 -0
  4. package/dist/admin/chunks/SettingsPage-DydtYvMJ.mjs.map +1 -0
  5. package/dist/admin/chunks/de-Cm8mYdaO.mjs +64 -0
  6. package/dist/admin/chunks/de-Cm8mYdaO.mjs.map +1 -0
  7. package/dist/admin/chunks/de-nEMWvIiY.js +66 -0
  8. package/dist/admin/chunks/de-nEMWvIiY.js.map +1 -0
  9. package/dist/admin/chunks/dk-BeUFOegB.mjs +64 -0
  10. package/dist/admin/chunks/dk-BeUFOegB.mjs.map +1 -0
  11. package/dist/admin/chunks/dk-CYATLPVe.js +66 -0
  12. package/dist/admin/chunks/dk-CYATLPVe.js.map +1 -0
  13. package/dist/admin/chunks/en-CG5cUCbD.js +81 -0
  14. package/dist/admin/chunks/en-CG5cUCbD.js.map +1 -0
  15. package/dist/admin/chunks/en-eWSaCeOb.mjs +79 -0
  16. package/dist/admin/chunks/en-eWSaCeOb.mjs.map +1 -0
  17. package/dist/admin/chunks/es-CWsogTGm.js +66 -0
  18. package/dist/admin/chunks/es-CWsogTGm.js.map +1 -0
  19. package/dist/admin/chunks/es-DqF_IdAc.mjs +64 -0
  20. package/dist/admin/chunks/es-DqF_IdAc.mjs.map +1 -0
  21. package/dist/admin/chunks/fr-CC7UFcYd.js +66 -0
  22. package/dist/admin/chunks/fr-CC7UFcYd.js.map +1 -0
  23. package/dist/admin/chunks/fr-CyARbZ3c.mjs +64 -0
  24. package/dist/admin/chunks/fr-CyARbZ3c.mjs.map +1 -0
  25. package/dist/admin/chunks/index-Dch-2xao.js +2035 -0
  26. package/dist/admin/chunks/index-Dch-2xao.js.map +1 -0
  27. package/dist/admin/chunks/index-k3BHSNs0.mjs +2006 -0
  28. package/dist/admin/chunks/index-k3BHSNs0.mjs.map +1 -0
  29. package/dist/admin/chunks/ko-Ax4NSedM.mjs +63 -0
  30. package/dist/admin/chunks/ko-Ax4NSedM.mjs.map +1 -0
  31. package/dist/admin/chunks/ko-XwGmfhoq.js +65 -0
  32. package/dist/admin/chunks/ko-XwGmfhoq.js.map +1 -0
  33. package/dist/admin/chunks/pl-B-aqvMqL.mjs +64 -0
  34. package/dist/admin/chunks/pl-B-aqvMqL.mjs.map +1 -0
  35. package/dist/admin/chunks/pl-B_vzY_ZB.js +66 -0
  36. package/dist/admin/chunks/pl-B_vzY_ZB.js.map +1 -0
  37. package/dist/admin/chunks/ru-VkPjQ-Sk.mjs +66 -0
  38. package/dist/admin/chunks/ru-VkPjQ-Sk.mjs.map +1 -0
  39. package/dist/admin/chunks/ru-WzHcJV1f.js +68 -0
  40. package/dist/admin/chunks/ru-WzHcJV1f.js.map +1 -0
  41. package/dist/admin/chunks/tr-CcWp6u3w.js +66 -0
  42. package/dist/admin/chunks/tr-CcWp6u3w.js.map +1 -0
  43. package/dist/admin/chunks/tr-DcTR88c9.mjs +64 -0
  44. package/dist/admin/chunks/tr-DcTR88c9.mjs.map +1 -0
  45. package/dist/admin/chunks/zh-C9So4SGq.js +66 -0
  46. package/dist/admin/chunks/zh-C9So4SGq.js.map +1 -0
  47. package/dist/admin/chunks/zh-Hans-DnU2bhri.js +57 -0
  48. package/dist/admin/chunks/zh-Hans-DnU2bhri.js.map +1 -0
  49. package/dist/admin/chunks/zh-Hans-L3wsRegj.mjs +55 -0
  50. package/dist/admin/chunks/zh-Hans-L3wsRegj.mjs.map +1 -0
  51. package/dist/admin/chunks/zh-RZyMiPIs.mjs +64 -0
  52. package/dist/admin/chunks/zh-RZyMiPIs.mjs.map +1 -0
  53. package/dist/admin/index.js +20 -4
  54. package/dist/admin/index.js.map +1 -1
  55. package/dist/admin/index.mjs +15 -6
  56. package/dist/admin/index.mjs.map +1 -1
  57. package/dist/admin/src/components/CMHeaderActions.d.ts +1 -1
  58. package/dist/admin/src/components/tests/CreateLocale.test.d.ts +1 -0
  59. package/dist/admin/src/components/tests/DeleteLocale.test.d.ts +1 -0
  60. package/dist/admin/src/components/tests/EditLocale.test.d.ts +1 -0
  61. package/dist/admin/src/components/tests/LocaleListCell.test.d.ts +1 -0
  62. package/dist/admin/src/contentReleasesHooks/releaseDetailsView.d.ts +1 -1
  63. package/dist/admin/src/pages/tests/SettingsPage.test.d.ts +1 -0
  64. package/dist/admin/tests/server.d.ts +1 -0
  65. package/dist/admin/tests/utils.d.ts +6 -0
  66. package/dist/server/index.js +3650 -3390
  67. package/dist/server/index.js.map +1 -1
  68. package/dist/server/index.mjs +3632 -3374
  69. package/dist/server/index.mjs.map +1 -1
  70. package/dist/server/src/services/localizations.d.ts +1 -1
  71. package/dist/server/src/services/localizations.d.ts.map +1 -1
  72. package/dist/shared/contracts/content-manager.d.ts +1 -1
  73. package/dist/shared/contracts/shared.d.ts +1 -1
  74. package/package.json +14 -11
  75. package/dist/_chunks/SettingsPage-B-KzAqT3.mjs +0 -554
  76. package/dist/_chunks/SettingsPage-B-KzAqT3.mjs.map +0 -1
  77. package/dist/_chunks/SettingsPage-hyOi94O9.js +0 -573
  78. package/dist/_chunks/SettingsPage-hyOi94O9.js.map +0 -1
  79. package/dist/_chunks/de-BOhNX_-5.js +0 -65
  80. package/dist/_chunks/de-BOhNX_-5.js.map +0 -1
  81. package/dist/_chunks/de-D80IRBP9.mjs +0 -65
  82. package/dist/_chunks/de-D80IRBP9.mjs.map +0 -1
  83. package/dist/_chunks/dk-CJ6Zzz78.mjs +0 -65
  84. package/dist/_chunks/dk-CJ6Zzz78.mjs.map +0 -1
  85. package/dist/_chunks/dk-cjXm0p3m.js +0 -65
  86. package/dist/_chunks/dk-cjXm0p3m.js.map +0 -1
  87. package/dist/_chunks/en-BTyF7WVW.mjs +0 -80
  88. package/dist/_chunks/en-BTyF7WVW.mjs.map +0 -1
  89. package/dist/_chunks/en-UlC0jh2t.js +0 -80
  90. package/dist/_chunks/en-UlC0jh2t.js.map +0 -1
  91. package/dist/_chunks/es-V8WnPN7w.mjs +0 -65
  92. package/dist/_chunks/es-V8WnPN7w.mjs.map +0 -1
  93. package/dist/_chunks/es-hr9b_HLp.js +0 -65
  94. package/dist/_chunks/es-hr9b_HLp.js.map +0 -1
  95. package/dist/_chunks/fr-BFmBbE0H.js +0 -65
  96. package/dist/_chunks/fr-BFmBbE0H.js.map +0 -1
  97. package/dist/_chunks/fr-F94noFiV.mjs +0 -65
  98. package/dist/_chunks/fr-F94noFiV.mjs.map +0 -1
  99. package/dist/_chunks/index-BcYj5jo9.mjs +0 -1589
  100. package/dist/_chunks/index-BcYj5jo9.mjs.map +0 -1
  101. package/dist/_chunks/index-C8NzsAKp.js +0 -1610
  102. package/dist/_chunks/index-C8NzsAKp.js.map +0 -1
  103. package/dist/_chunks/ko-C40pNQ9b.js +0 -64
  104. package/dist/_chunks/ko-C40pNQ9b.js.map +0 -1
  105. package/dist/_chunks/ko-CF-P3Car.mjs +0 -64
  106. package/dist/_chunks/ko-CF-P3Car.mjs.map +0 -1
  107. package/dist/_chunks/pl-Dxr9RUmD.mjs +0 -65
  108. package/dist/_chunks/pl-Dxr9RUmD.mjs.map +0 -1
  109. package/dist/_chunks/pl-JtWBy-JQ.js +0 -65
  110. package/dist/_chunks/pl-JtWBy-JQ.js.map +0 -1
  111. package/dist/_chunks/ru-B-4sVwXN.mjs +0 -67
  112. package/dist/_chunks/ru-B-4sVwXN.mjs.map +0 -1
  113. package/dist/_chunks/ru-COSWt3Nu.js +0 -67
  114. package/dist/_chunks/ru-COSWt3Nu.js.map +0 -1
  115. package/dist/_chunks/tr-BVj1O5ch.js +0 -65
  116. package/dist/_chunks/tr-BVj1O5ch.js.map +0 -1
  117. package/dist/_chunks/tr-Ccu6Yj11.mjs +0 -65
  118. package/dist/_chunks/tr-Ccu6Yj11.mjs.map +0 -1
  119. package/dist/_chunks/zh-BIz395Ms.mjs +0 -65
  120. package/dist/_chunks/zh-BIz395Ms.mjs.map +0 -1
  121. package/dist/_chunks/zh-Hans-Bfo6_TCM.mjs +0 -56
  122. package/dist/_chunks/zh-Hans-Bfo6_TCM.mjs.map +0 -1
  123. package/dist/_chunks/zh-Hans-DIEm_EMC.js +0 -56
  124. package/dist/_chunks/zh-Hans-DIEm_EMC.js.map +0 -1
  125. package/dist/_chunks/zh-wkBPBkhc.js +0 -65
  126. package/dist/_chunks/zh-wkBPBkhc.js.map +0 -1
@@ -1,573 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const jsxRuntime = require("react/jsx-runtime");
4
- const React = require("react");
5
- const strapiAdmin = require("@strapi/admin/strapi-admin");
6
- const designSystem = require("@strapi/design-system");
7
- const symbols = require("@strapi/icons/symbols");
8
- const reactIntl = require("react-intl");
9
- const icons = require("@strapi/icons");
10
- const yup = require("yup");
11
- const index = require("./index-C8NzsAKp.js");
12
- function _interopNamespace(e) {
13
- if (e && e.__esModule) return e;
14
- const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
15
- if (e) {
16
- for (const k in e) {
17
- if (k !== "default") {
18
- const d = Object.getOwnPropertyDescriptor(e, k);
19
- Object.defineProperty(n, k, d.get ? d : {
20
- enumerable: true,
21
- get: () => e[k]
22
- });
23
- }
24
- }
25
- }
26
- n.default = e;
27
- return Object.freeze(n);
28
- }
29
- const React__namespace = /* @__PURE__ */ _interopNamespace(React);
30
- const yup__namespace = /* @__PURE__ */ _interopNamespace(yup);
31
- const isBaseQueryError = (error) => {
32
- return error.name !== void 0;
33
- };
34
- const CreateLocale = ({ disabled, variant = "default" }) => {
35
- const { formatMessage } = reactIntl.useIntl();
36
- const [visible, setVisible] = React__namespace.useState(false);
37
- return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Modal.Root, { open: visible, onOpenChange: setVisible, children: [
38
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Trigger, { children: /* @__PURE__ */ jsxRuntime.jsx(
39
- designSystem.Button,
40
- {
41
- variant,
42
- disabled,
43
- startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Plus, {}),
44
- onClick: () => setVisible(true),
45
- size: "S",
46
- children: formatMessage({
47
- id: index.getTranslation("Settings.list.actions.add"),
48
- defaultMessage: "Add new locale"
49
- })
50
- }
51
- ) }),
52
- /* @__PURE__ */ jsxRuntime.jsx(CreateModal, { onClose: () => setVisible(false) })
53
- ] });
54
- };
55
- const LOCALE_SCHEMA = yup__namespace.object().shape({
56
- code: yup__namespace.string().nullable().required({
57
- id: "Settings.locales.modal.create.code.error",
58
- defaultMessage: "Please select a locale"
59
- }),
60
- name: yup__namespace.string().nullable().max(50, {
61
- id: "Settings.locales.modal.create.name.error.min",
62
- defaultMessage: "The locale display name can only be less than 50 characters."
63
- }).required({
64
- id: "Settings.locales.modal.create.name.error.required",
65
- defaultMessage: "Please give the locale a display name"
66
- }),
67
- isDefault: yup__namespace.boolean()
68
- });
69
- const initialFormValues = {
70
- code: "",
71
- name: "",
72
- isDefault: false
73
- };
74
- const CreateModal = ({ onClose }) => {
75
- const titleId = designSystem.useId();
76
- const { toggleNotification } = strapiAdmin.useNotification();
77
- const {
78
- _unstableFormatAPIError: formatAPIError,
79
- _unstableFormatValidationErrors: formatValidationErrors
80
- } = strapiAdmin.useAPIErrorHandler();
81
- const [createLocale] = index.useCreateLocaleMutation();
82
- const { formatMessage } = reactIntl.useIntl();
83
- const refetchPermissions = strapiAdmin.useAuth("CreateModal", (state) => state.refetchPermissions);
84
- const handleSubmit = async (values, helpers) => {
85
- try {
86
- const res = await createLocale(values);
87
- if ("error" in res) {
88
- if (isBaseQueryError(res.error) && res.error.name === "ValidationError") {
89
- helpers.setErrors(formatValidationErrors(res.error));
90
- } else {
91
- toggleNotification({ type: "danger", message: formatAPIError(res.error) });
92
- }
93
- return;
94
- }
95
- toggleNotification({
96
- type: "success",
97
- message: formatMessage({
98
- id: index.getTranslation("Settings.locales.modal.create.success"),
99
- defaultMessage: "Created locale"
100
- })
101
- });
102
- refetchPermissions();
103
- onClose();
104
- } catch (err) {
105
- toggleNotification({
106
- type: "danger",
107
- message: formatMessage({
108
- id: "notification.error",
109
- defaultMessage: "An error occurred, please try again"
110
- })
111
- });
112
- }
113
- };
114
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Content, { children: /* @__PURE__ */ jsxRuntime.jsxs(
115
- strapiAdmin.Form,
116
- {
117
- method: "POST",
118
- initialValues: initialFormValues,
119
- validationSchema: LOCALE_SCHEMA,
120
- onSubmit: handleSubmit,
121
- children: [
122
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Header, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Title, { children: formatMessage({
123
- id: index.getTranslation("Settings.list.actions.add"),
124
- defaultMessage: "Add new locale"
125
- }) }) }),
126
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Body, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tabs.Root, { variant: "simple", defaultValue: "basic", children: [
127
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { justifyContent: "space-between", children: [
128
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { tag: "h2", variant: "beta", id: titleId, children: formatMessage({
129
- id: index.getTranslation("Settings.locales.modal.title"),
130
- defaultMessage: "Configuration"
131
- }) }),
132
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tabs.List, { "aria-labelledby": titleId, children: [
133
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tabs.Trigger, { value: "basic", children: formatMessage({
134
- id: index.getTranslation("Settings.locales.modal.base"),
135
- defaultMessage: "Basic settings"
136
- }) }),
137
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tabs.Trigger, { value: "advanced", children: formatMessage({
138
- id: index.getTranslation("Settings.locales.modal.advanced"),
139
- defaultMessage: "Advanced settings"
140
- }) })
141
- ] })
142
- ] }),
143
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Divider, {}),
144
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { paddingTop: 7, paddingBottom: 7, children: [
145
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tabs.Content, { value: "basic", children: /* @__PURE__ */ jsxRuntime.jsx(BaseForm, {}) }),
146
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tabs.Content, { value: "advanced", children: /* @__PURE__ */ jsxRuntime.jsx(AdvancedForm, {}) })
147
- ] })
148
- ] }) }),
149
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Modal.Footer, { children: [
150
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Close, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { variant: "tertiary", children: formatMessage({ id: "app.components.Button.cancel", defaultMessage: "Cancel" }) }) }),
151
- /* @__PURE__ */ jsxRuntime.jsx(SubmitButton, {})
152
- ] })
153
- ]
154
- }
155
- ) });
156
- };
157
- const SubmitButton = () => {
158
- const { formatMessage } = reactIntl.useIntl();
159
- const isSubmitting = strapiAdmin.useForm("SubmitButton", (state) => state.isSubmitting);
160
- const modified = strapiAdmin.useForm("SubmitButton", (state) => state.modified);
161
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { type: "submit", startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Check, {}), disabled: isSubmitting || !modified, children: formatMessage({ id: "global.save", defaultMessage: "Save" }) });
162
- };
163
- const BaseForm = ({ mode = "create" }) => {
164
- const { formatMessage } = reactIntl.useIntl();
165
- const { toggleNotification } = strapiAdmin.useNotification();
166
- const { _unstableFormatAPIError: formatAPIError } = strapiAdmin.useAPIErrorHandler();
167
- const { data: defaultLocales, error } = index.useGetDefaultLocalesQuery();
168
- React__namespace.useEffect(() => {
169
- if (error) {
170
- toggleNotification({
171
- type: "danger",
172
- message: formatAPIError(error)
173
- });
174
- }
175
- }, [error, formatAPIError, toggleNotification]);
176
- if (!Array.isArray(defaultLocales)) {
177
- return null;
178
- }
179
- const options = defaultLocales.map((locale) => ({
180
- label: locale.name,
181
- value: locale.code
182
- }));
183
- const translatedForm = [
184
- {
185
- disabled: mode !== "create",
186
- label: {
187
- id: index.getTranslation("Settings.locales.modal.create.code.label"),
188
- defaultMessage: "Locales"
189
- },
190
- name: "code",
191
- options,
192
- placeholder: {
193
- id: "components.placeholder.select",
194
- defaultMessage: "Select"
195
- },
196
- required: true,
197
- size: 6,
198
- type: "enumeration"
199
- },
200
- {
201
- hint: {
202
- id: index.getTranslation("Settings.locales.modal.create.name.label.description"),
203
- defaultMessage: "Locale will be displayed under that name in the administration panel"
204
- },
205
- label: {
206
- id: index.getTranslation("Settings.locales.modal.create.name.label"),
207
- defaultMessage: "Locale display name"
208
- },
209
- name: "name",
210
- required: true,
211
- size: 6,
212
- type: "string"
213
- }
214
- ].map((field) => ({
215
- ...field,
216
- hint: field.hint ? formatMessage(field.hint) : void 0,
217
- label: formatMessage(field.label),
218
- placeholder: field.placeholder ? formatMessage(field.placeholder) : void 0
219
- }));
220
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { gap: 4, children: translatedForm.map(({ size, ...field }) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: size, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsx(FormRenderer, { ...field }) }, field.name)) });
221
- };
222
- const AdvancedForm = ({ isDefaultLocale }) => {
223
- const { formatMessage } = reactIntl.useIntl();
224
- const form = [
225
- {
226
- disabled: isDefaultLocale,
227
- hint: {
228
- id: index.getTranslation("Settings.locales.modal.advanced.setAsDefault.hint"),
229
- defaultMessage: "One default locale is required, change it by selecting another one"
230
- },
231
- label: {
232
- id: index.getTranslation("Settings.locales.modal.advanced.setAsDefault"),
233
- defaultMessage: "Set as default locale"
234
- },
235
- name: "isDefault",
236
- size: 6,
237
- type: "boolean"
238
- }
239
- ].map((field) => ({
240
- ...field,
241
- hint: field.hint ? formatMessage(field.hint) : void 0,
242
- label: formatMessage(field.label)
243
- }));
244
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { gap: 4, children: form.map(({ size, ...field }) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: size, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsx(FormRenderer, { ...field }) }, field.name)) });
245
- };
246
- const FormRenderer = (field) => {
247
- switch (field.type) {
248
- case "enumeration":
249
- return /* @__PURE__ */ jsxRuntime.jsx(EnumerationInput, { ...field });
250
- default:
251
- return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.InputRenderer, { ...field });
252
- }
253
- };
254
- const EnumerationInput = ({
255
- disabled,
256
- hint,
257
- label,
258
- name,
259
- options,
260
- placeholder,
261
- required
262
- }) => {
263
- const { value, error, onChange } = strapiAdmin.useField(name);
264
- const { data: defaultLocales = [] } = index.useGetDefaultLocalesQuery();
265
- const handleChange = (value2) => {
266
- if (Array.isArray(defaultLocales)) {
267
- const locale = defaultLocales.find((locale2) => locale2.code === value2);
268
- onChange(name, value2);
269
- onChange("name", locale.name);
270
- } else {
271
- onChange(name, value2);
272
- }
273
- };
274
- return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Field.Root, { error, hint, name, required, children: [
275
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: label }),
276
- /* @__PURE__ */ jsxRuntime.jsx(
277
- designSystem.SingleSelect,
278
- {
279
- disabled,
280
- onChange: handleChange,
281
- placeholder,
282
- value,
283
- children: options.map((option) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: option.value, children: option.label }, option.value))
284
- }
285
- ),
286
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Error, {}),
287
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Hint, {})
288
- ] });
289
- };
290
- const DeleteLocale = ({ id, name }) => {
291
- const { formatMessage } = reactIntl.useIntl();
292
- const { toggleNotification } = strapiAdmin.useNotification();
293
- const { _unstableFormatAPIError: formatAPIError } = strapiAdmin.useAPIErrorHandler();
294
- const [visible, setVisible] = React__namespace.useState(false);
295
- const [deleteLocale] = index.useDeleteLocaleMutation();
296
- const handleConfirm = async () => {
297
- try {
298
- const res = await deleteLocale(id);
299
- if ("error" in res) {
300
- toggleNotification({ type: "danger", message: formatAPIError(res.error) });
301
- return;
302
- }
303
- toggleNotification({
304
- type: "success",
305
- message: formatMessage({
306
- id: index.getTranslation("Settings.locales.modal.delete.success"),
307
- defaultMessage: "Deleted locale"
308
- })
309
- });
310
- setVisible(false);
311
- } catch (err) {
312
- toggleNotification({
313
- type: "danger",
314
- message: formatMessage({
315
- id: "notification.error",
316
- defaultMessage: "An error occurred, please try again"
317
- })
318
- });
319
- }
320
- };
321
- return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Dialog.Root, { open: visible, onOpenChange: setVisible, children: [
322
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Dialog.Trigger, { children: /* @__PURE__ */ jsxRuntime.jsx(
323
- designSystem.IconButton,
324
- {
325
- onClick: () => setVisible(true),
326
- label: formatMessage(
327
- {
328
- id: index.getTranslation("Settings.list.actions.delete"),
329
- defaultMessage: "Delete {name} locale"
330
- },
331
- {
332
- name
333
- }
334
- ),
335
- variant: "ghost",
336
- children: /* @__PURE__ */ jsxRuntime.jsx(icons.Trash, {})
337
- }
338
- ) }),
339
- /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.ConfirmDialog, { onConfirm: handleConfirm })
340
- ] });
341
- };
342
- const EditLocale = (props) => {
343
- const { formatMessage } = reactIntl.useIntl();
344
- const [visible, setVisible] = React__namespace.useState(false);
345
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
346
- /* @__PURE__ */ jsxRuntime.jsx(
347
- designSystem.IconButton,
348
- {
349
- onClick: () => setVisible(true),
350
- label: formatMessage(
351
- {
352
- id: index.getTranslation("Settings.list.actions.edit"),
353
- defaultMessage: "Edit {name} locale"
354
- },
355
- {
356
- name: props.name
357
- }
358
- ),
359
- variant: "ghost",
360
- children: /* @__PURE__ */ jsxRuntime.jsx(icons.Pencil, {})
361
- }
362
- ),
363
- /* @__PURE__ */ jsxRuntime.jsx(EditModal, { ...props, open: visible, onOpenChange: setVisible })
364
- ] });
365
- };
366
- const EditModal = ({ id, code, isDefault, name, open, onOpenChange }) => {
367
- const { toggleNotification } = strapiAdmin.useNotification();
368
- const {
369
- _unstableFormatAPIError: formatAPIError,
370
- _unstableFormatValidationErrors: formatValidationErrors
371
- } = strapiAdmin.useAPIErrorHandler();
372
- const refetchPermissions = strapiAdmin.useAuth("EditModal", (state) => state.refetchPermissions);
373
- const { formatMessage } = reactIntl.useIntl();
374
- const titleId = designSystem.useId();
375
- const [updateLocale] = index.useUpdateLocaleMutation();
376
- const handleSubmit = async ({ code: _code, ...data }, helpers) => {
377
- try {
378
- const res = await updateLocale({
379
- id,
380
- ...data
381
- });
382
- if ("error" in res) {
383
- if (isBaseQueryError(res.error) && res.error.name === "ValidationError") {
384
- helpers.setErrors(formatValidationErrors(res.error));
385
- } else {
386
- toggleNotification({ type: "danger", message: formatAPIError(res.error) });
387
- }
388
- return;
389
- }
390
- toggleNotification({
391
- type: "success",
392
- message: formatMessage({
393
- id: index.getTranslation("Settings.locales.modal.edit.success"),
394
- defaultMessage: "Updated locale"
395
- })
396
- });
397
- refetchPermissions();
398
- onOpenChange(false);
399
- } catch (err) {
400
- toggleNotification({
401
- type: "danger",
402
- message: formatMessage({
403
- id: "notification.error",
404
- defaultMessage: "An error occurred, please try again"
405
- })
406
- });
407
- }
408
- };
409
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Root, { open, onOpenChange, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Content, { children: /* @__PURE__ */ jsxRuntime.jsxs(
410
- strapiAdmin.Form,
411
- {
412
- method: "PUT",
413
- onSubmit: handleSubmit,
414
- initialValues: {
415
- code,
416
- name,
417
- isDefault
418
- },
419
- validationSchema: LOCALE_SCHEMA,
420
- children: [
421
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Header, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Title, { children: formatMessage(
422
- {
423
- id: index.getTranslation("Settings.list.actions.edit"),
424
- defaultMessage: "Edit a locale"
425
- },
426
- {
427
- name
428
- }
429
- ) }) }),
430
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Body, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tabs.Root, { variant: "simple", defaultValue: "basic", children: [
431
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { justifyContent: "space-between", children: [
432
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { tag: "h2", variant: "beta", id: titleId, children: formatMessage({
433
- id: index.getTranslation("Settings.locales.modal.title"),
434
- defaultMessage: "Configuration"
435
- }) }),
436
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tabs.List, { "aria-labelledby": titleId, children: [
437
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tabs.Trigger, { value: "basic", children: formatMessage({
438
- id: index.getTranslation("Settings.locales.modal.base"),
439
- defaultMessage: "Basic settings"
440
- }) }),
441
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tabs.Trigger, { value: "advanced", children: formatMessage({
442
- id: index.getTranslation("Settings.locales.modal.advanced"),
443
- defaultMessage: "Advanced settings"
444
- }) })
445
- ] })
446
- ] }),
447
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Divider, {}),
448
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { paddingTop: 7, paddingBottom: 7, children: [
449
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tabs.Content, { value: "basic", children: /* @__PURE__ */ jsxRuntime.jsx(BaseForm, { mode: "edit" }) }),
450
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tabs.Content, { value: "advanced", children: /* @__PURE__ */ jsxRuntime.jsx(AdvancedForm, { isDefaultLocale: isDefault }) })
451
- ] })
452
- ] }) }),
453
- /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Modal.Footer, { children: [
454
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Close, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { variant: "tertiary", children: formatMessage({ id: "app.components.Button.cancel", defaultMessage: "Cancel" }) }) }),
455
- /* @__PURE__ */ jsxRuntime.jsx(SubmitButton, {})
456
- ] })
457
- ]
458
- }
459
- ) }) });
460
- };
461
- const LocaleTable = ({ locales = [], canDelete, canUpdate }) => {
462
- const [editLocaleId, setEditLocaleId] = React__namespace.useState();
463
- const { formatMessage } = reactIntl.useIntl();
464
- const handleClick = (localeId) => () => {
465
- if (canUpdate) {
466
- setEditLocaleId(localeId);
467
- }
468
- };
469
- return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Table, { colCount: 4, rowCount: locales.length + 1, children: [
470
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Thead, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tr, { children: [
471
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Th, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", children: formatMessage({
472
- id: index.getTranslation("Settings.locales.row.id"),
473
- defaultMessage: "ID"
474
- }) }) }),
475
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Th, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", children: formatMessage({
476
- id: index.getTranslation("Settings.locales.row.displayName"),
477
- defaultMessage: "Display name"
478
- }) }) }),
479
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Th, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", children: formatMessage({
480
- id: index.getTranslation("Settings.locales.row.default-locale"),
481
- defaultMessage: "Default locale"
482
- }) }) }),
483
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Th, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.VisuallyHidden, { children: "Actions" }) })
484
- ] }) }),
485
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tbody, { children: locales.map((locale) => /* @__PURE__ */ jsxRuntime.jsxs(React__namespace.Fragment, { children: [
486
- /* @__PURE__ */ jsxRuntime.jsxs(
487
- designSystem.Tr,
488
- {
489
- onClick: handleClick(locale.id),
490
- style: { cursor: canUpdate ? "pointer" : "default" },
491
- children: [
492
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "neutral800", children: locale.id }) }),
493
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "neutral800", children: locale.name }) }),
494
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "neutral800", children: locale.isDefault ? formatMessage({
495
- id: index.getTranslation("Settings.locales.default"),
496
- defaultMessage: "Default"
497
- }) : null }) }),
498
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 1, justifyContent: "flex-end", onClick: (e) => e.stopPropagation(), children: [
499
- canUpdate && /* @__PURE__ */ jsxRuntime.jsx(EditLocale, { ...locale }),
500
- canDelete && !locale.isDefault && /* @__PURE__ */ jsxRuntime.jsx(DeleteLocale, { ...locale })
501
- ] }) })
502
- ]
503
- }
504
- ),
505
- /* @__PURE__ */ jsxRuntime.jsx(
506
- EditModal,
507
- {
508
- ...locale,
509
- onOpenChange: () => setEditLocaleId(void 0),
510
- open: editLocaleId === locale.id
511
- }
512
- )
513
- ] }, locale.id)) })
514
- ] });
515
- };
516
- const SettingsPage = () => {
517
- const { formatMessage } = reactIntl.useIntl();
518
- const { toggleNotification } = strapiAdmin.useNotification();
519
- const { _unstableFormatAPIError: formatAPIError } = strapiAdmin.useAPIErrorHandler();
520
- const { data: locales, isLoading: isLoadingLocales, error } = index.useGetLocalesQuery();
521
- const {
522
- isLoading: isLoadingRBAC,
523
- allowedActions: { canUpdate, canCreate, canDelete }
524
- } = strapiAdmin.useRBAC(index.PERMISSIONS);
525
- React__namespace.useEffect(() => {
526
- if (error) {
527
- toggleNotification({
528
- type: "danger",
529
- message: formatAPIError(error)
530
- });
531
- }
532
- }, [error, formatAPIError, toggleNotification]);
533
- const isLoading = isLoadingLocales || isLoadingRBAC;
534
- if (isLoading) {
535
- return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
536
- }
537
- if (error || !Array.isArray(locales)) {
538
- return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Error, {});
539
- }
540
- return /* @__PURE__ */ jsxRuntime.jsxs(strapiAdmin.Page.Main, { tabIndex: -1, children: [
541
- /* @__PURE__ */ jsxRuntime.jsx(
542
- strapiAdmin.Layouts.Header,
543
- {
544
- primaryAction: /* @__PURE__ */ jsxRuntime.jsx(CreateLocale, { disabled: !canCreate }),
545
- title: formatMessage({
546
- id: index.getTranslation("plugin.name"),
547
- defaultMessage: "Internationalization"
548
- }),
549
- subtitle: formatMessage({
550
- id: index.getTranslation("Settings.list.description"),
551
- defaultMessage: "Configure the settings"
552
- })
553
- }
554
- ),
555
- /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Layouts.Content, { children: locales.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(LocaleTable, { locales, canDelete, canUpdate }) : /* @__PURE__ */ jsxRuntime.jsx(
556
- designSystem.EmptyStateLayout,
557
- {
558
- icon: /* @__PURE__ */ jsxRuntime.jsx(symbols.EmptyDocuments, { width: void 0, height: void 0 }),
559
- content: formatMessage({
560
- id: index.getTranslation("Settings.list.empty.title"),
561
- defaultMessage: "There are no locales"
562
- }),
563
- action: /* @__PURE__ */ jsxRuntime.jsx(CreateLocale, { disabled: !canCreate, variant: "secondary" })
564
- }
565
- ) })
566
- ] });
567
- };
568
- const ProtectedSettingsPage = () => {
569
- return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Protect, { permissions: index.PERMISSIONS.read, children: /* @__PURE__ */ jsxRuntime.jsx(SettingsPage, {}) });
570
- };
571
- exports.ProtectedSettingsPage = ProtectedSettingsPage;
572
- exports.SettingsPage = SettingsPage;
573
- //# sourceMappingURL=SettingsPage-hyOi94O9.js.map