@pnp/spfx-property-controls
Version:
Reusable property pane controls for SharePoint Framework solutions
104 lines • 4.6 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.PropertyFieldRoleDefinitionPicker = PropertyFieldRoleDefinitionPicker;
const tslib_1 = require("tslib");
const React = tslib_1.__importStar(require("react"));
const ReactDom = tslib_1.__importStar(require("react-dom"));
const sp_property_pane_1 = require("@microsoft/sp-property-pane");
const PropertyFieldRoleDefinitionPickerHost_1 = tslib_1.__importDefault(require("./PropertyFieldRoleDefinitionPickerHost"));
/**
* Represents a PropertyFieldRoleDefinitionPicker object
*/
class PropertyFieldRoleDefinitionPickerBuilder {
/**
* Constructor method
*/
constructor(_targetProperty, _properties) {
this.type = sp_property_pane_1.PropertyPaneFieldType.Custom;
this.disabled = false;
this.multiSelect = 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.webAbsoluteUrl = _properties.webAbsoluteUrl;
this.roleDefinitions = _properties.roleDefinitions;
this.selectedRoleDefinition = _properties.selectedRoleDefinition;
this.onPropertyChange = _properties.onPropertyChange;
this.customProperties = _properties.properties;
this.key = _properties.key;
this.roleDefinitionsToExclude = _properties.roleDefinitionsToExclude;
this.onGetErrorMessage = _properties.onGetErrorMessage;
this.onRoleDefinitionsRetrieved = _properties.onRoleDefinitionsRetrieved;
if (_properties.disabled === true) {
this.disabled = _properties.disabled;
}
this.multiSelect = _properties.multiSelect;
}
/**
* Renders the RoleDefinitionPicker field content
*/
render(elem, ctx, changeCallback) {
const componentProps = {
label: this.label,
targetProperty: this.targetProperty,
context: this.context,
webAbsoluteUrl: this.webAbsoluteUrl,
roleDefinitions: this.roleDefinitions,
onDispose: this.dispose,
onRender: this.render,
onChange: changeCallback,
onPropertyChange: this.onPropertyChange,
properties: this.customProperties,
key: this.key,
disabled: this.disabled,
multiSelect: this.multiSelect,
onGetErrorMessage: this.onGetErrorMessage,
roleDefinitionsToExclude: this.roleDefinitionsToExclude,
selectedRoleDefinition: this.selectedRoleDefinition,
onRoleDefinitionsRetrieved: this.onRoleDefinitionsRetrieved
};
const element = React.createElement(PropertyFieldRoleDefinitionPickerHost_1.default, componentProps);
// Calls the REACT content generator
ReactDom.render(element, elem);
}
/**
* Disposes the current object
*/
dispose(_elem) {
// no-op;
}
}
/**
* 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.
*/
function PropertyFieldRoleDefinitionPicker(targetProperty, properties) {
//Create an internal properties object from the given properties
const newProperties = {
label: properties.label,
targetProperty: targetProperty,
context: properties.context,
selectedRoleDefinition: properties.selectedRoleDefinition,
onPropertyChange: properties.onPropertyChange,
properties: properties.properties,
onDispose: null,
onRender: null,
key: properties.key,
roleDefinitions: properties.roleDefinitions,
disabled: properties.disabled,
roleDefinitionsToExclude: properties.roleDefinitionsToExclude,
webAbsoluteUrl: properties.webAbsoluteUrl,
multiSelect: properties.multiSelect,
onGetErrorMessage: properties.onGetErrorMessage,
onRoleDefinitionsRetrieved: properties.onRoleDefinitionsRetrieved
};
//Calls the PropertyFieldRoleDefinitionPicker builder object
//This object will simulate a PropertyFieldCustom to manage his rendering process
return new PropertyFieldRoleDefinitionPickerBuilder(targetProperty, newProperties);
}
//# sourceMappingURL=PropertyFieldRoleDefinitionPicker.js.map