@nativescript-community/ui-bottomsheet 0.0.0-stage → 1.0.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/CHANGELOG.md +22 -0
- package/LICENSE +201 -0
- package/README.md +213 -2
- package/index-common.d.ts +93 -0
- package/index-common.js +140 -0
- package/index-common.js.map +1 -0
- package/index.android.d.ts +44 -0
- package/index.android.js +475 -0
- package/index.android.js.map +1 -0
- package/index.d.ts +100 -0
- package/index.ios.d.ts +114 -0
- package/index.ios.js +678 -0
- package/index.ios.js.map +1 -0
- package/ios-layout.d.ts +64 -0
- package/ios-layout.js +356 -0
- package/ios-layout.js.map +1 -0
- package/package.json +49 -5
- package/platforms/android/include.gradle +6 -0
- package/platforms/android/java/com/nativescript/ui/bottomsheet/BottomSheetDialog.java +38 -0
- package/platforms/android/java/com/nativescript/ui/bottomsheet/BottomSheetDialogFragment.java +73 -0
- package/platforms/android/native-api-usage.json +36 -0
- package/platforms/ios/native-api-usage.json +11 -0
- package/svelte/index.d.ts +24 -0
- package/svelte/index.js +48 -0
- package/svelte/index.js.map +1 -0
- package/tsconfig.tsbuildinfo +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-common.js","sourceRoot":"","sources":["../../src/ui-bottomsheet/index-common.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { View } from '@nativescript/core';
|
|
2
|
+
import { BottomSheetOptions, ViewWithBottomSheetBase } from './index-common';
|
|
3
|
+
export { ViewWithBottomSheetBase } from './index-common';
|
|
4
|
+
/**
|
|
5
|
+
* Android: the detents are the stops of BottomSheetBehavior (collapsed, half expanded, expanded).
|
|
6
|
+
*/
|
|
7
|
+
export declare class ViewWithBottomSheet extends ViewWithBottomSheetBase {
|
|
8
|
+
_bottomSheetFragment: com.nativescript.ui.bottomsheet.BottomSheetDialogFragment;
|
|
9
|
+
_bottomSheetOptions: BottomSheetOptions;
|
|
10
|
+
_bottomSheetBehavior: com.google.android.material.bottomsheet.BottomSheetBehavior<android.view.View>;
|
|
11
|
+
_detentCount: number;
|
|
12
|
+
_detentHeights: number[];
|
|
13
|
+
_baseDimAmount: number;
|
|
14
|
+
_undimmedIndex: number;
|
|
15
|
+
_bottomSheetWindow: android.view.Window;
|
|
16
|
+
_onDetentChange: (index: number) => void;
|
|
17
|
+
/**
|
|
18
|
+
* State of the behavior for the index of a detent: 1 detent = expanded, 2 = collapsed/expanded, 3 = collapsed/half expanded/expanded
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* `largestUndimmedDetentIndex`: no dim at the undimmed detent and below it, the dim grows above it
|
|
22
|
+
*/
|
|
23
|
+
updateDimForSlide(slideOffset: number): void;
|
|
24
|
+
updateDimForState(state: number): void;
|
|
25
|
+
private stateForDetentIndex;
|
|
26
|
+
setBottomSheetDetentIndex(index: number, animated?: boolean): void;
|
|
27
|
+
getBottomSheetDetentIndex(): number;
|
|
28
|
+
/**
|
|
29
|
+
* Applies the `detents` option once the sheet is laid out (the available and the content heights are known)
|
|
30
|
+
*/
|
|
31
|
+
applyDetents(sheet: android.view.View, behavior: com.google.android.material.bottomsheet.BottomSheetBehavior<android.view.View>, options: BottomSheetOptions): void;
|
|
32
|
+
/**
|
|
33
|
+
* BottomSheetBehavior only follows a child which supports nested scrolling: RecyclerView (@nativescript-community/ui-collectionview) does,
|
|
34
|
+
* the ScrollView and the ListView of NativeScript do not by default.
|
|
35
|
+
* `trackingScrollView` is the id of the view to enable, else the scrollable views of the content are enabled.
|
|
36
|
+
*/
|
|
37
|
+
enableNestedScrolling(sheet: android.view.View): void;
|
|
38
|
+
applyGrabber(fragment: com.nativescript.ui.bottomsheet.BottomSheetDialogFragment, sheet: android.view.View): void;
|
|
39
|
+
applyCornerRadius(sheet: android.view.View, radius: number): void;
|
|
40
|
+
protected _hideNativeBottomSheet(parent: View, whenClosedCallback: () => void): void;
|
|
41
|
+
protected _showNativeBottomSheet(parent: View, options: BottomSheetOptions): void;
|
|
42
|
+
}
|
|
43
|
+
export declare function overrideBottomSheet(): void;
|
|
44
|
+
export declare function install(): void;
|
package/index.android.js
ADDED
|
@@ -0,0 +1,475 @@
|
|
|
1
|
+
import { applyMixins } from '@nativescript-community/ui-core';
|
|
2
|
+
import { Application, Utils, View, fromObject } from '@nativescript/core';
|
|
3
|
+
import { StateBottomSheet, ViewWithBottomSheetBase } from './index-common';
|
|
4
|
+
export { ViewWithBottomSheetBase } from './index-common';
|
|
5
|
+
function getId(id) {
|
|
6
|
+
const context = Application.android.context;
|
|
7
|
+
return context.getResources().getIdentifier(id, 'id', context.getPackageName());
|
|
8
|
+
}
|
|
9
|
+
var ChangeStateBottomSheet = /** @class */ (function (_super) {
|
|
10
|
+
__extends(ChangeStateBottomSheet, _super);
|
|
11
|
+
function ChangeStateBottomSheet(owner) {
|
|
12
|
+
var _this = _super.call(this) || this;
|
|
13
|
+
_this.owner = owner;
|
|
14
|
+
return global.__native(_this);
|
|
15
|
+
}
|
|
16
|
+
ChangeStateBottomSheet.prototype.onSlide = function (bottomSheet, slideOffset) {
|
|
17
|
+
var _a;
|
|
18
|
+
var owner = (_a = this.owner) === null || _a === void 0 ? void 0 : _a.get();
|
|
19
|
+
owner === null || owner === void 0 ? void 0 : owner.updateDimForSlide(slideOffset);
|
|
20
|
+
if (owner && this.checkActiveCallback()) {
|
|
21
|
+
owner._onChangeStateBottomSheetCallback(StateBottomSheet.DRAGGING, slideOffset);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
ChangeStateBottomSheet.prototype.onStateChanged = function (bottomSheet, newState) {
|
|
25
|
+
var _a;
|
|
26
|
+
var owner = (_a = this.owner) === null || _a === void 0 ? void 0 : _a.get();
|
|
27
|
+
if (!owner) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
owner.updateDimForState(newState);
|
|
31
|
+
if (this.checkActiveCallback()) {
|
|
32
|
+
var status = this.getStateBottomSheetFromBottomSheetBehavior(newState);
|
|
33
|
+
if (status !== undefined) {
|
|
34
|
+
owner._onChangeStateBottomSheetCallback(status);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
if (owner._onDetentChange && owner._detentCount > 0 && newState !== com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_DRAGGING && newState !== com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_SETTLING) {
|
|
38
|
+
var index = owner.getBottomSheetDetentIndex();
|
|
39
|
+
if (index >= 0) {
|
|
40
|
+
owner._onDetentChange(index);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
ChangeStateBottomSheet.prototype.checkActiveCallback = function () {
|
|
45
|
+
var _a, _b;
|
|
46
|
+
return (_b = (_a = this.owner) === null || _a === void 0 ? void 0 : _a.get()) === null || _b === void 0 ? void 0 : _b._onChangeStateBottomSheetCallback;
|
|
47
|
+
};
|
|
48
|
+
ChangeStateBottomSheet.prototype.getStateBottomSheetFromBottomSheetBehavior = function (state) {
|
|
49
|
+
switch (state) {
|
|
50
|
+
case com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_HIDDEN:
|
|
51
|
+
return StateBottomSheet.CLOSED;
|
|
52
|
+
case com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_EXPANDED:
|
|
53
|
+
return StateBottomSheet.EXPANDED;
|
|
54
|
+
case com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_COLLAPSED:
|
|
55
|
+
return StateBottomSheet.COLLAPSED;
|
|
56
|
+
case com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_DRAGGING:
|
|
57
|
+
return StateBottomSheet.DRAGGING;
|
|
58
|
+
default:
|
|
59
|
+
// @ts-ignore
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
return ChangeStateBottomSheet;
|
|
64
|
+
}(com.google.android.material.bottomsheet.BottomSheetBehavior.BottomSheetCallback));
|
|
65
|
+
const DRAG_HANDLE_MARGIN = 28;
|
|
66
|
+
/**
|
|
67
|
+
* Android: the detents are the stops of BottomSheetBehavior (collapsed, half expanded, expanded).
|
|
68
|
+
*/
|
|
69
|
+
export class ViewWithBottomSheet extends ViewWithBottomSheetBase {
|
|
70
|
+
constructor() {
|
|
71
|
+
super(...arguments);
|
|
72
|
+
this._detentCount = 0;
|
|
73
|
+
this._detentHeights = [];
|
|
74
|
+
this._baseDimAmount = 0.32;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* State of the behavior for the index of a detent: 1 detent = expanded, 2 = collapsed/expanded, 3 = collapsed/half expanded/expanded
|
|
78
|
+
*/
|
|
79
|
+
/**
|
|
80
|
+
* `largestUndimmedDetentIndex`: no dim at the undimmed detent and below it, the dim grows above it
|
|
81
|
+
*/
|
|
82
|
+
updateDimForSlide(slideOffset) {
|
|
83
|
+
const heights = this._detentHeights;
|
|
84
|
+
if (this._undimmedIndex === undefined || !this._bottomSheetWindow || heights.length < 2 || slideOffset < 0) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const min = heights[0];
|
|
88
|
+
const max = heights[heights.length - 1];
|
|
89
|
+
const undimmed = heights[Math.min(this._undimmedIndex, heights.length - 1)];
|
|
90
|
+
const height = min + slideOffset * (max - min);
|
|
91
|
+
const ratio = max > undimmed ? Math.min(1, Math.max(0, (height - undimmed) / (max - undimmed))) : 1;
|
|
92
|
+
this._bottomSheetWindow.setDimAmount(this._baseDimAmount * ratio);
|
|
93
|
+
}
|
|
94
|
+
updateDimForState(state) {
|
|
95
|
+
if (this._undimmedIndex === undefined || !this._bottomSheetWindow || this._detentCount === 0) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const BSB = com.google.android.material.bottomsheet.BottomSheetBehavior;
|
|
99
|
+
if (state === BSB.STATE_DRAGGING || state === BSB.STATE_SETTLING) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const index = this.getBottomSheetDetentIndex();
|
|
103
|
+
if (index >= 0) {
|
|
104
|
+
this._bottomSheetWindow.setDimAmount(index <= this._undimmedIndex ? 0 : this._baseDimAmount);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
stateForDetentIndex(index) {
|
|
108
|
+
const BSB = com.google.android.material.bottomsheet.BottomSheetBehavior;
|
|
109
|
+
const count = this._detentCount;
|
|
110
|
+
if (count <= 1 || index >= count - 1) {
|
|
111
|
+
return BSB.STATE_EXPANDED;
|
|
112
|
+
}
|
|
113
|
+
return index <= 0 ? BSB.STATE_COLLAPSED : BSB.STATE_HALF_EXPANDED;
|
|
114
|
+
}
|
|
115
|
+
setBottomSheetDetentIndex(index, animated = true) {
|
|
116
|
+
const behavior = this._bottomSheetBehavior;
|
|
117
|
+
if (!behavior || this._detentCount === 0) {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
// setState animates
|
|
121
|
+
behavior.setState(this.stateForDetentIndex(index));
|
|
122
|
+
}
|
|
123
|
+
getBottomSheetDetentIndex() {
|
|
124
|
+
const behavior = this._bottomSheetBehavior;
|
|
125
|
+
if (!behavior || this._detentCount === 0) {
|
|
126
|
+
return -1;
|
|
127
|
+
}
|
|
128
|
+
const BSB = com.google.android.material.bottomsheet.BottomSheetBehavior;
|
|
129
|
+
switch (behavior.getState()) {
|
|
130
|
+
case BSB.STATE_COLLAPSED:
|
|
131
|
+
return this._detentCount > 1 ? 0 : -1;
|
|
132
|
+
case BSB.STATE_HALF_EXPANDED:
|
|
133
|
+
return 1;
|
|
134
|
+
case BSB.STATE_EXPANDED:
|
|
135
|
+
return this._detentCount - 1;
|
|
136
|
+
default:
|
|
137
|
+
return -1;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Applies the `detents` option once the sheet is laid out (the available and the content heights are known)
|
|
142
|
+
*/
|
|
143
|
+
applyDetents(sheet, behavior, options) {
|
|
144
|
+
const parentHeight = sheet.getParent().getHeight();
|
|
145
|
+
const contentHeight = this.nativeViewProtected?.getHeight() || parentHeight;
|
|
146
|
+
const resolve = (detent) => {
|
|
147
|
+
let height;
|
|
148
|
+
if (detent === 'large') {
|
|
149
|
+
height = parentHeight;
|
|
150
|
+
}
|
|
151
|
+
else if (detent === 'medium') {
|
|
152
|
+
height = parentHeight / 2;
|
|
153
|
+
}
|
|
154
|
+
else if (detent === 'content') {
|
|
155
|
+
height = contentHeight;
|
|
156
|
+
}
|
|
157
|
+
else if (typeof detent === 'number') {
|
|
158
|
+
height = Utils.layout.toDevicePixels(detent);
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
height = detent.fraction * parentHeight;
|
|
162
|
+
}
|
|
163
|
+
return Math.round(Math.min(height, parentHeight));
|
|
164
|
+
};
|
|
165
|
+
let detents = options.detents;
|
|
166
|
+
if (detents.length > 3) {
|
|
167
|
+
// collapsed, half expanded, expanded
|
|
168
|
+
detents = [detents[0], detents[Math.floor(detents.length / 2)], detents[detents.length - 1]];
|
|
169
|
+
}
|
|
170
|
+
const heights = detents.map(resolve);
|
|
171
|
+
const count = heights.length;
|
|
172
|
+
const max = heights[count - 1];
|
|
173
|
+
this._detentCount = count;
|
|
174
|
+
this._detentHeights = heights;
|
|
175
|
+
// the content can be smaller than the largest detent
|
|
176
|
+
sheet.setMinimumHeight(max);
|
|
177
|
+
behavior.setPeekHeight(heights[0]);
|
|
178
|
+
if (count <= 2) {
|
|
179
|
+
behavior.setFitToContents(true);
|
|
180
|
+
behavior.setSkipCollapsed(count === 1);
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
behavior.setFitToContents(false);
|
|
184
|
+
behavior.setExpandedOffset(parentHeight - max);
|
|
185
|
+
behavior.setHalfExpandedRatio(Math.min(0.99, Math.max(0.01, heights[1] / parentHeight)));
|
|
186
|
+
behavior.setSkipCollapsed(false);
|
|
187
|
+
}
|
|
188
|
+
behavior.setState(this.stateForDetentIndex(options.initialDetentIndex || 0));
|
|
189
|
+
this.updateDimForState(behavior.getState());
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* BottomSheetBehavior only follows a child which supports nested scrolling: RecyclerView (@nativescript-community/ui-collectionview) does,
|
|
193
|
+
* the ScrollView and the ListView of NativeScript do not by default.
|
|
194
|
+
* `trackingScrollView` is the id of the view to enable, else the scrollable views of the content are enabled.
|
|
195
|
+
*/
|
|
196
|
+
enableNestedScrolling(sheet) {
|
|
197
|
+
const trackingId = this._bottomSheetOptions?.trackingScrollView;
|
|
198
|
+
const enable = (view) => {
|
|
199
|
+
const native = view.nativeViewProtected;
|
|
200
|
+
if (native instanceof android.view.View && (native instanceof android.widget.ScrollView || native instanceof android.widget.AbsListView || native instanceof android.webkit.WebView || (trackingId && view.id === trackingId))) {
|
|
201
|
+
androidx.core.view.ViewCompat.setNestedScrollingEnabled(native, true);
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
this.eachChildView(function visit(child) {
|
|
205
|
+
enable(child);
|
|
206
|
+
child.eachChildView(visit);
|
|
207
|
+
return true;
|
|
208
|
+
});
|
|
209
|
+
enable(this);
|
|
210
|
+
// the behavior finds its scrolling child when laid out
|
|
211
|
+
sheet.requestLayout();
|
|
212
|
+
}
|
|
213
|
+
applyGrabber(fragment, sheet) {
|
|
214
|
+
const handle = new com.google.android.material.bottomsheet.BottomSheetDragHandleView(fragment.getActivity());
|
|
215
|
+
sheet.addView(handle, new android.widget.FrameLayout.LayoutParams(android.view.ViewGroup.LayoutParams.MATCH_PARENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT, android.view.Gravity.TOP));
|
|
216
|
+
// the content starts below the handle
|
|
217
|
+
const content = this.nativeViewProtected;
|
|
218
|
+
const params = content?.getLayoutParams();
|
|
219
|
+
if (params instanceof android.view.ViewGroup.MarginLayoutParams) {
|
|
220
|
+
params.topMargin = Utils.layout.toDevicePixels(DRAG_HANDLE_MARGIN);
|
|
221
|
+
content.setLayoutParams(params);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
applyCornerRadius(sheet, radius) {
|
|
225
|
+
const background = sheet.getBackground();
|
|
226
|
+
if (background instanceof com.google.android.material.shape.MaterialShapeDrawable) {
|
|
227
|
+
const size = Utils.layout.toDevicePixels(radius);
|
|
228
|
+
background.setShapeAppearanceModel(background.getShapeAppearanceModel().toBuilder().setTopLeftCornerSize(size).setTopRightCornerSize(size).build());
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
_hideNativeBottomSheet(parent, whenClosedCallback) {
|
|
232
|
+
// call whenClosedCallback first because dismiss will call another one (without result)
|
|
233
|
+
whenClosedCallback();
|
|
234
|
+
const manager = this._bottomSheetFragment.getFragmentManager();
|
|
235
|
+
if (manager) {
|
|
236
|
+
this._bottomSheetFragment.dismissAllowingStateLoss();
|
|
237
|
+
}
|
|
238
|
+
this._bottomSheetFragment = null;
|
|
239
|
+
}
|
|
240
|
+
_showNativeBottomSheet(parent, options) {
|
|
241
|
+
this._bottomSheetOptions = options;
|
|
242
|
+
this._commonShowNativeBottomSheet(parent, options);
|
|
243
|
+
const that = new WeakRef(this);
|
|
244
|
+
const domId = this._domId;
|
|
245
|
+
const bottomSheetOptions = {
|
|
246
|
+
owner: this,
|
|
247
|
+
options,
|
|
248
|
+
shownCallback: () => {
|
|
249
|
+
this.bindingContext = fromObject(options.context);
|
|
250
|
+
this._raiseShownBottomSheetEvent();
|
|
251
|
+
},
|
|
252
|
+
dismissCallback: () => this._onDismissBottomSheetCallback?.()
|
|
253
|
+
};
|
|
254
|
+
const dfListener = new com.nativescript.ui.bottomsheet.BottomSheetDialogFragment.BottomSheetDialogFragmentListener({
|
|
255
|
+
onCreateDialog(fragment, savedInstanceState) {
|
|
256
|
+
const theme = fragment.getTheme();
|
|
257
|
+
const dialogListener = new com.nativescript.ui.bottomsheet.BottomSheetDialog.BottomSheetDialogListener({
|
|
258
|
+
onDetachedFromWindow(dialog) {
|
|
259
|
+
dialog.nListener = null;
|
|
260
|
+
},
|
|
261
|
+
onBackPressed(dialog) {
|
|
262
|
+
const sheetOptions = bottomSheetOptions.options;
|
|
263
|
+
if (sheetOptions?.dismissOnBackButton === false) {
|
|
264
|
+
sheetOptions.onDismissAttempt?.();
|
|
265
|
+
return true;
|
|
266
|
+
}
|
|
267
|
+
if (sheetOptions?.onWillDismiss && sheetOptions.onWillDismiss() === false) {
|
|
268
|
+
sheetOptions.onDismissAttempt?.();
|
|
269
|
+
return true;
|
|
270
|
+
}
|
|
271
|
+
const owner = that?.get();
|
|
272
|
+
if (!owner) {
|
|
273
|
+
return false;
|
|
274
|
+
}
|
|
275
|
+
const args = {
|
|
276
|
+
eventName: 'activityBackPressed',
|
|
277
|
+
object: owner,
|
|
278
|
+
activity: owner._context,
|
|
279
|
+
cancel: false
|
|
280
|
+
};
|
|
281
|
+
// Fist fire application.android global event
|
|
282
|
+
Application.android.notify(args);
|
|
283
|
+
if (args.cancel) {
|
|
284
|
+
return true;
|
|
285
|
+
}
|
|
286
|
+
owner.notify(args);
|
|
287
|
+
if (!args.cancel) {
|
|
288
|
+
args.cancel = owner.onBackPressed();
|
|
289
|
+
}
|
|
290
|
+
return args.cancel;
|
|
291
|
+
}
|
|
292
|
+
});
|
|
293
|
+
const dialog = new com.nativescript.ui.bottomsheet.BottomSheetDialog(fragment.getActivity(), theme);
|
|
294
|
+
dialog.setListener(dialogListener);
|
|
295
|
+
dialog.nListener = dialogListener;
|
|
296
|
+
if (bottomSheetOptions.options) {
|
|
297
|
+
const creationOptions = bottomSheetOptions.options;
|
|
298
|
+
if (creationOptions.dismissOnBackgroundTap !== undefined) {
|
|
299
|
+
dialog.setCanceledOnTouchOutside(creationOptions.dismissOnBackgroundTap);
|
|
300
|
+
}
|
|
301
|
+
if (creationOptions.disableDimBackground === true) {
|
|
302
|
+
dialog.getWindow().clearFlags(android.view.WindowManager.LayoutParams.FLAG_DIM_BEHIND);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
return dialog;
|
|
306
|
+
},
|
|
307
|
+
onCreateView(fragment, inflater, container, savedInstanceState) {
|
|
308
|
+
const owner = that?.get();
|
|
309
|
+
if (owner) {
|
|
310
|
+
owner._setupAsRootView(fragment.getActivity());
|
|
311
|
+
owner.parent = Application.getRootView();
|
|
312
|
+
owner._isAddedToNativeVisualTree = true;
|
|
313
|
+
const window = fragment.getDialog().getWindow();
|
|
314
|
+
if (bottomSheetOptions.options?.windowSoftInputMode !== undefined) {
|
|
315
|
+
window.setSoftInputMode(bottomSheetOptions.options?.windowSoftInputMode);
|
|
316
|
+
}
|
|
317
|
+
else {
|
|
318
|
+
// the dialog seems to not follow the default activity softInputMode,
|
|
319
|
+
// thus set we set it here.
|
|
320
|
+
window.setSoftInputMode(owner._context.getWindow().getAttributes().softInputMode);
|
|
321
|
+
}
|
|
322
|
+
return owner.nativeViewProtected;
|
|
323
|
+
}
|
|
324
|
+
return null;
|
|
325
|
+
},
|
|
326
|
+
onStart(fragment) {
|
|
327
|
+
const owner = that?.get();
|
|
328
|
+
if (!owner) {
|
|
329
|
+
return;
|
|
330
|
+
}
|
|
331
|
+
const contentViewId = getId('design_bottom_sheet');
|
|
332
|
+
const view = fragment.getDialog().findViewById(contentViewId);
|
|
333
|
+
const transparent = bottomSheetOptions.options?.transparent === true;
|
|
334
|
+
if (transparent) {
|
|
335
|
+
// we need delay it just a bit or it wont work
|
|
336
|
+
setTimeout(() => {
|
|
337
|
+
view.setBackground(null);
|
|
338
|
+
}, 0);
|
|
339
|
+
}
|
|
340
|
+
else if (bottomSheetOptions.options?.backgroundOpacity) {
|
|
341
|
+
// we need delay it just a bit or it wont work
|
|
342
|
+
setTimeout(() => {
|
|
343
|
+
const backgroundDrawable = view.getBackground();
|
|
344
|
+
backgroundDrawable.setAlpha(bottomSheetOptions.options?.backgroundOpacity * 255);
|
|
345
|
+
view.setBackground(backgroundDrawable);
|
|
346
|
+
}, 0);
|
|
347
|
+
}
|
|
348
|
+
const behavior = com.google.android.material.bottomsheet.BottomSheetBehavior.from(view);
|
|
349
|
+
// prevent hiding the bottom sheet by
|
|
350
|
+
const dismissOnDraggingDownSheet = bottomSheetOptions.options?.dismissOnDraggingDownSheet !== false;
|
|
351
|
+
behavior.setHideable(dismissOnDraggingDownSheet);
|
|
352
|
+
const peekHeight = bottomSheetOptions.options?.detents?.length ? undefined : bottomSheetOptions.options?.peekHeight;
|
|
353
|
+
if (peekHeight) {
|
|
354
|
+
behavior.setState(com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_COLLAPSED);
|
|
355
|
+
behavior.setPeekHeight(Utils.layout.toDevicePixels(peekHeight));
|
|
356
|
+
}
|
|
357
|
+
if (!dismissOnDraggingDownSheet) {
|
|
358
|
+
// directly expand the bottom sheet after start
|
|
359
|
+
behavior.setState(com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_EXPANDED);
|
|
360
|
+
// set to maximum possible value to prevent dragging the sheet between peek and expanded height
|
|
361
|
+
behavior.setPeekHeight(java.lang.Integer.MAX_VALUE);
|
|
362
|
+
}
|
|
363
|
+
const skipCollapsedState = bottomSheetOptions.options?.skipCollapsedState === true && !bottomSheetOptions.options?.detents?.length;
|
|
364
|
+
if (skipCollapsedState) {
|
|
365
|
+
// directly expand the bottom sheet after start
|
|
366
|
+
behavior.setState(com.google.android.material.bottomsheet.BottomSheetBehavior.STATE_EXPANDED);
|
|
367
|
+
// disable peek/collapsed state
|
|
368
|
+
behavior.setSkipCollapsed(true);
|
|
369
|
+
}
|
|
370
|
+
owner._bottomSheetBehavior = behavior;
|
|
371
|
+
const window = fragment.getDialog().getWindow();
|
|
372
|
+
owner._bottomSheetWindow = window;
|
|
373
|
+
owner._baseDimAmount = window.getAttributes().dimAmount || 0.32;
|
|
374
|
+
owner._undimmedIndex = bottomSheetOptions.options?.largestUndimmedDetentIndex;
|
|
375
|
+
const sheetOptions = bottomSheetOptions.options;
|
|
376
|
+
if (!sheetOptions?.canTouchBehind && (sheetOptions?.onWillDismiss || sheetOptions?.onDismissAttempt)) {
|
|
377
|
+
// the tap outside is handled here to call onWillDismiss/onDismissAttempt
|
|
378
|
+
const touchOutside = view.getParent().findViewById(getId('touch_outside'));
|
|
379
|
+
touchOutside?.setOnClickListener(new android.view.View.OnClickListener({
|
|
380
|
+
onClick: () => {
|
|
381
|
+
if (sheetOptions.dismissOnBackgroundTap !== false && sheetOptions.onWillDismiss?.() !== false) {
|
|
382
|
+
fragment.getDialog().cancel();
|
|
383
|
+
}
|
|
384
|
+
else {
|
|
385
|
+
sheetOptions.onDismissAttempt?.();
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
}));
|
|
389
|
+
}
|
|
390
|
+
// the scrollable content (ScrollView, ListView, CollectionView...) must take part in the nested scrolling to be scrolled before the sheet
|
|
391
|
+
owner.enableNestedScrolling(view);
|
|
392
|
+
owner._onDetentChange = bottomSheetOptions.options?.onDetentChange;
|
|
393
|
+
if (bottomSheetOptions.options?.detents?.length) {
|
|
394
|
+
// once laid out
|
|
395
|
+
view.post(new java.lang.Runnable({
|
|
396
|
+
run: () => {
|
|
397
|
+
owner.applyDetents(view, behavior, bottomSheetOptions.options);
|
|
398
|
+
}
|
|
399
|
+
}));
|
|
400
|
+
}
|
|
401
|
+
if (bottomSheetOptions.options?.grabber !== false) {
|
|
402
|
+
owner.applyGrabber(fragment, view);
|
|
403
|
+
}
|
|
404
|
+
if (bottomSheetOptions.options?.cornerRadius !== undefined) {
|
|
405
|
+
// the background is set after the start
|
|
406
|
+
setTimeout(() => owner.applyCornerRadius(view, bottomSheetOptions.options.cornerRadius), 0);
|
|
407
|
+
}
|
|
408
|
+
const onChangeState = bottomSheetOptions.options?.onChangeState;
|
|
409
|
+
if (onChangeState || bottomSheetOptions.options?.onDetentChange || bottomSheetOptions.options?.largestUndimmedDetentIndex !== undefined) {
|
|
410
|
+
const changeStateBottomSheet = new ChangeStateBottomSheet(that);
|
|
411
|
+
behavior.addBottomSheetCallback(changeStateBottomSheet);
|
|
412
|
+
that?.get()?._onChangeStateBottomSheetCallback?.(changeStateBottomSheet.getStateBottomSheetFromBottomSheetBehavior(behavior.getState()));
|
|
413
|
+
}
|
|
414
|
+
if (owner && !owner.isLoaded) {
|
|
415
|
+
owner.callLoaded();
|
|
416
|
+
}
|
|
417
|
+
if (bottomSheetOptions.options.canTouchBehind) {
|
|
418
|
+
// necessary for smooth movement of the back page
|
|
419
|
+
fragment.getDialog().getWindow().setFlags(android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
|
|
420
|
+
const coordinator = view.getParent();
|
|
421
|
+
if (coordinator instanceof android.view.View) {
|
|
422
|
+
coordinator.findViewById(getId('touch_outside')).setOnTouchListener(new android.view.View.OnTouchListener({
|
|
423
|
+
onTouch(view, event) {
|
|
424
|
+
const forwardedEvent = android.view.MotionEvent.obtain(event);
|
|
425
|
+
forwardedEvent.setLocation(event.getRawX(), event.getRawY());
|
|
426
|
+
try {
|
|
427
|
+
fragment.getActivity().dispatchTouchEvent(forwardedEvent);
|
|
428
|
+
}
|
|
429
|
+
finally {
|
|
430
|
+
forwardedEvent.recycle();
|
|
431
|
+
}
|
|
432
|
+
return false;
|
|
433
|
+
}
|
|
434
|
+
}));
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
bottomSheetOptions.shownCallback();
|
|
438
|
+
},
|
|
439
|
+
onDismiss(fragment, dialog) {
|
|
440
|
+
const owner = that?.get();
|
|
441
|
+
if (owner) {
|
|
442
|
+
owner._bottomSheetCloseIgnore = true;
|
|
443
|
+
}
|
|
444
|
+
bottomSheetOptions.dismissCallback();
|
|
445
|
+
},
|
|
446
|
+
onDestroy(fragment) {
|
|
447
|
+
df.nListener = null;
|
|
448
|
+
const owner = that?.get();
|
|
449
|
+
if (owner) {
|
|
450
|
+
owner._bottomSheetCloseIgnore = false;
|
|
451
|
+
owner._bottomSheetClosed();
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
});
|
|
455
|
+
const df = new com.nativescript.ui.bottomsheet.BottomSheetDialogFragment();
|
|
456
|
+
df.setListener(dfListener);
|
|
457
|
+
df.nListener = dfListener;
|
|
458
|
+
this._bottomSheetFragment = df;
|
|
459
|
+
this._raiseShowingBottomSheetEvent();
|
|
460
|
+
//@ts-ignore
|
|
461
|
+
df.show(parent._getRootFragmentManager(), domId.toString());
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
let mixinInstalled = false;
|
|
465
|
+
export function overrideBottomSheet() {
|
|
466
|
+
applyMixins(View, [ViewWithBottomSheetBase, ViewWithBottomSheet]);
|
|
467
|
+
}
|
|
468
|
+
export function install() {
|
|
469
|
+
if (!mixinInstalled) {
|
|
470
|
+
mixinInstalled = true;
|
|
471
|
+
// overridePage();
|
|
472
|
+
overrideBottomSheet();
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
//# sourceMappingURL=index.android.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.android.js","sourceRoot":"","sources":["../../src/ui-bottomsheet/index.android.ts"],"names":[],"mappings":"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"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BottomSheet: adds `showBottomSheet()`/`closeBottomSheet()` to every View.
|
|
3
|
+
* Android uses Material BottomSheetDialogFragment. iOS uses the native UISheetPresentationController.
|
|
4
|
+
* @module @nativescript-community/ui-bottomsheet
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { View, ViewBase } from '@nativescript/core';
|
|
8
|
+
import { BottomSheetDetent, BottomSheetOptions } from './index-common';
|
|
9
|
+
|
|
10
|
+
export { BottomSheetDetent, BottomSheetOptions };
|
|
11
|
+
|
|
12
|
+
export declare abstract class ViewWithBottomSheetBase extends View {
|
|
13
|
+
// used when triggering the closing of the bottomsheet
|
|
14
|
+
/**
|
|
15
|
+
* @hidden
|
|
16
|
+
*/
|
|
17
|
+
protected _closeBottomSheetCallback: Function;
|
|
18
|
+
|
|
19
|
+
// used when the bottomSheet is dismissed
|
|
20
|
+
/**
|
|
21
|
+
* @hidden
|
|
22
|
+
*/
|
|
23
|
+
public _onDismissBottomSheetCallback: Function;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @hidden
|
|
27
|
+
*/
|
|
28
|
+
_bottomSheetFragment: any; // com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @hidden
|
|
32
|
+
*/
|
|
33
|
+
protected abstract _hideNativeBottomSheet(parent: any, whenClosedCallback: any): void;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* @hidden
|
|
37
|
+
*/
|
|
38
|
+
protected _bottomSheetContext: any;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* @hidden
|
|
42
|
+
*/
|
|
43
|
+
_raiseShownBottomSheetEvent(): void;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* @hidden
|
|
47
|
+
*/
|
|
48
|
+
public _bottomSheetClosed(): void;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* @hidden
|
|
52
|
+
*/
|
|
53
|
+
protected abstract _showNativeBottomSheet(parent: View, options: BottomSheetOptions): void;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* @hidden
|
|
57
|
+
*/
|
|
58
|
+
protected _commonShowNativeBottomSheet(parent: View, options: BottomSheetOptions): void;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* @hidden
|
|
62
|
+
*/
|
|
63
|
+
protected _raiseShowingBottomSheetEvent(): void;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* closes the current BottomSheet
|
|
67
|
+
*
|
|
68
|
+
* @param args anything you want as a result of the `showBottomSheet` Promise
|
|
69
|
+
*/
|
|
70
|
+
public closeBottomSheet(...args: any): void;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* shows a modal BottomSheet
|
|
74
|
+
*
|
|
75
|
+
* @param {BottomSheetOptions} options
|
|
76
|
+
* @returns {View} view - the view shown in the BottomSheet
|
|
77
|
+
*/
|
|
78
|
+
public showBottomSheet(options: BottomSheetOptions): ViewBase;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Moves the shown sheet to a detent
|
|
82
|
+
* @param index index in the `detents` option
|
|
83
|
+
*/
|
|
84
|
+
public setBottomSheetDetentIndex(index: number, animated?: boolean): void;
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Index of the detent the sheet currently rests at
|
|
88
|
+
*/
|
|
89
|
+
public getBottomSheetDetentIndex(): number;
|
|
90
|
+
}
|
|
91
|
+
export function install(): void;
|
|
92
|
+
|
|
93
|
+
declare module '@nativescript/core/ui/core/view' {
|
|
94
|
+
interface View {
|
|
95
|
+
closeBottomSheet(...args: any): void;
|
|
96
|
+
showBottomSheet(options: BottomSheetOptions): ViewBase;
|
|
97
|
+
setBottomSheetDetentIndex(index: number, animated?: boolean): void;
|
|
98
|
+
getBottomSheetDetentIndex(): number;
|
|
99
|
+
}
|
|
100
|
+
}
|