@rdlabo/ionic-theme-ios26 1.2.1 → 1.2.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sheets-of-glass/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAUjF,eAAO,MAAM,cAAc,GACzB,eAAe,WAAW,EAC1B,eAAe,MAAM,EACrB,mBAAmB,MAAM,EACzB,QAAQ,YAAY,KACnB,gBAAgB,GAAG,SA8LrB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sheets-of-glass/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAUjF,eAAO,MAAM,cAAc,GACzB,eAAe,WAAW,EAC1B,eAAe,MAAM,EACrB,mBAAmB,MAAM,EACzB,QAAQ,YAAY,KACnB,gBAAgB,GAAG,SAmMrB,CAAC"}
@@ -15,15 +15,18 @@ export const registerEffect = (targetElement, effectTagName, selectedClassName,
15
15
  let scaleAnimationPromise;
16
16
  let startAnimationPromise;
17
17
  let maxVelocity = 0;
18
- let wasRealUserClick = false;
18
+ let isUseMove = false;
19
+ let isRealUserClick = false;
19
20
  const effectElement = cloneElement(effectTagName);
20
- const onPointerDown = () => {
21
+ const onPointerDown = (event) => {
22
+ targetElement.setPointerCapture(event.pointerId);
21
23
  clearActivated();
22
24
  gesture.destroy();
23
25
  createAnimationGesture();
24
26
  };
25
27
  const onPointerUp = (event) => {
26
- wasRealUserClick = true;
28
+ targetElement.releasePointerCapture(event.pointerId);
29
+ isRealUserClick = true;
27
30
  clearActivatedTimer = setTimeout(async () => {
28
31
  await onEndGesture();
29
32
  gesture.destroy();
@@ -51,7 +54,7 @@ export const registerEffect = (targetElement, effectTagName, selectedClassName,
51
54
  if (!currentTouchedElement) {
52
55
  return;
53
56
  }
54
- if (!wasRealUserClick) {
57
+ if (!isRealUserClick || isUseMove) {
55
58
  currentTouchedElement.click();
56
59
  }
57
60
  currentTouchedElement?.classList.remove('ion-activated');
@@ -59,7 +62,7 @@ export const registerEffect = (targetElement, effectTagName, selectedClassName,
59
62
  effectElement.style.display = 'none';
60
63
  maxVelocity = 0;
61
64
  targetElement.classList.remove(ANIMATED_NAME);
62
- wasRealUserClick = false;
65
+ isRealUserClick = false;
63
66
  };
64
67
  const onStartGesture = (detail) => {
65
68
  currentTouchedElement = detail.event.target.closest(effectTagName) || undefined;
@@ -67,6 +70,7 @@ export const registerEffect = (targetElement, effectTagName, selectedClassName,
67
70
  if (currentTouchedElement === undefined || tabSelectedElement === null) {
68
71
  return false;
69
72
  }
73
+ isUseMove = false;
70
74
  animationPosition = {
71
75
  minPositionX: targetElement.getBoundingClientRect().left,
72
76
  maxPositionX: targetElement.getBoundingClientRect().right - tabSelectedElement.clientWidth,
@@ -92,6 +96,7 @@ export const registerEffect = (targetElement, effectTagName, selectedClassName,
92
96
  return true;
93
97
  };
94
98
  const onMoveGesture = (detail) => {
99
+ isUseMove = true;
95
100
  if (currentTouchedElement === undefined || !moveAnimation) {
96
101
  return false;
97
102
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rdlabo/ionic-theme-ios26",
3
- "version": "1.2.1",
3
+ "version": "1.2.3",
4
4
  "description": "iOS26 Theme for Ionic Framework",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -26,20 +26,23 @@ export const registerEffect = (
26
26
  let scaleAnimationPromise: Promise<void> | undefined;
27
27
  let startAnimationPromise: Promise<void> | undefined;
28
28
  let maxVelocity = 0;
29
- let wasRealUserClick = false;
29
+ let isUseMove = false;
30
+ let isRealUserClick = false;
30
31
  const effectElement = cloneElement(effectTagName);
31
32
 
32
33
  /**
33
34
  * These event listeners fix a bug where gestures don't complete properly.
34
35
  * They terminate the gesture using native events as a fallback.
35
36
  */
36
- const onPointerDown = () => {
37
+ const onPointerDown = (event: PointerEvent) => {
38
+ targetElement.setPointerCapture(event.pointerId);
37
39
  clearActivated();
38
40
  gesture.destroy();
39
41
  createAnimationGesture();
40
42
  };
41
43
  const onPointerUp = (event: PointerEvent) => {
42
- wasRealUserClick = true;
44
+ targetElement.releasePointerCapture(event.pointerId);
45
+ isRealUserClick = true;
43
46
  clearActivatedTimer = setTimeout(async () => {
44
47
  await onEndGesture();
45
48
  gesture.destroy();
@@ -70,7 +73,7 @@ export const registerEffect = (
70
73
  if (!currentTouchedElement) {
71
74
  return;
72
75
  }
73
- if (!wasRealUserClick) {
76
+ if (!isRealUserClick || isUseMove) {
74
77
  currentTouchedElement!.click();
75
78
  }
76
79
  currentTouchedElement?.classList.remove('ion-activated');
@@ -78,7 +81,7 @@ export const registerEffect = (
78
81
  effectElement.style.display = 'none';
79
82
  maxVelocity = 0;
80
83
  targetElement.classList.remove(ANIMATED_NAME);
81
- wasRealUserClick = false;
84
+ isRealUserClick = false;
82
85
  };
83
86
 
84
87
  const onStartGesture = (detail: GestureDetail): boolean | undefined => {
@@ -87,6 +90,7 @@ export const registerEffect = (
87
90
  if (currentTouchedElement === undefined || tabSelectedElement === null) {
88
91
  return false;
89
92
  }
93
+ isUseMove = false;
90
94
  animationPosition = {
91
95
  minPositionX: targetElement.getBoundingClientRect().left,
92
96
  maxPositionX: targetElement.getBoundingClientRect().right - tabSelectedElement.clientWidth,
@@ -116,6 +120,7 @@ export const registerEffect = (
116
120
  };
117
121
 
118
122
  const onMoveGesture = (detail: GestureDetail): boolean | undefined => {
123
+ isUseMove = true;
119
124
  if (currentTouchedElement === undefined || !moveAnimation) {
120
125
  return false; // Skip Animation
121
126
  }