UNPKG

@lskjs/navbar

Version:

LSK ux subrepo: navbar

120 lines (96 loc) 10.8 kB
"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