UNPKG

ng-zorro-antd-mobile

Version:

An enterprise-class mobile UI components based on Ant Design and Angular

175 lines (174 loc) 15.5 kB
/** * @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 {?} */ const NORMAL = 'NORMAL'; /** @type {?} */ const SHARE = 'SHARE'; /** * @return {?} */ function noop() { } export class ActionSheet { /** * @param {?} _appRef * @param {?} _cfr */ constructor(_appRef, _cfr) { this._appRef = _appRef; this._cfr = _cfr; ActionSheet.appRef = this._appRef; ActionSheet._actionSheetCompFactory = this._cfr.resolveComponentFactory(ActionSheetComponent); } /** * @param {?} config * @param {?=} options * @return {?} */ static _initConfig(config, options = {}) { /** @type {?} */ const props = new ActionSheetOptions(); /** @type {?} */ const optionalParams = [ 'prefixCls', 'maskClosable', 'cancelButtonIndex', 'destructiveButtonIndex', 'title', 'message', 'className', 'transitionName', 'maskTransitionName', 'options' ]; config = Object.assign(options, config); optionalParams.forEach(key => { if (config[key] !== undefined) { props[key] = config[key]; } }); return props; } /** * @param {?} props * @param {?} factory * @return {?} */ static _open(props, factory) { document.body.insertBefore(document.createElement(factory.selector), document.body.firstChild); /** @type {?} */ let 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 {?} */ static createActionSheet(flag, config, callback) { /** @type {?} */ const options = new ActionSheetOptions(); /** @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 = ActionSheet._initConfig(config, options); Object.assign(props, { onPress: cb }, { flag: flag }); /** * @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(() => { ActionSheet.closeWithAnimation(transitionName, maskTransitionName); }); } else { ActionSheet.closeWithAnimation(transitionName, maskTransitionName); } } return ActionSheet._open(props, ActionSheet._actionSheetCompFactory); } /** * @param {?} transitionName * @param {?} maskTransitionName * @return {?} */ static closeWithAnimation(transitionName, maskTransitionName) { ActionSheet.instance.transitionName = `${transitionName}-leave ${transitionName}-leave-active`; ActionSheet.instance.maskTransitionName = `${maskTransitionName}-leave ${maskTransitionName}-leave-active`; setTimeout(() => { ActionSheet.close(); }, 200); } /** * @param {?} config * @param {?=} callback * @return {?} */ static showActionSheetWithOptions(config, callback = noop) { ActionSheet.createActionSheet(NORMAL, config, callback); } /** * @param {?} config * @param {?=} callback * @return {?} */ static showShareActionSheetWithOptions(config, callback = noop) { ActionSheet.createActionSheet(SHARE, config, callback); } /** * @return {?} */ static close() { 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 = () => [ { type: ApplicationRef }, { type: ComponentFactoryResolver } ]; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXNoZWV0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy16b3Jyby1hbnRkLW1vYmlsZS8iLCJzb3VyY2VzIjpbImFjdGlvbi1zaGVldC9hY3Rpb24tc2hlZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBa0MsY0FBYyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFFTCxrQkFBa0IsRUFHbkIsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFHekMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDOztBQUN4QixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUM7Ozs7QUFDdEIsbUJBQWtCO0FBR2xCLE1BQU07Ozs7O0lBTUosWUFBb0IsT0FBdUIsRUFBVSxJQUE4QjtRQUEvRCxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUFVLFNBQUksR0FBSixJQUFJLENBQTBCO1FBQ2pGLFdBQVcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNsQyxXQUFXLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0tBQy9GOzs7Ozs7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQTBCLEVBQUUsVUFBa0IsRUFBRTs7UUFDakUsTUFBTSxLQUFLLEdBQXVCLElBQUksa0JBQWtCLEVBQUUsQ0FBQzs7UUFDM0QsTUFBTSxjQUFjLEdBQWE7WUFDL0IsV0FBVztZQUNYLGNBQWM7WUFDZCxtQkFBbUI7WUFDbkIsd0JBQXdCO1lBQ3hCLE9BQU87WUFDUCxTQUFTO1lBQ1QsV0FBVztZQUNYLGdCQUFnQjtZQUNoQixvQkFBb0I7WUFDcEIsU0FBUztTQUNWLENBQUM7UUFDRixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FB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QWMsVUFBVSxjQUFjLGVBQWUsQ0FBQztRQUMvRixXQUFXLENBQUMsUUFBUSxDQUFDLGtCQUFrQixHQUFHLEdBQUcsa0JBQWtCLFVBQVUsa0JBQWtCLGVBQWUsQ0FBQztRQUMzRyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3JCLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDVDs7Ozs7O0lBRUQsTUFBTSxDQUFDLDBCQUEwQixDQUFDLE1BQThCLEVBQUUsV0FBMkIsSUFBSTtRQUMvRixXQUFXLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztLQUN6RDs7Ozs7O0lBRUQsTUFBTSxDQUFDLCtCQUErQixDQUFDLE1BQW1DLEVBQUUsV0FBMkIsSUFBSTtRQUN6RyxXQUFXLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztLQUN4RDs7OztJQUVELE1BQU0sQ0FBQyxLQUFLO1FBQ1YsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFO1lBQ3ZCLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDOUIsV0FBVyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FDNUI7S0FDRjs7c0JBM0ZtQyxJQUFJO3NDQUNpQyxJQUFJO3FCQUM3QyxJQUFJO3VCQUVsQixJQUFJOztZQU52QixVQUFVOzs7O1lBZDBDLGNBQWM7WUFBRSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBDb21wb25lbnRSZWYsIENvbXBvbmVudEZhY3RvcnksIEFwcGxpY2F0aW9uUmVmLCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvblNoZWV0Q29tcG9uZW50IH0gZnJvbSAnLi9hY3Rpb24tc2hlZXQuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIEFjdGlvbkNhbGxCYWNrLFxuICBBY3Rpb25TaGVldE9wdGlvbnMsXG4gIEFjdGlvblNoZWV0V2l0aE9wdGlvbnMsXG4gIFNoYXJlQWN0aW9uU2hlZXRXaXRoT3B0aW9uc1xufSBmcm9tICcuL2FjdGlvbi1zaGVldC1vcHRpb25zLnByb3ZpZGVyJztcbmltcG9ydCB7IEFjdGlvblNoZWV0U3ViamVjdCB9IGZyb20gJy4vYWN0aW9uLXNoZWV0LXN1YmplY3Quc2VydmljZSc7XG5cbmNvbnN0IE5PUk1BTCA9ICdOT1JNQUwnO1xuY29uc3QgU0hBUkUgPSAnU0hBUkUnO1xuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBY3Rpb25TaGVldCB7XG4gIHN0YXRpYyBjb21wUmVmOiBDb21wb25lbnRSZWY8YW55PiA9IG51bGw7XG4gIHN0YXRpYyBfYWN0aW9uU2hlZXRDb21wRmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeTxBY3Rpb25TaGVldENvbXBvbmVudD4gPSBudWxsO1xuICBzdGF0aWMgYXBwUmVmOiBBcHBsaWNhdGlvblJlZiA9IG51bGw7XG5cbiAgc3RhdGljIGluc3RhbmNlID0gbnVsbDtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfYXBwUmVmOiBBcHBsaWNhdGlvblJlZiwgcHJpdmF0ZSBfY2ZyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpIHtcbiAgICBBY3Rpb25TaGVldC5hcHBSZWYgPSB0aGlzLl9hcHBSZWY7XG4gICAgQWN0aW9uU2hlZXQuX2FjdGlvblNoZWV0Q29tcEZhY3RvcnkgPSB0aGlzLl9jZnIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoQWN0aW9uU2hlZXRDb21wb25lbnQpO1xuICB9XG5cbiAgc3RhdGljIF9pbml0Q29uZmlnKGNvbmZpZzogQWN0aW9uU2hlZXRPcHRpb25zLCBvcHRpb25zOiBPYmplY3QgPSB7fSk6IEFjdGlvblNoZWV0T3B0aW9ucyB7XG4gICAgY29uc3QgcHJvcHM6IEFjdGlvblNoZWV0T3B0aW9ucyA9IG5ldyBBY3Rpb25TaGVldE9wdGlvbnMoKTtcbiAgICBjb25zdCBvcHRpb25hbFBhcmFtczogc3RyaW5nW10gPSBbXG4gICAgICAncHJlZml4Q2xzJyxcbiAgICAgICdtYXNrQ2xvc2FibGUnLFxuICAgICAgJ2NhbmNlbEJ1dHRvbkluZGV4JyxcbiAgICAgICdkZXN0cnVjdGl2ZUJ1dHRvbkluZGV4JyxcbiAgICAgICd0aXRsZScsXG4gICAgICAnbWVzc2FnZScsXG4gICAgICAnY2xhc3NOYW1lJyxcbiAgICAgICd0cmFuc2l0aW9uTmFtZScsXG4gICAgICAnbWFza1RyYW5zaXRpb25OYW1lJyxcbiAgICAgICdvcHRpb25zJ1xuICAgIF07XG4gICAgY29uZmlnID0gT2JqZWN0LmFzc2lnbihvcHRpb25zLCBjb25maWcpO1xuICAgIG9wdGlvbmFsUGFyYW1zLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmIChjb25maWdba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHByb3BzW2tleV0gPSBjb25maWdba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcHJvcHM7XG4gIH1cblxuICBzdGF0aWMgX29wZW4ocHJvcHM6IEFjdGlvblNoZWV0T3B0aW9ucywgZmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeTxhbnk+KTogQWN0aW9uU2hlZXRTdWJqZWN0IHtcbiAgICBkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KGZhY3Rvcnkuc2VsZWN0b3IpLCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpO1xuICAgIGxldCBzdWJqZWN0OiBhbnk7XG5cbiAgICBBY3Rpb25TaGVldC5jb21wUmVmID0gQWN0aW9uU2hlZXQuYXBwUmVmLmJvb3RzdHJhcChmYWN0b3J5KTtcbiAgICBBY3Rpb25TaGVldC5pbnN0YW5jZSA9IEFjdGlvblNoZWV0LmNvbXBSZWYuaW5zdGFuY2U7XG4gICAgc3ViamVjdCA9IEFjdGlvblNoZWV0Lmluc3RhbmNlLnN1YmplY3Q7XG4gICAgT2JqZWN0LmFzc2lnbihBY3Rpb25TaGVldC5pbnN0YW5jZSwgcHJvcHMpO1xuICAgIHJldHVybiBzdWJqZWN0O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUFjdGlvblNoZWV0KFxuICAgIGZsYWc6IHN0cmluZyxcbiAgICBjb25maWc6IEFjdGlvblNoZWV0V2l0aE9wdGlvbnMgfCBTaGFyZUFjdGlvblNoZWV0V2l0aE9wdGlvbnMsXG4gICAgY2FsbGJhY2s6IEFjdGlvbkNhbGxCYWNrXG4gICkge1xuICAgIGNvbnN0IG9wdGlvbnM6IEFjdGlvblNoZWV0T3B0aW9ucyA9IG5ldyBBY3Rpb25TaGVldE9wdGlvbnMoKTtcbiAgICBjb25zdCB0cmFuc2l0aW9uTmFtZSA9IGNvbmZpZy50cmFuc2l0aW9uTmFtZSA/IGNvbmZpZy50cmFuc2l0aW9uTmFtZSA6IG9wdGlvbnMudHJhbnNpdGlvbk5hbWU7XG4gICAgb3B0aW9ucy50cmFuc2l0aW9uTmFtZSA9IGAke3RyYW5zaXRpb25OYW1lfS1lbnRlciAke3RyYW5zaXRpb25OYW1lfS1lbnRlci1hY3RpdmVgO1xuICAgIGNvbnN0IG1hc2tUcmFuc2l0aW9uTmFtZSA9IGNvbmZpZy5tYXNrVHJhbnNpdGlvbk5hbWUgPyBjb25maWcubWFza1RyYW5zaXRpb25OYW1lIDogb3B0aW9ucy5tYXNrVHJhbnNpdGlvbk5hbWU7XG4gICAgb3B0aW9ucy5tYXNrVHJhbnNpdGlvbk5hbWUgPSBgJHttYXNrVHJhbnNpdGlvbk5hbWV9LWVudGVyICR7bWFza1RyYW5zaXRpb25OYW1lfS1lbnRlci1hY3RpdmVgO1xuICAgIGNvbnN0IHByb3BzID0gQWN0aW9uU2hlZXQuX2luaXRDb25maWcoY29uZmlnLCBvcHRpb25zKTtcbiAgICBPYmplY3QuYXNzaWduKHByb3BzLCB7IG9uUHJlc3M6IGNiIH0sIHsgZmxhZzogZmxhZyB9KTtcbiAgICBmdW5jdGlvbiBjYihpbmRleDogYW55LCByb3dJbmRleCA9IDAsIGV2ZW50KSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGNvbnN0IHJlcyA9IGNhbGxiYWNrKGluZGV4LCByb3dJbmRleCk7XG4gICAgICBpZiAocmVzICYmIHJlcy50aGVuKSB7XG4gICAgICAgIHJlcy50aGVuKCgpID0+IHtcbiAgICAgICAgICBBY3Rpb25TaGVldC5jbG9zZVdpdGhBbmltYXRpb24odHJhbnNpdGlvbk5hbWUsIG1hc2tUcmFuc2l0aW9uTmFtZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgQWN0aW9uU2hlZXQuY2xvc2VXaXRoQW5pbWF0aW9uKHRyYW5zaXRpb25OYW1lLCBtYXNrVHJhbnNpdGlvbk5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gQWN0aW9uU2hlZXQuX29wZW4ocHJvcHMsIEFjdGlvblNoZWV0Ll9hY3Rpb25TaGVldENvbXBGYWN0b3J5KTtcbiAgfVxuXG4gIHN0YXRpYyBjbG9zZVdpdGhBbmltYXRpb24odHJhbnNpdGlvbk5hbWUsIG1hc2tUcmFuc2l0aW9uTmFtZSkge1xuICAgIEFjdGlvblNoZWV0Lmluc3RhbmNlLnRyYW5zaXRpb25OYW1lID0gYCR7dHJhbnNpdGlvbk5hbWV9LWxlYXZlICR7dHJhbnNpdGlvbk5hbWV9LWxlYXZlLWFjdGl2ZWA7XG4gICAgQWN0aW9uU2hlZXQuaW5zdGFuY2UubWFza1RyYW5zaXRpb25OYW1lID0gYCR7bWFza1RyYW5zaXRpb25OYW1lfS1sZWF2ZSAke21hc2tUcmFuc2l0aW9uTmFtZX0tbGVhdmUtYWN0aXZlYDtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIEFjdGlvblNoZWV0LmNsb3NlKCk7XG4gICAgfSwgMjAwKTtcbiAgfVxuXG4gIHN0YXRpYyBzaG93QWN0aW9uU2hlZXRXaXRoT3B0aW9ucyhjb25maWc6IEFjdGlvblNoZWV0V2l0aE9wdGlvbnMsIGNhbGxiYWNrOiBBY3Rpb25DYWxsQmFjayA9IG5vb3ApIHtcbiAgICBBY3Rpb25TaGVldC5jcmVhdGVBY3Rpb25TaGVldChOT1JNQUwsIGNvbmZpZywgY2FsbGJhY2spO1xuICB9XG5cbiAgc3RhdGljIHNob3dTaGFyZUFjdGlvblNoZWV0V2l0aE9wdGlvbnMoY29uZmlnOiBTaGFyZUFjdGlvblNoZWV0V2l0aE9wdGlvbnMsIGNhbGxiYWNrOiBBY3Rpb25DYWxsQmFjayA9IG5vb3ApIHtcbiAgICBBY3Rpb25TaGVldC5jcmVhdGVBY3Rpb25TaGVldChTSEFSRSwgY29uZmlnLCBjYWxsYmFjayk7XG4gIH1cblxuICBzdGF0aWMgY2xvc2UoKSB7XG4gICAgaWYgKEFjdGlvblNoZWV0LmNvbXBSZWYpIHtcbiAgICAgIEFjdGlvblNoZWV0LmNvbXBSZWYuZGVzdHJveSgpO1xuICAgICAgQWN0aW9uU2hlZXQuY29tcFJlZiA9IG51bGw7XG4gICAgfVxuICB9XG59XG4iXX0=