@clr/angular
Version:
Angular components for Clarity
1 lines • 14.2 kB
Source Map (JSON)
{"version":3,"file":"clr-angular-collapsible-panel.mjs","sources":["../../../projects/angular/collapsible-panel/models/collapsible-panel.model.ts","../../../projects/angular/collapsible-panel/providers/collapsible-panel.service.ts","../../../projects/angular/collapsible-panel/collapsible-panel.ts","../../../projects/angular/collapsible-panel/utils/animation.ts","../../../projects/angular/collapsible-panel/index.ts","../../../projects/angular/collapsible-panel/clr-angular-collapsible-panel.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\nlet panelGroupCount = 0;\n\nexport class CollapsiblePanelModel {\n index: number = null;\n disabled = false;\n open = false;\n templateId = `${this.id}-${this.groupId}`;\n constructor(\n public id: string,\n public groupId: number | string\n ) {}\n}\n\nexport class CollapsiblePanelGroupModel {\n protected panelGroupCount = panelGroupCount++;\n protected _panels: { [id: string]: CollapsiblePanelModel } = {};\n\n get panels(): CollapsiblePanelModel[] {\n return Object.keys(this._panels).map(id => this._panels[id]);\n }\n\n updatePanelOrder(ids: string[]) {\n ids.forEach((id, index) => {\n if (this._panels[id]) {\n this._panels[id].index = index;\n }\n });\n this.removeOldPanels(ids);\n }\n\n addPanel(id: string, open = false) {\n this._panels[id] = new CollapsiblePanelModel(id, this.panelGroupCount);\n this._panels[id].open = open;\n }\n\n togglePanel(panelId: string, open?: boolean) {\n if (!this._panels[panelId]) {\n return;\n }\n\n const panelIsOpen = this._panels[panelId].open;\n this._panels[panelId].open = open !== undefined ? open : !panelIsOpen;\n }\n\n disablePanel(panelId: string, disabled: boolean) {\n if (!this._panels[panelId]) {\n return;\n }\n\n this._panels[panelId].disabled = disabled;\n }\n\n private removeOldPanels(ids: string[]) {\n this.panels\n .filter(panel => ids.find(id => id === panel.id) === undefined)\n .forEach(panel => delete this._panels[panel.id]);\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 { BehaviorSubject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { CollapsiblePanelGroupModel, CollapsiblePanelModel } from '../models/collapsible-panel.model';\n\n@Injectable()\nexport class CollapsiblePanelService {\n protected panelGroup = new CollapsiblePanelGroupModel();\n protected readonly _panelsChanges = new BehaviorSubject(this.panelGroup.panels);\n\n getPanelChanges(panelId: string): Observable<CollapsiblePanelModel> {\n return this._panelsChanges.pipe(map(panels => panels.find(s => s.id === panelId)));\n }\n\n addPanel(panelId: string, open = false) {\n this.panelGroup.addPanel(panelId, open);\n this.emitUpdatedPanels();\n }\n\n togglePanel(panelId: string, open?: boolean) {\n this.panelGroup.togglePanel(panelId, open);\n this.emitUpdatedPanels();\n }\n\n disablePanel(panelId: string, disabled?: boolean) {\n this.panelGroup.disablePanel(panelId, disabled);\n this.emitUpdatedPanels();\n }\n\n updatePanelOrder(ids: string[]) {\n this.panelGroup.updatePanelOrder(ids);\n this.emitUpdatedPanels();\n }\n\n protected emitUpdatedPanels() {\n this._panelsChanges.next(this.panelGroup.panels);\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 { ChangeDetectorRef, Directive, EventEmitter, OnInit, SimpleChanges } from '@angular/core';\nimport { IfExpandService, uniqueIdFactory } from '@clr/angular/utils';\nimport { Observable } from 'rxjs';\nimport { filter, tap } from 'rxjs/operators';\n\nimport { CollapsiblePanelModel } from './models/collapsible-panel.model';\nimport { CollapsiblePanelService } from './providers/collapsible-panel.service';\n\n@Directive()\nexport abstract class CollapsiblePanel implements OnInit {\n panelOpen = false;\n panelOpenChange = new EventEmitter<boolean>();\n\n panel: Observable<CollapsiblePanelModel>;\n\n protected _panelIndex: number;\n private _id = uniqueIdFactory();\n\n constructor(\n protected panelService: CollapsiblePanelService,\n protected ifExpandService: IfExpandService,\n protected cdr: ChangeDetectorRef\n ) {}\n\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value;\n }\n\n abstract get disabled(): boolean;\n\n ngOnInit() {\n this.panelService.addPanel(this.id, this.panelOpen);\n this.panelService.disablePanel(this.id, this.disabled);\n this.panel = this.panelService.getPanelChanges(this.id).pipe(\n filter(panel => !!panel),\n tap(panel => this.emitPanelChange(panel))\n );\n }\n\n togglePanel() {\n this.panelService.togglePanel(this.id);\n }\n\n collapsePanelOnAnimationDone(panel: CollapsiblePanelModel) {\n if (!panel.open) {\n this.ifExpandService.expanded = false;\n }\n }\n\n protected handlePanelInputChanges(changes: SimpleChanges) {\n if (this.panel && changes.panelOpen && changes.panelOpen.currentValue !== changes.panelOpen.previousValue) {\n this.panelService.togglePanel(this.id, changes.panelOpen.currentValue);\n }\n\n if (this.panel && changes.disabled && changes.disabled.currentValue !== changes.disabled.previousValue) {\n this.panelService.disablePanel(this.id, changes.disabled.currentValue);\n }\n }\n\n private emitPanelChange(panel: CollapsiblePanelModel) {\n if (panel.index !== this._panelIndex) {\n this._panelIndex = panel.index;\n this.cdr.detectChanges();\n }\n\n if (panel.open !== this.panelOpen) {\n this.panelOpenChange.emit(panel.open);\n this.panelOpen = panel.open;\n }\n\n if (panel.open) {\n this.ifExpandService.expanded = true;\n }\n }\n\n abstract getPanelStateClasses(panel: CollapsiblePanelModel): string;\n abstract getContentId(id: string): string;\n abstract getHeaderId(id: string): string;\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 { animate, style, transition, trigger } from '@angular/animations';\nimport { defaultAnimationTiming } from '@clr/angular/utils';\n\nexport const skipInitialRenderTrigger = trigger('skipInitialRender', [transition(':enter', [])]);\n\nexport const panelExpandTransition = transition('void => *', [\n style({ display: 'block', height: 0 }),\n animate(defaultAnimationTiming, style({ height: '*' })),\n]);\n\nexport const panelCollapseTransition = transition('* => void', [\n style({ display: 'block' }),\n animate(defaultAnimationTiming, style({ height: 0, display: 'none' })),\n]);\n\nexport const collapsiblePanelExpandAnimation = [skipInitialRenderTrigger, trigger('toggle', [panelExpandTransition])];\n\nexport const collapsiblePanelAnimation = [\n skipInitialRenderTrigger,\n trigger('toggle', [panelExpandTransition, panelCollapseTransition]),\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\nexport * from './collapsible-panel';\nexport * from './models/collapsible-panel.model';\nexport * from './providers/collapsible-panel.service';\nexport * from './utils/animation';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.CollapsiblePanelService"],"mappings":"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"}