@decisiv/ui-components 2.0.1-alpha.75 → 2.0.1-alpha.84

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 (46) hide show
  1. package/lib/atoms/InputField/Containers.d.ts +7 -2
  2. package/lib/atoms/InputField/Containers.d.ts.map +1 -1
  3. package/lib/atoms/InputField/Containers.js +5 -5
  4. package/lib/atoms/InputField/InputLabel.d.ts +1 -0
  5. package/lib/atoms/InputField/InputLabel.d.ts.map +1 -1
  6. package/lib/atoms/InputField/InputLabel.js +2 -1
  7. package/lib/atoms/InputField/index.d.ts +3 -0
  8. package/lib/atoms/InputField/index.d.ts.map +1 -1
  9. package/lib/atoms/InputField/index.js +17 -4
  10. package/lib/atoms/InputField/schema.d.ts.map +1 -1
  11. package/lib/atoms/InputField/schema.js +1 -0
  12. package/lib/components/Combobox/Target.d.ts.map +1 -1
  13. package/lib/components/Combobox/Target.js +3 -4
  14. package/lib/components/Combobox/index.test.js +122 -98
  15. package/lib/components/Select/Target.js +1 -1
  16. package/lib/components/Select/index.d.ts.map +1 -1
  17. package/lib/components/Select/index.js +17 -0
  18. package/lib/components/Select/index.test.js +82 -23
  19. package/lib/components/Select/schema.d.ts.map +1 -1
  20. package/lib/components/Select/schema.js +2 -0
  21. package/lib/components/Select/types.d.ts +2 -0
  22. package/lib/components/Select/types.d.ts.map +1 -1
  23. package/lib/components/SelectDate/Target.js +1 -1
  24. package/lib/components/SelectDate/index.d.ts.map +1 -1
  25. package/lib/components/SelectDate/index.js +17 -0
  26. package/lib/components/SelectDate/index.test.js +108 -51
  27. package/lib/components/SelectDate/schema.d.ts.map +1 -1
  28. package/lib/components/SelectDate/schema.js +2 -0
  29. package/lib/components/SelectDate/types.d.ts +2 -0
  30. package/lib/components/SelectDate/types.d.ts.map +1 -1
  31. package/lib/components/SelectDateRange/index.d.ts.map +1 -1
  32. package/lib/components/SelectDateRange/index.js +17 -0
  33. package/lib/components/SelectDateRange/index.test.js +115 -58
  34. package/lib/components/SelectDateRange/schema.d.ts.map +1 -1
  35. package/lib/components/SelectDateRange/schema.js +2 -0
  36. package/lib/components/TextArea/index.js +1 -0
  37. package/lib/components/TextArea/index.test.js +5 -0
  38. package/lib/components/TextField/Input.js +1 -1
  39. package/lib/components/TextField/index.test.js +5 -0
  40. package/lib/utils/useFirstMount.d.ts +2 -0
  41. package/lib/utils/useFirstMount.d.ts.map +1 -0
  42. package/lib/utils/useFirstMount.js +19 -0
  43. package/lib/utils/useUpdateEffect.d.ts +4 -0
  44. package/lib/utils/useUpdateEffect.d.ts.map +1 -0
  45. package/lib/utils/useUpdateEffect.js +28 -0
  46. package/package.json +2 -2
@@ -86,14 +86,38 @@ describe('Combobox', function () {
86
86
  expect(queryByLabelText('test')).toHaveFocus();
87
87
  });
88
88
  });
