@nativescript-community/ui-material-bottomsheet 6.0.0
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 +1569 -0
- package/LICENSE +201 -0
- package/README.md +192 -0
- package/angular/bottomsheet.module.d.ts +10 -0
- package/angular/bottomsheet.service.d.ts +28 -0
- package/angular/bundles/nativescript-community-ui-material-bottomsheet-angular.umd.js +179 -0
- package/angular/bundles/nativescript-community-ui-material-bottomsheet-angular.umd.js.map +1 -0
- package/angular/bundles/nativescript-community-ui-material-bottomsheet-angular.umd.min.js +2 -0
- package/angular/bundles/nativescript-community-ui-material-bottomsheet-angular.umd.min.js.map +1 -0
- package/angular/esm2015/bottomsheet.module.js +26 -0
- package/angular/esm2015/bottomsheet.service.js +109 -0
- package/angular/esm2015/index.js +3 -0
- package/angular/esm2015/nativescript-community-ui-material-bottomsheet-angular.js +2 -0
- package/angular/fesm2015/nativescript-community-ui-material-bottomsheet-angular.js +135 -0
- package/angular/fesm2015/nativescript-community-ui-material-bottomsheet-angular.js.map +1 -0
- package/angular/index.d.ts +2 -0
- package/angular/nativescript-community-ui-material-bottomsheet-angular.d.ts +2 -0
- package/angular/package.json +16 -0
- package/bottomsheet-common.d.ts +35 -0
- package/bottomsheet-common.js +94 -0
- package/bottomsheet-common.js.map +1 -0
- package/bottomsheet.android.d.ts +10 -0
- package/bottomsheet.android.js +143 -0
- package/bottomsheet.android.js.map +1 -0
- package/bottomsheet.d.ts +89 -0
- package/bottomsheet.ios.d.ts +17 -0
- package/bottomsheet.ios.js +360 -0
- package/bottomsheet.ios.js.map +1 -0
- package/package.json +51 -0
- package/platforms/android/include.gradle +8 -0
- package/platforms/android/java/com/nativescript/material/bottomsheet/BottomSheetDialog.java +38 -0
- package/platforms/android/java/com/nativescript/material/bottomsheet/BottomSheetDialogFragment.java +73 -0
- package/platforms/android/ui_material_bottomsheet.aar +0 -0
- package/platforms/ios/Podfile +1 -0
- package/pnpm-lock.yaml +90 -0
- package/vue/index.d.ts +16 -0
- package/vue/index.js +51 -0
- package/vue/index.js.map +1 -0
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../src/bottomsheet/angular/bottomsheet.service.ts","../../../../src/bottomsheet/angular/bottomsheet.module.ts"],"names":["context","closeCallback","this","BottomSheetService","prototype","show","type","options","showWithCloseCallback","observable","viewContainerRef","Error","sheetRef","result","Subject","parentView","getParentView","factoryResolver","getFactoryResolver","bottomSheetParams","getBottomSheetParams","detachedLoader","createDetachedLoader","loadComponent","then","componentView","showBottomSheet","Object","assign","view","element","nativeElement","AppHostView","ngAppRoot","_ngDialogRoot","componentContainer","injector","get","ComponentFactoryResolver","createChildInjector","containerRef","Injector","create","providers","provide","BottomSheetParams","useValue","parent","once","args","next","complete","closeBottomSheet","instance","detectChanges","destroy","detachedLoaderFactory","resolveComponentFactory","DetachedLoader","childInjector","createComponent","componentRef","_a","sent","detachedProxy","location","getChildrenCount","getChildAt","LayoutBase","removeChild","console","error","err_1","factory","ɵfac","providedIn","Injectable","NativeScriptMaterialBottomSheetModule","initialized","install","forRoot","ngModule","NgModule"],"mappings":"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","sourcesContent":["import { ComponentFactoryResolver, ComponentRef, Injectable, Injector, Type, ViewContainerRef } from '@angular/core';\nimport type { BottomSheetOptions as MaterialBottomSheetOptions } from '@nativescript-community/ui-material-bottomsheet';\nimport { AppHostView, DetachedLoader, once } from '@nativescript/angular';\nimport { LayoutBase, ProxyViewContainer, View } from '@nativescript/core';\nimport { Observable, Subject } from 'rxjs';\n\nexport type BaseShowBottomSheetOptions = Omit<MaterialBottomSheetOptions, 'closeCallback' | 'view'>;\n\nexport interface BottomSheetOptions extends BaseShowBottomSheetOptions {\n viewContainerRef?: ViewContainerRef;\n}\n\nexport class BottomSheetParams {\n public constructor(public readonly context: any, public readonly closeCallback: (...args) => void) {}\n}\n\ntype ViewWithDialogRoot = View & { _ngDialogRoot?: View };\n\ninterface SheetRef<TResult = unknown> {\n detachedLoader?: ComponentRef<DetachedLoader>;\n componentView?: View;\n result: Subject<TResult>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BottomSheetService {\n public show<TResult = any>(type: Type<any>, options: BottomSheetOptions): Observable<TResult> {\n return this.showWithCloseCallback(type, options).observable;\n }\n\n public showWithCloseCallback<TResult = any>(type: Type<any>, options: BottomSheetOptions): { observable: Observable<TResult>; closeCallback: () => void } {\n if (!options.viewContainerRef) {\n throw new Error('No viewContainerRef: Make sure you pass viewContainerRef in BottomSheetOptions.');\n }\n\n const sheetRef: SheetRef<TResult> = {\n result: new Subject()\n };\n\n const parentView = this.getParentView(options.viewContainerRef);\n const factoryResolver = this.getFactoryResolver(options.viewContainerRef);\n const bottomSheetParams = this.getBottomSheetParams(options.context, sheetRef);\n\n sheetRef.detachedLoader = this.createDetachedLoader(factoryResolver, bottomSheetParams, options.viewContainerRef);\n\n this.loadComponent(type, sheetRef).then((componentView) => {\n parentView.showBottomSheet({\n ...options,\n ...bottomSheetParams,\n view: componentView\n });\n });\n\n return {\n observable: sheetRef.result,\n closeCallback: bottomSheetParams.closeCallback\n };\n }\n\n private getParentView(viewContainerRef: ViewContainerRef): View {\n let parentView = viewContainerRef.element.nativeElement as View;\n\n if (parentView instanceof AppHostView && parentView.ngAppRoot) {\n parentView = parentView.ngAppRoot;\n }\n\n // _ngDialogRoot is the first child of the previously detached proxy.\n // It should have 'viewController' (iOS) or '_dialogFragment' (Android) available for\n // presenting future bottomSheets views.\n if ((parentView as ViewWithDialogRoot)._ngDialogRoot) {\n parentView = (parentView as ViewWithDialogRoot)._ngDialogRoot;\n }\n\n return parentView;\n }\n\n private getFactoryResolver(componentContainer: ViewContainerRef): ComponentFactoryResolver {\n // resolve from particular module (moduleRef)\n // or from same module as parentView (viewContainerRef)\n return componentContainer.injector.get(ComponentFactoryResolver);\n }\n\n private createChildInjector(bottomSheetParams: BottomSheetParams, containerRef: ViewContainerRef): Injector {\n return Injector.create({\n providers: [\n {\n provide: BottomSheetParams,\n useValue: bottomSheetParams\n }\n ],\n parent: containerRef.injector\n });\n }\n\n private getBottomSheetParams(context: any, sheetRef: SheetRef): BottomSheetParams {\n const closeCallback = once((args) => {\n const { result, componentView, detachedLoader } = sheetRef;\n\n result.next(args);\n result.complete();\n\n if (componentView) {\n componentView.closeBottomSheet();\n }\n\n if (detachedLoader) {\n detachedLoader.instance.detectChanges();\n detachedLoader.destroy();\n }\n });\n\n return new BottomSheetParams(context, closeCallback);\n }\n\n private createDetachedLoader(factoryResolver: ComponentFactoryResolver, bottomSheetParams: BottomSheetParams, viewContainerRef: ViewContainerRef): ComponentRef<DetachedLoader> {\n const detachedLoaderFactory = factoryResolver.resolveComponentFactory(DetachedLoader);\n const childInjector = this.createChildInjector(bottomSheetParams, viewContainerRef);\n\n return viewContainerRef.createComponent(detachedLoaderFactory, 0, childInjector);\n }\n\n private async loadComponent(type: Type<any>, sheetRef: SheetRef): Promise<View> {\n try {\n const componentRef = await sheetRef.detachedLoader.instance.loadComponent(type);\n const detachedProxy = componentRef.location.nativeElement as ProxyViewContainer;\n\n if (detachedProxy.getChildrenCount() > 1) {\n throw new Error('BottomSheet content has more than one root view.');\n }\n\n sheetRef.componentView = detachedProxy.getChildAt(0);\n\n if (sheetRef.componentView.parent instanceof LayoutBase) {\n (sheetRef.componentView.parent as ViewWithDialogRoot)._ngDialogRoot = sheetRef.componentView;\n sheetRef.componentView.parent.removeChild(sheetRef.componentView);\n }\n\n return sheetRef.componentView;\n } catch (err) {\n console.error(err);\n\n return null;\n }\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { BottomSheetService } from './bottomsheet.service';\nimport { install } from '@nativescript-community/ui-material-bottomsheet';\n\n@NgModule()\nexport class NativeScriptMaterialBottomSheetModule {\n // This flag help us to avoid problems when using the new development workflow\n private static initialized = false;\n\n static forRoot(): ModuleWithProviders<NativeScriptMaterialBottomSheetModule> {\n return {\n ngModule: NativeScriptMaterialBottomSheetModule,\n providers: [BottomSheetService],\n };\n }\n\n public constructor() {\n if (!NativeScriptMaterialBottomSheetModule.initialized) {\n install();\n NativeScriptMaterialBottomSheetModule.initialized = true;\n }\n }\n}\n"]}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
import { NgModule } from '@angular/core';
|
2
|
+
import { BottomSheetService } from './bottomsheet.service';
|
3
|
+
import { install } from '@nativescript-community/ui-material-bottomsheet';
|
4
|
+
import * as i0 from "@angular/core";
|
5
|
+
export class NativeScriptMaterialBottomSheetModule {
|
6
|
+
constructor() {
|
7
|
+
if (!NativeScriptMaterialBottomSheetModule.initialized) {
|
8
|
+
install();
|
9
|
+
NativeScriptMaterialBottomSheetModule.initialized = true;
|
10
|
+
}
|
11
|
+
}
|
12
|
+
static forRoot() {
|
13
|
+
return {
|
14
|
+
ngModule: NativeScriptMaterialBottomSheetModule,
|
15
|
+
providers: [BottomSheetService],
|
16
|
+
};
|
17
|
+
}
|
18
|
+
}
|
19
|
+
NativeScriptMaterialBottomSheetModule.initialized = false;
|
20
|
+
NativeScriptMaterialBottomSheetModule.ɵfac = function NativeScriptMaterialBottomSheetModule_Factory(t) { return new (t || NativeScriptMaterialBottomSheetModule)(); };
|
21
|
+
NativeScriptMaterialBottomSheetModule.ɵmod = i0.ɵɵdefineNgModule({ type: NativeScriptMaterialBottomSheetModule });
|
22
|
+
NativeScriptMaterialBottomSheetModule.ɵinj = i0.ɵɵdefineInjector({});
|
23
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NativeScriptMaterialBottomSheetModule, [{
|
24
|
+
type: NgModule
|
25
|
+
}], function () { return []; }, null); })();
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm90dG9tc2hlZXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JvdHRvbXNoZWV0L2FuZ3VsYXIvYm90dG9tc2hlZXQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7QUFHMUUsTUFBTSxPQUFPLHFDQUFxQztJQVc5QztRQUNJLElBQUksQ0FBQyxxQ0FBcUMsQ0FBQyxXQUFXLEVBQUU7WUFDcEQsT0FBTyxFQUFFLENBQUM7WUFDVixxQ0FBcUMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1NBQzVEO0lBQ0wsQ0FBQztJQVpELE1BQU0sQ0FBQyxPQUFPO1FBQ1YsT0FBTztZQUNILFFBQVEsRUFBRSxxQ0FBcUM7WUFDL0MsU0FBUyxFQUFFLENBQUMsa0JBQWtCLENBQUM7U0FDbEMsQ0FBQztJQUNOLENBQUM7O0FBUGMsaURBQVcsR0FBRyxLQUFLLENBQUM7MEhBRjFCLHFDQUFxQzt5RUFBckMscUNBQXFDOzt1RkFBckMscUNBQXFDO2NBRGpELFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCb3R0b21TaGVldFNlcnZpY2UgfSBmcm9tICcuL2JvdHRvbXNoZWV0LnNlcnZpY2UnO1xuaW1wb3J0IHsgaW5zdGFsbCB9IGZyb20gJ0BuYXRpdmVzY3JpcHQtY29tbXVuaXR5L3VpLW1hdGVyaWFsLWJvdHRvbXNoZWV0JztcblxuQE5nTW9kdWxlKClcbmV4cG9ydCBjbGFzcyBOYXRpdmVTY3JpcHRNYXRlcmlhbEJvdHRvbVNoZWV0TW9kdWxlIHtcbiAgICAvLyBUaGlzIGZsYWcgaGVscCB1cyB0byBhdm9pZCBwcm9ibGVtcyB3aGVuIHVzaW5nIHRoZSBuZXcgZGV2ZWxvcG1lbnQgd29ya2Zsb3dcbiAgICBwcml2YXRlIHN0YXRpYyBpbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gICAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxOYXRpdmVTY3JpcHRNYXRlcmlhbEJvdHRvbVNoZWV0TW9kdWxlPiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuZ01vZHVsZTogTmF0aXZlU2NyaXB0TWF0ZXJpYWxCb3R0b21TaGVldE1vZHVsZSxcbiAgICAgICAgICAgIHByb3ZpZGVyczogW0JvdHRvbVNoZWV0U2VydmljZV0sXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBpZiAoIU5hdGl2ZVNjcmlwdE1hdGVyaWFsQm90dG9tU2hlZXRNb2R1bGUuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIGluc3RhbGwoKTtcbiAgICAgICAgICAgIE5hdGl2ZVNjcmlwdE1hdGVyaWFsQm90dG9tU2hlZXRNb2R1bGUuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
@@ -0,0 +1,109 @@
|
|
1
|
+
import { ComponentFactoryResolver, Injectable, Injector } from '@angular/core';
|
2
|
+
import { AppHostView, DetachedLoader, once } from '@nativescript/angular';
|
3
|
+
import { LayoutBase } from '@nativescript/core';
|
4
|
+
import { Subject } from 'rxjs';
|
5
|
+
import * as i0 from "@angular/core";
|
6
|
+
export class BottomSheetParams {
|
7
|
+
constructor(context, closeCallback) {
|
8
|
+
this.context = context;
|
9
|
+
this.closeCallback = closeCallback;
|
10
|
+
}
|
11
|
+
}
|
12
|
+
export class BottomSheetService {
|
13
|
+
show(type, options) {
|
14
|
+
return this.showWithCloseCallback(type, options).observable;
|
15
|
+
}
|
16
|
+
showWithCloseCallback(type, options) {
|
17
|
+
if (!options.viewContainerRef) {
|
18
|
+
throw new Error('No viewContainerRef: Make sure you pass viewContainerRef in BottomSheetOptions.');
|
19
|
+
}
|
20
|
+
const sheetRef = {
|
21
|
+
result: new Subject()
|
22
|
+
};
|
23
|
+
const parentView = this.getParentView(options.viewContainerRef);
|
24
|
+
const factoryResolver = this.getFactoryResolver(options.viewContainerRef);
|
25
|
+
const bottomSheetParams = this.getBottomSheetParams(options.context, sheetRef);
|
26
|
+
sheetRef.detachedLoader = this.createDetachedLoader(factoryResolver, bottomSheetParams, options.viewContainerRef);
|
27
|
+
this.loadComponent(type, sheetRef).then((componentView) => {
|
28
|
+
parentView.showBottomSheet(Object.assign(Object.assign(Object.assign({}, options), bottomSheetParams), { view: componentView }));
|
29
|
+
});
|
30
|
+
return {
|
31
|
+
observable: sheetRef.result,
|
32
|
+
closeCallback: bottomSheetParams.closeCallback
|
33
|
+
};
|
34
|
+
}
|
35
|
+
getParentView(viewContainerRef) {
|
36
|
+
let parentView = viewContainerRef.element.nativeElement;
|
37
|
+
if (parentView instanceof AppHostView && parentView.ngAppRoot) {
|
38
|
+
parentView = parentView.ngAppRoot;
|
39
|
+
}
|
40
|
+
if (parentView._ngDialogRoot) {
|
41
|
+
parentView = parentView._ngDialogRoot;
|
42
|
+
}
|
43
|
+
return parentView;
|
44
|
+
}
|
45
|
+
getFactoryResolver(componentContainer) {
|
46
|
+
return componentContainer.injector.get(ComponentFactoryResolver);
|
47
|
+
}
|
48
|
+
createChildInjector(bottomSheetParams, containerRef) {
|
49
|
+
return Injector.create({
|
50
|
+
providers: [
|
51
|
+
{
|
52
|
+
provide: BottomSheetParams,
|
53
|
+
useValue: bottomSheetParams
|
54
|
+
}
|
55
|
+
],
|
56
|
+
parent: containerRef.injector
|
57
|
+
});
|
58
|
+
}
|
59
|
+
getBottomSheetParams(context, sheetRef) {
|
60
|
+
const closeCallback = once((args) => {
|
61
|
+
const { result, componentView, detachedLoader } = sheetRef;
|
62
|
+
result.next(args);
|
63
|
+
result.complete();
|
64
|
+
if (componentView) {
|
65
|
+
componentView.closeBottomSheet();
|
66
|
+
}
|
67
|
+
if (detachedLoader) {
|
68
|
+
detachedLoader.instance.detectChanges();
|
69
|
+
detachedLoader.destroy();
|
70
|
+
}
|
71
|
+
});
|
72
|
+
return new BottomSheetParams(context, closeCallback);
|
73
|
+
}
|
74
|
+
createDetachedLoader(factoryResolver, bottomSheetParams, viewContainerRef) {
|
75
|
+
const detachedLoaderFactory = factoryResolver.resolveComponentFactory(DetachedLoader);
|
76
|
+
const childInjector = this.createChildInjector(bottomSheetParams, viewContainerRef);
|
77
|
+
return viewContainerRef.createComponent(detachedLoaderFactory, 0, childInjector);
|
78
|
+
}
|
79
|
+
loadComponent(type, sheetRef) {
|
80
|
+
return __awaiter(this, void 0, void 0, function* () {
|
81
|
+
try {
|
82
|
+
const componentRef = yield sheetRef.detachedLoader.instance.loadComponent(type);
|
83
|
+
const detachedProxy = componentRef.location.nativeElement;
|
84
|
+
if (detachedProxy.getChildrenCount() > 1) {
|
85
|
+
throw new Error('BottomSheet content has more than one root view.');
|
86
|
+
}
|
87
|
+
sheetRef.componentView = detachedProxy.getChildAt(0);
|
88
|
+
if (sheetRef.componentView.parent instanceof LayoutBase) {
|
89
|
+
sheetRef.componentView.parent._ngDialogRoot = sheetRef.componentView;
|
90
|
+
sheetRef.componentView.parent.removeChild(sheetRef.componentView);
|
91
|
+
}
|
92
|
+
return sheetRef.componentView;
|
93
|
+
}
|
94
|
+
catch (err) {
|
95
|
+
console.error(err);
|
96
|
+
return null;
|
97
|
+
}
|
98
|
+
});
|
99
|
+
}
|
100
|
+
}
|
101
|
+
BottomSheetService.ɵfac = function BottomSheetService_Factory(t) { return new (t || BottomSheetService)(); };
|
102
|
+
BottomSheetService.ɵprov = i0.ɵɵdefineInjectable({ token: BottomSheetService, factory: BottomSheetService.ɵfac, providedIn: 'root' });
|
103
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BottomSheetService, [{
|
104
|
+
type: Injectable,
|
105
|
+
args: [{
|
106
|
+
providedIn: 'root'
|
107
|
+
}]
|
108
|
+
}], null, null); })();
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm90dG9tc2hlZXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ib3R0b21zaGVldC9hbmd1bGFyL2JvdHRvbXNoZWV0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFnQixVQUFVLEVBQUUsUUFBUSxFQUEwQixNQUFNLGVBQWUsQ0FBQztBQUVySCxPQUFPLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsVUFBVSxFQUE0QixNQUFNLG9CQUFvQixDQUFDO0FBQzFFLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBUTNDLE1BQU0sT0FBTyxpQkFBaUI7SUFDMUIsWUFBbUMsT0FBWSxFQUFrQixhQUFnQztRQUE5RCxZQUFPLEdBQVAsT0FBTyxDQUFLO1FBQWtCLGtCQUFhLEdBQWIsYUFBYSxDQUFtQjtJQUFHLENBQUM7Q0FDeEc7QUFhRCxNQUFNLE9BQU8sa0JBQWtCO0lBQ3BCLElBQUksQ0FBZ0IsSUFBZSxFQUFFLE9BQTJCO1FBQ25FLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUM7SUFDaEUsQ0FBQztJQUVNLHFCQUFxQixDQUFnQixJQUFlLEVBQUUsT0FBMkI7UUFDcEYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTtZQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLGlGQUFpRixDQUFDLENBQUM7U0FDdEc7UUFFRCxNQUFNLFFBQVEsR0FBc0I7WUFDaEMsTUFBTSxFQUFFLElBQUksT0FBTyxFQUFFO1NBQ3hCLENBQUM7UUFFRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sZUFBZSxHQUFHLElB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QUMsSUFBZSxFQUFFLFFBQWtCOztZQUMzRCxJQUFJO2dCQUNBLE1BQU0sWUFBWSxHQUFHLE1BQU0sUUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNoRixNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQW1DLENBQUM7Z0JBRWhGLElBQUksYUFBYSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxFQUFFO29CQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7aUJBQ3ZFO2dCQUVELFFBQVEsQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFckQsSUFBSSxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sWUFBWSxVQUFVLEVBQUU7b0JBQ3BELFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBNkIsQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQztvQkFDN0YsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztpQkFDckU7Z0JBRUQsT0FBTyxRQUFRLENBQUMsYUFBYSxDQUFDO2FBQ2pDO1lBQUMsT0FBTyxHQUFHLEVBQUU7Z0JBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFFbkIsT0FBTyxJQUFJLENBQUM7YUFDZjtRQUNMLENBQUM7S0FBQTs7b0ZBdEhRLGtCQUFrQjswREFBbEIsa0JBQWtCLFdBQWxCLGtCQUFrQixtQkFGZixNQUFNO3VGQUVULGtCQUFrQjtjQUg5QixVQUFVO2VBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIENvbXBvbmVudFJlZiwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIFR5cGUsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgQm90dG9tU2hlZXRPcHRpb25zIGFzIE1hdGVyaWFsQm90dG9tU2hlZXRPcHRpb25zIH0gZnJvbSAnQG5hdGl2ZXNjcmlwdC1jb21tdW5pdHkvdWktbWF0ZXJpYWwtYm90dG9tc2hlZXQnO1xuaW1wb3J0IHsgQXBwSG9zdFZpZXcsIERldGFjaGVkTG9hZGVyLCBvbmNlIH0gZnJvbSAnQG5hdGl2ZXNjcmlwdC9hbmd1bGFyJztcbmltcG9ydCB7IExheW91dEJhc2UsIFByb3h5Vmlld0NvbnRhaW5lciwgVmlldyB9IGZyb20gJ0BuYXRpdmVzY3JpcHQvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCB0eXBlIEJhc2VTaG93Qm90dG9tU2hlZXRPcHRpb25zID0gT21pdDxNYXRlcmlhbEJvdHRvbVNoZWV0T3B0aW9ucywgJ2Nsb3NlQ2FsbGJhY2snIHwgJ3ZpZXcnPjtcblxuZXhwb3J0IGludGVyZmFjZSBCb3R0b21TaGVldE9wdGlvbnMgZXh0ZW5kcyBCYXNlU2hvd0JvdHRvbVNoZWV0T3B0aW9ucyB7XG4gICAgdmlld0NvbnRhaW5lclJlZj86IFZpZXdDb250YWluZXJSZWY7XG59XG5cbmV4cG9ydCBjbGFzcyBCb3R0b21TaGVldFBhcmFtcyB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBjb250ZXh0OiBhbnksIHB1YmxpYyByZWFkb25seSBjbG9zZUNhbGxiYWNrOiAoLi4uYXJncykgPT4gdm9pZCkge31cbn1cblxudHlwZSBWaWV3V2l0aERpYWxvZ1Jvb3QgPSBWaWV3ICYgeyBfbmdEaWFsb2dSb290PzogVmlldyB9O1xuXG5pbnRlcmZhY2UgU2hlZXRSZWY8VFJlc3VsdCA9IHVua25vd24+IHtcbiAgICBkZXRhY2hlZExvYWRlcj86IENvbXBvbmVudFJlZjxEZXRhY2hlZExvYWRlcj47XG4gICAgY29tcG9uZW50Vmlldz86IFZpZXc7XG4gICAgcmVzdWx0OiBTdWJqZWN0PFRSZXN1bHQ+O1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEJvdHRvbVNoZWV0U2VydmljZSB7XG4gICAgcHVibGljIHNob3c8VFJlc3VsdCA9IGFueT4odHlwZTogVHlwZTxhbnk+LCBvcHRpb25zOiBCb3R0b21TaGVldE9wdGlvbnMpOiBPYnNlcnZhYmxlPFRSZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvd1dpdGhDbG9zZUNhbGxiYWNrKHR5cGUsIG9wdGlvbnMpLm9ic2VydmFibGU7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3dXaXRoQ2xvc2VDYWxsYmFjazxUUmVzdWx0ID0gYW55Pih0eXBlOiBUeXBlPGFueT4sIG9wdGlvbnM6IEJvdHRvbVNoZWV0T3B0aW9ucyk6IHsgb2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxUUmVzdWx0PjsgY2xvc2VDYWxsYmFjazogKCkgPT4gdm9pZCB9IHtcbiAgICAgICAgaWYgKCFvcHRpb25zLnZpZXdDb250YWluZXJSZWYpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gdmlld0NvbnRhaW5lclJlZjogTWFrZSBzdXJlIHlvdSBwYXNzIHZpZXdDb250YWluZXJSZWYgaW4gQm90dG9tU2hlZXRPcHRpb25zLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2hlZXRSZWY6IFNoZWV0UmVmPFRSZXN1bHQ+ID0ge1xuICAgICAgICAgICAgcmVzdWx0OiBuZXcgU3ViamVjdCgpXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgcGFyZW50VmlldyA9IHRoaXMuZ2V0UGFyZW50VmlldyhvcHRpb25zLnZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICBjb25zdCBmYWN0b3J5UmVzb2x2ZXIgPSB0aGlzLmdldEZhY3RvcnlSZXNvbHZlcihvcHRpb25zLnZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICBjb25zdCBib3R0b21TaGVldFBhcmFtcyA9IHRoaXMuZ2V0Qm90dG9tU2hlZXRQYXJhbXMob3B0aW9ucy5jb250ZXh0LCBzaGVldFJlZik7XG5cbiAgICAgICAgc2hlZXRSZWYuZGV0YWNoZWRMb2FkZXIgPSB0aGlzLmNyZWF0ZURldGFjaGVkTG9hZGVyKGZhY3RvcnlSZXNvbHZlciwgYm90dG9tU2hlZXRQYXJhbXMsIG9wdGlvbnMudmlld0NvbnRhaW5lclJlZik7XG5cbiAgICAgICAgdGhpcy5sb2FkQ29tcG9uZW50KHR5cGUsIHNoZWV0UmVmKS50aGVuKChjb21wb25lbnRWaWV3KSA9PiB7XG4gICAgICAgICAgICBwYXJlbnRWaWV3LnNob3dCb3R0b21TaGVldCh7XG4gICAgICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgICAgICAuLi5ib3R0b21TaGVldFBhcmFtcyxcbiAgICAgICAgICAgICAgICB2aWV3OiBjb21wb25lbnRWaWV3XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG9ic2VydmFibGU6IHNoZWV0UmVmLnJlc3VsdCxcbiAgICAgICAgICAgIGNsb3NlQ2FsbGJhY2s6IGJvdHRvbVNoZWV0UGFyYW1zLmNsb3NlQ2FsbGJhY2tcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFBhcmVudFZpZXcodmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZik6IFZpZXcge1xuICAgICAgICBsZXQgcGFyZW50VmlldyA9IHZpZXdDb250YWluZXJSZWYuZWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIFZpZXc7XG5cbiAgICAgICAgaWYgKHBhcmVudFZpZXcgaW5zdGFuY2VvZiBBcHBIb3N0VmlldyAmJiBwYXJlbnRWaWV3Lm5nQXBwUm9vdCkge1xuICAgICAgICAgICAgcGFyZW50VmlldyA9IHBhcmVudFZpZXcubmdBcHBSb290O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gX25nRGlhbG9nUm9vdCBpcyB0aGUgZmlyc3QgY2hpbGQgb2YgdGhlIHByZXZpb3VzbHkgZGV0YWNoZWQgcHJveHkuXG4gICAgICAgIC8vIEl0IHNob3VsZCBoYXZlICd2aWV3Q29udHJvbGxlcicgKGlPUykgb3IgJ19kaWFsb2dGcmFnbWVudCcgKEFuZHJvaWQpIGF2YWlsYWJsZSBmb3JcbiAgICAgICAgLy8gcHJlc2VudGluZyBmdXR1cmUgYm90dG9tU2hlZXRzIHZpZXdzLlxuICAgICAgICBpZiAoKHBhcmVudFZpZXcgYXMgVmlld1dpdGhEaWFsb2dSb290KS5fbmdEaWFsb2dSb290KSB7XG4gICAgICAgICAgICBwYXJlbnRWaWV3ID0gKHBhcmVudFZpZXcgYXMgVmlld1dpdGhEaWFsb2dSb290KS5fbmdEaWFsb2dSb290O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBhcmVudFZpZXc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGYWN0b3J5UmVzb2x2ZXIoY29tcG9uZW50Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmKTogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyIHtcbiAgICAgICAgLy8gcmVzb2x2ZSBmcm9tIHBhcnRpY3VsYXIgbW9kdWxlIChtb2R1bGVSZWYpXG4gICAgICAgIC8vIG9yIGZyb20gc2FtZSBtb2R1bGUgYXMgcGFyZW50VmlldyAodmlld0NvbnRhaW5lclJlZilcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudENvbnRhaW5lci5pbmplY3Rvci5nZXQoQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUNoaWxkSW5qZWN0b3IoYm90dG9tU2hlZXRQYXJhbXM6IEJvdHRvbVNoZWV0UGFyYW1zLCBjb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpOiBJbmplY3RvciB7XG4gICAgICAgIHJldHVybiBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBCb3R0b21TaGVldFBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgdXNlVmFsdWU6IGJvdHRvbVNoZWV0UGFyYW1zXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHBhcmVudDogY29udGFpbmVyUmVmLmluamVjdG9yXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Qm90dG9tU2hlZXRQYXJhbXMoY29udGV4dDogYW55LCBzaGVldFJlZjogU2hlZXRSZWYpOiBCb3R0b21TaGVldFBhcmFtcyB7XG4gICAgICAgIGNvbnN0IGNsb3NlQ2FsbGJhY2sgPSBvbmNlKChhcmdzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHJlc3VsdCwgY29tcG9uZW50VmlldywgZGV0YWNoZWRMb2FkZXIgfSA9IHNoZWV0UmVmO1xuXG4gICAgICAgICAgICByZXN1bHQubmV4dChhcmdzKTtcbiAgICAgICAgICAgIHJlc3VsdC5jb21wbGV0ZSgpO1xuXG4gICAgICAgICAgICBpZiAoY29tcG9uZW50Vmlldykge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudFZpZXcuY2xvc2VCb3R0b21TaGVldCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZGV0YWNoZWRMb2FkZXIpIHtcbiAgICAgICAgICAgICAgICBkZXRhY2hlZExvYWRlci5pbnN0YW5jZS5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgZGV0YWNoZWRMb2FkZXIuZGVzdHJveSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gbmV3IEJvdHRvbVNoZWV0UGFyYW1zKGNvbnRleHQsIGNsb3NlQ2FsbGJhY2spO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlRGV0YWNoZWRMb2FkZXIoZmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIGJvdHRvbVNoZWV0UGFyYW1zOiBCb3R0b21TaGVldFBhcmFtcywgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZik6IENvbXBvbmVudFJlZjxEZXRhY2hlZExvYWRlcj4ge1xuICAgICAgICBjb25zdCBkZXRhY2hlZExvYWRlckZhY3RvcnkgPSBmYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoRGV0YWNoZWRMb2FkZXIpO1xuICAgICAgICBjb25zdCBjaGlsZEluamVjdG9yID0gdGhpcy5jcmVhdGVDaGlsZEluamVjdG9yKGJvdHRvbVNoZWV0UGFyYW1zLCB2aWV3Q29udGFpbmVyUmVmKTtcblxuICAgICAgICByZXR1cm4gdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoZGV0YWNoZWRMb2FkZXJGYWN0b3J5LCAwLCBjaGlsZEluamVjdG9yKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGxvYWRDb21wb25lbnQodHlwZTogVHlwZTxhbnk+LCBzaGVldFJlZjogU2hlZXRSZWYpOiBQcm9taXNlPFZpZXc+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IGF3YWl0IHNoZWV0UmVmLmRldGFjaGVkTG9hZGVyLmluc3RhbmNlLmxvYWRDb21wb25lbnQodHlwZSk7XG4gICAgICAgICAgICBjb25zdCBkZXRhY2hlZFByb3h5ID0gY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQgYXMgUHJveHlWaWV3Q29udGFpbmVyO1xuXG4gICAgICAgICAgICBpZiAoZGV0YWNoZWRQcm94eS5nZXRDaGlsZHJlbkNvdW50KCkgPiAxKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdCb3R0b21TaGVldCBjb250ZW50IGhhcyBtb3JlIHRoYW4gb25lIHJvb3Qgdmlldy4nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2hlZXRSZWYuY29tcG9uZW50VmlldyA9IGRldGFjaGVkUHJveHkuZ2V0Q2hpbGRBdCgwKTtcblxuICAgICAgICAgICAgaWYgKHNoZWV0UmVmLmNvbXBvbmVudFZpZXcucGFyZW50IGluc3RhbmNlb2YgTGF5b3V0QmFzZSkge1xuICAgICAgICAgICAgICAgIChzaGVldFJlZi5jb21wb25lbnRWaWV3LnBhcmVudCBhcyBWaWV3V2l0aERpYWxvZ1Jvb3QpLl9uZ0RpYWxvZ1Jvb3QgPSBzaGVldFJlZi5jb21wb25lbnRWaWV3O1xuICAgICAgICAgICAgICAgIHNoZWV0UmVmLmNvbXBvbmVudFZpZXcucGFyZW50LnJlbW92ZUNoaWxkKHNoZWV0UmVmLmNvbXBvbmVudFZpZXcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gc2hlZXRSZWYuY29tcG9uZW50VmlldztcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG5cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
@@ -0,0 +1,3 @@
|
|
1
|
+
export * from './bottomsheet.module';
|
2
|
+
export * from './bottomsheet.service';
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYm90dG9tc2hlZXQvYW5ndWxhci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2JvdHRvbXNoZWV0Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2JvdHRvbXNoZWV0LnNlcnZpY2UnO1xuIl19
|
@@ -0,0 +1,2 @@
|
|
1
|
+
export * from './index';
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlc2NyaXB0LWNvbW11bml0eS11aS1tYXRlcmlhbC1ib3R0b21zaGVldC1hbmd1bGFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JvdHRvbXNoZWV0L2FuZ3VsYXIvbmF0aXZlc2NyaXB0LWNvbW11bml0eS11aS1tYXRlcmlhbC1ib3R0b21zaGVldC1hbmd1bGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
@@ -0,0 +1,135 @@
|
|
1
|
+
import * as i0 from '@angular/core';
|
2
|
+
import { ComponentFactoryResolver, Injector, Injectable, NgModule } from '@angular/core';
|
3
|
+
import { AppHostView, once, DetachedLoader } from '@nativescript/angular';
|
4
|
+
import { LayoutBase } from '@nativescript/core';
|
5
|
+
import { Subject } from 'rxjs';
|
6
|
+
import { install } from '@nativescript-community/ui-material-bottomsheet';
|
7
|
+
|
8
|
+
class BottomSheetParams {
|
9
|
+
constructor(context, closeCallback) {
|
10
|
+
this.context = context;
|
11
|
+
this.closeCallback = closeCallback;
|
12
|
+
}
|
13
|
+
}
|
14
|
+
class BottomSheetService {
|
15
|
+
show(type, options) {
|
16
|
+
return this.showWithCloseCallback(type, options).observable;
|
17
|
+
}
|
18
|
+
showWithCloseCallback(type, options) {
|
19
|
+
if (!options.viewContainerRef) {
|
20
|
+
throw new Error('No viewContainerRef: Make sure you pass viewContainerRef in BottomSheetOptions.');
|
21
|
+
}
|
22
|
+
const sheetRef = {
|
23
|
+
result: new Subject()
|
24
|
+
};
|
25
|
+
const parentView = this.getParentView(options.viewContainerRef);
|
26
|
+
const factoryResolver = this.getFactoryResolver(options.viewContainerRef);
|
27
|
+
const bottomSheetParams = this.getBottomSheetParams(options.context, sheetRef);
|
28
|
+
sheetRef.detachedLoader = this.createDetachedLoader(factoryResolver, bottomSheetParams, options.viewContainerRef);
|
29
|
+
this.loadComponent(type, sheetRef).then((componentView) => {
|
30
|
+
parentView.showBottomSheet(Object.assign(Object.assign(Object.assign({}, options), bottomSheetParams), { view: componentView }));
|
31
|
+
});
|
32
|
+
return {
|
33
|
+
observable: sheetRef.result,
|
34
|
+
closeCallback: bottomSheetParams.closeCallback
|
35
|
+
};
|
36
|
+
}
|
37
|
+
getParentView(viewContainerRef) {
|
38
|
+
let parentView = viewContainerRef.element.nativeElement;
|
39
|
+
if (parentView instanceof AppHostView && parentView.ngAppRoot) {
|
40
|
+
parentView = parentView.ngAppRoot;
|
41
|
+
}
|
42
|
+
if (parentView._ngDialogRoot) {
|
43
|
+
parentView = parentView._ngDialogRoot;
|
44
|
+
}
|
45
|
+
return parentView;
|
46
|
+
}
|
47
|
+
getFactoryResolver(componentContainer) {
|
48
|
+
return componentContainer.injector.get(ComponentFactoryResolver);
|
49
|
+
}
|
50
|
+
createChildInjector(bottomSheetParams, containerRef) {
|
51
|
+
return Injector.create({
|
52
|
+
providers: [
|
53
|
+
{
|
54
|
+
provide: BottomSheetParams,
|
55
|
+
useValue: bottomSheetParams
|
56
|
+
}
|
57
|
+
],
|
58
|
+
parent: containerRef.injector
|
59
|
+
});
|
60
|
+
}
|
61
|
+
getBottomSheetParams(context, sheetRef) {
|
62
|
+
const closeCallback = once((args) => {
|
63
|
+
const { result, componentView, detachedLoader } = sheetRef;
|
64
|
+
result.next(args);
|
65
|
+
result.complete();
|
66
|
+
if (componentView) {
|
67
|
+
componentView.closeBottomSheet();
|
68
|
+
}
|
69
|
+
if (detachedLoader) {
|
70
|
+
detachedLoader.instance.detectChanges();
|
71
|
+
detachedLoader.destroy();
|
72
|
+
}
|
73
|
+
});
|
74
|
+
return new BottomSheetParams(context, closeCallback);
|
75
|
+
}
|
76
|
+
createDetachedLoader(factoryResolver, bottomSheetParams, viewContainerRef) {
|
77
|
+
const detachedLoaderFactory = factoryResolver.resolveComponentFactory(DetachedLoader);
|
78
|
+
const childInjector = this.createChildInjector(bottomSheetParams, viewContainerRef);
|
79
|
+
return viewContainerRef.createComponent(detachedLoaderFactory, 0, childInjector);
|
80
|
+
}
|
81
|
+
loadComponent(type, sheetRef) {
|
82
|
+
return __awaiter(this, void 0, void 0, function* () {
|
83
|
+
try {
|
84
|
+
const componentRef = yield sheetRef.detachedLoader.instance.loadComponent(type);
|
85
|
+
const detachedProxy = componentRef.location.nativeElement;
|
86
|
+
if (detachedProxy.getChildrenCount() > 1) {
|
87
|
+
throw new Error('BottomSheet content has more than one root view.');
|
88
|
+
}
|
89
|
+
sheetRef.componentView = detachedProxy.getChildAt(0);
|
90
|
+
if (sheetRef.componentView.parent instanceof LayoutBase) {
|
91
|
+
sheetRef.componentView.parent._ngDialogRoot = sheetRef.componentView;
|
92
|
+
sheetRef.componentView.parent.removeChild(sheetRef.componentView);
|
93
|
+
}
|
94
|
+
return sheetRef.componentView;
|
95
|
+
}
|
96
|
+
catch (err) {
|
97
|
+
console.error(err);
|
98
|
+
return null;
|
99
|
+
}
|
100
|
+
});
|
101
|
+
}
|
102
|
+
}
|
103
|
+
BottomSheetService.ɵfac = function BottomSheetService_Factory(t) { return new (t || BottomSheetService)(); };
|
104
|
+
BottomSheetService.ɵprov = i0.ɵɵdefineInjectable({ token: BottomSheetService, factory: BottomSheetService.ɵfac, providedIn: 'root' });
|
105
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BottomSheetService, [{
|
106
|
+
type: Injectable,
|
107
|
+
args: [{
|
108
|
+
providedIn: 'root'
|
109
|
+
}]
|
110
|
+
}], null, null); })();
|
111
|
+
|
112
|
+
class NativeScriptMaterialBottomSheetModule {
|
113
|
+
constructor() {
|
114
|
+
if (!NativeScriptMaterialBottomSheetModule.initialized) {
|
115
|
+
install();
|
116
|
+
NativeScriptMaterialBottomSheetModule.initialized = true;
|
117
|
+
}
|
118
|
+
}
|
119
|
+
static forRoot() {
|
120
|
+
return {
|
121
|
+
ngModule: NativeScriptMaterialBottomSheetModule,
|
122
|
+
providers: [BottomSheetService],
|
123
|
+
};
|
124
|
+
}
|
125
|
+
}
|
126
|
+
NativeScriptMaterialBottomSheetModule.initialized = false;
|
127
|
+
NativeScriptMaterialBottomSheetModule.ɵfac = function NativeScriptMaterialBottomSheetModule_Factory(t) { return new (t || NativeScriptMaterialBottomSheetModule)(); };
|
128
|
+
NativeScriptMaterialBottomSheetModule.ɵmod = i0.ɵɵdefineNgModule({ type: NativeScriptMaterialBottomSheetModule });
|
129
|
+
NativeScriptMaterialBottomSheetModule.ɵinj = i0.ɵɵdefineInjector({});
|
130
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NativeScriptMaterialBottomSheetModule, [{
|
131
|
+
type: NgModule
|
132
|
+
}], function () { return []; }, null); })();
|
133
|
+
|
134
|
+
export { BottomSheetParams, BottomSheetService, NativeScriptMaterialBottomSheetModule };
|
135
|
+
//# sourceMappingURL=nativescript-community-ui-material-bottomsheet-angular.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"nativescript-community-ui-material-bottomsheet-angular.js","sources":["../../../../src/bottomsheet/angular/bottomsheet.service.ts","../../../../src/bottomsheet/angular/bottomsheet.module.ts"],"sourcesContent":["import { ComponentFactoryResolver, ComponentRef, Injectable, Injector, Type, ViewContainerRef } from '@angular/core';\nimport type { BottomSheetOptions as MaterialBottomSheetOptions } from '@nativescript-community/ui-material-bottomsheet';\nimport { AppHostView, DetachedLoader, once } from '@nativescript/angular';\nimport { LayoutBase, ProxyViewContainer, View } from '@nativescript/core';\nimport { Observable, Subject } from 'rxjs';\n\nexport type BaseShowBottomSheetOptions = Omit<MaterialBottomSheetOptions, 'closeCallback' | 'view'>;\n\nexport interface BottomSheetOptions extends BaseShowBottomSheetOptions {\n viewContainerRef?: ViewContainerRef;\n}\n\nexport class BottomSheetParams {\n public constructor(public readonly context: any, public readonly closeCallback: (...args) => void) {}\n}\n\ntype ViewWithDialogRoot = View & { _ngDialogRoot?: View };\n\ninterface SheetRef<TResult = unknown> {\n detachedLoader?: ComponentRef<DetachedLoader>;\n componentView?: View;\n result: Subject<TResult>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BottomSheetService {\n public show<TResult = any>(type: Type<any>, options: BottomSheetOptions): Observable<TResult> {\n return this.showWithCloseCallback(type, options).observable;\n }\n\n public showWithCloseCallback<TResult = any>(type: Type<any>, options: BottomSheetOptions): { observable: Observable<TResult>; closeCallback: () => void } {\n if (!options.viewContainerRef) {\n throw new Error('No viewContainerRef: Make sure you pass viewContainerRef in BottomSheetOptions.');\n }\n\n const sheetRef: SheetRef<TResult> = {\n result: new Subject()\n };\n\n const parentView = this.getParentView(options.viewContainerRef);\n const factoryResolver = this.getFactoryResolver(options.viewContainerRef);\n const bottomSheetParams = this.getBottomSheetParams(options.context, sheetRef);\n\n sheetRef.detachedLoader = this.createDetachedLoader(factoryResolver, bottomSheetParams, options.viewContainerRef);\n\n this.loadComponent(type, sheetRef).then((componentView) => {\n parentView.showBottomSheet({\n ...options,\n ...bottomSheetParams,\n view: componentView\n });\n });\n\n return {\n observable: sheetRef.result,\n closeCallback: bottomSheetParams.closeCallback\n };\n }\n\n private getParentView(viewContainerRef: ViewContainerRef): View {\n let parentView = viewContainerRef.element.nativeElement as View;\n\n if (parentView instanceof AppHostView && parentView.ngAppRoot) {\n parentView = parentView.ngAppRoot;\n }\n\n // _ngDialogRoot is the first child of the previously detached proxy.\n // It should have 'viewController' (iOS) or '_dialogFragment' (Android) available for\n // presenting future bottomSheets views.\n if ((parentView as ViewWithDialogRoot)._ngDialogRoot) {\n parentView = (parentView as ViewWithDialogRoot)._ngDialogRoot;\n }\n\n return parentView;\n }\n\n private getFactoryResolver(componentContainer: ViewContainerRef): ComponentFactoryResolver {\n // resolve from particular module (moduleRef)\n // or from same module as parentView (viewContainerRef)\n return componentContainer.injector.get(ComponentFactoryResolver);\n }\n\n private createChildInjector(bottomSheetParams: BottomSheetParams, containerRef: ViewContainerRef): Injector {\n return Injector.create({\n providers: [\n {\n provide: BottomSheetParams,\n useValue: bottomSheetParams\n }\n ],\n parent: containerRef.injector\n });\n }\n\n private getBottomSheetParams(context: any, sheetRef: SheetRef): BottomSheetParams {\n const closeCallback = once((args) => {\n const { result, componentView, detachedLoader } = sheetRef;\n\n result.next(args);\n result.complete();\n\n if (componentView) {\n componentView.closeBottomSheet();\n }\n\n if (detachedLoader) {\n detachedLoader.instance.detectChanges();\n detachedLoader.destroy();\n }\n });\n\n return new BottomSheetParams(context, closeCallback);\n }\n\n private createDetachedLoader(factoryResolver: ComponentFactoryResolver, bottomSheetParams: BottomSheetParams, viewContainerRef: ViewContainerRef): ComponentRef<DetachedLoader> {\n const detachedLoaderFactory = factoryResolver.resolveComponentFactory(DetachedLoader);\n const childInjector = this.createChildInjector(bottomSheetParams, viewContainerRef);\n\n return viewContainerRef.createComponent(detachedLoaderFactory, 0, childInjector);\n }\n\n private async loadComponent(type: Type<any>, sheetRef: SheetRef): Promise<View> {\n try {\n const componentRef = await sheetRef.detachedLoader.instance.loadComponent(type);\n const detachedProxy = componentRef.location.nativeElement as ProxyViewContainer;\n\n if (detachedProxy.getChildrenCount() > 1) {\n throw new Error('BottomSheet content has more than one root view.');\n }\n\n sheetRef.componentView = detachedProxy.getChildAt(0);\n\n if (sheetRef.componentView.parent instanceof LayoutBase) {\n (sheetRef.componentView.parent as ViewWithDialogRoot)._ngDialogRoot = sheetRef.componentView;\n sheetRef.componentView.parent.removeChild(sheetRef.componentView);\n }\n\n return sheetRef.componentView;\n } catch (err) {\n console.error(err);\n\n return null;\n }\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { BottomSheetService } from './bottomsheet.service';\nimport { install } from '@nativescript-community/ui-material-bottomsheet';\n\n@NgModule()\nexport class NativeScriptMaterialBottomSheetModule {\n // This flag help us to avoid problems when using the new development workflow\n private static initialized = false;\n\n static forRoot(): ModuleWithProviders<NativeScriptMaterialBottomSheetModule> {\n return {\n ngModule: NativeScriptMaterialBottomSheetModule,\n providers: [BottomSheetService],\n };\n }\n\n public constructor() {\n if (!NativeScriptMaterialBottomSheetModule.initialized) {\n install();\n NativeScriptMaterialBottomSheetModule.initialized = true;\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
{
|
2
|
+
"name": "@nativescript-community/ui-material-bottomsheet-angular",
|
3
|
+
"main": "bundles/nativescript-community-ui-material-bottomsheet-angular.umd.js",
|
4
|
+
"module": "fesm2015/nativescript-community-ui-material-bottomsheet-angular.js",
|
5
|
+
"es2015": "fesm2015/nativescript-community-ui-material-bottomsheet-angular.js",
|
6
|
+
"esm2015": "esm2015/nativescript-community-ui-material-bottomsheet-angular.js",
|
7
|
+
"fesm2015": "fesm2015/nativescript-community-ui-material-bottomsheet-angular.js",
|
8
|
+
"typings": "nativescript-community-ui-material-bottomsheet-angular.d.ts",
|
9
|
+
"sideEffects": false,
|
10
|
+
"dependencies": {
|
11
|
+
"tslib": "^2.0.0"
|
12
|
+
},
|
13
|
+
"scripts": {
|
14
|
+
"prepublishOnly": "node --eval \"console.error('ERROR: Trying to publish a package that has been compiled by Ivy. This is not allowed.\\nPlease delete and rebuild the package, without compiling with Ivy, before attempting to publish.\\n')\" && exit 1"
|
15
|
+
}
|
16
|
+
}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import { EventData, View, ViewBase } from '@nativescript/core';
|
2
|
+
export interface ShownBottomSheetData extends EventData {
|
3
|
+
context?: any;
|
4
|
+
closeCallback?: Function;
|
5
|
+
}
|
6
|
+
export declare const shownInBottomSheetEvent = "shownInBottomSheet";
|
7
|
+
export declare const showingInBottomSheetEvent = "showingInBottomSheet";
|
8
|
+
export interface BottomSheetOptions {
|
9
|
+
view: string | ViewBase;
|
10
|
+
context?: any;
|
11
|
+
animated?: boolean;
|
12
|
+
dismissOnBackgroundTap?: boolean;
|
13
|
+
dismissOnDraggingDownSheet?: boolean;
|
14
|
+
closeCallback?: Function;
|
15
|
+
trackingScrollView?: string;
|
16
|
+
transparent?: boolean;
|
17
|
+
ignoreTopSafeArea?: boolean;
|
18
|
+
ignoreBottomSafeArea?: boolean;
|
19
|
+
disableDimBackground?: boolean;
|
20
|
+
skipCollapsedState?: boolean;
|
21
|
+
}
|
22
|
+
export declare abstract class ViewWithBottomSheetBase extends View {
|
23
|
+
protected _closeBottomSheetCallback: Function;
|
24
|
+
_onDismissBottomSheetCallback: Function;
|
25
|
+
_bottomSheetFragment: any;
|
26
|
+
protected abstract _hideNativeBottomSheet(parent: any, whenClosedCallback: any): any;
|
27
|
+
protected _bottomSheetContext: any;
|
28
|
+
_raiseShownBottomSheetEvent(): void;
|
29
|
+
_bottomSheetClosed(): void;
|
30
|
+
protected abstract _showNativeBottomSheet(parent: View, options: BottomSheetOptions): any;
|
31
|
+
protected _commonShowNativeBottomSheet(parent: View, options: BottomSheetOptions): void;
|
32
|
+
protected _raiseShowingBottomSheetEvent(): void;
|
33
|
+
closeBottomSheet(...args: any[]): void;
|
34
|
+
showBottomSheet(options: BottomSheetOptions): ViewBase;
|
35
|
+
}
|
@@ -0,0 +1,94 @@
|
|
1
|
+
import { Builder, CSSUtils, View } from '@nativescript/core';
|
2
|
+
export const shownInBottomSheetEvent = 'shownInBottomSheet';
|
3
|
+
export const showingInBottomSheetEvent = 'showingInBottomSheet';
|
4
|
+
export class ViewWithBottomSheetBase extends View {
|
5
|
+
_raiseShownBottomSheetEvent() {
|
6
|
+
const args = {
|
7
|
+
eventName: shownInBottomSheetEvent,
|
8
|
+
object: this,
|
9
|
+
context: this._bottomSheetContext,
|
10
|
+
closeCallback: this._closeBottomSheetCallback
|
11
|
+
};
|
12
|
+
this.notify(args);
|
13
|
+
}
|
14
|
+
_bottomSheetClosed() {
|
15
|
+
const _rootModalViews = this._getRootModalViews();
|
16
|
+
const modalIndex = _rootModalViews.indexOf(this);
|
17
|
+
_rootModalViews.splice(modalIndex);
|
18
|
+
this._tearDownUI();
|
19
|
+
}
|
20
|
+
_commonShowNativeBottomSheet(parent, options) {
|
21
|
+
this._getRootModalViews().push(this);
|
22
|
+
this.cssClasses.add(CSSUtils.MODAL_ROOT_VIEW_CSS_CLASS);
|
23
|
+
const modalRootViewCssClasses = CSSUtils.getSystemCssClasses();
|
24
|
+
modalRootViewCssClasses.forEach((c) => this.cssClasses.add(c));
|
25
|
+
options.context = options.context || {};
|
26
|
+
this._bottomSheetContext = options.context;
|
27
|
+
this._onDismissBottomSheetCallback = (...originalArgs) => {
|
28
|
+
if (!this._onDismissBottomSheetCallback) {
|
29
|
+
return;
|
30
|
+
}
|
31
|
+
this._onDismissBottomSheetCallback = null;
|
32
|
+
this._closeBottomSheetCallback = null;
|
33
|
+
this._bottomSheetClosed();
|
34
|
+
if (this._bottomSheetContext.closeCallback) {
|
35
|
+
if (typeof options.closeCallback === 'function') {
|
36
|
+
options.closeCallback.apply(undefined, originalArgs);
|
37
|
+
}
|
38
|
+
}
|
39
|
+
this._bottomSheetContext = null;
|
40
|
+
};
|
41
|
+
this._closeBottomSheetCallback = (...originalArgs) => {
|
42
|
+
if (!this._closeBottomSheetCallback) {
|
43
|
+
return;
|
44
|
+
}
|
45
|
+
this._closeBottomSheetCallback = null;
|
46
|
+
if (this._bottomSheetContext) {
|
47
|
+
this._bottomSheetContext.closeCallback = null;
|
48
|
+
}
|
49
|
+
const whenClosedCallback = () => {
|
50
|
+
if (typeof options.closeCallback === 'function') {
|
51
|
+
options.closeCallback.apply(undefined, originalArgs);
|
52
|
+
}
|
53
|
+
};
|
54
|
+
this._hideNativeBottomSheet(parent, whenClosedCallback);
|
55
|
+
};
|
56
|
+
this._bottomSheetContext.closeCallback = this._closeBottomSheetCallback;
|
57
|
+
}
|
58
|
+
_raiseShowingBottomSheetEvent() {
|
59
|
+
const args = {
|
60
|
+
eventName: showingInBottomSheetEvent,
|
61
|
+
object: this,
|
62
|
+
context: this._bottomSheetContext,
|
63
|
+
closeCallback: this._closeBottomSheetCallback
|
64
|
+
};
|
65
|
+
this.notify(args);
|
66
|
+
}
|
67
|
+
closeBottomSheet(...args) {
|
68
|
+
const closeCallback = this._closeBottomSheetCallback;
|
69
|
+
if (closeCallback) {
|
70
|
+
closeCallback.apply(undefined, arguments);
|
71
|
+
}
|
72
|
+
else {
|
73
|
+
const parent = this.parent;
|
74
|
+
if (parent) {
|
75
|
+
parent.closeBottomSheet(...args);
|
76
|
+
}
|
77
|
+
}
|
78
|
+
}
|
79
|
+
showBottomSheet(options) {
|
80
|
+
if (arguments.length === 0) {
|
81
|
+
throw new Error('showModal without parameters is deprecated. Please call showModal on a view instance instead.');
|
82
|
+
}
|
83
|
+
else {
|
84
|
+
const view = options.view instanceof View
|
85
|
+
? options.view
|
86
|
+
: Builder.createViewFromEntry({
|
87
|
+
moduleName: options.view
|
88
|
+
});
|
89
|
+
view._showNativeBottomSheet(this, options);
|
90
|
+
return view;
|
91
|
+
}
|
92
|
+
}
|
93
|
+
}
|
94
|
+
//# sourceMappingURL=bottomsheet-common.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"bottomsheet-common.js","sourceRoot":"../src/","sources":["bottomsheet-common.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { View } from '@nativescript/core';
|
2
|
+
import { BottomSheetOptions, ViewWithBottomSheetBase } from './bottomsheet-common';
|
3
|
+
export { ViewWithBottomSheetBase } from './bottomsheet-common';
|
4
|
+
export declare class ViewWithBottomSheet extends ViewWithBottomSheetBase {
|
5
|
+
_bottomSheetFragment: com.nativescript.material.bottomsheet.BottomSheetDialogFragment;
|
6
|
+
protected _hideNativeBottomSheet(parent: View, whenClosedCallback: () => void): void;
|
7
|
+
protected _showNativeBottomSheet(parent: View, options: BottomSheetOptions): void;
|
8
|
+
}
|
9
|
+
export declare function overrideBottomSheet(): void;
|
10
|
+
export declare function install(): void;
|