mirror of
https://github.com/stashapp/stash.git
synced 2025-12-18 04:44:37 +03:00
Blueprint removed
This commit is contained in:
@@ -1,50 +1,64 @@
|
||||
import {
|
||||
Card,
|
||||
Tab,
|
||||
Tabs,
|
||||
} from "@blueprintjs/core";
|
||||
import React from "react";
|
||||
import queryString from "query-string";
|
||||
import React, { FunctionComponent, useEffect, useState } from "react";
|
||||
import { IBaseProps } from "../../models";
|
||||
import { Card, Tab, Nav, Row, Col } from 'react-bootstrap';
|
||||
import { useHistory, useLocation } from 'react-router-dom';
|
||||
import { SettingsAboutPanel } from "./SettingsAboutPanel";
|
||||
import { SettingsConfigurationPanel } from "./SettingsConfigurationPanel";
|
||||
import { SettingsInterfacePanel } from "./SettingsInterfacePanel";
|
||||
import { SettingsLogsPanel } from "./SettingsLogsPanel";
|
||||
import { SettingsTasksPanel } from "./SettingsTasksPanel/SettingsTasksPanel";
|
||||
|
||||
interface IProps extends IBaseProps {}
|
||||
export const Settings: React.FC = () => {
|
||||
const location = useLocation();
|
||||
const history = useHistory();
|
||||
const defaultTab = queryString.parse(location.search).tab ?? 'configuration';
|
||||
|
||||
type TabId = "configuration" | "tasks" | "logs" | "about";
|
||||
|
||||
export const Settings: FunctionComponent<IProps> = (props: IProps) => {
|
||||
const [tabId, setTabId] = useState<TabId>(getTabId());
|
||||
|
||||
useEffect(() => {
|
||||
const location = Object.assign({}, props.history.location);
|
||||
location.search = queryString.stringify({tab: tabId}, {encode: false});
|
||||
props.history.replace(location);
|
||||
}, [tabId]);
|
||||
|
||||
function getTabId(): TabId {
|
||||
const queryParams = queryString.parse(props.location.search);
|
||||
if (!queryParams.tab || typeof queryParams.tab !== "string") { return "tasks"; }
|
||||
return queryParams.tab as TabId;
|
||||
}
|
||||
const onSelect = ((val:string) => history.push(`?tab=${val}`));
|
||||
|
||||
return (
|
||||
<Card id="details-container">
|
||||
<Tabs
|
||||
renderActiveTabPanelOnly={true}
|
||||
vertical={true}
|
||||
onChange={(newId) => setTabId(newId as TabId)}
|
||||
defaultSelectedTabId={getTabId()}
|
||||
>
|
||||
<Tab id="configuration" title="Configuration" panel={<SettingsConfigurationPanel />} />
|
||||
<Tab id="interface" title="Interface Configuration" panel={<SettingsInterfacePanel />} />
|
||||
<Tab id="tasks" title="Tasks" panel={<SettingsTasksPanel />} />
|
||||
<Tab id="logs" title="Logs" panel={<SettingsLogsPanel />} />
|
||||
<Tab id="about" title="About" panel={<SettingsAboutPanel />} />
|
||||
</Tabs>
|
||||
<Tab.Container defaultActiveKey={defaultTab} id="configuration-tabs" onSelect={onSelect}>
|
||||
<Row>
|
||||
<Col sm={2}>
|
||||
<Nav variant="pills" className="flex-column">
|
||||
<Nav.Item>
|
||||
<Nav.Link eventKey="configuration">Configuration</Nav.Link>
|
||||
</Nav.Item>
|
||||
<Nav.Item>
|
||||
<Nav.Link eventKey="interface">Interface</Nav.Link>
|
||||
</Nav.Item>
|
||||
<Nav.Item>
|
||||
<Nav.Link eventKey="tasks">Tasks</Nav.Link>
|
||||
</Nav.Item>
|
||||
<Nav.Item>
|
||||
<Nav.Link eventKey="logs">Logs</Nav.Link>
|
||||
</Nav.Item>
|
||||
<Nav.Item>
|
||||
<Nav.Link eventKey="about">About</Nav.Link>
|
||||
</Nav.Item>
|
||||
</Nav>
|
||||
</Col>
|
||||
<Col sm={10}>
|
||||
<Tab.Content>
|
||||
<Tab.Pane eventKey="configuration">
|
||||
<SettingsConfigurationPanel />
|
||||
</Tab.Pane>
|
||||
<Tab.Pane eventKey="interface">
|
||||
<SettingsInterfacePanel />
|
||||
</Tab.Pane>
|
||||
<Tab.Pane eventKey="tasks">
|
||||
<SettingsTasksPanel />
|
||||
</Tab.Pane>
|
||||
<Tab.Pane eventKey="logs">
|
||||
<SettingsLogsPanel />
|
||||
</Tab.Pane>
|
||||
<Tab.Pane eventKey="about">
|
||||
<SettingsAboutPanel />
|
||||
</Tab.Pane>
|
||||
</Tab.Content>
|
||||
</Col>
|
||||
</Row>
|
||||
</Tab.Container>
|
||||
</Card>
|
||||
);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user