@design-factory/angular 21.0.4 → 21.1.0-next.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 (194) hide show
  1. package/drawer/README.md +54 -0
  2. package/fesm2022/design-factory-angular-drawer.mjs +202 -67
  3. package/fesm2022/design-factory-angular-drawer.mjs.map +1 -1
  4. package/fesm2022/design-factory-angular-internals.mjs +439 -17
  5. package/fesm2022/design-factory-angular-internals.mjs.map +1 -1
  6. package/fesm2022/design-factory-angular-sidenav.mjs +223 -210
  7. package/fesm2022/design-factory-angular-sidenav.mjs.map +1 -1
  8. package/fesm2022/design-factory-angular-theme.mjs +198 -0
  9. package/fesm2022/design-factory-angular-theme.mjs.map +1 -0
  10. package/fesm2022/design-factory-angular-topnav.mjs +1538 -0
  11. package/fesm2022/design-factory-angular-topnav.mjs.map +1 -0
  12. package/node_modules/@agnos-ui/core/README.md +5 -0
  13. package/node_modules/@agnos-ui/core/accordion-BC_9xn23.cjs +314 -0
  14. package/node_modules/@agnos-ui/core/accordion-Ca_0T8Bc.js +315 -0
  15. package/node_modules/@agnos-ui/core/alert-AhaliJ17.cjs +9 -0
  16. package/node_modules/@agnos-ui/core/alert-Cb9FhbFQ.js +10 -0
  17. package/node_modules/@agnos-ui/core/collapse-COriZO7o.cjs +94 -0
  18. package/node_modules/@agnos-ui/core/collapse-CP79atna.js +95 -0
  19. package/node_modules/@agnos-ui/core/common-B5jS-Ih_.cjs +73 -0
  20. package/node_modules/@agnos-ui/core/common-DFyZvkII.js +74 -0
  21. package/node_modules/@agnos-ui/core/components/accordion/accordion.d.ts +333 -0
  22. package/node_modules/@agnos-ui/core/components/accordion/index.cjs +7 -0
  23. package/node_modules/@agnos-ui/core/components/accordion/index.d.ts +1 -0
  24. package/node_modules/@agnos-ui/core/components/accordion/index.js +7 -0
  25. package/node_modules/@agnos-ui/core/components/alert/alert.d.ts +37 -0
  26. package/node_modules/@agnos-ui/core/components/alert/common.d.ts +138 -0
  27. package/node_modules/@agnos-ui/core/components/alert/index.cjs +5 -0
  28. package/node_modules/@agnos-ui/core/components/alert/index.d.ts +1 -0
  29. package/node_modules/@agnos-ui/core/components/alert/index.js +5 -0
  30. package/node_modules/@agnos-ui/core/components/carousel/carousel.d.ts +247 -0
  31. package/node_modules/@agnos-ui/core/components/carousel/index.cjs +292 -0
  32. package/node_modules/@agnos-ui/core/components/carousel/index.d.ts +1 -0
  33. package/node_modules/@agnos-ui/core/components/carousel/index.js +292 -0
  34. package/node_modules/@agnos-ui/core/components/collapse/collapse.d.ts +135 -0
  35. package/node_modules/@agnos-ui/core/components/collapse/index.cjs +5 -0
  36. package/node_modules/@agnos-ui/core/components/collapse/index.d.ts +1 -0
  37. package/node_modules/@agnos-ui/core/components/collapse/index.js +5 -0
  38. package/node_modules/@agnos-ui/core/components/commonProps.d.ts +11 -0
  39. package/node_modules/@agnos-ui/core/components/drawer/drawer.d.ts +279 -0
  40. package/node_modules/@agnos-ui/core/components/drawer/index.cjs +5 -0
  41. package/node_modules/@agnos-ui/core/components/drawer/index.d.ts +1 -0
  42. package/node_modules/@agnos-ui/core/components/drawer/index.js +5 -0
  43. package/node_modules/@agnos-ui/core/components/modal/index.cjs +8 -0
  44. package/node_modules/@agnos-ui/core/components/modal/index.d.ts +1 -0
  45. package/node_modules/@agnos-ui/core/components/modal/index.js +8 -0
  46. package/node_modules/@agnos-ui/core/components/modal/modal.d.ts +245 -0
  47. package/node_modules/@agnos-ui/core/components/pagination/index.cjs +5 -0
  48. package/node_modules/@agnos-ui/core/components/pagination/index.d.ts +1 -0
  49. package/node_modules/@agnos-ui/core/components/pagination/index.js +5 -0
  50. package/node_modules/@agnos-ui/core/components/pagination/pagination.d.ts +313 -0
  51. package/node_modules/@agnos-ui/core/components/progressbar/index.cjs +5 -0
  52. package/node_modules/@agnos-ui/core/components/progressbar/index.d.ts +1 -0
  53. package/node_modules/@agnos-ui/core/components/progressbar/index.js +5 -0
  54. package/node_modules/@agnos-ui/core/components/progressbar/progressbar.d.ts +91 -0
  55. package/node_modules/@agnos-ui/core/components/rating/index.cjs +5 -0
  56. package/node_modules/@agnos-ui/core/components/rating/index.d.ts +1 -0
  57. package/node_modules/@agnos-ui/core/components/rating/index.js +5 -0
  58. package/node_modules/@agnos-ui/core/components/rating/rating.d.ts +191 -0
  59. package/node_modules/@agnos-ui/core/components/slider/index.cjs +5 -0
  60. package/node_modules/@agnos-ui/core/components/slider/index.d.ts +1 -0
  61. package/node_modules/@agnos-ui/core/components/slider/index.js +5 -0
  62. package/node_modules/@agnos-ui/core/components/slider/slider-utils.d.ts +25 -0
  63. package/node_modules/@agnos-ui/core/components/slider/slider.d.ts +383 -0
  64. package/node_modules/@agnos-ui/core/components/toast/index.cjs +7 -0
  65. package/node_modules/@agnos-ui/core/components/toast/index.d.ts +2 -0
  66. package/node_modules/@agnos-ui/core/components/toast/index.js +7 -0
  67. package/node_modules/@agnos-ui/core/components/toast/toast.d.ts +66 -0
  68. package/node_modules/@agnos-ui/core/components/toast/toaster.d.ts +128 -0
  69. package/node_modules/@agnos-ui/core/components/tree/index.cjs +5 -0
  70. package/node_modules/@agnos-ui/core/components/tree/index.d.ts +1 -0
  71. package/node_modules/@agnos-ui/core/components/tree/index.js +5 -0
  72. package/node_modules/@agnos-ui/core/components/tree/tree.d.ts +143 -0
  73. package/node_modules/@agnos-ui/core/config.cjs +36 -0
  74. package/node_modules/@agnos-ui/core/config.d.ts +117 -0
  75. package/node_modules/@agnos-ui/core/config.js +36 -0
  76. package/node_modules/@agnos-ui/core/directive-Bsreu2z1.js +523 -0
  77. package/node_modules/@agnos-ui/core/directive-DCaXmRe_.cjs +522 -0
  78. package/node_modules/@agnos-ui/core/drawer-BbFAHV07.cjs +328 -0
  79. package/node_modules/@agnos-ui/core/drawer-C6Qa0xEu.js +329 -0
  80. package/node_modules/@agnos-ui/core/index.cjs +134 -0
  81. package/node_modules/@agnos-ui/core/index.d.ts +29 -0
  82. package/node_modules/@agnos-ui/core/index.js +134 -0
  83. package/node_modules/@agnos-ui/core/isFocusable-Ckwus82R.js +32 -0
  84. package/node_modules/@agnos-ui/core/isFocusable-DfzDLeAN.cjs +31 -0
  85. package/node_modules/@agnos-ui/core/modal-BsNuHhT7.cjs +252 -0
  86. package/node_modules/@agnos-ui/core/modal-CgzY8ezz.js +253 -0
  87. package/node_modules/@agnos-ui/core/package.json +57 -0
  88. package/node_modules/@agnos-ui/core/pagination-ZxGaNWZz.js +255 -0
  89. package/node_modules/@agnos-ui/core/pagination-xbcOHnhd.cjs +254 -0
  90. package/node_modules/@agnos-ui/core/progressbar-CRbMKp4b.cjs +86 -0
  91. package/node_modules/@agnos-ui/core/progressbar-CSEIFnlD.js +87 -0
  92. package/node_modules/@agnos-ui/core/promise-CxCD3NYv.cjs +118 -0
  93. package/node_modules/@agnos-ui/core/promise-D-RZVPuv.js +119 -0
  94. package/node_modules/@agnos-ui/core/rating-BIdiiPUo.js +184 -0
  95. package/node_modules/@agnos-ui/core/rating-qx1xaBmz.cjs +183 -0
  96. package/node_modules/@agnos-ui/core/scrollbars-CT87iv_6.cjs +30 -0
  97. package/node_modules/@agnos-ui/core/scrollbars-CcxSrnCx.js +31 -0
  98. package/node_modules/@agnos-ui/core/services/extendWidget.cjs +41 -0
  99. package/node_modules/@agnos-ui/core/services/extendWidget.d.ts +31 -0
  100. package/node_modules/@agnos-ui/core/services/extendWidget.js +41 -0
  101. package/node_modules/@agnos-ui/core/services/floatingUI.cjs +111 -0
  102. package/node_modules/@agnos-ui/core/services/floatingUI.d.ts +76 -0
  103. package/node_modules/@agnos-ui/core/services/floatingUI.js +111 -0
  104. package/node_modules/@agnos-ui/core/services/focusElement.cjs +46 -0
  105. package/node_modules/@agnos-ui/core/services/focusElement.d.ts +9 -0
  106. package/node_modules/@agnos-ui/core/services/focusElement.js +46 -0
  107. package/node_modules/@agnos-ui/core/services/focustrack.cjs +47 -0
  108. package/node_modules/@agnos-ui/core/services/focustrack.d.ts +40 -0
  109. package/node_modules/@agnos-ui/core/services/focustrack.js +47 -0
  110. package/node_modules/@agnos-ui/core/services/hash.cjs +15 -0
  111. package/node_modules/@agnos-ui/core/services/hash.d.ts +3 -0
  112. package/node_modules/@agnos-ui/core/services/hash.js +15 -0
  113. package/node_modules/@agnos-ui/core/services/intersection.cjs +53 -0
  114. package/node_modules/@agnos-ui/core/services/intersection.d.ts +30 -0
  115. package/node_modules/@agnos-ui/core/services/intersection.js +53 -0
  116. package/node_modules/@agnos-ui/core/services/matchMedia.cjs +14 -0
  117. package/node_modules/@agnos-ui/core/services/matchMedia.d.ts +8 -0
  118. package/node_modules/@agnos-ui/core/services/matchMedia.js +14 -0
  119. package/node_modules/@agnos-ui/core/services/navManager.cjs +166 -0
  120. package/node_modules/@agnos-ui/core/services/navManager.d.ts +144 -0
  121. package/node_modules/@agnos-ui/core/services/navManager.js +166 -0
  122. package/node_modules/@agnos-ui/core/services/pointerdownPosition.cjs +60 -0
  123. package/node_modules/@agnos-ui/core/services/pointerdownPosition.d.ts +42 -0
  124. package/node_modules/@agnos-ui/core/services/pointerdownPosition.js +60 -0
  125. package/node_modules/@agnos-ui/core/services/portal.cjs +42 -0
  126. package/node_modules/@agnos-ui/core/services/portal.d.ts +16 -0
  127. package/node_modules/@agnos-ui/core/services/portal.js +42 -0
  128. package/node_modules/@agnos-ui/core/services/resizeObserver.cjs +54 -0
  129. package/node_modules/@agnos-ui/core/services/resizeObserver.d.ts +18 -0
  130. package/node_modules/@agnos-ui/core/services/resizeObserver.js +54 -0
  131. package/node_modules/@agnos-ui/core/services/siblingsInert.cjs +44 -0
  132. package/node_modules/@agnos-ui/core/services/siblingsInert.d.ts +16 -0
  133. package/node_modules/@agnos-ui/core/services/siblingsInert.js +44 -0
  134. package/node_modules/@agnos-ui/core/services/transitions/baseTransitions.cjs +186 -0
  135. package/node_modules/@agnos-ui/core/services/transitions/baseTransitions.d.ts +166 -0
  136. package/node_modules/@agnos-ui/core/services/transitions/baseTransitions.js +186 -0
  137. package/node_modules/@agnos-ui/core/services/transitions/collapse.cjs +40 -0
  138. package/node_modules/@agnos-ui/core/services/transitions/collapse.d.ts +49 -0
  139. package/node_modules/@agnos-ui/core/services/transitions/collapse.js +40 -0
  140. package/node_modules/@agnos-ui/core/services/transitions/cssTransitions.cjs +32 -0
  141. package/node_modules/@agnos-ui/core/services/transitions/cssTransitions.d.ts +25 -0
  142. package/node_modules/@agnos-ui/core/services/transitions/cssTransitions.js +32 -0
  143. package/node_modules/@agnos-ui/core/services/transitions/simpleClassTransition.cjs +37 -0
  144. package/node_modules/@agnos-ui/core/services/transitions/simpleClassTransition.d.ts +47 -0
  145. package/node_modules/@agnos-ui/core/services/transitions/simpleClassTransition.js +37 -0
  146. package/node_modules/@agnos-ui/core/slider-B93hE0ag.cjs +807 -0
  147. package/node_modules/@agnos-ui/core/slider-Cjiq9FgI.js +808 -0
  148. package/node_modules/@agnos-ui/core/textDirection-cNgt24LJ.js +4 -0
  149. package/node_modules/@agnos-ui/core/textDirection-zqcZ5-eK.cjs +3 -0
  150. package/node_modules/@agnos-ui/core/toaster-BQWqxYv-.cjs +190 -0
  151. package/node_modules/@agnos-ui/core/toaster-BzEkshT2.js +191 -0
  152. package/node_modules/@agnos-ui/core/tree-DY04XPPg.cjs +228 -0
  153. package/node_modules/@agnos-ui/core/tree-HwcvZ0_p.js +229 -0
  154. package/node_modules/@agnos-ui/core/types.cjs +6 -0
  155. package/node_modules/@agnos-ui/core/types.d.ts +246 -0
  156. package/node_modules/@agnos-ui/core/types.js +6 -0
  157. package/node_modules/@agnos-ui/core/utils/directive.cjs +28 -0
  158. package/node_modules/@agnos-ui/core/utils/directive.d.ts +352 -0
  159. package/node_modules/@agnos-ui/core/utils/directive.js +28 -0
  160. package/node_modules/@agnos-ui/core/utils/func.cjs +7 -0
  161. package/node_modules/@agnos-ui/core/utils/func.d.ts +11 -0
  162. package/node_modules/@agnos-ui/core/utils/func.js +7 -0
  163. package/node_modules/@agnos-ui/core/utils/id.cjs +5 -0
  164. package/node_modules/@agnos-ui/core/utils/id.d.ts +6 -0
  165. package/node_modules/@agnos-ui/core/utils/id.js +5 -0
  166. package/node_modules/@agnos-ui/core/utils/internal/assign.d.ts +10 -0
  167. package/node_modules/@agnos-ui/core/utils/internal/checks.d.ts +57 -0
  168. package/node_modules/@agnos-ui/core/utils/internal/dom.d.ts +75 -0
  169. package/node_modules/@agnos-ui/core/utils/internal/isFocusable.d.ts +9 -0
  170. package/node_modules/@agnos-ui/core/utils/internal/math.d.ts +5 -0
  171. package/node_modules/@agnos-ui/core/utils/internal/promise.d.ts +98 -0
  172. package/node_modules/@agnos-ui/core/utils/internal/scrollbars.d.ts +8 -0
  173. package/node_modules/@agnos-ui/core/utils/internal/sort.d.ts +16 -0
  174. package/node_modules/@agnos-ui/core/utils/internal/ssrHTMLElement.d.ts +17 -0
  175. package/node_modules/@agnos-ui/core/utils/internal/textDirection.d.ts +7 -0
  176. package/node_modules/@agnos-ui/core/utils/internal/traversal.d.ts +54 -0
  177. package/node_modules/@agnos-ui/core/utils/stores.cjs +172 -0
  178. package/node_modules/@agnos-ui/core/utils/stores.d.ts +224 -0
  179. package/node_modules/@agnos-ui/core/utils/stores.js +172 -0
  180. package/node_modules/@agnos-ui/core/utils/widget.cjs +8 -0
  181. package/node_modules/@agnos-ui/core/utils/widget.d.ts +11 -0
  182. package/node_modules/@agnos-ui/core/utils/widget.js +8 -0
  183. package/node_modules/@agnos-ui/core/utils/writables.cjs +16 -0
  184. package/node_modules/@agnos-ui/core/utils/writables.d.ts +95 -0
  185. package/node_modules/@agnos-ui/core/utils/writables.js +16 -0
  186. package/node_modules/@agnos-ui/core/writables-DYGjj5T3.js +103 -0
  187. package/node_modules/@agnos-ui/core/writables-Dt68gADJ.cjs +102 -0
  188. package/package.json +25 -6
  189. package/schematics/collection.json +1 -1
  190. package/types/design-factory-angular-drawer.d.ts +71 -13
  191. package/types/design-factory-angular-internals.d.ts +220 -31
  192. package/types/design-factory-angular-sidenav.d.ts +15 -7
  193. package/types/design-factory-angular-theme.d.ts +122 -0
  194. package/types/design-factory-angular-topnav.d.ts +435 -0
