@decisiv/ui-components 2.0.1-alpha.74 → 2.0.1-alpha.83

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 (75) hide show
  1. package/lib/atoms/InputField/Containers.d.ts +6 -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 +2 -0
  8. package/lib/atoms/InputField/index.d.ts.map +1 -1
  9. package/lib/atoms/InputField/index.js +14 -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/Filter/IconWrapper/index.d.ts +197 -0
  16. package/lib/components/Filter/IconWrapper/index.d.ts.map +1 -0
  17. package/lib/components/Filter/IconWrapper/index.js +35 -0
  18. package/lib/components/Filter/SimplePrimary/index.d.ts +31 -0
  19. package/lib/components/Filter/SimplePrimary/index.d.ts.map +1 -0
  20. package/lib/components/Filter/SimplePrimary/index.js +58 -0
  21. package/lib/components/Filter/SimplePrimary/index.test.js +34 -0
  22. package/lib/components/Filter/StyledFilter.d.ts +4 -0
  23. package/lib/components/Filter/StyledFilter.d.ts.map +1 -0
  24. package/lib/components/Filter/StyledFilter.js +39 -0
  25. package/lib/components/Filter/StyledLabel/index.d.ts +8 -0
  26. package/lib/components/Filter/StyledLabel/index.d.ts.map +1 -0
  27. package/lib/components/Filter/StyledLabel/index.js +30 -0
  28. package/lib/components/Filter/index.d.ts +27 -0
  29. package/lib/components/Filter/index.d.ts.map +1 -0
  30. package/lib/components/Filter/index.js +95 -0
  31. package/lib/components/Filter/index.test.js +41 -0
  32. package/lib/components/Filter/kind.d.ts +6 -0
  33. package/lib/components/Filter/kind.d.ts.map +1 -0
  34. package/lib/components/Filter/kind.js +45 -0
  35. package/lib/components/Filter/schema.d.ts +9 -0
  36. package/lib/components/Filter/schema.d.ts.map +1 -0
  37. package/lib/components/Filter/schema.js +32 -0
  38. package/lib/components/Filter/types.d.ts +17 -0
  39. package/lib/components/Filter/types.d.ts.map +1 -0
  40. package/lib/components/Filter/types.js +1 -0
  41. package/lib/components/Select/Target.js +1 -1
  42. package/lib/components/Select/index.d.ts.map +1 -1
  43. package/lib/components/Select/index.js +17 -0
  44. package/lib/components/Select/index.test.js +82 -23
  45. package/lib/components/Select/schema.d.ts.map +1 -1
  46. package/lib/components/Select/schema.js +2 -0
  47. package/lib/components/Select/types.d.ts +2 -0
  48. package/lib/components/Select/types.d.ts.map +1 -1
  49. package/lib/components/SelectDate/Target.js +1 -1
  50. package/lib/components/SelectDate/index.d.ts.map +1 -1
  51. package/lib/components/SelectDate/index.js +17 -0
  52. package/lib/components/SelectDate/index.test.js +108 -51
  53. package/lib/components/SelectDate/schema.d.ts.map +1 -1
  54. package/lib/components/SelectDate/schema.js +2 -0
  55. package/lib/components/SelectDate/types.d.ts +2 -0
  56. package/lib/components/SelectDate/types.d.ts.map +1 -1
  57. package/lib/components/SelectDateRange/index.d.ts.map +1 -1
  58. package/lib/components/SelectDateRange/index.js +17 -0
  59. package/lib/components/SelectDateRange/index.test.js +115 -58
  60. package/lib/components/SelectDateRange/schema.d.ts.map +1 -1
  61. package/lib/components/SelectDateRange/schema.js +2 -0
  62. package/lib/components/TextArea/index.js +1 -0
  63. package/lib/components/TextArea/index.test.js +5 -0
  64. package/lib/components/TextField/Input.js +1 -1
  65. package/lib/components/TextField/index.test.js +5 -0
  66. package/lib/components/index.d.ts +1 -0
  67. package/lib/components/index.d.ts.map +1 -1
  68. package/lib/components/index.js +9 -0
  69. package/lib/utils/useFirstMount.d.ts +2 -0
  70. package/lib/utils/useFirstMount.d.ts.map +1 -0
  71. package/lib/utils/useFirstMount.js +19 -0
  72. package/lib/utils/useUpdateEffect.d.ts +4 -0
  73. package/lib/utils/useUpdateEffect.d.ts.map +1 -0
  74. package/lib/utils/useUpdateEffect.js +28 -0
  75. package/package.json +2 -2
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.hoverStyles = void 0;
7
+
8
+ var _styledTheming = _interopRequireDefault(require("styled-theming"));
9
+
10
+ var _rem = _interopRequireDefault(require("polished/lib/helpers/rem"));
11
+
12
+ var _styledComponents = require("styled-components");
13
+
14
+ var _toColorString = _interopRequireDefault(require("polished/lib/color/toColorString"));
15
+
16
+ var _color = _interopRequireDefault(require("@decisiv/design-tokens/lib/color"));
17
+
18
+ var _ConfigProvider = require("../../providers/ConfigProvider");
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+
22
+ var hoverStyles = (0, _styledComponents.css)(["color:", ";background-color:", ";border:", " solid ", ";svg{color:", ";}"], (0, _toColorString.default)(_color.default.base.snowWhite), (0, _toColorString.default)(_color.default.interaction.indianOcean), (0, _rem.default)(1), (0, _toColorString.default)(_color.default.interaction.indianOcean), (0, _toColorString.default)(_color.default.base.snowWhite));
23
+ exports.hoverStyles = hoverStyles;
24
+ var primaryStyle = (0, _styledComponents.css)(["border:", " solid ", ";&:hover{", ";}"], (0, _rem.default)(1), (0, _toColorString.default)(_color.default.base.quarterMoon), hoverStyles);
25
+ // light and dark are the same ATM.
26
+ var lightStyles = {
27
+ primary: primaryStyle
28
+ };
29
+ var darkStyles = {
30
+ primary: primaryStyle
31
+ };
32
+ var kindStyles = (0, _styledTheming.default)(_ConfigProvider.themeKeys.mode, {
33
+ light: function light(_ref) {
34
+ var _ref$kind = _ref.kind,
35
+ kind = _ref$kind === void 0 ? 'primary' : _ref$kind;
36
+ return lightStyles[kind];
37
+ },
38
+ dark: function dark(_ref2) {
39
+ var _ref2$kind = _ref2.kind,
40
+ kind = _ref2$kind === void 0 ? 'primary' : _ref2$kind;
41
+ return darkStyles[kind];
42
+ }
43
+ });
44
+ var _default = kindStyles;
45
+ exports.default = _default;
@@ -0,0 +1,9 @@
1
+ import { Validator } from 'prop-types';
2
+ export declare const makeFilterSchemaPropTypes: (extensions?: {
3
+ [x: string]: Validator<unknown>;
4
+ } | undefined) => {
5
+ [x: string]: Validator<unknown>;
6
+ };
7
+ declare const schema: any;
8
+ export default schema;
9
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/components/Filter/schema.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,eAAO,MAAM,yBAAyB;;;;CAsBpC,CAAC;AAEH,QAAA,MAAM,MAAM,KAAsC,CAAC;AAInD,eAAe,MAAM,CAAC"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.makeFilterSchemaPropTypes = void 0;
7
+
8
+ var _reactDesc = require("react-desc");
9
+
10
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { keys.push.apply(keys, Object.getOwnPropertySymbols(object)); } if (enumerableOnly) keys = keys.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); return keys; }
11
+
12
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
13
+
14
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
15
+
16
+ var makeFilterSchemaPropTypes = function makeFilterSchemaPropTypes(extensions) {
17
+ return _objectSpread({
18
+ text: _reactDesc.PropTypes.string.description("The Filter's text"),
19
+ active: _reactDesc.PropTypes.bool.description("The Filter's active status. Use when you want to control the Filter with onClick.").defaultValue('false'),
20
+ badgeIcon: _reactDesc.PropTypes.element.description('Which `iconix` icon to render'),
21
+ badgeColor: _reactDesc.PropTypes.string.description('Which color to use as background for the icon. It always displays when an icon is provided.').defaultValue('information'),
22
+ count: _reactDesc.PropTypes.number.description("The Filter's count, displayed to the left of the text. When not provided, no count is rendered.")
23
+ }, extensions);
24
+ };
25
+
26
+ exports.makeFilterSchemaPropTypes = makeFilterSchemaPropTypes;
27
+ var schema = (0, _reactDesc.describe)({
28
+ displayName: 'Filter'
29
+ });
30
+ schema.propTypes = makeFilterSchemaPropTypes();
31
+ var _default = schema;
32
+ exports.default = _default;
@@ -0,0 +1,17 @@
1
+ import { ButtonHTMLAttributes } from 'react';
2
+ import { IconProps } from '@decisiv/iconix';
3
+ import { CommonUIColorKeys } from '../../utils/commonUIColors';
4
+ import { TranslatedText } from '../../utils/useTranslations';
5
+ export declare type Variant = 'simple';
6
+ export declare type Kind = 'primary';
7
+ export declare type IconComponent = (props: IconProps) => JSX.Element;
8
+ export interface FilterProps extends ButtonHTMLAttributes<HTMLButtonElement> {
9
+ active?: boolean;
10
+ count?: number;
11
+ badgeIcon?: IconComponent;
12
+ badgeColor?: CommonUIColorKeys;
13
+ kind?: Kind;
14
+ text: TranslatedText;
15
+ variant?: Variant;
16
+ }
17
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/Filter/types.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,oBAAY,OAAO,GAAG,QAAQ,CAAC;AAC/B,oBAAY,IAAI,GAAG,SAAS,CAAC;AAC7B,oBAAY,aAAa,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,GAAG,CAAC,OAAO,CAAC;AAE9D,MAAM,WAAW,WAAY,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IAC1E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB"}
@@ -0,0 +1 @@
1
+ "use strict";
@@ -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",
@@ -111,16 +111,53 @@ describe('Select', function () {
111
111
  expect(getByText(defaultProps.label)).toBeTruthy();
112
112
  expect((0, _react2.queryByText)(baseElement, opt0.label)).toBeTruthy();
113
113
  });