89
+ describe('when the label is hidden', function () {
90
+ it('does not display the label element', function () {
91
+ var _render2 = render(_react.default.createElement(_.default, {
92
+ label: "test",
93
+ options: defaultOptions,
94
+ hideLabel: true
95
+ })),
96
+ getByText = _render2.getByText;
97
+
98
+ expect(getByText('test', {
99
+ selector: 'span'
100
+ })).not.toBeVisible();
101
+ });
102
+ it('does display the input related to the label', function () {
103
+ var _render3 = render(_react.default.createElement(_.default, {
104
+ label: "test",
105
+ options: defaultOptions,
106
+ hideLabel: true
107
+ })),
108
+ getByLabelText = _render3.getByLabelText;
109
+
110
+ expect(getByLabelText('test')).toBeVisible();
111
+ });
112
+ });
89
113
  describe('when the input field has focus', function () {
90
114
  it('displays the list of options', function () {
91
- var _render2 = render(_react.default.createElement(_.default, {
115
+ var _render4 = render(_react.default.createElement(_.default, {
92
116
  label: "test",
93
117
  options: defaultOptions
94
118
  })),
95
- baseElement = _render2.baseElement,
96
- queryByLabelText = _render2.queryByLabelText;
119
+ baseElement = _render4.baseElement,
120
+ queryByLabelText = _render4.queryByLabelText;
97
121
 
98
122
  defaultOptions.forEach(function (_ref2) {
99
123
  var label = _ref2.label;
@@ -108,12 +132,12 @@ describe('Combobox', function () {
108
132
  });
109
133
  });
110
134
  it('renders the first item in the options list as "active"', function () {
111
- var _render3 = render(_react.default.createElement(_.default, {
135
+ var _render5 = render(_react.default.createElement(_.default, {
112
136
  label: "test",
113
137
  options: defaultOptions
114
138
  })),
115
- baseElement = _render3.baseElement,
116
- queryByText = _render3.queryByText;
139
+ baseElement = _render5.baseElement,
140
+ queryByText = _render5.queryByText;
117
141
 
118
142
  _react2.fireEvent.click(queryByText('test')); // The structure would match the querySelector `li label span`. `queryByText`
119
143
  // returns the <span>, but we need the `<li>`
@@ -136,14 +160,14 @@ describe('Combobox', function () {
136
160
  var chevronUpPathD = chevronUpContainer.querySelector('svg path').getAttribute('d');
137
161
  var onShow = jest.fn();
138
162
 
139
- var _render4 = render(_react.default.createElement(_.default, {
163
+ var _render6 = render(_react.default.createElement(_.default, {
140
164
  label: "test",
141
165
  options: defaultOptions,
142
166
  variant: "sync",
143
167
  onShow: onShow
144
168
  })),
145
- container = _render4.container,
146
- queryByLabelText = _render4.queryByLabelText;
169
+ container = _render6.container,
170
+ queryByLabelText = _render6.queryByLabelText;
147
171
 
148
172
  expect(container.querySelector('svg path').getAttribute('d')).toEqual(chevronDownPathD);
149
173
 
@@ -155,23 +179,23 @@ describe('Combobox', function () {
155
179
  });
156
180
  describe('when variant="async"', function () {
157
181
  it('does NOT render a chevron, even when it has options', function () {
158
- var _render5 = render(_react.default.createElement(_.default, {
182
+ var _render7 = render(_react.default.createElement(_.default, {
159
183
  label: "test",
160
184
  options: defaultOptions,
161
185
  variant: "async"
162
186
  })),
163
- container = _render5.container;
187
+ container = _render7.container;
164
188
 
165
189
  expect(container.querySelector('svg')).not.toBeInTheDocument();
166
190
  });
167
191
  });
168
192
  describe('when typing', function () {
169
193
  it('updates the input value as a stateful component', function () {
170
- var _render6 = render(_react.default.createElement(_.default, {
194
+ var _render8 = render(_react.default.createElement(_.default, {
171
195
  label: "test",
172
196
  options: defaultOptions
173
197
  })),
174
- queryByLabelText = _render6.queryByLabelText;
198
+ queryByLabelText = _render8.queryByLabelText;
175
199
 
176
200
  var value = 'value';
177
201
 
@@ -194,12 +218,12 @@ describe('Combobox', function () {
194
218
  eventTargetValue = event.target.value;
195
219
  });
196
220
 
197
- var _render7 = render(_react.default.createElement(_.default, {
221
+ var _render9 = render(_react.default.createElement(_.default, {
198
222
  label: "test",
199
223
  options: defaultOptions,
200
224
  onChangeInputValue: onChangeInputValue
201
225
  })),
202
- queryByLabelText = _render7.queryByLabelText;
226
+ queryByLabelText = _render9.queryByLabelText;
203
227
 
204
228
  var value = 'value';
205
229
 
@@ -213,13 +237,13 @@ describe('Combobox', function () {
213
237
  expect(eventTargetValue).toEqual(value);
214
238
  });
215
239
  it('renders new options without losing focus on input or closing dropdown', function () {
216
- var _render8 = render(_react.default.createElement(_.default, {
240
+ var _render10 = render(_react.default.createElement(_.default, {
217
241
  label: "test",
218
242
  options: defaultOptions
219
243
  })),
220
- baseElement = _render8.baseElement,
221
- queryByLabelText = _render8.queryByLabelText,
222
- rerender = _render8.rerender;
244
+ baseElement = _render10.baseElement,
245
+ queryByLabelText = _render10.queryByLabelText,
246
+ rerender = _render10.rerender;
223
247
 
224
248
  _react2.fireEvent.click(queryByLabelText('test'));
225
249
 
@@ -239,15 +263,15 @@ describe('Combobox', function () {
239
263
  describe('when variant="async"', function () {
240
264
  describe('when loading', function () {
241
265
  it('renders the loading message, then options', function () {
242
- var _render9 = render(_react.default.createElement(_.default, {
266
+ var _render11 = render(_react.default.createElement(_.default, {
243
267
  label: "test",
244
268
  options: defaultOptions,
245
269
  defaultInputValue: "option",
246
270
  variant: "async"
247
271
  })),
248
- baseElement = _render9.baseElement,
249
- queryByLabelText = _render9.queryByLabelText,
250
- rerender = _render9.rerender;
272
+ baseElement = _render11.baseElement,
273
+ queryByLabelText = _render11.queryByLabelText,
274
+ rerender = _render11.rerender;
251
275
 
252
276
  _react2.fireEvent.click(queryByLabelText('test'));
253
277
 
@@ -276,16 +300,16 @@ describe('Combobox', function () {
276
300
  describe('when variant="async"', function () {
277
301
  describe('when loading={true} then toggles to loading={false}', function () {
278
302
  it('renders the no matches found message', function () {
279
- var _render10 = render(_react.default.createElement(_.default, {
303
+ var _render12 = render(_react.default.createElement(_.default, {
280
304
  label: "test",
281
305
  loading: false,
282
306
  options: [],
283
307
  variant: "async"
284
308
  })),
285
- baseElement = _render10.baseElement,
286
- queryByLabelText = _render10.queryByLabelText,
287
- queryByText = _render10.queryByText,
288
- rerender = _render10.rerender;
309
+ baseElement = _render12.baseElement,
310
+ queryByLabelText = _render12.queryByLabelText,
311
+ queryByText = _render12.queryByText,
312
+ rerender = _render12.rerender;
289
313
 
290
314
  _react2.fireEvent.click(queryByText('test')); // at this stage, the dropdown shouldn't be open.
291
315
 
@@ -322,13 +346,13 @@ describe('Combobox', function () {
322
346
  });
323
347
  describe('when variant="sync"', function () {
324
348
  it('renders the no matches found message', function () {
325
- var _render11 = render(_react.default.createElement(_.default, {
349
+ var _render13 = render(_react.default.createElement(_.default, {
326
350
  label: "test",
327
351
  options: defaultOptions
328
352
  })),
329
- baseElement = _render11.baseElement,
330
- queryByLabelText = _render11.queryByLabelText,
331
- rerender = _render11.rerender;
353
+ baseElement = _render13.baseElement,
354
+ queryByLabelText = _render13.queryByLabelText,
355
+ rerender = _render13.rerender;
332
356
 
333
357
  _react2.fireEvent.click(queryByLabelText('test')); // at this stage, the dropdown should be open with all of the available options.
334
358
 
@@ -363,15 +387,15 @@ describe('Combobox', function () {
363
387
  var onShow = jest.fn();
364
388
  var onHide = jest.fn();
365
389
 
366
- var _render12 = render(_react.default.createElement(_.default, {
390
+ var _render14 = render(_react.default.createElement(_.default, {
367
391
  label: "test",
368
392
  options: defaultOptions,
369
393
  onShow: onShow,
370
394
  onHide: onHide
371
395
  })),
372
- baseElement = _render12.baseElement,
373
- container = _render12.container,
374
- queryByLabelText = _render12.queryByLabelText;
396
+ baseElement = _render14.baseElement,
397
+ container = _render14.container,
398
+ queryByLabelText = _render14.queryByLabelText;
375
399
 
376
400
  _react2.fireEvent.click(queryByLabelText('test'));
377
401
 
@@ -400,14 +424,14 @@ describe('Combobox', function () {
400
424
  it('selects the active (first) item in the dropdown list', function () {
401
425
  var onChangeValue = jest.fn();
402
426
 
403
- var _render13 = render(_react.default.createElement(_.default, {
427
+ var _render15 = render(_react.default.createElement(_.default, {
404
428
  label: "test",
405
429
  onChangeValue: onChangeValue,
406
430
  options: defaultOptions
407
431
  })),
408
- baseElement = _render13.baseElement,
409
- queryByText = _render13.queryByText,
410
- queryByLabelText = _render13.queryByLabelText;
432
+ baseElement = _render15.baseElement,
433
+ queryByText = _render15.queryByText,
434
+ queryByLabelText = _render15.queryByLabelText;
411
435
 
412
436
  _react2.fireEvent.click(queryByText('test'));
413
437
 
@@ -447,14 +471,14 @@ describe('Combobox', function () {
447
471
  value: 'option 2'
448
472
  }];
449
473
 
450
- var _render14 = render(_react.default.createElement(_.default, {
474
+ var _render16 = render(_react.default.createElement(_.default, {
451
475
  label: "test",
452
476
  onChangeValue: onChangeValue,
453
477
  options: options
454
478
  })),
455
- baseElement = _render14.baseElement,
456
- queryByText = _render14.queryByText,
457
- queryByLabelText = _render14.queryByLabelText;
479
+ baseElement = _render16.baseElement,
480
+ queryByText = _render16.queryByText,
481
+ queryByLabelText = _render16.queryByLabelText;
458
482
 
459
483
  _react2.fireEvent.click(queryByText('test'));
460
484
 
@@ -485,14 +509,14 @@ describe('Combobox', function () {
485
509
 
486
510
  var chevronDownPathD = chevronDownContainer.querySelector('svg path').getAttribute('d');
487
511
 
488
- var _render15 = render(_react.default.createElement(_.default, {
512
+ var _render17 = render(_react.default.createElement(_.default, {
489
513
  label: "test",
490
514
  options: defaultOptions
491
515
  })),
492
- baseElement = _render15.baseElement,
493
- container = _render15.container,
494
- queryByText = _render15.queryByText,
495
- queryByLabelText = _render15.queryByLabelText;
516
+ baseElement = _render17.baseElement,
517
+ container = _render17.container,
518
+ queryByText = _render17.queryByText,
519
+ queryByLabelText = _render17.queryByLabelText;
496
520
 
497
521
  _react2.fireEvent.click(queryByText('test'));
498
522
 
@@ -521,12 +545,12 @@ describe('Combobox', function () {
521
545
  it('preserves the typed text, does NOT make a selection', function () {
522
546
  var onChangeValue = jest.fn();
523
547
 
524
- var _render16 = render(_react.default.createElement(_.default, {
548
+ var _render18 = render(_react.default.createElement(_.default, {
525
549
  label: "test",
526
550
  onChangeValue: onChangeValue,
527
551
  options: defaultOptions
528
552
  })),
529
- queryByLabelText = _render16.queryByLabelText;
553
+ queryByLabelText = _render18.queryByLabelText;
530
554
 
531
555
  var value = 'value';
532
556
 
@@ -554,14 +578,14 @@ describe('Combobox', function () {
554
578
  var onChangeInputValue = jest.fn();
555
579
  var onChangeValue = jest.fn();
556
580
 
557
- var _render17 = render(_react.default.createElement(_.default, {
581
+ var _render19 = render(_react.default.createElement(_.default, {
558
582
  label: "test",
559
583
  onChangeInputValue: onChangeInputValue,
560
584
  onChangeValue: onChangeValue,
561
585
  options: defaultOptions
562
586
  })),
563
- baseElement = _render17.baseElement,
564
- queryByLabelText = _render17.queryByLabelText; // You can not fire an event on the input in the UI unless you are already focused on it.
587
+ baseElement = _render19.baseElement,
588
+ queryByLabelText = _render19.queryByLabelText; // You can not fire an event on the input in the UI unless you are already focused on it.
565
589
  // This click focuses on the input.
566
590
 
567
591
 
@@ -621,14 +645,14 @@ describe('Combobox', function () {
621
645
  }]
622
646
  }];
623
647
 
624
- var _render18 = render(_react.default.createElement(_.default, {
648
+ var _render20 = render(_react.default.createElement(_.default, {
625
649
  label: "test",
626
650
  onChangeInputValue: onChangeInputValue,
627
651
  onChangeValue: onChangeValue,
628
652
  options: options
629
653
  })),
630
- baseElement = _render18.baseElement,
631
- queryByLabelText = _render18.queryByLabelText; // You can not fire an event on the input in the UI unless you are already focused on it.
654
+ baseElement = _render20.baseElement,
655
+ queryByLabelText = _render20.queryByLabelText; // You can not fire an event on the input in the UI unless you are already focused on it.
632
656
  // This click focuses on the input.
633
657
 
634
658
 
@@ -668,13 +692,13 @@ describe('Combobox', function () {
668
692
  });
669
693
  describe('when pressing the ESCAPE key', function () {
670
694
  it('closes the dropdown, keeps focus on input', function () {
671
- var _render19 = render(_react.default.createElement(_.default, {
695
+ var _render21 = render(_react.default.createElement(_.default, {
672
696
  label: "test",
673
697
  options: defaultOptions
674
698
  })),
675
- baseElement = _render19.baseElement,
676
- queryByLabelText = _render19.queryByLabelText,
677
- queryByText = _render19.queryByText;
699
+ baseElement = _render21.baseElement,
700
+ queryByLabelText = _render21.queryByLabelText,
701
+ queryByText = _render21.queryByText;
678
702
 
679
703
  _react2.fireEvent.click(queryByText('test'));
680
704
 
@@ -692,13 +716,13 @@ describe('Combobox', function () {
692
716
  it('preserves the typed text, does NOT make a selection', function () {
693
717
  var onChangeValue = jest.fn();
694
718
 
695
- var _render20 = render(_react.default.createElement(_.default, {
719
+ var _render22 = render(_react.default.createElement(_.default, {
696
720
  label: "test",
697
721
  options: defaultOptions,
698
722
  onChangeValue: onChangeValue
699
723
  })),
700
- queryByLabelText = _render20.queryByLabelText,
701
- queryByText = _render20.queryByText;
724
+ queryByLabelText = _render22.queryByLabelText,
725
+ queryByText = _render22.queryByText;
702
726
 
703
727
  var value = 'value';
704
728
 
@@ -724,18 +748,18 @@ describe('Combobox', function () {
724
748
  });
725
749
  describe('when the input field has text', function () {
726
750
  it('renders the "clear" button', function () {
727
- var _render21 = render(_react.default.createElement(_Times.default, null)),
728
- timesContainer = _render21.container;
751
+ var _render23 = render(_react.default.createElement(_Times.default, null)),
752
+ timesContainer = _render23.container;
729
753
 
730
754
  var timesPathD = timesContainer.querySelector('svg path').getAttribute('d');
731
755
 
732
- var _render22 = render(_react.default.createElement(_.default, {
756
+ var _render24 = render(_react.default.createElement(_.default, {
733
757
  defaultInputValue: "value",
734
758
  label: "test",
735
759
  options: defaultOptions
736
760
  })),
737
- container = _render22.container,
738
- queryByLabelText = _render22.queryByLabelText;
761
+ container = _render24.container,
762
+ queryByLabelText = _render24.queryByLabelText;
739
763
 
740
764
  expect(queryByLabelText('test')).toHaveValue('value');
741
765
  expect(container.querySelectorAll('svg path')[0]).toHaveAttribute('d', timesPathD);
@@ -747,12 +771,12 @@ describe('Combobox', function () {
747
771
  inputValue = event ? event.target.value : '';
748
772
  });
749
773
 
750
- var _render23 = render(_react.default.createElement(_.default, {
774
+ var _render25 = render(_react.default.createElement(_.default, {
751
775
  label: "test",
752
776
  onChangeInputValue: onChangeInputValue
753
777
  })),
754
- container = _render23.container,
755
- queryByLabelText = _render23.queryByLabelText;
778
+ container = _render25.container,
779
+ queryByLabelText = _render25.queryByLabelText;
756
780
 
757
781
  var value = 'value';
758
782
 
@@ -778,13 +802,13 @@ describe('Combobox', function () {
778
802
  it('updates the input value with the label of the selection', function () {
779
803
  var onChangeValue = jest.fn();
780
804
 
781
- var _render24 = render(_react.default.createElement(_.default, {
805
+ var _render26 = render(_react.default.createElement(_.default, {
782
806
  label: "test",
783
807
  options: defaultOptions,
784
808
  onChangeValue: onChangeValue
785
809
  })),
786
- baseElement = _render24.baseElement,
787
- queryByLabelText = _render24.queryByLabelText;
810
+ baseElement = _render26.baseElement,
811
+ queryByLabelText = _render26.queryByLabelText;
788
812
 
789
813
  _react2.fireEvent.click(queryByLabelText('test'));
790
814
 
@@ -798,13 +822,13 @@ describe('Combobox', function () {
798
822
  expect((0, _react2.queryByText)(baseElement, defaultOptions[0].label)).not.toBeInTheDocument();
799
823
  });
800
824
  it('shows the selected tag when multiple select is enabled', function () {
801
- var _render25 = render(_react.default.createElement(_.default, {
825
+ var _render27 = render(_react.default.createElement(_.default, {
802
826
  label: "test",
803
827
  multiple: true,
804
828
  options: defaultOptions
805
829
  })),
806
- baseElement = _render25.baseElement,
807
- queryByLabelText = _render25.queryByLabelText;
830
+ baseElement = _render27.baseElement,
831
+ queryByLabelText = _render27.queryByLabelText;
808
832
 
809
833
  _react2.fireEvent.click(queryByLabelText('test'));
810
834
 
@@ -813,12 +837,12 @@ describe('Combobox', function () {
813
837
  expect((0, _react2.queryByText)(baseElement, defaultOptions[1].label)).toBeInTheDocument();
814
838
  });
815
839
  it('renders as "selected" in the dropdown list', function () {
816
- var _render26 = render(_react.default.createElement(_.default, {
840
+ var _render28 = render(_react.default.createElement(_.default, {
817
841
  label: "test",
818
842
  options: defaultOptions
819
843
  })),
820
- baseElement = _render26.baseElement,
821
- queryByLabelText = _render26.queryByLabelText;
844
+ baseElement = _render28.baseElement,
845
+ queryByLabelText = _render28.queryByLabelText;
822
846
 
823
847
  _react2.fireEvent.click(queryByLabelText('test'));
824
848
 
@@ -836,14 +860,14 @@ describe('Combobox', function () {
836
860
  it('does NOT update the selection automatically', function () {
837
861
  var onChangeValue = jest.fn();
838
862
 
839
- var _render27 = render(_react.default.createElement(_.default, {
863
+ var _render29 = render(_react.default.createElement(_.default, {
840
864
  label: "test",
841
865
  options: defaultOptions,
842
866
  onChangeValue: onChangeValue
843
867
  })),
844
- baseElement = _render27.baseElement,
845
- queryByLabelText = _render27.queryByLabelText,
846
- queryByText = _render27.queryByText;
868
+ baseElement = _render29.baseElement,
869
+ queryByLabelText = _render29.queryByLabelText,
870
+ queryByText = _render29.queryByText;
847
871
 
848
872
  _react2.fireEvent.click(queryByText('test'));
849
873
 
@@ -870,13 +894,13 @@ describe('Combobox', function () {
870
894
  it('clears the selection', function () {
871
895
  var onChangeValue = jest.fn();
872
896
 
873
- var _render28 = render(_react.default.createElement(_.default, {
897
+ var _render30 = render(_react.default.createElement(_.default, {
874
898
  label: "test",
875
899
  options: defaultOptions,
876
900
  onChangeValue: onChangeValue
877
901
  })),
878
- baseElement = _render28.baseElement,
879
- queryByLabelText = _render28.queryByLabelText;
902
+ baseElement = _render30.baseElement,
903
+ queryByLabelText = _render30.queryByLabelText;
880
904
 
881
905
  _react2.fireEvent.click(queryByLabelText('test'));
882
906
 
@@ -901,7 +925,7 @@ describe('Combobox', function () {
901
925
  var onChangeInputValue = jest.fn();
902
926
  var onChangeValue = jest.fn();
903
927
 
904
- var _render29 = render(_react.default.createElement(_.default, {
928
+ var _render31 = render(_react.default.createElement(_.default, {
905
929
  label: "test",
906
930
  options: defaultOptions,
907
931
  defaultInputValue: "value",
@@ -909,9 +933,9 @@ describe('Combobox', function () {
909
933
  onChangeInputValue: onChangeInputValue,
910
934
  onChangeValue: onChangeValue
911
935
  })),
912
- baseElement = _render29.baseElement,
913
- queryByLabelText = _render29.queryByLabelText,
914
- rerender = _render29.rerender;
936
+ baseElement = _render31.baseElement,
937
+ queryByLabelText = _render31.queryByLabelText,
938
+ rerender = _render31.rerender;
915
939
 
916
940
  _react2.fireEvent.click(queryByLabelText('test'));
917
941
 
@@ -934,7 +958,7 @@ describe('Combobox', function () {
934
958
  });
935
959
  describe('when a controlled component', function () {
936
960
  it('initializes with and prefers prop values', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
937
- var newInputValue, onChangeInputValue, onChangeValue, _render30, baseElement, queryByLabelText, rerender;
961
+ var newInputValue, onChangeInputValue, onChangeValue, _render32, baseElement, queryByLabelText, rerender;
938
962
 
939
963
  return regeneratorRuntime.wrap(function _callee$(_context) {
940
964
  while (1) {
@@ -944,7 +968,7 @@ describe('Combobox', function () {
944
968
  newInputValue = event ? event.target.value : '';
945
969
  });
946
970
  onChangeValue = jest.fn();
947
- _render30 = render(_react.default.createElement(_.default, {
971
+ _render32 = render(_react.default.createElement(_.default, {
948
972
  label: "test",
949
973
  options: defaultOptions,
950
974
  inputValue: "value",
@@ -953,7 +977,7 @@ describe('Combobox', function () {
953
977
  onChangeValue: onChangeValue,
954
978
  autoComplete: "auto-complete-test",
955
979
  type: "search"
956
- })), baseElement = _render30.baseElement, queryByLabelText = _render30.queryByLabelText, rerender = _render30.rerender;
980
+ })), baseElement = _render32.baseElement, queryByLabelText = _render32.queryByLabelText, rerender = _render32.rerender;
957
981
 
958
982
  _react2.fireEvent.click(queryByLabelText('test'));
959
983
 
@@ -1011,7 +1035,7 @@ describe('Combobox', function () {
1011
1035
  it('calls the onChangeValue prop with removed: true', function () {
1012
1036
  var onChangeValue = jest.fn();
1013
1037
 
1014
- var _render31 = render(_react.default.createElement(_.default, {
1038
+ var _render33 = render(_react.default.createElement(_.default, {
1015
1039
  label: "test",
1016
1040
  options: defaultOptions,
1017
1041
  inputValue: "",
@@ -1019,8 +1043,8 @@ describe('Combobox', function () {
1019
1043
  onChangeValue: onChangeValue,
1020
1044
  multiple: true
1021
1045
  })),
1022
- queryByText = _render31.queryByText,
1023
- queryByLabelText = _render31.queryByLabelText;
1046
+ queryByText = _render33.queryByText,
1047
+ queryByLabelText = _render33.queryByLabelText;
1024
1048
 
1025
1049
  expect(queryByText(defaultOptions[1].label)).toBeInTheDocument();
1026
1050
 
@@ -48,7 +48,7 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
48
48
  var TargetContainer = _styledComponents.default.div.withConfig({
49
49
  displayName: "Target__TargetContainer",
50
50
  componentId: "sc-1t0verh-0"
51
- })(["align-items:center;display:flex;justify-content:space-between;position:relative;top:-4px;width:100%;"]);
51
+ })(["align-items:center;display:flex;justify-content:space-between;position:relative;top:-2px;width:100%;"]);
52
52
 
53
53
  var TargetButton = (0, _styledComponents.default)(_BaseButton.default).withConfig({
54
54
  displayName: "Target__TargetButton",
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Select/index.tsx"],"names":[],"mappings":"AAGA,OAAc,EAEZ,sBAAsB,EAMvB,MAAM,OAAO,CAAC;AAmBf,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AA2OjD,QAAA,MAAM,aAAa,EAAE,sBAAsB,CACzC,SAAS,EACT,WAAW,CACS,CAAC;AAgCvB,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Select/index.tsx"],"names":[],"mappings":"AAGA,OAAc,EAEZ,sBAAsB,EAMvB,MAAM,OAAO,CAAC;AAoBf,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAyPjD,QAAA,MAAM,aAAa,EAAE,sBAAsB,CACzC,SAAS,EACT,WAAW,CACS,CAAC;AAgCvB,eAAe,aAAa,CAAC"}
@@ -27,6 +27,8 @@ var _useClickOutside = _interopRequireDefault(require("../../utils/useClickOutsi
27
27
 
28
28
  var _useUniqueId = _interopRequireDefault(require("../../utils/useUniqueId"));
29
29
 
30
+ var _useUpdateEffect = _interopRequireDefault(require("../../utils/useUpdateEffect"));
31
+
30
32
  var _DropdownList = _interopRequireDefault(require("../DropdownList"));
31
33
 
32
34
  var _Button = require("../Button");
@@ -77,7 +79,9 @@ function Select(props, ref) {
77
79
  name = props.name,
78
80
  onChange = props.onChange,
79
81
  onClick = props.onClick,
82
+ onHide = props.onHide,
80
83
  onKeyDown = props.onKeyDown,
84
+ onShow = props.onShow,
81
85
  options = props.options,
82
86
  renderOptionLabel = props.renderOptionLabel,
83
87
  propValue = props.value,
@@ -203,6 +207,19 @@ function Select(props, ref) {
203
207
  }, [isPopoverVisible]);
204
208
  (0, _useClickOutside.default)([listRef], handleClickOutsideList);
205
209
  var inputContainerRefs = (0, _compact.default)([inputContainerRef, popoverTargetRef]);
210
+ /**
211
+ * Triggers onShow/onHide callbacks representing wether the Popover is open or not.
212
+ */
213
+
214
+ (0, _useUpdateEffect.default)(function () {
215
+ if (isPopoverVisible) {
216
+ onShow && onShow();
217
+ }
218
+
219
+ if (!isPopoverVisible) {
220
+ onHide && onHide();
221
+ }
222
+ }, [isPopoverVisible, onHide, onShow]);
206
223
  return _react.default.createElement(_react.default.Fragment, null, _react.default.createElement(_InputField.default, _extends({}, props, {
207
224
  "aria-live": "assertive",
208
225
  cursor: "default",