Currently the only way to disable animations is by providing the `NoopAnimationsModule`
which doesn't allow for it to be disabled based on runtime information. These changes
add support for disabling animations based on runtime information by using
`BrowserAnimationsModule.withConfig({disableAnimations: true})`.
PR Close #40731
71 lines
2.1 KiB
TypeScript
71 lines
2.1 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright Google LLC All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by an MIT-style license that can be
|
|
* found in the LICENSE file at https://angular.io/license
|
|
*/
|
|
import {ModuleWithProviders, NgModule} from '@angular/core';
|
|
import {BrowserModule} from '@angular/platform-browser';
|
|
|
|
import {BROWSER_ANIMATIONS_PROVIDERS, BROWSER_NOOP_ANIMATIONS_PROVIDERS} from './providers';
|
|
|
|
/**
|
|
* Object used to configure the behavior of {@link BrowserAnimationsModule}
|
|
* @publicApi
|
|
*/
|
|
export interface BrowserAnimationsModuleConfig {
|
|
/**
|
|
* Whether animations should be disabled. Passing this is identical to providing the
|
|
* `NoopAnimationsModule`, but it can be controlled based on a runtime value.
|
|
*/
|
|
disableAnimations?: boolean;
|
|
}
|
|
|
|
/**
|
|
* Exports `BrowserModule` with additional [dependency-injection providers](guide/glossary#provider)
|
|
* for use with animations. See [Animations](guide/animations).
|
|
* @publicApi
|
|
*/
|
|
@NgModule({
|
|
exports: [BrowserModule],
|
|
providers: BROWSER_ANIMATIONS_PROVIDERS,
|
|
})
|
|
export class BrowserAnimationsModule {
|
|
/**
|
|
* Configures the module based on the specified object.
|
|
*
|
|
* @param config Object used to configure the behavior of the `BrowserAnimationsModule`.
|
|
* @see `BrowserAnimationsModuleConfig`
|
|
*
|
|
* @usageNotes
|
|
* When registering the `BrowserAnimationsModule`, you can use the `withConfig`
|
|
* function as follows:
|
|
* ```
|
|
* @NgModule({
|
|
* imports: [BrowserAnimationsModule.withConfig(config)]
|
|
* })
|
|
* class MyNgModule {}
|
|
* ```
|
|
*/
|
|
static withConfig(config: BrowserAnimationsModuleConfig):
|
|
ModuleWithProviders<BrowserAnimationsModule> {
|
|
return {
|
|
ngModule: BrowserAnimationsModule,
|
|
providers: config.disableAnimations ? BROWSER_NOOP_ANIMATIONS_PROVIDERS :
|
|
BROWSER_ANIMATIONS_PROVIDERS
|
|
};
|
|
}
|
|
}
|
|
|
|
/**
|
|
* A null player that must be imported to allow disabling of animations.
|
|
* @publicApi
|
|
*/
|
|
@NgModule({
|
|
exports: [BrowserModule],
|
|
providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS,
|
|
})
|
|
export class NoopAnimationsModule {
|
|
}
|