umami/src/app/(main)/reports/[reportId]/FieldSelectForm.tsx

36 lines
1,003 B
TypeScript
Raw Normal View History

2023-07-02 05:02:49 +00:00
import { Menu, Item, Form, FormRow } from 'react-basics';
import { useMessages } from 'components/hooks';
2023-07-02 05:02:49 +00:00
import styles from './FieldSelectForm.module.css';
2023-12-03 11:07:03 +00:00
import { Key } from 'react';
2023-07-02 05:02:49 +00:00
2023-12-03 11:07:03 +00:00
export interface FieldSelectFormProps {
fields?: any[];
onSelect?: (key: any) => void;
showType?: boolean;
}
export default function FieldSelectForm({
fields = [],
onSelect,
showType = true,
}: FieldSelectFormProps) {
2023-07-02 05:02:49 +00:00
const { formatMessage, labels } = useMessages();
return (
<Form>
<FormRow label={formatMessage(labels.fields)}>
2023-12-03 11:07:03 +00:00
<Menu className={styles.menu} onSelect={key => onSelect(fields[key as any])}>
{fields.map(({ name, label, type }: any, index: Key) => {
2023-07-02 05:02:49 +00:00
return (
<Item key={index} className={styles.item}>
2023-07-18 16:09:22 +00:00
<div>{label || name}</div>
2023-08-10 16:31:25 +00:00
{showType && type && <div className={styles.type}>{type}</div>}
2023-07-02 05:02:49 +00:00
</Item>
);
})}
</Menu>
</FormRow>
</Form>
);
}