Skip to content

Commit 73aff77

Browse files
wrn14897ernestii
andauthored
feat: Improve source editing UX (#944)
Restored #805 which should be merged it into main Co-authored-by: Ernest Iliiasov <[email protected]>
1 parent 993627f commit 73aff77

File tree

5 files changed

+55
-34
lines changed

5 files changed

+55
-34
lines changed

.changeset/lovely-seals-build.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@hyperdx/app": patch
3+
---
4+
5+
feat: Improve source editing UX

packages/app/src/DBSearchPage.tsx

Lines changed: 42 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
useState,
99
} from 'react';
1010
import dynamic from 'next/dynamic';
11+
import Link from 'next/link';
1112
import router from 'next/router';
1213
import {
1314
parseAsBoolean,
@@ -42,6 +43,7 @@ import {
4243
Flex,
4344
Grid,
4445
Group,
46+
Menu,
4547
Modal,
4648
Paper,
4749
Stack,
@@ -767,7 +769,7 @@ function DBSearchPage() {
767769
[setRowId, setIsLive],
768770
);
769771

770-
const [modelFormExpanded, setModelFormExpanded] = useState(false);
772+
const [modelFormExpanded, setModelFormExpanded] = useState(false); // Used in local mode
771773
const [saveSearchModalState, setSaveSearchModalState] = useState<
772774
'create' | 'update' | undefined
773775
>(undefined);
@@ -1087,17 +1089,45 @@ function DBSearchPage() {
10871089
name="source"
10881090
onCreate={openNewSourceModal}
10891091
/>
1090-
<ActionIcon
1091-
variant="subtle"
1092-
color="dark.2"
1093-
size="sm"
1094-
onClick={() => setModelFormExpanded(v => !v)}
1095-
title="Edit Source"
1096-
>
1097-
<Text size="xs">
1098-
<i className="bi bi-gear" />
1099-
</Text>
1100-
</ActionIcon>
1092+
<Menu withArrow position="bottom-start">
1093+
<Menu.Target>
1094+
<ActionIcon
1095+
variant="subtle"
1096+
color="dark.2"
1097+
size="sm"
1098+
title="Edit Source"
1099+
>
1100+
<Text size="xs">
1101+
<i className="bi bi-gear" />
1102+
</Text>
1103+
</ActionIcon>
1104+
</Menu.Target>
1105+
<Menu.Dropdown>
1106+
<Menu.Label>Sources</Menu.Label>
1107+
<Menu.Item
1108+
leftSection={<i className="bi bi-plus-circle" />}
1109+
onClick={() => setNewSourceModalOpened(true)}
1110+
>
1111+
Create New Source
1112+
</Menu.Item>
1113+
{IS_LOCAL_MODE ? (
1114+
<Menu.Item
1115+
leftSection={<i className="bi bi-gear" />}
1116+
onClick={() => setModelFormExpanded(v => !v)}
1117+
>
1118+
Edit Source
1119+
</Menu.Item>
1120+
) : (
1121+
<Menu.Item
1122+
leftSection={<i className="bi bi-gear" />}
1123+
component={Link}
1124+
href="/team"
1125+
>
1126+
Edit Sources
1127+
</Menu.Item>
1128+
)}
1129+
</Menu.Dropdown>
1130+
</Menu>
11011131
</Group>
11021132
<Box style={{ minWidth: 100, flexGrow: 1 }}>
11031133
<SQLInlineEditorControlled

packages/app/src/TeamPage.tsx

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,25 @@
11
import { Fragment, useCallback, useMemo, useState } from 'react';
22
import Head from 'next/head';
33
import { HTTPError } from 'ky';
4-
import {
5-
Button as BSButton,
6-
Form,
7-
Modal as BSModal,
8-
Spinner,
9-
} from 'react-bootstrap';
4+
import { Button as BSButton, Modal as BSModal } from 'react-bootstrap';
105
import { CopyToClipboard } from 'react-copy-to-clipboard';
116
import { SubmitHandler, useForm } from 'react-hook-form';
127
import { json, jsonParseLinter } from '@codemirror/lang-json';
138
import { linter } from '@codemirror/lint';
14-
import { EditorView, ViewUpdate } from '@codemirror/view';
9+
import { EditorView } from '@codemirror/view';
1510
import { SourceKind, WebhookService } from '@hyperdx/common-utils/dist/types';
1611
import {
1712
Alert,
1813
Badge,
1914
Box,
2015
Button,
2116
Card,
17+
Center,
2218
Container,
2319
Divider,
2420
Flex,
2521
Group,
22+
Loader,
2623
Modal as MModal,
2724
Radio,
2825
Stack,
@@ -46,8 +43,6 @@ import { useSources } from './source';
4643
import { useConfirm } from './useConfirm';
4744
import { capitalizeFirstLetter } from './utils';
4845

49-
import styles from '../styles/TeamPage.module.scss';
50-
5146
const DEFAULT_GENERIC_WEBHOOK_BODY = ['{{title}}', '{{body}}', '{{link}}'];
5247
const DEFAULT_GENERIC_WEBHOOK_BODY_TEMPLATE =
5348
DEFAULT_GENERIC_WEBHOOK_BODY.join(' | ');
@@ -1223,9 +1218,9 @@ export default function TeamPage() {
12231218
<div>
12241219
<Container>
12251220
{isLoading && (
1226-
<Spinner animation="border" role="status">
1227-
<span className="visually-hidden">Loading...</span>
1228-
</Spinner>
1221+
<Center mt="xl">
1222+
<Loader color="dimmed" />
1223+
</Center>
12291224
)}
12301225
{!isLoading && team != null && (
12311226
<Stack my={20} gap="xl">

packages/app/src/components/ConfirmDeleteMenu.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ export default function ConfirmDeleteMenu({
66
onDelete: () => void;
77
}) {
88
return (
9-
<Menu>
9+
<Menu withArrow>
1010
<Menu.Target>
1111
<Button variant="outline" color="gray.4" size="xs">
1212
Delete

packages/app/styles/TeamPage.module.scss

Lines changed: 0 additions & 9 deletions
This file was deleted.

0 commit comments

Comments
 (0)