website
parent
5b0dc3d0b9
commit
d0649776ed
|
@ -188,6 +188,16 @@
|
||||||
"title": "Sie haben noch keine Website erstellt",
|
"title": "Sie haben noch keine Website erstellt",
|
||||||
"subTitle": "Jetzt loslegen und Ihre Website erstellen.",
|
"subTitle": "Jetzt loslegen und Ihre Website erstellen.",
|
||||||
"button": "Website erstellen"
|
"button": "Website erstellen"
|
||||||
|
},
|
||||||
|
"tabs": {
|
||||||
|
"general": "Allgemein",
|
||||||
|
"banner": "Banner",
|
||||||
|
"colorPalette": "Farbpalette",
|
||||||
|
"portfolio": "Portfolio",
|
||||||
|
"ratings": "Bewertungen",
|
||||||
|
"footer": "Fußzeile",
|
||||||
|
"imprint": "Impressum",
|
||||||
|
"dataPrivacy": "Datenschutz"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -191,6 +191,16 @@
|
||||||
"title": "You have not yet created a website",
|
"title": "You have not yet created a website",
|
||||||
"subTitle": "Get started now and create your website.",
|
"subTitle": "Get started now and create your website.",
|
||||||
"button": "Create website"
|
"button": "Create website"
|
||||||
|
},
|
||||||
|
"tabs": {
|
||||||
|
"general": "General",
|
||||||
|
"banner": "Banner",
|
||||||
|
"colorPalette": "Color palette",
|
||||||
|
"portfolio": "Portfolio",
|
||||||
|
"ratings": "Ratings",
|
||||||
|
"footer": "Footer",
|
||||||
|
"imprint": "Imprint",
|
||||||
|
"dataPrivacy": "Data privacy"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,13 +2,26 @@ import { Spin } from "antd";
|
||||||
import { Suspense } from "react";
|
import { Suspense } from "react";
|
||||||
import MyCenteredContainer from "../MyContainer";
|
import MyCenteredContainer from "../MyContainer";
|
||||||
|
|
||||||
export function MySupsenseFallback({ children }) {
|
export function MySupsenseFallback({ children, spinnerCentered = true }) {
|
||||||
return (
|
return (
|
||||||
<Suspense
|
<Suspense
|
||||||
fallback={
|
fallback={
|
||||||
<MyCenteredContainer>
|
spinnerCentered ? (
|
||||||
<Spin size="large" />
|
<MyCenteredContainer>
|
||||||
</MyCenteredContainer>
|
<Spin size="large" />
|
||||||
|
</MyCenteredContainer>
|
||||||
|
) : (
|
||||||
|
<div
|
||||||
|
style={{
|
||||||
|
display: "flex",
|
||||||
|
justifyContent: "center",
|
||||||
|
alignItems: "center",
|
||||||
|
paddingTop: 50,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Spin size="large" />
|
||||||
|
</div>
|
||||||
|
)
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
{children}
|
{children}
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
export default function Banner() {
|
||||||
|
return <h1>Banner</h1>;
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
export default function ColorPalette() {
|
||||||
|
return <h1>ColorPalette</h1>;
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
export default function General() {
|
||||||
|
return <h1>General</h1>;
|
||||||
|
}
|
|
@ -1,9 +1,20 @@
|
||||||
import { useEffect, useState } from "react";
|
import { lazy, useEffect, useState } from "react";
|
||||||
import { myFetch } from "../../../utils";
|
import { myFetch } from "../../../utils";
|
||||||
import { useParams } from "react-router-dom";
|
import { useParams } from "react-router-dom";
|
||||||
import MyCenteredContainer from "../../../Components/MyContainer";
|
import MyCenteredContainer from "../../../Components/MyContainer";
|
||||||
import { Button, Card, Result, Spin, Tabs } from "antd";
|
import { Button, Card, Result, Spin, Tabs } from "antd";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
|
import { MySupsenseFallback } from "../../../Components/MySupsenseFallback";
|
||||||
|
|
||||||
|
const General = lazy(() => import("./General"));
|
||||||
|
const Banner = lazy(() => import("./Banner"));
|
||||||
|
const ColorPalette = lazy(() => import("./ColorPalette"));
|
||||||
|
|
||||||
|
function SuspenseFallback({ children }) {
|
||||||
|
return (
|
||||||
|
<MySupsenseFallback spinnerCentered={false}>{children}</MySupsenseFallback>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
export default function Website() {
|
export default function Website() {
|
||||||
const { storeId } = useParams();
|
const { storeId } = useParams();
|
||||||
|
@ -12,6 +23,78 @@ export default function Website() {
|
||||||
const [isRequesting, setIsRequesting] = useState(true);
|
const [isRequesting, setIsRequesting] = useState(true);
|
||||||
const [website, setWebsite] = useState({});
|
const [website, setWebsite] = useState({});
|
||||||
|
|
||||||
|
const [activeTab, setActiveTab] = useState(0);
|
||||||
|
|
||||||
|
const tabItems = [
|
||||||
|
{
|
||||||
|
label: t("storeWebsite.tabs.general"),
|
||||||
|
children: <General />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: t("storeWebsite.tabs.banner"),
|
||||||
|
children: <Banner />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: t("storeWebsite.tabs.colorPalette"),
|
||||||
|
children: <ColorPalette />,
|
||||||
|
},
|
||||||
|
].map((item, index) => {
|
||||||
|
return {
|
||||||
|
key: index,
|
||||||
|
...item,
|
||||||
|
children: <SuspenseFallback>{item.children}</SuspenseFallback>,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
/*
|
||||||
|
const tabItems = [
|
||||||
|
{
|
||||||
|
key: "1",
|
||||||
|
label: t("storeWebsite.tabs.general"),
|
||||||
|
children: (
|
||||||
|
<SuspenseFallback>
|
||||||
|
<General />
|
||||||
|
</SuspenseFallback>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "2",
|
||||||
|
label: t("storeWebsite.tabs.banner"),
|
||||||
|
children: (
|
||||||
|
<SuspenseFallback>
|
||||||
|
<Banner />
|
||||||
|
</SuspenseFallback>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "3",
|
||||||
|
label: t("storeWebsite.tabs.colorPalette"),
|
||||||
|
children: (
|
||||||
|
<SuspenseFallback>
|
||||||
|
<ColorPalette />
|
||||||
|
</SuspenseFallback>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "4",
|
||||||
|
label: t("storeWebsite.tabs.zeitAdler"),
|
||||||
|
children: (
|
||||||
|
<SuspenseFallback>
|
||||||
|
<ColorPalette />
|
||||||
|
</SuspenseFallback>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "4",
|
||||||
|
label: t("storeWebsite.tabs.zeitAdler"),
|
||||||
|
children: (
|
||||||
|
<SuspenseFallback>
|
||||||
|
<ColorPalette />
|
||||||
|
</SuspenseFallback>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
];
|
||||||
|
*/
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
myFetch(`/website/${storeId}`, "GET")
|
myFetch(`/website/${storeId}`, "GET")
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
|
@ -47,21 +130,10 @@ export default function Website() {
|
||||||
<Card>
|
<Card>
|
||||||
<Tabs
|
<Tabs
|
||||||
type="card"
|
type="card"
|
||||||
items={[
|
defaultActiveKey={0}
|
||||||
"Allgemein",
|
items={tabItems}
|
||||||
"Banner",
|
activeKey={activeTab}
|
||||||
"Color Scheme",
|
onChange={(key) => setActiveTab(key)}
|
||||||
"Zeit Adler",
|
|
||||||
"Portfolio",
|
|
||||||
"Bewertungen",
|
|
||||||
"Footer / Socials",
|
|
||||||
"Impressum",
|
|
||||||
"Data Privacy",
|
|
||||||
].map((item) => ({
|
|
||||||
label: item,
|
|
||||||
key: item,
|
|
||||||
content: <div>Test</div>,
|
|
||||||
}))}
|
|
||||||
/>
|
/>
|
||||||
</Card>
|
</Card>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in New Issue