Website transfer.

This commit is contained in:
Mike Cao 2024-02-09 19:37:45 -08:00
parent b6a900c5a4
commit d99fb09c37
9 changed files with 249 additions and 16 deletions

View file

@ -5,7 +5,7 @@ import { useMessages } from 'components/hooks';
import Empty from 'components/common/Empty';
import Pager from 'components/common/Pager';
import styles from './DataTable.module.css';
import { FilterQueryResult } from 'components/hooks';
import { FilterQueryResult } from 'lib/types';
const DEFAULT_SEARCH_DELAY = 600;
@ -64,7 +64,7 @@ export function DataTable({
className={classNames(styles.body, { [styles.status]: isLoading || noResults || !hasData })}
>
{hasData ? (typeof children === 'function' ? children(result) : children) : null}
{isLoading && <Loading icon="dots" />}
{isLoading && <Loading position="page" />}
{!isLoading && !hasData && !query && <Empty />}
{noResults && <Empty message={formatMessage(messages.noResultsFound)} />}
</div>

View file

@ -1,14 +1,7 @@
import { UseQueryOptions } from '@tanstack/react-query';
import { useState, Dispatch, SetStateAction } from 'react';
import { useState } from 'react';
import { useApi } from './useApi';
import { FilterResult, SearchFilter } from 'lib/types';
export interface FilterQueryResult<T> {
result: FilterResult<T>;
query: any;
params: SearchFilter;
setParams: Dispatch<SetStateAction<T | SearchFilter>>;
}
import { FilterResult, SearchFilter, FilterQueryResult } from 'lib/types';
export function useFilterQuery<T = any>({
queryKey,

View file

@ -17,5 +17,4 @@
.selected {
font-weight: 700;
background: var(--base75);
}

View file

@ -53,6 +53,7 @@ export const labels = defineMessages({
websiteId: { id: 'label.website-id', defaultMessage: 'Website ID' },
resetWebsite: { id: 'label.reset-website', defaultMessage: 'Reset website' },
deleteWebsite: { id: 'label.delete-website', defaultMessage: 'Delete website' },
transferWebsite: { id: 'label.transfer-website', defaultMessage: 'Transfer website' },
deleteReport: { id: 'label.delete-report', defaultMessage: 'Delete report' },
reset: { id: 'label.reset', defaultMessage: 'Reset' },
addWebsite: { id: 'label.add-website', defaultMessage: 'Add website' },
@ -207,7 +208,7 @@ export const labels = defineMessages({
},
select: { id: 'label.select', defaultMessage: 'Select' },
myAccount: { id: 'label.my-account', defaultMessage: 'My account' },
switch: { id: 'label.switch', defaultMessage: 'Switch' },
transfer: { id: 'label.transfer', defaultMessage: 'Transfer' },
});
export const messages = defineMessages({
@ -327,4 +328,16 @@ export const messages = defineMessages({
id: 'message.new-version-available',
defaultMessage: 'A new version of Umami {version} is available!',
},
transferWebsite: {
id: 'message.transfer-website',
defaultMessage: 'Transfer website ownership to another user or team.',
},
transferTeamWebsiteToUser: {
id: 'message.transfer-team-website-to-user',
defaultMessage: 'Do you want to transfer this website to your account?',
},
transferUserWebsiteToTeam: {
id: 'message.transfer-user-website-to-team',
defaultMessage: 'Which team do you want to transfer this website to?',
},
});