@backstage/plugin-techdocs
Version:
The Backstage plugin that renders technical documentation for your components
65 lines (62 loc) • 2.17 kB
JavaScript
import { jsx, Fragment } from 'react/jsx-runtime';
import useCopyToClipboard from 'react-use/esm/useCopyToClipboard';
import { useRouteRef, useApi, configApiRef } from '@backstage/core-plugin-api';
import { rootDocsRouteRef } from '../../../routes.esm.js';
import { Table, EmptyState, LinkButton } from '@backstage/core-components';
import { actionFactories } from './actions.esm.js';
import { defaultColumns, columnFactories } from './columns.esm.js';
import { entitiesToDocsMapper } from './helpers.esm.js';
const DocsTable = (props) => {
const { entities, title, loading, columns, actions, options } = props;
const [, copyToClipboard] = useCopyToClipboard();
const getRouteToReaderPageFor = useRouteRef(rootDocsRouteRef);
const config = useApi(configApiRef);
if (!entities) return null;
const documents = entitiesToDocsMapper(
entities,
getRouteToReaderPageFor,
config
);
const defaultActions = [
actionFactories.createCopyDocsUrlAction(copyToClipboard)
];
const pageSize = 20;
const paging = documents && documents.length > pageSize;
return /* @__PURE__ */ jsx(Fragment, { children: loading || documents && documents.length > 0 ? /* @__PURE__ */ jsx(
Table,
{
isLoading: loading,
options: {
paging,
pageSize,
search: true,
actionsColumnIndex: -1,
...options
},
data: documents,
columns: columns || defaultColumns,
actions: actions || defaultActions,
title: title ? `${title} (${documents.length})` : `All (${documents.length})`
}
) : /* @__PURE__ */ jsx(
EmptyState,
{
missing: "data",
title: "No documents to show",
description: "Create your own document. Check out our Getting Started Information",
action: /* @__PURE__ */ jsx(
LinkButton,
{
color: "primary",
to: "https://backstage.io/docs/features/techdocs/getting-started",
variant: "contained",
children: "DOCS"
}
)
}
) });
};
DocsTable.columns = columnFactories;
DocsTable.actions = actionFactories;
export { DocsTable };
//# sourceMappingURL=DocsTable.esm.js.map