114
+ it('triggers onShow callback', function () {
115
+ var onShow = jest.fn();
116
+
117
+ var _render2 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
118
+ onShow: onShow
119
+ }))),
120
+ queryByText = _render2.queryByText;
121
+
122
+ expect(onShow).not.toHaveBeenCalled();
123
+ var label = queryByText(defaultProps.label);
124
+
125
+ _react2.fireEvent.click(label);
126
+
127
+ expect(onShow).toHaveBeenCalled();
128
+ });
129
+ it('triggers onHide callback', function () {
130
+ var onHide = jest.fn();
131
+
132
+ var _render3 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
133
+ onHide: onHide
134
+ }))),
135
+ queryByText = _render3.queryByText;
136
+
137
+ expect(onHide).not.toHaveBeenCalled();
138
+ var label = queryByText(defaultProps.label);
139
+
140
+ _react2.fireEvent.click(label);
141
+
142
+ _react2.fireEvent.keyDown(label, {
143
+ key: 'Escape',
144
+ code: 'Escape',
145
+ keyCode: 27,
146
+ charCode: 27
147
+ });
148
+
149
+ expect(onHide).toHaveBeenCalled();
150
+ });
114
151
  });
115
152
  describe('clicking an option', function () {
116
153
  it('calls the onchange handler with the new value', function () {
117
154
  var onChange = jest.fn();
118
155
 
119
- var _render2 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
156
+ var _render4 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
120
157
  onChange: onChange
121
158
  }))),
122
- baseElement = _render2.baseElement,
123
- getByText = _render2.getByText;
159
+ baseElement = _render4.baseElement,
160
+ getByText = _render4.getByText;
124
161
 
125
162
  _react2.fireEvent.click(getByText(defaultProps.label));
126
163
 
@@ -129,9 +166,9 @@ describe('Select', function () {
129
166
  expect(onChange).toHaveBeenCalledWith(cat0Opt0.id);
130
167
  });
131
168
  it('automatically updates the option label inside the input field', function () {
132
- var _render3 = render(_react.default.createElement(_.default, defaultProps)),
133
- baseElement = _render3.baseElement,
134
- getByText = _render3.getByText;
169
+ var _render5 = render(_react.default.createElement(_.default, defaultProps)),
170
+ baseElement = _render5.baseElement,
171
+ getByText = _render5.getByText;
135
172
 
136
173
  _react2.fireEvent.click(getByText(defaultProps.label));
137
174
 
@@ -143,10 +180,10 @@ describe('Select', function () {
143
180
  });
144
181
  describe('with a default value', function () {
145
182
  it('displays the option label matching the defaultValue inside the input field', function () {
146
- var _render4 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
183
+ var _render6 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
147
184
  defaultValue: cat0Opt0.id
148
185
  }))),
149
- getByText = _render4.getByText;
186
+ getByText = _render6.getByText;
150
187
 
151
188
  expect(getByText(cat0Opt0.label)).toBeTruthy();
152
189
  });
@@ -154,12 +191,12 @@ describe('Select', function () {
154
191
  it('calls the onchange handler with the new value', function () {
155
192
  var onChange = jest.fn();
156
193
 
157
- var _render5 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
194
+ var _render7 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
158
195
  onChange: onChange,
159
196
  defaultValue: opt1.id
160
197
  }))),
161
- baseElement = _render5.baseElement,
162
- getByText = _render5.getByText;
198
+ baseElement = _render7.baseElement,
199
+ getByText = _render7.getByText;
163
200
 
164
201
  _react2.fireEvent.click(getByText(defaultProps.label));
165
202
 
@@ -168,11 +205,11 @@ describe('Select', function () {
168
205
  expect(onChange).toHaveBeenCalledWith(cat0Opt0.id);
169
206
  });
170
207
  it('automatically updates the option label inside the input field', function () {
171
- var _render6 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
208
+ var _render8 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
172
209
  defaultValue: opt1.id
173
210
  }))),
174
- baseElement = _render6.baseElement,
175
- getByText = _render6.getByText;
211
+ baseElement = _render8.baseElement,
212
+ getByText = _render8.getByText;
176
213
 
177
214
  _react2.fireEvent.click(getByText(defaultProps.label));
178
215
 
@@ -183,12 +220,34 @@ describe('Select', function () {
183
220
  });
184
221
  });
185
222
  });
223
+ describe('when label hidden', function () {
224
+ it('does not display the label element', function () {
225
+ var _render9 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
226
+ defaultvalue: opt1.id,
227
+ hideLabel: true
228
+ }))),
229
+ getByText = _render9.getByText;
230
+
231
+ expect(getByText(defaultProps.label, {
232
+ selector: 'span'
233
+ })).not.toBeVisible();
234
+ });
235
+ it('does display the input related to the label', function () {
236
+ var _render10 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
237
+ defaultValue: opt1.id,
238
+ hideLabel: true
239
+ }))),
240
+ getByLabelText = _render10.getByLabelText;
241
+
242
+ expect(getByLabelText(defaultProps.label)).toBeVisible();
243
+ });
244
+ });
186
245
  describe('when component is controlled', function () {
187
246
  it('displays the option label matching the value inside the input field', function () {
188
- var _render7 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
247
+ var _render11 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
189
248
  value: cat0Opt0.id
190
249
  }))),
191
- getByText = _render7.getByText;
250
+ getByText = _render11.getByText;
192
251
 
193
252
  expect(getByText(cat0Opt0.label)).toBeTruthy();
194
253
  });
