@alfresco/adf-content-services
Version:
Alfresco ADF content services
1,204 lines (1,153 loc) • 457 kB
TypeScript
import * as i0 from '@angular/core';
import { AfterViewInit, ElementRef, OnInit, OnChanges, AfterContentInit, EventEmitter, SimpleChanges, OnDestroy, InjectionToken, ViewContainerRef, ComponentRef, TemplateRef, QueryList, AfterViewChecked, Type, NgZone, ModuleWithProviders } from '@angular/core';
import { Node, Site, FavoritesApi, SitesApi, SiteEntry, NodeEntry, DeletedNodeEntry, TrashcanApi, NodesApi, PathInfo, ContentApi, VersionEntry, TagEntry, TagsApi, TagPaging, TagBody, RequestHighlight, AlfrescoApi, AlfrescoApiConfig, SearchApi, ResultSetPaging, RequestScope, SearchRequest, RequestSortDefinitionInner, RequestFacetFields, NodePaging, NodePagingList, QueriesApi, Pagination, PeopleApi, SharedlinksApi, FavoritePaging, SiteMemberPaging, SitePaging, DeletedNodesPaging, SharedLinkPaging, ChildAssociationBody, AssociationBody, DiscoveryApi, AboutApi, SystemPropertiesApi, RepositoryInfo, BpmProductVersionModel, SystemPropertiesRepresentation, UploadApi, VersionsApi, PathElement, ContentPagingQuery, Version, Category, ClassesApi, Definition, Property as Property$1, PermissionElement, Capabilities, Group, GroupsApi, GroupMemberPaging, SharedLinkBodyCreate, SharedLinkEntry, GroupEntry, ContentIncludeQuery, AspectEntry, AspectPaging, AspectsApi, ListAspectsOpts, TypesApi, TypeEntry, CommentsApi, NodeChildAssociation, VersionInfo, SiteBodyCreate, SiteMembershipRequestWithPersonPaging, SiteMembershipBodyCreate, SiteMemberEntry, SiteMembershipBodyUpdate, SiteGroupPaging, SiteGroupEntry, RenditionsApi, RenditionEntry, NodesIncludeQuery, NodeAssignedHold, JobIdBodyEntry, SizeDetailsEntry, NodeAssociationPaging, PersonBodyCreate, PersonBodyUpdate, ContentFieldsQuery, PreferenceEntry, CategoriesApi, CategoryPaging, CategoryEntry, CategoryBody, CategoryLinkBody, SecurityGroup, SecurityMark, SecurityGroupsApi, SecurityMarksApi, AuthorityClearanceApi, SecurityGroupBody, SecurityGroupEntry, SecurityMarkBody, SecurityMarkPaging, SecurityMarkEntry, AuthorityClearanceGroupPaging, NodeSecurityMarkBody, LegalHoldApi, Hold, HoldEntry, HoldPaging, HoldBody, RequestQuery, BulkAssignHoldResponseEntry, HoldBulkStatusEntry } from '@alfresco/js-api';
import * as rxjs from 'rxjs';
import { BehaviorSubject, Observable, ReplaySubject, Subject } from 'rxjs';
import { ErrorStateMatcher } from '@angular/material/core';
import { PaginationModel, Chip, AppConfigService, StorageService, OpenidConfiguration, DataColumn, SearchComponentInterface, AuthenticationService, SearchTextInputComponent, DataSorting, DataRow, ThumbnailService, DataTableAdapter, BaseEvent, DataTableSchema, PaginatedComponent, DataColumnListComponent, CustomLoadingContentTemplateDirective, CustomNoPermissionTemplateDirective, CustomEmptyContentTemplateDirective, ShowHeaderMode, DataTableComponent, DataCellEvent, DataRowActionEvent, RequestPaginationModel, TranslationService, FileInfo, HighlightDirective, InfinitePaginationComponent, CardViewItem, CardViewTextItemModel, CardViewDateItemModel, ObjectDataRow, User, CommentModel, CommentsService, UpdateNotification, CardViewBaseItemModel, Track, ViewerComponent, ViewerToolbarComponent, ViewerSidebarComponent, ViewerToolbarActionsComponent, ViewerMoreActionsComponent, ViewerOpenWithComponent, CloseButtonPosition } from '@alfresco/adf-core';
import * as _angular_forms from '@angular/forms';
import { FormControl, UntypedFormControl, FormGroupDirective, NgForm, FormGroup, UntypedFormGroup, Validators } from '@angular/forms';
import { MatDialog, MatDialogRef, MatDialogConfig } from '@angular/material/dialog';
import { MatCheckboxChange, MatCheckbox } from '@angular/material/checkbox';
import { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';
import { MatChipInputEvent } from '@angular/material/chips';
import * as i1 from '@mat-datetimepicker/core';
import { MatDatetimepickerInputEvent } from '@mat-datetimepicker/core';
import { ConfigurableFocusTrap } from '@angular/cdk/a11y';
import { MatMenuTrigger } from '@angular/material/menu';
import { MatRadioChange } from '@angular/material/radio';
import { MatSelect, MatSelectChange } from '@angular/material/select';
import { DataSource, CollectionViewer, SelectionModel } from '@angular/cdk/collections';
import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
import { MatSlideToggleChange } from '@angular/material/slide-toggle';
import { MatSelectionList } from '@angular/material/list';
import { FlatTreeControl } from '@angular/cdk/tree';
declare class AlfrescoIconComponent {
static ɵfac: i0.ɵɵFactoryDeclaration<AlfrescoIconComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<AlfrescoIconComponent, "adf-alfresco-icon", never, {}, {}, never, never, true, never>;
}
/*!
* @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.
*/
declare class NodeLockDirective implements AfterViewInit {
element: ElementRef<any>;
private readonly renderer;
private readonly contentService;
private readonly contentNodeDialogService;
/** Node to lock/unlock. */
node: Node;
onClick(event: any): void;
ngAfterViewInit(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<NodeLockDirective, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<NodeLockDirective, "[adf-node-lock]", never, { "node": { "alias": "adf-node-lock"; "required": false; }; }, {}, never, never, true, never>;
}
/*!
* @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.
*/
declare class NodeCounterDirective implements OnInit, OnChanges {
private readonly viewContainerRef;
/** Number to display in the counter badge */
counter: number;
componentRef: NodeCounterComponent;
ngOnInit(): void;
ngOnChanges(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<NodeCounterDirective, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<NodeCounterDirective, "[adf-node-counter]", never, { "counter": { "alias": "adf-node-counter"; "required": false; }; }, {}, never, never, true, never>;
}
declare class NodeCounterComponent {
counter: number;
static ɵfac: i0.ɵɵFactoryDeclaration<NodeCounterComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<NodeCounterComponent, "adf-node-counter", never, {}, {}, never, never, true, never>;
}
/*!
* @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.
*/
declare class AutoFocusDirective implements AfterContentInit {
private readonly el;
ngAfterContentInit(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<AutoFocusDirective, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<AutoFocusDirective, "[adf-auto-focus]", never, {}, {}, never, never, true, never>;
}
/*!
* @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.
*/
interface LibraryEntity {
entry: Site;
isLibrary: boolean;
isFavorite: boolean;
}
/*!
* @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.
*/
declare class LibraryFavoriteDirective implements OnChanges {
private readonly alfrescoApiService;
private readonly notificationService;
library: LibraryEntity;
toggle: EventEmitter<any>;
error: EventEmitter<any>;
private targetLibrary;
readonly favoritesApi: FavoritesApi;
onClick(): void;
ngOnChanges(changes: SimpleChanges): void;
isFavorite(): boolean;
private markFavoriteLibrary;
private addFavorite;
private removeFavorite;
static ɵfac: i0.ɵɵFactoryDeclaration<LibraryFavoriteDirective, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<LibraryFavoriteDirective, "[adf-favorite-library]", ["favoriteLibrary"], { "library": { "alias": "adf-favorite-library"; "required": false; }; }, { "toggle": "toggle"; "error": "error"; }, never, never, true, never>;
}
/*!
* @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.
*/
interface LibraryMembershipToggleEvent {
updatedEntry?: any;
shouldReload: boolean;
i18nKey: string;
}
/*!
* @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.
*/
interface LibraryMembershipErrorEvent {
error: any;
i18nKey: string;
}
/*!
* @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.
*/
declare class LibraryMembershipDirective implements OnChanges {
private readonly alfrescoApiService;
private readonly sitesService;
private readonly versionCompatibilityService;
targetSite: any;
isJoinRequested: BehaviorSubject<boolean>;
readonly sitesApi: SitesApi;
/** Site for which to toggle the membership request. */
selection: SiteEntry;
/** Site for which to toggle the membership request. */
isAdmin: boolean;
toggle: EventEmitter<LibraryMembershipToggleEvent>;
error: EventEmitter<LibraryMembershipErrorEvent>;
onClick(): void;
ngOnChanges(changes: SimpleChanges): void;
toggleMembershipRequest(): void;
markMembershipRequest(): void;
private joinLibraryRequest;
private joinLibrary;
private cancelJoinRequest;
private getMembershipRequest;
static ɵfac: i0.ɵɵFactoryDeclaration<LibraryMembershipDirective, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<LibraryMembershipDirective, "[adf-library-membership]", ["libraryMembership"], { "selection": { "alias": "adf-library-membership"; "required": false; }; "isAdmin": { "alias": "isAdmin"; "required": false; }; }, { "toggle": "toggle"; "error": "error"; }, never, never, true, never>;
}
/*!
* @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.
*/
declare class NodeDeleteDirective implements OnChanges {
private readonly alfrescoApiService;
private readonly translation;
private readonly elementRef;
/** Array of nodes to delete. */
selection: NodeEntry[] | DeletedNodeEntry[];
/** If true then the nodes are deleted immediately rather than being put in the trash */
permanent: boolean;
/** Emitted when the nodes have been deleted. */
delete: EventEmitter<any>;
readonly trashcanApi: TrashcanApi;
readonly nodesApi: NodesApi;
onClick(): void;
ngOnChanges(): void;
private setDisableAttribute;
private process;
private getDeleteNodesBatch;
private deleteNode;
private processStatus;
private getMessage;
static ɵfac: i0.ɵɵFactoryDeclaration<NodeDeleteDirective, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<NodeDeleteDirective, "[adf-delete]", never, { "selection": { "alias": "adf-delete"; "required": false; }; "permanent": { "alias": "permanent"; "required": false; }; }, { "delete": "delete"; }, never, never, true, never>;
}
/*!
* @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.
*/
declare class NodeFavoriteDirective implements OnChanges {
private readonly alfrescoApiService;
private readonly notificationService;
favorites: any[];
readonly favoritesApi: FavoritesApi;
/** Array of nodes to toggle as favorites. */
selection: NodeEntry[];
/** Emitted when the favorite setting is complete. */
toggle: EventEmitter<any>;
/** Emitted when the favorite setting fails. */
error: EventEmitter<any>;
onClick(): void;
ngOnChanges(changes: SimpleChanges): void;
toggleFavorite(): void;
markFavoritesNodes(selection: NodeEntry[]): void;
hasFavorites(): boolean;
private getProcessBatch;
private getFavorite;
private createFavoriteBody;
private getNodeType;
private diff;
private reduce;
static ɵfac: i0.ɵɵFactoryDeclaration<NodeFavoriteDirective, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<NodeFavoriteDirective, "[adf-node-favorite]", ["adfFavorite"], { "selection": { "alias": "adf-node-favorite"; "required": false; }; }, { "toggle": "toggle"; "error": "error"; }, never, never, true, never>;
}
/*!
* @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.
*/
declare class RestoreMessageModel {
message: string;
path: PathInfo;
action: string;
}
/*!
* @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.
*/
declare class NodeRestoreDirective {
private readonly alfrescoApiService;
private readonly translation;
private readonly restoreProcessStatus;
readonly trashcanApi: TrashcanApi;
/** Array of deleted nodes to restore. */
selection: DeletedNodeEntry[];
/** Emitted when restoration is complete. */
restore: EventEmitter<RestoreMessageModel>;
onClick(): void;
constructor();
private recover;
private restoreNodesBatch;
private getNodesWithPath;
private getDeletedNodes;
private restoreNode;
private diff;
private processStatus;
private getRestoreMessage;
private notification;
private reset;
static ɵfac: i0.ɵɵFactoryDeclaration<NodeRestoreDirective, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<NodeRestoreDirective, "[adf-restore]", never, { "selection": { "alias": "adf-restore"; "required": false; }; }, { "restore": "restore"; }, never, never, true, never>;
}
/**
* Directive selectors without adf- prefix will be deprecated on 3.0.0
*/
declare class NodeDownloadDirective {
private readonly apiService;
private readonly downloadService;
private readonly dialog;
readonly contentApi: ContentApi;
/** Nodes to download. */
nodes: NodeEntry | NodeEntry[];
/** Node's version to download. */
version: VersionEntry;
onClick(): void;
/**
* Downloads multiple selected nodes.
* Packs result into a .ZIP archive if there is more than one node selected.
*
* @param selection Multiple selected nodes to download
*/
downloadNodes(selection: NodeEntry | Array<NodeEntry>): void;
/**
* Downloads a single node.
* Packs result into a .ZIP archive is the node is a Folder.
*
* @param node Node to download
*/
downloadNode(node: NodeEntry): void;
private isSelectionValid;
private downloadFile;
private downloadZip;
static ɵfac: i0.ɵɵFactoryDeclaration<NodeDownloadDirective, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<NodeDownloadDirective, "[adfNodeDownload]", never, { "nodes": { "alias": "adfNodeDownload"; "required": false; }; "version": { "alias": "version"; "required": false; }; }, {}, never, never, true, never>;
}
declare const CONTENT_DIRECTIVES: (typeof NodeDownloadDirective | typeof NodeCounterComponent | typeof AutoFocusDirective | typeof NodeLockDirective | typeof LibraryFavoriteDirective | typeof LibraryMembershipDirective | typeof NodeDeleteDirective | typeof NodeFavoriteDirective | typeof NodeRestoreDirective)[];
/** @deprecated import standalone directives instead */
declare class ContentDirectiveModule {
static ɵfac: i0.ɵɵFactoryDeclaration<ContentDirectiveModule, never>;
static ɵmod: i0.ɵɵNgModuleDeclaration<ContentDirectiveModule, never, [typeof NodeLockDirective, typeof NodeCounterDirective, typeof NodeCounterComponent, typeof AutoFocusDirective, typeof LibraryFavoriteDirective, typeof LibraryMembershipDirective, typeof NodeDeleteDirective, typeof NodeFavoriteDirective, typeof NodeRestoreDirective, typeof NodeDownloadDirective], [typeof NodeLockDirective, typeof NodeCounterDirective, typeof NodeCounterComponent, typeof AutoFocusDirective, typeof LibraryFavoriteDirective, typeof LibraryMembershipDirective, typeof NodeDeleteDirective, typeof NodeFavoriteDirective, typeof NodeRestoreDirective, typeof NodeDownloadDirective]>;
static ɵinj: i0.ɵɵInjectorDeclaration<ContentDirectiveModule>;
}
/**
*
* This component, provide a list of the tags relative a node with actions button to add or remove new tag
*/
declare class TagActionsComponent implements OnChanges, OnInit {
private readonly tagService;
private readonly translateService;
/** The identifier of a node. */
nodeId: string;
/** Emitted when a tag is added successfully. */
successAdd: EventEmitter<any>;
/** Emitted when an error occurs. */
error: EventEmitter<any>;
/** Emitted when an action is chosen. */
result: EventEmitter<any>;
newTagName: string;
tagsEntries: any;
errorMsg: string;
disableAddTag: boolean;
tagErrorStateMatcher: ErrorStateMatcher;
private readonly destroyRef;
ngOnInit(): void;
ngOnChanges(): void;
refreshTag(): void;
addTag(): void;
searchTag(searchTagName: string): any;
cleanErrorMsg(): void;
removeTag(tag: string): void;
static ɵfac: i0.ɵɵFactoryDeclaration<TagActionsComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<TagActionsComponent, "adf-tag-node-actions-list", never, { "nodeId": { "alias": "nodeId"; "required": true; }; }, { "successAdd": "successAdd"; "error": "error"; "result": "result"; }, never, never, true, never>;
}
/*!
* @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.
*/
/**
* This component provide a list of all the tag inside the ECM
*/
declare class TagListComponent implements OnInit {
private readonly tagService;
/** Emitted when a tag is selected. */
result: EventEmitter<any>;
/**
* Array of tags that are displayed
*/
tagsEntries: TagEntry[];
/**
* Number of items per iteration
*/
size: number;
defaultPagination: PaginationModel;
pagination: PaginationModel;
isLoading: boolean;
isSizeMinimum: boolean;
constructor();
ngOnInit(): void;
refreshTag(opts?: any): void;
loadMoreTags(): void;
loadLessTags(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<TagListComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<TagListComponent, "adf-tag-list", never, {}, { "result": "result"; }, never, never, true, never>;
}
/*!
* @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.
*/
/**
*
* This component, ShowNodeTag a list of the tag on relative a node
*/
declare class TagNodeListComponent implements OnChanges, OnInit {
private readonly tagService;
/** The identifier of a node. */
nodeId: string;
/** Show delete button */
showDelete: boolean;
/** Should limit number of tags displayed */
limitTagsDisplayed: boolean;
/** Emitted when a tag is selected. */
results: EventEmitter<TagEntry[]>;
private _tagChips;
get tagChips(): Chip[];
private readonly destroyRef;
ngOnChanges(): void;
ngOnInit(): void;
refreshTag(): void;
removeTag(tag: string): void;
static ɵfac: i0.ɵɵFactoryDeclaration<TagNodeListComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<TagNodeListComponent, "adf-tag-node-list", never, { "nodeId": { "alias": "nodeId"; "required": true; }; "showDelete": { "alias": "showDelete"; "required": false; }; "limitTagsDisplayed": { "alias": "limitTagsDisplayed"; "required": false; }; }, { "results": "results"; }, never, never, true, never>;
}
declare class TagService {
private readonly apiService;
private readonly userPreferencesService;
private readonly appConfigService;
readonly tagsApi: TagsApi;
/** Emitted when tag information is updated. */
refresh: EventEmitter<any>;
/**
* Gets a list of tags added to a node.
*
* @param nodeId ID of the target node
* @returns TagPaging object (defined in JS-API) containing the tags
*/
getTagsByNodeId(nodeId: string): Observable<TagPaging>;
/**
* Gets a list of all the tags already defined in the repository.
*
* @param opts Options supported by JS-API
* @param includedCounts True if count field should be included in response object for each tag, false otherwise.
* @returns TagPaging object (defined in JS-API) containing the tags
*/
getAllTheTags(opts?: any, includedCounts?: boolean): Observable<TagPaging>;
/**
* Adds a tag to a node.
*
* @param nodeId ID of the target node
* @param tagName Name of the tag to add
* @returns TagEntry object (defined in JS-API) with details of the new tag
*/
addTag(nodeId: string, tagName: string): Observable<TagEntry>;
/**
* Removes a tag from a node.
*
* @param nodeId ID of the target node
* @param tag Name of the tag to remove
* @returns Null object when the operation completes
*/
removeTag(nodeId: string, tag: string): Observable<void>;
/**
* Creates tags.
*
* @param tags list of tags to create.
* @returns Created tags.
*/
createTags(tags: TagBody[]): Observable<TagEntry | TagPaging>;
/**
* Update a tag
*
* @param tagId The identifier of a tag.
* @param tagBody The updated tag.
* @returns Updated tag.
*/
updateTag(tagId: string, tagBody: TagBody): Observable<TagEntry>;
/**
* Find tags which name contains searched name.
*
* @param name Value for name which should be used during searching tags.
* @param sorting Object which configures sorting. OrderBy field specifies field used for sorting, direction specified ascending or descending direction.
* Default sorting is ascending by tag field.
* @param includedCounts True if count field should be included in response object for each tag, false otherwise.
* @param skipCount Specify how many first results should be skipped. Default 0.
* @param maxItems Specify max number of returned tags. Default is specified by UserPreferencesService.
* @returns Found tags which name contains searched name.
*/
searchTags(name: string, sorting?: {
orderBy: string;
direction: string;
}, includedCounts?: boolean, skipCount?: number, maxItems?: number): Observable<TagPaging>;
/**
* Find tag which name matches exactly to passed name.
*
* @param name Value for name which should be used during finding exact tag.
* @returns Found tag which name matches exactly to passed name.
*/
findTagByName(name: string): Observable<TagEntry>;
/**
* Deletes a tag with tagId.
* This will cause the tag to be removed from all nodes.
* You must have admin rights to delete a tag.
*
* @param tagId of the tag to be deleted
* @returns Null object when the operation completes
*/
deleteTag(tagId: string): Observable<void>;
/**
* Assign tags to node. If tag is new then tag is also created additionally, if tag already exists then it is just assigned.
*
* @param nodeId Id of node to which tags should be assigned.
* @param tags List of tags to create and assign or just assign if they already exist.
* @returns Just linked tags to node or single tag if linked only one tag.
*/
assignTagsToNode(nodeId: string, tags: TagBody[]): Observable<TagPaging | TagEntry>;
/**
* Checks if tags plugin is enabled.
*
* @returns boolean true if tags plugin is enabled, false otherwise.
*/
areTagsEnabled(): boolean;
static ɵfac: i0.ɵɵFactoryDeclaration<TagService, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<TagService>;
}
/*!
* @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.
*/
/**
* Available modes for tags creator.
* Create mode allows only for creating completely new tags.
* Create and Assign mode allows for both - creation of new tags and selection of existing tags.
*/
declare const TagsCreatorMode: {
readonly CREATE: "CREATE";
readonly CREATE_AND_ASSIGN: "CREATE_AND_ASSIGN";
};
type TagsCreatorMode = (typeof TagsCreatorMode)[keyof typeof TagsCreatorMode];
/*!
* @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.
*/
interface TagNameControlErrors {
duplicatedExistingTag?: boolean;
duplicatedAddedTag?: boolean;
emptyTag?: boolean;
specialCharacters?: boolean;
}
/**
* Allows to create multiple tags. That component contains input and two lists. Top list is all created tags, bottom list is searched tags based on input's value.
*/
declare class TagsCreatorComponent implements OnInit, OnDestroy {
private readonly tagService;
private readonly notificationService;
/**
* Mode for component.
* In Create mode we can't select existing tags, we can only create them.
* In Create and Assign mode we can both - create tags and select existing tags.
*/
mode: TagsCreatorMode;
/**
* False if tags can be removed from top list, true otherwise.
*/
disabledTagsRemoving: boolean;
/**
* Default top list.
*
* @param tags tags which should be displayed as default tags for top list.
*/
set tags(tags: string[]);
get tags(): string[];
/**
* Decides if input for tags creation/searching should be visible. When input is hidden then panel of existing tags is hidden as well.
*
* @param tagNameControlVisible true if input should be visible, false otherwise.
*/
set tagNameControlVisible(tagNameControlVisible: boolean);
get tagNameControlVisible(): boolean;
/**
* Emitted when bottom list is showing or hiding.
*/
existingTagsPanelVisibilityChange: EventEmitter<boolean>;
/**
* Emitted when tags in top list are changed.
*/
tagsChange: EventEmitter<string[]>;
tagsToDisplay: Chip[];
readonly nameErrorMessagesByErrors: Map<keyof TagNameControlErrors, string>;
private readonly existingTagsListLimit;
private readonly exactTagSet$;
private _tags;
private readonly _tagNameControl;
private _tagNameControlVisible;
private _existingTags;
private _initialExistingTags;
private _tagNameErrorMessageKey;
private _spinnerVisible;
private _typing;
private _tagsListScrollbarVisible;
private readonly cancelExistingTagsLoading$;
private existingExactTag;
private _existingTagsPanelVisible;
private readonly tagsListElement;
private readonly tagNameInputElement;
private readonly dynamicChipList;
private readonly destroyRef;
ngOnInit(): void;
ngOnDestroy(): void;
get hostClass(): boolean;
get tagNameControl(): FormControl<string>;
get showEmptyTagMessage(): boolean;
get existingTags(): TagEntry[];
get tagNameErrorMessageKey(): string;
get spinnerVisible(): boolean;
get typing(): boolean;
get tagsListScrollbarVisible(): boolean;
get existingTagsPanelVisible(): boolean;
/**
* Add tags to top list using value which is set in input. Adding tag is not allowed when value in input is invalid
* or if user is still typing what means that validation for input is not called yet.
*/
addTag(): void;
/**
* Remove tag from top list. In case that tag was part of search result then that tag is moved to bottom list
* (list of existing tags) after removing so user can reselect it again later.
*
* @param tag tag's name which should be removed from top list.
*/
removeTag(tag: string): void;
/**
* Called when user selects any tag from list of existing tags. It moves tag from existing tags list to top list.
*
* @param selectedTag changes
*/
addExistingTagToTagsToAssign(selectedTag: TagEntry): void;
/**
* Checks if component is in Create mode.
*
* @returns `true` if `Create` mode, `false` otherwise.
*/
isOnlyCreateMode(): boolean;
private onTagNameControlValueChange;
private loadTags;
private removeExactTagFromSearchedResult;
private validateIfNotExistingTag;
private validateIfNotAlreadyAdded;
private compareTags;
private validateEmptyTag;
private validateSpecialCharacters;
private setTagNameControlErrorMessageKey;
private checkScrollbarVisibility;
private removeTagFromArray;
private updateExistingTagsListOnRemoveFromTagsToConfirm;
private sortExistingTags;
private excludeAlreadyAddedTags;
private clearTagNameInput;
private focusAfterRemoval;
static ɵfac: i0.ɵɵFactoryDeclaration<TagsCreatorComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<TagsCreatorComponent, "adf-tags-creator", never, { "mode": { "alias": "mode"; "required": true; }; "disabledTagsRemoving": { "alias": "disabledTagsRemoving"; "required": false; }; "tags": { "alias": "tags"; "required": false; }; "tagNameControlVisible": { "alias": "tagNameControlVisible"; "required": false; }; }, { "existingTagsPanelVisibilityChange": "existingTagsPanelVisibilityChange"; "tagsChange": "tagsChange"; }, never, never, true, never>;
}
declare const CONTENT_TAG_DIRECTIVES: readonly [typeof TagsCreatorComponent, typeof TagActionsComponent, typeof TagListComponent, typeof TagNodeListComponent];
/** @deprecated use `...CONTENT_TAG_DIRECTIVES` instead or import standalone components directly */
declare class TagModule {
static ɵfac: i0.ɵɵFactoryDeclaration<TagModule, never>;
static ɵmod: i0.ɵɵNgModuleDeclaration<TagModule, never, [typeof TagsCreatorComponent, typeof TagActionsComponent, typeof TagListComponent, typeof TagNodeListComponent], [typeof TagsCreatorComponent, typeof TagActionsComponent, typeof TagListComponent, typeof TagNodeListComponent]>;
static ɵinj: i0.ɵɵInjectorDeclaration<TagModule>;
}
/*!
* @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.
*/
interface AutocompleteOption {
value: string;
id?: string;
fullPath?: string;
query?: string;
}
declare const AutocompleteField: {
readonly TAG: "TAG";
readonly CATEGORIES: "cm:categories";
readonly LOCATION: "SITE";
};
type AutocompleteField = (typeof AutocompleteField)[keyof typeof AutocompleteField];
/*!
* @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.
*/
interface SearchWidgetSettings {
field: string;
allowUpdateOnChange?: boolean;
hideDefaultAction?: boolean;
unit?: string;
format?: string;
allowOnlyPredefinedValues?: boolean;
autocompleteOptions?: AutocompleteOption[];
[indexer: string]: any;
}
/*!
* @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.
*/
interface FilterQuery {
query: string;
}
/*!
* @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.
*/
interface FacetQuery {
label: string;
query: string;
checked?: boolean;
count?: number;
group?: string;
}
/*!
* @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.
*/
declare class SearchFilterList<T> implements Iterable<T> {
private filteredItems;
private _filterText;
items: T[];
pageSize: number;
currentPageSize: number;
get filterText(): string;
set filterText(value: string);
private _filter;
get filter(): (item: T) => boolean;
set filter(value: (item: T) => boolean);
private applyFilter;
/**
* Returns visible portion of the items.
*
* @returns list of items
*/
get visibleItems(): T[];
/**
* Get items length
*
* @returns entire collection length including items not displayed on the page
*/
get length(): number;
/**
* Detect whether more items can be displayed.
*
* @returns `true` if can show more items, otherwise `false`
*/
get canShowMoreItems(): boolean;
/**
* Detect whether less items can be displayed.
*
* @returns `true` if can show less items, otherwise `false`
*/
get canShowLessItems(): boolean;
/**
* Detect whether content fits single page.
*
* @returns `true` if content fits single page, otherwise `false`.
*/
get fitsPage(): boolean;
constructor(items?: T[], pageSize?: number);
/** Display more items. */
showMoreItems(): void;
/** Display less items. */
showLessItems(): void;
/** Reset entire collection and page settings. */
clear(): void;
addItem(item: T): void;
deleteItem(item: T): void;
[Symbol.iterator](): Iterator<T>;
}
/*!
* @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.
*/
interface FacetFieldBucket {
count: number;
display?: string;
label: string;
filterQuery: string;
checked?: boolean;
field?: string;
}
/*!
* @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.
*/
interface FacetField {
field: string;
label: string;
mincount?: number;
limit?: number;
offset?: number;
prefix?: string;
buckets?: SearchFilterList<FacetFieldBucket>;
pageSize?: number;
currentPageSize?: number;
checked?: boolean;
type?: string;
settings?: FacetFieldSettings;
[propName: string]: any;
}
interface FacetFieldSettings {
allowUpdateOnChange?: boolean;
hideDefaultAction?: boolean;
facetOrder?: number;
bucketSortBy?: FacetBucketSortBy;
bucketSortDirection?: FacetBucketSortDirection;
}
declare const FacetBucketSortBy: {
readonly LABEL: "LABEL";
readonly COUNT: "COUNT";
};
type FacetBucketSortBy = (typeof FacetBucketSortBy)[keyof typeof FacetBucketSortBy];
declare const FacetBucketSortDirection: {
readonly ASCENDING: "ASCENDING";
readonly DESCENDING: "DESCENDING";
};
type FacetBucketSortDirection = (typeof FacetBucketSortDirection)[keyof typeof FacetBucketSortDirection];
/*!
* @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.
*/
interface SearchCategory {
id: string;
name: string;
columnKey?: string;
enabled: boolean;
expanded: boolean;
component: {
selector: string;
settings: SearchWidgetSettings;
};
rules?: {
visible: string;
};
}
/*!
* @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.
*/
interface SearchSortingDefinition {
key: string;
label: string;
type: string;
field: string;
ascending: boolean;
}
/*!
* @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.
*/
interface SearchConfiguration {
id: string;
include?: string[];
fields?: string[];
categories?: SearchCategory[];
filterQueries?: FilterQuery[];
filterWithContains?: boolean;
resetButton?: boolean;
facetQueries?: {
label?: string;
pageSize?: number;
expanded?: boolean;
mincount?: number;
queries: FacetQuery[];
settings?: FacetFieldSettings;
};
facetFields?: {
expanded?: boolean;
fields: FacetField[];
};
facetIntervals?: {
expanded?: boolean;
intervals: FacetField[];
};
sorting?: {
options: SearchSortingDefinition[];
defaults: SearchSortingDefinition[];
};
highlight?: RequestHighlight;
name?: string;
default?: boolean;
}
/*!
* @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
*