@intlayer/design-system 5.1.4 → 5.1.5

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 (160) hide show
  1. package/dist/.vite/manifest.json +34 -88
  2. package/dist/Form-BZUDRfoN.js.map +1 -1
  3. package/dist/Form-yi0CMK-a.cjs.map +1 -1
  4. package/dist/components/Auth/ExternalsLoginButtons/ExternalsLoginButtons.cjs +1 -1
  5. package/dist/components/Auth/ExternalsLoginButtons/ExternalsLoginButtons.mjs +1 -1
  6. package/dist/components/Command/index.d.ts +1 -1
  7. package/dist/components/Container/index.cjs +5 -6
  8. package/dist/components/Container/index.cjs.map +1 -1
  9. package/dist/components/Container/index.mjs +5 -6
  10. package/dist/components/Container/index.mjs.map +1 -1
  11. package/dist/components/DictionaryEditor/DictionaryEditor.cjs +3 -3
  12. package/dist/components/DictionaryEditor/DictionaryEditor.cjs.map +1 -1
  13. package/dist/components/DictionaryEditor/DictionaryEditor.d.ts +1 -1
  14. package/dist/components/DictionaryEditor/DictionaryEditor.d.ts.map +1 -1
  15. package/dist/components/DictionaryEditor/DictionaryEditor.mjs +3 -3
  16. package/dist/components/DictionaryEditor/DictionaryEditor.mjs.map +1 -1
  17. package/dist/components/DictionaryEditor/ValidDictionaryChangeButtons.cjs +33 -20
  18. package/dist/components/DictionaryEditor/ValidDictionaryChangeButtons.cjs.map +1 -1
  19. package/dist/components/DictionaryEditor/ValidDictionaryChangeButtons.d.ts.map +1 -1
  20. package/dist/components/DictionaryEditor/ValidDictionaryChangeButtons.mjs +34 -21
  21. package/dist/components/DictionaryEditor/ValidDictionaryChangeButtons.mjs.map +1 -1
  22. package/dist/components/DictionaryFieldEditor/ContentEditor.cjs +2 -2
  23. package/dist/components/DictionaryFieldEditor/ContentEditor.cjs.map +1 -1
  24. package/dist/components/DictionaryFieldEditor/ContentEditor.mjs +3 -3
  25. package/dist/components/DictionaryFieldEditor/ContentEditor.mjs.map +1 -1
  26. package/dist/components/DictionaryFieldEditor/ContentEditorView/TextEditor.cjs +10 -7
  27. package/dist/components/DictionaryFieldEditor/ContentEditorView/TextEditor.cjs.map +1 -1
  28. package/dist/components/DictionaryFieldEditor/ContentEditorView/TextEditor.d.ts.map +1 -1
  29. package/dist/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs +10 -7
  30. package/dist/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs.map +1 -1
  31. package/dist/components/DictionaryFieldEditor/DictionariesSelector/DictionariesSelector.cjs.map +1 -1
  32. package/dist/components/DictionaryFieldEditor/DictionariesSelector/DictionariesSelector.d.ts +1 -1
  33. package/dist/components/DictionaryFieldEditor/DictionariesSelector/DictionariesSelector.d.ts.map +1 -1
  34. package/dist/components/DictionaryFieldEditor/DictionariesSelector/DictionariesSelector.mjs.map +1 -1
  35. package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.cjs +1 -1
  36. package/dist/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs +1 -1
  37. package/dist/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.cjs +92 -120
  38. package/dist/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.cjs.map +1 -1
  39. package/dist/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.d.ts +1 -1
  40. package/dist/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.d.ts.map +1 -1
  41. package/dist/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs +94 -122
  42. package/dist/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs.map +1 -1
  43. package/dist/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.cjs +0 -143
  44. package/dist/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.cjs.map +1 -1
  45. package/dist/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts +0 -143
  46. package/dist/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts.map +1 -1
  47. package/dist/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.mjs +0 -143
  48. package/dist/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.mjs.map +1 -1
  49. package/dist/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.cjs +1 -2
  50. package/dist/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.cjs.map +1 -1
  51. package/dist/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.d.ts +0 -3
  52. package/dist/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.d.ts.map +1 -1
  53. package/dist/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.mjs +1 -2
  54. package/dist/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.mjs.map +1 -1
  55. package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.cjs +51 -70
  56. package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.cjs.map +1 -1
  57. package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.d.ts +1 -1
  58. package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.d.ts.map +1 -1
  59. package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs +51 -70
  60. package/dist/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs.map +1 -1
  61. package/dist/components/DictionaryFieldEditor/SaveForm/SaveForm.cjs +52 -103
  62. package/dist/components/DictionaryFieldEditor/SaveForm/SaveForm.cjs.map +1 -1
  63. package/dist/components/DictionaryFieldEditor/SaveForm/SaveForm.d.ts +3 -3
  64. package/dist/components/DictionaryFieldEditor/SaveForm/SaveForm.d.ts.map +1 -1
  65. package/dist/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs +56 -107
  66. package/dist/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs.map +1 -1
  67. package/dist/components/DictionaryFieldEditor/SaveForm/saveForm.content.cjs +0 -32
  68. package/dist/components/DictionaryFieldEditor/SaveForm/saveForm.content.cjs.map +1 -1
  69. package/dist/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts +0 -32
  70. package/dist/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts.map +1 -1
  71. package/dist/components/DictionaryFieldEditor/SaveForm/saveForm.content.mjs +0 -32
  72. package/dist/components/DictionaryFieldEditor/SaveForm/saveForm.content.mjs.map +1 -1
  73. package/dist/components/DictionaryFieldEditor/StructureView/StructureView.cjs +1 -0
  74. package/dist/components/DictionaryFieldEditor/StructureView/StructureView.cjs.map +1 -1
  75. package/dist/components/DictionaryFieldEditor/StructureView/StructureView.d.ts.map +1 -1
  76. package/dist/components/DictionaryFieldEditor/StructureView/StructureView.mjs +1 -0
  77. package/dist/components/DictionaryFieldEditor/StructureView/StructureView.mjs.map +1 -1
  78. package/dist/components/DictionaryFieldEditor/index.cjs +0 -2
  79. package/dist/components/DictionaryFieldEditor/index.cjs.map +1 -1
  80. package/dist/components/DictionaryFieldEditor/index.d.ts +0 -1
  81. package/dist/components/DictionaryFieldEditor/index.d.ts.map +1 -1
  82. package/dist/components/DictionaryFieldEditor/index.mjs +0 -2
  83. package/dist/components/DictionaryFieldEditor/index.mjs.map +1 -1
  84. package/dist/components/Form/FormBase.cjs +0 -1
  85. package/dist/components/Form/FormBase.cjs.map +1 -1
  86. package/dist/components/Form/FormBase.d.ts +1 -4
  87. package/dist/components/Form/FormBase.d.ts.map +1 -1
  88. package/dist/components/Form/FormBase.mjs +0 -1
  89. package/dist/components/Form/FormBase.mjs.map +1 -1
  90. package/dist/components/Form/elements/EditableFieldInputElement.d.ts +1 -1
  91. package/dist/components/Form/elements/EditableFieldInputElement.d.ts.map +1 -1
  92. package/dist/components/Form/elements/EditableFieldTextAreaElement.d.ts +1 -1
  93. package/dist/components/Form/elements/EditableFieldTextAreaElement.d.ts.map +1 -1
  94. package/dist/components/Input/Checkbox.cjs +0 -1
  95. package/dist/components/Input/Checkbox.cjs.map +1 -1
  96. package/dist/components/Input/Checkbox.mjs +0 -1
  97. package/dist/components/Input/Checkbox.mjs.map +1 -1
  98. package/dist/components/Input/Input.cjs +1 -1
  99. package/dist/components/Input/Input.cjs.map +1 -1
  100. package/dist/components/Input/Input.mjs +1 -1
  101. package/dist/components/Input/Input.mjs.map +1 -1
  102. package/dist/components/KeyboardScreenAdapter/index.cjs +25 -0
  103. package/dist/components/KeyboardScreenAdapter/index.cjs.map +1 -0
  104. package/dist/components/KeyboardScreenAdapter/index.d.ts +3 -0
  105. package/dist/components/KeyboardScreenAdapter/index.d.ts.map +1 -0
  106. package/dist/components/KeyboardScreenAdapter/index.mjs +25 -0
  107. package/dist/components/KeyboardScreenAdapter/index.mjs.map +1 -0
  108. package/dist/components/MaxHeightSmoother/index.cjs +2 -0
  109. package/dist/components/MaxHeightSmoother/index.cjs.map +1 -1
  110. package/dist/components/MaxHeightSmoother/index.d.ts.map +1 -1
  111. package/dist/components/MaxHeightSmoother/index.mjs +2 -0
  112. package/dist/components/MaxHeightSmoother/index.mjs.map +1 -1
  113. package/dist/components/Modal/Modal.cjs +15 -13
  114. package/dist/components/Modal/Modal.cjs.map +1 -1
  115. package/dist/components/Modal/Modal.d.ts.map +1 -1
  116. package/dist/components/Modal/Modal.mjs +15 -13
  117. package/dist/components/Modal/Modal.mjs.map +1 -1
  118. package/dist/components/RightDrawer/RightDrawer.cjs +1 -1
  119. package/dist/components/RightDrawer/RightDrawer.cjs.map +1 -1
  120. package/dist/components/RightDrawer/RightDrawer.mjs +1 -1
  121. package/dist/components/RightDrawer/RightDrawer.mjs.map +1 -1
  122. package/dist/components/Select/Multiselect.cjs +0 -1
  123. package/dist/components/Select/Multiselect.cjs.map +1 -1
  124. package/dist/components/Select/Multiselect.d.ts.map +1 -1
  125. package/dist/components/Select/Multiselect.mjs +1 -2
  126. package/dist/components/Select/Multiselect.mjs.map +1 -1
  127. package/dist/components/Select/Select.cjs +0 -1
  128. package/dist/components/Select/Select.cjs.map +1 -1
  129. package/dist/components/Select/Select.d.ts.map +1 -1
  130. package/dist/components/Select/Select.mjs +0 -1
  131. package/dist/components/Select/Select.mjs.map +1 -1
  132. package/dist/components/index.cjs +2 -2
  133. package/dist/components/index.d.ts +1 -0
  134. package/dist/components/index.d.ts.map +1 -1
  135. package/dist/components/index.mjs +2 -2
  136. package/dist/hooks/index.cjs +2 -0
  137. package/dist/hooks/index.cjs.map +1 -1
  138. package/dist/hooks/index.d.ts +1 -0
  139. package/dist/hooks/index.d.ts.map +1 -1
  140. package/dist/hooks/index.mjs +2 -0
  141. package/dist/hooks/index.mjs.map +1 -1
  142. package/dist/hooks/useAsync/useAsyncStateStore.cjs +8 -14
  143. package/dist/hooks/useAsync/useAsyncStateStore.cjs.map +1 -1
  144. package/dist/hooks/useAsync/useAsyncStateStore.d.ts.map +1 -1
  145. package/dist/hooks/useAsync/useAsyncStateStore.mjs +8 -14
  146. package/dist/hooks/useAsync/useAsyncStateStore.mjs.map +1 -1
  147. package/dist/hooks/useKeyboardDetector.cjs +27 -0
  148. package/dist/hooks/useKeyboardDetector.cjs.map +1 -0
  149. package/dist/hooks/useKeyboardDetector.d.ts +5 -0
  150. package/dist/hooks/useKeyboardDetector.d.ts.map +1 -0
  151. package/dist/hooks/useKeyboardDetector.mjs +27 -0
  152. package/dist/hooks/useKeyboardDetector.mjs.map +1 -0
  153. package/dist/{index-BTDHuTxL.js → index-B1w5h_6-.js} +7 -7
  154. package/dist/index-B1w5h_6-.js.map +1 -0
  155. package/dist/{index-Db5Dym4h.cjs → index-U1U6ySIn.cjs} +7 -7
  156. package/dist/index-U1U6ySIn.cjs.map +1 -0
  157. package/dist/tailwind.css +1 -1
  158. package/package.json +17 -17
  159. package/dist/index-BTDHuTxL.js.map +0 -1
  160. package/dist/index-Db5Dym4h.cjs.map +0 -1
