UNPKG

@netgrif/components

Version:

Netgrif Application Engine frontend Angular components

122 lines (120 loc) 1.65 MB
import * as i0 from '@angular/core'; import { Component, NgModule, Input, EventEmitter, Output, Optional, Inject, forwardRef, ViewChild, ViewEncapsulation, SkipSelf, Self, Injector, HostListener, Injectable } from '@angular/core'; import * as i1 from '@netgrif/components-core'; import { AbstractRoleAssignmentComponent, RoleAssignmentService, AbstractLdapGroupRoleAssignmentComponent, RoleAssignmentLdapGroupService, AbstractUserInviteComponent, MaterialModule, TranslateLibModule, AbstractAuthenticationOverlayComponent, AbstractSessionIdleComponent, AbstractIframeCardComponent, AbstractCountCardComponent, AbstractCustomCardComponent, DashboardSingleData, DashboardMultiData, AbstractDashboardContentComponent, AbstractDataFieldTemplateComponent, AbstractBooleanFieldComponent, NAE_INFORM_ABOUT_INVALID_DATA, AbstractButtonFieldComponent, AbstractDateFieldComponent, DATE_FORMAT, AbstractDateTimeFieldComponent, DATE_TIME_FORMAT, AbstractEnumerationFieldComponent, AbstractEnumerationAutocompleteSelectFieldComponent, DATA_FIELD_PORTAL_DATA, AbstractEnumerationSelectFieldComponent, AbstractEnumerationListFieldComponent, AbstractFileFieldComponent, AbstractFileListFieldComponent, AbstractMultichoiceFieldComponent, AbstractMultichoiceSelectFieldComponent, AbstractMultichoiceListFieldComponent, AbstractNumberFieldComponent, AbstractTextFieldComponent, AbstractTextareaFieldComponent, AbstractRichTextareaFieldComponent, AbstractSimpleTextFieldComponent, AbstractUserFieldComponent, AbstractHtmlTextareaFieldComponent, AbstractCurrencyNumberFieldComponent, AbstractDefaultNumberFieldComponent, AbstractPasswordTextFieldComponent, FilePreviewType, AbstractEnumerationStepperFieldComponent, AbstractEnumerationIconFieldComponent, AbstractEnumerationAutocompleteDynamicFieldComponent, AbstractFilterFieldComponent, AbstractSearchOperandInputComponent, SearchInputType, DATE_FORMAT_STRING, DATE_TIME_FORMAT_STRING, AbstractSearchConfigurationInputComponent, OperatorTemplatePartType, AbstractSearchPredicateComponent, NAE_SEARCH_CATEGORIES, AbstractSearchClauseComponent, AbstractAdvancedSearchComponent, AdvancedSearchComponentInitializationService, SimpleFilter, AbstractFilterFieldContentComponent, NAE_FILTER_FIELD, NAE_BASE_FILTER, AllowedNetsServiceFactory, AllowedNetsService, CategoryFactory, CategoryResolverService, SearchService, AbstractUserAssignItemComponent, AbstractUserAssignListComponent, AbstractUserAssignComponent, NAE_SIDE_MENU_CONTROL, UserListService, CovalentModule, UtilityModule, NAE_USER_ASSIGN_COMPONENT, AbstractI18nFieldComponent, AbstractI18nDividerFieldComponent, AbstractI18nTextFieldComponent, AbstractMultichoiceAutocompleteFieldComponentComponent, AbstractUserListFieldComponent, AbstractMultiUserAssignItemComponent, AbstractMultiUserAssignListComponent, AbstractMultiUserAssignComponent, NAE_MULTI_USER_ASSIGN_COMPONENT, AbstractNumberDecimalFieldComponent, AbstractTaskRefFieldComponent, AbstractTaskRefDashboardTileComponent, NAE_TASK_OPERATIONS, FrontActionService, UnlimitedTaskContentService, TaskContentService, AbstractDashboardLineChartTextFieldComponent, AbstractDashboardPieChartTextFieldComponent, AbstractDashboardPortalTextFieldComponent, AbstractDashboardBarChartTextFieldComponent, AbstractDashboardIframeTextFieldComponent, AbstractFilterFieldTabViewContentComponent, AbstractBooleanDefaultFieldComponent, AbstractButtonDefaultFieldComponent, AbstractDateDefaultFieldComponent, AbstractDateTimeDefaultFieldComponent, AbstractFileDefaultFieldComponent, AbstractFileListDefaultFieldComponent, AbstractFilterDefaultFieldComponent, Dashboard, AbstractUserDefaultFieldComponent, AbstractUserListDefaultFieldComponent, AbstractTaskRefDashboardFieldComponent, AbstractSortModeComponent, AbstractSearchModeComponent, AbstractEditModeComponent, AbstractLoadingModeComponent, AbstractHeaderComponent, MultichoiceField, EnumerationField, CaseHeaderService, TaskHeaderService, WorkflowHeaderService, HeaderSearchService, AbstractFieldComponentResolverComponent, DateField, DateTimeField, FileField, FileListField, AbstractTaskContentComponent, NAE_ASYNC_RENDERING_CONFIGURATION, AbstractPanelComponent, AbstractImmediateFilterTextContentComponent, NAE_FILTER_TEXT, AbstractImmediateFilterTextComponent, AbstractPanelItemComponent, TaskContentServiceType, AbstractTaskPanelComponent, BOOLEAN_VALUE_LABEL_ENABLED, NAE_TASK_PANEL_DISABLE_BUTTON_FUNCTIONS, NAE_TASK_FORCE_OPEN, NAE_TAB_DATA, TaskContentServiceFactory, NAE_TASK_CONTENT_SERVICE_TYPE, TaskDataService, TaskEventService, AssignTaskService, DelegateTaskService, CancelTaskService, FinishTaskService, TaskRequestStateService, DataFocusPolicyService, AssignPolicyService, FinishPolicyService, ChangedFieldsService, SubjectTaskOperations, AbstractTaskListPaginationComponent, NetgrifPaginatorIntl, AbstractTaskViewComponent, NAE_CLICKABLE_TASKS, NAE_DEFAULT_HEADERS, TaskViewService, NAE_DATAFIELD_ALLOWED_NETS, ViewIdService, AbstractTaskRefListFieldComponent, AbstractFulltextSearchComponent, Filter, FilterType, Category, AbstractSearchComponent, NAE_SEARCH_COMPONENT_CONFIGURATION, NAE_FILTERS_FILTER, NAE_NAVIGATION_ITEM_TASK_DATA, NAE_DEFAULT_CASE_SEARCH_CATEGORIES, NAE_DEFAULT_TASK_SEARCH_CATEGORIES, AbstractTaskListComponent, AbstractTabbedTaskViewComponent, HeaderMode, OverflowService, tabbedAllowedNetsServiceFactory, tabbedTaskViewConfigurationFactory, NAE_TASK_VIEW_CONFIGURATION, navigationItemTaskViewDefaultHeadersFactory, AbstractSingleTaskComponent, extractFieldValueFromData, MergeOperator, AbstractTabbedSingleTaskViewComponent, RedirectService, NAE_VIEW_ID_SEGMENT, LoadingEmitter, AbstractCasePanelComponent, AbstractCaseListPaginatorComponent, AbstractCaseViewComponent, SearchMode, NAE_CASE_REF_CREATE_CASE, NAE_CASE_REF_SEARCH, NAE_CLICKABLE_CASES, NAE_OPEN_SINGLE_TASK, NAE_SINGLE_TASK_QUERY, CaseViewService, defaultCaseSearchCategoriesFactory, AbstractCaseRefDefaultComponent, AbstractMultichoiceCaseRefComponent, AbstractEnumerationCaseRefComponent, AbstractStringCollectionDefaultFieldComponent, CurrencyModule, FrontActionModule, CustomDateAdapter, AbstractLegalNoticeComponent, AbstractEmailSubmissionFormComponent, AbstractLoginSsoComponent, AbstractLoginFormComponent, AbstractRegistrationFormComponent, NAE_MIN_PASSWORD_LENGTH, AbstractForgottenPasswordComponent, AbstractChangePasswordComponent, ProfileModule, AbstractLogoutShortcutComponent, AbstractLanguageSelectorComponent, AbstractInternalLinkComponent, AbstractQuickPanelComponent, AbstractUserCardComponent, AbstractNavigationTreeComponent, AbstractNavigationDrawerComponent, AbstractNavigationRailComponent, AbstractGroupNavigationComponentResolverComponent, navigationItemTaskFilterFactory, navigationItemTaskAllowedNetsServiceFactory, navigationItemTaskCategoryFactory, AbstractCaseListComponent, AbstractBreadcrumbsComponent, AbstractTabbedCaseViewComponent, FilterExtractionService, BaseAllowedNetsService, navigationItemCaseViewDefaultHeadersFactory, DoubleDrawerUtils, SETTINGS_TRANSITION_ID, extractFilterFieldFromData, GroupNavigationConstants, NAE_AUTOSWITCH_TAB_TOKEN, NAE_OPEN_EXISTING_TAB, AbstractTabCreationDetectorComponent, AbstractTabViewComponent, extractIconAndTitle, extractSearchTypeFromData, hasView, groupNavigationViewIdSegmentFactory, GroupNavigationComponentResolverService, RoutingBuilderService, defaultTaskSearchCategoriesFactory, DefaultSearchCategoriesModule, AbstractWorkflowPanelComponent, SnackBarModule, AbstractNavigationDoubleDrawerComponent, AbstractSingleTaskViewComponent, PublicTaskLoadingService, ProcessServiceProvider, TaskResourceServiceProvider, CaseResourceServiceProvider, BaseFilterFactoryProvider, SingleTaskContentService, AbstractWorkflowViewComponent, WorkflowViewService, PetriNetResourceServiceProvider, AbstractToolbarComponent, AbstractDashboardComponent, NAE_GROUP_NAVIGATION_COMPONENT_RESOLVER_COMPONENT, AbstractNewCaseComponent, NAE_NEW_CASE_COMPONENT, AbstractImportNetComponent, NAE_IMPORT_NET_COMPONENT, AbstractFilterSelectorListItemComponent, AbstractFilterSelectorComponent, AbstractOptionSelectorComponent, NAE_OPTION_SELECTOR_COMPONENT, UserFilterConstants, AbstractSaveFilterComponent, NAE_SAVE_FILTER_COMPONENT, AbstractLoadFilterComponent, NAE_LOAD_FILTER_COMPONENT, ImpersonationUserListService, NAE_ADMIN_IMPERSONATE_COMPONENT, UserImpersonationConstants, AbstractUserImpersonateComponent, NAE_USER_IMPERSONATE_COMPONENT, AbstractSideMenuContainerComponent, AbstractProfileComponent, ProgressType, AbstractAddChildNodeComponent, AbstractRemoveNodeComponent, AbstractTreeComponent, CaseTreeService, AbstractTreeTaskContentComponent, TreeTaskContentService, SelectedCaseService, NAE_NEW_CASE_CREATION_CONFIGURATION_DATA, NAE_NEW_CASE_CONFIGURATION, AbstractFilterFieldTabViewComponent, NAE_NET_VERSION_VISIBLE, NAE_NET_ALL_VERSIONS, FilteredArray, getImmediateData, TaskEvent, NAE_TASK_VIEW_COMPONENT, reloadTaskAction, NAE_USER_ASSIGN_DIALOG_COMPONENT, NAE_IMPORT_NET_DIALOG_COMPONENT, NAE_MULTI_USER_ASSIGN_DIALOG_COMPONENT, NAE_ADMIN_IMPERSONATE_DIALOG_COMPONENT, NAE_USER_IMPERSONATE_DIALOG_COMPONENT, NAE_NEW_CASE_DIALOG_COMPONENT, NAE_SAVE_FILTER_DIALOG_COMPONENT, NAE_LOAD_FILTER_DIALOG_COMPONENT } from '@netgrif/components-core'; import * as i2 from '@angular/common'; import { CommonModule, AsyncPipe } from '@angular/common'; import * as i3 from '@ngbracket/ngx-layout'; import { FlexModule, FlexLayoutModule } from '@ngbracket/ngx-layout'; import * as i4 from '@ngbracket/ngx-layout/extended'; import * as i5 from '@angular/material/button'; import { MatButtonModule } from '@angular/material/button'; import * as i6 from '@angular/material/divider'; import { MatDividerModule } from '@angular/material/divider'; import * as i7 from '@angular/material/expansion'; import { MatExpansionModule } from '@angular/material/expansion'; import * as i5$1 from '@angular/material/core'; import { MAT_DATE_FORMATS, MAT_DATE_LOCALE, DateAdapter } from '@angular/material/core'; import * as i7$1 from '@angular/material/icon'; import * as i6$1 from '@angular/material/input'; import { MatInputModule } from '@angular/material/input'; import * as i8 from '@angular/material/form-field'; import { MatFormFieldModule } from '@angular/material/form-field'; import * as i12 from '@angular/material/list'; import * as i13 from '@angular/material/progress-bar'; import * as i8$1 from '@angular/material/progress-spinner'; import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; import * as i13$1 from '@angular/material/toolbar'; import * as i6$2 from '@angular/material/tooltip'; import * as i9 from '@angular/cdk/scrolling'; import * as i1$1 from '@angular/forms'; import { NG_VALUE_ACCESSOR, FormsModule, FormControl, ReactiveFormsModule, Validators } from '@angular/forms'; import * as i1$2 from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core'; import * as i2$1 from '@angular/router'; import { RouterModule, ActivatedRoute } from '@angular/router'; import * as i1$3 from '@angular/material/dialog'; import { MatDialogModule, MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog'; import { take, map, filter, tap, startWith } from 'rxjs/operators'; import * as i3$1 from '@angular/platform-browser'; import { BrowserModule } from '@angular/platform-browser'; import * as i4$1 from '@angular/material/card'; import * as i5$2 from '@swimlane/ngx-charts'; import { NgxChartsModule } from '@swimlane/ngx-charts'; import * as i1$4 from '@angular/cdk/portal'; import { ComponentPortal, PortalModule } from '@angular/cdk/portal'; import * as i3$2 from '@angular/material/grid-list'; import { MatGridListModule } from '@angular/material/grid-list'; import * as i15 from 'angular-resize-event'; import { AngularResizeEventModule } from 'angular-resize-event'; import * as i2$3 from '@angular/common/http'; import { HttpClientModule } from '@angular/common/http'; import * as i2$2 from '@angular-material-components/datetime-picker'; import { NGX_MAT_DATE_FORMATS, NgxMatDatetimePickerModule } from '@angular-material-components/datetime-picker'; import { NgxMatMomentModule } from '@angular-material-components/moment-adapter'; import * as i3$3 from '@angular/material/autocomplete'; import * as i5$3 from '@angular/material/select'; import * as i5$4 from '@angular/material/radio'; import * as i6$3 from '@angular/cdk/text-field'; import * as i6$4 from '@covalent/markdown'; import EasyMDE from 'easymde'; import * as marked from 'marked'; import * as i7$2 from 'ngx-quill'; import { QuillModule } from 'ngx-quill'; import * as i5$5 from '@angular/material/datepicker'; import * as i9$1 from '@angular/material/slide-toggle'; import { trigger, state, transition, style, animate } from '@angular/animations'; import * as i9$2 from '@angular/material/menu'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import * as i5$6 from '@angular/material/chips'; import * as i3$4 from '@ngbracket/ngx-layout/grid'; import * as i4$2 from '@angular/material/checkbox'; import * as i6$5 from '@angular/material/sort'; import * as i8$2 from '@angular/material/paginator'; import { MatPaginatorIntl } from '@angular/material/paginator'; import 'hammerjs'; import * as i1$5 from '@angular/cdk/layout'; import * as i8$4 from '@angular/material/sidenav'; import { MatSidenavModule } from '@angular/material/sidenav'; import * as i11 from 'angular-resizable-element'; import { ResizableModule } from 'angular-resizable-element'; import * as i8$3 from '@angular/material/tree'; import { forkJoin, combineLatest, ReplaySubject, BehaviorSubject } from 'rxjs'; import * as i3$5 from '@angular/material/tabs'; import { MatTabsModule } from '@angular/material/tabs'; import * as i6$6 from '@angular/material/badge'; import { STEPPER_GLOBAL_OPTIONS } from '@angular/cdk/stepper'; import * as i3$6 from 'angular2-hotkeys'; import { HotkeyModule, Hotkey } from 'angular2-hotkeys'; import * as i10 from '@angular/material/stepper'; import semver from 'semver'; import { A11yModule } from '@angular/cdk/a11y'; class RoleAssignmentComponent extends AbstractRoleAssignmentComponent { _service; _userService; constructor(_service, _userService) { super(_service, _userService); this._service = _service; this._userService = _userService; } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RoleAssignmentComponent, deps: [{ token: i1.RoleAssignmentService }, { token: i1.UserService }], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: RoleAssignmentComponent, selector: "nc-role-assignment", providers: [ RoleAssignmentService ], usesInheritance: true, ngImport: i0, template: "<div fxLayout=\"row\" fxLayout.lt-sm=\"column\" fxLayoutAlign=\"start center\" class=\"full-height full-width padding-default\">\n\n <div fxLayout=\"column\" fxLayoutAlign=\"start center\" fxFlex=\"49\" class=\"role-height\">\n <ng-container *ngIf=\"users.users$ | async as users_\">\n\n <mat-toolbar color=\"primary\" class=\"min-height-radius\">\n <span matTooltip=\"{{users_.length}}/{{users.totalUsers}}\">\n {{'admin.user-list.listTitle' | translate}}\n </span>\n <div fxFlex=\"5\"></div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"netgrif-input netgrif-input-search-fix netgrif-input-primary-search-fix\">\n <mat-form-field fxFlex=\"100\" class=\"user-assign-search\" color=\"primary\" appearance=\"outline\">\n <mat-icon matPrefix class=\"prefix-icon\">search</mat-icon>\n <mat-label>{{ 'side-menu.user.choose' | translate }}</mat-label>\n <input matInput [formControl]=\"searchUserControl\">\n <button *ngIf=\"searchUserControl.value\" matSuffix mat-icon-button\n (click)=\"searchUserControl.setValue('')\" color=\"warn\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n\n <span style=\"flex: 1 1 auto;\"></span>\n <button disabled mat-icon-button\n matTooltip=\"{{userMultiSelect ? 'Multi selection' : 'Single selection'}}\"\n (click)=\"userMultiSelect = !userMultiSelect\">\n <mat-icon>{{userMultiSelect ? 'group' : 'person'}}</mat-icon>\n </button>\n <button mat-icon-button matTooltip=\"{{ 'side-menu.tooltip.SelectAll' | translate }}\" (click)=\"selectAllUsers(true)\">\n <mat-icon>done_all</mat-icon>\n </button>\n <button mat-icon-button matTooltip=\"{{ 'side-menu.tooltip.DeselectAll' | translate }}\" (click)=\"selectAllUsers(false)\">\n <mat-icon>clear</mat-icon>\n </button>\n </mat-toolbar>\n\n <div *ngIf=\"(users.loading$ | async) === false && users_.length === 0\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"margin-top-x2\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default no-user-icon\">perm_identity</mat-icon>\n <span class=\"font-size-20\">{{ 'admin.user-list.noUsersWereFound' | translate}}</span>\n </div>\n\n <mat-selection-list #userList color=\"primary\" fxFlex=\"100\" class=\"full-width advanced-option-list\">\n\n <cdk-virtual-scroll-viewport itemSize=\"48\" (scrolledIndexChange)=\"loadNextUserPage()\"\n class=\"full-width full-height\">\n <mat-list-option class=\"min-height-option\" *cdkVirtualFor=\"let user of users_; let i = index;\" checkboxPosition=\"before\"\n [selected]=\"user.selected\"\n [value]=\"user\"\n [ngClass]=\"{'list-item-selected':user.selected}\"\n (click)=\"user.toggle();autoSelectRoles()\" fxLayoutAlign=\"start center\" fxLayout=\"row\">\n <h3 matLine class=\"primary-color-line margin-none\">{{user.fullName}}</h3>\n <p matLine class=\"paragraph-fix margin-none\">ID: {{user.id}}, Email: {{user.email}}</p>\n </mat-list-option>\n\n <div *ngIf=\"users.loading$ | async\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <mat-spinner color=\"primary\" diameter=\"50\"></mat-spinner>\n </div>\n\n </cdk-virtual-scroll-viewport>\n\n </mat-selection-list>\n </ng-container>\n </div>\n\n <div fxFlex=\"2\"></div>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"start center\" fxFlex=\"49\" class=\"role-height\">\n\n <mat-toolbar color=\"primary\" class=\"min-height-radius\">\n <span>{{'admin.process-list.listTitle' | translate}}</span>\n <div fxFlex=\"5\"></div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"netgrif-input netgrif-input-search-fix\">\n <mat-form-field fxFlex=\"100\" class=\"user-assign-search\" color=\"primary\" appearance=\"outline\">\n <mat-icon matPrefix class=\"prefix-icon\">search</mat-icon>\n <mat-label>{{ 'side-menu.import-net.search' | translate }}</mat-label>\n <input matInput [formControl]=\"searchNetControl\">\n <button *ngIf=\"searchNetControl.value\" matSuffix mat-icon-button\n (click)=\"searchNetControl.setValue('')\" color=\"warn\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n\n <span style=\"flex: 1 1 auto;\"></span>\n <mat-spinner *ngIf=\"users.updating$ | async\" color=\"accent\" diameter=\"30\"></mat-spinner>\n </mat-toolbar>\n\n <div *ngIf=\"(users.loading$ | async) === false && nets.processes.length === 0\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"margin-top-x2\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default no-user-icon\">timeline</mat-icon>\n <span class=\"font-size-20\">{{ 'admin.process-list.noProcessesWereFound' | translate}}</span>\n </div>\n\n <mat-accordion class=\"full-width margin-top-default process-list-accordion\" multi fxFlex>\n\n <mat-expansion-panel *ngFor=\"let item of filteredProcesses; let last = last;\" (afterExpand)=\"nets.loadProcessItemRoles(item)\"\n (afterCollapse)=\"nets.prepareToTryAgainToLoadRoles(item)\" class=\"panel-body\" [ngClass]=\"{'panel-last':last}\">\n\n <mat-expansion-panel-header class=\"role-header panel-color\">\n <mat-panel-title>\n <mat-icon *ngIf=\"item.someRolesSelected\" color=\"accent\" class=\"margin-right-x2\">tour</mat-icon>\n <span>{{item.initials}} - {{item.title}}</span>\n </mat-panel-title>\n <mat-panel-description class=\"process-item-description\">\n <span\n class=\"process-item-description full-width\">{{'admin.process-list.newestVersion' | translate}}\n : {{item.newestVersion}}</span>\n </mat-panel-description>\n </mat-expansion-panel-header>\n\n <div *ngIf=\"item.loading\" fxFlex=\"100\" class=\"full-width\">\n <mat-progress-bar mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n </div>\n\n <div *ngIf=\"!item.loading && item.emptyRoles\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"full-width full-height net-panel-content\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default\">account_circle</mat-icon>\n <span class=\"font-size-15\">{{ 'admin.process-list.noRoles' | translate}}</span>\n </div>\n\n <div *ngIf=\"!item.loading && !item.emptyRoles\" fxLayout=\"column\" fxLayoutAlign=\"start start\"\n class=\"full-height full-width net-panel-content\">\n\n <div *ngFor=\"let net of item.processes; let first = first\" fxLayout=\"column\"\n fxLayoutAlign=\"start center\" class=\"full-width\">\n <mat-divider *ngIf=\"!first\" style=\"position: relative\"></mat-divider>\n\n <div class=\"full-width\">\n <div fxFlex fxLayoutAlign=\"start center\">\n <h3 class=\"margin-none\" *ngIf=\"first\">{{ 'admin.process-list.roles' | translate}}</h3>\n </div>\n <div fxFlex fxLayoutAlign=\"center center\">\n <button mat-stroked-button matTooltip=\"{{item.someRolesSelected ? 'Deselect All' : 'Select All'}}\"\n (click)=\"toggleAllRoles(net, !item.someRolesSelected)\">\n {{net.version}}\n </button>\n </div>\n <div fxFlex></div>\n </div>\n\n\n <mat-selection-list color=\"accent\" fxLayout=\"row wrap\" fxLayoutAlign=\"start center\"\n class=\"full-width\">\n <mat-list-option *ngFor=\"let role of net.roles\" checkboxPosition=\"before\"\n [selected]=\"role.selected\" (click)=\"role.toggle();update(role)\"\n fxFlex=\"50\">\n <h3 matLine class=\"margin-none\">{{role.name}}</h3>\n </mat-list-option>\n </mat-selection-list>\n </div>\n </div>\n\n </mat-expansion-panel>\n\n </mat-accordion>\n\n <div *ngIf=\"nets.loading$ | async\" fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFlex=\"100\">\n <mat-spinner color=\"primary\" diameter=\"65\"></mat-spinner>\n </div>\n </div>\n</div>\n", styles: [".full-height{height:100%;min-height:100%}.full-width{width:100%;min-width:100%}.padding-default{padding:8px}.padding-half{padding:4px}.padding-x2{padding:16px}.margin-default{margin:8px}.margin-half{margin:4px}.margin-x2{margin:16px}.margin-top-default{margin-top:8px}.margin-top-half{margin-top:4px}.margin-top-x2{margin-top:16px}.margin-bottom-default{margin-bottom:8px}.margin-bottom-half{margin-bottom:4px}.margin-bottom-x2{margin-bottom:16px}.margin-left-default{margin-left:8px}.margin-left-half{margin-left:4px}.margin-left-x2{margin-left:16px}.margin-right-default{margin-right:8px}.margin-right-half{margin-right:4px}.margin-right-x2{margin-right:16px}.user-list-item-margin{margin:4px 0}.net-panel-content{padding-left:24px;padding-right:24px;padding-bottom:24px}.font-size-20{font-size:20px}.font-size-15{font-size:15px}.no-user-icon{font-size:40px;width:40px;height:40px}.process-item-description{text-align:right}.process-list-accordion{overflow-y:auto;padding:0 2px 4px}.process-list-accordion .mat-expansion-panel-spacing{margin:8px 0}.user-assign-search{width:100%;color:#64748b;min-width:250px;border-radius:6px}.search-icon{margin-right:10px}.min-height-radius{min-height:64px;border-radius:8px}.prefix-icon{font-size:22px}.paragraph-fix{word-break:break-all;white-space:pre-wrap!important}.min-height-option{height:auto!important;min-height:48px;padding:3px 0!important}.role-header{min-height:48px!important;height:auto!important}.panel-last{padding-bottom:16px}.margin-none{margin-top:0!important;margin-bottom:0!important}.role-height{height:100%;min-height:100%}@media only screen and (max-width: 599.99px){.role-height{height:50%;min-height:50%;width:100%}}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i3.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i4.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i6.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i7.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i7.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i7.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i7.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i7.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "directive", type: i5$1.MatLine, selector: "[mat-line], [matLine]" }, { kind: "component", type: i7$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i8.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i12.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i12.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "checkboxPosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "component", type: i13.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i8$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i13$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i6$2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i9.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i9.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i9.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }] }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RoleAssignmentComponent, decorators: [{ type: Component, args: [{ selector: 'nc-role-assignment', providers: [ RoleAssignmentService ], template: "<div fxLayout=\"row\" fxLayout.lt-sm=\"column\" fxLayoutAlign=\"start center\" class=\"full-height full-width padding-default\">\n\n <div fxLayout=\"column\" fxLayoutAlign=\"start center\" fxFlex=\"49\" class=\"role-height\">\n <ng-container *ngIf=\"users.users$ | async as users_\">\n\n <mat-toolbar color=\"primary\" class=\"min-height-radius\">\n <span matTooltip=\"{{users_.length}}/{{users.totalUsers}}\">\n {{'admin.user-list.listTitle' | translate}}\n </span>\n <div fxFlex=\"5\"></div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"netgrif-input netgrif-input-search-fix netgrif-input-primary-search-fix\">\n <mat-form-field fxFlex=\"100\" class=\"user-assign-search\" color=\"primary\" appearance=\"outline\">\n <mat-icon matPrefix class=\"prefix-icon\">search</mat-icon>\n <mat-label>{{ 'side-menu.user.choose' | translate }}</mat-label>\n <input matInput [formControl]=\"searchUserControl\">\n <button *ngIf=\"searchUserControl.value\" matSuffix mat-icon-button\n (click)=\"searchUserControl.setValue('')\" color=\"warn\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n\n <span style=\"flex: 1 1 auto;\"></span>\n <button disabled mat-icon-button\n matTooltip=\"{{userMultiSelect ? 'Multi selection' : 'Single selection'}}\"\n (click)=\"userMultiSelect = !userMultiSelect\">\n <mat-icon>{{userMultiSelect ? 'group' : 'person'}}</mat-icon>\n </button>\n <button mat-icon-button matTooltip=\"{{ 'side-menu.tooltip.SelectAll' | translate }}\" (click)=\"selectAllUsers(true)\">\n <mat-icon>done_all</mat-icon>\n </button>\n <button mat-icon-button matTooltip=\"{{ 'side-menu.tooltip.DeselectAll' | translate }}\" (click)=\"selectAllUsers(false)\">\n <mat-icon>clear</mat-icon>\n </button>\n </mat-toolbar>\n\n <div *ngIf=\"(users.loading$ | async) === false && users_.length === 0\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"margin-top-x2\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default no-user-icon\">perm_identity</mat-icon>\n <span class=\"font-size-20\">{{ 'admin.user-list.noUsersWereFound' | translate}}</span>\n </div>\n\n <mat-selection-list #userList color=\"primary\" fxFlex=\"100\" class=\"full-width advanced-option-list\">\n\n <cdk-virtual-scroll-viewport itemSize=\"48\" (scrolledIndexChange)=\"loadNextUserPage()\"\n class=\"full-width full-height\">\n <mat-list-option class=\"min-height-option\" *cdkVirtualFor=\"let user of users_; let i = index;\" checkboxPosition=\"before\"\n [selected]=\"user.selected\"\n [value]=\"user\"\n [ngClass]=\"{'list-item-selected':user.selected}\"\n (click)=\"user.toggle();autoSelectRoles()\" fxLayoutAlign=\"start center\" fxLayout=\"row\">\n <h3 matLine class=\"primary-color-line margin-none\">{{user.fullName}}</h3>\n <p matLine class=\"paragraph-fix margin-none\">ID: {{user.id}}, Email: {{user.email}}</p>\n </mat-list-option>\n\n <div *ngIf=\"users.loading$ | async\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <mat-spinner color=\"primary\" diameter=\"50\"></mat-spinner>\n </div>\n\n </cdk-virtual-scroll-viewport>\n\n </mat-selection-list>\n </ng-container>\n </div>\n\n <div fxFlex=\"2\"></div>\n\n <div fxLayout=\"column\" fxLayoutAlign=\"start center\" fxFlex=\"49\" class=\"role-height\">\n\n <mat-toolbar color=\"primary\" class=\"min-height-radius\">\n <span>{{'admin.process-list.listTitle' | translate}}</span>\n <div fxFlex=\"5\"></div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"netgrif-input netgrif-input-search-fix\">\n <mat-form-field fxFlex=\"100\" class=\"user-assign-search\" color=\"primary\" appearance=\"outline\">\n <mat-icon matPrefix class=\"prefix-icon\">search</mat-icon>\n <mat-label>{{ 'side-menu.import-net.search' | translate }}</mat-label>\n <input matInput [formControl]=\"searchNetControl\">\n <button *ngIf=\"searchNetControl.value\" matSuffix mat-icon-button\n (click)=\"searchNetControl.setValue('')\" color=\"warn\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n\n <span style=\"flex: 1 1 auto;\"></span>\n <mat-spinner *ngIf=\"users.updating$ | async\" color=\"accent\" diameter=\"30\"></mat-spinner>\n </mat-toolbar>\n\n <div *ngIf=\"(users.loading$ | async) === false && nets.processes.length === 0\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"margin-top-x2\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default no-user-icon\">timeline</mat-icon>\n <span class=\"font-size-20\">{{ 'admin.process-list.noProcessesWereFound' | translate}}</span>\n </div>\n\n <mat-accordion class=\"full-width margin-top-default process-list-accordion\" multi fxFlex>\n\n <mat-expansion-panel *ngFor=\"let item of filteredProcesses; let last = last;\" (afterExpand)=\"nets.loadProcessItemRoles(item)\"\n (afterCollapse)=\"nets.prepareToTryAgainToLoadRoles(item)\" class=\"panel-body\" [ngClass]=\"{'panel-last':last}\">\n\n <mat-expansion-panel-header class=\"role-header panel-color\">\n <mat-panel-title>\n <mat-icon *ngIf=\"item.someRolesSelected\" color=\"accent\" class=\"margin-right-x2\">tour</mat-icon>\n <span>{{item.initials}} - {{item.title}}</span>\n </mat-panel-title>\n <mat-panel-description class=\"process-item-description\">\n <span\n class=\"process-item-description full-width\">{{'admin.process-list.newestVersion' | translate}}\n : {{item.newestVersion}}</span>\n </mat-panel-description>\n </mat-expansion-panel-header>\n\n <div *ngIf=\"item.loading\" fxFlex=\"100\" class=\"full-width\">\n <mat-progress-bar mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n </div>\n\n <div *ngIf=\"!item.loading && item.emptyRoles\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"full-width full-height net-panel-content\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default\">account_circle</mat-icon>\n <span class=\"font-size-15\">{{ 'admin.process-list.noRoles' | translate}}</span>\n </div>\n\n <div *ngIf=\"!item.loading && !item.emptyRoles\" fxLayout=\"column\" fxLayoutAlign=\"start start\"\n class=\"full-height full-width net-panel-content\">\n\n <div *ngFor=\"let net of item.processes; let first = first\" fxLayout=\"column\"\n fxLayoutAlign=\"start center\" class=\"full-width\">\n <mat-divider *ngIf=\"!first\" style=\"position: relative\"></mat-divider>\n\n <div class=\"full-width\">\n <div fxFlex fxLayoutAlign=\"start center\">\n <h3 class=\"margin-none\" *ngIf=\"first\">{{ 'admin.process-list.roles' | translate}}</h3>\n </div>\n <div fxFlex fxLayoutAlign=\"center center\">\n <button mat-stroked-button matTooltip=\"{{item.someRolesSelected ? 'Deselect All' : 'Select All'}}\"\n (click)=\"toggleAllRoles(net, !item.someRolesSelected)\">\n {{net.version}}\n </button>\n </div>\n <div fxFlex></div>\n </div>\n\n\n <mat-selection-list color=\"accent\" fxLayout=\"row wrap\" fxLayoutAlign=\"start center\"\n class=\"full-width\">\n <mat-list-option *ngFor=\"let role of net.roles\" checkboxPosition=\"before\"\n [selected]=\"role.selected\" (click)=\"role.toggle();update(role)\"\n fxFlex=\"50\">\n <h3 matLine class=\"margin-none\">{{role.name}}</h3>\n </mat-list-option>\n </mat-selection-list>\n </div>\n </div>\n\n </mat-expansion-panel>\n\n </mat-accordion>\n\n <div *ngIf=\"nets.loading$ | async\" fxLayout=\"column\" fxLayoutAlign=\"center center\" fxFlex=\"100\">\n <mat-spinner color=\"primary\" diameter=\"65\"></mat-spinner>\n </div>\n </div>\n</div>\n", styles: [".full-height{height:100%;min-height:100%}.full-width{width:100%;min-width:100%}.padding-default{padding:8px}.padding-half{padding:4px}.padding-x2{padding:16px}.margin-default{margin:8px}.margin-half{margin:4px}.margin-x2{margin:16px}.margin-top-default{margin-top:8px}.margin-top-half{margin-top:4px}.margin-top-x2{margin-top:16px}.margin-bottom-default{margin-bottom:8px}.margin-bottom-half{margin-bottom:4px}.margin-bottom-x2{margin-bottom:16px}.margin-left-default{margin-left:8px}.margin-left-half{margin-left:4px}.margin-left-x2{margin-left:16px}.margin-right-default{margin-right:8px}.margin-right-half{margin-right:4px}.margin-right-x2{margin-right:16px}.user-list-item-margin{margin:4px 0}.net-panel-content{padding-left:24px;padding-right:24px;padding-bottom:24px}.font-size-20{font-size:20px}.font-size-15{font-size:15px}.no-user-icon{font-size:40px;width:40px;height:40px}.process-item-description{text-align:right}.process-list-accordion{overflow-y:auto;padding:0 2px 4px}.process-list-accordion .mat-expansion-panel-spacing{margin:8px 0}.user-assign-search{width:100%;color:#64748b;min-width:250px;border-radius:6px}.search-icon{margin-right:10px}.min-height-radius{min-height:64px;border-radius:8px}.prefix-icon{font-size:22px}.paragraph-fix{word-break:break-all;white-space:pre-wrap!important}.min-height-option{height:auto!important;min-height:48px;padding:3px 0!important}.role-header{min-height:48px!important;height:auto!important}.panel-last{padding-bottom:16px}.margin-none{margin-top:0!important;margin-bottom:0!important}.role-height{height:100%;min-height:100%}@media only screen and (max-width: 599.99px){.role-height{height:50%;min-height:50%;width:100%}}\n"] }] }], ctorParameters: () => [{ type: i1.RoleAssignmentService }, { type: i1.UserService }] }); class LdapGroupRoleAssignmentComponent extends AbstractLdapGroupRoleAssignmentComponent { _service; constructor(_service) { super(_service); this._service = _service; } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LdapGroupRoleAssignmentComponent, deps: [{ token: i1.RoleAssignmentLdapGroupService }], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LdapGroupRoleAssignmentComponent, selector: "nc-ldap-group-role-assignment", providers: [ RoleAssignmentLdapGroupService ], usesInheritance: true, ngImport: i0, template: "<div fxLayout=\"row\" fxLayout.lt-sm=\"column\" fxLayoutAlign=\"start center\" class=\"full-height full-width padding-default\">\n\n <div fxLayout=\"column\" fxLayoutAlign=\"start center\" fxFlex=\"49\" class=\"role-height\">\n <ng-container *ngIf=\"ldapGroup.ldapGroups$ | async as ldapGroups_\">\n\n <mat-toolbar color=\"primary\" class=\"min-height-radius\">\n <span matTooltip=\"{{ldapGroups_.length}}/{{ldapGroup.totalLdapGroups}}\">\n {{'admin.ldapGroup-list.count' | translate }}: {{ldapGroups_.length}}\n </span>\n <div fxFlex=\"5\"></div>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"netgrif-input netgrif-input-search-fix netgrif-input-primary-search-fix\">\n <mat-form-field fxFlex=\"100\" class=\"ldapGroup-assign-search\" color=\"primary\" appearance=\"outline\">\n <mat-icon matPrefix class=\"prefix-icon\">search</mat-icon>\n <input matInput [formControl]=\"searchLdapGroupControl\" placeholder=\"{{ 'side-menu.ldapGroup.choose' | translate }}\">\n <button color=\"warn\" *ngIf=\"searchLdapGroupControl.value\" matSuffix mat-icon-button\n (click)=\"searchLdapGroupControl.setValue('')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n\n <span style=\"flex: 1 1 auto;\"></span>\n <button mat-icon-button matTooltip=\"{{ 'side-menu.tooltip.SelectAll' | translate }}\" (click)=\"selectAllLdapGroup(true)\">\n <mat-icon>done_all</mat-icon>\n </button>\n <button mat-icon-button matTooltip=\"{{ 'side-menu.tooltip.DeselectAll' | translate }}\" (click)=\"selectAllLdapGroup(false)\">\n <mat-icon>clear</mat-icon>\n </button>\n </mat-toolbar>\n\n <div *ngIf=\"(ldapGroup.loading$ | async) === false && ldapGroups_.length === 0\" fxLayout=\"column\"\n fxLayoutAlign=\"center center\" fxFlex class=\"margin-top-x2\">\n <mat-icon color=\"accent\" class=\"margin-bottom-default no-ldapGroup-icon\">perm_identity</mat-icon>\n <span class=\"font-size-20\">{{ 'admin.ldapGroup-list.noLdapGroupsWereFound' | translate}}</span>\n </div>\n\n <mat-selection-list #ldapGroupList color=\"primary\" fxFlex=\"100\" class=\"full-width advanced-option-list\">\n\n <cdk-virtual-scroll-viewport itemSize=\"48\" (scrolledIndexChange)=\"loadNextLdapGroupPage()\"\n class=\"full-width full-height\">\n <mat-list-option class=\"min-height-option\" *cdkVirtualFor=\"let ldapGroup of ldapGroups_; let i = index;\" checkboxPosition=\"before\"\n [selected]=\"ldapGroup.selected\"\n [value]=\"ldapGroup\"\n [ngClass]=\"{'list-item-selected':ldapGroup.selected}\"\n (click)=\"ldapGroup.toggle();autoSelectRoles()\" fxLayoutAlign=\"start center\" fxLayout=\"row\">\n <h3 matLine class=\"primary-color-line margin-none\">{{ldapGroup.cn}}</h3>\n <p *ngIf=\"ldapGroup.description !== undefined\" matLine class=\"paragraph-fix margin-none\">DN: {{ldapGroup.dn}}, Description: {{ldapGroup.description}}</p>\n