@nativescript/core 9.0.0-next-11-05-2025-19118881386 → 9.0.0-next-11-12-2025-19288121507

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.
Files changed (212) hide show
  1. package/application/application-common.d.ts +29 -10
  2. package/application/application-common.js +58 -5
  3. package/application/application-common.js.map +1 -1
  4. package/application/application-interfaces.d.ts +10 -0
  5. package/application/application-shims.d.ts +27 -0
  6. package/application/application-shims.js +27 -0
  7. package/application/application-shims.js.map +1 -1
  8. package/application/application.android.d.ts +3 -0
  9. package/application/application.android.js +348 -349
  10. package/application/application.android.js.map +1 -1
  11. package/application/application.ios.d.ts +3 -0
  12. package/application/application.ios.js +30 -19
  13. package/application/application.ios.js.map +1 -1
  14. package/config/config.interface.d.ts +21 -0
  15. package/connectivity/index.android.js +22 -22
  16. package/connectivity/index.android.js.map +1 -1
  17. package/core-types/index.d.ts +10 -1
  18. package/core-types/index.js +10 -1
  19. package/core-types/index.js.map +1 -1
  20. package/core-types/validators.js +12 -6
  21. package/core-types/validators.js.map +1 -1
  22. package/data/observable/index.d.ts +2 -1
  23. package/data/observable/index.js +31 -19
  24. package/data/observable/index.js.map +1 -1
  25. package/fps-meter/fps-native.ios.js +1 -1
  26. package/fps-meter/fps-native.ios.js.map +1 -1
  27. package/http/http-request/index.ios.js +1 -1
  28. package/http/http-request/index.ios.js.map +1 -1
  29. package/image-source/index.d.ts +2 -2
  30. package/package.json +1 -1
  31. package/platform/screen/index.d.ts +5 -0
  32. package/platforms/android/widgets-release.aar +0 -0
  33. package/timer/index.ios.js +1 -1
  34. package/timer/index.ios.js.map +1 -1
  35. package/ui/action-bar/index.android.js +18 -18
  36. package/ui/action-bar/index.android.js.map +1 -1
  37. package/ui/action-bar/index.ios.js +2 -4
  38. package/ui/action-bar/index.ios.js.map +1 -1
  39. package/ui/animation/index.ios.js +2 -3
  40. package/ui/animation/index.ios.js.map +1 -1
  41. package/ui/button/index.android.js +20 -20
  42. package/ui/button/index.android.js.map +1 -1
  43. package/ui/button/index.ios.d.ts +2 -1
  44. package/ui/button/index.ios.js +28 -10
  45. package/ui/button/index.ios.js.map +1 -1
  46. package/ui/core/control-state-change/index.ios.js +1 -1
  47. package/ui/core/control-state-change/index.ios.js.map +1 -1
  48. package/ui/core/view/index.android.d.ts +2 -0
  49. package/ui/core/view/index.android.js +221 -194
  50. package/ui/core/view/index.android.js.map +1 -1
  51. package/ui/core/view/index.d.ts +26 -3
  52. package/ui/core/view/index.ios.d.ts +3 -2
  53. package/ui/core/view/index.ios.js +25 -11
  54. package/ui/core/view/index.ios.js.map +1 -1
  55. package/ui/core/view/view-common.d.ts +10 -8
  56. package/ui/core/view/view-common.js +7 -0
  57. package/ui/core/view/view-common.js.map +1 -1
  58. package/ui/core/view/view-helper/index.d.ts +5 -0
  59. package/ui/core/view/view-helper/index.ios.d.ts +5 -4
  60. package/ui/core/view/view-helper/index.ios.js +20 -23
  61. package/ui/core/view/view-helper/index.ios.js.map +1 -1
  62. package/ui/core/view/view-helper/view-helper-common.js +7 -0
  63. package/ui/core/view/view-helper/view-helper-common.js.map +1 -1
  64. package/ui/date-picker/index.android.js +38 -38
  65. package/ui/date-picker/index.android.js.map +1 -1
  66. package/ui/date-picker/index.ios.js +1 -1
  67. package/ui/date-picker/index.ios.js.map +1 -1
  68. package/ui/editable-text-base/index.android.js +34 -34
  69. package/ui/editable-text-base/index.android.js.map +1 -1
  70. package/ui/frame/fragment.transitions.android.d.ts +2 -1
  71. package/ui/frame/fragment.transitions.android.js +106 -104
  72. package/ui/frame/fragment.transitions.android.js.map +1 -1
  73. package/ui/frame/fragment.transitions.d.ts +3 -2
  74. package/ui/frame/index.android.js +2 -2
  75. package/ui/frame/index.android.js.map +1 -1
  76. package/ui/frame/index.ios.d.ts +2 -1
  77. package/ui/frame/index.ios.js +83 -43
  78. package/ui/frame/index.ios.js.map +1 -1
  79. package/ui/gestures/index.android.js +129 -130
  80. package/ui/gestures/index.android.js.map +1 -1
  81. package/ui/gestures/index.ios.js +3 -5
  82. package/ui/gestures/index.ios.js.map +1 -1
  83. package/ui/gestures/touch-manager.js +32 -32
  84. package/ui/gestures/touch-manager.js.map +1 -1
  85. package/ui/image/index.android.js +19 -19
  86. package/ui/image/index.android.js.map +1 -1
  87. package/ui/image-cache/index.android.js +12 -14
  88. package/ui/image-cache/index.android.js.map +1 -1
  89. package/ui/image-cache/index.ios.js +6 -6
  90. package/ui/image-cache/index.ios.js.map +1 -1
  91. package/ui/index.d.ts +2 -1
  92. package/ui/index.js +1 -0
  93. package/ui/index.js.map +1 -1
  94. package/ui/label/index.android.js +4 -1
  95. package/ui/label/index.android.js.map +1 -1
  96. package/ui/label/index.ios.d.ts +2 -1
  97. package/ui/label/index.ios.js +12 -2
  98. package/ui/label/index.ios.js.map +1 -1
  99. package/ui/layouts/flexbox-layout/index.ios.js +3 -6
  100. package/ui/layouts/flexbox-layout/index.ios.js.map +1 -1
  101. package/ui/layouts/stack-layout/index.ios.js +6 -0
  102. package/ui/layouts/stack-layout/index.ios.js.map +1 -1
  103. package/ui/list-picker/index.android.js +35 -35
  104. package/ui/list-picker/index.android.js.map +1 -1
  105. package/ui/list-picker/index.ios.js +2 -2
  106. package/ui/list-picker/index.ios.js.map +1 -1
  107. package/ui/list-view/index.android.d.ts +26 -1
  108. package/ui/list-view/index.android.js +761 -143
  109. package/ui/list-view/index.android.js.map +1 -1
  110. package/ui/list-view/index.d.ts +127 -0
  111. package/ui/list-view/index.ios.d.ts +34 -2
  112. package/ui/list-view/index.ios.js +557 -21
  113. package/ui/list-view/index.ios.js.map +1 -1
  114. package/ui/list-view/list-view-common.d.ts +22 -1
  115. package/ui/list-view/list-view-common.js +85 -0
  116. package/ui/list-view/list-view-common.js.map +1 -1
  117. package/ui/page/index.ios.js +25 -64
  118. package/ui/page/index.ios.js.map +1 -1
  119. package/ui/scroll-view/index.d.ts +1 -1
  120. package/ui/scroll-view/index.ios.d.ts +2 -0
  121. package/ui/scroll-view/index.ios.js +31 -12
  122. package/ui/scroll-view/index.ios.js.map +1 -1
  123. package/ui/scroll-view/scroll-view-common.d.ts +3 -8
  124. package/ui/scroll-view/scroll-view-common.js +4 -4
  125. package/ui/scroll-view/scroll-view-common.js.map +1 -1
  126. package/ui/search-bar/index.android.js +48 -52
  127. package/ui/search-bar/index.android.js.map +1 -1
  128. package/ui/search-bar/index.ios.js +3 -6
  129. package/ui/search-bar/index.ios.js.map +1 -1
  130. package/ui/segmented-bar/index.android.js +56 -58
  131. package/ui/segmented-bar/index.android.js.map +1 -1
  132. package/ui/segmented-bar/index.ios.js +1 -1
  133. package/ui/segmented-bar/index.ios.js.map +1 -1
  134. package/ui/slider/index.android.js +23 -25
  135. package/ui/slider/index.android.js.map +1 -1
  136. package/ui/slider/index.ios.js +2 -2
  137. package/ui/slider/index.ios.js.map +1 -1
  138. package/ui/split-view/index.android.d.ts +4 -0
  139. package/ui/split-view/index.android.js +4 -0
  140. package/ui/split-view/index.android.js.map +1 -0
  141. package/ui/split-view/index.d.ts +11 -0
  142. package/ui/split-view/index.ios.d.ts +39 -0
  143. package/ui/split-view/index.ios.js +368 -0
  144. package/ui/split-view/index.ios.js.map +1 -0
  145. package/ui/split-view/split-view-common.d.ts +51 -0
  146. package/ui/split-view/split-view-common.js +111 -0
  147. package/ui/split-view/split-view-common.js.map +1 -0
  148. package/ui/styling/style/index.d.ts +2 -0
  149. package/ui/styling/style/index.js.map +1 -1
  150. package/ui/styling/style-properties.d.ts +1 -0
  151. package/ui/styling/style-properties.js +7 -0
  152. package/ui/styling/style-properties.js.map +1 -1
  153. package/ui/switch/index.android.js +18 -18
  154. package/ui/switch/index.android.js.map +1 -1
  155. package/ui/switch/index.ios.d.ts +1 -0
  156. package/ui/switch/index.ios.js +62 -12
  157. package/ui/switch/index.ios.js.map +1 -1
  158. package/ui/tab-view/index.android.js +185 -187
  159. package/ui/tab-view/index.android.js.map +1 -1
  160. package/ui/tab-view/index.d.ts +17 -1
  161. package/ui/tab-view/index.ios.d.ts +13 -5
  162. package/ui/tab-view/index.ios.js +253 -49
  163. package/ui/tab-view/index.ios.js.map +1 -1
  164. package/ui/tab-view/tab-view-common.d.ts +14 -0
  165. package/ui/tab-view/tab-view-common.js +15 -0
  166. package/ui/tab-view/tab-view-common.js.map +1 -1
  167. package/ui/text-base/index.android.d.ts +2 -1
  168. package/ui/text-base/index.android.js +133 -101
  169. package/ui/text-base/index.android.js.map +1 -1
  170. package/ui/text-base/index.d.ts +5 -0
  171. package/ui/text-base/index.ios.js +12 -18
  172. package/ui/text-base/index.ios.js.map +1 -1
  173. package/ui/text-base/text-base-common.d.ts +2 -1
  174. package/ui/text-base/text-base-common.js +1 -0
  175. package/ui/text-base/text-base-common.js.map +1 -1
  176. package/ui/text-field/index.ios.d.ts +2 -1
  177. package/ui/text-field/index.ios.js +9 -5
  178. package/ui/text-field/index.ios.js.map +1 -1
  179. package/ui/text-view/index.ios.d.ts +2 -1
  180. package/ui/text-view/index.ios.js +12 -7
  181. package/ui/text-view/index.ios.js.map +1 -1
  182. package/ui/time-picker/index.android.js +21 -21
  183. package/ui/time-picker/index.android.js.map +1 -1
  184. package/ui/time-picker/index.ios.js +1 -1
  185. package/ui/time-picker/index.ios.js.map +1 -1
  186. package/ui/transition/fade-transition.ios.js +5 -6
  187. package/ui/transition/fade-transition.ios.js.map +1 -1
  188. package/ui/transition/modal-transition.ios.js +19 -26
  189. package/ui/transition/modal-transition.ios.js.map +1 -1
  190. package/ui/transition/page-transition.android.js +3 -12
  191. package/ui/transition/page-transition.android.js.map +1 -1
  192. package/ui/transition/page-transition.ios.js +19 -25
  193. package/ui/transition/page-transition.ios.js.map +1 -1
  194. package/ui/transition/slide-transition.ios.js +5 -6
  195. package/ui/transition/slide-transition.ios.js.map +1 -1
  196. package/ui/web-view/index.android.js +58 -62
  197. package/ui/web-view/index.android.js.map +1 -1
  198. package/ui/web-view/index.ios.js +18 -18
  199. package/ui/web-view/index.ios.js.map +1 -1
  200. package/utils/common.d.ts +3 -1
  201. package/utils/common.js +9 -3
  202. package/utils/common.js.map +1 -1
  203. package/utils/index.d.ts +6 -0
  204. package/utils/layout-helper/index.android.d.ts +1 -0
  205. package/utils/layout-helper/index.android.js +9 -0
  206. package/utils/layout-helper/index.android.js.map +1 -1
  207. package/utils/layout-helper/index.d.ts +5 -0
  208. package/utils/layout-helper/index.ios.d.ts +1 -0
  209. package/utils/layout-helper/index.ios.js +4 -0
  210. package/utils/layout-helper/index.ios.js.map +1 -1
  211. package/utils/native-helper.ios.js +20 -20
  212. package/utils/native-helper.ios.js.map +1 -1
