removed actions factories and define defaultActions in component itself

Signed-off-by: Matteo Barone <matteo.barone@klarna.com>
This commit is contained in:
Matteo Barone
2021-06-18 09:48:11 +02:00
parent 4c46c8e9f9
commit 63a8205a72
3 changed files with 41 additions and 77 deletions
@@ -23,14 +23,21 @@ import {
} from '@backstage/core';
import {
formatEntityRefTitle,
getEntityMetadataEditUrl,
getEntityMetadataViewUrl,
getEntityRelations,
useEntityListProvider,
useStarredEntities,
} from '@backstage/plugin-catalog-react';
import Edit from '@material-ui/icons/Edit';
import OpenInNew from '@material-ui/icons/OpenInNew';
import { capitalize } from 'lodash';
import React from 'react';
import {
favouriteEntityIcon,
favouriteEntityTooltip,
} from '../FavouriteEntity/FavouriteEntity';
import * as columnFactories from './columns';
import * as actionFactories from './actions';
import { EntityRow } from './types';
const defaultColumns: TableColumn<EntityRow>[] = [
@@ -70,14 +77,39 @@ export const CatalogTable = ({ columns, actions }: CatalogTableProps) => {
}
const defaultActions: TableProps<EntityRow>['actions'] = [
({ entity }) => actionFactories.createViewUrlAction(entity),
({ entity }) => actionFactories.createEditUrlAction(entity),
({ entity }) =>
actionFactories.createStarredAction(
entity,
isStarredEntity,
toggleStarredEntity,
),
({ entity }) => {
const url = getEntityMetadataViewUrl(entity);
return {
icon: () => <OpenInNew fontSize="small" />,
tooltip: 'View',
disabled: !url,
onClick: () => {
if (!url) return;
window.open(url, '_blank');
},
};
},
({ entity }) => {
const url = getEntityMetadataEditUrl(entity);
return {
icon: () => <Edit fontSize="small" />,
tooltip: 'Edit',
disabled: !url,
onClick: () => {
if (!url) return;
window.open(url, '_blank');
},
};
},
({ entity }) => {
const isStarred = isStarredEntity(entity);
return {
cellStyle: { paddingLeft: '1em' },
icon: () => favouriteEntityIcon(isStarred),
tooltip: favouriteEntityTooltip(isStarred),
onClick: () => toggleStarredEntity(entity),
};
},
];
const rows = entities.map(entity => {
@@ -1,67 +0,0 @@
/*
* Copyright 2021 Spotify AB
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import React from 'react';
import { Entity } from '@backstage/catalog-model';
import {
getEntityMetadataViewUrl,
getEntityMetadataEditUrl,
} from '@backstage/plugin-catalog-react';
import OpenInNew from '@material-ui/icons/OpenInNew';
import Edit from '@material-ui/icons/Edit';
import {
favouriteEntityIcon,
favouriteEntityTooltip,
} from '../FavouriteEntity/FavouriteEntity';
export function createViewUrlAction(entity: Entity) {
const url = getEntityMetadataViewUrl(entity);
return {
icon: () => <OpenInNew fontSize="small" />,
tooltip: 'View',
disabled: !url,
onClick: () => {
if (!url) return;
window.open(url, '_blank');
},
};
}
export function createEditUrlAction(entity: Entity) {
const url = getEntityMetadataEditUrl(entity);
return {
icon: () => <Edit fontSize="small" />,
tooltip: 'Edit',
disabled: !url,
onClick: () => {
if (!url) return;
window.open(url, '_blank');
},
};
}
export function createStarredAction(
entity: Entity,
isStarredEntity: (entity: Entity) => boolean,
toggleStarredEntity: (entity: Entity) => void,
) {
const isStarred = isStarredEntity(entity);
return {
cellStyle: { paddingLeft: '1em' },
icon: () => favouriteEntityIcon(isStarred),
tooltip: favouriteEntityTooltip(isStarred),
onClick: () => toggleStarredEntity(entity),
};
}
-1
View File
@@ -42,4 +42,3 @@ export {
EntitySystemDiagramCard,
} from './plugin';
export * from './components/CatalogTable/columns';
export * from './components/CatalogTable/actions';