labsense-ui-kit 1.4.23 → 1.4.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,6 +11,8 @@ interface ButtonDropdownProps {
11
11
  variant?: 'primary' | 'outline-primary' | 'secondary';
12
12
  placeholder?: string;
13
13
  disabled?: boolean;
14
+ width?: string;
15
+ dropDownPosition?: 'left' | 'center' | 'right';
14
16
  }
15
17
  declare const ButtonDropdown: React.FC<ButtonDropdownProps>;
16
18
  export default ButtonDropdown;
package/dist/index.js CHANGED
@@ -9932,17 +9932,55 @@ var ButtonDropdown = function ButtonDropdown(_ref) {
9932
9932
  _ref$placeholder = _ref.placeholder,
9933
9933
  placeholder = _ref$placeholder === void 0 ? 'Select Option' : _ref$placeholder,
9934
9934
  _ref$disabled = _ref.disabled,
9935
- disabled = _ref$disabled === void 0 ? false : _ref$disabled;
9935
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
9936
+ width = _ref.width,
9937
+ dropDownPosition = _ref.dropDownPosition;
9936
9938
  var _useState = React.useState(false),
9937
9939
  isOpen = _useState[0],
9938
9940
  setIsOpen = _useState[1];
9939
- var _useState2 = React.useState(initialValue || ''),
9940
- selected = _useState2[0],
9941
- setSelected = _useState2[1];
9941
+ var _useState2 = React.useState(false),
9942
+ dropUp = _useState2[0],
9943
+ setDropUp = _useState2[1];
9944
+ var _useState3 = React.useState('left'),
9945
+ dropdownPosition = _useState3[0],
9946
+ setDropdownPosition = _useState3[1];
9947
+ var _useState4 = React.useState(initialValue || ''),
9948
+ selected = _useState4[0],
9949
+ setSelected = _useState4[1];
9942
9950
  var ref = React.useRef(null);
9943
9951
  useClickOutside(ref, function () {
9944
9952
  return setIsOpen(false);
9945
9953
  });
9954
+ var toggleDropdown = function toggleDropdown() {
9955
+ if (ref.current) {
9956
+ var rect = ref.current.getBoundingClientRect();
9957
+ var windowHeight = window.innerHeight;
9958
+ var windowWidth = window.innerWidth;
9959
+ var spaceBelow = windowHeight - rect.bottom;
9960
+ var spaceAbove = rect.top;
9961
+ var dropdownHeight = 95;
9962
+ if (spaceBelow < dropdownHeight && spaceAbove > dropdownHeight) {
9963
+ setDropUp(true);
9964
+ } else {
9965
+ setDropUp(false);
9966
+ }
9967
+ if (!dropDownPosition) {
9968
+ var dropdownWidth = rect.width;
9969
+ var spaceRight = windowWidth - rect.left;
9970
+ var spaceLeft = rect.right;
9971
+ if (spaceRight < dropdownWidth && spaceLeft > dropdownWidth) {
9972
+ setDropdownPosition('right');
9973
+ } else if (rect.left < dropdownWidth / 2 && windowWidth - rect.right < dropdownWidth / 2) {
9974
+ setDropdownPosition('center');
9975
+ } else {
9976
+ setDropdownPosition('left');
9977
+ }
9978
+ }
9979
+ }
9980
+ setIsOpen(function (prev) {
9981
+ return !prev;
9982
+ });
9983
+ };
9946
9984
  var handleSelect = function handleSelect(value, onClick) {
9947
9985
  setSelected(value);
9948
9986
  onClick();
@@ -9953,21 +9991,22 @@ var ButtonDropdown = function ButtonDropdown(_ref) {
9953
9991
  })) === null || _options$find === void 0 ? void 0 : _options$find.label) || placeholder;
9954
9992
  return React__default.createElement(Container, {
9955
9993
  "$position": 'relative',
9956
- ref: ref
9994
+ ref: ref,
9995
+ "$width": width
9957
9996
  }, React__default.createElement(ButtonComponent, {
9958
9997
  text: selectedLabel,
9959
9998
  icon: isOpen ? 'UpArrow' : 'DownArrow',
9960
9999
  size: size,
9961
10000
  variant: variant,
9962
10001
  disabled: disabled,
9963
- onClick: function onClick() {
9964
- return setIsOpen(function (prev) {
9965
- return !prev;
9966
- });
9967
- }
10002
+ onClick: toggleDropdown,
10003
+ buttonWidth: width
9968
10004
  }), isOpen && React__default.createElement(DropdownMenu$1, {
9969
- "$top": '40px',
9970
- "$optionsAvailable": Option.length > 0
10005
+ "$width": width,
10006
+ "$top": dropUp ? 'auto' : '126%',
10007
+ "$bottom": dropUp ? '126%' : 'auto',
10008
+ "$optionsAvailable": options.length > 0,
10009
+ "$dropDownPosition": dropDownPosition || dropdownPosition
9971
10010
  }, options.map(function (option) {
9972
10011
  return React__default.createElement(Options, {
9973
10012
  key: option.value,