UNPKG

@alfresco/adf-content-services

Version:
126 lines 13.6 kB
/*! * @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. */ /* eslint-disable @angular-eslint/no-input-rename */ import { ChangeDetectorRef, Directive, ElementRef, Host, Inject, Input, Optional, Renderer2 } from '@angular/core'; import { EXTENDIBLE_COMPONENT } from '@alfresco/adf-core'; import { ContentService } from '../common/services/content.service'; import * as i0 from "@angular/core"; import * as i1 from "../common/services/content.service"; export class CheckAllowableOperationDirective { constructor(elementRef, renderer, contentService, changeDetector, parentComponent) { this.elementRef = elementRef; this.renderer = renderer; this.contentService = contentService; this.changeDetector = changeDetector; this.parentComponent = parentComponent; /** * Node permission to check (create, delete, update, updatePermissions, * !create, !delete, !update, !updatePermissions). */ this.permission = null; /** Nodes to check permission for. */ this.nodes = []; } ngOnChanges(changes) { if (changes.nodes && !changes.nodes.firstChange) { this.updateElement(); } } /** * Updates disabled state for the decorated element * * @returns the new state */ updateElement() { const enable = this.hasAllowableOperations(this.nodes, this.permission); if (enable) { this.enable(); } else { this.disable(); } return enable; } enable() { if (this.parentComponent) { this.parentComponent.disabled = false; this.changeDetector.detectChanges(); } else { this.enableElement(); } } disable() { if (this.parentComponent) { this.parentComponent.disabled = true; this.changeDetector.detectChanges(); } else { this.disableElement(); } } /** * Enables decorated element * */ enableElement() { this.renderer.removeAttribute(this.elementRef.nativeElement, 'disabled'); } /** * Disables decorated element * */ disableElement() { this.renderer.setAttribute(this.elementRef.nativeElement, 'disabled', 'true'); } /** * Checks whether all nodes have a particular permission * * @param nodes Node collection to check * @param permission Permission to check for each node * @returns `true` if there are allowable operations, otherwise `false` */ hasAllowableOperations(nodes, permission) { if (nodes && nodes.length > 0) { return nodes.every((node) => this.contentService.hasAllowableOperations(node.entry, permission)); } return false; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: CheckAllowableOperationDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.ContentService }, { token: i0.ChangeDetectorRef }, { token: EXTENDIBLE_COMPONENT, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.3", type: CheckAllowableOperationDirective, isStandalone: true, selector: "[adf-check-allowable-operation]", inputs: { permission: ["adf-check-allowable-operation", "permission"], nodes: ["adf-nodes", "nodes"] }, usesOnChanges: true, ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: CheckAllowableOperationDirective, decorators: [{ type: Directive, args: [{ standalone: true, selector: '[adf-check-allowable-operation]' }] }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.ContentService }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{ type: Host }, { type: Optional }, { type: Inject, args: [EXTENDIBLE_COMPONENT] }] }], propDecorators: { permission: [{ type: Input, args: ['adf-check-allowable-operation'] }], nodes: [{ type: Input, args: ['adf-nodes'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stYWxsb3dhYmxlLW9wZXJhdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL2RpcmVjdGl2ZXMvY2hlY2stYWxsb3dhYmxlLW9wZXJhdGlvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsb0RBQW9EO0FBRXBELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFhLFFBQVEsRUFBRSxTQUFTLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRTdJLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7O0FBT3BFLE1BQU0sT0FBTyxnQ0FBZ0M7SUFZekMsWUFDWSxVQUFzQixFQUN0QixRQUFtQixFQUNuQixjQUE4QixFQUM5QixjQUFpQyxFQUtqQyxlQUErQztRQVIvQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUtqQyxvQkFBZSxHQUFmLGVBQWUsQ0FBZ0M7UUFwQjNEOzs7V0FHRztRQUVILGVBQVUsR0FBVyxJQUFJLENBQUM7UUFFMUIscUNBQXFDO1FBRXJDLFVBQUssR0FBZ0IsRUFBRSxDQUFDO0lBWXJCLENBQUM7SUFFSixXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM5QyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekIsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsYUFBYTtRQUNULE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV4RSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xCLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25CLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU8sTUFBTTtRQUNWLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN0QyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3hDLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pCLENBQUM7SUFDTCxDQUFDO0lBRU8sT0FBTztRQUNYLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNyQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3hDLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzFCLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsYUFBYTtRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxjQUFjO1FBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxzQkFBc0IsQ0FBQyxLQUFrQixFQUFFLFVBQWtCO1FBQ3pELElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUIsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUNyRyxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQzs4R0E5RlEsZ0NBQWdDLG9JQW9CN0Isb0JBQW9CO2tHQXBCdkIsZ0NBQWdDOzsyRkFBaEMsZ0NBQWdDO2tCQUo1QyxTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsaUNBQWlDO2lCQUM5Qzs7MEJBbUJRLElBQUk7OzBCQUNKLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsb0JBQW9CO3lDQWRoQyxVQUFVO3NCQURULEtBQUs7dUJBQUMsK0JBQStCO2dCQUt0QyxLQUFLO3NCQURKLEtBQUs7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZSAqL1xuXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0LCBJbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9wdGlvbmFsLCBSZW5kZXJlcjIsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vZGVFbnRyeSB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgRVhURU5ESUJMRV9DT01QT05FTlQgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgQ29udGVudFNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vc2VydmljZXMvY29udGVudC5zZXJ2aWNlJztcbmltcG9ydCB7IE5vZGVBbGxvd2FibGVPcGVyYXRpb25TdWJqZWN0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ub2RlLWFsbG93YWJsZS1vcGVyYXRpb24tc3ViamVjdC5pbnRlcmZhY2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW2FkZi1jaGVjay1hbGxvd2FibGUtb3BlcmF0aW9uXSdcbn0pXG5leHBvcnQgY2xhc3MgQ2hlY2tBbGxvd2FibGVPcGVyYXRpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIC8qKlxuICAgICAqIE5vZGUgcGVybWlzc2lvbiB0byBjaGVjayAoY3JlYXRlLCBkZWxldGUsIHVwZGF0ZSwgdXBkYXRlUGVybWlzc2lvbnMsXG4gICAgICogIWNyZWF0ZSwgIWRlbGV0ZSwgIXVwZGF0ZSwgIXVwZGF0ZVBlcm1pc3Npb25zKS5cbiAgICAgKi9cbiAgICBASW5wdXQoJ2FkZi1jaGVjay1hbGxvd2FibGUtb3BlcmF0aW9uJylcbiAgICBwZXJtaXNzaW9uOiBzdHJpbmcgPSBudWxsO1xuXG4gICAgLyoqIE5vZGVzIHRvIGNoZWNrIHBlcm1pc3Npb24gZm9yLiAqL1xuICAgIEBJbnB1dCgnYWRmLW5vZGVzJylcbiAgICBub2RlczogTm9kZUVudHJ5W10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSBjb250ZW50U2VydmljZTogQ29udGVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuXG4gICAgICAgIEBIb3N0KClcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQEluamVjdChFWFRFTkRJQkxFX0NPTVBPTkVOVClcbiAgICAgICAgcHJpdmF0ZSBwYXJlbnRDb21wb25lbnQ/OiBOb2RlQWxsb3dhYmxlT3BlcmF0aW9uU3ViamVjdFxuICAgICkge31cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKGNoYW5nZXMubm9kZXMgJiYgIWNoYW5nZXMubm9kZXMuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRWxlbWVudCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyBkaXNhYmxlZCBzdGF0ZSBmb3IgdGhlIGRlY29yYXRlZCBlbGVtZW50XG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB0aGUgbmV3IHN0YXRlXG4gICAgICovXG4gICAgdXBkYXRlRWxlbWVudCgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZW5hYmxlID0gdGhpcy5oYXNBbGxvd2FibGVPcGVyYXRpb25zKHRoaXMubm9kZXMsIHRoaXMucGVybWlzc2lvbik7XG5cbiAgICAgICAgaWYgKGVuYWJsZSkge1xuICAgICAgICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVuYWJsZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGVuYWJsZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucGFyZW50Q29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudENvbXBvbmVudC5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZUVsZW1lbnQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZGlzYWJsZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucGFyZW50Q29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudENvbXBvbmVudC5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZUVsZW1lbnQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVuYWJsZXMgZGVjb3JhdGVkIGVsZW1lbnRcbiAgICAgKlxuICAgICAqL1xuICAgIGVuYWJsZUVsZW1lbnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZGlzYWJsZWQnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEaXNhYmxlcyBkZWNvcmF0ZWQgZWxlbWVudFxuICAgICAqXG4gICAgICovXG4gICAgZGlzYWJsZUVsZW1lbnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZGlzYWJsZWQnLCAndHJ1ZScpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyB3aGV0aGVyIGFsbCBub2RlcyBoYXZlIGEgcGFydGljdWxhciBwZXJtaXNzaW9uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gIG5vZGVzIE5vZGUgY29sbGVjdGlvbiB0byBjaGVja1xuICAgICAqIEBwYXJhbSAgcGVybWlzc2lvbiBQZXJtaXNzaW9uIHRvIGNoZWNrIGZvciBlYWNoIG5vZGVcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlcmUgYXJlIGFsbG93YWJsZSBvcGVyYXRpb25zLCBvdGhlcndpc2UgYGZhbHNlYFxuICAgICAqL1xuICAgIGhhc0FsbG93YWJsZU9wZXJhdGlvbnMobm9kZXM6IE5vZGVFbnRyeVtdLCBwZXJtaXNzaW9uOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKG5vZGVzICYmIG5vZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBub2Rlcy5ldmVyeSgobm9kZSkgPT4gdGhpcy5jb250ZW50U2VydmljZS5oYXNBbGxvd2FibGVPcGVyYXRpb25zKG5vZGUuZW50cnksIHBlcm1pc3Npb24pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG4iXX0=