@bootkit/ng0 0.0.0-alpha.6 → 0.0.0-alpha.8

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.
@@ -0,0 +1,8 @@
1
+ import * as i0 from '@angular/core';
2
+
3
+ declare class BackdropComponent {
4
+ static ɵfac: i0.ɵɵFactoryDeclaration<BackdropComponent, never>;
5
+ static ɵcmp: i0.ɵɵComponentDeclaration<BackdropComponent, "ng0-backdrop", never, {}, {}, never, never, true, never>;
6
+ }
7
+
8
+ export { BackdropComponent };
@@ -0,0 +1,46 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { OnInit, OnDestroy, EventEmitter, ViewContainerRef, ElementRef, Renderer2, QueryList } from '@angular/core';
3
+
4
+ type SidenavMode = 'push' | 'over';
5
+ type SidenavPosition = 'start' | 'end';
6
+
7
+ declare class SidenavComponent implements OnInit, OnDestroy {
8
+ private _vcr;
9
+ private _elmentRef;
10
+ private _renderer;
11
+ open: _angular_core.InputSignal<boolean>;
12
+ mode: _angular_core.InputSignal<SidenavMode>;
13
+ hasBackdrop: _angular_core.InputSignal<boolean>;
14
+ position: _angular_core.InputSignal<SidenavPosition>;
15
+ sidenavWidth: _angular_core.InputSignal<number>;
16
+ fixedInViewport: _angular_core.InputSignal<boolean>;
17
+ backdropClick: EventEmitter<MouseEvent>;
18
+ private _backdropRef?;
19
+ private _backdropClickHandlerUnlisten?;
20
+ constructor(_vcr: ViewContainerRef, _elmentRef: ElementRef, _renderer: Renderer2);
21
+ ngOnInit(): void;
22
+ ngOnDestroy(): void;
23
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SidenavComponent, never>;
24
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SidenavComponent, "ng0-sidenav", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "sidenavWidth": { "alias": "sidenavWidth"; "required": true; "isSignal": true; }; "fixedInViewport": { "alias": "fixedInViewport"; "required": false; "isSignal": true; }; }, { "backdropClick": "backdropClick"; }, never, ["*"], true, never>;
25
+ }
26
+
27
+ declare class SidenavContainerComponent implements OnInit {
28
+ backdropClick: EventEmitter<any>;
29
+ protected sidenavs: QueryList<SidenavComponent>;
30
+ protected _floatAside: boolean;
31
+ protected _contentPaddingStart: _angular_core.Signal<string>;
32
+ protected _contentPaddingEnd: _angular_core.Signal<string>;
33
+ constructor();
34
+ ngOnInit(): void;
35
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SidenavContainerComponent, never>;
36
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SidenavContainerComponent, "ng0-sidenav-container", never, {}, { "backdropClick": "backdropClick"; }, ["sidenavs"], ["*"], true, never>;
37
+ }
38
+
39
+ declare class SidenavModule {
40
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SidenavModule, never>;
41
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<SidenavModule, never, [typeof SidenavContainerComponent, typeof SidenavComponent], [typeof SidenavContainerComponent, typeof SidenavComponent]>;
42
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<SidenavModule>;
43
+ }
44
+
45
+ export { SidenavComponent, SidenavContainerComponent, SidenavModule };
46
+ export type { SidenavMode, SidenavPosition };
@@ -0,0 +1,41 @@
1
+ import * as i0 from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { trigger, transition, style, animate } from '@angular/animations';
4
+
5
+ class BackdropComponent {
6
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BackdropComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: BackdropComponent, isStandalone: true, selector: "ng0-backdrop", host: { properties: { "@fade": "" } }, ngImport: i0, template: '', isInline: true, styles: [":host{position:absolute;inset:0;background-color:#00000080}\n"], animations: [
8
+ trigger('fade', [
9
+ transition(':enter', [
10
+ style({ opacity: 0 }),
11
+ animate('150ms ease', style({ opacity: 1 })),
12
+ ]),
13
+ transition(':leave', [
14
+ animate('150ms ease', style({ opacity: 0 })),
15
+ ]),
16
+ ]),
17
+ ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BackdropComponent, decorators: [{
20
+ type: Component,
21
+ args: [{ selector: 'ng0-backdrop', template: '', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, animations: [
22
+ trigger('fade', [
23
+ transition(':enter', [
24
+ style({ opacity: 0 }),
25
+ animate('150ms ease', style({ opacity: 1 })),
26
+ ]),
27
+ transition(':leave', [
28
+ animate('150ms ease', style({ opacity: 0 })),
29
+ ]),
30
+ ]),
31
+ ], host: {
32
+ '[@fade]': '', // Binds the animation trigger to the host
33
+ }, styles: [":host{position:absolute;inset:0;background-color:#00000080}\n"] }]
34
+ }] });
35
+
36
+ /**
37
+ * Generated bundle index. Do not edit.
38
+ */
39
+
40
+ export { BackdropComponent };
41
+ //# sourceMappingURL=bootkit-ng0-components-backdrop.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootkit-ng0-components-backdrop.mjs","sources":["../../../projects/ng0/components/backdrop/backdrop.component.ts","../../../projects/ng0/components/backdrop/bootkit-ng0-components-backdrop.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\r\nimport {\r\n trigger,\r\n transition,\r\n style,\r\n animate,\r\n} from '@angular/animations';\r\n\r\n@Component({\r\n selector: 'ng0-backdrop',\r\n template: '',\r\n styleUrl: 'backdrop.component.css',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [\r\n trigger('fade', [\r\n transition(':enter', [\r\n style({ opacity: 0 }),\r\n animate('150ms ease', style({ opacity: 1 })),\r\n ]),\r\n transition(':leave', [\r\n animate('150ms ease', style({ opacity: 0 })),\r\n ]),\r\n ]),\r\n ],\r\n host: {\r\n '[@fade]': '', // Binds the animation trigger to the host\r\n }\r\n})\r\nexport class BackdropComponent {}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MA6Ba,iBAAiB,CAAA;uGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnBlB,EAAE,EAIA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+DAAA,CAAA,EAAA,UAAA,EAAA;YACV,OAAO,CAAC,MAAM,EAAE;gBACd,UAAU,CAAC,QAAQ,EAAE;AACnB,oBAAA,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;oBACrB,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;iBAC7C,CAAC;gBACF,UAAU,CAAC,QAAQ,EAAE;oBACnB,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;iBAC7C,CAAC;aACH,CAAC;AACH,SAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAKU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBArB7B,SAAS;+BACE,cAAc,EAAA,QAAA,EACd,EAAE,EAEA,UAAA,EAAA,IAAI,mBACC,uBAAuB,CAAC,MAAM,EACnC,UAAA,EAAA;wBACV,OAAO,CAAC,MAAM,EAAE;4BACd,UAAU,CAAC,QAAQ,EAAE;AACnB,gCAAA,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;gCACrB,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;6BAC7C,CAAC;4BACF,UAAU,CAAC,QAAQ,EAAE;gCACnB,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;6BAC7C,CAAC;yBACH,CAAC;qBACH,EACK,IAAA,EAAA;wBACJ,SAAS,EAAE,EAAE;AACd,qBAAA,EAAA,MAAA,EAAA,CAAA,+DAAA,CAAA,EAAA;;;AC3BH;;AAEG;;;;"}
@@ -0,0 +1,132 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, EventEmitter, effect, Output, Component, computed, HostBinding, ContentChildren, NgModule } from '@angular/core';
3
+ import { CommonModule } from '@angular/common';
4
+ import { BackdropComponent } from '@bootkit/ng0/components/backdrop';
5
+
6
+ class SidenavComponent {
7
+ _vcr;
8
+ _elmentRef;
9
+ _renderer;
10
+ open = input(true);
11
+ mode = input('push');
12
+ hasBackdrop = input(true);
13
+ position = input('start');
14
+ sidenavWidth = input.required();
15
+ fixedInViewport = input(false);
16
+ backdropClick = new EventEmitter();
17
+ _backdropRef;
18
+ _backdropClickHandlerUnlisten;
19
+ constructor(_vcr, _elmentRef, _renderer) {
20
+ this._vcr = _vcr;
21
+ this._elmentRef = _elmentRef;
22
+ this._renderer = _renderer;
23
+ effect(() => {
24
+ var hasBackdrop = this.hasBackdrop();
25
+ var mode = this.mode();
26
+ var open = this.open();
27
+ if (mode == 'over' && hasBackdrop) {
28
+ if (open) {
29
+ this._backdropRef = this._vcr.createComponent(BackdropComponent, {});
30
+ const backdropElm = this._backdropRef.location.nativeElement;
31
+ this._backdropClickHandlerUnlisten = _renderer.listen(backdropElm, 'click', (e) => {
32
+ this.backdropClick.emit(e);
33
+ });
34
+ // Move backdrop element before Host element
35
+ const hostElm = this._elmentRef.nativeElement;
36
+ const parentElm = hostElm.parentNode;
37
+ this._renderer.insertBefore(parentElm, backdropElm, hostElm);
38
+ }
39
+ else {
40
+ this._backdropRef?.destroy();
41
+ }
42
+ }
43
+ });
44
+ }
45
+ ngOnInit() {
46
+ }
47
+ ngOnDestroy() {
48
+ this._backdropClickHandlerUnlisten?.();
49
+ }
50
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SidenavComponent, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
51
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.0.6", type: SidenavComponent, isStandalone: true, selector: "ng0-sidenav", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, hasBackdrop: { classPropertyName: "hasBackdrop", publicName: "hasBackdrop", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, sidenavWidth: { classPropertyName: "sidenavWidth", publicName: "sidenavWidth", isSignal: true, isRequired: true, transformFunction: null }, fixedInViewport: { classPropertyName: "fixedInViewport", publicName: "fixedInViewport", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { backdropClick: "backdropClick" }, host: { properties: { "style.width": "sidenavWidth() + 'px'", "class.ng0-sidenav-start": "position() == 'start'", "class.ng0-sidenav-end": "position() == 'end'", "class.ng0-sidenav-open": "open()", "class.ng0-sidenav-fixed": "fixedInViewport()" } }, providers: [], ngImport: i0, template: "<ng-content></ng-content>\r\n\r\n<!-- @if(open() && mode() == 'over' && hasBackdrop()) {\r\n<div class=\"ng0-sidenav-backdrop\"></div>\r\n} -->", styles: [":host{position:absolute;top:0;bottom:0;transition:transform .1s ease-in-out;overflow-x:hidden}:host.ng0-sidenav-fixed{position:fixed!important}:host.ng0-sidenav-start{inset-inline-start:0;transform:translate(-100%)}:dir(rtl) :host.ng0-sidenav-start,body[dir=rtl] :host.ng0-sidenav-start{transform:translate(100%)}:host.ng0-sidenav-start.ng0-sidenav-open{transform:translate(0)!important}:host.ng0-sidenav-end{inset-inline-end:0;transform:translate(100%)}:dir(rtl) :host.ng0-sidenav-end,body[dir=rtl] :host.ng0-sidenav-end{transform:translate(-100%)}:host.ng0-sidenav-end.ng0-sidenav-open{transform:translate(0)!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
52
+ }
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SidenavComponent, decorators: [{
54
+ type: Component,
55
+ args: [{ selector: 'ng0-sidenav', providers: [], standalone: true, imports: [
56
+ CommonModule,
57
+ ], host: {
58
+ "[style.width]": "sidenavWidth() + 'px'",
59
+ "[class.ng0-sidenav-start]": "position() == 'start'",
60
+ "[class.ng0-sidenav-end]": "position() == 'end'",
61
+ "[class.ng0-sidenav-open]": "open()",
62
+ "[class.ng0-sidenav-fixed]": "fixedInViewport()",
63
+ }, template: "<ng-content></ng-content>\r\n\r\n<!-- @if(open() && mode() == 'over' && hasBackdrop()) {\r\n<div class=\"ng0-sidenav-backdrop\"></div>\r\n} -->", styles: [":host{position:absolute;top:0;bottom:0;transition:transform .1s ease-in-out;overflow-x:hidden}:host.ng0-sidenav-fixed{position:fixed!important}:host.ng0-sidenav-start{inset-inline-start:0;transform:translate(-100%)}:dir(rtl) :host.ng0-sidenav-start,body[dir=rtl] :host.ng0-sidenav-start{transform:translate(100%)}:host.ng0-sidenav-start.ng0-sidenav-open{transform:translate(0)!important}:host.ng0-sidenav-end{inset-inline-end:0;transform:translate(100%)}:dir(rtl) :host.ng0-sidenav-end,body[dir=rtl] :host.ng0-sidenav-end{transform:translate(-100%)}:host.ng0-sidenav-end.ng0-sidenav-open{transform:translate(0)!important}\n"] }]
64
+ }], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { backdropClick: [{
65
+ type: Output
66
+ }] } });
67
+
68
+ class SidenavContainerComponent {
69
+ backdropClick = new EventEmitter();
70
+ sidenavs;
71
+ _floatAside = false;
72
+ _contentPaddingStart = computed(() => {
73
+ let widths = this.sidenavs.filter(x => x.open() && x.position() == 'start' && x.mode() == 'push').map(x => x.sidenavWidth());
74
+ return widths.length == 0 ? '0' : `${Math.max(...widths)}px`;
75
+ });
76
+ _contentPaddingEnd = computed(() => {
77
+ let widths = this.sidenavs.filter(x => x.open() && x.position() == 'end' && x.mode() == 'push').map(x => x.sidenavWidth());
78
+ return widths.length == 0 ? '0' : `${Math.max(...widths)}px`;
79
+ });
80
+ constructor() {
81
+ }
82
+ ngOnInit() {
83
+ }
84
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SidenavContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
85
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: SidenavContainerComponent, isStandalone: true, selector: "ng0-sidenav-container", outputs: { backdropClick: "backdropClick" }, host: { properties: { "style.padding-inline-start": "_contentPaddingStart()", "style.padding-inline-end": "_contentPaddingEnd()", "class.float-aside": "this._floatAside" } }, providers: [], queries: [{ propertyName: "sidenavs", predicate: SidenavComponent }], ngImport: i0, template: "<ng-content></ng-content>\r\n", styles: [":host{position:relative;transition:padding .1s;display:block;overflow-x:hidden}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
86
+ }
87
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SidenavContainerComponent, decorators: [{
88
+ type: Component,
89
+ args: [{ selector: 'ng0-sidenav-container', providers: [], standalone: true, imports: [
90
+ CommonModule,
91
+ ], host: {
92
+ "[style.padding-inline-start]": "_contentPaddingStart()",
93
+ "[style.padding-inline-end]": "_contentPaddingEnd()",
94
+ }, template: "<ng-content></ng-content>\r\n", styles: [":host{position:relative;transition:padding .1s;display:block;overflow-x:hidden}\n"] }]
95
+ }], ctorParameters: () => [], propDecorators: { backdropClick: [{
96
+ type: Output
97
+ }], sidenavs: [{
98
+ type: ContentChildren,
99
+ args: [SidenavComponent]
100
+ }], _floatAside: [{
101
+ type: HostBinding,
102
+ args: ['class.float-aside']
103
+ }] } });
104
+
105
+ class SidenavModule {
106
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SidenavModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
107
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.6", ngImport: i0, type: SidenavModule, imports: [SidenavContainerComponent,
108
+ SidenavComponent], exports: [SidenavContainerComponent,
109
+ SidenavComponent] });
110
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SidenavModule, imports: [SidenavContainerComponent,
111
+ SidenavComponent] });
112
+ }
113
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: SidenavModule, decorators: [{
114
+ type: NgModule,
115
+ args: [{
116
+ imports: [
117
+ SidenavContainerComponent,
118
+ SidenavComponent
119
+ ],
120
+ exports: [
121
+ SidenavContainerComponent,
122
+ SidenavComponent
123
+ ]
124
+ }]
125
+ }] });
126
+
127
+ /**
128
+ * Generated bundle index. Do not edit.
129
+ */
130
+
131
+ export { SidenavComponent, SidenavContainerComponent, SidenavModule };
132
+ //# sourceMappingURL=bootkit-ng0-components-sidenav.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootkit-ng0-components-sidenav.mjs","sources":["../../../projects/ng0/components/sidenav/sidenav.component.ts","../../../projects/ng0/components/sidenav/sidenav.component.html","../../../projects/ng0/components/sidenav/sidenav-container.component.ts","../../../projects/ng0/components/sidenav/sidenav-container.component.html","../../../projects/ng0/components/sidenav/sidenav.module.ts","../../../projects/ng0/components/sidenav/bootkit-ng0-components-sidenav.ts"],"sourcesContent":["import { Component, ComponentRef, effect, ElementRef, EventEmitter, input, OnDestroy, OnInit, Output, Renderer2, ViewContainerRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SidenavMode, SidenavPosition } from './types';\r\nimport { BackdropComponent } from '@bootkit/ng0/components/backdrop';\r\n\r\n@Component({\r\n selector: 'ng0-sidenav',\r\n templateUrl: './sidenav.component.html',\r\n styleUrls: ['./sidenav.component.scss'],\r\n providers: [],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ],\r\n host: {\r\n \"[style.width]\": \"sidenavWidth() + 'px'\",\r\n \"[class.ng0-sidenav-start]\": \"position() == 'start'\",\r\n \"[class.ng0-sidenav-end]\": \"position() == 'end'\",\r\n \"[class.ng0-sidenav-open]\": \"open()\",\r\n \"[class.ng0-sidenav-fixed]\": \"fixedInViewport()\",\r\n }\r\n})\r\nexport class SidenavComponent implements OnInit, OnDestroy {\r\n public open = input(true);\r\n public mode = input<SidenavMode>('push');\r\n public hasBackdrop = input(true);\r\n public position = input<SidenavPosition>('start');\r\n public sidenavWidth = input.required<number>();\r\n public fixedInViewport = input(false);\r\n @Output() public backdropClick = new EventEmitter<MouseEvent>();\r\n private _backdropRef?: ComponentRef<any>;\r\n private _backdropClickHandlerUnlisten?: () => void;\r\n\r\n\r\n constructor(private _vcr: ViewContainerRef, private _elmentRef: ElementRef, private _renderer: Renderer2) {\r\n effect(() => {\r\n var hasBackdrop = this.hasBackdrop();\r\n var mode = this.mode();\r\n var open = this.open();\r\n\r\n if (mode == 'over' && hasBackdrop) {\r\n\r\n if (open) {\r\n this._backdropRef = this._vcr.createComponent(BackdropComponent, {});\r\n const backdropElm = this._backdropRef.location.nativeElement;\r\n this._backdropClickHandlerUnlisten = _renderer.listen(backdropElm, 'click', (e) => {\r\n this.backdropClick.emit(e);\r\n });\r\n\r\n // Move backdrop element before Host element\r\n const hostElm = this._elmentRef.nativeElement;\r\n const parentElm = hostElm.parentNode;\r\n this._renderer.insertBefore(parentElm, backdropElm, hostElm);\r\n } else {\r\n this._backdropRef?.destroy();\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._backdropClickHandlerUnlisten?.();\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n\r\n<!-- @if(open() && mode() == 'over' && hasBackdrop()) {\r\n<div class=\"ng0-sidenav-backdrop\"></div>\r\n} -->","import { Component, computed, ContentChildren, EventEmitter, HostBinding, OnInit, Output, QueryList } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SidenavComponent } from './sidenav.component';\r\n\r\n@Component({\r\n selector: 'ng0-sidenav-container',\r\n templateUrl: './sidenav-container.component.html',\r\n styleUrls: ['./sidenav-container.component.scss'],\r\n providers: [],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ],\r\n host: {\r\n \"[style.padding-inline-start]\": \"_contentPaddingStart()\",\r\n \"[style.padding-inline-end]\": \"_contentPaddingEnd()\",\r\n }\r\n})\r\nexport class SidenavContainerComponent implements OnInit {\r\n\r\n @Output() backdropClick = new EventEmitter();\r\n @ContentChildren(SidenavComponent) protected sidenavs!: QueryList<SidenavComponent>;\r\n\r\n @HostBinding('class.float-aside')\r\n protected _floatAside = false;\r\n\r\n protected _contentPaddingStart = computed(() => {\r\n let widths = this.sidenavs.filter(x => x.open() && x.position() == 'start' && x.mode() == 'push').map(x => x.sidenavWidth());\r\n return widths.length == 0 ? '0' : `${Math.max(...widths)}px`;\r\n });\r\n\r\n protected _contentPaddingEnd = computed(() => {\r\n let widths = this.sidenavs.filter(x => x.open() && x.position() == 'end' && x.mode() == 'push').map(x => x.sidenavWidth());\r\n return widths.length == 0 ? '0' : `${Math.max(...widths)}px`;\r\n });\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\nimport { SidenavContainerComponent } from './sidenav-container.component';\r\nimport { SidenavComponent } from './sidenav.component';\r\n\r\n@NgModule({\r\n imports: [\r\n SidenavContainerComponent,\r\n SidenavComponent\r\n ],\r\n exports: [\r\n SidenavContainerComponent,\r\n SidenavComponent\r\n ]\r\n})\r\nexport class SidenavModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -266,7 +266,7 @@ class TableComponent {
266
266
  this._changeSubscription?.unsubscribe();
