angular-dumb-lib 0.0.31 → 0.0.33

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.
@@ -3,8 +3,8 @@ import { Injectable, Component, NgModule, EventEmitter, Output, Input, forwardRe
3
3
  import * as i1 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import * as i2 from '@angular/forms';
6
- import { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';
7
- import { Subject, takeUntil } from 'rxjs';
6
+ import { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule, FormControl, FormGroup } from '@angular/forms';
7
+ import { Subject, takeUntil, BehaviorSubject, of } from 'rxjs';
8
8
  import * as i1$1 from '@angular/platform-browser';
9
9
  import * as i2$1 from 'primeng/table';
10
10
  import { TableModule } from 'primeng/table';
@@ -1218,6 +1218,257 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
1218
1218
  type: Input
1219
1219
  }] } });
1220
1220
 
1221
+ class ActionsComponent {
1222
+ constructor() {
1223
+ this.actionButtons = [];
1224
+ this.crudActions = [CRUDType.create, CRUDType.delete, CRUDType.update];
1225
+ this.selectedAction = new EventEmitter();
1226
+ this.crudButtons = [
1227
+ {
1228
+ label: CRUDType.create,
1229
+ action: CRUDType.create
1230
+ },
1231
+ {
1232
+ label: CRUDType.delete,
1233
+ action: CRUDType.delete
1234
+ },
1235
+ {
1236
+ label: CRUDType.update,
1237
+ action: CRUDType.update
1238
+ },
1239
+ ];
1240
+ }
1241
+ ngOnInit() {
1242
+ }
1243
+ clickButton(action) {
1244
+ this.selectedAction.emit(action);
1245
+ }
1246
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1247
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: ActionsComponent, isStandalone: true, selector: "app-actions", inputs: { actionButtons: "actionButtons", crudActions: "crudActions" }, outputs: { selectedAction: "selectedAction" }, ngImport: i0, template: "<div class=\"actions\">\n <div class=\"actions-buttons buttons\">\n <!-- Action buttons -->\n <ng-container *ngFor=\"let button of actionButtons\">\n <app-button [config]=\"button\" (clickEvent)=\"clickButton(button.action)\">\n </app-button>\n </ng-container>\n </div>\n <div class=\"crud-buttons buttons\">\n <!-- CRUD buttons -->\n <ng-container *ngFor=\"let button of crudButtons\">\n <app-button [config]=\"button\" (clickEvent)=\"clickButton(button.action)\">\n </app-button>\n </ng-container>\n </div>\n</div>\n", styles: [".actions{display:flex;padding:10px 0}.actions .buttons{display:flex;gap:4px;width:50%}.actions .actions-buttons{justify-content:start}.actions .crud-buttons{justify-content:end}\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"] }] }); }
1248
+ }
1249
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ActionsComponent, decorators: [{
1250
+ type: Component,
1251
+ args: [{ selector: 'app-actions', standalone: true, imports: [CommonModule, ButtonComponent], template: "<div class=\"actions\">\n <div class=\"actions-buttons buttons\">\n <!-- Action buttons -->\n <ng-container *ngFor=\"let button of actionButtons\">\n <app-button [config]=\"button\" (clickEvent)=\"clickButton(button.action)\">\n </app-button>\n </ng-container>\n </div>\n <div class=\"crud-buttons buttons\">\n <!-- CRUD buttons -->\n <ng-container *ngFor=\"let button of crudButtons\">\n <app-button [config]=\"button\" (clickEvent)=\"clickButton(button.action)\">\n </app-button>\n </ng-container>\n </div>\n</div>\n", styles: [".actions{display:flex;padding:10px 0}.actions .buttons{display:flex;gap:4px;width:50%}.actions .actions-buttons{justify-content:start}.actions .crud-buttons{justify-content:end}\n"] }]
1252
+ }], ctorParameters: () => [], propDecorators: { actionButtons: [{
1253
+ type: Input
1254
+ }], crudActions: [{
1255
+ type: Input
1256
+ }], selectedAction: [{
1257
+ type: Output
1258
+ }] } });
1259
+
1260
+ class EventAbstractFacade {
1261
+ constructor() {
1262
+ this._eventsDictionary = new Map();
1263
+ }
1264
+ addEventListener(name, handler) {
1265
+ this._eventsDictionary.set(name, handler);
1266
+ }
1267
+ dispatch(name, ...args) {
1268
+ const handler = this._eventsDictionary.get(name);
1269
+ if (isDefined(handler)) {
1270
+ handler(...args);
1271
+ }
1272
+ }
1273
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: EventAbstractFacade, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1274
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: EventAbstractFacade }); }
1275
+ }
1276
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: EventAbstractFacade, decorators: [{
1277
+ type: Injectable
1278
+ }] });
1279
+
1280
+ var PageEvent;
1281
+ (function (PageEvent) {
1282
+ PageEvent["Modal"] = "Modal";
1283
+ PageEvent["Loading"] = "Loading";
1284
+ })(PageEvent || (PageEvent = {}));
1285
+ class PagesFacade extends EventAbstractFacade {
1286
+ constructor() {
1287
+ super(...arguments);
1288
+ this._isPageReady = new BehaviorSubject(false);
1289
+ this._params = {};
1290
+ this._validated = false;
1291
+ }
1292
+ get isPageReady() {
1293
+ return this._isPageReady.asObservable();
1294
+ }
1295
+ get params() {
1296
+ return this._params;
1297
+ }
1298
+ get validated() {
1299
+ return this._validated;
1300
+ }
1301
+ setParams(value) {
1302
+ this._params = value || {};
1303
+ }
1304
+ markAsReady() {
1305
+ this._isPageReady.next(true);
1306
+ }
1307
+ markAsLoading() {
1308
+ this._isPageReady.next(false);
1309
+ }
1310
+ validate(status) {
1311
+ this._validated = status;
1312
+ }
1313
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: PagesFacade, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
1314
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: PagesFacade }); }
1315
+ }
1316
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: PagesFacade, decorators: [{
1317
+ type: Injectable
1318
+ }] });
1319
+
1320
+ class AdminComponent {
1321
+ constructor(pageFacade) {
1322
+ this.pageFacade = pageFacade;
1323
+ this.selectedItems = [];
1324
+ this.TableColumnType = TableColumnType;
1325
+ this.tableContents = [];
1326
+ this.columns = [];
1327
+ this.formFields = [];
1328
+ this.tableName = '';
1329
+ this.totalRecords = 0;
1330
+ this.loadingState = of(false);
1331
+ this.actionButtons = [];
1332
+ this.validationMessages = {};
1333
+ this.paginator = new EventEmitter();
1334
+ this.itemAction = new EventEmitter();
1335
+ this.formSubmit = new EventEmitter();
1336
+ }
1337
+ ngOnInit() {
1338
+ this._initPageEventHandler();
1339
+ this._subscribeToPageReady();
1340
+ this._initializeForm();
1341
+ }
1342
+ changePaginator(paginator) {
1343
+ this.paginator.emit(paginator);
1344
+ }
1345
+ toggleSelection(item, event) {
1346
+ const checked = event.target.checked;
1347
+ if (checked) {
1348
+ this.selectedItems.push(item);
1349
+ }
1350
+ else {
1351
+ this.selectedItems = this.selectedItems.filter(i => i !== item);
1352
+ }
1353
+ }
1354
+ isSelected(item) {
1355
+ return this.selectedItems.includes(item);
1356
+ }
1357
+ _initPageEventHandler() {
1358
+ withValuesOf(PageEvent, (pageEvent) => {
1359
+ this.pageFacade.addEventListener(pageEvent, (...args) => {
1360
+ this.modalEvent = args[0]?.details;
1361
+ });
1362
+ });
1363
+ }
1364
+ _subscribeToPageReady() {
1365
+ this.pageFacade.isPageReady.subscribe(isReady => {
1366
+ if (isReady && this.modalEvent) {
1367
+ this.modalEvent.isModalVisible = false;
1368
+ }
1369
+ });
1370
+ }
1371
+ _initializeForm() {
1372
+ const formControls = this.formFields.reduce((controls, field) => {
1373
+ // Ensure validator is an array of ValidatorFn or empty
1374
+ const validators = Array.isArray(field.validator) ? field.validator : [];
1375
+ // Create form control dynamically
1376
+ controls[field.name] = new FormControl('', validators);
1377
+ return controls;
1378
+ }, {});
1379
+ // Create form group from dynamically generated controls
1380
+ this.formGroup = new FormGroup(formControls);
1381
+ }
1382
+ openDialog(detailAction, items) {
1383
+ let dialogTitle = "";
1384
+ let dialogTemplate = null;
1385
+ switch (detailAction) {
1386
+ case CRUDType.create:
1387
+ dialogTitle = "Create Post";
1388
+ dialogTemplate = this.itemFormTpl;
1389
+ break;
1390
+ case CRUDType.update:
1391
+ dialogTitle = "Edit Post";
1392
+ dialogTemplate = this.itemFormTpl;
1393
+ break;
1394
+ case CRUDType.delete:
1395
+ dialogTitle = "Delete Post";
1396
+ dialogTemplate = this.warningDialogTpl;
1397
+ break;
1398
+ default:
1399
+ dialogTitle = "Unknown Action";
1400
+ dialogTemplate = null;
1401
+ }
1402
+ ;
1403
+ this.modalEvent = {
1404
+ isModalVisible: true,
1405
+ isDialog: true,
1406
+ title: dialogTitle,
1407
+ template: dialogTemplate
1408
+ };
1409
+ this.pageFacade.dispatch(PageEvent.Modal, { details: this.modalEvent });
1410
+ }
1411
+ selectedItem(action) {
1412
+ this.formGroup.reset();
1413
+ if (action === CRUDType.update && this.selectedItems?.length === 1) {
1414
+ const updatedValues = Object.keys(this.formGroup.controls).reduce((values, key) => {
1415
+ values[key] = this.selectedItems[0][key] || ''; // Assign value dynamically or default to ''
1416
+ return values;
1417
+ }, {});
1418
+ this.formGroup.setValue(updatedValues);
1419
+ this.openDialog(CRUDType.update, this.selectedItems);
1420
+ }
1421
+ else if (action === CRUDType.delete && this.selectedItems?.length > 0) {
1422
+ this.openDialog(CRUDType.delete, this.selectedItems);
1423
+ }
1424
+ else if (action === CRUDType.create) {
1425
+ this.openDialog(action);
1426
+ }
1427
+ else {
1428
+ this.itemAction.emit({ action: action, item: this.selectedItems });
1429
+ }
1430
+ }
1431
+ saveForm(formGroup) {
1432
+ this.formSubmit.emit(this.formGroup.value);
1433
+ // Close modal
1434
+ this.modalEvent.isModalVisible = false;
1435
+ }
1436
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: AdminComponent, deps: [{ token: PagesFacade }], target: i0.ɵɵFactoryTarget.Component }); }
1437
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: AdminComponent, isStandalone: true, selector: "app-admin", inputs: { tableContents: "tableContents", columns: "columns", formFields: "formFields", tableName: "tableName", totalRecords: "totalRecords", loadingState: "loadingState", actionButtons: "actionButtons", validationMessages: "validationMessages" }, outputs: { paginator: "paginator", itemAction: "itemAction", formSubmit: "formSubmit" }, providers: [PagesFacade], viewQueries: [{ propertyName: "itemFormTpl", first: true, predicate: ["itemForm"], descendants: true, static: true }, { propertyName: "warningDialogTpl", first: true, predicate: ["warningDialog"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"admin\">\n <app-table\n [columns]=\"columns\"\n [items]=\"tableContents\"\n [totalRecords]=\"totalRecords\"\n [tableName]=\"tableName\"\n [loadingState]=\"loadingState\"\n (paginator)=\"changePaginator($event)\"\n >\n <ng-template #bodyTemplate let-item=\"item\" pTemplate=\"body\">\n <tr>\n <td>\n <input type=\"checkbox\" [value]=\"item\" [checked]=\"isSelected(item)\"\n (change)=\"toggleSelection(item, $event)\">\n </td>\n <td *ngFor=\"let column of columns\">\n <ng-container *ngIf=\"column.type === TableColumnType.image; else textCell\">\n <img\n [src]=\"item[column.name]\"\n alt=\"{{ column.label }}\"\n style=\"max-width: 50px; max-height: 50px\"\n />\n </ng-container>\n <ng-template #textCell>\n {{ item[column.name] }}\n </ng-template>\n </td>\n </tr>\n </ng-template>\n </app-table>\n\n <app-actions (selectedAction)=\"selectedItem($event)\" [actionButtons]=\"actionButtons\"></app-actions>\n</div>\n\n<app-modal [modalEvent]=\"modalEvent\"></app-modal>\n\n<ng-template #itemForm>\n <app-form [formGroup]=\"formGroup\" [inputConfigs]=\"formFields\" [validationMessages]=\"validationMessages\" (formSubmit)=\"saveForm($event)\"></app-form>\n</ng-template>\n\n<ng-template #warningDialog>\n <div>Do you want to delete this?</div>\n</ng-template>\n", styles: [".admin{display:flex;flex-direction:column;height:100vh}.admin app-table{flex:1}\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: TableComponent, selector: "app-table", inputs: ["items", "columns", "totalRecords", "tableName", "loadingState"], outputs: ["paginator"] }, { kind: "component", type: ActionsComponent, selector: "app-actions", inputs: ["actionButtons", "crudActions"], outputs: ["selectedAction"] }, { kind: "component", type: FormComponent, selector: "app-form", inputs: ["formGroup", "inputConfigs", "buttonConfig", "validationMessages"], outputs: ["formSubmit", "formChange"] }, { kind: "component", type: ModalComponent, selector: "app-modal", inputs: ["modalEvent", "size"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] }); }
1438
+ }
1439
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: AdminComponent, decorators: [{
1440
+ type: Component,
1441
+ args: [{ selector: 'app-admin', standalone: true, imports: [CommonModule, TableComponent, ActionsComponent, FormComponent, ModalComponent, ReactiveFormsModule], providers: [PagesFacade], template: "<div class=\"admin\">\n <app-table\n [columns]=\"columns\"\n [items]=\"tableContents\"\n [totalRecords]=\"totalRecords\"\n [tableName]=\"tableName\"\n [loadingState]=\"loadingState\"\n (paginator)=\"changePaginator($event)\"\n >\n <ng-template #bodyTemplate let-item=\"item\" pTemplate=\"body\">\n <tr>\n <td>\n <input type=\"checkbox\" [value]=\"item\" [checked]=\"isSelected(item)\"\n (change)=\"toggleSelection(item, $event)\">\n </td>\n <td *ngFor=\"let column of columns\">\n <ng-container *ngIf=\"column.type === TableColumnType.image; else textCell\">\n <img\n [src]=\"item[column.name]\"\n alt=\"{{ column.label }}\"\n style=\"max-width: 50px; max-height: 50px\"\n />\n </ng-container>\n <ng-template #textCell>\n {{ item[column.name] }}\n </ng-template>\n </td>\n </tr>\n </ng-template>\n </app-table>\n\n <app-actions (selectedAction)=\"selectedItem($event)\" [actionButtons]=\"actionButtons\"></app-actions>\n</div>\n\n<app-modal [modalEvent]=\"modalEvent\"></app-modal>\n\n<ng-template #itemForm>\n <app-form [formGroup]=\"formGroup\" [inputConfigs]=\"formFields\" [validationMessages]=\"validationMessages\" (formSubmit)=\"saveForm($event)\"></app-form>\n</ng-template>\n\n<ng-template #warningDialog>\n <div>Do you want to delete this?</div>\n</ng-template>\n", styles: [".admin{display:flex;flex-direction:column;height:100vh}.admin app-table{flex:1}\n"] }]
1442
+ }], ctorParameters: () => [{ type: PagesFacade }], propDecorators: { itemFormTpl: [{
1443
+ type: ViewChild,
1444
+ args: ['itemForm', { static: true }]
1445
+ }], warningDialogTpl: [{
1446
+ type: ViewChild,
1447
+ args: ['warningDialog', { static: true }]
1448
+ }], tableContents: [{
1449
+ type: Input
1450
+ }], columns: [{
1451
+ type: Input
1452
+ }], formFields: [{
1453
+ type: Input
1454
+ }], tableName: [{
1455
+ type: Input
1456
+ }], totalRecords: [{
1457
+ type: Input
1458
+ }], loadingState: [{
1459
+ type: Input
1460
+ }], actionButtons: [{
1461
+ type: Input
1462
+ }], validationMessages: [{
1463
+ type: Input
1464
+ }], paginator: [{
1465
+ type: Output
1466
+ }], itemAction: [{
1467
+ type: Output
1468
+ }], formSubmit: [{
1469
+ type: Output
1470
+ }] } });
1471
+
1221
1472
  /*
1222
1473
  * Public API Surface of angular-dumb-lib
1223
1474
  */
@@ -1226,5 +1477,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
1226
1477
  * Generated bundle index. Do not edit.
1227
1478
  */
1228
1479
 
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 };
1480
+ export { AdminComponent, 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 };
1230
1481
  //# 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 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
