nx/nx-dev/data-access-menu/src/lib/menu.utils.ts
2022-07-21 18:19:59 +00:00

139 lines
3.4 KiB
TypeScript

import { DocumentMetadata } from '@nrwl/nx-dev/models-document';
import { MenuItem, MenuSection } from '@nrwl/nx-dev/models-menu';
export function createMenuItems(root: DocumentMetadata): MenuItem[] {
const items = root?.itemList;
const createPathMetadata = (g: DocumentMetadata, parentId = ''): MenuItem => {
const pathData = {
...g,
path: g.path ?? `/${parentId}/${g.id}`,
};
if (Array.isArray(g.itemList)) {
pathData.itemList = g.itemList.map((value) =>
createPathMetadata(value, `${parentId}/${g.id}`)
);
}
return pathData;
};
return (
items?.map((item) => {
return {
...item,
itemList: item.itemList?.map((ii) => createPathMetadata(ii, item.id)),
};
}) ?? []
);
}
export function getBasicSection(items: MenuItem[]): MenuSection {
return {
id: 'basic',
name: 'Basic',
hideSectionHeader: true,
itemList: items
.filter(
(m) =>
m.id === 'getting-started' ||
m.id === 'tutorial' ||
m.id === 'migration' ||
m.id === 'configuration' ||
m.id === 'using-nx' ||
m.id === 'core-tutorial' ||
m.id === 'react-tutorial' ||
m.id === 'angular-tutorial' ||
m.id === 'node-tutorial'
)
.map((m) => {
return {
...m,
disableCollapsible: !m.id.endsWith('tutorial'),
};
}),
};
}
export function getDeepDiveSection(items: MenuItem[]): MenuSection {
return {
id: 'deep-dive',
name: 'Deep Dive',
itemList: items
.filter(
(m) =>
m.id === 'workspace-concepts' ||
m.id === 'structure' ||
m.id === 'extending-nx' ||
m.id === 'generators' ||
m.id === 'executors' ||
m.id === 'ci' ||
m.id === 'modern-angular' ||
m.id === 'guides' ||
m.id === 'module-federation' ||
m.id === 'examples' ||
m.id === 'core-extended'
)
.map((m) => ({
...m,
disableCollapsible: true,
itemList: m.itemList?.map((item) => ({
...item,
disableCollapsible: true,
})),
})),
};
}
export function getPackageApiSection(items: MenuItem[]): MenuSection {
return {
id: 'official-packages',
name: 'Reference',
itemList: items.filter(
(m) =>
m.id !== 'add-nx-to-monorepo' &&
m.id !== 'cra-to-nx' &&
m.id !== 'create-nx-plugin' &&
m.id !== 'create-nx-workspace' &&
m.id !== 'make-angular-cli-faster' &&
m.id !== 'tao'
),
};
}
export function getBasicNxCloudSection(items: MenuItem[]): MenuSection {
return {
id: 'basic',
name: 'Basic',
hideSectionHeader: true,
itemList: items
.filter(
(m) => m.id === 'intro' || m.id === 'set-up' || m.id === 'account'
)
.map((m) => {
return {
...m,
disableCollapsible: !m.id.endsWith('tutorial'),
};
}),
};
}
export function getDeepDiveNxCloudSection(items: MenuItem[]): MenuSection {
return {
id: 'deep-dive',
name: 'Deep Dive',
itemList: items
.filter((m) => m.id === 'private-cloud' || m.id === 'reference')
.map((m) => ({
...m,
disableCollapsible: true,
itemList: m.itemList?.map((item) => ({
...item,
disableCollapsible: true,
})),
})),
};
}