UNPKG

@pnp/spfx-controls-react

Version:

Reusable React controls for SharePoint Framework solutions

48 lines 2.32 kB
// tslint:disable:max-classes-per-file var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; import * as React from "react"; import { Consumer as AccordionContextConsumer } from "./AccordionContext"; var Context = React.createContext(null); var Provider = function (_a) { var children = _a.children, uuid = _a.uuid, accordionContext = _a.accordionContext, dangerouslySetExpanded = _a.dangerouslySetExpanded; var toggleExpanded = function () { accordionContext.toggleExpanded(uuid); }; var renderChildren = function (ctx) { var expanded = dangerouslySetExpanded ? dangerouslySetExpanded : ctx.isItemExpanded(uuid); var disabled = ctx.isItemDisabled(uuid); var panelAttributes = ctx.getPanelAttributes(uuid, dangerouslySetExpanded); var headingAttributes = ctx.getHeadingAttributes(uuid); var buttonAttributes = ctx.getButtonAttributes(uuid, dangerouslySetExpanded); return (React.createElement(Context.Provider, { value: { uuid: uuid, expanded: expanded, disabled: disabled, toggleExpanded: toggleExpanded, panelAttributes: panelAttributes, headingAttributes: headingAttributes, buttonAttributes: buttonAttributes, } }, children)); }; return (React.createElement(AccordionContextConsumer, null, renderChildren)); }; var ProviderWrapper = function (props) { return (React.createElement(AccordionContextConsumer, null, function (accordionContext) { return (React.createElement(Provider, __assign({}, props, { accordionContext: accordionContext }))); })); }; export { ProviderWrapper as Provider }; export var Consumer = function (_a) { var children = _a.children; var renderChildren = function (container) { return container ? children(container) : null; }; return React.createElement(Context.Consumer, null, renderChildren); }; //# sourceMappingURL=ItemContext.js.map