@babylonjs/gui 7.12.0 → 7.13.1
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/2D/advancedDynamicTexture.d.ts +9 -4
- package/2D/advancedDynamicTexture.js +44 -0
- package/2D/advancedDynamicTexture.js.map +1 -1
- package/2D/controls/control.d.ts +53 -1
- package/2D/controls/control.js +88 -0
- package/2D/controls/control.js.map +1 -1
- package/2D/controls/focusableButton.d.ts +0 -37
- package/2D/controls/focusableButton.js +0 -65
- package/2D/controls/focusableButton.js.map +1 -1
- package/2D/controls/focusableControl.d.ts +9 -0
- package/2D/controls/focusableControl.js.map +1 -1
- package/2D/controls/inputText.d.ts +1 -19
- package/2D/controls/inputText.js +2 -27
- package/2D/controls/inputText.js.map +1 -1
- package/2D/controls/textBlock.d.ts +1 -1
- package/2D/controls/textBlock.js +5 -5
- package/2D/controls/textBlock.js.map +1 -1
- package/2D/controls/virtualKeyboard.js.map +1 -1
- package/3D/controls/cylinderPanel.js +2 -2
- package/3D/controls/cylinderPanel.js.map +1 -1
- package/3D/controls/holographicSlate.js +2 -2
- package/3D/controls/holographicSlate.js.map +1 -1
- package/3D/controls/spherePanel.js +2 -2
- package/3D/controls/spherePanel.js.map +1 -1
- package/3D/gizmos/gizmoHandle.d.ts +1 -1
- package/3D/gizmos/gizmoHandle.js +7 -7
- package/3D/gizmos/gizmoHandle.js.map +1 -1
- package/package.json +2 -2
@@ -10,7 +10,6 @@ import { Layer } from "@babylonjs/core/Layers/layer.js";
|
|
10
10
|
import type { Scene } from "@babylonjs/core/scene.js";
|
11
11
|
import { Container } from "./controls/container";
|
12
12
|
import { Control } from "./controls/control";
|
13
|
-
import type { IFocusableControl } from "./controls/focusableControl";
|
14
13
|
import { Style } from "./style";
|
15
14
|
import { Viewport } from "@babylonjs/core/Maths/math.viewport.js";
|
16
15
|
/**
|
@@ -121,6 +120,11 @@ export declare class AdvancedDynamicTexture extends DynamicTexture {
|
|
121
120
|
* Gets or sets a boolean indicating that the canvas must be reverted on Y when updating the texture
|
122
121
|
*/
|
123
122
|
applyYInversionOnUpdate: boolean;
|
123
|
+
/**
|
124
|
+
* A boolean indicating whether or not the elements can be navigated to using the tab key.
|
125
|
+
* Defaults to false.
|
126
|
+
*/
|
127
|
+
disableTabNavigation: boolean;
|
124
128
|
/**
|
125
129
|
* Gets or sets a number used to scale rendering size (2 means that the texture will be twice bigger).
|
126
130
|
* Useful when you want more antialiasing
|
@@ -198,8 +202,8 @@ export declare class AdvancedDynamicTexture extends DynamicTexture {
|
|
198
202
|
/**
|
199
203
|
* Gets or sets the current focused control
|
200
204
|
*/
|
201
|
-
get focusedControl(): Nullable<
|
202
|
-
set focusedControl(control: Nullable<
|
205
|
+
get focusedControl(): Nullable<Control>;
|
206
|
+
set focusedControl(control: Nullable<Control>);
|
203
207
|
/**
|
204
208
|
* Gets or sets a boolean indicating if the texture must be rendered in background or foreground when in fullscreen mode
|
205
209
|
*/
|
@@ -344,6 +348,7 @@ export declare class AdvancedDynamicTexture extends DynamicTexture {
|
|
344
348
|
private _translateToPicking;
|
345
349
|
/** Attach to all scene events required to support pointer events */
|
346
350
|
attach(): void;
|
351
|
+
private _focusNextElement;
|
347
352
|
/**
|
348
353
|
* @internal
|
349
354
|
*/
|
@@ -380,7 +385,7 @@ export declare class AdvancedDynamicTexture extends DynamicTexture {
|
|
380
385
|
* Move the focus to a specific control
|
381
386
|
* @param control defines the control which will receive the focus
|
382
387
|
*/
|
383
|
-
moveFocusToControl(control:
|
388
|
+
moveFocusToControl(control: Control): void;
|
384
389
|
private _manageFocus;
|
385
390
|
private _attachPickingToSceneRender;
|
386
391
|
private _attachToOnPointerOut;
|
@@ -316,6 +316,11 @@ export class AdvancedDynamicTexture extends DynamicTexture {
|
|
316
316
|
* Gets or sets a boolean indicating that the canvas must be reverted on Y when updating the texture
|
317
317
|
*/
|
318
318
|
this.applyYInversionOnUpdate = true;
|
319
|
+
/**
|
320
|
+
* A boolean indicating whether or not the elements can be navigated to using the tab key.
|
321
|
+
* Defaults to false.
|
322
|
+
*/
|
323
|
+
this.disableTabNavigation = false;
|
319
324
|
/**
|
320
325
|
* If this is set, even when a control is pointer blocker, some events can still be passed through to the scene.
|
321
326
|
* Options from values are PointerEventTypes
|
@@ -387,6 +392,12 @@ export class AdvancedDynamicTexture extends DynamicTexture {
|
|
387
392
|
}
|
388
393
|
});
|
389
394
|
this._preKeyboardObserver = scene.onPreKeyboardObservable.add((info) => {
|
395
|
+
// check if tab is pressed
|
396
|
+
if (!this.disableTabNavigation && info.type === KeyboardEventTypes.KEYDOWN && info.event.code === "Tab") {
|
397
|
+
this._focusNextElement(!info.event.shiftKey);
|
398
|
+
info.event.preventDefault();
|
399
|
+
return;
|
400
|
+
}
|
390
401
|
if (!this._focusedControl) {
|
391
402
|
return;
|
392
403
|
}
|
@@ -923,6 +934,39 @@ export class AdvancedDynamicTexture extends DynamicTexture {
|
|
923
934
|
this._attachToOnPointerOut(scene);
|
924
935
|
this._attachToOnBlur(scene);
|
925
936
|
}
|
937
|
+
_focusNextElement(forward = true) {
|
938
|
+
// generate the order of tab-able controls
|
939
|
+
const sortedTabbableControls = [];
|
940
|
+
this.executeOnAllControls((control) => {
|
941
|
+
if (control.isFocusInvisible || !control.isVisible || control.tabIndex < 0) {
|
942
|
+
return;
|
943
|
+
}
|
944
|
+
sortedTabbableControls.push(control);
|
945
|
+
});
|
946
|
+
// if no control is tab-able, return
|
947
|
+
if (sortedTabbableControls.length === 0) {
|
948
|
+
return;
|
949
|
+
}
|
950
|
+
sortedTabbableControls.sort((a, b) => {
|
951
|
+
// if tabIndex is 0, put it in the end of the list, otherwise sort by tabIndex
|
952
|
+
return a.tabIndex === 0 ? 1 : b.tabIndex === 0 ? -1 : a.tabIndex - b.tabIndex;
|
953
|
+
});
|
954
|
+
// if no control is focused, focus the first one
|
955
|
+
if (!this._focusedControl) {
|
956
|
+
sortedTabbableControls[0].focus();
|
957
|
+
}
|
958
|
+
else {
|
959
|
+
const currentIndex = sortedTabbableControls.indexOf(this._focusedControl);
|
960
|
+
let nextIndex = currentIndex + (forward ? 1 : -1);
|
961
|
+
if (nextIndex < 0) {
|
962
|
+
nextIndex = sortedTabbableControls.length - 1;
|
963
|
+
}
|
964
|
+
else if (nextIndex >= sortedTabbableControls.length) {
|
965
|
+
nextIndex = 0;
|
966
|
+
}
|
967
|
+
sortedTabbableControls[nextIndex].focus();
|
968
|
+
}
|
969
|
+
}
|
926
970
|
/**
|
927
971
|
* Register the clipboard Events onto the canvas
|
928
972
|
*/
|