UNPKG

@pnp/spfx-property-controls

Version:

Reusable property pane controls for SharePoint Framework solutions

105 lines 4.2 kB
import * as React from 'react'; import * as ReactDom from 'react-dom'; import { PropertyPaneFieldType } from '@microsoft/sp-property-pane'; import PropertyFieldFolderPickerHost from './PropertyFieldFolderPickerHost'; /** * Represents a PropertyFieldFolderPickerPicker object */ class PropertyFieldFolderPickerBuilder { /** * Constructor method */ constructor(_targetProperty, _properties) { this.type = PropertyPaneFieldType.Custom; this.disabled = false; this.required = false; this.canCreateFolders = false; this.render = this.render.bind(this); this.targetProperty = _targetProperty; this.properties = _properties; this.properties.onDispose = this.dispose; this.properties.onRender = this.render; this.label = _properties.label; this.context = _properties.context; this.onPropertyChange = _properties.onPropertyChange; this.customProperties = _properties.properties; this.key = _properties.key; this.rootFolder = _properties.rootFolder; this.defaultFolder = _properties.defaultFolder; this.onSelect = _properties.onSelect; this.onPropertyChange = _properties.onPropertyChange; this.customProperties = _properties.properties; this.siteAbsoluteUrl = this.properties.siteAbsoluteUrl; if (_properties.required === true) { this.required = _properties.required; } if (_properties.disabled === true) { this.disabled = _properties.disabled; } if (_properties.canCreateFolders === true) { this.canCreateFolders = _properties.canCreateFolders; } } /** * Renders the FolderPickerPicker field content */ render(elem, ctx, changeCallback) { const element = React.createElement(PropertyFieldFolderPickerHost, { label: this.label, targetProperty: this.targetProperty, context: this.context, rootFolder: this.rootFolder, defaultFolder: this.defaultFolder, onSelect: this.onSelect, required: this.required, canCreateFolders: this.canCreateFolders, onDispose: this.dispose, onRender: this.render, onChange: changeCallback, onPropertyChange: this.onPropertyChange, properties: this.customProperties, key: this.key, disabled: this.disabled, selectedFolder: this.selectedFolder, siteAbsoluteUrl: this.siteAbsoluteUrl }); // Calls the REACT content generator ReactDom.render(element, elem); } /** * Disposes the current object */ dispose(_elem) { ReactDom.unmountComponentAtNode(_elem); } } /** * Helper method to create a Role Definitions Picker on the PropertyPane. * @param targetProperty - Target property the SharePoint role definition picker is associated to. * @param properties - Strongly typed Role Definition Picker properties. */ export function PropertyFieldFolderPicker(targetProperty, properties) { //Create an internal properties object from the given properties const newProperties = { label: properties.label, targetProperty: targetProperty, context: properties.context, onPropertyChange: properties.onPropertyChange, properties: properties.properties, onDispose: null, onRender: null, key: properties.key, disabled: properties.disabled, onSelect: properties.onSelect, rootFolder: properties.rootFolder, canCreateFolders: properties.canCreateFolders, defaultFolder: properties.defaultFolder, required: properties.required, selectedFolder: properties.selectedFolder, siteAbsoluteUrl: properties.siteAbsoluteUrl }; //Calls the PropertyFieldFolderPickerPicker builder object //This object will simulate a PropertyFieldCustom to manage his rendering process return new PropertyFieldFolderPickerBuilder(targetProperty, newProperties); } //# sourceMappingURL=PropertyFieldFolderPicker.js.map