1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-16 22:50:10 +03:00

F OpenNebula/one#5422: Add feature to tabs

This commit is contained in:
Sergio Betanzos 2021-06-22 18:26:55 +02:00
parent 59c16d7522
commit b987aaea25
No known key found for this signature in database
GPG Key ID: E3E704F097737136
2 changed files with 12 additions and 8 deletions

View File

@ -1,9 +1,9 @@
import React, { useState, useMemo, memo } from 'react'
import React, { useState, useMemo } from 'react'
import PropTypes from 'prop-types'
import { Tabs as MTabs, Tab as MTab } from '@material-ui/core'
const Content = memo(({ name, renderContent, hidden }) => (
const Content = ({ name, renderContent: Content, hidden }) => (
<div key={`tab-${name}`}
style={{
padding: 2,
@ -12,11 +12,11 @@ const Content = memo(({ name, renderContent, hidden }) => (
display: hidden ? 'none' : 'block'
}}
>
{typeof renderContent === 'function' ? renderContent() : renderContent}
{typeof Content === 'function' ? <Content /> : Content}
</div>
), (prev, next) => prev.hidden === next.hidden)
)
const Tabs = ({ tabs = [] }) => {
const Tabs = ({ tabs = [], renderHiddenTabs = false }) => {
const [tabSelected, setTab] = useState(0)
const renderTabs = useMemo(() => (
@ -38,7 +38,7 @@ const Tabs = ({ tabs = [] }) => {
</MTabs>
), [tabSelected])
const renderTabContent = useMemo(() =>
const renderAllHiddenTabContents = useMemo(() =>
tabs.map((tabProps, idx) => {
const { name, value = idx } = tabProps
const hidden = tabSelected !== value
@ -49,7 +49,11 @@ const Tabs = ({ tabs = [] }) => {
return (
<>
{renderTabs}
{renderTabContent}
{renderHiddenTabs ? (
renderAllHiddenTabContents
) : (
<Content {...tabs.find(({ value }, idx) => (value ?? idx) === tabSelected)} />
)}
</>
)
}

View File

@ -1,4 +1,4 @@
import { createSlice, isFulfilled } from '@reduxjs/toolkit'
import { createSlice } from '@reduxjs/toolkit'
import { updateResourceList } from 'client/features/One/utils'
import { eventUpdateResourceState } from 'client/features/One/socket/actions'