@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
117 lines • 17.5 kB
JavaScript
import { FormControl, Validators } from '@angular/forms';
import { LoadingEmitter } from '../../utility/loading-emitter';
import { Component } from '@angular/core';
import { debounceTime, take } from 'rxjs/operators';
import * as i0 from "@angular/core";
import * as i1 from "./services/user-invite.service";
import * as i2 from "./services/organization-list.service";
import * as i3 from "../../authentication/sign-up/services/sign-up.service";
import * as i4 from "../../snack-bar/services/snack-bar.service";
import * as i5 from "@ngx-translate/core";
export class AbstractUserInviteComponent {
_userInviteService;
_orgList;
_signUpService;
_snackBar;
_translate;
invitedEmailControl;
invitedGroups;
invitedRoles;
nets;
filteredProcesses = [];
SEARCH_DEBOUNCE_TIME = 600;
searchNetControl = new FormControl();
subNetValueChanges;
loading;
constructor(_userInviteService, _orgList, _signUpService, _snackBar, _translate) {
this._userInviteService = _userInviteService;
this._orgList = _orgList;
this._signUpService = _signUpService;
this._snackBar = _snackBar;
this._translate = _translate;
this.nets = this._userInviteService.processList;
this.loading = new LoadingEmitter();
this.invitedEmailControl = new FormControl('', [Validators.email, Validators.required]);
this.invitedGroups = [];
this.invitedRoles = [];
}
get groups() {
return this._orgList.groups;
}
ngOnInit() {
this.nets.loadProcesses().subscribe(processes => {
this.filteredProcesses = processes;
});
this._orgList.loadGroups();
this.subNetValueChanges = this.searchNetControl.valueChanges.pipe(debounceTime(this.SEARCH_DEBOUNCE_TIME)).subscribe(searchText => {
this.filteredProcesses = this.nets.processes.filter(itm => itm.title.toLowerCase().includes(searchText.toLowerCase()));
});
}
ngOnDestroy() {
this.subNetValueChanges.unsubscribe();
this.nets = undefined;
this.filteredProcesses = undefined;
}
removeGroup(org) {
const itemIndex = this.invitedGroups.findIndex(g => g.id === org.id);
if (itemIndex !== -1) {
this.invitedGroups.splice(itemIndex, 1);
}
}
addGroup(org) {
const itemIndex = this.invitedGroups.findIndex(g => g.id === org.id);
if (itemIndex === -1) {
this.invitedGroups.push(org);
}
}
removeRole(role) {
const itemIndex = this.invitedRoles.findIndex(r => r.stringId === role.stringId);
if (itemIndex !== -1) {
this.invitedRoles.splice(itemIndex, 1);
}
}
addRole(role) {
const itemIndex = this.invitedRoles.findIndex(r => r.stringId === role.stringId);
if (itemIndex === -1) {
this.invitedRoles.push(role);
}
}
invite() {
if (!this.invitedEmailControl.valid) {
this._snackBar.openErrorSnackBar(this._translate.instant('admin.user-invite.emailFieldMandatory'));
return;
}
if (this.invitedGroups.length === 0) {
this._snackBar.openErrorSnackBar(this._translate.instant('admin.user-invite.oneOrMoreOrganization'));
return;
}
const invitation = {
email: this.invitedEmailControl.value,
groups: this.invitedGroups.map(org => org.id),
processRoles: this.invitedRoles.map(role => role.stringId)
};
this.loading.on();
this._signUpService.invite(invitation).pipe(take(1)).subscribe(success => {
if (success) {
this._snackBar.openSuccessSnackBar(this._translate.instant('admin.user-invite.inviteSent'));
this.invitedEmailControl.setValue('');
this.invitedGroups = [];
this.invitedRoles = [];
}
else {
this._snackBar.openErrorSnackBar(this._translate.instant('admin.user-invite.inviteFailed'));
}
this.loading.off();
});
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AbstractUserInviteComponent, deps: [{ token: i1.UserInviteService }, { token: i2.OrganizationListService }, { token: i3.SignUpService }, { token: i4.SnackBarService }, { token: i5.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AbstractUserInviteComponent, selector: "ncc-abstract-user-invite", ngImport: i0, template: '', isInline: true });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AbstractUserInviteComponent, decorators: [{
type: Component,
args: [{
selector: 'ncc-abstract-user-invite',
template: ''
}]
}], ctorParameters: () => [{ type: i1.UserInviteService }, { type: i2.OrganizationListService }, { type: i3.SignUpService }, { type: i4.SnackBarService }, { type: i5.TranslateService }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtdXNlci1pbnZpdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9hZG1pbi91c2VyLWludml0ZS9hYnN0cmFjdC11c2VyLWludml0ZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUl2RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFNN0QsT0FBTyxFQUFDLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFDLFlBQVksRUFBRSxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQU9sRCxNQUFNLE9BQWdCLDJCQUEyQjtJQVl2QjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBZGYsbUJBQW1CLENBQXNCO0lBQ3pDLGFBQWEsQ0FBd0I7SUFDckMsWUFBWSxDQUE2QjtJQUN6QyxJQUFJLENBQWM7SUFDbEIsaUJBQWlCLEdBQTJCLEVBQUUsQ0FBQztJQUM1QyxvQkFBb0IsR0FBRyxHQUFHLENBQUM7SUFDOUIsZ0JBQWdCLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUNsQyxrQkFBa0IsQ0FBZTtJQUNwQyxPQUFPLENBQWlCO0lBRS9CLFlBQXNCLGtCQUFxQyxFQUNyQyxRQUFpQyxFQUNqQyxjQUE2QixFQUM3QixTQUEwQixFQUMxQixVQUE0QjtRQUo1Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBQ3JDLGFBQVEsR0FBUixRQUFRLENBQXlCO1FBQ2pDLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQzFCLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzlDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFB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RTtnQkFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQztnQkFDNUYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO2FBQzFCO2lCQUFNO2dCQUNILElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsZ0NBQWdDLENBQUMsQ0FBQyxDQUFDO2FBQy9GO1lBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7d0dBcEdpQiwyQkFBMkI7NEZBQTNCLDJCQUEyQixnRUFGbkMsRUFBRTs7NEZBRU0sMkJBQTJCO2tCQUpoRCxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSwwQkFBMEI7b0JBQ3BDLFFBQVEsRUFBRSxFQUFFO2lCQUNmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtGb3JtQ29udHJvbCwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7RXh0ZW5kZWRQcm9jZXNzUm9sZSwgUHJvY2Vzc0xpc3QsIFByb2Nlc3NMaXN0SXRlbX0gZnJvbSAnLi4vcm9sZS1hc3NpZ25tZW50L3NlcnZpY2VzL1Byb2Nlc3NMaXN0JztcbmltcG9ydCB7R3JvdXBJbnRlcmZhY2V9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvZ3JvdXAnO1xuaW1wb3J0IHtMb2FkaW5nRW1pdHRlcn0gZnJvbSAnLi4vLi4vdXRpbGl0eS9sb2FkaW5nLWVtaXR0ZXInO1xuaW1wb3J0IHtVc2VySW52aXRlU2VydmljZX0gZnJvbSAnLi9zZXJ2aWNlcy91c2VyLWludml0ZS5zZXJ2aWNlJztcbmltcG9ydCB7T3JnYW5pemF0aW9uTGlzdFNlcnZpY2V9IGZyb20gJy4vc2VydmljZXMvb3JnYW5pemF0aW9uLWxpc3Quc2VydmljZSc7XG5pbXBvcnQge1NpZ25VcFNlcnZpY2V9IGZyb20gJy4uLy4uL2F1dGhlbnRpY2F0aW9uL3NpZ24tdXAvc2VydmljZXMvc2lnbi11cC5zZXJ2aWNlJztcbmltcG9ydCB7U25hY2tCYXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9zbmFjay1iYXIvc2VydmljZXMvc25hY2stYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHtVc2VySW52aXRhdGlvblJlcXVlc3R9IGZyb20gJy4uLy4uL2F1dGhlbnRpY2F0aW9uL3NpZ24tdXAvbW9kZWxzL3VzZXItaW52aXRhdGlvbi1yZXF1ZXN0JztcbmltcG9ydCB7Q29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgdGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmNjLWFic3RyYWN0LXVzZXItaW52aXRlJyxcbiAgICB0ZW1wbGF0ZTogJydcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RVc2VySW52aXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgcHVibGljIGludml0ZWRFbWFpbENvbnRyb2w6IEZvcm1Db250cm9sPHN0cmluZz47XG4gICAgcHVibGljIGludml0ZWRHcm91cHM6IEFycmF5PEdyb3VwSW50ZXJmYWNlPjtcbiAgICBwdWJsaWMgaW52aXRlZFJvbGVzOiBBcnJheTxFeHRlbmRlZFByb2Nlc3NSb2xlPjtcbiAgICBwdWJsaWMgbmV0czogUHJvY2Vzc0xpc3Q7XG4gICAgcHVibGljIGZpbHRlcmVkUHJvY2Vzc2VzOiBBcnJheTxQcm9jZXNzTGlzdEl0ZW0+ID0gW107XG4gICAgcHJvdGVjdGVkIFNFQVJDSF9ERUJPVU5DRV9USU1FID0gNjAwO1xuICAgIHB1YmxpYyBzZWFyY2hOZXRDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gICAgcHJvdGVjdGVkIHN1Yk5ldFZhbHVlQ2hhbmdlczogU3Vic2NyaXB0aW9uO1xuICAgIHB1YmxpYyBsb2FkaW5nOiBMb2FkaW5nRW1pdHRlcjtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfdXNlckludml0ZVNlcnZpY2U6IFVzZXJJbnZpdGVTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfb3JnTGlzdDogT3JnYW5pemF0aW9uTGlzdFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9zaWduVXBTZXJ2aWNlOiBTaWduVXBTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfc25hY2tCYXI6IFNuYWNrQmFyU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge1xuICAgICAgICB0aGlzLm5ldHMgPSB0aGlzLl91c2VySW52aXRlU2VydmljZS5wcm9jZXNzTGlzdDtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gbmV3IExvYWRpbmdFbWl0dGVyKCk7XG4gICAgICAgIHRoaXMuaW52aXRlZEVtYWlsQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMucmVxdWlyZWRdKTtcbiAgICAgICAgdGhpcy5pbnZpdGVkR3JvdXBzID0gW107XG4gICAgICAgIHRoaXMuaW52aXRlZFJvbGVzID0gW107XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBncm91cHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcmdMaXN0Lmdyb3VwcztcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uZXRzLmxvYWRQcm9jZXNzZXMoKS5zdWJzY3JpYmUocHJvY2Vzc2VzID0+IHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRQcm9jZXNzZXMgPSBwcm9jZXNzZXM7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9vcmdMaXN0LmxvYWRHcm91cHMoKTtcbiAgICAgICAgdGhpcy5zdWJOZXRWYWx1ZUNoYW5nZXMgPSB0aGlzLnNlYXJjaE5ldENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuU0VBUkNIX0RFQk9VTkNFX1RJTUUpKS5zdWJzY3JpYmUoc2VhcmNoVGV4dCA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkUHJvY2Vzc2VzID0gdGhpcy5uZXRzLnByb2Nlc3Nlcy5maWx0ZXIoaXRtID0+IGl0bS50aXRsZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRleHQudG9Mb3dlckNhc2UoKSkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdWJOZXRWYWx1ZUNoYW5nZXMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5uZXRzID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmZpbHRlcmVkUHJvY2Vzc2VzID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVHcm91cChvcmc6IEdyb3VwSW50ZXJmYWNlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHRoaXMuaW52aXRlZEdyb3Vwcy5maW5kSW5kZXgoZyA9PiBnLmlkID09PSBvcmcuaWQpO1xuICAgICAgICBpZiAoaXRlbUluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5pbnZpdGVkR3JvdXBzLnNwbGljZShpdGVtSW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEdyb3VwKG9yZzogR3JvdXBJbnRlcmZhY2UpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy5pbnZpdGVkR3JvdXBzLmZpbmRJbmRleChnID0+IGcuaWQgPT09IG9yZy5pZCk7XG4gICAgICAgIGlmIChpdGVtSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmludml0ZWRHcm91cHMucHVzaChvcmcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZVJvbGUocm9sZTogRXh0ZW5kZWRQcm9jZXNzUm9sZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmludml0ZWRSb2xlcy5maW5kSW5kZXgociA9PiByLnN0cmluZ0lkID09PSByb2xlLnN0cmluZ0lkKTtcbiAgICAgICAgaWYgKGl0ZW1JbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuaW52aXRlZFJvbGVzLnNwbGljZShpdGVtSW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFJvbGUocm9sZTogRXh0ZW5kZWRQcm9jZXNzUm9sZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBpdGVtSW5kZXggPSB0aGlzLmludml0ZWRSb2xlcy5maW5kSW5kZXgociA9PiByLnN0cmluZ0lkID09PSByb2xlLnN0cmluZ0lkKTtcbiAgICAgICAgaWYgKGl0ZW1JbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuaW52aXRlZFJvbGVzLnB1c2gocm9sZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaW52aXRlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaW52aXRlZEVtYWlsQ29udHJvbC52YWxpZCkge1xuICAgICAgICAgICAgdGhpcy5fc25hY2tCYXIub3BlbkVycm9yU25hY2tCYXIodGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ2FkbWluLnVzZXItaW52aXRlLmVtYWlsRmllbGRNYW5kYXRvcnknKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaW52aXRlZEdyb3Vwcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuX3NuYWNrQmFyLm9wZW5FcnJvclNuYWNrQmFyKHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdhZG1pbi51c2VyLWludml0ZS5vbmVPck1vcmVPcmdhbml6YXRpb24nKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbnZpdGF0aW9uOiBVc2VySW52aXRhdGlvblJlcXVlc3QgPSB7XG4gICAgICAgICAgICBlbWFpbDogdGhpcy5pbnZpdGVkRW1haWxDb250cm9sLnZhbHVlLFxuICAgICAgICAgICAgZ3JvdXBzOiB0aGlzLmludml0ZWRHcm91cHMubWFwKG9yZyA9PiBvcmcuaWQpLFxuICAgICAgICAgICAgcHJvY2Vzc1JvbGVzOiB0aGlzLmludml0ZWRSb2xlcy5tYXAocm9sZSA9PiByb2xlLnN0cmluZ0lkKVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMubG9hZGluZy5vbigpO1xuICAgICAgICB0aGlzLl9zaWduVXBTZXJ2aWNlLmludml0ZShpbnZpdGF0aW9uKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZShzdWNjZXNzID0+IHtcbiAgICAgICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc25hY2tCYXIub3BlblN1Y2Nlc3NTbmFja0Jhcih0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnYWRtaW4udXNlci1pbnZpdGUuaW52aXRlU2VudCcpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmludml0ZWRFbWFpbENvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW52aXRlZEdyb3VwcyA9IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMuaW52aXRlZFJvbGVzID0gW107XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NuYWNrQmFyLm9wZW5FcnJvclNuYWNrQmFyKHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdhZG1pbi51c2VyLWludml0ZS5pbnZpdGVGYWlsZWQnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcub2ZmKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==