pdm-ui-kit 0.1.50 → 0.3.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 (68) hide show
  1. package/README.md +356 -4
  2. package/esm2020/lib/components/alert-dialog/alert-dialog.component.mjs +3 -3
  3. package/esm2020/lib/components/breadcrumb/breadcrumb.component.mjs +37 -4
  4. package/esm2020/lib/components/button-group/button-group.component.mjs +208 -182
  5. package/esm2020/lib/components/calendar/calendar.component.mjs +3 -3
  6. package/esm2020/lib/components/card/card.component.mjs +36 -53
  7. package/esm2020/lib/components/combobox/combobox.component.mjs +136 -14
  8. package/esm2020/lib/components/command/command.component.mjs +3 -3
  9. package/esm2020/lib/components/context-menu/context-menu.component.mjs +121 -42
  10. package/esm2020/lib/components/data-table/data-table.component.mjs +214 -16
  11. package/esm2020/lib/components/date-picker/date-picker.component.mjs +66 -54
  12. package/esm2020/lib/components/dialog/dialog.component.mjs +171 -38
  13. package/esm2020/lib/components/draggable-table/draggable-table.component.mjs +300 -0
  14. package/esm2020/lib/components/drawer/drawer.component.mjs +123 -16
  15. package/esm2020/lib/components/dropdown-menu/dropdown-menu.component.mjs +3 -2
  16. package/esm2020/lib/components/hover-card/hover-card.component.mjs +185 -24
  17. package/esm2020/lib/components/input/input.component.mjs +15 -15
  18. package/esm2020/lib/components/input-group/input-group.component.mjs +14 -14
  19. package/esm2020/lib/components/menubar/menubar.component.mjs +105 -29
  20. package/esm2020/lib/components/navigation-menu/navigation-menu.component.mjs +25 -3
  21. package/esm2020/lib/components/pagination/pagination.component.mjs +3 -3
  22. package/esm2020/lib/components/popover/popover.component.mjs +107 -73
  23. package/esm2020/lib/components/select/select.component.mjs +26 -23
  24. package/esm2020/lib/components/sheet/sheet.component.mjs +68 -12
  25. package/esm2020/lib/components/sidebar/sidebar.component.mjs +52 -5
  26. package/esm2020/lib/components/table/table.component.mjs +165 -192
  27. package/esm2020/lib/components/tabs/tabs.component.mjs +6 -6
  28. package/esm2020/lib/components/toggle-group/toggle-group.component.mjs +6 -6
  29. package/esm2020/lib/components/tooltip/tooltip.component.mjs +162 -19
  30. package/esm2020/lib/overlay/z-index-helper.mjs +69 -0
  31. package/esm2020/lib/pdm-ui-kit.module.mjs +5 -1
  32. package/esm2020/lib/utils/responsive.mjs +143 -0
  33. package/esm2020/lib/utils/z-index.mjs +90 -0
  34. package/esm2020/public-api.mjs +67 -63
  35. package/fesm2015/pdm-ui-kit.mjs +2628 -847
  36. package/fesm2015/pdm-ui-kit.mjs.map +1 -1
  37. package/fesm2020/pdm-ui-kit.mjs +2630 -845
  38. package/fesm2020/pdm-ui-kit.mjs.map +1 -1
  39. package/lib/components/breadcrumb/breadcrumb.component.d.ts +23 -1
  40. package/lib/components/button-group/button-group.component.d.ts +8 -2
  41. package/lib/components/card/card.component.d.ts +32 -19
  42. package/lib/components/combobox/combobox.component.d.ts +20 -3
  43. package/lib/components/context-menu/context-menu.component.d.ts +17 -8
  44. package/lib/components/data-table/data-table.component.d.ts +172 -14
  45. package/lib/components/date-picker/date-picker.component.d.ts +5 -6
  46. package/lib/components/dialog/dialog.component.d.ts +38 -4
  47. package/lib/components/draggable-table/draggable-table.component.d.ts +74 -0
  48. package/lib/components/drawer/drawer.component.d.ts +65 -7
  49. package/lib/components/hover-card/hover-card.component.d.ts +27 -4
  50. package/lib/components/input/input.component.d.ts +3 -3
  51. package/lib/components/input-group/input-group.component.d.ts +1 -1
  52. package/lib/components/menubar/menubar.component.d.ts +16 -8
  53. package/lib/components/navigation-menu/navigation-menu.component.d.ts +22 -1
  54. package/lib/components/popover/popover.component.d.ts +13 -12
  55. package/lib/components/select/select.component.d.ts +4 -5
  56. package/lib/components/sheet/sheet.component.d.ts +30 -3
  57. package/lib/components/sidebar/sidebar.component.d.ts +39 -1
  58. package/lib/components/table/table.component.d.ts +47 -26
  59. package/lib/components/tabs/tabs.component.d.ts +1 -1
  60. package/lib/components/toggle-group/toggle-group.component.d.ts +1 -1
  61. package/lib/components/tooltip/tooltip.component.d.ts +21 -3
  62. package/lib/overlay/z-index-helper.d.ts +36 -0
  63. package/lib/pdm-ui-kit.module.d.ts +42 -41
  64. package/lib/utils/responsive.d.ts +107 -0
  65. package/lib/utils/z-index.d.ts +69 -0
  66. package/package.json +10 -8
  67. package/public-api.d.ts +66 -62
  68. package/src/lib/styles/tokens.css +182 -0
@@ -2,14 +2,38 @@ import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input,
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/common";
4
4
  import * as i2 from "../icon/icon.component";
