labsense-ui-kit 1.1.91 → 1.1.92

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.
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ export interface DropdownOption {
3
+ label: string;
4
+ value: string;
5
+ onClick: () => void;
6
+ }
7
+ interface ButtonDropdownProps {
8
+ options: DropdownOption[];
9
+ initialValue?: string;
10
+ size?: 'small' | 'medium' | 'large';
11
+ variant?: 'primary' | 'outline-primary' | 'secondary';
12
+ placeholder?: string;
13
+ }
14
+ declare const ButtonDropdown: React.FC<ButtonDropdownProps>;
15
+ export default ButtonDropdown;
@@ -1,5 +1,6 @@
1
+ import ButtonDropdown from './ButtonDropdown';
1
2
  import MultiSelectDropdown from './MultiSelectDropdown';
2
3
  import OptionComponent from './OptionComponent';
3
4
  import SelectedOption from './SelectedOption';
4
5
  import SelectOption, { DropdownMenu, Options } from './SelectOption';
5
- export { MultiSelectDropdown, OptionComponent, SelectedOption, SelectOption, DropdownMenu, Options };
6
+ export { ButtonDropdown, MultiSelectDropdown, OptionComponent, SelectedOption, SelectOption, DropdownMenu, Options };
package/dist/index.d.ts CHANGED
@@ -4,7 +4,7 @@ import { Button, ButtonProps, ButtonLoaderProps } from './Buttons';
4
4
  import { ButtonCarousel } from './Carousel';
5
5
  import { Container, Span } from './Container&Span/StyledComponents';
6
6
  import { DatePicker } from './Date-Time';
7
- import { MultiSelectDropdown, OptionComponent, SelectedOption, SelectOption, DropdownMenu, Options } from './Dropdown';
7
+ import { ButtonDropdown, MultiSelectDropdown, OptionComponent, SelectedOption, SelectOption, DropdownMenu, Options } from './Dropdown';
8
8
  import { useClickOutside, useCustomModal, useNotification, useTheme } from './hooks';
9
9
  import { Icon, IconNames } from './Icons';
10
10
  import { SearchBox, TextArea, TextField, TextFieldWithDropdown, CheckBox } from './Inputs';
@@ -23,7 +23,7 @@ export { Button, ButtonProps, ButtonLoaderProps };
23
23
  export { ButtonCarousel };
24
24
  export { Container, Span };
25
25
  export { DatePicker };
26
- export { MultiSelectDropdown, OptionComponent, SelectedOption, SelectOption, DropdownMenu, Options };
26
+ export { ButtonDropdown, MultiSelectDropdown, OptionComponent, SelectedOption, SelectOption, DropdownMenu, Options };
27
27
  export { useClickOutside, useCustomModal, useNotification, useTheme };
28
28
  export { Icon, IconNames };
29
29
  export { SearchBox, TextArea, TextField, TextFieldWithDropdown, CheckBox };
package/dist/index.js CHANGED
@@ -5348,74 +5348,8 @@ var MultiSelectDropdown = function MultiSelectDropdown(_ref31) {
5348
5348
  }))));
5349
5349
  };
5350
5350
 
