coer-elements 0.0.129 → 0.0.131

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. package/components/lib/coer-accordion/coer-accordion.component.d.ts +3 -3
  2. package/components/lib/coer-button/coer-button.component.d.ts +3 -2
  3. package/components/lib/coer-checkbox/coer-checkbox.component.d.ts +2 -2
  4. package/components/lib/coer-datebox/coer-datebox.component.d.ts +8 -7
  5. package/components/lib/coer-filebox/coer-filebox.component.d.ts +3 -3
  6. package/components/lib/coer-modal/coer-modal.component.d.ts +2 -2
  7. package/extensions/lib/object.extension.d.ts +1 -0
  8. package/extensions/lib/string.extension.d.ts +8 -0
  9. package/extensions/public-api.d.ts +1 -0
  10. package/fesm2022/coer-elements-components.mjs +25 -23
  11. package/fesm2022/coer-elements-components.mjs.map +1 -1
  12. package/fesm2022/coer-elements-extensions.mjs +40 -20
  13. package/fesm2022/coer-elements-extensions.mjs.map +1 -1
  14. package/fesm2022/coer-elements-guards.mjs +29 -0
  15. package/fesm2022/coer-elements-guards.mjs.map +1 -0
  16. package/fesm2022/coer-elements-interceptors.mjs +64 -0
  17. package/fesm2022/coer-elements-interceptors.mjs.map +1 -0
  18. package/fesm2022/coer-elements-pages.mjs +2 -2
  19. package/fesm2022/coer-elements-pages.mjs.map +1 -1
  20. package/fesm2022/coer-elements-tools.mjs +7 -27
  21. package/fesm2022/coer-elements-tools.mjs.map +1 -1
  22. package/fesm2022/coer-elements.mjs +1 -0
  23. package/fesm2022/coer-elements.mjs.map +1 -1
  24. package/guards/index.d.ts +5 -0
  25. package/guards/lib/login.guard.d.ts +2 -0
  26. package/guards/lib/page.guard.d.ts +2 -0
  27. package/guards/public-api.d.ts +2 -0
  28. package/index.d.ts +1 -0
  29. package/interceptors/index.d.ts +5 -0
  30. package/interceptors/lib/user.interceptor.d.ts +8 -0
  31. package/interceptors/lib/utc-offset.interceptor.d.ts +8 -0
  32. package/interceptors/public-api.d.ts +1 -0
  33. package/interfaces/lib/coer-menu/menu.interface.d.ts +3 -1
  34. package/package.json +10 -2
  35. package/pages/lib/coer-system/coer-system.component.d.ts +2 -2
  36. package/pages/lib/coer-system/login/login.component.d.ts +1 -1
  37. package/tools/lib/page.class.d.ts +4 -4
  38. package/tools/lib/section.class.d.ts +4 -4
  39. package/tools/lib/tools.d.ts +6 -6
@@ -1,30 +1,50 @@
1
+ import { Tools } from 'coer-elements/tools';
2
+
3
+ //import { Tools } from "coer-elements/tools";
4
+ //
5
+ //declare global {
6
+ // interface Object {
7
+ //
8
+ // /** Avoid Null value */
9
+ // AvoidNull<T>(type: 'string' | 'number' | 'boolean' | null): T;
10
+ //
11
+ // /** Get properties of an object */
12
+ // GetPropertyList(): string[];
13
+ //
14
+ // /** Break reference of a object or array */
15
+ // BreakReference<T>(object: T): T;
16
+ // }
17
+ //}
18
+ //
19
+ //Object.prototype.AvoidNull = function<T>(type: 'string' | 'number' | 'boolean' | null = null): T {
20
+ // return Tools.AvoidNull<T>(this as T, type);
21
+ //}
22
+ //
23
+ //Object.prototype.GetPropertyList = function(): string[] {
24
+ // return Tools.GetPropertyList(this);
25
+ //}
26
+ //
27
+ //Object.prototype.BreakReference = function<T>(): T {
28
+ // return Tools.BreakReference<T>(this as T);
29
+ //}
30
+
1
31
  String.prototype.removeAccents = function () {
2
- return this.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
32
+ return Tools.RemoveAccents(this.toString());
3
33
  };
4
34
  String.prototype.cleanUpBlanks = function () {
5
- let words = String(this).split(' ');
6
- words = words.filter(x => x.length > 0);
7
- return words.join(' ');
35
+ return Tools.CleanUpBlanks(this.toString());
8
36
  };
9
37
  String.prototype.firstCharToLower = function () {
10
- const textArray = [];
11
- for (let i = 0; i < this.length; i++) {
12
- if (i === 0)
13
- textArray.push(this[i].toLowerCase());
14
- else
15
- textArray.push(this[i]);
16
- }
17
- return textArray.join('');
38
+ return Tools.FirstCharToLower(this.toString());
18
39
  };
19
40
  String.prototype.firstCharToUpper = function () {
20
- const textArray = [];
21
- for (let i = 0; i < this.length; i++) {
22
- if (i === 0)
23
- textArray.push(this[i].toUpperCase());
24
- else
25
- textArray.push(this[i]);
26
- }
27
- return textArray.join('');
41
+ return Tools.FirstCharToUpper(this.toString());
42
+ };
43
+ String.prototype.isOnlyWhiteSpace = function () {
44
+ return Tools.IsOnlyWhiteSpace(this);
45
+ };
46
+ String.prototype.isNotOnlyWhiteSpace = function () {
47
+ return Tools.IsNotOnlyWhiteSpace(this);
28
48
  };
29
49
 
