UNPKG

@rucken/todo-web

Version:

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

235 lines 18.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, USERS_CONFIG_TOKEN } from '@rucken/core'; import { Project } from '@rucken/todo-core'; import { UsersGridComponent, UsersGridModalComponent } from '@rucken/web'; import { BindIoInner } from 'ngx-bind-io'; import { BsModalService } from 'ngx-bootstrap/modal'; import { DynamicRepository, ProviderActionEnum } from 'ngx-repository'; import { ProjectUserModalComponent } from '../project-user-modal/project-user-modal.component'; var ProjectUsersGridComponent = /** @class */ (function (_super) { tslib_1.__extends(ProjectUsersGridComponent, _super); function ProjectUsersGridComponent(modalsService, errorsExtractor, translateService, dynamicRepository, modalService, usersConfig) { var _this = _super.call(this, modalsService, errorsExtractor, translateService, dynamicRepository, usersConfig) || this; _this.errorsExtractor = errorsExtractor; _this.translateService = translateService; _this.dynamicRepository = dynamicRepository; _this.modalService = modalService; _this.usersConfig = usersConfig; _this.modalItem = { component: ProjectUserModalComponent, initialState: { simpleMode: true } }; _this.modalDelete = { initialState: { title: translate('Delete user'), message: translate('Do you really want to delete user "{{fullName}}" from project?') } }; _this.modalAppendFromGrid = { component: UsersGridModalComponent, initialState: { title: translate('Select user for append to project'), simpleMode: true } }; _this.project = undefined; _this._onChange = (/** * @param {?} value * @return {?} */ function (value) { }); _this._onTouched = (/** * @return {?} */ function () { }); return _this; } ProjectUsersGridComponent_1 = ProjectUsersGridComponent; /** * @param {?=} overrided * @return {?} */ ProjectUsersGridComponent.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.usersConfig, { 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.usersConfig, { 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 {?} */ ProjectUsersGridComponent.prototype.ngOnDestroy = /** * @return {?} */ function () { if (this.mockedItemsChangeSubscription) { this.mockedItemsChangeSubscription.unsubscribe(); } }; /** * @param {?} users * @return {?} */ ProjectUsersGridComponent.prototype.writeValue = /** * @param {?} users * @return {?} */ function (users) { this.mockedItems = users || []; this.ngOnInit(true); }; /** * @param {?} fn * @return {?} */ ProjectUsersGridComponent.prototype.registerOnChange = /** * @param {?} fn * @return {?} */ function (fn) { this._onChange = fn; }; /** * @param {?} fn * @return {?} */ ProjectUsersGridComponent.prototype.registerOnTouched = /** * @param {?} fn * @return {?} */ function (fn) { this._onTouched = fn; }; /** * @param {?} isDisabled * @return {?} */ ProjectUsersGridComponent.prototype.setDisabledState = /** * @param {?} isDisabled * @return {?} */ function (isDisabled) { }; var ProjectUsersGridComponent_1; ProjectUsersGridComponent.decorators = [ { type: Component, args: [{ selector: 'project-users-grid', template: "<entity-grid\n [bindIO]\n [columns]=\"['fullName', 'action']\"\n [enableCreate]=\"'change_project' | perm:false | async\"\n [enableUpdate]=\"false\"\n [enableDelete]=\"'change_project' | perm:false | async\">\n</entity-grid>\n", providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef((/** * @return {?} */ function () { return ProjectUsersGridComponent_1; })), multi: true } ], changeDetection: ChangeDetectionStrategy.OnPush }] } ]; /** @nocollapse */ ProjectUsersGridComponent.ctorParameters = function () { return [ { type: ModalsService }, { type: ErrorsExtractor }, { type: TranslateService }, { type: DynamicRepository }, { type: BsModalService }, { type: undefined, decorators: [{ type: Inject, args: [USERS_CONFIG_TOKEN,] }] } ]; }; ProjectUsersGridComponent.propDecorators = { modalItem: [{ type: Input }], modalDelete: [{ type: Input }], modalAppendFromGrid: [{ type: Input }], project: [{ type: Input }] }; ProjectUsersGridComponent = ProjectUsersGridComponent_1 = tslib_1.__decorate([ BindIoInner(), tslib_1.__metadata("design:paramtypes", [ModalsService, ErrorsExtractor, TranslateService, DynamicRepository, BsModalService, Object]) ], ProjectUsersGridComponent); return ProjectUsersGridComponent; }(UsersGridComponent)); export { ProjectUsersGridComponent }; if (false) { /** @type {?} */ ProjectUsersGridComponent.prototype.modalItem; /** @type {?} */ ProjectUsersGridComponent.prototype.modalDelete; /** @type {?} */ ProjectUsersGridComponent.prototype.modalAppendFromGrid; /** @type {?} */ ProjectUsersGridComponent.prototype.project; /** @type {?} */ ProjectUsersGridComponent.prototype.mockedItemsChangeSubscription; /** @type {?} */ ProjectUsersGridComponent.prototype._onChange; /** @type {?} */ ProjectUsersGridComponent.prototype._onTouched; /** * @type {?} * @protected */ ProjectUsersGridComponent.prototype.errorsExtractor; /** * @type {?} * @protected */ ProjectUsersGridComponent.prototype.translateService; /** * @type {?} * @protected */ ProjectUsersGridComponent.prototype.dynamicRepository; /** @type {?} */ ProjectUsersGridComponent.prototype.modalService; /** * @type {?} * @protected */ ProjectUsersGridComponent.prototype.usersConfig; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC11c2Vycy1ncmlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BydWNrZW4vdG9kby13ZWIvIiwic291cmNlcyI6WyJsaWIvZW50aXRpZXMvcHJvamVjdHMvcHJvamVjdC11c2Vycy1ncmlkL3Byb2plY3QtdXNlcnMtZ3JpZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUNMLGVBQWUsRUFFZixhQUFhLEVBQ2IsU0FBUyxFQUVULGtCQUFrQixFQUNuQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBd0Isa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7SUFlaEQscURBQWtCO0lBMkIvRCxtQ0FDRSxhQUE0QixFQUNsQixlQUFnQyxFQUNoQyxnQkFBa0MsRUFDbEMsaUJBQW9DLEVBQ3ZDLFlBQTRCLEVBRXpCLFdBQXVDO1FBUG5ELFlBU0Usa0JBQU0sYUFBYSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxXQUFX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Ozs7OztJQUNuQyxnREFDaUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgRXJyb3JzRXh0cmFjdG9yLFxuICBJQmFzZUVudGl0eU1vZGFsT3B0aW9ucyxcbiAgTW9kYWxzU2VydmljZSxcbiAgdHJhbnNsYXRlLFxuICBVc2VyLFxuICBVU0VSU19DT05GSUdfVE9LRU5cbn0gZnJvbSAnQHJ1Y2tlbi9jb3JlJztcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICdAcnVja2VuL3RvZG8tY29yZSc7XG5pbXBvcnQgeyBVc2Vyc0dyaWRDb21wb25lbnQsIFVzZXJzR3JpZE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnQHJ1Y2tlbi93ZWInO1xuaW1wb3J0IHsgQmluZElvSW5uZXIgfSBmcm9tICduZ3gtYmluZC1pbyc7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgRHluYW1pY1JlcG9zaXRvcnksIElSZXN0UHJvdmlkZXJPcHRpb25zLCBQcm92aWRlckFjdGlvbkVudW0gfSBmcm9tICduZ3gtcmVwb3NpdG9yeSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFByb2plY3RVc2VyTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9wcm9qZWN0LXVzZXItbW9kYWwvcHJvamVjdC11c2VyLW1vZGFsLmNvbXBvbmVudCc7XG5cbkBCaW5kSW9Jbm5lcigpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcm9qZWN0LXVzZXJzLWdyaWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvamVjdC11c2Vycy1ncmlkLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQcm9qZWN0VXNlcnNHcmlkQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBQcm9qZWN0VXNlcnNHcmlkQ29tcG9uZW50IGV4dGVuZHMgVXNlcnNHcmlkQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KClcbiAgbW9kYWxJdGVtOiBJQmFzZUVudGl0eU1vZGFsT3B0aW9ucyA9IHtcbiAgICBjb21wb25lbnQ6IFByb2plY3RVc2VyTW9kYWxDb21wb25lbnQsXG4gICAgaW5pdGlhbFN0YXRlOiB7XG4gICAgICBzaW1wbGVNb2RlOiB0cnVlXG4gICAgfVxuICB9O1xuICBASW5wdXQoKVxuICBtb2RhbERlbGV0ZSA9IHtcbiAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgIHRpdGxlOiB0cmFuc2xhdGUoJ0RlbGV0ZSB1c2VyJyksXG4gICAgICBtZXNzYWdlOiB0cmFuc2xhdGUoJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdXNlciBcInt7ZnVsbE5hbWV9fVwiIGZyb20gcHJvamVjdD8nKVxuICAgIH1cbiAgfTtcbiAgQElucHV0KClcbiAgbW9kYWxBcHBlbmRGcm9tR3JpZCA9IHtcbiAgICBjb21wb25lbnQ6IFVzZXJzR3JpZE1vZGFsQ29tcG9uZW50LFxuICAgIGluaXRpYWxTdGF0ZToge1xuICAgICAgdGl0bGU6IHRyYW5zbGF0ZSgnU2VsZWN0IHVzZXIgZm9yIGFwcGVuZCB0byBwcm9qZWN0JyksXG4gICAgICBzaW1wbGVNb2RlOiB0cnVlXG4gICAgfVxuICB9O1xuICBASW5wdXQoKVxuICBwcm9qZWN0OiBQcm9qZWN0ID0gdW5kZWZpbmVkO1xuICBtb2NrZWRJdGVtc0NoYW5nZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG1vZGFsc1NlcnZpY2U6IE1vZGFsc1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGVycm9yc0V4dHJhY3RvcjogRXJyb3JzRXh0cmFjdG9yLFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBkeW5hbWljUmVwb3NpdG9yeTogRHluYW1pY1JlcG9zaXRvcnksXG4gICAgcHVibGljIG1vZGFsU2VydmljZTogQnNNb2RhbFNlcnZpY2UsXG4gICAgQEluamVjdChVU0VSU19DT05GSUdfVE9LRU4pXG4gICAgcHJvdGVjdGVkIHVzZXJzQ29uZmlnOiBJUmVzdFByb3ZpZGVyT3B0aW9uczxVc2VyPlxuICApIHtcbiAgICBzdXBlcihtb2RhbHNTZXJ2aWNlLCBlcnJvcnNFeHRyYWN0b3IsIHRyYW5zbGF0ZVNlcnZpY2UsIGR5bmFtaWNSZXBvc2l0b3J5LCB1c2Vyc0NvbmZpZyk7XG4gIH1cbiAgbmdPbkluaXQob3ZlcnJpZGVkPzogYm9vbGVhbikge1xuICAgIGlmICghb3ZlcnJpZGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5tb2NrZWRJdGVtcykge1xuICAgICAgdGhpcy51c2VSZXN0KHtcbiAgICAgICAgYXBpVXJsOiB0aGlzLmFwaVVybCArICcvcHJvamVjdC8nICsgdGhpcy5wcm9qZWN0LmlkLFxuICAgICAgICBhdXRvbG9hZDogISF0aGlzLnByb2plY3QuaWQsXG4gICAgICAgIC4uLnRoaXMudXNlcnNDb25maWcsXG4gICAgICAgIGdsb2JhbEV2ZW50UmVzb2x2ZXI6IChkYXRhOiBhbnksIGFjdGlvbjogUHJvdmlkZXJBY3Rpb25FbnVtKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGFjdGlvbiAhPT0gUHJvdmlkZXJBY3Rpb25FbnVtLkNyZWF0ZSAmJiBhY3Rpb24gIT09IFByb3ZpZGVyQWN0aW9uRW51bS5EZWxldGU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5tb2NrZWRJdGVtcykge1xuICAgICAgdGhpcy51c2VNb2NrKHtcbiAgICAgICAgaXRlbXM6IHRoaXMubW9ja2VkSXRlbXMsXG4gICAgICAgIGF1dG9sb2FkOiB0cnVlLFxuICAgICAgICAuLi50aGlzLnVzZXJzQ29uZmlnLFxuICAgICAgICBnbG9iYWxFdmVudFJlc29sdmVyOiAoZGF0YTogYW55LCBhY3Rpb246IFByb3ZpZGVyQWN0aW9uRW51bSkgPT4ge1xuICAgICAgICAgIHJldHVybiBhY3Rpb24gIT09IFByb3ZpZGVyQWN0aW9uRW51bS5DcmVhdGUgJiYgYWN0aW9uICE9PSBQcm92aWRlckFjdGlvbkVudW0uRGVsZXRlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMubW9ja2VkSXRlbXNDaGFuZ2VTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMubW9ja2VkSXRlbXNDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5tb2NrZWRJdGVtc0NoYW5nZS5zdWJzY3JpYmUocGVybWlzc2lvbnMgPT4gdGhpcy5fb25DaGFuZ2UocGVybWlzc2lvbnMpKTtcbiAgfVxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5tb2NrZWRJdGVtc0NoYW5nZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5tb2NrZWRJdGVtc0NoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuICB3cml0ZVZhbHVlKHVzZXJzOiBVc2VyW10pOiB2b2lkIHtcbiAgICB0aGlzLm1vY2tlZEl0ZW1zID0gdXNlcnMgfHwgW107XG4gICAgdGhpcy5uZ09uSW5pdCh0cnVlKTtcbiAgfVxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICB9XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgfVxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7fVxuICBfb25DaGFuZ2UgPSAodmFsdWU6IFVzZXIpID0+IHt9O1xuICBfb25Ub3VjaGVkID0gKCkgPT4ge307XG59XG4iXX0=