@pnp/spfx-controls-react
Version:
Reusable React controls for SharePoint Framework solutions
53 lines • 3.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Dashboard = Dashboard;
var tslib_1 = require("tslib");
var React = tslib_1.__importStar(require("react"));
var react_northstar_1 = require("@fluentui/react-northstar");
var DashboardWidget_1 = require("./widget/DashboardWidget");
var DashboardTheme_1 = require("./DashboardTheme");
var toolbar_1 = require("../toolbar");
var Dashboard_module_scss_1 = tslib_1.__importDefault(require("./Dashboard.module.scss"));
var telemetry_1 = require("../../common/telemetry");
function Dashboard(_a) {
var widgets = _a.widgets, allowHidingWidget = _a.allowHidingWidget, onWidgetHiding = _a.onWidgetHiding, toolbarProps = _a.toolbarProps, WidgetWrapperComponent = _a.WidgetContentWrapper;
var _b = React.useState(widgets), stateWidgets = _b[0], setWidgets = _b[1];
var widgetRenderer = WidgetWrapperComponent
? renderWidgetWithWrappedContent
: renderWidget;
(0, telemetry_1.useTelemetry)("ReactDashboard", {});
React.useEffect(function () {
setWidgets(widgets);
}, [widgets]);
return (React.createElement(react_northstar_1.ProviderConsumer, { render: function (globalTheme) {
if (!globalTheme || globalTheme.fontFaces.length === 0) {
globalTheme = react_northstar_1.teamsTheme;
}
return (React.createElement(DashboardTheme_1.DashboardTheme, { globalTheme: globalTheme },
toolbarProps && React.createElement(toolbar_1.Toolbar, tslib_1.__assign({}, toolbarProps)),
React.createElement(react_northstar_1.Box, { className: Dashboard_module_scss_1.default.dashboardBox }, stateWidgets && stateWidgets.map(widgetRenderer(globalTheme)))));
} }));
function renderWidgetWithWrappedContent(globalTheme // eslint-disable-line @typescript-eslint/no-explicit-any
) {
return function (widget, key) {
return (React.createElement(WidgetWrapperComponent, null, renderWidget(globalTheme)(widget, key)));
};
}
function renderWidget(globalTheme // eslint-disable-line @typescript-eslint/no-explicit-any
) {
return function (widget, key) { return (React.createElement(DashboardWidget_1.Widget, { key: key, widget: widget },
React.createElement(DashboardWidget_1.WidgetTitle, { widget: widget, allowHidingWidget: allowHidingWidget, onWidgetHiding: function (hidingWidget) {
if (onWidgetHiding) {
onWidgetHiding(hidingWidget);
}
if (!hidingWidget.controlOptions) {
hidingWidget.controlOptions = {};
}
hidingWidget.controlOptions.isHidden = true;
setWidgets(tslib_1.__spreadArray([], widgets, true));
}, globalTheme: globalTheme }),
React.createElement(DashboardWidget_1.WidgetBody, { widget: widget, siteVariables: globalTheme.siteVariables }),
widget.link && React.createElement(DashboardWidget_1.WidgetFooter, { widget: widget }))); };
}
}
//# sourceMappingURL=Dashboard.js.map