UNPKG

chayns-components

Version:

A set of beautiful React components for developing chayns® applications.

128 lines (125 loc) 5.31 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = void 0; var _clsx = _interopRequireDefault(require("clsx")); var _propTypes = _interopRequireDefault(require("prop-types")); var _react = _interopRequireWildcard(require("react")); var _ContextMenu = _interopRequireDefault(require("../../react-chayns-contextmenu/component/ContextMenu")); var _Icon = _interopRequireDefault(require("../../react-chayns-icon/component/Icon")); var _sharingActions = _interopRequireDefault(require("./sharingActions")); require("./sharingBar.css"); var _sharingHelper = require("./sharingHelper"); var _TextString = _interopRequireDefault(require("../../react-chayns-textstring/component/TextString")); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (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; } /** * @component */ /** * A context menu for sharing a link and some text on various platforms. */ const SharingBar = _ref => { let { link: linkProp, linkText = '', className, stopPropagation = false, style, children } = _ref; const [sharingProvider, setSharingProvider] = (0, _react.useState)([]); const [textStringsLoaded, setTextStringsLoaded] = (0, _react.useState)(false); (0, _react.useEffect)(() => { (0, _sharingHelper.getAvailableShareProviders)().then(provider => { setSharingProvider(provider.filter(item => item.available)); }); if (!children) { _TextString.default.loadLibrary('ChaynsComponents').then(() => { setTextStringsLoaded(true); }); } }, [children]); const mobileShare = sharingProvider.find(app => app.id === 10 || app.id === 11); let link = linkProp; if (!link) { link = (0, _sharingHelper.getDefaultShareLink)(); } if (!children && !textStringsLoaded) { return null; } const indicator = children || [/*#__PURE__*/_react.default.createElement(_Icon.default, { key: "icon", icon: "fal fa-share-alt", className: "sharing-bar__icon" }), /*#__PURE__*/_react.default.createElement(_TextString.default, { key: "textstring", stringName: "txt_chayns_components_sharingbar_share" }, /*#__PURE__*/_react.default.createElement("span", { className: "sharing-bar__text" }))]; if (mobileShare) { const onClick = e => { (0, _sharingActions.default)(mobileShare, link, linkText); if (stopPropagation) e.stopPropagation(); }; return /*#__PURE__*/_react.default.createElement("div", { className: (0, _clsx.default)('sharing-bar', className), style: style, onClick: onClick }, indicator); } const sharingItems = []; sharingProvider.filter(item => item.available).forEach(x => { sharingItems.push({ className: null, onClick: e => { if (stopPropagation && e && e.stopPropagation) e.stopPropagation(); (0, _sharingActions.default)(x, link, linkText); }, stringName: x.name, icon: x.icon }); }); return /*#__PURE__*/_react.default.createElement("div", { className: (0, _clsx.default)('sharing-bar', className), style: style }, /*#__PURE__*/_react.default.createElement(_ContextMenu.default, { items: sharingItems, childrenStyle: { display: 'inline' }, disableDialog: chayns.env.isDialog }, indicator)); }; SharingBar.propTypes = { /** * The link that should be shared. */ link: _propTypes.default.string, /** * A text that will be added in front of the shared link. */ linkText: _propTypes.default.string, /** * A classname string that will be applied to the container element. */ className: _propTypes.default.string, /** * Wether click events should be prevented from propagating to parent * elements. */ stopPropagation: _propTypes.default.bool, /** * A React style object that will be applied to the container element. */ style: _propTypes.default.objectOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number])), /** * The children nodes of the `SharingBar`. */ children: _propTypes.default.node }; SharingBar.displayName = 'SharingBar'; var _default = SharingBar; exports.default = _default; //# sourceMappingURL=SharingBar.js.map