Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: angular/components
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 20.0.0-next.2
Choose a base ref
...
head repository: angular/components
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 20.0.0-next.3
Choose a head ref
  • 15 commits
  • 131 files changed
  • 6 contributors

Commits on Mar 19, 2025

  1. build: support linking of Angular libraries with rules_js

    For linking of Angular packages we are using something more clever than
    what we are doing with `rules_nodejs`. Instead of maintaing complexity
    where we pre-link FESM bundles and somehow inject them into other Bazel
    bundling steps (with complex linker mappings), we pre-link as part of
    individual package postinstall steps, exposing the linked bundles via a
    NodeJS exports condition.
    
    This is possible vis this package/script:
    https://github.com/devversion/angular-linking
    
    Clearly this is not at a good location, but it's necessary right now to
    ship this code via npm because `rules_js` struggles to use pnpm
    extensions onto workspace 1st-party packages. Long-term we can either
    decide to keep it that way, move it into e.g. dev-infra repository, or
    we can explore shipping pre-linked bundles via APF. TBD.
    devversion committed Mar 19, 2025

    Verified

    This commit was signed with the committer’s verified signature.
    lforst Luca Forstner
    Copy the full SHA
    daf0d2f View commit details
  2. build: migrate all ts_library targets in tools/

    Migrates all `ts_library` targets in `tools/` to use the `rules_js`
    `ts_project` rule.
    devversion committed Mar 19, 2025

    Verified

    This commit was signed with the committer’s verified signature.
    lforst Luca Forstner
    Copy the full SHA
    a309c1b View commit details
  3. build: improve ts_project interop to work with esbuild bundling

    Improves the `ts_project` interop to work with Esbuild bundling. Right
    now we can end up with multiple copies of the same source file.
    
    e.g. input might import from `@angular/cdk/testing` and end up with
    the version of `rules_nodejs` linker, while other imports to the native
    `ts_library` targets end up being mapped to their actual sources in the
    `bazel-bin`, and not inside `node_modules`
    devversion committed Mar 19, 2025
    Copy the full SHA
    d488ae6 View commit details
  4. build: migrate more ts_library targets to rules_js

    Migrates more `ts_library` targets to `rules_js`
    devversion committed Mar 19, 2025
    Copy the full SHA
    1c223d9 View commit details
  5. refactor(multiple): consolidate logic for disabling animations

    Adds a common function we can use to determine whether animations are disabled globally. This reduces duplication and makes it easier to change the logic.
    crisbeto committed Mar 19, 2025
    Copy the full SHA
    0a4cd91 View commit details
  6. refactor(cdk/overlay): add config option for disabling animations

    Currently the CDK overlay uses `ANIMATION_MODULE_TYPE` to implicitly disable the backdrop animation, however we want to introduce a Material-specific way of disabling animations. These changes add a config option that we can use to do so.
    crisbeto committed Mar 19, 2025
    Copy the full SHA
    1ffe706 View commit details
  7. fix(material/timepicker): TimepickerInput component in shadow DOM (#3…

    …0642)
    
    Fixes an issue where the value of the input element referenced by a
    TimepickerInput component inside a shadow DOM was getting formatted too
    often due to `TimepickerInput._hasFocus()` assuming the component wasn't
    in the shadow DOM.
    
    Fixes #30641
    
    Co-authored-by: Caleb Kish <j69674031@gmail.com>
    calebkish and Caleb Kish authored Mar 19, 2025
    Copy the full SHA
    ee44255 View commit details
  8. fix(cdk/tree): retainining previous objects (#30431)

    fixes component retaining old data in memory even when its not used causing memory usage to increase
    
    fixes #30322
    naaajii authored Mar 19, 2025
    Copy the full SHA
    1b4cae7 View commit details

Commits on Mar 20, 2025

  1. fix(material/chips): chip input not showing placeholder (#30664)

    The chip input is inheriting some styles from `MatInput` which were causing it not to show its placeholder unless it's focused.
    
    These changes override the inherited styles to show it correctly.
    
    Fixes #16380.
    crisbeto authored Mar 20, 2025
    Copy the full SHA
    aba4c44 View commit details
  2. fix(material/chips): implement disabledInteractive in chip input (#30665

    )
    
    Adds a `disabledInteractive` input to `MatChipInput`, similar to what we have in other components.
    
    I've also cleaned up the chips demo a bit.
    crisbeto authored Mar 20, 2025
    Copy the full SHA
    33795a1 View commit details
  3. fix(multiple): ensure re-exported module symbols can be imported (#30667

    )
    
    As of recently, we switched our imports from module imports to relative
    imports, when inside the same package. This is expected for proper code
    splitting, and also for our upcoming `rules_js` migration.
    
    Unfortunately this highlights an issue with the Angular compiler. We
    occasionally re-export other entry-point modules from one entry-point
    module. This is likely done for convenience, but we should stop doing
    that going forward (and likely will naturally resolve this over time
    with standalone either way).
    
    The problem is that the Angular compiler, especially with HMR enabled
    (i.e. no tree-shaking of imports), will try to generate imports in the
    user code to symbols that are indirectly re-exported. This worked before
    because the Angular compiler leveraged the "best guessed module", based
    on the "last module import" it saw before e.g. discovering the
    re-exported `ScrollingModule`; hence it assumed all exports of that
    module are available from `@angular/cdk/scrolling`. This assumption no
    longer works because the last module import would be e.g. `cdk/overlay`,
    which relatively imports from scrolling to re-export the module then.
    
    There are a few options:
    
    - teach the compiler about relative imports inside APF packages with
      secondary entry-points. Possible, but won't work for users with older
      compiler versions. Maybe a long-term good thing to do; on the other
      hand, standalone is the new future.
    
    - switch back to module imports. Not possible and relative imports
      should work inside a package IMO.
    
    - re-export the exposed symbols, under a private name. This is the
      easiest approach and there also aren't a lot of module re-exports; so
      this is a viable approach taken by this commit.
    
    Inside Google, the latter approach is automatically emitted by the
    compiler, when everything is built from source; but that's not usable
    here; but confirms this approach as being reasonable. Ideally we will
    stop re-exporting modules in APF packages, and long-term we start
    supporting the proper module guessing with relative imports.
    
    Fixes #30663.
    devversion authored Mar 20, 2025
    Copy the full SHA
    cb3b0a8 View commit details
  4. docs: release notes for the v19.2.5 release

    devversion committed Mar 20, 2025
    Copy the full SHA
    76472bc View commit details

Commits on Mar 21, 2025

  1. fix(cdk/overlay): ensure re-exported transitive Dir directive can b…

    …e imported (#30679)
    
    This is a follow-up to cb3b0a8 which
    did miss this transitive re-export of the `Dir` directive. The compiler
    will try the last module import, so even if e.g. `./scrolling`
    re-exported `Dir` as of the initial commit, the compiler would try
    importing via `@angular/cdk/overlay`.
    
    This commit fixes this remaining instance, and updates the new testing
    infrastructure to import/test every module in isolation. The tests
    didn't notice that issue because the compiler discovered the `Dir`
    directive/"Reference" already via another import that "worked".
    
    Fixes #30663.
    devversion authored Mar 21, 2025
    Copy the full SHA
    1e5082d View commit details
  2. docs: release notes for the v19.2.6 release

    crisbeto committed Mar 21, 2025
    Copy the full SHA
    32e96be View commit details
  3. release: cut the v20.0.0-next.3 release

    crisbeto committed Mar 21, 2025
    Copy the full SHA
    0e5b409 View commit details
Showing with 1,112 additions and 564 deletions.
  1. +2 −2 .aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx
  2. +46 −0 CHANGELOG.md
  3. +9 −0 WORKSPACE
  4. +1 −0 goldens/cdk/dialog/index.api.md
  5. +1 −0 goldens/cdk/overlay/index.api.md
  6. +0 −2 goldens/material/checkbox/index.api.md
  7. +9 −1 goldens/material/chips/index.api.md
  8. +4 −1 goldens/material/core/index.api.md
  9. +0 −2 goldens/material/progress-bar/index.api.md
  10. +1 −1 goldens/material/sort/index.api.md
  11. +2 −2 goldens/material/tabs/index.api.md
  12. +28 −0 integration/module-tests/BUILD.bazel
  13. +60 −0 integration/module-tests/find-all-modules.mts
  14. +25 −0 integration/module-tests/index.bzl
  15. +105 −0 integration/module-tests/index.mts
  16. +8 −0 integration/module-tests/tsconfig.json
  17. +35 −3 package.json
  18. +134 −47 pnpm-lock.yaml
  19. +5 −0 src/cdk/dialog/dialog-config.ts
  20. +11 −0 src/cdk/dialog/dialog-module.ts
  21. +1 −0 src/cdk/dialog/dialog.ts
  22. +6 −0 src/cdk/drag-drop/drag-drop-module.ts
  23. +3 −0 src/cdk/overlay/overlay-config.ts
  24. +14 −0 src/cdk/overlay/overlay-module.ts
  25. +1 −1 src/cdk/overlay/overlay.ts
  26. +6 −0 src/cdk/scrolling/scrolling-module.ts
  27. +4 −3 src/cdk/testing/BUILD.bazel
  28. +16 −2 src/cdk/tree/tree.ts
  29. +0 −40 src/dev-app/checkbox/checkbox-demo.html
  30. +1 −8 src/dev-app/checkbox/checkbox-demo.ts
  31. +0 −1 src/dev-app/chips/BUILD.bazel
  32. +23 −31 src/dev-app/chips/chips-demo.html
  33. +1 −2 src/dev-app/chips/chips-demo.ts
  34. +4 −3 src/material-experimental/BUILD.bazel
  35. +3 −0 src/material/autocomplete/autocomplete-trigger.ts
  36. +2 −3 src/material/autocomplete/autocomplete.ts
  37. +4 −5 src/material/badge/badge.ts
  38. +2 −3 src/material/bottom-sheet/bottom-sheet-container.ts
  39. +3 −0 src/material/bottom-sheet/bottom-sheet.ts
  40. +4 −3 src/material/bottom-sheet/testing/BUILD.bazel
  41. +3 −4 src/material/button-toggle/button-toggle.ts
  42. +4 −3 src/material/button-toggle/testing/BUILD.bazel
  43. +3 −4 src/material/button/button-base.ts
  44. +5 −4 src/material/button/testing/BUILD.bazel
  45. +4 −3 src/material/card/testing/BUILD.bazel
  46. +9 −5 src/material/checkbox/checkbox.ts
  47. +4 −3 src/material/checkbox/testing/BUILD.bazel
  48. +28 −7 src/material/chips/chip-input.spec.ts
  49. +17 −1 src/material/chips/chip-input.ts
  50. +17 −0 src/material/chips/chip-set.scss
  51. +2 −4 src/material/chips/chip.ts
  52. +7 −3 src/material/chips/testing/BUILD.bazel
  53. +13 −1 src/material/chips/testing/chip-input-harness.spec.ts
  54. +9 −1 src/material/chips/testing/chip-input-harness.ts
  55. +3 −0 src/material/chips/tokens.ts
  56. +10 −0 src/material/core/animation/animation.ts
  57. +8 −16 src/material/core/private/ripple-loader.ts
  58. +3 −3 src/material/core/ripple/ripple.ts
  59. +4 −10 src/material/core/selection/pseudo-checkbox/pseudo-checkbox.ts
  60. +4 −3 src/material/core/testing/BUILD.bazel
  61. +4 −4 src/material/datepicker/datepicker-base.ts
  62. +4 −3 src/material/datepicker/testing/BUILD.bazel
  63. +4 −7 src/material/dialog/dialog-container.ts
  64. +6 −0 src/material/dialog/dialog.ts
  65. +2 −3 src/material/expansion/expansion-panel.ts
  66. +2 −5 src/material/form-field/form-field.ts
  67. +2 −5 src/material/list/list-base.ts
  68. +3 −0 src/material/menu/menu-trigger.ts
  69. +2 −3 src/material/menu/menu.ts
  70. +4 −3 src/material/menu/testing/BUILD.bazel
  71. +4 −3 src/material/paginator/testing/BUILD.bazel
  72. +2 −6 src/material/progress-bar/progress-bar.ts
  73. +2 −5 src/material/progress-spinner/progress-spinner.ts
  74. +8 −5 src/material/radio/radio.ts
  75. +4 −3 src/material/radio/testing/BUILD.bazel
  76. +2 −3 src/material/select/select.ts
  77. +4 −3 src/material/select/testing/BUILD.bazel
  78. +3 −3 src/material/sidenav/drawer.ts
  79. +4 −3 src/material/sidenav/testing/BUILD.bazel
  80. +7 −5 src/material/slide-toggle/slide-toggle.ts
  81. +7 −4 src/material/slide-toggle/testing/BUILD.bazel
  82. +2 −4 src/material/slider/slider.ts
  83. +7 −4 src/material/slider/testing/BUILD.bazel
  84. +2 −3 src/material/snack-bar/snack-bar-container.ts
  85. +3 −0 src/material/snack-bar/snack-bar.ts
  86. +7 −4 src/material/snack-bar/testing/BUILD.bazel
  87. +1 −1 src/material/sort/sort-header.html
  88. +2 −3 src/material/sort/sort-header.ts
  89. +7 −4 src/material/sort/testing/BUILD.bazel
  90. +4 −5 src/material/stepper/stepper.ts
  91. +4 −3 src/material/stepper/testing/BUILD.bazel
  92. +4 −3 src/material/table/testing/BUILD.bazel
  93. +2 −2 src/material/tabs/paginated-tab-header.ts
  94. +3 −3 src/material/tabs/tab-body.ts
  95. +1 −1 src/material/tabs/tab-group.html
  96. +2 −3 src/material/tabs/tab-group.ts
  97. +1 −1 src/material/tabs/tab-header.html
  98. +4 −18 src/material/tabs/tab-nav-bar/tab-nav-bar.ts
  99. +4 −3 src/material/tabs/testing/BUILD.bazel
  100. +4 −3 src/material/timepicker/testing/BUILD.bazel
  101. +2 −3 src/material/timepicker/timepicker-input.ts
  102. +20 −1 src/material/timepicker/timepicker.spec.ts
  103. +3 −3 src/material/timepicker/timepicker.ts
  104. +4 −3 src/material/toolbar/testing/BUILD.bazel
  105. +4 −3 src/material/tooltip/testing/BUILD.bazel
  106. +5 −6 src/material/tooltip/tooltip.ts
  107. +4 −3 src/material/tree/testing/BUILD.bazel
  108. +30 −13 src/universal-app/BUILD.bazel
  109. +6 −0 src/universal-app/tsconfig.json
  110. +12 −5 test/BUILD.bazel
  111. +4 −0 test/tsconfig.json
  112. +16 −0 tools/BUILD.bazel
  113. +13 −0 tools/bazel/ts_project_interop.bzl
  114. +8 −11 tools/dgeni/BUILD.bazel
  115. +4 −7 tools/example-module/BUILD.bazel
  116. +5 −8 tools/extract-tokens/BUILD.bazel
  117. +6 −9 tools/highlight-files/BUILD.bazel
  118. +10 −12 tools/markdown-to-html/BUILD.bazel
  119. +11 −6 tools/markdown-to-html/docs-marked-renderer.spec.ts
  120. +2 −2 tools/markdown-to-html/docs-marked-renderer.ts
  121. +0 −14 tools/markdown-to-html/tsconfig.json
  122. +4 −7 tools/package-docs-content/BUILD.bazel
  123. +0 −13 tools/package-docs-content/tsconfig.json
  124. +4 −5 tools/postcss/BUILD.bazel
  125. +22 −0 tools/postinstall/patches/tsec+0.2.2.patch
  126. +3 −8 tools/region-parser/BUILD.bazel
  127. +0 −13 tools/region-parser/tsconfig.json
  128. +8 −9 tools/sass/BUILD.bazel
  129. +4 −6 tools/server-test/BUILD.bazel
  130. +7 −0 tools/tsconfig-test.json
  131. +6 −9 tools/tsconfig.json
Original file line number Diff line number Diff line change
@@ -2,7 +2,7 @@
# Input hashes for repository rule npm_translate_lock(name = "npm2", pnpm_lock = "@//:pnpm-lock.yaml").
# This file should be checked into version control along with the pnpm-lock.yaml file.
.npmrc=-2023857461
package.json=-1614639524
pnpm-lock.yaml=-1446385328
package.json=234099890
pnpm-lock.yaml=986627933
pnpm-workspace.yaml=1711114604
yarn.lock=824621907
46 changes: 46 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,49 @@
<a name="20.0.0-next.3"></a>
# 20.0.0-next.3 "iridium-irrigator" (2025-03-21)
### cdk
| Commit | Type | Description |
| -- | -- | -- |
| [1e5082dd5](https://github.com/angular/components/commit/1e5082dd5a47af38e3716bd384d89195ecdd09d7) | fix | **overlay:** ensure re-exported transitive `Dir` directive can be imported ([#30679](https://github.com/angular/components/pull/30679)) |
| [1b4cae7f2](https://github.com/angular/components/commit/1b4cae7f2914cefdb526461ed0405432fcf738b7) | fix | **tree:** retainining previous objects ([#30431](https://github.com/angular/components/pull/30431)) |
### material
| Commit | Type | Description |
| -- | -- | -- |
| [aba4c4437](https://github.com/angular/components/commit/aba4c44371c119e1c95e52874d58d50a13e6e296) | fix | **chips:** chip input not showing placeholder ([#30664](https://github.com/angular/components/pull/30664)) |
| [33795a1a1](https://github.com/angular/components/commit/33795a1a138cb4930b9e20773403ec712e0ace73) | fix | **chips:** implement disabledInteractive in chip input ([#30665](https://github.com/angular/components/pull/30665)) |
| [ee442555e](https://github.com/angular/components/commit/ee442555e245184dea2703d14d58d9e8a6b34bd4) | fix | **timepicker:** TimepickerInput component in shadow DOM ([#30642](https://github.com/angular/components/pull/30642)) |
### multiple
| Commit | Type | Description |
| -- | -- | -- |
| [cb3b0a87a](https://github.com/angular/components/commit/cb3b0a87a7528aa2f3525f951a021398821df970) | fix | ensure re-exported module symbols can be imported ([#30667](https://github.com/angular/components/pull/30667)) |

<!-- CHANGELOG SPLIT MARKER -->

<a name="19.2.6"></a>
# 19.2.6 "tellurium-transponder" (2025-03-21)
### cdk
| Commit | Type | Description |
| -- | -- | -- |
| [5a7009a50](https://github.com/angular/components/commit/5a7009a50df836d6f245216730801285fc77a998) | fix | **overlay:** ensure re-exported transitive `Dir` directive can be imported ([#30679](https://github.com/angular/components/pull/30679)) |

<!-- CHANGELOG SPLIT MARKER -->

<a name="19.2.5"></a>
# 19.2.5 "argon-planet" (2025-03-20)
### cdk
| Commit | Type | Description |
| -- | -- | -- |
| [ab70ba5b3](https://github.com/angular/components/commit/ab70ba5b304bf1297d2ece4cc72e1318e20cbbbb) | fix | **tree:** retainining previous objects ([#30431](https://github.com/angular/components/pull/30431)) |
### material
| Commit | Type | Description |
| -- | -- | -- |
| [2bfa5262e](https://github.com/angular/components/commit/2bfa5262ea388c3081718de37fe4ea1be703b4b5) | fix | **timepicker:** TimepickerInput component in shadow DOM ([#30642](https://github.com/angular/components/pull/30642)) |
### multiple
| Commit | Type | Description |
| -- | -- | -- |
| [8d7a0f683](https://github.com/angular/components/commit/8d7a0f683220a754086f89335789d98f17cc67ae) | fix | ensure re-exported module symbols can be imported |

<!-- CHANGELOG SPLIT MARKER -->

<a name="20.0.0-next.2"></a>
# 20.0.0-next.2 "bismite-bomb" (2025-03-19)
## Breaking Changes
9 changes: 9 additions & 0 deletions WORKSPACE
Original file line number Diff line number Diff line change
@@ -115,6 +115,7 @@ yarn_install(
"//:tools/postinstall/patches/@angular+bazel+20.0.0-next.1.patch",
"//:tools/postinstall/patches/@angular+build-tooling+0.0.0-1ebf18a3a60b182a3dbad12e9a149fd93af5c29b.patch",
"//:tools/postinstall/patches/@bazel+concatjs+5.8.1.patch",
"//:tools/postinstall/patches/tsec+0.2.2.patch",
],
# Currently disabled due to:
# 1. Missing Windows support currently.
@@ -163,6 +164,14 @@ load("@aspect_rules_js//npm:repositories.bzl", "npm_translate_lock")

npm_translate_lock(
name = "npm2",
custom_postinstalls = {
"@angular/animations": "node ../../@nginfra/angular-linking/index.mjs",
"@angular/common": "node ../../@nginfra/angular-linking/index.mjs",
"@angular/forms": "node ../../@nginfra/angular-linking/index.mjs",
"@angular/platform-browser": "node ../../@nginfra/angular-linking/index.mjs",
"@angular/router": "node ../../@nginfra/angular-linking/index.mjs",
"@angular/localize": "node ../../@nginfra/angular-linking/index.mjs",
},
data = [
"//:package.json",
"//:pnpm-workspace.yaml",
1 change: 1 addition & 0 deletions goldens/cdk/dialog/index.api.md
Original file line number Diff line number Diff line change
@@ -127,6 +127,7 @@ export class DialogConfig<D = unknown, R = unknown, C extends BasePortalOutlet =
};
data?: D | null;
direction?: Direction;
disableAnimations?: boolean;
disableClose?: boolean;
hasBackdrop?: boolean;
height?: string;
1 change: 1 addition & 0 deletions goldens/cdk/overlay/index.api.md
Original file line number Diff line number Diff line change
@@ -299,6 +299,7 @@ export class OverlayConfig {
constructor(config?: OverlayConfig);
backdropClass?: string | string[];
direction?: Direction | Directionality;
disableAnimations?: boolean;
disposeOnNavigation?: boolean;
hasBackdrop?: boolean;
height?: number | string;
2 changes: 0 additions & 2 deletions goldens/material/checkbox/index.api.md
Original file line number Diff line number Diff line change
@@ -35,8 +35,6 @@ export class MatCheckbox implements AfterViewInit, OnChanges, ControlValueAccess
indeterminateToChecked: string;
indeterminateToUnchecked: string;
};
// (undocumented)
_animationMode?: "NoopAnimations" | "BrowserAnimations" | null | undefined;
ariaControls: string;
ariaDescribedby: string;
ariaExpanded: boolean;
10 changes: 9 additions & 1 deletion goldens/material/chips/index.api.md
Original file line number Diff line number Diff line change
@@ -252,6 +252,7 @@ export class MatChipInput implements MatChipTextControl, OnChanges, OnDestroy {
clear(): void;
get disabled(): boolean;
set disabled(value: boolean);
disabledInteractive: boolean;
// (undocumented)
protected _elementRef: ElementRef<HTMLInputElement>;
_emitChipEnd(event?: KeyboardEvent): void;
@@ -260,6 +261,7 @@ export class MatChipInput implements MatChipTextControl, OnChanges, OnDestroy {
// (undocumented)
_focus(): void;
focused: boolean;
protected _getReadonlyAttribute(): string | null;
id: string;
readonly inputElement: HTMLInputElement;
_keydown(event: KeyboardEvent): void;
@@ -268,17 +270,22 @@ export class MatChipInput implements MatChipTextControl, OnChanges, OnDestroy {
// (undocumented)
static ngAcceptInputType_disabled: unknown;
// (undocumented)
static ngAcceptInputType_disabledInteractive: unknown;
// (undocumented)
static ngAcceptInputType_readonly: unknown;
// (undocumented)
ngOnChanges(): void;
// (undocumented)
ngOnDestroy(): void;
// (undocumented)
_onInput(): void;
placeholder: string;
readonly: boolean;
separatorKeyCodes: readonly number[] | ReadonlySet<number>;
// (undocumented)
setDescribedByIds(ids: string[]): void;
// (undocumented)
static ɵdir: i0.ɵɵDirectiveDeclaration<MatChipInput, "input[matChipInputFor]", ["matChipInput", "matChipInputFor"], { "chipGrid": { "alias": "matChipInputFor"; "required": false; }; "addOnBlur": { "alias": "matChipInputAddOnBlur"; "required": false; }; "separatorKeyCodes": { "alias": "matChipInputSeparatorKeyCodes"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "id": { "alias": "id"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "chipEnd": "matChipInputTokenEnd"; }, never, never, true, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<MatChipInput, "input[matChipInputFor]", ["matChipInput", "matChipInputFor"], { "chipGrid": { "alias": "matChipInputFor"; "required": false; }; "addOnBlur": { "alias": "matChipInputAddOnBlur"; "required": false; }; "separatorKeyCodes": { "alias": "matChipInputSeparatorKeyCodes"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "id": { "alias": "id"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "disabledInteractive": { "alias": "matChipInputDisabledInteractive"; "required": false; }; }, { "chipEnd": "matChipInputTokenEnd"; }, never, never, true, never>;
// (undocumented)
static ɵfac: i0.ɵɵFactoryDeclaration<MatChipInput, never>;
}
@@ -433,6 +440,7 @@ export class MatChipRow extends MatChip implements AfterViewInit {
// @public
export interface MatChipsDefaultOptions {
hideSingleSelectionIndicator?: boolean;
inputDisabledInteractive?: boolean;
separatorKeyCodes: readonly number[] | ReadonlySet<number>;
}

5 changes: 4 additions & 1 deletion goldens/material/core/index.api.md
Original file line number Diff line number Diff line change
@@ -51,6 +51,9 @@ export class AnimationDurations {
static EXITING: string;
}

// @public
export function _animationsDisabled(): boolean;

// @public
export function _countGroupLabelsBeforeOption(optionIndex: number, options: QueryList<MatOption>, optionGroups: QueryList<MatOptgroup>): number;

@@ -318,7 +321,7 @@ export class MatOptionSelectionChange<T = any> {
export class MatPseudoCheckbox {
constructor(...args: unknown[]);
// (undocumented)
_animationMode?: "NoopAnimations" | "BrowserAnimations" | null | undefined;
_animationsDisabled: boolean;
appearance: 'minimal' | 'full';
disabled: boolean;
state: MatPseudoCheckboxState;
2 changes: 0 additions & 2 deletions goldens/material/progress-bar/index.api.md
Original file line number Diff line number Diff line change
@@ -25,8 +25,6 @@ export function MAT_PROGRESS_BAR_LOCATION_FACTORY(): MatProgressBarLocation;
export class MatProgressBar implements AfterViewInit, OnDestroy {
constructor(...args: unknown[]);
readonly animationEnd: EventEmitter<ProgressAnimationEnd>;
// (undocumented)
_animationMode?: "NoopAnimations" | "BrowserAnimations" | null | undefined;
get bufferValue(): number;
set bufferValue(v: number);
get color(): string | null | undefined;
2 changes: 1 addition & 1 deletion goldens/material/sort/index.api.md
Original file line number Diff line number Diff line change
@@ -100,7 +100,7 @@ export interface MatSortDefaultOptions {
export class MatSortHeader implements MatSortable, OnDestroy, OnInit, AfterViewInit {
constructor(...args: unknown[]);
// (undocumented)
protected _animationModule: "NoopAnimations" | "BrowserAnimations" | null;
protected _animationsDisabled: boolean;
arrowPosition: SortHeaderArrowPosition;
// (undocumented)
_columnDef: MatSortHeaderColumnDef | null;
4 changes: 2 additions & 2 deletions goldens/material/tabs/index.api.md
Original file line number Diff line number Diff line change
@@ -70,7 +70,7 @@ export abstract class MatPaginatedTabHeader implements AfterContentChecked, Afte
constructor(...args: unknown[]);
_alignInkBarToSelectedTab(): void;
// (undocumented)
_animationMode: "NoopAnimations" | "BrowserAnimations" | null;
_animationsDisabled: boolean;
// (undocumented)
protected _changeDetectorRef: ChangeDetectorRef;
_checkPaginationEnabled(): void;
@@ -246,7 +246,7 @@ export class MatTabGroup implements AfterViewInit, AfterContentInit, AfterConten
get animationDuration(): string;
set animationDuration(value: string | number);
// (undocumented)
_animationMode: "NoopAnimations" | "BrowserAnimations" | null;
_animationsDisabled: boolean;
ariaLabel: string;
ariaLabelledby: string;
// @deprecated
28 changes: 28 additions & 0 deletions integration/module-tests/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
load("//tools:defaults2.bzl", "ts_project")
load("//integration/module-tests:index.bzl", "module_test")

ts_project(
name = "test_lib",
testonly = True,
srcs = glob(["*.mts"]),
source_map = False,
tsconfig = "tsconfig.json",
deps = [
"//:node_modules/@angular/compiler-cli",
"//:node_modules/@types/node",
"//:node_modules/typescript",
],
)

module_test(
name = "test",
npm_packages = {
"//src/cdk:npm_package": "src/cdk/npm_package",
"//src/material:npm_package": "src/material/npm_package",
},
shard_count = 4,
skipped_entry_points = [
# This entry-point is JIT and would fail the AOT test.
"@angular/material/dialog/testing",
],
)
60 changes: 60 additions & 0 deletions integration/module-tests/find-all-modules.mts
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
import * as fs from 'node:fs/promises';
import * as path from 'node:path';
import * as ts from 'typescript';

export async function findAllEntryPointsAndExportedModules(packagePath: string) {
const packageJsonRaw = await fs.readFile(path.join(packagePath, 'package.json'), 'utf8');
const packageJson = JSON.parse(packageJsonRaw) as {
name: string;
exports: Record<string, Record<string, string>>;
};
const tasks: Promise<{importPath: string; symbolName: string}[]>[] = [];

for (const [subpath, conditions] of Object.entries(packageJson.exports)) {
if (conditions.types === undefined) {
continue;
}

tasks.push(
(async () => {
const dtsFile = path.join(packagePath, conditions.types);
const dtsBundleFile = ts.createSourceFile(
dtsFile,
await fs.readFile(dtsFile, 'utf8'),
ts.ScriptTarget.ESNext,
false,
);

return scanExportsForModules(dtsBundleFile).map(e => ({
importPath: path.posix.join(packageJson.name, subpath),
symbolName: e,
}));
})(),
);
}

const moduleExports = (await Promise.all(tasks)).flat();

return {
name: packageJson.name,
packagePath,
moduleExports,
};
}

function scanExportsForModules(sf: ts.SourceFile): string[] {
const moduleExports: string[] = [];
const visit = (node: ts.Node) => {
if (ts.isExportDeclaration(node) && ts.isNamedExports(node.exportClause)) {
moduleExports.push(
...node.exportClause.elements
.filter(e => e.name.text.endsWith('Module'))
.map(e => e.name.text),
);
}
};

ts.forEachChild(sf, visit);

return moduleExports;
}
25 changes: 25 additions & 0 deletions integration/module-tests/index.bzl
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
load("@aspect_rules_js//js:defs.bzl", "js_test")
load("@bazel_skylib//rules:write_file.bzl", "write_file")

def module_test(name, npm_packages, skipped_entry_points = [], additional_deps = [], **kwargs):
write_file(
name = "%s_config" % name,
out = "%s_config.json" % name,
content = [json.encode({
"packages": [pkg[1] for pkg in npm_packages.items()],
"skipEntryPoints": skipped_entry_points,
})],
)

js_test(
name = "test",
data = [
":%s_config" % name,
"//integration/module-tests:test_lib_rjs",
"//:node_modules/@angular/common",
"//:node_modules/@angular/core",
] + additional_deps + [pkg[0] for pkg in npm_packages.items()],
entry_point = ":index.mjs",
fixed_args = ["$(rootpath :%s_config)" % name],
**kwargs
)
Loading