5351
- var _templateObject$c, _templateObject2$9, _templateObject3$6;
5352
- var SelectedOptionsWrapper$1 = styled__default.div(_templateObject$c || (_templateObject$c = _taggedTemplateLiteralLoose(["\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n"])));
5353
- var SelectedOptionDiv$1 = styled__default.div(_templateObject2$9 || (_templateObject2$9 = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n background: ", ";\n border-radius: 4px;\n padding: 6px 8px;\n box-sizing: border-box;\n gap: 6px;\n font-family: NotoSans, sans-serif;\n font-style: normal;\n font-weight: 400;\n font-size: 12px;\n line-height: 12px;\n color: ", ";\n"])), function (_ref) {
5354
- var $selectedOptionBackground = _ref.$selectedOptionBackground,
5355
- $type = _ref.$type,
5356
- theme = _ref.theme;
5357
- return $selectedOptionBackground || $type === 'remove' ? theme.disabled.error : theme.accent.softBlue;
5358
- }, function (_ref2) {
5359
- var $selectedOptionColor = _ref2.$selectedOptionColor,
5360
- $type = _ref2.$type,
5361
- theme = _ref2.theme;
5362
- return $selectedOptionColor || $type === 'remove' ? theme["default"].error : theme.brand.primary;
5363
- });
5364
- var RemoveIcon$1 = styled__default.div(_templateObject3$6 || (_templateObject3$6 = _taggedTemplateLiteralLoose(["\n width: 14px;\n height: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 50%;\n box-sizing: border-box;\n background: ", ";\n"])), function (_ref3) {
5365
- var $removeIconBackground = _ref3.$removeIconBackground,
5366
- $type = _ref3.$type,
5367
- theme = _ref3.theme;
5368
- return $removeIconBackground || $type === 'remove' ? '#5E5E5E24' : theme.disabled.primary;
5369
- });
5370
- var SelectedOption = function SelectedOption(_ref4) {
5371
- var selectedOptions = _ref4.selectedOptions,
5372
- allOptions = _ref4.allOptions,
5373
- selectedOptionBackground = _ref4.selectedOptionBackground,
5374
- selectedOptionColor = _ref4.selectedOptionColor,
5375
- removeIconBackground = _ref4.removeIconBackground,
5376
- removeIconColor = _ref4.removeIconColor,
5377
- onChange = _ref4.onChange,
5378
- type = _ref4.type;
5379
- var themeColors = useTheme();
5380
- var selectedOptionObjects = allOptions.filter(function (opt) {
5381
- return selectedOptions.includes(opt.value);
5382
- }).sort(function (a, b) {
5383
- return a.labelText.localeCompare(b.labelText);
5384
- });
5385
- var handleOptionRemoval = function handleOptionRemoval(optionValue) {
5386
- if (onChange) {
5387
- onChange(selectedOptions.filter(function (value) {
5388
- return value !== optionValue;
5389
- }));
5390
- }
5391
- };
5392
- return React__default.createElement(SelectedOptionsWrapper$1, null, selectedOptionObjects.map(function (option) {
5393
- return React__default.createElement(SelectedOptionDiv$1, {
5394
- key: option.value,
5395
- "$type": type,
5396
- "$selectedOptionBackground": selectedOptionBackground,
5397
- "$selectedOptionColor": selectedOptionColor,
5398
- onClick: function onClick(e) {
5399
- e.stopPropagation();
5400
- handleOptionRemoval(option.value);
5401
- }
5402
- }, option.labelText, React__default.createElement(RemoveIcon$1, {
5403
- "$removeIconBackground": removeIconBackground,
5404
- "$type": type,
5405
- onClick: function onClick(e) {
5406
- e.stopPropagation();
5407
- handleOptionRemoval(option.value);
5408
- }
5409
- }, React__default.createElement(Icon, {
5410
- icon: 'Close',
5411
- size: 6,
5412
- color: removeIconColor || type === 'remove' ? themeColors["default"].error : themeColors.brand.primary
5413
- })));
5414
- }));
5415
- };
5416
-
5417
- var _templateObject$d, _templateObject2$a, _templateObject3$7, _templateObject4$5, _templateObject5$5, _templateObject6$5, _templateObject7$3, _templateObject8$3, _templateObject9$3, _templateObject10$3;
5418
- var TitleText$1 = styled__default.label(_templateObject$d || (_templateObject$d = _taggedTemplateLiteralLoose(["\n position: relative;\n width: max-content;\n white-space: nowrap;\n font-weight: ", ";\n ", "\n\n color: ", ";\n"])), function (_ref) {
5351
+ var _templateObject$c, _templateObject2$9, _templateObject3$6, _templateObject4$5, _templateObject5$5, _templateObject6$5, _templateObject7$3, _templateObject8$3, _templateObject9$3, _templateObject10$3;
5352
+ var TitleText$1 = styled__default.label(_templateObject$c || (_templateObject$c = _taggedTemplateLiteralLoose(["\n position: relative;\n width: max-content;\n white-space: nowrap;\n font-weight: ", ";\n ", "\n\n color: ", ";\n"])), function (_ref) {
5419
5353
  var $titleWeight = _ref.$titleWeight;
5420
5354
  return $titleWeight || 500;
5421
5355
  }, function (_ref2) {
@@ -5454,11 +5388,11 @@ var TitleText$1 = styled__default.label(_templateObject$d || (_templateObject$d
5454
5388
  return $titlecolor;
5455
5389
  }
5456
5390
  });
5457
- var DropdownContainer$1 = styled__default.div(_templateObject2$a || (_templateObject2$a = _taggedTemplateLiteralLoose(["\n width: ", ";\n max-width: 100%;\n position: relative;\n gap: 8px;\n display: flex;\n"])), function (_ref4) {
5391
+ var DropdownContainer$1 = styled__default.div(_templateObject2$9 || (_templateObject2$9 = _taggedTemplateLiteralLoose(["\n width: ", ";\n max-width: 100%;\n position: relative;\n gap: 8px;\n display: flex;\n"])), function (_ref4) {
5458
5392
  var $width = _ref4.$width;
5459
5393
  return $width || '100%';
5460
5394
  });
5461
- var DropdownButton$1 = styled__default.div(_templateObject3$7 || (_templateObject3$7 = _taggedTemplateLiteralLoose(["\n display: flex;\n justify-content: space-between;\n align-items: center;\n cursor: ", ";\n font-family: NotoSans, sans-serif;\n font-weight: 400;\n width: ", ";\n height: ", ";\n border-radius: ", ";\n transition: all 0.3s ease;\n border: ", ";\n gap: 6px;\n padding: ", ";\n background: ", ";\n font-size: ", ";\n line-height: ", ";\n"])), function (_ref5) {
5395
+ var DropdownButton$1 = styled__default.div(_templateObject3$6 || (_templateObject3$6 = _taggedTemplateLiteralLoose(["\n display: flex;\n justify-content: space-between;\n align-items: center;\n cursor: ", ";\n font-family: NotoSans, sans-serif;\n font-weight: 400;\n width: ", ";\n height: ", ";\n border-radius: ", ";\n transition: all 0.3s ease;\n border: ", ";\n gap: 6px;\n padding: ", ";\n background: ", ";\n font-size: ", ";\n line-height: ", ";\n"])), function (_ref5) {
5462
5396
  var $disabled = _ref5.$disabled;
5463
5397
  return $disabled ? 'not-allowed' : 'pointer';
5464
5398
  }, function (_ref6) {
@@ -5816,6 +5750,126 @@ var SelectOption = function SelectOption(_ref36) {
5816
5750
  }) : React__default.createElement(NoOptions, null, NoOptionsText)))));
5817
5751
  };
5818
5752
 
5753
+ var ButtonDropdown = function ButtonDropdown(_ref) {
5754
+ var _options$find;
5755
+ var options = _ref.options,
5756
+ initialValue = _ref.initialValue,
5757
+ _ref$size = _ref.size,
5758
+ size = _ref$size === void 0 ? 'small' : _ref$size,
5759
+ _ref$variant = _ref.variant,
5760
+ variant = _ref$variant === void 0 ? 'outline-primary' : _ref$variant,
5761
+ _ref$placeholder = _ref.placeholder,
5762
+ placeholder = _ref$placeholder === void 0 ? 'Select Option' : _ref$placeholder;
5763
+ var _useState = React.useState(false),
5764
+ isOpen = _useState[0],
5765
+ setIsOpen = _useState[1];
5766
+ var _useState2 = React.useState(initialValue || ''),
5767
+ selected = _useState2[0],
5768
+ setSelected = _useState2[1];
5769
+ var ref = React.useRef(null);
5770
+ useClickOutside(ref, function () {
5771
+ return setIsOpen(false);
5772
+ });
5773
+ var handleSelect = function handleSelect(value, onClick) {
5774
+ setSelected(value);
5775
+ onClick();
5776
+ setIsOpen(false);
5777
+ };
5778
+ var selectedLabel = ((_options$find = options.find(function (opt) {
5779
+ return opt.value === selected;
5780
+ })) === null || _options$find === void 0 ? void 0 : _options$find.label) || placeholder;
5781
+ return React__default.createElement(Container, {
5782
+ "$position": 'relative',
5783
+ ref: ref
5784
+ }, React__default.createElement(ButtonComponent, {
5785
+ text: selectedLabel,
5786
+ icon: isOpen ? 'UpArrow' : 'DownArrow',
5787
+ size: size,
5788
+ variant: variant,
5789
+ onClick: function onClick() {
5790
+ return setIsOpen(function (prev) {
5791
+ return !prev;
5792
+ });
5793
+ }
5794
+ }), isOpen && React__default.createElement(DropdownMenu$1, {
5795
+ "$top": '40px',
5796
+ "$optionsAvailable": Option.length > 0
5797
+ }, options.map(function (option) {
5798
+ return React__default.createElement(Options, {
5799
+ key: option.value,
5800
+ onClick: function onClick() {
5801
+ return handleSelect(option.value, option.onClick);
5802
+ }
5803
+ }, option.label);
5804
+ })));
5805
+ };
5806
+
5807
+ var _templateObject$d, _templateObject2$a, _templateObject3$7;
5808
+ var SelectedOptionsWrapper$1 = styled__default.div(_templateObject$d || (_templateObject$d = _taggedTemplateLiteralLoose(["\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n"])));
5809
+ var SelectedOptionDiv$1 = styled__default.div(_templateObject2$a || (_templateObject2$a = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n background: ", ";\n border-radius: 4px;\n padding: 6px 8px;\n box-sizing: border-box;\n gap: 6px;\n font-family: NotoSans, sans-serif;\n font-style: normal;\n font-weight: 400;\n font-size: 12px;\n line-height: 12px;\n color: ", ";\n"])), function (_ref) {
5810
+ var $selectedOptionBackground = _ref.$selectedOptionBackground,
5811
+ $type = _ref.$type,
5812
+ theme = _ref.theme;
5813
+ return $selectedOptionBackground || $type === 'remove' ? theme.disabled.error : theme.accent.softBlue;
5814
+ }, function (_ref2) {
5815
+ var $selectedOptionColor = _ref2.$selectedOptionColor,
5816
+ $type = _ref2.$type,
5817
+ theme = _ref2.theme;
5818
+ return $selectedOptionColor || $type === 'remove' ? theme["default"].error : theme.brand.primary;
5819
+ });
5820
+ var RemoveIcon$1 = styled__default.div(_templateObject3$7 || (_templateObject3$7 = _taggedTemplateLiteralLoose(["\n width: 14px;\n height: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border-radius: 50%;\n box-sizing: border-box;\n background: ", ";\n"])), function (_ref3) {
5821
+ var $removeIconBackground = _ref3.$removeIconBackground,
5822
+ $type = _ref3.$type,
5823
+ theme = _ref3.theme;
5824
+ return $removeIconBackground || $type === 'remove' ? '#5E5E5E24' : theme.disabled.primary;
5825
+ });
5826
+ var SelectedOption = function SelectedOption(_ref4) {
5827
+ var selectedOptions = _ref4.selectedOptions,
5828
+ allOptions = _ref4.allOptions,
5829
+ selectedOptionBackground = _ref4.selectedOptionBackground,
5830
+ selectedOptionColor = _ref4.selectedOptionColor,
5831
+ removeIconBackground = _ref4.removeIconBackground,
5832
+ removeIconColor = _ref4.removeIconColor,
5833
+ onChange = _ref4.onChange,
5834
+ type = _ref4.type;
5835
+ var themeColors = useTheme();
5836
+ var selectedOptionObjects = allOptions.filter(function (opt) {
5837
+ return selectedOptions.includes(opt.value);
5838
+ }).sort(function (a, b) {
5839
+ return a.labelText.localeCompare(b.labelText);
5840
+ });
5841
+ var handleOptionRemoval = function handleOptionRemoval(optionValue) {
5842
+ if (onChange) {
5843
+ onChange(selectedOptions.filter(function (value) {
5844
+ return value !== optionValue;
5845
+ }));
5846
+ }
5847
+ };
5848
+ return React__default.createElement(SelectedOptionsWrapper$1, null, selectedOptionObjects.map(function (option) {
5849
+ return React__default.createElement(SelectedOptionDiv$1, {
5850
+ key: option.value,
5851
+ "$type": type,
5852
+ "$selectedOptionBackground": selectedOptionBackground,
5853
+ "$selectedOptionColor": selectedOptionColor,
5854
+ onClick: function onClick(e) {
5855
+ e.stopPropagation();
5856
+ handleOptionRemoval(option.value);
5857
+ }
5858
+ }, option.labelText, React__default.createElement(RemoveIcon$1, {
5859
+ "$removeIconBackground": removeIconBackground,
5860
+ "$type": type,
5861
+ onClick: function onClick(e) {
5862
+ e.stopPropagation();
5863
+ handleOptionRemoval(option.value);
5864
+ }
5865
+ }, React__default.createElement(Icon, {
5866
+ icon: 'Close',
5867
+ size: 6,
5868
+ color: removeIconColor || type === 'remove' ? themeColors["default"].error : themeColors.brand.primary
5869
+ })));
5870
+ }));
5871
+ };
5872
+
5819
5873
  var _templateObject$e, _templateObject2$b;
5820
5874
  var SearchContainer$2 = styled__default.div(_templateObject$e || (_templateObject$e = _taggedTemplateLiteralLoose(["\n width: 100%;\n height: 100%;\n background: ", ";\n border: ", ";\n border-radius: ", ";\n padding: 5.5px 8px;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: 8px;\n // cursor: ", ";\n transition: all 0.3s ease;\n\n &:focus-within {\n border: ", ";\n }\n"])), function (_ref) {
5821
5875
  var $background = _ref.$background,
@@ -5835,7 +5889,7 @@ var SearchContainer$2 = styled__default.div(_templateObject$e || (_templateObjec
5835
5889
  var theme = _ref5.theme;
5836
5890
  return "1px solid " + theme.text.dark;
5837
5891
  });
5838
- var SearchBar$2 = styled__default.input(_templateObject2$b || (_templateObject2$b = _taggedTemplateLiteralLoose(["\n border: none;\n width: 100%;\n font-family: NotoSans, sans-serif;\n font-weight: 400;\n font-style: normal;\n font-size: 14px;\n line-height: normal;\n background: ", ";\n color: ", ";\n &::placeholder {\n color: ", ";\n font-style: italic;\n line-height: 1005;\n }\n"])), function (_ref6) {
5892
+ var SearchBar$2 = styled__default.input(_templateObject2$b || (_templateObject2$b = _taggedTemplateLiteralLoose(["\n border: none;\n width: 100%;\n font-family: NotoSans, sans-serif;\n font-weight: 400;\n font-style: normal;\n font-size: 14px;\n line-height: normal;\n background: ", ";\n color: ", ";\n &::placeholder {\n color: ", ";\n font-style: italic;\n line-height: 100%;\n }\n"])), function (_ref6) {
5839
5893
  var theme = _ref6.theme;
5840
5894
  return theme["default"].tertiary;
5841
5895
  }, function (_ref7) {
@@ -7417,7 +7471,7 @@ var TabContainer = styled__default.div(_templateObject3$f || (_templateObject3$f
7417
7471
  var $disabled = _ref10.$disabled;
7418
7472
  return $disabled ? 'not-allowed' : 'pointer';
7419
7473
  });
7420
- var TabItemContainer = styled__default.div(_templateObject4$c || (_templateObject4$c = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n position: relative;\n gap: 8px;\n height: 100%;\n max-height: ", ";\n\n &:after {\n content: '';\n display: ", ";\n width: 100%;\n height: 3px;\n color: ", ";\n position: absolute;\n bottom: -1px;\n left: 0px;\n }\n"])), function (_ref11) {
7474
+ var TabItemContainer = styled__default.div(_templateObject4$c || (_templateObject4$c = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n position: relative;\n gap: 8px;\n height: 100%;\n max-height: ", ";\n\n &:after {\n content: '';\n display: ", ";\n width: 100%;\n min-height: 3px;\n background: ", ";\n position: absolute;\n bottom: -1px;\n left: 0px;\n }\n"])), function (_ref11) {
7421
7475
  var $headerHeight = _ref11.$headerHeight;
7422
7476
  return $headerHeight ? $headerHeight : '34px';
7423
7477
  }, function (props) {
@@ -7517,6 +7571,7 @@ exports.Badge = Badge;
7517
7571
  exports.Breadcrumbs = Breadcrumbs;
7518
7572
  exports.Button = ButtonComponent;
7519
7573
  exports.ButtonCarousel = ButtonCarousel;
7574
+ exports.ButtonDropdown = ButtonDropdown;
7520
7575
  exports.CheckBox = CheckBox;
7521
7576
  exports.CircularLoader = CircularLoader;
7522
7577
  exports.CircularProgress = CircularProgress;