UNPKG

@fluentui/react-northstar

Version:
134 lines (131 loc) 6.69 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.popupContentSlotClassNames = exports.popupContentClassName = exports.PopupContent = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _keys2 = _interopRequireDefault(require("lodash/keys")); var _invoke2 = _interopRequireDefault(require("lodash/invoke")); var _reactBindings = require("@fluentui/react-bindings"); var customPropTypes = _interopRequireWildcard(require("@fluentui/react-proptypes")); var _classnames = _interopRequireDefault(require("classnames")); var PropTypes = _interopRequireWildcard(require("prop-types")); var React = _interopRequireWildcard(require("react")); var _utils = require("../../utils"); var _positioner = require("../../utils/positioner"); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } var popupContentClassName = 'ui-popup__content'; exports.popupContentClassName = popupContentClassName; var popupContentSlotClassNames = { content: popupContentClassName + "__content" }; /** * A PopupContent displays the content of a Popup component. */ exports.popupContentSlotClassNames = popupContentSlotClassNames; var PopupContent = /*#__PURE__*/React.forwardRef(function (props, ref) { var context = (0, _reactBindings.useFluentContext)(); var _useTelemetry = (0, _reactBindings.useTelemetry)(PopupContent.displayName, context.telemetry), setStart = _useTelemetry.setStart, setEnd = _useTelemetry.setEnd; setStart(); var accessibility = props.accessibility, autoFocus = props.autoFocus, children = props.children, className = props.className, content = props.content, design = props.design, placement = props.placement, pointing = props.pointing, pointerRef = props.pointerRef, styles = props.styles, trapFocus = props.trapFocus, variables = props.variables, autoSize = props.autoSize; var getA11yProps = (0, _reactBindings.useAccessibility)(accessibility, { debugName: PopupContent.displayName, rtl: context.rtl }); var _useStyles = (0, _reactBindings.useStyles)(PopupContent.displayName, { className: popupContentClassName, mapPropsToStyles: function mapPropsToStyles() { return { basePlacement: (0, _positioner.getBasePlacement)(placement, context.rtl), pointing: pointing, autoSize: autoSize }; }, mapPropsToInlineStyles: function mapPropsToInlineStyles() { return { className: className, design: design, styles: styles, variables: variables }; }, rtl: context.rtl }), classes = _useStyles.classes; var ElementType = (0, _reactBindings.getElementType)(props); var unhandledProps = (0, _reactBindings.useUnhandledProps)(PopupContent.handledProps, props); var handleMouseEnter = function handleMouseEnter(e) { (0, _invoke2.default)(props, 'onMouseEnter', e, props); }; var handleMouseLeave = function handleMouseLeave(e) { (0, _invoke2.default)(props, 'onMouseLeave', e, props); }; var popupContentProps = getA11yProps('root', Object.assign({ className: classes.root }, _utils.rtlTextContainer.getAttributes({ forElements: [children, content] }), unhandledProps, { onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave })); var popupContent = /*#__PURE__*/React.createElement(React.Fragment, null, pointing && /*#__PURE__*/React.createElement("div", { className: classes.pointer, ref: pointerRef }), /*#__PURE__*/React.createElement("div", { className: (0, _classnames.default)(popupContentSlotClassNames.content, classes.content) }, (0, _utils.childrenExist)(children) ? children : content)); var element; if (trapFocus) { var focusTrapZoneProps = Object.assign({}, popupContentProps, (0, _keys2.default)(trapFocus).length && trapFocus, { as: ElementType }); element = /*#__PURE__*/React.createElement(_reactBindings.FocusTrapZone, (0, _extends2.default)({ innerRef: ref }, focusTrapZoneProps), popupContent); } else if (autoFocus) { var autoFocusZoneProps = Object.assign({}, popupContentProps, (0, _keys2.default)(autoFocus).length && autoFocus, { as: ElementType }); element = /*#__PURE__*/React.createElement(_reactBindings.AutoFocusZone, (0, _extends2.default)({ innerRef: ref }, autoFocusZoneProps), popupContent); } else { element = /*#__PURE__*/React.createElement(ElementType, (0, _extends2.default)({ ref: ref }, popupContentProps), popupContent); } setEnd(); return element; }); exports.PopupContent = PopupContent; PopupContent.displayName = 'PopupContent'; PopupContent.propTypes = Object.assign({}, _utils.commonPropTypes.createCommon(), { placement: PropTypes.oneOf(['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start']), pointing: PropTypes.bool, onMouseEnter: PropTypes.func, onMouseLeave: PropTypes.func, pointerRef: customPropTypes.ref, trapFocus: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]), autoFocus: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]), autoSize: PropTypes.oneOf(_positioner.AUTOSIZES) }); PopupContent.handledProps = Object.keys(PopupContent.propTypes); PopupContent.create = (0, _utils.createShorthandFactory)({ Component: PopupContent, mappedProp: 'content' }); //# sourceMappingURL=PopupContent.js.map