angular-dumb-lib 0.0.29 → 0.0.31

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.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, Component, NgModule, EventEmitter, Output, Input, forwardRef, ContentChild, ViewChild, HostListener } from '@angular/core';
2
+ import { Injectable, Component, NgModule, EventEmitter, Output, Input, forwardRef, ViewChild, ContentChild, HostListener } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import * as i2 from '@angular/forms';
@@ -101,6 +101,11 @@ var InputType;
101
101
  InputType["select"] = "select";
102
102
  InputType["file"] = "file";
103
103
  })(InputType || (InputType = {}));
104
+ var TableColumnType;
105
+ (function (TableColumnType) {
106
+ TableColumnType["text"] = "text";
107
+ TableColumnType["image"] = "image";
108
+ })(TableColumnType || (TableColumnType = {}));
104
109
  var ContentDirection;
105
110
  (function (ContentDirection) {
106
111
  ContentDirection["left"] = "left";
@@ -108,12 +113,6 @@ var ContentDirection;
108
113
  ContentDirection["up"] = "up";
109
114
  ContentDirection["down"] = "down";
110
115
  })(ContentDirection || (ContentDirection = {}));
111
- var SelectionType;
112
- (function (SelectionType) {
113
- SelectionType["dropdown"] = "dropdown";
114
- SelectionType["radio"] = "radio";
115
- SelectionType["checkbox"] = "checkbox";
116
- })(SelectionType || (SelectionType = {}));
117
116
  var Size;
118
117
  (function (Size) {
119
118
  Size["Xbig"] = "xbig";
@@ -247,19 +246,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
247
246
 
248
247
  class FileSelectionComponent {
249
248
  constructor() {
250
- this.imageUrl = null; // Allow imageUrl to be passed externally
251
- this.fileName = null; // Allow fileName to be passed externally
249
+ this.label = '';
250
+ this.chooseFileLabel = 'Select Image';
251
+ this.imageUrl = null;
252
+ this.fileName = null;
253
+ this.valueChange = new EventEmitter();
254
+ this._value = null;
255
+ this.isDisabled = false;
252
256
  this.onChange = () => { };
253
257
  this.onTouched = () => { };
254
- this._value = undefined;
255
258
  }
256
259
  get value() {
257
260
  return this._value;
258
261
  }
259
- set value(value) {
260
- this._value = value;
261
- this.onChange(this._value);
262
+ set value(val) {
263
+ this._value = val;
264
+ this.onChange(val);
262
265
  this.onTouched();
266
+ this.valueChange.emit(val);
263
267
  }
264
268
  ngOnInit() {
265
269
  this.config = {
@@ -269,25 +273,45 @@ class FileSelectionComponent {
269
273
  }
270
274
  onFileSelected(event) {
271
275
  const input = event.target;
272
- if (input.files && input.files.length > 0) {
273
- const file = input.files[0];
274
- // Store the file name to display it in the UI
275
- this.fileName = file.name;
276
- this.value = file;
277
- // Generate image preview URL if it's an image
278
- const reader = new FileReader();
279
- reader.onload = (e) => {
280
- this.imageUrl = e.target.result; // Set image URL for preview
281
- };
282
- reader.readAsDataURL(file);
276
+ if (!input.files?.length)
277
+ return;
278
+ const file = input.files[0];
279
+ this.fileName = file.name;
280
+ this.value = file;
281
+ if (file.type.startsWith('image/')) {
282
+ this.previewImage(file);
283
283
  }
284
284
  }
285
+ previewImage(file) {
286
+ const reader = new FileReader();
287
+ reader.onload = () => {
288
+ this.imageUrl = reader.result;
289
+ };
290
+ reader.readAsDataURL(file);
291
+ }
285
292
  triggerFileInput() {
286
- const fileInput = document.getElementById('fileInput');
287
- fileInput.click(); // Programmatically click the hidden file input
293
+ if (!this.isDisabled) {
294
+ this.fileInputRef.nativeElement.click();
295
+ }
288
296
  }
289
297
  writeValue(value) {
290
298
  this._value = value;
299
+ if (value instanceof File) {
300
+ this.fileName = value.name;
301
+ const reader = new FileReader();
302
+ reader.onload = (e) => {
303
+ this.imageUrl = e.target.result;
304
+ };
305
+ reader.readAsDataURL(value);
306
+ }
307
+ else if (typeof value === 'string') {
308
+ this.imageUrl = value;
309
+ this.fileName = value.split('/').pop() || 'image.jpg';
310
+ }
311
+ else {
312
+ this.imageUrl = null;
313
+ this.fileName = null;
314
+ }
291
315
  }
292
316
  registerOnChange(fn) {
293
317
  this.onChange = fn;
@@ -296,14 +320,14 @@ class FileSelectionComponent {
296
320
  this.onTouched = fn;
297
321
  }
298
322
  setDisabledState(isDisabled) {
299
- // Implement if you need to handle disabled state
323
+ this.isDisabled = isDisabled;
300
324
  }
301
325
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: FileSelectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
302
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: FileSelectionComponent, isStandalone: true, selector: "app-file-selection", inputs: { label: "label", chooseFileLabel: "chooseFileLabel", imageUrl: "imageUrl", fileName: "fileName" }, providers: [{
326
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: FileSelectionComponent, isStandalone: true, selector: "app-file-selection", inputs: { label: "label", chooseFileLabel: "chooseFileLabel", imageUrl: "imageUrl", fileName: "fileName" }, outputs: { valueChange: "valueChange" }, providers: [{
303
327
  provide: NG_VALUE_ACCESSOR,
304
328
  useExisting: forwardRef(() => FileSelectionComponent),
305
329
  multi: true
306
- }], 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"] }] }); }
330
+ }], viewQueries: [{ propertyName: "fileInputRef", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: "<div class=\"file-selector\">\n <label *ngIf=\"label\">{{ label }}</label>\n\n <input\n #fileInput\n type=\"file\"\n accept=\"image/*\"\n (change)=\"onFileSelected($event)\"\n class=\"hidden-file-input\"\n [disabled]=\"isDisabled\"\n />\n\n <div class=\"file-selection\">\n <app-button\n [config]=\"config\"\n class=\"custom-file-button\"\n (clickEvent)=\"triggerFileInput()\"\n >\n {{ chooseFileLabel }}\n </app-button>\n\n <div *ngIf=\"fileName\" class=\"file-name\">\n {{ fileName }}\n </div>\n </div>\n\n <div *ngIf=\"imageUrl\" class=\"preview-container\">\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"] }] }); }
307
331
  }
308
332
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: FileSelectionComponent, decorators: [{
309
333
  type: Component,
@@ -311,7 +335,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
311
335
  provide: NG_VALUE_ACCESSOR,
312
336
  useExisting: forwardRef(() => FileSelectionComponent),
313
337
  multi: true
314
- }], 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"] }]
338
+ }], imports: [CommonModule, ButtonComponent], template: "<div class=\"file-selector\">\n <label *ngIf=\"label\">{{ label }}</label>\n\n <input\n #fileInput\n type=\"file\"\n accept=\"image/*\"\n (change)=\"onFileSelected($event)\"\n class=\"hidden-file-input\"\n [disabled]=\"isDisabled\"\n />\n\n <div class=\"file-selection\">\n <app-button\n [config]=\"config\"\n class=\"custom-file-button\"\n (clickEvent)=\"triggerFileInput()\"\n >\n {{ chooseFileLabel }}\n </app-button>\n\n <div *ngIf=\"fileName\" class=\"file-name\">\n {{ fileName }}\n </div>\n </div>\n\n <div *ngIf=\"imageUrl\" class=\"preview-container\">\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"] }]
315
339
  }], propDecorators: { label: [{
316
340
  type: Input
317
341
  }], chooseFileLabel: [{
@@ -320,6 +344,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
320
344
  type: Input
321
345
  }], fileName: [{
322
346
  type: Input
347
+ }], valueChange: [{
348
+ type: Output
349
+ }], fileInputRef: [{
350
+ type: ViewChild,
351
+ args: ['fileInput']
323
352
  }] } });
324
353
 
325
354
  class InputComponent {
@@ -358,7 +387,7 @@ class InputComponent {
358
387
  provide: NG_VALUE_ACCESSOR,
359
388
  useExisting: forwardRef(() => InputComponent),
360
389
  multi: true
361
- }], 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': isInvalid}\">\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': isInvalid}\">\n </textarea>\n <i *ngIf=\"isInvalid\" 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"] }] }); }
390
+ }], 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': isInvalid}\">\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': isInvalid}\">\n </textarea>\n <i *ngIf=\"isInvalid\" 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,.input-item .input-container .input-error:focus,.input-item .input-container .input-error:focus-visible{border-color:red!important;outline:none;box-shadow:none}.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"] }] }); }
362
391
  }
363
392
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: InputComponent, decorators: [{
364
393
  type: Component,
@@ -366,7 +395,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
366
395
  provide: NG_VALUE_ACCESSOR,
367
396
  useExisting: forwardRef(() => InputComponent),
368
397
  multi: true
369
- }], 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': isInvalid}\">\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': isInvalid}\">\n </textarea>\n <i *ngIf=\"isInvalid\" 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"] }]
398
+ }], 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': isInvalid}\">\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': isInvalid}\">\n </textarea>\n <i *ngIf=\"isInvalid\" 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,.input-item .input-container .input-error:focus,.input-item .input-container .input-error:focus-visible{border-color:red!important;outline:none;box-shadow:none}.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"] }]
370
399
  }], ctorParameters: () => [], propDecorators: { config: [{
371
400
  type: Input
372
401
  }], isInvalid: [{
@@ -406,48 +435,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
406
435
 
407
436
  class SelectionComponent {
408
437
  constructor() {
409
- this.label = ''; // Label for the dropdown
410
- this.options = []; // Array of options
411
- this.selectedValues = []; // Pre-selected values (multi-selection)
412
- this.isMultiSelect = false; // Enable multi-selection for dropdown
413
- this.displayType = SelectionType.dropdown; // Control the display type (dropdown, radio, or checkbox)
414
- this.selectedChange = new EventEmitter(); // Event emitter for value changes
438
+ this.label = '';
439
+ this.options = [];
440
+ this.isMultiSelect = false;
441
+ this.selectedChange = new EventEmitter();
442
+ this._value = [];
415
443
  this.onChange = () => { };
416
444
  this.onTouched = () => { };
417
445
  }
418
446
  get value() {
419
- return this.selectedValue;
420
- }
421
- set value(value) {
422
- this.selectedValue = (this.isMultiSelect === false && Array.isArray(value)) ? value[0] : value;
423
- this.onChange(this.selectedValue);
424
- this.onTouched();
425
- }
426
- ngOnInit() {
427
- if (this.options && this.options.length > 0 && !this.isMultiSelect) {
428
- this.selectedValue = this.options[0].value;
429
- this.onChange(this.selectedValue);
430
- }
431
- }
432
- onSelectChange(event) {
433
- this.selectedChange.emit(this.selectedValue);
447
+ return this._value;
434
448
  }
435
- onMultiSelectChange(event) {
436
- const target = event.target;
437
- const value = target.value;
438
- if (target.checked) {
439
- this.selectedValues.push(value);
440
- }
441
- else {
442
- this.selectedValues = this.selectedValues.filter(v => v !== value);
449
+ set value(val) {
450
+ if (JSON.stringify(this._value) !== JSON.stringify(val)) {
451
+ this._value = val;
452
+ this.onChange(val);
453
+ this.onTouched();
454
+ this.selectedChange.emit(val);
443
455
  }
444
- this.selectedChange.emit(this.selectedValues);
445
456
  }
446
- isSelected(value) {
447
- return this.isMultiSelect ? this.selectedValues.includes(value) : value === this.selectedValue;
457
+ onDropdownChange(value) {
458
+ this.value = this.isMultiSelect
459
+ ? value
460
+ : (Array.isArray(value) ? value[0] : value);
448
461
  }
449
462
  writeValue(value) {
450
- this.selectedValue = value;
463
+ this._value = this.isMultiSelect
464
+ ? (Array.isArray(value) ? [...value] : [])
465
+ : value;
451
466
  }
452
467
  registerOnChange(fn) {
453
468
  this.onChange = fn;
@@ -455,35 +470,30 @@ class SelectionComponent {
455
470
  registerOnTouched(fn) {
456
471
  this.onTouched = fn;
457
472
  }
458
- setDisabledState(isDisabled) {
459
- // Implement if you need to handle disabled state
460
- }
461
473
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: SelectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
462
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: SelectionComponent, isStandalone: true, selector: "app-selection", inputs: { label: "label", options: "options", selectedValue: "selectedValue", selectedValues: "selectedValues", isMultiSelect: "isMultiSelect", displayType: "displayType" }, outputs: { selectedChange: "selectedChange" }, providers: [{
474
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: SelectionComponent, isStandalone: true, selector: "app-selection", inputs: { label: "label", options: "options", isMultiSelect: "isMultiSelect" }, outputs: { selectedChange: "selectedChange" }, providers: [
475
+ {
463
476
  provide: NG_VALUE_ACCESSOR,
464
477
  useExisting: forwardRef(() => SelectionComponent),
465
- multi: true
466
- }], 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"] }] }); }
478
+ multi: true,
479
+ },
480
+ ], ngImport: i0, template: "<div class=\"dropdown\">\n <label *ngIf=\"label\">{{ label }}</label>\n <select\n [multiple]=\"isMultiSelect\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onDropdownChange($event)\">\n <option *ngFor=\"let option of options\" [value]=\"option.value\">\n {{ option.label }}\n </option>\n </select>\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"] }] }); }
467
481
  }
468
482
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: SelectionComponent, decorators: [{
469
483
  type: Component,
470
- args: [{ selector: 'app-selection', standalone: true, providers: [{
484
+ args: [{ selector: 'app-selection', standalone: true, imports: [CommonModule, FormsModule], providers: [
485
+ {
471
486
  provide: NG_VALUE_ACCESSOR,
472
487
  useExisting: forwardRef(() => SelectionComponent),
473
- multi: true
474
- }], 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"] }]
488
+ multi: true,
489
+ },
490
+ ], template: "<div class=\"dropdown\">\n <label *ngIf=\"label\">{{ label }}</label>\n <select\n [multiple]=\"isMultiSelect\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onDropdownChange($event)\">\n <option *ngFor=\"let option of options\" [value]=\"option.value\">\n {{ option.label }}\n </option>\n </select>\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"] }]
475
491
  }], propDecorators: { label: [{
476
492
  type: Input
477
493
  }], options: [{
478
494
  type: Input
479
- }], selectedValue: [{
480
- type: Input
481
- }], selectedValues: [{
482
- type: Input
483
495
  }], isMultiSelect: [{
484
496
  type: Input
485
- }], displayType: [{
486
- type: Input
487
497
  }], selectedChange: [{
488
498
  type: Output
489
499
  }] } });
@@ -737,14 +747,14 @@ class FormComponent {
737
747
  return !!(control && control.invalid && (control.dirty || control.touched));
738
748
  }
739
749
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: FormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
740
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", 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()\" [formGroup]=\"formGroup\">\n <ng-container *ngIf=\"inputConfigs && inputConfigs.length > 0; else noInputs\">\n <ng-container *ngFor=\"let inputConfig of inputConfigs; trackBy: trackByFn\">\n\n <!-- Input Field -->\n <app-input\n *ngIf=\"checkFormConfigType(inputConfig.type) === InputGroupType.textual\"\n [formControlName]=\"inputConfig.name\"\n [config]=\"inputConfig\"\n [required]=\"inputConfig.required!\"\n [isInvalid]=\"isControlInvalid(inputConfig.name)\"\n (valueChange)=\"onValueChange(inputConfig.name, $event)\">\n </app-input>\n\n <!-- Selection Field -->\n <app-selection\n *ngIf=\"checkFormConfigType(inputConfig.type) === InputGroupType.selection\"\n [formControlName]=\"inputConfig.name\"\n [label]=\"inputConfig.label!\"\n [options]=\"inputConfig.options\"\n (valueChange)=\"onValueChange(inputConfig.name, $event)\">\n </app-selection>\n\n <!-- File Selection -->\n <app-file-selection\n *ngIf=\"checkFormConfigType(inputConfig.type) === InputGroupType.file\"\n [formControlName]=\"inputConfig.name\"\n [label]=\"inputConfig.label!\"\n (valueChange)=\"onValueChange(inputConfig.name, $event)\">\n </app-file-selection>\n\n <!-- Validation Messages -->\n <div *ngIf=\"formGroup.controls[inputConfig.name]?.invalid && formGroup.controls[inputConfig.name]?.touched\" class=\"error-message\">\n <ng-container *ngIf=\"formGroup.controls[inputConfig.name]?.errors as errors\">\n <ng-container *ngFor=\"let errorKey of getErrorKeys(errors)\">\n <div *ngIf=\"validationMessages[inputConfig.name]?.[errorKey]\">\n {{ validationMessages[inputConfig.name][errorKey] }}\n </div>\n </ng-container>\n </ng-container>\n </div>\n\n </ng-container>\n </ng-container>\n\n <!-- Submit Button -->\n <app-button [config]=\"buttonConfig\"></app-button>\n</form>\n\n<!-- No Inputs Placeholder -->\n<ng-template #noInputs>\n <p>No inputs configured.</p>\n</ng-template>\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}.error-message{color:red;font-size:12px;margin-top:4px}\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", "isInvalid"] }, { 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"] }] }); }
750
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", 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()\" [formGroup]=\"formGroup\">\n <ng-container *ngIf=\"inputConfigs && inputConfigs.length > 0; else noInputs\">\n <ng-container *ngFor=\"let inputConfig of inputConfigs; trackBy: trackByFn\">\n\n <!-- Input Field -->\n <app-input\n *ngIf=\"checkFormConfigType(inputConfig.type) === InputGroupType.textual\"\n [formControlName]=\"inputConfig.name\"\n [config]=\"inputConfig\"\n [required]=\"inputConfig.required!\"\n [isInvalid]=\"isControlInvalid(inputConfig.name)\"\n (valueChange)=\"onValueChange(inputConfig.name, $event)\">\n </app-input>\n\n <!-- Selection Field -->\n <app-selection\n *ngIf=\"checkFormConfigType(inputConfig.type) === InputGroupType.selection\"\n [formControlName]=\"inputConfig.name\"\n [label]=\"inputConfig.label!\"\n [options]=\"inputConfig.options\"\n (valueChange)=\"onValueChange(inputConfig.name, $event)\">\n </app-selection>\n\n <!-- File Selection -->\n <app-file-selection\n *ngIf=\"checkFormConfigType(inputConfig.type) === InputGroupType.file\"\n [formControlName]=\"inputConfig.name\"\n [label]=\"inputConfig.label!\"\n [chooseFileLabel]=\"'Choose Image'\"\n (valueChange)=\"onValueChange(inputConfig.name, $event)\">\n </app-file-selection>\n\n <!-- Validation Messages -->\n <div *ngIf=\"formGroup.controls[inputConfig.name]?.invalid && formGroup.controls[inputConfig.name]?.touched\" class=\"error-message\">\n <ng-container *ngIf=\"formGroup.controls[inputConfig.name]?.errors as errors\">\n <ng-container *ngFor=\"let errorKey of getErrorKeys(errors)\">\n <div *ngIf=\"validationMessages[inputConfig.name]?.[errorKey]\">\n {{ validationMessages[inputConfig.name][errorKey] }}\n </div>\n </ng-container>\n </ng-container>\n </div>\n\n </ng-container>\n </ng-container>\n\n <!-- Submit Button -->\n <app-button [config]=\"buttonConfig\"></app-button>\n</form>\n\n<!-- No Inputs Placeholder -->\n<ng-template #noInputs>\n <p>No inputs configured.</p>\n</ng-template>\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}.error-message{color:red;font-size:12px;margin-top:4px}\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", "isInvalid"] }, { kind: "component", type: SelectionComponent, selector: "app-selection", inputs: ["label", "options", "isMultiSelect"], outputs: ["selectedChange"] }, { kind: "component", type: FileSelectionComponent, selector: "app-file-selection", inputs: ["label", "chooseFileLabel", "imageUrl", "fileName"], outputs: ["valueChange"] }, { 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"] }] }); }
741
751
  }
