@strapi/admin 5.27.0 → 5.28.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/admin/src/components/DragLayer.js +67 -0
- package/dist/admin/admin/src/components/DragLayer.js.map +1 -0
- package/dist/admin/admin/src/components/DragLayer.mjs +64 -0
- package/dist/admin/admin/src/components/DragLayer.mjs.map +1 -0
- package/dist/admin/admin/src/components/GapDropZone.js +292 -0
- package/dist/admin/admin/src/components/GapDropZone.js.map +1 -0
- package/dist/admin/admin/src/components/GapDropZone.mjs +268 -0
- package/dist/admin/admin/src/components/GapDropZone.mjs.map +1 -0
- package/dist/admin/admin/src/components/ResizeIndicator.js +353 -0
- package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -0
- package/dist/admin/admin/src/components/ResizeIndicator.mjs +332 -0
- package/dist/admin/admin/src/components/ResizeIndicator.mjs.map +1 -0
- package/dist/admin/admin/src/components/WidgetRoot.js +216 -0
- package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -0
- package/dist/admin/admin/src/components/WidgetRoot.mjs +195 -0
- package/dist/admin/admin/src/components/WidgetRoot.mjs.map +1 -0
- package/dist/admin/admin/src/features/Tracking.js.map +1 -1
- package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
- package/dist/admin/admin/src/features/Widgets.js +276 -0
- package/dist/admin/admin/src/features/Widgets.js.map +1 -0
- package/dist/admin/admin/src/features/Widgets.mjs +255 -0
- package/dist/admin/admin/src/features/Widgets.mjs.map +1 -0
- package/dist/admin/admin/src/hooks/useAPIErrorHandler.js +1 -1
- package/dist/admin/admin/src/hooks/useAPIErrorHandler.js.map +1 -1
- package/dist/admin/admin/src/hooks/useAPIErrorHandler.mjs +1 -1
- package/dist/admin/admin/src/hooks/useAPIErrorHandler.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.js +160 -91
- package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.mjs +162 -93
- package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js +189 -0
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js.map +1 -0
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs +168 -0
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs.map +1 -0
- package/dist/admin/admin/src/services/homepage.js +11 -4
- package/dist/admin/admin/src/services/homepage.js.map +1 -1
- package/dist/admin/admin/src/services/homepage.mjs +11 -4
- package/dist/admin/admin/src/services/homepage.mjs.map +1 -1
- package/dist/admin/admin/src/translations/en.json.js +6 -1
- package/dist/admin/admin/src/translations/en.json.js.map +1 -1
- package/dist/admin/admin/src/translations/en.json.mjs +6 -1
- package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/uk.json.js +9 -9
- package/dist/admin/admin/src/translations/uk.json.mjs +9 -9
- package/dist/admin/admin/src/utils/resizeHandlers.js +109 -0
- package/dist/admin/admin/src/utils/resizeHandlers.js.map +1 -0
- package/dist/admin/admin/src/utils/resizeHandlers.mjs +100 -0
- package/dist/admin/admin/src/utils/resizeHandlers.mjs.map +1 -0
- package/dist/admin/admin/src/utils/widgetLayout.js +293 -0
- package/dist/admin/admin/src/utils/widgetLayout.js.map +1 -0
- package/dist/admin/admin/src/utils/widgetLayout.mjs +273 -0
- package/dist/admin/admin/src/utils/widgetLayout.mjs.map +1 -0
- package/dist/admin/src/components/DragLayer.d.ts +8 -4
- package/dist/admin/src/components/GapDropZone.d.ts +36 -0
- package/dist/admin/src/components/ResizeIndicator.d.ts +12 -0
- package/dist/admin/src/components/WidgetRoot.d.ts +14 -0
- package/dist/admin/src/features/Tracking.d.ts +1 -1
- package/dist/admin/src/features/Widgets.d.ts +29 -0
- package/dist/admin/src/pages/Home/HomePage.d.ts +4 -5
- package/dist/admin/src/pages/Home/components/AddWidgetModal.d.ts +10 -0
- package/dist/admin/src/services/homepage.d.ts +3 -3
- package/dist/admin/src/utils/resizeHandlers.d.ts +58 -0
- package/dist/admin/src/utils/widgetLayout.d.ts +78 -0
- package/dist/ee/server/src/controllers/authentication-utils/middlewares.d.ts.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js +4 -2
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs +4 -2
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs.map +1 -1
- package/dist/server/server/src/bootstrap.js +5 -0
- package/dist/server/server/src/bootstrap.js.map +1 -1
- package/dist/server/server/src/bootstrap.mjs +5 -0
- package/dist/server/server/src/bootstrap.mjs.map +1 -1
- package/dist/server/shared/utils/session-auth.js +4 -2
- package/dist/server/shared/utils/session-auth.js.map +1 -1
- package/dist/server/shared/utils/session-auth.mjs +4 -2
- package/dist/server/shared/utils/session-auth.mjs.map +1 -1
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/shared/contracts/homepage.d.ts +8 -4
- package/dist/shared/contracts/homepage.d.ts.map +1 -1
- package/dist/shared/utils/session-auth.d.ts.map +1 -1
- package/package.json +7 -7
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Box, Modal, Flex, Typography, Button } from '@strapi/design-system';
|
|
4
|
+
import { PuzzlePiece } from '@strapi/icons';
|
|
5
|
+
import { useIntl } from 'react-intl';
|
|
6
|
+
import styled from 'styled-components';
|
|
7
|
+
import { WidgetComponent } from '../HomePage.mjs';
|
|
8
|
+
|
|
9
|
+
// Hide scrollbars in widget previews
|
|
10
|
+
const WidgetWrapper = styled(Box)`
|
|
11
|
+
* {
|
|
12
|
+
scrollbar-width: none;
|
|
13
|
+
-ms-overflow-style: none;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
*::-webkit-scrollbar {
|
|
17
|
+
display: none;
|
|
18
|
+
}
|
|
19
|
+
`;
|
|
20
|
+
// Interactive widget preview container
|
|
21
|
+
const WidgetPreviewContainer = styled(Box)`
|
|
22
|
+
&:hover {
|
|
23
|
+
background-color: ${({ theme })=>theme.colors.primary100};
|
|
24
|
+
border-color: ${({ theme })=>theme.colors.primary200};
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
&:focus-visible {
|
|
28
|
+
background-color: ${({ theme })=>theme.colors.primary100};
|
|
29
|
+
border-color: ${({ theme })=>theme.colors.primary200};
|
|
30
|
+
outline-offset: 0;
|
|
31
|
+
}
|
|
32
|
+
`;
|
|
33
|
+
const WidgetPreview = ({ widget, onSelect })=>{
|
|
34
|
+
const { formatMessage } = useIntl();
|
|
35
|
+
const Icon = widget.icon || PuzzlePiece;
|
|
36
|
+
const handleKeyDown = (event)=>{
|
|
37
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
38
|
+
event.preventDefault();
|
|
39
|
+
onSelect();
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
return /*#__PURE__*/ jsx(WidgetPreviewContainer, {
|
|
43
|
+
padding: 4,
|
|
44
|
+
background: "neutral0",
|
|
45
|
+
borderColor: "neutral200",
|
|
46
|
+
hasRadius: true,
|
|
47
|
+
shadow: "tableShadow",
|
|
48
|
+
onClick: onSelect,
|
|
49
|
+
onKeyDown: handleKeyDown,
|
|
50
|
+
width: '100%',
|
|
51
|
+
cursor: "pointer",
|
|
52
|
+
tabIndex: 0,
|
|
53
|
+
role: "button",
|
|
54
|
+
"aria-label": formatMessage({
|
|
55
|
+
id: 'HomePage.addWidget.selectWidget',
|
|
56
|
+
defaultMessage: 'Select {widgetName} widget'
|
|
57
|
+
}, {
|
|
58
|
+
widgetName: formatMessage(widget.title)
|
|
59
|
+
}),
|
|
60
|
+
children: /*#__PURE__*/ jsxs(Flex, {
|
|
61
|
+
direction: "column",
|
|
62
|
+
alignItems: "center",
|
|
63
|
+
gap: 3,
|
|
64
|
+
children: [
|
|
65
|
+
/*#__PURE__*/ jsxs(Flex, {
|
|
66
|
+
gap: 2,
|
|
67
|
+
marginRight: "auto",
|
|
68
|
+
children: [
|
|
69
|
+
/*#__PURE__*/ jsx(Icon, {
|
|
70
|
+
fill: "neutral500",
|
|
71
|
+
"aria-hidden": true
|
|
72
|
+
}),
|
|
73
|
+
/*#__PURE__*/ jsx(Typography, {
|
|
74
|
+
textColor: "neutral500",
|
|
75
|
+
variant: "sigma",
|
|
76
|
+
tag: "h2",
|
|
77
|
+
children: formatMessage(widget.title)
|
|
78
|
+
})
|
|
79
|
+
]
|
|
80
|
+
}),
|
|
81
|
+
/*#__PURE__*/ jsx(WidgetWrapper, {
|
|
82
|
+
width: '100%',
|
|
83
|
+
style: {
|
|
84
|
+
pointerEvents: 'none'
|
|
85
|
+
},
|
|
86
|
+
children: /*#__PURE__*/ jsx(WidgetComponent, {
|
|
87
|
+
component: widget.component,
|
|
88
|
+
columnWidth: 4
|
|
89
|
+
})
|
|
90
|
+
})
|
|
91
|
+
]
|
|
92
|
+
})
|
|
93
|
+
});
|
|
94
|
+
};
|
|
95
|
+
const AddWidgetModal = ({ isOpen, onClose, onAddWidget, currentWidgets, availableWidgets })=>{
|
|
96
|
+
const { formatMessage } = useIntl();
|
|
97
|
+
const currentWidgetUids = React.useMemo(()=>new Set(currentWidgets.map((widget)=>widget.uid)), [
|
|
98
|
+
currentWidgets
|
|
99
|
+
]);
|
|
100
|
+
const handleWidgetSelect = (widget)=>{
|
|
101
|
+
if (!currentWidgetUids.has(widget.uid)) {
|
|
102
|
+
onAddWidget(widget);
|
|
103
|
+
onClose();
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
const addableWidgets = availableWidgets.filter((widget)=>!currentWidgetUids.has(widget.uid));
|
|
107
|
+
return /*#__PURE__*/ jsx(Modal.Root, {
|
|
108
|
+
open: isOpen,
|
|
109
|
+
onOpenChange: onClose,
|
|
110
|
+
children: /*#__PURE__*/ jsxs(Modal.Content, {
|
|
111
|
+
children: [
|
|
112
|
+
/*#__PURE__*/ jsx(Modal.Header, {
|
|
113
|
+
children: /*#__PURE__*/ jsx(Modal.Title, {
|
|
114
|
+
children: formatMessage({
|
|
115
|
+
id: 'HomePage.addWidget.title',
|
|
116
|
+
defaultMessage: 'Add Widget'
|
|
117
|
+
})
|
|
118
|
+
})
|
|
119
|
+
}),
|
|
120
|
+
/*#__PURE__*/ jsx(Modal.Body, {
|
|
121
|
+
children: /*#__PURE__*/ jsx(Box, {
|
|
122
|
+
children: addableWidgets.length === 0 ? /*#__PURE__*/ jsxs(Flex, {
|
|
123
|
+
direction: "column",
|
|
124
|
+
alignItems: "center",
|
|
125
|
+
gap: 4,
|
|
126
|
+
children: [
|
|
127
|
+
/*#__PURE__*/ jsx(PuzzlePiece, {
|
|
128
|
+
width: "4rem",
|
|
129
|
+
height: "4rem",
|
|
130
|
+
fill: "neutral300"
|
|
131
|
+
}),
|
|
132
|
+
/*#__PURE__*/ jsx(Typography, {
|
|
133
|
+
textColor: "neutral500",
|
|
134
|
+
textAlign: "center",
|
|
135
|
+
children: formatMessage({
|
|
136
|
+
id: 'HomePage.addWidget.noWidgetsAvailable',
|
|
137
|
+
defaultMessage: 'No widgets available to add'
|
|
138
|
+
})
|
|
139
|
+
})
|
|
140
|
+
]
|
|
141
|
+
}) : /*#__PURE__*/ jsx(Flex, {
|
|
142
|
+
direction: "column",
|
|
143
|
+
gap: 3,
|
|
144
|
+
justifyContent: "center",
|
|
145
|
+
children: addableWidgets.map((widget)=>/*#__PURE__*/ jsx(WidgetPreview, {
|
|
146
|
+
widget: widget,
|
|
147
|
+
onSelect: ()=>handleWidgetSelect(widget)
|
|
148
|
+
}, widget.uid))
|
|
149
|
+
})
|
|
150
|
+
})
|
|
151
|
+
}),
|
|
152
|
+
/*#__PURE__*/ jsx(Modal.Footer, {
|
|
153
|
+
children: /*#__PURE__*/ jsx(Button, {
|
|
154
|
+
onClick: onClose,
|
|
155
|
+
variant: "tertiary",
|
|
156
|
+
children: formatMessage({
|
|
157
|
+
id: 'app.components.Button.cancel',
|
|
158
|
+
defaultMessage: 'Cancel'
|
|
159
|
+
})
|
|
160
|
+
})
|
|
161
|
+
})
|
|
162
|
+
]
|
|
163
|
+
})
|
|
164
|
+
});
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
export { AddWidgetModal };
|
|
168
|
+
//# sourceMappingURL=AddWidgetModal.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AddWidgetModal.mjs","sources":["../../../../../../../admin/src/pages/Home/components/AddWidgetModal.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Modal, Typography } from '@strapi/design-system';\nimport { PuzzlePiece } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { WidgetComponent } from '../HomePage';\n\nimport type { WidgetWithUID } from '../../../core/apis/Widgets';\n\n// Hide scrollbars in widget previews\nconst WidgetWrapper = styled(Box)`\n * {\n scrollbar-width: none;\n -ms-overflow-style: none;\n }\n\n *::-webkit-scrollbar {\n display: none;\n }\n`;\n\n// Interactive widget preview container\nconst WidgetPreviewContainer = styled(Box)`\n &:hover {\n background-color: ${({ theme }) => theme.colors.primary100};\n border-color: ${({ theme }) => theme.colors.primary200};\n }\n\n &:focus-visible {\n background-color: ${({ theme }) => theme.colors.primary100};\n border-color: ${({ theme }) => theme.colors.primary200};\n outline-offset: 0;\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * AddWidgetModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AddWidgetModalProps {\n isOpen: boolean;\n onClose: () => void;\n onAddWidget: (widget: WidgetWithUID) => void;\n currentWidgets: WidgetWithUID[];\n availableWidgets: WidgetWithUID[];\n}\n\ninterface WidgetPreviewProps {\n widget: WidgetWithUID;\n onSelect: () => void;\n}\n\nconst WidgetPreview = ({ widget, onSelect }: WidgetPreviewProps) => {\n const { formatMessage } = useIntl();\n const Icon = widget.icon || PuzzlePiece;\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n onSelect();\n }\n };\n\n return (\n <WidgetPreviewContainer\n padding={4}\n background=\"neutral0\"\n borderColor=\"neutral200\"\n hasRadius\n shadow=\"tableShadow\"\n onClick={onSelect}\n onKeyDown={handleKeyDown}\n width={'100%'}\n cursor=\"pointer\"\n tabIndex={0}\n role=\"button\"\n aria-label={formatMessage(\n {\n id: 'HomePage.addWidget.selectWidget',\n defaultMessage: 'Select {widgetName} widget',\n },\n { widgetName: formatMessage(widget.title) }\n )}\n >\n <Flex direction=\"column\" alignItems=\"center\" gap={3}>\n <Flex gap={2} marginRight=\"auto\">\n <Icon fill=\"neutral500\" aria-hidden />\n <Typography textColor=\"neutral500\" variant=\"sigma\" tag=\"h2\">\n {formatMessage(widget.title)}\n </Typography>\n </Flex>\n <WidgetWrapper\n width={'100%'}\n style={{\n pointerEvents: 'none',\n }}\n >\n <WidgetComponent component={widget.component} columnWidth={4} />\n </WidgetWrapper>\n </Flex>\n </WidgetPreviewContainer>\n );\n};\n\nexport const AddWidgetModal = ({\n isOpen,\n onClose,\n onAddWidget,\n currentWidgets,\n availableWidgets,\n}: AddWidgetModalProps) => {\n const { formatMessage } = useIntl();\n\n const currentWidgetUids = React.useMemo(\n () => new Set(currentWidgets.map((widget) => widget.uid)),\n [currentWidgets]\n );\n\n const handleWidgetSelect = (widget: WidgetWithUID) => {\n if (!currentWidgetUids.has(widget.uid)) {\n onAddWidget(widget);\n onClose();\n }\n };\n\n const addableWidgets = availableWidgets.filter((widget) => !currentWidgetUids.has(widget.uid));\n\n return (\n <Modal.Root open={isOpen} onOpenChange={onClose}>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: 'HomePage.addWidget.title',\n defaultMessage: 'Add Widget',\n })}\n </Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Box>\n {addableWidgets.length === 0 ? (\n <Flex direction=\"column\" alignItems=\"center\" gap={4}>\n <PuzzlePiece width=\"4rem\" height=\"4rem\" fill=\"neutral300\" />\n <Typography textColor=\"neutral500\" textAlign=\"center\">\n {formatMessage({\n id: 'HomePage.addWidget.noWidgetsAvailable',\n defaultMessage: 'No widgets available to add',\n })}\n </Typography>\n </Flex>\n ) : (\n <Flex direction=\"column\" gap={3} justifyContent=\"center\">\n {addableWidgets.map((widget) => (\n <WidgetPreview\n key={widget.uid}\n widget={widget}\n onSelect={() => handleWidgetSelect(widget)}\n />\n ))}\n </Flex>\n )}\n </Box>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </Modal.Content>\n </Modal.Root>\n );\n};\n"],"names":["WidgetWrapper","styled","Box","WidgetPreviewContainer","theme","colors","primary100","primary200","WidgetPreview","widget","onSelect","formatMessage","useIntl","Icon","icon","PuzzlePiece","handleKeyDown","event","key","preventDefault","_jsx","padding","background","borderColor","hasRadius","shadow","onClick","onKeyDown","width","cursor","tabIndex","role","aria-label","id","defaultMessage","widgetName","title","_jsxs","Flex","direction","alignItems","gap","marginRight","fill","aria-hidden","Typography","textColor","variant","tag","style","pointerEvents","WidgetComponent","component","columnWidth","AddWidgetModal","isOpen","onClose","onAddWidget","currentWidgets","availableWidgets","currentWidgetUids","React","useMemo","Set","map","uid","handleWidgetSelect","has","addableWidgets","filter","Modal","Root","open","onOpenChange","Content","Header","Title","Body","length","height","textAlign","justifyContent","Footer","Button"],"mappings":"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"}
|
|
@@ -4,7 +4,8 @@ var api = require('./api.js');
|
|
|
4
4
|
|
|
5
5
|
const homepageService = api.adminApi.enhanceEndpoints({
|
|
6
6
|
addTagTypes: [
|
|
7
|
-
'CountDocuments'
|
|
7
|
+
'CountDocuments',
|
|
8
|
+
'HomepageLayout'
|
|
8
9
|
]
|
|
9
10
|
}).injectEndpoints({
|
|
10
11
|
endpoints: (builder)=>({
|
|
@@ -24,15 +25,21 @@ const homepageService = api.adminApi.enhanceEndpoints({
|
|
|
24
25
|
}),
|
|
25
26
|
getHomepageLayout: builder.query({
|
|
26
27
|
query: ()=>'/admin/homepage/layout',
|
|
27
|
-
transformResponse: (r)=>r.data
|
|
28
|
+
transformResponse: (r)=>r.data,
|
|
29
|
+
providesTags: [
|
|
30
|
+
'HomepageLayout'
|
|
31
|
+
]
|
|
28
32
|
}),
|
|
29
33
|
updateHomepageLayout: builder.mutation({
|
|
30
34
|
query: (body)=>({
|
|
31
35
|
url: '/admin/homepage/layout',
|
|
32
36
|
method: 'PUT',
|
|
33
|
-
body
|
|
37
|
+
data: body
|
|
34
38
|
}),
|
|
35
|
-
transformResponse: (r)=>r.data
|
|
39
|
+
transformResponse: (r)=>r.data,
|
|
40
|
+
invalidatesTags: [
|
|
41
|
+
'HomepageLayout'
|
|
42
|
+
]
|
|
36
43
|
})
|
|
37
44
|
})
|
|
38
45
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"homepage.js","sources":["../../../../../admin/src/services/homepage.ts"],"sourcesContent":["import * as Homepage from '../../../shared/contracts/homepage';\n\nimport { adminApi } from './api';\n\nconst homepageService = adminApi\n .enhanceEndpoints({\n addTagTypes: ['CountDocuments'],\n })\n .injectEndpoints({\n endpoints: (builder) => ({\n getKeyStatistics: builder.query<Homepage.GetKeyStatistics.Response['data'], void>({\n query: () => '/admin/homepage/key-statistics',\n transformResponse: (response: Homepage.GetKeyStatistics.Response) => response.data,\n providesTags: (_, _err) => ['HomepageKeyStatistics'],\n }),\n getCountDocuments: builder.query<Homepage.GetCountDocuments.Response['data'], void>({\n query: () => '/content-manager/homepage/count-documents',\n transformResponse: (response: Homepage.GetCountDocuments.Response) => response.data,\n providesTags: (_, _err) => ['CountDocuments'],\n }),\n getHomepageLayout: builder.query<Homepage.GetHomepageLayout.Response['data'], void>({\n query: () => '/admin/homepage/layout',\n transformResponse: (r: Homepage.GetHomepageLayout.Response) => r.data,\n }),\n updateHomepageLayout: builder.mutation<\n Homepage.UpdateHomepageLayout.Response['data'],\n Homepage.UpdateHomepageLayout.Request['body']\n >({\n query: (body) => ({ url: '/admin/homepage/layout', method: 'PUT', body }),\n transformResponse: (r: Homepage.UpdateHomepageLayout.Response) => r.data,\n }),\n }),\n });\n\nconst {\n useGetKeyStatisticsQuery,\n useGetCountDocumentsQuery,\n useGetHomepageLayoutQuery,\n useUpdateHomepageLayoutMutation,\n} = homepageService;\n\nexport {\n useGetKeyStatisticsQuery,\n useGetCountDocumentsQuery,\n useGetHomepageLayoutQuery,\n useUpdateHomepageLayoutMutation,\n};\n"],"names":["homepageService","adminApi","enhanceEndpoints","addTagTypes","injectEndpoints","endpoints","builder","getKeyStatistics","query","transformResponse","response","data","providesTags","_","_err","getCountDocuments","getHomepageLayout","r","updateHomepageLayout","mutation","body","url","method","useGetKeyStatisticsQuery","useGetCountDocumentsQuery","useGetHomepageLayoutQuery","useUpdateHomepageLayoutMutation"],"mappings":";;;;AAIA,MAAMA,eAAAA,GAAkBC,YACrBC,CAAAA,gBAAgB,CAAC;IAChBC,WAAa,EAAA;AAAC,QAAA;AAAiB;
|
|
1
|
+
{"version":3,"file":"homepage.js","sources":["../../../../../admin/src/services/homepage.ts"],"sourcesContent":["import * as Homepage from '../../../shared/contracts/homepage';\n\nimport { adminApi } from './api';\n\nconst homepageService = adminApi\n .enhanceEndpoints({\n addTagTypes: ['CountDocuments', 'HomepageLayout'],\n })\n .injectEndpoints({\n endpoints: (builder) => ({\n getKeyStatistics: builder.query<Homepage.GetKeyStatistics.Response['data'], void>({\n query: () => '/admin/homepage/key-statistics',\n transformResponse: (response: Homepage.GetKeyStatistics.Response) => response.data,\n providesTags: (_, _err) => ['HomepageKeyStatistics'],\n }),\n getCountDocuments: builder.query<Homepage.GetCountDocuments.Response['data'], void>({\n query: () => '/content-manager/homepage/count-documents',\n transformResponse: (response: Homepage.GetCountDocuments.Response) => response.data,\n providesTags: (_, _err) => ['CountDocuments'],\n }),\n getHomepageLayout: builder.query<Homepage.GetHomepageLayout.Response['data'], void>({\n query: () => '/admin/homepage/layout',\n transformResponse: (r: Homepage.GetHomepageLayout.Response) => r.data,\n providesTags: ['HomepageLayout'],\n }),\n updateHomepageLayout: builder.mutation<\n Homepage.UpdateHomepageLayout.Response['data'],\n Homepage.UpdateHomepageLayout.Request['body']\n >({\n query: (body) => ({ url: '/admin/homepage/layout', method: 'PUT', data: body }),\n transformResponse: (r: Homepage.UpdateHomepageLayout.Response) => r.data,\n invalidatesTags: ['HomepageLayout'],\n }),\n }),\n });\n\nconst {\n useGetKeyStatisticsQuery,\n useGetCountDocumentsQuery,\n useGetHomepageLayoutQuery,\n useUpdateHomepageLayoutMutation,\n} = homepageService;\n\nexport {\n useGetKeyStatisticsQuery,\n useGetCountDocumentsQuery,\n useGetHomepageLayoutQuery,\n useUpdateHomepageLayoutMutation,\n};\n"],"names":["homepageService","adminApi","enhanceEndpoints","addTagTypes","injectEndpoints","endpoints","builder","getKeyStatistics","query","transformResponse","response","data","providesTags","_","_err","getCountDocuments","getHomepageLayout","r","updateHomepageLayout","mutation","body","url","method","invalidatesTags","useGetKeyStatisticsQuery","useGetCountDocumentsQuery","useGetHomepageLayoutQuery","useUpdateHomepageLayoutMutation"],"mappings":";;;;AAIA,MAAMA,eAAAA,GAAkBC,YACrBC,CAAAA,gBAAgB,CAAC;IAChBC,WAAa,EAAA;AAAC,QAAA,gBAAA;AAAkB,QAAA;AAAiB;AACnD,CAAA,CAAA,CACCC,eAAe,CAAC;IACfC,SAAW,EAAA,CAACC,WAAa;YACvBC,gBAAkBD,EAAAA,OAAAA,CAAQE,KAAK,CAAmD;AAChFA,gBAAAA,KAAAA,EAAO,IAAM,gCAAA;gBACbC,iBAAmB,EAAA,CAACC,QAAiDA,GAAAA,QAAAA,CAASC,IAAI;gBAClFC,YAAc,EAAA,CAACC,GAAGC,IAAS,GAAA;AAAC,wBAAA;AAAwB;AACtD,aAAA,CAAA;YACAC,iBAAmBT,EAAAA,OAAAA,CAAQE,KAAK,CAAoD;AAClFA,gBAAAA,KAAAA,EAAO,IAAM,2CAAA;gBACbC,iBAAmB,EAAA,CAACC,QAAkDA,GAAAA,QAAAA,CAASC,IAAI;gBACnFC,YAAc,EAAA,CAACC,GAAGC,IAAS,GAAA;AAAC,wBAAA;AAAiB;AAC/C,aAAA,CAAA;YACAE,iBAAmBV,EAAAA,OAAAA,CAAQE,KAAK,CAAoD;AAClFA,gBAAAA,KAAAA,EAAO,IAAM,wBAAA;gBACbC,iBAAmB,EAAA,CAACQ,CAA2CA,GAAAA,CAAAA,CAAEN,IAAI;gBACrEC,YAAc,EAAA;AAAC,oBAAA;AAAiB;AAClC,aAAA,CAAA;YACAM,oBAAsBZ,EAAAA,OAAAA,CAAQa,QAAQ,CAGpC;gBACAX,KAAO,EAAA,CAACY,QAAU;wBAAEC,GAAK,EAAA,wBAAA;wBAA0BC,MAAQ,EAAA,KAAA;wBAAOX,IAAMS,EAAAA;qBAAK,CAAA;gBAC7EX,iBAAmB,EAAA,CAACQ,CAA8CA,GAAAA,CAAAA,CAAEN,IAAI;gBACxEY,eAAiB,EAAA;AAAC,oBAAA;AAAiB;AACrC,aAAA;SACF;AACF,CAAA,CAAA;AAEI,MAAA,EACJC,wBAAwB,EACxBC,yBAAyB,EACzBC,yBAAyB,EACzBC,+BAA+B,EAChC,GAAG3B;;;;;;;"}
|
|
@@ -2,7 +2,8 @@ import { adminApi } from './api.mjs';
|
|
|
2
2
|
|
|
3
3
|
const homepageService = adminApi.enhanceEndpoints({
|
|
4
4
|
addTagTypes: [
|
|
5
|
-
'CountDocuments'
|
|
5
|
+
'CountDocuments',
|
|
6
|
+
'HomepageLayout'
|
|
6
7
|
]
|
|
7
8
|
}).injectEndpoints({
|
|
8
9
|
endpoints: (builder)=>({
|
|
@@ -22,15 +23,21 @@ const homepageService = adminApi.enhanceEndpoints({
|
|
|
22
23
|
}),
|
|
23
24
|
getHomepageLayout: builder.query({
|
|
24
25
|
query: ()=>'/admin/homepage/layout',
|
|
25
|
-
transformResponse: (r)=>r.data
|
|
26
|
+
transformResponse: (r)=>r.data,
|
|
27
|
+
providesTags: [
|
|
28
|
+
'HomepageLayout'
|
|
29
|
+
]
|
|
26
30
|
}),
|
|
27
31
|
updateHomepageLayout: builder.mutation({
|
|
28
32
|
query: (body)=>({
|
|
29
33
|
url: '/admin/homepage/layout',
|
|
30
34
|
method: 'PUT',
|
|
31
|
-
body
|
|
35
|
+
data: body
|
|
32
36
|
}),
|
|
33
|
-
transformResponse: (r)=>r.data
|
|
37
|
+
transformResponse: (r)=>r.data,
|
|
38
|
+
invalidatesTags: [
|
|
39
|
+
'HomepageLayout'
|
|
40
|
+
]
|
|
34
41
|
})
|
|
35
42
|
})
|
|
36
43
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"homepage.mjs","sources":["../../../../../admin/src/services/homepage.ts"],"sourcesContent":["import * as Homepage from '../../../shared/contracts/homepage';\n\nimport { adminApi } from './api';\n\nconst homepageService = adminApi\n .enhanceEndpoints({\n addTagTypes: ['CountDocuments'],\n })\n .injectEndpoints({\n endpoints: (builder) => ({\n getKeyStatistics: builder.query<Homepage.GetKeyStatistics.Response['data'], void>({\n query: () => '/admin/homepage/key-statistics',\n transformResponse: (response: Homepage.GetKeyStatistics.Response) => response.data,\n providesTags: (_, _err) => ['HomepageKeyStatistics'],\n }),\n getCountDocuments: builder.query<Homepage.GetCountDocuments.Response['data'], void>({\n query: () => '/content-manager/homepage/count-documents',\n transformResponse: (response: Homepage.GetCountDocuments.Response) => response.data,\n providesTags: (_, _err) => ['CountDocuments'],\n }),\n getHomepageLayout: builder.query<Homepage.GetHomepageLayout.Response['data'], void>({\n query: () => '/admin/homepage/layout',\n transformResponse: (r: Homepage.GetHomepageLayout.Response) => r.data,\n }),\n updateHomepageLayout: builder.mutation<\n Homepage.UpdateHomepageLayout.Response['data'],\n Homepage.UpdateHomepageLayout.Request['body']\n >({\n query: (body) => ({ url: '/admin/homepage/layout', method: 'PUT', body }),\n transformResponse: (r: Homepage.UpdateHomepageLayout.Response) => r.data,\n }),\n }),\n });\n\nconst {\n useGetKeyStatisticsQuery,\n useGetCountDocumentsQuery,\n useGetHomepageLayoutQuery,\n useUpdateHomepageLayoutMutation,\n} = homepageService;\n\nexport {\n useGetKeyStatisticsQuery,\n useGetCountDocumentsQuery,\n useGetHomepageLayoutQuery,\n useUpdateHomepageLayoutMutation,\n};\n"],"names":["homepageService","adminApi","enhanceEndpoints","addTagTypes","injectEndpoints","endpoints","builder","getKeyStatistics","query","transformResponse","response","data","providesTags","_","_err","getCountDocuments","getHomepageLayout","r","updateHomepageLayout","mutation","body","url","method","useGetKeyStatisticsQuery","useGetCountDocumentsQuery","useGetHomepageLayoutQuery","useUpdateHomepageLayoutMutation"],"mappings":";;AAIA,MAAMA,eAAAA,GAAkBC,QACrBC,CAAAA,gBAAgB,CAAC;IAChBC,WAAa,EAAA;AAAC,QAAA;AAAiB;
|
|
1
|
+
{"version":3,"file":"homepage.mjs","sources":["../../../../../admin/src/services/homepage.ts"],"sourcesContent":["import * as Homepage from '../../../shared/contracts/homepage';\n\nimport { adminApi } from './api';\n\nconst homepageService = adminApi\n .enhanceEndpoints({\n addTagTypes: ['CountDocuments', 'HomepageLayout'],\n })\n .injectEndpoints({\n endpoints: (builder) => ({\n getKeyStatistics: builder.query<Homepage.GetKeyStatistics.Response['data'], void>({\n query: () => '/admin/homepage/key-statistics',\n transformResponse: (response: Homepage.GetKeyStatistics.Response) => response.data,\n providesTags: (_, _err) => ['HomepageKeyStatistics'],\n }),\n getCountDocuments: builder.query<Homepage.GetCountDocuments.Response['data'], void>({\n query: () => '/content-manager/homepage/count-documents',\n transformResponse: (response: Homepage.GetCountDocuments.Response) => response.data,\n providesTags: (_, _err) => ['CountDocuments'],\n }),\n getHomepageLayout: builder.query<Homepage.GetHomepageLayout.Response['data'], void>({\n query: () => '/admin/homepage/layout',\n transformResponse: (r: Homepage.GetHomepageLayout.Response) => r.data,\n providesTags: ['HomepageLayout'],\n }),\n updateHomepageLayout: builder.mutation<\n Homepage.UpdateHomepageLayout.Response['data'],\n Homepage.UpdateHomepageLayout.Request['body']\n >({\n query: (body) => ({ url: '/admin/homepage/layout', method: 'PUT', data: body }),\n transformResponse: (r: Homepage.UpdateHomepageLayout.Response) => r.data,\n invalidatesTags: ['HomepageLayout'],\n }),\n }),\n });\n\nconst {\n useGetKeyStatisticsQuery,\n useGetCountDocumentsQuery,\n useGetHomepageLayoutQuery,\n useUpdateHomepageLayoutMutation,\n} = homepageService;\n\nexport {\n useGetKeyStatisticsQuery,\n useGetCountDocumentsQuery,\n useGetHomepageLayoutQuery,\n useUpdateHomepageLayoutMutation,\n};\n"],"names":["homepageService","adminApi","enhanceEndpoints","addTagTypes","injectEndpoints","endpoints","builder","getKeyStatistics","query","transformResponse","response","data","providesTags","_","_err","getCountDocuments","getHomepageLayout","r","updateHomepageLayout","mutation","body","url","method","invalidatesTags","useGetKeyStatisticsQuery","useGetCountDocumentsQuery","useGetHomepageLayoutQuery","useUpdateHomepageLayoutMutation"],"mappings":";;AAIA,MAAMA,eAAAA,GAAkBC,QACrBC,CAAAA,gBAAgB,CAAC;IAChBC,WAAa,EAAA;AAAC,QAAA,gBAAA;AAAkB,QAAA;AAAiB;AACnD,CAAA,CAAA,CACCC,eAAe,CAAC;IACfC,SAAW,EAAA,CAACC,WAAa;YACvBC,gBAAkBD,EAAAA,OAAAA,CAAQE,KAAK,CAAmD;AAChFA,gBAAAA,KAAAA,EAAO,IAAM,gCAAA;gBACbC,iBAAmB,EAAA,CAACC,QAAiDA,GAAAA,QAAAA,CAASC,IAAI;gBAClFC,YAAc,EAAA,CAACC,GAAGC,IAAS,GAAA;AAAC,wBAAA;AAAwB;AACtD,aAAA,CAAA;YACAC,iBAAmBT,EAAAA,OAAAA,CAAQE,KAAK,CAAoD;AAClFA,gBAAAA,KAAAA,EAAO,IAAM,2CAAA;gBACbC,iBAAmB,EAAA,CAACC,QAAkDA,GAAAA,QAAAA,CAASC,IAAI;gBACnFC,YAAc,EAAA,CAACC,GAAGC,IAAS,GAAA;AAAC,wBAAA;AAAiB;AAC/C,aAAA,CAAA;YACAE,iBAAmBV,EAAAA,OAAAA,CAAQE,KAAK,CAAoD;AAClFA,gBAAAA,KAAAA,EAAO,IAAM,wBAAA;gBACbC,iBAAmB,EAAA,CAACQ,CAA2CA,GAAAA,CAAAA,CAAEN,IAAI;gBACrEC,YAAc,EAAA;AAAC,oBAAA;AAAiB;AAClC,aAAA,CAAA;YACAM,oBAAsBZ,EAAAA,OAAAA,CAAQa,QAAQ,CAGpC;gBACAX,KAAO,EAAA,CAACY,QAAU;wBAAEC,GAAK,EAAA,wBAAA;wBAA0BC,MAAQ,EAAA,KAAA;wBAAOX,IAAMS,EAAAA;qBAAK,CAAA;gBAC7EX,iBAAmB,EAAA,CAACQ,CAA8CA,GAAAA,CAAAA,CAAEN,IAAI;gBACxEY,eAAiB,EAAA;AAAC,oBAAA;AAAiB;AACrC,aAAA;SACF;AACF,CAAA,CAAA;AAEI,MAAA,EACJC,wBAAwB,EACxBC,yBAAyB,EACzBC,yBAAyB,EACzBC,+BAA+B,EAChC,GAAG3B;;;;"}
|
|
@@ -897,7 +897,12 @@ var en = {
|
|
|
897
897
|
"widget.last-activity.link": "Open Audit Logs",
|
|
898
898
|
"widget.last-activity.no-activity": "No activity",
|
|
899
899
|
"widget.last-activity.title": "Last activity",
|
|
900
|
-
"widget.profile.title": "Profile"
|
|
900
|
+
"widget.profile.title": "Profile",
|
|
901
|
+
"HomePage.addWidget.title": "Add Widget",
|
|
902
|
+
"HomePage.addWidget.noWidgetsAvailable": "No widgets available to add",
|
|
903
|
+
"HomePage.addWidget.button": "Add Widget",
|
|
904
|
+
"HomePage.widget.delete": "Delete",
|
|
905
|
+
"HomePage.widget.drag": "Drag to move"
|
|
901
906
|
};
|
|
902
907
|
|
|
903
908
|
exports.Analytics = Analytics;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -893,7 +893,12 @@ var en = {
|
|
|
893
893
|
"widget.last-activity.link": "Open Audit Logs",
|
|
894
894
|
"widget.last-activity.no-activity": "No activity",
|
|
895
895
|
"widget.last-activity.title": "Last activity",
|
|
896
|
-
"widget.profile.title": "Profile"
|
|
896
|
+
"widget.profile.title": "Profile",
|
|
897
|
+
"HomePage.addWidget.title": "Add Widget",
|
|
898
|
+
"HomePage.addWidget.noWidgetsAvailable": "No widgets available to add",
|
|
899
|
+
"HomePage.addWidget.button": "Add Widget",
|
|
900
|
+
"HomePage.widget.delete": "Delete",
|
|
901
|
+
"HomePage.widget.drag": "Drag to move"
|
|
897
902
|
};
|
|
898
903
|
|
|
899
904
|
export { Analytics, Documentation, Email, Password, Provider, ResetPasswordToken, Role, Username, Users, anErrorOccurred, clearLabel, dark, en as default, light, noPreview, or, selectButtonTitle, skipToContent, submit };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"en.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -77,7 +77,7 @@ var uk = {
|
|
|
77
77
|
"Auth.privacy-policy-agreement.policy": "політику конфіденційності",
|
|
78
78
|
"Auth.privacy-policy-agreement.terms": "умови",
|
|
79
79
|
"Auth.reset-password.title": "Скиньте пароль",
|
|
80
|
-
"Content Manager": "
|
|
80
|
+
"Content Manager": "Редактор контенту",
|
|
81
81
|
"Content Type Builder": "Конструктор типів вмісту",
|
|
82
82
|
Documentation: Documentation,
|
|
83
83
|
Email: Email,
|
|
@@ -95,7 +95,7 @@ var uk = {
|
|
|
95
95
|
Role: Role,
|
|
96
96
|
"Roles & Permissions": "Ролі й доступи",
|
|
97
97
|
"Roles.ListPage.notification.delete-all-not-allowed": "Деякі ролі не можна було видалити, оскільки вони пов'язані з користувачем",
|
|
98
|
-
"Roles.ListPage.notification.delete-not-allowed": "Роль не може бути видалена, якщо
|
|
98
|
+
"Roles.ListPage.notification.delete-not-allowed": "Роль не може бути видалена, якщо пов'язана з користувачами",
|
|
99
99
|
"Roles.RoleRow.select-all": "Виберіть {name} для масових дій",
|
|
100
100
|
"Roles.RoleRow.user-count": "{number, plural, =0 {# користувачів} one {# користувач} few{# користувачів} many {# користувачів} other {# користувачі}}",
|
|
101
101
|
"Roles.components.List.empty.withSearch": "Немає ролі, що відповідає пошуку ({search})...",
|
|
@@ -412,7 +412,7 @@ var uk = {
|
|
|
412
412
|
"app.components.BlockLink.blog": "Блог",
|
|
413
413
|
"app.components.BlockLink.blog.content": "Читайте останні новини про Strapi та екосистему.",
|
|
414
414
|
"app.components.BlockLink.cloud": "Strapi Хмара",
|
|
415
|
-
"app.components.BlockLink.cloud.content": "Повністю
|
|
415
|
+
"app.components.BlockLink.cloud.content": "Повністю керований хмарний хостинг для вашого проекту Strapi.",
|
|
416
416
|
"app.components.BlockLink.code": "Приклади коду",
|
|
417
417
|
"app.components.BlockLink.code.content": "Вчіться, тестуючи реальні проєкти, розроблені спільнотою.",
|
|
418
418
|
"app.components.BlockLink.documentation.content": "Відкрийте для себе основні концепції, посібники та інструкції.",
|
|
@@ -425,7 +425,7 @@ var uk = {
|
|
|
425
425
|
"app.components.ConfirmDialog.title": "Підтвердження",
|
|
426
426
|
"app.components.DownloadInfo.download": "Завантажується...",
|
|
427
427
|
"app.components.DownloadInfo.text": "Це може зайняти хвилинку. Дякуємо за терпіння.",
|
|
428
|
-
"app.components.EmptyAttributes.title": "Поки немає
|
|
428
|
+
"app.components.EmptyAttributes.title": "Поки немає полів",
|
|
429
429
|
"app.components.EmptyStateLayout.content-document": "Не знайдено вміст",
|
|
430
430
|
"app.components.EmptyStateLayout.content-permissions": "У вас немає дозволів на доступ до цього вмісту",
|
|
431
431
|
"app.components.GuidedTour.CM.create.content": "<p>Створюйте та керуйте всіма вмістами тут у Менеджері вмісту.</p><p>Наприклад, продовжуючи приклад блогу, ви можете написати статтю, зберегти її та опублікувати, як вам подобається.</p><p>💡 Порада — не забудьте натиснути «Опублікувати» на створеному вмісті.</p>",
|
|
@@ -491,7 +491,7 @@ var uk = {
|
|
|
491
491
|
"app.components.LeftMenuLinkContainer.singleTypes": "Типи Одиниць",
|
|
492
492
|
"app.components.ListPluginsPage.deletePlugin.description": "Видалення плаґіна може зайняти кілька секунд.",
|
|
493
493
|
"app.components.ListPluginsPage.deletePlugin.title": "Видалення",
|
|
494
|
-
"app.components.ListPluginsPage.description": "Список
|
|
494
|
+
"app.components.ListPluginsPage.description": "Список встановлених плаґінів у проекті.",
|
|
495
495
|
"app.components.ListPluginsPage.head.title": "Список плаґінів",
|
|
496
496
|
"app.components.Logout.logout": "Вийти",
|
|
497
497
|
"app.components.Logout.profile": "Профіль",
|
|
@@ -517,7 +517,7 @@ var uk = {
|
|
|
517
517
|
"app.components.Onboarding.title": "Вступні відео",
|
|
518
518
|
"app.components.PluginCard.Button.label.download": "Завантажити",
|
|
519
519
|
"app.components.PluginCard.Button.label.install": "Вже встановлено",
|
|
520
|
-
"app.components.PluginCard.PopUpWarning.install.impossible.autoReload.needed": "Функція autoReload має
|
|
520
|
+
"app.components.PluginCard.PopUpWarning.install.impossible.autoReload.needed": "Функція autoReload має бути включена. Будь ласка, запустіть свій додаток використовуючи `yarn develop`.",
|
|
521
521
|
"app.components.PluginCard.PopUpWarning.install.impossible.confirm": "Я розумію!",
|
|
522
522
|
"app.components.PluginCard.PopUpWarning.install.impossible.environment": "З міркувань безпеки плаґін можна завантажити тільки в середовищі розробки.",
|
|
523
523
|
"app.components.PluginCard.PopUpWarning.install.impossible.title": "Завантаження неможливе",
|
|
@@ -612,7 +612,7 @@ var uk = {
|
|
|
612
612
|
"components.Input.error.custom-error": "{errorMessage} ",
|
|
613
613
|
"components.Input.error.password.noMatch": "Паролі не співпадають.",
|
|
614
614
|
"components.Input.error.validation.email": "Це не адреса електронної пошти",
|
|
615
|
-
"components.Input.error.validation.json": "Це не
|
|
615
|
+
"components.Input.error.validation.json": "Це не відповідає формату JSON",
|
|
616
616
|
"components.Input.error.validation.lowercase": "Це має бути рядком з малими літерами",
|
|
617
617
|
"components.Input.error.validation.max": "Значення занадто велике {max}.",
|
|
618
618
|
"components.Input.error.validation.maxLength": "Значення занадто довге {max}.",
|
|
@@ -674,7 +674,7 @@ var uk = {
|
|
|
674
674
|
"components.Blocks.blocks.code": "Блок коду",
|
|
675
675
|
"components.Blocks.blocks.quote": "Цитата",
|
|
676
676
|
"components.Blocks.blocks.image": "Зображення",
|
|
677
|
-
"components.Blocks.blocks.unorderedList": "
|
|
677
|
+
"components.Blocks.blocks.unorderedList": "Маркований список",
|
|
678
678
|
"components.Blocks.blocks.orderedList": "Нумерований список",
|
|
679
679
|
"components.Blocks.blocks.code.languageLabel": "Виберіть мову",
|
|
680
680
|
"components.Blocks.dnd.instruction": "Щоб змінити порядок блоків, натисніть Command або Control разом із Shift і клавішами зі стрілками вгору або вниз",
|
|
@@ -700,7 +700,7 @@ var uk = {
|
|
|
700
700
|
"components.popUpWarning.button.cancel": "Ні, скасувати",
|
|
701
701
|
"components.popUpWarning.button.confirm": "Так, підтвердити",
|
|
702
702
|
"components.popUpWarning.message": "Ви впевнені, що хочете це видалити?",
|
|
703
|
-
"components.popUpWarning.title": "
|
|
703
|
+
"components.popUpWarning.title": "Підтвердьте, будь ласка",
|
|
704
704
|
dark: dark,
|
|
705
705
|
"form.button.continue": "Продовжити",
|
|
706
706
|
"form.button.done": "Готово",
|
|
@@ -73,7 +73,7 @@ var uk = {
|
|
|
73
73
|
"Auth.privacy-policy-agreement.policy": "політику конфіденційності",
|
|
74
74
|
"Auth.privacy-policy-agreement.terms": "умови",
|
|
75
75
|
"Auth.reset-password.title": "Скиньте пароль",
|
|
76
|
-
"Content Manager": "
|
|
76
|
+
"Content Manager": "Редактор контенту",
|
|
77
77
|
"Content Type Builder": "Конструктор типів вмісту",
|
|
78
78
|
Documentation: Documentation,
|
|
79
79
|
Email: Email,
|
|
@@ -91,7 +91,7 @@ var uk = {
|
|
|
91
91
|
Role: Role,
|
|
92
92
|
"Roles & Permissions": "Ролі й доступи",
|
|
93
93
|
"Roles.ListPage.notification.delete-all-not-allowed": "Деякі ролі не можна було видалити, оскільки вони пов'язані з користувачем",
|
|
94
|
-
"Roles.ListPage.notification.delete-not-allowed": "Роль не може бути видалена, якщо
|
|
94
|
+
"Roles.ListPage.notification.delete-not-allowed": "Роль не може бути видалена, якщо пов'язана з користувачами",
|
|
95
95
|
"Roles.RoleRow.select-all": "Виберіть {name} для масових дій",
|
|
96
96
|
"Roles.RoleRow.user-count": "{number, plural, =0 {# користувачів} one {# користувач} few{# користувачів} many {# користувачів} other {# користувачі}}",
|
|
97
97
|
"Roles.components.List.empty.withSearch": "Немає ролі, що відповідає пошуку ({search})...",
|
|
@@ -408,7 +408,7 @@ var uk = {
|
|
|
408
408
|
"app.components.BlockLink.blog": "Блог",
|
|
409
409
|
"app.components.BlockLink.blog.content": "Читайте останні новини про Strapi та екосистему.",
|
|
410
410
|
"app.components.BlockLink.cloud": "Strapi Хмара",
|
|
411
|
-
"app.components.BlockLink.cloud.content": "Повністю
|
|
411
|
+
"app.components.BlockLink.cloud.content": "Повністю керований хмарний хостинг для вашого проекту Strapi.",
|
|
412
412
|
"app.components.BlockLink.code": "Приклади коду",
|
|
413
413
|
"app.components.BlockLink.code.content": "Вчіться, тестуючи реальні проєкти, розроблені спільнотою.",
|
|
414
414
|
"app.components.BlockLink.documentation.content": "Відкрийте для себе основні концепції, посібники та інструкції.",
|
|
@@ -421,7 +421,7 @@ var uk = {
|
|
|
421
421
|
"app.components.ConfirmDialog.title": "Підтвердження",
|
|
422
422
|
"app.components.DownloadInfo.download": "Завантажується...",
|
|
423
423
|
"app.components.DownloadInfo.text": "Це може зайняти хвилинку. Дякуємо за терпіння.",
|
|
424
|
-
"app.components.EmptyAttributes.title": "Поки немає
|
|
424
|
+
"app.components.EmptyAttributes.title": "Поки немає полів",
|
|
425
425
|
"app.components.EmptyStateLayout.content-document": "Не знайдено вміст",
|
|
426
426
|
"app.components.EmptyStateLayout.content-permissions": "У вас немає дозволів на доступ до цього вмісту",
|
|
427
427
|
"app.components.GuidedTour.CM.create.content": "<p>Створюйте та керуйте всіма вмістами тут у Менеджері вмісту.</p><p>Наприклад, продовжуючи приклад блогу, ви можете написати статтю, зберегти її та опублікувати, як вам подобається.</p><p>💡 Порада — не забудьте натиснути «Опублікувати» на створеному вмісті.</p>",
|
|
@@ -487,7 +487,7 @@ var uk = {
|
|
|
487
487
|
"app.components.LeftMenuLinkContainer.singleTypes": "Типи Одиниць",
|
|
488
488
|
"app.components.ListPluginsPage.deletePlugin.description": "Видалення плаґіна може зайняти кілька секунд.",
|
|
489
489
|
"app.components.ListPluginsPage.deletePlugin.title": "Видалення",
|
|
490
|
-
"app.components.ListPluginsPage.description": "Список
|
|
490
|
+
"app.components.ListPluginsPage.description": "Список встановлених плаґінів у проекті.",
|
|
491
491
|
"app.components.ListPluginsPage.head.title": "Список плаґінів",
|
|
492
492
|
"app.components.Logout.logout": "Вийти",
|
|
493
493
|
"app.components.Logout.profile": "Профіль",
|
|
@@ -513,7 +513,7 @@ var uk = {
|
|
|
513
513
|
"app.components.Onboarding.title": "Вступні відео",
|
|
514
514
|
"app.components.PluginCard.Button.label.download": "Завантажити",
|
|
515
515
|
"app.components.PluginCard.Button.label.install": "Вже встановлено",
|
|
516
|
-
"app.components.PluginCard.PopUpWarning.install.impossible.autoReload.needed": "Функція autoReload має
|
|
516
|
+
"app.components.PluginCard.PopUpWarning.install.impossible.autoReload.needed": "Функція autoReload має бути включена. Будь ласка, запустіть свій додаток використовуючи `yarn develop`.",
|
|
517
517
|
"app.components.PluginCard.PopUpWarning.install.impossible.confirm": "Я розумію!",
|
|
518
518
|
"app.components.PluginCard.PopUpWarning.install.impossible.environment": "З міркувань безпеки плаґін можна завантажити тільки в середовищі розробки.",
|
|
519
519
|
"app.components.PluginCard.PopUpWarning.install.impossible.title": "Завантаження неможливе",
|
|
@@ -608,7 +608,7 @@ var uk = {
|
|
|
608
608
|
"components.Input.error.custom-error": "{errorMessage} ",
|
|
609
609
|
"components.Input.error.password.noMatch": "Паролі не співпадають.",
|
|
610
610
|
"components.Input.error.validation.email": "Це не адреса електронної пошти",
|
|
611
|
-
"components.Input.error.validation.json": "Це не
|
|
611
|
+
"components.Input.error.validation.json": "Це не відповідає формату JSON",
|
|
612
612
|
"components.Input.error.validation.lowercase": "Це має бути рядком з малими літерами",
|
|
613
613
|
"components.Input.error.validation.max": "Значення занадто велике {max}.",
|
|
614
614
|
"components.Input.error.validation.maxLength": "Значення занадто довге {max}.",
|
|
@@ -670,7 +670,7 @@ var uk = {
|
|
|
670
670
|
"components.Blocks.blocks.code": "Блок коду",
|
|
671
671
|
"components.Blocks.blocks.quote": "Цитата",
|
|
672
672
|
"components.Blocks.blocks.image": "Зображення",
|
|
673
|
-
"components.Blocks.blocks.unorderedList": "
|
|
673
|
+
"components.Blocks.blocks.unorderedList": "Маркований список",
|
|
674
674
|
"components.Blocks.blocks.orderedList": "Нумерований список",
|
|
675
675
|
"components.Blocks.blocks.code.languageLabel": "Виберіть мову",
|
|
676
676
|
"components.Blocks.dnd.instruction": "Щоб змінити порядок блоків, натисніть Command або Control разом із Shift і клавішами зі стрілками вгору або вниз",
|
|
@@ -696,7 +696,7 @@ var uk = {
|
|
|
696
696
|
"components.popUpWarning.button.cancel": "Ні, скасувати",
|
|
697
697
|
"components.popUpWarning.button.confirm": "Так, підтвердити",
|
|
698
698
|
"components.popUpWarning.message": "Ви впевнені, що хочете це видалити?",
|
|
699
|
-
"components.popUpWarning.title": "
|
|
699
|
+
"components.popUpWarning.title": "Підтвердьте, будь ласка",
|
|
700
700
|
dark: dark,
|
|
701
701
|
"form.button.continue": "Продовжити",
|
|
702
702
|
"form.button.done": "Готово",
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var widgetLayout = require('./widgetLayout.js');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Snaps a width value to the nearest discrete size
|
|
7
|
+
*/ const snapToDiscreteSize = (width)=>{
|
|
8
|
+
return widgetLayout.WIDGET_SIZING.DISCRETE_SIZES.reduce((prev, curr)=>Math.abs(curr - width) < Math.abs(prev - width) ? curr : prev);
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Ensures two widths sum to exactly 12 columns by adjusting the right width
|
|
12
|
+
*/ const adjustToTotalColumns = (leftWidth, rightWidth)=>{
|
|
13
|
+
const totalWidth = leftWidth + rightWidth;
|
|
14
|
+
if (totalWidth !== widgetLayout.WIDGET_SIZING.TOTAL_COLUMNS) {
|
|
15
|
+
const difference = widgetLayout.WIDGET_SIZING.TOTAL_COLUMNS - totalWidth;
|
|
16
|
+
rightWidth += difference;
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
leftWidth,
|
|
20
|
+
rightWidth
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Validates if two widget widths together are valid (sum to 12 columns)
|
|
25
|
+
*/ const isValidResize = (leftWidth, rightWidth)=>{
|
|
26
|
+
return leftWidth >= widgetLayout.WIDGET_SIZING.MIN_WIDGET_WIDTH && rightWidth >= widgetLayout.WIDGET_SIZING.MIN_WIDGET_WIDTH && leftWidth + rightWidth === widgetLayout.WIDGET_SIZING.TOTAL_COLUMNS;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Get bounding rects for all elements
|
|
30
|
+
*/ const getElementRects = (leftElement, rightElement, containerElement)=>{
|
|
31
|
+
if (!leftElement || !rightElement || !containerElement) {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
leftRect: leftElement.getBoundingClientRect(),
|
|
36
|
+
rightRect: rightElement.getBoundingClientRect(),
|
|
37
|
+
containerRect: containerElement.getBoundingClientRect()
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Calculate resize handle position from DOM elements
|
|
42
|
+
*/ const calculateResizeHandlePosition = (leftElement, rightElement, containerElement)=>{
|
|
43
|
+
const rects = getElementRects(leftElement, rightElement, containerElement);
|
|
44
|
+
if (!rects) {
|
|
45
|
+
return {
|
|
46
|
+
left: 0,
|
|
47
|
+
top: 0,
|
|
48
|
+
height: 0
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
const { leftRect, rightRect, containerRect } = rects;
|
|
52
|
+
const left = leftRect.right - containerRect.left;
|
|
53
|
+
const top = leftRect.top - containerRect.top;
|
|
54
|
+
const height = Math.max(leftRect.height, rightRect.height);
|
|
55
|
+
return {
|
|
56
|
+
left,
|
|
57
|
+
top,
|
|
58
|
+
height
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Calculate row bounds for resize indicator from DOM elements
|
|
63
|
+
*/ const calculateRowBounds = (leftElement, rightElement, containerElement)=>{
|
|
64
|
+
const rects = getElementRects(leftElement, rightElement, containerElement);
|
|
65
|
+
if (!rects) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
const { leftRect, rightRect, containerRect } = rects;
|
|
69
|
+
const rowLeft = Math.min(leftRect.left, rightRect.left) - containerRect.left;
|
|
70
|
+
const rowTop = leftRect.top - containerRect.top;
|
|
71
|
+
const rowWidth = Math.max(leftRect.right, rightRect.right) - Math.min(leftRect.left, rightRect.left);
|
|
72
|
+
const rowHeight = Math.max(leftRect.height, rightRect.height);
|
|
73
|
+
return {
|
|
74
|
+
left: rowLeft,
|
|
75
|
+
top: rowTop,
|
|
76
|
+
width: rowWidth,
|
|
77
|
+
height: rowHeight
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Calculates target widths for a resize operation based on delta movement
|
|
82
|
+
*/ const calculateTargetWidths = (deltaColumns, startLeftWidth, startRightWidth)=>{
|
|
83
|
+
let targetLeftWidth = startLeftWidth + deltaColumns;
|
|
84
|
+
let targetRightWidth = startRightWidth - deltaColumns;
|
|
85
|
+
targetLeftWidth = snapToDiscreteSize(targetLeftWidth);
|
|
86
|
+
targetRightWidth = snapToDiscreteSize(targetRightWidth);
|
|
87
|
+
// Adjust to maintain total columns constraint
|
|
88
|
+
const adjusted = adjustToTotalColumns(targetLeftWidth, targetRightWidth);
|
|
89
|
+
return {
|
|
90
|
+
targetLeftWidth: adjusted.leftWidth,
|
|
91
|
+
targetRightWidth: adjusted.rightWidth
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* Determines if a resize operation should trigger based on value changes
|
|
96
|
+
* Used for performance optimization to prevent unnecessary updates
|
|
97
|
+
*/ const shouldTriggerResize = (leftWidth, rightWidth, lastResizeValues)=>{
|
|
98
|
+
return leftWidth !== lastResizeValues.leftWidth || rightWidth !== lastResizeValues.rightWidth;
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
exports.adjustToTotalColumns = adjustToTotalColumns;
|
|
102
|
+
exports.calculateResizeHandlePosition = calculateResizeHandlePosition;
|
|
103
|
+
exports.calculateRowBounds = calculateRowBounds;
|
|
104
|
+
exports.calculateTargetWidths = calculateTargetWidths;
|
|
105
|
+
exports.getElementRects = getElementRects;
|
|
106
|
+
exports.isValidResize = isValidResize;
|
|
107
|
+
exports.shouldTriggerResize = shouldTriggerResize;
|
|
108
|
+
exports.snapToDiscreteSize = snapToDiscreteSize;
|
|
109
|
+
//# sourceMappingURL=resizeHandlers.js.map
|