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,