@spartan-ng/cli 0.0.1-alpha.411 → 0.0.1-alpha.413

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/generators.json CHANGED
@@ -30,6 +30,11 @@
30
30
  "schema": "./src/generators/migrate-radio/schema.json",
31
31
  "description": "Migrate brn-radio to hlm-radio"
32
32
  },
33
+ "migrate-select": {
34
+ "factory": "./src/generators/migrate-select/generator",
35
+ "schema": "./src/generators/migrate-select/schema.json",
36
+ "description": "Migrate brn-select and hlm-select to use openChange and active descendants"
37
+ },
33
38
  "migrate-core": {
34
39
  "factory": "./src/generators/migrate-core/generator",
35
40
  "schema": "./src/generators/migrate-core/schema.json",
@@ -72,6 +77,11 @@
72
77
  "schema": "./src/generators/migrate-radio/schema.json",
73
78
  "description": "Migrate brn-radio to hlm-radio"
74
79
  },
80
+ "migrate-select": {
81
+ "factory": "./src/generators/migrate-select/compat",
82
+ "schema": "./src/generators/migrate-select/schema.json",
83
+ "description": "Migrate brn-select and hlm-select to use openChange and active descendants"
84
+ },
75
85
  "migrate-core": {
76
86
  "factory": "./src/generators/migrate-scroll-area/compat",
77
87
  "schema": "./src/generators/migrate-core/schema.json",
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@spartan-ng/cli",
3
- "version": "0.0.1-alpha.411",
3
+ "version": "0.0.1-alpha.413",
4
4
  "type": "commonjs",
5
5
  "dependencies": {
6
6
  "@nx/angular": ">=20.0.0",
7
7
  "@nx/devkit": ">=20.0.0",
8
8
  "@nx/js": ">=20.0.0",
9
+ "@phenomnomnominal/tsquery": "^6.1.3",
9
10
  "@schematics/angular": ">=18.0.0",
10
11
  "enquirer": "2.3.6",
11
12
  "jsonc-eslint-parser": "^2.1.0",
@@ -8,6 +8,7 @@ const brn_radio_1 = require("./healthchecks/brn-radio");
8
8
  const core_imports_1 = require("./healthchecks/core-imports");
9
9
  const hlm_icon_1 = require("./healthchecks/hlm-icon");
10
10
  const hlm_scroll_area_1 = require("./healthchecks/hlm-scroll-area");
11
+ const hlm_select_1 = require("./healthchecks/hlm-select");
11
12
  const version_1 = require("./healthchecks/version");
12
13
  const prompt_1 = require("./utils/prompt");
13
14
  const reporter_1 = require("./utils/reporter");
@@ -21,6 +22,7 @@ async function healthcheckGenerator(tree, options) {
21
22
  hlm_icon_1.helmIconHealthcheck,
22
23
  hlm_scroll_area_1.scrollAreaHealthcheck,
23
24
  brn_radio_1.brainRadioHealthcheck,
25
+ hlm_select_1.selectHealthcheck,
24
26
  ];
25
27
  // store all the failed healthchecks that can be fixed
26
28
  const failedReports = [];
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/generators/healthcheck/generator.ts"],"names":[],"mappings":";;AAaA,oDAsCC;AAnDD,uCAAuD;AACvD,iDAAyG;AACzG,gEAAuE;AACvE,wDAAiE;AACjE,8DAAqE;AACrE,sDAA8D;AAC9D,oEAAuE;AACvE,oDAA4D;AAE5D,2CAA4C;AAC5C,+CAA+C;AAC/C,2CAAgD;AAEzC,KAAK,UAAU,oBAAoB,CAAC,IAAU,EAAE,OAAmC;IACzF,eAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAEvC,MAAM,YAAY,GAAkB;QACnC,4BAAkB;QAClB,uCAAuB;QACvB,qCAAsB;QACtB,8BAAmB;QACnB,uCAAqB;QACrB,iCAAqB;KACrB,CAAC;IAEF,sDAAsD;IACtD,MAAM,aAAa,GAAwB,EAAE,CAAC;IAE9C,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAc,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACvD,IAAA,sBAAW,EAAC,MAAM,CAAC,CAAC;QAEpB,IAAI,MAAM,CAAC,MAAM,KAAK,gCAAiB,CAAC,OAAO,EAAE,CAAC;YACjD,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;IACF,CAAC;IAED,iGAAiG;IACjG,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACpC,IAAI,MAAM,CAAC,OAAO,IAAI,IAAA,mCAAoB,EAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;YAChE,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,MAAM,IAAA,mBAAU,EAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;YAE7E,IAAI,GAAG,EAAE,CAAC;gBACT,MAAM,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;QACF,CAAC;IACF,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACzB,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;IACzB,CAAC;AACF,CAAC;AAED,kBAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/generators/healthcheck/generator.ts"],"names":[],"mappings":";;AAcA,oDAuCC;AArDD,uCAAuD;AACvD,iDAAyG;AACzG,gEAAuE;AACvE,wDAAiE;AACjE,8DAAqE;AACrE,sDAA8D;AAC9D,oEAAuE;AACvE,0DAA8D;AAC9D,oDAA4D;AAE5D,2CAA4C;AAC5C,+CAA+C;AAC/C,2CAAgD;AAEzC,KAAK,UAAU,oBAAoB,CAAC,IAAU,EAAE,OAAmC;IACzF,eAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAEvC,MAAM,YAAY,GAAkB;QACnC,4BAAkB;QAClB,uCAAuB;QACvB,qCAAsB;QACtB,8BAAmB;QACnB,uCAAqB;QACrB,iCAAqB;QACrB,8BAAiB;KACjB,CAAC;IAEF,sDAAsD;IACtD,MAAM,aAAa,GAAwB,EAAE,CAAC;IAE9C,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAc,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACvD,IAAA,sBAAW,EAAC,MAAM,CAAC,CAAC;QAEpB,IAAI,MAAM,CAAC,MAAM,KAAK,gCAAiB,CAAC,OAAO,EAAE,CAAC;YACjD,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;IACF,CAAC;IAED,iGAAiG;IACjG,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACpC,IAAI,MAAM,CAAC,OAAO,IAAI,IAAA,mCAAoB,EAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;YAChE,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,MAAM,IAAA,mBAAU,EAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;YAE7E,IAAI,GAAG,EAAE,CAAC;gBACT,MAAM,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;QACF,CAAC;IACF,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACzB,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;IACzB,CAAC;AACF,CAAC;AAED,kBAAe,oBAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Healthcheck } from '../healthchecks';
2
+ export declare const selectHealthcheck: Healthcheck;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.selectHealthcheck = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const devkit_1 = require("@nx/devkit");
6
+ const hlm_class_1 = require("../../../utils/hlm-class");
7
+ const generator_1 = tslib_1.__importDefault(require("../../migrate-select/generator"));
8
+ const healthchecks_1 = require("../healthchecks");
9
+ exports.selectHealthcheck = {
10
+ name: 'Helm Select',
11
+ async detect(tree, failure) {
12
+ (0, devkit_1.visitNotIgnoredFiles)(tree, '/', (file) => {
13
+ // if the file is a .ts or .htlm file, check for helm icons
14
+ if (!file.endsWith('.ts') && !file.endsWith('.html')) {
15
+ return;
16
+ }
17
+ const contents = tree.read(file, 'utf-8');
18
+ if (!contents) {
19
+ return;
20
+ }
21
+ // check if the legacy openedChange event is being used
22
+ if (/<(brn-select|hlm-select)[^>]*\(\s*openedChange\s*\)=/g.test(contents)) {
23
+ failure('Select is using the renamed openedChange event.', healthchecks_1.HealthcheckSeverity.Error, true);
24
+ }
25
+ // check if the legacy focus classes are being used
26
+ if ((0, hlm_class_1.hasHelmClasses)(tree, file, {
27
+ component: 'HlmSelectOptionComponent',
28
+ classes: ['focus:bg-accent', 'focus:text-accent-foreground'],
29
+ })) {
30
+ failure('Select option is using the legacy focus classes.', healthchecks_1.HealthcheckSeverity.Error, true);
31
+ }
32
+ });
33
+ },
34
+ fix: async (tree) => {
35
+ await (0, generator_1.default)(tree, { skipFormat: true });
36
+ return true;
37
+ },
38
+ prompt: 'Would you like to migrate selects?',
39
+ };
40
+ //# sourceMappingURL=hlm-select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hlm-select.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/generators/healthcheck/healthchecks/hlm-select.ts"],"names":[],"mappings":";;;;AAAA,uCAAkD;AAClD,wDAA0D;AAC1D,uFAAoE;AACpE,kDAAmE;AAEtD,QAAA,iBAAiB,GAAgB;IAC7C,IAAI,EAAE,aAAa;IACnB,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO;QACzB,IAAA,6BAAoB,EAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;YACxC,2DAA2D;YAC3D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtD,OAAO;YACR,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAE1C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACf,OAAO;YACR,CAAC;YAED,uDAAuD;YACvD,IAAI,uDAAuD,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5E,OAAO,CAAC,iDAAiD,EAAE,kCAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC7F,CAAC;YAED,mDAAmD;YACnD,IACC,IAAA,0BAAc,EAAC,IAAI,EAAE,IAAI,EAAE;gBAC1B,SAAS,EAAE,0BAA0B;gBACrC,OAAO,EAAE,CAAC,iBAAiB,EAAE,8BAA8B,CAAC;aAC5D,CAAC,EACD,CAAC;gBACF,OAAO,CAAC,kDAAkD,EAAE,kCAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC9F,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IACD,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACnB,MAAM,IAAA,mBAAsB,EAAC,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC;IACb,CAAC;IACD,MAAM,EAAE,oCAAoC;CAC5C,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare const _default: (generatorOptions: import("./schema").MigrateSelectGeneratorSchema) => (tree: any, context: any) => Promise<any>;
2
+ export default _default;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const devkit_1 = require("@nx/devkit");
5
+ const generator_1 = tslib_1.__importDefault(require("./generator"));
6
+ exports.default = (0, devkit_1.convertNxGenerator)(generator_1.default);
7
+ //# sourceMappingURL=compat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compat.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/generators/migrate-select/compat.ts"],"names":[],"mappings":";;;AAAA,uCAAgD;AAChD,oEAAiD;AAEjD,kBAAe,IAAA,2BAAkB,EAAC,mBAAsB,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Tree } from '@nx/devkit';
2
+ import { MigrateSelectGeneratorSchema } from './schema';
3
+ export declare function migrateSelectGenerator(tree: Tree, { skipFormat }: MigrateSelectGeneratorSchema): Promise<void>;
4
+ export default migrateSelectGenerator;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.migrateSelectGenerator = migrateSelectGenerator;
4
+ const devkit_1 = require("@nx/devkit");
5
+ const hlm_class_1 = require("../../utils/hlm-class");
6
+ const visit_files_1 = require("../../utils/visit-files");
7
+ async function migrateSelectGenerator(tree, { skipFormat }) {
8
+ replaceOpenChangeEvent(tree);
9
+ replaceFocusClasses(tree);
10
+ if (!skipFormat) {
11
+ await (0, devkit_1.formatFiles)(tree);
12
+ }
13
+ }
14
+ function replaceOpenChangeEvent(tree) {
15
+ // if the element is `<brn-select`, '<hlm-select' and it has an `(openedChange)` event, we need to replace it with `(openChange)`
16
+ (0, visit_files_1.visitFiles)(tree, '.', (path) => {
17
+ // if this is not an html file or typescript file (inline templates) then skip
18
+ if (!path.endsWith('.html') && !path.endsWith('.ts')) {
19
+ return;
20
+ }
21
+ let content = tree.read(path, 'utf-8');
22
+ if (!content) {
23
+ return;
24
+ }
25
+ // find all the brn-select or hlm-select elements that have an `(openedChange)` event
26
+ content = content.replace(/<(brn-select|hlm-select)[^>]*\(\s*openedChange\s*\)=/g, (match) => match.replace(/\(\s*openedChange\s*\)/, '(openChange)'));
27
+ tree.write(path, content);
28
+ });
29
+ }
30
+ function replaceFocusClasses(tree) {
31
+ // update the hlm classes
32
+ (0, visit_files_1.visitFiles)(tree, '.', (path) => {
33
+ // if this is not a typescript file then skip
34
+ if (!path.endsWith('.ts')) {
35
+ return;
36
+ }
37
+ (0, hlm_class_1.updateHelmClasses)(tree, path, {
38
+ component: 'HlmSelectOptionComponent',
39
+ classesToRemove: ['focus:bg-accent', 'focus:text-accent-foreground'],
40
+ classesToAdd: ['data-[active]:bg-accent', 'data-[active]:text-accent-foreground'],
41
+ });
42
+ });
43
+ }
44
+ exports.default = migrateSelectGenerator;
45
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/generators/migrate-select/generator.ts"],"names":[],"mappings":";;AAKA,wDAOC;AAZD,uCAA+C;AAC/C,qDAA0D;AAC1D,yDAAqD;AAG9C,KAAK,UAAU,sBAAsB,CAAC,IAAU,EAAE,EAAE,UAAU,EAAgC;IACpG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC7B,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAE1B,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;IACzB,CAAC;AACF,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAU;IACzC,iIAAiI;IACjI,IAAA,wBAAU,EAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;QAC9B,8EAA8E;QAC9E,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,OAAO;QACR,CAAC;QAED,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAEvC,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,OAAO;QACR,CAAC;QAED,qFAAqF;QACrF,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,uDAAuD,EAAE,CAAC,KAAK,EAAE,EAAE,CAC5F,KAAK,CAAC,OAAO,CAAC,wBAAwB,EAAE,cAAc,CAAC,CACvD,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAU;IACtC,yBAAyB;IACzB,IAAA,wBAAU,EAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;QAC9B,6CAA6C;QAC7C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO;QACR,CAAC;QAED,IAAA,6BAAiB,EAAC,IAAI,EAAE,IAAI,EAAE;YAC7B,SAAS,EAAE,0BAA0B;YACrC,eAAe,EAAE,CAAC,iBAAiB,EAAE,8BAA8B,CAAC;YACpE,YAAY,EAAE,CAAC,yBAAyB,EAAE,sCAAsC,CAAC;SACjF,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,kBAAe,sBAAsB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export interface MigrateSelectGeneratorSchema {
2
+ skipFormat?: boolean;
3
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "https://json-schema.org/schema",
3
+ "$id": "MigrateSelect",
4
+ "title": "",
5
+ "type": "object",
6
+ "properties": {
7
+ "skipFormat": {
8
+ "type": "boolean",
9
+ "default": false,
10
+ "description": "Skip formatting files"
11
+ }
12
+ },
13
+ "required": []
14
+ }
@@ -34,7 +34,7 @@ export class HlmSelectOptionComponent {
34
34
  public readonly userClass = input<ClassValue>('', { alias: 'class' });
35
35
  protected readonly _computedClass = computed(() =>
36
36
  hlm(
37
- 'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 rtl:flex-reverse rtl:pr-8 rtl:pl-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
37
+ 'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 rtl:flex-reverse rtl:pr-8 rtl:pl-2 text-sm outline-none data-[active]:bg-accent data-[active]:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
38
38
  this.userClass(),
39
39
  ),
40
40
  );
@@ -5,7 +5,7 @@
5
5
  "@angular/core": ">=18.0.0",
6
6
  "@ng-icons/core": ">=29.0.0",
7
7
  "@ng-icons/lucide": ">=29.0.0",
8
- "@spartan-ng/brain": "0.0.1-alpha.411",
8
+ "@spartan-ng/brain": "0.0.1-alpha.413",
9
9
  "@spartan-ng/ui-icon-helm": "0.0.1-alpha.381",
10
10
  "clsx": "^2.1.1"
11
11
  }
@@ -14,7 +14,7 @@
14
14
  "internalName": "ui-alert-helm",
15
15
  "peerDependencies": {
16
16
  "@angular/core": ">=18.0.0",
17
- "@spartan-ng/brain": "0.0.1-alpha.411",
17
+ "@spartan-ng/brain": "0.0.1-alpha.413",
18
18
  "@spartan-ng/ui-icon-helm": "0.0.1-alpha.381",
19
19
  "class-variance-authority": "^0.7.0",
20
20
  "clsx": "^2.1.1"
@@ -24,7 +24,7 @@
24
24
  "internalName": "ui-alert-dialog-helm",
25
25
  "peerDependencies": {
26
26
  "@angular/core": ">=18.0.0",
27
- "@spartan-ng/brain": "0.0.1-alpha.411",
27
+ "@spartan-ng/brain": "0.0.1-alpha.413",
28
28
  "@spartan-ng/ui-button-helm": "0.0.1-alpha.381",
29
29
  "clsx": "^2.1.1"
30
30
  }
@@ -34,7 +34,7 @@
34
34
  "peerDependencies": {
35
35
  "@angular/cdk": ">=18.0.0",
36
36
  "@angular/core": ">=18.0.0",
37
- "@spartan-ng/brain": "0.0.1-alpha.411",
37
+ "@spartan-ng/brain": "0.0.1-alpha.413",
38
38
  "clsx": "^2.1.1"
39
39
  }
40
40
  },
@@ -42,7 +42,7 @@
42
42
  "internalName": "ui-avatar-helm",
43
43
  "peerDependencies": {
44
44
  "@angular/core": ">=18.0.0",
45
- "@spartan-ng/brain": "0.0.1-alpha.411",
45
+ "@spartan-ng/brain": "0.0.1-alpha.413",
46
46
  "class-variance-authority": "^0.7.0",
47
47
  "clsx": "^2.1.1"
48
48
  }
@@ -52,7 +52,7 @@
52
52
  "peerDependencies": {
53
53
  "@angular/cdk": ">=18.0.0",
54
54
  "@angular/core": ">=18.0.0",
55
- "@spartan-ng/brain": "0.0.1-alpha.411",
55
+ "@spartan-ng/brain": "0.0.1-alpha.413",
56
56
  "class-variance-authority": "^0.7.0",
57
57
  "clsx": "^2.1.1"
58
58
  }
@@ -64,7 +64,7 @@
64
64
  "@angular/router": "18.2.5",
65
65
  "@ng-icons/core": ">=29.0.0",
66
66
  "@ng-icons/lucide": ">=29.0.0",
67
- "@spartan-ng/brain": "0.0.1-alpha.411",
67
+ "@spartan-ng/brain": "0.0.1-alpha.413",
68
68
  "@spartan-ng/ui-icon-helm": "0.0.1-alpha.381",
69
69
  "clsx": "^2.1.1"
70
70
  }