742
752
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: FormComponent, decorators: [{
743
753
  type: Component,
744
754
  args: [{ selector: 'app-form', standalone: true, imports: [
745
755
  CommonModule, InputComponent, SelectionComponent,
746
756
  FileSelectionComponent, ButtonComponent, FormsModule, ReactiveFormsModule
747
- ], template: "<form (ngSubmit)=\"onSubmit()\" [formGroup]=\"formGroup\">\n <ng-container *ngIf=\"inputConfigs && inputConfigs.length > 0; else noInputs\">\n <ng-container *ngFor=\"let inputConfig of inputConfigs; trackBy: trackByFn\">\n\n <!-- Input Field -->\n <app-input\n *ngIf=\"checkFormConfigType(inputConfig.type) === InputGroupType.textual\"\n [formControlName]=\"inputConfig.name\"\n [config]=\"inputConfig\"\n [required]=\"inputConfig.required!\"\n [isInvalid]=\"isControlInvalid(inputConfig.name)\"\n (valueChange)=\"onValueChange(inputConfig.name, $event)\">\n </app-input>\n\n <!-- Selection Field -->\n <app-selection\n *ngIf=\"checkFormConfigType(inputConfig.type) === InputGroupType.selection\"\n [formControlName]=\"inputConfig.name\"\n [label]=\"inputConfig.label!\"\n [options]=\"inputConfig.options\"\n (valueChange)=\"onValueChange(inputConfig.name, $event)\">\n </app-selection>\n\n <!-- File Selection -->\n <app-file-selection\n *ngIf=\"checkFormConfigType(inputConfig.type) === InputGroupType.file\"\n [formControlName]=\"inputConfig.name\"\n [label]=\"inputConfig.label!\"\n (valueChange)=\"onValueChange(inputConfig.name, $event)\">\n </app-file-selection>\n\n <!-- Validation Messages -->\n <div *ngIf=\"formGroup.controls[inputConfig.name]?.invalid && formGroup.controls[inputConfig.name]?.touched\" class=\"error-message\">\n <ng-container *ngIf=\"formGroup.controls[inputConfig.name]?.errors as errors\">\n <ng-container *ngFor=\"let errorKey of getErrorKeys(errors)\">\n <div *ngIf=\"validationMessages[inputConfig.name]?.[errorKey]\">\n {{ validationMessages[inputConfig.name][errorKey] }}\n </div>\n </ng-container>\n </ng-container>\n </div>\n\n </ng-container>\n </ng-container>\n\n <!-- Submit Button -->\n <app-button [config]=\"buttonConfig\"></app-button>\n</form>\n\n<!-- No Inputs Placeholder -->\n<ng-template #noInputs>\n <p>No inputs configured.</p>\n</ng-template>\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}.error-message{color:red;font-size:12px;margin-top:4px}\n"] }]
757
+ ], template: "<form (ngSubmit)=\"onSubmit()\" [formGroup]=\"formGroup\">\n <ng-container *ngIf=\"inputConfigs && inputConfigs.length > 0; else noInputs\">\n <ng-container *ngFor=\"let inputConfig of inputConfigs; trackBy: trackByFn\">\n\n <!-- Input Field -->\n <app-input\n *ngIf=\"checkFormConfigType(inputConfig.type) === InputGroupType.textual\"\n [formControlName]=\"inputConfig.name\"\n [config]=\"inputConfig\"\n [required]=\"inputConfig.required!\"\n [isInvalid]=\"isControlInvalid(inputConfig.name)\"\n (valueChange)=\"onValueChange(inputConfig.name, $event)\">\n </app-input>\n\n <!-- Selection Field -->\n <app-selection\n *ngIf=\"checkFormConfigType(inputConfig.type) === InputGroupType.selection\"\n [formControlName]=\"inputConfig.name\"\n [label]=\"inputConfig.label!\"\n [options]=\"inputConfig.options\"\n (valueChange)=\"onValueChange(inputConfig.name, $event)\">\n </app-selection>\n\n <!-- File Selection -->\n <app-file-selection\n *ngIf=\"checkFormConfigType(inputConfig.type) === InputGroupType.file\"\n [formControlName]=\"inputConfig.name\"\n [label]=\"inputConfig.label!\"\n [chooseFileLabel]=\"'Choose Image'\"\n (valueChange)=\"onValueChange(inputConfig.name, $event)\">\n </app-file-selection>\n\n <!-- Validation Messages -->\n <div *ngIf=\"formGroup.controls[inputConfig.name]?.invalid && formGroup.controls[inputConfig.name]?.touched\" class=\"error-message\">\n <ng-container *ngIf=\"formGroup.controls[inputConfig.name]?.errors as errors\">\n <ng-container *ngFor=\"let errorKey of getErrorKeys(errors)\">\n <div *ngIf=\"validationMessages[inputConfig.name]?.[errorKey]\">\n {{ validationMessages[inputConfig.name][errorKey] }}\n </div>\n </ng-container>\n </ng-container>\n </div>\n\n </ng-container>\n </ng-container>\n\n <!-- Submit Button -->\n <app-button [config]=\"buttonConfig\"></app-button>\n</form>\n\n<!-- No Inputs Placeholder -->\n<ng-template #noInputs>\n <p>No inputs configured.</p>\n</ng-template>\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}.error-message{color:red;font-size:12px;margin-top:4px}\n"] }]
748
758
  }], propDecorators: { formGroup: [{
749
759
  type: Input
750
760
  }], inputConfigs: [{
@@ -834,21 +844,21 @@ class PaginatorComponent {
834
844
  this.itemsPerPageList = [
835
845
  {
836
846
  label: "3",
837
- value: 1
847
+ value: 3
838
848
  },
839
849
  {
840
850
  label: "5",
841
- value: 2
851
+ value: 5
842
852
  },
843
853
  {
844
854
  label: "20",
845
- value: 3
855
+ value: 20
846
856
  }
847
857
  ];
848
858
  this.selectedPage = 1;
849
859
  this.buttonType = ButtonType.button;
850
860
  this.inputDirection = InputDirection.horizontal;
851
- this.itemsPerPage = parseInt(this.itemsPerPageList[0].label);
861
+ this.itemsPerPage = parseInt(this.itemsPerPageList[0].value);
852
862
  this.calculateNumberOfPage(this.totalRecords, this.itemsPerPage);
853
863
  this.updateButtonConfigs();
854
864
  this.emitPaging();
@@ -862,11 +872,10 @@ class PaginatorComponent {
862
872
  this.updateButtonConfigs();
863
873
  this.emitPaging();
864
874
  }
865
- onChangeNumberOfPage(itemsPerPageId) {
875
+ onChangeNumberOfPage(itemsPerPage) {
866
876
  this.selectedPage = 1;
867
- this.itemsPerPage = parseInt(this.itemsPerPageList.find(i => i.value === parseInt(itemsPerPageId))?.label ??
868
- this.itemsPerPage.toString());
869
- this.calculateNumberOfPage(this.totalRecords, this.itemsPerPage);
877
+ this.itemsPerPage = itemsPerPage;
878
+ this.calculateNumberOfPage(this.totalRecords, itemsPerPage);
870
879
  this.updateButtonConfigs();
871
880
  this.emitPaging();
872
881
  }
@@ -901,11 +910,11 @@ class PaginatorComponent {
901
910
  };
902
911
  }
903
912
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: PaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
904
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", 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;padding:10px 0}.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", "isInvalid"] }] }); }
913
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", 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 [(ngModel)]=\"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;padding:10px 0}.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", "isMultiSelect"], outputs: ["selectedChange"] }, { kind: "component", type: InputComponent, selector: "app-input", inputs: ["config", "isInvalid"] }, { kind: "ngmodule", type: FormsModule }, { 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"] }] }); }
905
914
  }
