mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-12-29 22:16:15 -06:00
[frontend] Settings navigation design (#1652)
* change header image alignment (cherry picked from commit df1bb339a5c597a2b668cedb3dafec5a390df120) * big mess navigation refactor * bit of cleanup * minor css tweaks * fix error rendering code for remote emoji * refactor navigation structure code * refactor styling * fix className * stash * restructure navigation generation * url wildcard formatting * remove un-implemented User menu entry * remove commented lines * clarify permissions check * invert permissions logic for clarity
This commit is contained in:
parent
6cf6613540
commit
0746ef741a
20 changed files with 627 additions and 312 deletions
|
|
@ -28,6 +28,7 @@ const { useComboBoxInput, useFileInput, useValue } = require("../../../lib/form"
|
|||
const { CategorySelect } = require("../category-select");
|
||||
|
||||
const useFormSubmit = require("../../../lib/form/submit");
|
||||
const { useBaseUrl } = require("../../../lib/navigation/util");
|
||||
|
||||
const FakeToot = require("../../../components/fake-toot");
|
||||
const FormWithData = require("../../../lib/form/form-with-data");
|
||||
|
|
@ -36,16 +37,15 @@ const { FileInput } = require("../../../components/form/inputs");
|
|||
const MutationButton = require("../../../components/form/mutation-button");
|
||||
const { Error } = require("../../../components/error");
|
||||
|
||||
const base = "/settings/custom-emoji/local";
|
||||
|
||||
module.exports = function EmojiDetailRoute() {
|
||||
let [_match, params] = useRoute(`${base}/:emojiId`);
|
||||
module.exports = function EmojiDetailRoute({ }) {
|
||||
const baseUrl = useBaseUrl();
|
||||
let [_match, params] = useRoute(`${baseUrl}/:emojiId`);
|
||||
if (params?.emojiId == undefined) {
|
||||
return <Redirect to={base} />;
|
||||
return <Redirect to={baseUrl} />;
|
||||
} else {
|
||||
return (
|
||||
<div className="emoji-detail">
|
||||
<Link to={base}><a>< go back</a></Link>
|
||||
<Link to={baseUrl}><a>< go back</a></Link>
|
||||
<FormWithData dataQuery={query.useGetEmojiQuery} queryArg={params.emojiId} DataForm={EmojiDetailForm} />
|
||||
</div>
|
||||
);
|
||||
|
|
@ -53,6 +53,7 @@ module.exports = function EmojiDetailRoute() {
|
|||
};
|
||||
|
||||
function EmojiDetailForm({ data: emoji }) {
|
||||
const baseUrl = useBaseUrl();
|
||||
const form = {
|
||||
id: useValue("id", emoji.id),
|
||||
category: useComboBoxInput("category", { source: emoji }),
|
||||
|
|
@ -78,7 +79,7 @@ function EmojiDetailForm({ data: emoji }) {
|
|||
const [deleteEmoji, deleteResult] = query.useDeleteEmojiMutation();
|
||||
|
||||
if (deleteResult.isSuccess) {
|
||||
return <Redirect to={base} />;
|
||||
return <Redirect to={baseUrl} />;
|
||||
}
|
||||
|
||||
return (
|
||||
|
|
|
|||
|
|
@ -25,15 +25,13 @@ const { Switch, Route } = require("wouter");
|
|||
const EmojiOverview = require("./overview");
|
||||
const EmojiDetail = require("./detail");
|
||||
|
||||
const base = "/settings/custom-emoji/local";
|
||||
|
||||
module.exports = function CustomEmoji() {
|
||||
module.exports = function CustomEmoji({ baseUrl }) {
|
||||
return (
|
||||
<Switch>
|
||||
<Route path={`${base}/:emojiId`}>
|
||||
<EmojiDetail baseUrl={base} />
|
||||
<Route path={`${baseUrl}/:emojiId`}>
|
||||
<EmojiDetail />
|
||||
</Route>
|
||||
<EmojiOverview baseUrl={base} />
|
||||
<EmojiOverview />
|
||||
</Switch>
|
||||
);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -29,12 +29,13 @@ const { useTextInput } = require("../../../lib/form");
|
|||
|
||||
const query = require("../../../lib/query");
|
||||
const { useEmojiByCategory } = require("../category-select");
|
||||
const { useBaseUrl } = require("../../../lib/navigation/util");
|
||||
|
||||
const Loading = require("../../../components/loading");
|
||||
const { Error } = require("../../../components/error");
|
||||
const { TextInput } = require("../../../components/form/inputs");
|
||||
|
||||
module.exports = function EmojiOverview({ baseUrl }) {
|
||||
module.exports = function EmojiOverview({ }) {
|
||||
const {
|
||||
data: emoji = [],
|
||||
isLoading,
|
||||
|
|
@ -51,7 +52,7 @@ module.exports = function EmojiOverview({ baseUrl }) {
|
|||
} else {
|
||||
content = (
|
||||
<>
|
||||
<EmojiList emoji={emoji} baseUrl={baseUrl} />
|
||||
<EmojiList emoji={emoji} />
|
||||
<NewEmojiForm emoji={emoji} />
|
||||
</>
|
||||
);
|
||||
|
|
@ -70,7 +71,7 @@ module.exports = function EmojiOverview({ baseUrl }) {
|
|||
);
|
||||
};
|
||||
|
||||
function EmojiList({ emoji, baseUrl }) {
|
||||
function EmojiList({ emoji }) {
|
||||
const filterField = useTextInput("filter");
|
||||
const filter = filterField.value;
|
||||
|
||||
|
|
@ -116,7 +117,7 @@ function EmojiList({ emoji, baseUrl }) {
|
|||
? (
|
||||
<div className="entries scrolling">
|
||||
{filteredEmoji.map(([category, entries]) => {
|
||||
return <EmojiCategory key={category} category={category} entries={entries} baseUrl={baseUrl} />;
|
||||
return <EmojiCategory key={category} category={category} entries={entries} />;
|
||||
})}
|
||||
</div>
|
||||
)
|
||||
|
|
@ -128,7 +129,8 @@ function EmojiList({ emoji, baseUrl }) {
|
|||
);
|
||||
}
|
||||
|
||||
function EmojiCategory({ category, entries, baseUrl }) {
|
||||
function EmojiCategory({ category, entries }) {
|
||||
const baseUrl = useBaseUrl();
|
||||
return (
|
||||
<div className="entry">
|
||||
<b>{category}</b>
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ const ParseFromToot = require("./parse-from-toot");
|
|||
|
||||
const query = require("../../../lib/query");
|
||||
const Loading = require("../../../components/loading");
|
||||
const { Error } = require("../../../components/error");
|
||||
|
||||
module.exports = function RemoteEmoji() {
|
||||
// local emoji are queried for shortcode collision detection
|
||||
|
|
@ -42,7 +43,7 @@ module.exports = function RemoteEmoji() {
|
|||
<>
|
||||
<h1>Custom Emoji (remote)</h1>
|
||||
{error &&
|
||||
<div className="error accent">{error}</div>
|
||||
<Error error={error} />
|
||||
}
|
||||
{isLoading
|
||||
? <Loading />
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ module.exports = function ImportExportForm({ form, submitParse, parseResult }) {
|
|||
showError={false}
|
||||
/>
|
||||
<label className="button with-icon">
|
||||
<i class="fa fa-fw " aria-hidden="true" />
|
||||
<i className="fa fa-fw " aria-hidden="true" />
|
||||
Import file
|
||||
<input
|
||||
type="file"
|
||||
|
|
|
|||
|
|
@ -33,9 +33,7 @@ const useFormSubmit = require("../../../lib/form/submit");
|
|||
const ProcessImport = require("./process");
|
||||
const ImportExportForm = require("./form");
|
||||
|
||||
const baseUrl = "/settings/admin/federation/import-export";
|
||||
|
||||
module.exports = function ImportExport() {
|
||||
module.exports = function ImportExport({ baseUrl }) {
|
||||
const form = {
|
||||
domains: useTextInput("domains"),
|
||||
exportType: useTextInput("exportType", { defaultValue: "plain", dontReset: true })
|
||||
|
|
|
|||
|
|
@ -22,13 +22,11 @@
|
|||
const React = require("react");
|
||||
const { Switch, Route } = require("wouter");
|
||||
|
||||
const baseUrl = `/settings/admin/federation`;
|
||||
|
||||
const InstanceOverview = require("./overview");
|
||||
const InstanceDetail = require("./detail");
|
||||
const InstanceImportExport = require("./import-export");
|
||||
|
||||
module.exports = function Federation({ }) {
|
||||
module.exports = function Federation({ baseUrl }) {
|
||||
return (
|
||||
<Switch>
|
||||
<Route path={`${baseUrl}/import-export/:list?`}>
|
||||
|
|
|
|||
|
|
@ -34,8 +34,10 @@ const { TextArea } = require("../../components/form/inputs");
|
|||
|
||||
const MutationButton = require("../../components/form/mutation-button");
|
||||
const Username = require("./username");
|
||||
const { useBaseUrl } = require("../../lib/navigation/util");
|
||||
|
||||
module.exports = function ReportDetail({ baseUrl }) {
|
||||
module.exports = function ReportDetail({ }) {
|
||||
const baseUrl = useBaseUrl();
|
||||
let [_match, params] = useRoute(`${baseUrl}/:reportId`);
|
||||
if (params?.reportId == undefined) {
|
||||
return <Redirect to={baseUrl} />;
|
||||
|
|
|
|||
|
|
@ -28,23 +28,22 @@ const FormWithData = require("../../lib/form/form-with-data");
|
|||
|
||||
const ReportDetail = require("./detail");
|
||||
const Username = require("./username");
|
||||
const { useBaseUrl } = require("../../lib/navigation/util");
|
||||
|
||||
const baseUrl = "/settings/admin/reports";
|
||||
|
||||
module.exports = function Reports() {
|
||||
module.exports = function Reports({ baseUrl }) {
|
||||
return (
|
||||
<div className="reports">
|
||||
<Switch>
|
||||
<Route path={`${baseUrl}/:reportId`}>
|
||||
<ReportDetail baseUrl={baseUrl} />
|
||||
<ReportDetail />
|
||||
</Route>
|
||||
<ReportOverview baseUrl={baseUrl} />
|
||||
<ReportOverview />
|
||||
</Switch>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
function ReportOverview({ _baseUrl }) {
|
||||
function ReportOverview({ }) {
|
||||
return (
|
||||
<>
|
||||
<h1>Reports</h1>
|
||||
|
|
@ -79,6 +78,7 @@ function ReportsList({ data: reports }) {
|
|||
}
|
||||
|
||||
function ReportEntry({ report }) {
|
||||
const baseUrl = useBaseUrl();
|
||||
const from = report.account;
|
||||
const target = report.target_account;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue