{"version":3,"file":"bootkit-ng1-components-sidenav.mjs","sources":["../../../projects/ng1/components/sidenav/sidenav.component.ts","../../../projects/ng1/components/sidenav/sidenav-container.component.ts","../../../projects/ng1/components/sidenav/sidenav-container.component.html","../../../projects/ng1/components/sidenav/sidenav-content.component.ts","../../../projects/ng1/components/sidenav/sidenav.module.ts","../../../projects/ng1/components/sidenav/bootkit-ng1-components-sidenav.ts"],"sourcesContent":["import { booleanAttribute, numberAttribute, Component, effect, ElementRef, EventEmitter, input, OnDestroy, Output, Renderer2, ViewContainerRef, inject, ChangeDetectionStrategy, ViewEncapsulation, PLATFORM_ID, Inject, DOCUMENT, OnInit, Injector, AfterViewInit } from '@angular/core';\nimport { SidenavMode, SidenavPosition, SidenavSize } from './types';\nimport { isPlatformServer } from '@angular/common';\nimport { SidenavContainerComponent } from './sidenav-container.component';\nimport { Observable, Subscription, throttleTime } from 'rxjs';\n\n/**\n * A sidenav component that displays a sliding navigation panel.\n */\n@Component({\n  selector: 'ng1-sidenav',\n  template: `<ng-content></ng-content>`,\n  styleUrls: ['./sidenav.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  host: {\n    \"[class.ng1-sidenav-open]\": \"open()\",\n    \"[class.ng1-sidenav-fixed]\": \"fixedInViewport()\",\n    \"[class.ng1-sidenav-has-backdrop]\": \"hasBackdrop()\",\n    \"[style.width]\": \"position() == 'start' || position() == 'end' ? _getFixedSize() : undefined\",\n    \"[style.height]\": \"undefined\",\n    \"[style.z-index]\": \"zIndex()\",\n    \"[class.ng1-sidenav-start]\": \"position() == 'start'\",\n    \"[class.ng1-sidenav-end]\": \"position() == 'end'\",\n    \"[class.ng1-sidenav-top]\": \"position() == 'top'\",\n    \"[class.ng1-sidenav-bottom]\": \"position() == 'bottom'\",\n    \"[class.ng1-sidenav-small]\": \"size() == 'small'\",\n    \"[class.ng1-sidenav-medium]\": \"size() == 'medium'\",\n    \"[class.ng1-sidenav-large]\": \"size() == 'large'\",\n    \"[class.ng1-sidenav-full]\": \"size() == 'full'\",\n  }\n})\nexport class SidenavComponent implements OnDestroy {\n  private _bodyOverflowStyle?: string;\n  private readonly _sidenavContainer = inject(SidenavContainerComponent);\n  private readonly _document = inject(DOCUMENT);\n  private readonly _renderer = inject(Renderer2);\n  private _backdropRef?: HTMLDivElement;\n  private _backdropClickUnlistenFunc?: () => void;\n  private _backdropAnimationEndUnlistenFunc?: () => void;\n  private _platformId = inject(PLATFORM_ID);\n  protected _isPlatformServer = isPlatformServer(this._platformId)\n  private _resizeSubscription?: Subscription;\n  private readonly _elementRef = inject(ElementRef<HTMLElement>);\n\n\n  /**\n   * Whether the sidenav is open.\n   */\n  public readonly open = input(false, { transform: booleanAttribute });\n\n  /**\n   * Sidenav mode.\n   * Determines how the sidenav is displayed.\n   * Can be either 'push' or 'over'.\n   * - 'push': The content is pushed aside to make room for the sidenav.\n   * - 'over': The sidenav is displayed on top of the content.\n   */\n  public readonly mode = input<SidenavMode>('push');\n\n  /**\n   * Whether the sidenav has a backdrop.\n   * The backdrop is shown only when the sidenav is open and mode is 'over'.\n   */\n  public readonly hasBackdrop = input(false, { transform: booleanAttribute });\n\n  /**\n   * Sidenav z-index.\n   * Determines the stack order of the sidenav.\n   */\n  public readonly zIndex = input(1000, { transform: numberAttribute });\n\n  /**\n   * Sidenav position.\n   * Determines the position of the sidenav.\n   * Can be either 'start', 'end', 'top', or 'bottom'.\n   */\n  public readonly position = input<SidenavPosition>('start');\n\n  /**\n   * Sidenav size.\n   * Determines the size of the sidenav.  \n   * Can be either 'small', 'medium', 'large', 'full', or a specific value.  \n   * If a specific value is provided, it will be used as the width/height of the sidenav.\n   * @example\n   * - 100, '300px', '50%', '50vh', 'small', 'full', ...\n   */\n  public readonly size = input<SidenavSize>();\n\n  /**\n   * Whether the sidenav is fixed in the viewport.\n   */\n  public readonly fixedInViewport = input(false, { transform: booleanAttribute });\n\n  public readonly elmentRef = inject(ElementRef);\n\n  /**\n   * Emits when the backdrop is clicked.\n   */\n  @Output() public readonly backdropClick = new EventEmitter<PointerEvent>();\n\n  constructor() {\n    effect(() => {\n      var mode = this.mode();\n      var open = this.open();\n      var hasBackdrop = this.hasBackdrop();\n\n      if (hasBackdrop) {\n        if (mode == 'over' && open) {\n          this._createBackdrop();\n\n          // disable body scroll when sidenav is open and fixedInViewport is true\n          if (!this._isPlatformServer && this.fixedInViewport()) {\n            const body = this._document.getElementsByTagName('body')[0];\n            this._bodyOverflowStyle = body.style.overflow;\n            this._renderer.setStyle(body, 'overflow', 'hidden');\n          }\n        } else {\n          // trigger closing animation\n          if (this._backdropRef) {\n            this._renderer.addClass(this._backdropRef, 'ng1-sidenav-backdrop-closing');\n          }\n\n          // restore body scroll when sidenav is closed\n          if (!this._isPlatformServer && this.fixedInViewport()) {\n            const body = document.getElementsByTagName('body')[0];\n            this._renderer.setStyle(body, 'overflow', this._bodyOverflowStyle);\n          }\n        }\n      }\n    });\n\n    if (!this._isPlatformServer) {\n      this._observeResize()\n        .pipe(throttleTime(100, undefined, { leading: true, trailing: true }))\n        .subscribe(entries => {\n          this._sidenavContainer.changeDetectorRef.markForCheck();\n          // console.log('Resized to:', entries[0].contentRect.width, entries[0].contentRect.height);\n        });\n    }\n  }\n\n  _getFixedSize(): string | undefined {\n    let size = this.size();\n    let t = typeof size;\n    if (t == 'string') {\n      return ['small', 'medium', 'large', 'full'].includes(size as string) ? undefined : size as string;\n    } else if (t == 'number') {\n      return `${size}px`;\n    } else {\n      return undefined;\n    }\n  };\n\n  private _observeResize(): Observable<ResizeObserverEntry[]> {\n    return new Observable(observer => {\n      const resizeObserver = new ResizeObserver(entries => observer.next(entries));\n      resizeObserver.observe(this._elementRef.nativeElement);\n      return () => resizeObserver.disconnect();\n    });\n  }\n\n  private _createBackdrop() {\n    this._backdropRef = this._renderer.createElement('div');\n    let classes = ['ng1-sidenav-backdrop', 'ng1-sidenav-backdrop-opening'];\n    if(this.fixedInViewport()) {\n      classes.push('ng1-sidenav-backdrop-fullscreen');\n    }\n\n    classes.forEach(x => this._renderer.addClass(this._backdropRef, x));\n    \n    this._backdropClickUnlistenFunc = this._renderer.listen(this._backdropRef, 'click', (e) => {\n      this.backdropClick.emit(e);\n    });\n\n    this._backdropAnimationEndUnlistenFunc = this._renderer.listen(this._backdropRef, 'animationend', (e) => {\n      if (!this.open()) {\n        this._destroyBackdrop();\n      }\n    });\n\n    if (this.zIndex() != undefined) {\n      this._renderer.setStyle(this._backdropRef, 'z-index', this.zIndex());\n    }\n\n    // Move backdrop element before Host element\n    const parent = this._renderer.parentNode(this.elmentRef.nativeElement);\n    this._renderer.insertBefore(parent, this._backdropRef, this.elmentRef.nativeElement);\n  }\n\n  private _destroyBackdrop() {\n    if (this._backdropRef) {\n      this._backdropClickUnlistenFunc?.();\n      this._backdropAnimationEndUnlistenFunc?.();\n      this._renderer.removeChild(this._elementRef.nativeElement.parentNode, this._backdropRef);\n      this._backdropRef = undefined;\n    }\n  }\n\n  ngOnDestroy(): void {\n    this._destroyBackdrop();\n    this._resizeSubscription?.unsubscribe();\n  }\n}\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, inject, PLATFORM_ID, QueryList, ViewEncapsulation } from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\nimport { SidenavComponent } from './sidenav.component';\nimport { SidenavPosition } from './types';\n\n/**\n * Sidenav container component\n */\n@Component({\n  selector: 'ng1-sidenav-container',\n  templateUrl: './sidenav-container.component.html',\n  styleUrls: ['./sidenav-container.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  host: {\n    \"[style.padding-inline-start]\": \"_getPadding('start')\",\n    \"[style.padding-inline-end]\": \"_getPadding('end')\",\n    \"[style.padding-top]\": \"_getPadding('top')\",\n    \"[style.padding-bottom]\": \"_getPadding('bottom')\",\n    \"[class.ng1-sidenav-transition]\": \"_isTransitionEnabled\",\n    \"[class.ng1-sidenav-content-hidden]\": \"!_canComputePadding()\",\n  }\n})\nexport class SidenavContainerComponent implements AfterViewInit {\n  private readonly _platformId = inject(PLATFORM_ID);\n  protected readonly _isPlatformServer = isPlatformServer(this._platformId)\n  protected _isTransitionEnabled = false;\n  @ContentChildren(SidenavComponent) protected _sidenavs!: QueryList<SidenavComponent>;\n\n  public readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n  protected _getPadding(position: SidenavPosition) {\n    let openSidenavs = this._sidenavs.filter(x => x.open() && x.mode() == 'push');\n    let filteredSidenavs = openSidenavs.filter(x => x.position() == position);\n    if(filteredSidenavs.length == 0) return undefined;\n\n    if (this._isPlatformServer) {\n      let hasDynamicSidenavs = openSidenavs.some(x => x._getFixedSize() == undefined);\n      if (hasDynamicSidenavs) {\n        // we cannot compute padding on the server\n        return undefined;\n      } else {\n        let fixedSizes = filteredSidenavs.map(x => x._getFixedSize());\n        return fixedSizes.length > 1 ? `max(${fixedSizes.join(', ')})` : fixedSizes[0];\n      }\n    } else {\n      let horizontal = position == 'start' || position == 'end';\n      let sizes = filteredSidenavs.map(x => horizontal ? x.elmentRef.nativeElement.offsetWidth : x.elmentRef.nativeElement.offsetHeight);\n      return `${Math.max(...sizes)}px`;\n    }\n  };\n\n  ngAfterViewInit() {\n    if (!this._isPlatformServer) {\n      setTimeout(() => this._isTransitionEnabled = true);\n    }\n  }\n\n  // In some modes the content is pushed based on the width of the opened sidenavs, however on\n  // the server we can't measure the sidenav-container padding, so the padding is always zero. This can cause the\n  // content to jump around when it's rendered on the server and hydrated on the client.\n  // We avoid it by hiding the content on the initial render and then showing it once the sidenav\n  // has been measured on the client.\n  protected _canComputePadding() {\n    if (this._isPlatformServer) {\n      let hasDynamicSizenavs = this._sidenavs.some(x => x.open() && x.mode() == 'push' && x._getFixedSize() == undefined);\n      return !hasDynamicSizenavs;\n    }\n\n    return true;\n  }\n}\n","<ng-content select=\"ng1-sidenav-content\"></ng-content>\n<ng-content></ng-content>","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * Sidenav content component\n */\n@Component({\n  selector: 'ng1-sidenav-content',\n  template: `<ng-content></ng-content>`,\n  styles: `ng1-sidenav-content {display: block}`,\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n})\nexport class SidenavContentComponent {\n}\n","import { NgModule } from '@angular/core';\nimport { SidenavContainerComponent } from './sidenav-container.component';\nimport { SidenavComponent } from './sidenav.component';\nimport { SidenavContentComponent } from './sidenav-content.component';\n\n/**\n * Sidenav module\n */\n@NgModule({\n  imports: [\n    SidenavContainerComponent,\n    SidenavComponent,\n    SidenavContentComponent\n  ],\n  exports: [\n    SidenavContainerComponent,\n    SidenavComponent,\n    SidenavContentComponent\n  ]\n})\nexport class SidenavModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}