UNPKG

@rucken/todo-web

Version:

Base components and ui for todo application maked on Angular7+ and based on Rucken template

219 lines 17.4 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { ChangeDetectionStrategy, Component, forwardRef, Inject, Input } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import { TranslateService } from '@ngx-translate/core'; import { ErrorsExtractor, ModalsService, translate } from '@rucken/core'; import { Project, STATUSES_CONFIG_TOKEN } from '@rucken/todo-core'; import { BindIoInner } from 'ngx-bind-io'; import { DynamicRepository, ProviderActionEnum } from 'ngx-repository'; import { StatusesGridModalComponent } from '../../statuses/statuses-grid-modal/statuses-grid-modal.component'; import { StatusesGridComponent } from '../../statuses/statuses-grid/statuses-grid.component'; var ProjectStatusesGridComponent = /** @class */ (function (_super) { tslib_1.__extends(ProjectStatusesGridComponent, _super); function ProjectStatusesGridComponent(modalsService, errorsExtractor, translateService, dynamicRepository, statusesConfig) { var _this = _super.call(this, modalsService, errorsExtractor, translateService, dynamicRepository, statusesConfig) || this; _this.errorsExtractor = errorsExtractor; _this.translateService = translateService; _this.dynamicRepository = dynamicRepository; _this.statusesConfig = statusesConfig; _this.modalDelete = { initialState: { title: translate('Delete status'), message: translate('Do you really want to delete status "{{title}}" from project?') } }; _this.modalAppendFromGrid = { component: StatusesGridModalComponent, initialState: { title: translate('Select status for append to project') } }; _this.project = undefined; _this._onChange = (/** * @param {?} value * @return {?} */ function (value) { }); _this._onTouched = (/** * @return {?} */ function () { }); return _this; } ProjectStatusesGridComponent_1 = ProjectStatusesGridComponent; /** * @param {?=} overrided * @return {?} */ ProjectStatusesGridComponent.prototype.ngOnInit = /** * @param {?=} overrided * @return {?} */ function (overrided) { var _this = this; if (!overrided) { return; } if (!this.mockedItems) { this.useRest(tslib_1.__assign({ apiUrl: this.apiUrl + '/project/' + this.project.id, autoload: !!this.project.id }, this.statusesConfig, { globalEventResolver: (/** * @param {?} data * @param {?} action * @return {?} */ function (data, action) { return action !== ProviderActionEnum.Create && action !== ProviderActionEnum.Delete; }) })); } if (this.mockedItems) { this.useMock(tslib_1.__assign({ items: this.mockedItems, autoload: true }, this.statusesConfig, { globalEventResolver: (/** * @param {?} data * @param {?} action * @return {?} */ function (data, action) { return action !== ProviderActionEnum.Create && action !== ProviderActionEnum.Delete; }) })); } if (this.mockedItemsChangeSubscription) { this.mockedItemsChangeSubscription.unsubscribe(); } this.mockedItemsChange.subscribe((/** * @param {?} permissions * @return {?} */ function (permissions) { return _this._onChange(permissions); })); }; /** * @return {?} */ ProjectStatusesGridComponent.prototype.ngOnDestroy = /** * @return {?} */ function () { if (this.mockedItemsChangeSubscription) { this.mockedItemsChangeSubscription.unsubscribe(); } }; /** * @param {?} statuses * @return {?} */ ProjectStatusesGridComponent.prototype.writeValue = /** * @param {?} statuses * @return {?} */ function (statuses) { this.mockedItems = statuses || []; this.ngOnInit(true); }; /** * @param {?} fn * @return {?} */ ProjectStatusesGridComponent.prototype.registerOnChange = /** * @param {?} fn * @return {?} */ function (fn) { this._onChange = fn; }; /** * @param {?} fn * @return {?} */ ProjectStatusesGridComponent.prototype.registerOnTouched = /** * @param {?} fn * @return {?} */ function (fn) { this._onTouched = fn; }; /** * @param {?} isDisabled * @return {?} */ ProjectStatusesGridComponent.prototype.setDisabledState = /** * @param {?} isDisabled * @return {?} */ function (isDisabled) { }; var ProjectStatusesGridComponent_1; ProjectStatusesGridComponent.decorators = [ { type: Component, args: [{ selector: 'project-statuses-grid', template: "<entity-grid\n [bindIO]\n [columns]=\"['title', 'action']\"\n (appendFromGrid)=\"onCreateClick()\"\n [enableCreate]=\"'add_status' | perm:false | async\"\n [enableUpdate]=\"'change_status' | perm:false | async\"\n [enableDelete]=\"'delete_status' | perm:false | async\">\n</entity-grid>\n", providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef((/** * @return {?} */ function () { return ProjectStatusesGridComponent_1; })), multi: true } ], changeDetection: ChangeDetectionStrategy.OnPush }] } ]; /** @nocollapse */ ProjectStatusesGridComponent.ctorParameters = function () { return [ { type: ModalsService }, { type: ErrorsExtractor }, { type: TranslateService }, { type: DynamicRepository }, { type: undefined, decorators: [{ type: Inject, args: [STATUSES_CONFIG_TOKEN,] }] } ]; }; ProjectStatusesGridComponent.propDecorators = { modalDelete: [{ type: Input }], modalAppendFromGrid: [{ type: Input }], project: [{ type: Input }] }; ProjectStatusesGridComponent = ProjectStatusesGridComponent_1 = tslib_1.__decorate([ BindIoInner(), tslib_1.__metadata("design:paramtypes", [ModalsService, ErrorsExtractor, TranslateService, DynamicRepository, Object]) ], ProjectStatusesGridComponent); return ProjectStatusesGridComponent; }(StatusesGridComponent)); export { ProjectStatusesGridComponent }; if (false) { /** @type {?} */ ProjectStatusesGridComponent.prototype.modalDelete; /** @type {?} */ ProjectStatusesGridComponent.prototype.modalAppendFromGrid; /** @type {?} */ ProjectStatusesGridComponent.prototype.project; /** @type {?} */ ProjectStatusesGridComponent.prototype.mockedItemsChangeSubscription; /** @type {?} */ ProjectStatusesGridComponent.prototype._onChange; /** @type {?} */ ProjectStatusesGridComponent.prototype._onTouched; /** * @type {?} * @protected */ ProjectStatusesGridComponent.prototype.errorsExtractor; /** * @type {?} * @protected */ ProjectStatusesGridComponent.prototype.translateService; /** * @type {?} * @protected */ ProjectStatusesGridComponent.prototype.dynamicRepository; /** * @type {?} * @protected */ ProjectStatusesGridComponent.prototype.statusesConfig; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC1zdGF0dXNlcy1ncmlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BydWNrZW4vdG9kby13ZWIvIiwic291cmNlcyI6WyJsaWIvZW50aXRpZXMvcHJvamVjdHMvcHJvamVjdC1zdGF0dXNlcy1ncmlkL3Byb2plY3Qtc3RhdHVzZXMtZ3JpZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFRLE1BQU0sY0FBYyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQXFCLE1BQU0sbUJBQW1CLENBQUM7QUFDdEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQUUsaUJBQWlCLEVBQXdCLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0YsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDOUcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0RBQXNELENBQUM7O0lBZTNDLHdEQUFxQjtJQW9CckUsc0NBQ0UsYUFBNEIsRUFDbEIsZUFBZ0MsRUFDaEMsZ0JBQWtDLEVBQ2xDLGlCQUFvQyxFQUVwQyxjQUEwQztRQU50RCxZQVFFLGtCQUFNLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxDQUFDLFNBQzNGO1FBUFcscUJBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHNCQUFnQixHQUFo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UyxDQUFDOzs7Z0JBdEZoRCxTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsOFRBQXFEO29CQUNyRCxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVU7Ozs0QkFBQyxjQUFNLE9BQUEsOEJBQTRCLEVBQTVCLENBQTRCLEVBQUM7NEJBQzNELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDs7OztnQkFwQnlCLGFBQWE7Z0JBQTlCLGVBQWU7Z0JBRGYsZ0JBQWdCO2dCQUloQixpQkFBaUI7Z0RBMkNyQixNQUFNLFNBQUMscUJBQXFCOzs7OEJBdkI5QixLQUFLO3NDQU9MLEtBQUs7MEJBT0wsS0FBSzs7SUFoQkssNEJBQTRCO1FBYnhDLFdBQVcsRUFBRTtpREFrQ0ssYUFBYTtZQUNELGVBQWU7WUFDZCxnQkFBZ0I7WUFDZixpQkFBaUI7T0F4QnJDLDRCQUE0QixDQTZFeEM7SUFBRCxtQ0FBQztDQUFBLENBN0VpRCxxQkFBcUIsR0E2RXRFO1NBN0VZLDRCQUE0Qjs7O0lBRXZDLG1EQU1FOztJQUNGLDJEQU1FOztJQUNGLCtDQUM2Qjs7SUFDN0IscUVBQTRDOztJQXlENUMsaURBQWdDOztJQUNoQyxrREFBc0I7Ozs7O0lBdERwQix1REFBMEM7Ozs7O0lBQzFDLHdEQUE0Qzs7Ozs7SUFDNUMseURBQThDOzs7OztJQUM5QyxzREFDb0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgRXJyb3JzRXh0cmFjdG9yLCBNb2RhbHNTZXJ2aWNlLCB0cmFuc2xhdGUsIFVzZXIgfSBmcm9tICdAcnVja2VuL2NvcmUnO1xuaW1wb3J0IHsgUHJvamVjdCwgU1RBVFVTRVNfQ09ORklHX1RPS0VOLCBTdGF0dXNXaXRoUHJvamVjdCB9IGZyb20gJ0BydWNrZW4vdG9kby1jb3JlJztcbmltcG9ydCB7IEJpbmRJb0lubmVyIH0gZnJvbSAnbmd4LWJpbmQtaW8nO1xuaW1wb3J0IHsgRHluYW1pY1JlcG9zaXRvcnksIElSZXN0UHJvdmlkZXJPcHRpb25zLCBQcm92aWRlckFjdGlvbkVudW0gfSBmcm9tICduZ3gtcmVwb3NpdG9yeSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN0YXR1c2VzR3JpZE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vc3RhdHVzZXMvc3RhdHVzZXMtZ3JpZC1tb2RhbC9zdGF0dXNlcy1ncmlkLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdGF0dXNlc0dyaWRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9zdGF0dXNlcy9zdGF0dXNlcy1ncmlkL3N0YXR1c2VzLWdyaWQuY29tcG9uZW50JztcblxuQEJpbmRJb0lubmVyKClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Byb2plY3Qtc3RhdHVzZXMtZ3JpZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9qZWN0LXN0YXR1c2VzLWdyaWQuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFByb2plY3RTdGF0dXNlc0dyaWRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFByb2plY3RTdGF0dXNlc0dyaWRDb21wb25lbnQgZXh0ZW5kcyBTdGF0dXNlc0dyaWRDb21wb25lbnRcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKVxuICBtb2RhbERlbGV0ZSA9IHtcbiAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgIHRpdGxlOiB0cmFuc2xhdGUoJ0RlbGV0ZSBzdGF0dXMnKSxcbiAgICAgIG1lc3NhZ2U6IHRyYW5zbGF0ZSgnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSBzdGF0dXMgXCJ7e3RpdGxlfX1cIiBmcm9tIHByb2plY3Q/JylcbiAgICB9XG4gIH07XG4gIEBJbnB1dCgpXG4gIG1vZGFsQXBwZW5kRnJvbUdyaWQgPSB7XG4gICAgY29tcG9uZW50OiBTdGF0dXNlc0dyaWRNb2RhbENvbXBvbmVudCxcbiAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgIHRpdGxlOiB0cmFuc2xhdGUoJ1NlbGVjdCBzdGF0dXMgZm9yIGFwcGVuZCB0byBwcm9qZWN0JylcbiAgICB9XG4gIH07XG4gIEBJbnB1dCgpXG4gIHByb2plY3Q6IFByb2plY3QgPSB1bmRlZmluZWQ7XG4gIG1vY2tlZEl0ZW1zQ2hhbmdlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbW9kYWxzU2VydmljZTogTW9kYWxzU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgZXJyb3JzRXh0cmFjdG9yOiBFcnJvcnNFeHRyYWN0b3IsXG4gICAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGR5bmFtaWNSZXBvc2l0b3J5OiBEeW5hbWljUmVwb3NpdG9yeSxcbiAgICBASW5qZWN0KFNUQVRVU0VTX0NPTkZJR19UT0tFTilcbiAgICBwcm90ZWN0ZWQgc3RhdHVzZXNDb25maWc6IElSZXN0UHJvdmlkZXJPcHRpb25zPFVzZXI+XG4gICkge1xuICAgIHN1cGVyKG1vZGFsc1NlcnZpY2UsIGVycm9yc0V4dHJhY3RvciwgdHJhbnNsYXRlU2VydmljZSwgZHluYW1pY1JlcG9zaXRvcnksIHN0YXR1c2VzQ29uZmlnKTtcbiAgfVxuICBuZ09uSW5pdChvdmVycmlkZWQ/OiBib29sZWFuKSB7XG4gICAgaWYgKCFvdmVycmlkZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF0aGlzLm1vY2tlZEl0ZW1zKSB7XG4gICAgICB0aGlzLnVzZVJlc3Qoe1xuICAgICAgICBhcGlVcmw6IHRoaXMuYXBpVXJsICsgJy9wcm9qZWN0LycgKyB0aGlzLnByb2plY3QuaWQsXG4gICAgICAgIGF1dG9sb2FkOiAhIXRoaXMucHJvamVjdC5pZCxcbiAgICAgICAgLi4udGhpcy5zdGF0dXNlc0NvbmZpZyxcbiAgICAgICAgZ2xvYmFsRXZlbnRSZXNvbHZlcjogKGRhdGE6IGFueSwgYWN0aW9uOiBQcm92aWRlckFjdGlvbkVudW0pID0+IHtcbiAgICAgICAgICByZXR1cm4gYWN0aW9uICE9PSBQcm92aWRlckFjdGlvbkVudW0uQ3JlYXRlICYmIGFjdGlvbiAhPT0gUHJvdmlkZXJBY3Rpb25FbnVtLkRlbGV0ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLm1vY2tlZEl0ZW1zKSB7XG4gICAgICB0aGlzLnVzZU1vY2soe1xuICAgICAgICBpdGVtczogdGhpcy5tb2NrZWRJdGVtcyxcbiAgICAgICAgYXV0b2xvYWQ6IHRydWUsXG4gICAgICAgIC4uLnRoaXMuc3RhdHVzZXNDb25maWcsXG4gICAgICAgIGdsb2JhbEV2ZW50UmVzb2x2ZXI6IChkYXRhOiBhbnksIGFjdGlvbjogUHJvdmlkZXJBY3Rpb25FbnVtKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGFjdGlvbiAhPT0gUHJvdmlkZXJBY3Rpb25FbnVtLkNyZWF0ZSAmJiBhY3Rpb24gIT09IFByb3ZpZGVyQWN0aW9uRW51bS5EZWxldGU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5tb2NrZWRJdGVtc0NoYW5nZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5tb2NrZWRJdGVtc0NoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICB0aGlzLm1vY2tlZEl0ZW1zQ2hhbmdlLnN1YnNjcmliZShwZXJtaXNzaW9ucyA9PiB0aGlzLl9vbkNoYW5nZShwZXJtaXNzaW9ucykpO1xuICB9XG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLm1vY2tlZEl0ZW1zQ2hhbmdlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLm1vY2tlZEl0ZW1zQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG4gIHdyaXRlVmFsdWUoc3RhdHVzZXM6IFN0YXR1c1dpdGhQcm9qZWN0W10pOiB2b2lkIHtcbiAgICB0aGlzLm1vY2tlZEl0ZW1zID0gc3RhdHVzZXMgfHwgW107XG4gICAgdGhpcy5uZ09uSW5pdCh0cnVlKTtcbiAgfVxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICB9XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgfVxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7fVxuICBfb25DaGFuZ2UgPSAodmFsdWU6IFVzZXIpID0+IHt9O1xuICBfb25Ub3VjaGVkID0gKCkgPT4ge307XG59XG4iXX0=