igniteui-angular 22.2.0-rc.1 → 22.2.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.
Files changed (107) hide show
  1. package/README.md +1 -1
  2. package/button-group/README.md +42 -9
  3. package/calendar/README.md +30 -20
  4. package/card/README.md +1 -1
  5. package/fesm2022/igniteui-angular-accordion.mjs +7 -7
  6. package/fesm2022/igniteui-angular-action-strip.mjs +11 -22
  7. package/fesm2022/igniteui-angular-action-strip.mjs.map +1 -1
  8. package/fesm2022/igniteui-angular-avatar.mjs +7 -7
  9. package/fesm2022/igniteui-angular-badge.mjs +7 -7
  10. package/fesm2022/igniteui-angular-banner.mjs +10 -10
  11. package/fesm2022/igniteui-angular-bottom-nav.mjs +22 -22
  12. package/fesm2022/igniteui-angular-button-group.mjs +32 -35
  13. package/fesm2022/igniteui-angular-button-group.mjs.map +1 -1
  14. package/fesm2022/igniteui-angular-calendar.mjs +132 -180
  15. package/fesm2022/igniteui-angular-calendar.mjs.map +1 -1
  16. package/fesm2022/igniteui-angular-card.mjs +47 -58
  17. package/fesm2022/igniteui-angular-card.mjs.map +1 -1
  18. package/fesm2022/igniteui-angular-carousel.mjs +22 -22
  19. package/fesm2022/igniteui-angular-chat-extras.mjs +6 -6
  20. package/fesm2022/igniteui-angular-chat.mjs +12 -12
  21. package/fesm2022/igniteui-angular-checkbox.mjs +7 -7
  22. package/fesm2022/igniteui-angular-chips.mjs +10 -10
  23. package/fesm2022/igniteui-angular-combo.mjs +66 -60
  24. package/fesm2022/igniteui-angular-combo.mjs.map +1 -1
  25. package/fesm2022/igniteui-angular-core.mjs +107 -79
  26. package/fesm2022/igniteui-angular-core.mjs.map +1 -1
  27. package/fesm2022/igniteui-angular-date-picker.mjs +38 -38
  28. package/fesm2022/igniteui-angular-dialog.mjs +13 -13
  29. package/fesm2022/igniteui-angular-directives.mjs +194 -194
  30. package/fesm2022/igniteui-angular-drop-down.mjs +29 -29
  31. package/fesm2022/igniteui-angular-expansion-panel.mjs +28 -28
  32. package/fesm2022/igniteui-angular-grids-core.mjs +737 -661
  33. package/fesm2022/igniteui-angular-grids-core.mjs.map +1 -1
  34. package/fesm2022/igniteui-angular-grids-grid.mjs +69 -58
  35. package/fesm2022/igniteui-angular-grids-grid.mjs.map +1 -1
  36. package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs +37 -37
  37. package/fesm2022/igniteui-angular-grids-lite.mjs +25 -17
  38. package/fesm2022/igniteui-angular-grids-lite.mjs.map +1 -1
  39. package/fesm2022/igniteui-angular-grids-pivot-grid.mjs +92 -81
  40. package/fesm2022/igniteui-angular-grids-pivot-grid.mjs.map +1 -1
  41. package/fesm2022/igniteui-angular-grids-tree-grid.mjs +55 -55
  42. package/fesm2022/igniteui-angular-icon.mjs +10 -10
  43. package/fesm2022/igniteui-angular-input-group.mjs +25 -25
  44. package/fesm2022/igniteui-angular-list.mjs +40 -40
  45. package/fesm2022/igniteui-angular-navbar.mjs +13 -13
  46. package/fesm2022/igniteui-angular-navigation-drawer.mjs +43 -38
  47. package/fesm2022/igniteui-angular-navigation-drawer.mjs.map +1 -1
  48. package/fesm2022/igniteui-angular-paginator.mjs +19 -19
  49. package/fesm2022/igniteui-angular-progressbar.mjs +19 -19
  50. package/fesm2022/igniteui-angular-query-builder.mjs +22 -22
  51. package/fesm2022/igniteui-angular-radio.mjs +25 -21
  52. package/fesm2022/igniteui-angular-radio.mjs.map +1 -1
  53. package/fesm2022/igniteui-angular-select.mjs +25 -25
  54. package/fesm2022/igniteui-angular-simple-combo.mjs +9 -9
  55. package/fesm2022/igniteui-angular-simple-combo.mjs.map +1 -1
  56. package/fesm2022/igniteui-angular-slider.mjs +28 -28
  57. package/fesm2022/igniteui-angular-snackbar.mjs +7 -7
  58. package/fesm2022/igniteui-angular-splitter.mjs +13 -13
  59. package/fesm2022/igniteui-angular-stepper.mjs +34 -34
  60. package/fesm2022/igniteui-angular-switch.mjs +7 -7
  61. package/fesm2022/igniteui-angular-tabs.mjs +34 -34
  62. package/fesm2022/igniteui-angular-time-picker.mjs +19 -19
  63. package/fesm2022/igniteui-angular-toast.mjs +7 -7
  64. package/fesm2022/igniteui-angular-tree.mjs +28 -28
  65. package/fesm2022/igniteui-angular-virtual-scroll.mjs +497 -145
  66. package/fesm2022/igniteui-angular-virtual-scroll.mjs.map +1 -1
  67. package/migrations/common/UpdateChanges.d.ts +25 -5
  68. package/migrations/common/UpdateChanges.js +218 -34
  69. package/migrations/common/UpdateChanges.spec.js +763 -0
  70. package/migrations/migration-collection.json +1 -1
  71. package/migrations/update-22_2_0/index.js +145 -0
  72. package/migrations/update-22_2_0/index.spec.js +133 -0
  73. package/navigation-drawer/README.md +1 -1
  74. package/package.json +4 -4
  75. package/schematics/tsconfig.tsbuildinfo +1 -1
  76. package/skills/igniteui-angular-components/SKILL.md +9 -5
  77. package/skills/igniteui-angular-components/references/form-controls.md +1 -1
  78. package/skills/igniteui-angular-components/references/mcp-setup.md +14 -2
  79. package/skills/igniteui-angular-figma-to-app/SKILL.md +112 -525
  80. package/skills/igniteui-angular-figma-to-app/references/asset-extraction.md +49 -75
  81. package/skills/igniteui-angular-figma-to-app/references/design-provenance.md +201 -0
  82. package/skills/igniteui-angular-figma-to-app/references/design-token-bridge.md +175 -52
  83. package/skills/igniteui-angular-figma-to-app/references/figma-component-map.md +153 -99
  84. package/skills/igniteui-angular-figma-to-app/references/figma-exploration.md +226 -0
  85. package/skills/igniteui-angular-figma-to-app/references/mcp-setup.md +71 -105
  86. package/skills/igniteui-angular-figma-to-app/references/project-setup.md +63 -0
  87. package/skills/igniteui-angular-figma-to-app/references/theme-generation.md +120 -0
  88. package/skills/igniteui-angular-figma-to-app/references/validation-patterns.md +48 -50
  89. package/skills/igniteui-angular-generate-from-image-design/SKILL.md +11 -7
  90. package/skills/igniteui-angular-grids/SKILL.md +7 -3
  91. package/skills/igniteui-angular-grids/references/editing.md +1 -2
  92. package/skills/igniteui-angular-grids/references/grid-migration.md +1 -1
  93. package/skills/igniteui-angular-theming/SKILL.md +9 -5
  94. package/skills/igniteui-angular-theming/references/mcp-setup.md +12 -2
  95. package/types/igniteui-angular-button-group.d.ts +49 -34
  96. package/types/igniteui-angular-calendar.d.ts +33 -50
  97. package/types/igniteui-angular-card.d.ts +12 -17
  98. package/types/igniteui-angular-combo.d.ts +6 -0
  99. package/types/igniteui-angular-core.d.ts +10 -2
  100. package/types/igniteui-angular-grids-core.d.ts +48 -4
  101. package/types/igniteui-angular-grids-grid.d.ts +4 -0
  102. package/types/igniteui-angular-grids-lite.d.ts +5 -1
  103. package/types/igniteui-angular-grids-pivot-grid.d.ts +5 -1
  104. package/types/igniteui-angular-navigation-drawer.d.ts +1 -0
  105. package/types/igniteui-angular-radio.d.ts +5 -0
  106. package/types/igniteui-angular-virtual-scroll.d.ts +41 -13
  107. package/virtual-scroll/README.md +32 -1
