Skip to content

Commit 534b358

Browse files
authored
Merge branch 'main' into scorecard-dependency
2 parents f3131b9 + 7865846 commit 534b358

File tree

9 files changed

+79
-5
lines changed

9 files changed

+79
-5
lines changed

apps/automated/src/ui/text-field/text-field-tests.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,32 @@ export var testSetKeyboardTypeNumberAndSecure = function () {
339339
});
340340
};
341341

342+
export var testSetSecureAndKeyboardTypeDecimal = function () {
343+
helper.buildUIAndRunTest(_createTextFieldFunc(), function (views: Array<View>) {
344+
var textField = <TextField>views[0];
345+
346+
textField.secure = true;
347+
textField.keyboardType = 'decimal';
348+
349+
var expectedValue = true;
350+
var actualValue = getNativeSecure(textField);
351+
TKUnit.assert(actualValue === expectedValue, 'Actual: ' + actualValue + '; Expected: ' + expectedValue);
352+
});
353+
};
354+
355+
export var testSetKeyboardTypeDecimalAndSecure = function () {
356+
helper.buildUIAndRunTest(_createTextFieldFunc(), function (views: Array<View>) {
357+
var textField = <TextField>views[0];
358+
359+
textField.keyboardType = 'decimal';
360+
textField.secure = true;
361+
362+
var expectedValue = true;
363+
var actualValue = getNativeSecure(textField);
364+
TKUnit.assert(actualValue === expectedValue, 'Actual: ' + actualValue + '; Expected: ' + expectedValue);
365+
});
366+
};
367+
342368
export var testBindSecureDirectlyToModel = function () {
343369
helper.buildUIAndRunTest(_createTextFieldFunc(), function (views: Array<View>) {
344370
var textField = <TextField>views[0];

packages/core/CHANGELOG.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,24 @@
1+
## 8.9.9 (2025-09-09)
2+
3+
### 🚀 Features
4+
5+
- **TextField:** decimal keyboardType ([#10789](https://github.com/NativeScript/NativeScript/pull/10789))
6+
- iOS 26 types with improvements (ActionBar, Switch) + .ns-{platform}-{sdkVersion} css root scoping ([#10775](https://github.com/NativeScript/NativeScript/pull/10775))
7+
8+
### 🩹 Fixes
9+
10+
- **android:** shared element with target name already added to transaction ([#10793](https://github.com/NativeScript/NativeScript/pull/10793))
11+
12+
### ❤️ Thank You
13+
14+
- Nathan Walker
15+
16+
## 8.9.8 (2025-09-09)
17+
18+
### 🩹 Fixes
19+
20+
- transient package update
21+
122
## 8.9.7 (2025-07-26)
223

324
### 🩹 Fixes

packages/core/core-types/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,12 @@ export namespace CoreTypes {
4040
unit: 'px',
4141
};
4242

43-
export type KeyboardInputType = 'datetime' | 'phone' | 'number' | 'url' | 'email' | 'integer';
43+
export type KeyboardInputType = 'datetime' | 'phone' | 'number' | 'decimal' | 'url' | 'email' | 'integer';
4444
export namespace KeyboardType {
4545
export const datetime = 'datetime';
4646
export const phone = 'phone';
4747
export const number = 'number';
48+
export const decimal = 'decimal';
4849
export const url = 'url';
4950
export const email = 'email';
5051
export const integer = 'integer';

packages/core/ui/editable-text-base/editable-text-base-common.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ export const placeholderColorProperty = new CssProperty<Style, Color>({
6767
});
6868
placeholderColorProperty.register(Style);
6969

70-
const keyboardTypeConverter = makeParser<CoreTypes.KeyboardInputType>(makeValidator<CoreTypes.KeyboardInputType>(CoreTypes.KeyboardType.datetime, CoreTypes.KeyboardType.phone, CoreTypes.KeyboardType.number, CoreTypes.KeyboardType.url, CoreTypes.KeyboardType.email, CoreTypes.KeyboardType.integer), true);
70+
const keyboardTypeConverter = makeParser<CoreTypes.KeyboardInputType>(makeValidator<CoreTypes.KeyboardInputType>(CoreTypes.KeyboardType.datetime, CoreTypes.KeyboardType.phone, CoreTypes.KeyboardType.number, CoreTypes.KeyboardType.decimal, CoreTypes.KeyboardType.url, CoreTypes.KeyboardType.email, CoreTypes.KeyboardType.integer), true);
7171

7272
export const autofillTypeProperty = new Property<EditableTextBase, CoreTypes.AutofillType>({ name: 'autofillType' });
7373
autofillTypeProperty.register(EditableTextBase);

packages/core/ui/editable-text-base/index.android.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ export abstract class EditableTextBase extends EditableTextBaseCommon {
204204
[keyboardTypeProperty.getDefault](): number {
205205
return this.nativeTextViewProtected.getInputType();
206206
}
207-
[keyboardTypeProperty.setNative](value: 'datetime' | 'phone' | 'number' | 'url' | 'email' | 'integer' | number) {
207+
[keyboardTypeProperty.setNative](value: 'datetime' | 'phone' | 'number' | 'decimal' | 'url' | 'email' | 'integer' | number) {
208208
let newInputType;
209209

210210
switch (value) {
@@ -220,6 +220,10 @@ export abstract class EditableTextBase extends EditableTextBaseCommon {
220220
newInputType = android.text.InputType.TYPE_CLASS_NUMBER | android.text.InputType.TYPE_NUMBER_VARIATION_NORMAL | android.text.InputType.TYPE_NUMBER_FLAG_SIGNED | android.text.InputType.TYPE_NUMBER_FLAG_DECIMAL;
221221
break;
222222

223+
case 'decimal':
224+
newInputType = android.text.InputType.TYPE_CLASS_NUMBER | android.text.InputType.TYPE_NUMBER_FLAG_DECIMAL | android.text.InputType.TYPE_NUMBER_FLAG_SIGNED;
225+
break;
226+
223227
case 'url':
224228
newInputType = android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_URI;
225229
break;

packages/core/ui/editable-text-base/index.ios.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export abstract class EditableTextBase extends EditableTextBaseCommon {
3434
return keyboardType.toString();
3535
}
3636
}
37-
[keyboardTypeProperty.setNative](value: 'datetime' | 'phone' | 'number' | 'url' | 'email' | 'integer' | string) {
37+
[keyboardTypeProperty.setNative](value: 'datetime' | 'phone' | 'number' | 'decimal' | 'url' | 'email' | 'integer' | string) {
3838
let newKeyboardType: UIKeyboardType;
3939
switch (value) {
4040
case 'datetime':
@@ -49,6 +49,10 @@ export abstract class EditableTextBase extends EditableTextBaseCommon {
4949
newKeyboardType = UIKeyboardType.NumbersAndPunctuation;
5050
break;
5151

52+
case 'decimal':
53+
newKeyboardType = UIKeyboardType.DecimalPad;
54+
break;
55+
5256
case 'url':
5357
newKeyboardType = UIKeyboardType.URL;
5458
break;

packages/core/ui/text-field/index.android.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,9 @@ export class TextField extends TextFieldBase {
7878
case 'number':
7979
inputType = android.text.InputType.TYPE_CLASS_NUMBER | android.text.InputType.TYPE_NUMBER_VARIATION_NORMAL | android.text.InputType.TYPE_NUMBER_FLAG_SIGNED | android.text.InputType.TYPE_NUMBER_FLAG_DECIMAL;
8080
break;
81+
case 'decimal':
82+
inputType = android.text.InputType.TYPE_CLASS_NUMBER | android.text.InputType.TYPE_NUMBER_FLAG_DECIMAL | android.text.InputType.TYPE_NUMBER_FLAG_SIGNED;
83+
break;
8184
case 'url':
8285
inputType = android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_URI;
8386
break;

packages/core/ui/transition/page-transition.android.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,9 +262,22 @@ export class PageTransition extends Transition {
262262
newFragment.setSharedElementEnterTransition(transitionSet);
263263
newFragment.setSharedElementReturnTransition(transitionSet);
264264

265+
// Guard against duplicate shared element names being added to the same transaction
266+
const addedSharedElementNames = new Set();
265267
presenting.forEach((v) => {
268+
const name = v?.sharedTransitionTag;
269+
const nativeView = v?.nativeView;
270+
if (!name || !nativeView || addedSharedElementNames.has(name)) {
271+
// prevent duplicates or invalid items
272+
return;
273+
}
266274
setTransitionName(v);
267-
fragmentTransaction.addSharedElement(v.nativeView, v.sharedTransitionTag);
275+
try {
276+
fragmentTransaction.addSharedElement(nativeView, name);
277+
addedSharedElementNames.add(name);
278+
} catch (err) {
279+
// ignore duplicates or issues adding shared element to avoid crashing
280+
}
268281
});
269282
if (toPage.isLoaded) {
270283
onPageLoaded();

packages/types-android/src/lib/android/org.nativescript.widgets.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,8 @@
294294
export class GridLayout extends LayoutBase {
295295
constructor(context: android.content.Context);
296296

297+
public addRow(itemSpec: ItemSpec): void;
298+
public addColumn(itemSpec: ItemSpec): void;
297299
public addRow(value: number, type: org.nativescript.widgets.GridUnitType): void;
298300
public addColumn(value: number, type: org.nativescript.widgets.GridUnitType): void;
299301

0 commit comments

Comments
 (0)