@clr/angular 18.0.0-beta.1 → 18.0.0-beta.11

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.
Files changed (132) hide show
  1. package/fesm2022/clr-angular-accordion.mjs +1 -1
  2. package/fesm2022/clr-angular-accordion.mjs.map +1 -1
  3. package/fesm2022/clr-angular-button.mjs +6 -6
  4. package/fesm2022/clr-angular-button.mjs.map +1 -1
  5. package/fesm2022/clr-angular-data-datagrid.mjs +45 -35
  6. package/fesm2022/clr-angular-data-datagrid.mjs.map +1 -1
  7. package/fesm2022/clr-angular-data-tree-view.mjs +3 -3
  8. package/fesm2022/clr-angular-data-tree-view.mjs.map +1 -1
  9. package/fesm2022/clr-angular-data.mjs +11 -9116
  10. package/fesm2022/clr-angular-data.mjs.map +1 -1
  11. package/fesm2022/clr-angular-emphasis-alert.mjs +2 -2
  12. package/fesm2022/clr-angular-emphasis-alert.mjs.map +1 -1
  13. package/fesm2022/clr-angular-emphasis.mjs +12 -778
  14. package/fesm2022/clr-angular-emphasis.mjs.map +1 -1
  15. package/fesm2022/clr-angular-forms-checkbox.mjs +13 -44
  16. package/fesm2022/clr-angular-forms-checkbox.mjs.map +1 -1
  17. package/fesm2022/clr-angular-forms-combobox.mjs +420 -90
  18. package/fesm2022/clr-angular-forms-combobox.mjs.map +1 -1
  19. package/fesm2022/clr-angular-forms-common.mjs +62 -57
  20. package/fesm2022/clr-angular-forms-common.mjs.map +1 -1
  21. package/fesm2022/clr-angular-forms-datalist.mjs +2 -14
  22. package/fesm2022/clr-angular-forms-datalist.mjs.map +1 -1
  23. package/fesm2022/clr-angular-forms-datepicker.mjs +20 -28
  24. package/fesm2022/clr-angular-forms-datepicker.mjs.map +1 -1
  25. package/fesm2022/clr-angular-forms-file-input.mjs +78 -62
  26. package/fesm2022/clr-angular-forms-file-input.mjs.map +1 -1
  27. package/fesm2022/clr-angular-forms-input.mjs +4 -18
  28. package/fesm2022/clr-angular-forms-input.mjs.map +1 -1
  29. package/fesm2022/clr-angular-forms-number-input.mjs +2 -14
  30. package/fesm2022/clr-angular-forms-number-input.mjs.map +1 -1
  31. package/fesm2022/clr-angular-forms-password.mjs +2 -14
  32. package/fesm2022/clr-angular-forms-password.mjs.map +1 -1
  33. package/fesm2022/clr-angular-forms-radio.mjs +13 -44
  34. package/fesm2022/clr-angular-forms-radio.mjs.map +1 -1
  35. package/fesm2022/clr-angular-forms-range.mjs +3 -16
  36. package/fesm2022/clr-angular-forms-range.mjs.map +1 -1
  37. package/fesm2022/clr-angular-forms-select.mjs +3 -16
  38. package/fesm2022/clr-angular-forms-select.mjs.map +1 -1
  39. package/fesm2022/clr-angular-forms-textarea.mjs +4 -17
  40. package/fesm2022/clr-angular-forms-textarea.mjs.map +1 -1
  41. package/fesm2022/clr-angular-forms.mjs +68 -8560
  42. package/fesm2022/clr-angular-forms.mjs.map +1 -1
  43. package/fesm2022/clr-angular-icon.mjs +10 -0
  44. package/fesm2022/clr-angular-icon.mjs.map +1 -1
  45. package/fesm2022/clr-angular-layout-nav.mjs +27 -25
  46. package/fesm2022/clr-angular-layout-nav.mjs.map +1 -1
  47. package/fesm2022/clr-angular-layout-tabs.mjs +1 -1
  48. package/fesm2022/clr-angular-layout-tabs.mjs.map +1 -1
  49. package/fesm2022/clr-angular-layout.mjs +15 -2057
  50. package/fesm2022/clr-angular-layout.mjs.map +1 -1
  51. package/fesm2022/clr-angular-modal.mjs +4 -5
  52. package/fesm2022/clr-angular-modal.mjs.map +1 -1
  53. package/fesm2022/clr-angular-popover-common.mjs +151 -85
  54. package/fesm2022/clr-angular-popover-common.mjs.map +1 -1
  55. package/fesm2022/clr-angular-popover-dropdown.mjs +7 -4
  56. package/fesm2022/clr-angular-popover-dropdown.mjs.map +1 -1
  57. package/fesm2022/clr-angular-popover-signpost.mjs +30 -15
  58. package/fesm2022/clr-angular-popover-signpost.mjs.map +1 -1
  59. package/fesm2022/clr-angular-popover-tooltip.mjs +7 -7
  60. package/fesm2022/clr-angular-popover-tooltip.mjs.map +1 -1
  61. package/fesm2022/clr-angular-popover.mjs +12 -2242
  62. package/fesm2022/clr-angular-popover.mjs.map +1 -1
  63. package/fesm2022/clr-angular-stepper.mjs +5 -5
  64. package/fesm2022/clr-angular-stepper.mjs.map +1 -1
  65. package/fesm2022/clr-angular-utils.mjs +20 -485
  66. package/fesm2022/clr-angular-utils.mjs.map +1 -1
  67. package/fesm2022/clr-angular-wizard.mjs +434 -223
  68. package/fesm2022/clr-angular-wizard.mjs.map +1 -1
  69. package/fesm2022/clr-angular.mjs +94 -38740
  70. package/fesm2022/clr-angular.mjs.map +1 -1
  71. package/package.json +10 -5
  72. package/popover/common/README.md +14 -12
  73. package/schematics/collection.json +14 -0
  74. package/schematics/ng-update/index.d.ts +2 -0
  75. package/schematics/ng-update/index.js +69 -0
  76. package/schematics/ng-update/index.js.map +1 -0
  77. package/schematics/ng-update/migrations/css-migration.d.ts +6 -0
  78. package/schematics/ng-update/migrations/css-migration.js +177 -0
  79. package/schematics/ng-update/migrations/css-migration.js.map +1 -0
  80. package/schematics/ng-update/migrations/import-migration.d.ts +4 -0
  81. package/schematics/ng-update/migrations/import-migration.js +187 -0
  82. package/schematics/ng-update/migrations/import-migration.js.map +1 -0
  83. package/schematics/ng-update/migrations/template-migration.d.ts +6 -0
  84. package/schematics/ng-update/migrations/template-migration.js +261 -0
  85. package/schematics/ng-update/migrations/template-migration.js.map +1 -0
  86. package/schematics/ng-update/replacements/css-replacements.d.ts +17 -0
  87. package/schematics/ng-update/replacements/css-replacements.js +74 -0
  88. package/schematics/ng-update/replacements/css-replacements.js.map +1 -0
  89. package/schematics/ng-update/replacements/import-replacements.d.ts +13 -0
  90. package/schematics/ng-update/replacements/import-replacements.js +108 -0
  91. package/schematics/ng-update/replacements/import-replacements.js.map +1 -0
  92. package/schematics/ng-update/replacements/symbol-replacements.d.ts +12 -0
  93. package/schematics/ng-update/replacements/symbol-replacements.js +67 -0
  94. package/schematics/ng-update/replacements/symbol-replacements.js.map +1 -0
  95. package/schematics/ng-update/replacements/template-replacements.d.ts +19 -0
  96. package/schematics/ng-update/replacements/template-replacements.js +57 -0
  97. package/schematics/ng-update/replacements/template-replacements.js.map +1 -0
  98. package/schematics/ng-update/tests/test-helpers.d.ts +6 -0
  99. package/schematics/ng-update/tests/test-helpers.js +34 -0
  100. package/schematics/ng-update/tests/test-helpers.js.map +1 -0
  101. package/schematics/ng-update/utils/file-visitor.d.ts +8 -0
  102. package/schematics/ng-update/utils/file-visitor.js +44 -0
  103. package/schematics/ng-update/utils/file-visitor.js.map +1 -0
  104. package/schematics/ng-update/utils/regexp-utils.d.ts +16 -0
  105. package/schematics/ng-update/utils/regexp-utils.js +34 -0
  106. package/schematics/ng-update/utils/regexp-utils.js.map +1 -0
  107. package/schematics/vitest.config.d.ts +2 -0
  108. package/schematics/vitest.config.js +17 -0
  109. package/schematics/vitest.config.js.map +1 -0
  110. package/types/clr-angular-accordion.d.ts +1 -1
  111. package/types/clr-angular-button.d.ts +1 -1
  112. package/types/clr-angular-data-datagrid.d.ts +23 -33
  113. package/types/clr-angular-data-tree-view.d.ts +10 -1
  114. package/types/clr-angular-data.d.ts +4 -2136
  115. package/types/clr-angular-emphasis.d.ts +4 -220
  116. package/types/clr-angular-forms-combobox.d.ts +64 -11
  117. package/types/clr-angular-forms-common.d.ts +9 -9
  118. package/types/clr-angular-forms-datepicker.d.ts +8 -1
  119. package/types/clr-angular-forms-file-input.d.ts +6 -3
  120. package/types/clr-angular-forms.d.ts +26 -2062
  121. package/types/clr-angular-layout-nav.d.ts +6 -2
  122. package/types/clr-angular-layout-tabs.d.ts +1 -1
  123. package/types/clr-angular-layout.d.ts +6 -463
  124. package/types/clr-angular-popover-common.d.ts +38 -13
  125. package/types/clr-angular-popover-dropdown.d.ts +2 -1
  126. package/types/clr-angular-popover-signpost.d.ts +15 -7
  127. package/types/clr-angular-popover-tooltip.d.ts +1 -1
  128. package/types/clr-angular-popover.d.ts +7 -559
  129. package/types/clr-angular-stepper.d.ts +1 -1
  130. package/types/clr-angular-utils.d.ts +13 -175
  131. package/types/clr-angular-wizard.d.ts +92 -35
  132. package/types/clr-angular.d.ts +22 -10238