@@ -196,12 +255,12 @@ describe('Select', function () {
196
255
  it('calls the onchange handler with the new value', function () {
197
256
  var onChange = jest.fn();
198
257
 
199
- var _render8 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
258
+ var _render12 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
200
259
  onChange: onChange,
201
260
  value: opt1.id
202
261
  }))),
203
- baseElement = _render8.baseElement,
204
- getByText = _render8.getByText;
262
+ baseElement = _render12.baseElement,
263
+ getByText = _render12.getByText;
205
264
 
206
265
  _react2.fireEvent.click(getByText(defaultProps.label));
207
266
 
@@ -210,12 +269,12 @@ describe('Select', function () {
210
269
  expect(onChange).toHaveBeenCalledWith(cat0Opt0.id);
211
270
  });
212
271
  it('does NOT automatically update the option label inside the input field', function () {
213
- var _render9 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
272
+ var _render13 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
214
273
  value: opt1.id
215
274
  }))),
216
- baseElement = _render9.baseElement,
217
- getByText = _render9.getByText,
218
- queryByText = _render9.queryByText;
275
+ baseElement = _render13.baseElement,
276
+ getByText = _render13.getByText,
277
+ queryByText = _render13.queryByText;
219
278
 
220
279
  _react2.fireEvent.click(getByText(defaultProps.label));
221
280
 
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/components/Select/schema.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,MAAM,KAAsC,CAAC;AAwDnD,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/components/Select/schema.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,MAAM,KAAsC,CAAC;AA8DnD,eAAe,MAAM,CAAC"}
@@ -30,6 +30,8 @@ schema.propTypes = _objectSpread({}, (0, _omit.default)(_InputField.schema.makeP
30
30
  right: _reactDesc.PropTypes.arrayOf(_reactDesc.PropTypes.object)
31
31
  })]).description('A collection of objects, each containing a subset of props valid for a Button component. Check the notes on the OptionsList.'),
32
32
  onChange: _reactDesc.PropTypes.func.description(''),