@@ -1,11 +1,12 @@
1
1
  import { getNativeScriptGlobals } from '../../../globals/global-utils';
2
2
  import { ViewCommon, isEnabledProperty, originXProperty, originYProperty, isUserInteractionEnabledProperty, testIDProperty, AndroidHelper, androidOverflowEdgeProperty, statusBarStyleProperty } from './view-common';
3
- import { paddingLeftProperty, paddingTopProperty, paddingRightProperty, paddingBottomProperty } from '../../styling/style-properties';
3
+ import { paddingLeftProperty, paddingTopProperty, paddingRightProperty, paddingBottomProperty, directionProperty } from '../../styling/style-properties';
4
4
  import { layout } from '../../../utils';
5
5
  import { Trace } from '../../../trace';
6
6
  import { hiddenProperty } from '../view-base';
7
7
  import { isCssWideKeyword } from '../properties/property-shared';
8
8
  import { perspectiveProperty, visibilityProperty, opacityProperty, horizontalAlignmentProperty, verticalAlignmentProperty, minWidthProperty, minHeightProperty, widthProperty, heightProperty, marginLeftProperty, marginTopProperty, marginRightProperty, marginBottomProperty, rotateProperty, rotateXProperty, rotateYProperty, scaleXProperty, scaleYProperty, translateXProperty, translateYProperty, zIndexProperty, backgroundInternalProperty, androidElevationProperty, androidDynamicElevationOffsetProperty } from '../../styling/style-properties';
