mirror of
https://github.com/angular/angular
synced 2026-05-24 09:28:37 +00:00
The ExampleViewer component was extracting only innerHTML from code blocks in multifile examples, which lost the shell class applied by the formatCode function. This caused the $ prompt to not appear for shell commands in multifile blocks even when language="shell" was set. Modified the Snippet interface to track shell language state and updated getCodeSnippetsFromMultifileWrapper and getStandaloneCodeSnippet methods to preserve the shell class. Updated example-viewer template to conditionally apply the shell class to the code wrapper element. Fixes inconsistency between standalone and multifile shell code blocks.
45 lines
1.4 KiB
TypeScript
45 lines
1.4 KiB
TypeScript
/*!
|
|
* @license
|
|
* Copyright Google LLC All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by an MIT-style license that can be
|
|
* found in the LICENSE file at https://angular.dev/license
|
|
*/
|
|
|
|
import {Type} from '@angular/core';
|
|
import {SafeHtml} from '@angular/platform-browser';
|
|
|
|
/**
|
|
* Map of the examples, values are functions which returns the promise of the component type, which will be displayed as preview in the ExampleViewer component
|
|
*/
|
|
export interface CodeExamplesMap {
|
|
[id: string]: () => Promise<Type<unknown>>;
|
|
}
|
|
|
|
export interface Snippet {
|
|
/** Title of the code snippet */
|
|
title?: string;
|
|
/** Name of the file. */
|
|
name: string;
|
|
/** Content of code snippet */
|
|
sanitizedContent: SafeHtml;
|
|
/** Text in following format `start-end`. Start and end are numbers, based on them provided range of lines will be displayed in collapsed mode */
|
|
visibleLinesRange?: string;
|
|
|
|
shell?: boolean;
|
|
}
|
|
|
|
export interface ExampleMetadata {
|
|
/** Numeric id of example, used to generate unique link to the example */
|
|
id: number;
|
|
/** Title of the example. */
|
|
title?: string;
|
|
/** Path to the preview component */
|
|
path?: string;
|
|
/** List of files which are part of the example. */
|
|
files: Snippet[];
|
|
/** True when ExampleViewer should have preview */
|
|
preview: boolean;
|
|
/** Whether to hide code example by default. */
|
|
hideCode: boolean;
|
|
}
|