coer-elements 1.0.6 → 1.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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