@daffodil/design 0.61.0 → 0.62.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (144) hide show
  1. package/accordion/examples/package.json +1 -1
  2. package/article/examples/package.json +1 -1
  3. package/button/examples/package.json +1 -1
  4. package/callout/examples/package.json +1 -1
  5. package/card/examples/package.json +1 -1
  6. package/checkbox/examples/package.json +1 -1
  7. package/container/examples/package.json +1 -1
  8. package/core/animation/animation-state-with-params.d.ts +8 -0
  9. package/core/public_api.d.ts +1 -0
  10. package/esm2020/core/animation/animation-state-with-params.mjs +2 -0
  11. package/esm2020/core/public_api.mjs +2 -1
  12. package/esm2020/molecules/backdrop/animation/backdrop-animation-state.mjs +2 -0
  13. package/esm2020/molecules/backdrop/animation/backdrop-animation.mjs +6 -2
  14. package/esm2020/molecules/backdrop/backdrop/backdrop.component.mjs +40 -5
  15. package/esm2020/molecules/sidebar/animation/sidebar-animation-state.mjs +2 -2
  16. package/esm2020/molecules/sidebar/animation/sidebar-animation-width.mjs +2 -0
  17. package/esm2020/molecules/sidebar/animation/sidebar-animation.mjs +21 -4
  18. package/esm2020/molecules/sidebar/animation/sidebar-viewport-animation-state.mjs +3 -0
  19. package/esm2020/molecules/sidebar/helper/sidebar-mode.mjs +1 -1
  20. package/esm2020/molecules/sidebar/helper/sidebar-side.mjs +2 -0
  21. package/esm2020/molecules/sidebar/public_api.mjs +1 -2
  22. package/esm2020/molecules/sidebar/sidebar/sidebar.component.mjs +62 -10
  23. package/esm2020/molecules/sidebar/sidebar-viewport/backdrop-interactable.mjs +5 -0
  24. package/esm2020/molecules/sidebar/sidebar-viewport/content-pad.mjs +17 -0
  25. package/esm2020/molecules/sidebar/sidebar-viewport/content-shift.mjs +21 -0
  26. package/esm2020/molecules/sidebar/sidebar-viewport/sidebar-viewport.component.mjs +83 -81
  27. package/esm2020/sidebar/examples/basic-sidebar/basic-sidebar.component.mjs +12 -0
  28. package/esm2020/sidebar/examples/basic-sidebar/basic-sidebar.module.mjs +29 -0
  29. package/esm2020/sidebar/examples/daffodil-design-sidebar-examples.mjs +5 -0
  30. package/esm2020/sidebar/examples/fixed-and-over-sidebar/fixed-and-over-sidebar.component.mjs +21 -0
  31. package/esm2020/sidebar/examples/fixed-and-over-sidebar/fixed-and-over-sidebar.module.mjs +32 -0
  32. package/esm2020/sidebar/examples/index.mjs +2 -0
  33. package/esm2020/sidebar/examples/public_api.mjs +18 -0
  34. package/esm2020/sidebar/examples/sidebar-with-sticky/sidebar-with-sticky.component.mjs +12 -0
  35. package/esm2020/sidebar/examples/sidebar-with-sticky/sidebar-with-sticky.module.mjs +29 -0
  36. package/esm2020/sidebar/examples/two-fixed-sidebars-either-side/two-fixed-sidebars-either-side.component.mjs +12 -0
  37. package/esm2020/sidebar/examples/two-fixed-sidebars-either-side/two-fixed-sidebars-either-side.module.mjs +29 -0
  38. package/esm2020/sidebar/examples/under-sidebar/under-sidebar.component.mjs +26 -0
  39. package/esm2020/sidebar/examples/under-sidebar/under-sidebar.module.mjs +32 -0
  40. package/esm2020/tree/daffodil-design-tree.mjs +5 -0
  41. package/esm2020/tree/examples/basic-tree/basic-tree.component.mjs +39 -0
  42. package/esm2020/tree/examples/basic-tree/basic-tree.module.mjs +34 -0
  43. package/esm2020/tree/examples/daffodil-design-tree-examples.mjs +5 -0
  44. package/esm2020/tree/examples/index.mjs +2 -0
  45. package/esm2020/tree/examples/public_api.mjs +7 -0
  46. package/esm2020/tree/index.mjs +2 -0
  47. package/esm2020/tree/interfaces/recursive-key.mjs +2 -0
  48. package/esm2020/tree/interfaces/tree-data.mjs +2 -0
  49. package/esm2020/tree/interfaces/tree-ui.mjs +2 -0
  50. package/esm2020/tree/public_api.mjs +5 -0
  51. package/esm2020/tree/tree/tree-notifier.service.mjs +45 -0
  52. package/esm2020/tree/tree/tree.component.mjs +106 -0
  53. package/esm2020/tree/tree-item/tree-item.directive.mjs +154 -0
  54. package/esm2020/tree/tree.module.mjs +31 -0
  55. package/esm2020/tree/utils/flatten-tree.mjs +47 -0
  56. package/esm2020/tree/utils/hydrate-tree.mjs +31 -0
  57. package/esm2020/tree/utils/transform-in-place.mjs +23 -0
  58. package/esm2020/tree/utils/traverse-tree.mjs +21 -0
  59. package/fesm2015/daffodil-design-sidebar-examples.mjs +218 -0
  60. package/fesm2015/daffodil-design-sidebar-examples.mjs.map +1 -0
  61. package/fesm2015/daffodil-design-tree-examples.mjs +81 -0
  62. package/fesm2015/daffodil-design-tree-examples.mjs.map +1 -0
  63. package/fesm2015/daffodil-design-tree.mjs +443 -0
  64. package/fesm2015/daffodil-design-tree.mjs.map +1 -0
  65. package/fesm2015/daffodil-design.mjs +250 -98
  66. package/fesm2015/daffodil-design.mjs.map +1 -1
  67. package/fesm2020/daffodil-design-sidebar-examples.mjs +218 -0
  68. package/fesm2020/daffodil-design-sidebar-examples.mjs.map +1 -0
  69. package/fesm2020/daffodil-design-tree-examples.mjs +81 -0
  70. package/fesm2020/daffodil-design-tree-examples.mjs.map +1 -0
  71. package/fesm2020/daffodil-design-tree.mjs +448 -0
  72. package/fesm2020/daffodil-design-tree.mjs.map +1 -0
  73. package/fesm2020/daffodil-design.mjs +250 -98
  74. package/fesm2020/daffodil-design.mjs.map +1 -1
  75. package/hero/examples/package.json +1 -1
  76. package/image/examples/package.json +1 -1
  77. package/input/examples/package.json +1 -1
  78. package/list/examples/package.json +1 -1
  79. package/loading-icon/examples/package.json +1 -1
  80. package/media-gallery/examples/package.json +1 -1
  81. package/menu/examples/package.json +1 -1
  82. package/modal/examples/package.json +1 -1
  83. package/molecules/backdrop/animation/backdrop-animation-state.d.ts +2 -0
  84. package/molecules/backdrop/backdrop/backdrop.component.d.ts +17 -3
  85. package/molecules/sidebar/animation/sidebar-animation-state.d.ts +2 -1
  86. package/molecules/sidebar/animation/sidebar-animation-width.d.ts +2 -0
  87. package/molecules/sidebar/animation/sidebar-animation.d.ts +3 -1
  88. package/molecules/sidebar/animation/sidebar-viewport-animation-state.d.ts +6 -0
  89. package/molecules/sidebar/helper/sidebar-mode.d.ts +27 -1
  90. package/molecules/sidebar/helper/sidebar-side.d.ts +12 -0
  91. package/molecules/sidebar/public_api.d.ts +2 -1
  92. package/molecules/sidebar/sidebar/sidebar.component.d.ts +37 -5
  93. package/molecules/sidebar/sidebar-viewport/backdrop-interactable.d.ts +6 -0
  94. package/molecules/sidebar/sidebar-viewport/content-pad.d.ts +7 -0
  95. package/molecules/sidebar/sidebar-viewport/content-shift.d.ts +8 -0
  96. package/molecules/sidebar/sidebar-viewport/sidebar-viewport.component.d.ts +47 -44
  97. package/navbar/examples/package.json +1 -1
  98. package/package.json +1 -1
  99. package/paginator/examples/package.json +1 -1
  100. package/quantity-field/examples/package.json +1 -1
  101. package/radio/examples/package.json +1 -1
  102. package/scss/global.scss +1 -0
  103. package/scss/theme.scss +2 -0
  104. package/sidebar/examples/basic-sidebar/basic-sidebar.component.d.ts +5 -0
  105. package/sidebar/examples/basic-sidebar/basic-sidebar.module.d.ts +8 -0
  106. package/sidebar/examples/daffodil-design-sidebar-examples.d.ts +5 -0
  107. package/sidebar/examples/fixed-and-over-sidebar/fixed-and-over-sidebar.component.d.ts +8 -0
  108. package/sidebar/examples/fixed-and-over-sidebar/fixed-and-over-sidebar.module.d.ts +8 -0
  109. package/sidebar/examples/index.d.ts +1 -0
  110. package/sidebar/examples/package.json +1 -0
  111. package/sidebar/examples/public_api.d.ts +2 -0
  112. package/sidebar/examples/sidebar-with-sticky/sidebar-with-sticky.component.d.ts +5 -0
  113. package/sidebar/examples/sidebar-with-sticky/sidebar-with-sticky.module.d.ts +8 -0
  114. package/sidebar/examples/two-fixed-sidebars-either-side/two-fixed-sidebars-either-side.component.d.ts +5 -0
  115. package/sidebar/examples/two-fixed-sidebars-either-side/two-fixed-sidebars-either-side.module.d.ts +8 -0
  116. package/sidebar/examples/under-sidebar/under-sidebar.component.d.ts +10 -0
  117. package/sidebar/examples/under-sidebar/under-sidebar.module.d.ts +8 -0
  118. package/src/molecules/sidebar/README.md +10 -0
  119. package/src/molecules/sidebar/helper/_variables.scss +7 -0
  120. package/src/molecules/sidebar/sidebar/sidebar-theme.scss +3 -3
  121. package/src/molecules/sidebar/sidebar-viewport/sidebar-viewport-theme.scss +5 -0
  122. package/tree/README.md +38 -0
  123. package/tree/daffodil-design-tree.d.ts +5 -0
  124. package/tree/examples/basic-tree/basic-tree.component.d.ts +7 -0
  125. package/tree/examples/basic-tree/basic-tree.module.d.ts +10 -0
  126. package/tree/examples/daffodil-design-tree-examples.d.ts +5 -0
  127. package/tree/examples/index.d.ts +1 -0
  128. package/tree/examples/package.json +1 -0
  129. package/tree/examples/public_api.d.ts +4 -0
  130. package/tree/index.d.ts +1 -0
  131. package/tree/interfaces/recursive-key.d.ts +3 -0
  132. package/tree/interfaces/tree-data.d.ts +13 -0
  133. package/tree/interfaces/tree-ui.d.ts +11 -0
  134. package/tree/package.json +1 -0
  135. package/tree/public_api.d.ts +6 -0
  136. package/tree/src/tree-theme.scss +38 -0
  137. package/tree/tree/tree-notifier.service.d.ts +32 -0
  138. package/tree/tree/tree.component.d.ts +75 -0
  139. package/tree/tree-item/tree-item.directive.d.ts +102 -0
  140. package/tree/tree.module.d.ts +9 -0
  141. package/tree/utils/flatten-tree.d.ts +19 -0
  142. package/tree/utils/hydrate-tree.d.ts +8 -0
  143. package/tree/utils/transform-in-place.d.ts +15 -0
  144. package/tree/utils/traverse-tree.d.ts +5 -0
