@clr/angular
Version:
Angular components for Clarity
1 lines • 18.8 kB
Source Map (JSON)
{"version":3,"file":"clr-angular-utils-conditional.mjs","sources":["../../../projects/angular/utils/conditional/if-active.service.ts","../../../projects/angular/utils/conditional/if-active.directive.ts","../../../projects/angular/utils/conditional/if-expanded.service.ts","../../../projects/angular/utils/conditional/if-expanded.directive.ts","../../../projects/angular/utils/conditional/conditional.module.ts","../../../projects/angular/utils/conditional/index.ts","../../../projects/angular/utils/conditional/clr-angular-utils-conditional.ts"],"sourcesContent":["/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable, InjectionToken } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nlet activeCounter = 0;\n\nexport const IF_ACTIVE_ID = new InjectionToken<number>('IF_ACTIVE_ID');\n\nexport function tokenFactory() {\n return ++activeCounter;\n}\n\nexport const IF_ACTIVE_ID_PROVIDER = {\n provide: IF_ACTIVE_ID,\n useFactory: tokenFactory,\n};\n\n@Injectable()\n\n/*********\n * @class IfActiveService\n *\n * @description\n * An injectable service used by IfActive structural directives and the components that implement IfActive in their\n * templates. It holds the value of the current state and provides an Observable that both the directive and the\n * implementing component can subscribe to in order to take action on current value changes.\n *\n */\nexport class IfActiveService {\n /********\n * @property _currentChange\n *\n * @description\n * A RXJS Subject that updates and provides subscriptions to for the current current state of a component template\n * implemting the IfActive structural directive.\n *\n */\n private _currentChange = new Subject<number>();\n\n /*********\n * @property _current\n *\n * @description\n * A property holding the current value for current/closed state of an IfActive structural directive.\n */\n private _current: number;\n\n /*********\n *\n * @description\n * A getter function that provides an observable for the _current Subject.\n *\n */\n get currentChange(): Observable<number> {\n return this._currentChange.asObservable();\n }\n\n /*********\n *\n * @description\n * A property that gets/sets the current state of _current for this instance of IfActive structural directive.\n * And, broadcasts the new value to all subscribers.\n *\n */\n get current(): number {\n return this._current;\n }\n set current(value: number) {\n if (this._current !== value) {\n this._current = value;\n this._currentChange.next(value);\n }\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n Directive,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Output,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { IF_ACTIVE_ID, IfActiveService } from './if-active.service';\n\n@Directive({\n selector: '[clrIfActive]',\n})\n\n/**********\n *\n * @class ClrIfActive\n *\n * @description\n * A structural directive that controls whether or not the associated TemplateRef is instantiated or not.\n * It makes use of a Component instance level service: IfActiveService to maintain state between itself and\n * the component using it in the component template.\n *\n */\nexport class ClrIfActive implements OnDestroy {\n /**********\n * @property activeChange\n *\n * @description\n * An event emitter that emits when the active property is set to allow for 2way binding when the directive is\n * used with de-structured / de-sugared syntax.\n *\n */\n @Output('clrIfActiveChange') activeChange = new EventEmitter<boolean>(false);\n\n private subscription: Subscription;\n private wasActive = false;\n\n constructor(\n private ifActiveService: IfActiveService,\n @Inject(IF_ACTIVE_ID) private id: number,\n private template: TemplateRef<any>,\n private container: ViewContainerRef\n ) {\n this.checkAndUpdateView(ifActiveService.current);\n\n this.subscription = ifActiveService.currentChange.subscribe(newCurrentId => {\n this.checkAndUpdateView(newCurrentId);\n });\n }\n\n /**\n * @description\n * A property that gets/sets IfActiveService.active with value.\n *\n */\n @Input('clrIfActive')\n get active() {\n return this.ifActiveService.current === this.id;\n }\n set active(value: boolean | string) {\n if (value) {\n this.ifActiveService.current = this.id;\n }\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n /**\n * @description\n * Function that takes a any value and either created an embedded view for the associated ViewContainerRef or,\n * Clears all views from the ViewContainerRef\n */\n updateView(value: boolean) {\n if (value) {\n this.container.createEmbeddedView(this.template);\n } else {\n this.container.clear();\n }\n }\n\n private checkAndUpdateView(currentId: number) {\n const isNowActive = currentId === this.id;\n // only emit if the new active state is changed since last time.\n if (isNowActive !== this.wasActive) {\n this.updateView(isNowActive);\n this.activeChange.emit(isNowActive);\n this.wasActive = isNowActive;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { ClrLoadingState, LoadingListener } from '@clr/angular/utils/loading';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable()\nexport class IfExpandService implements LoadingListener {\n expandable = 0;\n hasExpandTemplate = false;\n\n protected _loading = false;\n protected _expanded = false;\n protected _expandChange = new Subject<boolean>();\n\n get loading(): boolean {\n return this._loading;\n }\n set loading(value: boolean) {\n value = !!value;\n if (value !== this._loading) {\n this._loading = value;\n }\n }\n\n get expanded(): boolean {\n return this._expanded;\n }\n set expanded(value: boolean) {\n value = !!value;\n if (value !== this._expanded) {\n this._expanded = value;\n this._expandChange.next(value);\n }\n }\n\n get expandChange(): Observable<boolean> {\n return this._expandChange.asObservable();\n }\n\n toggle() {\n this.expanded = !this._expanded;\n }\n\n loadingStateChange(state: ClrLoadingState): void {\n switch (state) {\n case ClrLoadingState.LOADING:\n this.loading = true;\n break;\n default:\n this.loading = false;\n break;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { IfExpandService } from './if-expanded.service';\n\n@Directive({\n selector: '[clrIfExpanded]',\n})\nexport class ClrIfExpanded implements OnInit, OnDestroy {\n @Output('clrIfExpandedChange') expandedChange = new EventEmitter<boolean>(true);\n\n private _expanded = false;\n\n /**\n * Subscriptions to all the services and queries changes\n */\n private _subscriptions: Subscription[] = [];\n\n constructor(\n @Optional() private template: TemplateRef<any>,\n private container: ViewContainerRef,\n private el: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private expand: IfExpandService\n ) {\n this._subscriptions.push(\n expand.expandChange.subscribe(() => {\n this.updateView();\n this.expandedChange.emit(expand.expanded);\n })\n );\n\n expand.hasExpandTemplate = !!template;\n }\n\n @Input('clrIfExpanded')\n get expanded(): boolean | string {\n return this._expanded;\n }\n set expanded(value: boolean | string) {\n if (typeof value === 'boolean') {\n this.expand.expanded = value;\n this._expanded = value;\n }\n }\n\n ngOnInit() {\n this.expand.expandable++;\n this.updateView();\n }\n\n ngOnDestroy() {\n this.expand.expandable--;\n this._subscriptions.forEach((sub: Subscription) => sub.unsubscribe());\n }\n\n private updateView() {\n if (this.expand.expanded && this.container.length !== 0) {\n return;\n }\n if (this.template) {\n if (this.expand.expanded) {\n // Should we pass a context? I don't see anything useful to pass right now,\n // but we can come back to it in the future as a solution for additional features.\n this.container.createEmbeddedView(this.template);\n } else {\n // TODO: Move when we move the animation logic to Datagrid Row Expand\n // We clear before the animation is over. Not ideal, but doing better would involve a much heavier\n // process for very little gain. Once Angular animations are dynamic enough, we should be able to\n // get the optimal behavior.\n this.container.clear();\n }\n } else {\n try {\n // If we don't have a template ref, we fallback to a crude display: none for now.\n if (this.expand.expanded) {\n this.renderer.setStyle(this.el.nativeElement, 'display', null);\n } else {\n this.renderer.setStyle(this.el.nativeElement, 'display', 'none');\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n // We catch the case where clrIfExpanded was put on a non-DOM element, and we just do nothing\n }\n }\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { ClrIfActive } from './if-active.directive';\nimport { ClrIfExpanded } from './if-expanded.directive';\n\nexport const CONDITIONAL_DIRECTIVES: Type<any>[] = [ClrIfActive, ClrIfExpanded];\n\n@NgModule({\n imports: [CommonModule, CONDITIONAL_DIRECTIVES],\n exports: [CONDITIONAL_DIRECTIVES],\n})\nexport class ClrConditionalModule {}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './if-active.directive';\nexport * from './if-active.service';\nexport * from './if-expanded.directive';\nexport * from './if-expanded.service';\nexport * from './conditional.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.IfExpandService"],"mappings":"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"}