@lskjs/navbar
Version:
LSK ux subrepo: navbar
120 lines (96 loc) • 10.8 kB
JavaScript
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _classnames = _interopRequireDefault(require("classnames"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _react = _interopRequireWildcard(require("react"));
var _useEventCallback = _interopRequireDefault(require("@restart/hooks/useEventCallback"));
var _SafeAnchor = _interopRequireDefault(require("./SafeAnchor"));
var _SelectableContext = _interopRequireWildcard(require("./SelectableContext"));
var _ThemeProvider = require("./ThemeProvider");
var _NavContext = _interopRequireDefault(require("./NavContext"));
var propTypes = {
/** @default 'dropdown' */
bsPrefix: _propTypes["default"].string,
/**
* Highlight the menu item as active.
*/
active: _propTypes["default"].bool,
/**
* Disable the menu item, making it unselectable.
*/
disabled: _propTypes["default"].bool,
/**
* Value passed to the `onSelect` handler, useful for identifying the selected menu item.
*/
eventKey: _propTypes["default"].any,
/**
* HTML `href` attribute corresponding to `a.href`.
*/
href: _propTypes["default"].string,
/**
* Callback fired when the menu item is clicked.
*/
onClick: _propTypes["default"].func,
/**
* Callback fired when the menu item is selected.
*
* ```js
* (eventKey: any, event: Object) => any
* ```
*/
onSelect: _propTypes["default"].func,
as: _propTypes["default"].elementType
};
var defaultProps = {
as: _SafeAnchor["default"],
disabled: false
};
var DropdownItem = _react["default"].forwardRef(function (_ref, ref) {
var bsPrefix = _ref.bsPrefix,
className = _ref.className,
children = _ref.children,
eventKey = _ref.eventKey,
disabled = _ref.disabled,
href = _ref.href,
onClick = _ref.onClick,
onSelect = _ref.onSelect,
propActive = _ref.active,
Component = _ref.as,
props = (0, _objectWithoutProperties2["default"])(_ref, ["bsPrefix", "className", "children", "eventKey", "disabled", "href", "onClick", "onSelect", "active", "as"]);
var prefix = (0, _ThemeProvider.useBootstrapPrefix)(bsPrefix, 'dropdown-item');
var onSelectCtx = (0, _react.useContext)(_SelectableContext["default"]);
var navContext = (0, _react.useContext)(_NavContext["default"]);
var _ref2 = navContext || {},
activeKey = _ref2.activeKey;
var key = (0, _SelectableContext.makeEventKey)(eventKey, href);
var active = propActive == null && key != null ? (0, _SelectableContext.makeEventKey)(activeKey) === key : propActive;
var handleClick = (0, _useEventCallback["default"])(function (event) {
// SafeAnchor handles the disabled case, but we handle it here
// for other components
if (disabled) return;
if (onClick) onClick(event);
if (onSelectCtx) onSelectCtx(key, event);
if (onSelect) onSelect(key, event);
});
return /*#__PURE__*/_react["default"].createElement(Component, (0, _extends2["default"])({}, props, {
ref: ref,
href: href,
disabled: disabled,
className: (0, _classnames["default"])(className, prefix, active && 'active', disabled && 'disabled'),
onClick: handleClick
}), children);
});
DropdownItem.displayName = 'DropdownItem';
DropdownItem.propTypes = propTypes;
DropdownItem.defaultProps = defaultProps;
var _default = DropdownItem;
exports["default"] = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9Ecm9wZG93bkl0ZW0uanMiXSwibmFtZXMiOlsicHJvcFR5cGVzIiwiYnNQcmVmaXgiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJhY3RpdmUiLCJib29sIiwiZGlzYWJsZWQiLCJldmVudEtleSIsImFueSIsImhyZWYiLCJvbkNsaWNrIiwiZnVuYyIsIm9uU2VsZWN0IiwiYXMiLCJlbGVtZW50VHlwZSIsImRlZmF1bHRQcm9wcyIsIlNhZmVBbmNob3IiLCJEcm9wZG93bkl0ZW0iLCJSZWFjdCIsImZvcndhcmRSZWYiLCJyZWYiLCJjbGFzc05hbWUiLCJjaGlsZHJlbiIsInByb3BBY3RpdmUiLCJDb21wb25lbnQiLCJwcm9wcyIsInByZWZpeCIsIm9uU2VsZWN0Q3R4IiwiU2VsZWN0YWJsZUNvbnRleHQiLCJuYXZDb250ZXh0IiwiTmF2Q29udGV4dCIsImFjdGl2ZUtleSIsImtleSIsImhhbmRsZUNsaWNrIiwiZXZlbnQiLCJkaXNwbGF5TmFtZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsSUFBTUEsU0FBUyxHQUFHO0FBQ2hCO0FBQ0FDLEVBQUFBLFFBQVEsRUFBRUMsc0JBQVVDLE1BRko7O0FBSWhCOzs7QUFHQUMsRUFBQUEsTUFBTSxFQUFFRixzQkFBVUcsSUFQRjs7QUFTaEI7OztBQUdBQyxFQUFBQSxRQUFRLEVBQUVKLHNCQUFVRyxJQVpKOztBQWNoQjs7O0FBR0FFLEVBQUFBLFFBQVEsRUFBRUwsc0JBQVVNLEdBakJKOztBQW1CaEI7OztBQUdBQyxFQUFBQSxJQUFJLEVBQUVQLHNCQUFVQyxNQXRCQTs7QUF3QmhCOzs7QUFHQU8sRUFBQUEsT0FBTyxFQUFFUixzQkFBVVMsSUEzQkg7O0FBNkJoQjs7Ozs7OztBQU9BQyxFQUFBQSxRQUFRLEVBQUVWLHNCQUFVUyxJQXBDSjtBQXNDaEJFLEVBQUFBLEVBQUUsRUFBRVgsc0JBQVVZO0FBdENFLENBQWxCO0FBeUNBLElBQU1DLFlBQVksR0FBRztBQUNuQkYsRUFBQUEsRUFBRSxFQUFFRyxzQkFEZTtBQUVuQlYsRUFBQUEsUUFBUSxFQUFFO0FBRlMsQ0FBckI7O0FBS0EsSUFBTVcsWUFBWSxHQUFHQyxrQkFBTUMsVUFBTixDQUNuQixnQkFjRUMsR0FkRixFQWVLO0FBQUEsTUFiRG5CLFFBYUMsUUFiREEsUUFhQztBQUFBLE1BWkRvQixTQVlDLFFBWkRBLFNBWUM7QUFBQSxNQVhEQyxRQVdDLFFBWERBLFFBV0M7QUFBQSxNQVZEZixRQVVDLFFBVkRBLFFBVUM7QUFBQSxNQVRERCxRQVNDLFFBVERBLFFBU0M7QUFBQSxNQVJERyxJQVFDLFFBUkRBLElBUUM7QUFBQSxNQVBEQyxPQU9DLFFBUERBLE9BT0M7QUFBQSxNQU5ERSxRQU1DLFFBTkRBLFFBTUM7QUFBQSxNQUxPVyxVQUtQLFFBTERuQixNQUtDO0FBQUEsTUFKR29CLFNBSUgsUUFKRFgsRUFJQztBQUFBLE1BSEVZLEtBR0Y7QUFDSCxNQUFNQyxNQUFNLEdBQUcsdUNBQW1CekIsUUFBbkIsRUFBNkIsZUFBN0IsQ0FBZjtBQUNBLE1BQU0wQixXQUFXLEdBQUcsdUJBQVdDLDZCQUFYLENBQXBCO0FBQ0EsTUFBTUMsVUFBVSxHQUFHLHVCQUFXQyxzQkFBWCxDQUFuQjs7QUFIRyxjQUttQkQsVUFBVSxJQUFJLEVBTGpDO0FBQUEsTUFLS0UsU0FMTCxTQUtLQSxTQUxMOztBQU1ILE1BQU1DLEdBQUcsR0FBRyxxQ0FBYXpCLFFBQWIsRUFBdUJFLElBQXZCLENBQVo7QUFFQSxNQUFNTCxNQUFNLEdBQ1ZtQixVQUFVLElBQUksSUFBZCxJQUFzQlMsR0FBRyxJQUFJLElBQTdCLEdBQ0kscUNBQWFELFNBQWIsTUFBNEJDLEdBRGhDLEdBRUlULFVBSE47QUFLQSxNQUFNVSxXQUFXLEdBQUcsa0NBQWlCLFVBQUFDLEtBQUssRUFBSTtBQUM1QztBQUNBO0FBQ0EsUUFBSTVCLFFBQUosRUFBYztBQUNkLFFBQUlJLE9BQUosRUFBYUEsT0FBTyxDQUFDd0IsS0FBRCxDQUFQO0FBQ2IsUUFBSVAsV0FBSixFQUFpQkEsV0FBVyxDQUFDSyxHQUFELEVBQU1FLEtBQU4sQ0FBWDtBQUNqQixRQUFJdEIsUUFBSixFQUFjQSxRQUFRLENBQUNvQixHQUFELEVBQU1FLEtBQU4sQ0FBUjtBQUNmLEdBUG1CLENBQXBCO0FBU0Esc0JBQ0UsZ0NBQUMsU0FBRCxnQ0FDTVQsS0FETjtBQUVFLElBQUEsR0FBRyxFQUFFTCxHQUZQO0FBR0UsSUFBQSxJQUFJLEVBQUVYLElBSFI7QUFJRSxJQUFBLFFBQVEsRUFBRUgsUUFKWjtBQUtFLElBQUEsU0FBUyxFQUFFLDRCQUNUZSxTQURTLEVBRVRLLE1BRlMsRUFHVHRCLE1BQU0sSUFBSSxRQUhELEVBSVRFLFFBQVEsSUFBSSxVQUpILENBTGI7QUFXRSxJQUFBLE9BQU8sRUFBRTJCO0FBWFgsTUFhR1gsUUFiSCxDQURGO0FBaUJELENBdkRrQixDQUFyQjs7QUEwREFMLFlBQVksQ0FBQ2tCLFdBQWIsR0FBMkIsY0FBM0I7QUFDQWxCLFlBQVksQ0FBQ2pCLFNBQWIsR0FBeUJBLFNBQXpCO0FBQ0FpQixZQUFZLENBQUNGLFlBQWIsR0FBNEJBLFlBQTVCO2VBRWVFLFkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0ByZXN0YXJ0L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuXG5pbXBvcnQgU2FmZUFuY2hvciBmcm9tICcuL1NhZmVBbmNob3InO1xuaW1wb3J0IFNlbGVjdGFibGVDb250ZXh0LCB7IG1ha2VFdmVudEtleSB9IGZyb20gJy4vU2VsZWN0YWJsZUNvbnRleHQnO1xuaW1wb3J0IHsgdXNlQm9vdHN0cmFwUHJlZml4IH0gZnJvbSAnLi9UaGVtZVByb3ZpZGVyJztcbmltcG9ydCBOYXZDb250ZXh0IGZyb20gJy4vTmF2Q29udGV4dCc7XG5cbmNvbnN0IHByb3BUeXBlcyA9IHtcbiAgLyoqIEBkZWZhdWx0ICdkcm9wZG93bicgKi9cbiAgYnNQcmVmaXg6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIEhpZ2hsaWdodCB0aGUgbWVudSBpdGVtIGFzIGFjdGl2ZS5cbiAgICovXG4gIGFjdGl2ZTogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIG1lbnUgaXRlbSwgbWFraW5nIGl0IHVuc2VsZWN0YWJsZS5cbiAgICovXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogVmFsdWUgcGFzc2VkIHRvIHRoZSBgb25TZWxlY3RgIGhhbmRsZXIsIHVzZWZ1bCBmb3IgaWRlbnRpZnlpbmcgdGhlIHNlbGVjdGVkIG1lbnUgaXRlbS5cbiAgICovXG4gIGV2ZW50S2V5OiBQcm9wVHlwZXMuYW55LFxuXG4gIC8qKlxuICAgKiBIVE1MIGBocmVmYCBhdHRyaWJ1dGUgY29ycmVzcG9uZGluZyB0byBgYS5ocmVmYC5cbiAgICovXG4gIGhyZWY6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIG1lbnUgaXRlbSBpcyBjbGlja2VkLlxuICAgKi9cbiAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIG1lbnUgaXRlbSBpcyBzZWxlY3RlZC5cbiAgICpcbiAgICogYGBganNcbiAgICogKGV2ZW50S2V5OiBhbnksIGV2ZW50OiBPYmplY3QpID0+IGFueVxuICAgKiBgYGBcbiAgICovXG4gIG9uU2VsZWN0OiBQcm9wVHlwZXMuZnVuYyxcblxuICBhczogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxufTtcblxuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICBhczogU2FmZUFuY2hvcixcbiAgZGlzYWJsZWQ6IGZhbHNlLFxufTtcblxuY29uc3QgRHJvcGRvd25JdGVtID0gUmVhY3QuZm9yd2FyZFJlZihcbiAgKFxuICAgIHtcbiAgICAgIGJzUHJlZml4LFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBldmVudEtleSxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgaHJlZixcbiAgICAgIG9uQ2xpY2ssXG4gICAgICBvblNlbGVjdCxcbiAgICAgIGFjdGl2ZTogcHJvcEFjdGl2ZSxcbiAgICAgIGFzOiBDb21wb25lbnQsXG4gICAgICAuLi5wcm9wc1xuICAgIH0sXG4gICAgcmVmLFxuICApID0+IHtcbiAgICBjb25zdCBwcmVmaXggPSB1c2VCb290c3RyYXBQcmVmaXgoYnNQcmVmaXgsICdkcm9wZG93bi1pdGVtJyk7XG4gICAgY29uc3Qgb25TZWxlY3RDdHggPSB1c2VDb250ZXh0KFNlbGVjdGFibGVDb250ZXh0KTtcbiAgICBjb25zdCBuYXZDb250ZXh0ID0gdXNlQ29udGV4dChOYXZDb250ZXh0KTtcblxuICAgIGNvbnN0IHsgYWN0aXZlS2V5IH0gPSBuYXZDb250ZXh0IHx8IHt9O1xuICAgIGNvbnN0IGtleSA9IG1ha2VFdmVudEtleShldmVudEtleSwgaHJlZik7XG5cbiAgICBjb25zdCBhY3RpdmUgPVxuICAgICAgcHJvcEFjdGl2ZSA9PSBudWxsICYmIGtleSAhPSBudWxsXG4gICAgICAgID8gbWFrZUV2ZW50S2V5KGFjdGl2ZUtleSkgPT09IGtleVxuICAgICAgICA6IHByb3BBY3RpdmU7XG5cbiAgICBjb25zdCBoYW5kbGVDbGljayA9IHVzZUV2ZW50Q2FsbGJhY2soZXZlbnQgPT4ge1xuICAgICAgLy8gU2FmZUFuY2hvciBoYW5kbGVzIHRoZSBkaXNhYmxlZCBjYXNlLCBidXQgd2UgaGFuZGxlIGl0IGhlcmVcbiAgICAgIC8vIGZvciBvdGhlciBjb21wb25lbnRzXG4gICAgICBpZiAoZGlzYWJsZWQpIHJldHVybjtcbiAgICAgIGlmIChvbkNsaWNrKSBvbkNsaWNrKGV2ZW50KTtcbiAgICAgIGlmIChvblNlbGVjdEN0eCkgb25TZWxlY3RDdHgoa2V5LCBldmVudCk7XG4gICAgICBpZiAob25TZWxlY3QpIG9uU2VsZWN0KGtleSwgZXZlbnQpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxDb21wb25lbnRcbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgaHJlZj17aHJlZn1cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXG4gICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgIHByZWZpeCxcbiAgICAgICAgICBhY3RpdmUgJiYgJ2FjdGl2ZScsXG4gICAgICAgICAgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICAgICAgKX1cbiAgICAgICAgb25DbGljaz17aGFuZGxlQ2xpY2t9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvQ29tcG9uZW50PlxuICAgICk7XG4gIH0sXG4pO1xuXG5Ecm9wZG93bkl0ZW0uZGlzcGxheU5hbWUgPSAnRHJvcGRvd25JdGVtJztcbkRyb3Bkb3duSXRlbS5wcm9wVHlwZXMgPSBwcm9wVHlwZXM7XG5Ecm9wZG93bkl0ZW0uZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuXG5leHBvcnQgZGVmYXVsdCBEcm9wZG93bkl0ZW07XG4iXX0=
//# sourceMappingURL=DropdownItem.js.map