diff --git a/packages/core/admin/admin/src/components/LeftMenu/index.js b/packages/core/admin/admin/src/components/LeftMenu/index.js index 23b936b3b8e..752f3a6a5d7 100644 --- a/packages/core/admin/admin/src/components/LeftMenu/index.js +++ b/packages/core/admin/admin/src/components/LeftMenu/index.js @@ -2,7 +2,7 @@ import React, { useRef, useState } from 'react'; import styled from 'styled-components'; import PropTypes from 'prop-types'; import { useIntl } from 'react-intl'; -import { NavLink as RouterNavLink } from 'react-router-dom'; +import { NavLink as RouterNavLink, useLocation } from 'react-router-dom'; import { Divider } from '@strapi/design-system/Divider'; import { MainNav, @@ -19,7 +19,7 @@ import { Typography } from '@strapi/design-system/Typography'; import { Stack } from '@strapi/design-system/Stack'; import Write from '@strapi/icons/Write'; import Exit from '@strapi/icons/Exit'; -import { auth, usePersistentState, useAppInfos } from '@strapi/helper-plugin'; +import { auth, usePersistentState, useAppInfos, useTracking } from '@strapi/helper-plugin'; import useConfigurations from '../../hooks/useConfigurations'; const LinkUserWrapper = styled(Box)` @@ -59,6 +59,8 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }) => { const [condensed, setCondensed] = usePersistentState('navbar-condensed', false); const { userDisplayName } = useAppInfos(); const { formatMessage } = useIntl(); + const { trackUsage } = useTracking(); + const { pathname } = useLocation(); const initials = userDisplayName .split(' ') @@ -82,6 +84,10 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }) => { } }; + const handleClickOnLink = (destination = null) => { + trackUsage('willNavigate', { from: pathname, to: destination }); + }; + const menuTitle = formatMessage({ id: 'app.components.LeftMenu.navbrand.title', defaultMessage: 'Strapi Dashboard', @@ -110,7 +116,12 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }) => { - }> + } + onClick={() => handleClickOnLink('/content-manager')} + > {formatMessage({ id: 'global.content-manager', defaultMessage: 'Content manager' })} @@ -125,7 +136,13 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }) => { const Icon = link.icon; return ( - }> + } + onClick={() => handleClickOnLink(link.to)} + > {formatMessage(link.intlLabel)} ); @@ -152,6 +169,7 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }) => { to={link.to} key={link.to} icon={} + onClick={() => handleClickOnLink(link.to)} > {formatMessage(link.intlLabel)} diff --git a/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/FormApiTokenContainer/index.js b/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/FormApiTokenContainer/index.js index 794f935ec65..9d9f64f6dbc 100644 --- a/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/FormApiTokenContainer/index.js +++ b/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/FormApiTokenContainer/index.js @@ -229,14 +229,14 @@ FormApiTokenContainer.propTypes = { values: PropTypes.shape({ name: PropTypes.string, description: PropTypes.string, - lifespan: PropTypes.string, + lifespan: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), type: PropTypes.string, }).isRequired, isCreating: PropTypes.bool.isRequired, apiToken: PropTypes.shape({ id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), type: PropTypes.string, - lifespan: PropTypes.number, + lifespan: PropTypes.string, name: PropTypes.string, accessKey: PropTypes.string, permissions: PropTypes.array, diff --git a/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/FormBody/index.js b/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/FormBody/index.js index 4bacc001e62..ff2b70d174a 100644 --- a/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/FormBody/index.js +++ b/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/FormBody/index.js @@ -50,7 +50,7 @@ FormBody.propTypes = { apiToken: PropTypes.shape({ id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), type: PropTypes.string, - lifespan: PropTypes.number, + lifespan: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), name: PropTypes.string, accessKey: PropTypes.string, permissions: PropTypes.array, diff --git a/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/FormHead/index.js b/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/FormHead/index.js index d9f3fc0e813..1d898ba13e7 100644 --- a/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/FormHead/index.js +++ b/packages/core/admin/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/FormHead/index.js @@ -69,7 +69,7 @@ FormHead.propTypes = { apiToken: PropTypes.shape({ id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), type: PropTypes.string, - lifespan: PropTypes.number, + lifespan: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), name: PropTypes.string, accessKey: PropTypes.string, permissions: PropTypes.array,