diff --git a/packages/app/src/components/PagePanels/index.jsx b/packages/app/src/components/PagePanels/index.jsx
index d8980e84..77239280 100755
--- a/packages/app/src/components/PagePanels/index.jsx
+++ b/packages/app/src/components/PagePanels/index.jsx
@@ -9,261 +9,287 @@ import NavMenu from "./components/NavMenu"
import "./index.less"
export class Tab extends React.Component {
- state = {
- error: null
- }
+ state = {
+ error: null,
+ }
- // handle on error
- componentDidCatch(err) {
- this.setState({ error: err })
- }
+ // handle on error
+ componentDidCatch(err) {
+ this.setState({ error: err })
+ }
- render() {
- if (this.state.error) {
- return
- }
+ render() {
+ if (this.state.error) {
+ return (
+
+ )
+ }
- return <>
- {this.props.children}
- >
- }
+ return <>{this.props.children}>
+ }
}
export const Panel = (props) => {
- return
- {props.children}
-
+ return (
+
+ {props.children}
+
+ )
}
export class PagePanelWithNavMenu extends React.Component {
- state = {
- activeTab: new URLSearchParams(window.location.search).get("type") ?? this.props.defaultTab ?? this.props.tabs[0].key,
- renders: [],
- }
+ state = {
+ activeTab:
+ new URLSearchParams(window.location.search).get("type") ??
+ this.props.defaultTab ??
+ this.props.tabs[0].key,
+ renders: [],
+ }
- primaryPanelRef = React.createRef()
+ primaryPanelRef = React.createRef()
- interface = {
- attachComponent: (id, component, options) => {
- const renders = this.state.renders
+ interface = {
+ attachComponent: (id, component, options) => {
+ const renders = this.state.renders
- renders.push({
- id: id,
- component: component,
- options: options,
- ref: React.createRef()
- })
+ renders.push({
+ id: id,
+ component: component,
+ options: options,
+ ref: React.createRef(),
+ })
- this.setState({
- renders: renders,
- })
- },
- detachComponent: (id) => {
- const renders = this.state.renders
+ this.setState({
+ renders: renders,
+ })
+ },
+ detachComponent: (id) => {
+ const renders = this.state.renders
- const index = renders.findIndex((render) => render.id === id)
+ const index = renders.findIndex((render) => render.id === id)
- renders.splice(index, 1)
+ renders.splice(index, 1)
- this.setState({
- renders: renders,
- })
- }
- }
+ this.setState({
+ renders: renders,
+ })
+ },
+ }
- componentDidMount() {
- app.layout.page_panels = this.interface
+ componentDidMount() {
+ app.layout.page_panels = this.interface
- if (app.isMobile) {
- app.layout.top_bar.shouldUseTopBarSpacer(true)
- app.layout.toggleCenteredContent(false)
- }
+ if (app.isMobile) {
+ app.layout.top_bar.shouldUseTopBarSpacer(true)
+ app.layout.toggleCenteredContent(false)
+ }
- app.layout.toggleCenteredContent(true)
- }
+ app.layout.toggleCenteredContent(true)
+ }
- componentWillUnmount() {
- delete app.layout.page_panels
+ componentWillUnmount() {
+ delete app.layout.page_panels
- if (!app.isMobile) {
- app.layout.header.render(null)
- } else {
- app.layout.top_bar.renderDefault()
- }
- }
+ if (!app.isMobile) {
+ if (app.layout.header) {
+ app.layout.header.render(null)
+ }
+ } else {
+ app.layout.top_bar.renderDefault()
+ }
+ }
- renderActiveTab() {
- if (!Array.isArray(this.props.tabs)) {
- console.error("PagePanelWithNavMenu: tabs must be an array")
- return <>>
- }
+ renderActiveTab() {
+ if (!Array.isArray(this.props.tabs)) {
+ console.error("PagePanelWithNavMenu: tabs must be an array")
+ return <>>
+ }
- if (this.props.tabs.length === 0) {
- return <>>
- }
+ if (this.props.tabs.length === 0) {
+ return <>>
+ }
- // slip the active tab by splitting on "."
- if (!this.state.activeTab) {
- console.error("PagePanelWithNavMenu: activeTab is not defined")
- return <>>
- }
+ // slip the active tab by splitting on "."
+ if (!this.state.activeTab) {
+ console.error("PagePanelWithNavMenu: activeTab is not defined")
+ return <>>
+ }
- let tab = null
+ let tab = null
- const activeTabDirectory = this.state.activeTab.split(".")
+ const activeTabDirectory = this.state.activeTab.split(".")
- activeTabDirectory.forEach((key, index) => {
- if (!tab) {
- tab = this.props.tabs.find((children) => children.key === key)
- } else {
- if (!tab.children) {
- console.error("PagePanelWithNavMenu: tab.children is not defined")
+ activeTabDirectory.forEach((key, index) => {
+ if (!tab) {
+ tab = this.props.tabs.find((children) => children.key === key)
+ } else {
+ if (!tab.children) {
+ console.error(
+ "PagePanelWithNavMenu: tab.children is not defined",
+ )
- return tab = null
- }
+ return (tab = null)
+ }
- tab = tab.children.find((children) => children.key === `${activeTabDirectory[index - 1]}.${key}`)
- }
- })
+ tab = tab.children.find(
+ (children) =>
+ children.key ===
+ `${activeTabDirectory[index - 1]}.${key}`,
+ )
+ }
+ })
- if (!tab) {
- if (this.props.onNotFound) {
- return this.props.onNotFound()
- }
+ if (!tab) {
+ if (this.props.onNotFound) {
+ return this.props.onNotFound()
+ }
- return
- }
+ return (
+
+ )
+ }
- const componentProps = tab.props ?? this.props.tabProps
+ const componentProps = tab.props ?? this.props.tabProps
- return React.createElement(tab.component, {
- ...componentProps,
- })
- }
+ return React.createElement(tab.component, {
+ ...componentProps,
+ })
+ }
- replaceQueryTypeToCurrentTab = (key) => {
- history.pushState(undefined, "", `?type=${key ?? this.state.activeTab}`)
- }
+ replaceQueryTypeToCurrentTab = (key) => {
+ history.pushState(undefined, "", `?type=${key ?? this.state.activeTab}`)
+ }
- tabChange = async (key) => {
- if (this.props.beforeTabChange) {
- await this.props.beforeTabChange(key)
- }
+ tabChange = async (key) => {
+ if (this.props.beforeTabChange) {
+ await this.props.beforeTabChange(key)
+ }
- await this.setState({ activeTab: key })
+ await this.setState({ activeTab: key })
- if (this.props.useSetQueryType) {
- this.replaceQueryTypeToCurrentTab(key)
- }
+ if (this.props.useSetQueryType) {
+ this.replaceQueryTypeToCurrentTab(key)
+ }
- if (this.props.onTabChange) {
- this.props.onTabChange(key)
- }
- }
+ if (this.props.onTabChange) {
+ this.props.onTabChange(key)
+ }
+ }
- handleTabChange = async (key) => {
- if (this.state.activeTab === key) return
+ handleTabChange = async (key) => {
+ if (this.state.activeTab === key) return
- if (this.props.transition) {
- if (document.startViewTransition) {
- return document.startViewTransition(() => {
- this.tabChange(key)
- })
- }
+ if (this.props.transition) {
+ if (document.startViewTransition) {
+ return document.startViewTransition(() => {
+ this.tabChange(key)
+ })
+ }
- console.warn("PagePanelWithNavMenu: transition is enabled but document.startViewTransition is not compatible with your browser")
+ console.warn(
+ "PagePanelWithNavMenu: transition is enabled but document.startViewTransition is not compatible with your browser",
+ )
- if (this.primaryPanelRef.current && this.primaryPanelRef.current?.classList) {
- // set to primary panel fade-opacity-leave class
- this.primaryPanelRef.current.classList.add("fade-opacity-leave")
+ if (
+ this.primaryPanelRef.current &&
+ this.primaryPanelRef.current?.classList
+ ) {
+ // set to primary panel fade-opacity-leave class
+ this.primaryPanelRef.current.classList.add("fade-opacity-leave")
- // remove fade-opacity-leave class after animation
- setTimeout(() => {
- this.primaryPanelRef.current.classList.remove("fade-opacity-leave")
- }, 300)
- }
+ // remove fade-opacity-leave class after animation
+ setTimeout(() => {
+ this.primaryPanelRef.current.classList.remove(
+ "fade-opacity-leave",
+ )
+ }, 300)
+ }
- await new Promise(resolve => setTimeout(resolve, 200))
- }
+ await new Promise((resolve) => setTimeout(resolve, 200))
+ }
- return this.tabChange(key)
- }
+ return this.tabChange(key)
+ }
- getItems = (items) => {
- if (!Array.isArray(items)) {
- console.error(`[items] is not an (array), received (${typeof items})`)
- return []
- }
+ getItems = (items) => {
+ if (!Array.isArray(items)) {
+ console.error(
+ `[items] is not an (array), received (${typeof items})`,
+ )
+ return []
+ }
- items = items.map((item) => {
- return {
- key: item.key,
- icon: createIconRender(item.icon),
- label: item.label,
- children: item.children && this.getItems(item.children),
- disabled: item.disabled,
- props: item.props ?? {},
- }
- })
+ items = items.map((item) => {
+ return {
+ key: item.key,
+ icon: createIconRender(item.icon),
+ label: item.label,
+ children: item.children && this.getItems(item.children),
+ disabled: item.disabled,
+ props: item.props ?? {},
+ }
+ })
- return items
- }
+ return items
+ }
- render() {
- return <>
- {
- app.isMobile && app.layout.top_bar.render( this.handleTabChange(key)}
- />)
- }
+ render() {
+ return (
+ <>
+ {app.isMobile &&
+ app.layout.top_bar.render(
+ this.handleTabChange(key)}
+ />,
+ )}
- {
- !app.isMobile && app.layout.header.render( this.handleTabChange(key)}
- renderNames
- >
- {
- Array.isArray(this.state.renders) && [
- this.state.renders.map((render, index) => {
- return React.createElement(render.component, {
- ...render.options.props,
- ref: render.ref
- })
- })
- ]
- }
- )
- }
+ {!app.isMobile &&
+ app.layout.header.render(
+ this.handleTabChange(key)}
+ renderNames
+ >
+ {Array.isArray(this.state.renders) && [
+ this.state.renders.map((render, index) => {
+ return React.createElement(
+ render.component,
+ {
+ ...render.options.props,
+ ref: render.ref,
+ },
+ )
+ }),
+ ]}
+ ,
+ )}
-
-
- {
- this.renderActiveTab()
- }
-
-
- >
- }
+
+
+ {this.renderActiveTab()}
+
+
+ >
+ )
+ }
}
-export default PagePanelWithNavMenu
\ No newline at end of file
+export default PagePanelWithNavMenu