@@ -2570,7 +2570,7 @@ const daffAccordionAnimations = {
2570
2570
  ]),
2571
2571
  };
2572
2572
 
2573
- const getAnimationState$2 = (open) => {
2573
+ const getAnimationState$3 = (open) => {
2574
2574
  if (open) {
2575
2575
  return 'open';
2576
2576
  }
@@ -2603,11 +2603,11 @@ class DaffAccordionItemComponent {
2603
2603
  */
2604
2604
  ngOnInit() {
2605
2605
  this._open = this.initiallyActive ? this.initiallyActive : this._open;
2606
- this._animationState = getAnimationState$2(this._open);
2606
+ this._animationState = getAnimationState$3(this._open);
2607
2607
  }
2608
2608
  toggleActive() {
2609
2609
  this._open = !this._open;
2610
- this._animationState = getAnimationState$2(this._open);
2610
+ this._animationState = getAnimationState$3(this._open);
2611
2611
  }
2612
2612
  }
2613
2613
  /** @nocollapse */ DaffAccordionItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffAccordionItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
@@ -2688,11 +2688,11 @@ class DaffNavAccordionItemComponent {
2688
2688
  this._level = this.navAccordionItemParent._level + 1;
2689
2689
  }
2690
2690
  this._open = this.initiallyActive ? this.initiallyActive : this._open;
2691
- this._animationState = getAnimationState$2(this._open);
2691
+ this._animationState = getAnimationState$3(this._open);
2692
2692
  }
2693
2693
  toggleActive() {
2694
2694
  this._open = !this._open;
2695
- this._animationState = getAnimationState$2(this._open);
2695
+ this._animationState = getAnimationState$3(this._open);
2696
2696
  }
2697
2697
  }