package/package.json CHANGED
@@ -17,11 +17,15 @@
17
17
  "bugs": {
18
18
  "url": "https://github.com/vmware-clarity/ng-clarity/issues"
19
19
  },
20
+ "schematics": "./schematics/collection.json",
21
+ "ng-update": {
22
+ "migrations": "./schematics/collection.json"
23
+ },
20
24
  "peerDependencies": {
21
- "@angular/cdk": "^21",
22
- "@angular/common": "^21",
23
- "@angular/core": "^21",
24
- "@clr/ui": "18.0.0-beta.1"
25
+ "@angular/cdk": ">= 21.1.0",
26
+ "@angular/common": ">= 21.1.0",
27
+ "@angular/core": ">= 21.1.0",
28
+ "@clr/ui": "18.0.0-beta.11"
25
29
  },
26
30
  "module": "fesm2022/clr-angular.mjs",
27
31
  "typings": "types/clr-angular.d.ts",
@@ -223,8 +227,9 @@
223
227
  }
224
228
  },
225
229
  "sideEffects": false,
230
+ "type": "module",
226
231
  "dependencies": {
227
232
  "tslib": "^2.3.0"
228
233
  },
229
- "version": "18.0.0-beta.1"
234
+ "version": "18.0.0-beta.11"
230
235
  }
