@alfresco/adf-content-services
Version:
Alfresco ADF content services
88 lines • 14.5 kB
JavaScript
/*!
* @license
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { InitialUsernamePipe, User } from '@alfresco/adf-core';
import { NodeEntry } from '@alfresco/js-api';
import { Component, Input, ViewEncapsulation } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import { NodePermissionService } from '../../services/node-permission.service';
import { CommonModule } from '@angular/common';
import { MatIconModule } from '@angular/material/icon';
import * as i0 from "@angular/core";
import * as i1 from "../../services/node-permission.service";
import * as i2 from "@angular/common";
import * as i3 from "@angular/material/icon";
export class UserIconColumnComponent {
get isSelected() {
return this.context?.row?.isSelected || this.selected;
}
constructor(nodePermissionService) {
this.nodePermissionService = nodePermissionService;
this.selected = false;
this.displayText$ = new BehaviorSubject(null);
this.group = false;
}
ngOnInit() {
if (this.context) {
const { person, group, authorityId } = this.context.row.obj?.entry ?? this.context.row.obj;
this.group = this.isGroup(group, authorityId);
const user = person ? new User(person) : undefined;
this.displayText$.next(user || group || { displayName: authorityId });
}
if (this.node) {
const { person, group } = this.nodePermissionService.transformNodeToUserPerson(this.node.entry);
this.group = this.isGroup(group, null);
const user = person ? new User(person) : undefined;
this.displayText$.next(user || group);
}
}
isGroup(group, authorityId) {
return !!group || authorityId?.startsWith('GROUP_') || authorityId?.startsWith('ROLE_');
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: UserIconColumnComponent, deps: [{ token: i1.NodePermissionService }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: UserIconColumnComponent, isStandalone: true, selector: "adf-user-icon-column", inputs: { context: "context", node: "node", selected: "selected" }, host: { classAttribute: "adf-user-icon-column adf-datatable-content-cell" }, ngImport: i0, template: `
<div class="adf-cell-value" [attr.id]="group ? 'group-icon' : 'person-icon'" *ngIf="!isSelected">
<ng-container *ngIf="displayText$ | async as user">
<mat-icon *ngIf="group" class="adf-group-icon">people_alt_outline</mat-icon>
<div *ngIf="!group" [outerHTML]="user | usernameInitials : 'adf-people-initial'"></div>
</ng-container>
</div>
<div class="adf-cell-value" *ngIf="isSelected">
<mat-icon class="adf-people-select-icon adf-datatable-selected" svgIcon="selected" />
</div>
`, isInline: true, styles: [".adf-cell-value .adf-people-initial{background:var(--theme-primary-color);border-radius:50%;display:flex;justify-content:center;align-items:center;width:40px;height:40px;color:var(--theme-primary-color-default-contrast);font-weight:bolder;font-size:var(--theme-adf-picture-1-font-size);text-transform:uppercase}.adf-cell-value .adf-group-icon{height:20px;width:20px;background:var(--theme-primary-color);border-radius:50%;padding:10px;color:var(--theme-primary-color-default-contrast);font-weight:bolder;font-size:var(--theme-title-font-size)}.adf-cell-value .adf-datatable-selected{height:100%;width:100%;margin-left:-2px;margin-top:2px}.adf-cell-value .adf-people-select-icon{margin:0}.adf-cell-value .adf-people-select-icon svg{fill:var(--theme-accent-color);width:40px;height:40px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: InitialUsernamePipe, name: "usernameInitials" }], encapsulation: i0.ViewEncapsulation.None }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: UserIconColumnComponent, decorators: [{
type: Component,
args: [{ selector: 'adf-user-icon-column', standalone: true, imports: [CommonModule, MatIconModule, InitialUsernamePipe], template: `
<div class="adf-cell-value" [attr.id]="group ? 'group-icon' : 'person-icon'" *ngIf="!isSelected">
<ng-container *ngIf="displayText$ | async as user">
<mat-icon *ngIf="group" class="adf-group-icon">people_alt_outline</mat-icon>
<div *ngIf="!group" [outerHTML]="user | usernameInitials : 'adf-people-initial'"></div>
</ng-container>
</div>
<div class="adf-cell-value" *ngIf="isSelected">
<mat-icon class="adf-people-select-icon adf-datatable-selected" svgIcon="selected" />
</div>
`, encapsulation: ViewEncapsulation.None, host: { class: 'adf-user-icon-column adf-datatable-content-cell' }, styles: [".adf-cell-value .adf-people-initial{background:var(--theme-primary-color);border-radius:50%;display:flex;justify-content:center;align-items:center;width:40px;height:40px;color:var(--theme-primary-color-default-contrast);font-weight:bolder;font-size:var(--theme-adf-picture-1-font-size);text-transform:uppercase}.adf-cell-value .adf-group-icon{height:20px;width:20px;background:var(--theme-primary-color);border-radius:50%;padding:10px;color:var(--theme-primary-color-default-contrast);font-weight:bolder;font-size:var(--theme-title-font-size)}.adf-cell-value .adf-datatable-selected{height:100%;width:100%;margin-left:-2px;margin-top:2px}.adf-cell-value .adf-people-select-icon{margin:0}.adf-cell-value .adf-people-select-icon svg{fill:var(--theme-accent-color);width:40px;height:40px}\n"] }]
}], ctorParameters: () => [{ type: i1.NodePermissionService }], propDecorators: { context: [{
type: Input
}], node: [{
type: Input
}], selected: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1pY29uLWNvbHVtbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL3Blcm1pc3Npb24tbWFuYWdlci9jb21wb25lbnRzL3VzZXItaWNvbi1jb2x1bW4vdXNlci1pY29uLWNvbHVtbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9ELE9BQU8sRUFBUyxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBcUJ2RCxNQUFNLE9BQU8sdUJBQXVCO0lBYWhDLElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDMUQsQ0FBQztJQUVELFlBQW9CLHFCQUE0QztRQUE1QywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBVGhFLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFMUIsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBZSxJQUFJLENBQUMsQ0FBQztRQUN2RCxVQUFLLEdBQUcsS0FBSyxDQUFDO0lBTXFELENBQUM7SUFFcEUsUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2YsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7WUFDM0YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztZQUM5QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDbkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNaLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN2QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDbkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxDQUFDO1FBQzFDLENBQUM7SUFDTCxDQUFDO0lBRU8sT0FBTyxDQUFDLEtBQUssRUFBRSxXQUFXO1FBQzlCLE9BQU8sQ0FBQyxDQUFDLEtBQUssSUFBSSxXQUFXLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLFdBQVcsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUYsQ0FBQzs4R0FyQ1EsdUJBQXVCO2tHQUF2Qix1QkFBdUIsaU9BZnRCOzs7Ozs7Ozs7O0tBVVQsNDFCQVhTLFlBQVksdUxBQUUsYUFBYSwrS0FBRSxtQkFBbUI7OzJGQWdCakQsdUJBQXVCO2tCQW5CbkMsU0FBUzsrQkFDSSxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsQ0FBQyxZQUNqRDs7Ozs7Ozs7OztLQVVULGlCQUVjLGlCQUFpQixDQUFDLElBQUksUUFDL0IsRUFBRSxLQUFLLEVBQUUsaURBQWlELEVBQUU7MEZBSWxFLE9BQU87c0JBRE4sS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBJbml0aWFsVXNlcm5hbWVQaXBlLCBVc2VyIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IEdyb3VwLCBOb2RlRW50cnkgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTm9kZVBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbm9kZS1wZXJtaXNzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhZGYtdXNlci1pY29uLWNvbHVtbicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBJbml0aWFsVXNlcm5hbWVQaXBlXSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLWNlbGwtdmFsdWVcIiBbYXR0ci5pZF09XCJncm91cCA/ICdncm91cC1pY29uJyA6ICdwZXJzb24taWNvbidcIiAqbmdJZj1cIiFpc1NlbGVjdGVkXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheVRleHQkIHwgYXN5bmMgYXMgdXNlclwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImdyb3VwXCIgY2xhc3M9XCJhZGYtZ3JvdXAtaWNvblwiPnBlb3BsZV9hbHRfb3V0bGluZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFncm91cFwiIFtvdXRlckhUTUxdPVwidXNlciB8IHVzZXJuYW1lSW5pdGlhbHMgOiAnYWRmLXBlb3BsZS1pbml0aWFsJ1wiPjwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLWNlbGwtdmFsdWVcIiAqbmdJZj1cImlzU2VsZWN0ZWRcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImFkZi1wZW9wbGUtc2VsZWN0LWljb24gYWRmLWRhdGF0YWJsZS1zZWxlY3RlZFwiIHN2Z0ljb249XCJzZWxlY3RlZFwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgc3R5bGVVcmxzOiBbJy4vdXNlci1pY29uLWNvbHVtbi5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDogeyBjbGFzczogJ2FkZi11c2VyLWljb24tY29sdW1uIGFkZi1kYXRhdGFibGUtY29udGVudC1jZWxsJyB9XG59KVxuZXhwb3J0IGNsYXNzIFVzZXJJY29uQ29sdW1uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKVxuICAgIGNvbnRleHQ6IGFueTtcblxuICAgIEBJbnB1dCgpXG4gICAgbm9kZTogTm9kZUVudHJ5O1xuXG4gICAgQElucHV0KClcbiAgICBzZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgZGlzcGxheVRleHQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxVc2VyIHwgR3JvdXA+KG51bGwpO1xuICAgIGdyb3VwID0gZmFsc2U7XG5cbiAgICBnZXQgaXNTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGV4dD8ucm93Py5pc1NlbGVjdGVkIHx8IHRoaXMuc2VsZWN0ZWQ7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBub2RlUGVybWlzc2lvblNlcnZpY2U6IE5vZGVQZXJtaXNzaW9uU2VydmljZSkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy5jb250ZXh0KSB7XG4gICAgICAgICAgICBjb25zdCB7IHBlcnNvbiwgZ3JvdXAsIGF1dGhvcml0eUlkIH0gPSB0aGlzLmNvbnRleHQucm93Lm9iaj8uZW50cnkgPz8gdGhpcy5jb250ZXh0LnJvdy5vYmo7XG4gICAgICAgICAgICB0aGlzLmdyb3VwID0gdGhpcy5pc0dyb3VwKGdyb3VwLCBhdXRob3JpdHlJZCk7XG4gICAgICAgICAgICBjb25zdCB1c2VyID0gcGVyc29uID8gbmV3IFVzZXIocGVyc29uKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVRleHQkLm5leHQodXNlciB8fCBncm91cCB8fCB7IGRpc3BsYXlOYW1lOiBhdXRob3JpdHlJZCB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm5vZGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgcGVyc29uLCBncm91cCB9ID0gdGhpcy5ub2RlUGVybWlzc2lvblNlcnZpY2UudHJhbnNmb3JtTm9kZVRvVXNlclBlcnNvbih0aGlzLm5vZGUuZW50cnkpO1xuICAgICAgICAgICAgdGhpcy5ncm91cCA9IHRoaXMuaXNHcm91cChncm91cCwgbnVsbCk7XG4gICAgICAgICAgICBjb25zdCB1c2VyID0gcGVyc29uID8gbmV3IFVzZXIocGVyc29uKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVRleHQkLm5leHQodXNlciB8fCBncm91cCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzR3JvdXAoZ3JvdXAsIGF1dGhvcml0eUlkKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIWdyb3VwIHx8IGF1dGhvcml0eUlkPy5zdGFydHNXaXRoKCdHUk9VUF8nKSB8fCBhdXRob3JpdHlJZD8uc3RhcnRzV2l0aCgnUk9MRV8nKTtcbiAgICB9XG59XG4iXX0=