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.
@@ -9927,17 +9927,55 @@ var ButtonDropdown = function ButtonDropdown(_ref) {
9927
9927
  _ref$placeholder = _ref.placeholder,
9928
9928
  placeholder = _ref$placeholder === void 0 ? 'Select Option' : _ref$placeholder,
9929
9929
  _ref$disabled = _ref.disabled,
9930
- disabled = _ref$disabled === void 0 ? false : _ref$disabled;
9930
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
9931
+ width = _ref.width,
9932
+ dropDownPosition = _ref.dropDownPosition;
9931
9933
  var _useState = useState(false),
9932
9934
  isOpen = _useState[0],
9933
9935
  setIsOpen = _useState[1];
9934
- var _useState2 = useState(initialValue || ''),
9935
- selected = _useState2[0],
9936
- setSelected = _useState2[1];
9936
+ var _useState2 = useState(false),
9937
+ dropUp = _useState2[0],
9938
+ setDropUp = _useState2[1];
9939
+ var _useState3 = useState('left'),
9940
+ dropdownPosition = _useState3[0],
9941
+ setDropdownPosition = _useState3[1];
9942
+ var _useState4 = useState(initialValue || ''),
9943
+ selected = _useState4[0],
9944
+ setSelected = _useState4[1];
9937
9945
  var ref = useRef(null);
9938
9946
  useClickOutside(ref, function () {
9939
9947
  return setIsOpen(false);
9940
9948
  });
9949
+ var toggleDropdown = function toggleDropdown() {
9950
+ if (ref.current) {
9951
+ var rect = ref.current.getBoundingClientRect();
9952
+ var windowHeight = window.innerHeight;
9953
+ var windowWidth = window.innerWidth;
9954
+ var spaceBelow = windowHeight - rect.bottom;
9955
+ var spaceAbove = rect.top;
9956
+ var dropdownHeight = 95;
9957
+ if (spaceBelow < dropdownHeight && spaceAbove > dropdownHeight) {
9958
+ setDropUp(true);
9959
+ } else {
9960
+ setDropUp(false);
9961
+ }
9962
+ if (!dropDownPosition) {
9963
+ var dropdownWidth = rect.width;
9964
+ var spaceRight = windowWidth - rect.left;
9965
+ var spaceLeft = rect.right;
9966
+ if (spaceRight < dropdownWidth && spaceLeft > dropdownWidth) {
9967
+ setDropdownPosition('right');
9968
+ } else if (rect.left < dropdownWidth / 2 && windowWidth - rect.right < dropdownWidth / 2) {
9969
+ setDropdownPosition('center');
9970
+ } else {
9971
+ setDropdownPosition('left');
9972
+ }
9973
+ }
9974
+ }
9975
+ setIsOpen(function (prev) {
9976
+ return !prev;
9977
+ });
9978
+ };
9941
9979
  var handleSelect = function handleSelect(value, onClick) {
9942
9980
  setSelected(value);
9943
9981
  onClick();
@@ -9948,21 +9986,22 @@ var ButtonDropdown = function ButtonDropdown(_ref) {
9948
9986
  })) === null || _options$find === void 0 ? void 0 : _options$find.label) || placeholder;
9949
9987
  return React.createElement(Container, {
9950
9988
  "$position": 'relative',
9951
- ref: ref
9989
+ ref: ref,
9990
+ "$width": width
9952
9991
  }, React.createElement(ButtonComponent, {
9953
9992
  text: selectedLabel,
9954
9993
  icon: isOpen ? 'UpArrow' : 'DownArrow',
9955
9994
  size: size,
9956
9995
  variant: variant,
9957
9996
  disabled: disabled,
9958
- onClick: function onClick() {
9959
- return setIsOpen(function (prev) {
9960
- return !prev;
9961
- });
9962
- }
9997
+ onClick: toggleDropdown,
9998
+ buttonWidth: width
9963
9999
  }), isOpen && React.createElement(DropdownMenu$1, {
9964
- "$top": '40px',
9965
- "$optionsAvailable": Option.length > 0
10000
+ "$width": width,
10001
+ "$top": dropUp ? 'auto' : '126%',
10002
+ "$bottom": dropUp ? '126%' : 'auto',
10003
+ "$optionsAvailable": options.length > 0,
10004
+ "$dropDownPosition": dropDownPosition || dropdownPosition
9966
10005
  }, options.map(function (option) {
9967
10006
  return React.createElement(Options, {
9968
10007
  key: option.value,