@daffodil/design 0.75.0 → 0.76.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/article/src/article-theme.scss +18 -8
- package/breadcrumb/README.md +52 -0
- package/breadcrumb/breadcrumb/breadcrumb.component.d.ts +7 -0
- package/breadcrumb/breadcrumb-item/breadcrumb-item.directive.d.ts +9 -0
- package/breadcrumb/breadcrumb.d.ts +3 -0
- package/breadcrumb/breadcrumb.module.d.ts +9 -0
- package/breadcrumb/examples/basic-breadcrumb/basic-breadcrumb.component.d.ts +5 -0
- package/breadcrumb/examples/index.d.ts +1 -0
- package/breadcrumb/examples/public_api.d.ts +2 -0
- package/breadcrumb/index.d.ts +1 -0
- package/breadcrumb/public_api.d.ts +4 -0
- package/breadcrumb/src/breadcrumb-theme.scss +13 -0
- package/core/article-encapsulated/article-encapsulated.directive.d.ts +17 -5
- package/core/colorable/colorable.directive.d.ts +29 -2
- package/core/compactable/compactable.directive.d.ts +31 -2
- package/core/manage-container-layout/manage-container-layout.directive.d.ts +38 -1
- package/core/sizable/sizable.directive.d.ts +46 -3
- package/core/skeletonable/skeletonable.directive.d.ts +36 -3
- package/core/statusable/statusable.directive.d.ts +33 -6
- package/core/text-alignable/text-alignable.directive.d.ts +35 -4
- package/esm2022/article/article/article.component.mjs +2 -2
- package/esm2022/breadcrumb/breadcrumb/breadcrumb.component.mjs +25 -0
- package/esm2022/breadcrumb/breadcrumb-item/breadcrumb-item.directive.mjs +33 -0
- package/esm2022/breadcrumb/breadcrumb.mjs +7 -0
- package/esm2022/breadcrumb/breadcrumb.module.mjs +26 -0
- package/esm2022/breadcrumb/daffodil-design-breadcrumb.mjs +5 -0
- package/esm2022/breadcrumb/examples/basic-breadcrumb/basic-breadcrumb.component.mjs +15 -0
- package/esm2022/breadcrumb/examples/daffodil-design-breadcrumb-examples.mjs +5 -0
- package/esm2022/breadcrumb/examples/index.mjs +2 -0
- package/esm2022/breadcrumb/examples/public_api.mjs +5 -0
- package/esm2022/breadcrumb/index.mjs +2 -0
- package/esm2022/breadcrumb/public_api.mjs +5 -0
- package/esm2022/core/article-encapsulated/article-encapsulated.directive.mjs +18 -6
- package/esm2022/core/colorable/colorable.directive.mjs +30 -3
- package/esm2022/core/compactable/compactable.directive.mjs +32 -3
- package/esm2022/core/manage-container-layout/manage-container-layout.directive.mjs +39 -2
- package/esm2022/core/sizable/sizable.directive.mjs +47 -4
- package/esm2022/core/skeletonable/skeletonable.directive.mjs +37 -4
- package/esm2022/core/statusable/statusable.directive.mjs +34 -7
- package/esm2022/core/text-alignable/text-alignable.directive.mjs +36 -5
- package/esm2022/modal/examples/basic-modal/basic-modal.component.mjs +2 -2
- package/esm2022/modal/modal/modal-config.mjs +1 -1
- package/esm2022/modal/service/modal.service.mjs +4 -1
- package/esm2022/sidebar/helper/is-docked-mode.mjs +9 -0
- package/esm2022/sidebar/helper/is-floating-mode.mjs +9 -0
- package/esm2022/sidebar/public_api.mjs +5 -1
- package/esm2022/sidebar/service/registration.type.mjs +2 -0
- package/esm2022/sidebar/service/sidebar.service.mjs +36 -0
- package/esm2022/sidebar/sidebar-viewport/sidebar-viewport.component.mjs +3 -3
- package/esm2022/tree/tree/tree.component.mjs +2 -2
- package/esm2022/tree/tree-item/tree-item.directive.mjs +3 -3
- package/fesm2022/daffodil-design-article.mjs +2 -2
- package/fesm2022/daffodil-design-article.mjs.map +1 -1
- package/fesm2022/daffodil-design-breadcrumb-examples.mjs +26 -0
- package/fesm2022/daffodil-design-breadcrumb-examples.mjs.map +1 -0
- package/fesm2022/daffodil-design-breadcrumb.mjs +90 -0
- package/fesm2022/daffodil-design-breadcrumb.mjs.map +1 -0
- package/fesm2022/daffodil-design-modal-examples.mjs +1 -1
- package/fesm2022/daffodil-design-modal-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-modal.mjs +3 -0
- package/fesm2022/daffodil-design-modal.mjs.map +1 -1
- package/fesm2022/daffodil-design-sidebar.mjs +57 -5
- package/fesm2022/daffodil-design-sidebar.mjs.map +1 -1
- package/fesm2022/daffodil-design-tree.mjs +4 -4
- package/fesm2022/daffodil-design-tree.mjs.map +1 -1
- package/fesm2022/daffodil-design.mjs +265 -26
- package/fesm2022/daffodil-design.mjs.map +1 -1
- package/modal/README.md +14 -1
- package/modal/modal/modal-config.d.ts +2 -0
- package/package.json +1 -1
- package/scss/theme.scss +2 -0
- package/scss/theming/_theme-css-variables.scss +1 -1
- package/sidebar/helper/is-docked-mode.d.ts +5 -0
- package/sidebar/helper/is-floating-mode.d.ts +5 -0
- package/sidebar/public_api.d.ts +4 -0
- package/sidebar/service/registration.type.d.ts +11 -0
- package/sidebar/service/sidebar.service.d.ts +25 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"daffodil-design-sidebar.mjs","sources":["../../../libs/design/sidebar/src/sidebar/is-opening.ts","../../../libs/design/sidebar/src/animation/sidebar-animation.ts","../../../libs/design/sidebar/src/animation/sidebar-animation-state.ts","../../../libs/design/sidebar/src/animation/sidebar-animation-width.ts","../../../libs/design/sidebar/src/sidebar/sidebar.component.ts","../../../libs/design/sidebar/src/sidebar/sidebar.component.html","../../../libs/design/sidebar/src/sidebar-footer/sidebar-footer.component.ts","../../../libs/design/sidebar/src/sidebar-header/sidebar-header-action/sidebar-header-action.directive.ts","../../../libs/design/sidebar/src/sidebar-header/sidebar-header-title/sidebar-header-title.directive.ts","../../../libs/design/sidebar/src/sidebar-header/sidebar-header.component.ts","../../../libs/design/sidebar/src/sidebar-header/sidebar-header.component.html","../../../libs/design/sidebar/src/sidebar-viewport/helper/has-parent-viewport.ts","../../../libs/design/sidebar/src/sidebar-viewport/nav-placement.ts","../../../libs/design/sidebar/src/sidebar-viewport/scroll-token/scroll.token.ts","../../../libs/design/sidebar/src/sidebar-viewport/utils/backdrop-interactable.ts","../../../libs/design/sidebar/src/sidebar-viewport/utils/content-pad.ts","../../../libs/design/sidebar/src/sidebar-viewport/utils/content-shift.ts","../../../libs/design/sidebar/src/animation/sidebar-viewport-animation-state.ts","../../../libs/design/sidebar/src/sidebar-viewport-backdrop/animation/backdrop-animation.ts","../../../libs/design/sidebar/src/sidebar-viewport-backdrop/animation/backdrop-animation-state.ts","../../../libs/design/sidebar/src/sidebar-viewport-backdrop/sidebar-viewport-backdrop.component.ts","../../../libs/design/sidebar/src/sidebar-viewport/sidebar-viewport.component.ts","../../../libs/design/sidebar/src/sidebar-viewport/sidebar-viewport.component.html","../../../libs/design/sidebar/src/sidebar.module.ts","../../../libs/design/sidebar/src/daffodil-design-sidebar.ts"],"sourcesContent":["import { DaffSidebarAnimationState } from '../animation/sidebar-animation-state';\n\n/**\n * Determine whether or animation states are going to an open state from a non-open state.\n */\nexport const isOpening = (fromState: DaffSidebarAnimationState, toState: DaffSidebarAnimationState): boolean => {\n if(fromState === 'under-open' && toState === 'open' || fromState === 'open' && toState === 'under-open') {\n return false;\n }\n\n if(toState === 'under-open' || toState === 'open') {\n return true;\n }\n return false;\n};\n","import {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\nconst duration = '200ms';\nconst sidebarAnimateInTransition = 'cubic-bezier(0.0, 0.0, 0.2, 1)';\nconst sidebarAnimateOutTransition = 'cubic-bezier(0.4, 0.0, 1, 1)';\n\nexport const daffSidebarAnimations: {\n readonly transformSidebar: AnimationTriggerMetadata;\n readonly transformContent: AnimationTriggerMetadata;\n readonly backdropTrigger: AnimationTriggerMetadata;\n} = {\n transformSidebar: trigger('transformSidebar', [\n // We remove the `transform` here completely, rather than setting it to zero, because\n // 3d transforms causes text to appear blurry on IE and Edge.\n state('open', style({\n transform: 'none',\n })),\n state('closed', style({\n transform: 'translateX({{width}})',\n }), { params: { width: '-240px' }}),\n transition('open => closed', animate(duration + ' ' + sidebarAnimateOutTransition)),\n transition('closed => open', animate(duration + ' ' + sidebarAnimateInTransition)),\n ]),\n transformContent: trigger('transformContent', [\n // We remove the `transform` here completely, rather than setting it to zero, because\n // 3d transforms causes text to appear blurry on IE and Edge.\n state('closed', style({\n transform: 'none',\n })),\n state('open', style({\n transform: 'translateX({{shift}})',\n }), { params: { shift: '-240px' }}),\n transition('open => closed', animate(duration + ' ' + sidebarAnimateInTransition)),\n transition('closed => open', animate(duration + ' ' + sidebarAnimateOutTransition)),\n ]),\n backdropTrigger: trigger('backdropTrigger', [\n state('open', style({\n opacity: 1,\n })),\n state('closed', style({\n opacity: 0,\n })),\n transition('open => closed', animate(duration + ' ' + sidebarAnimateOutTransition)),\n transition('closed => open', animate(duration + ' ' + sidebarAnimateInTransition)),\n ]),\n};\n\nexport enum DaffSidebarAnimationStates {\n OPEN = 'open',\n CLOSED = 'closed',\n UNDEROPEN = 'under-open',\n UNDERCLOSED = 'under-closed',\n SIDEFIXEDOPEN = 'side-fixed-open',\n SIDEFIXEDCLOSED = 'side-fixed-closed',\n NONE = 'none'\n}\n","import { DaffSidebarMode } from '../helper/sidebar-mode';\n\nexport type DaffSidebarAnimationState =\n'open' | 'closed' | 'under-open' | 'under-closed' | 'side-fixed-open' | 'side-fixed-closed' | 'none';\n\nexport const getAnimationState = (open: boolean, mode: DaffSidebarMode): DaffSidebarAnimationState => {\n if(mode === 'side') {\n return 'none';\n }\n\n if(mode === 'side-fixed' && open) {\n return 'side-fixed-open';\n }\n\n if(mode === 'side-fixed' && !open) {\n return 'side-fixed-closed';\n }\n\n if(open && mode === 'under') {\n return 'under-open';\n }\n\n if(!open && mode === 'under') {\n return 'under-closed';\n }\n\n if(open) {\n return 'open';\n } else {\n return 'closed';\n }\n};\n","import { DaffSidebarSide } from '../helper/sidebar-side';\n\nexport const getSidebarAnimationWidth =\n (side: DaffSidebarSide, width: number): string => side === 'left' ? -1 * width + 'px' : width + 'px';\n","import { AnimationEvent } from '@angular/animations';\nimport {\n ConfigurableFocusTrap,\n ConfigurableFocusTrapFactory,\n} from '@angular/cdk/a11y';\nimport { DOCUMENT } from '@angular/common';\nimport {\n Component,\n NgZone,\n ElementRef,\n Output,\n EventEmitter,\n HostBinding,\n ChangeDetectionStrategy,\n Input,\n HostListener,\n Inject,\n} from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport {\n daffFocusableElementsSelector,\n DaffFocusStackService,\n} from '@daffodil/design';\n\nimport { isOpening } from './is-opening';\nimport { daffSidebarAnimations } from '../animation/sidebar-animation';\nimport {\n DaffSidebarAnimationState,\n getAnimationState,\n} from '../animation/sidebar-animation-state';\nimport { getSidebarAnimationWidth } from '../animation/sidebar-animation-width';\nimport { DaffSidebarMode } from '../helper/sidebar-mode';\nimport { DaffSidebarSide } from '../helper/sidebar-side';\n\n/**\n * DaffSidebarComponent is heavily based upon the work done by the @angular/components\n * team on `mat-drawer` and `mat-sidenav`. `daff-sidebar` is intended to be\n * a simplified version (with a different design) of `mat-drawer`.\n */\n@Component({\n selector: 'daff-sidebar',\n templateUrl: './sidebar.component.html',\n styleUrls: ['./sidebar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n daffSidebarAnimations.transformSidebar,\n ],\n})\nexport class DaffSidebarComponent {\n /**\n * @docs-private\n *\n * The CSS classes set.\n */\n @HostBinding('class') get classes() {\n return {\n 'daff-sidebar': true,\n [this.side]: true,\n [this.mode]: true,\n };\n };\n\n /**\n * The animation state of the sidebar.\n */\n @HostBinding('@transformSidebar') get transformSidebar() {\n return {\n value: getAnimationState(this.open, this.mode),\n params: { width: getSidebarAnimationWidth(this.side, this.width) },\n };\n }\n\n /**\n * Event fired when `ESC` key is pressed when the sidebar has focus\n */\n @Output() escapePressed: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * What side of the viewport to show the sidebar on.\n */\n @Input() side: DaffSidebarSide = 'left';\n\n /**\n * The mode of the sidebar.\n */\n @Input() mode: DaffSidebarMode = 'side';\n\n /**\n * Whether or not the sidebar is open.\n */\n @Input() open = false;\n\n /**\n * The width of the sidebar.\n */\n get width() {\n return this._elementRef.nativeElement.offsetWidth;\n }\n\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _ngZone: NgZone,\n private _focusTrapFactory: ConfigurableFocusTrapFactory,\n private _focusStack: DaffFocusStackService,\n @Inject(DOCUMENT) private _doc: any,\n ) {\n\n /**\n * Listen to `keydown` events outside the zone so that change detection is not run every\n * time a key is pressed. Instead we re-enter the zone only if the `ESC` key is pressed.\n *\n */\n this._ngZone.runOutsideAngular(() => {\n fromEvent<KeyboardEvent>(this._elementRef.nativeElement, 'keydown').pipe(\n filter(event => event.key === 'Escape'),\n ).subscribe(event => this._ngZone.run(() => {\n this.escapePressed.emit();\n event.stopPropagation();\n }));\n });\n }\n\n private _focusTrap: ConfigurableFocusTrap;\n\n /**\n * Animation event that can be used to hook into when the transformSidebar\n * animation begins. This is used in sidebar to determine when to show the\n * visibility of the sidebar so that the animation does not jump as the element is shown.\n */\n @HostListener('@transformSidebar.start', ['$event']) onAnimationStart(e: AnimationEvent) {\n if (e.toState === 'open' || e.toState === 'under-open' || e.toState === 'side-fixed-open') {\n this._elementRef.nativeElement.style.visibility = 'visible';\n }\n }\n\n /**\n * Animation event that can be used to hook into when the\n * transformSidebar animation is complete.\n */\n @HostListener('@transformSidebar.done', ['$event']) onAnimationComplete(e: AnimationEvent) {\n if(isOpening(<DaffSidebarAnimationState>e.fromState, <DaffSidebarAnimationState>e.toState)) {\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n\n const focusableChild = (<HTMLElement>this._elementRef.nativeElement.querySelector(daffFocusableElementsSelector));\n\n this._focusStack.push(this._doc.activeElement);\n\n if(focusableChild) {\n focusableChild.focus();\n } else {\n this._elementRef.nativeElement.tabIndex = 0;\n (<HTMLElement>this._elementRef.nativeElement).focus();\n }\n } else {\n if(this._focusTrap) {\n this._focusTrap.destroy();\n this._focusTrap = undefined;\n this._focusStack.pop();\n }\n }\n\n /**\n * This is used in sidebar to determine when to hide the visibility\n * of the sidebar so that the animation does not jump as the element is hidden.\n */\n if (e.toState === 'closed' || e.toState === 'under-closed' || e.toState === 'side-fixed-closed') {\n this._elementRef.nativeElement.style.visibility = 'hidden';\n }\n }\n}\n","<ng-content select=\"daff-sidebar-header\"></ng-content>\n<div class=\"daff-sidebar__body\">\n\t<ng-content></ng-content>\n</div>\n<ng-content select=\"daff-sidebar-footer\"></ng-content>","import {\n Component,\n HostBinding,\n ChangeDetectionStrategy,\n} from '@angular/core';\n\n@Component({\n selector: 'daff-sidebar-footer',\n template: '<ng-content></ng-content>',\n styleUrls: ['./sidebar-footer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DaffSidebarFooterComponent {\n @HostBinding('class.daff-sidebar-footer') class = true;\n}\n","import {\n Directive,\n HostBinding,\n} from '@angular/core';\n\n@Directive({\n selector: '[daffSidebarHeaderAction]',\n})\nexport class DaffSidebarHeaderActionDirective {\n /**\n * @docs-private\n */\n @HostBinding('class.daff-sidebar-header__action') class = true;\n}\n","import {\n Directive,\n HostBinding,\n} from '@angular/core';\n\n@Directive({\n selector: '[daffSidebarHeaderTitle]',\n})\nexport class DaffSidebarHeaderTitleDirective {\n /**\n * @docs-private\n */\n @HostBinding('class.daff-sidebar-header__title') class = true;\n}\n","import {\n Component,\n HostBinding,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'daff-sidebar-header',\n templateUrl: './sidebar-header.component.html',\n styleUrls: ['./sidebar-header.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n\n})\nexport class DaffSidebarHeaderComponent {\n @HostBinding('class.daff-sidebar-header') class = true;\n}\n","<ng-content select=\"[daffSidebarHeaderAction]\"></ng-content>\n<ng-content select=\"[daffSidebarHeaderTitle]\"></ng-content>\n<ng-content></ng-content>","/**\n * Fallback function for determining whether or not a viewport has a parent viewport.\n * This is really only used in the Daffodil docs when the injector heirarchy\n * doesn't act as anticipated as a result of custom elements.\n */\nexport const hasParentViewport = (element: HTMLElement) => {\n let currentElement = element.parentElement;\n\n while (currentElement !== null) {\n if (currentElement.tagName === 'DAFF-SIDEBAR-VIEWPORT') {\n return true;\n }\n currentElement = currentElement.parentElement;\n }\n\n return false;\n};\n","/**\n * The placement of the nav in relation to the sidebar.\n * See {@link DaffNavPlacementEnum }\n */\nexport type DaffNavPlacement = 'above' | 'beside';\n\n/**\n * The placement of the nav in relation to the sidebar.\n * See {@link DaffNavPlacement }\n */\nexport enum DaffNavPlacementEnum {\n ABOVE = 'above',\n BESIDE = 'beside',\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n ElementRef,\n InjectionToken,\n inject,\n} from '@angular/core';\n\n/**\n * An interface that enables a user to enable or disable scrolling on sidebars.\n *\n * See {@link DAFF_SIDEBAR_SCROLL_TOKEN}\n */\nexport interface DaffSidebarScroll {\n enable(): void;\n disable(): void;\n}\n\n/**\n * An injection token that can be used within a sidebar to determine\n * what to do enabling and disabling scrolling. By default, the body\n * is the element where scrolling is controlled.\n */\nexport const DAFF_SIDEBAR_SCROLL_TOKEN = new InjectionToken<DaffSidebarScroll>('DAFF_SIDEBAR_SCROLL_TOKEN', {\n providedIn: 'root',\n factory: () => {\n const document = inject(DOCUMENT);\n return {\n enable: () => {\n document.body.style.overflow = null;\n },\n disable: () => {\n document.body.style.overflow = 'hidden';\n },\n };\n },\n});\n\n\n/**\n * A factory function that return a DaffSidebarScroll\n * for the current sidebar viewport.\n *\n * See the providers of {@link DaffSidebarViewportComponent}\n */\nexport const daffSidebarViewportScrollFactory = (): DaffSidebarScroll => {\n const element = inject(ElementRef).nativeElement;\n return {\n enable: () => {\n element.style.overflow = null;\n },\n disable: () => {\n element.style.overflow = 'hidden';\n },\n };\n};\n","import { QueryList } from '@angular/core';\n\nimport { DaffSidebarComponent } from '../../sidebar/sidebar.component';\n\n/**\n * Determines, given a list of sidebars, whether or not the backdrop is interactable (typically clickable).\n */\nexport const sidebarViewportBackdropInteractable = (sidebars: QueryList<DaffSidebarComponent>): boolean => sidebars.reduce(\n (acc: boolean, sidebar) => ((sidebar.mode === 'over' || sidebar.mode === 'under') && sidebar.open) || acc,\n false);\n","import { QueryList } from '@angular/core';\n\nimport { DaffSidebarModeEnum } from '../../helper/sidebar-mode';\nimport { DaffSidebarSide } from '../../helper/sidebar-side';\nimport { DaffSidebarComponent } from '../../sidebar/sidebar.component';\n\n/**\n * Given a list of sidebars, compute the associated content shift.\n */\nexport const sidebarViewportContentPadding = (sidebars: QueryList<DaffSidebarComponent>, side: DaffSidebarSide): number =>\n sidebars.reduce((acc: number, sidebar) => {\n if(!(sidebar.mode === DaffSidebarModeEnum.SideFixed && sidebar.open)) {\n return acc;\n }\n\n if(sidebar.side === side){\n return sidebar.width;\n } else {\n // This component is \"stateless\", its possible to have two open \"under\" sidebars.\n // As such, we defer to \"left\" being open by default.\n return acc;\n }\n }, 0);\n","import { QueryList } from '@angular/core';\n\nimport { DaffSidebarMode } from '../../helper/sidebar-mode';\nimport { DaffSidebarComponent } from '../../sidebar/sidebar.component';\n\nexport const isViewportContentShifted = (mode: DaffSidebarMode, open: boolean): boolean => (mode === 'under' && open);\n\n/**\n * Given a list of sidebars, compute the associated content shift.\n */\nexport const sidebarViewportContentShift = (sidebars: QueryList<DaffSidebarComponent>): number =>\n sidebars.reduce((acc: number, sidebar) => {\n if(!isViewportContentShifted(sidebar.mode, sidebar.open)) {\n return acc;\n }\n\n if(sidebar.side === 'left'){\n return sidebar.width;\n } else if (sidebar.side === 'right' && acc === 0) {\n return -1 * sidebar.width;\n } else {\n // This component is \"stateless\", its possible to have two open \"under\" sidebars.\n // As such, we defer to \"left\" being open by default.\n return acc;\n }\n }, 0);\n\n\n","import { AnimationStateWithParams } from '@daffodil/design';\n\nimport { DaffSidebarAnimationStates } from './sidebar-animation';\n\nexport type DaffSidebarViewportAnimationState = DaffSidebarAnimationStates.OPEN | DaffSidebarAnimationStates.CLOSED;\n\n\nexport interface DaffSidebarAnimationStateParams {\n shift: string;\n};\n\nexport type DaffSidebarViewportAnimationStateWithParams = AnimationStateWithParams<DaffSidebarViewportAnimationState, DaffSidebarAnimationStateParams>;\n\n\nexport const getSidebarViewportAnimationState = (open: boolean): DaffSidebarViewportAnimationState =>\n open ? DaffSidebarAnimationStates.OPEN : DaffSidebarAnimationStates.CLOSED;\n","import {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\nconst animationDuration = '350ms';\nconst backdropTransitionOut = 'cubic-bezier(0.4, 0.0, 1, 1)';\nconst backdropTransitionIn = 'cubic-bezier(0.0, 0.0, 0.2, 1)';\n\nexport const daffSidebarViewportBackdropAnimations: {\n readonly fadeBackdrop: AnimationTriggerMetadata;\n} = {\n fadeBackdrop: trigger('fadeBackdrop', [\n state('interactable', style({ opacity: 1 })),\n state('non-interactable', style({ opacity: 0 })),\n transition('interactable => non-interactable', animate(animationDuration + ' ' + backdropTransitionOut)),\n transition('non-interactable => interactable', animate(animationDuration + ' ' + backdropTransitionIn)),\n transition(':enter', [\n style({ opacity: 0 }),\n animate(animationDuration + ' ' + backdropTransitionIn, style({ opacity: 1 })),\n ]),\n transition(':leave', [\n animate(animationDuration + ' ' + backdropTransitionOut, style({ opacity: 0 })),\n ]),\n ]),\n};\n","export type DaffSidebarViewportBackdropAnimationState = 'interactable' | 'non-interactable';\nexport const getAnimationState = (interactable: boolean): DaffSidebarViewportBackdropAnimationState=> interactable ? 'interactable' : 'non-interactable';\n","import { AnimationEvent } from '@angular/animations';\nimport {\n Component,\n Output,\n EventEmitter,\n Input,\n ChangeDetectionStrategy,\n HostListener,\n HostBinding,\n OnInit,\n} from '@angular/core';\n\nimport { daffSidebarViewportBackdropAnimations } from './animation/backdrop-animation';\nimport { getAnimationState } from './animation/backdrop-animation-state';\n\n@Component({\n selector: 'daff-sidebar-viewport-backdrop',\n template: '<ng-content></ng-content>',\n styleUrls: ['./sidebar-viewport-backdrop.component.scss'],\n animations: [\n daffSidebarViewportBackdropAnimations.fadeBackdrop,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DaffSidebarViewportBackdropComponent implements OnInit {\n\n @HostBinding('class.interactable') interactableClass = true;\n\n /**\n * Determines whether or not the backdrop is transparent.\n */\n @Input() @HostBinding('class.transparent') transparent = false;\n\n /**\n * Determines whether or not the backdrop is interactable.\n */\n @Input() interactable = true;\n\n /**\n * Boolean property that determines whether or not the\n * backdrop should fill up its containing window.\n */\n @Input() @HostBinding('class.fullscreen') fullscreen = false;\n\n /**\n * Output event triggered when the backdrop is clicked.\n */\n @Output() backdropClicked: EventEmitter<void> = new EventEmitter<void>();\n\n ngOnInit(): void {\n this.interactableClass = this.interactable;\n }\n\n /**\n * Animation hook for that controls the backdrops\n * entrance and fade animations.\n */\n @HostBinding('@fadeBackdrop') get fadeBackdropTrigger() {\n return getAnimationState(this.interactable);\n }\n\n @HostListener('@fadeBackdrop.done', ['$event'])\n animationDone(e: AnimationEvent) {\n\t this.interactableClass = !(e.toState === ':leave' || e.toState === 'non-interactable');\n }\n\n @HostListener('@fadeBackdrop.start', ['$event'])\n animationStart(e: AnimationEvent) {\n\t if(e.toState === ':enter' || e.toState === 'interactable'){\n\t this.interactableClass = true;\n\t }\n }\n\n @HostListener('click')\n onBackdropClicked(): void {\n\t this.backdropClicked.emit();\n }\n}\n","import { AnimationEvent } from '@angular/animations';\nimport {\n Component,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ContentChildren,\n QueryList,\n AfterContentChecked,\n ElementRef,\n Input,\n HostBinding,\n Inject,\n SkipSelf,\n Optional,\n OnDestroy,\n} from '@angular/core';\n\nimport { hasParentViewport } from './helper/has-parent-viewport';\nimport {\n DaffNavPlacement,\n DaffNavPlacementEnum,\n} from './nav-placement';\nimport {\n DAFF_SIDEBAR_SCROLL_TOKEN,\n DaffSidebarScroll,\n daffSidebarViewportScrollFactory,\n} from './scroll-token/scroll.token';\nimport { sidebarViewportBackdropInteractable } from './utils/backdrop-interactable';\nimport { sidebarViewportContentPadding } from './utils/content-pad';\nimport {\n isViewportContentShifted,\n sidebarViewportContentShift,\n} from './utils/content-shift';\nimport {\n DaffSidebarAnimationStates,\n daffSidebarAnimations,\n} from '../animation/sidebar-animation';\nimport {\n DaffSidebarViewportAnimationStateWithParams,\n getSidebarViewportAnimationState,\n} from '../animation/sidebar-viewport-animation-state';\nimport { DaffSidebarMode } from '../helper/sidebar-mode';\nimport { DaffSidebarComponent } from '../sidebar/sidebar.component';\n\n/**\n * The DaffSidebarViewport is the \"holder\" of sidebars throughout an entire application.\n * It's generally only used once, like\n *\n * ```html\n * <daff-sidebar-viewport>\n * <daff-sidebar></daff-sidebar>\n * <p>Some Content</p>\n * </daff-sidebar-viewport>\n * ```\n *\n * Importantly, its possible for there to be multiple sidebars of many modes\n * at the same time. @see {@link DaffSidebarMode }\n *\n * Since this is a functional component, it's possible to have multiple \"open\" sidebars\n * at the same time. As a result, this component attempts to gracefully handle these situations.\n * However, importantly, there can only be one sidebar of each mode, on each side, at any given time.\n * If this is violated, this component will throw an exception.\n */\n@Component({\n selector: 'daff-sidebar-viewport',\n templateUrl: './sidebar-viewport.component.html',\n styleUrls: ['./sidebar-viewport.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n daffSidebarAnimations.transformContent,\n ],\n providers: [\n { provide: DAFF_SIDEBAR_SCROLL_TOKEN, useFactory: daffSidebarViewportScrollFactory },\n ],\n})\nexport class DaffSidebarViewportComponent implements AfterContentChecked, OnDestroy {\n @HostBinding('class.daff-sidebar-viewport') hostClass = true;\n\n @HostBinding('class') get classes() {\n return {\n 'daff-sidebar-viewport': true,\n [this.navPlacement]: true,\n };\n };\n\n get isNavOnSide() {\n return this.navPlacement === DaffNavPlacementEnum.BESIDE;\n }\n\n onContentAnimationStart(e: AnimationEvent) {\n if(e.toState === 'open') {\n this._elementRef.nativeElement.style.overflow = 'hidden';\n }\n }\n\n onContentAnimationDone(e: AnimationEvent) {\n if(e.toState === 'closed') {\n this._elementRef.nativeElement.style.overflow = null;\n }\n }\n\n /**\n * The placement of the nav in relation to the sidebar. The default is set to `top`.\n * Note that this is really only available when there is a `side-fixed` sidebar.\n */\n @Input() navPlacement: DaffNavPlacement = DaffNavPlacementEnum.ABOVE;\n\n constructor(\n private cdRef: ChangeDetectorRef,\n private _elementRef: ElementRef<HTMLElement>,\n @Inject(DAFF_SIDEBAR_SCROLL_TOKEN) @SkipSelf() private bodyScroll: DaffSidebarScroll,\n @Inject(DaffSidebarViewportComponent) @SkipSelf() @Optional() private parentViewport,\n @Inject(DAFF_SIDEBAR_SCROLL_TOKEN) private scroll: DaffSidebarScroll,\n ) { }\n\n /**\n * The list of sidebars in the viewport.\n *\n * @docs-private\n */\n @ContentChildren(DaffSidebarComponent, { descendants: false }) private sidebars: QueryList<DaffSidebarComponent>;\n\n /**\n * The number of pixels that the main content of the page should be shifted to\n * right when there are child sidebars.\n */\n private _shift = '0px';\n\n /**\n * The left padding on the content when left side-fixed sidebars are open.\n */\n public _contentPadLeft = 0;\n\n /**\n * The left padding on the nav when left side-fixed sidebars are open.\n */\n public _navPadLeft = 0;\n\n /**\n * The right padding on the content when right side-fixed sidebars are open.\n */\n public _contentPadRight = 0;\n\n /**\n * The right padding on the content when right side-fixed sidebars are open.\n */\n public _navPadRight = 0;\n\n /**\n * Whether or not the backdrop is interactable\n */\n _backdropInteractable = false;\n\n /**\n * The animation state\n */\n _animationState: DaffSidebarViewportAnimationStateWithParams = { value: DaffSidebarAnimationStates.CLOSED, params: { shift: '0px' }};\n\n /**\n * Event fired when the backdrop is clicked. This is often used to close the sidebar.\n */\n @Output() backdropClicked: EventEmitter<void> = new EventEmitter<void>();\n\n ngAfterContentChecked() {\n const nextShift = sidebarViewportContentShift(this.sidebars) + 'px';\n if (this._shift !== nextShift) {\n this._shift = nextShift;\n\n this.updateAnimationState();\n this.cdRef.markForCheck();\n }\n\n const nextBackdropInteractable = sidebarViewportBackdropInteractable(this.sidebars);\n if (this._backdropInteractable !== nextBackdropInteractable) {\n this._backdropInteractable = nextBackdropInteractable;\n this.updateAnimationState();\n this.cdRef.markForCheck();\n if(nextBackdropInteractable) {\n if(!this.parentViewport && !hasParentViewport(this._elementRef.nativeElement)) {\n this.bodyScroll.disable();\n } else {\n this.scroll.disable();\n }\n } else { //if we are hiding the sidebars\n if(!this.parentViewport && !hasParentViewport(this._elementRef.nativeElement)) {\n this.bodyScroll.enable();\n } else {\n this.scroll.enable();\n }\n }\n };\n\n const nextLeftPadding = sidebarViewportContentPadding(this.sidebars, 'left');\n if(this._contentPadLeft !== nextLeftPadding) {\n this._contentPadLeft = nextLeftPadding;\n this._navPadLeft = this.isNavOnSide ? this._contentPadLeft : null;\n this.updateAnimationState();\n this.cdRef.markForCheck();\n }\n\n const nextRightPadding = sidebarViewportContentPadding(this.sidebars, 'right');\n if(this._contentPadRight !== nextRightPadding) {\n this._contentPadRight = nextRightPadding;\n this._navPadRight = this.isNavOnSide ? this._contentPadRight : null;\n this.updateAnimationState();\n this.cdRef.markForCheck();\n }\n }\n\n ngOnDestroy() {\n if(!this.parentViewport && !hasParentViewport(this._elementRef.nativeElement)) {\n this.bodyScroll.enable();\n } else {\n this.scroll.enable();\n }\n }\n\n /**\n * @docs-private\n *\n * Updates the animation state of the viewport depending upon the state\n * of all sidebars within the viewport.\n */\n private updateAnimationState() {\n this._animationState = {\n value: getSidebarViewportAnimationState(\n this.sidebars.reduce((acc: boolean, sidebar) => acc || isViewportContentShifted(sidebar.mode, sidebar.open), false),\n ),\n params: { shift: this._shift },\n };\n }\n\n /**\n * @docs-private\n * The called when the backdrop of the viewport is clicked upon.\n */\n _backdropClicked(): void {\n this.backdropClicked.emit();\n }\n}\n","<ng-content select=\"daff-sidebar:not([side=right])\"></ng-content>\n\n<daff-sidebar-viewport-backdrop\n [@transformContent]=\"_animationState\"\n [interactable]=\"_backdropInteractable\"\n (backdropClicked)=\"_backdropClicked()\">\n</daff-sidebar-viewport-backdrop>\n\n<div class=\"daff-sidebar-viewport__nav\"\n [@transformContent]=\"_animationState\"\n [style.padding-left.px]=\"_navPadLeft\"\n [style.padding-right.px]=\"_navPadRight\">\n <ng-content select=\"[daff-sidebar-viewport-nav]\"></ng-content>\n</div>\n\n<div class=\"daff-sidebar-viewport__content\"\n [@transformContent]=\"_animationState\"\n (@transformContent.start)=\"onContentAnimationStart($event)\"\n (@transformContent.done)=\"onContentAnimationDone($event)\">\n <div class=\"daff-sidebar-viewport__inner\"\n [style.padding-left.px]=\"_contentPadLeft\"\n [style.padding-right.px]=\"_contentPadRight\">\n <ng-content></ng-content>\n </div>\n</div>\n\n<ng-content select=\"daff-sidebar[side=right]\"></ng-content>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DaffSidebarComponent } from './sidebar/sidebar.component';\nimport { DaffSidebarFooterComponent } from './sidebar-footer/sidebar-footer.component';\nimport { DaffSidebarHeaderActionDirective } from './sidebar-header/sidebar-header-action/sidebar-header-action.directive';\nimport { DaffSidebarHeaderTitleDirective } from './sidebar-header/sidebar-header-title/sidebar-header-title.directive';\nimport { DaffSidebarHeaderComponent } from './sidebar-header/sidebar-header.component';\nimport { DaffSidebarViewportComponent } from './sidebar-viewport/sidebar-viewport.component';\nimport { DaffSidebarViewportBackdropComponent } from './sidebar-viewport-backdrop/sidebar-viewport-backdrop.component';\n\n@NgModule({\n imports: [\n CommonModule,\n A11yModule,\n ],\n declarations: [\n DaffSidebarComponent,\n DaffSidebarViewportComponent,\n DaffSidebarHeaderComponent,\n DaffSidebarFooterComponent,\n DaffSidebarHeaderTitleDirective,\n DaffSidebarHeaderActionDirective,\n DaffSidebarViewportBackdropComponent,\n ],\n exports: [\n DaffSidebarComponent,\n DaffSidebarViewportComponent,\n DaffSidebarHeaderComponent,\n DaffSidebarFooterComponent,\n DaffSidebarHeaderTitleDirective,\n DaffSidebarHeaderActionDirective,\n DaffSidebarViewportBackdropComponent,\n ],\n})\nexport class DaffSidebarModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["getAnimationState","i1.DaffSidebarViewportBackdropComponent"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"daffodil-design-sidebar.mjs","sources":["../../../libs/design/sidebar/src/sidebar/is-opening.ts","../../../libs/design/sidebar/src/animation/sidebar-animation.ts","../../../libs/design/sidebar/src/animation/sidebar-animation-state.ts","../../../libs/design/sidebar/src/animation/sidebar-animation-width.ts","../../../libs/design/sidebar/src/sidebar/sidebar.component.ts","../../../libs/design/sidebar/src/sidebar/sidebar.component.html","../../../libs/design/sidebar/src/sidebar-footer/sidebar-footer.component.ts","../../../libs/design/sidebar/src/sidebar-header/sidebar-header-action/sidebar-header-action.directive.ts","../../../libs/design/sidebar/src/sidebar-header/sidebar-header-title/sidebar-header-title.directive.ts","../../../libs/design/sidebar/src/sidebar-header/sidebar-header.component.ts","../../../libs/design/sidebar/src/sidebar-header/sidebar-header.component.html","../../../libs/design/sidebar/src/sidebar-viewport/helper/has-parent-viewport.ts","../../../libs/design/sidebar/src/sidebar-viewport/nav-placement.ts","../../../libs/design/sidebar/src/sidebar-viewport/scroll-token/scroll.token.ts","../../../libs/design/sidebar/src/sidebar-viewport/utils/backdrop-interactable.ts","../../../libs/design/sidebar/src/sidebar-viewport/utils/content-pad.ts","../../../libs/design/sidebar/src/sidebar-viewport/utils/content-shift.ts","../../../libs/design/sidebar/src/animation/sidebar-viewport-animation-state.ts","../../../libs/design/sidebar/src/sidebar-viewport-backdrop/animation/backdrop-animation.ts","../../../libs/design/sidebar/src/sidebar-viewport-backdrop/animation/backdrop-animation-state.ts","../../../libs/design/sidebar/src/sidebar-viewport-backdrop/sidebar-viewport-backdrop.component.ts","../../../libs/design/sidebar/src/sidebar-viewport/sidebar-viewport.component.ts","../../../libs/design/sidebar/src/sidebar-viewport/sidebar-viewport.component.html","../../../libs/design/sidebar/src/sidebar.module.ts","../../../libs/design/sidebar/src/service/sidebar.service.ts","../../../libs/design/sidebar/src/helper/is-docked-mode.ts","../../../libs/design/sidebar/src/helper/is-floating-mode.ts","../../../libs/design/sidebar/src/daffodil-design-sidebar.ts"],"sourcesContent":["import { DaffSidebarAnimationState } from '../animation/sidebar-animation-state';\n\n/**\n * Determine whether or animation states are going to an open state from a non-open state.\n */\nexport const isOpening = (fromState: DaffSidebarAnimationState, toState: DaffSidebarAnimationState): boolean => {\n if(fromState === 'under-open' && toState === 'open' || fromState === 'open' && toState === 'under-open') {\n return false;\n }\n\n if(toState === 'under-open' || toState === 'open') {\n return true;\n }\n return false;\n};\n","import {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\nconst duration = '200ms';\nconst sidebarAnimateInTransition = 'cubic-bezier(0.0, 0.0, 0.2, 1)';\nconst sidebarAnimateOutTransition = 'cubic-bezier(0.4, 0.0, 1, 1)';\n\nexport const daffSidebarAnimations: {\n readonly transformSidebar: AnimationTriggerMetadata;\n readonly transformContent: AnimationTriggerMetadata;\n readonly backdropTrigger: AnimationTriggerMetadata;\n} = {\n transformSidebar: trigger('transformSidebar', [\n // We remove the `transform` here completely, rather than setting it to zero, because\n // 3d transforms causes text to appear blurry on IE and Edge.\n state('open', style({\n transform: 'none',\n })),\n state('closed', style({\n transform: 'translateX({{width}})',\n }), { params: { width: '-240px' }}),\n transition('open => closed', animate(duration + ' ' + sidebarAnimateOutTransition)),\n transition('closed => open', animate(duration + ' ' + sidebarAnimateInTransition)),\n ]),\n transformContent: trigger('transformContent', [\n // We remove the `transform` here completely, rather than setting it to zero, because\n // 3d transforms causes text to appear blurry on IE and Edge.\n state('closed', style({\n transform: 'none',\n })),\n state('open', style({\n transform: 'translateX({{shift}})',\n }), { params: { shift: '-240px' }}),\n transition('open => closed', animate(duration + ' ' + sidebarAnimateInTransition)),\n transition('closed => open', animate(duration + ' ' + sidebarAnimateOutTransition)),\n ]),\n backdropTrigger: trigger('backdropTrigger', [\n state('open', style({\n opacity: 1,\n })),\n state('closed', style({\n opacity: 0,\n })),\n transition('open => closed', animate(duration + ' ' + sidebarAnimateOutTransition)),\n transition('closed => open', animate(duration + ' ' + sidebarAnimateInTransition)),\n ]),\n};\n\nexport enum DaffSidebarAnimationStates {\n OPEN = 'open',\n CLOSED = 'closed',\n UNDEROPEN = 'under-open',\n UNDERCLOSED = 'under-closed',\n SIDEFIXEDOPEN = 'side-fixed-open',\n SIDEFIXEDCLOSED = 'side-fixed-closed',\n NONE = 'none'\n}\n","import { DaffSidebarMode } from '../helper/sidebar-mode';\n\nexport type DaffSidebarAnimationState =\n'open' | 'closed' | 'under-open' | 'under-closed' | 'side-fixed-open' | 'side-fixed-closed' | 'none';\n\nexport const getAnimationState = (open: boolean, mode: DaffSidebarMode): DaffSidebarAnimationState => {\n if(mode === 'side') {\n return 'none';\n }\n\n if(mode === 'side-fixed' && open) {\n return 'side-fixed-open';\n }\n\n if(mode === 'side-fixed' && !open) {\n return 'side-fixed-closed';\n }\n\n if(open && mode === 'under') {\n return 'under-open';\n }\n\n if(!open && mode === 'under') {\n return 'under-closed';\n }\n\n if(open) {\n return 'open';\n } else {\n return 'closed';\n }\n};\n","import { DaffSidebarSide } from '../helper/sidebar-side';\n\nexport const getSidebarAnimationWidth =\n (side: DaffSidebarSide, width: number): string => side === 'left' ? -1 * width + 'px' : width + 'px';\n","import { AnimationEvent } from '@angular/animations';\nimport {\n ConfigurableFocusTrap,\n ConfigurableFocusTrapFactory,\n} from '@angular/cdk/a11y';\nimport { DOCUMENT } from '@angular/common';\nimport {\n Component,\n NgZone,\n ElementRef,\n Output,\n EventEmitter,\n HostBinding,\n ChangeDetectionStrategy,\n Input,\n HostListener,\n Inject,\n} from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport {\n daffFocusableElementsSelector,\n DaffFocusStackService,\n} from '@daffodil/design';\n\nimport { isOpening } from './is-opening';\nimport { daffSidebarAnimations } from '../animation/sidebar-animation';\nimport {\n DaffSidebarAnimationState,\n getAnimationState,\n} from '../animation/sidebar-animation-state';\nimport { getSidebarAnimationWidth } from '../animation/sidebar-animation-width';\nimport { DaffSidebarMode } from '../helper/sidebar-mode';\nimport { DaffSidebarSide } from '../helper/sidebar-side';\n\n/**\n * DaffSidebarComponent is heavily based upon the work done by the @angular/components\n * team on `mat-drawer` and `mat-sidenav`. `daff-sidebar` is intended to be\n * a simplified version (with a different design) of `mat-drawer`.\n */\n@Component({\n selector: 'daff-sidebar',\n templateUrl: './sidebar.component.html',\n styleUrls: ['./sidebar.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n daffSidebarAnimations.transformSidebar,\n ],\n})\nexport class DaffSidebarComponent {\n /**\n * @docs-private\n *\n * The CSS classes set.\n */\n @HostBinding('class') get classes() {\n return {\n 'daff-sidebar': true,\n [this.side]: true,\n [this.mode]: true,\n };\n };\n\n /**\n * The animation state of the sidebar.\n */\n @HostBinding('@transformSidebar') get transformSidebar() {\n return {\n value: getAnimationState(this.open, this.mode),\n params: { width: getSidebarAnimationWidth(this.side, this.width) },\n };\n }\n\n /**\n * Event fired when `ESC` key is pressed when the sidebar has focus\n */\n @Output() escapePressed: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * What side of the viewport to show the sidebar on.\n */\n @Input() side: DaffSidebarSide = 'left';\n\n /**\n * The mode of the sidebar.\n */\n @Input() mode: DaffSidebarMode = 'side';\n\n /**\n * Whether or not the sidebar is open.\n */\n @Input() open = false;\n\n /**\n * The width of the sidebar.\n */\n get width() {\n return this._elementRef.nativeElement.offsetWidth;\n }\n\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _ngZone: NgZone,\n private _focusTrapFactory: ConfigurableFocusTrapFactory,\n private _focusStack: DaffFocusStackService,\n @Inject(DOCUMENT) private _doc: any,\n ) {\n\n /**\n * Listen to `keydown` events outside the zone so that change detection is not run every\n * time a key is pressed. Instead we re-enter the zone only if the `ESC` key is pressed.\n *\n */\n this._ngZone.runOutsideAngular(() => {\n fromEvent<KeyboardEvent>(this._elementRef.nativeElement, 'keydown').pipe(\n filter(event => event.key === 'Escape'),\n ).subscribe(event => this._ngZone.run(() => {\n this.escapePressed.emit();\n event.stopPropagation();\n }));\n });\n }\n\n private _focusTrap: ConfigurableFocusTrap;\n\n /**\n * Animation event that can be used to hook into when the transformSidebar\n * animation begins. This is used in sidebar to determine when to show the\n * visibility of the sidebar so that the animation does not jump as the element is shown.\n */\n @HostListener('@transformSidebar.start', ['$event']) onAnimationStart(e: AnimationEvent) {\n if (e.toState === 'open' || e.toState === 'under-open' || e.toState === 'side-fixed-open') {\n this._elementRef.nativeElement.style.visibility = 'visible';\n }\n }\n\n /**\n * Animation event that can be used to hook into when the\n * transformSidebar animation is complete.\n */\n @HostListener('@transformSidebar.done', ['$event']) onAnimationComplete(e: AnimationEvent) {\n if(isOpening(<DaffSidebarAnimationState>e.fromState, <DaffSidebarAnimationState>e.toState)) {\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n\n const focusableChild = (<HTMLElement>this._elementRef.nativeElement.querySelector(daffFocusableElementsSelector));\n\n this._focusStack.push(this._doc.activeElement);\n\n if(focusableChild) {\n focusableChild.focus();\n } else {\n this._elementRef.nativeElement.tabIndex = 0;\n (<HTMLElement>this._elementRef.nativeElement).focus();\n }\n } else {\n if(this._focusTrap) {\n this._focusTrap.destroy();\n this._focusTrap = undefined;\n this._focusStack.pop();\n }\n }\n\n /**\n * This is used in sidebar to determine when to hide the visibility\n * of the sidebar so that the animation does not jump as the element is hidden.\n */\n if (e.toState === 'closed' || e.toState === 'under-closed' || e.toState === 'side-fixed-closed') {\n this._elementRef.nativeElement.style.visibility = 'hidden';\n }\n }\n}\n","<ng-content select=\"daff-sidebar-header\"></ng-content>\n<div class=\"daff-sidebar__body\">\n\t<ng-content></ng-content>\n</div>\n<ng-content select=\"daff-sidebar-footer\"></ng-content>","import {\n Component,\n HostBinding,\n ChangeDetectionStrategy,\n} from '@angular/core';\n\n@Component({\n selector: 'daff-sidebar-footer',\n template: '<ng-content></ng-content>',\n styleUrls: ['./sidebar-footer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DaffSidebarFooterComponent {\n @HostBinding('class.daff-sidebar-footer') class = true;\n}\n","import {\n Directive,\n HostBinding,\n} from '@angular/core';\n\n@Directive({\n selector: '[daffSidebarHeaderAction]',\n})\nexport class DaffSidebarHeaderActionDirective {\n /**\n * @docs-private\n */\n @HostBinding('class.daff-sidebar-header__action') class = true;\n}\n","import {\n Directive,\n HostBinding,\n} from '@angular/core';\n\n@Directive({\n selector: '[daffSidebarHeaderTitle]',\n})\nexport class DaffSidebarHeaderTitleDirective {\n /**\n * @docs-private\n */\n @HostBinding('class.daff-sidebar-header__title') class = true;\n}\n","import {\n Component,\n HostBinding,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'daff-sidebar-header',\n templateUrl: './sidebar-header.component.html',\n styleUrls: ['./sidebar-header.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n\n})\nexport class DaffSidebarHeaderComponent {\n @HostBinding('class.daff-sidebar-header') class = true;\n}\n","<ng-content select=\"[daffSidebarHeaderAction]\"></ng-content>\n<ng-content select=\"[daffSidebarHeaderTitle]\"></ng-content>\n<ng-content></ng-content>","/**\n * Fallback function for determining whether or not a viewport has a parent viewport.\n * This is really only used in the Daffodil docs when the injector heirarchy\n * doesn't act as anticipated as a result of custom elements.\n */\nexport const hasParentViewport = (element: HTMLElement) => {\n let currentElement = element.parentElement;\n\n while (currentElement !== null) {\n if (currentElement.tagName === 'DAFF-SIDEBAR-VIEWPORT') {\n return true;\n }\n currentElement = currentElement.parentElement;\n }\n\n return false;\n};\n","/**\n * The placement of the nav in relation to the sidebar.\n * See {@link DaffNavPlacementEnum }\n */\nexport type DaffNavPlacement = 'above' | 'beside';\n\n/**\n * The placement of the nav in relation to the sidebar.\n * See {@link DaffNavPlacement }\n */\nexport enum DaffNavPlacementEnum {\n ABOVE = 'above',\n BESIDE = 'beside',\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n ElementRef,\n InjectionToken,\n inject,\n} from '@angular/core';\n\n/**\n * An interface that enables a user to enable or disable scrolling on sidebars.\n *\n * See {@link DAFF_SIDEBAR_SCROLL_TOKEN}\n */\nexport interface DaffSidebarScroll {\n enable(): void;\n disable(): void;\n}\n\n/**\n * An injection token that can be used within a sidebar to determine\n * what to do enabling and disabling scrolling. By default, the body\n * is the element where scrolling is controlled.\n */\nexport const DAFF_SIDEBAR_SCROLL_TOKEN = new InjectionToken<DaffSidebarScroll>('DAFF_SIDEBAR_SCROLL_TOKEN', {\n providedIn: 'root',\n factory: () => {\n const document = inject(DOCUMENT);\n return {\n enable: () => {\n document.body.style.overflow = null;\n },\n disable: () => {\n document.body.style.overflow = 'hidden';\n },\n };\n },\n});\n\n\n/**\n * A factory function that return a DaffSidebarScroll\n * for the current sidebar viewport.\n *\n * See the providers of {@link DaffSidebarViewportComponent}\n */\nexport const daffSidebarViewportScrollFactory = (): DaffSidebarScroll => {\n const element = inject(ElementRef).nativeElement;\n return {\n enable: () => {\n element.style.overflow = null;\n },\n disable: () => {\n element.style.overflow = 'hidden';\n },\n };\n};\n","import { QueryList } from '@angular/core';\n\nimport { DaffSidebarComponent } from '../../sidebar/sidebar.component';\n\n/**\n * Determines, given a list of sidebars, whether or not the backdrop is interactable (typically clickable).\n */\nexport const sidebarViewportBackdropInteractable = (sidebars: QueryList<DaffSidebarComponent>): boolean => sidebars.reduce(\n (acc: boolean, sidebar) => ((sidebar.mode === 'over' || sidebar.mode === 'under') && sidebar.open) || acc,\n false);\n","import { QueryList } from '@angular/core';\n\nimport { DaffSidebarModeEnum } from '../../helper/sidebar-mode';\nimport { DaffSidebarSide } from '../../helper/sidebar-side';\nimport { DaffSidebarComponent } from '../../sidebar/sidebar.component';\n\n/**\n * Given a list of sidebars, compute the associated content shift.\n */\nexport const sidebarViewportContentPadding = (sidebars: QueryList<DaffSidebarComponent>, side: DaffSidebarSide): number =>\n sidebars.reduce((acc: number, sidebar) => {\n if(!(sidebar.mode === DaffSidebarModeEnum.SideFixed && sidebar.open)) {\n return acc;\n }\n\n if(sidebar.side === side){\n return sidebar.width;\n } else {\n // This component is \"stateless\", its possible to have two open \"under\" sidebars.\n // As such, we defer to \"left\" being open by default.\n return acc;\n }\n }, 0);\n","import { QueryList } from '@angular/core';\n\nimport { DaffSidebarMode } from '../../helper/sidebar-mode';\nimport { DaffSidebarComponent } from '../../sidebar/sidebar.component';\n\nexport const isViewportContentShifted = (mode: DaffSidebarMode, open: boolean): boolean => (mode === 'under' && open);\n\n/**\n * Given a list of sidebars, compute the associated content shift.\n */\nexport const sidebarViewportContentShift = (sidebars: QueryList<DaffSidebarComponent>): number =>\n sidebars.reduce((acc: number, sidebar) => {\n if(!isViewportContentShifted(sidebar.mode, sidebar.open)) {\n return acc;\n }\n\n if(sidebar.side === 'left'){\n return sidebar.width;\n } else if (sidebar.side === 'right' && acc === 0) {\n return -1 * sidebar.width;\n } else {\n // This component is \"stateless\", its possible to have two open \"under\" sidebars.\n // As such, we defer to \"left\" being open by default.\n return acc;\n }\n }, 0);\n\n\n","import { AnimationStateWithParams } from '@daffodil/design';\n\nimport { DaffSidebarAnimationStates } from './sidebar-animation';\n\nexport type DaffSidebarViewportAnimationState = DaffSidebarAnimationStates.OPEN | DaffSidebarAnimationStates.CLOSED;\n\n\nexport interface DaffSidebarAnimationStateParams {\n shift: string;\n};\n\nexport type DaffSidebarViewportAnimationStateWithParams = AnimationStateWithParams<DaffSidebarViewportAnimationState, DaffSidebarAnimationStateParams>;\n\n\nexport const getSidebarViewportAnimationState = (open: boolean): DaffSidebarViewportAnimationState =>\n open ? DaffSidebarAnimationStates.OPEN : DaffSidebarAnimationStates.CLOSED;\n","import {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\nconst animationDuration = '350ms';\nconst backdropTransitionOut = 'cubic-bezier(0.4, 0.0, 1, 1)';\nconst backdropTransitionIn = 'cubic-bezier(0.0, 0.0, 0.2, 1)';\n\nexport const daffSidebarViewportBackdropAnimations: {\n readonly fadeBackdrop: AnimationTriggerMetadata;\n} = {\n fadeBackdrop: trigger('fadeBackdrop', [\n state('interactable', style({ opacity: 1 })),\n state('non-interactable', style({ opacity: 0 })),\n transition('interactable => non-interactable', animate(animationDuration + ' ' + backdropTransitionOut)),\n transition('non-interactable => interactable', animate(animationDuration + ' ' + backdropTransitionIn)),\n transition(':enter', [\n style({ opacity: 0 }),\n animate(animationDuration + ' ' + backdropTransitionIn, style({ opacity: 1 })),\n ]),\n transition(':leave', [\n animate(animationDuration + ' ' + backdropTransitionOut, style({ opacity: 0 })),\n ]),\n ]),\n};\n","export type DaffSidebarViewportBackdropAnimationState = 'interactable' | 'non-interactable';\nexport const getAnimationState = (interactable: boolean): DaffSidebarViewportBackdropAnimationState=> interactable ? 'interactable' : 'non-interactable';\n","import { AnimationEvent } from '@angular/animations';\nimport {\n Component,\n Output,\n EventEmitter,\n Input,\n ChangeDetectionStrategy,\n HostListener,\n HostBinding,\n OnInit,\n} from '@angular/core';\n\nimport { daffSidebarViewportBackdropAnimations } from './animation/backdrop-animation';\nimport { getAnimationState } from './animation/backdrop-animation-state';\n\n@Component({\n selector: 'daff-sidebar-viewport-backdrop',\n template: '<ng-content></ng-content>',\n styleUrls: ['./sidebar-viewport-backdrop.component.scss'],\n animations: [\n daffSidebarViewportBackdropAnimations.fadeBackdrop,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DaffSidebarViewportBackdropComponent implements OnInit {\n\n @HostBinding('class.interactable') interactableClass = true;\n\n /**\n * Determines whether or not the backdrop is transparent.\n */\n @Input() @HostBinding('class.transparent') transparent = false;\n\n /**\n * Determines whether or not the backdrop is interactable.\n */\n @Input() interactable = true;\n\n /**\n * Boolean property that determines whether or not the\n * backdrop should fill up its containing window.\n */\n @Input() @HostBinding('class.fullscreen') fullscreen = false;\n\n /**\n * Output event triggered when the backdrop is clicked.\n */\n @Output() backdropClicked: EventEmitter<void> = new EventEmitter<void>();\n\n ngOnInit(): void {\n this.interactableClass = this.interactable;\n }\n\n /**\n * Animation hook for that controls the backdrops\n * entrance and fade animations.\n */\n @HostBinding('@fadeBackdrop') get fadeBackdropTrigger() {\n return getAnimationState(this.interactable);\n }\n\n @HostListener('@fadeBackdrop.done', ['$event'])\n animationDone(e: AnimationEvent) {\n\t this.interactableClass = !(e.toState === ':leave' || e.toState === 'non-interactable');\n }\n\n @HostListener('@fadeBackdrop.start', ['$event'])\n animationStart(e: AnimationEvent) {\n\t if(e.toState === ':enter' || e.toState === 'interactable'){\n\t this.interactableClass = true;\n\t }\n }\n\n @HostListener('click')\n onBackdropClicked(): void {\n\t this.backdropClicked.emit();\n }\n}\n","import { AnimationEvent } from '@angular/animations';\nimport {\n Component,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ContentChildren,\n QueryList,\n AfterContentChecked,\n ElementRef,\n Input,\n HostBinding,\n Inject,\n SkipSelf,\n Optional,\n OnDestroy,\n} from '@angular/core';\n\nimport { hasParentViewport } from './helper/has-parent-viewport';\nimport {\n DaffNavPlacement,\n DaffNavPlacementEnum,\n} from './nav-placement';\nimport {\n DAFF_SIDEBAR_SCROLL_TOKEN,\n DaffSidebarScroll,\n daffSidebarViewportScrollFactory,\n} from './scroll-token/scroll.token';\nimport { sidebarViewportBackdropInteractable } from './utils/backdrop-interactable';\nimport { sidebarViewportContentPadding } from './utils/content-pad';\nimport {\n isViewportContentShifted,\n sidebarViewportContentShift,\n} from './utils/content-shift';\nimport {\n DaffSidebarAnimationStates,\n daffSidebarAnimations,\n} from '../animation/sidebar-animation';\nimport {\n DaffSidebarViewportAnimationStateWithParams,\n getSidebarViewportAnimationState,\n} from '../animation/sidebar-viewport-animation-state';\nimport { DaffSidebarMode } from '../helper/sidebar-mode';\nimport { DaffSidebarComponent } from '../sidebar/sidebar.component';\n\n/**\n * The DaffSidebarViewport is the \"holder\" of sidebars throughout an entire application.\n * It's generally only used once, like\n *\n * ```html\n * <daff-sidebar-viewport>\n * <daff-sidebar></daff-sidebar>\n * <p>Some Content</p>\n * </daff-sidebar-viewport>\n * ```\n *\n * Importantly, its possible for there to be multiple sidebars of many modes\n * at the same time. @see {@link DaffSidebarMode }\n *\n * Since this is a functional component, it's possible to have multiple \"open\" sidebars\n * at the same time. As a result, this component attempts to gracefully handle these situations.\n * However, importantly, there can only be one sidebar of each mode, on each side, at any given time.\n * If this is violated, this component will throw an exception.\n */\n@Component({\n selector: 'daff-sidebar-viewport',\n templateUrl: './sidebar-viewport.component.html',\n styleUrls: ['./sidebar-viewport.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n daffSidebarAnimations.transformContent,\n ],\n providers: [\n { provide: DAFF_SIDEBAR_SCROLL_TOKEN, useFactory: daffSidebarViewportScrollFactory },\n ],\n})\nexport class DaffSidebarViewportComponent implements AfterContentChecked, OnDestroy {\n @HostBinding('class.daff-sidebar-viewport') hostClass = true;\n\n @HostBinding('class') get classes() {\n return {\n 'daff-sidebar-viewport': true,\n [this.navPlacement]: true,\n };\n };\n\n get isNavOnSide() {\n return this.navPlacement === DaffNavPlacementEnum.BESIDE;\n }\n\n onContentAnimationStart(e: AnimationEvent) {\n if(e.toState === 'open') {\n this._elementRef.nativeElement.style.overflow = 'hidden';\n }\n }\n\n onContentAnimationDone(e: AnimationEvent) {\n if(e.toState === 'closed') {\n this._elementRef.nativeElement.style.overflow = null;\n }\n }\n\n /**\n * The placement of the nav in relation to the sidebar. The default is set to `top`.\n * Note that this is really only available when there is a `side-fixed` sidebar.\n */\n @Input() navPlacement: DaffNavPlacement = DaffNavPlacementEnum.ABOVE;\n\n constructor(\n private cdRef: ChangeDetectorRef,\n private _elementRef: ElementRef<HTMLElement>,\n @Inject(DAFF_SIDEBAR_SCROLL_TOKEN) @SkipSelf() private bodyScroll: DaffSidebarScroll,\n @Inject(DaffSidebarViewportComponent) @SkipSelf() @Optional() private parentViewport,\n @Inject(DAFF_SIDEBAR_SCROLL_TOKEN) private scroll: DaffSidebarScroll,\n ) { }\n\n /**\n * The list of sidebars in the viewport.\n *\n * @docs-private\n */\n @ContentChildren(DaffSidebarComponent, { descendants: false }) private sidebars: QueryList<DaffSidebarComponent>;\n\n /**\n * The number of pixels that the main content of the page should be shifted to\n * right when there are child sidebars.\n */\n private _shift = '0px';\n\n /**\n * The left padding on the content when left side-fixed sidebars are open.\n */\n public _contentPadLeft = 0;\n\n /**\n * The left padding on the nav when left side-fixed sidebars are open.\n */\n public _navPadLeft = 0;\n\n /**\n * The right padding on the content when right side-fixed sidebars are open.\n */\n public _contentPadRight = 0;\n\n /**\n * The right padding on the content when right side-fixed sidebars are open.\n */\n public _navPadRight = 0;\n\n /**\n * Whether or not the backdrop is interactable\n */\n _backdropInteractable = false;\n\n /**\n * The animation state\n */\n _animationState: DaffSidebarViewportAnimationStateWithParams = { value: DaffSidebarAnimationStates.CLOSED, params: { shift: '0px' }};\n\n /**\n * Event fired when the backdrop is clicked. This is often used to close the sidebar.\n */\n @Output() backdropClicked: EventEmitter<void> = new EventEmitter<void>();\n\n ngAfterContentChecked() {\n const nextShift = sidebarViewportContentShift(this.sidebars) + 'px';\n if (this._shift !== nextShift) {\n this._shift = nextShift;\n\n this.updateAnimationState();\n this.cdRef.markForCheck();\n }\n\n const nextBackdropInteractable = sidebarViewportBackdropInteractable(this.sidebars);\n if (this._backdropInteractable !== nextBackdropInteractable) {\n this._backdropInteractable = nextBackdropInteractable;\n this.updateAnimationState();\n this.cdRef.markForCheck();\n if(nextBackdropInteractable) {\n if(!this.parentViewport && !hasParentViewport(this._elementRef.nativeElement)) {\n this.bodyScroll.disable();\n } else {\n this.scroll.disable();\n }\n } else { //if we are hiding the sidebars\n if(!this.parentViewport && !hasParentViewport(this._elementRef.nativeElement)) {\n this.bodyScroll.enable();\n } else {\n this.scroll.enable();\n }\n }\n };\n\n const nextLeftPadding = sidebarViewportContentPadding(this.sidebars, 'left');\n if(this._contentPadLeft !== nextLeftPadding) {\n this._contentPadLeft = nextLeftPadding;\n this._navPadLeft = this.isNavOnSide ? this._contentPadLeft : null;\n this.updateAnimationState();\n this.cdRef.markForCheck();\n }\n\n const nextRightPadding = sidebarViewportContentPadding(this.sidebars, 'right');\n if(this._contentPadRight !== nextRightPadding) {\n this._contentPadRight = nextRightPadding;\n this._navPadRight = this.isNavOnSide ? this._contentPadRight : null;\n this.updateAnimationState();\n this.cdRef.markForCheck();\n }\n }\n\n ngOnDestroy() {\n if(!this.parentViewport && !hasParentViewport(this._elementRef.nativeElement)) {\n this.bodyScroll.enable();\n } else {\n this.scroll.enable();\n }\n }\n\n /**\n * @docs-private\n *\n * Updates the animation state of the viewport depending upon the state\n * of all sidebars within the viewport.\n */\n private updateAnimationState() {\n this._animationState = {\n value: getSidebarViewportAnimationState(\n this.sidebars.reduce((acc: boolean, sidebar) => acc || isViewportContentShifted(sidebar.mode, sidebar.open), false),\n ),\n params: { shift: this._shift },\n };\n }\n\n /**\n * @docs-private\n * The called when the backdrop of the viewport is clicked upon.\n */\n _backdropClicked(): void {\n this.backdropClicked.emit();\n }\n}\n","<ng-content select=\"daff-sidebar:not([side=right])\"></ng-content>\n\n<daff-sidebar-viewport-backdrop\n [@transformContent]=\"_animationState\"\n [interactable]=\"_backdropInteractable\"\n (backdropClicked)=\"_backdropClicked()\">\n</daff-sidebar-viewport-backdrop>\n\n<div class=\"daff-sidebar-viewport__nav\"\n [@transformContent]=\"_animationState\"\n [style.padding-left.px]=\"_navPadLeft\"\n [style.padding-right.px]=\"_navPadRight\">\n <ng-content select=\"[daff-sidebar-viewport-nav]\"></ng-content>\n</div>\n\n<div class=\"daff-sidebar-viewport__content\"\n [@transformContent]=\"_animationState\"\n (@transformContent.start)=\"onContentAnimationStart($event)\"\n (@transformContent.done)=\"onContentAnimationDone($event)\">\n <div class=\"daff-sidebar-viewport__inner\"\n [style.padding-left.px]=\"_contentPadLeft\"\n [style.padding-right.px]=\"_contentPadRight\">\n <ng-content></ng-content>\n </div>\n</div>\n\n<ng-content select=\"daff-sidebar[side=right]\"></ng-content>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DaffSidebarComponent } from './sidebar/sidebar.component';\nimport { DaffSidebarFooterComponent } from './sidebar-footer/sidebar-footer.component';\nimport { DaffSidebarHeaderActionDirective } from './sidebar-header/sidebar-header-action/sidebar-header-action.directive';\nimport { DaffSidebarHeaderTitleDirective } from './sidebar-header/sidebar-header-title/sidebar-header-title.directive';\nimport { DaffSidebarHeaderComponent } from './sidebar-header/sidebar-header.component';\nimport { DaffSidebarViewportComponent } from './sidebar-viewport/sidebar-viewport.component';\nimport { DaffSidebarViewportBackdropComponent } from './sidebar-viewport-backdrop/sidebar-viewport-backdrop.component';\n\n@NgModule({\n imports: [\n CommonModule,\n A11yModule,\n ],\n declarations: [\n DaffSidebarComponent,\n DaffSidebarViewportComponent,\n DaffSidebarHeaderComponent,\n DaffSidebarFooterComponent,\n DaffSidebarHeaderTitleDirective,\n DaffSidebarHeaderActionDirective,\n DaffSidebarViewportBackdropComponent,\n ],\n exports: [\n DaffSidebarComponent,\n DaffSidebarViewportComponent,\n DaffSidebarHeaderComponent,\n DaffSidebarFooterComponent,\n DaffSidebarHeaderTitleDirective,\n DaffSidebarHeaderActionDirective,\n DaffSidebarViewportBackdropComponent,\n ],\n})\nexport class DaffSidebarModule { }\n","import {\n Signal,\n signal,\n} from '@angular/core';\nimport {\n BehaviorSubject,\n Observable,\n} from 'rxjs';\n\nimport { DaffSidebarRegistration } from './registration.type';\n\n/**\n * A service that stores the open state and ID of the currently opened sidebar.\n *\n * A default sidebar ID can be passed to the constructor that will be the initial value of `$id`.\n */\nexport abstract class DaffSidebarService {\n protected _id$: BehaviorSubject<DaffSidebarRegistration['id']>;\n protected _open = signal(false);\n\n readonly id$: Observable<DaffSidebarRegistration['id']>;\n\n get isOpen(): Signal<boolean> {\n return this._open.asReadonly();\n }\n\n constructor(\n defaultId: DaffSidebarRegistration['id'] = null,\n ) {\n this._id$ = new BehaviorSubject<DaffSidebarRegistration['id']>(defaultId);\n\n this.id$ = this._id$.asObservable();\n }\n\n /**\n * Opens the specified sidebar.\n *\n * @param id The optional sidebar ID. If omitted the most recently passed opened sidebar ID will persist (or the default if none was passed).\n */\n open(id?: DaffSidebarRegistration['id']) {\n if (id) {\n this._id$.next(id);\n }\n this._open.set(true);\n };\n\n /**\n * Closes the sidebar. Does not clear the ID.\n */\n close() {\n this._open.set(false);\n }\n}\n","import { DaffSidebarModeEnum } from './sidebar-mode';\n\nconst DOCKED_MODES = [\n DaffSidebarModeEnum.Side,\n DaffSidebarModeEnum.SideFixed,\n];\n\n/**\n * Returns whether the passed mode is a docked mode, i.e. side or side-fixed.\n */\nexport const daffSidebarIsDockedMode = (mode: DaffSidebarModeEnum): boolean => DOCKED_MODES.includes(mode);\n","import { DaffSidebarModeEnum } from './sidebar-mode';\n\nconst FLOATING_MODES = [\n DaffSidebarModeEnum.Under,\n DaffSidebarModeEnum.Over,\n];\n\n/**\n * Returns whether the passed mode is a floating mode, i.e. under or over.\n */\nexport const daffSidebarIsFloatingMode = (mode: DaffSidebarModeEnum): boolean => FLOATING_MODES.includes(mode);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["getAnimationState","i1.DaffSidebarViewportBackdropComponent"],"mappings":"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"}
|
@@ -228,7 +228,7 @@ class DaffTreeComponent {
|
|
228
228
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: DaffTreeComponent, deps: [{ token: DaffTreeNotifierService }], target: i0.ɵɵFactoryTarget.Component }); }
|
229
229
|
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.10", type: DaffTreeComponent, selector: "ul[daff-tree]", inputs: { renderMode: "renderMode", tree: "tree" }, host: { properties: { "class.daff-tree": "this.class" } }, providers: [
|
230
230
|
DaffTreeNotifierService,
|
231
|
-
], queries: [{ propertyName: "withChildrenTemplate", first: true, predicate: ["daffTreeItemWithChildrenTpl"], descendants: true, static: true }, { propertyName: "treeItemTemplate", first: true, predicate: ["daffTreeItemTpl"], descendants: true, static: true }], usesOnChanges: true, hostDirectives: [{ directive: i2.DaffArticleEncapsulatedDirective }], ngImport: i0, template: "<ng-container *ngFor=\"let node of flatTree; trackBy: trackByTreeElement\">\n\t<ng-container>\n\t\t<li [attr.aria-level]=\"node.level\" [class.hidden]=\"!node.visible\">\n\t\t\t<ng-container\n\t\t\t\t*ngTemplateOutlet=\"node.hasChildren ? withChildrenTemplate : treeItemTemplate; context: { $implicit: node }\">\n\t\t\t</ng-container>\n\t\t</li>\n\t</ng-container>\n</ng-container>", styles: [".daff-tree{margin:0;padding:0;list-style:none;--tree-padding:
|
231
|
+
], queries: [{ propertyName: "withChildrenTemplate", first: true, predicate: ["daffTreeItemWithChildrenTpl"], descendants: true, static: true }, { propertyName: "treeItemTemplate", first: true, predicate: ["daffTreeItemTpl"], descendants: true, static: true }], usesOnChanges: true, hostDirectives: [{ directive: i2.DaffArticleEncapsulatedDirective }], ngImport: i0, template: "<ng-container *ngFor=\"let node of flatTree; trackBy: trackByTreeElement\">\n\t<ng-container>\n\t\t<li [attr.aria-level]=\"node.level\" [class.hidden]=\"!node.visible\">\n\t\t\t<ng-container\n\t\t\t\t*ngTemplateOutlet=\"node.hasChildren ? withChildrenTemplate : treeItemTemplate; context: { $implicit: node }\">\n\t\t\t</ng-container>\n\t\t</li>\n\t</ng-container>\n</ng-container>", styles: [".daff-tree{margin:0;padding:0;list-style:none;--tree-padding: 1rem}.daff-tree li.hidden{display:none}.daff-tree-item{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;position:relative;background:none;border:0;padding:.5rem 1rem .5rem 0;line-height:1.5rem;font-weight:400;text-align:left;text-decoration:none;width:100%;padding-left:calc(var(--tree-padding) * (var(--depth)))}.daff-tree-item:before{content:\"\";position:absolute;top:0;bottom:0;left:0;width:.25rem}.daff-tree-item:focus,.daff-tree-item:focus-visible{z-index:1}.daff-tree-item.selected{font-weight:600}.daff-tree-item.parent{position:relative;padding-right:2.5rem}.daff-tree-item.parent:after{content:\"\";position:absolute;top:48%;right:1rem;display:inline-block;border-right:2px solid currentColor;border-bottom:2px solid currentColor;width:.5rem;height:.5rem;transform:translateY(-50%) rotate(45deg);transition:transform .15s}.daff-tree-item.parent.open:after{top:56%;transform:translateY(-50%) rotate(225deg)}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
232
232
|
}
|
233
233
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: DaffTreeComponent, decorators: [{
|
234
234
|
type: Component,
|
@@ -236,7 +236,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImpo
|
|
236
236
|
DaffTreeNotifierService,
|
237
237
|
], hostDirectives: [{
|
238
238
|
directive: DaffArticleEncapsulatedDirective,
|
239
|
-
}], template: "<ng-container *ngFor=\"let node of flatTree; trackBy: trackByTreeElement\">\n\t<ng-container>\n\t\t<li [attr.aria-level]=\"node.level\" [class.hidden]=\"!node.visible\">\n\t\t\t<ng-container\n\t\t\t\t*ngTemplateOutlet=\"node.hasChildren ? withChildrenTemplate : treeItemTemplate; context: { $implicit: node }\">\n\t\t\t</ng-container>\n\t\t</li>\n\t</ng-container>\n</ng-container>", styles: [".daff-tree{margin:0;padding:0;list-style:none;--tree-padding:
|
239
|
+
}], template: "<ng-container *ngFor=\"let node of flatTree; trackBy: trackByTreeElement\">\n\t<ng-container>\n\t\t<li [attr.aria-level]=\"node.level\" [class.hidden]=\"!node.visible\">\n\t\t\t<ng-container\n\t\t\t\t*ngTemplateOutlet=\"node.hasChildren ? withChildrenTemplate : treeItemTemplate; context: { $implicit: node }\">\n\t\t\t</ng-container>\n\t\t</li>\n\t</ng-container>\n</ng-container>", styles: [".daff-tree{margin:0;padding:0;list-style:none;--tree-padding: 1rem}.daff-tree li.hidden{display:none}.daff-tree-item{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;position:relative;background:none;border:0;padding:.5rem 1rem .5rem 0;line-height:1.5rem;font-weight:400;text-align:left;text-decoration:none;width:100%;padding-left:calc(var(--tree-padding) * (var(--depth)))}.daff-tree-item:before{content:\"\";position:absolute;top:0;bottom:0;left:0;width:.25rem}.daff-tree-item:focus,.daff-tree-item:focus-visible{z-index:1}.daff-tree-item.selected{font-weight:600}.daff-tree-item.parent{position:relative;padding-right:2.5rem}.daff-tree-item.parent:after{content:\"\";position:absolute;top:48%;right:1rem;display:inline-block;border-right:2px solid currentColor;border-bottom:2px solid currentColor;width:.5rem;height:.5rem;transform:translateY(-50%) rotate(45deg);transition:transform .15s}.daff-tree-item.parent.open:after{top:56%;transform:translateY(-50%) rotate(225deg)}\n"] }]
|
240
240
|
}], ctorParameters: () => [{ type: DaffTreeNotifierService }], propDecorators: { class: [{
|
241
241
|
type: HostBinding,
|
242
242
|
args: ['class.daff-tree']
|
@@ -360,7 +360,7 @@ class DaffTreeItemDirective {
|
|
360
360
|
}
|
361
361
|
}
|
362
362
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: DaffTreeItemDirective, deps: [{ token: DOCUMENT }, { token: DaffTreeNotifierService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
363
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.10", type: DaffTreeItemDirective, selector: "[daffTreeItem]", inputs: { node: "node", selected: "selected" }, host: { listeners: { "keydown.escape": "onEscape()", "click": "onClick()" }, properties: { "class.daff-tree-item": "this.class", "class.
|
363
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.10", type: DaffTreeItemDirective, selector: "[daffTreeItem]", inputs: { node: "node", selected: "selected" }, host: { listeners: { "keydown.escape": "onEscape()", "click": "onClick()" }, properties: { "class.daff-tree-item": "this.class", "class.parent": "this.classParent", "attr.id": "this.id", "attr.aria-expanded": "this.ariaExpanded", "style.--depth": "this.depth", "class.selected": "this.selectedClass", "class.open": "this.openClass" } }, ngImport: i0 }); }
|
364
364
|
}
|
365
365
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: DaffTreeItemDirective, decorators: [{
|
366
366
|
type: Directive,
|
@@ -375,7 +375,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImpo
|
|
375
375
|
args: ['class.daff-tree-item']
|
376
376
|
}], classParent: [{
|
377
377
|
type: HostBinding,
|
378
|
-
args: ['class.
|
378
|
+
args: ['class.parent']
|
379
379
|
}], id: [{
|
380
380
|
type: HostBinding,
|
381
381
|
args: ['attr.id']
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"daffodil-design-tree.mjs","sources":["../../../libs/design/tree/src/tree/tree-notifier.service.ts","../../../libs/design/tree/src/utils/flatten-tree.ts","../../../libs/design/tree/src/utils/traverse-tree.ts","../../../libs/design/tree/src/utils/hydrate-tree.ts","../../../libs/design/tree/src/tree/tree.component.ts","../../../libs/design/tree/src/tree/tree.component.html","../../../libs/design/tree/src/tree-item/tree-item.directive.ts","../../../libs/design/tree/src/tree.module.ts","../../../libs/design/tree/src/utils/transform-in-place.ts","../../../libs/design/tree/src/utils/transform.ts","../../../libs/design/tree/src/daffodil-design-tree.ts"],"sourcesContent":["import {\n Inject,\n OnDestroy,\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n/**\n * This service is used by tree-items to notify their parent\n * that the tree has to be re-computed.\n *\n * This service is a multiton associated with each tree instance.\n * It follows the same lifecycle has the tree it is associated with.\n */\n@Inject({})\nexport class DaffTreeNotifierService implements OnDestroy {\n\n /**\n * @docs-private\n */\n private _notice: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\n\n /**\n * An observable that emits when the tree needs to be re-computed.\n */\n notice$ = this._notice.asObservable();\n\n /**\n * `notify` can be called to trigger a re-computation of the tree\n * if data has changed unexpectedly and a re-render did not occur.\n *\n * This should be used sparingly. Instead, prefer updating `data` on the tree\n * itself for performance reasons.\n */\n notify() {\n this._notice.next(true);\n }\n\n /**\n * Cleanup when the tree is destroyed.\n *\n * @docs-private\n */\n ngOnDestroy(): void {\n this._notice.complete();\n }\n}\n","import { DaffTreeUi } from '../interfaces/tree-ui';\n\n/**\n * A flattened node of a tree. This is used when translating the tree data\n * structure into an array.\n */\nexport interface DaffTreeFlatNode {\n id: number | string;\n title: string;\n url: string;\n level: number;\n hasChildren: boolean;\n data: unknown;\n visible: boolean;\n _treeRef: DaffTreeUi<unknown>;\n}\n\n/**\n * Flatten a DaffTreeUi<unknown> into an array, removing elements from the array\n * below nodes in the tree that are not open.\n */\nexport const flattenTree = (daffUiTree: DaffTreeUi<unknown>, removeNodes: boolean = false): DaffTreeFlatNode[] => {\n const tree: DaffTreeFlatNode[] = [];\n if(!daffUiTree) {\n return [];\n }\n\n let items = [\n {\n ...daffUiTree,\n level: 0,\n data: undefined,\n open: true,\n _treeRef: daffUiTree,\n },\n ];\n\n\n while(items) {\n const el = items.pop();\n if(!el) {\n break;\n }\n\n items = [\n ...items,\n ...el.items.map((i) => ({\n ...i,\n level:\n el.level + 1,\n _treeRef: i,\n })).reverse(),\n ];\n\n if(!removeNodes && el._treeRef.parent) {\n tree.push({\n id: el.id,\n title: el.title,\n level: el.level,\n url : el.url,\n visible: el._treeRef.parent?.open,\n hasChildren: el.items.length > 0,\n data: undefined,\n _treeRef: el._treeRef,\n });\n } else if(removeNodes && el._treeRef.parent?.open) {\n tree.push({\n id: el.id,\n title: el.title,\n level: el.level,\n url : el.url,\n visible: el._treeRef.parent?.open,\n hasChildren: el.items.length > 0,\n data: undefined,\n _treeRef: el._treeRef,\n });\n }\n }\n\n return tree;\n};\n","import { RecursiveTreeKeyOfType } from '../interfaces/recursive-key';\n\n/**\n * Traverse the tree, pre-order, right-to-left\n */\nexport const traverse = <T extends Record<any, any>, V extends Record<any, any> = T>(\n tree: T,\n visit: (tree: T) => V,\n key: RecursiveTreeKeyOfType<T>,\n): V => {\n let stack = [\n tree,\n ];\n\n while(stack) {\n const el = stack.pop();\n if(!el) {\n break;\n }\n\n visit(el);\n\n stack = [\n ...stack,\n ...<T[]><unknown>el[key],\n ];\n }\n\n return tree;\n};\n","import { traverse } from './traverse-tree';\nimport { DaffTreeData } from '../interfaces/tree-data';\nimport { DaffTreeUi } from '../interfaces/tree-ui';\n\nexport const daffDataTreeToUiTree = <T>(data: DaffTreeData<T>, parent: DaffTreeUi<T>, open: boolean = false): DaffTreeUi<T> => ({\n id: data.id ?? data.title,\n title: data.title,\n url: data.url,\n data: data.data,\n open,\n parent,\n items: [],\n});\n\n/**\n * This function translates the original data given to us by the client\n * to the internal representation of the tree used by the {@link DaffTreeComponent}\n */\nexport const hydrateTree = <T>(data: DaffTreeData<T>): DaffTreeUi<T> => {\n const tree = daffDataTreeToUiTree(data, undefined, true);\n\n let treeStack = [\n tree,\n ];\n\n traverse(data, (el) => {\n const treeEl = treeStack.pop();\n treeEl.items = el.items.map((i) => daffDataTreeToUiTree(i, treeEl, false));\n treeStack = [\n ...treeStack,\n ...treeEl.items,\n ];\n return el;\n }, 'items');\n\n return tree;\n};\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { DaffArticleEncapsulatedDirective } from '@daffodil/design';\n\nimport { DaffTreeNotifierService } from './tree-notifier.service';\nimport { DaffTreeData } from '../interfaces/tree-data';\nimport { DaffTreeRenderMode } from '../interfaces/tree-render-mode';\nimport { DaffTreeUi } from '../interfaces/tree-ui';\nimport {\n DaffTreeFlatNode,\n flattenTree,\n} from '../utils/flatten-tree';\nimport { hydrateTree } from '../utils/hydrate-tree';\n\n/**\n * The `DaffTreeComponent` allows you to render tree structures as interactable ui.\n *\n * They can be used like:\n *\n * ```html\n * <ul daff-tree [tree]=\"tree\">\n * <ng-template #daffTreeItemWithChildrenTpl let-node>\n * <button daffTreeItem [node]=\"node\">{{ node.title }} </button>\n * </ng-template>\n *\n * <ng-template #daffTreeItemTpl let-node>\n * <a daffTreeItem [node]=\"node\" [routerLink]=\"node.url\">{{ node.title }}</a>\n * </ng-template>\n * </ul>\n * ```\n *\n * where `tree` is a {@link DaffTreeData}.\n *\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'ul[daff-tree]',\n templateUrl: './tree.component.html',\n styleUrls: ['./tree.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n DaffTreeNotifierService,\n ],\n hostDirectives: [{\n directive: DaffArticleEncapsulatedDirective,\n }],\n})\nexport class DaffTreeComponent implements OnInit, OnChanges {\n\n /**\n * The css class of the daff-tree.\n *\n * @docs-private\n */\n @HostBinding('class.daff-tree') class = true;\n\n /**\n * The rendering mode for nodes in the tree.\n *\n * Default value is 'in-dom', which means nodes are present in the DOM.\n *\n * Generally, `not-in-dom` is faster as there are less DOM elements to render,\n * but there may be use-cases (like SEO) where having the tree in the DOM\n * is relevant.\n */\n @Input() renderMode: DaffTreeRenderMode;\n\n /**\n * The internal tree element.\n */\n private _tree: DaffTreeUi<unknown> = undefined;\n\n /**\n * The flattened tree data. You can iterate through this if you want to inspect\n * the resulting array structure we computed to render the tree.\n */\n public flatTree: DaffTreeFlatNode[] = [];\n\n /**\n * The tree data you would like to render.\n */\n @Input() tree: DaffTreeData<unknown>;\n\n /**\n * The template used to render tree-nodes that themselves have children.\n *\n * @docs-private\n */\n @ContentChild('daffTreeItemWithChildrenTpl', { static: true })\n withChildrenTemplate: TemplateRef<any>;\n\n /**\n * The template used to render tree-nodes that have no children.\n *\n * @docs-private\n */\n @ContentChild('daffTreeItemTpl', { static: true }) treeItemTemplate: TemplateRef<any>;\n\n constructor(private notifier: DaffTreeNotifierService) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if(!changes.tree.currentValue) {\n this._tree = undefined;\n this.flatTree = [];\n return;\n }\n\n if(changes.renderMode && !changes.tree) {\n this.flatTree = flattenTree(this._tree, changes.renderMode.currentValue === 'not-in-dom');\n } else if(changes.renderMode || changes.tree) {\n this._tree = hydrateTree(changes.tree?.currentValue ?? this.tree);\n this.flatTree = flattenTree(this._tree, (changes.renderMode?.currentValue ?? this.renderMode) === 'not-in-dom');\n }\n }\n\n /**\n * The track-by function used to reduce tree-item re-renders\n */\n trackByTreeElement(index: number, el: any): any {\n return el.title;\n }\n\n /**\n * @docs-private\n */\n ngOnInit(): void {\n this.notifier.notice$.subscribe(() => {\n this.flatTree = flattenTree(this._tree, this.renderMode === 'not-in-dom');\n });\n }\n}\n","<ng-container *ngFor=\"let node of flatTree; trackBy: trackByTreeElement\">\n\t<ng-container>\n\t\t<li [attr.aria-level]=\"node.level\" [class.hidden]=\"!node.visible\">\n\t\t\t<ng-container\n\t\t\t\t*ngTemplateOutlet=\"node.hasChildren ? withChildrenTemplate : treeItemTemplate; context: { $implicit: node }\">\n\t\t\t</ng-container>\n\t\t</li>\n\t</ng-container>\n</ng-container>","import { DOCUMENT } from '@angular/common';\nimport {\n Directive,\n HostBinding,\n HostListener,\n Inject,\n Input,\n} from '@angular/core';\n\nimport { DaffTreeNotifierService } from '../tree/tree-notifier.service';\nimport { DaffTreeFlatNode } from '../utils/flatten-tree';\n\n/**\n * The `DaffTreeItemDirective` allows you to demarcate the elements which are\n * tree-children that interact with the parent tree.\n *\n * They can be used like:\n *\n * ```html\n * <ul daff-tree [tree]=\"tree\">\n * <ng-template #daffTreeItemWithChildrenTpl let-node>\n * <button daffTreeItem [node]=\"node\">{{ node.title }} </button>\n * </ng-template>\n *\n * <ng-template #daffTreeItemTpl let-node>\n * <a daffTreeItem [node]=\"node\" [routerLink]=\"node.url\">{{ node.title }}</a>\n * </ng-template>\n * </ul>\n * ```\n *\n * where `tree` is a {@link DaffTreeData} and `daff-tree` is a {@link DaffTreeComponent}.\n *\n */\n@Directive({\n selector: '[daffTreeItem]',\n})\nexport class DaffTreeItemDirective {\n\n /**\n * The css class of the daff-tree.\n *\n * @docs-private\n */\n @HostBinding('class.daff-tree-item') class = true;\n\n /**\n * The css class of a DaffTreeItemDirective that has children.\n *\n * @docs-private\n */\n @HostBinding('class.daff-tree-item__parent') classParent = false;\n\n /**\n * The html `id` of the tree item. This is derived from the {@link DaffTreeData}.\n *\n * @docs-private\n */\n @HostBinding('attr.id') id;\n\n /**\n * Accessibility property, notifying users about whether\n * or not the tree item is open.\n *\n * @docs-private\n */\n @HostBinding('attr.aria-expanded') ariaExpanded: string;\n\n /**\n * A css variable indicating the depth of the tree.\n * You can use this to style your templates if you want to\n * use different designs at different depths.\n */\n @HostBinding('style.--depth') depth: number;\n\n /**\n * The CSS class indicating whether or not the tree is `selected`.\n */\n @HostBinding('class.selected') get selectedClass() {\n return this.selected;\n };\n\n /**\n * The CSS class indicating whether or not the tree is `open`.\n */\n @HostBinding('class.open') openClass = false;\n\n /**\n * The {@link DaffTreeFlatNode} associated with this specific tree item.\n *\n * @docs-private\n */\n private _node: DaffTreeFlatNode;\n\n /**\n * The {@link DaffTreeFlatNode} associated with this specific tree item.\n */\n @Input()\n get node() {\n return this._node;\n };\n set node(val: DaffTreeFlatNode) {\n this._node = val;\n this.id = 'tree-' + this._node.id;\n this.depth = this._node.level;\n this.classParent = this._node.hasChildren;\n this.openClass = this._node._treeRef.open;\n\n if(this._node.hasChildren) {\n this.ariaExpanded = this._node._treeRef.open ? 'true' : 'false';\n }\n }\n\n /**\n * Whether or not the tree item is the currently active item.\n * Note that there is no requirement there there only be one active item at a time.\n */\n @Input() selected = false;\n\n constructor(\n @Inject(DOCUMENT) private document: any,\n private treeNotifier: DaffTreeNotifierService,\n ) {}\n\n /**\n * @docs-private\n */\n @HostListener('keydown.escape')\n onEscape() {\n this.toggleParent(this.node);\n }\n\n /**\n * @docs-private\n */\n @HostListener('click')\n onClick() {\n if(this.node.hasChildren) {\n this.toggleTree(this.node);\n }\n this.treeNotifier.notify();\n }\n\n /**\n * Toggle the open state of the tree's parent.\n */\n toggleParent(node: DaffTreeFlatNode) {\n if(node._treeRef?.parent.parent === undefined) {\n return;\n }\n node._treeRef.parent.open = !node._treeRef.parent.open;\n (<Document>this.document).getElementById('tree-' + node._treeRef.parent.id).focus();\n }\n\n /**\n * Toggle the open state of this specific subtree tree.\n */\n toggleTree(node: DaffTreeFlatNode) {\n if(node._treeRef.open === false) {\n node._treeRef.open = true;\n } else {\n node._treeRef.open = false;\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DaffTreeComponent } from './tree/tree.component';\nimport { DaffTreeItemDirective } from './tree-item/tree-item.directive';\n\n@NgModule({\n declarations: [\n DaffTreeComponent,\n DaffTreeItemDirective,\n ],\n imports: [\n CommonModule,\n ],\n exports: [\n DaffTreeComponent,\n DaffTreeItemDirective,\n ],\n})\nexport class DaffTreeModule { }\n","import { traverse } from './traverse-tree';\nimport { RecursiveTreeKeyOfType } from '../interfaces/recursive-key';\nimport { DaffTreeData } from '../interfaces/tree-data';\n\n/**\n * Transform a tree-like structure in-place into a {@link DaffTreeData}.\n *\n * This will mutate the original object, hydrating with additional properties.\n *\n * @param tree - The data structure representing tree-like data.\n * @param transformFn - A user-supplied function that will transform the user\n * type into a {@link DaffTreeData}\n * @param key - The property of the your tree that indicates which\n * key contains the \"children\" of your tree structure.\n *\n */\nexport const daffTransformTreeInPlace = <\n // eslint-disable-next-line @typescript-eslint/ban-types\n T extends Record<any,any>,\n>(\n tree: T,\n transformFn: (type: T) => T & DaffTreeData<unknown>,\n key: RecursiveTreeKeyOfType<T>,\n): DaffTreeData<unknown> => traverse<T, T & DaffTreeData<unknown>>(\n tree,\n (el) => {\n const r = Object.assign(el, transformFn(el));\n r.items = el[key];\n el = r;\n return <T & DaffTreeData<unknown>>el;\n },\n // This type is confusing. I don't understand why it has to be here,\n // the associated error message is incomprehensible.\n <T[string] extends T[] ? string : never>key,\n);\n","import { RecursiveTreeKeyOfType } from '../interfaces/recursive-key';\nimport { DaffTreeData } from '../interfaces/tree-data';\n\n/**\n * Transform a tree-like structure into a {@link DaffTreeData}.\n *\n * @param tree - The data structure representing tree-like data.\n * @param transformFn - A user-supplied function that will transform the user\n * type into a {@link DaffTreeData}\n * @param key - The property of the your tree that indicates which\n * key contains the \"children\" of your tree structure.\n *\n */\nexport const daffTransformTree = <\n // eslint-disable-next-line @typescript-eslint/ban-types\n T extends Record<any,any>,\n V\n>(\n tree: T,\n transformFn: (type: T) => DaffTreeData<V>,\n key: RecursiveTreeKeyOfType<T>,\n): DaffTreeData<V> => {\n\n const transformedTree: DaffTreeData<V> = transformFn(tree);\n\n const queue: { node: T; parent: DaffTreeData<V> }[] = [{ node: tree, parent: transformedTree }];\n\n while (queue.length > 0) {\n const { node, parent } = queue.shift();\n\n const childItems = node[key];\n for (const child of <T[]>childItems) {\n const transformedChild: DaffTreeData<V> = transformFn(child);\n parent.items.push(transformedChild);\n queue.push({ node: child, parent: transformedChild });\n }\n }\n\n return transformedTree;\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DaffTreeNotifierService"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"daffodil-design-tree.mjs","sources":["../../../libs/design/tree/src/tree/tree-notifier.service.ts","../../../libs/design/tree/src/utils/flatten-tree.ts","../../../libs/design/tree/src/utils/traverse-tree.ts","../../../libs/design/tree/src/utils/hydrate-tree.ts","../../../libs/design/tree/src/tree/tree.component.ts","../../../libs/design/tree/src/tree/tree.component.html","../../../libs/design/tree/src/tree-item/tree-item.directive.ts","../../../libs/design/tree/src/tree.module.ts","../../../libs/design/tree/src/utils/transform-in-place.ts","../../../libs/design/tree/src/utils/transform.ts","../../../libs/design/tree/src/daffodil-design-tree.ts"],"sourcesContent":["import {\n Inject,\n OnDestroy,\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n/**\n * This service is used by tree-items to notify their parent\n * that the tree has to be re-computed.\n *\n * This service is a multiton associated with each tree instance.\n * It follows the same lifecycle has the tree it is associated with.\n */\n@Inject({})\nexport class DaffTreeNotifierService implements OnDestroy {\n\n /**\n * @docs-private\n */\n private _notice: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\n\n /**\n * An observable that emits when the tree needs to be re-computed.\n */\n notice$ = this._notice.asObservable();\n\n /**\n * `notify` can be called to trigger a re-computation of the tree\n * if data has changed unexpectedly and a re-render did not occur.\n *\n * This should be used sparingly. Instead, prefer updating `data` on the tree\n * itself for performance reasons.\n */\n notify() {\n this._notice.next(true);\n }\n\n /**\n * Cleanup when the tree is destroyed.\n *\n * @docs-private\n */\n ngOnDestroy(): void {\n this._notice.complete();\n }\n}\n","import { DaffTreeUi } from '../interfaces/tree-ui';\n\n/**\n * A flattened node of a tree. This is used when translating the tree data\n * structure into an array.\n */\nexport interface DaffTreeFlatNode {\n id: number | string;\n title: string;\n url: string;\n level: number;\n hasChildren: boolean;\n data: unknown;\n visible: boolean;\n _treeRef: DaffTreeUi<unknown>;\n}\n\n/**\n * Flatten a DaffTreeUi<unknown> into an array, removing elements from the array\n * below nodes in the tree that are not open.\n */\nexport const flattenTree = (daffUiTree: DaffTreeUi<unknown>, removeNodes: boolean = false): DaffTreeFlatNode[] => {\n const tree: DaffTreeFlatNode[] = [];\n if(!daffUiTree) {\n return [];\n }\n\n let items = [\n {\n ...daffUiTree,\n level: 0,\n data: undefined,\n open: true,\n _treeRef: daffUiTree,\n },\n ];\n\n\n while(items) {\n const el = items.pop();\n if(!el) {\n break;\n }\n\n items = [\n ...items,\n ...el.items.map((i) => ({\n ...i,\n level:\n el.level + 1,\n _treeRef: i,\n })).reverse(),\n ];\n\n if(!removeNodes && el._treeRef.parent) {\n tree.push({\n id: el.id,\n title: el.title,\n level: el.level,\n url : el.url,\n visible: el._treeRef.parent?.open,\n hasChildren: el.items.length > 0,\n data: undefined,\n _treeRef: el._treeRef,\n });\n } else if(removeNodes && el._treeRef.parent?.open) {\n tree.push({\n id: el.id,\n title: el.title,\n level: el.level,\n url : el.url,\n visible: el._treeRef.parent?.open,\n hasChildren: el.items.length > 0,\n data: undefined,\n _treeRef: el._treeRef,\n });\n }\n }\n\n return tree;\n};\n","import { RecursiveTreeKeyOfType } from '../interfaces/recursive-key';\n\n/**\n * Traverse the tree, pre-order, right-to-left\n */\nexport const traverse = <T extends Record<any, any>, V extends Record<any, any> = T>(\n tree: T,\n visit: (tree: T) => V,\n key: RecursiveTreeKeyOfType<T>,\n): V => {\n let stack = [\n tree,\n ];\n\n while(stack) {\n const el = stack.pop();\n if(!el) {\n break;\n }\n\n visit(el);\n\n stack = [\n ...stack,\n ...<T[]><unknown>el[key],\n ];\n }\n\n return tree;\n};\n","import { traverse } from './traverse-tree';\nimport { DaffTreeData } from '../interfaces/tree-data';\nimport { DaffTreeUi } from '../interfaces/tree-ui';\n\nexport const daffDataTreeToUiTree = <T>(data: DaffTreeData<T>, parent: DaffTreeUi<T>, open: boolean = false): DaffTreeUi<T> => ({\n id: data.id ?? data.title,\n title: data.title,\n url: data.url,\n data: data.data,\n open,\n parent,\n items: [],\n});\n\n/**\n * This function translates the original data given to us by the client\n * to the internal representation of the tree used by the {@link DaffTreeComponent}\n */\nexport const hydrateTree = <T>(data: DaffTreeData<T>): DaffTreeUi<T> => {\n const tree = daffDataTreeToUiTree(data, undefined, true);\n\n let treeStack = [\n tree,\n ];\n\n traverse(data, (el) => {\n const treeEl = treeStack.pop();\n treeEl.items = el.items.map((i) => daffDataTreeToUiTree(i, treeEl, false));\n treeStack = [\n ...treeStack,\n ...treeEl.items,\n ];\n return el;\n }, 'items');\n\n return tree;\n};\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { DaffArticleEncapsulatedDirective } from '@daffodil/design';\n\nimport { DaffTreeNotifierService } from './tree-notifier.service';\nimport { DaffTreeData } from '../interfaces/tree-data';\nimport { DaffTreeRenderMode } from '../interfaces/tree-render-mode';\nimport { DaffTreeUi } from '../interfaces/tree-ui';\nimport {\n DaffTreeFlatNode,\n flattenTree,\n} from '../utils/flatten-tree';\nimport { hydrateTree } from '../utils/hydrate-tree';\n\n/**\n * The `DaffTreeComponent` allows you to render tree structures as interactable ui.\n *\n * They can be used like:\n *\n * ```html\n * <ul daff-tree [tree]=\"tree\">\n * <ng-template #daffTreeItemWithChildrenTpl let-node>\n * <button daffTreeItem [node]=\"node\">{{ node.title }} </button>\n * </ng-template>\n *\n * <ng-template #daffTreeItemTpl let-node>\n * <a daffTreeItem [node]=\"node\" [routerLink]=\"node.url\">{{ node.title }}</a>\n * </ng-template>\n * </ul>\n * ```\n *\n * where `tree` is a {@link DaffTreeData}.\n *\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'ul[daff-tree]',\n templateUrl: './tree.component.html',\n styleUrls: ['./tree.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n DaffTreeNotifierService,\n ],\n hostDirectives: [{\n directive: DaffArticleEncapsulatedDirective,\n }],\n})\nexport class DaffTreeComponent implements OnInit, OnChanges {\n\n /**\n * The css class of the daff-tree.\n *\n * @docs-private\n */\n @HostBinding('class.daff-tree') class = true;\n\n /**\n * The rendering mode for nodes in the tree.\n *\n * Default value is 'in-dom', which means nodes are present in the DOM.\n *\n * Generally, `not-in-dom` is faster as there are less DOM elements to render,\n * but there may be use-cases (like SEO) where having the tree in the DOM\n * is relevant.\n */\n @Input() renderMode: DaffTreeRenderMode;\n\n /**\n * The internal tree element.\n */\n private _tree: DaffTreeUi<unknown> = undefined;\n\n /**\n * The flattened tree data. You can iterate through this if you want to inspect\n * the resulting array structure we computed to render the tree.\n */\n public flatTree: DaffTreeFlatNode[] = [];\n\n /**\n * The tree data you would like to render.\n */\n @Input() tree: DaffTreeData<unknown>;\n\n /**\n * The template used to render tree-nodes that themselves have children.\n *\n * @docs-private\n */\n @ContentChild('daffTreeItemWithChildrenTpl', { static: true })\n withChildrenTemplate: TemplateRef<any>;\n\n /**\n * The template used to render tree-nodes that have no children.\n *\n * @docs-private\n */\n @ContentChild('daffTreeItemTpl', { static: true }) treeItemTemplate: TemplateRef<any>;\n\n constructor(private notifier: DaffTreeNotifierService) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if(!changes.tree.currentValue) {\n this._tree = undefined;\n this.flatTree = [];\n return;\n }\n\n if(changes.renderMode && !changes.tree) {\n this.flatTree = flattenTree(this._tree, changes.renderMode.currentValue === 'not-in-dom');\n } else if(changes.renderMode || changes.tree) {\n this._tree = hydrateTree(changes.tree?.currentValue ?? this.tree);\n this.flatTree = flattenTree(this._tree, (changes.renderMode?.currentValue ?? this.renderMode) === 'not-in-dom');\n }\n }\n\n /**\n * The track-by function used to reduce tree-item re-renders\n */\n trackByTreeElement(index: number, el: any): any {\n return el.title;\n }\n\n /**\n * @docs-private\n */\n ngOnInit(): void {\n this.notifier.notice$.subscribe(() => {\n this.flatTree = flattenTree(this._tree, this.renderMode === 'not-in-dom');\n });\n }\n}\n","<ng-container *ngFor=\"let node of flatTree; trackBy: trackByTreeElement\">\n\t<ng-container>\n\t\t<li [attr.aria-level]=\"node.level\" [class.hidden]=\"!node.visible\">\n\t\t\t<ng-container\n\t\t\t\t*ngTemplateOutlet=\"node.hasChildren ? withChildrenTemplate : treeItemTemplate; context: { $implicit: node }\">\n\t\t\t</ng-container>\n\t\t</li>\n\t</ng-container>\n</ng-container>","import { DOCUMENT } from '@angular/common';\nimport {\n Directive,\n HostBinding,\n HostListener,\n Inject,\n Input,\n} from '@angular/core';\n\nimport { DaffTreeNotifierService } from '../tree/tree-notifier.service';\nimport { DaffTreeFlatNode } from '../utils/flatten-tree';\n\n/**\n * The `DaffTreeItemDirective` allows you to demarcate the elements which are\n * tree-children that interact with the parent tree.\n *\n * They can be used like:\n *\n * ```html\n * <ul daff-tree [tree]=\"tree\">\n * <ng-template #daffTreeItemWithChildrenTpl let-node>\n * <button daffTreeItem [node]=\"node\">{{ node.title }} </button>\n * </ng-template>\n *\n * <ng-template #daffTreeItemTpl let-node>\n * <a daffTreeItem [node]=\"node\" [routerLink]=\"node.url\">{{ node.title }}</a>\n * </ng-template>\n * </ul>\n * ```\n *\n * where `tree` is a {@link DaffTreeData} and `daff-tree` is a {@link DaffTreeComponent}.\n *\n */\n@Directive({\n selector: '[daffTreeItem]',\n})\nexport class DaffTreeItemDirective {\n\n /**\n * The css class of the daff-tree.\n *\n * @docs-private\n */\n @HostBinding('class.daff-tree-item') class = true;\n\n /**\n * The css class of a DaffTreeItemDirective that has children.\n *\n * @docs-private\n */\n @HostBinding('class.parent') classParent = false;\n\n /**\n * The html `id` of the tree item. This is derived from the {@link DaffTreeData}.\n *\n * @docs-private\n */\n @HostBinding('attr.id') id;\n\n /**\n * Accessibility property, notifying users about whether\n * or not the tree item is open.\n *\n * @docs-private\n */\n @HostBinding('attr.aria-expanded') ariaExpanded: string;\n\n /**\n * A css variable indicating the depth of the tree.\n * You can use this to style your templates if you want to\n * use different designs at different depths.\n */\n @HostBinding('style.--depth') depth: number;\n\n /**\n * The CSS class indicating whether or not the tree is `selected`.\n */\n @HostBinding('class.selected') get selectedClass() {\n return this.selected;\n };\n\n /**\n * The CSS class indicating whether or not the tree is `open`.\n */\n @HostBinding('class.open') openClass = false;\n\n /**\n * The {@link DaffTreeFlatNode} associated with this specific tree item.\n *\n * @docs-private\n */\n private _node: DaffTreeFlatNode;\n\n /**\n * The {@link DaffTreeFlatNode} associated with this specific tree item.\n */\n @Input()\n get node() {\n return this._node;\n };\n set node(val: DaffTreeFlatNode) {\n this._node = val;\n this.id = 'tree-' + this._node.id;\n this.depth = this._node.level;\n this.classParent = this._node.hasChildren;\n this.openClass = this._node._treeRef.open;\n\n if(this._node.hasChildren) {\n this.ariaExpanded = this._node._treeRef.open ? 'true' : 'false';\n }\n }\n\n /**\n * Whether or not the tree item is the currently active item.\n * Note that there is no requirement there there only be one active item at a time.\n */\n @Input() selected = false;\n\n constructor(\n @Inject(DOCUMENT) private document: any,\n private treeNotifier: DaffTreeNotifierService,\n ) {}\n\n /**\n * @docs-private\n */\n @HostListener('keydown.escape')\n onEscape() {\n this.toggleParent(this.node);\n }\n\n /**\n * @docs-private\n */\n @HostListener('click')\n onClick() {\n if(this.node.hasChildren) {\n this.toggleTree(this.node);\n }\n this.treeNotifier.notify();\n }\n\n /**\n * Toggle the open state of the tree's parent.\n */\n toggleParent(node: DaffTreeFlatNode) {\n if(node._treeRef?.parent.parent === undefined) {\n return;\n }\n node._treeRef.parent.open = !node._treeRef.parent.open;\n (<Document>this.document).getElementById('tree-' + node._treeRef.parent.id).focus();\n }\n\n /**\n * Toggle the open state of this specific subtree tree.\n */\n toggleTree(node: DaffTreeFlatNode) {\n if(node._treeRef.open === false) {\n node._treeRef.open = true;\n } else {\n node._treeRef.open = false;\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DaffTreeComponent } from './tree/tree.component';\nimport { DaffTreeItemDirective } from './tree-item/tree-item.directive';\n\n@NgModule({\n declarations: [\n DaffTreeComponent,\n DaffTreeItemDirective,\n ],\n imports: [\n CommonModule,\n ],\n exports: [\n DaffTreeComponent,\n DaffTreeItemDirective,\n ],\n})\nexport class DaffTreeModule { }\n","import { traverse } from './traverse-tree';\nimport { RecursiveTreeKeyOfType } from '../interfaces/recursive-key';\nimport { DaffTreeData } from '../interfaces/tree-data';\n\n/**\n * Transform a tree-like structure in-place into a {@link DaffTreeData}.\n *\n * This will mutate the original object, hydrating with additional properties.\n *\n * @param tree - The data structure representing tree-like data.\n * @param transformFn - A user-supplied function that will transform the user\n * type into a {@link DaffTreeData}\n * @param key - The property of the your tree that indicates which\n * key contains the \"children\" of your tree structure.\n *\n */\nexport const daffTransformTreeInPlace = <\n // eslint-disable-next-line @typescript-eslint/ban-types\n T extends Record<any,any>,\n>(\n tree: T,\n transformFn: (type: T) => T & DaffTreeData<unknown>,\n key: RecursiveTreeKeyOfType<T>,\n): DaffTreeData<unknown> => traverse<T, T & DaffTreeData<unknown>>(\n tree,\n (el) => {\n const r = Object.assign(el, transformFn(el));\n r.items = el[key];\n el = r;\n return <T & DaffTreeData<unknown>>el;\n },\n // This type is confusing. I don't understand why it has to be here,\n // the associated error message is incomprehensible.\n <T[string] extends T[] ? string : never>key,\n);\n","import { RecursiveTreeKeyOfType } from '../interfaces/recursive-key';\nimport { DaffTreeData } from '../interfaces/tree-data';\n\n/**\n * Transform a tree-like structure into a {@link DaffTreeData}.\n *\n * @param tree - The data structure representing tree-like data.\n * @param transformFn - A user-supplied function that will transform the user\n * type into a {@link DaffTreeData}\n * @param key - The property of the your tree that indicates which\n * key contains the \"children\" of your tree structure.\n *\n */\nexport const daffTransformTree = <\n // eslint-disable-next-line @typescript-eslint/ban-types\n T extends Record<any,any>,\n V\n>(\n tree: T,\n transformFn: (type: T) => DaffTreeData<V>,\n key: RecursiveTreeKeyOfType<T>,\n): DaffTreeData<V> => {\n\n const transformedTree: DaffTreeData<V> = transformFn(tree);\n\n const queue: { node: T; parent: DaffTreeData<V> }[] = [{ node: tree, parent: transformedTree }];\n\n while (queue.length > 0) {\n const { node, parent } = queue.shift();\n\n const childItems = node[key];\n for (const child of <T[]>childItems) {\n const transformedChild: DaffTreeData<V> = transformFn(child);\n parent.items.push(transformedChild);\n queue.push({ node: child, parent: transformedChild });\n }\n }\n\n return transformedTree;\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DaffTreeNotifierService"],"mappings":"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"}
|