@strapi/content-manager 0.0.0-experimental.dd3311938ac827f1fa8560c8840a9a394f5896c0 → 0.0.0-experimental.e14656d3b8681880212c13260b9a2b340c182f2d
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/LICENSE +18 -3
- package/dist/_chunks/{ComponentConfigurationPage-y_7iLdmB.js → ComponentConfigurationPage-D_M8iBw5.js} +3 -3
- package/dist/_chunks/{ComponentConfigurationPage-y_7iLdmB.js.map → ComponentConfigurationPage-D_M8iBw5.js.map} +1 -1
- package/dist/_chunks/{ComponentConfigurationPage-BMajAl1u.mjs → ComponentConfigurationPage-qemkOlnj.mjs} +3 -3
- package/dist/_chunks/{ComponentConfigurationPage-BMajAl1u.mjs.map → ComponentConfigurationPage-qemkOlnj.mjs.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-CPVB8Uqc.js → EditConfigurationPage-BePwPuHy.js} +3 -3
- package/dist/_chunks/{EditConfigurationPage-CPVB8Uqc.js.map → EditConfigurationPage-BePwPuHy.js.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-CcOoD26O.mjs → EditConfigurationPage-CjUrEewK.mjs} +3 -3
- package/dist/_chunks/{EditConfigurationPage-CcOoD26O.mjs.map → EditConfigurationPage-CjUrEewK.mjs.map} +1 -1
- package/dist/_chunks/{EditViewPage-CTTDHKkQ.js → EditViewPage-B-RJeiJD.js} +57 -46
- package/dist/_chunks/EditViewPage-B-RJeiJD.js.map +1 -0
- package/dist/_chunks/{EditViewPage-DWb0DE7R.mjs → EditViewPage-De8GyU8P.mjs} +58 -47
- package/dist/_chunks/EditViewPage-De8GyU8P.mjs.map +1 -0
- package/dist/_chunks/{Field-C5Z1Ivdv.js → Field-dq8Tg1M_.js} +514 -168
- package/dist/_chunks/Field-dq8Tg1M_.js.map +1 -0
- package/dist/_chunks/{Field-DnStdvQw.mjs → Field-pb2o8uBe.mjs} +516 -170
- package/dist/_chunks/Field-pb2o8uBe.mjs.map +1 -0
- package/dist/_chunks/{Form-B81OtW-k.js → Form-DGIf4jQU.js} +38 -28
- package/dist/_chunks/Form-DGIf4jQU.js.map +1 -0
- package/dist/_chunks/{Form-DqGgE55Q.mjs → Form-DJn0Dxha.mjs} +40 -30
- package/dist/_chunks/Form-DJn0Dxha.mjs.map +1 -0
- package/dist/_chunks/{History-DS6-HCYX.mjs → History-BowL3JKP.mjs} +52 -29
- package/dist/_chunks/History-BowL3JKP.mjs.map +1 -0
- package/dist/_chunks/{History-4NbOq2dX.js → History-Dh2NEHnR.js} +51 -28
- package/dist/_chunks/History-Dh2NEHnR.js.map +1 -0
- package/dist/_chunks/{ListConfigurationPage-DQJJltko.mjs → ListConfigurationPage-BpVOB-hn.mjs} +58 -48
- package/dist/_chunks/ListConfigurationPage-BpVOB-hn.mjs.map +1 -0
- package/dist/_chunks/{ListConfigurationPage-CpfstlYY.js → ListConfigurationPage-BxYCWz9e.js} +57 -46
- package/dist/_chunks/ListConfigurationPage-BxYCWz9e.js.map +1 -0
- package/dist/_chunks/{ListViewPage-CA3I75m5.js → ListViewPage-4XsciqHZ.js} +65 -68
- package/dist/_chunks/ListViewPage-4XsciqHZ.js.map +1 -0
- package/dist/_chunks/{ListViewPage-nQrOQuVo.mjs → ListViewPage-CXFUjZQC.mjs} +67 -70
- package/dist/_chunks/ListViewPage-CXFUjZQC.mjs.map +1 -0
- package/dist/_chunks/{NoContentTypePage-Dldu-_Mx.js → NoContentTypePage-C8OpoHeU.js} +2 -2
- package/dist/_chunks/{NoContentTypePage-Dldu-_Mx.js.map → NoContentTypePage-C8OpoHeU.js.map} +1 -1
- package/dist/_chunks/{NoContentTypePage-DbnHE22g.mjs → NoContentTypePage-DuhOTp3x.mjs} +2 -2
- package/dist/_chunks/{NoContentTypePage-DbnHE22g.mjs.map → NoContentTypePage-DuhOTp3x.mjs.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-fOIkQM0v.mjs → NoPermissionsPage-DVz3mzDz.mjs} +2 -2
- package/dist/_chunks/{NoPermissionsPage-fOIkQM0v.mjs.map → NoPermissionsPage-DVz3mzDz.mjs.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-CO2MK200.js → NoPermissionsPage-y_r7DVA2.js} +2 -2
- package/dist/_chunks/{NoPermissionsPage-CO2MK200.js.map → NoPermissionsPage-y_r7DVA2.js.map} +1 -1
- package/dist/_chunks/{Relations-BDRl99Ux.mjs → Relations-CVNLrn1Y.mjs} +4 -4
- package/dist/_chunks/Relations-CVNLrn1Y.mjs.map +1 -0
- package/dist/_chunks/{Relations-DG2jnOcr.js → Relations-DPFCAa7b.js} +4 -4
- package/dist/_chunks/Relations-DPFCAa7b.js.map +1 -0
- package/dist/_chunks/{en-Ux26r5pl.mjs → en-BrCTWlZv.mjs} +5 -4
- package/dist/_chunks/{en-Ux26r5pl.mjs.map → en-BrCTWlZv.mjs.map} +1 -1
- package/dist/_chunks/{en-fbKQxLGn.js → en-uOUIxfcQ.js} +5 -4
- package/dist/_chunks/{en-fbKQxLGn.js.map → en-uOUIxfcQ.js.map} +1 -1
- package/dist/_chunks/{index-BZoNZMXL.js → index-C3fJE-1-.js} +465 -422
- package/dist/_chunks/index-C3fJE-1-.js.map +1 -0
- package/dist/_chunks/{index-Drt2DN7v.mjs → index-DiMrfcfy.mjs} +472 -429
- package/dist/_chunks/index-DiMrfcfy.mjs.map +1 -0
- package/dist/_chunks/{layout-DEYBqgF1.js → layout-C788OmNr.js} +23 -11
- package/dist/_chunks/layout-C788OmNr.js.map +1 -0
- package/dist/_chunks/{layout-BzAbmoO6.mjs → layout-ls3gxfpH.mjs} +25 -13
- package/dist/_chunks/layout-ls3gxfpH.mjs.map +1 -0
- package/dist/_chunks/{relations-D26zVRdi.mjs → relations-CLcOmGO0.mjs} +2 -2
- package/dist/_chunks/{relations-D26zVRdi.mjs.map → relations-CLcOmGO0.mjs.map} +1 -1
- package/dist/_chunks/{relations-D0eZ4VWw.js → relations-DYeotliT.js} +2 -2
- package/dist/_chunks/{relations-D0eZ4VWw.js.map → relations-DYeotliT.js.map} +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/history/index.d.ts +3 -0
- package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
- package/dist/admin/src/index.d.ts +1 -0
- package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +8 -3
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/constants.d.ts +4 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/Relations.d.ts +20 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.d.ts +2 -2
- package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.d.ts +2 -2
- package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.d.ts +12 -32
- package/dist/admin/src/pages/ListView/components/BulkActions/Actions.d.ts +3 -30
- package/dist/admin/src/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.d.ts +2 -2
- package/dist/admin/src/services/api.d.ts +1 -1
- package/dist/admin/src/services/components.d.ts +2 -2
- package/dist/admin/src/services/contentTypes.d.ts +3 -3
- package/dist/admin/src/services/documents.d.ts +16 -16
- package/dist/admin/src/services/init.d.ts +1 -1
- package/dist/admin/src/services/relations.d.ts +2 -2
- package/dist/admin/src/services/uid.d.ts +3 -3
- package/dist/admin/src/utils/validation.d.ts +4 -1
- package/dist/server/index.js +166 -108
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +167 -109
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
- package/dist/server/src/controllers/relations.d.ts.map +1 -1
- package/dist/server/src/controllers/uid.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/dimensions.d.ts +4 -2
- package/dist/server/src/controllers/validation/dimensions.d.ts.map +1 -1
- package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
- package/dist/server/src/history/services/utils.d.ts +1 -1
- package/dist/server/src/history/services/utils.d.ts.map +1 -1
- package/dist/server/src/policies/hasPermissions.d.ts.map +1 -1
- package/dist/server/src/services/document-manager.d.ts.map +1 -1
- package/dist/server/src/services/document-metadata.d.ts.map +1 -1
- package/dist/server/src/services/permission-checker.d.ts.map +1 -1
- package/dist/server/src/services/utils/populate.d.ts.map +1 -1
- package/package.json +8 -8
- package/dist/_chunks/EditViewPage-CTTDHKkQ.js.map +0 -1
- package/dist/_chunks/EditViewPage-DWb0DE7R.mjs.map +0 -1
- package/dist/_chunks/Field-C5Z1Ivdv.js.map +0 -1
- package/dist/_chunks/Field-DnStdvQw.mjs.map +0 -1
- package/dist/_chunks/Form-B81OtW-k.js.map +0 -1
- package/dist/_chunks/Form-DqGgE55Q.mjs.map +0 -1
- package/dist/_chunks/History-4NbOq2dX.js.map +0 -1
- package/dist/_chunks/History-DS6-HCYX.mjs.map +0 -1
- package/dist/_chunks/ListConfigurationPage-CpfstlYY.js.map +0 -1
- package/dist/_chunks/ListConfigurationPage-DQJJltko.mjs.map +0 -1
- package/dist/_chunks/ListViewPage-CA3I75m5.js.map +0 -1
- package/dist/_chunks/ListViewPage-nQrOQuVo.mjs.map +0 -1
- package/dist/_chunks/Relations-BDRl99Ux.mjs.map +0 -1
- package/dist/_chunks/Relations-DG2jnOcr.js.map +0 -1
- package/dist/_chunks/index-BZoNZMXL.js.map +0 -1
- package/dist/_chunks/index-Drt2DN7v.mjs.map +0 -1
- package/dist/_chunks/layout-BzAbmoO6.mjs.map +0 -1
- package/dist/_chunks/layout-DEYBqgF1.js.map +0 -1
@@ -2,12 +2,12 @@ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
2
|
import * as React from "react";
|
3
3
|
import { useState, useEffect, useCallback, memo } from "react";
|
4
4
|
import { useStrapiApp, createContext, useField, useNotification, useForm, useAPIErrorHandler, useQueryParams, useFocusInputField, InputRenderer as InputRenderer$1 } from "@strapi/admin/strapi-admin";
|
5
|
-
import { Typography, Flex,
|
5
|
+
import { Box, SingleSelect, SingleSelectOption, Typography, Flex, BaseLink, Button, Popover, Field, Tooltip, IconButton, useComposedRefs, Portal, FocusTrap, Divider, VisuallyHidden, Grid as Grid$1, Accordion, TextButton, TextInput, IconButtonGroup, Menu, MenuItem } from "@strapi/design-system";
|
6
6
|
import pipe$1 from "lodash/fp/pipe";
|
7
7
|
import { useIntl } from "react-intl";
|
8
|
-
import { m as DOCUMENT_META_FIELDS, g as getTranslation, c as useDoc, e as contentManagerApi, d as buildValidParams, f as useDocumentRBAC,
|
8
|
+
import { m as DOCUMENT_META_FIELDS, g as getTranslation, c as useDoc, e as contentManagerApi, n as CLONE_PATH, d as buildValidParams, f as useDocumentRBAC, o as useDocLayout } from "./index-DiMrfcfy.mjs";
|
9
9
|
import { generateNKeysBetween } from "fractional-indexing";
|
10
|
-
import { u as useComponent, C as ComponentProvider, M as MemoizedRelationsField } from "./Relations-
|
10
|
+
import { u as useComponent, C as ComponentProvider, M as MemoizedRelationsField } from "./Relations-CVNLrn1Y.mjs";
|
11
11
|
import { Code, HeadingOne, HeadingTwo, HeadingThree, HeadingFour, HeadingFive, HeadingSix, Image as Image$1, NumberList, BulletList, Paragraph, Quotes, Link as Link$1, Drag, Collapse, Bold, Italic, Underline, StrikeThrough, Expand, PlusCircle, Plus, Trash, EyeStriked, CheckCircle, WarningCircle, Loader, ArrowClockwise, More } from "@strapi/icons";
|
12
12
|
import { styled, css, keyframes } from "styled-components";
|
13
13
|
import { C as ComponentIcon, a as COMPONENT_ICONS } from "./ComponentIcon-u4bIXTFY.mjs";
|
@@ -19,7 +19,7 @@ import { withHistory } from "slate-history";
|
|
19
19
|
import { useFocused, useSelected, ReactEditor, Editable, useSlate, Slate, withReact } from "slate-react";
|
20
20
|
import { p as prefixFileUrlWithBackendUrl, u as usePrev } from "./usePrev-DH6iah0A.mjs";
|
21
21
|
import * as Toolbar from "@radix-ui/react-toolbar";
|
22
|
-
import { useLocation } from "react-router-dom";
|
22
|
+
import { useLocation, useMatch } from "react-router-dom";
|
23
23
|
import CodeMirror from "codemirror5";
|
24
24
|
import sanitizeHtml from "sanitize-html";
|
25
25
|
import { getLanguage, highlight, highlightAuto } from "highlight.js";
|
@@ -160,6 +160,220 @@ const useLazyComponents = (componentUids = []) => {
|
|
160
160
|
}, []);
|
161
161
|
return { isLazyLoading: loading, lazyComponentStore, cleanup };
|
162
162
|
};
|
163
|
+
const codeLanguages = [
|
164
|
+
{
|
165
|
+
value: "asm",
|
166
|
+
label: "Assembly"
|
167
|
+
},
|
168
|
+
{
|
169
|
+
value: "bash",
|
170
|
+
label: "Bash"
|
171
|
+
},
|
172
|
+
{
|
173
|
+
value: "c",
|
174
|
+
label: "C"
|
175
|
+
},
|
176
|
+
{
|
177
|
+
value: "clojure",
|
178
|
+
label: "Clojure"
|
179
|
+
},
|
180
|
+
{
|
181
|
+
value: "cobol",
|
182
|
+
label: "COBOL"
|
183
|
+
},
|
184
|
+
{
|
185
|
+
value: "cpp",
|
186
|
+
label: "C++"
|
187
|
+
},
|
188
|
+
{
|
189
|
+
value: "csharp",
|
190
|
+
label: "C#"
|
191
|
+
},
|
192
|
+
{
|
193
|
+
value: "css",
|
194
|
+
label: "CSS"
|
195
|
+
},
|
196
|
+
{
|
197
|
+
value: "dart",
|
198
|
+
label: "Dart"
|
199
|
+
},
|
200
|
+
{
|
201
|
+
value: "dockerfile",
|
202
|
+
label: "Dockerfile"
|
203
|
+
},
|
204
|
+
{
|
205
|
+
value: "elixir",
|
206
|
+
label: "Elixir"
|
207
|
+
},
|
208
|
+
{
|
209
|
+
value: "erlang",
|
210
|
+
label: "Erlang"
|
211
|
+
},
|
212
|
+
{
|
213
|
+
value: "fortran",
|
214
|
+
label: "Fortran"
|
215
|
+
},
|
216
|
+
{
|
217
|
+
value: "fsharp",
|
218
|
+
label: "F#"
|
219
|
+
},
|
220
|
+
{
|
221
|
+
value: "go",
|
222
|
+
label: "Go"
|
223
|
+
},
|
224
|
+
{
|
225
|
+
value: "graphql",
|
226
|
+
label: "GraphQL"
|
227
|
+
},
|
228
|
+
{
|
229
|
+
value: "groovy",
|
230
|
+
label: "Groovy"
|
231
|
+
},
|
232
|
+
{
|
233
|
+
value: "haskell",
|
234
|
+
label: "Haskell"
|
235
|
+
},
|
236
|
+
{
|
237
|
+
value: "haxe",
|
238
|
+
label: "Haxe"
|
239
|
+
},
|
240
|
+
{
|
241
|
+
value: "html",
|
242
|
+
label: "HTML"
|
243
|
+
},
|
244
|
+
{
|
245
|
+
value: "ini",
|
246
|
+
label: "INI"
|
247
|
+
},
|
248
|
+
{
|
249
|
+
value: "java",
|
250
|
+
label: "Java"
|
251
|
+
},
|
252
|
+
{
|
253
|
+
value: "javascript",
|
254
|
+
label: "JavaScript"
|
255
|
+
},
|
256
|
+
{
|
257
|
+
value: "jsx",
|
258
|
+
label: "JavaScript (React)"
|
259
|
+
},
|
260
|
+
{
|
261
|
+
value: "json",
|
262
|
+
label: "JSON"
|
263
|
+
},
|
264
|
+
{
|
265
|
+
value: "julia",
|
266
|
+
label: "Julia"
|
267
|
+
},
|
268
|
+
{
|
269
|
+
value: "kotlin",
|
270
|
+
label: "Kotlin"
|
271
|
+
},
|
272
|
+
{
|
273
|
+
value: "latex",
|
274
|
+
label: "LaTeX"
|
275
|
+
},
|
276
|
+
{
|
277
|
+
value: "lua",
|
278
|
+
label: "Lua"
|
279
|
+
},
|
280
|
+
{
|
281
|
+
value: "markdown",
|
282
|
+
label: "Markdown"
|
283
|
+
},
|
284
|
+
{
|
285
|
+
value: "matlab",
|
286
|
+
label: "MATLAB"
|
287
|
+
},
|
288
|
+
{
|
289
|
+
value: "makefile",
|
290
|
+
label: "Makefile"
|
291
|
+
},
|
292
|
+
{
|
293
|
+
value: "objectivec",
|
294
|
+
label: "Objective-C"
|
295
|
+
},
|
296
|
+
{
|
297
|
+
value: "perl",
|
298
|
+
label: "Perl"
|
299
|
+
},
|
300
|
+
{
|
301
|
+
value: "php",
|
302
|
+
label: "PHP"
|
303
|
+
},
|
304
|
+
{
|
305
|
+
value: "plaintext",
|
306
|
+
label: "Plain text"
|
307
|
+
},
|
308
|
+
{
|
309
|
+
value: "powershell",
|
310
|
+
label: "PowerShell"
|
311
|
+
},
|
312
|
+
{
|
313
|
+
value: "python",
|
314
|
+
label: "Python"
|
315
|
+
},
|
316
|
+
{
|
317
|
+
value: "r",
|
318
|
+
label: "R"
|
319
|
+
},
|
320
|
+
{
|
321
|
+
value: "ruby",
|
322
|
+
label: "Ruby"
|
323
|
+
},
|
324
|
+
{
|
325
|
+
value: "rust",
|
326
|
+
label: "Rust"
|
327
|
+
},
|
328
|
+
{
|
329
|
+
value: "sas",
|
330
|
+
label: "SAS"
|
331
|
+
},
|
332
|
+
{
|
333
|
+
value: "scala",
|
334
|
+
label: "Scala"
|
335
|
+
},
|
336
|
+
{
|
337
|
+
value: "scheme",
|
338
|
+
label: "Scheme"
|
339
|
+
},
|
340
|
+
{
|
341
|
+
value: "shell",
|
342
|
+
label: "Shell"
|
343
|
+
},
|
344
|
+
{
|
345
|
+
value: "sql",
|
346
|
+
label: "SQL"
|
347
|
+
},
|
348
|
+
{
|
349
|
+
value: "stata",
|
350
|
+
label: "Stata"
|
351
|
+
},
|
352
|
+
{
|
353
|
+
value: "swift",
|
354
|
+
label: "Swift"
|
355
|
+
},
|
356
|
+
{
|
357
|
+
value: "typescript",
|
358
|
+
label: "TypeScript"
|
359
|
+
},
|
360
|
+
{
|
361
|
+
value: "tsx",
|
362
|
+
label: "TypeScript (React)"
|
363
|
+
},
|
364
|
+
{
|
365
|
+
value: "vbnet",
|
366
|
+
label: "VB.NET"
|
367
|
+
},
|
368
|
+
{
|
369
|
+
value: "xml",
|
370
|
+
label: "XML"
|
371
|
+
},
|
372
|
+
{
|
373
|
+
value: "yaml",
|
374
|
+
label: "YAML"
|
375
|
+
}
|
376
|
+
];
|
163
377
|
const baseHandleConvert = (editor, attributesToSet) => {
|
164
378
|
const [_, lastNodePath] = Editor$1.last(editor, []);
|
165
379
|
Transforms.unwrapNodes(editor, {
|
@@ -230,6 +444,7 @@ const CodeBlock = styled.pre`
|
|
230
444
|
overflow: auto;
|
231
445
|
padding: ${({ theme }) => `${theme.spaces[3]} ${theme.spaces[4]}`};
|
232
446
|
flex-shrink: 1;
|
447
|
+
|
233
448
|
& > code {
|
234
449
|
font-family: 'SF Mono', SFMono-Regular, ui-monospace, 'DejaVu Sans Mono', Menlo, Consolas,
|
235
450
|
monospace;
|
@@ -238,9 +453,61 @@ const CodeBlock = styled.pre`
|
|
238
453
|
max-width: 100%;
|
239
454
|
}
|
240
455
|
`;
|
456
|
+
const CodeEditor = (props) => {
|
457
|
+
const { editor } = useBlocksEditorContext("ImageDialog");
|
458
|
+
const editorIsFocused = useFocused();
|
459
|
+
const imageIsSelected = useSelected();
|
460
|
+
const { formatMessage } = useIntl();
|
461
|
+
const [isSelectOpen, setIsSelectOpen] = React.useState(false);
|
462
|
+
const shouldDisplayLanguageSelect = editorIsFocused && imageIsSelected || isSelectOpen;
|
463
|
+
return /* @__PURE__ */ jsxs(Box, { position: "relative", width: "100%", children: [
|
464
|
+
/* @__PURE__ */ jsx(CodeBlock, { ...props.attributes, children: /* @__PURE__ */ jsx("code", { children: props.children }) }),
|
465
|
+
shouldDisplayLanguageSelect && /* @__PURE__ */ jsx(
|
466
|
+
Box,
|
467
|
+
{
|
468
|
+
position: "absolute",
|
469
|
+
background: "neutral0",
|
470
|
+
borderColor: "neutral150",
|
471
|
+
borderStyle: "solid",
|
472
|
+
borderWidth: "0.5px",
|
473
|
+
shadow: "tableShadow",
|
474
|
+
top: "100%",
|
475
|
+
marginTop: 1,
|
476
|
+
right: 0,
|
477
|
+
padding: 1,
|
478
|
+
hasRadius: true,
|
479
|
+
children: /* @__PURE__ */ jsx(
|
480
|
+
SingleSelect,
|
481
|
+
{
|
482
|
+
onChange: (open) => {
|
483
|
+
Transforms.setNodes(
|
484
|
+
editor,
|
485
|
+
{ language: open.toString() },
|
486
|
+
{ match: (node) => !Editor$1.isEditor(node) && node.type === "code" }
|
487
|
+
);
|
488
|
+
},
|
489
|
+
value: props.element.type === "code" && props.element.language || "plaintext",
|
490
|
+
onOpenChange: (open) => {
|
491
|
+
setIsSelectOpen(open);
|
492
|
+
if (!open) {
|
493
|
+
ReactEditor.focus(editor);
|
494
|
+
}
|
495
|
+
},
|
496
|
+
onCloseAutoFocus: (e) => e.preventDefault(),
|
497
|
+
"aria-label": formatMessage({
|
498
|
+
id: "components.Blocks.blocks.code.languageLabel",
|
499
|
+
defaultMessage: "Select a language"
|
500
|
+
}),
|
501
|
+
children: codeLanguages.map(({ value, label }) => /* @__PURE__ */ jsx(SingleSelectOption, { value, children: label }, value))
|
502
|
+
}
|
503
|
+
)
|
504
|
+
}
|
505
|
+
)
|
506
|
+
] });
|
507
|
+
};
|
241
508
|
const codeBlocks = {
|
242
509
|
code: {
|
243
|
-
renderElement: (props) => /* @__PURE__ */ jsx(
|
510
|
+
renderElement: (props) => /* @__PURE__ */ jsx(CodeEditor, { ...props }),
|
244
511
|
icon: Code,
|
245
512
|
label: {
|
246
513
|
id: "components.Blocks.blocks.code",
|
@@ -249,7 +516,7 @@ const codeBlocks = {
|
|
249
516
|
matchNode: (node) => node.type === "code",
|
250
517
|
isInBlocksSelector: true,
|
251
518
|
handleConvert(editor) {
|
252
|
-
baseHandleConvert(editor, { type: "code" });
|
519
|
+
baseHandleConvert(editor, { type: "code", language: "plaintext" });
|
253
520
|
},
|
254
521
|
handleEnterKey(editor) {
|
255
522
|
pressEnterTwiceToExit(editor);
|
@@ -589,18 +856,12 @@ const LinkContent = React.forwardRef(
|
|
589
856
|
const [popoverOpen, setPopoverOpen] = React.useState(
|
590
857
|
editor.lastInsertedLinkPath ? Path.equals(path, editor.lastInsertedLinkPath) : false
|
591
858
|
);
|
592
|
-
const linkRef = React.useRef(null);
|
593
859
|
const elementText = link.children.map((child) => child.text).join("");
|
594
860
|
const [linkText, setLinkText] = React.useState(elementText);
|
595
861
|
const [linkUrl, setLinkUrl] = React.useState(link.url);
|
596
862
|
const linkInputRef = React.useRef(null);
|
597
|
-
const
|
863
|
+
const isLastInsertedLink = editor.lastInsertedLinkPath ? !Path.equals(path, editor.lastInsertedLinkPath) : true;
|
598
864
|
const [isSaveDisabled, setIsSaveDisabled] = React.useState(false);
|
599
|
-
const handleOpenEditPopover = (e) => {
|
600
|
-
e.preventDefault();
|
601
|
-
setPopoverOpen(true);
|
602
|
-
setShowRemoveButton(true);
|
603
|
-
};
|
604
865
|
const onLinkChange = (e) => {
|
605
866
|
setIsSaveDisabled(false);
|
606
867
|
setLinkUrl(e.target.value);
|
@@ -621,33 +882,33 @@ const LinkContent = React.forwardRef(
|
|
621
882
|
editLink(editor, { url: linkUrl, text: linkText });
|
622
883
|
setPopoverOpen(false);
|
623
884
|
editor.lastInsertedLinkPath = null;
|
885
|
+
ReactEditor.focus(editor);
|
624
886
|
};
|
625
|
-
const
|
626
|
-
setPopoverOpen(false);
|
887
|
+
const handleClose = () => {
|
627
888
|
if (link.url === "") {
|
628
889
|
removeLink(editor);
|
629
890
|
}
|
891
|
+
setPopoverOpen(false);
|
630
892
|
ReactEditor.focus(editor);
|
631
893
|
};
|
632
|
-
const inputNotDirty = !linkText || !linkUrl || link.url && link.url === linkUrl && elementText && elementText === linkText;
|
633
|
-
const composedRefs = useComposedRefs(linkRef, forwardedRef);
|
634
894
|
React.useEffect(() => {
|
635
895
|
if (popoverOpen)
|
636
896
|
linkInputRef.current?.focus();
|
637
897
|
}, [popoverOpen]);
|
638
|
-
|
639
|
-
|
898
|
+
const inputNotDirty = !linkText || !linkUrl || link.url && link.url === linkUrl && elementText && elementText === linkText;
|
899
|
+
return /* @__PURE__ */ jsxs(Popover.Root, { open: popoverOpen, children: [
|
900
|
+
/* @__PURE__ */ jsx(Popover.Trigger, { children: /* @__PURE__ */ jsx(
|
640
901
|
StyledBaseLink,
|
641
902
|
{
|
642
903
|
...attributes,
|
643
|
-
ref:
|
904
|
+
ref: forwardedRef,
|
644
905
|
href: link.url,
|
645
|
-
onClick:
|
906
|
+
onClick: () => setPopoverOpen(true),
|
646
907
|
color: "primary600",
|
647
908
|
children
|
648
909
|
}
|
649
|
-
),
|
650
|
-
|
910
|
+
) }),
|
911
|
+
/* @__PURE__ */ jsx(Popover.Content, { onPointerDownOutside: handleClose, children: /* @__PURE__ */ jsxs(Flex, { padding: 4, direction: "column", gap: 4, children: [
|
651
912
|
/* @__PURE__ */ jsx(Field.Root, { width: "368px", children: /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: 1, alignItems: "stretch", children: [
|
652
913
|
/* @__PURE__ */ jsx(Field.Label, { children: formatMessage({
|
653
914
|
id: "components.Blocks.popover.text",
|
@@ -693,7 +954,7 @@ const LinkContent = React.forwardRef(
|
|
693
954
|
{
|
694
955
|
variant: "danger-light",
|
695
956
|
onClick: () => removeLink(editor),
|
696
|
-
$visible:
|
957
|
+
$visible: isLastInsertedLink,
|
697
958
|
children: formatMessage({
|
698
959
|
id: "components.Blocks.popover.remove",
|
699
960
|
defaultMessage: "Remove"
|
@@ -701,11 +962,11 @@ const LinkContent = React.forwardRef(
|
|
701
962
|
}
|
702
963
|
),
|
703
964
|
/* @__PURE__ */ jsxs(Flex, { gap: 2, children: [
|
704
|
-
/* @__PURE__ */ jsx(Button, { variant: "tertiary", onClick:
|
965
|
+
/* @__PURE__ */ jsx(Button, { variant: "tertiary", onClick: handleClose, children: formatMessage({
|
705
966
|
id: "components.Blocks.popover.cancel",
|
706
967
|
defaultMessage: "Cancel"
|
707
968
|
}) }),
|
708
|
-
/* @__PURE__ */ jsx(Button, {
|
969
|
+
/* @__PURE__ */ jsx(Button, { disabled: Boolean(inputNotDirty) || isSaveDisabled, onClick: handleSave, children: formatMessage({
|
709
970
|
id: "components.Blocks.popover.save",
|
710
971
|
defaultMessage: "Save"
|
711
972
|
}) })
|
@@ -1291,6 +1552,26 @@ const ListButton = ({ block, format }) => {
|
|
1291
1552
|
}
|
1292
1553
|
return false;
|
1293
1554
|
};
|
1555
|
+
const isListDisabled = () => {
|
1556
|
+
if (disabled) {
|
1557
|
+
return true;
|
1558
|
+
}
|
1559
|
+
if (!editor.selection) {
|
1560
|
+
return false;
|
1561
|
+
}
|
1562
|
+
const anchorNodeEntry = Editor$1.above(editor, {
|
1563
|
+
at: editor.selection.anchor,
|
1564
|
+
match: (node) => !Editor$1.isEditor(node) && node.type !== "text"
|
1565
|
+
});
|
1566
|
+
const focusNodeEntry = Editor$1.above(editor, {
|
1567
|
+
at: editor.selection.focus,
|
1568
|
+
match: (node) => !Editor$1.isEditor(node) && node.type !== "text"
|
1569
|
+
});
|
1570
|
+
if (!anchorNodeEntry || !focusNodeEntry) {
|
1571
|
+
return false;
|
1572
|
+
}
|
1573
|
+
return anchorNodeEntry[0] !== focusNodeEntry[0];
|
1574
|
+
};
|
1294
1575
|
const toggleList = (format2) => {
|
1295
1576
|
let currentListEntry;
|
1296
1577
|
if (editor.selection) {
|
@@ -1324,7 +1605,7 @@ const ListButton = ({ block, format }) => {
|
|
1324
1605
|
name: format,
|
1325
1606
|
label: block.label,
|
1326
1607
|
isActive: isListActive(),
|
1327
|
-
disabled,
|
1608
|
+
disabled: isListDisabled(),
|
1328
1609
|
handleClick: () => toggleList(format)
|
1329
1610
|
}
|
1330
1611
|
);
|
@@ -1491,7 +1772,7 @@ const DragIconButton = styled(IconButton)`
|
|
1491
1772
|
}
|
1492
1773
|
svg {
|
1493
1774
|
height: auto;
|
1494
|
-
width: ${({ theme }) => theme.spaces[3]};
|
1775
|
+
min-width: ${({ theme }) => theme.spaces[3]};
|
1495
1776
|
|
1496
1777
|
path {
|
1497
1778
|
fill: ${({ theme }) => theme.colors.neutral700};
|
@@ -1608,7 +1889,7 @@ const DragAndDropElement = ({
|
|
1608
1889
|
disabled,
|
1609
1890
|
draggable: true,
|
1610
1891
|
$dragHandleTopMargin: dragHandleTopMargin,
|
1611
|
-
children: /* @__PURE__ */ jsx(Drag, { color: "
|
1892
|
+
children: /* @__PURE__ */ jsx(Drag, { color: "primary500" })
|
1612
1893
|
}
|
1613
1894
|
),
|
1614
1895
|
children
|
@@ -1932,7 +2213,7 @@ const EditorLayout$1 = ({
|
|
1932
2213
|
/* @__PURE__ */ jsx(
|
1933
2214
|
CollapseIconButton,
|
1934
2215
|
{
|
1935
|
-
|
2216
|
+
label: formatMessage({
|
1936
2217
|
id: getTranslation("components.Blocks.collapse"),
|
1937
2218
|
defaultMessage: "Collapse"
|
1938
2219
|
}),
|
@@ -2271,7 +2552,7 @@ const BlocksEditor = React.forwardRef(
|
|
2271
2552
|
!isExpandedMode && /* @__PURE__ */ jsx(
|
2272
2553
|
ExpandIconButton,
|
2273
2554
|
{
|
2274
|
-
|
2555
|
+
label: formatMessage({
|
2275
2556
|
id: getTranslation("components.Blocks.expand"),
|
2276
2557
|
defaultMessage: "Expand"
|
2277
2558
|
}),
|
@@ -2337,30 +2618,27 @@ const createDefaultForm = (contentType, components = {}) => {
|
|
2337
2618
|
const Initializer = ({ disabled, name: name2, onClick }) => {
|
2338
2619
|
const { formatMessage } = useIntl();
|
2339
2620
|
const field = useField(name2);
|
2340
|
-
return /* @__PURE__ */
|
2341
|
-
|
2342
|
-
|
2343
|
-
|
2344
|
-
|
2345
|
-
|
2346
|
-
|
2347
|
-
|
2348
|
-
|
2349
|
-
|
2350
|
-
|
2351
|
-
|
2352
|
-
|
2353
|
-
|
2354
|
-
|
2355
|
-
|
2356
|
-
|
2357
|
-
|
2358
|
-
|
2359
|
-
|
2360
|
-
|
2361
|
-
),
|
2362
|
-
field.error && /* @__PURE__ */ jsx(Typography, { textColor: "danger600", variant: "pi", children: field.error })
|
2363
|
-
] });
|
2621
|
+
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(
|
2622
|
+
Box,
|
2623
|
+
{
|
2624
|
+
tag: "button",
|
2625
|
+
background: "neutral100",
|
2626
|
+
borderColor: field.error ? "danger600" : "neutral200",
|
2627
|
+
hasRadius: true,
|
2628
|
+
disabled,
|
2629
|
+
onClick,
|
2630
|
+
paddingTop: 9,
|
2631
|
+
paddingBottom: 9,
|
2632
|
+
type: "button",
|
2633
|
+
children: /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: 2, children: [
|
2634
|
+
/* @__PURE__ */ jsx(Flex, { justifyContent: "center", children: /* @__PURE__ */ jsx(CircleIcon, {}) }),
|
2635
|
+
/* @__PURE__ */ jsx(Flex, { justifyContent: "center", children: /* @__PURE__ */ jsx(Typography, { textColor: "primary600", variant: "pi", fontWeight: "bold", children: formatMessage({
|
2636
|
+
id: getTranslation("components.empty-repeatable"),
|
2637
|
+
defaultMessage: "No entry yet. Click on the button below to add one."
|
2638
|
+
}) }) })
|
2639
|
+
] })
|
2640
|
+
}
|
2641
|
+
) });
|
2364
2642
|
};
|
2365
2643
|
const CircleIcon = styled(PlusCircle)`
|
2366
2644
|
width: 2.4rem;
|
@@ -2392,9 +2670,20 @@ const NonRepeatableComponent = ({
|
|
2392
2670
|
hasRadius: isNested,
|
2393
2671
|
borderColor: isNested ? "neutral200" : void 0,
|
2394
2672
|
children: /* @__PURE__ */ jsx(Flex, { direction: "column", alignItems: "stretch", gap: 6, children: layout.map((row, index) => {
|
2395
|
-
return /* @__PURE__ */ jsx(Grid$1, { gap: 4, children: row.map(({ size, ...field }) => {
|
2673
|
+
return /* @__PURE__ */ jsx(Grid$1.Root, { gap: 4, children: row.map(({ size, ...field }) => {
|
2396
2674
|
const completeFieldName = `${name2}.${field.name}`;
|
2397
|
-
return /* @__PURE__ */ jsx(
|
2675
|
+
return /* @__PURE__ */ jsx(
|
2676
|
+
Grid$1.Item,
|
2677
|
+
{
|
2678
|
+
col: size,
|
2679
|
+
s: 12,
|
2680
|
+
xs: 12,
|
2681
|
+
direction: "column",
|
2682
|
+
alignItems: "stretch",
|
2683
|
+
children: children({ ...field, name: completeFieldName })
|
2684
|
+
},
|
2685
|
+
completeFieldName
|
2686
|
+
);
|
2398
2687
|
}) }, index);
|
2399
2688
|
}) })
|
2400
2689
|
}
|
@@ -2570,9 +2859,20 @@ const RepeatableComponent = ({
|
|
2570
2859
|
onGrabItem: handleGrabItem,
|
2571
2860
|
__temp_key__: key,
|
2572
2861
|
children: layout.map((row, index2) => {
|
2573
|
-
return /* @__PURE__ */ jsx(Grid$1, { gap: 4, children: row.map(({ size, ...field }) => {
|
2862
|
+
return /* @__PURE__ */ jsx(Grid$1.Root, { gap: 4, children: row.map(({ size, ...field }) => {
|
2574
2863
|
const completeFieldName = `${nameWithIndex}.${field.name}`;
|
2575
|
-
return /* @__PURE__ */ jsx(
|
2864
|
+
return /* @__PURE__ */ jsx(
|
2865
|
+
Grid$1.Item,
|
2866
|
+
{
|
2867
|
+
col: size,
|
2868
|
+
s: 12,
|
2869
|
+
xs: 12,
|
2870
|
+
direction: "column",
|
2871
|
+
alignItems: "stretch",
|
2872
|
+
children: children({ ...field, name: completeFieldName })
|
2873
|
+
},
|
2874
|
+
completeFieldName
|
2875
|
+
);
|
2576
2876
|
}) }, index2);
|
2577
2877
|
})
|
2578
2878
|
}
|
@@ -2617,7 +2917,7 @@ const TextButtonCustom = styled(TextButton)`
|
|
2617
2917
|
}
|
2618
2918
|
|
2619
2919
|
@media (prefers-reduced-motion: no-preference) {
|
2620
|
-
transition: background-color 120ms ${(props) => props.theme.easings.easeOutQuad};
|
2920
|
+
transition: background-color 120ms ${(props) => props.theme.motion.easings.easeOutQuad};
|
2621
2921
|
}
|
2622
2922
|
`;
|
2623
2923
|
const Component = ({
|
@@ -2667,7 +2967,7 @@ const Component = ({
|
|
2667
2967
|
/* @__PURE__ */ jsx(
|
2668
2968
|
IconButton,
|
2669
2969
|
{
|
2670
|
-
|
2970
|
+
variant: "ghost",
|
2671
2971
|
onClick: onDeleteComponent,
|
2672
2972
|
label: formatMessage({
|
2673
2973
|
id: getTranslation("containers.Edit.delete"),
|
@@ -2680,7 +2980,7 @@ const Component = ({
|
|
2680
2980
|
IconButton,
|
2681
2981
|
{
|
2682
2982
|
ref: composedAccordionRefs,
|
2683
|
-
|
2983
|
+
variant: "ghost",
|
2684
2984
|
onClick: (e) => e.stopPropagation(),
|
2685
2985
|
"data-handler-id": handlerId,
|
2686
2986
|
label: formatMessage({
|
@@ -2750,7 +3050,7 @@ const ComponentInput = ({
|
|
2750
3050
|
id: getTranslation("components.reset-entry"),
|
2751
3051
|
defaultMessage: "Reset Entry"
|
2752
3052
|
}),
|
2753
|
-
|
3053
|
+
variant: "ghost",
|
2754
3054
|
onClick: () => {
|
2755
3055
|
field.onChange(name2, null);
|
2756
3056
|
},
|
@@ -2779,11 +3079,8 @@ const AddComponentButton = ({
|
|
2779
3079
|
onClick,
|
2780
3080
|
disabled: isDisabled,
|
2781
3081
|
background: "neutral0",
|
2782
|
-
paddingTop: 3,
|
2783
|
-
paddingBottom: 3,
|
2784
|
-
paddingLeft: 4,
|
2785
|
-
paddingRight: 4,
|
2786
3082
|
style: { cursor: isDisabled ? "not-allowed" : "pointer" },
|
3083
|
+
variant: "tertiary",
|
2787
3084
|
children: /* @__PURE__ */ jsxs(Flex, { tag: "span", gap: 2, children: [
|
2788
3085
|
/* @__PURE__ */ jsx(StyledAddIcon, { "aria-hidden": true, $isOpen: isOpen, $hasError: hasError && !isOpen }),
|
2789
3086
|
/* @__PURE__ */ jsx(
|
@@ -2812,10 +3109,11 @@ const StyledAddIcon = styled(PlusCircle)`
|
|
2812
3109
|
}
|
2813
3110
|
`;
|
2814
3111
|
const AddComponentTitle = styled(Typography)``;
|
2815
|
-
const StyledButton = styled(
|
3112
|
+
const StyledButton = styled(Button)`
|
2816
3113
|
border-radius: 26px;
|
2817
3114
|
border-color: ${({ theme }) => theme.colors.neutral150};
|
2818
3115
|
box-shadow: ${({ theme }) => theme.shadows.filterShadow};
|
3116
|
+
height: 5rem;
|
2819
3117
|
|
2820
3118
|
&:hover {
|
2821
3119
|
${AddComponentTitle} {
|
@@ -2827,7 +3125,7 @@ const StyledButton = styled(BaseButton)`
|
|
2827
3125
|
fill: ${({ theme }) => theme.colors.primary600};
|
2828
3126
|
}
|
2829
3127
|
> path {
|
2830
|
-
fill: ${({ theme }) => theme.colors.
|
3128
|
+
fill: ${({ theme }) => theme.colors.primary600};
|
2831
3129
|
}
|
2832
3130
|
}
|
2833
3131
|
}
|
@@ -2885,7 +3183,7 @@ const ComponentBox = styled(Flex)`
|
|
2885
3183
|
cursor: pointer;
|
2886
3184
|
|
2887
3185
|
@media (prefers-reduced-motion: no-preference) {
|
2888
|
-
transition: color 120ms ${(props) => props.theme.easings.easeOutQuad};
|
3186
|
+
transition: color 120ms ${(props) => props.theme.motion.easings.easeOutQuad};
|
2889
3187
|
}
|
2890
3188
|
|
2891
3189
|
&:focus,
|
@@ -3004,7 +3302,10 @@ const uidApi = contentManagerApi.injectEndpoints({
|
|
3004
3302
|
config: {
|
3005
3303
|
params
|
3006
3304
|
}
|
3007
|
-
})
|
3305
|
+
}),
|
3306
|
+
providesTags: (_res, _error, params) => [
|
3307
|
+
{ type: "UidAvailability", id: params.contentTypeUID }
|
3308
|
+
]
|
3008
3309
|
})
|
3009
3310
|
})
|
3010
3311
|
});
|
@@ -3016,8 +3317,10 @@ const UIDInput = React.forwardRef(
|
|
3016
3317
|
const allFormValues = useForm("InputUID", (form) => form.values);
|
3017
3318
|
const [availability, setAvailability] = React.useState();
|
3018
3319
|
const [showRegenerate, setShowRegenerate] = React.useState(false);
|
3320
|
+
const isCloning = useMatch(CLONE_PATH) !== null;
|
3019
3321
|
const field = useField(name2);
|
3020
3322
|
const debouncedValue = useDebounce(field.value, 300);
|
3323
|
+
const hasChanged = debouncedValue !== field.initialValue;
|
3021
3324
|
const { toggleNotification } = useNotification();
|
3022
3325
|
const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();
|
3023
3326
|
const { formatMessage } = useIntl();
|
@@ -3093,8 +3396,9 @@ const UIDInput = React.forwardRef(
|
|
3093
3396
|
params
|
3094
3397
|
},
|
3095
3398
|
{
|
3399
|
+
// Don't check availability if the value is empty or wasn't changed
|
3096
3400
|
skip: !Boolean(
|
3097
|
-
|
3401
|
+
(hasChanged || isCloning) && debouncedValue && UID_REGEX.test(debouncedValue.trim())
|
3098
3402
|
)
|
3099
3403
|
}
|
3100
3404
|
);
|
@@ -3123,6 +3427,7 @@ const UIDInput = React.forwardRef(
|
|
3123
3427
|
const isLoading = isGeneratingDefaultUID || isGeneratingUID || isCheckingAvailability;
|
3124
3428
|
const fieldRef = useFocusInputField(name2);
|
3125
3429
|
const composedRefs = useComposedRefs(ref, fieldRef);
|
3430
|
+
const shouldShowAvailability = (hasChanged || isCloning) && debouncedValue != null && availability && !showRegenerate;
|
3126
3431
|
return /* @__PURE__ */ jsxs(Field.Root, { hint, name: name2, error: field.error, required, children: [
|
3127
3432
|
/* @__PURE__ */ jsx(Field.Label, { action: labelAction, children: label }),
|
3128
3433
|
/* @__PURE__ */ jsx(
|
@@ -3131,7 +3436,7 @@ const UIDInput = React.forwardRef(
|
|
3131
3436
|
ref: composedRefs,
|
3132
3437
|
disabled: props.disabled,
|
3133
3438
|
endAction: /* @__PURE__ */ jsxs(Flex, { position: "relative", gap: 1, children: [
|
3134
|
-
|
3439
|
+
shouldShowAvailability && /* @__PURE__ */ jsxs(
|
3135
3440
|
TextValidation,
|
3136
3441
|
{
|
3137
3442
|
alignItems: "center",
|
@@ -3965,7 +4270,7 @@ const EditorLayout = ({
|
|
3965
4270
|
justifyContent: "flex-end",
|
3966
4271
|
shrink: 0,
|
3967
4272
|
width: "100%",
|
3968
|
-
children: /* @__PURE__ */ jsxs(ExpandButton$1, { onClick: onCollapse, children: [
|
4273
|
+
children: /* @__PURE__ */ jsxs(ExpandButton$1, { onClick: onCollapse, variant: "tertiary", size: "M", children: [
|
3969
4274
|
/* @__PURE__ */ jsx(Typography, { children: formatMessage({
|
3970
4275
|
id: "components.Wysiwyg.collapse",
|
3971
4276
|
defaultMessage: "Collapse"
|
@@ -3983,12 +4288,14 @@ const EditorLayout = ({
|
|
3983
4288
|
) }) });
|
3984
4289
|
}
|
3985
4290
|
return /* @__PURE__ */ jsx(
|
3986
|
-
|
4291
|
+
Flex,
|
3987
4292
|
{
|
3988
4293
|
borderColor: error ? "danger600" : "neutral200",
|
3989
4294
|
borderStyle: "solid",
|
3990
4295
|
borderWidth: "1px",
|
3991
4296
|
hasRadius: true,
|
4297
|
+
direction: "column",
|
4298
|
+
alignItems: "stretch",
|
3992
4299
|
children
|
3993
4300
|
}
|
3994
4301
|
);
|
@@ -3999,11 +4306,19 @@ const ExpandWrapper = styled(Flex)`
|
|
3999
4306
|
const BoxWithBorder = styled(Box)`
|
4000
4307
|
border-right: 1px solid ${({ theme }) => theme.colors.neutral200};
|
4001
4308
|
`;
|
4002
|
-
const ExpandButton$1 = styled(
|
4309
|
+
const ExpandButton$1 = styled(Button)`
|
4003
4310
|
background-color: transparent;
|
4004
4311
|
border: none;
|
4005
4312
|
align-items: center;
|
4006
4313
|
|
4314
|
+
& > span {
|
4315
|
+
display: flex;
|
4316
|
+
justify-content: space-between;
|
4317
|
+
align-items: center;
|
4318
|
+
width: 100%;
|
4319
|
+
font-weight: ${({ theme }) => theme.fontWeights.regular};
|
4320
|
+
}
|
4321
|
+
|
4007
4322
|
svg {
|
4008
4323
|
margin-left: ${({ theme }) => `${theme.spaces[2]}`};
|
4009
4324
|
|
@@ -4272,8 +4587,6 @@ const quoteAndCodeHandler = (editor, markdownType) => {
|
|
4272
4587
|
};
|
4273
4588
|
const CustomIconButton = styled(IconButton)`
|
4274
4589
|
padding: ${({ theme }) => theme.spaces[2]};
|
4275
|
-
/* Trick to prevent the outline from overflowing because of the general outline-offset */
|
4276
|
-
outline-offset: -2px !important;
|
4277
4590
|
|
4278
4591
|
svg {
|
4279
4592
|
width: 1.8rem;
|
@@ -4301,11 +4614,19 @@ const MoreButton = styled(IconButton)`
|
|
4301
4614
|
const IconButtonGroupMargin = styled(IconButtonGroup)`
|
4302
4615
|
margin-right: ${({ theme }) => `${theme.spaces[2]}`};
|
4303
4616
|
`;
|
4304
|
-
const ExpandButton = styled(
|
4617
|
+
const ExpandButton = styled(Button)`
|
4305
4618
|
background-color: transparent;
|
4306
4619
|
border: none;
|
4307
4620
|
align-items: center;
|
4308
4621
|
|
4622
|
+
& > span {
|
4623
|
+
display: flex;
|
4624
|
+
justify-content: space-between;
|
4625
|
+
align-items: center;
|
4626
|
+
width: 100%;
|
4627
|
+
font-weight: ${({ theme }) => theme.fontWeights.regular};
|
4628
|
+
}
|
4629
|
+
|
4309
4630
|
svg {
|
4310
4631
|
margin-left: ${({ theme }) => `${theme.spaces[2]}`};
|
4311
4632
|
path {
|
@@ -4317,8 +4638,8 @@ const ExpandButton = styled(BaseButton)`
|
|
4317
4638
|
`;
|
4318
4639
|
const WysiwygFooter = ({ onToggleExpand }) => {
|
4319
4640
|
const { formatMessage } = useIntl();
|
4320
|
-
return /* @__PURE__ */ jsx(Box, { padding: 2, background: "neutral100", borderRadius: `0 0 0.4rem 0.4rem`, children: /* @__PURE__ */ jsx(Flex, { justifyContent: "flex-end", alignItems: "flex-end", children: /* @__PURE__ */ jsxs(ExpandButton, { id: "expand", onClick: onToggleExpand, children: [
|
4321
|
-
/* @__PURE__ */ jsx(Typography, { children: formatMessage({
|
4641
|
+
return /* @__PURE__ */ jsx(Box, { padding: 2, background: "neutral100", borderRadius: `0 0 0.4rem 0.4rem`, children: /* @__PURE__ */ jsx(Flex, { justifyContent: "flex-end", alignItems: "flex-end", children: /* @__PURE__ */ jsxs(ExpandButton, { id: "expand", onClick: onToggleExpand, variant: "tertiary", size: "M", children: [
|
4642
|
+
/* @__PURE__ */ jsx(Typography, { textColor: "neutral800", children: formatMessage({
|
4322
4643
|
id: "components.WysiwygBottomControls.fullscreen",
|
4323
4644
|
defaultMessage: "Expand"
|
4324
4645
|
}) }),
|
@@ -4340,7 +4661,7 @@ const WysiwygNav = ({
|
|
4340
4661
|
id: "components.Wysiwyg.selectOptions.title",
|
4341
4662
|
defaultMessage: "Add a title"
|
4342
4663
|
});
|
4343
|
-
|
4664
|
+
React.useRef(null);
|
4344
4665
|
const handleTogglePopover = () => {
|
4345
4666
|
setVisiblePopover((prev) => !prev);
|
4346
4667
|
};
|
@@ -4354,14 +4675,23 @@ const WysiwygNav = ({
|
|
4354
4675
|
borderRadius: `0.4rem 0.4rem 0 0`,
|
4355
4676
|
children: [
|
4356
4677
|
/* @__PURE__ */ jsxs(Flex, { children: [
|
4357
|
-
/* @__PURE__ */ jsx(Field.Root, { children: /* @__PURE__ */ jsxs(
|
4358
|
-
|
4359
|
-
|
4360
|
-
|
4361
|
-
|
4362
|
-
|
4363
|
-
|
4364
|
-
|
4678
|
+
/* @__PURE__ */ jsx(Field.Root, { children: /* @__PURE__ */ jsxs(
|
4679
|
+
SingleSelect,
|
4680
|
+
{
|
4681
|
+
disabled: true,
|
4682
|
+
placeholder: selectPlaceholder,
|
4683
|
+
"aria-label": selectPlaceholder,
|
4684
|
+
size: "S",
|
4685
|
+
children: [
|
4686
|
+
/* @__PURE__ */ jsx(SingleSelectOption, { value: "h1", children: "h1" }),
|
4687
|
+
/* @__PURE__ */ jsx(SingleSelectOption, { value: "h2", children: "h2" }),
|
4688
|
+
/* @__PURE__ */ jsx(SingleSelectOption, { value: "h3", children: "h3" }),
|
4689
|
+
/* @__PURE__ */ jsx(SingleSelectOption, { value: "h4", children: "h4" }),
|
4690
|
+
/* @__PURE__ */ jsx(SingleSelectOption, { value: "h5", children: "h5" }),
|
4691
|
+
/* @__PURE__ */ jsx(SingleSelectOption, { value: "h6", children: "h6" })
|
4692
|
+
]
|
4693
|
+
}
|
4694
|
+
) }),
|
4365
4695
|
/* @__PURE__ */ jsxs(MainButtons, { children: [
|
4366
4696
|
/* @__PURE__ */ jsx(CustomIconButton, { disabled: true, label: "Bold", name: "Bold", children: /* @__PURE__ */ jsx(Bold, {}) }),
|
4367
4697
|
/* @__PURE__ */ jsx(CustomIconButton, { disabled: true, label: "Italic", name: "Italic", children: /* @__PURE__ */ jsx(Italic, {}) }),
|
@@ -4392,6 +4722,7 @@ const WysiwygNav = ({
|
|
4392
4722
|
placeholder: selectPlaceholder,
|
4393
4723
|
"aria-label": selectPlaceholder,
|
4394
4724
|
onChange: (value) => onActionClick(value, editorRef),
|
4725
|
+
size: "S",
|
4395
4726
|
children: [
|
4396
4727
|
/* @__PURE__ */ jsx(SingleSelectOption, { value: "h1", children: "h1" }),
|
4397
4728
|
/* @__PURE__ */ jsx(SingleSelectOption, { value: "h2", children: "h2" }),
|
@@ -4431,79 +4762,81 @@ const WysiwygNav = ({
|
|
4431
4762
|
}
|
4432
4763
|
)
|
4433
4764
|
] }),
|
4434
|
-
/* @__PURE__ */
|
4435
|
-
|
4436
|
-
/* @__PURE__ */ jsxs(
|
4437
|
-
/* @__PURE__ */
|
4438
|
-
|
4439
|
-
|
4440
|
-
|
4441
|
-
|
4442
|
-
|
4443
|
-
|
4444
|
-
|
4445
|
-
|
4446
|
-
|
4447
|
-
|
4448
|
-
|
4449
|
-
|
4450
|
-
|
4451
|
-
|
4452
|
-
|
4453
|
-
|
4454
|
-
|
4455
|
-
|
4456
|
-
|
4457
|
-
|
4458
|
-
|
4459
|
-
|
4460
|
-
|
4461
|
-
|
4462
|
-
|
4463
|
-
|
4464
|
-
|
4465
|
-
|
4466
|
-
/* @__PURE__ */
|
4467
|
-
|
4468
|
-
|
4469
|
-
|
4470
|
-
|
4471
|
-
|
4472
|
-
|
4473
|
-
|
4474
|
-
|
4475
|
-
|
4476
|
-
|
4477
|
-
|
4478
|
-
|
4479
|
-
|
4480
|
-
|
4481
|
-
|
4482
|
-
|
4483
|
-
|
4484
|
-
|
4485
|
-
|
4486
|
-
|
4487
|
-
|
4488
|
-
|
4489
|
-
|
4490
|
-
|
4491
|
-
|
4492
|
-
|
4493
|
-
|
4494
|
-
|
4495
|
-
|
4496
|
-
|
4497
|
-
|
4498
|
-
|
4499
|
-
|
4500
|
-
|
4501
|
-
|
4502
|
-
|
4503
|
-
|
4504
|
-
|
4505
|
-
|
4506
|
-
|
4765
|
+
/* @__PURE__ */ jsxs(Popover.Root, { children: [
|
4766
|
+
/* @__PURE__ */ jsx(Popover.Trigger, { children: /* @__PURE__ */ jsx(MoreButton, { label: "More", children: /* @__PURE__ */ jsx(More, {}) }) }),
|
4767
|
+
/* @__PURE__ */ jsx(Popover.Content, { sideOffset: 12, children: /* @__PURE__ */ jsxs(Flex, { padding: 2, children: [
|
4768
|
+
/* @__PURE__ */ jsxs(IconButtonGroupMargin, { children: [
|
4769
|
+
/* @__PURE__ */ jsx(
|
4770
|
+
CustomIconButton,
|
4771
|
+
{
|
4772
|
+
onClick: () => onActionClick("Strikethrough", editorRef, handleTogglePopover),
|
4773
|
+
label: "Strikethrough",
|
4774
|
+
name: "Strikethrough",
|
4775
|
+
children: /* @__PURE__ */ jsx(StrikeThrough, {})
|
4776
|
+
}
|
4777
|
+
),
|
4778
|
+
/* @__PURE__ */ jsx(
|
4779
|
+
CustomIconButton,
|
4780
|
+
{
|
4781
|
+
onClick: () => onActionClick("BulletList", editorRef, handleTogglePopover),
|
4782
|
+
label: "BulletList",
|
4783
|
+
name: "BulletList",
|
4784
|
+
children: /* @__PURE__ */ jsx(BulletList, {})
|
4785
|
+
}
|
4786
|
+
),
|
4787
|
+
/* @__PURE__ */ jsx(
|
4788
|
+
CustomIconButton,
|
4789
|
+
{
|
4790
|
+
onClick: () => onActionClick("NumberList", editorRef, handleTogglePopover),
|
4791
|
+
label: "NumberList",
|
4792
|
+
name: "NumberList",
|
4793
|
+
children: /* @__PURE__ */ jsx(NumberList, {})
|
4794
|
+
}
|
4795
|
+
)
|
4796
|
+
] }),
|
4797
|
+
/* @__PURE__ */ jsxs(IconButtonGroup, { children: [
|
4798
|
+
/* @__PURE__ */ jsx(
|
4799
|
+
CustomIconButton,
|
4800
|
+
{
|
4801
|
+
onClick: () => onActionClick("Code", editorRef, handleTogglePopover),
|
4802
|
+
label: "Code",
|
4803
|
+
name: "Code",
|
4804
|
+
children: /* @__PURE__ */ jsx(Code, {})
|
4805
|
+
}
|
4806
|
+
),
|
4807
|
+
/* @__PURE__ */ jsx(
|
4808
|
+
CustomIconButton,
|
4809
|
+
{
|
4810
|
+
onClick: () => {
|
4811
|
+
handleTogglePopover();
|
4812
|
+
onToggleMediaLib();
|
4813
|
+
},
|
4814
|
+
label: "Image",
|
4815
|
+
name: "Image",
|
4816
|
+
children: /* @__PURE__ */ jsx(Image$1, {})
|
4817
|
+
}
|
4818
|
+
),
|
4819
|
+
/* @__PURE__ */ jsx(
|
4820
|
+
CustomLinkIconButton,
|
4821
|
+
{
|
4822
|
+
onClick: () => onActionClick("Link", editorRef, handleTogglePopover),
|
4823
|
+
label: "Link",
|
4824
|
+
name: "Link",
|
4825
|
+
children: /* @__PURE__ */ jsx(Link$1, {})
|
4826
|
+
}
|
4827
|
+
),
|
4828
|
+
/* @__PURE__ */ jsx(
|
4829
|
+
CustomIconButton,
|
4830
|
+
{
|
4831
|
+
onClick: () => onActionClick("Quote", editorRef, handleTogglePopover),
|
4832
|
+
label: "Quote",
|
4833
|
+
name: "Quote",
|
4834
|
+
children: /* @__PURE__ */ jsx(Quotes, {})
|
4835
|
+
}
|
4836
|
+
)
|
4837
|
+
] })
|
4838
|
+
] }) })
|
4839
|
+
] })
|
4507
4840
|
] }),
|
4508
4841
|
onTogglePreviewMode && /* @__PURE__ */ jsx(Button, { onClick: onTogglePreviewMode, variant: "tertiary", children: formatMessage({
|
4509
4842
|
id: "components.Wysiwyg.ToggleMode.preview-mode",
|
@@ -4729,7 +5062,9 @@ const useFieldHint = (hint = void 0, attribute) => {
|
|
4729
5062
|
if (!maximum && !minimum) {
|
4730
5063
|
return hint;
|
4731
5064
|
}
|
4732
|
-
const units = !["biginteger", "integer", "number"].includes(
|
5065
|
+
const units = !["biginteger", "integer", "number", "dynamiczone", "component"].includes(
|
5066
|
+
attribute.type
|
5067
|
+
) ? formatMessage(
|
4733
5068
|
{
|
4734
5069
|
id: "content-manager.form.Input.hint.character.unit",
|
4735
5070
|
defaultMessage: "{maxValue, plural, one { character} other { characters}}"
|
@@ -4823,7 +5158,7 @@ const DynamicComponent = ({
|
|
4823
5158
|
/* @__PURE__ */ jsx(
|
4824
5159
|
IconButton,
|
4825
5160
|
{
|
4826
|
-
|
5161
|
+
variant: "ghost",
|
4827
5162
|
label: formatMessage(
|
4828
5163
|
{
|
4829
5164
|
id: getTranslation("components.DynamicZone.delete-label"),
|
@@ -4838,7 +5173,7 @@ const DynamicComponent = ({
|
|
4838
5173
|
/* @__PURE__ */ jsx(
|
4839
5174
|
IconButton,
|
4840
5175
|
{
|
4841
|
-
|
5176
|
+
variant: "ghost",
|
4842
5177
|
onClick: (e) => e.stopPropagation(),
|
4843
5178
|
"data-handler-id": handlerId,
|
4844
5179
|
ref: dragRef,
|
@@ -4897,9 +5232,20 @@ const DynamicComponent = ({
|
|
4897
5232
|
),
|
4898
5233
|
/* @__PURE__ */ jsx(Accordion.Actions, { children: accordionActions })
|
4899
5234
|
] }),
|
4900
|
-
/* @__PURE__ */ jsx(Accordion.Content, { children: /* @__PURE__ */ jsx(AccordionContentRadius, { background: "neutral0", children: /* @__PURE__ */ jsx(Box, { paddingLeft: 6, paddingRight: 6, paddingTop: 6, paddingBottom: 6, children: components[componentUid]?.layout?.map((row, rowInd) => /* @__PURE__ */ jsx(Grid$1, { gap: 4, children: row.map(({ size, ...field }) => {
|
5235
|
+
/* @__PURE__ */ jsx(Accordion.Content, { children: /* @__PURE__ */ jsx(AccordionContentRadius, { background: "neutral0", children: /* @__PURE__ */ jsx(Box, { paddingLeft: 6, paddingRight: 6, paddingTop: 6, paddingBottom: 6, children: components[componentUid]?.layout?.map((row, rowInd) => /* @__PURE__ */ jsx(Grid$1.Root, { gap: 4, children: row.map(({ size, ...field }) => {
|
4901
5236
|
const fieldName = `${name2}.${index}.${field.name}`;
|
4902
|
-
return /* @__PURE__ */ jsx(
|
5237
|
+
return /* @__PURE__ */ jsx(
|
5238
|
+
Grid$1.Item,
|
5239
|
+
{
|
5240
|
+
col: size,
|
5241
|
+
s: 12,
|
5242
|
+
xs: 12,
|
5243
|
+
direction: "column",
|
5244
|
+
alignItems: "stretch",
|
5245
|
+
children: /* @__PURE__ */ jsx(MemoizedInputRenderer, { ...field, name: fieldName })
|
5246
|
+
},
|
5247
|
+
fieldName
|
5248
|
+
);
|
4903
5249
|
}) }, rowInd)) }) }) })
|
4904
5250
|
] }) }) })
|
4905
5251
|
] });
|
@@ -5092,7 +5438,7 @@ const DynamicZone = ({
|
|
5092
5438
|
const handleRemoveComponent = (name22, currentIndex) => () => {
|
5093
5439
|
removeFieldRow(name22, currentIndex);
|
5094
5440
|
};
|
5095
|
-
const hasError = error !== void 0
|
5441
|
+
const hasError = error !== void 0;
|
5096
5442
|
const renderButtonLabel = () => {
|
5097
5443
|
if (addComponentIsOpen) {
|
5098
5444
|
return formatMessage({ id: "app.utils.close-label", defaultMessage: "Close" });
|
@@ -5208,4 +5554,4 @@ export {
|
|
5208
5554
|
transformDocument as t,
|
5209
5555
|
useLazyComponents as u
|
5210
5556
|
};
|
5211
|
-
//# sourceMappingURL=Field-
|
5557
|
+
//# sourceMappingURL=Field-pb2o8uBe.mjs.map
|