33
+ onHide: _reactDesc.PropTypes.func.description('A callback which is triggered when the popover is closed'),
34
+ onShow: _reactDesc.PropTypes.func.description('A callback which is triggered when the popover is opened'),
33
35
  options: _reactDesc.PropTypes.arrayOf(_reactDesc.PropTypes.shape({
34
36
  decoration: _reactDesc.PropTypes.shape({
35
37
  type: _reactDesc.PropTypes.oneOf(['Avatar', 'Badge'])
@@ -15,6 +15,8 @@ export declare type SelectProps = BaseSelectProps & {
15
15
  defaultValue?: string;
16
16
  name: string;
17
17
  onChange?: (value: string) => void;
18
+ onHide?: () => void;
19
+ onShow?: () => void;
18
20
  options: Items;
19
21
  value?: string;
20
22
  zIndex?: PopoverProps['zIndex'];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/Select/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,OAAO,CAAC;AAEf,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,oBAAY,SAAS,GAAG,iBAAiB,CAAC;AAE1C,UAAU,eACR,SAAQ,oBAAoB,CAAC,SAAS,CAAC,EACrC,IAAI,CACF,mBAAmB,EACnB,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,oBAAoB,GAAG,OAAO,CACvE,EACD,IAAI,CAAC,gBAAgB,EAAE,SAAS,GAAG,mBAAmB,CAAC;IACzD,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,SAAS,CAAC,EAAE,oBAAoB,CAAC;CAClC;AAED,oBAAY,WAAW,GAAG,eAAe,GAAG;IAC1C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;CACjC,CAAC;AAEF,MAAM,WAAW,WACf,SAAQ,oBAAoB,CAAC,SAAS,CAAC,EACrC,IAAI,CACF,mBAAmB,EACnB,UAAU,GAAG,IAAI,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,KAAK,GAAG,OAAO,CACxE;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACtC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC3C,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;CACzC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/Select/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,OAAO,CAAC;AAEf,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,oBAAY,SAAS,GAAG,iBAAiB,CAAC;AAE1C,UAAU,eACR,SAAQ,oBAAoB,CAAC,SAAS,CAAC,EACrC,IAAI,CACF,mBAAmB,EACnB,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,oBAAoB,GAAG,OAAO,CACvE,EACD,IAAI,CAAC,gBAAgB,EAAE,SAAS,GAAG,mBAAmB,CAAC;IACzD,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,SAAS,CAAC,EAAE,oBAAoB,CAAC;CAClC;AAED,oBAAY,WAAW,GAAG,eAAe,GAAG;IAC1C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;CACjC,CAAC;AAEF,MAAM,WAAW,WACf,SAAQ,oBAAoB,CAAC,SAAS,CAAC,EACrC,IAAI,CACF,mBAAmB,EACnB,UAAU,GAAG,IAAI,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,KAAK,GAAG,OAAO,CACxE;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACtC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC3C,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;CACzC"}
@@ -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: "ks9oxf-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/SelectDate/index.tsx"],"names":[],"mappings":"AAIA,OAAc,EAEZ,sBAAsB,EAMvB,MAAM,OAAO,CAAC;AAqBf,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAQ,MAAM,SAAS,CAAC;AAIjE,OAAO,EACL,SAAS,EACT,oBAAoB,GACrB,MAAM,gCAAgC,CAAC;AAmPxC,QAAA,MAAM,iBAAiB,EAAE,sBAAsB,CAC7C,cAAc,EACd,gBAAgB,CACQ,CAAC;AAK3B,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/SelectDate/index.tsx"],"names":[],"mappings":"AAIA,OAAc,EAEZ,sBAAsB,EAMvB,MAAM,OAAO,CAAC;AAsBf,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAQ,MAAM,SAAS,CAAC;AAIjE,OAAO,EACL,SAAS,EACT,oBAAoB,GACrB,MAAM,gCAAgC,CAAC;AAiQxC,QAAA,MAAM,iBAAiB,EAAE,sBAAsB,CAC7C,cAAc,EACd,gBAAgB,CACQ,CAAC;AAK3B,eAAe,iBAAiB,CAAC"}
@@ -41,6 +41,8 @@ var _useTranslations = _interopRequireDefault(require("../../utils/useTranslatio
41
41
 
42
42
  var _useUniqueId = _interopRequireDefault(require("../../utils/useUniqueId"));
43
43
 
44
+ var _useUpdateEffect = _interopRequireDefault(require("../../utils/useUpdateEffect"));
45
+
44
46
  var _Calendar = _interopRequireWildcard(require("../../atoms/Calendar"));
45
47
 
46
48
  var _InputField = _interopRequireDefault(require("../../atoms/InputField"));
@@ -90,6 +92,8 @@ function SelectDate(props, ref) {
90
92
  onChange = props.onChange,
91
93
  onClick = props.onClick,
92
94
  onKeyDown = props.onKeyDown,
95
+ onShow = props.onShow,
96
+ onHide = props.onHide,
93
97
  propValue = props.value,
94
98
  disabledDateRules = props.disabledDateRules,
95
99
  zIndex = props.zIndex;
@@ -214,6 +218,19 @@ function SelectDate(props, ref) {
214
218
  }, [isPopoverVisible]);
215
219
  (0, _useClickOutside.default)([popoverContentRef], handleClickOutsidePopover);
216
220
  var inputContainerRefs = (0, _compact.default)([inputContainerRef, popoverTargetRef]);
221
+ /**
222
+ * Triggers onShow/onHide callbacks representing wether the Popover is open or not.
223
+ */
224
+
225
+ (0, _useUpdateEffect.default)(function () {
226
+ if (isPopoverVisible) {
227
+ onShow && onShow();
228
+ }
229
+
230
+ if (!isPopoverVisible) {
231
+ onHide && onHide();
232
+ }
233
+ }, [isPopoverVisible, onShow, onHide]);
217
234
  return _react.default.createElement(_InputField.default, _extends({}, (0, _omit.default)(props, ['onChange']), {
218
235
  "aria-live": "assertive",
219
236
  cursor: "default",