@@ -73,7 +73,7 @@
73
73
  "internalName": "ui-button-helm",
74
74
  "peerDependencies": {
75
75
  "@angular/core": ">=18.0.0",
76
- "@spartan-ng/brain": "0.0.1-alpha.411",
76
+ "@spartan-ng/brain": "0.0.1-alpha.413",
77
77
  "class-variance-authority": "^0.7.0",
78
78
  "clsx": "^2.1.1"
79
79
  }
@@ -85,7 +85,7 @@
85
85
  "@angular/core": ">=18.0.0",
86
86
  "@ng-icons/core": ">=29.0.0",
87
87
  "@ng-icons/lucide": ">=29.0.0",
88
- "@spartan-ng/brain": "0.0.1-alpha.411",
88
+ "@spartan-ng/brain": "0.0.1-alpha.413",
89
89
  "@spartan-ng/ui-button-helm": "0.0.1-alpha.381",
90
90
  "@spartan-ng/ui-icon-helm": "0.0.1-alpha.381",
91
91
  "clsx": "^2.1.1"
@@ -95,7 +95,7 @@
95
95
  "internalName": "ui-card-helm",
96
96
  "peerDependencies": {
97
97
  "@angular/core": ">=18.0.0",
98
- "@spartan-ng/brain": "0.0.1-alpha.411",
98
+ "@spartan-ng/brain": "0.0.1-alpha.413",
99
99
  "class-variance-authority": "^0.7.0",
100
100
  "clsx": "^2.1.1"
101
101
  }