@@ -25,10 +25,12 @@ The service is responsible for:
25
25
  - **`toggleWithEvent(event: any)`**: A helper method used by triggers. It toggles the `open` state, stores the triggering event (to prevent conflicts like "click outside" closing immediately), and prevents default scrolling behavior for arrow keys.
26
26
  - **`openEvent`**: Stores the specific browser event that triggered the opening of the popover.
27
27
 
28
- - **Focus & Anchor Management**:
29
- - **`anchorElementRef`**: Holds the `ElementRef` of the anchor/trigger element. This is used by the CDK to calculate where the overlay should appear.
28
+ - **Focus & Origin Management**:
29
+ - **`origin`**: Holds the `FlexibleConnectedPositionStrategyOrigin` — either an `ElementRef` (trigger element) or a `ClrPopoverPoint` (`{ x, y }` coordinate). This is used by the CDK to calculate where the overlay should appear.
30
+ - **`originElement`**: Convenience getter that returns the origin as `ElementRef<HTMLElement>` when element-based, or `null` when point-based.
31
+ - **`originPoint`**: Convenience getter that returns the origin as `ClrPopoverPoint` when point-based, or `null` when element-based.
30
32
  - **`closeButtonRef`**: Holds the `ElementRef` of the internal close button (if applicable).
31
- - **`focusAnchor()`**: A utility method to return focus to the anchor element (e.g., when the menu closes), ensuring accessibility compliance.
33
+ - **`focusOrigin()`**: A utility method to return focus to the origin element (e.g., when the menu closes), ensuring accessibility compliance. No-op for point-based origins.
32
34
  - **`focusCloseButton()`**: Moves focus to the close button inside the content when appropriate.
33
35
 
34
36
  - **Reactive Streams**:
@@ -38,10 +40,10 @@ The service is responsible for:
38
40
 
39
41
  ### Directives
40
42
 
41
- 1. **`[clrPopoverAnchor]`**:
43
+ 1. **`[clrPopoverOrigin]`**:
42
44
 
43
- - Used on the element that serves as the reference point for positioning (the anchor).
44
- - Passes an `ElementRef` to the service, which is used for focus management and positioning calculations.
45
+ - Used on the element that serves as the reference point for positioning.
46
+ - Passes an `ElementRef` to the service as the `origin`, which is used for focus management and positioning calculations.
45
47
 
46
48
  2. **`*clrPopoverContent`**:
47
49
 
@@ -52,7 +54,7 @@ The service is responsible for:
52
54
  3. **`[clrPopoverCloseButton]`**:
53
55
 
54
56
  - Should only be used inside popover content containers.
55
- - Calls the toggle method on the service and restores focus to the anchor element.
57
+ - Calls the toggle method on the service and restores focus to the origin element.
56
58
 
57
59
  4. **`[clrPopoverOpenCloseButton]`**:
58
60
 
@@ -66,7 +68,7 @@ The `*clrPopoverContent` directive is the "workhorse" of the utility. It accepts
66
68
  - **`clrPopoverContent`** (boolean):
67
69
  - Controls the open/closed state of the popover. When true, the overlay is created and attached; when false, it is detached.
68
70
  - **`clrPopoverContentAt`** (`ClrPopoverPosition | ConnectedPosition`):
69
- - Defines the preferred position of the content relative to the anchor (e.g., `top-right`, `bottom-left`). It sets the `preferredPosition` for the CDK overlay.
71
+ - Defines the preferred position of the content relative to the origin (e.g., `top-right`, `bottom-left`). It sets the `preferredPosition` for the CDK overlay.
70
72
  - **`clrPopoverContentAvailablePositions`** (`ConnectedPosition[]`):
71
73
  - A prioritized list of fallback positions the overlay can attempt to use if the preferred position does not fit within the viewport.
72
74
  - **`clrPopoverContentType`** (`ClrPopoverType`):
@@ -79,8 +81,8 @@ The `*clrPopoverContent` directive is the "workhorse" of the utility. It accepts
79
81
  ## Enums
80
82
 
81
83
  1. **`ClrPopoverType`**: Describes the popover variation: `SIGNPOST`, `TOOLTIP`, `DROPDOWN`, and `DEFAULT`.
82
- 2. **`ClrPopoverPosition`**: Describes the popover position relative to the anchor (e.g., `top-left`, `bottom-right`).
83
- 3. **`ClrPosition`**: Describes the specific point of contact on both the anchor and content elements.
84
+ 2. **`ClrPopoverPosition`**: Describes the popover position relative to the origin (e.g., `top-left`, `bottom-right`).
85
+ 3. **`ClrPosition`**: Describes the specific point of contact on both the origin and content elements.
84
86
 
85
87
  ---
86
88
 
@@ -89,8 +91,8 @@ The `*clrPopoverContent` directive is the "workhorse" of the utility. It accepts
89
91
  To use the popover utility, a host component must provide the `ClrPopoverService`. Components generally provide a `ClrPopoverPosition` via the `at` input to describe the preferred content position.
90
92
 
