@primer/react
Version:
An implementation of GitHub's Primer Design System using React
61 lines (54 loc) • 2.21 kB
JavaScript
'use strict';
var React = require('react');
var Box = require('../../Box/Box.js');
var TabNav = require('../../TabNav/TabNav.js');
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
var React__default = /*#__PURE__*/_interopDefault(React);
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
// no point in memoizing this component because onLoadPreview depends on value, so it would still re-render on every change
const ViewSwitch = ({
selectedView,
onViewSelect,
onLoadPreview,
disabled
}) => {
// don't get disabled from context - the switch is not disabled when the editor is disabled
const sharedProps = selectedView === 'preview' ? {
onClick: () => onViewSelect === null || onViewSelect === void 0 ? void 0 : onViewSelect('edit')
} : {
onClick: () => {
onLoadPreview();
onViewSelect === null || onViewSelect === void 0 ? void 0 : onViewSelect('preview');
},
onMouseOver: () => onLoadPreview(),
onFocus: () => onLoadPreview()
};
return /*#__PURE__*/React__default.default.createElement(Box, {
sx: {
display: 'flex',
flexDirection: 'row'
}
}, /*#__PURE__*/React__default.default.createElement(TabNav, {
"aria-label": "View mode"
}, /*#__PURE__*/React__default.default.createElement(TabNav.Link, _extends({}, sharedProps, {
as: "button",
selected: selectedView === 'edit',
disabled: disabled,
sx: {
cursor: 'pointer',
color: selectedView === 'edit' ? 'fg.default' : 'fg.muted',
borderTopLeftRadius: 1
}
}), "Write"), /*#__PURE__*/React__default.default.createElement(TabNav.Link, _extends({}, sharedProps, {
as: "button",
selected: selectedView === 'preview',
disabled: disabled,
sx: {
cursor: 'pointer',
color: selectedView === 'preview' ? 'fg.default' : 'fg.muted',
borderTopLeftRadius: 1
}
}), "Preview")));
};
ViewSwitch.displayName = "ViewSwitch";
exports.ViewSwitch = ViewSwitch;