Lint fixes.

This commit is contained in:
Mike Cao 2025-03-08 08:40:41 -08:00
parent c948bbca12
commit e1e6493dec
17 changed files with 41 additions and 71 deletions

View file

@ -77,7 +77,7 @@
"@react-spring/web": "^9.7.5", "@react-spring/web": "^9.7.5",
"@tanstack/react-query": "^5.66.11", "@tanstack/react-query": "^5.66.11",
"@umami/prisma-client": "^0.14.0", "@umami/prisma-client": "^0.14.0",
"@umami/react-zen": "link:C:/Users/mike/AppData/Local/pnpm/global/5/node_modules/@umami/react-zen", "@umami/react-zen": "link:../../../Library/pnpm/global/5/node_modules/@umami/react-zen",
"@umami/redis-client": "^0.26.0", "@umami/redis-client": "^0.26.0",
"bcryptjs": "^2.4.3", "bcryptjs": "^2.4.3",
"chalk": "^4.1.2", "chalk": "^4.1.2",
@ -120,7 +120,6 @@
"react-simple-maps": "^2.3.0", "react-simple-maps": "^2.3.0",
"react-use-measure": "^2.1.7", "react-use-measure": "^2.1.7",
"react-window": "^1.8.11", "react-window": "^1.8.11",
"react-zen": "link:C:/Users/mike/AppData/Local/pnpm/global/5/node_modules/@umami/react-zen",
"request-ip": "^3.3.0", "request-ip": "^3.3.0",
"semver": "^7.7.1", "semver": "^7.7.1",
"serialize-error": "^12.0.0", "serialize-error": "^12.0.0",
@ -197,7 +196,7 @@
"sharp" "sharp"
], ],
"overrides": { "overrides": {
"react-zen": "link:C:/Users/mike/AppData/Local/pnpm/global/5/node_modules/@umami/react-zen" "@umami/react-zen": "link:../../../Library/pnpm/global/5/node_modules/@umami/react-zen"
} }
} }
} }

9
pnpm-lock.yaml generated
View file

