coer-elements 1.0.6 → 1.0.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,84 @@
1
+ import { IAppSource } from "../interfaces";
2
+ import { Tools } from './Tools';
3
+
4
+ export class Breadcrumbs {
5
+
6
+ private static readonly storage = 'COER-System';
7
+
8
+ /** */
9
+ public static Add(page: string, path: string): void {
10
+ const breadcrumbs = this.Get();
11
+ const paths = breadcrumbs.map(item => item.path);
12
+
13
+ if (!paths.includes(path)) {
14
+ breadcrumbs.push({ page, path });
15
+ this.Save(breadcrumbs);
16
+ }
17
+ }
18
+
19
+
20
+ /** */
21
+ public static Get(): IAppSource[] {
22
+ let storage = sessionStorage.getItem(this.storage) as any;
23
+
24
+ if (storage) {
25
+ storage = JSON.parse(storage);
26
+
27
+ if (storage.hasOwnProperty('breadcrumbs')) {
28
+ return Tools.BreakReference(storage.breadcrumbs);
29
+ }
30
+ }
31
+
32
+ return [];
33
+ }
34
+
35
+
36
+ /** Source */
37
+ public static GetFirst(): IAppSource | null {
38
+ const breadcrumbs = this.Get();
39
+ return (breadcrumbs.length > 0) ? breadcrumbs.shift()! : null;
40
+ }
41
+
42
+
43
+ /** */
44
+ public static Save(breadcrumbs: IAppSource[]): void {
45
+ let storage = sessionStorage.getItem(this.storage) as any;
46
+ if (storage) storage = JSON.parse(storage);
47
+ storage = Object.assign({}, storage, { breadcrumbs });
48
+ sessionStorage.setItem(this.storage, JSON.stringify(storage));
49
+ }
50
+
51
+
52
+ /** */
53
+ public static Remove(path: string): void {
54
+ let breadcrumbs = this.Get();
55
+ const index = breadcrumbs.findIndex(x => x.path.toLowerCase().trim() === path.toLowerCase().trim());
56
+
57
+ if (index >= 0) {
58
+ breadcrumbs = Tools.BreakReference(breadcrumbs).splice(0, index + 1);
59
+ this.Save(breadcrumbs);
60
+ }
61
+ }
62
+
63
+
64
+ /** */
65
+ public static SetLast(page: string, path: string): void {
66
+ const breadcrumbs = this.Get();
67
+
68
+ if (breadcrumbs.length > 0) {
69
+ breadcrumbs[breadcrumbs.length - 1] = { page, path };
70
+ this.Save(breadcrumbs);
71
+ }
72
+ }
73
+
74
+
75
+ /** */
76
+ public static RemoveLast(): void {
77
+ const breadcrumbs = this.Get();
78
+
79
+ if (breadcrumbs.length > 0) {
80
+ breadcrumbs.pop();
81
+ this.Save(breadcrumbs);
82
+ }
83
+ }
84
+ }
@@ -0,0 +1,63 @@
1
+ import { ControlValueAccessor, NG_VALUE_ACCESSOR } from "@angular/forms";
2
+ import { forwardRef } from "@angular/core";
3
+
4
+ export const CONTROL_VALUE = <T>(component: T) => {
5
+ return {
6
+ provide: NG_VALUE_ACCESSOR,
7
+ useExisting: forwardRef(() => component),
8
+ multi: true
9
+ }
10
+ }
11
+
12
+
13
+ export class ControlValue implements ControlValueAccessor {
14
+
15
+ //Variables
16
+ protected _value: any;
17
+ private _isTouched: boolean = false;
18
+ protected _UpdateValue!: Function;
19
+ private _IsTouched!: Function;
20
+
21
+
22
+ public get isTouched() {
23
+ return this._isTouched;
24
+ }
25
+
26
+
27
+ /** */
28
+ protected SetValue(value: any): void {
29
+ if(typeof this._UpdateValue === 'function') {
30
+ this._UpdateValue(value);
31
+ }
32
+
33
+ this._value = value;
34
+ }
35
+
36
+
37
+ /** */
38
+ public SetTouched(isTouched: boolean): void {
39
+ if(typeof this._IsTouched === 'function') {
40
+ this._IsTouched(isTouched);
41
+ }
42
+
43
+ this._isTouched = isTouched;
44
+ }
45
+
46
+
47
+ /** */
48
+ public writeValue(value: any): void {
49
+ this._value = value;
50
+ }
51
+
52
+
53
+ /** */
54
+ public registerOnChange(callback: Function): void {
55
+ this._UpdateValue = callback;
56
+ }
57
+
58
+
59
+ /** */
60
+ public registerOnTouched(callback: Function): void {
61
+ this._IsTouched = callback;
62
+ }
63
+ }
@@ -1,4 +1,4 @@
1
- import { Tools } from ".";
1
+ import { Tools } from "./Tools";
2
2
  import * as XLSX from 'xlsx';
3
3
 
4
4
  export class Files {
@@ -0,0 +1,187 @@
1
+ import { AfterViewInit, Component, Inject, inject, OnDestroy } from '@angular/core';
2
+ import { Breadcrumbs } from "./Breadcrumbs.class";
3
+ import { Source } from './Source.class';
4
+ //import { CoerAlert } from 'src/app/shared/components/coer-alert/coer-alert.component';
5
+ import { IAppSource, IBreadcrumb, IGoBack } from '../interfaces';
6
+ import { ActivatedRoute, Router } from '@angular/router';
7
+ import { Tools } from './Tools';
8
+
9
+ @Component({ template: '' })
10
+ export class Page implements AfterViewInit, OnDestroy {
11
+
12
+ //Injection
13
+ //protected readonly alert = inject(CoerAlert);
14
+ protected readonly router = inject(Router);
15
+ private readonly activatedRoute = inject(ActivatedRoute);
16
+
17
+ /** */
18
+ protected isUpdate: boolean = false;
19
+
20
+ /** */
21
+ protected isLoading: boolean = false;
22
+
23
+ /** */
24
+ protected isReady: boolean = false;
25
+
26
+ /** */
27
+ protected isReadyAnimations: boolean = false;
28
+
29
+ /** */
30
+ protected routeParams: any;
31
+
32
+ /** */
33
+ protected queryParams: any;
34
+
35
+ /** */
36
+ protected breadcrumbs: IBreadcrumb[] = [];
37
+
38
+ /** */
39
+ protected pageResponse: any = null;
40
+
41
+ /** */
42
+ protected goBack: IGoBack = { show: false };
43
+
44
+ //Private Variables
45
+ private _page: string = '';
46
+ private _source: IAppSource | null = null;
47
+ private _preventDestroy: boolean = false;
48
+
49
+
50
+ constructor(@Inject(String) page: string) {
51
+ this.SetPageName(page);
52
+ this.SetSource();
53
+ this.GetSource();
54
+ this.GetNavigation();
55
+ this.SetGoBack();
56
+ this.GetPageResponse();
57
+ }
58
+
59
+ ngAfterViewInit() {
60
+ this.routeParams = this.activatedRoute.snapshot.params;
61
+ this.queryParams = this.activatedRoute.snapshot.queryParams;
62
+
63
+ setTimeout(() => {
64
+ this.isReady = true;
65
+ this.RunPage();
66
+ setTimeout(() => { this.isReadyAnimations = true }, 1000);
67
+ });
68
+
69
+ }
70
+
71
+ ngOnDestroy() {
72
+ if (!this._preventDestroy) Source.ClearPageResponse();
73
+ }
74
+
75
+ /** Main method. Starts after ngAfterViewInit() */
76
+ protected RunPage(): void {};
77
+
78
+
79
+ /** Rename the last breadcrumb and update the url id */
80
+ protected SetPageName(name: string, id: string | number | null = null): void {
81
+ this._page = name;
82
+
83
+ let path = this.router.url;
84
+ if (path.includes('?')) path = path.split('?')[0];
85
+
86
+ if (id) {
87
+ const PATH_ARRAY = path.split('/');
88
+ const PATH_ID = Tools.BreakReference(PATH_ARRAY).pop();
89
+ if (PATH_ID) {
90
+ PATH_ARRAY[PATH_ARRAY.length - 1] = String(id);
91
+ path = PATH_ARRAY.join('/');
92
+ }
93
+ }
94
+
95
+ if (this.breadcrumbs.length > 0) {
96
+ this.breadcrumbs[this.breadcrumbs.length - 1].page = name;
97
+ this.breadcrumbs[this.breadcrumbs.length - 1].path = path;
98
+ Breadcrumbs.SetLast(name, path);
99
+ }
100
+
101
+ this.router.navigateByUrl(path)
102
+ }
103
+
104
+
105
+ /** */
106
+ private SetSource(): void {
107
+ Source.Set(this._page);
108
+ }
109
+
110
+
111
+ /** */
112
+ private GetSource(): void {
113
+ this._source = Source.Get();
114
+ }
115
+
116
+
117
+ /** */
118
+ protected GetPageResponse(): void {
119
+ this.pageResponse = Source.GetPageResponse();
120
+ }
121
+
122
+
123
+ /** */
124
+ private GetNavigation(): void {
125
+ if (this._source) {
126
+ this.breadcrumbs = Breadcrumbs.Get().map(item => Object.assign({
127
+ page: item.page,
128
+ path: item.path,
129
+ click: this.GoBack(item.path)
130
+ }));
131
+ }
132
+
133
+ else this.breadcrumbs = [{ page: this._page }];
134
+ }
135
+
136
+
137
+ /** */
138
+ private SetGoBack(): void {
139
+ if (this._source) {
140
+ this.goBack = {
141
+ show: true,
142
+ path: this._source.path,
143
+ click: this.GoBack()
144
+ };
145
+ }
146
+ }
147
+
148
+
149
+ /** */
150
+ private GoBack = (path?: string) => (() => {
151
+ if (path) Breadcrumbs.Remove(path);
152
+ else Breadcrumbs.RemoveLast();
153
+ });
154
+
155
+
156
+ /** Navigate to previous page */
157
+ protected GoToSource<T>(pageResponse: T | null = null): void {
158
+ if(this._source) {
159
+ Breadcrumbs.RemoveLast();
160
+ this.SetPageResponse(pageResponse);
161
+ Tools.Sleep().then(_ => this.router.navigateByUrl(this._source!.path));
162
+ }
163
+ };
164
+
165
+
166
+ /** */
167
+ protected SetPageResponse<T>(pageResponse: T | null = null): void {
168
+ if (Tools.IsNotNull(pageResponse)) {
169
+ this._preventDestroy = true;
170
+ Source.SetPageResponse(pageResponse);
171
+ }
172
+ };
173
+
174
+
175
+ /** */
176
+ protected ReloadPage(): void {
177
+ Breadcrumbs.RemoveLast();
178
+ Tools.Sleep().then(_ => window.location.reload());
179
+ }
180
+
181
+
182
+ /** */
183
+ protected Log(value: any, log: string | null = null): void {
184
+ if (Tools.IsNotNull(log)) console.log({ log, value });
185
+ else console.log(value);
186
+ }
187
+ }
@@ -1,4 +1,4 @@
1
- import { IScreenSize } from "interfaces";
1
+ import { IScreenSize } from "../interfaces";
2
2
  import { Observable } from "rxjs";
3
3
 
4
4
  export class Screen {
@@ -0,0 +1,107 @@
1
+ import { Breadcrumbs } from "./Breadcrumbs.class";
2
+ import { IAppSource } from '../interfaces';
3
+ import { Router } from '@angular/router';
4
+ import { inject } from "@angular/core";
5
+ import { Tools } from './Tools';
6
+
7
+ export class Source {
8
+
9
+ private static readonly storage = 'COER-System';
10
+
11
+ /** */
12
+ public static Set(page: string): void {
13
+ const ROUTER = inject(Router);
14
+
15
+ let path = ROUTER.url;
16
+ if (path.includes('?')) path = path.split('?')[0];
17
+
18
+ Breadcrumbs.Add(page, path);
19
+
20
+ const breadcrumbs = Breadcrumbs.Get();
21
+
22
+ if(breadcrumbs.length >= 2) {
23
+ breadcrumbs.pop();
24
+ const breadcrumb = breadcrumbs.pop()!;
25
+ this.Save({ page: breadcrumb.page, path: breadcrumb.path });
26
+ }
27
+
28
+ else this.Save(null);
29
+ }
30
+
31
+
32
+ /** */
33
+ private static Save(source: IAppSource | null): void {
34
+ let storage = sessionStorage.getItem(this.storage) as any;
35
+ if (storage) storage = JSON.parse(storage);
36
+ storage = Object.assign({}, storage, { source });
37
+ sessionStorage.setItem(this.storage, JSON.stringify(storage));
38
+ }
39
+
40
+
41
+ /** */
42
+ public static Get(): IAppSource | null {
43
+ let storage = sessionStorage.getItem(this.storage) as any;
44
+
45
+ if (storage) {
46
+ storage = JSON.parse(storage);
47
+
48
+ if (storage.hasOwnProperty('source')) {
49
+ return storage.source;
50
+ }
51
+ }
52
+
53
+ return null;
54
+ }
55
+
56
+
57
+ /** */
58
+ public static GetRoot(): IAppSource | null {
59
+ const breadcrumbs = Breadcrumbs.Get();
60
+ return (breadcrumbs.length > 0) ? breadcrumbs.shift()! : null;
61
+ }
62
+
63
+
64
+ /** */
65
+ public static SetPageResponse<T>(pageResponse: T): void {
66
+ let storage = sessionStorage.getItem(this.storage) as any;
67
+ storage = JSON.parse(storage);
68
+ storage = Object.assign({}, storage, { pageResponse });
69
+ sessionStorage.setItem(this.storage, JSON.stringify(storage));
70
+ }
71
+
72
+
73
+ /** */
74
+ public static GetPageResponse<T>(): T | null {
75
+ let storage = sessionStorage.getItem(this.storage) as any;
76
+
77
+ if (storage) {
78
+ storage = JSON.parse(storage);
79
+
80
+ if (storage.hasOwnProperty('pageResponse')) {
81
+ return Tools.BreakReference(storage.pageResponse);
82
+ }
83
+ }
84
+
85
+ return null;
86
+ }
87
+
88
+
89
+ /** */
90
+ public static ClearPageResponse(): void {
91
+ let storage = sessionStorage.getItem(this.storage) as any;
92
+ storage = JSON.parse(storage);
93
+
94
+ if (storage.hasOwnProperty('pageResponse')) {
95
+ delete storage.pageResponse;
96
+ }
97
+
98
+ storage = Object.assign({}, storage);
99
+ sessionStorage.setItem(this.storage, JSON.stringify(storage));
100
+ }
101
+
102
+
103
+ /** Clear Source */
104
+ public static Reset(): void {
105
+ sessionStorage.removeItem(this.storage);
106
+ }
107
+ }
@@ -1,4 +1,4 @@
1
- import { Tools } from ".";
1
+ import { Tools } from "./Tools";
2
2
  import * as XLSX from 'xlsx';
3
3
  var Files = /** @class */ (function () {
4
4
  function Files() {
@@ -0,0 +1,227 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
13
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
14
+ if (ar || !(i in from)) {
15
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
16
+ ar[i] = from[i];
17
+ }
18
+ }
19
+ return to.concat(ar || Array.prototype.slice.call(from));
20
+ };
21
+ import { Guid } from "guid-typescript";
22
+ import { signal } from "@angular/core";
23
+ var reference_signal = signal({});
24
+ export var Tools = {
25
+ /** Generate a Guid */
26
+ GetGuid: function (seed) {
27
+ if (seed === void 0) { seed = 'coer-system'; }
28
+ return "".concat(seed, "-").concat(Guid.create().toString());
29
+ },
30
+ /** Returns true if the value is null or undefined, false otherwise */
31
+ IsNull: function (value) {
32
+ if (value === undefined)
33
+ return true;
34
+ if (value === null)
35
+ return true;
36
+ return false;
37
+ },
38
+ /** Returns true if the value is not null or undefined, false otherwise */
39
+ IsNotNull: function (value) {
40
+ if (value === undefined)
41
+ return false;
42
+ if (value === null)
43
+ return false;
44
+ return true;
45
+ },
46
+ /** Returns true if the value is null or undefined or contains only whitespace, false otherwise */
47
+ IsOnlyWhiteSpace: function (value) {
48
+ if (value === undefined)
49
+ return true;
50
+ if (value === null)
51
+ return true;
52
+ if (value.toString().trim() === '')
53
+ return true;
54
+ return false;
55
+ },
56
+ /** Break reference of a object or array */
57
+ BreakReference: function (object) {
58
+ if (object === undefined)
59
+ return undefined;
60
+ if (object === null)
61
+ return null;
62
+ var OBJECT = JSON.parse(JSON.stringify(object));
63
+ return (Array.isArray(OBJECT)) ? __spreadArray([], OBJECT, true) : __assign({}, OBJECT);
64
+ },
65
+ /** Clean extra whitespaces */
66
+ CleanUpBlanks: function (text) {
67
+ if (Tools.IsNull(text))
68
+ return '';
69
+ var worlds = String(text).split(' ');
70
+ worlds = worlds.filter(function (x) { return x.length > 0; });
71
+ return worlds.join(' ');
72
+ },
73
+ /** Get properties of an object */
74
+ GetObjectProperties: function (obj) {
75
+ var properties = [];
76
+ if (Tools.IsNull(obj))
77
+ return properties;
78
+ for (var property in obj)
79
+ properties.push(String(property));
80
+ return properties;
81
+ },
82
+ /**
83
+ * Set an index and merge more arrays of the same type
84
+ * @returns A new array
85
+ * */
86
+ SetIndex: function (array) {
87
+ var args = [];
88
+ for (var _i = 1; _i < arguments.length; _i++) {
89
+ args[_i - 1] = arguments[_i];
90
+ }
91
+ var index = 0;
92
+ for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {
93
+ var arg = args_1[_a];
94
+ array = Tools.BreakReference(array).concat(Tools.BreakReference(arg));
95
+ }
96
+ return Tools.BreakReference(array).map(function (item) { return Object.assign({ index: index++ }, item); });
97
+ },
98
+ /** Set First Char To Lower */
99
+ FirstCharToLower: function (text) {
100
+ if (Tools.IsNull(text))
101
+ return '';
102
+ var textArray = [];
103
+ for (var i = 0; i < text.length; i++) {
104
+ if (i === 0)
105
+ textArray.push(text[i].toLowerCase());
106
+ else
107
+ textArray.push(text[i]);
108
+ }
109
+ return textArray.join('');
110
+ },
111
+ /** Set First Char To Upper */
112
+ FirstCharToUpper: function (text) {
113
+ if (Tools.IsNull(text))
114
+ return '';
115
+ var textArray = [];
116
+ for (var i = 0; i < text.length; i++) {
117
+ if (i === 0)
118
+ textArray.push(text[i].toUpperCase());
119
+ else
120
+ textArray.push(text[i]);
121
+ }
122
+ return textArray.join('');
123
+ },
124
+ /** Sort an array in ascending order by property */
125
+ SortBy: function (array, property, propertyType) {
126
+ if (propertyType === void 0) { propertyType = 'string'; }
127
+ switch (propertyType) {
128
+ case 'string': {
129
+ return array.sort(function (x, y) {
130
+ if (String(x[property]).toUpperCase().trim() < String(y[property]).toUpperCase().trim())
131
+ return -1;
132
+ else if (String(x[property]).toUpperCase().trim() > String(y[property]).toUpperCase().trim())
133
+ return 1;
134
+ else
135
+ return 0;
136
+ });
137
+ }
138
+ case 'number': {
139
+ return array.sort(function (x, y) { return Number(x[property] - Number(y[property])); });
140
+ }
141
+ }
142
+ },
143
+ /** Sort an array in descending order by property */
144
+ SortByDesc: function (array, property, propertyType) {
145
+ if (propertyType === void 0) { propertyType = 'string'; }
146
+ switch (propertyType) {
147
+ case 'string': {
148
+ return array.sort(function (x, y) {
149
+ if (String(x[property]).toUpperCase().trim() < String(y[property]).toUpperCase().trim())
150
+ return 1;
151
+ else if (String(x[property]).toUpperCase().trim() > String(y[property]).toUpperCase().trim())
152
+ return -1;
153
+ else
154
+ return 0;
155
+ });
156
+ }
157
+ case 'number': {
158
+ return array.sort(function (x, y) { return Number(Number(y[property])) - x[property]; });
159
+ }
160
+ }
161
+ },
162
+ /** Return a string with forman numeric */
163
+ GetNumericFormat: function (value, decimals) {
164
+ if (decimals === void 0) { decimals = 0; }
165
+ if (value == undefined
166
+ || value == null
167
+ || value.toString().trim() == ''
168
+ || isNaN(Number(value))) {
169
+ return '0';
170
+ }
171
+ var valueInteger = '';
172
+ var valueDecimal = '';
173
+ value = value.toString().replaceAll(' ', '');
174
+ if (value.includes('.') || (decimals > 0)) {
175
+ valueInteger = value.includes('.') ? value.split('.')[0] : value;
176
+ if (decimals > 0) {
177
+ var PADDING = decimals - valueDecimal.length;
178
+ valueDecimal = value.includes('.') ? value.split('.')[1] : '';
179
+ for (var i = 0; i < PADDING; i++)
180
+ valueDecimal += '0';
181
+ valueDecimal = valueDecimal.substring(0, decimals);
182
+ valueDecimal = ".".concat(valueDecimal);
183
+ }
184
+ }
185
+ else {
186
+ valueInteger = value;
187
+ }
188
+ var counter = 0;
189
+ var VALUE_INTEGER_ARRAY = [];
190
+ for (var _i = 0, _a = valueInteger.split('').reverse(); _i < _a.length; _i++) {
191
+ var char = _a[_i];
192
+ if (counter == 3) {
193
+ VALUE_INTEGER_ARRAY.push(',');
194
+ counter = 0;
195
+ }
196
+ VALUE_INTEGER_ARRAY.push(char);
197
+ ++counter;
198
+ }
199
+ valueInteger = VALUE_INTEGER_ARRAY.reverse().join('');
200
+ return "".concat(valueInteger).concat(valueDecimal);
201
+ },
202
+ /** Wait the time indicated */
203
+ Sleep: function (milliseconds, reference) {
204
+ if (milliseconds === void 0) { milliseconds = 0; }
205
+ if (reference === void 0) { reference = null; }
206
+ if (Tools.IsNull(reference)) {
207
+ return new Promise(function (Resolve) { return setTimeout(Resolve, milliseconds); });
208
+ }
209
+ else
210
+ return new Promise(function (Resolve) {
211
+ var _a;
212
+ reference = reference.replaceAll(' ', '_').toLowerCase();
213
+ if (reference_signal().hasOwnProperty(reference)) {
214
+ clearInterval(reference_signal()[reference]);
215
+ }
216
+ reference_signal.set(Object.assign(reference_signal(), (_a = {},
217
+ _a[reference] = setTimeout(function () {
218
+ Resolve();
219
+ clearInterval(reference_signal()[reference]);
220
+ var _reference = __assign({}, reference_signal());
221
+ delete _reference[reference];
222
+ reference_signal.set(__assign({}, _reference));
223
+ }, milliseconds),
224
+ _a)));
225
+ });
226
+ }
227
+ };
@@ -1,4 +1,4 @@
1
- export * from 'Tools';
2
- export * from 'Tools/DateTime.class';
3
- export * from 'Tools/Files.class';
4
- export * from 'Tools/Screen.class';
1
+ export * from './Tools/Tools';
2
+ export * from './Tools/DateTime.class';
3
+ export * from './Tools/Files.class';
4
+ export * from './Tools/Screen.class';
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DateTime = void 0;
4
+ var moment_1 = require("moment");
5
+ var DateTime = /** @class */ (function () {
6
+ function DateTime() {
7
+ }
8
+ /** Get UTC Offset */
9
+ DateTime.GetUTCOffset = function () {
10
+ return (0, moment_1.default)().utcOffset();
11
+ };
12
+ /** Convert UTC Date to Local Zone */
13
+ DateTime.ToLocalZone = function (utcDate) {
14
+ return (0, moment_1.default)(utcDate).add(DateTime.GetUTCOffset(), 'minutes').format('YYYY-MM-DD HH:mm:ss');
15
+ };
16
+ /** Convert Local Zone Date to UTC */
17
+ DateTime.ToUTC = function (utcDate) {
18
+ return (0, moment_1.default)(utcDate).subtract(DateTime.GetUTCOffset(), 'minutes').format('YYYY-MM-DD HH:mm:ss');
19
+ };
20
+ /** DD MMM YYYY */
21
+ DateTime.GetDateFormat = function (date) {
22
+ if ((typeof date === 'string'))
23
+ date = date.replaceAll('/', '-');
24
+ return (0, moment_1.default)(date).parseZone().local(true).format('DD MMM YYYY');
25
+ };
26
+ return DateTime;
27
+ }());
28
+ exports.DateTime = DateTime;
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Files = void 0;
4
+ var Tools_1 = require("./Tools");
5
+ var XLSX = require("xlsx");
6
+ var Files = /** @class */ (function () {
7
+ function Files() {
8
+ }
9
+ /** Get Extension File */
10
+ Files.GetExtension = function (file) {
11
+ var fileName = file.name;
12
+ if (fileName.includes('.')) {
13
+ var worlds = fileName.split('.');
14
+ if (worlds.length > 0) {
15
+ var extension = worlds.pop();
16
+ extension = extension.trim().toLowerCase();
17
+ if (extension.length > 0)
18
+ return extension;
19
+ }
20
+ }
21
+ return null;
22
+ };
23
+ /** Is Excel File */
24
+ Files.IsExcel = function (file) {
25
+ var EXTENSION = Files.GetExtension(file);
26
+ return Tools_1.Tools.IsNotNull(EXTENSION)
27
+ ? this.EXCEL_EXTENSIONS.includes(EXTENSION)
28
+ : false;
29
+ };
30
+ /** Read excel file */
31
+ Files.ReadExcel = function (file) {
32
+ return new Promise(function (Resolve) {
33
+ var columns = [];
34
+ var rows = [];
35
+ var reader = new FileReader();
36
+ reader.readAsArrayBuffer(file);
37
+ reader.onload = function () {
38
+ var dataBytes = new Uint8Array(reader.result);
39
+ if (dataBytes) {
40
+ var workbook = XLSX.read(dataBytes, {});
41
+ var sheet = workbook.Sheets[workbook.SheetNames[0]];
42
+ var dataSheet = XLSX.utils.sheet_to_json(sheet, {
43
+ header: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
44
+ });
45
+ //Get Headers
46
+ for (var column in dataSheet[0]) {
47
+ columns.push(Tools_1.Tools.FirstCharToLower(String(dataSheet[0][column]).replaceAll(' ', '')));
48
+ }
49
+ //Get Rows
50
+ rows = XLSX.utils.sheet_to_json(sheet, { header: columns });
51
+ rows.shift();
52
+ rows = rows.map(function (row) {
53
+ var item = Tools_1.Tools.BreakReference(row);
54
+ delete item['__rowNum__'];
55
+ return item;
56
+ });
57
+ }
58
+ Resolve({ columns: columns, rows: rows });
59
+ };
60
+ reader.onerror = function () { Resolve({ columns: columns, rows: rows }); };
61
+ });
62
+ };
63
+ /** Export to excel file */
64
+ Files.ExportExcel = function (data, fileName, sheetName) {
65
+ if (fileName === void 0) { fileName = 'coer_report'; }
66
+ if (sheetName === void 0) { sheetName = 'Sheet1'; }
67
+ sheetName = Tools_1.Tools.CleanUpBlanks(sheetName);
68
+ fileName = Tools_1.Tools.CleanUpBlanks(fileName);
69
+ if (fileName.endsWith('.xls') || fileName.endsWith('.xlsx') || fileName.endsWith('.csv')) {
70
+ if (fileName.includes('.xls')) {
71
+ fileName = fileName.replaceAll('.xls', '.xlsx');
72
+ }
73
+ if (fileName.includes('.csv')) {
74
+ fileName = fileName.replaceAll('.csv', '.xlsx');
75
+ }
76
+ }
77
+ else {
78
+ fileName += '.xlsx';
79
+ }
80
+ var WORK_SHEET = XLSX.utils.json_to_sheet(data);
81
+ var WORK_BOOK = XLSX.utils.book_new();
82
+ XLSX.utils.book_append_sheet(WORK_BOOK, WORK_SHEET, 'Sheet1');
83
+ XLSX.writeFile(WORK_BOOK, fileName);
84
+ };
85
+ /** Convert file to string base64 */
86
+ Files.ConvertToBase64 = function (file) {
87
+ return new Promise(function (Resolve) {
88
+ var reader = new FileReader();
89
+ reader.readAsDataURL(file);
90
+ reader.onload = function () {
91
+ var _a;
92
+ Resolve(((_a = reader.result) === null || _a === void 0 ? void 0 : _a.toString()) || '');
93
+ };
94
+ reader.onerror = function () {
95
+ Resolve('');
96
+ };
97
+ });
98
+ };
99
+ Files.EXCEL_EXTENSIONS = ['xls', 'xlsx', 'csv'];
100
+ return Files;
101
+ }());
102
+ exports.Files = Files;
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Screen = void 0;
4
+ var rxjs_1 = require("rxjs");
5
+ var Screen = /** @class */ (function () {
6
+ function Screen() {
7
+ }
8
+ Object.defineProperty(Screen, "WINDOW_WIDTH", {
9
+ get: function () {
10
+ return window.innerWidth;
11
+ },
12
+ enumerable: false,
13
+ configurable: true
14
+ });
15
+ Object.defineProperty(Screen, "WINDOW_HEIGHT", {
16
+ get: function () {
17
+ return window.innerHeight;
18
+ },
19
+ enumerable: false,
20
+ configurable: true
21
+ });
22
+ Object.defineProperty(Screen, "DEVICE_WIDTH", {
23
+ get: function () {
24
+ return window.screen.width;
25
+ },
26
+ enumerable: false,
27
+ configurable: true
28
+ });
29
+ Object.defineProperty(Screen, "DEVICE_HEIGHT", {
30
+ get: function () {
31
+ return window.screen.height;
32
+ },
33
+ enumerable: false,
34
+ configurable: true
35
+ });
36
+ Object.defineProperty(Screen, "BREAKPOINT", {
37
+ get: function () {
38
+ if (window.innerWidth < 576)
39
+ return 'xs';
40
+ else if (window.innerWidth >= 576 && window.innerWidth < 768)
41
+ return 'sm';
42
+ else if (window.innerWidth >= 768 && window.innerWidth < 992)
43
+ return 'md';
44
+ else if (window.innerWidth >= 992 && window.innerWidth < 1200)
45
+ return 'lg';
46
+ else if (window.innerWidth >= 1200 && window.innerWidth < 1400)
47
+ return 'xl';
48
+ else
49
+ return 'xxl';
50
+ },
51
+ enumerable: false,
52
+ configurable: true
53
+ });
54
+ var _a;
55
+ _a = Screen;
56
+ /** */
57
+ Screen.Resize = new rxjs_1.Observable(function (subscriber) {
58
+ window.addEventListener("load", function () {
59
+ window.dispatchEvent(new Event('resize'));
60
+ });
61
+ window.onresize = function () {
62
+ subscriber.next({
63
+ width: window.innerWidth,
64
+ height: window.innerHeight,
65
+ breakpoin: _a.BREAKPOINT
66
+ });
67
+ };
68
+ });
69
+ return Screen;
70
+ }());
71
+ exports.Screen = Screen;
@@ -0,0 +1,230 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
14
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
15
+ if (ar || !(i in from)) {
16
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
17
+ ar[i] = from[i];
18
+ }
19
+ }
20
+ return to.concat(ar || Array.prototype.slice.call(from));
21
+ };
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.Tools = void 0;
24
+ var guid_typescript_1 = require("guid-typescript");
25
+ var core_1 = require("@angular/core");
26
+ var reference_signal = (0, core_1.signal)({});
27
+ exports.Tools = {
28
+ /** Generate a Guid */
29
+ GetGuid: function (seed) {
30
+ if (seed === void 0) { seed = 'coer-system'; }
31
+ return "".concat(seed, "-").concat(guid_typescript_1.Guid.create().toString());
32
+ },
33
+ /** Returns true if the value is null or undefined, false otherwise */
34
+ IsNull: function (value) {
35
+ if (value === undefined)
36
+ return true;
37
+ if (value === null)
38
+ return true;
39
+ return false;
40
+ },
41
+ /** Returns true if the value is not null or undefined, false otherwise */
42
+ IsNotNull: function (value) {
43
+ if (value === undefined)
44
+ return false;
45
+ if (value === null)
46
+ return false;
47
+ return true;
48
+ },
49
+ /** Returns true if the value is null or undefined or contains only whitespace, false otherwise */
50
+ IsOnlyWhiteSpace: function (value) {
51
+ if (value === undefined)
52
+ return true;
53
+ if (value === null)
54
+ return true;
55
+ if (value.toString().trim() === '')
56
+ return true;
57
+ return false;
58
+ },
59
+ /** Break reference of a object or array */
60
+ BreakReference: function (object) {
61
+ if (object === undefined)
62
+ return undefined;
63
+ if (object === null)
64
+ return null;
65
+ var OBJECT = JSON.parse(JSON.stringify(object));
66
+ return (Array.isArray(OBJECT)) ? __spreadArray([], OBJECT, true) : __assign({}, OBJECT);
67
+ },
68
+ /** Clean extra whitespaces */
69
+ CleanUpBlanks: function (text) {
70
+ if (exports.Tools.IsNull(text))
71
+ return '';
72
+ var worlds = String(text).split(' ');
73
+ worlds = worlds.filter(function (x) { return x.length > 0; });
74
+ return worlds.join(' ');
75
+ },
76
+ /** Get properties of an object */
77
+ GetObjectProperties: function (obj) {
78
+ var properties = [];
79
+ if (exports.Tools.IsNull(obj))
80
+ return properties;
81
+ for (var property in obj)
82
+ properties.push(String(property));
83
+ return properties;
84
+ },
85
+ /**
86
+ * Set an index and merge more arrays of the same type
87
+ * @returns A new array
88
+ * */
89
+ SetIndex: function (array) {
90
+ var args = [];
91
+ for (var _i = 1; _i < arguments.length; _i++) {
92
+ args[_i - 1] = arguments[_i];
93
+ }
94
+ var index = 0;
95
+ for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {
96
+ var arg = args_1[_a];
97
+ array = exports.Tools.BreakReference(array).concat(exports.Tools.BreakReference(arg));
98
+ }
99
+ return exports.Tools.BreakReference(array).map(function (item) { return Object.assign({ index: index++ }, item); });
100
+ },
101
+ /** Set First Char To Lower */
102
+ FirstCharToLower: function (text) {
103
+ if (exports.Tools.IsNull(text))
104
+ return '';
105
+ var textArray = [];
106
+ for (var i = 0; i < text.length; i++) {
107
+ if (i === 0)
108
+ textArray.push(text[i].toLowerCase());
109
+ else
110
+ textArray.push(text[i]);
111
+ }
112
+ return textArray.join('');
113
+ },
114
+ /** Set First Char To Upper */
115
+ FirstCharToUpper: function (text) {
116
+ if (exports.Tools.IsNull(text))
117
+ return '';
118
+ var textArray = [];
119
+ for (var i = 0; i < text.length; i++) {
120
+ if (i === 0)
121
+ textArray.push(text[i].toUpperCase());
122
+ else
123
+ textArray.push(text[i]);
124
+ }
125
+ return textArray.join('');
126
+ },
127
+ /** Sort an array in ascending order by property */
128
+ SortBy: function (array, property, propertyType) {
129
+ if (propertyType === void 0) { propertyType = 'string'; }
130
+ switch (propertyType) {
131
+ case 'string': {
132
+ return array.sort(function (x, y) {
133
+ if (String(x[property]).toUpperCase().trim() < String(y[property]).toUpperCase().trim())
134
+ return -1;
135
+ else if (String(x[property]).toUpperCase().trim() > String(y[property]).toUpperCase().trim())
136
+ return 1;
137
+ else
138
+ return 0;
139
+ });
140
+ }
141
+ case 'number': {
142
+ return array.sort(function (x, y) { return Number(x[property] - Number(y[property])); });
143
+ }
144
+ }
145
+ },
146
+ /** Sort an array in descending order by property */
147
+ SortByDesc: function (array, property, propertyType) {
148
+ if (propertyType === void 0) { propertyType = 'string'; }
149
+ switch (propertyType) {
150
+ case 'string': {
151
+ return array.sort(function (x, y) {
152
+ if (String(x[property]).toUpperCase().trim() < String(y[property]).toUpperCase().trim())
153
+ return 1;
154
+ else if (String(x[property]).toUpperCase().trim() > String(y[property]).toUpperCase().trim())
155
+ return -1;
156
+ else
157
+ return 0;
158
+ });
159
+ }
160
+ case 'number': {
161
+ return array.sort(function (x, y) { return Number(Number(y[property])) - x[property]; });
162
+ }
163
+ }
164
+ },
165
+ /** Return a string with forman numeric */
166
+ GetNumericFormat: function (value, decimals) {
167
+ if (decimals === void 0) { decimals = 0; }
168
+ if (value == undefined
169
+ || value == null
170
+ || value.toString().trim() == ''
171
+ || isNaN(Number(value))) {
172
+ return '0';
173
+ }
174
+ var valueInteger = '';
175
+ var valueDecimal = '';
176
+ value = value.toString().replaceAll(' ', '');
177
+ if (value.includes('.') || (decimals > 0)) {
178
+ valueInteger = value.includes('.') ? value.split('.')[0] : value;
179
+ if (decimals > 0) {
180
+ var PADDING = decimals - valueDecimal.length;
181
+ valueDecimal = value.includes('.') ? value.split('.')[1] : '';
182
+ for (var i = 0; i < PADDING; i++)
183
+ valueDecimal += '0';
184
+ valueDecimal = valueDecimal.substring(0, decimals);
185
+ valueDecimal = ".".concat(valueDecimal);
186
+ }
187
+ }
188
+ else {
189
+ valueInteger = value;
190
+ }
191
+ var counter = 0;
192
+ var VALUE_INTEGER_ARRAY = [];
193
+ for (var _i = 0, _a = valueInteger.split('').reverse(); _i < _a.length; _i++) {
194
+ var char = _a[_i];
195
+ if (counter == 3) {
196
+ VALUE_INTEGER_ARRAY.push(',');
197
+ counter = 0;
198
+ }
199
+ VALUE_INTEGER_ARRAY.push(char);
200
+ ++counter;
201
+ }
202
+ valueInteger = VALUE_INTEGER_ARRAY.reverse().join('');
203
+ return "".concat(valueInteger).concat(valueDecimal);
204
+ },
205
+ /** Wait the time indicated */
206
+ Sleep: function (milliseconds, reference) {
207
+ if (milliseconds === void 0) { milliseconds = 0; }
208
+ if (reference === void 0) { reference = null; }
209
+ if (exports.Tools.IsNull(reference)) {
210
+ return new Promise(function (Resolve) { return setTimeout(Resolve, milliseconds); });
211
+ }
212
+ else
213
+ return new Promise(function (Resolve) {
214
+ var _a;
215
+ reference = reference.replaceAll(' ', '_').toLowerCase();
216
+ if (reference_signal().hasOwnProperty(reference)) {
217
+ clearInterval(reference_signal()[reference]);
218
+ }
219
+ reference_signal.set(Object.assign(reference_signal(), (_a = {},
220
+ _a[reference] = setTimeout(function () {
221
+ Resolve();
222
+ clearInterval(reference_signal()[reference]);
223
+ var _reference = __assign({}, reference_signal());
224
+ delete _reference[reference];
225
+ reference_signal.set(__assign({}, _reference));
226
+ }, milliseconds),
227
+ _a)));
228
+ });
229
+ }
230
+ };
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("Tools"), exports);
18
- __exportStar(require("Tools/DateTime.class"), exports);
19
- __exportStar(require("Tools/Files.class"), exports);
20
- __exportStar(require("Tools/Screen.class"), exports);
17
+ __exportStar(require("./Tools/Tools"), exports);
18
+ __exportStar(require("./Tools/DateTime.class"), exports);
19
+ __exportStar(require("./Tools/Files.class"), exports);
20
+ __exportStar(require("./Tools/Screen.class"), exports);
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/index.ts CHANGED
@@ -1,4 +1,7 @@
1
- export * from './Tools'
1
+ export * from './Tools/Breadcrumbs.class';
2
+ export * from './Tools/ControlValue';
2
3
  export * from './Tools/DateTime.class';
3
4
  export * from './Tools/Files.class';
4
- export * from './Tools/Screen.class';
5
+ export * from './Tools/Screen.class';
6
+ export * from './Tools/Source.class';
7
+ export * from './Tools/Tools'
@@ -8,4 +8,23 @@ export interface IScreenSize {
8
8
  width: number;
9
9
  height: number;
10
10
  breakpoin: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl';
11
+ }
12
+
13
+ export interface IAppSource {
14
+ page: string;
15
+ path: string;
16
+ }
17
+
18
+ export interface IBreadcrumb {
19
+ page: string;
20
+ path?: string | null;
21
+ queryParams?: any;
22
+ click?: (() => any);
23
+ }
24
+
25
+ export interface IGoBack {
26
+ show: boolean;
27
+ path?: string | null;
28
+ queryParams?: any;
29
+ click?: (() => any);
11
30
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "coer-elements",
3
- "version": "1.0.6",
3
+ "version": "1.0.8",
4
4
  "author": "Christian Omar Escamilla Rodríguez",
5
5
  "keywords": [
6
6
  "coer",
@@ -23,9 +23,14 @@
23
23
  },
24
24
  "dependencies": {
25
25
  "@angular/core": "^17.3.0",
26
+ "@angular/forms": "^17.3.0",
27
+ "@angular/router": "^17.3.0",
26
28
  "guid-typescript": "^1.0.9",
27
29
  "moment": "^2.30.1",
28
30
  "rxjs": "^7.8.1",
29
31
  "xlsx": "^0.18.5"
32
+ },
33
+ "devDependencies": {
34
+ "typescript": "^5.5.4"
30
35
  }
31
36
  }
package/tsconfig.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
+ "compileOnSave": false,
2
3
  "compilerOptions": {
3
- /* Visit https://aka.ms/tsconfig to read more about this file */
4
4
  "outDir": "./dist/out-tsc",
5
5
  "strict": true,
6
6
  "noImplicitOverride": true,
@@ -19,5 +19,11 @@
19
19
  "useDefineForClassFields": false,
20
20
  "lib": ["ES2022", "dom"],
21
21
  "baseUrl": "./"
22
+ },
23
+ "angularCompilerOptions": {
24
+ "enableI18nLegacyMessageIdFormat": false,
25
+ "strictInjectionParameters": true,
26
+ "strictInputAccessModifiers": true,
27
+ "strictTemplates": true
22
28
  }
23
29
  }
File without changes