@strapi/content-manager 0.0.0-next.be26954af35e0d908e06277f686a3d86886c7a19 → 0.0.0-next.becb1565a20b0d3fbd0e2d79455c09c2f9f46808
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/LeftMenu.js +13 -15
- package/dist/admin/components/LeftMenu.js.map +1 -1
- package/dist/admin/components/LeftMenu.mjs +14 -16
- package/dist/admin/components/LeftMenu.mjs.map +1 -1
- package/dist/admin/components/Widgets.js +269 -9
- package/dist/admin/components/Widgets.js.map +1 -1
- package/dist/admin/components/Widgets.mjs +252 -12
- package/dist/admin/components/Widgets.mjs.map +1 -1
- package/dist/admin/history/components/VersionContent.js +24 -3
- package/dist/admin/history/components/VersionContent.js.map +1 -1
- package/dist/admin/history/components/VersionContent.mjs +25 -4
- package/dist/admin/history/components/VersionContent.mjs.map +1 -1
- package/dist/admin/hooks/useDocumentActions.js +0 -3
- package/dist/admin/hooks/useDocumentActions.js.map +1 -1
- package/dist/admin/hooks/useDocumentActions.mjs +1 -4
- package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
- package/dist/admin/index.js +47 -8
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +47 -9
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/layout.js +1 -27
- package/dist/admin/layout.js.map +1 -1
- package/dist/admin/layout.mjs +2 -9
- package/dist/admin/layout.mjs.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.js +27 -17
- package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.mjs +29 -19
- package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/Blocker.js +18 -0
- package/dist/admin/pages/EditView/components/Blocker.js.map +1 -0
- package/dist/admin/pages/EditView/components/Blocker.mjs +16 -0
- package/dist/admin/pages/EditView/components/Blocker.mjs.map +1 -0
- package/dist/admin/pages/EditView/components/DocumentActions.js +69 -20
- package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.mjs +70 -21
- package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +12 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +13 -2
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +13 -2
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +14 -3
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +16 -3
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +17 -4
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +1 -0
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +1 -0
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +4 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +4 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.js +27 -3
- package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.mjs +27 -3
- package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/InputRenderer.js +20 -7
- package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
- package/dist/admin/pages/EditView/components/InputRenderer.mjs +20 -7
- package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
- package/dist/admin/pages/EditView/utils/data.js +128 -0
- package/dist/admin/pages/EditView/utils/data.js.map +1 -1
- package/dist/admin/pages/EditView/utils/data.mjs +128 -1
- package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.js +221 -203
- package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.mjs +222 -204
- package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js +12 -2
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs +12 -2
- package/dist/admin/pages/ListView/components/BulkActions/PublishAction.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/Filters.js +3 -1
- package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
- package/dist/admin/pages/ListView/components/Filters.mjs +3 -1
- package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
- package/dist/admin/preview/components/InputPopover.js +189 -0
- package/dist/admin/preview/components/InputPopover.js.map +1 -0
- package/dist/admin/preview/components/InputPopover.mjs +167 -0
- package/dist/admin/preview/components/InputPopover.mjs.map +1 -0
- package/dist/admin/preview/components/PreviewHeader.js +0 -1
- package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
- package/dist/admin/preview/components/PreviewHeader.mjs +0 -1
- package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
- package/dist/admin/preview/components/PreviewSidePanel.js +31 -4
- package/dist/admin/preview/components/PreviewSidePanel.js.map +1 -1
- package/dist/admin/preview/components/PreviewSidePanel.mjs +32 -5
- package/dist/admin/preview/components/PreviewSidePanel.mjs.map +1 -1
- package/dist/admin/preview/hooks/usePreviewInputManager.js +77 -0
- package/dist/admin/preview/hooks/usePreviewInputManager.js.map +1 -0
- package/dist/admin/preview/hooks/usePreviewInputManager.mjs +56 -0
- package/dist/admin/preview/hooks/usePreviewInputManager.mjs.map +1 -0
- package/dist/admin/preview/pages/Preview.js +172 -68
- package/dist/admin/preview/pages/Preview.js.map +1 -1
- package/dist/admin/preview/pages/Preview.mjs +174 -70
- package/dist/admin/preview/pages/Preview.mjs.map +1 -1
- package/dist/admin/preview/utils/constants.js +56 -0
- package/dist/admin/preview/utils/constants.js.map +1 -0
- package/dist/admin/preview/utils/constants.mjs +52 -0
- package/dist/admin/preview/utils/constants.mjs.map +1 -0
- package/dist/admin/preview/utils/fieldUtils.js +107 -0
- package/dist/admin/preview/utils/fieldUtils.js.map +1 -0
- package/dist/admin/preview/utils/fieldUtils.mjs +102 -0
- package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -0
- package/dist/admin/preview/utils/getSendMessage.js +22 -0
- package/dist/admin/preview/utils/getSendMessage.js.map +1 -0
- package/dist/admin/preview/utils/getSendMessage.mjs +20 -0
- package/dist/admin/preview/utils/getSendMessage.mjs.map +1 -0
- package/dist/admin/preview/utils/previewScript.js +534 -0
- package/dist/admin/preview/utils/previewScript.js.map +1 -0
- package/dist/admin/preview/utils/previewScript.mjs +532 -0
- package/dist/admin/preview/utils/previewScript.mjs.map +1 -0
- package/dist/admin/services/api.js +4 -1
- package/dist/admin/services/api.js.map +1 -1
- package/dist/admin/services/api.mjs +4 -1
- package/dist/admin/services/api.mjs.map +1 -1
- package/dist/admin/services/documents.js +40 -14
- package/dist/admin/services/documents.js.map +1 -1
- package/dist/admin/services/documents.mjs +40 -14
- package/dist/admin/services/documents.mjs.map +1 -1
- package/dist/admin/src/components/Widgets.d.ts +2 -1
- package/dist/admin/src/exports.d.ts +1 -0
- package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/Blocker.d.ts +5 -0
- package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +1 -1
- package/dist/admin/src/pages/EditView/utils/data.d.ts +19 -1
- package/dist/admin/src/preview/components/InputPopover.d.ts +6 -0
- package/dist/admin/src/preview/hooks/usePreviewInputManager.d.ts +5 -0
- package/dist/admin/src/preview/pages/Preview.d.ts +12 -0
- package/dist/admin/src/preview/services/preview.d.ts +1 -1
- package/dist/admin/src/preview/utils/constants.d.ts +55 -0
- package/dist/admin/src/preview/utils/fieldUtils.d.ts +22 -0
- package/dist/admin/src/preview/utils/getSendMessage.d.ts +11 -0
- package/dist/admin/src/preview/utils/previewScript.d.ts +24 -0
- package/dist/admin/src/services/api.d.ts +1 -1
- package/dist/admin/src/services/components.d.ts +2 -2
- package/dist/admin/src/services/contentTypes.d.ts +3 -3
- package/dist/admin/src/services/documents.d.ts +16 -16
- package/dist/admin/src/services/homepage.d.ts +1 -1
- package/dist/admin/src/services/init.d.ts +1 -1
- package/dist/admin/src/services/relations.d.ts +2 -2
- package/dist/admin/src/services/uid.d.ts +3 -3
- package/dist/admin/src/utils/api.d.ts +1 -1
- package/dist/admin/src/utils/validation.d.ts +1 -0
- package/dist/admin/translations/en.json.js +12 -0
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +12 -0
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/translations/es.json.js +6 -2
- package/dist/admin/translations/es.json.js.map +1 -1
- package/dist/admin/translations/es.json.mjs +6 -2
- package/dist/admin/translations/es.json.mjs.map +1 -1
- package/dist/admin/translations/fr.json.js +11 -2
- package/dist/admin/translations/fr.json.js.map +1 -1
- package/dist/admin/translations/fr.json.mjs +11 -2
- package/dist/admin/translations/fr.json.mjs.map +1 -1
- package/dist/admin/utils/api.js +1 -1
- package/dist/admin/utils/api.js.map +1 -1
- package/dist/admin/utils/api.mjs +1 -1
- package/dist/admin/utils/api.mjs.map +1 -1
- package/dist/admin/utils/validation.js +18 -6
- package/dist/admin/utils/validation.js.map +1 -1
- package/dist/admin/utils/validation.mjs +18 -6
- package/dist/admin/utils/validation.mjs.map +1 -1
- package/dist/server/controllers/relations.js +2 -2
- package/dist/server/controllers/relations.js.map +1 -1
- package/dist/server/controllers/relations.mjs +2 -2
- package/dist/server/controllers/relations.mjs.map +1 -1
- package/dist/server/history/services/lifecycles.js +20 -19
- package/dist/server/history/services/lifecycles.js.map +1 -1
- package/dist/server/history/services/lifecycles.mjs +20 -19
- package/dist/server/history/services/lifecycles.mjs.map +1 -1
- package/dist/server/homepage/controllers/homepage.js +5 -0
- package/dist/server/homepage/controllers/homepage.js.map +1 -1
- package/dist/server/homepage/controllers/homepage.mjs +5 -0
- package/dist/server/homepage/controllers/homepage.mjs.map +1 -1
- package/dist/server/homepage/routes/homepage.js +11 -0
- package/dist/server/homepage/routes/homepage.js.map +1 -1
- package/dist/server/homepage/routes/homepage.mjs +11 -0
- package/dist/server/homepage/routes/homepage.mjs.map +1 -1
- package/dist/server/homepage/services/homepage.js +86 -46
- package/dist/server/homepage/services/homepage.js.map +1 -1
- package/dist/server/homepage/services/homepage.mjs +86 -46
- package/dist/server/homepage/services/homepage.mjs.map +1 -1
- package/dist/server/preview/services/preview-config.js +5 -1
- package/dist/server/preview/services/preview-config.js.map +1 -1
- package/dist/server/preview/services/preview-config.mjs +5 -1
- package/dist/server/preview/services/preview-config.mjs.map +1 -1
- package/dist/server/preview/services/preview.js +4 -0
- package/dist/server/preview/services/preview.js.map +1 -1
- package/dist/server/preview/services/preview.mjs +4 -0
- package/dist/server/preview/services/preview.mjs.map +1 -1
- package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
- package/dist/server/src/homepage/controllers/homepage.d.ts +2 -1
- package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -1
- package/dist/server/src/homepage/index.d.ts +7 -0
- package/dist/server/src/homepage/index.d.ts.map +1 -1
- package/dist/server/src/homepage/routes/homepage.d.ts.map +1 -1
- package/dist/server/src/homepage/services/homepage.d.ts +4 -1
- package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
- package/dist/server/src/homepage/services/index.d.ts +7 -0
- package/dist/server/src/homepage/services/index.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +7 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/preview/services/index.d.ts +1 -0
- package/dist/server/src/preview/services/index.d.ts.map +1 -1
- package/dist/server/src/preview/services/preview-config.d.ts +1 -0
- package/dist/server/src/preview/services/preview-config.d.ts.map +1 -1
- package/dist/server/src/preview/services/preview.d.ts.map +1 -1
- package/dist/server/src/preview/utils.d.ts +1 -0
- package/dist/server/src/preview/utils.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +7 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/shared/contracts/homepage.d.ts +13 -0
- package/dist/shared/contracts/homepage.d.ts.map +1 -1
- package/package.json +7 -8
|
@@ -4,7 +4,6 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
4
4
|
var React = require('react');
|
|
5
5
|
var strapiAdmin = require('@strapi/admin/strapi-admin');
|
|
6
6
|
var designSystem = require('@strapi/design-system');
|
|
7
|
-
var Icons = require('@strapi/icons');
|
|
8
7
|
var qs = require('qs');
|
|
9
8
|
var reactIntl = require('react-intl');
|
|
10
9
|
var useContentTypeSchema = require('../hooks/useContentTypeSchema.js');
|
|
@@ -66,7 +65,7 @@ const LeftMenu = ()=>{
|
|
|
66
65
|
...section,
|
|
67
66
|
links: section.links/**
|
|
68
67
|
* Filter by the search value
|
|
69
|
-
*/ .filter((link)=>startsWith(link.title, search))/**
|
|
68
|
+
*/ .filter((link)=>startsWith(link.title, search.trim()))/**
|
|
70
69
|
* Sort correctly using the language
|
|
71
70
|
*/ .sort((a, b)=>formatter.compare(a.title, b.title))/**
|
|
72
71
|
* Apply the formated strings to the links from react-intl
|
|
@@ -90,8 +89,8 @@ const LeftMenu = ()=>{
|
|
|
90
89
|
const handleClear = ()=>{
|
|
91
90
|
setSearch('');
|
|
92
91
|
};
|
|
93
|
-
const handleChangeSearch = (
|
|
94
|
-
setSearch(value);
|
|
92
|
+
const handleChangeSearch = (event)=>{
|
|
93
|
+
setSearch(event.target.value);
|
|
95
94
|
};
|
|
96
95
|
const label = formatMessage({
|
|
97
96
|
id: translations.getTranslation('header.name'),
|
|
@@ -130,23 +129,22 @@ const LeftMenu = ()=>{
|
|
|
130
129
|
gap: 3,
|
|
131
130
|
direction: 'column',
|
|
132
131
|
alignItems: 'stretch',
|
|
133
|
-
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.
|
|
134
|
-
startAction: /*#__PURE__*/ jsxRuntime.jsx(Icons.Search, {
|
|
135
|
-
fill: "neutral500"
|
|
136
|
-
}),
|
|
132
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Searchbar, {
|
|
137
133
|
value: search,
|
|
138
134
|
onChange: handleChangeSearch,
|
|
139
|
-
|
|
135
|
+
onClear: handleClear,
|
|
140
136
|
placeholder: formatMessage({
|
|
141
137
|
id: 'content-manager.components.LeftMenu.Search.label',
|
|
142
138
|
defaultMessage: 'Search for a content type'
|
|
143
139
|
}),
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
140
|
+
size: "S",
|
|
141
|
+
// eslint-disable-next-line react/no-children-prop
|
|
142
|
+
children: undefined,
|
|
143
|
+
name: 'search_contentType',
|
|
144
|
+
clearLabel: formatMessage({
|
|
145
|
+
id: 'clearLabel',
|
|
146
|
+
defaultMessage: 'Clear'
|
|
147
|
+
})
|
|
150
148
|
})
|
|
151
149
|
}),
|
|
152
150
|
/*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.SubNav.Sections, {
|
|
@@ -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 { Divider, Flex, TextInput, useCollator, useFilter } from '@strapi/design-system';\nimport { Cross, Search } from '@strapi/icons';\nimport { parse, stringify } from 'qs';\nimport { useIntl } from 'react-intl';\n\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 = () => {\n const [search, setSearch] = React.useState('');\n const [{ query }] = useQueryParams<{ plugins?: object }>();\n const { formatMessage, locale } = useIntl();\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 { startsWith } = 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) => startsWith(link.title, search))\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, startsWith, formatMessage, formatter]\n );\n\n const handleClear = () => {\n setSearch('');\n };\n\n const handleChangeSearch = ({ target: { value } }: { target: { value: string } }) => {\n setSearch(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 return (\n <SubNav.Main aria-label={label}>\n <SubNav.Header label={label} />\n <Divider background=\"neutral150\" />\n <Flex padding={5} gap={3} direction={'column'} alignItems={'stretch'}>\n <TextInput\n startAction={<Search fill=\"neutral500\" />}\n value={search}\n onChange={handleChangeSearch}\n aria-label=\"Search\"\n placeholder={formatMessage({\n id: 'content-manager.components.LeftMenu.Search.label',\n defaultMessage: 'Search for a content type',\n })}\n endAction={<Cross onClick={handleClear} fill=\"neutral500\" cursor=\"pointer\" />}\n size=\"S\"\n />\n </Flex>\n <SubNav.Sections>\n {menu.map((section) => {\n return (\n <SubNav.Section key={section.id} label={section.title}>\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.Main>\n );\n};\n\nexport { LeftMenu };\n"],"names":["LeftMenu","search","setSearch","React","useState","query","useQueryParams","formatMessage","locale","useIntl","collectionTypeLinks","useTypedSelector","state","app","singleTypeLinks","schemas","useContentTypeSchema","startsWith","useFilter","sensitivity","formatter","useCollator","menu","useMemo","id","title","getTranslation","defaultMessage","searchable","links","map","section","filter","link","sort","a","b","compare","handleClear","handleChangeSearch","target","value","label","getPluginsParamsForLink","schema","find","uid","isI18nEnabled","Boolean","pluginOptions","i18n","localized","plugins","restPlugins","_jsxs","SubNav","Main","aria-label","_jsx","Header","Divider","background","Flex","padding","gap","direction","alignItems","TextInput","startAction","Search","fill","onChange","placeholder","endAction","Cross","onClick","cursor","size","Sections","Section","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 { Divider, Flex, Searchbar, useCollator, useFilter } from '@strapi/design-system';\nimport { parse, stringify } from 'qs';\nimport { useIntl } from 'react-intl';\n\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 = () => {\n const [search, setSearch] = React.useState('');\n const [{ query }] = useQueryParams<{ plugins?: object }>();\n const { formatMessage, locale } = useIntl();\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 { startsWith } = 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) => startsWith(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, startsWith, 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 return (\n <SubNav.Main aria-label={label}>\n <SubNav.Header label={label} />\n <Divider background=\"neutral150\" />\n <Flex padding={5} gap={3} direction={'column'} alignItems={'stretch'}>\n <Searchbar\n value={search}\n onChange={handleChangeSearch}\n onClear={handleClear}\n placeholder={formatMessage({\n id: 'content-manager.components.LeftMenu.Search.label',\n defaultMessage: 'Search for a content type',\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 key={section.id} label={section.title}>\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.Main>\n );\n};\n\nexport { LeftMenu };\n"],"names":["LeftMenu","search","setSearch","React","useState","query","useQueryParams","formatMessage","locale","useIntl","collectionTypeLinks","useTypedSelector","state","app","singleTypeLinks","schemas","useContentTypeSchema","startsWith","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","background","Flex","padding","gap","direction","alignItems","Searchbar","onChange","onClear","placeholder","size","children","undefined","name","clearLabel","Sections","Section","Link","to","pathname","stringify","parse"],"mappings":"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"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { useQueryParams, SubNav } from '@strapi/admin/strapi-admin';
|
|
4
|
-
import { useFilter, useCollator, Divider, Flex,
|
|
5
|
-
import { Search, Cross } from '@strapi/icons';
|
|
4
|
+
import { useFilter, useCollator, Divider, Flex, Searchbar } from '@strapi/design-system';
|
|
6
5
|
import { stringify, parse } from 'qs';
|
|
7
6
|
import { useIntl } from 'react-intl';
|
|
8
7
|
import { useContentTypeSchema } from '../hooks/useContentTypeSchema.mjs';
|
|
@@ -45,7 +44,7 @@ const LeftMenu = ()=>{
|
|
|
45
44
|
...section,
|
|
46
45
|
links: section.links/**
|
|
47
46
|
* Filter by the search value
|
|
48
|
-
*/ .filter((link)=>startsWith(link.title, search))/**
|
|
47
|
+
*/ .filter((link)=>startsWith(link.title, search.trim()))/**
|
|
49
48
|
* Sort correctly using the language
|
|
50
49
|
*/ .sort((a, b)=>formatter.compare(a.title, b.title))/**
|
|
51
50
|
* Apply the formated strings to the links from react-intl
|
|
@@ -69,8 +68,8 @@ const LeftMenu = ()=>{
|
|
|
69
68
|
const handleClear = ()=>{
|
|
70
69
|
setSearch('');
|
|
71
70
|
};
|
|
72
|
-
const handleChangeSearch = (
|
|
73
|
-
setSearch(value);
|
|
71
|
+
const handleChangeSearch = (event)=>{
|
|
72
|
+
setSearch(event.target.value);
|
|
74
73
|
};
|
|
75
74
|
const label = formatMessage({
|
|
76
75
|
id: getTranslation('header.name'),
|
|
@@ -109,23 +108,22 @@ const LeftMenu = ()=>{
|
|
|
109
108
|
gap: 3,
|
|
110
109
|
direction: 'column',
|
|
111
110
|
alignItems: 'stretch',
|
|
112
|
-
children: /*#__PURE__*/ jsx(
|
|
113
|
-
startAction: /*#__PURE__*/ jsx(Search, {
|
|
114
|
-
fill: "neutral500"
|
|
115
|
-
}),
|
|
111
|
+
children: /*#__PURE__*/ jsx(Searchbar, {
|
|
116
112
|
value: search,
|
|
117
113
|
onChange: handleChangeSearch,
|
|
118
|
-
|
|
114
|
+
onClear: handleClear,
|
|
119
115
|
placeholder: formatMessage({
|
|
120
116
|
id: 'content-manager.components.LeftMenu.Search.label',
|
|
121
117
|
defaultMessage: 'Search for a content type'
|
|
122
118
|
}),
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
119
|
+
size: "S",
|
|
120
|
+
// eslint-disable-next-line react/no-children-prop
|
|
121
|
+
children: undefined,
|
|
122
|
+
name: 'search_contentType',
|
|
123
|
+
clearLabel: formatMessage({
|
|
124
|
+
id: 'clearLabel',
|
|
125
|
+
defaultMessage: 'Clear'
|
|
126
|
+
})
|
|
129
127
|
})
|
|
130
128
|
}),
|
|
131
129
|
/*#__PURE__*/ jsx(SubNav.Sections, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LeftMenu.mjs","sources":["../../../admin/src/components/LeftMenu.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams, SubNav } from '@strapi/admin/strapi-admin';\nimport { Divider, Flex, TextInput, useCollator, useFilter } from '@strapi/design-system';\nimport { Cross, Search } from '@strapi/icons';\nimport { parse, stringify } from 'qs';\nimport { useIntl } from 'react-intl';\n\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 = () => {\n const [search, setSearch] = React.useState('');\n const [{ query }] = useQueryParams<{ plugins?: object }>();\n const { formatMessage, locale } = useIntl();\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 { startsWith } = 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) => startsWith(link.title, search))\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, startsWith, formatMessage, formatter]\n );\n\n const handleClear = () => {\n setSearch('');\n };\n\n const handleChangeSearch = ({ target: { value } }: { target: { value: string } }) => {\n setSearch(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 return (\n <SubNav.Main aria-label={label}>\n <SubNav.Header label={label} />\n <Divider background=\"neutral150\" />\n <Flex padding={5} gap={3} direction={'column'} alignItems={'stretch'}>\n <TextInput\n startAction={<Search fill=\"neutral500\" />}\n value={search}\n onChange={handleChangeSearch}\n aria-label=\"Search\"\n placeholder={formatMessage({\n id: 'content-manager.components.LeftMenu.Search.label',\n defaultMessage: 'Search for a content type',\n })}\n endAction={<Cross onClick={handleClear} fill=\"neutral500\" cursor=\"pointer\" />}\n size=\"S\"\n />\n </Flex>\n <SubNav.Sections>\n {menu.map((section) => {\n return (\n <SubNav.Section key={section.id} label={section.title}>\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.Main>\n );\n};\n\nexport { LeftMenu };\n"],"names":["LeftMenu","search","setSearch","React","useState","query","useQueryParams","formatMessage","locale","useIntl","collectionTypeLinks","useTypedSelector","state","app","singleTypeLinks","schemas","useContentTypeSchema","startsWith","useFilter","sensitivity","formatter","useCollator","menu","useMemo","id","title","getTranslation","defaultMessage","searchable","links","map","section","filter","link","sort","a","b","compare","handleClear","handleChangeSearch","target","value","label","getPluginsParamsForLink","schema","find","uid","isI18nEnabled","Boolean","pluginOptions","i18n","localized","plugins","restPlugins","_jsxs","SubNav","Main","aria-label","_jsx","Header","Divider","background","Flex","padding","gap","direction","alignItems","TextInput","startAction","Search","fill","onChange","placeholder","endAction","Cross","onClick","cursor","size","Sections","Section","Link","to","pathname","stringify","parse"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LeftMenu.mjs","sources":["../../../admin/src/components/LeftMenu.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams, SubNav } from '@strapi/admin/strapi-admin';\nimport { Divider, Flex, Searchbar, useCollator, useFilter } from '@strapi/design-system';\nimport { parse, stringify } from 'qs';\nimport { useIntl } from 'react-intl';\n\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 = () => {\n const [search, setSearch] = React.useState('');\n const [{ query }] = useQueryParams<{ plugins?: object }>();\n const { formatMessage, locale } = useIntl();\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 { startsWith } = 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) => startsWith(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, startsWith, 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 return (\n <SubNav.Main aria-label={label}>\n <SubNav.Header label={label} />\n <Divider background=\"neutral150\" />\n <Flex padding={5} gap={3} direction={'column'} alignItems={'stretch'}>\n <Searchbar\n value={search}\n onChange={handleChangeSearch}\n onClear={handleClear}\n placeholder={formatMessage({\n id: 'content-manager.components.LeftMenu.Search.label',\n defaultMessage: 'Search for a content type',\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 key={section.id} label={section.title}>\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.Main>\n );\n};\n\nexport { LeftMenu };\n"],"names":["LeftMenu","search","setSearch","React","useState","query","useQueryParams","formatMessage","locale","useIntl","collectionTypeLinks","useTypedSelector","state","app","singleTypeLinks","schemas","useContentTypeSchema","startsWith","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","background","Flex","padding","gap","direction","alignItems","Searchbar","onChange","onClear","placeholder","size","children","undefined","name","clearLabel","Sections","Section","Link","to","pathname","stringify","parse"],"mappings":";;;;;;;;;;AAaA,MAAMA,QAAW,GAAA,IAAA;AACf,IAAA,MAAM,CAACC,MAAQC,EAAAA,SAAAA,CAAU,GAAGC,KAAAA,CAAMC,QAAQ,CAAC,EAAA,CAAA;AAC3C,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,CAAC,GAAGC,cAAAA,EAAAA;AACpB,IAAA,MAAM,EAAEC,aAAa,EAAEC,MAAM,EAAE,GAAGC,OAAAA,EAAAA;IAElC,MAAMC,mBAAAA,GAAsBC,gBAC1B,CAAA,CAACC,KAAUA,GAAAA,KAAK,CAAC,iBAAkB,CAAA,CAACC,GAAG,CAACH,mBAAmB,CAAA;IAG7D,MAAMI,eAAAA,GAAkBH,gBAAiB,CAAA,CAACC,KAAUA,GAAAA,KAAK,CAAC,iBAAkB,CAAA,CAACC,GAAG,CAACC,eAAe,CAAA;IAChG,MAAM,EAAEC,OAAO,EAAE,GAAGC,oBAAAA,EAAAA;AAEpB,IAAA,MAAM,EAAEC,UAAU,EAAE,GAAGC,UAAUV,MAAQ,EAAA;QACvCW,WAAa,EAAA;AACf,KAAA,CAAA;IAEA,MAAMC,SAAAA,GAAYC,YAAYb,MAAQ,EAAA;QACpCW,WAAa,EAAA;AACf,KAAA,CAAA;AAEA,IAAA,MAAMG,IAAOnB,GAAAA,KAAAA,CAAMoB,OAAO,CACxB,IACE;AACE,YAAA;gBACEC,EAAI,EAAA,iBAAA;AACJC,gBAAAA,KAAAA,EAAOlB,aAAc,CAAA;AACnBiB,oBAAAA,EAAAA,EAAIE,cAAe,CAAA,sCAAA,CAAA;oBACnBC,cAAgB,EAAA;AAClB,iBAAA,CAAA;gBACAC,UAAY,EAAA,IAAA;gBACZC,KAAOnB,EAAAA;AACT,aAAA;AACA,YAAA;gBACEc,EAAI,EAAA,aAAA;AACJC,gBAAAA,KAAAA,EAAOlB,aAAc,CAAA;AACnBiB,oBAAAA,EAAAA,EAAIE,cAAe,CAAA,kCAAA,CAAA;oBACnBC,cAAgB,EAAA;AAClB,iBAAA,CAAA;gBACAC,UAAY,EAAA,IAAA;gBACZC,KAAOf,EAAAA;AACT;AACD,SAAA,CAACgB,GAAG,CAAC,CAACC,OAAAA,IAAa;AAClB,gBAAA,GAAGA,OAAO;gBACVF,KAAOE,EAAAA,OAAAA,CAAQF,KAAK;;eAIjBG,MAAM,CAAC,CAACC,IAAShB,GAAAA,UAAAA,CAAWgB,KAAKR,KAAK,EAAExB,MAAOiC,CAAAA,IAAI,EACpD,CAAA,CAAA;;AAEC,eACAC,IAAI,CAAC,CAACC,CAAAA,EAAGC,CAAMjB,GAAAA,SAAAA,CAAUkB,OAAO,CAACF,CAAEX,CAAAA,KAAK,EAAEY,CAAAA,CAAEZ,KAAK,CAClD,CAAA;;eAGCK,GAAG,CAAC,CAACG,IAAAA,GAAAA;oBACJ,OAAO;AACL,wBAAA,GAAGA,IAAI;AACPR,wBAAAA,KAAAA,EAAOlB,aAAc,CAAA;AAAEiB,4BAAAA,EAAAA,EAAIS,KAAKR,KAAK;AAAEE,4BAAAA,cAAAA,EAAgBM,KAAKR;AAAM,yBAAA;AACpE,qBAAA;AACF,iBAAA;AACJ,aAAA,CACF,CAAA,EAAA;AAACf,QAAAA,mBAAAA;AAAqBT,QAAAA,MAAAA;AAAQa,QAAAA,eAAAA;AAAiBG,QAAAA,UAAAA;AAAYV,QAAAA,aAAAA;AAAea,QAAAA;AAAU,KAAA,CAAA;AAGtF,IAAA,MAAMmB,WAAc,GAAA,IAAA;QAClBrC,SAAU,CAAA,EAAA,CAAA;AACZ,KAAA;AAEA,IAAA,MAAMsC,qBAAqB,CAACC,KAAAA,GAAAA;QAC1BvC,SAAUuC,CAAAA,KAAAA,CAAMC,MAAM,CAACC,KAAK,CAAA;AAC9B,KAAA;AAEA,IAAA,MAAMC,QAAQrC,aAAc,CAAA;AAC1BiB,QAAAA,EAAAA,EAAIE,cAAe,CAAA,aAAA,CAAA;QACnBC,cAAgB,EAAA;AAClB,KAAA,CAAA;AAEA,IAAA,MAAMkB,0BAA0B,CAACZ,IAAAA,GAAAA;QAC/B,MAAMa,MAAAA,GAAS/B,OAAQgC,CAAAA,IAAI,CAAC,CAACD,SAAWA,MAAOE,CAAAA,GAAG,KAAKf,IAAAA,CAAKe,GAAG,CAAA;AAC/D,QAAA,MAAMC,aAAgBC,GAAAA,OAAAA,CAASJ,MAAQK,EAAAA,aAAAA,EAAeC,IAAcC,EAAAA,SAAAA,CAAAA;;AAGpE,QAAA,IAAIhD,MAAMiD,OAAO,IAAI,MAAUjD,IAAAA,KAAAA,CAAMiD,OAAO,EAAE;;AAE5C,YAAA,MAAM,EAAEF,IAAI,EAAE,GAAGG,WAAa,EAAA,GAAGlD,MAAMiD,OAAO;;AAG9C,YAAA,IAAI,CAACL,aAAe,EAAA;gBAClB,OAAOM,WAAAA;AACT;;YAGA,OAAO;AAAEH,gBAAAA,IAAAA;AAAM,gBAAA,GAAGG;AAAY,aAAA;AAChC;AAEA,QAAA,OAAOlD,MAAMiD,OAAO;AACtB,KAAA;IAEA,qBACEE,IAAA,CAACC,OAAOC,IAAI,EAAA;QAACC,YAAYf,EAAAA,KAAAA;;AACvB,0BAAAgB,GAAA,CAACH,OAAOI,MAAM,EAAA;gBAACjB,KAAOA,EAAAA;;0BACtBgB,GAACE,CAAAA,OAAAA,EAAAA;gBAAQC,UAAW,EAAA;;0BACpBH,GAACI,CAAAA,IAAAA,EAAAA;gBAAKC,OAAS,EAAA,CAAA;gBAAGC,GAAK,EAAA,CAAA;gBAAGC,SAAW,EAAA,QAAA;gBAAUC,UAAY,EAAA,SAAA;AACzD,gBAAA,QAAA,gBAAAR,GAACS,CAAAA,SAAAA,EAAAA;oBACC1B,KAAO1C,EAAAA,MAAAA;oBACPqE,QAAU9B,EAAAA,kBAAAA;oBACV+B,OAAShC,EAAAA,WAAAA;AACTiC,oBAAAA,WAAAA,EAAajE,aAAc,CAAA;wBACzBiB,EAAI,EAAA,kDAAA;wBACJG,cAAgB,EAAA;AAClB,qBAAA,CAAA;oBACA8C,IAAK,EAAA,GAAA;;oBAELC,QAAUC,EAAAA,SAAAA;oBACVC,IAAM,EAAA,oBAAA;AACNC,oBAAAA,UAAAA,EAAYtE,aAAc,CAAA;wBAAEiB,EAAI,EAAA,YAAA;wBAAcG,cAAgB,EAAA;AAAQ,qBAAA;;;AAG1E,0BAAAiC,GAAA,CAACH,OAAOqB,QAAQ,EAAA;0BACbxD,IAAKQ,CAAAA,GAAG,CAAC,CAACC,OAAAA,GAAAA;oBACT,qBACE6B,GAAA,CAACH,OAAOsB,OAAO,EAAA;AAAkBnC,wBAAAA,KAAAA,EAAOb,QAAQN,KAAK;AAClDM,wBAAAA,QAAAA,EAAAA,OAAAA,CAAQF,KAAK,CAACC,GAAG,CAAC,CAACG,IAAAA,GAAAA;4BAClB,qBACE2B,GAAA,CAACH,OAAOuB,IAAI,EAAA;gCAEVC,EAAI,EAAA;AACFC,oCAAAA,QAAAA,EAAUjD,KAAKgD,EAAE;AACjBhF,oCAAAA,MAAAA,EAAQkF,SAAU,CAAA;AAChB,wCAAA,GAAGC,KAAMnD,CAAAA,IAAAA,CAAKhC,MAAM,IAAI,EAAG,CAAA;AAC3BqD,wCAAAA,OAAAA,EAAST,uBAAwBZ,CAAAA,IAAAA;AACnC,qCAAA;AACF,iCAAA;AACAW,gCAAAA,KAAAA,EAAOX,KAAKR;AARPQ,6BAAAA,EAAAA,IAAAA,CAAKe,GAAG,CAAA;AAWnB,yBAAA;AAfmBjB,qBAAAA,EAAAA,OAAAA,CAAQP,EAAE,CAAA;AAkBnC,iBAAA;;;;AAIR;;;;"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var React = require('react');
|
|
4
5
|
var strapiAdmin = require('@strapi/admin/strapi-admin');
|
|
5
6
|
var designSystem = require('@strapi/design-system');
|
|
6
7
|
var Icons = require('@strapi/icons');
|
|
@@ -11,15 +12,33 @@ var DocumentStatus = require('../pages/EditView/components/DocumentStatus.js');
|
|
|
11
12
|
var homepage = require('../services/homepage.js');
|
|
12
13
|
var RelativeTime = require('./RelativeTime.js');
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
function _interopNamespaceDefault(e) {
|
|
16
|
+
var n = Object.create(null);
|
|
17
|
+
if (e) {
|
|
18
|
+
Object.keys(e).forEach(function (k) {
|
|
19
|
+
if (k !== 'default') {
|
|
20
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
21
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function () { return e[k]; }
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
n.default = e;
|
|
29
|
+
return Object.freeze(n);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
33
|
+
|
|
34
|
+
const CellTypography = styledComponents.styled(designSystem.Typography)`
|
|
35
|
+
display: block;
|
|
36
|
+
max-width: 14.4rem;
|
|
18
37
|
overflow: hidden;
|
|
19
38
|
text-overflow: ellipsis;
|
|
20
39
|
white-space: nowrap;
|
|
21
40
|
`;
|
|
22
|
-
const RecentDocumentsTable = ({ documents })=>{
|
|
41
|
+
const RecentDocumentsTable = ({ documents, type })=>{
|
|
23
42
|
const { formatMessage } = reactIntl.useIntl();
|
|
24
43
|
const { trackUsage } = strapiAdmin.useTracking();
|
|
25
44
|
const navigate = reactRouterDom.useNavigate();
|
|
@@ -30,7 +49,9 @@ const RecentDocumentsTable = ({ documents })=>{
|
|
|
30
49
|
return `/content-manager/${kindPath}/${document.contentTypeUid}${isSingleType ? '' : '/' + document.documentId}${queryParams}`;
|
|
31
50
|
};
|
|
32
51
|
const handleRowClick = (document)=>()=>{
|
|
33
|
-
trackUsage('willEditEntryFromHome'
|
|
52
|
+
trackUsage('willEditEntryFromHome', {
|
|
53
|
+
entryType: type
|
|
54
|
+
});
|
|
34
55
|
const link = getEditViewLink(document);
|
|
35
56
|
navigate(link);
|
|
36
57
|
};
|
|
@@ -90,7 +111,9 @@ const RecentDocumentsTable = ({ documents })=>{
|
|
|
90
111
|
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
|
|
91
112
|
tag: reactRouterDom.Link,
|
|
92
113
|
to: getEditViewLink(document),
|
|
93
|
-
onClick: ()=>trackUsage('willEditEntryFromHome'
|
|
114
|
+
onClick: ()=>trackUsage('willEditEntryFromHome', {
|
|
115
|
+
type
|
|
116
|
+
}),
|
|
94
117
|
label: formatMessage({
|
|
95
118
|
id: 'content-manager.actions.edit.label',
|
|
96
119
|
defaultMessage: 'Edit'
|
|
@@ -127,7 +150,8 @@ const RecentDocumentsTable = ({ documents })=>{
|
|
|
127
150
|
});
|
|
128
151
|
}
|
|
129
152
|
return /*#__PURE__*/ jsxRuntime.jsx(RecentDocumentsTable, {
|
|
130
|
-
documents: data
|
|
153
|
+
documents: data,
|
|
154
|
+
type: "edited"
|
|
131
155
|
});
|
|
132
156
|
};
|
|
133
157
|
/* -------------------------------------------------------------------------------------------------
|
|
@@ -152,10 +176,246 @@ const RecentDocumentsTable = ({ documents })=>{
|
|
|
152
176
|
});
|
|
153
177
|
}
|
|
154
178
|
return /*#__PURE__*/ jsxRuntime.jsx(RecentDocumentsTable, {
|
|
155
|
-
documents: data
|
|
179
|
+
documents: data,
|
|
180
|
+
type: "published"
|
|
181
|
+
});
|
|
182
|
+
};
|
|
183
|
+
/* -------------------------------------------------------------------------------------------------
|
|
184
|
+
* ChartEntriesWidget
|
|
185
|
+
* -----------------------------------------------------------------------------------------------*/ const RADIUS = 80;
|
|
186
|
+
const STROKE = 10;
|
|
187
|
+
const CIRCUMFERENCE = 2 * Math.PI * (RADIUS - STROKE / 2);
|
|
188
|
+
const ArcChart = styledComponents.styled.circle`
|
|
189
|
+
stroke: ${({ theme, $arcColor })=>theme.colors[$arcColor]};
|
|
190
|
+
`;
|
|
191
|
+
const TextChart = styledComponents.styled.tspan`
|
|
192
|
+
text-transform: lowercase;
|
|
193
|
+
fill: ${({ theme, $textColor })=>theme.colors[$textColor]};
|
|
194
|
+
`;
|
|
195
|
+
const KeyChartItem = styledComponents.styled(designSystem.Flex)`
|
|
196
|
+
width: 100%;
|
|
197
|
+
|
|
198
|
+
${({ theme })=>theme.breakpoints.small} {
|
|
199
|
+
width: auto;
|
|
200
|
+
}
|
|
201
|
+
`;
|
|
202
|
+
const DonutChartSVG = ({ data })=>{
|
|
203
|
+
const { locale } = reactIntl.useIntl();
|
|
204
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
205
|
+
const total = data.reduce((acc, curr)=>acc + curr.count, 0);
|
|
206
|
+
const [tooltip, setTooltip] = React__namespace.useState({
|
|
207
|
+
visible: false,
|
|
208
|
+
x: 0,
|
|
209
|
+
y: 0,
|
|
210
|
+
value: null
|
|
211
|
+
});
|
|
212
|
+
let cumulativePercent = 0;
|
|
213
|
+
const handleMouseOver = (e, value)=>{
|
|
214
|
+
setTooltip({
|
|
215
|
+
visible: true,
|
|
216
|
+
x: e.clientX,
|
|
217
|
+
y: e.clientY,
|
|
218
|
+
value
|
|
219
|
+
});
|
|
220
|
+
};
|
|
221
|
+
const handleMouseOut = ()=>{
|
|
222
|
+
setTooltip((t)=>({
|
|
223
|
+
...t,
|
|
224
|
+
visible: false
|
|
225
|
+
}));
|
|
226
|
+
};
|
|
227
|
+
const handleFocus = (e, value)=>{
|
|
228
|
+
setTooltip({
|
|
229
|
+
visible: true,
|
|
230
|
+
x: e.currentTarget.getBoundingClientRect().width / 2 + e.currentTarget.getBoundingClientRect().left,
|
|
231
|
+
y: e.currentTarget.getBoundingClientRect().height + e.currentTarget.getBoundingClientRect().top,
|
|
232
|
+
value
|
|
233
|
+
});
|
|
234
|
+
};
|
|
235
|
+
return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
236
|
+
direction: "column",
|
|
237
|
+
gap: 6,
|
|
238
|
+
margin: "auto",
|
|
239
|
+
children: [
|
|
240
|
+
/*#__PURE__*/ jsxRuntime.jsxs("svg", {
|
|
241
|
+
width: RADIUS * 2,
|
|
242
|
+
height: RADIUS * 2,
|
|
243
|
+
viewBox: `0 0 ${RADIUS * 2} ${RADIUS * 2}`,
|
|
244
|
+
style: {
|
|
245
|
+
position: 'relative',
|
|
246
|
+
zIndex: 1
|
|
247
|
+
},
|
|
248
|
+
children: [
|
|
249
|
+
/*#__PURE__*/ jsxRuntime.jsx("g", {
|
|
250
|
+
transform: `rotate(-90 ${RADIUS} ${RADIUS})`,
|
|
251
|
+
children: data.map((value)=>{
|
|
252
|
+
const percent = value.count / total * 100;
|
|
253
|
+
const arcLength = percent / 100 * CIRCUMFERENCE;
|
|
254
|
+
const dashArray = `${arcLength} ${CIRCUMFERENCE - arcLength}`;
|
|
255
|
+
const dashOffset = CIRCUMFERENCE * (1 - cumulativePercent / 100);
|
|
256
|
+
const el = /*#__PURE__*/ jsxRuntime.jsx(ArcChart, {
|
|
257
|
+
cx: RADIUS,
|
|
258
|
+
cy: RADIUS,
|
|
259
|
+
r: RADIUS - STROKE / 2,
|
|
260
|
+
fill: "none",
|
|
261
|
+
strokeWidth: STROKE,
|
|
262
|
+
strokeDasharray: dashArray,
|
|
263
|
+
strokeDashoffset: dashOffset,
|
|
264
|
+
style: {
|
|
265
|
+
transition: 'stroke-dashoffset 0.3s',
|
|
266
|
+
cursor: 'pointer'
|
|
267
|
+
},
|
|
268
|
+
tabIndex: 0,
|
|
269
|
+
"aria-describedby": tooltip.visible ? 'chart-tooltip' : undefined,
|
|
270
|
+
onFocus: (e)=>handleFocus(e, value),
|
|
271
|
+
onBlur: handleMouseOut,
|
|
272
|
+
onMouseMove: (e)=>handleMouseOver(e, value),
|
|
273
|
+
onMouseLeave: handleMouseOut,
|
|
274
|
+
$arcColor: value.color
|
|
275
|
+
}, value.label);
|
|
276
|
+
cumulativePercent += percent;
|
|
277
|
+
return el;
|
|
278
|
+
})
|
|
279
|
+
}),
|
|
280
|
+
/*#__PURE__*/ jsxRuntime.jsxs("text", {
|
|
281
|
+
x: RADIUS,
|
|
282
|
+
y: RADIUS,
|
|
283
|
+
textAnchor: "middle",
|
|
284
|
+
fontSize: "2.4rem",
|
|
285
|
+
fontWeight: "bold",
|
|
286
|
+
children: [
|
|
287
|
+
/*#__PURE__*/ jsxRuntime.jsx(TextChart, {
|
|
288
|
+
x: RADIUS,
|
|
289
|
+
dy: "0",
|
|
290
|
+
$textColor: "neutral800",
|
|
291
|
+
children: new Intl.NumberFormat(locale, {
|
|
292
|
+
notation: 'compact',
|
|
293
|
+
maximumFractionDigits: 1
|
|
294
|
+
}).format(total)
|
|
295
|
+
}),
|
|
296
|
+
/*#__PURE__*/ jsxRuntime.jsx(TextChart, {
|
|
297
|
+
x: RADIUS,
|
|
298
|
+
dy: "1.4em",
|
|
299
|
+
fontSize: "1.4rem",
|
|
300
|
+
fontWeight: "normal",
|
|
301
|
+
$textColor: "neutral600",
|
|
302
|
+
children: formatMessage({
|
|
303
|
+
id: 'content-manager.widget.chart-entries.count.label',
|
|
304
|
+
defaultMessage: '{count, plural, =0 {entries} one {entry} other {entries}}'
|
|
305
|
+
}, {
|
|
306
|
+
count: total
|
|
307
|
+
})
|
|
308
|
+
})
|
|
309
|
+
]
|
|
310
|
+
})
|
|
311
|
+
]
|
|
312
|
+
}),
|
|
313
|
+
tooltip.visible && tooltip.value && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Portal, {
|
|
314
|
+
style: {
|
|
315
|
+
position: 'fixed',
|
|
316
|
+
left: 16,
|
|
317
|
+
top: 16,
|
|
318
|
+
zIndex: 2,
|
|
319
|
+
transform: `translate(${tooltip.x}px, ${tooltip.y}px)`
|
|
320
|
+
},
|
|
321
|
+
"data-testid": "entries-chart-tooltip",
|
|
322
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
323
|
+
background: "neutral900",
|
|
324
|
+
padding: 2,
|
|
325
|
+
borderRadius: 1,
|
|
326
|
+
textAlign: "center",
|
|
327
|
+
role: "tooltip",
|
|
328
|
+
"aria-live": "polite",
|
|
329
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
330
|
+
textColor: "neutral0",
|
|
331
|
+
children: formatMessage({
|
|
332
|
+
id: 'content-manager.widget.chart-entries.tooltip',
|
|
333
|
+
defaultMessage: '{count} items'
|
|
334
|
+
}, {
|
|
335
|
+
count: tooltip.value.count,
|
|
336
|
+
label: tooltip.value.label
|
|
337
|
+
})
|
|
338
|
+
})
|
|
339
|
+
})
|
|
340
|
+
}),
|
|
341
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
342
|
+
gap: 4,
|
|
343
|
+
wrap: "wrap",
|
|
344
|
+
children: data.map((value)=>value.count > 0 && /*#__PURE__*/ jsxRuntime.jsxs(KeyChartItem, {
|
|
345
|
+
gap: 1,
|
|
346
|
+
children: [
|
|
347
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
348
|
+
background: value.color,
|
|
349
|
+
padding: 2,
|
|
350
|
+
borderRadius: 1
|
|
351
|
+
}),
|
|
352
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
353
|
+
variant: "pi",
|
|
354
|
+
children: value.label
|
|
355
|
+
})
|
|
356
|
+
]
|
|
357
|
+
}, value.label))
|
|
358
|
+
})
|
|
359
|
+
]
|
|
360
|
+
});
|
|
361
|
+
};
|
|
362
|
+
const ChartEntriesWidget = ()=>{
|
|
363
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
364
|
+
const { data: countDocuments, isLoading, error } = strapiAdmin.useGetCountDocumentsQuery();
|
|
365
|
+
if (isLoading) {
|
|
366
|
+
return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Widget.Loading, {});
|
|
367
|
+
}
|
|
368
|
+
if (error) {
|
|
369
|
+
return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Widget.Error, {});
|
|
370
|
+
}
|
|
371
|
+
const { draft, published, modified } = countDocuments ?? {
|
|
372
|
+
draft: 0,
|
|
373
|
+
published: 0,
|
|
374
|
+
modified: 0
|
|
375
|
+
};
|
|
376
|
+
const total = draft + published + modified;
|
|
377
|
+
if (!total) {
|
|
378
|
+
return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Widget.NoData, {
|
|
379
|
+
children: formatMessage({
|
|
380
|
+
id: 'content-manager.widget.last-published.no-data',
|
|
381
|
+
defaultMessage: 'No published entries'
|
|
382
|
+
})
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
386
|
+
minHeight: "100%",
|
|
387
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(DonutChartSVG, {
|
|
388
|
+
data: [
|
|
389
|
+
{
|
|
390
|
+
label: formatMessage({
|
|
391
|
+
id: 'content-manager.containers.List.draft',
|
|
392
|
+
defaultMessage: 'Draft'
|
|
393
|
+
}),
|
|
394
|
+
count: draft,
|
|
395
|
+
color: 'secondary500'
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
label: formatMessage({
|
|
399
|
+
id: 'content-manager.containers.List.modified',
|
|
400
|
+
defaultMessage: 'Modified'
|
|
401
|
+
}),
|
|
402
|
+
count: modified,
|
|
403
|
+
color: 'alternative500'
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
label: formatMessage({
|
|
407
|
+
id: 'content-manager.containers.List.published',
|
|
408
|
+
defaultMessage: 'Published'
|
|
409
|
+
}),
|
|
410
|
+
count: published,
|
|
411
|
+
color: 'success500'
|
|
412
|
+
}
|
|
413
|
+
]
|
|
414
|
+
})
|
|
156
415
|
});
|
|
157
416
|
};
|
|
158
417
|
|
|
418
|
+
exports.ChartEntriesWidget = ChartEntriesWidget;
|
|
159
419
|
exports.LastEditedWidget = LastEditedWidget;
|
|
160
420
|
exports.LastPublishedWidget = LastPublishedWidget;
|
|
161
421
|
//# sourceMappingURL=Widgets.js.map
|