@@ -105,7 +105,7 @@
105
105
  "peerDependencies": {
106
106
  "@angular/cdk": ">=18.0.0",
107
107
  "@angular/core": ">=18.0.0",
108
- "@spartan-ng/brain": "0.0.1-alpha.411",
108
+ "@spartan-ng/brain": "0.0.1-alpha.413",
109
109
  "@spartan-ng/ui-button-helm": "0.0.1-alpha.381",
110
110
  "@spartan-ng/ui-icon-helm": "0.0.1-alpha.381",
111
111
  "clsx": "^2.1.1"
@@ -119,7 +119,7 @@
119
119
  "@angular/forms": ">=18.0.0",
120
120
  "@ng-icons/core": ">=29.0.0",
121
121
  "@ng-icons/lucide": ">=29.0.0",
122
- "@spartan-ng/brain": "0.0.1-alpha.411",
122
+ "@spartan-ng/brain": "0.0.1-alpha.413",
123
123
  "@spartan-ng/ui-calendar-helm": "0.0.1-alpha.381",
124
124
  "@spartan-ng/ui-icon-helm": "0.0.1-alpha.381",
125
125
  "@spartan-ng/ui-popover-helm": "0.0.1-alpha.381",
@@ -134,7 +134,7 @@
134
134
  "@angular/core": ">=18.0.0",
135
135
  "@ng-icons/core": ">=29.0.0",
136
136
  "@ng-icons/lucide": ">=29.0.0",
137
- "@spartan-ng/brain": "0.0.1-alpha.411",
137
+ "@spartan-ng/brain": "0.0.1-alpha.413",
138
138
  "@spartan-ng/ui-icon-helm": "0.0.1-alpha.381",
139
139
  "clsx": "^2.1.1"
140
140
  }
