@ng-atomic/schematics 1.2.1 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/collection.json +6 -0
- package/package.json +2 -1
- package/src/_utilities/save-file.d.ts +2 -0
- package/src/_utilities/save-file.js +11 -0
- package/src/_utilities/save-file.js.map +1 -0
- package/src/atomic-component/_test/example.atom.scss +6 -0
- package/src/atomic-component/_test/{example.atom.ts.expected → example.atom.ts} +3 -2
- package/src/atomic-component/files/__name@dasherize__/__name@dasherize__.stories.ts.template +26 -0
- package/src/atomic-component/files/__name@dasherize__/index.ts.template +1 -0
- package/src/atomic-component/files/__name@dasherize__/ng-package.json.template +11 -0
- package/src/atomic-component/index.js +5 -5
- package/src/atomic-component/index.js.map +1 -1
- package/src/atomic-component/index.spec.ts +35 -7
- package/src/atomic-component/schema.d.ts +1 -0
- package/src/atomic-component/schema.json +9 -4
- package/src/ng-add/index.js +3 -7
- package/src/ng-add/index.js.map +1 -1
- package/src/ng-add/schema.json +2 -2
- package/src/setup/files/atomic/_atom.scss +2 -3
- package/src/setup/files/atomic/_component.scss +1 -8
- package/src/setup/files/atomic/_molecule.scss +2 -3
- package/src/setup/files/atomic/_organism.scss +2 -3
- package/src/setup/files/atomic/_page.scss +2 -3
- package/src/setup/files/atomic/_template.scss +2 -3
- package/src/style-header/_test/example.scss +6 -0
- package/src/style-header/index.d.ts +4 -0
- package/src/style-header/index.js +17 -0
- package/src/style-header/index.js.map +1 -0
- package/src/style-header/index.spec.ts +43 -0
- package/src/style-header/schema.d.ts +6 -0
- package/src/style-header/schema.js +3 -0
- package/src/style-header/schema.js.map +1 -0
- package/src/style-header/schema.json +22 -0
package/collection.json
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"extends": ["@schematics/angular"],
|
|
3
3
|
"schematics": {
|
|
4
|
+
"style-header": {
|
|
5
|
+
"aliases": ["sh"],
|
|
6
|
+
"description": "Add style header",
|
|
7
|
+
"factory": "./src/style-header/index",
|
|
8
|
+
"schema": "./src/style-header/schema.json"
|
|
9
|
+
},
|
|
4
10
|
"atomic-component": {
|
|
5
11
|
"aliases": ["ac"],
|
|
6
12
|
"description": "Create an atomic component",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ng-atomic/schematics",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"schematics": "./collection.json",
|
|
5
5
|
"ng-add": {
|
|
6
6
|
"save": "devDependencies"
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
"main": "src/index.js",
|
|
9
9
|
"typings": "src/index.d.ts",
|
|
10
10
|
"dependencies": {
|
|
11
|
+
"@angular/core": "^11.2.0",
|
|
11
12
|
"string-template": "^1.0.0"
|
|
12
13
|
},
|
|
13
14
|
"peerDependencies": {}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.saveFile = void 0;
|
|
4
|
+
function saveFile(host, path, callback) {
|
|
5
|
+
host.exists(path)
|
|
6
|
+
? host.overwrite(path, callback(host.read(path).toString('utf-8')))
|
|
7
|
+
: host.create(path, callback(''));
|
|
8
|
+
return host;
|
|
9
|
+
}
|
|
10
|
+
exports.saveFile = saveFile;
|
|
11
|
+
//# sourceMappingURL=save-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"save-file.js","sourceRoot":"","sources":["../../../../../libs/schematics/src/_utilities/save-file.ts"],"names":[],"mappings":";;;AAEA,SAAgB,QAAQ,CAAC,IAAU,EAAE,IAAY,EAAE,QAAiC;IACnF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAChB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QACpE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,OAAO,IAAI,CAAC;AACb,CAAC;AALD,4BAKC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { Component, OnInit } from '@angular/core';
|
|
1
|
+
import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';
|
|
2
2
|
|
|
3
3
|
@Component({
|
|
4
4
|
selector: 'atoms-example',
|
|
5
5
|
templateUrl: './example.atom.html',
|
|
6
|
-
styleUrls: ['./example.atom.scss']
|
|
6
|
+
styleUrls: ['./example.atom.scss'],
|
|
7
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
|
7
8
|
})
|
|
8
9
|
export class ExampleAtom implements OnInit {
|
|
9
10
|
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
|
2
|
+
import { Meta, Story } from '@storybook/angular';
|
|
3
|
+
import { action } from '@storybook/addon-actions';
|
|
4
|
+
import { <%= classify(name) %><%= classify(type) %>, <%= classify(name) %>Module } from '.';
|
|
5
|
+
|
|
6
|
+
export default {
|
|
7
|
+
title: '<%= classify(type) %>s/<%= classify(name) %>',
|
|
8
|
+
component: <%= classify(name) %><%= classify(type) %>,
|
|
9
|
+
} as Meta;
|
|
10
|
+
|
|
11
|
+
const ACTIONS = {
|
|
12
|
+
// eventEmitterName: action('eventEmitterName'),
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
const Template: Story = (args) => ({
|
|
17
|
+
props: {...args, ...ACTIONS},
|
|
18
|
+
moduleMetadata: {
|
|
19
|
+
imports: [
|
|
20
|
+
<%= classify(name) %>Module,
|
|
21
|
+
]
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
export const Default = Template.bind({});
|
|
26
|
+
Default.args = {};
|
|
@@ -12,13 +12,13 @@ exports.atomicComponent = (options) => (host, _) => tslib_1.__awaiter(void 0, vo
|
|
|
12
12
|
(_a = options.prefix) !== null && _a !== void 0 ? _a : (options.prefix = 'extras');
|
|
13
13
|
options.path = path_1.join(yield workspace_1.createDefaultPath(host, options.project), (_b = options === null || options === void 0 ? void 0 : options.path) !== null && _b !== void 0 ? _b : '');
|
|
14
14
|
const { name, path, type } = options = Object.assign(Object.assign({}, options), parse_name_1.parseName(options.path, options.name));
|
|
15
|
-
|
|
15
|
+
const componentExt = options.useTypeAsExtension ? type : 'component';
|
|
16
|
+
const scssPath = `${path}/${name}/${name}.${componentExt}.scss`;
|
|
16
17
|
return schematics_1.chain([
|
|
17
18
|
schematics_1.externalSchematic('@schematics/angular', 'module', { name, path, project: options.project }),
|
|
18
|
-
schematics_1.externalSchematic('@schematics/angular', 'component', Object.assign(Object.assign({}, options), { export: true })),
|
|
19
|
-
|
|
20
|
-
schematics_1.mergeWith(schematics_1.apply(schematics_1.url('./files'), [schematics_1.applyTemplates(Object.assign(Object.assign({}, strings), { name })), schematics_1.move(path)])),
|
|
21
|
-
addExportIntoIndexTs(Object.assign({}, options))
|
|
19
|
+
schematics_1.externalSchematic('@schematics/angular', 'component', Object.assign(Object.assign({}, options), { type: componentExt, export: true })),
|
|
20
|
+
schematics_1.schematic('style-header', Object.assign(Object.assign({}, options), { name, type, path: scssPath })),
|
|
21
|
+
schematics_1.mergeWith(schematics_1.apply(schematics_1.url('./files'), [schematics_1.applyTemplates(Object.assign(Object.assign({}, strings), { name, type: type !== null && type !== void 0 ? type : 'component' })), schematics_1.move(path)])),
|
|
22
22
|
]);
|
|
23
23
|
});
|
|
24
24
|
exports.atom = (options) => exports.atomicComponent(buildOptions(options, 'atom'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/schematics/src/atomic-component/index.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/schematics/src/atomic-component/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,7 @@ describe('AtomicComponent Schematics', () => {
|
|
|
31
31
|
expect(files).toContain('/projects/app/src/app/_shared/components/example/example.component.scss');
|
|
32
32
|
expect(files).toContain('/projects/app/src/app/_shared/components/example/example.component.spec.ts');
|
|
33
33
|
expect(files).toContain('/projects/app/src/app/_shared/components/example/example.component.ts');
|
|
34
|
+
expect(files).toContain('/projects/app/src/app/_shared/components/example/example.stories.ts');
|
|
34
35
|
expect(files).toContain('/projects/app/src/app/_shared/components/example/index.ts');
|
|
35
36
|
});
|
|
36
37
|
|
|
@@ -44,6 +45,7 @@ describe('AtomicComponent Schematics', () => {
|
|
|
44
45
|
expect(files).toContain('/projects/app/src/app/_shared/components/first/first.component.scss');
|
|
45
46
|
expect(files).toContain('/projects/app/src/app/_shared/components/first/first.component.spec.ts');
|
|
46
47
|
expect(files).toContain('/projects/app/src/app/_shared/components/first/first.component.ts');
|
|
48
|
+
expect(files).toContain('/projects/app/src/app/_shared/components/first/first.stories.ts');
|
|
47
49
|
expect(files).toContain('/projects/app/src/app/_shared/components/first/index.ts');
|
|
48
50
|
|
|
49
51
|
expect(files).toContain('/projects/app/src/app/_shared/components/second/second.module.ts');
|
|
@@ -51,10 +53,11 @@ describe('AtomicComponent Schematics', () => {
|
|
|
51
53
|
expect(files).toContain('/projects/app/src/app/_shared/components/second/second.component.scss');
|
|
52
54
|
expect(files).toContain('/projects/app/src/app/_shared/components/second/second.component.spec.ts');
|
|
53
55
|
expect(files).toContain('/projects/app/src/app/_shared/components/second/second.component.ts');
|
|
56
|
+
expect(files).toContain('/projects/app/src/app/_shared/components/second/second.stories.ts');
|
|
54
57
|
expect(files).toContain('/projects/app/src/app/_shared/components/second/index.ts');
|
|
55
58
|
|
|
56
|
-
const source = tree.read('/projects/app/src/app/_shared/components/index.ts')!.toString('utf-8');
|
|
57
|
-
expect(source).toEqual(`export { FirstModule } from './first';\nexport { SecondModule } from './second';`);
|
|
59
|
+
// const source = tree.read('/projects/app/src/app/_shared/components/index.ts')!.toString('utf-8');
|
|
60
|
+
// expect(source).toEqual(`export { FirstModule } from './first';\nexport { SecondModule } from './second';`);
|
|
58
61
|
});
|
|
59
62
|
|
|
60
63
|
it('should create atomic components files in app2', async () => {
|
|
@@ -63,7 +66,28 @@ describe('AtomicComponent Schematics', () => {
|
|
|
63
66
|
const expectedFilePaths = buildExpectedFilePaths(options.name, 'example', projectPath, 'component');
|
|
64
67
|
|
|
65
68
|
const { files } = await runner.runSchematicAsync('atomic-component', options, tree).toPromise();
|
|
66
|
-
expectedFilePaths.forEach(path => expect(files.
|
|
69
|
+
expectedFilePaths.forEach(path => expect(files).toContain(path));
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
describe('given useTypeAsExtension is false', () => {
|
|
73
|
+
it('should output `example.component.ts`', async () => {
|
|
74
|
+
const options = {project: 'app2', name: '_shared/components/example', type: 'dialog', useTypeAsExtension: false};
|
|
75
|
+
const projectPath = getTestProjectPath(defaultWorkspaceOptions, {...defaultAppOptions, name: 'app2'});
|
|
76
|
+
const expectedFilePaths = buildExpectedFilePaths(options.name, 'example', projectPath, 'component');
|
|
77
|
+
|
|
78
|
+
tree = await runner.runSchematicAsync('atomic-component', options, tree).toPromise();
|
|
79
|
+
expectedFilePaths.forEach(path => expect(tree.files).toContain(path));
|
|
80
|
+
|
|
81
|
+
const inputScss = tree.read('/projects/app2/src/app/_shared/components/example/example.component.scss').toString('utf-8');
|
|
82
|
+
expect(inputScss.replace(/\s/g, '')).toEqual(`
|
|
83
|
+
@use 'scoped-var' as * with ($host: 'example');
|
|
84
|
+
@use 'atomic/dialog' as *;
|
|
85
|
+
|
|
86
|
+
:host {
|
|
87
|
+
@include dialog($host);
|
|
88
|
+
}
|
|
89
|
+
`.replace(/\s/g, ''));
|
|
90
|
+
});
|
|
67
91
|
});
|
|
68
92
|
});
|
|
69
93
|
|
|
@@ -72,7 +96,7 @@ describe('AtomicComponent Schematics', () => {
|
|
|
72
96
|
tree = await createNxWorkspace(runner, tree);
|
|
73
97
|
});
|
|
74
98
|
|
|
75
|
-
|
|
99
|
+
xit('', async () => {
|
|
76
100
|
const options = {project: 'app', name: '_shared/components/extras/example'};
|
|
77
101
|
// const options = {project: 'app', path: '_shared/components/extras', name: 'example'};
|
|
78
102
|
const { files } = await runner.runSchematicAsync('atomic-component', options, tree).toPromise();
|
|
@@ -98,9 +122,13 @@ describe('Atom Schematics', () => {
|
|
|
98
122
|
const host = await runner.runSchematicAsync('atom', options, tree).toPromise();
|
|
99
123
|
expectedFilePaths.forEach(path => expect(host.files.includes(path)).toBeTruthy());
|
|
100
124
|
|
|
101
|
-
const
|
|
102
|
-
const
|
|
103
|
-
expect(
|
|
125
|
+
const inputTs = host.read('/projects/app/src/app/_shared/components/example/example.atom.ts').toString('utf-8');
|
|
126
|
+
const expectedTs = readFileSync(join(__dirname, '_test/example.atom.ts')).toString();
|
|
127
|
+
expect(inputTs.replace(/\s/g, '')).toEqual(expectedTs.replace(/\s/g, ''));
|
|
128
|
+
|
|
129
|
+
const inputScss = host.read('/projects/app/src/app/_shared/components/example/example.atom.scss').toString('utf-8');
|
|
130
|
+
const expectedScss = readFileSync(join(__dirname, '_test/example.atom.scss')).toString();
|
|
131
|
+
expect(inputScss.replace(/\s/g, '')).toEqual(expectedScss.replace(/\s/g, ''));
|
|
104
132
|
});
|
|
105
133
|
});
|
|
106
134
|
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"description": "The change detection strategy to use in the new component.",
|
|
52
52
|
"enum": ["Default", "OnPush"],
|
|
53
53
|
"type": "string",
|
|
54
|
-
"default": "
|
|
54
|
+
"default": "OnPush",
|
|
55
55
|
"alias": "c"
|
|
56
56
|
},
|
|
57
57
|
"prefix": {
|
|
@@ -122,9 +122,14 @@
|
|
|
122
122
|
},
|
|
123
123
|
"styleHeader": {
|
|
124
124
|
"type": "string",
|
|
125
|
-
"default": "@
|
|
126
|
-
"description": ""
|
|
127
|
-
}
|
|
125
|
+
"default": "@use 'scoped-var' as * with ($host: '{name}');\n@use 'atomic/{type}' as *;\n:host {\n\t@include {type}($host);\n}\n",
|
|
126
|
+
"description": "scss header template. you can use template engine like `($host: '{name}.{type}'`. "
|
|
127
|
+
},
|
|
128
|
+
"useTypeAsExtension": {
|
|
129
|
+
"type": "boolean",
|
|
130
|
+
"default": true,
|
|
131
|
+
"description": "When false, atomic component extension should be `.component.ts`"
|
|
132
|
+
}
|
|
128
133
|
},
|
|
129
134
|
"required": [
|
|
130
135
|
"name"
|
package/src/ng-add/index.js
CHANGED
|
@@ -10,15 +10,11 @@ function default_1(options) {
|
|
|
10
10
|
if (angularDependencyVersion === '0.0.0-NG') {
|
|
11
11
|
throw new Error('@angular/core version is not supported.');
|
|
12
12
|
}
|
|
13
|
-
|
|
14
|
-
_utilities_1.addPackageToPackageJson(host, '
|
|
15
|
-
_utilities_1.addPackageToPackageJson(host, 'angular-host-css-variable', getCustomWebpackVersion(angularDependencyVersion), 'devDependencies');
|
|
16
|
-
_utilities_1.addPackageToPackageJson(host, 'angular-custom-webpack-chaining', getCustomWebpackVersion(angularDependencyVersion), 'devDependencies');
|
|
13
|
+
_utilities_1.addPackageToPackageJson(host, '@ng-atomic/schematics', '1.4.0', 'devDependencies');
|
|
14
|
+
_utilities_1.addPackageToPackageJson(host, 'scoped-var', '1.2.0', 'devDependencies');
|
|
17
15
|
const installTaskId = context.addTask(new tasks_1.NodePackageInstallTask());
|
|
18
|
-
// angular-host-css-variableのインストール
|
|
19
|
-
const runSchematicTask = context.addTask(new tasks_1.RunSchematicTask('angular-host-css-variable', 'ng-add', { project: options.project }), [installTaskId]);
|
|
20
16
|
// Set Up Angular Atomic Schematics
|
|
21
|
-
context.addTask(new tasks_1.RunSchematicTask('setup-project', Object.assign({}, options)), [
|
|
17
|
+
context.addTask(new tasks_1.RunSchematicTask('setup-project', Object.assign({}, options)), [installTaskId]);
|
|
22
18
|
return host;
|
|
23
19
|
};
|
|
24
20
|
}
|
package/src/ng-add/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/schematics/src/ng-add/index.ts"],"names":[],"mappings":";;;AACA,4DAA4F;AAC5F,8CAA0F;AAE1F,mBAAwB,OAAY;IAClC,OAAO,CAAC,IAAU,EAAE,OAAyB,EAAE,EAAE;QAC/C,MAAM,gBAAgB,GAAG,6CAAgC,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QACjF,MAAM,wBAAwB,GAAG,gBAAgB,IAAI,UAAU,CAAC;QAEhE,IAAI,wBAAwB,KAAK,UAAU,EAAE;YAC3C,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;SAC5D;QAEH,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/schematics/src/ng-add/index.ts"],"names":[],"mappings":";;;AACA,4DAA4F;AAC5F,8CAA0F;AAE1F,mBAAwB,OAAY;IAClC,OAAO,CAAC,IAAU,EAAE,OAAyB,EAAE,EAAE;QAC/C,MAAM,gBAAgB,GAAG,6CAAgC,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QACjF,MAAM,wBAAwB,GAAG,gBAAgB,IAAI,UAAU,CAAC;QAEhE,IAAI,wBAAwB,KAAK,UAAU,EAAE;YAC3C,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;SAC5D;QAEH,oCAAuB,CAAC,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;QACnF,oCAAuB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;QAExE,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,8BAAsB,EAAE,CAAC,CAAC;QAEpE,mCAAmC;QACnC,OAAO,CAAC,OAAO,CAAC,IAAI,wBAAgB,CAAC,eAAe,oBAAM,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAA;QAErF,OAAO,IAAI,CAAA;IACX,CAAC,CAAA;AACH,CAAC;AAnBD,4BAmBC;AAED,SAAgB,uBAAuB,CAAC,GAAW;IACjD,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtE,QAAQ,KAAK,EAAE;QACb,KAAK,IAAI,CAAC,CAAC,OAAO,WAAW,CAAC;QAC9B,KAAK,IAAI,CAAC,CAAC,OAAO,WAAW,CAAC;QAC9B,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;KACrE;AACH,CAAC;AAPD,0DAOC"}
|
package/src/ng-add/schema.json
CHANGED
|
@@ -15,13 +15,13 @@
|
|
|
15
15
|
"description": "Setup components directory",
|
|
16
16
|
"type": "string",
|
|
17
17
|
"default": "src/app/_shared/components",
|
|
18
|
-
"x-prompt": "Where do you setup Angular Atomic Components
|
|
18
|
+
"x-prompt": "Where do you setup Angular Atomic Components?\nIf you use Nx workspace you should input `apps/app/src/app/_shared/components`"
|
|
19
19
|
},
|
|
20
20
|
"stylesDir": {
|
|
21
21
|
"description": "Setup styles directory",
|
|
22
22
|
"type": "string",
|
|
23
23
|
"default": "src/styles",
|
|
24
|
-
"x-prompt": "Where do you setup Angular Atomic Styles
|
|
24
|
+
"x-prompt": "Where do you setup Angular Atomic Styles?\nIf you use Nx workspace you should input `apps/app/src/styles`"
|
|
25
25
|
|
|
26
26
|
}
|
|
27
27
|
},
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const strings_1 = require("@angular-devkit/core/src/utils/strings");
|
|
5
|
+
const format = require("string-template");
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
const save_file_1 = require("../_utilities/save-file");
|
|
8
|
+
const buildOptions = (options) => {
|
|
9
|
+
var _a, _b;
|
|
10
|
+
return (Object.assign(Object.assign({}, options), { name: (options === null || options === void 0 ? void 0 : options.name) || ((_a = path_1.basename(options.path, '.scss').split('.')) === null || _a === void 0 ? void 0 : _a[0]), type: (options === null || options === void 0 ? void 0 : options.type) || ((_b = path_1.basename(options.path, '.scss').split('.').reverse()) === null || _b === void 0 ? void 0 : _b[0]) }));
|
|
11
|
+
};
|
|
12
|
+
const buildStyle = ({ styleHeader, name, type }) => format(styleHeader, { name: strings_1.dasherize(name), type: type });
|
|
13
|
+
exports.default = (_options) => (host) => {
|
|
14
|
+
const _a = buildOptions(_options), { path } = _a, extra = tslib_1.__rest(_a, ["path"]);
|
|
15
|
+
return save_file_1.saveFile(host, path, (src) => `${buildStyle(extra)}${src}`);
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/schematics/src/style-header/index.ts"],"names":[],"mappings":";;;AACA,oEAAkE;AAClE,0CAA0C;AAC1C,+BAAgC;AAEhC,uDAAmD;AAEnD,MAAM,YAAY,GAAG,CAAC,OAAe,EAAU,EAAE;;IAAC,OAAA,iCAC7C,OAAO,KACV,IAAI,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,YAAI,eAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,0CAAG,CAAC,EAAC,EACtE,IAAI,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,YAAI,eAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,0CAAG,CAAC,EAAC,IAChF,CAAA;CAAA,CAAC;AAEH,MAAM,UAAU,GAAG,CAAC,EAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAgD,EAAU,EAAE,CACtG,MAAM,CAAC,WAAW,EAAE,EAAC,IAAI,EAAE,mBAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;AAE3D,kBAAe,CAAC,QAAgB,EAAQ,EAAE,CAAC,CAAC,IAAU,EAAE,EAAE;IACxD,MAAM,KAAmB,YAAY,CAAC,QAAQ,CAAC,EAAzC,EAAC,IAAI,OAAoC,EAA/B,KAAK,sBAAf,QAAgB,CAAyB,CAAC;IAChD,OAAO,oBAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,GAAW,EAAU,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;AACrF,CAAC,CAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { SchematicTestRunner, UnitTestTree } from '@angular-devkit/schematics/testing';
|
|
2
|
+
import { readFileSync } from 'fs';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
import { join } from 'path';
|
|
5
|
+
import { createWorkspace } from '../_testing';
|
|
6
|
+
|
|
7
|
+
const COLLECTION_PATH = path.join(__dirname, '../../collection.json');
|
|
8
|
+
|
|
9
|
+
describe('StyleHeader', () => {
|
|
10
|
+
const runner = new SchematicTestRunner('@ng-atomic/schematics', COLLECTION_PATH);
|
|
11
|
+
let tree: UnitTestTree;
|
|
12
|
+
|
|
13
|
+
beforeEach(async () => {
|
|
14
|
+
tree = await createWorkspace(runner, tree);
|
|
15
|
+
const options = {project: 'app', style: 'scss', name: 'example', skipImport: true };
|
|
16
|
+
tree = await runner.runExternalSchematicAsync('@schematics/angular', 'component', options, tree).toPromise();
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
describe('given all options', () => {
|
|
20
|
+
it('should be added style header', async () => {
|
|
21
|
+
const PATH = '/projects/app/src/app/example/example.component.scss';
|
|
22
|
+
const options = {path: PATH, name: 'example', type: 'component'};
|
|
23
|
+
|
|
24
|
+
await runner.runSchematicAsync('style-header', options, tree).toPromise();
|
|
25
|
+
const input = tree.read(PATH).toString('utf-8');
|
|
26
|
+
const expected = readFileSync(join(__dirname, '_test/example.scss')).toString();
|
|
27
|
+
expect(input.replace(/\s/g, '')).toEqual(expected.replace(/\s/g, ''));
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
describe('given only options.path', () => {
|
|
32
|
+
it('should be added style header', async () => {
|
|
33
|
+
const PATH = '/projects/app/src/app/example/example.component.scss';
|
|
34
|
+
const options = {path: PATH};
|
|
35
|
+
|
|
36
|
+
await runner.runSchematicAsync('style-header', options, tree).toPromise();
|
|
37
|
+
const input = tree.read(PATH).toString('utf-8');
|
|
38
|
+
const expected = readFileSync(join(__dirname, '_test/example.scss')).toString();
|
|
39
|
+
expect(input.replace(/\s/g, '')).toEqual(expected.replace(/\s/g, ''));
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../../libs/schematics/src/style-header/schema.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/schema",
|
|
3
|
+
"$id": "SchematicsAngularComponent",
|
|
4
|
+
"title": "Style Header Options Schema",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"description": "Creates a new generic component definition in the given or default project.",
|
|
7
|
+
"properties": {
|
|
8
|
+
"path": {
|
|
9
|
+
"type": "string",
|
|
10
|
+
"format": "path",
|
|
11
|
+
"description": "The path at which to create the component file, relative to the current workspace. Default is a folder with the same name as the component in the project root.",
|
|
12
|
+
"visible": false
|
|
13
|
+
},
|
|
14
|
+
"styleHeader": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"default": "@use 'scoped-var' as * with ($host: '{name}');\n@use 'atomic/{type}' as *;\n:host {\n\t@include {type}($host);\n}\n",
|
|
17
|
+
"description": "scss header template. you can use template engine like `($host: '{name}.{type}'`. "
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"required": ["path"]
|
|
21
|
+
}
|
|
22
|
+
|