chore: don't have a type for TemplateFilter

Signed-off-by: blam <ben@blam.sh>
This commit is contained in:
blam
2023-03-19 13:05:16 +01:00
parent 70ae9f30db
commit 40a0a19434
10 changed files with 39 additions and 39 deletions
+2 -6
View File
@@ -5,7 +5,6 @@
```ts
/// <reference types="react" />
import { Entity } from '@backstage/catalog-model';
import { FormProps as FormProps_2 } from '@backstage/plugin-scaffolder-react/alpha';
import type { FormProps as FormProps_3 } from '@rjsf/core-v5';
import { PropsWithChildren } from 'react';
@@ -31,7 +30,7 @@ export type NextRouterProps = {
}>;
};
groups?: TemplateGroupFilter[];
templateFilter?: TemplateFilter;
templateFilter?: (entity: TemplateEntityV1beta3) => boolean;
FormProps?: FormProps_2;
contextMenu?: {
editor?: boolean;
@@ -45,13 +44,10 @@ export const NextScaffolderPage: (
props: PropsWithChildren<NextRouterProps>,
) => JSX.Element;
// @alpha (undocumented)
export type TemplateFilter = (entity: Entity) => boolean;
// @alpha (undocumented)
export type TemplateGroupFilter = {
title?: React_2.ReactNode;
filter: (entity: Entity) => boolean;
filter: (entity: TemplateEntityV1beta3) => boolean;
};
// (No @packageDocumentation comment for this package)
+1 -1
View File
@@ -332,7 +332,7 @@ export type RouterProps = {
title?: React_2.ReactNode;
filter: (entity: Entity) => boolean;
}>;
templateFilter?: (entity: Entity) => boolean;
templateFilter?: (entity: TemplateEntityV1beta3) => boolean;
defaultPreviewTemplate?: string;
headerOptions?: {
pageTitleOverride?: string;
-1
View File
@@ -17,7 +17,6 @@
export { NextScaffolderPage } from './plugin';
export {
type TemplateGroupFilter,
type TemplateFilter,
type NextRouterProps,
type FormProps,
} from './next';
+1 -1
View File
@@ -58,7 +58,7 @@ export type RouterProps = {
title?: React.ReactNode;
filter: (entity: Entity) => boolean;
}>;
templateFilter?: (entity: Entity) => boolean;
templateFilter?: (entity: TemplateEntityV1beta3) => boolean;
defaultPreviewTemplate?: string;
headerOptions?: {
pageTitleOverride?: string;
@@ -22,7 +22,6 @@ import {
Page,
SupportButton,
} from '@backstage/core-components';
import { Entity } from '@backstage/catalog-model';
import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';
import { useRouteRef } from '@backstage/core-plugin-api';
import {
@@ -47,9 +46,9 @@ export type ScaffolderPageProps = {
| undefined;
groups?: Array<{
title?: React.ReactNode;
filter: (entity: Entity) => boolean;
filter: (entity: TemplateEntityV1beta3) => boolean;
}>;
templateFilter?: (entity: Entity) => boolean;
templateFilter?: (entity: TemplateEntityV1beta3) => boolean;
contextMenu?: {
editor?: boolean;
actions?: boolean;
@@ -72,7 +71,7 @@ export const ScaffolderPageContents = ({
const registerComponentLink = useRouteRef(registerComponentRouteRef);
const otherTemplatesGroup = {
title: groups ? 'Other Templates' : 'Templates',
filter: (entity: Entity) => {
filter: (entity: TemplateEntityV1beta3) => {
const filtered = (groups ?? []).map(group => group.filter(entity));
return !filtered.some(result => result === true);
},
@@ -38,9 +38,9 @@ export type TemplateListProps = {
| undefined;
group?: {
title?: React.ReactNode;
filter: (entity: Entity) => boolean;
filter: (entity: TemplateEntityV1beta3) => boolean;
};
templateFilter?: (entity: Entity) => boolean;
templateFilter?: (entity: TemplateEntityV1beta3) => boolean;
};
/**
@@ -54,8 +54,22 @@ export const TemplateList = ({
const { loading, error, entities } = useEntityList();
const Card = TemplateCardComponent || TemplateCard;
const maybeFilteredEntities = (
group ? entities.filter(e => group.filter(e)) : entities
).filter(e => (templateFilter ? !templateFilter(e) : true));
group
? entities
.filter(
(e): e is TemplateEntityV1beta3 =>
e.kind === 'Template' &&
e.apiVersion === 'scaffolder.backstage.io/v1beta3',
)
.filter(group.filter)
: entities
)
.filter(
(e): e is TemplateEntityV1beta3 =>
e.kind === 'Template' &&
e.apiVersion === 'scaffolder.backstage.io/v1beta3',
)
.filter(e => (templateFilter ? !templateFilter(e) : true));
const titleComponent: React.ReactNode = (() => {
if (group && group.title) {
@@ -29,7 +29,7 @@ import {
} from '@backstage/plugin-scaffolder-react';
import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';
import { TemplateGroupFilter, TemplateFilter } from '../TemplateListPage';
import { TemplateGroupFilter } from '../TemplateListPage';
import { DEFAULT_SCAFFOLDER_FIELD_EXTENSIONS } from '../../extensions/default';
import {
@@ -61,7 +61,7 @@ export type NextRouterProps = {
}>;
};
groups?: TemplateGroupFilter[];
templateFilter?: TemplateFilter;
templateFilter?: (entity: TemplateEntityV1beta3) => boolean;
// todo(blam): rename this to formProps
FormProps?: FormProps;
contextMenu?: {
@@ -15,11 +15,7 @@
*/
import React, { useCallback } from 'react';
import {
Entity,
parseEntityRef,
stringifyEntityRef,
} from '@backstage/catalog-model';
import { parseEntityRef, stringifyEntityRef } from '@backstage/catalog-model';
import { useEntityList } from '@backstage/plugin-catalog-react';
import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';
import { Progress, Link, DocsIcon } from '@backstage/core-components';
@@ -34,22 +30,17 @@ import { TemplateGroup } from '@backstage/plugin-scaffolder-react/alpha';
import { viewTechDocRouteRef, selectedTemplateRouteRef } from '../../routes';
import { useNavigate } from 'react-router-dom';
/**
* @alpha
*/
export type TemplateFilter = (entity: Entity) => boolean;
/**
* @alpha
*/
export type TemplateGroupFilter = {
title?: React.ReactNode;
filter: (entity: Entity) => boolean;
filter: (entity: TemplateEntityV1beta3) => boolean;
};
export interface TemplateGroupsProps {
groups: TemplateGroupFilter[];
templateFilter?: TemplateFilter;
templateFilter?: (entity: TemplateEntityV1beta3) => boolean;
TemplateCardComponent?: React.ComponentType<{
template: TemplateEntityV1beta3;
}>;
@@ -96,8 +87,13 @@ export const TemplateGroups = (props: TemplateGroupsProps) => {
<>
{groups.map(({ title, filter }, index) => {
const templates = entities
.filter(
(e): e is TemplateEntityV1beta3 =>
e.kind === 'Template' &&
e.apiVersion === 'scaffolder.backstage.io/v1beta3',
)
.filter(e => (templateFilter ? !templateFilter(e) : true))
.filter((e): e is TemplateEntityV1beta3 => filter(e))
.filter(filter)
.map(template => {
const { kind, namespace, name } = parseEntityRef(
stringifyEntityRef(template),
@@ -35,11 +35,7 @@ import {
import { CategoryPicker } from './CategoryPicker';
import { RegisterExistingButton } from './RegisterExistingButton';
import { useRouteRef } from '@backstage/core-plugin-api';
import {
TemplateGroupFilter,
TemplateGroups,
TemplateFilter,
} from './TemplateGroups';
import { TemplateGroupFilter, TemplateGroups } from './TemplateGroups';
import { registerComponentRouteRef } from '../../routes';
import { ContextMenu } from './ContextMenu';
@@ -48,7 +44,7 @@ export type TemplateListPageProps = {
template: TemplateEntityV1beta3;
}>;
groups?: TemplateGroupFilter[];
templateFilter?: TemplateFilter;
templateFilter?: (entity: TemplateEntityV1beta3) => boolean;
contextMenu?: {
editor?: boolean;
actions?: boolean;
@@ -14,4 +14,4 @@
* limitations under the License.
*/
export { TemplateListPage } from './TemplateListPage';
export type { TemplateGroupFilter, TemplateFilter } from './TemplateGroups';
export type { TemplateGroupFilter } from './TemplateGroups';