30
50
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"coer-elements-extensions.mjs","sources":["../../../projects/coer-elements/extensions/lib/string.extension.ts","../../../projects/coer-elements/extensions/coer-elements-extensions.ts"],"sourcesContent":["declare global {\r\n interface String {\r\n removeAccents(): string;\r\n cleanUpBlanks(): string;\r\n firstCharToLower(): string;\r\n firstCharToUpper(): string;\r\n }\r\n}\r\n\r\n\r\nString.prototype.removeAccents = function(): string {\r\n return this.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\r\n};\r\n\r\n \r\nString.prototype.cleanUpBlanks = function(): string {\r\n let words: string[] = String(this).split(' ');\r\n words = words.filter(x => x.length > 0);\r\n return words.join(' ');\r\n}; \r\n\r\n\r\nString.prototype.firstCharToLower = function(): string {\r\n const textArray: string[] = [];\r\n for(let i = 0; i < this.length; i++) {\r\n if(i === 0) textArray.push(this[i].toLowerCase());\r\n else textArray.push(this[i]);\r\n }\r\n\r\n return textArray.join('');\r\n}; \r\n\r\n\r\nString.prototype.firstCharToUpper = function(): string {\r\n const textArray: string[] = [];\r\n for(let i = 0; i < this.length; i++) {\r\n if(i === 0) textArray.push(this[i].toUpperCase());\r\n else textArray.push(this[i]);\r\n }\r\n\r\n return textArray.join('');\r\n}; \r\n\r\n\r\nexport {};","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAUA,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,YAAA;AAC7B,IAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;AAChE,CAAC;AAGD,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,YAAA;IAC7B,IAAI,KAAK,GAAa,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AAC7C,IAAA,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AACvC,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,CAAC;AAGD,MAAM,CAAC,SAAS,CAAC,gBAAgB,GAAG,YAAA;IAChC,MAAM,SAAS,GAAa,EAAE;AAC9B,IAAA,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACjC,IAAG,CAAC,KAAK,CAAC;YAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;;YAC5C,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;AAGhC,IAAA,OAAO,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;AAC7B,CAAC;AAGD,MAAM,CAAC,SAAS,CAAC,gBAAgB,GAAG,YAAA;IAChC,MAAM,SAAS,GAAa,EAAE;AAC9B,IAAA,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACjC,IAAG,CAAC,KAAK,CAAC;YAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;;YAC5C,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;AAGhC,IAAA,OAAO,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;AAC7B,CAAC;;ACzCD;;AAEG"}
1
+ {"version":3,"file":"coer-elements-extensions.mjs","sources":["../../../projects/coer-elements/extensions/lib/object.extension.ts","../../../projects/coer-elements/extensions/lib/string.extension.ts","../../../projects/coer-elements/extensions/coer-elements-extensions.ts"],"sourcesContent":["//import { Tools } from \"coer-elements/tools\";\r\n//\r\n//declare global {\r\n// interface Object {\r\n// \r\n// /** Avoid Null value */\r\n// AvoidNull<T>(type: 'string' | 'number' | 'boolean' | null): T; \r\n//\r\n// /** Get properties of an object */\r\n// GetPropertyList(): string[];\r\n//\r\n// /** Break reference of a object or array */\r\n// BreakReference<T>(object: T): T;\r\n// }\r\n//}\r\n//\r\n//Object.prototype.AvoidNull = function<T>(type: 'string' | 'number' | 'boolean' | null = null): T {\r\n// return Tools.AvoidNull<T>(this as T, type);\r\n//}\r\n//\r\n//Object.prototype.GetPropertyList = function(): string[] {\r\n// return Tools.GetPropertyList(this);\r\n//}\r\n//\r\n//Object.prototype.BreakReference = function<T>(): T {\r\n// return Tools.BreakReference<T>(this as T);\r\n//}\r\n\r\nexport {};","import { Tools } from \"coer-elements/tools\";\r\n\r\ndeclare global {\r\n interface String {\r\n\r\n /** */\r\n removeAccents(): string;\r\n\r\n /** Clean extra whitespaces */\r\n cleanUpBlanks(): string;\r\n\r\n /** Set First Char To Lower */\r\n firstCharToLower(): string;\r\n\r\n /** Set First Char To Upper */\r\n firstCharToUpper(): string;\r\n\r\n /** Returns true if the value is null or undefined or contains only whitespace, false otherwise */\r\n isOnlyWhiteSpace(): boolean;\r\n\r\n /** Returns true if has string value and is not only whitespace, false otherwise */\r\n isNotOnlyWhiteSpace(): boolean;\r\n }\r\n}\r\n\r\n\r\nString.prototype.removeAccents = function(): string {\r\n return Tools.RemoveAccents(this.toString());\r\n};\r\n\r\n \r\nString.prototype.cleanUpBlanks = function(): string {\r\n return Tools.CleanUpBlanks(this.toString());\r\n}; \r\n\r\n\r\nString.prototype.firstCharToLower = function(): string {\r\n return Tools.FirstCharToLower(this.toString());\r\n}; \r\n\r\n\r\nString.prototype.firstCharToUpper = function(): string {\r\n return Tools.FirstCharToUpper(this.toString());\r\n}; \r\n\r\n\r\nString.prototype.isOnlyWhiteSpace = function(): boolean {\r\n return Tools.IsOnlyWhiteSpace(this);\r\n}\r\n\r\nString.prototype.isNotOnlyWhiteSpace = function(): boolean {\r\n return Tools.IsNotOnlyWhiteSpace(this);\r\n}\r\n\r\n\r\nexport {};","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACAA,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,YAAA;IAC7B,OAAO,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC/C,CAAC;AAGD,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,YAAA;IAC7B,OAAO,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC/C,CAAC;AAGD,MAAM,CAAC,SAAS,CAAC,gBAAgB,GAAG,YAAA;IAChC,OAAO,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAClD,CAAC;AAGD,MAAM,CAAC,SAAS,CAAC,gBAAgB,GAAG,YAAA;IAChC,OAAO,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAClD,CAAC;AAGD,MAAM,CAAC,SAAS,CAAC,gBAAgB,GAAG,YAAA;AAChC,IAAA,OAAO,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,SAAS,CAAC,mBAAmB,GAAG,YAAA;AACnC,IAAA,OAAO,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC;AAC1C,CAAC;;ACpDD;;AAEG"}
@@ -0,0 +1,29 @@
1
+ import { User, Tools, CoerAlert, Menu } from 'coer-elements/tools';
2
+ import { inject } from '@angular/core';
3
+ import { navigationSIGNAL } from 'coer-elements/signals';
4
+
5
+ const loginGuard = () => {
6
+ return User.LogIn();
7
+ };
8
+
9
+ const pageGuard = (route, state) => {
10
+ const module = Tools.AvoidNull(route.data.module);
11
+ const submodule = Tools.AvoidNull(route.data.submodule);
12
+ const page = Tools.AvoidNull(route.data.page);
13
+ if (Tools.IsOnlyWhiteSpace(page)) {
14
+ console.log(`[Page] Metadata for route ${state.url} is missing`);
15
+ inject(CoerAlert).Warning('Metadata is missing', 'Guard', 'fa-solid fa-file-shield');
16
+ return false;
17
+ }
18
+ //Has access?
19
+ return Menu.GetMenuAccess(navigationSIGNAL()).some(access => Tools.RemoveAccents(Tools.AvoidNull(access?.module, 'string').toUpperCase()) === Tools.RemoveAccents(module.toUpperCase())
20
+ && Tools.RemoveAccents(Tools.AvoidNull(access?.submodule, 'string').toUpperCase()) === Tools.RemoveAccents(submodule.toUpperCase())
21
+ && Tools.RemoveAccents(Tools.AvoidNull(access?.page, 'string').toUpperCase()) === Tools.RemoveAccents(page.toUpperCase()));
22
+ };
23
+
24
+ /**
25
+ * Generated bundle index. Do not edit.
26
+ */
27
+
28
+ export { loginGuard, pageGuard };
29
+ //# sourceMappingURL=coer-elements-guards.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coer-elements-guards.mjs","sources":["../../../projects/coer-elements/guards/lib/login.guard.ts","../../../projects/coer-elements/guards/lib/page.guard.ts","../../../projects/coer-elements/guards/coer-elements-guards.ts"],"sourcesContent":["import { CanActivateFn } from '@angular/router';\r\nimport { User } from 'coer-elements/tools';\r\n\r\nexport const loginGuard: CanActivateFn = () => { \r\n return User.LogIn();\r\n};","import { inject } from '@angular/core';\r\nimport { CanActivateFn } from '@angular/router';\r\nimport { navigationSIGNAL } from 'coer-elements/signals';\r\nimport { CoerAlert, Menu, Tools } from 'coer-elements/tools'; \r\n\r\nexport const pageGuard: CanActivateFn = (route: any, state: any) => { \r\n \r\n const module = Tools.AvoidNull<string>(route.data.module);\r\n const submodule = Tools.AvoidNull<string>(route.data.submodule);\r\n const page = Tools.AvoidNull<string>(route.data.page); \r\n \r\n if (Tools.IsOnlyWhiteSpace(page)) { \r\n console.log(`[Page] Metadata for route ${state.url} is missing`);\r\n inject(CoerAlert).Warning('Metadata is missing', 'Guard', 'fa-solid fa-file-shield');\r\n return false;\r\n }\r\n\r\n //Has access? \r\n return Menu.GetMenuAccess(navigationSIGNAL()).some(access => \r\n Tools.RemoveAccents(Tools.AvoidNull<string>(access?.module, 'string').toUpperCase()) === Tools.RemoveAccents(module.toUpperCase())\r\n && Tools.RemoveAccents(Tools.AvoidNull<string>(access?.submodule, 'string').toUpperCase()) === Tools.RemoveAccents(submodule.toUpperCase())\r\n && Tools.RemoveAccents(Tools.AvoidNull<string>(access?.page, 'string').toUpperCase()) === Tools.RemoveAccents(page.toUpperCase())\r\n );\r\n}; ","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;AAGO,MAAM,UAAU,GAAkB,MAAK;AAC5C,IAAA,OAAO,IAAI,CAAC,KAAK,EAAE;AACrB;;MCAa,SAAS,GAAkB,CAAC,KAAU,EAAE,KAAU,KAAI;AAEjE,IAAA,MAAM,MAAM,GAAM,KAAK,CAAC,SAAS,CAAS,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5D,IAAA,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAS,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AAC/D,IAAA,MAAM,IAAI,GAAQ,KAAK,CAAC,SAAS,CAAS,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAE1D,IAAA,IAAI,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;QAChC,OAAO,CAAC,GAAG,CAAC,CAAA,0BAAA,EAA6B,KAAK,CAAC,GAAG,CAAa,WAAA,CAAA,CAAC;AAChE,QAAA,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,OAAO,EAAE,yBAAyB,CAAC;AACpF,QAAA,OAAO,KAAK;;;AAId,IAAA,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IACvD,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAS,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE;WAC9H,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAS,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,EAAE;AACvI,WAAA,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAS,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAClI;AACH;;ACvBA;;AAEG;;;;"}
@@ -0,0 +1,64 @@
1
+ import { provideHttpClient, withInterceptorsFromDi, HTTP_INTERCEPTORS } from '@angular/common/http';
2
+ import * as i0 from '@angular/core';
3
+ import { Injectable } from '@angular/core';
4
+ import { DateTime, User, Tools } from 'coer-elements/tools';
5
+ import { throwError } from 'rxjs';
6
+ import { catchError } from 'rxjs/operators';
7
+
8
+ class UTC_OFFSET_INTERCEPTOR {
9
+ intercept(request, next) {
10
+ const headers = request.headers.set('utc-offset', `${DateTime.GetOffset() / 60}`);
11
+ return next.handle(request.clone({ headers })).pipe(catchError((httpError) => {
12
+ console.error(httpError);
13
+ return throwError(() => httpError);
14
+ }));
15
+ }
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: UTC_OFFSET_INTERCEPTOR, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
17
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: UTC_OFFSET_INTERCEPTOR, providedIn: 'root' }); }
18
+ }
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: UTC_OFFSET_INTERCEPTOR, decorators: [{
20
+ type: Injectable,
21
+ args: [{
22
+ providedIn: 'root'
23
+ }]
24
+ }] });
25
+
26
+ class USER_INTERCEPTOR {
27
+ intercept(request, next) {
28
+ const user = User.Get();
29
+ let headers = request.headers;
30
+ if (Tools.IsNotNull(user)) {
31
+ if (Tools.IsNotNull(user?.user)) {
32
+ headers = headers.set('clien-user', user.user);
33
+ }
34
+ if (Tools.IsNotNull(user?.jwt)) {
35
+ headers = headers.set('Authorization', `Bearer ${user.jwt}`);
36
+ }
37
+ }
38
+ return next.handle(request.clone({ headers })).pipe(catchError((httpError) => {
39
+ console.error(httpError);
40
+ return throwError(() => httpError);
41
+ }));
42
+ }
43
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: USER_INTERCEPTOR, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
44
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: USER_INTERCEPTOR, providedIn: 'root' }); }
45
+ }
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: USER_INTERCEPTOR, decorators: [{
47
+ type: Injectable,
48
+ args: [{
49
+ providedIn: 'root'
50
+ }]
51
+ }] });
52
+
53
+ const INTERCEPTORS = [
54
+ provideHttpClient(withInterceptorsFromDi()),
55
+ { provide: HTTP_INTERCEPTORS, useClass: UTC_OFFSET_INTERCEPTOR, multi: true },
56
+ { provide: HTTP_INTERCEPTORS, useClass: USER_INTERCEPTOR, multi: true }
57
+ ];
58
+
59
+ /**
60
+ * Generated bundle index. Do not edit.
61
+ */
62
+
63
+ export { INTERCEPTORS };
64
+ //# sourceMappingURL=coer-elements-interceptors.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coer-elements-interceptors.mjs","sources":["../../../projects/coer-elements/interceptors/lib/utc-offset.interceptor.ts","../../../projects/coer-elements/interceptors/lib/user.interceptor.ts","../../../projects/coer-elements/interceptors/public-api.ts","../../../projects/coer-elements/interceptors/coer-elements-interceptors.ts"],"sourcesContent":["import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { DateTime } from 'coer-elements/tools';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UTC_OFFSET_INTERCEPTOR implements HttpInterceptor {\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n\r\n const headers = request.headers.set('utc-offset', `${DateTime.GetOffset() / 60}`); \r\n\r\n return next.handle(request.clone({ headers })).pipe(\r\n catchError((httpError: HttpErrorResponse) => {\r\n console.error(httpError);\r\n return throwError(() => httpError);\r\n })\r\n );\r\n }\r\n}","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Tools, User } from 'coer-elements/tools';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class USER_INTERCEPTOR implements HttpInterceptor {\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n\r\n const user = User.Get<any>();\r\n let headers = request.headers;\r\n\r\n if (Tools.IsNotNull(user)) {\r\n if (Tools.IsNotNull(user?.user)) {\r\n headers = headers.set('clien-user', user.user); \r\n\r\n }\r\n\r\n if (Tools.IsNotNull(user?.jwt)) {\r\n headers = headers.set('Authorization', `Bearer ${user.jwt}`);\r\n }\r\n }\r\n\r\n return next.handle(request.clone({ headers })).pipe(\r\n catchError((httpError: HttpErrorResponse) => {\r\n console.error(httpError);\r\n return throwError(() => httpError);\r\n })\r\n );\r\n }\r\n}","import { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\r\nimport { UTC_OFFSET_INTERCEPTOR } from './lib/utc-offset.interceptor';\r\nimport { USER_INTERCEPTOR } from './lib/user.interceptor';\r\n\r\nexport const INTERCEPTORS: any[] = [\r\n provideHttpClient(withInterceptorsFromDi()),\r\n { provide: HTTP_INTERCEPTORS, useClass: UTC_OFFSET_INTERCEPTOR, multi: true },\r\n { provide: HTTP_INTERCEPTORS, useClass: USER_INTERCEPTOR, multi: true }\r\n];","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -126,7 +126,7 @@ class LoginPage {
126
126
  this.inputPassword().Select();
127
127
  }