@ -5,7 +5,7 @@ settings:
excludeLinksFromLockfile: false excludeLinksFromLockfile: false
overrides: overrides:
react-zen: link:C:/Users/mike/AppData/Local/pnpm/global/5/node_modules/@umami/react-zen '@umami/react-zen': link:../../../Library/pnpm/global/5/node_modules/@umami/react-zen
importers: importers:
@ -48,8 +48,8 @@ importers:
specifier: ^0.14.0 specifier: ^0.14.0
version: 0.14.0(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@prisma/extension-read-replicas@0.4.0(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))) version: 0.14.0(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@prisma/extension-read-replicas@0.4.0(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2)))
'@umami/react-zen': '@umami/react-zen':
specifier: link:C:/Users/mike/AppData/Local/pnpm/global/5/node_modules/@umami/react-zen specifier: link:../../../Library/pnpm/global/5/node_modules/@umami/react-zen
version: link:C:/Users/mike/AppData/Local/pnpm/global/5/node_modules/@umami/react-zen version: link:../../../Library/pnpm/global/5/node_modules/@umami/react-zen
'@umami/redis-client': '@umami/redis-client':
specifier: ^0.26.0 specifier: ^0.26.0
version: 0.26.0 version: 0.26.0
@ -176,9 +176,6 @@ importers:
react-window: react-window:
specifier: ^1.8.11 specifier: ^1.8.11
version: 1.8.11(react-dom@19.0.0(react@19.0.0))(react@19.0.0) version: 1.8.11(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
react-zen:
specifier: link:C:/Users/mike/AppData/Local/pnpm/global/5/node_modules/@umami/react-zen
version: link:C:/Users/mike/AppData/Local/pnpm/global/5/node_modules/@umami/react-zen
request-ip: request-ip:
specifier: ^3.3.0 specifier: ^3.3.0
version: 3.3.0 version: 3.3.0

View file

@ -4,7 +4,6 @@ import { useContext } from 'react';
import { Button, Row, Label, Icon, Popover, MenuTrigger } from '@umami/react-zen'; import { Button, Row, Label, Icon, Popover, MenuTrigger } from '@umami/react-zen';
import { FieldSelectForm } from '../[reportId]/FieldSelectForm'; import { FieldSelectForm } from '../[reportId]/FieldSelectForm';
import { ParameterList } from '../[reportId]/ParameterList'; import { ParameterList } from '../[reportId]/ParameterList';
import { PopupForm } from '../[reportId]/PopupForm';
import { ReportContext } from './Report'; import { ReportContext } from './Report';
export function FieldParameters() { export function FieldParameters() {

View file

@ -1,7 +1,7 @@
import { useContext } from 'react'; import { useContext } from 'react';
import { useMessages, useFormat, useFilters, useFields } from '@/components/hooks'; import { useMessages, useFormat, useFilters, useFields } from '@/components/hooks';
import { Icons } from '@/components/icons'; import { Icons } from '@/components/icons';
import { Button, Text, Row, Label, Icon, Popover, MenuTrigger } from '@umami/react-zen'; import { Button, Row, Label, Icon, Popover, MenuTrigger } from '@umami/react-zen';
import { FilterSelectForm } from '../[reportId]/FilterSelectForm'; import { FilterSelectForm } from '../[reportId]/FilterSelectForm';
import { ParameterList } from '../[reportId]/ParameterList'; import { ParameterList } from '../[reportId]/ParameterList';
import { PopupForm } from '../[reportId]/PopupForm'; import { PopupForm } from '../[reportId]/PopupForm';

View file

@ -71,14 +71,6 @@ export function GoalsAddForm({
} }
}; };
const renderTypeValue = (value: any) => {
return items.find(item => item.value === value)?.label;
};
const renderoperatorValue = (value: any) => {
return operators.find(item => item.value === value)?.label;
};
return ( return (
<Column gap="3"> <Column gap="3">
<Label>{formatMessage(defaultValue ? labels.update : labels.add)}</Label> <Label>{formatMessage(defaultValue ? labels.update : labels.add)}</Label>
@ -87,7 +79,6 @@ export function GoalsAddForm({
className={styles.dropdown} className={styles.dropdown}
items={items} items={items}
value={type} value={type}
renderValue={renderTypeValue}
onChange={(value: any) => setType(value)} onChange={(value: any) => setType(value)}
> >
{({ value, label }: any) => { {({ value, label }: any) => {

View file

@ -22,10 +22,6 @@ export function RetentionParameters() {
} }
}; };
const handleDateChange = value => {
updateReport({ parameters: { dateRange: { ...parseDateRange(value) } } });
};
return ( return (
<Form values={parameters} onSubmit={handleSubmit} preventSubmit={true}> <Form values={parameters} onSubmit={handleSubmit} preventSubmit={true}>
<BaseParameters showDateSelect={false} allowWebsiteSelect={!id} /> <BaseParameters showDateSelect={false} allowWebsiteSelect={!id} />

View file

@ -11,7 +11,6 @@ import {
} from '@umami/react-zen'; } from '@umami/react-zen';
import { useApi, useMessages } from '@/components/hooks'; import { useApi, useMessages } from '@/components/hooks';
import { ROLES } from '@/lib/constants'; import { ROLES } from '@/lib/constants';
import { messages } from '@/components/messages';
export function UserAddForm({ onSave, onClose }) { export function UserAddForm({ onSave, onClose }) {
const { post, useMutation } = useApi(); const { post, useMutation } = useApi();
@ -51,9 +50,15 @@ export function UserAddForm({ onSave, onClose }) {
rules={{ required: formatMessage(labels.required) }} rules={{ required: formatMessage(labels.required) }}
> >
<Select> <Select>
<ListItem id={ROLES.viewOnly} data-test="dropdown-item-viewOnly">{formatMessage(labels.viewOnly)}</ListItem> <ListItem id={ROLES.viewOnly} data-test="dropdown-item-viewOnly">
<ListItem id={ROLES.user} data-test="dropdown-item-user">{formatMessage(labels.user)}</ListItem> {formatMessage(labels.viewOnly)}
<ListItem id={ROLES.admin} data-test="dropdown-item-admin">{formatMessage(labels.admin)}</ListItem> </ListItem>
<ListItem id={ROLES.user} data-test="dropdown-item-user">
{formatMessage(labels.user)}
</ListItem>
<ListItem id={ROLES.admin} data-test="dropdown-item-admin">
{formatMessage(labels.admin)}
</ListItem>
</Select> </Select>
</FormField> </FormField>
<FormButtons> <FormButtons>

View file

@ -3,8 +3,7 @@ import Link from 'next/link';
import { formatDistance } from 'date-fns'; import { formatDistance } from 'date-fns';
import { ROLES } from '@/lib/constants'; import { ROLES } from '@/lib/constants';
import { useMessages, useLocale } from '@/components/hooks'; import { useMessages, useLocale } from '@/components/hooks';
import UserDeleteButton from './UserDeleteButton'; import { UserDeleteButton } from './UserDeleteButton';
import LinkButton from '@/components/common/LinkButton';
export function UsersTable({ export function UsersTable({
data = [], data = [],

View file

@ -66,14 +66,22 @@ export function UserEditForm({ userId, onSave }: { userId: string; onSave?: () =
rules={{ required: formatMessage(labels.required) }} rules={{ required: formatMessage(labels.required) }}
> >
<Select defaultSelectedKey={user.role}> <Select defaultSelectedKey={user.role}>
<ListItem id={ROLES.viewOnly} data-test="dropdown-item-viewOnly">{formatMessage(labels.viewOnly)}</ListItem> <ListItem id={ROLES.viewOnly} data-test="dropdown-item-viewOnly">
<ListItem id={ROLES.user} data-test="dropdown-item-user">{formatMessage(labels.user)}</ListItem> {formatMessage(labels.viewOnly)}
<ListItem id={ROLES.admin} data-test="dropdown-item-admin">{formatMessage(labels.admin)}</ListItem> </ListItem>
<ListItem id={ROLES.user} data-test="dropdown-item-user">
{formatMessage(labels.user)}
</ListItem>
<ListItem id={ROLES.admin} data-test="dropdown-item-admin">
{formatMessage(labels.admin)}
</ListItem>
</Select> </Select>
</FormField> </FormField>
)} )}
<FormButtons> <FormButtons>
<FormSubmitButton data-test="button-submit" variant="primary">{formatMessage(labels.save)}</FormSubmitButton> <FormSubmitButton data-test="button-submit" variant="primary">
{formatMessage(labels.save)}
</FormSubmitButton>
</FormButtons> </FormButtons>
</Form> </Form>
); );

View file

@ -37,7 +37,6 @@ export function ShareUrl({ hostUrl, onSave }: { hostUrl?: string; onSave?: () =>
}; };
const handleSwitch = (checked: boolean) => { const handleSwitch = (checked: boolean) => {
console.log({ checked });
const data = { const data = {
name: website.name, name: website.name,
domain: website.domain, domain: website.domain,

View file

@ -1,4 +1,4 @@
import { Select, Icon, Icons, ListItem, Text, Grid, Column } from '@umami/react-zen'; import { Icon, Icons, Text, Grid, Column } from '@umami/react-zen';
import { LinkButton } from '@/components/common/LinkButton'; import { LinkButton } from '@/components/common/LinkButton';
import { useMessages, useNavigation } from '@/components/hooks'; import { useMessages, useNavigation } from '@/components/hooks';
import { MenuNav } from '@/components/layout/MenuNav'; import { MenuNav } from '@/components/layout/MenuNav';
@ -17,7 +17,6 @@ import { RegionsTable } from '@/components/metrics/RegionsTable';
import { ScreenTable } from '@/components/metrics/ScreenTable'; import { ScreenTable } from '@/components/metrics/ScreenTable';
import { TagsTable } from '@/components/metrics/TagsTable'; import { TagsTable } from '@/components/metrics/TagsTable';
import { ChannelsTable } from '@/components/metrics/ChannelsTable'; import { ChannelsTable } from '@/components/metrics/ChannelsTable';
import Link from 'next/link';
const views = { const views = {
url: PagesTable, url: PagesTable,
@ -50,7 +49,6 @@ export function WebsiteExpandedView({
}) { }) {
const { formatMessage, labels } = useMessages(); const { formatMessage, labels } = useMessages();
const { const {
router,
renderUrl, renderUrl,
query: { view }, query: { view },
} = useNavigation(); } = useNavigation();

View file

@ -1,5 +1,4 @@
import { Button, Icon, Icons, Box, MenuTrigger, Popover, Text } from '@umami/react-zen'; import { Button, Icon, Icons, Box, MenuTrigger, Popover, Text } from '@umami/react-zen';
import { PopupForm } from '@/app/(main)/reports/[reportId]/PopupForm';
import { FilterSelectForm } from '@/app/(main)/reports/[reportId]/FilterSelectForm'; import { FilterSelectForm } from '@/app/(main)/reports/[reportId]/FilterSelectForm';
import { useFields, useMessages, useNavigation, useDateRange } from '@/components/hooks'; import { useFields, useMessages, useNavigation, useDateRange } from '@/components/hooks';
import { OPERATOR_PREFIXES } from '@/lib/constants'; import { OPERATOR_PREFIXES } from '@/lib/constants';

View file

@ -1,5 +1,5 @@
import { Key } from 'react'; import { Key } from 'react';
import { Row, Button, Flexbox } from '@umami/react-zen'; import { Text, Row, Button, Flexbox } from '@umami/react-zen';
export interface FilterButtonsProps { export interface FilterButtonsProps {
items: any[]; items: any[];
@ -12,7 +12,9 @@ export function FilterButtons({ items, selectedKey, onSelect }: FilterButtonsPro
<Flexbox justifyContent="center"> <Flexbox justifyContent="center">
<Row> <Row>
{items.map(({ key, label }) => ( {items.map(({ key, label }) => (
<Button key={key}>{label}</Button> <Button key={key} onPress={() => onSelect(key)}>
<Text weight={key === selectedKey ? 'bold' : undefined}>{label}</Text>
</Button>
))} ))}
</Row> </Row>
</Flexbox> </Flexbox>

View file

@ -1,20 +1,10 @@
import { useState, Key } from 'react'; import { useState, Key } from 'react';
import { import { Icon, Modal, Select, Text, Row, ListItem, ListSeparator, Dialog } from '@umami/react-zen';
Icon,
Modal,
Select,
Text,
Block,
Row,
ListItem,
ListSeparator,
Dialog,
} from '@umami/react-zen';
import { endOfYear, isSameDay } from 'date-fns'; import { endOfYear, isSameDay } from 'date-fns';
import { DatePickerForm } from '@/components/metrics/DatePickerForm'; import { DatePickerForm } from '@/components/metrics/DatePickerForm';
import { useLocale, useMessages } from '@/components/hooks'; import { useLocale, useMessages } from '@/components/hooks';
import { Icons } from '@/components/icons'; import { Icons } from '@/components/icons';
import { formatDate, parseDateValue } from '@/lib/date'; import { formatDate } from '@/lib/date';
import styles from './DateFilter.module.css'; import styles from './DateFilter.module.css';
import classNames from 'classnames'; import classNames from 'classnames';
@ -41,7 +31,6 @@ export function DateFilter({
}: DateFilterProps) { }: DateFilterProps) {
const { formatMessage, labels } = useMessages(); const { formatMessage, labels } = useMessages();
const [showPicker, setShowPicker] = useState(false); const [showPicker, setShowPicker] = useState(false);
const { locale } = useLocale();
const options = [ const options = [
{ label: formatMessage(labels.today), value: '0day' }, { label: formatMessage(labels.today), value: '0day' },
@ -108,6 +97,7 @@ export function DateFilter({
onChange(value.toString()); onChange(value.toString());
}; };
/*
const handleClose = () => setShowPicker(false); const handleClose = () => setShowPicker(false);
const renderValue = (value: string) => { const renderValue = (value: string) => {
@ -133,9 +123,7 @@ export function DateFilter({
} }
return options.find(e => e.value === value)?.label; return options.find(e => e.value === value)?.label;
}; };*/
console.log({ showPicker });
return ( return (
<> <>

View file

@ -1,4 +1,4 @@
import { useDateRange, useLocale } from '@/components/hooks'; import { useDateRange } from '@/components/hooks';
import { isAfter } from 'date-fns'; import { isAfter } from 'date-fns';
import { getOffsetDateRange } from '@/lib/date'; import { getOffsetDateRange } from '@/lib/date';
import { Button, Icon, Icons } from '@umami/react-zen'; import { Button, Icon, Icons } from '@umami/react-zen';
@ -13,7 +13,6 @@ export function WebsiteDateFilter({
websiteId: string; websiteId: string;
showAllTime?: boolean; showAllTime?: boolean;
}) { }) {
const { dir } = useLocale();
const { dateRange, saveDateRange } = useDateRange(websiteId); const { dateRange, saveDateRange } = useDateRange(websiteId);
const { value, startDate, endDate, offset } = dateRange; const { value, startDate, endDate, offset } = dateRange;
const disableForward = const disableForward =

View file

@ -1,7 +1,6 @@
import { useState, Key } from 'react'; import { useState, Key } from 'react';
import { Select, ListItem } from '@umami/react-zen'; import { Select, ListItem } from '@umami/react-zen';
import { useWebsite, useWebsites, useMessages } from '@/components/hooks'; import { useWebsites, useMessages } from '@/components/hooks';
import { Empty } from '@/components/common/Empty';
export function WebsiteSelect({ export function WebsiteSelect({
websiteId, websiteId,
@ -12,18 +11,12 @@ export function WebsiteSelect({
teamId?: string; teamId?: string;
onSelect?: (key: any) => void; onSelect?: (key: any) => void;
}) { }) {
const { formatMessage, labels, messages } = useMessages(); const { formatMessage, labels } = useMessages();
const [search, setSearch] = useState(''); const [search, setSearch] = useState('');
const [selectedId, setSelectedId] = useState<Key>(websiteId); const [selectedId, setSelectedId] = useState<Key>(websiteId);
const { data: website } = useWebsite(selectedId as string);
const queryResult = useWebsites({ teamId }, { search, pageSize: 5 }); const queryResult = useWebsites({ teamId }, { search, pageSize: 5 });
const renderEmpty = () => {
return <Empty message={formatMessage(messages.noResultsFound)} />;
};
const handleSelect = (value: any) => { const handleSelect = (value: any) => {
setSelectedId(value); setSelectedId(value);
onSelect?.(value); onSelect?.(value);

View file

@ -19,7 +19,7 @@ export function DatePickerForm({
); );
const [singleDate, setSingleDate] = useState(defaultStartDate || new Date()); const [singleDate, setSingleDate] = useState(defaultStartDate || new Date());
const [startDate, setStartDate] = useState(defaultStartDate || new Date()); const [startDate, setStartDate] = useState(defaultStartDate || new Date());
const [endDate, setEndDate] = useState(defaultEndDate || new Date()); const [endDate] = useState(defaultEndDate || new Date());
const { formatMessage, labels } = useMessages(); const { formatMessage, labels } = useMessages();
const disabled = const disabled =
@ -35,8 +35,6 @@ export function DatePickerForm({
} }
}; };
console.log({ minDate, maxDate, singleDate, startDate, endDate, disabled });
return ( return (
<div className={styles.container}> <div className={styles.container}>
<div className={styles.filter}> <div className={styles.filter}>