@@ -150,7 +150,7 @@
150
150
  "peerDependencies": {
151
151
  "@angular/core": ">=18.0.0",
152
152
  "@angular/forms": ">=18.0.0",
153
- "@spartan-ng/brain": "0.0.1-alpha.411",
153
+ "@spartan-ng/brain": "0.0.1-alpha.413",
154
154
  "class-variance-authority": "^0.7.0",
155
155
  "clsx": "^2.1.1"
156
156
  }
@@ -159,7 +159,7 @@
159
159
  "internalName": "ui-label-helm",
160
160
  "peerDependencies": {
161
161
  "@angular/core": ">=18.0.0",
162
- "@spartan-ng/brain": "0.0.1-alpha.411",
162
+ "@spartan-ng/brain": "0.0.1-alpha.413",
163
163
  "class-variance-authority": "^0.7.0",
164
164
  "clsx": "^2.1.1"
165
165
  }
@@ -170,7 +170,7 @@
170
170
  "@angular/core": ">=18.0.0",
171
171
  "@ng-icons/core": ">=29.0.0",
172
172
  "@ng-icons/lucide": ">=29.0.0",
173
- "@spartan-ng/brain": "0.0.1-alpha.411",
173
+ "@spartan-ng/brain": "0.0.1-alpha.413",
174
174
  "@spartan-ng/ui-icon-helm": "0.0.1-alpha.381",