128
128
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: LoginPage, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
129
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: LoginPage, isStandalone: false, selector: "login-page", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onLogin: "onLogin", onRecovery: "onRecovery" }, viewQueries: [{ propertyName: "inputUser", first: true, predicate: ["inputUser"], descendants: true, isSignal: true }, { propertyName: "inputPassword", first: true, predicate: ["inputPassword"], descendants: true, isSignal: true }, { propertyName: "inputRecovery", first: true, predicate: ["inputRecovery"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"login-container\">\r\n\r\n <!-- Title -->\r\n <div class=\"title\">\r\n {{ title() }}\r\n </div>\r\n \r\n @if(show === 'login') {\r\n <section>\r\n <!-- User -->\r\n <coer-textbox\r\n #inputUser\r\n label=\"User\"\r\n [(ngModel)]=\"user\"\r\n [isLoading]=\"isLoading()\" \r\n marginTop=\"35px\"\r\n marginBottom=\"35px\"\r\n [maxLength]=\"15\"\r\n (onKeyupEnter)=\"inputPassword.Select()\"\r\n ></coer-textbox>\r\n \r\n <!-- Password -->\r\n <coer-textbox\r\n #inputPassword\r\n label=\"Password\"\r\n [(ngModel)]=\"password\"\r\n [isLoading]=\"isLoading()\"\r\n [selectOnFocus]=\"true\"\r\n marginBottom=\"35px\"\r\n [maxLength]=\"20\"\r\n (onKeyupEnter)=\"Login()\"\r\n ></coer-textbox> \r\n \r\n <!-- Login -->\r\n <div class=\"text-center\">\r\n <coer-button\r\n color=\"dark\" \r\n [isDisabled]=\"!enableButton\"\r\n [isLoading]=\"isLoading()\"\r\n (onClick)=\"Login()\"\r\n > Login </coer-button>\r\n </div>\r\n </section>\r\n\r\n <!-- Recover password -->\r\n <div class=\"recover\" (click)=\"Show('recovery')\">\r\n Recover password\r\n </div>\r\n } \r\n\r\n\r\n @if(show === 'recovery') {\r\n <section>\r\n <!-- Recovery -->\r\n <coer-textbox\r\n #inputRecovery\r\n label=\"User / Email\"\r\n [(ngModel)]=\"user\"\r\n [isLoading]=\"isLoading()\" \r\n marginTop=\"35px\"\r\n marginBottom=\"35px\"\r\n [maxLength]=\"15\"\r\n (onKeyupEnter)=\"Recovery()\"\r\n ></coer-textbox> \r\n\r\n\r\n <!-- -->\r\n <coer-textbox [isInvisible]=\"true\"></coer-textbox> \r\n\r\n \r\n <!-- Login -->\r\n <div class=\"text-center\">\r\n <coer-button \r\n color=\"dark\" \r\n [isDisabled]=\"!enableRecoveryButton\"\r\n [isLoading]=\"isLoading()\"\r\n marginTop=\"35px\"\r\n (onClick)=\"Recovery()\"\r\n > Recovery </coer-button>\r\n </div>\r\n </section>\r\n\r\n <!-- Recover password -->\r\n <div class=\"back\" (click)=\"Show('login')\">\r\n Back\r\n </div>\r\n } \r\n</div>\r\n\r\n", styles: [".login-container{position:relative;border:1px solid black;border-radius:25px;min-width:400px;max-width:400px;margin:35px auto auto;padding:35px}.login-container .title{display:flex;align-items:center;justify-content:center;font-size:25px;font-weight:700;color:var(--orange)}.login-container .back,.login-container .recover{position:absolute;left:20px;bottom:-25px;font-size:small;font-weight:700;color:gray;cursor:pointer}.login-container .back:hover,.login-container .recover:hover{transform:scale(1.01)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.CoerButton, selector: "coer-button", inputs: ["id", "color", "type", "icon", "iconPosition", "animation", "isLoading", "isDisabled", "isInvisible", "width", "minWidth", "maxWidth", "height", "minHeight", "marginTop", "marginRight", "marginBottom", "marginLeft", "path", "tooltipPosition", "tooltip"], outputs: ["onClick"] }, { kind: "component", type: i2.CoerTextBox, selector: "coer-textbox", inputs: ["value", "id", "button", "label", "placeholder", "minLength", "maxLength", "showSearchIcon", "showClearIcon", "width", "minWidth", "maxWidth", "marginTop", "marginRight", "marginBottom", "marginLeft", "isInvalid", "isValid", "isDisabled", "isInvisible", "isReadonly", "isLoading", "selectOnFocus", "textPosition"], outputs: ["onKeyupEnter", "onInput", "onClickClear", "onClickButton"] }] }); }
129
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: LoginPage, isStandalone: false, selector: "login-page", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onLogin: "onLogin", onRecovery: "onRecovery" }, viewQueries: [{ propertyName: "inputUser", first: true, predicate: ["inputUser"], descendants: true, isSignal: true }, { propertyName: "inputPassword", first: true, predicate: ["inputPassword"], descendants: true, isSignal: true }, { propertyName: "inputRecovery", first: true, predicate: ["inputRecovery"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"login-container\">\r\n\r\n <!-- Title -->\r\n <div class=\"title\">\r\n {{ title() }}\r\n </div>\r\n \r\n @if(show === 'login') {\r\n <section>\r\n <!-- User -->\r\n <coer-textbox\r\n #inputUser\r\n label=\"User\"\r\n [(ngModel)]=\"user\"\r\n [isLoading]=\"isLoading()\" \r\n marginTop=\"35px\"\r\n marginBottom=\"35px\"\r\n [maxLength]=\"15\"\r\n (onKeyupEnter)=\"inputPassword.Select()\"\r\n ></coer-textbox>\r\n \r\n <!-- Password -->\r\n <coer-textbox\r\n #inputPassword\r\n label=\"Password\"\r\n [(ngModel)]=\"password\"\r\n [isLoading]=\"isLoading()\"\r\n [selectOnFocus]=\"true\"\r\n marginBottom=\"35px\"\r\n [maxLength]=\"20\"\r\n (onKeyupEnter)=\"Login()\"\r\n ></coer-textbox> \r\n \r\n <!-- Login -->\r\n <div class=\"text-center\">\r\n <coer-button\r\n color=\"dark\" \r\n [isDisabled]=\"!enableButton\"\r\n [isLoading]=\"isLoading()\"\r\n (onClick)=\"Login()\"\r\n > Login </coer-button>\r\n </div>\r\n </section>\r\n\r\n <!-- Recover password -->\r\n <div class=\"recover\" (click)=\"Show('recovery')\">\r\n Recover password\r\n </div>\r\n } \r\n\r\n\r\n @if(show === 'recovery') {\r\n <section>\r\n <!-- Recovery -->\r\n <coer-textbox\r\n #inputRecovery\r\n label=\"User / Email\"\r\n [(ngModel)]=\"user\"\r\n [isLoading]=\"isLoading()\" \r\n marginTop=\"35px\"\r\n marginBottom=\"35px\"\r\n [maxLength]=\"15\"\r\n (onKeyupEnter)=\"Recovery()\"\r\n ></coer-textbox> \r\n\r\n\r\n <!-- -->\r\n <coer-textbox [isInvisible]=\"true\"></coer-textbox> \r\n\r\n \r\n <!-- Login -->\r\n <div class=\"text-center\">\r\n <coer-button \r\n color=\"dark\" \r\n [isDisabled]=\"!enableRecoveryButton\"\r\n [isLoading]=\"isLoading()\"\r\n marginTop=\"35px\"\r\n (onClick)=\"Recovery()\"\r\n > Recovery </coer-button>\r\n </div>\r\n </section>\r\n\r\n <!-- Recover password -->\r\n <div class=\"back\" (click)=\"Show('login')\">\r\n Back\r\n </div>\r\n } \r\n</div>\r\n\r\n", styles: [".login-container{position:relative;border:1px solid black;border-radius:25px;min-width:400px;max-width:400px;margin:35px auto auto;padding:35px}.login-container .title{display:flex;align-items:center;justify-content:center;font-size:25px;font-weight:700;color:var(--orange)}.login-container .back,.login-container .recover{position:absolute;left:20px;bottom:-25px;font-size:small;font-weight:700;color:gray;cursor:pointer}.login-container .back:hover,.login-container .recover:hover{transform:scale(1.01)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.CoerButton, selector: "coer-button", inputs: ["id", "color", "type", "icon", "iconPosition", "path", "animation", "isLoading", "isDisabled", "isReadonly", "isInvisible", "width", "minWidth", "maxWidth", "height", "minHeight", "marginTop", "marginRight", "marginBottom", "marginLeft", "tooltipPosition", "tooltip"], outputs: ["onClick"] }, { kind: "component", type: i2.CoerTextBox, selector: "coer-textbox", inputs: ["value", "id", "button", "label", "placeholder", "minLength", "maxLength", "showSearchIcon", "showClearIcon", "width", "minWidth", "maxWidth", "marginTop", "marginRight", "marginBottom", "marginLeft", "isInvalid", "isValid", "isDisabled", "isInvisible", "isReadonly", "isLoading", "selectOnFocus", "textPosition"], outputs: ["onKeyupEnter", "onInput", "onClickClear", "onClickButton"] }] }); }
130
130
  }
131
131
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: LoginPage, decorators: [{
132
132
  type: Component,
@@ -365,7 +365,7 @@ class COERSystem {
365
365
  this.onDeleteUserImage.emit();
366
366
  }
367
367
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: COERSystem, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
368
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: COERSystem, isStandalone: false, selector: "coer-system", inputs: { appName: { classPropertyName: "appName", publicName: "appName", isSignal: true, isRequired: false, transformFunction: null }, userImage: { classPropertyName: "userImage", publicName: "userImage", isSignal: true, isRequired: false, transformFunction: null }, toolbarMenu: { classPropertyName: "toolbarMenu", publicName: "toolbarMenu", isSignal: true, isRequired: false, transformFunction: null }, user: { classPropertyName: "user", publicName: "user", isSignal: false, isRequired: false, transformFunction: null }, userRoles: { classPropertyName: "userRoles", publicName: "userRoles", isSignal: false, isRequired: false, transformFunction: null }, navigation: { classPropertyName: "navigation", publicName: "navigation", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { onLogin: "onLogin", onRecovery: "onRecovery", onClickOption: "onClickOption", onResetPassword: "onResetPassword", onUpdateProfile: "onUpdateProfile", onUploadUserImage: "onUploadUserImage", onDeleteUserImage: "onDeleteUserImage" }, viewQueries: [{ propertyName: "sidenav", first: true, predicate: ["sidenav"], descendants: true, isSignal: true }, { propertyName: "loginPage", first: true, predicate: ["loginPage"], descendants: true, isSignal: true }, { propertyName: "modalProfile", first: true, predicate: ["modalProfile"], descendants: true, isSignal: true }, { propertyName: "modalPassword", first: true, predicate: ["modalPassword"], descendants: true, isSignal: true }, { propertyName: "inputPassword", first: true, predicate: ["inputPassword"], descendants: true, isSignal: true }, { propertyName: "inputPasswordConfirm", first: true, predicate: ["inputPasswordConfirm"], descendants: true, isSignal: true }, { propertyName: "resetButton", first: true, predicate: ["resetButton"], descendants: true, isSignal: true }], ngImport: i0, template: "@if(IsNotNull(_user())) {\r\n <coer-toolbar \r\n [appName]=\"appName()\" \r\n [user]=\"_user()\" \r\n [image]=\"userImage()\" \r\n [menu]=\"_toolbarMenu()\"\r\n (onClickMenu)=\"sidenav.Toggle()\" \r\n (onClickOption)=\"SelectedOption($event)\"\r\n ></coer-toolbar>\r\n \r\n <coer-sidenav #sidenav> \r\n <section> \r\n <ng-content></ng-content>\r\n </section> \r\n </coer-sidenav>\r\n\r\n <!-- Modal Profile -->\r\n <coer-modal #modalProfile [title]=\"userName()\" icon=\"fa-solid fa-user\" width=\"auto\" height=\"350px\" (onClose)=\"null\"> \r\n <coer-filebox\r\n type=\"image\"\r\n [image]=\"{ \r\n value: IsNotOnlyWhiteSpace(userImage()) ? userImage() : '', \r\n name: userName(),\r\n maxWidth: '150px', \r\n maxHeight: '150px', \r\n marginBottom: '15px',\r\n allowExpand: false \r\n }\"\r\n [isLoading]=\"_isLoading()\"\r\n (onSelected)=\"UploadImage($event)\"\r\n (onDeleteImage)=\"DeleteUserImage()\"\r\n ></coer-filebox>\r\n \r\n <div class=\"d-flex\"> \r\n <!-- User --> \r\n <coer-textbox\r\n label=\"User\"\r\n [value]=\"_user()?.user\"\r\n [isReadonly]=\"true\" \r\n marginRight=\"15px\"\r\n marginBottom=\"15px\" \r\n width=\"250px\" \r\n ></coer-textbox> \r\n \r\n <!-- Email --> \r\n <coer-textbox\r\n label=\"Email\"\r\n [value]=\"_user()?.email\"\r\n [isReadonly]=\"true\" \r\n marginBottom=\"15px\"\r\n width=\"250px\" \r\n ></coer-textbox> \r\n </div> \r\n \r\n <div class=\"d-flex\"> \r\n <!-- Nickame --> \r\n <coer-textbox\r\n label=\"Nickame\"\r\n [(ngModel)]=\"nickname\" \r\n [isLoading]=\"_isLoading()\"\r\n marginRight=\"15px\"\r\n marginBottom=\"15px\" \r\n width=\"250px\" \r\n ></coer-textbox> \r\n \r\n <!-- Role --> \r\n <coer-selectbox\r\n label=\"Role\"\r\n [(ngModel)]=\"mainRole\"\r\n [dataSource]=\"_userRoles()\"\r\n [isLoading]=\"_isLoading()\" \r\n marginBottom=\"15px\"\r\n width=\"250px\" \r\n ></coer-selectbox> \r\n </div> \r\n \r\n <ng-template coerRef=\"footer\">\r\n <coer-button\r\n #buttonSave\r\n color=\"dark\"\r\n icon=\"save\"\r\n [isLoading]=\"_isLoading()\"\r\n (onClick)=\"UpdateProfile()\"\r\n > Update </coer-button>\r\n </ng-template>\r\n </coer-modal>\r\n\r\n\r\n <!-- Modal Password -->\r\n <coer-modal #modalPassword title=\"Reset Password\" icon=\"fa-solid fa-lock\" (onClose)=\"password = ''; passwordConfirm = '';\">\r\n <coer-textbox\r\n #inputPassword\r\n label=\"New Password\"\r\n [(ngModel)]=\"password\"\r\n [isLoading]=\"_isLoading()\"\r\n [selectOnFocus]=\"true\"\r\n marginBottom=\"15px\"\r\n (onKeyupEnter)=\"Focus()\"\r\n ></coer-textbox>\r\n\r\n <coer-textbox\r\n #inputPasswordConfirm\r\n label=\"Confirm Password\"\r\n [(ngModel)]=\"passwordConfirm\"\r\n [isLoading]=\"_isLoading()\"\r\n [selectOnFocus]=\"true\" \r\n (onKeyupEnter)=\"Focus()\"\r\n ></coer-textbox>\r\n\r\n <ng-template coerRef=\"footer\">\r\n <!-- Reset Button -->\r\n <coer-button\r\n #resetButton\r\n color=\"dark\" \r\n [isDisabled]=\"!enableButton\"\r\n [isLoading]=\"_isLoading()\" \r\n (onClick)=\"ResetPassword()\"\r\n > Reset </coer-button>\r\n </ng-template>\r\n </coer-modal>\r\n}\r\n\r\n@else {\r\n <login-page \r\n #loginPage\r\n [title]=\"title\" \r\n (onLogin)=\"onLogin.emit($event)\"\r\n (onRecovery)=\"onRecovery.emit($event)\"\r\n ></login-page>\r\n} \r\n\r\n<coer-alert></coer-alert> ", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.CoerButton, selector: "coer-button", inputs: ["id", "color", "type", "icon", "iconPosition", "animation", "isLoading", "isDisabled", "isInvisible", "width", "minWidth", "maxWidth", "height", "minHeight", "marginTop", "marginRight", "marginBottom", "marginLeft", "path", "tooltipPosition", "tooltip"], outputs: ["onClick"] }, { kind: "component", type: i2.CoerFilebox, selector: "coer-filebox", inputs: ["type", "multiple", "isLoading", "isDisabled", "image"], outputs: ["onSelected", "onDeleteImage"] }, { kind: "component", type: i2.CoerModal, selector: "coer-modal", inputs: ["id", "title", "icon", "showCloseButton", "width", "height", "maxHeight"], outputs: ["onOpen", "onClose"] }, { kind: "component", type: i2.CoerSidenav, selector: "coer-sidenav", outputs: ["onMenuSelected"] }, { kind: "component", type: i2.CoerSelectbox, selector: "coer-selectbox", inputs: ["value", "id", "label", "dataSource", "propDisplay", "rowsByPage", "placeholder", "width", "minWidth", "maxWidth", "marginTop", "marginRight", "marginBottom", "marginLeft", "isInvalid", "isValid", "isDisabled", "isReadonly", "isLoading"], outputs: ["onSelected", "onUnselect"] }, { kind: "component", type: i2.CoerTextBox, selector: "coer-textbox", inputs: ["value", "id", "button", "label", "placeholder", "minLength", "maxLength", "showSearchIcon", "showClearIcon", "width", "minWidth", "maxWidth", "marginTop", "marginRight", "marginBottom", "marginLeft", "isInvalid", "isValid", "isDisabled", "isInvisible", "isReadonly", "isLoading", "selectOnFocus", "textPosition"], outputs: ["onKeyupEnter", "onInput", "onClickClear", "onClickButton"] }, { kind: "component", type: i2.CoerToolbar, selector: "coer-toolbar", inputs: ["appName", "user", "image", "menu"], outputs: ["onClickMenu", "onClickOption"] }, { kind: "directive", type: i3.CoerRefDirective, selector: "[coerRef]", inputs: ["coerRef", "title", "icon", "isDisabled", "show", "tooltip"] }, { kind: "component", type: i4.CoerAlert, selector: "coer-alert" }, { kind: "component", type: LoginPage, selector: "login-page", inputs: ["title"], outputs: ["onLogin", "onRecovery"] }] }); }
368
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: COERSystem, isStandalone: false, selector: "coer-system", inputs: { appName: { classPropertyName: "appName", publicName: "appName", isSignal: true, isRequired: false, transformFunction: null }, userImage: { classPropertyName: "userImage", publicName: "userImage", isSignal: true, isRequired: false, transformFunction: null }, toolbarMenu: { classPropertyName: "toolbarMenu", publicName: "toolbarMenu", isSignal: true, isRequired: false, transformFunction: null }, user: { classPropertyName: "user", publicName: "user", isSignal: false, isRequired: false, transformFunction: null }, userRoles: { classPropertyName: "userRoles", publicName: "userRoles", isSignal: false, isRequired: false, transformFunction: null }, navigation: { classPropertyName: "navigation", publicName: "navigation", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { onLogin: "onLogin", onRecovery: "onRecovery", onClickOption: "onClickOption", onResetPassword: "onResetPassword", onUpdateProfile: "onUpdateProfile", onUploadUserImage: "onUploadUserImage", onDeleteUserImage: "onDeleteUserImage" }, viewQueries: [{ propertyName: "sidenav", first: true, predicate: ["sidenav"], descendants: true, isSignal: true }, { propertyName: "loginPage", first: true, predicate: ["loginPage"], descendants: true, isSignal: true }, { propertyName: "modalProfile", first: true, predicate: ["modalProfile"], descendants: true, isSignal: true }, { propertyName: "modalPassword", first: true, predicate: ["modalPassword"], descendants: true, isSignal: true }, { propertyName: "inputPassword", first: true, predicate: ["inputPassword"], descendants: true, isSignal: true }, { propertyName: "inputPasswordConfirm", first: true, predicate: ["inputPasswordConfirm"], descendants: true, isSignal: true }, { propertyName: "resetButton", first: true, predicate: ["resetButton"], descendants: true, isSignal: true }], ngImport: i0, template: "@if(IsNotNull(_user())) {\r\n <coer-toolbar \r\n [appName]=\"appName()\" \r\n [user]=\"_user()\" \r\n [image]=\"userImage()\" \r\n [menu]=\"_toolbarMenu()\"\r\n (onClickMenu)=\"sidenav.Toggle()\" \r\n (onClickOption)=\"SelectedOption($event)\"\r\n ></coer-toolbar>\r\n \r\n <coer-sidenav #sidenav> \r\n <section> \r\n <ng-content></ng-content>\r\n </section> \r\n </coer-sidenav>\r\n\r\n <!-- Modal Profile -->\r\n <coer-modal #modalProfile [title]=\"userName()\" icon=\"fa-solid fa-user\" width=\"auto\" height=\"350px\" (onClose)=\"null\"> \r\n <coer-filebox\r\n type=\"image\"\r\n [image]=\"{ \r\n value: IsNotOnlyWhiteSpace(userImage()) ? userImage() : '', \r\n name: userName(),\r\n maxWidth: '150px', \r\n maxHeight: '150px', \r\n marginBottom: '15px',\r\n allowExpand: false \r\n }\"\r\n [isLoading]=\"_isLoading()\"\r\n (onSelected)=\"UploadImage($event)\"\r\n (onDeleteImage)=\"DeleteUserImage()\"\r\n ></coer-filebox>\r\n \r\n <div class=\"d-flex\"> \r\n <!-- User --> \r\n <coer-textbox\r\n label=\"User\"\r\n [value]=\"_user()?.user\"\r\n [isReadonly]=\"true\" \r\n marginRight=\"15px\"\r\n marginBottom=\"15px\" \r\n width=\"250px\" \r\n ></coer-textbox> \r\n \r\n <!-- Email --> \r\n <coer-textbox\r\n label=\"Email\"\r\n [value]=\"_user()?.email\"\r\n [isReadonly]=\"true\" \r\n marginBottom=\"15px\"\r\n width=\"250px\" \r\n ></coer-textbox> \r\n </div> \r\n \r\n <div class=\"d-flex\"> \r\n <!-- Nickame --> \r\n <coer-textbox\r\n label=\"Nickame\"\r\n [(ngModel)]=\"nickname\" \r\n [isLoading]=\"_isLoading()\"\r\n marginRight=\"15px\"\r\n marginBottom=\"15px\" \r\n width=\"250px\" \r\n ></coer-textbox> \r\n \r\n <!-- Role --> \r\n <coer-selectbox\r\n label=\"Role\"\r\n [(ngModel)]=\"mainRole\"\r\n [dataSource]=\"_userRoles()\"\r\n [isLoading]=\"_isLoading()\" \r\n marginBottom=\"15px\"\r\n width=\"250px\" \r\n ></coer-selectbox> \r\n </div> \r\n \r\n <ng-template coerRef=\"footer\">\r\n <coer-button\r\n #buttonSave\r\n color=\"dark\"\r\n icon=\"save\"\r\n [isLoading]=\"_isLoading()\"\r\n (onClick)=\"UpdateProfile()\"\r\n > Update </coer-button>\r\n </ng-template>\r\n </coer-modal>\r\n\r\n\r\n <!-- Modal Password -->\r\n <coer-modal #modalPassword title=\"Reset Password\" icon=\"fa-solid fa-lock\" (onClose)=\"password = ''; passwordConfirm = '';\">\r\n <coer-textbox\r\n #inputPassword\r\n label=\"New Password\"\r\n [(ngModel)]=\"password\"\r\n [isLoading]=\"_isLoading()\"\r\n [selectOnFocus]=\"true\"\r\n marginBottom=\"15px\"\r\n (onKeyupEnter)=\"Focus()\"\r\n ></coer-textbox>\r\n\r\n <coer-textbox\r\n #inputPasswordConfirm\r\n label=\"Confirm Password\"\r\n [(ngModel)]=\"passwordConfirm\"\r\n [isLoading]=\"_isLoading()\"\r\n [selectOnFocus]=\"true\" \r\n (onKeyupEnter)=\"Focus()\"\r\n ></coer-textbox>\r\n\r\n <ng-template coerRef=\"footer\">\r\n <!-- Reset Button -->\r\n <coer-button\r\n #resetButton\r\n color=\"dark\" \r\n [isDisabled]=\"!enableButton\"\r\n [isLoading]=\"_isLoading()\" \r\n (onClick)=\"ResetPassword()\"\r\n > Reset </coer-button>\r\n </ng-template>\r\n </coer-modal>\r\n}\r\n\r\n@else {\r\n <login-page \r\n #loginPage\r\n [title]=\"title\" \r\n (onLogin)=\"onLogin.emit($event)\"\r\n (onRecovery)=\"onRecovery.emit($event)\"\r\n ></login-page>\r\n} \r\n\r\n<coer-alert></coer-alert> ", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.CoerButton, selector: "coer-button", inputs: ["id", "color", "type", "icon", "iconPosition", "path", "animation", "isLoading", "isDisabled", "isReadonly", "isInvisible", "width", "minWidth", "maxWidth", "height", "minHeight", "marginTop", "marginRight", "marginBottom", "marginLeft", "tooltipPosition", "tooltip"], outputs: ["onClick"] }, { kind: "component", type: i2.CoerFilebox, selector: "coer-filebox", inputs: ["type", "multiple", "isLoading", "isDisabled", "image"], outputs: ["onSelected", "onDeleteImage"] }, { kind: "component", type: i2.CoerModal, selector: "coer-modal", inputs: ["id", "title", "icon", "showCloseButton", "width", "height", "maxHeight"], outputs: ["onOpen", "onClose"] }, { kind: "component", type: i2.CoerSidenav, selector: "coer-sidenav", outputs: ["onMenuSelected"] }, { kind: "component", type: i2.CoerSelectbox, selector: "coer-selectbox", inputs: ["value", "id", "label", "dataSource", "propDisplay", "rowsByPage", "placeholder", "width", "minWidth", "maxWidth", "marginTop", "marginRight", "marginBottom", "marginLeft", "isInvalid", "isValid", "isDisabled", "isReadonly", "isLoading"], outputs: ["onSelected", "onUnselect"] }, { kind: "component", type: i2.CoerTextBox, selector: "coer-textbox", inputs: ["value", "id", "button", "label", "placeholder", "minLength", "maxLength", "showSearchIcon", "showClearIcon", "width", "minWidth", "maxWidth", "marginTop", "marginRight", "marginBottom", "marginLeft", "isInvalid", "isValid", "isDisabled", "isInvisible", "isReadonly", "isLoading", "selectOnFocus", "textPosition"], outputs: ["onKeyupEnter", "onInput", "onClickClear", "onClickButton"] }, { kind: "component", type: i2.CoerToolbar, selector: "coer-toolbar", inputs: ["appName", "user", "image", "menu"], outputs: ["onClickMenu", "onClickOption"] }, { kind: "directive", type: i3.CoerRefDirective, selector: "[coerRef]", inputs: ["coerRef", "title", "icon", "isDisabled", "show", "tooltip"] }, { kind: "component", type: i4.CoerAlert, selector: "coer-alert" }, { kind: "component", type: LoginPage, selector: "login-page", inputs: ["title"], outputs: ["onLogin", "onRecovery"] }] }); }
369
369
  }
370
370
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: COERSystem, decorators: [{
371
371
  type: Component,
@@ -1 +1 @@
1
- {"version":3,"file":"coer-elements-pages.mjs","sources":["../../../projects/coer-elements/pages/lib/coer-menu/coer-menu.component.ts","../../../projects/coer-elements/pages/lib/coer-menu/coer-menu.component.html","../../../projects/coer-elements/pages/lib/home/home.component.ts","../../../projects/coer-elements/pages/lib/home/home.component.html","../../../projects/coer-elements/pages/lib/coer-loading/loading.component.ts","../../../projects/coer-elements/pages/lib/coer-loading/loading.component.html","../../../projects/coer-elements/pages/lib/coer-system/login/login.component.ts","../../../projects/coer-elements/pages/lib/coer-system/login/login.component.html","../../../projects/coer-elements/pages/lib/coer-system/coer-system.component.ts","../../../projects/coer-elements/pages/lib/coer-system/coer-system.component.html","../../../projects/coer-elements/pages/lib/pages.module.ts","../../../projects/coer-elements/pages/coer-elements-pages.ts"],"sourcesContent":["import { Component, effect, WritableSignal } from '@angular/core'; \r\nimport { Page, Tools } from 'coer-elements/tools'; \r\nimport { menuSelectedSIGNAL } from 'coer-elements/signals';\r\nimport { IMenuSelected } from 'coer-elements/interfaces';\r\n\r\n\r\n@Component({\r\n selector: 'coer-menu-page',\r\n templateUrl: './coer-menu.component.html', \r\n styleUrl: './coer-menu.component.scss',\r\n standalone: false\r\n})\r\nexport class CoerMenuPage extends Page { \r\n \r\n //signals\r\n protected menu: WritableSignal<IMenuSelected | null> = menuSelectedSIGNAL;\r\n\r\n constructor() { \r\n super('coer-menu'); \r\n \r\n effect(() => {\r\n const menu = menuSelectedSIGNAL();\r\n if(Tools.IsNotNull(menu)) this.SetPageFilters({ menu }); \r\n });\r\n } \r\n\r\n\r\n /** */\r\n protected override RunPage() {\r\n if (Tools.IsNotNull(this.pageFilters) && Tools.IsNotNull(this.pageFilters.menu)) { \r\n menuSelectedSIGNAL.set(this.pageFilters.menu); \r\n this.SetPageName(this.pageFilters.menu.label);\r\n } \r\n } \r\n}","<!-- Title -->\r\n<coer-page-title\r\n title=\"Menu\"\r\n [breadcrumbs]=\"breadcrumbs\"\r\n [goBack]=\"goBack\"\r\n></coer-page-title>\r\n\r\n@if(IsNotNull(menu())) {\r\n <div class=\"flex-wrap-left fade-in\">\r\n @for(page of menu()!.items; track page.id) { \r\n <a [routerLink]=\"(page.path!.length > 0) ? page.path : null\" class=\"flex-wrap-item\">\r\n @if(IsNotOnlyWhiteSpace(page?.icon)) {\r\n <i [class]=\"page!.icon\"></i>\r\n }\r\n <span> {{ page.label }} </span>\r\n </a>\r\n }\r\n </div>\r\n}","import { Component } from '@angular/core'; \r\nimport { Page } from 'coer-elements/tools'; \r\n\r\n\r\n@Component({\r\n selector: 'home-page',\r\n templateUrl: './home.component.html', \r\n styleUrl: './home.component.scss',\r\n standalone: false\r\n})\r\nexport class HomePage extends Page { \r\n \r\n constructor() { \r\n super('home'); \r\n }\r\n}","<!-- Title -->\r\n<coer-page-title\r\n title=\"Home\"\r\n [breadcrumbs]=\"breadcrumbs\"\r\n [goBack]=\"goBack\"\r\n></coer-page-title> \r\n\r\n<section class=\"coer-container\"> \r\n</section>","import { Component } from '@angular/core'; \r\n\r\n@Component({\r\n selector: 'loading-page',\r\n templateUrl: './loading.component.html', \r\n styleUrl: './loading.component.scss',\r\n standalone: false\r\n})\r\nexport class LoadingPage { \r\n \r\n}","Loading...","import { Component, input, output, viewChild, WritableSignal } from '@angular/core'; \r\nimport { CoerTextBox } from 'coer-elements/components';\r\nimport { ILogIn } from 'coer-elements/interfaces';\r\nimport { isLoadingSIGNAL } from 'coer-elements/signals';\r\nimport { Tools } from 'coer-elements/tools';\r\n\r\n\r\n@Component({\r\n selector: 'login-page',\r\n templateUrl: './login.component.html', \r\n styleUrl: './login.component.scss',\r\n standalone: false\r\n})\r\nexport class LoginPage { \r\n\r\n //Elements\r\n protected inputUser = viewChild.required<CoerTextBox>('inputUser');\r\n protected inputPassword = viewChild.required<CoerTextBox>('inputPassword');\r\n protected inputRecovery = viewChild.required<CoerTextBox>('inputRecovery');\r\n\r\n //Signals\r\n protected isLoading: WritableSignal<boolean> = isLoadingSIGNAL;\r\n\r\n //Inputs \r\n public title = input<string>(''); \r\n\r\n //Variables\r\n protected user: string = '';\r\n protected password: string = ''; \r\n protected show: 'login' | 'recovery' = 'login';\r\n\r\n //Outputs \r\n public onLogin = output<ILogIn>();\r\n public onRecovery = output<string>();\r\n\r\n //Generic Tools\r\n protected IsNotOnlyWhiteSpace = Tools.IsNotOnlyWhiteSpace; \r\n\r\n //getter\r\n protected get enableButton() {\r\n return Tools.IsNotOnlyWhiteSpace(this.user)\r\n && Tools.IsNotOnlyWhiteSpace(this.password)\r\n && this.password.length >= 6\r\n }\r\n\r\n //getter\r\n protected get enableRecoveryButton() {\r\n return Tools.IsNotOnlyWhiteSpace(this.user) \r\n && this.user.length >= 6\r\n }\r\n\r\n \r\n /** */\r\n protected Login() {\r\n if (this.enableButton) {\r\n this.onLogin.emit({ \r\n user: this.user, \r\n password: this.password \r\n });\r\n } \r\n }\r\n\r\n\r\n /** */\r\n protected Recovery() {\r\n if(this.enableRecoveryButton) {\r\n this.onRecovery.emit(this.user);\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public async Show(view: 'login' | 'recovery') {\r\n this.show = view;\r\n await Tools.Sleep();\r\n\r\n if(view === 'recovery') { \r\n this.inputRecovery().Focus();\r\n }\r\n\r\n else if (view === 'login') {\r\n this.inputUser().Focus();\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public FocusUser() {\r\n this.inputUser().Focus();\r\n }\r\n\r\n\r\n /** */\r\n public FocusPassword() {\r\n this.inputPassword().Select();\r\n }\r\n}","<div class=\"login-container\">\r\n\r\n <!-- Title -->\r\n <div class=\"title\">\r\n {{ title() }}\r\n </div>\r\n \r\n @if(show === 'login') {\r\n <section>\r\n <!-- User -->\r\n <coer-textbox\r\n #inputUser\r\n label=\"User\"\r\n [(ngModel)]=\"user\"\r\n [isLoading]=\"isLoading()\" \r\n marginTop=\"35px\"\r\n marginBottom=\"35px\"\r\n [maxLength]=\"15\"\r\n (onKeyupEnter)=\"inputPassword.Select()\"\r\n ></coer-textbox>\r\n \r\n <!-- Password -->\r\n <coer-textbox\r\n #inputPassword\r\n label=\"Password\"\r\n [(ngModel)]=\"password\"\r\n [isLoading]=\"isLoading()\"\r\n [selectOnFocus]=\"true\"\r\n marginBottom=\"35px\"\r\n [maxLength]=\"20\"\r\n (onKeyupEnter)=\"Login()\"\r\n ></coer-textbox> \r\n \r\n <!-- Login -->\r\n <div class=\"text-center\">\r\n <coer-button\r\n color=\"dark\" \r\n [isDisabled]=\"!enableButton\"\r\n [isLoading]=\"isLoading()\"\r\n (onClick)=\"Login()\"\r\n > Login </coer-button>\r\n </div>\r\n </section>\r\n\r\n <!-- Recover password -->\r\n <div class=\"recover\" (click)=\"Show('recovery')\">\r\n Recover password\r\n </div>\r\n } \r\n\r\n\r\n @if(show === 'recovery') {\r\n <section>\r\n <!-- Recovery -->\r\n <coer-textbox\r\n #inputRecovery\r\n label=\"User / Email\"\r\n [(ngModel)]=\"user\"\r\n [isLoading]=\"isLoading()\" \r\n marginTop=\"35px\"\r\n marginBottom=\"35px\"\r\n [maxLength]=\"15\"\r\n (onKeyupEnter)=\"Recovery()\"\r\n ></coer-textbox> \r\n\r\n\r\n <!-- -->\r\n <coer-textbox [isInvisible]=\"true\"></coer-textbox> \r\n\r\n \r\n <!-- Login -->\r\n <div class=\"text-center\">\r\n <coer-button \r\n color=\"dark\" \r\n [isDisabled]=\"!enableRecoveryButton\"\r\n [isLoading]=\"isLoading()\"\r\n marginTop=\"35px\"\r\n (onClick)=\"Recovery()\"\r\n > Recovery </coer-button>\r\n </div>\r\n </section>\r\n\r\n <!-- Recover password -->\r\n <div class=\"back\" (click)=\"Show('login')\">\r\n Back\r\n </div>\r\n } \r\n</div>\r\n\r\n","import { Component, computed, inject, Input, input, output, signal, viewChild, WritableSignal } from '@angular/core'; \r\nimport { isLoadingSIGNAL, navigationSIGNAL } from 'coer-elements/signals';\r\nimport { IFile, ILogIn, IMenu, IToolbarMenu } from 'coer-elements/interfaces';\r\nimport { CoerButton, CoerModal, CoerSidenav, CoerTextBox } from 'coer-elements/components';\r\nimport { CoerAlert, Menu, Tools, User } from 'coer-elements/tools';\r\nimport { LoginPage } from './login/login.component';\r\n\r\n@Component({\r\n selector: 'coer-system',\r\n templateUrl: './coer-system.component.html', \r\n styleUrl: './coer-system.component.scss', \r\n standalone: false\r\n})\r\nexport class COERSystem { \r\n\r\n //Injection\r\n protected readonly alert = inject(CoerAlert);\r\n\r\n //Elements\r\n protected sidenav = viewChild.required<CoerSidenav>('sidenav');\r\n protected loginPage = viewChild.required<LoginPage>('loginPage'); \r\n protected modalProfile = viewChild.required<CoerModal>('modalProfile');\r\n protected modalPassword = viewChild.required<CoerModal>('modalPassword');\r\n protected inputPassword = viewChild.required<CoerTextBox>('inputPassword');\r\n protected inputPasswordConfirm = viewChild.required<CoerTextBox>('inputPasswordConfirm');\r\n protected resetButton = viewChild.required<CoerButton>('resetButton');\r\n\r\n //Variables\r\n protected readonly title: string = 'COER System'; \r\n protected _isLoading: WritableSignal<boolean> = isLoadingSIGNAL; \r\n protected mainRole: any = null\r\n protected nickname: string = '';\r\n protected password: string = '';\r\n protected passwordConfirm: string = '';\r\n protected _userRoles = signal<any[]>([]); \r\n protected _user = signal<any>(null); \r\n \r\n //Inputs\r\n public appName = input<string>(''); \r\n public userImage = input<string | null>(null); \r\n public toolbarMenu = input<IToolbarMenu[]>([]); \r\n\r\n\r\n @Input() set user(value: any) {\r\n if(Tools.IsNotNull(value)) {\r\n this._user.set(value); \r\n \r\n Tools.Sleep(1000, 'coerSystemGetUser').then(() => { \r\n if (Tools.IsNotOnlyWhiteSpace(this._user()?.nickname)) {\r\n this.nickname = this._user().nickname;\r\n }\r\n }); \r\n } \r\n } \r\n\r\n\r\n @Input() set userRoles(value: any[]) {\r\n if(Tools.IsNotNull(value)) {\r\n this._userRoles.set(value); \r\n \r\n Tools.Sleep(1000, 'coerSystemGetUserRoles').then(() => { \r\n let mainRole: any = null;\r\n\r\n //id & name\r\n if (Tools.IsNull(mainRole)) { \r\n mainRole = this._userRoles().find(\r\n x => (typeof x?.id == 'number') \r\n && (typeof x?.name == 'string') \r\n && x.id === (this._user()?.roleId)\r\n ) || null;\r\n }\r\n \r\n //id & name\r\n if (Tools.IsNull(mainRole)) {\r\n mainRole = this._userRoles().find(\r\n x => (typeof x?.id == 'number') \r\n && (typeof x?.name == 'string') \r\n && x.name === (this._user()?.role)\r\n ) || null;\r\n }\r\n\r\n //roleId & name\r\n if (Tools.IsNull(mainRole)) { \r\n mainRole = this._userRoles().find(\r\n x => (typeof x?.roleId == 'number') \r\n && (typeof x?.name == 'string') \r\n && x.roleId === (this._user()?.roleId)\r\n ) || null;\r\n }\r\n \r\n //roleId & name\r\n if (Tools.IsNull(mainRole)) {\r\n mainRole = this._userRoles().find(\r\n x => (typeof x?.roleId == 'number') \r\n && (typeof x?.name == 'string') \r\n && x.name === (this._user()?.role)\r\n ) || null;\r\n }\r\n\r\n //id & role\r\n if (Tools.IsNull(mainRole)) { \r\n mainRole = this._userRoles().find(\r\n x => (typeof x?.id == 'number') \r\n && (typeof x?.role == 'string') \r\n && x.id === (this._user()?.roleId)\r\n ) || null;\r\n }\r\n \r\n //id & role\r\n if (Tools.IsNull(mainRole)) {\r\n mainRole = this._userRoles().find(\r\n x => (typeof x?.id == 'number') \r\n && (typeof x?.role == 'string') \r\n && x.role === (this._user()?.role)\r\n ) || null;\r\n } \r\n \r\n //roleId & role\r\n if (Tools.IsNull(mainRole)) { \r\n mainRole = this._userRoles().find(\r\n x => (typeof x?.roleId == 'number') \r\n && (typeof x?.role == 'string') \r\n && x.roleId === (this._user()?.roleId)\r\n ) || null;\r\n }\r\n \r\n //roleId & role\r\n if (Tools.IsNull(mainRole)) {\r\n mainRole = this._userRoles().find(\r\n x => (typeof x?.roleId == 'number') \r\n && (typeof x?.role == 'string') \r\n && x.role === (this._user()?.role)\r\n ) || null;\r\n } \r\n\r\n //Response\r\n if (Tools.IsNotNull(mainRole)) {\r\n this.mainRole = mainRole;\r\n }\r\n }); \r\n } \r\n } \r\n\r\n\r\n @Input() set navigation(value: IMenu[]) {\r\n if(Tools.IsNotNull(value)) {\r\n navigationSIGNAL.set(value); \r\n \r\n Tools.Sleep(1000, 'coerSystemGetUserNavigation').then(() => { \r\n if (Tools.IsNotNull(this._user())) {\r\n this.sidenav().SetActiveLink(Menu.GetSelectedOption());\r\n }\r\n }); \r\n } \r\n } \r\n\r\n //Outputs \r\n public onLogin = output<ILogIn>();\r\n public onRecovery = output<string>(); \r\n public onClickOption = output<IToolbarMenu>();\r\n public onResetPassword = output<string>();\r\n public onUpdateProfile = output<any>();\r\n public onUploadUserImage = output<IFile>();\r\n public onDeleteUserImage = output<void>();\r\n\r\n //Generic Tools\r\n protected IsNotNull = Tools.IsNotNull; \r\n protected IsNotOnlyWhiteSpace = Tools.IsNotOnlyWhiteSpace;\r\n\r\n\r\n //getter\r\n protected get enableButton() {\r\n return Tools.IsNotOnlyWhiteSpace(this._user())\r\n && Tools.IsNotOnlyWhiteSpace(this.password)\r\n && Tools.IsNotOnlyWhiteSpace(this.passwordConfirm)\r\n && this.password.length >= 5\r\n && this.passwordConfirm.length >= 5\r\n && !this._isLoading()\r\n && this.password === this.passwordConfirm\r\n }\r\n\r\n\r\n //computed\r\n protected _toolbarMenu = computed<IToolbarMenu[]>(() => {\r\n const menu = [...this.toolbarMenu()] as any[]; \r\n\r\n return [\r\n { label: 'Profile', icon: 'fa-solid fa-user' },\r\n { label: 'Reset Password', icon: 'fa-solid fa-lock' },\r\n { label: 'Log Out', icon: 'fa-solid fa-door-open' }\r\n ].concat(menu); \r\n });\r\n\r\n\r\n //computed\r\n protected userName = computed<string>(() => { \r\n const user = this._user();\r\n\r\n if (Tools.IsNotNull(user)) {\r\n if (Tools.IsNotOnlyWhiteSpace(user?.fullName)) return user?.fullName;\r\n\r\n const name = Tools.IsNotNull(this._user()) && Tools.IsNotOnlyWhiteSpace(this._user()?.name) ? this._user().name : ''; \r\n const firstName = Tools.IsNotNull(this._user()) && Tools.IsNotOnlyWhiteSpace(this._user()?.firstName) ? this._user().firstName : ''; \r\n const middleName = Tools.IsNotNull(this._user()) && Tools.IsNotOnlyWhiteSpace(this._user()?.middleName) ? this._user().middleName : '';\r\n const lastName = Tools.IsNotNull(this._user()) && Tools.IsNotOnlyWhiteSpace(this._user()?.lastName) ? this._user().lastName : ''; \r\n const secondLastName = Tools.IsNotNull(this._user()) && Tools.IsNotOnlyWhiteSpace(this._user()?.secondName) ? this._user().secondLastName : ''; \r\n return `${name} ${firstName} ${middleName} ${lastName} ${secondLastName}`; \r\n }\r\n \r\n return ''; \r\n });\r\n\r\n\r\n /** */\r\n protected async SelectedOption(menu: IToolbarMenu) {\r\n this.onClickOption.emit(menu); \r\n\r\n switch(menu.label) {\r\n case 'Profile': {\r\n this.modalProfile().Open(); \r\n break;\r\n }\r\n\r\n case 'Reset Password': {\r\n this.modalPassword().Open();\r\n await Tools.Sleep(1000);\r\n this.Focus();\r\n break;\r\n }\r\n\r\n case 'Log Out': {\r\n User.LogOut();\r\n break;\r\n } \r\n } \r\n }\r\n\r\n\r\n /** */\r\n public FocusUser() {\r\n this.loginPage().FocusUser();\r\n }\r\n\r\n\r\n /** */\r\n public FocusPassword() {\r\n this.loginPage().FocusPassword();\r\n }\r\n\r\n\r\n /** */\r\n protected Focus() { \r\n if(Tools.IsOnlyWhiteSpace(this.password)) {\r\n this.inputPassword().Focus();\r\n return;\r\n }\r\n\r\n if(Tools.IsOnlyWhiteSpace(this.passwordConfirm)) { \r\n this.inputPasswordConfirm().Focus();\r\n return;\r\n } \r\n \r\n if(this.enableButton) {\r\n this.resetButton().Focus();\r\n } \r\n }\r\n\r\n\r\n /** */\r\n protected ResetPassword() { \r\n if(this.enableButton) {\r\n const password = this.password;\r\n this.onResetPassword.emit(password);\r\n } \r\n }\r\n\r\n\r\n /** */\r\n public CloseModal() {\r\n this.modalPassword().Close(); \r\n this.modalProfile().Close();\r\n }\r\n\r\n\r\n /** */\r\n public async Show(view: 'login' | 'recovery') {\r\n this.loginPage().Show(view);\r\n }\r\n\r\n\r\n /** */\r\n public async UpdateProfile() {\r\n this.onUpdateProfile.emit({ \r\n user: Tools.AvoidNull(this._user()?.user, 'string'), \r\n nickname: Tools.AvoidNull(this.nickname, 'string'),\r\n roleId: Tools.AvoidNull(this.mainRole?.id, 'number'), \r\n role: Tools.AvoidNull(this.mainRole?.name, 'string') \r\n });\r\n }\r\n\r\n\r\n /** */\r\n public UploadImage(images: IFile[]) {\r\n if(images.length > 0) {\r\n const [image] = images; \r\n this.onUploadUserImage.emit(image);\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public async DeleteUserImage() { \r\n const response = await this.alert.Confirm(`Remove <b>User Image</b> ?`, 'warning', 'fa-solid fa-trash-can'); \r\n if(response) this.onDeleteUserImage.emit();\r\n }\r\n}","@if(IsNotNull(_user())) {\r\n <coer-toolbar \r\n [appName]=\"appName()\" \r\n [user]=\"_user()\" \r\n [image]=\"userImage()\" \r\n [menu]=\"_toolbarMenu()\"\r\n (onClickMenu)=\"sidenav.Toggle()\" \r\n (onClickOption)=\"SelectedOption($event)\"\r\n ></coer-toolbar>\r\n \r\n <coer-sidenav #sidenav> \r\n <section> \r\n <ng-content></ng-content>\r\n </section> \r\n </coer-sidenav>\r\n\r\n <!-- Modal Profile -->\r\n <coer-modal #modalProfile [title]=\"userName()\" icon=\"fa-solid fa-user\" width=\"auto\" height=\"350px\" (onClose)=\"null\"> \r\n <coer-filebox\r\n type=\"image\"\r\n [image]=\"{ \r\n value: IsNotOnlyWhiteSpace(userImage()) ? userImage() : '', \r\n name: userName(),\r\n maxWidth: '150px', \r\n maxHeight: '150px', \r\n marginBottom: '15px',\r\n allowExpand: false \r\n }\"\r\n [isLoading]=\"_isLoading()\"\r\n (onSelected)=\"UploadImage($event)\"\r\n (onDeleteImage)=\"DeleteUserImage()\"\r\n ></coer-filebox>\r\n \r\n <div class=\"d-flex\"> \r\n <!-- User --> \r\n <coer-textbox\r\n label=\"User\"\r\n [value]=\"_user()?.user\"\r\n [isReadonly]=\"true\" \r\n marginRight=\"15px\"\r\n marginBottom=\"15px\" \r\n width=\"250px\" \r\n ></coer-textbox> \r\n \r\n <!-- Email --> \r\n <coer-textbox\r\n label=\"Email\"\r\n [value]=\"_user()?.email\"\r\n [isReadonly]=\"true\" \r\n marginBottom=\"15px\"\r\n width=\"250px\" \r\n ></coer-textbox> \r\n </div> \r\n \r\n <div class=\"d-flex\"> \r\n <!-- Nickame --> \r\n <coer-textbox\r\n label=\"Nickame\"\r\n [(ngModel)]=\"nickname\" \r\n [isLoading]=\"_isLoading()\"\r\n marginRight=\"15px\"\r\n marginBottom=\"15px\" \r\n width=\"250px\" \r\n ></coer-textbox> \r\n \r\n <!-- Role --> \r\n <coer-selectbox\r\n label=\"Role\"\r\n [(ngModel)]=\"mainRole\"\r\n [dataSource]=\"_userRoles()\"\r\n [isLoading]=\"_isLoading()\" \r\n marginBottom=\"15px\"\r\n width=\"250px\" \r\n ></coer-selectbox> \r\n </div> \r\n \r\n <ng-template coerRef=\"footer\">\r\n <coer-button\r\n #buttonSave\r\n color=\"dark\"\r\n icon=\"save\"\r\n [isLoading]=\"_isLoading()\"\r\n (onClick)=\"UpdateProfile()\"\r\n > Update </coer-button>\r\n </ng-template>\r\n </coer-modal>\r\n\r\n\r\n <!-- Modal Password -->\r\n <coer-modal #modalPassword title=\"Reset Password\" icon=\"fa-solid fa-lock\" (onClose)=\"password = ''; passwordConfirm = '';\">\r\n <coer-textbox\r\n #inputPassword\r\n label=\"New Password\"\r\n [(ngModel)]=\"password\"\r\n [isLoading]=\"_isLoading()\"\r\n [selectOnFocus]=\"true\"\r\n marginBottom=\"15px\"\r\n (onKeyupEnter)=\"Focus()\"\r\n ></coer-textbox>\r\n\r\n <coer-textbox\r\n #inputPasswordConfirm\r\n label=\"Confirm Password\"\r\n [(ngModel)]=\"passwordConfirm\"\r\n [isLoading]=\"_isLoading()\"\r\n [selectOnFocus]=\"true\" \r\n (onKeyupEnter)=\"Focus()\"\r\n ></coer-textbox>\r\n\r\n <ng-template coerRef=\"footer\">\r\n <!-- Reset Button -->\r\n <coer-button\r\n #resetButton\r\n color=\"dark\" \r\n [isDisabled]=\"!enableButton\"\r\n [isLoading]=\"_isLoading()\" \r\n (onClick)=\"ResetPassword()\"\r\n > Reset </coer-button>\r\n </ng-template>\r\n </coer-modal>\r\n}\r\n\r\n@else {\r\n <login-page \r\n #loginPage\r\n [title]=\"title\" \r\n (onLogin)=\"onLogin.emit($event)\"\r\n (onRecovery)=\"onRecovery.emit($event)\"\r\n ></login-page>\r\n} \r\n\r\n<coer-alert></coer-alert> ","import { NgModule } from '@angular/core'; \r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n//Pages \r\nimport { CoerMenuPage } from './coer-menu/coer-menu.component';\r\nimport { ComponentsModule } from 'coer-elements/components';\r\nimport { DirectivesModule } from 'coer-elements/directives';\r\nimport { HomePage } from './home/home.component';\r\nimport { LoadingPage } from './coer-loading/loading.component';\r\nimport { COERSystem } from './coer-system/coer-system.component';\r\nimport { LoginPage } from './coer-system/login/login.component';\r\nimport { CoerAlert } from 'coer-elements/tools';\r\n\r\nexport const ROUTES: any = [ \r\n { path: 'menu', component: CoerMenuPage, data: { Page: 'COER' }},\r\n { path: 'loading', component: LoadingPage, data: { Page: 'COER' }},\r\n { path: 'home', component: HomePage, data: { Page: 'COER' }},\r\n { path: '**', redirectTo: 'home' } \r\n];\r\n\r\n@NgModule({ \r\n imports: [\r\n CommonModule, \r\n RouterModule, \r\n FormsModule, \r\n ComponentsModule, \r\n DirectivesModule,\r\n CoerAlert\r\n ],\r\n declarations: [\r\n COERSystem,\r\n LoginPage,\r\n CoerMenuPage,\r\n HomePage,\r\n LoadingPage,\r\n ],\r\n exports: [ \r\n COERSystem, \r\n CoerMenuPage,\r\n HomePage,\r\n LoadingPage,\r\n ]\r\n})\r\nexport class PagesModule { }","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i5.LoginPage"],"mappings":"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"}
1
+ {"version":3,"file":"coer-elements-pages.mjs","sources":["../../../projects/coer-elements/pages/lib/coer-menu/coer-menu.component.ts","../../../projects/coer-elements/pages/lib/coer-menu/coer-menu.component.html","../../../projects/coer-elements/pages/lib/home/home.component.ts","../../../projects/coer-elements/pages/lib/home/home.component.html","../../../projects/coer-elements/pages/lib/coer-loading/loading.component.ts","../../../projects/coer-elements/pages/lib/coer-loading/loading.component.html","../../../projects/coer-elements/pages/lib/coer-system/login/login.component.ts","../../../projects/coer-elements/pages/lib/coer-system/login/login.component.html","../../../projects/coer-elements/pages/lib/coer-system/coer-system.component.ts","../../../projects/coer-elements/pages/lib/coer-system/coer-system.component.html","../../../projects/coer-elements/pages/lib/pages.module.ts","../../../projects/coer-elements/pages/coer-elements-pages.ts"],"sourcesContent":["import { Component, effect, WritableSignal } from '@angular/core'; \r\nimport { Page, Tools } from 'coer-elements/tools'; \r\nimport { menuSelectedSIGNAL } from 'coer-elements/signals';\r\nimport { IMenuSelected } from 'coer-elements/interfaces';\r\n\r\n\r\n@Component({\r\n selector: 'coer-menu-page',\r\n templateUrl: './coer-menu.component.html', \r\n styleUrl: './coer-menu.component.scss',\r\n standalone: false\r\n})\r\nexport class CoerMenuPage extends Page { \r\n \r\n //signals\r\n protected menu: WritableSignal<IMenuSelected | null> = menuSelectedSIGNAL;\r\n\r\n constructor() { \r\n super('coer-menu'); \r\n \r\n effect(() => {\r\n const menu = menuSelectedSIGNAL();\r\n if(Tools.IsNotNull(menu)) this.SetPageFilters({ menu }); \r\n });\r\n } \r\n\r\n\r\n /** */\r\n protected override RunPage() {\r\n if (Tools.IsNotNull(this.pageFilters) && Tools.IsNotNull(this.pageFilters.menu)) { \r\n menuSelectedSIGNAL.set(this.pageFilters.menu); \r\n this.SetPageName(this.pageFilters.menu.label);\r\n } \r\n } \r\n}","<!-- Title -->\r\n<coer-page-title\r\n title=\"Menu\"\r\n [breadcrumbs]=\"breadcrumbs\"\r\n [goBack]=\"goBack\"\r\n></coer-page-title>\r\n\r\n@if(IsNotNull(menu())) {\r\n <div class=\"flex-wrap-left fade-in\">\r\n @for(page of menu()!.items; track page.id) { \r\n <a [routerLink]=\"(page.path!.length > 0) ? page.path : null\" class=\"flex-wrap-item\">\r\n @if(IsNotOnlyWhiteSpace(page?.icon)) {\r\n <i [class]=\"page!.icon\"></i>\r\n }\r\n <span> {{ page.label }} </span>\r\n </a>\r\n }\r\n </div>\r\n}","import { Component } from '@angular/core'; \r\nimport { Page } from 'coer-elements/tools'; \r\n\r\n\r\n@Component({\r\n selector: 'home-page',\r\n templateUrl: './home.component.html', \r\n styleUrl: './home.component.scss',\r\n standalone: false\r\n})\r\nexport class HomePage extends Page { \r\n \r\n constructor() { \r\n super('home'); \r\n }\r\n}","<!-- Title -->\r\n<coer-page-title\r\n title=\"Home\"\r\n [breadcrumbs]=\"breadcrumbs\"\r\n [goBack]=\"goBack\"\r\n></coer-page-title> \r\n\r\n<section class=\"coer-container\"> \r\n</section>","import { Component } from '@angular/core'; \r\n\r\n@Component({\r\n selector: 'loading-page',\r\n templateUrl: './loading.component.html', \r\n styleUrl: './loading.component.scss',\r\n standalone: false\r\n})\r\nexport class LoadingPage { \r\n \r\n}","Loading...","import { Component, input, output, viewChild, WritableSignal } from '@angular/core'; \r\nimport { CoerTextBox } from 'coer-elements/components';\r\nimport { ILogIn } from 'coer-elements/interfaces';\r\nimport { isLoadingSIGNAL } from 'coer-elements/signals';\r\nimport { Tools } from 'coer-elements/tools';\r\n\r\n\r\n@Component({\r\n selector: 'login-page',\r\n templateUrl: './login.component.html', \r\n styleUrl: './login.component.scss',\r\n standalone: false\r\n})\r\nexport class LoginPage { \r\n\r\n //Elements\r\n protected inputUser = viewChild.required<CoerTextBox>('inputUser');\r\n protected inputPassword = viewChild.required<CoerTextBox>('inputPassword');\r\n protected inputRecovery = viewChild.required<CoerTextBox>('inputRecovery');\r\n\r\n //Signals\r\n protected isLoading: WritableSignal<boolean> = isLoadingSIGNAL;\r\n\r\n //Inputs \r\n public title = input<string>(''); \r\n\r\n //Variables\r\n protected user: string = '';\r\n protected password: string = ''; \r\n protected show: 'login' | 'recovery' = 'login';\r\n\r\n //Outputs \r\n public onLogin = output<ILogIn>();\r\n public onRecovery = output<string>();\r\n\r\n //Generic Tools\r\n protected IsNotOnlyWhiteSpace = Tools.IsNotOnlyWhiteSpace; \r\n\r\n //getter\r\n protected get enableButton() {\r\n return Tools.IsNotOnlyWhiteSpace(this.user)\r\n && Tools.IsNotOnlyWhiteSpace(this.password)\r\n && this.password.length >= 6\r\n }\r\n\r\n //getter\r\n protected get enableRecoveryButton() {\r\n return Tools.IsNotOnlyWhiteSpace(this.user) \r\n && this.user.length >= 6\r\n }\r\n\r\n \r\n /** */\r\n protected Login() {\r\n if (this.enableButton) {\r\n this.onLogin.emit({ \r\n user: this.user, \r\n password: this.password \r\n });\r\n } \r\n }\r\n\r\n\r\n /** */\r\n protected Recovery() {\r\n if(this.enableRecoveryButton) {\r\n this.onRecovery.emit(this.user);\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public async Show(view: 'login' | 'recovery') {\r\n this.show = view;\r\n await Tools.Sleep();\r\n\r\n if(view === 'recovery') { \r\n this.inputRecovery().Focus();\r\n }\r\n\r\n else if (view === 'login') {\r\n this.inputUser().Focus();\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public FocusUser() {\r\n this.inputUser().Focus();\r\n }\r\n\r\n\r\n /** */\r\n public FocusPassword() {\r\n this.inputPassword().Select();\r\n }\r\n}","<div class=\"login-container\">\r\n\r\n <!-- Title -->\r\n <div class=\"title\">\r\n {{ title() }}\r\n </div>\r\n \r\n @if(show === 'login') {\r\n <section>\r\n <!-- User -->\r\n <coer-textbox\r\n #inputUser\r\n label=\"User\"\r\n [(ngModel)]=\"user\"\r\n [isLoading]=\"isLoading()\" \r\n marginTop=\"35px\"\r\n marginBottom=\"35px\"\r\n [maxLength]=\"15\"\r\n (onKeyupEnter)=\"inputPassword.Select()\"\r\n ></coer-textbox>\r\n \r\n <!-- Password -->\r\n <coer-textbox\r\n #inputPassword\r\n label=\"Password\"\r\n [(ngModel)]=\"password\"\r\n [isLoading]=\"isLoading()\"\r\n [selectOnFocus]=\"true\"\r\n marginBottom=\"35px\"\r\n [maxLength]=\"20\"\r\n (onKeyupEnter)=\"Login()\"\r\n ></coer-textbox> \r\n \r\n <!-- Login -->\r\n <div class=\"text-center\">\r\n <coer-button\r\n color=\"dark\" \r\n [isDisabled]=\"!enableButton\"\r\n [isLoading]=\"isLoading()\"\r\n (onClick)=\"Login()\"\r\n > Login </coer-button>\r\n </div>\r\n </section>\r\n\r\n <!-- Recover password -->\r\n <div class=\"recover\" (click)=\"Show('recovery')\">\r\n Recover password\r\n </div>\r\n } \r\n\r\n\r\n @if(show === 'recovery') {\r\n <section>\r\n <!-- Recovery -->\r\n <coer-textbox\r\n #inputRecovery\r\n label=\"User / Email\"\r\n [(ngModel)]=\"user\"\r\n [isLoading]=\"isLoading()\" \r\n marginTop=\"35px\"\r\n marginBottom=\"35px\"\r\n [maxLength]=\"15\"\r\n (onKeyupEnter)=\"Recovery()\"\r\n ></coer-textbox> \r\n\r\n\r\n <!-- -->\r\n <coer-textbox [isInvisible]=\"true\"></coer-textbox> \r\n\r\n \r\n <!-- Login -->\r\n <div class=\"text-center\">\r\n <coer-button \r\n color=\"dark\" \r\n [isDisabled]=\"!enableRecoveryButton\"\r\n [isLoading]=\"isLoading()\"\r\n marginTop=\"35px\"\r\n (onClick)=\"Recovery()\"\r\n > Recovery </coer-button>\r\n </div>\r\n </section>\r\n\r\n <!-- Recover password -->\r\n <div class=\"back\" (click)=\"Show('login')\">\r\n Back\r\n </div>\r\n } \r\n</div>\r\n\r\n","import { Component, computed, inject, Input, input, output, signal, viewChild, WritableSignal } from '@angular/core'; \r\nimport { isLoadingSIGNAL, navigationSIGNAL } from 'coer-elements/signals';\r\nimport { IFile, ILogIn, IMenu, IToolbarMenu } from 'coer-elements/interfaces';\r\nimport { CoerButton, CoerModal, CoerSidenav, CoerTextBox } from 'coer-elements/components';\r\nimport { CoerAlert, Menu, Tools, User } from 'coer-elements/tools';\r\nimport { LoginPage } from './login/login.component';\r\n\r\n@Component({\r\n selector: 'coer-system',\r\n templateUrl: './coer-system.component.html', \r\n styleUrl: './coer-system.component.scss', \r\n standalone: false\r\n})\r\nexport class COERSystem { \r\n\r\n //Injection\r\n protected readonly alert = inject(CoerAlert);\r\n\r\n //Elements\r\n protected sidenav = viewChild.required<CoerSidenav>('sidenav');\r\n protected loginPage = viewChild.required<LoginPage>('loginPage'); \r\n protected modalProfile = viewChild.required<CoerModal>('modalProfile');\r\n protected modalPassword = viewChild.required<CoerModal>('modalPassword');\r\n protected inputPassword = viewChild.required<CoerTextBox>('inputPassword');\r\n protected inputPasswordConfirm = viewChild.required<CoerTextBox>('inputPasswordConfirm');\r\n protected resetButton = viewChild.required<CoerButton>('resetButton');\r\n\r\n //Variables\r\n protected readonly title: string = 'COER System'; \r\n protected _isLoading: WritableSignal<boolean> = isLoadingSIGNAL; \r\n protected mainRole: any = null\r\n protected nickname: string = '';\r\n protected password: string = '';\r\n protected passwordConfirm: string = '';\r\n protected _userRoles = signal<any[]>([]); \r\n protected _user = signal<any>(null); \r\n \r\n //Inputs\r\n public appName = input<string>(''); \r\n public userImage = input<string | null>(null); \r\n public toolbarMenu = input<IToolbarMenu[]>([]); \r\n\r\n\r\n @Input() set user(value: any) {\r\n if(Tools.IsNotNull(value)) {\r\n this._user.set(value); \r\n \r\n Tools.Sleep(1000, 'coerSystemGetUser').then(() => { \r\n if (Tools.IsNotOnlyWhiteSpace(this._user()?.nickname)) {\r\n this.nickname = this._user().nickname;\r\n }\r\n }); \r\n } \r\n } \r\n\r\n\r\n @Input() set userRoles(value: any[]) {\r\n if(Tools.IsNotNull(value)) {\r\n this._userRoles.set(value); \r\n \r\n Tools.Sleep(1000, 'coerSystemGetUserRoles').then(() => { \r\n let mainRole: any = null;\r\n\r\n //id & name\r\n if (Tools.IsNull(mainRole)) { \r\n mainRole = this._userRoles().find(\r\n x => (typeof x?.id == 'number') \r\n && (typeof x?.name == 'string') \r\n && x.id === (this._user()?.roleId)\r\n ) || null;\r\n }\r\n \r\n //id & name\r\n if (Tools.IsNull(mainRole)) {\r\n mainRole = this._userRoles().find(\r\n x => (typeof x?.id == 'number') \r\n && (typeof x?.name == 'string') \r\n && x.name === (this._user()?.role)\r\n ) || null;\r\n }\r\n\r\n //roleId & name\r\n if (Tools.IsNull(mainRole)) { \r\n mainRole = this._userRoles().find(\r\n x => (typeof x?.roleId == 'number') \r\n && (typeof x?.name == 'string') \r\n && x.roleId === (this._user()?.roleId)\r\n ) || null;\r\n }\r\n \r\n //roleId & name\r\n if (Tools.IsNull(mainRole)) {\r\n mainRole = this._userRoles().find(\r\n x => (typeof x?.roleId == 'number') \r\n && (typeof x?.name == 'string') \r\n && x.name === (this._user()?.role)\r\n ) || null;\r\n }\r\n\r\n //id & role\r\n if (Tools.IsNull(mainRole)) { \r\n mainRole = this._userRoles().find(\r\n x => (typeof x?.id == 'number') \r\n && (typeof x?.role == 'string') \r\n && x.id === (this._user()?.roleId)\r\n ) || null;\r\n }\r\n \r\n //id & role\r\n if (Tools.IsNull(mainRole)) {\r\n mainRole = this._userRoles().find(\r\n x => (typeof x?.id == 'number') \r\n && (typeof x?.role == 'string') \r\n && x.role === (this._user()?.role)\r\n ) || null;\r\n } \r\n \r\n //roleId & role\r\n if (Tools.IsNull(mainRole)) { \r\n mainRole = this._userRoles().find(\r\n x => (typeof x?.roleId == 'number') \r\n && (typeof x?.role == 'string') \r\n && x.roleId === (this._user()?.roleId)\r\n ) || null;\r\n }\r\n \r\n //roleId & role\r\n if (Tools.IsNull(mainRole)) {\r\n mainRole = this._userRoles().find(\r\n x => (typeof x?.roleId == 'number') \r\n && (typeof x?.role == 'string') \r\n && x.role === (this._user()?.role)\r\n ) || null;\r\n } \r\n\r\n //Response\r\n if (Tools.IsNotNull(mainRole)) {\r\n this.mainRole = mainRole;\r\n }\r\n }); \r\n } \r\n } \r\n\r\n\r\n @Input() set navigation(value: IMenu[]) {\r\n if(Tools.IsNotNull(value)) {\r\n navigationSIGNAL.set(value); \r\n \r\n Tools.Sleep(1000, 'coerSystemGetUserNavigation').then(() => { \r\n if (Tools.IsNotNull(this._user())) {\r\n this.sidenav().SetActiveLink(Menu.GetSelectedOption());\r\n }\r\n }); \r\n } \r\n } \r\n\r\n //Outputs \r\n public onLogin = output<ILogIn>();\r\n public onRecovery = output<string>(); \r\n public onClickOption = output<IToolbarMenu>();\r\n public onResetPassword = output<string>();\r\n public onUpdateProfile = output<any>();\r\n public onUploadUserImage = output<IFile>();\r\n public onDeleteUserImage = output<void>();\r\n\r\n //Generic Tools\r\n protected IsNotNull = Tools.IsNotNull; \r\n protected IsNotOnlyWhiteSpace = Tools.IsNotOnlyWhiteSpace;\r\n\r\n\r\n //getter\r\n protected get enableButton() {\r\n return Tools.IsNotOnlyWhiteSpace(this._user())\r\n && Tools.IsNotOnlyWhiteSpace(this.password)\r\n && Tools.IsNotOnlyWhiteSpace(this.passwordConfirm)\r\n && this.password.length >= 5\r\n && this.passwordConfirm.length >= 5\r\n && !this._isLoading()\r\n && this.password === this.passwordConfirm\r\n }\r\n\r\n\r\n //computed\r\n protected _toolbarMenu = computed<IToolbarMenu[]>(() => {\r\n const menu = [...this.toolbarMenu()] as any[]; \r\n\r\n return [\r\n { label: 'Profile', icon: 'fa-solid fa-user' },\r\n { label: 'Reset Password', icon: 'fa-solid fa-lock' },\r\n { label: 'Log Out', icon: 'fa-solid fa-door-open' }\r\n ].concat(menu); \r\n });\r\n\r\n\r\n //computed\r\n protected userName = computed<string>(() => { \r\n const user = this._user();\r\n\r\n if (Tools.IsNotNull(user)) {\r\n if (Tools.IsNotOnlyWhiteSpace(user?.fullName)) return user?.fullName;\r\n\r\n const name = Tools.IsNotNull(this._user()) && Tools.IsNotOnlyWhiteSpace(this._user()?.name) ? this._user().name : ''; \r\n const firstName = Tools.IsNotNull(this._user()) && Tools.IsNotOnlyWhiteSpace(this._user()?.firstName) ? this._user().firstName : ''; \r\n const middleName = Tools.IsNotNull(this._user()) && Tools.IsNotOnlyWhiteSpace(this._user()?.middleName) ? this._user().middleName : '';\r\n const lastName = Tools.IsNotNull(this._user()) && Tools.IsNotOnlyWhiteSpace(this._user()?.lastName) ? this._user().lastName : ''; \r\n const secondLastName = Tools.IsNotNull(this._user()) && Tools.IsNotOnlyWhiteSpace(this._user()?.secondName) ? this._user().secondLastName : ''; \r\n return `${name} ${firstName} ${middleName} ${lastName} ${secondLastName}`; \r\n }\r\n \r\n return ''; \r\n });\r\n\r\n\r\n /** */\r\n protected async SelectedOption(menu: IToolbarMenu) {\r\n this.onClickOption.emit(menu); \r\n\r\n switch(menu.label) {\r\n case 'Profile': {\r\n this.modalProfile().Open(); \r\n break;\r\n }\r\n\r\n case 'Reset Password': {\r\n this.modalPassword().Open();\r\n await Tools.Sleep(1000);\r\n this.Focus();\r\n break;\r\n }\r\n\r\n case 'Log Out': {\r\n User.LogOut();\r\n break;\r\n } \r\n } \r\n }\r\n\r\n\r\n /** */\r\n public FocusUser() {\r\n this.loginPage().FocusUser();\r\n }\r\n\r\n\r\n /** */\r\n public FocusPassword() {\r\n this.loginPage().FocusPassword();\r\n }\r\n\r\n\r\n /** */\r\n protected Focus() { \r\n if(Tools.IsOnlyWhiteSpace(this.password)) {\r\n this.inputPassword().Focus();\r\n return;\r\n }\r\n\r\n if(Tools.IsOnlyWhiteSpace(this.passwordConfirm)) { \r\n this.inputPasswordConfirm().Focus();\r\n return;\r\n } \r\n \r\n if(this.enableButton) {\r\n this.resetButton().Focus();\r\n } \r\n }\r\n\r\n\r\n /** */\r\n protected ResetPassword() { \r\n if(this.enableButton) {\r\n const password = this.password;\r\n this.onResetPassword.emit(password);\r\n } \r\n }\r\n\r\n\r\n /** */\r\n public CloseModal() {\r\n this.modalPassword().Close(); \r\n this.modalProfile().Close();\r\n }\r\n\r\n\r\n /** */\r\n public async Show(view: 'login' | 'recovery') {\r\n this.loginPage().Show(view);\r\n }\r\n\r\n\r\n /** */\r\n public async UpdateProfile() {\r\n this.onUpdateProfile.emit({ \r\n user: Tools.AvoidNull(this._user()?.user, 'string'), \r\n nickname: Tools.AvoidNull(this.nickname, 'string'),\r\n roleId: Tools.AvoidNull(this.mainRole?.id, 'number'), \r\n role: Tools.AvoidNull(this.mainRole?.name, 'string') \r\n });\r\n }\r\n\r\n\r\n /** */\r\n public UploadImage(images: IFile[]) {\r\n if(images.length > 0) {\r\n const [image] = images; \r\n this.onUploadUserImage.emit(image);\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public async DeleteUserImage() { \r\n const response = await this.alert.Confirm(`Remove <b>User Image</b> ?`, 'warning', 'fa-solid fa-trash-can'); \r\n if(response) this.onDeleteUserImage.emit();\r\n }\r\n}","@if(IsNotNull(_user())) {\r\n <coer-toolbar \r\n [appName]=\"appName()\" \r\n [user]=\"_user()\" \r\n [image]=\"userImage()\" \r\n [menu]=\"_toolbarMenu()\"\r\n (onClickMenu)=\"sidenav.Toggle()\" \r\n (onClickOption)=\"SelectedOption($event)\"\r\n ></coer-toolbar>\r\n \r\n <coer-sidenav #sidenav> \r\n <section> \r\n <ng-content></ng-content>\r\n </section> \r\n </coer-sidenav>\r\n\r\n <!-- Modal Profile -->\r\n <coer-modal #modalProfile [title]=\"userName()\" icon=\"fa-solid fa-user\" width=\"auto\" height=\"350px\" (onClose)=\"null\"> \r\n <coer-filebox\r\n type=\"image\"\r\n [image]=\"{ \r\n value: IsNotOnlyWhiteSpace(userImage()) ? userImage() : '', \r\n name: userName(),\r\n maxWidth: '150px', \r\n maxHeight: '150px', \r\n marginBottom: '15px',\r\n allowExpand: false \r\n }\"\r\n [isLoading]=\"_isLoading()\"\r\n (onSelected)=\"UploadImage($event)\"\r\n (onDeleteImage)=\"DeleteUserImage()\"\r\n ></coer-filebox>\r\n \r\n <div class=\"d-flex\"> \r\n <!-- User --> \r\n <coer-textbox\r\n label=\"User\"\r\n [value]=\"_user()?.user\"\r\n [isReadonly]=\"true\" \r\n marginRight=\"15px\"\r\n marginBottom=\"15px\" \r\n width=\"250px\" \r\n ></coer-textbox> \r\n \r\n <!-- Email --> \r\n <coer-textbox\r\n label=\"Email\"\r\n [value]=\"_user()?.email\"\r\n [isReadonly]=\"true\" \r\n marginBottom=\"15px\"\r\n width=\"250px\" \r\n ></coer-textbox> \r\n </div> \r\n \r\n <div class=\"d-flex\"> \r\n <!-- Nickame --> \r\n <coer-textbox\r\n label=\"Nickame\"\r\n [(ngModel)]=\"nickname\" \r\n [isLoading]=\"_isLoading()\"\r\n marginRight=\"15px\"\r\n marginBottom=\"15px\" \r\n width=\"250px\" \r\n ></coer-textbox> \r\n \r\n <!-- Role --> \r\n <coer-selectbox\r\n label=\"Role\"\r\n [(ngModel)]=\"mainRole\"\r\n [dataSource]=\"_userRoles()\"\r\n [isLoading]=\"_isLoading()\" \r\n marginBottom=\"15px\"\r\n width=\"250px\" \r\n ></coer-selectbox> \r\n </div> \r\n \r\n <ng-template coerRef=\"footer\">\r\n <coer-button\r\n #buttonSave\r\n color=\"dark\"\r\n icon=\"save\"\r\n [isLoading]=\"_isLoading()\"\r\n (onClick)=\"UpdateProfile()\"\r\n > Update </coer-button>\r\n </ng-template>\r\n </coer-modal>\r\n\r\n\r\n <!-- Modal Password -->\r\n <coer-modal #modalPassword title=\"Reset Password\" icon=\"fa-solid fa-lock\" (onClose)=\"password = ''; passwordConfirm = '';\">\r\n <coer-textbox\r\n #inputPassword\r\n label=\"New Password\"\r\n [(ngModel)]=\"password\"\r\n [isLoading]=\"_isLoading()\"\r\n [selectOnFocus]=\"true\"\r\n marginBottom=\"15px\"\r\n (onKeyupEnter)=\"Focus()\"\r\n ></coer-textbox>\r\n\r\n <coer-textbox\r\n #inputPasswordConfirm\r\n label=\"Confirm Password\"\r\n [(ngModel)]=\"passwordConfirm\"\r\n [isLoading]=\"_isLoading()\"\r\n [selectOnFocus]=\"true\" \r\n (onKeyupEnter)=\"Focus()\"\r\n ></coer-textbox>\r\n\r\n <ng-template coerRef=\"footer\">\r\n <!-- Reset Button -->\r\n <coer-button\r\n #resetButton\r\n color=\"dark\" \r\n [isDisabled]=\"!enableButton\"\r\n [isLoading]=\"_isLoading()\" \r\n (onClick)=\"ResetPassword()\"\r\n > Reset </coer-button>\r\n </ng-template>\r\n </coer-modal>\r\n}\r\n\r\n@else {\r\n <login-page \r\n #loginPage\r\n [title]=\"title\" \r\n (onLogin)=\"onLogin.emit($event)\"\r\n (onRecovery)=\"onRecovery.emit($event)\"\r\n ></login-page>\r\n} \r\n\r\n<coer-alert></coer-alert> ","import { NgModule } from '@angular/core'; \r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n//Pages \r\nimport { CoerMenuPage } from './coer-menu/coer-menu.component';\r\nimport { ComponentsModule } from 'coer-elements/components';\r\nimport { DirectivesModule } from 'coer-elements/directives';\r\nimport { HomePage } from './home/home.component';\r\nimport { LoadingPage } from './coer-loading/loading.component';\r\nimport { COERSystem } from './coer-system/coer-system.component';\r\nimport { LoginPage } from './coer-system/login/login.component';\r\nimport { CoerAlert } from 'coer-elements/tools';\r\n\r\nexport const ROUTES: any = [ \r\n { path: 'menu', component: CoerMenuPage, data: { Page: 'COER' }},\r\n { path: 'loading', component: LoadingPage, data: { Page: 'COER' }},\r\n { path: 'home', component: HomePage, data: { Page: 'COER' }},\r\n { path: '**', redirectTo: 'home' } \r\n];\r\n\r\n@NgModule({ \r\n imports: [\r\n CommonModule, \r\n RouterModule, \r\n FormsModule, \r\n ComponentsModule, \r\n DirectivesModule,\r\n CoerAlert\r\n ],\r\n declarations: [\r\n COERSystem,\r\n LoginPage,\r\n CoerMenuPage,\r\n HomePage,\r\n LoadingPage,\r\n ],\r\n exports: [ \r\n COERSystem, \r\n CoerMenuPage,\r\n HomePage,\r\n LoadingPage,\r\n ]\r\n})\r\nexport class PagesModule { }","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i5.LoginPage"],"mappings":"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"}