import { BaseComponentContext } from '@microsoft/sp-component-base' ; import { ISPList } from './IPropertyFieldListPickerHost' ; import { IPropertyPaneCustomFieldProps } from '@microsoft/sp-property-pane' ; /**
 * Detailed list information
 */ export interface IPropertyFieldList { /**
     * List ID
     */ id : string ; /**
     * List Title
     */ title ? : string ; /**
     * List server relative URL
     */ url ? : string ; } /**
 * Enum for specifying how the lists should be sorted
 */ export enum PropertyFieldListPickerOrderBy { Id = 1 , Title } /**
 * Public properties of the PropertyFieldListPicker custom field
 */ export interface IPropertyFieldListPickerProps { /**
     * Property field label displayed on top
     */ label : string ; /**
     * Context of the current web part
     */ context : BaseComponentContext ; /**
     * Absolute Web Url of target site (user requires permissions)
     */ webAbsoluteUrl ? : string ; /**
     * Initial selected list set of the control
     */ selectedList ? : string | string [ ] | IPropertyFieldList | IPropertyFieldList [ ] ; /**
     * BaseTemplate ID of the lists or libaries you want to return.
     */ baseTemplate ? : number ; /**
     * Specify if you want to include or exclude hidden lists. By default this is true.
     */ includeHidden ? : boolean ; /**
     * Specify the property on which you want to order the retrieve set of lists.
     */ orderBy ? : PropertyFieldListPickerOrderBy ; /**
     * Specify if you want to have a single or mult list selector.
     */ multiSelect ? : boolean ; /**
     * Specify if you want the Select All checkbox
     */ showSelectAll ? : boolean ; /**
     * Specify where to show the Select All checkbox. When false (default), checkbox is shown before the label, when true it is shown with the lists
     */ selectAllInList ? : boolean ; /**
     * The label to use for the in list select all checkbox
     */ selectAllInListLabel ? : string ; /**
     * Defines a onPropertyChange function to raise when the selected value changed.
     * Normally this function must be always defined with the 'this.onPropertyChange'
     * method of the web part object.
     */ onPropertyChange ( propertyPath , oldValue , newValue ) : void ; /**
     * Parent Web Part properties
     */ properties : any ; /**
     * An UNIQUE key indicates the identity of this control
     */ key ? : string ; /**
     * Whether the property pane field is enabled or not.
     */ disabled ? : boolean ; /**
     * The method is used to get the validation error message and determine whether the input value is valid or not.
     *
     *   When it returns string:
     *   - If valid, it returns empty string.
     *   - If invalid, it returns the error message string and the text field will
     *     show a red border and show an error message below the text field.
     *
     *   When it returns Promise<string>:
     *   - The resolved value is display as error message.
     *   - The rejected, the value is thrown away.
     *
     */ onGetErrorMessage ? : ( value : string ) => string | Promise < string > ; /**
     * Custom Field will start to validate after users stop typing for `deferredValidationTime` milliseconds.
     * Default value is 200.
     */ deferredValidationTime ? : number ; /**
     * Defines list titles which should be excluded from the list picker control
     */ listsToExclude ? : string [ ] ; /**
     * Filter list from Odata query (takes precendents over Hidden and BaseTemplate Filters)
     */ filter ? : string ; /**
     * Callback that is called before the dropdown is populated
     */ onListsRetrieved ? : ( lists : ISPList [ ] ) => PromiseLike < ISPList [ ] > | ISPList [ ] ; /**
     * Specifies if the picker returns list id, title and url as an object instead on id.
     */ includeListTitleAndUrl ? : boolean ; } /**
 * Private properties of the PropertyFieldListPicker custom field.
 * We separate public & private properties to include onRender & onDispose method waited
 * by the PropertyFieldCustom, witout asking to the developer to add it when he's using
 * the PropertyFieldListPicker.
 *
 */ export interface IPropertyFieldListPickerPropsInternal extends IPropertyFieldListPickerProps , IPropertyPaneCustomFieldProps { label : string ; targetProperty : string ; context : BaseComponentContext ; webAbsoluteUrl ? : string ; selectedList ? : string | IPropertyFieldList ; selectedLists ? : string [ ] | IPropertyFieldList [ ] ; baseTemplate ? : number ; orderBy ? : PropertyFieldListPickerOrderBy ; includeHidden ? : boolean ; onPropertyChange ( propertyPath , oldValue , newValue ) : void ; properties : any ; key : string ; disabled ? : boolean ; onGetErrorMessage ? : ( value : string | string [ ] ) => string | Promise < string > ; deferredValidationTime ? : number ; listsToExclude ? : string [ ] ; filter ? : string ; onListsRetrieved ? : ( lists : ISPList [ ] ) => PromiseLike < ISPList [ ] > | ISPList [ ] ; }