2698
2698
  /** @nocollapse */ DaffNavAccordionItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffNavAccordionItemComponent, deps: [{ token: DaffAccordionComponent }, { token: DaffNavAccordionItemComponent, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
@@ -2891,6 +2891,10 @@ const backdropTransitionOut = 'cubic-bezier(0.4, 0.0, 1, 1)';
2891
2891
  const backdropTransitionIn = 'cubic-bezier(0.0, 0.0, 0.2, 1)';
2892
2892
  const daffBackdropAnimations = {
2893
2893
  fadeBackdrop: trigger('fadeBackdrop', [
2894
+ state('interactable', style({ opacity: 1 })),
2895
+ state('non-interactable', style({ opacity: 0 })),
2896
+ transition('interactable => non-interactable', animate(animationDuration + ' ' + backdropTransitionOut)),
2897
+ transition('non-interactable => interactable', animate(animationDuration + ' ' + backdropTransitionIn)),
2894
2898
  transition(':enter', [
2895
2899
  style({ opacity: 0 }),
2896
2900
  animate(animationDuration + ' ' + backdropTransitionIn, style({ opacity: 1 })),
@@ -2901,6 +2905,8 @@ const daffBackdropAnimations = {
2901
2905
  ]),
2902
2906
  };
2903
2907
 
2908
+ const getAnimationState$2 = (interactable) => interactable ? 'interactable' : 'non-interactable';
2909
+
2904
2910
  class DaffBackdropComponent {
2905
2911
  constructor() {
2906
2912
  /**
@@ -2908,6 +2914,10 @@ class DaffBackdropComponent {
2908
2914
  */
2909
2915
  // eslint-disable-next-line @typescript-eslint/no-inferrable-types
2910
2916
  this.transparent = false;
2917
+ /**
2918
+ * Determines whether or not the backdrop is interactable.
2919
+ */
2920
+ this.interactable = true;
2911
2921
  /**
2912
2922
  * Boolean property that determines whether or not the
2913
2923
  * backdrop should fill up its containing window.
@@ -2918,34 +2928,64 @@ class DaffBackdropComponent {
2918
2928
  * Output event triggered when the backdrop is clicked.
2919
2929
  */
2920
2930
  this.backdropClicked = new EventEmitter();
2931
+ this.interactableClass = true;
2932
+ }
2933
+ ngOnInit() {
2934
+ this.interactableClass = this.interactable;
2921
2935
  }
2922
2936
  /**
2923
2937
  * Animation hook for that controls the backdrops
2924
2938
  * entrance and fade animations.
2925
2939
  */
2940
+ get fadeBackdropTrigger() {
2941
+ return getAnimationState$2(this.interactable);
2942
+ }
2943
+ animationDone(e) {
2944
+ this.interactableClass = !(e.toState === ':leave' || e.toState === 'non-interactable');
2945
+ }
2946
+ animationStart(e) {
2947
+ if (e.toState === ':enter' || e.toState === 'interactable') {
2948
+ this.interactableClass = true;
2949
+ }
2950
+ }
2951
+ /**
2952
+ * @deprecated
2953
+ * Backdrop event that triggers when the backdrop element is clicked.
2954
+ */
2926
2955
  onBackdropClicked() {
2927
2956
  this.backdropClicked.emit();
2928
2957
  }
2929
2958
  }
2930
2959
  /** @nocollapse */ DaffBackdropComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffBackdropComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2931
- /** @nocollapse */ DaffBackdropComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: DaffBackdropComponent, selector: "daff-backdrop", inputs: { transparent: "transparent", fullscreen: "fullscreen" }, outputs: { backdropClicked: "backdropClicked" }, host: { listeners: { "click": "onBackdropClicked()" }, properties: { "@fadeBackdrop": "this.onBackdropClicked" } }, ngImport: i0, template: "<div class=\"daff-backdrop\" [class.daff-backdrop--fullscreen]=\"fullscreen\" [class.daff-backdrop--transparent]=\"transparent\"></div>\n", styles: [":host{cursor:pointer;-webkit-user-select:none;user-select:none;display:block;-webkit-tap-highlight-color:rgba(0,0,0,0)}.daff-backdrop{background:rgba(0,0,0,.3);height:100%;width:100%}.daff-backdrop--transparent{background:none}.daff-backdrop:focus,.daff-backdrop:active,.daff-backdrop:visited{outline:0}.daff-backdrop--fullscreen{position:absolute}\n"], animations: [
2960
+ /** @nocollapse */ DaffBackdropComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: DaffBackdropComponent, selector: "daff-backdrop", inputs: { transparent: "transparent", interactable: "interactable", fullscreen: "fullscreen" }, outputs: { backdropClicked: "backdropClicked" }, host: { listeners: { "@fadeBackdrop.done": "animationDone($event)", "@fadeBackdrop.start": "animationStart($event)", "click": "onBackdropClicked()" }, properties: { "class.interactable": "this.interactableClass", "@fadeBackdrop": "this.fadeBackdropTrigger" } }, ngImport: i0, template: "<div class=\"daff-backdrop\" [class.daff-backdrop--fullscreen]=\"fullscreen\" [class.daff-backdrop--transparent]=\"transparent\"></div>\n", styles: [":host{display:block;-webkit-tap-highlight-color:rgba(0,0,0,0);visibility:hidden;pointer-events:none}:host.interactable{visibility:visible;pointer-events:all;cursor:pointer;-webkit-user-select:none;user-select:none}.daff-backdrop{background:rgba(0,0,0,.3);height:100%;width:100%}.daff-backdrop--transparent{background:none}.daff-backdrop:focus,.daff-backdrop:active,.daff-backdrop:visited{outline:0}.daff-backdrop--fullscreen{position:absolute}\n"], animations: [
2932
2961
  daffBackdropAnimations.fadeBackdrop,
2933
2962
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2934
2963
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffBackdropComponent, decorators: [{
2935
2964
  type: Component,
2936
2965
  args: [{ selector: 'daff-backdrop', animations: [
2937
2966
  daffBackdropAnimations.fadeBackdrop,
2938
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"daff-backdrop\" [class.daff-backdrop--fullscreen]=\"fullscreen\" [class.daff-backdrop--transparent]=\"transparent\"></div>\n", styles: [":host{cursor:pointer;-webkit-user-select:none;user-select:none;display:block;-webkit-tap-highlight-color:rgba(0,0,0,0)}.daff-backdrop{background:rgba(0,0,0,.3);height:100%;width:100%}.daff-backdrop--transparent{background:none}.daff-backdrop:focus,.daff-backdrop:active,.daff-backdrop:visited{outline:0}.daff-backdrop--fullscreen{position:absolute}\n"] }]
2967
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"daff-backdrop\" [class.daff-backdrop--fullscreen]=\"fullscreen\" [class.daff-backdrop--transparent]=\"transparent\"></div>\n", styles: [":host{display:block;-webkit-tap-highlight-color:rgba(0,0,0,0);visibility:hidden;pointer-events:none}:host.interactable{visibility:visible;pointer-events:all;cursor:pointer;-webkit-user-select:none;user-select:none}.daff-backdrop{background:rgba(0,0,0,.3);height:100%;width:100%}.daff-backdrop--transparent{background:none}.daff-backdrop:focus,.daff-backdrop:active,.daff-backdrop:visited{outline:0}.daff-backdrop--fullscreen{position:absolute}\n"] }]
2939
2968
  }], propDecorators: { transparent: [{
2940
2969
  type: Input
2970
+ }], interactable: [{
2971
+ type: Input
2941
2972
  }], fullscreen: [{
2942
2973
  type: Input
2943
2974
  }], backdropClicked: [{
2944
2975
  type: Output
2945
- }], onBackdropClicked: [{
2976
+ }], interactableClass: [{
2977
+ type: HostBinding,
2978
+ args: ['class.interactable']
2979
+ }], fadeBackdropTrigger: [{
2946
2980
  type: HostBinding,
2947
2981
  args: ['@fadeBackdrop']
2948
- }, {
2982
+ }], animationDone: [{
2983
+ type: HostListener,
2984
+ args: ['@fadeBackdrop.done', ['$event']]
2985
+ }], animationStart: [{
2986
+ type: HostListener,
2987
+ args: ['@fadeBackdrop.start', ['$event']]
2988
+ }], onBackdropClicked: [{
2949
2989
  type: HostListener,
2950
2990
  args: ['click']
2951
2991
  }] } });
@@ -4347,8 +4387,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImpor
4347
4387
  }]
4348
4388
  }] });
