angular-dumb-lib 0.0.6 → 0.0.9
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/esm2022/angular-dumb-lib.mjs +5 -0
- package/esm2022/lib/angular-dumb-lib.component.mjs +20 -0
- package/esm2022/lib/angular-dumb-lib.module.mjs +22 -0
- package/esm2022/lib/angular-dumb-lib.service.mjs +15 -0
- package/esm2022/lib/components/atoms/button/button.component.mjs +34 -0
- package/esm2022/lib/components/atoms/datetime-picker/datetime-picker.component.mjs +58 -0
- package/esm2022/lib/components/atoms/file-selection/file-selection.component.mjs +85 -0
- package/esm2022/lib/components/atoms/input/input.component.mjs +57 -0
- package/esm2022/lib/components/atoms/loading/loading.component.mjs +25 -0
- package/esm2022/lib/components/atoms/selection/selection.component.mjs +92 -0
- package/esm2022/lib/components/atoms/slider/slider.component.mjs +42 -0
- package/esm2022/lib/components/atoms/tags/tags.component.mjs +62 -0
- package/esm2022/lib/components/molecules/cards/cards.component.mjs +22 -0
- package/esm2022/lib/components/molecules/content-design/content-design.component.mjs +32 -0
- package/esm2022/lib/components/molecules/form/form.component.mjs +71 -0
- package/esm2022/lib/components/molecules/modal/modal.component.mjs +45 -0
- package/esm2022/lib/components/molecules/paginator/paginator.component.mjs +118 -0
- package/esm2022/lib/components/molecules/table/table.component.mjs +51 -0
- package/esm2022/lib/components/pages/footer/footer.component.mjs +15 -0
- package/esm2022/lib/components/pages/login/login.component.mjs +31 -0
- package/esm2022/lib/components/pages/menu/menu.component.mjs +31 -0
- package/esm2022/lib/components/pages/version/version.component.mjs +26 -0
- package/esm2022/lib/shared/constants/constant.mjs +6 -0
- package/esm2022/lib/shared/enums/enum.mjs +69 -0
- package/esm2022/lib/shared/interfaces/interface.mjs +2 -0
- package/esm2022/public-api.mjs +25 -0
- package/fesm2022/angular-dumb-lib.mjs +915 -0
- package/fesm2022/angular-dumb-lib.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/angular-dumb-lib.component.d.ts +5 -0
- package/lib/angular-dumb-lib.module.d.ts +7 -0
- package/lib/angular-dumb-lib.service.d.ts +6 -0
- package/lib/components/atoms/button/button.component.d.ts +12 -0
- package/lib/components/atoms/datetime-picker/datetime-picker.component.d.ts +17 -0
- package/lib/components/atoms/file-selection/file-selection.component.d.ts +25 -0
- package/lib/components/atoms/input/input.component.d.ts +19 -0
- package/lib/components/atoms/loading/loading.component.d.ts +11 -0
- package/lib/components/atoms/selection/selection.component.d.ts +28 -0
- package/lib/components/atoms/slider/slider.component.d.ts +14 -0
- package/lib/components/atoms/tags/tags.component.d.ts +19 -0
- package/lib/components/molecules/cards/cards.component.d.ts +10 -0
- package/lib/components/molecules/content-design/content-design.component.d.ts +12 -0
- package/lib/components/molecules/form/form.component.d.ts +23 -0
- package/lib/components/molecules/modal/modal.component.d.ts +17 -0
- package/lib/components/molecules/paginator/paginator.component.d.ts +29 -0
- package/lib/components/molecules/table/table.component.d.ts +20 -0
- package/lib/components/pages/footer/footer.component.d.ts +8 -0
- package/lib/components/pages/login/login.component.d.ts +11 -0
- package/lib/components/pages/menu/menu.component.d.ts +14 -0
- package/lib/components/pages/version/version.component.d.ts +10 -0
- package/lib/shared/constants/constant.d.ts +3 -0
- package/lib/shared/enums/enum.d.ts +59 -0
- package/lib/shared/interfaces/interface.d.ts +58 -0
- package/package.json +16 -3
- package/public-api.d.ts +21 -0
- package/ng-package.json +0 -7
- package/src/lib/angular-dumb-lib.component.spec.ts +0 -21
- package/src/lib/angular-dumb-lib.component.ts +0 -15
- package/src/lib/angular-dumb-lib.module.ts +0 -19
- package/src/lib/angular-dumb-lib.service.spec.ts +0 -16
- package/src/lib/angular-dumb-lib.service.ts +0 -9
- package/src/lib/components/atoms/button/button.component.html +0 -15
- package/src/lib/components/atoms/button/button.component.scss +0 -76
- package/src/lib/components/atoms/button/button.component.ts +0 -33
- package/src/lib/components/atoms/datetime-picker/datetime-picker.component.html +0 -7
- package/src/lib/components/atoms/datetime-picker/datetime-picker.component.scss +0 -24
- package/src/lib/components/atoms/datetime-picker/datetime-picker.component.ts +0 -59
- package/src/lib/components/atoms/file-selection/file-selection.component.html +0 -24
- package/src/lib/components/atoms/file-selection/file-selection.component.scss +0 -35
- package/src/lib/components/atoms/file-selection/file-selection.component.ts +0 -86
- package/src/lib/components/atoms/input/input.component.html +0 -28
- package/src/lib/components/atoms/input/input.component.scss +0 -64
- package/src/lib/components/atoms/input/input.component.ts +0 -57
- package/src/lib/components/atoms/loading/loading.component.html +0 -3
- package/src/lib/components/atoms/loading/loading.component.scss +0 -36
- package/src/lib/components/atoms/loading/loading.component.ts +0 -21
- package/src/lib/components/atoms/selection/selection.component.html +0 -38
- package/src/lib/components/atoms/selection/selection.component.scss +0 -65
- package/src/lib/components/atoms/selection/selection.component.ts +0 -84
- package/src/lib/components/atoms/slider/slider.component.html +0 -14
- package/src/lib/components/atoms/slider/slider.component.scss +0 -50
- package/src/lib/components/atoms/slider/slider.component.ts +0 -37
- package/src/lib/components/atoms/tags/tags.component.html +0 -25
- package/src/lib/components/atoms/tags/tags.component.scss +0 -58
- package/src/lib/components/atoms/tags/tags.component.ts +0 -62
- package/src/lib/components/molecules/cards/cards.component.html +0 -12
- package/src/lib/components/molecules/cards/cards.component.scss +0 -14
- package/src/lib/components/molecules/cards/cards.component.ts +0 -19
- package/src/lib/components/molecules/content-design/content-design.component.html +0 -14
- package/src/lib/components/molecules/content-design/content-design.component.scss +0 -68
- package/src/lib/components/molecules/content-design/content-design.component.ts +0 -32
- package/src/lib/components/molecules/form/form.component.html +0 -22
- package/src/lib/components/molecules/form/form.component.scss +0 -17
- package/src/lib/components/molecules/form/form.component.ts +0 -64
- package/src/lib/components/molecules/modal/modal.component.html +0 -16
- package/src/lib/components/molecules/modal/modal.component.scss +0 -83
- package/src/lib/components/molecules/modal/modal.component.ts +0 -48
- package/src/lib/components/molecules/paginator/paginator.component.html +0 -25
- package/src/lib/components/molecules/paginator/paginator.component.scss +0 -27
- package/src/lib/components/molecules/paginator/paginator.component.ts +0 -126
- package/src/lib/components/molecules/table/table.component.html +0 -45
- package/src/lib/components/molecules/table/table.component.scss +0 -169
- package/src/lib/components/molecules/table/table.component.ts +0 -40
- package/src/lib/components/pages/footer/footer.component.html +0 -32
- package/src/lib/components/pages/footer/footer.component.scss +0 -69
- package/src/lib/components/pages/footer/footer.component.ts +0 -16
- package/src/lib/components/pages/login/login.component.html +0 -10
- package/src/lib/components/pages/login/login.component.scss +0 -32
- package/src/lib/components/pages/login/login.component.ts +0 -32
- package/src/lib/components/pages/menu/menu.component.html +0 -18
- package/src/lib/components/pages/menu/menu.component.scss +0 -87
- package/src/lib/components/pages/menu/menu.component.ts +0 -26
- package/src/lib/components/pages/version/version.component.html +0 -3
- package/src/lib/components/pages/version/version.component.scss +0 -0
- package/src/lib/components/pages/version/version.component.ts +0 -28
- package/src/lib/shared/constants/constant.ts +0 -7
- package/src/lib/shared/enums/enum.ts +0 -68
- package/src/lib/shared/interfaces/interface.ts +0 -64
- package/src/public-api.ts +0 -10
- package/tsconfig.lib.json +0 -14
- package/tsconfig.lib.prod.json +0 -10
- package/tsconfig.spec.json +0 -14
|
@@ -0,0 +1,915 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Injectable, Component, NgModule, EventEmitter, Input, Output, forwardRef, ContentChild, ViewContainerRef, ViewChild } from '@angular/core';
|
|
3
|
+
import * as i1 from '@angular/common';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
import * as i2 from '@angular/forms';
|
|
6
|
+
import { NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
7
|
+
import * as i2$1 from 'primeng/table';
|
|
8
|
+
import { TableModule } from 'primeng/table';
|
|
9
|
+
import * as i3 from 'primeng/api';
|
|
10
|
+
|
|
11
|
+
class AngularDumbLibService {
|
|
12
|
+
constructor() { }
|
|
13
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AngularDumbLibService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
14
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AngularDumbLibService, providedIn: 'root' }); }
|
|
15
|
+
}
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AngularDumbLibService, decorators: [{
|
|
17
|
+
type: Injectable,
|
|
18
|
+
args: [{
|
|
19
|
+
providedIn: 'root'
|
|
20
|
+
}]
|
|
21
|
+
}], ctorParameters: function () { return []; } });
|
|
22
|
+
|
|
23
|
+
class AngularDumbLibComponent {
|
|
24
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AngularDumbLibComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AngularDumbLibComponent, selector: "lib-angular-dumb-lib", ngImport: i0, template: `
|
|
26
|
+
<p>
|
|
27
|
+
angular-dumb-lib works!
|
|
28
|
+
</p>
|
|
29
|
+
`, isInline: true }); }
|
|
30
|
+
}
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AngularDumbLibComponent, decorators: [{
|
|
32
|
+
type: Component,
|
|
33
|
+
args: [{ selector: 'lib-angular-dumb-lib', template: `
|
|
34
|
+
<p>
|
|
35
|
+
angular-dumb-lib works!
|
|
36
|
+
</p>
|
|
37
|
+
` }]
|
|
38
|
+
}] });
|
|
39
|
+
|
|
40
|
+
class AngularDumbLibModule {
|
|
41
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AngularDumbLibModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
42
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: AngularDumbLibModule, declarations: [AngularDumbLibComponent], exports: [AngularDumbLibComponent] }); }
|
|
43
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AngularDumbLibModule }); }
|
|
44
|
+
}
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AngularDumbLibModule, decorators: [{
|
|
46
|
+
type: NgModule,
|
|
47
|
+
args: [{
|
|
48
|
+
declarations: [
|
|
49
|
+
AngularDumbLibComponent,
|
|
50
|
+
],
|
|
51
|
+
imports: [],
|
|
52
|
+
exports: [
|
|
53
|
+
AngularDumbLibComponent,
|
|
54
|
+
]
|
|
55
|
+
}]
|
|
56
|
+
}] });
|
|
57
|
+
|
|
58
|
+
var DesignType;
|
|
59
|
+
(function (DesignType) {
|
|
60
|
+
DesignType["normal"] = "normal";
|
|
61
|
+
DesignType["contrast"] = "contrast";
|
|
62
|
+
})(DesignType || (DesignType = {}));
|
|
63
|
+
var ButtonType;
|
|
64
|
+
(function (ButtonType) {
|
|
65
|
+
ButtonType["submit"] = "submit";
|
|
66
|
+
ButtonType["button"] = "button";
|
|
67
|
+
})(ButtonType || (ButtonType = {}));
|
|
68
|
+
var InputGroupType;
|
|
69
|
+
(function (InputGroupType) {
|
|
70
|
+
InputGroupType["textual"] = "textual";
|
|
71
|
+
InputGroupType["datetime"] = "datetime";
|
|
72
|
+
InputGroupType["selection"] = "selection";
|
|
73
|
+
InputGroupType["file"] = "file";
|
|
74
|
+
})(InputGroupType || (InputGroupType = {}));
|
|
75
|
+
var InputDirection;
|
|
76
|
+
(function (InputDirection) {
|
|
77
|
+
InputDirection["horizontal"] = "horizontal";
|
|
78
|
+
InputDirection["vertical"] = "vertical";
|
|
79
|
+
})(InputDirection || (InputDirection = {}));
|
|
80
|
+
var InputType;
|
|
81
|
+
(function (InputType) {
|
|
82
|
+
InputType["image"] = "image";
|
|
83
|
+
InputType["text"] = "text";
|
|
84
|
+
InputType["richText"] = "richText";
|
|
85
|
+
InputType["password"] = "password";
|
|
86
|
+
InputType["email"] = "email";
|
|
87
|
+
InputType["url"] = "url";
|
|
88
|
+
InputType["tel"] = "tel";
|
|
89
|
+
InputType["search"] = "search";
|
|
90
|
+
InputType["number"] = "number";
|
|
91
|
+
InputType["range"] = "range";
|
|
92
|
+
InputType["hidden"] = "hidden";
|
|
93
|
+
InputType["textarea"] = "textarea";
|
|
94
|
+
InputType["datetime"] = "datetime";
|
|
95
|
+
InputType["checkbox"] = "checkbox";
|
|
96
|
+
InputType["radio"] = "radio";
|
|
97
|
+
InputType["select"] = "select";
|
|
98
|
+
InputType["file"] = "file";
|
|
99
|
+
})(InputType || (InputType = {}));
|
|
100
|
+
var ContentDirection;
|
|
101
|
+
(function (ContentDirection) {
|
|
102
|
+
ContentDirection["left"] = "left";
|
|
103
|
+
ContentDirection["right"] = "right";
|
|
104
|
+
ContentDirection["up"] = "up";
|
|
105
|
+
ContentDirection["down"] = "down";
|
|
106
|
+
})(ContentDirection || (ContentDirection = {}));
|
|
107
|
+
var SelectionType;
|
|
108
|
+
(function (SelectionType) {
|
|
109
|
+
SelectionType["dropdown"] = "dropdown";
|
|
110
|
+
SelectionType["radio"] = "radio";
|
|
111
|
+
SelectionType["checkbox"] = "checkbox";
|
|
112
|
+
})(SelectionType || (SelectionType = {}));
|
|
113
|
+
var LoadingSize;
|
|
114
|
+
(function (LoadingSize) {
|
|
115
|
+
LoadingSize["Xbig"] = "xbig";
|
|
116
|
+
LoadingSize["Big"] = "big";
|
|
117
|
+
LoadingSize["Medium"] = "medium";
|
|
118
|
+
LoadingSize["Small"] = "small";
|
|
119
|
+
LoadingSize["Xsmall"] = "xsmall";
|
|
120
|
+
})(LoadingSize || (LoadingSize = {}));
|
|
121
|
+
var MenuDirection;
|
|
122
|
+
(function (MenuDirection) {
|
|
123
|
+
MenuDirection["vertical"] = "vertical";
|
|
124
|
+
MenuDirection["horizontal"] = "horizontal";
|
|
125
|
+
})(MenuDirection || (MenuDirection = {}));
|
|
126
|
+
|
|
127
|
+
class ButtonComponent {
|
|
128
|
+
constructor() {
|
|
129
|
+
this.clickEvent = new EventEmitter();
|
|
130
|
+
}
|
|
131
|
+
ngOnInit() {
|
|
132
|
+
this.config = {
|
|
133
|
+
isDisabled: false,
|
|
134
|
+
isActive: false,
|
|
135
|
+
designType: DesignType.normal,
|
|
136
|
+
type: ButtonType.submit,
|
|
137
|
+
...this.config,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
onButtonClick() {
|
|
141
|
+
this.clickEvent.emit();
|
|
142
|
+
}
|
|
143
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
144
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ButtonComponent, isStandalone: true, selector: "app-button", inputs: { config: "config" }, outputs: { clickEvent: "clickEvent" }, ngImport: i0, template: "<button\n type=\"{{config.type}}\"\n class=\"btn btn-primary\"\n [disabled]=\"config.isDisabled\"\n [ngClass]=\"{'active': config.isActive,\n 'normal': config.designType === 'normal',\n 'contrast': config.designType === 'contrast'}\"\n (click)=\"onButtonClick()\">\n <div class=\"button-content\">\n <ng-container *ngIf=\"config.iconValue\">\n <i class=\"material-icons\" data-toggle=\"tooltip\" title=\"Delete\">{{config.iconValue}}</i>\n </ng-container>\n <span>{{ config.label }}</span>\n </div>\n</button>\n", styles: ["button.btn.btn-primary{padding:.5rem 1rem;border:none;border-radius:.25rem;cursor:pointer;height:3rem}button.btn.btn-primary .button-content{display:flex;flex-direction:row;justify-content:center;align-items:center;height:100%}button.btn.btn-primary:disabled{background-color:#ccc!important;color:#666!important;cursor:not-allowed!important;border-color:#666!important}button.btn.btn-primary.normal{background-color:#007bff;color:#fff}button.btn.btn-primary.normal:hover:not(:disabled){background-color:#0056d2}button.btn.btn-primary.contrast{color:#007bff;border:1px solid #4A90E2}button.btn.btn-primary.contrast:hover:not(:disabled){background-color:#e6f0fa;color:#1a1a1a}button.btn.btn-primary.active{background-color:#003d99;color:#fff}button.btn.btn-primary.active:hover:not(:disabled){background-color:#0056d2;color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
145
|
+
}
|
|
146
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ButtonComponent, decorators: [{
|
|
147
|
+
type: Component,
|
|
148
|
+
args: [{ selector: 'app-button', standalone: true, imports: [CommonModule], template: "<button\n type=\"{{config.type}}\"\n class=\"btn btn-primary\"\n [disabled]=\"config.isDisabled\"\n [ngClass]=\"{'active': config.isActive,\n 'normal': config.designType === 'normal',\n 'contrast': config.designType === 'contrast'}\"\n (click)=\"onButtonClick()\">\n <div class=\"button-content\">\n <ng-container *ngIf=\"config.iconValue\">\n <i class=\"material-icons\" data-toggle=\"tooltip\" title=\"Delete\">{{config.iconValue}}</i>\n </ng-container>\n <span>{{ config.label }}</span>\n </div>\n</button>\n", styles: ["button.btn.btn-primary{padding:.5rem 1rem;border:none;border-radius:.25rem;cursor:pointer;height:3rem}button.btn.btn-primary .button-content{display:flex;flex-direction:row;justify-content:center;align-items:center;height:100%}button.btn.btn-primary:disabled{background-color:#ccc!important;color:#666!important;cursor:not-allowed!important;border-color:#666!important}button.btn.btn-primary.normal{background-color:#007bff;color:#fff}button.btn.btn-primary.normal:hover:not(:disabled){background-color:#0056d2}button.btn.btn-primary.contrast{color:#007bff;border:1px solid #4A90E2}button.btn.btn-primary.contrast:hover:not(:disabled){background-color:#e6f0fa;color:#1a1a1a}button.btn.btn-primary.active{background-color:#003d99;color:#fff}button.btn.btn-primary.active:hover:not(:disabled){background-color:#0056d2;color:#fff}\n"] }]
|
|
149
|
+
}], ctorParameters: function () { return []; }, propDecorators: { config: [{
|
|
150
|
+
type: Input
|
|
151
|
+
}], clickEvent: [{
|
|
152
|
+
type: Output
|
|
153
|
+
}] } });
|
|
154
|
+
|
|
155
|
+
class DatetimePickerComponent {
|
|
156
|
+
constructor() {
|
|
157
|
+
this.selectedDate = null;
|
|
158
|
+
this.selectedTime = null;
|
|
159
|
+
this.onChange = () => { };
|
|
160
|
+
this.onTouched = () => { };
|
|
161
|
+
}
|
|
162
|
+
writeValue(value) {
|
|
163
|
+
if (value) {
|
|
164
|
+
const date = new Date(value);
|
|
165
|
+
this.selectedDate = date.toISOString().split('T')[0]; // Extract the date part (YYYY-MM-DD)
|
|
166
|
+
this.selectedTime = date.toTimeString().split(' ')[0]; // Extract the time part (HH:mm:ss)
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
registerOnChange(fn) {
|
|
170
|
+
this.onChange = fn;
|
|
171
|
+
}
|
|
172
|
+
registerOnTouched(fn) {
|
|
173
|
+
this.onTouched = fn;
|
|
174
|
+
}
|
|
175
|
+
setDisabledState(isDisabled) {
|
|
176
|
+
// Handle disabled state
|
|
177
|
+
}
|
|
178
|
+
onDateChange(event) {
|
|
179
|
+
this.selectedDate = event.target.value;
|
|
180
|
+
this.emitChange();
|
|
181
|
+
}
|
|
182
|
+
onTimeChange(event) {
|
|
183
|
+
this.selectedTime = event.target.value;
|
|
184
|
+
this.emitChange();
|
|
185
|
+
}
|
|
186
|
+
emitChange() {
|
|
187
|
+
if (this.selectedDate && this.selectedTime) {
|
|
188
|
+
const dateTime = `${this.selectedDate}T${this.selectedTime}`;
|
|
189
|
+
this.onChange(new Date(dateTime));
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DatetimePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
193
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DatetimePickerComponent, isStandalone: true, selector: "app-datetime-picker", providers: [{
|
|
194
|
+
provide: NG_VALUE_ACCESSOR,
|
|
195
|
+
useExisting: forwardRef(() => DatetimePickerComponent),
|
|
196
|
+
multi: true
|
|
197
|
+
}], ngImport: i0, template: "<div class=\"datetime-picker-container\">\n <label for=\"date\">Datetime:</label>\n <div class=\"inputs-container\">\n <input id=\"date\" type=\"date\" [(ngModel)]=\"selectedDate\" (ngModelChange)=\"onDateChange($event)\" (blur)=\"onTouched()\">\n <input id=\"time\" type=\"time\" [(ngModel)]=\"selectedTime\" (ngModelChange)=\"onTimeChange($event)\" (blur)=\"onTouched()\">\n </div>\n</div>\n", styles: [".datetime-picker-container{display:flex;flex-direction:column;margin-bottom:1rem}.datetime-picker-container label{margin-bottom:.5rem;font-weight:700}.inputs-container{display:flex;gap:1rem}.inputs-container input[type=date],.inputs-container input[type=time]{padding:.5rem;font-size:1rem;border:1px solid #ccc;border-radius:4px;width:150px}\n"], dependencies: [{ 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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
198
|
+
}
|
|
199
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DatetimePickerComponent, decorators: [{
|
|
200
|
+
type: Component,
|
|
201
|
+
args: [{ selector: 'app-datetime-picker', standalone: true, providers: [{
|
|
202
|
+
provide: NG_VALUE_ACCESSOR,
|
|
203
|
+
useExisting: forwardRef(() => DatetimePickerComponent),
|
|
204
|
+
multi: true
|
|
205
|
+
}], imports: [FormsModule], template: "<div class=\"datetime-picker-container\">\n <label for=\"date\">Datetime:</label>\n <div class=\"inputs-container\">\n <input id=\"date\" type=\"date\" [(ngModel)]=\"selectedDate\" (ngModelChange)=\"onDateChange($event)\" (blur)=\"onTouched()\">\n <input id=\"time\" type=\"time\" [(ngModel)]=\"selectedTime\" (ngModelChange)=\"onTimeChange($event)\" (blur)=\"onTouched()\">\n </div>\n</div>\n", styles: [".datetime-picker-container{display:flex;flex-direction:column;margin-bottom:1rem}.datetime-picker-container label{margin-bottom:.5rem;font-weight:700}.inputs-container{display:flex;gap:1rem}.inputs-container input[type=date],.inputs-container input[type=time]{padding:.5rem;font-size:1rem;border:1px solid #ccc;border-radius:4px;width:150px}\n"] }]
|
|
206
|
+
}] });
|
|
207
|
+
|
|
208
|
+
class FileSelectionComponent {
|
|
209
|
+
constructor() {
|
|
210
|
+
this.imageUrl = null; // Allow imageUrl to be passed externally
|
|
211
|
+
this.fileName = null; // Allow fileName to be passed externally
|
|
212
|
+
this.onChange = () => { };
|
|
213
|
+
this.onTouched = () => { };
|
|
214
|
+
this._value = undefined;
|
|
215
|
+
}
|
|
216
|
+
get value() {
|
|
217
|
+
return this._value;
|
|
218
|
+
}
|
|
219
|
+
set value(value) {
|
|
220
|
+
this._value = value;
|
|
221
|
+
this.onChange(this._value);
|
|
222
|
+
this.onTouched();
|
|
223
|
+
}
|
|
224
|
+
ngOnInit() {
|
|
225
|
+
this.config = {
|
|
226
|
+
type: ButtonType.button,
|
|
227
|
+
label: this.chooseFileLabel
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
onFileSelected(event) {
|
|
231
|
+
const input = event.target;
|
|
232
|
+
if (input.files && input.files.length > 0) {
|
|
233
|
+
const file = input.files[0];
|
|
234
|
+
// Store the file name to display it in the UI
|
|
235
|
+
this.fileName = file.name;
|
|
236
|
+
this.value = file;
|
|
237
|
+
// Generate image preview URL if it's an image
|
|
238
|
+
const reader = new FileReader();
|
|
239
|
+
reader.onload = (e) => {
|
|
240
|
+
this.imageUrl = e.target.result; // Set image URL for preview
|
|
241
|
+
};
|
|
242
|
+
reader.readAsDataURL(file);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
triggerFileInput() {
|
|
246
|
+
const fileInput = document.getElementById('fileInput');
|
|
247
|
+
fileInput.click(); // Programmatically click the hidden file input
|
|
248
|
+
}
|
|
249
|
+
writeValue(value) {
|
|
250
|
+
this._value = value;
|
|
251
|
+
}
|
|
252
|
+
registerOnChange(fn) {
|
|
253
|
+
this.onChange = fn;
|
|
254
|
+
}
|
|
255
|
+
registerOnTouched(fn) {
|
|
256
|
+
this.onTouched = fn;
|
|
257
|
+
}
|
|
258
|
+
setDisabledState(isDisabled) {
|
|
259
|
+
// Implement if you need to handle disabled state
|
|
260
|
+
}
|
|
261
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileSelectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
262
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FileSelectionComponent, isStandalone: true, selector: "app-file-selection", inputs: { label: "label", chooseFileLabel: "chooseFileLabel", imageUrl: "imageUrl", fileName: "fileName" }, providers: [{
|
|
263
|
+
provide: NG_VALUE_ACCESSOR,
|
|
264
|
+
useExisting: forwardRef(() => FileSelectionComponent),
|
|
265
|
+
multi: true
|
|
266
|
+
}], ngImport: i0, template: "<div class=\"file-selector\">\n <label *ngIf=\"label\">{{ label }}</label>\n <input\n id=\"fileInput\"\n type=\"file\"\n (change)=\"onFileSelected($event)\"\n accept=\"image/*\"\n class=\"hidden-file-input\">\n <div class=\"file-selection\">\n <!-- Custom button to trigger file input -->\n <app-button [config]=\"config\"\n class=\"custom-file-button\"\n (clickEvent)=\"triggerFileInput()\">\n Select Image\n </app-button>\n <div *ngIf=\"fileName\" class=\"file-name\">\n {{ fileName }}\n </div>\n </div>\n\n <div *ngIf=\"imageUrl\">\n <img [src]=\"imageUrl\" alt=\"Selected Image\" class=\"preview-image\"/>\n </div>\n</div>\n", styles: [".file-selector{display:flex;flex-direction:column;align-items:flex-start}.file-selector label{font-size:14px;color:#666;margin-bottom:8px;font-weight:700}.file-selector input[type=file]{margin-bottom:16px}.file-selector .preview-image{max-width:150px;max-height:150px;border:1px solid #ccc;margin-top:8px}.file-selector .hidden-file-input{opacity:0;position:absolute;z-index:-1}.file-selector .file-selection{display:flex;align-items:center;gap:10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "app-button", inputs: ["config"], outputs: ["clickEvent"] }] }); }
|
|
267
|
+
}
|
|
268
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileSelectionComponent, decorators: [{
|
|
269
|
+
type: Component,
|
|
270
|
+
args: [{ selector: 'app-file-selection', standalone: true, providers: [{
|
|
271
|
+
provide: NG_VALUE_ACCESSOR,
|
|
272
|
+
useExisting: forwardRef(() => FileSelectionComponent),
|
|
273
|
+
multi: true
|
|
274
|
+
}], imports: [CommonModule, ButtonComponent], template: "<div class=\"file-selector\">\n <label *ngIf=\"label\">{{ label }}</label>\n <input\n id=\"fileInput\"\n type=\"file\"\n (change)=\"onFileSelected($event)\"\n accept=\"image/*\"\n class=\"hidden-file-input\">\n <div class=\"file-selection\">\n <!-- Custom button to trigger file input -->\n <app-button [config]=\"config\"\n class=\"custom-file-button\"\n (clickEvent)=\"triggerFileInput()\">\n Select Image\n </app-button>\n <div *ngIf=\"fileName\" class=\"file-name\">\n {{ fileName }}\n </div>\n </div>\n\n <div *ngIf=\"imageUrl\">\n <img [src]=\"imageUrl\" alt=\"Selected Image\" class=\"preview-image\"/>\n </div>\n</div>\n", styles: [".file-selector{display:flex;flex-direction:column;align-items:flex-start}.file-selector label{font-size:14px;color:#666;margin-bottom:8px;font-weight:700}.file-selector input[type=file]{margin-bottom:16px}.file-selector .preview-image{max-width:150px;max-height:150px;border:1px solid #ccc;margin-top:8px}.file-selector .hidden-file-input{opacity:0;position:absolute;z-index:-1}.file-selector .file-selection{display:flex;align-items:center;gap:10px}\n"] }]
|
|
275
|
+
}], propDecorators: { label: [{
|
|
276
|
+
type: Input
|
|
277
|
+
}], chooseFileLabel: [{
|
|
278
|
+
type: Input
|
|
279
|
+
}], imageUrl: [{
|
|
280
|
+
type: Input
|
|
281
|
+
}], fileName: [{
|
|
282
|
+
type: Input
|
|
283
|
+
}] } });
|
|
284
|
+
|
|
285
|
+
class InputComponent {
|
|
286
|
+
get value() {
|
|
287
|
+
return this._value;
|
|
288
|
+
}
|
|
289
|
+
set value(value) {
|
|
290
|
+
this._value = value;
|
|
291
|
+
this.onChange(this._value);
|
|
292
|
+
this.onTouched();
|
|
293
|
+
}
|
|
294
|
+
constructor() {
|
|
295
|
+
this._value = '';
|
|
296
|
+
this.onChange = () => { };
|
|
297
|
+
this.onTouched = () => { };
|
|
298
|
+
}
|
|
299
|
+
writeValue(value) {
|
|
300
|
+
this._value = value;
|
|
301
|
+
}
|
|
302
|
+
registerOnChange(fn) {
|
|
303
|
+
this.onChange = fn;
|
|
304
|
+
}
|
|
305
|
+
registerOnTouched(fn) {
|
|
306
|
+
this.onTouched = fn;
|
|
307
|
+
}
|
|
308
|
+
ngOnInit() {
|
|
309
|
+
this.config = {
|
|
310
|
+
type: InputType.text,
|
|
311
|
+
direction: InputDirection.vertical,
|
|
312
|
+
isValid: true,
|
|
313
|
+
...this.config,
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
317
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: InputComponent, isStandalone: true, selector: "app-input", inputs: { config: "config" }, providers: [{
|
|
318
|
+
provide: NG_VALUE_ACCESSOR,
|
|
319
|
+
useExisting: forwardRef(() => InputComponent),
|
|
320
|
+
multi: true
|
|
321
|
+
}], ngImport: i0, template: "<div class=\"input-item\" [ngClass]=\"config.direction\">\n <label *ngIf=\"config.label\">\n {{ config.label }}\n <span *ngIf=\"config.required\" class=\"required-indicator\">*</span>\n </label>\n\n <div class=\"input-container\">\n <input *ngIf=\"config.type !== 'textarea' && config.type !== 'richText' && config.type !== 'image'\"\n [type]=\"config.type\"\n [name]=\"config.name\"\n [required]=\"config.required\"\n [(ngModel)]=\"value\"\n [placeholder] = \"config.placeholder\"\n [ngClass]=\"{'input-error': !config.isValid}\">\n <textarea *ngIf=\"config.type === 'textarea'\"\n [name]=\"config.name\"\n [required]=\"config.required\"\n [(ngModel)]=\"value\"\n [placeholder] = \"config.placeholder\"\n [ngClass]=\"{'input-error': !config.isValid}\">\n </textarea>\n <i *ngIf=\"!config.isValid\" class=\"material-icons warning-icon\">error</i>\n </div>\n\n <div *ngIf=\"config.type === 'image'\">\n <img *ngIf=\"value\" [src]=\"value\" alt=\"Selected Image\" class=\"preview-image\"/>\n </div>\n</div>\n", styles: [".input-item{display:flex;width:100%;gap:10px}.input-item .input-container{display:flex;width:inherit}.input-item .input-container .input-error{border-color:red}.input-item label{display:flex;align-items:center}.input-item.horizontal{flex-direction:row}.input-item.horizontal label{width:30%}.input-item.vertical{flex-direction:column}.input-item .preview-image{max-width:150px;max-height:150px;border:1px solid #ccc;margin-top:8px}.input-item .required-indicator,.input-item .warning-icon{display:flex;align-items:center;color:red;margin-left:4px}.input-item .warning-icon{font-weight:700}.input-item input,.input-item textarea{padding:.5rem;border:1px solid #ccc;border-radius:.25rem;width:-webkit-fill-available}.input-item quill-editor{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
322
|
+
}
|
|
323
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InputComponent, decorators: [{
|
|
324
|
+
type: Component,
|
|
325
|
+
args: [{ selector: 'app-input', standalone: true, providers: [{
|
|
326
|
+
provide: NG_VALUE_ACCESSOR,
|
|
327
|
+
useExisting: forwardRef(() => InputComponent),
|
|
328
|
+
multi: true
|
|
329
|
+
}], imports: [CommonModule, FormsModule], template: "<div class=\"input-item\" [ngClass]=\"config.direction\">\n <label *ngIf=\"config.label\">\n {{ config.label }}\n <span *ngIf=\"config.required\" class=\"required-indicator\">*</span>\n </label>\n\n <div class=\"input-container\">\n <input *ngIf=\"config.type !== 'textarea' && config.type !== 'richText' && config.type !== 'image'\"\n [type]=\"config.type\"\n [name]=\"config.name\"\n [required]=\"config.required\"\n [(ngModel)]=\"value\"\n [placeholder] = \"config.placeholder\"\n [ngClass]=\"{'input-error': !config.isValid}\">\n <textarea *ngIf=\"config.type === 'textarea'\"\n [name]=\"config.name\"\n [required]=\"config.required\"\n [(ngModel)]=\"value\"\n [placeholder] = \"config.placeholder\"\n [ngClass]=\"{'input-error': !config.isValid}\">\n </textarea>\n <i *ngIf=\"!config.isValid\" class=\"material-icons warning-icon\">error</i>\n </div>\n\n <div *ngIf=\"config.type === 'image'\">\n <img *ngIf=\"value\" [src]=\"value\" alt=\"Selected Image\" class=\"preview-image\"/>\n </div>\n</div>\n", styles: [".input-item{display:flex;width:100%;gap:10px}.input-item .input-container{display:flex;width:inherit}.input-item .input-container .input-error{border-color:red}.input-item label{display:flex;align-items:center}.input-item.horizontal{flex-direction:row}.input-item.horizontal label{width:30%}.input-item.vertical{flex-direction:column}.input-item .preview-image{max-width:150px;max-height:150px;border:1px solid #ccc;margin-top:8px}.input-item .required-indicator,.input-item .warning-icon{display:flex;align-items:center;color:red;margin-left:4px}.input-item .warning-icon{font-weight:700}.input-item input,.input-item textarea{padding:.5rem;border:1px solid #ccc;border-radius:.25rem;width:-webkit-fill-available}.input-item quill-editor{width:100%}\n"] }]
|
|
330
|
+
}], ctorParameters: function () { return []; }, propDecorators: { config: [{
|
|
331
|
+
type: Input
|
|
332
|
+
}] } });
|
|
333
|
+
|
|
334
|
+
class LoadingComponent {
|
|
335
|
+
constructor() {
|
|
336
|
+
this.size = LoadingSize.Medium;
|
|
337
|
+
this.imageSrc = '';
|
|
338
|
+
}
|
|
339
|
+
ngOnInit() {
|
|
340
|
+
}
|
|
341
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LoadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
342
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LoadingComponent, isStandalone: true, selector: "app-loading", inputs: { size: "size", imageSrc: "imageSrc" }, ngImport: i0, template: "<div [ngClass]=\"size\" class=\"loading-content\">\n <img [src]=\"imageSrc\" />\n</div>\n", styles: [":host{width:100%;height:100%;display:table;text-align:center}.loading-content{display:table-cell;vertical-align:middle}.xbig img{width:256px;height:256px}.big img{width:128px;height:128px}.medium img{width:64px;height:64px}.small img{width:32px;height:32px}.xsmall img{width:16px;height:16px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
343
|
+
}
|
|
344
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LoadingComponent, decorators: [{
|
|
345
|
+
type: Component,
|
|
346
|
+
args: [{ selector: 'app-loading', standalone: true, imports: [CommonModule], template: "<div [ngClass]=\"size\" class=\"loading-content\">\n <img [src]=\"imageSrc\" />\n</div>\n", styles: [":host{width:100%;height:100%;display:table;text-align:center}.loading-content{display:table-cell;vertical-align:middle}.xbig img{width:256px;height:256px}.big img{width:128px;height:128px}.medium img{width:64px;height:64px}.small img{width:32px;height:32px}.xsmall img{width:16px;height:16px}\n"] }]
|
|
347
|
+
}], ctorParameters: function () { return []; }, propDecorators: { size: [{
|
|
348
|
+
type: Input
|
|
349
|
+
}], imageSrc: [{
|
|
350
|
+
type: Input
|
|
351
|
+
}] } });
|
|
352
|
+
|
|
353
|
+
class SelectionComponent {
|
|
354
|
+
constructor() {
|
|
355
|
+
this.label = ''; // Label for the dropdown
|
|
356
|
+
this.options = []; // Array of options
|
|
357
|
+
this.selectedValues = []; // Pre-selected values (multi-selection)
|
|
358
|
+
this.isMultiSelect = false; // Enable multi-selection for dropdown
|
|
359
|
+
this.displayType = SelectionType.dropdown; // Control the display type (dropdown, radio, or checkbox)
|
|
360
|
+
this.selectedChange = new EventEmitter(); // Event emitter for value changes
|
|
361
|
+
this.onChange = () => { };
|
|
362
|
+
this.onTouched = () => { };
|
|
363
|
+
}
|
|
364
|
+
get value() {
|
|
365
|
+
return this.selectedValue;
|
|
366
|
+
}
|
|
367
|
+
set value(value) {
|
|
368
|
+
this.selectedValue = (this.isMultiSelect === false && Array.isArray(value)) ? value[0] : value;
|
|
369
|
+
this.onChange(this.selectedValue);
|
|
370
|
+
this.onTouched();
|
|
371
|
+
}
|
|
372
|
+
ngOnInit() {
|
|
373
|
+
if (this.options && this.options.length > 0 && !this.isMultiSelect) {
|
|
374
|
+
this.selectedValue = this.options[0].value;
|
|
375
|
+
this.onChange(this.selectedValue);
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
onSelectChange(event) {
|
|
379
|
+
this.selectedChange.emit(this.selectedValue);
|
|
380
|
+
}
|
|
381
|
+
onMultiSelectChange(event) {
|
|
382
|
+
const target = event.target;
|
|
383
|
+
const value = target.value;
|
|
384
|
+
if (target.checked) {
|
|
385
|
+
this.selectedValues.push(value);
|
|
386
|
+
}
|
|
387
|
+
else {
|
|
388
|
+
this.selectedValues = this.selectedValues.filter(v => v !== value);
|
|
389
|
+
}
|
|
390
|
+
this.selectedChange.emit(this.selectedValues);
|
|
391
|
+
}
|
|
392
|
+
isSelected(value) {
|
|
393
|
+
return this.isMultiSelect ? this.selectedValues.includes(value) : value === this.selectedValue;
|
|
394
|
+
}
|
|
395
|
+
writeValue(value) {
|
|
396
|
+
this.selectedValue = value;
|
|
397
|
+
}
|
|
398
|
+
registerOnChange(fn) {
|
|
399
|
+
this.onChange = fn;
|
|
400
|
+
}
|
|
401
|
+
registerOnTouched(fn) {
|
|
402
|
+
this.onTouched = fn;
|
|
403
|
+
}
|
|
404
|
+
setDisabledState(isDisabled) {
|
|
405
|
+
// Implement if you need to handle disabled state
|
|
406
|
+
}
|
|
407
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
408
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SelectionComponent, isStandalone: true, selector: "app-selection", inputs: { label: "label", options: "options", selectedValue: "selectedValue", selectedValues: "selectedValues", isMultiSelect: "isMultiSelect", displayType: "displayType" }, outputs: { selectedChange: "selectedChange" }, providers: [{
|
|
409
|
+
provide: NG_VALUE_ACCESSOR,
|
|
410
|
+
useExisting: forwardRef(() => SelectionComponent),
|
|
411
|
+
multi: true
|
|
412
|
+
}], ngImport: i0, template: "<div class=\"dropdown\" *ngIf=\"displayType === 'dropdown'\">\n <label *ngIf=\"label\">{{ label }}</label>\n <select\n (change)=\"onSelectChange($event)\"\n [multiple]=\"isMultiSelect\"\n [(ngModel)]=\"value\">\n <option *ngFor=\"let option of options\"\n [value]=\"option.value\"\n [selected]=\"isSelected(option.value)\">\n {{ option.label }}\n </option>\n </select>\n</div>\n\n<div class=\"radio-group\" *ngIf=\"displayType === 'radio'\">\n <label *ngIf=\"label\">{{ label }}</label>\n <div *ngFor=\"let option of options\">\n <input\n type=\"radio\"\n [value]=\"option.value\"\n [checked]=\"option.value === selectedValue\"\n (change)=\"onSelectChange($event)\"\n name=\"radioGroup\"/>\n <label>{{ option.label }}</label>\n </div>\n</div>\n\n<div class=\"checkbox-group\" *ngIf=\"displayType === 'checkbox'\">\n <label *ngIf=\"label\">{{ label }}</label>\n <div *ngFor=\"let option of options\">\n <input\n type=\"checkbox\"\n [value]=\"option.value\"\n [checked]=\"isSelected(option.value)\"\n (change)=\"onMultiSelectChange($event)\"/>\n <label>{{ option.label }}</label>\n </div>\n</div>\n", styles: [".dropdown,.radio-group,.checkbox-group{display:flex;flex-direction:column;width:100%;min-width:150px}.dropdown label,.radio-group label,.checkbox-group label{font-size:12px;color:#666;margin-bottom:4px;font-weight:700}.dropdown select{width:100%;padding:9px 8px;font-size:12px;color:#333;background-color:#fff;border:1px solid #ccc;border-radius:4px;appearance:none;cursor:pointer;transition:border-color .3s,box-shadow .3s}.dropdown select:hover{border-color:#888}.dropdown select:focus{border-color:#03a9f4;box-shadow:0 0 5px #03a9f480;outline:none}.radio-group div,.checkbox-group div{display:flex;align-items:center;margin-bottom:8px}.radio-group input[type=radio],.checkbox-group input[type=checkbox]{margin-right:8px;cursor:pointer}.radio-group label,.checkbox-group label{font-size:12px;color:#333;cursor:pointer}.radio-group input[type=radio]:focus,.checkbox-group input[type=checkbox]:focus{outline:2px solid #03A9F4;outline-offset:2px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
413
|
+
}
|
|
414
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectionComponent, decorators: [{
|
|
415
|
+
type: Component,
|
|
416
|
+
args: [{ selector: 'app-selection', standalone: true, providers: [{
|
|
417
|
+
provide: NG_VALUE_ACCESSOR,
|
|
418
|
+
useExisting: forwardRef(() => SelectionComponent),
|
|
419
|
+
multi: true
|
|
420
|
+
}], imports: [CommonModule, FormsModule], template: "<div class=\"dropdown\" *ngIf=\"displayType === 'dropdown'\">\n <label *ngIf=\"label\">{{ label }}</label>\n <select\n (change)=\"onSelectChange($event)\"\n [multiple]=\"isMultiSelect\"\n [(ngModel)]=\"value\">\n <option *ngFor=\"let option of options\"\n [value]=\"option.value\"\n [selected]=\"isSelected(option.value)\">\n {{ option.label }}\n </option>\n </select>\n</div>\n\n<div class=\"radio-group\" *ngIf=\"displayType === 'radio'\">\n <label *ngIf=\"label\">{{ label }}</label>\n <div *ngFor=\"let option of options\">\n <input\n type=\"radio\"\n [value]=\"option.value\"\n [checked]=\"option.value === selectedValue\"\n (change)=\"onSelectChange($event)\"\n name=\"radioGroup\"/>\n <label>{{ option.label }}</label>\n </div>\n</div>\n\n<div class=\"checkbox-group\" *ngIf=\"displayType === 'checkbox'\">\n <label *ngIf=\"label\">{{ label }}</label>\n <div *ngFor=\"let option of options\">\n <input\n type=\"checkbox\"\n [value]=\"option.value\"\n [checked]=\"isSelected(option.value)\"\n (change)=\"onMultiSelectChange($event)\"/>\n <label>{{ option.label }}</label>\n </div>\n</div>\n", styles: [".dropdown,.radio-group,.checkbox-group{display:flex;flex-direction:column;width:100%;min-width:150px}.dropdown label,.radio-group label,.checkbox-group label{font-size:12px;color:#666;margin-bottom:4px;font-weight:700}.dropdown select{width:100%;padding:9px 8px;font-size:12px;color:#333;background-color:#fff;border:1px solid #ccc;border-radius:4px;appearance:none;cursor:pointer;transition:border-color .3s,box-shadow .3s}.dropdown select:hover{border-color:#888}.dropdown select:focus{border-color:#03a9f4;box-shadow:0 0 5px #03a9f480;outline:none}.radio-group div,.checkbox-group div{display:flex;align-items:center;margin-bottom:8px}.radio-group input[type=radio],.checkbox-group input[type=checkbox]{margin-right:8px;cursor:pointer}.radio-group label,.checkbox-group label{font-size:12px;color:#333;cursor:pointer}.radio-group input[type=radio]:focus,.checkbox-group input[type=checkbox]:focus{outline:2px solid #03A9F4;outline-offset:2px}\n"] }]
|
|
421
|
+
}], propDecorators: { label: [{
|
|
422
|
+
type: Input
|
|
423
|
+
}], options: [{
|
|
424
|
+
type: Input
|
|
425
|
+
}], selectedValue: [{
|
|
426
|
+
type: Input
|
|
427
|
+
}], selectedValues: [{
|
|
428
|
+
type: Input
|
|
429
|
+
}], isMultiSelect: [{
|
|
430
|
+
type: Input
|
|
431
|
+
}], displayType: [{
|
|
432
|
+
type: Input
|
|
433
|
+
}], selectedChange: [{
|
|
434
|
+
type: Output
|
|
435
|
+
}] } });
|
|
436
|
+
|
|
437
|
+
class SliderComponent {
|
|
438
|
+
constructor() {
|
|
439
|
+
this.images = [];
|
|
440
|
+
this.autoSlide = false;
|
|
441
|
+
this.slideInterval = 3000; // Time interval for auto slide
|
|
442
|
+
this.currentIndex = 0;
|
|
443
|
+
}
|
|
444
|
+
ngOnInit() {
|
|
445
|
+
if (this.autoSlide) {
|
|
446
|
+
this.startAutoSlide();
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
startAutoSlide() {
|
|
450
|
+
setInterval(() => {
|
|
451
|
+
this.nextSlide();
|
|
452
|
+
}, this.slideInterval);
|
|
453
|
+
}
|
|
454
|
+
prevSlide() {
|
|
455
|
+
this.currentIndex = this.currentIndex === 0 ? this.images.length - 1 : this.currentIndex - 1;
|
|
456
|
+
}
|
|
457
|
+
nextSlide() {
|
|
458
|
+
this.currentIndex = this.currentIndex === this.images.length - 1 ? 0 : this.currentIndex + 1;
|
|
459
|
+
}
|
|
460
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SliderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
461
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SliderComponent, isStandalone: true, selector: "app-slider", inputs: { images: "images", autoSlide: "autoSlide", slideInterval: "slideInterval" }, ngImport: i0, template: "<div class=\"slider-container\">\n <div class=\"slider-wrapper\">\n <div\n class=\"slide\"\n *ngFor=\"let image of images; let i = index\"\n [class.active]=\"i === currentIndex\"\n [ngStyle]=\"{'background-image': 'url(' + image + ')'}\">\n </div>\n </div>\n\n <!-- Navigation Buttons -->\n <button class=\"prev\" (click)=\"prevSlide()\">❮</button>\n <button class=\"next\" (click)=\"nextSlide()\">❯</button>\n</div>\n", styles: [".slider-container{position:relative;width:100%;margin:auto;overflow:hidden}.slider-wrapper{position:relative;width:100%;height:400px}.slide{position:absolute;width:100%;height:100%;background-size:cover;background-position:center;opacity:0;transition:opacity .5s ease-in-out}.slide.active{opacity:1}.prev,.next{position:absolute;top:50%;transform:translateY(-50%);background-color:#00000080;color:#fff;border:none;padding:10px;cursor:pointer;font-size:18px}.prev{left:10px}.next{right:10px}.prev:hover,.next:hover{background-color:#000c}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
|
|
462
|
+
}
|
|
463
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SliderComponent, decorators: [{
|
|
464
|
+
type: Component,
|
|
465
|
+
args: [{ selector: 'app-slider', standalone: true, imports: [CommonModule], template: "<div class=\"slider-container\">\n <div class=\"slider-wrapper\">\n <div\n class=\"slide\"\n *ngFor=\"let image of images; let i = index\"\n [class.active]=\"i === currentIndex\"\n [ngStyle]=\"{'background-image': 'url(' + image + ')'}\">\n </div>\n </div>\n\n <!-- Navigation Buttons -->\n <button class=\"prev\" (click)=\"prevSlide()\">❮</button>\n <button class=\"next\" (click)=\"nextSlide()\">❯</button>\n</div>\n", styles: [".slider-container{position:relative;width:100%;margin:auto;overflow:hidden}.slider-wrapper{position:relative;width:100%;height:400px}.slide{position:absolute;width:100%;height:100%;background-size:cover;background-position:center;opacity:0;transition:opacity .5s ease-in-out}.slide.active{opacity:1}.prev,.next{position:absolute;top:50%;transform:translateY(-50%);background-color:#00000080;color:#fff;border:none;padding:10px;cursor:pointer;font-size:18px}.prev{left:10px}.next{right:10px}.prev:hover,.next:hover{background-color:#000c}\n"] }]
|
|
466
|
+
}], propDecorators: { images: [{
|
|
467
|
+
type: Input
|
|
468
|
+
}], autoSlide: [{
|
|
469
|
+
type: Input
|
|
470
|
+
}], slideInterval: [{
|
|
471
|
+
type: Input
|
|
472
|
+
}] } });
|
|
473
|
+
|
|
474
|
+
class TagsComponent {
|
|
475
|
+
constructor() {
|
|
476
|
+
this.availableTags = ['abc', 'dce'];
|
|
477
|
+
this.filteredTags = [];
|
|
478
|
+
this.selectedTags = [];
|
|
479
|
+
this.searchText = '';
|
|
480
|
+
this.onChange = () => { };
|
|
481
|
+
this.onTouched = () => { };
|
|
482
|
+
}
|
|
483
|
+
ngOnInit() {
|
|
484
|
+
this.filteredTags = this.availableTags; // Initialize the filtered tags list
|
|
485
|
+
}
|
|
486
|
+
writeValue(value) {
|
|
487
|
+
if (value) {
|
|
488
|
+
this.selectedTags = value;
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
registerOnChange(fn) {
|
|
492
|
+
this.onChange = fn;
|
|
493
|
+
}
|
|
494
|
+
registerOnTouched(fn) {
|
|
495
|
+
this.onTouched = fn;
|
|
496
|
+
}
|
|
497
|
+
onTagSelectionChange(tag) {
|
|
498
|
+
if (!this.selectedTags.includes(tag)) {
|
|
499
|
+
this.selectedTags = [...this.selectedTags, tag]; // Add the tag
|
|
500
|
+
this.onChange(this.selectedTags);
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
removeTag(tag) {
|
|
504
|
+
this.selectedTags = this.selectedTags.filter(t => t !== tag); // Remove the tag
|
|
505
|
+
this.onChange(this.selectedTags);
|
|
506
|
+
}
|
|
507
|
+
filterTags() {
|
|
508
|
+
this.filteredTags = this.availableTags.filter(tag => tag.toLowerCase().includes(this.searchText.toLowerCase()) &&
|
|
509
|
+
!this.selectedTags.includes(tag));
|
|
510
|
+
}
|
|
511
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TagsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
512
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TagsComponent, isStandalone: true, selector: "app-tags", inputs: { availableTags: "availableTags" }, providers: [{
|
|
513
|
+
provide: NG_VALUE_ACCESSOR,
|
|
514
|
+
useExisting: forwardRef(() => TagsComponent),
|
|
515
|
+
multi: true
|
|
516
|
+
}], ngImport: i0, template: "<div class=\"tags-select-container\">\n <label for=\"searchTags\">Search and Select Tags:</label>\n <input\n id=\"searchTags\"\n type=\"text\"\n [(ngModel)]=\"searchText\"\n (input)=\"filterTags()\"\n placeholder=\"Search tags...\"\n />\n\n <div *ngIf=\"filteredTags.length > 0\">\n <ul class=\"tag-list\">\n <li *ngFor=\"let tag of filteredTags\" (click)=\"onTagSelectionChange(tag)\">\n {{ tag }}\n </li>\n </ul>\n </div>\n\n <div class=\"selected-tags\">\n <button *ngFor=\"let tag of selectedTags\" class=\"tag-button\">\n {{ tag }}\n <span class=\"remove-tag\" (click)=\"removeTag(tag)\">x</span>\n </button>\n </div>\n</div>\n", styles: [".tags-select-container{display:flex;flex-direction:column}input[type=text]{padding:5px;border:1px solid #ccc;border-radius:4px;width:200px;margin-bottom:10px}.tag-list{list-style-type:none;padding-left:0;margin:0;border:1px solid #ccc;max-height:100px;overflow-y:auto}.tag-list li{padding:5px;cursor:pointer;border-bottom:1px solid #ddd}.tag-list li:hover{background-color:#f1f1f1}.selected-tags{display:flex;flex-wrap:wrap;gap:5px}.tag-button{background-color:#007bff;color:#fff;border:none;border-radius:20px;padding:5px 10px;display:flex;align-items:center;cursor:pointer}.tag-button .remove-tag{margin-left:8px;background:none;border:none;font-size:1rem;font-weight:700;color:#fff;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
517
|
+
}
|
|
518
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TagsComponent, decorators: [{
|
|
519
|
+
type: Component,
|
|
520
|
+
args: [{ selector: 'app-tags', standalone: true, providers: [{
|
|
521
|
+
provide: NG_VALUE_ACCESSOR,
|
|
522
|
+
useExisting: forwardRef(() => TagsComponent),
|
|
523
|
+
multi: true
|
|
524
|
+
}], imports: [CommonModule, FormsModule], template: "<div class=\"tags-select-container\">\n <label for=\"searchTags\">Search and Select Tags:</label>\n <input\n id=\"searchTags\"\n type=\"text\"\n [(ngModel)]=\"searchText\"\n (input)=\"filterTags()\"\n placeholder=\"Search tags...\"\n />\n\n <div *ngIf=\"filteredTags.length > 0\">\n <ul class=\"tag-list\">\n <li *ngFor=\"let tag of filteredTags\" (click)=\"onTagSelectionChange(tag)\">\n {{ tag }}\n </li>\n </ul>\n </div>\n\n <div class=\"selected-tags\">\n <button *ngFor=\"let tag of selectedTags\" class=\"tag-button\">\n {{ tag }}\n <span class=\"remove-tag\" (click)=\"removeTag(tag)\">x</span>\n </button>\n </div>\n</div>\n", styles: [".tags-select-container{display:flex;flex-direction:column}input[type=text]{padding:5px;border:1px solid #ccc;border-radius:4px;width:200px;margin-bottom:10px}.tag-list{list-style-type:none;padding-left:0;margin:0;border:1px solid #ccc;max-height:100px;overflow-y:auto}.tag-list li{padding:5px;cursor:pointer;border-bottom:1px solid #ddd}.tag-list li:hover{background-color:#f1f1f1}.selected-tags{display:flex;flex-wrap:wrap;gap:5px}.tag-button{background-color:#007bff;color:#fff;border:none;border-radius:20px;padding:5px 10px;display:flex;align-items:center;cursor:pointer}.tag-button .remove-tag{margin-left:8px;background:none;border:none;font-size:1rem;font-weight:700;color:#fff;cursor:pointer}\n"] }]
|
|
525
|
+
}], propDecorators: { availableTags: [{
|
|
526
|
+
type: Input
|
|
527
|
+
}] } });
|
|
528
|
+
|
|
529
|
+
class ContentDesignComponent {
|
|
530
|
+
constructor() {
|
|
531
|
+
this.clickEvent = new EventEmitter();
|
|
532
|
+
}
|
|
533
|
+
ngOnInit() {
|
|
534
|
+
this.content = {
|
|
535
|
+
contentDirection: ContentDirection.left,
|
|
536
|
+
...this.content,
|
|
537
|
+
};
|
|
538
|
+
}
|
|
539
|
+
onButtonClick() {
|
|
540
|
+
this.clickEvent.emit();
|
|
541
|
+
}
|
|
542
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ContentDesignComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
543
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ContentDesignComponent, isStandalone: true, selector: "app-content-design", inputs: { content: "content" }, outputs: { clickEvent: "clickEvent" }, ngImport: i0, template: "<div class=\"content-designer\" [ngClass]=\"content.contentDirection\">\n <div *ngIf=\"content.coverImage\" class=\"image\">\n <img [src]=\"content.coverImage\" alt=\"Cover Image\">\n </div>\n\n <div class=\"content\">\n <h2>{{ content.title }}</h2>\n <p>{{ content.content }}</p>\n <ng-container [ngTemplateOutlet]=\"content.template\"></ng-container>\n <app-button *ngIf=\"content.button\" [config] = \"content.button\"\n (clickEvent)=\"onButtonClick()\">\n </app-button>\n </div>\n</div>\n", styles: [".content-designer{display:flex;gap:20px;flex-wrap:wrap;justify-content:space-between;align-items:center;text-align:center}.content-designer img{max-width:100%;height:auto}.content-designer .content p{text-align:justify}.content-designer.left,.content-designer.right{flex-direction:row}.content-designer.left .image,.content-designer.left .content,.content-designer.right .image,.content-designer.right .content{flex:1;width:50%;padding:0 20px}.content-designer.left .content,.content-designer.right .content{text-align:justify}.content-designer.left .image,.content-designer.right .image{display:flex}.content-designer.left{flex-direction:row-reverse}.content-designer.left .image{justify-content:end}.content-designer.right .image{justify-content:start}.content-designer.up,.content-designer.down{flex-direction:column}.content-designer.up .image,.content-designer.down .image{width:100%;justify-content:center}.content-designer.up{flex-direction:column-reverse}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ButtonComponent, selector: "app-button", inputs: ["config"], outputs: ["clickEvent"] }] }); }
|
|
544
|
+
}
|
|
545
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ContentDesignComponent, decorators: [{
|
|
546
|
+
type: Component,
|
|
547
|
+
args: [{ selector: 'app-content-design', standalone: true, imports: [CommonModule, ButtonComponent], template: "<div class=\"content-designer\" [ngClass]=\"content.contentDirection\">\n <div *ngIf=\"content.coverImage\" class=\"image\">\n <img [src]=\"content.coverImage\" alt=\"Cover Image\">\n </div>\n\n <div class=\"content\">\n <h2>{{ content.title }}</h2>\n <p>{{ content.content }}</p>\n <ng-container [ngTemplateOutlet]=\"content.template\"></ng-container>\n <app-button *ngIf=\"content.button\" [config] = \"content.button\"\n (clickEvent)=\"onButtonClick()\">\n </app-button>\n </div>\n</div>\n", styles: [".content-designer{display:flex;gap:20px;flex-wrap:wrap;justify-content:space-between;align-items:center;text-align:center}.content-designer img{max-width:100%;height:auto}.content-designer .content p{text-align:justify}.content-designer.left,.content-designer.right{flex-direction:row}.content-designer.left .image,.content-designer.left .content,.content-designer.right .image,.content-designer.right .content{flex:1;width:50%;padding:0 20px}.content-designer.left .content,.content-designer.right .content{text-align:justify}.content-designer.left .image,.content-designer.right .image{display:flex}.content-designer.left{flex-direction:row-reverse}.content-designer.left .image{justify-content:end}.content-designer.right .image{justify-content:start}.content-designer.up,.content-designer.down{flex-direction:column}.content-designer.up .image,.content-designer.down .image{width:100%;justify-content:center}.content-designer.up{flex-direction:column-reverse}\n"] }]
|
|
548
|
+
}], ctorParameters: function () { return []; }, propDecorators: { content: [{
|
|
549
|
+
type: Input
|
|
550
|
+
}], clickEvent: [{
|
|
551
|
+
type: Output
|
|
552
|
+
}] } });
|
|
553
|
+
|
|
554
|
+
class CardsComponent {
|
|
555
|
+
constructor() {
|
|
556
|
+
this.cardContents = [];
|
|
557
|
+
}
|
|
558
|
+
ngOnInit() {
|
|
559
|
+
}
|
|
560
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CardsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
561
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CardsComponent, isStandalone: true, selector: "app-cards", inputs: { cardContents: "cardContents" }, ngImport: i0, template: "<div class=\"cards-content\">\n <ng-container *ngFor=\"let content of cardContents\">\n <div class=\"card {{content.name}}\">\n <app-content-design\n [content] = \"content\">\n </app-content-design>\n </div>\n </ng-container>\n</div>\n\n\n\n", styles: [".cards-content{display:flex;flex-direction:row}.content{width:33%}.card ::ng-deep .content{padding:0 20px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ContentDesignComponent, selector: "app-content-design", inputs: ["content"], outputs: ["clickEvent"] }] }); }
|
|
562
|
+
}
|
|
563
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CardsComponent, decorators: [{
|
|
564
|
+
type: Component,
|
|
565
|
+
args: [{ selector: 'app-cards', standalone: true, imports: [CommonModule, ContentDesignComponent], template: "<div class=\"cards-content\">\n <ng-container *ngFor=\"let content of cardContents\">\n <div class=\"card {{content.name}}\">\n <app-content-design\n [content] = \"content\">\n </app-content-design>\n </div>\n </ng-container>\n</div>\n\n\n\n", styles: [".cards-content{display:flex;flex-direction:row}.content{width:33%}.card ::ng-deep .content{padding:0 20px}\n"] }]
|
|
566
|
+
}], ctorParameters: function () { return []; }, propDecorators: { cardContents: [{
|
|
567
|
+
type: Input
|
|
568
|
+
}] } });
|
|
569
|
+
|
|
570
|
+
const textualInputTypes = [InputType.text, InputType.password, InputType.email, InputType.url,
|
|
571
|
+
InputType.tel, InputType.search, InputType.number, InputType.range,
|
|
572
|
+
InputType.hidden, InputType.textarea, InputType.richText, InputType.image];
|
|
573
|
+
const selectionInputTypes = [InputType.checkbox, InputType.radio, InputType.select];
|
|
574
|
+
|
|
575
|
+
class FormComponent {
|
|
576
|
+
constructor() {
|
|
577
|
+
this.buttonConfig = {
|
|
578
|
+
label: "Submit"
|
|
579
|
+
};
|
|
580
|
+
this.formSubmit = new EventEmitter();
|
|
581
|
+
this.formChange = new EventEmitter();
|
|
582
|
+
}
|
|
583
|
+
// Define the editor configuration
|
|
584
|
+
onSubmit() {
|
|
585
|
+
if (this.formGroup.valid) {
|
|
586
|
+
this.formSubmit.emit(this.formGroup.value);
|
|
587
|
+
}
|
|
588
|
+
else {
|
|
589
|
+
console.log('Form not valid');
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
onValueChange(controlName, value) {
|
|
593
|
+
this.formChange.emit({ controlName, value });
|
|
594
|
+
}
|
|
595
|
+
checkFormConfigType(inputType) {
|
|
596
|
+
if (inputType) {
|
|
597
|
+
if (textualInputTypes.includes(inputType)) {
|
|
598
|
+
return InputGroupType.textual;
|
|
599
|
+
}
|
|
600
|
+
if (selectionInputTypes.includes(inputType)) {
|
|
601
|
+
return InputGroupType.selection;
|
|
602
|
+
}
|
|
603
|
+
if (inputType === InputType.file) {
|
|
604
|
+
return InputGroupType.file;
|
|
605
|
+
}
|
|
606
|
+
if (inputType === InputType.datetime) {
|
|
607
|
+
return InputGroupType.datetime;
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
return InputGroupType.textual;
|
|
611
|
+
}
|
|
612
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
613
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormComponent, isStandalone: true, selector: "app-form", inputs: { formGroup: "formGroup", inputConfigs: "inputConfigs", buttonConfig: "buttonConfig", validationMessages: "validationMessages" }, outputs: { formSubmit: "formSubmit", formChange: "formChange" }, ngImport: i0, template: "<form (ngSubmit)=\"onSubmit()\" #form=\"ngForm\" [formGroup]=\"formGroup\">\n <ng-container *ngFor=\"let inputConfig of inputConfigs\">\n <app-input *ngIf=\"checkFormConfigType(inputConfig.type) === 'textual'\"\n [formControlName]=\"inputConfig.name\"\n [config]=\"inputConfig\"\n [required]=\"inputConfig.required\"></app-input>\n\n <app-selection *ngIf=\"checkFormConfigType(inputConfig.type) === 'selection'\"\n [formControlName]=\"inputConfig.name\"\n [label]=\"inputConfig.label?? ''\"\n [options]= \"inputConfig.options\">\n </app-selection>\n\n <app-file-selection\n [formControlName]=\"inputConfig.name\"\n *ngIf=\"checkFormConfigType(inputConfig.type) === 'file'\"\n [label]=\"inputConfig.name \">\n </app-file-selection>\n </ng-container>\n\n <app-button [config]=\"buttonConfig\"></app-button>\n</form>\n", styles: ["form{display:flex;flex-direction:column;gap:15px}label{display:block;margin-bottom:.5rem}input,textarea{width:100%;padding:.5rem;border:1px solid #ccc;border-radius:.25rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: InputComponent, selector: "app-input", inputs: ["config"] }, { kind: "component", type: SelectionComponent, selector: "app-selection", inputs: ["label", "options", "selectedValue", "selectedValues", "isMultiSelect", "displayType"], outputs: ["selectedChange"] }, { kind: "component", type: FileSelectionComponent, selector: "app-file-selection", inputs: ["label", "chooseFileLabel", "imageUrl", "fileName"] }, { kind: "component", type: ButtonComponent, selector: "app-button", inputs: ["config"], outputs: ["clickEvent"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
|
|
614
|
+
}
|
|
615
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormComponent, decorators: [{
|
|
616
|
+
type: Component,
|
|
617
|
+
args: [{ selector: 'app-form', standalone: true, imports: [CommonModule, InputComponent, SelectionComponent,
|
|
618
|
+
FileSelectionComponent, ButtonComponent, FormsModule, ReactiveFormsModule], template: "<form (ngSubmit)=\"onSubmit()\" #form=\"ngForm\" [formGroup]=\"formGroup\">\n <ng-container *ngFor=\"let inputConfig of inputConfigs\">\n <app-input *ngIf=\"checkFormConfigType(inputConfig.type) === 'textual'\"\n [formControlName]=\"inputConfig.name\"\n [config]=\"inputConfig\"\n [required]=\"inputConfig.required\"></app-input>\n\n <app-selection *ngIf=\"checkFormConfigType(inputConfig.type) === 'selection'\"\n [formControlName]=\"inputConfig.name\"\n [label]=\"inputConfig.label?? ''\"\n [options]= \"inputConfig.options\">\n </app-selection>\n\n <app-file-selection\n [formControlName]=\"inputConfig.name\"\n *ngIf=\"checkFormConfigType(inputConfig.type) === 'file'\"\n [label]=\"inputConfig.name \">\n </app-file-selection>\n </ng-container>\n\n <app-button [config]=\"buttonConfig\"></app-button>\n</form>\n", styles: ["form{display:flex;flex-direction:column;gap:15px}label{display:block;margin-bottom:.5rem}input,textarea{width:100%;padding:.5rem;border:1px solid #ccc;border-radius:.25rem}\n"] }]
|
|
619
|
+
}], propDecorators: { formGroup: [{
|
|
620
|
+
type: Input
|
|
621
|
+
}], inputConfigs: [{
|
|
622
|
+
type: Input
|
|
623
|
+
}], buttonConfig: [{
|
|
624
|
+
type: Input
|
|
625
|
+
}], validationMessages: [{
|
|
626
|
+
type: Input
|
|
627
|
+
}], formSubmit: [{
|
|
628
|
+
type: Output
|
|
629
|
+
}], formChange: [{
|
|
630
|
+
type: Output
|
|
631
|
+
}] } });
|
|
632
|
+
|
|
633
|
+
class ModalComponent {
|
|
634
|
+
constructor() {
|
|
635
|
+
this.okConfig = {
|
|
636
|
+
label: "Ok"
|
|
637
|
+
};
|
|
638
|
+
this.cancelConfig = {
|
|
639
|
+
label: "Cancel"
|
|
640
|
+
};
|
|
641
|
+
}
|
|
642
|
+
ngOnInit() {
|
|
643
|
+
}
|
|
644
|
+
closeModal() {
|
|
645
|
+
this.modalEvent.isModalVisible = false;
|
|
646
|
+
}
|
|
647
|
+
handleOverlayClick(event) {
|
|
648
|
+
this.closeModal();
|
|
649
|
+
}
|
|
650
|
+
handleContentClick(event) {
|
|
651
|
+
event.stopPropagation();
|
|
652
|
+
}
|
|
653
|
+
ok() {
|
|
654
|
+
if (this.modalEvent && this.modalEvent.onOk) {
|
|
655
|
+
this.modalEvent.onOk();
|
|
656
|
+
this.closeModal();
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
cancel() {
|
|
660
|
+
this.closeModal();
|
|
661
|
+
}
|
|
662
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
663
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ModalComponent, isStandalone: true, selector: "app-modal", inputs: { modalEvent: "modalEvent" }, ngImport: i0, template: "<div class=\"modal-overlay\" (click)=\"handleOverlayClick($event)\" *ngIf=\"modalEvent?.isModalVisible\">\n <div class=\"modal-content\" (click)=\"handleContentClick($event)\">\n <div class=\"modal-header\">\n <h2>{{modalEvent.title }}</h2>\n <button class=\"close-btn\" (click)=\"closeModal()\">\n <i class=\"material-icons\">close</i>\n </button>\n </div>\n <div *ngIf=\"modalEvent.params && modalEvent.params['content']\">{{modalEvent.params['content'] }}</div>\n <ng-container *ngTemplateOutlet=\"modalEvent.template; context: modalEvent.params\"></ng-container>\n <div *ngIf=\"!modalEvent?.isDialog\" class=\"buttons\">\n <app-button [config]=\"okConfig\" (clickEvent)=\"ok()\"></app-button>\n <app-button [config]=\"cancelConfig\" (clickEvent)=\"cancel()\"></app-button>\n </div>\n </div>\n</div>\n", styles: [".modal-overlay{display:flex;align-items:center;justify-content:center;position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;z-index:50}.modal-content{display:flex;flex-direction:column;gap:20px;background-color:#fff;color:#000;border-radius:.5rem;padding:2rem;max-width:600px;width:100%;max-height:calc(100vh - 7rem);overflow-y:auto}.modal-content.dark-mode{background-color:#27272a;color:#d1d5db}.modal-content .modal-header{display:flex;flex-direction:row;justify-content:space-between}h2{font-size:2rem;font-weight:700;margin:unset}p{color:#4b5563;margin-bottom:1.5rem}p.dark-mode{color:#d1d5db}.modal-actions{display:flex;justify-content:flex-end}.close-btn{background-color:transparent;border:none;font-size:1.5rem;cursor:pointer;padding:0;display:flex;align-items:center}.close-btn i.material-icons{font-size:24px;color:#888}.close-btn:hover i.material-icons{color:#444}.buttons{display:flex;flex-direction:row;justify-content:end;gap:15px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ButtonComponent, selector: "app-button", inputs: ["config"], outputs: ["clickEvent"] }] }); }
|
|
664
|
+
}
|
|
665
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ModalComponent, decorators: [{
|
|
666
|
+
type: Component,
|
|
667
|
+
args: [{ selector: 'app-modal', standalone: true, imports: [CommonModule, ButtonComponent], template: "<div class=\"modal-overlay\" (click)=\"handleOverlayClick($event)\" *ngIf=\"modalEvent?.isModalVisible\">\n <div class=\"modal-content\" (click)=\"handleContentClick($event)\">\n <div class=\"modal-header\">\n <h2>{{modalEvent.title }}</h2>\n <button class=\"close-btn\" (click)=\"closeModal()\">\n <i class=\"material-icons\">close</i>\n </button>\n </div>\n <div *ngIf=\"modalEvent.params && modalEvent.params['content']\">{{modalEvent.params['content'] }}</div>\n <ng-container *ngTemplateOutlet=\"modalEvent.template; context: modalEvent.params\"></ng-container>\n <div *ngIf=\"!modalEvent?.isDialog\" class=\"buttons\">\n <app-button [config]=\"okConfig\" (clickEvent)=\"ok()\"></app-button>\n <app-button [config]=\"cancelConfig\" (clickEvent)=\"cancel()\"></app-button>\n </div>\n </div>\n</div>\n", styles: [".modal-overlay{display:flex;align-items:center;justify-content:center;position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;z-index:50}.modal-content{display:flex;flex-direction:column;gap:20px;background-color:#fff;color:#000;border-radius:.5rem;padding:2rem;max-width:600px;width:100%;max-height:calc(100vh - 7rem);overflow-y:auto}.modal-content.dark-mode{background-color:#27272a;color:#d1d5db}.modal-content .modal-header{display:flex;flex-direction:row;justify-content:space-between}h2{font-size:2rem;font-weight:700;margin:unset}p{color:#4b5563;margin-bottom:1.5rem}p.dark-mode{color:#d1d5db}.modal-actions{display:flex;justify-content:flex-end}.close-btn{background-color:transparent;border:none;font-size:1.5rem;cursor:pointer;padding:0;display:flex;align-items:center}.close-btn i.material-icons{font-size:24px;color:#888}.close-btn:hover i.material-icons{color:#444}.buttons{display:flex;flex-direction:row;justify-content:end;gap:15px}\n"] }]
|
|
668
|
+
}], ctorParameters: function () { return []; }, propDecorators: { modalEvent: [{
|
|
669
|
+
type: Input
|
|
670
|
+
}] } });
|
|
671
|
+
|
|
672
|
+
class PaginatorComponent {
|
|
673
|
+
constructor() {
|
|
674
|
+
this.itemsPerPageList = [];
|
|
675
|
+
this.inputConfig = {
|
|
676
|
+
label: 'Go to page',
|
|
677
|
+
direction: InputDirection.horizontal,
|
|
678
|
+
name: 'inputConfig',
|
|
679
|
+
required: false
|
|
680
|
+
};
|
|
681
|
+
this.previousButtonConfig = {
|
|
682
|
+
iconValue: 'chevron_left',
|
|
683
|
+
type: ButtonType.button,
|
|
684
|
+
isDisabled: true
|
|
685
|
+
};
|
|
686
|
+
this.nextButtonConfig = {
|
|
687
|
+
iconValue: 'chevron_right',
|
|
688
|
+
type: ButtonType.button,
|
|
689
|
+
isDisabled: false
|
|
690
|
+
};
|
|
691
|
+
this.numberOfPage = 0;
|
|
692
|
+
this.itemsPerPage = 0;
|
|
693
|
+
this.selectedPage = 0;
|
|
694
|
+
this.totalRecords = 0;
|
|
695
|
+
this.paginator = new EventEmitter();
|
|
696
|
+
}
|
|
697
|
+
get pageNumbers() {
|
|
698
|
+
return Array.from({ length: this.numberOfPage }, (_, i) => i + 1);
|
|
699
|
+
}
|
|
700
|
+
ngOnInit() {
|
|
701
|
+
this.itemsPerPageList = [
|
|
702
|
+
{
|
|
703
|
+
label: "3",
|
|
704
|
+
value: 1
|
|
705
|
+
},
|
|
706
|
+
{
|
|
707
|
+
label: "5",
|
|
708
|
+
value: 2
|
|
709
|
+
},
|
|
710
|
+
{
|
|
711
|
+
label: "20",
|
|
712
|
+
value: 3
|
|
713
|
+
}
|
|
714
|
+
];
|
|
715
|
+
this.selectedPage = 1;
|
|
716
|
+
this.buttonType = ButtonType.button;
|
|
717
|
+
this.inputDirection = InputDirection.horizontal;
|
|
718
|
+
this.itemsPerPage = parseInt(this.itemsPerPageList[0].label);
|
|
719
|
+
this.calculateNumberOfPage(this.totalRecords, this.itemsPerPage);
|
|
720
|
+
this.updateButtonConfigs();
|
|
721
|
+
this.emitPaging();
|
|
722
|
+
}
|
|
723
|
+
ngOnChanges() {
|
|
724
|
+
this.calculateNumberOfPage(this.totalRecords, this.itemsPerPage);
|
|
725
|
+
}
|
|
726
|
+
selectPage(i) {
|
|
727
|
+
this.selectedPage = i;
|
|
728
|
+
this.updateButtonConfigs();
|
|
729
|
+
this.emitPaging();
|
|
730
|
+
}
|
|
731
|
+
onChangeNumberOfPage(itemsPerPageId) {
|
|
732
|
+
this.selectedPage = 1;
|
|
733
|
+
this.itemsPerPage = parseInt(this.itemsPerPageList.find(i => i.value === parseInt(itemsPerPageId))?.label ??
|
|
734
|
+
this.itemsPerPage.toString());
|
|
735
|
+
this.calculateNumberOfPage(this.totalRecords, this.itemsPerPage);
|
|
736
|
+
this.updateButtonConfigs();
|
|
737
|
+
this.emitPaging();
|
|
738
|
+
}
|
|
739
|
+
emitPaging() {
|
|
740
|
+
let paging = {
|
|
741
|
+
itemsPerPage: this.itemsPerPage,
|
|
742
|
+
selectedPage: this.selectedPage
|
|
743
|
+
};
|
|
744
|
+
this.paginator.emit(paging);
|
|
745
|
+
}
|
|
746
|
+
calculateNumberOfPage(totalRecords, itemsPerPage) {
|
|
747
|
+
return this.numberOfPage = Math.ceil(totalRecords / itemsPerPage);
|
|
748
|
+
}
|
|
749
|
+
updateButtonConfigs() {
|
|
750
|
+
// Re-assign the button configuration to trigger change detection
|
|
751
|
+
this.previousButtonConfig = {
|
|
752
|
+
...this.previousButtonConfig,
|
|
753
|
+
isDisabled: this.selectedPage <= 1
|
|
754
|
+
};
|
|
755
|
+
this.nextButtonConfig = {
|
|
756
|
+
...this.nextButtonConfig,
|
|
757
|
+
isDisabled: this.selectedPage >= this.numberOfPage
|
|
758
|
+
};
|
|
759
|
+
}
|
|
760
|
+
// Method to return config for page number buttons
|
|
761
|
+
getPageButtonConfig(page) {
|
|
762
|
+
return {
|
|
763
|
+
label: page.toString(),
|
|
764
|
+
type: ButtonType.button,
|
|
765
|
+
isActive: page === this.selectedPage,
|
|
766
|
+
isDisabled: false // Page buttons are never disabled
|
|
767
|
+
};
|
|
768
|
+
}
|
|
769
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
770
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PaginatorComponent, isStandalone: true, selector: "app-paginator", inputs: { totalRecords: "totalRecords" }, outputs: { paginator: "paginator" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"table-footer\">\n <div class=\"number-of-page\">\n <app-selection [options] = \"itemsPerPageList\"\n [selectedValue]=\"this.itemsPerPage\"\n (selectedChange) = \"onChangeNumberOfPage($event)\">\n </app-selection>\n <app-input [config]=\"inputConfig\"></app-input>\n </div>\n <div class=\"paginator\">\n <app-button (clickEvent)=\"selectPage(selectedPage - 1)\"\n [config]=\"previousButtonConfig\"/>\n\n <!-- Page Numbers -->\n <ng-container *ngFor=\"let page of pageNumbers\">\n <app-button\n (clickEvent)=\"selectPage(page)\"\n [config]=\"getPageButtonConfig(page)\">\n </app-button>\n </ng-container>\n\n <!-- Next Button -->\n <app-button (clickEvent)=\"selectPage(selectedPage + 1)\"\n [config]=\"nextButtonConfig\"/>\n </div>\n</div>\n", styles: ["body{color:#566787;background:#f5f5f5;font-family:Varela Round,sans-serif;font-size:13px}.table-footer{display:flex}.table-footer .number-of-page{width:70%;display:flex;align-items:center;gap:20px}.table-footer .paginator{display:flex;justify-content:flex-end;width:100%}.table-footer .paginator app-button{margin:0 2px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ButtonComponent, selector: "app-button", inputs: ["config"], outputs: ["clickEvent"] }, { kind: "component", type: SelectionComponent, selector: "app-selection", inputs: ["label", "options", "selectedValue", "selectedValues", "isMultiSelect", "displayType"], outputs: ["selectedChange"] }, { kind: "component", type: InputComponent, selector: "app-input", inputs: ["config"] }] }); }
|
|
771
|
+
}
|
|
772
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PaginatorComponent, decorators: [{
|
|
773
|
+
type: Component,
|
|
774
|
+
args: [{ selector: 'app-paginator', standalone: true, imports: [CommonModule, ButtonComponent, SelectionComponent, InputComponent], template: "<div class=\"table-footer\">\n <div class=\"number-of-page\">\n <app-selection [options] = \"itemsPerPageList\"\n [selectedValue]=\"this.itemsPerPage\"\n (selectedChange) = \"onChangeNumberOfPage($event)\">\n </app-selection>\n <app-input [config]=\"inputConfig\"></app-input>\n </div>\n <div class=\"paginator\">\n <app-button (clickEvent)=\"selectPage(selectedPage - 1)\"\n [config]=\"previousButtonConfig\"/>\n\n <!-- Page Numbers -->\n <ng-container *ngFor=\"let page of pageNumbers\">\n <app-button\n (clickEvent)=\"selectPage(page)\"\n [config]=\"getPageButtonConfig(page)\">\n </app-button>\n </ng-container>\n\n <!-- Next Button -->\n <app-button (clickEvent)=\"selectPage(selectedPage + 1)\"\n [config]=\"nextButtonConfig\"/>\n </div>\n</div>\n", styles: ["body{color:#566787;background:#f5f5f5;font-family:Varela Round,sans-serif;font-size:13px}.table-footer{display:flex}.table-footer .number-of-page{width:70%;display:flex;align-items:center;gap:20px}.table-footer .paginator{display:flex;justify-content:flex-end;width:100%}.table-footer .paginator app-button{margin:0 2px}\n"] }]
|
|
775
|
+
}], ctorParameters: function () { return []; }, propDecorators: { totalRecords: [{
|
|
776
|
+
type: Input
|
|
777
|
+
}], paginator: [{
|
|
778
|
+
type: Output
|
|
779
|
+
}] } });
|
|
780
|
+
|
|
781
|
+
class TableComponent {
|
|
782
|
+
constructor(cdRef) {
|
|
783
|
+
this.cdRef = cdRef;
|
|
784
|
+
this.items = [];
|
|
785
|
+
this.columns = [];
|
|
786
|
+
this.totalRecords = 0;
|
|
787
|
+
this.tableName = '';
|
|
788
|
+
this.paginator = new EventEmitter();
|
|
789
|
+
this.allSelected = false;
|
|
790
|
+
}
|
|
791
|
+
ngOnInit() {
|
|
792
|
+
this.loadingState.subscribe(() => {
|
|
793
|
+
this.cdRef.detectChanges(); // Explicitly mark for change detection
|
|
794
|
+
});
|
|
795
|
+
}
|
|
796
|
+
changePaginator(paging) {
|
|
797
|
+
this.paginator.emit(paging);
|
|
798
|
+
}
|
|
799
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
800
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TableComponent, isStandalone: true, selector: "app-table", inputs: { items: "items", columns: "columns", totalRecords: "totalRecords", tableName: "tableName", loadingState: "loadingState" }, outputs: { paginator: "paginator" }, queries: [{ propertyName: "bodyTemplate", first: true, predicate: ["bodyTemplate"], descendants: true }], ngImport: i0, template: "<div class=\"container-xl table-wrapper\">\n <div class=\"table-title\">\n <h2><b>{{tableName }}</b></h2>\n </div>\n <div class=\"loading-wrapper\">\n <ng-container *ngIf=\"!(loadingState | async); else loading; then table\">\n </ng-container>\n </div>\n <app-paginator [totalRecords] = \"totalRecords\" (paginator)=\"changePaginator($event)\"></app-paginator>\n</div>\n\n<ng-template #loading>\n <div class=\"loading-wrapper\">\n <app-loading></app-loading>\n </div>\n</ng-template>\n\n<ng-template #table>\n <ng-container *ngIf=\"totalRecords == 0; then emptyContent; else tableContent\">\n </ng-container>\n</ng-template>\n\n<ng-template #tableContent>\n <p-table [value]=\"items\" class=\"table table-striped table-hover\">\n <ng-template pTemplate=\"header\">\n <tr>\n <th>\n <ng-content select=\"[selectAllCheckbox]\"></ng-content>\n </th>\n <ng-container *ngFor=\" let col of columns\">\n <th>{{col.name }}</th>\n </ng-container>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-item>\n <ng-container [ngTemplateOutlet]=\"bodyTemplate\" [ngTemplateOutletContext]=\"{item:item}\"></ng-container>\n </ng-template>\n </p-table>\n</ng-template>\n\n<ng-template #emptyContent>\n <div class=\"no-record-message\">\n <div>No records</div>\n </div>\n</ng-template>\n", styles: [":host{width:100%}body{color:#566787;background:#f5f5f5;font-family:Varela Round,sans-serif;font-size:13px}.table-responsive{margin:30px 0}.table-wrapper{background:#fff;border-radius:3px;min-width:1000px;box-shadow:0 1px 1px #0000000d}.table-title{background:#435d7d;color:#fff;border-radius:3px 3px 0 0;padding:0 12px;display:flex}.table-title .table-name{width:70%}.table-title .table-add{width:30%;display:flex;align-items:center;justify-content:flex-end}.table-title .table-add a{cursor:pointer}.table-title h2{font-size:24px}.table-title .btn-group{float:right}.table-title .btn{color:#fff;float:right;font-size:13px;min-width:50px;border-radius:2px;border:none;outline:none!important;margin-left:10px}.table-title .btn i{float:left;font-size:21px;margin-right:5px}.table-title .btn span{float:left;margin-top:2px}::ng-deep .table tr th,::ng-deep .table tr td{border-color:#e9e9e9;padding:12px 15px;vertical-align:middle}::ng-deep .table tr th:first-child{width:60px;display:flex}::ng-deep .table tr th:last-child{width:150px}table.table-striped tbody tr:nth-of-type(odd){background-color:#fcfcfc}table.table-striped.table-hover tbody tr:hover{background:#f5f5f5}::ng-deep .table th{text-align:left}::ng-deep .table th i{font-size:13px;margin:0 5px;cursor:pointer}::ng-deep .table td:last-child i{opacity:.9;font-size:22px;margin:0 5px}::ng-deep .table td a{font-weight:700;color:#566787;display:inline-block;text-decoration:none;outline:none!important}.hint-text{float:left;margin-top:10px;font-size:13px}.no-record-message{width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}.excel{display:flex}.excel a{display:inline-flex;align-items:center}.loading-wrapper{height:calc(100vh - 220px);display:flex;flex-direction:column;width:100%;overflow-y:auto;overflow-x:hidden}.loading-wrapper::-webkit-scrollbar{width:12px}.loading-wrapper::-webkit-scrollbar-track{background:#f1f1f1;border-radius:10px;box-shadow:inset 0 0 5px #0000001a}.loading-wrapper::-webkit-scrollbar-thumb{background:#888;border-radius:10px;border:3px solid #f1f1f1;-webkit-transition:background .3s;transition:background .3s}.loading-wrapper::-webkit-scrollbar-thumb:hover{background:#555}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i2$1.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: LoadingComponent, selector: "app-loading", inputs: ["size", "imageSrc"] }, { kind: "component", type: PaginatorComponent, selector: "app-paginator", inputs: ["totalRecords"], outputs: ["paginator"] }] }); }
|
|
801
|
+
}
|
|
802
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableComponent, decorators: [{
|
|
803
|
+
type: Component,
|
|
804
|
+
args: [{ selector: 'app-table', standalone: true, imports: [CommonModule, TableModule, LoadingComponent, PaginatorComponent], template: "<div class=\"container-xl table-wrapper\">\n <div class=\"table-title\">\n <h2><b>{{tableName }}</b></h2>\n </div>\n <div class=\"loading-wrapper\">\n <ng-container *ngIf=\"!(loadingState | async); else loading; then table\">\n </ng-container>\n </div>\n <app-paginator [totalRecords] = \"totalRecords\" (paginator)=\"changePaginator($event)\"></app-paginator>\n</div>\n\n<ng-template #loading>\n <div class=\"loading-wrapper\">\n <app-loading></app-loading>\n </div>\n</ng-template>\n\n<ng-template #table>\n <ng-container *ngIf=\"totalRecords == 0; then emptyContent; else tableContent\">\n </ng-container>\n</ng-template>\n\n<ng-template #tableContent>\n <p-table [value]=\"items\" class=\"table table-striped table-hover\">\n <ng-template pTemplate=\"header\">\n <tr>\n <th>\n <ng-content select=\"[selectAllCheckbox]\"></ng-content>\n </th>\n <ng-container *ngFor=\" let col of columns\">\n <th>{{col.name }}</th>\n </ng-container>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-item>\n <ng-container [ngTemplateOutlet]=\"bodyTemplate\" [ngTemplateOutletContext]=\"{item:item}\"></ng-container>\n </ng-template>\n </p-table>\n</ng-template>\n\n<ng-template #emptyContent>\n <div class=\"no-record-message\">\n <div>No records</div>\n </div>\n</ng-template>\n", styles: [":host{width:100%}body{color:#566787;background:#f5f5f5;font-family:Varela Round,sans-serif;font-size:13px}.table-responsive{margin:30px 0}.table-wrapper{background:#fff;border-radius:3px;min-width:1000px;box-shadow:0 1px 1px #0000000d}.table-title{background:#435d7d;color:#fff;border-radius:3px 3px 0 0;padding:0 12px;display:flex}.table-title .table-name{width:70%}.table-title .table-add{width:30%;display:flex;align-items:center;justify-content:flex-end}.table-title .table-add a{cursor:pointer}.table-title h2{font-size:24px}.table-title .btn-group{float:right}.table-title .btn{color:#fff;float:right;font-size:13px;min-width:50px;border-radius:2px;border:none;outline:none!important;margin-left:10px}.table-title .btn i{float:left;font-size:21px;margin-right:5px}.table-title .btn span{float:left;margin-top:2px}::ng-deep .table tr th,::ng-deep .table tr td{border-color:#e9e9e9;padding:12px 15px;vertical-align:middle}::ng-deep .table tr th:first-child{width:60px;display:flex}::ng-deep .table tr th:last-child{width:150px}table.table-striped tbody tr:nth-of-type(odd){background-color:#fcfcfc}table.table-striped.table-hover tbody tr:hover{background:#f5f5f5}::ng-deep .table th{text-align:left}::ng-deep .table th i{font-size:13px;margin:0 5px;cursor:pointer}::ng-deep .table td:last-child i{opacity:.9;font-size:22px;margin:0 5px}::ng-deep .table td a{font-weight:700;color:#566787;display:inline-block;text-decoration:none;outline:none!important}.hint-text{float:left;margin-top:10px;font-size:13px}.no-record-message{width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}.excel{display:flex}.excel a{display:inline-flex;align-items:center}.loading-wrapper{height:calc(100vh - 220px);display:flex;flex-direction:column;width:100%;overflow-y:auto;overflow-x:hidden}.loading-wrapper::-webkit-scrollbar{width:12px}.loading-wrapper::-webkit-scrollbar-track{background:#f1f1f1;border-radius:10px;box-shadow:inset 0 0 5px #0000001a}.loading-wrapper::-webkit-scrollbar-thumb{background:#888;border-radius:10px;border:3px solid #f1f1f1;-webkit-transition:background .3s;transition:background .3s}.loading-wrapper::-webkit-scrollbar-thumb:hover{background:#555}\n"] }]
|
|
805
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { items: [{
|
|
806
|
+
type: Input
|
|
807
|
+
}], columns: [{
|
|
808
|
+
type: Input
|
|
809
|
+
}], totalRecords: [{
|
|
810
|
+
type: Input
|
|
811
|
+
}], tableName: [{
|
|
812
|
+
type: Input
|
|
813
|
+
}], loadingState: [{
|
|
814
|
+
type: Input
|
|
815
|
+
}], paginator: [{
|
|
816
|
+
type: Output
|
|
817
|
+
}], bodyTemplate: [{
|
|
818
|
+
type: ContentChild,
|
|
819
|
+
args: ['bodyTemplate']
|
|
820
|
+
}] } });
|
|
821
|
+
|
|
822
|
+
class FooterComponent {
|
|
823
|
+
constructor() { }
|
|
824
|
+
ngOnInit() {
|
|
825
|
+
}
|
|
826
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
827
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FooterComponent, isStandalone: true, selector: "app-footer", ngImport: i0, template: "<footer class=\"footer\">\n <div class=\"footer-container\">\n <div class=\"footer-section\">\n <h3>About Us</h3>\n <p>We are a company dedicated to providing excellent services and products to our customers.</p>\n </div>\n\n <div class=\"footer-section\">\n <h3>Quick Links</h3>\n <ul>\n <li><a href=\"#\">Home</a></li>\n <li><a href=\"#\">Services</a></li>\n <li><a href=\"#\">Contact</a></li>\n <li><a href=\"#\">Privacy Policy</a></li>\n </ul>\n </div>\n\n <div class=\"footer-section\">\n <h3>Follow Us</h3>\n <div class=\"social-icons\">\n <a href=\"#\" aria-label=\"Facebook\"><i class=\"fab fa-facebook-f\"></i></a>\n <a href=\"#\" aria-label=\"Twitter\"><i class=\"fab fa-twitter\"></i></a>\n <a href=\"#\" aria-label=\"Instagram\"><i class=\"fab fa-instagram\"></i></a>\n <a href=\"#\" aria-label=\"LinkedIn\"><i class=\"fab fa-linkedin-in\"></i></a>\n </div>\n </div>\n </div>\n\n <div class=\"footer-bottom\">\n <p>© 2024 Your Company. All Rights Reserved.</p>\n </div>\n</footer>\n", styles: [".footer{background-color:#333;color:#fff;padding:20px 0;text-align:center;font-family:Roboto,sans-serif}.footer-container{display:flex;justify-content:space-around;flex-wrap:wrap;max-width:1200px;margin:0 auto}.footer-section{flex:1;margin:15px;min-width:200px}.footer-section h3{margin-bottom:15px;font-size:18px}.footer-section p,.footer-section ul,.footer-section a{font-size:14px;color:#ccc;text-decoration:none}.footer-section ul{list-style:none;padding:0}.footer-section ul li{margin:5px 0}.footer-section ul li a:hover{color:#fff}.social-icons{margin-top:10px}.social-icons a{display:inline-block;color:#ccc;margin:0 10px;font-size:20px}.social-icons a:hover{color:#fff}.footer-bottom{margin-top:20px;border-top:1px solid #444;padding-top:10px;font-size:12px}\n"] }); }
|
|
828
|
+
}
|
|
829
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FooterComponent, decorators: [{
|
|
830
|
+
type: Component,
|
|
831
|
+
args: [{ selector: 'app-footer', standalone: true, template: "<footer class=\"footer\">\n <div class=\"footer-container\">\n <div class=\"footer-section\">\n <h3>About Us</h3>\n <p>We are a company dedicated to providing excellent services and products to our customers.</p>\n </div>\n\n <div class=\"footer-section\">\n <h3>Quick Links</h3>\n <ul>\n <li><a href=\"#\">Home</a></li>\n <li><a href=\"#\">Services</a></li>\n <li><a href=\"#\">Contact</a></li>\n <li><a href=\"#\">Privacy Policy</a></li>\n </ul>\n </div>\n\n <div class=\"footer-section\">\n <h3>Follow Us</h3>\n <div class=\"social-icons\">\n <a href=\"#\" aria-label=\"Facebook\"><i class=\"fab fa-facebook-f\"></i></a>\n <a href=\"#\" aria-label=\"Twitter\"><i class=\"fab fa-twitter\"></i></a>\n <a href=\"#\" aria-label=\"Instagram\"><i class=\"fab fa-instagram\"></i></a>\n <a href=\"#\" aria-label=\"LinkedIn\"><i class=\"fab fa-linkedin-in\"></i></a>\n </div>\n </div>\n </div>\n\n <div class=\"footer-bottom\">\n <p>© 2024 Your Company. All Rights Reserved.</p>\n </div>\n</footer>\n", styles: [".footer{background-color:#333;color:#fff;padding:20px 0;text-align:center;font-family:Roboto,sans-serif}.footer-container{display:flex;justify-content:space-around;flex-wrap:wrap;max-width:1200px;margin:0 auto}.footer-section{flex:1;margin:15px;min-width:200px}.footer-section h3{margin-bottom:15px;font-size:18px}.footer-section p,.footer-section ul,.footer-section a{font-size:14px;color:#ccc;text-decoration:none}.footer-section ul{list-style:none;padding:0}.footer-section ul li{margin:5px 0}.footer-section ul li a:hover{color:#fff}.social-icons{margin-top:10px}.social-icons a{display:inline-block;color:#ccc;margin:0 10px;font-size:20px}.social-icons a:hover{color:#fff}.footer-bottom{margin-top:20px;border-top:1px solid #444;padding-top:10px;font-size:12px}\n"] }]
|
|
832
|
+
}], ctorParameters: function () { return []; } });
|
|
833
|
+
|
|
834
|
+
class LoginComponent {
|
|
835
|
+
constructor() {
|
|
836
|
+
}
|
|
837
|
+
ngOnInit() {
|
|
838
|
+
}
|
|
839
|
+
// After the view initializes, we render the button
|
|
840
|
+
ngAfterViewInit() {
|
|
841
|
+
// Clear any existing content in the container
|
|
842
|
+
this.buttonContainer.clear();
|
|
843
|
+
// Render the provided button template inside the container
|
|
844
|
+
if (this.buttonTemplate) {
|
|
845
|
+
this.buttonContainer.createEmbeddedView(this.buttonTemplate);
|
|
846
|
+
}
|
|
847
|
+
}
|
|
848
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LoginComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
849
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LoginComponent, isStandalone: true, selector: "app-login", inputs: { buttonTemplate: "buttonTemplate" }, viewQueries: [{ propertyName: "buttonContainer", first: true, predicate: ["buttonContainer"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div class=\"login-page\">\n <div class=\"icon-area\">\n <div class=\"icon\">\n <span>innocons</span>\n </div>\n </div>\n <div class=\"login-button\" id=\"buttonDiv\">\n <ng-template #buttonContainer></ng-template>\n </div>\n</div>\n", styles: [".login-button{width:100%;align-items:center;justify-content:center;display:flex}.login-page{height:100%;width:100%;flex-direction:row;display:flex}.icon-area{width:38%;background-color:#2a76d7;height:100%;display:flex}.icon{width:100%;align-items:center;justify-content:center;display:flex}.icon span{color:#fff;font-size:xxx-large;font-family:fantasy}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
|
850
|
+
}
|
|
851
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LoginComponent, decorators: [{
|
|
852
|
+
type: Component,
|
|
853
|
+
args: [{ selector: 'app-login', standalone: true, imports: [CommonModule], template: "<div class=\"login-page\">\n <div class=\"icon-area\">\n <div class=\"icon\">\n <span>innocons</span>\n </div>\n </div>\n <div class=\"login-button\" id=\"buttonDiv\">\n <ng-template #buttonContainer></ng-template>\n </div>\n</div>\n", styles: [".login-button{width:100%;align-items:center;justify-content:center;display:flex}.login-page{height:100%;width:100%;flex-direction:row;display:flex}.icon-area{width:38%;background-color:#2a76d7;height:100%;display:flex}.icon{width:100%;align-items:center;justify-content:center;display:flex}.icon span{color:#fff;font-size:xxx-large;font-family:fantasy}\n"] }]
|
|
854
|
+
}], ctorParameters: function () { return []; }, propDecorators: { buttonTemplate: [{
|
|
855
|
+
type: Input
|
|
856
|
+
}], buttonContainer: [{
|
|
857
|
+
type: ViewChild,
|
|
858
|
+
args: ['buttonContainer', { read: ViewContainerRef }]
|
|
859
|
+
}] } });
|
|
860
|
+
|
|
861
|
+
class MenuComponent {
|
|
862
|
+
constructor() {
|
|
863
|
+
this.menuItems = [];
|
|
864
|
+
this.logoUrl = "";
|
|
865
|
+
this.direction = MenuDirection.horizontal;
|
|
866
|
+
}
|
|
867
|
+
ngOnInit() {
|
|
868
|
+
}
|
|
869
|
+
get isVertical() {
|
|
870
|
+
return this.direction === MenuDirection.vertical;
|
|
871
|
+
}
|
|
872
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
873
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MenuComponent, isStandalone: true, selector: "app-menu", inputs: { menuItems: "menuItems", logoUrl: "logoUrl", direction: "direction" }, ngImport: i0, template: "<nav class=\"menu\" [ngClass]=\"{'vertical': isVertical, 'horizontal': !isVertical}\">\n <div class=\"logo\">\n <img src=\"{{logoUrl}}\" alt=\"Logo\" />\n </div>\n <ul>\n <li *ngFor=\"let item of menuItems\">\n <a [href]=\"item.route\">{{ item.label }}</a>\n </li>\n </ul>\n <div class=\"actions\">\n <div class=\"language\">\n <span class=\"material-icons\" aria-hidden=\"true\">language</span>\n </div>\n <div class=\"login\">\n <span class=\"material-icons\" aria-hidden=\"true\">person</span>\n </div>\n </div>\n</nav>\n", styles: [":host{display:flex}.menu{background-color:#f8f9fa;padding:10px;box-shadow:0 2px 5px #0000001a}.menu.vertical{display:flex;justify-content:space-between;flex-direction:column;width:200px}.menu.vertical ul{list-style-type:none;padding:0;height:100%}.menu.vertical ul li{padding:8px 0}.menu.vertical ul li:hover{background-color:#e9ecef;cursor:pointer}.menu.vertical .actions{display:flex;flex-direction:column;align-items:baseline}.menu.horizontal{display:flex;flex-direction:row;width:100%;height:80px}.menu.horizontal ul{display:flex;list-style-type:none;padding:0;margin:0;flex-grow:1;align-items:center}.menu.horizontal ul li{padding:8px 16px}.menu.horizontal ul li:hover{background-color:#e9ecef;cursor:pointer}.menu .logo img{width:100%;height:100%}.menu .actions{display:flex;align-items:center}.menu .actions .language,.menu .actions .login{margin-left:10px}a{text-decoration:none;color:inherit;display:block;padding:10px;transition:background-color .3s ease}\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"] }] }); }
|
|
874
|
+
}
|
|
875
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MenuComponent, decorators: [{
|
|
876
|
+
type: Component,
|
|
877
|
+
args: [{ selector: 'app-menu', standalone: true, imports: [CommonModule], template: "<nav class=\"menu\" [ngClass]=\"{'vertical': isVertical, 'horizontal': !isVertical}\">\n <div class=\"logo\">\n <img src=\"{{logoUrl}}\" alt=\"Logo\" />\n </div>\n <ul>\n <li *ngFor=\"let item of menuItems\">\n <a [href]=\"item.route\">{{ item.label }}</a>\n </li>\n </ul>\n <div class=\"actions\">\n <div class=\"language\">\n <span class=\"material-icons\" aria-hidden=\"true\">language</span>\n </div>\n <div class=\"login\">\n <span class=\"material-icons\" aria-hidden=\"true\">person</span>\n </div>\n </div>\n</nav>\n", styles: [":host{display:flex}.menu{background-color:#f8f9fa;padding:10px;box-shadow:0 2px 5px #0000001a}.menu.vertical{display:flex;justify-content:space-between;flex-direction:column;width:200px}.menu.vertical ul{list-style-type:none;padding:0;height:100%}.menu.vertical ul li{padding:8px 0}.menu.vertical ul li:hover{background-color:#e9ecef;cursor:pointer}.menu.vertical .actions{display:flex;flex-direction:column;align-items:baseline}.menu.horizontal{display:flex;flex-direction:row;width:100%;height:80px}.menu.horizontal ul{display:flex;list-style-type:none;padding:0;margin:0;flex-grow:1;align-items:center}.menu.horizontal ul li{padding:8px 16px}.menu.horizontal ul li:hover{background-color:#e9ecef;cursor:pointer}.menu .logo img{width:100%;height:100%}.menu .actions{display:flex;align-items:center}.menu .actions .language,.menu .actions .login{margin-left:10px}a{text-decoration:none;color:inherit;display:block;padding:10px;transition:background-color .3s ease}\n"] }]
|
|
878
|
+
}], ctorParameters: function () { return []; }, propDecorators: { menuItems: [{
|
|
879
|
+
type: Input
|
|
880
|
+
}], logoUrl: [{
|
|
881
|
+
type: Input
|
|
882
|
+
}], direction: [{
|
|
883
|
+
type: Input
|
|
884
|
+
}] } });
|
|
885
|
+
|
|
886
|
+
class VersionComponent {
|
|
887
|
+
constructor() {
|
|
888
|
+
this.content = {
|
|
889
|
+
title: 'Card 2 Title',
|
|
890
|
+
content: 'This is an example of left-aligned content.',
|
|
891
|
+
coverImage: 'https://via.placeholder.com/150',
|
|
892
|
+
contentDirection: ContentDirection.right,
|
|
893
|
+
template: null
|
|
894
|
+
};
|
|
895
|
+
}
|
|
896
|
+
ngOnInit() {
|
|
897
|
+
}
|
|
898
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: VersionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
899
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: VersionComponent, isStandalone: true, selector: "app-version", ngImport: i0, template: "<app-content-design\n[content] = \"content\">\n</app-content-design>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: ContentDesignComponent, selector: "app-content-design", inputs: ["content"], outputs: ["clickEvent"] }] }); }
|
|
900
|
+
}
|
|
901
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: VersionComponent, decorators: [{
|
|
902
|
+
type: Component,
|
|
903
|
+
args: [{ selector: 'app-version', standalone: true, imports: [CommonModule, ContentDesignComponent], template: "<app-content-design\n[content] = \"content\">\n</app-content-design>\n" }]
|
|
904
|
+
}], ctorParameters: function () { return []; } });
|
|
905
|
+
|
|
906
|
+
/*
|
|
907
|
+
* Public API Surface of angular-dumb-lib
|
|
908
|
+
*/
|
|
909
|
+
|
|
910
|
+
/**
|
|
911
|
+
* Generated bundle index. Do not edit.
|
|
912
|
+
*/
|
|
913
|
+
|
|
914
|
+
export { AngularDumbLibComponent, AngularDumbLibModule, AngularDumbLibService, ButtonComponent, CardsComponent, ContentDesignComponent, DatetimePickerComponent, FileSelectionComponent, FooterComponent, FormComponent, InputComponent, LoadingComponent, LoginComponent, MenuComponent, ModalComponent, PaginatorComponent, SelectionComponent, SliderComponent, TableComponent, TagsComponent, VersionComponent };
|
|
915
|
+
//# sourceMappingURL=angular-dumb-lib.mjs.map
|