9
+ import { CoreTypes } from '../../../core-types';
9
10
  import { Background, refreshBorderDrawable } from '../../styling/background';
10
11
  import { profile } from '../../../profiling';
11
12
  import { topmost } from '../../frame/frame-stack';
@@ -79,202 +80,184 @@ function initializeTouchListener() {
79
80
  if (TouchListener) {
80
81
  return;
81
82
  }
82
- var TouchListenerImpl = /** @class */ (function (_super) {
83
- __extends(TouchListenerImpl, _super);
84
- function TouchListenerImpl(owner) {
85
- var _this = _super.call(this) || this;
86
- _this.owner = new WeakRef(owner);
87
- return global.__native(_this);
88
- }
89
- TouchListenerImpl.prototype.onTouch = function (view, event) {
90
- var owner = this.owner.get();
91
- if (!owner) {
92
- return;
83
+ var TouchListenerImpl = (function (_super) {
84
+ __extends(TouchListenerImpl, _super);
85
+ function TouchListenerImpl(owner) {
86
+ var _this = _super.call(this) || this;
87
+ _this.owner = new WeakRef(owner);
88
+ return global.__native(_this);
93
89
  }
94
- owner.handleGestureTouch(event);
95
- var nativeView = owner.nativeViewProtected;
96
- if (!nativeView || !nativeView.onTouchEvent) {
97
- return false;
98
- }
99
- return nativeView.onTouchEvent(event);
100
- };
101
- var _a;
102
- TouchListenerImpl = __decorate([
103
- Interfaces([android.view.View.OnTouchListener]),
104
- __metadata("design:paramtypes", [typeof (_a = typeof View !== "undefined" && View) === "function" ? _a : Object])
105
- ], TouchListenerImpl);
106
- return TouchListenerImpl;
107
- }(java.lang.Object));
90
+ TouchListenerImpl.prototype.onTouch = function (view, event) {
91
+ var owner = this.owner.get();
92
+ if (!owner) {
93
+ return;
94
+ }
95
+ owner.handleGestureTouch(event);
96
+ var nativeView = owner.nativeViewProtected;
97
+ if (!nativeView || !nativeView.onTouchEvent) {
98
+ return false;
99
+ }
100
+ return nativeView.onTouchEvent(event);
101
+ };
102
+ var _a;
103
+ TouchListenerImpl = __decorate([
104
+ Interfaces([android.view.View.OnTouchListener]),
105
+ __metadata("design:paramtypes", [typeof (_a = typeof View !== "undefined" && View) === "function" ? _a : Object])
106
+ ], TouchListenerImpl);
107
+ return TouchListenerImpl;
108
+ }(java.lang.Object));
108
109
  TouchListener = TouchListenerImpl;
109
110
  }
110
111
  function initializeDialogFragment() {
111
112
  if (DialogFragment) {
112
113
  return;
113
114
  }
114
- var DialogImpl = /** @class */ (function (_super) {
115
- __extends(DialogImpl, _super);
116
- function DialogImpl(fragment, context, themeResId) {
117
- var _this = _super.call(this, context, themeResId) || this;
118
- _this.fragment = fragment;
119
- if (SDK_VERSION >= 33 && OnBackPressedCallback) {
120
- var callback = new OnBackPressedCallback(true);
121
- callback['_dialog'] = new WeakRef(_this);
122
- // @ts-ignore
123
- _this.getOnBackPressedDispatcher().addCallback(_this, callback);
124
- }
125
- return global.__native(_this);
126
- }
127
- DialogImpl.prototype.onDetachedFromWindow = function () {
128
- _super.prototype.onDetachedFromWindow.call(this);
129
- this.fragment = null;
130
- };
131
- DialogImpl.prototype.onBackPressed = function () {
132
- if (SDK_VERSION >= 33) {
133
- _super.prototype.onBackPressed.call(this);
134
- return;
115
+ var DialogImpl = (function (_super) {
116
+ __extends(DialogImpl, _super);
117
+ function DialogImpl(fragment, context, themeResId) {
118
+ var _this = _super.call(this, context, themeResId) || this;
119
+ _this.fragment = fragment;
120
+ if (SDK_VERSION >= 33 && OnBackPressedCallback) {
121
+ var callback = new OnBackPressedCallback(true);
122
+ callback["_dialog"] = new WeakRef(_this);
123
+ _this.getOnBackPressedDispatcher().addCallback(_this, callback);
124
+ }
125
+ return global.__native(_this);
135
126
  }
136
- var view = this.fragment.owner;
137
- var args = {
138
- eventName: 'activityBackPressed',
139
- object: view,
140
- activity: view._context,
141
- cancel: false,
127
+ DialogImpl.prototype.onDetachedFromWindow = function () {
128
+ _super.prototype.onDetachedFromWindow.call(this);
129
+ this.fragment = null;
142
130
  };
143
- // Fist fire application.android global event
144
- getNativeScriptGlobals().events.notify(args);
145
- if (args.cancel) {
146
- return;
147
- }
148
- view.notify(args);
149
- if (!args.cancel && !view.onBackPressed()) {
150
- _super.prototype.onBackPressed.call(this);
151
- }
152
- };
153
- return DialogImpl;
154
- }(androidx.appcompat.app.AppCompatDialog));
155
- var DialogFragmentImpl = /** @class */ (function (_super) {
156
- __extends(DialogFragmentImpl, _super);
157
- function DialogFragmentImpl() {
158
- var _this = _super.call(this) || this;
159
- return global.__native(_this);
160
- }
161
- DialogFragmentImpl.prototype.onCreate = function (savedInstanceState) {
162
- var _a;
163
- _super.prototype.onCreate.call(this, savedInstanceState);
164
- var ownerId = (_a = this.getArguments()) === null || _a === void 0 ? void 0 : _a.getInt(DOMID);
165
- var options = getModalOptions(ownerId);
166
- // The teardown when the activity is destroyed happens after the state is saved, but is not recoverable,
167
- // Cancel the native dialog in this case or the app will crash with subsequent errors.
168
- if (savedInstanceState != null && options === undefined) {
169
- this.dismissAllowingStateLoss();
170
- }
171
- };
172
- DialogFragmentImpl.prototype.onCreateDialog = function (savedInstanceState) {
173
- var ownerId = this.getArguments().getInt(DOMID);
174
- var options = getModalOptions(ownerId);
175
- this.owner = options.owner;
176
- // Set owner._dialogFragment to this in case the DialogFragment was recreated after app suspend
177
- this.owner._dialogFragment = this;
178
- this._fullscreen = options.fullscreen;
179
- this._animated = options.animated;
180
- this._cancelable = options.cancelable;
181
- this._stretched = options.stretched;
182
- this._dismissCallback = options.dismissCallback;
183
- this._shownCallback = options.shownCallback;
184
- this._windowSoftInputMode = options.windowSoftInputMode;
185
- this.setStyle(androidx.fragment.app.DialogFragment.STYLE_NO_TITLE, 0);
186
- var theme = this.getTheme();
187
- if (this._fullscreen) {
188
- // In fullscreen mode, get the application's theme.
189
- theme = this.getActivity().getApplicationInfo().theme;
190
- }
191
- var dialog = new DialogImpl(this, this.getActivity(), theme);
192
- // do not override alignment unless fullscreen modal will be shown;
193
- // otherwise we might break component-level layout:
194
- // https://github.com/NativeScript/NativeScript/issues/5392
195
- if (!this._fullscreen && !this._stretched) {
196
- this.owner.horizontalAlignment = 'center';
197
- this.owner.verticalAlignment = 'middle';
198
- }
199
- else {
200
- this.owner.horizontalAlignment = 'stretch';
201
- this.owner.verticalAlignment = 'stretch';
202
- }
203
- // set the modal window animation
204
- // https://github.com/NativeScript/NativeScript/issues/5989
205
- if (this._animated) {
206
- dialog.getWindow().setWindowAnimations(styleAnimationDialog);
207
- }
208
- dialog.setCanceledOnTouchOutside(this._cancelable);
209
- return dialog;
210
- };
211
- DialogFragmentImpl.prototype.onCreateView = function (inflater, container, savedInstanceState) {
212
- var owner = this.owner;
213
- this.activity = new WeakRef(this.getActivity());
214
- owner._setupAsRootView(this.getActivity());
215
- owner._isAddedToNativeVisualTree = true;
216
- // we need to set the window SoftInputMode here.
217
- // it wont work is set in onStart
218
- var window = this.getDialog().getWindow();
219
- if (this._windowSoftInputMode !== undefined) {
220
- window.setSoftInputMode(this._windowSoftInputMode);
221
- }
222
- else {
223
- // the dialog seems to not follow the default activity softInputMode,
224
- // thus set we set it here.
225
- window.setSoftInputMode(owner._context.getWindow().getAttributes().softInputMode);
226
- }
227
- return owner.nativeViewProtected;
228
- };
229
- DialogFragmentImpl.prototype.onStart = function () {
230
- _super.prototype.onStart.call(this);
231
- if (this._fullscreen) {
131
+ DialogImpl.prototype.onBackPressed = function () {
132
+ if (SDK_VERSION >= 33) {
133
+ _super.prototype.onBackPressed.call(this);
134
+ return;
135
+ }
136
+ var view = this.fragment.owner;
137
+ var args = {
138
+ eventName: "activityBackPressed",
139
+ object: view,
140
+ activity: view._context,
141
+ cancel: false,
142
+ };
143
+ getNativeScriptGlobals().events.notify(args);
144
+ if (args.cancel) {
145
+ return;
146
+ }
147
+ view.notify(args);
148
+ if (!args.cancel && !view.onBackPressed()) {
149
+ _super.prototype.onBackPressed.call(this);
150
+ }
151
+ };
152
+ return DialogImpl;
153
+ }(androidx.appcompat.app.AppCompatDialog));
154
+ var DialogFragmentImpl = (function (_super) {
155
+ __extends(DialogFragmentImpl, _super);
156
+ function DialogFragmentImpl() {
157
+ var _this = _super.call(this) || this;
158
+ return global.__native(_this);
159
+ }
160
+ DialogFragmentImpl.prototype.onCreate = function (savedInstanceState) {
161
+ var _a;
162
+ _super.prototype.onCreate.call(this, savedInstanceState);
163
+ var ownerId = (_a = this.getArguments()) === null || _a === void 0 ? void 0 : _a.getInt(DOMID);
164
+ var options = getModalOptions(ownerId);
165
+ if (savedInstanceState != null && options === undefined) {
166
+ this.dismissAllowingStateLoss();
167
+ }
168
+ };
169
+ DialogFragmentImpl.prototype.onCreateDialog = function (savedInstanceState) {
170
+ var ownerId = this.getArguments().getInt(DOMID);
171
+ var options = getModalOptions(ownerId);
172
+ this.owner = options.owner;
173
+ this.owner._dialogFragment = this;
174
+ this._fullscreen = options.fullscreen;
175
+ this._animated = options.animated;
176
+ this._cancelable = options.cancelable;
177
+ this._stretched = options.stretched;
178
+ this._dismissCallback = options.dismissCallback;
179
+ this._shownCallback = options.shownCallback;
180
+ this._windowSoftInputMode = options.windowSoftInputMode;
181
+ this.setStyle(androidx.fragment.app.DialogFragment.STYLE_NO_TITLE, 0);
182
+ var theme = this.getTheme();
183
+ if (this._fullscreen) {
184
+ theme = this.getActivity().getApplicationInfo().theme;
185
+ }
186
+ var dialog = new DialogImpl(this, this.getActivity(), theme);
187
+ if (!this._fullscreen && !this._stretched) {
188
+ this.owner.horizontalAlignment = "center";
189
+ this.owner.verticalAlignment = "middle";
190
+ }
191
+ else {
192
+ this.owner.horizontalAlignment = "stretch";
193
+ this.owner.verticalAlignment = "stretch";
194
+ }
195
+ if (this._animated) {
196
+ dialog.getWindow().setWindowAnimations(styleAnimationDialog);
197
+ }
198
+ dialog.setCanceledOnTouchOutside(this._cancelable);
199
+ return dialog;
200
+ };
201
+ DialogFragmentImpl.prototype.onCreateView = function (inflater, container, savedInstanceState) {
202
+ var owner = this.owner;
203
+ this.activity = new WeakRef(this.getActivity());
204
+ owner._setupAsRootView(this.getActivity());
205
+ owner._isAddedToNativeVisualTree = true;
232
206
  var window = this.getDialog().getWindow();
233
- var length = android.view.ViewGroup.LayoutParams.MATCH_PARENT;
234
- window.setLayout(length, length);
235
- // This removes the default backgroundDrawable so there are no margins.
236
- window.setBackgroundDrawable(new android.graphics.drawable.ColorDrawable(android.graphics.Color.WHITE));
237
- }
238
- var owner = this.owner;
239
- if (owner && !owner.isLoaded) {
240
- owner.callLoaded();
241
- }
242
- this._shownCallback();
243
- };
244
- DialogFragmentImpl.prototype.onDismiss = function (dialog) {
245
- var _a;
246
- _super.prototype.onDismiss.call(this, dialog);
247
- var manager = this.getFragmentManager();
248
- var activity = (_a = this.activity) === null || _a === void 0 ? void 0 : _a.get();
249
- if (manager && !(activity === null || activity === void 0 ? void 0 : activity.isChangingConfigurations())) {
250
- removeModal(this.owner._domId);
251
- this._dismissCallback();
252
- }
253
- var owner = this.owner;
254
- if (owner && owner.isLoaded) {
255
- owner.callUnloaded();
256
- }
257
- };
258
- DialogFragmentImpl.prototype.onDestroy = function () {
259
- var _a;
260
- _super.prototype.onDestroy.call(this);
261
- var owner = this.owner;
262
- var activity = (_a = this.activity) === null || _a === void 0 ? void 0 : _a.get();
263
- if (!(activity === null || activity === void 0 ? void 0 : activity.isChangingConfigurations())) {
264
- this.activity = null;
265
- }
266
- if (owner) {
267
- // Android calls onDestroy before onDismiss.
268
- // Make sure we unload first and then call _tearDownUI.
269
- if (owner.isLoaded) {
207
+ if (this._windowSoftInputMode !== undefined) {
208
+ window.setSoftInputMode(this._windowSoftInputMode);
209
+ }
210
+ else {
211
+ window.setSoftInputMode(owner._context.getWindow().getAttributes().softInputMode);
212
+ }
213
+ return owner.nativeViewProtected;
214
+ };
215
+ DialogFragmentImpl.prototype.onStart = function () {
216
+ _super.prototype.onStart.call(this);
217
+ if (this._fullscreen) {
218
+ var window = this.getDialog().getWindow();
219
+ var length = android.view.ViewGroup.LayoutParams.MATCH_PARENT;
220
+ window.setLayout(length, length);
221
+ window.setBackgroundDrawable(new android.graphics.drawable.ColorDrawable(android.graphics.Color.WHITE));
222
+ }
223
+ var owner = this.owner;
224
+ if (owner && !owner.isLoaded) {
225
+ owner.callLoaded();
226
+ }
227
+ this._shownCallback();
228
+ };
229
+ DialogFragmentImpl.prototype.onDismiss = function (dialog) {
230
+ var _a;
231
+ _super.prototype.onDismiss.call(this, dialog);
232
+ var manager = this.getFragmentManager();
233
+ var activity = (_a = this.activity) === null || _a === void 0 ? void 0 : _a.get();
234
+ if (manager && !(activity === null || activity === void 0 ? void 0 : activity.isChangingConfigurations())) {
235
+ removeModal(this.owner._domId);
236
+ this._dismissCallback();
237
+ }
238
+ var owner = this.owner;
239
+ if (owner && owner.isLoaded) {
270
240
  owner.callUnloaded();
271
241
  }
272
- owner._isAddedToNativeVisualTree = false;
273
- owner._tearDownUI(true);
274
- }
275
- };
276
- return DialogFragmentImpl;
277
- }(androidx.fragment.app.DialogFragment));
242
+ };
243
+ DialogFragmentImpl.prototype.onDestroy = function () {
244
+ var _a;
245
+ _super.prototype.onDestroy.call(this);
246
+ var owner = this.owner;
247
+ var activity = (_a = this.activity) === null || _a === void 0 ? void 0 : _a.get();
248
+ if (!(activity === null || activity === void 0 ? void 0 : activity.isChangingConfigurations())) {
249
+ this.activity = null;
250
+ }
251
+ if (owner) {
252
+ if (owner.isLoaded) {
253
+ owner.callUnloaded();
254
+ }
255
+ owner._isAddedToNativeVisualTree = false;
256
+ owner._tearDownUI(true);
257
+ }
258
+ };
259
+ return DialogFragmentImpl;
260
+ }(androidx.fragment.app.DialogFragment));
278
261
  DialogFragment = DialogFragmentImpl;
279
262
  }
280
263
  function saveModal(options) {
@@ -532,11 +515,29 @@ export class View extends ViewCommon {
532
515
  return false;
533
516
  }
534
517
  handleGestureTouch(event) {
535
- for (const type in this._gestureObservers) {
536
- const list = this._gestureObservers[type];
537
- list.forEach((element) => {
538
- element.androidOnTouchEvent(event);
539
- });
518
+ // This keeps a copy of gesture observers from the map to ensure concurrency
519
+ const allObservers = Object.values(this._gestureObservers);
520
+ for (const observers of allObservers) {
521
+ const length = observers.length;
522
+ if (!length) {
523
+ continue;
524
+ }
525
+ if (length === 1) {
526
+ const entry = observers[0];
527
+ if (entry) {
528
+ entry.androidOnTouchEvent(event);
529
+ }
530
+ }
531
+ else {
532
+ // This keeps a copy of gesture observers list to ensure concurrency
533
+ const observersCp = observers.slice();
534
+ for (let i = 0; i < length; i++) {
535
+ const entry = observersCp[i];
536
+ if (entry) {
537
+ entry.androidOnTouchEvent(event);
538
+ }
539
+ }
540
+ }
540
541
  }
541
542
  if (this.parent instanceof View) {
542
543
  this.parent.handleGestureTouch(event);
@@ -878,8 +879,14 @@ export class View extends ViewCommon {
878
879
  const gravity = lp.gravity;
879
880
  const weight = lp.weight;
880
881
  // Set only if params gravity exists.
881
- if (gravity !== undefined) {
882
+ if (gravity != null) {
882
883
  switch (value) {
884
+ case 'start':
885
+ lp.gravity = (this.direction === CoreTypes.LayoutDirection.rtl ? GRAVITY_RIGHT : GRAVITY_LEFT) | (gravity & VERTICAL_GRAVITY_MASK);
886
+ if (weight < 0) {
887
+ lp.weight = -2;
888
+ }
889
+ break;
883
890
  case 'left':
884
891
  lp.gravity = GRAVITY_LEFT | (gravity & VERTICAL_GRAVITY_MASK);
885
892
  if (weight < 0) {
@@ -898,6 +905,12 @@ export class View extends ViewCommon {
898
905
  lp.weight = -2;
899
906
  }
900
907
  break;
908
+ case 'end':
909
+ lp.gravity = (this.direction === CoreTypes.LayoutDirection.rtl ? GRAVITY_LEFT : GRAVITY_RIGHT) | (gravity & VERTICAL_GRAVITY_MASK);
910
+ if (weight < 0) {
911
+ lp.weight = -2;
912
+ }
913
+ break;
901
914
  case 'stretch':
902
915
  lp.gravity = GRAVITY_FILL_HORIZONTAL | (gravity & VERTICAL_GRAVITY_MASK);
903
916
  if (weight < 0) {
@@ -1027,9 +1040,6 @@ export class View extends ViewCommon {
1027
1040
  }
1028
1041
  return this._context.getWindow();
1029
1042
  }
1030
- [testIDProperty.setNative](value) {
1031
- this.setAccessibilityIdentifier(this.nativeViewProtected, value);
1032
- }
1033
1043
  setAccessibilityIdentifier(view, value) {
1034
1044
  const id = Utils.android.resources.getId(':id/nativescript_accessibility_id');
1035
1045
  if (id) {
@@ -1041,6 +1051,23 @@ export class View extends ViewCommon {
1041
1051
  if (this.accessibilityIdentifier !== value)
1042
1052
  this.accessibilityIdentifier = value;
1043
1053
  }
1054
+ [directionProperty.setNative](value) {
1055
+ const nativeView = this.nativeViewProtected;
1056
+ switch (value) {
1057
+ case CoreTypes.LayoutDirection.ltr:
1058
+ nativeView.setLayoutDirection(android.view.View.LAYOUT_DIRECTION_LTR);
1059
+ break;
1060
+ case CoreTypes.LayoutDirection.rtl:
1061
+ nativeView.setLayoutDirection(android.view.View.LAYOUT_DIRECTION_RTL);
1062
+ break;
1063
+ default:
1064
+ nativeView.setLayoutDirection(android.view.View.LAYOUT_DIRECTION_LOCALE);
1065
+ break;
1066
+ }
1067
+ }
1068
+ [testIDProperty.setNative](value) {
1069
+ this.setAccessibilityIdentifier(this.nativeViewProtected, value);
1070
+ }
1044
1071
  [accessibilityEnabledProperty.setNative](value) {
1045
1072
  this.nativeViewProtected.setFocusable(!!value);
1046
1073
  updateA11yPropertiesCallback(this);