@laerdal/life-react-components 1.9.8-dev.8.full → 1.9.9-dev.2

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.
Files changed (163) hide show
  1. package/dist/Accordion/ContentAccordion.cjs +5 -5
  2. package/dist/Accordion/ContentAccordion.cjs.map +1 -1
  3. package/dist/Accordion/ContentAccordion.js +6 -6
  4. package/dist/Accordion/ContentAccordion.js.map +1 -1
  5. package/dist/Accordion/styles.cjs +1 -1
  6. package/dist/Accordion/styles.cjs.map +1 -1
  7. package/dist/Accordion/styles.js +1 -1
  8. package/dist/Accordion/styles.js.map +1 -1
  9. package/dist/Button/Button.cjs +3 -3
  10. package/dist/Button/Button.cjs.map +1 -1
  11. package/dist/Button/Button.js +3 -3
  12. package/dist/Button/Button.js.map +1 -1
  13. package/dist/Button/Iconbutton.cjs +2 -1
  14. package/dist/Button/Iconbutton.cjs.map +1 -1
  15. package/dist/Button/Iconbutton.d.ts +1 -0
  16. package/dist/Button/Iconbutton.js +1 -1
  17. package/dist/Button/Iconbutton.js.map +1 -1
  18. package/dist/Card/HorizontalCard/HorizontalCard.cjs +97 -0
  19. package/dist/Card/HorizontalCard/HorizontalCard.cjs.map +1 -0
  20. package/dist/Card/HorizontalCard/HorizontalCard.d.ts +4 -0
  21. package/dist/Card/HorizontalCard/HorizontalCard.js +74 -0
  22. package/dist/Card/HorizontalCard/HorizontalCard.js.map +1 -0
  23. package/dist/Card/HorizontalCard/HorizontalCardActions.cjs +118 -0
  24. package/dist/Card/HorizontalCard/HorizontalCardActions.cjs.map +1 -0
  25. package/dist/Card/HorizontalCard/HorizontalCardActions.d.ts +5 -0
  26. package/dist/Card/HorizontalCard/HorizontalCardActions.js +98 -0
  27. package/dist/Card/HorizontalCard/HorizontalCardActions.js.map +1 -0
  28. package/dist/Card/HorizontalCard/HorizontalCardBody.cjs +60 -0
  29. package/dist/Card/HorizontalCard/HorizontalCardBody.cjs.map +1 -0
  30. package/dist/Card/HorizontalCard/HorizontalCardBody.d.ts +5 -0
  31. package/dist/Card/HorizontalCard/HorizontalCardBody.js +40 -0
  32. package/dist/Card/HorizontalCard/HorizontalCardBody.js.map +1 -0
  33. package/dist/Card/HorizontalCard/HorizontalCardThumbnail.cjs +49 -0
  34. package/dist/Card/HorizontalCard/HorizontalCardThumbnail.cjs.map +1 -0
  35. package/dist/Card/HorizontalCard/HorizontalCardThumbnail.d.ts +5 -0
  36. package/dist/Card/HorizontalCard/HorizontalCardThumbnail.js +33 -0
  37. package/dist/Card/HorizontalCard/HorizontalCardThumbnail.js.map +1 -0
  38. package/dist/Card/HorizontalCard/index.cjs +33 -0
  39. package/dist/Card/HorizontalCard/index.cjs.map +1 -0
  40. package/dist/Card/HorizontalCard/index.d.ts +2 -0
  41. package/dist/Card/HorizontalCard/index.js +3 -0
  42. package/dist/Card/HorizontalCard/index.js.map +1 -0
  43. package/dist/Card/HorizontalCard/types.cjs +6 -0
  44. package/dist/Card/HorizontalCard/types.cjs.map +1 -0
  45. package/dist/Card/HorizontalCard/types.d.ts +40 -0
  46. package/dist/Card/HorizontalCard/types.js +2 -0
  47. package/dist/Card/HorizontalCard/types.js.map +1 -0
  48. package/dist/Card/{Card.cjs → VerticalCard/Card.cjs} +33 -9
  49. package/dist/Card/VerticalCard/Card.cjs.map +1 -0
  50. package/dist/Card/{Card.d.ts → VerticalCard/Card.d.ts} +2 -1
  51. package/dist/Card/{Card.js → VerticalCard/Card.js} +30 -8
  52. package/dist/Card/VerticalCard/Card.js.map +1 -0
  53. package/dist/Card/{CardBottomSection.cjs → VerticalCard/CardBottomSection.cjs} +42 -25
  54. package/dist/Card/VerticalCard/CardBottomSection.cjs.map +1 -0
  55. package/dist/Card/{CardBottomSection.d.ts → VerticalCard/CardBottomSection.d.ts} +4 -4
  56. package/dist/Card/{CardBottomSection.js → VerticalCard/CardBottomSection.js} +27 -11
  57. package/dist/Card/VerticalCard/CardBottomSection.js.map +1 -0
  58. package/dist/Card/{CardMiddleSection.cjs → VerticalCard/CardMiddleSection.cjs} +14 -13
  59. package/dist/Card/VerticalCard/CardMiddleSection.cjs.map +1 -0
  60. package/dist/Card/{CardMiddleSection.d.ts → VerticalCard/CardMiddleSection.d.ts} +2 -2
  61. package/dist/Card/{CardMiddleSection.js → VerticalCard/CardMiddleSection.js} +3 -2
  62. package/dist/Card/VerticalCard/CardMiddleSection.js.map +1 -0
  63. package/dist/Card/{CardTopSection.cjs → VerticalCard/CardTopSection.cjs} +14 -12
  64. package/dist/Card/VerticalCard/CardTopSection.cjs.map +1 -0
  65. package/dist/Card/{CardTopSection.d.ts → VerticalCard/CardTopSection.d.ts} +5 -5
  66. package/dist/Card/{CardTopSection.js → VerticalCard/CardTopSection.js} +12 -10
  67. package/dist/Card/VerticalCard/CardTopSection.js.map +1 -0
  68. package/dist/Card/VerticalCard/index.cjs +88 -0
  69. package/dist/Card/VerticalCard/index.cjs.map +1 -0
  70. package/dist/Card/VerticalCard/index.d.ts +7 -0
  71. package/dist/Card/VerticalCard/index.js +8 -0
  72. package/dist/Card/VerticalCard/index.js.map +1 -0
  73. package/dist/Card/index.cjs +8 -64
  74. package/dist/Card/index.cjs.map +1 -1
  75. package/dist/Card/index.d.ts +2 -7
  76. package/dist/Card/index.js +2 -7
  77. package/dist/Card/index.js.map +1 -1
  78. package/dist/Dropdown/BasicDropdown.cjs +67 -57
  79. package/dist/Dropdown/BasicDropdown.cjs.map +1 -1
  80. package/dist/Dropdown/BasicDropdown.d.ts +14 -7
  81. package/dist/Dropdown/BasicDropdown.js +67 -58
  82. package/dist/Dropdown/BasicDropdown.js.map +1 -1
  83. package/dist/Dropdown/DropdownButton.cjs +3 -3
  84. package/dist/Dropdown/DropdownButton.cjs.map +1 -1
  85. package/dist/Dropdown/DropdownButton.d.ts +5 -1
  86. package/dist/Dropdown/DropdownButton.js +3 -4
  87. package/dist/Dropdown/DropdownButton.js.map +1 -1
  88. package/dist/GlobalNavigationBar/__tests__/GlobalNavigationBar.tests.d.ts +1 -0
  89. package/dist/GlobalNavigationBar/__tests__/Logo.tests.d.ts +1 -0
  90. package/dist/GlobalNavigationBar/desktop/DesktopActions.cjs +2 -8
  91. package/dist/GlobalNavigationBar/desktop/DesktopActions.cjs.map +1 -1
  92. package/dist/GlobalNavigationBar/desktop/DesktopActions.js +2 -2
  93. package/dist/GlobalNavigationBar/desktop/DesktopActions.js.map +1 -1
  94. package/dist/GlobalNavigationBar/mobile/MobileMenuContent.cjs.map +1 -1
  95. package/dist/GlobalNavigationBar/mobile/MobileMenuContent.js.map +1 -1
  96. package/dist/GlobalNavigationBar/mobile/MobileMenuHeader.cjs +5 -1
  97. package/dist/GlobalNavigationBar/mobile/MobileMenuHeader.cjs.map +1 -1
  98. package/dist/GlobalNavigationBar/mobile/MobileMenuHeader.d.ts +2 -0
  99. package/dist/GlobalNavigationBar/mobile/MobileMenuHeader.js +2 -2
  100. package/dist/GlobalNavigationBar/mobile/MobileMenuHeader.js.map +1 -1
  101. package/dist/InputFields/DatepickerField.cjs +44 -38
  102. package/dist/InputFields/DatepickerField.cjs.map +1 -1
  103. package/dist/InputFields/DatepickerField.d.ts +17 -20
  104. package/dist/InputFields/DatepickerField.js +33 -20
  105. package/dist/InputFields/DatepickerField.js.map +1 -1
  106. package/dist/InputFields/NumberField.cjs +63 -52
  107. package/dist/InputFields/NumberField.cjs.map +1 -1
  108. package/dist/InputFields/NumberField.d.ts +14 -19
  109. package/dist/InputFields/NumberField.js +60 -53
  110. package/dist/InputFields/NumberField.js.map +1 -1
  111. package/dist/InputFields/RadioButton.cjs +1 -1
  112. package/dist/InputFields/RadioButton.cjs.map +1 -1
  113. package/dist/InputFields/RadioButton.d.ts +1 -1
  114. package/dist/InputFields/RadioButton.js +1 -1
  115. package/dist/InputFields/RadioButton.js.map +1 -1
  116. package/dist/InputFields/TextField.cjs +5 -3
  117. package/dist/InputFields/TextField.cjs.map +1 -1
  118. package/dist/InputFields/TextField.d.ts +2 -1
  119. package/dist/InputFields/TextField.js +5 -4
  120. package/dist/InputFields/TextField.js.map +1 -1
  121. package/dist/InputFields/index.cjs +26 -0
  122. package/dist/InputFields/index.cjs.map +1 -1
  123. package/dist/InputFields/index.d.ts +1 -0
  124. package/dist/InputFields/index.js +1 -0
  125. package/dist/InputFields/index.js.map +1 -1
  126. package/dist/MenuItem/MenuItem.cjs +5 -3
  127. package/dist/MenuItem/MenuItem.cjs.map +1 -1
  128. package/dist/MenuItem/MenuItem.js +5 -3
  129. package/dist/MenuItem/MenuItem.js.map +1 -1
  130. package/dist/Popover/Popover.cjs +38 -24
  131. package/dist/Popover/Popover.cjs.map +1 -1
  132. package/dist/Popover/Popover.d.ts +1 -0
  133. package/dist/Popover/Popover.js +38 -24
  134. package/dist/Popover/Popover.js.map +1 -1
  135. package/dist/ProfileButton/ProfileButton.cjs +5 -3
  136. package/dist/ProfileButton/ProfileButton.cjs.map +1 -1
  137. package/dist/ProfileButton/ProfileButton.d.ts +3 -0
  138. package/dist/ProfileButton/ProfileButton.js +2 -2
  139. package/dist/ProfileButton/ProfileButton.js.map +1 -1
  140. package/dist/Toggles/ToggleButton.cjs +3 -2
  141. package/dist/Toggles/ToggleButton.cjs.map +1 -1
  142. package/dist/Toggles/ToggleButton.d.ts +1 -1
  143. package/dist/Toggles/ToggleButton.js +3 -2
  144. package/dist/Toggles/ToggleButton.js.map +1 -1
  145. package/dist/Toggles/ToggleSwitch.cjs +24 -17
  146. package/dist/Toggles/ToggleSwitch.cjs.map +1 -1
  147. package/dist/Toggles/ToggleSwitch.d.ts +5 -1
  148. package/dist/Toggles/ToggleSwitch.js +21 -12
  149. package/dist/Toggles/ToggleSwitch.js.map +1 -1
  150. package/dist/Toggles/TogglerTypes.d.ts +1 -1
  151. package/dist/common/ActionWithin.cjs.map +1 -1
  152. package/dist/common/ActionWithin.js.map +1 -1
  153. package/dist/index.cjs.map +1 -1
  154. package/dist/index.js.map +1 -1
  155. package/package.json +2 -1
  156. package/dist/Card/Card.cjs.map +0 -1
  157. package/dist/Card/Card.js.map +0 -1
  158. package/dist/Card/CardBottomSection.cjs.map +0 -1
  159. package/dist/Card/CardBottomSection.js.map +0 -1
  160. package/dist/Card/CardMiddleSection.cjs.map +0 -1
  161. package/dist/Card/CardMiddleSection.js.map +0 -1
  162. package/dist/Card/CardTopSection.cjs.map +0 -1
  163. package/dist/Card/CardTopSection.js.map +0 -1
