@starley/ion-directives 1.1.16 → 1.1.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Gerencia precionamento de enventos
3
+ * @author Starley Cazorla
4
+ */
5
+ export declare class DirectivesModule {
6
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.DirectivesModule = void 0;
10
+ var core_1 = require("@angular/core");
11
+ var press_hold_directive_1 = require("./press-hold/press-hold.directive");
12
+ var tap_directive_1 = require("./tap/tap.directive");
13
+ var input_mask_directive_1 = require("./input-mask/input-mask.directive");
14
+ /**
15
+ * Gerencia precionamento de enventos
16
+ * @author Starley Cazorla
17
+ */
18
+ var DirectivesModule = /** @class */ (function () {
19
+ function DirectivesModule() {
20
+ }
21
+ DirectivesModule = __decorate([
22
+ (0, core_1.NgModule)({
23
+ declarations: [
24
+ press_hold_directive_1.PressHoldDirective,
25
+ tap_directive_1.TapDirective,
26
+ input_mask_directive_1.IonInputMaskDirective
27
+ ],
28
+ imports: [],
29
+ exports: [
30
+ press_hold_directive_1.PressHoldDirective,
31
+ tap_directive_1.TapDirective,
32
+ input_mask_directive_1.IonInputMaskDirective
33
+ ]
34
+ })
35
+ ], DirectivesModule);
36
+ return DirectivesModule;
37
+ }());
38
+ exports.DirectivesModule = DirectivesModule;
@@ -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,78 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
9
+ return function (target, key) { decorator(target, key, paramIndex); }
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.IonInputMaskDirective = void 0;
13
+ var core_1 = require("@angular/core");
14
+ var forms_1 = require("@angular/forms");
15
+ /**
16
+ * Responsavel pelo mascaramento de inputs
17
+ */
18
+ var IonInputMaskDirective = /** @class */ (function () {
19
+ /**
20
+ * Construtor
21
+ * @param {NgModel} model
22
+ * @param {string} pattern
23
+ */
24
+ function IonInputMaskDirective(model, pattern) {
25
+ this.model = model;
26
+ this.pattern = pattern;
27
+ console.log('Inicou inputMask');
28
+ }
29
+ /**
30
+ * Listener para mudança de valor do input
31
+ * @param event
32
+ */
33
+ IonInputMaskDirective.prototype.onKeyDown = function (event) {
34
+ var value = event.target.value, pattern = this.pattern;
35
+ if (event.keyIdentifier === 'U+0008' || event.keyCode === 8 || event.key === 'Backspace') {
36
+ if (value.length) { //prevent fatal exception when backspacing empty value in progressive web app
37
+ //remove all trailing formatting then delete character
38
+ while (pattern[value.length] && pattern[value.length] !== '*') {
39
+ value = value.substring(0, value.length - 1);
40
+ }
41
+ //remove all leading formatting to restore placeholder
42
+ if (pattern.substring(0, value.length).indexOf('*') < 0) {
43
+ value = value.substring(0, value.length - 1);
44
+ }
45
+ }
46
+ }
47
+ else {
48
+ var maskIndex = value.length;
49
+ var formatted = '';
50
+ formatted += value;
51
+ if (maskIndex < pattern.length) {
52
+ //apply trailing formatting
53
+ while (pattern[maskIndex] !== '*') {
54
+ formatted += pattern[maskIndex];
55
+ maskIndex++;
56
+ }
57
+ }
58
+ value = formatted;
59
+ }
60
+ event.target.value = value;
61
+ if (this.model) {
62
+ this.model.update.emit(value);
63
+ }
64
+ return true;
65
+ };
66
+ IonInputMaskDirective = __decorate([
67
+ (0, core_1.Directive)({
68
+ selector: '[appMask]',
69
+ host: {
70
+ '(keydown)': 'onKeyDown($event)'
71
+ },
72
+ providers: [forms_1.NgModel]
73
+ }),
74
+ __param(1, (0, core_1.Attribute)('appMask'))
75
+ ], IonInputMaskDirective);
76
+ return IonInputMaskDirective;
77
+ }());
78
+ exports.IonInputMaskDirective = IonInputMaskDirective;
@@ -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,77 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.PressHoldDirective = void 0;
10
+ var core_1 = require("@angular/core");
11
+ /**
12
+ * Gerencia pressHold
13
+ * @author Starley Cazorla
14
+ */
15
+ var PressHoldDirective = /** @class */ (function () {
16
+ function PressHoldDirective() {
17
+ this.press = new core_1.EventEmitter();
18
+ this.pressGesture = {
19
+ name: 'press',
20
+ enabled: false,
21
+ interval: 350
22
+ };
23
+ this.pressTimeout = null;
24
+ this.isPressing = false;
25
+ this.lastTap = 0;
26
+ this.tapCount = 0;
27
+ this.tapTimeout = null;
28
+ console.log('Inicou appPressHold');
29
+ }
30
+ PressHoldDirective.prototype.ngOnInit = function () {
31
+ this.pressGesture.enabled = true;
32
+ };
33
+ PressHoldDirective.prototype.onPress = function (event) {
34
+ if (!this.pressGesture.enabled) {
35
+ return;
36
+ } // Press is not enabled, don't do anything.
37
+ this.handlePressing(event.type);
38
+ };
39
+ PressHoldDirective.prototype.handlePressing = function (type) {
40
+ var _this = this;
41
+ if (type == 'touchstart') {
42
+ this.pressTimeout = setTimeout(function () {
43
+ _this.isPressing = true;
44
+ }, this.pressGesture.interval); // Considered a press if it's longer than interval (default: 251).
45
+ }
46
+ else if (type == 'touchend') {
47
+ clearTimeout(this.pressTimeout);
48
+ if (this.isPressing) {
49
+ this.press.emit('end');
50
+ this.resetTaps(); // Just incase this gets passed as a tap event too.
51
+ }
52
+ // Clicks have a natural delay of 300ms, so we have to account for that, before resetting isPressing.
53
+ // Otherwise a tap event is emitted.
54
+ setTimeout(function () { return _this.isPressing = false; }, 50);
55
+ }
56
+ };
57
+ PressHoldDirective.prototype.resetTaps = function () {
58
+ clearTimeout(this.tapTimeout); // clear the old timeout
59
+ this.tapCount = 0;
60
+ this.tapTimeout = null;
61
+ this.lastTap = 0;
62
+ };
63
+ __decorate([
64
+ (0, core_1.Output)()
65
+ ], PressHoldDirective.prototype, "press", void 0);
66
+ __decorate([
67
+ (0, core_1.HostListener)('touchstart', ['$event']),
68
+ (0, core_1.HostListener)('touchend', ['$event'])
69
+ ], PressHoldDirective.prototype, "onPress", null);
70
+ PressHoldDirective = __decorate([
71
+ (0, core_1.Directive)({
72
+ selector: '[appPressHold]'
73
+ })
74
+ ], PressHoldDirective);
75
+ return PressHoldDirective;
76
+ }());
77
+ exports.PressHoldDirective = PressHoldDirective;
@@ -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
+ }
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.TapDirective = void 0;
10
+ var core_1 = require("@angular/core");
11
+ /**
12
+ * Gerencia tap e doubleTap
13
+ * @author Starley Cazorla
14
+ */
15
+ var TapDirective = /** @class */ (function () {
16
+ function TapDirective() {
17
+ this.tap = new core_1.EventEmitter();
18
+ this.doubleTap = new core_1.EventEmitter();
19
+ this.lastTap = 0;
20
+ this.tapCount = 0;
21
+ this.tapTimeout = null;
22
+ this.tapGesture = {
23
+ name: 'tap',
24
+ enabled: false,
25
+ interval: 250,
26
+ };
27
+ this.doubleTapGesture = {
28
+ name: 'doubleTap',
29
+ enabled: false,
30
+ interval: 300,
31
+ };
32
+ console.log('Inicou appTap');
33
+ }
34
+ TapDirective.prototype.ngOnInit = function () {
35
+ this.tapGesture.enabled = true;
36
+ this.doubleTapGesture.enabled = true;
37
+ };
38
+ TapDirective.prototype.handleTaps = function (e) {
39
+ var _this = this;
40
+ var tapTimestamp = Math.floor(e.timeStamp);
41
+ var 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
+ }
49
+ else if (!isDoubleTap) {
50
+ this.tapTimeout = setTimeout(function () { return _this.emitTaps(); }, this.tapGesture.interval);
51
+ }
52
+ this.lastTap = tapTimestamp;
53
+ };
54
+ TapDirective.prototype.emitTaps = function () {
55
+ if (this.tapCount === 1 && this.tapGesture.enabled) {
56
+ this.tap.emit();
57
+ }
58
+ else if (this.tapCount === 2 && this.doubleTapGesture.enabled) {
59
+ this.doubleTap.emit();
60
+ }
61
+ this.resetTaps();
62
+ };
63
+ TapDirective.prototype.resetTaps = function () {
64
+ clearTimeout(this.tapTimeout); // clear the old timeout
65
+ this.tapCount = 0;
66
+ this.tapTimeout = null;
67
+ this.lastTap = 0;
68
+ };
69
+ __decorate([
70
+ (0, core_1.Output)()
71
+ ], TapDirective.prototype, "tap", void 0);
72
+ __decorate([
73
+ (0, core_1.Output)()
74
+ ], TapDirective.prototype, "doubleTap", void 0);
75
+ __decorate([
76
+ (0, core_1.HostListener)('click', ['$event'])
77
+ ], TapDirective.prototype, "handleTaps", null);
78
+ TapDirective = __decorate([
79
+ (0, core_1.Directive)({
80
+ selector: '[appTap]'
81
+ })
82
+ ], TapDirective);
83
+ return TapDirective;
84
+ }());
85
+ exports.TapDirective = TapDirective;
package/gitignore ADDED
@@ -0,0 +1,3 @@
1
+ dist/
2
+ node_modules/
3
+ package-lock.json
package/index.ts ADDED
@@ -0,0 +1,4 @@
1
+ export * from './src/input-mask/input-mask.directive'
2
+ export * from './src/press-hold/press-hold.directive';
3
+ export * from './src/tap/tap.directive'
4
+ export * from './src/directive.module';
package/package.json CHANGED
@@ -1,15 +1,12 @@
1
1
  {
2
2
  "name": "@starley/ion-directives",
3
- "version": "1.1.16",
3
+ "version": "1.1.18",
4
4
  "description": "Directivas internas para ionic",
5
5
  "main": "dist/index.js",
6
- "module": "dist/index.d.ts",
7
- "files": [
8
- "dist"
9
- ],
6
+ "types": "dist/index.d.ts",
10
7
  "scripts": {
11
- "build": "tsc --module esnext",
12
- "dev": "nodemon --watch \"scr//\" --exec \"ts-node dist/index.js\" -e ts"
8
+ "build": "tsc --declaration",
9
+ "dev": "nodemon --watch \"src//\" --exec \"ts-node src/index.ts\" -e ts"
13
10
  },
14
11
  "peerDependencies": {
15
12
  "@angular/common": "^15.1.1 || ^11.2.4 || ~10.0.0",
@@ -0,0 +1,25 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { PressHoldDirective } from './press-hold/press-hold.directive';
3
+ import { TapDirective } from './tap/tap.directive';
4
+ import { IonInputMaskDirective } from './input-mask/input-mask.directive';
5
+
6
+ /**
7
+ * Gerencia precionamento de enventos
8
+ * @author Starley Cazorla
9
+ */
10
+
11
+ @NgModule({
12
+ declarations: [
13
+ PressHoldDirective,
14
+ TapDirective,
15
+ IonInputMaskDirective
16
+ ],
17
+ imports: [],
18
+ exports: [
19
+ PressHoldDirective,
20
+ TapDirective,
21
+ IonInputMaskDirective
22
+ ]
23
+
24
+ })
25
+ export class DirectivesModule { }
@@ -1,26 +1,39 @@
1
- import { __decorate, __param } from "tslib";
2
1
  import { Attribute, Directive } from '@angular/core';
3
2
  import { NgModel } from "@angular/forms";
3
+
4
4
  /**
5
5
  * Responsavel pelo mascaramento de inputs
6
6
  */
7
- let IonInputMaskDirective = class IonInputMaskDirective {
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
+
8
18
  /**
9
19
  * Construtor
10
20
  * @param {NgModel} model
11
21
  * @param {string} pattern
12
22
  */
13
- constructor(model, pattern) {
14
- this.model = model;
23
+ constructor(public model: NgModel,
24
+ @Attribute('appMask') pattern: string) {
15
25
  this.pattern = pattern;
26
+
16
27
  console.log('Inicou inputMask');
17
28
  }
29
+
18
30
  /**
19
31
  * Listener para mudança de valor do input
20
32
  * @param event
21
33
  */
22
- onKeyDown(event) {
23
- let value = event.target.value, pattern = this.pattern;
34
+ onKeyDown(event: any) {
35
+ let value = event.target.value,
36
+ pattern = this.pattern;
24
37
  if (event.keyIdentifier === 'U+0008' || event.keyCode === 8 || event.key === 'Backspace') {
25
38
  if (value.length) { //prevent fatal exception when backspacing empty value in progressive web app
26
39
  //remove all trailing formatting then delete character
@@ -32,8 +45,7 @@ let IonInputMaskDirective = class IonInputMaskDirective {
32
45
  value = value.substring(0, value.length - 1);
33
46
  }
34
47
  }
35
- }
36
- else {
48
+ } else {
37
49
  let maskIndex = value.length;
38
50
  let formatted = '';
39
51
  formatted += value;
@@ -52,16 +64,5 @@ let IonInputMaskDirective = class IonInputMaskDirective {
52
64
  }
53
65
  return true;
54
66
  }
55
- };
56
- IonInputMaskDirective = __decorate([
57
- Directive({
58
- selector: '[appMask]',
59
- host: {
60
- '(keydown)': 'onKeyDown($event)'
61
- },
62
- providers: [NgModel]
63
- }),
64
- __param(1, Attribute('appMask'))
65
- ], IonInputMaskDirective);
66
- export { IonInputMaskDirective };
67
- //# sourceMappingURL=input-mask.directive.js.map
67
+
68
+ }
@@ -1,40 +1,50 @@
1
- import { __decorate } from "tslib";
2
- import { Directive, EventEmitter, HostListener, Output } from '@angular/core';
1
+ import { Directive, EventEmitter, HostListener, OnInit, Output } from '@angular/core';
2
+
3
3
  /**
4
4
  * Gerencia pressHold
5
5
  * @author Starley Cazorla
6
6
  */
7
- let PressHoldDirective = class PressHoldDirective {
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
+
8
25
  constructor() {
9
- this.press = new EventEmitter();
10
- this.pressGesture = {
11
- name: 'press',
12
- enabled: false,
13
- interval: 350
14
- };
15
- this.pressTimeout = null;
16
- this.isPressing = false;
17
- this.lastTap = 0;
18
- this.tapCount = 0;
19
- this.tapTimeout = null;
20
26
  console.log('Inicou appPressHold');
21
- }
22
- ngOnInit() {
27
+ }
28
+
29
+ ngOnInit(): void {
23
30
  this.pressGesture.enabled = true;
24
31
  }
25
- onPress(event) {
32
+
33
+ @HostListener('touchstart', ['$event'])
34
+ @HostListener('touchend', ['$event'])
35
+ onPress(event: { type: any; }) {
26
36
  if (!this.pressGesture.enabled) {
27
37
  return;
28
38
  } // Press is not enabled, don't do anything.
29
39
  this.handlePressing(event.type);
30
40
  }
31
- handlePressing(type) {
41
+
42
+ private handlePressing(type: string) { // touchend or touchstart
32
43
  if (type == 'touchstart') {
33
44
  this.pressTimeout = setTimeout(() => {
34
45
  this.isPressing = true;
35
46
  }, this.pressGesture.interval); // Considered a press if it's longer than interval (default: 251).
36
- }
37
- else if (type == 'touchend') {
47
+ } else if (type == 'touchend') {
38
48
  clearTimeout(this.pressTimeout);
39
49
  if (this.isPressing) {
40
50
  this.press.emit('end');
@@ -45,24 +55,12 @@ let PressHoldDirective = class PressHoldDirective {
45
55
  setTimeout(() => this.isPressing = false, 50);
46
56
  }
47
57
  }
48
- resetTaps() {
58
+
59
+ private resetTaps() {
49
60
  clearTimeout(this.tapTimeout); // clear the old timeout
50
61
  this.tapCount = 0;
51
62
  this.tapTimeout = null;
52
63
  this.lastTap = 0;
53
64
  }
54
- };
55
- __decorate([
56
- Output()
57
- ], PressHoldDirective.prototype, "press", void 0);
58
- __decorate([
59
- HostListener('touchstart', ['$event']),
60
- HostListener('touchend', ['$event'])
61
- ], PressHoldDirective.prototype, "onPress", null);
62
- PressHoldDirective = __decorate([
63
- Directive({
64
- selector: '[appPressHold]'
65
- })
66
- ], PressHoldDirective);
67
- export { PressHoldDirective };
68
- //# sourceMappingURL=press-hold.directive.js.map
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/tsconfig.json ADDED
@@ -0,0 +1,16 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "es5",
4
+ "module": "commonjs",
5
+ "outDir": "./dist",
6
+ "strict": true,
7
+ "noUnusedLocals": true,
8
+ "noUnusedParameters": true,
9
+ "noImplicitReturns": true,
10
+ "experimentalDecorators": true,
11
+ "noFallthroughCasesInSwitch": true,
12
+ "esModuleInterop": true
13
+ },
14
+ "include": ["src/**/*"],
15
+ "exclude": ["node_modules", "**/*.test.ts"]
16
+ }
package/tslint.json ADDED
@@ -0,0 +1,17 @@
1
+ {
2
+ "extends": "../../../tslint.json",
3
+ "rules": {
4
+ "directive-selector": [
5
+ true,
6
+ "attribute",
7
+ "lib",
8
+ "camelCase"
9
+ ],
10
+ "component-selector": [
11
+ true,
12
+ "element",
13
+ "lib",
14
+ "kebab-case"
15
+ ]
16
+ }
17
+ }
package/dist/index.js DELETED
@@ -1,5 +0,0 @@
1
- export * from './src/input-mask/input-mask.directive';
2
- export * from './src/press-hold/press-hold.directive';
3
- export * from './src/tap/tap.directive';
4
- export * from './src/directive.module';
5
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,uCAAuC,CAAA;AACrD,cAAc,uCAAuC,CAAC;AACtD,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAC"}
@@ -1,28 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { NgModule } from '@angular/core';
3
- import { PressHoldDirective } from './press-hold/press-hold.directive';
4
- import { TapDirective } from './tap/tap.directive';
5
- import { IonInputMaskDirective } from './input-mask/input-mask.directive';
6
- /**
7
- * Gerencia precionamento de enventos
8
- * @author Starley Cazorla
9
- */
10
- let DirectivesModule = class DirectivesModule {
11
- };
12
- DirectivesModule = __decorate([
13
- NgModule({
14
- declarations: [
15
- PressHoldDirective,
16
- TapDirective,
17
- IonInputMaskDirective
18
- ],
19
- imports: [],
20
- exports: [
21
- PressHoldDirective,
22
- TapDirective,
23
- IonInputMaskDirective
24
- ]
25
- })
26
- ], DirectivesModule);
27
- export { DirectivesModule };
28
- //# sourceMappingURL=directive.module.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"directive.module.js","sourceRoot":"","sources":["../../src/directive.module.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE1E;;;GAGG;AAgBI,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;CAAI,CAAA;AAApB,gBAAgB;IAd5B,QAAQ,CAAC;QACN,YAAY,EAAE;YACV,kBAAkB;YAClB,YAAY;YACZ,qBAAqB;SACxB;QACD,OAAO,EAAE,EAAE;QACX,OAAO,EAAE;YACL,kBAAkB;YAClB,YAAY;YACZ,qBAAqB;SACxB;KAEJ,CAAC;GACW,gBAAgB,CAAI;SAApB,gBAAgB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"input-mask.directive.js","sourceRoot":"","sources":["../../../src/input-mask/input-mask.directive.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC;;GAEG;AAQI,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAI9B;;;;OAIG;IACH,YAAmB,KAAc,EACP,OAAe;QADtB,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,SAAS,CAAC;QACP,QAAQ,EAAE,WAAW;QACrB,IAAI,EAAE;YACF,WAAW,EAAE,mBAAmB;SACnC;QACD,SAAS,EAAE,CAAC,OAAO,CAAC;KACvB,CAAC;IAWO,WAAA,SAAS,CAAC,SAAS,CAAC,CAAA;GAVhB,qBAAqB,CAsDjC;SAtDY,qBAAqB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"press-hold.directive.js","sourceRoot":"","sources":["../../../src/press-hold/press-hold.directive.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAU,MAAM,EAAE,MAAM,eAAe,CAAC;AAEtF;;;GAGG;AAKI,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAc3B;QAZU,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,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,MAAM,EAAE;iDAA4B;AAsBrC;IAFC,YAAY,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC;IACtC,YAAY,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC;iDAMpC;AA7BQ,kBAAkB;IAH9B,SAAS,CAAC;QACP,QAAQ,EAAE,gBAAgB;KAC7B,CAAC;GACW,kBAAkB,CAuD9B;SAvDY,kBAAkB"}
@@ -1,76 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { Directive, EventEmitter, HostListener, Output } from '@angular/core';
3
- /**
4
- * Gerencia tap e doubleTap
5
- * @author Starley Cazorla
6
- */
7
- let TapDirective = class TapDirective {
8
- constructor() {
9
- this.tap = new EventEmitter();
10
- this.doubleTap = new EventEmitter();
11
- this.lastTap = 0;
12
- this.tapCount = 0;
13
- this.tapTimeout = null;
14
- this.tapGesture = {
15
- name: 'tap',
16
- enabled: false,
17
- interval: 250,
18
- };
19
- this.doubleTapGesture = {
20
- name: 'doubleTap',
21
- enabled: false,
22
- interval: 300,
23
- };
24
- console.log('Inicou appTap');
25
- }
26
- ngOnInit() {
27
- this.tapGesture.enabled = true;
28
- this.doubleTapGesture.enabled = true;
29
- }
30
- handleTaps(e) {
31
- const tapTimestamp = Math.floor(e.timeStamp);
32
- const isDoubleTap = this.lastTap + this.tapGesture.interval > tapTimestamp;
33
- if (!this.tapGesture.enabled && !this.doubleTapGesture.enabled) {
34
- return this.resetTaps();
35
- }
36
- this.tapCount++;
37
- if (isDoubleTap && this.doubleTapGesture.enabled) {
38
- this.emitTaps();
39
- }
40
- else if (!isDoubleTap) {
41
- this.tapTimeout = setTimeout(() => this.emitTaps(), this.tapGesture.interval);
42
- }
43
- this.lastTap = tapTimestamp;
44
- }
45
- emitTaps() {
46
- if (this.tapCount === 1 && this.tapGesture.enabled) {
47
- this.tap.emit();
48
- }
49
- else if (this.tapCount === 2 && this.doubleTapGesture.enabled) {
50
- this.doubleTap.emit();
51
- }
52
- this.resetTaps();
53
- }
54
- resetTaps() {
55
- clearTimeout(this.tapTimeout); // clear the old timeout
56
- this.tapCount = 0;
57
- this.tapTimeout = null;
58
- this.lastTap = 0;
59
- }
60
- };
61
- __decorate([
62
- Output()
63
- ], TapDirective.prototype, "tap", void 0);
64
- __decorate([
65
- Output()
66
- ], TapDirective.prototype, "doubleTap", void 0);
67
- __decorate([
68
- HostListener('click', ['$event'])
69
- ], TapDirective.prototype, "handleTaps", null);
70
- TapDirective = __decorate([
71
- Directive({
72
- selector: '[appTap]'
73
- })
74
- ], TapDirective);
75
- export { TapDirective };
76
- //# sourceMappingURL=tap.directive.js.map
@@ -1 +0,0 @@
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;AAKI,IAAM,YAAY,GAAlB,MAAM,YAAY;IAkBrB;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;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,MAAM,EAAE;yCAA0B;AACzB;IAAT,MAAM,EAAE;+CAAgC;AAyBzC;IADC,YAAY,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;8CAcjC;AAzCQ,YAAY;IAHxB,SAAS,CAAC;QACP,QAAQ,EAAE,UAAU;KACvB,CAAC;GACW,YAAY,CA2DxB;SA3DY,YAAY"}