4349
4389
 
4350
- const duration = '350ms';
4351
- const sidebarAnimateRemainTransition = 'cubic-bezier(0.4, 0.0, 0.2, 1)';
4390
+ const duration = '200ms';
4352
4391
  const sidebarAnimateInTransition = 'cubic-bezier(0.0, 0.0, 0.2, 1)';
4353
4392
  const sidebarAnimateOutTransition = 'cubic-bezier(0.4, 0.0, 1, 1)';
4354
4393
  const daffSidebarAnimations = {
@@ -4357,15 +4396,32 @@ const daffSidebarAnimations = {
4357
4396
  // 1. 3d transforms causes text to appear blurry on IE and Edge.
4358
4397
  state('open', style({
4359
4398
  transform: 'none',
4360
- visibility: 'visible',
4361
4399
  })),
4400
+ state('closed', style({
4401
+ transform: 'translateX({{width}})',
4402
+ }), { params: { width: '-240px' } }),
4362
4403
  transition('open => closed', animate(duration + ' ' + sidebarAnimateOutTransition)),
4363
4404
  transition('closed => open', animate(duration + ' ' + sidebarAnimateInTransition)),
4364
4405
  ]),
4365
4406
  transformContent: trigger('transformContent', [
4407
+ // We remove the `transform` here completely, rather than setting it to zero, because:
4408
+ // 1. 3d transforms causes text to appear blurry on IE and Edge.
4366
4409
  state('closed', style({
4367
4410
  transform: 'none',
4368
4411
  })),
4412
+ state('open', style({
4413
+ transform: 'translateX({{shift}})',
4414
+ }), { params: { shift: '-240px' } }),
4415
+ transition('open => closed', animate(duration + ' ' + sidebarAnimateInTransition)),
4416
+ transition('closed => open', animate(duration + ' ' + sidebarAnimateOutTransition)),
4417
+ ]),
4418
+ backdropTrigger: trigger('backdropTrigger', [
4419
+ state('open', style({
4420
+ opacity: 1,
4421
+ })),
4422
+ state('closed', style({
4423
+ opacity: 0,
4424
+ })),
4369
4425
  transition('open => closed', animate(duration + ' ' + sidebarAnimateOutTransition)),
4370
4426
  transition('closed => open', animate(duration + ' ' + sidebarAnimateInTransition)),
4371
4427
  ]),