175
175
  "class-variance-authority": "^0.7.0",
176
176
  "clsx": "^2.1.1"
@@ -180,7 +180,7 @@
180
180
  "internalName": "ui-popover-helm",
181
181
  "peerDependencies": {
182
182
  "@angular/core": ">=18.0.0",
183
- "@spartan-ng/brain": "0.0.1-alpha.411",
183
+ "@spartan-ng/brain": "0.0.1-alpha.413",
184
184
  "clsx": "^2.1.1"
185
185
  }
186
186
  },
@@ -188,7 +188,7 @@
188
188
  "internalName": "ui-progress-helm",
189
189
  "peerDependencies": {
190
190
  "@angular/core": ">=18.0.0",
191
- "@spartan-ng/brain": "0.0.1-alpha.411",
191
+ "@spartan-ng/brain": "0.0.1-alpha.413",
192
192
  "clsx": "^2.1.1"
193
193
  }
194
194
  },
@@ -196,7 +196,7 @@
196
196
  "internalName": "ui-radio-group-helm",
197
197
  "peerDependencies": {
198
198
  "@angular/core": ">=18.0.0",
199
- "@spartan-ng/brain": "0.0.1-alpha.411",
199
+ "@spartan-ng/brain": "0.0.1-alpha.413",
200
200
  "clsx": "^2.1.1"
201
201
  }