@@ -0,0 +1,54 @@
1
+ # Drawer
2
+
3
+ ## API
4
+
5
+ ```html
6
+ <df-drawer
7
+ [className]="''"
8
+ [bodyScroll]="false"
9
+ [backdrop]="true"
10
+ [container]="null"
11
+ [(size)]="300"
12
+ [resizable]="false"
13
+ [visible]="false"
14
+ [keepInDom]="false"
15
+ [configuration]="'overlay'"
16
+ [position]="'inline-start'"
17
+ [focusOnInit]="true"
18
+ (sizeChange)="onSizeChange($event)"
19
+ (visibleChange)="onVisibleChange($event)"
20
+ (minimizedChange)="onMinimizedChange($event)"
21
+ (maximizedChange)="onMaximizedChange($event)"
22
+ (resizingChange)="onResizingChange($event)"
23
+ (minSize)="onMinSize()"
24
+ (maxSize)="onMaxSize()"
25
+ >
26
+ Drawer content
27
+
28
+ <ng-template dfDrawerHeader>Header content</ng-template>
29
+ <ng-template dfDrawerBody>Body content</ng-template>
30
+ <ng-template dfDrawerFooter>Footer content</ng-template>
31
+ </df-drawer>
32
+ ```
33
+
34
+ ```ts
35
+ // types
36
+ type DfDrawerPosition = 'inline-start' | 'inline-end' | 'block-start' | 'block-end';
37
+ type DfDrawerConfiguration = 'overlay' | 'inline';
38
+
39
+ // programmatic API
40
+ await this.drawer.open(); // Promise<void>
41
+ await this.drawer.close(); // Promise<void>
42
+ ```
43
+
44
+ ## ADR
45
+
46
+ -
47
+
48
+ ## Notes
49
+
50
+ - Header, body, and footer sections are opt-in via `ng-template[dfDrawerHeader]`, `ng-template[dfDrawerBody]`, and `ng-template[dfDrawerFooter]`. When none are provided, `<ng-content>` is used directly.
51
+ - By default the drawer and backdrop are portalled to `document.body`. Override this with the `container` input.
52
+ - `configuration="inline"` keeps the drawer in the document flow; the surrounding content is pushed rather than overlaid.
53
+ - `keepInDom` preserves the drawer's DOM subtree (and component state) while it is hidden, at the cost of keeping it rendered.
54
+ - `size` is a two-way binding; it updates when the user drags the splitter handle (requires `resizable="true"`).
@@ -1,26 +1,90 @@
1
- import { createDrawer, createSimpleClassTransition, createNavManager, UseDirective, UseMultiDirective } from '@agnos-ui/angular-headless';
2
- import { fadeTransition } from '@agnos-ui/core-bootstrap';
1
+ import { createDrawer } from '@agnos-ui/core/components/drawer';
2
+ import { createNavManager } from '@agnos-ui/core/services/navManager';
3
+ import { createCollapseTransition } from '@agnos-ui/core/services/transitions/collapse';
4
+ import { createSimpleClassTransition } from '@agnos-ui/core/services/transitions/simpleClassTransition';
5
+ import { NgTemplateOutlet } from '@angular/common';
3
6
  import * as i0 from '@angular/core';
