ng-zorro-antd-mobile
Version:
An enterprise-class mobile UI components based on Ant Design and Angular
188 lines • 15.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable } from '@angular/core';
import { ActionSheetComponent } from './action-sheet.component';
import { ActionSheetOptions, ShareActionSheetWithOptions } from './action-sheet-options.provider';
import { PopupService } from '../core/services/popup.service';
import * as i0 from "@angular/core";
import * as i1 from "./public-api";
import * as i2 from "@angular/cdk/overlay";
/** @type {?} */
const NORMAL = 'NORMAL';
/** @type {?} */
const SHARE = 'SHARE';
/**
* @return {?}
*/
function noop() { }
export class ActionSheetService extends PopupService {
constructor() {
super(...arguments);
this.compRef = null;
this._actionSheetCompFactory = null;
this.appRef = null;
this.comRef = null;
this.instance = null;
}
/**
* @param {?} config
* @param {?=} options
* @return {?}
*/
_initConfig(config, options = {}) {
/** @type {?} */
const props = new ActionSheetOptions();
/** @type {?} */
const optionalParams = [
'prefixCls',
'maskClosable',
'cancelButtonText',
'cancelButtonIndex',
'destructiveButtonIndex',
'title',
'message',
'className',
'transitionName',
'maskTransitionName',
'options',
'locale',
'close'
];
/** @type {?} */
const self = this;
config = Object.assign(options, config, {
close: (/**
* @return {?}
*/
() => {
if (config.maskClosable) {
self.closeWithAnimation(config.transitionName, config.maskTransitionName);
}
})
});
optionalParams.forEach((/**
* @param {?} key
* @return {?}
*/
key => {
if (config[key] !== undefined) {
props[key] = config[key];
}
}));
return props;
}
/**
* @param {?} props
* @return {?}
*/
_open(props) {
this.comRef = this.showPopup(ActionSheetComponent);
this.comRef.instance.option = props;
return this.comRef && this.comRef.instance;
}
/**
* @param {?} flag
* @param {?} config
* @param {?} callback
* @return {?}
*/
createActionSheet(flag, config, callback) {
/** @type {?} */
const options = flag === NORMAL ? new ActionSheetOptions() : new ShareActionSheetWithOptions();
/** @type {?} */
const transitionName = config.transitionName ? config.transitionName : options.transitionName;
options.transitionName = `${transitionName}-enter ${transitionName}-enter-active`;
/** @type {?} */
const maskTransitionName = config.maskTransitionName ? config.maskTransitionName : options.maskTransitionName;
options.maskTransitionName = `${maskTransitionName}-enter ${maskTransitionName}-enter-active`;
/** @type {?} */
const props = this._initConfig(config, options);
Object.assign(props, { onPress: cb }, { flag: flag }, { maskClose: props.maskClosable ? cb : (/**
* @return {?}
*/
() => { }) });
/** @type {?} */
const self = this;
/**
* @param {?} index
* @param {?=} rowIndex
* @param {?=} event
* @return {?}
*/
function cb(index, rowIndex = 0, event) {
event.stopPropagation();
/** @type {?} */
const res = callback(index, rowIndex);
if (res && res.then) {
res.then((/**
* @return {?}
*/
() => {
self.closeWithAnimation(transitionName, maskTransitionName);
}));
}
else {
self.closeWithAnimation(transitionName, maskTransitionName);
}
}
return this._open(props);
}
/**
* @param {?} transitionName
* @param {?} maskTransitionName
* @return {?}
*/
closeWithAnimation(transitionName, maskTransitionName) {
this.comRef.instance.option.transitionName = `${transitionName}-leave ${transitionName}-leave-active`;
this.comRef.instance.option.maskTransitionName = `${maskTransitionName}-leave ${maskTransitionName}-leave-active`;
setTimeout((/**
* @return {?}
*/
() => {
this.close();
}), 200);
}
/**
* @param {?} config
* @param {?=} callback
* @return {?}
*/
showActionSheetWithOptions(config, callback = noop) {
return this.createActionSheet(NORMAL, config, callback);
}
/**
* @param {?} config
* @param {?=} callback
* @return {?}
*/
showShareActionSheetWithOptions(config, callback = noop) {
return this.createActionSheet(SHARE, config, callback);
}
/**
* @return {?}
*/
close() {
this.hidePopup();
}
}
ActionSheetService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */ ActionSheetService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function ActionSheetService_Factory() { return new i1.ActionSheet(i0.ɵɵinject(i2.Overlay)); }, token: i1.ActionSheet, providedIn: "root" });
if (false) {
/** @type {?} */
ActionSheetService.prototype.compRef;
/** @type {?} */
ActionSheetService.prototype._actionSheetCompFactory;
/** @type {?} */
ActionSheetService.prototype.appRef;
/** @type {?} */
ActionSheetService.prototype.comRef;
/** @type {?} */
ActionSheetService.prototype.instance;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXNoZWV0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy16b3Jyby1hbnRkLW1vYmlsZS8iLCJzb3VyY2VzIjpbImFjdGlvbi1zaGVldC9hY3Rpb24tc2hlZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBa0QsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUVMLGtCQUFrQixFQUVsQiwyQkFBMkIsRUFDNUIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7O01BRXhELE1BQU0sR0FBRyxRQUFROztNQUNqQixLQUFLLEdBQUcsT0FBTzs7OztBQUNyQixTQUFTLElBQUksS0FBSSxDQUFDO0FBSWxCLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxZQUFZO0lBSHBEOztRQUlFLFlBQU8sR0FBc0IsSUFBSSxDQUFDO1FBQ2xDLDRCQUF1QixHQUEyQyxJQUFJLENBQUM7UUFDdkUsV0FBTSxHQUFtQixJQUFJLENBQUM7UUFDOUIsV0FBTSxHQUF1QyxJQUFJLENBQUM7UUFFbEQsYUFBUSxHQUFHLElBQUksQ0FBQztLQXVGakI7Ozs7OztJQXJGQyxXQUFXLENBQUMsTUFBMEIsRUFBRSxVQUFrQixFQUFFOztjQUNwRCxLQUFLLEdBQXVCLElBQUksa0JBQWtCLEVBQUU7O2NBQ3BELGNBQWMsR0FBYTtZQUMvQixXQUFXO1lBQ1gsY0FBYztZQUNkLGtCQUFrQjtZQUNsQixtQkFBbUI7WUFDbkIsd0JBQXdCO1lBQ3hCLE9BQU87WUFDUCxTQUFTO1lBQ1QsV0FBVztZQUNYLGdCQUFnQjtZQUNoQixvQkFBb0I7WUFDcEIsU0FBUztZQUNULFFBQVE7WUFDUixPQUFPO1NBQ1I7O2NBQ0ssSUFBSSxHQUFHLElBQUk7UUFDakIsTUFBTSxHQUFHLE1BQU0s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Qzs7Ozs7O0lBRUQsa0JBQWtCLENBQUMsY0FBYyxFQUFFLGtCQUFrQjtRQUNuRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsY0FBYyxHQUFHLEdBQUcsY0FBYyxVQUFVLGNBQWMsZUFBZSxDQUFDO1FBQ3RHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLGtCQUFrQixVQUFVLGtCQUFrQixlQUFlLENBQUM7UUFDbEgsVUFBVTs7O1FBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2YsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQzs7Ozs7O0lBRUQsMEJBQTBCLENBQUMsTUFBOEIsRUFBRSxXQUEyQixJQUFJO1FBQ3hGLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDMUQsQ0FBQzs7Ozs7O0lBRUQsK0JBQStCLENBQUMsTUFBbUMsRUFBRSxXQUEyQixJQUFJO1FBQ2xHLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDekQsQ0FBQzs7OztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQzs7O1lBL0ZGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7Ozs7SUFFQyxxQ0FBa0M7O0lBQ2xDLHFEQUF1RTs7SUFDdkUsb0NBQThCOztJQUM5QixvQ0FBa0Q7O0lBRWxELHNDQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIENvbXBvbmVudFJlZiwgQ29tcG9uZW50RmFjdG9yeSwgQXBwbGljYXRpb25SZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvblNoZWV0Q29tcG9uZW50IH0gZnJvbSAnLi9hY3Rpb24tc2hlZXQuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIEFjdGlvbkNhbGxCYWNrLFxuICBBY3Rpb25TaGVldE9wdGlvbnMsXG4gIEFjdGlvblNoZWV0V2l0aE9wdGlvbnMsXG4gIFNoYXJlQWN0aW9uU2hlZXRXaXRoT3B0aW9uc1xufSBmcm9tICcuL2FjdGlvbi1zaGVldC1vcHRpb25zLnByb3ZpZGVyJztcbmltcG9ydCB7IFBvcHVwU2VydmljZSB9IGZyb20gJy4uL2NvcmUvc2VydmljZXMvcG9wdXAuc2VydmljZSc7XG5cbmNvbnN0IE5PUk1BTCA9ICdOT1JNQUwnO1xuY29uc3QgU0hBUkUgPSAnU0hBUkUnO1xuZnVuY3Rpb24gbm9vcCgpIHt9XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBY3Rpb25TaGVldFNlcnZpY2UgZXh0ZW5kcyBQb3B1cFNlcnZpY2Uge1xuICBjb21wUmVmOiBDb21wb25lbnRSZWY8YW55PiA9IG51bGw7XG4gIF9hY3Rpb25TaGVldENvbXBGYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5PEFjdGlvblNoZWV0Q29tcG9uZW50PiA9IG51bGw7XG4gIGFwcFJlZjogQXBwbGljYXRpb25SZWYgPSBudWxsO1xuICBjb21SZWY6IENvbXBvbmVudFJlZjxBY3Rpb25TaGVldENvbXBvbmVudD4gPSBudWxsO1xuXG4gIGluc3RhbmNlID0gbnVsbDtcblxuICBfaW5pdENvbmZpZyhjb25maWc6IEFjdGlvblNoZWV0T3B0aW9ucywgb3B0aW9uczogT2JqZWN0ID0ge30pOiBBY3Rpb25TaGVldE9wdGlvbnMge1xuICAgIGNvbnN0IHByb3BzOiBBY3Rpb25TaGVldE9wdGlvbnMgPSBuZXcgQWN0aW9uU2hlZXRPcHRpb25zKCk7XG4gICAgY29uc3Qgb3B0aW9uYWxQYXJhbXM6IHN0cmluZ1tdID0gW1xuICAgICAgJ3ByZWZpeENscycsXG4gICAgICAnbWFza0Nsb3NhYmxlJyxcbiAgICAgICdjYW5jZWxCdXR0b25UZXh0JyxcbiAgICAgICdjYW5jZWxCdXR0b25JbmRleCcsXG4gICAgICAnZGVzdHJ1Y3RpdmVCdXR0b25JbmRleCcsXG4gICAgICAndGl0bGUnLFxuICAgICAgJ21lc3NhZ2UnLFxuICAgICAgJ2NsYXNzTmFtZScsXG4gICAgICAndHJhbnNpdGlvbk5hbWUnLFxuICAgICAgJ21hc2tUcmFuc2l0aW9uTmFtZScsXG4gICAgICAnb3B0aW9ucycsXG4gICAgICAnbG9jYWxlJyxcbiAgICAgICdjbG9zZSdcbiAgICBdO1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGNvbmZpZyA9IE9iamVjdC5hc3NpZ24ob3B0aW9ucywgY29uZmlnLCB7XG4gICAgICBjbG9zZTogKCk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoY29uZmlnLm1hc2tDbG9zYWJsZSkge1xuICAgICAgICAgIHNlbGYuY2xvc2VXaXRoQW5pbWF0aW9uKGNvbmZpZy50cmFuc2l0aW9uTmFtZSwgY29uZmlnLm1hc2tUcmFuc2l0aW9uTmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBvcHRpb25hbFBhcmFtcy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAoY29uZmlnW2tleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBwcm9wc1trZXldID0gY29uZmlnW2tleV07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHByb3BzO1xuICB9XG5cbiAgX29wZW4ocHJvcHM6IEFjdGlvblNoZWV0T3B0aW9ucykge1xuICAgIHRoaXMuY29tUmVmID0gdGhpcy5zaG93UG9wdXAoQWN0aW9uU2hlZXRDb21wb25lbnQpO1xuICAgIHRoaXMuY29tUmVmLmluc3RhbmNlLm9wdGlvbiA9IHByb3BzO1xuICAgIHJldHVybiB0aGlzLmNvbVJlZiAmJiB0aGlzLmNvbVJlZi5pbnN0YW5jZTtcbiAgfVxuXG4gIGNyZWF0ZUFjdGlvblNoZWV0KFxuICAgIGZsYWc6IHN0cmluZyxcbiAgICBjb25maWc6IEFjdGlvblNoZWV0V2l0aE9wdGlvbnMgfCBTaGFyZUFjdGlvblNoZWV0V2l0aE9wdGlvbnMsXG4gICAgY2FsbGJhY2s6IEFjdGlvbkNhbGxCYWNrXG4gICkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBmbGFnID09PSBOT1JNQUwgPyBuZXcgQWN0aW9uU2hlZXRPcHRpb25zKCkgOiBuZXcgU2hhcmVBY3Rpb25TaGVldFdpdGhPcHRpb25zKCk7XG4gICAgY29uc3QgdHJhbnNpdGlvbk5hbWUgPSBjb25maWcudHJhbnNpdGlvbk5hbWUgPyBjb25maWcudHJhbnNpdGlvbk5hbWUgOiBvcHRpb25zLnRyYW5zaXRpb25OYW1lO1xuICAgIG9wdGlvbnMudHJhbnNpdGlvbk5hbWUgPSBgJHt0cmFuc2l0aW9uTmFtZX0tZW50ZXIgJHt0cmFuc2l0aW9uTmFtZX0tZW50ZXItYWN0aXZlYDtcbiAgICBjb25zdCBtYXNrVHJhbnNpdGlvbk5hbWUgPSBjb25maWcubWFza1RyYW5zaXRpb25OYW1lID8gY29uZmlnLm1hc2tUcmFuc2l0aW9uTmFtZSA6IG9wdGlvbnMubWFza1RyYW5zaXRpb25OYW1lO1xuICAgIG9wdGlvbnMubWFza1RyYW5zaXRpb25OYW1lID0gYCR7bWFza1RyYW5zaXRpb25OYW1lfS1lbnRlciAke21hc2tUcmFuc2l0aW9uTmFtZX0tZW50ZXItYWN0aXZlYDtcbiAgICBjb25zdCBwcm9wcyA9IHRoaXMuX2luaXRDb25maWcoY29uZmlnLCBvcHRpb25zKTtcbiAgICBPYmplY3QuYXNzaWduKHByb3BzLCB7IG9uUHJlc3M6IGNiIH0sIHsgZmxhZzogZmxhZyB9LCB7IG1hc2tDbG9zZTogcHJvcHMubWFza0Nsb3NhYmxlID8gY2IgOiAoKSA9PiB7fSB9KTtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBmdW5jdGlvbiBjYihpbmRleDogYW55LCByb3dJbmRleCA9IDAsIGV2ZW50KSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGNvbnN0IHJlcyA9IGNhbGxiYWNrKGluZGV4LCByb3dJbmRleCk7XG4gICAgICBpZiAocmVzICYmIHJlcy50aGVuKSB7XG4gICAgICAgIHJlcy50aGVuKCgpID0+IHtcbiAgICAgICAgICBzZWxmLmNsb3NlV2l0aEFuaW1hdGlvbih0cmFuc2l0aW9uTmFtZSwgbWFza1RyYW5zaXRpb25OYW1lKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxmLmNsb3NlV2l0aEFuaW1hdGlvbih0cmFuc2l0aW9uTmFtZSwgbWFza1RyYW5zaXRpb25OYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX29wZW4ocHJvcHMpO1xuICB9XG5cbiAgY2xvc2VXaXRoQW5pbWF0aW9uKHRyYW5zaXRpb25OYW1lLCBtYXNrVHJhbnNpdGlvbk5hbWUpIHtcbiAgICB0aGlzLmNvbVJlZi5pbnN0YW5jZS5vcHRpb24udHJhbnNpdGlvbk5hbWUgPSBgJHt0cmFuc2l0aW9uTmFtZX0tbGVhdmUgJHt0cmFuc2l0aW9uTmFtZX0tbGVhdmUtYWN0aXZlYDtcbiAgICB0aGlzLmNvbVJlZi5pbnN0YW5jZS5vcHRpb24ubWFza1RyYW5zaXRpb25OYW1lID0gYCR7bWFza1RyYW5zaXRpb25OYW1lfS1sZWF2ZSAke21hc2tUcmFuc2l0aW9uTmFtZX0tbGVhdmUtYWN0aXZlYDtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9LCAyMDApO1xuICB9XG5cbiAgc2hvd0FjdGlvblNoZWV0V2l0aE9wdGlvbnMoY29uZmlnOiBBY3Rpb25TaGVldFdpdGhPcHRpb25zLCBjYWxsYmFjazogQWN0aW9uQ2FsbEJhY2sgPSBub29wKSB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlQWN0aW9uU2hlZXQoTk9STUFMLCBjb25maWcsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIHNob3dTaGFyZUFjdGlvblNoZWV0V2l0aE9wdGlvbnMoY29uZmlnOiBTaGFyZUFjdGlvblNoZWV0V2l0aE9wdGlvbnMsIGNhbGxiYWNrOiBBY3Rpb25DYWxsQmFjayA9IG5vb3ApIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVBY3Rpb25TaGVldChTSEFSRSwgY29uZmlnLCBjYWxsYmFjayk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLmhpZGVQb3B1cCgpO1xuICB9XG59XG4iXX0=