202
202
  },
@@ -204,7 +204,7 @@
204
204
  "internalName": "ui-scroll-area-helm",
205
205
  "peerDependencies": {
206
206
  "@angular/core": ">=18.0.0",
207
- "@spartan-ng/brain": "0.0.1-alpha.411",
207
+ "@spartan-ng/brain": "0.0.1-alpha.413",
208
208
  "clsx": "^2.1.1",
209
209
  "ngx-scrollbar": ">=16.0.0"
210
210
  }
@@ -213,7 +213,7 @@
213
213
  "internalName": "ui-separator-helm",
214
214
  "peerDependencies": {
215
215
  "@angular/core": ">=18.0.0",
216
- "@spartan-ng/brain": "0.0.1-alpha.411",
216
+ "@spartan-ng/brain": "0.0.1-alpha.413",
217
217
  "clsx": "^2.1.1"
218
218
  }
219
219
  },
@@ -223,7 +223,7 @@
223
223
  "@angular/core": ">=18.0.0",
224
224
  "@ng-icons/core": ">=29.0.0",
225
225
  "@ng-icons/lucide": ">=29.0.0",
226
- "@spartan-ng/brain": "0.0.1-alpha.411",
226
+ "@spartan-ng/brain": "0.0.1-alpha.413",
227
227
  "@spartan-ng/ui-icon-helm": "0.0.1-alpha.381",
228
228
  "class-variance-authority": "^0.7.0",
229
229
  "clsx": "^2.1.1"
@@ -233,7 +233,7 @@
233
233
  "internalName": "ui-skeleton-helm",
234
234
  "peerDependencies": {
235
235
  "@angular/core": ">=18.0.0",
236
- "@spartan-ng/brain": "0.0.1-alpha.411",
236
+ "@spartan-ng/brain": "0.0.1-alpha.413",
237
237
  "clsx": "^2.1.1"
238
238
  }
239
239
  },
@@ -241,7 +241,7 @@
241
241
  "internalName": "ui-spinner-helm",
242
242
  "peerDependencies": {
243
243
  "@angular/core": ">=18.0.0",
244
- "@spartan-ng/brain": "0.0.1-alpha.411",
244
+ "@spartan-ng/brain": "0.0.1-alpha.413",
245
245
  "class-variance-authority": "^0.7.0",
246
246
  "clsx": "^2.1.1"
247
247
  }
@@ -252,7 +252,7 @@
252
252
  "@angular/cdk": ">=18.0.0",
253
253
  "@angular/core": ">=18.0.0",
254
254
  "@angular/forms": ">=18.0.0",
255
- "@spartan-ng/brain": "0.0.1-alpha.411",
255
+ "@spartan-ng/brain": "0.0.1-alpha.413",
256
256
  "clsx": "^2.1.1"
257
257
  }
258
258
  },
@@ -263,7 +263,7 @@
263
263
  "@angular/core": ">=18.0.0",
264
264
  "@ng-icons/core": ">=29.0.0",
265
265
  "@ng-icons/lucide": ">=29.0.0",
266
- "@spartan-ng/brain": "0.0.1-alpha.411",
266
+ "@spartan-ng/brain": "0.0.1-alpha.413",
267
267
  "@spartan-ng/ui-button-helm": "0.0.1-alpha.381",
268
268
  "@spartan-ng/ui-icon-helm": "0.0.1-alpha.381",
269
269
  "class-variance-authority": "^0.7.0",
@@ -274,7 +274,7 @@
274
274
  "internalName": "ui-toggle-helm",
275
275
  "peerDependencies": {
276
276
  "@angular/core": ">=18.0.0",
277
- "@spartan-ng/brain": "0.0.1-alpha.411",
277
+ "@spartan-ng/brain": "0.0.1-alpha.413",
278
278
  "class-variance-authority": "^0.7.0",
279
279
  "clsx": "^2.1.1"
280
280
  }
@@ -283,7 +283,7 @@
283
283
  "internalName": "ui-typography-helm",
284
284
  "peerDependencies": {
285
285
  "@angular/core": ">=18.0.0",
286
- "@spartan-ng/brain": "0.0.1-alpha.411",
286
+ "@spartan-ng/brain": "0.0.1-alpha.413",
287
287
  "clsx": "^2.1.1"
288
288
  }
289
289
  },
@@ -292,7 +292,7 @@
292
292
  "peerDependencies": {
293
293
  "@angular/common": ">=18.0.0",
294
294
  "@angular/core": ">=18.0.0",
295
- "@spartan-ng/brain": "0.0.1-alpha.411",
295
+ "@spartan-ng/brain": "0.0.1-alpha.413",
296
296
  "clsx": "^2.1.1"
297
297
  }
298
298
  },
@@ -300,7 +300,7 @@
300
300
  "internalName": "ui-hover-card-helm",
