@starley/ion-directives 1.4.0 → 1.4.2
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/README.md +22 -0
- package/dist/block-input/block-copy-past.directive.js +1 -2
- package/dist/block-input/block-copy-past.directive.js.map +1 -1
- package/dist/directive.module.d.ts +1 -2
- package/dist/directive.module.js +6 -9
- package/dist/directive.module.js.map +1 -1
- package/dist/forms/form-change-detector.service.d.ts +11 -0
- package/dist/forms/form-change-detector.service.js +56 -0
- package/dist/forms/form-change-detector.service.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/input-mask/input-mask.directive.js +3 -1
- package/dist/input-mask/input-mask.directive.js.map +1 -1
- package/dist/input-remove/input-remove.directive.js +0 -1
- package/dist/input-remove/input-remove.directive.js.map +1 -1
- package/dist/press-hold/press-hold.directive.js +1 -2
- package/dist/press-hold/press-hold.directive.js.map +1 -1
- package/dist/provider/connector-sqlite-pwa.provider.js +2 -2
- package/dist/provider/date-util-provider.d.ts +23 -0
- package/dist/provider/date-util-provider.js +51 -0
- package/dist/provider/date-util-provider.js.map +1 -1
- package/dist/provider/ion-utils-provider.d.ts +1 -1
- package/dist/tap/tap.directive.js +1 -2
- package/dist/tap/tap.directive.js.map +1 -1
- package/package.json +53 -54
package/README.md
CHANGED
|
@@ -35,6 +35,28 @@ import { DirectivesModule } from '@starley/ion-directives';
|
|
|
35
35
|
export class MyComponent {}
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
+
### Para usar a FormChangeDetector
|
|
39
|
+
|
|
40
|
+
* Importe a service FormChangeDetector no componente que desejar utilizar.
|
|
41
|
+
|
|
42
|
+
* Injete a service no construtor do componente:
|
|
43
|
+
|
|
44
|
+
```typescript
|
|
45
|
+
constructor(private formChangeDetector: FormChangeDetector) {}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Crie o formulario usando o FormGroup, e chame o método `prepareFormChangeDetection` passando o formulário como parâmetro.
|
|
49
|
+
|
|
50
|
+
Ex: this.myForm = this.formChangeDetector.prepareFormChangeDetection(this.myForm);
|
|
51
|
+
|
|
52
|
+
É necessário retornar o formulário para a própria variável, pois quando o formulário é atualizado, as mudanças precisam ser refletidas na variável para que o sistema de detecção de mudanças do Angular funcione corretamente.
|
|
53
|
+
|
|
54
|
+
Agora temos a variavel booleana `isDirty` que indica se o formulário foi modificado e pode ser usada para habilitar/desabilitar botões de salvar com base nas alterações.
|
|
55
|
+
|
|
56
|
+
Ex: if(this.formChangeDetector.isDirty) { ... }
|
|
57
|
+
|
|
58
|
+
Agora você pode usar o formulário com detecção de mudanças automaticamente.
|
|
59
|
+
|
|
38
60
|
### Para usar a mascara 'appMask'
|
|
39
61
|
|
|
40
62
|
Adicione dentro do input a chamada passando após o simbolo de '=' a formatação desejada!
|
|
@@ -22,8 +22,7 @@ export { BlockCopyPasteDirective };
|
|
|
22
22
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BlockCopyPasteDirective, [{
|
|
23
23
|
type: Directive,
|
|
24
24
|
args: [{
|
|
25
|
-
selector: '[appBlockCopyPaste]'
|
|
26
|
-
standalone: false
|
|
25
|
+
selector: '[appBlockCopyPaste]'
|
|
27
26
|
}]
|
|
28
27
|
}], function () { return []; }, { blockPaste: [{
|
|
29
28
|
type: HostListener,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block-copy-past.directive.js","sourceRoot":"","sources":["../../src/block-input/block-copy-past.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;;AAExD;
|
|
1
|
+
{"version":3,"file":"block-copy-past.directive.js","sourceRoot":"","sources":["../../src/block-input/block-copy-past.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;;AAExD;IAIE;IAAgB,CAAC;IAEkB,4CAAU,GAA7C,UAA8C,CAAgB;QAC5D,CAAC,CAAC,cAAc,EAAE,CAAC;IACrB,CAAC;IAEiC,2CAAS,GAA3C,UAA4C,CAAgB;QAC1D,CAAC,CAAC,cAAc,EAAE,CAAC;IACrB,CAAC;IAEgC,0CAAQ,GAAzC,UAA0C,CAAgB;QACxD,CAAC,CAAC,cAAc,EAAE,CAAC;IACrB,CAAC;kIAbU,uBAAuB;8EAAvB,uBAAuB;YAAvB,kGAAA,sBAAkB,IAAK,mFAAvB,qBAAiB,IAAM,iFAAvB,oBAAgB,IAAO;;kCALpC;CAmBC,AAjBD,IAiBC;SAdY,uBAAuB;uFAAvB,uBAAuB;cAHnC,SAAS;eAAC;gBACT,QAAQ,EAAE,qBAAqB;aAChC;sCAIoC,UAAU;kBAA5C,YAAY;mBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;YAIC,SAAS;kBAA1C,YAAY;mBAAC,MAAM,EAAE,CAAC,QAAQ,CAAC;YAIC,QAAQ;kBAAxC,YAAY;mBAAC,KAAK,EAAE,CAAC,QAAQ,CAAC","sourcesContent":["import { Directive, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[appBlockCopyPaste]'\n})\nexport class BlockCopyPasteDirective {\n constructor() { }\n\n @HostListener('paste', ['$event']) blockPaste(e: KeyboardEvent) {\n e.preventDefault();\n }\n\n @HostListener('copy', ['$event']) blockCopy(e: KeyboardEvent) {\n e.preventDefault();\n }\n\n @HostListener('cut', ['$event']) blockCut(e: KeyboardEvent) {\n e.preventDefault();\n }\n}\n"]}
|
|
@@ -6,7 +6,6 @@ import * as i3 from "./input-mask/input-mask.directive";
|
|
|
6
6
|
import * as i4 from "./input-remove/input-remove.directive";
|
|
7
7
|
import * as i5 from "./block-input/block-copy-past.directive";
|
|
8
8
|
import * as i6 from "@angular/common";
|
|
9
|
-
import * as i7 from "@angular/forms";
|
|
10
9
|
/**
|
|
11
10
|
* Gerencia precionamento de enventos
|
|
12
11
|
* @author Starley Cazorla
|
|
@@ -14,6 +13,6 @@ import * as i7 from "@angular/forms";
|
|
|
14
13
|
export declare class DirectivesModule {
|
|
15
14
|
static forRoot(): ModuleWithProviders<DirectivesModule>;
|
|
16
15
|
static ɵfac: i0.ɵɵFactoryDeclaration<DirectivesModule, never>;
|
|
17
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<DirectivesModule, [typeof i1.PressHoldDirective, typeof i2.TapDirective, typeof i3.IonInputMaskDirective, typeof i4.IonInputRemoveDirective, typeof i5.BlockCopyPasteDirective], [typeof i6.CommonModule
|
|
16
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<DirectivesModule, [typeof i1.PressHoldDirective, typeof i2.TapDirective, typeof i3.IonInputMaskDirective, typeof i4.IonInputRemoveDirective, typeof i5.BlockCopyPasteDirective], [typeof i6.CommonModule], [typeof i1.PressHoldDirective, typeof i2.TapDirective, typeof i3.IonInputMaskDirective, typeof i4.IonInputRemoveDirective, typeof i5.BlockCopyPasteDirective]>;
|
|
18
17
|
static ɵinj: i0.ɵɵInjectorDeclaration<DirectivesModule>;
|
|
19
18
|
}
|
package/dist/directive.module.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
2
|
import { CUSTOM_ELEMENTS_SCHEMA, NgModule, NO_ERRORS_SCHEMA } from '@angular/core';
|
|
3
|
-
import { FormsModule } from '@angular/forms';
|
|
4
3
|
import { BlockCopyPasteDirective } from './block-input/block-copy-past.directive';
|
|
5
4
|
import { IonInputMaskDirective } from './input-mask/input-mask.directive';
|
|
6
5
|
import { IonInputRemoveDirective } from './input-remove/input-remove.directive';
|
|
@@ -22,8 +21,7 @@ var DirectivesModule = /** @class */ (function () {
|
|
|
22
21
|
};
|
|
23
22
|
DirectivesModule.ɵfac = function DirectivesModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DirectivesModule)(); };
|
|
24
23
|
DirectivesModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: DirectivesModule });
|
|
25
|
-
DirectivesModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [CommonModule
|
|
26
|
-
FormsModule] });
|
|
24
|
+
DirectivesModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [CommonModule] });
|
|
27
25
|
return DirectivesModule;
|
|
28
26
|
}());
|
|
29
27
|
export { DirectivesModule };
|
|
@@ -35,11 +33,10 @@ export { DirectivesModule };
|
|
|
35
33
|
TapDirective,
|
|
36
34
|
IonInputMaskDirective,
|
|
37
35
|
IonInputRemoveDirective,
|
|
38
|
-
BlockCopyPasteDirective
|
|
36
|
+
BlockCopyPasteDirective,
|
|
39
37
|
],
|
|
40
38
|
imports: [
|
|
41
|
-
CommonModule
|
|
42
|
-
FormsModule
|
|
39
|
+
CommonModule
|
|
43
40
|
],
|
|
44
41
|
exports: [
|
|
45
42
|
PressHoldDirective,
|
|
@@ -48,15 +45,15 @@ export { DirectivesModule };
|
|
|
48
45
|
IonInputRemoveDirective,
|
|
49
46
|
BlockCopyPasteDirective
|
|
50
47
|
],
|
|
51
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA]
|
|
48
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],
|
|
49
|
+
providers: []
|
|
52
50
|
}]
|
|
53
51
|
}], null, null); })();
|
|
54
52
|
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(DirectivesModule, { declarations: [PressHoldDirective,
|
|
55
53
|
TapDirective,
|
|
56
54
|
IonInputMaskDirective,
|
|
57
55
|
IonInputRemoveDirective,
|
|
58
|
-
BlockCopyPasteDirective], imports: [CommonModule,
|
|
59
|
-
FormsModule], exports: [PressHoldDirective,
|
|
56
|
+
BlockCopyPasteDirective], imports: [CommonModule], exports: [PressHoldDirective,
|
|
60
57
|
TapDirective,
|
|
61
58
|
IonInputMaskDirective,
|
|
62
59
|
IonInputRemoveDirective,
|
|
@@ -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"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FormGroup } from '@angular/forms';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class FormChangeDetector {
|
|
4
|
+
isDirty: boolean;
|
|
5
|
+
private originalFormValues;
|
|
6
|
+
private clearFormChangeDetection;
|
|
7
|
+
prepareFormChangeDetection(documentForm: FormGroup): FormGroup<any>;
|
|
8
|
+
private formChangeDetection;
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FormChangeDetector, never>;
|
|
10
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<FormChangeDetector>;
|
|
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 FormChangeDetector = /** @class */ (function () {
|
|
15
|
+
function FormChangeDetector() {
|
|
16
|
+
this.isDirty = false;
|
|
17
|
+
}
|
|
18
|
+
FormChangeDetector.prototype.clearFormChangeDetection = function () {
|
|
19
|
+
this.originalFormValues = null;
|
|
20
|
+
this.isDirty = false;
|
|
21
|
+
};
|
|
22
|
+
FormChangeDetector.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.isDirty = false;
|
|
29
|
+
this.formChangeDetection(documentForm);
|
|
30
|
+
return documentForm;
|
|
31
|
+
};
|
|
32
|
+
FormChangeDetector.prototype.formChangeDetection = function (documentForm) {
|
|
33
|
+
var _this = this;
|
|
34
|
+
documentForm.valueChanges.subscribe(function () {
|
|
35
|
+
if (!_this.originalFormValues) {
|
|
36
|
+
_this.isDirty = false;
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
var currentValues = documentForm.getRawValue();
|
|
40
|
+
var normalizedCurrent = __assign({}, currentValues);
|
|
41
|
+
var normalizedOriginal = __assign({}, _this.originalFormValues);
|
|
42
|
+
_this.isDirty = JSON.stringify(normalizedCurrent) !== JSON.stringify(normalizedOriginal);
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
FormChangeDetector.ɵfac = function FormChangeDetector_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || FormChangeDetector)(); };
|
|
46
|
+
FormChangeDetector.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: FormChangeDetector, factory: FormChangeDetector.ɵfac, providedIn: 'root' });
|
|
47
|
+
return FormChangeDetector;
|
|
48
|
+
}());
|
|
49
|
+
export { FormChangeDetector };
|
|
50
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FormChangeDetector, [{
|
|
51
|
+
type: Injectable,
|
|
52
|
+
args: [{
|
|
53
|
+
providedIn: 'root',
|
|
54
|
+
}]
|
|
55
|
+
}], null, null); })();
|
|
56
|
+
//# sourceMappingURL=form-change-detector.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-change-detector.service.js","sourceRoot":"","sources":["../../src/forms/form-change-detector.service.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;;AAG3C;IAAA;QAKI,YAAO,GAAY,KAAK,CAAC;KAmC5B;IA/BW,qDAAwB,GAAhC;QACI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,uDAA0B,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,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAEvC,OAAO,YAAY,CAAC;IACxB,CAAC;IAEO,gDAAmB,GAA3B,UAA4B,YAAuB;QAAnD,iBAYC;QAXG,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC;YAChC,IAAI,CAAC,KAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC3B,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACrB,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,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC5F,CAAC,CAAC,CAAC;IACP,CAAC;wHAnCQ,kBAAkB;4EAAlB,kBAAkB,WAAlB,kBAAkB,mBAFf,MAAM;6BAJtB;CA2CC,AAxCD,IAwCC;SArCY,kBAAkB;uFAAlB,kBAAkB;cAH9B,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 FormChangeDetector {\n\n isDirty: boolean = false;\n\n private originalFormValues: any;\n\n private clearFormChangeDetection() {\n this.originalFormValues = null;\n this.isDirty = 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.isDirty = 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.isDirty = false;\n return;\n }\n\n const currentValues = documentForm.getRawValue();\n let normalizedCurrent = { ...currentValues };\n let normalizedOriginal = { ...this.originalFormValues };\n this.isDirty = JSON.stringify(normalizedCurrent) !== JSON.stringify(normalizedOriginal);\n });\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 { FormChangeDetector } from './forms/form-change-detector.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 { FormChangeDetector } from './forms/form-change-detector.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,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,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 { FormChangeDetector } from './forms/form-change-detector.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"]}
|
|
@@ -47,6 +47,9 @@ var IonInputMaskDirective = /** @class */ (function () {
|
|
|
47
47
|
});
|
|
48
48
|
};
|
|
49
49
|
IonInputMaskDirective.prototype.extractRawValue = function (value) {
|
|
50
|
+
if (!value) {
|
|
51
|
+
return '';
|
|
52
|
+
}
|
|
50
53
|
return value.replace(/[^a-zA-Z0-9]/g, ''); // Remove todos os caracteres não são letras e digitos
|
|
51
54
|
};
|
|
52
55
|
/**
|
|
@@ -86,7 +89,6 @@ export { IonInputMaskDirective };
|
|
|
86
89
|
type: Directive,
|
|
87
90
|
args: [{
|
|
88
91
|
selector: '[appMask]',
|
|
89
|
-
standalone: false,
|
|
90
92
|
providers: [NgModel]
|
|
91
93
|
}]
|
|
92
94
|
}], function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.NgModel }, { type: i0.ChangeDetectorRef }]; }, { pattern: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-mask.directive.js","sourceRoot":"","sources":["../../src/input-mask/input-mask.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,SAAS,EAAc,YAAY,EAAE,KAAK,EAAuC,MAAM,eAAe,CAAC;AACnI,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;;;AAEzC;;;;GAIG;AAEH;
|
|
1
|
+
{"version":3,"file":"input-mask.directive.js","sourceRoot":"","sources":["../../src/input-mask/input-mask.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,SAAS,EAAc,YAAY,EAAE,KAAK,EAAuC,MAAM,eAAe,CAAC;AACnI,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;;;AAEzC;;;;GAIG;AAEH;IASI,+BAAoB,UAAsB,EAAU,QAAmB,EAAU,OAAgB,EAAU,KAAwB;QAA/G,eAAU,GAAV,UAAU,CAAY;QAAU,aAAQ,GAAR,QAAQ,CAAW;QAAU,YAAO,GAAP,OAAO,CAAS;QAAU,UAAK,GAAL,KAAK,CAAmB;QAF3H,aAAQ,GAAW,EAAE,CAAC;IAEyG,CAAC;IAExI,2CAAW,GAAX,UAAY,OAAsB;QAC9B,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;YACxD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC;YAC/C,gEAAgE;YAChE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,wDAAwD;YAClH,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,sBAAsB;YACxC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QAC/B,CAAC;IACL,CAAC;IAGD,uCAAO,GADP,UACQ,KAAa;QACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,qDAAqD;QAClG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,sBAAsB;IAC5C,CAAC;IAED;;;OAGG;IACK,yCAAS,GAAjB;QAAA,iBAYC;QAXG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,OAAO;QACX,CAAC;QAED,mCAAmC;QACnC,IAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAChE,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;;YACnB,iEAAiE;YACjE,KAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAI,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;YAC/E,MAAA,KAAI,CAAC,OAAO,CAAC,OAAO,0CAAE,QAAQ,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,+CAAe,GAAvB,UAAwB,KAAa;QACjC,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO,EAAE,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC,sDAAsD;IACrG,CAAC;IAED;;;;;;OAMG;IACK,yCAAS,GAAjB,UAAkB,QAAgB,EAAE,IAAY;QAE5C,kDAAkD;QAClD,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YAC9D,OAAO,QAAQ,CAAC;QACpB,CAAC;QAED,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,GAAG,CAAC,CAAC;QAEV,OAAO,WAAW,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBAClB,WAAW,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACJ,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1C,CAAC;YACD,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,2CAA2C;QAC1E,CAAC;QAED,OAAO,WAAW,CAAC;IACvB,CAAC;8HA5EQ,qBAAqB;4EAArB,qBAAqB;YAArB,gGAAA,gCAA4B,IAAP;iHAFnB,CAAC,OAAO,CAAC;gCAXxB;CA2FC,AAlFD,IAkFC;SA9EY,qBAAqB;uFAArB,qBAAqB;cAJjC,SAAS;eAAC;gBACP,QAAQ,EAAE,WAAW;gBACrB,SAAS,EAAE,CAAC,OAAO,CAAC;aACvB;2IAGqB,OAAO;kBAAxB,KAAK;mBAAC,SAAS;YAgBhB,OAAO;kBADN,YAAY;mBAAC,OAAO,EAAE,CAAC,qBAAqB,CAAC","sourcesContent":["import { ChangeDetectorRef, Directive, ElementRef, HostListener, Input, OnChanges, Renderer2, SimpleChanges } from '@angular/core';\nimport { NgModel } from '@angular/forms';\n\n/**\n * Directive input mask\n * @author Starley Cazorla\n * @version 3.0.0\n */\n\n@Directive({\n selector: '[appMask]',\n providers: [NgModel]\n})\nexport class IonInputMaskDirective implements OnChanges {\n\n @Input('appMask') pattern: string;\n private rawValue: string = '';\n\n constructor(private elementRef: ElementRef, private renderer: Renderer2, private ngModel: NgModel, private cdRef: ChangeDetectorRef) { }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['pattern'] && !changes['pattern'].firstChange) {\n this.pattern = changes['pattern'].currentValue;\n // Quando a máscara muda, limpe o valor e aplique a nova máscara\n this.rawValue = this.extractRawValue(this.ngModel.value); // Extraia o valor bruto antes de aplicar a nova máscara\n this.applyMask(); // Reaplique a máscara\n this.cdRef.detectChanges();\n }\n }\n\n @HostListener('input', ['$event.target.value'])\n onInput(value: string) {\n this.rawValue = this.extractRawValue(value); // Atualize o valor bruto com o novo valor de entrada\n this.applyMask(); // Reaplique a máscara\n }\n\n /**\n * Applys mask\n * @author Starley Cazorla\n */\n private applyMask() {\n if (!this.pattern) {\n return;\n }\n\n // Aplique a máscara ao valor bruto\n const maskedValue = this.maskValue(this.rawValue, this.pattern);\n Promise.resolve().then(() => {\n // Atualizar o input e o modelo de controle com o valor mascarado\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', maskedValue);\n this.ngModel.control?.setValue(maskedValue, { emitEvent: false });\n });\n }\n\n private extractRawValue(value: string): string {\n if (!value) {\n return '';\n }\n return value.replace(/[^a-zA-Z0-9]/g, ''); // Remove todos os caracteres não são letras e digitos\n }\n\n /**\n * Masks value\n * @author Starley Cazorla\n * @param rawValue\n * @param mask\n * @returns value\n */\n private maskValue(rawValue: string, mask: string): string {\n\n // Se a máscara não tiver um padrão, não faca nada\n if (!mask || mask === undefined || mask === null || mask === '') {\n return rawValue;\n }\n\n let maskedValue = '';\n let rawValIndex = 0;\n let i = 0;\n\n while (rawValIndex < rawValue.length) {\n if (mask[i] === '*') {\n maskedValue += rawValue[rawValIndex++];\n } else {\n maskedValue += mask[i] ? mask[i] : '';\n }\n i = (i + 1) % mask.length; // Volta ao início da máscara se necessário\n }\n\n return maskedValue;\n }\n\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-remove.directive.js","sourceRoot":"","sources":["../../src/input-remove/input-remove.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;;;AAGvE;
|
|
1
|
+
{"version":3,"file":"input-remove.directive.js","sourceRoot":"","sources":["../../src/input-remove/input-remove.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;;;AAGvE;IASI,iCAA+C,KAAc;QAAd,UAAK,GAAL,KAAK,CAAS;IAAI,CAAC;IAElE;;;;OAIG;IACH,4CAAU,GAAV,UAAW,KAAU;QACjB,IAAM,KAAK,GAAG,KAAK,CAAC,MAA0B,CAAC;QAC/C,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAExB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1E,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YAEpB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE;oBAC/B,SAAS,EAAE,IAAI;oBACf,qBAAqB,EAAE,IAAI;oBAC3B,qBAAqB,EAAE,IAAI;iBAC9B,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,4CAAU,GAAV,UAAW,UAAkB;QACzB,IAAI,UAAU,KAAK,QAAQ;YAAE,OAAO,YAAY,CAAC;QACjD,IAAI,UAAU,KAAK,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC7C,IAAI,UAAU,KAAK,SAAS;YAAE,OAAO,2BAA2B,CAAC;QACjE,IAAI,UAAU,KAAK,aAAa;YAAE,OAAO,iBAAiB,CAAC;QAC3D,OAAO,IAAI,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;kIAxCQ,uBAAuB;8EAAvB,uBAAuB;YAAvB,wGAAA,sBAAkB,IAAK;;kCATpC;CAkDC,AA/CD,IA+CC;SAzCY,uBAAuB;uFAAvB,uBAAuB;cANnC,SAAS;eAAC;gBACP,QAAQ,EAAE,sBAAsB;gBAChC,IAAI,EAAE;oBACF,YAAY,EAAE,oBAAoB;iBACrC;aACJ;;sBAIgB,QAAQ;;sBAAI,IAAI;;sBAAI,IAAI;wBAFR,OAAO;kBAAnC,KAAK;mBAAC,oBAAoB","sourcesContent":["import { Directive, Host, Input, Optional, Self } from '@angular/core';\nimport { NgModel } from \"@angular/forms\";\n\n@Directive({\n selector: '[appRemoveFromInput]',\n host: {\n '(ionInput)': 'onIonInput($event)'\n }\n})\nexport class IonInputRemoveDirective {\n @Input('appRemoveFromInput') pattern: string;\n\n constructor(@Optional() @Host() @Self() public model: NgModel) { }\n\n /**\n * Determines whether ion input on\n * @author Starley Cazorla\n * @param event\n */\n onIonInput(event: any) {\n const input = event.target as HTMLInputElement;\n let value = input.value;\n\n if (this.pattern) {\n value = value.normalize('NFD').replace(this.getPattern(this.pattern), '');\n input.value = value;\n\n if (this.model) {\n this.model.control.setValue(value, {\n emitEvent: true,\n emitModelToViewChange: true,\n emitViewToModelChange: true\n });\n }\n }\n }\n\n /**\n * Gets pattern\n * @author Starley Cazorla\n * @param typePatter\n * @returns pattern - letter - number - special - punctuation\n */\n getPattern(typePatter: string): RegExp {\n if (typePatter === 'letter') return /[a-zA-Z]+/g;\n if (typePatter === 'number') return /[0-9]/g;\n if (typePatter === 'special') return /[^a-zA-Z0-9\\s.,!?'\"():;]/g;\n if (typePatter === 'punctuation') return /[.,!?'\"():;_-]/g;\n return new RegExp(typePatter, 'g');\n }\n}\n"]}
|
|
@@ -63,8 +63,7 @@ export { PressHoldDirective };
|
|
|
63
63
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PressHoldDirective, [{
|
|
64
64
|
type: Directive,
|
|
65
65
|
args: [{
|
|
66
|
-
selector: '[appPressHold]'
|
|
67
|
-
standalone: false
|
|
66
|
+
selector: '[appPressHold]'
|
|
68
67
|
}]
|
|
69
68
|
}], function () { return [{ type: undefined, decorators: [{
|
|
70
69
|
type: Attribute,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"press-hold.directive.js","sourceRoot":"","sources":["../../src/press-hold/press-hold.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAU,MAAM,EAAE,MAAM,eAAe,CAAC;;AAEjG;;;GAGG;AAEH;
|
|
1
|
+
{"version":3,"file":"press-hold.directive.js","sourceRoot":"","sources":["../../src/press-hold/press-hold.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAU,MAAM,EAAE,MAAM,eAAe,CAAC;;AAEjG;;;GAGG;AAEH;IAiBI,4BAAuC,OAAqB;QAAhD,wBAAA,EAAA,aAAgD;QAZlD,UAAK,GAAG,IAAI,YAAY,EAAE,CAAC;QACrC,iBAAY,GAAG;YACX,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,GAAG;SAChB,CAAC;QACF,iBAAY,GAAQ,IAAI,CAAC;QACzB,eAAU,GAAY,KAAK,CAAC;QAC5B,YAAO,GAAG,CAAC,CAAC;QACZ,aAAQ,GAAG,CAAC,CAAC;QACb,eAAU,GAAQ,IAAI,CAAC;QAGnB,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,OAAO,CAAC;IACzC,CAAC;IAED,qCAAQ,GAAR;QACI,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC;IACrC,CAAC;IAID,oCAAO,GAFP,UAEQ,KAAqB;QACzB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAC7B,OAAO;QACX,CAAC,CAAC,2CAA2C;QAC7C,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAEO,2CAAc,GAAtB,UAAuB,IAAY;QAAnC,iBAeC;QAdG,IAAI,IAAI,IAAI,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;gBAC3B,KAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YAC3B,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,kEAAkE;QACtG,CAAC;aAAM,IAAI,IAAI,IAAI,UAAU,EAAE,CAAC;YAC5B,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAChC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACvB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,mDAAmD;YACzE,CAAC;YACD,qGAAqG;YACrG,oCAAoC;YACpC,UAAU,CAAC,cAAM,OAAA,KAAI,CAAC,UAAU,GAAG,KAAK,EAAvB,CAAuB,EAAE,EAAE,CAAC,CAAC;QAClD,CAAC;IACL,CAAC;IAEO,sCAAS,GAAjB;QACI,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,wBAAwB;QACvD,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IACrB,CAAC;wHArDQ,kBAAkB,uBAcJ,cAAc;yEAd5B,kBAAkB;YAAlB,uGAAA,mBAAe,IAAG,sFAAlB,mBAAe,IAAG;;6BAV/B;CAiEC,AA1DD,IA0DC;SAvDY,kBAAkB;uFAAlB,kBAAkB;cAH9B,SAAS;eAAC;gBACP,QAAQ,EAAE,gBAAgB;aAC7B;;sBAegB,SAAS;uBAAC,cAAc;wBAZ3B,KAAK;kBAAd,MAAM;YAsBP,OAAO;kBAFN,YAAY;mBAAC,YAAY,EAAE,CAAC,QAAQ,CAAC;;kBACrC,YAAY;mBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC","sourcesContent":["import { Attribute, Directive, EventEmitter, HostListener, OnInit, Output } from '@angular/core';\n\n/**\n * Gerencia pressHold\n * @author Starley Cazorla\n */\n\n@Directive({\n selector: '[appPressHold]'\n})\nexport class PressHoldDirective implements OnInit {\n\n @Output() press = new EventEmitter();\n pressGesture = {\n name: 'press',\n enabled: false,\n interval: 450\n };\n pressTimeout: any = null;\n isPressing: boolean = false;\n lastTap = 0;\n tapCount = 0;\n tapTimeout: any = null;\n\n constructor(@Attribute('appPressHold') pattern: number = 450) {\n this.pressGesture.interval = pattern;\n }\n\n ngOnInit(): void {\n this.pressGesture.enabled = true;\n }\n\n @HostListener('touchstart', ['$event'])\n @HostListener('touchend', ['$event'])\n onPress(event: { type: any; }) {\n if (!this.pressGesture.enabled) {\n return;\n } // Press is not enabled, don't do anything.\n this.handlePressing(event.type);\n }\n\n private handlePressing(type: string) { // touchend or touchstart\n if (type == 'touchstart') {\n this.pressTimeout = setTimeout(() => {\n this.isPressing = true;\n }, this.pressGesture.interval); // Considered a press if it's longer than interval (default: 251).\n } else if (type == 'touchend') {\n clearTimeout(this.pressTimeout);\n if (this.isPressing) {\n this.press.emit('end');\n this.resetTaps(); // Just incase this gets passed as a tap event too.\n }\n // Clicks have a natural delay of 300ms, so we have to account for that, before resetting isPressing.\n // Otherwise a tap event is emitted.\n setTimeout(() => this.isPressing = false, 50);\n }\n }\n\n private resetTaps() {\n clearTimeout(this.tapTimeout); // clear the old timeout\n this.tapCount = 0;\n this.tapTimeout = null;\n this.lastTap = 0;\n }\n\n}"]}
|
|
@@ -8,8 +8,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g
|
|
12
|
-
return g
|
|
11
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
12
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
13
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
14
|
function step(op) {
|
|
15
15
|
if (f) throw new TypeError("Generator is already executing.");
|
|
@@ -45,6 +45,7 @@ export declare class DateUtilProvider {
|
|
|
45
45
|
* Gets diff days by today
|
|
46
46
|
* @author Starley Cazorla
|
|
47
47
|
* @param date1
|
|
48
|
+
* @deprecated
|
|
48
49
|
* @returns
|
|
49
50
|
*/
|
|
50
51
|
getDiffDaysByToday(date1: any): number;
|
|
@@ -59,6 +60,28 @@ export declare class DateUtilProvider {
|
|
|
59
60
|
dayName: string;
|
|
60
61
|
dayNumber: number;
|
|
61
62
|
};
|
|
63
|
+
/**
|
|
64
|
+
* Gets diff days by date
|
|
65
|
+
* @author Starley Cazorla
|
|
66
|
+
* @param date
|
|
67
|
+
* @returns
|
|
68
|
+
*/
|
|
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;
|
|
62
85
|
static ɵfac: i0.ɵɵFactoryDeclaration<DateUtilProvider, never>;
|
|
63
86
|
static ɵprov: i0.ɵɵInjectableDeclaration<DateUtilProvider>;
|
|
64
87
|
}
|
|
@@ -89,6 +89,7 @@ var DateUtilProvider = /** @class */ (function () {
|
|
|
89
89
|
* Gets diff days by today
|
|
90
90
|
* @author Starley Cazorla
|
|
91
91
|
* @param date1
|
|
92
|
+
* @deprecated
|
|
92
93
|
* @returns
|
|
93
94
|
*/
|
|
94
95
|
DateUtilProvider.prototype.getDiffDaysByToday = function (date1) {
|
|
@@ -114,6 +115,56 @@ var DateUtilProvider = /** @class */ (function () {
|
|
|
114
115
|
'dayNumber': d.getDate()
|
|
115
116
|
};
|
|
116
117
|
};
|
|
118
|
+
/**
|
|
119
|
+
* Gets diff days by date
|
|
120
|
+
* @author Starley Cazorla
|
|
121
|
+
* @param date
|
|
122
|
+
* @returns
|
|
123
|
+
*/
|
|
124
|
+
DateUtilProvider.prototype.getDiffDaysByDate = function (date) {
|
|
125
|
+
if (!date)
|
|
126
|
+
return 0;
|
|
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);
|
|
167
|
+
};
|
|
117
168
|
DateUtilProvider.ɵfac = function DateUtilProvider_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DateUtilProvider)(); };
|
|
118
169
|
DateUtilProvider.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: DateUtilProvider, factory: DateUtilProvider.ɵfac });
|
|
119
170
|
return DateUtilProvider;
|
|
@@ -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 * @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}"]}
|
|
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"]}
|
|
@@ -28,7 +28,7 @@ export declare class IonUtilsProvider {
|
|
|
28
28
|
* @param enumInput
|
|
29
29
|
* @returns
|
|
30
30
|
*/
|
|
31
|
-
returnEnumStringName(enumInput: any):
|
|
31
|
+
returnEnumStringName(enumInput: any): any[];
|
|
32
32
|
static ɵfac: i0.ɵɵFactoryDeclaration<IonUtilsProvider, never>;
|
|
33
33
|
static ɵprov: i0.ɵɵInjectableDeclaration<IonUtilsProvider>;
|
|
34
34
|
}
|
|
@@ -67,8 +67,7 @@ export { TapDirective };
|
|
|
67
67
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TapDirective, [{
|
|
68
68
|
type: Directive,
|
|
69
69
|
args: [{
|
|
70
|
-
selector: '[appTap]'
|
|
71
|
-
standalone: false
|
|
70
|
+
selector: '[appTap]'
|
|
72
71
|
}]
|
|
73
72
|
}], function () { return []; }, { tap: [{
|
|
74
73
|
type: Output
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tap.directive.js","sourceRoot":"","sources":["../../src/tap/tap.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAU,MAAM,EAAE,MAAM,eAAe,CAAC;;AAEtF;;;GAGG;AAEH;
|
|
1
|
+
{"version":3,"file":"tap.directive.js","sourceRoot":"","sources":["../../src/tap/tap.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAU,MAAM,EAAE,MAAM,eAAe,CAAC;;AAEtF;;;GAGG;AAEH;IAqBI;QAhBU,QAAG,GAAG,IAAI,YAAY,EAAE,CAAC;QACzB,cAAS,GAAG,IAAI,YAAY,EAAE,CAAC;QACzC,YAAO,GAAG,CAAC,CAAC;QACZ,aAAQ,GAAG,CAAC,CAAC;QACb,eAAU,GAAQ,IAAI,CAAC;QACvB,eAAU,GAAG;YACT,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,GAAG;SAChB,CAAC;QACF,qBAAgB,GAAG;YACf,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,GAAG;SAChB,CAAC;IAEc,CAAC;IAEjB,+BAAQ,GAAR;QACI,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC;IACzC,CAAC;IAGD,iCAAU,GADV,UACW,CAAyB;QADpC,iBAcC;QAZG,IAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAM,WAAW,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,YAAY,CAAC;QAC3E,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC7D,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,WAAW,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpB,CAAC;aAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,cAAM,OAAA,KAAI,CAAC,QAAQ,EAAE,EAAf,CAAe,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAClF,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC;IAChC,CAAC;IAEO,+BAAQ,GAAhB;QACI,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACjD,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC9D,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;IACrB,CAAC;IAEO,gCAAS,GAAjB;QACI,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,wBAAwB;QACvD,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IACrB,CAAC;4GAvDQ,YAAY;mEAAZ,YAAY;YAAZ,uFAAA,sBAAkB,IAAN;;uBAVzB;CAmEC,AA5DD,IA4DC;SAzDY,YAAY;uFAAZ,YAAY;cAHxB,SAAS;eAAC;gBACP,QAAQ,EAAE,UAAU;aACvB;sCAGa,GAAG;kBAAZ,MAAM;YACG,SAAS;kBAAlB,MAAM;YAuBP,UAAU;kBADT,YAAY;mBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC","sourcesContent":["import { Directive, EventEmitter, HostListener, OnInit, Output } from '@angular/core';\n\n/**\n * Gerencia tap e doubleTap\n * @author Starley Cazorla\n */\n\n@Directive({\n selector: '[appTap]'\n})\nexport class TapDirective implements OnInit {\n\n @Output() tap = new EventEmitter();\n @Output() doubleTap = new EventEmitter();\n lastTap = 0;\n tapCount = 0;\n tapTimeout: any = null;\n tapGesture = {\n name: 'tap',\n enabled: false,\n interval: 250,\n };\n doubleTapGesture = {\n name: 'doubleTap',\n enabled: false,\n interval: 300,\n };\n\n constructor() { }\n\n ngOnInit(): void {\n this.tapGesture.enabled = true;\n this.doubleTapGesture.enabled = true;\n }\n\n @HostListener('click', ['$event'])\n handleTaps(e: { timeStamp: number; }) {\n const tapTimestamp = Math.floor(e.timeStamp);\n const isDoubleTap = this.lastTap + this.tapGesture.interval > tapTimestamp;\n if (!this.tapGesture.enabled && !this.doubleTapGesture.enabled) {\n return this.resetTaps();\n }\n this.tapCount++;\n if (isDoubleTap && this.doubleTapGesture.enabled) {\n this.emitTaps();\n } else if (!isDoubleTap) {\n this.tapTimeout = setTimeout(() => this.emitTaps(), this.tapGesture.interval);\n }\n this.lastTap = tapTimestamp;\n }\n\n private emitTaps() {\n if (this.tapCount === 1 && this.tapGesture.enabled) {\n this.tap.emit();\n } else if (this.tapCount === 2 && this.doubleTapGesture.enabled) {\n this.doubleTap.emit();\n }\n this.resetTaps();\n }\n\n private resetTaps() {\n clearTimeout(this.tapTimeout); // clear the old timeout\n this.tapCount = 0;\n this.tapTimeout = null;\n this.lastTap = 0;\n }\n\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,56 +1,55 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
2
|
+
"name": "@starley/ion-directives",
|
|
3
|
+
"version": "1.4.2",
|
|
4
|
+
"description": "Directivas internas para ionic",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"typings": "./dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist"
|
|
9
|
+
],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"ngc": "ngc",
|
|
12
|
+
"build": "rm -rf dist && rm -rf node_modules package-lock.json && npm install --legacy-peer-deps && npm run ngc",
|
|
13
|
+
"publishPackage": "npm run build && npm publish"
|
|
14
|
+
},
|
|
15
|
+
"peerDependencies": {
|
|
16
|
+
"@angular/common": ">=10.0.0",
|
|
17
|
+
"@angular/core": ">=10.0.0",
|
|
18
|
+
"@angular/forms": ">=10.0.0"
|
|
19
|
+
},
|
|
20
|
+
"repository": {
|
|
21
|
+
"type": "git",
|
|
22
|
+
"url": "git+https://github.com/StarleyDev/ion-directives.git"
|
|
23
|
+
},
|
|
24
|
+
"keywords": [
|
|
25
|
+
"ionic",
|
|
26
|
+
"mask",
|
|
27
|
+
"mascara",
|
|
28
|
+
"input",
|
|
29
|
+
"presshold",
|
|
30
|
+
"tap",
|
|
31
|
+
"doubletap"
|
|
32
|
+
],
|
|
33
|
+
"author": "Starley Cazorla",
|
|
34
|
+
"license": "MIT",
|
|
35
|
+
"bugs": {
|
|
36
|
+
"url": "https://github.com/StarleyDev/ion-directives/issues"
|
|
37
|
+
},
|
|
38
|
+
"homepage": "https://github.com/StarleyDev/ion-directives#readme",
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"@angular/common": "^19.2.2",
|
|
41
|
+
"@angular/compiler": "^19.2.2",
|
|
42
|
+
"@angular/compiler-cli": "^18.0.0",
|
|
43
|
+
"@angular/core": "^19.2.2",
|
|
44
|
+
"@angular/forms": "^19.2.2",
|
|
45
|
+
"@types/node": "^22.13.10",
|
|
46
|
+
"nodemon": "^3.1.9",
|
|
47
|
+
"ts-node": "^10.9.2",
|
|
48
|
+
"typescript": "~5.4.0"
|
|
49
|
+
},
|
|
50
|
+
"dependencies": {
|
|
51
|
+
"codelyzer": "^6.0.2",
|
|
52
|
+
"moment": "^2.30.1",
|
|
53
|
+
"tslib": "^2.8.1"
|
|
54
|
+
}
|
|
56
55
|
}
|