Skip to content

Commit d7141e6

Browse files
authored
Merge pull request #2815 from umami-software/dev
v2.12.1
2 parents d265845 + 05e4555 commit d7141e6

26 files changed

+52
-9
lines changed

next.config.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ const config = {
168168
destination: '/api/scripts/telemetry',
169169
},
170170
{
171-
source: '/teams/:teamId/:path*',
171+
source: '/teams/:teamId/:path((?!settings).*)*',
172172
destination: '/:path*',
173173
},
174174
];

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "umami",
3-
"version": "2.12.0",
3+
"version": "2.12.1",
44
"description": "A simple, fast, privacy-focused alternative to Google Analytics.",
55
"author": "Umami Software, Inc. <[email protected]>",
66
"license": "MIT",

src/app/(main)/reports/journey/JourneyView.module.css

+1-1
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@
121121
}
122122

123123
.name {
124-
font-weight: 500;
124+
max-width: 200px;
125125
}
126126

127127
.count {

src/app/(main)/reports/journey/JourneyView.tsx

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { useContext, useMemo, useState } from 'react';
2-
import { TooltipPopup } from 'react-basics';
2+
import { TextOverflow, TooltipPopup } from 'react-basics';
33
import { firstBy } from 'thenby';
44
import classNames from 'classnames';
55
import { useEscapeKey, useMessages } from 'components/hooks';
@@ -191,7 +191,9 @@ export default function JourneyView() {
191191
})}
192192
onClick={() => handleClick(name, columnIndex, paths)}
193193
>
194-
<div className={styles.name}>{name}</div>
194+
<div className={styles.name} title={name}>
195+
<TextOverflow> {name}</TextOverflow>
196+
</div>
195197
<TooltipPopup label={dropOffPercent} disabled={!selected}>
196198
<div className={styles.count} title={nodeCount}>
197199
{formatLongNumber(nodeCount)}

src/app/(main)/teams/[teamId]/layout.tsx

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
import TeamProvider from './TeamProvider';
22
import { Metadata } from 'next';
3+
import TeamSettingsLayout from './settings/TeamSettingsLayout';
34

45
export default function ({ children, params: { teamId } }) {
5-
return <TeamProvider teamId={teamId}>{children}</TeamProvider>;
6+
return (
7+
<TeamProvider teamId={teamId}>
8+
<TeamSettingsLayout>{children}</TeamSettingsLayout>
9+
</TeamProvider>
10+
);
611
}
712

813
export const metadata: Metadata = {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
'use client';
2+
import { ReactNode } from 'react';
3+
import { useMessages, useTeamUrl } from 'components/hooks';
4+
import MenuLayout from 'components/layout/MenuLayout';
5+
6+
export default function TeamSettingsLayout({ children }: { children: ReactNode }) {
7+
const { formatMessage, labels } = useMessages();
8+
const { teamId } = useTeamUrl();
9+
10+
const items = [
11+
{
12+
key: 'team',
13+
label: formatMessage(labels.team),
14+
url: `/teams/${teamId}/settings/team`,
15+
},
16+
{
17+
key: 'websites',
18+
label: formatMessage(labels.websites),
19+
url: `/teams/${teamId}/settings/websites`,
20+
},
21+
{
22+
key: 'members',
23+
label: formatMessage(labels.members),
24+
url: `/teams/${teamId}/settings/members`,
25+
},
26+
].filter(n => n);
27+
28+
return <MenuLayout items={items}>{children}</MenuLayout>;
29+
}

src/app/(main)/settings/teams/[teamId]/team/TeamDetails.tsx src/app/(main)/teams/[teamId]/settings/team/TeamDetails.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import PageHeader from 'components/layout/PageHeader';
55
import { ROLES } from 'lib/constants';
66
import { useContext, useState } from 'react';
77
import { Flexbox, Item, Tabs } from 'react-basics';
8-
import TeamLeaveButton from '../../TeamLeaveButton';
8+
import TeamLeaveButton from 'app/(main)/settings/teams/TeamLeaveButton';
99
import TeamManage from './TeamManage';
1010
import TeamEditForm from './TeamEditForm';
1111

src/app/(main)/settings/teams/[teamId]/team/TeamEditForm.tsx src/app/(main)/teams/[teamId]/settings/team/TeamEditForm.tsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
} from 'react-basics';
1212
import { getRandomChars } from 'next-basics';
1313
import { useContext, useRef, useState } from 'react';
14-
import { useApi, useMessages } from 'components/hooks';
14+
import { useApi, useMessages, useModified } from 'components/hooks';
1515
import { TeamContext } from 'app/(main)/teams/[teamId]/TeamProvider';
1616

1717
const generateId = () => getRandomChars(16);
@@ -26,12 +26,14 @@ export function TeamEditForm({ teamId, allowEdit }: { teamId: string; allowEdit?
2626
const ref = useRef(null);
2727
const [accessCode, setAccessCode] = useState(team.accessCode);
2828
const { showToast } = useToasts();
29+
const { touch } = useModified();
2930
const cloudMode = !!process.env.cloudMode;
3031

3132
const handleSubmit = async (data: any) => {
3233
mutate(data, {
3334
onSuccess: async () => {
3435
ref.current.reset(data);
36+
touch('teams');
3537
showToast({ message: formatMessage(messages.saved), variant: 'success' });
3638
},
3739
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import Page from 'app/(main)/settings/websites/[websiteId]/page';
2+
3+
export default function ({ params }) {
4+
return <Page params={params} />;
5+
}

src/components/metrics/MetricCard.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ export const MetricCard = ({
3737
return (
3838
<div className={classNames(styles.card, className, showPrevious && styles.compare)}>
3939
{showLabel && <div className={styles.label}>{label}</div>}
40-
<animated.div className={styles.value} title={value.toString()}>
40+
<animated.div className={styles.value} title={value?.toString()}>
4141
{props?.x?.to(x => formatValue(x))}
4242
</animated.div>
4343
{showChange && (

0 commit comments

Comments
 (0)