@ng-atomic/schematics 1.4.0 → 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 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.4.0",
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,2 @@
1
+ import { Tree } from '@angular-devkit/schematics';
2
+ export declare function saveFile(host: Tree, path: string, callback: (str: string) => string): Tree;
@@ -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"}
@@ -0,0 +1,6 @@
1
+ @use 'scoped-var' as * with ($host: 'example');
2
+ @use 'atomic/atom' as *;
3
+
4
+ :host {
5
+ @include atom($host);
6
+ }
@@ -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
 
@@ -12,11 +12,12 @@ 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
- delete options.styleHeader;
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
- // externalSchematic('angular-host-css-variable', 'component', {...options, styleHeader: format(options.styleHeader, { name, type }), export: true}),
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 })),
20
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)])),
21
22
  ]);
22
23
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/schematics/src/atomic-component/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/schematics/src/atomic-component/index.ts"],"names":[],"mappings":";;;;AAAA,2DAIoC;AACpC,kEAAkE;AAClE,uEAAmE;AACnE,qEAA0E;AAC1E,+BAA4B;AAGf,QAAA,eAAe,GAAG,CAAC,OAAe,EAAQ,EAAE,CAAC,CAAO,IAAU,EAAE,CAAmB,EAAE,EAAE;;IACnG,MAAA,OAAO,CAAC,MAAM,oCAAd,OAAO,CAAC,MAAM,GAAK,QAAQ,EAAC;IAC5B,OAAO,CAAC,IAAI,GAAG,WAAI,CAAC,MAAM,6BAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,QAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,mCAAI,EAAE,CAAC,CAAC;IACzF,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,mCAAO,OAAO,GAAK,sBAAS,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9F,MAAM,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;IACrE,MAAM,QAAQ,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,YAAY,OAAO,CAAC;IAEhE,OAAO,kBAAK,CAAC;QACZ,8BAAiB,CAAC,qBAAqB,EAAE,QAAQ,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAC,CAAC;QAC1F,8BAAiB,CAAC,qBAAqB,EAAE,WAAW,kCAAM,OAAO,KAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,IAAE;QACrG,sBAAS,CAAC,cAAc,kCAAM,OAAO,KAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,IAAE;QACnE,sBAAS,CAAC,kBAAK,CAAC,gBAAG,CAAC,SAAS,CAAC,EAAE,CAAC,2BAAc,iCAAK,OAAO,KAAE,IAAI,EAAE,IAAI,EAAE,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,WAAW,IAAE,EAAE,iBAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAE7G,CAAC,CAAC;AACJ,CAAC,CAAA,CAAC;AAEW,QAAA,IAAI,GAAG,CAAC,OAAe,EAAQ,EAAE,CAAC,uBAAe,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AACjF,QAAA,QAAQ,GAAG,CAAC,OAAe,EAAQ,EAAE,CAAC,uBAAe,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;AACzF,QAAA,QAAQ,GAAG,CAAC,OAAe,EAAQ,EAAE,CAAC,uBAAe,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;AACzF,QAAA,QAAQ,GAAG,CAAC,OAAe,EAAQ,EAAE,CAAC,uBAAe,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;AACzF,QAAA,KAAK,GAAG,CAAC,OAAe,EAAQ,EAAE,CAAC,uBAAe,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAEhG,MAAM,YAAY,GAAG,CAAC,OAAe,EAAE,IAAY,EAAE,EAAE,CACtD,iCAAK,OAAO,KAAE,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,GAAG,IAAE,CAAC;AAElG,MAAM,oBAAoB,GAAG,CAAC,EAAC,IAAI,EAAE,IAAI,EAAS,EAAE,EAAE,CAAC,CAAC,IAAU,EAAE,EAAE;IACrE,MAAM,WAAW,GAAG,WAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChG,MAAM,IAAI,GAAG,YAAY,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;IAC/F,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1F,OAAO,IAAI,CAAC;AACb,CAAC,CAAC"}
@@ -56,8 +56,8 @@ describe('AtomicComponent Schematics', () => {
56
56
  expect(files).toContain('/projects/app/src/app/_shared/components/second/second.stories.ts');
57
57
  expect(files).toContain('/projects/app/src/app/_shared/components/second/index.ts');
58
58
 
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';`);
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';`);
61
61
  });
62
62
 
63
63
  it('should create atomic components files in app2', async () => {
@@ -66,7 +66,28 @@ describe('AtomicComponent Schematics', () => {
66
66
  const expectedFilePaths = buildExpectedFilePaths(options.name, 'example', projectPath, 'component');
67
67
 
68
68
  const { files } = await runner.runSchematicAsync('atomic-component', options, tree).toPromise();
69
- expectedFilePaths.forEach(path => expect(files.includes(path)).toBeTruthy());
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
+ });
70
91
  });
71
92
  });
72
93
 