@@ -4374,11 +4430,12 @@ var DaffSidebarAnimationStates;
4374
4430
  (function (DaffSidebarAnimationStates) {
4375
4431
  DaffSidebarAnimationStates["OPEN"] = "open";
4376
4432
  DaffSidebarAnimationStates["CLOSED"] = "closed";
4433
+ DaffSidebarAnimationStates["NONE"] = "none";
4377
4434
  })(DaffSidebarAnimationStates || (DaffSidebarAnimationStates = {}));
4378
4435
 
4379
4436
  const getAnimationState = (open, enabled = true) => {
4380
4437
  if (!enabled) {
4381
- return 'open';
4438
+ return 'none';
4382
4439
  }
4383
4440
  if (open && enabled) {
4384
4441
  return 'open';
@@ -4388,21 +4445,33 @@ const getAnimationState = (open, enabled = true) => {
4388
4445
  }
4389
4446
  };
4390
4447
 
4448
+ const getSidebarAnimationWidth = (side, width) => side === 'left' ? -1 * width + 'px' : width + 'px';
4449
+
4391
4450
  /**
4392
- * DaffSidebar is heavily based upon the work done by the @angular/material2
4451
+ * DaffSidebarComponent is heavily based upon the work done by the @angular/components
4393
4452
  * team on `mat-drawer` and `mat-sidenav`. `daff-sidebar` is intended to be
4394
- * a simplified version (with a different design) of `mat-drawer` which
4395
- * follows a stricter "dumb" component pattern than `mat-drawer`
4453
+ * a simplified version (with a different design) of `mat-drawer`.
4396
4454
  */
4397
4455
  class DaffSidebarComponent {
4398
4456
  constructor(_elementRef, _ngZone) {
4399
4457
  this._elementRef = _elementRef;
4400
4458
  this._ngZone = _ngZone;
4401
- this.class = true;
4402
4459
  /**
4403
4460
  * Event fired when `ESC` key is pressed when the sidebar has focus
4404
4461
  */
4405
4462
  this.escapePressed = new EventEmitter();
4463
+ /**
4464
+ * What side of the viewport to show the sidebar on.
4465
+ */
4466
+ this.side = 'left';
4467
+ /**
4468
+ * The mode of the sidebar.
4469
+ */
4470
+ this.mode = 'side';
4471
+ /**
4472
+ * Whether or not the sidebar is open.
4473
+ */
4474
+ this.open = false;
4406
4475
  /**
4407
4476
  * Listen to `keydown` events outside the zone so that change detection is not run every
4408
4477
  * time a key is pressed. Instead we re-enter the zone only if the `ESC` key is pressed.
@@ -4415,128 +4484,211 @@ class DaffSidebarComponent {
4415
4484
  }));
4416
4485
  });
4417
4486
  }
4487
+ /**
4488
+ * The CSS classes set.
4489
+ */
4490
+ get classes() {
4491
+ return {
4492
+ 'daff-sidebar': true,
4493
+ [this.side]: true,
4494
+ [this.mode]: true,
4495
+ };
4496
+ }
4497
+ ;
4498
+ /**
4499
+ * The animation state of the sidebar.
4500
+ */
4501
+ get transformSidebar() {
4502
+ return {
4503
+ value: getAnimationState(this.open, this.mode === 'over' || this.mode === 'side-fixed'),
4504
+ params: { width: getSidebarAnimationWidth(this.side, this.width) },
4505
+ };
4506
+ }
4507
+ /**
4508
+ * The width of the sidebar.
4509
+ */
4510
+ get width() {
4511
+ return this._elementRef.nativeElement.offsetWidth;
4512
+ }
4418
4513
  }
4419
4514
  /** @nocollapse */ DaffSidebarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffSidebarComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
4420
- /** @nocollapse */ DaffSidebarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: DaffSidebarComponent, selector: "daff-sidebar", outputs: { escapePressed: "escapePressed" }, host: { properties: { "class.daff-sidebar": "this.class" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [":host{display:block}.daff-sidebar{display:block;height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
4515
+ /** @nocollapse */ DaffSidebarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: DaffSidebarComponent, selector: "daff-sidebar", inputs: { side: "side", mode: "mode", open: "open" }, outputs: { escapePressed: "escapePressed" }, host: { properties: { "class": "this.classes", "@transformSidebar": "this.transformSidebar" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [":host{display:block;width:240px;flex-shrink:0;overflow:auto}:host.side-fixed{position:fixed;top:var(--daff-sidebar-side-fixed-top-shift);bottom:0;z-index:4;height:calc(100dvh - var(--daff-sidebar-side-fixed-top-shift))}:host.side-fixed.left{left:0}:host.side-fixed.right{right:0}:host.over,:host.under{position:absolute;top:0;bottom:0}:host.over.left,:host.under.left{left:0}:host.over.right,:host.under.right{right:0}:host.over{z-index:5}:host.under{z-index:2}:host-context(daff-sidebar-viewport daff-sidebar-viewport >).side-fixed{position:sticky}\n"], animations: [
4516
+ daffSidebarAnimations.transformSidebar,
4517
+ ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4421
4518
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffSidebarComponent, decorators: [{
4422
4519
  type: Component,
4423
- args: [{ selector: 'daff-sidebar', template: '<ng-content></ng-content>', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}.daff-sidebar{display:block;height:100%}\n"] }]
4424
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { class: [{
4520
+ args: [{ selector: 'daff-sidebar', template: '<ng-content></ng-content>', changeDetection: ChangeDetectionStrategy.OnPush, animations: [
4521
+ daffSidebarAnimations.transformSidebar,
4522
+ ], styles: [":host{display:block;width:240px;flex-shrink:0;overflow:auto}:host.side-fixed{position:fixed;top:var(--daff-sidebar-side-fixed-top-shift);bottom:0;z-index:4;height:calc(100dvh - var(--daff-sidebar-side-fixed-top-shift))}:host.side-fixed.left{left:0}:host.side-fixed.right{right:0}:host.over,:host.under{position:absolute;top:0;bottom:0}:host.over.left,:host.under.left{left:0}:host.over.right,:host.under.right{right:0}:host.over{z-index:5}:host.under{z-index:2}:host-context(daff-sidebar-viewport daff-sidebar-viewport >).side-fixed{position:sticky}\n"] }]
4523
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { classes: [{
4425
4524
  type: HostBinding,
4426
- args: ['class.daff-sidebar']
4525
+ args: ['class']
4526
+ }], transformSidebar: [{
4527
+ type: HostBinding,
4528
+ args: ['@transformSidebar']
4427
4529
  }], escapePressed: [{
4428
4530
  type: Output
4531
+ }], side: [{
4532
+ type: Input
4533
+ }], mode: [{
4534
+ type: Input
4535
+ }], open: [{
4536
+ type: Input
4429
4537
  }] } });
4430
4538
 
4539
+ /**
4540
+ * Determines, given a list of sidebars, whether or not the backdrop is interactable (typically clickable).
4541
+ */
4542
+ const sidebarViewportBackdropInteractable = (sidebars) => sidebars.reduce((acc, sidebar) => ((sidebar.mode === 'over' || sidebar.mode === 'under') && sidebar.open) || acc, false);
4543
+
4544
+ /**
4545
+ * Given a list of sidebars, compute the associated content shift.
4546
+ */
4547
+ const sidebarViewportContentPadding = (sidebars, side) => sidebars.reduce((acc, sidebar) => {
4548
+ if (!(sidebar.mode === "side-fixed" /* SideFixed */ && sidebar.open)) {
4549
+ return acc;
4550
+ }
4551
+ if (sidebar.side === side) {
4552
+ return sidebar.width;
4553
+ }
4554
+ else {
4555
+ // This component is "stateless", its possible to have two open "under" sidebars.
4556
+ // As such, we defer to "left" being open by default.
4557
+ return acc;
4558
+ }
4559
+ }, 0);
4560
+
4561
+ const isViewportContentShifted = (mode, open) => (mode === 'under' && open);
4562
+ /**
4563
+ * Given a list of sidebars, compute the associated content shift.
4564
+ */
4565
+ const sidebarViewportContentShift = (sidebars) => sidebars.reduce((acc, sidebar) => {
4566
+ if (!isViewportContentShifted(sidebar.mode, sidebar.open)) {
4567
+ return acc;
4568
+ }
4569
+ if (sidebar.side === 'left') {
4570
+ return sidebar.width;
4571
+ }
4572
+ else if (sidebar.side === 'right' && acc === 0) {
4573
+ return -1 * sidebar.width;
4574
+ }
4575
+ else {
4576
+ // This component is "stateless", its possible to have two open "under" sidebars.
4577
+ // As such, we defer to "left" being open by default.
4578
+ return acc;
4579
+ }
4580
+ }, 0);
4581
+
4582
+ /**
4583
+ * The DaffSidebarViewport is the "holder" of sidebars throughout an entire application.
4584
+ * It's generally only used once, like
4585
+ *
4586
+ * ```html
4587
+ * <daff-sidebar-viewport>
4588
+ * <daff-sidebar></daff-sidebar>
4589
+ * <p>Some Content</p>
4590
+ * </daff-sidebar-viewport>
4591
+ * ```
4592
+ *
4593
+ * Importantly, its possible for there to be multiple sidebars of many modes
4594
+ * at the same time. @see {@link DaffSidebarMode }
4595
+ *
4596
+ * Since this is a functional component, it's possible to have multiple "open" sidebars
4597
+ * within at the same time. As a result, this component attempts to
4598
+ * gracefully handle these situations. However, importantly, this sidebar
4599
+ * has a constraint, there's only allowed to be one sidebar,
4600
+ * of each mode, on each side, at any given time. If this is violated,
4601
+ * this component will throw an exception.
4602
+ */
4431
4603
  class DaffSidebarViewportComponent {
4432
- constructor(ref) {
4433
- this.ref = ref;
4604
+ constructor(cdRef) {
4605
+ this.cdRef = cdRef;
4434
4606
  /**
4435
- * Internal tracking variable for the state of sidebar viewport.
4436
- *
4437
- * @docs-private
4607
+ * The number of pixels that the main content of the page should be shifted to
4608
+ * right when there are child sidebars.
4438
4609
  */
4439
- this._opened = false;
4610
+ this._shift = '0px';
4440
4611
  /**
4441
- * @docs-private
4612
+ * The left padding on the content when left side-fixed sidebars are open.
4442
4613
  */
4443
- this._mode = 'side';
4614
+ this._contentPadLeft = 0;
4444
4615
  /**
4445
- * Input state for whether or not the backdrop is
4446
- * "visible" to the human eye
4616
+ * The right padding on the content when right side-fixed sidebars are open.
4447
4617
  */
4448
- // eslint-disable-next-line @typescript-eslint/no-inferrable-types
4449
- this.backdropIsVisible = true;
4618
+ this._contentPadRight = 0;
4619
+ /**
4620
+ * Whether or not the backdrop is interactable
4621
+ */
4622
+ this._backdropInteractable = false;
4623
+ /**
4624
+ * The animation state
4625
+ */
4626
+ this._animationState = { value: 'closed', params: { shift: '0px' } };
4450
4627
  /**
4451
4628
  * Event fired when the backdrop is clicked
4452
4629
  * This is often used to close the sidebar
4453
4630
  */
4454
4631
  this.backdropClicked = new EventEmitter();
4455
4632
  }
4456
- /**
4457
- * The mode to put the sidebar in
4458
- */
4459
- get mode() {
4460
- return this._mode;
4461
- }
4462
- set mode(value) {
4463
- this._mode = value;
4464
- this._animationState = getAnimationState(this.opened, this.animationsEnabled);
4465
- }
4466
- /**
4467
- * Property for the "opened" state of the sidebar
4468
- */
4469
- get opened() {
4470
- return this._opened;
4471
- }
4472
- set opened(value) {
4473
- this._opened = value;
4474
- this._animationState = getAnimationState(value, this.animationsEnabled);
4475
- }
4476
- /**
4477
- * @docs-private
4478
- */
4479
- get animationsEnabled() {
4480
- return (this.mode === 'over' || this.mode === 'push') ? true : false;
4481
- }
4482
- /**
4483
- * @docs-private
4484
- */
4485
- ngOnInit() {
4486
- this._animationState = getAnimationState(this.opened, this.animationsEnabled);
4633
+ ngAfterContentChecked() {
4634
+ const nextShift = sidebarViewportContentShift(this.sidebars) + 'px';
4635
+ if (this._shift !== nextShift) {
4636
+ this._shift = nextShift;
4637
+ this.updateAnimationState();
4638
+ this.cdRef.markForCheck();
4639
+ }
4640
+ const nextBackdropInteractable = sidebarViewportBackdropInteractable(this.sidebars);
4641
+ if (this._backdropInteractable !== nextBackdropInteractable) {
4642
+ this._backdropInteractable = nextBackdropInteractable;
4643
+ this.updateAnimationState();
4644
+ this.cdRef.markForCheck();
4645
+ }
4646
+ ;
4647
+ const nextLeftPadding = sidebarViewportContentPadding(this.sidebars, 'left');
4648
+ if (this._contentPadLeft !== nextLeftPadding) {
4649
+ this._contentPadLeft = nextLeftPadding;
4650
+ this.updateAnimationState();
4651
+ this.cdRef.markForCheck();
4652
+ }
4653
+ const nextRightPadding = sidebarViewportContentPadding(this.sidebars, 'right');
4654
+ if (this._contentPadRight !== nextRightPadding) {
4655
+ this._contentPadRight = nextRightPadding;
4656
+ this.updateAnimationState();
4657
+ this.cdRef.markForCheck();
4658
+ }
4487
4659
  }
4488
4660
  /**
4489
4661
  * @docs-private
4662
+ *
4663
+ * Updates the animation state of the viewport depending upon the state
4664
+ * of all sidebars within the viewport.
4490
4665
  */
4491
- ngAfterViewInit() {
4492
- if (this.sidebar) {
4493
- this.sidebar.escapePressed.subscribe(() => {
4494
- this.onEscape();
4495
- });
4496
- }
4666
+ updateAnimationState() {
4667
+ this._animationState = {
4668
+ value: getAnimationState(this.sidebars.reduce((acc, sidebar) => acc || isViewportContentShifted(sidebar.mode, sidebar.open), false)),
4669
+ params: { shift: this._shift },
4670
+ };
4497
4671
  }
4498
4672
  /**
4499
4673
  * @docs-private
4674
+ * The called when the backdrop of the viewport is clicked upon.
4500
4675
  */
4501
4676
  _backdropClicked() {
4502
4677
  this.backdropClicked.emit();
4503
4678
  }
4504
- /**
4505
- * @docs-private
4506
- */
4507
- get hasBackdrop() {
4508
- return (this.mode === 'over' || this.mode === 'push');
4509
- }
4510
- /**
4511
- * @docs-private
4512
- */
4513
- onEscape() {
4514
- if (this.hasBackdrop) {
4515
- this.opened = false;
4516
- this.ref.markForCheck();
4517
- }
4518
- }
4519
4679
  }
4520
4680
  /** @nocollapse */ DaffSidebarViewportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffSidebarViewportComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
4521
- /** @nocollapse */ DaffSidebarViewportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: DaffSidebarViewportComponent, selector: "daff-sidebar-viewport", inputs: { mode: "mode", backdropIsVisible: "backdropIsVisible", opened: "opened" }, outputs: { backdropClicked: "backdropClicked" }, queries: [{ propertyName: "sidebar", first: true, predicate: DaffSidebarComponent, descendants: true }], ngImport: i0, template: "<div class=\"daff-sidebar-viewport {{ mode }}\">\n <div class=\"daff-sidebar-viewport__sidebar\" [@transformSidebar]=\"_animationState\" [cdkTrapFocus]=\"opened && (mode === 'over' || mode === 'push')\">\n <ng-content select=\"daff-sidebar\" (escapePressed)=\"onEscape($event)\"></ng-content>\n </div>\n\n <daff-backdrop \n class=\"daff-sidebar-viewport__backdrop\" \n *ngIf=\"hasBackdrop && _opened\"\n [transparent]=\"!backdropIsVisible\" \n (backdropClicked)=\"_backdropClicked()\"></daff-backdrop>\n\n <div class=\"daff-sidebar-viewport__content\" [@transformContent]=\"_animationState\">\n <ng-content></ng-content>\n </div>\n</div>", styles: [".daff-sidebar-viewport{display:flex;min-height:100%;position:relative;width:100%;z-index:1}.daff-sidebar-viewport__content{flex:0 1 auto;width:100%;will-change:transform;z-index:2}.daff-sidebar-viewport__sidebar{flex-shrink:0;width:250px;will-change:transform,visibility;z-index:4}.daff-sidebar-viewport__backdrop{cursor:pointer;height:100%;position:absolute;width:100%;z-index:3}.daff-sidebar-viewport.push>.daff-sidebar-viewport__sidebar{bottom:0;height:100%;left:0;position:absolute;top:0;transform:translate(-250px);visibility:hidden}.daff-sidebar-viewport.push>.daff-sidebar-viewport__content{transform:translate(250px)}.daff-sidebar-viewport.over>.daff-sidebar-viewport__sidebar{bottom:0;height:100%;left:0;position:absolute;top:0;transform:translate(-250px);visibility:hidden}\n"], components: [{ type: DaffBackdropComponent, selector: "daff-backdrop", inputs: ["transparent", "fullscreen"], outputs: ["backdropClicked"] }], directives: [{ type: i1$4.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [
4522
- daffSidebarAnimations.transformSidebar,
4681
+ /** @nocollapse */ DaffSidebarViewportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.0", type: DaffSidebarViewportComponent, selector: "daff-sidebar-viewport", outputs: { backdropClicked: "backdropClicked" }, queries: [{ propertyName: "sidebars", predicate: DaffSidebarComponent }], ngImport: i0, template: "<ng-content select=\"daff-sidebar:not([side=right])\"></ng-content>\n\n<daff-backdrop\n [@transformContent]=\"_animationState\"\n class=\"daff-sidebar-viewport__backdrop\"\n [interactable]=\"_backdropInteractable\"\n (backdropClicked)=\"_backdropClicked()\"></daff-backdrop>\n\n<div class=\"daff-sidebar-viewport__content\" [@transformContent]=\"_animationState\">\n <ng-content select=\"[daff-sidebar-viewport-nav]\"></ng-content>\n <div class=\"daff-sidebar-viewport__inner\" [style.padding-left.px]=\"_contentPadLeft\" [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>", styles: [":host{overflow:hidden;display:flex;min-height:100%;position:relative;width:100%;z-index:1;height:100vh;height:100dvh}.daff-sidebar-viewport__content{flex:0 1 auto;width:100%;will-change:transform;z-index:3;overflow-y:auto;height:100%}.daff-sidebar-viewport__sidebar{flex-shrink:0}.daff-sidebar-viewport__backdrop{height:100%;position:absolute;width:100%;z-index:4}:host-context(daff-sidebar-viewport daff-sidebar-viewport) .daff-sidebar-viewport__inner{padding-left:0!important;padding-right:0!important}\n"], components: [{ type: DaffBackdropComponent, selector: "daff-backdrop", inputs: ["transparent", "interactable", "fullscreen"], outputs: ["backdropClicked"] }], animations: [
4523
4682
  daffSidebarAnimations.transformContent,
4524
4683
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4525
4684
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffSidebarViewportComponent, decorators: [{
4526
4685
  type: Component,
4527
4686
  args: [{ selector: 'daff-sidebar-viewport', changeDetection: ChangeDetectionStrategy.OnPush, animations: [
4528
- daffSidebarAnimations.transformSidebar,
4529
4687
  daffSidebarAnimations.transformContent,
4530
- ], template: "<div class=\"daff-sidebar-viewport {{ mode }}\">\n <div class=\"daff-sidebar-viewport__sidebar\" [@transformSidebar]=\"_animationState\" [cdkTrapFocus]=\"opened && (mode === 'over' || mode === 'push')\">\n <ng-content select=\"daff-sidebar\" (escapePressed)=\"onEscape($event)\"></ng-content>\n </div>\n\n <daff-backdrop \n class=\"daff-sidebar-viewport__backdrop\" \n *ngIf=\"hasBackdrop && _opened\"\n [transparent]=\"!backdropIsVisible\" \n (backdropClicked)=\"_backdropClicked()\"></daff-backdrop>\n\n <div class=\"daff-sidebar-viewport__content\" [@transformContent]=\"_animationState\">\n <ng-content></ng-content>\n </div>\n</div>", styles: [".daff-sidebar-viewport{display:flex;min-height:100%;position:relative;width:100%;z-index:1}.daff-sidebar-viewport__content{flex:0 1 auto;width:100%;will-change:transform;z-index:2}.daff-sidebar-viewport__sidebar{flex-shrink:0;width:250px;will-change:transform,visibility;z-index:4}.daff-sidebar-viewport__backdrop{cursor:pointer;height:100%;position:absolute;width:100%;z-index:3}.daff-sidebar-viewport.push>.daff-sidebar-viewport__sidebar{bottom:0;height:100%;left:0;position:absolute;top:0;transform:translate(-250px);visibility:hidden}.daff-sidebar-viewport.push>.daff-sidebar-viewport__content{transform:translate(250px)}.daff-sidebar-viewport.over>.daff-sidebar-viewport__sidebar{bottom:0;height:100%;left:0;position:absolute;top:0;transform:translate(-250px);visibility:hidden}\n"] }]
4531
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { sidebar: [{
4532
- type: ContentChild,
4533
- args: [DaffSidebarComponent]
4534
- }], mode: [{
4535
- type: Input
4536
- }], backdropIsVisible: [{
4537
- type: Input
4538
- }], opened: [{
4539
- type: Input
4688
+ ], template: "<ng-content select=\"daff-sidebar:not([side=right])\"></ng-content>\n\n<daff-backdrop\n [@transformContent]=\"_animationState\"\n class=\"daff-sidebar-viewport__backdrop\"\n [interactable]=\"_backdropInteractable\"\n (backdropClicked)=\"_backdropClicked()\"></daff-backdrop>\n\n<div class=\"daff-sidebar-viewport__content\" [@transformContent]=\"_animationState\">\n <ng-content select=\"[daff-sidebar-viewport-nav]\"></ng-content>\n <div class=\"daff-sidebar-viewport__inner\" [style.padding-left.px]=\"_contentPadLeft\" [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>", styles: [":host{overflow:hidden;display:flex;min-height:100%;position:relative;width:100%;z-index:1;height:100vh;height:100dvh}.daff-sidebar-viewport__content{flex:0 1 auto;width:100%;will-change:transform;z-index:3;overflow-y:auto;height:100%}.daff-sidebar-viewport__sidebar{flex-shrink:0}.daff-sidebar-viewport__backdrop{height:100%;position:absolute;width:100%;z-index:4}:host-context(daff-sidebar-viewport daff-sidebar-viewport) .daff-sidebar-viewport__inner{padding-left:0!important;padding-right:0!important}\n"] }]
4689
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { sidebars: [{
4690
+ type: ContentChildren,
4691
+ args: [DaffSidebarComponent, { descendants: false }]
4540
4692
  }], backdropClicked: [{
4541
4693
  type: Output
4542
4694
  }] } });