906
915
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: PaginatorComponent, decorators: [{
907
916
  type: Component,
908
- 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;padding:10px 0}.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"] }]
917
+ args: [{ selector: 'app-paginator', standalone: true, imports: [CommonModule, ButtonComponent, SelectionComponent, InputComponent, FormsModule], template: "<div class=\"table-footer\">\n <div class=\"number-of-page\">\n <app-selection [options] = \"itemsPerPageList\"\n [(ngModel)]=\"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;padding:10px 0}.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"] }]
909
918
  }], ctorParameters: () => [], propDecorators: { totalRecords: [{
910
919
  type: Input
911
920
  }], paginator: [{
@@ -1217,5 +1226,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
1217
1226
  * Generated bundle index. Do not edit.
1218
1227
  */
1219
1228
 
1220
- export { AngularDumbLibComponent, AngularDumbLibModule, AngularDumbLibService, ButtonComponent, ButtonType, CRUDType, CardsComponent, ContentDesignComponent, ContentDirection, DatetimePickerComponent, DesignType, DetailComponent, FileSelectionComponent, FooterComponent, FormComponent, FormatedTextComponent, InputComponent, InputDirection, InputGroupType, InputType, LoadingComponent, LoadingType, LoginComponent, MenuComponent, MenuDirection, ModalComponent, PaginatorComponent, ScrollToTopComponent, SelectionComponent, SelectionType, Size, SliderComponent, TableComponent, TagsComponent, VersionComponent, WidgetPosition };
1229
+ export { AngularDumbLibComponent, AngularDumbLibModule, AngularDumbLibService, ButtonComponent, ButtonType, CRUDType, CardsComponent, ContentDesignComponent, ContentDirection, DatetimePickerComponent, DesignType, DetailComponent, FileSelectionComponent, FooterComponent, FormComponent, FormatedTextComponent, InputComponent, InputDirection, InputGroupType, InputType, LoadingComponent, LoadingType, LoginComponent, MenuComponent, MenuDirection, ModalComponent, PaginatorComponent, ScrollToTopComponent, SelectionComponent, Size, SliderComponent, TableColumnType, TableComponent, TagsComponent, VersionComponent, WidgetPosition };
1221
1230
  //# sourceMappingURL=angular-dumb-lib.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"angular-dumb-lib.mjs","sources":["../../../projects/angular-dumb-lib/src/lib/angular-dumb-lib.service.ts","../../../projects/angular-dumb-lib/src/lib/angular-dumb-lib.component.ts","../../../projects/angular-dumb-lib/src/lib/angular-dumb-lib.module.ts","../../../projects/angular-dumb-lib/src/lib/shared/enums/enum.ts","../../../projects/angular-dumb-lib/src/lib/components/atoms/button/button.component.ts","../../../projects/angular-dumb-lib/src/lib/components/atoms/button/button.component.html","../../../projects/angular-dumb-lib/src/lib/components/atoms/scroll-to-top/scroll-to-top.component.ts","../../../projects/angular-dumb-lib/src/lib/components/atoms/scroll-to-top/scroll-to-top.component.html","../../../projects/angular-dumb-lib/src/lib/components/atoms/datetime-picker/datetime-picker.component.ts","../../../projects/angular-dumb-lib/src/lib/components/atoms/datetime-picker/datetime-picker.component.html","../../../projects/angular-dumb-lib/src/lib/components/atoms/file-selection/file-selection.component.ts","../../../projects/angular-dumb-lib/src/lib/components/atoms/file-selection/file-selection.component.html","../../../projects/angular-dumb-lib/src/lib/components/atoms/input/input.component.ts","../../../projects/angular-dumb-lib/src/lib/components/atoms/input/input.component.html","../../../projects/angular-dumb-lib/src/lib/components/atoms/loading/loading.component.ts","../../../projects/angular-dumb-lib/src/lib/components/atoms/loading/loading.component.html","../../../projects/angular-dumb-lib/src/lib/components/atoms/selection/selection.component.ts","../../../projects/angular-dumb-lib/src/lib/components/atoms/selection/selection.component.html","../../../projects/angular-dumb-lib/src/lib/components/atoms/slider/slider.component.ts","../../../projects/angular-dumb-lib/src/lib/components/atoms/slider/slider.component.html","../../../projects/angular-dumb-lib/src/lib/components/atoms/tags/tags.component.ts","../../../projects/angular-dumb-lib/src/lib/components/atoms/tags/tags.component.html","../../../projects/angular-dumb-lib/src/lib/shared/utils/common.utils.ts","../../../projects/angular-dumb-lib/src/lib/components/molecules/content-design/content-design.component.ts","../../../projects/angular-dumb-lib/src/lib/components/molecules/content-design/content-design.component.html","../../../projects/angular-dumb-lib/src/lib/components/molecules/cards/cards.component.ts","../../../projects/angular-dumb-lib/src/lib/components/molecules/cards/cards.component.html","../../../projects/angular-dumb-lib/src/lib/shared/constants/constant.ts","../../../projects/angular-dumb-lib/src/lib/components/molecules/form/form.component.ts","../../../projects/angular-dumb-lib/src/lib/components/molecules/form/form.component.html","../../../projects/angular-dumb-lib/src/lib/components/molecules/modal/modal.component.ts","../../../projects/angular-dumb-lib/src/lib/components/molecules/modal/modal.component.html","../../../projects/angular-dumb-lib/src/lib/components/molecules/paginator/paginator.component.ts","../../../projects/angular-dumb-lib/src/lib/components/molecules/paginator/paginator.component.html","../../../projects/angular-dumb-lib/src/lib/components/molecules/table/table.component.ts","../../../projects/angular-dumb-lib/src/lib/components/molecules/table/table.component.html","../../../projects/angular-dumb-lib/src/lib/components/molecules/formated-text/formated-text.component.ts","../../../projects/angular-dumb-lib/src/lib/components/molecules/formated-text/formated-text.component.html","../../../projects/angular-dumb-lib/src/lib/components/pages/footer/footer.component.ts","../../../projects/angular-dumb-lib/src/lib/components/pages/footer/footer.component.html","../../../projects/angular-dumb-lib/src/lib/components/pages/login/login.component.ts","../../../projects/angular-dumb-lib/src/lib/components/pages/login/login.component.html","../../../projects/angular-dumb-lib/src/lib/components/atoms/menu-widget/menu-widget.component.ts","../../../projects/angular-dumb-lib/src/lib/components/atoms/menu-widget/menu-widget.component.html","../../../projects/angular-dumb-lib/src/lib/components/pages/menu/menu.component.ts","../../../projects/angular-dumb-lib/src/lib/components/pages/menu/menu.component.html","../../../projects/angular-dumb-lib/src/lib/components/pages/version/version.component.ts","../../../projects/angular-dumb-lib/src/lib/components/pages/version/version.component.html","../../../projects/angular-dumb-lib/src/lib/components/pages/detail/detail.component.ts","../../../projects/angular-dumb-lib/src/lib/components/pages/detail/detail.component.html","../../../projects/angular-dumb-lib/src/public-api.ts","../../../projects/angular-dumb-lib/src/angular-dumb-lib.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AngularDumbLibService {\n\n constructor() { }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-angular-dumb-lib',\n template: `\n <p>\n angular-dumb-lib works!\n </p>\n `,\n styles: [\n ]\n})\nexport class AngularDumbLibComponent {\n\n}\n","import { NgModule } from '@angular/core';\nimport { AngularDumbLibComponent } from './angular-dumb-lib.component';\n\n@NgModule({\n declarations: [\n ],\n imports: [\n AngularDumbLibComponent\n ],\n exports: [\n AngularDumbLibComponent,\n ]\n})\nexport class AngularDumbLibModule { }\n","\nexport enum DesignType {\n normal = 'normal',\n contrast = 'contrast'\n}\n\nexport enum ButtonType {\n submit = 'submit',\n button = 'button'\n}\n\nexport enum InputGroupType {\n textual = 'textual',\n datetime = 'datetime',\n selection = 'selection',\n file = 'file'\n}\n\nexport enum InputDirection {\n horizontal = 'horizontal',\n vertical = 'vertical'\n}\n\nexport enum InputType {\n image = 'image',\n text = 'text',\n richText = 'richText',\n password = 'password',\n email = 'email',\n url = 'url',\n tel = 'tel',\n search = 'search',\n number = 'number',\n range = 'range',\n hidden = 'hidden',\n textarea = 'textarea',\n datetime = 'datetime',\n checkbox = 'checkbox',\n radio = 'radio',\n select = 'select',\n file = 'file'\n}\n\nexport enum ContentDirection {\n left = 'left',\n right = 'right',\n up = 'up',\n down = 'down'\n}\n\nexport enum SelectionType {\n dropdown = 'dropdown',\n radio = 'radio',\n checkbox = 'checkbox'\n}\n\nexport enum Size {\n\tXbig = 'xbig',\n\tBig = 'big',\n\tMedium = 'medium',\n\tSmall = 'small',\n\tXsmall = 'xsmall'\n}\n\nexport enum MenuDirection {\n vertical = 'vertical',\n horizontal = 'horizontal'\n}\n\nexport enum WidgetPosition {\n top = 'top',\n bottom = 'bottom',\n auto = 'auto'\n}\n\nexport enum LoadingType {\n black = 'black',\n white = 'white'\n}\n\nexport enum CRUDType {\n create = 'create',\n update = 'update',\n delete = 'delete'\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ButtonType, DesignType } from '../../../shared/enums/enum';\nimport { IButtonConfig } from '../../../shared/interfaces/interface';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'app-button',\n standalone: true,\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n imports: [CommonModule]\n})\nexport class ButtonComponent implements OnInit {\n @Input() config!: IButtonConfig;\n\n @Output() clickEvent = new EventEmitter<void>();\n\n constructor() { }\n\n ngOnInit() {\n this.config = {\n isDisabled: false,\n isActive: false,\n designType: DesignType.normal,\n type: ButtonType.submit,\n ...this.config,\n }\n }\n\n onButtonClick() {\n this.clickEvent.emit();\n }\n}\n","<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","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-scroll-to-top',\n standalone: true,\n templateUrl: './scroll-to-top.component.html',\n styleUrls: ['./scroll-to-top.component.scss']\n})\nexport class ScrollToTopComponent implements OnInit {\n constructor() { }\n\n ngOnInit() {\n }\n\n scrollToTop(): void {\n const element = document.querySelector('.content');\n element?.scrollIntoView({\n behavior: 'smooth', // Enables smooth scrolling\n block: 'start' // Scrolls to the top of the element\n });\n }\n}\n","<button (click)=\"scrollToTop()\">\n <span class=\"material-icons\">arrow_upward</span>\n</button>\n","import { Component, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'app-datetime-picker',\n standalone: true,\n templateUrl: './datetime-picker.component.html',\n styleUrls: ['./datetime-picker.component.scss'],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatetimePickerComponent),\n multi: true\n }],\n imports: [FormsModule]\n})\nexport class DatetimePickerComponent implements ControlValueAccessor {\n selectedDate: string | null = null;\n selectedTime: string | null = null;\n\n public onChange: any = () => {};\n public onTouched: any = () => {};\n\n writeValue(value: any): void {\n if (value) {\n const date = new Date(value);\n this.selectedDate = date.toISOString().split('T')[0]; // Extract the date part (YYYY-MM-DD)\n this.selectedTime = date.toTimeString().split(' ')[0]; // Extract the time part (HH:mm:ss)\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n // Handle disabled state\n }\n\n onDateChange(event: any) {\n this.selectedDate = event.target.value;\n this.emitChange();\n }\n\n onTimeChange(event: any) {\n this.selectedTime = event.target.value;\n this.emitChange();\n }\n\n private emitChange() {\n if (this.selectedDate && this.selectedTime) {\n const dateTime = `${this.selectedDate}T${this.selectedTime}`;\n this.onChange(new Date(dateTime));\n }\n }\n}\n","<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","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ButtonType } from '../../../shared/enums/enum';\nimport { ButtonComponent } from '../button/button.component';\nimport { IButtonConfig } from '../../../shared/interfaces/interface';\n\n@Component({\n selector: 'app-file-selection',\n standalone: true,\n templateUrl: './file-selection.component.html',\n styleUrls: ['./file-selection.component.scss'],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FileSelectionComponent),\n multi: true\n }],\n imports: [CommonModule, ButtonComponent]\n})\nexport class FileSelectionComponent implements OnInit, ControlValueAccessor {\n @Input() label!: string; // Label for the file selector\n @Input() chooseFileLabel!: string;\n @Input() imageUrl: string | ArrayBuffer | null = null; // Allow imageUrl to be passed externally\n @Input() fileName: string | null = null; // Allow fileName to be passed externally\n\n config!: IButtonConfig;\n\n onChange: any = () => {};\n onTouched: any = () => {};\n private _value: any = undefined;\n\n get value() {\n return this._value;\n }\n\n set value(value: any) {\n this._value = value;\n this.onChange(this._value);\n this.onTouched();\n }\n\n ngOnInit(): void {\n this.config = {\n type: ButtonType.button,\n label: this.chooseFileLabel\n }\n }\n\n onFileSelected(event: Event) {\n const input = event.target as HTMLInputElement;\n\n if (input.files && input.files.length > 0) {\n const file = input.files[0];\n\n // Store the file name to display it in the UI\n this.fileName = file.name;\n this.value = file;\n\n // Generate image preview URL if it's an image\n const reader = new FileReader();\n reader.onload = (e: any) => {\n this.imageUrl = e.target.result; // Set image URL for preview\n };\n reader.readAsDataURL(file);\n }\n }\n\n triggerFileInput() {\n const fileInput = document.getElementById('fileInput') as HTMLInputElement;\n fileInput.click(); // Programmatically click the hidden file input\n }\n\n writeValue(value: any): void {\n this._value = value;\n }\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n // Implement if you need to handle disabled state\n }\n}\n","<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","import { Component, Input, OnInit, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { InputDirection, InputType } from '../../../shared/enums/enum';\nimport { IInputConfig } from '../../../shared/interfaces/interface';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'app-input',\n standalone: true,\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.scss'],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputComponent),\n multi: true\n }],\n imports: [CommonModule, FormsModule]\n})\nexport class InputComponent implements OnInit, ControlValueAccessor {\n @Input() config!: IInputConfig;\n @Input() isInvalid: boolean = false;\n\n private _value: any = '';\n\n get value() {\n return this._value;\n }\n\n set value(value: any) {\n this._value = value;\n this.onChange(this._value);\n this.onTouched();\n }\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor() { }\n\n writeValue(value: any): void {\n this._value = value;\n }\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn\n }\n\n ngOnInit() {\n this.config = {\n type: InputType.text,\n direction: InputDirection.vertical,\n ...this.config,\n };\n }\n}\n","<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': isInvalid}\">\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': isInvalid}\">\n </textarea>\n <i *ngIf=\"isInvalid\" 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","import { Component, Input, OnInit } from '@angular/core';\nimport { Size, LoadingType } from '../../../shared/enums/enum';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'app-loading',\n standalone: true,\n templateUrl: './loading.component.html',\n styleUrls: ['./loading.component.scss'],\n imports: [CommonModule]\n})\nexport class LoadingComponent implements OnInit {\n @Input() size: Size = Size.Medium;\n\t@Input() imageSrc: LoadingType = LoadingType.black;\n loadingImage: string = 'https://innocons.s3.ap-southeast-1.amazonaws.com/wp-content/uploads/2024/10/13083249/Loader-White.gif';\n\n constructor() { }\n\n ngOnInit() {\n switch(this.imageSrc) {\n case LoadingType.black:\n this.loadingImage = 'https://innocons.s3.ap-southeast-1.amazonaws.com/wp-content/uploads/2024/10/13083256/Loader-Black.gif';\n break;\n case LoadingType.white:\n this.loadingImage = 'https://innocons.s3.ap-southeast-1.amazonaws.com/wp-content/uploads/2024/10/13083249/Loader-White.gif';\n break;\n default:\n this.loadingImage = 'https://innocons.s3.ap-southeast-1.amazonaws.com/wp-content/uploads/2024/10/13083249/Loader-White.gif';\n break;\n }\n }\n}\n","<div [ngClass]=\"size\" class=\"loading-content\">\n <img [src]=\"loadingImage\" />\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SelectionType } from '../../../shared/enums/enum';\nimport { IDropdownOption } from '../../../shared/interfaces/interface';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'app-selection',\n templateUrl: './selection.component.html',\n styleUrls: ['./selection.component.scss'],\n standalone: true,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectionComponent),\n multi: true\n }],\n imports: [CommonModule, FormsModule]\n})\nexport class SelectionComponent implements OnInit, ControlValueAccessor {\n @Input() label: string = ''; // Label for the dropdown\n @Input() options: IDropdownOption[] | undefined = []; // Array of options\n @Input() selectedValue: any; // Pre-selected value (single selection)\n @Input() selectedValues: any[] = []; // Pre-selected values (multi-selection)\n @Input() isMultiSelect: boolean = false; // Enable multi-selection for dropdown\n @Input() displayType: SelectionType = SelectionType.dropdown; // Control the display type (dropdown, radio, or checkbox)\n\n @Output() selectedChange: EventEmitter<any> = new EventEmitter<any>(); // Event emitter for value changes\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n get value() {\n return this.selectedValue;\n }\n\n set value(value: any) {\n this.selectedValue = (this.isMultiSelect === false && Array.isArray(value))? value[0] : value;\n\n this.onChange(this.selectedValue);\n this.onTouched();\n }\n\n ngOnInit(): void {\n if (this.options && this.options.length > 0 && !this.isMultiSelect) {\n this.selectedValue = this.options[0].value;\n this.onChange(this.selectedValue);\n }\n }\n\n onSelectChange(event: Event) {\n this.selectedChange.emit(this.selectedValue);\n }\n\n onMultiSelectChange(event: Event) {\n const target = event.target as HTMLInputElement;\n const value = target.value;\n\n if (target.checked) {\n this.selectedValues.push(value);\n } else {\n this.selectedValues = this.selectedValues.filter(v => v !== value);\n }\n\n this.selectedChange.emit(this.selectedValues);\n }\n\n isSelected(value: any): boolean {\n return this.isMultiSelect ? this.selectedValues.includes(value) : value === this.selectedValue;\n }\n\n writeValue(value: any): void {\n this.selectedValue = value;\n }\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn\n }\n\n setDisabledState?(isDisabled: boolean): void {\n // Implement if you need to handle disabled state\n }\n}\n","<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","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-slider',\n standalone: true,\n templateUrl: './slider.component.html',\n styleUrls: ['./slider.component.scss'],\n imports: [CommonModule]\n})\nexport class SliderComponent implements OnInit {\n @Input() images: string[] = [];\n @Input() autoSlide: boolean = false;\n @Input() slideInterval: number = 3000; // Time interval for auto slide\n\n currentIndex: number = 0;\n\n ngOnInit(): void {\n if (this.autoSlide) {\n this.startAutoSlide();\n }\n }\n\n startAutoSlide(): void {\n setInterval(() => {\n this.nextSlide();\n }, this.slideInterval);\n }\n\n prevSlide(): void {\n this.currentIndex = this.currentIndex === 0 ? this.images.length - 1 : this.currentIndex - 1;\n }\n\n nextSlide(): void {\n this.currentIndex = this.currentIndex === this.images.length - 1 ? 0 : this.currentIndex + 1;\n }\n}\n","<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()\">&#10094;</button>\n <button class=\"next\" (click)=\"nextSlide()\">&#10095;</button>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'app-tags',\n standalone: true,\n templateUrl: './tags.component.html',\n styleUrls: ['./tags.component.scss'],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TagsComponent),\n multi: true\n }],\n imports: [CommonModule, FormsModule]\n})\nexport class TagsComponent implements ControlValueAccessor {\n @Input() availableTags: string[] = ['abc', 'dce'];\n filteredTags: string[] = [];\n selectedTags: string[] = [];\n searchText: string = '';\n\n private onChange: any = () => {};\n private onTouched: any = () => {};\n\n ngOnInit() {\n this.filteredTags = this.availableTags; // Initialize the filtered tags list\n }\n\n writeValue(value: string[]): void {\n if (value) {\n this.selectedTags = value;\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n onTagSelectionChange(tag: string) {\n if (!this.selectedTags.includes(tag)) {\n this.selectedTags = [...this.selectedTags, tag]; // Add the tag\n this.onChange(this.selectedTags);\n }\n }\n\n removeTag(tag: string) {\n this.selectedTags = this.selectedTags.filter(t => t !== tag); // Remove the tag\n this.onChange(this.selectedTags);\n }\n\n filterTags() {\n this.filteredTags = this.availableTags.filter(tag =>\n tag.toLowerCase().includes(this.searchText.toLowerCase()) &&\n !this.selectedTags.includes(tag)\n );\n }\n}\n","<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","import { MonoTypeOperatorFunction, Observable, Subject, takeUntil } from \"rxjs\";\nimport { IDropdownOption } from \"../interfaces/interface\";\n\nexport function isDefined<T>(obj: T | null | undefined): obj is T {\n return obj !== undefined && obj !== null;\n}\n\nexport function isNullOrWhilespace<T extends string>(obj: T) {\n return !isDefined(obj) || obj.trim().length === 0;\n}\n\nexport function groupBy<T, K extends keyof any>(arr: T[], key: (i: T) => K): Record<K, T[]> {\n return arr.reduce((groups, item) => {\n (groups[key(item)] ||= []).push(item);\n return groups;\n }, {} as Record<K, T[]>);\n}\n\nexport function withValuesOf<T extends object>(value: T, callback: (val: T[keyof T]) => void): void {\n Object.values(value).forEach(val => {\n callback(val as T[keyof T]);\n });\n}\n\nexport function as<T>(obj: unknown): T {\n return obj as T;\n}\n\nexport function makeDestroy<T>(): MonoTypeOperatorFunction<T> {\n const _destroy$ = new Subject();\n _destroy$.next(null);\n _destroy$.complete();\n return <T>(source: Observable<T>) => source.pipe(takeUntil(_destroy$));\n}\n\nexport function mapEnumToDropdownOptions(enumObj: any): IDropdownOption[] {\n return Object.keys(enumObj).map(key => ({\n label: enumObj[key], // The string value of the enum\n value: key // The key of the enum (e.g., 'Item1')\n }));\n}\n\nexport function truncateContent(content: string, maxLength: number): string {\n // Remove HTML tags\n const plainText = content.replace(/<[^>]+>/g, ''); // This regex removes HTML tags\n if (plainText.length <= maxLength) {\n return plainText; // Return the content if it's short enough\n }\n return plainText.substring(0, maxLength) + '...'; // Truncate and add ellipsis\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IContentDesign } from '../../../shared/interfaces/interface';\nimport { ContentDirection } from '../../../shared/enums/enum';\nimport { ButtonComponent } from '../../atoms/button/button.component';\nimport { CommonModule } from '@angular/common';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { truncateContent } from '../../../shared/utils/common.utils';\n\n@Component({\n selector: 'app-content-design',\n standalone: true,\n templateUrl: './content-design.component.html',\n styleUrls: ['./content-design.component.scss'],\n imports: [CommonModule, ButtonComponent]\n})\nexport class ContentDesignComponent implements OnInit {\n @Input() content!: IContentDesign;\n @Input() contentLength: number = 100;\n @Output() clickEvent = new EventEmitter<IContentDesign>();\n sanitizedMapAddress!: SafeResourceUrl;\n\n constructor(private sanitizer: DomSanitizer) { }\n\n ngOnInit() {\n this.content = {\n contentDirection: ContentDirection.left,\n ...this.content,\n }\n\n // Sanitize the map address if it exists\n if (this.content.mapAddress) {\n this.sanitizedMapAddress = this.sanitizer.bypassSecurityTrustResourceUrl(this.content.mapAddress);\n }\n }\n\n truncateContent(content: string) {\n return truncateContent(content, this.contentLength);\n }\n\n onButtonClick(action: string | undefined) {\n if(action)\n {\n this.content.contentAction = action;\n this.clickEvent.emit(this.content);\n }\n }\n}\n","<div class=\"content-designer\" [ngClass]=\"content.contentDirection\">\n <ng-container *ngIf=\"content?.mapAddress; else imageTemplate\">\n <div class=\"map\">\n <iframe\n width=\"600\"\n height=\"450\"\n style=\"border:0;\"\n allowfullscreen=\"\"\n loading=\"lazy\"\n referrerpolicy=\"no-referrer-when-downgrade\"\n [src]=\"sanitizedMapAddress\">\n </iframe>\n </div>\n </ng-container>\n\n <ng-template #imageTemplate>\n <div *ngIf=\"content.coverImage\" class=\"image\">\n <img [src]=\"content.coverImage\" alt=\"Cover Image\">\n </div>\n </ng-template>\n\n <div class=\"content\">\n <h2 *ngIf=\"content.title\">{{ content.title }}</h2>\n <p *ngIf=\"content.content\">{{ truncateContent(content.content) }}</p>\n <ng-container [ngTemplateOutlet]=\"content.template\"></ng-container>\n <app-button *ngIf=\"content.button\" [config] = \"content.button\"\n (clickEvent)=\"onButtonClick(content.button.action)\">\n </app-button>\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IContentDesign } from '../../../shared/interfaces/interface';\nimport { CommonModule } from '@angular/common';\nimport { ContentDesignComponent } from '../content-design/content-design.component';\n\n@Component({\n selector: 'app-cards',\n standalone: true,\n templateUrl: './cards.component.html',\n styleUrls: ['./cards.component.scss'],\n imports: [CommonModule, ContentDesignComponent]\n})\nexport class CardsComponent implements OnInit {\n @Input() cardContents: IContentDesign[] = [];\n\n @Output() getCardConfig = new EventEmitter<IContentDesign>();\n\n constructor() { }\n\n ngOnInit() {\n }\n\n clickEvent(contentDesign: IContentDesign) {\n if(contentDesign.id) {\n this.getCardConfig.emit(contentDesign)\n }\n }\n}\n","<div class=\"cards-content\">\n <ng-container *ngFor=\"let content of cardContents\">\n <div class=\"card {{content.name}}\">\n <app-content-design (clickEvent)=\"clickEvent($event)\"\n [content] = \"content\">\n </app-content-design>\n </div>\n </ng-container>\n</div>\n\n\n\n","import { InputType } from \"../enums/enum\";\n\nexport const textualInputTypes: InputType[] =\n [InputType.text, InputType.password, InputType.email, InputType.url,\n InputType.tel, InputType.search, InputType.number, InputType.range,\n InputType.hidden, InputType.textarea, InputType.richText, InputType.image];\nexport const selectionInputTypes: InputType[] = [InputType.checkbox, InputType.radio, InputType.select]\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { InputGroupType, InputType } from '../../../shared/enums/enum';\nimport { selectionInputTypes, textualInputTypes } from '../../../shared/constants/constant';\nimport { CommonModule } from '@angular/common';\nimport { SelectionComponent } from '../../atoms/selection/selection.component';\nimport { FileSelectionComponent } from '../../atoms/file-selection/file-selection.component';\nimport { IButtonConfig, IInputConfig } from '../../../shared/interfaces/interface';\nimport { InputComponent } from '../../atoms/input/input.component';\nimport { ButtonComponent } from '../../atoms/button/button.component';\n\n@Component({\n selector: 'app-form',\n standalone: true,\n templateUrl: './form.component.html',\n styleUrls: ['./form.component.scss'],\n imports: [\n CommonModule, InputComponent, SelectionComponent,\n FileSelectionComponent, ButtonComponent, FormsModule, ReactiveFormsModule\n ]\n})\nexport class FormComponent {\n @Input() formGroup!: FormGroup;\n @Input() inputConfigs: Array<IInputConfig> = [];\n @Input() buttonConfig: IButtonConfig = { label: \"Submit\" };\n @Input() validationMessages: { [fieldName: string]: { [errorKey: string]: string } } = {};\n\n @Output() formSubmit = new EventEmitter<any>();\n @Output() formChange = new EventEmitter<{ controlName: string; value: any }>();\n\n // ✅ Expose InputGroupType to the template\n InputGroupType = InputGroupType;\n\n onSubmit() {\n if (this.formGroup.valid) {\n this.formSubmit.emit(this.formGroup.value);\n } else {\n // 👇 mark all as touched to trigger validation messages\n Object.values(this.formGroup.controls).forEach(control => {\n control.markAsTouched();\n });\n }\n }\n\n onValueChange(controlName: string, value: any) {\n this.formChange.emit({ controlName, value });\n }\n\n checkFormConfigType(inputType: InputType | undefined): InputGroupType {\n if (inputType) {\n if (textualInputTypes.includes(inputType)) return InputGroupType.textual;\n if (selectionInputTypes.includes(inputType)) return InputGroupType.selection;\n if (inputType === InputType.file) return InputGroupType.file;\n if (inputType === InputType.datetime) return InputGroupType.datetime;\n }\n return InputGroupType.textual;\n }\n\n trackByFn(index: number, item: IInputConfig) {\n return item.name;\n }\n\n getErrorKeys(errors: any): string[] {\n return Object.keys(errors);\n }\n\n isControlInvalid(name: string): boolean {\n const control = this.formGroup.get(name);\n return !!(control && control.invalid && (control.dirty || control.touched));\n }\n}\n","<form (ngSubmit)=\"onSubmit()\" [formGroup]=\"formGroup\">\n <ng-container *ngIf=\"inputConfigs && inputConfigs.length > 0; else noInputs\">\n <ng-container *ngFor=\"let inputConfig of inputConfigs; trackBy: trackByFn\">\n\n <!-- Input Field -->\n <app-input\n *ngIf=\"checkFormConfigType(inputConfig.type) === InputGroupType.textual\"\n [formControlName]=\"inputConfig.name\"\n [config]=\"inputConfig\"\n [required]=\"inputConfig.required!\"\n [isInvalid]=\"isControlInvalid(inputConfig.name)\"\n (valueChange)=\"onValueChange(inputConfig.name, $event)\">\n </app-input>\n\n <!-- Selection Field -->\n <app-selection\n *ngIf=\"checkFormConfigType(inputConfig.type) === InputGroupType.selection\"\n [formControlName]=\"inputConfig.name\"\n [label]=\"inputConfig.label!\"\n [options]=\"inputConfig.options\"\n (valueChange)=\"onValueChange(inputConfig.name, $event)\">\n </app-selection>\n\n <!-- File Selection -->\n <app-file-selection\n *ngIf=\"checkFormConfigType(inputConfig.type) === InputGroupType.file\"\n [formControlName]=\"inputConfig.name\"\n [label]=\"inputConfig.label!\"\n (valueChange)=\"onValueChange(inputConfig.name, $event)\">\n </app-file-selection>\n\n <!-- Validation Messages -->\n <div *ngIf=\"formGroup.controls[inputConfig.name]?.invalid && formGroup.controls[inputConfig.name]?.touched\" class=\"error-message\">\n <ng-container *ngIf=\"formGroup.controls[inputConfig.name]?.errors as errors\">\n <ng-container *ngFor=\"let errorKey of getErrorKeys(errors)\">\n <div *ngIf=\"validationMessages[inputConfig.name]?.[errorKey]\">\n {{ validationMessages[inputConfig.name][errorKey] }}\n </div>\n </ng-container>\n </ng-container>\n </div>\n\n </ng-container>\n </ng-container>\n\n <!-- Submit Button -->\n <app-button [config]=\"buttonConfig\"></app-button>\n</form>\n\n<!-- No Inputs Placeholder -->\n<ng-template #noInputs>\n <p>No inputs configured.</p>\n</ng-template>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { IButtonConfig, IModalEvent } from '../../../shared/interfaces/interface';\nimport { CommonModule } from '@angular/common';\nimport { ButtonComponent } from '../../atoms/button/button.component';\nimport { Size } from '../../../shared/enums/enum';\n\n@Component({\n selector: 'app-modal',\n standalone: true,\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss'],\n imports: [CommonModule, ButtonComponent]\n})\nexport class ModalComponent implements OnInit {\n @Input() modalEvent!: IModalEvent;\n @Input() size: Size = Size.Medium;\n\n okConfig: IButtonConfig = {\n label: \"Ok\"\n }\n cancelConfig: IButtonConfig = {\n label: \"Cancel\"\n }\n constructor() { }\n\n ngOnInit() {\n }\n\n closeModal() {\n this.modalEvent.isModalVisible = false;\n }\n\n handleOverlayClick(event: MouseEvent) {\n this.closeModal();\n }\n\n handleContentClick(event: MouseEvent) {\n event.stopPropagation();\n }\n\n ok() {\n if (this.modalEvent && this.modalEvent.onOk) {\n this.modalEvent.onOk();\n this.closeModal();\n }\n }\n\n cancel() {\n this.closeModal();\n }\n}\n","<div class=\"modal-overlay\" (click)=\"handleOverlayClick($event)\" *ngIf=\"modalEvent?.isModalVisible\">\n <div class=\"modal-content\" [ngClass]=\"size\" (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 class=\"modal-body\">\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</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IButtonConfig, IDropdownOption, IInputConfig, IPaginator } from '../../../shared/interfaces/interface';\nimport { ButtonType, InputDirection } from '../../../shared/enums/enum';\nimport { SelectionComponent } from '../../atoms/selection/selection.component';\nimport { ButtonComponent } from '../../atoms/button/button.component';\nimport { InputComponent } from '../../atoms/input/input.component';\n\n@Component({\n selector: 'app-paginator',\n standalone: true,\n templateUrl: './paginator.component.html',\n styleUrls: ['./paginator.component.scss'],\n imports: [CommonModule, ButtonComponent, SelectionComponent, InputComponent]\n})\nexport class PaginatorComponent implements OnInit {\n itemsPerPageList: IDropdownOption[] = [];\n inputConfig: IInputConfig = {\n label: 'Go to page',\n direction: InputDirection.horizontal,\n name: 'inputConfig',\n required: false,\n validator: []\n }\n previousButtonConfig: IButtonConfig = {\n iconValue: 'chevron_left',\n type: ButtonType.button,\n isDisabled: true\n }\n nextButtonConfig: IButtonConfig = {\n iconValue: 'chevron_right',\n type: ButtonType.button,\n isDisabled: false\n }\n numberOfPage: number = 0;\n itemsPerPage: number = 0;\n selectedPage: number = 0;\n buttonType!: ButtonType;\n inputDirection!: InputDirection;\n\n @Input() totalRecords: number = 0;\n\n @Output() paginator = new EventEmitter<IPaginator>();\n\n constructor() {}\n\n get pageNumbers(): number[] {\n return Array.from({ length: this.numberOfPage }, (_, i) => i + 1);\n }\n\n ngOnInit() {\n this.itemsPerPageList = [\n {\n label: \"3\",\n value: 1\n },\n {\n label: \"5\",\n value: 2\n },\n {\n label: \"20\",\n value: 3\n }\n ];\n this.selectedPage = 1;\n this.buttonType = ButtonType.button;\n this.inputDirection = InputDirection.horizontal;\n this.itemsPerPage = parseInt(this.itemsPerPageList[0].label);\n this.calculateNumberOfPage(this.totalRecords, this.itemsPerPage);\n this.updateButtonConfigs();\n this.emitPaging();\n }\n\n ngOnChanges(): void {\n this.calculateNumberOfPage(this.totalRecords, this.itemsPerPage);\n this.updateButtonConfigs();\n }\n\n selectPage(i: number) {\n this.selectedPage = i;\n this.updateButtonConfigs();\n this.emitPaging();\n }\n\n onChangeNumberOfPage(itemsPerPageId: string) {\n this.selectedPage = 1;\n this.itemsPerPage = parseInt(this.itemsPerPageList.find(i=> i.value === parseInt(itemsPerPageId))?.label??\n this.itemsPerPage.toString());\n\n this.calculateNumberOfPage(this.totalRecords, this.itemsPerPage);\n this.updateButtonConfigs();\n this.emitPaging();\n }\n\n private emitPaging() {\n let paging: IPaginator = {\n itemsPerPage: this.itemsPerPage,\n selectedPage: this.selectedPage\n }\n this.paginator.emit(paging);\n }\n\n private calculateNumberOfPage (totalRecords: number, itemsPerPage: number): number {\n return this.numberOfPage = Math.ceil(totalRecords/itemsPerPage);\n }\n\n private updateButtonConfigs() {\n // Re-assign the button configuration to trigger change detection\n this.previousButtonConfig = {\n ...this.previousButtonConfig,\n isDisabled: this.selectedPage <= 1\n };\n this.nextButtonConfig = {\n ...this.nextButtonConfig,\n isDisabled: this.selectedPage >= this.numberOfPage\n };\n }\n\n // Method to return config for page number buttons\n getPageButtonConfig(page: number): IButtonConfig {\n return {\n label: page.toString(),\n type: ButtonType.button,\n isActive: page === this.selectedPage, // Set active state based on selectedPage\n isDisabled: false // Page buttons are never disabled\n };\n }\n}\n","<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","import { ChangeDetectorRef, Component, ContentChild, EventEmitter, Input, OnInit, Output, SimpleChanges, TemplateRef } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { IDataColumnConfig, IPaginator } from '../../../shared/interfaces/interface';\nimport { CommonModule } from '@angular/common';\nimport { TableModule} from 'primeng/table';\nimport { LoadingComponent } from '../../atoms/loading/loading.component';\nimport { PaginatorComponent } from '../paginator/paginator.component';\n\n@Component({\n selector: 'app-table',\n standalone: true,\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n imports: [CommonModule, TableModule, LoadingComponent, PaginatorComponent]\n})\nexport class TableComponent<T> implements OnInit {\n @Input() items: T[] = [];\n @Input() columns: IDataColumnConfig[] = [];\n @Input() totalRecords: number = 0;\n @Input() tableName: string = '';\n @Input() loadingState!: Observable<boolean>;\n\n @Output() paginator = new EventEmitter<IPaginator>();\n\n @ContentChild('bodyTemplate') bodyTemplate!: TemplateRef<any>;\n\n allSelected = false;\n\n constructor(private cdRef: ChangeDetectorRef) { }\n\n ngOnInit() {\n this.loadingState.subscribe(() => {\n this.cdRef.detectChanges(); // Explicitly mark for change detection\n });\n }\n\n changePaginator(paging: IPaginator) {\n this.paginator.emit(paging);\n }\n}\n","<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.label }}</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","import { Component, Input, OnInit } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { IContentDesign } from '../../../shared/interfaces/interface';\nimport { ContentDesignComponent } from '../content-design/content-design.component';\n\n@Component({\n selector: 'app-formated-text',\n standalone: true,\n templateUrl: './formated-text.component.html',\n styleUrls: ['./formated-text.component.scss'],\n imports: [ContentDesignComponent]\n})\nexport class FormatedTextComponent implements OnInit {\n private _content!: IContentDesign; // Private variable to hold content\n safeContent!: SafeHtml; // Safe HTML variable\n\n constructor(private sanitizer: DomSanitizer) {}\n\n // Getter for content\n get content(): IContentDesign {\n // Create a new variable based on _content\n const updatedContent = {\n ...this._content,\n content: undefined\n };\n\n return updatedContent;\n }\n\n // Setter for content\n @Input()\n set content(content: IContentDesign) {\n this._content = content;\n\n // Sanitize the content only if it's defined and has non-empty content\n if (content?.content) {\n this.safeContent = this.sanitizer.bypassSecurityTrustHtml(content.content);\n } else {\n this.safeContent = ''; // Reset safeContent if there's no valid content\n }\n }\n\n ngOnInit(): void {}\n}\n","<app-content-design [content] = \"content\"></app-content-design>\n<br/>\n<div [innerHTML]=\"safeContent\"></div>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-footer',\n standalone: true,\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss']\n})\nexport class FooterComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","<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>&copy; 2024 Your Company. All Rights Reserved.</p>\n </div>\n</footer>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\n\n@Component({\n selector: 'app-login',\n standalone: true,\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.scss'],\n imports: [CommonModule]\n})\nexport class LoginComponent implements OnInit {\n // Input property to accept a TemplateRef from the parent component\n @Input() buttonTemplate!: TemplateRef<any>;\n @ViewChild('buttonContainer') buttonContainer!: ViewContainerRef;\n\n constructor() {\n }\n\n ngOnInit(): void {\n }\n\n // After the view initializes, we render the button\n ngAfterViewInit(): void {\n // Render the provided button template inside the container\n if (this.buttonTemplate) {\n this.buttonContainer.createEmbeddedView(this.buttonTemplate);\n }\n }\n}\n","<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","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { IWidgetMenuItem } from '../../../shared/interfaces/interface';\n\n@Component({\n selector: 'app-menu-widget',\n standalone: true,\n templateUrl: './menu-widget.component.html',\n styleUrls: ['./menu-widget.component.scss'],\n imports: [CommonModule]\n})\nexport class MenuWidgetComponent {\n // Input for menu items\n @Input() items: IWidgetMenuItem[] = [];\n @Input() position : { top?: string, left: string, bottom?: string } = { left: '0px'};\n\n // Output for item selection event\n @Output() itemSelected = new EventEmitter<IWidgetMenuItem>();\n\n // Function to handle item click\n onItemClick(item: IWidgetMenuItem): void {\n if (!item.isToggled) {\n this.itemSelected.emit(item);\n if (item.callback) {\n item.callback();\n }\n }\n }\n}\n","<div class=\"menu-widget\" [ngStyle]=\"{ top: position.top ?? 'auto', left: position.left, bottom: position.bottom ?? 'auto' }\">\n <ul>\n <li *ngFor=\"let item of items\"\n [class.disabled]=\"item.isToggled\"\n (click)=\"onItemClick(item)\">\n {{ item.label }}\n </li>\n </ul>\n</div>\n","import { Component, EventEmitter, HostListener, Input, OnInit, Output } from '@angular/core';\nimport { ILoginUser, IMenuItem, IWidgetMenuItem } from '../../../shared/interfaces/interface';\nimport { MenuDirection } from '../../../shared/enums/enum';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { MenuWidgetComponent } from '../../atoms/menu-widget/menu-widget.component';\n\n@Component({\n selector: 'app-menu',\n standalone: true,\n templateUrl: './menu.component.html',\n styleUrls: ['./menu.component.scss'],\n imports: [CommonModule, RouterModule, MenuWidgetComponent]\n})\nexport class MenuComponent implements OnInit {\n @Input() menuItems: IMenuItem[] = [];\n @Input() logoUrl: string = '';\n @Input() logoRouter: string = '/';\n @Input() direction: MenuDirection = MenuDirection.horizontal;\n @Input() languageMenuItems: IWidgetMenuItem[] = [];\n // Login user\n @Input() loginUser?: ILoginUser;\n\n @Output() languageSelected = new EventEmitter<IWidgetMenuItem>();\n @Output() loginSelected = new EventEmitter<void>();\n @Output() logoutSelected = new EventEmitter<void>();\n\n languageMenuPosition = { left: '0px'};\n loginMenuPosition = { left: '0px' };\n\n isLanguageMenuVisible = false;\n isLoginMenuVisible = false;\n\n loginItems: IWidgetMenuItem[] = [\n { label: 'login', value: 'login', callback: () => this.login(), },\n ];\n logoutItems: IWidgetMenuItem[] = [\n { label: 'logout', value: 'logout', callback: () => this.logout(), },\n ];\n\n constructor() {}\n\n ngOnInit() {}\n\n // Getters for menu direction\n get isVertical(): boolean {\n return this.direction === MenuDirection.vertical;\n }\n\n // Toggle language menu and set position\n toggleLanguageMenu(event: MouseEvent) {\n this.isLanguageMenuVisible = !this.isLanguageMenuVisible;\n if (this.isLanguageMenuVisible) {\n this.languageMenuPosition = this.calculatePosition(event.currentTarget as HTMLElement);\n }\n }\n\n // Toggle login menu and set position\n toggleLoginMenu(event: MouseEvent) {\n this.isLoginMenuVisible = !this.isLoginMenuVisible;\n if (this.isLoginMenuVisible) {\n this.loginMenuPosition = this.calculatePosition(event.currentTarget as HTMLElement);\n }\n }\n\n // Emit language selection and close the language menu\n onLanguageSelected(item: IWidgetMenuItem) {\n this.languageSelected.emit(item);\n this.isLanguageMenuVisible = false;\n }\n\n onLoginMenuItemSelected(item: IWidgetMenuItem) {\n item.callback;\n }\n\n onLogoutMenuItemSelected(item: IWidgetMenuItem) {\n item.callback;\n }\n\n // Hide menu if clicked outside of the relevant areas\n @HostListener('document:click', ['$event'])\n handleClickOutside(event: Event) {\n const target = event.target as HTMLElement;\n\n // Helper method to check if clicked outside an element\n const clickedOutside = (menuClass: string): boolean => {\n return !target.closest(`.${menuClass}`) && !target.closest('app-menu-widget');\n };\n\n if (clickedOutside('language')) {\n this.isLanguageMenuVisible = false;\n }\n\n if (clickedOutside('login')) {\n this.isLoginMenuVisible = false;\n }\n }\n\n // Calculate the position for the widget\n calculatePosition(triggerElement: HTMLElement, offset = 50) {\n const rect = triggerElement.getBoundingClientRect();\n const scrollTop = window.scrollY || document.documentElement.scrollTop;\n const scrollLeft = window.scrollX || document.documentElement.scrollLeft;\n\n if (this.direction === MenuDirection.horizontal) {\n return {\n top: `${rect.bottom + scrollTop}px`,\n left: `${rect.left + scrollLeft - offset}px`\n };\n }\n\n return {\n left: `${rect.left + scrollLeft + 210}px`,\n bottom: `${window.innerHeight - rect.bottom}px`\n };\n }\n\n login() {\n this.loginSelected.emit();\n }\n\n logout() {\n this.logoutSelected.emit();\n }\n}\n","<nav class=\"menu\" [ngClass]=\"{ 'vertical': isVertical, 'horizontal': !isVertical }\">\n <div class=\"logo\">\n <a [routerLink]=\"logoRouter\">\n <img [src]=\"logoUrl\" alt=\"Logo\" />\n </a>\n </div>\n <ul>\n <li *ngFor=\"let item of menuItems\">\n <a [routerLink]=\"item.route\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\">{{ item.label }}</a>\n </li>\n </ul>\n <div class=\"actions\">\n <!-- Language selector -->\n <div class=\"language\" (click)=\"toggleLanguageMenu($event)\">\n <span class=\"material-icons\" aria-hidden=\"true\">language</span>\n </div>\n <app-menu-widget *ngIf=\"isLanguageMenuVisible\"\n [items]=\"languageMenuItems\"\n (itemSelected)=\"onLanguageSelected($event)\"\n [position]=\"languageMenuPosition\">\n </app-menu-widget>\n\n <!-- Login menu -->\n <div class=\"login\" (click)=\"toggleLoginMenu($event)\">\n <ng-container *ngIf=\"loginUser?.picture; else defaultIcon\">\n <img [src]=\"loginUser?.picture\" alt=\"User Avatar\" class=\"user-avatar\" />\n </ng-container>\n <ng-template #defaultIcon>\n <span class=\"material-icons\" aria-hidden=\"true\">person</span>\n </ng-template>\n </div>\n <app-menu-widget *ngIf=\"isLoginMenuVisible && !loginUser\"\n [items]=\"loginItems\"\n (itemSelected)=\"onLoginMenuItemSelected($event)\"\n [position]=\"loginMenuPosition\">\n </app-menu-widget>\n <app-menu-widget *ngIf=\"isLoginMenuVisible && loginUser\"\n [items]=\"logoutItems\"\n (itemSelected)=\"onLogoutMenuItemSelected($event)\"\n [position]=\"loginMenuPosition\">\n </app-menu-widget>\n </div>\n</nav>\n","import { CommonModule } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\nimport { IContentDesign } from '../../../shared/interfaces/interface';\nimport { ContentDirection } from '../../../shared/enums/enum';\nimport { ContentDesignComponent } from '../../molecules/content-design/content-design.component';\n\n@Component({\n selector: 'app-version',\n standalone: true,\n templateUrl: './version.component.html',\n styleUrls: ['./version.component.scss'],\n imports: [CommonModule, ContentDesignComponent]\n})\nexport class VersionComponent implements OnInit {\n content: IContentDesign;\n constructor() {\n this.content = {\n title: 'Card 2 Title',\n content: 'This is an example of left-aligned content.',\n coverImage: 'https://via.placeholder.com/150',\n contentDirection: ContentDirection.right,\n template: null\n }\n }\n\n ngOnInit() {\n }\n}\n","<app-content-design\n[content] = \"content\">\n</app-content-design>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { IContentEvent } from '../../../shared/interfaces/interface';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'app-detail',\n standalone: true,\n templateUrl: './detail.component.html',\n styleUrls: ['./detail.component.scss'],\n imports: [CommonModule]\n})\nexport class DetailComponent implements OnInit {\n @Input() content!: IContentEvent;\n constructor() { }\n\n ngOnInit() {\n }\n\n get hasTemplate(): boolean {\n return this.content && !!this.content.template;\n }\n}\n","<div class=\"modal-body\">\n <ng-container *ngIf=\"hasTemplate\">\n <ng-container *ngTemplateOutlet=\"content.template; context: content.params\"></ng-container>\n <br/>\n <div>Comment here</div>\n </ng-container>\n</div>\n","/*\n * Public API Surface of angular-dumb-lib\n */\n\nexport * from './lib/angular-dumb-lib.service';\nexport * from './lib/angular-dumb-lib.component';\nexport * from './lib/angular-dumb-lib.module';\n\nexport * from './lib/components/atoms/button/button.component';\nexport * from './lib/components/atoms/scroll-to-top/scroll-to-top.component';\nexport * from './lib/components/atoms/datetime-picker/datetime-picker.component';\nexport * from './lib/components/atoms/file-selection/file-selection.component';\nexport * from './lib/components/atoms/input/input.component';\nexport * from './lib/components/atoms/loading/loading.component';\nexport * from './lib/components/atoms/selection/selection.component';\nexport * from './lib/components/atoms/slider/slider.component';\nexport * from './lib/components/atoms/tags/tags.component';\n\nexport * from './lib/components/molecules/cards/cards.component';\nexport * from './lib/components/molecules/content-design/content-design.component';\nexport * from './lib/components/molecules/form/form.component';\nexport * from './lib/components/molecules/modal/modal.component';\nexport * from './lib/components/molecules/paginator/paginator.component';\nexport * from './lib/components/molecules/table/table.component';\nexport * from './lib/components/molecules/formated-text/formated-text.component';\n\nexport * from './lib/components/pages/footer/footer.component';\nexport * from './lib/components/pages/login/login.component';\nexport * from './lib/components/pages/menu/menu.component';\nexport * from './lib/components/pages/version/version.component';\nexport * from './lib/components/pages/detail/detail.component';\n\n//Export enums and interfaces\nexport * from './lib/shared/interfaces/interface';\nexport * from './lib/shared/enums/enum'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"angular-dumb-lib.mjs","sources":["../../../projects/angular-dumb-lib/src/lib/angular-dumb-lib.service.ts","../../../projects/angular-dumb-lib/src/lib/angular-dumb-lib.component.ts","../../../projects/angular-dumb-lib/src/lib/angular-dumb-lib.module.ts","../../../projects/angular-dumb-lib/src/lib/shared/enums/enum.ts","../../../projects/angular-dumb-lib/src/lib/components/atoms/button/button.component.ts","../../../projects/angular-dumb-lib/src/lib/components/atoms/button/button.component.html","../../../projects/angular-dumb-lib/src/lib/components/atoms/scroll-to-top/scroll-to-top.component.ts","../../../projects/angular-dumb-lib/src/lib/components/atoms/scroll-to-top/scroll-to-top.component.html","../../../projects/angular-dumb-lib/src/lib/components/atoms/datetime-picker/datetime-picker.component.ts","../../../projects/angular-dumb-lib/src/lib/components/atoms/datetime-picker/datetime-picker.component.html","../../../projects/angular-dumb-lib/src/lib/components/atoms/file-selection/file-selection.component.ts","../../../projects/angular-dumb-lib/src/lib/components/atoms/file-selection/file-selection.component.html","../../../projects/angular-dumb-lib/src/lib/components/atoms/input/input.component.ts","../../../projects/angular-dumb-lib/src/lib/components/atoms/input/input.component.html","../../../projects/angular-dumb-lib/src/lib/components/atoms/loading/loading.component.ts","../../../projects/angular-dumb-lib/src/lib/components/atoms/loading/loading.component.html","../../../projects/angular-dumb-lib/src/lib/components/atoms/selection/selection.component.ts","../../../projects/angular-dumb-lib/src/lib/components/atoms/selection/selection.component.html","../../../projects/angular-dumb-lib/src/lib/components/atoms/slider/slider.component.ts","../../../projects/angular-dumb-lib/src/lib/components/atoms/slider/slider.component.html","../../../projects/angular-dumb-lib/src/lib/components/atoms/tags/tags.component.ts","../../../projects/angular-dumb-lib/src/lib/components/atoms/tags/tags.component.html","../../../projects/angular-dumb-lib/src/lib/shared/utils/common.utils.ts","../../../projects/angular-dumb-lib/src/lib/components/molecules/content-design/content-design.component.ts","../../../projects/angular-dumb-lib/src/lib/components/molecules/content-design/content-design.component.html","../../../projects/angular-dumb-lib/src/lib/components/molecules/cards/cards.component.ts","../../../projects/angular-dumb-lib/src/lib/components/molecules/cards/cards.component.html","../../../projects/angular-dumb-lib/src/lib/shared/constants/constant.ts","../../../projects/angular-dumb-lib/src/lib/components/molecules/form/form.component.ts","../../../projects/angular-dumb-lib/src/lib/components/molecules/form/form.component.html","../../../projects/angular-dumb-lib/src/lib/components/molecules/modal/modal.component.ts","../../../projects/angular-dumb-lib/src/lib/components/molecules/modal/modal.component.html","../../../projects/angular-dumb-lib/src/lib/components/molecules/paginator/paginator.component.ts","../../../projects/angular-dumb-lib/src/lib/components/molecules/paginator/paginator.component.html","../../../projects/angular-dumb-lib/src/lib/components/molecules/table/table.component.ts","../../../projects/angular-dumb-lib/src/lib/components/molecules/table/table.component.html","../../../projects/angular-dumb-lib/src/lib/components/molecules/formated-text/formated-text.component.ts","../../../projects/angular-dumb-lib/src/lib/components/molecules/formated-text/formated-text.component.html","../../../projects/angular-dumb-lib/src/lib/components/pages/footer/footer.component.ts","../../../projects/angular-dumb-lib/src/lib/components/pages/footer/footer.component.html","../../../projects/angular-dumb-lib/src/lib/components/pages/login/login.component.ts","../../../projects/angular-dumb-lib/src/lib/components/pages/login/login.component.html","../../../projects/angular-dumb-lib/src/lib/components/atoms/menu-widget/menu-widget.component.ts","../../../projects/angular-dumb-lib/src/lib/components/atoms/menu-widget/menu-widget.component.html","../../../projects/angular-dumb-lib/src/lib/components/pages/menu/menu.component.ts","../../../projects/angular-dumb-lib/src/lib/components/pages/menu/menu.component.html","../../../projects/angular-dumb-lib/src/lib/components/pages/version/version.component.ts","../../../projects/angular-dumb-lib/src/lib/components/pages/version/version.component.html","../../../projects/angular-dumb-lib/src/lib/components/pages/detail/detail.component.ts","../../../projects/angular-dumb-lib/src/lib/components/pages/detail/detail.component.html","../../../projects/angular-dumb-lib/src/public-api.ts","../../../projects/angular-dumb-lib/src/angular-dumb-lib.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AngularDumbLibService {\n\n constructor() { }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-angular-dumb-lib',\n template: `\n <p>\n angular-dumb-lib works!\n </p>\n `,\n styles: [\n ]\n})\nexport class AngularDumbLibComponent {\n\n}\n","import { NgModule } from '@angular/core';\nimport { AngularDumbLibComponent } from './angular-dumb-lib.component';\n\n@NgModule({\n declarations: [\n ],\n imports: [\n AngularDumbLibComponent\n ],\n exports: [\n AngularDumbLibComponent,\n ]\n})\nexport class AngularDumbLibModule { }\n","\nexport enum DesignType {\n normal = 'normal',\n contrast = 'contrast'\n}\n\nexport enum ButtonType {\n submit = 'submit',\n button = 'button'\n}\n\nexport enum InputGroupType {\n textual = 'textual',\n datetime = 'datetime',\n selection = 'selection',\n file = 'file'\n}\n\nexport enum InputDirection {\n horizontal = 'horizontal',\n vertical = 'vertical'\n}\n\nexport enum InputType {\n image = 'image',\n text = 'text',\n richText = 'richText',\n password = 'password',\n email = 'email',\n url = 'url',\n tel = 'tel',\n search = 'search',\n number = 'number',\n range = 'range',\n hidden = 'hidden',\n textarea = 'textarea',\n datetime = 'datetime',\n checkbox = 'checkbox',\n radio = 'radio',\n select = 'select',\n file = 'file'\n}\n\nexport enum TableColumnType {\n text = 'text',\n image = 'image'\n}\n\nexport enum ContentDirection {\n left = 'left',\n right = 'right',\n up = 'up',\n down = 'down'\n}\n\nexport enum Size {\n\tXbig = 'xbig',\n\tBig = 'big',\n\tMedium = 'medium',\n\tSmall = 'small',\n\tXsmall = 'xsmall'\n}\n\nexport enum MenuDirection {\n vertical = 'vertical',\n horizontal = 'horizontal'\n}\n\nexport enum WidgetPosition {\n top = 'top',\n bottom = 'bottom',\n auto = 'auto'\n}\n\nexport enum LoadingType {\n black = 'black',\n white = 'white'\n}\n\nexport enum CRUDType {\n create = 'create',\n update = 'update',\n delete = 'delete'\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ButtonType, DesignType } from '../../../shared/enums/enum';\nimport { IButtonConfig } from '../../../shared/interfaces/interface';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'app-button',\n standalone: true,\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n imports: [CommonModule]\n})\nexport class ButtonComponent implements OnInit {\n @Input() config!: IButtonConfig;\n\n @Output() clickEvent = new EventEmitter<void>();\n\n constructor() { }\n\n ngOnInit() {\n this.config = {\n isDisabled: false,\n isActive: false,\n designType: DesignType.normal,\n type: ButtonType.submit,\n ...this.config,\n }\n }\n\n onButtonClick() {\n this.clickEvent.emit();\n }\n}\n","<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","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-scroll-to-top',\n standalone: true,\n templateUrl: './scroll-to-top.component.html',\n styleUrls: ['./scroll-to-top.component.scss']\n})\nexport class ScrollToTopComponent implements OnInit {\n constructor() { }\n\n ngOnInit() {\n }\n\n scrollToTop(): void {\n const element = document.querySelector('.content');\n element?.scrollIntoView({\n behavior: 'smooth', // Enables smooth scrolling\n block: 'start' // Scrolls to the top of the element\n });\n }\n}\n","<button (click)=\"scrollToTop()\">\n <span class=\"material-icons\">arrow_upward</span>\n</button>\n","import { Component, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'app-datetime-picker',\n standalone: true,\n templateUrl: './datetime-picker.component.html',\n styleUrls: ['./datetime-picker.component.scss'],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatetimePickerComponent),\n multi: true\n }],\n imports: [FormsModule]\n})\nexport class DatetimePickerComponent implements ControlValueAccessor {\n selectedDate: string | null = null;\n selectedTime: string | null = null;\n\n public onChange: any = () => {};\n public onTouched: any = () => {};\n\n writeValue(value: any): void {\n if (value) {\n const date = new Date(value);\n this.selectedDate = date.toISOString().split('T')[0]; // Extract the date part (YYYY-MM-DD)\n this.selectedTime = date.toTimeString().split(' ')[0]; // Extract the time part (HH:mm:ss)\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n // Handle disabled state\n }\n\n onDateChange(event: any) {\n this.selectedDate = event.target.value;\n this.emitChange();\n }\n\n onTimeChange(event: any) {\n this.selectedTime = event.target.value;\n this.emitChange();\n }\n\n private emitChange() {\n if (this.selectedDate && this.selectedTime) {\n const dateTime = `${this.selectedDate}T${this.selectedTime}`;\n this.onChange(new Date(dateTime));\n }\n }\n}\n","<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","import {\n Component,\n EventEmitter,\n Input,\n Output,\n OnInit,\n forwardRef,\n ViewChild,\n ElementRef\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ButtonComponent } from '../button/button.component';\nimport { ButtonType } from '../../../shared/enums/enum';\nimport { IButtonConfig } from '../../../shared/interfaces/interface';\n\n@Component({\n selector: 'app-file-selection',\n standalone: true,\n templateUrl: './file-selection.component.html',\n styleUrls: ['./file-selection.component.scss'],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FileSelectionComponent),\n multi: true\n }],\n imports: [CommonModule, ButtonComponent]\n})\nexport class FileSelectionComponent implements OnInit, ControlValueAccessor {\n @Input() label: string = '';\n @Input() chooseFileLabel: string = 'Select Image';\n @Input() imageUrl: string | ArrayBuffer | null = null;\n @Input() fileName: string | null = null;\n\n @Output() valueChange = new EventEmitter<File | null>();\n\n @ViewChild('fileInput') fileInputRef!: ElementRef<HTMLInputElement>;\n\n config!: IButtonConfig;\n private _value: File | string | null = null;\n isDisabled = false;\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n get value(): File | string | null {\n return this._value;\n }\n\n set value(val: File | null) {\n this._value = val;\n this.onChange(val);\n this.onTouched();\n this.valueChange.emit(val);\n }\n\n ngOnInit(): void {\n this.config = {\n type: ButtonType.button,\n label: this.chooseFileLabel\n };\n }\n\n onFileSelected(event: Event): void {\n const input = event.target as HTMLInputElement;\n if (!input.files?.length) return;\n\n const file = input.files[0];\n this.fileName = file.name;\n this.value = file;\n\n if (file.type.startsWith('image/')) {\n this.previewImage(file);\n }\n }\n\n previewImage(file: File): void {\n const reader = new FileReader();\n reader.onload = () => {\n this.imageUrl = reader.result;\n };\n reader.readAsDataURL(file);\n }\n\n triggerFileInput(): void {\n if (!this.isDisabled) {\n this.fileInputRef.nativeElement.click();\n }\n }\n\n writeValue(value: string | File | null): void {\n this._value = value;\n\n if (value instanceof File) {\n this.fileName = value.name;\n\n const reader = new FileReader();\n reader.onload = (e: any) => {\n this.imageUrl = e.target.result;\n };\n reader.readAsDataURL(value);\n } else if (typeof value === 'string') {\n this.imageUrl = value;\n this.fileName = value.split('/').pop() || 'image.jpg';\n } else {\n this.imageUrl = null;\n this.fileName = null;\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled = isDisabled;\n }\n}\n","<div class=\"file-selector\">\n <label *ngIf=\"label\">{{ label }}</label>\n\n <input\n #fileInput\n type=\"file\"\n accept=\"image/*\"\n (change)=\"onFileSelected($event)\"\n class=\"hidden-file-input\"\n [disabled]=\"isDisabled\"\n />\n\n <div class=\"file-selection\">\n <app-button\n [config]=\"config\"\n class=\"custom-file-button\"\n (clickEvent)=\"triggerFileInput()\"\n >\n {{ chooseFileLabel }}\n </app-button>\n\n <div *ngIf=\"fileName\" class=\"file-name\">\n {{ fileName }}\n </div>\n </div>\n\n <div *ngIf=\"imageUrl\" class=\"preview-container\">\n <img [src]=\"imageUrl\" alt=\"Selected Image\" class=\"preview-image\" />\n </div>\n</div>\n","import { Component, Input, OnInit, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { InputDirection, InputType } from '../../../shared/enums/enum';\nimport { IInputConfig } from '../../../shared/interfaces/interface';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'app-input',\n standalone: true,\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.scss'],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputComponent),\n multi: true\n }],\n imports: [CommonModule, FormsModule]\n})\nexport class InputComponent implements OnInit, ControlValueAccessor {\n @Input() config!: IInputConfig;\n @Input() isInvalid: boolean = false;\n\n private _value: any = '';\n\n get value() {\n return this._value;\n }\n\n set value(value: any) {\n this._value = value;\n this.onChange(this._value);\n this.onTouched();\n }\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor() { }\n\n writeValue(value: any): void {\n this._value = value;\n }\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn\n }\n\n ngOnInit() {\n this.config = {\n type: InputType.text,\n direction: InputDirection.vertical,\n ...this.config,\n };\n }\n}\n","<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': isInvalid}\">\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': isInvalid}\">\n </textarea>\n <i *ngIf=\"isInvalid\" 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","import { Component, Input, OnInit } from '@angular/core';\nimport { Size, LoadingType } from '../../../shared/enums/enum';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'app-loading',\n standalone: true,\n templateUrl: './loading.component.html',\n styleUrls: ['./loading.component.scss'],\n imports: [CommonModule]\n})\nexport class LoadingComponent implements OnInit {\n @Input() size: Size = Size.Medium;\n\t@Input() imageSrc: LoadingType = LoadingType.black;\n loadingImage: string = 'https://innocons.s3.ap-southeast-1.amazonaws.com/wp-content/uploads/2024/10/13083249/Loader-White.gif';\n\n constructor() { }\n\n ngOnInit() {\n switch(this.imageSrc) {\n case LoadingType.black:\n this.loadingImage = 'https://innocons.s3.ap-southeast-1.amazonaws.com/wp-content/uploads/2024/10/13083256/Loader-Black.gif';\n break;\n case LoadingType.white:\n this.loadingImage = 'https://innocons.s3.ap-southeast-1.amazonaws.com/wp-content/uploads/2024/10/13083249/Loader-White.gif';\n break;\n default:\n this.loadingImage = 'https://innocons.s3.ap-southeast-1.amazonaws.com/wp-content/uploads/2024/10/13083249/Loader-White.gif';\n break;\n }\n }\n}\n","<div [ngClass]=\"size\" class=\"loading-content\">\n <img [src]=\"loadingImage\" />\n</div>\n","import { Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { IDropdownOption } from '../../../shared/interfaces/interface';\n\n@Component({\n selector: 'app-selection',\n templateUrl: './selection.component.html',\n styleUrls: ['./selection.component.scss'],\n standalone: true,\n imports: [CommonModule, FormsModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectionComponent),\n multi: true,\n },\n ],\n})\nexport class SelectionComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() options: IDropdownOption[] | undefined = [];\n @Input() isMultiSelect = false;\n\n @Output() selectedChange = new EventEmitter<any>();\n\n private _value: any = [];\n\n onChange: (value: any) => void = () => {};\n onTouched: () => void = () => {};\n\n get value(): any {\n return this._value;\n }\n\n set value(val: any) {\n if (JSON.stringify(this._value) !== JSON.stringify(val)) {\n this._value = val;\n this.onChange(val);\n this.onTouched();\n this.selectedChange.emit(val);\n }\n }\n\n onDropdownChange(value: any) {\n this.value = this.isMultiSelect\n ? value\n : (Array.isArray(value) ? value[0] : value);\n }\n\n writeValue(value: any): void {\n this._value = this.isMultiSelect\n ? (Array.isArray(value) ? [...value] : [])\n : value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n}\n","<div class=\"dropdown\">\n <label *ngIf=\"label\">{{ label }}</label>\n <select\n [multiple]=\"isMultiSelect\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onDropdownChange($event)\">\n <option *ngFor=\"let option of options\" [value]=\"option.value\">\n {{ option.label }}\n </option>\n </select>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-slider',\n standalone: true,\n templateUrl: './slider.component.html',\n styleUrls: ['./slider.component.scss'],\n imports: [CommonModule]\n})\nexport class SliderComponent implements OnInit {\n @Input() images: string[] = [];\n @Input() autoSlide: boolean = false;\n @Input() slideInterval: number = 3000; // Time interval for auto slide\n\n currentIndex: number = 0;\n\n ngOnInit(): void {\n if (this.autoSlide) {\n this.startAutoSlide();\n }\n }\n\n startAutoSlide(): void {\n setInterval(() => {\n this.nextSlide();\n }, this.slideInterval);\n }\n\n prevSlide(): void {\n this.currentIndex = this.currentIndex === 0 ? this.images.length - 1 : this.currentIndex - 1;\n }\n\n nextSlide(): void {\n this.currentIndex = this.currentIndex === this.images.length - 1 ? 0 : this.currentIndex + 1;\n }\n}\n","<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()\">&#10094;</button>\n <button class=\"next\" (click)=\"nextSlide()\">&#10095;</button>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'app-tags',\n standalone: true,\n templateUrl: './tags.component.html',\n styleUrls: ['./tags.component.scss'],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TagsComponent),\n multi: true\n }],\n imports: [CommonModule, FormsModule]\n})\nexport class TagsComponent implements ControlValueAccessor {\n @Input() availableTags: string[] = ['abc', 'dce'];\n filteredTags: string[] = [];\n selectedTags: string[] = [];\n searchText: string = '';\n\n private onChange: any = () => {};\n private onTouched: any = () => {};\n\n ngOnInit() {\n this.filteredTags = this.availableTags; // Initialize the filtered tags list\n }\n\n writeValue(value: string[]): void {\n if (value) {\n this.selectedTags = value;\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n onTagSelectionChange(tag: string) {\n if (!this.selectedTags.includes(tag)) {\n this.selectedTags = [...this.selectedTags, tag]; // Add the tag\n this.onChange(this.selectedTags);\n }\n }\n\n removeTag(tag: string) {\n this.selectedTags = this.selectedTags.filter(t => t !== tag); // Remove the tag\n this.onChange(this.selectedTags);\n }\n\n filterTags() {\n this.filteredTags = this.availableTags.filter(tag =>\n tag.toLowerCase().includes(this.searchText.toLowerCase()) &&\n !this.selectedTags.includes(tag)\n );\n }\n}\n","<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","import { MonoTypeOperatorFunction, Observable, Subject, takeUntil } from \"rxjs\";\nimport { IDropdownOption } from \"../interfaces/interface\";\n\nexport function isDefined<T>(obj: T | null | undefined): obj is T {\n return obj !== undefined && obj !== null;\n}\n\nexport function isNullOrWhilespace<T extends string>(obj: T) {\n return !isDefined(obj) || obj.trim().length === 0;\n}\n\nexport function groupBy<T, K extends keyof any>(arr: T[], key: (i: T) => K): Record<K, T[]> {\n return arr.reduce((groups, item) => {\n (groups[key(item)] ||= []).push(item);\n return groups;\n }, {} as Record<K, T[]>);\n}\n\nexport function withValuesOf<T extends object>(value: T, callback: (val: T[keyof T]) => void): void {\n Object.values(value).forEach(val => {\n callback(val as T[keyof T]);\n });\n}\n\nexport function as<T>(obj: unknown): T {\n return obj as T;\n}\n\nexport function makeDestroy<T>(): MonoTypeOperatorFunction<T> {\n const _destroy$ = new Subject();\n _destroy$.next(null);\n _destroy$.complete();\n return <T>(source: Observable<T>) => source.pipe(takeUntil(_destroy$));\n}\n\nexport function mapEnumToDropdownOptions(enumObj: any): IDropdownOption[] {\n return Object.keys(enumObj).map(key => ({\n label: enumObj[key], // The string value of the enum\n value: key // The key of the enum (e.g., 'Item1')\n }));\n}\n\nexport function truncateContent(content: string, maxLength: number): string {\n // Remove HTML tags\n const plainText = content.replace(/<[^>]+>/g, ''); // This regex removes HTML tags\n if (plainText.length <= maxLength) {\n return plainText; // Return the content if it's short enough\n }\n return plainText.substring(0, maxLength) + '...'; // Truncate and add ellipsis\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IContentDesign } from '../../../shared/interfaces/interface';\nimport { ContentDirection } from '../../../shared/enums/enum';\nimport { ButtonComponent } from '../../atoms/button/button.component';\nimport { CommonModule } from '@angular/common';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { truncateContent } from '../../../shared/utils/common.utils';\n\n@Component({\n selector: 'app-content-design',\n standalone: true,\n templateUrl: './content-design.component.html',\n styleUrls: ['./content-design.component.scss'],\n imports: [CommonModule, ButtonComponent]\n})\nexport class ContentDesignComponent implements OnInit {\n @Input() content!: IContentDesign;\n @Input() contentLength: number = 100;\n @Output() clickEvent = new EventEmitter<IContentDesign>();\n sanitizedMapAddress!: SafeResourceUrl;\n\n constructor(private sanitizer: DomSanitizer) { }\n\n ngOnInit() {\n this.content = {\n contentDirection: ContentDirection.left,\n ...this.content,\n }\n\n // Sanitize the map address if it exists\n if (this.content.mapAddress) {\n this.sanitizedMapAddress = this.sanitizer.bypassSecurityTrustResourceUrl(this.content.mapAddress);\n }\n }\n\n truncateContent(content: string) {\n return truncateContent(content, this.contentLength);\n }\n\n onButtonClick(action: string | undefined) {\n if(action)\n {\n this.content.contentAction = action;\n this.clickEvent.emit(this.content);\n }\n }\n}\n","<div class=\"content-designer\" [ngClass]=\"content.contentDirection\">\n <ng-container *ngIf=\"content?.mapAddress; else imageTemplate\">\n <div class=\"map\">\n <iframe\n width=\"600\"\n height=\"450\"\n style=\"border:0;\"\n allowfullscreen=\"\"\n loading=\"lazy\"\n referrerpolicy=\"no-referrer-when-downgrade\"\n [src]=\"sanitizedMapAddress\">\n </iframe>\n </div>\n </ng-container>\n\n <ng-template #imageTemplate>\n <div *ngIf=\"content.coverImage\" class=\"image\">\n <img [src]=\"content.coverImage\" alt=\"Cover Image\">\n </div>\n </ng-template>\n\n <div class=\"content\">\n <h2 *ngIf=\"content.title\">{{ content.title }}</h2>\n <p *ngIf=\"content.content\">{{ truncateContent(content.content) }}</p>\n <ng-container [ngTemplateOutlet]=\"content.template\"></ng-container>\n <app-button *ngIf=\"content.button\" [config] = \"content.button\"\n (clickEvent)=\"onButtonClick(content.button.action)\">\n </app-button>\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IContentDesign } from '../../../shared/interfaces/interface';\nimport { CommonModule } from '@angular/common';\nimport { ContentDesignComponent } from '../content-design/content-design.component';\n\n@Component({\n selector: 'app-cards',\n standalone: true,\n templateUrl: './cards.component.html',\n styleUrls: ['./cards.component.scss'],\n imports: [CommonModule, ContentDesignComponent]\n})\nexport class CardsComponent implements OnInit {\n @Input() cardContents: IContentDesign[] = [];\n\n @Output() getCardConfig = new EventEmitter<IContentDesign>();\n\n constructor() { }\n\n ngOnInit() {\n }\n\n clickEvent(contentDesign: IContentDesign) {\n if(contentDesign.id) {\n this.getCardConfig.emit(contentDesign)\n }\n }\n}\n","<div class=\"cards-content\">\n <ng-container *ngFor=\"let content of cardContents\">\n <div class=\"card {{content.name}}\">\n <app-content-design (clickEvent)=\"clickEvent($event)\"\n [content] = \"content\">\n </app-content-design>\n </div>\n </ng-container>\n</div>\n\n\n\n","import { InputType } from \"../enums/enum\";\n\nexport const textualInputTypes: InputType[] =\n [InputType.text, InputType.password, InputType.email, InputType.url,\n InputType.tel, InputType.search, InputType.number, InputType.range,\n InputType.hidden, InputType.textarea, InputType.richText, InputType.image];\nexport const selectionInputTypes: InputType[] = [InputType.checkbox, InputType.radio, InputType.select]\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { InputGroupType, InputType } from '../../../shared/enums/enum';\nimport { selectionInputTypes, textualInputTypes } from '../../../shared/constants/constant';\nimport { CommonModule } from '@angular/common';\nimport { SelectionComponent } from '../../atoms/selection/selection.component';\nimport { FileSelectionComponent } from '../../atoms/file-selection/file-selection.component';\nimport { IButtonConfig, IInputConfig } from '../../../shared/interfaces/interface';\nimport { InputComponent } from '../../atoms/input/input.component';\nimport { ButtonComponent } from '../../atoms/button/button.component';\n\n@Component({\n selector: 'app-form',\n standalone: true,\n templateUrl: './form.component.html',\n styleUrls: ['./form.component.scss'],\n imports: [\n CommonModule, InputComponent, SelectionComponent,\n FileSelectionComponent, ButtonComponent, FormsModule, ReactiveFormsModule\n ]\n})\nexport class FormComponent {\n @Input() formGroup!: FormGroup;\n @Input() inputConfigs: Array<IInputConfig> = [];\n @Input() buttonConfig: IButtonConfig = { label: \"Submit\" };\n @Input() validationMessages: { [fieldName: string]: { [errorKey: string]: string } } = {};\n\n @Output() formSubmit = new EventEmitter<any>();\n @Output() formChange = new EventEmitter<{ controlName: string; value: any }>();\n\n // ✅ Expose InputGroupType to the template\n InputGroupType = InputGroupType;\n\n onSubmit() {\n if (this.formGroup.valid) {\n this.formSubmit.emit(this.formGroup.value);\n } else {\n // 👇 mark all as touched to trigger validation messages\n Object.values(this.formGroup.controls).forEach(control => {\n control.markAsTouched();\n });\n }\n }\n\n onValueChange(controlName: string, value: any) {\n this.formChange.emit({ controlName, value });\n }\n\n checkFormConfigType(inputType: InputType | undefined): InputGroupType {\n if (inputType) {\n if (textualInputTypes.includes(inputType)) return InputGroupType.textual;\n if (selectionInputTypes.includes(inputType)) return InputGroupType.selection;\n if (inputType === InputType.file) return InputGroupType.file;\n if (inputType === InputType.datetime) return InputGroupType.datetime;\n }\n return InputGroupType.textual;\n }\n\n trackByFn(index: number, item: IInputConfig) {\n return item.name;\n }\n\n getErrorKeys(errors: any): string[] {\n return Object.keys(errors);\n }\n\n isControlInvalid(name: string): boolean {\n const control = this.formGroup.get(name);\n return !!(control && control.invalid && (control.dirty || control.touched));\n }\n}\n","<form (ngSubmit)=\"onSubmit()\" [formGroup]=\"formGroup\">\n <ng-container *ngIf=\"inputConfigs && inputConfigs.length > 0; else noInputs\">\n <ng-container *ngFor=\"let inputConfig of inputConfigs; trackBy: trackByFn\">\n\n <!-- Input Field -->\n <app-input\n *ngIf=\"checkFormConfigType(inputConfig.type) === InputGroupType.textual\"\n [formControlName]=\"inputConfig.name\"\n [config]=\"inputConfig\"\n [required]=\"inputConfig.required!\"\n [isInvalid]=\"isControlInvalid(inputConfig.name)\"\n (valueChange)=\"onValueChange(inputConfig.name, $event)\">\n </app-input>\n\n <!-- Selection Field -->\n <app-selection\n *ngIf=\"checkFormConfigType(inputConfig.type) === InputGroupType.selection\"\n [formControlName]=\"inputConfig.name\"\n [label]=\"inputConfig.label!\"\n [options]=\"inputConfig.options\"\n (valueChange)=\"onValueChange(inputConfig.name, $event)\">\n </app-selection>\n\n <!-- File Selection -->\n <app-file-selection\n *ngIf=\"checkFormConfigType(inputConfig.type) === InputGroupType.file\"\n [formControlName]=\"inputConfig.name\"\n [label]=\"inputConfig.label!\"\n [chooseFileLabel]=\"'Choose Image'\"\n (valueChange)=\"onValueChange(inputConfig.name, $event)\">\n </app-file-selection>\n\n <!-- Validation Messages -->\n <div *ngIf=\"formGroup.controls[inputConfig.name]?.invalid && formGroup.controls[inputConfig.name]?.touched\" class=\"error-message\">\n <ng-container *ngIf=\"formGroup.controls[inputConfig.name]?.errors as errors\">\n <ng-container *ngFor=\"let errorKey of getErrorKeys(errors)\">\n <div *ngIf=\"validationMessages[inputConfig.name]?.[errorKey]\">\n {{ validationMessages[inputConfig.name][errorKey] }}\n </div>\n </ng-container>\n </ng-container>\n </div>\n\n </ng-container>\n </ng-container>\n\n <!-- Submit Button -->\n <app-button [config]=\"buttonConfig\"></app-button>\n</form>\n\n<!-- No Inputs Placeholder -->\n<ng-template #noInputs>\n <p>No inputs configured.</p>\n</ng-template>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { IButtonConfig, IModalEvent } from '../../../shared/interfaces/interface';\nimport { CommonModule } from '@angular/common';\nimport { ButtonComponent } from '../../atoms/button/button.component';\nimport { Size } from '../../../shared/enums/enum';\n\n@Component({\n selector: 'app-modal',\n standalone: true,\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss'],\n imports: [CommonModule, ButtonComponent]\n})\nexport class ModalComponent implements OnInit {\n @Input() modalEvent!: IModalEvent;\n @Input() size: Size = Size.Medium;\n\n okConfig: IButtonConfig = {\n label: \"Ok\"\n }\n cancelConfig: IButtonConfig = {\n label: \"Cancel\"\n }\n constructor() { }\n\n ngOnInit() {\n }\n\n closeModal() {\n this.modalEvent.isModalVisible = false;\n }\n\n handleOverlayClick(event: MouseEvent) {\n this.closeModal();\n }\n\n handleContentClick(event: MouseEvent) {\n event.stopPropagation();\n }\n\n ok() {\n if (this.modalEvent && this.modalEvent.onOk) {\n this.modalEvent.onOk();\n this.closeModal();\n }\n }\n\n cancel() {\n this.closeModal();\n }\n}\n","<div class=\"modal-overlay\" (click)=\"handleOverlayClick($event)\" *ngIf=\"modalEvent?.isModalVisible\">\n <div class=\"modal-content\" [ngClass]=\"size\" (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 class=\"modal-body\">\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</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { IButtonConfig, IDropdownOption, IInputConfig, IPaginator } from '../../../shared/interfaces/interface';\nimport { ButtonType, InputDirection } from '../../../shared/enums/enum';\nimport { SelectionComponent } from '../../atoms/selection/selection.component';\nimport { ButtonComponent } from '../../atoms/button/button.component';\nimport { InputComponent } from '../../atoms/input/input.component';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'app-paginator',\n standalone: true,\n templateUrl: './paginator.component.html',\n styleUrls: ['./paginator.component.scss'],\n imports: [CommonModule, ButtonComponent, SelectionComponent, InputComponent, FormsModule]\n})\nexport class PaginatorComponent implements OnInit {\n itemsPerPageList: IDropdownOption[] = [];\n inputConfig: IInputConfig = {\n label: 'Go to page',\n direction: InputDirection.horizontal,\n name: 'inputConfig',\n required: false,\n validator: []\n }\n previousButtonConfig: IButtonConfig = {\n iconValue: 'chevron_left',\n type: ButtonType.button,\n isDisabled: true\n }\n nextButtonConfig: IButtonConfig = {\n iconValue: 'chevron_right',\n type: ButtonType.button,\n isDisabled: false\n }\n numberOfPage: number = 0;\n itemsPerPage: number = 0;\n selectedPage: number = 0;\n buttonType!: ButtonType;\n inputDirection!: InputDirection;\n\n @Input() totalRecords: number = 0;\n\n @Output() paginator = new EventEmitter<IPaginator>();\n\n constructor() {}\n\n get pageNumbers(): number[] {\n return Array.from({ length: this.numberOfPage }, (_, i) => i + 1);\n }\n\n ngOnInit() {\n this.itemsPerPageList = [\n {\n label: \"3\",\n value: 3\n },\n {\n label: \"5\",\n value: 5\n },\n {\n label: \"20\",\n value: 20\n }\n ];\n this.selectedPage = 1;\n this.buttonType = ButtonType.button;\n this.inputDirection = InputDirection.horizontal;\n this.itemsPerPage = parseInt(this.itemsPerPageList[0].value);\n this.calculateNumberOfPage(this.totalRecords, this.itemsPerPage);\n this.updateButtonConfigs();\n this.emitPaging();\n }\n\n ngOnChanges(): void {\n this.calculateNumberOfPage(this.totalRecords, this.itemsPerPage);\n this.updateButtonConfigs();\n }\n\n selectPage(i: number) {\n this.selectedPage = i;\n this.updateButtonConfigs();\n this.emitPaging();\n }\n\n onChangeNumberOfPage(itemsPerPage: any) {\n this.selectedPage = 1;\n this.itemsPerPage = itemsPerPage;\n this.calculateNumberOfPage(this.totalRecords, itemsPerPage);\n this.updateButtonConfigs();\n this.emitPaging();\n }\n\n private emitPaging() {\n let paging: IPaginator = {\n itemsPerPage: this.itemsPerPage,\n selectedPage: this.selectedPage\n }\n this.paginator.emit(paging);\n }\n\n private calculateNumberOfPage (totalRecords: number, itemsPerPage: number): number {\n return this.numberOfPage = Math.ceil(totalRecords/itemsPerPage);\n }\n\n private updateButtonConfigs() {\n // Re-assign the button configuration to trigger change detection\n this.previousButtonConfig = {\n ...this.previousButtonConfig,\n isDisabled: this.selectedPage <= 1\n };\n this.nextButtonConfig = {\n ...this.nextButtonConfig,\n isDisabled: this.selectedPage >= this.numberOfPage\n };\n }\n\n // Method to return config for page number buttons\n getPageButtonConfig(page: number): IButtonConfig {\n return {\n label: page.toString(),\n type: ButtonType.button,\n isActive: page === this.selectedPage, // Set active state based on selectedPage\n isDisabled: false // Page buttons are never disabled\n };\n }\n}\n","<div class=\"table-footer\">\n <div class=\"number-of-page\">\n <app-selection [options] = \"itemsPerPageList\"\n [(ngModel)]=\"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","import { ChangeDetectorRef, Component, ContentChild, EventEmitter, Input, OnInit, Output, SimpleChanges, TemplateRef } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { IDataColumnConfig, IPaginator } from '../../../shared/interfaces/interface';\nimport { CommonModule } from '@angular/common';\nimport { TableModule} from 'primeng/table';\nimport { LoadingComponent } from '../../atoms/loading/loading.component';\nimport { PaginatorComponent } from '../paginator/paginator.component';\n\n@Component({\n selector: 'app-table',\n standalone: true,\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n imports: [CommonModule, TableModule, LoadingComponent, PaginatorComponent]\n})\nexport class TableComponent<T> implements OnInit {\n @Input() items: T[] = [];\n @Input() columns: IDataColumnConfig[] = [];\n @Input() totalRecords: number = 0;\n @Input() tableName: string = '';\n @Input() loadingState!: Observable<boolean>;\n\n @Output() paginator = new EventEmitter<IPaginator>();\n\n @ContentChild('bodyTemplate') bodyTemplate!: TemplateRef<any>;\n\n allSelected = false;\n\n constructor(private cdRef: ChangeDetectorRef) { }\n\n ngOnInit() {\n this.loadingState.subscribe(() => {\n this.cdRef.detectChanges(); // Explicitly mark for change detection\n });\n }\n\n changePaginator(paging: IPaginator) {\n this.paginator.emit(paging);\n }\n}\n","<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.label }}</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","import { Component, Input, OnInit } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { IContentDesign } from '../../../shared/interfaces/interface';\nimport { ContentDesignComponent } from '../content-design/content-design.component';\n\n@Component({\n selector: 'app-formated-text',\n standalone: true,\n templateUrl: './formated-text.component.html',\n styleUrls: ['./formated-text.component.scss'],\n imports: [ContentDesignComponent]\n})\nexport class FormatedTextComponent implements OnInit {\n private _content!: IContentDesign; // Private variable to hold content\n safeContent!: SafeHtml; // Safe HTML variable\n\n constructor(private sanitizer: DomSanitizer) {}\n\n // Getter for content\n get content(): IContentDesign {\n // Create a new variable based on _content\n const updatedContent = {\n ...this._content,\n content: undefined\n };\n\n return updatedContent;\n }\n\n // Setter for content\n @Input()\n set content(content: IContentDesign) {\n this._content = content;\n\n // Sanitize the content only if it's defined and has non-empty content\n if (content?.content) {\n this.safeContent = this.sanitizer.bypassSecurityTrustHtml(content.content);\n } else {\n this.safeContent = ''; // Reset safeContent if there's no valid content\n }\n }\n\n ngOnInit(): void {}\n}\n","<app-content-design [content] = \"content\"></app-content-design>\n<br/>\n<div [innerHTML]=\"safeContent\"></div>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-footer',\n standalone: true,\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss']\n})\nexport class FooterComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","<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>&copy; 2024 Your Company. All Rights Reserved.</p>\n </div>\n</footer>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\n\n@Component({\n selector: 'app-login',\n standalone: true,\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.scss'],\n imports: [CommonModule]\n})\nexport class LoginComponent implements OnInit {\n // Input property to accept a TemplateRef from the parent component\n @Input() buttonTemplate!: TemplateRef<any>;\n @ViewChild('buttonContainer') buttonContainer!: ViewContainerRef;\n\n constructor() {\n }\n\n ngOnInit(): void {\n }\n\n // After the view initializes, we render the button\n ngAfterViewInit(): void {\n // Render the provided button template inside the container\n if (this.buttonTemplate) {\n this.buttonContainer.createEmbeddedView(this.buttonTemplate);\n }\n }\n}\n","<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","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { IWidgetMenuItem } from '../../../shared/interfaces/interface';\n\n@Component({\n selector: 'app-menu-widget',\n standalone: true,\n templateUrl: './menu-widget.component.html',\n styleUrls: ['./menu-widget.component.scss'],\n imports: [CommonModule]\n})\nexport class MenuWidgetComponent {\n // Input for menu items\n @Input() items: IWidgetMenuItem[] = [];\n @Input() position : { top?: string, left: string, bottom?: string } = { left: '0px'};\n\n // Output for item selection event\n @Output() itemSelected = new EventEmitter<IWidgetMenuItem>();\n\n // Function to handle item click\n onItemClick(item: IWidgetMenuItem): void {\n if (!item.isToggled) {\n this.itemSelected.emit(item);\n if (item.callback) {\n item.callback();\n }\n }\n }\n}\n","<div class=\"menu-widget\" [ngStyle]=\"{ top: position.top ?? 'auto', left: position.left, bottom: position.bottom ?? 'auto' }\">\n <ul>\n <li *ngFor=\"let item of items\"\n [class.disabled]=\"item.isToggled\"\n (click)=\"onItemClick(item)\">\n {{ item.label }}\n </li>\n </ul>\n</div>\n","import { Component, EventEmitter, HostListener, Input, OnInit, Output } from '@angular/core';\nimport { ILoginUser, IMenuItem, IWidgetMenuItem } from '../../../shared/interfaces/interface';\nimport { MenuDirection } from '../../../shared/enums/enum';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { MenuWidgetComponent } from '../../atoms/menu-widget/menu-widget.component';\n\n@Component({\n selector: 'app-menu',\n standalone: true,\n templateUrl: './menu.component.html',\n styleUrls: ['./menu.component.scss'],\n imports: [CommonModule, RouterModule, MenuWidgetComponent]\n})\nexport class MenuComponent implements OnInit {\n @Input() menuItems: IMenuItem[] = [];\n @Input() logoUrl: string = '';\n @Input() logoRouter: string = '/';\n @Input() direction: MenuDirection = MenuDirection.horizontal;\n @Input() languageMenuItems: IWidgetMenuItem[] = [];\n // Login user\n @Input() loginUser?: ILoginUser;\n\n @Output() languageSelected = new EventEmitter<IWidgetMenuItem>();\n @Output() loginSelected = new EventEmitter<void>();\n @Output() logoutSelected = new EventEmitter<void>();\n\n languageMenuPosition = { left: '0px'};\n loginMenuPosition = { left: '0px' };\n\n isLanguageMenuVisible = false;\n isLoginMenuVisible = false;\n\n loginItems: IWidgetMenuItem[] = [\n { label: 'login', value: 'login', callback: () => this.login(), },\n ];\n logoutItems: IWidgetMenuItem[] = [\n { label: 'logout', value: 'logout', callback: () => this.logout(), },\n ];\n\n constructor() {}\n\n ngOnInit() {}\n\n // Getters for menu direction\n get isVertical(): boolean {\n return this.direction === MenuDirection.vertical;\n }\n\n // Toggle language menu and set position\n toggleLanguageMenu(event: MouseEvent) {\n this.isLanguageMenuVisible = !this.isLanguageMenuVisible;\n if (this.isLanguageMenuVisible) {\n this.languageMenuPosition = this.calculatePosition(event.currentTarget as HTMLElement);\n }\n }\n\n // Toggle login menu and set position\n toggleLoginMenu(event: MouseEvent) {\n this.isLoginMenuVisible = !this.isLoginMenuVisible;\n if (this.isLoginMenuVisible) {\n this.loginMenuPosition = this.calculatePosition(event.currentTarget as HTMLElement);\n }\n }\n\n // Emit language selection and close the language menu\n onLanguageSelected(item: IWidgetMenuItem) {\n this.languageSelected.emit(item);\n this.isLanguageMenuVisible = false;\n }\n\n onLoginMenuItemSelected(item: IWidgetMenuItem) {\n item.callback;\n }\n\n onLogoutMenuItemSelected(item: IWidgetMenuItem) {\n item.callback;\n }\n\n // Hide menu if clicked outside of the relevant areas\n @HostListener('document:click', ['$event'])\n handleClickOutside(event: Event) {\n const target = event.target as HTMLElement;\n\n // Helper method to check if clicked outside an element\n const clickedOutside = (menuClass: string): boolean => {\n return !target.closest(`.${menuClass}`) && !target.closest('app-menu-widget');\n };\n\n if (clickedOutside('language')) {\n this.isLanguageMenuVisible = false;\n }\n\n if (clickedOutside('login')) {\n this.isLoginMenuVisible = false;\n }\n }\n\n // Calculate the position for the widget\n calculatePosition(triggerElement: HTMLElement, offset = 50) {\n const rect = triggerElement.getBoundingClientRect();\n const scrollTop = window.scrollY || document.documentElement.scrollTop;\n const scrollLeft = window.scrollX || document.documentElement.scrollLeft;\n\n if (this.direction === MenuDirection.horizontal) {\n return {\n top: `${rect.bottom + scrollTop}px`,\n left: `${rect.left + scrollLeft - offset}px`\n };\n }\n\n return {\n left: `${rect.left + scrollLeft + 210}px`,\n bottom: `${window.innerHeight - rect.bottom}px`\n };\n }\n\n login() {\n this.loginSelected.emit();\n }\n\n logout() {\n this.logoutSelected.emit();\n }\n}\n","<nav class=\"menu\" [ngClass]=\"{ 'vertical': isVertical, 'horizontal': !isVertical }\">\n <div class=\"logo\">\n <a [routerLink]=\"logoRouter\">\n <img [src]=\"logoUrl\" alt=\"Logo\" />\n </a>\n </div>\n <ul>\n <li *ngFor=\"let item of menuItems\">\n <a [routerLink]=\"item.route\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\">{{ item.label }}</a>\n </li>\n </ul>\n <div class=\"actions\">\n <!-- Language selector -->\n <div class=\"language\" (click)=\"toggleLanguageMenu($event)\">\n <span class=\"material-icons\" aria-hidden=\"true\">language</span>\n </div>\n <app-menu-widget *ngIf=\"isLanguageMenuVisible\"\n [items]=\"languageMenuItems\"\n (itemSelected)=\"onLanguageSelected($event)\"\n [position]=\"languageMenuPosition\">\n </app-menu-widget>\n\n <!-- Login menu -->\n <div class=\"login\" (click)=\"toggleLoginMenu($event)\">\n <ng-container *ngIf=\"loginUser?.picture; else defaultIcon\">\n <img [src]=\"loginUser?.picture\" alt=\"User Avatar\" class=\"user-avatar\" />\n </ng-container>\n <ng-template #defaultIcon>\n <span class=\"material-icons\" aria-hidden=\"true\">person</span>\n </ng-template>\n </div>\n <app-menu-widget *ngIf=\"isLoginMenuVisible && !loginUser\"\n [items]=\"loginItems\"\n (itemSelected)=\"onLoginMenuItemSelected($event)\"\n [position]=\"loginMenuPosition\">\n </app-menu-widget>\n <app-menu-widget *ngIf=\"isLoginMenuVisible && loginUser\"\n [items]=\"logoutItems\"\n (itemSelected)=\"onLogoutMenuItemSelected($event)\"\n [position]=\"loginMenuPosition\">\n </app-menu-widget>\n </div>\n</nav>\n","import { CommonModule } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\nimport { IContentDesign } from '../../../shared/interfaces/interface';\nimport { ContentDirection } from '../../../shared/enums/enum';\nimport { ContentDesignComponent } from '../../molecules/content-design/content-design.component';\n\n@Component({\n selector: 'app-version',\n standalone: true,\n templateUrl: './version.component.html',\n styleUrls: ['./version.component.scss'],\n imports: [CommonModule, ContentDesignComponent]\n})\nexport class VersionComponent implements OnInit {\n content: IContentDesign;\n constructor() {\n this.content = {\n title: 'Card 2 Title',\n content: 'This is an example of left-aligned content.',\n coverImage: 'https://via.placeholder.com/150',\n contentDirection: ContentDirection.right,\n template: null\n }\n }\n\n ngOnInit() {\n }\n}\n","<app-content-design\n[content] = \"content\">\n</app-content-design>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { IContentEvent } from '../../../shared/interfaces/interface';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'app-detail',\n standalone: true,\n templateUrl: './detail.component.html',\n styleUrls: ['./detail.component.scss'],\n imports: [CommonModule]\n})\nexport class DetailComponent implements OnInit {\n @Input() content!: IContentEvent;\n constructor() { }\n\n ngOnInit() {\n }\n\n get hasTemplate(): boolean {\n return this.content && !!this.content.template;\n }\n}\n","<div class=\"modal-body\">\n <ng-container *ngIf=\"hasTemplate\">\n <ng-container *ngTemplateOutlet=\"content.template; context: content.params\"></ng-container>\n <br/>\n <div>Comment here</div>\n </ng-container>\n</div>\n","/*\n * Public API Surface of angular-dumb-lib\n */\n\nexport * from './lib/angular-dumb-lib.service';\nexport * from './lib/angular-dumb-lib.component';\nexport * from './lib/angular-dumb-lib.module';\n\nexport * from './lib/components/atoms/button/button.component';\nexport * from './lib/components/atoms/scroll-to-top/scroll-to-top.component';\nexport * from './lib/components/atoms/datetime-picker/datetime-picker.component';\nexport * from './lib/components/atoms/file-selection/file-selection.component';\nexport * from './lib/components/atoms/input/input.component';\nexport * from './lib/components/atoms/loading/loading.component';\nexport * from './lib/components/atoms/selection/selection.component';\nexport * from './lib/components/atoms/slider/slider.component';\nexport * from './lib/components/atoms/tags/tags.component';\n\nexport * from './lib/components/molecules/cards/cards.component';\nexport * from './lib/components/molecules/content-design/content-design.component';\nexport * from './lib/components/molecules/form/form.component';\nexport * from './lib/components/molecules/modal/modal.component';\nexport * from './lib/components/molecules/paginator/paginator.component';\nexport * from './lib/components/molecules/table/table.component';\nexport * from './lib/components/molecules/formated-text/formated-text.component';\n\nexport * from './lib/components/pages/footer/footer.component';\nexport * from './lib/components/pages/login/login.component';\nexport * from './lib/components/pages/menu/menu.component';\nexport * from './lib/components/pages/version/version.component';\nexport * from './lib/components/pages/detail/detail.component';\n\n//Export enums and interfaces\nexport * from './lib/shared/interfaces/interface';\nexport * from './lib/shared/enums/enum'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { OnInit } from '@angular/core';
1
+ import { EventEmitter, OnInit, ElementRef } from '@angular/core';
2
2
  import { ControlValueAccessor } from '@angular/forms';
3
3
  import { IButtonConfig } from '../../../shared/interfaces/interface';
4
4
  import * as i0 from "@angular/core";
@@ -7,19 +7,23 @@ export declare class FileSelectionComponent implements OnInit, ControlValueAcces
7
7
  chooseFileLabel: string;
8
8
  imageUrl: string | ArrayBuffer | null;
9
9
  fileName: string | null;
10
+ valueChange: EventEmitter<File | null>;
11
+ fileInputRef: ElementRef<HTMLInputElement>;
10
12
  config: IButtonConfig;
13
+ private _value;
14
+ isDisabled: boolean;
11
15
  onChange: any;
12
16
  onTouched: any;
13
- private _value;
14
- get value(): any;
15
- set value(value: any);
17
+ get value(): File | string | null;
18
+ set value(val: File | null);
16
19
  ngOnInit(): void;
17
20
  onFileSelected(event: Event): void;
21
+ previewImage(file: File): void;
18
22
  triggerFileInput(): void;
19
- writeValue(value: any): void;
23
+ writeValue(value: string | File | null): void;
20
24
  registerOnChange(fn: any): void;
21
25
  registerOnTouched(fn: any): void;
22
- setDisabledState?(isDisabled: boolean): void;
26
+ setDisabledState(isDisabled: boolean): void;
23
27
  static ɵfac: i0.ɵɵFactoryDeclaration<FileSelectionComponent, never>;
24
- static ɵcmp: i0.ɵɵComponentDeclaration<FileSelectionComponent, "app-file-selection", never, { "label": { "alias": "label"; "required": false; }; "chooseFileLabel": { "alias": "chooseFileLabel"; "required": false; }; "imageUrl": { "alias": "imageUrl"; "required": false; }; "fileName": { "alias": "fileName"; "required": false; }; }, {}, never, never, true, never>;
28
+ static ɵcmp: i0.ɵɵComponentDeclaration<FileSelectionComponent, "app-file-selection", never, { "label": { "alias": "label"; "required": false; }; "chooseFileLabel": { "alias": "chooseFileLabel"; "required": false; }; "imageUrl": { "alias": "imageUrl"; "required": false; }; "fileName": { "alias": "fileName"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
25
29
  }
@@ -1,28 +1,21 @@
1
- import { EventEmitter, OnInit } from '@angular/core';
1
+ import { EventEmitter } from '@angular/core';
2
2
  import { ControlValueAccessor } from '@angular/forms';
3
- import { SelectionType } from '../../../shared/enums/enum';
4
3
  import { IDropdownOption } from '../../../shared/interfaces/interface';
5
4
  import * as i0 from "@angular/core";
6
- export declare class SelectionComponent implements OnInit, ControlValueAccessor {
5
+ export declare class SelectionComponent implements ControlValueAccessor {
7
6
  label: string;
8
7
  options: IDropdownOption[] | undefined;
9
- selectedValue: any;
10
- selectedValues: any[];
11
8
  isMultiSelect: boolean;
12
- displayType: SelectionType;
13
9
  selectedChange: EventEmitter<any>;
14
- onChange: any;
15
- onTouched: any;
10
+ private _value;
11
+ onChange: (value: any) => void;
12
+ onTouched: () => void;
16
13
  get value(): any;
17
- set value(value: any);
18
- ngOnInit(): void;
19
- onSelectChange(event: Event): void;
20
- onMultiSelectChange(event: Event): void;
21
- isSelected(value: any): boolean;
14
+ set value(val: any);
15
+ onDropdownChange(value: any): void;
22
16
  writeValue(value: any): void;
23
17
  registerOnChange(fn: any): void;
24
18
  registerOnTouched(fn: any): void;
25
- setDisabledState?(isDisabled: boolean): void;
26
19
  static ɵfac: i0.ɵɵFactoryDeclaration<SelectionComponent, never>;
27
- static ɵcmp: i0.ɵɵComponentDeclaration<SelectionComponent, "app-selection", never, { "label": { "alias": "label"; "required": false; }; "options": { "alias": "options"; "required": false; }; "selectedValue": { "alias": "selectedValue"; "required": false; }; "selectedValues": { "alias": "selectedValues"; "required": false; }; "isMultiSelect": { "alias": "isMultiSelect"; "required": false; }; "displayType": { "alias": "displayType"; "required": false; }; }, { "selectedChange": "selectedChange"; }, never, never, true, never>;
20
+ static ɵcmp: i0.ɵɵComponentDeclaration<SelectionComponent, "app-selection", never, { "label": { "alias": "label"; "required": false; }; "options": { "alias": "options"; "required": false; }; "isMultiSelect": { "alias": "isMultiSelect"; "required": false; }; }, { "selectedChange": "selectedChange"; }, never, never, true, never>;
28
21
  }
@@ -19,7 +19,7 @@ export declare class PaginatorComponent implements OnInit {
19
19
  ngOnInit(): void;
20
20
  ngOnChanges(): void;
21
21
  selectPage(i: number): void;
22
- onChangeNumberOfPage(itemsPerPageId: string): void;
22
+ onChangeNumberOfPage(itemsPerPage: any): void;
23
23
  private emitPaging;
24
24
  private calculateNumberOfPage;
25
25
  private updateButtonConfigs;
@@ -35,17 +35,16 @@ export declare enum InputType {
35
35
  select = "select",
36
36
  file = "file"
37
37
  }
38
+ export declare enum TableColumnType {
39
+ text = "text",
40
+ image = "image"
41
+ }
38
42
  export declare enum ContentDirection {
39
43
  left = "left",
40
44
  right = "right",
41
45
  up = "up",
42
46
  down = "down"
43
47
  }
44
- export declare enum SelectionType {
45
- dropdown = "dropdown",
46
- radio = "radio",
47
- checkbox = "checkbox"
48
- }
49
48
  export declare enum Size {
50
49
  Xbig = "xbig",
51
50
  Big = "big",
@@ -1,5 +1,5 @@
1
1
  import { TemplateRef } from "@angular/core";
2
- import { ButtonType, ContentDirection, DesignType, InputDirection, InputType, WidgetPosition } from "../enums/enum";
2
+ import { ButtonType, ContentDirection, DesignType, InputDirection, InputType, TableColumnType, WidgetPosition } from "../enums/enum";
3
3
  import { ValidatorFn } from "@angular/forms";
4
4
  export interface IButtonConfig {
5
5
  isDisabled?: boolean;
@@ -71,6 +71,7 @@ export interface IPaginator {
71
71
  export interface IDataColumnConfig {
72
72
  name: string;
73
73
  label: string;
74
+ type: TableColumnType;
74
75
  }
75
76
  export interface IItemList<T> {
76
77
  totalRecords: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "angular-dumb-lib",
3
- "version": "0.0.29",
3
+ "version": "0.0.31",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^19.2.4",
6
6
  "@angular/core": "^19.2.4"