5
+ /**
6
+ * Sheet/Side panel component con soporte responsive
7
+ *
8
+ * MEJORADO en v0.2.0:
9
+ * - Tamaños configurables
10
+ * - Mejor manejo de overflow
11
+ * - Responsive sizes
12
+ *
13
+ * @example
14
+ * <pdm-sheet [open]="isOpen" side="right" size="md">
15
+ * <h3>Settings</h3>
16
+ * <p>Content here</p>
17
+ * </pdm-sheet>
18
+ */
5
19
  export class PdmSheetComponent {
6
20
  constructor() {
7
21
  this.open = false;
22
+ /**
23
+ * Lado desde donde aparece el sheet
24
+ */
8
25
  this.side = 'right';
26
+ /**
27
+ * Tamaño del sheet
28
+ * - sm: 320px (side) / 40vh (top/bottom)
29
+ * - md: 400px (side) / 50vh (top/bottom) (default)
30
+ * - lg: 500px (side) / 66vh (top/bottom)
31
+ * - xl: 640px (side) / 80vh (top/bottom)
32
+ * - full: 100%
33
+ */
34
+ this.size = 'md';
9
35
  this.className = '';
10
- /** Close when the ESC key is pressed. Default: `true`. */
11
36
  this.closeOnEsc = true;
12
- /** Close when the backdrop is clicked. Default: `true`. */
13
37
  this.closeOnBackdropClick = true;
14
38
  this.openChange = new EventEmitter();
15
39
  }
@@ -27,24 +51,56 @@ export class PdmSheetComponent {
27
51
  this.openChange.emit(false);
28
52
  }
29
53
  get panelClass() {
30
- if (this.side === 'left')
31
- return 'left-0 top-0 h-full w-full max-w-[360px] border-r';
32
- if (this.side === 'top')
33
- return 'top-0 left-0 w-full border-b';
34
- if (this.side === 'bottom')
35
- return 'bottom-0 left-0 w-full border-t';
36
- return 'right-0 top-0 h-full w-full max-w-[360px] border-l';
54
+ const base = 'absolute bg-background border-border shadow-lg overflow-auto';
55
+ const position = this.getPositionClass();
56
+ const sizing = this.getSizingClass();
57
+ return `${base} ${position} ${sizing} ${this.className}`.trim();
58
+ }
59
+ getPositionClass() {
60
+ const map = {
61
+ left: 'left-0 top-0 h-full border-r',
62
+ right: 'right-0 top-0 h-full border-l',
63
+ top: 'top-0 left-0 w-full border-b',
64
+ bottom: 'bottom-0 left-0 w-full border-t'
65
+ };
66
+ return map[this.side];
67
+ }
68
+ getSizingClass() {
69
+ if (this.size === 'full') {
70
+ return 'w-full h-full';
71
+ }
72
+ const isHorizontal = this.side === 'left' || this.side === 'right';
73
+ if (isHorizontal) {
74
+ const widthMap = {
75
+ sm: 'w-full max-w-[320px] sm:max-w-[320px]',
76
+ md: 'w-full max-w-[360px] sm:max-w-[400px]',
77
+ lg: 'w-full max-w-[400px] sm:max-w-[500px]',
78
+ xl: 'w-full max-w-[500px] sm:max-w-[640px]'
79
+ };
80
+ return widthMap[this.size] || widthMap.md;
81
+ }
82
+ else {
83
+ const heightMap = {
84
+ sm: 'max-h-[40vh]',
85
+ md: 'max-h-[50vh]',
86
+ lg: 'max-h-[66vh]',
87
+ xl: 'max-h-[80vh]'
88
+ };
89
+ return heightMap[this.size] || heightMap.md;
90
+ }
37
91
  }
38
92
  }
39
93
  PdmSheetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSheetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