@@ -72,10 +72,10 @@ class IgxNavDrawerItemDirective {
72
72
  get disabledCSS() {
73
73
  return this.disabled;
74
74
  }
75
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxNavDrawerItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
76
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "22.1.7", type: IgxNavDrawerItemDirective, isStandalone: true, selector: "[igxDrawerItem]", inputs: { active: ["active", "active", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], isHeader: ["isHeader", "isHeader", booleanAttribute] }, host: { properties: { "class.igx-nav-drawer-item": "this.defaultCSS", "class.igx-nav-drawer__item": "this.defaultCSS", "class.igx-nav-drawer-item--active": "this.currentCSS", "class.igx-nav-drawer__item--active": "this.currentCSS", "class.igx-nav-drawer-item--header": "this.headerCSS", "class.igx-nav-drawer__item--header": "this.headerCSS", "class.igx-nav-drawer-item--disabled": "this.disabledCSS", "class.igx-nav-drawer__item--disabled": "this.disabledCSS" } }, exportAs: ["igxDrawerItem"], hostDirectives: [{ directive: i1.IgxNoTypographyDirective }], ngImport: i0 }); }
75
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxNavDrawerItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
76
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "22.2.0", type: IgxNavDrawerItemDirective, isStandalone: true, selector: "[igxDrawerItem]", inputs: { active: ["active", "active", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], isHeader: ["isHeader", "isHeader", booleanAttribute] }, host: { properties: { "class.igx-nav-drawer-item": "this.defaultCSS", "class.igx-nav-drawer__item": "this.defaultCSS", "class.igx-nav-drawer-item--active": "this.currentCSS", "class.igx-nav-drawer__item--active": "this.currentCSS", "class.igx-nav-drawer-item--header": "this.headerCSS", "class.igx-nav-drawer__item--header": "this.headerCSS", "class.igx-nav-drawer-item--disabled": "this.disabledCSS", "class.igx-nav-drawer__item--disabled": "this.disabledCSS" } }, exportAs: ["igxDrawerItem"], hostDirectives: [{ directive: i1.IgxNoTypographyDirective }], ngImport: i0 }); }
77
77
  }
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxNavDrawerItemDirective, decorators: [{
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxNavDrawerItemDirective, decorators: [{
79
79
  type: Directive,
80
80
  args: [{
81
81
  selector: '[igxDrawerItem]',
@@ -121,10 +121,10 @@ class IgxNavDrawerTemplateDirective {
121
121
  constructor() {
122
122
  this.template = inject(TemplateRef);
123
123
  }
124
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxNavDrawerTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
125
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: IgxNavDrawerTemplateDirective, isStandalone: true, selector: "[igxDrawer]", ngImport: i0 }); }
124
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxNavDrawerTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
125
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.2.0", type: IgxNavDrawerTemplateDirective, isStandalone: true, selector: "[igxDrawer]", ngImport: i0 }); }
126
126
  }
127
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxNavDrawerTemplateDirective, decorators: [{
127
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxNavDrawerTemplateDirective, decorators: [{
128
128
  type: Directive,
129
129
  args: [{
130
130
  selector: '[igxDrawer]',
@@ -135,10 +135,10 @@ class IgxNavDrawerMiniTemplateDirective {
135
135
  constructor() {
136
136
  this.template = inject(TemplateRef);
137
137
  }
138
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxNavDrawerMiniTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
139
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.7", type: IgxNavDrawerMiniTemplateDirective, isStandalone: true, selector: "[igxDrawerMini]", ngImport: i0 }); }
138
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxNavDrawerMiniTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
139
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.2.0", type: IgxNavDrawerMiniTemplateDirective, isStandalone: true, selector: "[igxDrawerMini]", ngImport: i0 }); }
140
140
  }
141
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxNavDrawerMiniTemplateDirective, decorators: [{
141
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxNavDrawerMiniTemplateDirective, decorators: [{
142
142
  type: Directive,
143
143
  args: [{
144
144
  selector: '[igxDrawerMini]',
@@ -146,6 +146,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImpor
146
146
  }]
147
147
  }] });
148
148
 
149
+ const PAN_THRESHOLD = 5;
149
150
  let NEXT_ID = 0;
150
151
  /**
151
152
  * **Ignite UI for Angular Navigation Drawer** -
@@ -544,32 +545,30 @@ class IgxNavigationDrawerComponent {
544
545
  this.toggle();
545
546
  }
546
547
  };
547
- this.panStart = (evt) => {
548
+ this.canStartPan = (evt) => {
548
549
  if (!this.enableGestures || this.pin || evt.pointerType !== 'touch') {
549
550
  return false;
550
551
  }
551
552
  const startPosition = this.position === 'right' ? this.getWindowWidth() - (evt.center.x + evt.distance)
552
553
  : evt.center.x - evt.distance;
553
- // cache width during animation, flag to allow further handling
554
- if (this.isOpen || (startPosition < this.maxEdgeZone)) {
555
- this._panning = true;
556
- this._panStartWidth = this.getExpectedWidth(!this.isOpen);
557
- this._panLimit = this.getExpectedWidth(this.isOpen);
558
- this.renderer.addClass(this.overlay, 'igx-nav-drawer__overlay--panning');
559
- this.renderer.addClass(this.drawer, 'igx-nav-drawer__aside--panning');
560
- if (!this.hasAnimateWidth) {
561
- // Translate-mode pan slides the panel via `transform`, but its width is
562
- // driven by `--ig-nav-drawer-size`, which is forced to 0 while the drawer
563
- // is closed. Pin the real width for the duration of the gesture so the
564
- // slide reveals the full panel instead of just its padding/border.
565
- this.renderer.setStyle(this.drawer, 'width', `${this.getExpectedWidth(false)}px`);
566
- }
567
- return true;
554
+ return this.isOpen || startPosition < this.maxEdgeZone;
555
+ };
556
+ this.panStart = (_evt) => {
557
+ if (!this.enableGestures || this.pin) {
558
+ return;
559
+ }
560
+ this._panning = true;
561
+ this._panStartWidth = this.getExpectedWidth(!this.isOpen);
562
+ this._panLimit = this.getExpectedWidth(this.isOpen);
563
+ this.renderer.addClass(this.overlay, 'igx-nav-drawer__overlay--panning');
564
+ this.renderer.addClass(this.drawer, 'igx-nav-drawer__aside--panning');
565
+ if (!this.hasAnimateWidth) {
566
+ // Translate-mode pan slides the panel via `transform`, but its width is
567
+ // driven by `--ig-nav-drawer-size`, which is forced to 0 while the drawer
568
+ // is closed. Pin the real width for the duration of the gesture so the
569
+ // slide reveals the full panel instead of just its padding/border.
570
+ this.renderer.setStyle(this.drawer, 'width', `${this.getExpectedWidth(false)}px`);
568
571
  }
569
- // The touch did not start in the edge zone (and the drawer is closed), so this
570
- // gesture should be ignored. Returning `false` lets the touch manager stop
571
- // tracking immediately and not interfere with normal page scrolling.
572
- return false;
573
572
  };
574
573
  this.pan = (evt) => {
575
574
  // TODO: input.deltaX = prevDelta.x + (center.x - offset.x);
@@ -833,12 +832,18 @@ class IgxNavigationDrawerComponent {
833
832
  if (this.enableGestures && !this.pin) {
834
833
  if (!this._gesturesAttached) {
835
834
  this._gestures = new IgxTouchManager(this._document, {
836
- pointerDown: (event) => this.panStart(event),
835
+ pointerDown: (event) => this.canStartPan(event),
836
+ panStart: (event) => this.panStart(event),
837
837
  panMove: (event) => this.pan(event),
838
838
  swipe: (event) => this.swipe(event),
839
839
  panEnd: (event) => this.panEnd(event),
840
840
  panCancel: () => this.panCancel()
841
- }, { pointerTypes: ['touch'], setPointerCapture: false });
841
+ }, {
842
+ panAxis: 'horizontal',
843
+ panThreshold: PAN_THRESHOLD,
844
+ pointerTypes: ['touch'],
845
+ setPointerCapture: false
846
+ });
842
847
  this._gesturesAttached = true;
843
848
  }
844
849
  }
@@ -909,10 +914,10 @@ class IgxNavigationDrawerComponent {
909
914
  this.drawer.hidePopover();
910
915
  }
911
916
  }
912
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxNavigationDrawerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
913
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "22.1.7", type: IgxNavigationDrawerComponent, isStandalone: true, selector: "igx-nav-drawer", inputs: { id: "id", position: "position", enableGestures: ["enableGestures", "enableGestures", booleanAttribute], pinThreshold: "pinThreshold", pin: ["pin", "pin", booleanAttribute], width: "width", disableAnimation: ["disableAnimation", "disableAnimation", booleanAttribute], miniWidth: "miniWidth", isOpen: ["isOpen", "isOpen", booleanAttribute] }, outputs: { isOpenChange: "isOpenChange", pinChange: "pinChange", opening: "opening", opened: "opened", closing: "closing", closed: "closed" }, host: { properties: { "class.igx-nav-drawer": "this.cssClass", "attr.id": "this.id", "class.igx-nav-drawer--disable-animation": "this.animationsDisabled", "class.igx-nav-drawer--mini": "this.isMini", "class.igx-nav-drawer--pinned": "this.pinned", "style.--ig-nav-drawer-size": "this.normalSize", "style.--ig-nav-drawer-size--mini": "this.miniSize", "style.order": "this.isPinnedRight" } }, queries: [{ propertyName: "contentTemplate", first: true, predicate: IgxNavDrawerTemplateDirective, descendants: true, read: IgxNavDrawerTemplateDirective }, { propertyName: "miniTemplate", first: true, predicate: IgxNavDrawerMiniTemplateDirective, descendants: true, read: IgxNavDrawerMiniTemplateDirective }], viewQueries: [{ propertyName: "_drawer", first: true, predicate: ["aside"], descendants: true, static: true }, { propertyName: "_overlay", first: true, predicate: ["overlay"], descendants: true, static: true }, { propertyName: "_styleDummy", first: true, predicate: ["dummy"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #defaultItemsTemplate>\n <div igxDrawerItem [isHeader]=\"true\">Navigation Drawer</div>\n <div igxDrawerItem> Start by adding</div>\n <div igxDrawerItem> <code>&lt;ng-template igxDrawer&gt;</code> </div>\n <div igxDrawerItem> And some items inside </div>\n <div igxDrawerItem> Style with igxDrawerItem </div>\n <div igxDrawerItem> and igxRipple directives</div>\n <div igxDrawerItem [disabled]=\"true\">Disabled Item</div>\n</ng-template>\n\n<div [hidden]=\"pin\"\n [attr.popover]=\"pin ? null : 'manual'\"\n class=\"igx-nav-drawer__overlay\"\n [class.igx-nav-drawer__overlay--hidden]=\"!isOpen\"\n [class.igx-nav-drawer--disable-animation]=\"animationsDisabled\"\n (click)=\"close()\" #overlay>\n</div>\n<nav\n class=\"igx-nav-drawer__aside\"\n [attr.popover]=\"pin ? null : 'manual'\"\n [class.igx-nav-drawer__aside--collapsed]=\"!miniTemplate && !isOpen\"\n [class.igx-nav-drawer__aside--mini]=\"miniTemplate && !isOpen\"\n [class.igx-nav-drawer__aside--normal]=\"!miniTemplate || isOpen\"\n [class.igx-nav-drawer__aside--pinned]=\"pin\"\n [class.igx-nav-drawer__aside--right]=\"position === 'right'\" #aside\n [class.igx-nav-drawer--disable-animation]=\"animationsDisabled\">\n\n <ng-container *ngTemplateOutlet=\"template || defaultItemsTemplate\"></ng-container>\n</nav>\n<div class=\"igx-nav-drawer__style-dummy\" #dummy></div>\n", styles: ["@layer ig.base{.igx-nav-drawer{--ig-nav-drawer-transition-duration: .3s;display:block;height:100%;flex:0 0 0;transition-duration:var(--ig-nav-drawer-transition-duration)}.igx-nav-drawer--pinned{flex-basis:var(--size)}.igx-nav-drawer--mini.igx-nav-drawer--pinned{flex-basis:calc(var(--size--mini) + .0625rem)}.igx-nav-drawer__aside{position:fixed;display:block;height:100%;min-height:100%;overflow-x:hidden;background:var(--background);inset:0 auto;width:var(--size);inset-inline-start:0;box-shadow:var(--elevation);padding:var(--aside-padding);border:none;border-inline-end:.0625rem solid var(--border-color);border-radius:var(--border-radius);contain:content paint layout;margin:0;border-block:none}.igx-nav-drawer__aside--panning{overflow-x:hidden;transition:none}.igx-nav-drawer__aside--collapsed{transform:translate3d(-300px,0,0);box-shadow:none}[dir=rtl] .igx-nav-drawer__aside--collapsed{transform:translate3d(300px,0,0)}.igx-nav-drawer__aside--collapsed.igx-nav-drawer__aside--right{transform:translate3d(300px,0,0);box-shadow:none}[dir=rtl] .igx-nav-drawer__aside--collapsed.igx-nav-drawer__aside--right{transform:translate3d(-300px,0,0)}.igx-nav-drawer__aside--right{inset-inline-start:auto;inset-inline-end:0;border-inline-end:none;border-inline-start:.0625rem solid var(--border-color)}.igx-nav-drawer__aside--mini{transition-duration:var(--ig-nav-drawer-transition-duration);width:var(--size--mini);min-width:-moz-fit-content;min-width:fit-content}.igx-nav-drawer__aside--mini [igxDrawerItem]{justify-content:center;min-width:-moz-fit-content;min-width:fit-content;width:var(--item-mini-width)}.igx-nav-drawer__aside--mini [igxDrawerItem] igx-icon{margin-inline-start:0}.igx-nav-drawer__aside--normal{transition-duration:var(--ig-nav-drawer-transition-duration);width:var(--size)}.igx-nav-drawer__aside--pinned{position:relative;box-shadow:none}.igx-nav-drawer__aside--pinned.igx-nav-drawer__aside--collapsed{transform:none;width:0;overflow:hidden;border:none;padding-inline:0}.igx-nav-drawer__overlay{opacity:1;background:hsl(from var(--ig-gray-500) h s l/.54);transition:opacity,visibility;transition-duration:var(--ig-nav-drawer-transition-duration),var(--ig-nav-drawer-transition-duration);transition-delay:0s,0s;position:absolute;inset-inline-start:0;inset:0;width:100%;height:100%;visibility:visible;margin:0;padding:0;border:none;display:block}.igx-nav-drawer__overlay--panning{transform:translateZ(0);transition:none}.igx-nav-drawer__overlay--panning.igx-nav-drawer__overlay--hidden{visibility:visible}.igx-nav-drawer__overlay--hidden{visibility:hidden;opacity:0}.igx-nav-drawer__style-dummy{height:0;background:none;box-shadow:none;transition:none;visibility:hidden}.igx-nav-drawer--disable-animation{transition-duration:0s}.igx-nav-drawer-item{position:relative;display:flex;align-items:center;flex-flow:row nowrap;max-height:var(--item-min-height);gap:var(--item-gap);padding:var(--item-padding);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;outline:rgba(0,0,0,0);white-space:nowrap;border-radius:var(--item-border-radius);text-decoration:none;border:none;justify-content:flex-start;contain:paint layout content;color:var(--item-text-color)}.igx-nav-drawer-item igx-icon{--item-icon-color: inherit;--component-size: 3}.igx-nav-drawer-item[igxButton]{--ig-icon-size: 1.5rem;background:#0000;border:none;box-shadow:none}.igx-nav-drawer-item[igxButton] igx-icon{margin:0}.igx-nav-drawer-item[igxButton]:hover,.igx-nav-drawer-item[igxButton]:focus{box-shadow:none;border:none}.igx-nav-drawer-item:hover:not(.igx-nav-drawer-item--active),.igx-nav-drawer-item:focus:not(.igx-nav-drawer-item--active){background:var(--item-hover-background);color:var(--item-hover-text-color)}.igx-nav-drawer-item--header{display:flex;align-items:center;padding:var(--item-padding);min-height:var(--item-min-height);white-space:nowrap;color:var(--item-header-text-color)}.igx-nav-drawer-item--disabled{background:none;color:var(--item-disabled-text-color);cursor:default;pointer-events:none}.igx-nav-drawer-item--disabled igx-icon{color:var(--item-disabled-icon-color)}}@layer ig.material{@container style(--ig-theme: material){.igx-nav-drawer{--aside-padding: .5rem;--item-padding: .75rem .5rem;--item-gap: 2rem;--item-min-height: 3rem}}}@layer ig.material{@container style(--ig-theme: material){.igx-nav-drawer-item{font-family:var(--ig-subtitle-2-font-family, var(--ig-font-family));font-size:var(--ig-subtitle-2-font-size);font-weight:var(--ig-subtitle-2-font-weight);font-style:var(--ig-subtitle-2-font-style);line-height:var(--ig-subtitle-2-line-height);letter-spacing:var(--ig-subtitle-2-letter-spacing);text-transform:var(--ig-subtitle-2-text-transform);margin-top:var(--ig-subtitle-2-margin-top);margin-bottom:var(--ig-subtitle-2-margin-bottom);border-radius:initial;clip-path:inset(.25rem 0 round var(--item-border-radius))}.igx-nav-drawer-item:after{content:\"\";position:absolute;width:100%;inset-block-start:.25rem;inset-inline-start:0;height:calc(100% - .5rem);border-radius:var(--item-border-radius);z-index:-1}.igx-nav-drawer-item:hover,.igx-nav-drawer-item:focus{background:unset}.igx-nav-drawer-item:hover:after,.igx-nav-drawer-item:focus:after{background:var(--item-hover-background)}.igx-nav-drawer-item--active{color:var(--item-active-text-color)}.igx-nav-drawer-item--active:after{background:var(--item-active-background)}.igx-nav-drawer-item--active:focus,.igx-nav-drawer-item--active:hover{color:var(--item-active-text-color)}.igx-nav-drawer-item--active:focus:after,.igx-nav-drawer-item--active:hover:after{background:var(--item-active-background)}.igx-nav-drawer-item--header{font-family:var(--ig-subtitle-1-font-family, var(--ig-font-family));font-size:var(--ig-subtitle-1-font-size);font-weight:var(--ig-subtitle-1-font-weight);font-style:var(--ig-subtitle-1-font-style);line-height:var(--ig-subtitle-1-line-height);letter-spacing:var(--ig-subtitle-1-letter-spacing);text-transform:var(--ig-subtitle-1-text-transform);margin-top:var(--ig-subtitle-1-margin-top);margin-bottom:var(--ig-subtitle-1-margin-bottom)}}}@layer ig.bootstrap{@container style(--ig-theme: bootstrap){.igx-nav-drawer{--aside-padding: 1rem;--item-padding: .5rem 1rem;--item-gap: .5rem;--item-min-height: 2.5rem;--item-mini-width: 3.5rem}}}@layer ig.bootstrap{@container style(--ig-theme: bootstrap){.igx-nav-drawer-item{font-family:var(--ig-body-2-font-family, var(--ig-font-family));font-size:var(--ig-body-2-font-size);font-weight:var(--ig-body-2-font-weight);font-style:var(--ig-body-2-font-style);line-height:var(--ig-body-2-line-height);letter-spacing:var(--ig-body-2-letter-spacing);text-transform:var(--ig-body-2-text-transform);margin-top:var(--ig-body-2-margin-top);margin-bottom:var(--ig-body-2-margin-bottom)}.igx-nav-drawer-item--active{color:var(--item-active-text-color);background:var(--item-active-background)}.igx-nav-drawer-item--active igx-icon{color:var(--item-active-icon-color)}.igx-nav-drawer-item--active:focus,.igx-nav-drawer-item--active:hover{color:var(--item-active-text-color);background:var(--item-active-background)}.igx-nav-drawer-item--active:focus igx-icon,.igx-nav-drawer-item--active:hover igx-icon{color:var(--item-active-icon-color)}.igx-nav-drawer-item--header{font-family:var(--ig-caption-font-family, var(--ig-font-family));font-size:var(--ig-caption-font-size);font-weight:var(--ig-caption-font-weight);font-style:var(--ig-caption-font-style);line-height:var(--ig-caption-line-height);letter-spacing:var(--ig-caption-letter-spacing);text-transform:var(--ig-caption-text-transform);margin-top:var(--ig-caption-margin-top);margin-bottom:var(--ig-caption-margin-bottom)}}}@layer ig.fluent{@container style(--ig-theme: fluent){.igx-nav-drawer{--aside-padding: 0;--item-padding: .625rem .5rem;--item-gap: .5rem;--item-min-height: 2.75rem}.igx-nav-drawer__aside{border:.0625rem solid var(--border-color)}}}@layer ig.fluent{@container style(--ig-theme: fluent){.igx-nav-drawer-item{font-family:var(--ig-body-2-font-family, var(--ig-font-family));font-size:var(--ig-body-2-font-size);font-weight:var(--ig-body-2-font-weight);font-style:var(--ig-body-2-font-style);line-height:var(--ig-body-2-line-height);letter-spacing:var(--ig-body-2-letter-spacing);text-transform:var(--ig-body-2-text-transform);margin-top:var(--ig-body-2-margin-top);margin-bottom:var(--ig-body-2-margin-bottom)}.igx-nav-drawer-item--active{color:var(--item-active-text-color);background:var(--item-active-background)}.igx-nav-drawer-item--active igx-icon{color:var(--item-active-icon-color)}.igx-nav-drawer-item--active:focus,.igx-nav-drawer-item--active:hover{color:var(--item-active-text-color);background:var(--item-active-background)}.igx-nav-drawer-item--active:focus igx-icon,.igx-nav-drawer-item--active:hover igx-icon{color:var(--item-active-icon-color)}.igx-nav-drawer-item--header{font-family:var(--ig-subtitle-1-font-family, var(--ig-font-family));font-size:var(--ig-subtitle-1-font-size);font-weight:var(--ig-subtitle-1-font-weight);font-style:var(--ig-subtitle-1-font-style);line-height:var(--ig-subtitle-1-line-height);letter-spacing:var(--ig-subtitle-1-letter-spacing);text-transform:var(--ig-subtitle-1-text-transform);margin-top:var(--ig-subtitle-1-margin-top);margin-bottom:var(--ig-subtitle-1-margin-bottom)}}}@layer ig.indigo{@container style(--ig-theme: indigo){.igx-nav-drawer{--aside-padding: .5rem;--item-padding: .5rem 1rem;--item-gap: 1rem;--item-min-height: 2rem;--item-mini-width: 2rem;--item-margin: .25rem}.igx-nav-drawer__aside--mini [igxDrawerItem]{margin:var(--item-margin) auto}}}@layer ig.indigo{@container style(--ig-theme: indigo){.igx-nav-drawer-item{font-family:var(--ig-subtitle-2-font-family, var(--ig-font-family));font-size:var(--ig-subtitle-2-font-size);font-weight:var(--ig-subtitle-2-font-weight);font-style:var(--ig-subtitle-2-font-style);line-height:var(--ig-subtitle-2-line-height);letter-spacing:var(--ig-subtitle-2-letter-spacing);text-transform:var(--ig-subtitle-2-text-transform);margin-top:var(--ig-subtitle-2-margin-top);margin-bottom:var(--ig-subtitle-2-margin-bottom);margin-block-end:var(--item-margin)}.igx-nav-drawer-item igx-icon{--component-size: 2}.igx-nav-drawer-item--active{color:var(--item-active-text-color);background:var(--item-active-background)}.igx-nav-drawer-item--active igx-icon{color:var(--item-active-icon-color)}.igx-nav-drawer-item--active:focus,.igx-nav-drawer-item--active:hover{color:var(--item-active-text-color);background:var(--item-active-background)}.igx-nav-drawer-item--active:focus igx-icon,.igx-nav-drawer-item--active:hover igx-icon{color:var(--item-active-icon-color)}.igx-nav-drawer-item--header{font-family:var(--ig-overline-font-family, var(--ig-font-family));font-size:var(--ig-overline-font-size);font-weight:var(--ig-overline-font-weight);font-style:var(--ig-overline-font-style);line-height:var(--ig-overline-line-height);letter-spacing:var(--ig-overline-letter-spacing);text-transform:var(--ig-overline-text-transform);margin-top:var(--ig-overline-margin-top);margin-bottom:var(--ig-overline-margin-bottom);margin-block-end:var(--item-margin)}}}\n"], dependencies: [{ kind: "directive", type: IgxNavDrawerItemDirective, selector: "[igxDrawerItem]", inputs: ["active", "disabled", "isHeader"], exportAs: ["igxDrawerItem"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.Eager, encapsulation: i0.ViewEncapsulation.None }); }
917
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxNavigationDrawerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
918
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "22.2.0", type: IgxNavigationDrawerComponent, isStandalone: true, selector: "igx-nav-drawer", inputs: { id: "id", position: "position", enableGestures: ["enableGestures", "enableGestures", booleanAttribute], pinThreshold: "pinThreshold", pin: ["pin", "pin", booleanAttribute], width: "width", disableAnimation: ["disableAnimation", "disableAnimation", booleanAttribute], miniWidth: "miniWidth", isOpen: ["isOpen", "isOpen", booleanAttribute] }, outputs: { isOpenChange: "isOpenChange", pinChange: "pinChange", opening: "opening", opened: "opened", closing: "closing", closed: "closed" }, host: { properties: { "class.igx-nav-drawer": "this.cssClass", "attr.id": "this.id", "class.igx-nav-drawer--disable-animation": "this.animationsDisabled", "class.igx-nav-drawer--mini": "this.isMini", "class.igx-nav-drawer--pinned": "this.pinned", "style.--ig-nav-drawer-size": "this.normalSize", "style.--ig-nav-drawer-size--mini": "this.miniSize", "style.order": "this.isPinnedRight" } }, queries: [{ propertyName: "contentTemplate", first: true, predicate: IgxNavDrawerTemplateDirective, descendants: true, read: IgxNavDrawerTemplateDirective }, { propertyName: "miniTemplate", first: true, predicate: IgxNavDrawerMiniTemplateDirective, descendants: true, read: IgxNavDrawerMiniTemplateDirective }], viewQueries: [{ propertyName: "_drawer", first: true, predicate: ["aside"], descendants: true, static: true }, { propertyName: "_overlay", first: true, predicate: ["overlay"], descendants: true, static: true }, { propertyName: "_styleDummy", first: true, predicate: ["dummy"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #defaultItemsTemplate>\n <div igxDrawerItem [isHeader]=\"true\">Navigation Drawer</div>\n <div igxDrawerItem> Start by adding</div>\n <div igxDrawerItem> <code>&lt;ng-template igxDrawer&gt;</code> </div>\n <div igxDrawerItem> And some items inside </div>\n <div igxDrawerItem> Style with igxDrawerItem </div>\n <div igxDrawerItem> and igxRipple directives</div>\n <div igxDrawerItem [disabled]=\"true\">Disabled Item</div>\n</ng-template>\n\n<div [hidden]=\"pin\"\n [attr.popover]=\"pin ? null : 'manual'\"\n class=\"igx-nav-drawer__overlay\"\n [class.igx-nav-drawer__overlay--hidden]=\"!isOpen\"\n [class.igx-nav-drawer--disable-animation]=\"animationsDisabled\"\n (click)=\"close()\" #overlay>\n</div>\n<nav\n class=\"igx-nav-drawer__aside\"\n [attr.popover]=\"pin ? null : 'manual'\"\n [class.igx-nav-drawer__aside--collapsed]=\"!miniTemplate && !isOpen\"\n [class.igx-nav-drawer__aside--mini]=\"miniTemplate && !isOpen\"\n [class.igx-nav-drawer__aside--normal]=\"!miniTemplate || isOpen\"\n [class.igx-nav-drawer__aside--pinned]=\"pin\"\n [class.igx-nav-drawer__aside--right]=\"position === 'right'\" #aside\n [class.igx-nav-drawer--disable-animation]=\"animationsDisabled\">\n\n <ng-container *ngTemplateOutlet=\"template || defaultItemsTemplate\"></ng-container>\n</nav>\n<div class=\"igx-nav-drawer__style-dummy\" #dummy></div>\n", styles: ["@layer ig.base{.igx-nav-drawer{--ig-nav-drawer-transition-duration: .3s;display:block;height:100%;flex:0 0 0;transition-duration:var(--ig-nav-drawer-transition-duration)}.igx-nav-drawer--pinned{flex-basis:var(--size)}.igx-nav-drawer--mini.igx-nav-drawer--pinned{flex-basis:calc(var(--size--mini) + .0625rem)}.igx-nav-drawer__aside{position:fixed;display:block;height:100%;min-height:100%;overflow-x:hidden;background:var(--background);inset:0 auto;width:var(--size);inset-inline-start:0;box-shadow:var(--elevation);padding:var(--aside-padding);border:none;border-inline-end:.0625rem solid var(--border-color);border-radius:var(--border-radius);contain:content paint layout;margin:0;border-block:none}.igx-nav-drawer__aside--panning{overflow-x:hidden;transition:none}.igx-nav-drawer__aside--collapsed{transform:translate3d(-300px,0,0);box-shadow:none}[dir=rtl] .igx-nav-drawer__aside--collapsed{transform:translate3d(300px,0,0)}.igx-nav-drawer__aside--collapsed.igx-nav-drawer__aside--right{transform:translate3d(300px,0,0);box-shadow:none}[dir=rtl] .igx-nav-drawer__aside--collapsed.igx-nav-drawer__aside--right{transform:translate3d(-300px,0,0)}.igx-nav-drawer__aside--right{inset-inline-start:auto;inset-inline-end:0;border-inline-end:none;border-inline-start:.0625rem solid var(--border-color)}.igx-nav-drawer__aside--mini{transition-duration:var(--ig-nav-drawer-transition-duration);width:var(--size--mini);min-width:-moz-fit-content;min-width:fit-content}.igx-nav-drawer__aside--mini [igxDrawerItem]{justify-content:center;min-width:-moz-fit-content;min-width:fit-content;width:var(--item-mini-width)}.igx-nav-drawer__aside--mini [igxDrawerItem] igx-icon{margin-inline-start:0}.igx-nav-drawer__aside--normal{transition-duration:var(--ig-nav-drawer-transition-duration);width:var(--size)}.igx-nav-drawer__aside--pinned{position:relative;box-shadow:none}.igx-nav-drawer__aside--pinned.igx-nav-drawer__aside--collapsed{transform:none;width:0;overflow:hidden;border:none;padding-inline:0}.igx-nav-drawer__overlay{opacity:1;background:hsl(from var(--ig-gray-500) h s l/.54);transition:opacity,visibility;transition-duration:var(--ig-nav-drawer-transition-duration),var(--ig-nav-drawer-transition-duration);transition-delay:0s,0s;position:absolute;inset-inline-start:0;inset:0;width:100%;height:100%;visibility:visible;margin:0;padding:0;border:none;display:block}.igx-nav-drawer__overlay--panning{transform:translateZ(0);transition:none}.igx-nav-drawer__overlay--panning.igx-nav-drawer__overlay--hidden{visibility:visible}.igx-nav-drawer__overlay--hidden{visibility:hidden;opacity:0}.igx-nav-drawer__style-dummy{height:0;background:none;box-shadow:none;transition:none;visibility:hidden}.igx-nav-drawer--disable-animation{transition-duration:0s}.igx-nav-drawer-item{position:relative;display:flex;align-items:center;flex-flow:row nowrap;max-height:var(--item-min-height);gap:var(--item-gap);padding:var(--item-padding);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;outline:rgba(0,0,0,0);white-space:nowrap;border-radius:var(--item-border-radius);text-decoration:none;border:none;justify-content:flex-start;contain:paint layout content;color:var(--item-text-color)}.igx-nav-drawer-item igx-icon{--item-icon-color: inherit;--component-size: 3}.igx-nav-drawer-item[igxButton]{--ig-icon-size: 1.5rem;background:#0000;border:none;box-shadow:none}.igx-nav-drawer-item[igxButton] igx-icon{margin:0}.igx-nav-drawer-item[igxButton]:hover,.igx-nav-drawer-item[igxButton]:focus{box-shadow:none;border:none}.igx-nav-drawer-item:hover:not(.igx-nav-drawer-item--active),.igx-nav-drawer-item:focus:not(.igx-nav-drawer-item--active){background:var(--item-hover-background);color:var(--item-hover-text-color)}.igx-nav-drawer-item--header{display:flex;align-items:center;padding:var(--item-padding);min-height:var(--item-min-height);white-space:nowrap;color:var(--item-header-text-color)}.igx-nav-drawer-item--disabled{background:none;color:var(--item-disabled-text-color);cursor:default;pointer-events:none}.igx-nav-drawer-item--disabled igx-icon{color:var(--item-disabled-icon-color)}}@layer ig.material{@container style(--ig-theme: material){.igx-nav-drawer{--aside-padding: .5rem;--item-padding: .75rem .5rem;--item-gap: 2rem;--item-min-height: 3rem}}}@layer ig.material{@container style(--ig-theme: material){.igx-nav-drawer-item{font-family:var(--ig-subtitle-2-font-family, var(--ig-font-family));font-size:var(--ig-subtitle-2-font-size);font-weight:var(--ig-subtitle-2-font-weight);font-style:var(--ig-subtitle-2-font-style);line-height:var(--ig-subtitle-2-line-height);letter-spacing:var(--ig-subtitle-2-letter-spacing);text-transform:var(--ig-subtitle-2-text-transform);margin-top:var(--ig-subtitle-2-margin-top);margin-bottom:var(--ig-subtitle-2-margin-bottom);border-radius:initial;clip-path:inset(.25rem 0 round var(--item-border-radius))}.igx-nav-drawer-item:after{content:\"\";position:absolute;width:100%;inset-block-start:.25rem;inset-inline-start:0;height:calc(100% - .5rem);border-radius:var(--item-border-radius);z-index:-1}.igx-nav-drawer-item:hover,.igx-nav-drawer-item:focus{background:unset}.igx-nav-drawer-item:hover:after,.igx-nav-drawer-item:focus:after{background:var(--item-hover-background)}.igx-nav-drawer-item--active{color:var(--item-active-text-color)}.igx-nav-drawer-item--active:after{background:var(--item-active-background)}.igx-nav-drawer-item--active:focus,.igx-nav-drawer-item--active:hover{color:var(--item-active-text-color)}.igx-nav-drawer-item--active:focus:after,.igx-nav-drawer-item--active:hover:after{background:var(--item-active-background)}.igx-nav-drawer-item--header{font-family:var(--ig-subtitle-1-font-family, var(--ig-font-family));font-size:var(--ig-subtitle-1-font-size);font-weight:var(--ig-subtitle-1-font-weight);font-style:var(--ig-subtitle-1-font-style);line-height:var(--ig-subtitle-1-line-height);letter-spacing:var(--ig-subtitle-1-letter-spacing);text-transform:var(--ig-subtitle-1-text-transform);margin-top:var(--ig-subtitle-1-margin-top);margin-bottom:var(--ig-subtitle-1-margin-bottom)}}}@layer ig.bootstrap{@container style(--ig-theme: bootstrap){.igx-nav-drawer{--aside-padding: 1rem;--item-padding: .5rem 1rem;--item-gap: .5rem;--item-min-height: 2.5rem;--item-mini-width: 3.5rem}}}@layer ig.bootstrap{@container style(--ig-theme: bootstrap){.igx-nav-drawer-item{font-family:var(--ig-body-2-font-family, var(--ig-font-family));font-size:var(--ig-body-2-font-size);font-weight:var(--ig-body-2-font-weight);font-style:var(--ig-body-2-font-style);line-height:var(--ig-body-2-line-height);letter-spacing:var(--ig-body-2-letter-spacing);text-transform:var(--ig-body-2-text-transform);margin-top:var(--ig-body-2-margin-top);margin-bottom:var(--ig-body-2-margin-bottom)}.igx-nav-drawer-item--active{color:var(--item-active-text-color);background:var(--item-active-background)}.igx-nav-drawer-item--active igx-icon{color:var(--item-active-icon-color)}.igx-nav-drawer-item--active:focus,.igx-nav-drawer-item--active:hover{color:var(--item-active-text-color);background:var(--item-active-background)}.igx-nav-drawer-item--active:focus igx-icon,.igx-nav-drawer-item--active:hover igx-icon{color:var(--item-active-icon-color)}.igx-nav-drawer-item--header{font-family:var(--ig-caption-font-family, var(--ig-font-family));font-size:var(--ig-caption-font-size);font-weight:var(--ig-caption-font-weight);font-style:var(--ig-caption-font-style);line-height:var(--ig-caption-line-height);letter-spacing:var(--ig-caption-letter-spacing);text-transform:var(--ig-caption-text-transform);margin-top:var(--ig-caption-margin-top);margin-bottom:var(--ig-caption-margin-bottom)}}}@layer ig.fluent{@container style(--ig-theme: fluent){.igx-nav-drawer{--aside-padding: 0;--item-padding: .625rem .5rem;--item-gap: .5rem;--item-min-height: 2.75rem}.igx-nav-drawer__aside{border:.0625rem solid var(--border-color)}}}@layer ig.fluent{@container style(--ig-theme: fluent){.igx-nav-drawer-item{font-family:var(--ig-body-2-font-family, var(--ig-font-family));font-size:var(--ig-body-2-font-size);font-weight:var(--ig-body-2-font-weight);font-style:var(--ig-body-2-font-style);line-height:var(--ig-body-2-line-height);letter-spacing:var(--ig-body-2-letter-spacing);text-transform:var(--ig-body-2-text-transform);margin-top:var(--ig-body-2-margin-top);margin-bottom:var(--ig-body-2-margin-bottom)}.igx-nav-drawer-item--active{color:var(--item-active-text-color);background:var(--item-active-background)}.igx-nav-drawer-item--active igx-icon{color:var(--item-active-icon-color)}.igx-nav-drawer-item--active:focus,.igx-nav-drawer-item--active:hover{color:var(--item-active-text-color);background:var(--item-active-background)}.igx-nav-drawer-item--active:focus igx-icon,.igx-nav-drawer-item--active:hover igx-icon{color:var(--item-active-icon-color)}.igx-nav-drawer-item--header{font-family:var(--ig-subtitle-1-font-family, var(--ig-font-family));font-size:var(--ig-subtitle-1-font-size);font-weight:var(--ig-subtitle-1-font-weight);font-style:var(--ig-subtitle-1-font-style);line-height:var(--ig-subtitle-1-line-height);letter-spacing:var(--ig-subtitle-1-letter-spacing);text-transform:var(--ig-subtitle-1-text-transform);margin-top:var(--ig-subtitle-1-margin-top);margin-bottom:var(--ig-subtitle-1-margin-bottom)}}}@layer ig.indigo{@container style(--ig-theme: indigo){.igx-nav-drawer{--aside-padding: .5rem;--item-padding: .5rem 1rem;--item-gap: 1rem;--item-min-height: 2rem;--item-mini-width: 2rem;--item-margin: .25rem}.igx-nav-drawer__aside--mini [igxDrawerItem]{margin:var(--item-margin) auto}}}@layer ig.indigo{@container style(--ig-theme: indigo){.igx-nav-drawer-item{font-family:var(--ig-subtitle-2-font-family, var(--ig-font-family));font-size:var(--ig-subtitle-2-font-size);font-weight:var(--ig-subtitle-2-font-weight);font-style:var(--ig-subtitle-2-font-style);line-height:var(--ig-subtitle-2-line-height);letter-spacing:var(--ig-subtitle-2-letter-spacing);text-transform:var(--ig-subtitle-2-text-transform);margin-top:var(--ig-subtitle-2-margin-top);margin-bottom:var(--ig-subtitle-2-margin-bottom);margin-block-end:var(--item-margin)}.igx-nav-drawer-item igx-icon{--component-size: 2}.igx-nav-drawer-item--active{color:var(--item-active-text-color);background:var(--item-active-background)}.igx-nav-drawer-item--active igx-icon{color:var(--item-active-icon-color)}.igx-nav-drawer-item--active:focus,.igx-nav-drawer-item--active:hover{color:var(--item-active-text-color);background:var(--item-active-background)}.igx-nav-drawer-item--active:focus igx-icon,.igx-nav-drawer-item--active:hover igx-icon{color:var(--item-active-icon-color)}.igx-nav-drawer-item--header{font-family:var(--ig-overline-font-family, var(--ig-font-family));font-size:var(--ig-overline-font-size);font-weight:var(--ig-overline-font-weight);font-style:var(--ig-overline-font-style);line-height:var(--ig-overline-line-height);letter-spacing:var(--ig-overline-letter-spacing);text-transform:var(--ig-overline-text-transform);margin-top:var(--ig-overline-margin-top);margin-bottom:var(--ig-overline-margin-bottom);margin-block-end:var(--item-margin)}}}\n"], dependencies: [{ kind: "directive", type: IgxNavDrawerItemDirective, selector: "[igxDrawerItem]", inputs: ["active", "disabled", "isHeader"], exportAs: ["igxDrawerItem"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.Eager, encapsulation: i0.ViewEncapsulation.None }); }
914
919
  }
915
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxNavigationDrawerComponent, decorators: [{
920
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxNavigationDrawerComponent, decorators: [{
916
921
  type: Component,
917
922
  args: [{ selector: 'igx-nav-drawer', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Eager, imports: [IgxNavDrawerItemDirective, NgTemplateOutlet], template: "<ng-template #defaultItemsTemplate>\n <div igxDrawerItem [isHeader]=\"true\">Navigation Drawer</div>\n <div igxDrawerItem> Start by adding</div>\n <div igxDrawerItem> <code>&lt;ng-template igxDrawer&gt;</code> </div>\n <div igxDrawerItem> And some items inside </div>\n <div igxDrawerItem> Style with igxDrawerItem </div>\n <div igxDrawerItem> and igxRipple directives</div>\n <div igxDrawerItem [disabled]=\"true\">Disabled Item</div>\n</ng-template>\n\n<div [hidden]=\"pin\"\n [attr.popover]=\"pin ? null : 'manual'\"\n class=\"igx-nav-drawer__overlay\"\n [class.igx-nav-drawer__overlay--hidden]=\"!isOpen\"\n [class.igx-nav-drawer--disable-animation]=\"animationsDisabled\"\n (click)=\"close()\" #overlay>\n</div>\n<nav\n class=\"igx-nav-drawer__aside\"\n [attr.popover]=\"pin ? null : 'manual'\"\n [class.igx-nav-drawer__aside--collapsed]=\"!miniTemplate && !isOpen\"\n [class.igx-nav-drawer__aside--mini]=\"miniTemplate && !isOpen\"\n [class.igx-nav-drawer__aside--normal]=\"!miniTemplate || isOpen\"\n [class.igx-nav-drawer__aside--pinned]=\"pin\"\n [class.igx-nav-drawer__aside--right]=\"position === 'right'\" #aside\n [class.igx-nav-drawer--disable-animation]=\"animationsDisabled\">\n\n <ng-container *ngTemplateOutlet=\"template || defaultItemsTemplate\"></ng-container>\n</nav>\n<div class=\"igx-nav-drawer__style-dummy\" #dummy></div>\n", styles: ["@layer ig.base{.igx-nav-drawer{--ig-nav-drawer-transition-duration: .3s;display:block;height:100%;flex:0 0 0;transition-duration:var(--ig-nav-drawer-transition-duration)}.igx-nav-drawer--pinned{flex-basis:var(--size)}.igx-nav-drawer--mini.igx-nav-drawer--pinned{flex-basis:calc(var(--size--mini) + .0625rem)}.igx-nav-drawer__aside{position:fixed;display:block;height:100%;min-height:100%;overflow-x:hidden;background:var(--background);inset:0 auto;width:var(--size);inset-inline-start:0;box-shadow:var(--elevation);padding:var(--aside-padding);border:none;border-inline-end:.0625rem solid var(--border-color);border-radius:var(--border-radius);contain:content paint layout;margin:0;border-block:none}.igx-nav-drawer__aside--panning{overflow-x:hidden;transition:none}.igx-nav-drawer__aside--collapsed{transform:translate3d(-300px,0,0);box-shadow:none}[dir=rtl] .igx-nav-drawer__aside--collapsed{transform:translate3d(300px,0,0)}.igx-nav-drawer__aside--collapsed.igx-nav-drawer__aside--right{transform:translate3d(300px,0,0);box-shadow:none}[dir=rtl] .igx-nav-drawer__aside--collapsed.igx-nav-drawer__aside--right{transform:translate3d(-300px,0,0)}.igx-nav-drawer__aside--right{inset-inline-start:auto;inset-inline-end:0;border-inline-end:none;border-inline-start:.0625rem solid var(--border-color)}.igx-nav-drawer__aside--mini{transition-duration:var(--ig-nav-drawer-transition-duration);width:var(--size--mini);min-width:-moz-fit-content;min-width:fit-content}.igx-nav-drawer__aside--mini [igxDrawerItem]{justify-content:center;min-width:-moz-fit-content;min-width:fit-content;width:var(--item-mini-width)}.igx-nav-drawer__aside--mini [igxDrawerItem] igx-icon{margin-inline-start:0}.igx-nav-drawer__aside--normal{transition-duration:var(--ig-nav-drawer-transition-duration);width:var(--size)}.igx-nav-drawer__aside--pinned{position:relative;box-shadow:none}.igx-nav-drawer__aside--pinned.igx-nav-drawer__aside--collapsed{transform:none;width:0;overflow:hidden;border:none;padding-inline:0}.igx-nav-drawer__overlay{opacity:1;background:hsl(from var(--ig-gray-500) h s l/.54);transition:opacity,visibility;transition-duration:var(--ig-nav-drawer-transition-duration),var(--ig-nav-drawer-transition-duration);transition-delay:0s,0s;position:absolute;inset-inline-start:0;inset:0;width:100%;height:100%;visibility:visible;margin:0;padding:0;border:none;display:block}.igx-nav-drawer__overlay--panning{transform:translateZ(0);transition:none}.igx-nav-drawer__overlay--panning.igx-nav-drawer__overlay--hidden{visibility:visible}.igx-nav-drawer__overlay--hidden{visibility:hidden;opacity:0}.igx-nav-drawer__style-dummy{height:0;background:none;box-shadow:none;transition:none;visibility:hidden}.igx-nav-drawer--disable-animation{transition-duration:0s}.igx-nav-drawer-item{position:relative;display:flex;align-items:center;flex-flow:row nowrap;max-height:var(--item-min-height);gap:var(--item-gap);padding:var(--item-padding);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;outline:rgba(0,0,0,0);white-space:nowrap;border-radius:var(--item-border-radius);text-decoration:none;border:none;justify-content:flex-start;contain:paint layout content;color:var(--item-text-color)}.igx-nav-drawer-item igx-icon{--item-icon-color: inherit;--component-size: 3}.igx-nav-drawer-item[igxButton]{--ig-icon-size: 1.5rem;background:#0000;border:none;box-shadow:none}.igx-nav-drawer-item[igxButton] igx-icon{margin:0}.igx-nav-drawer-item[igxButton]:hover,.igx-nav-drawer-item[igxButton]:focus{box-shadow:none;border:none}.igx-nav-drawer-item:hover:not(.igx-nav-drawer-item--active),.igx-nav-drawer-item:focus:not(.igx-nav-drawer-item--active){background:var(--item-hover-background);color:var(--item-hover-text-color)}.igx-nav-drawer-item--header{display:flex;align-items:center;padding:var(--item-padding);min-height:var(--item-min-height);white-space:nowrap;color:var(--item-header-text-color)}.igx-nav-drawer-item--disabled{background:none;color:var(--item-disabled-text-color);cursor:default;pointer-events:none}.igx-nav-drawer-item--disabled igx-icon{color:var(--item-disabled-icon-color)}}@layer ig.material{@container style(--ig-theme: material){.igx-nav-drawer{--aside-padding: .5rem;--item-padding: .75rem .5rem;--item-gap: 2rem;--item-min-height: 3rem}}}@layer ig.material{@container style(--ig-theme: material){.igx-nav-drawer-item{font-family:var(--ig-subtitle-2-font-family, var(--ig-font-family));font-size:var(--ig-subtitle-2-font-size);font-weight:var(--ig-subtitle-2-font-weight);font-style:var(--ig-subtitle-2-font-style);line-height:var(--ig-subtitle-2-line-height);letter-spacing:var(--ig-subtitle-2-letter-spacing);text-transform:var(--ig-subtitle-2-text-transform);margin-top:var(--ig-subtitle-2-margin-top);margin-bottom:var(--ig-subtitle-2-margin-bottom);border-radius:initial;clip-path:inset(.25rem 0 round var(--item-border-radius))}.igx-nav-drawer-item:after{content:\"\";position:absolute;width:100%;inset-block-start:.25rem;inset-inline-start:0;height:calc(100% - .5rem);border-radius:var(--item-border-radius);z-index:-1}.igx-nav-drawer-item:hover,.igx-nav-drawer-item:focus{background:unset}.igx-nav-drawer-item:hover:after,.igx-nav-drawer-item:focus:after{background:var(--item-hover-background)}.igx-nav-drawer-item--active{color:var(--item-active-text-color)}.igx-nav-drawer-item--active:after{background:var(--item-active-background)}.igx-nav-drawer-item--active:focus,.igx-nav-drawer-item--active:hover{color:var(--item-active-text-color)}.igx-nav-drawer-item--active:focus:after,.igx-nav-drawer-item--active:hover:after{background:var(--item-active-background)}.igx-nav-drawer-item--header{font-family:var(--ig-subtitle-1-font-family, var(--ig-font-family));font-size:var(--ig-subtitle-1-font-size);font-weight:var(--ig-subtitle-1-font-weight);font-style:var(--ig-subtitle-1-font-style);line-height:var(--ig-subtitle-1-line-height);letter-spacing:var(--ig-subtitle-1-letter-spacing);text-transform:var(--ig-subtitle-1-text-transform);margin-top:var(--ig-subtitle-1-margin-top);margin-bottom:var(--ig-subtitle-1-margin-bottom)}}}@layer ig.bootstrap{@container style(--ig-theme: bootstrap){.igx-nav-drawer{--aside-padding: 1rem;--item-padding: .5rem 1rem;--item-gap: .5rem;--item-min-height: 2.5rem;--item-mini-width: 3.5rem}}}@layer ig.bootstrap{@container style(--ig-theme: bootstrap){.igx-nav-drawer-item{font-family:var(--ig-body-2-font-family, var(--ig-font-family));font-size:var(--ig-body-2-font-size);font-weight:var(--ig-body-2-font-weight);font-style:var(--ig-body-2-font-style);line-height:var(--ig-body-2-line-height);letter-spacing:var(--ig-body-2-letter-spacing);text-transform:var(--ig-body-2-text-transform);margin-top:var(--ig-body-2-margin-top);margin-bottom:var(--ig-body-2-margin-bottom)}.igx-nav-drawer-item--active{color:var(--item-active-text-color);background:var(--item-active-background)}.igx-nav-drawer-item--active igx-icon{color:var(--item-active-icon-color)}.igx-nav-drawer-item--active:focus,.igx-nav-drawer-item--active:hover{color:var(--item-active-text-color);background:var(--item-active-background)}.igx-nav-drawer-item--active:focus igx-icon,.igx-nav-drawer-item--active:hover igx-icon{color:var(--item-active-icon-color)}.igx-nav-drawer-item--header{font-family:var(--ig-caption-font-family, var(--ig-font-family));font-size:var(--ig-caption-font-size);font-weight:var(--ig-caption-font-weight);font-style:var(--ig-caption-font-style);line-height:var(--ig-caption-line-height);letter-spacing:var(--ig-caption-letter-spacing);text-transform:var(--ig-caption-text-transform);margin-top:var(--ig-caption-margin-top);margin-bottom:var(--ig-caption-margin-bottom)}}}@layer ig.fluent{@container style(--ig-theme: fluent){.igx-nav-drawer{--aside-padding: 0;--item-padding: .625rem .5rem;--item-gap: .5rem;--item-min-height: 2.75rem}.igx-nav-drawer__aside{border:.0625rem solid var(--border-color)}}}@layer ig.fluent{@container style(--ig-theme: fluent){.igx-nav-drawer-item{font-family:var(--ig-body-2-font-family, var(--ig-font-family));font-size:var(--ig-body-2-font-size);font-weight:var(--ig-body-2-font-weight);font-style:var(--ig-body-2-font-style);line-height:var(--ig-body-2-line-height);letter-spacing:var(--ig-body-2-letter-spacing);text-transform:var(--ig-body-2-text-transform);margin-top:var(--ig-body-2-margin-top);margin-bottom:var(--ig-body-2-margin-bottom)}.igx-nav-drawer-item--active{color:var(--item-active-text-color);background:var(--item-active-background)}.igx-nav-drawer-item--active igx-icon{color:var(--item-active-icon-color)}.igx-nav-drawer-item--active:focus,.igx-nav-drawer-item--active:hover{color:var(--item-active-text-color);background:var(--item-active-background)}.igx-nav-drawer-item--active:focus igx-icon,.igx-nav-drawer-item--active:hover igx-icon{color:var(--item-active-icon-color)}.igx-nav-drawer-item--header{font-family:var(--ig-subtitle-1-font-family, var(--ig-font-family));font-size:var(--ig-subtitle-1-font-size);font-weight:var(--ig-subtitle-1-font-weight);font-style:var(--ig-subtitle-1-font-style);line-height:var(--ig-subtitle-1-line-height);letter-spacing:var(--ig-subtitle-1-letter-spacing);text-transform:var(--ig-subtitle-1-text-transform);margin-top:var(--ig-subtitle-1-margin-top);margin-bottom:var(--ig-subtitle-1-margin-bottom)}}}@layer ig.indigo{@container style(--ig-theme: indigo){.igx-nav-drawer{--aside-padding: .5rem;--item-padding: .5rem 1rem;--item-gap: 1rem;--item-min-height: 2rem;--item-mini-width: 2rem;--item-margin: .25rem}.igx-nav-drawer__aside--mini [igxDrawerItem]{margin:var(--item-margin) auto}}}@layer ig.indigo{@container style(--ig-theme: indigo){.igx-nav-drawer-item{font-family:var(--ig-subtitle-2-font-family, var(--ig-font-family));font-size:var(--ig-subtitle-2-font-size);font-weight:var(--ig-subtitle-2-font-weight);font-style:var(--ig-subtitle-2-font-style);line-height:var(--ig-subtitle-2-line-height);letter-spacing:var(--ig-subtitle-2-letter-spacing);text-transform:var(--ig-subtitle-2-text-transform);margin-top:var(--ig-subtitle-2-margin-top);margin-bottom:var(--ig-subtitle-2-margin-bottom);margin-block-end:var(--item-margin)}.igx-nav-drawer-item igx-icon{--component-size: 2}.igx-nav-drawer-item--active{color:var(--item-active-text-color);background:var(--item-active-background)}.igx-nav-drawer-item--active igx-icon{color:var(--item-active-icon-color)}.igx-nav-drawer-item--active:focus,.igx-nav-drawer-item--active:hover{color:var(--item-active-text-color);background:var(--item-active-background)}.igx-nav-drawer-item--active:focus igx-icon,.igx-nav-drawer-item--active:hover igx-icon{color:var(--item-active-icon-color)}.igx-nav-drawer-item--header{font-family:var(--ig-overline-font-family, var(--ig-font-family));font-size:var(--ig-overline-font-size);font-weight:var(--ig-overline-font-weight);font-style:var(--ig-overline-font-style);line-height:var(--ig-overline-line-height);letter-spacing:var(--ig-overline-letter-spacing);text-transform:var(--ig-overline-text-transform);margin-top:var(--ig-overline-margin-top);margin-bottom:var(--ig-overline-margin-bottom);margin-block-end:var(--item-margin)}}}\n"] }]
918
923
  }], ctorParameters: () => [], propDecorators: { cssClass: [{
@@ -1002,11 +1007,11 @@ const IGX_NAVIGATION_DRAWER_DIRECTIVES = [
1002
1007
  * @hidden
1003
1008
  */
1004
1009
  class IgxNavigationDrawerModule {
1005
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxNavigationDrawerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1006
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.7", ngImport: i0, type: IgxNavigationDrawerModule, imports: [IgxNavigationDrawerComponent, IgxNavDrawerItemDirective, IgxNavDrawerMiniTemplateDirective, IgxNavDrawerTemplateDirective], exports: [IgxNavigationDrawerComponent, IgxNavDrawerItemDirective, IgxNavDrawerMiniTemplateDirective, IgxNavDrawerTemplateDirective] }); }
1007
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxNavigationDrawerModule }); }
1010
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxNavigationDrawerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1011
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.2.0", ngImport: i0, type: IgxNavigationDrawerModule, imports: [IgxNavigationDrawerComponent, IgxNavDrawerItemDirective, IgxNavDrawerMiniTemplateDirective, IgxNavDrawerTemplateDirective], exports: [IgxNavigationDrawerComponent, IgxNavDrawerItemDirective, IgxNavDrawerMiniTemplateDirective, IgxNavDrawerTemplateDirective] }); }
1012
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxNavigationDrawerModule }); }
1008
1013
  }
1009
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: IgxNavigationDrawerModule, decorators: [{
1014
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.0", ngImport: i0, type: IgxNavigationDrawerModule, decorators: [{
1010
1015
  type: NgModule,
1011
1016
  args: [{
1012
1017
  imports: [
@@ -1 +1 @@
1
- {"version":3,"file":"igniteui-angular-navigation-drawer.mjs","sources":["../../../projects/igniteui-angular/navigation-drawer/src/navigation-drawer/navigation-drawer.directives.ts","../../../projects/igniteui-angular/navigation-drawer/src/navigation-drawer/navigation-drawer.component.ts","../../../projects/igniteui-angular/navigation-drawer/src/navigation-drawer/navigation-drawer.component.html","../../../projects/igniteui-angular/navigation-drawer/src/navigation-drawer/public_api.ts","../../../projects/igniteui-angular/navigation-drawer/src/navigation-drawer/navigation-drawer.module.ts","../../../projects/igniteui-angular/navigation-drawer/src/igniteui-angular-navigation-drawer.ts"],"sourcesContent":["import { Directive, HostBinding, Input, TemplateRef, booleanAttribute, inject } from '@angular/core';\nimport { IgxNoTypographyDirective } from 'igniteui-angular/directives';\n\n@Directive({\n selector: '[igxDrawerItem]',\n exportAs: 'igxDrawerItem',\n standalone: true,\n hostDirectives: [IgxNoTypographyDirective]\n})\nexport class IgxNavDrawerItemDirective {\n\n /**\n * Styles a navigation drawer item as selected.\n * If not set, `active` will have default value `false`.\n *\n * @example\n * ```html\n * <span igxDrawerItem [active]=\"true\">Active Item</span>\n * ```\n */\n @Input({ transform: booleanAttribute }) public active = false;\n\n /**\n * Disables a navigation drawer item.\n * If not set, `disabled` will have default value `false`.\n *\n * @example\n * ```html\n * <span igxDrawerItem [disabled]=\"true\">Disabled Item</span>\n * ```\n */\n @Input({ transform: booleanAttribute }) public disabled = false;\n\n /**\n * Styles a navigation drawer item as a group header.\n * If not set, `isHeader` will have default value `false`.\n *\n * @example\n * ```html\n * <span igxDrawerItem [isHeader]=\"true\">Header</span>\n * ```\n */\n @Input({ transform: booleanAttribute }) public isHeader = false;\n\n /**\n * @hidden\n */\n public readonly activeClass = 'igx-nav-drawer-item--active';\n\n /**\n * @hidden\n */\n public readonly disabledClass = 'igx-nav-drawer-item--disabled';\n\n /**\n * @hidden\n */\n @HostBinding('class.igx-nav-drawer-item')\n @HostBinding('class.igx-nav-drawer__item')\n public get defaultCSS(): boolean {\n return !this.isHeader;\n }\n\n /**\n * @hidden\n */\n @HostBinding('class.igx-nav-drawer-item--active')\n @HostBinding('class.igx-nav-drawer__item--active')\n public get currentCSS(): boolean {\n return this.active && !this.isHeader && !this.disabled;\n }\n\n /**\n * @hidden\n */\n @HostBinding('class.igx-nav-drawer-item--header')\n @HostBinding('class.igx-nav-drawer__item--header')\n public get headerCSS(): boolean {\n return this.isHeader;\n }\n\n /**\n * @hidden\n */\n @HostBinding('class.igx-nav-drawer-item--disabled')\n @HostBinding('class.igx-nav-drawer__item--disabled')\n public get disabledCSS(): boolean {\n return this.disabled;\n }\n}\n\n@Directive({\n selector: '[igxDrawer]',\n standalone: true\n})\nexport class IgxNavDrawerTemplateDirective {\n public template = inject<TemplateRef<any>>(TemplateRef);\n}\n\n@Directive({\n selector: '[igxDrawerMini]',\n standalone: true\n})\nexport class IgxNavDrawerMiniTemplateDirective {\n public template = inject<TemplateRef<any>>(TemplateRef);\n}\n","import {\n AfterContentInit,\n afterRenderEffect,\n afterNextRender,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChange,\n ViewChild,\n Renderer2,\n booleanAttribute,\n inject,\n signal,\n computed,\n ChangeDetectionStrategy,\n ViewEncapsulation\n} from '@angular/core';\nimport { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport { fromEvent, interval, Subscription } from 'rxjs';\nimport { debounce } from 'rxjs/operators';\nimport { IgxNavigationService, IToggleView } from 'igniteui-angular/core';\nimport { IgxNavDrawerMiniTemplateDirective, IgxNavDrawerTemplateDirective, IgxNavDrawerItemDirective } from './navigation-drawer.directives';\nimport { IgxGestureEvent, IgxTouchManager, PlatformUtil } from 'igniteui-angular/core';\n\nlet NEXT_ID = 0;\n/**\n * **Ignite UI for Angular Navigation Drawer** -\n * [Documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/navdrawer)\n *\n * The Ignite UI Navigation Drawer is a collapsible side navigation container commonly used in combination with the Navbar.\n *\n * Example:\n * ```html\n * <igx-nav-drawer id=\"navigation\" [isOpen]=\"true\">\n * <ng-template igxDrawer>\n * <nav>\n * <span igxDrawerItem [isHeader]=\"true\">Email</span>\n * <span igxDrawerItem igxRipple>Inbox</span>\n * <span igxDrawerItem igxRipple>Deleted</span>\n * <span igxDrawerItem igxRipple>Sent</span>\n * </nav>\n * </ng-template>\n * </igx-nav-drawer>\n * ```\n */\n@Component({\n selector: 'igx-nav-drawer',\n templateUrl: 'navigation-drawer.component.html',\n styleUrl: 'navigation-drawer.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [IgxNavDrawerItemDirective, NgTemplateOutlet]\n})\nexport class IgxNavigationDrawerComponent implements\n IToggleView,\n OnInit,\n AfterContentInit,\n OnDestroy,\n OnChanges {\n private elementRef = inject<ElementRef>(ElementRef);\n private _state = inject(IgxNavigationService, { optional: true });\n private renderer = inject(Renderer2);\n private _document = inject(DOCUMENT);\n private platformUtil = inject(PlatformUtil);\n\n private _isOpen = signal(false);\n private _pinned = signal(false);\n private _miniTemplate = signal<IgxNavDrawerMiniTemplateDirective | undefined>(undefined);\n private _visibleOverlay = computed<boolean>(() => {\n return !this._pinned() && (this._isOpen() || !!this._miniTemplate());\n });\n private _closingAnimation = signal(false);\n\n\n /** @hidden @internal */\n @HostBinding('class.igx-nav-drawer')\n public cssClass = true;\n\n /**\n * ID of the component\n *\n * ```typescript\n * // get\n * let myNavDrawerId = this.navdrawer.id;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer id='navdrawer'></igx-nav-drawer>\n * ```\n */\n @HostBinding('attr.id')\n @Input() public id = `igx-nav-drawer-${NEXT_ID++}`;\n\n /**\n * Position of the Navigation Drawer. Can be \"left\"(default) or \"right\".\n *\n * ```typescript\n * // get\n * let myNavDrawerPosition = this.navdrawer.position;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer [position]=\"'left'\"></igx-nav-drawer>\n * ```\n */\n @Input() public position = 'left';\n\n /**\n * Enables the use of touch gestures to manipulate the drawer:\n * - swipe/pan from edge to open, swipe-toggle and pan-drag.\n *\n * ```typescript\n * // get\n * let gesturesEnabled = this.navdrawer.enableGestures;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer [enableGestures]='true'></igx-nav-drawer>\n * ```\n */\n @Input({ transform: booleanAttribute }) public enableGestures = true;\n\n /**\n * @hidden\n */\n @Output() public isOpenChange = new EventEmitter<boolean>();\n\n /**\n * Minimum device width required for automatic pin to be toggled.\n * Default is 1024, can be set to a falsy value to disable this behavior.\n *\n * ```typescript\n * // get\n * let navDrawerPinThreshold = this.navdrawer.pinThreshold;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer [pinThreshold]='1024'></igx-nav-drawer>\n * ```\n */\n @Input() public pinThreshold = 1024;\n\n /**\n * When pinned the drawer is relatively positioned instead of sitting above content.\n * May require additional layout styling.\n *\n * ```typescript\n * // get\n * let navDrawerIsPinned = this.navdrawer.pin;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer [pin]=\"false\"></igx-nav-drawer>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public get pin(): boolean {\n return this._pinned();\n }\n public set pin(v: boolean) {\n this._pinned.set(v);\n }\n\n\n /**\n * Width of the drawer in its open state.\n *\n * ```typescript\n * // get\n * let navDrawerWidth = this.navdrawer.width;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer [width]=\"'228px'\"></igx-nav-drawer>\n * ```\n */\n private _width!: string;\n\n @Input()\n public get width() {\n return this._width;\n }\n public set width(value: string) {\n this._width = value;\n }\n\n\n /**\n * Enables/disables the animation, when toggling the drawer. Set to `false` by default.\n * ````html\n * <igx-nav-drawer [disableAnimation]=\"true\"></igx-nav-drawer>\n * ````\n */\n @Input({ transform: booleanAttribute }) public disableAnimation = false;\n\n /**\n * Suppresses transitions until the first render has painted, so the drawer\n * settles into its resting (mini/expanded) size without an initial width\n * animation when the aside is first shown as a top-layer popover.\n */\n private _animationsReady = signal(false);\n\n /**\n * Whether transitions are currently suppressed — either explicitly via\n * `disableAnimation`, or implicitly until the first paint has settled.\n * @hidden\n */\n @HostBinding('class.igx-nav-drawer--disable-animation')\n public get animationsDisabled(): boolean {\n return this.disableAnimation || !this._animationsReady();\n }\n\n /**\n * Width of the drawer in its mini state.\n *\n * ```typescript\n * // get\n * let navDrawerMiniWidth = this.navdrawer.miniWidth;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer [miniWidth]=\"'34px'\"></igx-nav-drawer>\n * ```\n */\n @Input() public miniWidth!: string;\n\n /**\n * Pinned state change output for two-way binding.\n *\n * ```html\n * <igx-nav-drawer [(pin)]='isPinned'></igx-nav-drawer>\n * ```\n */\n @Output() public pinChange = new EventEmitter<boolean>(true);\n /**\n * Event fired as the Navigation Drawer is about to open.\n *\n * ```html\n * <igx-nav-drawer (opening)='onOpening()'></igx-nav-drawer>\n * ```\n */\n @Output() public opening = new EventEmitter();\n /**\n * Event fired when the Navigation Drawer has opened.\n *\n * ```html\n * <igx-nav-drawer (opened)='onOpened()'></igx-nav-drawer>\n * ```\n */\n @Output() public opened = new EventEmitter();\n /**\n * Event fired as the Navigation Drawer is about to close.\n *\n * ```html\n * <igx-nav-drawer (closing)='onClosing()'></igx-nav-drawer>\n * ```\n */\n @Output() public closing = new EventEmitter();\n /**\n * Event fired when the Navigation Drawer has closed.\n *\n * ```html\n * <igx-nav-drawer (closed)='onClosed()'></igx-nav-drawer>\n * ```\n */\n @Output() public closed = new EventEmitter();\n\n /**\n * @hidden\n */\n @ContentChild(IgxNavDrawerTemplateDirective, { read: IgxNavDrawerTemplateDirective })\n protected contentTemplate!: IgxNavDrawerTemplateDirective;\n\n @ViewChild('aside', { static: true }) private _drawer!: ElementRef<HTMLElement>;\n @ViewChild('overlay', { static: true }) private _overlay!: ElementRef<HTMLElement>;\n @ViewChild('dummy', { static: true }) private _styleDummy!: ElementRef<HTMLElement>;\n\n /**\n * State of the drawer.\n *\n * ```typescript\n * // get\n * let navDrawerIsOpen = this.navdrawer.isOpen;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer [isOpen]='false'></igx-nav-drawer>\n * ```\n *\n * Two-way data binding.\n * ```html\n * <!--set-->\n * <igx-nav-drawer [(isOpen)]='model.isOpen'></igx-nav-drawer>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public get isOpen() {\n return this._isOpen();\n }\n public set isOpen(value) {\n this._isOpen.set(value);\n this.isOpenChange.emit(value);\n }\n\n /**\n * Returns nativeElement of the component.\n *\n * @hidden\n */\n public get element() {\n return this.elementRef.nativeElement;\n }\n\n /**\n * @hidden\n */\n public get template() {\n if (this.miniTemplate && !this.isOpen) {\n return this.miniTemplate.template;\n } else if (this.contentTemplate) {\n return this.contentTemplate.template;\n }\n }\n /**\n * @hidden\n */\n public get miniTemplate(): IgxNavDrawerMiniTemplateDirective {\n return this._miniTemplate()!;\n }\n\n /**\n * @hidden\n */\n @ContentChild(IgxNavDrawerMiniTemplateDirective, { read: IgxNavDrawerMiniTemplateDirective })\n public set miniTemplate(v: IgxNavDrawerMiniTemplateDirective) {\n this._miniTemplate.set(v);\n }\n\n /** @hidden @internal */\n @HostBinding('class.igx-nav-drawer--mini')\n public get isMini(): boolean {\n return !!this.miniTemplate && !this.isOpen;\n }\n\n /** @hidden @internal */\n @HostBinding('class.igx-nav-drawer--pinned')\n public get pinned(): boolean {\n return !!this.pin;\n }\n\n /**\n * @hidden\n */\n @HostBinding('style.--ig-nav-drawer-size')\n public get normalSize() {\n if (!this.isOpen) {\n return '0px';\n }\n\n return this.width;\n }\n\n /**\n * @hidden\n */\n @HostBinding('style.--ig-nav-drawer-size--mini')\n public get miniSize() {\n if (this.miniTemplate && this.miniWidth) {\n return this.miniWidth;\n }\n }\n\n /** @hidden */\n @HostBinding('style.order')\n public get isPinnedRight() {\n return this.pin && this.position === 'right' ? '1' : '0';\n }\n\n private _gesturesAttached = false;\n private _gestures: IgxTouchManager | null = null;\n private _widthCache: { width: number; miniWidth: number; windowWidth: number } = { width: null!, miniWidth: null!, windowWidth: null! };\n private _resizeObserver!: Subscription;\n private css: { [name: string]: string } = {\n drawer: 'igx-nav-drawer__aside',\n mini: 'igx-nav-drawer__aside--mini',\n overlay: 'igx-nav-drawer__overlay',\n styleDummy: 'igx-nav-drawer__style-dummy'\n };\n\n /**\n * @hidden\n */\n public get drawer() {\n return this._drawer?.nativeElement;\n }\n\n /**\n * @hidden\n */\n public get overlay() {\n return this._overlay?.nativeElement;\n }\n\n /**\n * @hidden\n */\n public get styleDummy() {\n return this._styleDummy.nativeElement;\n }\n\n /** Pan animation properties */\n private _panning = false;\n private _panStartWidth: number = 0;\n private _panLimit!: number;\n\n /**\n * Property to decide whether to change width or translate the drawer from pan gesture.\n *\n * @hidden\n */\n public get hasAnimateWidth(): boolean {\n return this.pin || !!this.miniTemplate;\n }\n\n private _maxEdgeZone = 50;\n /**\n * Used for touch gestures (swipe and pan).\n * Defaults to 50 (in px) and is extended to at least 110% of the mini template width if available.\n *\n * @hidden\n */\n public get maxEdgeZone() {\n return this._maxEdgeZone;\n }\n\n /**\n * Gets the Drawer width for specific state.\n * Will attempt to evaluate requested state and cache.\n *\n *\n * @hidden\n */\n public get expectedWidth() {\n return this.getExpectedWidth(false);\n }\n\n /**\n * Get the Drawer mini width for specific state.\n * Will attempt to evaluate requested state and cache.\n *\n * @hidden\n */\n public get expectedMiniWidth() {\n return this.getExpectedWidth(true);\n }\n\n /**\n * Exposes optional navigation service\n *\n * @hidden\n */\n public get state() {\n return this._state;\n }\n\n constructor() {\n afterRenderEffect(() => {\n if (this._closingAnimation()) return;\n this.togglePopover(this._visibleOverlay());\n });\n\n // Enable transitions only after the first paint. The initial popover show\n // resolves the aside's width (e.g. to its mini size) as it enters the top\n // layer; deferring past the first frame lets that settle instantly instead\n // of animating from the fallback/expanded width.\n afterNextRender(() => {\n requestAnimationFrame(() => this._animationsReady.set(true));\n });\n }\n\n /**\n * @hidden\n */\n public ngOnInit() {\n // DOM and @Input()-s initialized\n if (this._state) {\n this._state.add(this.id, this);\n }\n }\n\n /**\n * @hidden\n */\n public ngAfterContentInit() {\n // wait for template and ng-content to be ready\n this.updateEdgeZone();\n this.checkPinThreshold();\n\n this.ensureEvents();\n\n // TODO: apply platform-safe Ruler from http://plnkr.co/edit/81nWDyreYMzkunihfRgX?p=preview\n // (https://github.com/angular/angular/issues/6515), blocked by https://github.com/angular/angular/issues/6904\n }\n\n /**\n * @hidden\n */\n public ngOnDestroy() {\n this.detachGestures();\n if (this._state) {\n this._state.remove(this.id);\n }\n if (this._resizeObserver) {\n this._resizeObserver.unsubscribe();\n }\n }\n\n /**\n * @hidden\n */\n public ngOnChanges(changes: { [propName: string]: SimpleChange }) {\n // simple settings can come from attribute set (rather than binding), make sure boolean props are converted\n if (changes.enableGestures && changes.enableGestures.currentValue !== undefined) {\n this.enableGestures = !!(this.enableGestures && this.enableGestures.toString() === 'true');\n this.ensureEvents();\n }\n if (changes.pin && changes.pin.currentValue !== undefined) {\n this.pin = !!(this.pin && this.pin.toString() === 'true');\n this.ensureEvents();\n }\n\n if (changes.pinThreshold) {\n if (this.pinThreshold) {\n this.ensureEvents();\n this.checkPinThreshold();\n }\n }\n\n if (changes.miniWidth) {\n this.updateEdgeZone();\n }\n }\n\n /**\n * Toggle the open state of the Navigation Drawer.\n *\n * ```typescript\n * this.navdrawer.toggle();\n * ```\n */\n public toggle() {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /**\n * Open the Navigation Drawer. Has no effect if already opened.\n *\n * ```typescript\n * this.navdrawer.open();\n * ```\n */\n public open() {\n if (this._panning) {\n this.resetPan();\n }\n\n if (this.isOpen) {\n return;\n }\n\n this.opening.emit();\n this.isOpen = true;\n\n // TODO: Switch to animate API when available\n // var animationCss = this.animate.css();\n // animationCss\n // .setStyles({'width':'50px'}, {'width':'400px'})\n // .start(this.elementRef.nativeElement)\n // .onComplete(() => animationCss.setToStyles({'width':'auto'}).start(this.elementRef.nativeElement));\n\n this.elementRef.nativeElement.addEventListener('transitionend', this.toggleOpenedEvent, false);\n\n requestAnimationFrame(()=>{});\n }\n\n /**\n * Close the Navigation Drawer. Has no effect if already closed.\n *\n * ```typescript\n * this.navdrawer.close();\n * ```\n */\n public close() {\n if (this._panning) {\n this.resetPan();\n }\n\n if (!this.isOpen) {\n return;\n }\n\n this.closing.emit();\n\n // TODO: intersection observer for close popover instead of transitionend\n this._closingAnimation.set(true);\n this.isOpen = false;\n this.elementRef.nativeElement.addEventListener('transitionend', this.toggleClosedEvent, false);\n }\n\n /**\n * @hidden\n */\n protected set_maxEdgeZone(value: number) {\n this._maxEdgeZone = value;\n }\n\n /**\n * Get the Drawer width for specific state. Will attempt to evaluate requested state and cache.\n *\n * @hidden\n * @param [mini] - Request mini width instead\n */\n protected getExpectedWidth(mini?: boolean): number {\n if (mini) {\n if (!this.miniTemplate) {\n return 0;\n }\n if (this.miniWidth) {\n return parseFloat(this.miniWidth);\n } else {\n // if (!this.isOpen) { // This WON'T work due to transition timings...\n // return this.elementRef.nativeElement.children[1].offsetWidth;\n // } else {\n if (this._widthCache.miniWidth === null) {\n // force class for width calc. TODO?\n // force class for width calc. TODO?\n this.renderer.addClass(this.styleDummy, this.css.drawer);\n this.renderer.addClass(this.styleDummy, this.css.mini);\n this._widthCache.miniWidth = this.styleDummy.offsetWidth;\n this.renderer.removeClass(this.styleDummy, this.css.drawer);\n this.renderer.removeClass(this.styleDummy, this.css.mini);\n }\n return this._widthCache.miniWidth;\n }\n } else {\n if (this.width) {\n return parseFloat(this.width);\n } else {\n if (this._widthCache.width === null) {\n // force class for width calc. TODO?\n // force class for width calc. TODO?\n this.renderer.addClass(this.styleDummy, this.css.drawer);\n this._widthCache.width = this.styleDummy.offsetWidth;\n this.renderer.removeClass(this.styleDummy, this.css.drawer);\n }\n return this._widthCache.width;\n }\n }\n }\n\n private getWindowWidth() {\n return (window.innerWidth > 0) ? window.innerWidth : screen.width;\n }\n\n private ensureEvents() {\n // set listeners for swipe/pan only if needed, but just once\n if (this.enableGestures && !this.pin) {\n if (!this._gesturesAttached) {\n this._gestures = new IgxTouchManager(this._document, {\n pointerDown: (event) => this.panStart(event),\n panMove: (event) => this.pan(event),\n swipe: (event) => this.swipe(event),\n panEnd: (event) => this.panEnd(event),\n panCancel: () => this.panCancel()\n }, { pointerTypes: ['touch'], setPointerCapture: false });\n\n this._gesturesAttached = true;\n }\n } else {\n this.detachGestures();\n }\n if (!this._resizeObserver && this.platformUtil.isBrowser) {\n this._resizeObserver = fromEvent(window, 'resize').pipe(debounce(() => interval(150)))\n .subscribe((value) => {\n this.checkPinThreshold(value);\n });\n }\n }\n\n private detachGestures() {\n this._gestures?.destroy();\n this._gestures = null;\n this._gesturesAttached = false;\n }\n\n private updateEdgeZone() {\n let maxValue;\n\n if (this.miniTemplate) {\n maxValue = Math.max(this._maxEdgeZone, this.getExpectedWidth(true) * 1.1);\n this.set_maxEdgeZone(maxValue);\n }\n }\n\n private checkPinThreshold = (evt?: Event) => {\n if (!this.platformUtil.isBrowser) {\n return;\n }\n let windowWidth;\n if (this.pinThreshold) {\n windowWidth = this.getWindowWidth();\n if (evt && this._widthCache.windowWidth === windowWidth) {\n return;\n }\n this._widthCache.windowWidth = windowWidth;\n if (!this.pin && windowWidth >= this.pinThreshold) {\n this.pin = true;\n this.pinChange.emit(true);\n } else if (this.pin && windowWidth < this.pinThreshold) {\n this.pin = false;\n this.pinChange.emit(false);\n }\n }\n };\n\n private swipe = (evt: IgxGestureEvent) => {\n // TODO: Could also force input type: http://stackoverflow.com/a/27108052\n if (!this.enableGestures || evt.pointerType !== 'touch') {\n return;\n }\n\n // HammerJS swipe is horizontal-only by default, don't check deltaY\n let deltaX;\n let startPosition;\n if (this.position === 'right') {\n // when on the right use inverse of deltaX\n deltaX = -evt.deltaX;\n startPosition = this.getWindowWidth() - (evt.center.x + evt.distance);\n } else {\n deltaX = evt.deltaX;\n startPosition = evt.center.x - evt.distance;\n }\n // only accept closing swipe (ignoring minEdgeZone) when the drawer is expanded:\n if ((this.isOpen && deltaX < 0) ||\n // positive deltaX from the edge:\n (deltaX > 0 && startPosition < this.maxEdgeZone)) {\n this.toggle();\n }\n };\n\n private panStart = (evt: IgxGestureEvent): boolean => {\n if (!this.enableGestures || this.pin || evt.pointerType !== 'touch') {\n return false;\n }\n const startPosition = this.position === 'right' ? this.getWindowWidth() - (evt.center.x + evt.distance)\n : evt.center.x - evt.distance;\n\n // cache width during animation, flag to allow further handling\n if (this.isOpen || (startPosition < this.maxEdgeZone)) {\n this._panning = true;\n this._panStartWidth = this.getExpectedWidth(!this.isOpen);\n this._panLimit = this.getExpectedWidth(this.isOpen);\n\n this.renderer.addClass(this.overlay, 'igx-nav-drawer__overlay--panning');\n this.renderer.addClass(this.drawer, 'igx-nav-drawer__aside--panning');\n\n if (!this.hasAnimateWidth) {\n // Translate-mode pan slides the panel via `transform`, but its width is\n // driven by `--ig-nav-drawer-size`, which is forced to 0 while the drawer\n // is closed. Pin the real width for the duration of the gesture so the\n // slide reveals the full panel instead of just its padding/border.\n this.renderer.setStyle(this.drawer, 'width', `${this.getExpectedWidth(false)}px`);\n }\n return true;\n }\n\n // The touch did not start in the edge zone (and the drawer is closed), so this\n // gesture should be ignored. Returning `false` lets the touch manager stop\n // tracking immediately and not interfere with normal page scrolling.\n return false;\n };\n\n private pan = (evt: IgxGestureEvent) => {\n // TODO: input.deltaX = prevDelta.x + (center.x - offset.x);\n // get actual delta (not total session one) from event?\n // pan WILL also fire after a full swipe, only resize on flag\n if (!this._panning) {\n return;\n }\n const right: boolean = this.position === 'right';\n // when on the right use inverse of deltaX\n const deltaX = right ? -evt.deltaX : evt.deltaX;\n let newX;\n let percent;\n const visibleWidth = this._panStartWidth + deltaX;\n\n if (this.isOpen && deltaX < 0) {\n // when visibleWidth hits limit - stop animating\n if (visibleWidth <= this._panLimit) {\n return;\n }\n\n if (this.hasAnimateWidth) {\n percent = (visibleWidth - this._panLimit) / (this._panStartWidth - this._panLimit);\n newX = visibleWidth;\n } else {\n percent = visibleWidth / this._panStartWidth;\n newX = evt.deltaX;\n }\n this.setXSize(newX, percent.toPrecision(2));\n\n } else if (!this.isOpen && deltaX > 0) {\n // when visibleWidth hits limit - stop animating\n if (visibleWidth >= this._panLimit) {\n return;\n }\n\n if (this.hasAnimateWidth) {\n percent = (visibleWidth - this._panStartWidth) / (this._panLimit - this._panStartWidth);\n newX = visibleWidth;\n } else {\n percent = visibleWidth / this._panLimit;\n newX = (this._panLimit - visibleWidth) * (right ? 1 : -1);\n }\n this.setXSize(newX, percent.toPrecision(2));\n }\n };\n\n private panEnd = (evt: IgxGestureEvent) => {\n if (this._panning) {\n const deltaX = this.position === 'right' ? -evt.deltaX : evt.deltaX;\n const visibleWidth: number = this._panStartWidth + deltaX;\n this.resetPan();\n\n // check if pan brought the drawer to 50%\n if (this.isOpen && visibleWidth <= this._panStartWidth / 2) {\n this.close();\n } else if (!this.isOpen && visibleWidth >= this._panLimit / 2) {\n this.open();\n }\n this._panStartWidth = 0;\n }\n };\n\n private panCancel = () => {\n if (this._panning) {\n this.resetPan();\n this._panStartWidth = 0;\n }\n };\n\n private resetPan() {\n this._panning = false;\n /* styles fail to apply when set on parent due to extra attributes, prob ng bug */\n /* styles fail to apply when set on parent due to extra attributes, prob ng bug */\n this.renderer.removeClass(this.overlay, 'igx-nav-drawer__overlay--panning');\n this.renderer.removeClass(this.drawer, 'igx-nav-drawer__aside--panning');\n this.renderer.removeStyle(this.drawer, 'width');\n this.setXSize(0, '');\n }\n\n /**\n * Sets the absolute position or width in case the drawer doesn't change position.\n *\n * @param x the number pixels to translate on the X axis or the width to set. 0 width will clear the style instead.\n * @param opacity optional value to apply to the overlay\n */\n private setXSize(x: number, opacity?: string) {\n // Angular polyfills patches window.requestAnimationFrame, but switch to DomAdapter API (TODO)\n window.requestAnimationFrame(() => {\n if (this.hasAnimateWidth) {\n this.renderer.setStyle(this.drawer, 'width', x ? Math.abs(x) + 'px' : '');\n } else {\n this.renderer.setStyle(this.drawer, 'transform', x ? 'translate3d(' + x + 'px,0,0)' : '');\n }\n if (opacity !== undefined) {\n this.renderer.setStyle(this.overlay, 'opacity', opacity);\n }\n });\n }\n\n private togglePopover(show: boolean) {\n // check element and functionality exist:\n if (typeof this.drawer?.showPopover !== 'function') return;\n\n const popoverOpen = this.drawer.matches(':popover-open');\n if (show === popoverOpen) return;\n\n if (show) {\n this.overlay.showPopover();\n this.drawer.showPopover();\n } else {\n this.overlay.hidePopover();\n this.drawer.hidePopover();\n }\n }\n\n private toggleOpenedEvent = () => {\n this.elementRef.nativeElement.removeEventListener('transitionend', this.toggleOpenedEvent, false);\n this.opened.emit();\n };\n\n private toggleClosedEvent = () => {\n this.elementRef.nativeElement.removeEventListener('transitionend', this.toggleClosedEvent, false);\n this._closingAnimation.set(false);\n this.closed.emit();\n };\n}\n","<ng-template #defaultItemsTemplate>\n <div igxDrawerItem [isHeader]=\"true\">Navigation Drawer</div>\n <div igxDrawerItem> Start by adding</div>\n <div igxDrawerItem> <code>&lt;ng-template igxDrawer&gt;</code> </div>\n <div igxDrawerItem> And some items inside </div>\n <div igxDrawerItem> Style with igxDrawerItem </div>\n <div igxDrawerItem> and igxRipple directives</div>\n <div igxDrawerItem [disabled]=\"true\">Disabled Item</div>\n</ng-template>\n\n<div [hidden]=\"pin\"\n [attr.popover]=\"pin ? null : 'manual'\"\n class=\"igx-nav-drawer__overlay\"\n [class.igx-nav-drawer__overlay--hidden]=\"!isOpen\"\n [class.igx-nav-drawer--disable-animation]=\"animationsDisabled\"\n (click)=\"close()\" #overlay>\n</div>\n<nav\n class=\"igx-nav-drawer__aside\"\n [attr.popover]=\"pin ? null : 'manual'\"\n [class.igx-nav-drawer__aside--collapsed]=\"!miniTemplate && !isOpen\"\n [class.igx-nav-drawer__aside--mini]=\"miniTemplate && !isOpen\"\n [class.igx-nav-drawer__aside--normal]=\"!miniTemplate || isOpen\"\n [class.igx-nav-drawer__aside--pinned]=\"pin\"\n [class.igx-nav-drawer__aside--right]=\"position === 'right'\" #aside\n [class.igx-nav-drawer--disable-animation]=\"animationsDisabled\">\n\n <ng-container *ngTemplateOutlet=\"template || defaultItemsTemplate\"></ng-container>\n</nav>\n<div class=\"igx-nav-drawer__style-dummy\" #dummy></div>\n","import { IgxNavigationDrawerComponent } from './navigation-drawer.component';\nimport { IgxNavDrawerItemDirective, IgxNavDrawerMiniTemplateDirective, IgxNavDrawerTemplateDirective } from './navigation-drawer.directives';\n\nexport * from './navigation-drawer.component';\nexport * from './navigation-drawer.directives';\n\n/* NOTE: Navigation drawer directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_NAVIGATION_DRAWER_DIRECTIVES = [\n IgxNavigationDrawerComponent,\n IgxNavDrawerItemDirective,\n IgxNavDrawerMiniTemplateDirective,\n IgxNavDrawerTemplateDirective\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IGX_NAVIGATION_DRAWER_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n */\n@NgModule({\n imports: [\n ...IGX_NAVIGATION_DRAWER_DIRECTIVES\n ],\n exports: [\n ...IGX_NAVIGATION_DRAWER_DIRECTIVES\n ]\n})\nexport class IgxNavigationDrawerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.IgxNavigationDrawerComponent","i2.IgxNavDrawerItemDirective","i2.IgxNavDrawerMiniTemplateDirective","i2.IgxNavDrawerTemplateDirective"],"mappings":"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"}
1
+ {"version":3,"file":"igniteui-angular-navigation-drawer.mjs","sources":["../../../projects/igniteui-angular/navigation-drawer/src/navigation-drawer/navigation-drawer.directives.ts","../../../projects/igniteui-angular/navigation-drawer/src/navigation-drawer/navigation-drawer.component.ts","../../../projects/igniteui-angular/navigation-drawer/src/navigation-drawer/navigation-drawer.component.html","../../../projects/igniteui-angular/navigation-drawer/src/navigation-drawer/public_api.ts","../../../projects/igniteui-angular/navigation-drawer/src/navigation-drawer/navigation-drawer.module.ts","../../../projects/igniteui-angular/navigation-drawer/src/igniteui-angular-navigation-drawer.ts"],"sourcesContent":["import { Directive, HostBinding, Input, TemplateRef, booleanAttribute, inject } from '@angular/core';\nimport { IgxNoTypographyDirective } from 'igniteui-angular/directives';\n\n@Directive({\n selector: '[igxDrawerItem]',\n exportAs: 'igxDrawerItem',\n standalone: true,\n hostDirectives: [IgxNoTypographyDirective]\n})\nexport class IgxNavDrawerItemDirective {\n\n /**\n * Styles a navigation drawer item as selected.\n * If not set, `active` will have default value `false`.\n *\n * @example\n * ```html\n * <span igxDrawerItem [active]=\"true\">Active Item</span>\n * ```\n */\n @Input({ transform: booleanAttribute }) public active = false;\n\n /**\n * Disables a navigation drawer item.\n * If not set, `disabled` will have default value `false`.\n *\n * @example\n * ```html\n * <span igxDrawerItem [disabled]=\"true\">Disabled Item</span>\n * ```\n */\n @Input({ transform: booleanAttribute }) public disabled = false;\n\n /**\n * Styles a navigation drawer item as a group header.\n * If not set, `isHeader` will have default value `false`.\n *\n * @example\n * ```html\n * <span igxDrawerItem [isHeader]=\"true\">Header</span>\n * ```\n */\n @Input({ transform: booleanAttribute }) public isHeader = false;\n\n /**\n * @hidden\n */\n public readonly activeClass = 'igx-nav-drawer-item--active';\n\n /**\n * @hidden\n */\n public readonly disabledClass = 'igx-nav-drawer-item--disabled';\n\n /**\n * @hidden\n */\n @HostBinding('class.igx-nav-drawer-item')\n @HostBinding('class.igx-nav-drawer__item')\n public get defaultCSS(): boolean {\n return !this.isHeader;\n }\n\n /**\n * @hidden\n */\n @HostBinding('class.igx-nav-drawer-item--active')\n @HostBinding('class.igx-nav-drawer__item--active')\n public get currentCSS(): boolean {\n return this.active && !this.isHeader && !this.disabled;\n }\n\n /**\n * @hidden\n */\n @HostBinding('class.igx-nav-drawer-item--header')\n @HostBinding('class.igx-nav-drawer__item--header')\n public get headerCSS(): boolean {\n return this.isHeader;\n }\n\n /**\n * @hidden\n */\n @HostBinding('class.igx-nav-drawer-item--disabled')\n @HostBinding('class.igx-nav-drawer__item--disabled')\n public get disabledCSS(): boolean {\n return this.disabled;\n }\n}\n\n@Directive({\n selector: '[igxDrawer]',\n standalone: true\n})\nexport class IgxNavDrawerTemplateDirective {\n public template = inject<TemplateRef<any>>(TemplateRef);\n}\n\n@Directive({\n selector: '[igxDrawerMini]',\n standalone: true\n})\nexport class IgxNavDrawerMiniTemplateDirective {\n public template = inject<TemplateRef<any>>(TemplateRef);\n}\n","import {\n AfterContentInit,\n afterRenderEffect,\n afterNextRender,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChange,\n ViewChild,\n Renderer2,\n booleanAttribute,\n inject,\n signal,\n computed,\n ChangeDetectionStrategy,\n ViewEncapsulation\n} from '@angular/core';\nimport { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport { fromEvent, interval, Subscription } from 'rxjs';\nimport { debounce } from 'rxjs/operators';\nimport { IgxNavigationService, IToggleView } from 'igniteui-angular/core';\nimport { IgxNavDrawerMiniTemplateDirective, IgxNavDrawerTemplateDirective, IgxNavDrawerItemDirective } from './navigation-drawer.directives';\nimport { IgxGestureEvent, IgxTouchManager, PlatformUtil } from 'igniteui-angular/core';\n\nconst PAN_THRESHOLD = 5;\nlet NEXT_ID = 0;\n/**\n * **Ignite UI for Angular Navigation Drawer** -\n * [Documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/navdrawer)\n *\n * The Ignite UI Navigation Drawer is a collapsible side navigation container commonly used in combination with the Navbar.\n *\n * Example:\n * ```html\n * <igx-nav-drawer id=\"navigation\" [isOpen]=\"true\">\n * <ng-template igxDrawer>\n * <nav>\n * <span igxDrawerItem [isHeader]=\"true\">Email</span>\n * <span igxDrawerItem igxRipple>Inbox</span>\n * <span igxDrawerItem igxRipple>Deleted</span>\n * <span igxDrawerItem igxRipple>Sent</span>\n * </nav>\n * </ng-template>\n * </igx-nav-drawer>\n * ```\n */\n@Component({\n selector: 'igx-nav-drawer',\n templateUrl: 'navigation-drawer.component.html',\n styleUrl: 'navigation-drawer.component.css',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [IgxNavDrawerItemDirective, NgTemplateOutlet]\n})\nexport class IgxNavigationDrawerComponent implements\n IToggleView,\n OnInit,\n AfterContentInit,\n OnDestroy,\n OnChanges {\n private elementRef = inject<ElementRef>(ElementRef);\n private _state = inject(IgxNavigationService, { optional: true });\n private renderer = inject(Renderer2);\n private _document = inject(DOCUMENT);\n private platformUtil = inject(PlatformUtil);\n\n private _isOpen = signal(false);\n private _pinned = signal(false);\n private _miniTemplate = signal<IgxNavDrawerMiniTemplateDirective | undefined>(undefined);\n private _visibleOverlay = computed<boolean>(() => {\n return !this._pinned() && (this._isOpen() || !!this._miniTemplate());\n });\n private _closingAnimation = signal(false);\n\n\n /** @hidden @internal */\n @HostBinding('class.igx-nav-drawer')\n public cssClass = true;\n\n /**\n * ID of the component\n *\n * ```typescript\n * // get\n * let myNavDrawerId = this.navdrawer.id;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer id='navdrawer'></igx-nav-drawer>\n * ```\n */\n @HostBinding('attr.id')\n @Input() public id = `igx-nav-drawer-${NEXT_ID++}`;\n\n /**\n * Position of the Navigation Drawer. Can be \"left\"(default) or \"right\".\n *\n * ```typescript\n * // get\n * let myNavDrawerPosition = this.navdrawer.position;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer [position]=\"'left'\"></igx-nav-drawer>\n * ```\n */\n @Input() public position = 'left';\n\n /**\n * Enables the use of touch gestures to manipulate the drawer:\n * - swipe/pan from edge to open, swipe-toggle and pan-drag.\n *\n * ```typescript\n * // get\n * let gesturesEnabled = this.navdrawer.enableGestures;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer [enableGestures]='true'></igx-nav-drawer>\n * ```\n */\n @Input({ transform: booleanAttribute }) public enableGestures = true;\n\n /**\n * @hidden\n */\n @Output() public isOpenChange = new EventEmitter<boolean>();\n\n /**\n * Minimum device width required for automatic pin to be toggled.\n * Default is 1024, can be set to a falsy value to disable this behavior.\n *\n * ```typescript\n * // get\n * let navDrawerPinThreshold = this.navdrawer.pinThreshold;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer [pinThreshold]='1024'></igx-nav-drawer>\n * ```\n */\n @Input() public pinThreshold = 1024;\n\n /**\n * When pinned the drawer is relatively positioned instead of sitting above content.\n * May require additional layout styling.\n *\n * ```typescript\n * // get\n * let navDrawerIsPinned = this.navdrawer.pin;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer [pin]=\"false\"></igx-nav-drawer>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public get pin(): boolean {\n return this._pinned();\n }\n public set pin(v: boolean) {\n this._pinned.set(v);\n }\n\n\n /**\n * Width of the drawer in its open state.\n *\n * ```typescript\n * // get\n * let navDrawerWidth = this.navdrawer.width;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer [width]=\"'228px'\"></igx-nav-drawer>\n * ```\n */\n private _width!: string;\n\n @Input()\n public get width() {\n return this._width;\n }\n public set width(value: string) {\n this._width = value;\n }\n\n\n /**\n * Enables/disables the animation, when toggling the drawer. Set to `false` by default.\n * ````html\n * <igx-nav-drawer [disableAnimation]=\"true\"></igx-nav-drawer>\n * ````\n */\n @Input({ transform: booleanAttribute }) public disableAnimation = false;\n\n /**\n * Suppresses transitions until the first render has painted, so the drawer\n * settles into its resting (mini/expanded) size without an initial width\n * animation when the aside is first shown as a top-layer popover.\n */\n private _animationsReady = signal(false);\n\n /**\n * Whether transitions are currently suppressed — either explicitly via\n * `disableAnimation`, or implicitly until the first paint has settled.\n * @hidden\n */\n @HostBinding('class.igx-nav-drawer--disable-animation')\n public get animationsDisabled(): boolean {\n return this.disableAnimation || !this._animationsReady();\n }\n\n /**\n * Width of the drawer in its mini state.\n *\n * ```typescript\n * // get\n * let navDrawerMiniWidth = this.navdrawer.miniWidth;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer [miniWidth]=\"'34px'\"></igx-nav-drawer>\n * ```\n */\n @Input() public miniWidth!: string;\n\n /**\n * Pinned state change output for two-way binding.\n *\n * ```html\n * <igx-nav-drawer [(pin)]='isPinned'></igx-nav-drawer>\n * ```\n */\n @Output() public pinChange = new EventEmitter<boolean>(true);\n /**\n * Event fired as the Navigation Drawer is about to open.\n *\n * ```html\n * <igx-nav-drawer (opening)='onOpening()'></igx-nav-drawer>\n * ```\n */\n @Output() public opening = new EventEmitter();\n /**\n * Event fired when the Navigation Drawer has opened.\n *\n * ```html\n * <igx-nav-drawer (opened)='onOpened()'></igx-nav-drawer>\n * ```\n */\n @Output() public opened = new EventEmitter();\n /**\n * Event fired as the Navigation Drawer is about to close.\n *\n * ```html\n * <igx-nav-drawer (closing)='onClosing()'></igx-nav-drawer>\n * ```\n */\n @Output() public closing = new EventEmitter();\n /**\n * Event fired when the Navigation Drawer has closed.\n *\n * ```html\n * <igx-nav-drawer (closed)='onClosed()'></igx-nav-drawer>\n * ```\n */\n @Output() public closed = new EventEmitter();\n\n /**\n * @hidden\n */\n @ContentChild(IgxNavDrawerTemplateDirective, { read: IgxNavDrawerTemplateDirective })\n protected contentTemplate!: IgxNavDrawerTemplateDirective;\n\n @ViewChild('aside', { static: true }) private _drawer!: ElementRef<HTMLElement>;\n @ViewChild('overlay', { static: true }) private _overlay!: ElementRef<HTMLElement>;\n @ViewChild('dummy', { static: true }) private _styleDummy!: ElementRef<HTMLElement>;\n\n /**\n * State of the drawer.\n *\n * ```typescript\n * // get\n * let navDrawerIsOpen = this.navdrawer.isOpen;\n * ```\n *\n * ```html\n * <!--set-->\n * <igx-nav-drawer [isOpen]='false'></igx-nav-drawer>\n * ```\n *\n * Two-way data binding.\n * ```html\n * <!--set-->\n * <igx-nav-drawer [(isOpen)]='model.isOpen'></igx-nav-drawer>\n * ```\n */\n @Input({ transform: booleanAttribute })\n public get isOpen() {\n return this._isOpen();\n }\n public set isOpen(value) {\n this._isOpen.set(value);\n this.isOpenChange.emit(value);\n }\n\n /**\n * Returns nativeElement of the component.\n *\n * @hidden\n */\n public get element() {\n return this.elementRef.nativeElement;\n }\n\n /**\n * @hidden\n */\n public get template() {\n if (this.miniTemplate && !this.isOpen) {\n return this.miniTemplate.template;\n } else if (this.contentTemplate) {\n return this.contentTemplate.template;\n }\n }\n /**\n * @hidden\n */\n public get miniTemplate(): IgxNavDrawerMiniTemplateDirective {\n return this._miniTemplate()!;\n }\n\n /**\n * @hidden\n */\n @ContentChild(IgxNavDrawerMiniTemplateDirective, { read: IgxNavDrawerMiniTemplateDirective })\n public set miniTemplate(v: IgxNavDrawerMiniTemplateDirective) {\n this._miniTemplate.set(v);\n }\n\n /** @hidden @internal */\n @HostBinding('class.igx-nav-drawer--mini')\n public get isMini(): boolean {\n return !!this.miniTemplate && !this.isOpen;\n }\n\n /** @hidden @internal */\n @HostBinding('class.igx-nav-drawer--pinned')\n public get pinned(): boolean {\n return !!this.pin;\n }\n\n /**\n * @hidden\n */\n @HostBinding('style.--ig-nav-drawer-size')\n public get normalSize() {\n if (!this.isOpen) {\n return '0px';\n }\n\n return this.width;\n }\n\n /**\n * @hidden\n */\n @HostBinding('style.--ig-nav-drawer-size--mini')\n public get miniSize() {\n if (this.miniTemplate && this.miniWidth) {\n return this.miniWidth;\n }\n }\n\n /** @hidden */\n @HostBinding('style.order')\n public get isPinnedRight() {\n return this.pin && this.position === 'right' ? '1' : '0';\n }\n\n private _gesturesAttached = false;\n private _gestures: IgxTouchManager | null = null;\n private _widthCache: { width: number; miniWidth: number; windowWidth: number } = { width: null!, miniWidth: null!, windowWidth: null! };\n private _resizeObserver!: Subscription;\n private css: { [name: string]: string } = {\n drawer: 'igx-nav-drawer__aside',\n mini: 'igx-nav-drawer__aside--mini',\n overlay: 'igx-nav-drawer__overlay',\n styleDummy: 'igx-nav-drawer__style-dummy'\n };\n\n /**\n * @hidden\n */\n public get drawer() {\n return this._drawer?.nativeElement;\n }\n\n /**\n * @hidden\n */\n public get overlay() {\n return this._overlay?.nativeElement;\n }\n\n /**\n * @hidden\n */\n public get styleDummy() {\n return this._styleDummy.nativeElement;\n }\n\n /** Pan animation properties */\n private _panning = false;\n private _panStartWidth: number = 0;\n private _panLimit!: number;\n\n /**\n * Property to decide whether to change width or translate the drawer from pan gesture.\n *\n * @hidden\n */\n public get hasAnimateWidth(): boolean {\n return this.pin || !!this.miniTemplate;\n }\n\n private _maxEdgeZone = 50;\n /**\n * Used for touch gestures (swipe and pan).\n * Defaults to 50 (in px) and is extended to at least 110% of the mini template width if available.\n *\n * @hidden\n */\n public get maxEdgeZone() {\n return this._maxEdgeZone;\n }\n\n /**\n * Gets the Drawer width for specific state.\n * Will attempt to evaluate requested state and cache.\n *\n *\n * @hidden\n */\n public get expectedWidth() {\n return this.getExpectedWidth(false);\n }\n\n /**\n * Get the Drawer mini width for specific state.\n * Will attempt to evaluate requested state and cache.\n *\n * @hidden\n */\n public get expectedMiniWidth() {\n return this.getExpectedWidth(true);\n }\n\n /**\n * Exposes optional navigation service\n *\n * @hidden\n */\n public get state() {\n return this._state;\n }\n\n constructor() {\n afterRenderEffect(() => {\n if (this._closingAnimation()) return;\n this.togglePopover(this._visibleOverlay());\n });\n\n // Enable transitions only after the first paint. The initial popover show\n // resolves the aside's width (e.g. to its mini size) as it enters the top\n // layer; deferring past the first frame lets that settle instantly instead\n // of animating from the fallback/expanded width.\n afterNextRender(() => {\n requestAnimationFrame(() => this._animationsReady.set(true));\n });\n }\n\n /**\n * @hidden\n */\n public ngOnInit() {\n // DOM and @Input()-s initialized\n if (this._state) {\n this._state.add(this.id, this);\n }\n }\n\n /**\n * @hidden\n */\n public ngAfterContentInit() {\n // wait for template and ng-content to be ready\n this.updateEdgeZone();\n this.checkPinThreshold();\n\n this.ensureEvents();\n\n // TODO: apply platform-safe Ruler from http://plnkr.co/edit/81nWDyreYMzkunihfRgX?p=preview\n // (https://github.com/angular/angular/issues/6515), blocked by https://github.com/angular/angular/issues/6904\n }\n\n /**\n * @hidden\n */\n public ngOnDestroy() {\n this.detachGestures();\n if (this._state) {\n this._state.remove(this.id);\n }\n if (this._resizeObserver) {\n this._resizeObserver.unsubscribe();\n }\n }\n\n /**\n * @hidden\n */\n public ngOnChanges(changes: { [propName: string]: SimpleChange }) {\n // simple settings can come from attribute set (rather than binding), make sure boolean props are converted\n if (changes.enableGestures && changes.enableGestures.currentValue !== undefined) {\n this.enableGestures = !!(this.enableGestures && this.enableGestures.toString() === 'true');\n this.ensureEvents();\n }\n if (changes.pin && changes.pin.currentValue !== undefined) {\n this.pin = !!(this.pin && this.pin.toString() === 'true');\n this.ensureEvents();\n }\n\n if (changes.pinThreshold) {\n if (this.pinThreshold) {\n this.ensureEvents();\n this.checkPinThreshold();\n }\n }\n\n if (changes.miniWidth) {\n this.updateEdgeZone();\n }\n }\n\n /**\n * Toggle the open state of the Navigation Drawer.\n *\n * ```typescript\n * this.navdrawer.toggle();\n * ```\n */\n public toggle() {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /**\n * Open the Navigation Drawer. Has no effect if already opened.\n *\n * ```typescript\n * this.navdrawer.open();\n * ```\n */\n public open() {\n if (this._panning) {\n this.resetPan();\n }\n\n if (this.isOpen) {\n return;\n }\n\n this.opening.emit();\n this.isOpen = true;\n\n // TODO: Switch to animate API when available\n // var animationCss = this.animate.css();\n // animationCss\n // .setStyles({'width':'50px'}, {'width':'400px'})\n // .start(this.elementRef.nativeElement)\n // .onComplete(() => animationCss.setToStyles({'width':'auto'}).start(this.elementRef.nativeElement));\n\n this.elementRef.nativeElement.addEventListener('transitionend', this.toggleOpenedEvent, false);\n\n requestAnimationFrame(()=>{});\n }\n\n /**\n * Close the Navigation Drawer. Has no effect if already closed.\n *\n * ```typescript\n * this.navdrawer.close();\n * ```\n */\n public close() {\n if (this._panning) {\n this.resetPan();\n }\n\n if (!this.isOpen) {\n return;\n }\n\n this.closing.emit();\n\n // TODO: intersection observer for close popover instead of transitionend\n this._closingAnimation.set(true);\n this.isOpen = false;\n this.elementRef.nativeElement.addEventListener('transitionend', this.toggleClosedEvent, false);\n }\n\n /**\n * @hidden\n */\n protected set_maxEdgeZone(value: number) {\n this._maxEdgeZone = value;\n }\n\n /**\n * Get the Drawer width for specific state. Will attempt to evaluate requested state and cache.\n *\n * @hidden\n * @param [mini] - Request mini width instead\n */\n protected getExpectedWidth(mini?: boolean): number {\n if (mini) {\n if (!this.miniTemplate) {\n return 0;\n }\n if (this.miniWidth) {\n return parseFloat(this.miniWidth);\n } else {\n // if (!this.isOpen) { // This WON'T work due to transition timings...\n // return this.elementRef.nativeElement.children[1].offsetWidth;\n // } else {\n if (this._widthCache.miniWidth === null) {\n // force class for width calc. TODO?\n // force class for width calc. TODO?\n this.renderer.addClass(this.styleDummy, this.css.drawer);\n this.renderer.addClass(this.styleDummy, this.css.mini);\n this._widthCache.miniWidth = this.styleDummy.offsetWidth;\n this.renderer.removeClass(this.styleDummy, this.css.drawer);\n this.renderer.removeClass(this.styleDummy, this.css.mini);\n }\n return this._widthCache.miniWidth;\n }\n } else {\n if (this.width) {\n return parseFloat(this.width);\n } else {\n if (this._widthCache.width === null) {\n // force class for width calc. TODO?\n // force class for width calc. TODO?\n this.renderer.addClass(this.styleDummy, this.css.drawer);\n this._widthCache.width = this.styleDummy.offsetWidth;\n this.renderer.removeClass(this.styleDummy, this.css.drawer);\n }\n return this._widthCache.width;\n }\n }\n }\n\n private getWindowWidth() {\n return (window.innerWidth > 0) ? window.innerWidth : screen.width;\n }\n\n private ensureEvents() {\n // set listeners for swipe/pan only if needed, but just once\n if (this.enableGestures && !this.pin) {\n if (!this._gesturesAttached) {\n this._gestures = new IgxTouchManager(this._document, {\n pointerDown: (event) => this.canStartPan(event),\n panStart: (event) => this.panStart(event),\n panMove: (event) => this.pan(event),\n swipe: (event) => this.swipe(event),\n panEnd: (event) => this.panEnd(event),\n panCancel: () => this.panCancel()\n }, {\n panAxis: 'horizontal',\n panThreshold: PAN_THRESHOLD,\n pointerTypes: ['touch'],\n setPointerCapture: false\n });\n\n this._gesturesAttached = true;\n }\n } else {\n this.detachGestures();\n }\n if (!this._resizeObserver && this.platformUtil.isBrowser) {\n this._resizeObserver = fromEvent(window, 'resize').pipe(debounce(() => interval(150)))\n .subscribe((value) => {\n this.checkPinThreshold(value);\n });\n }\n }\n\n private detachGestures() {\n this._gestures?.destroy();\n this._gestures = null;\n this._gesturesAttached = false;\n }\n\n private updateEdgeZone() {\n let maxValue;\n\n if (this.miniTemplate) {\n maxValue = Math.max(this._maxEdgeZone, this.getExpectedWidth(true) * 1.1);\n this.set_maxEdgeZone(maxValue);\n }\n }\n\n private checkPinThreshold = (evt?: Event) => {\n if (!this.platformUtil.isBrowser) {\n return;\n }\n let windowWidth;\n if (this.pinThreshold) {\n windowWidth = this.getWindowWidth();\n if (evt && this._widthCache.windowWidth === windowWidth) {\n return;\n }\n this._widthCache.windowWidth = windowWidth;\n if (!this.pin && windowWidth >= this.pinThreshold) {\n this.pin = true;\n this.pinChange.emit(true);\n } else if (this.pin && windowWidth < this.pinThreshold) {\n this.pin = false;\n this.pinChange.emit(false);\n }\n }\n };\n\n private swipe = (evt: IgxGestureEvent) => {\n // TODO: Could also force input type: http://stackoverflow.com/a/27108052\n if (!this.enableGestures || evt.pointerType !== 'touch') {\n return;\n }\n\n // HammerJS swipe is horizontal-only by default, don't check deltaY\n let deltaX;\n let startPosition;\n if (this.position === 'right') {\n // when on the right use inverse of deltaX\n deltaX = -evt.deltaX;\n startPosition = this.getWindowWidth() - (evt.center.x + evt.distance);\n } else {\n deltaX = evt.deltaX;\n startPosition = evt.center.x - evt.distance;\n }\n // only accept closing swipe (ignoring minEdgeZone) when the drawer is expanded:\n if ((this.isOpen && deltaX < 0) ||\n // positive deltaX from the edge:\n (deltaX > 0 && startPosition < this.maxEdgeZone)) {\n this.toggle();\n }\n };\n\n private canStartPan = (evt: IgxGestureEvent): boolean => {\n if (!this.enableGestures || this.pin || evt.pointerType !== 'touch') {\n return false;\n }\n const startPosition = this.position === 'right' ? this.getWindowWidth() - (evt.center.x + evt.distance)\n : evt.center.x - evt.distance;\n\n return this.isOpen || startPosition < this.maxEdgeZone;\n };\n\n private panStart = (_evt: IgxGestureEvent) => {\n if (!this.enableGestures || this.pin) {\n return;\n }\n\n this._panning = true;\n this._panStartWidth = this.getExpectedWidth(!this.isOpen);\n this._panLimit = this.getExpectedWidth(this.isOpen);\n\n this.renderer.addClass(this.overlay, 'igx-nav-drawer__overlay--panning');\n this.renderer.addClass(this.drawer, 'igx-nav-drawer__aside--panning');\n\n if (!this.hasAnimateWidth) {\n // Translate-mode pan slides the panel via `transform`, but its width is\n // driven by `--ig-nav-drawer-size`, which is forced to 0 while the drawer\n // is closed. Pin the real width for the duration of the gesture so the\n // slide reveals the full panel instead of just its padding/border.\n this.renderer.setStyle(this.drawer, 'width', `${this.getExpectedWidth(false)}px`);\n }\n };\n\n private pan = (evt: IgxGestureEvent) => {\n // TODO: input.deltaX = prevDelta.x + (center.x - offset.x);\n // get actual delta (not total session one) from event?\n // pan WILL also fire after a full swipe, only resize on flag\n if (!this._panning) {\n return;\n }\n const right: boolean = this.position === 'right';\n // when on the right use inverse of deltaX\n const deltaX = right ? -evt.deltaX : evt.deltaX;\n let newX;\n let percent;\n const visibleWidth = this._panStartWidth + deltaX;\n\n if (this.isOpen && deltaX < 0) {\n // when visibleWidth hits limit - stop animating\n if (visibleWidth <= this._panLimit) {\n return;\n }\n\n if (this.hasAnimateWidth) {\n percent = (visibleWidth - this._panLimit) / (this._panStartWidth - this._panLimit);\n newX = visibleWidth;\n } else {\n percent = visibleWidth / this._panStartWidth;\n newX = evt.deltaX;\n }\n this.setXSize(newX, percent.toPrecision(2));\n\n } else if (!this.isOpen && deltaX > 0) {\n // when visibleWidth hits limit - stop animating\n if (visibleWidth >= this._panLimit) {\n return;\n }\n\n if (this.hasAnimateWidth) {\n percent = (visibleWidth - this._panStartWidth) / (this._panLimit - this._panStartWidth);\n newX = visibleWidth;\n } else {\n percent = visibleWidth / this._panLimit;\n newX = (this._panLimit - visibleWidth) * (right ? 1 : -1);\n }\n this.setXSize(newX, percent.toPrecision(2));\n }\n };\n\n private panEnd = (evt: IgxGestureEvent) => {\n if (this._panning) {\n const deltaX = this.position === 'right' ? -evt.deltaX : evt.deltaX;\n const visibleWidth: number = this._panStartWidth + deltaX;\n this.resetPan();\n\n // check if pan brought the drawer to 50%\n if (this.isOpen && visibleWidth <= this._panStartWidth / 2) {\n this.close();\n } else if (!this.isOpen && visibleWidth >= this._panLimit / 2) {\n this.open();\n }\n this._panStartWidth = 0;\n }\n };\n\n private panCancel = () => {\n if (this._panning) {\n this.resetPan();\n this._panStartWidth = 0;\n }\n };\n\n private resetPan() {\n this._panning = false;\n /* styles fail to apply when set on parent due to extra attributes, prob ng bug */\n /* styles fail to apply when set on parent due to extra attributes, prob ng bug */\n this.renderer.removeClass(this.overlay, 'igx-nav-drawer__overlay--panning');\n this.renderer.removeClass(this.drawer, 'igx-nav-drawer__aside--panning');\n this.renderer.removeStyle(this.drawer, 'width');\n this.setXSize(0, '');\n }\n\n /**\n * Sets the absolute position or width in case the drawer doesn't change position.\n *\n * @param x the number pixels to translate on the X axis or the width to set. 0 width will clear the style instead.\n * @param opacity optional value to apply to the overlay\n */\n private setXSize(x: number, opacity?: string) {\n // Angular polyfills patches window.requestAnimationFrame, but switch to DomAdapter API (TODO)\n window.requestAnimationFrame(() => {\n if (this.hasAnimateWidth) {\n this.renderer.setStyle(this.drawer, 'width', x ? Math.abs(x) + 'px' : '');\n } else {\n this.renderer.setStyle(this.drawer, 'transform', x ? 'translate3d(' + x + 'px,0,0)' : '');\n }\n if (opacity !== undefined) {\n this.renderer.setStyle(this.overlay, 'opacity', opacity);\n }\n });\n }\n\n private togglePopover(show: boolean) {\n // check element and functionality exist:\n if (typeof this.drawer?.showPopover !== 'function') return;\n\n const popoverOpen = this.drawer.matches(':popover-open');\n if (show === popoverOpen) return;\n\n if (show) {\n this.overlay.showPopover();\n this.drawer.showPopover();\n } else {\n this.overlay.hidePopover();\n this.drawer.hidePopover();\n }\n }\n\n private toggleOpenedEvent = () => {\n this.elementRef.nativeElement.removeEventListener('transitionend', this.toggleOpenedEvent, false);\n this.opened.emit();\n };\n\n private toggleClosedEvent = () => {\n this.elementRef.nativeElement.removeEventListener('transitionend', this.toggleClosedEvent, false);\n this._closingAnimation.set(false);\n this.closed.emit();\n };\n}\n","<ng-template #defaultItemsTemplate>\n <div igxDrawerItem [isHeader]=\"true\">Navigation Drawer</div>\n <div igxDrawerItem> Start by adding</div>\n <div igxDrawerItem> <code>&lt;ng-template igxDrawer&gt;</code> </div>\n <div igxDrawerItem> And some items inside </div>\n <div igxDrawerItem> Style with igxDrawerItem </div>\n <div igxDrawerItem> and igxRipple directives</div>\n <div igxDrawerItem [disabled]=\"true\">Disabled Item</div>\n</ng-template>\n\n<div [hidden]=\"pin\"\n [attr.popover]=\"pin ? null : 'manual'\"\n class=\"igx-nav-drawer__overlay\"\n [class.igx-nav-drawer__overlay--hidden]=\"!isOpen\"\n [class.igx-nav-drawer--disable-animation]=\"animationsDisabled\"\n (click)=\"close()\" #overlay>\n</div>\n<nav\n class=\"igx-nav-drawer__aside\"\n [attr.popover]=\"pin ? null : 'manual'\"\n [class.igx-nav-drawer__aside--collapsed]=\"!miniTemplate && !isOpen\"\n [class.igx-nav-drawer__aside--mini]=\"miniTemplate && !isOpen\"\n [class.igx-nav-drawer__aside--normal]=\"!miniTemplate || isOpen\"\n [class.igx-nav-drawer__aside--pinned]=\"pin\"\n [class.igx-nav-drawer__aside--right]=\"position === 'right'\" #aside\n [class.igx-nav-drawer--disable-animation]=\"animationsDisabled\">\n\n <ng-container *ngTemplateOutlet=\"template || defaultItemsTemplate\"></ng-container>\n</nav>\n<div class=\"igx-nav-drawer__style-dummy\" #dummy></div>\n","import { IgxNavigationDrawerComponent } from './navigation-drawer.component';\nimport { IgxNavDrawerItemDirective, IgxNavDrawerMiniTemplateDirective, IgxNavDrawerTemplateDirective } from './navigation-drawer.directives';\n\nexport * from './navigation-drawer.component';\nexport * from './navigation-drawer.directives';\n\n/* NOTE: Navigation drawer directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_NAVIGATION_DRAWER_DIRECTIVES = [\n IgxNavigationDrawerComponent,\n IgxNavDrawerItemDirective,\n IgxNavDrawerMiniTemplateDirective,\n IgxNavDrawerTemplateDirective\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IGX_NAVIGATION_DRAWER_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n */\n@NgModule({\n imports: [\n ...IGX_NAVIGATION_DRAWER_DIRECTIVES\n ],\n exports: [\n ...IGX_NAVIGATION_DRAWER_DIRECTIVES\n ]\n})\nexport class IgxNavigationDrawerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.IgxNavigationDrawerComponent","i2.IgxNavDrawerItemDirective","i2.IgxNavDrawerMiniTemplateDirective","i2.IgxNavDrawerTemplateDirective"],"mappings":"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"}