alfresco-ng2-components/docs/content-services/content-node-selector.component.md

4.8 KiB

Added, Status, Last reviewed
Added Status Last reviewed
v2.0.0 Active 2018-03-29

Content Node Selector component

Allows a user to select items from a Content Services repository.

Content Node Selector screenshot

Class members

Properties

Name Type Default value Description
currentFolderId string null Deprecated: in 2.1.0
dropdownHideMyFiles boolean false Deprecated: in 2.1.0
dropdownSiteList SitePaging null Deprecated: in 2.1.0
imageResolver ImageResolver null Deprecated: in 2.1.0
pageSize number Deprecated: in 2.1.0
rowFilter RowFilter null Deprecated: in 2.1.0
title string null Deprecated: in 2.1.0

Details

The Content Node Selector component works a lot like the standard File Open/Save dialog used by desktop applications except that it chooses items from a Content Services repository rather than the filesystem. For example, the Document List component uses a selector to choose the targets of Copy/Move actions (see the Content Action component for more information).

Unlike most components, the Content Node Selector is typically shown in a dialog box rather than the main page and you are responsible for opening the dialog yourself. You can use the Angular Material Dialog for this, as shown in the usage example. ADF provides the ContentNodeSelectorComponentData interface to work with the Dialog's data option:

interface ContentNodeSelectorComponentData {
    title: string;
    actionName?: string;
    currentFolderId: string;
    dropdownHideMyFiles?: boolean;
    dropdownSiteList?: SitePaging;
    rowFilter?: RowFilter;
    imageResolver?: ImageResolver;
    isSelectionValid?: (entry: MinimalNodeEntryEntity) => boolean;
    breadcrumbTransform?: (node) => any;
    select: EventEmitter<MinimalNodeEntryEntity[]>;
}

If you don't want to manage the dialog yourself then it is easier to use the Content Node Selector Panel component, or the methods of the Content Node Dialog service, which create the dialog for you.

Usage example

import { MatDialog } from '@angular/material';
import { ContentNodeSelectorComponentData, ContentNodeSelectorComponent} from '@adf/content-services'
import { Subject } from 'rxjs/Subject';
 ...

constructor(dialog: MatDialog ... ) {}

openSelectorDialog() {
    data: ContentNodeSelectorComponentData = {
        title: "Choose an item",
        currentFolderId: someFolderId,
        select: new Subject<MinimalNodeEntryEntity[]>()
    };

    this.dialog.open(
        ContentNodeSelectorComponent,
        {
            data, panelClass: 'adf-content-node-selector-dialog',
            width: '630px'
        }
    );

    data.select.subscribe((selections: MinimalNodeEntryEntity[]) => {
        // Use or store selection...
    }, 
    (error)=>{
        //your error handling
    }, 
    ()=>{
        //action called when an action or cancel is clicked on the dialog
        this.dialog.closeAll();
    });
}

All the results will be streamed to the select subject present in the ContentNodeSelectorComponentData object passed to the dialog. When the dialog action is selected by clicking, the data.select stream will be completed.

RowFilter and ImageResolver

The Content Node Selector uses a Document List to display the items that the user can choose. As with the standard Document List, you can supply a custom row filter function (to hide items that can't be chosen) and a custom image resolver function (to select an image to show in a particular list cell). For example, you could use a row filter to hide document nodes in a folder selector. See the Advanced Usage and Customization section of the Document List page to learn how these functions are implemented.

Using the breadcrumbTransform function

The breadcrumbTransform property of ContentNodeSelectorComponentData lets you modify the Node object that is used to generate the list of breadcrumbs. You can use this, for example, to remove path elements that are not relevant to the use case. See the Breadcrumb component page for an example of how to use this function.

See also