ngx-bootstrap
Version:
Angular Bootstrap
1 lines • 16 kB
Source Map (JSON)
{"version":3,"file":"ngx-bootstrap-collapse.mjs","sources":["../../../../src/collapse/collapse-animations.ts","../../../../src/collapse/collapse.directive.ts","../../../../src/collapse/collapse.module.ts","../../../../src/collapse/ngx-bootstrap-collapse.ts"],"sourcesContent":["export const COLLAPSE_ANIMATION_DURATION_MS = 400;\nexport const COLLAPSE_ANIMATION_TIMING = `${COLLAPSE_ANIMATION_DURATION_MS}ms cubic-bezier(0.4,0.0,0.2,1)`;\n","import {\n AfterViewChecked,\n Directive,\n ElementRef,\n HostBinding,\n OnDestroy,\n Renderer2,\n effect,\n input,\n output\n} from '@angular/core';\n\nimport { onTransitionFinished, TransitionFinishedRef } from 'ngx-bootstrap/utils';\n\nimport { COLLAPSE_ANIMATION_DURATION_MS, COLLAPSE_ANIMATION_TIMING } from './collapse-animations';\n\n@Directive({\n selector: '[collapse]',\n exportAs: 'bs-collapse',\n host: {\n '[class.collapse]': 'true'\n },\n standalone: true\n})\nexport class CollapseDirective implements AfterViewChecked, OnDestroy {\n /** This event fires as soon as content collapses */\n collapsed = output<CollapseDirective>();\n /** This event fires when collapsing is started */\n collapses = output<CollapseDirective>();\n /** This event fires as soon as content becomes visible */\n expanded = output<CollapseDirective>();\n /** This event fires when expansion is started */\n expands = output<CollapseDirective>();\n // shown\n @HostBinding('class.in')\n @HostBinding('class.show')\n\n isExpanded = true;\n collapseNewValue = true;\n // hidden\n @HostBinding('attr.aria-hidden') isCollapsed = false;\n // stale state\n @HostBinding('class.collapse') isCollapse = true;\n // animation state\n @HostBinding('class.collapsing') isCollapsing = false;\n\n display = input<string>('block');\n\n /** turn on/off animation */\n isAnimated = input<boolean>(false);\n /** A flag indicating visibility of content (shown or hidden) */\n collapse = input<boolean>(false);\n\n private _display = 'block';\n private _isAnimationDone?: boolean;\n private _stylesLoaded = false;\n private _isTransitionRunning = false;\n private _pendingFinish?: TransitionFinishedRef;\n private _rafId?: number;\n\n private _COLLAPSE_ACTION_NAME = 'collapse';\n private _EXPAND_ACTION_NAME = 'expand';\n\n constructor(private _el: ElementRef, private _renderer: Renderer2) {\n // Watch for display changes\n effect(() => {\n const displayValue = this.display();\n this._display = displayValue;\n if (displayValue === 'none') {\n this.hide();\n return;\n }\n this.isAnimated() ? this.toggle() : this.show();\n });\n\n // Watch for collapse changes\n effect(() => {\n const collapseValue = this.collapse();\n this.collapseNewValue = collapseValue;\n if (!this._isTransitionRunning || this._isAnimationDone) {\n this.isExpanded = collapseValue;\n this.toggle();\n }\n });\n }\n\n ngAfterViewChecked(): void {\n this._stylesLoaded = true;\n }\n\n /** allows to manually toggle content visibility */\n toggle(): void {\n if (this.isExpanded) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /** allows to manually hide content */\n hide(): void {\n this.isCollapsing = true;\n this.isExpanded = false;\n this.isCollapsed = true;\n this.isCollapsing = false;\n\n this.collapses.emit(this);\n\n this._isAnimationDone = false;\n\n this.animationRun(this.isAnimated(), this._COLLAPSE_ACTION_NAME)(() => {\n this._isAnimationDone = true;\n if (this.collapseNewValue !== this.isCollapsed && this.isAnimated()) {\n this.show();\n return;\n }\n this.collapsed.emit(this);\n this._renderer.setStyle(this._el.nativeElement, 'display', 'none');\n });\n }\n\n /** allows to manually show collapsed content */\n show(): void {\n this._renderer.setStyle(this._el.nativeElement, 'display', this._display);\n\n this.isCollapsing = true;\n this.isExpanded = true;\n this.isCollapsed = false;\n this.isCollapsing = false;\n\n this.expands.emit(this);\n\n this._isAnimationDone = false;\n this.animationRun(this.isAnimated(), this._EXPAND_ACTION_NAME)(() => {\n this._isAnimationDone = true;\n if (this.collapseNewValue !== this.isCollapsed && this.isAnimated()) {\n this.hide();\n return;\n }\n this.expanded.emit(this);\n });\n }\n\n animationRun(isAnimated: boolean, action: string): (callback: () => void) => void {\n if (!isAnimated || !this._stylesLoaded) {\n return (callback: () => void) => callback();\n }\n\n const el = this._el.nativeElement as HTMLElement;\n const isExpand = action === this._EXPAND_ACTION_NAME;\n // True when a CSS transition is already mid-flight; we can reverse it by\n // snapshotting the current rendered height and flipping the target.\n const wasRunning = !!this._pendingFinish;\n\n this._cancelPending();\n\n // Ensure the element is visible before measuring scrollHeight — Bootstrap's\n // .collapse:not(.show) { display:none } can win over a missing inline style.\n this._renderer.setStyle(el, 'display', this._display);\n this._renderer.setStyle(el, 'overflow', 'hidden');\n this._renderer.setStyle(el, 'transition', `height ${COLLAPSE_ANIMATION_TIMING}`);\n\n this._isTransitionRunning = true;\n\n return (callback: () => void) => {\n const finish = () => {\n this._cancelPending();\n this._isTransitionRunning = false;\n if (isExpand) {\n // Remove the inline display so Bootstrap classes resume display control.\n this._renderer.removeStyle(el, 'display');\n } else {\n // Set display:none before removing the height style so the element\n // doesn't flash at its natural height for one frame.\n this._renderer.setStyle(el, 'display', 'none');\n }\n this._renderer.removeStyle(el, 'height');\n this._renderer.removeStyle(el, 'transition');\n this._renderer.removeStyle(el, 'overflow');\n callback();\n };\n\n // Guards against bubbled child events; falls back to a timeout if\n // transitionend never fires (e.g. start == end value).\n this._pendingFinish = onTransitionFinished(el, 'height', COLLAPSE_ANIMATION_DURATION_MS, finish);\n\n if (wasRunning) {\n // Mid-animation reversal: snapshot the current rendered height, force\n // a reflow so the browser registers it as the start state, then flip.\n const currentHeight = el.getBoundingClientRect().height;\n this._renderer.setStyle(el, 'height', `${currentHeight}px`);\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n el.offsetHeight;\n this._renderer.setStyle(el, 'height', isExpand ? `${el.scrollHeight}px` : '0');\n } else if (isExpand) {\n // Pin at 0px and force a synchronous layout so the browser registers it\n // as the CSS \"before-change\" style, then defer the target height to the\n // next animation frame so Chrome paints the 0px start state first.\n this._renderer.setStyle(el, 'height', '0');\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n el.offsetHeight;\n this._rafId = requestAnimationFrame(() => {\n this._rafId = undefined;\n this._renderer.setStyle(el, 'height', `${el.scrollHeight}px`);\n });\n } else {\n // Two-rAF pattern mirrors the expand direction: the first frame pins\n // the element at its natural height so the browser records a concrete\n // painted \"before\" value, then the second frame sets height:0 and the\n // browser transitions from the painted state. A single rAF with an\n // offsetHeight reflow is not reliable across browsers because the forced\n // reflow inside a rAF callback is not always treated as a transition\n // \"before-change\" checkpoint.\n this._rafId = requestAnimationFrame(() => {\n this._renderer.setStyle(el, 'height', `${el.scrollHeight}px`);\n this._rafId = requestAnimationFrame(() => {\n this._rafId = undefined;\n this._renderer.setStyle(el, 'height', '0');\n });\n });\n }\n };\n }\n\n ngOnDestroy(): void {\n this._cancelPending();\n }\n\n private _cancelPending(): void {\n this._pendingFinish?.cancel();\n this._pendingFinish = undefined;\n if (this._rafId !== undefined) {\n cancelAnimationFrame(this._rafId);\n this._rafId = undefined;\n }\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { CollapseDirective } from './collapse.directive';\n\n@NgModule({\n imports: [CollapseDirective],\n exports: [CollapseDirective]\n})\nexport class CollapseModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}