@strapi/admin 5.33.3 → 5.33.4
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/LeftMenu.js +3 -1
- package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
- package/dist/admin/admin/src/components/LeftMenu.mjs +3 -1
- package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/MainNavLinks.js +31 -30
- package/dist/admin/admin/src/components/MainNav/MainNavLinks.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/MainNavLinks.mjs +31 -30
- package/dist/admin/admin/src/components/MainNav/MainNavLinks.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavBrand.js +38 -31
- package/dist/admin/admin/src/components/MainNav/NavBrand.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavBrand.mjs +38 -31
- package/dist/admin/admin/src/components/MainNav/NavBrand.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js +14 -3
- package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.mjs +15 -4
- package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavLink.js +18 -2
- package/dist/admin/admin/src/components/MainNav/NavLink.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavLink.mjs +18 -2
- package/dist/admin/admin/src/components/MainNav/NavLink.mjs.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.js +1 -2
- package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.mjs +1 -2
- package/dist/admin/admin/src/components/NpsSurvey.mjs.map +1 -1
- package/dist/admin/admin/src/components/SubNav.js +5 -0
- package/dist/admin/admin/src/components/SubNav.js.map +1 -1
- package/dist/admin/admin/src/components/SubNav.mjs +6 -1
- package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
- package/dist/admin/admin/src/constants/theme.js +3 -1
- package/dist/admin/admin/src/constants/theme.js.map +1 -1
- package/dist/admin/admin/src/constants/theme.mjs +3 -2
- package/dist/admin/admin/src/constants/theme.mjs.map +1 -1
- package/dist/admin/admin/src/features/Tracking.js +1 -2
- package/dist/admin/admin/src/features/Tracking.js.map +1 -1
- package/dist/admin/admin/src/features/Tracking.mjs +1 -2
- package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
- package/dist/admin/admin/src/render.js +0 -1
- package/dist/admin/admin/src/render.js.map +1 -1
- package/dist/admin/admin/src/render.mjs +0 -1
- package/dist/admin/admin/src/render.mjs.map +1 -1
- package/dist/admin/src/components/MainNav/NavLink.d.ts +1 -0
- package/dist/admin/src/constants/theme.d.ts +3 -2
- package/dist/admin/src/features/Tracking.d.ts +0 -1
- package/dist/admin/src/services/admin.d.ts +0 -1
- package/dist/ee/server/src/controllers/admin.d.ts +0 -1
- package/dist/ee/server/src/controllers/admin.d.ts.map +1 -1
- package/dist/ee/server/src/controllers/index.d.ts +0 -1
- package/dist/ee/server/src/controllers/index.d.ts.map +1 -1
- package/dist/ee/server/src/index.d.ts +0 -1
- package/dist/ee/server/src/index.d.ts.map +1 -1
- package/dist/server/ee/server/src/controllers/admin.js +0 -1
- package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
- package/dist/server/ee/server/src/controllers/admin.mjs +0 -1
- package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/server/src/controllers/admin.js +0 -2
- package/dist/server/server/src/controllers/admin.js.map +1 -1
- package/dist/server/server/src/controllers/admin.mjs +0 -2
- package/dist/server/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/src/controllers/admin.d.ts +0 -1
- package/dist/server/src/controllers/admin.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +0 -1
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +0 -1
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/shared/contracts/admin.d.ts +0 -1
- package/dist/shared/contracts/admin.d.ts.map +1 -1
- package/package.json +9 -9
|
@@ -8,6 +8,7 @@ var reactIntl = require('react-intl');
|
|
|
8
8
|
var reactRouterDom = require('react-router-dom');
|
|
9
9
|
var styled = require('styled-components');
|
|
10
10
|
var Tracking = require('../features/Tracking.js');
|
|
11
|
+
var useMediaQuery = require('../hooks/useMediaQuery.js');
|
|
11
12
|
var MainNav = require('./MainNav/MainNav.js');
|
|
12
13
|
var MainNavLinks = require('./MainNav/MainNavLinks.js');
|
|
13
14
|
var NavBrand = require('./MainNav/NavBrand.js');
|
|
@@ -76,6 +77,7 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks, topMobileNavigatio
|
|
|
76
77
|
const formatter = designSystem.useCollator(locale, {
|
|
77
78
|
sensitivity: 'base'
|
|
78
79
|
});
|
|
80
|
+
const isDesktop = useMediaQuery.useIsDesktop();
|
|
79
81
|
const handleClickOnLink = (destination)=>{
|
|
80
82
|
trackUsage('willNavigate', {
|
|
81
83
|
from: pathname,
|
|
@@ -126,7 +128,7 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks, topMobileNavigatio
|
|
|
126
128
|
/*#__PURE__*/ jsxRuntime.jsxs(MainNav.MainNav, {
|
|
127
129
|
children: [
|
|
128
130
|
/*#__PURE__*/ jsxRuntime.jsx(NavBrand.NavBrand, {}),
|
|
129
|
-
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Divider, {}),
|
|
131
|
+
isDesktop && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Divider, {}),
|
|
130
132
|
/*#__PURE__*/ jsxRuntime.jsxs(MenuDetails, {
|
|
131
133
|
children: [
|
|
132
134
|
/*#__PURE__*/ jsxRuntime.jsx(NavListWrapper, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LeftMenu.js","sources":["../../../../../admin/src/components/LeftMenu.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Divider, Flex, FlexComponent, IconButton, useCollator } from '@strapi/design-system';\nimport { Cross, List } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useTracking } from '../features/Tracking';\nimport { Menu, MenuItem, MobileMenuItem } from '../hooks/useMenu';\n\nimport { MainNav } from './MainNav/MainNav';\nimport { MainNavIcons } from './MainNav/MainNavLinks';\nimport { NavBrand } from './MainNav/NavBrand';\nimport { NavBurgerMenu } from './MainNav/NavBurgerMenu';\nimport { NavUser } from './MainNav/NavUser';\nimport { TrialCountdown } from './MainNav/TrialCountdown';\n\nconst sortLinks = (links: MenuItem[]) => {\n return links.sort((a, b) => {\n // if no position is defined, we put the link in the position of the external plugins, before the plugins list\n const positionA = a.position ?? 6;\n const positionB = b.position ?? 6;\n\n if (positionA < positionB) {\n return -1;\n } else {\n return 1;\n }\n });\n};\n\nconst NavListWrapper = styled<FlexComponent<'ul'>>(Flex)`\n width: 100%;\n overflow-y: auto;\n scrollbar-width: none;\n -ms-overflow-style: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n`;\n\ninterface LeftMenuProps\n extends Pick<\n Menu,\n 'generalSectionLinks' | 'pluginsSectionLinks' | 'topMobileNavigation' | 'burgerMobileNavigation'\n > {}\n\nconst MenuDetails = styled(Flex)`\n flex: 1;\n flex-direction: row;\n justify-content: space-between;\n overflow-x: auto;\n\n ${({ theme }) => theme.breakpoints.large} {\n flex-direction: column;\n overflow-y: auto;\n overflow-x: hidden;\n }\n`;\n\nconst LeftMenu = ({\n generalSectionLinks,\n pluginsSectionLinks,\n topMobileNavigation,\n burgerMobileNavigation,\n}: LeftMenuProps) => {\n const [isBurgerMenuShown, setIsBurgerMenuShown] = React.useState(false);\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const { formatMessage, locale } = useIntl();\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const handleClickOnLink = (destination: string) => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n // Close burger menu when route changes\n React.useEffect(() => {\n setIsBurgerMenuShown(false);\n }, [pathname]);\n\n const listLinksAlphabeticallySorted = [...pluginsSectionLinks, ...generalSectionLinks].sort(\n (a, b) => formatter.compare(formatMessage(a.intlLabel), formatMessage(b.intlLabel))\n );\n const listLinks = sortLinks(listLinksAlphabeticallySorted);\n\n /**\n * Return filtered mobile navigation links (used for both top and burger menu)\n */\n const mapMobileNavigationLinks = (mobileNavLinks: MobileMenuItem[]): MenuItem[] =>\n mobileNavLinks.reduce<MenuItem[]>((acc, mobileLink) => {\n const linkFound = listLinks.find((link) => link.to === mobileLink.to);\n if (linkFound) {\n acc.push(mobileLink.link ? { ...linkFound, navigationLink: mobileLink.link } : linkFound);\n }\n return acc;\n }, []);\n\n /**\n * Mobile top navigation\n */\n const topMobileNavigationLinks = mapMobileNavigationLinks(topMobileNavigation);\n\n /**\n * Mobile burger menu\n */\n const excludedPluginsFromBurgerMenu = [\n 'content-manager',\n 'content-type-builder',\n 'upload',\n 'content-releases',\n ];\n const burgerMenuPluginsLinks = pluginsSectionLinks.filter(\n (plugin) => !excludedPluginsFromBurgerMenu.some((link) => plugin.to.includes(link))\n );\n const burgerMobileNavigationLinks = [\n ...burgerMenuPluginsLinks,\n ...mapMobileNavigationLinks(burgerMobileNavigation),\n ];\n\n return (\n <>\n <MainNav>\n <NavBrand />\n\n <Divider />\n\n <MenuDetails>\n <NavListWrapper\n tag=\"ul\"\n gap={3}\n direction={{\n initial: 'row',\n large: 'column',\n }}\n alignItems=\"center\"\n justifyContent={{\n initial: 'center',\n large: 'flex-start',\n }}\n flex={1}\n paddingLeft={{\n initial: 3,\n large: 0,\n }}\n paddingRight={{\n initial: 3,\n large: 0,\n }}\n paddingTop={3}\n paddingBottom={3}\n >\n <MainNavIcons\n listLinks={listLinks}\n mobileLinks={topMobileNavigationLinks}\n handleClickOnLink={handleClickOnLink}\n />\n </NavListWrapper>\n <TrialCountdown />\n <Box\n display={{\n initial: 'none',\n large: 'flex',\n }}\n borderStyle=\"solid\"\n borderWidth={{\n initial: 0,\n large: '1px 0 0 0',\n }}\n borderColor=\"neutral150\"\n padding={3}\n >\n <NavUser />\n </Box>\n </MenuDetails>\n\n <Box\n padding={3}\n display={{\n initial: 'flex',\n large: 'none',\n }}\n >\n <IconButton\n onClick={() => setIsBurgerMenuShown((prev) => !prev)}\n style={{ border: 'none' }}\n label=\"Menu\"\n type=\"button\"\n aria-expanded={isBurgerMenuShown}\n aria-controls=\"burger-menu\"\n >\n {!isBurgerMenuShown ? <List fill=\"neutral1000\" /> : <Cross fill=\"neutral1000\" />}\n </IconButton>\n </Box>\n </MainNav>\n <NavBurgerMenu\n isShown={isBurgerMenuShown}\n listLinks={burgerMobileNavigationLinks}\n handleClickOnLink={handleClickOnLink}\n onClose={() => setIsBurgerMenuShown(false)}\n />\n </>\n );\n};\n\nexport { LeftMenu };\n"],"names":["sortLinks","links","sort","a","b","positionA","position","positionB","NavListWrapper","styled","Flex","MenuDetails","theme","breakpoints","large","LeftMenu","generalSectionLinks","pluginsSectionLinks","topMobileNavigation","burgerMobileNavigation","isBurgerMenuShown","setIsBurgerMenuShown","React","useState","trackUsage","useTracking","pathname","useLocation","formatMessage","locale","useIntl","formatter","useCollator","sensitivity","handleClickOnLink","destination","from","to","useEffect","listLinksAlphabeticallySorted","compare","intlLabel","listLinks","mapMobileNavigationLinks","mobileNavLinks","reduce","acc","mobileLink","linkFound","find","link","push","navigationLink","topMobileNavigationLinks","excludedPluginsFromBurgerMenu","burgerMenuPluginsLinks","filter","plugin","some","includes","burgerMobileNavigationLinks","_jsxs","_Fragment","MainNav","_jsx","NavBrand","Divider","tag","gap","direction","initial","alignItems","justifyContent","flex","paddingLeft","paddingRight","paddingTop","paddingBottom","MainNavIcons","mobileLinks","TrialCountdown","Box","display","borderStyle","borderWidth","borderColor","padding","NavUser","IconButton","onClick","prev","style","border","label","type","aria-expanded","aria-controls","List","fill","Cross","NavBurgerMenu","isShown","onClose"],"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 { Box, Divider, Flex, FlexComponent, IconButton, useCollator } from '@strapi/design-system';\nimport { Cross, List } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useTracking } from '../features/Tracking';\nimport { useIsDesktop } from '../hooks/useMediaQuery';\nimport { Menu, MenuItem, MobileMenuItem } from '../hooks/useMenu';\n\nimport { MainNav } from './MainNav/MainNav';\nimport { MainNavIcons } from './MainNav/MainNavLinks';\nimport { NavBrand } from './MainNav/NavBrand';\nimport { NavBurgerMenu } from './MainNav/NavBurgerMenu';\nimport { NavUser } from './MainNav/NavUser';\nimport { TrialCountdown } from './MainNav/TrialCountdown';\n\nconst sortLinks = (links: MenuItem[]) => {\n return links.sort((a, b) => {\n // if no position is defined, we put the link in the position of the external plugins, before the plugins list\n const positionA = a.position ?? 6;\n const positionB = b.position ?? 6;\n\n if (positionA < positionB) {\n return -1;\n } else {\n return 1;\n }\n });\n};\n\nconst NavListWrapper = styled<FlexComponent<'ul'>>(Flex)`\n width: 100%;\n overflow-y: auto;\n scrollbar-width: none;\n -ms-overflow-style: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n`;\n\ninterface LeftMenuProps\n extends Pick<\n Menu,\n 'generalSectionLinks' | 'pluginsSectionLinks' | 'topMobileNavigation' | 'burgerMobileNavigation'\n > {}\n\nconst MenuDetails = styled(Flex)`\n flex: 1;\n flex-direction: row;\n justify-content: space-between;\n overflow-x: auto;\n\n ${({ theme }) => theme.breakpoints.large} {\n flex-direction: column;\n overflow-y: auto;\n overflow-x: hidden;\n }\n`;\n\nconst LeftMenu = ({\n generalSectionLinks,\n pluginsSectionLinks,\n topMobileNavigation,\n burgerMobileNavigation,\n}: LeftMenuProps) => {\n const [isBurgerMenuShown, setIsBurgerMenuShown] = React.useState(false);\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const { formatMessage, locale } = useIntl();\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n const isDesktop = useIsDesktop();\n\n const handleClickOnLink = (destination: string) => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n // Close burger menu when route changes\n React.useEffect(() => {\n setIsBurgerMenuShown(false);\n }, [pathname]);\n\n const listLinksAlphabeticallySorted = [...pluginsSectionLinks, ...generalSectionLinks].sort(\n (a, b) => formatter.compare(formatMessage(a.intlLabel), formatMessage(b.intlLabel))\n );\n const listLinks = sortLinks(listLinksAlphabeticallySorted);\n\n /**\n * Return filtered mobile navigation links (used for both top and burger menu)\n */\n const mapMobileNavigationLinks = (mobileNavLinks: MobileMenuItem[]): MenuItem[] =>\n mobileNavLinks.reduce<MenuItem[]>((acc, mobileLink) => {\n const linkFound = listLinks.find((link) => link.to === mobileLink.to);\n if (linkFound) {\n acc.push(mobileLink.link ? { ...linkFound, navigationLink: mobileLink.link } : linkFound);\n }\n return acc;\n }, []);\n\n /**\n * Mobile top navigation\n */\n const topMobileNavigationLinks = mapMobileNavigationLinks(topMobileNavigation);\n\n /**\n * Mobile burger menu\n */\n const excludedPluginsFromBurgerMenu = [\n 'content-manager',\n 'content-type-builder',\n 'upload',\n 'content-releases',\n ];\n const burgerMenuPluginsLinks = pluginsSectionLinks.filter(\n (plugin) => !excludedPluginsFromBurgerMenu.some((link) => plugin.to.includes(link))\n );\n const burgerMobileNavigationLinks = [\n ...burgerMenuPluginsLinks,\n ...mapMobileNavigationLinks(burgerMobileNavigation),\n ];\n\n return (\n <>\n <MainNav>\n <NavBrand />\n\n {isDesktop && <Divider />}\n\n <MenuDetails>\n <NavListWrapper\n tag=\"ul\"\n gap={3}\n direction={{\n initial: 'row',\n large: 'column',\n }}\n alignItems=\"center\"\n justifyContent={{\n initial: 'center',\n large: 'flex-start',\n }}\n flex={1}\n paddingLeft={{\n initial: 3,\n large: 0,\n }}\n paddingRight={{\n initial: 3,\n large: 0,\n }}\n paddingTop={3}\n paddingBottom={3}\n >\n <MainNavIcons\n listLinks={listLinks}\n mobileLinks={topMobileNavigationLinks}\n handleClickOnLink={handleClickOnLink}\n />\n </NavListWrapper>\n <TrialCountdown />\n <Box\n display={{\n initial: 'none',\n large: 'flex',\n }}\n borderStyle=\"solid\"\n borderWidth={{\n initial: 0,\n large: '1px 0 0 0',\n }}\n borderColor=\"neutral150\"\n padding={3}\n >\n <NavUser />\n </Box>\n </MenuDetails>\n\n <Box\n padding={3}\n display={{\n initial: 'flex',\n large: 'none',\n }}\n >\n <IconButton\n onClick={() => setIsBurgerMenuShown((prev) => !prev)}\n style={{ border: 'none' }}\n label=\"Menu\"\n type=\"button\"\n aria-expanded={isBurgerMenuShown}\n aria-controls=\"burger-menu\"\n >\n {!isBurgerMenuShown ? <List fill=\"neutral1000\" /> : <Cross fill=\"neutral1000\" />}\n </IconButton>\n </Box>\n </MainNav>\n <NavBurgerMenu\n isShown={isBurgerMenuShown}\n listLinks={burgerMobileNavigationLinks}\n handleClickOnLink={handleClickOnLink}\n onClose={() => setIsBurgerMenuShown(false)}\n />\n </>\n );\n};\n\nexport { LeftMenu };\n"],"names":["sortLinks","links","sort","a","b","positionA","position","positionB","NavListWrapper","styled","Flex","MenuDetails","theme","breakpoints","large","LeftMenu","generalSectionLinks","pluginsSectionLinks","topMobileNavigation","burgerMobileNavigation","isBurgerMenuShown","setIsBurgerMenuShown","React","useState","trackUsage","useTracking","pathname","useLocation","formatMessage","locale","useIntl","formatter","useCollator","sensitivity","isDesktop","useIsDesktop","handleClickOnLink","destination","from","to","useEffect","listLinksAlphabeticallySorted","compare","intlLabel","listLinks","mapMobileNavigationLinks","mobileNavLinks","reduce","acc","mobileLink","linkFound","find","link","push","navigationLink","topMobileNavigationLinks","excludedPluginsFromBurgerMenu","burgerMenuPluginsLinks","filter","plugin","some","includes","burgerMobileNavigationLinks","_jsxs","_Fragment","MainNav","_jsx","NavBrand","Divider","tag","gap","direction","initial","alignItems","justifyContent","flex","paddingLeft","paddingRight","paddingTop","paddingBottom","MainNavIcons","mobileLinks","TrialCountdown","Box","display","borderStyle","borderWidth","borderColor","padding","NavUser","IconButton","onClick","prev","style","border","label","type","aria-expanded","aria-controls","List","fill","Cross","NavBurgerMenu","isShown","onClose"],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ import { useIntl } from 'react-intl';
|
|
|
6
6
|
import { useLocation } from 'react-router-dom';
|
|
7
7
|
import { styled } from 'styled-components';
|
|
8
8
|
import { useTracking } from '../features/Tracking.mjs';
|
|
9
|
+
import { useIsDesktop } from '../hooks/useMediaQuery.mjs';
|
|
9
10
|
import { MainNav } from './MainNav/MainNav.mjs';
|
|
10
11
|
import { MainNavIcons } from './MainNav/MainNavLinks.mjs';
|
|
11
12
|
import { NavBrand } from './MainNav/NavBrand.mjs';
|
|
@@ -55,6 +56,7 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks, topMobileNavigatio
|
|
|
55
56
|
const formatter = useCollator(locale, {
|
|
56
57
|
sensitivity: 'base'
|
|
57
58
|
});
|
|
59
|
+
const isDesktop = useIsDesktop();
|
|
58
60
|
const handleClickOnLink = (destination)=>{
|
|
59
61
|
trackUsage('willNavigate', {
|
|
60
62
|
from: pathname,
|
|
@@ -105,7 +107,7 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks, topMobileNavigatio
|
|
|
105
107
|
/*#__PURE__*/ jsxs(MainNav, {
|
|
106
108
|
children: [
|
|
107
109
|
/*#__PURE__*/ jsx(NavBrand, {}),
|
|
108
|
-
/*#__PURE__*/ jsx(Divider, {}),
|
|
110
|
+
isDesktop && /*#__PURE__*/ jsx(Divider, {}),
|
|
109
111
|
/*#__PURE__*/ jsxs(MenuDetails, {
|
|
110
112
|
children: [
|
|
111
113
|
/*#__PURE__*/ jsx(NavListWrapper, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LeftMenu.mjs","sources":["../../../../../admin/src/components/LeftMenu.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Divider, Flex, FlexComponent, IconButton, useCollator } from '@strapi/design-system';\nimport { Cross, List } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useTracking } from '../features/Tracking';\nimport { Menu, MenuItem, MobileMenuItem } from '../hooks/useMenu';\n\nimport { MainNav } from './MainNav/MainNav';\nimport { MainNavIcons } from './MainNav/MainNavLinks';\nimport { NavBrand } from './MainNav/NavBrand';\nimport { NavBurgerMenu } from './MainNav/NavBurgerMenu';\nimport { NavUser } from './MainNav/NavUser';\nimport { TrialCountdown } from './MainNav/TrialCountdown';\n\nconst sortLinks = (links: MenuItem[]) => {\n return links.sort((a, b) => {\n // if no position is defined, we put the link in the position of the external plugins, before the plugins list\n const positionA = a.position ?? 6;\n const positionB = b.position ?? 6;\n\n if (positionA < positionB) {\n return -1;\n } else {\n return 1;\n }\n });\n};\n\nconst NavListWrapper = styled<FlexComponent<'ul'>>(Flex)`\n width: 100%;\n overflow-y: auto;\n scrollbar-width: none;\n -ms-overflow-style: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n`;\n\ninterface LeftMenuProps\n extends Pick<\n Menu,\n 'generalSectionLinks' | 'pluginsSectionLinks' | 'topMobileNavigation' | 'burgerMobileNavigation'\n > {}\n\nconst MenuDetails = styled(Flex)`\n flex: 1;\n flex-direction: row;\n justify-content: space-between;\n overflow-x: auto;\n\n ${({ theme }) => theme.breakpoints.large} {\n flex-direction: column;\n overflow-y: auto;\n overflow-x: hidden;\n }\n`;\n\nconst LeftMenu = ({\n generalSectionLinks,\n pluginsSectionLinks,\n topMobileNavigation,\n burgerMobileNavigation,\n}: LeftMenuProps) => {\n const [isBurgerMenuShown, setIsBurgerMenuShown] = React.useState(false);\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const { formatMessage, locale } = useIntl();\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const handleClickOnLink = (destination: string) => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n // Close burger menu when route changes\n React.useEffect(() => {\n setIsBurgerMenuShown(false);\n }, [pathname]);\n\n const listLinksAlphabeticallySorted = [...pluginsSectionLinks, ...generalSectionLinks].sort(\n (a, b) => formatter.compare(formatMessage(a.intlLabel), formatMessage(b.intlLabel))\n );\n const listLinks = sortLinks(listLinksAlphabeticallySorted);\n\n /**\n * Return filtered mobile navigation links (used for both top and burger menu)\n */\n const mapMobileNavigationLinks = (mobileNavLinks: MobileMenuItem[]): MenuItem[] =>\n mobileNavLinks.reduce<MenuItem[]>((acc, mobileLink) => {\n const linkFound = listLinks.find((link) => link.to === mobileLink.to);\n if (linkFound) {\n acc.push(mobileLink.link ? { ...linkFound, navigationLink: mobileLink.link } : linkFound);\n }\n return acc;\n }, []);\n\n /**\n * Mobile top navigation\n */\n const topMobileNavigationLinks = mapMobileNavigationLinks(topMobileNavigation);\n\n /**\n * Mobile burger menu\n */\n const excludedPluginsFromBurgerMenu = [\n 'content-manager',\n 'content-type-builder',\n 'upload',\n 'content-releases',\n ];\n const burgerMenuPluginsLinks = pluginsSectionLinks.filter(\n (plugin) => !excludedPluginsFromBurgerMenu.some((link) => plugin.to.includes(link))\n );\n const burgerMobileNavigationLinks = [\n ...burgerMenuPluginsLinks,\n ...mapMobileNavigationLinks(burgerMobileNavigation),\n ];\n\n return (\n <>\n <MainNav>\n <NavBrand />\n\n <Divider />\n\n <MenuDetails>\n <NavListWrapper\n tag=\"ul\"\n gap={3}\n direction={{\n initial: 'row',\n large: 'column',\n }}\n alignItems=\"center\"\n justifyContent={{\n initial: 'center',\n large: 'flex-start',\n }}\n flex={1}\n paddingLeft={{\n initial: 3,\n large: 0,\n }}\n paddingRight={{\n initial: 3,\n large: 0,\n }}\n paddingTop={3}\n paddingBottom={3}\n >\n <MainNavIcons\n listLinks={listLinks}\n mobileLinks={topMobileNavigationLinks}\n handleClickOnLink={handleClickOnLink}\n />\n </NavListWrapper>\n <TrialCountdown />\n <Box\n display={{\n initial: 'none',\n large: 'flex',\n }}\n borderStyle=\"solid\"\n borderWidth={{\n initial: 0,\n large: '1px 0 0 0',\n }}\n borderColor=\"neutral150\"\n padding={3}\n >\n <NavUser />\n </Box>\n </MenuDetails>\n\n <Box\n padding={3}\n display={{\n initial: 'flex',\n large: 'none',\n }}\n >\n <IconButton\n onClick={() => setIsBurgerMenuShown((prev) => !prev)}\n style={{ border: 'none' }}\n label=\"Menu\"\n type=\"button\"\n aria-expanded={isBurgerMenuShown}\n aria-controls=\"burger-menu\"\n >\n {!isBurgerMenuShown ? <List fill=\"neutral1000\" /> : <Cross fill=\"neutral1000\" />}\n </IconButton>\n </Box>\n </MainNav>\n <NavBurgerMenu\n isShown={isBurgerMenuShown}\n listLinks={burgerMobileNavigationLinks}\n handleClickOnLink={handleClickOnLink}\n onClose={() => setIsBurgerMenuShown(false)}\n />\n </>\n );\n};\n\nexport { LeftMenu };\n"],"names":["sortLinks","links","sort","a","b","positionA","position","positionB","NavListWrapper","styled","Flex","MenuDetails","theme","breakpoints","large","LeftMenu","generalSectionLinks","pluginsSectionLinks","topMobileNavigation","burgerMobileNavigation","isBurgerMenuShown","setIsBurgerMenuShown","React","useState","trackUsage","useTracking","pathname","useLocation","formatMessage","locale","useIntl","formatter","useCollator","sensitivity","handleClickOnLink","destination","from","to","useEffect","listLinksAlphabeticallySorted","compare","intlLabel","listLinks","mapMobileNavigationLinks","mobileNavLinks","reduce","acc","mobileLink","linkFound","find","link","push","navigationLink","topMobileNavigationLinks","excludedPluginsFromBurgerMenu","burgerMenuPluginsLinks","filter","plugin","some","includes","burgerMobileNavigationLinks","_jsxs","_Fragment","MainNav","_jsx","NavBrand","Divider","tag","gap","direction","initial","alignItems","justifyContent","flex","paddingLeft","paddingRight","paddingTop","paddingBottom","MainNavIcons","mobileLinks","TrialCountdown","Box","display","borderStyle","borderWidth","borderColor","padding","NavUser","IconButton","onClick","prev","style","border","label","type","aria-expanded","aria-controls","List","fill","Cross","NavBurgerMenu","isShown","onClose"],"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 { Box, Divider, Flex, FlexComponent, IconButton, useCollator } from '@strapi/design-system';\nimport { Cross, List } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useTracking } from '../features/Tracking';\nimport { useIsDesktop } from '../hooks/useMediaQuery';\nimport { Menu, MenuItem, MobileMenuItem } from '../hooks/useMenu';\n\nimport { MainNav } from './MainNav/MainNav';\nimport { MainNavIcons } from './MainNav/MainNavLinks';\nimport { NavBrand } from './MainNav/NavBrand';\nimport { NavBurgerMenu } from './MainNav/NavBurgerMenu';\nimport { NavUser } from './MainNav/NavUser';\nimport { TrialCountdown } from './MainNav/TrialCountdown';\n\nconst sortLinks = (links: MenuItem[]) => {\n return links.sort((a, b) => {\n // if no position is defined, we put the link in the position of the external plugins, before the plugins list\n const positionA = a.position ?? 6;\n const positionB = b.position ?? 6;\n\n if (positionA < positionB) {\n return -1;\n } else {\n return 1;\n }\n });\n};\n\nconst NavListWrapper = styled<FlexComponent<'ul'>>(Flex)`\n width: 100%;\n overflow-y: auto;\n scrollbar-width: none;\n -ms-overflow-style: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n`;\n\ninterface LeftMenuProps\n extends Pick<\n Menu,\n 'generalSectionLinks' | 'pluginsSectionLinks' | 'topMobileNavigation' | 'burgerMobileNavigation'\n > {}\n\nconst MenuDetails = styled(Flex)`\n flex: 1;\n flex-direction: row;\n justify-content: space-between;\n overflow-x: auto;\n\n ${({ theme }) => theme.breakpoints.large} {\n flex-direction: column;\n overflow-y: auto;\n overflow-x: hidden;\n }\n`;\n\nconst LeftMenu = ({\n generalSectionLinks,\n pluginsSectionLinks,\n topMobileNavigation,\n burgerMobileNavigation,\n}: LeftMenuProps) => {\n const [isBurgerMenuShown, setIsBurgerMenuShown] = React.useState(false);\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const { formatMessage, locale } = useIntl();\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n const isDesktop = useIsDesktop();\n\n const handleClickOnLink = (destination: string) => {\n trackUsage('willNavigate', { from: pathname, to: destination });\n };\n\n // Close burger menu when route changes\n React.useEffect(() => {\n setIsBurgerMenuShown(false);\n }, [pathname]);\n\n const listLinksAlphabeticallySorted = [...pluginsSectionLinks, ...generalSectionLinks].sort(\n (a, b) => formatter.compare(formatMessage(a.intlLabel), formatMessage(b.intlLabel))\n );\n const listLinks = sortLinks(listLinksAlphabeticallySorted);\n\n /**\n * Return filtered mobile navigation links (used for both top and burger menu)\n */\n const mapMobileNavigationLinks = (mobileNavLinks: MobileMenuItem[]): MenuItem[] =>\n mobileNavLinks.reduce<MenuItem[]>((acc, mobileLink) => {\n const linkFound = listLinks.find((link) => link.to === mobileLink.to);\n if (linkFound) {\n acc.push(mobileLink.link ? { ...linkFound, navigationLink: mobileLink.link } : linkFound);\n }\n return acc;\n }, []);\n\n /**\n * Mobile top navigation\n */\n const topMobileNavigationLinks = mapMobileNavigationLinks(topMobileNavigation);\n\n /**\n * Mobile burger menu\n */\n const excludedPluginsFromBurgerMenu = [\n 'content-manager',\n 'content-type-builder',\n 'upload',\n 'content-releases',\n ];\n const burgerMenuPluginsLinks = pluginsSectionLinks.filter(\n (plugin) => !excludedPluginsFromBurgerMenu.some((link) => plugin.to.includes(link))\n );\n const burgerMobileNavigationLinks = [\n ...burgerMenuPluginsLinks,\n ...mapMobileNavigationLinks(burgerMobileNavigation),\n ];\n\n return (\n <>\n <MainNav>\n <NavBrand />\n\n {isDesktop && <Divider />}\n\n <MenuDetails>\n <NavListWrapper\n tag=\"ul\"\n gap={3}\n direction={{\n initial: 'row',\n large: 'column',\n }}\n alignItems=\"center\"\n justifyContent={{\n initial: 'center',\n large: 'flex-start',\n }}\n flex={1}\n paddingLeft={{\n initial: 3,\n large: 0,\n }}\n paddingRight={{\n initial: 3,\n large: 0,\n }}\n paddingTop={3}\n paddingBottom={3}\n >\n <MainNavIcons\n listLinks={listLinks}\n mobileLinks={topMobileNavigationLinks}\n handleClickOnLink={handleClickOnLink}\n />\n </NavListWrapper>\n <TrialCountdown />\n <Box\n display={{\n initial: 'none',\n large: 'flex',\n }}\n borderStyle=\"solid\"\n borderWidth={{\n initial: 0,\n large: '1px 0 0 0',\n }}\n borderColor=\"neutral150\"\n padding={3}\n >\n <NavUser />\n </Box>\n </MenuDetails>\n\n <Box\n padding={3}\n display={{\n initial: 'flex',\n large: 'none',\n }}\n >\n <IconButton\n onClick={() => setIsBurgerMenuShown((prev) => !prev)}\n style={{ border: 'none' }}\n label=\"Menu\"\n type=\"button\"\n aria-expanded={isBurgerMenuShown}\n aria-controls=\"burger-menu\"\n >\n {!isBurgerMenuShown ? <List fill=\"neutral1000\" /> : <Cross fill=\"neutral1000\" />}\n </IconButton>\n </Box>\n </MainNav>\n <NavBurgerMenu\n isShown={isBurgerMenuShown}\n listLinks={burgerMobileNavigationLinks}\n handleClickOnLink={handleClickOnLink}\n onClose={() => setIsBurgerMenuShown(false)}\n />\n </>\n );\n};\n\nexport { LeftMenu };\n"],"names":["sortLinks","links","sort","a","b","positionA","position","positionB","NavListWrapper","styled","Flex","MenuDetails","theme","breakpoints","large","LeftMenu","generalSectionLinks","pluginsSectionLinks","topMobileNavigation","burgerMobileNavigation","isBurgerMenuShown","setIsBurgerMenuShown","React","useState","trackUsage","useTracking","pathname","useLocation","formatMessage","locale","useIntl","formatter","useCollator","sensitivity","isDesktop","useIsDesktop","handleClickOnLink","destination","from","to","useEffect","listLinksAlphabeticallySorted","compare","intlLabel","listLinks","mapMobileNavigationLinks","mobileNavLinks","reduce","acc","mobileLink","linkFound","find","link","push","navigationLink","topMobileNavigationLinks","excludedPluginsFromBurgerMenu","burgerMenuPluginsLinks","filter","plugin","some","includes","burgerMobileNavigationLinks","_jsxs","_Fragment","MainNav","_jsx","NavBrand","Divider","tag","gap","direction","initial","alignItems","justifyContent","flex","paddingLeft","paddingRight","paddingTop","paddingBottom","MainNavIcons","mobileLinks","TrialCountdown","Box","display","borderStyle","borderWidth","borderColor","padding","NavUser","IconButton","onClick","prev","style","border","label","type","aria-expanded","aria-controls","List","fill","Cross","NavBurgerMenu","isShown","onClose"],"mappings":"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"}
|
|
@@ -57,7 +57,7 @@ const MainNavIcons = ({ listLinks, mobileLinks, handleClickOnLink })=>{
|
|
|
57
57
|
const badgeContentNumeric = link.notificationsCount && link.notificationsCount > 0 ? link.notificationsCount.toString() : undefined;
|
|
58
58
|
const labelValue = formatMessage(link.intlLabel);
|
|
59
59
|
const linkMobile = mobileLinks.find((mobileLink)=>mobileLink.to === link.to);
|
|
60
|
-
const LinkElement = ()=>/*#__PURE__*/ jsxRuntime.jsxs(NavLink.NavLink.
|
|
60
|
+
const LinkElement = ()=>/*#__PURE__*/ jsxRuntime.jsxs(NavLink.NavLink.NavButton, {
|
|
61
61
|
to: link.to,
|
|
62
62
|
onClick: ()=>handleClickOnLink(link.to),
|
|
63
63
|
"aria-label": labelValue,
|
|
@@ -114,40 +114,41 @@ const MainNavBurgerMenuLinks = ({ listLinks, handleClickOnLink })=>{
|
|
|
114
114
|
const labelValue = formatMessage(link.intlLabel);
|
|
115
115
|
const navigationTarget = link.navigationLink || link.to;
|
|
116
116
|
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
117
|
-
paddingTop: 3,
|
|
118
117
|
alignItems: "center",
|
|
119
118
|
tag: "li",
|
|
120
|
-
children: /*#__PURE__*/ jsxRuntime.
|
|
119
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(NavLink.NavLink.Link, {
|
|
121
120
|
to: navigationTarget,
|
|
122
121
|
onClick: ()=>handleClickOnLink(navigationTarget),
|
|
123
122
|
"aria-label": labelValue,
|
|
124
|
-
children:
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
123
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
124
|
+
alignItems: "center",
|
|
125
|
+
gap: 3,
|
|
126
|
+
children: [
|
|
127
|
+
/*#__PURE__*/ jsxRuntime.jsx(IconContainer, {
|
|
128
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(LinkIcon, {
|
|
129
|
+
width: "20",
|
|
130
|
+
height: "20",
|
|
131
|
+
fill: "neutral500"
|
|
132
|
+
})
|
|
133
|
+
}),
|
|
134
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
135
|
+
children: labelValue
|
|
136
|
+
}),
|
|
137
|
+
badgeContentLock ? /*#__PURE__*/ jsxRuntime.jsx(NavLinkBadgeLock, {
|
|
138
|
+
label: "locked",
|
|
139
|
+
textColor: "neutral500",
|
|
140
|
+
paddingLeft: 0,
|
|
141
|
+
paddingRight: 0,
|
|
142
|
+
children: badgeContentLock
|
|
143
|
+
}) : badgeContentNumeric ? /*#__PURE__*/ jsxRuntime.jsx(NavLinkBadgeCounter, {
|
|
144
|
+
label: badgeContentNumeric,
|
|
145
|
+
backgroundColor: "primary600",
|
|
146
|
+
width: "2.3rem",
|
|
147
|
+
color: "neutral0",
|
|
148
|
+
children: badgeContentNumeric
|
|
149
|
+
}) : null
|
|
150
|
+
]
|
|
151
|
+
})
|
|
151
152
|
})
|
|
152
153
|
}, navigationTarget);
|
|
153
154
|
}) : null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MainNavLinks.js","sources":["../../../../../../admin/src/components/MainNav/MainNavLinks.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { type To } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useIsDesktop } from '../../hooks/useMediaQuery';\nimport { MenuItem } from '../../hooks/useMenu';\nimport { tours } from '../GuidedTour/Tours';\n\nimport { NavLink } from './NavLink';\n\nconst NavLinkBadgeLock = styled(NavLink.Badge)`\n background-color: transparent;\n`;\n\nconst NavLinkBadgeCounter = styled(NavLink.Badge)`\n span {\n color: ${({ theme }) => theme.colors.neutral0};\n }\n`;\n\n/**\n * Will attach a guided tour tooltip to the right links. (mostly used for the finish step to indicate the next tour)\n * @param to: The target link\n * @param children: The original link to be wrapped in a guided tour tooltip\n * @returns The link wrapped in a guided tour tooltip or the original link if no guided tour needs to be attached\n */\nconst GuidedTourTooltip = ({ to, children }: { to: To; children: React.ReactNode }) => {\n const normalizedTo = to.toString().replace(/\\//g, '');\n\n switch (normalizedTo) {\n // We attach the final step of the content type builder tour on content manager link because it's the next tour (Content Type Builder -> Content Manager).\n case 'content-manager':\n return <tours.contentTypeBuilder.Finish>{children}</tours.contentTypeBuilder.Finish>;\n // We attach the final step of the api tokens tour on the home link because it was the last tour (API Tokens -> Go back to homepage).\n case '':\n return <tours.apiTokens.Finish>{children}</tours.apiTokens.Finish>;\n // We attach the final step of the content manager tour on the settings link because it's the next tour (Content Manager -> API tokens).\n case 'settings':\n return <tours.contentManager.Finish>{children}</tours.contentManager.Finish>;\n // If the link doesn't match any of the above, we return the original link.\n default:\n return children;\n }\n};\n\nconst MainNavIcons = ({\n listLinks,\n mobileLinks,\n handleClickOnLink,\n}: {\n listLinks: MenuItem[];\n mobileLinks: MenuItem[];\n handleClickOnLink: (value: string) => void;\n}) => {\n const { formatMessage } = useIntl();\n const isDesktop = useIsDesktop();\n\n return listLinks.length > 0\n ? listLinks.map((link) => {\n const LinkIcon = link.icon;\n const badgeContentLock = link?.licenseOnly ? <Lightning fill=\"primary600\" /> : undefined;\n\n const badgeContentNumeric =\n link.notificationsCount && link.notificationsCount > 0\n ? link.notificationsCount.toString()\n : undefined;\n\n const labelValue = formatMessage(link.intlLabel);\n const linkMobile = mobileLinks.find((mobileLink) => mobileLink.to === link.to);\n\n const LinkElement = () => (\n <NavLink.Link\n to={link.to}\n onClick={() => handleClickOnLink(link.to)}\n aria-label={labelValue}\n >\n <NavLink.Icon label={labelValue}>\n <LinkIcon width=\"20\" height=\"20\" fill=\"neutral500\" />\n </NavLink.Icon>\n {badgeContentLock ? (\n <NavLinkBadgeLock\n label=\"locked\"\n textColor=\"neutral500\"\n paddingLeft={0}\n paddingRight={0}\n >\n {badgeContentLock}\n </NavLinkBadgeLock>\n ) : badgeContentNumeric ? (\n <NavLinkBadgeCounter\n label={badgeContentNumeric}\n backgroundColor=\"primary600\"\n width=\"2.3rem\"\n color=\"neutral0\"\n >\n {badgeContentNumeric}\n </NavLinkBadgeCounter>\n ) : null}\n </NavLink.Link>\n );\n\n return isDesktop || (!isDesktop && linkMobile) ? (\n <Flex tag=\"li\" key={link.to}>\n <GuidedTourTooltip to={link.to}>\n <NavLink.Tooltip position={isDesktop ? 'right' : 'bottom'} label={labelValue}>\n <LinkElement />\n </NavLink.Tooltip>\n </GuidedTourTooltip>\n </Flex>\n ) : null;\n })\n : null;\n};\n\nconst IconContainer = styled(Box)`\n svg {\n display: block;\n }\n`;\n\nconst MainNavBurgerMenuLinks = ({\n listLinks,\n handleClickOnLink,\n}: {\n listLinks: MenuItem[];\n handleClickOnLink: (value: string) => void;\n}) => {\n const { formatMessage } = useIntl();\n\n return listLinks.length > 0\n ? listLinks.map((link) => {\n const LinkIcon = link.icon;\n const badgeContentLock = link?.licenseOnly ? <Lightning fill=\"primary600\" /> : undefined;\n\n const badgeContentNumeric =\n link.notificationsCount && link.notificationsCount > 0\n ? link.notificationsCount.toString()\n : undefined;\n\n const labelValue = formatMessage(link.intlLabel);\n const navigationTarget = link.navigationLink || link.to;\n\n return (\n <Flex paddingTop={3} alignItems=\"center\" tag=\"li\" key={navigationTarget}>\n <NavLink.Link\n to={navigationTarget}\n onClick={() => handleClickOnLink(navigationTarget)}\n aria-label={labelValue}\n >\n <IconContainer marginRight=\"0.6rem\">\n <LinkIcon width=\"20\" height=\"20\" fill=\"neutral500\" />\n </IconContainer>\n <Typography marginLeft={3}>{labelValue}</Typography>\n {badgeContentLock ? (\n <NavLinkBadgeLock\n label=\"locked\"\n textColor=\"neutral500\"\n paddingLeft={0}\n paddingRight={0}\n >\n {badgeContentLock}\n </NavLinkBadgeLock>\n ) : badgeContentNumeric ? (\n <NavLinkBadgeCounter\n label={badgeContentNumeric}\n backgroundColor=\"primary600\"\n width=\"2.3rem\"\n color=\"neutral0\"\n >\n {badgeContentNumeric}\n </NavLinkBadgeCounter>\n ) : null}\n </NavLink.Link>\n </Flex>\n );\n })\n : null;\n};\n\nexport { MainNavIcons, MainNavBurgerMenuLinks };\n"],"names":["NavLinkBadgeLock","styled","NavLink","Badge","NavLinkBadgeCounter","theme","colors","neutral0","GuidedTourTooltip","to","children","normalizedTo","toString","replace","_jsx","tours","contentTypeBuilder","Finish","apiTokens","contentManager","MainNavIcons","listLinks","mobileLinks","handleClickOnLink","formatMessage","useIntl","isDesktop","useIsDesktop","length","map","link","LinkIcon","icon","badgeContentLock","licenseOnly","Lightning","fill","undefined","badgeContentNumeric","notificationsCount","labelValue","intlLabel","linkMobile","find","mobileLink","LinkElement","_jsxs","Link","onClick","aria-label","Icon","label","width","height","textColor","paddingLeft","paddingRight","backgroundColor","color","Flex","tag","Tooltip","position","IconContainer","Box","MainNavBurgerMenuLinks","navigationTarget","navigationLink","paddingTop","alignItems","marginRight","Typography","marginLeft"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MainNavLinks.js","sources":["../../../../../../admin/src/components/MainNav/MainNavLinks.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { type To } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useIsDesktop } from '../../hooks/useMediaQuery';\nimport { MenuItem } from '../../hooks/useMenu';\nimport { tours } from '../GuidedTour/Tours';\n\nimport { NavLink } from './NavLink';\n\nconst NavLinkBadgeLock = styled(NavLink.Badge)`\n background-color: transparent;\n`;\n\nconst NavLinkBadgeCounter = styled(NavLink.Badge)`\n span {\n color: ${({ theme }) => theme.colors.neutral0};\n }\n`;\n\n/**\n * Will attach a guided tour tooltip to the right links. (mostly used for the finish step to indicate the next tour)\n * @param to: The target link\n * @param children: The original link to be wrapped in a guided tour tooltip\n * @returns The link wrapped in a guided tour tooltip or the original link if no guided tour needs to be attached\n */\nconst GuidedTourTooltip = ({ to, children }: { to: To; children: React.ReactNode }) => {\n const normalizedTo = to.toString().replace(/\\//g, '');\n\n switch (normalizedTo) {\n // We attach the final step of the content type builder tour on content manager link because it's the next tour (Content Type Builder -> Content Manager).\n case 'content-manager':\n return <tours.contentTypeBuilder.Finish>{children}</tours.contentTypeBuilder.Finish>;\n // We attach the final step of the api tokens tour on the home link because it was the last tour (API Tokens -> Go back to homepage).\n case '':\n return <tours.apiTokens.Finish>{children}</tours.apiTokens.Finish>;\n // We attach the final step of the content manager tour on the settings link because it's the next tour (Content Manager -> API tokens).\n case 'settings':\n return <tours.contentManager.Finish>{children}</tours.contentManager.Finish>;\n // If the link doesn't match any of the above, we return the original link.\n default:\n return children;\n }\n};\n\nconst MainNavIcons = ({\n listLinks,\n mobileLinks,\n handleClickOnLink,\n}: {\n listLinks: MenuItem[];\n mobileLinks: MenuItem[];\n handleClickOnLink: (value: string) => void;\n}) => {\n const { formatMessage } = useIntl();\n const isDesktop = useIsDesktop();\n\n return listLinks.length > 0\n ? listLinks.map((link) => {\n const LinkIcon = link.icon;\n const badgeContentLock = link?.licenseOnly ? <Lightning fill=\"primary600\" /> : undefined;\n\n const badgeContentNumeric =\n link.notificationsCount && link.notificationsCount > 0\n ? link.notificationsCount.toString()\n : undefined;\n\n const labelValue = formatMessage(link.intlLabel);\n const linkMobile = mobileLinks.find((mobileLink) => mobileLink.to === link.to);\n\n const LinkElement = () => (\n <NavLink.NavButton\n to={link.to}\n onClick={() => handleClickOnLink(link.to)}\n aria-label={labelValue}\n >\n <NavLink.Icon label={labelValue}>\n <LinkIcon width=\"20\" height=\"20\" fill=\"neutral500\" />\n </NavLink.Icon>\n {badgeContentLock ? (\n <NavLinkBadgeLock\n label=\"locked\"\n textColor=\"neutral500\"\n paddingLeft={0}\n paddingRight={0}\n >\n {badgeContentLock}\n </NavLinkBadgeLock>\n ) : badgeContentNumeric ? (\n <NavLinkBadgeCounter\n label={badgeContentNumeric}\n backgroundColor=\"primary600\"\n width=\"2.3rem\"\n color=\"neutral0\"\n >\n {badgeContentNumeric}\n </NavLinkBadgeCounter>\n ) : null}\n </NavLink.NavButton>\n );\n\n return isDesktop || (!isDesktop && linkMobile) ? (\n <Flex tag=\"li\" key={link.to}>\n <GuidedTourTooltip to={link.to}>\n <NavLink.Tooltip position={isDesktop ? 'right' : 'bottom'} label={labelValue}>\n <LinkElement />\n </NavLink.Tooltip>\n </GuidedTourTooltip>\n </Flex>\n ) : null;\n })\n : null;\n};\n\nconst IconContainer = styled(Box)`\n svg {\n display: block;\n }\n`;\n\nconst MainNavBurgerMenuLinks = ({\n listLinks,\n handleClickOnLink,\n}: {\n listLinks: MenuItem[];\n handleClickOnLink: (value: string) => void;\n}) => {\n const { formatMessage } = useIntl();\n\n return listLinks.length > 0\n ? listLinks.map((link) => {\n const LinkIcon = link.icon;\n const badgeContentLock = link?.licenseOnly ? <Lightning fill=\"primary600\" /> : undefined;\n\n const badgeContentNumeric =\n link.notificationsCount && link.notificationsCount > 0\n ? link.notificationsCount.toString()\n : undefined;\n\n const labelValue = formatMessage(link.intlLabel);\n const navigationTarget = link.navigationLink || link.to;\n\n return (\n <Flex alignItems=\"center\" tag=\"li\" key={navigationTarget}>\n <NavLink.Link\n to={navigationTarget}\n onClick={() => handleClickOnLink(navigationTarget)}\n aria-label={labelValue}\n >\n <Flex alignItems=\"center\" gap={3}>\n <IconContainer>\n <LinkIcon width=\"20\" height=\"20\" fill=\"neutral500\" />\n </IconContainer>\n <Typography>{labelValue}</Typography>\n {badgeContentLock ? (\n <NavLinkBadgeLock\n label=\"locked\"\n textColor=\"neutral500\"\n paddingLeft={0}\n paddingRight={0}\n >\n {badgeContentLock}\n </NavLinkBadgeLock>\n ) : badgeContentNumeric ? (\n <NavLinkBadgeCounter\n label={badgeContentNumeric}\n backgroundColor=\"primary600\"\n width=\"2.3rem\"\n color=\"neutral0\"\n >\n {badgeContentNumeric}\n </NavLinkBadgeCounter>\n ) : null}\n </Flex>\n </NavLink.Link>\n </Flex>\n );\n })\n : null;\n};\n\nexport { MainNavIcons, MainNavBurgerMenuLinks };\n"],"names":["NavLinkBadgeLock","styled","NavLink","Badge","NavLinkBadgeCounter","theme","colors","neutral0","GuidedTourTooltip","to","children","normalizedTo","toString","replace","_jsx","tours","contentTypeBuilder","Finish","apiTokens","contentManager","MainNavIcons","listLinks","mobileLinks","handleClickOnLink","formatMessage","useIntl","isDesktop","useIsDesktop","length","map","link","LinkIcon","icon","badgeContentLock","licenseOnly","Lightning","fill","undefined","badgeContentNumeric","notificationsCount","labelValue","intlLabel","linkMobile","find","mobileLink","LinkElement","_jsxs","NavButton","onClick","aria-label","Icon","label","width","height","textColor","paddingLeft","paddingRight","backgroundColor","color","Flex","tag","Tooltip","position","IconContainer","Box","MainNavBurgerMenuLinks","navigationTarget","navigationLink","alignItems","Link","gap","Typography"],"mappings":";;;;;;;;;;;;AAcA,MAAMA,gBAAmBC,GAAAA,aAAAA,CAAOC,eAAQC,CAAAA,KAAK,CAAC;;AAE9C,CAAC;AAED,MAAMC,mBAAsBH,GAAAA,aAAAA,CAAOC,eAAQC,CAAAA,KAAK,CAAC;;WAEtC,EAAE,CAAC,EAAEE,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,QAAQ,CAAC;;AAElD,CAAC;AAED;;;;;AAKC,IACD,MAAMC,iBAAoB,GAAA,CAAC,EAAEC,EAAE,EAAEC,QAAQ,EAAyC,GAAA;AAChF,IAAA,MAAMC,eAAeF,EAAGG,CAAAA,QAAQ,EAAGC,CAAAA,OAAO,CAAC,KAAO,EAAA,EAAA,CAAA;IAElD,OAAQF,YAAAA;;QAEN,KAAK,iBAAA;AACH,YAAA,qBAAOG,cAACC,CAAAA,WAAAA,CAAMC,kBAAkB,CAACC,MAAM,EAAA;AAAEP,gBAAAA,QAAAA,EAAAA;;;QAE3C,KAAK,EAAA;AACH,YAAA,qBAAOI,cAACC,CAAAA,WAAAA,CAAMG,SAAS,CAACD,MAAM,EAAA;AAAEP,gBAAAA,QAAAA,EAAAA;;;QAElC,KAAK,UAAA;AACH,YAAA,qBAAOI,cAACC,CAAAA,WAAAA,CAAMI,cAAc,CAACF,MAAM,EAAA;AAAEP,gBAAAA,QAAAA,EAAAA;;;AAEvC,QAAA;YACE,OAAOA,QAAAA;AACX;AACF,CAAA;AAEMU,MAAAA,YAAAA,GAAe,CAAC,EACpBC,SAAS,EACTC,WAAW,EACXC,iBAAiB,EAKlB,GAAA;IACC,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,SAAYC,GAAAA,0BAAAA,EAAAA;AAElB,IAAA,OAAON,UAAUO,MAAM,GAAG,IACtBP,SAAUQ,CAAAA,GAAG,CAAC,CAACC,IAAAA,GAAAA;QACb,MAAMC,QAAAA,GAAWD,KAAKE,IAAI;QAC1B,MAAMC,gBAAAA,GAAmBH,IAAMI,EAAAA,WAAAA,iBAAcpB,cAACqB,CAAAA,eAAAA,EAAAA;YAAUC,IAAK,EAAA;AAAkBC,SAAAA,CAAAA,GAAAA,SAAAA;AAE/E,QAAA,MAAMC,mBACJR,GAAAA,IAAAA,CAAKS,kBAAkB,IAAIT,IAAKS,CAAAA,kBAAkB,GAAG,CAAA,GACjDT,IAAKS,CAAAA,kBAAkB,CAAC3B,QAAQ,EAChCyB,GAAAA,SAAAA;QAEN,MAAMG,UAAAA,GAAahB,aAAcM,CAAAA,IAAAA,CAAKW,SAAS,CAAA;QAC/C,MAAMC,UAAAA,GAAapB,WAAYqB,CAAAA,IAAI,CAAC,CAACC,aAAeA,UAAWnC,CAAAA,EAAE,KAAKqB,IAAAA,CAAKrB,EAAE,CAAA;AAE7E,QAAA,MAAMoC,WAAc,GAAA,kBAClBC,eAAC5C,CAAAA,eAAAA,CAAQ6C,SAAS,EAAA;AAChBtC,gBAAAA,EAAAA,EAAIqB,KAAKrB,EAAE;gBACXuC,OAAS,EAAA,IAAMzB,iBAAkBO,CAAAA,IAAAA,CAAKrB,EAAE,CAAA;gBACxCwC,YAAYT,EAAAA,UAAAA;;AAEZ,kCAAA1B,cAAA,CAACZ,gBAAQgD,IAAI,EAAA;wBAACC,KAAOX,EAAAA,UAAAA;AACnB,wBAAA,QAAA,gBAAA1B,cAACiB,CAAAA,QAAAA,EAAAA;4BAASqB,KAAM,EAAA,IAAA;4BAAKC,MAAO,EAAA,IAAA;4BAAKjB,IAAK,EAAA;;;AAEvCH,oBAAAA,gBAAAA,iBACCnB,cAACd,CAAAA,gBAAAA,EAAAA;wBACCmD,KAAM,EAAA,QAAA;wBACNG,SAAU,EAAA,YAAA;wBACVC,WAAa,EAAA,CAAA;wBACbC,YAAc,EAAA,CAAA;AAEbvB,wBAAAA,QAAAA,EAAAA;AAEDK,qBAAAA,CAAAA,GAAAA,mBAAAA,iBACFxB,cAACV,CAAAA,mBAAAA,EAAAA;wBACC+C,KAAOb,EAAAA,mBAAAA;wBACPmB,eAAgB,EAAA,YAAA;wBAChBL,KAAM,EAAA,QAAA;wBACNM,KAAM,EAAA,UAAA;AAELpB,wBAAAA,QAAAA,EAAAA;AAED,qBAAA,CAAA,GAAA;;;AAIR,QAAA,OAAOZ,SAAc,IAAA,CAACA,SAAagB,IAAAA,UAAAA,iBACjC5B,cAAC6C,CAAAA,iBAAAA,EAAAA;YAAKC,GAAI,EAAA,IAAA;AACR,YAAA,QAAA,gBAAA9C,cAACN,CAAAA,iBAAAA,EAAAA;AAAkBC,gBAAAA,EAAAA,EAAIqB,KAAKrB,EAAE;wCAC5BK,cAAA,CAACZ,gBAAQ2D,OAAO,EAAA;AAACC,oBAAAA,QAAAA,EAAUpC,YAAY,OAAU,GAAA,QAAA;oBAAUyB,KAAOX,EAAAA,UAAAA;AAChE,oBAAA,QAAA,gBAAA1B,cAAC+B,CAAAA,WAAAA,EAAAA,EAAAA;;;AAHaf,SAAAA,EAAAA,IAAAA,CAAKrB,EAAE,CAOzB,GAAA,IAAA;KAEN,CAAA,GAAA,IAAA;AACN;AAEA,MAAMsD,aAAAA,GAAgB9D,aAAO+D,CAAAA,gBAAAA,CAAI;;;;AAIjC,CAAC;AAED,MAAMC,yBAAyB,CAAC,EAC9B5C,SAAS,EACTE,iBAAiB,EAIlB,GAAA;IACC,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,OAAOJ,UAAUO,MAAM,GAAG,IACtBP,SAAUQ,CAAAA,GAAG,CAAC,CAACC,IAAAA,GAAAA;QACb,MAAMC,QAAAA,GAAWD,KAAKE,IAAI;QAC1B,MAAMC,gBAAAA,GAAmBH,IAAMI,EAAAA,WAAAA,iBAAcpB,cAACqB,CAAAA,eAAAA,EAAAA;YAAUC,IAAK,EAAA;AAAkBC,SAAAA,CAAAA,GAAAA,SAAAA;AAE/E,QAAA,MAAMC,mBACJR,GAAAA,IAAAA,CAAKS,kBAAkB,IAAIT,IAAKS,CAAAA,kBAAkB,GAAG,CAAA,GACjDT,IAAKS,CAAAA,kBAAkB,CAAC3B,QAAQ,EAChCyB,GAAAA,SAAAA;QAEN,MAAMG,UAAAA,GAAahB,aAAcM,CAAAA,IAAAA,CAAKW,SAAS,CAAA;AAC/C,QAAA,MAAMyB,gBAAmBpC,GAAAA,IAAAA,CAAKqC,cAAc,IAAIrC,KAAKrB,EAAE;AAEvD,QAAA,qBACEK,cAAC6C,CAAAA,iBAAAA,EAAAA;YAAKS,UAAW,EAAA,QAAA;YAASR,GAAI,EAAA,IAAA;oCAC5B9C,cAAA,CAACZ,gBAAQmE,IAAI,EAAA;gBACX5D,EAAIyD,EAAAA,gBAAAA;AACJlB,gBAAAA,OAAAA,EAAS,IAAMzB,iBAAkB2C,CAAAA,gBAAAA,CAAAA;gBACjCjB,YAAYT,EAAAA,UAAAA;AAEZ,gBAAA,QAAA,gBAAAM,eAACa,CAAAA,iBAAAA,EAAAA;oBAAKS,UAAW,EAAA,QAAA;oBAASE,GAAK,EAAA,CAAA;;sCAC7BxD,cAACiD,CAAAA,aAAAA,EAAAA;AACC,4BAAA,QAAA,gBAAAjD,cAACiB,CAAAA,QAAAA,EAAAA;gCAASqB,KAAM,EAAA,IAAA;gCAAKC,MAAO,EAAA,IAAA;gCAAKjB,IAAK,EAAA;;;sCAExCtB,cAACyD,CAAAA,uBAAAA,EAAAA;AAAY/B,4BAAAA,QAAAA,EAAAA;;AACZP,wBAAAA,gBAAAA,iBACCnB,cAACd,CAAAA,gBAAAA,EAAAA;4BACCmD,KAAM,EAAA,QAAA;4BACNG,SAAU,EAAA,YAAA;4BACVC,WAAa,EAAA,CAAA;4BACbC,YAAc,EAAA,CAAA;AAEbvB,4BAAAA,QAAAA,EAAAA;AAEDK,yBAAAA,CAAAA,GAAAA,mBAAAA,iBACFxB,cAACV,CAAAA,mBAAAA,EAAAA;4BACC+C,KAAOb,EAAAA,mBAAAA;4BACPmB,eAAgB,EAAA,YAAA;4BAChBL,KAAM,EAAA,QAAA;4BACNM,KAAM,EAAA,UAAA;AAELpB,4BAAAA,QAAAA,EAAAA;AAED,yBAAA,CAAA,GAAA;;;;AA7B8B4B,SAAAA,EAAAA,gBAAAA,CAAAA;KAmC5C,CAAA,GAAA,IAAA;AACN;;;;;"}
|
|
@@ -55,7 +55,7 @@ const MainNavIcons = ({ listLinks, mobileLinks, handleClickOnLink })=>{
|
|
|
55
55
|
const badgeContentNumeric = link.notificationsCount && link.notificationsCount > 0 ? link.notificationsCount.toString() : undefined;
|
|
56
56
|
const labelValue = formatMessage(link.intlLabel);
|
|
57
57
|
const linkMobile = mobileLinks.find((mobileLink)=>mobileLink.to === link.to);
|
|
58
|
-
const LinkElement = ()=>/*#__PURE__*/ jsxs(NavLink.
|
|
58
|
+
const LinkElement = ()=>/*#__PURE__*/ jsxs(NavLink.NavButton, {
|
|
59
59
|
to: link.to,
|
|
60
60
|
onClick: ()=>handleClickOnLink(link.to),
|
|
61
61
|
"aria-label": labelValue,
|
|
@@ -112,40 +112,41 @@ const MainNavBurgerMenuLinks = ({ listLinks, handleClickOnLink })=>{
|
|
|
112
112
|
const labelValue = formatMessage(link.intlLabel);
|
|
113
113
|
const navigationTarget = link.navigationLink || link.to;
|
|
114
114
|
return /*#__PURE__*/ jsx(Flex, {
|
|
115
|
-
paddingTop: 3,
|
|
116
115
|
alignItems: "center",
|
|
117
116
|
tag: "li",
|
|
118
|
-
children: /*#__PURE__*/
|
|
117
|
+
children: /*#__PURE__*/ jsx(NavLink.Link, {
|
|
119
118
|
to: navigationTarget,
|
|
120
119
|
onClick: ()=>handleClickOnLink(navigationTarget),
|
|
121
120
|
"aria-label": labelValue,
|
|
122
|
-
children:
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
121
|
+
children: /*#__PURE__*/ jsxs(Flex, {
|
|
122
|
+
alignItems: "center",
|
|
123
|
+
gap: 3,
|
|
124
|
+
children: [
|
|
125
|
+
/*#__PURE__*/ jsx(IconContainer, {
|
|
126
|
+
children: /*#__PURE__*/ jsx(LinkIcon, {
|
|
127
|
+
width: "20",
|
|
128
|
+
height: "20",
|
|
129
|
+
fill: "neutral500"
|
|
130
|
+
})
|
|
131
|
+
}),
|
|
132
|
+
/*#__PURE__*/ jsx(Typography, {
|
|
133
|
+
children: labelValue
|
|
134
|
+
}),
|
|
135
|
+
badgeContentLock ? /*#__PURE__*/ jsx(NavLinkBadgeLock, {
|
|
136
|
+
label: "locked",
|
|
137
|
+
textColor: "neutral500",
|
|
138
|
+
paddingLeft: 0,
|
|
139
|
+
paddingRight: 0,
|
|
140
|
+
children: badgeContentLock
|
|
141
|
+
}) : badgeContentNumeric ? /*#__PURE__*/ jsx(NavLinkBadgeCounter, {
|
|
142
|
+
label: badgeContentNumeric,
|
|
143
|
+
backgroundColor: "primary600",
|
|
144
|
+
width: "2.3rem",
|
|
145
|
+
color: "neutral0",
|
|
146
|
+
children: badgeContentNumeric
|
|
147
|
+
}) : null
|
|
148
|
+
]
|
|
149
|
+
})
|
|
149
150
|
})
|
|
150
151
|
}, navigationTarget);
|
|
151
152
|
}) : null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MainNavLinks.mjs","sources":["../../../../../../admin/src/components/MainNav/MainNavLinks.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { type To } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useIsDesktop } from '../../hooks/useMediaQuery';\nimport { MenuItem } from '../../hooks/useMenu';\nimport { tours } from '../GuidedTour/Tours';\n\nimport { NavLink } from './NavLink';\n\nconst NavLinkBadgeLock = styled(NavLink.Badge)`\n background-color: transparent;\n`;\n\nconst NavLinkBadgeCounter = styled(NavLink.Badge)`\n span {\n color: ${({ theme }) => theme.colors.neutral0};\n }\n`;\n\n/**\n * Will attach a guided tour tooltip to the right links. (mostly used for the finish step to indicate the next tour)\n * @param to: The target link\n * @param children: The original link to be wrapped in a guided tour tooltip\n * @returns The link wrapped in a guided tour tooltip or the original link if no guided tour needs to be attached\n */\nconst GuidedTourTooltip = ({ to, children }: { to: To; children: React.ReactNode }) => {\n const normalizedTo = to.toString().replace(/\\//g, '');\n\n switch (normalizedTo) {\n // We attach the final step of the content type builder tour on content manager link because it's the next tour (Content Type Builder -> Content Manager).\n case 'content-manager':\n return <tours.contentTypeBuilder.Finish>{children}</tours.contentTypeBuilder.Finish>;\n // We attach the final step of the api tokens tour on the home link because it was the last tour (API Tokens -> Go back to homepage).\n case '':\n return <tours.apiTokens.Finish>{children}</tours.apiTokens.Finish>;\n // We attach the final step of the content manager tour on the settings link because it's the next tour (Content Manager -> API tokens).\n case 'settings':\n return <tours.contentManager.Finish>{children}</tours.contentManager.Finish>;\n // If the link doesn't match any of the above, we return the original link.\n default:\n return children;\n }\n};\n\nconst MainNavIcons = ({\n listLinks,\n mobileLinks,\n handleClickOnLink,\n}: {\n listLinks: MenuItem[];\n mobileLinks: MenuItem[];\n handleClickOnLink: (value: string) => void;\n}) => {\n const { formatMessage } = useIntl();\n const isDesktop = useIsDesktop();\n\n return listLinks.length > 0\n ? listLinks.map((link) => {\n const LinkIcon = link.icon;\n const badgeContentLock = link?.licenseOnly ? <Lightning fill=\"primary600\" /> : undefined;\n\n const badgeContentNumeric =\n link.notificationsCount && link.notificationsCount > 0\n ? link.notificationsCount.toString()\n : undefined;\n\n const labelValue = formatMessage(link.intlLabel);\n const linkMobile = mobileLinks.find((mobileLink) => mobileLink.to === link.to);\n\n const LinkElement = () => (\n <NavLink.Link\n to={link.to}\n onClick={() => handleClickOnLink(link.to)}\n aria-label={labelValue}\n >\n <NavLink.Icon label={labelValue}>\n <LinkIcon width=\"20\" height=\"20\" fill=\"neutral500\" />\n </NavLink.Icon>\n {badgeContentLock ? (\n <NavLinkBadgeLock\n label=\"locked\"\n textColor=\"neutral500\"\n paddingLeft={0}\n paddingRight={0}\n >\n {badgeContentLock}\n </NavLinkBadgeLock>\n ) : badgeContentNumeric ? (\n <NavLinkBadgeCounter\n label={badgeContentNumeric}\n backgroundColor=\"primary600\"\n width=\"2.3rem\"\n color=\"neutral0\"\n >\n {badgeContentNumeric}\n </NavLinkBadgeCounter>\n ) : null}\n </NavLink.Link>\n );\n\n return isDesktop || (!isDesktop && linkMobile) ? (\n <Flex tag=\"li\" key={link.to}>\n <GuidedTourTooltip to={link.to}>\n <NavLink.Tooltip position={isDesktop ? 'right' : 'bottom'} label={labelValue}>\n <LinkElement />\n </NavLink.Tooltip>\n </GuidedTourTooltip>\n </Flex>\n ) : null;\n })\n : null;\n};\n\nconst IconContainer = styled(Box)`\n svg {\n display: block;\n }\n`;\n\nconst MainNavBurgerMenuLinks = ({\n listLinks,\n handleClickOnLink,\n}: {\n listLinks: MenuItem[];\n handleClickOnLink: (value: string) => void;\n}) => {\n const { formatMessage } = useIntl();\n\n return listLinks.length > 0\n ? listLinks.map((link) => {\n const LinkIcon = link.icon;\n const badgeContentLock = link?.licenseOnly ? <Lightning fill=\"primary600\" /> : undefined;\n\n const badgeContentNumeric =\n link.notificationsCount && link.notificationsCount > 0\n ? link.notificationsCount.toString()\n : undefined;\n\n const labelValue = formatMessage(link.intlLabel);\n const navigationTarget = link.navigationLink || link.to;\n\n return (\n <Flex paddingTop={3} alignItems=\"center\" tag=\"li\" key={navigationTarget}>\n <NavLink.Link\n to={navigationTarget}\n onClick={() => handleClickOnLink(navigationTarget)}\n aria-label={labelValue}\n >\n <IconContainer marginRight=\"0.6rem\">\n <LinkIcon width=\"20\" height=\"20\" fill=\"neutral500\" />\n </IconContainer>\n <Typography marginLeft={3}>{labelValue}</Typography>\n {badgeContentLock ? (\n <NavLinkBadgeLock\n label=\"locked\"\n textColor=\"neutral500\"\n paddingLeft={0}\n paddingRight={0}\n >\n {badgeContentLock}\n </NavLinkBadgeLock>\n ) : badgeContentNumeric ? (\n <NavLinkBadgeCounter\n label={badgeContentNumeric}\n backgroundColor=\"primary600\"\n width=\"2.3rem\"\n color=\"neutral0\"\n >\n {badgeContentNumeric}\n </NavLinkBadgeCounter>\n ) : null}\n </NavLink.Link>\n </Flex>\n );\n })\n : null;\n};\n\nexport { MainNavIcons, MainNavBurgerMenuLinks };\n"],"names":["NavLinkBadgeLock","styled","NavLink","Badge","NavLinkBadgeCounter","theme","colors","neutral0","GuidedTourTooltip","to","children","normalizedTo","toString","replace","_jsx","tours","contentTypeBuilder","Finish","apiTokens","contentManager","MainNavIcons","listLinks","mobileLinks","handleClickOnLink","formatMessage","useIntl","isDesktop","useIsDesktop","length","map","link","LinkIcon","icon","badgeContentLock","licenseOnly","Lightning","fill","undefined","badgeContentNumeric","notificationsCount","labelValue","intlLabel","linkMobile","find","mobileLink","LinkElement","_jsxs","Link","onClick","aria-label","Icon","label","width","height","textColor","paddingLeft","paddingRight","backgroundColor","color","Flex","tag","Tooltip","position","IconContainer","Box","MainNavBurgerMenuLinks","navigationTarget","navigationLink","paddingTop","alignItems","marginRight","Typography","marginLeft"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MainNavLinks.mjs","sources":["../../../../../../admin/src/components/MainNav/MainNavLinks.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { Lightning } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { type To } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useIsDesktop } from '../../hooks/useMediaQuery';\nimport { MenuItem } from '../../hooks/useMenu';\nimport { tours } from '../GuidedTour/Tours';\n\nimport { NavLink } from './NavLink';\n\nconst NavLinkBadgeLock = styled(NavLink.Badge)`\n background-color: transparent;\n`;\n\nconst NavLinkBadgeCounter = styled(NavLink.Badge)`\n span {\n color: ${({ theme }) => theme.colors.neutral0};\n }\n`;\n\n/**\n * Will attach a guided tour tooltip to the right links. (mostly used for the finish step to indicate the next tour)\n * @param to: The target link\n * @param children: The original link to be wrapped in a guided tour tooltip\n * @returns The link wrapped in a guided tour tooltip or the original link if no guided tour needs to be attached\n */\nconst GuidedTourTooltip = ({ to, children }: { to: To; children: React.ReactNode }) => {\n const normalizedTo = to.toString().replace(/\\//g, '');\n\n switch (normalizedTo) {\n // We attach the final step of the content type builder tour on content manager link because it's the next tour (Content Type Builder -> Content Manager).\n case 'content-manager':\n return <tours.contentTypeBuilder.Finish>{children}</tours.contentTypeBuilder.Finish>;\n // We attach the final step of the api tokens tour on the home link because it was the last tour (API Tokens -> Go back to homepage).\n case '':\n return <tours.apiTokens.Finish>{children}</tours.apiTokens.Finish>;\n // We attach the final step of the content manager tour on the settings link because it's the next tour (Content Manager -> API tokens).\n case 'settings':\n return <tours.contentManager.Finish>{children}</tours.contentManager.Finish>;\n // If the link doesn't match any of the above, we return the original link.\n default:\n return children;\n }\n};\n\nconst MainNavIcons = ({\n listLinks,\n mobileLinks,\n handleClickOnLink,\n}: {\n listLinks: MenuItem[];\n mobileLinks: MenuItem[];\n handleClickOnLink: (value: string) => void;\n}) => {\n const { formatMessage } = useIntl();\n const isDesktop = useIsDesktop();\n\n return listLinks.length > 0\n ? listLinks.map((link) => {\n const LinkIcon = link.icon;\n const badgeContentLock = link?.licenseOnly ? <Lightning fill=\"primary600\" /> : undefined;\n\n const badgeContentNumeric =\n link.notificationsCount && link.notificationsCount > 0\n ? link.notificationsCount.toString()\n : undefined;\n\n const labelValue = formatMessage(link.intlLabel);\n const linkMobile = mobileLinks.find((mobileLink) => mobileLink.to === link.to);\n\n const LinkElement = () => (\n <NavLink.NavButton\n to={link.to}\n onClick={() => handleClickOnLink(link.to)}\n aria-label={labelValue}\n >\n <NavLink.Icon label={labelValue}>\n <LinkIcon width=\"20\" height=\"20\" fill=\"neutral500\" />\n </NavLink.Icon>\n {badgeContentLock ? (\n <NavLinkBadgeLock\n label=\"locked\"\n textColor=\"neutral500\"\n paddingLeft={0}\n paddingRight={0}\n >\n {badgeContentLock}\n </NavLinkBadgeLock>\n ) : badgeContentNumeric ? (\n <NavLinkBadgeCounter\n label={badgeContentNumeric}\n backgroundColor=\"primary600\"\n width=\"2.3rem\"\n color=\"neutral0\"\n >\n {badgeContentNumeric}\n </NavLinkBadgeCounter>\n ) : null}\n </NavLink.NavButton>\n );\n\n return isDesktop || (!isDesktop && linkMobile) ? (\n <Flex tag=\"li\" key={link.to}>\n <GuidedTourTooltip to={link.to}>\n <NavLink.Tooltip position={isDesktop ? 'right' : 'bottom'} label={labelValue}>\n <LinkElement />\n </NavLink.Tooltip>\n </GuidedTourTooltip>\n </Flex>\n ) : null;\n })\n : null;\n};\n\nconst IconContainer = styled(Box)`\n svg {\n display: block;\n }\n`;\n\nconst MainNavBurgerMenuLinks = ({\n listLinks,\n handleClickOnLink,\n}: {\n listLinks: MenuItem[];\n handleClickOnLink: (value: string) => void;\n}) => {\n const { formatMessage } = useIntl();\n\n return listLinks.length > 0\n ? listLinks.map((link) => {\n const LinkIcon = link.icon;\n const badgeContentLock = link?.licenseOnly ? <Lightning fill=\"primary600\" /> : undefined;\n\n const badgeContentNumeric =\n link.notificationsCount && link.notificationsCount > 0\n ? link.notificationsCount.toString()\n : undefined;\n\n const labelValue = formatMessage(link.intlLabel);\n const navigationTarget = link.navigationLink || link.to;\n\n return (\n <Flex alignItems=\"center\" tag=\"li\" key={navigationTarget}>\n <NavLink.Link\n to={navigationTarget}\n onClick={() => handleClickOnLink(navigationTarget)}\n aria-label={labelValue}\n >\n <Flex alignItems=\"center\" gap={3}>\n <IconContainer>\n <LinkIcon width=\"20\" height=\"20\" fill=\"neutral500\" />\n </IconContainer>\n <Typography>{labelValue}</Typography>\n {badgeContentLock ? (\n <NavLinkBadgeLock\n label=\"locked\"\n textColor=\"neutral500\"\n paddingLeft={0}\n paddingRight={0}\n >\n {badgeContentLock}\n </NavLinkBadgeLock>\n ) : badgeContentNumeric ? (\n <NavLinkBadgeCounter\n label={badgeContentNumeric}\n backgroundColor=\"primary600\"\n width=\"2.3rem\"\n color=\"neutral0\"\n >\n {badgeContentNumeric}\n </NavLinkBadgeCounter>\n ) : null}\n </Flex>\n </NavLink.Link>\n </Flex>\n );\n })\n : null;\n};\n\nexport { MainNavIcons, MainNavBurgerMenuLinks };\n"],"names":["NavLinkBadgeLock","styled","NavLink","Badge","NavLinkBadgeCounter","theme","colors","neutral0","GuidedTourTooltip","to","children","normalizedTo","toString","replace","_jsx","tours","contentTypeBuilder","Finish","apiTokens","contentManager","MainNavIcons","listLinks","mobileLinks","handleClickOnLink","formatMessage","useIntl","isDesktop","useIsDesktop","length","map","link","LinkIcon","icon","badgeContentLock","licenseOnly","Lightning","fill","undefined","badgeContentNumeric","notificationsCount","labelValue","intlLabel","linkMobile","find","mobileLink","LinkElement","_jsxs","NavButton","onClick","aria-label","Icon","label","width","height","textColor","paddingLeft","paddingRight","backgroundColor","color","Flex","tag","Tooltip","position","IconContainer","Box","MainNavBurgerMenuLinks","navigationTarget","navigationLink","alignItems","Link","gap","Typography"],"mappings":"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"}
|
|
@@ -18,40 +18,47 @@ const BrandIconWrapper = styled.styled(designSystem.Flex)`
|
|
|
18
18
|
const NavBrand = ()=>{
|
|
19
19
|
const { formatMessage } = reactIntl.useIntl();
|
|
20
20
|
const { logos: { menu } } = Configuration.useConfiguration('LeftMenu');
|
|
21
|
-
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.
|
|
21
|
+
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
22
|
+
alignItems: "center",
|
|
22
23
|
padding: 3,
|
|
23
|
-
children: /*#__PURE__*/ jsxRuntime.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
children:
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
children: [
|
|
40
|
-
/*#__PURE__*/ jsxRuntime.jsx("span", {
|
|
41
|
-
children: formatMessage({
|
|
42
|
-
id: 'app.components.LeftMenu.navbrand.title',
|
|
43
|
-
defaultMessage: 'Strapi Dashboard'
|
|
44
|
-
})
|
|
24
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
25
|
+
padding: {
|
|
26
|
+
initial: 1,
|
|
27
|
+
medium: 0
|
|
28
|
+
},
|
|
29
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(BrandIconWrapper, {
|
|
30
|
+
direction: "column",
|
|
31
|
+
justifyContent: "center",
|
|
32
|
+
width: "3.2rem",
|
|
33
|
+
height: "3.2rem",
|
|
34
|
+
children: [
|
|
35
|
+
/*#__PURE__*/ jsxRuntime.jsx("img", {
|
|
36
|
+
src: menu.custom?.url || menu.default,
|
|
37
|
+
alt: formatMessage({
|
|
38
|
+
id: 'app.components.LeftMenu.logo.alt',
|
|
39
|
+
defaultMessage: 'Application logo'
|
|
45
40
|
}),
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
41
|
+
width: "100%",
|
|
42
|
+
height: "100%"
|
|
43
|
+
}),
|
|
44
|
+
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.VisuallyHidden, {
|
|
45
|
+
children: [
|
|
46
|
+
/*#__PURE__*/ jsxRuntime.jsx("span", {
|
|
47
|
+
children: formatMessage({
|
|
48
|
+
id: 'app.components.LeftMenu.navbrand.title',
|
|
49
|
+
defaultMessage: 'Strapi Dashboard'
|
|
50
|
+
})
|
|
51
|
+
}),
|
|
52
|
+
/*#__PURE__*/ jsxRuntime.jsx("span", {
|
|
53
|
+
children: formatMessage({
|
|
54
|
+
id: 'app.components.LeftMenu.navbrand.workplace',
|
|
55
|
+
defaultMessage: 'Workplace'
|
|
56
|
+
})
|
|
50
57
|
})
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
58
|
+
]
|
|
59
|
+
})
|
|
60
|
+
]
|
|
61
|
+
})
|
|
55
62
|
})
|
|
56
63
|
});
|
|
57
64
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavBrand.js","sources":["../../../../../../admin/src/components/MainNav/NavBrand.tsx"],"sourcesContent":["import { Box, Flex, type FlexComponent, VisuallyHidden } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useConfiguration } from '../../features/Configuration';\n\nconst BrandIconWrapper = styled<FlexComponent>(Flex)`\n svg,\n img {\n border-radius: ${({ theme }) => theme.borderRadius};\n object-fit: contain;\n height: 2.4rem;\n width: 2.4rem;\n }\n`;\n\nexport const NavBrand = () => {\n const { formatMessage } = useIntl();\n const {\n logos: { menu },\n } = useConfiguration('LeftMenu');\n return (\n <
|
|
1
|
+
{"version":3,"file":"NavBrand.js","sources":["../../../../../../admin/src/components/MainNav/NavBrand.tsx"],"sourcesContent":["import { Box, Flex, type FlexComponent, VisuallyHidden } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useConfiguration } from '../../features/Configuration';\n\nconst BrandIconWrapper = styled<FlexComponent>(Flex)`\n svg,\n img {\n border-radius: ${({ theme }) => theme.borderRadius};\n object-fit: contain;\n height: 2.4rem;\n width: 2.4rem;\n }\n`;\n\nexport const NavBrand = () => {\n const { formatMessage } = useIntl();\n const {\n logos: { menu },\n } = useConfiguration('LeftMenu');\n return (\n <Flex alignItems=\"center\" padding={3}>\n <Box padding={{ initial: 1, medium: 0 }}>\n <BrandIconWrapper direction=\"column\" justifyContent=\"center\" width=\"3.2rem\" height=\"3.2rem\">\n <img\n src={menu.custom?.url || menu.default}\n alt={formatMessage({\n id: 'app.components.LeftMenu.logo.alt',\n defaultMessage: 'Application logo',\n })}\n width=\"100%\"\n height=\"100%\"\n />\n <VisuallyHidden>\n <span>\n {formatMessage({\n id: 'app.components.LeftMenu.navbrand.title',\n defaultMessage: 'Strapi Dashboard',\n })}\n </span>\n <span>\n {formatMessage({\n id: 'app.components.LeftMenu.navbrand.workplace',\n defaultMessage: 'Workplace',\n })}\n </span>\n </VisuallyHidden>\n </BrandIconWrapper>\n </Box>\n </Flex>\n );\n};\n"],"names":["BrandIconWrapper","styled","Flex","theme","borderRadius","NavBrand","formatMessage","useIntl","logos","menu","useConfiguration","_jsx","alignItems","padding","Box","initial","medium","_jsxs","direction","justifyContent","width","height","img","src","custom","url","default","alt","id","defaultMessage","VisuallyHidden","span"],"mappings":";;;;;;;;AAMA,MAAMA,gBAAAA,GAAmBC,aAAsBC,CAAAA,iBAAAA,CAAK;;;AAGjC,mBAAA,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,YAAY,CAAC;;;;;AAKvD,CAAC;MAEYC,QAAW,GAAA,IAAA;IACtB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,EACJC,KAAO,EAAA,EAAEC,IAAI,EAAE,EAChB,GAAGC,8BAAiB,CAAA,UAAA,CAAA;AACrB,IAAA,qBACEC,cAACT,CAAAA,iBAAAA,EAAAA;QAAKU,UAAW,EAAA,QAAA;QAASC,OAAS,EAAA,CAAA;AACjC,QAAA,QAAA,gBAAAF,cAACG,CAAAA,gBAAAA,EAAAA;YAAID,OAAS,EAAA;gBAAEE,OAAS,EAAA,CAAA;gBAAGC,MAAQ,EAAA;AAAE,aAAA;AACpC,YAAA,QAAA,gBAAAC,eAACjB,CAAAA,gBAAAA,EAAAA;gBAAiBkB,SAAU,EAAA,QAAA;gBAASC,cAAe,EAAA,QAAA;gBAASC,KAAM,EAAA,QAAA;gBAASC,MAAO,EAAA,QAAA;;kCACjFV,cAACW,CAAAA,KAAAA,EAAAA;AACCC,wBAAAA,GAAAA,EAAKd,IAAKe,CAAAA,MAAM,EAAEC,GAAAA,IAAOhB,KAAKiB,OAAO;AACrCC,wBAAAA,GAAAA,EAAKrB,aAAc,CAAA;4BACjBsB,EAAI,EAAA,kCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;wBACAT,KAAM,EAAA,MAAA;wBACNC,MAAO,EAAA;;kCAETJ,eAACa,CAAAA,2BAAAA,EAAAA;;0CACCnB,cAACoB,CAAAA,MAAAA,EAAAA;0CACEzB,aAAc,CAAA;oCACbsB,EAAI,EAAA,wCAAA;oCACJC,cAAgB,EAAA;AAClB,iCAAA;;0CAEFlB,cAACoB,CAAAA,MAAAA,EAAAA;0CACEzB,aAAc,CAAA;oCACbsB,EAAI,EAAA,4CAAA;oCACJC,cAAgB,EAAA;AAClB,iCAAA;;;;;;;;AAOd;;;;"}
|