@starley/ion-directives 1.3.17 → 1.3.19
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.
- package/dist/directive.module.js +4 -3
- package/dist/directive.module.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/provider/date-util-provider.d.ts +15 -0
- package/dist/provider/date-util-provider.js +40 -4
- package/dist/provider/date-util-provider.js.map +1 -1
- package/dist/utils/form-util.service.d.ts +11 -0
- package/dist/utils/form-util.service.js +56 -0
- package/dist/utils/form-util.service.js.map +1 -0
- package/package.json +1 -1
package/dist/directive.module.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
2
|
import { CUSTOM_ELEMENTS_SCHEMA, NgModule, NO_ERRORS_SCHEMA } from '@angular/core';
|
|
3
|
+
import { BlockCopyPasteDirective } from './block-input/block-copy-past.directive';
|
|
3
4
|
import { IonInputMaskDirective } from './input-mask/input-mask.directive';
|
|
4
5
|
import { IonInputRemoveDirective } from './input-remove/input-remove.directive';
|
|
5
6
|
import { PressHoldDirective } from './press-hold/press-hold.directive';
|
|
6
7
|
import { TapDirective } from './tap/tap.directive';
|
|
7
|
-
import { BlockCopyPasteDirective } from './block-input/block-copy-past.directive';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
/**
|
|
10
10
|
* Gerencia precionamento de enventos
|
|
@@ -33,7 +33,7 @@ export { DirectivesModule };
|
|
|
33
33
|
TapDirective,
|
|
34
34
|
IonInputMaskDirective,
|
|
35
35
|
IonInputRemoveDirective,
|
|
36
|
-
BlockCopyPasteDirective
|
|
36
|
+
BlockCopyPasteDirective,
|
|
37
37
|
],
|
|
38
38
|
imports: [
|
|
39
39
|
CommonModule
|
|
@@ -45,7 +45,8 @@ export { DirectivesModule };
|
|
|
45
45
|
IonInputRemoveDirective,
|
|
46
46
|
BlockCopyPasteDirective
|
|
47
47
|
],
|
|
48
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA]
|
|
48
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],
|
|
49
|
+
providers: []
|
|
49
50
|
}]
|
|
50
51
|
}], null, null); })();
|
|
51
52
|
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(DirectivesModule, { declarations: [PressHoldDirective,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directive.module.js","sourceRoot":"","sources":["../src/directive.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAuB,QAAQ,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACxG,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"directive.module.js","sourceRoot":"","sources":["../src/directive.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAuB,QAAQ,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACxG,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;;AAEnD;;;GAGG;AAEH;IAAA;KA6BC;IANU,wBAAO,GAAd;QACI,OAAO;YACH,QAAQ,EAAE,gBAAgB;YAC1B,SAAS,EAAE,EAAE;SAChB,CAAC;IACN,CAAC;oHANQ,gBAAgB;sEAAhB,gBAAgB;0EAbrB,YAAY;2BAtBpB;CA0CC,AA7BD,IA6BC;SAPY,gBAAgB;uFAAhB,gBAAgB;cAtB5B,QAAQ;eAAC;gBACN,YAAY,EAAE;oBACV,kBAAkB;oBAClB,YAAY;oBACZ,qBAAqB;oBACrB,uBAAuB;oBACvB,uBAAuB;iBAC1B;gBACD,OAAO,EAAE;oBACL,YAAY;iBACf;gBACD,OAAO,EAAE;oBACL,kBAAkB;oBAClB,YAAY;oBACZ,qBAAqB;oBACrB,uBAAuB;oBACvB,uBAAuB;iBAC1B;gBACD,OAAO,EAAE,CAAC,sBAAsB,EAAE,gBAAgB,CAAC;gBACnD,SAAS,EAAE,EAAE;aAEhB;;wFACY,gBAAgB,mBApBrB,kBAAkB;QAClB,YAAY;QACZ,qBAAqB;QACrB,uBAAuB;QACvB,uBAAuB,aAGvB,YAAY,aAGZ,kBAAkB;QAClB,YAAY;QACZ,qBAAqB;QACrB,uBAAuB;QACvB,uBAAuB","sourcesContent":["import { CommonModule } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, ModuleWithProviders, NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { BlockCopyPasteDirective } from './block-input/block-copy-past.directive';\nimport { IonInputMaskDirective } from './input-mask/input-mask.directive';\nimport { IonInputRemoveDirective } from './input-remove/input-remove.directive';\nimport { PressHoldDirective } from './press-hold/press-hold.directive';\nimport { TapDirective } from './tap/tap.directive';\n\n/**\n * Gerencia precionamento de enventos\n * @author Starley Cazorla\n */\n\n@NgModule({\n declarations: [\n PressHoldDirective,\n TapDirective,\n IonInputMaskDirective,\n IonInputRemoveDirective,\n BlockCopyPasteDirective,\n ],\n imports: [\n CommonModule\n ],\n exports: [\n PressHoldDirective,\n TapDirective,\n IonInputMaskDirective,\n IonInputRemoveDirective,\n BlockCopyPasteDirective\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],\n providers: []\n\n})\nexport class DirectivesModule {\n static forRoot(): ModuleWithProviders<DirectivesModule> {\n return {\n ngModule: DirectivesModule,\n providers: [],\n };\n }\n}\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './block-input/block-copy-past.directive';
|
|
2
2
|
export * from './directive.module';
|
|
3
|
+
export { FormUtilService } from './utils/form-util.service';
|
|
3
4
|
export * from './input-mask/input-mask.directive';
|
|
4
5
|
export * from './input-remove/input-remove.directive';
|
|
5
6
|
export * from './press-hold/press-hold.directive';
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './block-input/block-copy-past.directive';
|
|
2
2
|
export * from './directive.module';
|
|
3
|
+
export { FormUtilService } from './utils/form-util.service';
|
|
3
4
|
export * from './input-mask/input-mask.directive';
|
|
4
5
|
export * from './input-remove/input-remove.directive';
|
|
5
6
|
export * from './press-hold/press-hold.directive';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yCAAyC,CAAC;AACxD,cAAc,oBAAoB,CAAC;AACnC,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,cAAc,qBAAqB,CAAC","sourcesContent":["export * from './block-input/block-copy-past.directive';\nexport * from './directive.module';\nexport * from './input-mask/input-mask.directive';\nexport * from './input-remove/input-remove.directive';\nexport * from './press-hold/press-hold.directive';\nexport { ConnectorSqlitePwaProvider } from './provider/connector-sqlite-pwa.provider';\nexport { DateUtilProvider } from './provider/date-util-provider';\nexport { IonUtilsProvider } from './provider/ion-utils-provider';\nexport { IonValidateFilds } from './provider/ion-validate-filds';\nexport * from './tap/tap.directive';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yCAAyC,CAAC;AACxD,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,cAAc,qBAAqB,CAAC","sourcesContent":["export * from './block-input/block-copy-past.directive';\nexport * from './directive.module';\nexport { FormUtilService } from './utils/form-util.service';\nexport * from './input-mask/input-mask.directive';\nexport * from './input-remove/input-remove.directive';\nexport * from './press-hold/press-hold.directive';\nexport { ConnectorSqlitePwaProvider } from './provider/connector-sqlite-pwa.provider';\nexport { DateUtilProvider } from './provider/date-util-provider';\nexport { IonUtilsProvider } from './provider/ion-utils-provider';\nexport { IonValidateFilds } from './provider/ion-validate-filds';\nexport * from './tap/tap.directive';\n"]}
|
|
@@ -67,6 +67,21 @@ export declare class DateUtilProvider {
|
|
|
67
67
|
* @returns
|
|
68
68
|
*/
|
|
69
69
|
getDiffDaysByDate(date: Date): number;
|
|
70
|
+
getDiffYearsByToday(date: Date): boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Format date to DD/MM/YYYY
|
|
73
|
+
* @author Starley Cazorla
|
|
74
|
+
* @param date
|
|
75
|
+
* @returns formatted date
|
|
76
|
+
*/
|
|
77
|
+
returnFormatBrDate(date: Date | string): string;
|
|
78
|
+
/**
|
|
79
|
+
* Convert DD/MM/YYYY to Date
|
|
80
|
+
* @author Starley Cazorla
|
|
81
|
+
* @param dateBr
|
|
82
|
+
* @returns Date object
|
|
83
|
+
*/
|
|
84
|
+
convertBrDateToDate(dateBr: string): Date;
|
|
70
85
|
static ɵfac: i0.ɵɵFactoryDeclaration<DateUtilProvider, never>;
|
|
71
86
|
static ɵprov: i0.ɵɵInjectableDeclaration<DateUtilProvider>;
|
|
72
87
|
}
|
|
@@ -124,10 +124,46 @@ var DateUtilProvider = /** @class */ (function () {
|
|
|
124
124
|
DateUtilProvider.prototype.getDiffDaysByDate = function (date) {
|
|
125
125
|
if (!date)
|
|
126
126
|
return 0;
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
var diffDays = Math.
|
|
130
|
-
return diffDays;
|
|
127
|
+
this.newDate.setHours(0, 0, 0, 0); // opcional: ignora hora
|
|
128
|
+
date.setHours(0, 0, 0, 0);
|
|
129
|
+
var diffDays = Math.floor((date.getTime() - this.newDate.getTime()) / (1000 * 60 * 60 * 24));
|
|
130
|
+
return diffDays; // positivo = dias restantes, negativo = dias vencidos (-4 = 4 dias atrasado)
|
|
131
|
+
};
|
|
132
|
+
DateUtilProvider.prototype.getDiffYearsByToday = function (date) {
|
|
133
|
+
if (!date)
|
|
134
|
+
return false;
|
|
135
|
+
var hoje = new Date();
|
|
136
|
+
var dataLimite = new Date(hoje.getFullYear() - 18, hoje.getMonth(), hoje.getDate());
|
|
137
|
+
return date <= dataLimite;
|
|
138
|
+
};
|
|
139
|
+
/**
|
|
140
|
+
* Format date to DD/MM/YYYY
|
|
141
|
+
* @author Starley Cazorla
|
|
142
|
+
* @param date
|
|
143
|
+
* @returns formatted date
|
|
144
|
+
*/
|
|
145
|
+
DateUtilProvider.prototype.returnFormatBrDate = function (date) {
|
|
146
|
+
var d = date instanceof Date ? date : new Date(date);
|
|
147
|
+
var day = String(d.getDate()).padStart(2, '0');
|
|
148
|
+
var month = String(d.getMonth() + 1).padStart(2, '0');
|
|
149
|
+
var year = d.getFullYear();
|
|
150
|
+
return "".concat(day, "/").concat(month, "/").concat(year);
|
|
151
|
+
};
|
|
152
|
+
/**
|
|
153
|
+
* Convert DD/MM/YYYY to Date
|
|
154
|
+
* @author Starley Cazorla
|
|
155
|
+
* @param dateBr
|
|
156
|
+
* @returns Date object
|
|
157
|
+
*/
|
|
158
|
+
DateUtilProvider.prototype.convertBrDateToDate = function (dateBr) {
|
|
159
|
+
if (!dateBr) {
|
|
160
|
+
throw new Error('Data não informada');
|
|
161
|
+
}
|
|
162
|
+
var _a = dateBr.split('/').map(Number), day = _a[0], month = _a[1], year = _a[2];
|
|
163
|
+
if (!day || !month || !year) {
|
|
164
|
+
throw new Error('Data inválida');
|
|
165
|
+
}
|
|
166
|
+
return new Date(year, month - 1, day, 0, 0, 0, 0);
|
|
131
167
|
};
|
|
132
168
|
DateUtilProvider.ɵfac = function DateUtilProvider_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DateUtilProvider)(); };
|
|
133
169
|
DateUtilProvider.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: DateUtilProvider, factory: DateUtilProvider.ɵfac });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-util-provider.js","sourceRoot":"","sources":["../../src/provider/date-util-provider.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from \"@angular/core\";\nimport moment from 'moment';\n\n/**\n * Date utils\n * @author Starley Cazorla\n */\n\n@Injectable()\nexport class DateUtilProvider {\n newDate = new Date();\n\n constructor() { }\n\n /**\n * Veifica se a data e valida\n * @param date\n * @returns\n */\n isValidDate(date: string) {\n if (!date) return false;\n // Regex format: DD/MM/YYYY | DD-MM-YYYY | DD.MM.YYYY\n const re = /^(?:(?:31(\\/|-|\\.)(?:0?[13578]|1[02]))\\1|(?:(?:29|30)(\\/|-|\\.)(?:0?[1,3-9]|1[0-2])\\2))(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$|^(?:29(\\/|-|\\.)0?2\\3(?:(?:(?:1[6-9]|[2-9]\\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\\d|2[0-8])(\\/|-|\\.)(?:(?:0?[1-9])|(?:1[0-2]))\\4(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$/;\n return re.test(date);\n }\n\n /**\n * Converts date to int\n * @author Starley Cazorla\n * @param data\n * @returns date to int\n */\n convertDateToInt(data: string): number {\n let temp: any;\n\n if (data === null || data === undefined || data.length <= 0) {\n return 0;\n }\n data = data.substring(0, 10);\n\n if (data.includes('/')) {\n temp = data.split('/');\n } else if (data.includes('-')) {\n temp = data.split('-');\n }\n\n if (temp === undefined) {\n return 0;\n } else if (temp[0].length > 2) {\n return temp[0] + temp[1] + temp[2];\n } else {\n return temp[2] + temp[1] + temp[0];\n }\n }\n\n /**\n * Determines whether today is\n * @author Starley Cazorla\n * @param dateInput\n * @returns true if today\n */\n isToday(dateInput: any): boolean {\n if (dateInput && this.convertDateToInt(dateInput) === this.convertDateToInt(new Date().toLocaleDateString('pt-Br'))) return true;\n return false;\n }\n\n /**\n * Determines whether date is bigger today is\n * @author Starley Cazorla\n * @param dateInput\n * @returns true if date is bigger today\n */\n isDateIsSmallerToday(dateInput: any): boolean {\n if (dateInput === null || dateInput === undefined) return false;\n if (this.convertDateToInt(dateInput) < this.convertDateToInt(new Date().toLocaleDateString('pt-Br'))) return true;\n return false;\n }\n\n /**\n * Firsts bigger than second\n * @author Starley Cazorla\n * @param firstDate\n * @param lastDate\n * @returns true if bigger than second\n */\n firstBiggerThanSecond(firstDate: any, lastDate: any): boolean {\n if (this.convertDateToInt(firstDate) < this.convertDateToInt(lastDate)) return true;\n return false;\n }\n\n /**\n * Gets diff days by today\n * @author Starley Cazorla\n * @param date1\n * @deprecated\n * @returns\n */\n getDiffDaysByToday(date1: any) {\n var momentA = moment(date1, 'DD/MM/YYYY');\n var momentB = moment(new Intl.DateTimeFormat('pt-BR').format(this.newDate), 'DD/MM/YYYY');\n var diff = momentB.valueOf() - momentA.valueOf();\n var diffDays = Math.ceil(diff / (1000 * 3600 * 24));\n return diffDays;\n }\n\n /**\n * Gets name day\n * @author Starley Cazorla\n * @param date\n * @param nmDays\n * @returns\n */\n getNameDay(date: any, nmDays: any) {\n var days = ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sabado'];\n var d = new Date(date);\n d.setDate(d.getDate() + nmDays)\n return {\n 'dayName': days[d.getDay()],\n 'dayNumber': d.getDate()\n };\n }\n\n /**\n * Gets diff days by date\n * @author Starley Cazorla\n * @param date\n * @returns\n */\n getDiffDaysByDate(date: Date) {\n if (!date) return 0;\n const today = new Date();\n const diffTime = Math.abs(date.getTime() - today.getTime());\n const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));\n return diffDays;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"date-util-provider.js","sourceRoot":"","sources":["../../src/provider/date-util-provider.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from \"@angular/core\";\nimport moment from 'moment';\n\n/**\n * Date utils\n * @author Starley Cazorla\n */\n\n@Injectable()\nexport class DateUtilProvider {\n newDate = new Date();\n\n constructor() { }\n\n /**\n * Veifica se a data e valida\n * @param date\n * @returns\n */\n isValidDate(date: string) {\n if (!date) return false;\n // Regex format: DD/MM/YYYY | DD-MM-YYYY | DD.MM.YYYY\n const re = /^(?:(?:31(\\/|-|\\.)(?:0?[13578]|1[02]))\\1|(?:(?:29|30)(\\/|-|\\.)(?:0?[1,3-9]|1[0-2])\\2))(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$|^(?:29(\\/|-|\\.)0?2\\3(?:(?:(?:1[6-9]|[2-9]\\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\\d|2[0-8])(\\/|-|\\.)(?:(?:0?[1-9])|(?:1[0-2]))\\4(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$/;\n return re.test(date);\n }\n\n /**\n * Converts date to int\n * @author Starley Cazorla\n * @param data\n * @returns date to int\n */\n convertDateToInt(data: string): number {\n let temp: any;\n\n if (data === null || data === undefined || data.length <= 0) {\n return 0;\n }\n data = data.substring(0, 10);\n\n if (data.includes('/')) {\n temp = data.split('/');\n } else if (data.includes('-')) {\n temp = data.split('-');\n }\n\n if (temp === undefined) {\n return 0;\n } else if (temp[0].length > 2) {\n return temp[0] + temp[1] + temp[2];\n } else {\n return temp[2] + temp[1] + temp[0];\n }\n }\n\n /**\n * Determines whether today is\n * @author Starley Cazorla\n * @param dateInput\n * @returns true if today\n */\n isToday(dateInput: any): boolean {\n if (dateInput && this.convertDateToInt(dateInput) === this.convertDateToInt(new Date().toLocaleDateString('pt-Br'))) return true;\n return false;\n }\n\n /**\n * Determines whether date is bigger today is\n * @author Starley Cazorla\n * @param dateInput\n * @returns true if date is bigger today\n */\n isDateIsSmallerToday(dateInput: any): boolean {\n if (dateInput === null || dateInput === undefined) return false;\n if (this.convertDateToInt(dateInput) < this.convertDateToInt(new Date().toLocaleDateString('pt-Br'))) return true;\n return false;\n }\n\n /**\n * Firsts bigger than second\n * @author Starley Cazorla\n * @param firstDate\n * @param lastDate\n * @returns true if bigger than second\n */\n firstBiggerThanSecond(firstDate: any, lastDate: any): boolean {\n if (this.convertDateToInt(firstDate) < this.convertDateToInt(lastDate)) return true;\n return false;\n }\n\n /**\n * Gets diff days by today\n * @author Starley Cazorla\n * @param date1\n * @deprecated\n * @returns\n */\n getDiffDaysByToday(date1: any) {\n var momentA = moment(date1, 'DD/MM/YYYY');\n var momentB = moment(new Intl.DateTimeFormat('pt-BR').format(this.newDate), 'DD/MM/YYYY');\n var diff = momentB.valueOf() - momentA.valueOf();\n var diffDays = Math.ceil(diff / (1000 * 3600 * 24));\n return diffDays;\n }\n\n /**\n * Gets name day\n * @author Starley Cazorla\n * @param date\n * @param nmDays\n * @returns\n */\n getNameDay(date: any, nmDays: any) {\n var days = ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sabado'];\n var d = new Date(date);\n d.setDate(d.getDate() + nmDays)\n return {\n 'dayName': days[d.getDay()],\n 'dayNumber': d.getDate()\n };\n }\n\n /**\n * Gets diff days by date\n * @author Starley Cazorla\n * @param date\n * @returns\n */\n getDiffDaysByDate(date: Date) {\n if (!date) return 0;\n\n this.newDate.setHours(0, 0, 0, 0); // opcional: ignora hora\n date.setHours(0, 0, 0, 0);\n\n const diffDays = Math.floor((date.getTime() - this.newDate.getTime()) / (1000 * 60 * 60 * 24));\n return diffDays; // positivo = dias restantes, negativo = dias vencidos (-4 = 4 dias atrasado)\n }\n\n getDiffYearsByToday(date: Date) {\n if (!date) return false;\n\n const hoje = new Date();\n const dataLimite = new Date(\n hoje.getFullYear() - 18,\n hoje.getMonth(),\n hoje.getDate()\n );\n\n return date <= dataLimite;\n }\n\n /**\n * Format date to DD/MM/YYYY\n * @author Starley Cazorla\n * @param date\n * @returns formatted date\n */\n returnFormatBrDate(date: Date | string) {\n const d = date instanceof Date ? date : new Date(date);\n\n const day = String(d.getDate()).padStart(2, '0');\n const month = String(d.getMonth() + 1).padStart(2, '0');\n const year = d.getFullYear();\n\n return `${day}/${month}/${year}`;\n }\n\n /**\n * Convert DD/MM/YYYY to Date\n * @author Starley Cazorla\n * @param dateBr\n * @returns Date object\n */\n convertBrDateToDate(dateBr: string): Date {\n if (!dateBr) {\n throw new Error('Data não informada');\n }\n\n const [day, month, year] = dateBr.split('/').map(Number);\n\n if (!day || !month || !year) {\n throw new Error('Data inválida');\n }\n\n return new Date(year, month - 1, day, 0, 0, 0, 0);\n }\n\n\n}\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FormGroup } from '@angular/forms';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class FormUtilService {
|
|
4
|
+
hasUnsavedChanges: boolean;
|
|
5
|
+
private originalFormValues;
|
|
6
|
+
private clearFormChangeDetection;
|
|
7
|
+
prepareFormChangeDetection(documentForm: FormGroup): FormGroup<any>;
|
|
8
|
+
private formChangeDetection;
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FormUtilService, never>;
|
|
10
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<FormUtilService>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
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
|
+
import { Injectable } from '@angular/core';
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
var FormUtilService = /** @class */ (function () {
|
|
15
|
+
function FormUtilService() {
|
|
16
|
+
this.hasUnsavedChanges = false;
|
|
17
|
+
}
|
|
18
|
+
FormUtilService.prototype.clearFormChangeDetection = function () {
|
|
19
|
+
this.originalFormValues = null;
|
|
20
|
+
this.hasUnsavedChanges = false;
|
|
21
|
+
};
|
|
22
|
+
FormUtilService.prototype.prepareFormChangeDetection = function (documentForm) {
|
|
23
|
+
this.clearFormChangeDetection();
|
|
24
|
+
this.originalFormValues = __assign({}, documentForm.getRawValue());
|
|
25
|
+
// Garante estado pristine inicial
|
|
26
|
+
documentForm.markAsPristine();
|
|
27
|
+
documentForm.markAsUntouched();
|
|
28
|
+
this.hasUnsavedChanges = false;
|
|
29
|
+
this.formChangeDetection(documentForm);
|
|
30
|
+
return documentForm;
|
|
31
|
+
};
|
|
32
|
+
FormUtilService.prototype.formChangeDetection = function (documentForm) {
|
|
33
|
+
var _this = this;
|
|
34
|
+
documentForm.valueChanges.subscribe(function () {
|
|
35
|
+
if (!_this.originalFormValues) {
|
|
36
|
+
_this.hasUnsavedChanges = false;
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
var currentValues = documentForm.getRawValue();
|
|
40
|
+
var normalizedCurrent = __assign({}, currentValues);
|
|
41
|
+
var normalizedOriginal = __assign({}, _this.originalFormValues);
|
|
42
|
+
_this.hasUnsavedChanges = JSON.stringify(normalizedCurrent) !== JSON.stringify(normalizedOriginal);
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
FormUtilService.ɵfac = function FormUtilService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || FormUtilService)(); };
|
|
46
|
+
FormUtilService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: FormUtilService, factory: FormUtilService.ɵfac, providedIn: 'root' });
|
|
47
|
+
return FormUtilService;
|
|
48
|
+
}());
|
|
49
|
+
export { FormUtilService };
|
|
50
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FormUtilService, [{
|
|
51
|
+
type: Injectable,
|
|
52
|
+
args: [{
|
|
53
|
+
providedIn: 'root',
|
|
54
|
+
}]
|
|
55
|
+
}], null, null); })();
|
|
56
|
+
//# sourceMappingURL=form-util.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-util.service.js","sourceRoot":"","sources":["../../src/utils/form-util.service.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;;AAG3C;IAAA;QAKI,sBAAiB,GAAY,KAAK,CAAC;KAmCtC;IA/BW,kDAAwB,GAAhC;QACI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;IACnC,CAAC;IAED,oDAA0B,GAA1B,UAA2B,YAAuB;QAC9C,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,kBAAkB,gBAAQ,YAAY,CAAC,WAAW,EAAE,CAAE,CAAC;QAC5D,kCAAkC;QAClC,YAAY,CAAC,cAAc,EAAE,CAAC;QAC9B,YAAY,CAAC,eAAe,EAAE,CAAC;QAC/B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAEvC,OAAO,YAAY,CAAC;IACxB,CAAC;IAEO,6CAAmB,GAA3B,UAA4B,YAAuB;QAAnD,iBAYC;QAXG,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC;YAChC,IAAI,CAAC,KAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC3B,KAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;gBAC/B,OAAO;YACX,CAAC;YAED,IAAM,aAAa,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;YACjD,IAAI,iBAAiB,gBAAQ,aAAa,CAAE,CAAC;YAC7C,IAAI,kBAAkB,gBAAQ,KAAI,CAAC,kBAAkB,CAAE,CAAC;YACxD,KAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QACtG,CAAC,CAAC,CAAC;IACP,CAAC;kHAnCQ,eAAe;yEAAf,eAAe,WAAf,eAAe,mBAFZ,MAAM;0BAJtB;CA2CC,AAxCD,IAwCC;SArCY,eAAe;uFAAf,eAAe;cAH3B,UAAU;eAAC;gBACR,UAAU,EAAE,MAAM;aACrB","sourcesContent":["import { Injectable } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FormUtilService {\n\n hasUnsavedChanges: boolean = false;\n\n private originalFormValues: any;\n\n private clearFormChangeDetection() {\n this.originalFormValues = null;\n this.hasUnsavedChanges = false;\n }\n\n prepareFormChangeDetection(documentForm: FormGroup) {\n this.clearFormChangeDetection();\n this.originalFormValues = { ...documentForm.getRawValue() };\n // Garante estado pristine inicial\n documentForm.markAsPristine();\n documentForm.markAsUntouched();\n this.hasUnsavedChanges = false;\n this.formChangeDetection(documentForm);\n\n return documentForm;\n }\n\n private formChangeDetection(documentForm: FormGroup): any {\n documentForm.valueChanges.subscribe(() => {\n if (!this.originalFormValues) {\n this.hasUnsavedChanges = false;\n return;\n }\n\n const currentValues = documentForm.getRawValue();\n let normalizedCurrent = { ...currentValues };\n let normalizedOriginal = { ...this.originalFormValues };\n this.hasUnsavedChanges = JSON.stringify(normalizedCurrent) !== JSON.stringify(normalizedOriginal);\n });\n }\n\n}\n"]}
|