@swiftwc/ui 0.0.0-dev.13 → 0.0.0-dev.14
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/generated/components/tab-bar.js +4 -4
- package/generated/components/tool-bar-item.js +2 -2
- package/generated/css/index.css +1 -0
- package/generated/internal/utils/list-active.js +57 -12
- package/generated/internal/utils/touch-glass.js +5 -5
- package/package.json +1 -1
- package/scss/base/_reboot.scss +2 -0
|
@@ -25,9 +25,9 @@ export class TabBar extends DialogBase {
|
|
|
25
25
|
}), el).on());
|
|
26
26
|
// })
|
|
27
27
|
}
|
|
28
|
-
static #handleClick = async (
|
|
29
|
-
console.debug(`${TabBar.name} ⚡️ ${
|
|
30
|
-
if ('DIALOG' ===
|
|
31
|
-
|
|
28
|
+
static #handleClick = async (evt) => {
|
|
29
|
+
console.debug(`${TabBar.name} ⚡️ ${evt?.type}`);
|
|
30
|
+
if ('DIALOG' === evt.target.tagName && 'tab-bar' === evt.target.getAttribute('is'))
|
|
31
|
+
evt?.target?.close?.();
|
|
32
32
|
};
|
|
33
33
|
}
|
|
@@ -6,8 +6,8 @@ export class ToolBarItem extends HTMLElement {
|
|
|
6
6
|
}
|
|
7
7
|
connectedCallback() {
|
|
8
8
|
console.debug(`${ToolBarItem.name} ⚡️ connect`);
|
|
9
|
-
CleanupRegistry.register(this, onoff(touchGlass(this, (t) => t.closest('tool-bar-item-group') ?? t, (
|
|
10
|
-
if (
|
|
9
|
+
CleanupRegistry.register(this, onoff(touchGlass(this, (t) => t.closest('tool-bar-item-group') ?? t, (evt) => {
|
|
10
|
+
if (evt.target.closest('menu-view[open]'))
|
|
11
11
|
return false;
|
|
12
12
|
return true;
|
|
13
13
|
}), this).on());
|
package/generated/css/index.css
CHANGED
|
@@ -1,28 +1,73 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
const touchList = new WeakMap();
|
|
2
|
+
function onDown(evt) {
|
|
3
|
+
const el = evt.target.closest('button,summary');
|
|
3
4
|
if (!el)
|
|
4
5
|
return;
|
|
6
|
+
touchList.set(el, setTimeout(() => {
|
|
7
|
+
if (!touchList.has(el))
|
|
8
|
+
return;
|
|
9
|
+
el.classList.add('active');
|
|
10
|
+
}, 70));
|
|
11
|
+
el.addEventListener('pointerleave', onLeave, { once: true, passive: true });
|
|
12
|
+
el.closest('scroll-view')?.addEventListener('scroll', onScroll, { once: true, passive: true });
|
|
13
|
+
}
|
|
14
|
+
function onOver(evt) {
|
|
15
|
+
const el = evt.target.closest('button,summary');
|
|
16
|
+
if (!el)
|
|
17
|
+
return;
|
|
18
|
+
if (0 === evt.buttons)
|
|
19
|
+
return;
|
|
5
20
|
el.classList.add('active');
|
|
6
|
-
el.
|
|
21
|
+
el.removeEventListener('pointerover', onOver);
|
|
22
|
+
el.addEventListener('pointerleave', onLeave, { once: true, passive: true });
|
|
7
23
|
}
|
|
8
|
-
function
|
|
9
|
-
const el =
|
|
24
|
+
function onLeave(evt) {
|
|
25
|
+
const el = evt.target.closest('button,summary');
|
|
10
26
|
if (!el)
|
|
11
27
|
return;
|
|
12
|
-
|
|
13
|
-
|
|
28
|
+
el.addEventListener('pointerover', onOver, { once: true, passive: true });
|
|
29
|
+
// self.requestAnimationFrame(() => {
|
|
30
|
+
el.removeEventListener('pointerleave', onLeave);
|
|
31
|
+
el.closest('scroll-view')?.removeEventListener('scroll', onScroll);
|
|
32
|
+
el.classList.remove('active');
|
|
33
|
+
if (touchList.has(el))
|
|
34
|
+
clearTimeout(touchList.get(el));
|
|
35
|
+
touchList.delete(el);
|
|
36
|
+
// })
|
|
37
|
+
}
|
|
38
|
+
function onCancel(evt) {
|
|
39
|
+
const el = evt.target.closest('button,summary');
|
|
40
|
+
if (!el)
|
|
41
|
+
return;
|
|
42
|
+
// self.requestAnimationFrame(() => {
|
|
43
|
+
el.removeEventListener('pointerleave', onLeave);
|
|
44
|
+
el.removeEventListener('pointerover', onOver);
|
|
45
|
+
el.closest('scroll-view')?.removeEventListener('scroll', onScroll);
|
|
46
|
+
el.classList.remove('active');
|
|
47
|
+
if (touchList.has(el))
|
|
48
|
+
clearTimeout(touchList.get(el));
|
|
49
|
+
touchList.delete(el);
|
|
50
|
+
// })
|
|
51
|
+
}
|
|
52
|
+
function onScroll(evt) {
|
|
53
|
+
for (const el of evt.target.querySelectorAll('button,summary')) {
|
|
14
54
|
el.classList.remove('active');
|
|
15
|
-
|
|
55
|
+
if (touchList.has(el))
|
|
56
|
+
clearTimeout(touchList.get(el));
|
|
57
|
+
touchList.delete(el);
|
|
58
|
+
el.removeEventListener('pointerleave', onLeave);
|
|
59
|
+
el.removeEventListener('pointerover', onOver);
|
|
60
|
+
}
|
|
16
61
|
}
|
|
17
|
-
const
|
|
18
|
-
return
|
|
62
|
+
const makePointerdownHandler = (target) => {
|
|
63
|
+
return onDown;
|
|
19
64
|
}, makePointerCancelHandler = (target) => {
|
|
20
65
|
return onCancel;
|
|
21
66
|
};
|
|
22
67
|
export default function (t) {
|
|
23
|
-
const
|
|
68
|
+
const downListener = makePointerdownHandler(t), offListener = makePointerCancelHandler(t);
|
|
24
69
|
return [
|
|
25
|
-
{ types: 'pointerdown', listener:
|
|
70
|
+
{ types: 'pointerdown', listener: downListener, addOptions: { passive: true } },
|
|
26
71
|
{ types: 'pointerup pointercancel', listener: offListener, addOptions: { passive: true } },
|
|
27
72
|
];
|
|
28
73
|
}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
const
|
|
1
|
+
const makePointerdownHandler = (target, targetCallback, checkCallback) => {
|
|
2
2
|
return function (evt) {
|
|
3
3
|
// if (event.pointerType !== 'touch') return
|
|
4
4
|
if (!checkCallback(evt))
|
|
5
5
|
return;
|
|
6
6
|
targetCallback(target).toggleAttribute('touch-glass', true);
|
|
7
7
|
};
|
|
8
|
-
},
|
|
8
|
+
}, makePointercancelHandler = (target, targetCallback) => {
|
|
9
9
|
return function (evt) {
|
|
10
10
|
targetCallback(target).toggleAttribute('touch-glass', false);
|
|
11
11
|
};
|
|
12
12
|
};
|
|
13
13
|
export default function (t, targetCallback, checkCallback) {
|
|
14
|
-
const
|
|
14
|
+
const downListener = makePointerdownHandler(t, targetCallback, checkCallback), cancelListener = makePointercancelHandler(t, targetCallback);
|
|
15
15
|
return [
|
|
16
|
-
{ types: 'pointerdown', listener:
|
|
17
|
-
{ types: 'pointerup pointercancel pointerleave', listener:
|
|
16
|
+
{ types: 'pointerdown', listener: downListener, addOptions: { passive: true } },
|
|
17
|
+
{ types: 'pointerup pointercancel pointerleave', listener: cancelListener, addOptions: { passive: true } },
|
|
18
18
|
];
|
|
19
19
|
}
|
package/package.json
CHANGED
package/scss/base/_reboot.scss
CHANGED