ng-zorro-antd-mobile
Version:
An enterprise-class mobile UI components based on Ant Design and Angular
211 lines (210 loc) • 16.6 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { Injectable, ApplicationRef, ComponentFactoryResolver } from '@angular/core';
import { ActionSheetComponent } from './action-sheet.component';
import { ActionSheetOptions } from './action-sheet-options.provider';
/** @type {?} */
var NORMAL = 'NORMAL';
/** @type {?} */
var SHARE = 'SHARE';
/**
* @return {?}
*/
function noop() { }
var ActionSheet = /** @class */ (function () {
function ActionSheet(_appRef, _cfr) {
this._appRef = _appRef;
this._cfr = _cfr;
ActionSheet.appRef = this._appRef;
ActionSheet._actionSheetCompFactory = this._cfr.resolveComponentFactory(ActionSheetComponent);
}
/**
* @param {?} config
* @param {?=} options
* @return {?}
*/
ActionSheet._initConfig = /**
* @param {?} config
* @param {?=} options
* @return {?}
*/
function (config, options) {
if (options === void 0) { options = {}; }
/** @type {?} */
var props = new ActionSheetOptions();
/** @type {?} */
var optionalParams = [
'prefixCls',
'maskClosable',
'cancelButtonIndex',
'destructiveButtonIndex',
'title',
'message',
'className',
'transitionName',
'maskTransitionName',
'options'
];
config = Object.assign(options, config);
optionalParams.forEach(function (key) {
if (config[key] !== undefined) {
props[key] = config[key];
}
});
return props;
};
/**
* @param {?} props
* @param {?} factory
* @return {?}
*/
ActionSheet._open = /**
* @param {?} props
* @param {?} factory
* @return {?}
*/
function (props, factory) {
document.body.insertBefore(document.createElement(factory.selector), document.body.firstChild);
/** @type {?} */
var subject;
ActionSheet.compRef = ActionSheet.appRef.bootstrap(factory);
ActionSheet.instance = ActionSheet.compRef.instance;
subject = ActionSheet.instance.subject;
Object.assign(ActionSheet.instance, props);
return subject;
};
/**
* @param {?} flag
* @param {?} config
* @param {?} callback
* @return {?}
*/
ActionSheet.createActionSheet = /**
* @param {?} flag
* @param {?} config
* @param {?} callback
* @return {?}
*/
function (flag, config, callback) {
/** @type {?} */
var options = new ActionSheetOptions();
/** @type {?} */
var transitionName = config.transitionName ? config.transitionName : options.transitionName;
options.transitionName = transitionName + "-enter " + transitionName + "-enter-active";
/** @type {?} */
var maskTransitionName = config.maskTransitionName ? config.maskTransitionName : options.maskTransitionName;
options.maskTransitionName = maskTransitionName + "-enter " + maskTransitionName + "-enter-active";
/** @type {?} */
var props = ActionSheet._initConfig(config, options);
Object.assign(props, { onPress: cb }, { flag: flag });
/**
* @param {?} index
* @param {?=} rowIndex
* @param {?=} event
* @return {?}
*/
function cb(index, rowIndex, event) {
if (rowIndex === void 0) { rowIndex = 0; }
event.stopPropagation();
/** @type {?} */
var res = callback(index, rowIndex);
if (res && res.then) {
res.then(function () {
ActionSheet.closeWithAnimation(transitionName, maskTransitionName);
});
}
else {
ActionSheet.closeWithAnimation(transitionName, maskTransitionName);
}
}
return ActionSheet._open(props, ActionSheet._actionSheetCompFactory);
};
/**
* @param {?} transitionName
* @param {?} maskTransitionName
* @return {?}
*/
ActionSheet.closeWithAnimation = /**
* @param {?} transitionName
* @param {?} maskTransitionName
* @return {?}
*/
function (transitionName, maskTransitionName) {
ActionSheet.instance.transitionName = transitionName + "-leave " + transitionName + "-leave-active";
ActionSheet.instance.maskTransitionName = maskTransitionName + "-leave " + maskTransitionName + "-leave-active";
setTimeout(function () {
ActionSheet.close();
}, 200);
};
/**
* @param {?} config
* @param {?=} callback
* @return {?}
*/
ActionSheet.showActionSheetWithOptions = /**
* @param {?} config
* @param {?=} callback
* @return {?}
*/
function (config, callback) {
if (callback === void 0) { callback = noop; }
ActionSheet.createActionSheet(NORMAL, config, callback);
};
/**
* @param {?} config
* @param {?=} callback
* @return {?}
*/
ActionSheet.showShareActionSheetWithOptions = /**
* @param {?} config
* @param {?=} callback
* @return {?}
*/
function (config, callback) {
if (callback === void 0) { callback = noop; }
ActionSheet.createActionSheet(SHARE, config, callback);
};
/**
* @return {?}
*/
ActionSheet.close = /**
* @return {?}
*/
function () {
if (ActionSheet.compRef) {
ActionSheet.compRef.destroy();
ActionSheet.compRef = null;
}
};
ActionSheet.compRef = null;
ActionSheet._actionSheetCompFactory = null;
ActionSheet.appRef = null;
ActionSheet.instance = null;
ActionSheet.decorators = [
{ type: Injectable }
];
/** @nocollapse */
ActionSheet.ctorParameters = function () { return [
{ type: ApplicationRef },
{ type: ComponentFactoryResolver }
]; };
return ActionSheet;
}());
export { ActionSheet };
if (false) {
/** @type {?} */
ActionSheet.compRef;
/** @type {?} */
ActionSheet._actionSheetCompFactory;
/** @type {?} */
ActionSheet.appRef;
/** @type {?} */
ActionSheet.instance;
/** @type {?} */
ActionSheet.prototype._appRef;
/** @type {?} */
ActionSheet.prototype._cfr;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXNoZWV0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy16b3Jyby1hbnRkLW1vYmlsZS8iLCJzb3VyY2VzIjpbImFjdGlvbi1zaGVldC9hY3Rpb24tc2hlZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBa0MsY0FBYyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFFTCxrQkFBa0IsRUFHbkIsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFHekMsSUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDOztBQUN4QixJQUFNLEtBQUssR0FBRyxPQUFPLENBQUM7Ozs7QUFDdEIsbUJBQWtCOztJQVNoQixxQkFBb0IsT0FBdUIsRUFBVSxJQUE4QjtRQUEvRCxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUFVLFNBQUksR0FBSixJQUFJLENBQTBCO1FBQ2pGLFdBQVcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNsQyxXQUFXLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0tBQy9GOzs7Ozs7SUFFTSx1QkFBVzs7Ozs7SUFBbEIsVUFBbUIsTUFBMEIsRUFBRSxPQUFvQjtRQUFwQix3QkFBQSxFQUFBLFlBQW9COztRQUNqRSxJQUFNLEtBQUssR0FBdUIsSUFBSSxrQkFBa0IsRUFBRSxDQUFDOztRQUMzRCxJQUFNLGNBQWMsR0FBYTtZQUMvQixXQUFXO1lBQ1gsY0FBYztZQUNkLG1CQUFtQjtZQUNuQix3QkFBd0I7WUFDeEIsT0FBTztZQUNQLFNBQVM7WUFDVCxXQUFXO1lBQ1gsZ0JBQWdCO1lBQ2hCLG9CQUFvQjtZQUNwQixTQUFTO1NBQ1YsQ0FBQztRQUNGLE1BQU0sR0FBRyxNQUFNLENBQUMs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LGNBQWMsa0JBQWUsQ0FBQztRQUMvRixXQUFXLENBQUMsUUFBUSxDQUFDLGtCQUFrQixHQUFNLGtCQUFrQixlQUFVLGtCQUFrQixrQkFBZSxDQUFDO1FBQzNHLFVBQVUsQ0FBQztZQUNULFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNyQixFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ1Q7Ozs7OztJQUVNLHNDQUEwQjs7Ozs7SUFBakMsVUFBa0MsTUFBOEIsRUFBRSxRQUErQjtRQUEvQix5QkFBQSxFQUFBLGVBQStCO1FBQy9GLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0tBQ3pEOzs7Ozs7SUFFTSwyQ0FBK0I7Ozs7O0lBQXRDLFVBQXVDLE1BQW1DLEVBQUUsUUFBK0I7UUFBL0IseUJBQUEsRUFBQSxlQUErQjtRQUN6RyxXQUFXLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztLQUN4RDs7OztJQUVNLGlCQUFLOzs7SUFBWjtRQUNFLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRTtZQUN2QixXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzlCLFdBQVcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1NBQzVCO0tBQ0Y7MEJBM0ZtQyxJQUFJOzBDQUNpQyxJQUFJO3lCQUM3QyxJQUFJOzJCQUVsQixJQUFJOztnQkFOdkIsVUFBVTs7OztnQkFkMEMsY0FBYztnQkFBRSx3QkFBd0I7O3NCQUE3Rjs7U0FlYSxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgQ29tcG9uZW50UmVmLCBDb21wb25lbnRGYWN0b3J5LCBBcHBsaWNhdGlvblJlZiwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb25TaGVldENvbXBvbmVudCB9IGZyb20gJy4vYWN0aW9uLXNoZWV0LmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBBY3Rpb25DYWxsQmFjayxcbiAgQWN0aW9uU2hlZXRPcHRpb25zLFxuICBBY3Rpb25TaGVldFdpdGhPcHRpb25zLFxuICBTaGFyZUFjdGlvblNoZWV0V2l0aE9wdGlvbnNcbn0gZnJvbSAnLi9hY3Rpb24tc2hlZXQtb3B0aW9ucy5wcm92aWRlcic7XG5pbXBvcnQgeyBBY3Rpb25TaGVldFN1YmplY3QgfSBmcm9tICcuL2FjdGlvbi1zaGVldC1zdWJqZWN0LnNlcnZpY2UnO1xuXG5jb25zdCBOT1JNQUwgPSAnTk9STUFMJztcbmNvbnN0IFNIQVJFID0gJ1NIQVJFJztcbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQWN0aW9uU2hlZXQge1xuICBzdGF0aWMgY29tcFJlZjogQ29tcG9uZW50UmVmPGFueT4gPSBudWxsO1xuICBzdGF0aWMgX2FjdGlvblNoZWV0Q29tcEZhY3Rvcnk6IENvbXBvbmVudEZhY3Rvcnk8QWN0aW9uU2hlZXRDb21wb25lbnQ+ID0gbnVsbDtcbiAgc3RhdGljIGFwcFJlZjogQXBwbGljYXRpb25SZWYgPSBudWxsO1xuXG4gIHN0YXRpYyBpbnN0YW5jZSA9IG51bGw7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2FwcFJlZjogQXBwbGljYXRpb25SZWYsIHByaXZhdGUgX2NmcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyKSB7XG4gICAgQWN0aW9uU2hlZXQuYXBwUmVmID0gdGhpcy5fYXBwUmVmO1xuICAgIEFjdGlvblNoZWV0Ll9hY3Rpb25TaGVldENvbXBGYWN0b3J5ID0gdGhpcy5fY2ZyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KEFjdGlvblNoZWV0Q29tcG9uZW50KTtcbiAgfVxuXG4gIHN0YXRpYyBfaW5pdENvbmZpZyhjb25maWc6IEFjdGlvblNoZWV0T3B0aW9ucywgb3B0aW9uczogT2JqZWN0ID0ge30pOiBBY3Rpb25TaGVldE9wdGlvbnMge1xuICAgIGNvbnN0IHByb3BzOiBBY3Rpb25TaGVldE9wdGlvbnMgPSBuZXcgQWN0aW9uU2hlZXRPcHRpb25zKCk7XG4gICAgY29uc3Qgb3B0aW9uYWxQYXJhbXM6IHN0cmluZ1tdID0gW1xuICAgICAgJ3ByZWZpeENscycsXG4gICAgICAnbWFza0Nsb3NhYmxlJyxcbiAgICAgICdjYW5jZWxCdXR0b25JbmRleCcsXG4gICAgICAnZGVzdHJ1Y3RpdmVCdXR0b25JbmRleCcsXG4gICAgICAndGl0bGUnLFxuICAgICAgJ21lc3NhZ2UnLFxuICAgICAgJ2NsYXNzTmFtZScsXG4gICAgICAndHJhbnNpdGlvbk5hbWUnLFxuICAgICAgJ21hc2tUcmFuc2l0aW9uTmFtZScsXG4gICAgICAnb3B0aW9ucydcbiAgICBdO1xuICAgIGNvbmZpZyA9IE9iamVjdC5hc3NpZ24ob3B0aW9ucywgY29uZmlnKTtcbiAgICBvcHRpb25hbFBhcmFtcy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAoY29uZmlnW2tleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBwcm9wc1trZXldID0gY29uZmlnW2tleV07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHByb3BzO1xuICB9XG5cbiAgc3RhdGljIF9vcGVuKHByb3BzOiBBY3Rpb25TaGVldE9wdGlvbnMsIGZhY3Rvcnk6IENvbXBvbmVudEZhY3Rvcnk8YW55Pik6IEFjdGlvblNoZWV0U3ViamVjdCB7XG4gICAgZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChmYWN0b3J5LnNlbGVjdG9yKSwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTtcbiAgICBsZXQgc3ViamVjdDogYW55O1xuXG4gICAgQWN0aW9uU2hlZXQuY29tcFJlZiA9IEFjdGlvblNoZWV0LmFwcFJlZi5ib290c3RyYXAoZmFjdG9yeSk7XG4gICAgQWN0aW9uU2hlZXQuaW5zdGFuY2UgPSBBY3Rpb25TaGVldC5jb21wUmVmLmluc3RhbmNlO1xuICAgIHN1YmplY3QgPSBBY3Rpb25TaGVldC5pbnN0YW5jZS5zdWJqZWN0O1xuICAgIE9iamVjdC5hc3NpZ24oQWN0aW9uU2hlZXQuaW5zdGFuY2UsIHByb3BzKTtcbiAgICByZXR1cm4gc3ViamVjdDtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVBY3Rpb25TaGVldChcbiAgICBmbGFnOiBzdHJpbmcsXG4gICAgY29uZmlnOiBBY3Rpb25TaGVldFdpdGhPcHRpb25zIHwgU2hhcmVBY3Rpb25TaGVldFdpdGhPcHRpb25zLFxuICAgIGNhbGxiYWNrOiBBY3Rpb25DYWxsQmFja1xuICApIHtcbiAgICBjb25zdCBvcHRpb25zOiBBY3Rpb25TaGVldE9wdGlvbnMgPSBuZXcgQWN0aW9uU2hlZXRPcHRpb25zKCk7XG4gICAgY29uc3QgdHJhbnNpdGlvbk5hbWUgPSBjb25maWcudHJhbnNpdGlvbk5hbWUgPyBjb25maWcudHJhbnNpdGlvbk5hbWUgOiBvcHRpb25zLnRyYW5zaXRpb25OYW1lO1xuICAgIG9wdGlvbnMudHJhbnNpdGlvbk5hbWUgPSBgJHt0cmFuc2l0aW9uTmFtZX0tZW50ZXIgJHt0cmFuc2l0aW9uTmFtZX0tZW50ZXItYWN0aXZlYDtcbiAgICBjb25zdCBtYXNrVHJhbnNpdGlvbk5hbWUgPSBjb25maWcubWFza1RyYW5zaXRpb25OYW1lID8gY29uZmlnLm1hc2tUcmFuc2l0aW9uTmFtZSA6IG9wdGlvbnMubWFza1RyYW5zaXRpb25OYW1lO1xuICAgIG9wdGlvbnMubWFza1RyYW5zaXRpb25OYW1lID0gYCR7bWFza1RyYW5zaXRpb25OYW1lfS1lbnRlciAke21hc2tUcmFuc2l0aW9uTmFtZX0tZW50ZXItYWN0aXZlYDtcbiAgICBjb25zdCBwcm9wcyA9IEFjdGlvblNoZWV0Ll9pbml0Q29uZmlnKGNvbmZpZywgb3B0aW9ucyk7XG4gICAgT2JqZWN0LmFzc2lnbihwcm9wcywgeyBvblByZXNzOiBjYiB9LCB7IGZsYWc6IGZsYWcgfSk7XG4gICAgZnVuY3Rpb24gY2IoaW5kZXg6IGFueSwgcm93SW5kZXggPSAwLCBldmVudCkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBjb25zdCByZXMgPSBjYWxsYmFjayhpbmRleCwgcm93SW5kZXgpO1xuICAgICAgaWYgKHJlcyAmJiByZXMudGhlbikge1xuICAgICAgICByZXMudGhlbigoKSA9PiB7XG4gICAgICAgICAgQWN0aW9uU2hlZXQuY2xvc2VXaXRoQW5pbWF0aW9uKHRyYW5zaXRpb25OYW1lLCBtYXNrVHJhbnNpdGlvbk5hbWUpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIEFjdGlvblNoZWV0LmNsb3NlV2l0aEFuaW1hdGlvbih0cmFuc2l0aW9uTmFtZSwgbWFza1RyYW5zaXRpb25OYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIEFjdGlvblNoZWV0Ll9vcGVuKHByb3BzLCBBY3Rpb25TaGVldC5fYWN0aW9uU2hlZXRDb21wRmFjdG9yeSk7XG4gIH1cblxuICBzdGF0aWMgY2xvc2VXaXRoQW5pbWF0aW9uKHRyYW5zaXRpb25OYW1lLCBtYXNrVHJhbnNpdGlvbk5hbWUpIHtcbiAgICBBY3Rpb25TaGVldC5pbnN0YW5jZS50cmFuc2l0aW9uTmFtZSA9IGAke3RyYW5zaXRpb25OYW1lfS1sZWF2ZSAke3RyYW5zaXRpb25OYW1lfS1sZWF2ZS1hY3RpdmVgO1xuICAgIEFjdGlvblNoZWV0Lmluc3RhbmNlLm1hc2tUcmFuc2l0aW9uTmFtZSA9IGAke21hc2tUcmFuc2l0aW9uTmFtZX0tbGVhdmUgJHttYXNrVHJhbnNpdGlvbk5hbWV9LWxlYXZlLWFjdGl2ZWA7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBBY3Rpb25TaGVldC5jbG9zZSgpO1xuICAgIH0sIDIwMCk7XG4gIH1cblxuICBzdGF0aWMgc2hvd0FjdGlvblNoZWV0V2l0aE9wdGlvbnMoY29uZmlnOiBBY3Rpb25TaGVldFdpdGhPcHRpb25zLCBjYWxsYmFjazogQWN0aW9uQ2FsbEJhY2sgPSBub29wKSB7XG4gICAgQWN0aW9uU2hlZXQuY3JlYXRlQWN0aW9uU2hlZXQoTk9STUFMLCBjb25maWcsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIHN0YXRpYyBzaG93U2hhcmVBY3Rpb25TaGVldFdpdGhPcHRpb25zKGNvbmZpZzogU2hhcmVBY3Rpb25TaGVldFdpdGhPcHRpb25zLCBjYWxsYmFjazogQWN0aW9uQ2FsbEJhY2sgPSBub29wKSB7XG4gICAgQWN0aW9uU2hlZXQuY3JlYXRlQWN0aW9uU2hlZXQoU0hBUkUsIGNvbmZpZywgY2FsbGJhY2spO1xuICB9XG5cbiAgc3RhdGljIGNsb3NlKCkge1xuICAgIGlmIChBY3Rpb25TaGVldC5jb21wUmVmKSB7XG4gICAgICBBY3Rpb25TaGVldC5jb21wUmVmLmRlc3Ryb3koKTtcbiAgICAgIEFjdGlvblNoZWV0LmNvbXBSZWYgPSBudWxsO1xuICAgIH1cbiAgfVxufVxuIl19