301
301
  "peerDependencies": {
302
302
  "@angular/core": ">=18.0.0",
303
- "@spartan-ng/brain": "0.0.1-alpha.411",
303
+ "@spartan-ng/brain": "0.0.1-alpha.413",
304
304
  "clsx": "^2.1.1"
305
305
  }
306
306
  },
@@ -311,7 +311,7 @@
311
311
  "@angular/forms": ">=18.0.0",
312
312
  "@ng-icons/core": ">=29.0.0",
313
313
  "@ng-icons/lucide": ">=29.0.0",
314
- "@spartan-ng/brain": "0.0.1-alpha.411",
314
+ "@spartan-ng/brain": "0.0.1-alpha.413",
315
315
  "@spartan-ng/ui-icon-helm": "0.0.1-alpha.381",
316
316
  "clsx": "^2.1.1"
317
317
  }
@@ -320,7 +320,7 @@
320
320
  "internalName": "ui-tooltip-helm",
321
321
  "peerDependencies": {
322
322
  "@angular/core": ">=18.0.0",
323
- "@spartan-ng/brain": "0.0.1-alpha.411"
323
+ "@spartan-ng/brain": "0.0.1-alpha.413"
324
324
  }
325
325
  },
326
326
  "pagination": {
@@ -332,7 +332,7 @@
332
332
  "@angular/router": ">=18.0.0",
333
333
  "@ng-icons/core": ">=29.0.0",
334
334
  "@ng-icons/lucide": ">=29.0.0",
335
- "@spartan-ng/brain": "0.0.1-alpha.411",
335
+ "@spartan-ng/brain": "0.0.1-alpha.413",
336
336
  "@spartan-ng/ui-button-helm": "0.0.1-alpha.381",
337
337
  "@spartan-ng/ui-icon-helm": "0.0.1-alpha.381",
338
338
  "@spartan-ng/ui-select-helm": "0.0.1-alpha.381",
@@ -346,7 +346,7 @@
346
346
  "@angular/core": ">=18.0.0",
347
347
  "@ng-icons/core": ">=29.0.0",
348
348
  "@ng-icons/lucide": ">=29.0.0",
349
- "@spartan-ng/brain": "0.0.1-alpha.411",
349
+ "@spartan-ng/brain": "0.0.1-alpha.413",
350
350
  "@spartan-ng/ui-button-helm": "0.0.1-alpha.381",
351
351
  "@spartan-ng/ui-icon-helm": "0.0.1-alpha.381",
352
352
  "clsx": "^2.1.1",
@@ -359,7 +359,7 @@
359
359
  "@angular/core": ">=18.0.0",
360
360
  "@ng-icons/core": ">=29.0.0",
361
361
  "@ng-icons/lucide": ">=29.0.0",
362
- "@spartan-ng/brain": "0.0.1-alpha.411",
362
+ "@spartan-ng/brain": "0.0.1-alpha.413",
363
363
  "@spartan-ng/ui-icon-helm": "0.0.1-alpha.381",
364
364
  "class-variance-authority": "^0.7.0",
365
365
  "clsx": "^2.1.1"
@@ -380,14 +380,14 @@
380
380
  "internalName": "ui-form-field-helm",
381
381
  "peerDependencies": {
382
382
  "@angular/core": ">=18.0.0",
383
- "@spartan-ng/brain": "0.0.1-alpha.411"
383
+ "@spartan-ng/brain": "0.0.1-alpha.413"
384
384
  }
385
385
  },
386
386
  "slider": {
387
387
  "internalName": "ui-slider-helm",
388
388
  "peerDependencies": {
389
389
  "@angular/core": ">=18.0.0",
390
- "@spartan-ng/brain": "0.0.1-alpha.411",
390
+ "@spartan-ng/brain": "0.0.1-alpha.413",
391
391
  "clsx": "^2.1.1"
392
392
  }
393
393
  }