91
93
  ```html
92
- <button class="btn" clrPopoverOpenCloseButton clrPopoverAnchor [attr.aria-owns]="popoverId">
93
- <cds-icon shape="home"></cds-icon> Popover Anchor
94
+ <button class="btn" clrPopoverOpenCloseButton clrPopoverOrigin [attr.aria-owns]="popoverId">
95
+ <cds-icon shape="home"></cds-icon> Popover Origin
94
96
  </button>
95
97
  <div
96
98
  [id]="popoverId"
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "../../../node_modules/@angular-devkit/schematics/collection-schema.json",
3
+ "schematics": {
4
+ "ng-update": {
5
+ "version": "18.0.0",
6
+ "description": "Migrates @clr/angular from v17 to v18",
7
+ "factory": "./ng-update/index#migrate"
8
+ },
9
+ "migrate-v18": {
10
+ "description": "Applies automated @clr/angular v17→v18 source migrations (templates, imports, CSS). Run with: ng generate @clr/angular:migrate-v18",
11
+ "factory": "./ng-update/index#migrate"
12
+ }
13
+ }
14
+ }
@@ -0,0 +1,2 @@
1
+ import { Rule } from '@angular-devkit/schematics';
2
+ export declare function migrate(): Rule;
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
4
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
5
+ * This software is released under MIT license.
6
+ * The full license information can be found in LICENSE in the root directory of this project.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.migrate = migrate;
10
+ const schematics_1 = require("@angular-devkit/schematics");
11
+ const css_migration_1 = require("./migrations/css-migration");
12
+ const import_migration_1 = require("./migrations/import-migration");
13
+ const template_migration_1 = require("./migrations/template-migration");
14
+ const file_visitor_1 = require("./utils/file-visitor");
15
+ /**
16
+ * All candidate strings that may appear in .ts source files.
17
+ * Used as a fast-path pre-check to skip files that need no migration.
18
+ */
19
+ const TS_CANDIDATES = [
20
+ ...import_migration_1.IMPORT_MIGRATION_CANDIDATES,
21
+ ...template_migration_1.TEMPLATE_MIGRATION_INLINE_CANDIDATES,
22
+ ...css_migration_1.CSS_MIGRATION_INLINE_CANDIDATES,
23
+ ];
24
+ /**
25
+ * Single-pass migration for TypeScript source files.
26
+ *
27
+ * Reads each .ts file exactly once, applies import, inline-template, and
28
+ * inline-style transforms in sequence, then writes it if changed.
29
+ * This is more efficient than visiting .ts files separately in each migration
30
+ * because each file is read and written at most once.
31
+ */
32
+ function migrateTypeScriptFiles() {
33
+ return (tree, context) => {
34
+ context.logger.info(' Migrating TypeScript files (imports, inline templates, inline styles)');
35
+ let scanCount = 0;
36
+ let updateCount = 0;
37
+ (0, file_visitor_1.visitFiles)(tree, '**/*.ts', filePath => {
38
+ scanCount++;
39
+ const content = tree.read(filePath);
40
+ if (!content) {
41
+ return;
42
+ }
43
+ const original = content.toString('utf-8');
44
+ // Fast-path: skip entirely if no candidate string is present anywhere.
45
+ if (!TS_CANDIDATES.some(c => original.includes(c))) {
46
+ return;
47
+ }
48
+ let text = original;
49
+ text = (0, import_migration_1.transformImports)(text);
50
+ text = (0, template_migration_1.transformInlineTemplates)(text);
51
+ text = (0, css_migration_1.transformInlineStyles)(text);
52
+ if (text !== original) {
53
+ tree.overwrite(filePath, text);
54
+ updateCount++;
55
+ context.logger.info(` UPDATE ${filePath}`);
56
+ }
57
+ });
58
+ context.logger.info(` ${updateCount} of ${scanCount} file(s) updated.`);
59
+ };
60
+ }
61
+ function migrate() {
62
+ return (tree, context) => {
63
+ context.logger.info('');
64
+ context.logger.info('Running @clr/angular v18 migration...');
65
+ context.logger.info('');
66
+ return (0, schematics_1.chain)([migrateTypeScriptFiles(), (0, template_migration_1.migrateTemplates)(), (0, css_migration_1.migrateCssProperties)()])(tree, context);
67
+ };
68
+ }
69
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../projects/angular/schematics/ng-update/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAyEH,0BAQC;AA/ED,2DAAiF;AAEjF,8DAIoC;AACpC,oEAA8F;AAC9F,wEAIyC;AACzC,uDAAkD;AAElD;;;GAGG;AACH,MAAM,aAAa,GAAsB;IACvC,GAAG,8CAA2B;IAC9B,GAAG,yDAAoC;IACvC,GAAG,+CAA+B;CACnC,CAAC;AAEF;;;;;;;GAOG;AACH,SAAS,sBAAsB;IAC7B,OAAO,CAAC,IAAU,EAAE,OAAyB,EAAE,EAAE;QAC/C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;QAE/F,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,WAAW,GAAG,CAAC,CAAC;QAEpB,IAAA,yBAAU,EAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE;YACrC,SAAS,EAAE,CAAC;YAEZ,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO;YACT,CAAC;YAED,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAE3C,uEAAuE;YACvE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnD,OAAO;YACT,CAAC;YAED,IAAI,IAAI,GAAG,QAAQ,CAAC;YACpB,IAAI,GAAG,IAAA,mCAAgB,EAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,GAAG,IAAA,6CAAwB,EAAC,IAAI,CAAC,CAAC;YACtC,IAAI,GAAG,IAAA,qCAAqB,EAAC,IAAI,CAAC,CAAC;YAEnC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAC/B,WAAW,EAAE,CAAC;gBACd,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,QAAQ,EAAE,CAAC,CAAC;YAChD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,WAAW,OAAO,SAAS,mBAAmB,CAAC,CAAC;IAC3E,CAAC,CAAC;AACJ,CAAC;AAED,SAAgB,OAAO;IACrB,OAAO,CAAC,IAAU,EAAE,OAAyB,EAAE,EAAE;QAC/C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QAC7D,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAExB,OAAO,IAAA,kBAAK,EAAC,CAAC,sBAAsB,EAAE,EAAE,IAAA,qCAAgB,GAAE,EAAE,IAAA,oCAAoB,GAAE,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtG,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Rule } from '@angular-devkit/schematics';
2
+ export declare const CSS_MIGRATION_CANDIDATES: readonly string[];
3
+ export declare const CSS_MIGRATION_INLINE_CANDIDATES: readonly string[];
4
+ export declare function transformInlineStyles(text: string): string;
5
+ export declare function migrateCssProperties(): Rule;
6
+ export declare function applyStyleTransforms(text: string, filePath: string | null): string;
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
4
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
5
+ * This software is released under MIT license.
6
+ * The full license information can be found in LICENSE in the root directory of this project.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.CSS_MIGRATION_INLINE_CANDIDATES = exports.CSS_MIGRATION_CANDIDATES = void 0;
10
+ exports.transformInlineStyles = transformInlineStyles;
11
+ exports.migrateCssProperties = migrateCssProperties;
12
+ exports.applyStyleTransforms = applyStyleTransforms;
13
+ const css_replacements_1 = require("../replacements/css-replacements");
14
+ const file_visitor_1 = require("../utils/file-visitor");
15
+ const regexp_utils_1 = require("../utils/regexp-utils");
16
+ // ---------------------------------------------------------------------------
17
+ // Pre-compiled regex arrays — built once at module load, not per-file
18
+ // ---------------------------------------------------------------------------
19
+ // Negative lookahead (?![-\w]) ensures a CSS custom property name that is a
20
+ // prefix of a longer one (e.g. --clr-foo--active inside --clr-foo--active-extra)
21
+ // is NOT matched, preventing false-positive renames.
22
+ const COMPILED_PROPERTY_RENAME_REGEXES = css_replacements_1.CSS_PROPERTY_REPLACEMENTS.filter(r => r.new).map(r => ({
23
+ old: r.old,
24
+ new: r.new,
25
+ regex: (0, regexp_utils_1.prefixNegativeLookaheadRegex)(r.old),
26
+ }));
27
+ const COMPILED_PROPERTY_REMOVE_REGEXES = css_replacements_1.CSS_PROPERTY_REPLACEMENTS.filter(r => !r.new).map(r => ({
28
+ old: r.old,
29
+ regex: new RegExp(`(\\s*)(${(0, regexp_utils_1.escapeRegExp)(r.old)}(?![-\\w])\\s*:[^;]*;)`, 'g'),
30
+ }));
31
+ const COMPILED_SELECTOR_REGEXES = css_replacements_1.CSS_SELECTOR_REPLACEMENTS.map(r => ({
32
+ old: r.old,
33
+ new: r.new,
34
+ regex: (0, regexp_utils_1.wordBoundaryRegex)(r.old),
35
+ }));
36
+ const COMPILED_ATTRIBUTE_REGEXES = css_replacements_1.CSS_ATTRIBUTE_REPLACEMENTS.map(r => ({
37
+ old: r.old,
38
+ new: r.new,
39
+ regex: new RegExp((0, regexp_utils_1.escapeRegExp)(r.old), 'g'),
40
+ }));
41
+ const COMPILED_MIXIN_REGEXES = css_replacements_1.REMOVED_SCSS_MIXINS.map(name => ({
42
+ name,
43
+ regex: new RegExp(`@include\\s+${(0, regexp_utils_1.escapeRegExp)(name)}\\s*\\([^)]*\\)\\s*;`, 'g'),
44
+ }));
45
+ // ---------------------------------------------------------------------------
46
+ // Fast-path candidate strings
47
+ // ---------------------------------------------------------------------------
48
+ exports.CSS_MIGRATION_CANDIDATES = [
49
+ ...css_replacements_1.CSS_PROPERTY_REPLACEMENTS.map(r => r.old),
50
+ ...css_replacements_1.CSS_SELECTOR_REPLACEMENTS.map(r => r.old),
51
+ ...css_replacements_1.CSS_ATTRIBUTE_REPLACEMENTS.map(r => r.old),
52
+ ...css_replacements_1.REMOVED_SCSS_MIXINS,
53
+ ];
54
+ exports.CSS_MIGRATION_INLINE_CANDIDATES = exports.CSS_MIGRATION_CANDIDATES;
55
+ // ---------------------------------------------------------------------------
56
+ // Public pure transforms — used by the unified .ts pass in index.ts
57
+ // ---------------------------------------------------------------------------
58
+ function transformInlineStyles(text) {
59
+ const stylesRegex = /styles\s*:\s*\[([^\]]*)\]/g;
60
+ return text.replace(stylesRegex, (match, stylesContent) => {
61
+ if (!exports.CSS_MIGRATION_INLINE_CANDIDATES.some(c => stylesContent.includes(c))) {
62
+ return match;
63
+ }
64
+ const updated = applyStyleTransforms(stylesContent, null);
65
+ return updated !== stylesContent ? match.replace(stylesContent, updated) : match;
66
+ });
67
+ }
68
+ // ---------------------------------------------------------------------------
69
+ // Schematic Rule — visits style files and .ts inline styles
70
+ // ---------------------------------------------------------------------------
71
+ function migrateCssProperties() {
72
+ return (tree, context) => {
73
+ context.logger.info(' Migrating style files (CSS, SCSS, Sass, Less)');
74
+ let styleScanCount = 0;
75
+ let styleUpdateCount = 0;
76
+ let tsScanCount = 0;
77
+ let tsUpdateCount = 0;
78
+ (0, file_visitor_1.visitFiles)(tree, '**/*.{css,scss,sass,less}', filePath => {
79
+ styleScanCount++;
80
+ const content = tree.read(filePath);
81
+ if (!content) {
82
+ return;
83
+ }
84
+ const original = content.toString('utf-8');
85
+ if (!exports.CSS_MIGRATION_CANDIDATES.some(c => original.includes(c))) {
86
+ return;
87
+ }
88
+ const updated = applyStyleTransforms(original, filePath);
89
+ if (updated !== original) {
90
+ tree.overwrite(filePath, updated);
91
+ styleUpdateCount++;
92
+ context.logger.info(` UPDATE ${filePath}`);
93
+ }
94
+ });
95
+ (0, file_visitor_1.visitFiles)(tree, '**/*.ts', filePath => {
96
+ tsScanCount++;
97
+ const content = tree.read(filePath);
98
+ if (!content) {
99
+ return;
100
+ }
101
+ const original = content.toString('utf-8');
102
+ if (!exports.CSS_MIGRATION_INLINE_CANDIDATES.some(c => original.includes(c))) {
103
+ return;
104
+ }
105
+ const updated = transformInlineStyles(original);
106
+ if (updated !== original) {
107
+ tree.overwrite(filePath, updated);
108
+ tsUpdateCount++;
109
+ context.logger.info(` UPDATE ${filePath}`);
110
+ }
111
+ });
112
+ const totalScanned = styleScanCount + tsScanCount;
113
+ const totalUpdated = styleUpdateCount + tsUpdateCount;
114
+ context.logger.info(` ${totalUpdated} of ${totalScanned} file(s) updated.`);
115
+ };
116
+ }
117
+ // ---------------------------------------------------------------------------
118
+ // Helpers — exported for direct testing; not part of the public schematic API
119
+ // ---------------------------------------------------------------------------
120
+ function applyStyleTransforms(text, filePath) {
121
+ text = replaceCssProperties(text);
122
+ text = replaceCssSelectors(text);
123
+ text = replaceCssAttributes(text);
124
+ const isScssSass = filePath === null || filePath.endsWith('.scss') || filePath.endsWith('.sass');
125
+ if (isScssSass) {
126
+ text = replaceScssMixins(text);
127
+ }
128
+ return text;
129
+ }
130
+ function replaceCssProperties(text) {
131
+ for (const r of COMPILED_PROPERTY_RENAME_REGEXES) {
132
+ if (!text.includes(r.old)) {
133
+ continue;
134
+ }
135
+ r.regex.lastIndex = 0;
136
+ text = text.replace(r.regex, r.new);
137
+ }
138
+ for (const r of COMPILED_PROPERTY_REMOVE_REGEXES) {
139
+ if (!text.includes(r.old)) {
140
+ continue;
141
+ }
142
+ r.regex.lastIndex = 0;
143
+ text = text.replace(r.regex, `$1/* TODO(v18 migration): '${r.old}' has been removed. */ /* $2 */`);
144
+ }
145
+ return text;
146
+ }
147
+ function replaceCssSelectors(text) {
148
+ for (const r of COMPILED_SELECTOR_REGEXES) {
149
+ if (!text.includes(r.old)) {
150
+ continue;
151
+ }
152
+ r.regex.lastIndex = 0;
153
+ text = text.replace(r.regex, r.new);
154
+ }
155
+ return text;
156
+ }
157
+ function replaceCssAttributes(text) {
158
+ for (const r of COMPILED_ATTRIBUTE_REGEXES) {
159
+ if (!text.includes(r.old)) {
160
+ continue;
161
+ }
162
+ r.regex.lastIndex = 0;
163
+ text = text.replace(r.regex, r.new);
164
+ }
165
+ return text;
166
+ }
167
+ function replaceScssMixins(text) {
168
+ for (const r of COMPILED_MIXIN_REGEXES) {
169
+ if (!text.includes(r.name)) {
170
+ continue;
171
+ }
172
+ r.regex.lastIndex = 0;
173
+ text = text.replace(r.regex, `/* TODO(v18 migration): '@include ${r.name}(...)' has been removed. */`);
174
+ }
175
+ return text;
176
+ }
177
+ //# sourceMappingURL=css-migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css-migration.js","sourceRoot":"","sources":["../../../../../projects/angular/schematics/ng-update/migrations/css-migration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Rule } from '@angular-devkit/schematics';
2
+ export declare const IMPORT_MIGRATION_CANDIDATES: readonly string[];
3
+ export declare function transformImports(text: string): string;
4
+ export declare function migrateImports(): Rule;
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
4
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
5
+ * This software is released under MIT license.
6
+ * The full license information can be found in LICENSE in the root directory of this project.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.IMPORT_MIGRATION_CANDIDATES = void 0;
10
+ exports.transformImports = transformImports;
11
+ exports.migrateImports = migrateImports;
12
+ const import_replacements_1 = require("../replacements/import-replacements");
13
+ const symbol_replacements_1 = require("../replacements/symbol-replacements");
14
+ const file_visitor_1 = require("../utils/file-visitor");
15
+ const regexp_utils_1 = require("../utils/regexp-utils");
16
+ // ---------------------------------------------------------------------------
17
+ // Pre-compiled regex arrays — built once at module load, not per-file
18
+ // ---------------------------------------------------------------------------
19
+ // Sort import replacements by path length descending so more-specific paths
20
+ // (e.g. '@clr/angular/src/accordion/stepper') match before shorter prefixes.
21
+ const SORTED_IMPORT_REPLACEMENTS = [...import_replacements_1.IMPORT_REPLACEMENTS].sort((a, b) => b.oldModule.length - a.oldModule.length);
22
+ // Wildcard replacements: change the whole module path for all symbols.
23
+ const COMPILED_WILDCARD_IMPORT_REGEXES = SORTED_IMPORT_REPLACEMENTS.filter(r => r.oldSymbol === '*').map(r => ({
24
+ oldModule: r.oldModule,
25
+ newModule: r.newModule,
26
+ regex: new RegExp(`(from\\s+['"])${(0, regexp_utils_1.escapeRegExp)(r.oldModule)}(?=[/'"])`, 'g'),
27
+ }));
28
+ // Symbol-specific replacements: only the named symbol moves to the new module.
29
+ // Kept as plain data — splitSymbolImport() handles them at runtime to avoid
30
+ // the false positive where sibling symbols in the same import are dragged to
31
+ // the wrong module path.
32
+ const SYMBOL_SPECIFIC_IMPORTS = SORTED_IMPORT_REPLACEMENTS.filter(r => r.oldSymbol !== '*').map(r => ({
33
+ oldModule: r.oldModule,
34
+ newModule: r.newModule,
35
+ oldSymbol: r.oldSymbol,
36
+ newSymbol: r.newSymbol,
37
+ }));
38
+ // Only symbols with a non-empty new name are renamed here; removed symbols handled separately.
39
+ const COMPILED_SYMBOL_REPLACEMENTS = symbol_replacements_1.SYMBOL_REPLACEMENTS.filter(r => r.new).map(r => ({
40
+ ...r,
41
+ // Ç (U+00C7) is not an ASCII word character so \b doesn't delimit it.
42
+ // Use explicit lookahead/lookbehind to avoid partial matches.
43
+ regex: r.old.startsWith('Ç')
44
+ ? new RegExp(`(?<![A-Za-z0-9_$Ç])${(0, regexp_utils_1.escapeRegExp)(r.old)}(?![A-Za-z0-9_$])`, 'g')
45
+ : (0, regexp_utils_1.wordBoundaryRegex)(r.old),
46
+ }));
47
+ const REMOVED_SYMBOLS = symbol_replacements_1.SYMBOL_REPLACEMENTS.filter(r => r.new === '').map(r => r.old);
48
+ const REMOVED_SYMBOL_SOLE_IMPORT_REGEXES = REMOVED_SYMBOLS.map(sym => new RegExp(`^\\s*import\\s*\\{\\s*${(0, regexp_utils_1.escapeRegExp)(sym)}\\s*\\}\\s*from\\s*['"][^'"]+['"]\\s*;?\\s*$`, 'gm'));
49
+ const REMOVED_SYMBOL_LEADING_COMMA_REGEXES = REMOVED_SYMBOLS.map(sym => new RegExp(`\\b${(0, regexp_utils_1.escapeRegExp)(sym)}\\b\\s*,\\s*`, 'g'));
50
+ const REMOVED_SYMBOL_TRAILING_COMMA_REGEXES = REMOVED_SYMBOLS.map(sym => new RegExp(`\\s*,\\s*${(0, regexp_utils_1.escapeRegExp)(sym)}\\b`, 'g'));
51
+ const REMOVED_SYMBOL_USAGE_REGEXES = REMOVED_SYMBOLS.map(sym => ({
52
+ sym,
53
+ test: new RegExp(`\\b${(0, regexp_utils_1.escapeRegExp)(sym)}\\b`),
54
+ replace: new RegExp(`\\b${(0, regexp_utils_1.escapeRegExp)(sym)}\\b`, 'g'),
55
+ }));
56
+ // ---------------------------------------------------------------------------
57
+ // Fast-path candidate strings — if none present, skip the file entirely
58
+ // ---------------------------------------------------------------------------
59
+ exports.IMPORT_MIGRATION_CANDIDATES = [
60
+ ...import_replacements_1.IMPORT_REPLACEMENTS.map(r => r.oldModule),
61
+ ...symbol_replacements_1.SYMBOL_REPLACEMENTS.filter(r => r.new).map(r => r.old),
62
+ ...REMOVED_SYMBOLS,
63
+ ];
64
+ // ---------------------------------------------------------------------------
65
+ // Public pure transform — used by the unified .ts pass in index.ts
66
+ // ---------------------------------------------------------------------------
67
+ function transformImports(text) {
68
+ if (!exports.IMPORT_MIGRATION_CANDIDATES.some(c => text.includes(c))) {
69
+ return text;
70
+ }
71
+ text = replaceImportPaths(text);
72
+ text = replaceSymbols(text);
73
+ text = removeDeletedImports(text);
74
+ return text;
75
+ }
76
+ // ---------------------------------------------------------------------------
77
+ // Schematic Rule — kept for backwards compatibility; unified pass in index.ts
78
+ // is preferred for performance.
79
+ // ---------------------------------------------------------------------------
80
+ function migrateImports() {
81
+ return (tree, context) => {
82
+ context.logger.info(' Migrating TypeScript imports and symbols');
83
+ let scanCount = 0;
84
+ let fileCount = 0;
85
+ (0, file_visitor_1.visitFiles)(tree, '**/*.ts', filePath => {
86
+ scanCount++;
87
+ const content = tree.read(filePath);
88
+ if (!content) {
89
+ return;
90
+ }
91
+ const original = content.toString('utf-8');
92
+ const updated = transformImports(original);
93
+ if (updated !== original) {
94
+ tree.overwrite(filePath, updated);
95
+ fileCount++;
96
+ context.logger.info(` UPDATE ${filePath}`);
97
+ }
98
+ });
99
+ context.logger.info(` ${fileCount} of ${scanCount} file(s) updated.`);
100
+ };
101
+ }
102
+ // ---------------------------------------------------------------------------
103
+ // Private helpers
104
+ // ---------------------------------------------------------------------------
105
+ function replaceImportPaths(text) {
106
+ // Wildcard replacements: move all symbols from oldModule to newModule.
107
+ for (const r of COMPILED_WILDCARD_IMPORT_REGEXES) {
108
+ if (!text.includes(r.oldModule)) {
109
+ continue;
110
+ }
111
+ r.regex.lastIndex = 0;
112
+ text = text.replace(r.regex, `$1${r.newModule}`);
113
+ }
114
+ // Symbol-specific replacements: extract one symbol to a new module, leaving
115
+ // any sibling symbols on the original module to prevent false positives.
116
+ for (const r of SYMBOL_SPECIFIC_IMPORTS) {
117
+ if (!text.includes(r.oldModule) || !text.includes(r.oldSymbol)) {
118
+ continue;
119
+ }
120
+ text = splitSymbolImport(text, r.oldSymbol, r.newSymbol, r.oldModule, r.newModule);
121
+ }
122
+ return text;
123
+ }
124
+ /**
125
+ * Extracts a single named symbol from an import and moves it to a new module.
126
+ *
127
+ * When the import contains sibling symbols, a second import for the remaining
128
+ * symbols on the original module is emitted. This prevents the false positive
129
+ * where all siblings are silently moved to the wrong module.
130
+ *
131
+ * Example (multi-symbol):
132
+ * import { FocusService, ClrFormsModule } from '@clr/angular/forms';
133
+ * →
134
+ * import { FormsFocusService } from '@clr/angular/forms/common';
135
+ * import { ClrFormsModule } from '@clr/angular/forms';
136
+ */
137
+ function splitSymbolImport(text, oldSymbol, newSymbol, oldModule, newModule) {
138
+ const modEsc = (0, regexp_utils_1.escapeRegExp)(oldModule);
139
+ const symEsc = (0, regexp_utils_1.escapeRegExp)(oldSymbol);
140
+ // Compiled once per call, not inside the replace callback.
141
+ const symInListRe = new RegExp(`(?:^|,)\\s*${symEsc}\\s*(?:,|$)`);
142
+ const importRe = new RegExp(`([ \\t]*)import\\s*\\{([^}]*)\\}\\s*from\\s*(['"])${modEsc}\\3(\\s*;?)`, 'gm');
143
+ return text.replace(importRe, (match, indent, symbolList, quote, semi) => {
144
+ if (!symInListRe.test(symbolList)) {
145
+ return match;
146
+ }
147
+ const semiStr = semi.trim() || ';';
148
+ const remaining = symbolList
149
+ .split(',')
150
+ .map(s => s.trim())
151
+ .filter(s => s && s !== oldSymbol);
152
+ if (remaining.length === 0) {
153
+ return `${indent}import { ${newSymbol} } from ${quote}${newModule}${quote}${semiStr}`;
154
+ }
155
+ const newLine = `${indent}import { ${newSymbol} } from ${quote}${newModule}${quote}${semiStr}`;
156
+ const oldLine = `${indent}import { ${remaining.join(', ')} } from ${quote}${oldModule}${quote}${semiStr}`;
157
+ return `${newLine}\n${oldLine}`;
158
+ });
159
+ }
160
+ function replaceSymbols(text) {
161
+ for (const r of COMPILED_SYMBOL_REPLACEMENTS) {
162
+ if (!text.includes(r.old)) {
163
+ continue;
164
+ }
165
+ r.regex.lastIndex = 0;
166
+ text = text.replace(r.regex, r.new);
167
+ }
168
+ return text;
169
+ }
170
+ function removeDeletedImports(text) {
171
+ for (let i = 0; i < REMOVED_SYMBOLS.length; i++) {
172
+ const sym = REMOVED_SYMBOLS[i];
173
+ if (!text.includes(sym)) {
174
+ continue;
175
+ }
176
+ text = text.replace(REMOVED_SYMBOL_SOLE_IMPORT_REGEXES[i], '');
177
+ text = text.replace(REMOVED_SYMBOL_LEADING_COMMA_REGEXES[i], '');
178
+ text = text.replace(REMOVED_SYMBOL_TRAILING_COMMA_REGEXES[i], '');
179
+ const usage = REMOVED_SYMBOL_USAGE_REGEXES[i];
180
+ if (usage.test.test(text)) {
181
+ usage.replace.lastIndex = 0;
182
+ text = text.replace(usage.replace, `${sym} /* TODO: '${sym}' was removed in @clr/angular v18. Use standard KeyboardEvent.key values instead. */`);
183
+ }
184
+ }
185
+ return text;
186
+ }
187
+ //# sourceMappingURL=import-migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-migration.js","sourceRoot":"","sources":["../../../../../projects/angular/schematics/ng-update/migrations/import-migration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Rule } from '@angular-devkit/schematics';
2
+ export declare const TEMPLATE_MIGRATION_HTML_CANDIDATES: readonly string[];
3
+ export declare const TEMPLATE_MIGRATION_INLINE_CANDIDATES: readonly string[];
4
+ export declare function transformInlineTemplates(text: string): string;
5
+ export declare function migrateTemplates(): Rule;
6
+ export declare function applyHtmlTransforms(text: string): string;