Dashboard sipadu mbip
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import _extends from "@babel/runtime/helpers/esm/extends";
  2. import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
  3. import classNames from 'classnames';
  4. import React, { useContext } from 'react';
  5. import BaseDropdown from 'react-overlays/Dropdown';
  6. import { useUncontrolled } from 'uncontrollable';
  7. import useEventCallback from '@restart/hooks/useEventCallback';
  8. import { useBootstrapPrefix } from './ThemeProvider';
  9. import DropdownMenu from './DropdownMenu';
  10. import DropdownToggle from './DropdownToggle';
  11. import DropdownItem from './DropdownItem';
  12. import SelectableContext from './SelectableContext';
  13. import createWithBsPrefix from './utils/createWithBsPrefix';
  14. var defaultProps = {
  15. navbar: false
  16. };
  17. var Dropdown = React.forwardRef(function (uncontrolledProps, ref) {
  18. var _useUncontrolled = useUncontrolled(uncontrolledProps, {
  19. show: 'onToggle'
  20. }),
  21. bsPrefix = _useUncontrolled.bsPrefix,
  22. drop = _useUncontrolled.drop,
  23. show = _useUncontrolled.show,
  24. className = _useUncontrolled.className,
  25. alignRight = _useUncontrolled.alignRight,
  26. onSelect = _useUncontrolled.onSelect,
  27. onToggle = _useUncontrolled.onToggle,
  28. focusFirstItemOnShow = _useUncontrolled.focusFirstItemOnShow,
  29. _useUncontrolled$as = _useUncontrolled.as,
  30. Component = _useUncontrolled$as === void 0 ? 'div' : _useUncontrolled$as,
  31. _4 = _useUncontrolled.navbar,
  32. props = _objectWithoutPropertiesLoose(_useUncontrolled, ["bsPrefix", "drop", "show", "className", "alignRight", "onSelect", "onToggle", "focusFirstItemOnShow", "as", "navbar"]);
  33. var onSelectCtx = useContext(SelectableContext);
  34. var prefix = useBootstrapPrefix(bsPrefix, 'dropdown');
  35. var handleToggle = useEventCallback(function (nextShow, event, source) {
  36. if (source === void 0) {
  37. source = event.type;
  38. }
  39. if (event.currentTarget === document) source = 'rootClose';
  40. onToggle(nextShow, event, {
  41. source: source
  42. });
  43. });
  44. var handleSelect = useEventCallback(function (key, event) {
  45. if (onSelectCtx) onSelectCtx(key, event);
  46. if (onSelect) onSelect(key, event);
  47. handleToggle(false, event, 'select');
  48. });
  49. return React.createElement(SelectableContext.Provider, {
  50. value: handleSelect
  51. }, React.createElement(BaseDropdown.ControlledComponent, {
  52. drop: drop,
  53. show: show,
  54. alignEnd: alignRight,
  55. onToggle: handleToggle,
  56. focusFirstItemOnShow: focusFirstItemOnShow,
  57. itemSelector: "." + prefix + "-item:not(.disabled):not(:disabled)"
  58. }, function (_ref) {
  59. var dropdownProps = _ref.props;
  60. return React.createElement(Component, _extends({}, props, dropdownProps, {
  61. ref: ref,
  62. className: classNames(className, show && 'show', (!drop || drop === 'down') && prefix, drop === 'up' && 'dropup', drop === 'right' && 'dropright', drop === 'left' && 'dropleft')
  63. }));
  64. }));
  65. });
  66. Dropdown.displayName = 'Dropdown';
  67. Dropdown.defaultProps = defaultProps;
  68. Dropdown.Toggle = DropdownToggle;
  69. Dropdown.Menu = DropdownMenu;
  70. Dropdown.Item = DropdownItem;
  71. Dropdown.Header = createWithBsPrefix('dropdown-header', {
  72. defaultProps: {
  73. role: 'heading'
  74. }
  75. });
  76. Dropdown.Divider = createWithBsPrefix('dropdown-divider', {
  77. defaultProps: {
  78. role: 'separator'
  79. }
  80. });
  81. export default Dropdown;