UNPKG

@alfresco/adf-content-services

Version:
114 lines 13.3 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. */ import { Directive, HostListener, Input, Output, EventEmitter } from '@angular/core'; import { FavoritesApi } from '@alfresco/js-api'; import { AlfrescoApiService } from '../services/alfresco-api.service'; import * as i0 from "@angular/core"; import * as i1 from "../services/alfresco-api.service"; export class LibraryFavoriteDirective { get favoritesApi() { this._favoritesApi = this._favoritesApi ?? new FavoritesApi(this.alfrescoApiService.getInstance()); return this._favoritesApi; } onClick() { const guid = this.targetLibrary.entry.guid; if (this.targetLibrary.isFavorite) { this.removeFavorite(guid); } else { this.addFavorite({ target: { site: { guid } } }); } } constructor(alfrescoApiService) { this.alfrescoApiService = alfrescoApiService; this.library = null; this.toggle = new EventEmitter(); // eslint-disable-next-line @angular-eslint/no-output-native this.error = new EventEmitter(); this.targetLibrary = null; } ngOnChanges(changes) { if (!changes.library.currentValue) { this.targetLibrary = null; return; } this.targetLibrary = changes.library.currentValue; this.markFavoriteLibrary(changes.library.currentValue); } isFavorite() { return this.targetLibrary?.isFavorite; } async markFavoriteLibrary(library) { if (this.targetLibrary.isFavorite === undefined) { try { await this.favoritesApi.getFavoriteSite('-me-', library.entry.id); this.targetLibrary.isFavorite = true; } catch { this.targetLibrary.isFavorite = false; } } else { this.targetLibrary = library; } } addFavorite(favoriteBody) { this.favoritesApi .createFavorite('-me-', favoriteBody) .then((libraryEntry) => { this.targetLibrary.isFavorite = true; this.toggle.emit(libraryEntry); }) .catch((error) => this.error.emit(error)); } removeFavorite(favoriteId) { this.favoritesApi .deleteFavorite('-me-', favoriteId) .then((libraryBody) => { this.targetLibrary.isFavorite = false; this.toggle.emit(libraryBody); }) .catch((error) => this.error.emit(error)); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: LibraryFavoriteDirective, deps: [{ token: i1.AlfrescoApiService }], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.3", type: LibraryFavoriteDirective, isStandalone: true, selector: "[adf-favorite-library]", inputs: { library: ["adf-favorite-library", "library"] }, outputs: { toggle: "toggle", error: "error" }, host: { listeners: { "click": "onClick()" } }, exportAs: ["favoriteLibrary"], usesOnChanges: true, ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: LibraryFavoriteDirective, decorators: [{ type: Directive, args: [{ standalone: true, selector: '[adf-favorite-library]', exportAs: 'favoriteLibrary' }] }], ctorParameters: () => [{ type: i1.AlfrescoApiService }], propDecorators: { library: [{ type: Input, args: ['adf-favorite-library'] }], toggle: [{ type: Output }], error: [{ type: Output }], onClick: [{ type: HostListener, args: ['click'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlicmFyeS1mYXZvcml0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL2RpcmVjdGl2ZXMvbGlicmFyeS1mYXZvcml0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxZQUFZLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBc0IsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7OztBQVF0RSxNQUFNLE9BQU8sd0JBQXdCO0lBV2pDLElBQUksWUFBWTtRQUNaLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNuRyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUdELE9BQU87UUFDSCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFFM0MsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsV0FBVyxDQUFDO2dCQUNiLE1BQU0sRUFBRTtvQkFDSixJQUFJLEVBQUU7d0JBQ0YsSUFBSTtxQkFDUDtpQkFDSjthQUNKLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBb0Isa0JBQXNDO1FBQXRDLHVCQUFrQixHQUFs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dGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmF2b3JpdGVCb2R5Q3JlYXRlLCBGYXZvcml0ZXNBcGkgfSBmcm9tICdAYWxmcmVzY28vanMtYXBpJztcbmltcG9ydCB7IEFsZnJlc2NvQXBpU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FsZnJlc2NvLWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IExpYnJhcnlFbnRpdHkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2xpYnJhcnktZW50aXR5LmludGVyZmFjZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdbYWRmLWZhdm9yaXRlLWxpYnJhcnldJyxcbiAgICBleHBvcnRBczogJ2Zhdm9yaXRlTGlicmFyeSdcbn0pXG5leHBvcnQgY2xhc3MgTGlicmFyeUZhdm9yaXRlRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBASW5wdXQoJ2FkZi1mYXZvcml0ZS1saWJyYXJ5JylcbiAgICBsaWJyYXJ5OiBMaWJyYXJ5RW50aXR5ID0gbnVsbDtcblxuICAgIEBPdXRwdXQoKSB0b2dnbGUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcbiAgICBAT3V0cHV0KCkgZXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIHByaXZhdGUgdGFyZ2V0TGlicmFyeSA9IG51bGw7XG5cbiAgICBwcml2YXRlIF9mYXZvcml0ZXNBcGk6IEZhdm9yaXRlc0FwaTtcbiAgICBnZXQgZmF2b3JpdGVzQXBpKCk6IEZhdm9yaXRlc0FwaSB7XG4gICAgICAgIHRoaXMuX2Zhdm9yaXRlc0FwaSA9IHRoaXMuX2Zhdm9yaXRlc0FwaSA/PyBuZXcgRmF2b3JpdGVzQXBpKHRoaXMuYWxmcmVzY29BcGlTZXJ2aWNlLmdldEluc3RhbmNlKCkpO1xuICAgICAgICByZXR1cm4gdGhpcy5fZmF2b3JpdGVzQXBpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgICBvbkNsaWNrKCkge1xuICAgICAgICBjb25zdCBndWlkID0gdGhpcy50YXJnZXRMaWJyYXJ5LmVudHJ5Lmd1aWQ7XG5cbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0TGlicmFyeS5pc0Zhdm9yaXRlKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZUZhdm9yaXRlKGd1aWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hZGRGYXZvcml0ZSh7XG4gICAgICAgICAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgICAgICAgICAgIHNpdGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGd1aWRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBhbGZyZXNjb0FwaVNlcnZpY2U6IEFsZnJlc2NvQXBpU2VydmljZSkge31cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKCFjaGFuZ2VzLmxpYnJhcnkuY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnRhcmdldExpYnJhcnkgPSBudWxsO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50YXJnZXRMaWJyYXJ5ID0gY2hhbmdlcy5saWJyYXJ5LmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgdGhpcy5tYXJrRmF2b3JpdGVMaWJyYXJ5KGNoYW5nZXMubGlicmFyeS5jdXJyZW50VmFsdWUpO1xuICAgIH1cblxuICAgIGlzRmF2b3JpdGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhcmdldExpYnJhcnk/LmlzRmF2b3JpdGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBtYXJrRmF2b3JpdGVMaWJyYXJ5KGxpYnJhcnk6IExpYnJhcnlFbnRpdHkpIHtcbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0TGlicmFyeS5pc0Zhdm9yaXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5mYXZvcml0ZXNBcGkuZ2V0RmF2b3JpdGVTaXRlKCctbWUtJywgbGlicmFyeS5lbnRyeS5pZCk7XG4gICAgICAgICAgICAgICAgdGhpcy50YXJnZXRMaWJyYXJ5LmlzRmF2b3JpdGUgPSB0cnVlO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgdGhpcy50YXJnZXRMaWJyYXJ5LmlzRmF2b3JpdGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudGFyZ2V0TGlicmFyeSA9IGxpYnJhcnk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZEZhdm9yaXRlKGZhdm9yaXRlQm9keTogRmF2b3JpdGVCb2R5Q3JlYXRlKSB7XG4gICAgICAgIHRoaXMuZmF2b3JpdGVzQXBpXG4gICAgICAgICAgICAuY3JlYXRlRmF2b3JpdGUoJy1tZS0nLCBmYXZvcml0ZUJvZHkpXG4gICAgICAgICAgICAudGhlbigobGlicmFyeUVudHJ5KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50YXJnZXRMaWJyYXJ5LmlzRmF2b3JpdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlLmVtaXQobGlicmFyeUVudHJ5KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB0aGlzLmVycm9yLmVtaXQoZXJyb3IpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZUZhdm9yaXRlKGZhdm9yaXRlSWQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLmZhdm9yaXRlc0FwaVxuICAgICAgICAgICAgLmRlbGV0ZUZhdm9yaXRlKCctbWUtJywgZmF2b3JpdGVJZClcbiAgICAgICAgICAgIC50aGVuKChsaWJyYXJ5Qm9keSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0TGlicmFyeS5pc0Zhdm9yaXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGUuZW1pdChsaWJyYXJ5Qm9keSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gdGhpcy5lcnJvci5lbWl0KGVycm9yKSk7XG4gICAgfVxufVxuIl19