1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.default = void 0;
|
7 | var _react = _interopRequireDefault(require("react"));
|
8 | var _propTypes = _interopRequireDefault(require("prop-types"));
|
9 | var _classnames = _interopRequireDefault(require("classnames"));
|
10 | var _DropdownContext = require("./DropdownContext");
|
11 | var _utils = require("./utils");
|
12 | const _excluded = ["className", "cssModule", "divider", "tag", "header", "active", "text"];
|
13 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
14 | function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
15 | function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
16 | function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
17 | const propTypes = {
|
18 | children: _propTypes.default.node,
|
19 | active: _propTypes.default.bool,
|
20 | disabled: _propTypes.default.bool,
|
21 | divider: _propTypes.default.bool,
|
22 | tag: _utils.tagPropType,
|
23 | header: _propTypes.default.bool,
|
24 | onClick: _propTypes.default.func,
|
25 | className: _propTypes.default.string,
|
26 | cssModule: _propTypes.default.object,
|
27 | toggle: _propTypes.default.bool,
|
28 | text: _propTypes.default.bool
|
29 | };
|
30 | class DropdownItem extends _react.default.Component {
|
31 | constructor(props) {
|
32 | super(props);
|
33 | this.onClick = this.onClick.bind(this);
|
34 | this.getTabIndex = this.getTabIndex.bind(this);
|
35 | }
|
36 | onClick(e) {
|
37 | const {
|
38 | disabled,
|
39 | header,
|
40 | divider,
|
41 | text
|
42 | } = this.props;
|
43 | if (disabled || header || divider || text) {
|
44 | e.preventDefault();
|
45 | return;
|
46 | }
|
47 | if (this.props.onClick) {
|
48 | this.props.onClick(e);
|
49 | }
|
50 | if (this.props.toggle ?? true) {
|
51 | this.context.toggle(e);
|
52 | }
|
53 | }
|
54 | getRole() {
|
55 | if (this.context.menuRole === 'listbox') {
|
56 | return 'option';
|
57 | }
|
58 | return 'menuitem';
|
59 | }
|
60 | getTabIndex() {
|
61 | const {
|
62 | disabled,
|
63 | header,
|
64 | divider,
|
65 | text
|
66 | } = this.props;
|
67 | if (disabled || header || divider || text) {
|
68 | return '-1';
|
69 | }
|
70 | return '0';
|
71 | }
|
72 | render() {
|
73 | const tabIndex = this.getTabIndex();
|
74 | const role = tabIndex > -1 ? this.getRole() : undefined;
|
75 | let _omit = (0, _utils.omit)(this.props, ['toggle']),
|
76 | {
|
77 | className,
|
78 | cssModule,
|
79 | divider,
|
80 | tag: Tag = 'button',
|
81 | header,
|
82 | active,
|
83 | text
|
84 | } = _omit,
|
85 | props = _objectWithoutProperties(_omit, _excluded);
|
86 | const classes = (0, _utils.mapToCssModules)((0, _classnames.default)(className, {
|
87 | disabled: props.disabled,
|
88 | 'dropdown-item': !divider && !header && !text,
|
89 | active: active,
|
90 | 'dropdown-header': header,
|
91 | 'dropdown-divider': divider,
|
92 | 'dropdown-item-text': text
|
93 | }), cssModule);
|
94 | if (Tag === 'button') {
|
95 | if (header) {
|
96 | Tag = 'h6';
|
97 | } else if (divider) {
|
98 | Tag = 'div';
|
99 | } else if (props.href) {
|
100 | Tag = 'a';
|
101 | } else if (text) {
|
102 | Tag = 'span';
|
103 | }
|
104 | }
|
105 | return _react.default.createElement(Tag, _extends({
|
106 | type: Tag === 'button' && (props.onClick || this.props.toggle) ? 'button' : undefined
|
107 | }, props, {
|
108 | tabIndex: tabIndex,
|
109 | role: role,
|
110 | className: classes,
|
111 | onClick: this.onClick
|
112 | }));
|
113 | }
|
114 | }
|
115 | DropdownItem.propTypes = propTypes;
|
116 | DropdownItem.contextType = _DropdownContext.DropdownContext;
|
117 | var _default = DropdownItem;
|
118 | exports.default = _default; |
\ | No newline at end of file |