4
- import { input, booleanAttribute, model, output, ChangeDetectionStrategy, Component } from '@angular/core';
5
- import { AgnosWidgetDirective, callWidgetFactory } from '@design-factory/angular/internals';
7
+ import { inject, TemplateRef, Directive, contentChild, computed, input, booleanAttribute, model, output, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
8
+ import { AgnosWidgetDirective, callWidgetFactory, UseDirective, UseMultiDirective } from '@design-factory/angular/internals';
6
9
 
10
+ const fadeTransition = createSimpleClassTransition({
11
+ animationPendingClasses: ['df-fade'],
12
+ animationPendingShowClasses: ['df-show'],
13
+ showClasses: ['df-show', 'df-fade'],
14
+ hideClasses: ['df-hidden', 'df-fade']
15
+ });
16
+ const verticalConfig = {
17
+ dimension: 'height',
18
+ hideClasses: ['df-collapse-hide'],
19
+ showClasses: ['df-collapse-show'],
20
+ animationPendingClasses: ['df-collapse-collapsing']
21
+ };
22
+ const horizontalConfig = {
23
+ dimension: 'width',
24
+ hideClasses: ['df-collapse-hide'],
25
+ showClasses: ['df-collapse-show'],
26
+ animationPendingClasses: ['df-collapse-collapsing', 'df-collapse-horizontal']
27
+ };
28
+ /**
29
+ * Marks an `<ng-template>` as drawer header content.
30
+ */
31
+ class DfDrawerHeaderTemplate {
32
+ constructor() {
33
+ this.templateRef = inject(TemplateRef);
34
+ }
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfDrawerHeaderTemplate, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
36
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DfDrawerHeaderTemplate, isStandalone: true, selector: "ng-template[dfDrawerHeader]", ngImport: i0 }); }
37
+ }
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfDrawerHeaderTemplate, decorators: [{
39
+ type: Directive,
40
+ args: [{
41
+ selector: 'ng-template[dfDrawerHeader]'
42
+ }]
43
+ }] });
44
+ /**
45
+ * Marks an `<ng-template>` as drawer body content.
46
+ */
47
+ class DfDrawerBodyTemplate {
48
+ constructor() {
49
+ this.templateRef = inject(TemplateRef);
50
+ }
51
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfDrawerBodyTemplate, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
52
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DfDrawerBodyTemplate, isStandalone: true, selector: "ng-template[dfDrawerBody]", ngImport: i0 }); }
53
+ }
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfDrawerBodyTemplate, decorators: [{
55
+ type: Directive,
56
+ args: [{
57
+ selector: 'ng-template[dfDrawerBody]'
58
+ }]
59
+ }] });
60
+ /**
61
+ * Marks an `<ng-template>` as drawer footer content.
62
+ */
63
+ class DfDrawerFooterTemplate {
64
+ constructor() {
65
+ this.templateRef = inject(TemplateRef);
66
+ }
67
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfDrawerFooterTemplate, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
68
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DfDrawerFooterTemplate, isStandalone: true, selector: "ng-template[dfDrawerFooter]", ngImport: i0 }); }
69
+ }
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfDrawerFooterTemplate, decorators: [{
71
+ type: Directive,
72
+ args: [{
73
+ selector: 'ng-template[dfDrawerFooter]'
74
+ }]
75
+ }] });
7
76
  /**
8
77
  * Enables users to show contextual content via a sliding panel from any screen edge.
9
78
  * @experimental
10
79
  */
