@babylonjs/gui 7.15.2 → 7.16.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 +1 -0
- package/2D/advancedDynamicTexture.js +16 -4
- package/2D/advancedDynamicTexture.js.map +1 -1
- package/2D/controls/control.js +3 -0
- package/2D/controls/control.js.map +1 -1
- package/2D/controls/inputTextArea.js +9 -7
- package/2D/controls/inputTextArea.js.map +1 -1
- package/package.json +2 -2
@@ -348,6 +348,7 @@ export declare class AdvancedDynamicTexture extends DynamicTexture {
|
|
348
348
|
private _translateToPicking;
|
349
349
|
/** Attach to all scene events required to support pointer events */
|
350
350
|
attach(): void;
|
351
|
+
private _focusProperties;
|
351
352
|
private _focusNextElement;
|
352
353
|
/**
|
353
354
|
* @internal
|
@@ -338,6 +338,7 @@ export class AdvancedDynamicTexture extends DynamicTexture {
|
|
338
338
|
// Invalidated rectangle which is the combination of all invalidated controls after they have been rotated into absolute position
|
339
339
|
this._invalidatedRectangle = null;
|
340
340
|
this._clearMeasure = new Measure(0, 0, 0, 0);
|
341
|
+
this._focusProperties = { index: 0, total: -1 };
|
341
342
|
/**
|
342
343
|
* @internal
|
343
344
|
*/
|
@@ -394,7 +395,15 @@ export class AdvancedDynamicTexture extends DynamicTexture {
|
|
394
395
|
this._preKeyboardObserver = scene.onPreKeyboardObservable.add((info) => {
|
395
396
|
// check if tab is pressed
|
396
397
|
if (!this.disableTabNavigation && info.type === KeyboardEventTypes.KEYDOWN && info.event.code === "Tab") {
|
397
|
-
|
398
|
+
const forward = !info.event.shiftKey;
|
399
|
+
if ((forward && this._focusProperties.index === this._focusProperties.total - 1) ||
|
400
|
+
(!forward && this._focusProperties.index === 0 && this._focusProperties.total > 0)) {
|
401
|
+
this.focusedControl = null;
|
402
|
+
this._focusProperties.index = 0;
|
403
|
+
this._focusProperties.total = -1;
|
404
|
+
return;
|
405
|
+
}
|
406
|
+
this._focusNextElement(forward);
|
398
407
|
info.event.preventDefault();
|
399
408
|
return;
|
400
409
|
}
|
@@ -951,21 +960,24 @@ export class AdvancedDynamicTexture extends DynamicTexture {
|
|
951
960
|
// if tabIndex is 0, put it in the end of the list, otherwise sort by tabIndex
|
952
961
|
return a.tabIndex === 0 ? 1 : b.tabIndex === 0 ? -1 : a.tabIndex - b.tabIndex;
|
953
962
|
});
|
963
|
+
this._focusProperties.total = sortedTabbableControls.length;
|
954
964
|
// if no control is focused, focus the first one
|
965
|
+
let nextIndex = -1;
|
955
966
|
if (!this._focusedControl) {
|
956
|
-
sortedTabbableControls
|
967
|
+
nextIndex = forward ? 0 : sortedTabbableControls.length - 1;
|
957
968
|
}
|
958
969
|
else {
|
959
970
|
const currentIndex = sortedTabbableControls.indexOf(this._focusedControl);
|
960
|
-
|
971
|
+
nextIndex = currentIndex + (forward ? 1 : -1);
|
961
972
|
if (nextIndex < 0) {
|
962
973
|
nextIndex = sortedTabbableControls.length - 1;
|
963
974
|
}
|
964
975
|
else if (nextIndex >= sortedTabbableControls.length) {
|
965
976
|
nextIndex = 0;
|
966
977
|
}
|
967
|
-
sortedTabbableControls[nextIndex].focus();
|
968
978
|
}
|
979
|
+
sortedTabbableControls[nextIndex].focus();
|
980
|
+
this._focusProperties.index = nextIndex;
|
969
981
|
}
|
970
982
|
/**
|
971
983
|
* Register the clipboard Events onto the canvas
|