ipsos-components
Version:
Material Design components for Angular
47 lines (39 loc) • 1.77 kB
text/typescript
import {EXAMPLE_COMPONENTS} from './example-module';
/**
* Example data
* with information about Component name, selector, files used in example, and path to examples
*/
export class ExampleData {
// TODO: figure out how do we get these variables.
description = 'Some description for material';
// TODO: use real example and delete the example/ folder.
examplePath = '/assets/example/';
exampleFiles = ['button-demo.html', 'button-demo.scss', 'button-demo.ts'];
// TODO: extract these variables from example code.
selectorName = 'button-demo';
indexFilename = 'button-demo';
componentName = 'ButtonDemo';
constructor(example: string) {
if (example && EXAMPLE_COMPONENTS[example]) {
this.examplePath = `/assets/stackblitz/examples/${example}/`;
// TODO(tinayuangao): Do not hard-code extensions
this.exampleFiles = ['html', 'ts', 'css']
.map((extension) => `${example}-example.${extension}`);
if (EXAMPLE_COMPONENTS[example].additionalFiles) {
this.exampleFiles = this.exampleFiles.concat(EXAMPLE_COMPONENTS[example].additionalFiles);
}
this.selectorName = this.indexFilename = `${example}-example`;
let exampleName = example.replace(/(?:^\w|\b\w)/g, letter => letter.toUpperCase());
if (EXAMPLE_COMPONENTS[example].title) {
this.description = EXAMPLE_COMPONENTS[example].title;
} else {
this.description = exampleName.replace(/[\-]+/g, ' ') + ' Example';
}
if (EXAMPLE_COMPONENTS[example].selectorName) {
this.componentName = EXAMPLE_COMPONENTS[example].selectorName;
} else {
this.componentName = exampleName.replace(/[\-]+/g, '') + 'Example';
}
}
}
}