@@ -37,38 +37,33 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
37
37
 
38
38
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
39
39
 
40
- var BasicDropdown = function BasicDropdown(_ref) {
41
- var id = _ref.id,
42
- list = _ref.list,
43
- placeholder = _ref.placeholder,
44
- onSelect = _ref.onSelect,
45
- setDropdownMenuValues = _ref.setDropdownMenuValues,
46
- initalValue = _ref.initalValue,
47
- disableSorting = _ref.disableSorting,
48
- messageOnNoResults = _ref.messageOnNoResults,
49
- _ref$itemsType = _ref.itemsType,
50
- itemsType = _ref$itemsType === void 0 ? 'normal' : _ref$itemsType,
51
- action = _ref.action,
52
- actionLabel = _ref.actionLabel,
53
- actionVariant = _ref.actionVariant,
54
- actionIcon = _ref.actionIcon,
55
- actionLoading = _ref.actionLoading,
56
- actionDisabled = _ref.actionDisabled,
57
- pinTopItem = _ref.pinTopItem,
58
- multiSelect = _ref.multiSelect,
59
- _ref$scrollable = _ref.scrollable,
60
- scrollable = _ref$scrollable === void 0 ? true : _ref$scrollable,
61
- maxHeight = _ref.maxHeight,
62
- disabled = _ref.disabled,
63
- readOnly = _ref.readOnly,
64
- isButton = _ref.isButton,
65
- activeValidationMessage = _ref.activeValidationMessage,
66
- autofilledMessage = _ref.autofilledMessage,
67
- size = _ref.size,
68
- _ref$margin = _ref.margin,
69
- margin = _ref$margin === void 0 ? '4px 0' : _ref$margin,
70
- dropdownMenuValues = _ref.dropdownMenuValues,
71
- minWidth = _ref.minWidth;
40
+ var BasicDropdown = /*#__PURE__*/React.forwardRef(function (props, ref) {
41
+ var id = props.id,
42
+ list = props.list,
43
+ placeholder = props.placeholder,
44
+ messageOnNoResults = props.messageOnNoResults,
45
+ _props$itemsType = props.itemsType,
46
+ itemsType = _props$itemsType === void 0 ? 'normal' : _props$itemsType,
47
+ action = props.action,
48
+ actionLabel = props.actionLabel,
49
+ actionVariant = props.actionVariant,
50
+ actionIcon = props.actionIcon,
51
+ actionLoading = props.actionLoading,
52
+ actionDisabled = props.actionDisabled,
53
+ pinTopItem = props.pinTopItem,
54
+ _props$scrollable = props.scrollable,
55
+ scrollable = _props$scrollable === void 0 ? true : _props$scrollable,
56
+ maxHeight = props.maxHeight,
57
+ disabled = props.disabled,
58
+ readOnly = props.readOnly,
59
+ isButton = props.isButton,
60
+ activeValidationMessage = props.activeValidationMessage,
61
+ autofilledMessage = props.autofilledMessage,
62
+ size = props.size,
63
+ _props$margin = props.margin,
64
+ margin = _props$margin === void 0 ? '4px 0' : _props$margin,
65
+ minWidth = props.minWidth,
66
+ onBlur = props.onBlur;
72
67
 
73
68
  var _React$useState = React.useState(false),
74
69
  _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
@@ -90,15 +85,10 @@ var BasicDropdown = function BasicDropdown(_ref) {
90
85
  focused = _React$useState8[0],
91
86
  setFocused = _React$useState8[1];
92
87
 
93
- var _React$useState9 = React.useState(initalValue ? [initalValue] : []),
88
+ var _React$useState9 = React.useState(false),
94
89
  _React$useState10 = (0, _slicedToArray2.default)(_React$useState9, 2),
95
- selectedValues = _React$useState10[0],
96
- setSelectedValues = _React$useState10[1];
97
-
98
- var _React$useState11 = React.useState(false),
99
- _React$useState12 = (0, _slicedToArray2.default)(_React$useState11, 2),
100
- keyboardNavigated = _React$useState12[0],
101
- setKeyboardNavigated = _React$useState12[1];
90
+ keyboardNavigated = _React$useState10[0],
91
+ setKeyboardNavigated = _React$useState10[1];
102
92
 
103
93
  var inputRef = React.useRef(null);
104
94
  var styledFieldRef = (0, _common.useFocusVisibleRef)([inputRef]);
@@ -119,9 +109,15 @@ var BasicDropdown = function BasicDropdown(_ref) {
119
109
 
120
110
  var handleValueSelect = function handleValueSelect(values) {
121
111
  setInput(values.join(', '));
122
- onSelect && onSelect(values); //don't close dropdown on item select if have custom action or multiselect
123
112
 
124
- if (actionLabel || multiSelect) return;
113
+ if (props.multiSelect === true) {
114
+ props.onSelect(values);
115
+ } else if (props.multiSelect === false || props.multiSelect === undefined) {
116
+ props.onSelect(values[0]);
117
+ } //don't close dropdown on item select if have custom action or multiselect
118
+
119
+
120
+ if (actionLabel || props.multiSelect) return;
125
121
 
126
122
  if (keyboardNavigated) {
127
123
  var _styledFieldRef$curre;
@@ -136,18 +132,25 @@ var BasicDropdown = function BasicDropdown(_ref) {
136
132
  };
137
133
 
138
134
  React.useEffect(function () {
139
- if (initalValue || dropdownMenuValues) {
140
- var initValue = dropdownMenuValues ? dropdownMenuValues.join(',') : initalValue ? initalValue : '';
141
- setInput(initValue);
142
- setSelectedValues([initValue]);
135
+ if (props.value) {
136
+ if (props.multiSelect) {
137
+ setInput(props.value.join(', '));
138
+ } else if (props.multiSelect === false || props.multiSelect === undefined) {
139
+ setInput(props.value);
140
+ }
141
+ } else {
142
+ setInput('');
143
143
  }
144
- }, [initalValue, dropdownMenuValues]);
144
+ }, [props.value, props.multiSelect]);
145
145
  React.useEffect(function () {
146
146
  setIsLoading(false);
147
147
  }, [input]);
148
148
  React.useEffect(function () {
149
149
  !isOpen && setKeyboardNavigated(false);
150
150
  }, [isOpen]);
151
+ React.useImperativeHandle(ref, function () {
152
+ return inputRef.current;
153
+ }, [inputRef]);
151
154
 
152
155
  var customSetIsOpen = function customSetIsOpen(isOpen) {
153
156
  setIsOpen(isOpen);
@@ -165,6 +168,13 @@ var BasicDropdown = function BasicDropdown(_ref) {
165
168
  return listDisplayLabels.join(', ');
166
169
  };
167
170
 
171
+ var handleBlur = function handleBlur(e) {
172
+ // @ts-ignore
173
+ if (!e.currentTarget.contains(e.relatedTarget)) {
174
+ onBlur && onBlur(e);
175
+ }
176
+ };
177
+
168
178
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
169
179
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_CommonStyling.Dropdown, {
170
180
  ref: containerRef,
@@ -173,6 +183,7 @@ var BasicDropdown = function BasicDropdown(_ref) {
173
183
  readOnly: readOnly,
174
184
  disabled: disabled,
175
185
  margin: margin,
186
+ onBlur: handleBlur,
176
187
  minWidth: minWidth,
177
188
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_CommonStyling.StyledField, {
178
189
  ref: styledFieldRef,
@@ -234,7 +245,7 @@ var BasicDropdown = function BasicDropdown(_ref) {
234
245
  scrollable: scrollable,
235
246
  onValueUpdate: handleValueSelect,
236
247
  items: list,
237
- multiSelect: multiSelect,
248
+ multiSelect: props.multiSelect,
238
249
  pinTopItem: pinTopItem,
239
250
  maxHeight: maxHeight,
240
251
  actionIcon: actionIcon,
@@ -249,8 +260,8 @@ var BasicDropdown = function BasicDropdown(_ref) {
249
260
  messageOnNoResults: messageOnNoResults !== null && messageOnNoResults !== void 0 ? messageOnNoResults : '',
250
261
  outline: keyboardNavigated,
251
262
  isButton: isButton || false,
252
- selectedValues: dropdownMenuValues !== null && dropdownMenuValues !== void 0 ? dropdownMenuValues : selectedValues,
253
- setSelectedValues: setDropdownMenuValues ? setDropdownMenuValues : setSelectedValues,
263
+ selectedValues: props.multiSelect ? props.value || [] : [props.value || ''],
264
+ setSelectedValues: handleValueSelect,
254
265
  id: "".concat(id, "_dropdowncontent")
255
266
  })]
256
267
  }), activeValidationMessage && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_styling.ErrorMessage, {
@@ -267,8 +278,7 @@ var BasicDropdown = function BasicDropdown(_ref) {
267
278
  })]
268
279
  })]
269
280
  });
270
- };
271
-
281
+ });
272
282
  BasicDropdown.propTypes = {
273
283
  id: _propTypes.default.string.isRequired,
274
284
  list: _propTypes.default.array.isRequired,
@@ -279,13 +289,9 @@ BasicDropdown.propTypes = {
279
289
  actionLoading: _propTypes.default.bool,
280
290
  actionDisabled: _propTypes.default.bool,
281
291
  pinTopItem: _propTypes.default.bool,
282
- multiSelect: _propTypes.default.bool,
283
292
  scrollable: _propTypes.default.bool,
284
293
  maxHeight: _propTypes.default.string,
285
294
  placeholder: _propTypes.default.string,
286
- onSelect: _propTypes.default.func,
287
- setDropdownMenuValues: _propTypes.default.func,
288
- initalValue: _propTypes.default.string,
289
295
  disableSorting: _propTypes.default.bool,
290
296
  messageOnNoResults: _propTypes.default.string,
291
297
  disabled: _propTypes.default.bool,
@@ -294,7 +300,11 @@ BasicDropdown.propTypes = {
294
300
  activeValidationMessage: _propTypes.default.string,
295
301
  autofilledMessage: _propTypes.default.string,
296
302
  margin: _propTypes.default.string,
297
- dropdownMenuValues: _propTypes.default.arrayOf(_propTypes.default.string)
303
+ minWidth: _propTypes.default.string,
304
+ onBlur: _propTypes.default.func,
305
+ multiSelect: _propTypes.default.oneOf([true]).isRequired,
306
+ value: _propTypes.default.arrayOf(_propTypes.default.string),
307
+ onSelect: _propTypes.default.func.isRequired
298
308
  };
299
309
  var _default = BasicDropdown;
300
310
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Dropdown/BasicDropdown.tsx"],"names":["BasicDropdown","id","list","placeholder","onSelect","setDropdownMenuValues","initalValue","disableSorting","messageOnNoResults","itemsType","action","actionLabel","actionVariant","actionIcon","actionLoading","actionDisabled","pinTopItem","multiSelect","scrollable","maxHeight","disabled","readOnly","isButton","activeValidationMessage","autofilledMessage","size","margin","dropdownMenuValues","minWidth","React","useState","isOpen","setIsOpen","isLoading","setIsLoading","input","setInput","focused","setFocused","selectedValues","setSelectedValues","keyboardNavigated","setKeyboardNavigated","inputRef","useRef","styledFieldRef","resetDropdown","containerRef","handleKeyDown","e","key","handleValueSelect","values","join","current","focus","focusVisible","useEffect","initValue","customSetIsOpen","getDisplayItems","split","map","val","trim","listDisplayLabels","filter","item","includes","value","l","displayLabel","concat","defaultOnMouseDownHandler","stopPropagation","blur","Size","Small","COLORS","neutral_600","onValueUpdate","items","critical_400"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { COLORS } from '../styles';\nimport { ArrowDropDown, ArrowDropUp, Information, TechnicalWarning } from '../icons/systemicons/SystemIcons';\nimport { LoadingIndicator } from '../LoadingIndicator';\nimport { Dropdown, StyledField, InputField } from './CommonStyling';\nimport DropdownContent, { DropdownItem } from './DropdownContent';\nimport { AutofilledMessage, ErrorMessage } from '../InputFields/styling';\nimport { Size } from '../types';\nimport { defaultOnMouseDownHandler, useClickOutsideRef, useFocusVisibleRef } from '../common';\nimport { useFocusOutsideRef } from '../common';\n\ninterface DropdownFilterProps {\n id: string;\n list: DropdownItem[];\n itemsType?: 'normal' | 'checkbox' | 'radio';\n action?: () => void;\n actionLabel?: string;\n actionVariant?: 'primary' | 'secondary' | 'tertiary' | undefined;\n actionIcon?: React.ReactNode;\n actionLoading?: boolean;\n actionDisabled?: boolean;\n pinTopItem?: boolean;\n multiSelect?: boolean;\n scrollable?: boolean;\n maxHeight?: string;\n placeholder?: string;\n onSelect?: (value: string[]) => void;\n setDropdownMenuValues?: (values: string[]) => void | boolean | undefined;\n initalValue?: string;\n disableSorting?: boolean;\n messageOnNoResults?: string;\n disabled?: boolean;\n readOnly?: boolean;\n isButton?: boolean;\n activeValidationMessage?: string;\n autofilledMessage?: string;\n size?: Size.Small | Size.Medium;\n margin?: string;\n dropdownMenuValues?: string[];\n minWidth?: string;\n}\n\nconst BasicDropdown = ({\n id,\n list,\n placeholder,\n onSelect,\n setDropdownMenuValues,\n initalValue,\n disableSorting,\n messageOnNoResults,\n itemsType = 'normal',\n action,\n actionLabel,\n actionVariant,\n actionIcon,\n actionLoading,\n actionDisabled,\n pinTopItem,\n multiSelect,\n scrollable = true,\n maxHeight,\n disabled,\n readOnly,\n isButton,\n activeValidationMessage,\n autofilledMessage,\n size,\n margin = '4px 0',\n dropdownMenuValues,\n minWidth,\n}: DropdownFilterProps) => {\n const [isOpen, setIsOpen] = React.useState<boolean>(false);\n const [isLoading, setIsLoading] = React.useState<boolean>(false);\n const [input, setInput] = React.useState<string>('');\n const [focused, setFocused] = React.useState<number | null>(null);\n const [selectedValues, setSelectedValues] = React.useState<string[]>(initalValue ? [initalValue] : []);\n const [keyboardNavigated, setKeyboardNavigated] = React.useState<boolean>(false);\n\n const inputRef = React.useRef<HTMLInputElement>(null);\n const styledFieldRef = useFocusVisibleRef([inputRef]);\n const resetDropdown = () => {\n setIsOpen(false);\n setFocused(null);\n };\n\n const containerRef = useClickOutsideRef(resetDropdown, [], useFocusOutsideRef(resetDropdown));\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n setIsOpen(!isOpen);\n setKeyboardNavigated(true);\n }\n };\n\n const handleValueSelect = (values: string[]) => {\n setInput(values.join(', '));\n onSelect && onSelect(values);\n //don't close dropdown on item select if have custom action or multiselect\n if (actionLabel || multiSelect) return;\n\n if (keyboardNavigated) {\n styledFieldRef.current?.focus({ focusVisible: true } as any);\n }\n setIsOpen(false);\n setFocused(null);\n };\n\n React.useEffect(() => {\n if (initalValue || dropdownMenuValues) {\n const initValue = dropdownMenuValues ? dropdownMenuValues!.join(',') : initalValue ? initalValue : '';\n setInput(initValue);\n setSelectedValues([initValue]);\n }\n }, [initalValue, dropdownMenuValues]);\n\n React.useEffect(() => {\n setIsLoading(false);\n }, [input]);\n\n React.useEffect(() => {\n !isOpen && setKeyboardNavigated(false);\n }, [isOpen]);\n\n const customSetIsOpen = (isOpen: boolean) => {\n setIsOpen(isOpen);\n };\n\n const getDisplayItems = () => {\n const values = input.split(',').map((val) => val.trim());\n const listDisplayLabels = list.filter((item) => values.includes(item.value)).map((l) => l.displayLabel);\n return listDisplayLabels.join(', ');\n };\n\n return (\n <>\n <Dropdown ref={containerRef} isButton={isButton || false} className={size ? size : ''} readOnly={readOnly} disabled={disabled} margin={margin} minWidth={minWidth}>\n <StyledField\n ref={styledFieldRef}\n className={(isOpen ? 'expanded ' : '').concat(size ? size : '').concat(isButton ? 'button' : '')}\n onMouseDown={defaultOnMouseDownHandler}\n onClick={(e) => {\n if (!readOnly && !disabled) {\n e.stopPropagation();\n setIsOpen(!isOpen);\n if (isOpen) {\n inputRef.current?.blur();\n } else {\n inputRef.current?.focus();\n }\n }\n }}\n tabIndex={disabled || readOnly ? -1 : 0}\n disabled={disabled || false}\n readOnly={readOnly || false}\n isPlaceholder={!input}\n placeholder={placeholder}\n showValidationMessage={!!activeValidationMessage}\n onKeyDown={handleKeyDown}\n minWidth={minWidth}>\n <InputField\n ref={inputRef}\n type=\"search\"\n readOnly\n placeholder={placeholder}\n value={getDisplayItems()}\n className={size ? `${size} value` : 'value'}\n tabIndex={-1}\n disabled={disabled || false}\n />\n {isLoading ? <LoadingIndicator size={Size.Small} color={COLORS.neutral_600} /> : null}\n <div className={'icon dropdown-arrow'}>\n {isOpen ? <ArrowDropUp size=\"24px\" className={size ? size : ''} /> : <ArrowDropDown size=\"24px\" className={size ? size : ''} />}\n </div>\n </StyledField>\n {!readOnly && !disabled && (\n <DropdownContent\n customizationProps={{\n itemsType: itemsType,\n action: action ?? (() => {}),\n actionLabel: actionLabel,\n actionVariant: actionVariant,\n actionDisabled: actionDisabled,\n scrollable: scrollable,\n onValueUpdate: handleValueSelect,\n items: list,\n multiSelect: multiSelect,\n pinTopItem: pinTopItem,\n maxHeight: maxHeight,\n actionIcon: actionIcon,\n actionLoading: actionLoading,\n }}\n focused={focused}\n setFocused={setFocused}\n size={size ?? Size.Small}\n filter={''}\n isOpen={isOpen}\n setIsOpen={customSetIsOpen}\n messageOnNoResults={messageOnNoResults ?? ''}\n outline={keyboardNavigated}\n isButton={isButton || false}\n selectedValues={dropdownMenuValues ?? selectedValues}\n setSelectedValues={setDropdownMenuValues ? setDropdownMenuValues : setSelectedValues}\n id={`${id}_dropdowncontent`}\n />\n )}\n </Dropdown>\n {activeValidationMessage && (\n <ErrorMessage>\n <TechnicalWarning color={COLORS.critical_400} />\n <span>{activeValidationMessage}</span>\n </ErrorMessage>\n )}\n {autofilledMessage && (\n <AutofilledMessage>\n <Information color={COLORS.neutral_600} />\n <span>{autofilledMessage}</span>\n </AutofilledMessage>\n )}\n </>\n );\n};\n\nexport default BasicDropdown;\n"],"file":"BasicDropdown.cjs"}
1
+ {"version":3,"sources":["../../src/Dropdown/BasicDropdown.tsx"],"names":["BasicDropdown","React","forwardRef","props","ref","id","list","placeholder","messageOnNoResults","itemsType","action","actionLabel","actionVariant","actionIcon","actionLoading","actionDisabled","pinTopItem","scrollable","maxHeight","disabled","readOnly","isButton","activeValidationMessage","autofilledMessage","size","margin","minWidth","onBlur","useState","isOpen","setIsOpen","isLoading","setIsLoading","input","setInput","focused","setFocused","keyboardNavigated","setKeyboardNavigated","inputRef","useRef","styledFieldRef","resetDropdown","containerRef","handleKeyDown","e","key","handleValueSelect","values","join","multiSelect","onSelect","undefined","current","focus","focusVisible","useEffect","value","useImperativeHandle","customSetIsOpen","getDisplayItems","split","map","val","trim","listDisplayLabels","filter","item","includes","l","displayLabel","handleBlur","currentTarget","contains","relatedTarget","concat","defaultOnMouseDownHandler","stopPropagation","blur","Size","Small","COLORS","neutral_600","onValueUpdate","items","critical_400","disableSorting"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport {COLORS} from '../styles';\nimport {ArrowDropDown, ArrowDropUp, Information, TechnicalWarning} from '../icons/systemicons/SystemIcons';\nimport {LoadingIndicator} from '../LoadingIndicator';\nimport {Dropdown, StyledField, InputField} from './CommonStyling';\nimport DropdownContent, {DropdownItem} from './DropdownContent';\nimport {AutofilledMessage, ErrorMessage} from '../InputFields/styling';\nimport {Size} from '../types';\nimport {defaultOnMouseDownHandler, useClickOutsideRef, useFocusVisibleRef} from '../common';\nimport {useFocusOutsideRef} from '../common';\n\ninterface BasicDropdownCommonProps {\n id: string;\n list: DropdownItem[];\n itemsType?: 'normal' | 'checkbox' | 'radio';\n action?: () => void;\n actionLabel?: string;\n actionVariant?: 'primary' | 'secondary' | 'tertiary' | undefined;\n actionIcon?: React.ReactNode;\n actionLoading?: boolean;\n actionDisabled?: boolean;\n pinTopItem?: boolean;\n scrollable?: boolean;\n maxHeight?: string;\n placeholder?: string;\n disableSorting?: boolean;\n messageOnNoResults?: string;\n disabled?: boolean;\n readOnly?: boolean;\n isButton?: boolean;\n activeValidationMessage?: string;\n autofilledMessage?: string;\n size?: Size.Small | Size.Medium;\n margin?: string;\n minWidth?: string;\n onBlur?: (event: React.FocusEvent) => void;\n}\n\ntype DropdownFilterMultiSelectProps = BasicDropdownCommonProps & {\n multiSelect: true;\n value?: string[];\n onSelect: (value: string[]) => void;\n}\n\ntype DropdownFilterSingleSelectProps = BasicDropdownCommonProps & {\n multiSelect?: false;\n value?: string;\n onSelect: (value: string) => void;\n}\n\ntype DropdownFilterProps = DropdownFilterMultiSelectProps | DropdownFilterSingleSelectProps;\n\nconst BasicDropdown = React.forwardRef((props: DropdownFilterProps, ref) => {\n const {\n id,\n list,\n placeholder,\n messageOnNoResults,\n itemsType = 'normal',\n action,\n actionLabel,\n actionVariant,\n actionIcon,\n actionLoading,\n actionDisabled,\n pinTopItem,\n scrollable = true,\n maxHeight,\n disabled,\n readOnly,\n isButton,\n activeValidationMessage,\n autofilledMessage,\n size,\n margin = '4px 0',\n minWidth,\n onBlur\n } = props;\n\n const [isOpen, setIsOpen] = React.useState<boolean>(false);\n const [isLoading, setIsLoading] = React.useState<boolean>(false);\n const [input, setInput] = React.useState<string>('');\n const [focused, setFocused] = React.useState<number | null>(null);\n const [keyboardNavigated, setKeyboardNavigated] = React.useState<boolean>(false);\n\n const inputRef = React.useRef<HTMLInputElement>(null);\n const styledFieldRef = useFocusVisibleRef([inputRef]);\n\n const resetDropdown = () => {\n setIsOpen(false);\n setFocused(null);\n };\n\n const containerRef = useClickOutsideRef(resetDropdown, [], useFocusOutsideRef(resetDropdown));\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter' || e.key === ' ') {\n setIsOpen(!isOpen);\n setKeyboardNavigated(true);\n }\n };\n\n const handleValueSelect = (values: string[]) => {\n setInput(values.join(', '));\n\n if (props.multiSelect === true) {\n props.onSelect(values);\n } else if (props.multiSelect === false || props.multiSelect === undefined) {\n props.onSelect(values[0]);\n }\n\n //don't close dropdown on item select if have custom action or multiselect\n if (actionLabel || props.multiSelect) return;\n\n if (keyboardNavigated) {\n styledFieldRef.current?.focus({focusVisible: true} as any);\n }\n setIsOpen(false);\n setFocused(null);\n };\n\n React.useEffect(() => {\n if (props.value) {\n if (props.multiSelect) {\n setInput(props.value.join(', '));\n } else if (props.multiSelect === false || props.multiSelect === undefined) {\n setInput(props.value);\n }\n } else {\n setInput('');\n }\n }, [props.value, props.multiSelect]);\n\n React.useEffect(() => {\n setIsLoading(false);\n }, [input]);\n\n React.useEffect(() => {\n !isOpen && setKeyboardNavigated(false);\n }, [isOpen]);\n\n React.useImperativeHandle(ref, () => inputRef.current, [inputRef]);\n\n const customSetIsOpen = (isOpen: boolean) => {\n setIsOpen(isOpen);\n };\n\n const getDisplayItems = () => {\n const values = input.split(',').map((val) => val.trim());\n const listDisplayLabels = list.filter((item) => values.includes(item.value)).map((l) => l.displayLabel);\n return listDisplayLabels.join(', ');\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLDivElement>) => {\n // @ts-ignore\n if (!e.currentTarget.contains(e.relatedTarget)) {\n onBlur && onBlur(e);\n }\n };\n\n return (\n <>\n <Dropdown ref={containerRef}\n isButton={isButton || false}\n className={size ? size : ''}\n readOnly={readOnly}\n disabled={disabled}\n margin={margin}\n onBlur={handleBlur}\n minWidth={minWidth}>\n <StyledField\n ref={styledFieldRef}\n className={(isOpen ? 'expanded ' : '').concat(size ? size : '').concat(isButton ? 'button' : '')}\n onMouseDown={defaultOnMouseDownHandler}\n onClick={(e) => {\n if (!readOnly && !disabled) {\n e.stopPropagation();\n setIsOpen(!isOpen);\n if (isOpen) {\n inputRef.current?.blur();\n } else {\n inputRef.current?.focus();\n }\n }\n }}\n tabIndex={disabled || readOnly ? -1 : 0}\n disabled={disabled || false}\n readOnly={readOnly || false}\n isPlaceholder={!input}\n placeholder={placeholder}\n showValidationMessage={!!activeValidationMessage}\n onKeyDown={handleKeyDown}\n minWidth={minWidth}>\n <InputField\n ref={inputRef}\n type=\"search\"\n readOnly\n placeholder={placeholder}\n value={getDisplayItems()}\n className={size ? `${size} value` : 'value'}\n tabIndex={-1}\n disabled={disabled || false}\n />\n {isLoading ? <LoadingIndicator size={Size.Small} color={COLORS.neutral_600}/> : null}\n <div className={'icon dropdown-arrow'}>\n {isOpen ? <ArrowDropUp size=\"24px\" className={size ? size : ''}/> :\n <ArrowDropDown size=\"24px\" className={size ? size : ''}/>}\n </div>\n </StyledField>\n {!readOnly && !disabled && (\n <DropdownContent\n customizationProps={{\n itemsType: itemsType,\n action: action ?? (() => {\n }),\n actionLabel: actionLabel,\n actionVariant: actionVariant,\n actionDisabled: actionDisabled,\n scrollable: scrollable,\n onValueUpdate: handleValueSelect,\n items: list,\n multiSelect: props.multiSelect,\n pinTopItem: pinTopItem,\n maxHeight: maxHeight,\n actionIcon: actionIcon,\n actionLoading: actionLoading,\n }}\n focused={focused}\n setFocused={setFocused}\n size={size ?? Size.Small}\n filter={''}\n isOpen={isOpen}\n setIsOpen={customSetIsOpen}\n messageOnNoResults={messageOnNoResults ?? ''}\n outline={keyboardNavigated}\n isButton={isButton || false}\n selectedValues={props.multiSelect ? props.value || [] : [props.value || '']}\n setSelectedValues={handleValueSelect}\n id={`${id}_dropdowncontent`}\n />\n )}\n </Dropdown>\n {activeValidationMessage && (\n <ErrorMessage>\n <TechnicalWarning color={COLORS.critical_400}/>\n <span>{activeValidationMessage}</span>\n </ErrorMessage>\n )}\n {autofilledMessage && (\n <AutofilledMessage>\n <Information color={COLORS.neutral_600}/>\n <span>{autofilledMessage}</span>\n </AutofilledMessage>\n )}\n </>\n );\n});\n\nexport default BasicDropdown;\n"],"file":"BasicDropdown.cjs"}
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { DropdownItem } from './DropdownContent';
3
3
  import { Size } from '../types';
4
- interface DropdownFilterProps {
4
+ interface BasicDropdownCommonProps {
5
5
  id: string;
6
6
  list: DropdownItem[];
7
7
  itemsType?: 'normal' | 'checkbox' | 'radio';
@@ -12,13 +12,9 @@ interface DropdownFilterProps {
12
12
  actionLoading?: boolean;
13
13
  actionDisabled?: boolean;
14
14
  pinTopItem?: boolean;
15
- multiSelect?: boolean;
16
15
  scrollable?: boolean;
17
16
  maxHeight?: string;
18
17
  placeholder?: string;
19
- onSelect?: (value: string[]) => void;
20
- setDropdownMenuValues?: (values: string[]) => void | boolean | undefined;
21
- initalValue?: string;
22
18
  disableSorting?: boolean;
23
19
  messageOnNoResults?: string;
24
20
  disabled?: boolean;
@@ -28,8 +24,19 @@ interface DropdownFilterProps {
28
24
  autofilledMessage?: string;
29
25
  size?: Size.Small | Size.Medium;
30
26
  margin?: string;
31
- dropdownMenuValues?: string[];
32
27
  minWidth?: string;
28
+ onBlur?: (event: React.FocusEvent) => void;
33
29
  }
34
- declare const BasicDropdown: ({ id, list, placeholder, onSelect, setDropdownMenuValues, initalValue, disableSorting, messageOnNoResults, itemsType, action, actionLabel, actionVariant, actionIcon, actionLoading, actionDisabled, pinTopItem, multiSelect, scrollable, maxHeight, disabled, readOnly, isButton, activeValidationMessage, autofilledMessage, size, margin, dropdownMenuValues, minWidth, }: DropdownFilterProps) => JSX.Element;
30
+ declare type DropdownFilterMultiSelectProps = BasicDropdownCommonProps & {
31
+ multiSelect: true;
32
+ value?: string[];
33
+ onSelect: (value: string[]) => void;
34
+ };
35
+ declare type DropdownFilterSingleSelectProps = BasicDropdownCommonProps & {
36
+ multiSelect?: false;
37
+ value?: string;
38
+ onSelect: (value: string) => void;
39
+ };
40
+ declare type DropdownFilterProps = DropdownFilterMultiSelectProps | DropdownFilterSingleSelectProps;
41
+ declare const BasicDropdown: React.ForwardRefExoticComponent<DropdownFilterProps & React.RefAttributes<unknown>>;
35
42
  export default BasicDropdown;
@@ -13,39 +13,33 @@ import { useFocusOutsideRef } from '../common';
13
13
  import { jsx as _jsx } from "react/jsx-runtime";
14
14
  import { jsxs as _jsxs } from "react/jsx-runtime";
15
15
  import { Fragment as _Fragment } from "react/jsx-runtime";
16
-
17
- var BasicDropdown = function BasicDropdown(_ref) {
18
- var id = _ref.id,
19
- list = _ref.list,
20
- placeholder = _ref.placeholder,
21
- onSelect = _ref.onSelect,
22
- setDropdownMenuValues = _ref.setDropdownMenuValues,
23
- initalValue = _ref.initalValue,
24
- disableSorting = _ref.disableSorting,
25
- messageOnNoResults = _ref.messageOnNoResults,
26
- _ref$itemsType = _ref.itemsType,
27
- itemsType = _ref$itemsType === void 0 ? 'normal' : _ref$itemsType,
28
- action = _ref.action,
29
- actionLabel = _ref.actionLabel,
30
- actionVariant = _ref.actionVariant,
31
- actionIcon = _ref.actionIcon,
32
- actionLoading = _ref.actionLoading,
33
- actionDisabled = _ref.actionDisabled,
34
- pinTopItem = _ref.pinTopItem,
35
- multiSelect = _ref.multiSelect,
36
- _ref$scrollable = _ref.scrollable,
37
- scrollable = _ref$scrollable === void 0 ? true : _ref$scrollable,
38
- maxHeight = _ref.maxHeight,
39
- disabled = _ref.disabled,
40
- readOnly = _ref.readOnly,
41
- isButton = _ref.isButton,
42
- activeValidationMessage = _ref.activeValidationMessage,
43
- autofilledMessage = _ref.autofilledMessage,
44
- size = _ref.size,
45
- _ref$margin = _ref.margin,
46
- margin = _ref$margin === void 0 ? '4px 0' : _ref$margin,
47
- dropdownMenuValues = _ref.dropdownMenuValues,
48
- minWidth = _ref.minWidth;
16
+ var BasicDropdown = /*#__PURE__*/React.forwardRef(function (props, ref) {
17
+ var id = props.id,
18
+ list = props.list,
19
+ placeholder = props.placeholder,
20
+ messageOnNoResults = props.messageOnNoResults,
21
+ _props$itemsType = props.itemsType,
22
+ itemsType = _props$itemsType === void 0 ? 'normal' : _props$itemsType,
23
+ action = props.action,
24
+ actionLabel = props.actionLabel,
25
+ actionVariant = props.actionVariant,
26
+ actionIcon = props.actionIcon,
27
+ actionLoading = props.actionLoading,
28
+ actionDisabled = props.actionDisabled,
29
+ pinTopItem = props.pinTopItem,
30
+ _props$scrollable = props.scrollable,
31
+ scrollable = _props$scrollable === void 0 ? true : _props$scrollable,
32
+ maxHeight = props.maxHeight,
33
+ disabled = props.disabled,
34
+ readOnly = props.readOnly,
35
+ isButton = props.isButton,
36
+ activeValidationMessage = props.activeValidationMessage,
37
+ autofilledMessage = props.autofilledMessage,
38
+ size = props.size,
39
+ _props$margin = props.margin,
40
+ margin = _props$margin === void 0 ? '4px 0' : _props$margin,
41
+ minWidth = props.minWidth,
42
+ onBlur = props.onBlur;
49
43
 
50
44
  var _React$useState = React.useState(false),
51
45
  _React$useState2 = _slicedToArray(_React$useState, 2),
@@ -67,15 +61,10 @@ var BasicDropdown = function BasicDropdown(_ref) {
67
61
  focused = _React$useState8[0],
68
62
  setFocused = _React$useState8[1];
69
63
 
70
- var _React$useState9 = React.useState(initalValue ? [initalValue] : []),
64
+ var _React$useState9 = React.useState(false),
71
65
  _React$useState10 = _slicedToArray(_React$useState9, 2),
72
- selectedValues = _React$useState10[0],
73
- setSelectedValues = _React$useState10[1];
74
-
75
- var _React$useState11 = React.useState(false),
76
- _React$useState12 = _slicedToArray(_React$useState11, 2),
77
- keyboardNavigated = _React$useState12[0],
78
- setKeyboardNavigated = _React$useState12[1];
66
+ keyboardNavigated = _React$useState10[0],
67
+ setKeyboardNavigated = _React$useState10[1];
79
68
 
80
69
  var inputRef = React.useRef(null);
81
70
  var styledFieldRef = useFocusVisibleRef([inputRef]);
@@ -96,9 +85,15 @@ var BasicDropdown = function BasicDropdown(_ref) {
96
85
 
97
86
  var handleValueSelect = function handleValueSelect(values) {
98
87
  setInput(values.join(', '));
99
- onSelect && onSelect(values); //don't close dropdown on item select if have custom action or multiselect
100
88
 
101
- if (actionLabel || multiSelect) return;
89
+ if (props.multiSelect === true) {
90
+ props.onSelect(values);
91
+ } else if (props.multiSelect === false || props.multiSelect === undefined) {
92
+ props.onSelect(values[0]);
93
+ } //don't close dropdown on item select if have custom action or multiselect
94
+
95
+
96
+ if (actionLabel || props.multiSelect) return;
102
97
 
103
98
  if (keyboardNavigated) {
104
99
  var _styledFieldRef$curre;
@@ -113,18 +108,25 @@ var BasicDropdown = function BasicDropdown(_ref) {
113
108
  };
114
109
 
115
110
  React.useEffect(function () {
116
- if (initalValue || dropdownMenuValues) {
117
- var initValue = dropdownMenuValues ? dropdownMenuValues.join(',') : initalValue ? initalValue : '';
118
- setInput(initValue);
119
- setSelectedValues([initValue]);
111
+ if (props.value) {
112
+ if (props.multiSelect) {
113
+ setInput(props.value.join(', '));
114
+ } else if (props.multiSelect === false || props.multiSelect === undefined) {
115
+ setInput(props.value);
116
+ }
117
+ } else {
118
+ setInput('');
120
119
  }
121
- }, [initalValue, dropdownMenuValues]);
120
+ }, [props.value, props.multiSelect]);
122
121
  React.useEffect(function () {
123
122
  setIsLoading(false);
124
123
  }, [input]);
125
124
  React.useEffect(function () {
126
125
  !isOpen && setKeyboardNavigated(false);
127
126
  }, [isOpen]);
127
+ React.useImperativeHandle(ref, function () {
128
+ return inputRef.current;
129
+ }, [inputRef]);
128
130
 
129
131
  var customSetIsOpen = function customSetIsOpen(isOpen) {
130
132
  setIsOpen(isOpen);
@@ -142,6 +144,13 @@ var BasicDropdown = function BasicDropdown(_ref) {
142
144
  return listDisplayLabels.join(', ');
143
145
  };
144
146
 
147
+ var handleBlur = function handleBlur(e) {
148
+ // @ts-ignore
149
+ if (!e.currentTarget.contains(e.relatedTarget)) {
150
+ onBlur && onBlur(e);
151
+ }
152
+ };
153
+
145
154
  return /*#__PURE__*/_jsxs(_Fragment, {
146
155
  children: [/*#__PURE__*/_jsxs(Dropdown, {
147
156
  ref: containerRef,
@@ -150,6 +159,7 @@ var BasicDropdown = function BasicDropdown(_ref) {
150
159
  readOnly: readOnly,
151
160
  disabled: disabled,
152
161
  margin: margin,
162
+ onBlur: handleBlur,
153
163
  minWidth: minWidth,
154
164
  children: [/*#__PURE__*/_jsxs(StyledField, {
155
165
  ref: styledFieldRef,
@@ -211,7 +221,7 @@ var BasicDropdown = function BasicDropdown(_ref) {
211
221
  scrollable: scrollable,
212
222
  onValueUpdate: handleValueSelect,
213
223
  items: list,
214
- multiSelect: multiSelect,
224
+ multiSelect: props.multiSelect,
215
225
  pinTopItem: pinTopItem,
216
226
  maxHeight: maxHeight,
217
227
  actionIcon: actionIcon,
@@ -226,8 +236,8 @@ var BasicDropdown = function BasicDropdown(_ref) {
226
236
  messageOnNoResults: messageOnNoResults !== null && messageOnNoResults !== void 0 ? messageOnNoResults : '',
227
237
  outline: keyboardNavigated,
228
238
  isButton: isButton || false,
229
- selectedValues: dropdownMenuValues !== null && dropdownMenuValues !== void 0 ? dropdownMenuValues : selectedValues,
230
- setSelectedValues: setDropdownMenuValues ? setDropdownMenuValues : setSelectedValues,
239
+ selectedValues: props.multiSelect ? props.value || [] : [props.value || ''],
240
+ setSelectedValues: handleValueSelect,
231
241
  id: "".concat(id, "_dropdowncontent")
232
242
  })]
233
243
  }), activeValidationMessage && /*#__PURE__*/_jsxs(ErrorMessage, {
@@ -244,8 +254,7 @@ var BasicDropdown = function BasicDropdown(_ref) {
244
254
  })]
245
255
  })]
246
256
  });
247
- };
248
-
257
+ });
249
258
  BasicDropdown.propTypes = {
250
259
  id: _pt.string.isRequired,
251
260
  list: _pt.array.isRequired,
@@ -256,13 +265,9 @@ BasicDropdown.propTypes = {
256
265
  actionLoading: _pt.bool,
257
266
  actionDisabled: _pt.bool,
258
267
  pinTopItem: _pt.bool,
259
- multiSelect: _pt.bool,
260
268
  scrollable: _pt.bool,
261
269
  maxHeight: _pt.string,
262
270
  placeholder: _pt.string,
263
- onSelect: _pt.func,
264
- setDropdownMenuValues: _pt.func,
265
- initalValue: _pt.string,
266
271
  disableSorting: _pt.bool,
267
272
  messageOnNoResults: _pt.string,
268
273
  disabled: _pt.bool,
@@ -271,7 +276,11 @@ BasicDropdown.propTypes = {
271
276
  activeValidationMessage: _pt.string,
272
277
  autofilledMessage: _pt.string,
273
278
  margin: _pt.string,
274
- dropdownMenuValues: _pt.arrayOf(_pt.string)
279
+ minWidth: _pt.string,
280
+ onBlur: _pt.func,
281
+ multiSelect: _pt.oneOf([true]).isRequired,
282
+ value: _pt.arrayOf(_pt.string),
283
+ onSelect: _pt.func.isRequired
275
284
  };
276
285
  export default BasicDropdown;
277
286
  //# sourceMappingURL=BasicDropdown.js.map