40
- PdmSheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmSheetComponent, selector: "pdm-sheet", inputs: { open: "open", side: "side", className: "className", closeOnEsc: "closeOnEsc", closeOnBackdropClick: "closeOnBackdropClick" }, outputs: { openChange: "openChange" }, host: { listeners: { "document:keydown.escape": "onEsc()" } }, ngImport: i0, template: "<div *ngIf=\"open\" class=\"fixed inset-0 z-50\">\n <button type=\"button\" class=\"absolute inset-0 appearance-none border-0 bg-foreground/80 p-0\" aria-label=\"Close sheet\" (click)=\"onBackdropClick()\"></button>\n\n <section [ngClass]=\"['absolute border border-border bg-background p-6 shadow-lg', panelClass, className]\" role=\"dialog\" aria-modal=\"true\">\n <button type=\"button\" class=\"absolute right-3 top-3 appearance-none rounded-sm border-0 bg-transparent p-0 opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\" (click)=\"close()\">\n <pdm-icon name=\"x\" [size]=\"16\"></pdm-icon>\n </button>\n <ng-content></ng-content>\n </section>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.PdmIconComponent, selector: "pdm-icon", inputs: ["name", "library", "assetUrl", "size", "strokeWidth", "className", "ariaLabel", "decorative"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
94
+ PdmSheetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmSheetComponent, selector: "pdm-sheet", inputs: { open: "open", side: "side", size: "size", className: "className", closeOnEsc: "closeOnEsc", closeOnBackdropClick: "closeOnBackdropClick" }, outputs: { openChange: "openChange" }, host: { listeners: { "document:keydown.escape": "onEsc()" } }, ngImport: i0, template: "<div *ngIf=\"open\" class=\"fixed inset-0 z-50\">\n <button type=\"button\" class=\"absolute inset-0 appearance-none border-0 bg-foreground/80 p-0\" aria-label=\"Close sheet\" (click)=\"onBackdropClick()\"></button>\n\n <section [ngClass]=\"['absolute z-[60] border border-border bg-background p-6 shadow-lg', panelClass, className]\" role=\"dialog\" aria-modal=\"true\">\n <button type=\"button\" class=\"absolute right-3 top-3 appearance-none rounded-sm border-0 bg-transparent p-0 opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\" (click)=\"close()\">\n <pdm-icon name=\"x\" [size]=\"16\"></pdm-icon>\n </button>\n <ng-content></ng-content>\n </section>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.PdmIconComponent, selector: "pdm-icon", inputs: ["name", "library", "assetUrl", "size", "strokeWidth", "className", "ariaLabel", "decorative"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
41
95
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSheetComponent, decorators: [{
42
96
  type: Component,
43
- args: [{ selector: 'pdm-sheet', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"open\" class=\"fixed inset-0 z-50\">\n <button type=\"button\" class=\"absolute inset-0 appearance-none border-0 bg-foreground/80 p-0\" aria-label=\"Close sheet\" (click)=\"onBackdropClick()\"></button>\n\n <section [ngClass]=\"['absolute border border-border bg-background p-6 shadow-lg', panelClass, className]\" role=\"dialog\" aria-modal=\"true\">\n <button type=\"button\" class=\"absolute right-3 top-3 appearance-none rounded-sm border-0 bg-transparent p-0 opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\" (click)=\"close()\">\n <pdm-icon name=\"x\" [size]=\"16\"></pdm-icon>\n </button>\n <ng-content></ng-content>\n </section>\n</div>\n" }]
97
+ args: [{ selector: 'pdm-sheet', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"open\" class=\"fixed inset-0 z-50\">\n <button type=\"button\" class=\"absolute inset-0 appearance-none border-0 bg-foreground/80 p-0\" aria-label=\"Close sheet\" (click)=\"onBackdropClick()\"></button>\n\n <section [ngClass]=\"['absolute z-[60] border border-border bg-background p-6 shadow-lg', panelClass, className]\" role=\"dialog\" aria-modal=\"true\">\n <button type=\"button\" class=\"absolute right-3 top-3 appearance-none rounded-sm border-0 bg-transparent p-0 opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\" (click)=\"close()\">\n <pdm-icon name=\"x\" [size]=\"16\"></pdm-icon>\n </button>\n <ng-content></ng-content>\n </section>\n</div>\n" }]
44
98
  }], propDecorators: { open: [{
45
99
  type: Input
46
100
  }], side: [{
47
101
  type: Input
102
+ }], size: [{
103
+ type: Input
48
104
  }], className: [{
49
105
  type: Input
50
106
  }], closeOnEsc: [{
@@ -57,4 +113,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
57
113
  type: HostListener,
58
114
  args: ['document:keydown.escape']
59
115
  }] } });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL3NoZWV0L3NoZWV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9zaGVldC9zaGVldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQVM5RyxNQUFNLE9BQU8saUJBQWlCO0lBTDlCO1FBTVcsU0FBSSxHQUFHLEtBQUssQ0FBQztRQUNiLFNBQUksR0FBaUIsT0FBTyxDQUFDO1FBQzdCLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFFeEIsMERBQTBEO1FBQ2pELGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDM0IsMkRBQTJEO1FBQ2xELHlCQUFvQixHQUFHLElBQUksQ0FBQztRQUUzQixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztLQTBCcEQ7SUF2QkMsS0FBSztRQUNILElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNkO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUM3QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDZDtJQUNILENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNO1lBQUUsT0FBTyxtREFBbUQsQ0FBQztRQUNyRixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSztZQUFFLE9BQU8sOEJBQThCLENBQUM7UUFDL0QsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVE7WUFBRSxPQUFPLGlDQUFpQyxDQUFDO1FBRXJFLE9BQU8sb0RBQW9ELENBQUM7SUFDOUQsQ0FBQzs7OEdBbkNVLGlCQUFpQjtrR0FBakIsaUJBQWlCLCtSQ1Q5Qiw4eEJBVUE7MkZERGEsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLFdBQVcsbUJBRUosdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsb0JBQW9CO3NCQUE1QixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBR1AsS0FBSztzQkFESixZQUFZO3VCQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCB0eXBlIFBkbVNoZWV0U2lkZSA9ICd0b3AnIHwgJ3JpZ2h0JyB8ICdib3R0b20nIHwgJ2xlZnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZG0tc2hlZXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2hlZXQuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBQZG1TaGVldENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIG9wZW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2lkZTogUGRtU2hlZXRTaWRlID0gJ3JpZ2h0JztcbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJyc7XG5cbiAgLyoqIENsb3NlIHdoZW4gdGhlIEVTQyBrZXkgaXMgcHJlc3NlZC4gRGVmYXVsdDogYHRydWVgLiAqL1xuICBASW5wdXQoKSBjbG9zZU9uRXNjID0gdHJ1ZTtcbiAgLyoqIENsb3NlIHdoZW4gdGhlIGJhY2tkcm9wIGlzIGNsaWNrZWQuIERlZmF1bHQ6IGB0cnVlYC4gKi9cbiAgQElucHV0KCkgY2xvc2VPbkJhY2tkcm9wQ2xpY2sgPSB0cnVlO1xuXG4gIEBPdXRwdXQoKSBvcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZXNjYXBlJylcbiAgb25Fc2MoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3BlbiAmJiB0aGlzLmNsb3NlT25Fc2MpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBvbkJhY2tkcm9wQ2xpY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2xvc2VPbkJhY2tkcm9wQ2xpY2spIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XG4gIH1cblxuICBnZXQgcGFuZWxDbGFzcygpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnNpZGUgPT09ICdsZWZ0JykgcmV0dXJuICdsZWZ0LTAgdG9wLTAgaC1mdWxsIHctZnVsbCBtYXgtdy1bMzYwcHhdIGJvcmRlci1yJztcbiAgICBpZiAodGhpcy5zaWRlID09PSAndG9wJykgcmV0dXJuICd0b3AtMCBsZWZ0LTAgdy1mdWxsIGJvcmRlci1iJztcbiAgICBpZiAodGhpcy5zaWRlID09PSAnYm90dG9tJykgcmV0dXJuICdib3R0b20tMCBsZWZ0LTAgdy1mdWxsIGJvcmRlci10JztcblxuICAgIHJldHVybiAncmlnaHQtMCB0b3AtMCBoLWZ1bGwgdy1mdWxsIG1heC13LVszNjBweF0gYm9yZGVyLWwnO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwib3BlblwiIGNsYXNzPVwiZml4ZWQgaW5zZXQtMCB6LTUwXCI+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYWJzb2x1dGUgaW5zZXQtMCBhcHBlYXJhbmNlLW5vbmUgYm9yZGVyLTAgYmctZm9yZWdyb3VuZC84MCBwLTBcIiBhcmlhLWxhYmVsPVwiQ2xvc2Ugc2hlZXRcIiAoY2xpY2spPVwib25CYWNrZHJvcENsaWNrKClcIj48L2J1dHRvbj5cblxuICA8c2VjdGlvbiBbbmdDbGFzc109XCJbJ2Fic29sdXRlIGJvcmRlciBib3JkZXItYm9yZGVyIGJnLWJhY2tncm91bmQgcC02IHNoYWRvdy1sZycsIHBhbmVsQ2xhc3MsIGNsYXNzTmFtZV1cIiByb2xlPVwiZGlhbG9nXCIgYXJpYS1tb2RhbD1cInRydWVcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImFic29sdXRlIHJpZ2h0LTMgdG9wLTMgYXBwZWFyYW5jZS1ub25lIHJvdW5kZWQtc20gYm9yZGVyLTAgYmctdHJhbnNwYXJlbnQgcC0wIG9wYWNpdHktNzAgcmluZy1vZmZzZXQtYmFja2dyb3VuZCB0cmFuc2l0aW9uLW9wYWNpdHkgaG92ZXI6b3BhY2l0eS0xMDAgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLXJpbmcgZm9jdXM6cmluZy1vZmZzZXQtMiBkaXNhYmxlZDpwb2ludGVyLWV2ZW50cy1ub25lXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgIDxwZG0taWNvbiBuYW1lPVwieFwiIFtzaXplXT1cIjE2XCI+PC9wZG0taWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvc2VjdGlvbj5cbjwvZGl2PlxuIl19
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL3NoZWV0L3NoZWV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9zaGVldC9zaGVldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQUs5Rzs7Ozs7Ozs7Ozs7OztHQWFHO0FBTUgsTUFBTSxPQUFPLGlCQUFpQjtJQUw5QjtRQU1XLFNBQUksR0FBRyxLQUFLLENBQUM7UUFFdEI7O1dBRUc7UUFDTSxTQUFJLEdBQWlCLE9BQU8sQ0FBQztRQUV0Qzs7Ozs7OztXQU9HO1FBQ00sU0FBSSxHQUFpQixJQUFJLENBQUM7UUFFMUIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIseUJBQW9CLEdBQUcsSUFBSSxDQUFDO1FBRTNCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0tBK0RwRDtJQTVEQyxLQUFLO1FBQ0gsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDaEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQzdCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNkO0lBQ0gsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osTUFBTSxJQUFJLEdBQUcsOERBQThELENBQUM7UUFDNUUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDekMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXJDLE9BQU8sR0FBRyxJQUFJLElBQUksUUFBUSxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEUsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixNQUFNLEdBQUcsR0FBaUM7WUFDeEMsSUFBSSxFQUFFLDhCQUE4QjtZQUNwQyxLQUFLLEVBQUUsK0JBQStCO1lBQ3RDLEdBQUcsRUFBRSw4QkFBOEI7WUFDbkMsTUFBTSxFQUFFLGlDQUFpQztTQUMxQyxDQUFDO1FBRUYsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFTyxjQUFjO1FBQ3BCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7WUFDeEIsT0FBTyxlQUFlLENBQUM7U0FDeEI7UUFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQztRQUVuRSxJQUFJLFlBQVksRUFBRTtZQUNoQixNQUFNLFFBQVEsR0FBRztnQkFDZixFQUFFLEVBQUUsdUNBQXVDO2dCQUMzQyxFQUFFLEVBQUUsdUNBQXVDO2dCQUMzQyxFQUFFLEVBQUUsdUNBQXVDO2dCQUMzQyxFQUFFLEVBQUUsdUNBQXVDO2FBQzVDLENBQUM7WUFDRixPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLEVBQUUsQ0FBQztTQUMzQzthQUFNO1lBQ0wsTUFBTSxTQUFTLEdBQUc7Z0JBQ2hCLEVBQUUsRUFBRSxjQUFjO2dCQUNsQixFQUFFLEVBQUUsY0FBYztnQkFDbEIsRUFBRSxFQUFFLGNBQWM7Z0JBQ2xCLEVBQUUsRUFBRSxjQUFjO2FBQ25CLENBQUM7WUFDRixPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQztTQUM3QztJQUNILENBQUM7OzhHQXBGVSxpQkFBaUI7a0dBQWpCLGlCQUFpQiw2U0N4QjlCLHF5QkFVQTsyRkRjYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsV0FBVyxtQkFFSix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBS0csSUFBSTtzQkFBWixLQUFLO2dCQVVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBR1AsS0FBSztzQkFESixZQUFZO3VCQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCB0eXBlIFBkbVNoZWV0U2lkZSA9ICd0b3AnIHwgJ3JpZ2h0JyB8ICdib3R0b20nIHwgJ2xlZnQnO1xuZXhwb3J0IHR5cGUgUGRtU2hlZXRTaXplID0gJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ3hsJyB8ICdmdWxsJztcblxuLyoqXG4gKiBTaGVldC9TaWRlIHBhbmVsIGNvbXBvbmVudCBjb24gc29wb3J0ZSByZXNwb25zaXZlXG4gKiBcbiAqIE1FSk9SQURPIGVuIHYwLjIuMDpcbiAqIC0gVGFtYcOxb3MgY29uZmlndXJhYmxlc1xuICogLSBNZWpvciBtYW5lam8gZGUgb3ZlcmZsb3dcbiAqIC0gUmVzcG9uc2l2ZSBzaXplc1xuICogXG4gKiBAZXhhbXBsZVxuICogPHBkbS1zaGVldCBbb3Blbl09XCJpc09wZW5cIiBzaWRlPVwicmlnaHRcIiBzaXplPVwibWRcIj5cbiAqICAgPGgzPlNldHRpbmdzPC9oMz5cbiAqICAgPHA+Q29udGVudCBoZXJlPC9wPlxuICogPC9wZG0tc2hlZXQ+XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BkbS1zaGVldCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zaGVldC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFBkbVNoZWV0Q29tcG9uZW50IHtcbiAgQElucHV0KCkgb3BlbiA9IGZhbHNlO1xuICBcbiAgLyoqXG4gICAqIExhZG8gZGVzZGUgZG9uZGUgYXBhcmVjZSBlbCBzaGVldFxuICAgKi9cbiAgQElucHV0KCkgc2lkZTogUGRtU2hlZXRTaWRlID0gJ3JpZ2h0JztcbiAgXG4gIC8qKlxuICAgKiBUYW1hw7FvIGRlbCBzaGVldFxuICAgKiAtIHNtOiAzMjBweCAoc2lkZSkgLyA0MHZoICh0b3AvYm90dG9tKVxuICAgKiAtIG1kOiA0MDBweCAoc2lkZSkgLyA1MHZoICh0b3AvYm90dG9tKSAoZGVmYXVsdClcbiAgICogLSBsZzogNTAwcHggKHNpZGUpIC8gNjZ2aCAodG9wL2JvdHRvbSlcbiAgICogLSB4bDogNjQwcHggKHNpZGUpIC8gODB2aCAodG9wL2JvdHRvbSlcbiAgICogLSBmdWxsOiAxMDAlXG4gICAqL1xuICBASW5wdXQoKSBzaXplOiBQZG1TaGVldFNpemUgPSAnbWQnO1xuICBcbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJyc7XG4gIEBJbnB1dCgpIGNsb3NlT25Fc2MgPSB0cnVlO1xuICBASW5wdXQoKSBjbG9zZU9uQmFja2Ryb3BDbGljayA9IHRydWU7XG5cbiAgQE91dHB1dCgpIG9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnKVxuICBvbkVzYygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vcGVuICYmIHRoaXMuY2xvc2VPbkVzYykge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uQmFja2Ryb3BDbGljaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jbG9zZU9uQmFja2Ryb3BDbGljaykge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMub3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgfVxuXG4gIGdldCBwYW5lbENsYXNzKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYmFzZSA9ICdhYnNvbHV0ZSBiZy1iYWNrZ3JvdW5kIGJvcmRlci1ib3JkZXIgc2hhZG93LWxnIG92ZXJmbG93LWF1dG8nO1xuICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5nZXRQb3NpdGlvbkNsYXNzKCk7XG4gICAgY29uc3Qgc2l6aW5nID0gdGhpcy5nZXRTaXppbmdDbGFzcygpO1xuICAgIFxuICAgIHJldHVybiBgJHtiYXNlfSAke3Bvc2l0aW9ufSAke3NpemluZ30gJHt0aGlzLmNsYXNzTmFtZX1gLnRyaW0oKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UG9zaXRpb25DbGFzcygpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1hcDogUmVjb3JkPFBkbVNoZWV0U2lkZSwgc3RyaW5nPiA9IHtcbiAgICAgIGxlZnQ6ICdsZWZ0LTAgdG9wLTAgaC1mdWxsIGJvcmRlci1yJyxcbiAgICAgIHJpZ2h0OiAncmlnaHQtMCB0b3AtMCBoLWZ1bGwgYm9yZGVyLWwnLFxuICAgICAgdG9wOiAndG9wLTAgbGVmdC0wIHctZnVsbCBib3JkZXItYicsXG4gICAgICBib3R0b206ICdib3R0b20tMCBsZWZ0LTAgdy1mdWxsIGJvcmRlci10J1xuICAgIH07XG4gICAgXG4gICAgcmV0dXJuIG1hcFt0aGlzLnNpZGVdO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTaXppbmdDbGFzcygpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnNpemUgPT09ICdmdWxsJykge1xuICAgICAgcmV0dXJuICd3LWZ1bGwgaC1mdWxsJztcbiAgICB9XG5cbiAgICBjb25zdCBpc0hvcml6b250YWwgPSB0aGlzLnNpZGUgPT09ICdsZWZ0JyB8fCB0aGlzLnNpZGUgPT09ICdyaWdodCc7XG4gICAgXG4gICAgaWYgKGlzSG9yaXpvbnRhbCkge1xuICAgICAgY29uc3Qgd2lkdGhNYXAgPSB7XG4gICAgICAgIHNtOiAndy1mdWxsIG1heC13LVszMjBweF0gc206bWF4LXctWzMyMHB4XScsXG4gICAgICAgIG1kOiAndy1mdWxsIG1heC13LVszNjBweF0gc206bWF4LXctWzQwMHB4XScsXG4gICAgICAgIGxnOiAndy1mdWxsIG1heC13LVs0MDBweF0gc206bWF4LXctWzUwMHB4XScsXG4gICAgICAgIHhsOiAndy1mdWxsIG1heC13LVs1MDBweF0gc206bWF4LXctWzY0MHB4XSdcbiAgICAgIH07XG4gICAgICByZXR1cm4gd2lkdGhNYXBbdGhpcy5zaXplXSB8fCB3aWR0aE1hcC5tZDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaGVpZ2h0TWFwID0ge1xuICAgICAgICBzbTogJ21heC1oLVs0MHZoXScsXG4gICAgICAgIG1kOiAnbWF4LWgtWzUwdmhdJyxcbiAgICAgICAgbGc6ICdtYXgtaC1bNjZ2aF0nLFxuICAgICAgICB4bDogJ21heC1oLVs4MHZoXSdcbiAgICAgIH07XG4gICAgICByZXR1cm4gaGVpZ2h0TWFwW3RoaXMuc2l6ZV0gfHwgaGVpZ2h0TWFwLm1kO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cIm9wZW5cIiBjbGFzcz1cImZpeGVkIGluc2V0LTAgei01MFwiPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImFic29sdXRlIGluc2V0LTAgYXBwZWFyYW5jZS1ub25lIGJvcmRlci0wIGJnLWZvcmVncm91bmQvODAgcC0wXCIgYXJpYS1sYWJlbD1cIkNsb3NlIHNoZWV0XCIgKGNsaWNrKT1cIm9uQmFja2Ryb3BDbGljaygpXCI+PC9idXR0b24+XG5cbiAgPHNlY3Rpb24gW25nQ2xhc3NdPVwiWydhYnNvbHV0ZSB6LVs2MF0gYm9yZGVyIGJvcmRlci1ib3JkZXIgYmctYmFja2dyb3VuZCBwLTYgc2hhZG93LWxnJywgcGFuZWxDbGFzcywgY2xhc3NOYW1lXVwiIHJvbGU9XCJkaWFsb2dcIiBhcmlhLW1vZGFsPVwidHJ1ZVwiPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYWJzb2x1dGUgcmlnaHQtMyB0b3AtMyBhcHBlYXJhbmNlLW5vbmUgcm91bmRlZC1zbSBib3JkZXItMCBiZy10cmFuc3BhcmVudCBwLTAgb3BhY2l0eS03MCByaW5nLW9mZnNldC1iYWNrZ3JvdW5kIHRyYW5zaXRpb24tb3BhY2l0eSBob3ZlcjpvcGFjaXR5LTEwMCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctcmluZyBmb2N1czpyaW5nLW9mZnNldC0yIGRpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmVcIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxuICAgICAgPHBkbS1pY29uIG5hbWU9XCJ4XCIgW3NpemVdPVwiMTZcIj48L3BkbS1pY29uPlxuICAgIDwvYnV0dG9uPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9zZWN0aW9uPlxuPC9kaXY+XG4iXX0=
@@ -1,20 +1,67 @@
1
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/common";
4
+ /**
5
+ * Sidebar component - Navegación lateral responsive
6
+ *
7
+ * MEJORAS en v0.2.0:
8
+ * - Mobile drawer mode: overlay fullscreen en mobile, sidebar fijo en desktop
9
+ * - Sidebar mode: sidebar persistente con widths responsive
10
+ * - Backdrop automático en mobile drawer mode
11
+ *
12
+ * @example
13
+ * <!-- Mobile drawer (default) -->
14
+ * <pdm-sidebar [open]="sidebarOpen" (openChange)="sidebarOpen = $event">
15
+ * <nav>Menu items...</nav>
16
+ * </pdm-sidebar>
17
+ *
18
+ * <!-- Sidebar persistente -->
19
+ * <pdm-sidebar mobileMode="sidebar" [collapsed]="collapsed">
20
+ * <nav>Menu items...</nav>
21
+ * </pdm-sidebar>
22
+ */
4
23
  export class PdmSidebarComponent {
5
24
  constructor() {
25
+ /**
26
+ * Mobile behavior: 'drawer' (overlay) o 'sidebar' (persistente)
27
+ * @default 'drawer'
28
+ */
29
+ this.mobileMode = 'drawer';
30
+ /**
31
+ * Collapsed state (solo aplica en mobileMode="sidebar")
32
+ */
6
33
  this.collapsed = false;
34
+ /**
35
+ * Open state (solo aplica en mobileMode="drawer")
36
+ */
37
+ this.open = false;
7
38
  this.className = '';
39
+ /**
40
+ * Emite cuando el drawer se cierra (solo en mobileMode="drawer")
41
+ */
42
+ this.openChange = new EventEmitter();
43
+ }
44
+ onBackdropClick() {
45
+ if (this.mobileMode === 'drawer') {
46
+ this.open = false;
47
+ this.openChange.emit(false);
48
+ }
8
49
  }
9
50
  }