@@ -1,14 +1,14 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { useDictionariesRecordActions, useEditedContent } from "@intlayer/editor-react";
4
- import { WandSparkles, ArrowUpFromLine, Save, Download } from "lucide-react";
5
- import { useEffect, useMemo } from "react";
4
+ import { WandSparkles } from "lucide-react";
5
+ import { useEffect } from "react";
6
6
  import { useDictionary } from "react-intlayer";
7
7
  import "../../../hooks/useScrollBlockage/useScrollBlockageStore.mjs";
8
8
  import "../../../hooks/useAsync/useAsyncStateStore.mjs";
9
9
  import { usePushDictionaries, useGetProjects, useGetTags, useAuditContentDeclarationMetadata, useWriteDictionary } from "../../../hooks/intlayerAPIHooks.mjs";
10
10
  import "deepmerge";
11
- import "../../../index-BTDHuTxL.js";
11
+ import "../../../index-B1w5h_6-.js";
12
12
  import "@intlayer/config/client";
13
13
  import "../../Button/Button.mjs";
14
14
  import "../../Auth/ExternalsLoginButtons/externalsLoginButtons.content.mjs";
@@ -33,7 +33,7 @@ import "tailwind-merge";
33
33
  import "../../Auth/VerifyEmailForm/index.content.mjs";
34
34
  import { Container } from "../../Container/index.mjs";
35
35
  import { MultiSelect } from "../../Select/Multiselect.mjs";
36
- import { Select } from "../../Select/Select.mjs";
36
+ import "../../Select/Select.mjs";
37
37
  import { dictionaryDetailsContent } from "./dictionaryDetails.content.mjs";
38
38
  import { useDictionaryDetailsSchema } from "./useDictionaryDetailsSchema.mjs";