11
- class DfDrawerComponent extends AgnosWidgetDirective {
80
+ class DfDrawer extends AgnosWidgetDirective {
12
81
  constructor() {
13
82
  const widget = callWidgetFactory(createDrawer, {
14
83
  defaultConfig: {
15
- className: 'inline-start',
16
84
  bodyScroll: false,
17
85
  backdrop: true,
18
- transition: createSimpleClassTransition({
19
- showClasses: ['show']
20
- }),
21
- verticalTransition: createSimpleClassTransition({
22
- showClasses: ['show']
23
- }),
86
+ transition: createCollapseTransition(horizontalConfig),
87
+ verticalTransition: createCollapseTransition(verticalConfig),
24
88
  backdropTransition: fadeTransition
25
89
  },
26
90
  events: {
@@ -43,6 +107,10 @@ class DfDrawerComponent extends AgnosWidgetDirective {
43
107
  }
44
108
  });
45
109
  super(widget);
110
+ this.headerTemplate = contentChild(DfDrawerHeaderTemplate, ...(ngDevMode ? [{ debugName: "headerTemplate" }] : []));
111
+ this.bodyTemplate = contentChild(DfDrawerBodyTemplate, ...(ngDevMode ? [{ debugName: "bodyTemplate" }] : []));
112
+ this.footerTemplate = contentChild(DfDrawerFooterTemplate, ...(ngDevMode ? [{ debugName: "footerTemplate" }] : []));
113
+ this.hasSectionTemplates = computed(() => !!this.headerTemplate() || !!this.bodyTemplate() || !!this.footerTemplate(), ...(ngDevMode ? [{ debugName: "hasSectionTemplates" }] : []));
46
114
  /**
47
115
  * CSS classes to be applied on the widget main container
48
116
  *
@@ -94,9 +162,23 @@ class DfDrawerComponent extends AgnosWidgetDirective {
94
162
  * If `true`, the drawer element is kept in the DOM when it is not visible.
95
163
  * This can be useful to preserve the state of the drawer content when it is hidden.
96
164
  *
97
- * @defaultValue `true`
165
+ * @defaultValue `false`
166
+ */
167
+ this.keepInDom = input(false, { ...(ngDevMode ? { debugName: "keepInDom" } : {}), transform: booleanAttribute });
168
+ /**
169
+ * The display configuration of the drawer.
170
+ * - `'overlay'` (default): the drawer overlays the page content with a backdrop.
171
+ * - `'inline'`: the drawer stays in the document flow and moves content as it expands/resizes.
172
+ *
173
+ * @defaultValue `'overlay'`
174
+ */
175
+ this.configuration = input('overlay', ...(ngDevMode ? [{ debugName: "configuration" }] : []));
176
+ /**
177
+ * The position of the drawer on the screen.
178
+ *
179
+ * @defaultValue `'inline-start'`
98
180
  */
99
- this.keepInDom = input(true, { ...(ngDevMode ? { debugName: "keepInDom" } : {}), transform: booleanAttribute });
181
+ this.position = input('inline-start', ...(ngDevMode ? [{ debugName: "position" }] : []));
100
182
  /**
101
183
  * An event emitted when the width is changed.
102
184
  *
@@ -174,120 +256,173 @@ class DfDrawerComponent extends AgnosWidgetDirective {
174
256
  }
175
257
  /**
176
258
  * Trigger the opening of the drawer.
259
+ *
260
+ * @param animated - whether the transition should be animated. If the parameter is not defined, the `animated` is defined by the component input or the default config.
261
+ *
262
+ * @returns A promise that resolves once the opening transition has finished.
177
263
  */
178
- open() {
179
- this._agnosWidget.api.open();
264
+ open(animated) {
265
+ return this.api.open(animated);
180
266
  }
181
267
  /**
182
268
  * Trigger the closing of the drawer.
269
+ *
270
+ * @param animated - whether the transition should be animated. If the parameter is not defined, the `animated` is defined by the component input or the default config.
271
+ *
272
+ * @returns A promise that resolves once the closing transition has finished.
183
273
  */
184
- close() {
185
- this._agnosWidget.api.close();
274
+ close(animated) {
275
+ return this.api.close(animated);
186
276
  }
187
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: DfDrawerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
188
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.1", type: DfDrawerComponent, isStandalone: true, selector: "df-drawer", inputs: { className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, bodyScroll: { classPropertyName: "bodyScroll", publicName: "bodyScroll", isSignal: true, isRequired: false, transformFunction: null }, backdrop: { classPropertyName: "backdrop", publicName: "backdrop", isSignal: true, isRequired: false, transformFunction: null }, container: { classPropertyName: "container", publicName: "container", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, resizable: { classPropertyName: "resizable", publicName: "resizable", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, keepInDom: { classPropertyName: "keepInDom", publicName: "keepInDom", isSignal: true, isRequired: false, transformFunction: null }, focusOnInit: { classPropertyName: "focusOnInit", publicName: "focusOnInit", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { size: "sizeChange", sizeChange: "sizeChange", visibleChange: "visibleChange", minimizedChange: "minimizedChange", maximizedChange: "maximizedChange", resizingChange: "resizingChange", minSize: "minSize", maxSize: "maxSize" }, usesInheritance: true, ngImport: i0, template: `
189
- @if (!_agnosWidget.state.hidden() || keepInDom()) {
277
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfDrawer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
278
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: DfDrawer, isStandalone: true, selector: "df-drawer", inputs: { className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, bodyScroll: { classPropertyName: "bodyScroll", publicName: "bodyScroll", isSignal: true, isRequired: false, transformFunction: null }, backdrop: { classPropertyName: "backdrop", publicName: "backdrop", isSignal: true, isRequired: false, transformFunction: null }, container: { classPropertyName: "container", publicName: "container", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, resizable: { classPropertyName: "resizable", publicName: "resizable", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, keepInDom: { classPropertyName: "keepInDom", publicName: "keepInDom", isSignal: true, isRequired: false, transformFunction: null }, configuration: { classPropertyName: "configuration", publicName: "configuration", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, focusOnInit: { classPropertyName: "focusOnInit", publicName: "focusOnInit", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { size: "sizeChange", sizeChange: "sizeChange", visibleChange: "visibleChange", minimizedChange: "minimizedChange", maximizedChange: "maximizedChange", resizingChange: "resizingChange", minSize: "minSize", maxSize: "maxSize" }, queries: [{ propertyName: "headerTemplate", first: true, predicate: DfDrawerHeaderTemplate, descendants: true, isSignal: true }, { propertyName: "bodyTemplate", first: true, predicate: DfDrawerBodyTemplate, descendants: true, isSignal: true }, { propertyName: "footerTemplate", first: true, predicate: DfDrawerFooterTemplate, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
279
+ @let isHidden = state.hidden();
280
+ @let backdropHidden = state.backdropHidden();
281
+ @if (!isHidden || keepInDom()) {
282
+ @let isVertical = state.isVertical();
283
+ @let drawerSize = size();
190
284
  <div
191
285
  class="df-drawer"
192
- [class]="_agnosWidget.state.className()"
193
- [class.show]="_agnosWidget.state.visible()"
194
- [auUseMulti]="[_agnosWidget.directives.drawerPortalDirective, _agnosWidget.directives.drawerDirective]"
195
- [style.--df-drawer-size]="size() !== null ? size() + 'px' : ''"
286
+ [class]="state.className()"
287
+ [dfUseMulti]="[directives.drawerPortalDirective, directives.drawerDirective]"
288
+ [style.--df-drawer-size]="drawerSize !== null ? drawerSize + 'px' : ''"
196
289
  >
197
- <ng-content />
198
- @if (_agnosWidget.state.resizable()) {
290
+ <ng-template #defaultBodyTemplate>
291
+ <ng-content />
292
+ </ng-template>
293
+ @if (hasSectionTemplates()) {
294
+ @if (headerTemplate(); as header) {
295
+ <div class="df-drawer-header">
296
+ <ng-template [ngTemplateOutlet]="header.templateRef" />
297
+ </div>
298
+ }
299
+ <div class="df-drawer-body">
300
+ @if (bodyTemplate(); as body) {
301
+ <ng-template [ngTemplateOutlet]="body.templateRef" />
302
+ } @else {
303
+ <ng-template [ngTemplateOutlet]="defaultBodyTemplate" />
304
+ }
305
+ </div>
306
+ @if (footerTemplate(); as footer) {
307
+ <div class="df-drawer-footer">
308
+ <ng-template [ngTemplateOutlet]="footer.templateRef" />
309
+ </div>
310
+ }
311
+ } @else {
312
+ <ng-template [ngTemplateOutlet]="defaultBodyTemplate" />
313
+ }
314
+ @if (state.resizable()) {
199
315
  <div
200
316
  class="df-drawer-splitter"
201
317
  tabindex="-1"
202
- [auUse]="_agnosWidget.directives.splitterDirective"
203
- [style.align-items]="!_agnosWidget.state.isVertical() ? 'center' : undefined"
204
- [style.justify-content]="_agnosWidget.state.isVertical() ? 'center' : undefined"
318
+ [dfUse]="directives.splitterDirective"
319
+ [style.align-items]="!isVertical ? 'center' : undefined"
320
+ [style.justify-content]="isVertical ? 'center' : undefined"
205
321
  >
206
322
  <ng-content select="df-drawer-splitter-content">
207
323
  <button
208
324
  #splitterHandle
209
325
  class="btn df-btn-icononly df-btn-tertiary df-drawer-splitter-handle"
210
326
  [class]="{
211
- 'fa-grip-lines-vertical': !_agnosWidget.state.isVertical(),
212
- 'fa-grip-lines': _agnosWidget.state.isVertical(),
213
- 'df-btn-outline-neutral-mirror': !_agnosWidget.state.backdropHidden(),
214
- 'btn-outline-primary': _agnosWidget.state.backdropHidden()
327
+ 'fa-grip-lines-vertical': !isVertical,
328
+ 'fa-grip-lines': isVertical,
329
+ 'df-btn-outline-neutral-mirror': !backdropHidden,
330
+ 'btn-outline-primary': backdropHidden
215
331
  }"
216
332
  i18n-aria-label="@@df.drawer.resize.ariaLabel"
217
333
  aria-label="Resize drawer"
218
- [auUse]="[navManager.directive, navManagerConfig]"
334
+ [dfUse]="[navManager.directive, navManagerConfig]"
219
335
  ></button>
220
336
  </ng-content>
221
337
  </div>
222
338
  }
223
339
  </div>
224
340
  }
225
- @if (!_agnosWidget.state.backdropHidden()) {
341
+ @if (!backdropHidden) {
226
342
  <div
227
343
  class="df-drawer-backdrop"
228
- [class.show]="_agnosWidget.state.visible()"
229
- [auUseMulti]="[_agnosWidget.directives.backdropPortalDirective, _agnosWidget.directives.backdropDirective]"
344
+ [dfUseMulti]="[directives.backdropPortalDirective, directives.backdropDirective]"
230
345
  ></div>
231
346
  }
232
- `, isInline: true, dependencies: [{ kind: "directive", type: UseDirective, selector: "[auUse]", inputs: ["auUse"] }, { kind: "directive", type: UseMultiDirective, selector: "[auUseMulti]", inputs: ["auUseMulti"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
347
+ `, isInline: true, styles: [".df-fade{transition:opacity .15s linear}@media(prefers-reduced-motion:reduce){.df-fade{transition:none}}.df-fade:not(.df-show){opacity:0}.df-hidden{display:none}.df-drawer{--df-drawer-z-index: 2010;--df-drawer-size: max-content;--df-drawer-min-size: 0;--df-drawer-max-size: 100vw;display:flex;flex-direction:column;width:100%;min-width:0;max-width:none;height:var(--df-drawer-size);min-height:var(--df-drawer-min-size);max-height:var(--df-drawer-max-size)}.df-drawer .df-drawer-header{display:flex;padding:var(--df-spacing-6) var(--df-spacing-4) var(--df-spacing-5) var(--df-spacing-6);border-block-end:1px solid var(--df-color-inert-neutral-main-border)}.df-drawer .df-drawer-body{padding:var(--df-spacing-6) var(--df-spacing-6) 0}.df-drawer .df-drawer-footer{display:flex;justify-content:end;padding:var(--df-spacing-6);margin-top:auto;flex-wrap:wrap}.df-drawer.df-inline-start,.df-drawer.df-inline-end{width:var(--df-drawer-size);min-width:var(--df-drawer-min-size);max-width:var(--df-drawer-max-size);height:100%;min-height:0;max-height:none}.df-drawer{background-color:var(--df-color-inert-neutral-main-background);z-index:var(--df-drawer-z-index);position:fixed}.df-drawer.df-inline-start{inset-block:0;inset-inline-start:0;border-inline-end:1px solid var(--df-color-inert-neutral-main-border)}.df-drawer.df-inline-end{inset-block:0;inset-inline-end:0;border-inline-start:1px solid var(--df-color-inert-neutral-main-border)}.df-drawer.df-inline-end .df-drawer-splitter{inset-inline-end:auto;inset-inline-start:-32px}.df-drawer.df-block-start{inset-inline:0;inset-block-start:0;border-block-end:1px solid var(--df-color-inert-neutral-main-border)}.df-drawer.df-block-start .df-drawer-splitter{inset-block-start:auto;cursor:ns-resize}.df-drawer.df-block-start .df-drawer-splitter .df-drawer-splitter-handle{cursor:ns-resize}.df-drawer.df-block-end{inset-inline:0;inset-block-end:0;border-block-start:1px solid var(--df-color-inert-neutral-main-border)}.df-drawer.df-block-end .df-drawer-splitter{inset-block-end:auto;cursor:ns-resize;inset-block-start:-32px}.df-drawer.df-block-end .df-drawer-splitter .df-drawer-splitter-handle{cursor:ns-resize}.df-drawer .df-drawer-splitter{display:flex;position:absolute;inset-block:0;inset-inline-end:-4px;width:8px;cursor:ew-resize;background:transparent}.df-drawer .df-drawer-splitter .df-drawer-splitter-handle{--df-btn-bg: transparent;flex-shrink:0;border:none;cursor:ew-resize}.df-drawer.df-block-start .df-drawer-splitter,.df-drawer.df-block-end .df-drawer-splitter{inset-inline:0;width:auto;height:8px;cursor:ns-resize}.df-drawer.df-collapse-hide{display:none}.df-drawer.df-collapse-collapsing{min-width:0;min-height:0;height:0;overflow:hidden;transition:height .35s ease}@media(prefers-reduced-motion:reduce){.df-drawer.df-collapse-collapsing{transition:none}}.df-drawer.df-collapse-collapsing.df-collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion:reduce){.df-drawer.df-collapse-collapsing.df-collapse-horizontal{transition:none}}@media(max-width:576px){.df-drawer.df-inline-start,.df-drawer.df-inline-end{width:100dvw;min-width:100dvw;max-width:100dvw}.df-drawer.df-block-start,.df-drawer.df-block-end{height:100dvh;min-height:100dvh;max-height:100dvh}}.df-drawer-backdrop{--df-drawer-backdrop-z-index: 2000;--df-drawer-backdrop-opacity: .9;position:fixed;inset:0;background-color:var(--df-color-backdrop-background);z-index:var(--df-drawer-backdrop-z-index)}.df-drawer-backdrop.df-show{opacity:var(--df-drawer-backdrop-opacity);pointer-events:auto}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: UseDirective, selector: "[dfUse]", inputs: ["dfUse"] }, { kind: "directive", type: UseMultiDirective, selector: "[dfUseMulti]", inputs: ["dfUseMulti"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
233
348
  }
234
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: DfDrawerComponent, decorators: [{
349
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfDrawer, decorators: [{
235
350
  type: Component,
236
- args: [{
237
- selector: 'df-drawer',
238
- imports: [UseDirective, UseMultiDirective],
239
- template: `
240
- @if (!_agnosWidget.state.hidden() || keepInDom()) {
351
+ args: [{ selector: 'df-drawer', imports: [NgTemplateOutlet, UseDirective, UseMultiDirective], template: `
352
+ @let isHidden = state.hidden();
353
+ @let backdropHidden = state.backdropHidden();
354
+ @if (!isHidden || keepInDom()) {
355
+ @let isVertical = state.isVertical();
356
+ @let drawerSize = size();
241
357
  <div
242
358
  class="df-drawer"
243
- [class]="_agnosWidget.state.className()"
244
- [class.show]="_agnosWidget.state.visible()"
245
- [auUseMulti]="[_agnosWidget.directives.drawerPortalDirective, _agnosWidget.directives.drawerDirective]"
246
- [style.--df-drawer-size]="size() !== null ? size() + 'px' : ''"
359
+ [class]="state.className()"
360
+ [dfUseMulti]="[directives.drawerPortalDirective, directives.drawerDirective]"
361
+ [style.--df-drawer-size]="drawerSize !== null ? drawerSize + 'px' : ''"
247
362
  >
248
- <ng-content />
249
- @if (_agnosWidget.state.resizable()) {
363
+ <ng-template #defaultBodyTemplate>
364
+ <ng-content />
365
+ </ng-template>
366
+ @if (hasSectionTemplates()) {
367
+ @if (headerTemplate(); as header) {
368
+ <div class="df-drawer-header">
369
+ <ng-template [ngTemplateOutlet]="header.templateRef" />
370
+ </div>
371
+ }
372
+ <div class="df-drawer-body">
373
+ @if (bodyTemplate(); as body) {
374
+ <ng-template [ngTemplateOutlet]="body.templateRef" />
375
+ } @else {
376
+ <ng-template [ngTemplateOutlet]="defaultBodyTemplate" />
377
+ }
378
+ </div>
379
+ @if (footerTemplate(); as footer) {
380
+ <div class="df-drawer-footer">
381
+ <ng-template [ngTemplateOutlet]="footer.templateRef" />
382
+ </div>
383
+ }
384
+ } @else {
385
+ <ng-template [ngTemplateOutlet]="defaultBodyTemplate" />
386
+ }
387
+ @if (state.resizable()) {
250
388
  <div
251
389
  class="df-drawer-splitter"
252
390
  tabindex="-1"
253
- [auUse]="_agnosWidget.directives.splitterDirective"
254
- [style.align-items]="!_agnosWidget.state.isVertical() ? 'center' : undefined"
255
- [style.justify-content]="_agnosWidget.state.isVertical() ? 'center' : undefined"
391
+ [dfUse]="directives.splitterDirective"
392
+ [style.align-items]="!isVertical ? 'center' : undefined"
393
+ [style.justify-content]="isVertical ? 'center' : undefined"
256
394
  >
257
395
  <ng-content select="df-drawer-splitter-content">
258
396
  <button
259
397
  #splitterHandle
260
398
  class="btn df-btn-icononly df-btn-tertiary df-drawer-splitter-handle"
261
399
  [class]="{
262
- 'fa-grip-lines-vertical': !_agnosWidget.state.isVertical(),
263
- 'fa-grip-lines': _agnosWidget.state.isVertical(),
264
- 'df-btn-outline-neutral-mirror': !_agnosWidget.state.backdropHidden(),
265
- 'btn-outline-primary': _agnosWidget.state.backdropHidden()
400
+ 'fa-grip-lines-vertical': !isVertical,
401
+ 'fa-grip-lines': isVertical,
402
+ 'df-btn-outline-neutral-mirror': !backdropHidden,
403
+ 'btn-outline-primary': backdropHidden
266
404
  }"
267
405
  i18n-aria-label="@@df.drawer.resize.ariaLabel"
268
406
  aria-label="Resize drawer"
269
- [auUse]="[navManager.directive, navManagerConfig]"
407
+ [dfUse]="[navManager.directive, navManagerConfig]"
270
408
  ></button>
271
409
  </ng-content>
272
410
  </div>
273
411
  }
274
412
  </div>
275
413
  }
276
- @if (!_agnosWidget.state.backdropHidden()) {
414
+ @if (!backdropHidden) {
277
415
  <div
278
416
  class="df-drawer-backdrop"
279
- [class.show]="_agnosWidget.state.visible()"
280
- [auUseMulti]="[_agnosWidget.directives.backdropPortalDirective, _agnosWidget.directives.backdropDirective]"
417
+ [dfUseMulti]="[directives.backdropPortalDirective, directives.backdropDirective]"
281
418
  ></div>
282
419
  }
283
- `,
284
- changeDetection: ChangeDetectionStrategy.OnPush
285
- }]
286
- }], ctorParameters: () => [], propDecorators: { className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], bodyScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "bodyScroll", required: false }] }], backdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "backdrop", required: false }] }], container: [{ type: i0.Input, args: [{ isSignal: true, alias: "container", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }, { type: i0.Output, args: ["sizeChange"] }], resizable: [{ type: i0.Input, args: [{ isSignal: true, alias: "resizable", required: false }] }], visible: [{ type: i0.Input, args: [{ isSignal: true, alias: "visible", required: false }] }], keepInDom: [{ type: i0.Input, args: [{ isSignal: true, alias: "keepInDom", required: false }] }], sizeChange: [{ type: i0.Output, args: ["sizeChange"] }], visibleChange: [{ type: i0.Output, args: ["visibleChange"] }], minimizedChange: [{ type: i0.Output, args: ["minimizedChange"] }], maximizedChange: [{ type: i0.Output, args: ["maximizedChange"] }], resizingChange: [{ type: i0.Output, args: ["resizingChange"] }], focusOnInit: [{ type: i0.Input, args: [{ isSignal: true, alias: "focusOnInit", required: false }] }], minSize: [{ type: i0.Output, args: ["minSize"] }], maxSize: [{ type: i0.Output, args: ["maxSize"] }] } });
420
+ `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".df-fade{transition:opacity .15s linear}@media(prefers-reduced-motion:reduce){.df-fade{transition:none}}.df-fade:not(.df-show){opacity:0}.df-hidden{display:none}.df-drawer{--df-drawer-z-index: 2010;--df-drawer-size: max-content;--df-drawer-min-size: 0;--df-drawer-max-size: 100vw;display:flex;flex-direction:column;width:100%;min-width:0;max-width:none;height:var(--df-drawer-size);min-height:var(--df-drawer-min-size);max-height:var(--df-drawer-max-size)}.df-drawer .df-drawer-header{display:flex;padding:var(--df-spacing-6) var(--df-spacing-4) var(--df-spacing-5) var(--df-spacing-6);border-block-end:1px solid var(--df-color-inert-neutral-main-border)}.df-drawer .df-drawer-body{padding:var(--df-spacing-6) var(--df-spacing-6) 0}.df-drawer .df-drawer-footer{display:flex;justify-content:end;padding:var(--df-spacing-6);margin-top:auto;flex-wrap:wrap}.df-drawer.df-inline-start,.df-drawer.df-inline-end{width:var(--df-drawer-size);min-width:var(--df-drawer-min-size);max-width:var(--df-drawer-max-size);height:100%;min-height:0;max-height:none}.df-drawer{background-color:var(--df-color-inert-neutral-main-background);z-index:var(--df-drawer-z-index);position:fixed}.df-drawer.df-inline-start{inset-block:0;inset-inline-start:0;border-inline-end:1px solid var(--df-color-inert-neutral-main-border)}.df-drawer.df-inline-end{inset-block:0;inset-inline-end:0;border-inline-start:1px solid var(--df-color-inert-neutral-main-border)}.df-drawer.df-inline-end .df-drawer-splitter{inset-inline-end:auto;inset-inline-start:-32px}.df-drawer.df-block-start{inset-inline:0;inset-block-start:0;border-block-end:1px solid var(--df-color-inert-neutral-main-border)}.df-drawer.df-block-start .df-drawer-splitter{inset-block-start:auto;cursor:ns-resize}.df-drawer.df-block-start .df-drawer-splitter .df-drawer-splitter-handle{cursor:ns-resize}.df-drawer.df-block-end{inset-inline:0;inset-block-end:0;border-block-start:1px solid var(--df-color-inert-neutral-main-border)}.df-drawer.df-block-end .df-drawer-splitter{inset-block-end:auto;cursor:ns-resize;inset-block-start:-32px}.df-drawer.df-block-end .df-drawer-splitter .df-drawer-splitter-handle{cursor:ns-resize}.df-drawer .df-drawer-splitter{display:flex;position:absolute;inset-block:0;inset-inline-end:-4px;width:8px;cursor:ew-resize;background:transparent}.df-drawer .df-drawer-splitter .df-drawer-splitter-handle{--df-btn-bg: transparent;flex-shrink:0;border:none;cursor:ew-resize}.df-drawer.df-block-start .df-drawer-splitter,.df-drawer.df-block-end .df-drawer-splitter{inset-inline:0;width:auto;height:8px;cursor:ns-resize}.df-drawer.df-collapse-hide{display:none}.df-drawer.df-collapse-collapsing{min-width:0;min-height:0;height:0;overflow:hidden;transition:height .35s ease}@media(prefers-reduced-motion:reduce){.df-drawer.df-collapse-collapsing{transition:none}}.df-drawer.df-collapse-collapsing.df-collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion:reduce){.df-drawer.df-collapse-collapsing.df-collapse-horizontal{transition:none}}@media(max-width:576px){.df-drawer.df-inline-start,.df-drawer.df-inline-end{width:100dvw;min-width:100dvw;max-width:100dvw}.df-drawer.df-block-start,.df-drawer.df-block-end{height:100dvh;min-height:100dvh;max-height:100dvh}}.df-drawer-backdrop{--df-drawer-backdrop-z-index: 2000;--df-drawer-backdrop-opacity: .9;position:fixed;inset:0;background-color:var(--df-color-backdrop-background);z-index:var(--df-drawer-backdrop-z-index)}.df-drawer-backdrop.df-show{opacity:var(--df-drawer-backdrop-opacity);pointer-events:auto}\n"] }]
421
+ }], ctorParameters: () => [], propDecorators: { headerTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfDrawerHeaderTemplate), { isSignal: true }] }], bodyTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfDrawerBodyTemplate), { isSignal: true }] }], footerTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfDrawerFooterTemplate), { isSignal: true }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], bodyScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "bodyScroll", required: false }] }], backdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "backdrop", required: false }] }], container: [{ type: i0.Input, args: [{ isSignal: true, alias: "container", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }, { type: i0.Output, args: ["sizeChange"] }], resizable: [{ type: i0.Input, args: [{ isSignal: true, alias: "resizable", required: false }] }], visible: [{ type: i0.Input, args: [{ isSignal: true, alias: "visible", required: false }] }], keepInDom: [{ type: i0.Input, args: [{ isSignal: true, alias: "keepInDom", required: false }] }], configuration: [{ type: i0.Input, args: [{ isSignal: true, alias: "configuration", required: false }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], sizeChange: [{ type: i0.Output, args: ["sizeChange"] }], visibleChange: [{ type: i0.Output, args: ["visibleChange"] }], minimizedChange: [{ type: i0.Output, args: ["minimizedChange"] }], maximizedChange: [{ type: i0.Output, args: ["maximizedChange"] }], resizingChange: [{ type: i0.Output, args: ["resizingChange"] }], focusOnInit: [{ type: i0.Input, args: [{ isSignal: true, alias: "focusOnInit", required: false }] }], minSize: [{ type: i0.Output, args: ["minSize"] }], maxSize: [{ type: i0.Output, args: ["maxSize"] }] } });
287
422
 
288
423
  /**
289
424
  * Generated bundle index. Do not edit.
290
425
  */
291
426
 
292
- export { DfDrawerComponent };
427
+ export { DfDrawer, DfDrawerBodyTemplate, DfDrawerFooterTemplate, DfDrawerHeaderTemplate };
293
428
  //# sourceMappingURL=design-factory-angular-drawer.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"design-factory-angular-drawer.mjs","sources":["../../drawer/drawer.ts","../../drawer/design-factory-angular-drawer.ts"],"sourcesContent":["import type { DrawerWidget, NavManagerItemConfig } from '@agnos-ui/angular-headless';\nimport {\n createDrawer,\n createNavManager,\n createSimpleClassTransition,\n UseDirective,\n UseMultiDirective\n} from '@agnos-ui/angular-headless';\nimport { fadeTransition } from '@agnos-ui/core-bootstrap';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, input, model, output } from '@angular/core';\nimport { AgnosWidgetDirective, callWidgetFactory } from '@design-factory/angular/internals';\n\n/**\n * Possible values for the drawer positions.\n */\nexport type DrawerPositions = 'inline-start' | 'inline-end' | 'block-start' | 'block-end';\n\n/**\n * Enables users to show contextual content via a sliding panel from any screen edge.\n * @experimental\n */\n@Component({\n selector: 'df-drawer',\n imports: [UseDirective, UseMultiDirective],\n template: `\n @if (!_agnosWidget.state.hidden() || keepInDom()) {\n <div\n class=\"df-drawer\"\n [class]=\"_agnosWidget.state.className()\"\n [class.show]=\"_agnosWidget.state.visible()\"\n [auUseMulti]=\"[_agnosWidget.directives.drawerPortalDirective, _agnosWidget.directives.drawerDirective]\"\n [style.--df-drawer-size]=\"size() !== null ? size() + 'px' : ''\"\n >\n <ng-content />\n @if (_agnosWidget.state.resizable()) {\n <div\n class=\"df-drawer-splitter\"\n tabindex=\"-1\"\n [auUse]=\"_agnosWidget.directives.splitterDirective\"\n [style.align-items]=\"!_agnosWidget.state.isVertical() ? 'center' : undefined\"\n [style.justify-content]=\"_agnosWidget.state.isVertical() ? 'center' : undefined\"\n >\n <ng-content select=\"df-drawer-splitter-content\">\n <button\n #splitterHandle\n class=\"btn df-btn-icononly df-btn-tertiary df-drawer-splitter-handle\"\n [class]=\"{\n 'fa-grip-lines-vertical': !_agnosWidget.state.isVertical(),\n 'fa-grip-lines': _agnosWidget.state.isVertical(),\n 'df-btn-outline-neutral-mirror': !_agnosWidget.state.backdropHidden(),\n 'btn-outline-primary': _agnosWidget.state.backdropHidden()\n }\"\n i18n-aria-label=\"@@df.drawer.resize.ariaLabel\"\n aria-label=\"Resize drawer\"\n [auUse]=\"[navManager.directive, navManagerConfig]\"\n ></button>\n </ng-content>\n </div>\n }\n </div>\n }\n @if (!_agnosWidget.state.backdropHidden()) {\n <div\n class=\"df-drawer-backdrop\"\n [class.show]=\"_agnosWidget.state.visible()\"\n [auUseMulti]=\"[_agnosWidget.directives.backdropPortalDirective, _agnosWidget.directives.backdropDirective]\"\n ></div>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DfDrawerComponent extends AgnosWidgetDirective<DrawerWidget> {\n /**\n * CSS classes to be applied on the widget main container\n *\n * @defaultValue ``\n */\n readonly className = input<string>('');\n /**\n * If `true` allows body scrolling when the drawer is open.\n *\n * @defaultValue `false`\n */\n readonly bodyScroll = input(false, { transform: booleanAttribute });\n /**\n * If `true` displays the backdrop element and disables the body scrolling, otherwise the body of the document is navigable\n *\n * @defaultValue `true`\n */\n readonly backdrop = input(true, { transform: booleanAttribute });\n /**\n * Which element should contain the drawer and backdrop DOM elements.\n * If it is not null, the drawer and backdrop DOM elements are moved to the specified container.\n * Otherwise, they stay where the widget is located.\n *\n * @defaultValue\n * ```ts\n * typeof window !== 'undefined' ? document.body : null\n * ```\n */\n readonly container = input<HTMLElement | null>(null);\n /**\n * The size of the drawer in pixels.\n *\n * @defaultValue `300`\n */\n readonly size = model<number | null>(300);\n /**\n * If `true`, the drawer can be resized by the user.\n *\n * @defaultValue `false`\n */\n readonly resizable = input(false, { transform: booleanAttribute });\n /**\n * If `true`, the drawer is shown; otherwise, it is hidden.\n *\n * @defaultValue `false`\n */\n readonly visible = input(false, { transform: booleanAttribute });\n\n /**\n * If `true`, the drawer element is kept in the DOM when it is not visible.\n * This can be useful to preserve the state of the drawer content when it is hidden.\n *\n * @defaultValue `true`\n */\n readonly keepInDom = input(true, { transform: booleanAttribute });\n\n /**\n * An event emitted when the width is changed.\n *\n * Event payload is equal to the newly selected width.\n *\n * @defaultValue\n * ```ts\n * () => {}\n * ```\n */\n readonly sizeChange = output<number | null>();\n /**\n * Event to be triggered when the visible property changes.\n *\n * @param visible - new value of the visible propery\n *\n * @defaultValue\n * ```ts\n * () => {}\n * ```\n */\n readonly visibleChange = output<boolean>();\n\n /**\n * Event to be triggered when the minimized state changes.\n *\n * @defaultValue\n * ```ts\n * () => {}\n * ```\n */\n readonly minimizedChange = output<boolean>();\n\n /**\n * Event to be triggered when the maximized state changes.\n *\n * @defaultValue\n * ```ts\n * () => {}\n * ```\n */\n readonly maximizedChange = output<boolean>();\n\n /**\n * Event to be triggered when the user start or stop moving the drawer.\n *\n * @defaultValue\n * ```ts\n * () => {}\n * ```\n */\n readonly resizingChange = output<boolean>();\n\n /**\n * If `true` focuses the drawer when it is opened.\n *\n * @defaultValue `true`\n */\n readonly focusOnInit = input(true, { transform: booleanAttribute });\n\n protected readonly navManager = createNavManager();\n\n protected readonly navManagerConfig: NavManagerItemConfig = {\n keys: {\n Home: this.navManager.focusFirst,\n End: this.navManager.focusLast\n }\n };\n\n /**\n * Event to be triggered when the minimum size is reached.\n *\n * @defaultValue `null`\n */\n readonly minSize = output<void>();\n\n /**\n * Event to be triggered when the maximum size is reached.\n *\n * @defaultValue `null`\n */\n readonly maxSize = output<void>();\n\n constructor() {\n const widget = callWidgetFactory(createDrawer, {\n defaultConfig: {\n className: 'inline-start',\n bodyScroll: false,\n backdrop: true,\n transition: createSimpleClassTransition({\n showClasses: ['show']\n }),\n verticalTransition: createSimpleClassTransition({\n showClasses: ['show']\n }),\n backdropTransition: fadeTransition\n },\n events: {\n onSizeChange: (size) => {\n this.size.set(size);\n this.sizeChange.emit(size);\n },\n onVisibleChange: (visible) => {\n this.visibleChange.emit(visible);\n },\n onMinimizedChange: (isMinimized) => {\n this.minimizedChange.emit(isMinimized);\n },\n onMaximizedChange: (isMaximized) => {\n this.maximizedChange.emit(isMaximized);\n },\n onResizingChange: (isResizing) => {\n this.resizingChange.emit(isResizing);\n }\n }\n });\n super(widget);\n }\n\n /**\n * Trigger the opening of the drawer.\n */\n public open(): void {\n this._agnosWidget.api.open();\n }\n\n /**\n * Trigger the closing of the drawer.\n */\n public close(): void {\n this._agnosWidget.api.close();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"design-factory-angular-drawer.mjs","sources":["../../drawer/drawer.ts","../../drawer/design-factory-angular-drawer.ts"],"sourcesContent":["import type { DrawerConfiguration, DrawerPosition, DrawerWidget } from '@agnos-ui/core/components/drawer';\nimport { createDrawer } from '@agnos-ui/core/components/drawer';\nimport type { NavManagerItemConfig } from '@agnos-ui/core/services/navManager';\nimport { createNavManager } from '@agnos-ui/core/services/navManager';\nimport { CollapseConfig, createCollapseTransition } from '@agnos-ui/core/services/transitions/collapse';\nimport { createSimpleClassTransition } from '@agnos-ui/core/services/transitions/simpleClassTransition';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n Directive,\n inject,\n input,\n model,\n output,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n AgnosWidgetDirective,\n callWidgetFactory,\n UseDirective,\n UseMultiDirective\n} from '@design-factory/angular/internals';\n\nconst fadeTransition = createSimpleClassTransition({\n animationPendingClasses: ['df-fade'],\n animationPendingShowClasses: ['df-show'],\n showClasses: ['df-show', 'df-fade'],\n hideClasses: ['df-hidden', 'df-fade']\n});\n\nconst verticalConfig: CollapseConfig = {\n dimension: 'height',\n hideClasses: ['df-collapse-hide'],\n showClasses: ['df-collapse-show'],\n animationPendingClasses: ['df-collapse-collapsing']\n};\n\nconst horizontalConfig: CollapseConfig = {\n dimension: 'width',\n hideClasses: ['df-collapse-hide'],\n showClasses: ['df-collapse-show'],\n animationPendingClasses: ['df-collapse-collapsing', 'df-collapse-horizontal']\n};\n\n/**\n * Available drawer positions.\n */\nexport type DfDrawerPosition = DrawerPosition;\n\n/**\n * Available drawer display configurations.\n * - `'overlay'`: the drawer overlays the page content with a backdrop.\n * - `'inline'`: the drawer stays in the document flow and moves content as it expands/resizes.\n */\nexport type DfDrawerConfiguration = DrawerConfiguration;\n\n/**\n * Marks an `<ng-template>` as drawer header content.\n */\n@Directive({\n selector: 'ng-template[dfDrawerHeader]'\n})\nexport class DfDrawerHeaderTemplate {\n readonly templateRef = inject(TemplateRef);\n}\n\n/**\n * Marks an `<ng-template>` as drawer body content.\n */\n@Directive({\n selector: 'ng-template[dfDrawerBody]'\n})\nexport class DfDrawerBodyTemplate {\n readonly templateRef = inject(TemplateRef);\n}\n\n/**\n * Marks an `<ng-template>` as drawer footer content.\n */\n@Directive({\n selector: 'ng-template[dfDrawerFooter]'\n})\nexport class DfDrawerFooterTemplate {\n readonly templateRef = inject(TemplateRef);\n}\n\n/**\n * Enables users to show contextual content via a sliding panel from any screen edge.\n * @experimental\n */\n@Component({\n selector: 'df-drawer',\n imports: [NgTemplateOutlet, UseDirective, UseMultiDirective],\n template: `\n @let isHidden = state.hidden();\n @let backdropHidden = state.backdropHidden();\n @if (!isHidden || keepInDom()) {\n @let isVertical = state.isVertical();\n @let drawerSize = size();\n <div\n class=\"df-drawer\"\n [class]=\"state.className()\"\n [dfUseMulti]=\"[directives.drawerPortalDirective, directives.drawerDirective]\"\n [style.--df-drawer-size]=\"drawerSize !== null ? drawerSize + 'px' : ''\"\n >\n <ng-template #defaultBodyTemplate>\n <ng-content />\n </ng-template>\n @if (hasSectionTemplates()) {\n @if (headerTemplate(); as header) {\n <div class=\"df-drawer-header\">\n <ng-template [ngTemplateOutlet]=\"header.templateRef\" />\n </div>\n }\n <div class=\"df-drawer-body\">\n @if (bodyTemplate(); as body) {\n <ng-template [ngTemplateOutlet]=\"body.templateRef\" />\n } @else {\n <ng-template [ngTemplateOutlet]=\"defaultBodyTemplate\" />\n }\n </div>\n @if (footerTemplate(); as footer) {\n <div class=\"df-drawer-footer\">\n <ng-template [ngTemplateOutlet]=\"footer.templateRef\" />\n </div>\n }\n } @else {\n <ng-template [ngTemplateOutlet]=\"defaultBodyTemplate\" />\n }\n @if (state.resizable()) {\n <div\n class=\"df-drawer-splitter\"\n tabindex=\"-1\"\n [dfUse]=\"directives.splitterDirective\"\n [style.align-items]=\"!isVertical ? 'center' : undefined\"\n [style.justify-content]=\"isVertical ? 'center' : undefined\"\n >\n <ng-content select=\"df-drawer-splitter-content\">\n <button\n #splitterHandle\n class=\"btn df-btn-icononly df-btn-tertiary df-drawer-splitter-handle\"\n [class]=\"{\n 'fa-grip-lines-vertical': !isVertical,\n 'fa-grip-lines': isVertical,\n 'df-btn-outline-neutral-mirror': !backdropHidden,\n 'btn-outline-primary': backdropHidden\n }\"\n i18n-aria-label=\"@@df.drawer.resize.ariaLabel\"\n aria-label=\"Resize drawer\"\n [dfUse]=\"[navManager.directive, navManagerConfig]\"\n ></button>\n </ng-content>\n </div>\n }\n </div>\n }\n @if (!backdropHidden) {\n <div\n class=\"df-drawer-backdrop\"\n [dfUseMulti]=\"[directives.backdropPortalDirective, directives.backdropDirective]\"\n ></div>\n }\n `,\n styles: \"@use '@design-factory/components-styles/drawer';\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class DfDrawer extends AgnosWidgetDirective<DrawerWidget> {\n protected readonly headerTemplate = contentChild(DfDrawerHeaderTemplate);\n protected readonly bodyTemplate = contentChild(DfDrawerBodyTemplate);\n protected readonly footerTemplate = contentChild(DfDrawerFooterTemplate);\n protected readonly hasSectionTemplates = computed(\n () => !!this.headerTemplate() || !!this.bodyTemplate() || !!this.footerTemplate()\n );\n\n /**\n * CSS classes to be applied on the widget main container\n *\n * @defaultValue ``\n */\n readonly className = input<string>('');\n /**\n * If `true` allows body scrolling when the drawer is open.\n *\n * @defaultValue `false`\n */\n readonly bodyScroll = input(false, { transform: booleanAttribute });\n /**\n * If `true` displays the backdrop element and disables the body scrolling, otherwise the body of the document is navigable\n *\n * @defaultValue `true`\n */\n readonly backdrop = input(true, { transform: booleanAttribute });\n /**\n * Which element should contain the drawer and backdrop DOM elements.\n * If it is not null, the drawer and backdrop DOM elements are moved to the specified container.\n * Otherwise, they stay where the widget is located.\n *\n * @defaultValue\n * ```ts\n * typeof window !== 'undefined' ? document.body : null\n * ```\n */\n readonly container = input<HTMLElement | null>(null);\n /**\n * The size of the drawer in pixels.\n *\n * @defaultValue `300`\n */\n readonly size = model<number | null>(300);\n /**\n * If `true`, the drawer can be resized by the user.\n *\n * @defaultValue `false`\n */\n readonly resizable = input(false, { transform: booleanAttribute });\n /**\n * If `true`, the drawer is shown; otherwise, it is hidden.\n *\n * @defaultValue `false`\n */\n readonly visible = input(false, { transform: booleanAttribute });\n\n /**\n * If `true`, the drawer element is kept in the DOM when it is not visible.\n * This can be useful to preserve the state of the drawer content when it is hidden.\n *\n * @defaultValue `false`\n */\n readonly keepInDom = input(false, { transform: booleanAttribute });\n\n /**\n * The display configuration of the drawer.\n * - `'overlay'` (default): the drawer overlays the page content with a backdrop.\n * - `'inline'`: the drawer stays in the document flow and moves content as it expands/resizes.\n *\n * @defaultValue `'overlay'`\n */\n readonly configuration = input<DrawerConfiguration>('overlay');\n\n /**\n * The position of the drawer on the screen.\n *\n * @defaultValue `'inline-start'`\n */\n readonly position = input<DfDrawerPosition>('inline-start');\n\n /**\n * An event emitted when the width is changed.\n *\n * Event payload is equal to the newly selected width.\n *\n * @defaultValue\n * ```ts\n * () => {}\n * ```\n */\n readonly sizeChange = output<number | null>();\n /**\n * Event to be triggered when the visible property changes.\n *\n * @param visible - new value of the visible propery\n *\n * @defaultValue\n * ```ts\n * () => {}\n * ```\n */\n readonly visibleChange = output<boolean>();\n\n /**\n * Event to be triggered when the minimized state changes.\n *\n * @defaultValue\n * ```ts\n * () => {}\n * ```\n */\n readonly minimizedChange = output<boolean>();\n\n /**\n * Event to be triggered when the maximized state changes.\n *\n * @defaultValue\n * ```ts\n * () => {}\n * ```\n */\n readonly maximizedChange = output<boolean>();\n\n /**\n * Event to be triggered when the user start or stop moving the drawer.\n *\n * @defaultValue\n * ```ts\n * () => {}\n * ```\n */\n readonly resizingChange = output<boolean>();\n\n /**\n * If `true` focuses the drawer when it is opened.\n *\n * @defaultValue `true`\n */\n readonly focusOnInit = input(true, { transform: booleanAttribute });\n\n protected readonly navManager = createNavManager();\n\n protected readonly navManagerConfig: NavManagerItemConfig = {\n keys: {\n Home: this.navManager.focusFirst,\n End: this.navManager.focusLast\n }\n };\n\n /**\n * Event to be triggered when the minimum size is reached.\n *\n * @defaultValue `null`\n */\n readonly minSize = output<void>();\n\n /**\n * Event to be triggered when the maximum size is reached.\n *\n * @defaultValue `null`\n */\n readonly maxSize = output<void>();\n\n constructor() {\n const widget = callWidgetFactory(createDrawer, {\n defaultConfig: {\n bodyScroll: false,\n backdrop: true,\n transition: createCollapseTransition(horizontalConfig),\n verticalTransition: createCollapseTransition(verticalConfig),\n backdropTransition: fadeTransition\n },\n events: {\n onSizeChange: (size) => {\n this.size.set(size);\n this.sizeChange.emit(size);\n },\n onVisibleChange: (visible) => {\n this.visibleChange.emit(visible);\n },\n onMinimizedChange: (isMinimized) => {\n this.minimizedChange.emit(isMinimized);\n },\n onMaximizedChange: (isMaximized) => {\n this.maximizedChange.emit(isMaximized);\n },\n onResizingChange: (isResizing) => {\n this.resizingChange.emit(isResizing);\n }\n }\n });\n super(widget);\n }\n\n /**\n * Trigger the opening of the drawer.\n *\n * @param animated - whether the transition should be animated. If the parameter is not defined, the `animated` is defined by the component input or the default config.\n *\n * @returns A promise that resolves once the opening transition has finished.\n */\n public open(animated?: boolean): Promise<void> {\n return this.api.open(animated);\n }\n\n /**\n * Trigger the closing of the drawer.\n *\n * @param animated - whether the transition should be animated. If the parameter is not defined, the `animated` is defined by the component input or the default config.\n *\n * @returns A promise that resolves once the closing transition has finished.\n */\n public close(animated?: boolean): Promise<void> {\n return this.api.close(animated);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}