@starley/ion-directives 1.1.2 → 1.1.4
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/directives/input-mask/input-mask.directive.d.ts +19 -0
- package/dist/directives/press-hold/press-hold.directive.d.ts +25 -0
- package/dist/directives/tap/tap.directive.d.ts +29 -0
- package/dist/index.d.ts +3 -0
- package/package.json +4 -8
- package/{dist/cjs/directives/input-mask/input-mask.directive.js → src/directives/input-mask/input-mask.directive.ts} +24 -26
- package/src/directives/input-mask/input-mask.module.ts +10 -0
- package/src/directives/press-hold/press-hold.directive.ts +66 -0
- package/src/directives/press-hold/press-hold.module.ts +10 -0
- package/src/directives/tap/tap.directive.ts +70 -0
- package/src/directives/tap/tap.module.ts +10 -0
- package/src/index.ts +7 -0
- package/tsconfig.json +30 -0
- package/tslint.json +17 -0
- package/dist/cjs/directives/input-mask/input-mask.directive.js.map +0 -1
- package/dist/cjs/directives/press-hold/press-hold.directive.js +0 -71
- package/dist/cjs/directives/press-hold/press-hold.directive.js.map +0 -1
- package/dist/cjs/directives/tap/tap.directive.js +0 -79
- package/dist/cjs/directives/tap/tap.directive.js.map +0 -1
- package/dist/cjs/index.js +0 -10
- package/dist/cjs/index.js.map +0 -1
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { NgModel } from "@angular/forms";
|
|
2
|
+
/**
|
|
3
|
+
* Responsavel pelo mascaramento de inputs
|
|
4
|
+
*/
|
|
5
|
+
export declare class IonInputMaskDirective {
|
|
6
|
+
model: NgModel;
|
|
7
|
+
pattern: string;
|
|
8
|
+
/**
|
|
9
|
+
* Construtor
|
|
10
|
+
* @param {NgModel} model
|
|
11
|
+
* @param {string} pattern
|
|
12
|
+
*/
|
|
13
|
+
constructor(model: NgModel, pattern: string);
|
|
14
|
+
/**
|
|
15
|
+
* Listener para mudança de valor do input
|
|
16
|
+
* @param event
|
|
17
|
+
*/
|
|
18
|
+
onKeyDown(event: any): boolean;
|
|
19
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { EventEmitter, OnInit } from '@angular/core';
|
|
2
|
+
/**
|
|
3
|
+
* Gerencia pressHold
|
|
4
|
+
* @author Starley Cazorla
|
|
5
|
+
*/
|
|
6
|
+
export declare class PressHoldDirective implements OnInit {
|
|
7
|
+
press: EventEmitter<any>;
|
|
8
|
+
pressGesture: {
|
|
9
|
+
name: string;
|
|
10
|
+
enabled: boolean;
|
|
11
|
+
interval: number;
|
|
12
|
+
};
|
|
13
|
+
pressTimeout: any;
|
|
14
|
+
isPressing: boolean;
|
|
15
|
+
lastTap: number;
|
|
16
|
+
tapCount: number;
|
|
17
|
+
tapTimeout: any;
|
|
18
|
+
constructor();
|
|
19
|
+
ngOnInit(): void;
|
|
20
|
+
onPress(event: {
|
|
21
|
+
type: any;
|
|
22
|
+
}): void;
|
|
23
|
+
private handlePressing;
|
|
24
|
+
private resetTaps;
|
|
25
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { EventEmitter, OnInit } from '@angular/core';
|
|
2
|
+
/**
|
|
3
|
+
* Gerencia tap e doubleTap
|
|
4
|
+
* @author Starley Cazorla
|
|
5
|
+
*/
|
|
6
|
+
export declare class TapDirective implements OnInit {
|
|
7
|
+
tap: EventEmitter<any>;
|
|
8
|
+
doubleTap: EventEmitter<any>;
|
|
9
|
+
lastTap: number;
|
|
10
|
+
tapCount: number;
|
|
11
|
+
tapTimeout: any;
|
|
12
|
+
tapGesture: {
|
|
13
|
+
name: string;
|
|
14
|
+
enabled: boolean;
|
|
15
|
+
interval: number;
|
|
16
|
+
};
|
|
17
|
+
doubleTapGesture: {
|
|
18
|
+
name: string;
|
|
19
|
+
enabled: boolean;
|
|
20
|
+
interval: number;
|
|
21
|
+
};
|
|
22
|
+
constructor();
|
|
23
|
+
ngOnInit(): void;
|
|
24
|
+
handleTaps(e: {
|
|
25
|
+
timeStamp: number;
|
|
26
|
+
}): void;
|
|
27
|
+
private emitTaps;
|
|
28
|
+
private resetTaps;
|
|
29
|
+
}
|
package/dist/index.d.ts
ADDED
package/package.json
CHANGED
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@starley/ion-directives",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.4",
|
|
4
4
|
"description": "Directivas internas para ionic",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
|
-
"
|
|
7
|
-
"files": [
|
|
8
|
-
"dist"
|
|
9
|
-
],
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
10
7
|
"scripts": {
|
|
11
|
-
"build": "
|
|
12
|
-
"
|
|
13
|
-
"build:cjs": "tsc --module CommonJS --outDir dist/cjs"
|
|
8
|
+
"build": "tsc --declaration",
|
|
9
|
+
"dev": "nodemon --watch \"scr//\" --exec \"ts-node dist/index.js\" -e ts"
|
|
14
10
|
},
|
|
15
11
|
"peerDependencies": {
|
|
16
12
|
"@angular/common": "^15.1.1 || ^11.2.4 || ~10.0.0",
|
|
@@ -1,29 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const core_1 = require("@angular/core");
|
|
6
|
-
const forms_1 = require("@angular/forms");
|
|
1
|
+
import { Attribute, Directive } from '@angular/core';
|
|
2
|
+
import { NgModel } from "@angular/forms";
|
|
3
|
+
|
|
7
4
|
/**
|
|
8
5
|
* Responsavel pelo mascaramento de inputs
|
|
9
6
|
*/
|
|
10
|
-
|
|
7
|
+
@Directive({
|
|
8
|
+
selector: '[appMask]',
|
|
9
|
+
host: {
|
|
10
|
+
'(keydown)': 'onKeyDown($event)'
|
|
11
|
+
},
|
|
12
|
+
providers: [NgModel]
|
|
13
|
+
})
|
|
14
|
+
export class IonInputMaskDirective {
|
|
15
|
+
|
|
16
|
+
pattern: string;
|
|
17
|
+
|
|
11
18
|
/**
|
|
12
19
|
* Construtor
|
|
13
20
|
* @param {NgModel} model
|
|
14
21
|
* @param {string} pattern
|
|
15
22
|
*/
|
|
16
|
-
constructor(model,
|
|
17
|
-
|
|
23
|
+
constructor(public model: NgModel,
|
|
24
|
+
@Attribute('mask') pattern: string) {
|
|
18
25
|
this.pattern = pattern;
|
|
26
|
+
|
|
19
27
|
console.log('Inicou inputMask');
|
|
20
28
|
}
|
|
29
|
+
|
|
21
30
|
/**
|
|
22
31
|
* Listener para mudança de valor do input
|
|
23
32
|
* @param event
|
|
24
33
|
*/
|
|
25
|
-
onKeyDown(event) {
|
|
26
|
-
let value = event.target.value,
|
|
34
|
+
onKeyDown(event: any) {
|
|
35
|
+
let value = event.target.value,
|
|
36
|
+
pattern = this.pattern;
|
|
27
37
|
if (event.keyIdentifier === 'U+0008' || event.keyCode === 8 || event.key === 'Backspace') {
|
|
28
38
|
if (value.length) { //prevent fatal exception when backspacing empty value in progressive web app
|
|
29
39
|
//remove all trailing formatting then delete character
|
|
@@ -35,8 +45,7 @@ let IonInputMaskDirective = class IonInputMaskDirective {
|
|
|
35
45
|
value = value.substring(0, value.length - 1);
|
|
36
46
|
}
|
|
37
47
|
}
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
48
|
+
} else {
|
|
40
49
|
let maskIndex = value.length;
|
|
41
50
|
let formatted = '';
|
|
42
51
|
formatted += value;
|
|
@@ -55,16 +64,5 @@ let IonInputMaskDirective = class IonInputMaskDirective {
|
|
|
55
64
|
}
|
|
56
65
|
return true;
|
|
57
66
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
(0, core_1.Directive)({
|
|
61
|
-
selector: '[appMask]',
|
|
62
|
-
host: {
|
|
63
|
-
'(keydown)': 'onKeyDown($event)'
|
|
64
|
-
},
|
|
65
|
-
providers: [forms_1.NgModel]
|
|
66
|
-
}),
|
|
67
|
-
tslib_1.__param(1, (0, core_1.Attribute)('mask'))
|
|
68
|
-
], IonInputMaskDirective);
|
|
69
|
-
exports.IonInputMaskDirective = IonInputMaskDirective;
|
|
70
|
-
//# sourceMappingURL=input-mask.directive.js.map
|
|
67
|
+
|
|
68
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { IonInputMaskDirective } from './input-mask.directive';
|
|
3
|
+
|
|
4
|
+
@NgModule({
|
|
5
|
+
declarations: [IonInputMaskDirective],
|
|
6
|
+
imports: [
|
|
7
|
+
],
|
|
8
|
+
exports: [IonInputMaskDirective]
|
|
9
|
+
})
|
|
10
|
+
export class IonInputMaskDirectiveModule { }
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Directive, EventEmitter, HostListener, OnInit, Output } from '@angular/core';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Gerencia pressHold
|
|
5
|
+
* @author Starley Cazorla
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
@Directive({
|
|
9
|
+
selector: '[appPressHold]'
|
|
10
|
+
})
|
|
11
|
+
export class PressHoldDirective implements OnInit {
|
|
12
|
+
|
|
13
|
+
@Output() press = new EventEmitter();
|
|
14
|
+
pressGesture = {
|
|
15
|
+
name: 'press',
|
|
16
|
+
enabled: false,
|
|
17
|
+
interval: 350
|
|
18
|
+
};
|
|
19
|
+
pressTimeout: any = null;
|
|
20
|
+
isPressing: boolean = false;
|
|
21
|
+
lastTap = 0;
|
|
22
|
+
tapCount = 0;
|
|
23
|
+
tapTimeout: any = null;
|
|
24
|
+
|
|
25
|
+
constructor() {
|
|
26
|
+
console.log('Inicou appPressHold');
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
ngOnInit(): void {
|
|
30
|
+
this.pressGesture.enabled = true;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
@HostListener('touchstart', ['$event'])
|
|
34
|
+
@HostListener('touchend', ['$event'])
|
|
35
|
+
onPress(event: { type: any; }) {
|
|
36
|
+
if (!this.pressGesture.enabled) {
|
|
37
|
+
return;
|
|
38
|
+
} // Press is not enabled, don't do anything.
|
|
39
|
+
this.handlePressing(event.type);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
private handlePressing(type: string) { // touchend or touchstart
|
|
43
|
+
if (type == 'touchstart') {
|
|
44
|
+
this.pressTimeout = setTimeout(() => {
|
|
45
|
+
this.isPressing = true;
|
|
46
|
+
}, this.pressGesture.interval); // Considered a press if it's longer than interval (default: 251).
|
|
47
|
+
} else if (type == 'touchend') {
|
|
48
|
+
clearTimeout(this.pressTimeout);
|
|
49
|
+
if (this.isPressing) {
|
|
50
|
+
this.press.emit('end');
|
|
51
|
+
this.resetTaps(); // Just incase this gets passed as a tap event too.
|
|
52
|
+
}
|
|
53
|
+
// Clicks have a natural delay of 300ms, so we have to account for that, before resetting isPressing.
|
|
54
|
+
// Otherwise a tap event is emitted.
|
|
55
|
+
setTimeout(() => this.isPressing = false, 50);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
private resetTaps() {
|
|
60
|
+
clearTimeout(this.tapTimeout); // clear the old timeout
|
|
61
|
+
this.tapCount = 0;
|
|
62
|
+
this.tapTimeout = null;
|
|
63
|
+
this.lastTap = 0;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Directive, EventEmitter, HostListener, OnInit, Output } from '@angular/core';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Gerencia tap e doubleTap
|
|
5
|
+
* @author Starley Cazorla
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
@Directive({
|
|
9
|
+
selector: '[appTap]'
|
|
10
|
+
})
|
|
11
|
+
export class TapDirective implements OnInit {
|
|
12
|
+
|
|
13
|
+
@Output() tap = new EventEmitter();
|
|
14
|
+
@Output() doubleTap = new EventEmitter();
|
|
15
|
+
lastTap = 0;
|
|
16
|
+
tapCount = 0;
|
|
17
|
+
tapTimeout: any = null;
|
|
18
|
+
tapGesture = {
|
|
19
|
+
name: 'tap',
|
|
20
|
+
enabled: false,
|
|
21
|
+
interval: 250,
|
|
22
|
+
};
|
|
23
|
+
doubleTapGesture = {
|
|
24
|
+
name: 'doubleTap',
|
|
25
|
+
enabled: false,
|
|
26
|
+
interval: 300,
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
constructor() {
|
|
30
|
+
console.log('Inicou appTap');
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
ngOnInit(): void {
|
|
34
|
+
this.tapGesture.enabled = true;
|
|
35
|
+
this.doubleTapGesture.enabled = true;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
@HostListener('click', ['$event'])
|
|
39
|
+
handleTaps(e: { timeStamp: number; }) {
|
|
40
|
+
const tapTimestamp = Math.floor(e.timeStamp);
|
|
41
|
+
const isDoubleTap = this.lastTap + this.tapGesture.interval > tapTimestamp;
|
|
42
|
+
if (!this.tapGesture.enabled && !this.doubleTapGesture.enabled) {
|
|
43
|
+
return this.resetTaps();
|
|
44
|
+
}
|
|
45
|
+
this.tapCount++;
|
|
46
|
+
if (isDoubleTap && this.doubleTapGesture.enabled) {
|
|
47
|
+
this.emitTaps();
|
|
48
|
+
} else if (!isDoubleTap) {
|
|
49
|
+
this.tapTimeout = setTimeout(() => this.emitTaps(), this.tapGesture.interval);
|
|
50
|
+
}
|
|
51
|
+
this.lastTap = tapTimestamp;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
private emitTaps() {
|
|
55
|
+
if (this.tapCount === 1 && this.tapGesture.enabled) {
|
|
56
|
+
this.tap.emit();
|
|
57
|
+
} else if (this.tapCount === 2 && this.doubleTapGesture.enabled) {
|
|
58
|
+
this.doubleTap.emit();
|
|
59
|
+
}
|
|
60
|
+
this.resetTaps();
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
private resetTaps() {
|
|
64
|
+
clearTimeout(this.tapTimeout); // clear the old timeout
|
|
65
|
+
this.tapCount = 0;
|
|
66
|
+
this.tapTimeout = null;
|
|
67
|
+
this.lastTap = 0;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { IonInputMaskDirective } from './directives/input-mask/input-mask.directive';
|
|
2
|
+
export { PressHoldDirective } from './directives/press-hold/press-hold.directive';
|
|
3
|
+
export { TapDirective } from './directives/tap/tap.directive';
|
|
4
|
+
/** Modules */
|
|
5
|
+
export { IonInputMaskDirectiveModule } from './directives/input-mask/input-mask.module';
|
|
6
|
+
export { PressHoldDirectiveModule } from './directives/press-hold/press-hold.module';
|
|
7
|
+
export { TapDirectiveModule } from './directives/tap/tap.module';
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/* To learn more about this file see: https://angular.io/config/tsconfig. */
|
|
2
|
+
{
|
|
3
|
+
"compileOnSave": false,
|
|
4
|
+
"compilerOptions": {
|
|
5
|
+
"baseUrl": "./",
|
|
6
|
+
"outDir": "./dist",
|
|
7
|
+
"forceConsistentCasingInFileNames": true,
|
|
8
|
+
"allowSyntheticDefaultImports": true,
|
|
9
|
+
"strict": true,
|
|
10
|
+
"noImplicitOverride": true,
|
|
11
|
+
"noPropertyAccessFromIndexSignature": true,
|
|
12
|
+
"noImplicitReturns": true,
|
|
13
|
+
"noFallthroughCasesInSwitch": true,
|
|
14
|
+
"sourceMap": true,
|
|
15
|
+
"declaration": false,
|
|
16
|
+
"downlevelIteration": true,
|
|
17
|
+
"experimentalDecorators": true,
|
|
18
|
+
"moduleResolution": "node",
|
|
19
|
+
"importHelpers": true,
|
|
20
|
+
"target": "es2015",
|
|
21
|
+
"module": "es2020",
|
|
22
|
+
"lib": [
|
|
23
|
+
"es2018",
|
|
24
|
+
"dom"
|
|
25
|
+
],
|
|
26
|
+
"useDefineForClassFields": false
|
|
27
|
+
},
|
|
28
|
+
"include": ["src/**/*"],
|
|
29
|
+
"exclude": ["node_modules", "**/*.test.ts"]
|
|
30
|
+
}
|
package/tslint.json
ADDED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"input-mask.directive.js","sourceRoot":"","sources":["../../../../src/directives/input-mask/input-mask.directive.ts"],"names":[],"mappings":";;;;AAAA,wCAAqD;AACrD,0CAAyC;AAEzC;;GAEG;AAQI,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAI9B;;;;OAIG;IACH,YAAmB,KAAc,EACV,OAAe;QADnB,UAAK,GAAL,KAAK,CAAS;QAE7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,KAAU;QAChB,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,EAC1B,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC3B,IAAI,KAAK,CAAC,aAAa,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;YACtF,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,6EAA6E;gBAC7F,sDAAsD;gBACtD,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE;oBAC3D,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;iBAChD;gBACD,sDAAsD;gBACtD,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;oBACrD,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;iBAChD;aACJ;SACJ;aAAM;YACH,IAAI,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;YAC7B,IAAI,SAAS,GAAG,EAAE,CAAC;YACnB,SAAS,IAAI,KAAK,CAAC;YACnB,IAAI,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE;gBAC5B,2BAA2B;gBAC3B,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE;oBAC/B,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;oBAChC,SAAS,EAAE,CAAC;iBACf;aACJ;YACD,KAAK,GAAG,SAAS,CAAC;SACrB;QACD,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAC3B,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACjC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CAEJ,CAAA;AAtDY,qBAAqB;IAPjC,IAAA,gBAAS,EAAC;QACP,QAAQ,EAAE,WAAW;QACrB,IAAI,EAAE;YACF,WAAW,EAAE,mBAAmB;SACnC;QACD,SAAS,EAAE,CAAC,eAAO,CAAC;KACvB,CAAC;IAWO,mBAAA,IAAA,gBAAS,EAAC,MAAM,CAAC,CAAA;GAVb,qBAAqB,CAsDjC;AAtDY,sDAAqB"}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PressHoldDirective = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const core_1 = require("@angular/core");
|
|
6
|
-
/**
|
|
7
|
-
* Gerencia pressHold
|
|
8
|
-
* @author Starley Cazorla
|
|
9
|
-
*/
|
|
10
|
-
let PressHoldDirective = class PressHoldDirective {
|
|
11
|
-
constructor() {
|
|
12
|
-
this.press = new core_1.EventEmitter();
|
|
13
|
-
this.pressGesture = {
|
|
14
|
-
name: 'press',
|
|
15
|
-
enabled: false,
|
|
16
|
-
interval: 350
|
|
17
|
-
};
|
|
18
|
-
this.pressTimeout = null;
|
|
19
|
-
this.isPressing = false;
|
|
20
|
-
this.lastTap = 0;
|
|
21
|
-
this.tapCount = 0;
|
|
22
|
-
this.tapTimeout = null;
|
|
23
|
-
console.log('Inicou appPressHold');
|
|
24
|
-
}
|
|
25
|
-
ngOnInit() {
|
|
26
|
-
this.pressGesture.enabled = true;
|
|
27
|
-
}
|
|
28
|
-
onPress(event) {
|
|
29
|
-
if (!this.pressGesture.enabled) {
|
|
30
|
-
return;
|
|
31
|
-
} // Press is not enabled, don't do anything.
|
|
32
|
-
this.handlePressing(event.type);
|
|
33
|
-
}
|
|
34
|
-
handlePressing(type) {
|
|
35
|
-
if (type == 'touchstart') {
|
|
36
|
-
this.pressTimeout = setTimeout(() => {
|
|
37
|
-
this.isPressing = true;
|
|
38
|
-
}, this.pressGesture.interval); // Considered a press if it's longer than interval (default: 251).
|
|
39
|
-
}
|
|
40
|
-
else if (type == 'touchend') {
|
|
41
|
-
clearTimeout(this.pressTimeout);
|
|
42
|
-
if (this.isPressing) {
|
|
43
|
-
this.press.emit('end');
|
|
44
|
-
this.resetTaps(); // Just incase this gets passed as a tap event too.
|
|
45
|
-
}
|
|
46
|
-
// Clicks have a natural delay of 300ms, so we have to account for that, before resetting isPressing.
|
|
47
|
-
// Otherwise a tap event is emitted.
|
|
48
|
-
setTimeout(() => this.isPressing = false, 50);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
resetTaps() {
|
|
52
|
-
clearTimeout(this.tapTimeout); // clear the old timeout
|
|
53
|
-
this.tapCount = 0;
|
|
54
|
-
this.tapTimeout = null;
|
|
55
|
-
this.lastTap = 0;
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
tslib_1.__decorate([
|
|
59
|
-
(0, core_1.Output)()
|
|
60
|
-
], PressHoldDirective.prototype, "press", void 0);
|
|
61
|
-
tslib_1.__decorate([
|
|
62
|
-
(0, core_1.HostListener)('touchstart', ['$event']),
|
|
63
|
-
(0, core_1.HostListener)('touchend', ['$event'])
|
|
64
|
-
], PressHoldDirective.prototype, "onPress", null);
|
|
65
|
-
PressHoldDirective = tslib_1.__decorate([
|
|
66
|
-
(0, core_1.Directive)({
|
|
67
|
-
selector: '[appPressHold]'
|
|
68
|
-
})
|
|
69
|
-
], PressHoldDirective);
|
|
70
|
-
exports.PressHoldDirective = PressHoldDirective;
|
|
71
|
-
//# sourceMappingURL=press-hold.directive.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"press-hold.directive.js","sourceRoot":"","sources":["../../../../src/directives/press-hold/press-hold.directive.ts"],"names":[],"mappings":";;;;AAAA,wCAAsF;AAEtF;;;GAGG;AAKI,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAc3B;QAZU,UAAK,GAAG,IAAI,mBAAY,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,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACtC,CAAC;IAEF,QAAQ;QACJ,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC;IACrC,CAAC;IAID,OAAO,CAAC,KAAqB;QACzB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;YAC5B,OAAO;SACV,CAAC,2CAA2C;QAC7C,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAEO,cAAc,CAAC,IAAY;QAC/B,IAAI,IAAI,IAAI,YAAY,EAAE;YACtB,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;gBAChC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YAC3B,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,kEAAkE;SACrG;aAAM,IAAI,IAAI,IAAI,UAAU,EAAE;YAC3B,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAChC,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACvB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,mDAAmD;aACxE;YACD,qGAAqG;YACrG,oCAAoC;YACpC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC;SACjD;IACL,CAAC;IAEO,SAAS;QACb,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;CAEJ,CAAA;AArDa;IAAT,IAAA,aAAM,GAAE;iDAA4B;AAsBrC;IAFC,IAAA,mBAAY,EAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAA,mBAAY,EAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC;iDAMpC;AA7BQ,kBAAkB;IAH9B,IAAA,gBAAS,EAAC;QACP,QAAQ,EAAE,gBAAgB;KAC7B,CAAC;GACW,kBAAkB,CAuD9B;AAvDY,gDAAkB"}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TapDirective = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const core_1 = require("@angular/core");
|
|
6
|
-
/**
|
|
7
|
-
* Gerencia tap e doubleTap
|
|
8
|
-
* @author Starley Cazorla
|
|
9
|
-
*/
|
|
10
|
-
let TapDirective = class TapDirective {
|
|
11
|
-
constructor() {
|
|
12
|
-
this.tap = new core_1.EventEmitter();
|
|
13
|
-
this.doubleTap = new core_1.EventEmitter();
|
|
14
|
-
this.lastTap = 0;
|
|
15
|
-
this.tapCount = 0;
|
|
16
|
-
this.tapTimeout = null;
|
|
17
|
-
this.tapGesture = {
|
|
18
|
-
name: 'tap',
|
|
19
|
-
enabled: false,
|
|
20
|
-
interval: 250,
|
|
21
|
-
};
|
|
22
|
-
this.doubleTapGesture = {
|
|
23
|
-
name: 'doubleTap',
|
|
24
|
-
enabled: false,
|
|
25
|
-
interval: 300,
|
|
26
|
-
};
|
|
27
|
-
console.log('Inicou appTap');
|
|
28
|
-
}
|
|
29
|
-
ngOnInit() {
|
|
30
|
-
this.tapGesture.enabled = true;
|
|
31
|
-
this.doubleTapGesture.enabled = true;
|
|
32
|
-
}
|
|
33
|
-
handleTaps(e) {
|
|
34
|
-
const tapTimestamp = Math.floor(e.timeStamp);
|
|
35
|
-
const isDoubleTap = this.lastTap + this.tapGesture.interval > tapTimestamp;
|
|
36
|
-
if (!this.tapGesture.enabled && !this.doubleTapGesture.enabled) {
|
|
37
|
-
return this.resetTaps();
|
|
38
|
-
}
|
|
39
|
-
this.tapCount++;
|
|
40
|
-
if (isDoubleTap && this.doubleTapGesture.enabled) {
|
|
41
|
-
this.emitTaps();
|
|
42
|
-
}
|
|
43
|
-
else if (!isDoubleTap) {
|
|
44
|
-
this.tapTimeout = setTimeout(() => this.emitTaps(), this.tapGesture.interval);
|
|
45
|
-
}
|
|
46
|
-
this.lastTap = tapTimestamp;
|
|
47
|
-
}
|
|
48
|
-
emitTaps() {
|
|
49
|
-
if (this.tapCount === 1 && this.tapGesture.enabled) {
|
|
50
|
-
this.tap.emit();
|
|
51
|
-
}
|
|
52
|
-
else if (this.tapCount === 2 && this.doubleTapGesture.enabled) {
|
|
53
|
-
this.doubleTap.emit();
|
|
54
|
-
}
|
|
55
|
-
this.resetTaps();
|
|
56
|
-
}
|
|
57
|
-
resetTaps() {
|
|
58
|
-
clearTimeout(this.tapTimeout); // clear the old timeout
|
|
59
|
-
this.tapCount = 0;
|
|
60
|
-
this.tapTimeout = null;
|
|
61
|
-
this.lastTap = 0;
|
|
62
|
-
}
|
|
63
|
-
};
|
|
64
|
-
tslib_1.__decorate([
|
|
65
|
-
(0, core_1.Output)()
|
|
66
|
-
], TapDirective.prototype, "tap", void 0);
|
|
67
|
-
tslib_1.__decorate([
|
|
68
|
-
(0, core_1.Output)()
|
|
69
|
-
], TapDirective.prototype, "doubleTap", void 0);
|
|
70
|
-
tslib_1.__decorate([
|
|
71
|
-
(0, core_1.HostListener)('click', ['$event'])
|
|
72
|
-
], TapDirective.prototype, "handleTaps", null);
|
|
73
|
-
TapDirective = tslib_1.__decorate([
|
|
74
|
-
(0, core_1.Directive)({
|
|
75
|
-
selector: '[appTap]'
|
|
76
|
-
})
|
|
77
|
-
], TapDirective);
|
|
78
|
-
exports.TapDirective = TapDirective;
|
|
79
|
-
//# sourceMappingURL=tap.directive.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tap.directive.js","sourceRoot":"","sources":["../../../../src/directives/tap/tap.directive.ts"],"names":[],"mappings":";;;;AAAA,wCAAsF;AAEtF;;;GAGG;AAKI,IAAM,YAAY,GAAlB,MAAM,YAAY;IAkBrB;QAhBU,QAAG,GAAG,IAAI,mBAAY,EAAE,CAAC;QACzB,cAAS,GAAG,IAAI,mBAAY,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;QAGE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACjC,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC;IACzC,CAAC;IAGD,UAAU,CAAC,CAAyB;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC7C,MAAM,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;YAC5D,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;SAC3B;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,WAAW,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;YAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;SACnB;aAAM,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SACjF;QACD,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC;IAChC,CAAC;IAEO,QAAQ;QACZ,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;YAChD,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;SACnB;aAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;YAC7D,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;SACzB;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;IACrB,CAAC;IAEO,SAAS;QACb,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;CAEJ,CAAA;AAzDa;IAAT,IAAA,aAAM,GAAE;yCAA0B;AACzB;IAAT,IAAA,aAAM,GAAE;+CAAgC;AAyBzC;IADC,IAAA,mBAAY,EAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;8CAcjC;AAzCQ,YAAY;IAHxB,IAAA,gBAAS,EAAC;QACP,QAAQ,EAAE,UAAU;KACvB,CAAC;GACW,YAAY,CA2DxB;AA3DY,oCAAY"}
|
package/dist/cjs/index.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TapDirective = exports.PressHoldDirective = exports.IonInputMaskDirective = void 0;
|
|
4
|
-
var input_mask_directive_1 = require("./directives/input-mask/input-mask.directive");
|
|
5
|
-
Object.defineProperty(exports, "IonInputMaskDirective", { enumerable: true, get: function () { return input_mask_directive_1.IonInputMaskDirective; } });
|
|
6
|
-
var press_hold_directive_1 = require("./directives/press-hold/press-hold.directive");
|
|
7
|
-
Object.defineProperty(exports, "PressHoldDirective", { enumerable: true, get: function () { return press_hold_directive_1.PressHoldDirective; } });
|
|
8
|
-
var tap_directive_1 = require("./directives/tap/tap.directive");
|
|
9
|
-
Object.defineProperty(exports, "TapDirective", { enumerable: true, get: function () { return tap_directive_1.TapDirective; } });
|
|
10
|
-
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,qFAAqF;AAA5E,6HAAA,qBAAqB,OAAA;AAC9B,qFAAkF;AAAzE,0HAAA,kBAAkB,OAAA;AAC3B,gEAA8D;AAArD,6GAAA,YAAY,OAAA"}
|