UNPKG

@backstage/plugin-techdocs

Version:

The Backstage plugin that renders technical documentation for your components

65 lines (62 loc) 2.17 kB
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