@@ -101,9 +122,13 @@ describe('Atom Schematics', () => {
101
122
  const host = await runner.runSchematicAsync('atom', options, tree).toPromise();
102
123
  expectedFilePaths.forEach(path => expect(host.files.includes(path)).toBeTruthy());
103
124
 
104
- const input = host.read('/projects/app/src/app/_shared/components/example/example.atom.ts').toString('utf-8');
105
- const expected = readFileSync(join(__dirname, '_test/example.atom.ts.expected')).toString();
106
- expect(input.replace(/\s/g, '')).toEqual(expected.replace(/\s/g, ''));
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, ''));
107
132
  });
108
133
  });
109
134
 
@@ -17,4 +17,5 @@ export interface Schema {
17
17
  module?: string;
18
18
  export?: boolean;
19
19
  styleHeader?: string;
20
+ useTypeAsExtension: boolean;
20
21
  }
@@ -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": "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": "@import 'host-variable';\n@import 'atomic/{type}';\n$host: host('{name}');\n\n:host {\n\t@include {type}($host);\n}\n",
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"
@@ -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, 'angular-atomic-schematics', getCustomWebpackVersion(angularDependencyVersion), 'devDependencies');
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)), [runSchematicTask]);
17
+ context.addTask(new tasks_1.RunSchematicTask('setup-project', Object.assign({}, options)), [installTaskId]);
22
18
  return host;
23
19
  };
24
20
  }
@@ -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,cAAc;QACd,oCAAuB,CACtB,IAAI,EACJ,2BAA2B,EAC3B,uBAAuB,CAAC,wBAAwB,CAAC,EACjD,iBAAiB,CACjB,CAAC;QAEF,oCAAuB,CACtB,IAAI,EACJ,2BAA2B,EAC3B,uBAAuB,CAAC,wBAAwB,CAAC,EACjD,iBAAiB,CACjB,CAAC;QAEF,oCAAuB,CACtB,IAAI,EACJ,iCAAiC,EAC9B,uBAAuB,CAAC,wBAAwB,CAAC,EACpD,iBAAiB,CACjB,CAAC;QAEF,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,8BAAsB,EAAE,CAAC,CAAC;QAEpE,mCAAmC;QACnC,MAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,wBAAgB,CAC5D,2BAA2B,EAC3B,QAAQ,EACR,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAC5B,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;QAEpB,mCAAmC;QACnC,OAAO,CAAC,OAAO,CAAC,IAAI,wBAAgB,CAAC,eAAe,oBAAM,OAAO,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAA;QAExF,OAAO,IAAI,CAAA;IACX,CAAC,CAAA;AACH,CAAC;AA7CD,4BA6CC;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"}
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"}
@@ -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
  },
@@ -1,7 +1,6 @@
1
- @import 'host-variable';
2
- @import 'atomic/component';
1
+ @use 'scoped-var' as *;
2
+ @use 'atomic/component' as *;
3
3
 
4
4
  @mixin atom($host) {
5
5
  @include component($host);
6
6
  }
7
-
@@ -1,12 +1,5 @@
1
- @import 'host-variable';
1
+ @use 'scoped-var' as *;
2
2
 
3
3
  @mixin component($host) {
4
4
  display: block;
5
-
6
- @include hvar(--cell, 8px);
7
-
8
- * {
9
- --cell: #{hvar(--cell)};
10
- }
11
5
  }
12
-
@@ -1,7 +1,6 @@
1
- @import 'host-variable';
2
- @import 'atomic/component';
1
+ @use 'scoped-var' as *;
2
+ @use 'atomic/component' as *;
3
3
 
4
4
  @mixin molecule($host) {
5
5
  @include component($host);
6
6
  }
7
-
@@ -1,7 +1,6 @@
1
- @import 'host-variable';
2
- @import 'atomic/component';
1
+ @use 'scoped-var' as *;
2
+ @use 'atomic/component' as *;
3
3
 
4
4
  @mixin organism($host) {
5
5
  @include component($host);
6
6
  }
7
-
@@ -1,7 +1,6 @@
1
- @import 'host-variable';
2
- @import 'atomic/component';
1
+ @use 'scoped-var' as *;
2
+ @use 'atomic/component' as *;
3
3
 
4
4
  @mixin page($host) {
5
5
  @include component($host);
6
6
  }
7
-
@@ -1,7 +1,6 @@
1
- @import 'host-variable';
2
- @import 'atomic/component';
1
+ @use 'scoped-var' as *;
2
+ @use 'atomic/component' as *;
3
3
 
4
4
  @mixin template($host) {
5
5
  @include component($host);
6
6
  }
7
-
@@ -0,0 +1,6 @@
1
+ @use 'scoped-var' as * with ($host: 'example');
2
+ @use 'atomic/component' as *;
3
+
4
+ :host {
5
+ @include component($host);
6
+ }
@@ -0,0 +1,4 @@
1
+ import { Rule } from '@angular-devkit/schematics';
2
+ import { Schema } from './schema';
3
+ declare const _default: (_options: Schema) => Rule;
4
+ export default _default;
@@ -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,6 @@
1
+ export interface Schema {
2
+ path: string;
3
+ name: string;
4
+ type: string;
5
+ styleHeader: string;
6
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=schema.js.map
@@ -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
+