wix-style-react
Version:
wix-style-react
168 lines (167 loc) • 6.28 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _Focusable = require("../common/Focusable");
var _wixUiIconsCommon = require("@wix/wix-ui-icons-common");
var _SidebarSectionItemSt = require("./SidebarSectionItem.st.css");
var _constants = require("./constants");
var _Text = _interopRequireDefault(require("../Text"));
var _SidebarAPI = require("../Sidebar/SidebarAPI");
var _constants2 = require("../Sidebar/constants");
var _context = require("../WixStyleReactProvider/context");
var _jsxFileName = "/home/builduser/work/a9c1ac8876d5057c/packages/wix-style-react/dist/cjs/SidebarSectionItem/SidebarSectionItem.js";
/** An item for the section within the sidebar */
class SidebarSectionItem extends _react.default.PureComponent {
render() {
var {
dataHook,
children,
selected,
disabled,
drillable,
alwaysDisplayChevron,
prefix,
suffix,
onClick: _onClick,
className,
focusableOnFocus,
focusableOnBlur,
itemKey
} = this.props;
return /*#__PURE__*/_react.default.createElement(_context.WixStyleReactContext.Consumer, {
__self: this,
__source: {
fileName: _jsxFileName,
lineNumber: 57,
columnNumber: 7
}
}, _ref => {
var {
sidebarExperimentCollapsible,
newColorsBranding
} = _ref;
return /*#__PURE__*/_react.default.createElement(_SidebarAPI.SidebarContext.Consumer, {
__self: this,
__source: {
fileName: _jsxFileName,
lineNumber: 59,
columnNumber: 11
}
}, context => {
var skin = context && context.getSkin() || _constants2.sidebarSkins.dark;
return /*#__PURE__*/_react.default.createElement("button", {
"data-hook": dataHook,
"data-selected": selected,
"data-always-display-chevron": alwaysDisplayChevron,
onClick: e => {
if (!disabled) {
_onClick && _onClick(e);
}
if (!e.defaultPrevented) {
context && context.itemClicked(itemKey);
}
},
onFocus: focusableOnFocus,
onBlur: focusableOnBlur,
disabled: disabled,
type: "button",
tabIndex: "0",
className: (0, _SidebarSectionItemSt.st)(_SidebarSectionItemSt.classes.root, {
selected,
disabled,
prefix: Boolean(prefix),
suffix: Boolean(suffix),
drillable,
skin,
alwaysDisplayChevron,
sidebarExperimentCollapsible,
newColorsBranding
}, className),
__self: this,
__source: {
fileName: _jsxFileName,
lineNumber: 63,
columnNumber: 17
}
}, prefix && /*#__PURE__*/_react.default.createElement("span", {
"data-hook": _constants.dataHooks.prefix,
className: _SidebarSectionItemSt.classes.prefix,
__self: this,
__source: {
fileName: _jsxFileName,
lineNumber: 97,
columnNumber: 21
}
}, prefix), /*#__PURE__*/_react.default.createElement("span", {
className: _SidebarSectionItemSt.classes.textWrapper,
"data-hook": _constants.dataHooks.title,
__self: this,
__source: {
fileName: _jsxFileName,
lineNumber: 104,
columnNumber: 19
}
}, /*#__PURE__*/_react.default.createElement(_Text.default, {
className: _SidebarSectionItemSt.classes.text,
size: "small",
weight: "normal",
secondary: skin === _constants2.sidebarSkins.light,
light: skin === _constants2.sidebarSkins.dark,
skin: disabled ? 'disabled' : undefined,
__self: this,
__source: {
fileName: _jsxFileName,
lineNumber: 108,
columnNumber: 21
}
}, children)), !disabled && (suffix || drillable) && /*#__PURE__*/_react.default.createElement("span", {
"data-hook": _constants.dataHooks.suffix,
className: _SidebarSectionItemSt.classes.suffix,
__self: this,
__source: {
fileName: _jsxFileName,
lineNumber: 120,
columnNumber: 21
}
}, suffix || /*#__PURE__*/_react.default.createElement(_wixUiIconsCommon.ChevronRight, {
"data-hook": _constants.dataHooks.chevronRight,
className: _SidebarSectionItemSt.classes.chevron,
__self: this,
__source: {
fileName: _jsxFileName,
lineNumber: 125,
columnNumber: 25
}
})));
});
});
}
}
SidebarSectionItem.displayName = 'SidebarSectionItem';
SidebarSectionItem.propTypes = {
/** Applied as data-hook HTML attribute that can be used in the tests */
dataHook: _propTypes.default.string,
/** A css class to be applied to the component's root element */
className: _propTypes.default.string,
/** An element to appear at the beginning of the text */
prefix: _propTypes.default.node,
/** An element to appear at the end of the text */
suffix: _propTypes.default.node,
/** Indicates whether to display the item as selected */
selected: _propTypes.default.bool,
/** Indicates whether to display the item as disabled */
disabled: _propTypes.default.bool,
/** Indicates whether to display an icon for drilling in on hover */
drillable: _propTypes.default.bool,
/** Indicates whether to display a low-opacity icon for drilling even without hover, relevant only when drillable is true */
alwaysDisplayChevron: _propTypes.default.bool,
/** A callback to be triggered on click */
onClick: _propTypes.default.func,
/** unique identifier per item, used to mark it for navigation and selection */
itemKey: _propTypes.default.string
};
var _default = exports.default = (0, _Focusable.withFocusable)(SidebarSectionItem);
//# sourceMappingURL=SidebarSectionItem.js.map