Allow for searching TechDocs by Title

Signed-off-by: Stephen A. Wilson <code@stephenawilson.ca>
This commit is contained in:
Stephen A. Wilson
2024-06-13 10:58:22 -04:00
parent 951ddd86e9
commit 605b6916cf
11 changed files with 274 additions and 5 deletions
@@ -85,6 +85,7 @@ export const DocsTable = (props: DocsTableProps) => {
});
const defaultColumns: TableColumn<DocsTableRow>[] = [
columnFactories.createTitleColumn({ hidden: true }),
columnFactories.createNameColumn(),
columnFactories.createOwnerColumn(),
columnFactories.createKindColumn(),
@@ -24,17 +24,20 @@ function customTitle(entity: Entity): string {
return entity.metadata.title || entity.metadata.name;
}
type ColumnOptions = Partial<TableColumn<DocsTableRow>>;
/**
* Not directly exported, but through DocsTable.columns and EntityListDocsTable.columns
*
* @public
*/
export const columnFactories = {
createNameColumn(): TableColumn<DocsTableRow> {
createTitleColumn(overrides: ColumnOptions = {}): TableColumn<DocsTableRow> {
return {
title: 'Document',
field: 'entity.metadata.name',
field: 'entity.metadata.title',
highlight: true,
searchable: true,
render: (row: DocsTableRow) => (
<SubvalueCell
value={
@@ -43,9 +46,27 @@ export const columnFactories = {
subvalue={row.entity.metadata.description}
/>
),
...overrides,
};
},
createOwnerColumn(): TableColumn<DocsTableRow> {
createNameColumn(overrides: ColumnOptions = {}): TableColumn<DocsTableRow> {
return {
title: 'Document',
field: 'entity.metadata.name',
highlight: true,
searchable: true,
render: (row: DocsTableRow) => (
<SubvalueCell
value={
<Link to={row.resolved.docsUrl}>{customTitle(row.entity)}</Link>
}
subvalue={row.entity.metadata.description}
/>
),
...overrides,
};
},
createOwnerColumn(overrides: ColumnOptions = {}): TableColumn<DocsTableRow> {
return {
title: 'Owner',
field: 'resolved.ownedByRelationsTitle',
@@ -55,18 +76,21 @@ export const columnFactories = {
defaultKind="group"
/>
),
...overrides,
};
},
createKindColumn(): TableColumn<DocsTableRow> {
createKindColumn(overrides: ColumnOptions = {}): TableColumn<DocsTableRow> {
return {
title: 'Kind',
field: 'entity.kind',
...overrides,
};
},
createTypeColumn(): TableColumn<DocsTableRow> {
createTypeColumn(overrides: ColumnOptions = {}): TableColumn<DocsTableRow> {
return {
title: 'Type',
field: 'entity.spec.type',
...overrides,
};
},
};