@@ -0,0 +1,28 @@
1
+ import { Tree } from '@nx/devkit';
2
+ export declare function hasHelmClasses(tree: Tree, path: string, { component, classes }: HasHelmClassesSchema): boolean;
3
+ interface HasHelmClassesSchema {
4
+ /**
5
+ * The name of the components that need to be checked.
6
+ */
7
+ component: string;
8
+ /**
9
+ * The classes that need to be checked for.
10
+ */
11
+ classes: string[];
12
+ }
13
+ export declare function updateHelmClasses(tree: Tree, path: string, { component, classesToAdd, classesToRemove }: UpdateHelmClassesSchema): string;
14
+ interface UpdateHelmClassesSchema {
15
+ /**
16
+ * The name of the components that need to be updated.
17
+ */
18
+ component: string;
19
+ /**
20
+ * The classes that need to be removed from the components.
21
+ */
22
+ classesToRemove: string[];
23
+ /**
24
+ * The classes that need to be added to the components.
25
+ */
26
+ classesToAdd: string[];
27
+ }
28
+ export {};
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasHelmClasses = hasHelmClasses;
4
+ exports.updateHelmClasses = updateHelmClasses;
5
+ const tsquery_1 = require("@phenomnomnominal/tsquery");
6
+ function hasHelmClasses(tree, path, { component, classes }) {
7
+ const content = tree.read(path, 'utf-8');
8
+ if (!content) {
9
+ return false;
10
+ }
11
+ const ast = tsquery_1.tsquery.ast(content);
12
+ // find the component class if it exists
13
+ const componentClass = tsquery_1.tsquery.query(ast, `ClassDeclaration:has(Identifier[name="${component}"])`);
14
+ if (componentClass.length === 0) {
15
+ return false;
16
+ }
17
+ // try and find the _computedClass property string
18
+ const computedClass = tsquery_1.tsquery.query(componentClass[0], `PropertyDeclaration:has(Identifier[name="_computedClass"]) CallExpression CallExpression:has(Identifier[name="hlm"]) StringLiteral`);
19
+ if (computedClass.length === 0) {
20
+ return false;
21
+ }
22
+ // get the computed class value
23
+ const classesString = computedClass[0].getText();
24
+ const classesArray = classesString.split(' ');
25
+ // check if the classes exist
26
+ return classes.some((c) => classesArray.includes(c));
27
+ }
28
+ function updateHelmClasses(tree, path, { component, classesToAdd, classesToRemove }) {
29
+ const content = tree.read(path, 'utf-8');
30
+ if (!content) {
31
+ return;
32
+ }
33
+ const ast = tsquery_1.tsquery.ast(content);
34
+ // find the component class if it exists
35
+ const componentClass = tsquery_1.tsquery.query(ast, `ClassDeclaration:has(Identifier[name="${component}"])`);
36
+ if (componentClass.length === 0) {
37
+ return;
38
+ }
39
+ // try and find the _computedClass property string
40
+ const computedClass = tsquery_1.tsquery.query(componentClass[0], `PropertyDeclaration:has(Identifier[name="_computedClass"]) CallExpression CallExpression:has(Identifier[name="hlm"]) StringLiteral`);
41
+ if (computedClass.length === 0) {
42
+ return;
43
+ }
44
+ // get the computed class value
45
+ const classes = computedClass[0].getText();
46
+ let modifiedClasses = classes.split(' ');
47
+ // remove the classes that need to be removed
48
+ modifiedClasses = modifiedClasses.filter((c) => !classesToRemove.includes(c));
49
+ // add the classes that need to be added
50
+ modifiedClasses = modifiedClasses.concat(classesToAdd);
51
+ // update the classes
52
+ const updatedClasses = modifiedClasses.join(' ');
53
+ // replace the original classes with the updated classes
54
+ const updatedContent = content.replace(classes, updatedClasses);
55
+ tree.write(path, updatedContent);
56
+ }
57
+ //# sourceMappingURL=hlm-class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hlm-class.js","sourceRoot":"","sources":["../../../../../libs/cli/src/utils/hlm-class.ts"],"names":[],"mappings":";;AAGA,wCAgCC;AAaD,8CA+CC;AA9FD,uDAAoD;AAEpD,SAAgB,cAAc,CAAC,IAAU,EAAE,IAAY,EAAE,EAAE,SAAS,EAAE,OAAO,EAAwB;IACpG,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAEzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,KAAK,CAAC;IACd,CAAC;IAED,MAAM,GAAG,GAAG,iBAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAEjC,wCAAwC;IACxC,MAAM,cAAc,GAAG,iBAAO,CAAC,KAAK,CAAC,GAAG,EAAE,yCAAyC,SAAS,KAAK,CAAC,CAAC;IAEnG,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACd,CAAC;IAED,kDAAkD;IAClD,MAAM,aAAa,GAAG,iBAAO,CAAC,KAAK,CAClC,cAAc,CAAC,CAAC,CAAC,EACjB,oIAAoI,CACpI,CAAC;IAEF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACd,CAAC;IAED,+BAA+B;IAC/B,MAAM,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACjD,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE9C,6BAA6B;IAC7B,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAaD,SAAgB,iBAAiB,CAChC,IAAU,EACV,IAAY,EACZ,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAA2B;IAErE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAEzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO;IACR,CAAC;IAED,MAAM,GAAG,GAAG,iBAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAEjC,wCAAwC;IACxC,MAAM,cAAc,GAAG,iBAAO,CAAC,KAAK,CAAC,GAAG,EAAE,yCAAyC,SAAS,KAAK,CAAC,CAAC;IAEnG,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO;IACR,CAAC;IAED,kDAAkD;IAClD,MAAM,aAAa,GAAG,iBAAO,CAAC,KAAK,CAClC,cAAc,CAAC,CAAC,CAAC,EACjB,oIAAoI,CACpI,CAAC;IAEF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO;IACR,CAAC;IAED,+BAA+B;IAC/B,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC3C,IAAI,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEzC,6CAA6C;IAC7C,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9E,wCAAwC;IACxC,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAEvD,qBAAqB;IACrB,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEjD,wDAAwD;IACxD,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAEhE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AAClC,CAAC"}