mirror of
https://github.com/Unleash/unleash.git
synced 2025-05-22 01:16:07 +02:00
feat: always show features table (#9446)
This commit is contained in:
parent
6d02e33680
commit
3059d23446
@ -148,14 +148,9 @@ export const ProjectFeatureToggles = ({
|
|||||||
'hide-setup' | 'show-setup'
|
'hide-setup' | 'show-setup'
|
||||||
>(`onboarding-state:v1-${projectId}`, 'hide-setup');
|
>(`onboarding-state:v1-${projectId}`, 'hide-setup');
|
||||||
|
|
||||||
const notOnboarding =
|
|
||||||
project.onboardingStatus.status === 'onboarded' ||
|
|
||||||
onboardingFlow === 'closed';
|
|
||||||
const isOnboarding =
|
const isOnboarding =
|
||||||
project.onboardingStatus.status !== 'onboarded' &&
|
project.onboardingStatus.status !== 'onboarded' &&
|
||||||
onboardingFlow === 'visible';
|
onboardingFlow === 'visible';
|
||||||
const noFeaturesExistInProject = project.featureTypeCounts?.length === 0;
|
|
||||||
const showFeaturesTable = !noFeaturesExistInProject || notOnboarding;
|
|
||||||
|
|
||||||
const trackOnboardingFinish = (sdkName: string) => {
|
const trackOnboardingFinish = (sdkName: string) => {
|
||||||
if (!isOnboarding) {
|
if (!isOnboarding) {
|
||||||
@ -495,128 +490,113 @@ export const ProjectFeatureToggles = ({
|
|||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
<ConditionallyRender
|
<PageContent
|
||||||
condition={showFeaturesTable}
|
disableLoading
|
||||||
show={
|
disablePadding
|
||||||
<PageContent
|
header={
|
||||||
disableLoading
|
<ProjectFeatureTogglesHeader
|
||||||
disablePadding
|
isLoading={initialLoad}
|
||||||
header={
|
totalItems={total}
|
||||||
<ProjectFeatureTogglesHeader
|
searchQuery={tableState.query || ''}
|
||||||
isLoading={initialLoad}
|
onChangeSearchQuery={(query) => {
|
||||||
totalItems={total}
|
setTableState({ query });
|
||||||
searchQuery={tableState.query || ''}
|
}}
|
||||||
onChangeSearchQuery={(query) => {
|
dataToExport={data}
|
||||||
setTableState({ query });
|
environmentsToExport={environments}
|
||||||
}}
|
actions={
|
||||||
dataToExport={data}
|
<ColumnsMenu
|
||||||
environmentsToExport={environments}
|
columns={[
|
||||||
actions={
|
{
|
||||||
<ColumnsMenu
|
header: 'Name',
|
||||||
columns={[
|
id: 'name',
|
||||||
{
|
isVisible: columnVisibility.name,
|
||||||
header: 'Name',
|
isStatic: true,
|
||||||
id: 'name',
|
},
|
||||||
isVisible:
|
{
|
||||||
columnVisibility.name,
|
header: 'Created',
|
||||||
isStatic: true,
|
id: 'createdAt',
|
||||||
},
|
isVisible: columnVisibility.createdAt,
|
||||||
{
|
},
|
||||||
header: 'Created',
|
{
|
||||||
id: 'createdAt',
|
header: 'By',
|
||||||
isVisible:
|
id: 'createdBy',
|
||||||
columnVisibility.createdAt,
|
isVisible: columnVisibility.createdBy,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
header: 'By',
|
header: 'Last seen',
|
||||||
id: 'createdBy',
|
id: 'lastSeenAt',
|
||||||
isVisible:
|
isVisible: columnVisibility.lastSeenAt,
|
||||||
columnVisibility.createdBy,
|
},
|
||||||
},
|
{
|
||||||
{
|
header: 'Lifecycle',
|
||||||
header: 'Last seen',
|
id: 'lifecycle',
|
||||||
id: 'lastSeenAt',
|
isVisible: columnVisibility.lifecycle,
|
||||||
isVisible:
|
},
|
||||||
columnVisibility.lastSeenAt,
|
{
|
||||||
},
|
id: 'divider',
|
||||||
{
|
},
|
||||||
header: 'Lifecycle',
|
...environments.map((environment) => ({
|
||||||
id: 'lifecycle',
|
header: environment,
|
||||||
isVisible:
|
id: formatEnvironmentColumnId(
|
||||||
columnVisibility.lifecycle,
|
environment,
|
||||||
},
|
),
|
||||||
{
|
isVisible:
|
||||||
id: 'divider',
|
columnVisibility[
|
||||||
},
|
formatEnvironmentColumnId(
|
||||||
...environments.map(
|
environment,
|
||||||
(environment) => ({
|
)
|
||||||
header: environment,
|
],
|
||||||
id: formatEnvironmentColumnId(
|
})),
|
||||||
environment,
|
]}
|
||||||
),
|
onToggle={onToggleColumnVisibility}
|
||||||
isVisible:
|
|
||||||
columnVisibility[
|
|
||||||
formatEnvironmentColumnId(
|
|
||||||
environment,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
}),
|
|
||||||
),
|
|
||||||
]}
|
|
||||||
onToggle={onToggleColumnVisibility}
|
|
||||||
/>
|
|
||||||
}
|
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
bodyClass='noop'
|
/>
|
||||||
style={{ cursor: 'inherit' }}
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
ref={bodyLoadingRef}
|
|
||||||
aria-busy={isPlaceholder}
|
|
||||||
aria-live='polite'
|
|
||||||
>
|
|
||||||
<FilterRow>
|
|
||||||
<ProjectOverviewFilters
|
|
||||||
project={projectId}
|
|
||||||
onChange={setTableState}
|
|
||||||
state={filterState}
|
|
||||||
/>
|
|
||||||
<ButtonGroup>
|
|
||||||
<PermissionIconButton
|
|
||||||
permission={UPDATE_FEATURE}
|
|
||||||
projectId={projectId}
|
|
||||||
onClick={() => setModalOpen(true)}
|
|
||||||
tooltipProps={{ title: 'Import' }}
|
|
||||||
data-testid={IMPORT_BUTTON}
|
|
||||||
data-loading-project
|
|
||||||
>
|
|
||||||
<ImportSvg />
|
|
||||||
</PermissionIconButton>
|
|
||||||
</ButtonGroup>
|
|
||||||
</FilterRow>
|
|
||||||
<SearchHighlightProvider
|
|
||||||
value={tableState.query || ''}
|
|
||||||
>
|
|
||||||
<PaginatedTable
|
|
||||||
tableInstance={table}
|
|
||||||
totalItems={total}
|
|
||||||
/>
|
|
||||||
</SearchHighlightProvider>
|
|
||||||
<ConditionallyRender
|
|
||||||
condition={!data.length && !isPlaceholder}
|
|
||||||
show={
|
|
||||||
<TableEmptyState
|
|
||||||
query={tableState.query || ''}
|
|
||||||
/>
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
{rowActionsDialogs}
|
|
||||||
{featureToggleModals}
|
|
||||||
</div>
|
|
||||||
</PageContent>
|
|
||||||
}
|
}
|
||||||
/>
|
bodyClass='noop'
|
||||||
|
style={{ cursor: 'inherit' }}
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
ref={bodyLoadingRef}
|
||||||
|
aria-busy={isPlaceholder}
|
||||||
|
aria-live='polite'
|
||||||
|
>
|
||||||
|
<FilterRow>
|
||||||
|
<ProjectOverviewFilters
|
||||||
|
project={projectId}
|
||||||
|
onChange={setTableState}
|
||||||
|
state={filterState}
|
||||||
|
/>
|
||||||
|
<ButtonGroup>
|
||||||
|
<PermissionIconButton
|
||||||
|
permission={UPDATE_FEATURE}
|
||||||
|
projectId={projectId}
|
||||||
|
onClick={() => setModalOpen(true)}
|
||||||
|
tooltipProps={{ title: 'Import' }}
|
||||||
|
data-testid={IMPORT_BUTTON}
|
||||||
|
data-loading-project
|
||||||
|
>
|
||||||
|
<ImportSvg />
|
||||||
|
</PermissionIconButton>
|
||||||
|
</ButtonGroup>
|
||||||
|
</FilterRow>
|
||||||
|
<SearchHighlightProvider value={tableState.query || ''}>
|
||||||
|
<PaginatedTable
|
||||||
|
tableInstance={table}
|
||||||
|
totalItems={total}
|
||||||
|
/>
|
||||||
|
</SearchHighlightProvider>
|
||||||
|
<ConditionallyRender
|
||||||
|
condition={!data.length && !isPlaceholder}
|
||||||
|
show={
|
||||||
|
<TableEmptyState query={tableState.query || ''} />
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
{rowActionsDialogs}
|
||||||
|
{featureToggleModals}
|
||||||
|
</div>
|
||||||
|
</PageContent>
|
||||||
|
|
||||||
<ConnectSdkDialog
|
<ConnectSdkDialog
|
||||||
open={connectSdkOpen}
|
open={connectSdkOpen}
|
||||||
onClose={() => {
|
onClose={() => {
|
||||||
|
Loading…
Reference in New Issue
Block a user