@strapi/content-manager 5.38.1 → 5.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/hooks/useDocument.js +21 -5
- package/dist/admin/hooks/useDocument.js.map +1 -1
- package/dist/admin/hooks/useDocument.mjs +22 -6
- package/dist/admin/hooks/useDocument.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.js +1 -0
- package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.mjs +3 -2
- package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs +4 -4
- package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +71 -44
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +54 -46
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +107 -88
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +109 -90
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +91 -106
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +94 -109
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js +43 -23
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs +45 -25
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +30 -19
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +34 -23
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.mjs +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.js +23 -3
- package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.mjs +4 -3
- package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/Header.js +3 -0
- package/dist/admin/pages/EditView/components/Header.js.map +1 -1
- package/dist/admin/pages/EditView/components/Header.mjs +3 -0
- package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/InputRenderer.js +19 -7
- package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
- package/dist/admin/pages/EditView/components/InputRenderer.mjs +20 -8
- package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +11 -15
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +11 -16
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/Component/NonRepeatable.d.ts +3 -2
- package/dist/admin/src/pages/EditView/components/FormInputs/Component/Repeatable.d.ts +3 -2
- package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.d.ts +3 -3
- package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +1 -1
- package/dist/admin/src/pages/ListView/components/BulkActions/PublishAction.d.ts +3 -0
- package/dist/admin/src/pages/ListView/components/Filters.d.ts +3 -0
- package/dist/server/services/utils/draft.js +8 -1
- package/dist/server/services/utils/draft.js.map +1 -1
- package/dist/server/services/utils/draft.mjs +8 -1
- package/dist/server/services/utils/draft.mjs.map +1 -1
- package/dist/server/services/utils/populate.js +16 -1
- package/dist/server/services/utils/populate.js.map +1 -1
- package/dist/server/services/utils/populate.mjs +16 -1
- package/dist/server/services/utils/populate.mjs.map +1 -1
- package/dist/server/src/services/utils/draft.d.ts.map +1 -1
- package/dist/server/src/services/utils/populate.d.ts.map +1 -1
- package/package.json +6 -6
|
@@ -1,23 +1,40 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var React = require('react');
|
|
4
5
|
var strapiAdmin = require('@strapi/admin/strapi-admin');
|
|
5
6
|
var designSystem = require('@strapi/design-system');
|
|
6
7
|
var reactIntl = require('react-intl');
|
|
7
|
-
var
|
|
8
|
+
var objects = require('../../../../../utils/objects.js');
|
|
8
9
|
var FormLayout = require('../../FormLayout.js');
|
|
9
10
|
var ComponentContext = require('../ComponentContext.js');
|
|
10
11
|
|
|
12
|
+
function _interopNamespaceDefault(e) {
|
|
13
|
+
var n = Object.create(null);
|
|
14
|
+
if (e) {
|
|
15
|
+
Object.keys(e).forEach(function (k) {
|
|
16
|
+
if (k !== 'default') {
|
|
17
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
18
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () { return e[k]; }
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
n.default = e;
|
|
26
|
+
return Object.freeze(n);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
30
|
+
|
|
11
31
|
const NonRepeatableComponent = ({ attribute, name, children, layout })=>{
|
|
12
|
-
const
|
|
13
|
-
const { value } = strapiAdmin.useField(name);
|
|
32
|
+
const componentId = strapiAdmin.useForm('NonRepeatableComponent', (state)=>objects.getIn(state.values, `${name}.id`));
|
|
14
33
|
const level = ComponentContext.useComponent('NonRepeatableComponent', (state)=>state.level);
|
|
15
34
|
const isNested = level > 0;
|
|
16
|
-
const { currentDocument } = useDocumentContext.useDocumentContext('NonRepeatableComponent');
|
|
17
|
-
strapiAdmin.createRulesEngine();
|
|
18
35
|
const isMobile = strapiAdmin.useIsMobile();
|
|
19
36
|
return /*#__PURE__*/ jsxRuntime.jsx(ComponentContext.ComponentProvider, {
|
|
20
|
-
id:
|
|
37
|
+
id: componentId,
|
|
21
38
|
uid: attribute.component,
|
|
22
39
|
level: level + 1,
|
|
23
40
|
type: "component",
|
|
@@ -29,47 +46,57 @@ const NonRepeatableComponent = ({ attribute, name, children, layout })=>{
|
|
|
29
46
|
},
|
|
30
47
|
hasRadius: isNested,
|
|
31
48
|
borderColor: isNested || isMobile ? 'neutral200' : undefined,
|
|
32
|
-
children: /*#__PURE__*/ jsxRuntime.jsx(
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
children:
|
|
37
|
-
return /*#__PURE__*/ jsxRuntime.jsx(FormLayout.ResponsiveGridRoot, {
|
|
38
|
-
gap: {
|
|
39
|
-
initial: 3,
|
|
40
|
-
medium: 4
|
|
41
|
-
},
|
|
42
|
-
children: row.map(({ size, ...field })=>{
|
|
43
|
-
/**
|
|
44
|
-
* Layouts are built from schemas so they don't understand the complete
|
|
45
|
-
* schema tree, for components we append the parent name to the field name
|
|
46
|
-
* because this is the structure for the data & permissions also understand
|
|
47
|
-
* the nesting involved.
|
|
48
|
-
*/ const completeFieldName = `${name}.${field.name}`;
|
|
49
|
-
const translatedLabel = formatMessage({
|
|
50
|
-
id: `content-manager.components.${attribute.component}.${field.name}`,
|
|
51
|
-
defaultMessage: field.label
|
|
52
|
-
});
|
|
53
|
-
return /*#__PURE__*/ jsxRuntime.jsx(FormLayout.ResponsiveGridItem, {
|
|
54
|
-
col: size,
|
|
55
|
-
s: 12,
|
|
56
|
-
xs: 12,
|
|
57
|
-
direction: "column",
|
|
58
|
-
alignItems: "stretch",
|
|
59
|
-
children: children({
|
|
60
|
-
...field,
|
|
61
|
-
label: translatedLabel,
|
|
62
|
-
name: completeFieldName,
|
|
63
|
-
document: currentDocument
|
|
64
|
-
})
|
|
65
|
-
}, completeFieldName);
|
|
66
|
-
})
|
|
67
|
-
}, index);
|
|
68
|
-
})
|
|
49
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(NonRepeatableComponentFields, {
|
|
50
|
+
attribute: attribute,
|
|
51
|
+
name: name,
|
|
52
|
+
layout: layout,
|
|
53
|
+
children: children
|
|
69
54
|
})
|
|
70
55
|
})
|
|
71
56
|
});
|
|
72
57
|
};
|
|
58
|
+
const NonRepeatableComponentFields = /*#__PURE__*/ React__namespace.memo(({ attribute, children, layout, name })=>{
|
|
59
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
60
|
+
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
61
|
+
direction: "column",
|
|
62
|
+
alignItems: "stretch",
|
|
63
|
+
gap: 6,
|
|
64
|
+
children: layout.map((row, index)=>{
|
|
65
|
+
return /*#__PURE__*/ jsxRuntime.jsx(FormLayout.ResponsiveGridRoot, {
|
|
66
|
+
gap: {
|
|
67
|
+
initial: 3,
|
|
68
|
+
medium: 4
|
|
69
|
+
},
|
|
70
|
+
children: row.map(({ size, ...field })=>{
|
|
71
|
+
/**
|
|
72
|
+
* Layouts are built from schemas so they don't understand the complete
|
|
73
|
+
* schema tree, for components we append the parent name to the field name
|
|
74
|
+
* because this is the structure for the data & permissions also understand
|
|
75
|
+
* the nesting involved.
|
|
76
|
+
*/ const completeFieldName = `${name}.${field.name}`;
|
|
77
|
+
const translatedLabel = formatMessage({
|
|
78
|
+
id: `content-manager.components.${attribute.component}.${field.name}`,
|
|
79
|
+
defaultMessage: field.label
|
|
80
|
+
});
|
|
81
|
+
return /*#__PURE__*/ jsxRuntime.jsx(FormLayout.ResponsiveGridItem, {
|
|
82
|
+
col: size,
|
|
83
|
+
s: 12,
|
|
84
|
+
xs: 12,
|
|
85
|
+
direction: "column",
|
|
86
|
+
alignItems: "stretch",
|
|
87
|
+
children: children({
|
|
88
|
+
...field,
|
|
89
|
+
label: translatedLabel,
|
|
90
|
+
name: completeFieldName
|
|
91
|
+
})
|
|
92
|
+
}, completeFieldName);
|
|
93
|
+
})
|
|
94
|
+
}, index);
|
|
95
|
+
})
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
NonRepeatableComponentFields.displayName = 'NonRepeatableComponentFields';
|
|
99
|
+
const MemoizedNonRepeatableComponent = /*#__PURE__*/ React__namespace.memo(NonRepeatableComponent);
|
|
73
100
|
|
|
74
|
-
exports.NonRepeatableComponent =
|
|
101
|
+
exports.NonRepeatableComponent = MemoizedNonRepeatableComponent;
|
|
75
102
|
//# sourceMappingURL=NonRepeatable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NonRepeatable.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Component/NonRepeatable.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"NonRepeatable.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Component/NonRepeatable.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useForm, useIsMobile } from '@strapi/admin/strapi-admin';\nimport { Box, Flex } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getIn } from '../../../../../utils/objects';\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { ComponentProvider, useComponent } from '../ComponentContext';\n\nimport type { ComponentInputProps } from './Input';\n\ntype NonRepeatableComponentProps = Omit<ComponentInputProps, 'required' | 'label'>;\n\nconst NonRepeatableComponent = ({\n attribute,\n name,\n children,\n layout,\n}: NonRepeatableComponentProps) => {\n const componentId = useForm(\n 'NonRepeatableComponent',\n (state) => getIn(state.values, `${name}.id`) as number | undefined\n );\n const level = useComponent('NonRepeatableComponent', (state) => state.level);\n const isNested = level > 0;\n const isMobile = useIsMobile();\n\n return (\n <ComponentProvider\n id={componentId}\n uid={attribute.component}\n level={level + 1}\n type=\"component\"\n >\n <Box\n background={'neutral100'}\n padding={{ initial: 4, medium: 6 }}\n hasRadius={isNested}\n borderColor={isNested || isMobile ? 'neutral200' : undefined}\n >\n <NonRepeatableComponentFields attribute={attribute} name={name} layout={layout}>\n {children}\n </NonRepeatableComponentFields>\n </Box>\n </ComponentProvider>\n );\n};\n\ninterface NonRepeatableComponentFieldsProps\n extends Pick<NonRepeatableComponentProps, 'attribute' | 'children' | 'layout' | 'name'> {}\n\nconst NonRepeatableComponentFields = React.memo(\n ({ attribute, children, layout, name }: NonRepeatableComponentFieldsProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {layout.map((row, index) => {\n return (\n <ResponsiveGridRoot gap={{ initial: 3, medium: 4 }} key={index}>\n {row.map(({ size, ...field }) => {\n /**\n * Layouts are built from schemas so they don't understand the complete\n * schema tree, for components we append the parent name to the field name\n * because this is the structure for the data & permissions also understand\n * the nesting involved.\n */\n const completeFieldName = `${name}.${field.name}`;\n\n const translatedLabel = formatMessage({\n id: `content-manager.components.${attribute.component}.${field.name}`,\n defaultMessage: field.label,\n });\n\n return (\n <ResponsiveGridItem\n col={size}\n key={completeFieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children({\n ...field,\n label: translatedLabel,\n name: completeFieldName,\n })}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </Flex>\n );\n }\n);\n\nNonRepeatableComponentFields.displayName = 'NonRepeatableComponentFields';\n\nconst MemoizedNonRepeatableComponent = React.memo(NonRepeatableComponent);\n\nexport { MemoizedNonRepeatableComponent as NonRepeatableComponent };\nexport type { NonRepeatableComponentProps };\n"],"names":["NonRepeatableComponent","attribute","name","children","layout","componentId","useForm","state","getIn","values","level","useComponent","isNested","isMobile","useIsMobile","_jsx","ComponentProvider","id","uid","component","type","Box","background","padding","initial","medium","hasRadius","borderColor","undefined","NonRepeatableComponentFields","React","memo","formatMessage","useIntl","Flex","direction","alignItems","gap","map","row","index","ResponsiveGridRoot","size","field","completeFieldName","translatedLabel","defaultMessage","label","ResponsiveGridItem","col","s","xs","displayName","MemoizedNonRepeatableComponent"],"mappings":"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"}
|
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { useForm, useIsMobile } from '@strapi/admin/strapi-admin';
|
|
4
|
+
import { Flex, Box } from '@strapi/design-system';
|
|
4
5
|
import { useIntl } from 'react-intl';
|
|
5
|
-
import {
|
|
6
|
+
import { getIn } from '../../../../../utils/objects.mjs';
|
|
6
7
|
import { ResponsiveGridRoot, ResponsiveGridItem } from '../../FormLayout.mjs';
|
|
7
8
|
import { useComponent, ComponentProvider } from '../ComponentContext.mjs';
|
|
8
9
|
|
|
9
10
|
const NonRepeatableComponent = ({ attribute, name, children, layout })=>{
|
|
10
|
-
const
|
|
11
|
-
const { value } = useField(name);
|
|
11
|
+
const componentId = useForm('NonRepeatableComponent', (state)=>getIn(state.values, `${name}.id`));
|
|
12
12
|
const level = useComponent('NonRepeatableComponent', (state)=>state.level);
|
|
13
13
|
const isNested = level > 0;
|
|
14
|
-
const { currentDocument } = useDocumentContext('NonRepeatableComponent');
|
|
15
|
-
createRulesEngine();
|
|
16
14
|
const isMobile = useIsMobile();
|
|
17
15
|
return /*#__PURE__*/ jsx(ComponentProvider, {
|
|
18
|
-
id:
|
|
16
|
+
id: componentId,
|
|
19
17
|
uid: attribute.component,
|
|
20
18
|
level: level + 1,
|
|
21
19
|
type: "component",
|
|
@@ -27,47 +25,57 @@ const NonRepeatableComponent = ({ attribute, name, children, layout })=>{
|
|
|
27
25
|
},
|
|
28
26
|
hasRadius: isNested,
|
|
29
27
|
borderColor: isNested || isMobile ? 'neutral200' : undefined,
|
|
30
|
-
children: /*#__PURE__*/ jsx(
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
children:
|
|
35
|
-
return /*#__PURE__*/ jsx(ResponsiveGridRoot, {
|
|
36
|
-
gap: {
|
|
37
|
-
initial: 3,
|
|
38
|
-
medium: 4
|
|
39
|
-
},
|
|
40
|
-
children: row.map(({ size, ...field })=>{
|
|
41
|
-
/**
|
|
42
|
-
* Layouts are built from schemas so they don't understand the complete
|
|
43
|
-
* schema tree, for components we append the parent name to the field name
|
|
44
|
-
* because this is the structure for the data & permissions also understand
|
|
45
|
-
* the nesting involved.
|
|
46
|
-
*/ const completeFieldName = `${name}.${field.name}`;
|
|
47
|
-
const translatedLabel = formatMessage({
|
|
48
|
-
id: `content-manager.components.${attribute.component}.${field.name}`,
|
|
49
|
-
defaultMessage: field.label
|
|
50
|
-
});
|
|
51
|
-
return /*#__PURE__*/ jsx(ResponsiveGridItem, {
|
|
52
|
-
col: size,
|
|
53
|
-
s: 12,
|
|
54
|
-
xs: 12,
|
|
55
|
-
direction: "column",
|
|
56
|
-
alignItems: "stretch",
|
|
57
|
-
children: children({
|
|
58
|
-
...field,
|
|
59
|
-
label: translatedLabel,
|
|
60
|
-
name: completeFieldName,
|
|
61
|
-
document: currentDocument
|
|
62
|
-
})
|
|
63
|
-
}, completeFieldName);
|
|
64
|
-
})
|
|
65
|
-
}, index);
|
|
66
|
-
})
|
|
28
|
+
children: /*#__PURE__*/ jsx(NonRepeatableComponentFields, {
|
|
29
|
+
attribute: attribute,
|
|
30
|
+
name: name,
|
|
31
|
+
layout: layout,
|
|
32
|
+
children: children
|
|
67
33
|
})
|
|
68
34
|
})
|
|
69
35
|
});
|
|
70
36
|
};
|
|
37
|
+
const NonRepeatableComponentFields = /*#__PURE__*/ React.memo(({ attribute, children, layout, name })=>{
|
|
38
|
+
const { formatMessage } = useIntl();
|
|
39
|
+
return /*#__PURE__*/ jsx(Flex, {
|
|
40
|
+
direction: "column",
|
|
41
|
+
alignItems: "stretch",
|
|
42
|
+
gap: 6,
|
|
43
|
+
children: layout.map((row, index)=>{
|
|
44
|
+
return /*#__PURE__*/ jsx(ResponsiveGridRoot, {
|
|
45
|
+
gap: {
|
|
46
|
+
initial: 3,
|
|
47
|
+
medium: 4
|
|
48
|
+
},
|
|
49
|
+
children: row.map(({ size, ...field })=>{
|
|
50
|
+
/**
|
|
51
|
+
* Layouts are built from schemas so they don't understand the complete
|
|
52
|
+
* schema tree, for components we append the parent name to the field name
|
|
53
|
+
* because this is the structure for the data & permissions also understand
|
|
54
|
+
* the nesting involved.
|
|
55
|
+
*/ const completeFieldName = `${name}.${field.name}`;
|
|
56
|
+
const translatedLabel = formatMessage({
|
|
57
|
+
id: `content-manager.components.${attribute.component}.${field.name}`,
|
|
58
|
+
defaultMessage: field.label
|
|
59
|
+
});
|
|
60
|
+
return /*#__PURE__*/ jsx(ResponsiveGridItem, {
|
|
61
|
+
col: size,
|
|
62
|
+
s: 12,
|
|
63
|
+
xs: 12,
|
|
64
|
+
direction: "column",
|
|
65
|
+
alignItems: "stretch",
|
|
66
|
+
children: children({
|
|
67
|
+
...field,
|
|
68
|
+
label: translatedLabel,
|
|
69
|
+
name: completeFieldName
|
|
70
|
+
})
|
|
71
|
+
}, completeFieldName);
|
|
72
|
+
})
|
|
73
|
+
}, index);
|
|
74
|
+
})
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
NonRepeatableComponentFields.displayName = 'NonRepeatableComponentFields';
|
|
78
|
+
const MemoizedNonRepeatableComponent = /*#__PURE__*/ React.memo(NonRepeatableComponent);
|
|
71
79
|
|
|
72
|
-
export { NonRepeatableComponent };
|
|
80
|
+
export { MemoizedNonRepeatableComponent as NonRepeatableComponent };
|
|
73
81
|
//# sourceMappingURL=NonRepeatable.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NonRepeatable.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Component/NonRepeatable.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"NonRepeatable.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Component/NonRepeatable.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useForm, useIsMobile } from '@strapi/admin/strapi-admin';\nimport { Box, Flex } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getIn } from '../../../../../utils/objects';\nimport { ResponsiveGridItem, ResponsiveGridRoot } from '../../FormLayout';\nimport { ComponentProvider, useComponent } from '../ComponentContext';\n\nimport type { ComponentInputProps } from './Input';\n\ntype NonRepeatableComponentProps = Omit<ComponentInputProps, 'required' | 'label'>;\n\nconst NonRepeatableComponent = ({\n attribute,\n name,\n children,\n layout,\n}: NonRepeatableComponentProps) => {\n const componentId = useForm(\n 'NonRepeatableComponent',\n (state) => getIn(state.values, `${name}.id`) as number | undefined\n );\n const level = useComponent('NonRepeatableComponent', (state) => state.level);\n const isNested = level > 0;\n const isMobile = useIsMobile();\n\n return (\n <ComponentProvider\n id={componentId}\n uid={attribute.component}\n level={level + 1}\n type=\"component\"\n >\n <Box\n background={'neutral100'}\n padding={{ initial: 4, medium: 6 }}\n hasRadius={isNested}\n borderColor={isNested || isMobile ? 'neutral200' : undefined}\n >\n <NonRepeatableComponentFields attribute={attribute} name={name} layout={layout}>\n {children}\n </NonRepeatableComponentFields>\n </Box>\n </ComponentProvider>\n );\n};\n\ninterface NonRepeatableComponentFieldsProps\n extends Pick<NonRepeatableComponentProps, 'attribute' | 'children' | 'layout' | 'name'> {}\n\nconst NonRepeatableComponentFields = React.memo(\n ({ attribute, children, layout, name }: NonRepeatableComponentFieldsProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {layout.map((row, index) => {\n return (\n <ResponsiveGridRoot gap={{ initial: 3, medium: 4 }} key={index}>\n {row.map(({ size, ...field }) => {\n /**\n * Layouts are built from schemas so they don't understand the complete\n * schema tree, for components we append the parent name to the field name\n * because this is the structure for the data & permissions also understand\n * the nesting involved.\n */\n const completeFieldName = `${name}.${field.name}`;\n\n const translatedLabel = formatMessage({\n id: `content-manager.components.${attribute.component}.${field.name}`,\n defaultMessage: field.label,\n });\n\n return (\n <ResponsiveGridItem\n col={size}\n key={completeFieldName}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {children({\n ...field,\n label: translatedLabel,\n name: completeFieldName,\n })}\n </ResponsiveGridItem>\n );\n })}\n </ResponsiveGridRoot>\n );\n })}\n </Flex>\n );\n }\n);\n\nNonRepeatableComponentFields.displayName = 'NonRepeatableComponentFields';\n\nconst MemoizedNonRepeatableComponent = React.memo(NonRepeatableComponent);\n\nexport { MemoizedNonRepeatableComponent as NonRepeatableComponent };\nexport type { NonRepeatableComponentProps };\n"],"names":["NonRepeatableComponent","attribute","name","children","layout","componentId","useForm","state","getIn","values","level","useComponent","isNested","isMobile","useIsMobile","_jsx","ComponentProvider","id","uid","component","type","Box","background","padding","initial","medium","hasRadius","borderColor","undefined","NonRepeatableComponentFields","React","memo","formatMessage","useIntl","Flex","direction","alignItems","gap","map","row","index","ResponsiveGridRoot","size","field","completeFieldName","translatedLabel","defaultMessage","label","ResponsiveGridItem","col","s","xs","displayName","MemoizedNonRepeatableComponent"],"mappings":"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"}
|