+ {"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/lib/components/molecules/actions/actions.component.ts","../../../projects/angular-dumb-lib/src/lib/components/molecules/actions/actions.component.html","../../../projects/angular-dumb-lib/src/lib/shared/facades/event-abstract.facade.ts","../../../projects/angular-dumb-lib/src/lib/shared/facades/pages.facade.ts","../../../projects/angular-dumb-lib/src/lib/components/pages/admin/admin.component.ts","../../../projects/angular-dumb-lib/src/lib/components/pages/admin/admin.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","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { CRUDType } from '../../../shared/enums/enum';\nimport { CommonModule } from '@angular/common';\nimport { ButtonComponent } from '../../atoms/button/button.component';\nimport { IButtonConfig } from '../../../shared/interfaces/interface';\n\n@Component({\n selector: 'app-actions',\n standalone: true,\n templateUrl: './actions.component.html',\n styleUrls: ['./actions.component.scss'],\n imports: [CommonModule, ButtonComponent]\n})\nexport class ActionsComponent implements OnInit {\n @Input() actionButtons: IButtonConfig[] = [];\n @Input() crudActions: CRUDType[] = [CRUDType.create, CRUDType.delete, CRUDType.update];\n\n @Output() selectedAction: EventEmitter<string> = new EventEmitter<string>();\n\n crudButtons : IButtonConfig[] = [\n {\n label: CRUDType.create,\n action: CRUDType.create\n },\n {\n label: CRUDType.delete,\n action: CRUDType.delete\n },\n {\n label: CRUDType.update,\n action: CRUDType.update\n },\n ];\n\n constructor() { }\n\n ngOnInit() {\n }\n\n clickButton(action: string | undefined) {\n this.selectedAction.emit(action);\n }\n}\n","<div class=\"actions\">\n <div class=\"actions-buttons buttons\">\n <!-- Action buttons -->\n <ng-container *ngFor=\"let button of actionButtons\">\n <app-button [config]=\"button\" (clickEvent)=\"clickButton(button.action)\">\n </app-button>\n </ng-container>\n </div>\n <div class=\"crud-buttons buttons\">\n <!-- CRUD buttons -->\n <ng-container *ngFor=\"let button of crudButtons\">\n <app-button [config]=\"button\" (clickEvent)=\"clickButton(button.action)\">\n </app-button>\n </ng-container>\n </div>\n</div>\n","import { Injectable } from \"@angular/core\";\nimport { isDefined } from \"../utils/common.utils\";\n\n@Injectable()\nexport abstract class EventAbstractFacade<T> {\n private readonly _eventsDictionary = new Map<string, (...args: T[] | unknown[]) => void>();\n\n addEventListener(name: string, handler: (...argument: T[] | unknown[]) => void): void {\n this._eventsDictionary.set(name, handler);\n }\n\n dispatch(name: string, ...args: T[] | unknown[]): void {\n const handler = this._eventsDictionary.get(name);\n if(isDefined(handler)) {\n handler(...args);\n }\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { BehaviorSubject, Observable } from \"rxjs\";\nimport { EventAbstractFacade } from \"./event-abstract.facade\";\nimport { IModalEvent } from \"../interfaces/interface\";\n\nexport enum PageEvent {\n Modal = 'Modal',\n Loading = 'Loading'\n}\n\nexport interface ILoadingEvent {\n text: string;\n position?: 'top' | 'bottom';\n}\n\nexport type PageEventDetails = IModalEvent | ILoadingEvent | unknown;\n\nexport interface IPageEvent {\n type?: 'start' | 'end' | unknown;\n details?: PageEventDetails;\n}\n\n@Injectable()\nexport class PagesFacade extends EventAbstractFacade<IPageEvent> {\n private readonly _isPageReady = new BehaviorSubject<boolean>(false);\n private _params: Record<string | number | symbol, unknown> = {};\n private _validated = false;\n\n get isPageReady(): Observable<boolean> {\n return this._isPageReady.asObservable();\n }\n\n get params(): Record<string | number | symbol, unknown> {\n return this._params;\n }\n\n get validated(): boolean {\n return this._validated;\n }\n\n setParams(value: Record<string | number | symbol, unknown>): void {\n this._params = value || {};\n }\n\n markAsReady(): void {\n this._isPageReady.next(true);\n }\n\n markAsLoading(): void {\n this._isPageReady.next(false);\n }\n\n validate(status: boolean): void {\n this._validated = status;\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { IButtonConfig, IDataColumnConfig, IInputConfig, IModalEvent, IPaginator } from '../../../shared/interfaces/interface';\nimport { CommonModule } from '@angular/common';\nimport { TableComponent } from '../../molecules/table/table.component';\nimport { ActionsComponent } from '../../molecules/actions/actions.component';\nimport { CRUDType, TableColumnType } from '../../../shared/enums/enum';\nimport { FormComponent } from '../../molecules/form/form.component';\nimport { IPageEvent, PageEvent, PagesFacade } from '../../../shared/facades/pages.facade';\nimport { withValuesOf } from '../../../shared/utils/common.utils';\nimport { ModalComponent } from '../../molecules/modal/modal.component';\nimport { FormGroup, FormControl, ReactiveFormsModule, ValidatorFn } from '@angular/forms';\n\n@Component({\n selector: 'app-admin',\n standalone: true,\n templateUrl: './admin.component.html',\n styleUrls: ['./admin.component.scss'],\n imports: [CommonModule, TableComponent, ActionsComponent, FormComponent, ModalComponent, ReactiveFormsModule],\n providers: [PagesFacade],\n})\nexport class AdminComponent<T> implements OnInit {\n @ViewChild('itemForm', { static: true }) itemFormTpl!: TemplateRef<unknown>;\n @ViewChild('warningDialog', { static: true }) warningDialogTpl!: TemplateRef<unknown>;\n\n public modalEvent!: IModalEvent;\n public formGroup!: FormGroup;\n public selectedItems: any[] = [];\n TableColumnType = TableColumnType;\n\n @Input() tableContents: T[] = [];\n @Input() columns: IDataColumnConfig[] = [];\n @Input() formFields: IInputConfig[] = [];\n @Input() tableName = '';\n @Input() totalRecords = 0;\n @Input() loadingState: Observable<boolean> = of(false);\n @Input() actionButtons: IButtonConfig[] = [];\n @Input() validationMessages: { [fieldName: string]: { [errorKey: string]: string } } = {};\n\n @Output() paginator = new EventEmitter<IPaginator>();\n @Output() itemAction = new EventEmitter<{ action: string; item: T[] }>();\n @Output() formSubmit = new EventEmitter<any>();\n\n constructor(private pageFacade: PagesFacade) { }\n\n ngOnInit() {\n this._initPageEventHandler();\n this._subscribeToPageReady();\n this._initializeForm();\n }\n\n changePaginator(paginator: IPaginator) {\n this.paginator.emit(paginator);\n }\n\n toggleSelection(item: T, event: Event) {\n const checked = (event.target as HTMLInputElement).checked;\n if (checked) {\n this.selectedItems.push(item);\n } else {\n this.selectedItems = this.selectedItems.filter(i => i !== item);\n }\n }\n\n isSelected(item: T): boolean {\n return this.selectedItems.includes(item);\n }\n\n private _initPageEventHandler(): void {\n withValuesOf(PageEvent, (pageEvent) => {\n this.pageFacade.addEventListener(pageEvent, (...args: unknown[] | IPageEvent[]) => {\n this.modalEvent = (args[0] as IPageEvent)?.details as IModalEvent;\n });\n });\n }\n\n private _subscribeToPageReady(): void {\n this.pageFacade.isPageReady.subscribe(isReady => {\n if (isReady && this.modalEvent) {\n this.modalEvent.isModalVisible = false;\n }\n });\n }\n\n private _initializeForm() {\n const formControls = this.formFields.reduce((controls, field) => {\n // Ensure validator is an array of ValidatorFn or empty\n const validators: ValidatorFn[] = Array.isArray(field.validator) ? field.validator : [];\n\n // Create form control dynamically\n controls[field.name] = new FormControl('', validators);\n\n return controls;\n }, {} as { [key: string]: FormControl });\n\n // Create form group from dynamically generated controls\n this.formGroup = new FormGroup(formControls);\n }\n\n openDialog(detailAction: string, items?: T[]) {\n let dialogTitle = \"\";\n let dialogTemplate = null;\n switch (detailAction) {\n case CRUDType.create:\n dialogTitle = \"Create Post\";\n dialogTemplate = this.itemFormTpl;\n break;\n case CRUDType.update:\n dialogTitle = \"Edit Post\";\n dialogTemplate = this.itemFormTpl;\n break;\n case CRUDType.delete:\n dialogTitle = \"Delete Post\";\n dialogTemplate = this.warningDialogTpl;\n break;\n default:\n dialogTitle = \"Unknown Action\";\n dialogTemplate = null;\n };\n\n this.modalEvent = {\n isModalVisible: true,\n isDialog: true,\n title: dialogTitle,\n template: dialogTemplate\n };\n\n this.pageFacade.dispatch(PageEvent.Modal, { details: this.modalEvent });\n }\n\n selectedItem(action: string) {\n this.formGroup.reset();\n if (action === CRUDType.update && this.selectedItems?.length === 1) {\n const updatedValues = Object.keys(this.formGroup.controls).reduce((values, key) => {\n values[key] = this.selectedItems[0][key] || ''; // Assign value dynamically or default to ''\n return values;\n }, {} as { [key: string]: any });\n\n this.formGroup.setValue(updatedValues);\n this.openDialog(CRUDType.update, this.selectedItems);\n }\n else if(action === CRUDType.delete && this.selectedItems?.length > 0)\n {\n this.openDialog(CRUDType.delete, this.selectedItems);\n }\n else if (action === CRUDType.create) {\n this.openDialog(action);\n }\n else {\n this.itemAction.emit({ action: action, item: this.selectedItems });\n }\n }\n\n saveForm(formGroup: any) {\n this.formSubmit.emit(this.formGroup.value);\n\n // Close modal\n this.modalEvent.isModalVisible = false;\n }\n}\n","<div class=\"admin\">\n <app-table\n [columns]=\"columns\"\n [items]=\"tableContents\"\n [totalRecords]=\"totalRecords\"\n [tableName]=\"tableName\"\n [loadingState]=\"loadingState\"\n (paginator)=\"changePaginator($event)\"\n >\n <ng-template #bodyTemplate let-item=\"item\" pTemplate=\"body\">\n <tr>\n <td>\n <input type=\"checkbox\" [value]=\"item\" [checked]=\"isSelected(item)\"\n (change)=\"toggleSelection(item, $event)\">\n </td>\n <td *ngFor=\"let column of columns\">\n <ng-container *ngIf=\"column.type === TableColumnType.image; else textCell\">\n <img\n [src]=\"item[column.name]\"\n alt=\"{{ column.label }}\"\n style=\"max-width: 50px; max-height: 50px\"\n />\n </ng-container>\n <ng-template #textCell>\n {{ item[column.name] }}\n </ng-template>\n </td>\n </tr>\n </ng-template>\n </app-table>\n\n <app-actions (selectedAction)=\"selectedItem($event)\" [actionButtons]=\"actionButtons\"></app-actions>\n</div>\n\n<app-modal [modalEvent]=\"modalEvent\"></app-modal>\n\n<ng-template #itemForm>\n <app-form [formGroup]=\"formGroup\" [inputConfigs]=\"formFields\" [validationMessages]=\"validationMessages\" (formSubmit)=\"saveForm($event)\"></app-form>\n</ng-template>\n\n<ng-template #warningDialog>\n <div>Do you want to delete this?</div>\n</ng-template>\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';\nexport * from './lib/components/pages/admin/admin.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","i1.PagesFacade","i3"],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { EventEmitter, OnInit } from '@angular/core';
2
+ import { CRUDType } from '../../../shared/enums/enum';
3
+ import { IButtonConfig } from '../../../shared/interfaces/interface';
4
+ import * as i0 from "@angular/core";
5
+ export declare class ActionsComponent implements OnInit {
6
+ actionButtons: IButtonConfig[];
7
+ crudActions: CRUDType[];
8
+ selectedAction: EventEmitter<string>;
9
+ crudButtons: IButtonConfig[];
10
+ constructor();
11
+ ngOnInit(): void;
12
+ clickButton(action: string | undefined): void;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<ActionsComponent, never>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<ActionsComponent, "app-actions", never, { "actionButtons": { "alias": "actionButtons"; "required": false; }; "crudActions": { "alias": "crudActions"; "required": false; }; }, { "selectedAction": "selectedAction"; }, never, never, true, never>;
15
+ }
@@ -0,0 +1,47 @@
1
+ import { EventEmitter, OnInit, TemplateRef } from '@angular/core';
2
+ import { Observable } from 'rxjs';
3
+ import { IButtonConfig, IDataColumnConfig, IInputConfig, IModalEvent, IPaginator } from '../../../shared/interfaces/interface';
4
+ import { TableColumnType } from '../../../shared/enums/enum';
5
+ import { PagesFacade } from '../../../shared/facades/pages.facade';
6
+ import { FormGroup } from '@angular/forms';
7
+ import * as i0 from "@angular/core";
8
+ export declare class AdminComponent<T> implements OnInit {
9
+ private pageFacade;
10
+ itemFormTpl: TemplateRef<unknown>;
11
+ warningDialogTpl: TemplateRef<unknown>;
12
+ modalEvent: IModalEvent;
13
+ formGroup: FormGroup;
14
+ selectedItems: any[];
15
+ TableColumnType: typeof TableColumnType;
16
+ tableContents: T[];
17
+ columns: IDataColumnConfig[];
18
+ formFields: IInputConfig[];
19
+ tableName: string;
20
+ totalRecords: number;
21
+ loadingState: Observable<boolean>;
22
+ actionButtons: IButtonConfig[];
23
+ validationMessages: {
24
+ [fieldName: string]: {
25
+ [errorKey: string]: string;
26
+ };
27
+ };
28
+ paginator: EventEmitter<IPaginator>;
29
+ itemAction: EventEmitter<{
30
+ action: string;
31
+ item: T[];
32
+ }>;
33
+ formSubmit: EventEmitter<any>;
34
+ constructor(pageFacade: PagesFacade);
35
+ ngOnInit(): void;
36
+ changePaginator(paginator: IPaginator): void;
37
+ toggleSelection(item: T, event: Event): void;
38
+ isSelected(item: T): boolean;
39
+ private _initPageEventHandler;
40
+ private _subscribeToPageReady;
41
+ private _initializeForm;
42
+ openDialog(detailAction: string, items?: T[]): void;
43
+ selectedItem(action: string): void;
44
+ saveForm(formGroup: any): void;
45
+ static ɵfac: i0.ɵɵFactoryDeclaration<AdminComponent<any>, never>;
46
+ static ɵcmp: i0.ɵɵComponentDeclaration<AdminComponent<any>, "app-admin", never, { "tableContents": { "alias": "tableContents"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "formFields": { "alias": "formFields"; "required": false; }; "tableName": { "alias": "tableName"; "required": false; }; "totalRecords": { "alias": "totalRecords"; "required": false; }; "loadingState": { "alias": "loadingState"; "required": false; }; "actionButtons": { "alias": "actionButtons"; "required": false; }; "validationMessages": { "alias": "validationMessages"; "required": false; }; }, { "paginator": "paginator"; "itemAction": "itemAction"; "formSubmit": "formSubmit"; }, never, never, true, never>;
47
+ }
@@ -0,0 +1,8 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare abstract class EventAbstractFacade<T> {
3
+ private readonly _eventsDictionary;
4
+ addEventListener(name: string, handler: (...argument: T[] | unknown[]) => void): void;
5
+ dispatch(name: string, ...args: T[] | unknown[]): void;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<EventAbstractFacade<any>, never>;
7
+ static ɵprov: i0.ɵɵInjectableDeclaration<EventAbstractFacade<any>>;
8
+ }
@@ -0,0 +1,31 @@
1
+ import { Observable } from "rxjs";
2
+ import { EventAbstractFacade } from "./event-abstract.facade";
3
+ import { IModalEvent } from "../interfaces/interface";
4
+ import * as i0 from "@angular/core";
5
+ export declare enum PageEvent {
6
+ Modal = "Modal",
7
+ Loading = "Loading"
8
+ }
9
+ export interface ILoadingEvent {
10
+ text: string;
11
+ position?: 'top' | 'bottom';
12
+ }
13
+ export type PageEventDetails = IModalEvent | ILoadingEvent | unknown;
14
+ export interface IPageEvent {
15
+ type?: 'start' | 'end' | unknown;
16
+ details?: PageEventDetails;
17
+ }
18
+ export declare class PagesFacade extends EventAbstractFacade<IPageEvent> {
19
+ private readonly _isPageReady;
20
+ private _params;
21
+ private _validated;
22
+ get isPageReady(): Observable<boolean>;
23
+ get params(): Record<string | number | symbol, unknown>;
24
+ get validated(): boolean;
25
+ setParams(value: Record<string | number | symbol, unknown>): void;
26
+ markAsReady(): void;
27
+ markAsLoading(): void;
28
+ validate(status: boolean): void;
29
+ static ɵfac: i0.ɵɵFactoryDeclaration<PagesFacade, never>;
30
+ static ɵprov: i0.ɵɵInjectableDeclaration<PagesFacade>;
31
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "angular-dumb-lib",
3
- "version": "0.0.31",
3
+ "version": "0.0.33",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^19.2.4",
6
6
  "@angular/core": "^19.2.4"
package/public-api.d.ts CHANGED
@@ -22,5 +22,6 @@ export * from './lib/components/pages/login/login.component';
22
22
  export * from './lib/components/pages/menu/menu.component';
23
23
  export * from './lib/components/pages/version/version.component';
24
24
  export * from './lib/components/pages/detail/detail.component';
25
+ export * from './lib/components/pages/admin/admin.component';
25
26
  export * from './lib/shared/interfaces/interface';
26
27
  export * from './lib/shared/enums/enum';