@lvce-editor/virtual-dom 1.40.0 → 1.42.0
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/index.js +25 -4
- package/package.json +1 -1
- package/src/parts/GetActiveElementInside/GetActiveElementInside.ts +15 -0
- package/src/parts/PreventEventsMaybe/PreventEventsMaybe.ts +9 -1
- package/src/parts/RememberFocus/RememberFocus.ts +2 -1
- package/src/parts/VirtualDomElementProp/VirtualDomElementProp.ts +2 -0
package/dist/index.js
CHANGED
|
@@ -409,6 +409,8 @@ const setProp = ($Element, key, value, eventMap, newEventMap) => {
|
|
|
409
409
|
case 'onInput':
|
|
410
410
|
case 'onKeyDown':
|
|
411
411
|
case 'onMouseDown':
|
|
412
|
+
case 'onMouseOver':
|
|
413
|
+
case 'onMouseOut':
|
|
412
414
|
case 'onPointerDown':
|
|
413
415
|
case 'onPointerOut':
|
|
414
416
|
case 'onPointerOver':
|
|
@@ -641,8 +643,15 @@ const getEventListenerArgs = (params, event) => {
|
|
|
641
643
|
return serialized;
|
|
642
644
|
};
|
|
643
645
|
|
|
646
|
+
const isInputElement = element => {
|
|
647
|
+
return element instanceof HTMLInputElement;
|
|
648
|
+
};
|
|
644
649
|
const preventEventsMaybe = (info, event) => {
|
|
645
|
-
if (info.preventDefault) {
|
|
650
|
+
if (info.preventDefault === 2) {
|
|
651
|
+
if (!isInputElement(event.target)) {
|
|
652
|
+
event.preventDefault();
|
|
653
|
+
}
|
|
654
|
+
} else if (info.preventDefault) {
|
|
646
655
|
event.preventDefault();
|
|
647
656
|
}
|
|
648
657
|
if (info.stopPropagation) {
|
|
@@ -686,6 +695,20 @@ const getEventListenerMap = id => {
|
|
|
686
695
|
return map;
|
|
687
696
|
};
|
|
688
697
|
|
|
698
|
+
const getActiveElementInside = $Viewlet => {
|
|
699
|
+
if (!$Viewlet) {
|
|
700
|
+
return undefined;
|
|
701
|
+
}
|
|
702
|
+
const $ActiveElement = document.activeElement;
|
|
703
|
+
if (!$ActiveElement) {
|
|
704
|
+
return undefined;
|
|
705
|
+
}
|
|
706
|
+
if (!$Viewlet.contains($ActiveElement)) {
|
|
707
|
+
return undefined;
|
|
708
|
+
}
|
|
709
|
+
return $ActiveElement;
|
|
710
|
+
};
|
|
711
|
+
|
|
689
712
|
const queryInputs = $Viewlet => {
|
|
690
713
|
return [...$Viewlet.querySelectorAll('input, textarea')];
|
|
691
714
|
};
|
|
@@ -716,9 +739,7 @@ const rememberFocus = ($Viewlet, dom, eventMap, uid = 0) => {
|
|
|
716
739
|
const oldTop = $Viewlet.style.top;
|
|
717
740
|
const oldWidth = $Viewlet.style.width;
|
|
718
741
|
const oldHeight = $Viewlet.style.height;
|
|
719
|
-
const
|
|
720
|
-
activeElement
|
|
721
|
-
} = document;
|
|
742
|
+
const activeElement = getActiveElementInside($Viewlet);
|
|
722
743
|
const isTreeFocused = activeElement?.getAttribute('role') === 'tree';
|
|
723
744
|
const isRootTree = $Viewlet.getAttribute('role') === 'tree' && activeElement === $Viewlet;
|
|
724
745
|
const focused = activeElement?.getAttribute('name');
|
package/package.json
CHANGED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const getActiveElementInside = (
|
|
2
|
+
$Viewlet: HTMLElement | undefined,
|
|
3
|
+
): HTMLElement | undefined => {
|
|
4
|
+
if (!$Viewlet) {
|
|
5
|
+
return undefined
|
|
6
|
+
}
|
|
7
|
+
const $ActiveElement = document.activeElement as HTMLElement
|
|
8
|
+
if (!$ActiveElement) {
|
|
9
|
+
return undefined
|
|
10
|
+
}
|
|
11
|
+
if (!$Viewlet.contains($ActiveElement)) {
|
|
12
|
+
return undefined
|
|
13
|
+
}
|
|
14
|
+
return $ActiveElement
|
|
15
|
+
}
|
|
@@ -1,5 +1,13 @@
|
|
|
1
|
+
const isInputElement = (element: HTMLElement): boolean => {
|
|
2
|
+
return element instanceof HTMLInputElement
|
|
3
|
+
}
|
|
4
|
+
|
|
1
5
|
export const preventEventsMaybe = (info: any, event: any): void => {
|
|
2
|
-
if (info.preventDefault) {
|
|
6
|
+
if (info.preventDefault === 2) {
|
|
7
|
+
if (!isInputElement(event.target)) {
|
|
8
|
+
event.preventDefault()
|
|
9
|
+
}
|
|
10
|
+
} else if (info.preventDefault) {
|
|
3
11
|
event.preventDefault()
|
|
4
12
|
}
|
|
5
13
|
if (info.stopPropagation) {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as ComponentUid from '../ComponentUid/ComponentUid.ts'
|
|
2
2
|
import * as EventState from '../EventState/EventState.ts'
|
|
3
|
+
import { getActiveElementInside } from '../GetActiveElementInside/GetActiveElementInside.ts'
|
|
3
4
|
import * as QueryInputs from '../QueryInputs/QueryInputs.ts'
|
|
4
5
|
import * as RegisterEventListeners from '../RegisterEventListeners/RegisterEventListeners.ts'
|
|
5
6
|
import * as VirtualDom from '../VirtualDom/VirtualDom.ts'
|
|
@@ -15,7 +16,7 @@ export const rememberFocus = (
|
|
|
15
16
|
const oldTop = $Viewlet.style.top
|
|
16
17
|
const oldWidth = $Viewlet.style.width
|
|
17
18
|
const oldHeight = $Viewlet.style.height
|
|
18
|
-
const
|
|
19
|
+
const activeElement = getActiveElementInside($Viewlet)
|
|
19
20
|
const isTreeFocused = activeElement?.getAttribute('role') === 'tree'
|
|
20
21
|
const isRootTree =
|
|
21
22
|
$Viewlet.getAttribute('role') === 'tree' && activeElement === $Viewlet
|