UNPKG

@pnp/spfx-controls-react

Version:

Reusable React controls for SharePoint Framework solutions

53 lines 3.15 kB
"use strict"; 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