@strapi/content-manager 5.33.4 → 5.35.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/components/ActionsDrawer.js +204 -0
- package/dist/admin/components/ActionsDrawer.js.map +1 -0
- package/dist/admin/components/ActionsDrawer.mjs +183 -0
- package/dist/admin/components/ActionsDrawer.mjs.map +1 -0
- package/dist/admin/components/LeftMenu.js +13 -8
- package/dist/admin/components/LeftMenu.js.map +1 -1
- package/dist/admin/components/LeftMenu.mjs +13 -8
- package/dist/admin/components/LeftMenu.mjs.map +1 -1
- package/dist/admin/history/components/VersionContent.js +22 -9
- package/dist/admin/history/components/VersionContent.js.map +1 -1
- package/dist/admin/history/components/VersionContent.mjs +23 -10
- package/dist/admin/history/components/VersionContent.mjs.map +1 -1
- package/dist/admin/history/components/VersionHeader.js +1 -0
- package/dist/admin/history/components/VersionHeader.js.map +1 -1
- package/dist/admin/history/components/VersionHeader.mjs +1 -0
- package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.js +92 -63
- package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.mjs +95 -66
- package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.js +64 -48
- package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.mjs +67 -51
- package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/EditorToolbarObserver.js +63 -31
- package/dist/admin/pages/EditView/components/EditorToolbarObserver.js.map +1 -1
- package/dist/admin/pages/EditView/components/EditorToolbarObserver.mjs +64 -32
- package/dist/admin/pages/EditView/components/EditorToolbarObserver.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.js +30 -6
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.mjs +30 -6
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js +20 -5
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs +20 -5
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +22 -12
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +22 -12
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +6 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +7 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +151 -10
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +152 -11
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.js +52 -5
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs +53 -6
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +6 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +6 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +1 -0
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +1 -0
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.js +21 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.mjs +24 -4
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js +21 -9
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.mjs +21 -9
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.js +4 -0
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.mjs +4 -0
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +30 -13
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +32 -16
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/Header.js +91 -44
- package/dist/admin/pages/EditView/components/Header.js.map +1 -1
- package/dist/admin/pages/EditView/components/Header.mjs +92 -45
- package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/Panels.js +67 -15
- package/dist/admin/pages/EditView/components/Panels.js.map +1 -1
- package/dist/admin/pages/EditView/components/Panels.mjs +67 -18
- package/dist/admin/pages/EditView/components/Panels.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.js +8 -6
- package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.mjs +8 -6
- package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
- package/dist/admin/preview/index.js +9 -3
- package/dist/admin/preview/index.js.map +1 -1
- package/dist/admin/preview/index.mjs +9 -3
- package/dist/admin/preview/index.mjs.map +1 -1
- package/dist/admin/src/components/ActionsDrawer.d.ts +19 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.d.ts +7 -2
- package/dist/admin/src/pages/EditView/components/Panels.d.ts +14 -2
- package/dist/admin/translations/de.json.js +165 -32
- package/dist/admin/translations/de.json.js.map +1 -1
- package/dist/admin/translations/de.json.mjs +165 -32
- package/dist/admin/translations/de.json.mjs.map +1 -1
- package/dist/admin/translations/en.json.js +5 -1
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +5 -1
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/translations/es.json.js +3 -1
- package/dist/admin/translations/es.json.js.map +1 -1
- package/dist/admin/translations/es.json.mjs +3 -1
- package/dist/admin/translations/es.json.mjs.map +1 -1
- package/dist/admin/translations/fr.json.js +3 -1
- package/dist/admin/translations/fr.json.js.map +1 -1
- package/dist/admin/translations/fr.json.mjs +3 -1
- package/dist/admin/translations/fr.json.mjs.map +1 -1
- package/dist/admin/translations/zh-Hans.json.js +0 -44
- package/dist/admin/translations/zh-Hans.json.js.map +1 -1
- package/dist/admin/translations/zh-Hans.json.mjs +0 -44
- package/dist/admin/translations/zh-Hans.json.mjs.map +1 -1
- package/dist/server/controllers/collection-types.js +16 -13
- package/dist/server/controllers/collection-types.js.map +1 -1
- package/dist/server/controllers/collection-types.mjs +16 -13
- package/dist/server/controllers/collection-types.mjs.map +1 -1
- package/dist/server/controllers/relations.js +5 -2
- package/dist/server/controllers/relations.js.map +1 -1
- package/dist/server/controllers/relations.mjs +5 -2
- package/dist/server/controllers/relations.mjs.map +1 -1
- package/dist/server/controllers/utils/document-status.js +28 -0
- package/dist/server/controllers/utils/document-status.js.map +1 -0
- package/dist/server/controllers/utils/document-status.mjs +26 -0
- package/dist/server/controllers/utils/document-status.mjs.map +1 -0
- package/dist/server/services/components.js +68 -20
- package/dist/server/services/components.js.map +1 -1
- package/dist/server/services/components.mjs +69 -21
- package/dist/server/services/components.mjs.map +1 -1
- package/dist/server/services/permission-checker.js +23 -0
- package/dist/server/services/permission-checker.js.map +1 -1
- package/dist/server/services/permission-checker.mjs +23 -0
- package/dist/server/services/permission-checker.mjs.map +1 -1
- package/dist/server/services/utils/store.js +51 -4
- package/dist/server/services/utils/store.js.map +1 -1
- package/dist/server/services/utils/store.mjs +51 -4
- package/dist/server/services/utils/store.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/utils/document-status.d.ts +10 -0
- package/dist/server/src/controllers/utils/document-status.d.ts.map +1 -0
- package/dist/server/src/index.d.ts +1 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/services/components.d.ts +6 -0
- package/dist/server/src/services/components.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +1 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/permission-checker.d.ts +1 -0
- package/dist/server/src/services/permission-checker.d.ts.map +1 -1
- package/dist/server/src/services/utils/store.d.ts +5 -1
- package/dist/server/src/services/utils/store.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var strapiAdmin = require('@strapi/admin/strapi-admin');
|
|
6
|
+
var designSystem = require('@strapi/design-system');
|
|
7
|
+
var Icons = require('@strapi/icons');
|
|
8
|
+
var reactIntl = require('react-intl');
|
|
9
|
+
var styledComponents = require('styled-components');
|
|
10
|
+
|
|
11
|
+
function _interopNamespaceDefault(e) {
|
|
12
|
+
var n = Object.create(null);
|
|
13
|
+
if (e) {
|
|
14
|
+
Object.keys(e).forEach(function (k) {
|
|
15
|
+
if (k !== 'default') {
|
|
16
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
17
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
18
|
+
enumerable: true,
|
|
19
|
+
get: function () { return e[k]; }
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
n.default = e;
|
|
25
|
+
return Object.freeze(n);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
29
|
+
|
|
30
|
+
const [ActionsDrawerProvider, useActionsDrawer] = strapiAdmin.createContext('ActionsDrawer', null);
|
|
31
|
+
/* -------------------------------------------------------------------------------------------------
|
|
32
|
+
* Styled Components
|
|
33
|
+
* -----------------------------------------------------------------------------------------------*/ const DrawerContainer = styledComponents.styled(designSystem.Portal)`
|
|
34
|
+
position: fixed;
|
|
35
|
+
left: 0;
|
|
36
|
+
right: 0;
|
|
37
|
+
bottom: 0;
|
|
38
|
+
z-index: 10;
|
|
39
|
+
display: flex;
|
|
40
|
+
flex-direction: column;
|
|
41
|
+
align-items: stretch;
|
|
42
|
+
justify-content: flex-end;
|
|
43
|
+
|
|
44
|
+
${({ theme })=>theme.breakpoints.medium} {
|
|
45
|
+
left: ${({ $hasSideNav })=>$hasSideNav ? strapiAdmin.WIDTH_SIDE_NAVIGATION : 0};
|
|
46
|
+
}
|
|
47
|
+
`;
|
|
48
|
+
const DrawerOverlay = styledComponents.styled(designSystem.Box)`
|
|
49
|
+
position: fixed;
|
|
50
|
+
left: 0;
|
|
51
|
+
top: 0;
|
|
52
|
+
right: 0;
|
|
53
|
+
bottom: 0;
|
|
54
|
+
background-color: rgba(0, 0, 0, 0.5);
|
|
55
|
+
transition: opacity ${(props)=>props.theme.motion.timings['200']}
|
|
56
|
+
${(props)=>props.theme.motion.easings.easeInOutQuad};
|
|
57
|
+
opacity: ${({ $isOpen })=>$isOpen ? 1 : 0};
|
|
58
|
+
pointer-events: ${({ $isOpen })=>$isOpen ? 'auto' : 'none'};
|
|
59
|
+
|
|
60
|
+
${({ theme })=>theme.breakpoints.medium} {
|
|
61
|
+
left: ${({ $hasSideNav })=>$hasSideNav ? strapiAdmin.WIDTH_SIDE_NAVIGATION : 0};
|
|
62
|
+
}
|
|
63
|
+
`;
|
|
64
|
+
const ToggleButton = styledComponents.styled(designSystem.IconButton)`
|
|
65
|
+
padding: 0;
|
|
66
|
+
border: none;
|
|
67
|
+
background: ${({ theme })=>theme.colors.neutral200};
|
|
68
|
+
width: 3.2rem;
|
|
69
|
+
height: 3.2rem;
|
|
70
|
+
border-radius: 1.6rem;
|
|
71
|
+
display: flex;
|
|
72
|
+
align-items: center;
|
|
73
|
+
justify-content: center;
|
|
74
|
+
`;
|
|
75
|
+
const DrawerContent = styledComponents.styled(designSystem.Flex)`
|
|
76
|
+
flex-direction: column;
|
|
77
|
+
align-items: stretch;
|
|
78
|
+
position: relative;
|
|
79
|
+
z-index: 1;
|
|
80
|
+
pointer-events: auto;
|
|
81
|
+
`;
|
|
82
|
+
const DrawerContentInner = styledComponents.styled(designSystem.ScrollArea)`
|
|
83
|
+
max-height: ${({ $isOpen })=>$isOpen ? 'calc(100vh - 25rem)' // 25rem is arbitrary, to be able to see a bit of the content behind (navigation and header)
|
|
84
|
+
: '0'};
|
|
85
|
+
overflow: hidden;
|
|
86
|
+
transition: max-height ${(props)=>props.theme.motion.timings['200']}
|
|
87
|
+
${(props)=>props.theme.motion.easings.easeInOutQuad};
|
|
88
|
+
z-index: 1;
|
|
89
|
+
pointer-events: auto;
|
|
90
|
+
`;
|
|
91
|
+
const Root = ({ children, hasContent = false, hasSideNav = false })=>{
|
|
92
|
+
const [isOpen, setIsOpen] = React__namespace.useState(false);
|
|
93
|
+
// Close drawer when there's no content
|
|
94
|
+
React__namespace.useEffect(()=>{
|
|
95
|
+
if (!hasContent) {
|
|
96
|
+
setIsOpen(false);
|
|
97
|
+
}
|
|
98
|
+
}, [
|
|
99
|
+
hasContent
|
|
100
|
+
]);
|
|
101
|
+
return /*#__PURE__*/ jsxRuntime.jsx(ActionsDrawerProvider, {
|
|
102
|
+
isOpen: isOpen,
|
|
103
|
+
setIsOpen: setIsOpen,
|
|
104
|
+
hasContent: hasContent,
|
|
105
|
+
hasSideNav: hasSideNav,
|
|
106
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(DrawerContainer, {
|
|
107
|
+
$hasSideNav: hasSideNav,
|
|
108
|
+
children: children
|
|
109
|
+
})
|
|
110
|
+
});
|
|
111
|
+
};
|
|
112
|
+
/* -------------------------------------------------------------------------------------------------
|
|
113
|
+
* Overlay
|
|
114
|
+
* -----------------------------------------------------------------------------------------------*/ const Overlay = ()=>{
|
|
115
|
+
const ctx = useActionsDrawer('ActionsDrawer.Overlay', (s)=>s, false);
|
|
116
|
+
const isOpen = ctx?.isOpen ?? false;
|
|
117
|
+
const hasContent = ctx?.hasContent ?? false;
|
|
118
|
+
const hasSideNav = ctx?.hasSideNav ?? false;
|
|
119
|
+
const setIsOpen = ctx?.setIsOpen;
|
|
120
|
+
if (!hasContent) {
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
return /*#__PURE__*/ jsxRuntime.jsx(DrawerOverlay, {
|
|
124
|
+
$isOpen: isOpen,
|
|
125
|
+
$hasSideNav: hasSideNav,
|
|
126
|
+
onClick: ()=>setIsOpen?.(false),
|
|
127
|
+
"data-testid": "actions-drawer-overlay"
|
|
128
|
+
});
|
|
129
|
+
};
|
|
130
|
+
const Header = ({ children })=>{
|
|
131
|
+
const ctx = useActionsDrawer('ActionsDrawer.Header', (s)=>s, false);
|
|
132
|
+
const isOpen = ctx?.isOpen ?? false;
|
|
133
|
+
const hasContent = ctx?.hasContent ?? false;
|
|
134
|
+
const setIsOpen = ctx?.setIsOpen;
|
|
135
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
136
|
+
const toggleOpen = ()=>{
|
|
137
|
+
setIsOpen?.((prev)=>!prev);
|
|
138
|
+
};
|
|
139
|
+
return /*#__PURE__*/ jsxRuntime.jsx(DrawerContent, {
|
|
140
|
+
background: "neutral0",
|
|
141
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
142
|
+
paddingTop: 3,
|
|
143
|
+
paddingBottom: 3,
|
|
144
|
+
paddingLeft: 4,
|
|
145
|
+
paddingRight: 4,
|
|
146
|
+
gap: 3,
|
|
147
|
+
borderStyle: "solid",
|
|
148
|
+
borderWidth: isOpen ? '1px 0' : '1px 0 0 0',
|
|
149
|
+
borderColor: "neutral150",
|
|
150
|
+
children: [
|
|
151
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
152
|
+
flex: 1,
|
|
153
|
+
gap: 2,
|
|
154
|
+
alignItems: "center",
|
|
155
|
+
children: children
|
|
156
|
+
}),
|
|
157
|
+
hasContent && /*#__PURE__*/ jsxRuntime.jsx(ToggleButton, {
|
|
158
|
+
onClick: toggleOpen,
|
|
159
|
+
label: isOpen ? formatMessage({
|
|
160
|
+
id: 'content-manager.actions-drawer.close',
|
|
161
|
+
defaultMessage: 'Close more actions'
|
|
162
|
+
}) : formatMessage({
|
|
163
|
+
id: 'content-manager.actions-drawer.open',
|
|
164
|
+
defaultMessage: 'Open more actions'
|
|
165
|
+
}),
|
|
166
|
+
children: isOpen ? /*#__PURE__*/ jsxRuntime.jsx(Icons.CaretUp, {
|
|
167
|
+
fill: "neutral600"
|
|
168
|
+
}) : /*#__PURE__*/ jsxRuntime.jsx(Icons.CaretDown, {
|
|
169
|
+
fill: "neutral600"
|
|
170
|
+
})
|
|
171
|
+
})
|
|
172
|
+
]
|
|
173
|
+
})
|
|
174
|
+
});
|
|
175
|
+
};
|
|
176
|
+
const Content = ({ children })=>{
|
|
177
|
+
const ctx = useActionsDrawer('ActionsDrawer.Content', (s)=>s, false);
|
|
178
|
+
const isOpen = ctx?.isOpen ?? false;
|
|
179
|
+
return /*#__PURE__*/ jsxRuntime.jsx(DrawerContentInner, {
|
|
180
|
+
$isOpen: isOpen,
|
|
181
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
182
|
+
direction: "column",
|
|
183
|
+
alignItems: "stretch",
|
|
184
|
+
justifyContent: "flex-start",
|
|
185
|
+
padding: {
|
|
186
|
+
initial: 4,
|
|
187
|
+
large: 0
|
|
188
|
+
},
|
|
189
|
+
background: "neutral0",
|
|
190
|
+
children: children
|
|
191
|
+
})
|
|
192
|
+
});
|
|
193
|
+
};
|
|
194
|
+
/* -------------------------------------------------------------------------------------------------
|
|
195
|
+
* ActionsDrawer
|
|
196
|
+
* -----------------------------------------------------------------------------------------------*/ const ActionsDrawer = {
|
|
197
|
+
Root,
|
|
198
|
+
Overlay,
|
|
199
|
+
Header,
|
|
200
|
+
Content
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
exports.ActionsDrawer = ActionsDrawer;
|
|
204
|
+
//# sourceMappingURL=ActionsDrawer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActionsDrawer.js","sources":["../../../admin/src/components/ActionsDrawer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { WIDTH_SIDE_NAVIGATION, createContext } from '@strapi/admin/strapi-admin';\nimport { Portal, Flex, Box, ScrollArea, IconButton } from '@strapi/design-system';\nimport { CaretDown, CaretUp } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\n/**\n * ActionsDrawer is a component used in the content manager edit view page and content history page.\n * It's a sticky banner that can expand to reveal more actions. It's used only in mobile and tablet.\n *\n * A similar component is currently in development in the design-system but it's not ready yet.\n * Using the Panels for the edit view page brought some complexity and for the moment, we decided to go with this custom implementation.\n *\n * @TODO: Replace this component with the one in the design-system when it's ready.\n */\n\n/* -------------------------------------------------------------------------------------------------\n * ActionsDrawer Context\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ActionsDrawerContextValue {\n isOpen: boolean;\n setIsOpen: React.Dispatch<React.SetStateAction<boolean>>;\n hasContent: boolean;\n hasSideNav: boolean;\n}\n\nconst [ActionsDrawerProvider, useActionsDrawer] = createContext<ActionsDrawerContextValue | null>(\n 'ActionsDrawer',\n null\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Styled Components\n * -----------------------------------------------------------------------------------------------*/\n\nconst DrawerContainer = styled(Portal)<{ $hasSideNav: boolean }>`\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 10;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n justify-content: flex-end;\n\n ${({ theme }) => theme.breakpoints.medium} {\n left: ${({ $hasSideNav }) => ($hasSideNav ? WIDTH_SIDE_NAVIGATION : 0)};\n }\n`;\n\nconst DrawerOverlay = styled(Box)<{ $isOpen: boolean; $hasSideNav: boolean }>`\n position: fixed;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.5);\n transition: opacity ${(props) => props.theme.motion.timings['200']}\n ${(props) => props.theme.motion.easings.easeInOutQuad};\n opacity: ${({ $isOpen }) => ($isOpen ? 1 : 0)};\n pointer-events: ${({ $isOpen }) => ($isOpen ? 'auto' : 'none')};\n\n ${({ theme }) => theme.breakpoints.medium} {\n left: ${({ $hasSideNav }) => ($hasSideNav ? WIDTH_SIDE_NAVIGATION : 0)};\n }\n`;\n\nconst ToggleButton = styled(IconButton)`\n padding: 0;\n border: none;\n background: ${({ theme }) => theme.colors.neutral200};\n width: 3.2rem;\n height: 3.2rem;\n border-radius: 1.6rem;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst DrawerContent = styled(Flex)`\n flex-direction: column;\n align-items: stretch;\n position: relative;\n z-index: 1;\n pointer-events: auto;\n`;\n\nconst DrawerContentInner = styled(ScrollArea)<{ $isOpen: boolean }>`\n max-height: ${({ $isOpen }) =>\n $isOpen\n ? 'calc(100vh - 25rem)' // 25rem is arbitrary, to be able to see a bit of the content behind (navigation and header)\n : '0'};\n overflow: hidden;\n transition: max-height ${(props) => props.theme.motion.timings['200']}\n ${(props) => props.theme.motion.easings.easeInOutQuad};\n z-index: 1;\n pointer-events: auto;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\n\ninterface RootProps {\n children: React.ReactNode;\n hasContent?: boolean;\n hasSideNav?: boolean;\n}\n\nconst Root = ({ children, hasContent = false, hasSideNav = false }: RootProps) => {\n const [isOpen, setIsOpen] = React.useState(false);\n\n // Close drawer when there's no content\n React.useEffect(() => {\n if (!hasContent) {\n setIsOpen(false);\n }\n }, [hasContent]);\n\n return (\n <ActionsDrawerProvider\n isOpen={isOpen}\n setIsOpen={setIsOpen}\n hasContent={hasContent}\n hasSideNav={hasSideNav}\n >\n <DrawerContainer $hasSideNav={hasSideNav}>{children}</DrawerContainer>\n </ActionsDrawerProvider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Overlay\n * -----------------------------------------------------------------------------------------------*/\n\nconst Overlay = () => {\n const ctx = useActionsDrawer('ActionsDrawer.Overlay', (s) => s, false);\n const isOpen = ctx?.isOpen ?? false;\n const hasContent = ctx?.hasContent ?? false;\n const hasSideNav = ctx?.hasSideNav ?? false;\n const setIsOpen = ctx?.setIsOpen;\n\n if (!hasContent) {\n return null;\n }\n\n return (\n <DrawerOverlay\n $isOpen={isOpen}\n $hasSideNav={hasSideNav}\n onClick={() => setIsOpen?.(false)}\n data-testid=\"actions-drawer-overlay\"\n />\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderProps {\n children: React.ReactNode;\n}\n\nconst Header = ({ children }: HeaderProps) => {\n const ctx = useActionsDrawer('ActionsDrawer.Header', (s) => s, false);\n const isOpen = ctx?.isOpen ?? false;\n const hasContent = ctx?.hasContent ?? false;\n const setIsOpen = ctx?.setIsOpen;\n const { formatMessage } = useIntl();\n\n const toggleOpen = () => {\n setIsOpen?.((prev: boolean) => !prev);\n };\n\n return (\n <DrawerContent background=\"neutral0\">\n <Flex\n paddingTop={3}\n paddingBottom={3}\n paddingLeft={4}\n paddingRight={4}\n gap={3}\n borderStyle=\"solid\"\n borderWidth={isOpen ? '1px 0' : '1px 0 0 0'}\n borderColor=\"neutral150\"\n >\n <Flex flex={1} gap={2} alignItems=\"center\">\n {children}\n </Flex>\n {hasContent && (\n <ToggleButton\n onClick={toggleOpen}\n label={\n isOpen\n ? formatMessage({\n id: 'content-manager.actions-drawer.close',\n defaultMessage: 'Close more actions',\n })\n : formatMessage({\n id: 'content-manager.actions-drawer.open',\n defaultMessage: 'Open more actions',\n })\n }\n >\n {isOpen ? <CaretUp fill=\"neutral600\" /> : <CaretDown fill=\"neutral600\" />}\n </ToggleButton>\n )}\n </Flex>\n </DrawerContent>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Content\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ContentProps {\n children: React.ReactNode;\n}\n\nconst Content = ({ children }: ContentProps) => {\n const ctx = useActionsDrawer('ActionsDrawer.Content', (s) => s, false);\n const isOpen = ctx?.isOpen ?? false;\n\n return (\n <DrawerContentInner $isOpen={isOpen}>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n justifyContent=\"flex-start\"\n padding={{ initial: 4, large: 0 }}\n background=\"neutral0\"\n >\n {children}\n </Flex>\n </DrawerContentInner>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ActionsDrawer\n * -----------------------------------------------------------------------------------------------*/\n\nconst ActionsDrawer = {\n Root,\n Overlay,\n Header,\n Content,\n};\n\nexport { ActionsDrawer };\n"],"names":["ActionsDrawerProvider","useActionsDrawer","createContext","DrawerContainer","styled","Portal","theme","breakpoints","medium","$hasSideNav","WIDTH_SIDE_NAVIGATION","DrawerOverlay","Box","props","motion","timings","easings","easeInOutQuad","$isOpen","ToggleButton","IconButton","colors","neutral200","DrawerContent","Flex","DrawerContentInner","ScrollArea","Root","children","hasContent","hasSideNav","isOpen","setIsOpen","React","useState","useEffect","_jsx","Overlay","ctx","s","onClick","data-testid","Header","formatMessage","useIntl","toggleOpen","prev","background","_jsxs","paddingTop","paddingBottom","paddingLeft","paddingRight","gap","borderStyle","borderWidth","borderColor","flex","alignItems","label","id","defaultMessage","CaretUp","fill","CaretDown","Content","direction","justifyContent","padding","initial","large","ActionsDrawer"],"mappings":"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"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { createContext, WIDTH_SIDE_NAVIGATION } from '@strapi/admin/strapi-admin';
|
|
4
|
+
import { Portal, Box, IconButton, Flex, ScrollArea } from '@strapi/design-system';
|
|
5
|
+
import { CaretUp, CaretDown } from '@strapi/icons';
|
|
6
|
+
import { useIntl } from 'react-intl';
|
|
7
|
+
import { styled } from 'styled-components';
|
|
8
|
+
|
|
9
|
+
const [ActionsDrawerProvider, useActionsDrawer] = createContext('ActionsDrawer', null);
|
|
10
|
+
/* -------------------------------------------------------------------------------------------------
|
|
11
|
+
* Styled Components
|
|
12
|
+
* -----------------------------------------------------------------------------------------------*/ const DrawerContainer = styled(Portal)`
|
|
13
|
+
position: fixed;
|
|
14
|
+
left: 0;
|
|
15
|
+
right: 0;
|
|
16
|
+
bottom: 0;
|
|
17
|
+
z-index: 10;
|
|
18
|
+
display: flex;
|
|
19
|
+
flex-direction: column;
|
|
20
|
+
align-items: stretch;
|
|
21
|
+
justify-content: flex-end;
|
|
22
|
+
|
|
23
|
+
${({ theme })=>theme.breakpoints.medium} {
|
|
24
|
+
left: ${({ $hasSideNav })=>$hasSideNav ? WIDTH_SIDE_NAVIGATION : 0};
|
|
25
|
+
}
|
|
26
|
+
`;
|
|
27
|
+
const DrawerOverlay = styled(Box)`
|
|
28
|
+
position: fixed;
|
|
29
|
+
left: 0;
|
|
30
|
+
top: 0;
|
|
31
|
+
right: 0;
|
|
32
|
+
bottom: 0;
|
|
33
|
+
background-color: rgba(0, 0, 0, 0.5);
|
|
34
|
+
transition: opacity ${(props)=>props.theme.motion.timings['200']}
|
|
35
|
+
${(props)=>props.theme.motion.easings.easeInOutQuad};
|
|
36
|
+
opacity: ${({ $isOpen })=>$isOpen ? 1 : 0};
|
|
37
|
+
pointer-events: ${({ $isOpen })=>$isOpen ? 'auto' : 'none'};
|
|
38
|
+
|
|
39
|
+
${({ theme })=>theme.breakpoints.medium} {
|
|
40
|
+
left: ${({ $hasSideNav })=>$hasSideNav ? WIDTH_SIDE_NAVIGATION : 0};
|
|
41
|
+
}
|
|
42
|
+
`;
|
|
43
|
+
const ToggleButton = styled(IconButton)`
|
|
44
|
+
padding: 0;
|
|
45
|
+
border: none;
|
|
46
|
+
background: ${({ theme })=>theme.colors.neutral200};
|
|
47
|
+
width: 3.2rem;
|
|
48
|
+
height: 3.2rem;
|
|
49
|
+
border-radius: 1.6rem;
|
|
50
|
+
display: flex;
|
|
51
|
+
align-items: center;
|
|
52
|
+
justify-content: center;
|
|
53
|
+
`;
|
|
54
|
+
const DrawerContent = styled(Flex)`
|
|
55
|
+
flex-direction: column;
|
|
56
|
+
align-items: stretch;
|
|
57
|
+
position: relative;
|
|
58
|
+
z-index: 1;
|
|
59
|
+
pointer-events: auto;
|
|
60
|
+
`;
|
|
61
|
+
const DrawerContentInner = styled(ScrollArea)`
|
|
62
|
+
max-height: ${({ $isOpen })=>$isOpen ? 'calc(100vh - 25rem)' // 25rem is arbitrary, to be able to see a bit of the content behind (navigation and header)
|
|
63
|
+
: '0'};
|
|
64
|
+
overflow: hidden;
|
|
65
|
+
transition: max-height ${(props)=>props.theme.motion.timings['200']}
|
|
66
|
+
${(props)=>props.theme.motion.easings.easeInOutQuad};
|
|
67
|
+
z-index: 1;
|
|
68
|
+
pointer-events: auto;
|
|
69
|
+
`;
|
|
70
|
+
const Root = ({ children, hasContent = false, hasSideNav = false })=>{
|
|
71
|
+
const [isOpen, setIsOpen] = React.useState(false);
|
|
72
|
+
// Close drawer when there's no content
|
|
73
|
+
React.useEffect(()=>{
|
|
74
|
+
if (!hasContent) {
|
|
75
|
+
setIsOpen(false);
|
|
76
|
+
}
|
|
77
|
+
}, [
|
|
78
|
+
hasContent
|
|
79
|
+
]);
|
|
80
|
+
return /*#__PURE__*/ jsx(ActionsDrawerProvider, {
|
|
81
|
+
isOpen: isOpen,
|
|
82
|
+
setIsOpen: setIsOpen,
|
|
83
|
+
hasContent: hasContent,
|
|
84
|
+
hasSideNav: hasSideNav,
|
|
85
|
+
children: /*#__PURE__*/ jsx(DrawerContainer, {
|
|
86
|
+
$hasSideNav: hasSideNav,
|
|
87
|
+
children: children
|
|
88
|
+
})
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
/* -------------------------------------------------------------------------------------------------
|
|
92
|
+
* Overlay
|
|
93
|
+
* -----------------------------------------------------------------------------------------------*/ const Overlay = ()=>{
|
|
94
|
+
const ctx = useActionsDrawer('ActionsDrawer.Overlay', (s)=>s, false);
|
|
95
|
+
const isOpen = ctx?.isOpen ?? false;
|
|
96
|
+
const hasContent = ctx?.hasContent ?? false;
|
|
97
|
+
const hasSideNav = ctx?.hasSideNav ?? false;
|
|
98
|
+
const setIsOpen = ctx?.setIsOpen;
|
|
99
|
+
if (!hasContent) {
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
return /*#__PURE__*/ jsx(DrawerOverlay, {
|
|
103
|
+
$isOpen: isOpen,
|
|
104
|
+
$hasSideNav: hasSideNav,
|
|
105
|
+
onClick: ()=>setIsOpen?.(false),
|
|
106
|
+
"data-testid": "actions-drawer-overlay"
|
|
107
|
+
});
|
|
108
|
+
};
|
|
109
|
+
const Header = ({ children })=>{
|
|
110
|
+
const ctx = useActionsDrawer('ActionsDrawer.Header', (s)=>s, false);
|
|
111
|
+
const isOpen = ctx?.isOpen ?? false;
|
|
112
|
+
const hasContent = ctx?.hasContent ?? false;
|
|
113
|
+
const setIsOpen = ctx?.setIsOpen;
|
|
114
|
+
const { formatMessage } = useIntl();
|
|
115
|
+
const toggleOpen = ()=>{
|
|
116
|
+
setIsOpen?.((prev)=>!prev);
|
|
117
|
+
};
|
|
118
|
+
return /*#__PURE__*/ jsx(DrawerContent, {
|
|
119
|
+
background: "neutral0",
|
|
120
|
+
children: /*#__PURE__*/ jsxs(Flex, {
|
|
121
|
+
paddingTop: 3,
|
|
122
|
+
paddingBottom: 3,
|
|
123
|
+
paddingLeft: 4,
|
|
124
|
+
paddingRight: 4,
|
|
125
|
+
gap: 3,
|
|
126
|
+
borderStyle: "solid",
|
|
127
|
+
borderWidth: isOpen ? '1px 0' : '1px 0 0 0',
|
|
128
|
+
borderColor: "neutral150",
|
|
129
|
+
children: [
|
|
130
|
+
/*#__PURE__*/ jsx(Flex, {
|
|
131
|
+
flex: 1,
|
|
132
|
+
gap: 2,
|
|
133
|
+
alignItems: "center",
|
|
134
|
+
children: children
|
|
135
|
+
}),
|
|
136
|
+
hasContent && /*#__PURE__*/ jsx(ToggleButton, {
|
|
137
|
+
onClick: toggleOpen,
|
|
138
|
+
label: isOpen ? formatMessage({
|
|
139
|
+
id: 'content-manager.actions-drawer.close',
|
|
140
|
+
defaultMessage: 'Close more actions'
|
|
141
|
+
}) : formatMessage({
|
|
142
|
+
id: 'content-manager.actions-drawer.open',
|
|
143
|
+
defaultMessage: 'Open more actions'
|
|
144
|
+
}),
|
|
145
|
+
children: isOpen ? /*#__PURE__*/ jsx(CaretUp, {
|
|
146
|
+
fill: "neutral600"
|
|
147
|
+
}) : /*#__PURE__*/ jsx(CaretDown, {
|
|
148
|
+
fill: "neutral600"
|
|
149
|
+
})
|
|
150
|
+
})
|
|
151
|
+
]
|
|
152
|
+
})
|
|
153
|
+
});
|
|
154
|
+
};
|
|
155
|
+
const Content = ({ children })=>{
|
|
156
|
+
const ctx = useActionsDrawer('ActionsDrawer.Content', (s)=>s, false);
|
|
157
|
+
const isOpen = ctx?.isOpen ?? false;
|
|
158
|
+
return /*#__PURE__*/ jsx(DrawerContentInner, {
|
|
159
|
+
$isOpen: isOpen,
|
|
160
|
+
children: /*#__PURE__*/ jsx(Flex, {
|
|
161
|
+
direction: "column",
|
|
162
|
+
alignItems: "stretch",
|
|
163
|
+
justifyContent: "flex-start",
|
|
164
|
+
padding: {
|
|
165
|
+
initial: 4,
|
|
166
|
+
large: 0
|
|
167
|
+
},
|
|
168
|
+
background: "neutral0",
|
|
169
|
+
children: children
|
|
170
|
+
})
|
|
171
|
+
});
|
|
172
|
+
};
|
|
173
|
+
/* -------------------------------------------------------------------------------------------------
|
|
174
|
+
* ActionsDrawer
|
|
175
|
+
* -----------------------------------------------------------------------------------------------*/ const ActionsDrawer = {
|
|
176
|
+
Root,
|
|
177
|
+
Overlay,
|
|
178
|
+
Header,
|
|
179
|
+
Content
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
export { ActionsDrawer };
|
|
183
|
+
//# sourceMappingURL=ActionsDrawer.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActionsDrawer.mjs","sources":["../../../admin/src/components/ActionsDrawer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { WIDTH_SIDE_NAVIGATION, createContext } from '@strapi/admin/strapi-admin';\nimport { Portal, Flex, Box, ScrollArea, IconButton } from '@strapi/design-system';\nimport { CaretDown, CaretUp } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\n/**\n * ActionsDrawer is a component used in the content manager edit view page and content history page.\n * It's a sticky banner that can expand to reveal more actions. It's used only in mobile and tablet.\n *\n * A similar component is currently in development in the design-system but it's not ready yet.\n * Using the Panels for the edit view page brought some complexity and for the moment, we decided to go with this custom implementation.\n *\n * @TODO: Replace this component with the one in the design-system when it's ready.\n */\n\n/* -------------------------------------------------------------------------------------------------\n * ActionsDrawer Context\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ActionsDrawerContextValue {\n isOpen: boolean;\n setIsOpen: React.Dispatch<React.SetStateAction<boolean>>;\n hasContent: boolean;\n hasSideNav: boolean;\n}\n\nconst [ActionsDrawerProvider, useActionsDrawer] = createContext<ActionsDrawerContextValue | null>(\n 'ActionsDrawer',\n null\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Styled Components\n * -----------------------------------------------------------------------------------------------*/\n\nconst DrawerContainer = styled(Portal)<{ $hasSideNav: boolean }>`\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 10;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n justify-content: flex-end;\n\n ${({ theme }) => theme.breakpoints.medium} {\n left: ${({ $hasSideNav }) => ($hasSideNav ? WIDTH_SIDE_NAVIGATION : 0)};\n }\n`;\n\nconst DrawerOverlay = styled(Box)<{ $isOpen: boolean; $hasSideNav: boolean }>`\n position: fixed;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.5);\n transition: opacity ${(props) => props.theme.motion.timings['200']}\n ${(props) => props.theme.motion.easings.easeInOutQuad};\n opacity: ${({ $isOpen }) => ($isOpen ? 1 : 0)};\n pointer-events: ${({ $isOpen }) => ($isOpen ? 'auto' : 'none')};\n\n ${({ theme }) => theme.breakpoints.medium} {\n left: ${({ $hasSideNav }) => ($hasSideNav ? WIDTH_SIDE_NAVIGATION : 0)};\n }\n`;\n\nconst ToggleButton = styled(IconButton)`\n padding: 0;\n border: none;\n background: ${({ theme }) => theme.colors.neutral200};\n width: 3.2rem;\n height: 3.2rem;\n border-radius: 1.6rem;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst DrawerContent = styled(Flex)`\n flex-direction: column;\n align-items: stretch;\n position: relative;\n z-index: 1;\n pointer-events: auto;\n`;\n\nconst DrawerContentInner = styled(ScrollArea)<{ $isOpen: boolean }>`\n max-height: ${({ $isOpen }) =>\n $isOpen\n ? 'calc(100vh - 25rem)' // 25rem is arbitrary, to be able to see a bit of the content behind (navigation and header)\n : '0'};\n overflow: hidden;\n transition: max-height ${(props) => props.theme.motion.timings['200']}\n ${(props) => props.theme.motion.easings.easeInOutQuad};\n z-index: 1;\n pointer-events: auto;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Root\n * -----------------------------------------------------------------------------------------------*/\n\ninterface RootProps {\n children: React.ReactNode;\n hasContent?: boolean;\n hasSideNav?: boolean;\n}\n\nconst Root = ({ children, hasContent = false, hasSideNav = false }: RootProps) => {\n const [isOpen, setIsOpen] = React.useState(false);\n\n // Close drawer when there's no content\n React.useEffect(() => {\n if (!hasContent) {\n setIsOpen(false);\n }\n }, [hasContent]);\n\n return (\n <ActionsDrawerProvider\n isOpen={isOpen}\n setIsOpen={setIsOpen}\n hasContent={hasContent}\n hasSideNav={hasSideNav}\n >\n <DrawerContainer $hasSideNav={hasSideNav}>{children}</DrawerContainer>\n </ActionsDrawerProvider>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Overlay\n * -----------------------------------------------------------------------------------------------*/\n\nconst Overlay = () => {\n const ctx = useActionsDrawer('ActionsDrawer.Overlay', (s) => s, false);\n const isOpen = ctx?.isOpen ?? false;\n const hasContent = ctx?.hasContent ?? false;\n const hasSideNav = ctx?.hasSideNav ?? false;\n const setIsOpen = ctx?.setIsOpen;\n\n if (!hasContent) {\n return null;\n }\n\n return (\n <DrawerOverlay\n $isOpen={isOpen}\n $hasSideNav={hasSideNav}\n onClick={() => setIsOpen?.(false)}\n data-testid=\"actions-drawer-overlay\"\n />\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderProps {\n children: React.ReactNode;\n}\n\nconst Header = ({ children }: HeaderProps) => {\n const ctx = useActionsDrawer('ActionsDrawer.Header', (s) => s, false);\n const isOpen = ctx?.isOpen ?? false;\n const hasContent = ctx?.hasContent ?? false;\n const setIsOpen = ctx?.setIsOpen;\n const { formatMessage } = useIntl();\n\n const toggleOpen = () => {\n setIsOpen?.((prev: boolean) => !prev);\n };\n\n return (\n <DrawerContent background=\"neutral0\">\n <Flex\n paddingTop={3}\n paddingBottom={3}\n paddingLeft={4}\n paddingRight={4}\n gap={3}\n borderStyle=\"solid\"\n borderWidth={isOpen ? '1px 0' : '1px 0 0 0'}\n borderColor=\"neutral150\"\n >\n <Flex flex={1} gap={2} alignItems=\"center\">\n {children}\n </Flex>\n {hasContent && (\n <ToggleButton\n onClick={toggleOpen}\n label={\n isOpen\n ? formatMessage({\n id: 'content-manager.actions-drawer.close',\n defaultMessage: 'Close more actions',\n })\n : formatMessage({\n id: 'content-manager.actions-drawer.open',\n defaultMessage: 'Open more actions',\n })\n }\n >\n {isOpen ? <CaretUp fill=\"neutral600\" /> : <CaretDown fill=\"neutral600\" />}\n </ToggleButton>\n )}\n </Flex>\n </DrawerContent>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Content\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ContentProps {\n children: React.ReactNode;\n}\n\nconst Content = ({ children }: ContentProps) => {\n const ctx = useActionsDrawer('ActionsDrawer.Content', (s) => s, false);\n const isOpen = ctx?.isOpen ?? false;\n\n return (\n <DrawerContentInner $isOpen={isOpen}>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n justifyContent=\"flex-start\"\n padding={{ initial: 4, large: 0 }}\n background=\"neutral0\"\n >\n {children}\n </Flex>\n </DrawerContentInner>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ActionsDrawer\n * -----------------------------------------------------------------------------------------------*/\n\nconst ActionsDrawer = {\n Root,\n Overlay,\n Header,\n Content,\n};\n\nexport { ActionsDrawer };\n"],"names":["ActionsDrawerProvider","useActionsDrawer","createContext","DrawerContainer","styled","Portal","theme","breakpoints","medium","$hasSideNav","WIDTH_SIDE_NAVIGATION","DrawerOverlay","Box","props","motion","timings","easings","easeInOutQuad","$isOpen","ToggleButton","IconButton","colors","neutral200","DrawerContent","Flex","DrawerContentInner","ScrollArea","Root","children","hasContent","hasSideNav","isOpen","setIsOpen","React","useState","useEffect","_jsx","Overlay","ctx","s","onClick","data-testid","Header","formatMessage","useIntl","toggleOpen","prev","background","_jsxs","paddingTop","paddingBottom","paddingLeft","paddingRight","gap","borderStyle","borderWidth","borderColor","flex","alignItems","label","id","defaultMessage","CaretUp","fill","CaretDown","Content","direction","justifyContent","padding","initial","large","ActionsDrawer"],"mappings":"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"}
|
|
@@ -148,23 +148,28 @@ const LeftMenu = ({ isFullPage = false })=>{
|
|
|
148
148
|
}),
|
|
149
149
|
/*#__PURE__*/ jsxRuntime.jsxs(strapiAdmin.SubNav.Content, {
|
|
150
150
|
children: [
|
|
151
|
-
isFullPage && /*#__PURE__*/ jsxRuntime.
|
|
152
|
-
|
|
151
|
+
isFullPage && /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
152
|
+
children: [
|
|
153
|
+
/*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.SubNav.Header, {
|
|
154
|
+
label: label
|
|
155
|
+
}),
|
|
156
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Divider, {})
|
|
157
|
+
]
|
|
153
158
|
}),
|
|
154
159
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
155
160
|
paddingLeft: {
|
|
156
|
-
initial:
|
|
161
|
+
initial: 3,
|
|
157
162
|
large: 5
|
|
158
163
|
},
|
|
159
164
|
paddingRight: {
|
|
160
|
-
initial:
|
|
165
|
+
initial: 3,
|
|
161
166
|
large: 5
|
|
162
167
|
},
|
|
163
|
-
paddingTop:
|
|
164
|
-
|
|
165
|
-
|
|
168
|
+
paddingTop: 5,
|
|
169
|
+
paddingBottom: {
|
|
170
|
+
initial: 1,
|
|
171
|
+
large: 0
|
|
166
172
|
},
|
|
167
|
-
paddingBottom: 0,
|
|
168
173
|
gap: 3,
|
|
169
174
|
direction: "column",
|
|
170
175
|
alignItems: "stretch",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LeftMenu.js","sources":["../../../admin/src/components/LeftMenu.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams, SubNav } from '@strapi/admin/strapi-admin';\nimport { Flex, Searchbar, useCollator, useFilter, Divider, Loader } from '@strapi/design-system';\nimport { parse, stringify } from 'qs';\nimport { useIntl } from 'react-intl';\n\nimport { useContentManagerInitData } from '../hooks/useContentManagerInitData';\nimport { useContentTypeSchema } from '../hooks/useContentTypeSchema';\nimport { useTypedSelector } from '../modules/hooks';\nimport { getTranslation } from '../utils/translations';\n\nimport type { ContentManagerLink } from '../hooks/useContentManagerInitData';\n\nconst LeftMenu = ({ isFullPage = false }: { isFullPage?: boolean }) => {\n const [search, setSearch] = React.useState('');\n const [{ query }] = useQueryParams<{ plugins?: object }>();\n const { formatMessage, locale } = useIntl();\n\n // Initialize Content Manager data to ensure links are available\n const { isLoading } = useContentManagerInitData();\n\n const collectionTypeLinks = useTypedSelector(\n (state) => state['content-manager'].app.collectionTypeLinks\n );\n\n const singleTypeLinks = useTypedSelector((state) => state['content-manager'].app.singleTypeLinks);\n const { schemas } = useContentTypeSchema();\n\n const { contains } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const menu = React.useMemo(\n () =>\n [\n {\n id: 'collectionTypes',\n title: formatMessage({\n id: getTranslation('components.LeftMenu.collection-types'),\n defaultMessage: 'Collection Types',\n }),\n searchable: true,\n links: collectionTypeLinks,\n },\n {\n id: 'singleTypes',\n title: formatMessage({\n id: getTranslation('components.LeftMenu.single-types'),\n defaultMessage: 'Single Types',\n }),\n searchable: true,\n links: singleTypeLinks,\n },\n ].map((section) => ({\n ...section,\n links: section.links\n /**\n * Filter by the search value\n */\n .filter((link) => contains(link.title, search.trim()))\n /**\n * Sort correctly using the language\n */\n .sort((a, b) => formatter.compare(a.title, b.title))\n /**\n * Apply the formated strings to the links from react-intl\n */\n .map((link) => {\n return {\n ...link,\n title: formatMessage({ id: link.title, defaultMessage: link.title }),\n };\n }),\n })),\n [collectionTypeLinks, search, singleTypeLinks, contains, formatMessage, formatter]\n );\n\n const handleClear = () => {\n setSearch('');\n };\n\n const handleChangeSearch = (event: React.ChangeEvent<HTMLInputElement>) => {\n setSearch(event.target.value);\n };\n\n const label = formatMessage({\n id: getTranslation('header.name'),\n defaultMessage: 'Content Manager',\n });\n\n const getPluginsParamsForLink = (link: ContentManagerLink) => {\n const schema = schemas.find((schema) => schema.uid === link.uid);\n const isI18nEnabled = Boolean((schema?.pluginOptions?.i18n as any)?.localized);\n\n // The search params have the i18n plugin\n if (query.plugins && 'i18n' in query.plugins) {\n // Prepare removal of i18n from the plugins search params\n const { i18n, ...restPlugins } = query.plugins;\n\n // i18n is not enabled, remove it from the plugins search params\n if (!isI18nEnabled) {\n return restPlugins;\n }\n\n // i18n is enabled, put the plugins search params back together\n return { i18n, ...restPlugins };\n }\n\n return query.plugins;\n };\n\n // Show loading state while data is being fetched\n if (isLoading) {\n return (\n <SubNav.Main aria-label={label}>\n <SubNav.Header label={label} />\n <Divider />\n <Flex padding={4} justifyContent=\"center\">\n <Loader />\n </Flex>\n </SubNav.Main>\n );\n }\n\n return (\n <SubNav.Main aria-label={label}>\n {!isFullPage && (\n <>\n <SubNav.Header label={label} />\n <Divider />\n </>\n )}\n <SubNav.Content>\n {isFullPage && <SubNav.Header label={label} />}\n <Flex\n paddingLeft={{\n initial: 4,\n large: 5,\n }}\n paddingRight={{\n initial: 4,\n large: 5,\n }}\n paddingTop={\n isFullPage\n ? 0\n : {\n initial: 4,\n large: 5,\n }\n }\n paddingBottom={0}\n gap={3}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <Searchbar\n value={search}\n onChange={handleChangeSearch}\n onClear={handleClear}\n placeholder={formatMessage({\n id: 'search.placeholder',\n defaultMessage: 'Search',\n })}\n size=\"S\"\n // eslint-disable-next-line react/no-children-prop\n children={undefined}\n name={'search_contentType'}\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n />\n </Flex>\n <SubNav.Sections>\n {menu.map((section) => {\n return (\n <SubNav.Section\n key={section.id}\n label={section.title}\n badgeLabel={section.links.length.toString()}\n >\n {section.links.map((link) => {\n return (\n <SubNav.Link\n key={link.uid}\n to={{\n pathname: link.to,\n search: stringify({\n ...parse(link.search ?? ''),\n plugins: getPluginsParamsForLink(link),\n }),\n }}\n label={link.title}\n />\n );\n })}\n </SubNav.Section>\n );\n })}\n </SubNav.Sections>\n </SubNav.Content>\n </SubNav.Main>\n );\n};\n\nexport { LeftMenu };\n"],"names":["LeftMenu","isFullPage","search","setSearch","React","useState","query","useQueryParams","formatMessage","locale","useIntl","isLoading","useContentManagerInitData","collectionTypeLinks","useTypedSelector","state","app","singleTypeLinks","schemas","useContentTypeSchema","contains","useFilter","sensitivity","formatter","useCollator","menu","useMemo","id","title","getTranslation","defaultMessage","searchable","links","map","section","filter","link","trim","sort","a","b","compare","handleClear","handleChangeSearch","event","target","value","label","getPluginsParamsForLink","schema","find","uid","isI18nEnabled","Boolean","pluginOptions","i18n","localized","plugins","restPlugins","_jsxs","SubNav","Main","aria-label","_jsx","Header","Divider","Flex","padding","justifyContent","Loader","_Fragment","Content","paddingLeft","initial","large","paddingRight","paddingTop","paddingBottom","gap","direction","alignItems","Searchbar","onChange","onClear","placeholder","size","children","undefined","name","clearLabel","Sections","Section","badgeLabel","length","toString","Link","to","pathname","stringify","parse"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LeftMenu.js","sources":["../../../admin/src/components/LeftMenu.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams, SubNav } from '@strapi/admin/strapi-admin';\nimport { Flex, Searchbar, useCollator, useFilter, Divider, Loader } from '@strapi/design-system';\nimport { parse, stringify } from 'qs';\nimport { useIntl } from 'react-intl';\n\nimport { useContentManagerInitData } from '../hooks/useContentManagerInitData';\nimport { useContentTypeSchema } from '../hooks/useContentTypeSchema';\nimport { useTypedSelector } from '../modules/hooks';\nimport { getTranslation } from '../utils/translations';\n\nimport type { ContentManagerLink } from '../hooks/useContentManagerInitData';\n\nconst LeftMenu = ({ isFullPage = false }: { isFullPage?: boolean }) => {\n const [search, setSearch] = React.useState('');\n const [{ query }] = useQueryParams<{ plugins?: object }>();\n const { formatMessage, locale } = useIntl();\n\n // Initialize Content Manager data to ensure links are available\n const { isLoading } = useContentManagerInitData();\n\n const collectionTypeLinks = useTypedSelector(\n (state) => state['content-manager'].app.collectionTypeLinks\n );\n\n const singleTypeLinks = useTypedSelector((state) => state['content-manager'].app.singleTypeLinks);\n const { schemas } = useContentTypeSchema();\n\n const { contains } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const menu = React.useMemo(\n () =>\n [\n {\n id: 'collectionTypes',\n title: formatMessage({\n id: getTranslation('components.LeftMenu.collection-types'),\n defaultMessage: 'Collection Types',\n }),\n searchable: true,\n links: collectionTypeLinks,\n },\n {\n id: 'singleTypes',\n title: formatMessage({\n id: getTranslation('components.LeftMenu.single-types'),\n defaultMessage: 'Single Types',\n }),\n searchable: true,\n links: singleTypeLinks,\n },\n ].map((section) => ({\n ...section,\n links: section.links\n /**\n * Filter by the search value\n */\n .filter((link) => contains(link.title, search.trim()))\n /**\n * Sort correctly using the language\n */\n .sort((a, b) => formatter.compare(a.title, b.title))\n /**\n * Apply the formated strings to the links from react-intl\n */\n .map((link) => {\n return {\n ...link,\n title: formatMessage({ id: link.title, defaultMessage: link.title }),\n };\n }),\n })),\n [collectionTypeLinks, search, singleTypeLinks, contains, formatMessage, formatter]\n );\n\n const handleClear = () => {\n setSearch('');\n };\n\n const handleChangeSearch = (event: React.ChangeEvent<HTMLInputElement>) => {\n setSearch(event.target.value);\n };\n\n const label = formatMessage({\n id: getTranslation('header.name'),\n defaultMessage: 'Content Manager',\n });\n\n const getPluginsParamsForLink = (link: ContentManagerLink) => {\n const schema = schemas.find((schema) => schema.uid === link.uid);\n const isI18nEnabled = Boolean((schema?.pluginOptions?.i18n as any)?.localized);\n\n // The search params have the i18n plugin\n if (query.plugins && 'i18n' in query.plugins) {\n // Prepare removal of i18n from the plugins search params\n const { i18n, ...restPlugins } = query.plugins;\n\n // i18n is not enabled, remove it from the plugins search params\n if (!isI18nEnabled) {\n return restPlugins;\n }\n\n // i18n is enabled, put the plugins search params back together\n return { i18n, ...restPlugins };\n }\n\n return query.plugins;\n };\n\n // Show loading state while data is being fetched\n if (isLoading) {\n return (\n <SubNav.Main aria-label={label}>\n <SubNav.Header label={label} />\n <Divider />\n <Flex padding={4} justifyContent=\"center\">\n <Loader />\n </Flex>\n </SubNav.Main>\n );\n }\n\n return (\n <SubNav.Main aria-label={label}>\n {!isFullPage && (\n <>\n <SubNav.Header label={label} />\n <Divider />\n </>\n )}\n <SubNav.Content>\n {isFullPage && (\n <>\n <SubNav.Header label={label} />\n <Divider />\n </>\n )}\n <Flex\n paddingLeft={{\n initial: 3,\n large: 5,\n }}\n paddingRight={{\n initial: 3,\n large: 5,\n }}\n paddingTop={5}\n paddingBottom={{ initial: 1, large: 0 }}\n gap={3}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <Searchbar\n value={search}\n onChange={handleChangeSearch}\n onClear={handleClear}\n placeholder={formatMessage({\n id: 'search.placeholder',\n defaultMessage: 'Search',\n })}\n size=\"S\"\n // eslint-disable-next-line react/no-children-prop\n children={undefined}\n name={'search_contentType'}\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n />\n </Flex>\n <SubNav.Sections>\n {menu.map((section) => {\n return (\n <SubNav.Section\n key={section.id}\n label={section.title}\n badgeLabel={section.links.length.toString()}\n >\n {section.links.map((link) => {\n return (\n <SubNav.Link\n key={link.uid}\n to={{\n pathname: link.to,\n search: stringify({\n ...parse(link.search ?? ''),\n plugins: getPluginsParamsForLink(link),\n }),\n }}\n label={link.title}\n />\n );\n })}\n </SubNav.Section>\n );\n })}\n </SubNav.Sections>\n </SubNav.Content>\n </SubNav.Main>\n );\n};\n\nexport { LeftMenu };\n"],"names":["LeftMenu","isFullPage","search","setSearch","React","useState","query","useQueryParams","formatMessage","locale","useIntl","isLoading","useContentManagerInitData","collectionTypeLinks","useTypedSelector","state","app","singleTypeLinks","schemas","useContentTypeSchema","contains","useFilter","sensitivity","formatter","useCollator","menu","useMemo","id","title","getTranslation","defaultMessage","searchable","links","map","section","filter","link","trim","sort","a","b","compare","handleClear","handleChangeSearch","event","target","value","label","getPluginsParamsForLink","schema","find","uid","isI18nEnabled","Boolean","pluginOptions","i18n","localized","plugins","restPlugins","_jsxs","SubNav","Main","aria-label","_jsx","Header","Divider","Flex","padding","justifyContent","Loader","_Fragment","Content","paddingLeft","initial","large","paddingRight","paddingTop","paddingBottom","gap","direction","alignItems","Searchbar","onChange","onClear","placeholder","size","children","undefined","name","clearLabel","Sections","Section","badgeLabel","length","toString","Link","to","pathname","stringify","parse"],"mappings":"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"}
|
|
@@ -127,23 +127,28 @@ const LeftMenu = ({ isFullPage = false })=>{
|
|
|
127
127
|
}),
|
|
128
128
|
/*#__PURE__*/ jsxs(SubNav.Content, {
|
|
129
129
|
children: [
|
|
130
|
-
isFullPage && /*#__PURE__*/
|
|
131
|
-
|
|
130
|
+
isFullPage && /*#__PURE__*/ jsxs(Fragment, {
|
|
131
|
+
children: [
|
|
132
|
+
/*#__PURE__*/ jsx(SubNav.Header, {
|
|
133
|
+
label: label
|
|
134
|
+
}),
|
|
135
|
+
/*#__PURE__*/ jsx(Divider, {})
|
|
136
|
+
]
|
|
132
137
|
}),
|
|
133
138
|
/*#__PURE__*/ jsx(Flex, {
|
|
134
139
|
paddingLeft: {
|
|
135
|
-
initial:
|
|
140
|
+
initial: 3,
|
|
136
141
|
large: 5
|
|
137
142
|
},
|
|
138
143
|
paddingRight: {
|
|
139
|
-
initial:
|
|
144
|
+
initial: 3,
|
|
140
145
|
large: 5
|
|
141
146
|
},
|
|
142
|
-
paddingTop:
|
|
143
|
-
|
|
144
|
-
|
|
147
|
+
paddingTop: 5,
|
|
148
|
+
paddingBottom: {
|
|
149
|
+
initial: 1,
|
|
150
|
+
large: 0
|
|
145
151
|
},
|
|
146
|
-
paddingBottom: 0,
|
|
147
152
|
gap: 3,
|
|
148
153
|
direction: "column",
|
|
149
154
|
alignItems: "stretch",
|