@pnp/spfx-controls-react
Version:
Reusable React controls for SharePoint Framework solutions
62 lines • 2.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PropertyPaneControlToggles = void 0;
var tslib_1 = require("tslib");
var React = tslib_1.__importStar(require("react"));
var ReactDom = tslib_1.__importStar(require("react-dom"));
var sp_property_pane_1 = require("@microsoft/sp-property-pane");
var ControlToggles_1 = require("./controls/ControlToggles");
var PropertyPaneControlToggles = /** @class */ (function () {
function PropertyPaneControlToggles(targetProperty, properties) {
this.type = sp_property_pane_1.PropertyPaneFieldType.Custom;
this.targetProperty = targetProperty;
this.properties = {
key: properties.label,
label: properties.label,
onPropertyChange: properties.onPropertyChange,
controlVisibility: properties.controlVisibility,
onRender: this.onRender.bind(this),
onDispose: this.onDispose.bind(this)
};
}
PropertyPaneControlToggles.prototype.render = function () {
if (!this.elem) {
return;
}
this.onRender(this.elem);
};
PropertyPaneControlToggles.prototype.onDispose = function (element) {
ReactDom.unmountComponentAtNode(element);
};
PropertyPaneControlToggles.prototype.onRender = function (elem) {
if (!this.elem) {
this.elem = elem;
}
var element = React.createElement(ControlToggles_1.ControlToggles, {
label: this.properties.label,
onChange: this.onChange.bind(this),
controlVisibility: this.properties.controlVisibility,
// required to allow the component to be re-rendered by calling this.render() externally
// stateKey: new Date().toString()
});
ReactDom.render(element, elem);
};
PropertyPaneControlToggles.prototype.onChange = function (controlName, enabled) {
var _a;
if (controlName === "all") {
var newValue = tslib_1.__assign({}, this.properties.controlVisibility);
for (var control in newValue) {
if (newValue[control] !== undefined) {
newValue[control] = enabled;
}
}
this.properties.onPropertyChange(newValue);
}
else {
this.properties.onPropertyChange(tslib_1.__assign(tslib_1.__assign({}, this.properties.controlVisibility), (_a = {}, _a[controlName] = enabled, _a)));
}
};
return PropertyPaneControlToggles;
}());
exports.PropertyPaneControlToggles = PropertyPaneControlToggles;
//# sourceMappingURL=PropertyPaneControlToggles.js.map