267
267
  }
268
268
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TableComponent, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
269
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: TableComponent, isStandalone: true, selector: "ng0-table", inputs: { source: { classPropertyName: "source", publicName: "source", isSignal: true, isRequired: true, transformFunction: null }, autoLoad: { classPropertyName: "autoLoad", publicName: "autoLoad", isSignal: true, isRequired: false, transformFunction: null }, showRowNumbers: { classPropertyName: "showRowNumbers", publicName: "showRowNumbers", isSignal: true, isRequired: false, transformFunction: null }, showHeader: { classPropertyName: "showHeader", publicName: "showHeader", isSignal: true, isRequired: false, transformFunction: null }, pagable: { classPropertyName: "pagable", publicName: "pagable", isSignal: true, isRequired: false, transformFunction: null }, showPagination: { classPropertyName: "showPagination", publicName: "showPagination", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, pageIndex: { classPropertyName: "pageIndex", publicName: "pageIndex", isSignal: true, isRequired: false, transformFunction: null }, tableClass: { classPropertyName: "tableClass", publicName: "tableClass", isSignal: true, isRequired: false, transformFunction: null }, headerClass: { classPropertyName: "headerClass", publicName: "headerClass", isSignal: true, isRequired: false, transformFunction: null }, caption: { classPropertyName: "caption", publicName: "caption", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, filterable: { classPropertyName: "filterable", publicName: "filterable", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "_detailRow", first: true, predicate: TableDetailRowDirective, descendants: true }, { propertyName: "_columns", predicate: TableColumnDirective }], exportAs: ["ng0Table"], ngImport: i0, template: "<div class=\"table-responsive\" [style.height]=\"height()\" [class.table-scrollable]=\"height()! > 0\">\r\n <table class=\"table\" [ngClass]=\"tableClass()\">\r\n @if(caption()) {\r\n <caption>{{caption()}}</caption>\r\n }\r\n\r\n <thead *ngIf=\"showHeader\" [ngClass]=\"headerClass()\">\r\n <tr>\r\n <th *ngIf=\"_detailRow\"></th>\r\n <th *ngIf=\"showRowNumbers()\" class=\"row-number text-muted\">#</th>\r\n <th *ngFor=\"let col of _columns\">{{col.title}}</th>\r\n </tr>\r\n </thead>\r\n <thead *ngIf=\"filterable()\">\r\n <tr>\r\n <th *ngIf=\"_detailRow\"></th>\r\n\r\n @if(showRowNumbers()) {\r\n <th></th>\r\n }\r\n\r\n <th *ngFor=\"let col of _columns\">\r\n @if(col.filterable) {\r\n @if(col.type == 'text') {\r\n <input [name]=\"'datatablecol-' + col.field\"\r\n type=\"text\"\r\n [maxlength]=\"50\"\r\n class=\"form-control form-control-sm\"\r\n [(ngModel)]=\"col.filterValue\"\r\n (keydown.enter)=\"reload()\">\r\n }@else if(col.type == 'number') {\r\n <input [name]=\"'datatablecol-' + col.field\"\r\n type=\"number\"\r\n class=\"form-control form-control-sm\"\r\n [(ngModel)]=\"col.filterValue\"\r\n (keydown.enter)=\"reload()\">\r\n }\r\n }\r\n </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n <ng-container *ngIf=\"_data && _data.length! > 0\">\r\n <ng-container *ngFor=\"let row of _data; let i=index\">\r\n <tr [class.table-active]=\"isRowExpanded(row)\">\r\n <td class=\"detail-row-expander\" *ngIf=\"_detailRow\">\r\n <button class=\"btn\" (click)=\"onToggleRowDetailClick(row)\"\r\n *ngIf=\"_detailRow.showCallback == null || _detailRow.showCallback(row)\">\r\n <ng-template [ngIf]=\"isRowExpanded(row)\" [ngIfElse]=\"collapse\"><i\r\n class=\"far fa-minus\"></i></ng-template>\r\n <ng-template #collapse><i class=\"far fa-plus\"></i> </ng-template>\r\n </button>\r\n </td>\r\n\r\n <td class=\"row-number text-muted\" *ngIf=\"showRowNumbers()\">{{pageSize() * pageIndex() + i + 1}}</td>\r\n\r\n <td *ngFor=\"let col of _columns\" [ngClass]=\"col.cellClass\" [class.shrinked]=\"col.shrink\"\r\n [class.fw-bold]=\"col.bold\">\r\n @if(col.template){\r\n <ng-template [ngIf]=\"col.template\">\r\n <ng-container\r\n *ngTemplateOutlet=\"col.template; context: {$implicit: row}\"></ng-container>\r\n </ng-template>\r\n }@else if(col.field){\r\n @let cellValue = _getCellValue(row, col);\r\n <div\r\n [class.badge]=\"col.badge\"\r\n [class.text-bg-primary]=\"col.badge?.primary && cellValue === col.badge?.primary\"\r\n [class.text-bg-secondary]=\"col.badge?.secondary && cellValue === col.badge?.secondary\"\r\n [class.text-bg-success]=\"col.badge?.success && cellValue === col.badge?.success\"\r\n [class.text-bg-light]=\"col.badge && cellValue !== col.badge.success && cellValue !== col.badge.secondary && cellValue !== col.badge.success \">\r\n\r\n <ng-container *ngIf=\"col.type=='text'\">\r\n {{cellValue}}\r\n </ng-container>\r\n <ng-container *ngIf=\"col.type=='date'\">\r\n <span class=\"date-time\">{{cellValue | ng0Date}}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"col.type=='number'\">\r\n {{cellValue | number}}\r\n </ng-container>\r\n <ng-container *ngIf=\"col.type=='currency'\">\r\n {{cellValue | number}}\r\n </ng-container>\r\n <ng-container *ngIf=\"$any(col?.type)?.enum\">\r\n {{cellValue | ng0Enum:$any(col.type).enum}}\r\n </ng-container>\r\n <!-- <ng-container *ngIf=\"$any(col?.type)?.boolean\">\r\n {{cellValue | ng0Bool:$any(col.type).boolean}}\r\n </ng-container> -->\r\n <ng-container *ngIf=\"$any(col?.type)?.currency\">\r\n {{cellValue | currency:$any(col?.type)?.currency}}\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"cellValue == null && col.emptyCellText\">\r\n {{col.emptyCellText}}\r\n </ng-container>\r\n\r\n\r\n </div>\r\n }\r\n </td>\r\n </tr>\r\n\r\n <tr class=\"detail-row\" *ngIf=\"_detailRow && isRowExpanded(row)\">\r\n <td [attr.colspan]=\"_columns.length + (showRowNumbers() ? 1 : 0) + 1\" class=\"ps-2 pb-4\">\r\n <ng-container\r\n *ngTemplateOutlet=\"_detailRow.templateRef; context: {$implicit: row}\"></ng-container>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n <tr *ngIf=\"_data?.length === 0\">\r\n <td [colSpan]=\"_columns.length + (showRowNumbers() ? 1 : 0)\" class=\"text-center text-muted small p-2\">\r\n {{'noRecords' | ng0Translate}}\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"_dataSource.loading\" class=\"loading-row\">\r\n <td [colSpan]=\"_columns.length + (showRowNumbers() ? 1 : 0)\" class=\"text-center\">\r\n <div class=\"spinner-border text-primary\" role=\"status\"></div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<!-- <ng0-table-paging></ng0-table-paging> -->\r\n\r\n<!-- <div class=\"mt-auto\" *ngIf=\"pagination()\">\r\n <div class=\"btn-group me-2\" role=\"group\">\r\n <button type=\"button\"\r\n class=\"btn btn-outline-primary\"\r\n (click)=\"onPreviousPageClick()\"\r\n [disabled]=\"loading || pageIndex() == 0\">\r\n {{'previous' | ng0Translate}}\r\n </button>\r\n <button type=\"button\"\r\n class=\"btn btn-outline-primary\"\r\n (click)=\"onNextPageClick()\"\r\n [disabled]=\"loading || !_totalPages || (pageIndex() == _totalPages-1)\">\r\n {{'next' | ng0Translate}}\r\n </button>\r\n </div>\r\n\r\n <span *ngIf=\"_totalPages\">\r\n {{_formatString( 'dataTablePagination' | ng0Translate, pageIndex()+1, _totalPages) }}\r\n </span>\r\n</div> -->", styles: [":host{display:flex;flex-direction:column;position:relative}td.row-number{width:0}td.shrinked{width:0;white-space:nowrap}tr.loading-row{position:absolute;inset:0;background-color:#00000014;transition:background-color 1s;z-index:1000}tr.loading-row td{border:none;height:100%;display:flex;justify-content:center;align-items:center}.table-scrollable{overflow-y:auto;direction:ltr;scroll-padding:20px}.table-scrollable::-webkit-scrollbar{width:8px}.table-scrollable::-webkit-scrollbar-track{background-color:#00000008}.table-scrollable::-webkit-scrollbar-thumb{background-color:var(--bs-secondary)}.table-scrollable thead th{position:sticky;top:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "pipe", type: i1.CurrencyPipe, name: "currency" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i3.TranslatePipe, name: "ng0Translate" }, { kind: "pipe", type: i3.EnumPipe, name: "ng0Enum" }, { kind: "pipe", type: i3.DatePipe, name: "ng0Date" }] });
269
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: TableComponent, isStandalone: true, selector: "ng0-table", inputs: { source: { classPropertyName: "source", publicName: "source", isSignal: true, isRequired: true, transformFunction: null }, autoLoad: { classPropertyName: "autoLoad", publicName: "autoLoad", isSignal: true, isRequired: false, transformFunction: null }, showRowNumbers: { classPropertyName: "showRowNumbers", publicName: "showRowNumbers", isSignal: true, isRequired: false, transformFunction: null }, showHeader: { classPropertyName: "showHeader", publicName: "showHeader", isSignal: true, isRequired: false, transformFunction: null }, pagable: { classPropertyName: "pagable", publicName: "pagable", isSignal: true, isRequired: false, transformFunction: null }, showPagination: { classPropertyName: "showPagination", publicName: "showPagination", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, pageIndex: { classPropertyName: "pageIndex", publicName: "pageIndex", isSignal: true, isRequired: false, transformFunction: null }, tableClass: { classPropertyName: "tableClass", publicName: "tableClass", isSignal: true, isRequired: false, transformFunction: null }, headerClass: { classPropertyName: "headerClass", publicName: "headerClass", isSignal: true, isRequired: false, transformFunction: null }, caption: { classPropertyName: "caption", publicName: "caption", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, filterable: { classPropertyName: "filterable", publicName: "filterable", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "_detailRow", first: true, predicate: TableDetailRowDirective, descendants: true }, { propertyName: "_columns", predicate: TableColumnDirective }], exportAs: ["ng0Table"], ngImport: i0, template: "<div class=\"table-responsive\" [style.height]=\"height()\" [class.table-scrollable]=\"height()! > 0\">\r\n <table class=\"table\" [ngClass]=\"tableClass()\">\r\n @if(caption()) {\r\n <caption>{{caption()}}</caption>\r\n }\r\n\r\n <thead *ngIf=\"showHeader\" [ngClass]=\"headerClass()\">\r\n <tr>\r\n <th *ngIf=\"_detailRow\"></th>\r\n <th *ngIf=\"showRowNumbers()\" class=\"row-number text-muted\">#</th>\r\n <th *ngFor=\"let col of _columns\">{{col.title}}</th>\r\n </tr>\r\n </thead>\r\n <thead *ngIf=\"filterable()\">\r\n <tr>\r\n <th *ngIf=\"_detailRow\"></th>\r\n\r\n @if(showRowNumbers()) {\r\n <th></th>\r\n }\r\n\r\n <th *ngFor=\"let col of _columns\">\r\n @if(col.filterable) {\r\n @if(col.type == 'text') {\r\n <input [name]=\"'datatablecol-' + col.field\"\r\n type=\"text\"\r\n [maxlength]=\"50\"\r\n class=\"form-control form-control-sm\"\r\n [(ngModel)]=\"col.filterValue\"\r\n (keydown.enter)=\"reload()\">\r\n }@else if(col.type == 'number') {\r\n <input [name]=\"'datatablecol-' + col.field\"\r\n type=\"number\"\r\n class=\"form-control form-control-sm\"\r\n [(ngModel)]=\"col.filterValue\"\r\n (keydown.enter)=\"reload()\">\r\n }\r\n }\r\n </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n <ng-container *ngIf=\"_data && _data.length! > 0\">\r\n <ng-container *ngFor=\"let row of _data; let i=index\">\r\n <tr [class.table-active]=\"isRowExpanded(row)\">\r\n <td class=\"detail-row-expander\" *ngIf=\"_detailRow\">\r\n <button class=\"btn\" (click)=\"onToggleRowDetailClick(row)\"\r\n *ngIf=\"_detailRow.showCallback == null || _detailRow.showCallback(row)\">\r\n <ng-template [ngIf]=\"isRowExpanded(row)\" [ngIfElse]=\"collapse\"><i\r\n class=\"far fa-minus\"></i></ng-template>\r\n <ng-template #collapse><i class=\"far fa-plus\"></i> </ng-template>\r\n </button>\r\n </td>\r\n\r\n <td class=\"row-number text-muted\" *ngIf=\"showRowNumbers()\">{{pageSize() * pageIndex() + i + 1}}</td>\r\n\r\n <td *ngFor=\"let col of _columns\" [ngClass]=\"col.cellClass\" [class.shrinked]=\"col.shrink\"\r\n [class.fw-bold]=\"col.bold\">\r\n @if(col.template){\r\n <ng-template [ngIf]=\"col.template\">\r\n <ng-container\r\n *ngTemplateOutlet=\"col.template; context: {$implicit: row}\"></ng-container>\r\n </ng-template>\r\n }@else if(col.field){\r\n @let cellValue = _getCellValue(row, col);\r\n <div\r\n [class.badge]=\"col.badge\"\r\n [class.text-bg-primary]=\"col.badge?.primary && cellValue === col.badge?.primary\"\r\n [class.text-bg-secondary]=\"col.badge?.secondary && cellValue === col.badge?.secondary\"\r\n [class.text-bg-success]=\"col.badge?.success && cellValue === col.badge?.success\"\r\n [class.text-bg-light]=\"col.badge && cellValue !== col.badge.success && cellValue !== col.badge.secondary && cellValue !== col.badge.success \">\r\n\r\n <ng-container *ngIf=\"col.type=='text'\">\r\n {{cellValue}}\r\n </ng-container>\r\n <ng-container *ngIf=\"col.type=='date'\">\r\n <span class=\"date-time\">{{cellValue | ng0Date}}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"col.type=='number'\">\r\n {{cellValue | number}}\r\n </ng-container>\r\n <ng-container *ngIf=\"col.type=='currency'\">\r\n {{cellValue | number}}\r\n </ng-container>\r\n <ng-container *ngIf=\"$any(col?.type)?.enum\">\r\n {{cellValue | ng0TranslateEnum:$any(col.type).enum}}\r\n </ng-container>\r\n <!-- <ng-container *ngIf=\"$any(col?.type)?.boolean\">\r\n {{cellValue | ng0Bool:$any(col.type).boolean}}\r\n </ng-container> -->\r\n <ng-container *ngIf=\"$any(col?.type)?.currency\">\r\n {{cellValue | currency:$any(col?.type)?.currency}}\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"cellValue == null && col.emptyCellText\">\r\n {{col.emptyCellText}}\r\n </ng-container>\r\n\r\n\r\n </div>\r\n }\r\n </td>\r\n </tr>\r\n\r\n <tr class=\"detail-row\" *ngIf=\"_detailRow && isRowExpanded(row)\">\r\n <td [attr.colspan]=\"_columns.length + (showRowNumbers() ? 1 : 0) + 1\" class=\"ps-2 pb-4\">\r\n <ng-container\r\n *ngTemplateOutlet=\"_detailRow.templateRef; context: {$implicit: row}\"></ng-container>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n <tr *ngIf=\"_data?.length === 0\">\r\n <td [colSpan]=\"_columns.length + (showRowNumbers() ? 1 : 0)\" class=\"text-center text-muted small p-2\">\r\n {{'noRecords' | ng0Translate}}\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"_dataSource.loading\" class=\"loading-row\">\r\n <td [colSpan]=\"_columns.length + (showRowNumbers() ? 1 : 0)\" class=\"text-center\">\r\n <div class=\"spinner-border text-primary\" role=\"status\"></div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<!-- <ng0-table-paging></ng0-table-paging> -->\r\n\r\n<!-- <div class=\"mt-auto\" *ngIf=\"pagination()\">\r\n <div class=\"btn-group me-2\" role=\"group\">\r\n <button type=\"button\"\r\n class=\"btn btn-outline-primary\"\r\n (click)=\"onPreviousPageClick()\"\r\n [disabled]=\"loading || pageIndex() == 0\">\r\n {{'previous' | ng0Translate}}\r\n </button>\r\n <button type=\"button\"\r\n class=\"btn btn-outline-primary\"\r\n (click)=\"onNextPageClick()\"\r\n [disabled]=\"loading || !_totalPages || (pageIndex() == _totalPages-1)\">\r\n {{'next' | ng0Translate}}\r\n </button>\r\n </div>\r\n\r\n <span *ngIf=\"_totalPages\">\r\n {{_formatString( 'dataTablePagination' | ng0Translate, pageIndex()+1, _totalPages) }}\r\n </span>\r\n</div> -->", styles: [":host{display:flex;flex-direction:column;position:relative}td.row-number{width:0}td.shrinked{width:0;white-space:nowrap}tr.loading-row{position:absolute;inset:0;background-color:#00000014;transition:background-color 1s;z-index:1000}tr.loading-row td{border:none;height:100%;display:flex;justify-content:center;align-items:center}.table-scrollable{overflow-y:auto;direction:ltr;scroll-padding:20px}.table-scrollable::-webkit-scrollbar{width:8px}.table-scrollable::-webkit-scrollbar-track{background-color:#00000008}.table-scrollable::-webkit-scrollbar-thumb{background-color:var(--bs-secondary)}.table-scrollable thead th{position:sticky;top:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "pipe", type: i1.CurrencyPipe, name: "currency" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i3.TranslatePipe, name: "ng0Translate" }, { kind: "pipe", type: i3.TranslateEnumPipe, name: "ng0TranslateEnum" }, { kind: "pipe", type: i3.DatePipe, name: "ng0Date" }] });
270
270
  }
271
271
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: TableComponent, decorators: [{
272
272
  type: Component,
@@ -275,7 +275,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
275
275
  FormsModule,
276
276
  LocalizationModule,
277
277
  TablePagingComponent
278
- ], template: "<div class=\"table-responsive\" [style.height]=\"height()\" [class.table-scrollable]=\"height()! > 0\">\r\n <table class=\"table\" [ngClass]=\"tableClass()\">\r\n @if(caption()) {\r\n <caption>{{caption()}}</caption>\r\n }\r\n\r\n <thead *ngIf=\"showHeader\" [ngClass]=\"headerClass()\">\r\n <tr>\r\n <th *ngIf=\"_detailRow\"></th>\r\n <th *ngIf=\"showRowNumbers()\" class=\"row-number text-muted\">#</th>\r\n <th *ngFor=\"let col of _columns\">{{col.title}}</th>\r\n </tr>\r\n </thead>\r\n <thead *ngIf=\"filterable()\">\r\n <tr>\r\n <th *ngIf=\"_detailRow\"></th>\r\n\r\n @if(showRowNumbers()) {\r\n <th></th>\r\n }\r\n\r\n <th *ngFor=\"let col of _columns\">\r\n @if(col.filterable) {\r\n @if(col.type == 'text') {\r\n <input [name]=\"'datatablecol-' + col.field\"\r\n type=\"text\"\r\n [maxlength]=\"50\"\r\n class=\"form-control form-control-sm\"\r\n [(ngModel)]=\"col.filterValue\"\r\n (keydown.enter)=\"reload()\">\r\n }@else if(col.type == 'number') {\r\n <input [name]=\"'datatablecol-' + col.field\"\r\n type=\"number\"\r\n class=\"form-control form-control-sm\"\r\n [(ngModel)]=\"col.filterValue\"\r\n (keydown.enter)=\"reload()\">\r\n }\r\n }\r\n </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n <ng-container *ngIf=\"_data && _data.length! > 0\">\r\n <ng-container *ngFor=\"let row of _data; let i=index\">\r\n <tr [class.table-active]=\"isRowExpanded(row)\">\r\n <td class=\"detail-row-expander\" *ngIf=\"_detailRow\">\r\n <button class=\"btn\" (click)=\"onToggleRowDetailClick(row)\"\r\n *ngIf=\"_detailRow.showCallback == null || _detailRow.showCallback(row)\">\r\n <ng-template [ngIf]=\"isRowExpanded(row)\" [ngIfElse]=\"collapse\"><i\r\n class=\"far fa-minus\"></i></ng-template>\r\n <ng-template #collapse><i class=\"far fa-plus\"></i> </ng-template>\r\n </button>\r\n </td>\r\n\r\n <td class=\"row-number text-muted\" *ngIf=\"showRowNumbers()\">{{pageSize() * pageIndex() + i + 1}}</td>\r\n\r\n <td *ngFor=\"let col of _columns\" [ngClass]=\"col.cellClass\" [class.shrinked]=\"col.shrink\"\r\n [class.fw-bold]=\"col.bold\">\r\n @if(col.template){\r\n <ng-template [ngIf]=\"col.template\">\r\n <ng-container\r\n *ngTemplateOutlet=\"col.template; context: {$implicit: row}\"></ng-container>\r\n </ng-template>\r\n }@else if(col.field){\r\n @let cellValue = _getCellValue(row, col);\r\n <div\r\n [class.badge]=\"col.badge\"\r\n [class.text-bg-primary]=\"col.badge?.primary && cellValue === col.badge?.primary\"\r\n [class.text-bg-secondary]=\"col.badge?.secondary && cellValue === col.badge?.secondary\"\r\n [class.text-bg-success]=\"col.badge?.success && cellValue === col.badge?.success\"\r\n [class.text-bg-light]=\"col.badge && cellValue !== col.badge.success && cellValue !== col.badge.secondary && cellValue !== col.badge.success \">\r\n\r\n <ng-container *ngIf=\"col.type=='text'\">\r\n {{cellValue}}\r\n </ng-container>\r\n <ng-container *ngIf=\"col.type=='date'\">\r\n <span class=\"date-time\">{{cellValue | ng0Date}}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"col.type=='number'\">\r\n {{cellValue | number}}\r\n </ng-container>\r\n <ng-container *ngIf=\"col.type=='currency'\">\r\n {{cellValue | number}}\r\n </ng-container>\r\n <ng-container *ngIf=\"$any(col?.type)?.enum\">\r\n {{cellValue | ng0Enum:$any(col.type).enum}}\r\n </ng-container>\r\n <!-- <ng-container *ngIf=\"$any(col?.type)?.boolean\">\r\n {{cellValue | ng0Bool:$any(col.type).boolean}}\r\n </ng-container> -->\r\n <ng-container *ngIf=\"$any(col?.type)?.currency\">\r\n {{cellValue | currency:$any(col?.type)?.currency}}\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"cellValue == null && col.emptyCellText\">\r\n {{col.emptyCellText}}\r\n </ng-container>\r\n\r\n\r\n </div>\r\n }\r\n </td>\r\n </tr>\r\n\r\n <tr class=\"detail-row\" *ngIf=\"_detailRow && isRowExpanded(row)\">\r\n <td [attr.colspan]=\"_columns.length + (showRowNumbers() ? 1 : 0) + 1\" class=\"ps-2 pb-4\">\r\n <ng-container\r\n *ngTemplateOutlet=\"_detailRow.templateRef; context: {$implicit: row}\"></ng-container>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n <tr *ngIf=\"_data?.length === 0\">\r\n <td [colSpan]=\"_columns.length + (showRowNumbers() ? 1 : 0)\" class=\"text-center text-muted small p-2\">\r\n {{'noRecords' | ng0Translate}}\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"_dataSource.loading\" class=\"loading-row\">\r\n <td [colSpan]=\"_columns.length + (showRowNumbers() ? 1 : 0)\" class=\"text-center\">\r\n <div class=\"spinner-border text-primary\" role=\"status\"></div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<!-- <ng0-table-paging></ng0-table-paging> -->\r\n\r\n<!-- <div class=\"mt-auto\" *ngIf=\"pagination()\">\r\n <div class=\"btn-group me-2\" role=\"group\">\r\n <button type=\"button\"\r\n class=\"btn btn-outline-primary\"\r\n (click)=\"onPreviousPageClick()\"\r\n [disabled]=\"loading || pageIndex() == 0\">\r\n {{'previous' | ng0Translate}}\r\n </button>\r\n <button type=\"button\"\r\n class=\"btn btn-outline-primary\"\r\n (click)=\"onNextPageClick()\"\r\n [disabled]=\"loading || !_totalPages || (pageIndex() == _totalPages-1)\">\r\n {{'next' | ng0Translate}}\r\n </button>\r\n </div>\r\n\r\n <span *ngIf=\"_totalPages\">\r\n {{_formatString( 'dataTablePagination' | ng0Translate, pageIndex()+1, _totalPages) }}\r\n </span>\r\n</div> -->", styles: [":host{display:flex;flex-direction:column;position:relative}td.row-number{width:0}td.shrinked{width:0;white-space:nowrap}tr.loading-row{position:absolute;inset:0;background-color:#00000014;transition:background-color 1s;z-index:1000}tr.loading-row td{border:none;height:100%;display:flex;justify-content:center;align-items:center}.table-scrollable{overflow-y:auto;direction:ltr;scroll-padding:20px}.table-scrollable::-webkit-scrollbar{width:8px}.table-scrollable::-webkit-scrollbar-track{background-color:#00000008}.table-scrollable::-webkit-scrollbar-thumb{background-color:var(--bs-secondary)}.table-scrollable thead th{position:sticky;top:0}\n"] }]
278
+ ], template: "<div class=\"table-responsive\" [style.height]=\"height()\" [class.table-scrollable]=\"height()! > 0\">\r\n <table class=\"table\" [ngClass]=\"tableClass()\">\r\n @if(caption()) {\r\n <caption>{{caption()}}</caption>\r\n }\r\n\r\n <thead *ngIf=\"showHeader\" [ngClass]=\"headerClass()\">\r\n <tr>\r\n <th *ngIf=\"_detailRow\"></th>\r\n <th *ngIf=\"showRowNumbers()\" class=\"row-number text-muted\">#</th>\r\n <th *ngFor=\"let col of _columns\">{{col.title}}</th>\r\n </tr>\r\n </thead>\r\n <thead *ngIf=\"filterable()\">\r\n <tr>\r\n <th *ngIf=\"_detailRow\"></th>\r\n\r\n @if(showRowNumbers()) {\r\n <th></th>\r\n }\r\n\r\n <th *ngFor=\"let col of _columns\">\r\n @if(col.filterable) {\r\n @if(col.type == 'text') {\r\n <input [name]=\"'datatablecol-' + col.field\"\r\n type=\"text\"\r\n [maxlength]=\"50\"\r\n class=\"form-control form-control-sm\"\r\n [(ngModel)]=\"col.filterValue\"\r\n (keydown.enter)=\"reload()\">\r\n }@else if(col.type == 'number') {\r\n <input [name]=\"'datatablecol-' + col.field\"\r\n type=\"number\"\r\n class=\"form-control form-control-sm\"\r\n [(ngModel)]=\"col.filterValue\"\r\n (keydown.enter)=\"reload()\">\r\n }\r\n }\r\n </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n <ng-container *ngIf=\"_data && _data.length! > 0\">\r\n <ng-container *ngFor=\"let row of _data; let i=index\">\r\n <tr [class.table-active]=\"isRowExpanded(row)\">\r\n <td class=\"detail-row-expander\" *ngIf=\"_detailRow\">\r\n <button class=\"btn\" (click)=\"onToggleRowDetailClick(row)\"\r\n *ngIf=\"_detailRow.showCallback == null || _detailRow.showCallback(row)\">\r\n <ng-template [ngIf]=\"isRowExpanded(row)\" [ngIfElse]=\"collapse\"><i\r\n class=\"far fa-minus\"></i></ng-template>\r\n <ng-template #collapse><i class=\"far fa-plus\"></i> </ng-template>\r\n </button>\r\n </td>\r\n\r\n <td class=\"row-number text-muted\" *ngIf=\"showRowNumbers()\">{{pageSize() * pageIndex() + i + 1}}</td>\r\n\r\n <td *ngFor=\"let col of _columns\" [ngClass]=\"col.cellClass\" [class.shrinked]=\"col.shrink\"\r\n [class.fw-bold]=\"col.bold\">\r\n @if(col.template){\r\n <ng-template [ngIf]=\"col.template\">\r\n <ng-container\r\n *ngTemplateOutlet=\"col.template; context: {$implicit: row}\"></ng-container>\r\n </ng-template>\r\n }@else if(col.field){\r\n @let cellValue = _getCellValue(row, col);\r\n <div\r\n [class.badge]=\"col.badge\"\r\n [class.text-bg-primary]=\"col.badge?.primary && cellValue === col.badge?.primary\"\r\n [class.text-bg-secondary]=\"col.badge?.secondary && cellValue === col.badge?.secondary\"\r\n [class.text-bg-success]=\"col.badge?.success && cellValue === col.badge?.success\"\r\n [class.text-bg-light]=\"col.badge && cellValue !== col.badge.success && cellValue !== col.badge.secondary && cellValue !== col.badge.success \">\r\n\r\n <ng-container *ngIf=\"col.type=='text'\">\r\n {{cellValue}}\r\n </ng-container>\r\n <ng-container *ngIf=\"col.type=='date'\">\r\n <span class=\"date-time\">{{cellValue | ng0Date}}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"col.type=='number'\">\r\n {{cellValue | number}}\r\n </ng-container>\r\n <ng-container *ngIf=\"col.type=='currency'\">\r\n {{cellValue | number}}\r\n </ng-container>\r\n <ng-container *ngIf=\"$any(col?.type)?.enum\">\r\n {{cellValue | ng0TranslateEnum:$any(col.type).enum}}\r\n </ng-container>\r\n <!-- <ng-container *ngIf=\"$any(col?.type)?.boolean\">\r\n {{cellValue | ng0Bool:$any(col.type).boolean}}\r\n </ng-container> -->\r\n <ng-container *ngIf=\"$any(col?.type)?.currency\">\r\n {{cellValue | currency:$any(col?.type)?.currency}}\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"cellValue == null && col.emptyCellText\">\r\n {{col.emptyCellText}}\r\n </ng-container>\r\n\r\n\r\n </div>\r\n }\r\n </td>\r\n </tr>\r\n\r\n <tr class=\"detail-row\" *ngIf=\"_detailRow && isRowExpanded(row)\">\r\n <td [attr.colspan]=\"_columns.length + (showRowNumbers() ? 1 : 0) + 1\" class=\"ps-2 pb-4\">\r\n <ng-container\r\n *ngTemplateOutlet=\"_detailRow.templateRef; context: {$implicit: row}\"></ng-container>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n <tr *ngIf=\"_data?.length === 0\">\r\n <td [colSpan]=\"_columns.length + (showRowNumbers() ? 1 : 0)\" class=\"text-center text-muted small p-2\">\r\n {{'noRecords' | ng0Translate}}\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"_dataSource.loading\" class=\"loading-row\">\r\n <td [colSpan]=\"_columns.length + (showRowNumbers() ? 1 : 0)\" class=\"text-center\">\r\n <div class=\"spinner-border text-primary\" role=\"status\"></div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<!-- <ng0-table-paging></ng0-table-paging> -->\r\n\r\n<!-- <div class=\"mt-auto\" *ngIf=\"pagination()\">\r\n <div class=\"btn-group me-2\" role=\"group\">\r\n <button type=\"button\"\r\n class=\"btn btn-outline-primary\"\r\n (click)=\"onPreviousPageClick()\"\r\n [disabled]=\"loading || pageIndex() == 0\">\r\n {{'previous' | ng0Translate}}\r\n </button>\r\n <button type=\"button\"\r\n class=\"btn btn-outline-primary\"\r\n (click)=\"onNextPageClick()\"\r\n [disabled]=\"loading || !_totalPages || (pageIndex() == _totalPages-1)\">\r\n {{'next' | ng0Translate}}\r\n </button>\r\n </div>\r\n\r\n <span *ngIf=\"_totalPages\">\r\n {{_formatString( 'dataTablePagination' | ng0Translate, pageIndex()+1, _totalPages) }}\r\n </span>\r\n</div> -->", styles: [":host{display:flex;flex-direction:column;position:relative}td.row-number{width:0}td.shrinked{width:0;white-space:nowrap}tr.loading-row{position:absolute;inset:0;background-color:#00000014;transition:background-color 1s;z-index:1000}tr.loading-row td{border:none;height:100%;display:flex;justify-content:center;align-items:center}.table-scrollable{overflow-y:auto;direction:ltr;scroll-padding:20px}.table-scrollable::-webkit-scrollbar{width:8px}.table-scrollable::-webkit-scrollbar-track{background-color:#00000008}.table-scrollable::-webkit-scrollbar-thumb{background-color:var(--bs-secondary)}.table-scrollable thead th{position:sticky;top:0}\n"] }]
279
279
  }], ctorParameters: () => [{ type: i0.DestroyRef }], propDecorators: { _columns: [{
280
280
  type: ContentChildren,
281
281
  args: [TableColumnDirective]
@@ -1 +1 @@
1
- {"version":3,"file":"bootkit-ng0-components-table.mjs","sources":["../../../projects/ng0/components/table/table-column.directive.ts","../../../projects/ng0/components/table/table-detail-row.directive.ts","../../../projects/ng0/components/table/paging/paging.component.ts","../../../projects/ng0/components/table/paging/paging.component.html","../../../projects/ng0/components/table/table.component.ts","../../../projects/ng0/components/table/table.component.html","../../../projects/ng0/components/table/table.module.ts","../../../projects/ng0/components/table/bootkit-ng0-components-table.ts"],"sourcesContent":["import { ContentChild, Directive, Input, TemplateRef } from '@angular/core';\r\n\r\nexport type DataTableColumnBadgeValueType = string | number | boolean;\r\n\r\n@Directive({\r\n selector: 'ng0-table-col',\r\n standalone: true,\r\n})\r\nexport class TableColumnDirective {\r\n @Input() field?: string;\r\n @Input() title?: string;\r\n @Input() emptyCellText?: string;\r\n\r\n /** Column type */\r\n @Input() type: 'text' | 'number' | 'currency' | 'date' | 'time' | {\r\n enum?: string,\r\n boolean?: {falseKey?: string, trueKey?: string},\r\n currency?: string,\r\n } = 'text';\r\n @ContentChild(TemplateRef) template?: TemplateRef<any>;\r\n @Input() cellClass?: string | string[] | { [klass: string]: any; } | null | undefined;\r\n @Input() shrink = false;\r\n @Input() bold = false;\r\n @Input() badge?: { primary?: DataTableColumnBadgeValueType, secondary?: DataTableColumnBadgeValueType, success?: DataTableColumnBadgeValueType };\r\n @Input() filterable = false;\r\n @Input() filterValue?: string;\r\n @Input() filterField?: string;\r\n\r\n constructor() {\r\n }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n\r\n@Directive({\r\n selector: '[ng0-table-detail-row]',\r\n standalone: true,\r\n})\r\nexport class TableDetailRowDirective {\r\n @Input() showCallback?: (row: any) => boolean;\r\n\r\n constructor(public readonly templateRef: TemplateRef<any>) {\r\n }\r\n}\r\n","import { AfterContentInit, Component, DestroyRef, input, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { LocalizationModule } from '@bootkit/ng0/localization';\r\n\r\n@Component({\r\n selector: 'ng0-table-paging',\r\n templateUrl: './paging.component.html',\r\n // styleUrls: ['./paging.component.scss'],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n // DateModule,\r\n LocalizationModule\r\n ]\r\n})\r\nexport class TablePagingComponent implements OnInit, OnDestroy {\r\n // @Input() dataSource!: DataSource;\r\n @Input() autoLoad = true;\r\n rowNumber = input<boolean>(false);\r\n\r\n\r\n constructor(private _destroyRef: DestroyRef) {\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n // ngAfterContentInit(): void {\r\n // }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n}\r\n","","import { AfterContentInit, Component, ContentChild, ContentChildren, DestroyRef, input, OnDestroy, OnInit, QueryList } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { TableColumnDirective } from './table-column.directive';\r\nimport { TableDetailRowDirective } from './table-detail-row.directive';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { TablePagingComponent } from './paging/paging.component';\r\nimport { formatString } from '@bootkit/ng0/common';\r\nimport { LocalizationModule } from '@bootkit/ng0/localization';\r\nimport { ArrayDataSource, AsyncDataSource, DataLoader, DataRequest, DataRequestFilter, DataSource } from '@bootkit/ng0/data';\r\n\r\n@Component({\r\n selector: 'ng0-table',\r\n exportAs: 'ng0Table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss'],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n LocalizationModule,\r\n TablePagingComponent\r\n ]\r\n})\r\nexport class TableComponent implements OnInit, AfterContentInit, OnDestroy {\r\n /**\r\n * The data source for the table.\r\n * This can be an array of data, a function that returns an observable of data,\r\n * or an instance of DataSource.\r\n */\r\n public source = input.required<Array<any> | DataLoader | DataSource | undefined | null>();\r\n\r\n /**\r\n * If true, the table will automatically load data when initialized.\r\n * This is useful for tables that need to display data immediately without user interaction.\r\n */\r\n public autoLoad = input(true);\r\n\r\n /**\r\n * If true, the table will show row numbers.\r\n * This will add a column to the left of the table with the row numbers.\r\n */\r\n public showRowNumbers = input(false);\r\n\r\n /** \r\n * If true, the table will show the header row.\r\n */\r\n public showHeader = input(true);\r\n\r\n /**\r\n * If true, the table will support pagination.\r\n * If false, the table will load all records at once.\r\n */\r\n public pagable = input(true);\r\n\r\n /**\r\n * If true, the table will show a pagination controls at the bottom.\r\n */\r\n public showPagination = input(true);\r\n\r\n /** \r\n * The number of records to show per page.\r\n * This is only used if pagable is true.\r\n */\r\n public pageSize = input(10);\r\n\r\n /**\r\n * The current page index.\r\n * This is only used if pagable is true.\r\n * The first page is 0.\r\n */\r\n public pageIndex = input(0);\r\n\r\n /**\r\n * The CSS class to apply to the table element.\r\n * This can be used to apply custom styles to the table.\r\n */\r\n public tableClass = input<string | string[]>();\r\n\r\n /**\r\n * The CSS class to apply to the header element.\r\n */\r\n public headerClass = input<string>();\r\n\r\n /**\r\n * The caption of the table.\r\n */\r\n public caption = input<string>();\r\n public height = input<number>();\r\n\r\n /**\r\n * If true, the table will support filtering.\r\n * This will add a filter input to each column header.\r\n */\r\n public filterable = input(false);\r\n\r\n // @Input() rowColor?: (row: any) => BootstrapColor;\r\n\r\n @ContentChildren(TableColumnDirective)\r\n protected _columns!: QueryList<TableColumnDirective>;\r\n\r\n @ContentChild(TableDetailRowDirective)\r\n protected _detailRow?: TableDetailRowDirective;\r\n\r\n protected _data?: any[];\r\n protected _totalRecords?: number;\r\n protected _totalPages?: number;\r\n protected _rowStates = new Map<any, { expanded: boolean }>();\r\n protected _formatString = formatString;\r\n private _changeSubscription?: Subscription;\r\n protected _dataSource!: DataSource;\r\n\r\n constructor(private _destroyRef: DestroyRef) {\r\n }\r\n\r\n ngOnInit(): void {\r\n if (Array.isArray(this.source())) {\r\n this._dataSource = new ArrayDataSource(this.source() as Array<any>);\r\n } else if (typeof this.source() == 'function') {\r\n this._dataSource = new AsyncDataSource(this.source() as DataLoader);\r\n } else if (this.source() instanceof DataSource) {\r\n this._dataSource = this.source() as DataSource;\r\n } else if (this.source() == undefined) {\r\n this._dataSource = new ArrayDataSource([]);\r\n } else {\r\n throw new Error('Invalid data source provided to ng0-table.');\r\n }\r\n\r\n // this._changeSubscription = this.dataSource().change.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(result => {\r\n // this.reload();\r\n // });\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n if (this.autoLoad()) {\r\n this.reload();\r\n }\r\n }\r\n\r\n reload() {\r\n const filters = this._columns\r\n .filter(x => x.filterable && x.filterValue != '' && x.filterValue != undefined)\r\n .map(col => ({ field: col.filterField ?? col.field!, value: col.filterValue, operator: 'EQ' }));\r\n let pageIndex: number | undefined;\r\n let pageSize: number | undefined;\r\n\r\n if (this.pagable()) {\r\n pageIndex = this.pageIndex();\r\n pageSize = this.pageSize();\r\n }\r\n\r\n var dr = new DataRequest({ pageIndex, pageSize, filters })\r\n this._dataSource.load(dr).pipe(takeUntilDestroyed(this._destroyRef)).subscribe(result => {\r\n this._data = result.data;\r\n this._totalRecords = result.total;\r\n this._totalPages = Math.ceil(result.total! / this.pageSize());\r\n });\r\n }\r\n\r\n get loading() {\r\n return this._dataSource.loading;\r\n }\r\n\r\n protected _getCellValue(row: any, col: TableColumnDirective) {\r\n var subFields = col.field!.split('.');\r\n let value = row[subFields[0]];\r\n for (let i = 1; i < subFields.length; i++) {\r\n if (value == null) break;\r\n value = value[subFields[i]];\r\n }\r\n\r\n return value;\r\n }\r\n\r\n protected onNextPageClick() {\r\n // ++this.pageIndex()\r\n this.reload();\r\n }\r\n\r\n protected onPreviousPageClick() {\r\n // --this.pageIndex\r\n this.reload();\r\n }\r\n\r\n protected onToggleRowDetailClick(row: any) {\r\n var state = this._rowStates.get(row)\r\n if (!state) {\r\n this._rowStates.set(row, { expanded: true });\r\n } else {\r\n state.expanded = !state.expanded;\r\n }\r\n }\r\n\r\n protected isRowExpanded(row: any) {\r\n var state = this._rowStates.get(row)\r\n return state == undefined ? false : state.expanded;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._changeSubscription?.unsubscribe();\r\n }\r\n}\r\n","<div class=\"table-responsive\" [style.height]=\"height()\" [class.table-scrollable]=\"height()! > 0\">\r\n <table class=\"table\" [ngClass]=\"tableClass()\">\r\n @if(caption()) {\r\n <caption>{{caption()}}</caption>\r\n }\r\n\r\n <thead *ngIf=\"showHeader\" [ngClass]=\"headerClass()\">\r\n <tr>\r\n <th *ngIf=\"_detailRow\"></th>\r\n <th *ngIf=\"showRowNumbers()\" class=\"row-number text-muted\">#</th>\r\n <th *ngFor=\"let col of _columns\">{{col.title}}</th>\r\n </tr>\r\n </thead>\r\n <thead *ngIf=\"filterable()\">\r\n <tr>\r\n <th *ngIf=\"_detailRow\"></th>\r\n\r\n @if(showRowNumbers()) {\r\n <th></th>\r\n }\r\n\r\n <th *ngFor=\"let col of _columns\">\r\n @if(col.filterable) {\r\n @if(col.type == 'text') {\r\n <input [name]=\"'datatablecol-' + col.field\"\r\n type=\"text\"\r\n [maxlength]=\"50\"\r\n class=\"form-control form-control-sm\"\r\n [(ngModel)]=\"col.filterValue\"\r\n (keydown.enter)=\"reload()\">\r\n }@else if(col.type == 'number') {\r\n <input [name]=\"'datatablecol-' + col.field\"\r\n type=\"number\"\r\n class=\"form-control form-control-sm\"\r\n [(ngModel)]=\"col.filterValue\"\r\n (keydown.enter)=\"reload()\">\r\n }\r\n }\r\n </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n <ng-container *ngIf=\"_data && _data.length! > 0\">\r\n <ng-container *ngFor=\"let row of _data; let i=index\">\r\n <tr [class.table-active]=\"isRowExpanded(row)\">\r\n <td class=\"detail-row-expander\" *ngIf=\"_detailRow\">\r\n <button class=\"btn\" (click)=\"onToggleRowDetailClick(row)\"\r\n *ngIf=\"_detailRow.showCallback == null || _detailRow.showCallback(row)\">\r\n <ng-template [ngIf]=\"isRowExpanded(row)\" [ngIfElse]=\"collapse\"><i\r\n class=\"far fa-minus\"></i></ng-template>\r\n <ng-template #collapse><i class=\"far fa-plus\"></i> </ng-template>\r\n </button>\r\n </td>\r\n\r\n <td class=\"row-number text-muted\" *ngIf=\"showRowNumbers()\">{{pageSize() * pageIndex() + i + 1}}</td>\r\n\r\n <td *ngFor=\"let col of _columns\" [ngClass]=\"col.cellClass\" [class.shrinked]=\"col.shrink\"\r\n [class.fw-bold]=\"col.bold\">\r\n @if(col.template){\r\n <ng-template [ngIf]=\"col.template\">\r\n <ng-container\r\n *ngTemplateOutlet=\"col.template; context: {$implicit: row}\"></ng-container>\r\n </ng-template>\r\n }@else if(col.field){\r\n @let cellValue = _getCellValue(row, col);\r\n <div\r\n [class.badge]=\"col.badge\"\r\n [class.text-bg-primary]=\"col.badge?.primary && cellValue === col.badge?.primary\"\r\n [class.text-bg-secondary]=\"col.badge?.secondary && cellValue === col.badge?.secondary\"\r\n [class.text-bg-success]=\"col.badge?.success && cellValue === col.badge?.success\"\r\n [class.text-bg-light]=\"col.badge && cellValue !== col.badge.success && cellValue !== col.badge.secondary && cellValue !== col.badge.success \">\r\n\r\n <ng-container *ngIf=\"col.type=='text'\">\r\n {{cellValue}}\r\n </ng-container>\r\n <ng-container *ngIf=\"col.type=='date'\">\r\n <span class=\"date-time\">{{cellValue | ng0Date}}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"col.type=='number'\">\r\n {{cellValue | number}}\r\n </ng-container>\r\n <ng-container *ngIf=\"col.type=='currency'\">\r\n {{cellValue | number}}\r\n </ng-container>\r\n <ng-container *ngIf=\"$any(col?.type)?.enum\">\r\n {{cellValue | ng0Enum:$any(col.type).enum}}\r\n </ng-container>\r\n <!-- <ng-container *ngIf=\"$any(col?.type)?.boolean\">\r\n {{cellValue | ng0Bool:$any(col.type).boolean}}\r\n </ng-container> -->\r\n <ng-container *ngIf=\"$any(col?.type)?.currency\">\r\n {{cellValue | currency:$any(col?.type)?.currency}}\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"cellValue == null && col.emptyCellText\">\r\n {{col.emptyCellText}}\r\n </ng-container>\r\n\r\n\r\n </div>\r\n }\r\n </td>\r\n </tr>\r\n\r\n <tr class=\"detail-row\" *ngIf=\"_detailRow && isRowExpanded(row)\">\r\n <td [attr.colspan]=\"_columns.length + (showRowNumbers() ? 1 : 0) + 1\" class=\"ps-2 pb-4\">\r\n <ng-container\r\n *ngTemplateOutlet=\"_detailRow.templateRef; context: {$implicit: row}\"></ng-container>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n <tr *ngIf=\"_data?.length === 0\">\r\n <td [colSpan]=\"_columns.length + (showRowNumbers() ? 1 : 0)\" class=\"text-center text-muted small p-2\">\r\n {{'noRecords' | ng0Translate}}\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"_dataSource.loading\" class=\"loading-row\">\r\n <td [colSpan]=\"_columns.length + (showRowNumbers() ? 1 : 0)\" class=\"text-center\">\r\n <div class=\"spinner-border text-primary\" role=\"status\"></div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<!-- <ng0-table-paging></ng0-table-paging> -->\r\n\r\n<!-- <div class=\"mt-auto\" *ngIf=\"pagination()\">\r\n <div class=\"btn-group me-2\" role=\"group\">\r\n <button type=\"button\"\r\n class=\"btn btn-outline-primary\"\r\n (click)=\"onPreviousPageClick()\"\r\n [disabled]=\"loading || pageIndex() == 0\">\r\n {{'previous' | ng0Translate}}\r\n </button>\r\n <button type=\"button\"\r\n class=\"btn btn-outline-primary\"\r\n (click)=\"onNextPageClick()\"\r\n [disabled]=\"loading || !_totalPages || (pageIndex() == _totalPages-1)\">\r\n {{'next' | ng0Translate}}\r\n </button>\r\n </div>\r\n\r\n <span *ngIf=\"_totalPages\">\r\n {{_formatString( 'dataTablePagination' | ng0Translate, pageIndex()+1, _totalPages) }}\r\n </span>\r\n</div> -->","import { NgModule } from '@angular/core';\r\nimport { TableColumnDirective } from './table-column.directive';\r\nimport { TableComponent } from './table.component';\r\nimport { TableDetailRowDirective } from './table-detail-row.directive';\r\n\r\n@NgModule({\r\n imports: [\r\n TableComponent,\r\n TableColumnDirective,\r\n TableDetailRowDirective,\r\n ],\r\n exports: [\r\n TableComponent,\r\n TableColumnDirective,\r\n TableDetailRowDirective\r\n ],\r\n})\r\nexport class TableModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bootkit-ng0-components-table.mjs","sources":["../../../projects/ng0/components/table/table-column.directive.ts","../../../projects/ng0/components/table/table-detail-row.directive.ts","../../../projects/ng0/components/table/paging/paging.component.ts","../../../projects/ng0/components/table/paging/paging.component.html","../../../projects/ng0/components/table/table.component.ts","../../../projects/ng0/components/table/table.component.html","../../../projects/ng0/components/table/table.module.ts","../../../projects/ng0/components/table/bootkit-ng0-components-table.ts"],"sourcesContent":["import { ContentChild, Directive, Input, TemplateRef } from '@angular/core';\r\n\r\nexport type DataTableColumnBadgeValueType = string | number | boolean;\r\n\r\n@Directive({\r\n selector: 'ng0-table-col',\r\n standalone: true,\r\n})\r\nexport class TableColumnDirective {\r\n @Input() field?: string;\r\n @Input() title?: string;\r\n @Input() emptyCellText?: string;\r\n\r\n /** Column type */\r\n @Input() type: 'text' | 'number' | 'currency' | 'date' | 'time' | {\r\n enum?: string,\r\n boolean?: {falseKey?: string, trueKey?: string},\r\n currency?: string,\r\n } = 'text';\r\n @ContentChild(TemplateRef) template?: TemplateRef<any>;\r\n @Input() cellClass?: string | string[] | { [klass: string]: any; } | null | undefined;\r\n @Input() shrink = false;\r\n @Input() bold = false;\r\n @Input() badge?: { primary?: DataTableColumnBadgeValueType, secondary?: DataTableColumnBadgeValueType, success?: DataTableColumnBadgeValueType };\r\n @Input() filterable = false;\r\n @Input() filterValue?: string;\r\n @Input() filterField?: string;\r\n\r\n constructor() {\r\n }\r\n}\r\n","import { Directive, Input, TemplateRef } from '@angular/core';\r\n\r\n\r\n@Directive({\r\n selector: '[ng0-table-detail-row]',\r\n standalone: true,\r\n})\r\nexport class TableDetailRowDirective {\r\n @Input() showCallback?: (row: any) => boolean;\r\n\r\n constructor(public readonly templateRef: TemplateRef<any>) {\r\n }\r\n}\r\n","import { AfterContentInit, Component, DestroyRef, input, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { LocalizationModule } from '@bootkit/ng0/localization';\r\n\r\n@Component({\r\n selector: 'ng0-table-paging',\r\n templateUrl: './paging.component.html',\r\n // styleUrls: ['./paging.component.scss'],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n // DateModule,\r\n LocalizationModule\r\n ]\r\n})\r\nexport class TablePagingComponent implements OnInit, OnDestroy {\r\n // @Input() dataSource!: DataSource;\r\n @Input() autoLoad = true;\r\n rowNumber = input<boolean>(false);\r\n\r\n\r\n constructor(private _destroyRef: DestroyRef) {\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n // ngAfterContentInit(): void {\r\n // }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n}\r\n","","import { AfterContentInit, Component, ContentChild, ContentChildren, DestroyRef, input, OnDestroy, OnInit, QueryList } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { TableColumnDirective } from './table-column.directive';\r\nimport { TableDetailRowDirective } from './table-detail-row.directive';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { TablePagingComponent } from './paging/paging.component';\r\nimport { formatString } from '@bootkit/ng0/common';\r\nimport { LocalizationModule } from '@bootkit/ng0/localization';\r\nimport { ArrayDataSource, AsyncDataSource, DataLoader, DataRequest, DataRequestFilter, DataSource } from '@bootkit/ng0/data';\r\n\r\n@Component({\r\n selector: 'ng0-table',\r\n exportAs: 'ng0Table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss'],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n LocalizationModule,\r\n TablePagingComponent\r\n ]\r\n})\r\nexport class TableComponent implements OnInit, AfterContentInit, OnDestroy {\r\n /**\r\n * The data source for the table.\r\n * This can be an array of data, a function that returns an observable of data,\r\n * or an instance of DataSource.\r\n */\r\n public source = input.required<Array<any> | DataLoader | DataSource | undefined | null>();\r\n\r\n /**\r\n * If true, the table will automatically load data when initialized.\r\n * This is useful for tables that need to display data immediately without user interaction.\r\n */\r\n public autoLoad = input(true);\r\n\r\n /**\r\n * If true, the table will show row numbers.\r\n * This will add a column to the left of the table with the row numbers.\r\n */\r\n public showRowNumbers = input(false);\r\n\r\n /** \r\n * If true, the table will show the header row.\r\n */\r\n public showHeader = input(true);\r\n\r\n /**\r\n * If true, the table will support pagination.\r\n * If false, the table will load all records at once.\r\n */\r\n public pagable = input(true);\r\n\r\n /**\r\n * If true, the table will show a pagination controls at the bottom.\r\n */\r\n public showPagination = input(true);\r\n\r\n /** \r\n * The number of records to show per page.\r\n * This is only used if pagable is true.\r\n */\r\n public pageSize = input(10);\r\n\r\n /**\r\n * The current page index.\r\n * This is only used if pagable is true.\r\n * The first page is 0.\r\n */\r\n public pageIndex = input(0);\r\n\r\n /**\r\n * The CSS class to apply to the table element.\r\n * This can be used to apply custom styles to the table.\r\n */\r\n public tableClass = input<string | string[]>();\r\n\r\n /**\r\n * The CSS class to apply to the header element.\r\n */\r\n public headerClass = input<string>();\r\n\r\n /**\r\n * The caption of the table.\r\n */\r\n public caption = input<string>();\r\n public height = input<number>();\r\n\r\n /**\r\n * If true, the table will support filtering.\r\n * This will add a filter input to each column header.\r\n */\r\n public filterable = input(false);\r\n\r\n // @Input() rowColor?: (row: any) => BootstrapColor;\r\n\r\n @ContentChildren(TableColumnDirective)\r\n protected _columns!: QueryList<TableColumnDirective>;\r\n\r\n @ContentChild(TableDetailRowDirective)\r\n protected _detailRow?: TableDetailRowDirective;\r\n\r\n protected _data?: any[];\r\n protected _totalRecords?: number;\r\n protected _totalPages?: number;\r\n protected _rowStates = new Map<any, { expanded: boolean }>();\r\n protected _formatString = formatString;\r\n private _changeSubscription?: Subscription;\r\n protected _dataSource!: DataSource;\r\n\r\n constructor(private _destroyRef: DestroyRef) {\r\n }\r\n\r\n ngOnInit(): void {\r\n if (Array.isArray(this.source())) {\r\n this._dataSource = new ArrayDataSource(this.source() as Array<any>);\r\n } else if (typeof this.source() == 'function') {\r\n this._dataSource = new AsyncDataSource(this.source() as DataLoader);\r\n } else if (this.source() instanceof DataSource) {\r\n this._dataSource = this.source() as DataSource;\r\n } else if (this.source() == undefined) {\r\n this._dataSource = new ArrayDataSource([]);\r\n } else {\r\n throw new Error('Invalid data source provided to ng0-table.');\r\n }\r\n\r\n // this._changeSubscription = this.dataSource().change.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(result => {\r\n // this.reload();\r\n // });\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n if (this.autoLoad()) {\r\n this.reload();\r\n }\r\n }\r\n\r\n reload() {\r\n const filters = this._columns\r\n .filter(x => x.filterable && x.filterValue != '' && x.filterValue != undefined)\r\n .map(col => ({ field: col.filterField ?? col.field!, value: col.filterValue, operator: 'EQ' }));\r\n let pageIndex: number | undefined;\r\n let pageSize: number | undefined;\r\n\r\n if (this.pagable()) {\r\n pageIndex = this.pageIndex();\r\n pageSize = this.pageSize();\r\n }\r\n\r\n var dr = new DataRequest({ pageIndex, pageSize, filters })\r\n this._dataSource.load(dr).pipe(takeUntilDestroyed(this._destroyRef)).subscribe(result => {\r\n this._data = result.data;\r\n this._totalRecords = result.total;\r\n this._totalPages = Math.ceil(result.total! / this.pageSize());\r\n });\r\n }\r\n\r\n get loading() {\r\n return this._dataSource.loading;\r\n }\r\n\r\n protected _getCellValue(row: any, col: TableColumnDirective) {\r\n var subFields = col.field!.split('.');\r\n let value = row[subFields[0]];\r\n for (let i = 1; i < subFields.length; i++) {\r\n if (value == null) break;\r\n value = value[subFields[i]];\r\n }\r\n\r\n return value;\r\n }\r\n\r\n protected onNextPageClick() {\r\n // ++this.pageIndex()\r\n this.reload();\r\n }\r\n\r\n protected onPreviousPageClick() {\r\n // --this.pageIndex\r\n this.reload();\r\n }\r\n\r\n protected onToggleRowDetailClick(row: any) {\r\n var state = this._rowStates.get(row)\r\n if (!state) {\r\n this._rowStates.set(row, { expanded: true });\r\n } else {\r\n state.expanded = !state.expanded;\r\n }\r\n }\r\n\r\n protected isRowExpanded(row: any) {\r\n var state = this._rowStates.get(row)\r\n return state == undefined ? false : state.expanded;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._changeSubscription?.unsubscribe();\r\n }\r\n}\r\n","<div class=\"table-responsive\" [style.height]=\"height()\" [class.table-scrollable]=\"height()! > 0\">\r\n <table class=\"table\" [ngClass]=\"tableClass()\">\r\n @if(caption()) {\r\n <caption>{{caption()}}</caption>\r\n }\r\n\r\n <thead *ngIf=\"showHeader\" [ngClass]=\"headerClass()\">\r\n <tr>\r\n <th *ngIf=\"_detailRow\"></th>\r\n <th *ngIf=\"showRowNumbers()\" class=\"row-number text-muted\">#</th>\r\n <th *ngFor=\"let col of _columns\">{{col.title}}</th>\r\n </tr>\r\n </thead>\r\n <thead *ngIf=\"filterable()\">\r\n <tr>\r\n <th *ngIf=\"_detailRow\"></th>\r\n\r\n @if(showRowNumbers()) {\r\n <th></th>\r\n }\r\n\r\n <th *ngFor=\"let col of _columns\">\r\n @if(col.filterable) {\r\n @if(col.type == 'text') {\r\n <input [name]=\"'datatablecol-' + col.field\"\r\n type=\"text\"\r\n [maxlength]=\"50\"\r\n class=\"form-control form-control-sm\"\r\n [(ngModel)]=\"col.filterValue\"\r\n (keydown.enter)=\"reload()\">\r\n }@else if(col.type == 'number') {\r\n <input [name]=\"'datatablecol-' + col.field\"\r\n type=\"number\"\r\n class=\"form-control form-control-sm\"\r\n [(ngModel)]=\"col.filterValue\"\r\n (keydown.enter)=\"reload()\">\r\n }\r\n }\r\n </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n <ng-container *ngIf=\"_data && _data.length! > 0\">\r\n <ng-container *ngFor=\"let row of _data; let i=index\">\r\n <tr [class.table-active]=\"isRowExpanded(row)\">\r\n <td class=\"detail-row-expander\" *ngIf=\"_detailRow\">\r\n <button class=\"btn\" (click)=\"onToggleRowDetailClick(row)\"\r\n *ngIf=\"_detailRow.showCallback == null || _detailRow.showCallback(row)\">\r\n <ng-template [ngIf]=\"isRowExpanded(row)\" [ngIfElse]=\"collapse\"><i\r\n class=\"far fa-minus\"></i></ng-template>\r\n <ng-template #collapse><i class=\"far fa-plus\"></i> </ng-template>\r\n </button>\r\n </td>\r\n\r\n <td class=\"row-number text-muted\" *ngIf=\"showRowNumbers()\">{{pageSize() * pageIndex() + i + 1}}</td>\r\n\r\n <td *ngFor=\"let col of _columns\" [ngClass]=\"col.cellClass\" [class.shrinked]=\"col.shrink\"\r\n [class.fw-bold]=\"col.bold\">\r\n @if(col.template){\r\n <ng-template [ngIf]=\"col.template\">\r\n <ng-container\r\n *ngTemplateOutlet=\"col.template; context: {$implicit: row}\"></ng-container>\r\n </ng-template>\r\n }@else if(col.field){\r\n @let cellValue = _getCellValue(row, col);\r\n <div\r\n [class.badge]=\"col.badge\"\r\n [class.text-bg-primary]=\"col.badge?.primary && cellValue === col.badge?.primary\"\r\n [class.text-bg-secondary]=\"col.badge?.secondary && cellValue === col.badge?.secondary\"\r\n [class.text-bg-success]=\"col.badge?.success && cellValue === col.badge?.success\"\r\n [class.text-bg-light]=\"col.badge && cellValue !== col.badge.success && cellValue !== col.badge.secondary && cellValue !== col.badge.success \">\r\n\r\n <ng-container *ngIf=\"col.type=='text'\">\r\n {{cellValue}}\r\n </ng-container>\r\n <ng-container *ngIf=\"col.type=='date'\">\r\n <span class=\"date-time\">{{cellValue | ng0Date}}</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"col.type=='number'\">\r\n {{cellValue | number}}\r\n </ng-container>\r\n <ng-container *ngIf=\"col.type=='currency'\">\r\n {{cellValue | number}}\r\n </ng-container>\r\n <ng-container *ngIf=\"$any(col?.type)?.enum\">\r\n {{cellValue | ng0TranslateEnum:$any(col.type).enum}}\r\n </ng-container>\r\n <!-- <ng-container *ngIf=\"$any(col?.type)?.boolean\">\r\n {{cellValue | ng0Bool:$any(col.type).boolean}}\r\n </ng-container> -->\r\n <ng-container *ngIf=\"$any(col?.type)?.currency\">\r\n {{cellValue | currency:$any(col?.type)?.currency}}\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"cellValue == null && col.emptyCellText\">\r\n {{col.emptyCellText}}\r\n </ng-container>\r\n\r\n\r\n </div>\r\n }\r\n </td>\r\n </tr>\r\n\r\n <tr class=\"detail-row\" *ngIf=\"_detailRow && isRowExpanded(row)\">\r\n <td [attr.colspan]=\"_columns.length + (showRowNumbers() ? 1 : 0) + 1\" class=\"ps-2 pb-4\">\r\n <ng-container\r\n *ngTemplateOutlet=\"_detailRow.templateRef; context: {$implicit: row}\"></ng-container>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n <tr *ngIf=\"_data?.length === 0\">\r\n <td [colSpan]=\"_columns.length + (showRowNumbers() ? 1 : 0)\" class=\"text-center text-muted small p-2\">\r\n {{'noRecords' | ng0Translate}}\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"_dataSource.loading\" class=\"loading-row\">\r\n <td [colSpan]=\"_columns.length + (showRowNumbers() ? 1 : 0)\" class=\"text-center\">\r\n <div class=\"spinner-border text-primary\" role=\"status\"></div>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<!-- <ng0-table-paging></ng0-table-paging> -->\r\n\r\n<!-- <div class=\"mt-auto\" *ngIf=\"pagination()\">\r\n <div class=\"btn-group me-2\" role=\"group\">\r\n <button type=\"button\"\r\n class=\"btn btn-outline-primary\"\r\n (click)=\"onPreviousPageClick()\"\r\n [disabled]=\"loading || pageIndex() == 0\">\r\n {{'previous' | ng0Translate}}\r\n </button>\r\n <button type=\"button\"\r\n class=\"btn btn-outline-primary\"\r\n (click)=\"onNextPageClick()\"\r\n [disabled]=\"loading || !_totalPages || (pageIndex() == _totalPages-1)\">\r\n {{'next' | ng0Translate}}\r\n </button>\r\n </div>\r\n\r\n <span *ngIf=\"_totalPages\">\r\n {{_formatString( 'dataTablePagination' | ng0Translate, pageIndex()+1, _totalPages) }}\r\n </span>\r\n</div> -->","import { NgModule } from '@angular/core';\r\nimport { TableColumnDirective } from './table-column.directive';\r\nimport { TableComponent } from './table.component';\r\nimport { TableDetailRowDirective } from './table-detail-row.directive';\r\n\r\n@NgModule({\r\n imports: [\r\n TableComponent,\r\n TableColumnDirective,\r\n TableDetailRowDirective,\r\n ],\r\n exports: [\r\n TableComponent,\r\n TableColumnDirective,\r\n TableDetailRowDirective\r\n ],\r\n})\r\nexport class TableModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Input, Directive, input, NgModule, HostListener, forwardRef } from '@angular/core';
2
+ import { Input, Directive, input, NgModule, forwardRef, HostListener } from '@angular/core';
3
3
  import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
4
4
  import { formatNumber } from '@angular/common';
5
5
 
@@ -180,32 +180,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
180
180
  type: Input
181
181
  }] } });
182
182
 
183
- class DigitsOnlyDirective {
184
- elementRef;
185
- constructor(elementRef) {
186
- this.elementRef = elementRef;
187
- }
188
- onKeyDown(e) {
189
- var allowedKeys = ['Tab', 'Backspace', 'ArrowLeft', 'ArrowRight'];
190
- if (!isFinite(e.key) && !allowedKeys.some(k => e.key == k)) {
191
- e.preventDefault();
192
- }
193
- }
194
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: DigitsOnlyDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
195
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.6", type: DigitsOnlyDirective, isStandalone: true, selector: "[iscDigitsOnly]", host: { listeners: { "keydown": "onKeyDown($event)" } }, exportAs: ["iscDigitsOnly"], ngImport: i0 });
196
- }
197
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: DigitsOnlyDirective, decorators: [{
198
- type: Directive,
199
- args: [{
200
- standalone: true,
201
- selector: '[iscDigitsOnly]',
202
- exportAs: 'iscDigitsOnly',
203
- }]
204
- }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { onKeyDown: [{
205
- type: HostListener,
206
- args: ['keydown', ['$event']]
207
- }] } });
208
-
209
183
  const addThousandsSeparator = (str) => str.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
210
184
  const isValidNumber = (str) => str.trim() !== '' && !isNaN(Number(str));
211
185
  const removeChar = (str, charToRemove) => str.split(charToRemove).join('');
@@ -438,5 +412,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
438
412
  * Generated bundle index. Do not edit.
439
413
  */
440
414
 
441
- export { CustomValidatorDirective, DigitsOnlyDirective, EqualWithValidatorDirective, FocusDirective, NumberDirective, UrlValidatorDirective, ValidationModule, equalWithValidator };
415
+ export { CustomValidatorDirective, EqualWithValidatorDirective, FocusDirective, NumberDirective, UrlValidatorDirective, ValidationModule, equalWithValidator };
442
416
  //# sourceMappingURL=bootkit-ng0-form.mjs.map