@bootkit/ng0 0.0.0-alpha.1 → 0.0.0-alpha.11
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.
- package/common/index.d.ts +82 -3
- package/components/accordion/index.d.ts +32 -0
- package/components/backdrop/index.d.ts +8 -0
- package/components/button/index.d.ts +48 -0
- package/components/card/index.d.ts +27 -0
- package/components/code/index.d.ts +35 -0
- package/components/collapse/index.d.ts +59 -0
- package/components/confirmation/index.d.ts +66 -0
- package/components/form-field/index.d.ts +72 -0
- package/components/modal/index.d.ts +29 -0
- package/components/nav/index.d.ts +68 -0
- package/{offcanvas/offcanvas.directive.d.ts → components/offcanvas/index.d.ts} +14 -5
- package/components/overlay/index.d.ts +40 -0
- package/components/pagination/index.d.ts +56 -0
- package/components/popover/index.d.ts +36 -0
- package/components/sidenav/index.d.ts +46 -0
- package/components/stepper/index.d.ts +26 -0
- package/components/table/index.d.ts +211 -0
- package/components/toast/index.d.ts +101 -0
- package/components/tooltip/index.d.ts +30 -0
- package/components/vertical-menu/index.d.ts +61 -0
- package/data/index.d.ts +203 -0
- package/date/index.d.ts +34 -0
- package/fesm2022/bootkit-ng0-common.mjs +38 -3
- package/fesm2022/bootkit-ng0-common.mjs.map +1 -1
- package/fesm2022/{bootkit-ng0-accordion.mjs → bootkit-ng0-components-accordion.mjs} +16 -16
- package/fesm2022/bootkit-ng0-components-accordion.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-backdrop.mjs +41 -0
- package/fesm2022/bootkit-ng0-components-backdrop.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-button.mjs +119 -0
- package/fesm2022/bootkit-ng0-components-button.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-card.mjs +62 -0
- package/fesm2022/bootkit-ng0-components-card.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-code.mjs +70 -0
- package/fesm2022/bootkit-ng0-components-code.mjs.map +1 -0
- package/fesm2022/{bootkit-ng0-collapse.mjs → bootkit-ng0-components-collapse.mjs} +16 -16
- package/fesm2022/bootkit-ng0-components-collapse.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-confirmation.mjs +167 -0
- package/fesm2022/bootkit-ng0-components-confirmation.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-form-field.mjs +147 -0
- package/fesm2022/bootkit-ng0-components-form-field.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-modal.mjs +68 -0
- package/fesm2022/bootkit-ng0-components-modal.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-nav.mjs +165 -0
- package/fesm2022/bootkit-ng0-components-nav.mjs.map +1 -0
- package/fesm2022/{bootkit-ng0-offcanvas.mjs → bootkit-ng0-components-offcanvas.mjs} +11 -11
- package/fesm2022/bootkit-ng0-components-offcanvas.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-overlay.mjs +99 -0
- package/fesm2022/bootkit-ng0-components-overlay.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-pagination.mjs +120 -0
- package/fesm2022/bootkit-ng0-components-pagination.mjs.map +1 -0
- package/fesm2022/{bootkit-ng0-popover.mjs → bootkit-ng0-components-popover.mjs} +12 -12
- package/fesm2022/bootkit-ng0-components-popover.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-sidenav.mjs +132 -0
- package/fesm2022/bootkit-ng0-components-sidenav.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-stepper.mjs +91 -0
- package/fesm2022/bootkit-ng0-components-stepper.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-table.mjs +358 -0
- package/fesm2022/bootkit-ng0-components-table.mjs.map +1 -0
- package/fesm2022/{bootkit-ng0-toast.mjs → bootkit-ng0-components-toast.mjs} +10 -10
- package/fesm2022/bootkit-ng0-components-toast.mjs.map +1 -0
- package/fesm2022/{bootkit-ng0-tooltip.mjs → bootkit-ng0-components-tooltip.mjs} +10 -10
- package/fesm2022/bootkit-ng0-components-tooltip.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-vertical-menu.mjs +161 -0
- package/fesm2022/bootkit-ng0-components-vertical-menu.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-data.mjs +267 -0
- package/fesm2022/bootkit-ng0-data.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-date.mjs +50 -0
- package/fesm2022/bootkit-ng0-date.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-file.mjs +50 -0
- package/fesm2022/bootkit-ng0-file.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-form.mjs +420 -0
- package/fesm2022/bootkit-ng0-form.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-http.mjs +277 -0
- package/fesm2022/bootkit-ng0-http.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-localization-locales.mjs +82 -0
- package/fesm2022/bootkit-ng0-localization-locales.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-localization.mjs +419 -0
- package/fesm2022/bootkit-ng0-localization.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-platform-browser.mjs +51 -0
- package/fesm2022/bootkit-ng0-platform-browser.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-script.mjs +59 -0
- package/fesm2022/bootkit-ng0-script.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-security.mjs +132 -0
- package/fesm2022/bootkit-ng0-security.mjs.map +1 -0
- package/file/index.d.ts +22 -0
- package/form/index.d.ts +91 -0
- package/http/index.d.ts +167 -0
- package/index.d.ts +3 -5
- package/localization/index.d.ts +265 -0
- package/localization/locales/index.d.ts +7 -0
- package/package.json +123 -61
- package/platform/browser/index.d.ts +22 -0
- package/script/index.d.ts +27 -0
- package/security/index.d.ts +42 -0
- package/accordion/accordion-item.component.d.ts +0 -13
- package/accordion/accordion.component.d.ts +0 -13
- package/accordion/accordion.module.d.ts +0 -8
- package/accordion/index.d.ts +0 -5
- package/accordion/public-api.d.ts +0 -3
- package/collapse/collapse.component.d.ts +0 -18
- package/collapse/collapse.directive.d.ts +0 -32
- package/collapse/collapse.module.d.ts +0 -8
- package/collapse/index.d.ts +0 -5
- package/collapse/public-api.d.ts +0 -3
- package/common/public-api.d.ts +0 -2
- package/common/types.d.ts +0 -4
- package/common/utils.d.ts +0 -3
- package/esm2022/accordion/accordion-item.component.mjs +0 -34
- package/esm2022/accordion/accordion.component.mjs +0 -25
- package/esm2022/accordion/accordion.module.mjs +0 -25
- package/esm2022/accordion/bootkit-ng0-accordion.mjs +0 -5
- package/esm2022/accordion/public-api.mjs +0 -4
- package/esm2022/bootkit-ng0.mjs +0 -5
- package/esm2022/collapse/bootkit-ng0-collapse.mjs +0 -5
- package/esm2022/collapse/collapse.component.mjs +0 -46
- package/esm2022/collapse/collapse.directive.mjs +0 -94
- package/esm2022/collapse/collapse.module.mjs +0 -23
- package/esm2022/collapse/public-api.mjs +0 -4
- package/esm2022/common/bootkit-ng0-common.mjs +0 -5
- package/esm2022/common/public-api.mjs +0 -3
- package/esm2022/common/types.mjs +0 -3
- package/esm2022/common/utils.mjs +0 -16
- package/esm2022/lib/index.mjs +0 -3
- package/esm2022/lib/types.mjs +0 -2
- package/esm2022/modal/bootkit-ng0-modal.mjs +0 -5
- package/esm2022/modal/modal.component.mjs +0 -44
- package/esm2022/modal/modal.module.mjs +0 -20
- package/esm2022/modal/public-api.mjs +0 -3
- package/esm2022/modal/types.mjs +0 -3
- package/esm2022/nav/bootkit-ng0-nav.mjs +0 -5
- package/esm2022/nav/nav-item.directive.mjs +0 -26
- package/esm2022/nav/nav-link.directive.mjs +0 -45
- package/esm2022/nav/nav.directive.mjs +0 -23
- package/esm2022/nav/nav.module.mjs +0 -35
- package/esm2022/nav/public-api.mjs +0 -7
- package/esm2022/nav/tab-content.component.mjs +0 -29
- package/esm2022/nav/tab-pane.directive.mjs +0 -20
- package/esm2022/offcanvas/bootkit-ng0-offcanvas.mjs +0 -5
- package/esm2022/offcanvas/offcanvas.directive.mjs +0 -118
- package/esm2022/offcanvas/offcanvas.module.mjs +0 -19
- package/esm2022/offcanvas/public-api.mjs +0 -3
- package/esm2022/overlay/bootkit-ng0-overlay.mjs +0 -5
- package/esm2022/overlay/overlay.directive.mjs +0 -111
- package/esm2022/overlay/overlay.module.mjs +0 -22
- package/esm2022/overlay/private/utils.mjs +0 -58
- package/esm2022/overlay/public-api.mjs +0 -3
- package/esm2022/popover/bootkit-ng0-popover.mjs +0 -5
- package/esm2022/popover/popover-wrapper/popover-wrapper.component.mjs +0 -29
- package/esm2022/popover/popover.directive.mjs +0 -140
- package/esm2022/popover/public-api.mjs +0 -2
- package/esm2022/popover/types.mjs +0 -2
- package/esm2022/public-api.mjs +0 -5
- package/esm2022/toast/bootkit-ng0-toast.mjs +0 -5
- package/esm2022/toast/public-api.mjs +0 -4
- package/esm2022/toast/toast-ref.mjs +0 -27
- package/esm2022/toast/toast.component.mjs +0 -68
- package/esm2022/toast/toast.service.mjs +0 -93
- package/esm2022/toast/types.mjs +0 -2
- package/esm2022/tooltip/bootkit-ng0-tooltip.mjs +0 -5
- package/esm2022/tooltip/public-api.mjs +0 -3
- package/esm2022/tooltip/tooltip-wrapper/tooltip-wrapper.component.mjs +0 -44
- package/esm2022/tooltip/tooltip.directive.mjs +0 -93
- package/esm2022/tooltip/types.mjs +0 -2
- package/fesm2022/bootkit-ng0-accordion.mjs.map +0 -1
- package/fesm2022/bootkit-ng0-collapse.mjs.map +0 -1
- package/fesm2022/bootkit-ng0-modal.mjs +0 -68
- package/fesm2022/bootkit-ng0-modal.mjs.map +0 -1
- package/fesm2022/bootkit-ng0-nav.mjs +0 -166
- package/fesm2022/bootkit-ng0-nav.mjs.map +0 -1
- package/fesm2022/bootkit-ng0-offcanvas.mjs.map +0 -1
- package/fesm2022/bootkit-ng0-overlay.mjs +0 -194
- package/fesm2022/bootkit-ng0-overlay.mjs.map +0 -1
- package/fesm2022/bootkit-ng0-popover.mjs.map +0 -1
- package/fesm2022/bootkit-ng0-toast.mjs.map +0 -1
- package/fesm2022/bootkit-ng0-tooltip.mjs.map +0 -1
- package/lib/index.d.ts +0 -2
- package/lib/types.d.ts +0 -1
- package/modal/index.d.ts +0 -5
- package/modal/modal.component.d.ts +0 -18
- package/modal/modal.module.d.ts +0 -7
- package/modal/public-api.d.ts +0 -2
- package/modal/types.d.ts +0 -2
- package/nav/index.d.ts +0 -5
- package/nav/nav-item.directive.d.ts +0 -13
- package/nav/nav-link.directive.d.ts +0 -16
- package/nav/nav.directive.d.ts +0 -11
- package/nav/nav.module.d.ts +0 -11
- package/nav/public-api.d.ts +0 -6
- package/nav/tab-content.component.d.ts +0 -15
- package/nav/tab-pane.directive.d.ts +0 -9
- package/offcanvas/index.d.ts +0 -5
- package/offcanvas/offcanvas.module.d.ts +0 -7
- package/offcanvas/public-api.d.ts +0 -2
- package/overlay/index.d.ts +0 -5
- package/overlay/overlay.directive.d.ts +0 -50
- package/overlay/overlay.module.d.ts +0 -10
- package/overlay/private/utils.d.ts +0 -10
- package/overlay/public-api.d.ts +0 -2
- package/popover/index.d.ts +0 -5
- package/popover/popover-wrapper/popover-wrapper.component.d.ts +0 -15
- package/popover/popover.directive.d.ts +0 -30
- package/popover/public-api.d.ts +0 -1
- package/popover/types.d.ts +0 -4
- package/public-api.d.ts +0 -1
- package/toast/index.d.ts +0 -5
- package/toast/public-api.d.ts +0 -3
- package/toast/toast-ref.d.ts +0 -12
- package/toast/toast.component.d.ts +0 -19
- package/toast/toast.service.d.ts +0 -43
- package/toast/types.d.ts +0 -44
- package/tooltip/index.d.ts +0 -5
- package/tooltip/public-api.d.ts +0 -2
- package/tooltip/tooltip-wrapper/tooltip-wrapper.component.d.ts +0 -19
- package/tooltip/tooltip.directive.d.ts +0 -24
- package/tooltip/types.d.ts +0 -3
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { input, Directive, model, ContentChildren, Component, NgModule } from '@angular/core';
|
|
3
|
+
import * as i1 from '@angular/common';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
import { trigger, state, transition, style, animate } from '@angular/animations';
|
|
6
|
+
|
|
7
|
+
class StepDirective {
|
|
8
|
+
templateRef;
|
|
9
|
+
id = input.required(...(ngDevMode ? [{ debugName: "id", alias: 'iscStep' }] : [{ alias: 'iscStep' }]));
|
|
10
|
+
constructor(templateRef) {
|
|
11
|
+
this.templateRef = templateRef;
|
|
12
|
+
}
|
|
13
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: StepDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
14
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.6", type: StepDirective, isStandalone: true, selector: "[ng0Step]", inputs: { id: { classPropertyName: "id", publicName: "iscStep", isSignal: true, isRequired: true, transformFunction: null } }, exportAs: ["ng0Step"], ngImport: i0 });
|
|
15
|
+
}
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: StepDirective, decorators: [{
|
|
17
|
+
type: Directive,
|
|
18
|
+
args: [{
|
|
19
|
+
selector: '[ng0Step]',
|
|
20
|
+
exportAs: 'ng0Step',
|
|
21
|
+
standalone: true
|
|
22
|
+
}]
|
|
23
|
+
}], ctorParameters: () => [{ type: i0.TemplateRef }] });
|
|
24
|
+
|
|
25
|
+
class StepperComponent {
|
|
26
|
+
step = model.required(...(ngDevMode ? [{ debugName: "step" }] : []));
|
|
27
|
+
_steps;
|
|
28
|
+
constructor() {
|
|
29
|
+
}
|
|
30
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: StepperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
31
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: StepperComponent, isStandalone: true, selector: "ng0-stepper", inputs: { step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { step: "stepChange" }, queries: [{ propertyName: "_steps", predicate: StepDirective }], exportAs: ["ng0Stepper"], ngImport: i0, template: "@for(s of _steps; track s.id(); let index = $index) {\r\n@let show=s.id() === step();\r\n\r\n<div [@stepAnimation]=\"show ? 'show' : 'hide'\" [class.d-none]=\"!show\">\r\n @if(show) {\r\n <ng-container [ngTemplateOutlet]=\"s.templateRef\"></ng-container>\r\n }\r\n</div>\r\n}", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [
|
|
32
|
+
trigger('stepAnimation', [
|
|
33
|
+
state('hide', style({
|
|
34
|
+
opacity: 0,
|
|
35
|
+
})),
|
|
36
|
+
state('show', style({
|
|
37
|
+
opacity: 1,
|
|
38
|
+
})),
|
|
39
|
+
transition('show <=> hide', [
|
|
40
|
+
animate('.3s ease-out')
|
|
41
|
+
])
|
|
42
|
+
])
|
|
43
|
+
] });
|
|
44
|
+
}
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: StepperComponent, decorators: [{
|
|
46
|
+
type: Component,
|
|
47
|
+
args: [{ selector: 'ng0-stepper', exportAs: 'ng0Stepper', standalone: true, imports: [
|
|
48
|
+
CommonModule
|
|
49
|
+
], animations: [
|
|
50
|
+
trigger('stepAnimation', [
|
|
51
|
+
state('hide', style({
|
|
52
|
+
opacity: 0,
|
|
53
|
+
})),
|
|
54
|
+
state('show', style({
|
|
55
|
+
opacity: 1,
|
|
56
|
+
})),
|
|
57
|
+
transition('show <=> hide', [
|
|
58
|
+
animate('.3s ease-out')
|
|
59
|
+
])
|
|
60
|
+
])
|
|
61
|
+
], template: "@for(s of _steps; track s.id(); let index = $index) {\r\n@let show=s.id() === step();\r\n\r\n<div [@stepAnimation]=\"show ? 'show' : 'hide'\" [class.d-none]=\"!show\">\r\n @if(show) {\r\n <ng-container [ngTemplateOutlet]=\"s.templateRef\"></ng-container>\r\n }\r\n</div>\r\n}", styles: [":host{display:block}\n"] }]
|
|
62
|
+
}], ctorParameters: () => [], propDecorators: { _steps: [{
|
|
63
|
+
type: ContentChildren,
|
|
64
|
+
args: [StepDirective]
|
|
65
|
+
}] } });
|
|
66
|
+
|
|
67
|
+
const items = [
|
|
68
|
+
StepperComponent,
|
|
69
|
+
StepDirective
|
|
70
|
+
];
|
|
71
|
+
class StepperModule {
|
|
72
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: StepperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
73
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.6", ngImport: i0, type: StepperModule, imports: [StepperComponent,
|
|
74
|
+
StepDirective], exports: [StepperComponent,
|
|
75
|
+
StepDirective] });
|
|
76
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: StepperModule, imports: [StepperComponent] });
|
|
77
|
+
}
|
|
78
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: StepperModule, decorators: [{
|
|
79
|
+
type: NgModule,
|
|
80
|
+
args: [{
|
|
81
|
+
imports: items,
|
|
82
|
+
exports: items
|
|
83
|
+
}]
|
|
84
|
+
}] });
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Generated bundle index. Do not edit.
|
|
88
|
+
*/
|
|
89
|
+
|
|
90
|
+
export { StepDirective, StepperComponent, StepperModule };
|
|
91
|
+
//# sourceMappingURL=bootkit-ng0-components-stepper.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootkit-ng0-components-stepper.mjs","sources":["../../../projects/ng0/components/stepper/step.directive.ts","../../../projects/ng0/components/stepper/stepper.component.ts","../../../projects/ng0/components/stepper/stepper.component.html","../../../projects/ng0/components/stepper/stepper.module.ts","../../../projects/ng0/components/stepper/bootkit-ng0-components-stepper.ts"],"sourcesContent":["import { Directive, input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[ng0Step]',\r\n exportAs: 'ng0Step',\r\n standalone: true\r\n})\r\nexport class StepDirective {\r\n public id = input.required<any>({alias: 'iscStep'});\r\n\r\n constructor(public readonly templateRef: TemplateRef<any>) {\r\n }\r\n}\r\n","import { Component, ContentChildren, QueryList, model } from '@angular/core';\r\nimport { StepDirective } from './step.directive';\r\nimport { CommonModule } from '@angular/common';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\n\r\n@Component({\r\n selector: 'ng0-stepper',\r\n exportAs: 'ng0Stepper',\r\n templateUrl: './stepper.component.html',\r\n styles: `:host{display: block}`,\r\n standalone: true,\r\n imports: [\r\n CommonModule\r\n ],\r\n animations: [\r\n trigger('stepAnimation', [\r\n state('hide', style({\r\n opacity: 0,\r\n })),\r\n state('show', style({\r\n opacity: 1,\r\n })),\r\n transition('show <=> hide', [\r\n animate('.3s ease-out')\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class StepperComponent {\r\n public step = model.required<any>();\r\n @ContentChildren(StepDirective) protected _steps!: QueryList<StepDirective>;\r\n\r\n constructor() {\r\n }\r\n}\r\n","@for(s of _steps; track s.id(); let index = $index) {\r\n@let show=s.id() === step();\r\n\r\n<div [@stepAnimation]=\"show ? 'show' : 'hide'\" [class.d-none]=\"!show\">\r\n @if(show) {\r\n <ng-container [ngTemplateOutlet]=\"s.templateRef\"></ng-container>\r\n }\r\n</div>\r\n}","import { NgModule } from '@angular/core';\r\nimport { StepDirective } from './step.directive';\r\nimport { StepperComponent } from './stepper.component';\r\n\r\nconst items = [\r\n StepperComponent,\r\n StepDirective\r\n];\r\n\r\n@NgModule({\r\n imports: items,\r\n exports: items\r\n})\r\nexport class StepperModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { input, TemplateRef, Input, ContentChild, Directive, signal, HostBinding, ContentChildren, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
|
|
3
|
+
import * as i2 from '@angular/common';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
import * as i3 from '@angular/forms';
|
|
6
|
+
import { FormsModule } from '@angular/forms';
|
|
7
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
8
|
+
import { formatString } from '@bootkit/ng0/common';
|
|
9
|
+
import * as i1 from '@bootkit/ng0/localization';
|
|
10
|
+
import { LocalizationModule } from '@bootkit/ng0/localization';
|
|
11
|
+
import { convertToDataSource, DataRequest } from '@bootkit/ng0/data';
|
|
12
|
+
import { PaginationComponent } from '@bootkit/ng0/components/pagination';
|
|
13
|
+
|
|
14
|
+
class TableColumnDirective {
|
|
15
|
+
field;
|
|
16
|
+
title;
|
|
17
|
+
emptyCellText = input(...(ngDevMode ? [undefined, { debugName: "emptyCellText" }] : []));
|
|
18
|
+
/**
|
|
19
|
+
* Type of the table cell.
|
|
20
|
+
*/
|
|
21
|
+
type = input(...(ngDevMode ? [undefined, { debugName: "type" }] : []));
|
|
22
|
+
template;
|
|
23
|
+
cellClass;
|
|
24
|
+
shrink = false;
|
|
25
|
+
bold = false;
|
|
26
|
+
filterable = false;
|
|
27
|
+
filterValue;
|
|
28
|
+
filterField;
|
|
29
|
+
constructor() {
|
|
30
|
+
}
|
|
31
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: TableColumnDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
32
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.6", type: TableColumnDirective, isStandalone: true, selector: "ng0-table-col", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: false, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: false, isRequired: false, transformFunction: null }, emptyCellText: { classPropertyName: "emptyCellText", publicName: "emptyCellText", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, cellClass: { classPropertyName: "cellClass", publicName: "cellClass", isSignal: false, isRequired: false, transformFunction: null }, shrink: { classPropertyName: "shrink", publicName: "shrink", isSignal: false, isRequired: false, transformFunction: null }, bold: { classPropertyName: "bold", publicName: "bold", isSignal: false, isRequired: false, transformFunction: null }, filterable: { classPropertyName: "filterable", publicName: "filterable", isSignal: false, isRequired: false, transformFunction: null }, filterValue: { classPropertyName: "filterValue", publicName: "filterValue", isSignal: false, isRequired: false, transformFunction: null }, filterField: { classPropertyName: "filterField", publicName: "filterField", isSignal: false, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0 });
|
|
33
|
+
}
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: TableColumnDirective, decorators: [{
|
|
35
|
+
type: Directive,
|
|
36
|
+
args: [{
|
|
37
|
+
selector: 'ng0-table-col',
|
|
38
|
+
standalone: true,
|
|
39
|
+
}]
|
|
40
|
+
}], ctorParameters: () => [], propDecorators: { field: [{
|
|
41
|
+
type: Input
|
|
42
|
+
}], title: [{
|
|
43
|
+
type: Input
|
|
44
|
+
}], template: [{
|
|
45
|
+
type: ContentChild,
|
|
46
|
+
args: [TemplateRef]
|
|
47
|
+
}], cellClass: [{
|
|
48
|
+
type: Input
|
|
49
|
+
}], shrink: [{
|
|
50
|
+
type: Input
|
|
51
|
+
}], bold: [{
|
|
52
|
+
type: Input
|
|
53
|
+
}], filterable: [{
|
|
54
|
+
type: Input
|
|
55
|
+
}], filterValue: [{
|
|
56
|
+
type: Input
|
|
57
|
+
}], filterField: [{
|
|
58
|
+
type: Input
|
|
59
|
+
}] } });
|
|
60
|
+
|
|
61
|
+
class TableDetailRowDirective {
|
|
62
|
+
templateRef;
|
|
63
|
+
showCallback;
|
|
64
|
+
constructor(templateRef) {
|
|
65
|
+
this.templateRef = templateRef;
|
|
66
|
+
}
|
|
67
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: TableDetailRowDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
68
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.6", type: TableDetailRowDirective, isStandalone: true, selector: "[ng0-table-detail-row]", inputs: { showCallback: "showCallback" }, ngImport: i0 });
|
|
69
|
+
}
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: TableDetailRowDirective, decorators: [{
|
|
71
|
+
type: Directive,
|
|
72
|
+
args: [{
|
|
73
|
+
selector: '[ng0-table-detail-row]',
|
|
74
|
+
standalone: true,
|
|
75
|
+
}]
|
|
76
|
+
}], ctorParameters: () => [{ type: i0.TemplateRef }], propDecorators: { showCallback: [{
|
|
77
|
+
type: Input
|
|
78
|
+
}] } });
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* A generic table component that can display data in a tabular format.
|
|
82
|
+
* It supports features like pagination, sorting, filtering, and row details.
|
|
83
|
+
* It can be used with any data source that implements the DataSource interface.
|
|
84
|
+
*/
|
|
85
|
+
class TableComponent {
|
|
86
|
+
_ls;
|
|
87
|
+
_destroyRef;
|
|
88
|
+
/**
|
|
89
|
+
* The data source for the table.
|
|
90
|
+
* This can be an array of data, a function that returns an observable of data,
|
|
91
|
+
* or an instance of DataSource.
|
|
92
|
+
*/
|
|
93
|
+
source = input.required(...(ngDevMode ? [{ debugName: "source" }] : []));
|
|
94
|
+
/**
|
|
95
|
+
* If true, the table will automatically load data when initialized.
|
|
96
|
+
* This is useful for tables that need to display data immediately without user interaction.
|
|
97
|
+
*/
|
|
98
|
+
autoLoad = input(true, ...(ngDevMode ? [{ debugName: "autoLoad" }] : []));
|
|
99
|
+
/**
|
|
100
|
+
* If true, the table will show row numbers.
|
|
101
|
+
* This will add a column to the left of the table with the row numbers.
|
|
102
|
+
*/
|
|
103
|
+
showRowNumbers = input(false, ...(ngDevMode ? [{ debugName: "showRowNumbers" }] : []));
|
|
104
|
+
/**
|
|
105
|
+
* If true, the table will show the header row.
|
|
106
|
+
*/
|
|
107
|
+
showHeader = input(true, ...(ngDevMode ? [{ debugName: "showHeader" }] : []));
|
|
108
|
+
/**
|
|
109
|
+
* If true, the table will support pagination.
|
|
110
|
+
* If false, the table will load all records at once.
|
|
111
|
+
*/
|
|
112
|
+
pageable = input(undefined, ...(ngDevMode ? [{ debugName: "pageable", transform: v => {
|
|
113
|
+
if (v === undefined || v === null || v === false) {
|
|
114
|
+
return undefined;
|
|
115
|
+
}
|
|
116
|
+
if (v === true) {
|
|
117
|
+
v = {};
|
|
118
|
+
}
|
|
119
|
+
v.pageIndex = v.pageIndex ?? 1;
|
|
120
|
+
v.pageSize = v.pageSize ?? 10;
|
|
121
|
+
v.maxVisiblePages = v.maxVisiblePages ?? 10;
|
|
122
|
+
v.showPagingControls = v.showPagingControls ?? true;
|
|
123
|
+
return v;
|
|
124
|
+
} }] : [{
|
|
125
|
+
transform: v => {
|
|
126
|
+
if (v === undefined || v === null || v === false) {
|
|
127
|
+
return undefined;
|
|
128
|
+
}
|
|
129
|
+
if (v === true) {
|
|
130
|
+
v = {};
|
|
131
|
+
}
|
|
132
|
+
v.pageIndex = v.pageIndex ?? 1;
|
|
133
|
+
v.pageSize = v.pageSize ?? 10;
|
|
134
|
+
v.maxVisiblePages = v.maxVisiblePages ?? 10;
|
|
135
|
+
v.showPagingControls = v.showPagingControls ?? true;
|
|
136
|
+
return v;
|
|
137
|
+
}
|
|
138
|
+
}]));
|
|
139
|
+
/**
|
|
140
|
+
* If true, the table will support sorting.
|
|
141
|
+
* This will add a sort icon to each column header.
|
|
142
|
+
*/
|
|
143
|
+
sortable = input(true, ...(ngDevMode ? [{ debugName: "sortable" }] : []));
|
|
144
|
+
/**
|
|
145
|
+
* The CSS class to apply to the table element.
|
|
146
|
+
* This can be used to apply custom styles to the table.
|
|
147
|
+
*/
|
|
148
|
+
tableClass = input(...(ngDevMode ? [undefined, { debugName: "tableClass" }] : []));
|
|
149
|
+
/**
|
|
150
|
+
* The CSS class to apply to the header element.
|
|
151
|
+
*/
|
|
152
|
+
headerClass = input(...(ngDevMode ? [undefined, { debugName: "headerClass" }] : []));
|
|
153
|
+
/**
|
|
154
|
+
* The caption of the table.
|
|
155
|
+
*/
|
|
156
|
+
caption = input(...(ngDevMode ? [undefined, { debugName: "caption" }] : []));
|
|
157
|
+
/**
|
|
158
|
+
* The height of the table in pixels.
|
|
159
|
+
* This can be used to set a fixed height for the table.
|
|
160
|
+
*/
|
|
161
|
+
height = input(...(ngDevMode ? [undefined, { debugName: "height" }] : []));
|
|
162
|
+
/**
|
|
163
|
+
* If true, the table will support filtering.
|
|
164
|
+
* This will add a filter input to each column header.
|
|
165
|
+
*/
|
|
166
|
+
filterable = input(false, ...(ngDevMode ? [{ debugName: "filterable" }] : []));
|
|
167
|
+
/**
|
|
168
|
+
* The indicator to show while the table is loading data for the first time.
|
|
169
|
+
*/
|
|
170
|
+
loadingIndicator = input('spinner', ...(ngDevMode ? [{ debugName: "loadingIndicator", transform: v => {
|
|
171
|
+
if (typeof v === 'boolean') {
|
|
172
|
+
return v ? 'spinner' : 'none';
|
|
173
|
+
}
|
|
174
|
+
return v;
|
|
175
|
+
} }] : [{
|
|
176
|
+
transform: v => {
|
|
177
|
+
if (typeof v === 'boolean') {
|
|
178
|
+
return v ? 'spinner' : 'none';
|
|
179
|
+
}
|
|
180
|
+
return v;
|
|
181
|
+
}
|
|
182
|
+
}]));
|
|
183
|
+
/** If true, the table will show a loading cover while data is being loaded.
|
|
184
|
+
* This can be used to prevent user interaction with the table while loading.
|
|
185
|
+
* This cover is not displayed when the table is loading for the first time.
|
|
186
|
+
* Instead, the table will show a loading based on loadingIndicator settings.
|
|
187
|
+
*/
|
|
188
|
+
loadingCover = input('spinner', ...(ngDevMode ? [{ debugName: "loadingCover", transform: v => {
|
|
189
|
+
if (typeof v === 'boolean') {
|
|
190
|
+
return v ? 'spinner' : 'none';
|
|
191
|
+
}
|
|
192
|
+
return v;
|
|
193
|
+
} }] : [{
|
|
194
|
+
transform: v => {
|
|
195
|
+
if (typeof v === 'boolean') {
|
|
196
|
+
return v ? 'spinner' : 'none';
|
|
197
|
+
}
|
|
198
|
+
return v;
|
|
199
|
+
}
|
|
200
|
+
}]));
|
|
201
|
+
// @Input() rowColor?: (row: any) => BootstrapColor;
|
|
202
|
+
_columns;
|
|
203
|
+
_detailRow;
|
|
204
|
+
_dataResult = signal(undefined, ...(ngDevMode ? [{ debugName: "_dataResult" }] : []));
|
|
205
|
+
_lastRequest; // The last data request made to the data source
|
|
206
|
+
_loadingRequest; // The current data request being processed
|
|
207
|
+
_rowStates = new Map();
|
|
208
|
+
_formatString = formatString;
|
|
209
|
+
_changeSubscription;
|
|
210
|
+
_dataSource;
|
|
211
|
+
_pagingFormatter;
|
|
212
|
+
_lastError;
|
|
213
|
+
constructor(_ls, _destroyRef) {
|
|
214
|
+
this._ls = _ls;
|
|
215
|
+
this._destroyRef = _destroyRef;
|
|
216
|
+
}
|
|
217
|
+
ngOnInit() {
|
|
218
|
+
this._dataSource = convertToDataSource(this.source());
|
|
219
|
+
const locale = this._ls.get();
|
|
220
|
+
this._pagingFormatter = locale?.definition.components?.table?.pagingInfo ??
|
|
221
|
+
((o) => `Showing ${o.firstRecord}-${o.lastRecord} of ${o.totalRecords} records`);
|
|
222
|
+
// this._changeSubscription = this.dataSource().change.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(result => {
|
|
223
|
+
// this.reload();
|
|
224
|
+
// });
|
|
225
|
+
if (this.autoLoad()) {
|
|
226
|
+
this.load(this.pageable()?.pageIndex);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
ngAfterContentInit() {
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Load data for the specified page index (optional).
|
|
233
|
+
* @param pageIndex The page index to load.
|
|
234
|
+
*/
|
|
235
|
+
load(pageIndex) {
|
|
236
|
+
let page;
|
|
237
|
+
let filters = [];
|
|
238
|
+
let sort;
|
|
239
|
+
if (this.filterable()) {
|
|
240
|
+
this._columns.forEach(col => {
|
|
241
|
+
if (col.filterable && col.filterValue != '' && col.filterValue != undefined) {
|
|
242
|
+
filters.push({ field: col.filterField ?? col.field, value: col.filterValue, operator: 'EQ' });
|
|
243
|
+
}
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
if (this.pageable()) {
|
|
247
|
+
page = {
|
|
248
|
+
index: pageIndex || this._lastRequest?.page?.index || 1,
|
|
249
|
+
size: this._lastRequest?.page?.size || 10,
|
|
250
|
+
zeroBased: false
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
if (this.sortable()) {
|
|
254
|
+
// sort = ...
|
|
255
|
+
}
|
|
256
|
+
this._loadingRequest = new DataRequest({ page, filters, sort, select: [], computeTotal: true });
|
|
257
|
+
this._dataSource.load(this._loadingRequest)
|
|
258
|
+
.pipe(takeUntilDestroyed(this._destroyRef)).subscribe({
|
|
259
|
+
next: result => {
|
|
260
|
+
this._dataResult.set(result);
|
|
261
|
+
this._lastRequest = this._loadingRequest;
|
|
262
|
+
this._loadingRequest = undefined;
|
|
263
|
+
this._lastError = undefined;
|
|
264
|
+
}, error: err => {
|
|
265
|
+
this._lastError = err;
|
|
266
|
+
this._lastRequest = this._loadingRequest;
|
|
267
|
+
this._loadingRequest = undefined;
|
|
268
|
+
}
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Determines if the table is currently loading data.
|
|
273
|
+
*/
|
|
274
|
+
get isLoading() {
|
|
275
|
+
return this._dataSource.isLoading;
|
|
276
|
+
}
|
|
277
|
+
_getCellValue(row, col) {
|
|
278
|
+
var subFields = col.field.split('.');
|
|
279
|
+
let value = row[subFields[0]];
|
|
280
|
+
for (let i = 1; i < subFields.length; i++) {
|
|
281
|
+
if (value == null)
|
|
282
|
+
break;
|
|
283
|
+
value = value[subFields[i]];
|
|
284
|
+
}
|
|
285
|
+
return value;
|
|
286
|
+
}
|
|
287
|
+
_onPageChange(pageIndex) {
|
|
288
|
+
this.load(pageIndex);
|
|
289
|
+
}
|
|
290
|
+
_onToggleRowDetailClick(row) {
|
|
291
|
+
var state = this._rowStates.get(row);
|
|
292
|
+
if (!state) {
|
|
293
|
+
this._rowStates.set(row, { expanded: true });
|
|
294
|
+
}
|
|
295
|
+
else {
|
|
296
|
+
state.expanded = !state.expanded;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
isRowExpanded(row) {
|
|
300
|
+
var state = this._rowStates.get(row);
|
|
301
|
+
return state == undefined ? false : state.expanded;
|
|
302
|
+
}
|
|
303
|
+
ngOnDestroy() {
|
|
304
|
+
this._changeSubscription?.unsubscribe();
|
|
305
|
+
}
|
|
306
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: TableComponent, deps: [{ token: i1.LocalizationService }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
307
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.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 }, pageable: { classPropertyName: "pageable", publicName: "pageable", isSignal: true, isRequired: false, transformFunction: null }, sortable: { classPropertyName: "sortable", publicName: "sortable", 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 }, loadingIndicator: { classPropertyName: "loadingIndicator", publicName: "loadingIndicator", isSignal: true, isRequired: false, transformFunction: null }, loadingCover: { classPropertyName: "loadingCover", publicName: "loadingCover", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.ng0-loading": "this.isLoading" } }, queries: [{ propertyName: "_detailRow", first: true, predicate: TableDetailRowDirective, descendants: true }, { propertyName: "_columns", predicate: TableColumnDirective }], exportAs: ["ng0Table"], ngImport: i0, template: "@let $dataResult = _dataResult();\r\n@let $pageable = pageable();\r\n\r\n@let $pageIndex = _lastRequest?.page?.index ?? 1;\r\n\r\n@let $data = $dataResult?.data;\r\n@let $anyRecords = $data && $data.length > 0;\r\n@let $totalRecordsCount = $dataResult?.total;\r\n@let $firstRecord = $pageable ? ($pageable.pageSize! * ($pageIndex - 1) + 1) : 1;\r\n@let $lastRecord = $data ? $firstRecord + $data.length - 1 : 1;\r\n\r\n@let $isLoading = _dataSource.isLoading();\r\n@let $isFirstLoad = $dataResult == undefined;\r\n\r\n@let $columnsCount = _columns.length + (showRowNumbers() ? 1 : 0);\r\n@let $tableLocale = _ls.get()?.definition?.components?.table;\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 @if (showHeader()) {\r\n <thead [ngClass]=\"headerClass()\">\r\n <tr>\r\n @if (_detailRow) {\r\n <th></th>\r\n }\r\n\r\n @if (showRowNumbers()) {\r\n <th class=\"row-number text-muted\">#</th>\r\n }\r\n\r\n @for (col of _columns; track $index) {\r\n <th>{{ col.title }}</th>\r\n }\r\n </tr>\r\n </thead>\r\n }\r\n\r\n @if (filterable()) {\r\n <thead>\r\n <tr>\r\n @if (_detailRow) {\r\n <th></th>\r\n }\r\n\r\n @if (showRowNumbers()) {\r\n <th></th>\r\n }\r\n\r\n @for (col of _columns; track $index) {\r\n <!-- <th>\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)=\"load()\">\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)=\"load()\">\r\n }\r\n }\r\n </th> -->\r\n }\r\n </tr>\r\n </thead>\r\n }\r\n\r\n <tbody>\r\n @if ($isLoading && $isFirstLoad && loadingIndicator()) {\r\n <tr class=\"ng0-table-loading-row\">\r\n <td [attr.colspan]=\"$columnsCount\">\r\n @switch (loadingIndicator()) {\r\n @case ('spinner') {\r\n <div class=\"text-center\">\r\n <div class=\"spinner-border\" role=\"status\"></div>\r\n </div>\r\n }\r\n <!-- @case ('placeholder') {\r\n <p class=\"text-secondary placeholder-glow mb-0\">\r\n <span class=\"placeholder col-3\"></span>\r\n <span class=\"placeholder col-4\"></span>\r\n <span class=\"placeholder col-4\"></span>\r\n <span class=\"placeholder col-6\"></span>\r\n <span class=\"placeholder col-8\"></span>\r\n </p>\r\n } -->\r\n }\r\n </td>\r\n </tr>\r\n } @else {\r\n @if ($data) {\r\n @if ($data.length > 0) {\r\n @for (row of $data; track $index) {\r\n <tr [class.table-active]=\"isRowExpanded(row)\">\r\n @if (_detailRow) {\r\n <td class=\"detail-row-expander\">\r\n @if (_detailRow.showCallback == null || _detailRow.showCallback(row)) {\r\n <button class=\"btn\" (click)=\"_onToggleRowDetailClick(row)\">\r\n @if (isRowExpanded(row)) {\r\n <i class=\"far fa-minus\"></i>\r\n } @else {\r\n <i class=\"far fa-plus\"></i>\r\n }\r\n </button>\r\n }\r\n </td>\r\n }\r\n\r\n @if (showRowNumbers()) {\r\n <td class=\"ng0-table-row-number\">\r\n {{ $firstRecord + $index }}\r\n </td>\r\n }\r\n\r\n @for (col of _columns; track $index) {\r\n <td\r\n [ngClass]=\"col.cellClass\"\r\n [class.shrinked]=\"col.shrink\"\r\n [class.fw-bold]=\"col.bold\"\r\n >\r\n @if (col.template) {\r\n <ng-container\r\n *ngTemplateOutlet=\"col.template; context: { $implicit: row }\"\r\n ></ng-container>\r\n } @else if (col.field) {\r\n @let cellValue = _getCellValue(row, col);\r\n\r\n @if ((cellValue === null || cellValue === undefined) && col.emptyCellText()) {\r\n {{ col.emptyCellText() }}\r\n } @else {\r\n @if (col.type()) {\r\n @let type = $any(col.type());\r\n\r\n @if (type == \"date\" || type.date) {\r\n {{ cellValue | ng0Date }}\r\n } @else if (type == \"number\" || type.number) {\r\n {{ cellValue | number }}\r\n } @else if (type == \"currency\") {\r\n {{ cellValue | currency }}\r\n } @else if (type.enum) {\r\n {{ cellValue | ng0TranslateEnum: type.enum : type.returnEnumAsFallback }}\r\n } @else if (type.boolean || type == \"boolean\") {\r\n {{ cellValue | ng0LocalizeBool: type.boolean.false ?? \"false\" : type.boolean.false ?? \"true\" }}\r\n }\r\n } @else {\r\n {{ cellValue }}\r\n }\r\n }\r\n }\r\n </td>\r\n }\r\n </tr>\r\n\r\n @if (_detailRow && isRowExpanded(row)) {\r\n <tr class=\"detail-row\">\r\n <td\r\n [attr.colspan]=\"_columns.length + (showRowNumbers() ? 1 : 0) + 1\"\r\n class=\"ps-2 pb-4\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"_detailRow.templateRef; context: { $implicit: row }\"\r\n ></ng-container>\r\n </td>\r\n </tr>\r\n }\r\n }\r\n } @else {\r\n <tr class=\"ng0-table-no-records-row\">\r\n <td [attr.colSpan]=\"$columnsCount\" class=\"text-center p-2\">\r\n {{ $tableLocale?.noRecords ?? 'No Records.' }}\r\n </td>\r\n </tr>\r\n }\r\n } @else if (_lastError) {\r\n <tr class=\"ng0-table-error-row\">\r\n <td [attr.colSpan]=\"$columnsCount\" class=\"p-2\">\r\n <div class=\"d-flex align-items-baseline\">\r\n <span>{{ $tableLocale?.loadError ?? 'Error loading data.' }} </span>\r\n <button (click)=\"load()\" class=\"btn btn-warning ms-auto\">\r\n {{ \"retry\" | ng0Translate }}\r\n </button>\r\n </div>\r\n </td>\r\n </tr>\r\n }\r\n }\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<div class=\"ng0-table-footer d-flex align-items-baseline\">\r\n @if ($pageable && $pageable.showPagingControls && $anyRecords && $totalRecordsCount! > 0) {\r\n <div class=\"ng0-table-pagination me-2\">\r\n <ng0-pagination\r\n class=\"mb-0 d-inline-block\"\r\n [showFirstLastButtons]=\"$pageable.showFirstLastButtons == true\"\r\n [showNextPreviousButtons]=\"$pageable.showNextPreviousButtons == true\"\r\n [totalRecords]=\"$totalRecordsCount!\"\r\n [pageSize]=\"$pageable.pageSize!\"\r\n [selectedPage]=\"$pageIndex\"\r\n (itemClick)=\"_onPageChange($event)\"\r\n [maxVisiblePages]=\"$pageable.maxVisiblePages!\"\r\n >\r\n <ng-container ngProjectAs=\"first\">\r\n <ng-content select=\"paging-first\">\r\n {{ \"first\" | ng0Translate }}\r\n </ng-content>\r\n </ng-container>\r\n\r\n <ng-container ngProjectAs=\"last\">\r\n <ng-content select=\"paging-last\">\r\n {{ \"last\" | ng0Translate }}\r\n </ng-content>\r\n </ng-container>\r\n\r\n <ng-container ngProjectAs=\"next\">\r\n <ng-content select=\"paging-next\">\r\n {{ \"next\" | ng0Translate }}\r\n </ng-content>\r\n </ng-container>\r\n\r\n <ng-container ngProjectAs=\"previous\">\r\n <ng-content select=\"paging-previous\">\r\n {{ \"previous\" | ng0Translate }}\r\n </ng-content>\r\n </ng-container>\r\n </ng0-pagination>\r\n </div>\r\n\r\n @if ($pageable.showPageSizeOptions || $pageable.showPageSizeOptions == undefined) {\r\n <div class=\"ng0-table-paging-options\">\r\n <select name=\"pageSizeOptions\" class=\"form-select w-auto d-inline-block\">\r\n <option [ngValue]=\"10\" selected>10</option>\r\n </select>\r\n </div>\r\n }\r\n\r\n @if ($pageable.showPagingInfo == undefined || $pageable.showPagingInfo) {\r\n <div class=\"ng0-table-paging-info ms-auto\">\r\n <ng-content select=\"paging-info\">\r\n {{\r\n _pagingFormatter({firstRecord: $firstRecord, lastRecord: $lastRecord, totalRecords: $totalRecordsCount!, currentPage: $pageIndex!})\r\n }}\r\n </ng-content>\r\n </div>\r\n }\r\n }\r\n</div>\r\n\r\n@if ($isLoading && !$isFirstLoad && loadingCover()) {\r\n <div class=\"ng0-table-loading-cover text-center\">\r\n @if (loadingCover() == 'spinner') {\r\n <div class=\"spinner-border\" role=\"status\"></div>\r\n }\r\n </div>\r\n}\r\n", styles: [":host{display:flex;flex-direction:column;position:relative}@starting-style{.ng0-table-loading-cover{background-color:#0000}}table{margin-bottom:0}tbody{position:relative}td.row-number{width:0}td.shrinked{width:0;white-space:nowrap}.ng0-table-loading-cover{position:absolute;inset:0;background-color:#0000000d;transition:background-color .2s;z-index:1000;display:flex;align-items:center;justify-content: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}.ng0-table-footer{margin-top:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "component", type: PaginationComponent, selector: "ng0-pagination", inputs: ["totalRecords", "pageSize", "selectedPage", "maxVisiblePages", "showNextPreviousButtons", "showFirstLastButtons"], outputs: ["itemClick"], exportAs: ["ng0Pagination"] }, { kind: "pipe", type: i2.DecimalPipe, name: "number" }, { kind: "pipe", type: i2.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i1.TranslatePipe, name: "ng0Translate" }, { kind: "pipe", type: i1.TranslateEnumPipe, name: "ng0TranslateEnum" }, { kind: "pipe", type: i1.DatePipe, name: "ng0Date" }, { kind: "pipe", type: i1.LocalizeBooleanPipe, name: "ng0LocalizeBool" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
308
|
+
}
|
|
309
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: TableComponent, decorators: [{
|
|
310
|
+
type: Component,
|
|
311
|
+
args: [{ selector: 'ng0-table', exportAs: 'ng0Table', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
312
|
+
CommonModule,
|
|
313
|
+
FormsModule,
|
|
314
|
+
LocalizationModule,
|
|
315
|
+
PaginationComponent
|
|
316
|
+
], template: "@let $dataResult = _dataResult();\r\n@let $pageable = pageable();\r\n\r\n@let $pageIndex = _lastRequest?.page?.index ?? 1;\r\n\r\n@let $data = $dataResult?.data;\r\n@let $anyRecords = $data && $data.length > 0;\r\n@let $totalRecordsCount = $dataResult?.total;\r\n@let $firstRecord = $pageable ? ($pageable.pageSize! * ($pageIndex - 1) + 1) : 1;\r\n@let $lastRecord = $data ? $firstRecord + $data.length - 1 : 1;\r\n\r\n@let $isLoading = _dataSource.isLoading();\r\n@let $isFirstLoad = $dataResult == undefined;\r\n\r\n@let $columnsCount = _columns.length + (showRowNumbers() ? 1 : 0);\r\n@let $tableLocale = _ls.get()?.definition?.components?.table;\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 @if (showHeader()) {\r\n <thead [ngClass]=\"headerClass()\">\r\n <tr>\r\n @if (_detailRow) {\r\n <th></th>\r\n }\r\n\r\n @if (showRowNumbers()) {\r\n <th class=\"row-number text-muted\">#</th>\r\n }\r\n\r\n @for (col of _columns; track $index) {\r\n <th>{{ col.title }}</th>\r\n }\r\n </tr>\r\n </thead>\r\n }\r\n\r\n @if (filterable()) {\r\n <thead>\r\n <tr>\r\n @if (_detailRow) {\r\n <th></th>\r\n }\r\n\r\n @if (showRowNumbers()) {\r\n <th></th>\r\n }\r\n\r\n @for (col of _columns; track $index) {\r\n <!-- <th>\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)=\"load()\">\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)=\"load()\">\r\n }\r\n }\r\n </th> -->\r\n }\r\n </tr>\r\n </thead>\r\n }\r\n\r\n <tbody>\r\n @if ($isLoading && $isFirstLoad && loadingIndicator()) {\r\n <tr class=\"ng0-table-loading-row\">\r\n <td [attr.colspan]=\"$columnsCount\">\r\n @switch (loadingIndicator()) {\r\n @case ('spinner') {\r\n <div class=\"text-center\">\r\n <div class=\"spinner-border\" role=\"status\"></div>\r\n </div>\r\n }\r\n <!-- @case ('placeholder') {\r\n <p class=\"text-secondary placeholder-glow mb-0\">\r\n <span class=\"placeholder col-3\"></span>\r\n <span class=\"placeholder col-4\"></span>\r\n <span class=\"placeholder col-4\"></span>\r\n <span class=\"placeholder col-6\"></span>\r\n <span class=\"placeholder col-8\"></span>\r\n </p>\r\n } -->\r\n }\r\n </td>\r\n </tr>\r\n } @else {\r\n @if ($data) {\r\n @if ($data.length > 0) {\r\n @for (row of $data; track $index) {\r\n <tr [class.table-active]=\"isRowExpanded(row)\">\r\n @if (_detailRow) {\r\n <td class=\"detail-row-expander\">\r\n @if (_detailRow.showCallback == null || _detailRow.showCallback(row)) {\r\n <button class=\"btn\" (click)=\"_onToggleRowDetailClick(row)\">\r\n @if (isRowExpanded(row)) {\r\n <i class=\"far fa-minus\"></i>\r\n } @else {\r\n <i class=\"far fa-plus\"></i>\r\n }\r\n </button>\r\n }\r\n </td>\r\n }\r\n\r\n @if (showRowNumbers()) {\r\n <td class=\"ng0-table-row-number\">\r\n {{ $firstRecord + $index }}\r\n </td>\r\n }\r\n\r\n @for (col of _columns; track $index) {\r\n <td\r\n [ngClass]=\"col.cellClass\"\r\n [class.shrinked]=\"col.shrink\"\r\n [class.fw-bold]=\"col.bold\"\r\n >\r\n @if (col.template) {\r\n <ng-container\r\n *ngTemplateOutlet=\"col.template; context: { $implicit: row }\"\r\n ></ng-container>\r\n } @else if (col.field) {\r\n @let cellValue = _getCellValue(row, col);\r\n\r\n @if ((cellValue === null || cellValue === undefined) && col.emptyCellText()) {\r\n {{ col.emptyCellText() }}\r\n } @else {\r\n @if (col.type()) {\r\n @let type = $any(col.type());\r\n\r\n @if (type == \"date\" || type.date) {\r\n {{ cellValue | ng0Date }}\r\n } @else if (type == \"number\" || type.number) {\r\n {{ cellValue | number }}\r\n } @else if (type == \"currency\") {\r\n {{ cellValue | currency }}\r\n } @else if (type.enum) {\r\n {{ cellValue | ng0TranslateEnum: type.enum : type.returnEnumAsFallback }}\r\n } @else if (type.boolean || type == \"boolean\") {\r\n {{ cellValue | ng0LocalizeBool: type.boolean.false ?? \"false\" : type.boolean.false ?? \"true\" }}\r\n }\r\n } @else {\r\n {{ cellValue }}\r\n }\r\n }\r\n }\r\n </td>\r\n }\r\n </tr>\r\n\r\n @if (_detailRow && isRowExpanded(row)) {\r\n <tr class=\"detail-row\">\r\n <td\r\n [attr.colspan]=\"_columns.length + (showRowNumbers() ? 1 : 0) + 1\"\r\n class=\"ps-2 pb-4\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"_detailRow.templateRef; context: { $implicit: row }\"\r\n ></ng-container>\r\n </td>\r\n </tr>\r\n }\r\n }\r\n } @else {\r\n <tr class=\"ng0-table-no-records-row\">\r\n <td [attr.colSpan]=\"$columnsCount\" class=\"text-center p-2\">\r\n {{ $tableLocale?.noRecords ?? 'No Records.' }}\r\n </td>\r\n </tr>\r\n }\r\n } @else if (_lastError) {\r\n <tr class=\"ng0-table-error-row\">\r\n <td [attr.colSpan]=\"$columnsCount\" class=\"p-2\">\r\n <div class=\"d-flex align-items-baseline\">\r\n <span>{{ $tableLocale?.loadError ?? 'Error loading data.' }} </span>\r\n <button (click)=\"load()\" class=\"btn btn-warning ms-auto\">\r\n {{ \"retry\" | ng0Translate }}\r\n </button>\r\n </div>\r\n </td>\r\n </tr>\r\n }\r\n }\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<div class=\"ng0-table-footer d-flex align-items-baseline\">\r\n @if ($pageable && $pageable.showPagingControls && $anyRecords && $totalRecordsCount! > 0) {\r\n <div class=\"ng0-table-pagination me-2\">\r\n <ng0-pagination\r\n class=\"mb-0 d-inline-block\"\r\n [showFirstLastButtons]=\"$pageable.showFirstLastButtons == true\"\r\n [showNextPreviousButtons]=\"$pageable.showNextPreviousButtons == true\"\r\n [totalRecords]=\"$totalRecordsCount!\"\r\n [pageSize]=\"$pageable.pageSize!\"\r\n [selectedPage]=\"$pageIndex\"\r\n (itemClick)=\"_onPageChange($event)\"\r\n [maxVisiblePages]=\"$pageable.maxVisiblePages!\"\r\n >\r\n <ng-container ngProjectAs=\"first\">\r\n <ng-content select=\"paging-first\">\r\n {{ \"first\" | ng0Translate }}\r\n </ng-content>\r\n </ng-container>\r\n\r\n <ng-container ngProjectAs=\"last\">\r\n <ng-content select=\"paging-last\">\r\n {{ \"last\" | ng0Translate }}\r\n </ng-content>\r\n </ng-container>\r\n\r\n <ng-container ngProjectAs=\"next\">\r\n <ng-content select=\"paging-next\">\r\n {{ \"next\" | ng0Translate }}\r\n </ng-content>\r\n </ng-container>\r\n\r\n <ng-container ngProjectAs=\"previous\">\r\n <ng-content select=\"paging-previous\">\r\n {{ \"previous\" | ng0Translate }}\r\n </ng-content>\r\n </ng-container>\r\n </ng0-pagination>\r\n </div>\r\n\r\n @if ($pageable.showPageSizeOptions || $pageable.showPageSizeOptions == undefined) {\r\n <div class=\"ng0-table-paging-options\">\r\n <select name=\"pageSizeOptions\" class=\"form-select w-auto d-inline-block\">\r\n <option [ngValue]=\"10\" selected>10</option>\r\n </select>\r\n </div>\r\n }\r\n\r\n @if ($pageable.showPagingInfo == undefined || $pageable.showPagingInfo) {\r\n <div class=\"ng0-table-paging-info ms-auto\">\r\n <ng-content select=\"paging-info\">\r\n {{\r\n _pagingFormatter({firstRecord: $firstRecord, lastRecord: $lastRecord, totalRecords: $totalRecordsCount!, currentPage: $pageIndex!})\r\n }}\r\n </ng-content>\r\n </div>\r\n }\r\n }\r\n</div>\r\n\r\n@if ($isLoading && !$isFirstLoad && loadingCover()) {\r\n <div class=\"ng0-table-loading-cover text-center\">\r\n @if (loadingCover() == 'spinner') {\r\n <div class=\"spinner-border\" role=\"status\"></div>\r\n }\r\n </div>\r\n}\r\n", styles: [":host{display:flex;flex-direction:column;position:relative}@starting-style{.ng0-table-loading-cover{background-color:#0000}}table{margin-bottom:0}tbody{position:relative}td.row-number{width:0}td.shrinked{width:0;white-space:nowrap}.ng0-table-loading-cover{position:absolute;inset:0;background-color:#0000000d;transition:background-color .2s;z-index:1000;display:flex;align-items:center;justify-content: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}.ng0-table-footer{margin-top:.5rem}\n"] }]
|
|
317
|
+
}], ctorParameters: () => [{ type: i1.LocalizationService }, { type: i0.DestroyRef }], propDecorators: { _columns: [{
|
|
318
|
+
type: ContentChildren,
|
|
319
|
+
args: [TableColumnDirective]
|
|
320
|
+
}], _detailRow: [{
|
|
321
|
+
type: ContentChild,
|
|
322
|
+
args: [TableDetailRowDirective]
|
|
323
|
+
}], isLoading: [{
|
|
324
|
+
type: HostBinding,
|
|
325
|
+
args: ['class.ng0-loading']
|
|
326
|
+
}] } });
|
|
327
|
+
|
|
328
|
+
class TableModule {
|
|
329
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: TableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
330
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.6", ngImport: i0, type: TableModule, imports: [TableComponent,
|
|
331
|
+
TableColumnDirective,
|
|
332
|
+
TableDetailRowDirective], exports: [TableComponent,
|
|
333
|
+
TableColumnDirective,
|
|
334
|
+
TableDetailRowDirective] });
|
|
335
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: TableModule, imports: [TableComponent] });
|
|
336
|
+
}
|
|
337
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: TableModule, decorators: [{
|
|
338
|
+
type: NgModule,
|
|
339
|
+
args: [{
|
|
340
|
+
imports: [
|
|
341
|
+
TableComponent,
|
|
342
|
+
TableColumnDirective,
|
|
343
|
+
TableDetailRowDirective,
|
|
344
|
+
],
|
|
345
|
+
exports: [
|
|
346
|
+
TableComponent,
|
|
347
|
+
TableColumnDirective,
|
|
348
|
+
TableDetailRowDirective
|
|
349
|
+
],
|
|
350
|
+
}]
|
|
351
|
+
}] });
|
|
352
|
+
|
|
353
|
+
/**
|
|
354
|
+
* Generated bundle index. Do not edit.
|
|
355
|
+
*/
|
|
356
|
+
|
|
357
|
+
export { TableColumnDirective, TableComponent, TableDetailRowDirective, TableModule };
|
|
358
|
+
//# sourceMappingURL=bootkit-ng0-components-table.mjs.map
|
|
@@ -0,0 +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/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, Input, TemplateRef } from '@angular/core';\r\nimport { TableCellType } from './types';\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 emptyCellText = input<string>();\r\n\r\n /**\r\n * Type of the table cell.\r\n */\r\n type = input<TableCellType>();\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() 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, ChangeDetectionStrategy, Component, computed, ContentChild, ContentChildren, DestroyRef, HostBinding, input, OnDestroy, OnInit, QueryList, signal } 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 { formatString } from '@bootkit/ng0/common';\r\nimport { LocalizationModule, LocalizationService, TableComponentPagingFormatter } from '@bootkit/ng0/localization';\r\nimport { DataRequest, DataRequestFilter, DataRequestPage, DataRequestSort, DataResult, DataSource, convertToDataSource, DataSourceLike } from '@bootkit/ng0/data';\r\nimport { PaginationComponent } from '@bootkit/ng0/components/pagination';\r\nimport { TablePagingOptions } from './types';\r\n\r\n/**\r\n * A generic table component that can display data in a tabular format.\r\n * It supports features like pagination, sorting, filtering, and row details.\r\n * It can be used with any data source that implements the DataSource interface.\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 changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n LocalizationModule,\r\n PaginationComponent\r\n ]\r\n})\r\nexport class TableComponent implements OnInit, AfterContentInit, OnDestroy {\r\n\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<DataSourceLike<any>>();\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 pageable = input<TablePagingOptions | undefined, TablePagingOptions | boolean>(undefined, {\r\n transform: v => {\r\n if (v === undefined || v === null || v === false) {\r\n return undefined;\r\n }\r\n\r\n if (v === true) {\r\n v = {};\r\n }\r\n\r\n v.pageIndex = v.pageIndex ?? 1;\r\n v.pageSize = v.pageSize ?? 10;\r\n v.maxVisiblePages = v.maxVisiblePages ?? 10;\r\n v.showPagingControls = v.showPagingControls ?? true;\r\n return v;\r\n }\r\n });\r\n\r\n /**\r\n * If true, the table will support sorting.\r\n * This will add a sort icon to each column header.\r\n */\r\n public sortable = input(true);\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\r\n /**\r\n * The height of the table in pixels.\r\n * This can be used to set a fixed height for the table.\r\n */\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 /**\r\n * The indicator to show while the table is loading data for the first time.\r\n */\r\n public loadingIndicator = input<'none' | 'simple' | 'spinner', boolean | 'none' | 'simple' | 'spinner'>('spinner', {\r\n transform: v => {\r\n if (typeof v === 'boolean') {\r\n return v ? 'spinner' : 'none';\r\n }\r\n return v;\r\n }\r\n });\r\n\r\n /** If true, the table will show a loading cover while data is being loaded.\r\n * This can be used to prevent user interaction with the table while loading.\r\n * This cover is not displayed when the table is loading for the first time.\r\n * Instead, the table will show a loading based on loadingIndicator settings.\r\n */\r\n public loadingCover = input<'none' | 'simple' | 'spinner', boolean | 'none' | 'simple' | 'spinner'>('spinner', {\r\n transform: v => {\r\n if (typeof v === 'boolean') {\r\n return v ? 'spinner' : 'none';\r\n }\r\n return v;\r\n }\r\n });\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 _dataResult = signal<DataResult | undefined>(undefined);\r\n protected _lastRequest?: DataRequest; // The last data request made to the data source\r\n protected _loadingRequest?: DataRequest; // The current data request being processed\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 protected _pagingFormatter!: TableComponentPagingFormatter;\r\n protected _lastError?: any;\r\n\r\n constructor(protected _ls: LocalizationService, private _destroyRef: DestroyRef) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this._dataSource = convertToDataSource(this.source());\r\n const locale = this._ls.get();\r\n this._pagingFormatter = locale?.definition.components?.table?.pagingInfo ??\r\n ((o) => `Showing ${o.firstRecord}-${o.lastRecord} of ${o.totalRecords} records`);\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 if (this.autoLoad()) {\r\n this.load(this.pageable()?.pageIndex);\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n\r\n }\r\n\r\n /**\r\n * Load data for the specified page index (optional).\r\n * @param pageIndex The page index to load.\r\n */\r\n public load(pageIndex?: number) {\r\n let page: DataRequestPage | undefined;\r\n let filters: DataRequestFilter[] = [];\r\n let sort: DataRequestSort | undefined;\r\n\r\n if (this.filterable()) {\r\n this._columns.forEach(col => {\r\n if (col.filterable && col.filterValue != '' && col.filterValue != undefined) {\r\n filters.push({ field: col.filterField ?? col.field!, value: col.filterValue, operator: 'EQ' });\r\n }\r\n });\r\n }\r\n\r\n if (this.pageable()) {\r\n page = {\r\n index: pageIndex || this._lastRequest?.page?.index || 1,\r\n size: this._lastRequest?.page?.size || 10,\r\n zeroBased: false\r\n };\r\n }\r\n\r\n if (this.sortable()) {\r\n // sort = ...\r\n }\r\n\r\n this._loadingRequest = new DataRequest({ page, filters, sort, select: [], computeTotal: true });\r\n\r\n this._dataSource.load(this._loadingRequest)\r\n .pipe(takeUntilDestroyed(this._destroyRef)).subscribe({\r\n next: result => {\r\n this._dataResult.set(result);\r\n this._lastRequest = this._loadingRequest;\r\n this._loadingRequest = undefined;\r\n this._lastError = undefined;\r\n }, error: err => {\r\n this._lastError = err;\r\n this._lastRequest = this._loadingRequest;\r\n this._loadingRequest = undefined;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Determines if the table is currently loading data.\r\n */\r\n @HostBinding('class.ng0-loading')\r\n public get isLoading() {\r\n return this._dataSource.isLoading;\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\r\n protected _onPageChange(pageIndex: number) {\r\n this.load(pageIndex);\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","@let $dataResult = _dataResult();\r\n@let $pageable = pageable();\r\n\r\n@let $pageIndex = _lastRequest?.page?.index ?? 1;\r\n\r\n@let $data = $dataResult?.data;\r\n@let $anyRecords = $data && $data.length > 0;\r\n@let $totalRecordsCount = $dataResult?.total;\r\n@let $firstRecord = $pageable ? ($pageable.pageSize! * ($pageIndex - 1) + 1) : 1;\r\n@let $lastRecord = $data ? $firstRecord + $data.length - 1 : 1;\r\n\r\n@let $isLoading = _dataSource.isLoading();\r\n@let $isFirstLoad = $dataResult == undefined;\r\n\r\n@let $columnsCount = _columns.length + (showRowNumbers() ? 1 : 0);\r\n@let $tableLocale = _ls.get()?.definition?.components?.table;\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 @if (showHeader()) {\r\n <thead [ngClass]=\"headerClass()\">\r\n <tr>\r\n @if (_detailRow) {\r\n <th></th>\r\n }\r\n\r\n @if (showRowNumbers()) {\r\n <th class=\"row-number text-muted\">#</th>\r\n }\r\n\r\n @for (col of _columns; track $index) {\r\n <th>{{ col.title }}</th>\r\n }\r\n </tr>\r\n </thead>\r\n }\r\n\r\n @if (filterable()) {\r\n <thead>\r\n <tr>\r\n @if (_detailRow) {\r\n <th></th>\r\n }\r\n\r\n @if (showRowNumbers()) {\r\n <th></th>\r\n }\r\n\r\n @for (col of _columns; track $index) {\r\n <!-- <th>\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)=\"load()\">\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)=\"load()\">\r\n }\r\n }\r\n </th> -->\r\n }\r\n </tr>\r\n </thead>\r\n }\r\n\r\n <tbody>\r\n @if ($isLoading && $isFirstLoad && loadingIndicator()) {\r\n <tr class=\"ng0-table-loading-row\">\r\n <td [attr.colspan]=\"$columnsCount\">\r\n @switch (loadingIndicator()) {\r\n @case ('spinner') {\r\n <div class=\"text-center\">\r\n <div class=\"spinner-border\" role=\"status\"></div>\r\n </div>\r\n }\r\n <!-- @case ('placeholder') {\r\n <p class=\"text-secondary placeholder-glow mb-0\">\r\n <span class=\"placeholder col-3\"></span>\r\n <span class=\"placeholder col-4\"></span>\r\n <span class=\"placeholder col-4\"></span>\r\n <span class=\"placeholder col-6\"></span>\r\n <span class=\"placeholder col-8\"></span>\r\n </p>\r\n } -->\r\n }\r\n </td>\r\n </tr>\r\n } @else {\r\n @if ($data) {\r\n @if ($data.length > 0) {\r\n @for (row of $data; track $index) {\r\n <tr [class.table-active]=\"isRowExpanded(row)\">\r\n @if (_detailRow) {\r\n <td class=\"detail-row-expander\">\r\n @if (_detailRow.showCallback == null || _detailRow.showCallback(row)) {\r\n <button class=\"btn\" (click)=\"_onToggleRowDetailClick(row)\">\r\n @if (isRowExpanded(row)) {\r\n <i class=\"far fa-minus\"></i>\r\n } @else {\r\n <i class=\"far fa-plus\"></i>\r\n }\r\n </button>\r\n }\r\n </td>\r\n }\r\n\r\n @if (showRowNumbers()) {\r\n <td class=\"ng0-table-row-number\">\r\n {{ $firstRecord + $index }}\r\n </td>\r\n }\r\n\r\n @for (col of _columns; track $index) {\r\n <td\r\n [ngClass]=\"col.cellClass\"\r\n [class.shrinked]=\"col.shrink\"\r\n [class.fw-bold]=\"col.bold\"\r\n >\r\n @if (col.template) {\r\n <ng-container\r\n *ngTemplateOutlet=\"col.template; context: { $implicit: row }\"\r\n ></ng-container>\r\n } @else if (col.field) {\r\n @let cellValue = _getCellValue(row, col);\r\n\r\n @if ((cellValue === null || cellValue === undefined) && col.emptyCellText()) {\r\n {{ col.emptyCellText() }}\r\n } @else {\r\n @if (col.type()) {\r\n @let type = $any(col.type());\r\n\r\n @if (type == \"date\" || type.date) {\r\n {{ cellValue | ng0Date }}\r\n } @else if (type == \"number\" || type.number) {\r\n {{ cellValue | number }}\r\n } @else if (type == \"currency\") {\r\n {{ cellValue | currency }}\r\n } @else if (type.enum) {\r\n {{ cellValue | ng0TranslateEnum: type.enum : type.returnEnumAsFallback }}\r\n } @else if (type.boolean || type == \"boolean\") {\r\n {{ cellValue | ng0LocalizeBool: type.boolean.false ?? \"false\" : type.boolean.false ?? \"true\" }}\r\n }\r\n } @else {\r\n {{ cellValue }}\r\n }\r\n }\r\n }\r\n </td>\r\n }\r\n </tr>\r\n\r\n @if (_detailRow && isRowExpanded(row)) {\r\n <tr class=\"detail-row\">\r\n <td\r\n [attr.colspan]=\"_columns.length + (showRowNumbers() ? 1 : 0) + 1\"\r\n class=\"ps-2 pb-4\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"_detailRow.templateRef; context: { $implicit: row }\"\r\n ></ng-container>\r\n </td>\r\n </tr>\r\n }\r\n }\r\n } @else {\r\n <tr class=\"ng0-table-no-records-row\">\r\n <td [attr.colSpan]=\"$columnsCount\" class=\"text-center p-2\">\r\n {{ $tableLocale?.noRecords ?? 'No Records.' }}\r\n </td>\r\n </tr>\r\n }\r\n } @else if (_lastError) {\r\n <tr class=\"ng0-table-error-row\">\r\n <td [attr.colSpan]=\"$columnsCount\" class=\"p-2\">\r\n <div class=\"d-flex align-items-baseline\">\r\n <span>{{ $tableLocale?.loadError ?? 'Error loading data.' }} </span>\r\n <button (click)=\"load()\" class=\"btn btn-warning ms-auto\">\r\n {{ \"retry\" | ng0Translate }}\r\n </button>\r\n </div>\r\n </td>\r\n </tr>\r\n }\r\n }\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<div class=\"ng0-table-footer d-flex align-items-baseline\">\r\n @if ($pageable && $pageable.showPagingControls && $anyRecords && $totalRecordsCount! > 0) {\r\n <div class=\"ng0-table-pagination me-2\">\r\n <ng0-pagination\r\n class=\"mb-0 d-inline-block\"\r\n [showFirstLastButtons]=\"$pageable.showFirstLastButtons == true\"\r\n [showNextPreviousButtons]=\"$pageable.showNextPreviousButtons == true\"\r\n [totalRecords]=\"$totalRecordsCount!\"\r\n [pageSize]=\"$pageable.pageSize!\"\r\n [selectedPage]=\"$pageIndex\"\r\n (itemClick)=\"_onPageChange($event)\"\r\n [maxVisiblePages]=\"$pageable.maxVisiblePages!\"\r\n >\r\n <ng-container ngProjectAs=\"first\">\r\n <ng-content select=\"paging-first\">\r\n {{ \"first\" | ng0Translate }}\r\n </ng-content>\r\n </ng-container>\r\n\r\n <ng-container ngProjectAs=\"last\">\r\n <ng-content select=\"paging-last\">\r\n {{ \"last\" | ng0Translate }}\r\n </ng-content>\r\n </ng-container>\r\n\r\n <ng-container ngProjectAs=\"next\">\r\n <ng-content select=\"paging-next\">\r\n {{ \"next\" | ng0Translate }}\r\n </ng-content>\r\n </ng-container>\r\n\r\n <ng-container ngProjectAs=\"previous\">\r\n <ng-content select=\"paging-previous\">\r\n {{ \"previous\" | ng0Translate }}\r\n </ng-content>\r\n </ng-container>\r\n </ng0-pagination>\r\n </div>\r\n\r\n @if ($pageable.showPageSizeOptions || $pageable.showPageSizeOptions == undefined) {\r\n <div class=\"ng0-table-paging-options\">\r\n <select name=\"pageSizeOptions\" class=\"form-select w-auto d-inline-block\">\r\n <option [ngValue]=\"10\" selected>10</option>\r\n </select>\r\n </div>\r\n }\r\n\r\n @if ($pageable.showPagingInfo == undefined || $pageable.showPagingInfo) {\r\n <div class=\"ng0-table-paging-info ms-auto\">\r\n <ng-content select=\"paging-info\">\r\n {{\r\n _pagingFormatter({firstRecord: $firstRecord, lastRecord: $lastRecord, totalRecords: $totalRecordsCount!, currentPage: $pageIndex!})\r\n }}\r\n </ng-content>\r\n </div>\r\n }\r\n }\r\n</div>\r\n\r\n@if ($isLoading && !$isFirstLoad && loadingCover()) {\r\n <div class=\"ng0-table-loading-cover text-center\">\r\n @if (loadingCover() == 'spinner') {\r\n <div class=\"spinner-border\" role=\"status\"></div>\r\n }\r\n </div>\r\n}\r\n","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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"}
|