39
39
  const DictionaryDetailsForm = ({
@@ -45,41 +45,35 @@ const DictionaryDetailsForm = ({
45
45
  const { setLocaleDictionary } = useDictionariesRecordActions();
46
46
  const { pushDictionaries } = usePushDictionaries();
47
47
  const { data: projects, isLoading: isLoadingProjects } = useGetProjects();
48
- const { data: tags, isLoading: isLoadingTags } = useGetTags();
49
- const dictionaryValue = {
50
- ...dictionary,
51
- version: dictionary.version ?? "-1"
52
- };
48
+ const { data: tags } = useGetTags();
53
49
  const DictionaryDetailsSchema = useDictionaryDetailsSchema(
54
50
  String(project?._id)
55
51
  );
56
52
  const { form, isSubmitting } = useForm(DictionaryDetailsSchema, {
57
- defaultValues: dictionaryValue
53
+ defaultValues: dictionary
58
54
  });
55
+ const { editedContent, setEditedDictionary } = useEditedContent();
59
56
  const {
60
57
  titleInput,
61
58
  keyInput,
62
59
  descriptionInput,
63
- publishedVersionSelect,
64
- publishButton,
65
- saveButton,
66
60
  projectInput,
67
61
  tagsSelect,
68
- auditButton,
69
- downloadButton
62
+ auditButton
70
63
  } = useDictionary(dictionaryDetailsContent);
71
64
  const { auditContentDeclaration, isLoading: isAuditing } = useAuditContentDeclarationMetadata();
72
65
  const { writeDictionary } = useWriteDictionary();
66
+ const updatedDictionary = editedContent?.[dictionary.key];
73
67
  useEffect(() => {
74
- form.reset(dictionaryValue);
68
+ form.reset(dictionary);
75
69
  }, [dictionary, form?.reset]);
76
- const isFormEdited = form.formState.isDirty;
77
- const isLocalDictionary = typeof dictionary?._id === "undefined";
78
- const onSubmitSuccess = async (data) => {
79
- const updatedDictionary = {
80
- ...dictionary,
81
- ...data
82
- };
70
+ useEffect(() => {
71
+ if (typeof updatedDictionary === "undefined") {
72
+ form.reset(dictionary);
73
+ }
74
+ }, [updatedDictionary]);
75
+ const onSubmitSuccess = async () => {
76
+ if (!updatedDictionary) return;
83
77
  if (mode === "remote") {
84
78
  await pushDictionaries([updatedDictionary]);
85
79
  } else {
@@ -88,33 +82,30 @@ const DictionaryDetailsForm = ({
88
82
  setLocaleDictionary(updatedDictionary);
89
83
  };
90
84
  const handleOnAuditFile = async () => {
91
- const updatedDictionary = form.getValues();
85
+ const dictionaryToAudit = {
86
+ ...dictionary,
87
+ ...updatedDictionary
88
+ };
92
89
  await auditContentDeclaration({
93
- fileContent: JSON.stringify({ ...dictionary, ...updatedDictionary })
90
+ fileContent: JSON.stringify(dictionaryToAudit)
94
91
  }).then((response) => {
95
- if (!response.data) return;
92
+ if (!response?.data) return;
96
93
  try {
97
- const editedDictionary2 = JSON.parse(response.data.fileContent);
94
+ const auditedDictionary = JSON.parse(response.data.fileContent);
95
+ setEditedDictionary((prev) => ({
96
+ ...prev,
97
+ ...dictionaryToAudit,
98
+ ...auditedDictionary
99
+ }));
98
100
  form.reset({
99
- ...updatedDictionary,
100
- ...editedDictionary2,
101
- publishedVersion: updatedDictionary.publishedVersion ?? "-1"
101
+ ...dictionaryToAudit,
102
+ ...auditedDictionary
102
103
  });
103
104
  } catch (error) {
104
105
  console.error(error);
105
106
  }
106
107
  });
107
108
  };
108
- const isLoading = isSubmitting || isLoadingTags;
109
- const { editedContent } = useEditedContent();
110
- const editedDictionary = useMemo(
111
- () => editedContent?.[dictionary.key],
112
- [editedContent, dictionary.key]
113
- );
114
- const isEdited = useMemo(
115
- () => editedDictionary && dictionary && JSON.stringify(editedDictionary.content) !== JSON.stringify(dictionary.content),
116
- [dictionary, editedDictionary]
117
- );
118
109
  return /* @__PURE__ */ jsx(
119
110
  Container,
120
111
  {
@@ -128,6 +119,10 @@ const DictionaryDetailsForm = ({
128
119
  className: "flex w-full flex-col gap-8",
129
120
  ...form,
130
121
  schema: DictionaryDetailsSchema,
122
+ onChange: (data) => setEditedDictionary((prev) => ({
123
+ ...prev,
124
+ ...data
125
+ })),
131
126
  onSubmitSuccess,
132
127
  children: [
133
128
  /* @__PURE__ */ jsxs("div", { className: "flex w-full flex-1 gap-8 max-md:flex-col", children: [
@@ -139,7 +134,15 @@ const DictionaryDetailsForm = ({
139
134
  placeholder: keyInput.label.value,
140
135
  description: keyInput.description,
141
136
  disabled: isSubmitting,
142
- isRequired: true
137
+ isRequired: true,
138
+ onSave: (value) => {
139
+ form.setValue("key", value);
140
+ setEditedDictionary((prev) => ({
141
+ ...dictionary,
142
+ ...prev ?? {},
143
+ key: value
144
+ }));
145
+ }
143
146
  }
144
147
  ),
145
148
  /* @__PURE__ */ jsx(
@@ -149,7 +152,15 @@ const DictionaryDetailsForm = ({
149
152
  label: titleInput.label,
150
153
  placeholder: titleInput.placeholder.value,
151
154
  description: titleInput.description,
152
- disabled: isSubmitting
155
+ disabled: isSubmitting,
156
+ onSave: (value) => {
157
+ form.setValue("title", value);
158
+ setEditedDictionary((prev) => ({
159
+ ...dictionary,
160
+ ...prev ?? {},
161
+ title: value
162
+ }));
163
+ }
153
164
  }
154
165
  )
155
166
  ] }),
@@ -160,7 +171,15 @@ const DictionaryDetailsForm = ({
160
171
  label: descriptionInput.label,
161
172
  placeholder: descriptionInput.placeholder.value,
162
173
  description: descriptionInput.description,
163
- disabled: isSubmitting
174
+ disabled: isSubmitting,
175
+ onSave: (value) => {
176
+ form.setValue("description", value);
177
+ setEditedDictionary((prev) => ({
178
+ ...dictionary,
179
+ ...prev ?? {},
180
+ description: value
181
+ }));
182
+ }
164
183
  }
165
184
  ),
166
185
  /* @__PURE__ */ jsxs("div", { className: "flex size-full flex-1 gap-8 max-md:flex-col", children: [
@@ -170,6 +189,15 @@ const DictionaryDetailsForm = ({
170
189
  name: "projectIds",
171
190
  label: projectInput.label.value,
172
191
  description: projectInput.description.value,
192
+ onValueChange: (value) => {
193
+ const valueArray = [value].flat();
194
+ form.setValue("projectIds", valueArray);
195
+ setEditedDictionary((prev) => ({
196
+ ...dictionary,
197
+ ...prev ?? {},
198
+ projectIds: valueArray
199
+ }));
200
+ },
173
201
  children: [
174
202
  /* @__PURE__ */ jsx(
175
203
  MultiSelect.Trigger,
@@ -195,6 +223,14 @@ const DictionaryDetailsForm = ({
195
223
  name: "tags",
196
224
  label: tagsSelect.label.value,
197
225
  description: tagsSelect.description.value,
226
+ onValueChange: (value) => {
227
+ form.setValue("tags", [value].flat());
228
+ setEditedDictionary((prev) => ({
229
+ ...dictionary,
230
+ ...prev ?? {},
231
+ tags: [value].flat()
232
+ }));
233
+ },
198
234
  children: [
199
235
  /* @__PURE__ */ jsx(
200
236
  MultiSelect.Trigger,
@@ -215,85 +251,21 @@ const DictionaryDetailsForm = ({
215
251
  }
216
252
  )
217
253
  ] }),
218
- (dictionary.availableVersions?.length ?? 0) > 1 && /* @__PURE__ */ jsxs("div", { className: "flex size-full flex-1 gap-8 max-md:flex-col", children: [
219
- /* @__PURE__ */ jsxs(
220
- Form.Select,
221
- {
222
- name: "publishedVersion",
223
- description: publishedVersionSelect.description.value,
224
- label: publishedVersionSelect.label,
225
- children: [
226
- /* @__PURE__ */ jsx(Select.Trigger, { children: /* @__PURE__ */ jsx(
227
- Select.Value,
228
- {
229
- placeholder: publishedVersionSelect.placeholder.value
230
- }
231
- ) }),
232
- /* @__PURE__ */ jsxs(Select.Content, { children: [
233
- /* @__PURE__ */ jsx(Select.Item, { value: "-1", children: "LTS" }),
234
- dictionary.availableVersions?.map(
235
- (version) => /* @__PURE__ */ jsx(Select.Item, { value: version, children: version }, version)
236
- )
237
- ] })
238
- ]
239
- }
240
- ),
241
- /* @__PURE__ */ jsx("div", { className: "w-full" })
242
- ] }),
243
- /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-end gap-2 max-md:flex-col", children: [
244
- /* @__PURE__ */ jsx(
245
- Form.Button,
246
- {
247
- type: "button",
248
- label: auditButton.label.value,
249
- Icon: WandSparkles,
250
- variant: "outline",
251
- color: "text",
252
- className: "max-md:w-full",
253
- onClick: handleOnAuditFile,
254
- disabled: isSubmitting || isAuditing,
255
- isLoading: isAuditing,
256
- children: auditButton.text
257
- }
258
- ),
259
- mode === "remote" ? isLocalDictionary ? /* @__PURE__ */ jsx(
260
- Form.Button,
261
- {
262
- type: "submit",
263
- label: publishButton.label.value,
264
- disabled: isSubmitting || !isFormEdited || isLoading,
265
- Icon: ArrowUpFromLine,
266
- color: "text",
267
- className: "max-md:w-full",
268
- isLoading: isSubmitting,
269
- children: publishButton.text
270
- }
271
- ) : isEdited && /* @__PURE__ */ jsx(
272
- Form.Button,
273
- {
274
- type: "submit",
275
- label: saveButton.label.value,
276
- disabled: isSubmitting || !isFormEdited || isLoading,
277
- Icon: Save,
278
- color: "text",
279
- className: "max-md:w-full",
280
- isLoading: isSubmitting,
281
- children: saveButton.text
282
- }
283
- ) : /* @__PURE__ */ jsx(
284
- Form.Button,
285
- {
286
- type: "submit",
287
- label: downloadButton.label.value,
288
- disabled: isSubmitting || !isFormEdited || isLoading,
289
- Icon: Download,
290
- color: "text",
291
- className: "max-md:w-full",
292
- isLoading: isSubmitting,
293
- children: downloadButton.text
294
- }
295
- )
296
- ] })
254
+ /* @__PURE__ */ jsx("div", { className: "flex flex-wrap items-center justify-end gap-2 max-md:flex-col", children: /* @__PURE__ */ jsx(
255
+ Form.Button,
256
+ {
257
+ type: "button",
258
+ label: auditButton.label.value,
259
+ Icon: WandSparkles,
260
+ variant: "outline",
261
+ color: "text",
262
+ className: "max-md:w-full",
263
+ onClick: handleOnAuditFile,
264
+ disabled: isSubmitting || isAuditing,
265
+ isLoading: isAuditing,
266
+ children: auditButton.text
267
+ }
268
+ ) })
297
269
  ]
298
270
  }
299
271
  )
@@ -1 +1 @@
1
- {"version":3,"file":"DictionaryDetailsForm.mjs","sources":["../../../../src/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.tsx"],"sourcesContent":["'use client';\n\nimport type {\n DictionaryAPI,\n Dictionary as DistantDictionary,\n} from '@intlayer/backend';\nimport type { Dictionary } from '@intlayer/core';\nimport {\n useDictionariesRecordActions,\n useEditedContent,\n} from '@intlayer/editor-react';\nimport { ArrowUpFromLine, Download, Save, WandSparkles } from 'lucide-react';\nimport { type FC, useEffect, useMemo } from 'react';\nimport { useDictionary } from 'react-intlayer';\nimport {\n useAuditContentDeclarationMetadata,\n useGetProjects,\n useGetTags,\n usePushDictionaries,\n useWriteDictionary,\n} from '../../../hooks';\nimport { useAuth } from '../../Auth';\nimport { Container } from '../../Container';\nimport { Form, useForm } from '../../Form';\nimport { Loader } from '../../Loader';\nimport { MultiSelect, Select } from '../../Select';\nimport { dictionaryDetailsContent } from './dictionaryDetails.content';\nimport {\n type DictionaryDetailsFormData,\n useDictionaryDetailsSchema,\n} from './useDictionaryDetailsSchema';\n\ntype DictionaryDetailsProps = {\n dictionary: Dictionary;\n mode: 'local' | 'remote';\n};\n\nexport const DictionaryDetailsForm: FC<DictionaryDetailsProps> = ({\n dictionary,\n mode,\n}) => {\n const { session } = useAuth();\n const { project } = session ?? {};\n const { setLocaleDictionary } = useDictionariesRecordActions();\n const { pushDictionaries } = usePushDictionaries();\n const { data: projects, isLoading: isLoadingProjects } = useGetProjects();\n const { data: tags, isLoading: isLoadingTags } = useGetTags();\n const dictionaryValue = {\n ...dictionary,\n version: dictionary.version ?? '-1',\n };\n\n const DictionaryDetailsSchema = useDictionaryDetailsSchema(\n String(project?._id)\n );\n const { form, isSubmitting } = useForm(DictionaryDetailsSchema, {\n defaultValues: dictionaryValue,\n });\n const {\n titleInput,\n keyInput,\n descriptionInput,\n publishedVersionSelect,\n publishButton,\n saveButton,\n projectInput,\n tagsSelect,\n auditButton,\n downloadButton,\n } = useDictionary(dictionaryDetailsContent);\n const { auditContentDeclaration, isLoading: isAuditing } =\n useAuditContentDeclarationMetadata();\n const { writeDictionary } = useWriteDictionary();\n\n useEffect(() => {\n form.reset(dictionaryValue);\n }, [dictionary, form?.reset]);\n\n const isFormEdited = form.formState.isDirty;\n const isLocalDictionary =\n typeof (dictionary as DistantDictionary)?._id === 'undefined';\n\n const onSubmitSuccess = async (data: DictionaryDetailsFormData) => {\n const updatedDictionary = {\n ...dictionary,\n ...data,\n };\n\n if (mode === 'remote') {\n await pushDictionaries([updatedDictionary]);\n } else {\n await writeDictionary(updatedDictionary);\n }\n\n setLocaleDictionary(updatedDictionary);\n };\n\n const handleOnAuditFile = async () => {\n const updatedDictionary = form.getValues();\n await auditContentDeclaration({\n fileContent: JSON.stringify({ ...dictionary, ...updatedDictionary }),\n }).then((response) => {\n if (!response.data) return;\n\n try {\n const editedDictionary = JSON.parse(response.data.fileContent) as\n | Partial<Dictionary>\n | undefined;\n\n form.reset({\n ...updatedDictionary,\n ...editedDictionary,\n publishedVersion: updatedDictionary.publishedVersion ?? '-1',\n });\n } catch (error) {\n console.error(error);\n }\n });\n };\n\n const isLoading = isSubmitting || isLoadingTags;\n\n const { editedContent } = useEditedContent();\n const editedDictionary = useMemo(\n () => editedContent?.[dictionary.key],\n [editedContent, dictionary.key]\n );\n const isEdited = useMemo(\n () =>\n editedDictionary &&\n dictionary &&\n JSON.stringify(editedDictionary.content) !==\n JSON.stringify(dictionary.content),\n [dictionary, editedDictionary]\n );\n\n return (\n <Container\n background=\"none\"\n border\n roundedSize=\"2xl\"\n className=\"w-full px-5 pb-3 pt-5\"\n >\n <Form\n className=\"flex w-full flex-col gap-8\"\n {...form}\n schema={DictionaryDetailsSchema}\n onSubmitSuccess={onSubmitSuccess}\n >\n <div className=\"flex w-full flex-1 gap-8 max-md:flex-col\">\n <Form.EditableFieldInput\n name=\"key\"\n label={keyInput.label}\n placeholder={keyInput.label.value}\n description={keyInput.description}\n disabled={isSubmitting}\n isRequired\n />\n <Form.EditableFieldInput\n name=\"title\"\n label={titleInput.label}\n placeholder={titleInput.placeholder.value}\n description={titleInput.description}\n disabled={isSubmitting}\n />\n </div>\n <Form.EditableFieldTextArea\n name=\"description\"\n label={descriptionInput.label}\n placeholder={descriptionInput.placeholder.value}\n description={descriptionInput.description}\n disabled={isSubmitting}\n />\n <div className=\"flex size-full flex-1 gap-8 max-md:flex-col\">\n <Form.MultiSelect\n name=\"projectIds\"\n label={projectInput.label.value}\n description={projectInput.description.value}\n >\n <MultiSelect.Trigger\n getBadgeValue={(value) =>\n projects?.data?.find((project) => String(project._id) === value)\n ?.name ?? value\n }\n >\n <MultiSelect.Input placeholder={projectInput.placeholder.value} />\n </MultiSelect.Trigger>\n <MultiSelect.Content>\n <Loader isLoading={isLoadingProjects}>\n <MultiSelect.List>\n {projects?.data?.map((project) => (\n <MultiSelect.Item\n key={String(project._id)}\n value={String(project._id)}\n >\n {project.name}\n </MultiSelect.Item>\n ))}\n </MultiSelect.List>\n </Loader>\n </MultiSelect.Content>\n </Form.MultiSelect>\n\n <Form.MultiSelect\n name=\"tags\"\n label={tagsSelect.label.value}\n description={tagsSelect.description.value}\n >\n <MultiSelect.Trigger\n getBadgeValue={(value) =>\n projects?.data?.find((project) => String(project._id) === value)\n ?.name ?? value\n }\n >\n <MultiSelect.Input placeholder={tagsSelect.placeholder.value} />\n </MultiSelect.Trigger>\n <MultiSelect.Content>\n <Loader isLoading={isLoadingProjects}>\n <MultiSelect.List>\n {tags?.data?.map((tag) => (\n <MultiSelect.Item\n key={String(tag.key)}\n value={String(tag.key)}\n >\n {tag.name ?? tag.key}\n </MultiSelect.Item>\n ))}\n </MultiSelect.List>\n </Loader>\n </MultiSelect.Content>\n </Form.MultiSelect>\n </div>\n {((dictionary as DictionaryAPI).availableVersions?.length ?? 0) > 1 && (\n <div className=\"flex size-full flex-1 gap-8 max-md:flex-col\">\n <Form.Select\n name=\"publishedVersion\"\n description={publishedVersionSelect.description.value}\n label={publishedVersionSelect.label}\n >\n <Select.Trigger>\n <Select.Value\n placeholder={publishedVersionSelect.placeholder.value}\n />\n </Select.Trigger>\n <Select.Content>\n <Select.Item value=\"-1\">LTS</Select.Item>\n {(dictionary as DictionaryAPI).availableVersions?.map(\n (version) => (\n <Select.Item value={version} key={version}>\n {version}\n </Select.Item>\n )\n )}\n </Select.Content>\n </Form.Select>\n <div className=\"w-full\" />\n </div>\n )}\n\n <div className=\"flex flex-wrap items-center justify-end gap-2 max-md:flex-col\">\n <Form.Button\n type=\"button\"\n label={auditButton.label.value}\n Icon={WandSparkles}\n variant=\"outline\"\n color=\"text\"\n className=\"max-md:w-full\"\n onClick={handleOnAuditFile}\n disabled={isSubmitting || isAuditing}\n isLoading={isAuditing}\n >\n {auditButton.text}\n </Form.Button>\n\n {mode === 'remote' ? (\n isLocalDictionary ? (\n <Form.Button\n type=\"submit\"\n label={publishButton.label.value}\n disabled={isSubmitting || !isFormEdited || isLoading}\n Icon={ArrowUpFromLine}\n color=\"text\"\n className=\"max-md:w-full\"\n isLoading={isSubmitting}\n >\n {publishButton.text}\n </Form.Button>\n ) : (\n isEdited && (\n <Form.Button\n type=\"submit\"\n label={saveButton.label.value}\n disabled={isSubmitting || !isFormEdited || isLoading}\n Icon={Save}\n color=\"text\"\n className=\"max-md:w-full\"\n isLoading={isSubmitting}\n >\n {saveButton.text}\n </Form.Button>\n )\n )\n ) : (\n <Form.Button\n type=\"submit\"\n label={downloadButton.label.value}\n disabled={isSubmitting || !isFormEdited || isLoading}\n Icon={Download}\n color=\"text\"\n className=\"max-md:w-full\"\n isLoading={isSubmitting}\n >\n {downloadButton.text}\n </Form.Button>\n )}\n </div>\n </Form>\n </Container>\n );\n};\n"],"names":["editedDictionary","project"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCO,MAAM,wBAAoD,CAAC;AAAA,EAChE;AAAA,EACA;AACF,MAAM;AACE,QAAA,EAAE,QAAQ,IAAI,QAAQ;AAC5B,QAAM,EAAE,YAAY,WAAW,CAAC;AAC1B,QAAA,EAAE,oBAAoB,IAAI,6BAA6B;AACvD,QAAA,EAAE,iBAAiB,IAAI,oBAAoB;AACjD,QAAM,EAAE,MAAM,UAAU,WAAW,kBAAA,IAAsB,eAAe;AACxE,QAAM,EAAE,MAAM,MAAM,WAAW,cAAA,IAAkB,WAAW;AAC5D,QAAM,kBAAkB;AAAA,IACtB,GAAG;AAAA,IACH,SAAS,WAAW,WAAW;AAAA,EACjC;AAEA,QAAM,0BAA0B;AAAA,IAC9B,OAAO,SAAS,GAAG;AAAA,EACrB;AACA,QAAM,EAAE,MAAM,iBAAiB,QAAQ,yBAAyB;AAAA,IAC9D,eAAe;AAAA,EAAA,CAChB;AACK,QAAA;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACE,cAAc,wBAAwB;AAC1C,QAAM,EAAE,yBAAyB,WAAW,WAAA,IAC1C,mCAAmC;AAC/B,QAAA,EAAE,gBAAgB,IAAI,mBAAmB;AAE/C,YAAU,MAAM;AACd,SAAK,MAAM,eAAe;AAAA,EACzB,GAAA,CAAC,YAAY,MAAM,KAAK,CAAC;AAEtB,QAAA,eAAe,KAAK,UAAU;AAC9B,QAAA,oBACJ,OAAQ,YAAkC,QAAQ;AAE9C,QAAA,kBAAkB,OAAO,SAAoC;AACjE,UAAM,oBAAoB;AAAA,MACxB,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AAEA,QAAI,SAAS,UAAU;AACf,YAAA,iBAAiB,CAAC,iBAAiB,CAAC;AAAA,IAAA,OACrC;AACL,YAAM,gBAAgB,iBAAiB;AAAA,IAAA;AAGzC,wBAAoB,iBAAiB;AAAA,EACvC;AAEA,QAAM,oBAAoB,YAAY;AAC9B,UAAA,oBAAoB,KAAK,UAAU;AACzC,UAAM,wBAAwB;AAAA,MAC5B,aAAa,KAAK,UAAU,EAAE,GAAG,YAAY,GAAG,kBAAmB,CAAA;AAAA,IAAA,CACpE,EAAE,KAAK,CAAC,aAAa;AAChB,UAAA,CAAC,SAAS,KAAM;AAEhB,UAAA;AACF,cAAMA,oBAAmB,KAAK,MAAM,SAAS,KAAK,WAAW;AAI7D,aAAK,MAAM;AAAA,UACT,GAAG;AAAA,UACH,GAAGA;AAAAA,UACH,kBAAkB,kBAAkB,oBAAoB;AAAA,QAAA,CACzD;AAAA,eACM,OAAO;AACd,gBAAQ,MAAM,KAAK;AAAA,MAAA;AAAA,IACrB,CACD;AAAA,EACH;AAEA,QAAM,YAAY,gBAAgB;AAE5B,QAAA,EAAE,cAAc,IAAI,iBAAiB;AAC3C,QAAM,mBAAmB;AAAA,IACvB,MAAM,gBAAgB,WAAW,GAAG;AAAA,IACpC,CAAC,eAAe,WAAW,GAAG;AAAA,EAChC;AACA,QAAM,WAAW;AAAA,IACf,MACE,oBACA,cACA,KAAK,UAAU,iBAAiB,OAAO,MACrC,KAAK,UAAU,WAAW,OAAO;AAAA,IACrC,CAAC,YAAY,gBAAgB;AAAA,EAC/B;AAGE,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,YAAW;AAAA,MACX,QAAM;AAAA,MACN,aAAY;AAAA,MACZ,WAAU;AAAA,MAEV,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACT,GAAG;AAAA,UACJ,QAAQ;AAAA,UACR;AAAA,UAEA,UAAA;AAAA,YAAC,qBAAA,OAAA,EAAI,WAAU,4CACb,UAAA;AAAA,cAAA;AAAA,gBAAC,KAAK;AAAA,gBAAL;AAAA,kBACC,MAAK;AAAA,kBACL,OAAO,SAAS;AAAA,kBAChB,aAAa,SAAS,MAAM;AAAA,kBAC5B,aAAa,SAAS;AAAA,kBACtB,UAAU;AAAA,kBACV,YAAU;AAAA,gBAAA;AAAA,cACZ;AAAA,cACA;AAAA,gBAAC,KAAK;AAAA,gBAAL;AAAA,kBACC,MAAK;AAAA,kBACL,OAAO,WAAW;AAAA,kBAClB,aAAa,WAAW,YAAY;AAAA,kBACpC,aAAa,WAAW;AAAA,kBACxB,UAAU;AAAA,gBAAA;AAAA,cAAA;AAAA,YACZ,GACF;AAAA,YACA;AAAA,cAAC,KAAK;AAAA,cAAL;AAAA,gBACC,MAAK;AAAA,gBACL,OAAO,iBAAiB;AAAA,gBACxB,aAAa,iBAAiB,YAAY;AAAA,gBAC1C,aAAa,iBAAiB;AAAA,gBAC9B,UAAU;AAAA,cAAA;AAAA,YACZ;AAAA,YACA,qBAAC,OAAI,EAAA,WAAU,+CACb,UAAA;AAAA,cAAA;AAAA,gBAAC,KAAK;AAAA,gBAAL;AAAA,kBACC,MAAK;AAAA,kBACL,OAAO,aAAa,MAAM;AAAA,kBAC1B,aAAa,aAAa,YAAY;AAAA,kBAEtC,UAAA;AAAA,oBAAA;AAAA,sBAAC,YAAY;AAAA,sBAAZ;AAAA,wBACC,eAAe,CAAC,UACd,UAAU,MAAM,KAAK,CAACC,aAAY,OAAOA,SAAQ,GAAG,MAAM,KAAK,GAC3D,QAAQ;AAAA,wBAGd,8BAAC,YAAY,OAAZ,EAAkB,aAAa,aAAa,YAAY,MAAO,CAAA;AAAA,sBAAA;AAAA,oBAClE;AAAA,wCACC,YAAY,SAAZ,EACC,UAAA,oBAAC,UAAO,WAAW,mBACjB,UAAC,oBAAA,YAAY,MAAZ,EACE,UAAA,UAAU,MAAM,IAAI,CAACA,aACpB;AAAA,sBAAC,YAAY;AAAA,sBAAZ;AAAA,wBAEC,OAAO,OAAOA,SAAQ,GAAG;AAAA,wBAExB,UAAAA,SAAQ;AAAA,sBAAA;AAAA,sBAHJ,OAAOA,SAAQ,GAAG;AAAA,oBAAA,CAK1B,EACH,CAAA,EAAA,CACF,EACF,CAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACF;AAAA,cAEA;AAAA,gBAAC,KAAK;AAAA,gBAAL;AAAA,kBACC,MAAK;AAAA,kBACL,OAAO,WAAW,MAAM;AAAA,kBACxB,aAAa,WAAW,YAAY;AAAA,kBAEpC,UAAA;AAAA,oBAAA;AAAA,sBAAC,YAAY;AAAA,sBAAZ;AAAA,wBACC,eAAe,CAAC,UACd,UAAU,MAAM,KAAK,CAACA,aAAY,OAAOA,SAAQ,GAAG,MAAM,KAAK,GAC3D,QAAQ;AAAA,wBAGd,8BAAC,YAAY,OAAZ,EAAkB,aAAa,WAAW,YAAY,MAAO,CAAA;AAAA,sBAAA;AAAA,oBAChE;AAAA,wCACC,YAAY,SAAZ,EACC,UAAA,oBAAC,UAAO,WAAW,mBACjB,UAAC,oBAAA,YAAY,MAAZ,EACE,UAAA,MAAM,MAAM,IAAI,CAAC,QAChB;AAAA,sBAAC,YAAY;AAAA,sBAAZ;AAAA,wBAEC,OAAO,OAAO,IAAI,GAAG;AAAA,wBAEpB,UAAA,IAAI,QAAQ,IAAI;AAAA,sBAAA;AAAA,sBAHZ,OAAO,IAAI,GAAG;AAAA,oBAAA,CAKtB,EACH,CAAA,EAAA,CACF,EACF,CAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,YACF,GACF;AAAA,aACG,WAA6B,mBAAmB,UAAU,KAAK,KAC/D,qBAAA,OAAA,EAAI,WAAU,+CACb,UAAA;AAAA,cAAA;AAAA,gBAAC,KAAK;AAAA,gBAAL;AAAA,kBACC,MAAK;AAAA,kBACL,aAAa,uBAAuB,YAAY;AAAA,kBAChD,OAAO,uBAAuB;AAAA,kBAE9B,UAAA;AAAA,oBAAC,oBAAA,OAAO,SAAP,EACC,UAAA;AAAA,sBAAC,OAAO;AAAA,sBAAP;AAAA,wBACC,aAAa,uBAAuB,YAAY;AAAA,sBAAA;AAAA,oBAAA,GAEpD;AAAA,oBACA,qBAAC,OAAO,SAAP,EACC,UAAA;AAAA,sBAAA,oBAAC,OAAO,MAAP,EAAY,OAAM,MAAK,UAAG,OAAA;AAAA,sBACzB,WAA6B,mBAAmB;AAAA,wBAChD,CAAC,YACE,oBAAA,OAAO,MAAP,EAAY,OAAO,SACjB,UAAA,QAAA,GAD+B,OAElC;AAAA,sBAAA;AAAA,oBAEJ,EACF,CAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACF;AAAA,cACA,oBAAC,OAAI,EAAA,WAAU,SAAS,CAAA;AAAA,YAAA,GAC1B;AAAA,YAGF,qBAAC,OAAI,EAAA,WAAU,iEACb,UAAA;AAAA,cAAA;AAAA,gBAAC,KAAK;AAAA,gBAAL;AAAA,kBACC,MAAK;AAAA,kBACL,OAAO,YAAY,MAAM;AAAA,kBACzB,MAAM;AAAA,kBACN,SAAQ;AAAA,kBACR,OAAM;AAAA,kBACN,WAAU;AAAA,kBACV,SAAS;AAAA,kBACT,UAAU,gBAAgB;AAAA,kBAC1B,WAAW;AAAA,kBAEV,UAAY,YAAA;AAAA,gBAAA;AAAA,cACf;AAAA,cAEC,SAAS,WACR,oBACE;AAAA,gBAAC,KAAK;AAAA,gBAAL;AAAA,kBACC,MAAK;AAAA,kBACL,OAAO,cAAc,MAAM;AAAA,kBAC3B,UAAU,gBAAgB,CAAC,gBAAgB;AAAA,kBAC3C,MAAM;AAAA,kBACN,OAAM;AAAA,kBACN,WAAU;AAAA,kBACV,WAAW;AAAA,kBAEV,UAAc,cAAA;AAAA,gBAAA;AAAA,kBAGjB,YACE;AAAA,gBAAC,KAAK;AAAA,gBAAL;AAAA,kBACC,MAAK;AAAA,kBACL,OAAO,WAAW,MAAM;AAAA,kBACxB,UAAU,gBAAgB,CAAC,gBAAgB;AAAA,kBAC3C,MAAM;AAAA,kBACN,OAAM;AAAA,kBACN,WAAU;AAAA,kBACV,WAAW;AAAA,kBAEV,UAAW,WAAA;AAAA,gBAAA;AAAA,cAAA,IAKlB;AAAA,gBAAC,KAAK;AAAA,gBAAL;AAAA,kBACC,MAAK;AAAA,kBACL,OAAO,eAAe,MAAM;AAAA,kBAC5B,UAAU,gBAAgB,CAAC,gBAAgB;AAAA,kBAC3C,MAAM;AAAA,kBACN,OAAM;AAAA,kBACN,WAAU;AAAA,kBACV,WAAW;AAAA,kBAEV,UAAe,eAAA;AAAA,gBAAA;AAAA,cAAA;AAAA,YAClB,EAEJ,CAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EACF;AAEJ;"}
1
+ {"version":3,"file":"DictionaryDetailsForm.mjs","sources":["../../../../src/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.tsx"],"sourcesContent":["'use client';\n\nimport type { Dictionary } from '@intlayer/core';\nimport {\n useDictionariesRecordActions,\n useEditedContent,\n} from '@intlayer/editor-react';\nimport { WandSparkles } from 'lucide-react';\nimport { type FC, useEffect } from 'react';\nimport { useDictionary } from 'react-intlayer';\nimport {\n useAuditContentDeclarationMetadata,\n useGetProjects,\n useGetTags,\n usePushDictionaries,\n useWriteDictionary,\n} from '../../../hooks';\nimport { useAuth } from '../../Auth';\nimport { Container } from '../../Container';\nimport { Form, useForm } from '../../Form';\nimport { Loader } from '../../Loader';\nimport { MultiSelect } from '../../Select';\nimport { dictionaryDetailsContent } from './dictionaryDetails.content';\nimport { useDictionaryDetailsSchema } from './useDictionaryDetailsSchema';\n\ntype DictionaryDetailsProps = {\n dictionary: Dictionary;\n mode: ('local' | 'remote')[];\n};\n\nexport const DictionaryDetailsForm: FC<DictionaryDetailsProps> = ({\n dictionary,\n mode,\n}) => {\n const { session } = useAuth();\n const { project } = session ?? {};\n const { setLocaleDictionary } = useDictionariesRecordActions();\n const { pushDictionaries } = usePushDictionaries();\n const { data: projects, isLoading: isLoadingProjects } = useGetProjects();\n const { data: tags } = useGetTags();\n\n const DictionaryDetailsSchema = useDictionaryDetailsSchema(\n String(project?._id)\n );\n const { form, isSubmitting } = useForm(DictionaryDetailsSchema, {\n defaultValues: dictionary,\n });\n const { editedContent, setEditedDictionary } = useEditedContent();\n const {\n titleInput,\n keyInput,\n descriptionInput,\n\n projectInput,\n tagsSelect,\n auditButton,\n } = useDictionary(dictionaryDetailsContent);\n const { auditContentDeclaration, isLoading: isAuditing } =\n useAuditContentDeclarationMetadata();\n const { writeDictionary } = useWriteDictionary();\n const updatedDictionary = editedContent?.[dictionary.key];\n\n useEffect(() => {\n form.reset(dictionary);\n }, [dictionary, form?.reset]);\n\n useEffect(() => {\n if (typeof updatedDictionary === 'undefined') {\n form.reset(dictionary);\n }\n }, [updatedDictionary]);\n\n const onSubmitSuccess = async () => {\n if (!updatedDictionary) return;\n\n if (mode === 'remote') {\n await pushDictionaries([updatedDictionary]);\n } else {\n await writeDictionary(updatedDictionary);\n }\n\n setLocaleDictionary(updatedDictionary);\n };\n\n const handleOnAuditFile = async () => {\n const dictionaryToAudit = {\n ...dictionary,\n ...updatedDictionary,\n };\n\n await auditContentDeclaration({\n fileContent: JSON.stringify(dictionaryToAudit),\n }).then((response) => {\n if (!response?.data) return;\n\n try {\n const auditedDictionary = JSON.parse(response.data.fileContent) as\n | Partial<Dictionary>\n | undefined;\n\n setEditedDictionary((prev) => ({\n ...prev,\n ...dictionaryToAudit,\n ...auditedDictionary,\n }));\n form.reset({\n ...dictionaryToAudit,\n ...auditedDictionary,\n });\n } catch (error) {\n console.error(error);\n }\n });\n };\n\n return (\n <Container\n background=\"none\"\n border\n roundedSize=\"2xl\"\n className=\"w-full px-5 pb-3 pt-5\"\n >\n <Form\n className=\"flex w-full flex-col gap-8\"\n {...form}\n schema={DictionaryDetailsSchema}\n onChange={(data) =>\n setEditedDictionary((prev) => ({\n ...prev,\n ...data,\n }))\n }\n onSubmitSuccess={onSubmitSuccess}\n >\n <div className=\"flex w-full flex-1 gap-8 max-md:flex-col\">\n <Form.EditableFieldInput\n name=\"key\"\n label={keyInput.label}\n placeholder={keyInput.label.value}\n description={keyInput.description}\n disabled={isSubmitting}\n isRequired\n onSave={(value) => {\n form.setValue('key', value);\n setEditedDictionary((prev) => ({\n ...dictionary,\n ...(prev ?? {}),\n key: value,\n }));\n }}\n />\n <Form.EditableFieldInput\n name=\"title\"\n label={titleInput.label}\n placeholder={titleInput.placeholder.value}\n description={titleInput.description}\n disabled={isSubmitting}\n onSave={(value) => {\n form.setValue('title', value);\n setEditedDictionary((prev) => ({\n ...dictionary,\n ...(prev ?? {}),\n title: value,\n }));\n }}\n />\n </div>\n <Form.EditableFieldTextArea\n name=\"description\"\n label={descriptionInput.label}\n placeholder={descriptionInput.placeholder.value}\n description={descriptionInput.description}\n disabled={isSubmitting}\n onSave={(value) => {\n form.setValue('description', value);\n setEditedDictionary((prev) => ({\n ...dictionary,\n ...(prev ?? {}),\n description: value,\n }));\n }}\n />\n <div className=\"flex size-full flex-1 gap-8 max-md:flex-col\">\n <Form.MultiSelect\n name=\"projectIds\"\n label={projectInput.label.value}\n description={projectInput.description.value}\n onValueChange={(value) => {\n const valueArray = [value].flat();\n form.setValue('projectIds', valueArray);\n setEditedDictionary((prev) => ({\n ...dictionary,\n ...(prev ?? {}),\n projectIds: valueArray,\n }));\n }}\n >\n <MultiSelect.Trigger\n getBadgeValue={(value) =>\n projects?.data?.find((project) => String(project._id) === value)\n ?.name ?? value\n }\n >\n <MultiSelect.Input placeholder={projectInput.placeholder.value} />\n </MultiSelect.Trigger>\n <MultiSelect.Content>\n <Loader isLoading={isLoadingProjects}>\n <MultiSelect.List>\n {projects?.data?.map((project) => (\n <MultiSelect.Item\n key={String(project._id)}\n value={String(project._id)}\n >\n {project.name}\n </MultiSelect.Item>\n ))}\n </MultiSelect.List>\n </Loader>\n </MultiSelect.Content>\n </Form.MultiSelect>\n\n <Form.MultiSelect\n name=\"tags\"\n label={tagsSelect.label.value}\n description={tagsSelect.description.value}\n onValueChange={(value) => {\n form.setValue('tags', [value].flat());\n setEditedDictionary((prev) => ({\n ...dictionary,\n ...(prev ?? {}),\n tags: [value].flat(),\n }));\n }}\n >\n <MultiSelect.Trigger\n getBadgeValue={(value) =>\n projects?.data?.find((project) => String(project._id) === value)\n ?.name ?? value\n }\n >\n <MultiSelect.Input placeholder={tagsSelect.placeholder.value} />\n </MultiSelect.Trigger>\n <MultiSelect.Content>\n <Loader isLoading={isLoadingProjects}>\n <MultiSelect.List>\n {tags?.data?.map((tag) => (\n <MultiSelect.Item\n key={String(tag.key)}\n value={String(tag.key)}\n >\n {tag.name ?? tag.key}\n </MultiSelect.Item>\n ))}\n </MultiSelect.List>\n </Loader>\n </MultiSelect.Content>\n </Form.MultiSelect>\n </div>\n\n <div className=\"flex flex-wrap items-center justify-end gap-2 max-md:flex-col\">\n <Form.Button\n type=\"button\"\n label={auditButton.label.value}\n Icon={WandSparkles}\n variant=\"outline\"\n color=\"text\"\n className=\"max-md:w-full\"\n onClick={handleOnAuditFile}\n disabled={isSubmitting || isAuditing}\n isLoading={isAuditing}\n >\n {auditButton.text}\n </Form.Button>\n </div>\n </Form>\n </Container>\n );\n};\n"],"names":["project"],"mappings":"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"}
@@ -236,117 +236,6 @@ const dictionaryDetailsContent = {
236
236
  ru: "Выберите теги, которые нужно связать с словарем"
237
237
  })
238
238
  },
239
- publishedVersionSelect: {
240
- label: intlayer.t({
241
- en: "Published version",
242
- "en-GB": "Published version",
243
- fr: "Version publiée",
244
- es: "Versión publicada",
245
- de: "Veröffentlichte Version",
246
- ja: "公開されたバージョン",
247
- ko: "공개된 버전",
248
- zh: "已发布版本",
249
- it: "Versione pubblicata",
250
- pt: "Versão publicada",
251
- hi: "प्रकाशित संस्करण",
252
- ar: "الإصدار المنشور",
253
- ru: "Опубликованная версия"
254
- }),
255
- description: intlayer.t({
256
- en: "The version of your dictionary that is currently published",
257
- "en-GB": "The version of your dictionary that is currently published",
258
- fr: "La version de votre dictionnaire qui est actuellement publiée",
259
- es: "La versión de su diccionario que se encuentra actualmente publicada",
260
- de: "Die Version Ihres Wörterbuchs, die derzeit veröffentlicht ist",
261
- ja: "現在公開されている辞書のバージョン",
262
- ko: "현재 공개된 사전의 버전",
263
- zh: "当前已发布的字典版本",
264
- it: "La versione del tuo dizionario che è attualmente pubblicata",
265
- pt: "A versão do seu dicionário que está atualmente publicada",
266
- hi: "वर्तमान प्रकाशित करने वाले शब्दकोश की संस्करण",
267
- ar: "إصدار القاموس الخاص بك الذي يتم نشره حاليا",
268
- ru: "Версия словаря, которая в настоящее время опубликована"
269
- }),
270
- placeholder: intlayer.t({
271
- en: "Select the version to publish",
272
- "en-GB": "Select the version to publish",
273
- fr: "Sélectionnez la version à publier",
274
- es: "Seleccione la versión para publicar",
275
- de: "Wählen Sie die Version zum Veröffentlichen aus",
276
- ja: "公開するバージョンを選択してください",
277
- ko: "공개할 버전을 선택하세요",
278
- zh: "选择要发布的版本",
279
- it: "Seleziona la versione da pubblicare",
280
- pt: "Selecione a versão para publicar",
281
- hi: "प्रकाशित करने के लिए संस्करण चुनें",
282
- ar: "اختر الإصدار للنشر",
283
- ru: "Выберите версию для публикации"
284
- })
285
- },
286
- saveButton: {
287
- text: intlayer.t({
288
- en: "Save changes",
289
- "en-GB": "Save changes",
290
- fr: "Enregistrer les modifications",
291
- es: "Guardar cambios",
292
- de: "Änderungen speichern",
293
- ja: "変更を保存",
294
- ko: "변경 사항 저장",
295
- zh: "保存更改",
296
- it: "Salva le modifiche",
297
- pt: "Salvar alterações",
298
- hi: "परिवर्तन सहेजें",
299
- ar: "احفظ التغييرات",
300
- ru: "Сохранить изменения"
301
- }),
302
- label: intlayer.t({
303
- en: "Click to save changes",
304
- "en-GB": "Click to save changes",
305
- fr: "Cliquez pour enregistrer les modifications",
306
- es: "Haga clic para guardar los cambios",
307
- de: "Klicken Sie, um die Änderungen zu speichern",
308
- ja: "変更を保存するにはクリックしてください",
309
- ko: "변경 사항을 저장하려면 클릭하세요",
310
- zh: "单击以保存更改",
311
- it: "Fai clic per salvare le modifiche",
312
- pt: "Clique para salvar as alterações",
313
- hi: "परिवर्तन सहेजने के लिए क्लिक करें",
314
- ar: "انقر لحفظ التغييرات",
315
- ru: "Нажмите, чтобы сохранить изменения"
316
- })
317
- },
318
- publishButton: {
319
- text: intlayer.t({
320
- en: "Publish dictionary",
321
- "en-GB": "Publish dictionary",
322
- fr: "Publier le dictionnaire",
323
- es: "Publicar diccionario",
324
- de: "Wörterbuch veröffentlichen",
325
- ja: "辞書を公開",
326
- ko: "사전을 게시",
327
- zh: "发布字典",
328
- it: "Pubblica il dizionario",
329
- pt: "Publicar dicionário",
330
- hi: "शब्दकोश प्रकाशित करें",
331
- ar: "انشر القاموس",
332
- ru: "Опубликовать словарь"
333
- }),
334
- label: intlayer.t({
335
- en: "Click to publish dictionary",
336
- "en-GB": "Click to publish dictionary",
337
- fr: "Cliquez pour publier le dictionnaire",
338
- es: "Haga clic para publicar el diccionario",
339
- de: "Klicken Sie, um das Wörterbuch zu veröffentlichen",
340
- ja: "辞書を公開するにはクリックしてください",
341
- ko: "사전을 게시하려면 클릭하세요",
342
- zh: "单击以发布字典",
343
- it: "Fai clic per pubblicare il dizionario",
344
- pt: "Clique para publicar o dicionário",
345
- hi: "शब्दकोश प्रकाशित करने के लिए क्लिक करें",
346
- ar: "انقر لنشر القاموس",
347
- ru: "Нажмите, чтобы опубликовать словарь"
348
- })
349
- },
350
239
  auditButton: {
351
240
  label: intlayer.t({
352
241
  en: "Audit",
@@ -378,38 +267,6 @@ const dictionaryDetailsContent = {
378
267
  ar: "التدقيق",
379
268
  ru: "Отслеживание"
380
269
  })
381
- },
382
- downloadButton: {
383
- text: intlayer.t({
384
- en: "Download",
385
- "en-GB": "Download",
386
- fr: "Télécharger",
387
- es: "Descargar",
388
- de: "Herunterladen",
389
- ja: "ダウンロード",
390
- ko: "다운로드",
391
- zh: "下载",
392
- it: "Scarica",
393
- pt: "Baixar",
394
- hi: "डाउनलोड",
395
- ar: "تنزيل",
396
- ru: "Скачать"
397
- }),
398
- label: intlayer.t({
399
- en: "Click to download",
400
- "en-GB": "Click to download",
401
- fr: "Cliquez pour télécharger",
402
- es: "Haga clic para descargar",
403
- de: "Klicken Sie, um herunterzuladen",
404
- ja: "ダウンロードするにはクリックしてください",
405
- ko: "다운로드를 클릭하세요",
406
- zh: "单击下载",
407
- it: "Fai clic per scaricare",
408
- pt: "Clique para baixar",
409
- hi: "डाउनलोड करने के लिए क्लिक करें",
410
- ar: "انقر لتنزيل",
411
- ru: "Нажмите, чтобы скачать"
412
- })
413
270
  }
414
271
  }
415
272
  };