10
51
  PdmSidebarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSidebarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11
- PdmSidebarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmSidebarComponent, selector: "pdm-sidebar", inputs: { collapsed: "collapsed", className: "className" }, ngImport: i0, template: "<aside [ngClass]=\"['h-full border-r border-border bg-background transition-all', collapsed ? 'w-14' : 'w-64', className]\">\n <ng-content></ng-content>\n</aside>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
52
+ PdmSidebarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmSidebarComponent, selector: "pdm-sidebar", inputs: { mobileMode: "mobileMode", collapsed: "collapsed", open: "open", className: "className" }, outputs: { openChange: "openChange" }, ngImport: i0, template: "<!-- Mobile drawer mode -->\n<ng-container *ngIf=\"mobileMode === 'drawer'\">\n <!-- Backdrop -->\n <div\n *ngIf=\"open\"\n class=\"fixed inset-0 z-40 bg-black/50 lg:hidden\"\n (click)=\"onBackdropClick()\"\n ></div>\n \n <!-- Drawer -->\n <aside\n [ngClass]=\"[\n 'fixed inset-y-0 left-0 z-50 h-full w-64 transform border-r border-border bg-background transition-transform duration-300 lg:relative lg:z-auto lg:translate-x-0',\n open ? 'translate-x-0' : '-translate-x-full',\n className\n ]\"\n >\n <ng-content></ng-content>\n </aside>\n</ng-container>\n\n<!-- Sidebar persistente mode -->\n<aside\n *ngIf=\"mobileMode === 'sidebar'\"\n [ngClass]=\"[\n 'h-full border-r border-border bg-background transition-all',\n collapsed ? 'w-14 sm:w-14' : 'w-48 sm:w-56 lg:w-64',\n className\n ]\"\n>\n <ng-content></ng-content>\n</aside>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12
53
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmSidebarComponent, decorators: [{
13
54
  type: Component,
14
- args: [{ selector: 'pdm-sidebar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<aside [ngClass]=\"['h-full border-r border-border bg-background transition-all', collapsed ? 'w-14' : 'w-64', className]\">\n <ng-content></ng-content>\n</aside>\n" }]
15
- }], propDecorators: { collapsed: [{
55
+ args: [{ selector: 'pdm-sidebar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Mobile drawer mode -->\n<ng-container *ngIf=\"mobileMode === 'drawer'\">\n <!-- Backdrop -->\n <div\n *ngIf=\"open\"\n class=\"fixed inset-0 z-40 bg-black/50 lg:hidden\"\n (click)=\"onBackdropClick()\"\n ></div>\n \n <!-- Drawer -->\n <aside\n [ngClass]=\"[\n 'fixed inset-y-0 left-0 z-50 h-full w-64 transform border-r border-border bg-background transition-transform duration-300 lg:relative lg:z-auto lg:translate-x-0',\n open ? 'translate-x-0' : '-translate-x-full',\n className\n ]\"\n >\n <ng-content></ng-content>\n </aside>\n</ng-container>\n\n<!-- Sidebar persistente mode -->\n<aside\n *ngIf=\"mobileMode === 'sidebar'\"\n [ngClass]=\"[\n 'h-full border-r border-border bg-background transition-all',\n collapsed ? 'w-14 sm:w-14' : 'w-48 sm:w-56 lg:w-64',\n className\n ]\"\n>\n <ng-content></ng-content>\n</aside>\n" }]
56
+ }], propDecorators: { mobileMode: [{
57
+ type: Input
58
+ }], collapsed: [{
59
+ type: Input
60
+ }], open: [{
16
61
  type: Input
17
62
  }], className: [{
18
63
  type: Input
64
+ }], openChange: [{
65
+ type: Output
19
66
  }] } });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvc2lkZWJhci9zaWRlYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9zaWRlYmFyL3NpZGViYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU8xRSxNQUFNLE9BQU8sbUJBQW1CO0lBTGhDO1FBTVcsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixjQUFTLEdBQUcsRUFBRSxDQUFDO0tBQ3pCOztnSEFIWSxtQkFBbUI7b0dBQW5CLG1CQUFtQiwrR0NQaEMsdUtBR0E7MkZESWEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGFBQWEsbUJBRU4sdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRtLXNpZGViYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc2lkZWJhci5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFBkbVNpZGViYXJDb21wb25lbnQge1xuICBASW5wdXQoKSBjb2xsYXBzZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJyc7XG59XG4iLCI8YXNpZGUgW25nQ2xhc3NdPVwiWydoLWZ1bGwgYm9yZGVyLXIgYm9yZGVyLWJvcmRlciBiZy1iYWNrZ3JvdW5kIHRyYW5zaXRpb24tYWxsJywgY29sbGFwc2VkID8gJ3ctMTQnIDogJ3ctNjQnLCBjbGFzc05hbWVdXCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvYXNpZGU+XG4iXX0=
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvc2lkZWJhci9zaWRlYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9zaWRlYmFyL3NpZGViYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBSWhHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFNSCxNQUFNLE9BQU8sbUJBQW1CO0lBTGhDO1FBTUU7OztXQUdHO1FBQ00sZUFBVSxHQUF5QixRQUFRLENBQUM7UUFFckQ7O1dBRUc7UUFDTSxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRTNCOztXQUVHO1FBQ00sU0FBSSxHQUFHLEtBQUssQ0FBQztRQUViLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFFeEI7O1dBRUc7UUFDTyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztLQVFwRDtJQU5DLGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssUUFBUSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzdCO0lBQ0gsQ0FBQzs7Z0hBN0JVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLDhMQzVCaEMsdTNCQWdDQTsyRkRKYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsYUFBYSxtQkFFTix1QkFBdUIsQ0FBQyxNQUFNOzhCQU90QyxVQUFVO3NCQUFsQixLQUFLO2dCQUtHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBS0csSUFBSTtzQkFBWixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBS0ksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBQZG1TaWRlYmFyTW9iaWxlTW9kZSA9ICdkcmF3ZXInIHwgJ3NpZGViYXInO1xuXG4vKipcbiAqIFNpZGViYXIgY29tcG9uZW50IC0gTmF2ZWdhY2nDs24gbGF0ZXJhbCByZXNwb25zaXZlXG4gKiBcbiAqIE1FSk9SQVMgZW4gdjAuMi4wOlxuICogLSBNb2JpbGUgZHJhd2VyIG1vZGU6IG92ZXJsYXkgZnVsbHNjcmVlbiBlbiBtb2JpbGUsIHNpZGViYXIgZmlqbyBlbiBkZXNrdG9wXG4gKiAtIFNpZGViYXIgbW9kZTogc2lkZWJhciBwZXJzaXN0ZW50ZSBjb24gd2lkdGhzIHJlc3BvbnNpdmVcbiAqIC0gQmFja2Ryb3AgYXV0b23DoXRpY28gZW4gbW9iaWxlIGRyYXdlciBtb2RlXG4gKiBcbiAqIEBleGFtcGxlXG4gKiA8IS0tIE1vYmlsZSBkcmF3ZXIgKGRlZmF1bHQpIC0tPlxuICogPHBkbS1zaWRlYmFyIFtvcGVuXT1cInNpZGViYXJPcGVuXCIgKG9wZW5DaGFuZ2UpPVwic2lkZWJhck9wZW4gPSAkZXZlbnRcIj5cbiAqICAgPG5hdj5NZW51IGl0ZW1zLi4uPC9uYXY+XG4gKiA8L3BkbS1zaWRlYmFyPlxuICogXG4gKiA8IS0tIFNpZGViYXIgcGVyc2lzdGVudGUgLS0+XG4gKiA8cGRtLXNpZGViYXIgbW9iaWxlTW9kZT1cInNpZGViYXJcIiBbY29sbGFwc2VkXT1cImNvbGxhcHNlZFwiPlxuICogICA8bmF2Pk1lbnUgaXRlbXMuLi48L25hdj5cbiAqIDwvcGRtLXNpZGViYXI+XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BkbS1zaWRlYmFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZGViYXIuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBQZG1TaWRlYmFyQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIE1vYmlsZSBiZWhhdmlvcjogJ2RyYXdlcicgKG92ZXJsYXkpIG8gJ3NpZGViYXInIChwZXJzaXN0ZW50ZSlcbiAgICogQGRlZmF1bHQgJ2RyYXdlcidcbiAgICovXG4gIEBJbnB1dCgpIG1vYmlsZU1vZGU6IFBkbVNpZGViYXJNb2JpbGVNb2RlID0gJ2RyYXdlcic7XG4gIFxuICAvKipcbiAgICogQ29sbGFwc2VkIHN0YXRlIChzb2xvIGFwbGljYSBlbiBtb2JpbGVNb2RlPVwic2lkZWJhclwiKVxuICAgKi9cbiAgQElucHV0KCkgY29sbGFwc2VkID0gZmFsc2U7XG4gIFxuICAvKipcbiAgICogT3BlbiBzdGF0ZSAoc29sbyBhcGxpY2EgZW4gbW9iaWxlTW9kZT1cImRyYXdlclwiKVxuICAgKi9cbiAgQElucHV0KCkgb3BlbiA9IGZhbHNlO1xuICBcbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJyc7XG4gIFxuICAvKipcbiAgICogRW1pdGUgY3VhbmRvIGVsIGRyYXdlciBzZSBjaWVycmEgKHNvbG8gZW4gbW9iaWxlTW9kZT1cImRyYXdlclwiKVxuICAgKi9cbiAgQE91dHB1dCgpIG9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIFxuICBvbkJhY2tkcm9wQ2xpY2soKSB7XG4gICAgaWYgKHRoaXMubW9iaWxlTW9kZSA9PT0gJ2RyYXdlcicpIHtcbiAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgdGhpcy5vcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgIH1cbiAgfVxufVxuIiwiPCEtLSBNb2JpbGUgZHJhd2VyIG1vZGUgLS0+XG48bmctY29udGFpbmVyICpuZ0lmPVwibW9iaWxlTW9kZSA9PT0gJ2RyYXdlcidcIj5cbiAgPCEtLSBCYWNrZHJvcCAtLT5cbiAgPGRpdlxuICAgICpuZ0lmPVwib3BlblwiXG4gICAgY2xhc3M9XCJmaXhlZCBpbnNldC0wIHotNDAgYmctYmxhY2svNTAgbGc6aGlkZGVuXCJcbiAgICAoY2xpY2spPVwib25CYWNrZHJvcENsaWNrKClcIlxuICA+PC9kaXY+XG4gIFxuICA8IS0tIERyYXdlciAtLT5cbiAgPGFzaWRlXG4gICAgW25nQ2xhc3NdPVwiW1xuICAgICAgJ2ZpeGVkIGluc2V0LXktMCBsZWZ0LTAgei01MCBoLWZ1bGwgdy02NCB0cmFuc2Zvcm0gYm9yZGVyLXIgYm9yZGVyLWJvcmRlciBiZy1iYWNrZ3JvdW5kIHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTMwMCBsZzpyZWxhdGl2ZSBsZzp6LWF1dG8gbGc6dHJhbnNsYXRlLXgtMCcsXG4gICAgICBvcGVuID8gJ3RyYW5zbGF0ZS14LTAnIDogJy10cmFuc2xhdGUteC1mdWxsJyxcbiAgICAgIGNsYXNzTmFtZVxuICAgIF1cIlxuICA+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2FzaWRlPlxuPC9uZy1jb250YWluZXI+XG5cbjwhLS0gU2lkZWJhciBwZXJzaXN0ZW50ZSBtb2RlIC0tPlxuPGFzaWRlXG4gICpuZ0lmPVwibW9iaWxlTW9kZSA9PT0gJ3NpZGViYXInXCJcbiAgW25nQ2xhc3NdPVwiW1xuICAgICdoLWZ1bGwgYm9yZGVyLXIgYm9yZGVyLWJvcmRlciBiZy1iYWNrZ3JvdW5kIHRyYW5zaXRpb24tYWxsJyxcbiAgICBjb2xsYXBzZWQgPyAndy0xNCBzbTp3LTE0JyA6ICd3LTQ4IHNtOnctNTYgbGc6dy02NCcsXG4gICAgY2xhc3NOYW1lXG4gIF1cIlxuPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2FzaWRlPlxuIl19